From 30337e236efb86c05b04093e28612af6868e2ff2 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 11:40:51 +0900 Subject: [PATCH 1/8] Use go:embed for bind --- accounts/abi/bind/bind_test.go | 37 ++ accounts/abi/bind/source.go.tpl | 487 +++++++++++++++++++++++ accounts/abi/bind/source.java.tpl | 132 +++++++ accounts/abi/bind/template.go | 633 +----------------------------- 4 files changed, 667 insertions(+), 622 deletions(-) create mode 100644 accounts/abi/bind/source.go.tpl create mode 100644 accounts/abi/bind/source.java.tpl diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 2a425043e..1757b3ad4 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -646,6 +646,43 @@ var bindTests = []struct { nil, nil, }, + { + `NonExistentStruct`, + ` + contract NonExistentStruct { + function Struct() public view returns(uint256 a, uint256 b) { + return (10, 10); + } + } + `, + []string{`6080604052348015600f57600080fd5b5060888061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063d5f6622514602d575b600080fd5b6033604c565b6040805192835260208301919091528051918290030190f35b600a809156fea264697066735822beefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeefbeef64736f6c6343decafe0033`}, + []string{`[{"inputs":[],"name":"Struct","outputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"stateMutability":"pure","type":"function"}]`}, + ` + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/accounts/abi/bind/backends" + "github.com/kaiachain/kaia/blockchain" + "github.com/kaiachain/kaia/common" + `, + ` + // Create a simulator and wrap a non-deployed contract + sim := backends.NewSimulatedBackend(blockchain.GenesisAlloc{}) + defer sim.Close() + nonexistent, err := NewNonExistentStruct(common.Address{}, sim) + if err != nil { + t.Fatalf("Failed to access non-existent contract: %v", err) + } + // Ensure that contract calls fail with the appropriate error + if res, err := nonexistent.Struct(nil); err == nil { + t.Fatalf("Call succeeded on non-existent contract: %v", res) + } else if (err != bind.ErrNoCode) { + t.Fatalf("Error mismatch: have %v, want %v", err, bind.ErrNoCode) + } + `, + nil, + nil, + nil, + nil, + }, // Tests that gas estimation works for contracts with weird gas mechanics too. { `FunkyGasPattern`, diff --git a/accounts/abi/bind/source.go.tpl b/accounts/abi/bind/source.go.tpl new file mode 100644 index 000000000..46ed2e9c6 --- /dev/null +++ b/accounts/abi/bind/source.go.tpl @@ -0,0 +1,487 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package {{.Package}} + +import ( + "math/big" + "strings" + "errors" + + "github.com/kaiachain/kaia" + "github.com/kaiachain/kaia/accounts/abi" + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/common" + "github.com/kaiachain/kaia/blockchain/types" + "github.com/kaiachain/kaia/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = kaia.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +{{$structs := .Structs}} +{{range $structs}} + // {{.Name}} is an auto generated low-level Go binding around an user-defined struct. + type {{.Name}} struct { + {{range $field := .Fields}} + {{$field.Name}} {{$field.Type}}{{end}} + } +{{end}} + +{{range $contract := .Contracts}} + // {{.Type}}MetaData contains all meta data concerning the {{.Type}} contract. + var {{.Type}}MetaData = &bind.MetaData{ + ABI: "{{.InputABI}}", + {{if $contract.FuncSigs -}} + Sigs: map[string]string{ + {{range $strsig, $binsig := .FuncSigs}}"{{$binsig}}": "{{$strsig}}", + {{end}} + }, + {{end -}} + {{if .InputBin -}} + Bin: "0x{{.InputBin}}", + {{end}} + } + // {{.Type}}ABI is the input ABI used to generate the binding from. + // Deprecated: Use {{.Type}}MetaData.ABI instead. + var {{.Type}}ABI = {{.Type}}MetaData.ABI + + {{if $contract.FuncSigs}} + // Deprecated: Use {{.Type}}MetaData.Sigs instead. + // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. + var {{.Type}}FuncSigs = {{.Type}}MetaData.Sigs + {{end}} + + {{if .InputBin}} + // {{.Type}}Bin is the compiled bytecode used for deploying new contracts. + // Deprecated: Use {{.Type}}MetaData.Bin instead. + var {{.Type}}Bin = {{.Type}}MetaData.Bin + + // Deploy{{.Type}} deploys a new Kaia contract, binding an instance of {{.Type}} to it. + func Deploy{{.Type}}(auth *bind.TransactOpts, backend bind.ContractBackend {{range .Constructor.Inputs}}, {{.Name}} {{bindtype .Type $structs}}{{end}}) (common.Address, *types.Transaction, *{{.Type}}, error) { + parsed, err := {{.Type}}MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + {{range $pattern, $name := .Libraries}} + {{decapitalise $name}}Addr, _, _, _ := Deploy{{capitalise $name}}(auth, backend) + {{$contract.Type}}Bin = strings.ReplaceAll({{$contract.Type}}Bin, "__${{$pattern}}$__", {{decapitalise $name}}Addr.String()[2:]) + {{end}} + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex({{.Type}}Bin), backend {{range .Constructor.Inputs}}, {{.Name}}{{end}}) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil + } + {{end}} + + // {{.Type}} is an auto generated Go binding around an Kaia contract. + type {{.Type}} struct { + {{.Type}}Caller // Read-only binding to the contract + {{.Type}}Transactor // Write-only binding to the contract + {{.Type}}Filterer // Log filterer for contract events + } + + // {{.Type}}Caller is an auto generated read-only Go binding around an Kaia contract. + type {{.Type}}Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls + } + + // {{.Type}}Transactor is an auto generated write-only Go binding around an Kaia contract. + type {{.Type}}Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls + } + + // {{.Type}}Filterer is an auto generated log filtering Go binding around an Kaia contract events. + type {{.Type}}Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls + } + + // {{.Type}}Session is an auto generated Go binding around an Kaia contract, + // with pre-set call and transact options. + type {{.Type}}Session struct { + Contract *{{.Type}} // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session + } + + // {{.Type}}CallerSession is an auto generated read-only Go binding around an Kaia contract, + // with pre-set call options. + type {{.Type}}CallerSession struct { + Contract *{{.Type}}Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + } + + // {{.Type}}TransactorSession is an auto generated write-only Go binding around an Kaia contract, + // with pre-set transact options. + type {{.Type}}TransactorSession struct { + Contract *{{.Type}}Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session + } + + // {{.Type}}Raw is an auto generated low-level Go binding around an Kaia contract. + type {{.Type}}Raw struct { + Contract *{{.Type}} // Generic contract binding to access the raw methods on + } + + // {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around an Kaia contract. + type {{.Type}}CallerRaw struct { + Contract *{{.Type}}Caller // Generic read-only contract binding to access the raw methods on + } + + // {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around an Kaia contract. + type {{.Type}}TransactorRaw struct { + Contract *{{.Type}}Transactor // Generic write-only contract binding to access the raw methods on + } + + // New{{.Type}} creates a new instance of {{.Type}}, bound to a specific deployed contract. + func New{{.Type}}(address common.Address, backend bind.ContractBackend) (*{{.Type}}, error) { + contract, err := bind{{.Type}}(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil + } + + // New{{.Type}}Caller creates a new read-only instance of {{.Type}}, bound to a specific deployed contract. + func New{{.Type}}Caller(address common.Address, caller bind.ContractCaller) (*{{.Type}}Caller, error) { + contract, err := bind{{.Type}}(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &{{.Type}}Caller{contract: contract}, nil + } + + // New{{.Type}}Transactor creates a new write-only instance of {{.Type}}, bound to a specific deployed contract. + func New{{.Type}}Transactor(address common.Address, transactor bind.ContractTransactor) (*{{.Type}}Transactor, error) { + contract, err := bind{{.Type}}(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &{{.Type}}Transactor{contract: contract}, nil + } + + // New{{.Type}}Filterer creates a new log filterer instance of {{.Type}}, bound to a specific deployed contract. + func New{{.Type}}Filterer(address common.Address, filterer bind.ContractFilterer) (*{{.Type}}Filterer, error) { + contract, err := bind{{.Type}}(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &{{.Type}}Filterer{contract: contract}, nil + } + + // bind{{.Type}} binds a generic wrapper to an already deployed contract. + func bind{{.Type}}(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := {{.Type}}MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil + } + + // Call invokes the (constant) contract method with params as input values and + // sets the output to result. The result type might be a single field for simple + // returns, a slice of interfaces for anonymous returns and a struct for named + // returns. + func (_{{$contract.Type}} *{{$contract.Type}}Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _{{$contract.Type}}.Contract.{{$contract.Type}}Caller.contract.Call(opts, result, method, params...) + } + + // Transfer initiates a plain transaction to move funds to the contract, calling + // its default method if one is available. + func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transfer(opts) + } + + // Transact invokes the (paid) contract method with params as input values. + func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transact(opts, method, params...) + } + + // Call invokes the (constant) contract method with params as input values and + // sets the output to result. The result type might be a single field for simple + // returns, a slice of interfaces for anonymous returns and a struct for named + // returns. + func (_{{$contract.Type}} *{{$contract.Type}}CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _{{$contract.Type}}.Contract.contract.Call(opts, result, method, params...) + } + + // Transfer initiates a plain transaction to move funds to the contract, calling + // its default method if one is available. + func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.contract.Transfer(opts) + } + + // Transact invokes the (paid) contract method with params as input values. + func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.contract.Transact(opts, method, params...) + } + + {{range .Calls}} + // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Caller) {{.Normalized.Name}}(opts *bind.CallOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} },{{else}}{{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}}{{end}} error) { + var out []interface{} + err := _{{$contract.Type}}.contract.Call(opts, &out, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}}) + {{if .Structured}} + outstruct := new(struct{ {{range .Normalized.Outputs}} {{.Name}} {{bindtype .Type $structs}}; {{end}} }) + if err != nil { + return *outstruct, err + } + {{range $i, $t := .Normalized.Outputs}} + outstruct.{{.Name}} = *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}}){{end}} + + return *outstruct, err + {{else}} + if err != nil { + return {{range $i, $_ := .Normalized.Outputs}}*new({{bindtype .Type $structs}}), {{end}} err + } + {{range $i, $t := .Normalized.Outputs}} + out{{$i}} := *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}}){{end}} + + return {{range $i, $t := .Normalized.Outputs}}out{{$i}}, {{end}} err + {{end}} + } + + // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}} {{end}} error) { + return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}}) + } + + // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}CallerSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}} {{end}} error) { + return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}}) + } + {{end}} + + {{range .Transacts}} + // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Transactor) {{.Normalized.Name}}(opts *bind.TransactOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { + return _{{$contract.Type}}.contract.Transact(opts, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}}) + } + + // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}}) + } + + // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}}) + } + {{end}} + + {{if .Fallback}} + // Fallback is a paid mutator transaction binding the contract fallback function. + // + // Solidity: {{.Fallback.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Transactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _{{$contract.Type}}.contract.RawTransact(opts, calldata) + } + + // Fallback is a paid mutator transaction binding the contract fallback function. + // + // Solidity: {{.Fallback.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Session) Fallback(calldata []byte) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.Fallback(&_{{$contract.Type}}.TransactOpts, calldata) + } + + // Fallback is a paid mutator transaction binding the contract fallback function. + // + // Solidity: {{.Fallback.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.Fallback(&_{{$contract.Type}}.TransactOpts, calldata) + } + {{end}} + + {{if .Receive}} + // Receive is a paid mutator transaction binding the contract receive function. + // + // Solidity: {{.Receive.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _{{$contract.Type}}.contract.RawTransact(opts, nil) // calldata is disallowed for receive function + } + + // Receive is a paid mutator transaction binding the contract receive function. + // + // Solidity: {{.Receive.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Session) Receive() (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.Receive(&_{{$contract.Type}}.TransactOpts) + } + + // Receive is a paid mutator transaction binding the contract receive function. + // + // Solidity: {{.Receive.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) Receive() (*types.Transaction, error) { + return _{{$contract.Type}}.Contract.Receive(&_{{$contract.Type}}.TransactOpts) + } + {{end}} + + {{range .Events}} + // {{$contract.Type}}{{.Normalized.Name}}Iterator is returned from Filter{{.Normalized.Name}} and is used to iterate over the raw logs and unpacked data for {{.Normalized.Name}} events raised by the {{$contract.Type}} contract. + type {{$contract.Type}}{{.Normalized.Name}}Iterator struct { + Event *{{$contract.Type}}{{.Normalized.Name}} // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration + } + // Next advances the iterator to the subsequent event, returning whether there + // are any more events found. In case of a retrieval or parsing error, false is + // returned and Error() can be queried for the exact failure. + func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Next() bool { + // If the iterator failed, stop iterating + if (it.fail != nil) { + return false + } + // If the iterator completed, deliver directly whatever's available + if (it.done) { + select { + case log := <-it.logs: + it.Event = new({{$contract.Type}}{{.Normalized.Name}}) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new({{$contract.Type}}{{.Normalized.Name}}) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } + } + // Error returns any retrieval or parsing error occurred during filtering. + func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Error() error { + return it.fail + } + // Close terminates the iteration process, releasing any pending underlying + // resources. + func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Close() error { + it.sub.Unsubscribe() + return nil + } + + // {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} event raised by the {{$contract.Type}} contract. + type {{$contract.Type}}{{.Normalized.Name}} struct { {{range .Normalized.Inputs}} + {{capitalise .Name}} {{if .Indexed}}{{bindtopictype .Type $structs}}{{else}}{{bindtype .Type $structs}}{{end}}; {{end}} + Raw types.Log // Blockchain specific contextual infos + } + + // Filter{{.Normalized.Name}} is a free log retrieval operation binding the contract event 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Filter{{.Normalized.Name}}(opts *bind.FilterOpts{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type $structs}}{{end}}{{end}}) (*{{$contract.Type}}{{.Normalized.Name}}Iterator, error) { + {{range .Normalized.Inputs}} + {{if .Indexed}}var {{.Name}}Rule []interface{} + for _, {{.Name}}Item := range {{.Name}} { + {{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item) + }{{end}}{{end}} + + logs, sub, err := _{{$contract.Type}}.contract.FilterLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}}) + if err != nil { + return nil, err + } + return &{{$contract.Type}}{{.Normalized.Name}}Iterator{contract: _{{$contract.Type}}.contract, event: "{{.Original.Name}}", logs: logs, sub: sub}, nil + } + + // Watch{{.Normalized.Name}} is a free log subscription operation binding the contract event 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Watch{{.Normalized.Name}}(opts *bind.WatchOpts, sink chan<- *{{$contract.Type}}{{.Normalized.Name}}{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type $structs}}{{end}}{{end}}) (event.Subscription, error) { + {{range .Normalized.Inputs}} + {{if .Indexed}}var {{.Name}}Rule []interface{} + for _, {{.Name}}Item := range {{.Name}} { + {{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item) + }{{end}}{{end}} + + logs, sub, err := _{{$contract.Type}}.contract.WatchLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}}) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new({{$contract.Type}}{{.Normalized.Name}}) + if err := _{{$contract.Type}}.contract.UnpackLog(event, "{{.Original.Name}}", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil + } + + // Parse{{.Normalized.Name}} is a log parse operation binding the contract event 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Parse{{.Normalized.Name}}(log types.Log) (*{{$contract.Type}}{{.Normalized.Name}}, error) { + event := new({{$contract.Type}}{{.Normalized.Name}}) + if err := _{{$contract.Type}}.contract.UnpackLog(event, "{{.Original.Name}}", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil + } + + {{end}} +{{end}} diff --git a/accounts/abi/bind/source.java.tpl b/accounts/abi/bind/source.java.tpl new file mode 100644 index 000000000..6ae919725 --- /dev/null +++ b/accounts/abi/bind/source.java.tpl @@ -0,0 +1,132 @@ +// This file is an automatically generated Java binding. Do not modify as any +// change will likely be lost upon the next re-generation! + +package {{.Package}}; + +import org.ethereum.geth.*; +import java.util.*; + +{{$structs := .Structs}} +{{range $contract := .Contracts}} +{{if not .Library}}public {{end}}class {{.Type}} { + // ABI is the input ABI used to generate the binding from. + public final static String ABI = "{{.InputABI}}"; + {{if $contract.FuncSigs}} + // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. + public final static Map {{.Type}}FuncSigs; + static { + Hashtable temp = new Hashtable(); + {{range $strsig, $binsig := .FuncSigs}}temp.put("{{$binsig}}", "{{$strsig}}"); + {{end}} + {{.Type}}FuncSigs = Collections.unmodifiableMap(temp); + } + {{end}} + {{if .InputBin}} + // BYTECODE is the compiled bytecode used for deploying new contracts. + public final static String BYTECODE = "0x{{.InputBin}}"; + + // deploy deploys a new Ethereum contract, binding an instance of {{.Type}} to it. + public static {{.Type}} deploy(TransactOpts auth, EthereumClient client{{range .Constructor.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { + Interfaces args = Geth.newInterfaces({{(len .Constructor.Inputs)}}); + String bytecode = BYTECODE; + {{if .Libraries}} + + // "link" contract to dependent libraries by deploying them first. + {{range $pattern, $name := .Libraries}} + {{capitalise $name}} {{decapitalise $name}}Inst = {{capitalise $name}}.deploy(auth, client); + bytecode = bytecode.replace("__${{$pattern}}$__", {{decapitalise $name}}Inst.Address.getHex().substring(2)); + {{end}} + {{end}} + {{range $index, $element := .Constructor.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); + {{end}} + return new {{.Type}}(Geth.deployContract(auth, ABI, Geth.decodeFromHex(bytecode), client, args)); + } + + // Internal constructor used by contract deployment. + private {{.Type}}(BoundContract deployment) { + this.Address = deployment.getAddress(); + this.Deployer = deployment.getDeployer(); + this.Contract = deployment; + } + {{end}} + + // Ethereum address where this contract is located at. + public final Address Address; + + // Ethereum transaction in which this contract was deployed (if known!). + public final Transaction Deployer; + + // Contract instance bound to a blockchain address. + private final BoundContract Contract; + + // Creates a new instance of {{.Type}}, bound to a specific deployed contract. + public {{.Type}}(Address address, EthereumClient client) throws Exception { + this(Geth.bindContract(address, ABI, client)); + } + + {{range .Calls}} + {{if gt (len .Normalized.Outputs) 1}} + // {{capitalise .Normalized.Name}}Results is the output of a call to {{.Normalized.Name}}. + public class {{capitalise .Normalized.Name}}Results { + {{range $index, $item := .Normalized.Outputs}}public {{bindtype .Type $structs}} {{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}}; + {{end}} + } + {{end}} + + // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + public {{if gt (len .Normalized.Outputs) 1}}{{capitalise .Normalized.Name}}Results{{else if eq (len .Normalized.Outputs) 0}}void{{else}}{{range .Normalized.Outputs}}{{bindtype .Type $structs}}{{end}}{{end}} {{.Normalized.Name}}(CallOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { + Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}}); + {{range $index, $item := .Normalized.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); + {{end}} + + Interfaces results = Geth.newInterfaces({{(len .Normalized.Outputs)}}); + {{range $index, $item := .Normalized.Outputs}}Interface result{{$index}} = Geth.newInterface(); result{{$index}}.setDefault{{namedtype (bindtype .Type $structs) .Type}}(); results.set({{$index}}, result{{$index}}); + {{end}} + + if (opts == null) { + opts = Geth.newCallOpts(); + } + this.Contract.call(opts, results, "{{.Original.Name}}", args); + {{if gt (len .Normalized.Outputs) 1}} + {{capitalise .Normalized.Name}}Results result = new {{capitalise .Normalized.Name}}Results(); + {{range $index, $item := .Normalized.Outputs}}result.{{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}} = results.get({{$index}}).get{{namedtype (bindtype .Type $structs) .Type}}(); + {{end}} + return result; + {{else}}{{range .Normalized.Outputs}}return results.get(0).get{{namedtype (bindtype .Type $structs) .Type}}();{{end}} + {{end}} + } + {{end}} + + {{range .Transacts}} + // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. + // + // Solidity: {{.Original.String}} + public Transaction {{.Normalized.Name}}(TransactOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { + Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}}); + {{range $index, $item := .Normalized.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); + {{end}} + return this.Contract.transact(opts, "{{.Original.Name}}" , args); + } + {{end}} + + {{if .Fallback}} + // Fallback is a paid mutator transaction binding the contract fallback function. + // + // Solidity: {{.Fallback.Original.String}} + public Transaction Fallback(TransactOpts opts, byte[] calldata) throws Exception { + return this.Contract.rawTransact(opts, calldata); + } + {{end}} + + {{if .Receive}} + // Receive is a paid mutator transaction binding the contract receive function. + // + // Solidity: {{.Receive.Original.String}} + public Transaction Receive(TransactOpts opts) throws Exception { + return this.Contract.rawTransact(opts, null); + } + {{end}} +} +{{end}} diff --git a/accounts/abi/bind/template.go b/accounts/abi/bind/template.go index d67e607b4..8688b696c 100644 --- a/accounts/abi/bind/template.go +++ b/accounts/abi/bind/template.go @@ -22,7 +22,11 @@ package bind -import "github.com/kaiachain/kaia/accounts/abi" +import ( + _ "embed" + + "github.com/kaiachain/kaia/accounts/abi" +) // tmplData is the data structure required to fill the binding template. type tmplData struct { @@ -88,627 +92,12 @@ var tmplSource = map[Lang]string{ // tmplSourceGo is the Go source template that the generated Go contract binding // is based on. -const tmplSourceGo = ` -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package {{.Package}} - -import ( - "math/big" - "strings" - "errors" - - "github.com/kaiachain/kaia" - "github.com/kaiachain/kaia/accounts/abi" - "github.com/kaiachain/kaia/accounts/abi/bind" - "github.com/kaiachain/kaia/common" - "github.com/kaiachain/kaia/blockchain/types" - "github.com/kaiachain/kaia/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = kaia.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -{{$structs := .Structs}} -{{range $structs}} - // {{.Name}} is an auto generated low-level Go binding around an user-defined struct. - type {{.Name}} struct { - {{range $field := .Fields}} - {{$field.Name}} {{$field.Type}}{{end}} - } -{{end}} - -{{range $contract := .Contracts}} - // {{.Type}}MetaData contains all meta data concerning the {{.Type}} contract. - var {{.Type}}MetaData = &bind.MetaData{ - ABI: "{{.InputABI}}", - {{if $contract.FuncSigs -}} - Sigs: map[string]string{ - {{range $strsig, $binsig := .FuncSigs}}"{{$binsig}}": "{{$strsig}}", - {{end}} - }, - {{end -}} - {{if .InputBin -}} - Bin: "0x{{.InputBin}}", - {{end}} - } - // {{.Type}}ABI is the input ABI used to generate the binding from. - // Deprecated: Use {{.Type}}MetaData.ABI instead. - var {{.Type}}ABI = {{.Type}}MetaData.ABI - - // {{.Type}}BinRuntime is the compiled bytecode used for adding genesis block without deploying code. - const {{.Type}}BinRuntime = ` + "`" + `{{.InputBinRuntime}}` + "`" + ` - - {{if $contract.FuncSigs}} - // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. - // Deprecated: Use {{.Type}}MetaData.Sigs instead. - var {{.Type}}FuncSigs = {{.Type}}MetaData.Sigs - {{end}} - - {{if .InputBin}} - // {{.Type}}Bin is the compiled bytecode used for deploying new contracts. - // Deprecated: Use {{.Type}}MetaData.Bin instead. - var {{.Type}}Bin = {{.Type}}MetaData.Bin - - // Deploy{{.Type}} deploys a new Kaia contract, binding an instance of {{.Type}} to it. - func Deploy{{.Type}}(auth *bind.TransactOpts, backend bind.ContractBackend {{range .Constructor.Inputs}}, {{.Name}} {{bindtype .Type $structs}}{{end}}) (common.Address, *types.Transaction, *{{.Type}}, error) { - parsed, err := {{.Type}}MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - {{range $pattern, $name := .Libraries}} - {{decapitalise $name}}Addr, _, _, _ := Deploy{{capitalise $name}}(auth, backend) - {{$contract.Type}}Bin = strings.Replace({{$contract.Type}}Bin, "__${{$pattern}}$__", {{decapitalise $name}}Addr.String()[2:], -1) - {{end}} - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex({{.Type}}Bin), backend {{range .Constructor.Inputs}}, {{.Name}}{{end}}) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil - } - {{end}} - - // {{.Type}} is an auto generated Go binding around a Kaia contract. - type {{.Type}} struct { - {{.Type}}Caller // Read-only binding to the contract - {{.Type}}Transactor // Write-only binding to the contract - {{.Type}}Filterer // Log filterer for contract events - } - - // {{.Type}}Caller is an auto generated read-only Go binding around a Kaia contract. - type {{.Type}}Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls - } - - // {{.Type}}Transactor is an auto generated write-only Go binding around a Kaia contract. - type {{.Type}}Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls - } - - // {{.Type}}Filterer is an auto generated log filtering Go binding around a Kaia contract events. - type {{.Type}}Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls - } - - // {{.Type}}Session is an auto generated Go binding around a Kaia contract, - // with pre-set call and transact options. - type {{.Type}}Session struct { - Contract *{{.Type}} // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session - } - - // {{.Type}}CallerSession is an auto generated read-only Go binding around a Kaia contract, - // with pre-set call options. - type {{.Type}}CallerSession struct { - Contract *{{.Type}}Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - } - - // {{.Type}}TransactorSession is an auto generated write-only Go binding around a Kaia contract, - // with pre-set transact options. - type {{.Type}}TransactorSession struct { - Contract *{{.Type}}Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session - } - - // {{.Type}}Raw is an auto generated low-level Go binding around a Kaia contract. - type {{.Type}}Raw struct { - Contract *{{.Type}} // Generic contract binding to access the raw methods on - } - - // {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. - type {{.Type}}CallerRaw struct { - Contract *{{.Type}}Caller // Generic read-only contract binding to access the raw methods on - } - - // {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. - type {{.Type}}TransactorRaw struct { - Contract *{{.Type}}Transactor // Generic write-only contract binding to access the raw methods on - } - - // New{{.Type}} creates a new instance of {{.Type}}, bound to a specific deployed contract. - func New{{.Type}}(address common.Address, backend bind.ContractBackend) (*{{.Type}}, error) { - contract, err := bind{{.Type}}(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &{{.Type}}{ {{.Type}}Caller: {{.Type}}Caller{contract: contract}, {{.Type}}Transactor: {{.Type}}Transactor{contract: contract}, {{.Type}}Filterer: {{.Type}}Filterer{contract: contract} }, nil - } - - // New{{.Type}}Caller creates a new read-only instance of {{.Type}}, bound to a specific deployed contract. - func New{{.Type}}Caller(address common.Address, caller bind.ContractCaller) (*{{.Type}}Caller, error) { - contract, err := bind{{.Type}}(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &{{.Type}}Caller{contract: contract}, nil - } - - // New{{.Type}}Transactor creates a new write-only instance of {{.Type}}, bound to a specific deployed contract. - func New{{.Type}}Transactor(address common.Address, transactor bind.ContractTransactor) (*{{.Type}}Transactor, error) { - contract, err := bind{{.Type}}(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &{{.Type}}Transactor{contract: contract}, nil - } - - // New{{.Type}}Filterer creates a new log filterer instance of {{.Type}}, bound to a specific deployed contract. - func New{{.Type}}Filterer(address common.Address, filterer bind.ContractFilterer) (*{{.Type}}Filterer, error) { - contract, err := bind{{.Type}}(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &{{.Type}}Filterer{contract: contract}, nil - } - - // bind{{.Type}} binds a generic wrapper to an already deployed contract. - func bind{{.Type}}(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := {{.Type}}MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil - } - - // Call invokes the (constant) contract method with params as input values and - // sets the output to result. The result type might be a single field for simple - // returns, a slice of interfaces for anonymous returns and a struct for named - // returns. - func (_{{$contract.Type}} *{{$contract.Type}}Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _{{$contract.Type}}.Contract.{{$contract.Type}}Caller.contract.Call(opts, result, method, params...) - } - - // Transfer initiates a plain transaction to move funds to the contract, calling - // its default method if one is available. - func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transfer(opts) - } - - // Transact invokes the (paid) contract method with params as input values. - func (_{{$contract.Type}} *{{$contract.Type}}Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.{{$contract.Type}}Transactor.contract.Transact(opts, method, params...) - } - - // Call invokes the (constant) contract method with params as input values and - // sets the output to result. The result type might be a single field for simple - // returns, a slice of interfaces for anonymous returns and a struct for named - // returns. - func (_{{$contract.Type}} *{{$contract.Type}}CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _{{$contract.Type}}.Contract.contract.Call(opts, result, method, params...) - } - - // Transfer initiates a plain transaction to move funds to the contract, calling - // its default method if one is available. - func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.contract.Transfer(opts) - } - - // Transact invokes the (paid) contract method with params as input values. - func (_{{$contract.Type}} *{{$contract.Type}}TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.contract.Transact(opts, method, params...) - } - - {{range .Calls}} - // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Caller) {{.Normalized.Name}}(opts *bind.CallOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} },{{else}}{{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}}{{end}} error) { - var out []interface{} - err := _{{$contract.Type}}.contract.Call(opts, &out, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}}) - {{if .Structured}} - outstruct := new(struct{ {{range .Normalized.Outputs}} {{.Name}} {{bindtype .Type $structs}}; {{end}} }) - {{range $i, $t := .Normalized.Outputs}} - outstruct.{{.Name}} = *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}}){{end}} - return *outstruct, err - {{else}} - if err != nil { - return {{range $i, $_ := .Normalized.Outputs}}*new({{bindtype .Type $structs}}), {{end}} err - } - {{range $i, $t := .Normalized.Outputs}} - out{{$i}} := *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}}){{end}} - - return {{range $i, $t := .Normalized.Outputs}}out{{$i}}, {{end}} err - {{end}} - } - - // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}} {{end}} error) { - return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}}) - } - - // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}CallerSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) ({{if .Structured}}struct{ {{range .Normalized.Outputs}}{{.Name}} {{bindtype .Type $structs}};{{end}} }, {{else}} {{range .Normalized.Outputs}}{{bindtype .Type $structs}},{{end}} {{end}} error) { - return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.CallOpts {{range .Normalized.Inputs}}, {{.Name}}{{end}}) - } - {{end}} - - {{range .Transacts}} - // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Transactor) {{.Normalized.Name}}(opts *bind.TransactOpts {{range .Normalized.Inputs}}, {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { - return _{{$contract.Type}}.contract.Transact(opts, "{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}}) - } - - // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Session) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}}) - } - - // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) {{.Normalized.Name}}({{range $i, $_ := .Normalized.Inputs}}{{if ne $i 0}},{{end}} {{.Name}} {{bindtype .Type $structs}} {{end}}) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.{{.Normalized.Name}}(&_{{$contract.Type}}.TransactOpts {{range $i, $_ := .Normalized.Inputs}}, {{.Name}}{{end}}) - } - {{end}} - - {{if .Fallback}} - // Fallback is a paid mutator transaction binding the contract fallback function. - // - // Solidity: {{.Fallback.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Transactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _{{$contract.Type}}.contract.RawTransact(opts, calldata) - } - - // Fallback is a paid mutator transaction binding the contract fallback function. - // - // Solidity: {{.Fallback.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Session) Fallback(calldata []byte) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.Fallback(&_{{$contract.Type}}.TransactOpts, calldata) - } - - // Fallback is a paid mutator transaction binding the contract fallback function. - // - // Solidity: {{.Fallback.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.Fallback(&_{{$contract.Type}}.TransactOpts, calldata) - } - {{end}} - - {{if .Receive}} - // Receive is a paid mutator transaction binding the contract receive function. - // - // Solidity: {{.Receive.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _{{$contract.Type}}.contract.RawTransact(opts, nil) // calldata is disallowed for receive function - } - - // Receive is a paid mutator transaction binding the contract receive function. - // - // Solidity: {{.Receive.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Session) Receive() (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.Receive(&_{{$contract.Type}}.TransactOpts) - } - - // Receive is a paid mutator transaction binding the contract receive function. - // - // Solidity: {{.Receive.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}TransactorSession) Receive() (*types.Transaction, error) { - return _{{$contract.Type}}.Contract.Receive(&_{{$contract.Type}}.TransactOpts) - } - {{end}} - - {{range .Events}} - // {{$contract.Type}}{{.Normalized.Name}}Iterator is returned from Filter{{.Normalized.Name}} and is used to iterate over the raw logs and unpacked data for {{.Normalized.Name}} events raised by the {{$contract.Type}} contract. - type {{$contract.Type}}{{.Normalized.Name}}Iterator struct { - Event *{{$contract.Type}}{{.Normalized.Name}} // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration - } - // Next advances the iterator to the subsequent event, returning whether there - // are any more events found. In case of a retrieval or parsing error, false is - // returned and Error() can be queried for the exact failure. - func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Next() bool { - // If the iterator failed, stop iterating - if (it.fail != nil) { - return false - } - // If the iterator completed, deliver directly whatever's available - if (it.done) { - select { - case log := <-it.logs: - it.Event = new({{$contract.Type}}{{.Normalized.Name}}) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new({{$contract.Type}}{{.Normalized.Name}}) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } - } - // Error returns any retrieval or parsing error occurred during filtering. - func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Error() error { - return it.fail - } - // Close terminates the iteration process, releasing any pending underlying - // resources. - func (it *{{$contract.Type}}{{.Normalized.Name}}Iterator) Close() error { - it.sub.Unsubscribe() - return nil - } - - // {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} event raised by the {{$contract.Type}} contract. - type {{$contract.Type}}{{.Normalized.Name}} struct { {{range .Normalized.Inputs}} - {{capitalise .Name}} {{if .Indexed}}{{bindtopictype .Type $structs}}{{else}}{{bindtype .Type $structs}}{{end}}; {{end}} - Raw types.Log // Blockchain specific contextual infos - } - - // Filter{{.Normalized.Name}} is a free log retrieval operation binding the contract event 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Filter{{.Normalized.Name}}(opts *bind.FilterOpts{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type $structs}}{{end}}{{end}}) (*{{$contract.Type}}{{.Normalized.Name}}Iterator, error) { - {{range .Normalized.Inputs}} - {{if .Indexed}}var {{.Name}}Rule []interface{} - for _, {{.Name}}Item := range {{.Name}} { - {{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item) - }{{end}}{{end}} - - logs, sub, err := _{{$contract.Type}}.contract.FilterLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}}) - if err != nil { - return nil, err - } - return &{{$contract.Type}}{{.Normalized.Name}}Iterator{contract: _{{$contract.Type}}.contract, event: "{{.Original.Name}}", logs: logs, sub: sub}, nil - } - - // Watch{{.Normalized.Name}} is a free log subscription operation binding the contract event 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Watch{{.Normalized.Name}}(opts *bind.WatchOpts, sink chan<- *{{$contract.Type}}{{.Normalized.Name}}{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}} []{{bindtype .Type $structs}}{{end}}{{end}}) (event.Subscription, error) { - {{range .Normalized.Inputs}} - {{if .Indexed}}var {{.Name}}Rule []interface{} - for _, {{.Name}}Item := range {{.Name}} { - {{.Name}}Rule = append({{.Name}}Rule, {{.Name}}Item) - }{{end}}{{end}} - - logs, sub, err := _{{$contract.Type}}.contract.WatchLogs(opts, "{{.Original.Name}}"{{range .Normalized.Inputs}}{{if .Indexed}}, {{.Name}}Rule{{end}}{{end}}) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new({{$contract.Type}}{{.Normalized.Name}}) - if err := _{{$contract.Type}}.contract.UnpackLog(event, "{{.Original.Name}}", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil - } - - // Parse{{.Normalized.Name}} is a log parse operation binding the contract event 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - func (_{{$contract.Type}} *{{$contract.Type}}Filterer) Parse{{.Normalized.Name}}(log types.Log) (*{{$contract.Type}}{{.Normalized.Name}}, error) { - event := new({{$contract.Type}}{{.Normalized.Name}}) - if err := _{{$contract.Type}}.contract.UnpackLog(event, "{{.Original.Name}}", log); err != nil { - return nil, err - } - return event, nil - } - - {{end}} -{{end}} -` +// +//go:embed source.go.tpl +var tmplSourceGo string // tmplSourceJava is the Java source template that the generated Java contract binding // is based on. -const tmplSourceJava = ` -// This file is an automatically generated Java binding. Do not modify as any -// change will likely be lost upon the next re-generation! - -package {{.Package}}; - -import org.ethereum.geth.*; -import java.util.*; - -{{$structs := .Structs}} -{{range $contract := .Contracts}} -{{if not .Library}}public {{end}}class {{.Type}} { - // ABI is the input ABI used to generate the binding from. - public final static String ABI = "{{.InputABI}}"; - {{if $contract.FuncSigs}} - // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. - public final static Map {{.Type}}FuncSigs; - static { - Hashtable temp = new Hashtable(); - {{range $strsig, $binsig := .FuncSigs}}temp.put("{{$binsig}}", "{{$strsig}}"); - {{end}} - {{.Type}}FuncSigs = Collections.unmodifiableMap(temp); - } - {{end}} - {{if .InputBin}} - // BYTECODE is the compiled bytecode used for deploying new contracts. - public final static String BYTECODE = "0x{{.InputBin}}"; - - // deploy deploys a new Ethereum contract, binding an instance of {{.Type}} to it. - public static {{.Type}} deploy(TransactOpts auth, EthereumClient client{{range .Constructor.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { - Interfaces args = Geth.newInterfaces({{(len .Constructor.Inputs)}}); - String bytecode = BYTECODE; - {{if .Libraries}} - - // "link" contract to dependent libraries by deploying them first. - {{range $pattern, $name := .Libraries}} - {{capitalise $name}} {{decapitalise $name}}Inst = {{capitalise $name}}.deploy(auth, client); - bytecode = bytecode.replace("__${{$pattern}}$__", {{decapitalise $name}}Inst.Address.getHex().substring(2)); - {{end}} - {{end}} - {{range $index, $element := .Constructor.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); - {{end}} - return new {{.Type}}(Geth.deployContract(auth, ABI, Geth.decodeFromHex(bytecode), client, args)); - } - - // Internal constructor used by contract deployment. - private {{.Type}}(BoundContract deployment) { - this.Address = deployment.getAddress(); - this.Deployer = deployment.getDeployer(); - this.Contract = deployment; - } - {{end}} - - // Ethereum address where this contract is located at. - public final Address Address; - - // Ethereum transaction in which this contract was deployed (if known!). - public final Transaction Deployer; - - // Contract instance bound to a blockchain address. - private final BoundContract Contract; - - // Creates a new instance of {{.Type}}, bound to a specific deployed contract. - public {{.Type}}(Address address, EthereumClient client) throws Exception { - this(Geth.bindContract(address, ABI, client)); - } - - {{range .Calls}} - {{if gt (len .Normalized.Outputs) 1}} - // {{capitalise .Normalized.Name}}Results is the output of a call to {{.Normalized.Name}}. - public class {{capitalise .Normalized.Name}}Results { - {{range $index, $item := .Normalized.Outputs}}public {{bindtype .Type $structs}} {{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}}; - {{end}} - } - {{end}} - - // {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - public {{if gt (len .Normalized.Outputs) 1}}{{capitalise .Normalized.Name}}Results{{else if eq (len .Normalized.Outputs) 0}}void{{else}}{{range .Normalized.Outputs}}{{bindtype .Type $structs}}{{end}}{{end}} {{.Normalized.Name}}(CallOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { - Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}}); - {{range $index, $item := .Normalized.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); - {{end}} - - Interfaces results = Geth.newInterfaces({{(len .Normalized.Outputs)}}); - {{range $index, $item := .Normalized.Outputs}}Interface result{{$index}} = Geth.newInterface(); result{{$index}}.setDefault{{namedtype (bindtype .Type $structs) .Type}}(); results.set({{$index}}, result{{$index}}); - {{end}} - - if (opts == null) { - opts = Geth.newCallOpts(); - } - this.Contract.call(opts, results, "{{.Original.Name}}", args); - {{if gt (len .Normalized.Outputs) 1}} - {{capitalise .Normalized.Name}}Results result = new {{capitalise .Normalized.Name}}Results(); - {{range $index, $item := .Normalized.Outputs}}result.{{if ne .Name ""}}{{.Name}}{{else}}Return{{$index}}{{end}} = results.get({{$index}}).get{{namedtype (bindtype .Type $structs) .Type}}(); - {{end}} - return result; - {{else}}{{range .Normalized.Outputs}}return results.get(0).get{{namedtype (bindtype .Type $structs) .Type}}();{{end}} - {{end}} - } - {{end}} - - {{range .Transacts}} - // {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. - // - // Solidity: {{.Original.String}} - public Transaction {{.Normalized.Name}}(TransactOpts opts{{range .Normalized.Inputs}}, {{bindtype .Type $structs}} {{.Name}}{{end}}) throws Exception { - Interfaces args = Geth.newInterfaces({{(len .Normalized.Inputs)}}); - {{range $index, $item := .Normalized.Inputs}}Interface arg{{$index}} = Geth.newInterface();arg{{$index}}.set{{namedtype (bindtype .Type $structs) .Type}}({{.Name}});args.set({{$index}},arg{{$index}}); - {{end}} - return this.Contract.transact(opts, "{{.Original.Name}}" , args); - } - {{end}} - - {{if .Fallback}} - // Fallback is a paid mutator transaction binding the contract fallback function. - // - // Solidity: {{.Fallback.Original.String}} - public Transaction Fallback(TransactOpts opts, byte[] calldata) throws Exception { - return this.Contract.rawTransact(opts, calldata); - } - {{end}} - - {{if .Receive}} - // Receive is a paid mutator transaction binding the contract receive function. - // - // Solidity: {{.Receive.Original.String}} - public Transaction Receive(TransactOpts opts) throws Exception { - return this.Contract.rawTransact(opts, null); - } - {{end}} -} -{{end}} -` +// +//go:embed source.java.tpl +var tmplSourceJava string From 9417607860caa2036d8f5eeae436e00bf4640810 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 12:03:25 +0900 Subject: [PATCH 2/8] Handle golang keywords --- accounts/abi/bind/bind.go | 41 ++++++++++++++++++++++++++++++++-- accounts/abi/bind/bind_test.go | 35 +++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/accounts/abi/bind/bind.go b/accounts/abi/bind/bind.go index 7f7e4542c..ea4926255 100644 --- a/accounts/abi/bind/bind.go +++ b/accounts/abi/bind/bind.go @@ -44,6 +44,43 @@ const ( LangObjC ) +func isKeyWord(arg string) bool { + switch arg { + case "break": + case "case": + case "chan": + case "const": + case "continue": + case "default": + case "defer": + case "else": + case "fallthrough": + case "for": + case "func": + case "go": + case "goto": + case "if": + case "import": + case "interface": + case "iota": + case "map": + case "make": + case "new": + case "package": + case "range": + case "return": + case "select": + case "struct": + case "switch": + case "type": + case "var": + default: + return false + } + + return true +} + // Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant // to be used as is in client code, but rather as an intermediate struct which // enforces compile time type safety and naming convention opposed to having to @@ -106,7 +143,7 @@ func Bind(types []string, abis []string, bytecodes []string, runtimebytecodes [] normalized.Inputs = make([]abi.Argument, len(original.Inputs)) copy(normalized.Inputs, original.Inputs) for j, input := range normalized.Inputs { - if input.Name == "" { + if input.Name == "" || isKeyWord(input.Name) { normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j) } if hasStruct(input.Type) { @@ -149,7 +186,7 @@ func Bind(types []string, abis []string, bytecodes []string, runtimebytecodes [] normalized.Inputs = make([]abi.Argument, len(original.Inputs)) copy(normalized.Inputs, original.Inputs) for j, input := range normalized.Inputs { - if input.Name == "" { + if input.Name == "" || isKeyWord(input.Name) { normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j) } if hasStruct(input.Type) { diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 1757b3ad4..34f7b0fe6 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1854,6 +1854,41 @@ var bindTests = []struct { nil, nil, }, + { + name: "RangeKeyword", + contract: ` + // SPDX-License-Identifier: GPL-3.0 + pragma solidity >=0.4.22 <0.9.0; + contract keywordcontract { + function functionWithKeywordParameter(range uint256) public pure {} + } + `, + bytecode: []string{"0x608060405234801561001057600080fd5b5060dc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063527a119f14602d575b600080fd5b60436004803603810190603f9190605b565b6045565b005b50565b6000813590506055816092565b92915050565b600060208284031215606e57606d608d565b5b6000607a848285016048565b91505092915050565b6000819050919050565b600080fd5b6099816083565b811460a357600080fd5b5056fea2646970667358221220d4f4525e2615516394055d369fb17df41c359e5e962734f27fd683ea81fd9db164736f6c63430008070033"}, + abi: []string{`[{"inputs":[{"internalType":"uint256","name":"range","type":"uint256"}],"name":"functionWithKeywordParameter","outputs":[],"stateMutability":"pure","type":"function"}]`}, + imports: ` + "math/big" + + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/accounts/abi/bind/backends" + "github.com/kaiachain/kaia/blockchain" + "github.com/kaiachain/kaia/crypto" + `, + tester: ` + var ( + key, _ = crypto.GenerateKey() + auth = bind.NewKeyedTransactor(key) + sim = backends.NewSimulatedBackend(blockchain.GenesisAlloc{auth.From: {Balance: big.NewInt(1000000000000000000)}}) + ) + _, tx, _, err := DeployRangeKeyword(auth, sim) + if err != nil { + t.Fatalf("error deploying contract: %v", err) + } + sim.Commit() + if _, err = bind.WaitDeployed(nil, sim, tx); err != nil { + t.Errorf("error deploying the contract: %v", err) + } + `, + }, } // Tests that packages generated by the binder can be successfully compiled and From 27a6e3237a787b1f58de471145929dfbca226697 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 13:56:00 +0900 Subject: [PATCH 3/8] Fix typos --- accounts/abi/bind/bind.go | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/accounts/abi/bind/bind.go b/accounts/abi/bind/bind.go index ea4926255..b40f7a209 100644 --- a/accounts/abi/bind/bind.go +++ b/accounts/abi/bind/bind.go @@ -83,14 +83,14 @@ func isKeyWord(arg string) bool { // Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant // to be used as is in client code, but rather as an intermediate struct which -// enforces compile time type safety and naming convention opposed to having to +// enforces compile time type safety and naming convention as opposed to having to // manually maintain hard coded strings that break on runtime. func Bind(types []string, abis []string, bytecodes []string, runtimebytecodes []string, fsigs []map[string]string, pkg string, lang Lang, libs map[string]string, aliases map[string]string) (string, error) { var ( // contracts is the map of each individual contract requested binding contracts = make(map[string]*tmplContract) - // structs is the map of all reclared structs shared by passed contracts. + // structs is the map of all redeclared structs shared by passed contracts. structs = make(map[string]*tmplStruct) // isLib is the map used to flag each encountered library as such @@ -118,14 +118,21 @@ func Bind(types []string, abis []string, bytecodes []string, runtimebytecodes [] fallback *tmplMethod receive *tmplMethod - // identifiers are used to detect duplicated identifier of function - // and event. For all calls, transacts and events, abigen will generate + // identifiers are used to detect duplicated identifiers of functions + // and events. For all calls, transacts and events, abigen will generate // corresponding bindings. However we have to ensure there is no - // identifier coliision in the bindings of these categories. + // identifier collisions in the bindings of these categories. callIdentifiers = make(map[string]bool) transactIdentifiers = make(map[string]bool) eventIdentifiers = make(map[string]bool) ) + + for _, input := range evmABI.Constructor.Inputs { + if hasStruct(input.Type) { + bindStructType[lang](input.Type, structs) + } + } + for _, original := range evmABI.Methods { // Normalize the method for capital cases and non-anonymous inputs/outputs normalized := original @@ -285,7 +292,7 @@ var bindType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct) stri LangJava: bindTypeJava, } -// bindBasicTypeGo converts basic solidity types(except array, slice and tuple) to Go one. +// bindBasicTypeGo converts basic solidity types(except array, slice and tuple) to Go ones. func bindBasicTypeGo(kind abi.Type) string { switch kind.T { case abi.AddressTy: @@ -408,7 +415,7 @@ var bindTopicType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct) } // bindTopicTypeGo converts a Solidity topic type to a Go one. It is almost the same -// funcionality as for simple types, but dynamic types get converted to hashes. +// functionality as for simple types, but dynamic types get converted to hashes. func bindTopicTypeGo(kind abi.Type, structs map[string]*tmplStruct) string { bound := bindTypeGo(kind, structs) @@ -416,7 +423,7 @@ func bindTopicTypeGo(kind abi.Type, structs map[string]*tmplStruct) string { // parameters that are not value types i.e. arrays and structs are not // stored directly but instead a keccak256-hash of an encoding is stored. // - // We only convert stringS and bytes to hash, still need to deal with + // We only convert strings and bytes to hash, still need to deal with // array(both fixed-size and dynamic-size) and struct. if bound == "string" || bound == "[]byte" { bound = "common.Hash" @@ -454,7 +461,7 @@ var bindStructType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct func bindStructTypeGo(kind abi.Type, structs map[string]*tmplStruct) string { switch kind.T { case abi.TupleTy: - // We compose raw struct name and canonical parameter expression + // We compose a raw struct name and a canonical parameter expression // together here. The reason is before solidity v0.5.11, kind.TupleRawName // is empty, so we use canonical parameter expression to distinguish // different struct definition. From the consideration of backward @@ -525,7 +532,7 @@ func bindStructTypeJava(kind abi.Type, structs map[string]*tmplStruct) string { } // namedType is a set of functions that transform language specific types to -// named versions that my be used inside method names. +// named versions that may be used inside method names. var namedType = map[Lang]func(string, abi.Type) string{ LangGo: func(string, abi.Type) string { panic("this shouldn't be needed") }, LangJava: namedTypeJava, @@ -567,7 +574,7 @@ func alias(aliases map[string]string, n string) string { } // methodNormalizer is a name transformer that modifies Solidity method names to -// conform to target language naming concentions. +// conform to target language naming conventions. var methodNormalizer = map[Lang]func(string) string{ LangGo: abi.ToCamelCase, LangJava: decapitalise, From 31d1074c0f35de5a98d1e5086a87c390dc28a522 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 16:30:47 +0900 Subject: [PATCH 4/8] Add missing RuntimeBin --- accounts/abi/bind/source.go.tpl | 35 ++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/accounts/abi/bind/source.go.tpl b/accounts/abi/bind/source.go.tpl index 46ed2e9c6..3da6372c2 100644 --- a/accounts/abi/bind/source.go.tpl +++ b/accounts/abi/bind/source.go.tpl @@ -8,12 +8,12 @@ import ( "strings" "errors" - "github.com/kaiachain/kaia" - "github.com/kaiachain/kaia/accounts/abi" - "github.com/kaiachain/kaia/accounts/abi/bind" - "github.com/kaiachain/kaia/common" - "github.com/kaiachain/kaia/blockchain/types" - "github.com/kaiachain/kaia/event" + "github.com/kaiachain/kaia" + "github.com/kaiachain/kaia/accounts/abi" + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/common" + "github.com/kaiachain/kaia/blockchain/types" + "github.com/kaiachain/kaia/event" ) // Reference imports to suppress errors if they are not otherwise used. @@ -56,6 +56,9 @@ var ( // Deprecated: Use {{.Type}}MetaData.ABI instead. var {{.Type}}ABI = {{.Type}}MetaData.ABI + // {{.Type}}BinRuntime is the compiled bytecode used for adding genesis block without deploying code. + const {{.Type}}BinRuntime = `{{.InputBinRuntime}}` + {{if $contract.FuncSigs}} // Deprecated: Use {{.Type}}MetaData.Sigs instead. // {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. @@ -88,29 +91,29 @@ var ( } {{end}} - // {{.Type}} is an auto generated Go binding around an Kaia contract. + // {{.Type}} is an auto generated Go binding around a Kaia contract. type {{.Type}} struct { {{.Type}}Caller // Read-only binding to the contract {{.Type}}Transactor // Write-only binding to the contract {{.Type}}Filterer // Log filterer for contract events } - // {{.Type}}Caller is an auto generated read-only Go binding around an Kaia contract. + // {{.Type}}Caller is an auto generated read-only Go binding around a Kaia contract. type {{.Type}}Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } - // {{.Type}}Transactor is an auto generated write-only Go binding around an Kaia contract. + // {{.Type}}Transactor is an auto generated write-only Go binding around a Kaia contract. type {{.Type}}Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } - // {{.Type}}Filterer is an auto generated log filtering Go binding around an Kaia contract events. + // {{.Type}}Filterer is an auto generated log filtering Go binding around a Kaia contract events. type {{.Type}}Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } - // {{.Type}}Session is an auto generated Go binding around an Kaia contract, + // {{.Type}}Session is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. type {{.Type}}Session struct { Contract *{{.Type}} // Generic contract binding to set the session for @@ -118,31 +121,31 @@ var ( TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } - // {{.Type}}CallerSession is an auto generated read-only Go binding around an Kaia contract, + // {{.Type}}CallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. type {{.Type}}CallerSession struct { Contract *{{.Type}}Caller // Generic contract caller binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session } - // {{.Type}}TransactorSession is an auto generated write-only Go binding around an Kaia contract, + // {{.Type}}TransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. type {{.Type}}TransactorSession struct { Contract *{{.Type}}Transactor // Generic contract transactor binding to set the session for TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } - // {{.Type}}Raw is an auto generated low-level Go binding around an Kaia contract. + // {{.Type}}Raw is an auto generated low-level Go binding around a Kaia contract. type {{.Type}}Raw struct { Contract *{{.Type}} // Generic contract binding to access the raw methods on } - // {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around an Kaia contract. + // {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. type {{.Type}}CallerRaw struct { Contract *{{.Type}}Caller // Generic read-only contract binding to access the raw methods on } - // {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around an Kaia contract. + // {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. type {{.Type}}TransactorRaw struct { Contract *{{.Type}}Transactor // Generic write-only contract binding to access the raw methods on } From 7c60b7e40fec0287ea92d3acfc42bc20c9042c4f Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 16:42:28 +0900 Subject: [PATCH 5/8] Run go generate --- .../contracts/service_chain/bridge/Bridge.go | 20136 +++++++----- .../system_contracts/consensus/Kip163.go | 1525 +- .../system_contracts/consensus/consensus.go | 251 +- .../system_contracts/gov/GovParam.go | 58 +- .../kip113/SimpleBlsRegistry.go | 242 +- .../system_contracts/kip149/Registry.go | 66 +- .../contracts/system_contracts/misc/credit.go | 48 +- .../multicall/MultiCallContract.go | 68 +- .../contracts/system_contracts/proxy/proxy.go | 35 +- .../system_contracts/rebalance/all.go | 249 +- .../contracts/testing/extbridge/ext_bridge.go | 26204 +++++++++------- contracts/contracts/testing/reward/all.go | 147 +- .../contracts/testing/sc_erc20/sc_token.go | 177 +- .../contracts/testing/sc_erc721/sc_nft.go | 392 +- .../testing/sc_erc721_no_uri/sc_nft_no_uri.go | 225 +- .../contracts/testing/system_contracts/all.go | 962 +- 16 files changed, 31059 insertions(+), 19726 deletions(-) diff --git a/contracts/contracts/service_chain/bridge/Bridge.go b/contracts/contracts/service_chain/bridge/Bridge.go index 6c8b795c0..e6e1bde91 100644 --- a/contracts/contracts/service_chain/bridge/Bridge.go +++ b/contracts/contracts/service_chain/bridge/Bridge.go @@ -207,7 +207,7 @@ func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method s // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"CounterpartBridgeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", Sigs: map[string]string{ "3a3099d1": "MAX_OPERATOR()", "ffa1ad74": "VERSION()", @@ -257,13 +257,14 @@ var BridgeMetaData = &bind.MetaData{ "efdcd974": "setFeeReceiver(address)", "1a2ae53e": "setKLAYFee(uint256,uint64)", "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", "c877cf37": "start(bool)", "f2fde38b": "transferOwnership(address)", "1ebdca38": "unlockKLAY()", "9ef2017b": "unlockToken(address)", "54edad72": "upperHandleNonce()", }, - Bin: "0x60806040819052600180546001600160a01b03191690556000600255600f8054600160401b61ffff021916690100000000000000000017905560108054600160401b600160801b031916680100000000000000001790556020806200489f833981018060405260208110156200007457600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff82161015620001045760ff81166000908152600e60205260409020805460ff1916600190811790915501620000d0565b50336000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055600f80549115156801000000000000000002600160401b60ff02199092169190911790555061470980620001966000396000f3fe60806040526004361061031a5760003560e01c80638a75eee2116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e5314611071578063f171996614611147578063f2fde38b1461115c578063ffa1ad741461118f5761031a565b8063ea21eade14610ff4578063ee2aec6514611009578063efdcd9741461103e5761031a565b8063cb38f407116100d1578063cb38f40714610ebf578063cf0da29014610ee9578063d8cf98ca14610fb9578063dd9222d614610fec5761031a565b8063bab2af1d14610e4b578063c263b5d614610e7e578063c877cf3714610e935761031a565b80639ef2017b11610164578063ac6fff0b1161013e578063ac6fff0b14610c3e578063afb6022314610c53578063b2c0103014610dd1578063b3f0067414610e365761031a565b80639ef2017b14610b075780639f07132914610b3a578063a066a7ed14610b4f5761031a565b80638a75eee214610a385780638c0bd91614610a625780638da5cb5b14610a955780638f32d59b14610aaa5780639832c1d714610abf578063989ba0d314610af25761031a565b8063407e6bae1161026a5780635526f76b11610223578063715018a6116101fd578063715018a61461095857806375ebdc091461096d5780637c1a0302146109f057806387b04c5514610a055761031a565b80635526f76b146108cd5780635eb7413a146109105780636e176ec2146109435761031a565b8063407e6bae146106f75780634739f7e5146107f0578063488af8711461082b57806348a18a6a146108705780634b40b826146108a357806354edad72146108b85761031a565b806322604742116102d75780633682a450116102b15780633682a450146106545780633a3099d1146106875780633a3485331461069c5780633e4fe949146106cd5761031a565b8063226047421461046557806326c23b54146105365780632f88396c1461060c5761031a565b806310693fcd1461033957806313a6738a1461036c57806313e7c9d8146103bb5780631a2ae53e146104025780631ebdca381461043b5780632014e5d114610450575b6002546040805160008152602081019091526103379133916111a4565b005b34801561034557600080fd5b506103376004803603602081101561035c57600080fd5b50356001600160a01b03166113e4565b34801561037857600080fd5b5061039f6004803603602081101561038f57600080fd5b50356001600160401b0316611549565b604080516001600160401b039092168252519081900360200190f35b3480156103c757600080fd5b506103ee600480360360208110156103de57600080fd5b50356001600160a01b0316611564565b604080519115158252519081900360200190f35b34801561040e57600080fd5b506103376004803603604081101561042557600080fd5b50803590602001356001600160401b0316611579565b34801561044757600080fd5b506103376115ed565b34801561045c57600080fd5b506103ee6116b9565b34801561047157600080fd5b506103376004803603608081101561048857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111600160201b831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116c9945050505050565b34801561054257600080fd5b50610337600480360360a081101561055957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561059857600080fd5b8201836020820111156105aa57600080fd5b803590602001918460018302840111600160201b831117156105cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061174b945050505050565b34801561061857600080fd5b506103376004803603606081101561062f57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661183c565b34801561066057600080fd5b506103376004803603602081101561067757600080fd5b50356001600160a01b03166118b2565b34801561069357600080fd5b5061039f611a2d565b3480156106a857600080fd5b506106b1611a32565b604080516001600160a01b039092168252519081900360200190f35b3480156106d957600080fd5b506106b1600480360360208110156106f057600080fd5b5035611a41565b34801561070357600080fd5b50610337600480360361010081101561071b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460018302840111600160201b831117156107af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a68945050505050565b3480156107fc57600080fd5b506103376004803603604081101561081357600080fd5b506001600160a01b0381358116916020013516611e0b565b34801561083757600080fd5b5061085e6004803603602081101561084e57600080fd5b50356001600160a01b0316611f68565b60408051918252519081900360200190f35b34801561087c57600080fd5b5061085e6004803603602081101561089357600080fd5b50356001600160a01b0316611f7a565b3480156108af57600080fd5b5061039f611f8c565b3480156108c457600080fd5b5061039f611fa2565b3480156108d957600080fd5b506108fa600480360360208110156108f057600080fd5b503560ff16611fb1565b6040805160ff9092168252519081900360200190f35b34801561091c57600080fd5b506103ee6004803603602081101561093357600080fd5b50356001600160a01b0316611fc6565b34801561094f57600080fd5b506103ee611fdb565b34801561096457600080fd5b50610337611feb565b6103376004803603606081101561098357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460018302840111600160201b831117156109e557600080fd5b50909250905061207f565b3480156109fc57600080fd5b5061039f6120d4565b348015610a1157600080fd5b5061033760048036036020811015610a2857600080fd5b50356001600160a01b03166120ea565b348015610a4457600080fd5b506103ee60048036036020811015610a5b57600080fd5b5035612156565b348015610a6e57600080fd5b506106b160048036036020811015610a8557600080fd5b50356001600160a01b031661216b565b348015610aa157600080fd5b506106b1612186565b348015610ab657600080fd5b506103ee612196565b348015610acb57600080fd5b506103ee60048036036020811015610ae257600080fd5b50356001600160401b03166121a7565b348015610afe57600080fd5b5061039f6121bc565b348015610b1357600080fd5b5061033760048036036020811015610b2a57600080fd5b50356001600160a01b03166121d2565b348015610b4657600080fd5b50610337612346565b348015610b5b57600080fd5b50610337600480360360e0811015610b7257600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610bca57600080fd5b820183602082011115610bdc57600080fd5b803590602001918460018302840111600160201b83111715610bfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061240f945050505050565b348015610c4a57600080fd5b5061039f612627565b348015610c5f57600080fd5b506103376004803603610120811015610c7757600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cd857600080fd5b820183602082011115610cea57600080fd5b803590602001918460018302840111600160201b83111715610d0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b803590602001918460018302840111600160201b83111715610d9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612636945050505050565b348015610ddd57600080fd5b50610de66129df565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e22578181015183820152602001610e0a565b505050509050019250505060405180910390f35b348015610e4257600080fd5b506106b1612a41565b348015610e5757600080fd5b5061033760048036036020811015610e6e57600080fd5b50356001600160a01b0316612a50565b348015610e8a57600080fd5b5061085e612c3f565b348015610e9f57600080fd5b5061033760048036036020811015610eb657600080fd5b50351515612c45565b348015610ecb57600080fd5b506106b160048036036020811015610ee257600080fd5b5035612cb3565b348015610ef557600080fd5b5061033760048036036080811015610f0c57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f4557600080fd5b820183602082011115610f5757600080fd5b803590602001918460018302840111600160201b83111715610f7857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cc0945050505050565b348015610fc557600080fd5b5061033760048036036020811015610fdc57600080fd5b50356001600160a01b0316612ccd565b610337612e1b565b34801561100057600080fd5b50610de6612e1d565b34801561101557600080fd5b506103376004803603604081101561102c57600080fd5b5060ff81358116916020013516612e7d565b34801561104a57600080fd5b506103376004803603602081101561106157600080fd5b50356001600160a01b0316612fb9565b34801561107d57600080fd5b50610337600480360360a081101561109457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156110d357600080fd5b8201836020820111156110e557600080fd5b803590602001918460018302840111600160201b8311171561110657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061300f945050505050565b34801561115357600080fd5b506103ee61301d565b34801561116857600080fd5b506103376004803603602081101561117f57600080fd5b50356001600160a01b0316613026565b34801561119b57600080fd5b5061039f613079565b60125460ff16156111eb5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b600f54600160481b900460ff166112405760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8134116112975760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112a28361307e565b905060006001600160a01b038516337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09836112e3348963ffffffff6131cd16565b600f600a9054906101000a90046001600160401b031687896040518086600281111561130b57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611370578181015183820152602001611358565b50505050905090810190601f16801561139d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b03199091161790555050565b6113ec612196565b61142e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166114965760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156114fb5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff166115ce5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b6115d78161322d565b6115e0576115e9565b6115e9826132ff565b5050565b6115f5612196565b6116375760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff1615156001146116845760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506117458433858585613332565b50505050565b6001600160a01b0385166323b872dd333061176c878763ffffffff61385616565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b505050506040513d60208110156117e757600080fd5b505161182757604051600160e51b62461bcd0281526004018080602001828103825260298152602001806146716029913960400191505060405180910390fd5b6118358533868686866138ba565b5050505050565b336000908152600c602052604090205460ff166118915760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61189a8161322d565b6118a3576118ad565b6118ad8383613bfd565b505050565b6118ba612196565b6118fc5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600d54600c116119565760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119c75760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b600c81565b6005546001600160a01b031681565b60088181548110611a4e57fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611abd5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b611ac683613c44565b611acf83613cb1565b611ad857611e01565b611ae188613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b1983613d8f565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611b8a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c01578181015183820152602001611be9565b50505050905090810190601f168015611c2e5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d3757846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051611d325760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611e01565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b5051611e0157604051600160e51b62461bcd0281526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b5050505050505050565b611e13612196565b611e555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611ec75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611ff3612196565b6120355760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612091348563ffffffff6131cd16565b9050611835858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111a492505050565b600f54600160501b90046001600160401b031681565b6120f2612196565b6121345760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121da612196565b61221c5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122845760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff1615156001146122fb5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61234e612196565b6123905760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff16156123d75760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124645760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61246d83613c44565b61247683613cb1565b61247f5761261e565b61248887613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff19169184169190911790556124c083613d8f565b60006001600160a01b0316856001600160a01b0316876001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758a60008989600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561253257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125a9578181015183820152602001612591565b50505050905090810190601f1680156125d65780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015611e01573d6000803e3d6000fd5b50505050505050565b600f546001600160401b031681565b336000908152600c602052604090205460ff1661268b5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61269484613c44565b61269d84613cb1565b6126a6576129d4565b6126af89613d74565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556126e784613d8f565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561275857fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156127cf5781810151838201526020016127b7565b50505050905090810190601f1680156127fc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff161561296057856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289c578181015183820152602001612884565b50505050905090810190601f1680156128c95780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156128ea57600080fd5b505af11580156128fe573d6000803e3d6000fd5b505050506040513d602081101561291457600080fd5b505161295b5760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b6129d4565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156129bb57600080fd5b505af11580156129cf573d6000803e3d6000fd5b505050505b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015612a3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a19575b5050505050905090565b6001546001600160a01b031681565b612a58612196565b612a9a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612b025760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612bf257600880546000198101908110612b6657fe5b600091825260209091200154600880546001600160a01b039092169183908110612b8c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612bcc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612c059060001983016145a2565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612c4d612196565b612c8f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600f8054911515600160481b0269ff00000000000000000019909216919091179055565b600d8181548110611a4e57fe5b6117453385848685613332565b612cd5612196565b612d175760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612d3c57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d548110156115e957816001600160a01b0316600d8281548110612d7e57fe5b6000918252602090912001546001600160a01b03161415612e1357600d80546000198101908110612dab57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612dd157fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612e0d9060001983016145a2565b506115e9565b600101612d5d565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612a37576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612a19575050505050905090565b612e85612196565b612ec75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60008160ff1611612f225760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff82161115612f7f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e6000846002811115612f9057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b612fc1612196565b6130035760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613ef3565b50565b6118353386868686866138ba565b60125460ff1681565b61302e612196565b6130705760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613f3d565b600181565b600254600154600091906001600160a01b03161580159061309f5750600081115b1561319457808310156130fc5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613136573d6000803e3d6000fd5b506000613149848363ffffffff6131cd16565b111561318d57336108fc613163858463ffffffff6131cd16565b6040518115909202916000818181858888f1935050505015801561318b573d6000803e3d6000fd5b505b90506131c8565b604051339084156108fc029085906000818181858888f193505050501580156131c1573d6000803e3d6000fd5b5060009150505b919050565b6000828211156132275760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146132955760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506132c460018483613fe1565b156132f6575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556131c8565b50600092915050565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661339a5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156133ff5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166134545760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106134c15780518252601f1990920191602091820191016134a2565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106135255780518252601f199092019160209182019101613506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613587576040519150601f19603f3d011682016040523d82523d6000602084013e61358c565b606091505b509092509050816135a857506040805160208101909152600081525b600f54600160401b900460ff161561361957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561360057600080fd5b505af1158015613614573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156136b757818101518382015260200161369f565b50505050905090810190601f1680156136e45780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040518088600281111561370857fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561377a578181015183820152602001613762565b50505050905090810190601f1680156137a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156137da5781810151838201526020016137c2565b50505050905090810190601f1680156138075780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6000828201838110156138b35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038087166000908152600660205260409020548791166139225760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff16156139875760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166139dc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613a345760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613a41888a8761414d565b600f54909150600160401b900460ff1615613ab557886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613a9c57600080fd5b505af1158015613ab0573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613b1f57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613b84578181015183820152602001613b6c565b50505050905090810190601f168015613bb15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b90920416111561300c5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff1615613d135760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613d4260008483613fe1565b156132f65750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556131c8565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b039081169082161115613dc3576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b909304831601919081169082161115613df957506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b031611158015613e4857506001600160401b038082166000908152601160205260409020541615155b15613eb5576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff19169055600101613e0d565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038116613f8557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806145ff6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a6000866002811115613ff457fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806140585781546001810183556000838152602090200180546001600160a01b0319163317905561407f565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166140c55760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e908760028111156140f857fe5b60ff9081168252602080830193909352604091820160009081205488825260038701909452919091205491811691161061414157614136868661446a565b6001925050506138b3565b50600095945050505050565b6001600160a01b0380831660009081526003602052604081205460015491929091161580159061417d5750600081115b1561439557808310156141da5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b505050506040513d602081101561425d57600080fd5b505161429d57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b60006142af848363ffffffff6131cd16565b111561438e576001600160a01b03841663a9059cbb866142d5868563ffffffff6131cd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561432457600080fd5b505af1158015614338573d6000803e3d6000fd5b505050506040513d602081101561434e57600080fd5b505161438e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b90506138b3565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050506040513d602081101561441f57600080fd5b505161445f57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b506000949350505050565b6000600a600084600281111561447c57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff821610156144f957816001016000836000018360ff16815481106144cc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120556001016144a8565b5060005b600282015460ff8216101561454f57816003016000836002018360ff168154811061452457fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016144fd565b50600a600084600281111561456057fe5b60ff168152602080820192909252604090810160009081206001600160401b038616825290925281209061459482826145c6565b6118356002830160006145c6565b8154818355818111156118ad576000838152602090206118ad9181019083016145e0565b508054600082559060005260206000209081019061300c91905b61219391905b808211156145fa57600081556001016145e6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f7200000068616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a723058206b7a24bd281b8130fafb99b1bb8cde40b5ab8fa1f8189c6cd9ef368b69f304d40029", + Bin: "0x60806040819052600180546001600160a01b03191690556000600255600f8054600160401b61ffff021916690100000000000000000017905560108054600160401b600160801b0319166801000000000000000017905560208062004a7a833981018060405260208110156200007457600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff82161015620001045760ff81166000908152600e60205260409020805460ff1916600190811790915501620000d0565b50336000818152600c60205260408120805460ff19166001908117909155600d8054808301825592527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb590910180546001600160a01b031916909217909155600f80549215156801000000000000000002600160401b60ff021990931692909217909155601255506148de806200019c6000396000f3fe6080604052600436106103355760003560e01c80638c0bd916116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e53146110b8578063f17199661461118e578063f2fde38b146111a3578063ffa1ad74146111d657610335565b8063ea21eade1461103b578063ee2aec6514611050578063efdcd9741461108557610335565b8063cb38f407116100d1578063cb38f40714610f06578063cf0da29014610f30578063d8cf98ca14611000578063dd9222d61461103357610335565b8063bab2af1d14610e92578063c263b5d614610ec5578063c877cf3714610eda57610335565b80639f07132911610164578063afb602231161013e578063afb6022314610c6e578063b1db5b1714610dec578063b2c0103014610e18578063b3f0067414610e7d57610335565b80639f07132914610b55578063a066a7ed14610b6a578063ac6fff0b14610c5957610335565b80638c0bd91614610a7d5780638da5cb5b14610ab05780638f32d59b14610ac55780639832c1d714610ada578063989ba0d314610b0d5780639ef2017b14610b2257610335565b8063407e6bae116102855780635eb7413a1161022357806375ebdc09116101fd57806375ebdc09146109885780637c1a030214610a0b57806387b04c5514610a205780638a75eee214610a5357610335565b80635eb7413a1461092b5780636e176ec21461095e578063715018a61461097357610335565b806348a18a6a1161025f57806348a18a6a1461088b5780634b40b826146108be57806354edad72146108d35780635526f76b146108e857610335565b8063407e6bae146107125780634739f7e51461080b578063488af8711461084657610335565b806322604742116102f25780633682a450116102cc5780633682a4501461066f5780633a3099d1146106a25780633a348533146106b75780633e4fe949146106e857610335565b8063226047421461048057806326c23b54146105515780632f88396c1461062757610335565b806310693fcd1461035457806313a6738a1461038757806313e7c9d8146103d65780631a2ae53e1461041d5780631ebdca38146104565780632014e5d11461046b575b6002546040805160008152602081019091526103529133916111eb565b005b34801561036057600080fd5b506103526004803603602081101561037757600080fd5b50356001600160a01b0316611490565b34801561039357600080fd5b506103ba600480360360208110156103aa57600080fd5b50356001600160401b03166115f5565b604080516001600160401b039092168252519081900360200190f35b3480156103e257600080fd5b50610409600480360360208110156103f957600080fd5b50356001600160a01b0316611610565b604080519115158252519081900360200190f35b34801561042957600080fd5b506103526004803603604081101561044057600080fd5b50803590602001356001600160401b0316611625565b34801561046257600080fd5b50610352611699565b34801561047757600080fd5b50610409611760565b34801561048c57600080fd5b50610352600480360360808110156104a357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104dd57600080fd5b8201836020820111156104ef57600080fd5b803590602001918460018302840111600160201b8311171561051057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611770945050505050565b34801561055d57600080fd5b50610352600480360360a081101561057457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156105b357600080fd5b8201836020820111156105c557600080fd5b803590602001918460018302840111600160201b831117156105e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117ec945050505050565b34801561063357600080fd5b506103526004803603606081101561064a57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661182e565b34801561067b57600080fd5b506103526004803603602081101561069257600080fd5b50356001600160a01b03166118a4565b3480156106ae57600080fd5b506103ba611a45565b3480156106c357600080fd5b506106cc611a4a565b604080516001600160a01b039092168252519081900360200190f35b3480156106f457600080fd5b506106cc6004803603602081101561070b57600080fd5b5035611a59565b34801561071e57600080fd5b50610352600480360361010081101561073657600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561079757600080fd5b8201836020820111156107a957600080fd5b803590602001918460018302840111600160201b831117156107ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a80945050505050565b34801561081757600080fd5b506103526004803603604081101561082e57600080fd5b506001600160a01b0381358116916020013516611d73565b34801561085257600080fd5b506108796004803603602081101561086957600080fd5b50356001600160a01b0316611f18565b60408051918252519081900360200190f35b34801561089757600080fd5b50610879600480360360208110156108ae57600080fd5b50356001600160a01b0316611f2a565b3480156108ca57600080fd5b506103ba611f3c565b3480156108df57600080fd5b506103ba611f52565b3480156108f457600080fd5b506109156004803603602081101561090b57600080fd5b503560ff16611f61565b6040805160ff9092168252519081900360200190f35b34801561093757600080fd5b506104096004803603602081101561094e57600080fd5b50356001600160a01b0316611f76565b34801561096a57600080fd5b50610409611f8b565b34801561097f57600080fd5b50610352611f9b565b6103526004803603606081101561099e57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109cd57600080fd5b8201836020820111156109df57600080fd5b803590602001918460018302840111600160201b83111715610a0057600080fd5b50909250905061202f565b348015610a1757600080fd5b506103ba612084565b348015610a2c57600080fd5b5061035260048036036020811015610a4357600080fd5b50356001600160a01b031661209a565b348015610a5f57600080fd5b5061040960048036036020811015610a7657600080fd5b5035612138565b348015610a8957600080fd5b506106cc60048036036020811015610aa057600080fd5b50356001600160a01b031661214d565b348015610abc57600080fd5b506106cc612168565b348015610ad157600080fd5b50610409612178565b348015610ae657600080fd5b5061040960048036036020811015610afd57600080fd5b50356001600160401b0316612189565b348015610b1957600080fd5b506103ba61219e565b348015610b2e57600080fd5b5061035260048036036020811015610b4557600080fd5b50356001600160a01b03166121b4565b348015610b6157600080fd5b50610352612323565b348015610b7657600080fd5b50610352600480360360e0811015610b8d57600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610be557600080fd5b820183602082011115610bf757600080fd5b803590602001918460018302840111600160201b83111715610c1857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506123ec945050505050565b348015610c6557600080fd5b506103ba6126be565b348015610c7a57600080fd5b506103526004803603610120811015610c9257600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cf357600080fd5b820183602082011115610d0557600080fd5b803590602001918460018302840111600160201b83111715610d2657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d7857600080fd5b820183602082011115610d8a57600080fd5b803590602001918460018302840111600160201b83111715610dab57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506126cd945050505050565b348015610df857600080fd5b5061035260048036036020811015610e0f57600080fd5b50351515612a76565b348015610e2457600080fd5b50610e2d612b19565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e69578181015183820152602001610e51565b505050509050019250505060405180910390f35b348015610e8957600080fd5b506106cc612b7b565b348015610e9e57600080fd5b5061035260048036036020811015610eb557600080fd5b50356001600160a01b0316612b8a565b348015610ed157600080fd5b50610879612d79565b348015610ee657600080fd5b5061035260048036036020811015610efd57600080fd5b50351515612d7f565b348015610f1257600080fd5b506106cc60048036036020811015610f2957600080fd5b5035612dd5565b348015610f3c57600080fd5b5061035260048036036080811015610f5357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f8c57600080fd5b820183602082011115610f9e57600080fd5b803590602001918460018302840111600160201b83111715610fbf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612de2945050505050565b34801561100c57600080fd5b506103526004803603602081101561102357600080fd5b50356001600160a01b0316612def565b610352612f75565b34801561104757600080fd5b50610e2d612f77565b34801561105c57600080fd5b506103526004803603604081101561107357600080fd5b5060ff81358116916020013516612fd7565b34801561109157600080fd5b50610352600480360360208110156110a857600080fd5b50356001600160a01b0316613155565b3480156110c457600080fd5b50610352600480360360a08110156110db57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561111a57600080fd5b82018360208201111561112c57600080fd5b803590602001918460018302840111600160201b8311171561114d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506131a8945050505050565b34801561119a57600080fd5b506104096131b6565b3480156111af57600080fd5b50610352600480360360208110156111c657600080fd5b50356001600160a01b03166131bf565b3480156111e257600080fd5b506103ba613212565b60135460ff16156112325760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460010190819055600f54600160481b900460ff166112925760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8234116112e95760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112f484613217565b905060006001600160a01b038616337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0983611335348a63ffffffff6134a816565b600f600a9054906101000a90046001600160401b0316878a6040518086600281111561135d57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113c25781810151838201526020016113aa565b50505050905090810190601f1680156113ef5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a450600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b0319909116179055601254811461148a5760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b50505050565b611498612178565b6114da5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166115425760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156115a75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff1661167a5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61168381613508565b61168c57611695565b611695826135d1565b5050565b6116a1612178565b6116e35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60135460ff1661172b5760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6013805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b5050505061148a8433858585613604565b6118193330611801868663ffffffff613b2716565b6001600160a01b03891692919063ffffffff613b8b16565b611827853386868686613be8565b5050505050565b336000908152600c602052604090205460ff166118835760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61188c81613508565b6118955761189f565b61189f8383613f2b565b505050565b6118ac612178565b6118ee5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600d54600c116119485760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119b95760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020526040808220805460ff19166001908117909155600d8054918201815583527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191684179055517f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59190a250565b600c81565b6005546001600160a01b031681565b60088181548110611a6657fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611ad55760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b611ade83613f72565b611ae783613fdf565b611af057611d69565b611af9886140a2565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b31836140bd565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611ba257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c19578181015183820152602001611c01565b50505050905090810190601f168015611c465780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d4f57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cca57600080fd5b505af1158015611cde573d6000803e3d6000fd5b505050506040513d6020811015611cf457600080fd5b5051611d4a5760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611d69565b611d696001600160a01b038616878663ffffffff61422116565b5050505050505050565b611d7b612178565b611dbd5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611e2f5760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038216611e7757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806148056021913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611fa3612178565b611fe55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612041348563ffffffff6134a816565b9050611827858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111eb92505050565b600f54600160501b90046001600160401b031681565b6120a2612178565b6120e45760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf419181900360200190a150565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121bc612178565b6121fe5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122665760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff166122d85760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61232b612178565b61236d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60135460ff16156123b45760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6013805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124415760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b601280546001019081905561245584613f72565b61245e84613fdf565b61246757612665565b612470886140a2565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556124a8846140bd565b60006001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60008a8a600f60129054906101000a90046001600160401b03168a6040518087815260200186600281111561251a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612591578181015183820152602001612579565b50505050905090810190601f1680156125be5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516000906001600160a01b0388169087908381818185875af1925050503d806000811461261b576040519150601f19603f3d011682016040523d82523d6000602084013e612620565b606091505b505090508061266357604051600160e51b62461bcd0281526004018080602001828103825260238152602001806148466023913960400191505060405180910390fd5b505b6012548114611d695760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600f546001600160401b031681565b336000908152600c602052604090205460ff166127225760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61272b84613f72565b61273484613fdf565b61273d57612a6b565b612746896140a2565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff191691851691909117905561277e846140bd565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b031689604051808781526020018660028111156127ef57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561286657818101518382015260200161284e565b50505050905090810190601f1680156128935780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff16156129f757856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561293357818101518382015260200161291b565b50505050905090810190601f1680156129605780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561298157600080fd5b505af1158015612995573d6000803e3d6000fd5b505050506040513d60208110156129ab57600080fd5b50516129f25760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612a6b565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b158015612a5257600080fd5b505af1158015612a66573d6000803e3d6000fd5b505050505b505050505050505050565b612a7e612178565b612ac05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600f8054821515600160481b810269ff000000000000000000199092169190911790915560408051918252517f6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d7199181900360200190a150565b6060600d805480602002602001604051908101604052809291908181526020018280548015612b7157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b53575b5050505050905090565b6001546001600160a01b031681565b612b92612178565b612bd45760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612c3c5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612d2c57600880546000198101908110612ca057fe5b600091825260209091200154600880546001600160a01b039092169183908110612cc657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612d0657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612d3f9060001983016147a1565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612d87612178565b612dc95760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd281612a76565b50565b600d8181548110611a6657fe5b61148a3385848685613604565b612df7612178565b612e395760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612e5e57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d54811015612f3d57816001600160a01b0316600d8281548110612ea057fe5b6000918252602090912001546001600160a01b03161415612f3557600d80546000198101908110612ecd57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612ef357fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612f2f9060001983016147a1565b50612f3d565b600101612e7f565b506040516001600160a01b038216907f6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d90600090a250565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612b71576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612b53575050505050905090565b612fdf612178565b6130215760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60008160ff161161307c5760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff821611156130d95760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e60008460028111156130ea57fe5b60ff90811682526020820192909252604001600020805460ff19169290911691909117905581600281111561311b57fe5b6040805160ff8416815290517fde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c09181900360200190a25050565b61315d612178565b61319f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd281614276565b611827338686868686613be8565b60135460ff1681565b6131c7612178565b6132095760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd2816142c0565b600181565b600254600154600091906001600160a01b0316158015906132385750600081115b156133fe57808310156132955760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516000916001600160a01b03169083908381818185875af1925050503d80600081146132e2576040519150601f19603f3d011682016040523d82523d6000602084013e6132e7565b606091505b50509050806133405760408051600160e51b62461bcd02815260206004820152601360248201527f7472616e7366657220666565206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000613352858463ffffffff6134a816565b905080156133f357604051600090339083908381818185875af1925050503d806000811461339c576040519150601f19603f3d011682016040523d82523d6000602084013e6133a1565b606091505b50509050806133f15760408051600160e51b62461bcd02815260206004820152601160248201526001607a1b701c99599d5b99081999594819985a5b195902604482015290519081900360640190fd5b505b8293505050506134a3565b821561349d57604051600090339085908381818185875af1925050503d8060008114613446576040519150601f19603f3d011682016040523d82523d6000602084013e61344b565b606091505b505090508061349b5760408051600160e51b62461bcd02815260206004820152601160248201526001607a1b701c99599d5b99081999594819985a5b195902604482015290519081900360640190fd5b505b60009150505b919050565b6000828211156135025760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146135705760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b600080366040518083838082843780830192505050925050506040518091039020905061359f60018483614364565b1561349d575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556134a3565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661366c5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156136d15760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166137265760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106137935780518252601f199092019160209182019101613774565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106137f75780518252601f1990920191602091820191016137d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613859576040519150601f19603f3d011682016040523d82523d6000602084013e61385e565b606091505b50915091508161387957506040805160208101909152600081525b600f54600160401b900460ff16156138ea57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156138d157600080fd5b505af11580156138e5573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613988578181015183820152602001613970565b50505050905090810190601f1680156139b55780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052604051808860028111156139d957fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015613a4b578181015183820152602001613a33565b50505050905090810190601f168015613a785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015613aab578181015183820152602001613a93565b50505050905090810190601f168015613ad85780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b600082820183811015613b845760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd0217905261148a9085906144c6565b6001600160a01b03808716600090815260066020526040902054879116613c505760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff1615613cb55760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff16613d0a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613d625760408051600160e51b62461bcd02815260206004820152601760248201527f7a65726f20455243323020746f6b656e20616d6f756e74000000000000000000604482015290519081900360640190fd5b6000613d6f888a87614687565b600f54909150600160401b900460ff1615613de357886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613dca57600080fd5b505af1158015613dde573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613e4d57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613eb2578181015183820152602001613e9a565b50505050905090810190601f168015613edf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b909204161115612dd25760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff16156140415760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b600080366040518083838082843780830192505050925050506040518091039020905061407060008483614364565b1561349d5750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556134a3565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b0390811690821611156140f1576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b90930483160191908116908216111561412757506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561417657506001600160401b038082166000908152601160205260409020541615155b156141e3576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff1916905560010161413b565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb0217905261189f9084906144c6565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b03811661430857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806147df6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a600086600281111561437757fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806143db5781546001810183556000838152602090200180546001600160a01b03191633179055614402565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166144485760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e9087600281111561447b57fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106144ba57600192505050613b84565b50600095945050505050565b6144d8826001600160a01b031661479b565b61452c5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061456a5780518252601f19909201916020918201910161454b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146145cc576040519150601f19603f3d011682016040523d82523d6000602084013e6145d1565b606091505b50915091508161462b5760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561148a5780806020019051602081101561464757600080fd5b505161148a57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180614889602a913960400191505060405180910390fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906146b75750600081115b1561477057808310156147145760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b600154614734906001600160a01b0386811691168363ffffffff61422116565b6000614746848363ffffffff6134a816565b90508015614768576147686001600160a01b038616878363ffffffff61422116565b509050613b84565b8215614790576147906001600160a01b038516868563ffffffff61422116565b506000949350505050565b3b151590565b81548183558181111561189f5760008381526020902061189f91810190830161217591905b808211156147da57600081556001016147c6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657268616e646c654b4c41595472616e736665723a207472616e73666572206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f720000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a7230582027c128a7da73cd53e6a81b7064ae9b8859569580b078d181a8db1e05cf9a70300029", } // BridgeABI is the input ABI used to generate the binding from. @@ -271,10 +272,10 @@ var BridgeMetaData = &bind.MetaData{ var BridgeABI = BridgeMetaData.ABI // BridgeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeBinRuntime = `60806040526004361061031a5760003560e01c80638a75eee2116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e5314611071578063f171996614611147578063f2fde38b1461115c578063ffa1ad741461118f5761031a565b8063ea21eade14610ff4578063ee2aec6514611009578063efdcd9741461103e5761031a565b8063cb38f407116100d1578063cb38f40714610ebf578063cf0da29014610ee9578063d8cf98ca14610fb9578063dd9222d614610fec5761031a565b8063bab2af1d14610e4b578063c263b5d614610e7e578063c877cf3714610e935761031a565b80639ef2017b11610164578063ac6fff0b1161013e578063ac6fff0b14610c3e578063afb6022314610c53578063b2c0103014610dd1578063b3f0067414610e365761031a565b80639ef2017b14610b075780639f07132914610b3a578063a066a7ed14610b4f5761031a565b80638a75eee214610a385780638c0bd91614610a625780638da5cb5b14610a955780638f32d59b14610aaa5780639832c1d714610abf578063989ba0d314610af25761031a565b8063407e6bae1161026a5780635526f76b11610223578063715018a6116101fd578063715018a61461095857806375ebdc091461096d5780637c1a0302146109f057806387b04c5514610a055761031a565b80635526f76b146108cd5780635eb7413a146109105780636e176ec2146109435761031a565b8063407e6bae146106f75780634739f7e5146107f0578063488af8711461082b57806348a18a6a146108705780634b40b826146108a357806354edad72146108b85761031a565b806322604742116102d75780633682a450116102b15780633682a450146106545780633a3099d1146106875780633a3485331461069c5780633e4fe949146106cd5761031a565b8063226047421461046557806326c23b54146105365780632f88396c1461060c5761031a565b806310693fcd1461033957806313a6738a1461036c57806313e7c9d8146103bb5780631a2ae53e146104025780631ebdca381461043b5780632014e5d114610450575b6002546040805160008152602081019091526103379133916111a4565b005b34801561034557600080fd5b506103376004803603602081101561035c57600080fd5b50356001600160a01b03166113e4565b34801561037857600080fd5b5061039f6004803603602081101561038f57600080fd5b50356001600160401b0316611549565b604080516001600160401b039092168252519081900360200190f35b3480156103c757600080fd5b506103ee600480360360208110156103de57600080fd5b50356001600160a01b0316611564565b604080519115158252519081900360200190f35b34801561040e57600080fd5b506103376004803603604081101561042557600080fd5b50803590602001356001600160401b0316611579565b34801561044757600080fd5b506103376115ed565b34801561045c57600080fd5b506103ee6116b9565b34801561047157600080fd5b506103376004803603608081101561048857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111600160201b831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116c9945050505050565b34801561054257600080fd5b50610337600480360360a081101561055957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561059857600080fd5b8201836020820111156105aa57600080fd5b803590602001918460018302840111600160201b831117156105cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061174b945050505050565b34801561061857600080fd5b506103376004803603606081101561062f57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661183c565b34801561066057600080fd5b506103376004803603602081101561067757600080fd5b50356001600160a01b03166118b2565b34801561069357600080fd5b5061039f611a2d565b3480156106a857600080fd5b506106b1611a32565b604080516001600160a01b039092168252519081900360200190f35b3480156106d957600080fd5b506106b1600480360360208110156106f057600080fd5b5035611a41565b34801561070357600080fd5b50610337600480360361010081101561071b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460018302840111600160201b831117156107af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a68945050505050565b3480156107fc57600080fd5b506103376004803603604081101561081357600080fd5b506001600160a01b0381358116916020013516611e0b565b34801561083757600080fd5b5061085e6004803603602081101561084e57600080fd5b50356001600160a01b0316611f68565b60408051918252519081900360200190f35b34801561087c57600080fd5b5061085e6004803603602081101561089357600080fd5b50356001600160a01b0316611f7a565b3480156108af57600080fd5b5061039f611f8c565b3480156108c457600080fd5b5061039f611fa2565b3480156108d957600080fd5b506108fa600480360360208110156108f057600080fd5b503560ff16611fb1565b6040805160ff9092168252519081900360200190f35b34801561091c57600080fd5b506103ee6004803603602081101561093357600080fd5b50356001600160a01b0316611fc6565b34801561094f57600080fd5b506103ee611fdb565b34801561096457600080fd5b50610337611feb565b6103376004803603606081101561098357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460018302840111600160201b831117156109e557600080fd5b50909250905061207f565b3480156109fc57600080fd5b5061039f6120d4565b348015610a1157600080fd5b5061033760048036036020811015610a2857600080fd5b50356001600160a01b03166120ea565b348015610a4457600080fd5b506103ee60048036036020811015610a5b57600080fd5b5035612156565b348015610a6e57600080fd5b506106b160048036036020811015610a8557600080fd5b50356001600160a01b031661216b565b348015610aa157600080fd5b506106b1612186565b348015610ab657600080fd5b506103ee612196565b348015610acb57600080fd5b506103ee60048036036020811015610ae257600080fd5b50356001600160401b03166121a7565b348015610afe57600080fd5b5061039f6121bc565b348015610b1357600080fd5b5061033760048036036020811015610b2a57600080fd5b50356001600160a01b03166121d2565b348015610b4657600080fd5b50610337612346565b348015610b5b57600080fd5b50610337600480360360e0811015610b7257600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610bca57600080fd5b820183602082011115610bdc57600080fd5b803590602001918460018302840111600160201b83111715610bfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061240f945050505050565b348015610c4a57600080fd5b5061039f612627565b348015610c5f57600080fd5b506103376004803603610120811015610c7757600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cd857600080fd5b820183602082011115610cea57600080fd5b803590602001918460018302840111600160201b83111715610d0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b803590602001918460018302840111600160201b83111715610d9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612636945050505050565b348015610ddd57600080fd5b50610de66129df565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e22578181015183820152602001610e0a565b505050509050019250505060405180910390f35b348015610e4257600080fd5b506106b1612a41565b348015610e5757600080fd5b5061033760048036036020811015610e6e57600080fd5b50356001600160a01b0316612a50565b348015610e8a57600080fd5b5061085e612c3f565b348015610e9f57600080fd5b5061033760048036036020811015610eb657600080fd5b50351515612c45565b348015610ecb57600080fd5b506106b160048036036020811015610ee257600080fd5b5035612cb3565b348015610ef557600080fd5b5061033760048036036080811015610f0c57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f4557600080fd5b820183602082011115610f5757600080fd5b803590602001918460018302840111600160201b83111715610f7857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cc0945050505050565b348015610fc557600080fd5b5061033760048036036020811015610fdc57600080fd5b50356001600160a01b0316612ccd565b610337612e1b565b34801561100057600080fd5b50610de6612e1d565b34801561101557600080fd5b506103376004803603604081101561102c57600080fd5b5060ff81358116916020013516612e7d565b34801561104a57600080fd5b506103376004803603602081101561106157600080fd5b50356001600160a01b0316612fb9565b34801561107d57600080fd5b50610337600480360360a081101561109457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156110d357600080fd5b8201836020820111156110e557600080fd5b803590602001918460018302840111600160201b8311171561110657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061300f945050505050565b34801561115357600080fd5b506103ee61301d565b34801561116857600080fd5b506103376004803603602081101561117f57600080fd5b50356001600160a01b0316613026565b34801561119b57600080fd5b5061039f613079565b60125460ff16156111eb5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b600f54600160481b900460ff166112405760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8134116112975760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112a28361307e565b905060006001600160a01b038516337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09836112e3348963ffffffff6131cd16565b600f600a9054906101000a90046001600160401b031687896040518086600281111561130b57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611370578181015183820152602001611358565b50505050905090810190601f16801561139d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b03199091161790555050565b6113ec612196565b61142e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166114965760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156114fb5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff166115ce5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b6115d78161322d565b6115e0576115e9565b6115e9826132ff565b5050565b6115f5612196565b6116375760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff1615156001146116845760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506117458433858585613332565b50505050565b6001600160a01b0385166323b872dd333061176c878763ffffffff61385616565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b505050506040513d60208110156117e757600080fd5b505161182757604051600160e51b62461bcd0281526004018080602001828103825260298152602001806146716029913960400191505060405180910390fd5b6118358533868686866138ba565b5050505050565b336000908152600c602052604090205460ff166118915760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61189a8161322d565b6118a3576118ad565b6118ad8383613bfd565b505050565b6118ba612196565b6118fc5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600d54600c116119565760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119c75760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b600c81565b6005546001600160a01b031681565b60088181548110611a4e57fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611abd5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b611ac683613c44565b611acf83613cb1565b611ad857611e01565b611ae188613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b1983613d8f565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611b8a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c01578181015183820152602001611be9565b50505050905090810190601f168015611c2e5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d3757846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051611d325760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611e01565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b5051611e0157604051600160e51b62461bcd0281526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b5050505050505050565b611e13612196565b611e555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611ec75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611ff3612196565b6120355760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612091348563ffffffff6131cd16565b9050611835858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111a492505050565b600f54600160501b90046001600160401b031681565b6120f2612196565b6121345760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121da612196565b61221c5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122845760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff1615156001146122fb5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61234e612196565b6123905760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff16156123d75760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124645760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61246d83613c44565b61247683613cb1565b61247f5761261e565b61248887613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff19169184169190911790556124c083613d8f565b60006001600160a01b0316856001600160a01b0316876001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758a60008989600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561253257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125a9578181015183820152602001612591565b50505050905090810190601f1680156125d65780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015611e01573d6000803e3d6000fd5b50505050505050565b600f546001600160401b031681565b336000908152600c602052604090205460ff1661268b5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61269484613c44565b61269d84613cb1565b6126a6576129d4565b6126af89613d74565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556126e784613d8f565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561275857fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156127cf5781810151838201526020016127b7565b50505050905090810190601f1680156127fc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff161561296057856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289c578181015183820152602001612884565b50505050905090810190601f1680156128c95780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156128ea57600080fd5b505af11580156128fe573d6000803e3d6000fd5b505050506040513d602081101561291457600080fd5b505161295b5760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b6129d4565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156129bb57600080fd5b505af11580156129cf573d6000803e3d6000fd5b505050505b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015612a3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a19575b5050505050905090565b6001546001600160a01b031681565b612a58612196565b612a9a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612b025760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612bf257600880546000198101908110612b6657fe5b600091825260209091200154600880546001600160a01b039092169183908110612b8c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612bcc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612c059060001983016145a2565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612c4d612196565b612c8f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600f8054911515600160481b0269ff00000000000000000019909216919091179055565b600d8181548110611a4e57fe5b6117453385848685613332565b612cd5612196565b612d175760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612d3c57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d548110156115e957816001600160a01b0316600d8281548110612d7e57fe5b6000918252602090912001546001600160a01b03161415612e1357600d80546000198101908110612dab57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612dd157fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612e0d9060001983016145a2565b506115e9565b600101612d5d565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612a37576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612a19575050505050905090565b612e85612196565b612ec75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60008160ff1611612f225760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff82161115612f7f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e6000846002811115612f9057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b612fc1612196565b6130035760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613ef3565b50565b6118353386868686866138ba565b60125460ff1681565b61302e612196565b6130705760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613f3d565b600181565b600254600154600091906001600160a01b03161580159061309f5750600081115b1561319457808310156130fc5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613136573d6000803e3d6000fd5b506000613149848363ffffffff6131cd16565b111561318d57336108fc613163858463ffffffff6131cd16565b6040518115909202916000818181858888f1935050505015801561318b573d6000803e3d6000fd5b505b90506131c8565b604051339084156108fc029085906000818181858888f193505050501580156131c1573d6000803e3d6000fd5b5060009150505b919050565b6000828211156132275760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146132955760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506132c460018483613fe1565b156132f6575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556131c8565b50600092915050565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661339a5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156133ff5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166134545760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106134c15780518252601f1990920191602091820191016134a2565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106135255780518252601f199092019160209182019101613506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613587576040519150601f19603f3d011682016040523d82523d6000602084013e61358c565b606091505b509092509050816135a857506040805160208101909152600081525b600f54600160401b900460ff161561361957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561360057600080fd5b505af1158015613614573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156136b757818101518382015260200161369f565b50505050905090810190601f1680156136e45780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040518088600281111561370857fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561377a578181015183820152602001613762565b50505050905090810190601f1680156137a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156137da5781810151838201526020016137c2565b50505050905090810190601f1680156138075780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6000828201838110156138b35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038087166000908152600660205260409020548791166139225760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff16156139875760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166139dc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613a345760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613a41888a8761414d565b600f54909150600160401b900460ff1615613ab557886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613a9c57600080fd5b505af1158015613ab0573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613b1f57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613b84578181015183820152602001613b6c565b50505050905090810190601f168015613bb15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b90920416111561300c5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff1615613d135760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613d4260008483613fe1565b156132f65750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556131c8565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b039081169082161115613dc3576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b909304831601919081169082161115613df957506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b031611158015613e4857506001600160401b038082166000908152601160205260409020541615155b15613eb5576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff19169055600101613e0d565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038116613f8557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806145ff6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a6000866002811115613ff457fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806140585781546001810183556000838152602090200180546001600160a01b0319163317905561407f565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166140c55760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e908760028111156140f857fe5b60ff9081168252602080830193909352604091820160009081205488825260038701909452919091205491811691161061414157614136868661446a565b6001925050506138b3565b50600095945050505050565b6001600160a01b0380831660009081526003602052604081205460015491929091161580159061417d5750600081115b1561439557808310156141da5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b505050506040513d602081101561425d57600080fd5b505161429d57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b60006142af848363ffffffff6131cd16565b111561438e576001600160a01b03841663a9059cbb866142d5868563ffffffff6131cd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561432457600080fd5b505af1158015614338573d6000803e3d6000fd5b505050506040513d602081101561434e57600080fd5b505161438e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b90506138b3565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050506040513d602081101561441f57600080fd5b505161445f57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b506000949350505050565b6000600a600084600281111561447c57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff821610156144f957816001016000836000018360ff16815481106144cc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120556001016144a8565b5060005b600282015460ff8216101561454f57816003016000836002018360ff168154811061452457fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016144fd565b50600a600084600281111561456057fe5b60ff168152602080820192909252604090810160009081206001600160401b038616825290925281209061459482826145c6565b6118356002830160006145c6565b8154818355818111156118ad576000838152602090206118ad9181019083016145e0565b508054600082559060005260206000209081019061300c91905b61219391905b808211156145fa57600081556001016145e6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f7200000068616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a723058206b7a24bd281b8130fafb99b1bb8cde40b5ab8fa1f8189c6cd9ef368b69f304d40029` +const BridgeBinRuntime = `6080604052600436106103355760003560e01c80638c0bd916116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e53146110b8578063f17199661461118e578063f2fde38b146111a3578063ffa1ad74146111d657610335565b8063ea21eade1461103b578063ee2aec6514611050578063efdcd9741461108557610335565b8063cb38f407116100d1578063cb38f40714610f06578063cf0da29014610f30578063d8cf98ca14611000578063dd9222d61461103357610335565b8063bab2af1d14610e92578063c263b5d614610ec5578063c877cf3714610eda57610335565b80639f07132911610164578063afb602231161013e578063afb6022314610c6e578063b1db5b1714610dec578063b2c0103014610e18578063b3f0067414610e7d57610335565b80639f07132914610b55578063a066a7ed14610b6a578063ac6fff0b14610c5957610335565b80638c0bd91614610a7d5780638da5cb5b14610ab05780638f32d59b14610ac55780639832c1d714610ada578063989ba0d314610b0d5780639ef2017b14610b2257610335565b8063407e6bae116102855780635eb7413a1161022357806375ebdc09116101fd57806375ebdc09146109885780637c1a030214610a0b57806387b04c5514610a205780638a75eee214610a5357610335565b80635eb7413a1461092b5780636e176ec21461095e578063715018a61461097357610335565b806348a18a6a1161025f57806348a18a6a1461088b5780634b40b826146108be57806354edad72146108d35780635526f76b146108e857610335565b8063407e6bae146107125780634739f7e51461080b578063488af8711461084657610335565b806322604742116102f25780633682a450116102cc5780633682a4501461066f5780633a3099d1146106a25780633a348533146106b75780633e4fe949146106e857610335565b8063226047421461048057806326c23b54146105515780632f88396c1461062757610335565b806310693fcd1461035457806313a6738a1461038757806313e7c9d8146103d65780631a2ae53e1461041d5780631ebdca38146104565780632014e5d11461046b575b6002546040805160008152602081019091526103529133916111eb565b005b34801561036057600080fd5b506103526004803603602081101561037757600080fd5b50356001600160a01b0316611490565b34801561039357600080fd5b506103ba600480360360208110156103aa57600080fd5b50356001600160401b03166115f5565b604080516001600160401b039092168252519081900360200190f35b3480156103e257600080fd5b50610409600480360360208110156103f957600080fd5b50356001600160a01b0316611610565b604080519115158252519081900360200190f35b34801561042957600080fd5b506103526004803603604081101561044057600080fd5b50803590602001356001600160401b0316611625565b34801561046257600080fd5b50610352611699565b34801561047757600080fd5b50610409611760565b34801561048c57600080fd5b50610352600480360360808110156104a357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104dd57600080fd5b8201836020820111156104ef57600080fd5b803590602001918460018302840111600160201b8311171561051057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611770945050505050565b34801561055d57600080fd5b50610352600480360360a081101561057457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156105b357600080fd5b8201836020820111156105c557600080fd5b803590602001918460018302840111600160201b831117156105e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117ec945050505050565b34801561063357600080fd5b506103526004803603606081101561064a57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661182e565b34801561067b57600080fd5b506103526004803603602081101561069257600080fd5b50356001600160a01b03166118a4565b3480156106ae57600080fd5b506103ba611a45565b3480156106c357600080fd5b506106cc611a4a565b604080516001600160a01b039092168252519081900360200190f35b3480156106f457600080fd5b506106cc6004803603602081101561070b57600080fd5b5035611a59565b34801561071e57600080fd5b50610352600480360361010081101561073657600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561079757600080fd5b8201836020820111156107a957600080fd5b803590602001918460018302840111600160201b831117156107ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a80945050505050565b34801561081757600080fd5b506103526004803603604081101561082e57600080fd5b506001600160a01b0381358116916020013516611d73565b34801561085257600080fd5b506108796004803603602081101561086957600080fd5b50356001600160a01b0316611f18565b60408051918252519081900360200190f35b34801561089757600080fd5b50610879600480360360208110156108ae57600080fd5b50356001600160a01b0316611f2a565b3480156108ca57600080fd5b506103ba611f3c565b3480156108df57600080fd5b506103ba611f52565b3480156108f457600080fd5b506109156004803603602081101561090b57600080fd5b503560ff16611f61565b6040805160ff9092168252519081900360200190f35b34801561093757600080fd5b506104096004803603602081101561094e57600080fd5b50356001600160a01b0316611f76565b34801561096a57600080fd5b50610409611f8b565b34801561097f57600080fd5b50610352611f9b565b6103526004803603606081101561099e57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109cd57600080fd5b8201836020820111156109df57600080fd5b803590602001918460018302840111600160201b83111715610a0057600080fd5b50909250905061202f565b348015610a1757600080fd5b506103ba612084565b348015610a2c57600080fd5b5061035260048036036020811015610a4357600080fd5b50356001600160a01b031661209a565b348015610a5f57600080fd5b5061040960048036036020811015610a7657600080fd5b5035612138565b348015610a8957600080fd5b506106cc60048036036020811015610aa057600080fd5b50356001600160a01b031661214d565b348015610abc57600080fd5b506106cc612168565b348015610ad157600080fd5b50610409612178565b348015610ae657600080fd5b5061040960048036036020811015610afd57600080fd5b50356001600160401b0316612189565b348015610b1957600080fd5b506103ba61219e565b348015610b2e57600080fd5b5061035260048036036020811015610b4557600080fd5b50356001600160a01b03166121b4565b348015610b6157600080fd5b50610352612323565b348015610b7657600080fd5b50610352600480360360e0811015610b8d57600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610be557600080fd5b820183602082011115610bf757600080fd5b803590602001918460018302840111600160201b83111715610c1857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506123ec945050505050565b348015610c6557600080fd5b506103ba6126be565b348015610c7a57600080fd5b506103526004803603610120811015610c9257600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cf357600080fd5b820183602082011115610d0557600080fd5b803590602001918460018302840111600160201b83111715610d2657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d7857600080fd5b820183602082011115610d8a57600080fd5b803590602001918460018302840111600160201b83111715610dab57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506126cd945050505050565b348015610df857600080fd5b5061035260048036036020811015610e0f57600080fd5b50351515612a76565b348015610e2457600080fd5b50610e2d612b19565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e69578181015183820152602001610e51565b505050509050019250505060405180910390f35b348015610e8957600080fd5b506106cc612b7b565b348015610e9e57600080fd5b5061035260048036036020811015610eb557600080fd5b50356001600160a01b0316612b8a565b348015610ed157600080fd5b50610879612d79565b348015610ee657600080fd5b5061035260048036036020811015610efd57600080fd5b50351515612d7f565b348015610f1257600080fd5b506106cc60048036036020811015610f2957600080fd5b5035612dd5565b348015610f3c57600080fd5b5061035260048036036080811015610f5357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f8c57600080fd5b820183602082011115610f9e57600080fd5b803590602001918460018302840111600160201b83111715610fbf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612de2945050505050565b34801561100c57600080fd5b506103526004803603602081101561102357600080fd5b50356001600160a01b0316612def565b610352612f75565b34801561104757600080fd5b50610e2d612f77565b34801561105c57600080fd5b506103526004803603604081101561107357600080fd5b5060ff81358116916020013516612fd7565b34801561109157600080fd5b50610352600480360360208110156110a857600080fd5b50356001600160a01b0316613155565b3480156110c457600080fd5b50610352600480360360a08110156110db57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561111a57600080fd5b82018360208201111561112c57600080fd5b803590602001918460018302840111600160201b8311171561114d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506131a8945050505050565b34801561119a57600080fd5b506104096131b6565b3480156111af57600080fd5b50610352600480360360208110156111c657600080fd5b50356001600160a01b03166131bf565b3480156111e257600080fd5b506103ba613212565b60135460ff16156112325760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460010190819055600f54600160481b900460ff166112925760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8234116112e95760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112f484613217565b905060006001600160a01b038616337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0983611335348a63ffffffff6134a816565b600f600a9054906101000a90046001600160401b0316878a6040518086600281111561135d57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113c25781810151838201526020016113aa565b50505050905090810190601f1680156113ef5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a450600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b0319909116179055601254811461148a5760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b50505050565b611498612178565b6114da5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166115425760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156115a75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff1661167a5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61168381613508565b61168c57611695565b611695826135d1565b5050565b6116a1612178565b6116e35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60135460ff1661172b5760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6013805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b1580156117c757600080fd5b505af11580156117db573d6000803e3d6000fd5b5050505061148a8433858585613604565b6118193330611801868663ffffffff613b2716565b6001600160a01b03891692919063ffffffff613b8b16565b611827853386868686613be8565b5050505050565b336000908152600c602052604090205460ff166118835760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61188c81613508565b6118955761189f565b61189f8383613f2b565b505050565b6118ac612178565b6118ee5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600d54600c116119485760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119b95760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600c6020526040808220805460ff19166001908117909155600d8054918201815583527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191684179055517f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59190a250565b600c81565b6005546001600160a01b031681565b60088181548110611a6657fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611ad55760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b611ade83613f72565b611ae783613fdf565b611af057611d69565b611af9886140a2565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b31836140bd565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611ba257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c19578181015183820152602001611c01565b50505050905090810190601f168015611c465780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d4f57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cca57600080fd5b505af1158015611cde573d6000803e3d6000fd5b505050506040513d6020811015611cf457600080fd5b5051611d4a5760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611d69565b611d696001600160a01b038616878663ffffffff61422116565b5050505050505050565b611d7b612178565b611dbd5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611e2f5760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038216611e7757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806148056021913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611fa3612178565b611fe55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612041348563ffffffff6134a816565b9050611827858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111eb92505050565b600f54600160501b90046001600160401b031681565b6120a2612178565b6120e45760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf419181900360200190a150565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121bc612178565b6121fe5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122665760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff166122d85760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61232b612178565b61236d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60135460ff16156123b45760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6013805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124415760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b601280546001019081905561245584613f72565b61245e84613fdf565b61246757612665565b612470886140a2565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556124a8846140bd565b60006001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60008a8a600f60129054906101000a90046001600160401b03168a6040518087815260200186600281111561251a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612591578181015183820152602001612579565b50505050905090810190601f1680156125be5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516000906001600160a01b0388169087908381818185875af1925050503d806000811461261b576040519150601f19603f3d011682016040523d82523d6000602084013e612620565b606091505b505090508061266357604051600160e51b62461bcd0281526004018080602001828103825260238152602001806148466023913960400191505060405180910390fd5b505b6012548114611d695760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600f546001600160401b031681565b336000908152600c602052604090205460ff166127225760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020614869833981519152604482015290519081900360640190fd5b61272b84613f72565b61273484613fdf565b61273d57612a6b565b612746896140a2565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff191691851691909117905561277e846140bd565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b031689604051808781526020018660028111156127ef57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561286657818101518382015260200161284e565b50505050905090810190601f1680156128935780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff16156129f757856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561293357818101518382015260200161291b565b50505050905090810190601f1680156129605780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561298157600080fd5b505af1158015612995573d6000803e3d6000fd5b505050506040513d60208110156129ab57600080fd5b50516129f25760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612a6b565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b158015612a5257600080fd5b505af1158015612a66573d6000803e3d6000fd5b505050505b505050505050505050565b612a7e612178565b612ac05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b600f8054821515600160481b810269ff000000000000000000199092169190911790915560408051918252517f6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d7199181900360200190a150565b6060600d805480602002602001604051908101604052809291908181526020018280548015612b7157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b53575b5050505050905090565b6001546001600160a01b031681565b612b92612178565b612bd45760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612c3c5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612d2c57600880546000198101908110612ca057fe5b600091825260209091200154600880546001600160a01b039092169183908110612cc657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612d0657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612d3f9060001983016147a1565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612d87612178565b612dc95760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd281612a76565b50565b600d8181548110611a6657fe5b61148a3385848685613604565b612df7612178565b612e395760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612e5e57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d54811015612f3d57816001600160a01b0316600d8281548110612ea057fe5b6000918252602090912001546001600160a01b03161415612f3557600d80546000198101908110612ecd57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612ef357fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612f2f9060001983016147a1565b50612f3d565b600101612e7f565b506040516001600160a01b038216907f6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d90600090a250565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612b71576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612b53575050505050905090565b612fdf612178565b6130215760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b60008160ff161161307c5760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff821611156130d95760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e60008460028111156130ea57fe5b60ff90811682526020820192909252604001600020805460ff19169290911691909117905581600281111561311b57fe5b6040805160ff8416815290517fde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c09181900360200190a25050565b61315d612178565b61319f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd281614276565b611827338686868686613be8565b60135460ff1681565b6131c7612178565b6132095760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614826833981519152604482015290519081900360640190fd5b612dd2816142c0565b600181565b600254600154600091906001600160a01b0316158015906132385750600081115b156133fe57808310156132955760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516000916001600160a01b03169083908381818185875af1925050503d80600081146132e2576040519150601f19603f3d011682016040523d82523d6000602084013e6132e7565b606091505b50509050806133405760408051600160e51b62461bcd02815260206004820152601360248201527f7472616e7366657220666565206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000613352858463ffffffff6134a816565b905080156133f357604051600090339083908381818185875af1925050503d806000811461339c576040519150601f19603f3d011682016040523d82523d6000602084013e6133a1565b606091505b50509050806133f15760408051600160e51b62461bcd02815260206004820152601160248201526001607a1b701c99599d5b99081999594819985a5b195902604482015290519081900360640190fd5b505b8293505050506134a3565b821561349d57604051600090339085908381818185875af1925050503d8060008114613446576040519150601f19603f3d011682016040523d82523d6000602084013e61344b565b606091505b505090508061349b5760408051600160e51b62461bcd02815260206004820152601160248201526001607a1b701c99599d5b99081999594819985a5b195902604482015290519081900360640190fd5b505b60009150505b919050565b6000828211156135025760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146135705760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b600080366040518083838082843780830192505050925050506040518091039020905061359f60018483614364565b1561349d575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556134a3565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661366c5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156136d15760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166137265760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106137935780518252601f199092019160209182019101613774565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106137f75780518252601f1990920191602091820191016137d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613859576040519150601f19603f3d011682016040523d82523d6000602084013e61385e565b606091505b50915091508161387957506040805160208101909152600081525b600f54600160401b900460ff16156138ea57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156138d157600080fd5b505af11580156138e5573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613988578181015183820152602001613970565b50505050905090810190601f1680156139b55780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052604051808860028111156139d957fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015613a4b578181015183820152602001613a33565b50505050905090810190601f168015613a785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015613aab578181015183820152602001613a93565b50505050905090810190601f168015613ad85780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b600082820183811015613b845760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd0217905261148a9085906144c6565b6001600160a01b03808716600090815260066020526040902054879116613c505760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff1615613cb55760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff16613d0a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613d625760408051600160e51b62461bcd02815260206004820152601760248201527f7a65726f20455243323020746f6b656e20616d6f756e74000000000000000000604482015290519081900360640190fd5b6000613d6f888a87614687565b600f54909150600160401b900460ff1615613de357886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613dca57600080fd5b505af1158015613dde573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613e4d57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613eb2578181015183820152602001613e9a565b50505050905090810190601f168015613edf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b909204161115612dd25760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff16156140415760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b600080366040518083838082843780830192505050925050506040518091039020905061407060008483614364565b1561349d5750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556134a3565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b0390811690821611156140f1576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b90930483160191908116908216111561412757506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561417657506001600160401b038082166000908152601160205260409020541615155b156141e3576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff1916905560010161413b565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb0217905261189f9084906144c6565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b03811661430857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806147df6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a600086600281111561437757fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806143db5781546001810183556000838152602090200180546001600160a01b03191633179055614402565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166144485760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e9087600281111561447b57fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106144ba57600192505050613b84565b50600095945050505050565b6144d8826001600160a01b031661479b565b61452c5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061456a5780518252601f19909201916020918201910161454b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146145cc576040519150601f19603f3d011682016040523d82523d6000602084013e6145d1565b606091505b50915091508161462b5760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561148a5780806020019051602081101561464757600080fd5b505161148a57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180614889602a913960400191505060405180910390fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906146b75750600081115b1561477057808310156147145760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b600154614734906001600160a01b0386811691168363ffffffff61422116565b6000614746848363ffffffff6134a816565b90508015614768576147686001600160a01b038616878363ffffffff61422116565b509050613b84565b8215614790576147906001600160a01b038516868563ffffffff61422116565b506000949350505050565b3b151590565b81548183558181111561189f5760008381526020902061189f91810190830161217591905b808211156147da57600081556001016147c6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657268616e646c654b4c41595472616e736665723a207472616e73666572206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f720000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a7230582027c128a7da73cd53e6a81b7064ae9b8859569580b078d181a8db1e05cf9a70300029` -// BridgeFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use BridgeMetaData.Sigs instead. +// BridgeFuncSigs maps the 4-byte function signature to its string representation. var BridgeFuncSigs = BridgeMetaData.Sigs // BridgeBin is the compiled bytecode used for deploying new contracts. @@ -446,6 +447,7 @@ func (_Bridge *BridgeTransactorRaw) Transact(opts *bind.TransactOpts, method str func (_Bridge *BridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "MAX_OPERATOR") + if err != nil { return *new(uint64), err } @@ -453,6 +455,7 @@ func (_Bridge *BridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. @@ -475,6 +478,7 @@ func (_Bridge *BridgeCallerSession) MAXOPERATOR() (uint64, error) { func (_Bridge *BridgeCaller) VERSION(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(uint64), err } @@ -482,6 +486,7 @@ func (_Bridge *BridgeCaller) VERSION(opts *bind.CallOpts) (uint64, error) { out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -504,6 +509,7 @@ func (_Bridge *BridgeCallerSession) VERSION() (uint64, error) { func (_Bridge *BridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + if err != nil { return *new(bool), err } @@ -511,6 +517,7 @@ func (_Bridge *BridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. @@ -533,6 +540,7 @@ func (_Bridge *BridgeCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, func (_Bridge *BridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "configurationNonce") + if err != nil { return *new(uint64), err } @@ -540,6 +548,7 @@ func (_Bridge *BridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, er out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. @@ -562,6 +571,7 @@ func (_Bridge *BridgeCallerSession) ConfigurationNonce() (uint64, error) { func (_Bridge *BridgeCaller) CounterpartBridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "counterpartBridge") + if err != nil { return *new(common.Address), err } @@ -569,6 +579,7 @@ func (_Bridge *BridgeCaller) CounterpartBridge(opts *bind.CallOpts) (common.Addr out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. @@ -591,6 +602,7 @@ func (_Bridge *BridgeCallerSession) CounterpartBridge() (common.Address, error) func (_Bridge *BridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "feeOfERC20", arg0) + if err != nil { return *new(*big.Int), err } @@ -598,6 +610,7 @@ func (_Bridge *BridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. @@ -620,6 +633,7 @@ func (_Bridge *BridgeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, e func (_Bridge *BridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "feeOfKLAY") + if err != nil { return *new(*big.Int), err } @@ -627,6 +641,7 @@ func (_Bridge *BridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. @@ -649,6 +664,7 @@ func (_Bridge *BridgeCallerSession) FeeOfKLAY() (*big.Int, error) { func (_Bridge *BridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "feeReceiver") + if err != nil { return *new(common.Address), err } @@ -656,6 +672,7 @@ func (_Bridge *BridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, e out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. @@ -678,6 +695,7 @@ func (_Bridge *BridgeCallerSession) FeeReceiver() (common.Address, error) { func (_Bridge *BridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "getOperatorList") + if err != nil { return *new([]common.Address), err } @@ -685,6 +703,7 @@ func (_Bridge *BridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Addr out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. @@ -707,6 +726,7 @@ func (_Bridge *BridgeCallerSession) GetOperatorList() ([]common.Address, error) func (_Bridge *BridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "getRegisteredTokenList") + if err != nil { return *new([]common.Address), err } @@ -714,6 +734,7 @@ func (_Bridge *BridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]comm out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. @@ -736,6 +757,7 @@ func (_Bridge *BridgeCallerSession) GetRegisteredTokenList() ([]common.Address, func (_Bridge *BridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + if err != nil { return *new(uint64), err } @@ -743,6 +765,7 @@ func (_Bridge *BridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 u out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. @@ -765,6 +788,7 @@ func (_Bridge *BridgeCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64 func (_Bridge *BridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "handledRequestTx", arg0) + if err != nil { return *new(bool), err } @@ -772,6 +796,7 @@ func (_Bridge *BridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. @@ -794,6 +819,7 @@ func (_Bridge *BridgeCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error func (_Bridge *BridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "indexOfTokens", arg0) + if err != nil { return *new(*big.Int), err } @@ -801,6 +827,7 @@ func (_Bridge *BridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Addr out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. @@ -823,6 +850,7 @@ func (_Bridge *BridgeCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int func (_Bridge *BridgeCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "isLockedKLAY") + if err != nil { return *new(bool), err } @@ -830,6 +858,7 @@ func (_Bridge *BridgeCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. @@ -852,6 +881,7 @@ func (_Bridge *BridgeCallerSession) IsLockedKLAY() (bool, error) { func (_Bridge *BridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -859,6 +889,7 @@ func (_Bridge *BridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -881,6 +912,7 @@ func (_Bridge *BridgeCallerSession) IsOwner() (bool, error) { func (_Bridge *BridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "isRunning") + if err != nil { return *new(bool), err } @@ -888,6 +920,7 @@ func (_Bridge *BridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. @@ -910,6 +943,7 @@ func (_Bridge *BridgeCallerSession) IsRunning() (bool, error) { func (_Bridge *BridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "lockedTokens", arg0) + if err != nil { return *new(bool), err } @@ -917,6 +951,7 @@ func (_Bridge *BridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Addre out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. @@ -939,6 +974,7 @@ func (_Bridge *BridgeCallerSession) LockedTokens(arg0 common.Address) (bool, err func (_Bridge *BridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "lowerHandleNonce") + if err != nil { return *new(uint64), err } @@ -946,6 +982,7 @@ func (_Bridge *BridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, erro out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. @@ -968,6 +1005,7 @@ func (_Bridge *BridgeCallerSession) LowerHandleNonce() (uint64, error) { func (_Bridge *BridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "modeMintBurn") + if err != nil { return *new(bool), err } @@ -975,6 +1013,7 @@ func (_Bridge *BridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. @@ -997,6 +1036,7 @@ func (_Bridge *BridgeCallerSession) ModeMintBurn() (bool, error) { func (_Bridge *BridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { return *new(common.Address), err } @@ -1004,6 +1044,7 @@ func (_Bridge *BridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OperatorList is a free data retrieval call binding the contract method 0xcb38f407. @@ -1026,6 +1067,7 @@ func (_Bridge *BridgeCallerSession) OperatorList(arg0 *big.Int) (common.Address, func (_Bridge *BridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { return *new(uint8), err } @@ -1033,6 +1075,7 @@ func (_Bridge *BridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. @@ -1055,6 +1098,7 @@ func (_Bridge *BridgeCallerSession) OperatorThresholds(arg0 uint8) (uint8, error func (_Bridge *BridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "operators", arg0) + if err != nil { return *new(bool), err } @@ -1062,6 +1106,7 @@ func (_Bridge *BridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // Operators is a free data retrieval call binding the contract method 0x13e7c9d8. @@ -1084,6 +1129,7 @@ func (_Bridge *BridgeCallerSession) Operators(arg0 common.Address) (bool, error) func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -1091,6 +1137,7 @@ func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -1113,6 +1160,7 @@ func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { func (_Bridge *BridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { return *new(uint64), err } @@ -1120,6 +1168,7 @@ func (_Bridge *BridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, e out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. @@ -1142,6 +1191,7 @@ func (_Bridge *BridgeCallerSession) RecoveryBlockNumber() (uint64, error) { func (_Bridge *BridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { return *new(common.Address), err } @@ -1149,6 +1199,7 @@ func (_Bridge *BridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. @@ -1171,6 +1222,7 @@ func (_Bridge *BridgeCallerSession) RegisteredTokenList(arg0 *big.Int) (common.A func (_Bridge *BridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { return *new(common.Address), err } @@ -1178,6 +1230,7 @@ func (_Bridge *BridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.A out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. @@ -1200,6 +1253,7 @@ func (_Bridge *BridgeCallerSession) RegisteredTokens(arg0 common.Address) (commo func (_Bridge *BridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "requestNonce") + if err != nil { return *new(uint64), err } @@ -1207,6 +1261,7 @@ func (_Bridge *BridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. @@ -1229,6 +1284,7 @@ func (_Bridge *BridgeCallerSession) RequestNonce() (uint64, error) { func (_Bridge *BridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { return *new(uint64), err } @@ -1236,6 +1292,7 @@ func (_Bridge *BridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, erro out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. @@ -1693,6 +1750,27 @@ func (_Bridge *BridgeTransactorSession) SetOperatorThreshold(_voteType uint8, _t return _Bridge.Contract.SetOperatorThreshold(&_Bridge.TransactOpts, _voteType, _threshold) } +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_Bridge *BridgeTransactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setRunningStatus", _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_Bridge *BridgeSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _Bridge.Contract.SetRunningStatus(&_Bridge.TransactOpts, _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_Bridge *BridgeTransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _Bridge.Contract.SetRunningStatus(&_Bridge.TransactOpts, _status) +} + // Start is a paid mutator transaction binding the contract method 0xc877cf37. // // Solidity: function start(bool _status) returns() @@ -1798,6 +1876,140 @@ func (_Bridge *BridgeTransactorSession) Fallback(calldata []byte) (*types.Transa return _Bridge.Contract.Fallback(&_Bridge.TransactOpts, calldata) } +// BridgeCounterpartBridgeChangedIterator is returned from FilterCounterpartBridgeChanged and is used to iterate over the raw logs and unpacked data for CounterpartBridgeChanged events raised by the Bridge contract. +type BridgeCounterpartBridgeChangedIterator struct { + Event *BridgeCounterpartBridgeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeCounterpartBridgeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeCounterpartBridgeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeCounterpartBridgeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeCounterpartBridgeChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeCounterpartBridgeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeCounterpartBridgeChanged represents a CounterpartBridgeChanged event raised by the Bridge contract. +type BridgeCounterpartBridgeChanged struct { + Bridge common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCounterpartBridgeChanged is a free log retrieval operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. +// +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_Bridge *BridgeFilterer) FilterCounterpartBridgeChanged(opts *bind.FilterOpts) (*BridgeCounterpartBridgeChangedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "CounterpartBridgeChanged") + if err != nil { + return nil, err + } + return &BridgeCounterpartBridgeChangedIterator{contract: _Bridge.contract, event: "CounterpartBridgeChanged", logs: logs, sub: sub}, nil +} + +// WatchCounterpartBridgeChanged is a free log subscription operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. +// +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_Bridge *BridgeFilterer) WatchCounterpartBridgeChanged(opts *bind.WatchOpts, sink chan<- *BridgeCounterpartBridgeChanged) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "CounterpartBridgeChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeCounterpartBridgeChanged) + if err := _Bridge.contract.UnpackLog(event, "CounterpartBridgeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCounterpartBridgeChanged is a log parse operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. +// +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_Bridge *BridgeFilterer) ParseCounterpartBridgeChanged(log types.Log) (*BridgeCounterpartBridgeChanged, error) { + event := new(BridgeCounterpartBridgeChanged) + if err := _Bridge.contract.UnpackLog(event, "CounterpartBridgeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // BridgeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the Bridge contract. type BridgeERC20FeeChangedIterator struct { Event *BridgeERC20FeeChanged // Event containing the contract specifics and raw log @@ -1876,6 +2088,7 @@ type BridgeERC20FeeChanged struct { // // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) func (_Bridge *BridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeERC20FeeChangedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -1896,6 +2109,7 @@ func (_Bridge *BridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, toke // // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) func (_Bridge *BridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -1945,6 +2159,7 @@ func (_Bridge *BridgeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeERC20 if err := _Bridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2025,6 +2240,7 @@ type BridgeFeeReceiverChanged struct { // // Solidity: event FeeReceiverChanged(address indexed feeReceiver) func (_Bridge *BridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeReceiverChangedIterator, error) { + var feeReceiverRule []interface{} for _, feeReceiverItem := range feeReceiver { feeReceiverRule = append(feeReceiverRule, feeReceiverItem) @@ -2041,6 +2257,7 @@ func (_Bridge *BridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, f // // Solidity: event FeeReceiverChanged(address indexed feeReceiver) func (_Bridge *BridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { + var feeReceiverRule []interface{} for _, feeReceiverItem := range feeReceiver { feeReceiverRule = append(feeReceiverRule, feeReceiverItem) @@ -2086,6 +2303,7 @@ func (_Bridge *BridgeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFe if err := _Bridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2174,6 +2392,7 @@ type BridgeHandleValueTransfer struct { // // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) func (_Bridge *BridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeHandleValueTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2198,6 +2417,7 @@ func (_Bridge *BridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, // // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) func (_Bridge *BridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2251,6 +2471,7 @@ func (_Bridge *BridgeFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeH if err := _Bridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2331,6 +2552,7 @@ type BridgeKLAYFeeChanged struct { // // Solidity: event KLAYFeeChanged(uint256 indexed fee) func (_Bridge *BridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeKLAYFeeChangedIterator, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) @@ -2347,6 +2569,7 @@ func (_Bridge *BridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee [ // // Solidity: event KLAYFeeChanged(uint256 indexed fee) func (_Bridge *BridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) @@ -2392,6 +2615,7 @@ func (_Bridge *BridgeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeKLAYFe if err := _Bridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2471,6 +2695,7 @@ type BridgeKLAYLocked struct { // // Solidity: event KLAYLocked() func (_Bridge *BridgeFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeKLAYLockedIterator, error) { + logs, sub, err := _Bridge.contract.FilterLogs(opts, "KLAYLocked") if err != nil { return nil, err @@ -2482,6 +2707,7 @@ func (_Bridge *BridgeFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeK // // Solidity: event KLAYLocked() func (_Bridge *BridgeFilterer) WatchKLAYLocked(opts *bind.WatchOpts, sink chan<- *BridgeKLAYLocked) (event.Subscription, error) { + logs, sub, err := _Bridge.contract.WatchLogs(opts, "KLAYLocked") if err != nil { return nil, err @@ -2522,6 +2748,7 @@ func (_Bridge *BridgeFilterer) ParseKLAYLocked(log types.Log) (*BridgeKLAYLocked if err := _Bridge.contract.UnpackLog(event, "KLAYLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2601,6 +2828,7 @@ type BridgeKLAYUnlocked struct { // // Solidity: event KLAYUnlocked() func (_Bridge *BridgeFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*BridgeKLAYUnlockedIterator, error) { + logs, sub, err := _Bridge.contract.FilterLogs(opts, "KLAYUnlocked") if err != nil { return nil, err @@ -2612,6 +2840,7 @@ func (_Bridge *BridgeFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*Bridg // // Solidity: event KLAYUnlocked() func (_Bridge *BridgeFilterer) WatchKLAYUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeKLAYUnlocked) (event.Subscription, error) { + logs, sub, err := _Bridge.contract.WatchLogs(opts, "KLAYUnlocked") if err != nil { return nil, err @@ -2652,12 +2881,13 @@ func (_Bridge *BridgeFilterer) ParseKLAYUnlocked(log types.Log) (*BridgeKLAYUnlo if err := _Bridge.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract. -type BridgeOwnershipTransferredIterator struct { - Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log +// BridgeOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the Bridge contract. +type BridgeOperatorDeregisteredIterator struct { + Event *BridgeOperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2671,7 +2901,7 @@ type BridgeOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeOwnershipTransferredIterator) Next() bool { +func (it *BridgeOperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2680,7 +2910,7 @@ func (it *BridgeOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeOwnershipTransferred) + it.Event = new(BridgeOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2695,7 +2925,7 @@ func (it *BridgeOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeOwnershipTransferred) + it.Event = new(BridgeOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2711,58 +2941,51 @@ func (it *BridgeOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeOwnershipTransferredIterator) Error() error { +func (it *BridgeOperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeOwnershipTransferredIterator) Close() error { +func (it *BridgeOperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeOwnershipTransferred represents a OwnershipTransferred event raised by the Bridge contract. -type BridgeOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorDeregistered represents a OperatorDeregistered event raised by the Bridge contract. +type BridgeOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_Bridge *BridgeFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &BridgeOwnershipTransferredIterator{contract: _Bridge.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeOperatorDeregisteredIterator{contract: _Bridge.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_Bridge *BridgeFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -2772,8 +2995,8 @@ func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeOwnershipTransferred) - if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeOperatorDeregistered) + if err := _Bridge.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -2794,20 +3017,21 @@ func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, s }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOwnershipTransferred, error) { - event := new(BridgeOwnershipTransferred) - if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_Bridge *BridgeFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeOperatorDeregistered, error) { + event := new(BridgeOperatorDeregistered) + if err := _Bridge.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the Bridge contract. -type BridgeRequestValueTransferIterator struct { - Event *BridgeRequestValueTransfer // Event containing the contract specifics and raw log +// BridgeOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the Bridge contract. +type BridgeOperatorRegisteredIterator struct { + Event *BridgeOperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2821,7 +3045,7 @@ type BridgeRequestValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeRequestValueTransferIterator) Next() bool { +func (it *BridgeOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2830,7 +3054,7 @@ func (it *BridgeRequestValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeRequestValueTransfer) + it.Event = new(BridgeOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2845,7 +3069,7 @@ func (it *BridgeRequestValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeRequestValueTransfer) + it.Event = new(BridgeOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2861,72 +3085,51 @@ func (it *BridgeRequestValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeRequestValueTransferIterator) Error() error { +func (it *BridgeOperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeRequestValueTransferIterator) Close() error { +func (it *BridgeOperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeRequestValueTransfer represents a RequestValueTransfer event raised by the Bridge contract. -type BridgeRequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorRegistered represents a OperatorRegistered event raised by the Bridge contract. +type BridgeOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_Bridge *BridgeFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_Bridge *BridgeFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeRequestValueTransferIterator{contract: _Bridge.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil + return &BridgeOperatorRegisteredIterator{contract: _Bridge.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_Bridge *BridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_Bridge *BridgeFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -2936,8 +3139,8 @@ func (_Bridge *BridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeRequestValueTransfer) - if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + event := new(BridgeOperatorRegistered) + if err := _Bridge.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -2958,20 +3161,21 @@ func (_Bridge *BridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, s }), nil } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_Bridge *BridgeFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeRequestValueTransfer, error) { - event := new(BridgeRequestValueTransfer) - if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_Bridge *BridgeFilterer) ParseOperatorRegistered(log types.Log) (*BridgeOperatorRegistered, error) { + event := new(BridgeOperatorRegistered) + if err := _Bridge.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the Bridge contract. -type BridgeRequestValueTransferEncodedIterator struct { - Event *BridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log +// BridgeOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the Bridge contract. +type BridgeOperatorThresholdChangedIterator struct { + Event *BridgeOperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2985,7 +3189,7 @@ type BridgeRequestValueTransferEncodedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeRequestValueTransferEncodedIterator) Next() bool { +func (it *BridgeOperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2994,7 +3198,7 @@ func (it *BridgeRequestValueTransferEncodedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeRequestValueTransferEncoded) + it.Event = new(BridgeOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3009,7 +3213,7 @@ func (it *BridgeRequestValueTransferEncodedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeRequestValueTransferEncoded) + it.Event = new(BridgeOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3025,74 +3229,52 @@ func (it *BridgeRequestValueTransferEncodedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeRequestValueTransferEncodedIterator) Error() error { +func (it *BridgeOperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeRequestValueTransferEncodedIterator) Close() error { +func (it *BridgeOperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the Bridge contract. -type BridgeRequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the Bridge contract. +type BridgeOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_Bridge *BridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_Bridge *BridgeFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeRequestValueTransferEncodedIterator{contract: _Bridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + return &BridgeOperatorThresholdChangedIterator{contract: _Bridge.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_Bridge *BridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_Bridge *BridgeFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -3102,8 +3284,8 @@ func (_Bridge *BridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeRequestValueTransferEncoded) - if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + event := new(BridgeOperatorThresholdChanged) + if err := _Bridge.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -3124,20 +3306,21 @@ func (_Bridge *BridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.Watch }), nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_Bridge *BridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeRequestValueTransferEncoded, error) { - event := new(BridgeRequestValueTransferEncoded) - if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_Bridge *BridgeFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeOperatorThresholdChanged, error) { + event := new(BridgeOperatorThresholdChanged) + if err := _Bridge.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the Bridge contract. -type BridgeTokenDeregisteredIterator struct { - Event *BridgeTokenDeregistered // Event containing the contract specifics and raw log +// BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract. +type BridgeOwnershipTransferredIterator struct { + Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3151,7 +3334,7 @@ type BridgeTokenDeregisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokenDeregisteredIterator) Next() bool { +func (it *BridgeOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3160,7 +3343,7 @@ func (it *BridgeTokenDeregisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokenDeregistered) + it.Event = new(BridgeOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3175,7 +3358,7 @@ func (it *BridgeTokenDeregisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokenDeregistered) + it.Event = new(BridgeOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3191,49 +3374,60 @@ func (it *BridgeTokenDeregisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokenDeregisteredIterator) Error() error { +func (it *BridgeOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokenDeregisteredIterator) Close() error { +func (it *BridgeOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokenDeregistered represents a TokenDeregistered event raised by the Bridge contract. -type BridgeTokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOwnershipTransferred represents a OwnershipTransferred event raised by the Bridge contract. +type BridgeOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenDeregistered(address indexed token) -func (_Bridge *BridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTokenDeregisteredIterator{contract: _Bridge.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + return &BridgeOwnershipTransferredIterator{contract: _Bridge.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenDeregistered(address indexed token) -func (_Bridge *BridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -3243,8 +3437,8 @@ func (_Bridge *BridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokenDeregistered) - if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + event := new(BridgeOwnershipTransferred) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -3265,20 +3459,21 @@ func (_Bridge *BridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink }), nil } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenDeregistered(address indexed token) -func (_Bridge *BridgeFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokenDeregistered, error) { - event := new(BridgeTokenDeregistered) - if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOwnershipTransferred, error) { + event := new(BridgeOwnershipTransferred) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the Bridge contract. -type BridgeTokenLockedIterator struct { - Event *BridgeTokenLocked // Event containing the contract specifics and raw log +// BridgeRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the Bridge contract. +type BridgeRequestValueTransferIterator struct { + Event *BridgeRequestValueTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3292,7 +3487,7 @@ type BridgeTokenLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokenLockedIterator) Next() bool { +func (it *BridgeRequestValueTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3301,7 +3496,7 @@ func (it *BridgeTokenLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokenLocked) + it.Event = new(BridgeRequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3316,7 +3511,7 @@ func (it *BridgeTokenLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokenLocked) + it.Event = new(BridgeRequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3332,50 +3527,75 @@ func (it *BridgeTokenLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokenLockedIterator) Error() error { +func (it *BridgeRequestValueTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokenLockedIterator) Close() error { +func (it *BridgeRequestValueTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokenLocked represents a TokenLocked event raised by the Bridge contract. -type BridgeTokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeRequestValueTransfer represents a RequestValueTransfer event raised by the Bridge contract. +type BridgeRequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenLocked(address indexed token) -func (_Bridge *BridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_Bridge *BridgeFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTokenLockedIterator{contract: _Bridge.contract, event: "TokenLocked", logs: logs, sub: sub}, nil + return &BridgeRequestValueTransferIterator{contract: _Bridge.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenLocked(address indexed token) -func (_Bridge *BridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_Bridge *BridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenLocked", tokenRule) - if err != nil { + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { return nil, err } return event.NewSubscription(func(quit <-chan struct{}) error { @@ -3384,8 +3604,8 @@ func (_Bridge *BridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan< select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokenLocked) - if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil { + event := new(BridgeRequestValueTransfer) + if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return err } event.Raw = log @@ -3406,20 +3626,21 @@ func (_Bridge *BridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan< }), nil } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenLocked(address indexed token) -func (_Bridge *BridgeFilterer) ParseTokenLocked(log types.Log) (*BridgeTokenLocked, error) { - event := new(BridgeTokenLocked) - if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_Bridge *BridgeFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeRequestValueTransfer, error) { + event := new(BridgeRequestValueTransfer) + if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the Bridge contract. -type BridgeTokenRegisteredIterator struct { - Event *BridgeTokenRegistered // Event containing the contract specifics and raw log +// BridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the Bridge contract. +type BridgeRequestValueTransferEncodedIterator struct { + Event *BridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3433,7 +3654,7 @@ type BridgeTokenRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokenRegisteredIterator) Next() bool { +func (it *BridgeRequestValueTransferEncodedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3442,7 +3663,7 @@ func (it *BridgeTokenRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokenRegistered) + it.Event = new(BridgeRequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3457,7 +3678,7 @@ func (it *BridgeTokenRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokenRegistered) + it.Event = new(BridgeRequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3473,49 +3694,76 @@ func (it *BridgeTokenRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokenRegisteredIterator) Error() error { +func (it *BridgeRequestValueTransferEncodedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokenRegisteredIterator) Close() error { +func (it *BridgeRequestValueTransferEncodedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokenRegistered represents a TokenRegistered event raised by the Bridge contract. -type BridgeTokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the Bridge contract. +type BridgeRequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenRegistered(address indexed token) -func (_Bridge *BridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_Bridge *BridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTokenRegisteredIterator{contract: _Bridge.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil + return &BridgeRequestValueTransferEncodedIterator{contract: _Bridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenRegistered(address indexed token) -func (_Bridge *BridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_Bridge *BridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -3525,8 +3773,8 @@ func (_Bridge *BridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokenRegistered) - if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil { + event := new(BridgeRequestValueTransferEncoded) + if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return err } event.Raw = log @@ -3547,20 +3795,21 @@ func (_Bridge *BridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink c }), nil } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenRegistered(address indexed token) -func (_Bridge *BridgeFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokenRegistered, error) { - event := new(BridgeTokenRegistered) - if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil { +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_Bridge *BridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeRequestValueTransferEncoded, error) { + event := new(BridgeRequestValueTransferEncoded) + if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the Bridge contract. -type BridgeTokenUnlockedIterator struct { - Event *BridgeTokenUnlocked // Event containing the contract specifics and raw log +// BridgeRunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the Bridge contract. +type BridgeRunningStatusChangedIterator struct { + Event *BridgeRunningStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3574,7 +3823,7 @@ type BridgeTokenUnlockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokenUnlockedIterator) Next() bool { +func (it *BridgeRunningStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3583,7 +3832,7 @@ func (it *BridgeTokenUnlockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokenUnlocked) + it.Event = new(BridgeRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3598,7 +3847,7 @@ func (it *BridgeTokenUnlockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokenUnlocked) + it.Event = new(BridgeRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3614,49 +3863,41 @@ func (it *BridgeTokenUnlockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokenUnlockedIterator) Error() error { +func (it *BridgeRunningStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokenUnlockedIterator) Close() error { +func (it *BridgeRunningStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokenUnlocked represents a TokenUnlocked event raised by the Bridge contract. -type BridgeTokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeRunningStatusChanged represents a RunningStatusChanged event raised by the Bridge contract. +type BridgeRunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenUnlocked(address indexed token) -func (_Bridge *BridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_Bridge *BridgeFilterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeRunningStatusChangedIterator, error) { - logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } - return &BridgeTokenUnlockedIterator{contract: _Bridge.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil + return &BridgeRunningStatusChangedIterator{contract: _Bridge.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenUnlocked(address indexed token) -func (_Bridge *BridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_Bridge *BridgeFilterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeRunningStatusChanged) (event.Subscription, error) { - logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } @@ -3666,8 +3907,8 @@ func (_Bridge *BridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokenUnlocked) - if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + event := new(BridgeRunningStatusChanged) + if err := _Bridge.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return err } event.Raw = log @@ -3688,358 +3929,309 @@ func (_Bridge *BridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink cha }), nil } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenUnlocked(address indexed token) -func (_Bridge *BridgeFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokenUnlocked, error) { - event := new(BridgeTokenUnlocked) - if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { +// Solidity: event RunningStatusChanged(bool _status) +func (_Bridge *BridgeFilterer) ParseRunningStatusChanged(log types.Log) (*BridgeRunningStatusChanged, error) { + event := new(BridgeRunningStatusChanged) + if err := _Bridge.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeCounterPartMetaData contains all meta data concerning the BridgeCounterPart contract. -var BridgeCounterPartMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a348533": "counterpartBridge()", - "8f32d59b": "isOwner()", - "8da5cb5b": "owner()", - "715018a6": "renounceOwnership()", - "87b04c55": "setCounterPartBridge(address)", - "f2fde38b": "transferOwnership(address)", - }, - Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36103b5806100576000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f610238565b6100cb610247565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b0316610258565b6001546001600160a01b031681565b61011c610247565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610247565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610260610247565b6102b45760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102bd816102c0565b50565b6001600160a01b03811661030857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103646026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a723058209700efccd1dc9a9722e7e4f58ba958bddb849bf1153d056bd03312d4ff591e6a0029", -} - -// BridgeCounterPartABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeCounterPartMetaData.ABI instead. -var BridgeCounterPartABI = BridgeCounterPartMetaData.ABI - -// BridgeCounterPartBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeCounterPartBinRuntime = `608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f610238565b6100cb610247565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b0316610258565b6001546001600160a01b031681565b61011c610247565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610247565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610260610247565b6102b45760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102bd816102c0565b50565b6001600160a01b03811661030857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103646026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a723058209700efccd1dc9a9722e7e4f58ba958bddb849bf1153d056bd03312d4ff591e6a0029` +// BridgeTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the Bridge contract. +type BridgeTokenDeregisteredIterator struct { + Event *BridgeTokenDeregistered // Event containing the contract specifics and raw log -// BridgeCounterPartFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeCounterPartMetaData.Sigs instead. -var BridgeCounterPartFuncSigs = BridgeCounterPartMetaData.Sigs + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// BridgeCounterPartBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BridgeCounterPartMetaData.Bin instead. -var BridgeCounterPartBin = BridgeCounterPartMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployBridgeCounterPart deploys a new Kaia contract, binding an instance of BridgeCounterPart to it. -func DeployBridgeCounterPart(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeCounterPart, error) { - parsed, err := BridgeCounterPartMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokenDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeCounterPartBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } - return address, tx, &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil } -// BridgeCounterPart is an auto generated Go binding around a Kaia contract. -type BridgeCounterPart struct { - BridgeCounterPartCaller // Read-only binding to the contract - BridgeCounterPartTransactor // Write-only binding to the contract - BridgeCounterPartFilterer // Log filterer for contract events +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokenDeregisteredIterator) Error() error { + return it.fail } -// BridgeCounterPartCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeCounterPartCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokenDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// BridgeCounterPartTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeCounterPartTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeCounterPartFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeCounterPartFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeCounterPartSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeCounterPartSession struct { - Contract *BridgeCounterPart // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeCounterPartCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeCounterPartCallerSession struct { - Contract *BridgeCounterPartCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// BridgeCounterPartTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeCounterPartTransactorSession struct { - Contract *BridgeCounterPartTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeCounterPartRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeCounterPartRaw struct { - Contract *BridgeCounterPart // Generic contract binding to access the raw methods on -} - -// BridgeCounterPartCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeCounterPartCallerRaw struct { - Contract *BridgeCounterPartCaller // Generic read-only contract binding to access the raw methods on +// BridgeTokenDeregistered represents a TokenDeregistered event raised by the Bridge contract. +type BridgeTokenDeregistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// BridgeCounterPartTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeCounterPartTransactorRaw struct { - Contract *BridgeCounterPartTransactor // Generic write-only contract binding to access the raw methods on -} +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// +// Solidity: event TokenDeregistered(address indexed token) +func (_Bridge *BridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenDeregisteredIterator, error) { -// NewBridgeCounterPart creates a new instance of BridgeCounterPart, bound to a specific deployed contract. -func NewBridgeCounterPart(address common.Address, backend bind.ContractBackend) (*BridgeCounterPart, error) { - contract, err := bindBridgeCounterPart(address, backend, backend, backend) - if err != nil { - return nil, err + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil -} -// NewBridgeCounterPartCaller creates a new read-only instance of BridgeCounterPart, bound to a specific deployed contract. -func NewBridgeCounterPartCaller(address common.Address, caller bind.ContractCaller) (*BridgeCounterPartCaller, error) { - contract, err := bindBridgeCounterPart(address, caller, nil, nil) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &BridgeCounterPartCaller{contract: contract}, nil + return &BridgeTokenDeregisteredIterator{contract: _Bridge.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// NewBridgeCounterPartTransactor creates a new write-only instance of BridgeCounterPart, bound to a specific deployed contract. -func NewBridgeCounterPartTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeCounterPartTransactor, error) { - contract, err := bindBridgeCounterPart(address, nil, transactor, nil) - if err != nil { - return nil, err +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// +// Solidity: event TokenDeregistered(address indexed token) +func (_Bridge *BridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenDeregistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &BridgeCounterPartTransactor{contract: contract}, nil -} -// NewBridgeCounterPartFilterer creates a new log filterer instance of BridgeCounterPart, bound to a specific deployed contract. -func NewBridgeCounterPartFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeCounterPartFilterer, error) { - contract, err := bindBridgeCounterPart(address, nil, nil, filterer) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &BridgeCounterPartFilterer{contract: contract}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokenDeregistered) + if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// bindBridgeCounterPart binds a generic wrapper to an already deployed contract. -func bindBridgeCounterPart(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeCounterPartMetaData.GetAbi() - if err != nil { +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// +// Solidity: event TokenDeregistered(address indexed token) +func (_Bridge *BridgeFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokenDeregistered, error) { + event := new(BridgeTokenDeregistered) + if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil + event.Raw = log + return event, nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeCounterPart *BridgeCounterPartRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeCounterPart.Contract.BridgeCounterPartCaller.contract.Call(opts, result, method, params...) -} +// BridgeTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the Bridge contract. +type BridgeTokenLockedIterator struct { + Event *BridgeTokenLocked // Event containing the contract specifics and raw log -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeCounterPart *BridgeCounterPartRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transfer(opts) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeCounterPart *BridgeCounterPartRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transact(opts, method, params...) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokenLockedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeCounterPart *BridgeCounterPartCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeCounterPart.Contract.contract.Call(opts, result, method, params...) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokenLockedIterator) Error() error { + return it.fail } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.contract.Transfer(opts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokenLockedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.contract.Transact(opts, method, params...) +// BridgeTokenLocked represents a TokenLocked event raised by the Bridge contract. +type BridgeTokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function counterpartBridge() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartCaller) CounterpartBridge(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeCounterPart.contract.Call(opts, &out, "counterpartBridge") - if err != nil { - return *new(common.Address), err - } +// Solidity: event TokenLocked(address indexed token) +func (_Bridge *BridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenLockedIterator, error) { - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } - return out0, err + logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenLocked", tokenRule) + if err != nil { + return nil, err + } + return &BridgeTokenLockedIterator{contract: _Bridge.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function counterpartBridge() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartSession) CounterpartBridge() (common.Address, error) { - return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts) -} +// Solidity: event TokenLocked(address indexed token) +func (_Bridge *BridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenLocked, token []common.Address) (event.Subscription, error) { -// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. -// -// Solidity: function counterpartBridge() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartCallerSession) CounterpartBridge() (common.Address, error) { - return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeCounterPart *BridgeCounterPartCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeCounterPart.contract.Call(opts, &out, "isOwner") + logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { - return *new(bool), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokenLocked) + if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeCounterPart *BridgeCounterPartSession) IsOwner() (bool, error) { - return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts) -} - -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeCounterPart *BridgeCounterPartCallerSession) IsOwner() (bool, error) { - return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function owner() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeCounterPart.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err +// Solidity: event TokenLocked(address indexed token) +func (_Bridge *BridgeFilterer) ParseTokenLocked(log types.Log) (*BridgeTokenLocked, error) { + event := new(BridgeTokenLocked) + if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return nil, err } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartSession) Owner() (common.Address, error) { - return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeCounterPart *BridgeCounterPartCallerSession) Owner() (common.Address, error) { - return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeCounterPart *BridgeCounterPartTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeCounterPart.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeCounterPart *BridgeCounterPartSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeCounterPart *BridgeCounterPartTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts) -} - -// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. -// -// Solidity: function setCounterPartBridge(address _bridge) returns() -func (_BridgeCounterPart *BridgeCounterPartTransactor) SetCounterPartBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.contract.Transact(opts, "setCounterPartBridge", _bridge) -} - -// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. -// -// Solidity: function setCounterPartBridge(address _bridge) returns() -func (_BridgeCounterPart *BridgeCounterPartSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge) -} - -// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. -// -// Solidity: function setCounterPartBridge(address _bridge) returns() -func (_BridgeCounterPart *BridgeCounterPartTransactorSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeCounterPart *BridgeCounterPartTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeCounterPart *BridgeCounterPartSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeCounterPart *BridgeCounterPartTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner) + event.Raw = log + return event, nil } -// BridgeCounterPartOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeCounterPart contract. -type BridgeCounterPartOwnershipTransferredIterator struct { - Event *BridgeCounterPartOwnershipTransferred // Event containing the contract specifics and raw log +// BridgeTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the Bridge contract. +type BridgeTokenRegisteredIterator struct { + Event *BridgeTokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4053,7 +4245,7 @@ type BridgeCounterPartOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool { +func (it *BridgeTokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4062,7 +4254,7 @@ func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeCounterPartOwnershipTransferred) + it.Event = new(BridgeTokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4077,7 +4269,7 @@ func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeCounterPartOwnershipTransferred) + it.Event = new(BridgeTokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4093,58 +4285,51 @@ func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeCounterPartOwnershipTransferredIterator) Error() error { +func (it *BridgeTokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeCounterPartOwnershipTransferredIterator) Close() error { +func (it *BridgeTokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeCounterPartOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeCounterPart contract. -type BridgeCounterPartOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTokenRegistered represents a TokenRegistered event raised by the Bridge contract. +type BridgeTokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeCounterPart *BridgeCounterPartFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeCounterPartOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event TokenRegistered(address indexed token) +func (_Bridge *BridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenRegisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeCounterPart.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &BridgeCounterPartOwnershipTransferredIterator{contract: _BridgeCounterPart.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeTokenRegisteredIterator{contract: _Bridge.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeCounterPartOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event TokenRegistered(address indexed token) +func (_Bridge *BridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenRegistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeCounterPart.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } @@ -4154,8 +4339,8 @@ func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchOwnershipTransferred(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeCounterPartOwnershipTransferred) - if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeTokenRegistered) + if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -4176,284 +4361,35 @@ func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchOwnershipTransferred(o }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeCounterPart *BridgeCounterPartFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeCounterPartOwnershipTransferred, error) { - event := new(BridgeCounterPartOwnershipTransferred) - if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_Bridge *BridgeFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokenRegistered, error) { + event := new(BridgeTokenRegistered) + if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeFeeMetaData contains all meta data concerning the BridgeFee contract. -var BridgeFeeMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - }, -} - -// BridgeFeeABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeFeeMetaData.ABI instead. -var BridgeFeeABI = BridgeFeeMetaData.ABI +// BridgeTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the Bridge contract. +type BridgeTokenUnlockedIterator struct { + Event *BridgeTokenUnlocked // Event containing the contract specifics and raw log -// BridgeFeeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeFeeBinRuntime = `` + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// BridgeFeeFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeFeeMetaData.Sigs instead. -var BridgeFeeFuncSigs = BridgeFeeMetaData.Sigs - -// BridgeFee is an auto generated Go binding around a Kaia contract. -type BridgeFee struct { - BridgeFeeCaller // Read-only binding to the contract - BridgeFeeTransactor // Write-only binding to the contract - BridgeFeeFilterer // Log filterer for contract events -} - -// BridgeFeeCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeFeeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeFeeTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeFeeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeFeeFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeFeeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeFeeSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeFeeSession struct { - Contract *BridgeFee // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeFeeCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeFeeCallerSession struct { - Contract *BridgeFeeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// BridgeFeeTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeFeeTransactorSession struct { - Contract *BridgeFeeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// BridgeFeeRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeFeeRaw struct { - Contract *BridgeFee // Generic contract binding to access the raw methods on -} - -// BridgeFeeCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeFeeCallerRaw struct { - Contract *BridgeFeeCaller // Generic read-only contract binding to access the raw methods on -} - -// BridgeFeeTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeFeeTransactorRaw struct { - Contract *BridgeFeeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewBridgeFee creates a new instance of BridgeFee, bound to a specific deployed contract. -func NewBridgeFee(address common.Address, backend bind.ContractBackend) (*BridgeFee, error) { - contract, err := bindBridgeFee(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeFee{BridgeFeeCaller: BridgeFeeCaller{contract: contract}, BridgeFeeTransactor: BridgeFeeTransactor{contract: contract}, BridgeFeeFilterer: BridgeFeeFilterer{contract: contract}}, nil -} - -// NewBridgeFeeCaller creates a new read-only instance of BridgeFee, bound to a specific deployed contract. -func NewBridgeFeeCaller(address common.Address, caller bind.ContractCaller) (*BridgeFeeCaller, error) { - contract, err := bindBridgeFee(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeFeeCaller{contract: contract}, nil -} - -// NewBridgeFeeTransactor creates a new write-only instance of BridgeFee, bound to a specific deployed contract. -func NewBridgeFeeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeFeeTransactor, error) { - contract, err := bindBridgeFee(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeFeeTransactor{contract: contract}, nil -} - -// NewBridgeFeeFilterer creates a new log filterer instance of BridgeFee, bound to a specific deployed contract. -func NewBridgeFeeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFeeFilterer, error) { - contract, err := bindBridgeFee(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeFeeFilterer{contract: contract}, nil -} - -// bindBridgeFee binds a generic wrapper to an already deployed contract. -func bindBridgeFee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeFeeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeFee *BridgeFeeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeFee.Contract.BridgeFeeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeFee *BridgeFeeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeFee *BridgeFeeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeFee *BridgeFeeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeFee.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeFee *BridgeFeeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeFee.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeFee *BridgeFeeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeFee.Contract.contract.Transact(opts, method, params...) -} - -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. -// -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeFee.contract.Call(opts, &out, "feeOfERC20", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. -// -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeFee *BridgeFeeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0) -} - -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. -// -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeFee *BridgeFeeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0) -} - -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _BridgeFee.contract.Call(opts, &out, "feeOfKLAY") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeFee *BridgeFeeSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts) -} - -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeFee *BridgeFeeCallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts) -} - -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeFee.contract.Call(opts, &out, "feeReceiver") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeFee *BridgeFeeSession) FeeReceiver() (common.Address, error) { - return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts) -} - -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeFee *BridgeFeeCallerSession) FeeReceiver() (common.Address, error) { - return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts) -} - -// BridgeFeeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeFee contract. -type BridgeFeeERC20FeeChangedIterator struct { - Event *BridgeFeeERC20FeeChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeFeeERC20FeeChangedIterator) Next() bool { +func (it *BridgeTokenUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4462,7 +4398,7 @@ func (it *BridgeFeeERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeFeeERC20FeeChanged) + it.Event = new(BridgeTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4477,7 +4413,7 @@ func (it *BridgeFeeERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeFeeERC20FeeChanged) + it.Event = new(BridgeTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4493,58 +4429,51 @@ func (it *BridgeFeeERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeFeeERC20FeeChangedIterator) Error() error { +func (it *BridgeTokenUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeFeeERC20FeeChangedIterator) Close() error { +func (it *BridgeTokenUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeFeeERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeFee contract. -type BridgeFeeERC20FeeChanged struct { +// BridgeTokenUnlocked represents a TokenUnlocked event raised by the Bridge contract. +type BridgeTokenUnlocked struct { Token common.Address - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeFeeERC20FeeChangedIterator, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_Bridge *BridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenUnlockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &BridgeFeeERC20FeeChangedIterator{contract: _BridgeFee.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTokenUnlockedIterator{contract: _Bridge.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_Bridge *BridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenUnlocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } @@ -4554,8 +4483,8 @@ func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeFeeERC20FeeChanged) - if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTokenUnlocked) + if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return err } event.Raw = log @@ -4576,161 +4505,365 @@ func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeFeeERC20FeeChanged, error) { - event := new(BridgeFeeERC20FeeChanged) - if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event TokenUnlocked(address indexed token) +func (_Bridge *BridgeFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokenUnlocked, error) { + event := new(BridgeTokenUnlocked) + if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeFeeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeFee contract. -type BridgeFeeFeeReceiverChangedIterator struct { - Event *BridgeFeeFeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeCounterPartMetaData contains all meta data concerning the BridgeCounterPart contract. +var BridgeCounterPartMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"CounterpartBridgeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a348533": "counterpartBridge()", + "8f32d59b": "isOwner()", + "8da5cb5b": "owner()", + "715018a6": "renounceOwnership()", + "87b04c55": "setCounterPartBridge(address)", + "f2fde38b": "transferOwnership(address)", + }, + Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36103e7806100576000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f61026a565b6100cb610279565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b031661028a565b6001546001600160a01b031681565b61011c610279565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610279565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf419181900360200190a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610292610279565b6102e65760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102ef816102f2565b50565b6001600160a01b03811661033a57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a7230582065467af5a771827a4d1a089f7b9a09d833c4b2c1b47b806e815c373d2f48eabc0029", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// BridgeCounterPartABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeCounterPartMetaData.ABI instead. +var BridgeCounterPartABI = BridgeCounterPartMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// BridgeCounterPartBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeCounterPartBinRuntime = `608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f61026a565b6100cb610279565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b031661028a565b6001546001600160a01b031681565b61011c610279565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610279565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf419181900360200190a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610292610279565b6102e65760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102ef816102f2565b50565b6001600160a01b03811661033a57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a7230582065467af5a771827a4d1a089f7b9a09d833c4b2c1b47b806e815c373d2f48eabc0029` -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeFeeFeeReceiverChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeFeeFeeReceiverChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Deprecated: Use BridgeCounterPartMetaData.Sigs instead. +// BridgeCounterPartFuncSigs maps the 4-byte function signature to its string representation. +var BridgeCounterPartFuncSigs = BridgeCounterPartMetaData.Sigs - default: - return false - } +// BridgeCounterPartBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BridgeCounterPartMetaData.Bin instead. +var BridgeCounterPartBin = BridgeCounterPartMetaData.Bin + +// DeployBridgeCounterPart deploys a new Kaia contract, binding an instance of BridgeCounterPart to it. +func DeployBridgeCounterPart(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeCounterPart, error) { + parsed, err := BridgeCounterPartMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeFeeFeeReceiverChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeCounterPartBin), backend) + if err != nil { + return common.Address{}, nil, nil, err } + return address, tx, &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeFeeFeeReceiverChangedIterator) Error() error { - return it.fail +// BridgeCounterPart is an auto generated Go binding around a Kaia contract. +type BridgeCounterPart struct { + BridgeCounterPartCaller // Read-only binding to the contract + BridgeCounterPartTransactor // Write-only binding to the contract + BridgeCounterPartFilterer // Log filterer for contract events } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeFeeFeeReceiverChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeCounterPartCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeCounterPartCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeFeeFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeFee contract. -type BridgeFeeFeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeCounterPartTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeCounterPartTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeFeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } +// BridgeCounterPartFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeCounterPartFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) +// BridgeCounterPartSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeCounterPartSession struct { + Contract *BridgeCounterPart // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeCounterPartCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeCounterPartCallerSession struct { + Contract *BridgeCounterPartCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BridgeCounterPartTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeCounterPartTransactorSession struct { + Contract *BridgeCounterPartTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeCounterPartRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeCounterPartRaw struct { + Contract *BridgeCounterPart // Generic contract binding to access the raw methods on +} + +// BridgeCounterPartCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeCounterPartCallerRaw struct { + Contract *BridgeCounterPartCaller // Generic read-only contract binding to access the raw methods on +} + +// BridgeCounterPartTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeCounterPartTransactorRaw struct { + Contract *BridgeCounterPartTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeCounterPart creates a new instance of BridgeCounterPart, bound to a specific deployed contract. +func NewBridgeCounterPart(address common.Address, backend bind.ContractBackend) (*BridgeCounterPart, error) { + contract, err := bindBridgeCounterPart(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeFeeFeeReceiverChangedIterator{contract: _BridgeFee.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeFee *BridgeFeeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// NewBridgeCounterPartCaller creates a new read-only instance of BridgeCounterPart, bound to a specific deployed contract. +func NewBridgeCounterPartCaller(address common.Address, caller bind.ContractCaller) (*BridgeCounterPartCaller, error) { + contract, err := bindBridgeCounterPart(address, caller, nil, nil) + if err != nil { + return nil, err } + return &BridgeCounterPartCaller{contract: contract}, nil +} - logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) +// NewBridgeCounterPartTransactor creates a new write-only instance of BridgeCounterPart, bound to a specific deployed contract. +func NewBridgeCounterPartTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeCounterPartTransactor, error) { + contract, err := bindBridgeCounterPart(address, nil, transactor, nil) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeFeeFeeReceiverChanged) - if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &BridgeCounterPartTransactor{contract: contract}, nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeFee *BridgeFeeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFeeFeeReceiverChanged, error) { - event := new(BridgeFeeFeeReceiverChanged) - if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// NewBridgeCounterPartFilterer creates a new log filterer instance of BridgeCounterPart, bound to a specific deployed contract. +func NewBridgeCounterPartFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeCounterPartFilterer, error) { + contract, err := bindBridgeCounterPart(address, nil, nil, filterer) + if err != nil { return nil, err } - return event, nil + return &BridgeCounterPartFilterer{contract: contract}, nil } -// BridgeFeeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeFee contract. -type BridgeFeeKLAYFeeChangedIterator struct { - Event *BridgeFeeKLAYFeeChanged // Event containing the contract specifics and raw log +// bindBridgeCounterPart binds a generic wrapper to an already deployed contract. +func bindBridgeCounterPart(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeCounterPartMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeCounterPart *BridgeCounterPartRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeCounterPart.Contract.BridgeCounterPartCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeCounterPart *BridgeCounterPartRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeCounterPart *BridgeCounterPartRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeCounterPart *BridgeCounterPartCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeCounterPart.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.contract.Transact(opts, method, params...) +} + +// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. +// +// Solidity: function counterpartBridge() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartCaller) CounterpartBridge(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeCounterPart.contract.Call(opts, &out, "counterpartBridge") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. +// +// Solidity: function counterpartBridge() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartSession) CounterpartBridge() (common.Address, error) { + return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts) +} + +// CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533. +// +// Solidity: function counterpartBridge() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartCallerSession) CounterpartBridge() (common.Address, error) { + return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeCounterPart *BridgeCounterPartCaller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeCounterPart.contract.Call(opts, &out, "isOwner") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeCounterPart *BridgeCounterPartSession) IsOwner() (bool, error) { + return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeCounterPart *BridgeCounterPartCallerSession) IsOwner() (bool, error) { + return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeCounterPart.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartSession) Owner() (common.Address, error) { + return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeCounterPart *BridgeCounterPartCallerSession) Owner() (common.Address, error) { + return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeCounterPart *BridgeCounterPartTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeCounterPart.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeCounterPart *BridgeCounterPartSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeCounterPart *BridgeCounterPartTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts) +} + +// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. +// +// Solidity: function setCounterPartBridge(address _bridge) returns() +func (_BridgeCounterPart *BridgeCounterPartTransactor) SetCounterPartBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.contract.Transact(opts, "setCounterPartBridge", _bridge) +} + +// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. +// +// Solidity: function setCounterPartBridge(address _bridge) returns() +func (_BridgeCounterPart *BridgeCounterPartSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge) +} + +// SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55. +// +// Solidity: function setCounterPartBridge(address _bridge) returns() +func (_BridgeCounterPart *BridgeCounterPartTransactorSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeCounterPart *BridgeCounterPartTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeCounterPart *BridgeCounterPartSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeCounterPart *BridgeCounterPartTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner) +} + +// BridgeCounterPartCounterpartBridgeChangedIterator is returned from FilterCounterpartBridgeChanged and is used to iterate over the raw logs and unpacked data for CounterpartBridgeChanged events raised by the BridgeCounterPart contract. +type BridgeCounterPartCounterpartBridgeChangedIterator struct { + Event *BridgeCounterPartCounterpartBridgeChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -4744,7 +4877,7 @@ type BridgeFeeKLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool { +func (it *BridgeCounterPartCounterpartBridgeChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -4753,7 +4886,7 @@ func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeFeeKLAYFeeChanged) + it.Event = new(BridgeCounterPartCounterpartBridgeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4768,7 +4901,7 @@ func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeFeeKLAYFeeChanged) + it.Event = new(BridgeCounterPartCounterpartBridgeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -4784,49 +4917,41 @@ func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeFeeKLAYFeeChangedIterator) Error() error { +func (it *BridgeCounterPartCounterpartBridgeChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeFeeKLAYFeeChangedIterator) Close() error { +func (it *BridgeCounterPartCounterpartBridgeChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeFeeKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeFee contract. -type BridgeFeeKLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeCounterPartCounterpartBridgeChanged represents a CounterpartBridgeChanged event raised by the BridgeCounterPart contract. +type BridgeCounterPartCounterpartBridgeChanged struct { + Bridge common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterCounterpartBridgeChanged is a free log retrieval operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeFeeKLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_BridgeCounterPart *BridgeCounterPartFilterer) FilterCounterpartBridgeChanged(opts *bind.FilterOpts) (*BridgeCounterPartCounterpartBridgeChangedIterator, error) { - logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeCounterPart.contract.FilterLogs(opts, "CounterpartBridgeChanged") if err != nil { return nil, err } - return &BridgeFeeKLAYFeeChangedIterator{contract: _BridgeFee.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeCounterPartCounterpartBridgeChangedIterator{contract: _BridgeCounterPart.contract, event: "CounterpartBridgeChanged", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchCounterpartBridgeChanged is a free log subscription operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchCounterpartBridgeChanged(opts *bind.WatchOpts, sink chan<- *BridgeCounterPartCounterpartBridgeChanged) (event.Subscription, error) { - logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeCounterPart.contract.WatchLogs(opts, "CounterpartBridgeChanged") if err != nil { return nil, err } @@ -4836,8 +4961,8 @@ func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeFeeKLAYFeeChanged) - if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeCounterPartCounterpartBridgeChanged) + if err := _BridgeCounterPart.contract.UnpackLog(event, "CounterpartBridgeChanged", log); err != nil { return err } event.Raw = log @@ -4858,156 +4983,290 @@ func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, s }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseCounterpartBridgeChanged is a log parse operation binding the contract event 0x03461fa9b770412ae6f0763db8338a5ae7b6db78a6150d16d170c23bd838cf41. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeFee *BridgeFeeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeFeeKLAYFeeChanged, error) { - event := new(BridgeFeeKLAYFeeChanged) - if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event CounterpartBridgeChanged(address _bridge) +func (_BridgeCounterPart *BridgeCounterPartFilterer) ParseCounterpartBridgeChanged(log types.Log) (*BridgeCounterPartCounterpartBridgeChanged, error) { + event := new(BridgeCounterPartCounterpartBridgeChanged) + if err := _BridgeCounterPart.contract.UnpackLog(event, "CounterpartBridgeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeHandledRequestsMetaData contains all meta data concerning the BridgeHandledRequests contract. -var BridgeHandledRequestsMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", - Sigs: map[string]string{ - "8a75eee2": "handledRequestTx(bytes32)", - }, - Bin: "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029", -} - -// BridgeHandledRequestsABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeHandledRequestsMetaData.ABI instead. -var BridgeHandledRequestsABI = BridgeHandledRequestsMetaData.ABI +// BridgeCounterPartOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeCounterPart contract. +type BridgeCounterPartOwnershipTransferredIterator struct { + Event *BridgeCounterPartOwnershipTransferred // Event containing the contract specifics and raw log -// BridgeHandledRequestsBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029` + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeHandledRequestsMetaData.Sigs instead. -var BridgeHandledRequestsFuncSigs = BridgeHandledRequestsMetaData.Sigs + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// BridgeHandledRequestsBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BridgeHandledRequestsMetaData.Bin instead. -var BridgeHandledRequestsBin = BridgeHandledRequestsMetaData.Bin +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeCounterPartOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// DeployBridgeHandledRequests deploys a new Kaia contract, binding an instance of BridgeHandledRequests to it. -func DeployBridgeHandledRequests(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeHandledRequests, error) { - parsed, err := BridgeHandledRequestsMetaData.GetAbi() + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeCounterPartOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeCounterPartOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeCounterPartOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeCounterPartOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeCounterPart contract. +type BridgeCounterPartOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeCounterPart *BridgeCounterPartFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeCounterPartOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _BridgeCounterPart.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return common.Address{}, nil, nil, err + return nil, err } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + return &BridgeCounterPartOwnershipTransferredIterator{contract: _BridgeCounterPart.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeCounterPartOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeHandledRequestsBin), backend) + logs, sub, err := _BridgeCounterPart.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return common.Address{}, nil, nil, err + return nil, err } - return address, tx, &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeCounterPartOwnershipTransferred) + if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// BridgeHandledRequests is an auto generated Go binding around a Kaia contract. -type BridgeHandledRequests struct { - BridgeHandledRequestsCaller // Read-only binding to the contract - BridgeHandledRequestsTransactor // Write-only binding to the contract - BridgeHandledRequestsFilterer // Log filterer for contract events +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeCounterPart *BridgeCounterPartFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeCounterPartOwnershipTransferred, error) { + event := new(BridgeCounterPartOwnershipTransferred) + if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BridgeHandledRequestsCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeHandledRequestsCaller struct { +// BridgeFeeMetaData contains all meta data concerning the BridgeFee contract. +var BridgeFeeMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + }, +} + +// BridgeFeeABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeFeeMetaData.ABI instead. +var BridgeFeeABI = BridgeFeeMetaData.ABI + +// BridgeFeeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeFeeBinRuntime = `` + +// Deprecated: Use BridgeFeeMetaData.Sigs instead. +// BridgeFeeFuncSigs maps the 4-byte function signature to its string representation. +var BridgeFeeFuncSigs = BridgeFeeMetaData.Sigs + +// BridgeFee is an auto generated Go binding around a Kaia contract. +type BridgeFee struct { + BridgeFeeCaller // Read-only binding to the contract + BridgeFeeTransactor // Write-only binding to the contract + BridgeFeeFilterer // Log filterer for contract events +} + +// BridgeFeeCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeFeeCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeHandledRequestsTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeHandledRequestsTransactor struct { +// BridgeFeeTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeFeeTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeHandledRequestsFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeHandledRequestsFilterer struct { +// BridgeFeeFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeFeeFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeHandledRequestsSession is an auto generated Go binding around a Kaia contract, +// BridgeFeeSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type BridgeHandledRequestsSession struct { - Contract *BridgeHandledRequests // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeFeeSession struct { + Contract *BridgeFee // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeHandledRequestsCallerSession is an auto generated read-only Go binding around a Kaia contract, +// BridgeFeeCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type BridgeHandledRequestsCallerSession struct { - Contract *BridgeHandledRequestsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type BridgeFeeCallerSession struct { + Contract *BridgeFeeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BridgeHandledRequestsTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// BridgeFeeTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type BridgeHandledRequestsTransactorSession struct { - Contract *BridgeHandledRequestsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeFeeTransactorSession struct { + Contract *BridgeFeeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeHandledRequestsRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeHandledRequestsRaw struct { - Contract *BridgeHandledRequests // Generic contract binding to access the raw methods on +// BridgeFeeRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeFeeRaw struct { + Contract *BridgeFee // Generic contract binding to access the raw methods on } -// BridgeHandledRequestsCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeHandledRequestsCallerRaw struct { - Contract *BridgeHandledRequestsCaller // Generic read-only contract binding to access the raw methods on +// BridgeFeeCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeFeeCallerRaw struct { + Contract *BridgeFeeCaller // Generic read-only contract binding to access the raw methods on } -// BridgeHandledRequestsTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeHandledRequestsTransactorRaw struct { - Contract *BridgeHandledRequestsTransactor // Generic write-only contract binding to access the raw methods on +// BridgeFeeTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeFeeTransactorRaw struct { + Contract *BridgeFeeTransactor // Generic write-only contract binding to access the raw methods on } -// NewBridgeHandledRequests creates a new instance of BridgeHandledRequests, bound to a specific deployed contract. -func NewBridgeHandledRequests(address common.Address, backend bind.ContractBackend) (*BridgeHandledRequests, error) { - contract, err := bindBridgeHandledRequests(address, backend, backend, backend) +// NewBridgeFee creates a new instance of BridgeFee, bound to a specific deployed contract. +func NewBridgeFee(address common.Address, backend bind.ContractBackend) (*BridgeFee, error) { + contract, err := bindBridgeFee(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil + return &BridgeFee{BridgeFeeCaller: BridgeFeeCaller{contract: contract}, BridgeFeeTransactor: BridgeFeeTransactor{contract: contract}, BridgeFeeFilterer: BridgeFeeFilterer{contract: contract}}, nil } -// NewBridgeHandledRequestsCaller creates a new read-only instance of BridgeHandledRequests, bound to a specific deployed contract. -func NewBridgeHandledRequestsCaller(address common.Address, caller bind.ContractCaller) (*BridgeHandledRequestsCaller, error) { - contract, err := bindBridgeHandledRequests(address, caller, nil, nil) +// NewBridgeFeeCaller creates a new read-only instance of BridgeFee, bound to a specific deployed contract. +func NewBridgeFeeCaller(address common.Address, caller bind.ContractCaller) (*BridgeFeeCaller, error) { + contract, err := bindBridgeFee(address, caller, nil, nil) if err != nil { return nil, err } - return &BridgeHandledRequestsCaller{contract: contract}, nil + return &BridgeFeeCaller{contract: contract}, nil } -// NewBridgeHandledRequestsTransactor creates a new write-only instance of BridgeHandledRequests, bound to a specific deployed contract. -func NewBridgeHandledRequestsTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeHandledRequestsTransactor, error) { - contract, err := bindBridgeHandledRequests(address, nil, transactor, nil) +// NewBridgeFeeTransactor creates a new write-only instance of BridgeFee, bound to a specific deployed contract. +func NewBridgeFeeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeFeeTransactor, error) { + contract, err := bindBridgeFee(address, nil, transactor, nil) if err != nil { return nil, err } - return &BridgeHandledRequestsTransactor{contract: contract}, nil + return &BridgeFeeTransactor{contract: contract}, nil } -// NewBridgeHandledRequestsFilterer creates a new log filterer instance of BridgeHandledRequests, bound to a specific deployed contract. -func NewBridgeHandledRequestsFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeHandledRequestsFilterer, error) { - contract, err := bindBridgeHandledRequests(address, nil, nil, filterer) +// NewBridgeFeeFilterer creates a new log filterer instance of BridgeFee, bound to a specific deployed contract. +func NewBridgeFeeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFeeFilterer, error) { + contract, err := bindBridgeFee(address, nil, nil, filterer) if err != nil { return nil, err } - return &BridgeHandledRequestsFilterer{contract: contract}, nil + return &BridgeFeeFilterer{contract: contract}, nil } -// bindBridgeHandledRequests binds a generic wrapper to an already deployed contract. -func bindBridgeHandledRequests(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeHandledRequestsMetaData.GetAbi() +// bindBridgeFee binds a generic wrapper to an already deployed contract. +func bindBridgeFee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeFeeMetaData.GetAbi() if err != nil { return nil, err } @@ -5018,910 +5277,918 @@ func bindBridgeHandledRequests(address common.Address, caller bind.ContractCalle // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeHandledRequests.Contract.BridgeHandledRequestsCaller.contract.Call(opts, result, method, params...) +func (_BridgeFee *BridgeFeeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeFee.Contract.BridgeFeeCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transfer(opts) +func (_BridgeFee *BridgeFeeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transact(opts, method, params...) +func (_BridgeFee *BridgeFeeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeHandledRequests *BridgeHandledRequestsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeHandledRequests.Contract.contract.Call(opts, result, method, params...) +func (_BridgeFee *BridgeFeeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeFee.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeHandledRequests.Contract.contract.Transfer(opts) +func (_BridgeFee *BridgeFeeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeFee.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeHandledRequests.Contract.contract.Transact(opts, method, params...) +func (_BridgeFee *BridgeFeeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeFee.Contract.contract.Transact(opts, method, params...) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} - err := _BridgeHandledRequests.contract.Call(opts, &out, "handledRequestTx", arg0) + err := _BridgeFee.contract.Call(opts, &out, "feeOfERC20", arg0) + if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeHandledRequests *BridgeHandledRequestsSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0) +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeFee *BridgeFeeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeHandledRequests *BridgeHandledRequestsCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0) +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeFee *BridgeFeeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0) } -// BridgeOperatorMetaData contains all meta data concerning the BridgeOperator contract. -var BridgeOperatorMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "b2c01030": "getOperatorList()", - "8f32d59b": "isOwner()", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "3682a450": "registerOperator(address)", - "715018a6": "renounceOwnership()", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "f2fde38b": "transferOwnership(address)", - }, -} +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeFee.contract.Call(opts, &out, "feeOfKLAY") -// BridgeOperatorABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeOperatorMetaData.ABI instead. -var BridgeOperatorABI = BridgeOperatorMetaData.ABI + if err != nil { + return *new(*big.Int), err + } -// BridgeOperatorBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeOperatorBinRuntime = `` + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeOperatorMetaData.Sigs instead. -var BridgeOperatorFuncSigs = BridgeOperatorMetaData.Sigs + return out0, err -// BridgeOperator is an auto generated Go binding around a Kaia contract. -type BridgeOperator struct { - BridgeOperatorCaller // Read-only binding to the contract - BridgeOperatorTransactor // Write-only binding to the contract - BridgeOperatorFilterer // Log filterer for contract events } -// BridgeOperatorCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeOperatorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeFee *BridgeFeeSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts) } -// BridgeOperatorTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeOperatorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeFee *BridgeFeeCallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts) } -// BridgeOperatorFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeOperatorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeFee.contract.Call(opts, &out, "feeReceiver") -// BridgeOperatorSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeOperatorSession struct { - Contract *BridgeOperator // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new(common.Address), err + } -// BridgeOperatorCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeOperatorCallerSession struct { - Contract *BridgeOperatorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// BridgeOperatorTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeOperatorTransactorSession struct { - Contract *BridgeOperatorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeOperatorRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeOperatorRaw struct { - Contract *BridgeOperator // Generic contract binding to access the raw methods on +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeFee *BridgeFeeSession) FeeReceiver() (common.Address, error) { + return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts) } -// BridgeOperatorCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeOperatorCallerRaw struct { - Contract *BridgeOperatorCaller // Generic read-only contract binding to access the raw methods on +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeFee *BridgeFeeCallerSession) FeeReceiver() (common.Address, error) { + return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts) } -// BridgeOperatorTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeOperatorTransactorRaw struct { - Contract *BridgeOperatorTransactor // Generic write-only contract binding to access the raw methods on +// BridgeFeeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeFee contract. +type BridgeFeeERC20FeeChangedIterator struct { + Event *BridgeFeeERC20FeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// NewBridgeOperator creates a new instance of BridgeOperator, bound to a specific deployed contract. -func NewBridgeOperator(address common.Address, backend bind.ContractBackend) (*BridgeOperator, error) { - contract, err := bindBridgeOperator(address, backend, backend, backend) - if err != nil { - return nil, err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeFeeERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } - return &BridgeOperator{BridgeOperatorCaller: BridgeOperatorCaller{contract: contract}, BridgeOperatorTransactor: BridgeOperatorTransactor{contract: contract}, BridgeOperatorFilterer: BridgeOperatorFilterer{contract: contract}}, nil -} + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeFeeERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// NewBridgeOperatorCaller creates a new read-only instance of BridgeOperator, bound to a specific deployed contract. -func NewBridgeOperatorCaller(address common.Address, caller bind.ContractCaller) (*BridgeOperatorCaller, error) { - contract, err := bindBridgeOperator(address, caller, nil, nil) - if err != nil { - return nil, err + default: + return false + } } - return &BridgeOperatorCaller{contract: contract}, nil -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeFeeERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// NewBridgeOperatorTransactor creates a new write-only instance of BridgeOperator, bound to a specific deployed contract. -func NewBridgeOperatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeOperatorTransactor, error) { - contract, err := bindBridgeOperator(address, nil, transactor, nil) - if err != nil { - return nil, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } - return &BridgeOperatorTransactor{contract: contract}, nil } -// NewBridgeOperatorFilterer creates a new log filterer instance of BridgeOperator, bound to a specific deployed contract. -func NewBridgeOperatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeOperatorFilterer, error) { - contract, err := bindBridgeOperator(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeOperatorFilterer{contract: contract}, nil +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeFeeERC20FeeChangedIterator) Error() error { + return it.fail } -// bindBridgeOperator binds a generic wrapper to an already deployed contract. -func bindBridgeOperator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeOperatorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeFeeERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeOperator *BridgeOperatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeOperator.Contract.BridgeOperatorCaller.contract.Call(opts, result, method, params...) +// BridgeFeeERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeFee contract. +type BridgeFeeERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeOperator *BridgeOperatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transfer(opts) -} +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeFeeERC20FeeChangedIterator, error) { -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeOperator *BridgeOperatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transact(opts, method, params...) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeOperator *BridgeOperatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeOperator.Contract.contract.Call(opts, result, method, params...) + logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeFeeERC20FeeChangedIterator{contract: _BridgeFee.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeOperator *BridgeOperatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeOperator.Contract.contract.Transfer(opts) -} +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeOperator *BridgeOperatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeOperator.Contract.contract.Transact(opts, method, params...) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. -// -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "MAX_OPERATOR") + logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { - return *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeFeeERC20FeeChanged) + if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeOperator *BridgeOperatorSession) MAXOPERATOR() (uint64, error) { - return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeFeeERC20FeeChanged, error) { + event := new(BridgeFeeERC20FeeChanged) + if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. -// -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeOperator *BridgeOperatorCallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts) +// BridgeFeeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeFee contract. +type BridgeFeeFeeReceiverChangedIterator struct { + Event *BridgeFeeFeeReceiverChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. -// -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - if err != nil { - return *new(bool), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeFeeFeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeFeeFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeFeeFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. -// -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeOperator *BridgeOperatorSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeFeeFeeReceiverChangedIterator) Error() error { + return it.fail } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. -// -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeOperator *BridgeOperatorCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeFeeFeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. -// -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "configurationNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// BridgeFeeFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeFee contract. +type BridgeFeeFeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeOperator *BridgeOperatorSession) ConfigurationNonce() (uint64, error) { - return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeFeeReceiverChangedIterator, error) { -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. -// -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeOperator *BridgeOperatorCallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. -// -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "getOperatorList") + logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { - return *new([]common.Address), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err + return &BridgeFeeFeeReceiverChangedIterator{contract: _BridgeFee.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeOperator *BridgeOperatorSession) GetOperatorList() ([]common.Address, error) { - return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeFee *BridgeFeeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. -// -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeOperator *BridgeOperatorCallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "isOwner") + logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { - return *new(bool), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeFeeFeeReceiverChanged) + if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeOperator *BridgeOperatorSession) IsOwner() (bool, error) { - return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeFee *BridgeFeeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFeeFeeReceiverChanged, error) { + event := new(BridgeFeeFeeReceiverChanged) + if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeOperator *BridgeOperatorCallerSession) IsOwner() (bool, error) { - return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts) +// BridgeFeeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeFee contract. +type BridgeFeeKLAYFeeChangedIterator struct { + Event *BridgeFeeKLAYFeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeFeeKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeFeeKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeOperator *BridgeOperatorSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeFeeKLAYFeeChangedIterator) Error() error { + return it.fail } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeOperator *BridgeOperatorCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeFeeKLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// BridgeFeeKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeFee contract. +type BridgeFeeKLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeOperator *BridgeOperatorSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeFeeKLAYFeeChangedIterator, error) { -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeOperator *BridgeOperatorCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "operators", arg0) + logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { - return *new(bool), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + return &BridgeFeeKLAYFeeChangedIterator{contract: _BridgeFee.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeOperator *BridgeOperatorSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeOperator *BridgeOperatorCallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeOperator.contract.Call(opts, &out, "owner") + logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeFeeKLAYFeeChanged) + if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function owner() view returns(address) -func (_BridgeOperator *BridgeOperatorSession) Owner() (common.Address, error) { - return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeFee *BridgeFeeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeFeeKLAYFeeChanged, error) { + event := new(BridgeFeeKLAYFeeChanged) + if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeOperator *BridgeOperatorCallerSession) Owner() (common.Address, error) { - return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts) +// BridgeHandledRequestsMetaData contains all meta data concerning the BridgeHandledRequests contract. +var BridgeHandledRequestsMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", + Sigs: map[string]string{ + "8a75eee2": "handledRequestTx(bytes32)", + }, + Bin: "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029", } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.contract.Transact(opts, "deregisterOperator", _operator) -} +// BridgeHandledRequestsABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeHandledRequestsMetaData.ABI instead. +var BridgeHandledRequestsABI = BridgeHandledRequestsMetaData.ABI -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator) -} +// BridgeHandledRequestsBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029` -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator) -} +// Deprecated: Use BridgeHandledRequestsMetaData.Sigs instead. +// BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation. +var BridgeHandledRequestsFuncSigs = BridgeHandledRequestsMetaData.Sigs -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.contract.Transact(opts, "registerOperator", _operator) -} +// BridgeHandledRequestsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BridgeHandledRequestsMetaData.Bin instead. +var BridgeHandledRequestsBin = BridgeHandledRequestsMetaData.Bin -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator) -} +// DeployBridgeHandledRequests deploys a new Kaia contract, binding an instance of BridgeHandledRequests to it. +func DeployBridgeHandledRequests(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeHandledRequests, error) { + parsed, err := BridgeHandledRequestsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeOperator *BridgeOperatorTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeHandledRequestsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeOperator *BridgeOperatorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeOperator.contract.Transact(opts, "renounceOwnership") +// BridgeHandledRequests is an auto generated Go binding around a Kaia contract. +type BridgeHandledRequests struct { + BridgeHandledRequestsCaller // Read-only binding to the contract + BridgeHandledRequestsTransactor // Write-only binding to the contract + BridgeHandledRequestsFilterer // Log filterer for contract events } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeOperator *BridgeOperatorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts) +// BridgeHandledRequestsCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeHandledRequestsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeOperator *BridgeOperatorTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts) +// BridgeHandledRequestsTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeHandledRequestsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeOperator *BridgeOperatorTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeOperator.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) +// BridgeHandledRequestsFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeHandledRequestsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeOperator *BridgeOperatorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold) +// BridgeHandledRequestsSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeHandledRequestsSession struct { + Contract *BridgeHandledRequests // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeOperator *BridgeOperatorTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold) +// BridgeHandledRequestsCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeHandledRequestsCallerSession struct { + Contract *BridgeHandledRequestsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeOperator *BridgeOperatorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeOperator.contract.Transact(opts, "transferOwnership", newOwner) +// BridgeHandledRequestsTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeHandledRequestsTransactorSession struct { + Contract *BridgeHandledRequestsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeOperator *BridgeOperatorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner) +// BridgeHandledRequestsRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeHandledRequestsRaw struct { + Contract *BridgeHandledRequests // Generic contract binding to access the raw methods on } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeOperator *BridgeOperatorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner) +// BridgeHandledRequestsCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeHandledRequestsCallerRaw struct { + Contract *BridgeHandledRequestsCaller // Generic read-only contract binding to access the raw methods on } -// BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract. -type BridgeOperatorOwnershipTransferredIterator struct { - Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeHandledRequestsTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeHandledRequestsTransactorRaw struct { + Contract *BridgeHandledRequestsTransactor // Generic write-only contract binding to access the raw methods on } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// NewBridgeHandledRequests creates a new instance of BridgeHandledRequests, bound to a specific deployed contract. +func NewBridgeHandledRequests(address common.Address, backend bind.ContractBackend) (*BridgeHandledRequests, error) { + contract, err := bindBridgeHandledRequests(address, backend, backend, backend) + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeOperatorOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil +} - default: - return false - } +// NewBridgeHandledRequestsCaller creates a new read-only instance of BridgeHandledRequests, bound to a specific deployed contract. +func NewBridgeHandledRequestsCaller(address common.Address, caller bind.ContractCaller) (*BridgeHandledRequestsCaller, error) { + contract, err := bindBridgeHandledRequests(address, caller, nil, nil) + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeOperatorOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &BridgeHandledRequestsCaller{contract: contract}, nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// NewBridgeHandledRequestsTransactor creates a new write-only instance of BridgeHandledRequests, bound to a specific deployed contract. +func NewBridgeHandledRequestsTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeHandledRequestsTransactor, error) { + contract, err := bindBridgeHandledRequests(address, nil, transactor, nil) + if err != nil { + return nil, err } + return &BridgeHandledRequestsTransactor{contract: contract}, nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeOperatorOwnershipTransferredIterator) Error() error { - return it.fail +// NewBridgeHandledRequestsFilterer creates a new log filterer instance of BridgeHandledRequests, bound to a specific deployed contract. +func NewBridgeHandledRequestsFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeHandledRequestsFilterer, error) { + contract, err := bindBridgeHandledRequests(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeHandledRequestsFilterer{contract: contract}, nil } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeOperatorOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// bindBridgeHandledRequests binds a generic wrapper to an already deployed contract. +func bindBridgeHandledRequests(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeHandledRequestsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract. -type BridgeOperatorOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeHandledRequests.Contract.BridgeHandledRequestsCaller.contract.Call(opts, result, method, params...) } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transfer(opts) +} - logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transact(opts, method, params...) } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeHandledRequests *BridgeHandledRequestsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeHandledRequests.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeHandledRequests.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeHandledRequests.Contract.contract.Transact(opts, method, params...) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeHandledRequests.contract.Call(opts, &out, "handledRequestTx", arg0) - logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeOperatorOwnershipTransferred) - if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) { - event := new(BridgeOperatorOwnershipTransferred) - if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeHandledRequests *BridgeHandledRequestsSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0) } -// BridgeTokensMetaData contains all meta data concerning the BridgeTokens contract. -var BridgeTokensMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeHandledRequests *BridgeHandledRequestsCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0) +} + +// BridgeOperatorMetaData contains all meta data concerning the BridgeOperator contract. +var BridgeOperatorMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", Sigs: map[string]string{ - "bab2af1d": "deregisterToken(address)", - "ea21eade": "getRegisteredTokenList()", - "48a18a6a": "indexOfTokens(address)", + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "b2c01030": "getOperatorList()", "8f32d59b": "isOwner()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", "8da5cb5b": "owner()", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", + "3682a450": "registerOperator(address)", "715018a6": "renounceOwnership()", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", }, - Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610c40806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820a230ec0b1de1519b1f100cf78e103a782ca3aa49eeeb30d44b3e3ad2fa9ba4eb0029", } -// BridgeTokensABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTokensMetaData.ABI instead. -var BridgeTokensABI = BridgeTokensMetaData.ABI - -// BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820a230ec0b1de1519b1f100cf78e103a782ca3aa49eeeb30d44b3e3ad2fa9ba4eb0029` - -// BridgeTokensFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTokensMetaData.Sigs instead. -var BridgeTokensFuncSigs = BridgeTokensMetaData.Sigs - -// BridgeTokensBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BridgeTokensMetaData.Bin instead. -var BridgeTokensBin = BridgeTokensMetaData.Bin +// BridgeOperatorABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeOperatorMetaData.ABI instead. +var BridgeOperatorABI = BridgeOperatorMetaData.ABI -// DeployBridgeTokens deploys a new Kaia contract, binding an instance of BridgeTokens to it. -func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) { - parsed, err := BridgeTokensMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } +// BridgeOperatorBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeOperatorBinRuntime = `` - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeTokensBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil -} +// Deprecated: Use BridgeOperatorMetaData.Sigs instead. +// BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation. +var BridgeOperatorFuncSigs = BridgeOperatorMetaData.Sigs -// BridgeTokens is an auto generated Go binding around a Kaia contract. -type BridgeTokens struct { - BridgeTokensCaller // Read-only binding to the contract - BridgeTokensTransactor // Write-only binding to the contract - BridgeTokensFilterer // Log filterer for contract events +// BridgeOperator is an auto generated Go binding around a Kaia contract. +type BridgeOperator struct { + BridgeOperatorCaller // Read-only binding to the contract + BridgeOperatorTransactor // Write-only binding to the contract + BridgeOperatorFilterer // Log filterer for contract events } -// BridgeTokensCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTokensCaller struct { +// BridgeOperatorCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeOperatorCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTokensTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTokensTransactor struct { +// BridgeOperatorTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeOperatorTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTokensFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTokensFilterer struct { +// BridgeOperatorFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeOperatorFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTokensSession is an auto generated Go binding around a Kaia contract, +// BridgeOperatorSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type BridgeTokensSession struct { - Contract *BridgeTokens // Generic contract binding to set the session for +type BridgeOperatorSession struct { + Contract *BridgeOperator // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTokensCallerSession is an auto generated read-only Go binding around a Kaia contract, +// BridgeOperatorCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type BridgeTokensCallerSession struct { - Contract *BridgeTokensCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type BridgeOperatorCallerSession struct { + Contract *BridgeOperatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BridgeTokensTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// BridgeOperatorTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type BridgeTokensTransactorSession struct { - Contract *BridgeTokensTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeOperatorTransactorSession struct { + Contract *BridgeOperatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTokensRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTokensRaw struct { - Contract *BridgeTokens // Generic contract binding to access the raw methods on +// BridgeOperatorRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeOperatorRaw struct { + Contract *BridgeOperator // Generic contract binding to access the raw methods on } -// BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTokensCallerRaw struct { - Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on +// BridgeOperatorCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeOperatorCallerRaw struct { + Contract *BridgeOperatorCaller // Generic read-only contract binding to access the raw methods on } -// BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTokensTransactorRaw struct { - Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on +// BridgeOperatorTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeOperatorTransactorRaw struct { + Contract *BridgeOperatorTransactor // Generic write-only contract binding to access the raw methods on } -// NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) { - contract, err := bindBridgeTokens(address, backend, backend, backend) +// NewBridgeOperator creates a new instance of BridgeOperator, bound to a specific deployed contract. +func NewBridgeOperator(address common.Address, backend bind.ContractBackend) (*BridgeOperator, error) { + contract, err := bindBridgeOperator(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil + return &BridgeOperator{BridgeOperatorCaller: BridgeOperatorCaller{contract: contract}, BridgeOperatorTransactor: BridgeOperatorTransactor{contract: contract}, BridgeOperatorFilterer: BridgeOperatorFilterer{contract: contract}}, nil } -// NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) { - contract, err := bindBridgeTokens(address, caller, nil, nil) - if err != nil { +// NewBridgeOperatorCaller creates a new read-only instance of BridgeOperator, bound to a specific deployed contract. +func NewBridgeOperatorCaller(address common.Address, caller bind.ContractCaller) (*BridgeOperatorCaller, error) { + contract, err := bindBridgeOperator(address, caller, nil, nil) + if err != nil { return nil, err } - return &BridgeTokensCaller{contract: contract}, nil + return &BridgeOperatorCaller{contract: contract}, nil } -// NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) { - contract, err := bindBridgeTokens(address, nil, transactor, nil) +// NewBridgeOperatorTransactor creates a new write-only instance of BridgeOperator, bound to a specific deployed contract. +func NewBridgeOperatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeOperatorTransactor, error) { + contract, err := bindBridgeOperator(address, nil, transactor, nil) if err != nil { return nil, err } - return &BridgeTokensTransactor{contract: contract}, nil + return &BridgeOperatorTransactor{contract: contract}, nil } -// NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) { - contract, err := bindBridgeTokens(address, nil, nil, filterer) +// NewBridgeOperatorFilterer creates a new log filterer instance of BridgeOperator, bound to a specific deployed contract. +func NewBridgeOperatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeOperatorFilterer, error) { + contract, err := bindBridgeOperator(address, nil, nil, filterer) if err != nil { return nil, err } - return &BridgeTokensFilterer{contract: contract}, nil + return &BridgeOperatorFilterer{contract: contract}, nil } -// bindBridgeTokens binds a generic wrapper to an already deployed contract. -func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTokensMetaData.GetAbi() +// bindBridgeOperator binds a generic wrapper to an already deployed contract. +func bindBridgeOperator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeOperatorMetaData.GetAbi() if err != nil { return nil, err } @@ -5932,191 +6199,202 @@ func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transa // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...) +func (_BridgeOperator *BridgeOperatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeOperator.Contract.BridgeOperatorCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts) +func (_BridgeOperator *BridgeOperatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...) +func (_BridgeOperator *BridgeOperatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTokens.Contract.contract.Call(opts, result, method, params...) +func (_BridgeOperator *BridgeOperatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeOperator.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.Contract.contract.Transfer(opts) +func (_BridgeOperator *BridgeOperatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeOperator.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTokens.Contract.contract.Transact(opts, method, params...) +func (_BridgeOperator *BridgeOperatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeOperator.Contract.contract.Transact(opts, method, params...) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "getRegisteredTokenList") + err := _BridgeOperator.contract.Call(opts, &out, "MAX_OPERATOR") + if err != nil { - return *new([]common.Address), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeOperator *BridgeOperatorSession) MAXOPERATOR() (uint64, error) { + return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeOperator *BridgeOperatorCallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "indexOfTokens", arg0) + err := _BridgeOperator.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeOperator *BridgeOperatorSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeOperator *BridgeOperatorCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) { +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "isOwner") + err := _BridgeOperator.contract.Call(opts, &out, "configurationNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) { - return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeOperator *BridgeOperatorSession) ConfigurationNonce() (uint64, error) { + return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) { - return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeOperator *BridgeOperatorCallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "lockedTokens", arg0) + err := _BridgeOperator.contract.Call(opts, &out, "getOperatorList") + if err != nil { - return *new(bool), err + return *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeOperator *BridgeOperatorSession) GetOperatorList() ([]common.Address, error) { + return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeOperator *BridgeOperatorCallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function isOwner() view returns(bool) +func (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "owner") + err := _BridgeOperator.contract.Call(opts, &out, "isOwner") + if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) { - return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeOperator *BridgeOperatorSession) IsOwner() (bool, error) { + return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) { - return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeOperator *BridgeOperatorCallerSession) IsOwner() (bool, error) { + return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "registeredTokenList", arg0) + err := _BridgeOperator.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { return *new(common.Address), err } @@ -6124,180 +6402,224 @@ func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeOperator *BridgeOperatorSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeOperator *BridgeOperatorCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "registeredTokens", arg0) + err := _BridgeOperator.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { - return *new(common.Address), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err -} -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeOperator *BridgeOperatorSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeOperator *BridgeOperatorCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeOperator.contract.Call(opts, &out, "operators", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeOperator *BridgeOperatorSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0) } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "lockToken", _token) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeOperator *BridgeOperatorCallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0) } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function owner() view returns(address) +func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeOperator.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function owner() view returns(address) +func (_BridgeOperator *BridgeOperatorSession) Owner() (common.Address, error) { + return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts) } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken) +// Solidity: function owner() view returns(address) +func (_BridgeOperator *BridgeOperatorCallerSession) Owner() (common.Address, error) { + return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts) } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.contract.Transact(opts, "deregisterOperator", _operator) } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.contract.Transact(opts, "registerOperator", _operator) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeOperator *BridgeOperatorTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "renounceOwnership") +func (_BridgeOperator *BridgeOperatorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeOperator.contract.Transact(opts, "renounceOwnership") } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) +func (_BridgeOperator *BridgeOperatorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) +func (_BridgeOperator *BridgeOperatorTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeOperator *BridgeOperatorTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeOperator.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeOperator *BridgeOperatorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeOperator *BridgeOperatorTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold) } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "unlockToken", _token) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeOperator *BridgeOperatorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeOperator.contract.Transact(opts, "transferOwnership", newOwner) } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeOperator *BridgeOperatorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner) } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeOperator *BridgeOperatorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner) } -// BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract. -type BridgeTokensOwnershipTransferredIterator struct { - Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log +// BridgeOperatorOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeOperator contract. +type BridgeOperatorOperatorDeregisteredIterator struct { + Event *BridgeOperatorOperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6311,7 +6633,7 @@ type BridgeTokensOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { +func (it *BridgeOperatorOperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6320,7 +6642,7 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokensOwnershipTransferred) + it.Event = new(BridgeOperatorOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6335,7 +6657,7 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokensOwnershipTransferred) + it.Event = new(BridgeOperatorOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6351,58 +6673,51 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensOwnershipTransferredIterator) Error() error { +func (it *BridgeOperatorOperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokensOwnershipTransferredIterator) Close() error { +func (it *BridgeOperatorOperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract. -type BridgeTokensOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorOperatorDeregistered represents a OperatorDeregistered event raised by the BridgeOperator contract. +type BridgeOperatorOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeOperatorOperatorDeregisteredIterator{contract: _BridgeOperator.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -6412,8 +6727,8 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind. select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokensOwnershipTransferred) - if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeOperatorOperatorDeregistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -6434,20 +6749,21 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind. }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) { - event := new(BridgeTokensOwnershipTransferred) - if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeOperatorOperatorDeregistered, error) { + event := new(BridgeOperatorOperatorDeregistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract. -type BridgeTokensTokenDeregisteredIterator struct { - Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log +// BridgeOperatorOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeOperator contract. +type BridgeOperatorOperatorRegisteredIterator struct { + Event *BridgeOperatorOperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6461,7 +6777,7 @@ type BridgeTokensTokenDeregisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { +func (it *BridgeOperatorOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6470,7 +6786,7 @@ func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenDeregistered) + it.Event = new(BridgeOperatorOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6485,7 +6801,7 @@ func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenDeregistered) + it.Event = new(BridgeOperatorOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6501,49 +6817,51 @@ func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenDeregisteredIterator) Error() error { +func (it *BridgeOperatorOperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokensTokenDeregisteredIterator) Close() error { +func (it *BridgeOperatorOperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract. -type BridgeTokensTokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorOperatorRegistered represents a OperatorRegistered event raised by the BridgeOperator contract. +type BridgeOperatorOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + return &BridgeOperatorOperatorRegisteredIterator{contract: _BridgeOperator.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -6553,8 +6871,8 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.Wat select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenDeregistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + event := new(BridgeOperatorOperatorRegistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -6575,20 +6893,21 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.Wat }), nil } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) { - event := new(BridgeTokensTokenDeregistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorRegistered(log types.Log) (*BridgeOperatorOperatorRegistered, error) { + event := new(BridgeOperatorOperatorRegistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract. -type BridgeTokensTokenLockedIterator struct { - Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log +// BridgeOperatorOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeOperator contract. +type BridgeOperatorOperatorThresholdChangedIterator struct { + Event *BridgeOperatorOperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6602,7 +6921,7 @@ type BridgeTokensTokenLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenLockedIterator) Next() bool { +func (it *BridgeOperatorOperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6611,7 +6930,7 @@ func (it *BridgeTokensTokenLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenLocked) + it.Event = new(BridgeOperatorOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6626,7 +6945,7 @@ func (it *BridgeTokensTokenLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenLocked) + it.Event = new(BridgeOperatorOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6642,49 +6961,52 @@ func (it *BridgeTokensTokenLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenLockedIterator) Error() error { +func (it *BridgeOperatorOperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokensTokenLockedIterator) Close() error { +func (it *BridgeOperatorOperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract. -type BridgeTokensTokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeOperator contract. +type BridgeOperatorOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeOperatorOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil + return &BridgeOperatorOperatorThresholdChangedIterator{contract: _BridgeOperator.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -6694,8 +7016,8 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenLocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { + event := new(BridgeOperatorOperatorThresholdChanged) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -6716,20 +7038,21 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts }), nil } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) { - event := new(BridgeTokensTokenLocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeOperatorOperatorThresholdChanged, error) { + event := new(BridgeOperatorOperatorThresholdChanged) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract. -type BridgeTokensTokenRegisteredIterator struct { - Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log +// BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract. +type BridgeOperatorOwnershipTransferredIterator struct { + Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6743,7 +7066,7 @@ type BridgeTokensTokenRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenRegisteredIterator) Next() bool { +func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6752,7 +7075,7 @@ func (it *BridgeTokensTokenRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenRegistered) + it.Event = new(BridgeOperatorOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6767,7 +7090,7 @@ func (it *BridgeTokensTokenRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokensTokenRegistered) + it.Event = new(BridgeOperatorOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6783,49 +7106,60 @@ func (it *BridgeTokensTokenRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenRegisteredIterator) Error() error { +func (it *BridgeOperatorOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokensTokenRegisteredIterator) Close() error { +func (it *BridgeOperatorOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract. -type BridgeTokensTokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract. +type BridgeOperatorOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil + return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -6835,8 +7169,8 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenRegistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { + event := new(BridgeOperatorOwnershipTransferred) + if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -6857,301 +7191,169 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.Watch }), nil } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) { - event := new(BridgeTokensTokenRegistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) { + event := new(BridgeOperatorOwnershipTransferred) + if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract. -type BridgeTokensTokenUnlockedIterator struct { - Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log +// BridgeTokensMetaData contains all meta data concerning the BridgeTokens contract. +var BridgeTokensMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "bab2af1d": "deregisterToken(address)", + "ea21eade": "getRegisteredTokenList()", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "8da5cb5b": "owner()", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + }, + Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610ca4806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b031661061a565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b031661062c565b604080519115158252519081900360200190f35b6100fa610641565b610119600480360360208110156101f357600080fd5b50356001600160a01b03166106d5565b6101196106f0565b6101c1610700565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b0316610711565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b0316610880565b610267610a6f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610ad1565b6102e5610700565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f610700565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821661057b57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610c386021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b610649610700565b61068b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610719610700565b61075b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166107c35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff166108355760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b610888610700565b6108ca5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166109325760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff1916905560029091528120805491905560035460001901811015610a225760038054600019810190811061099657fe5b600091825260209091200154600380546001600160a01b0390921691839081106109bc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6003805490610a35906000198301610bca565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aa9575b5050505050905090565b610ad9610700565b610b1b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b610b2481610b27565b50565b6001600160a01b038116610b6f57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610c126026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bee57600083815260209020610bee918101908301610bf3565b505050565b6106fd91905b80821115610c0d5760008155600101610bf9565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820c2a962646abdbdb4d2802b323b4064325b5324eb66caace2c71a0593bf654dfa0029", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// BridgeTokensABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTokensMetaData.ABI instead. +var BridgeTokensABI = BridgeTokensMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b031661061a565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b031661062c565b604080519115158252519081900360200190f35b6100fa610641565b610119600480360360208110156101f357600080fd5b50356001600160a01b03166106d5565b6101196106f0565b6101c1610700565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b0316610711565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b0316610880565b610267610a6f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610ad1565b6102e5610700565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f610700565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821661057b57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610c386021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b610649610700565b61068b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610719610700565b61075b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166107c35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff166108355760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b610888610700565b6108ca5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166109325760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff1916905560029091528120805491905560035460001901811015610a225760038054600019810190811061099657fe5b600091825260209091200154600380546001600160a01b0390921691839081106109bc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6003805490610a35906000198301610bca565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aa9575b5050505050905090565b610ad9610700565b610b1b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b610b2481610b27565b50565b6001600160a01b038116610b6f57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610c126026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bee57600083815260209020610bee918101908301610bf3565b505050565b6106fd91905b80821115610c0d5760008155600101610bf9565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820c2a962646abdbdb4d2802b323b4064325b5324eb66caace2c71a0593bf654dfa0029` -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Deprecated: Use BridgeTokensMetaData.Sigs instead. +// BridgeTokensFuncSigs maps the 4-byte function signature to its string representation. +var BridgeTokensFuncSigs = BridgeTokensMetaData.Sigs - default: - return false - } +// BridgeTokensBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BridgeTokensMetaData.Bin instead. +var BridgeTokensBin = BridgeTokensMetaData.Bin + +// DeployBridgeTokens deploys a new Kaia contract, binding an instance of BridgeTokens to it. +func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) { + parsed, err := BridgeTokensMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeTokensBin), backend) + if err != nil { + return common.Address{}, nil, nil, err } + return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenUnlockedIterator) Error() error { - return it.fail +// BridgeTokens is an auto generated Go binding around a Kaia contract. +type BridgeTokens struct { + BridgeTokensCaller // Read-only binding to the contract + BridgeTokensTransactor // Write-only binding to the contract + BridgeTokensFilterer // Log filterer for contract events } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTokensTokenUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeTokensCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTokensCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract. -type BridgeTokensTokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTokensTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTokensTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. -// -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) - if err != nil { - return nil, err - } - return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil -} - -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. -// -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenUnlocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. -// -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) { - event := new(BridgeTokensTokenUnlocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return nil, err - } - return event, nil -} - -// BridgeTransferMetaData contains all meta data concerning the BridgeTransfer contract. -var BridgeTransferMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "715018a6": "renounceOwnership()", - "7c1a0302": "requestNonce()", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "54edad72": "upperHandleNonce()", - }, -} - -// BridgeTransferABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferMetaData.ABI instead. -var BridgeTransferABI = BridgeTransferMetaData.ABI - -// BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferBinRuntime = `` - -// BridgeTransferFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferMetaData.Sigs instead. -var BridgeTransferFuncSigs = BridgeTransferMetaData.Sigs - -// BridgeTransfer is an auto generated Go binding around a Kaia contract. -type BridgeTransfer struct { - BridgeTransferCaller // Read-only binding to the contract - BridgeTransferTransactor // Write-only binding to the contract - BridgeTransferFilterer // Log filterer for contract events -} - -// BridgeTransferCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransferTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransferFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferFilterer struct { +// BridgeTokensFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTokensFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferSession is an auto generated Go binding around a Kaia contract, +// BridgeTokensSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type BridgeTransferSession struct { - Contract *BridgeTransfer // Generic contract binding to set the session for +type BridgeTokensSession struct { + Contract *BridgeTokens // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTransferCallerSession is an auto generated read-only Go binding around a Kaia contract, +// BridgeTokensCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type BridgeTransferCallerSession struct { - Contract *BridgeTransferCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type BridgeTokensCallerSession struct { + Contract *BridgeTokensCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BridgeTransferTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// BridgeTokensTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type BridgeTransferTransactorSession struct { - Contract *BridgeTransferTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeTokensTransactorSession struct { + Contract *BridgeTokensTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTransferRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferRaw struct { - Contract *BridgeTransfer // Generic contract binding to access the raw methods on +// BridgeTokensRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTokensRaw struct { + Contract *BridgeTokens // Generic contract binding to access the raw methods on } -// BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferCallerRaw struct { - Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on +// BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTokensCallerRaw struct { + Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on } -// BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferTransactorRaw struct { - Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on +// BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTokensTransactorRaw struct { + Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on } -// NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) { - contract, err := bindBridgeTransfer(address, backend, backend, backend) +// NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) { + contract, err := bindBridgeTokens(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil + return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil } -// NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) { - contract, err := bindBridgeTransfer(address, caller, nil, nil) +// NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) { + contract, err := bindBridgeTokens(address, caller, nil, nil) if err != nil { return nil, err } - return &BridgeTransferCaller{contract: contract}, nil + return &BridgeTokensCaller{contract: contract}, nil } -// NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) { - contract, err := bindBridgeTransfer(address, nil, transactor, nil) +// NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) { + contract, err := bindBridgeTokens(address, nil, transactor, nil) if err != nil { return nil, err } - return &BridgeTransferTransactor{contract: contract}, nil + return &BridgeTokensTransactor{contract: contract}, nil } -// NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) { - contract, err := bindBridgeTransfer(address, nil, nil, filterer) +// NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) { + contract, err := bindBridgeTokens(address, nil, nil, filterer) if err != nil { return nil, err } - return &BridgeTransferFilterer{contract: contract}, nil + return &BridgeTokensFilterer{contract: contract}, nil } -// bindBridgeTransfer binds a generic wrapper to an already deployed contract. -func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferMetaData.GetAbi() +// bindBridgeTokens binds a generic wrapper to an already deployed contract. +func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTokensMetaData.GetAbi() if err != nil { return nil, err } @@ -7162,191 +7364,202 @@ func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, tran // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...) +func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts) +func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...) +func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...) +func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTokens.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.Contract.contract.Transfer(opts) +func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransfer.Contract.contract.Transact(opts, method, params...) +func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTokens.Contract.contract.Transact(opts, method, params...) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTokens.contract.Call(opts, &out, "getRegisteredTokenList") + if err != nil { - return *new(uint64), err + return *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTokens.contract.Call(opts, &out, "indexOfTokens", arg0) + if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTokens.contract.Call(opts, &out, "isOwner") + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) { + return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) { + return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _BridgeTokens.contract.Call(opts, &out, "lockedTokens", arg0) + if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeOfKLAY") + err := _BridgeTokens.contract.Call(opts, &out, "owner") + if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) { + return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) { + return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeReceiver") + err := _BridgeTokens.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { return *new(common.Address), err } @@ -7354,581 +7567,483 @@ func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) { - return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "getOperatorList") + err := _BridgeTokens.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { - return *new([]common.Address), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token) +} - return out0, err +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "lockToken", _token) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "handledRequestTx", arg0) - if err != nil { - return *new(bool), err - } +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) +} - return out0, err +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "renounceOwnership") } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) { - return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) { - return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) { - return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) { - return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "unlockToken", _token) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} +// BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract. +type BridgeTokensOwnershipTransferredIterator struct { + Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) { - return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensOwnershipTransferredIterator) Error() error { + return it.fail } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract. +type BridgeTokensOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) { -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) -} + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operators", arg0) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return *new(bool), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) -} + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "owner") + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensOwnershipTransferred) + if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) { - return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) { + event := new(BridgeTokensOwnershipTransferred) + if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) { - return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) +// BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract. +type BridgeTokensTokenDeregisteredIterator struct { + Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensTokenDeregisteredIterator) Error() error { + return it.fail } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensTokenDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract. +type BridgeTokensTokenDeregistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err - } +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) { - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } - return out0, err + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) + if err != nil { + return nil, err + } + return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) { - return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) -} +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) { -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) { - return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "upperHandleNonce") + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensTokenDeregistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) { + event := new(BridgeTokensTokenDeregistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) -} +// BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract. +type BridgeTokensTokenLockedIterator struct { + Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator) -} - -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "start", _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) -} - -// BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract. -type BridgeTransferERC20FeeChangedIterator struct { - Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data logs chan types.Log // Log channel receiving the found contract events sub kaia.Subscription // Subscription for errors, completion and termination @@ -7939,7 +8054,7 @@ type BridgeTransferERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { +func (it *BridgeTokensTokenLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -7948,7 +8063,7 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeChanged) + it.Event = new(BridgeTokensTokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -7963,7 +8078,7 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeChanged) + it.Event = new(BridgeTokensTokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -7979,58 +8094,51 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20FeeChangedIterator) Error() error { +func (it *BridgeTokensTokenLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20FeeChangedIterator) Close() error { +func (it *BridgeTokensTokenLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract. -type BridgeTransferERC20FeeChanged struct { +// BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract. +type BridgeTokensTokenLocked struct { Token common.Address - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } @@ -8040,8 +8148,8 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20FeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTokensTokenLocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { return err } event.Raw = log @@ -8062,20 +8170,21 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.W }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) { - event := new(BridgeTransferERC20FeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) { + event := new(BridgeTokensTokenLocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract. -type BridgeTransferFeeReceiverChangedIterator struct { - Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract. +type BridgeTokensTokenRegisteredIterator struct { + Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -8089,7 +8198,7 @@ type BridgeTransferFeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { +func (it *BridgeTokensTokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -8098,7 +8207,7 @@ func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferFeeReceiverChanged) + it.Event = new(BridgeTokensTokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -8113,7 +8222,7 @@ func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferFeeReceiverChanged) + it.Event = new(BridgeTokensTokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -8129,50 +8238,52 @@ func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferFeeReceiverChangedIterator) Error() error { +func (it *BridgeTokensTokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferFeeReceiverChangedIterator) Close() error { +func (it *BridgeTokensTokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract. -type BridgeTransferFeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract. +type BridgeTokensTokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) { - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) - if err != nil { + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule) + if err != nil { return nil, err } return event.NewSubscription(func(quit <-chan struct{}) error { @@ -8181,8 +8292,8 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferFeeReceiverChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTokensTokenRegistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -8203,20 +8314,21 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bin }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) { - event := new(BridgeTransferFeeReceiverChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) { + event := new(BridgeTokensTokenRegistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract. -type BridgeTransferHandleValueTransferIterator struct { - Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract. +type BridgeTokensTokenUnlockedIterator struct { + Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -8230,7 +8342,7 @@ type BridgeTransferHandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferHandleValueTransferIterator) Next() bool { +func (it *BridgeTokensTokenUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -8239,7 +8351,7 @@ func (it *BridgeTransferHandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferHandleValueTransfer) + it.Event = new(BridgeTokensTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -8254,7 +8366,7 @@ func (it *BridgeTransferHandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferHandleValueTransfer) + it.Event = new(BridgeTokensTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -8270,73 +8382,51 @@ func (it *BridgeTransferHandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferHandleValueTransferIterator) Error() error { +func (it *BridgeTokensTokenUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferHandleValueTransferIterator) Close() error { +func (it *BridgeTokensTokenUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract. -type BridgeTransferHandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract. +type BridgeTokensTokenUnlocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } @@ -8346,8 +8436,8 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bi select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferHandleValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTokensTokenUnlocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return err } event.Raw = log @@ -8368,873 +8458,492 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bi }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) { - event := new(BridgeTransferHandleValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) { + event := new(BridgeTokensTokenUnlocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract. -type BridgeTransferKLAYFeeChangedIterator struct { - Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTransferMetaData contains all meta data concerning the BridgeTransfer contract. +var BridgeTransferMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "715018a6": "renounceOwnership()", + "7c1a0302": "requestNonce()", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "54edad72": "upperHandleNonce()", + }, } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferMetaData.ABI instead. +var BridgeTransferABI = BridgeTransferMetaData.ABI - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferBinRuntime = `` - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Deprecated: Use BridgeTransferMetaData.Sigs instead. +// BridgeTransferFuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferFuncSigs = BridgeTransferMetaData.Sigs + +// BridgeTransfer is an auto generated Go binding around a Kaia contract. +type BridgeTransfer struct { + BridgeTransferCaller // Read-only binding to the contract + BridgeTransferTransactor // Write-only binding to the contract + BridgeTransferFilterer // Log filterer for contract events } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYFeeChangedIterator) Error() error { - return it.fail +// BridgeTransferCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferKLAYFeeChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeTransferTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract. -type BridgeTransferKLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. -// -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// BridgeTransferSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferSession struct { + Contract *BridgeTransfer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) - if err != nil { - return nil, err - } - return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil +// BridgeTransferCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferCallerSession struct { + Contract *BridgeTransferCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. -// -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// BridgeTransferTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferTransactorSession struct { + Contract *BridgeTransferTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) +// BridgeTransferRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferRaw struct { + Contract *BridgeTransfer // Generic contract binding to access the raw methods on +} + +// BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferCallerRaw struct { + Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferTransactorRaw struct { + Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) { + contract, err := bindBridgeTransfer(address, backend, backend, backend) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYFeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. -// -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) { - event := new(BridgeTransferKLAYFeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) { + contract, err := bindBridgeTransfer(address, caller, nil, nil) + if err != nil { return nil, err } - return event, nil + return &BridgeTransferCaller{contract: contract}, nil } -// BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract. -type BridgeTransferOwnershipTransferredIterator struct { - Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) { + contract, err := bindBridgeTransfer(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BridgeTransferTransactor{contract: contract}, nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) { + contract, err := bindBridgeTransfer(address, nil, nil, filterer) + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &BridgeTransferFilterer{contract: contract}, nil +} - default: - return false - } +// bindBridgeTransfer binds a generic wrapper to an already deployed contract. +func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferMetaData.GetAbi() + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferOwnershipTransferredIterator) Error() error { - return it.fail +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...) } -// BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract. -type BridgeTransferOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...) } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.Contract.contract.Transfer(opts) +} - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransfer.Contract.contract.Transact(opts, method, params...) } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "MAX_OPERATOR") - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return nil, err + return *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferOwnershipTransferred) - if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) { - event := new(BridgeTransferOwnershipTransferred) - if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) } -// BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferIterator struct { - Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferRequestValueTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferRequestValueTransferIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferRequestValueTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } - - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) - if err != nil { - return nil, err - } - return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "configurationNonce") - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferRequestValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) { - event := new(BridgeTransferRequestValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) } -// BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferEncodedIterator struct { - Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeOfERC20", arg0) - default: - return false - } + if err != nil { + return *new(*big.Int), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) } -// BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeOfKLAY") - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil -} -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. -// -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferRequestValueTransferEncoded) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) { - event := new(BridgeTransferRequestValueTransferEncoded) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20MetaData contains all meta data concerning the BridgeTransferERC20 contract. -var BridgeTransferERC20MetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "bab2af1d": "deregisterToken(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "ea21eade": "getRegisteredTokenList()", - "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", - "7c1a0302": "requestNonce()", - "2f88396c": "setERC20Fee(address,uint256,uint64)", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - "54edad72": "upperHandleNonce()", - }, +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferERC20MetaData.ABI instead. -var BridgeTransferERC20ABI = BridgeTransferERC20MetaData.ABI +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeReceiver") -// BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferERC20BinRuntime = `` + if err != nil { + return *new(common.Address), err + } -// BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferERC20MetaData.Sigs instead. -var BridgeTransferERC20FuncSigs = BridgeTransferERC20MetaData.Sigs + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// BridgeTransferERC20 is an auto generated Go binding around a Kaia contract. -type BridgeTransferERC20 struct { - BridgeTransferERC20Caller // Read-only binding to the contract - BridgeTransferERC20Transactor // Write-only binding to the contract - BridgeTransferERC20Filterer // Log filterer for contract events -} + return out0, err -// BridgeTransferERC20Caller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) { + return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferERC20Session struct { - Contract *BridgeTransferERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "getOperatorList") -// BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferERC20CallerSession struct { - Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + if err != nil { + return *new([]common.Address), err + } -// BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferERC20TransactorSession struct { - Contract *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) -// BridgeTransferERC20Raw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferERC20Raw struct { - Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on -} + return out0, err -// BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferERC20CallerRaw struct { - Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on } -// BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferERC20TransactorRaw struct { - Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) } -// NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) { - contract, err := bindBridgeTransferERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) } -// NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) { - contract, err := bindBridgeTransferERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Caller{contract: contract}, nil -} - -// NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) { - contract, err := bindBridgeTransferERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Transactor{contract: contract}, nil -} - -// NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) { - contract, err := bindBridgeTransferERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Filterer{contract: contract}, nil -} +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) -// bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract. -func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferERC20MetaData.GetAbi() if err != nil { - return nil, err + return *new(uint64), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.contract.Transfer(opts) +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...) +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTransfer.contract.Call(opts, &out, "handledRequestTx", arg0) + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -9242,115 +8951,123 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes( out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) { + return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) { + return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTransfer.contract.Call(opts, &out, "isRunning") + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) { + return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) { + return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "lowerHandleNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfKLAY") + err := _BridgeTransfer.contract.Call(opts, &out, "modeMintBurn") + if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) { + return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeReceiver") + err := _BridgeTransfer.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { return *new(common.Address), err } @@ -9358,891 +9075,5022 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "getOperatorList") + err := _BridgeTransfer.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { - return *new([]common.Address), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "getRegisteredTokenList") + err := _BridgeTransfer.contract.Call(opts, &out, "operators", arg0) + if err != nil { - return *new([]common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "owner") + if err != nil { - return *new(uint64), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) { + return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) { + return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "handledRequestTx", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "indexOfTokens", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) { + return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) { + return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) { +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "isOwner") + err := _BridgeTransfer.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) { - return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) { - return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) { - return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) { - return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "lockedTokens", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "renounceOwnership") } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) { - return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setRunningStatus", _status) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetRunningStatus(&_BridgeTransfer.TransactOpts, _status) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetRunningStatus(&_BridgeTransfer.TransactOpts, _status) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operators", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "start", _status) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) { - return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) { - return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract. +type BridgeTransferERC20FeeChangedIterator struct { + Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log - return out0, err -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} - return out0, err +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20FeeChangedIterator) Error() error { + return it.fail } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) +// BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract. +type BridgeTransferERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err - } +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) { - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } - return out0, err + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "requestNonce") + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { - return *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20FeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) { + event := new(BridgeTransferERC20FeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } +// BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract. +type BridgeTransferFeeReceiverChangedIterator struct { + Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - return out0, err + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferFeeReceiverChangedIterator) Error() error { + return it.fail } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferFeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token) +// BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract. +type BridgeTransferFeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) { -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. -// -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. -// -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token) -} + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferFeeReceiverChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) { + event := new(BridgeTransferFeeReceiverChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) -} +// BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract. +type BridgeTransferHandleValueTransferIterator struct { + Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferHandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferHandleValueTransferIterator) Error() error { + return it.fail } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferHandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) +// BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract. +type BridgeTransferHandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership") -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) { -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferHandleValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) { + event := new(BridgeTransferHandleValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract. +type BridgeTransferKLAYFeeChangedIterator struct { + Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYFeeChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract. +type BridgeTransferKLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil +} + +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYFeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) { + event := new(BridgeTransferKLAYFeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransfer contract. +type BridgeTransferOperatorDeregisteredIterator struct { + Event *BridgeTransferOperatorDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferOperatorDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferOperatorDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferOperatorDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferOperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransfer contract. +type BridgeTransferOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferOperatorDeregisteredIterator{contract: _BridgeTransfer.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferOperatorDeregistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferOperatorDeregistered, error) { + event := new(BridgeTransferOperatorDeregistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransfer contract. +type BridgeTransferOperatorRegisteredIterator struct { + Event *BridgeTransferOperatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferOperatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferOperatorRegistered represents a OperatorRegistered event raised by the BridgeTransfer contract. +type BridgeTransferOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferOperatorRegisteredIterator{contract: _BridgeTransfer.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferOperatorRegistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferOperatorRegistered, error) { + event := new(BridgeTransferOperatorRegistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransfer contract. +type BridgeTransferOperatorThresholdChangedIterator struct { + Event *BridgeTransferOperatorThresholdChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferOperatorThresholdChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferOperatorThresholdChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferOperatorThresholdChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransfer contract. +type BridgeTransferOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) + if err != nil { + return nil, err + } + return &BridgeTransferOperatorThresholdChangedIterator{contract: _BridgeTransfer.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil +} + +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferOperatorThresholdChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferOperatorThresholdChanged, error) { + event := new(BridgeTransferOperatorThresholdChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract. +type BridgeTransferOwnershipTransferredIterator struct { + Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract. +type BridgeTransferOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferOwnershipTransferred) + if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) { + event := new(BridgeTransferOwnershipTransferred) + if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferIterator struct { + Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferRequestValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferRequestValueTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferRequestValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil +} + +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferRequestValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) { + event := new(BridgeTransferRequestValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferEncodedIterator struct { + Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil +} + +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferRequestValueTransferEncoded) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) { + event := new(BridgeTransferRequestValueTransferEncoded) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferRunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransfer contract. +type BridgeTransferRunningStatusChangedIterator struct { + Event *BridgeTransferRunningStatusChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferRunningStatusChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferRunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferRunningStatusChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferRunningStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferRunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransfer contract. +type BridgeTransferRunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferRunningStatusChangedIterator, error) { + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return &BridgeTransferRunningStatusChangedIterator{contract: _BridgeTransfer.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil +} + +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferRunningStatusChanged) (event.Subscription, error) { + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferRunningStatusChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferRunningStatusChanged, error) { + event := new(BridgeTransferRunningStatusChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20MetaData contains all meta data concerning the BridgeTransferERC20 contract. +var BridgeTransferERC20MetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "bab2af1d": "deregisterToken(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "ea21eade": "getRegisteredTokenList()", + "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", + "7c1a0302": "requestNonce()", + "2f88396c": "setERC20Fee(address,uint256,uint64)", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + "54edad72": "upperHandleNonce()", + }, +} + +// BridgeTransferERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferERC20MetaData.ABI instead. +var BridgeTransferERC20ABI = BridgeTransferERC20MetaData.ABI + +// BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferERC20BinRuntime = `` + +// Deprecated: Use BridgeTransferERC20MetaData.Sigs instead. +// BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferERC20FuncSigs = BridgeTransferERC20MetaData.Sigs + +// BridgeTransferERC20 is an auto generated Go binding around a Kaia contract. +type BridgeTransferERC20 struct { + BridgeTransferERC20Caller // Read-only binding to the contract + BridgeTransferERC20Transactor // Write-only binding to the contract + BridgeTransferERC20Filterer // Log filterer for contract events +} + +// BridgeTransferERC20Caller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC20Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferERC20Session struct { + Contract *BridgeTransferERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferERC20CallerSession struct { + Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferERC20TransactorSession struct { + Contract *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferERC20Raw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferERC20Raw struct { + Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on +} + +// BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferERC20CallerRaw struct { + Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferERC20TransactorRaw struct { + Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) { + contract, err := bindBridgeTransferERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil +} + +// NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) { + contract, err := bindBridgeTransferERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BridgeTransferERC20Caller{contract: contract}, nil +} + +// NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) { + contract, err := bindBridgeTransferERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BridgeTransferERC20Transactor{contract: contract}, nil +} + +// NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) { + contract, err := bindBridgeTransferERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeTransferERC20Filterer{contract: contract}, nil +} + +// bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract. +func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "MAX_OPERATOR") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "configurationNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +} + +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfERC20", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +} + +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +} + +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfKLAY") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) +} + +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) +} + +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeReceiver") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +} + +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "getOperatorList") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +} + +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "getRegisteredTokenList") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +} + +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "handledRequestTx", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +} + +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "indexOfTokens", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "isOwner") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) { + return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) { + return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +} + +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "isRunning") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) { + return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +} + +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) { + return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +} + +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "lockedTokens", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "lowerHandleNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +} + +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "modeMintBurn") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) { + return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) +} + +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorList", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) +} + +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) +} + +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorThresholds", arg0) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) +} + +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) +} + +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "operators", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +} + +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) { + return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) { + return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) +} + +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "recoveryBlockNumber") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) +} + +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) +} + +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokenList", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) +} + +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) +} + +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokens", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) +} + +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "requestNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) +} + +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) +} + +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "upperHandleNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) +} + +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +} + +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +} + +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token) +} + +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) +} + +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) +} + +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) +} + +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token) +} + +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) +} + +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) +} + +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +} + +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) +} + +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken) +} + +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) +} + +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) +} + +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) +} + +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +} + +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +} + +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) +} + +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) +} + +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setRunningStatus", _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetRunningStatus(&_BridgeTransferERC20.TransactOpts, _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetRunningStatus(&_BridgeTransferERC20.TransactOpts, _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "start", _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) +} + +// BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20ERC20FeeChangedIterator struct { + Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20ERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil +} + +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20ERC20FeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) { + event := new(BridgeTransferERC20ERC20FeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20FeeReceiverChangedIterator struct { + Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20FeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil +} + +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20FeeReceiverChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) { + event := new(BridgeTransferERC20FeeReceiverChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20HandleValueTransferIterator struct { + Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20HandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil +} + +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20HandleValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) { + event := new(BridgeTransferERC20HandleValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20KLAYFeeChangedIterator struct { + Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20KLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil +} + +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20KLAYFeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) { + event := new(BridgeTransferERC20KLAYFeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20OperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorDeregisteredIterator struct { + Event *BridgeTransferERC20OperatorDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20OperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC20OperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20OperatorDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20OperatorDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. +// +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferERC20OperatorDeregistered, error) { + event := new(BridgeTransferERC20OperatorDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20OperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorRegisteredIterator struct { + Event *BridgeTransferERC20OperatorRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20OperatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20OperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20OperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20OperatorRegistered represents a OperatorRegistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC20OperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20OperatorRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20OperatorRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferERC20OperatorRegistered, error) { + event := new(BridgeTransferERC20OperatorRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20OperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorThresholdChangedIterator struct { + Event *BridgeTransferERC20OperatorThresholdChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20OperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferERC20OperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20OperatorThresholdChangedIterator{contract: _BridgeTransferERC20.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil +} + +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20OperatorThresholdChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. +// +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferERC20OperatorThresholdChanged, error) { + event := new(BridgeTransferERC20OperatorThresholdChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OwnershipTransferredIterator struct { + Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20OwnershipTransferred) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) { + event := new(BridgeTransferERC20OwnershipTransferred) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferIterator struct { + Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil +} + +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20RequestValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) { + event := new(BridgeTransferERC20RequestValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferEncodedIterator struct { + Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. -// -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error { + return it.fail } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. -// -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. -// -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) +// BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) -} +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) { -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. -// -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) -} +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20RequestValueTransferEncoded) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return err + } + event.Raw = log -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) { + event := new(BridgeTransferERC20RequestValueTransferEncoded) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "start", _status) -} +// BridgeTransferERC20RunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RunningStatusChangedIterator struct { + Event *BridgeTransferERC20RunningStatusChanged // Event containing the contract specifics and raw log -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20RunningStatusChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20RunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20RunningStatusChangedIterator) Error() error { + return it.fail } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20RunningStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) +// BridgeTransferERC20RunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token) +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferERC20RunningStatusChangedIterator, error) { + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return &BridgeTransferERC20RunningStatusChangedIterator{contract: _BridgeTransferERC20.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RunningStatusChanged) (event.Subscription, error) { + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20RunningStatusChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferERC20RunningStatusChanged, error) { + event := new(BridgeTransferERC20RunningStatusChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20ERC20FeeChangedIterator struct { - Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log +// BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenDeregisteredIterator struct { + Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10256,7 +14104,7 @@ type BridgeTransferERC20ERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10265,7 +14113,7 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20ERC20FeeChanged) + it.Event = new(BridgeTransferERC20TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10280,7 +14128,7 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20ERC20FeeChanged) + it.Event = new(BridgeTransferERC20TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10296,58 +14144,51 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20ERC20FeeChanged struct { +// BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenDeregistered struct { Token common.Address - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } @@ -10357,8 +14198,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20ERC20FeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTransferERC20TokenDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return err } event.Raw = log @@ -10379,20 +14220,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(op }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) { - event := new(BridgeTransferERC20ERC20FeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) { + event := new(BridgeTransferERC20TokenDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20FeeReceiverChangedIterator struct { - Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenLockedIterator struct { + Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10406,7 +14248,7 @@ type BridgeTransferERC20FeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { +func (it *BridgeTransferERC20TokenLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10415,7 +14257,7 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeReceiverChanged) + it.Event = new(BridgeTransferERC20TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10430,7 +14272,7 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeReceiverChanged) + it.Event = new(BridgeTransferERC20TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10446,49 +14288,51 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error { +func (it *BridgeTransferERC20TokenLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error { +func (it *BridgeTransferERC20TokenLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20FeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } @@ -10498,8 +14342,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20FeeReceiverChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTransferERC20TokenLocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { return err } event.Raw = log @@ -10520,20 +14364,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) { - event := new(BridgeTransferERC20FeeReceiverChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) { + event := new(BridgeTransferERC20TokenLocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20HandleValueTransferIterator struct { - Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenRegisteredIterator struct { + Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10547,7 +14392,7 @@ type BridgeTransferERC20HandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { +func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10556,7 +14401,7 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20HandleValueTransfer) + it.Event = new(BridgeTransferERC20TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10571,7 +14416,7 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20HandleValueTransfer) + it.Event = new(BridgeTransferERC20TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10587,73 +14432,51 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error { +func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error { +func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20HandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } @@ -10663,8 +14486,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20HandleValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTransferERC20TokenRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -10685,21 +14508,22 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfe }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) { - event := new(BridgeTransferERC20HandleValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) { + event := new(BridgeTransferERC20TokenRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20KLAYFeeChangedIterator struct { - Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log - +// BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenUnlockedIterator struct { + Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log + contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10712,7 +14536,7 @@ type BridgeTransferERC20KLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { +func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10721,7 +14545,7 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20KLAYFeeChanged) + it.Event = new(BridgeTransferERC20TokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10736,7 +14560,7 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20KLAYFeeChanged) + it.Event = new(BridgeTransferERC20TokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10752,49 +14576,51 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error { +func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error { +func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20KLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenUnlocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } @@ -10804,8 +14630,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20KLAYFeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeTransferERC20TokenUnlocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return err } event.Raw = log @@ -10826,1324 +14652,969 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opt }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) { - event := new(BridgeTransferERC20KLAYFeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) { + event := new(BridgeTransferERC20TokenUnlocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20OwnershipTransferredIterator struct { - Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log +// BridgeTransferERC721MetaData contains all meta data concerning the BridgeTransferERC721 contract. +var BridgeTransferERC721MetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "bab2af1d": "deregisterToken(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "ea21eade": "getRegisteredTokenList()", + "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "cf0da290": "onERC721Received(address,uint256,address,bytes)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "22604742": "requestERC721Transfer(address,address,uint256,bytes)", + "7c1a0302": "requestNonce()", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + "54edad72": "upperHandleNonce()", + }, +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// BridgeTransferERC721ABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferERC721MetaData.ABI instead. +var BridgeTransferERC721ABI = BridgeTransferERC721MetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferERC721BinRuntime = `` + +// Deprecated: Use BridgeTransferERC721MetaData.Sigs instead. +// BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferERC721FuncSigs = BridgeTransferERC721MetaData.Sigs + +// BridgeTransferERC721 is an auto generated Go binding around a Kaia contract. +type BridgeTransferERC721 struct { + BridgeTransferERC721Caller // Read-only binding to the contract + BridgeTransferERC721Transactor // Write-only binding to the contract + BridgeTransferERC721Filterer // Log filterer for contract events } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// BridgeTransferERC721Caller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferERC721Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferERC721Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferERC721Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferERC721Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferERC721Session struct { + Contract *BridgeTransferERC721 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferERC721CallerSession struct { + Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferERC721TransactorSession struct { + Contract *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferERC721Raw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferERC721Raw struct { + Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on +} + +// BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferERC721CallerRaw struct { + Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferERC721TransactorRaw struct { + Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) { + contract, err := bindBridgeTransferERC721(address, backend, backend, backend) + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20OwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil +} - default: - return false - } +// NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) { + contract, err := bindBridgeTransferERC721(address, caller, nil, nil) + if err != nil { + return nil, err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20OwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return &BridgeTransferERC721Caller{contract: contract}, nil +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) { + contract, err := bindBridgeTransferERC721(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BridgeTransferERC721Transactor{contract: contract}, nil +} + +// NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) { + contract, err := bindBridgeTransferERC721(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeTransferERC721Filterer{contract: contract}, nil +} + +// bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract. +func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferERC721MetaData.GetAbi() + if err != nil { + return nil, err } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error { - return it.fail +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts) } -// BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...) } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...) +} - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.contract.Transfer(opts) } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "MAX_OPERATOR") - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return nil, err + return *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20OwnershipTransferred) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) { - event := new(BridgeTransferERC20OwnershipTransferred) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferIterator struct { - Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "configurationNonce") - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfERC20", arg0) - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20RequestValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) { - event := new(BridgeTransferERC20RequestValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferEncodedIterator struct { - Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfKLAY") - default: - return false - } + if err != nil { + return *new(*big.Int), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeReceiver") - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(common.Address), err } - return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +} + +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "getOperatorList") - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new([]common.Address), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20RequestValueTransferEncoded) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) { - event := new(BridgeTransferERC20RequestValueTransferEncoded) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenDeregisteredIterator struct { - Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "getRegisteredTokenList") - default: - return false - } + if err != nil { + return *new([]common.Address), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "handledRequestTx", arg0) - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenDeregistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) { - event := new(BridgeTransferERC20TokenDeregistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenLockedIterator struct { - Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenLockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "indexOfTokens", arg0) - default: - return false - } + if err != nil { + return *new(*big.Int), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenLockedIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenLockedIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule) - if err != nil { - return nil, err - } - return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "isOwner") - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenLocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) { - event := new(BridgeTransferERC20TokenLocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) { + return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenRegisteredIterator struct { - Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) { + return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "isRunning") - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) { + return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) { + return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "lockedTokens", arg0) - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +} - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenRegistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return err - } - event.Raw = log +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +} + +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "lowerHandleNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) { - event := new(BridgeTransferERC20TokenRegistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenUnlockedIterator struct { - Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "modeMintBurn") - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) { + return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorList", arg0) - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(common.Address), err } - return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +} + +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +} + +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorThresholds", arg0) - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(uint8), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenUnlocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) { - event := new(BridgeTransferERC20TokenUnlocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC721MetaData contains all meta data concerning the BridgeTransferERC721 contract. -var BridgeTransferERC721MetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "bab2af1d": "deregisterToken(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "ea21eade": "getRegisteredTokenList()", - "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "cf0da290": "onERC721Received(address,uint256,address,bytes)", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "22604742": "requestERC721Transfer(address,address,uint256,bytes)", - "7c1a0302": "requestNonce()", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - "54edad72": "upperHandleNonce()", - }, +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC721ABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferERC721MetaData.ABI instead. -var BridgeTransferERC721ABI = BridgeTransferERC721MetaData.ABI +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operators", arg0) + + if err != nil { + return *new(bool), err + } -// BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferERC721BinRuntime = `` + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferERC721MetaData.Sigs instead. -var BridgeTransferERC721FuncSigs = BridgeTransferERC721MetaData.Sigs + return out0, err -// BridgeTransferERC721 is an auto generated Go binding around a Kaia contract. -type BridgeTransferERC721 struct { - BridgeTransferERC721Caller // Read-only binding to the contract - BridgeTransferERC721Transactor // Write-only binding to the contract - BridgeTransferERC721Filterer // Log filterer for contract events } -// BridgeTransferERC721Caller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferERC721Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferERC721Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) } -// BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferERC721Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "owner") -// BridgeTransferERC721Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferERC721Session struct { - Contract *BridgeTransferERC721 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new(common.Address), err + } -// BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferERC721CallerSession struct { - Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferERC721TransactorSession struct { - Contract *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + return out0, err -// BridgeTransferERC721Raw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferERC721Raw struct { - Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on } -// BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferERC721CallerRaw struct { - Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) { + return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) } -// BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferERC721TransactorRaw struct { - Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) { + return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) } -// NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) { - contract, err := bindBridgeTransferERC721(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil -} +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "recoveryBlockNumber") -// NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) { - contract, err := bindBridgeTransferERC721(address, caller, nil, nil) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferERC721Caller{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) { - contract, err := bindBridgeTransferERC721(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC721Transactor{contract: contract}, nil +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) } -// NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) { - contract, err := bindBridgeTransferERC721(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferERC721Filterer{contract: contract}, nil +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) } -// bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract. -func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferERC721MetaData.GetAbi() +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { - return nil, err + return *new(common.Address), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.contract.Transfer(opts) +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...) +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { - return *new(uint64), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTransferERC721.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTransferERC721.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { return *new(uint64), err } @@ -12151,957 +15622,1238 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfERC20", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfKLAY") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeReceiver") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "getOperatorList") - if err != nil { - return *new([]common.Address), err - } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "getRegisteredTokenList") - if err != nil { - return *new([]common.Address), err - } +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) +} - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) +} - return out0, err +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - if err != nil { - return *new(uint64), err - } +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +} - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken) +} - return out0, err +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership") } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "handledRequestTx", arg0) - if err != nil { - return *new(bool), err - } +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) +} - return out0, err +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. +// +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "indexOfTokens", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) { - return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) { - return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setRunningStatus", _status) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) { - return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetRunningStatus(&_BridgeTransferERC721.TransactOpts, _status) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) { - return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetRunningStatus(&_BridgeTransferERC721.TransactOpts, _status) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "lockedTokens", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "start", _status) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) { - return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err +// BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721ERC20FeeChangedIterator struct { + Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error { + return it.fail } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721ERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) { -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operators", arg0) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { - return *new(bool), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "owner") + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721ERC20FeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) { - return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) { + event := new(BridgeTransferERC721ERC20FeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) { - return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) +// BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721FeeReceiverChangedIterator struct { + Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721FeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721FeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error { + return it.fail } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721FeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721FeeReceiverChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) { + event := new(BridgeTransferERC721FeeReceiverChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) +// BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721HandleValueTransferIterator struct { + Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error { + return it.fail } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721HandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) { - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } - return out0, err + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator) -} + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721HandleValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) { + event := new(BridgeTransferERC721HandleValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token) -} +// BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721KLAYFeeChangedIterator struct { + Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error { + return it.fail } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) +// BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721KLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) { -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. -// -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. -// -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721KLAYFeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) { + event := new(BridgeTransferERC721KLAYFeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +// BridgeTransferERC721OperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorDeregisteredIterator struct { + Event *BridgeTransferERC721OperatorDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721OperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721OperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Error() error { + return it.fail } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership") +// BridgeTransferERC721OperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) -} +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC721OperatorDeregisteredIterator, error) { -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) -} + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721OperatorDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) -} +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorDeregistered, operator []common.Address) (event.Subscription, error) { -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) -} + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721OperatorDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return err + } + event.Raw = log -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferERC721OperatorDeregistered, error) { + event := new(BridgeTransferERC721OperatorDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} +// BridgeTransferERC721OperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorRegisteredIterator struct { + Event *BridgeTransferERC721OperatorRegistered // Event containing the contract specifics and raw log -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "start", _status) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721OperatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721OperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721OperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721OperatorRegisteredIterator) Error() error { + return it.fail } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721OperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) +// BridgeTransferERC721OperatorRegistered represents a OperatorRegistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC721OperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721OperatorRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721OperatorRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferERC721OperatorRegistered, error) { + event := new(BridgeTransferERC721OperatorRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721ERC20FeeChangedIterator struct { - Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log +// BridgeTransferERC721OperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorThresholdChangedIterator struct { + Event *BridgeTransferERC721OperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13115,7 +16867,7 @@ type BridgeTransferERC721ERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13124,7 +16876,7 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721ERC20FeeChanged) + it.Event = new(BridgeTransferERC721OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13139,7 +16891,7 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721ERC20FeeChanged) + it.Event = new(BridgeTransferERC721OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13155,58 +16907,52 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721ERC20FeeChanged struct { - Token common.Address - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferERC721OperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OperatorThresholdChangedIterator{contract: _BridgeTransferERC721.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -13216,8 +16962,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721ERC20FeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTransferERC721OperatorThresholdChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -13238,20 +16984,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged( }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) { - event := new(BridgeTransferERC721ERC20FeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferERC721OperatorThresholdChanged, error) { + event := new(BridgeTransferERC721OperatorThresholdChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721FeeReceiverChangedIterator struct { - Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OwnershipTransferredIterator struct { + Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13265,7 +17012,7 @@ type BridgeTransferERC721FeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13274,7 +17021,7 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721FeeReceiverChanged) + it.Event = new(BridgeTransferERC721OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13289,7 +17036,7 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721FeeReceiverChanged) + it.Event = new(BridgeTransferERC721OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13305,49 +17052,60 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721FeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -13357,8 +17115,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChang select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721FeeReceiverChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTransferERC721OwnershipTransferred) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -13379,20 +17137,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChang }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) { - event := new(BridgeTransferERC721FeeReceiverChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) { + event := new(BridgeTransferERC721OwnershipTransferred) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721HandleValueTransferIterator struct { - Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferIterator struct { + Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13406,7 +17165,7 @@ type BridgeTransferERC721HandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { +func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13415,7 +17174,7 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721HandleValueTransfer) + it.Event = new(BridgeTransferERC721RequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13430,7 +17189,7 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721HandleValueTransfer) + it.Event = new(BridgeTransferERC721RequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13446,35 +17205,35 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error { +func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error { +func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721HandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -13488,17 +17247,18 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTran tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -13512,7 +17272,7 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTrans tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -13522,8 +17282,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTrans select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721HandleValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTransferERC721RequestValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return err } event.Raw = log @@ -13544,20 +17304,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTrans }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) { - event := new(BridgeTransferERC721HandleValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) { + event := new(BridgeTransferERC721RequestValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721KLAYFeeChangedIterator struct { - Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log +// BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferEncodedIterator struct { + Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13571,7 +17332,7 @@ type BridgeTransferERC721KLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13580,7 +17341,7 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721KLAYFeeChanged) + it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13595,7 +17356,7 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721KLAYFeeChanged) + it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13611,49 +17372,76 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error { +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error { +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721KLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -13663,8 +17451,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721KLAYFeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeTransferERC721RequestValueTransferEncoded) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return err } event.Raw = log @@ -13685,20 +17473,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(o }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) { - event := new(BridgeTransferERC721KLAYFeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) { + event := new(BridgeTransferERC721RequestValueTransferEncoded) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721OwnershipTransferredIterator struct { - Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log +// BridgeTransferERC721RunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RunningStatusChangedIterator struct { + Event *BridgeTransferERC721RunningStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13712,7 +17501,7 @@ type BridgeTransferERC721OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { +func (it *BridgeTransferERC721RunningStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13721,7 +17510,7 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721OwnershipTransferred) + it.Event = new(BridgeTransferERC721RunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13736,7 +17525,7 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721OwnershipTransferred) + it.Event = new(BridgeTransferERC721RunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13752,58 +17541,41 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error { +func (it *BridgeTransferERC721RunningStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error { +func (it *BridgeTransferERC721RunningStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721RunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferERC721RunningStatusChangedIterator, error) { - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } - return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeTransferERC721RunningStatusChangedIterator{contract: _BridgeTransferERC721.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RunningStatusChanged) (event.Subscription, error) { - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } @@ -13813,8 +17585,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransfe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721OwnershipTransferred) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeTransferERC721RunningStatusChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return err } event.Raw = log @@ -13835,20 +17607,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransfe }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) { - event := new(BridgeTransferERC721OwnershipTransferred) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferERC721RunningStatusChanged, error) { + event := new(BridgeTransferERC721RunningStatusChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferIterator struct { - Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenDeregisteredIterator struct { + Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13862,7 +17635,7 @@ type BridgeTransferERC721RequestValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13871,7 +17644,7 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransfer) + it.Event = new(BridgeTransferERC721TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13886,7 +17659,7 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransfer) + it.Event = new(BridgeTransferERC721TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13902,72 +17675,51 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenDeregistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } @@ -13977,8 +17729,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721RequestValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + event := new(BridgeTransferERC721TokenDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return err } event.Raw = log @@ -13999,20 +17751,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran }), nil } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) { - event := new(BridgeTransferERC721RequestValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) { + event := new(BridgeTransferERC721TokenDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferEncodedIterator struct { - Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenLockedIterator struct { + Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14026,7 +17779,7 @@ type BridgeTransferERC721RequestValueTransferEncodedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { +func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14035,7 +17788,7 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + it.Event = new(BridgeTransferERC721TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14050,7 +17803,7 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + it.Event = new(BridgeTransferERC721TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14066,74 +17819,51 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error { +func (it *BridgeTransferERC721TokenLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error { +func (it *BridgeTransferERC721TokenLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } @@ -14143,8 +17873,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721RequestValueTransferEncoded) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + event := new(BridgeTransferERC721TokenLocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { return err } event.Raw = log @@ -14165,20 +17895,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran }), nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) { - event := new(BridgeTransferERC721RequestValueTransferEncoded) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) { + event := new(BridgeTransferERC721TokenLocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenDeregisteredIterator struct { - Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenRegisteredIterator struct { + Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14192,7 +17923,7 @@ type BridgeTransferERC721TokenDeregisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { +func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14201,7 +17932,7 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenDeregistered) + it.Event = new(BridgeTransferERC721TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14216,7 +17947,7 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenDeregistered) + it.Event = new(BridgeTransferERC721TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14232,49 +17963,51 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error { +func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error { +func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenDeregistered struct { +// BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenRegistered struct { Token common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } @@ -14284,8 +18017,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistere select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenDeregistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + event := new(BridgeTransferERC721TokenRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -14306,20 +18039,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistere }), nil } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) { - event := new(BridgeTransferERC721TokenDeregistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) { + event := new(BridgeTransferERC721TokenRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenLockedIterator struct { - Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenUnlockedIterator struct { + Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14333,7 +18067,7 @@ type BridgeTransferERC721TokenLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { +func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14342,7 +18076,7 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenLocked) + it.Event = new(BridgeTransferERC721TokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14357,7 +18091,7 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenLocked) + it.Event = new(BridgeTransferERC721TokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14373,49 +18107,51 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenLockedIterator) Error() error { +func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenLockedIterator) Close() error { +func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenLocked struct { +// BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenUnlocked struct { Token common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } @@ -14425,8 +18161,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenLocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { + event := new(BridgeTransferERC721TokenUnlocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return err } event.Raw = log @@ -14447,528 +18183,561 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts }), nil } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. -// -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) { - event := new(BridgeTransferERC721TokenLocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) { + event := new(BridgeTransferERC721TokenUnlocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BridgeTransferKLAYMetaData contains all meta data concerning the BridgeTransferKLAY contract. +var BridgeTransferKLAYMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "dd9222d6": "chargeWithoutEvent()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "a066a7ed": "handleKLAYTransfer(bytes32,address,address,uint256,uint64,uint64,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "f1719966": "isLockedKLAY()", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "9f071329": "lockKLAY()", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "715018a6": "renounceOwnership()", + "75ebdc09": "requestKLAYTransfer(address,uint256,bytes)", + "7c1a0302": "requestNonce()", + "efdcd974": "setFeeReceiver(address)", + "1a2ae53e": "setKLAYFee(uint256,uint64)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "1ebdca38": "unlockKLAY()", + "54edad72": "upperHandleNonce()", + }, +} + +// BridgeTransferKLAYABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferKLAYMetaData.ABI instead. +var BridgeTransferKLAYABI = BridgeTransferKLAYMetaData.ABI + +// BridgeTransferKLAYBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferKLAYBinRuntime = `` + +// Deprecated: Use BridgeTransferKLAYMetaData.Sigs instead. +// BridgeTransferKLAYFuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferKLAYFuncSigs = BridgeTransferKLAYMetaData.Sigs + +// BridgeTransferKLAY is an auto generated Go binding around a Kaia contract. +type BridgeTransferKLAY struct { + BridgeTransferKLAYCaller // Read-only binding to the contract + BridgeTransferKLAYTransactor // Write-only binding to the contract + BridgeTransferKLAYFilterer // Log filterer for contract events +} + +// BridgeTransferKLAYCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferKLAYCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferKLAYTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferKLAYTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferKLAYFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferKLAYFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BridgeTransferKLAYSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferKLAYSession struct { + Contract *BridgeTransferKLAY // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferKLAYCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferKLAYCallerSession struct { + Contract *BridgeTransferKLAYCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BridgeTransferKLAYTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferKLAYTransactorSession struct { + Contract *BridgeTransferKLAYTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTransferKLAYRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferKLAYRaw struct { + Contract *BridgeTransferKLAY // Generic contract binding to access the raw methods on +} + +// BridgeTransferKLAYCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferKLAYCallerRaw struct { + Contract *BridgeTransferKLAYCaller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferKLAYTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferKLAYTransactorRaw struct { + Contract *BridgeTransferKLAYTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransferKLAY creates a new instance of BridgeTransferKLAY, bound to a specific deployed contract. +func NewBridgeTransferKLAY(address common.Address, backend bind.ContractBackend) (*BridgeTransferKLAY, error) { + contract, err := bindBridgeTransferKLAY(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BridgeTransferKLAY{BridgeTransferKLAYCaller: BridgeTransferKLAYCaller{contract: contract}, BridgeTransferKLAYTransactor: BridgeTransferKLAYTransactor{contract: contract}, BridgeTransferKLAYFilterer: BridgeTransferKLAYFilterer{contract: contract}}, nil +} + +// NewBridgeTransferKLAYCaller creates a new read-only instance of BridgeTransferKLAY, bound to a specific deployed contract. +func NewBridgeTransferKLAYCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferKLAYCaller, error) { + contract, err := bindBridgeTransferKLAY(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYCaller{contract: contract}, nil +} + +// NewBridgeTransferKLAYTransactor creates a new write-only instance of BridgeTransferKLAY, bound to a specific deployed contract. +func NewBridgeTransferKLAYTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferKLAYTransactor, error) { + contract, err := bindBridgeTransferKLAY(address, nil, transactor, nil) + if err != nil { return nil, err } - return event, nil + return &BridgeTransferKLAYTransactor{contract: contract}, nil } -// BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenRegisteredIterator struct { - Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// NewBridgeTransferKLAYFilterer creates a new log filterer instance of BridgeTransferKLAY, bound to a specific deployed contract. +func NewBridgeTransferKLAYFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferKLAYFilterer, error) { + contract, err := bindBridgeTransferKLAY(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYFilterer{contract: contract}, nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// bindBridgeTransferKLAY binds a generic wrapper to an already deployed contract. +func bindBridgeTransferKLAY(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferKLAYMetaData.GetAbi() + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferKLAY.Contract.BridgeTransferKLAYCaller.contract.Call(opts, result, method, params...) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transfer(opts) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error { - return it.fail +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transact(opts, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferKLAY.Contract.contract.Call(opts, result, method, params...) } -// BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.contract.Transfer(opts) } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.contract.Transact(opts, method, params...) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "MAX_OPERATOR") - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenRegistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return err - } - event.Raw = log +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts) +} - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts) } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) { - event := new(BridgeTransferERC721TokenRegistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return nil, err +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + + if err != nil { + return *new(bool), err } - return event, nil -} -// BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenUnlockedIterator struct { - Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data + return out0, err - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "configurationNonce") - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + if err != nil { + return *new(uint64), err } -} -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error { - return it.fail + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts) } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeOfERC20", arg0) - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0) +} + +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0) +} + +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeOfKLAY") - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenUnlocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) { - event := new(BridgeTransferERC721TokenUnlocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYMetaData contains all meta data concerning the BridgeTransferKLAY contract. -var BridgeTransferKLAYMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "dd9222d6": "chargeWithoutEvent()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "a066a7ed": "handleKLAYTransfer(bytes32,address,address,uint256,uint64,uint64,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "f1719966": "isLockedKLAY()", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "9f071329": "lockKLAY()", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "715018a6": "renounceOwnership()", - "75ebdc09": "requestKLAYTransfer(address,uint256,bytes)", - "7c1a0302": "requestNonce()", - "efdcd974": "setFeeReceiver(address)", - "1a2ae53e": "setKLAYFee(uint256,uint64)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "1ebdca38": "unlockKLAY()", - "54edad72": "upperHandleNonce()", - }, +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferKLAYMetaData.ABI instead. -var BridgeTransferKLAYABI = BridgeTransferKLAYMetaData.ABI +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeReceiver") -// BridgeTransferKLAYBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferKLAYBinRuntime = `` + if err != nil { + return *new(common.Address), err + } -// BridgeTransferKLAYFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferKLAYMetaData.Sigs instead. -var BridgeTransferKLAYFuncSigs = BridgeTransferKLAYMetaData.Sigs + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// BridgeTransferKLAY is an auto generated Go binding around a Kaia contract. -type BridgeTransferKLAY struct { - BridgeTransferKLAYCaller // Read-only binding to the contract - BridgeTransferKLAYTransactor // Write-only binding to the contract - BridgeTransferKLAYFilterer // Log filterer for contract events -} + return out0, err -// BridgeTransferKLAYCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferKLAYCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferKLAYTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferKLAYTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferKLAYFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferKLAYSession struct { - Contract *BridgeTransferKLAY // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "getOperatorList") -// BridgeTransferKLAYCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferKLAYCallerSession struct { - Contract *BridgeTransferKLAYCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err -// BridgeTransferKLAYTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferKLAYTransactorSession struct { - Contract *BridgeTransferKLAYTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTransferKLAYRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferKLAYRaw struct { - Contract *BridgeTransferKLAY // Generic contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferKLAYCallerRaw struct { - Contract *BridgeTransferKLAYCaller // Generic read-only contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts) } -// BridgeTransferKLAYTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferKLAYTransactorRaw struct { - Contract *BridgeTransferKLAYTransactor // Generic write-only contract binding to access the raw methods on -} +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) -// NewBridgeTransferKLAY creates a new instance of BridgeTransferKLAY, bound to a specific deployed contract. -func NewBridgeTransferKLAY(address common.Address, backend bind.ContractBackend) (*BridgeTransferKLAY, error) { - contract, err := bindBridgeTransferKLAY(address, backend, backend, backend) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferKLAY{BridgeTransferKLAYCaller: BridgeTransferKLAYCaller{contract: contract}, BridgeTransferKLAYTransactor: BridgeTransferKLAYTransactor{contract: contract}, BridgeTransferKLAYFilterer: BridgeTransferKLAYFilterer{contract: contract}}, nil -} -// NewBridgeTransferKLAYCaller creates a new read-only instance of BridgeTransferKLAY, bound to a specific deployed contract. -func NewBridgeTransferKLAYCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferKLAYCaller, error) { - contract, err := bindBridgeTransferKLAY(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeTransferKLAYCaller{contract: contract}, nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// NewBridgeTransferKLAYTransactor creates a new write-only instance of BridgeTransferKLAY, bound to a specific deployed contract. -func NewBridgeTransferKLAYTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferKLAYTransactor, error) { - contract, err := bindBridgeTransferKLAY(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferKLAYTransactor{contract: contract}, nil +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0) } -// NewBridgeTransferKLAYFilterer creates a new log filterer instance of BridgeTransferKLAY, bound to a specific deployed contract. -func NewBridgeTransferKLAYFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferKLAYFilterer, error) { - contract, err := bindBridgeTransferKLAY(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferKLAYFilterer{contract: contract}, nil +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0) } -// bindBridgeTransferKLAY binds a generic wrapper to an already deployed contract. -func bindBridgeTransferKLAY(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferKLAYMetaData.GetAbi() +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "handledRequestTx", arg0) + if err != nil { - return nil, err + return *new(bool), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferKLAY.Contract.BridgeTransferKLAYCaller.contract.Call(opts, result, method, params...) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transfer(opts) +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transact(opts, method, params...) +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferKLAY.Contract.contract.Call(opts, result, method, params...) +// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// +// Solidity: function isLockedKLAY() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "isLockedKLAY") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.contract.Transfer(opts) +// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// +// Solidity: function isLockedKLAY() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsLockedKLAY() (bool, error) { + return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.contract.Transact(opts, method, params...) +// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// +// Solidity: function isLockedKLAY() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsLockedKLAY() (bool, error) { + return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "isOwner") + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsOwner() (bool, error) { + return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsOwner() (bool, error) { + return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsRunning(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTransferKLAY.contract.Call(opts, &out, "isRunning") + if err != nil { return *new(bool), err } @@ -14976,28 +18745,30 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ClosedValueTransferVotes(op out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsRunning() (bool, error) { + return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsRunning() (bool, error) { + return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "lowerHandleNonce") + if err != nil { return *new(uint64), err } @@ -15005,144 +18776,185 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ConfigurationNonce(opts *bi out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferKLAY.contract.Call(opts, &out, "modeMintBurn") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ModeMintBurn() (bool, error) { + return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts) +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts) +} + +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _BridgeTransferKLAY.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeOfKLAY") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { - return *new(*big.Int), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "feeReceiver") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "operators", arg0) + if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function owner() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "getOperatorList") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "owner") + if err != nil { - return *new([]common.Address), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Owner() (common.Address, error) { + return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Owner() (common.Address, error) { + return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + err := _BridgeTransferKLAY.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { return *new(uint64), err } @@ -15150,696 +18962,868 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandleNoncesToBlockNums(opt out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "handledRequestTx", arg0) + err := _BridgeTransferKLAY.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RequestNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts) } -// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isLockedKLAY() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) { +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "isLockedKLAY") + err := _BridgeTransferKLAY.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isLockedKLAY() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsLockedKLAY() (bool, error) { - return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts) } -// IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isLockedKLAY() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsLockedKLAY() (bool, error) { - return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function chargeWithoutEvent() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) ChargeWithoutEvent(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "chargeWithoutEvent") } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsOwner() (bool, error) { - return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts) +// Solidity: function chargeWithoutEvent() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ChargeWithoutEvent() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsOwner() (bool, error) { - return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts) +// Solidity: function chargeWithoutEvent() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) ChargeWithoutEvent() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "deregisterOperator", _operator) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsRunning() (bool, error) { - return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsRunning() (bool, error) { - return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) HandleKLAYTransfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "handleKLAYTransfer", _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function lockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) LockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "lockKLAY") } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ModeMintBurn() (bool, error) { - return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts) +// Solidity: function lockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LockKLAY() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts) +// Solidity: function lockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) LockKLAY() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "registerOperator", _operator) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "renounceOwnership") } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "operators", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RequestKLAYTransfer(opts *bind.TransactOpts, _to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "requestKLAYTransfer", _to, _value, _extraData) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0) +// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Owner() (common.Address, error) { - return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Owner() (common.Address, error) { - return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetKLAYFee(opts *bind.TransactOpts, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "setKLAYFee", _fee, _requestNonce) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err - } +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) +} - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold) +} - return out0, err +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "setRunningStatus", _status) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RequestNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetRunningStatus(&_BridgeTransferKLAY.TransactOpts, _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferKLAY.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.SetRunningStatus(&_BridgeTransferKLAY.TransactOpts, _status) +} - return out0, err +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "start", _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status) } -// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function chargeWithoutEvent() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) ChargeWithoutEvent(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "chargeWithoutEvent") +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "transferOwnership", newOwner) } -// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function chargeWithoutEvent() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ChargeWithoutEvent() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner) } -// ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function chargeWithoutEvent() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) ChargeWithoutEvent() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "deregisterOperator", _operator) +// Solidity: function unlockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) UnlockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.Transact(opts, "unlockKLAY") } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) +// Solidity: function unlockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UnlockKLAY() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) +// Solidity: function unlockKLAY() returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) UnlockKLAY() (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts) } -// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) HandleKLAYTransfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "handleKLAYTransfer", _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) +// Solidity: fallback() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.contract.RawTransact(opts, calldata) } -// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) +// Solidity: fallback() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata) } -// HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed. +// Fallback is a paid mutator transaction binding the contract fallback function. // -// Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData) +// Solidity: fallback() payable returns() +func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata) } -// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. +// BridgeTransferKLAYERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYERC20FeeChangedIterator struct { + Event *BridgeTransferKLAYERC20FeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYERC20FeeChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferKLAYERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function lockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) LockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "lockKLAY") +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferKLAYERC20FeeChangedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYERC20FeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function lockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LockKLAY() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYERC20FeeChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// LockKLAY is a paid mutator transaction binding the contract method 0x9f071329. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function lockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) LockKLAY() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferKLAYERC20FeeChanged, error) { + event := new(BridgeTransferKLAYERC20FeeChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "registerOperator", _operator) -} +// BridgeTransferKLAYFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYFeeReceiverChangedIterator struct { + Event *BridgeTransferKLAYFeeReceiverChanged // Event containing the contract specifics and raw log -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "renounceOwnership") -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. -// -// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RequestKLAYTransfer(opts *bind.TransactOpts, _to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "requestKLAYTransfer", _to, _value, _extraData) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Error() error { + return it.fail } -// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. -// -// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09. -// -// Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData) +// BridgeTransferKLAYFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYFeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferKLAYFeeReceiverChangedIterator, error) { -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYFeeReceiverChangedIterator{contract: _BridgeTransferKLAY.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetKLAYFee(opts *bind.TransactOpts, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "setKLAYFee", _fee, _requestNonce) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. -// -// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e. -// -// Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce) -} + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYFeeReceiverChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferKLAYFeeReceiverChanged, error) { + event := new(BridgeTransferKLAYFeeReceiverChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold) +// BridgeTransferKLAYHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYHandleValueTransferIterator struct { + Event *BridgeTransferKLAYHandleValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "start", _status) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYHandleValueTransferIterator) Error() error { + return it.fail } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "transferOwnership", newOwner) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYHandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner) +// BridgeTransferKLAYHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYHandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYHandleValueTransferIterator, error) { -// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. -// -// Solidity: function unlockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) UnlockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.Transact(opts, "unlockKLAY") -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. -// -// Solidity: function unlockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UnlockKLAY() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYHandleValueTransferIterator{contract: _BridgeTransferKLAY.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function unlockKLAY() returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) UnlockKLAY() (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.contract.RawTransact(opts, calldata) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata) + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYHandleValueTransfer) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Fallback is a paid mutator transaction binding the contract fallback function. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: fallback() payable returns() -func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferKLAYHandleValueTransfer, error) { + event := new(BridgeTransferKLAYHandleValueTransfer) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BridgeTransferKLAYERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYERC20FeeChangedIterator struct { - Event *BridgeTransferKLAYERC20FeeChanged // Event containing the contract specifics and raw log +// BridgeTransferKLAYKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYFeeChangedIterator struct { + Event *BridgeTransferKLAYKLAYFeeChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -15853,7 +19837,7 @@ type BridgeTransferKLAYERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool { +func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -15862,7 +19846,7 @@ func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYERC20FeeChanged) + it.Event = new(BridgeTransferKLAYKLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15877,7 +19861,7 @@ func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYERC20FeeChanged) + it.Event = new(BridgeTransferKLAYKLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -15893,58 +19877,51 @@ func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYERC20FeeChangedIterator) Error() error { +func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYERC20FeeChangedIterator) Close() error { +func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYERC20FeeChanged struct { - Token common.Address - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferKLAYERC20FeeChangedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYKLAYFeeChangedIterator, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) } - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } - return &BridgeTransferKLAYERC20FeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYKLAYFeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) } - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } @@ -15954,8 +19931,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchERC20FeeChanged(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYERC20FeeChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTransferKLAYKLAYFeeChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return err } event.Raw = log @@ -15976,20 +19953,21 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchERC20FeeChanged(opts }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferKLAYERC20FeeChanged, error) { - event := new(BridgeTransferKLAYERC20FeeChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYKLAYFeeChanged, error) { + event := new(BridgeTransferKLAYKLAYFeeChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYFeeReceiverChangedIterator struct { - Event *BridgeTransferKLAYFeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferKLAYKLAYLockedIterator is returned from FilterKLAYLocked and is used to iterate over the raw logs and unpacked data for KLAYLocked events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYLockedIterator struct { + Event *BridgeTransferKLAYKLAYLocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16003,7 +19981,7 @@ type BridgeTransferKLAYFeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool { +func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16012,7 +19990,7 @@ func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeReceiverChanged) + it.Event = new(BridgeTransferKLAYKLAYLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16027,7 +20005,7 @@ func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeReceiverChanged) + it.Event = new(BridgeTransferKLAYKLAYLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16043,49 +20021,40 @@ func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Error() error { +func (it *BridgeTransferKLAYKLAYLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Close() error { +func (it *BridgeTransferKLAYKLAYLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYFeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYKLAYLocked represents a KLAYLocked event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYLocked struct { + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterKLAYLocked is a free log retrieval operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferKLAYFeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } +// Solidity: event KLAYLocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYLockedIterator, error) { - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYLocked") if err != nil { return nil, err } - return &BridgeTransferKLAYFeeReceiverChangedIterator{contract: _BridgeTransferKLAY.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYKLAYLockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYLocked", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchKLAYLocked is a free log subscription operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } +// Solidity: event KLAYLocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYLocked) (event.Subscription, error) { - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYLocked") if err != nil { return nil, err } @@ -16095,8 +20064,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchFeeReceiverChanged(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYFeeReceiverChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTransferKLAYKLAYLocked) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil { return err } event.Raw = log @@ -16117,20 +20086,21 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchFeeReceiverChanged(o }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseKLAYLocked is a log parse operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferKLAYFeeReceiverChanged, error) { - event := new(BridgeTransferKLAYFeeReceiverChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event KLAYLocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYLocked(log types.Log) (*BridgeTransferKLAYKLAYLocked, error) { + event := new(BridgeTransferKLAYKLAYLocked) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYHandleValueTransferIterator struct { - Event *BridgeTransferKLAYHandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferKLAYKLAYUnlockedIterator is returned from FilterKLAYUnlocked and is used to iterate over the raw logs and unpacked data for KLAYUnlocked events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYUnlockedIterator struct { + Event *BridgeTransferKLAYKLAYUnlocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16144,7 +20114,7 @@ type BridgeTransferKLAYHandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool { +func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16153,7 +20123,7 @@ func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYHandleValueTransfer) + it.Event = new(BridgeTransferKLAYKLAYUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16168,7 +20138,7 @@ func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYHandleValueTransfer) + it.Event = new(BridgeTransferKLAYKLAYUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16184,73 +20154,40 @@ func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYHandleValueTransferIterator) Error() error { +func (it *BridgeTransferKLAYKLAYUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYHandleValueTransferIterator) Close() error { +func (it *BridgeTransferKLAYKLAYUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYHandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYKLAYUnlocked represents a KLAYUnlocked event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYKLAYUnlocked struct { + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterKLAYUnlocked is a free log retrieval operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYHandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event KLAYUnlocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYUnlockedIterator, error) { - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYUnlocked") if err != nil { return nil, err } - return &BridgeTransferKLAYHandleValueTransferIterator{contract: _BridgeTransferKLAY.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYKLAYUnlockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYUnlocked", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchKLAYUnlocked is a free log subscription operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event KLAYUnlocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYUnlocked) (event.Subscription, error) { - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYUnlocked") if err != nil { return nil, err } @@ -16260,8 +20197,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchHandleValueTransfer( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYHandleValueTransfer) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTransferKLAYKLAYUnlocked) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil { return err } event.Raw = log @@ -16282,20 +20219,21 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchHandleValueTransfer( }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseKLAYUnlocked is a log parse operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferKLAYHandleValueTransfer, error) { - event := new(BridgeTransferKLAYHandleValueTransfer) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event KLAYUnlocked() +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYUnlocked(log types.Log) (*BridgeTransferKLAYKLAYUnlocked, error) { + event := new(BridgeTransferKLAYKLAYUnlocked) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYFeeChangedIterator struct { - Event *BridgeTransferKLAYKLAYFeeChanged // Event containing the contract specifics and raw log +// BridgeTransferKLAYOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorDeregisteredIterator struct { + Event *BridgeTransferKLAYOperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16309,7 +20247,7 @@ type BridgeTransferKLAYKLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool { +func (it *BridgeTransferKLAYOperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16318,7 +20256,7 @@ func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYFeeChanged) + it.Event = new(BridgeTransferKLAYOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16333,7 +20271,7 @@ func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYFeeChanged) + it.Event = new(BridgeTransferKLAYOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16349,49 +20287,51 @@ func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Error() error { +func (it *BridgeTransferKLAYOperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Close() error { +func (it *BridgeTransferKLAYOperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYOperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYKLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferKLAYOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &BridgeTransferKLAYKLAYFeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYOperatorDeregisteredIterator{contract: _BridgeTransferKLAY.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -16401,8 +20341,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYFeeChanged(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYKLAYFeeChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeTransferKLAYOperatorDeregistered) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -16423,20 +20363,21 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYFeeChanged(opts }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYKLAYFeeChanged, error) { - event := new(BridgeTransferKLAYKLAYFeeChanged) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferKLAYOperatorDeregistered, error) { + event := new(BridgeTransferKLAYOperatorDeregistered) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYKLAYLockedIterator is returned from FilterKLAYLocked and is used to iterate over the raw logs and unpacked data for KLAYLocked events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYLockedIterator struct { - Event *BridgeTransferKLAYKLAYLocked // Event containing the contract specifics and raw log +// BridgeTransferKLAYOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorRegisteredIterator struct { + Event *BridgeTransferKLAYOperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16450,7 +20391,7 @@ type BridgeTransferKLAYKLAYLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool { +func (it *BridgeTransferKLAYOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16459,7 +20400,7 @@ func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYLocked) + it.Event = new(BridgeTransferKLAYOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16474,7 +20415,7 @@ func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYLocked) + it.Event = new(BridgeTransferKLAYOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16490,38 +20431,51 @@ func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYKLAYLockedIterator) Error() error { +func (it *BridgeTransferKLAYOperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYKLAYLockedIterator) Close() error { +func (it *BridgeTransferKLAYOperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYKLAYLocked represents a KLAYLocked event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYLocked struct { - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYOperatorRegistered represents a OperatorRegistered event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYLocked is a free log retrieval operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event KLAYLocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYLockedIterator, error) { - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYLocked") +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferKLAYOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTransferKLAYKLAYLockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYLocked", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYOperatorRegisteredIterator{contract: _BridgeTransferKLAY.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchKLAYLocked is a free log subscription operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event KLAYLocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYLocked) (event.Subscription, error) { - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYLocked") +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -16531,8 +20485,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYLocked(opts *bin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYKLAYLocked) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil { + event := new(BridgeTransferKLAYOperatorRegistered) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -16553,20 +20507,21 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYLocked(opts *bin }), nil } -// ParseKLAYLocked is a log parse operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event KLAYLocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYLocked(log types.Log) (*BridgeTransferKLAYKLAYLocked, error) { - event := new(BridgeTransferKLAYKLAYLocked) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferKLAYOperatorRegistered, error) { + event := new(BridgeTransferKLAYOperatorRegistered) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferKLAYKLAYUnlockedIterator is returned from FilterKLAYUnlocked and is used to iterate over the raw logs and unpacked data for KLAYUnlocked events raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYUnlockedIterator struct { - Event *BridgeTransferKLAYKLAYUnlocked // Event containing the contract specifics and raw log +// BridgeTransferKLAYOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorThresholdChangedIterator struct { + Event *BridgeTransferKLAYOperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16580,7 +20535,7 @@ type BridgeTransferKLAYKLAYUnlockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool { +func (it *BridgeTransferKLAYOperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16589,7 +20544,7 @@ func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYUnlocked) + it.Event = new(BridgeTransferKLAYOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16604,7 +20559,7 @@ func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferKLAYKLAYUnlocked) + it.Event = new(BridgeTransferKLAYOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16620,38 +20575,52 @@ func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYKLAYUnlockedIterator) Error() error { +func (it *BridgeTransferKLAYOperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferKLAYKLAYUnlockedIterator) Close() error { +func (it *BridgeTransferKLAYOperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferKLAYKLAYUnlocked represents a KLAYUnlocked event raised by the BridgeTransferKLAY contract. -type BridgeTransferKLAYKLAYUnlocked struct { - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferKLAYOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYUnlocked is a free log retrieval operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYUnlocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYUnlockedIterator, error) { - logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYUnlocked") +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferKLAYOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeTransferKLAYKLAYUnlockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYUnlocked", logs: logs, sub: sub}, nil + return &BridgeTransferKLAYOperatorThresholdChangedIterator{contract: _BridgeTransferKLAY.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchKLAYUnlocked is a free log subscription operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYUnlocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYUnlocked) (event.Subscription, error) { - logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYUnlocked") +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } + + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -16661,8 +20630,8 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYUnlocked(opts *b select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYKLAYUnlocked) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil { + event := new(BridgeTransferKLAYOperatorThresholdChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -16683,14 +20652,15 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYUnlocked(opts *b }), nil } -// ParseKLAYUnlocked is a log parse operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYUnlocked() -func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYUnlocked(log types.Log) (*BridgeTransferKLAYKLAYUnlocked, error) { - event := new(BridgeTransferKLAYKLAYUnlocked) - if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferKLAYOperatorThresholdChanged, error) { + event := new(BridgeTransferKLAYOperatorThresholdChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16772,6 +20742,7 @@ type BridgeTransferKLAYOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferKLAYOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -16792,6 +20763,7 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOwnershipTransferre // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -16841,6 +20813,7 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseOwnershipTransferred if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16928,6 +20901,7 @@ type BridgeTransferKLAYRequestValueTransfer struct { // // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYRequestValueTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -16952,6 +20926,7 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransfe // // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -17005,6 +20980,7 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseRequestValueTransfer if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17094,6 +21070,7 @@ type BridgeTransferKLAYRequestValueTransferEncoded struct { // // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYRequestValueTransferEncodedIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -17118,6 +21095,7 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransfe // // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -17171,6 +21149,141 @@ func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseRequestValueTransfer if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return nil, err } + event.Raw = log + return event, nil +} + +// BridgeTransferKLAYRunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYRunningStatusChangedIterator struct { + Event *BridgeTransferKLAYRunningStatusChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYRunningStatusChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYRunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYRunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYRunningStatusChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYRunningStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTransferKLAYRunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransferKLAY contract. +type BridgeTransferKLAYRunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferKLAYRunningStatusChangedIterator, error) { + + logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return &BridgeTransferKLAYRunningStatusChangedIterator{contract: _BridgeTransferKLAY.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil +} + +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYRunningStatusChanged) (event.Subscription, error) { + + logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYRunningStatusChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. +// +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferKLAYRunningStatusChanged, error) { + event := new(BridgeTransferKLAYRunningStatusChanged) + if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log return event, nil } @@ -17365,8 +21478,8 @@ var ERC165ABI = ERC165MetaData.ABI // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC165BinRuntime = `` -// ERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC165MetaData.Sigs instead. +// ERC165FuncSigs maps the 4-byte function signature to its string representation. var ERC165FuncSigs = ERC165MetaData.Sigs // ERC165 is an auto generated Go binding around a Kaia contract. @@ -17517,6 +21630,7 @@ func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -17524,6 +21638,7 @@ func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -17563,8 +21678,8 @@ var ERC20ABI = ERC20MetaData.ABI // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820746e081a090af1d3bc4707ca2eb3e72598dc62066ed3600a0088684c232e3dcc0029` -// ERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20MetaData.Sigs instead. +// ERC20FuncSigs maps the 4-byte function signature to its string representation. var ERC20FuncSigs = ERC20MetaData.Sigs // ERC20Bin is the compiled bytecode used for deploying new contracts. @@ -17736,6 +21851,7 @@ func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method strin func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -17743,6 +21859,7 @@ func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -17765,6 +21882,7 @@ func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -17772,6 +21890,7 @@ func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -17794,6 +21913,7 @@ func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, e func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -17801,6 +21921,7 @@ func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -18001,6 +22122,7 @@ type ERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -18021,6 +22143,7 @@ func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []commo // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -18070,6 +22193,7 @@ func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18152,6 +22276,7 @@ type ERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -18172,6 +22297,7 @@ func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -18221,6 +22347,7 @@ func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18249,8 +22376,8 @@ var ERC20BurnableABI = ERC20BurnableMetaData.ABI // ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cbed5e162690632b84d9f5fc48a461561ec9d0a542c8cae309a5e9946d21828e0029` -// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20BurnableMetaData.Sigs instead. +// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. var ERC20BurnableFuncSigs = ERC20BurnableMetaData.Sigs // ERC20BurnableBin is the compiled bytecode used for deploying new contracts. @@ -18422,6 +22549,7 @@ func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOp func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -18429,6 +22557,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -18451,6 +22580,7 @@ func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -18458,6 +22588,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, accoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -18480,6 +22611,7 @@ func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Addre func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -18487,6 +22619,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -18729,6 +22862,7 @@ type ERC20BurnableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -18749,6 +22883,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpt // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -18798,6 +22933,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC2 if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18880,6 +23016,7 @@ type ERC20BurnableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -18900,6 +23037,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpt // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -18949,6 +23087,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC2 if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18979,8 +23118,8 @@ var ERC20MintableABI = ERC20MintableMetaData.ABI // ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820a92b4252e4e19cc559eef0c2a7e8667316b7c41692b585d93055461522689e9f0029` -// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20MintableMetaData.Sigs instead. +// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. var ERC20MintableFuncSigs = ERC20MintableMetaData.Sigs // ERC20MintableBin is the compiled bytecode used for deploying new contracts. @@ -19152,6 +23291,7 @@ func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOp func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -19159,6 +23299,7 @@ func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -19181,6 +23322,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -19188,6 +23330,7 @@ func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, accoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -19210,6 +23353,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Addre func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -19217,6 +23361,7 @@ func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -19239,6 +23384,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Addres func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -19246,6 +23392,7 @@ func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -19509,6 +23656,7 @@ type ERC20MintableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -19529,6 +23677,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpt // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -19578,6 +23727,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC2 if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19658,6 +23808,7 @@ type ERC20MintableMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -19674,6 +23825,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.Filter // // Solidity: event MinterAdded(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -19719,6 +23871,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*E if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19799,6 +23952,7 @@ type ERC20MintableMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -19815,6 +23969,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.Filt // // Solidity: event MinterRemoved(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -19860,6 +24015,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) ( if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19942,6 +24098,7 @@ type ERC20MintableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19962,6 +24119,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpt // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -20011,6 +24169,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC2 if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20039,8 +24198,8 @@ var ERC721ABI = ERC721MetaData.ABI // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029` -// ERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetaData.Sigs instead. +// ERC721FuncSigs maps the 4-byte function signature to its string representation. var ERC721FuncSigs = ERC721MetaData.Sigs // ERC721Bin is the compiled bytecode used for deploying new contracts. @@ -20212,6 +24371,7 @@ func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -20219,6 +24379,7 @@ func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -20241,6 +24402,7 @@ func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, e func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -20248,6 +24410,7 @@ func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -20270,6 +24433,7 @@ func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addres func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -20277,6 +24441,7 @@ func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common. out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -20299,6 +24464,7 @@ func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, opera func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -20306,6 +24472,7 @@ func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (com out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -20328,6 +24495,7 @@ func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, e func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -20335,6 +24503,7 @@ func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -20535,6 +24704,7 @@ type ERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -20559,6 +24729,7 @@ func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -20612,6 +24783,7 @@ func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, er if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20694,6 +24866,7 @@ type ERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -20714,6 +24887,7 @@ func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -20763,6 +24937,7 @@ func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721Approv if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20845,6 +25020,7 @@ type ERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -20869,6 +25045,7 @@ func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -20922,6 +25099,7 @@ func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, er if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20951,8 +25129,8 @@ var ERC721BurnableABI = ERC721BurnableMetaData.ABI // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029` -// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721BurnableMetaData.Sigs instead. +// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs // ERC721BurnableBin is the compiled bytecode used for deploying new contracts. @@ -21124,6 +25302,7 @@ func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.Transact func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -21131,6 +25310,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -21153,6 +25333,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Addre func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -21160,6 +25341,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -21182,6 +25364,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -21189,6 +25372,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -21211,6 +25395,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner commo func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -21218,6 +25403,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -21240,6 +25426,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -21247,6 +25434,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -21468,6 +25656,7 @@ type ERC721BurnableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21492,6 +25681,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21545,6 +25735,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21627,6 +25818,7 @@ type ERC721BurnableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21647,6 +25839,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21696,6 +25889,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21778,6 +25972,7 @@ type ERC721BurnableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -21802,6 +25997,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -21855,6 +26051,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21886,8 +26083,8 @@ var ERC721MetadataABI = ERC721MetadataMetaData.ABI // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582016b1d29c197257e5e7badcb1dd4bb9a362c53f457ed9517860d3d71d5d80fc420029` -// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetadataMetaData.Sigs instead. +// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. var ERC721MetadataFuncSigs = ERC721MetadataMetaData.Sigs // ERC721MetadataBin is the compiled bytecode used for deploying new contracts. @@ -22059,6 +26256,7 @@ func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.Transact func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -22066,6 +26264,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -22088,6 +26287,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Addre func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -22095,6 +26295,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -22117,6 +26318,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -22124,6 +26326,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -22146,6 +26349,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner commo func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -22153,6 +26357,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -22175,6 +26380,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) { func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -22182,6 +26388,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -22204,6 +26411,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -22211,6 +26419,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -22233,6 +26442,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceI func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -22240,6 +26450,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -22262,6 +26473,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) { func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -22269,6 +26481,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, token out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -22469,6 +26682,7 @@ type ERC721MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22493,6 +26707,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22546,6 +26761,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22628,6 +26844,7 @@ type ERC721MetadataApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22648,6 +26865,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22697,6 +26915,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22779,6 +26998,7 @@ type ERC721MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -22803,6 +27023,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -22856,6 +27077,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22890,8 +27112,8 @@ var ERC721MetadataMintableABI = ERC721MetadataMintableMetaData.ABI // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721MetadataMintableBinRuntime = `` -// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetadataMintableMetaData.Sigs instead. +// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. var ERC721MetadataMintableFuncSigs = ERC721MetadataMintableMetaData.Sigs // ERC721MetadataMintable is an auto generated Go binding around a Kaia contract. @@ -23042,6 +27264,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opt func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -23049,6 +27272,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -23071,6 +27295,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(ow func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -23078,6 +27303,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *b out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -23100,6 +27326,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved( func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -23107,6 +27334,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(op out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -23129,6 +27357,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedFo func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -23136,6 +27365,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -23158,6 +27388,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(acc func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -23165,6 +27396,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -23187,6 +27419,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (stri func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -23194,6 +27427,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -23216,6 +27450,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(toke func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -23223,6 +27458,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(o out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -23245,6 +27481,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInte func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -23252,6 +27489,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.C out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -23274,6 +27512,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (st func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -23281,6 +27520,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -23544,6 +27784,7 @@ type ERC721MetadataMintableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23568,6 +27809,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(op // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23621,6 +27863,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23703,6 +27946,7 @@ type ERC721MetadataMintableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23723,6 +27967,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalFor // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23772,6 +28017,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForA if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23852,6 +28098,7 @@ type ERC721MetadataMintableMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -23868,6 +28115,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded // // Solidity: event MinterAdded(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -23913,6 +28161,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded( if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23993,6 +28242,7 @@ type ERC721MetadataMintableMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24009,6 +28259,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemov // // Solidity: event MinterRemoved(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24054,6 +28305,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemove if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24136,6 +28388,7 @@ type ERC721MetadataMintableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -24160,6 +28413,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(op // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -24213,6 +28467,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24231,8 +28486,8 @@ var IERC165ABI = IERC165MetaData.ABI // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC165BinRuntime = `` -// IERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC165MetaData.Sigs instead. +// IERC165FuncSigs maps the 4-byte function signature to its string representation. var IERC165FuncSigs = IERC165MetaData.Sigs // IERC165 is an auto generated Go binding around a Kaia contract. @@ -24383,6 +28638,7 @@ func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -24390,6 +28646,7 @@ func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -24426,8 +28683,8 @@ var IERC20ABI = IERC20MetaData.ABI // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BinRuntime = `` -// IERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetaData.Sigs instead. +// IERC20FuncSigs maps the 4-byte function signature to its string representation. var IERC20FuncSigs = IERC20MetaData.Sigs // IERC20 is an auto generated Go binding around a Kaia contract. @@ -24578,6 +28835,7 @@ func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -24585,6 +28843,7 @@ func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -24607,6 +28866,7 @@ func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender comm func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -24614,6 +28874,7 @@ func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -24636,6 +28897,7 @@ func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -24643,6 +28905,7 @@ func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -24801,6 +29064,7 @@ type IERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -24821,6 +29085,7 @@ func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -24870,6 +29135,7 @@ func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, er if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24952,6 +29218,7 @@ type IERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -24972,6 +29239,7 @@ func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -25021,6 +29289,7 @@ func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, er if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -25039,8 +29308,8 @@ var IERC20BridgeReceiverABI = IERC20BridgeReceiverMetaData.ABI // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BridgeReceiverBinRuntime = `` -// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20BridgeReceiverMetaData.Sigs instead. +// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC20BridgeReceiverFuncSigs = IERC20BridgeReceiverMetaData.Sigs // IERC20BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -25230,8 +29499,8 @@ var IERC721ABI = IERC721MetaData.ABI // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BinRuntime = `` -// IERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetaData.Sigs instead. +// IERC721FuncSigs maps the 4-byte function signature to its string representation. var IERC721FuncSigs = IERC721MetaData.Sigs // IERC721 is an auto generated Go binding around a Kaia contract. @@ -25382,6 +29651,7 @@ func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -25389,6 +29659,7 @@ func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -25411,6 +29682,7 @@ func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -25418,6 +29690,7 @@ func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -25440,6 +29713,7 @@ func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addr func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -25447,6 +29721,7 @@ func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -25469,6 +29744,7 @@ func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, ope func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -25476,6 +29752,7 @@ func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -25498,6 +29775,7 @@ func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -25505,6 +29783,7 @@ func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -25705,6 +29984,7 @@ type IERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -25729,6 +30009,7 @@ func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []c // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -25782,6 +30063,7 @@ func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -25864,6 +30146,7 @@ type IERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -25884,6 +30167,7 @@ func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, own // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -25933,6 +30217,7 @@ func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721App if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26015,6 +30300,7 @@ type IERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -26039,6 +30325,7 @@ func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []co // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -26092,6 +30379,7 @@ func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26110,8 +30398,8 @@ var IERC721BridgeReceiverABI = IERC721BridgeReceiverMetaData.ABI // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BridgeReceiverBinRuntime = `` -// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721BridgeReceiverMetaData.Sigs instead. +// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721BridgeReceiverFuncSigs = IERC721BridgeReceiverMetaData.Sigs // IERC721BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -26304,8 +30592,8 @@ var IERC721MetadataABI = IERC721MetadataMetaData.ABI // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721MetadataBinRuntime = `` -// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetadataMetaData.Sigs instead. +// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. var IERC721MetadataFuncSigs = IERC721MetadataMetaData.Sigs // IERC721Metadata is an auto generated Go binding around a Kaia contract. @@ -26456,6 +30744,7 @@ func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.Transa func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -26463,6 +30752,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, ow out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -26485,6 +30775,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Add func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -26492,6 +30783,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -26514,6 +30806,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.I func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -26521,6 +30814,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -26543,6 +30837,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner com func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -26550,6 +30845,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -26572,6 +30868,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -26579,6 +30876,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, toke out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -26601,6 +30899,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -26608,6 +30907,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -26630,6 +30930,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfac func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -26637,6 +30938,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -26659,6 +30961,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -26666,6 +30969,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tok out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -26866,6 +31170,7 @@ type IERC721MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -26890,6 +31195,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.Filte // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -26943,6 +31249,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27025,6 +31332,7 @@ type IERC721MetadataApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -27045,6 +31353,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -27094,6 +31403,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.L if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27176,6 +31486,7 @@ type IERC721MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27200,6 +31511,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.Filte // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27253,6 +31565,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27271,8 +31584,8 @@ var IERC721ReceiverABI = IERC721ReceiverMetaData.ABI // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721ReceiverBinRuntime = `` -// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721ReceiverMetaData.Sigs instead. +// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721ReceiverFuncSigs = IERC721ReceiverMetaData.Sigs // IERC721Receiver is an auto generated Go binding around a Kaia contract. @@ -27455,8 +31768,8 @@ var MinterRoleABI = MinterRoleMetaData.ABI // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MinterRoleBinRuntime = `` -// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MinterRoleMetaData.Sigs instead. +// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. var MinterRoleFuncSigs = MinterRoleMetaData.Sigs // MinterRole is an auto generated Go binding around a Kaia contract. @@ -27607,6 +31920,7 @@ func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _MinterRole.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -27614,6 +31928,7 @@ func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -27749,6 +32064,7 @@ type MinterRoleMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -27765,6 +32081,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -27810,6 +32127,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterR if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27890,6 +32208,7 @@ type MinterRoleMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -27906,6 +32225,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -27951,6 +32271,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*Minte if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27972,8 +32293,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -28124,6 +32445,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -28131,6 +32453,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -28153,6 +32476,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -28160,6 +32484,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -28296,6 +32621,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -28316,6 +32642,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -28365,9 +32692,164 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } +// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. +var ReentrancyGuardMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]", +} + +// ReentrancyGuardABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardMetaData.ABI instead. +var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI + +// ReentrancyGuardBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ReentrancyGuardBinRuntime = `` + +// ReentrancyGuard is an auto generated Go binding around a Kaia contract. +type ReentrancyGuard struct { + ReentrancyGuardCaller // Read-only binding to the contract + ReentrancyGuardTransactor // Write-only binding to the contract + ReentrancyGuardFilterer // Log filterer for contract events +} + +// ReentrancyGuardCaller is an auto generated read-only Go binding around a Kaia contract. +type ReentrancyGuardCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardTransactor is an auto generated write-only Go binding around a Kaia contract. +type ReentrancyGuardTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ReentrancyGuardFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ReentrancyGuardSession struct { + Contract *ReentrancyGuard // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ReentrancyGuardCallerSession struct { + Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ReentrancyGuardTransactorSession struct { + Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardRaw is an auto generated low-level Go binding around a Kaia contract. +type ReentrancyGuardRaw struct { + Contract *ReentrancyGuard // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ReentrancyGuardCallerRaw struct { + Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ReentrancyGuardTransactorRaw struct { + Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { + contract, err := bindReentrancyGuard(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { + contract, err := bindReentrancyGuard(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardCaller{contract: contract}, nil +} + +// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { + contract, err := bindReentrancyGuard(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardTransactor{contract: contract}, nil +} + +// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { + contract, err := bindReentrancyGuard(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardFilterer{contract: contract}, nil +} + +// bindReentrancyGuard binds a generic wrapper to an already deployed contract. +func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) +} + // RolesMetaData contains all meta data concerning the Roles contract. var RolesMetaData = &bind.MetaData{ ABI: "[]", @@ -28544,6 +33026,182 @@ func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method strin return _Roles.Contract.contract.Transact(opts, method, params...) } +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201f6a1eb88e486812faf01c008787e4c478a4e39bb6d28bea2893ded92860220c0029", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const SafeERC20BinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201f6a1eb88e486812faf01c008787e4c478a4e39bb6d28bea2893ded92860220c0029` + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Kaia contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around a Kaia contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around a Kaia contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around a Kaia contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around a Kaia contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} + // SafeMathMetaData contains all meta data concerning the SafeMath contract. var SafeMathMetaData = &bind.MetaData{ ABI: "[]", diff --git a/contracts/contracts/system_contracts/consensus/Kip163.go b/contracts/contracts/system_contracts/consensus/Kip163.go index 9fe870ea2..c17c86212 100644 --- a/contracts/contracts/system_contracts/consensus/Kip163.go +++ b/contracts/contracts/system_contracts/consensus/Kip163.go @@ -58,8 +58,8 @@ var AccessControlABI = AccessControlMetaData.ABI // AccessControlBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AccessControlBinRuntime = `` -// AccessControlFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AccessControlMetaData.Sigs instead. +// AccessControlFuncSigs maps the 4-byte function signature to its string representation. var AccessControlFuncSigs = AccessControlMetaData.Sigs // AccessControl is an auto generated Go binding around a Kaia contract. @@ -210,6 +210,7 @@ func (_AccessControl *AccessControlTransactorRaw) Transact(opts *bind.TransactOp func (_AccessControl *AccessControlCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _AccessControl.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -217,6 +218,7 @@ func (_AccessControl *AccessControlCaller) DEFAULTADMINROLE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. @@ -239,6 +241,7 @@ func (_AccessControl *AccessControlCallerSession) DEFAULTADMINROLE() ([32]byte, func (_AccessControl *AccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _AccessControl.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -246,6 +249,7 @@ func (_AccessControl *AccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, rol out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -268,6 +272,7 @@ func (_AccessControl *AccessControlCallerSession) GetRoleAdmin(role [32]byte) ([ func (_AccessControl *AccessControlCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _AccessControl.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -275,6 +280,7 @@ func (_AccessControl *AccessControlCaller) HasRole(opts *bind.CallOpts, role [32 out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -297,6 +303,7 @@ func (_AccessControl *AccessControlCallerSession) HasRole(role [32]byte, account func (_AccessControl *AccessControlCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _AccessControl.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -304,6 +311,7 @@ func (_AccessControl *AccessControlCaller) SupportsInterface(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -462,6 +470,7 @@ type AccessControlRoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_AccessControl *AccessControlFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*AccessControlRoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -486,6 +495,7 @@ func (_AccessControl *AccessControlFilterer) FilterRoleAdminChanged(opts *bind.F // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_AccessControl *AccessControlFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *AccessControlRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -539,6 +549,7 @@ func (_AccessControl *AccessControlFilterer) ParseRoleAdminChanged(log types.Log if err := _AccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -621,6 +632,7 @@ type AccessControlRoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControl *AccessControlFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -645,6 +657,7 @@ func (_AccessControl *AccessControlFilterer) FilterRoleGranted(opts *bind.Filter // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControl *AccessControlFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *AccessControlRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -698,6 +711,7 @@ func (_AccessControl *AccessControlFilterer) ParseRoleGranted(log types.Log) (*A if err := _AccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -780,6 +794,7 @@ type AccessControlRoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControl *AccessControlFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -804,6 +819,7 @@ func (_AccessControl *AccessControlFilterer) FilterRoleRevoked(opts *bind.Filter // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControl *AccessControlFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *AccessControlRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -857,6 +873,7 @@ func (_AccessControl *AccessControlFilterer) ParseRoleRevoked(log types.Log) (*A if err := _AccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -883,8 +900,8 @@ var AccessControlEnumerableABI = AccessControlEnumerableMetaData.ABI // AccessControlEnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AccessControlEnumerableBinRuntime = `` -// AccessControlEnumerableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AccessControlEnumerableMetaData.Sigs instead. +// AccessControlEnumerableFuncSigs maps the 4-byte function signature to its string representation. var AccessControlEnumerableFuncSigs = AccessControlEnumerableMetaData.Sigs // AccessControlEnumerable is an auto generated Go binding around a Kaia contract. @@ -1035,6 +1052,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableTransactorRaw) Transact(o func (_AccessControlEnumerable *AccessControlEnumerableCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -1042,6 +1060,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) DEFAULTADMINROLE( out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. @@ -1064,6 +1083,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCallerSession) DEFAULTADM func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -1071,6 +1091,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleAdmin(opts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -1093,6 +1114,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCallerSession) GetRoleAdm func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "getRoleMember", role, index) + if err != nil { return *new(common.Address), err } @@ -1100,6 +1122,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleMember(opt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c. @@ -1122,6 +1145,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCallerSession) GetRoleMem func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "getRoleMemberCount", role) + if err != nil { return *new(*big.Int), err } @@ -1129,6 +1153,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) GetRoleMemberCoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873. @@ -1151,6 +1176,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCallerSession) GetRoleMem func (_AccessControlEnumerable *AccessControlEnumerableCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -1158,6 +1184,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) HasRole(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -1180,6 +1207,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCallerSession) HasRole(ro func (_AccessControlEnumerable *AccessControlEnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _AccessControlEnumerable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -1187,6 +1215,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableCaller) SupportsInterface out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -1345,6 +1374,7 @@ type AccessControlEnumerableRoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*AccessControlEnumerableRoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1369,6 +1399,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleAdmin // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *AccessControlEnumerableRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1422,6 +1453,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) ParseRoleAdminC if err := _AccessControlEnumerable.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1504,6 +1536,7 @@ type AccessControlEnumerableRoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlEnumerableRoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1528,6 +1561,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleGrant // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *AccessControlEnumerableRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1581,6 +1615,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) ParseRoleGrante if err := _AccessControlEnumerable.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1663,6 +1698,7 @@ type AccessControlEnumerableRoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlEnumerableRoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1687,6 +1723,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) FilterRoleRevok // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_AccessControlEnumerable *AccessControlEnumerableFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *AccessControlEnumerableRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -1740,6 +1777,7 @@ func (_AccessControlEnumerable *AccessControlEnumerableFilterer) ParseRoleRevoke if err := _AccessControlEnumerable.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1991,8 +2029,8 @@ var CnStakingV3ABI = CnStakingV3MetaData.ABI // CnStakingV3BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingV3BinRuntime = `608060405260043610610368575f3560e01c8063725c0503116101c8578063a217fddf116100fd578063d2569eb91161009d578063f2f2f49b1161006d578063f2f2f49b14610a7e578063f5b541a614610a93578063ff4634bc14610ab3578063ffa1ad7414610ad2575f80fd5b8063d2569eb914610a00578063d547741f14610a2c578063d75859ec14610a4b578063e1a12d3514610a5f575f80fd5b8063c336aa35116100d8578063c336aa351461099b578063c804b115146109ba578063c89e4361146109d9578063ca15c873146109e1575f80fd5b8063a217fddf14610936578063aa4058b914610949578063bfc7e94814610968575f80fd5b80639010d07c1161016857806396106ae41161014357806396106ae414610871578063992ac9fa146108e45780639c394c5d14610903578063a006e90c14610923575f80fd5b80639010d07c1461088757806391d14854146108a6578063944dd5a2146108c5575f80fd5b80637b5e0481116101a35780637b5e04811461081e5780638740568b146108335780638cf57cb9146108525780638e6f6b7714610871575f80fd5b8063725c05031461079757806375b238fc146107e55780637a66c96b14610805575f80fd5b8063392e53cd1161029e5780635ecd75f21161023e5780636bd8f804116102195780636bd8f804146107315780636d2714db146107505780636e93df0d14610764578063702b9c9b14610783575f80fd5b80635ecd75f2146106ef578063630b1146146107145780636a27c20614610729575f80fd5b8063505ebed411610279578063505ebed4146106735780635784d18b146106925780635be6eacc146106b15780635df8b09a146106d0575f80fd5b8063392e53cd146105fc5780634b6a94cc146106155780634cf088d91461065e575f80fd5b80632429f8a9116103095780632e5dc0f7116102e45780632e5dc0f71461057f5780632f2ff15d1461059e57806336568abe146105bd5780633780b3ed146105dc575f80fd5b80632429f8a9146104c0578063248a9ca3146104f4578063284fbedc14610522575f80fd5b80630c07d842116103445780630c07d8421461042d578063139d7fed1461044d57806314d3ce101461048057806319e44e32146104ab575f80fd5b80628c477a1461039a57806301ffc9a7146103db578063067042221461040a575f80fd5b3661039657610375610ae6565b5f805160206138dc83398151915261038c81610b3f565b610394610b4c565b005b5f80fd5b3480156103a5575f80fd5b506011546103be9061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e6575f80fd5b506103fa6103f5366004613161565b610bd4565b60405190151581526020016103d2565b348015610415575f80fd5b5061041f600a5481565b6040519081526020016103d2565b348015610438575f80fd5b5061041f5f8051602061391c83398151915281565b348015610458575f80fd5b506103be7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048b575f80fd5b5061041f61049a36600461319c565b60026020525f908152604090205481565b3480156104b6575f80fd5b5061041f600f5481565b3480156104cb575f80fd5b506007546008546104dd9160ff169082565b6040805192151583526020830191909152016103d2565b3480156104ff575f80fd5b5061041f61050e3660046131b7565b5f9081526013602052604090206001015490565b34801561052d575f80fd5b5061056f61053c3660046131b7565b60106020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b6040516103d294939291906131e2565b34801561058a575f80fd5b50610394610599366004613297565b610bfe565b3480156105a9575f80fd5b506103946105b8366004613324565b610dc8565b3480156105c8575f80fd5b506103946105d7366004613324565b610df2565b3480156105e7575f80fd5b5061041f5f805160206138dc83398151915281565b348015610607575f80fd5b50600c546103fa9060ff1681565b348015610620575f80fd5b506106516040518060400160405280601181526020017010db94dd185ada5b99d0dbdb9d1c9858dd607a1b81525081565b6040516103d29190613380565b348015610669575f80fd5b5061041f600d5481565b34801561067e575f80fd5b5061039461068d366004613392565b610e2a565b34801561069d575f80fd5b506103946106ac36600461319c565b610fa2565b3480156106bc575f80fd5b506103946106cb36600461319c565b611140565b3480156106db575f80fd5b5061041f6106ea366004613392565b611359565b3480156106fa575f80fd5b506107036114d9565b6040516103d29594939291906133f6565b34801561071f575f80fd5b5061041f600e5481565b610394611610565b34801561073c575f80fd5b5061039461074b366004613438565b611824565b34801561075b575f80fd5b5061041f5f5481565b34801561076f575f80fd5b5061039461077e3660046131b7565b611ae4565b34801561078e575f80fd5b50610394611dc3565b3480156107a2575f80fd5b5061056f6107b13660046131b7565b5f9081526010602052604090208054600182015460028301546003909301546001600160a01b039092169390929160ff1690565b3480156107f0575f80fd5b5061041f5f805160206138fc83398151915281565b348015610810575f80fd5b506011546103fa9060ff1681565b348015610829575f80fd5b5061041f600b5481565b34801561083e575f80fd5b506004546103be906001600160a01b031681565b34801561085d575f80fd5b506003546103be906001600160a01b031681565b34801561087c575f80fd5b5061041f62093a8081565b348015610892575f80fd5b506103be6108a1366004613476565b611eed565b3480156108b1575f80fd5b506103fa6108c0366004613324565b611f0b565b3480156108d0575f80fd5b506103946108df36600461319c565b611f7d565b3480156108ef575f80fd5b506012546103be906001600160a01b031681565b34801561090e575f80fd5b5061041f5f8051602061393c83398151915281565b61039461093136600461319c565b61204c565b348015610941575f80fd5b5061041f5f81565b348015610954575f80fd5b5061039461096336600461319c565b61225f565b348015610973575f80fd5b506103fa7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109a6575f80fd5b506103946109b536600461319c565b6123e4565b3480156109c5575f80fd5b506103946109d43660046131b7565b61245d565b610394612573565b3480156109ec575f80fd5b5061041f6109fb3660046131b7565b61259a565b348015610a0b575f80fd5b50610a1f610a1a366004613496565b6125b0565b6040516103d291906134cf565b348015610a37575f80fd5b50610394610a46366004613324565b6126a0565b348015610a56575f80fd5b506103946126c4565b348015610a6a575f80fd5b506001546103be906001600160a01b031681565b348015610a89575f80fd5b506103be61040081565b348015610a9e575f80fd5b5061041f5f805160206138bc83398151915281565b348015610abe575f80fd5b50610394610acd3660046131b7565b612796565b348015610add575f80fd5b5061041f600381565b600c5460ff16610b3d5760405162461bcd60e51b815260206004820152601c60248201527f436f6e7472616374206973206e6f7420696e697469616c697a65642e0000000060448201526064015b60405180910390fd5b565b610b49813361282c565b50565b5f3411610b8d5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21030b6b7bab73a1760891b6044820152606401610b34565b600d805434019055610b9d612865565b60405134815233907f8ecbcbd560048c1f474847748189e8c43f1fdee737fbd34523b04b5a9bbdffaa9060200160405180910390a2565b5f6001600160e01b03198216635a05180f60e01b1480610bf85750610bf8826128bd565b92915050565b610c066128f1565b81610c1081612944565b5f805160206138fc833981519152610c2781610b3f565b7f0000000000000000000000000000000000000000000000000000000000000000610c945760405162461bcd60e51b815260206004820152601b60248201527f5075626c69632064656c65676174696f6e2064697361626c65642e00000000006044820152606401610b34565b5f835111610cd45760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21030b933b99760991b6044820152606401610b34565b5f83806020019051810190610ce9919061352e565b604051631e1e087360e21b81529091506001600160a01b0386169063787821cc90610d189084906004016135dc565b6020604051808303815f875af1158015610d34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d589190613628565b600180546001600160a01b03199081166001600160a01b0393909316928317909155600380549091168217905560408051828152602081019290925233917f669ea85a3c8fdb578f28c81d130bb3cf68e5f3845d178688ae84abdba59c9030910160405180910390a25050505050565b5f82815260136020526040902060010154610de281610b3f565b610dec838361298d565b50505050565b6001600160a01b0381163314610e1b5760405163334bd91960e11b815260040160405180910390fd5b610e2582826129c0565b505050565b5f805160206138bc833981519152610e4181610b3f565b82610e4b81612944565b5f610e546114d9565b9450505050505f84118015610e695750808411155b610eb55760405162461bcd60e51b815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e0000000000006044820152606401610b34565b600b805485900390556040515f906001600160a01b0387169086908381818185875af1925050503d805f8114610f06576040519150601f19603f3d011682016040523d82523d5f602084013e610f0b565b606091505b5050905080610f4f5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610b34565b610f57612865565b856001600160a01b03167f2d9d65e4fcab96e158761a8d3cc0bd7fd76951ab5574667b07190da17177747086604051610f9291815260200190565b60405180910390a2505050505050565b5f805160206138bc833981519152610fb981610b3f565b601280546001600160a01b0319166001600160a01b038481169190911790915560115461010090041615611109576001600160a01b038216156110ac576011546040516327a38e0160e11b81526001600160a01b03848116600483015261010090920490911690634f471c0290602401602060405180830381865afa158015611044573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110689190613643565b156110ac5760405162461bcd60e51b81526020600482015260146024820152732b37ba32b91030b63932b0b23c903a30b5b2b71760611b6044820152606401610b34565b60115460405163aad8cb3f60e01b81523060048201526101009091046001600160a01b03169063aad8cb3f906024015f604051808303815f87803b1580156110f2575f80fd5b505af1158015611104573d5f803e3d5ffd5b505050505b6040516001600160a01b038316907f61ee88e3c7513df1e6e214415e781030278cf98b7fbb9d6d53720ee8aeb654ee905f90a25050565b5f805160206138bc83398151915261115781610b3f565b61116b6001600160a01b03831660016129eb565b6111b15760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b21029ba30b5b4b733aa3930b1b5b2b91760491b6044820152606401610b34565b60115461010090046001600160a01b03161561130757601154604051635605a4e560e01b81523060048201526101009091046001600160a01b031690635605a4e5906024015f604051808303815f87803b15801561120d575f80fd5b505af115801561121f573d5f803e3d5ffd5b50505050601160019054906101000a90046001600160a01b03166001600160a01b031663d4377d4d6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611273573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261129a919081019061367d565b51156113075760405162461bcd60e51b815260206004820152603660248201527f43616e6e6f742075706461746520747261636b6572207768656e2074686572656044820152751034b99030b71030b1ba34bb32903a3930b1b5b2b91760511b6064820152608401610b34565b60118054610100600160a81b0319166101006001600160a01b038516908102919091179091556040517fef25e066ac14a10491ae1ac89a8247282158e169968aaccbceb257d0878bdfd0905f90a25050565b5f8261136481612944565b5f8051602061391c83398151915261137b81610b3f565b5f841180156113995750600d5484600e54611396919061371d565b11155b6113d65760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103b30b63ab29760911b6044820152606401610b34565b600f80546001808201909255604080516080810182526001600160a01b03898116825260208083018a81524262093a80018486018181525f60608701818152898252601090955296909620855181546001600160a01b031916951694909417845590518388015593516002808401919091559051600383018054969a509496939592949093909260ff1916918490811115611473576114736131ce565b021790555050600e8054870190555061148a612865565b60408051868152602081018390526001600160a01b0388169186917fdd0988b8c11a867814c87be652f93a86d35c6a235b92977e99d5394bd8580ced910160405180910390a350505092915050565b6060805f805f6114e7610ae6565b5f805b60055481101561154d57600580548290811061150857611508613730565b905f5260205f20015442111561153a57600680548290811061152c5761152c613730565b905f5260205f200154820191505b600b54600a5403820392506001016114ea565b5060055f016005600101600a54600b5485848054806020026020016040519081016040528092919081815260200182805480156115a757602002820191905f5260205f20905b815481526020019060010190808311611593575b50505050509450838054806020026020016040519081016040528092919081815260200182805480156115f757602002820191905f5260205f20905b8154815260200190600101908083116115e3575b5050505050935095509550955095509550509091929394565b6116186128f1565b5f5415801590611637575060115461010090046001600160a01b031615155b80156116b357507f000000000000000000000000000000000000000000000000000000000000000015806116b357507f0000000000000000000000000000000000000000000000000000000000000000801561169d57506001546001600160a01b031615155b80156116b357506003546001600160a01b031615155b6116f65760405162461bcd60e51b81526020600482015260146024820152732737ba1039b2ba103ab810383937b832b9363c9760611b6044820152606401610b34565b60075460ff1615156001146117455760405162461bcd60e51b81526020600482015260156024820152742932bb34b2bbb9903737ba103334b734b9b432b21760591b6044820152606401610b34565b5f805b60065481101561177e57600680548290811061176657611766613730565b5f918252602090912001549190910190600101611748565b508034146117c65760405162461bcd60e51b81526020600482015260156024820152742b30b63ab2903237b2b9903737ba1036b0ba31b41760591b6044820152606401610b34565b600a819055600b8190556117d8612b19565b600c805460ff1916600117905560405133907f2b3c5e8e58d7d1e42ccd071c6f749d53f9ee506020a81fad9ff98140ccccde69906118199034815260200190565b60405180910390a250565b61182c610ae6565b8261183681612944565b60115460ff16801561185257506001546001600160a01b031633145b6118975760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b6044820152606401610b34565b306001600160a01b038416036118e75760405162461bcd60e51b81526020600482015260156024820152742a30b933b2ba1031b0b713ba1031329039b2b6331760591b6044820152606401610b34565b6118fb6001600160a01b0384166003612bf5565b61193e5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b6044820152606401610b34565b5f8211801561195c5750600d5482600e54611959919061371d565b11155b6119995760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103b30b63ab29760911b6044820152606401610b34565b6001600160a01b0384165f9081526002602052604090205415806119e357506001600160a01b0384165f9081526002602052604090205442906119e09062093a809061371d565b11155b611a275760405162461bcd60e51b815260206004820152601560248201527421b0b713ba103932b232b632b3b0ba32903cb2ba1760591b6044820152606401610b34565b600d80548390039055604051632801ba4360e21b81526001600160a01b03858116600483015284169063a006e90c9084906024015f604051808303818588803b158015611a72575f80fd5b505af1158015611a84573d5f803e3d5ffd5b5050505050611a91612865565b826001600160a01b0316846001600160a01b03167f4830c21a6eb4b2b3af6c4d24cfbd78ce437d5b690aac56ceec54df1d4d24e1a084604051611ad691815260200190565b60405180910390a350505050565b5f8051602061393c833981519152611afb81610b3f565b5f82815260106020526040902080546001600160a01b0316611b2f5760405162461bcd60e51b8152600401610b3490613744565b5f600382015460ff166002811115611b4957611b496131ce565b14611b875760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039ba30ba329760911b6044820152606401610b34565b600d5481600101541115611bdd5760405162461bcd60e51b815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e0000000000006044820152606401610b34565b4281600201541115611c295760405162461bcd60e51b81526020600482015260156024820152742737ba103bb4ba34323930bbb0b13632903cb2ba1760591b6044820152606401610b34565b600281015462093a8001428111611cad5760038201805460ff191660021790556001820154600e8054919091039055611c60612865565b815460018301546040519081526001600160a01b039091169085907fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df9060200160405180910390a3610dec565b60038201805460ff1916600190811790915582018054600d80549190910390558054600e8054919091039055825490546040515f926001600160a01b031691908381818185875af1925050503d805f8114611d23576040519150601f19603f3d011682016040523d82523d5f602084013e611d28565b606091505b5050905080611d6c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610b34565b611d74612865565b825460018401546040519081526001600160a01b039091169086907f7a2d48d1df1249429730a253e5713a7d7a2024913de2fbccafdf36efdd32bf059060200160405180910390a35050505050565b611dcb6128f1565b5f805160206138fc833981519152611de281610b3f565b335f8181526009602052604090205460ff1615611e415760405162461bcd60e51b815260206004820152601c60248201527f4d73672e73656e64657220616c72656164792072657669657765642e000000006044820152606401610b34565b6001600160a01b0381165f81815260096020526040808220805460ff19166001908117909155600880549091019055517f65d287f4118b03f8cc979b433fd0b2246074200dd5da70c9daf204aaa0da1a2c9190a2611eab5f805160206138fc83398151915261259a565b60085403611ee9576007805460ff191660011790556040517f244ff9a3d72b1dc5a4bce7f05fb615395f2a8c7ad6ea525d2bac9030f75d7a9b905f90a15b5050565b5f828152601460205260408120611f049083612e03565b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000158015611f4657505f805160206138dc83398151915283145b15611f5357506001610bf8565b5f8381526013602090815260408083206001600160a01b038616845290915290205460ff16611f04565b5f805160206138bc833981519152611f9481610b3f565b7f0000000000000000000000000000000000000000000000000000000000000000156120025760405162461bcd60e51b815260206004820152601a60248201527f5075626c69632064656c65676174696f6e20656e61626c65642e0000000000006044820152606401610b34565b600480546001600160a01b0319166001600160a01b0384169081179091556040517fbe1849831e6775a2022006aeebcc00f70d10bc4202c8187e215ad9e9911f2b06905f90a25050565b612054610ae6565b8061205e81612944565b60115460ff166120a95760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b6044820152606401610b34565b6120b4336003612bf5565b6120f75760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b6044820152606401610b34565b6001600160a01b038083165f908152600260209081526040808320429055600154815163228cb73360e01b81529151941693849263228cb73392600480820193918290030181865afa15801561214f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121739190613643565b6040516325fb490360e11b81526001600160a01b0386811660048301524792909201925090831690634bf692069034906024015f604051808303818588803b1580156121bd575f80fd5b505af11580156121cf573d5f803e3d5ffd5b50505050504781146122175760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21039ba30b5b2a337b91760791b6044820152606401610b34565b604051348152309033906001600160a01b038716907fcbbd772ac9792b90fb77aa3194b0279ec4dbea1880ecc3674ecd2f4bf39b0c909060200160405180910390a450505050565b612267612e0e565b6122c25760405162461bcd60e51b815260206004820152602660248201527f556e617574686f72697a656420746f2061636365707420726577617264206164604482015265323932b9b99760d11b6064820152608401610b34565b6004546001600160a01b038281169116146123315760405162461bcd60e51b815260206004820152602960248201527f476976656e206164647265737320646f6573206e6f74206d6174636820746865604482015268103832b73234b7339760b91b6064820152608401610b34565b6004805460405163832a2aad60e01b81526001600160a01b03909116918101919091526104009063832a2aad906024015f604051808303815f87803b158015612378575f80fd5b505af115801561238a573d5f803e3d5ffd5b505060048054600380546001600160a01b0383166001600160a01b031991821681179092559091169091556040519092507f36e0b58f785f850d6622cb742fa1e0750728da3c75816916830b50b747efb6b691505f90a250565b6123ec6128f1565b5f805160206138fc83398151915261240381610b3f565b6124176001600160a01b03831660016129eb565b6113075760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b21029ba30b5b4b733aa3930b1b5b2b91760491b6044820152606401610b34565b5f8051602061391c83398151915261247481610b3f565b5f82815260106020526040902080546001600160a01b03166124a85760405162461bcd60e51b8152600401610b3490613744565b5f600382015460ff1660028111156124c2576124c26131ce565b146125005760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039ba30ba329760911b6044820152606401610b34565b60038101805460ff191660021790556001810154600e8054919091039055612526612865565b805460018201546040519081526001600160a01b039091169084907fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df9060200160405180910390a3505050565b61257b610ae6565b5f805160206138dc83398151915261259281610b3f565b610b49610b4c565b5f818152601460205260408120610bf890612ee6565b60605f8315806125c25750600f548410155b6125cc57836125d0565b600f545b90506125dc8582613786565b67ffffffffffffffff8111156125f4576125f461322b565b60405190808252806020026020018201604052801561261d578160200160208202803683370190505b5091505f855b828110156126955784600281111561263d5761263d6131ce565b5f8281526010602052604090206003015460ff166002811115612662576126626131ce565b0361268d578084838060010194508151811061268057612680613730565b6020026020010181815250505b600101612623565b508252509392505050565b5f828152601360205260409020600101546126ba81610b3f565b610dec83836129c0565b5f805160206138bc8339815191526126db81610b3f565b7f00000000000000000000000000000000000000000000000000000000000000006127485760405162461bcd60e51b815260206004820152601b60248201527f5075626c69632064656c65676174696f6e2064697361626c65642e00000000006044820152606401610b34565b6011805460ff8082161560ff1990921682179092556040519116151581527f02efa9113845c402ffbbc237400eeba75de99c23f054459573f88caa5a9418989060200160405180910390a150565b61279e6128f1565b5f805160206138fc8339815191526127b581610b3f565b815f036127fc5760405162461bcd60e51b815260206004820152601560248201527423a19024a21031b0b73737ba103132903d32b9379760591b6044820152606401610b34565b5f82815560405183917f469cb2f3ce5d5e879269af625b54571651feb0ede6e83ee89b9c888648af514f91a25050565b6128368282611f0b565b611ee95760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b34565b601154604051635605a4e560e01b81523060048201526101009091046001600160a01b031690635605a4e5906024015f604051808303815f87803b1580156128ab575f80fd5b505af1158015610dec573d5f803e3d5ffd5b5f6001600160e01b03198216637965db0b60e01b1480610bf857506301ffc9a760e01b6001600160e01b0319831614610bf8565b600c5460ff1615610b3d5760405162461bcd60e51b815260206004820152601e60248201527f436f6e747261637420686173206265656e20696e697469616c697a65642e00006044820152606401610b34565b6001600160a01b038116610b495760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b990373ab6361760811b6044820152606401610b34565b5f806129998484612eef565b90508015611f04575f8481526014602052604090206129b89084612f80565b509392505050565b5f806129cc8484612f94565b90508015611f04575f8481526014602052604090206129b89084612fff565b5f826001600160a01b03163b5f03612a0457505f610bf8565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612a43573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a6a9190810190613799565b805190602001207fccfe28814eb3e9d0e6cfd45eb754f27c5eb4399dac6379181362ebd8b6a865c314612aa0575f915050610bf8565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b019190613643565b14612b0f575f915050610bf8565b5060019392505050565b7f0000000000000000000000000000000000000000000000000000000000000000612b87575f612b565f805160206138bc8339815191525f611eed565b9050612b6f5f8051602061391c8339815191528261298d565b50611ee95f8051602061393c8339815191528261298d565b600154612bab905f805160206138dc833981519152906001600160a01b031661298d565b50600154612bd0905f8051602061391c833981519152906001600160a01b031661298d565b50600154610b49905f8051602061393c833981519152906001600160a01b031661298d565b5f826001600160a01b03163b5f03612c0e57505f610bf8565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612c4d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c749190810190613799565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214612caa575f915050610bf8565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0b9190613643565b14612d19575f915050610bf8565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7a9190613628565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015612dc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de791906137cb565b506001600160a01b039081169088161494505050505092915050565b5f611f048383613013565b6004545f906001600160a01b03163303612e285750600190565b5f6104006001600160a01b0316631865c57d6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612e66573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612e8d919081019061380a565b5090505f5b8151811015612ede57818181518110612ead57612ead613730565b60200260200101516001600160a01b0316336001600160a01b031603612ed65760019250505090565b600101612e92565b505f91505090565b5f610bf8825490565b5f612efa8383611f0b565b612f79575f8381526013602090815260408083206001600160a01b03861684529091529020805460ff19166001179055612f313390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610bf8565b505f610bf8565b5f611f04836001600160a01b038416613039565b5f612f9f8383611f0b565b15612f79575f8381526013602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610bf8565b5f611f04836001600160a01b03841661307e565b5f825f01828154811061302857613028613730565b905f5260205f200154905092915050565b5f818152600183016020526040812054612f7957508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610bf8565b5f8181526001830160205260408120548015613158575f6130a0600183613786565b85549091505f906130b390600190613786565b9050808214613112575f865f0182815481106130d1576130d1613730565b905f5260205f200154905080875f0184815481106130f1576130f1613730565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613123576131236138a7565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610bf8565b5f915050610bf8565b5f60208284031215613171575f80fd5b81356001600160e01b031981168114611f04575f80fd5b6001600160a01b0381168114610b49575f80fd5b5f602082840312156131ac575f80fd5b8135611f0481613188565b5f602082840312156131c7575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03851681526020810184905260408101839052608081016003831061321c57634e487b7160e01b5f52602160045260245ffd5b82606083015295945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132685761326861322b565b604052919050565b5f67ffffffffffffffff8211156132895761328961322b565b50601f01601f191660200190565b5f80604083850312156132a8575f80fd5b82356132b381613188565b9150602083013567ffffffffffffffff8111156132ce575f80fd5b8301601f810185136132de575f80fd5b80356132f16132ec82613270565b61323f565b818152866020838501011115613305575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f8060408385031215613335575f80fd5b82359150602083013561334781613188565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611f046020830184613352565b5f80604083850312156133a3575f80fd5b82356133ae81613188565b946020939093013593505050565b5f815180845260208085019450602084015f5b838110156133eb578151875295820195908201906001016133cf565b509495945050505050565b60a081525f61340860a08301886133bc565b828103602084015261341a81886133bc565b60408401969096525050606081019290925260809091015292915050565b5f805f6060848603121561344a575f80fd5b833561345581613188565b9250602084013561346581613188565b929592945050506040919091013590565b5f8060408385031215613487575f80fd5b50508035926020909101359150565b5f805f606084860312156134a8575f80fd5b83359250602084013591506040840135600381106134c4575f80fd5b809150509250925092565b602081525f611f0460208301846133bc565b5f82601f8301126134f0575f80fd5b81516134fe6132ec82613270565b818152846020838601011115613512575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561353e575f80fd5b815167ffffffffffffffff80821115613555575f80fd5b9083019060808286031215613568575f80fd5b6040516080810181811083821117156135835761358361322b565b604052825161359181613188565b815260208301516135a181613188565b6020820152604083810151908201526060830151828111156135c1575f80fd5b6135cd878286016134e1565b60608301525095945050505050565b602081525f60018060a01b038084511660208401528060208501511660408401525060408301516060830152606083015160808084015261362060a0840182613352565b949350505050565b5f60208284031215613638575f80fd5b8151611f0481613188565b5f60208284031215613653575f80fd5b5051919050565b5f67ffffffffffffffff8211156136735761367361322b565b5060051b60200190565b5f602080838503121561368e575f80fd5b825167ffffffffffffffff8111156136a4575f80fd5b8301601f810185136136b4575f80fd5b80516136c26132ec8261365a565b81815260059190911b820183019083810190878311156136e0575f80fd5b928401925b828410156136fe578351825292840192908401906136e5565b979650505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610bf857610bf8613709565b634e487b7160e01b5f52603260045260245ffd5b60208082526022908201527f5769746864726177616c207265717565737420646f6573206e6f7420657869736040820152613a1760f11b606082015260800190565b81810381811115610bf857610bf8613709565b5f602082840312156137a9575f80fd5b815167ffffffffffffffff8111156137bf575f80fd5b613620848285016134e1565b5f805f606084860312156137dd575f80fd5b83516137e881613188565b60208501519093506137f981613188565b60408501519092506134c481613188565b5f806040838503121561381b575f80fd5b825167ffffffffffffffff811115613831575f80fd5b8301601f81018513613841575f80fd5b805160206138516132ec8361365a565b82815260059290921b8301810191818101908884111561386f575f80fd5b938201935b8385101561389657845161388781613188565b82529382019390820190613874565b969091015195979596505050505050565b634e487b7160e01b5f52603160045260245ffdfe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929b9e206fa2af7ee1331b72ce58b6d938ac810ce9b5cdb65d35ab723fd67badf9ea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756bbd235a04f337cdf14b2f1846017b33479fad2c3ae66d711584f13463a2170adb8f45a81765d409768c063c845ce4a132a06990e9ba80f54a39553a43ea2c34a264697066735822122099daf6a025170c3a4e3d63a2f82bc097797b15264efd7b25ade9f09f491c056264736f6c63430008190033` -// CnStakingV3FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingV3MetaData.Sigs instead. +// CnStakingV3FuncSigs maps the 4-byte function signature to its string representation. var CnStakingV3FuncSigs = CnStakingV3MetaData.Sigs // CnStakingV3Bin is the compiled bytecode used for deploying new contracts. @@ -2164,6 +2202,7 @@ func (_CnStakingV3 *CnStakingV3TransactorRaw) Transact(opts *bind.TransactOpts, func (_CnStakingV3 *CnStakingV3Caller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -2171,6 +2210,7 @@ func (_CnStakingV3 *CnStakingV3Caller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -2193,6 +2233,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) ADDRESSBOOKADDRESS() (common.Addre func (_CnStakingV3 *CnStakingV3Caller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -2200,6 +2241,7 @@ func (_CnStakingV3 *CnStakingV3Caller) ADMINROLE(opts *bind.CallOpts) ([32]byte, out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. @@ -2222,6 +2264,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) ADMINROLE() ([32]byte, error) { func (_CnStakingV3 *CnStakingV3Caller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -2229,6 +2272,7 @@ func (_CnStakingV3 *CnStakingV3Caller) CONTRACTTYPE(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -2251,6 +2295,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) CONTRACTTYPE() (string, error) { func (_CnStakingV3 *CnStakingV3Caller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -2258,6 +2303,7 @@ func (_CnStakingV3 *CnStakingV3Caller) DEFAULTADMINROLE(opts *bind.CallOpts) ([3 out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. @@ -2280,6 +2326,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) DEFAULTADMINROLE() ([32]byte, erro func (_CnStakingV3 *CnStakingV3Caller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -2287,6 +2334,7 @@ func (_CnStakingV3 *CnStakingV3Caller) ONEWEEK(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -2309,6 +2357,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) ONEWEEK() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) OPERATORROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "OPERATOR_ROLE") + if err != nil { return *new([32]byte), err } @@ -2316,6 +2365,7 @@ func (_CnStakingV3 *CnStakingV3Caller) OPERATORROLE(opts *bind.CallOpts) ([32]by out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // OPERATORROLE is a free data retrieval call binding the contract method 0xf5b541a6. @@ -2338,6 +2388,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) OPERATORROLE() ([32]byte, error) { func (_CnStakingV3 *CnStakingV3Caller) STAKERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "STAKER_ROLE") + if err != nil { return *new([32]byte), err } @@ -2345,6 +2396,7 @@ func (_CnStakingV3 *CnStakingV3Caller) STAKERROLE(opts *bind.CallOpts) ([32]byte out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // STAKERROLE is a free data retrieval call binding the contract method 0x3780b3ed. @@ -2367,6 +2419,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) STAKERROLE() ([32]byte, error) { func (_CnStakingV3 *CnStakingV3Caller) STAKELOCKUP(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "STAKE_LOCKUP") + if err != nil { return *new(*big.Int), err } @@ -2374,6 +2427,7 @@ func (_CnStakingV3 *CnStakingV3Caller) STAKELOCKUP(opts *bind.CallOpts) (*big.In out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // STAKELOCKUP is a free data retrieval call binding the contract method 0x96106ae4. @@ -2396,6 +2450,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) STAKELOCKUP() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) UNSTAKINGAPPROVERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "UNSTAKING_APPROVER_ROLE") + if err != nil { return *new([32]byte), err } @@ -2403,6 +2458,7 @@ func (_CnStakingV3 *CnStakingV3Caller) UNSTAKINGAPPROVERROLE(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGAPPROVERROLE is a free data retrieval call binding the contract method 0x0c07d842. @@ -2425,6 +2481,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) UNSTAKINGAPPROVERROLE() ([32]byte, func (_CnStakingV3 *CnStakingV3Caller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "UNSTAKING_CLAIMER_ROLE") + if err != nil { return *new([32]byte), err } @@ -2432,6 +2489,7 @@ func (_CnStakingV3 *CnStakingV3Caller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGCLAIMERROLE is a free data retrieval call binding the contract method 0x9c394c5d. @@ -2454,6 +2512,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) UNSTAKINGCLAIMERROLE() ([32]byte, func (_CnStakingV3 *CnStakingV3Caller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -2461,6 +2520,7 @@ func (_CnStakingV3 *CnStakingV3Caller) VERSION(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -2483,6 +2543,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) VERSION() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) GcId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "gcId") + if err != nil { return *new(*big.Int), err } @@ -2490,6 +2551,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GcId(opts *bind.CallOpts) (*big.Int, erro out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GcId is a free data retrieval call binding the contract method 0x6d2714db. @@ -2512,6 +2574,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GcId() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) GetApprovedStakingWithdrawalIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getApprovedStakingWithdrawalIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -2519,6 +2582,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetApprovedStakingWithdrawalIds(opts *bin out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetApprovedStakingWithdrawalIds is a free data retrieval call binding the contract method 0xd2569eb9. @@ -2543,8 +2607,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetApprovedStakingWithdrawalInfo(opts *bi Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getApprovedStakingWithdrawalInfo", _index) @@ -2554,12 +2617,17 @@ func (_CnStakingV3 *CnStakingV3Caller) GetApprovedStakingWithdrawalInfo(opts *bi WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetApprovedStakingWithdrawalInfo is a free data retrieval call binding the contract method 0x725c0503. @@ -2570,8 +2638,7 @@ func (_CnStakingV3 *CnStakingV3Session) GetApprovedStakingWithdrawalInfo(_index Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3.CallOpts, _index) } @@ -2583,8 +2650,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetApprovedStakingWithdrawalInfo(_ Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3.CallOpts, _index) } @@ -2597,8 +2663,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetLockupStakingInfo(opts *bind.CallOpts) Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getLockupStakingInfo") @@ -2609,13 +2674,18 @@ func (_CnStakingV3 *CnStakingV3Caller) GetLockupStakingInfo(opts *bind.CallOpts) Remaining *big.Int Withdrawable *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.UnlockTime = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) outstruct.UnlockAmount = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) outstruct.Initial = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.Remaining = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) outstruct.Withdrawable = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetLockupStakingInfo is a free data retrieval call binding the contract method 0x5ecd75f2. @@ -2627,8 +2697,7 @@ func (_CnStakingV3 *CnStakingV3Session) GetLockupStakingInfo() (struct { Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3.Contract.GetLockupStakingInfo(&_CnStakingV3.CallOpts) } @@ -2641,8 +2710,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetLockupStakingInfo() (struct { Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3.Contract.GetLockupStakingInfo(&_CnStakingV3.CallOpts) } @@ -2652,6 +2720,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetLockupStakingInfo() (struct { func (_CnStakingV3 *CnStakingV3Caller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -2659,6 +2728,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetRoleAdmin(opts *bind.CallOpts, role [3 out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -2681,6 +2751,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetRoleAdmin(role [32]byte) ([32]b func (_CnStakingV3 *CnStakingV3Caller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getRoleMember", role, index) + if err != nil { return *new(common.Address), err } @@ -2688,6 +2759,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetRoleMember(opts *bind.CallOpts, role [ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c. @@ -2710,6 +2782,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetRoleMember(role [32]byte, index func (_CnStakingV3 *CnStakingV3Caller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "getRoleMemberCount", role) + if err != nil { return *new(*big.Int), err } @@ -2717,6 +2790,7 @@ func (_CnStakingV3 *CnStakingV3Caller) GetRoleMemberCount(opts *bind.CallOpts, r out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873. @@ -2739,6 +2813,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) GetRoleMemberCount(role [32]byte) func (_CnStakingV3 *CnStakingV3Caller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -2746,6 +2821,7 @@ func (_CnStakingV3 *CnStakingV3Caller) HasRole(opts *bind.CallOpts, role [32]byt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -2768,6 +2844,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) HasRole(role [32]byte, account com func (_CnStakingV3 *CnStakingV3Caller) InitialLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "initialLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -2775,6 +2852,7 @@ func (_CnStakingV3 *CnStakingV3Caller) InitialLockupStaking(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // InitialLockupStaking is a free data retrieval call binding the contract method 0x06704222. @@ -2797,6 +2875,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) InitialLockupStaking() (*big.Int, func (_CnStakingV3 *CnStakingV3Caller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -2804,6 +2883,7 @@ func (_CnStakingV3 *CnStakingV3Caller) IsInitialized(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -2826,6 +2906,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) IsInitialized() (bool, error) { func (_CnStakingV3 *CnStakingV3Caller) IsPublicDelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "isPublicDelegationEnabled") + if err != nil { return *new(bool), err } @@ -2833,6 +2914,7 @@ func (_CnStakingV3 *CnStakingV3Caller) IsPublicDelegationEnabled(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsPublicDelegationEnabled is a free data retrieval call binding the contract method 0xbfc7e948. @@ -2855,6 +2937,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) IsPublicDelegationEnabled() (bool, func (_CnStakingV3 *CnStakingV3Caller) IsRedelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "isRedelegationEnabled") + if err != nil { return *new(bool), err } @@ -2862,6 +2945,7 @@ func (_CnStakingV3 *CnStakingV3Caller) IsRedelegationEnabled(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsRedelegationEnabled is a free data retrieval call binding the contract method 0x7a66c96b. @@ -2884,6 +2968,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) IsRedelegationEnabled() (bool, err func (_CnStakingV3 *CnStakingV3Caller) LastRedelegation(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "lastRedelegation", arg0) + if err != nil { return *new(*big.Int), err } @@ -2891,6 +2976,7 @@ func (_CnStakingV3 *CnStakingV3Caller) LastRedelegation(opts *bind.CallOpts, arg out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastRedelegation is a free data retrieval call binding the contract method 0x14d3ce10. @@ -2913,8 +2999,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) LastRedelegation(arg0 common.Addre func (_CnStakingV3 *CnStakingV3Caller) LockupConditions(opts *bind.CallOpts) (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "lockupConditions") @@ -2922,10 +3007,15 @@ func (_CnStakingV3 *CnStakingV3Caller) LockupConditions(opts *bind.CallOpts) (st AllReviewed bool ReviewedCount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AllReviewed = *abi.ConvertType(out[0], new(bool)).(*bool) outstruct.ReviewedCount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // LockupConditions is a free data retrieval call binding the contract method 0x2429f8a9. @@ -2934,8 +3024,7 @@ func (_CnStakingV3 *CnStakingV3Caller) LockupConditions(opts *bind.CallOpts) (st func (_CnStakingV3 *CnStakingV3Session) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3.Contract.LockupConditions(&_CnStakingV3.CallOpts) } @@ -2945,8 +3034,7 @@ func (_CnStakingV3 *CnStakingV3Session) LockupConditions() (struct { func (_CnStakingV3 *CnStakingV3CallerSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3.Contract.LockupConditions(&_CnStakingV3.CallOpts) } @@ -2956,6 +3044,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) LockupConditions() (struct { func (_CnStakingV3 *CnStakingV3Caller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -2963,6 +3052,7 @@ func (_CnStakingV3 *CnStakingV3Caller) NodeId(opts *bind.CallOpts) (common.Addre out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -2985,6 +3075,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) NodeId() (common.Address, error) { func (_CnStakingV3 *CnStakingV3Caller) PendingRewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "pendingRewardAddress") + if err != nil { return *new(common.Address), err } @@ -2992,6 +3083,7 @@ func (_CnStakingV3 *CnStakingV3Caller) PendingRewardAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PendingRewardAddress is a free data retrieval call binding the contract method 0x8740568b. @@ -3014,6 +3106,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) PendingRewardAddress() (common.Add func (_CnStakingV3 *CnStakingV3Caller) PublicDelegation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "publicDelegation") + if err != nil { return *new(common.Address), err } @@ -3021,6 +3114,7 @@ func (_CnStakingV3 *CnStakingV3Caller) PublicDelegation(opts *bind.CallOpts) (co out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PublicDelegation is a free data retrieval call binding the contract method 0xe1a12d35. @@ -3043,6 +3137,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) PublicDelegation() (common.Address func (_CnStakingV3 *CnStakingV3Caller) RemainingLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "remainingLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -3050,6 +3145,7 @@ func (_CnStakingV3 *CnStakingV3Caller) RemainingLockupStaking(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RemainingLockupStaking is a free data retrieval call binding the contract method 0x7b5e0481. @@ -3072,6 +3168,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) RemainingLockupStaking() (*big.Int func (_CnStakingV3 *CnStakingV3Caller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -3079,6 +3176,7 @@ func (_CnStakingV3 *CnStakingV3Caller) RewardAddress(opts *bind.CallOpts) (commo out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -3101,6 +3199,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) RewardAddress() (common.Address, e func (_CnStakingV3 *CnStakingV3Caller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -3108,6 +3207,7 @@ func (_CnStakingV3 *CnStakingV3Caller) Staking(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -3130,6 +3230,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) Staking() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) StakingTracker(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "stakingTracker") + if err != nil { return *new(common.Address), err } @@ -3137,6 +3238,7 @@ func (_CnStakingV3 *CnStakingV3Caller) StakingTracker(opts *bind.CallOpts) (comm out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // StakingTracker is a free data retrieval call binding the contract method 0x008c477a. @@ -3159,6 +3261,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) StakingTracker() (common.Address, func (_CnStakingV3 *CnStakingV3Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -3166,6 +3269,7 @@ func (_CnStakingV3 *CnStakingV3Caller) SupportsInterface(opts *bind.CallOpts, in out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -3188,6 +3292,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) SupportsInterface(interfaceId [4]b func (_CnStakingV3 *CnStakingV3Caller) Unstaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "unstaking") + if err != nil { return *new(*big.Int), err } @@ -3195,6 +3300,7 @@ func (_CnStakingV3 *CnStakingV3Caller) Unstaking(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Unstaking is a free data retrieval call binding the contract method 0x630b1146. @@ -3217,6 +3323,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) Unstaking() (*big.Int, error) { func (_CnStakingV3 *CnStakingV3Caller) VoterAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "voterAddress") + if err != nil { return *new(common.Address), err } @@ -3224,6 +3331,7 @@ func (_CnStakingV3 *CnStakingV3Caller) VoterAddress(opts *bind.CallOpts) (common out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // VoterAddress is a free data retrieval call binding the contract method 0x992ac9fa. @@ -3246,6 +3354,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) VoterAddress() (common.Address, er func (_CnStakingV3 *CnStakingV3Caller) WithdrawalRequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "withdrawalRequestCount") + if err != nil { return *new(*big.Int), err } @@ -3253,6 +3362,7 @@ func (_CnStakingV3 *CnStakingV3Caller) WithdrawalRequestCount(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // WithdrawalRequestCount is a free data retrieval call binding the contract method 0x19e44e32. @@ -3277,8 +3387,7 @@ func (_CnStakingV3 *CnStakingV3Caller) WithdrawalRequestMap(opts *bind.CallOpts, Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3.contract.Call(opts, &out, "withdrawalRequestMap", arg0) @@ -3288,12 +3397,17 @@ func (_CnStakingV3 *CnStakingV3Caller) WithdrawalRequestMap(opts *bind.CallOpts, WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // WithdrawalRequestMap is a free data retrieval call binding the contract method 0x284fbedc. @@ -3304,8 +3418,7 @@ func (_CnStakingV3 *CnStakingV3Session) WithdrawalRequestMap(arg0 *big.Int) (str Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3.Contract.WithdrawalRequestMap(&_CnStakingV3.CallOpts, arg0) } @@ -3317,8 +3430,7 @@ func (_CnStakingV3 *CnStakingV3CallerSession) WithdrawalRequestMap(arg0 *big.Int Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3.Contract.WithdrawalRequestMap(&_CnStakingV3.CallOpts, arg0) } @@ -3840,6 +3952,7 @@ type CnStakingV3AcceptRewardAddress struct { // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) FilterAcceptRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3AcceptRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -3856,6 +3969,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterAcceptRewardAddress(opts *bind.Fi // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) WatchAcceptRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3AcceptRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -3901,6 +4015,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseAcceptRewardAddress(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "AcceptRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3984,6 +4099,7 @@ type CnStakingV3ApproveStakingWithdrawal struct { // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3 *CnStakingV3Filterer) FilterApproveStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3ApproveStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -4004,6 +4120,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterApproveStakingWithdrawal(opts *bi // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3 *CnStakingV3Filterer) WatchApproveStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3ApproveStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -4053,6 +4170,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseApproveStakingWithdrawal(log types if err := _CnStakingV3.contract.UnpackLog(event, "ApproveStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4135,6 +4253,7 @@ type CnStakingV3CancelApprovedStakingWithdrawal struct { // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterCancelApprovedStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3CancelApprovedStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -4155,6 +4274,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterCancelApprovedStakingWithdrawal(o // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchCancelApprovedStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3CancelApprovedStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -4204,6 +4324,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseCancelApprovedStakingWithdrawal(lo if err := _CnStakingV3.contract.UnpackLog(event, "CancelApprovedStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4283,6 +4404,7 @@ type CnStakingV3CompleteReviewInitialConditions struct { // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3 *CnStakingV3Filterer) FilterCompleteReviewInitialConditions(opts *bind.FilterOpts) (*CnStakingV3CompleteReviewInitialConditionsIterator, error) { + logs, sub, err := _CnStakingV3.contract.FilterLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -4294,6 +4416,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterCompleteReviewInitialConditions(o // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3 *CnStakingV3Filterer) WatchCompleteReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3CompleteReviewInitialConditions) (event.Subscription, error) { + logs, sub, err := _CnStakingV3.contract.WatchLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -4334,6 +4457,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseCompleteReviewInitialConditions(lo if err := _CnStakingV3.contract.UnpackLog(event, "CompleteReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4415,6 +4539,7 @@ type CnStakingV3DelegateKaia struct { // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterDelegateKaia(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3DelegateKaiaIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4431,6 +4556,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterDelegateKaia(opts *bind.FilterOpt // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchDelegateKaia(opts *bind.WatchOpts, sink chan<- *CnStakingV3DelegateKaia, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4476,6 +4602,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseDelegateKaia(log types.Log) (*CnSt if err := _CnStakingV3.contract.UnpackLog(event, "DelegateKaia", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4560,6 +4687,7 @@ type CnStakingV3DeployCnStakingV3 struct { // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3 *CnStakingV3Filterer) FilterDeployCnStakingV3(opts *bind.FilterOpts) (*CnStakingV3DeployCnStakingV3Iterator, error) { + logs, sub, err := _CnStakingV3.contract.FilterLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -4571,6 +4699,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterDeployCnStakingV3(opts *bind.Filt // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3 *CnStakingV3Filterer) WatchDeployCnStakingV3(opts *bind.WatchOpts, sink chan<- *CnStakingV3DeployCnStakingV3) (event.Subscription, error) { + logs, sub, err := _CnStakingV3.contract.WatchLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -4611,6 +4740,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseDeployCnStakingV3(log types.Log) ( if err := _CnStakingV3.contract.UnpackLog(event, "DeployCnStakingV3", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4692,6 +4822,7 @@ type CnStakingV3DepositLockupStakingAndInit struct { // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterDepositLockupStakingAndInit(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3DepositLockupStakingAndInitIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4708,6 +4839,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterDepositLockupStakingAndInit(opts // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchDepositLockupStakingAndInit(opts *bind.WatchOpts, sink chan<- *CnStakingV3DepositLockupStakingAndInit, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4753,6 +4885,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseDepositLockupStakingAndInit(log ty if err := _CnStakingV3.contract.UnpackLog(event, "DepositLockupStakingAndInit", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4836,6 +4969,7 @@ type CnStakingV3HandleRedelegation struct { // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterHandleRedelegation(opts *bind.FilterOpts, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3HandleRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -4860,6 +4994,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterHandleRedelegation(opts *bind.Fil // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchHandleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3HandleRedelegation, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -4913,6 +5048,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseHandleRedelegation(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "HandleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4995,6 +5131,7 @@ type CnStakingV3Redelegation struct { // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterRedelegation(opts *bind.FilterOpts, user []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3RedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -5015,6 +5152,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterRedelegation(opts *bind.FilterOpt // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3Redelegation, user []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -5064,6 +5202,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseRedelegation(log types.Log) (*CnSt if err := _CnStakingV3.contract.UnpackLog(event, "Redelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5144,6 +5283,7 @@ type CnStakingV3ReviewInitialConditions struct { // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3 *CnStakingV3Filterer) FilterReviewInitialConditions(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3ReviewInitialConditionsIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5160,6 +5300,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterReviewInitialConditions(opts *bin // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3 *CnStakingV3Filterer) WatchReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3ReviewInitialConditions, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5205,6 +5346,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseReviewInitialConditions(log types. if err := _CnStakingV3.contract.UnpackLog(event, "ReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5287,6 +5429,7 @@ type CnStakingV3RoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*CnStakingV3RoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5311,6 +5454,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleAdminChanged(opts *bind.Filte // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_CnStakingV3 *CnStakingV3Filterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *CnStakingV3RoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5364,6 +5508,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseRoleAdminChanged(log types.Log) (* if err := _CnStakingV3.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5446,6 +5591,7 @@ type CnStakingV3RoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CnStakingV3RoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5470,6 +5616,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleGranted(opts *bind.FilterOpts // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3 *CnStakingV3Filterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *CnStakingV3RoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5523,6 +5670,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseRoleGranted(log types.Log) (*CnSta if err := _CnStakingV3.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5605,6 +5753,7 @@ type CnStakingV3RoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CnStakingV3RoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5629,6 +5778,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterRoleRevoked(opts *bind.FilterOpts // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3 *CnStakingV3Filterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *CnStakingV3RoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -5682,6 +5832,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseRoleRevoked(log types.Log) (*CnSta if err := _CnStakingV3.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5764,6 +5915,7 @@ type CnStakingV3SetPublicDelegation struct { // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) FilterSetPublicDelegation(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3SetPublicDelegationIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5780,6 +5932,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterSetPublicDelegation(opts *bind.Fi // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) WatchSetPublicDelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3SetPublicDelegation, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5825,6 +5978,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseSetPublicDelegation(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "SetPublicDelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5905,6 +6059,7 @@ type CnStakingV3ToggleRedelegation struct { // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3 *CnStakingV3Filterer) FilterToggleRedelegation(opts *bind.FilterOpts) (*CnStakingV3ToggleRedelegationIterator, error) { + logs, sub, err := _CnStakingV3.contract.FilterLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -5916,6 +6071,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterToggleRedelegation(opts *bind.Fil // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3 *CnStakingV3Filterer) WatchToggleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3ToggleRedelegation) (event.Subscription, error) { + logs, sub, err := _CnStakingV3.contract.WatchLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -5956,6 +6112,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseToggleRedelegation(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "ToggleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6036,6 +6193,7 @@ type CnStakingV3UpdateGCId struct { // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateGCId(opts *bind.FilterOpts, gcId []*big.Int) (*CnStakingV3UpdateGCIdIterator, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -6052,6 +6210,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateGCId(opts *bind.FilterOpts, // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3 *CnStakingV3Filterer) WatchUpdateGCId(opts *bind.WatchOpts, sink chan<- *CnStakingV3UpdateGCId, gcId []*big.Int) (event.Subscription, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -6097,6 +6256,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseUpdateGCId(log types.Log) (*CnStak if err := _CnStakingV3.contract.UnpackLog(event, "UpdateGCId", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6177,6 +6337,7 @@ type CnStakingV3UpdateRewardAddress struct { // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3UpdateRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -6193,6 +6354,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateRewardAddress(opts *bind.Fi // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3 *CnStakingV3Filterer) WatchUpdateRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3UpdateRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -6238,6 +6400,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseUpdateRewardAddress(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "UpdateRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6318,6 +6481,7 @@ type CnStakingV3UpdateStakingTracker struct { // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateStakingTracker(opts *bind.FilterOpts, stakingTracker []common.Address) (*CnStakingV3UpdateStakingTrackerIterator, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -6334,6 +6498,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateStakingTracker(opts *bind.F // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3 *CnStakingV3Filterer) WatchUpdateStakingTracker(opts *bind.WatchOpts, sink chan<- *CnStakingV3UpdateStakingTracker, stakingTracker []common.Address) (event.Subscription, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -6379,6 +6544,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseUpdateStakingTracker(log types.Log if err := _CnStakingV3.contract.UnpackLog(event, "UpdateStakingTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6459,6 +6625,7 @@ type CnStakingV3UpdateVoterAddress struct { // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateVoterAddress(opts *bind.FilterOpts, voterAddress []common.Address) (*CnStakingV3UpdateVoterAddressIterator, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -6475,6 +6642,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterUpdateVoterAddress(opts *bind.Fil // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3 *CnStakingV3Filterer) WatchUpdateVoterAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3UpdateVoterAddress, voterAddress []common.Address) (event.Subscription, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -6520,6 +6688,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseUpdateVoterAddress(log types.Log) if err := _CnStakingV3.contract.UnpackLog(event, "UpdateVoterAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6602,6 +6771,7 @@ type CnStakingV3WithdrawApprovedStaking struct { // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterWithdrawApprovedStaking(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3WithdrawApprovedStakingIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -6622,6 +6792,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterWithdrawApprovedStaking(opts *bin // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchWithdrawApprovedStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3WithdrawApprovedStaking, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -6671,6 +6842,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseWithdrawApprovedStaking(log types. if err := _CnStakingV3.contract.UnpackLog(event, "WithdrawApprovedStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6752,6 +6924,7 @@ type CnStakingV3WithdrawLockupStaking struct { // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) FilterWithdrawLockupStaking(opts *bind.FilterOpts, to []common.Address) (*CnStakingV3WithdrawLockupStakingIterator, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -6768,6 +6941,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) FilterWithdrawLockupStaking(opts *bind. // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3 *CnStakingV3Filterer) WatchWithdrawLockupStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3WithdrawLockupStaking, to []common.Address) (event.Subscription, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -6813,6 +6987,7 @@ func (_CnStakingV3 *CnStakingV3Filterer) ParseWithdrawLockupStaking(log types.Lo if err := _CnStakingV3.contract.UnpackLog(event, "WithdrawLockupStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6917,8 +7092,8 @@ var CnStakingV3MultiSigABI = CnStakingV3MultiSigMetaData.ABI // CnStakingV3MultiSigBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingV3MultiSigBinRuntime = `6080604052600436106104a7575f3560e01c8063702b9c9b11610262578063a006e90c1161014a578063d2569eb9116100be578063e7abb98d11610083578063e7abb98d14610ee2578063ed979dd614610ef7578063f2f2f49b14610f23578063f5b541a614610f38578063ff4634bc14610f58578063ffa1ad7414610f77575f80fd5b8063d2569eb914610e52578063d547741f14610e71578063d75859ec14610e90578063e1a12d3514610ea4578063e748357b14610ec3575f80fd5b8063bfc7e9481161010f578063bfc7e94814610d9b578063c336aa3514610dce578063c47afb3a14610ded578063c804b11514610e0c578063c89e436114610e2b578063ca15c87314610e33575f80fd5b8063a006e90c14610d22578063a217fddf14610d35578063aa4058b914610d48578063b756393014610d67578063b756e6ff14610d7c575f80fd5b8063863f5c0a116101e15780639010d07c116101a65780639010d07c14610c8657806391d1485414610ca5578063944dd5a214610cc457806396106ae414610c70578063992ac9fa14610ce35780639c394c5d14610d02575f80fd5b8063863f5c0a14610bff5780638740568b14610c1e57806387cd9feb14610c3d5780638cf57cb914610c515780638e6f6b7714610c70575f80fd5b80637818097c116102275780637818097c14610b74578063791b512314610b935780637a5db06814610bb25780637a66c96b14610bd15780637b5e048114610bea575f80fd5b8063702b9c9b14610ab25780637048027514610ac6578063725c050314610ae557806375a8764314610b3357806375b238fc14610b54575f80fd5b80632f2ff15d116103905780635784d18b116103045780635ecd75f2116102c95780635ecd75f214610a1d578063630b114614610a425780636a27c20614610a575780636bd8f80414610a5f5780636d2714db14610a7e5780636e93df0d14610a93575f80fd5b80635784d18b1461099757806358d65880146109b65780635badbe4c146109ca5780635be6eacc146109df5780635df8b09a146109fe575f80fd5b80633b2d2aca116103555780633b2d2aca146108c85780634b6a94cc146108e75780634b8bc6f8146109305780634cf088d91461094f5780634f97638f14610964578063505ebed414610978575f80fd5b80632f2ff15d1461083d5780632f890b1d1461085c57806336568abe146108705780633780b3ed1461088f578063392e53cd146108af575f80fd5b8063139d7fed116104275780632429f8a9116103ec5780632429f8a914610721578063248a9ca31461075557806324d7806c1461078357806327e1f7df146107a2578063284fbedc146107c15780632e5dc0f71461081e575f80fd5b8063139d7fed1461066657806314d3ce1014610699578063164990f8146106c45780631865c57d146106e357806319e44e321461070c575f80fd5b80630b8160451161046d5780630b816045146105aa5780630c07d842146105dc5780630df5975c146105fc5780630fd440ec1461061b57806311117fc814610647575f80fd5b80628c477a146104d957806301ffc9a71461051a5780630670422214610549578063069135af1461056c57806306b35d311461058b575f80fd5b366104d5576104b4610f8b565b5f805160206157008339815191526104cb81610fe4565b6104d3610ff1565b005b5f80fd5b3480156104e4575f80fd5b506017546104fd9061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610525575f80fd5b50610539610534366004614b65565b611079565b6040519015158152602001610511565b348015610554575f80fd5b5061055e60105481565b604051908152602001610511565b348015610577575f80fd5b506104d3610586366004614ba0565b6110a3565b348015610596575f80fd5b506104d36105a5366004614bbb565b611133565b3480156105b5575f80fd5b506105c96105c4366004614bbb565b611209565b6040516105119796959493929190614c4d565b3480156105e7575f80fd5b5061055e5f8051602061574083398151915281565b348015610607575f80fd5b506104d3610616366004614ba0565b611281565b348015610626575f80fd5b5061063a610635366004614ca7565b6113fc565b6040516105119190614d0f565b348015610652575f80fd5b506104fd610661366004614bbb565b6114e1565b348015610671575f80fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a4575f80fd5b5061055e6106b3366004614ba0565b60086020525f908152604090205481565b3480156106cf575f80fd5b506104d36106de366004614d21565b6114f9565b3480156106ee575f80fd5b506106f76116ec565b60405161051199989796959493929190614d68565b348015610717575f80fd5b5061055e60155481565b34801561072c575f80fd5b50600d54600e5461073e9160ff169082565b604080519215158352602083019190915201610511565b348015610760575f80fd5b5061055e61076f366004614bbb565b5f9081526019602052604090206001015490565b34801561078e575f80fd5b5061053961079d366004614ba0565b611810565b3480156107ad575f80fd5b506104d36107bc366004614ba0565b611828565b3480156107cc575f80fd5b5061080e6107db366004614bbb565b60166020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b6040516105119493929190614de9565b348015610829575f80fd5b506104d3610838366004614e92565b61193a565b348015610848575f80fd5b506104d3610857366004614f1f565b611ad4565b348015610867575f80fd5b506104d3611af8565b34801561087b575f80fd5b506104d361088a366004614f1f565b611b71565b34801561089a575f80fd5b5061055e5f8051602061570083398151915281565b3480156108ba575f80fd5b506012546105399060ff1681565b3480156108d3575f80fd5b506104d36108e2366004614d21565b611ba4565b3480156108f2575f80fd5b506109236040518060400160405280601181526020017010db94dd185ada5b99d0dbdb9d1c9858dd607a1b81525081565b6040516105119190614f7b565b34801561093b575f80fd5b506104d361094a366004614f8d565b611d12565b34801561095a575f80fd5b5061055e60135481565b34801561096f575f80fd5b506104d3611d9f565b348015610983575f80fd5b506104d3610992366004614f8d565b611de7565b3480156109a2575f80fd5b506104d36109b1366004614ba0565b611f5f565b3480156109c1575f80fd5b5061055e603281565b3480156109d5575f80fd5b5061055e60045481565b3480156109ea575f80fd5b506104d36109f9366004614ba0565b6120fd565b348015610a09575f80fd5b5061055e610a18366004614f8d565b61229d565b348015610a28575f80fd5b50610a316123fc565b604051610511959493929190614fb7565b348015610a4d575f80fd5b5061055e60145481565b6104d3612533565b348015610a6a575f80fd5b506104d3610a79366004614ff9565b612578565b348015610a89575f80fd5b5061055e60065481565b348015610a9e575f80fd5b506104d3610aad366004614bbb565b612817565b348015610abd575f80fd5b506104d3612ad5565b348015610ad1575f80fd5b506104d3610ae0366004614ba0565b612bfe565b348015610af0575f80fd5b5061080e610aff366004614bbb565b5f9081526016602052604090208054600182015460028301546003909301546001600160a01b039092169390929160ff1690565b348015610b3e575f80fd5b50610b47612d0f565b6040516105119190615037565b348015610b5f575f80fd5b5061055e5f8051602061572083398151915281565b348015610b7f575f80fd5b506104d3610b8e366004614f8d565b612e04565b348015610b9e575f80fd5b506104d3610bad366004614ba0565b612ece565b348015610bbd575f80fd5b506001546104fd906001600160a01b031681565b348015610bdc575f80fd5b506017546105399060ff1681565b348015610bf5575f80fd5b5061055e60115481565b348015610c0a575f80fd5b506104d3610c19366004614ba0565b612f6e565b348015610c29575f80fd5b50600a546104fd906001600160a01b031681565b348015610c48575f80fd5b506104d361300e565b348015610c5c575f80fd5b506009546104fd906001600160a01b031681565b348015610c7b575f80fd5b5061055e62093a8081565b348015610c91575f80fd5b506104fd610ca0366004615049565b61303b565b348015610cb0575f80fd5b50610539610cbf366004614f1f565b613059565b348015610ccf575f80fd5b506104d3610cde366004614ba0565b6130cb565b348015610cee575f80fd5b506018546104fd906001600160a01b031681565b348015610d0d575f80fd5b5061055e5f8051602061576083398151915281565b6104d3610d30366004614ba0565b61316a565b348015610d40575f80fd5b5061055e5f81565b348015610d53575f80fd5b506104d3610d62366004614ba0565b61337d565b348015610d72575f80fd5b5061055e60025481565b348015610d87575f80fd5b506104d3610d96366004614ba0565b6134ff565b348015610da6575f80fd5b506105397f000000000000000000000000000000000000000000000000000000000000000081565b348015610dd9575f80fd5b506104d3610de8366004614ba0565b613615565b348015610df8575f80fd5b506104d3610e07366004614bbb565b613664565b348015610e17575f80fd5b506104d3610e26366004614bbb565b6136e2565b6104d36137d7565b348015610e3e575f80fd5b5061055e610e4d366004614bbb565b6137fe565b348015610e5d575f80fd5b5061063a610e6c366004615069565b613814565b348015610e7c575f80fd5b506104d3610e8b366004614f1f565b6138f9565b348015610e9b575f80fd5b506104d361391d565b348015610eaf575f80fd5b506007546104fd906001600160a01b031681565b348015610ece575f80fd5b506104d3610edd366004614bbb565b6139bf565b348015610eed575f80fd5b5061055e60035481565b348015610f02575f80fd5b50610f16610f11366004614bbb565b613a2e565b6040516105119190615097565b348015610f2e575f80fd5b506104fd61040081565b348015610f43575f80fd5b5061055e5f805160206156e083398151915281565b348015610f63575f80fd5b506104d3610f72366004614bbb565b613a9b565b348015610f82575f80fd5b5061055e600381565b60125460ff16610fe25760405162461bcd60e51b815260206004820152601c60248201527f436f6e7472616374206973206e6f7420696e697469616c697a65642e0000000060448201526064015b60405180910390fd5b565b610fee8133613b34565b50565b5f34116110325760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21030b6b7bab73a1760891b6044820152606401610fd9565b6013805434019055611042613b6d565b60405134815233907f8ecbcbd560048c1f474847748189e8c43f1fdee737fbd34523b04b5a9bbdffaa9060200160405180910390a2565b5f6001600160e01b03198216635a05180f60e01b148061109d575061109d82613bc5565b92915050565b6110ab610f8b565b5f805160206157208339815191526110c281610fe4565b816110cc81613bf9565b7f00000000000000000000000000000000000000000000000000000000000000001561110a5760405162461bcd60e51b8152600401610fd9906150a5565b5f61112260086001600160a01b0386165b5f80613c42565b905061112d81613d0e565b50505050565b61113b610f8b565b5f8051602061572083398151915261115281610fe4565b7f0000000000000000000000000000000000000000000000000000000000000000156111905760405162461bcd60e51b8152600401610fd9906150a5565b5f82815260166020526040902080546001600160a01b03166111c45760405162461bcd60e51b8152600401610fd9906150dc565b5f600382015460ff1660028111156111de576111de614bd2565b146111fb5760405162461bcd60e51b8152600401610fd99061511e565b5f6111226007858380613c42565b5f81815260056020819052604082208054600182015460028301546003840154600485015487968796879687966060968896939560ff909316949193909290916001600160a01b0390911690611260908701613d3d565b6112698f613a2e565b959f949e50929c50909a509850965090945092505050565b611289610f8b565b5f805160206157208339815191526112a081610fe4565b6112b46001600160a01b0383166001613d49565b6112d05760405162461bcd60e51b8152600401610fd990615146565b60175461010090046001600160a01b0316156113d757601754604051635605a4e560e01b81523060048201526101009091046001600160a01b031690635605a4e5906024015f604051808303815f87803b15801561132c575f80fd5b505af115801561133e573d5f803e3d5ffd5b50505050601760019054906101000a90046001600160a01b03166001600160a01b031663d4377d4d6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611392573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113b991908101906151a0565b51156113d75760405162461bcd60e51b8152600401610fd99061522c565b5f6113ec60096001600160a01b03851661111b565b90506113f781613d0e565b505050565b60605f83158061140e57506004548410155b611418578361141c565b6004545b90506114288582615296565b67ffffffffffffffff81111561144057611440614e26565b604051908082528060200260200182016040528015611469578160200160208202803683370190505b5091505f855b828110156114d65784600481111561148957611489614bd2565b61149282613a2e565b60048111156114a3576114a3614bd2565b036114ce57808483806001019450815181106114c1576114c16152a9565b6020026020010181815250505b60010161146f565b508252509392505050565b5f61109d5f805160206157208339815191528361303b565b8461150381613e77565b5f8051602061572083398151915261151a81610fe4565b6115248733613ee0565b6115705760405162461bcd60e51b815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f7420636f6e6669726d65642e0000006044820152606401610fd9565b5f87815260056020526040902086600b81111561158f5761158f614bd2565b815460ff16600b8111156115a5576115a5614bd2565b1480156115b55750858160010154145b80156115c45750848160020154145b80156115d35750838160030154145b6115ef5760405162461bcd60e51b8152600401610fd9906152bd565b6004810154336001600160a01b039091160361166e5760078101805460ff19166004179055805460018201546002830154600384015460405133948d947f01011152a3b44da915f5831c5c63c3448b616dcc166c3543f289ed79645280c9946116619460ff9093169391929091615304565b60405180910390a36116e2565b61167b6005820133613efa565b50805460018201546002830154600384015433938c937fed38e5621fac2aa23736077187104abfe9c8aa1c5b4eb73015d8cfdf403fe0709360ff909216929091906116c860058901613d3d565b6040516116d995949392919061532d565b60405180910390a35b5050505050505050565b6001546009545f9182918291606091839183918291849182916001600160a01b03908116917f0000000000000000000000000000000000000000000000000000000000000000911661173c613f0e565b600254600d54601254600b8054604080516020808402820181019092528281529294600c9460ff91821694911692909186919083018282801561179c57602002820191905f5260205f20905b815481526020019060010190808311611788575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156117ec57602002820191905f5260205f20905b8154815260200190600101908083116117d8575b50505050509250985098509850985098509850985098509850909192939495969798565b5f61109d5f8051602061572083398151915283613059565b5f805160206156e083398151915261183f81610fe4565b60016118575f805160206157208339815191526137fe565b6118619190615296565b60025461186e8282613fc6565b6118855f8051602061572083398151915285614030565b6118a15760405162461bcd60e51b8152600401610fd99061535e565b7f00000000000000000000000000000000000000000000000000000000000000006118f9576118dd5f8051602061576083398151915285614030565b6118f95760405162461bcd60e51b8152600401610fd99061535e565b611901611d9f565b6040516001600160a01b038516907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc2565220905f90a250505050565b611942614063565b8161194c81613bf9565b5f8051602061572083398151915261196381610fe4565b7f00000000000000000000000000000000000000000000000000000000000000006119a05760405162461bcd60e51b8152600401610fd99061538d565b5f8351116119e05760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21030b933b99760991b6044820152606401610fd9565b5f838060200190518101906119f59190615411565b604051631e1e087360e21b81529091506001600160a01b0386169063787821cc90611a249084906004016154bf565b6020604051808303815f875af1158015611a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a64919061550b565b600780546001600160a01b03199081166001600160a01b0393909316928317909155600980549091168217905560408051828152602081019290925233917f669ea85a3c8fdb578f28c81d130bb3cf68e5f3845d178688ae84abdba59c9030910160405180910390a25050505050565b5f82815260196020526040902060010154611aee81610fe4565b61112d83836140b6565b611b00610f8b565b5f80516020615720833981519152611b1781610fe4565b7f0000000000000000000000000000000000000000000000000000000000000000611b545760405162461bcd60e51b8152600401610fd99061538d565b5f611b62600b828080613c42565b9050611b6d81613d0e565b5050565b6001600160a01b0381163314611b9a5760405163334bd91960e11b815260040160405180910390fd5b6113f78282614030565b84611bae81613e77565b5f80516020615720833981519152611bc581610fe4565b611bcf8733613ee0565b15611c1c5760405162461bcd60e51b815260206004820152601d60248201527f4d73672e73656e64657220616c726561647920636f6e6669726d65642e0000006044820152606401610fd9565b5f87815260056020526040902086600b811115611c3b57611c3b614bd2565b815460ff16600b811115611c5157611c51614bd2565b148015611c615750858160010154145b8015611c705750848160020154145b8015611c7f5750838160030154145b611c9b5760405162461bcd60e51b8152600401610fd9906152bd565b611ca860058201336140dd565b5033887f658055f08cf63659025f616b2baf94baf8f4d2ee9c600c2ae722b4b7716cce4689898989611cdc60058901613d3d565b604051611ced95949392919061532d565b60405180910390a3600254611d04826005016140f1565b106116e2576116e2886140fa565b611d1a610f8b565b5f80516020615720833981519152611d3181610fe4565b82611d3b81613bf9565b5f611d446123fc565b9450505050505f84118015611d595750808411155b611d755760405162461bcd60e51b8152600401610fd990615526565b5f611d8c60056001600160a01b038816875f613c42565b9050611d9781613d0e565b505050505050565b5f805160206156e0833981519152611db681610fe4565b6004546003556040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b905f90a150565b5f805160206156e0833981519152611dfe81610fe4565b82611e0881613bf9565b5f611e116123fc565b9450505050505f84118015611e265750808411155b611e725760405162461bcd60e51b815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e0000000000006044820152606401610fd9565b6011805485900390556040515f906001600160a01b0387169086908381818185875af1925050503d805f8114611ec3576040519150601f19603f3d011682016040523d82523d5f602084013e611ec8565b606091505b5050905080611f0c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610fd9565b611f14613b6d565b856001600160a01b03167f2d9d65e4fcab96e158761a8d3cc0bd7fd76951ab5574667b07190da17177747086604051611f4f91815260200190565b60405180910390a2505050505050565b5f805160206156e0833981519152611f7681610fe4565b601880546001600160a01b0319166001600160a01b0384811691909117909155601754610100900416156120c6576001600160a01b03821615612069576017546040516327a38e0160e11b81526001600160a01b03848116600483015261010090920490911690634f471c0290602401602060405180830381865afa158015612001573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612025919061554e565b156120695760405162461bcd60e51b81526020600482015260146024820152732b37ba32b91030b63932b0b23c903a30b5b2b71760611b6044820152606401610fd9565b60175460405163aad8cb3f60e01b81523060048201526101009091046001600160a01b03169063aad8cb3f906024015f604051808303815f87803b1580156120af575f80fd5b505af11580156120c1573d5f803e3d5ffd5b505050505b6040516001600160a01b038316907f61ee88e3c7513df1e6e214415e781030278cf98b7fbb9d6d53720ee8aeb654ee905f90a25050565b5f805160206156e083398151915261211481610fe4565b6121286001600160a01b0383166001613d49565b6121445760405162461bcd60e51b8152600401610fd990615146565b60175461010090046001600160a01b03161561224b57601754604051635605a4e560e01b81523060048201526101009091046001600160a01b031690635605a4e5906024015f604051808303815f87803b1580156121a0575f80fd5b505af11580156121b2573d5f803e3d5ffd5b50505050601760019054906101000a90046001600160a01b03166001600160a01b031663d4377d4d6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612206573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261222d91908101906151a0565b511561224b5760405162461bcd60e51b8152600401610fd99061522c565b60178054610100600160a81b0319166101006001600160a01b038516908102919091179091556040517fef25e066ac14a10491ae1ac89a8247282158e169968aaccbceb257d0878bdfd0905f90a25050565b5f826122a881613bf9565b5f805160206157408339815191526122bf81610fe4565b5f841180156122dd5750601354846014546122da9190615565565b11155b6122f95760405162461bcd60e51b8152600401610fd990615526565b601580546001808201909255604080516080810182526001600160a01b03898116825260208083018a81524262093a80018486018181525f60608701818152898252601690955296909620855181546001600160a01b031916951694909417845590518388015593516002808401919091559051600383018054969a509496939592949093909260ff191691849081111561239657612396614bd2565b0217905550506014805487019055506123ad613b6d565b60408051868152602081018390526001600160a01b0388169186917fdd0988b8c11a867814c87be652f93a86d35c6a235b92977e99d5394bd8580ced910160405180910390a350505092915050565b6060805f805f61240a610f8b565b5f805b600b5481101561247057600b80548290811061242b5761242b6152a9565b905f5260205f20015442111561245d57600c80548290811061244f5761244f6152a9565b905f5260205f200154820191505b601154601054038203925060010161240d565b50600b5f01600b60010160105460115485848054806020026020016040519081016040528092919081815260200182805480156124ca57602002820191905f5260205f20905b8154815260200190600101908083116124b6575b505050505094508380548060200260200160405190810160405280929190818152602001828054801561251a57602002820191905f5260205f20905b815481526020019060010190808311612506575b5050505050935095509550955095509550509091929394565b61253b614063565b60015461255f905f80516020615720833981519152906001600160a01b0316614030565b50600180546001600160a01b0319169055610fe2614296565b612580610f8b565b8261258a81613bf9565b60175460ff1680156125a657506007546001600160a01b031633145b6125eb5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b6044820152606401610fd9565b306001600160a01b0384160361263b5760405162461bcd60e51b81526020600482015260156024820152742a30b933b2ba1031b0b713ba1031329039b2b6331760591b6044820152606401610fd9565b61264f6001600160a01b03841660036144ab565b6126925760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b6044820152606401610fd9565b5f821180156126b05750601354826014546126ad9190615565565b11155b6126cc5760405162461bcd60e51b8152600401610fd990615526565b6001600160a01b0384165f90815260086020526040902054158061271657506001600160a01b0384165f9081526008602052604090205442906127139062093a8090615565565b11155b61275a5760405162461bcd60e51b815260206004820152601560248201527421b0b713ba103932b232b632b3b0ba32903cb2ba1760591b6044820152606401610fd9565b601380548390039055604051632801ba4360e21b81526001600160a01b03858116600483015284169063a006e90c9084906024015f604051808303818588803b1580156127a5575f80fd5b505af11580156127b7573d5f803e3d5ffd5b50505050506127c4613b6d565b826001600160a01b0316846001600160a01b03167f4830c21a6eb4b2b3af6c4d24cfbd78ce437d5b690aac56ceec54df1d4d24e1a08460405161280991815260200190565b60405180910390a350505050565b5f8051602061576083398151915261282e81610fe4565b5f82815260166020526040902080546001600160a01b03166128625760405162461bcd60e51b8152600401610fd9906150dc565b5f600382015460ff16600281111561287c5761287c614bd2565b146128995760405162461bcd60e51b8152600401610fd99061511e565b601354816001015411156128ef5760405162461bcd60e51b815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e0000000000006044820152606401610fd9565b428160020154111561293b5760405162461bcd60e51b81526020600482015260156024820152742737ba103bb4ba34323930bbb0b13632903cb2ba1760591b6044820152606401610fd9565b600281015462093a80014281116129bf5760038201805460ff19166002179055600182015460148054919091039055612972613b6d565b815460018301546040519081526001600160a01b039091169085907fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df9060200160405180910390a361112d565b60038201805460ff191660019081179091558201805460138054919091039055805460148054919091039055825490546040515f926001600160a01b031691908381818185875af1925050503d805f8114612a35576040519150601f19603f3d011682016040523d82523d5f602084013e612a3a565b606091505b5050905080612a7e5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610fd9565b612a86613b6d565b825460018401546040519081526001600160a01b039091169086907f7a2d48d1df1249429730a253e5713a7d7a2024913de2fbccafdf36efdd32bf059060200160405180910390a35050505050565b612add614063565b5f80516020615720833981519152612af481610fe4565b335f818152600f602052604090205460ff1615612b535760405162461bcd60e51b815260206004820152601c60248201527f4d73672e73656e64657220616c72656164792072657669657765642e000000006044820152606401610fd9565b6001600160a01b0381165f818152600f6020526040808220805460ff19166001908117909155600e80549091019055517f65d287f4118b03f8cc979b433fd0b2246074200dd5da70c9daf204aaa0da1a2c9190a2612bbd5f805160206157208339815191526137fe565b600e5403611b6d57600d805460ff191660011790556040517f244ff9a3d72b1dc5a4bce7f05fb615395f2a8c7ad6ea525d2bac9030f75d7a9b905f90a15050565b5f805160206156e0833981519152612c1581610fe4565b612c2b5f805160206157208339815191526137fe565b612c36906001615565565b600254612c438282613fc6565b612c5a5f80516020615720833981519152856140b6565b612c765760405162461bcd60e51b8152600401610fd990615578565b7f0000000000000000000000000000000000000000000000000000000000000000612cce57612cb25f80516020615760833981519152856140b6565b612cce5760405162461bcd60e51b8152600401610fd990615578565b612cd6611d9f565b6040516001600160a01b038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba905f90a250505050565b6060612d19614063565b600e545f9067ffffffffffffffff811115612d3657612d36614e26565b604051908082528060200260200182016040528015612d5f578160200160208202803683370190505b5090505f805b612d7b5f805160206157208339815191526137fe565b811015612dfc575f612d9a5f805160206157208339815191528361303b565b6001600160a01b0381165f908152600f602052604090205490915060ff161515600103612df35780848481518110612dd457612dd46152a9565b6001600160a01b03909216602092830291909101909101526001909201915b50600101612d65565b509091505090565b612e0c610f8b565b5f80516020615720833981519152612e2381610fe4565b82612e2d81613bf9565b7f000000000000000000000000000000000000000000000000000000000000000015612e6b5760405162461bcd60e51b8152600401610fd9906150a5565b5f83118015612e89575060135483601454612e869190615565565b11155b612ea55760405162461bcd60e51b8152600401610fd990615526565b5f612ebc60066001600160a01b038716865f613c42565b9050612ec781613d0e565b5050505050565b612ed6610f8b565b5f80516020615720833981519152612eed81610fe4565b81612ef781613bf9565b6001612f0f5f805160206157208339815191526137fe565b612f199190615296565b600254612f268282613fc6565b612f3d5f8051602061572083398151915286613059565b612f595760405162461bcd60e51b8152600401610fd99061535e565b5f611d8c60026001600160a01b03881661111b565b612f76610f8b565b5f80516020615720833981519152612f8d81610fe4565b81612f9781613bf9565b612fad5f805160206157208339815191526137fe565b612fb8906001615565565b600254612fc58282613fc6565b612fdc5f8051602061572083398151915286613059565b15612ff95760405162461bcd60e51b8152600401610fd990615578565b5f611d8c60016001600160a01b03881661111b565b613016610f8b565b5f8051602061572083398151915261302d81610fe4565b5f611b626004828080613c42565b5f828152601a6020526040812061305290836146b9565b9392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000015801561309457505f8051602061570083398151915283145b156130a15750600161109d565b5f8381526019602090815260408083206001600160a01b038616845290915290205460ff16613052565b5f805160206156e08339815191526130e281610fe4565b7f0000000000000000000000000000000000000000000000000000000000000000156131205760405162461bcd60e51b8152600401610fd9906150a5565b600a80546001600160a01b0319166001600160a01b0384169081179091556040517fbe1849831e6775a2022006aeebcc00f70d10bc4202c8187e215ad9e9911f2b06905f90a25050565b613172610f8b565b8061317c81613bf9565b60175460ff166131c75760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b6044820152606401610fd9565b6131d23360036144ab565b6132155760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b6044820152606401610fd9565b6001600160a01b038083165f908152600860209081526040808320429055600754815163228cb73360e01b81529151941693849263228cb73392600480820193918290030181865afa15801561326d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613291919061554e565b6040516325fb490360e11b81526001600160a01b0386811660048301524792909201925090831690634bf692069034906024015f604051808303818588803b1580156132db575f80fd5b505af11580156132ed573d5f803e3d5ffd5b50505050504781146133355760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21039ba30b5b2a337b91760791b6044820152606401610fd9565b604051348152309033906001600160a01b038716907fcbbd772ac9792b90fb77aa3194b0279ec4dbea1880ecc3674ecd2f4bf39b0c909060200160405180910390a450505050565b6133856146c4565b6133e05760405162461bcd60e51b815260206004820152602660248201527f556e617574686f72697a656420746f2061636365707420726577617264206164604482015265323932b9b99760d11b6064820152608401610fd9565b600a546001600160a01b0382811691161461344f5760405162461bcd60e51b815260206004820152602960248201527f476976656e206164647265737320646f6573206e6f74206d6174636820746865604482015268103832b73234b7339760b91b6064820152608401610fd9565b600a5460405163832a2aad60e01b81526001600160a01b0390911660048201526104009063832a2aad906024015f604051808303815f87803b158015613493575f80fd5b505af11580156134a5573d5f803e3d5ffd5b5050600a8054600980546001600160a01b0383166001600160a01b031991821681179092559091169091556040519092507f36e0b58f785f850d6622cb742fa1e0750728da3c75816916830b50b747efb6b691505f90a250565b613507610f8b565b5f8051602061572083398151915261351e81610fe4565b60175461010090046001600160a01b03161580159061354557506001600160a01b03821615155b15613600576017546040516327a38e0160e11b81526001600160a01b03848116600483015261010090920490911690634f471c0290602401602060405180830381865afa158015613598573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135bc919061554e565b156136005760405162461bcd60e51b81526020600482015260146024820152732b37ba32b91030b63932b0b23c903a30b5b2b71760611b6044820152606401610fd9565b5f6113ec600a6001600160a01b03851661111b565b61361d614063565b5f8051602061572083398151915261363481610fe4565b6136486001600160a01b0383166001613d49565b61224b5760405162461bcd60e51b8152600401610fd990615146565b5f805160206156e083398151915261367b81610fe4565b6136915f805160206157208339815191526137fe565b8261369c8282613fc6565b60028490556136a9611d9f565b6040518481527f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9060200160405180910390a150505050565b5f805160206157408339815191526136f981610fe4565b5f82815260166020526040902080546001600160a01b031661372d5760405162461bcd60e51b8152600401610fd9906150dc565b5f600382015460ff16600281111561374757613747614bd2565b146137645760405162461bcd60e51b8152600401610fd99061511e565b60038101805460ff1916600217905560018101546014805491909103905561378a613b6d565b805460018201546040519081526001600160a01b039091169084907fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df9060200160405180910390a3505050565b6137df610f8b565b5f805160206157008339815191526137f681610fe4565b610fee610ff1565b5f818152601a6020526040812061109d906140f1565b60605f83158061382657506015548410155b6138305783613834565b6015545b90506138408582615296565b67ffffffffffffffff81111561385857613858614e26565b604051908082528060200260200182016040528015613881578160200160208202803683370190505b5091505f855b828110156114d6578460028111156138a1576138a1614bd2565b5f8281526016602052604090206003015460ff1660028111156138c6576138c6614bd2565b036138f157808483806001019450815181106138e4576138e46152a9565b6020026020010181815250505b600101613887565b5f8281526019602052604090206001015461391381610fe4565b61112d8383614030565b5f805160206156e083398151915261393481610fe4565b7f00000000000000000000000000000000000000000000000000000000000000006139715760405162461bcd60e51b8152600401610fd99061538d565b6017805460ff8082161560ff1990921682179092556040519116151581527f02efa9113845c402ffbbc237400eeba75de99c23f054459573f88caa5a9418989060200160405180910390a150565b6139c7610f8b565b5f805160206157208339815191526139de81610fe4565b6139f45f805160206157208339815191526137fe565b826139ff8282613fc6565b6002548403613a205760405162461bcd60e51b8152600401610fd990615526565b5f612ebc6003868380613c42565b5f6004548210613a3f57505f919050565b60015f8381526005602052604090206007015460ff166004811115613a6657613a66614bd2565b14613a8357505f9081526005602052604090206007015460ff1690565b6003548210613a9357600161109d565b600492915050565b613aa3614063565b5f80516020615720833981519152613aba81610fe4565b815f03613b015760405162461bcd60e51b815260206004820152601560248201527423a19024a21031b0b73737ba103132903d32b9379760591b6044820152606401610fd9565b600682905560405182907f469cb2f3ce5d5e879269af625b54571651feb0ede6e83ee89b9c888648af514f905f90a25050565b613b3e8282613059565b611b6d5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610fd9565b601754604051635605a4e560e01b81523060048201526101009091046001600160a01b031690635605a4e5906024015f604051808303815f87803b158015613bb3575f80fd5b505af115801561112d573d5f803e3d5ffd5b5f6001600160e01b03198216637965db0b60e01b148061109d57506301ffc9a760e01b6001600160e01b031983161461109d565b6001600160a01b038116610fee5760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b990373ab6361760811b6044820152606401610fd9565b6004805460018082019092555f8181526005602052604081208054919390918891839160ff19169083600b811115613c7c57613c7c614bd2565b0217905550600180820187905560028201869055600382018590556004820180546001600160a01b0319163317905560078201805460ff191682800217905550336001600160a01b0316827fdd9ce6d431d4ac3e8bea81bc2d7760b97d30c4e54252d8c8c59054849b8f61b589898989604051613cfc9493929190615304565b60405180910390a35095945050505050565b5f818152600560205260409020805460018201546002830154600390930154610fee93859360ff169291611ba4565b60605f6130528361479c565b5f826001600160a01b03163b5f03613d6257505f61109d565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015613da1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613dc891908101906155a7565b805190602001207fccfe28814eb3e9d0e6cfd45eb754f27c5eb4399dac6379181362ebd8b6a865c314613dfe575f91505061109d565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e5f919061554e565b14613e6d575f91505061109d565b5060019392505050565b6001613e8282613a2e565b6004811115613e9357613e93614bd2565b14610fee5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e006044820152606401610fd9565b5f82815260056020819052604082206130529101836147f5565b5f613052836001600160a01b038416614816565b60605f613f275f805160206157208339815191526137fe565b90508067ffffffffffffffff811115613f4257613f42614e26565b604051908082528060200260200182016040528015613f6b578160200160208202803683370190505b5091505f5b81811015613fc157613f8f5f805160206157208339815191528261303b565b838281518110613fa157613fa16152a9565b6001600160a01b0390921660209283029190910190910152600101613f70565b505090565b60328211158015613fd75750818111155b8015613fe257508015155b8015613fed57508115155b611b6d5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b2103932b8bab4b932b6b2b73a1760611b6044820152606401610fd9565b5f8061403c84846148f9565b90508015613052575f848152601a6020526040902061405b9084613efa565b509392505050565b60125460ff1615610fe25760405162461bcd60e51b815260206004820152601e60248201527f436f6e747261637420686173206265656e20696e697469616c697a65642e00006044820152606401610fd9565b5f806140c2848461496b565b90508015613052575f848152601a6020526040902061405b90845b5f613052836001600160a01b0384166149f5565b5f61109d825490565b5f818152600560205260408120805460018201546002830154600384015460ff9093169285808086600b81111561413357614133614bd2565b600b81111561414457614144614bd2565b8152602081019190915260409081015f2054905160248101869052604481018590526064810184905260e09190911b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905190915030906141bb9083906155d9565b5f604051808303815f865af19150503d805f81146141f4576040519150601f19603f3d011682016040523d82523d5f602084013e6141f9565b606091505b5090975050861561424d5760078601805460ff19166002179055604051339089907f48f16d9e6ab6f19798a7c7f307ecea3def480049fa0a09280e2a3fa45aaa842690611661908990899089908990615304565b60078601805460ff19166003179055604051339089907fbd3ad69fc5a8e233118506c67ebe892bef493fcf2eb9e6986f6d6c3f2adf0e8a906116d9908990899089908990615304565b61429e614063565b600654158015906142be575060175461010090046001600160a01b031615155b801561433a57507f0000000000000000000000000000000000000000000000000000000000000000158061433a57507f0000000000000000000000000000000000000000000000000000000000000000801561432457506007546001600160a01b031615155b801561433a57506009546001600160a01b031615155b61437d5760405162461bcd60e51b81526020600482015260146024820152732737ba1039b2ba103ab810383937b832b9363c9760611b6044820152606401610fd9565b600d5460ff1615156001146143cc5760405162461bcd60e51b81526020600482015260156024820152742932bb34b2bbb9903737ba103334b734b9b432b21760591b6044820152606401610fd9565b5f805b600c5481101561440557600c8054829081106143ed576143ed6152a9565b5f9182526020909120015491909101906001016143cf565b5080341461444d5760405162461bcd60e51b81526020600482015260156024820152742b30b63ab2903237b2b9903737ba1036b0ba31b41760591b6044820152606401610fd9565b6010819055601181905561445f614a3a565b6012805460ff1916600117905560405133907f2b3c5e8e58d7d1e42ccd071c6f749d53f9ee506020a81fad9ff98140ccccde69906144a09034815260200190565b60405180910390a250565b5f826001600160a01b03163b5f036144c457505f61109d565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015614503573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261452a91908101906155a7565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214614560575f91505061109d565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa15801561459d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145c1919061554e565b146145cf575f91505061109d565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561460c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614630919061550b565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015614679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061469d91906155ef565b506001600160a01b039081169088161494505050505092915050565b5f6130528383614b3f565b600a545f906001600160a01b031633036146de5750600190565b5f6104006001600160a01b0316631865c57d6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561471c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052614743919081019061562e565b5090505f5b815181101561479457818181518110614763576147636152a9565b60200260200101516001600160a01b0316336001600160a01b03160361478c5760019250505090565b600101614748565b505f91505090565b6060815f018054806020026020016040519081016040528092919081815260200182805480156147e957602002820191905f5260205f20905b8154815260200190600101908083116147d5575b50505050509050919050565b6001600160a01b0381165f9081526001830160205260408120541515613052565b5f81815260018301602052604081205480156148f0575f614838600183615296565b85549091505f9061484b90600190615296565b90508082146148aa575f865f018281548110614869576148696152a9565b905f5260205f200154905080875f018481548110614889576148896152a9565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806148bb576148bb6156cb565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061109d565b5f91505061109d565b5f6149048383613059565b15614964575f8381526019602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161109d565b505f61109d565b5f6149768383613059565b614964575f8381526019602090815260408083206001600160a01b03861684529091529020805460ff191660011790556149ad3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161109d565b5f81815260018301602052604081205461496457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561109d565b7f0000000000000000000000000000000000000000000000000000000000000000614ad157614a765f80516020615740833981519152306140b6565b505f5b614a8f5f805160206157208339815191526137fe565b811015610fee575f614aae5f805160206157208339815191528361303b565b9050614ac75f80516020615760833981519152826140b6565b5050600101614a79565b600754614af5905f80516020615700833981519152906001600160a01b03166140b6565b50600754614b1a905f80516020615740833981519152906001600160a01b03166140b6565b50600754610fee905f80516020615760833981519152906001600160a01b03166140b6565b5f825f018281548110614b5457614b546152a9565b905f5260205f200154905092915050565b5f60208284031215614b75575f80fd5b81356001600160e01b031981168114613052575f80fd5b6001600160a01b0381168114610fee575f80fd5b5f60208284031215614bb0575f80fd5b813561305281614b8c565b5f60208284031215614bcb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b600c8110614bf657614bf6614bd2565b9052565b5f815180845260208085019450602084015f5b83811015614c325781516001600160a01b031687529582019590820190600101614c0d565b509495945050505050565b60058110614bf657614bf6614bd2565b614c578189614be6565b86602082015285604082015284606082015260018060a01b038416608082015260e060a08201525f614c8c60e0830185614bfa565b9050614c9b60c0830184614c3d565b98975050505050505050565b5f805f60608486031215614cb9575f80fd5b8335925060208401359150604084013560058110614cd5575f80fd5b809150509250925092565b5f815180845260208085019450602084015f5b83811015614c3257815187529582019590820190600101614cf3565b602081525f6130526020830184614ce0565b5f805f805f60a08688031215614d35575f80fd5b853594506020860135600c8110614d4a575f80fd5b94979496505050506040830135926060810135926080909101359150565b6001600160a01b038a81168252898116602083015288166040820152610120606082018190525f90614d9c8382018a614bfa565b905087608084015282810360a0840152614db68188614ce0565b905082810360c0840152614dca8187614ce0565b94151560e0840152505090151561010090910152979650505050505050565b6001600160a01b038516815260208101849052604081018390526080810160038310614e1757614e17614bd2565b82606083015295945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e6357614e63614e26565b604052919050565b5f67ffffffffffffffff821115614e8457614e84614e26565b50601f01601f191660200190565b5f8060408385031215614ea3575f80fd5b8235614eae81614b8c565b9150602083013567ffffffffffffffff811115614ec9575f80fd5b8301601f81018513614ed9575f80fd5b8035614eec614ee782614e6b565b614e3a565b818152866020838501011115614f00575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f8060408385031215614f30575f80fd5b823591506020830135614f4281614b8c565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6130526020830184614f4d565b5f8060408385031215614f9e575f80fd5b8235614fa981614b8c565b946020939093013593505050565b60a081525f614fc960a0830188614ce0565b8281036020840152614fdb8188614ce0565b60408401969096525050606081019290925260809091015292915050565b5f805f6060848603121561500b575f80fd5b833561501681614b8c565b9250602084013561502681614b8c565b929592945050506040919091013590565b602081525f6130526020830184614bfa565b5f806040838503121561505a575f80fd5b50508035926020909101359150565b5f805f6060848603121561507b575f80fd5b8335925060208401359150604084013560038110614cd5575f80fd5b6020810161109d8284614c3d565b6020808252601a908201527f5075626c69632064656c65676174696f6e20656e61626c65642e000000000000604082015260600190565b60208082526022908201527f5769746864726177616c207265717565737420646f6573206e6f7420657869736040820152613a1760f11b606082015260800190565b6020808252600e908201526d24b73b30b634b21039ba30ba329760911b604082015260600190565b60208082526017908201527f496e76616c6964205374616b696e67547261636b65722e000000000000000000604082015260600190565b5f67ffffffffffffffff82111561519657615196614e26565b5060051b60200190565b5f60208083850312156151b1575f80fd5b825167ffffffffffffffff8111156151c7575f80fd5b8301601f810185136151d7575f80fd5b80516151e5614ee78261517d565b81815260059190911b82018301908381019087831115615203575f80fd5b928401925b8284101561522157835182529284019290840190615208565b979650505050505050565b60208082526036908201527f43616e6e6f742075706461746520747261636b6572207768656e2074686572656040820152751034b99030b71030b1ba34bb32903a3930b1b5b2b91760511b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561109d5761109d615282565b634e487b7160e01b5f52603260045260245ffd5b60208082526027908201527f46756e6374696f6e20696420616e6420617267756d656e747320646f206e6f746040820152661036b0ba31b41760c91b606082015260800190565b608081016153128287614be6565b84602083015283604083015282606083015295945050505050565b6153378187614be6565b84602082015283604082015282606082015260a060808201525f61522160a0830184614bfa565b60208082526015908201527420b236b4b7103237b2b9903737ba1032bc34b9ba1760591b604082015260600190565b6020808252601b908201527f5075626c69632064656c65676174696f6e2064697361626c65642e0000000000604082015260600190565b5f82601f8301126153d3575f80fd5b81516153e1614ee782614e6b565b8181528460208386010111156153f5575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215615421575f80fd5b815167ffffffffffffffff80821115615438575f80fd5b908301906080828603121561544b575f80fd5b60405160808101818110838211171561546657615466614e26565b604052825161547481614b8c565b8152602083015161548481614b8c565b6020820152604083810151908201526060830151828111156154a4575f80fd5b6154b0878286016153c4565b60608301525095945050505050565b602081525f60018060a01b038084511660208401528060208501511660408401525060408301516060830152606083015160808084015261550360a0840182614f4d565b949350505050565b5f6020828403121561551b575f80fd5b815161305281614b8c565b6020808252600e908201526d24b73b30b634b2103b30b63ab29760911b604082015260600190565b5f6020828403121561555e575f80fd5b5051919050565b8082018082111561109d5761109d615282565b60208082526015908201527420b236b4b71030b63932b0b23c9032bc34b9ba399760591b604082015260600190565b5f602082840312156155b7575f80fd5b815167ffffffffffffffff8111156155cd575f80fd5b615503848285016153c4565b5f82518060208501845e5f920191825250919050565b5f805f60608486031215615601575f80fd5b835161560c81614b8c565b602085015190935061561d81614b8c565b6040850151909250614cd581614b8c565b5f806040838503121561563f575f80fd5b825167ffffffffffffffff811115615655575f80fd5b8301601f81018513615665575f80fd5b80516020615675614ee78361517d565b82815260059290921b83018101918181019088841115615693575f80fd5b938201935b838510156156ba5784516156ab81614b8c565b82529382019390820190615698565b969091015195979596505050505050565b634e487b7160e01b5f52603160045260245ffdfe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929b9e206fa2af7ee1331b72ce58b6d938ac810ce9b5cdb65d35ab723fd67badf9ea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756bbd235a04f337cdf14b2f1846017b33479fad2c3ae66d711584f13463a2170adb8f45a81765d409768c063c845ce4a132a06990e9ba80f54a39553a43ea2c34a26469706673582212209434cc753cf05deaf9294b9776b315bae0a2add2f6edcbb7b68c242d2f88251d64736f6c63430008190033` -// CnStakingV3MultiSigFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingV3MultiSigMetaData.Sigs instead. +// CnStakingV3MultiSigFuncSigs maps the 4-byte function signature to its string representation. var CnStakingV3MultiSigFuncSigs = CnStakingV3MultiSigMetaData.Sigs // CnStakingV3MultiSigBin is the compiled bytecode used for deploying new contracts. @@ -7090,6 +7265,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigTransactorRaw) Transact(opts *bin func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -7097,6 +7273,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ADDRESSBOOKADDRESS(opts * out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -7119,6 +7296,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) ADDRESSBOOKADDRESS func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -7126,6 +7304,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ADMINROLE(opts *bind.Call out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. @@ -7148,6 +7327,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) ADMINROLE() ([32]b func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -7155,6 +7335,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) CONTRACTTYPE(opts *bind.C out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -7177,6 +7358,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) CONTRACTTYPE() (st func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -7184,6 +7366,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) DEFAULTADMINROLE(opts *bi out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. @@ -7206,6 +7389,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) DEFAULTADMINROLE() func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -7213,6 +7397,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) MAXADMIN(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -7235,6 +7420,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) MAXADMIN() (*big.I func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -7242,6 +7428,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ONEWEEK(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -7264,6 +7451,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) ONEWEEK() (*big.In func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) OPERATORROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "OPERATOR_ROLE") + if err != nil { return *new([32]byte), err } @@ -7271,6 +7459,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) OPERATORROLE(opts *bind.C out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // OPERATORROLE is a free data retrieval call binding the contract method 0xf5b541a6. @@ -7293,6 +7482,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) OPERATORROLE() ([3 func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) STAKERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "STAKER_ROLE") + if err != nil { return *new([32]byte), err } @@ -7300,6 +7490,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) STAKERROLE(opts *bind.Cal out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // STAKERROLE is a free data retrieval call binding the contract method 0x3780b3ed. @@ -7322,6 +7513,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) STAKERROLE() ([32] func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) STAKELOCKUP(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "STAKE_LOCKUP") + if err != nil { return *new(*big.Int), err } @@ -7329,6 +7521,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) STAKELOCKUP(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // STAKELOCKUP is a free data retrieval call binding the contract method 0x96106ae4. @@ -7351,6 +7544,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) STAKELOCKUP() (*bi func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) UNSTAKINGAPPROVERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "UNSTAKING_APPROVER_ROLE") + if err != nil { return *new([32]byte), err } @@ -7358,6 +7552,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) UNSTAKINGAPPROVERROLE(opt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGAPPROVERROLE is a free data retrieval call binding the contract method 0x0c07d842. @@ -7380,6 +7575,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) UNSTAKINGAPPROVERR func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "UNSTAKING_CLAIMER_ROLE") + if err != nil { return *new([32]byte), err } @@ -7387,6 +7583,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) UNSTAKINGCLAIMERROLE(opts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGCLAIMERROLE is a free data retrieval call binding the contract method 0x9c394c5d. @@ -7409,6 +7606,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) UNSTAKINGCLAIMERRO func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -7416,6 +7614,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) VERSION(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -7438,6 +7637,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) VERSION() (*big.In func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) AdminList(opts *bind.CallOpts, _pos *big.Int) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "adminList", _pos) + if err != nil { return *new(common.Address), err } @@ -7445,6 +7645,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) AdminList(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AdminList is a free data retrieval call binding the contract method 0x11117fc8. @@ -7467,6 +7668,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) AdminList(_pos *bi func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ContractValidator(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "contractValidator") + if err != nil { return *new(common.Address), err } @@ -7474,6 +7676,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) ContractValidator(opts *b out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ContractValidator is a free data retrieval call binding the contract method 0x7a5db068. @@ -7496,6 +7699,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) ContractValidator( func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GcId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "gcId") + if err != nil { return *new(*big.Int), err } @@ -7503,6 +7707,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GcId(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GcId is a free data retrieval call binding the contract method 0x6d2714db. @@ -7525,6 +7730,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GcId() (*big.Int, func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetApprovedStakingWithdrawalIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getApprovedStakingWithdrawalIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -7532,6 +7738,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetApprovedStakingWithdra out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetApprovedStakingWithdrawalIds is a free data retrieval call binding the contract method 0xd2569eb9. @@ -7556,8 +7763,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetApprovedStakingWithdra Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getApprovedStakingWithdrawalInfo", _index) @@ -7567,12 +7773,17 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetApprovedStakingWithdra WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetApprovedStakingWithdrawalInfo is a free data retrieval call binding the contract method 0x725c0503. @@ -7583,8 +7794,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) GetApprovedStakingWithdr Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3MultiSig.CallOpts, _index) } @@ -7596,8 +7806,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetApprovedStaking Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3MultiSig.CallOpts, _index) } @@ -7610,8 +7819,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetLockupStakingInfo(opts Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getLockupStakingInfo") @@ -7622,13 +7830,18 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetLockupStakingInfo(opts Remaining *big.Int Withdrawable *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.UnlockTime = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) outstruct.UnlockAmount = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) outstruct.Initial = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.Remaining = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) outstruct.Withdrawable = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetLockupStakingInfo is a free data retrieval call binding the contract method 0x5ecd75f2. @@ -7640,8 +7853,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) GetLockupStakingInfo() ( Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetLockupStakingInfo(&_CnStakingV3MultiSig.CallOpts) } @@ -7654,8 +7866,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetLockupStakingIn Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetLockupStakingInfo(&_CnStakingV3MultiSig.CallOpts) } @@ -7665,6 +7876,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetLockupStakingIn func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRequestIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -7672,6 +7884,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestIds(opts *bind. out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetRequestIds is a free data retrieval call binding the contract method 0x0fd440ec. @@ -7699,8 +7912,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestInfo(opts *bind Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRequestInfo", _id) @@ -7713,6 +7925,9 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestInfo(opts *bind Confirmers []common.Address State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -7721,7 +7936,9 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestInfo(opts *bind outstruct.Proposer = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) outstruct.Confirmers = *abi.ConvertType(out[5], new([]common.Address)).(*[]common.Address) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x0b816045. @@ -7735,8 +7952,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) GetRequestInfo(_id *big. Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetRequestInfo(&_CnStakingV3MultiSig.CallOpts, _id) } @@ -7751,8 +7967,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetRequestInfo(_id Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetRequestInfo(&_CnStakingV3MultiSig.CallOpts, _id) } @@ -7762,6 +7977,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetRequestInfo(_id func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestState(opts *bind.CallOpts, _id *big.Int) (uint8, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRequestState", _id) + if err != nil { return *new(uint8), err } @@ -7769,6 +7985,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRequestState(opts *bin out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetRequestState is a free data retrieval call binding the contract method 0xed979dd6. @@ -7791,6 +8008,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetRequestState(_i func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetReviewers(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getReviewers") + if err != nil { return *new([]common.Address), err } @@ -7798,6 +8016,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetReviewers(opts *bind.C out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetReviewers is a free data retrieval call binding the contract method 0x75a87643. @@ -7820,6 +8039,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetReviewers() ([] func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -7827,6 +8047,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleAdmin(opts *bind.C out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -7849,6 +8070,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetRoleAdmin(role func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRoleMember", role, index) + if err != nil { return *new(common.Address), err } @@ -7856,6 +8078,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleMember(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c. @@ -7878,6 +8101,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetRoleMember(role func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getRoleMemberCount", role) + if err != nil { return *new(*big.Int), err } @@ -7885,6 +8109,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetRoleMemberCount(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873. @@ -7914,8 +8139,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetState(opts *bind.CallO UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "getState") @@ -7930,6 +8154,9 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetState(opts *bind.CallO AllReviewed bool IsInitialized bool }) + if err != nil { + return *outstruct, err + } outstruct.ContractValidator = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.NodeId = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) @@ -7940,7 +8167,9 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) GetState(opts *bind.CallO outstruct.UnlockAmount = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) outstruct.AllReviewed = *abi.ConvertType(out[7], new(bool)).(*bool) outstruct.IsInitialized = *abi.ConvertType(out[8], new(bool)).(*bool) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -7956,8 +8185,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) GetState() (struct { UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetState(&_CnStakingV3MultiSig.CallOpts) } @@ -7974,8 +8202,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetState() (struct UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.GetState(&_CnStakingV3MultiSig.CallOpts) } @@ -7985,6 +8212,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) GetState() (struct func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -7992,6 +8220,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) HasRole(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -8014,6 +8243,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) HasRole(role [32]b func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) InitialLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "initialLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -8021,6 +8251,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) InitialLockupStaking(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // InitialLockupStaking is a free data retrieval call binding the contract method 0x06704222. @@ -8043,6 +8274,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) InitialLockupStaki func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsAdmin(opts *bind.CallOpts, _admin common.Address) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "isAdmin", _admin) + if err != nil { return *new(bool), err } @@ -8050,6 +8282,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsAdmin(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsAdmin is a free data retrieval call binding the contract method 0x24d7806c. @@ -8072,6 +8305,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) IsAdmin(_admin com func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -8079,6 +8313,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsInitialized(opts *bind. out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -8101,6 +8336,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) IsInitialized() (b func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsPublicDelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "isPublicDelegationEnabled") + if err != nil { return *new(bool), err } @@ -8108,6 +8344,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsPublicDelegationEnabled out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsPublicDelegationEnabled is a free data retrieval call binding the contract method 0xbfc7e948. @@ -8130,6 +8367,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) IsPublicDelegation func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsRedelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "isRedelegationEnabled") + if err != nil { return *new(bool), err } @@ -8137,6 +8375,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) IsRedelegationEnabled(opt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsRedelegationEnabled is a free data retrieval call binding the contract method 0x7a66c96b. @@ -8159,6 +8398,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) IsRedelegationEnab func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LastClearedId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "lastClearedId") + if err != nil { return *new(*big.Int), err } @@ -8166,6 +8406,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LastClearedId(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastClearedId is a free data retrieval call binding the contract method 0xe7abb98d. @@ -8188,6 +8429,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) LastClearedId() (* func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LastRedelegation(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "lastRedelegation", arg0) + if err != nil { return *new(*big.Int), err } @@ -8195,6 +8437,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LastRedelegation(opts *bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastRedelegation is a free data retrieval call binding the contract method 0x14d3ce10. @@ -8217,8 +8460,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) LastRedelegation(a func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LockupConditions(opts *bind.CallOpts) (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "lockupConditions") @@ -8226,10 +8468,15 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LockupConditions(opts *bi AllReviewed bool ReviewedCount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AllReviewed = *abi.ConvertType(out[0], new(bool)).(*bool) outstruct.ReviewedCount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // LockupConditions is a free data retrieval call binding the contract method 0x2429f8a9. @@ -8238,8 +8485,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) LockupConditions(opts *bi func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.LockupConditions(&_CnStakingV3MultiSig.CallOpts) } @@ -8249,8 +8495,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) LockupConditions() (stru func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.LockupConditions(&_CnStakingV3MultiSig.CallOpts) } @@ -8260,6 +8505,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) LockupConditions() func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -8267,6 +8513,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) NodeId(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -8289,6 +8536,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) NodeId() (common.A func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) PendingRewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "pendingRewardAddress") + if err != nil { return *new(common.Address), err } @@ -8296,6 +8544,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) PendingRewardAddress(opts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PendingRewardAddress is a free data retrieval call binding the contract method 0x8740568b. @@ -8318,6 +8567,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) PendingRewardAddre func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) PublicDelegation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "publicDelegation") + if err != nil { return *new(common.Address), err } @@ -8325,6 +8575,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) PublicDelegation(opts *bi out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PublicDelegation is a free data retrieval call binding the contract method 0xe1a12d35. @@ -8347,6 +8598,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) PublicDelegation() func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RemainingLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "remainingLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -8354,6 +8606,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RemainingLockupStaking(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RemainingLockupStaking is a free data retrieval call binding the contract method 0x7b5e0481. @@ -8376,6 +8629,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) RemainingLockupSta func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "requestCount") + if err != nil { return *new(*big.Int), err } @@ -8383,6 +8637,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RequestCount(opts *bind.C out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RequestCount is a free data retrieval call binding the contract method 0x5badbe4c. @@ -8405,6 +8660,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) RequestCount() (*b func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -8412,6 +8668,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Requirement(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -8434,6 +8691,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) Requirement() (*bi func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -8441,6 +8699,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) RewardAddress(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -8463,6 +8722,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) RewardAddress() (c func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -8470,6 +8730,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Staking(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -8492,6 +8753,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) Staking() (*big.In func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) StakingTracker(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "stakingTracker") + if err != nil { return *new(common.Address), err } @@ -8499,6 +8761,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) StakingTracker(opts *bind out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // StakingTracker is a free data retrieval call binding the contract method 0x008c477a. @@ -8521,6 +8784,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) StakingTracker() ( func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -8528,6 +8792,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) SupportsInterface(opts *b out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -8550,6 +8815,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) SupportsInterface( func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Unstaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "unstaking") + if err != nil { return *new(*big.Int), err } @@ -8557,6 +8823,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) Unstaking(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Unstaking is a free data retrieval call binding the contract method 0x630b1146. @@ -8579,6 +8846,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) Unstaking() (*big. func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) VoterAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "voterAddress") + if err != nil { return *new(common.Address), err } @@ -8586,6 +8854,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) VoterAddress(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // VoterAddress is a free data retrieval call binding the contract method 0x992ac9fa. @@ -8608,6 +8877,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) VoterAddress() (co func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) WithdrawalRequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "withdrawalRequestCount") + if err != nil { return *new(*big.Int), err } @@ -8615,6 +8885,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) WithdrawalRequestCount(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // WithdrawalRequestCount is a free data retrieval call binding the contract method 0x19e44e32. @@ -8639,8 +8910,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) WithdrawalRequestMap(opts Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSig.contract.Call(opts, &out, "withdrawalRequestMap", arg0) @@ -8650,12 +8920,17 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCaller) WithdrawalRequestMap(opts WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // WithdrawalRequestMap is a free data retrieval call binding the contract method 0x284fbedc. @@ -8666,8 +8941,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigSession) WithdrawalRequestMap(arg Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.WithdrawalRequestMap(&_CnStakingV3MultiSig.CallOpts, arg0) } @@ -8679,8 +8953,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigCallerSession) WithdrawalRequestM Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSig.Contract.WithdrawalRequestMap(&_CnStakingV3MultiSig.CallOpts, arg0) } @@ -9559,6 +9832,7 @@ type CnStakingV3MultiSigAcceptRewardAddress struct { // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterAcceptRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3MultiSigAcceptRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -9575,6 +9849,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterAcceptRewardAddre // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchAcceptRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigAcceptRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -9620,6 +9895,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseAcceptRewardAddres if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "AcceptRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9700,6 +9976,7 @@ type CnStakingV3MultiSigAddAdmin struct { // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterAddAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingV3MultiSigAddAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -9716,6 +9993,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterAddAdmin(opts *bi // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchAddAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigAddAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -9761,6 +10039,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseAddAdmin(log types if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "AddAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9844,6 +10123,7 @@ type CnStakingV3MultiSigApproveStakingWithdrawal struct { // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterApproveStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3MultiSigApproveStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -9864,6 +10144,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterApproveStakingWit // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchApproveStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigApproveStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -9913,6 +10194,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseApproveStakingWith if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ApproveStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9995,6 +10277,7 @@ type CnStakingV3MultiSigCancelApprovedStakingWithdrawal struct { // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCancelApprovedStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3MultiSigCancelApprovedStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -10015,6 +10298,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCancelApprovedSta // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchCancelApprovedStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigCancelApprovedStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -10064,6 +10348,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseCancelApprovedStak if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "CancelApprovedStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10149,6 +10434,7 @@ type CnStakingV3MultiSigCancelRequest struct { // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCancelRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigCancelRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -10169,6 +10455,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCancelRequest(opt // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchCancelRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigCancelRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -10218,6 +10505,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseCancelRequest(log if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "CancelRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10297,6 +10585,7 @@ type CnStakingV3MultiSigClearRequest struct { // // Solidity: event ClearRequest() func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterClearRequest(opts *bind.FilterOpts) (*CnStakingV3MultiSigClearRequestIterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -10308,6 +10597,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterClearRequest(opts // // Solidity: event ClearRequest() func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchClearRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigClearRequest) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -10348,6 +10638,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseClearRequest(log t if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ClearRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10427,6 +10718,7 @@ type CnStakingV3MultiSigCompleteReviewInitialConditions struct { // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCompleteReviewInitialConditions(opts *bind.FilterOpts) (*CnStakingV3MultiSigCompleteReviewInitialConditionsIterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -10438,6 +10730,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterCompleteReviewIni // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchCompleteReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigCompleteReviewInitialConditions) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -10478,6 +10771,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseCompleteReviewInit if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "CompleteReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10564,6 +10858,7 @@ type CnStakingV3MultiSigConfirmRequest struct { // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterConfirmRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigConfirmRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -10584,6 +10879,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterConfirmRequest(op // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchConfirmRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigConfirmRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -10633,6 +10929,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseConfirmRequest(log if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ConfirmRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10714,6 +11011,7 @@ type CnStakingV3MultiSigDelegateKaia struct { // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDelegateKaia(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3MultiSigDelegateKaiaIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -10730,6 +11028,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDelegateKaia(opts // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchDelegateKaia(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigDelegateKaia, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -10775,6 +11074,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseDelegateKaia(log t if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "DelegateKaia", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10855,6 +11155,7 @@ type CnStakingV3MultiSigDeleteAdmin struct { // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeleteAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingV3MultiSigDeleteAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -10871,6 +11172,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeleteAdmin(opts // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchDeleteAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigDeleteAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -10916,6 +11218,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseDeleteAdmin(log ty if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "DeleteAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11000,6 +11303,7 @@ type CnStakingV3MultiSigDeployCnStakingV3 struct { // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeployCnStakingV3(opts *bind.FilterOpts) (*CnStakingV3MultiSigDeployCnStakingV3Iterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -11011,6 +11315,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeployCnStakingV3 // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchDeployCnStakingV3(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigDeployCnStakingV3) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -11051,6 +11356,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseDeployCnStakingV3( if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "DeployCnStakingV3", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11134,6 +11440,7 @@ type CnStakingV3MultiSigDeployCnStakingV3MultiSig struct { // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeployCnStakingV3MultiSig(opts *bind.FilterOpts) (*CnStakingV3MultiSigDeployCnStakingV3MultiSigIterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -11145,6 +11452,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDeployCnStakingV3 // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchDeployCnStakingV3MultiSig(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigDeployCnStakingV3MultiSig) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -11185,6 +11493,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseDeployCnStakingV3M if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "DeployCnStakingV3MultiSig", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11266,6 +11575,7 @@ type CnStakingV3MultiSigDepositLockupStakingAndInit struct { // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDepositLockupStakingAndInit(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3MultiSigDepositLockupStakingAndInitIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -11282,6 +11592,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterDepositLockupStak // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchDepositLockupStakingAndInit(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigDepositLockupStakingAndInit, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -11327,6 +11638,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseDepositLockupStaki if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "DepositLockupStakingAndInit", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11412,6 +11724,7 @@ type CnStakingV3MultiSigExecuteRequestFailure struct { // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterExecuteRequestFailure(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigExecuteRequestFailureIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -11432,6 +11745,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterExecuteRequestFai // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchExecuteRequestFailure(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigExecuteRequestFailure, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -11481,6 +11795,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseExecuteRequestFail if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ExecuteRequestFailure", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11566,6 +11881,7 @@ type CnStakingV3MultiSigExecuteRequestSuccess struct { // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterExecuteRequestSuccess(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigExecuteRequestSuccessIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -11586,6 +11902,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterExecuteRequestSuc // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchExecuteRequestSuccess(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigExecuteRequestSuccess, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -11635,6 +11952,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseExecuteRequestSucc if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ExecuteRequestSuccess", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11718,6 +12036,7 @@ type CnStakingV3MultiSigHandleRedelegation struct { // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterHandleRedelegation(opts *bind.FilterOpts, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3MultiSigHandleRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -11742,6 +12061,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterHandleRedelegatio // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchHandleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigHandleRedelegation, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -11795,6 +12115,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseHandleRedelegation if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "HandleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11877,6 +12198,7 @@ type CnStakingV3MultiSigRedelegation struct { // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRedelegation(opts *bind.FilterOpts, user []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3MultiSigRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -11897,6 +12219,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRedelegation(opts // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigRedelegation, user []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -11946,6 +12269,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseRedelegation(log t if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "Redelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12026,6 +12350,7 @@ type CnStakingV3MultiSigReviewInitialConditions struct { // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterReviewInitialConditions(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3MultiSigReviewInitialConditionsIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -12042,6 +12367,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterReviewInitialCond // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigReviewInitialConditions, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -12087,6 +12413,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseReviewInitialCondi if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12173,6 +12500,7 @@ type CnStakingV3MultiSigRevokeConfirmation struct { // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRevokeConfirmation(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigRevokeConfirmationIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -12193,6 +12521,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRevokeConfirmatio // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchRevokeConfirmation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigRevokeConfirmation, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -12242,6 +12571,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseRevokeConfirmation if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "RevokeConfirmation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12324,6 +12654,7 @@ type CnStakingV3MultiSigRoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*CnStakingV3MultiSigRoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12348,6 +12679,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleAdminChanged( // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12401,6 +12733,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseRoleAdminChanged(l if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12483,6 +12816,7 @@ type CnStakingV3MultiSigRoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CnStakingV3MultiSigRoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12507,6 +12841,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleGranted(opts // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12560,6 +12895,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseRoleGranted(log ty if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12642,6 +12978,7 @@ type CnStakingV3MultiSigRoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*CnStakingV3MultiSigRoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12666,6 +13003,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterRoleRevoked(opts // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -12719,6 +13057,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseRoleRevoked(log ty if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12801,6 +13140,7 @@ type CnStakingV3MultiSigSetPublicDelegation struct { // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterSetPublicDelegation(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3MultiSigSetPublicDelegationIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -12817,6 +13157,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterSetPublicDelegati // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchSetPublicDelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigSetPublicDelegation, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -12862,6 +13203,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseSetPublicDelegatio if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "SetPublicDelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12947,6 +13289,7 @@ type CnStakingV3MultiSigSubmitRequest struct { // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterSubmitRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigSubmitRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -12967,6 +13310,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterSubmitRequest(opt // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchSubmitRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigSubmitRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -13016,6 +13360,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseSubmitRequest(log if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "SubmitRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13096,6 +13441,7 @@ type CnStakingV3MultiSigToggleRedelegation struct { // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterToggleRedelegation(opts *bind.FilterOpts) (*CnStakingV3MultiSigToggleRedelegationIterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -13107,6 +13453,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterToggleRedelegatio // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchToggleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigToggleRedelegation) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -13147,6 +13494,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseToggleRedelegation if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "ToggleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13227,6 +13575,7 @@ type CnStakingV3MultiSigUpdateGCId struct { // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateGCId(opts *bind.FilterOpts, gcId []*big.Int) (*CnStakingV3MultiSigUpdateGCIdIterator, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -13243,6 +13592,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateGCId(opts * // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchUpdateGCId(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigUpdateGCId, gcId []*big.Int) (event.Subscription, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -13288,6 +13638,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseUpdateGCId(log typ if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "UpdateGCId", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13368,6 +13719,7 @@ type CnStakingV3MultiSigUpdateRequirement struct { // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateRequirement(opts *bind.FilterOpts) (*CnStakingV3MultiSigUpdateRequirementIterator, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.FilterLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -13379,6 +13731,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateRequirement // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchUpdateRequirement(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigUpdateRequirement) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSig.contract.WatchLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -13419,6 +13772,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseUpdateRequirement( if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "UpdateRequirement", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13499,6 +13853,7 @@ type CnStakingV3MultiSigUpdateRewardAddress struct { // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3MultiSigUpdateRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -13515,6 +13870,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateRewardAddre // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchUpdateRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigUpdateRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -13560,6 +13916,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseUpdateRewardAddres if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "UpdateRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13640,6 +13997,7 @@ type CnStakingV3MultiSigUpdateStakingTracker struct { // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateStakingTracker(opts *bind.FilterOpts, stakingTracker []common.Address) (*CnStakingV3MultiSigUpdateStakingTrackerIterator, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -13656,6 +14014,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateStakingTrac // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchUpdateStakingTracker(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigUpdateStakingTracker, stakingTracker []common.Address) (event.Subscription, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -13701,6 +14060,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseUpdateStakingTrack if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "UpdateStakingTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13781,6 +14141,7 @@ type CnStakingV3MultiSigUpdateVoterAddress struct { // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateVoterAddress(opts *bind.FilterOpts, voterAddress []common.Address) (*CnStakingV3MultiSigUpdateVoterAddressIterator, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -13797,6 +14158,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterUpdateVoterAddres // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchUpdateVoterAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigUpdateVoterAddress, voterAddress []common.Address) (event.Subscription, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -13842,6 +14204,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseUpdateVoterAddress if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "UpdateVoterAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13924,6 +14287,7 @@ type CnStakingV3MultiSigWithdrawApprovedStaking struct { // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterWithdrawApprovedStaking(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3MultiSigWithdrawApprovedStakingIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -13944,6 +14308,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterWithdrawApprovedS // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchWithdrawApprovedStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigWithdrawApprovedStaking, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -13993,6 +14358,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseWithdrawApprovedSt if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "WithdrawApprovedStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14074,6 +14440,7 @@ type CnStakingV3MultiSigWithdrawLockupStaking struct { // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterWithdrawLockupStaking(opts *bind.FilterOpts, to []common.Address) (*CnStakingV3MultiSigWithdrawLockupStakingIterator, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -14090,6 +14457,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) FilterWithdrawLockupSta // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) WatchWithdrawLockupStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigWithdrawLockupStaking, to []common.Address) (event.Subscription, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -14135,6 +14503,7 @@ func (_CnStakingV3MultiSig *CnStakingV3MultiSigFilterer) ParseWithdrawLockupStak if err := _CnStakingV3MultiSig.contract.UnpackLog(event, "WithdrawLockupStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14181,8 +14550,8 @@ var CnStakingV3MultiSigStorageABI = CnStakingV3MultiSigStorageMetaData.ABI // CnStakingV3MultiSigStorageBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingV3MultiSigStorageBinRuntime = `` -// CnStakingV3MultiSigStorageFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingV3MultiSigStorageMetaData.Sigs instead. +// CnStakingV3MultiSigStorageFuncSigs maps the 4-byte function signature to its string representation. var CnStakingV3MultiSigStorageFuncSigs = CnStakingV3MultiSigStorageMetaData.Sigs // CnStakingV3MultiSigStorage is an auto generated Go binding around a Kaia contract. @@ -14333,6 +14702,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageTransactorRaw) Tran func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -14340,6 +14710,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) MAXADMIN(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -14362,6 +14733,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) MAXA func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) AdminList(opts *bind.CallOpts, _pos *big.Int) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "adminList", _pos) + if err != nil { return *new(common.Address), err } @@ -14369,6 +14741,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) AdminList(o out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AdminList is a free data retrieval call binding the contract method 0x11117fc8. @@ -14391,6 +14764,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) Admi func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) ContractValidator(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "contractValidator") + if err != nil { return *new(common.Address), err } @@ -14398,6 +14772,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) ContractVal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ContractValidator is a free data retrieval call binding the contract method 0x7a5db068. @@ -14420,6 +14795,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) Cont func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "getRequestIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -14427,6 +14803,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestI out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetRequestIds is a free data retrieval call binding the contract method 0x0fd440ec. @@ -14454,8 +14831,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestI Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "getRequestInfo", _id) @@ -14468,6 +14844,9 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestI Confirmers []common.Address State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -14476,7 +14855,9 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestI outstruct.Proposer = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) outstruct.Confirmers = *abi.ConvertType(out[5], new([]common.Address)).(*[]common.Address) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x0b816045. @@ -14490,8 +14871,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageSession) GetRequest Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSigStorage.Contract.GetRequestInfo(&_CnStakingV3MultiSigStorage.CallOpts, _id) } @@ -14506,8 +14886,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) GetR Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _CnStakingV3MultiSigStorage.Contract.GetRequestInfo(&_CnStakingV3MultiSigStorage.CallOpts, _id) } @@ -14517,6 +14896,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) GetR func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestState(opts *bind.CallOpts, _id *big.Int) (uint8, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "getRequestState", _id) + if err != nil { return *new(uint8), err } @@ -14524,6 +14904,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetRequestS out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetRequestState is a free data retrieval call binding the contract method 0xed979dd6. @@ -14546,6 +14927,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) GetR func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetReviewers(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "getReviewers") + if err != nil { return *new([]common.Address), err } @@ -14553,6 +14935,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetReviewer out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetReviewers is a free data retrieval call binding the contract method 0x75a87643. @@ -14582,8 +14965,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetState(op UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "getState") @@ -14598,6 +14980,9 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetState(op AllReviewed bool IsInitialized bool }) + if err != nil { + return *outstruct, err + } outstruct.ContractValidator = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.NodeId = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) @@ -14608,7 +14993,9 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) GetState(op outstruct.UnlockAmount = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) outstruct.AllReviewed = *abi.ConvertType(out[7], new(bool)).(*bool) outstruct.IsInitialized = *abi.ConvertType(out[8], new(bool)).(*bool) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -14624,8 +15011,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageSession) GetState() UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _CnStakingV3MultiSigStorage.Contract.GetState(&_CnStakingV3MultiSigStorage.CallOpts) } @@ -14642,8 +15028,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) GetS UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _CnStakingV3MultiSigStorage.Contract.GetState(&_CnStakingV3MultiSigStorage.CallOpts) } @@ -14653,6 +15038,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) GetS func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) IsAdmin(opts *bind.CallOpts, _admin common.Address) (bool, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "isAdmin", _admin) + if err != nil { return *new(bool), err } @@ -14660,6 +15046,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) IsAdmin(opt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsAdmin is a free data retrieval call binding the contract method 0x24d7806c. @@ -14682,6 +15069,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) IsAd func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) LastClearedId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "lastClearedId") + if err != nil { return *new(*big.Int), err } @@ -14689,6 +15077,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) LastCleared out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastClearedId is a free data retrieval call binding the contract method 0xe7abb98d. @@ -14711,6 +15100,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) Last func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) RequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "requestCount") + if err != nil { return *new(*big.Int), err } @@ -14718,6 +15108,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) RequestCoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RequestCount is a free data retrieval call binding the contract method 0x5badbe4c. @@ -14740,6 +15131,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCallerSession) Requ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3MultiSigStorage.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -14747,6 +15139,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageCaller) Requirement out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -15197,6 +15590,7 @@ type CnStakingV3MultiSigStorageAddAdmin struct { // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterAddAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingV3MultiSigStorageAddAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -15213,6 +15607,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterAdd // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchAddAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageAddAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -15258,6 +15653,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseAddA if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "AddAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15343,6 +15739,7 @@ type CnStakingV3MultiSigStorageCancelRequest struct { // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterCancelRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageCancelRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -15363,6 +15760,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterCan // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchCancelRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageCancelRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -15412,6 +15810,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseCanc if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "CancelRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15491,6 +15890,7 @@ type CnStakingV3MultiSigStorageClearRequest struct { // // Solidity: event ClearRequest() func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterClearRequest(opts *bind.FilterOpts) (*CnStakingV3MultiSigStorageClearRequestIterator, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.FilterLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -15502,6 +15902,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterCle // // Solidity: event ClearRequest() func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchClearRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageClearRequest) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.WatchLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -15542,6 +15943,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseClea if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "ClearRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15628,6 +16030,7 @@ type CnStakingV3MultiSigStorageConfirmRequest struct { // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterConfirmRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageConfirmRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -15648,6 +16051,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterCon // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchConfirmRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageConfirmRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -15697,6 +16101,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseConf if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "ConfirmRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15777,6 +16182,7 @@ type CnStakingV3MultiSigStorageDeleteAdmin struct { // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterDeleteAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingV3MultiSigStorageDeleteAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -15793,6 +16199,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterDel // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchDeleteAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageDeleteAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -15838,6 +16245,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseDele if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "DeleteAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15921,6 +16329,7 @@ type CnStakingV3MultiSigStorageDeployCnStakingV3MultiSig struct { // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterDeployCnStakingV3MultiSig(opts *bind.FilterOpts) (*CnStakingV3MultiSigStorageDeployCnStakingV3MultiSigIterator, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.FilterLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -15932,6 +16341,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterDep // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchDeployCnStakingV3MultiSig(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageDeployCnStakingV3MultiSig) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.WatchLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -15972,6 +16382,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseDepl if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "DeployCnStakingV3MultiSig", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16057,6 +16468,7 @@ type CnStakingV3MultiSigStorageExecuteRequestFailure struct { // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterExecuteRequestFailure(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageExecuteRequestFailureIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16077,6 +16489,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterExe // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchExecuteRequestFailure(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageExecuteRequestFailure, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16126,6 +16539,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseExec if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "ExecuteRequestFailure", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16211,6 +16625,7 @@ type CnStakingV3MultiSigStorageExecuteRequestSuccess struct { // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterExecuteRequestSuccess(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageExecuteRequestSuccessIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16231,6 +16646,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterExe // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchExecuteRequestSuccess(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageExecuteRequestSuccess, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16280,6 +16696,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseExec if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "ExecuteRequestSuccess", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16366,6 +16783,7 @@ type CnStakingV3MultiSigStorageRevokeConfirmation struct { // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterRevokeConfirmation(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageRevokeConfirmationIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16386,6 +16804,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterRev // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchRevokeConfirmation(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageRevokeConfirmation, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16435,6 +16854,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseRevo if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "RevokeConfirmation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16520,6 +16940,7 @@ type CnStakingV3MultiSigStorageSubmitRequest struct { // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterSubmitRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingV3MultiSigStorageSubmitRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16540,6 +16961,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterSub // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchSubmitRequest(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageSubmitRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -16589,6 +17011,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseSubm if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "SubmitRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16669,6 +17092,7 @@ type CnStakingV3MultiSigStorageUpdateRequirement struct { // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterUpdateRequirement(opts *bind.FilterOpts) (*CnStakingV3MultiSigStorageUpdateRequirementIterator, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.FilterLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -16680,6 +17104,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) FilterUpd // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) WatchUpdateRequirement(opts *bind.WatchOpts, sink chan<- *CnStakingV3MultiSigStorageUpdateRequirement) (event.Subscription, error) { + logs, sub, err := _CnStakingV3MultiSigStorage.contract.WatchLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -16720,6 +17145,7 @@ func (_CnStakingV3MultiSigStorage *CnStakingV3MultiSigStorageFilterer) ParseUpda if err := _CnStakingV3MultiSigStorage.contract.UnpackLog(event, "UpdateRequirement", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16785,8 +17211,8 @@ var CnStakingV3StorageABI = CnStakingV3StorageMetaData.ABI // CnStakingV3StorageBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingV3StorageBinRuntime = `` -// CnStakingV3StorageFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingV3StorageMetaData.Sigs instead. +// CnStakingV3StorageFuncSigs maps the 4-byte function signature to its string representation. var CnStakingV3StorageFuncSigs = CnStakingV3StorageMetaData.Sigs // CnStakingV3Storage is an auto generated Go binding around a Kaia contract. @@ -16937,6 +17363,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageTransactorRaw) Transact(opts *bind. func (_CnStakingV3Storage *CnStakingV3StorageCaller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -16944,6 +17371,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) ADDRESSBOOKADDRESS(opts *bi out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -16966,6 +17394,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) ADDRESSBOOKADDRESS() func (_CnStakingV3Storage *CnStakingV3StorageCaller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -16973,6 +17402,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) ADMINROLE(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. @@ -16995,6 +17425,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) ADMINROLE() ([32]byt func (_CnStakingV3Storage *CnStakingV3StorageCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -17002,6 +17433,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) CONTRACTTYPE(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -17024,6 +17456,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) CONTRACTTYPE() (stri func (_CnStakingV3Storage *CnStakingV3StorageCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -17031,6 +17464,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) ONEWEEK(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -17053,6 +17487,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) ONEWEEK() (*big.Int, func (_CnStakingV3Storage *CnStakingV3StorageCaller) OPERATORROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "OPERATOR_ROLE") + if err != nil { return *new([32]byte), err } @@ -17060,6 +17495,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) OPERATORROLE(opts *bind.Cal out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // OPERATORROLE is a free data retrieval call binding the contract method 0xf5b541a6. @@ -17082,6 +17518,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) OPERATORROLE() ([32] func (_CnStakingV3Storage *CnStakingV3StorageCaller) STAKERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "STAKER_ROLE") + if err != nil { return *new([32]byte), err } @@ -17089,6 +17526,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) STAKERROLE(opts *bind.CallO out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // STAKERROLE is a free data retrieval call binding the contract method 0x3780b3ed. @@ -17111,6 +17549,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) STAKERROLE() ([32]by func (_CnStakingV3Storage *CnStakingV3StorageCaller) STAKELOCKUP(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "STAKE_LOCKUP") + if err != nil { return *new(*big.Int), err } @@ -17118,6 +17557,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) STAKELOCKUP(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // STAKELOCKUP is a free data retrieval call binding the contract method 0x96106ae4. @@ -17140,6 +17580,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) STAKELOCKUP() (*big. func (_CnStakingV3Storage *CnStakingV3StorageCaller) UNSTAKINGAPPROVERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "UNSTAKING_APPROVER_ROLE") + if err != nil { return *new([32]byte), err } @@ -17147,6 +17588,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) UNSTAKINGAPPROVERROLE(opts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGAPPROVERROLE is a free data retrieval call binding the contract method 0x0c07d842. @@ -17169,6 +17611,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) UNSTAKINGAPPROVERROL func (_CnStakingV3Storage *CnStakingV3StorageCaller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "UNSTAKING_CLAIMER_ROLE") + if err != nil { return *new([32]byte), err } @@ -17176,6 +17619,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) UNSTAKINGCLAIMERROLE(opts * out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGCLAIMERROLE is a free data retrieval call binding the contract method 0x9c394c5d. @@ -17198,6 +17642,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) UNSTAKINGCLAIMERROLE func (_CnStakingV3Storage *CnStakingV3StorageCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -17205,6 +17650,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) VERSION(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -17227,6 +17673,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) VERSION() (*big.Int, func (_CnStakingV3Storage *CnStakingV3StorageCaller) GcId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "gcId") + if err != nil { return *new(*big.Int), err } @@ -17234,6 +17681,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GcId(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GcId is a free data retrieval call binding the contract method 0x6d2714db. @@ -17256,6 +17704,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) GcId() (*big.Int, er func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetApprovedStakingWithdrawalIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "getApprovedStakingWithdrawalIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -17263,6 +17712,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetApprovedStakingWithdrawa out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetApprovedStakingWithdrawalIds is a free data retrieval call binding the contract method 0xd2569eb9. @@ -17287,8 +17737,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetApprovedStakingWithdrawa Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "getApprovedStakingWithdrawalInfo", _index) @@ -17298,12 +17747,17 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetApprovedStakingWithdrawa WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetApprovedStakingWithdrawalInfo is a free data retrieval call binding the contract method 0x725c0503. @@ -17314,8 +17768,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageSession) GetApprovedStakingWithdraw Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3Storage.CallOpts, _index) } @@ -17327,8 +17780,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) GetApprovedStakingWi Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.GetApprovedStakingWithdrawalInfo(&_CnStakingV3Storage.CallOpts, _index) } @@ -17341,8 +17793,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetLockupStakingInfo(opts * Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "getLockupStakingInfo") @@ -17353,13 +17804,18 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) GetLockupStakingInfo(opts * Remaining *big.Int Withdrawable *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.UnlockTime = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) outstruct.UnlockAmount = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) outstruct.Initial = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.Remaining = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) outstruct.Withdrawable = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetLockupStakingInfo is a free data retrieval call binding the contract method 0x5ecd75f2. @@ -17371,8 +17827,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageSession) GetLockupStakingInfo() (st Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.GetLockupStakingInfo(&_CnStakingV3Storage.CallOpts) } @@ -17385,8 +17840,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) GetLockupStakingInfo Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.GetLockupStakingInfo(&_CnStakingV3Storage.CallOpts) } @@ -17396,6 +17850,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) GetLockupStakingInfo func (_CnStakingV3Storage *CnStakingV3StorageCaller) InitialLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "initialLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -17403,6 +17858,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) InitialLockupStaking(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // InitialLockupStaking is a free data retrieval call binding the contract method 0x06704222. @@ -17425,6 +17881,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) InitialLockupStaking func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -17432,6 +17889,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsInitialized(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -17454,6 +17912,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) IsInitialized() (boo func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsPublicDelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "isPublicDelegationEnabled") + if err != nil { return *new(bool), err } @@ -17461,6 +17920,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsPublicDelegationEnabled(o out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsPublicDelegationEnabled is a free data retrieval call binding the contract method 0xbfc7e948. @@ -17483,6 +17943,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) IsPublicDelegationEn func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsRedelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "isRedelegationEnabled") + if err != nil { return *new(bool), err } @@ -17490,6 +17951,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) IsRedelegationEnabled(opts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsRedelegationEnabled is a free data retrieval call binding the contract method 0x7a66c96b. @@ -17512,6 +17974,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) IsRedelegationEnable func (_CnStakingV3Storage *CnStakingV3StorageCaller) LastRedelegation(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "lastRedelegation", arg0) + if err != nil { return *new(*big.Int), err } @@ -17519,6 +17982,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) LastRedelegation(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastRedelegation is a free data retrieval call binding the contract method 0x14d3ce10. @@ -17541,8 +18005,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) LastRedelegation(arg func (_CnStakingV3Storage *CnStakingV3StorageCaller) LockupConditions(opts *bind.CallOpts) (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "lockupConditions") @@ -17550,10 +18013,15 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) LockupConditions(opts *bind AllReviewed bool ReviewedCount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AllReviewed = *abi.ConvertType(out[0], new(bool)).(*bool) outstruct.ReviewedCount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // LockupConditions is a free data retrieval call binding the contract method 0x2429f8a9. @@ -17562,8 +18030,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) LockupConditions(opts *bind func (_CnStakingV3Storage *CnStakingV3StorageSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.LockupConditions(&_CnStakingV3Storage.CallOpts) } @@ -17573,8 +18040,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageSession) LockupConditions() (struct func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.LockupConditions(&_CnStakingV3Storage.CallOpts) } @@ -17584,6 +18050,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) LockupConditions() ( func (_CnStakingV3Storage *CnStakingV3StorageCaller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -17591,6 +18058,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) NodeId(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -17613,6 +18081,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) NodeId() (common.Add func (_CnStakingV3Storage *CnStakingV3StorageCaller) PendingRewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "pendingRewardAddress") + if err != nil { return *new(common.Address), err } @@ -17620,6 +18089,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) PendingRewardAddress(opts * out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PendingRewardAddress is a free data retrieval call binding the contract method 0x8740568b. @@ -17642,6 +18112,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) PendingRewardAddress func (_CnStakingV3Storage *CnStakingV3StorageCaller) PublicDelegation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "publicDelegation") + if err != nil { return *new(common.Address), err } @@ -17649,6 +18120,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) PublicDelegation(opts *bind out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PublicDelegation is a free data retrieval call binding the contract method 0xe1a12d35. @@ -17671,6 +18143,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) PublicDelegation() ( func (_CnStakingV3Storage *CnStakingV3StorageCaller) RemainingLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "remainingLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -17678,6 +18151,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) RemainingLockupStaking(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RemainingLockupStaking is a free data retrieval call binding the contract method 0x7b5e0481. @@ -17700,6 +18174,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) RemainingLockupStaki func (_CnStakingV3Storage *CnStakingV3StorageCaller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -17707,6 +18182,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) RewardAddress(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -17729,6 +18205,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) RewardAddress() (com func (_CnStakingV3Storage *CnStakingV3StorageCaller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -17736,6 +18213,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) Staking(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -17758,6 +18236,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) Staking() (*big.Int, func (_CnStakingV3Storage *CnStakingV3StorageCaller) StakingTracker(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "stakingTracker") + if err != nil { return *new(common.Address), err } @@ -17765,6 +18244,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) StakingTracker(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // StakingTracker is a free data retrieval call binding the contract method 0x008c477a. @@ -17787,6 +18267,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) StakingTracker() (co func (_CnStakingV3Storage *CnStakingV3StorageCaller) Unstaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "unstaking") + if err != nil { return *new(*big.Int), err } @@ -17794,6 +18275,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) Unstaking(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Unstaking is a free data retrieval call binding the contract method 0x630b1146. @@ -17816,6 +18298,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) Unstaking() (*big.In func (_CnStakingV3Storage *CnStakingV3StorageCaller) VoterAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "voterAddress") + if err != nil { return *new(common.Address), err } @@ -17823,6 +18306,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) VoterAddress(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // VoterAddress is a free data retrieval call binding the contract method 0x992ac9fa. @@ -17845,6 +18329,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) VoterAddress() (comm func (_CnStakingV3Storage *CnStakingV3StorageCaller) WithdrawalRequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "withdrawalRequestCount") + if err != nil { return *new(*big.Int), err } @@ -17852,6 +18337,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) WithdrawalRequestCount(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // WithdrawalRequestCount is a free data retrieval call binding the contract method 0x19e44e32. @@ -17876,8 +18362,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) WithdrawalRequestMap(opts * Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _CnStakingV3Storage.contract.Call(opts, &out, "withdrawalRequestMap", arg0) @@ -17887,12 +18372,17 @@ func (_CnStakingV3Storage *CnStakingV3StorageCaller) WithdrawalRequestMap(opts * WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // WithdrawalRequestMap is a free data retrieval call binding the contract method 0x284fbedc. @@ -17903,8 +18393,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageSession) WithdrawalRequestMap(arg0 Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.WithdrawalRequestMap(&_CnStakingV3Storage.CallOpts, arg0) } @@ -17916,8 +18405,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageCallerSession) WithdrawalRequestMap Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _CnStakingV3Storage.Contract.WithdrawalRequestMap(&_CnStakingV3Storage.CallOpts, arg0) } @@ -18376,6 +18864,7 @@ type CnStakingV3StorageAcceptRewardAddress struct { // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterAcceptRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3StorageAcceptRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -18392,6 +18881,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterAcceptRewardAddress // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchAcceptRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageAcceptRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -18437,6 +18927,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseAcceptRewardAddress( if err := _CnStakingV3Storage.contract.UnpackLog(event, "AcceptRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18520,6 +19011,7 @@ type CnStakingV3StorageApproveStakingWithdrawal struct { // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterApproveStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3StorageApproveStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -18540,6 +19032,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterApproveStakingWithd // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchApproveStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageApproveStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -18589,6 +19082,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseApproveStakingWithdr if err := _CnStakingV3Storage.contract.UnpackLog(event, "ApproveStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18671,6 +19165,7 @@ type CnStakingV3StorageCancelApprovedStakingWithdrawal struct { // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterCancelApprovedStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3StorageCancelApprovedStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -18691,6 +19186,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterCancelApprovedStaki // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchCancelApprovedStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageCancelApprovedStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -18740,6 +19236,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseCancelApprovedStakin if err := _CnStakingV3Storage.contract.UnpackLog(event, "CancelApprovedStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18819,6 +19316,7 @@ type CnStakingV3StorageCompleteReviewInitialConditions struct { // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterCompleteReviewInitialConditions(opts *bind.FilterOpts) (*CnStakingV3StorageCompleteReviewInitialConditionsIterator, error) { + logs, sub, err := _CnStakingV3Storage.contract.FilterLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -18830,6 +19328,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterCompleteReviewIniti // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchCompleteReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageCompleteReviewInitialConditions) (event.Subscription, error) { + logs, sub, err := _CnStakingV3Storage.contract.WatchLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -18870,6 +19369,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseCompleteReviewInitia if err := _CnStakingV3Storage.contract.UnpackLog(event, "CompleteReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18951,6 +19451,7 @@ type CnStakingV3StorageDelegateKaia struct { // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDelegateKaia(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3StorageDelegateKaiaIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -18967,6 +19468,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDelegateKaia(opts * // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchDelegateKaia(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageDelegateKaia, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19012,6 +19514,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseDelegateKaia(log typ if err := _CnStakingV3Storage.contract.UnpackLog(event, "DelegateKaia", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19096,6 +19599,7 @@ type CnStakingV3StorageDeployCnStakingV3 struct { // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDeployCnStakingV3(opts *bind.FilterOpts) (*CnStakingV3StorageDeployCnStakingV3Iterator, error) { + logs, sub, err := _CnStakingV3Storage.contract.FilterLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -19107,6 +19611,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDeployCnStakingV3(o // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchDeployCnStakingV3(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageDeployCnStakingV3) (event.Subscription, error) { + logs, sub, err := _CnStakingV3Storage.contract.WatchLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -19147,6 +19652,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseDeployCnStakingV3(lo if err := _CnStakingV3Storage.contract.UnpackLog(event, "DeployCnStakingV3", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19228,6 +19734,7 @@ type CnStakingV3StorageDepositLockupStakingAndInit struct { // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDepositLockupStakingAndInit(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3StorageDepositLockupStakingAndInitIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19244,6 +19751,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterDepositLockupStakin // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchDepositLockupStakingAndInit(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageDepositLockupStakingAndInit, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19289,6 +19797,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseDepositLockupStaking if err := _CnStakingV3Storage.contract.UnpackLog(event, "DepositLockupStakingAndInit", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19372,6 +19881,7 @@ type CnStakingV3StorageHandleRedelegation struct { // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterHandleRedelegation(opts *bind.FilterOpts, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3StorageHandleRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -19396,6 +19906,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterHandleRedelegation( // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchHandleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageHandleRedelegation, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -19449,6 +19960,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseHandleRedelegation(l if err := _CnStakingV3Storage.contract.UnpackLog(event, "HandleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19531,6 +20043,7 @@ type CnStakingV3StorageRedelegation struct { // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterRedelegation(opts *bind.FilterOpts, user []common.Address, targetCnStakingV3 []common.Address) (*CnStakingV3StorageRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -19551,6 +20064,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterRedelegation(opts * // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageRedelegation, user []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -19600,6 +20114,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseRedelegation(log typ if err := _CnStakingV3Storage.contract.UnpackLog(event, "Redelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19680,6 +20195,7 @@ type CnStakingV3StorageReviewInitialConditions struct { // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterReviewInitialConditions(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3StorageReviewInitialConditionsIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19696,6 +20212,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterReviewInitialCondit // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageReviewInitialConditions, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19741,6 +20258,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseReviewInitialConditi if err := _CnStakingV3Storage.contract.UnpackLog(event, "ReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19823,6 +20341,7 @@ type CnStakingV3StorageSetPublicDelegation struct { // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterSetPublicDelegation(opts *bind.FilterOpts, from []common.Address) (*CnStakingV3StorageSetPublicDelegationIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19839,6 +20358,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterSetPublicDelegation // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchSetPublicDelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageSetPublicDelegation, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -19884,6 +20404,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseSetPublicDelegation( if err := _CnStakingV3Storage.contract.UnpackLog(event, "SetPublicDelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19964,6 +20485,7 @@ type CnStakingV3StorageToggleRedelegation struct { // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterToggleRedelegation(opts *bind.FilterOpts) (*CnStakingV3StorageToggleRedelegationIterator, error) { + logs, sub, err := _CnStakingV3Storage.contract.FilterLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -19975,6 +20497,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterToggleRedelegation( // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchToggleRedelegation(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageToggleRedelegation) (event.Subscription, error) { + logs, sub, err := _CnStakingV3Storage.contract.WatchLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -20015,6 +20538,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseToggleRedelegation(l if err := _CnStakingV3Storage.contract.UnpackLog(event, "ToggleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20095,6 +20619,7 @@ type CnStakingV3StorageUpdateGCId struct { // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateGCId(opts *bind.FilterOpts, gcId []*big.Int) (*CnStakingV3StorageUpdateGCIdIterator, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -20111,6 +20636,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateGCId(opts *bi // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchUpdateGCId(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageUpdateGCId, gcId []*big.Int) (event.Subscription, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -20156,6 +20682,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseUpdateGCId(log types if err := _CnStakingV3Storage.contract.UnpackLog(event, "UpdateGCId", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20236,6 +20763,7 @@ type CnStakingV3StorageUpdateRewardAddress struct { // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*CnStakingV3StorageUpdateRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -20252,6 +20780,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateRewardAddress // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchUpdateRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageUpdateRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -20297,6 +20826,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseUpdateRewardAddress( if err := _CnStakingV3Storage.contract.UnpackLog(event, "UpdateRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20377,6 +20907,7 @@ type CnStakingV3StorageUpdateStakingTracker struct { // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateStakingTracker(opts *bind.FilterOpts, stakingTracker []common.Address) (*CnStakingV3StorageUpdateStakingTrackerIterator, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -20393,6 +20924,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateStakingTracke // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchUpdateStakingTracker(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageUpdateStakingTracker, stakingTracker []common.Address) (event.Subscription, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -20438,6 +20970,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseUpdateStakingTracker if err := _CnStakingV3Storage.contract.UnpackLog(event, "UpdateStakingTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20518,6 +21051,7 @@ type CnStakingV3StorageUpdateVoterAddress struct { // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateVoterAddress(opts *bind.FilterOpts, voterAddress []common.Address) (*CnStakingV3StorageUpdateVoterAddressIterator, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -20534,6 +21068,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterUpdateVoterAddress( // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchUpdateVoterAddress(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageUpdateVoterAddress, voterAddress []common.Address) (event.Subscription, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -20579,6 +21114,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseUpdateVoterAddress(l if err := _CnStakingV3Storage.contract.UnpackLog(event, "UpdateVoterAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20661,6 +21197,7 @@ type CnStakingV3StorageWithdrawApprovedStaking struct { // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterWithdrawApprovedStaking(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*CnStakingV3StorageWithdrawApprovedStakingIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -20681,6 +21218,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterWithdrawApprovedSta // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchWithdrawApprovedStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageWithdrawApprovedStaking, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -20730,6 +21268,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseWithdrawApprovedStak if err := _CnStakingV3Storage.contract.UnpackLog(event, "WithdrawApprovedStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20811,6 +21350,7 @@ type CnStakingV3StorageWithdrawLockupStaking struct { // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterWithdrawLockupStaking(opts *bind.FilterOpts, to []common.Address) (*CnStakingV3StorageWithdrawLockupStakingIterator, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -20827,6 +21367,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) FilterWithdrawLockupStaki // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingV3Storage *CnStakingV3StorageFilterer) WatchWithdrawLockupStaking(opts *bind.WatchOpts, sink chan<- *CnStakingV3StorageWithdrawLockupStaking, to []common.Address) (event.Subscription, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -20872,6 +21413,7 @@ func (_CnStakingV3Storage *CnStakingV3StorageFilterer) ParseWithdrawLockupStakin if err := _CnStakingV3Storage.contract.UnpackLog(event, "WithdrawLockupStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21044,8 +21586,8 @@ var ERC165ABI = ERC165MetaData.ABI // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC165BinRuntime = `` -// ERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC165MetaData.Sigs instead. +// ERC165FuncSigs maps the 4-byte function signature to its string representation. var ERC165FuncSigs = ERC165MetaData.Sigs // ERC165 is an auto generated Go binding around a Kaia contract. @@ -21196,6 +21738,7 @@ func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -21203,6 +21746,7 @@ func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -21242,8 +21786,8 @@ var ERC20ABI = ERC20MetaData.ABI // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC20BinRuntime = `` -// ERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20MetaData.Sigs instead. +// ERC20FuncSigs maps the 4-byte function signature to its string representation. var ERC20FuncSigs = ERC20MetaData.Sigs // ERC20 is an auto generated Go binding around a Kaia contract. @@ -21394,6 +21938,7 @@ func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method strin func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -21401,6 +21946,7 @@ func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -21423,6 +21969,7 @@ func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -21430,6 +21977,7 @@ func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -21452,6 +22000,7 @@ func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, e func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "decimals") + if err != nil { return *new(uint8), err } @@ -21459,6 +22008,7 @@ func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Decimals is a free data retrieval call binding the contract method 0x313ce567. @@ -21481,6 +22031,7 @@ func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -21488,6 +22039,7 @@ func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -21510,6 +22062,7 @@ func (_ERC20 *ERC20CallerSession) Name() (string, error) { func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -21517,6 +22070,7 @@ func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -21539,6 +22093,7 @@ func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -21546,6 +22101,7 @@ func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -21704,6 +22260,7 @@ type ERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21724,6 +22281,7 @@ func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []commo // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21773,6 +22331,7 @@ func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21855,6 +22414,7 @@ type ERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -21875,6 +22435,7 @@ func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -21924,6 +22485,7 @@ func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22122,8 +22684,8 @@ var IAccessControlABI = IAccessControlMetaData.ABI // IAccessControlBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAccessControlBinRuntime = `` -// IAccessControlFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAccessControlMetaData.Sigs instead. +// IAccessControlFuncSigs maps the 4-byte function signature to its string representation. var IAccessControlFuncSigs = IAccessControlMetaData.Sigs // IAccessControl is an auto generated Go binding around a Kaia contract. @@ -22274,6 +22836,7 @@ func (_IAccessControl *IAccessControlTransactorRaw) Transact(opts *bind.Transact func (_IAccessControl *IAccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _IAccessControl.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -22281,6 +22844,7 @@ func (_IAccessControl *IAccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, r out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -22303,6 +22867,7 @@ func (_IAccessControl *IAccessControlCallerSession) GetRoleAdmin(role [32]byte) func (_IAccessControl *IAccessControlCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _IAccessControl.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -22310,6 +22875,7 @@ func (_IAccessControl *IAccessControlCaller) HasRole(opts *bind.CallOpts, role [ out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -22468,6 +23034,7 @@ type IAccessControlRoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_IAccessControl *IAccessControlFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*IAccessControlRoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22492,6 +23059,7 @@ func (_IAccessControl *IAccessControlFilterer) FilterRoleAdminChanged(opts *bind // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_IAccessControl *IAccessControlFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22545,6 +23113,7 @@ func (_IAccessControl *IAccessControlFilterer) ParseRoleAdminChanged(log types.L if err := _IAccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22627,6 +23196,7 @@ type IAccessControlRoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControl *IAccessControlFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlRoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22651,6 +23221,7 @@ func (_IAccessControl *IAccessControlFilterer) FilterRoleGranted(opts *bind.Filt // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControl *IAccessControlFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22704,6 +23275,7 @@ func (_IAccessControl *IAccessControlFilterer) ParseRoleGranted(log types.Log) ( if err := _IAccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22786,6 +23358,7 @@ type IAccessControlRoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControl *IAccessControlFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlRoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22810,6 +23383,7 @@ func (_IAccessControl *IAccessControlFilterer) FilterRoleRevoked(opts *bind.Filt // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControl *IAccessControlFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -22863,6 +23437,7 @@ func (_IAccessControl *IAccessControlFilterer) ParseRoleRevoked(log types.Log) ( if err := _IAccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22887,8 +23462,8 @@ var IAccessControlEnumerableABI = IAccessControlEnumerableMetaData.ABI // IAccessControlEnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAccessControlEnumerableBinRuntime = `` -// IAccessControlEnumerableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAccessControlEnumerableMetaData.Sigs instead. +// IAccessControlEnumerableFuncSigs maps the 4-byte function signature to its string representation. var IAccessControlEnumerableFuncSigs = IAccessControlEnumerableMetaData.Sigs // IAccessControlEnumerable is an auto generated Go binding around a Kaia contract. @@ -23039,6 +23614,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableTransactorRaw) Transact func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} err := _IAccessControlEnumerable.contract.Call(opts, &out, "getRoleAdmin", role) + if err != nil { return *new([32]byte), err } @@ -23046,6 +23622,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleAdmin(op out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. @@ -23068,6 +23645,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCallerSession) GetRoleA func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) { var out []interface{} err := _IAccessControlEnumerable.contract.Call(opts, &out, "getRoleMember", role, index) + if err != nil { return *new(common.Address), err } @@ -23075,6 +23653,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleMember(o out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c. @@ -23097,6 +23676,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCallerSession) GetRoleM func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) { var out []interface{} err := _IAccessControlEnumerable.contract.Call(opts, &out, "getRoleMemberCount", role) + if err != nil { return *new(*big.Int), err } @@ -23104,6 +23684,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) GetRoleMemberCo out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873. @@ -23126,6 +23707,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCallerSession) GetRoleM func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { var out []interface{} err := _IAccessControlEnumerable.contract.Call(opts, &out, "hasRole", role, account) + if err != nil { return *new(bool), err } @@ -23133,6 +23715,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableCaller) HasRole(opts *b out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HasRole is a free data retrieval call binding the contract method 0x91d14854. @@ -23291,6 +23874,7 @@ type IAccessControlEnumerableRoleAdminChanged struct { // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*IAccessControlEnumerableRoleAdminChangedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23315,6 +23899,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleAdm // // Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *IAccessControlEnumerableRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23368,6 +23953,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) ParseRoleAdmi if err := _IAccessControlEnumerable.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23450,6 +24036,7 @@ type IAccessControlEnumerableRoleGranted struct { // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlEnumerableRoleGrantedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23474,6 +24061,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleGra // // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *IAccessControlEnumerableRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23527,6 +24115,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) ParseRoleGran if err := _IAccessControlEnumerable.contract.UnpackLog(event, "RoleGranted", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23609,6 +24198,7 @@ type IAccessControlEnumerableRoleRevoked struct { // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlEnumerableRoleRevokedIterator, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23633,6 +24223,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) FilterRoleRev // // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *IAccessControlEnumerableRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + var roleRule []interface{} for _, roleItem := range role { roleRule = append(roleRule, roleItem) @@ -23686,6 +24277,7 @@ func (_IAccessControlEnumerable *IAccessControlEnumerableFilterer) ParseRoleRevo if err := _IAccessControlEnumerable.contract.UnpackLog(event, "RoleRevoked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23728,8 +24320,8 @@ var IAddressBookABI = IAddressBookMetaData.ABI // IAddressBookBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAddressBookBinRuntime = `` -// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAddressBookMetaData.Sigs instead. +// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. var IAddressBookFuncSigs = IAddressBookMetaData.Sigs // IAddressBook is an auto generated Go binding around a Kaia contract. @@ -23880,8 +24472,7 @@ func (_IAddressBook *IAddressBookTransactorRaw) Transact(opts *bind.TransactOpts func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddress") @@ -23889,10 +24480,15 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str TypeList []uint8 AddressList []common.Address }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + return *outstruct, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -23901,8 +24497,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -23912,8 +24507,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { func (_IAddressBook *IAddressBookCallerSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -23926,8 +24520,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddressInfo") @@ -23938,13 +24531,18 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) PocContractAddress common.Address KirContractAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.CnStakingContractList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.CnRewardAddressList = *abi.ConvertType(out[2], new([]common.Address)).(*[]common.Address) outstruct.PocContractAddress = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) outstruct.KirContractAddress = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -23956,8 +24554,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -23970,8 +24567,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -23982,8 +24578,7 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getCnInfo", _cnNodeId) @@ -23992,11 +24587,16 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnStakingcontract common.Address CnRewardAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeId = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.CnStakingcontract = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.CnRewardAddress = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -24006,8 +24606,7 @@ func (_IAddressBook *IAddressBookSession) GetCnInfo(_cnNodeId common.Address) (s CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -24018,8 +24617,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -24029,6 +24627,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOpts) ([][32]byte, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getPendingRequestList") + if err != nil { return *new([][32]byte), err } @@ -24036,6 +24635,7 @@ func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) return out0, err + } // GetPendingRequestList is a free data retrieval call binding the contract method 0xda34a0bd. @@ -24063,8 +24663,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfo", _id) @@ -24077,6 +24676,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -24085,7 +24687,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id outstruct.Confirmers = *abi.ConvertType(out[4], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x82d67e5a. @@ -24099,8 +24703,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfo(_id [32]byte) (struct { Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -24115,8 +24718,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfo(_id [32]byte) (st Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -24128,8 +24730,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfoByArgs", _functionId, _firstArg, _secondArg, _thirdArg) @@ -24139,12 +24740,17 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.Id = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) outstruct.Confirmers = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfoByArgs is a free data retrieval call binding the contract method 0x407091eb. @@ -24155,8 +24761,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfoByArgs(_functionId uint8 Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -24168,8 +24773,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -24179,8 +24783,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getState") @@ -24188,10 +24791,15 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Requirement = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -24200,8 +24808,7 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { func (_IAddressBook *IAddressBookSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -24211,8 +24818,7 @@ func (_IAddressBook *IAddressBookSession) GetState() (struct { func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -24222,6 +24828,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -24229,6 +24836,7 @@ func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -24251,6 +24859,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsActivated() (bool, error) { func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isConstructed") + if err != nil { return *new(bool), err } @@ -24258,6 +24867,7 @@ func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (boo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsConstructed is a free data retrieval call binding the contract method 0x50a5bb69. @@ -24280,6 +24890,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsConstructed() (bool, error) { func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "kirContractAddress") + if err != nil { return *new(common.Address), err } @@ -24287,6 +24898,7 @@ func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // KirContractAddress is a free data retrieval call binding the contract method 0xb858dd95. @@ -24309,6 +24921,7 @@ func (_IAddressBook *IAddressBookCallerSession) KirContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "pocContractAddress") + if err != nil { return *new(common.Address), err } @@ -24316,6 +24929,7 @@ func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PocContractAddress is a free data retrieval call binding the contract method 0xd267eda5. @@ -24338,6 +24952,7 @@ func (_IAddressBook *IAddressBookCallerSession) PocContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "spareContractAddress") + if err != nil { return *new(common.Address), err } @@ -24345,6 +24960,7 @@ func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // SpareContractAddress is a free data retrieval call binding the contract method 0x6abd623d. @@ -24651,8 +25267,8 @@ var ICnStakingABI = ICnStakingMetaData.ABI // ICnStakingBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ICnStakingBinRuntime = `` -// ICnStakingFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ICnStakingMetaData.Sigs instead. +// ICnStakingFuncSigs maps the 4-byte function signature to its string representation. var ICnStakingFuncSigs = ICnStakingMetaData.Sigs // ICnStaking is an auto generated Go binding around a Kaia contract. @@ -24803,6 +25419,7 @@ func (_ICnStaking *ICnStakingTransactorRaw) Transact(opts *bind.TransactOpts, me func (_ICnStaking *ICnStakingCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -24810,6 +25427,7 @@ func (_ICnStaking *ICnStakingCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -24832,6 +25450,7 @@ func (_ICnStaking *ICnStakingCallerSession) CONTRACTTYPE() (string, error) { func (_ICnStaking *ICnStakingCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -24839,6 +25458,7 @@ func (_ICnStaking *ICnStakingCaller) VERSION(opts *bind.CallOpts) (*big.Int, err out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -24861,6 +25481,7 @@ func (_ICnStaking *ICnStakingCallerSession) VERSION() (*big.Int, error) { func (_ICnStaking *ICnStakingCaller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -24868,6 +25489,7 @@ func (_ICnStaking *ICnStakingCaller) NodeId(opts *bind.CallOpts) (common.Address out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -24943,8 +25565,8 @@ var ICnStakingV3ABI = ICnStakingV3MetaData.ABI // ICnStakingV3BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ICnStakingV3BinRuntime = `` -// ICnStakingV3FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ICnStakingV3MetaData.Sigs instead. +// ICnStakingV3FuncSigs maps the 4-byte function signature to its string representation. var ICnStakingV3FuncSigs = ICnStakingV3MetaData.Sigs // ICnStakingV3 is an auto generated Go binding around a Kaia contract. @@ -25095,6 +25717,7 @@ func (_ICnStakingV3 *ICnStakingV3TransactorRaw) Transact(opts *bind.TransactOpts func (_ICnStakingV3 *ICnStakingV3Caller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -25102,6 +25725,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -25124,6 +25748,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) ADDRESSBOOKADDRESS() (common.Add func (_ICnStakingV3 *ICnStakingV3Caller) ADMINROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "ADMIN_ROLE") + if err != nil { return *new([32]byte), err } @@ -25131,6 +25756,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) ADMINROLE(opts *bind.CallOpts) ([32]byt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ADMINROLE is a free data retrieval call binding the contract method 0x75b238fc. @@ -25153,6 +25779,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) ADMINROLE() ([32]byte, error) { func (_ICnStakingV3 *ICnStakingV3Caller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -25160,6 +25787,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) CONTRACTTYPE(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -25182,6 +25810,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) CONTRACTTYPE() (string, error) { func (_ICnStakingV3 *ICnStakingV3Caller) OPERATORROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "OPERATOR_ROLE") + if err != nil { return *new([32]byte), err } @@ -25189,6 +25818,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) OPERATORROLE(opts *bind.CallOpts) ([32] out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // OPERATORROLE is a free data retrieval call binding the contract method 0xf5b541a6. @@ -25211,6 +25841,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) OPERATORROLE() ([32]byte, error) func (_ICnStakingV3 *ICnStakingV3Caller) STAKERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "STAKER_ROLE") + if err != nil { return *new([32]byte), err } @@ -25218,6 +25849,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) STAKERROLE(opts *bind.CallOpts) ([32]by out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // STAKERROLE is a free data retrieval call binding the contract method 0x3780b3ed. @@ -25240,6 +25872,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) STAKERROLE() ([32]byte, error) { func (_ICnStakingV3 *ICnStakingV3Caller) STAKELOCKUP(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "STAKE_LOCKUP") + if err != nil { return *new(*big.Int), err } @@ -25247,6 +25880,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) STAKELOCKUP(opts *bind.CallOpts) (*big. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // STAKELOCKUP is a free data retrieval call binding the contract method 0x96106ae4. @@ -25269,6 +25903,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) STAKELOCKUP() (*big.Int, error) func (_ICnStakingV3 *ICnStakingV3Caller) UNSTAKINGAPPROVERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "UNSTAKING_APPROVER_ROLE") + if err != nil { return *new([32]byte), err } @@ -25276,6 +25911,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) UNSTAKINGAPPROVERROLE(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGAPPROVERROLE is a free data retrieval call binding the contract method 0x0c07d842. @@ -25298,6 +25934,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) UNSTAKINGAPPROVERROLE() ([32]byt func (_ICnStakingV3 *ICnStakingV3Caller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "UNSTAKING_CLAIMER_ROLE") + if err != nil { return *new([32]byte), err } @@ -25305,6 +25942,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) UNSTAKINGCLAIMERROLE(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // UNSTAKINGCLAIMERROLE is a free data retrieval call binding the contract method 0x9c394c5d. @@ -25327,6 +25965,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) UNSTAKINGCLAIMERROLE() ([32]byte func (_ICnStakingV3 *ICnStakingV3Caller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -25334,6 +25973,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) VERSION(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -25356,6 +25996,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) VERSION() (*big.Int, error) { func (_ICnStakingV3 *ICnStakingV3Caller) GcId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "gcId") + if err != nil { return *new(*big.Int), err } @@ -25363,6 +26004,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GcId(opts *bind.CallOpts) (*big.Int, er out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GcId is a free data retrieval call binding the contract method 0x6d2714db. @@ -25385,6 +26027,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) GcId() (*big.Int, error) { func (_ICnStakingV3 *ICnStakingV3Caller) GetApprovedStakingWithdrawalIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "getApprovedStakingWithdrawalIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -25392,6 +26035,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GetApprovedStakingWithdrawalIds(opts *b out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetApprovedStakingWithdrawalIds is a free data retrieval call binding the contract method 0xd2569eb9. @@ -25416,8 +26060,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GetApprovedStakingWithdrawalInfo(opts * Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "getApprovedStakingWithdrawalInfo", _index) @@ -25427,12 +26070,17 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GetApprovedStakingWithdrawalInfo(opts * WithdrawableFrom *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.To = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Value = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.WithdrawableFrom = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetApprovedStakingWithdrawalInfo is a free data retrieval call binding the contract method 0x725c0503. @@ -25443,8 +26091,7 @@ func (_ICnStakingV3 *ICnStakingV3Session) GetApprovedStakingWithdrawalInfo(_inde Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _ICnStakingV3.Contract.GetApprovedStakingWithdrawalInfo(&_ICnStakingV3.CallOpts, _index) } @@ -25456,8 +26103,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) GetApprovedStakingWithdrawalInfo Value *big.Int WithdrawableFrom *big.Int State uint8 -}, error, -) { +}, error) { return _ICnStakingV3.Contract.GetApprovedStakingWithdrawalInfo(&_ICnStakingV3.CallOpts, _index) } @@ -25470,8 +26116,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GetLockupStakingInfo(opts *bind.CallOpt Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "getLockupStakingInfo") @@ -25482,13 +26127,18 @@ func (_ICnStakingV3 *ICnStakingV3Caller) GetLockupStakingInfo(opts *bind.CallOpt Remaining *big.Int Withdrawable *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.UnlockTime = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) outstruct.UnlockAmount = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) outstruct.Initial = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.Remaining = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) outstruct.Withdrawable = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetLockupStakingInfo is a free data retrieval call binding the contract method 0x5ecd75f2. @@ -25500,8 +26150,7 @@ func (_ICnStakingV3 *ICnStakingV3Session) GetLockupStakingInfo() (struct { Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _ICnStakingV3.Contract.GetLockupStakingInfo(&_ICnStakingV3.CallOpts) } @@ -25514,8 +26163,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) GetLockupStakingInfo() (struct { Initial *big.Int Remaining *big.Int Withdrawable *big.Int -}, error, -) { +}, error) { return _ICnStakingV3.Contract.GetLockupStakingInfo(&_ICnStakingV3.CallOpts) } @@ -25525,6 +26173,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) GetLockupStakingInfo() (struct { func (_ICnStakingV3 *ICnStakingV3Caller) InitialLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "initialLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -25532,6 +26181,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) InitialLockupStaking(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // InitialLockupStaking is a free data retrieval call binding the contract method 0x06704222. @@ -25554,6 +26204,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) InitialLockupStaking() (*big.Int func (_ICnStakingV3 *ICnStakingV3Caller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -25561,6 +26212,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) IsInitialized(opts *bind.CallOpts) (boo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -25583,6 +26235,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) IsInitialized() (bool, error) { func (_ICnStakingV3 *ICnStakingV3Caller) IsPublicDelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "isPublicDelegationEnabled") + if err != nil { return *new(bool), err } @@ -25590,6 +26243,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) IsPublicDelegationEnabled(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsPublicDelegationEnabled is a free data retrieval call binding the contract method 0xbfc7e948. @@ -25612,6 +26266,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) IsPublicDelegationEnabled() (boo func (_ICnStakingV3 *ICnStakingV3Caller) IsRedelegationEnabled(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "isRedelegationEnabled") + if err != nil { return *new(bool), err } @@ -25619,6 +26274,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) IsRedelegationEnabled(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsRedelegationEnabled is a free data retrieval call binding the contract method 0x7a66c96b. @@ -25641,6 +26297,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) IsRedelegationEnabled() (bool, e func (_ICnStakingV3 *ICnStakingV3Caller) LastRedelegation(opts *bind.CallOpts, _account common.Address) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "lastRedelegation", _account) + if err != nil { return *new(*big.Int), err } @@ -25648,6 +26305,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) LastRedelegation(opts *bind.CallOpts, _ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastRedelegation is a free data retrieval call binding the contract method 0x14d3ce10. @@ -25670,6 +26328,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) LastRedelegation(_account common func (_ICnStakingV3 *ICnStakingV3Caller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -25677,6 +26336,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) NodeId(opts *bind.CallOpts) (common.Add out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -25699,6 +26359,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) NodeId() (common.Address, error) func (_ICnStakingV3 *ICnStakingV3Caller) PendingRewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "pendingRewardAddress") + if err != nil { return *new(common.Address), err } @@ -25706,6 +26367,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) PendingRewardAddress(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PendingRewardAddress is a free data retrieval call binding the contract method 0x8740568b. @@ -25728,6 +26390,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) PendingRewardAddress() (common.A func (_ICnStakingV3 *ICnStakingV3Caller) PublicDelegation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "publicDelegation") + if err != nil { return *new(common.Address), err } @@ -25735,6 +26398,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) PublicDelegation(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PublicDelegation is a free data retrieval call binding the contract method 0xe1a12d35. @@ -25757,6 +26421,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) PublicDelegation() (common.Addre func (_ICnStakingV3 *ICnStakingV3Caller) RemainingLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "remainingLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -25764,6 +26429,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) RemainingLockupStaking(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RemainingLockupStaking is a free data retrieval call binding the contract method 0x7b5e0481. @@ -25786,6 +26452,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) RemainingLockupStaking() (*big.I func (_ICnStakingV3 *ICnStakingV3Caller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -25793,6 +26460,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) RewardAddress(opts *bind.CallOpts) (com out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -25815,6 +26483,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) RewardAddress() (common.Address, func (_ICnStakingV3 *ICnStakingV3Caller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -25822,6 +26491,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) Staking(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -25844,6 +26514,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) Staking() (*big.Int, error) { func (_ICnStakingV3 *ICnStakingV3Caller) StakingTracker(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "stakingTracker") + if err != nil { return *new(common.Address), err } @@ -25851,6 +26522,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) StakingTracker(opts *bind.CallOpts) (co out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // StakingTracker is a free data retrieval call binding the contract method 0x008c477a. @@ -25873,6 +26545,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) StakingTracker() (common.Address func (_ICnStakingV3 *ICnStakingV3Caller) Unstaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "unstaking") + if err != nil { return *new(*big.Int), err } @@ -25880,6 +26553,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) Unstaking(opts *bind.CallOpts) (*big.In out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Unstaking is a free data retrieval call binding the contract method 0x630b1146. @@ -25902,6 +26576,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) Unstaking() (*big.Int, error) { func (_ICnStakingV3 *ICnStakingV3Caller) VoterAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "voterAddress") + if err != nil { return *new(common.Address), err } @@ -25909,6 +26584,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) VoterAddress(opts *bind.CallOpts) (comm out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // VoterAddress is a free data retrieval call binding the contract method 0x992ac9fa. @@ -25931,6 +26607,7 @@ func (_ICnStakingV3 *ICnStakingV3CallerSession) VoterAddress() (common.Address, func (_ICnStakingV3 *ICnStakingV3Caller) WithdrawalRequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3.contract.Call(opts, &out, "withdrawalRequestCount") + if err != nil { return *new(*big.Int), err } @@ -25938,6 +26615,7 @@ func (_ICnStakingV3 *ICnStakingV3Caller) WithdrawalRequestCount(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // WithdrawalRequestCount is a free data retrieval call binding the contract method 0x19e44e32. @@ -26409,6 +27087,7 @@ type ICnStakingV3AcceptRewardAddress struct { // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterAcceptRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*ICnStakingV3AcceptRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -26425,6 +27104,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterAcceptRewardAddress(opts *bind. // // Solidity: event AcceptRewardAddress(address indexed rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchAcceptRewardAddress(opts *bind.WatchOpts, sink chan<- *ICnStakingV3AcceptRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -26470,6 +27150,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseAcceptRewardAddress(log types.Lo if err := _ICnStakingV3.contract.UnpackLog(event, "AcceptRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26553,6 +27234,7 @@ type ICnStakingV3ApproveStakingWithdrawal struct { // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterApproveStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*ICnStakingV3ApproveStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -26573,6 +27255,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterApproveStakingWithdrawal(opts * // // Solidity: event ApproveStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value, uint256 withdrawableFrom) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchApproveStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *ICnStakingV3ApproveStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -26622,6 +27305,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseApproveStakingWithdrawal(log typ if err := _ICnStakingV3.contract.UnpackLog(event, "ApproveStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26704,6 +27388,7 @@ type ICnStakingV3CancelApprovedStakingWithdrawal struct { // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterCancelApprovedStakingWithdrawal(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*ICnStakingV3CancelApprovedStakingWithdrawalIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -26724,6 +27409,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterCancelApprovedStakingWithdrawal // // Solidity: event CancelApprovedStakingWithdrawal(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchCancelApprovedStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *ICnStakingV3CancelApprovedStakingWithdrawal, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -26773,6 +27459,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseCancelApprovedStakingWithdrawal( if err := _ICnStakingV3.contract.UnpackLog(event, "CancelApprovedStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26852,6 +27539,7 @@ type ICnStakingV3CompleteReviewInitialConditions struct { // // Solidity: event CompleteReviewInitialConditions() func (_ICnStakingV3 *ICnStakingV3Filterer) FilterCompleteReviewInitialConditions(opts *bind.FilterOpts) (*ICnStakingV3CompleteReviewInitialConditionsIterator, error) { + logs, sub, err := _ICnStakingV3.contract.FilterLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -26863,6 +27551,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterCompleteReviewInitialConditions // // Solidity: event CompleteReviewInitialConditions() func (_ICnStakingV3 *ICnStakingV3Filterer) WatchCompleteReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *ICnStakingV3CompleteReviewInitialConditions) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3.contract.WatchLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -26903,6 +27592,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseCompleteReviewInitialConditions( if err := _ICnStakingV3.contract.UnpackLog(event, "CompleteReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -26984,6 +27674,7 @@ type ICnStakingV3DelegateKaia struct { // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDelegateKaia(opts *bind.FilterOpts, from []common.Address) (*ICnStakingV3DelegateKaiaIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27000,6 +27691,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDelegateKaia(opts *bind.FilterO // // Solidity: event DelegateKaia(address indexed from, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchDelegateKaia(opts *bind.WatchOpts, sink chan<- *ICnStakingV3DelegateKaia, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27045,6 +27737,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseDelegateKaia(log types.Log) (*IC if err := _ICnStakingV3.contract.UnpackLog(event, "DelegateKaia", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27129,6 +27822,7 @@ type ICnStakingV3DeployCnStakingV3 struct { // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDeployCnStakingV3(opts *bind.FilterOpts) (*ICnStakingV3DeployCnStakingV3Iterator, error) { + logs, sub, err := _ICnStakingV3.contract.FilterLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -27140,6 +27834,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDeployCnStakingV3(opts *bind.Fi // // Solidity: event DeployCnStakingV3(string contractType, address nodeId, address rewardAddress, uint256[] unlockTime, uint256[] unlockAmount) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchDeployCnStakingV3(opts *bind.WatchOpts, sink chan<- *ICnStakingV3DeployCnStakingV3) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3.contract.WatchLogs(opts, "DeployCnStakingV3") if err != nil { return nil, err @@ -27180,6 +27875,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseDeployCnStakingV3(log types.Log) if err := _ICnStakingV3.contract.UnpackLog(event, "DeployCnStakingV3", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27261,6 +27957,7 @@ type ICnStakingV3DepositLockupStakingAndInit struct { // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDepositLockupStakingAndInit(opts *bind.FilterOpts, from []common.Address) (*ICnStakingV3DepositLockupStakingAndInitIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27277,6 +27974,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterDepositLockupStakingAndInit(opt // // Solidity: event DepositLockupStakingAndInit(address indexed from, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchDepositLockupStakingAndInit(opts *bind.WatchOpts, sink chan<- *ICnStakingV3DepositLockupStakingAndInit, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27322,6 +28020,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseDepositLockupStakingAndInit(log if err := _ICnStakingV3.contract.UnpackLog(event, "DepositLockupStakingAndInit", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27405,6 +28104,7 @@ type ICnStakingV3HandleRedelegation struct { // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterHandleRedelegation(opts *bind.FilterOpts, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (*ICnStakingV3HandleRedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -27429,6 +28129,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterHandleRedelegation(opts *bind.F // // Solidity: event HandleRedelegation(address indexed user, address indexed prevCnStakingV3, address indexed targetCnStakingV3, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchHandleRedelegation(opts *bind.WatchOpts, sink chan<- *ICnStakingV3HandleRedelegation, user []common.Address, prevCnStakingV3 []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -27482,6 +28183,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseHandleRedelegation(log types.Log if err := _ICnStakingV3.contract.UnpackLog(event, "HandleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27564,6 +28266,7 @@ type ICnStakingV3Redelegation struct { // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterRedelegation(opts *bind.FilterOpts, user []common.Address, targetCnStakingV3 []common.Address) (*ICnStakingV3RedelegationIterator, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -27584,6 +28287,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterRedelegation(opts *bind.FilterO // // Solidity: event Redelegation(address indexed user, address indexed targetCnStakingV3, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchRedelegation(opts *bind.WatchOpts, sink chan<- *ICnStakingV3Redelegation, user []common.Address, targetCnStakingV3 []common.Address) (event.Subscription, error) { + var userRule []interface{} for _, userItem := range user { userRule = append(userRule, userItem) @@ -27633,6 +28337,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseRedelegation(log types.Log) (*IC if err := _ICnStakingV3.contract.UnpackLog(event, "Redelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27713,6 +28418,7 @@ type ICnStakingV3ReviewInitialConditions struct { // // Solidity: event ReviewInitialConditions(address indexed from) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterReviewInitialConditions(opts *bind.FilterOpts, from []common.Address) (*ICnStakingV3ReviewInitialConditionsIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27729,6 +28435,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterReviewInitialConditions(opts *b // // Solidity: event ReviewInitialConditions(address indexed from) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *ICnStakingV3ReviewInitialConditions, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27774,6 +28481,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseReviewInitialConditions(log type if err := _ICnStakingV3.contract.UnpackLog(event, "ReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27856,6 +28564,7 @@ type ICnStakingV3SetPublicDelegation struct { // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterSetPublicDelegation(opts *bind.FilterOpts, from []common.Address) (*ICnStakingV3SetPublicDelegationIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27872,6 +28581,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterSetPublicDelegation(opts *bind. // // Solidity: event SetPublicDelegation(address indexed from, address publicDelegation, address rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchSetPublicDelegation(opts *bind.WatchOpts, sink chan<- *ICnStakingV3SetPublicDelegation, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -27917,6 +28627,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseSetPublicDelegation(log types.Lo if err := _ICnStakingV3.contract.UnpackLog(event, "SetPublicDelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -27997,6 +28708,7 @@ type ICnStakingV3ToggleRedelegation struct { // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterToggleRedelegation(opts *bind.FilterOpts) (*ICnStakingV3ToggleRedelegationIterator, error) { + logs, sub, err := _ICnStakingV3.contract.FilterLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -28008,6 +28720,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterToggleRedelegation(opts *bind.F // // Solidity: event ToggleRedelegation(bool isRedelegationEnabled) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchToggleRedelegation(opts *bind.WatchOpts, sink chan<- *ICnStakingV3ToggleRedelegation) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3.contract.WatchLogs(opts, "ToggleRedelegation") if err != nil { return nil, err @@ -28048,6 +28761,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseToggleRedelegation(log types.Log if err := _ICnStakingV3.contract.UnpackLog(event, "ToggleRedelegation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28128,6 +28842,7 @@ type ICnStakingV3UpdateGCId struct { // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateGCId(opts *bind.FilterOpts, gcId []*big.Int) (*ICnStakingV3UpdateGCIdIterator, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -28144,6 +28859,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateGCId(opts *bind.FilterOpt // // Solidity: event UpdateGCId(uint256 indexed gcId) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchUpdateGCId(opts *bind.WatchOpts, sink chan<- *ICnStakingV3UpdateGCId, gcId []*big.Int) (event.Subscription, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -28189,6 +28905,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseUpdateGCId(log types.Log) (*ICnS if err := _ICnStakingV3.contract.UnpackLog(event, "UpdateGCId", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28269,6 +28986,7 @@ type ICnStakingV3UpdateRewardAddress struct { // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateRewardAddress(opts *bind.FilterOpts, rewardAddress []common.Address) (*ICnStakingV3UpdateRewardAddressIterator, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -28285,6 +29003,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateRewardAddress(opts *bind. // // Solidity: event UpdateRewardAddress(address indexed rewardAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchUpdateRewardAddress(opts *bind.WatchOpts, sink chan<- *ICnStakingV3UpdateRewardAddress, rewardAddress []common.Address) (event.Subscription, error) { + var rewardAddressRule []interface{} for _, rewardAddressItem := range rewardAddress { rewardAddressRule = append(rewardAddressRule, rewardAddressItem) @@ -28330,6 +29049,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseUpdateRewardAddress(log types.Lo if err := _ICnStakingV3.contract.UnpackLog(event, "UpdateRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28410,6 +29130,7 @@ type ICnStakingV3UpdateStakingTracker struct { // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateStakingTracker(opts *bind.FilterOpts, stakingTracker []common.Address) (*ICnStakingV3UpdateStakingTrackerIterator, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -28426,6 +29147,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateStakingTracker(opts *bind // // Solidity: event UpdateStakingTracker(address indexed stakingTracker) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchUpdateStakingTracker(opts *bind.WatchOpts, sink chan<- *ICnStakingV3UpdateStakingTracker, stakingTracker []common.Address) (event.Subscription, error) { + var stakingTrackerRule []interface{} for _, stakingTrackerItem := range stakingTracker { stakingTrackerRule = append(stakingTrackerRule, stakingTrackerItem) @@ -28471,6 +29193,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseUpdateStakingTracker(log types.L if err := _ICnStakingV3.contract.UnpackLog(event, "UpdateStakingTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28551,6 +29274,7 @@ type ICnStakingV3UpdateVoterAddress struct { // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateVoterAddress(opts *bind.FilterOpts, voterAddress []common.Address) (*ICnStakingV3UpdateVoterAddressIterator, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -28567,6 +29291,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterUpdateVoterAddress(opts *bind.F // // Solidity: event UpdateVoterAddress(address indexed voterAddress) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchUpdateVoterAddress(opts *bind.WatchOpts, sink chan<- *ICnStakingV3UpdateVoterAddress, voterAddress []common.Address) (event.Subscription, error) { + var voterAddressRule []interface{} for _, voterAddressItem := range voterAddress { voterAddressRule = append(voterAddressRule, voterAddressItem) @@ -28612,6 +29337,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseUpdateVoterAddress(log types.Log if err := _ICnStakingV3.contract.UnpackLog(event, "UpdateVoterAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28694,6 +29420,7 @@ type ICnStakingV3WithdrawApprovedStaking struct { // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterWithdrawApprovedStaking(opts *bind.FilterOpts, approvedWithdrawalId []*big.Int, to []common.Address) (*ICnStakingV3WithdrawApprovedStakingIterator, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -28714,6 +29441,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterWithdrawApprovedStaking(opts *b // // Solidity: event WithdrawApprovedStaking(uint256 indexed approvedWithdrawalId, address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchWithdrawApprovedStaking(opts *bind.WatchOpts, sink chan<- *ICnStakingV3WithdrawApprovedStaking, approvedWithdrawalId []*big.Int, to []common.Address) (event.Subscription, error) { + var approvedWithdrawalIdRule []interface{} for _, approvedWithdrawalIdItem := range approvedWithdrawalId { approvedWithdrawalIdRule = append(approvedWithdrawalIdRule, approvedWithdrawalIdItem) @@ -28763,6 +29491,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseWithdrawApprovedStaking(log type if err := _ICnStakingV3.contract.UnpackLog(event, "WithdrawApprovedStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28844,6 +29573,7 @@ type ICnStakingV3WithdrawLockupStaking struct { // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) FilterWithdrawLockupStaking(opts *bind.FilterOpts, to []common.Address) (*ICnStakingV3WithdrawLockupStakingIterator, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -28860,6 +29590,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) FilterWithdrawLockupStaking(opts *bin // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_ICnStakingV3 *ICnStakingV3Filterer) WatchWithdrawLockupStaking(opts *bind.WatchOpts, sink chan<- *ICnStakingV3WithdrawLockupStaking, to []common.Address) (event.Subscription, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -28905,6 +29636,7 @@ func (_ICnStakingV3 *ICnStakingV3Filterer) ParseWithdrawLockupStaking(log types. if err := _ICnStakingV3.contract.UnpackLog(event, "WithdrawLockupStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -28951,8 +29683,8 @@ var ICnStakingV3MultiSigABI = ICnStakingV3MultiSigMetaData.ABI // ICnStakingV3MultiSigBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ICnStakingV3MultiSigBinRuntime = `` -// ICnStakingV3MultiSigFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ICnStakingV3MultiSigMetaData.Sigs instead. +// ICnStakingV3MultiSigFuncSigs maps the 4-byte function signature to its string representation. var ICnStakingV3MultiSigFuncSigs = ICnStakingV3MultiSigMetaData.Sigs // ICnStakingV3MultiSig is an auto generated Go binding around a Kaia contract. @@ -29103,6 +29835,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigTransactorRaw) Transact(opts *b func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -29110,6 +29843,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) MAXADMIN(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -29132,6 +29866,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) MAXADMIN() (*big func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) AdminList(opts *bind.CallOpts, _pos *big.Int) (common.Address, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "adminList", _pos) + if err != nil { return *new(common.Address), err } @@ -29139,6 +29874,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) AdminList(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AdminList is a free data retrieval call binding the contract method 0x11117fc8. @@ -29161,6 +29897,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) AdminList(_pos * func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) ContractValidator(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "contractValidator") + if err != nil { return *new(common.Address), err } @@ -29168,6 +29905,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) ContractValidator(opts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ContractValidator is a free data retrieval call binding the contract method 0x7a5db068. @@ -29190,6 +29928,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) ContractValidato func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "getRequestIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -29197,6 +29936,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestIds(opts *bin out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetRequestIds is a free data retrieval call binding the contract method 0x0fd440ec. @@ -29224,8 +29964,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestInfo(opts *bi Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "getRequestInfo", _id) @@ -29238,6 +29977,9 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestInfo(opts *bi Confirmers []common.Address State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -29246,7 +29988,9 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestInfo(opts *bi outstruct.Proposer = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) outstruct.Confirmers = *abi.ConvertType(out[5], new([]common.Address)).(*[]common.Address) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x0b816045. @@ -29260,8 +30004,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigSession) GetRequestInfo(_id *bi Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _ICnStakingV3MultiSig.Contract.GetRequestInfo(&_ICnStakingV3MultiSig.CallOpts, _id) } @@ -29276,8 +30019,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) GetRequestInfo(_ Proposer common.Address Confirmers []common.Address State uint8 -}, error, -) { +}, error) { return _ICnStakingV3MultiSig.Contract.GetRequestInfo(&_ICnStakingV3MultiSig.CallOpts, _id) } @@ -29287,6 +30029,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) GetRequestInfo(_ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestState(opts *bind.CallOpts, _id *big.Int) (uint8, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "getRequestState", _id) + if err != nil { return *new(uint8), err } @@ -29294,6 +30037,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetRequestState(opts *b out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetRequestState is a free data retrieval call binding the contract method 0xed979dd6. @@ -29316,6 +30060,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) GetRequestState( func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetReviewers(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "getReviewers") + if err != nil { return *new([]common.Address), err } @@ -29323,6 +30068,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetReviewers(opts *bind out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetReviewers is a free data retrieval call binding the contract method 0x75a87643. @@ -29352,8 +30098,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetState(opts *bind.Cal UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "getState") @@ -29368,6 +30113,9 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetState(opts *bind.Cal AllReviewed bool IsInitialized bool }) + if err != nil { + return *outstruct, err + } outstruct.ContractValidator = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.NodeId = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) @@ -29378,7 +30126,9 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) GetState(opts *bind.Cal outstruct.UnlockAmount = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) outstruct.AllReviewed = *abi.ConvertType(out[7], new(bool)).(*bool) outstruct.IsInitialized = *abi.ConvertType(out[8], new(bool)).(*bool) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -29394,8 +30144,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigSession) GetState() (struct { UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _ICnStakingV3MultiSig.Contract.GetState(&_ICnStakingV3MultiSig.CallOpts) } @@ -29412,8 +30161,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) GetState() (stru UnlockAmount []*big.Int AllReviewed bool IsInitialized bool -}, error, -) { +}, error) { return _ICnStakingV3MultiSig.Contract.GetState(&_ICnStakingV3MultiSig.CallOpts) } @@ -29423,6 +30171,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) GetState() (stru func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) IsAdmin(opts *bind.CallOpts, _admin common.Address) (bool, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "isAdmin", _admin) + if err != nil { return *new(bool), err } @@ -29430,6 +30179,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) IsAdmin(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsAdmin is a free data retrieval call binding the contract method 0x24d7806c. @@ -29452,6 +30202,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) IsAdmin(_admin c func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) LastClearedId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "lastClearedId") + if err != nil { return *new(*big.Int), err } @@ -29459,6 +30210,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) LastClearedId(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastClearedId is a free data retrieval call binding the contract method 0xe7abb98d. @@ -29481,6 +30233,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) LastClearedId() func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) RequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "requestCount") + if err != nil { return *new(*big.Int), err } @@ -29488,6 +30241,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) RequestCount(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RequestCount is a free data retrieval call binding the contract method 0x5badbe4c. @@ -29510,6 +30264,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCallerSession) RequestCount() ( func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStakingV3MultiSig.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -29517,6 +30272,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigCaller) Requirement(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -29967,6 +30723,7 @@ type ICnStakingV3MultiSigAddAdmin struct { // // Solidity: event AddAdmin(address indexed admin) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterAddAdmin(opts *bind.FilterOpts, admin []common.Address) (*ICnStakingV3MultiSigAddAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -29983,6 +30740,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterAddAdmin(opts * // // Solidity: event AddAdmin(address indexed admin) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchAddAdmin(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigAddAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -30028,6 +30786,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseAddAdmin(log typ if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "AddAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30113,6 +30872,7 @@ type ICnStakingV3MultiSigCancelRequest struct { // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterCancelRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigCancelRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30133,6 +30893,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterCancelRequest(o // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchCancelRequest(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigCancelRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30182,6 +30943,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseCancelRequest(lo if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "CancelRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30261,6 +31023,7 @@ type ICnStakingV3MultiSigClearRequest struct { // // Solidity: event ClearRequest() func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterClearRequest(opts *bind.FilterOpts) (*ICnStakingV3MultiSigClearRequestIterator, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.FilterLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -30272,6 +31035,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterClearRequest(op // // Solidity: event ClearRequest() func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchClearRequest(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigClearRequest) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.WatchLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -30312,6 +31076,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseClearRequest(log if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "ClearRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30398,6 +31163,7 @@ type ICnStakingV3MultiSigConfirmRequest struct { // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterConfirmRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigConfirmRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30418,6 +31184,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterConfirmRequest( // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchConfirmRequest(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigConfirmRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30467,6 +31234,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseConfirmRequest(l if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "ConfirmRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30547,6 +31315,7 @@ type ICnStakingV3MultiSigDeleteAdmin struct { // // Solidity: event DeleteAdmin(address indexed admin) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterDeleteAdmin(opts *bind.FilterOpts, admin []common.Address) (*ICnStakingV3MultiSigDeleteAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -30563,6 +31332,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterDeleteAdmin(opt // // Solidity: event DeleteAdmin(address indexed admin) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchDeleteAdmin(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigDeleteAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -30608,6 +31378,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseDeleteAdmin(log if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "DeleteAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30691,6 +31462,7 @@ type ICnStakingV3MultiSigDeployCnStakingV3MultiSig struct { // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterDeployCnStakingV3MultiSig(opts *bind.FilterOpts) (*ICnStakingV3MultiSigDeployCnStakingV3MultiSigIterator, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.FilterLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -30702,6 +31474,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterDeployCnStaking // // Solidity: event DeployCnStakingV3MultiSig(string contractType, address contractValidator, address[] cnAdminList, uint256 requirement) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchDeployCnStakingV3MultiSig(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigDeployCnStakingV3MultiSig) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.WatchLogs(opts, "DeployCnStakingV3MultiSig") if err != nil { return nil, err @@ -30742,6 +31515,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseDeployCnStakingV if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "DeployCnStakingV3MultiSig", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30827,6 +31601,7 @@ type ICnStakingV3MultiSigExecuteRequestFailure struct { // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterExecuteRequestFailure(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigExecuteRequestFailureIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30847,6 +31622,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterExecuteRequestF // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchExecuteRequestFailure(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigExecuteRequestFailure, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -30896,6 +31672,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseExecuteRequestFa if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "ExecuteRequestFailure", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -30981,6 +31758,7 @@ type ICnStakingV3MultiSigExecuteRequestSuccess struct { // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterExecuteRequestSuccess(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigExecuteRequestSuccessIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31001,6 +31779,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterExecuteRequestS // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchExecuteRequestSuccess(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigExecuteRequestSuccess, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31050,6 +31829,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseExecuteRequestSu if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "ExecuteRequestSuccess", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -31136,6 +31916,7 @@ type ICnStakingV3MultiSigRevokeConfirmation struct { // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterRevokeConfirmation(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigRevokeConfirmationIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31156,6 +31937,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterRevokeConfirmat // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchRevokeConfirmation(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigRevokeConfirmation, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31205,6 +31987,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseRevokeConfirmati if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "RevokeConfirmation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -31290,6 +32073,7 @@ type ICnStakingV3MultiSigSubmitRequest struct { // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterSubmitRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*ICnStakingV3MultiSigSubmitRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31310,6 +32094,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterSubmitRequest(o // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchSubmitRequest(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigSubmitRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -31359,6 +32144,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseSubmitRequest(lo if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "SubmitRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -31439,6 +32225,7 @@ type ICnStakingV3MultiSigUpdateRequirement struct { // // Solidity: event UpdateRequirement(uint256 requirement) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterUpdateRequirement(opts *bind.FilterOpts) (*ICnStakingV3MultiSigUpdateRequirementIterator, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.FilterLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -31450,6 +32237,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) FilterUpdateRequireme // // Solidity: event UpdateRequirement(uint256 requirement) func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) WatchUpdateRequirement(opts *bind.WatchOpts, sink chan<- *ICnStakingV3MultiSigUpdateRequirement) (event.Subscription, error) { + logs, sub, err := _ICnStakingV3MultiSig.contract.WatchLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -31490,6 +32278,7 @@ func (_ICnStakingV3MultiSig *ICnStakingV3MultiSigFilterer) ParseUpdateRequiremen if err := _ICnStakingV3MultiSig.contract.UnpackLog(event, "UpdateRequirement", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -31662,8 +32451,8 @@ var IERC165ABI = IERC165MetaData.ABI // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC165BinRuntime = `` -// IERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC165MetaData.Sigs instead. +// IERC165FuncSigs maps the 4-byte function signature to its string representation. var IERC165FuncSigs = IERC165MetaData.Sigs // IERC165 is an auto generated Go binding around a Kaia contract. @@ -31814,6 +32603,7 @@ func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -31821,6 +32611,7 @@ func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -31857,8 +32648,8 @@ var IERC20ABI = IERC20MetaData.ABI // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BinRuntime = `` -// IERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetaData.Sigs instead. +// IERC20FuncSigs maps the 4-byte function signature to its string representation. var IERC20FuncSigs = IERC20MetaData.Sigs // IERC20 is an auto generated Go binding around a Kaia contract. @@ -32009,6 +32800,7 @@ func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -32016,6 +32808,7 @@ func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -32038,6 +32831,7 @@ func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender comm func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -32045,6 +32839,7 @@ func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -32067,6 +32862,7 @@ func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -32074,6 +32870,7 @@ func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -32232,6 +33029,7 @@ type IERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -32252,6 +33050,7 @@ func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -32301,6 +33100,7 @@ func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, er if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -32383,6 +33183,7 @@ type IERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -32403,6 +33204,7 @@ func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -32452,6 +33254,7 @@ func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, er if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -32632,8 +33435,8 @@ var IERC20MetadataABI = IERC20MetadataMetaData.ABI // IERC20MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20MetadataBinRuntime = `` -// IERC20MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetadataMetaData.Sigs instead. +// IERC20MetadataFuncSigs maps the 4-byte function signature to its string representation. var IERC20MetadataFuncSigs = IERC20MetadataMetaData.Sigs // IERC20Metadata is an auto generated Go binding around a Kaia contract. @@ -32784,6 +33587,7 @@ func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.Transact func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -32791,6 +33595,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -32813,6 +33618,7 @@ func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Addre func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -32820,6 +33626,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, acco out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -32842,6 +33649,7 @@ func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Add func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "decimals") + if err != nil { return *new(uint8), err } @@ -32849,6 +33657,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Decimals is a free data retrieval call binding the contract method 0x313ce567. @@ -32871,6 +33680,7 @@ func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -32878,6 +33688,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -32900,6 +33711,7 @@ func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -32907,6 +33719,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -32929,6 +33742,7 @@ func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -32936,6 +33750,7 @@ func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (* out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -33094,6 +33909,7 @@ type IERC20MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -33114,6 +33930,7 @@ func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -33163,6 +33980,7 @@ func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IE if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -33245,6 +34063,7 @@ type IERC20MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -33265,6 +34084,7 @@ func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -33314,6 +34134,7 @@ func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IE if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -33487,8 +34308,8 @@ var IKIP163ABI = IKIP163MetaData.ABI // IKIP163BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IKIP163BinRuntime = `` -// IKIP163FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IKIP163MetaData.Sigs instead. +// IKIP163FuncSigs maps the 4-byte function signature to its string representation. var IKIP163FuncSigs = IKIP163MetaData.Sigs // IKIP163 is an auto generated Go binding around a Kaia contract. @@ -33639,6 +34460,7 @@ func (_IKIP163 *IKIP163TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IKIP163 *IKIP163Caller) Reward(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IKIP163.contract.Call(opts, &out, "reward") + if err != nil { return *new(*big.Int), err } @@ -33646,6 +34468,7 @@ func (_IKIP163 *IKIP163Caller) Reward(opts *bind.CallOpts) (*big.Int, error) { out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Reward is a free data retrieval call binding the contract method 0x228cb733. @@ -33730,8 +34553,8 @@ var IPublicDelegationABI = IPublicDelegationMetaData.ABI // IPublicDelegationBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IPublicDelegationBinRuntime = `` -// IPublicDelegationFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IPublicDelegationMetaData.Sigs instead. +// IPublicDelegationFuncSigs maps the 4-byte function signature to its string representation. var IPublicDelegationFuncSigs = IPublicDelegationMetaData.Sigs // IPublicDelegation is an auto generated Go binding around a Kaia contract. @@ -33882,6 +34705,7 @@ func (_IPublicDelegation *IPublicDelegationTransactorRaw) Transact(opts *bind.Tr func (_IPublicDelegation *IPublicDelegationCaller) COMMISSIONDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "COMMISSION_DENOMINATOR") + if err != nil { return *new(*big.Int), err } @@ -33889,6 +34713,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) COMMISSIONDENOMINATOR(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // COMMISSIONDENOMINATOR is a free data retrieval call binding the contract method 0x3b1dbfcc. @@ -33911,6 +34736,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) COMMISSIONDENOMINATOR( func (_IPublicDelegation *IPublicDelegationCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -33918,6 +34744,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) CONTRACTTYPE(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -33940,6 +34767,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) CONTRACTTYPE() (string func (_IPublicDelegation *IPublicDelegationCaller) MAXCOMMISSIONRATE(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "MAX_COMMISSION_RATE") + if err != nil { return *new(*big.Int), err } @@ -33947,6 +34775,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) MAXCOMMISSIONRATE(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXCOMMISSIONRATE is a free data retrieval call binding the contract method 0x207239c0. @@ -33969,6 +34798,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) MAXCOMMISSIONRATE() (* func (_IPublicDelegation *IPublicDelegationCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -33976,6 +34806,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) VERSION(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -33998,6 +34829,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) VERSION() (*big.Int, e func (_IPublicDelegation *IPublicDelegationCaller) BaseCnStakingV3(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "baseCnStakingV3") + if err != nil { return *new(common.Address), err } @@ -34005,6 +34837,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) BaseCnStakingV3(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // BaseCnStakingV3 is a free data retrieval call binding the contract method 0xe2c8bde5. @@ -34027,6 +34860,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) BaseCnStakingV3() (com func (_IPublicDelegation *IPublicDelegationCaller) CommissionRate(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "commissionRate") + if err != nil { return *new(*big.Int), err } @@ -34034,6 +34868,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) CommissionRate(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // CommissionRate is a free data retrieval call binding the contract method 0x5ea1d6f8. @@ -34056,6 +34891,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) CommissionRate() (*big func (_IPublicDelegation *IPublicDelegationCaller) CommissionTo(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "commissionTo") + if err != nil { return *new(common.Address), err } @@ -34063,6 +34899,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) CommissionTo(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CommissionTo is a free data retrieval call binding the contract method 0x2f9ac83a. @@ -34085,6 +34922,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) CommissionTo() (common func (_IPublicDelegation *IPublicDelegationCaller) ConvertToAssets(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "convertToAssets", _shares) + if err != nil { return *new(*big.Int), err } @@ -34092,6 +34930,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) ConvertToAssets(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToAssets is a free data retrieval call binding the contract method 0x07a2d13a. @@ -34114,6 +34953,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) ConvertToAssets(_share func (_IPublicDelegation *IPublicDelegationCaller) ConvertToShares(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "convertToShares", _assets) + if err != nil { return *new(*big.Int), err } @@ -34121,6 +34961,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) ConvertToShares(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToShares is a free data retrieval call binding the contract method 0xc6e6f592. @@ -34143,6 +34984,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) ConvertToShares(_asset func (_IPublicDelegation *IPublicDelegationCaller) GetCurrentWithdrawalRequestState(opts *bind.CallOpts, _requestId *big.Int) (uint8, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "getCurrentWithdrawalRequestState", _requestId) + if err != nil { return *new(uint8), err } @@ -34150,6 +34992,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) GetCurrentWithdrawalRequestSt out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetCurrentWithdrawalRequestState is a free data retrieval call binding the contract method 0x04ddc9d1. @@ -34172,6 +35015,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) GetCurrentWithdrawalRe func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestCount(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "getUserRequestCount", _owner) + if err != nil { return *new(*big.Int), err } @@ -34179,6 +35023,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestCount(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetUserRequestCount is a free data retrieval call binding the contract method 0xc166c458. @@ -34201,6 +35046,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) GetUserRequestCount(_o func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestIds(opts *bind.CallOpts, _owner common.Address) ([]*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "getUserRequestIds", _owner) + if err != nil { return *new([]*big.Int), err } @@ -34208,6 +35054,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestIds(opts *bind. out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIds is a free data retrieval call binding the contract method 0x60df7c6c. @@ -34230,6 +35077,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) GetUserRequestIds(_own func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestIdsWithState(opts *bind.CallOpts, _owner common.Address, _state uint8) ([]*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "getUserRequestIdsWithState", _owner, _state) + if err != nil { return *new([]*big.Int), err } @@ -34237,6 +35085,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) GetUserRequestIdsWithState(op out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIdsWithState is a free data retrieval call binding the contract method 0x93b89a84. @@ -34259,6 +35108,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) GetUserRequestIdsWithS func (_IPublicDelegation *IPublicDelegationCaller) MaxRedeem(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "maxRedeem", _owner) + if err != nil { return *new(*big.Int), err } @@ -34266,6 +35116,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) MaxRedeem(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxRedeem is a free data retrieval call binding the contract method 0xd905777e. @@ -34288,6 +35139,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) MaxRedeem(_owner commo func (_IPublicDelegation *IPublicDelegationCaller) MaxWithdraw(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "maxWithdraw", _owner) + if err != nil { return *new(*big.Int), err } @@ -34295,6 +35147,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) MaxWithdraw(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxWithdraw is a free data retrieval call binding the contract method 0xce96cb77. @@ -34317,6 +35170,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) MaxWithdraw(_owner com func (_IPublicDelegation *IPublicDelegationCaller) PreviewDeposit(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "previewDeposit", _assets) + if err != nil { return *new(*big.Int), err } @@ -34324,6 +35178,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) PreviewDeposit(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewDeposit is a free data retrieval call binding the contract method 0xef8b30f7. @@ -34346,6 +35201,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) PreviewDeposit(_assets func (_IPublicDelegation *IPublicDelegationCaller) PreviewRedeem(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "previewRedeem", _shares) + if err != nil { return *new(*big.Int), err } @@ -34353,6 +35209,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) PreviewRedeem(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewRedeem is a free data retrieval call binding the contract method 0x4cdad506. @@ -34375,6 +35232,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) PreviewRedeem(_shares func (_IPublicDelegation *IPublicDelegationCaller) PreviewWithdraw(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "previewWithdraw", _assets) + if err != nil { return *new(*big.Int), err } @@ -34382,6 +35240,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) PreviewWithdraw(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewWithdraw is a free data retrieval call binding the contract method 0x0a28a477. @@ -34404,6 +35263,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) PreviewWithdraw(_asset func (_IPublicDelegation *IPublicDelegationCaller) RequestIdToOwner(opts *bind.CallOpts, _requestId *big.Int) (common.Address, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "requestIdToOwner", _requestId) + if err != nil { return *new(common.Address), err } @@ -34411,6 +35271,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) RequestIdToOwner(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RequestIdToOwner is a free data retrieval call binding the contract method 0xf29177c3. @@ -34433,6 +35294,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) RequestIdToOwner(_requ func (_IPublicDelegation *IPublicDelegationCaller) Reward(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "reward") + if err != nil { return *new(*big.Int), err } @@ -34440,6 +35302,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) Reward(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Reward is a free data retrieval call binding the contract method 0x228cb733. @@ -34462,6 +35325,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) Reward() (*big.Int, er func (_IPublicDelegation *IPublicDelegationCaller) TotalAssets(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "totalAssets") + if err != nil { return *new(*big.Int), err } @@ -34469,6 +35333,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) TotalAssets(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalAssets is a free data retrieval call binding the contract method 0x01e1d114. @@ -34491,6 +35356,7 @@ func (_IPublicDelegation *IPublicDelegationCallerSession) TotalAssets() (*big.In func (_IPublicDelegation *IPublicDelegationCaller) UserRequestIds(opts *bind.CallOpts, _owner common.Address, _index *big.Int) (*big.Int, error) { var out []interface{} err := _IPublicDelegation.contract.Call(opts, &out, "userRequestIds", _owner, _index) + if err != nil { return *new(*big.Int), err } @@ -34498,6 +35364,7 @@ func (_IPublicDelegation *IPublicDelegationCaller) UserRequestIds(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // UserRequestIds is a free data retrieval call binding the contract method 0x97feb23c. @@ -34844,6 +35711,7 @@ type IPublicDelegationClaimed struct { // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_IPublicDelegation *IPublicDelegationFilterer) FilterClaimed(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*IPublicDelegationClaimedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -34864,6 +35732,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterClaimed(opts *bind.Fi // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_IPublicDelegation *IPublicDelegationFilterer) WatchClaimed(opts *bind.WatchOpts, sink chan<- *IPublicDelegationClaimed, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -34913,6 +35782,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseClaimed(log types.Log) if err := _IPublicDelegation.contract.UnpackLog(event, "Claimed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -34995,6 +35865,7 @@ type IPublicDelegationDeployContract struct { // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_IPublicDelegation *IPublicDelegationFilterer) FilterDeployContract(opts *bind.FilterOpts) (*IPublicDelegationDeployContractIterator, error) { + logs, sub, err := _IPublicDelegation.contract.FilterLogs(opts, "DeployContract") if err != nil { return nil, err @@ -35006,6 +35877,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterDeployContract(opts * // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_IPublicDelegation *IPublicDelegationFilterer) WatchDeployContract(opts *bind.WatchOpts, sink chan<- *IPublicDelegationDeployContract) (event.Subscription, error) { + logs, sub, err := _IPublicDelegation.contract.WatchLogs(opts, "DeployContract") if err != nil { return nil, err @@ -35046,6 +35918,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseDeployContract(log typ if err := _IPublicDelegation.contract.UnpackLog(event, "DeployContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35129,6 +36002,7 @@ type IPublicDelegationRedeemed struct { // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_IPublicDelegation *IPublicDelegationFilterer) FilterRedeemed(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address) (*IPublicDelegationRedeemedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35149,6 +36023,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterRedeemed(opts *bind.F // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_IPublicDelegation *IPublicDelegationFilterer) WatchRedeemed(opts *bind.WatchOpts, sink chan<- *IPublicDelegationRedeemed, _user []common.Address, _recipient []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35198,6 +36073,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseRedeemed(log types.Log if err := _IPublicDelegation.contract.UnpackLog(event, "Redeemed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35280,6 +36156,7 @@ type IPublicDelegationRedelegated struct { // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_IPublicDelegation *IPublicDelegationFilterer) FilterRedelegated(opts *bind.FilterOpts, _user []common.Address, _targetCnV3 []common.Address) (*IPublicDelegationRedelegatedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35300,6 +36177,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterRedelegated(opts *bin // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_IPublicDelegation *IPublicDelegationFilterer) WatchRedelegated(opts *bind.WatchOpts, sink chan<- *IPublicDelegationRedelegated, _user []common.Address, _targetCnV3 []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35349,6 +36227,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseRedelegated(log types. if err := _IPublicDelegation.contract.UnpackLog(event, "Redelegated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35430,6 +36309,7 @@ type IPublicDelegationRequestCancelWithdrawal struct { // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_IPublicDelegation *IPublicDelegationFilterer) FilterRequestCancelWithdrawal(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*IPublicDelegationRequestCancelWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35450,6 +36330,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterRequestCancelWithdraw // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_IPublicDelegation *IPublicDelegationFilterer) WatchRequestCancelWithdrawal(opts *bind.WatchOpts, sink chan<- *IPublicDelegationRequestCancelWithdrawal, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35499,6 +36380,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseRequestCancelWithdrawa if err := _IPublicDelegation.contract.UnpackLog(event, "RequestCancelWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35582,6 +36464,7 @@ type IPublicDelegationRequestWithdrawal struct { // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_IPublicDelegation *IPublicDelegationFilterer) FilterRequestWithdrawal(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (*IPublicDelegationRequestWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35606,6 +36489,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterRequestWithdrawal(opt // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_IPublicDelegation *IPublicDelegationFilterer) WatchRequestWithdrawal(opts *bind.WatchOpts, sink chan<- *IPublicDelegationRequestWithdrawal, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35659,6 +36543,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseRequestWithdrawal(log if err := _IPublicDelegation.contract.UnpackLog(event, "RequestWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35740,6 +36625,7 @@ type IPublicDelegationSendCommission struct { // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_IPublicDelegation *IPublicDelegationFilterer) FilterSendCommission(opts *bind.FilterOpts, _commissionTo []common.Address) (*IPublicDelegationSendCommissionIterator, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -35756,6 +36642,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterSendCommission(opts * // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_IPublicDelegation *IPublicDelegationFilterer) WatchSendCommission(opts *bind.WatchOpts, sink chan<- *IPublicDelegationSendCommission, _commissionTo []common.Address) (event.Subscription, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -35801,6 +36688,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseSendCommission(log typ if err := _IPublicDelegation.contract.UnpackLog(event, "SendCommission", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -35883,6 +36771,7 @@ type IPublicDelegationStaked struct { // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_IPublicDelegation *IPublicDelegationFilterer) FilterStaked(opts *bind.FilterOpts, _user []common.Address) (*IPublicDelegationStakedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35899,6 +36788,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterStaked(opts *bind.Fil // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_IPublicDelegation *IPublicDelegationFilterer) WatchStaked(opts *bind.WatchOpts, sink chan<- *IPublicDelegationStaked, _user []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -35944,6 +36834,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseStaked(log types.Log) if err := _IPublicDelegation.contract.UnpackLog(event, "Staked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -36025,6 +36916,7 @@ type IPublicDelegationUpdateCommissionRate struct { // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_IPublicDelegation *IPublicDelegationFilterer) FilterUpdateCommissionRate(opts *bind.FilterOpts, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (*IPublicDelegationUpdateCommissionRateIterator, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -36045,6 +36937,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterUpdateCommissionRate( // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_IPublicDelegation *IPublicDelegationFilterer) WatchUpdateCommissionRate(opts *bind.WatchOpts, sink chan<- *IPublicDelegationUpdateCommissionRate, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (event.Subscription, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -36094,6 +36987,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseUpdateCommissionRate(l if err := _IPublicDelegation.contract.UnpackLog(event, "UpdateCommissionRate", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -36175,6 +37069,7 @@ type IPublicDelegationUpdateCommissionTo struct { // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_IPublicDelegation *IPublicDelegationFilterer) FilterUpdateCommissionTo(opts *bind.FilterOpts, _prevCommissionTo []common.Address, _commissionTo []common.Address) (*IPublicDelegationUpdateCommissionToIterator, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -36195,6 +37090,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) FilterUpdateCommissionTo(op // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_IPublicDelegation *IPublicDelegationFilterer) WatchUpdateCommissionTo(opts *bind.WatchOpts, sink chan<- *IPublicDelegationUpdateCommissionTo, _prevCommissionTo []common.Address, _commissionTo []common.Address) (event.Subscription, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -36244,6 +37140,7 @@ func (_IPublicDelegation *IPublicDelegationFilterer) ParseUpdateCommissionTo(log if err := _IPublicDelegation.contract.UnpackLog(event, "UpdateCommissionTo", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -36264,8 +37161,8 @@ var IPublicDelegationFactoryABI = IPublicDelegationFactoryMetaData.ABI // IPublicDelegationFactoryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IPublicDelegationFactoryBinRuntime = `` -// IPublicDelegationFactoryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IPublicDelegationFactoryMetaData.Sigs instead. +// IPublicDelegationFactoryFuncSigs maps the 4-byte function signature to its string representation. var IPublicDelegationFactoryFuncSigs = IPublicDelegationFactoryMetaData.Sigs // IPublicDelegationFactory is an auto generated Go binding around a Kaia contract. @@ -36416,6 +37313,7 @@ func (_IPublicDelegationFactory *IPublicDelegationFactoryTransactorRaw) Transact func (_IPublicDelegationFactory *IPublicDelegationFactoryCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IPublicDelegationFactory.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -36423,6 +37321,7 @@ func (_IPublicDelegationFactory *IPublicDelegationFactoryCaller) CONTRACTTYPE(op out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -36445,6 +37344,7 @@ func (_IPublicDelegationFactory *IPublicDelegationFactoryCallerSession) CONTRACT func (_IPublicDelegationFactory *IPublicDelegationFactoryCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IPublicDelegationFactory.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -36452,6 +37352,7 @@ func (_IPublicDelegationFactory *IPublicDelegationFactoryCaller) VERSION(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -36519,8 +37420,8 @@ var IStakingTrackerABI = IStakingTrackerMetaData.ABI // IStakingTrackerBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IStakingTrackerBinRuntime = `` -// IStakingTrackerFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IStakingTrackerMetaData.Sigs instead. +// IStakingTrackerFuncSigs maps the 4-byte function signature to its string representation. var IStakingTrackerFuncSigs = IStakingTrackerMetaData.Sigs // IStakingTracker is an auto generated Go binding around a Kaia contract. @@ -36671,6 +37572,7 @@ func (_IStakingTracker *IStakingTrackerTransactorRaw) Transact(opts *bind.Transa func (_IStakingTracker *IStakingTrackerCaller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -36678,6 +37580,7 @@ func (_IStakingTracker *IStakingTrackerCaller) ADDRESSBOOKADDRESS(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -36700,6 +37603,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) ADDRESSBOOKADDRESS() (comm func (_IStakingTracker *IStakingTrackerCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -36707,6 +37611,7 @@ func (_IStakingTracker *IStakingTrackerCaller) CONTRACTTYPE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -36729,6 +37634,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) CONTRACTTYPE() (string, er func (_IStakingTracker *IStakingTrackerCaller) MINSTAKE(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "MIN_STAKE") + if err != nil { return *new(*big.Int), err } @@ -36736,6 +37642,7 @@ func (_IStakingTracker *IStakingTrackerCaller) MINSTAKE(opts *bind.CallOpts) (*b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MINSTAKE is a free data retrieval call binding the contract method 0xcb1c2b5c. @@ -36758,6 +37665,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) MINSTAKE() (*big.Int, erro func (_IStakingTracker *IStakingTrackerCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -36765,6 +37673,7 @@ func (_IStakingTracker *IStakingTrackerCaller) VERSION(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -36787,6 +37696,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) VERSION() (*big.Int, error func (_IStakingTracker *IStakingTrackerCaller) GcIdToVoter(opts *bind.CallOpts, gcId *big.Int) (common.Address, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "gcIdToVoter", gcId) + if err != nil { return *new(common.Address), err } @@ -36794,6 +37704,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GcIdToVoter(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GcIdToVoter is a free data retrieval call binding the contract method 0xe2ec3a58. @@ -36817,8 +37728,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetAllTrackedGCs(opts *bind.CallO GcIds []*big.Int GcBalances []*big.Int GcVotes []*big.Int -}, error, -) { +}, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getAllTrackedGCs", trackerId) @@ -36827,11 +37737,16 @@ func (_IStakingTracker *IStakingTrackerCaller) GetAllTrackedGCs(opts *bind.CallO GcBalances []*big.Int GcVotes []*big.Int }) + if err != nil { + return *outstruct, err + } outstruct.GcIds = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) outstruct.GcBalances = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) outstruct.GcVotes = *abi.ConvertType(out[2], new([]*big.Int)).(*[]*big.Int) + return *outstruct, err + } // GetAllTrackedGCs is a free data retrieval call binding the contract method 0x870a53ff. @@ -36841,8 +37756,7 @@ func (_IStakingTracker *IStakingTrackerSession) GetAllTrackedGCs(trackerId *big. GcIds []*big.Int GcBalances []*big.Int GcVotes []*big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetAllTrackedGCs(&_IStakingTracker.CallOpts, trackerId) } @@ -36853,8 +37767,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetAllTrackedGCs(trackerId GcIds []*big.Int GcBalances []*big.Int GcVotes []*big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetAllTrackedGCs(&_IStakingTracker.CallOpts, trackerId) } @@ -36864,6 +37777,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetAllTrackedGCs(trackerId func (_IStakingTracker *IStakingTrackerCaller) GetAllTrackerIds(opts *bind.CallOpts) ([]*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getAllTrackerIds") + if err != nil { return *new([]*big.Int), err } @@ -36871,6 +37785,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetAllTrackerIds(opts *bind.CallO out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetAllTrackerIds is a free data retrieval call binding the contract method 0xc4efadfb. @@ -36893,6 +37808,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetAllTrackerIds() ([]*big func (_IStakingTracker *IStakingTrackerCaller) GetLastTrackerId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getLastTrackerId") + if err != nil { return *new(*big.Int), err } @@ -36900,6 +37816,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetLastTrackerId(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetLastTrackerId is a free data retrieval call binding the contract method 0xdac189b8. @@ -36922,6 +37839,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetLastTrackerId() (*big.I func (_IStakingTracker *IStakingTrackerCaller) GetLiveTrackerIds(opts *bind.CallOpts) ([]*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getLiveTrackerIds") + if err != nil { return *new([]*big.Int), err } @@ -36929,6 +37847,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetLiveTrackerIds(opts *bind.Call out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetLiveTrackerIds is a free data retrieval call binding the contract method 0xd4377d4d. @@ -36951,8 +37870,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetLiveTrackerIds() ([]*bi func (_IStakingTracker *IStakingTrackerCaller) GetTrackedGC(opts *bind.CallOpts, trackerId *big.Int, gcId *big.Int) (struct { GcBalance *big.Int GcVotes *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getTrackedGC", trackerId, gcId) @@ -36960,10 +37878,15 @@ func (_IStakingTracker *IStakingTrackerCaller) GetTrackedGC(opts *bind.CallOpts, GcBalance *big.Int GcVotes *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.GcBalance = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) outstruct.GcVotes = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetTrackedGC is a free data retrieval call binding the contract method 0x51afc36c. @@ -36972,8 +37895,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetTrackedGC(opts *bind.CallOpts, func (_IStakingTracker *IStakingTrackerSession) GetTrackedGC(trackerId *big.Int, gcId *big.Int) (struct { GcBalance *big.Int GcVotes *big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetTrackedGC(&_IStakingTracker.CallOpts, trackerId, gcId) } @@ -36983,8 +37905,7 @@ func (_IStakingTracker *IStakingTrackerSession) GetTrackedGC(trackerId *big.Int, func (_IStakingTracker *IStakingTrackerCallerSession) GetTrackedGC(trackerId *big.Int, gcId *big.Int) (struct { GcBalance *big.Int GcVotes *big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetTrackedGC(&_IStakingTracker.CallOpts, trackerId, gcId) } @@ -36997,8 +37918,7 @@ func (_IStakingTracker *IStakingTrackerCaller) GetTrackerSummary(opts *bind.Call NumGCs *big.Int TotalVotes *big.Int NumEligible *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "getTrackerSummary", trackerId) @@ -37009,13 +37929,18 @@ func (_IStakingTracker *IStakingTrackerCaller) GetTrackerSummary(opts *bind.Call TotalVotes *big.Int NumEligible *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.TrackStart = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) outstruct.TrackEnd = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.NumGCs = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.TotalVotes = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) outstruct.NumEligible = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetTrackerSummary is a free data retrieval call binding the contract method 0x3c7fff46. @@ -37027,8 +37952,7 @@ func (_IStakingTracker *IStakingTrackerSession) GetTrackerSummary(trackerId *big NumGCs *big.Int TotalVotes *big.Int NumEligible *big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetTrackerSummary(&_IStakingTracker.CallOpts, trackerId) } @@ -37041,8 +37965,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetTrackerSummary(trackerI NumGCs *big.Int TotalVotes *big.Int NumEligible *big.Int -}, error, -) { +}, error) { return _IStakingTracker.Contract.GetTrackerSummary(&_IStakingTracker.CallOpts, trackerId) } @@ -37052,6 +37975,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) GetTrackerSummary(trackerI func (_IStakingTracker *IStakingTrackerCaller) StakingToGCId(opts *bind.CallOpts, trackerId *big.Int, staking common.Address) (*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "stakingToGCId", trackerId, staking) + if err != nil { return *new(*big.Int), err } @@ -37059,6 +37983,7 @@ func (_IStakingTracker *IStakingTrackerCaller) StakingToGCId(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // StakingToGCId is a free data retrieval call binding the contract method 0x0294a897. @@ -37081,6 +38006,7 @@ func (_IStakingTracker *IStakingTrackerCallerSession) StakingToGCId(trackerId *b func (_IStakingTracker *IStakingTrackerCaller) VoterToGCId(opts *bind.CallOpts, voter common.Address) (*big.Int, error) { var out []interface{} err := _IStakingTracker.contract.Call(opts, &out, "voterToGCId", voter) + if err != nil { return *new(*big.Int), err } @@ -37088,6 +38014,7 @@ func (_IStakingTracker *IStakingTrackerCaller) VoterToGCId(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VoterToGCId is a free data retrieval call binding the contract method 0x4f471c02. @@ -37247,6 +38174,7 @@ type IStakingTrackerCreateTracker struct { // // Solidity: event CreateTracker(uint256 indexed trackerId, uint256 trackStart, uint256 trackEnd, uint256[] gcIds) func (_IStakingTracker *IStakingTrackerFilterer) FilterCreateTracker(opts *bind.FilterOpts, trackerId []*big.Int) (*IStakingTrackerCreateTrackerIterator, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37263,6 +38191,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) FilterCreateTracker(opts *bind. // // Solidity: event CreateTracker(uint256 indexed trackerId, uint256 trackStart, uint256 trackEnd, uint256[] gcIds) func (_IStakingTracker *IStakingTrackerFilterer) WatchCreateTracker(opts *bind.WatchOpts, sink chan<- *IStakingTrackerCreateTracker, trackerId []*big.Int) (event.Subscription, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37308,6 +38237,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) ParseCreateTracker(log types.Lo if err := _IStakingTracker.contract.UnpackLog(event, "CreateTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -37394,6 +38324,7 @@ type IStakingTrackerRefreshStake struct { // // Solidity: event RefreshStake(uint256 indexed trackerId, uint256 indexed gcId, address staking, uint256 stakingBalance, uint256 gcBalance, uint256 gcVote, uint256 totalVotes) func (_IStakingTracker *IStakingTrackerFilterer) FilterRefreshStake(opts *bind.FilterOpts, trackerId []*big.Int, gcId []*big.Int) (*IStakingTrackerRefreshStakeIterator, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37414,6 +38345,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) FilterRefreshStake(opts *bind.F // // Solidity: event RefreshStake(uint256 indexed trackerId, uint256 indexed gcId, address staking, uint256 stakingBalance, uint256 gcBalance, uint256 gcVote, uint256 totalVotes) func (_IStakingTracker *IStakingTrackerFilterer) WatchRefreshStake(opts *bind.WatchOpts, sink chan<- *IStakingTrackerRefreshStake, trackerId []*big.Int, gcId []*big.Int) (event.Subscription, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37463,6 +38395,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) ParseRefreshStake(log types.Log if err := _IStakingTracker.contract.UnpackLog(event, "RefreshStake", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -37545,6 +38478,7 @@ type IStakingTrackerRefreshVoter struct { // // Solidity: event RefreshVoter(uint256 indexed gcId, address staking, address voter) func (_IStakingTracker *IStakingTrackerFilterer) FilterRefreshVoter(opts *bind.FilterOpts, gcId []*big.Int) (*IStakingTrackerRefreshVoterIterator, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -37561,6 +38495,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) FilterRefreshVoter(opts *bind.F // // Solidity: event RefreshVoter(uint256 indexed gcId, address staking, address voter) func (_IStakingTracker *IStakingTrackerFilterer) WatchRefreshVoter(opts *bind.WatchOpts, sink chan<- *IStakingTrackerRefreshVoter, gcId []*big.Int) (event.Subscription, error) { + var gcIdRule []interface{} for _, gcIdItem := range gcId { gcIdRule = append(gcIdRule, gcIdItem) @@ -37606,6 +38541,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) ParseRefreshVoter(log types.Log if err := _IStakingTracker.contract.UnpackLog(event, "RefreshVoter", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -37686,6 +38622,7 @@ type IStakingTrackerRetireTracker struct { // // Solidity: event RetireTracker(uint256 indexed trackerId) func (_IStakingTracker *IStakingTrackerFilterer) FilterRetireTracker(opts *bind.FilterOpts, trackerId []*big.Int) (*IStakingTrackerRetireTrackerIterator, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37702,6 +38639,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) FilterRetireTracker(opts *bind. // // Solidity: event RetireTracker(uint256 indexed trackerId) func (_IStakingTracker *IStakingTrackerFilterer) WatchRetireTracker(opts *bind.WatchOpts, sink chan<- *IStakingTrackerRetireTracker, trackerId []*big.Int) (event.Subscription, error) { + var trackerIdRule []interface{} for _, trackerIdItem := range trackerId { trackerIdRule = append(trackerIdRule, trackerIdItem) @@ -37747,6 +38685,7 @@ func (_IStakingTracker *IStakingTrackerFilterer) ParseRetireTracker(log types.Lo if err := _IStakingTracker.contract.UnpackLog(event, "RetireTracker", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -37943,8 +38882,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -38095,6 +39034,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -38102,6 +39042,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -38238,6 +39179,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -38258,6 +39200,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -38307,6 +39250,7 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -38360,7 +39304,7 @@ var PublicDelegationMetaData = &bind.MetaData{ "97feb23c": "userRequestIds(address,uint256)", "f3fef3a3": "withdraw(address,uint256)", }, - Bin: "0x60a060405234801561000f575f80fd5b50604051612de0380380612de083398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50610bb8816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127ab6106355f395f818161076401528181610a74015281816112f701528181611377015281816114530152818161150e015281816116af0152818161190a01528181611af701528181611b8a0152611e9101526127ab5ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610786578063ef8b30f7146107a5578063f29177c3146107c4578063f2fde38b146107f8578063f3fef3a314610817578063ffa1ad7414610836575f80fd5b8063c804b11514610693578063ce96cb77146106b2578063d905777e146106d1578063dd62ed3e146106f0578063e15fc35014610734578063e2c8bde514610753575f80fd5b806393b89a841161010f57806393b89a84146105cf57806395d89b41146105ee57806397feb23c14610602578063a9059cbb14610621578063c166c45814610640578063c6e6f59214610674575f80fd5b80635ea1d6f81461052957806360df7c6c1461053e57806370a082311461056a578063715018a61461059e5780638da5cb5b146105b2575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146104a75780634b6a94cc146104bc5780634bf69206146104f75780634cdad5061461050a575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b333461084a565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b366004612300565b61095f565b3480156102ab575f80fd5b506102b46109fb565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e1366004612300565b610a09565b6040516102be919061232b565b3480156102fe575f80fd5b5061027b61030d366004612365565b610b27565b34801561031d575f80fd5b50610326610b88565b6040516102be9190612380565b34801561033e575f80fd5b506102b461034d366004612300565b610c18565b34801561035d575f80fd5b5061037161036c3660046123b5565b610c4d565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b366004612300565b610c66565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123b5565b610c8f565b3480156103de575f80fd5b506102b4610bb881565b3480156103f3575f80fd5b506102b4610d2e565b348015610407575f80fd5b506103716104163660046123df565b610d37565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d5a565b34801561048b575f80fd5b5061027b61049a366004612300565b610d66565b61027b610d7c565b3480156104b2575f80fd5b506102b461271081565b3480156104c7575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b610505366004612365565b610d86565b348015610515575f80fd5b506102b4610524366004612300565b610dbb565b348015610534575f80fd5b506102b460015481565b348015610549575f80fd5b5061055d610558366004612365565b610dc5565b6040516102be919061241d565b348015610575575f80fd5b506102b4610584366004612365565b6001600160a01b03165f9081526004602052604090205490565b3480156105a9575f80fd5b5061027b610e2e565b3480156105bd575f80fd5b506009546001600160a01b0316610439565b3480156105da575f80fd5b5061055d6105e9366004612460565b610e3f565b3480156105f9575f80fd5b50610326610f4d565b34801561060d575f80fd5b506102b461061c3660046123b5565b610f5c565b34801561062c575f80fd5b5061037161063b3660046123b5565b610f87565b34801561064b575f80fd5b506102b461065a366004612365565b6001600160a01b03165f9081526002602052604090205490565b34801561067f575f80fd5b506102b461068e366004612300565b610f94565b34801561069e575f80fd5b5061027b6106ad366004612300565b610fbc565b3480156106bd575f80fd5b506102b46106cc366004612365565b610fcf565b3480156106dc575f80fd5b506102b46106eb366004612365565b610ff0565b3480156106fb575f80fd5b506102b461070a36600461249a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561073f575f80fd5b5061027b61074e3660046123b5565b61100d565b34801561075e575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b348015610791575f80fd5b5061027b6107a03660046123b5565b6110e0565b3480156107b0575f80fd5b506102b46107bf366004612300565b6111ae565b3480156107cf575f80fd5b506104396107de366004612300565b60036020525f90815260409020546001600160a01b031681565b348015610803575f80fd5b5061027b610812366004612365565b6111b8565b348015610822575f80fd5b5061027b6108313660046123b5565b6111f2565b348015610841575f80fd5b506102b4600181565b478190035f61085882611287565b90508015610869576108698161129b565b6001600160a01b03841615610942575f81836108836112f4565b010390505f61089b8561089560065490565b846113fb565b90505f81116108f15760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108fb868261141d565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b8183018181039082146109585761095881611451565b5050505050565b6109676114c4565b610bb88111156109b95760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108e8565b6109c35f8061084a565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f610a046114f1565b905090565b5f805f610a1584611508565b935093505050815f03610a2b57505f9392505050565b6002816002811115610a3f57610a3f612317565b03610a4e575060059392505050565b6001816002811115610a6257610a62612317565b03610a71575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af291906124c6565b8301905082421015610b0957506001949350505050565b80421015610b1c57506002949350505050565b506004949350505050565b610b2f6114c4565b610b395f8061084a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b97906124dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc3906124dd565b8015610c0e5780601f10610be557610100808354040283529160200191610c0e565b820191905f5260205f20905b815481529060010190602001808311610bf157829003601f168201915b5050505050905090565b5f80610c2360065490565b90508015610c4457610c3f610c366109fb565b8490835f6115a8565b610c46565b825b9392505050565b5f33610c5a8185856115f7565b60019150505b92915050565b5f80610c7160065490565b90508015610c4457610c3f81610c856109fb565b85919060016115a8565b816001600160a01b038116610cb65760405162461bcd60e51b81526004016108e890612515565b610cc05f8061084a565b5f610cca83610dbb565b9050610cd63384611604565b610ce1338583611638565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f610a046117a2565b5f33610d448582856117b7565b610d4f858585611832565b506001949350505050565b610d645f8061084a565b565b610d705f8061084a565b610d798161188f565b50565b610d64333461084a565b806001600160a01b038116610dad5760405162461bcd60e51b81526004016108e890612515565b610db7823461084a565b5050565b5f610c6082610c18565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e2257602002820191905f5260205f20905b815481526020019060010190808311610e0e575b50505050509050919050565b610e366114c4565b610d645f611a06565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e7357610e7361253f565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5091505f805b82811015610f43576001600160a01b0386165f908152600260205260408120805483908110610ed357610ed3612553565b905f5260205f2001549050856005811115610ef057610ef0612317565b610ef982610a09565b6005811115610f0a57610f0a612317565b03610f3a57808584610f1b8161257b565b955081518110610f2d57610f2d612553565b6020026020010181815250505b50600101610ea2565b5082525092915050565b606060088054610b97906124dd565b6002602052815f5260405f208181548110610f75575f80fd5b905f5260205f20015f91509150505481565b5f33610c5a818585611832565b5f80610f9f60065490565b90508015610c4457610c3f81610fb36109fb565b8591905f6115a8565b610fc65f8061084a565b610d7981611a57565b6001600160a01b0381165f90815260046020526040812054610c6090610dbb565b6001600160a01b0381165f90815260046020526040812054610c60565b611015611b87565b61105a5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b61106e6001600160a01b0383166003611c08565b6110b15760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b6110bb5f8061084a565b5f6110c582610dbb565b90506110d13383611604565b6110db8382611e16565b505050565b6110e8611b87565b61112d5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b6111416001600160a01b0383166003611c08565b6111845760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b61118e5f8061084a565b5f61119882610c66565b90506111a43382611604565b6110db8383611e16565b5f610c6082610f94565b6111c06114c4565b6001600160a01b0381166111e957604051631e4fbdf760e01b81525f60048201526024016108e8565b610d7981611a06565b816001600160a01b0381166112195760405162461bcd60e51b81526004016108e890612515565b6112235f8061084a565b5f61122d83610c66565b90506112393382611604565b611244338585611638565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d20565b6001545f90610c60908390612710846115a8565b5f546112b0906001600160a01b031682611f2c565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906124c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f591906124c6565b03905090565b5f82156114135761140e8484845f6115a8565b611415565b835b949350505050565b6001600160a01b0382166114465760405163ec442f0560e01b81525f60048201526024016108e8565b610db75f8383611fbf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156114aa575f80fd5b505af11580156114bc573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d645760405163118cdaa760e01b81523360048201526024016108e8565b5f6114fa6117a2565b6115026112f4565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161155a91815260200190565b608060405180830381865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612593565b93509350935093509193509193565b5f806115b586868661202b565b90506115c0836120ea565b80156115db57505f84806115d6576115d66125df565b868809115b156115ee576115eb6001826125f3565b90505b95945050505050565b6110db8383836001612116565b6001600160a01b03821661162d57604051634b637e8f60e11b81525f60048201526024016108e8565b610db7825f83611fbf565b5f81116116875760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b91906124c6565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f47816117ae82611287565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f19811461182c578181101561181e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108e8565b61182c84848484035f612116565b50505050565b6001600160a01b03831661185b57604051634b637e8f60e11b81525f60048201526024016108e8565b6001600160a01b0382166118845760405163ec442f0560e01b81525f60048201526024016108e8565b6110db838383611fbf565b5f818152600360205260409020546001600160a01b031633146118f45760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b158015611953575f80fd5b505af1158015611965573d5f803e3d5ffd5b505050505f8061197483611508565b93505092505060028081111561198c5761198c612317565b81600281111561199e5761199e612317565b036119d5575f6119c9836119b160065490565b856119ba6114f1565b6119c49190612606565b6113fb565b905061182c338261141d565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611abc5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b5f611ac682611508565b50509150505f611ad5826111ae565b9050611ae1338261141d565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b40575f80fd5b505af1158015611b52573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190612619565b5f826001600160a01b03163b5f03611c2157505f610c60565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c60573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c879190810190612638565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611cbd575f915050610c60565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1e91906124c6565b14611d2c575f915050610c60565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8d91906126e3565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfa91906126fe565b506001600160a01b039081169088161494505050505092915050565b5f8111611e655760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ed2575f80fd5b505af1158015611ee4573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f4f5760405163cd78605960e01b81523060048201526024016108e8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f98576040519150601f19603f3d011682016040523d82523d5f602084013e611f9d565b606091505b50509050806110db57604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fdc57506001600160a01b038216155b6120205760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108e8565b6110db8383836121da565b5f838302815f1985870982811083820303915050805f0361205f57838281612055576120556125df565b0492505050610c46565b80841161207f5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ff576120ff612317565b6121099190612748565b60ff166001149050919050565b6001600160a01b03841661213f5760405163e602df0560e01b81525f60048201526024016108e8565b6001600160a01b03831661216857604051634a1406b160e11b81525f60048201526024016108e8565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561182c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2091815260200190565b6001600160a01b038316612204578060065f8282546121f991906125f3565b909155506122749050565b6001600160a01b0383165f90815260046020526040902054818110156122565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108e8565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b038216612290576006805482900390556122ae565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f391815260200190565b60405180910390a3505050565b5f60208284031215612310575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061234b57634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d79575f80fd5b5f60208284031215612375575f80fd5b8135610c4681612351565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123c6575f80fd5b82356123d181612351565b946020939093013593505050565b5f805f606084860312156123f1575f80fd5b83356123fc81612351565b9250602084013561240c81612351565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561245457835183529284019291840191600101612438565b50909695505050505050565b5f8060408385031215612471575f80fd5b823561247c81612351565b915060208301356006811061248f575f80fd5b809150509250929050565b5f80604083850312156124ab575f80fd5b82356124b681612351565b9150602083013561248f81612351565b5f602082840312156124d6575f80fd5b5051919050565b600181811c908216806124f157607f821691505b60208210810361250f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161258c5761258c612567565b5060010190565b5f805f80608085870312156125a6575f80fd5b84516125b181612351565b8094505060208501519250604085015191506060850151600381106125d4575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c6057610c60612567565b81810381811115610c6057610c60612567565b5f60208284031215612629575f80fd5b81518015158114610c46575f80fd5b5f60208284031215612648575f80fd5b815167ffffffffffffffff8082111561265f575f80fd5b818401915084601f830112612672575f80fd5b8151818111156126845761268461253f565b604051601f8201601f19908116603f011681019083821181831017156126ac576126ac61253f565b816040528281528760208487010111156126c4575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126f3575f80fd5b8151610c4681612351565b5f805f60608486031215612710575f80fd5b835161271b81612351565b602085015190935061272c81612351565b604085015190925061273d81612351565b809150509250925092565b5f60ff83168061276657634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220ea53752c150b476c6f0f4392c2cb6364876f1c3cc11545bb3d969c976cfdfef264736f6c63430008190033", + Bin: "0x60a060405234801561000f575f80fd5b50604051612dcb380380612dcb83398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50612710816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127966106355f395f818161074f01528181610a5f015281816112e2015281816113620152818161143e015281816114f90152818161169a015281816118f501528181611ae201528181611b750152611e7c01526127965ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610771578063ef8b30f714610790578063f29177c3146107af578063f2fde38b146107e3578063f3fef3a314610802578063ffa1ad7414610821575f80fd5b8063c804b1151461067e578063ce96cb771461069d578063d905777e146106bc578063dd62ed3e146106db578063e15fc3501461071f578063e2c8bde51461073e575f80fd5b806393b89a841161010f57806393b89a84146105ba57806395d89b41146105d957806397feb23c146105ed578063a9059cbb1461060c578063c166c4581461062b578063c6e6f5921461065f575f80fd5b80635ea1d6f81461051457806360df7c6c1461052957806370a0823114610555578063715018a6146105895780638da5cb5b1461059d575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146103d35780634b6a94cc146104a75780634bf69206146104e25780634cdad506146104f5575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b3334610835565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b3660046122eb565b61094a565b3480156102ab575f80fd5b506102b46109e6565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e13660046122eb565b6109f4565b6040516102be9190612316565b3480156102fe575f80fd5b5061027b61030d366004612350565b610b12565b34801561031d575f80fd5b50610326610b73565b6040516102be919061236b565b34801561033e575f80fd5b506102b461034d3660046122eb565b610c03565b34801561035d575f80fd5b5061037161036c3660046123a0565b610c38565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b3660046122eb565b610c51565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123a0565b610c7a565b3480156103de575f80fd5b506102b461271081565b3480156103f3575f80fd5b506102b4610d19565b348015610407575f80fd5b506103716104163660046123ca565b610d22565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d45565b34801561048b575f80fd5b5061027b61049a3660046122eb565b610d51565b61027b610d67565b3480156104b2575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b6104f0366004612350565b610d71565b348015610500575f80fd5b506102b461050f3660046122eb565b610da6565b34801561051f575f80fd5b506102b460015481565b348015610534575f80fd5b50610548610543366004612350565b610db0565b6040516102be9190612408565b348015610560575f80fd5b506102b461056f366004612350565b6001600160a01b03165f9081526004602052604090205490565b348015610594575f80fd5b5061027b610e19565b3480156105a8575f80fd5b506009546001600160a01b0316610439565b3480156105c5575f80fd5b506105486105d436600461244b565b610e2a565b3480156105e4575f80fd5b50610326610f38565b3480156105f8575f80fd5b506102b46106073660046123a0565b610f47565b348015610617575f80fd5b506103716106263660046123a0565b610f72565b348015610636575f80fd5b506102b4610645366004612350565b6001600160a01b03165f9081526002602052604090205490565b34801561066a575f80fd5b506102b46106793660046122eb565b610f7f565b348015610689575f80fd5b5061027b6106983660046122eb565b610fa7565b3480156106a8575f80fd5b506102b46106b7366004612350565b610fba565b3480156106c7575f80fd5b506102b46106d6366004612350565b610fdb565b3480156106e6575f80fd5b506102b46106f5366004612485565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561072a575f80fd5b5061027b6107393660046123a0565b610ff8565b348015610749575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b34801561077c575f80fd5b5061027b61078b3660046123a0565b6110cb565b34801561079b575f80fd5b506102b46107aa3660046122eb565b611199565b3480156107ba575f80fd5b506104396107c93660046122eb565b60036020525f90815260409020546001600160a01b031681565b3480156107ee575f80fd5b5061027b6107fd366004612350565b6111a3565b34801561080d575f80fd5b5061027b61081c3660046123a0565b6111dd565b34801561082c575f80fd5b506102b4600181565b478190035f61084382611272565b905080156108545761085481611286565b6001600160a01b0384161561092d575f818361086e6112df565b010390505f6108868561088060065490565b846113e6565b90505f81116108dc5760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108e68682611408565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b818301818103908214610943576109438161143c565b5050505050565b6109526114af565b6127108111156109a45760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108d3565b6109ae5f80610835565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f6109ef6114dc565b905090565b5f805f610a00846114f3565b935093505050815f03610a1657505f9392505050565b6002816002811115610a2a57610a2a612302565b03610a39575060059392505050565b6001816002811115610a4d57610a4d612302565b03610a5c575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add91906124b1565b8301905082421015610af457506001949350505050565b80421015610b0757506002949350505050565b506004949350505050565b610b1a6114af565b610b245f80610835565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b82906124c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906124c8565b8015610bf95780601f10610bd057610100808354040283529160200191610bf9565b820191905f5260205f20905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b5f80610c0e60065490565b90508015610c2f57610c2a610c216109e6565b8490835f611593565b610c31565b825b9392505050565b5f33610c458185856115e2565b60019150505b92915050565b5f80610c5c60065490565b90508015610c2f57610c2a81610c706109e6565b8591906001611593565b816001600160a01b038116610ca15760405162461bcd60e51b81526004016108d390612500565b610cab5f80610835565b5f610cb583610da6565b9050610cc133846115ef565b610ccc338583611623565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f6109ef61178d565b5f33610d2f8582856117a2565b610d3a85858561181d565b506001949350505050565b610d4f5f80610835565b565b610d5b5f80610835565b610d648161187a565b50565b610d4f3334610835565b806001600160a01b038116610d985760405162461bcd60e51b81526004016108d390612500565b610da28234610835565b5050565b5f610c4b82610c03565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e0d57602002820191905f5260205f20905b815481526020019060010190808311610df9575b50505050509050919050565b610e216114af565b610d4f5f6119f1565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e5e57610e5e61252a565b604051908082528060200260200182016040528015610e87578160200160208202803683370190505b5091505f805b82811015610f2e576001600160a01b0386165f908152600260205260408120805483908110610ebe57610ebe61253e565b905f5260205f2001549050856005811115610edb57610edb612302565b610ee4826109f4565b6005811115610ef557610ef5612302565b03610f2557808584610f0681612566565b955081518110610f1857610f1861253e565b6020026020010181815250505b50600101610e8d565b5082525092915050565b606060088054610b82906124c8565b6002602052815f5260405f208181548110610f60575f80fd5b905f5260205f20015f91509150505481565b5f33610c4581858561181d565b5f80610f8a60065490565b90508015610c2f57610c2a81610f9e6109e6565b8591905f611593565b610fb15f80610835565b610d6481611a42565b6001600160a01b0381165f90815260046020526040812054610c4b90610da6565b6001600160a01b0381165f90815260046020526040812054610c4b565b611000611b72565b6110455760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b6110596001600160a01b0383166003611bf3565b61109c5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6110a65f80610835565b5f6110b082610da6565b90506110bc33836115ef565b6110c68382611e01565b505050565b6110d3611b72565b6111185760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b61112c6001600160a01b0383166003611bf3565b61116f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6111795f80610835565b5f61118382610c51565b905061118f33826115ef565b6110c68383611e01565b5f610c4b82610f7f565b6111ab6114af565b6001600160a01b0381166111d457604051631e4fbdf760e01b81525f60048201526024016108d3565b610d64816119f1565b816001600160a01b0381166112045760405162461bcd60e51b81526004016108d390612500565b61120e5f80610835565b5f61121883610c51565b905061122433826115ef565b61122f338585611623565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d0b565b6001545f90610c4b90839061271084611593565b5f5461129b906001600160a01b031682611f17565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136091906124b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e091906124b1565b03905090565b5f82156113fe576113f98484845f611593565b611400565b835b949350505050565b6001600160a01b0382166114315760405163ec442f0560e01b81525f60048201526024016108d3565b610da25f8383611faa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d4f5760405163118cdaa760e01b81523360048201526024016108d3565b5f6114e561178d565b6114ed6112df565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161154591815260200190565b608060405180830381865afa158015611560573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611584919061257e565b93509350935093509193509193565b5f806115a0868686612016565b90506115ab836120d5565b80156115c657505f84806115c1576115c16125ca565b868809115b156115d9576115d66001826125de565b90505b95945050505050565b6110c68383836001612101565b6001600160a01b03821661161857604051634b637e8f60e11b81525f60048201526024016108d3565b610da2825f83611faa565b5f81116116725760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170691906124b1565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f478161179982611272565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f198114611817578181101561180957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108d3565b61181784848484035f612101565b50505050565b6001600160a01b03831661184657604051634b637e8f60e11b81525f60048201526024016108d3565b6001600160a01b03821661186f5760405163ec442f0560e01b81525f60048201526024016108d3565b6110c6838383611faa565b5f818152600360205260409020546001600160a01b031633146118df5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b15801561193e575f80fd5b505af1158015611950573d5f803e3d5ffd5b505050505f8061195f836114f3565b93505092505060028081111561197757611977612302565b81600281111561198957611989612302565b036119c0575f6119b48361199c60065490565b856119a56114dc565b6119af91906125f1565b6113e6565b90506118173382611408565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b5f611ab1826114f3565b50509150505f611ac082611199565b9050611acc3382611408565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b2b575f80fd5b505af1158015611b3d573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190612604565b5f826001600160a01b03163b5f03611c0c57505f610c4b565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c4b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c729190810190612623565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611ca8575f915050610c4b565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906124b1565b14611d17575f915050610c4b565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7891906126ce565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de591906126e9565b506001600160a01b039081169088161494505050505092915050565b5f8111611e505760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ebd575f80fd5b505af1158015611ecf573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f3a5760405163cd78605960e01b81523060048201526024016108d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f83576040519150601f19603f3d011682016040523d82523d5f602084013e611f88565b606091505b50509050806110c657604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fc757506001600160a01b038216155b61200b5760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108d3565b6110c68383836121c5565b5f838302815f1985870982811083820303915050805f0361204a57838281612040576120406125ca565b0492505050610c31565b80841161206a5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ea576120ea612302565b6120f49190612733565b60ff166001149050919050565b6001600160a01b03841661212a5760405163e602df0560e01b81525f60048201526024016108d3565b6001600160a01b03831661215357604051634a1406b160e11b81525f60048201526024016108d3565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561181757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d0b91815260200190565b6001600160a01b0383166121ef578060065f8282546121e491906125de565b9091555061225f9050565b6001600160a01b0383165f90815260046020526040902054818110156122415760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108d3565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b03821661227b57600680548290039055612299565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122de91815260200190565b60405180910390a3505050565b5f602082840312156122fb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061233657634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d64575f80fd5b5f60208284031215612360575f80fd5b8135610c318161233c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123b1575f80fd5b82356123bc8161233c565b946020939093013593505050565b5f805f606084860312156123dc575f80fd5b83356123e78161233c565b925060208401356123f78161233c565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561243f57835183529284019291840191600101612423565b50909695505050505050565b5f806040838503121561245c575f80fd5b82356124678161233c565b915060208301356006811061247a575f80fd5b809150509250929050565b5f8060408385031215612496575f80fd5b82356124a18161233c565b9150602083013561247a8161233c565b5f602082840312156124c1575f80fd5b5051919050565b600181811c908216806124dc57607f821691505b6020821081036124fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161257757612577612552565b5060010190565b5f805f8060808587031215612591575f80fd5b845161259c8161233c565b8094505060208501519250604085015191506060850151600381106125bf575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c4b57610c4b612552565b81810381811115610c4b57610c4b612552565b5f60208284031215612614575f80fd5b81518015158114610c31575f80fd5b5f60208284031215612633575f80fd5b815167ffffffffffffffff8082111561264a575f80fd5b818401915084601f83011261265d575f80fd5b81518181111561266f5761266f61252a565b604051601f8201601f19908116603f011681019083821181831017156126975761269761252a565b816040528281528760208487010111156126af575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126de575f80fd5b8151610c318161233c565b5f805f606084860312156126fb575f80fd5b83516127068161233c565b60208501519093506127178161233c565b60408501519092506127288161233c565b809150509250925092565b5f60ff83168061275157634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220fc04e3c74fec64bb320728f9054b246b1396c6a458c033b73ace2cb1de1f11bd64736f6c63430008190033", } // PublicDelegationABI is the input ABI used to generate the binding from. @@ -38368,10 +39312,10 @@ var PublicDelegationMetaData = &bind.MetaData{ var PublicDelegationABI = PublicDelegationMetaData.ABI // PublicDelegationBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const PublicDelegationBinRuntime = `60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610786578063ef8b30f7146107a5578063f29177c3146107c4578063f2fde38b146107f8578063f3fef3a314610817578063ffa1ad7414610836575f80fd5b8063c804b11514610693578063ce96cb77146106b2578063d905777e146106d1578063dd62ed3e146106f0578063e15fc35014610734578063e2c8bde514610753575f80fd5b806393b89a841161010f57806393b89a84146105cf57806395d89b41146105ee57806397feb23c14610602578063a9059cbb14610621578063c166c45814610640578063c6e6f59214610674575f80fd5b80635ea1d6f81461052957806360df7c6c1461053e57806370a082311461056a578063715018a61461059e5780638da5cb5b146105b2575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146104a75780634b6a94cc146104bc5780634bf69206146104f75780634cdad5061461050a575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b333461084a565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b366004612300565b61095f565b3480156102ab575f80fd5b506102b46109fb565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e1366004612300565b610a09565b6040516102be919061232b565b3480156102fe575f80fd5b5061027b61030d366004612365565b610b27565b34801561031d575f80fd5b50610326610b88565b6040516102be9190612380565b34801561033e575f80fd5b506102b461034d366004612300565b610c18565b34801561035d575f80fd5b5061037161036c3660046123b5565b610c4d565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b366004612300565b610c66565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123b5565b610c8f565b3480156103de575f80fd5b506102b4610bb881565b3480156103f3575f80fd5b506102b4610d2e565b348015610407575f80fd5b506103716104163660046123df565b610d37565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d5a565b34801561048b575f80fd5b5061027b61049a366004612300565b610d66565b61027b610d7c565b3480156104b2575f80fd5b506102b461271081565b3480156104c7575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b610505366004612365565b610d86565b348015610515575f80fd5b506102b4610524366004612300565b610dbb565b348015610534575f80fd5b506102b460015481565b348015610549575f80fd5b5061055d610558366004612365565b610dc5565b6040516102be919061241d565b348015610575575f80fd5b506102b4610584366004612365565b6001600160a01b03165f9081526004602052604090205490565b3480156105a9575f80fd5b5061027b610e2e565b3480156105bd575f80fd5b506009546001600160a01b0316610439565b3480156105da575f80fd5b5061055d6105e9366004612460565b610e3f565b3480156105f9575f80fd5b50610326610f4d565b34801561060d575f80fd5b506102b461061c3660046123b5565b610f5c565b34801561062c575f80fd5b5061037161063b3660046123b5565b610f87565b34801561064b575f80fd5b506102b461065a366004612365565b6001600160a01b03165f9081526002602052604090205490565b34801561067f575f80fd5b506102b461068e366004612300565b610f94565b34801561069e575f80fd5b5061027b6106ad366004612300565b610fbc565b3480156106bd575f80fd5b506102b46106cc366004612365565b610fcf565b3480156106dc575f80fd5b506102b46106eb366004612365565b610ff0565b3480156106fb575f80fd5b506102b461070a36600461249a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561073f575f80fd5b5061027b61074e3660046123b5565b61100d565b34801561075e575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b348015610791575f80fd5b5061027b6107a03660046123b5565b6110e0565b3480156107b0575f80fd5b506102b46107bf366004612300565b6111ae565b3480156107cf575f80fd5b506104396107de366004612300565b60036020525f90815260409020546001600160a01b031681565b348015610803575f80fd5b5061027b610812366004612365565b6111b8565b348015610822575f80fd5b5061027b6108313660046123b5565b6111f2565b348015610841575f80fd5b506102b4600181565b478190035f61085882611287565b90508015610869576108698161129b565b6001600160a01b03841615610942575f81836108836112f4565b010390505f61089b8561089560065490565b846113fb565b90505f81116108f15760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108fb868261141d565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b8183018181039082146109585761095881611451565b5050505050565b6109676114c4565b610bb88111156109b95760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108e8565b6109c35f8061084a565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f610a046114f1565b905090565b5f805f610a1584611508565b935093505050815f03610a2b57505f9392505050565b6002816002811115610a3f57610a3f612317565b03610a4e575060059392505050565b6001816002811115610a6257610a62612317565b03610a71575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af291906124c6565b8301905082421015610b0957506001949350505050565b80421015610b1c57506002949350505050565b506004949350505050565b610b2f6114c4565b610b395f8061084a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b97906124dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc3906124dd565b8015610c0e5780601f10610be557610100808354040283529160200191610c0e565b820191905f5260205f20905b815481529060010190602001808311610bf157829003601f168201915b5050505050905090565b5f80610c2360065490565b90508015610c4457610c3f610c366109fb565b8490835f6115a8565b610c46565b825b9392505050565b5f33610c5a8185856115f7565b60019150505b92915050565b5f80610c7160065490565b90508015610c4457610c3f81610c856109fb565b85919060016115a8565b816001600160a01b038116610cb65760405162461bcd60e51b81526004016108e890612515565b610cc05f8061084a565b5f610cca83610dbb565b9050610cd63384611604565b610ce1338583611638565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f610a046117a2565b5f33610d448582856117b7565b610d4f858585611832565b506001949350505050565b610d645f8061084a565b565b610d705f8061084a565b610d798161188f565b50565b610d64333461084a565b806001600160a01b038116610dad5760405162461bcd60e51b81526004016108e890612515565b610db7823461084a565b5050565b5f610c6082610c18565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e2257602002820191905f5260205f20905b815481526020019060010190808311610e0e575b50505050509050919050565b610e366114c4565b610d645f611a06565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e7357610e7361253f565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5091505f805b82811015610f43576001600160a01b0386165f908152600260205260408120805483908110610ed357610ed3612553565b905f5260205f2001549050856005811115610ef057610ef0612317565b610ef982610a09565b6005811115610f0a57610f0a612317565b03610f3a57808584610f1b8161257b565b955081518110610f2d57610f2d612553565b6020026020010181815250505b50600101610ea2565b5082525092915050565b606060088054610b97906124dd565b6002602052815f5260405f208181548110610f75575f80fd5b905f5260205f20015f91509150505481565b5f33610c5a818585611832565b5f80610f9f60065490565b90508015610c4457610c3f81610fb36109fb565b8591905f6115a8565b610fc65f8061084a565b610d7981611a57565b6001600160a01b0381165f90815260046020526040812054610c6090610dbb565b6001600160a01b0381165f90815260046020526040812054610c60565b611015611b87565b61105a5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b61106e6001600160a01b0383166003611c08565b6110b15760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b6110bb5f8061084a565b5f6110c582610dbb565b90506110d13383611604565b6110db8382611e16565b505050565b6110e8611b87565b61112d5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b6111416001600160a01b0383166003611c08565b6111845760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b61118e5f8061084a565b5f61119882610c66565b90506111a43382611604565b6110db8383611e16565b5f610c6082610f94565b6111c06114c4565b6001600160a01b0381166111e957604051631e4fbdf760e01b81525f60048201526024016108e8565b610d7981611a06565b816001600160a01b0381166112195760405162461bcd60e51b81526004016108e890612515565b6112235f8061084a565b5f61122d83610c66565b90506112393382611604565b611244338585611638565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d20565b6001545f90610c60908390612710846115a8565b5f546112b0906001600160a01b031682611f2c565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906124c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f591906124c6565b03905090565b5f82156114135761140e8484845f6115a8565b611415565b835b949350505050565b6001600160a01b0382166114465760405163ec442f0560e01b81525f60048201526024016108e8565b610db75f8383611fbf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156114aa575f80fd5b505af11580156114bc573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d645760405163118cdaa760e01b81523360048201526024016108e8565b5f6114fa6117a2565b6115026112f4565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161155a91815260200190565b608060405180830381865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612593565b93509350935093509193509193565b5f806115b586868661202b565b90506115c0836120ea565b80156115db57505f84806115d6576115d66125df565b868809115b156115ee576115eb6001826125f3565b90505b95945050505050565b6110db8383836001612116565b6001600160a01b03821661162d57604051634b637e8f60e11b81525f60048201526024016108e8565b610db7825f83611fbf565b5f81116116875760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b91906124c6565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f47816117ae82611287565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f19811461182c578181101561181e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108e8565b61182c84848484035f612116565b50505050565b6001600160a01b03831661185b57604051634b637e8f60e11b81525f60048201526024016108e8565b6001600160a01b0382166118845760405163ec442f0560e01b81525f60048201526024016108e8565b6110db838383611fbf565b5f818152600360205260409020546001600160a01b031633146118f45760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b158015611953575f80fd5b505af1158015611965573d5f803e3d5ffd5b505050505f8061197483611508565b93505092505060028081111561198c5761198c612317565b81600281111561199e5761199e612317565b036119d5575f6119c9836119b160065490565b856119ba6114f1565b6119c49190612606565b6113fb565b905061182c338261141d565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611abc5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b5f611ac682611508565b50509150505f611ad5826111ae565b9050611ae1338261141d565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b40575f80fd5b505af1158015611b52573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190612619565b5f826001600160a01b03163b5f03611c2157505f610c60565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c60573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c879190810190612638565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611cbd575f915050610c60565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1e91906124c6565b14611d2c575f915050610c60565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8d91906126e3565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfa91906126fe565b506001600160a01b039081169088161494505050505092915050565b5f8111611e655760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ed2575f80fd5b505af1158015611ee4573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f4f5760405163cd78605960e01b81523060048201526024016108e8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f98576040519150601f19603f3d011682016040523d82523d5f602084013e611f9d565b606091505b50509050806110db57604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fdc57506001600160a01b038216155b6120205760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108e8565b6110db8383836121da565b5f838302815f1985870982811083820303915050805f0361205f57838281612055576120556125df565b0492505050610c46565b80841161207f5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ff576120ff612317565b6121099190612748565b60ff166001149050919050565b6001600160a01b03841661213f5760405163e602df0560e01b81525f60048201526024016108e8565b6001600160a01b03831661216857604051634a1406b160e11b81525f60048201526024016108e8565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561182c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2091815260200190565b6001600160a01b038316612204578060065f8282546121f991906125f3565b909155506122749050565b6001600160a01b0383165f90815260046020526040902054818110156122565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108e8565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b038216612290576006805482900390556122ae565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f391815260200190565b60405180910390a3505050565b5f60208284031215612310575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061234b57634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d79575f80fd5b5f60208284031215612375575f80fd5b8135610c4681612351565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123c6575f80fd5b82356123d181612351565b946020939093013593505050565b5f805f606084860312156123f1575f80fd5b83356123fc81612351565b9250602084013561240c81612351565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561245457835183529284019291840191600101612438565b50909695505050505050565b5f8060408385031215612471575f80fd5b823561247c81612351565b915060208301356006811061248f575f80fd5b809150509250929050565b5f80604083850312156124ab575f80fd5b82356124b681612351565b9150602083013561248f81612351565b5f602082840312156124d6575f80fd5b5051919050565b600181811c908216806124f157607f821691505b60208210810361250f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161258c5761258c612567565b5060010190565b5f805f80608085870312156125a6575f80fd5b84516125b181612351565b8094505060208501519250604085015191506060850151600381106125d4575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c6057610c60612567565b81810381811115610c6057610c60612567565b5f60208284031215612629575f80fd5b81518015158114610c46575f80fd5b5f60208284031215612648575f80fd5b815167ffffffffffffffff8082111561265f575f80fd5b818401915084601f830112612672575f80fd5b8151818111156126845761268461253f565b604051601f8201601f19908116603f011681019083821181831017156126ac576126ac61253f565b816040528281528760208487010111156126c4575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126f3575f80fd5b8151610c4681612351565b5f805f60608486031215612710575f80fd5b835161271b81612351565b602085015190935061272c81612351565b604085015190925061273d81612351565b809150509250925092565b5f60ff83168061276657634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220ea53752c150b476c6f0f4392c2cb6364876f1c3cc11545bb3d969c976cfdfef264736f6c63430008190033` +const PublicDelegationBinRuntime = `60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610771578063ef8b30f714610790578063f29177c3146107af578063f2fde38b146107e3578063f3fef3a314610802578063ffa1ad7414610821575f80fd5b8063c804b1151461067e578063ce96cb771461069d578063d905777e146106bc578063dd62ed3e146106db578063e15fc3501461071f578063e2c8bde51461073e575f80fd5b806393b89a841161010f57806393b89a84146105ba57806395d89b41146105d957806397feb23c146105ed578063a9059cbb1461060c578063c166c4581461062b578063c6e6f5921461065f575f80fd5b80635ea1d6f81461051457806360df7c6c1461052957806370a0823114610555578063715018a6146105895780638da5cb5b1461059d575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146103d35780634b6a94cc146104a75780634bf69206146104e25780634cdad506146104f5575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b3334610835565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b3660046122eb565b61094a565b3480156102ab575f80fd5b506102b46109e6565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e13660046122eb565b6109f4565b6040516102be9190612316565b3480156102fe575f80fd5b5061027b61030d366004612350565b610b12565b34801561031d575f80fd5b50610326610b73565b6040516102be919061236b565b34801561033e575f80fd5b506102b461034d3660046122eb565b610c03565b34801561035d575f80fd5b5061037161036c3660046123a0565b610c38565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b3660046122eb565b610c51565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123a0565b610c7a565b3480156103de575f80fd5b506102b461271081565b3480156103f3575f80fd5b506102b4610d19565b348015610407575f80fd5b506103716104163660046123ca565b610d22565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d45565b34801561048b575f80fd5b5061027b61049a3660046122eb565b610d51565b61027b610d67565b3480156104b2575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b6104f0366004612350565b610d71565b348015610500575f80fd5b506102b461050f3660046122eb565b610da6565b34801561051f575f80fd5b506102b460015481565b348015610534575f80fd5b50610548610543366004612350565b610db0565b6040516102be9190612408565b348015610560575f80fd5b506102b461056f366004612350565b6001600160a01b03165f9081526004602052604090205490565b348015610594575f80fd5b5061027b610e19565b3480156105a8575f80fd5b506009546001600160a01b0316610439565b3480156105c5575f80fd5b506105486105d436600461244b565b610e2a565b3480156105e4575f80fd5b50610326610f38565b3480156105f8575f80fd5b506102b46106073660046123a0565b610f47565b348015610617575f80fd5b506103716106263660046123a0565b610f72565b348015610636575f80fd5b506102b4610645366004612350565b6001600160a01b03165f9081526002602052604090205490565b34801561066a575f80fd5b506102b46106793660046122eb565b610f7f565b348015610689575f80fd5b5061027b6106983660046122eb565b610fa7565b3480156106a8575f80fd5b506102b46106b7366004612350565b610fba565b3480156106c7575f80fd5b506102b46106d6366004612350565b610fdb565b3480156106e6575f80fd5b506102b46106f5366004612485565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561072a575f80fd5b5061027b6107393660046123a0565b610ff8565b348015610749575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b34801561077c575f80fd5b5061027b61078b3660046123a0565b6110cb565b34801561079b575f80fd5b506102b46107aa3660046122eb565b611199565b3480156107ba575f80fd5b506104396107c93660046122eb565b60036020525f90815260409020546001600160a01b031681565b3480156107ee575f80fd5b5061027b6107fd366004612350565b6111a3565b34801561080d575f80fd5b5061027b61081c3660046123a0565b6111dd565b34801561082c575f80fd5b506102b4600181565b478190035f61084382611272565b905080156108545761085481611286565b6001600160a01b0384161561092d575f818361086e6112df565b010390505f6108868561088060065490565b846113e6565b90505f81116108dc5760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108e68682611408565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b818301818103908214610943576109438161143c565b5050505050565b6109526114af565b6127108111156109a45760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108d3565b6109ae5f80610835565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f6109ef6114dc565b905090565b5f805f610a00846114f3565b935093505050815f03610a1657505f9392505050565b6002816002811115610a2a57610a2a612302565b03610a39575060059392505050565b6001816002811115610a4d57610a4d612302565b03610a5c575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add91906124b1565b8301905082421015610af457506001949350505050565b80421015610b0757506002949350505050565b506004949350505050565b610b1a6114af565b610b245f80610835565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b82906124c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906124c8565b8015610bf95780601f10610bd057610100808354040283529160200191610bf9565b820191905f5260205f20905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b5f80610c0e60065490565b90508015610c2f57610c2a610c216109e6565b8490835f611593565b610c31565b825b9392505050565b5f33610c458185856115e2565b60019150505b92915050565b5f80610c5c60065490565b90508015610c2f57610c2a81610c706109e6565b8591906001611593565b816001600160a01b038116610ca15760405162461bcd60e51b81526004016108d390612500565b610cab5f80610835565b5f610cb583610da6565b9050610cc133846115ef565b610ccc338583611623565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f6109ef61178d565b5f33610d2f8582856117a2565b610d3a85858561181d565b506001949350505050565b610d4f5f80610835565b565b610d5b5f80610835565b610d648161187a565b50565b610d4f3334610835565b806001600160a01b038116610d985760405162461bcd60e51b81526004016108d390612500565b610da28234610835565b5050565b5f610c4b82610c03565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e0d57602002820191905f5260205f20905b815481526020019060010190808311610df9575b50505050509050919050565b610e216114af565b610d4f5f6119f1565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e5e57610e5e61252a565b604051908082528060200260200182016040528015610e87578160200160208202803683370190505b5091505f805b82811015610f2e576001600160a01b0386165f908152600260205260408120805483908110610ebe57610ebe61253e565b905f5260205f2001549050856005811115610edb57610edb612302565b610ee4826109f4565b6005811115610ef557610ef5612302565b03610f2557808584610f0681612566565b955081518110610f1857610f1861253e565b6020026020010181815250505b50600101610e8d565b5082525092915050565b606060088054610b82906124c8565b6002602052815f5260405f208181548110610f60575f80fd5b905f5260205f20015f91509150505481565b5f33610c4581858561181d565b5f80610f8a60065490565b90508015610c2f57610c2a81610f9e6109e6565b8591905f611593565b610fb15f80610835565b610d6481611a42565b6001600160a01b0381165f90815260046020526040812054610c4b90610da6565b6001600160a01b0381165f90815260046020526040812054610c4b565b611000611b72565b6110455760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b6110596001600160a01b0383166003611bf3565b61109c5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6110a65f80610835565b5f6110b082610da6565b90506110bc33836115ef565b6110c68382611e01565b505050565b6110d3611b72565b6111185760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b61112c6001600160a01b0383166003611bf3565b61116f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6111795f80610835565b5f61118382610c51565b905061118f33826115ef565b6110c68383611e01565b5f610c4b82610f7f565b6111ab6114af565b6001600160a01b0381166111d457604051631e4fbdf760e01b81525f60048201526024016108d3565b610d64816119f1565b816001600160a01b0381166112045760405162461bcd60e51b81526004016108d390612500565b61120e5f80610835565b5f61121883610c51565b905061122433826115ef565b61122f338585611623565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d0b565b6001545f90610c4b90839061271084611593565b5f5461129b906001600160a01b031682611f17565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136091906124b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e091906124b1565b03905090565b5f82156113fe576113f98484845f611593565b611400565b835b949350505050565b6001600160a01b0382166114315760405163ec442f0560e01b81525f60048201526024016108d3565b610da25f8383611faa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d4f5760405163118cdaa760e01b81523360048201526024016108d3565b5f6114e561178d565b6114ed6112df565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161154591815260200190565b608060405180830381865afa158015611560573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611584919061257e565b93509350935093509193509193565b5f806115a0868686612016565b90506115ab836120d5565b80156115c657505f84806115c1576115c16125ca565b868809115b156115d9576115d66001826125de565b90505b95945050505050565b6110c68383836001612101565b6001600160a01b03821661161857604051634b637e8f60e11b81525f60048201526024016108d3565b610da2825f83611faa565b5f81116116725760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170691906124b1565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f478161179982611272565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f198114611817578181101561180957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108d3565b61181784848484035f612101565b50505050565b6001600160a01b03831661184657604051634b637e8f60e11b81525f60048201526024016108d3565b6001600160a01b03821661186f5760405163ec442f0560e01b81525f60048201526024016108d3565b6110c6838383611faa565b5f818152600360205260409020546001600160a01b031633146118df5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b15801561193e575f80fd5b505af1158015611950573d5f803e3d5ffd5b505050505f8061195f836114f3565b93505092505060028081111561197757611977612302565b81600281111561198957611989612302565b036119c0575f6119b48361199c60065490565b856119a56114dc565b6119af91906125f1565b6113e6565b90506118173382611408565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b5f611ab1826114f3565b50509150505f611ac082611199565b9050611acc3382611408565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b2b575f80fd5b505af1158015611b3d573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190612604565b5f826001600160a01b03163b5f03611c0c57505f610c4b565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c4b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c729190810190612623565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611ca8575f915050610c4b565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906124b1565b14611d17575f915050610c4b565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7891906126ce565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de591906126e9565b506001600160a01b039081169088161494505050505092915050565b5f8111611e505760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ebd575f80fd5b505af1158015611ecf573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f3a5760405163cd78605960e01b81523060048201526024016108d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f83576040519150601f19603f3d011682016040523d82523d5f602084013e611f88565b606091505b50509050806110c657604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fc757506001600160a01b038216155b61200b5760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108d3565b6110c68383836121c5565b5f838302815f1985870982811083820303915050805f0361204a57838281612040576120406125ca565b0492505050610c31565b80841161206a5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ea576120ea612302565b6120f49190612733565b60ff166001149050919050565b6001600160a01b03841661212a5760405163e602df0560e01b81525f60048201526024016108d3565b6001600160a01b03831661215357604051634a1406b160e11b81525f60048201526024016108d3565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561181757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d0b91815260200190565b6001600160a01b0383166121ef578060065f8282546121e491906125de565b9091555061225f9050565b6001600160a01b0383165f90815260046020526040902054818110156122415760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108d3565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b03821661227b57600680548290039055612299565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122de91815260200190565b60405180910390a3505050565b5f602082840312156122fb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061233657634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d64575f80fd5b5f60208284031215612360575f80fd5b8135610c318161233c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123b1575f80fd5b82356123bc8161233c565b946020939093013593505050565b5f805f606084860312156123dc575f80fd5b83356123e78161233c565b925060208401356123f78161233c565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561243f57835183529284019291840191600101612423565b50909695505050505050565b5f806040838503121561245c575f80fd5b82356124678161233c565b915060208301356006811061247a575f80fd5b809150509250929050565b5f8060408385031215612496575f80fd5b82356124a18161233c565b9150602083013561247a8161233c565b5f602082840312156124c1575f80fd5b5051919050565b600181811c908216806124dc57607f821691505b6020821081036124fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161257757612577612552565b5060010190565b5f805f8060808587031215612591575f80fd5b845161259c8161233c565b8094505060208501519250604085015191506060850151600381106125bf575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c4b57610c4b612552565b81810381811115610c4b57610c4b612552565b5f60208284031215612614575f80fd5b81518015158114610c31575f80fd5b5f60208284031215612633575f80fd5b815167ffffffffffffffff8082111561264a575f80fd5b818401915084601f83011261265d575f80fd5b81518181111561266f5761266f61252a565b604051601f8201601f19908116603f011681019083821181831017156126975761269761252a565b816040528281528760208487010111156126af575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126de575f80fd5b8151610c318161233c565b5f805f606084860312156126fb575f80fd5b83516127068161233c565b60208501519093506127178161233c565b60408501519092506127288161233c565b809150509250925092565b5f60ff83168061275157634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220fc04e3c74fec64bb320728f9054b246b1396c6a458c033b73ace2cb1de1f11bd64736f6c63430008190033` -// PublicDelegationFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use PublicDelegationMetaData.Sigs instead. +// PublicDelegationFuncSigs maps the 4-byte function signature to its string representation. var PublicDelegationFuncSigs = PublicDelegationMetaData.Sigs // PublicDelegationBin is the compiled bytecode used for deploying new contracts. @@ -38543,6 +39487,7 @@ func (_PublicDelegation *PublicDelegationTransactorRaw) Transact(opts *bind.Tran func (_PublicDelegation *PublicDelegationCaller) COMMISSIONDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "COMMISSION_DENOMINATOR") + if err != nil { return *new(*big.Int), err } @@ -38550,6 +39495,7 @@ func (_PublicDelegation *PublicDelegationCaller) COMMISSIONDENOMINATOR(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // COMMISSIONDENOMINATOR is a free data retrieval call binding the contract method 0x3b1dbfcc. @@ -38572,6 +39518,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) COMMISSIONDENOMINATOR() func (_PublicDelegation *PublicDelegationCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -38579,6 +39526,7 @@ func (_PublicDelegation *PublicDelegationCaller) CONTRACTTYPE(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -38601,6 +39549,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) CONTRACTTYPE() (string, func (_PublicDelegation *PublicDelegationCaller) MAXCOMMISSIONRATE(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "MAX_COMMISSION_RATE") + if err != nil { return *new(*big.Int), err } @@ -38608,6 +39557,7 @@ func (_PublicDelegation *PublicDelegationCaller) MAXCOMMISSIONRATE(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXCOMMISSIONRATE is a free data retrieval call binding the contract method 0x207239c0. @@ -38630,6 +39580,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) MAXCOMMISSIONRATE() (*bi func (_PublicDelegation *PublicDelegationCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -38637,6 +39588,7 @@ func (_PublicDelegation *PublicDelegationCaller) VERSION(opts *bind.CallOpts) (* out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -38659,6 +39611,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) VERSION() (*big.Int, err func (_PublicDelegation *PublicDelegationCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -38666,6 +39619,7 @@ func (_PublicDelegation *PublicDelegationCaller) Allowance(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -38688,6 +39642,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Allowance(owner common.A func (_PublicDelegation *PublicDelegationCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -38695,6 +39650,7 @@ func (_PublicDelegation *PublicDelegationCaller) BalanceOf(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -38717,6 +39673,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) BalanceOf(account common func (_PublicDelegation *PublicDelegationCaller) BaseCnStakingV3(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "baseCnStakingV3") + if err != nil { return *new(common.Address), err } @@ -38724,6 +39681,7 @@ func (_PublicDelegation *PublicDelegationCaller) BaseCnStakingV3(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // BaseCnStakingV3 is a free data retrieval call binding the contract method 0xe2c8bde5. @@ -38746,6 +39704,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) BaseCnStakingV3() (commo func (_PublicDelegation *PublicDelegationCaller) CommissionRate(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "commissionRate") + if err != nil { return *new(*big.Int), err } @@ -38753,6 +39712,7 @@ func (_PublicDelegation *PublicDelegationCaller) CommissionRate(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // CommissionRate is a free data retrieval call binding the contract method 0x5ea1d6f8. @@ -38775,6 +39735,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) CommissionRate() (*big.I func (_PublicDelegation *PublicDelegationCaller) CommissionTo(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "commissionTo") + if err != nil { return *new(common.Address), err } @@ -38782,6 +39743,7 @@ func (_PublicDelegation *PublicDelegationCaller) CommissionTo(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CommissionTo is a free data retrieval call binding the contract method 0x2f9ac83a. @@ -38804,6 +39766,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) CommissionTo() (common.A func (_PublicDelegation *PublicDelegationCaller) ConvertToAssets(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "convertToAssets", _shares) + if err != nil { return *new(*big.Int), err } @@ -38811,6 +39774,7 @@ func (_PublicDelegation *PublicDelegationCaller) ConvertToAssets(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToAssets is a free data retrieval call binding the contract method 0x07a2d13a. @@ -38833,6 +39797,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) ConvertToAssets(_shares func (_PublicDelegation *PublicDelegationCaller) ConvertToShares(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "convertToShares", _assets) + if err != nil { return *new(*big.Int), err } @@ -38840,6 +39805,7 @@ func (_PublicDelegation *PublicDelegationCaller) ConvertToShares(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToShares is a free data retrieval call binding the contract method 0xc6e6f592. @@ -38862,6 +39828,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) ConvertToShares(_assets func (_PublicDelegation *PublicDelegationCaller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "decimals") + if err != nil { return *new(uint8), err } @@ -38869,6 +39836,7 @@ func (_PublicDelegation *PublicDelegationCaller) Decimals(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Decimals is a free data retrieval call binding the contract method 0x313ce567. @@ -38891,6 +39859,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Decimals() (uint8, error func (_PublicDelegation *PublicDelegationCaller) GetCurrentWithdrawalRequestState(opts *bind.CallOpts, _id *big.Int) (uint8, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "getCurrentWithdrawalRequestState", _id) + if err != nil { return *new(uint8), err } @@ -38898,6 +39867,7 @@ func (_PublicDelegation *PublicDelegationCaller) GetCurrentWithdrawalRequestStat out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetCurrentWithdrawalRequestState is a free data retrieval call binding the contract method 0x04ddc9d1. @@ -38920,6 +39890,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) GetCurrentWithdrawalRequ func (_PublicDelegation *PublicDelegationCaller) GetUserRequestCount(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "getUserRequestCount", _owner) + if err != nil { return *new(*big.Int), err } @@ -38927,6 +39898,7 @@ func (_PublicDelegation *PublicDelegationCaller) GetUserRequestCount(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetUserRequestCount is a free data retrieval call binding the contract method 0xc166c458. @@ -38949,6 +39921,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) GetUserRequestCount(_own func (_PublicDelegation *PublicDelegationCaller) GetUserRequestIds(opts *bind.CallOpts, _owner common.Address) ([]*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "getUserRequestIds", _owner) + if err != nil { return *new([]*big.Int), err } @@ -38956,6 +39929,7 @@ func (_PublicDelegation *PublicDelegationCaller) GetUserRequestIds(opts *bind.Ca out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIds is a free data retrieval call binding the contract method 0x60df7c6c. @@ -38978,6 +39952,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) GetUserRequestIds(_owner func (_PublicDelegation *PublicDelegationCaller) GetUserRequestIdsWithState(opts *bind.CallOpts, _owner common.Address, _state uint8) ([]*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "getUserRequestIdsWithState", _owner, _state) + if err != nil { return *new([]*big.Int), err } @@ -38985,6 +39960,7 @@ func (_PublicDelegation *PublicDelegationCaller) GetUserRequestIdsWithState(opts out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIdsWithState is a free data retrieval call binding the contract method 0x93b89a84. @@ -39007,6 +39983,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) GetUserRequestIdsWithSta func (_PublicDelegation *PublicDelegationCaller) MaxRedeem(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "maxRedeem", _owner) + if err != nil { return *new(*big.Int), err } @@ -39014,6 +39991,7 @@ func (_PublicDelegation *PublicDelegationCaller) MaxRedeem(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxRedeem is a free data retrieval call binding the contract method 0xd905777e. @@ -39036,6 +40014,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) MaxRedeem(_owner common. func (_PublicDelegation *PublicDelegationCaller) MaxWithdraw(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "maxWithdraw", _owner) + if err != nil { return *new(*big.Int), err } @@ -39043,6 +40022,7 @@ func (_PublicDelegation *PublicDelegationCaller) MaxWithdraw(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxWithdraw is a free data retrieval call binding the contract method 0xce96cb77. @@ -39065,6 +40045,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) MaxWithdraw(_owner commo func (_PublicDelegation *PublicDelegationCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -39072,6 +40053,7 @@ func (_PublicDelegation *PublicDelegationCaller) Name(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -39094,6 +40076,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Name() (string, error) { func (_PublicDelegation *PublicDelegationCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -39101,6 +40084,7 @@ func (_PublicDelegation *PublicDelegationCaller) Owner(opts *bind.CallOpts) (com out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -39123,6 +40107,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Owner() (common.Address, func (_PublicDelegation *PublicDelegationCaller) PreviewDeposit(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "previewDeposit", _assets) + if err != nil { return *new(*big.Int), err } @@ -39130,6 +40115,7 @@ func (_PublicDelegation *PublicDelegationCaller) PreviewDeposit(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewDeposit is a free data retrieval call binding the contract method 0xef8b30f7. @@ -39152,6 +40138,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) PreviewDeposit(_assets * func (_PublicDelegation *PublicDelegationCaller) PreviewRedeem(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "previewRedeem", _shares) + if err != nil { return *new(*big.Int), err } @@ -39159,6 +40146,7 @@ func (_PublicDelegation *PublicDelegationCaller) PreviewRedeem(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewRedeem is a free data retrieval call binding the contract method 0x4cdad506. @@ -39181,6 +40169,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) PreviewRedeem(_shares *b func (_PublicDelegation *PublicDelegationCaller) PreviewWithdraw(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "previewWithdraw", _assets) + if err != nil { return *new(*big.Int), err } @@ -39188,6 +40177,7 @@ func (_PublicDelegation *PublicDelegationCaller) PreviewWithdraw(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewWithdraw is a free data retrieval call binding the contract method 0x0a28a477. @@ -39210,6 +40200,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) PreviewWithdraw(_assets func (_PublicDelegation *PublicDelegationCaller) RequestIdToOwner(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "requestIdToOwner", arg0) + if err != nil { return *new(common.Address), err } @@ -39217,6 +40208,7 @@ func (_PublicDelegation *PublicDelegationCaller) RequestIdToOwner(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RequestIdToOwner is a free data retrieval call binding the contract method 0xf29177c3. @@ -39239,6 +40231,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) RequestIdToOwner(arg0 *b func (_PublicDelegation *PublicDelegationCaller) Reward(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "reward") + if err != nil { return *new(*big.Int), err } @@ -39246,6 +40239,7 @@ func (_PublicDelegation *PublicDelegationCaller) Reward(opts *bind.CallOpts) (*b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Reward is a free data retrieval call binding the contract method 0x228cb733. @@ -39268,6 +40262,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Reward() (*big.Int, erro func (_PublicDelegation *PublicDelegationCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -39275,6 +40270,7 @@ func (_PublicDelegation *PublicDelegationCaller) Symbol(opts *bind.CallOpts) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -39297,6 +40293,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) Symbol() (string, error) func (_PublicDelegation *PublicDelegationCaller) TotalAssets(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "totalAssets") + if err != nil { return *new(*big.Int), err } @@ -39304,6 +40301,7 @@ func (_PublicDelegation *PublicDelegationCaller) TotalAssets(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalAssets is a free data retrieval call binding the contract method 0x01e1d114. @@ -39326,6 +40324,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) TotalAssets() (*big.Int, func (_PublicDelegation *PublicDelegationCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -39333,6 +40332,7 @@ func (_PublicDelegation *PublicDelegationCaller) TotalSupply(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -39355,6 +40355,7 @@ func (_PublicDelegation *PublicDelegationCallerSession) TotalSupply() (*big.Int, func (_PublicDelegation *PublicDelegationCaller) UserRequestIds(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegation.contract.Call(opts, &out, "userRequestIds", arg0, arg1) + if err != nil { return *new(*big.Int), err } @@ -39362,6 +40363,7 @@ func (_PublicDelegation *PublicDelegationCaller) UserRequestIds(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // UserRequestIds is a free data retrieval call binding the contract method 0x97feb23c. @@ -39814,6 +40816,7 @@ type PublicDelegationApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_PublicDelegation *PublicDelegationFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*PublicDelegationApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -39834,6 +40837,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterApproval(opts *bind.Fil // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_PublicDelegation *PublicDelegationFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *PublicDelegationApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -39883,6 +40887,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseApproval(log types.Log) if err := _PublicDelegation.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -39964,6 +40969,7 @@ type PublicDelegationClaimed struct { // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_PublicDelegation *PublicDelegationFilterer) FilterClaimed(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*PublicDelegationClaimedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -39984,6 +40990,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterClaimed(opts *bind.Filt // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_PublicDelegation *PublicDelegationFilterer) WatchClaimed(opts *bind.WatchOpts, sink chan<- *PublicDelegationClaimed, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40033,6 +41040,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseClaimed(log types.Log) ( if err := _PublicDelegation.contract.UnpackLog(event, "Claimed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40115,6 +41123,7 @@ type PublicDelegationDeployContract struct { // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_PublicDelegation *PublicDelegationFilterer) FilterDeployContract(opts *bind.FilterOpts) (*PublicDelegationDeployContractIterator, error) { + logs, sub, err := _PublicDelegation.contract.FilterLogs(opts, "DeployContract") if err != nil { return nil, err @@ -40126,6 +41135,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterDeployContract(opts *bi // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_PublicDelegation *PublicDelegationFilterer) WatchDeployContract(opts *bind.WatchOpts, sink chan<- *PublicDelegationDeployContract) (event.Subscription, error) { + logs, sub, err := _PublicDelegation.contract.WatchLogs(opts, "DeployContract") if err != nil { return nil, err @@ -40166,6 +41176,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseDeployContract(log types if err := _PublicDelegation.contract.UnpackLog(event, "DeployContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40247,6 +41258,7 @@ type PublicDelegationOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_PublicDelegation *PublicDelegationFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PublicDelegationOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -40267,6 +41279,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterOwnershipTransferred(op // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_PublicDelegation *PublicDelegationFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PublicDelegationOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -40316,6 +41329,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseOwnershipTransferred(log if err := _PublicDelegation.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40399,6 +41413,7 @@ type PublicDelegationRedeemed struct { // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_PublicDelegation *PublicDelegationFilterer) FilterRedeemed(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address) (*PublicDelegationRedeemedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40419,6 +41434,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterRedeemed(opts *bind.Fil // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_PublicDelegation *PublicDelegationFilterer) WatchRedeemed(opts *bind.WatchOpts, sink chan<- *PublicDelegationRedeemed, _user []common.Address, _recipient []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40468,6 +41484,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseRedeemed(log types.Log) if err := _PublicDelegation.contract.UnpackLog(event, "Redeemed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40550,6 +41567,7 @@ type PublicDelegationRedelegated struct { // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_PublicDelegation *PublicDelegationFilterer) FilterRedelegated(opts *bind.FilterOpts, _user []common.Address, _targetCnV3 []common.Address) (*PublicDelegationRedelegatedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40570,6 +41588,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterRedelegated(opts *bind. // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_PublicDelegation *PublicDelegationFilterer) WatchRedelegated(opts *bind.WatchOpts, sink chan<- *PublicDelegationRedelegated, _user []common.Address, _targetCnV3 []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40619,6 +41638,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseRedelegated(log types.Lo if err := _PublicDelegation.contract.UnpackLog(event, "Redelegated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40700,6 +41720,7 @@ type PublicDelegationRequestCancelWithdrawal struct { // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_PublicDelegation *PublicDelegationFilterer) FilterRequestCancelWithdrawal(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*PublicDelegationRequestCancelWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40720,6 +41741,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterRequestCancelWithdrawal // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_PublicDelegation *PublicDelegationFilterer) WatchRequestCancelWithdrawal(opts *bind.WatchOpts, sink chan<- *PublicDelegationRequestCancelWithdrawal, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40769,6 +41791,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseRequestCancelWithdrawal( if err := _PublicDelegation.contract.UnpackLog(event, "RequestCancelWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -40852,6 +41875,7 @@ type PublicDelegationRequestWithdrawal struct { // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_PublicDelegation *PublicDelegationFilterer) FilterRequestWithdrawal(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (*PublicDelegationRequestWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40876,6 +41900,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterRequestWithdrawal(opts // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_PublicDelegation *PublicDelegationFilterer) WatchRequestWithdrawal(opts *bind.WatchOpts, sink chan<- *PublicDelegationRequestWithdrawal, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -40929,6 +41954,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseRequestWithdrawal(log ty if err := _PublicDelegation.contract.UnpackLog(event, "RequestWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41010,6 +42036,7 @@ type PublicDelegationSendCommission struct { // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_PublicDelegation *PublicDelegationFilterer) FilterSendCommission(opts *bind.FilterOpts, _commissionTo []common.Address) (*PublicDelegationSendCommissionIterator, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -41026,6 +42053,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterSendCommission(opts *bi // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_PublicDelegation *PublicDelegationFilterer) WatchSendCommission(opts *bind.WatchOpts, sink chan<- *PublicDelegationSendCommission, _commissionTo []common.Address) (event.Subscription, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -41071,6 +42099,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseSendCommission(log types if err := _PublicDelegation.contract.UnpackLog(event, "SendCommission", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41153,6 +42182,7 @@ type PublicDelegationStaked struct { // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_PublicDelegation *PublicDelegationFilterer) FilterStaked(opts *bind.FilterOpts, _user []common.Address) (*PublicDelegationStakedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -41169,6 +42199,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterStaked(opts *bind.Filte // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_PublicDelegation *PublicDelegationFilterer) WatchStaked(opts *bind.WatchOpts, sink chan<- *PublicDelegationStaked, _user []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -41214,6 +42245,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseStaked(log types.Log) (* if err := _PublicDelegation.contract.UnpackLog(event, "Staked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41296,6 +42328,7 @@ type PublicDelegationTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_PublicDelegation *PublicDelegationFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*PublicDelegationTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -41316,6 +42349,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterTransfer(opts *bind.Fil // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_PublicDelegation *PublicDelegationFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *PublicDelegationTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -41365,6 +42399,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseTransfer(log types.Log) if err := _PublicDelegation.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41446,6 +42481,7 @@ type PublicDelegationUpdateCommissionRate struct { // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_PublicDelegation *PublicDelegationFilterer) FilterUpdateCommissionRate(opts *bind.FilterOpts, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (*PublicDelegationUpdateCommissionRateIterator, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -41466,6 +42502,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterUpdateCommissionRate(op // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_PublicDelegation *PublicDelegationFilterer) WatchUpdateCommissionRate(opts *bind.WatchOpts, sink chan<- *PublicDelegationUpdateCommissionRate, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (event.Subscription, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -41515,6 +42552,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseUpdateCommissionRate(log if err := _PublicDelegation.contract.UnpackLog(event, "UpdateCommissionRate", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41596,6 +42634,7 @@ type PublicDelegationUpdateCommissionTo struct { // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_PublicDelegation *PublicDelegationFilterer) FilterUpdateCommissionTo(opts *bind.FilterOpts, _prevCommissionTo []common.Address, _commissionTo []common.Address) (*PublicDelegationUpdateCommissionToIterator, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -41616,6 +42655,7 @@ func (_PublicDelegation *PublicDelegationFilterer) FilterUpdateCommissionTo(opts // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_PublicDelegation *PublicDelegationFilterer) WatchUpdateCommissionTo(opts *bind.WatchOpts, sink chan<- *PublicDelegationUpdateCommissionTo, _prevCommissionTo []common.Address, _commissionTo []common.Address) (event.Subscription, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -41665,6 +42705,7 @@ func (_PublicDelegation *PublicDelegationFilterer) ParseUpdateCommissionTo(log t if err := _PublicDelegation.contract.UnpackLog(event, "UpdateCommissionTo", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -41676,7 +42717,7 @@ var PublicDelegationFactoryMetaData = &bind.MetaData{ "ffa1ad74": "VERSION()", "787821cc": "deployPublicDelegation((address,address,uint256,string))", }, - Bin: "0x6080604052348015600e575f80fd5b5061313e8061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634b6a94cc14610043578063787821cc14610095578063ffa1ad74146100c0575b5f80fd5b61007f6040518060400160405280601781526020017f5075626c696344656c65676174696f6e466163746f727900000000000000000081525081565b60405161008c919061014b565b60405180910390f35b6100a86100a33660046101ed565b6100d6565b6040516001600160a01b03909116815260200161008c565b6100c8600181565b60405190815260200161008c565b5f33826040516100e590610110565b6100f09291906102d2565b604051809103905ff080158015610109573d5f803e3d5ffd5b5092915050565b612de08061032983390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61015d602083018461011d565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561019b5761019b610164565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101ca576101ca610164565b604052919050565b80356001600160a01b03811681146101e8575f80fd5b919050565b5f60208083850312156101fe575f80fd5b823567ffffffffffffffff80821115610215575f80fd5b9084019060808287031215610228575f80fd5b610230610178565b610239836101d2565b81526102468484016101d2565b8482015260408301356040820152606083013582811115610265575f80fd5b80840193505086601f840112610279575f80fd5b82358281111561028b5761028b610164565b61029d601f8201601f191686016101a1565b925080835287858286010111156102b2575f80fd5b80858501868501375f908301909401939093526060830152509392505050565b5f60018060a01b0380851683526040602084015280845116604084015280602085015116606084015250604083015160808301526060830151608060a084015261031f60c084018261011d565b9594505050505056fe60a060405234801561000f575f80fd5b50604051612de0380380612de083398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50610bb8816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127ab6106355f395f818161076401528181610a74015281816112f701528181611377015281816114530152818161150e015281816116af0152818161190a01528181611af701528181611b8a0152611e9101526127ab5ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610786578063ef8b30f7146107a5578063f29177c3146107c4578063f2fde38b146107f8578063f3fef3a314610817578063ffa1ad7414610836575f80fd5b8063c804b11514610693578063ce96cb77146106b2578063d905777e146106d1578063dd62ed3e146106f0578063e15fc35014610734578063e2c8bde514610753575f80fd5b806393b89a841161010f57806393b89a84146105cf57806395d89b41146105ee57806397feb23c14610602578063a9059cbb14610621578063c166c45814610640578063c6e6f59214610674575f80fd5b80635ea1d6f81461052957806360df7c6c1461053e57806370a082311461056a578063715018a61461059e5780638da5cb5b146105b2575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146104a75780634b6a94cc146104bc5780634bf69206146104f75780634cdad5061461050a575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b333461084a565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b366004612300565b61095f565b3480156102ab575f80fd5b506102b46109fb565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e1366004612300565b610a09565b6040516102be919061232b565b3480156102fe575f80fd5b5061027b61030d366004612365565b610b27565b34801561031d575f80fd5b50610326610b88565b6040516102be9190612380565b34801561033e575f80fd5b506102b461034d366004612300565b610c18565b34801561035d575f80fd5b5061037161036c3660046123b5565b610c4d565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b366004612300565b610c66565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123b5565b610c8f565b3480156103de575f80fd5b506102b4610bb881565b3480156103f3575f80fd5b506102b4610d2e565b348015610407575f80fd5b506103716104163660046123df565b610d37565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d5a565b34801561048b575f80fd5b5061027b61049a366004612300565b610d66565b61027b610d7c565b3480156104b2575f80fd5b506102b461271081565b3480156104c7575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b610505366004612365565b610d86565b348015610515575f80fd5b506102b4610524366004612300565b610dbb565b348015610534575f80fd5b506102b460015481565b348015610549575f80fd5b5061055d610558366004612365565b610dc5565b6040516102be919061241d565b348015610575575f80fd5b506102b4610584366004612365565b6001600160a01b03165f9081526004602052604090205490565b3480156105a9575f80fd5b5061027b610e2e565b3480156105bd575f80fd5b506009546001600160a01b0316610439565b3480156105da575f80fd5b5061055d6105e9366004612460565b610e3f565b3480156105f9575f80fd5b50610326610f4d565b34801561060d575f80fd5b506102b461061c3660046123b5565b610f5c565b34801561062c575f80fd5b5061037161063b3660046123b5565b610f87565b34801561064b575f80fd5b506102b461065a366004612365565b6001600160a01b03165f9081526002602052604090205490565b34801561067f575f80fd5b506102b461068e366004612300565b610f94565b34801561069e575f80fd5b5061027b6106ad366004612300565b610fbc565b3480156106bd575f80fd5b506102b46106cc366004612365565b610fcf565b3480156106dc575f80fd5b506102b46106eb366004612365565b610ff0565b3480156106fb575f80fd5b506102b461070a36600461249a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561073f575f80fd5b5061027b61074e3660046123b5565b61100d565b34801561075e575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b348015610791575f80fd5b5061027b6107a03660046123b5565b6110e0565b3480156107b0575f80fd5b506102b46107bf366004612300565b6111ae565b3480156107cf575f80fd5b506104396107de366004612300565b60036020525f90815260409020546001600160a01b031681565b348015610803575f80fd5b5061027b610812366004612365565b6111b8565b348015610822575f80fd5b5061027b6108313660046123b5565b6111f2565b348015610841575f80fd5b506102b4600181565b478190035f61085882611287565b90508015610869576108698161129b565b6001600160a01b03841615610942575f81836108836112f4565b010390505f61089b8561089560065490565b846113fb565b90505f81116108f15760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108fb868261141d565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b8183018181039082146109585761095881611451565b5050505050565b6109676114c4565b610bb88111156109b95760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108e8565b6109c35f8061084a565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f610a046114f1565b905090565b5f805f610a1584611508565b935093505050815f03610a2b57505f9392505050565b6002816002811115610a3f57610a3f612317565b03610a4e575060059392505050565b6001816002811115610a6257610a62612317565b03610a71575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af291906124c6565b8301905082421015610b0957506001949350505050565b80421015610b1c57506002949350505050565b506004949350505050565b610b2f6114c4565b610b395f8061084a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b97906124dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc3906124dd565b8015610c0e5780601f10610be557610100808354040283529160200191610c0e565b820191905f5260205f20905b815481529060010190602001808311610bf157829003601f168201915b5050505050905090565b5f80610c2360065490565b90508015610c4457610c3f610c366109fb565b8490835f6115a8565b610c46565b825b9392505050565b5f33610c5a8185856115f7565b60019150505b92915050565b5f80610c7160065490565b90508015610c4457610c3f81610c856109fb565b85919060016115a8565b816001600160a01b038116610cb65760405162461bcd60e51b81526004016108e890612515565b610cc05f8061084a565b5f610cca83610dbb565b9050610cd63384611604565b610ce1338583611638565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f610a046117a2565b5f33610d448582856117b7565b610d4f858585611832565b506001949350505050565b610d645f8061084a565b565b610d705f8061084a565b610d798161188f565b50565b610d64333461084a565b806001600160a01b038116610dad5760405162461bcd60e51b81526004016108e890612515565b610db7823461084a565b5050565b5f610c6082610c18565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e2257602002820191905f5260205f20905b815481526020019060010190808311610e0e575b50505050509050919050565b610e366114c4565b610d645f611a06565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e7357610e7361253f565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5091505f805b82811015610f43576001600160a01b0386165f908152600260205260408120805483908110610ed357610ed3612553565b905f5260205f2001549050856005811115610ef057610ef0612317565b610ef982610a09565b6005811115610f0a57610f0a612317565b03610f3a57808584610f1b8161257b565b955081518110610f2d57610f2d612553565b6020026020010181815250505b50600101610ea2565b5082525092915050565b606060088054610b97906124dd565b6002602052815f5260405f208181548110610f75575f80fd5b905f5260205f20015f91509150505481565b5f33610c5a818585611832565b5f80610f9f60065490565b90508015610c4457610c3f81610fb36109fb565b8591905f6115a8565b610fc65f8061084a565b610d7981611a57565b6001600160a01b0381165f90815260046020526040812054610c6090610dbb565b6001600160a01b0381165f90815260046020526040812054610c60565b611015611b87565b61105a5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b61106e6001600160a01b0383166003611c08565b6110b15760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b6110bb5f8061084a565b5f6110c582610dbb565b90506110d13383611604565b6110db8382611e16565b505050565b6110e8611b87565b61112d5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b6111416001600160a01b0383166003611c08565b6111845760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b61118e5f8061084a565b5f61119882610c66565b90506111a43382611604565b6110db8383611e16565b5f610c6082610f94565b6111c06114c4565b6001600160a01b0381166111e957604051631e4fbdf760e01b81525f60048201526024016108e8565b610d7981611a06565b816001600160a01b0381166112195760405162461bcd60e51b81526004016108e890612515565b6112235f8061084a565b5f61122d83610c66565b90506112393382611604565b611244338585611638565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d20565b6001545f90610c60908390612710846115a8565b5f546112b0906001600160a01b031682611f2c565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906124c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f591906124c6565b03905090565b5f82156114135761140e8484845f6115a8565b611415565b835b949350505050565b6001600160a01b0382166114465760405163ec442f0560e01b81525f60048201526024016108e8565b610db75f8383611fbf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156114aa575f80fd5b505af11580156114bc573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d645760405163118cdaa760e01b81523360048201526024016108e8565b5f6114fa6117a2565b6115026112f4565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161155a91815260200190565b608060405180830381865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612593565b93509350935093509193509193565b5f806115b586868661202b565b90506115c0836120ea565b80156115db57505f84806115d6576115d66125df565b868809115b156115ee576115eb6001826125f3565b90505b95945050505050565b6110db8383836001612116565b6001600160a01b03821661162d57604051634b637e8f60e11b81525f60048201526024016108e8565b610db7825f83611fbf565b5f81116116875760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b91906124c6565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f47816117ae82611287565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f19811461182c578181101561181e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108e8565b61182c84848484035f612116565b50505050565b6001600160a01b03831661185b57604051634b637e8f60e11b81525f60048201526024016108e8565b6001600160a01b0382166118845760405163ec442f0560e01b81525f60048201526024016108e8565b6110db838383611fbf565b5f818152600360205260409020546001600160a01b031633146118f45760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b158015611953575f80fd5b505af1158015611965573d5f803e3d5ffd5b505050505f8061197483611508565b93505092505060028081111561198c5761198c612317565b81600281111561199e5761199e612317565b036119d5575f6119c9836119b160065490565b856119ba6114f1565b6119c49190612606565b6113fb565b905061182c338261141d565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611abc5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b5f611ac682611508565b50509150505f611ad5826111ae565b9050611ae1338261141d565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b40575f80fd5b505af1158015611b52573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190612619565b5f826001600160a01b03163b5f03611c2157505f610c60565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c60573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c879190810190612638565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611cbd575f915050610c60565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1e91906124c6565b14611d2c575f915050610c60565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8d91906126e3565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfa91906126fe565b506001600160a01b039081169088161494505050505092915050565b5f8111611e655760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ed2575f80fd5b505af1158015611ee4573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f4f5760405163cd78605960e01b81523060048201526024016108e8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f98576040519150601f19603f3d011682016040523d82523d5f602084013e611f9d565b606091505b50509050806110db57604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fdc57506001600160a01b038216155b6120205760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108e8565b6110db8383836121da565b5f838302815f1985870982811083820303915050805f0361205f57838281612055576120556125df565b0492505050610c46565b80841161207f5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ff576120ff612317565b6121099190612748565b60ff166001149050919050565b6001600160a01b03841661213f5760405163e602df0560e01b81525f60048201526024016108e8565b6001600160a01b03831661216857604051634a1406b160e11b81525f60048201526024016108e8565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561182c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2091815260200190565b6001600160a01b038316612204578060065f8282546121f991906125f3565b909155506122749050565b6001600160a01b0383165f90815260046020526040902054818110156122565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108e8565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b038216612290576006805482900390556122ae565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f391815260200190565b60405180910390a3505050565b5f60208284031215612310575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061234b57634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d79575f80fd5b5f60208284031215612375575f80fd5b8135610c4681612351565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123c6575f80fd5b82356123d181612351565b946020939093013593505050565b5f805f606084860312156123f1575f80fd5b83356123fc81612351565b9250602084013561240c81612351565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561245457835183529284019291840191600101612438565b50909695505050505050565b5f8060408385031215612471575f80fd5b823561247c81612351565b915060208301356006811061248f575f80fd5b809150509250929050565b5f80604083850312156124ab575f80fd5b82356124b681612351565b9150602083013561248f81612351565b5f602082840312156124d6575f80fd5b5051919050565b600181811c908216806124f157607f821691505b60208210810361250f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161258c5761258c612567565b5060010190565b5f805f80608085870312156125a6575f80fd5b84516125b181612351565b8094505060208501519250604085015191506060850151600381106125d4575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c6057610c60612567565b81810381811115610c6057610c60612567565b5f60208284031215612629575f80fd5b81518015158114610c46575f80fd5b5f60208284031215612648575f80fd5b815167ffffffffffffffff8082111561265f575f80fd5b818401915084601f830112612672575f80fd5b8151818111156126845761268461253f565b604051601f8201601f19908116603f011681019083821181831017156126ac576126ac61253f565b816040528281528760208487010111156126c4575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126f3575f80fd5b8151610c4681612351565b5f805f60608486031215612710575f80fd5b835161271b81612351565b602085015190935061272c81612351565b604085015190925061273d81612351565b809150509250925092565b5f60ff83168061276657634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220ea53752c150b476c6f0f4392c2cb6364876f1c3cc11545bb3d969c976cfdfef264736f6c63430008190033a2646970667358221220f84749755bff181f87498a6cb4573e27de6638b6cfaecaf88513941dc2645ac364736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b506131298061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634b6a94cc14610043578063787821cc14610095578063ffa1ad74146100c0575b5f80fd5b61007f6040518060400160405280601781526020017f5075626c696344656c65676174696f6e466163746f727900000000000000000081525081565b60405161008c919061014b565b60405180910390f35b6100a86100a33660046101ed565b6100d6565b6040516001600160a01b03909116815260200161008c565b6100c8600181565b60405190815260200161008c565b5f33826040516100e590610110565b6100f09291906102d2565b604051809103905ff080158015610109573d5f803e3d5ffd5b5092915050565b612dcb8061032983390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61015d602083018461011d565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561019b5761019b610164565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101ca576101ca610164565b604052919050565b80356001600160a01b03811681146101e8575f80fd5b919050565b5f60208083850312156101fe575f80fd5b823567ffffffffffffffff80821115610215575f80fd5b9084019060808287031215610228575f80fd5b610230610178565b610239836101d2565b81526102468484016101d2565b8482015260408301356040820152606083013582811115610265575f80fd5b80840193505086601f840112610279575f80fd5b82358281111561028b5761028b610164565b61029d601f8201601f191686016101a1565b925080835287858286010111156102b2575f80fd5b80858501868501375f908301909401939093526060830152509392505050565b5f60018060a01b0380851683526040602084015280845116604084015280602085015116606084015250604083015160808301526060830151608060a084015261031f60c084018261011d565b9594505050505056fe60a060405234801561000f575f80fd5b50604051612dcb380380612dcb83398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50612710816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127966106355f395f818161074f01528181610a5f015281816112e2015281816113620152818161143e015281816114f90152818161169a015281816118f501528181611ae201528181611b750152611e7c01526127965ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610771578063ef8b30f714610790578063f29177c3146107af578063f2fde38b146107e3578063f3fef3a314610802578063ffa1ad7414610821575f80fd5b8063c804b1151461067e578063ce96cb771461069d578063d905777e146106bc578063dd62ed3e146106db578063e15fc3501461071f578063e2c8bde51461073e575f80fd5b806393b89a841161010f57806393b89a84146105ba57806395d89b41146105d957806397feb23c146105ed578063a9059cbb1461060c578063c166c4581461062b578063c6e6f5921461065f575f80fd5b80635ea1d6f81461051457806360df7c6c1461052957806370a0823114610555578063715018a6146105895780638da5cb5b1461059d575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146103d35780634b6a94cc146104a75780634bf69206146104e25780634cdad506146104f5575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b3334610835565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b3660046122eb565b61094a565b3480156102ab575f80fd5b506102b46109e6565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e13660046122eb565b6109f4565b6040516102be9190612316565b3480156102fe575f80fd5b5061027b61030d366004612350565b610b12565b34801561031d575f80fd5b50610326610b73565b6040516102be919061236b565b34801561033e575f80fd5b506102b461034d3660046122eb565b610c03565b34801561035d575f80fd5b5061037161036c3660046123a0565b610c38565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b3660046122eb565b610c51565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123a0565b610c7a565b3480156103de575f80fd5b506102b461271081565b3480156103f3575f80fd5b506102b4610d19565b348015610407575f80fd5b506103716104163660046123ca565b610d22565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d45565b34801561048b575f80fd5b5061027b61049a3660046122eb565b610d51565b61027b610d67565b3480156104b2575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b6104f0366004612350565b610d71565b348015610500575f80fd5b506102b461050f3660046122eb565b610da6565b34801561051f575f80fd5b506102b460015481565b348015610534575f80fd5b50610548610543366004612350565b610db0565b6040516102be9190612408565b348015610560575f80fd5b506102b461056f366004612350565b6001600160a01b03165f9081526004602052604090205490565b348015610594575f80fd5b5061027b610e19565b3480156105a8575f80fd5b506009546001600160a01b0316610439565b3480156105c5575f80fd5b506105486105d436600461244b565b610e2a565b3480156105e4575f80fd5b50610326610f38565b3480156105f8575f80fd5b506102b46106073660046123a0565b610f47565b348015610617575f80fd5b506103716106263660046123a0565b610f72565b348015610636575f80fd5b506102b4610645366004612350565b6001600160a01b03165f9081526002602052604090205490565b34801561066a575f80fd5b506102b46106793660046122eb565b610f7f565b348015610689575f80fd5b5061027b6106983660046122eb565b610fa7565b3480156106a8575f80fd5b506102b46106b7366004612350565b610fba565b3480156106c7575f80fd5b506102b46106d6366004612350565b610fdb565b3480156106e6575f80fd5b506102b46106f5366004612485565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561072a575f80fd5b5061027b6107393660046123a0565b610ff8565b348015610749575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b34801561077c575f80fd5b5061027b61078b3660046123a0565b6110cb565b34801561079b575f80fd5b506102b46107aa3660046122eb565b611199565b3480156107ba575f80fd5b506104396107c93660046122eb565b60036020525f90815260409020546001600160a01b031681565b3480156107ee575f80fd5b5061027b6107fd366004612350565b6111a3565b34801561080d575f80fd5b5061027b61081c3660046123a0565b6111dd565b34801561082c575f80fd5b506102b4600181565b478190035f61084382611272565b905080156108545761085481611286565b6001600160a01b0384161561092d575f818361086e6112df565b010390505f6108868561088060065490565b846113e6565b90505f81116108dc5760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108e68682611408565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b818301818103908214610943576109438161143c565b5050505050565b6109526114af565b6127108111156109a45760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108d3565b6109ae5f80610835565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f6109ef6114dc565b905090565b5f805f610a00846114f3565b935093505050815f03610a1657505f9392505050565b6002816002811115610a2a57610a2a612302565b03610a39575060059392505050565b6001816002811115610a4d57610a4d612302565b03610a5c575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add91906124b1565b8301905082421015610af457506001949350505050565b80421015610b0757506002949350505050565b506004949350505050565b610b1a6114af565b610b245f80610835565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b82906124c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906124c8565b8015610bf95780601f10610bd057610100808354040283529160200191610bf9565b820191905f5260205f20905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b5f80610c0e60065490565b90508015610c2f57610c2a610c216109e6565b8490835f611593565b610c31565b825b9392505050565b5f33610c458185856115e2565b60019150505b92915050565b5f80610c5c60065490565b90508015610c2f57610c2a81610c706109e6565b8591906001611593565b816001600160a01b038116610ca15760405162461bcd60e51b81526004016108d390612500565b610cab5f80610835565b5f610cb583610da6565b9050610cc133846115ef565b610ccc338583611623565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f6109ef61178d565b5f33610d2f8582856117a2565b610d3a85858561181d565b506001949350505050565b610d4f5f80610835565b565b610d5b5f80610835565b610d648161187a565b50565b610d4f3334610835565b806001600160a01b038116610d985760405162461bcd60e51b81526004016108d390612500565b610da28234610835565b5050565b5f610c4b82610c03565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e0d57602002820191905f5260205f20905b815481526020019060010190808311610df9575b50505050509050919050565b610e216114af565b610d4f5f6119f1565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e5e57610e5e61252a565b604051908082528060200260200182016040528015610e87578160200160208202803683370190505b5091505f805b82811015610f2e576001600160a01b0386165f908152600260205260408120805483908110610ebe57610ebe61253e565b905f5260205f2001549050856005811115610edb57610edb612302565b610ee4826109f4565b6005811115610ef557610ef5612302565b03610f2557808584610f0681612566565b955081518110610f1857610f1861253e565b6020026020010181815250505b50600101610e8d565b5082525092915050565b606060088054610b82906124c8565b6002602052815f5260405f208181548110610f60575f80fd5b905f5260205f20015f91509150505481565b5f33610c4581858561181d565b5f80610f8a60065490565b90508015610c2f57610c2a81610f9e6109e6565b8591905f611593565b610fb15f80610835565b610d6481611a42565b6001600160a01b0381165f90815260046020526040812054610c4b90610da6565b6001600160a01b0381165f90815260046020526040812054610c4b565b611000611b72565b6110455760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b6110596001600160a01b0383166003611bf3565b61109c5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6110a65f80610835565b5f6110b082610da6565b90506110bc33836115ef565b6110c68382611e01565b505050565b6110d3611b72565b6111185760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b61112c6001600160a01b0383166003611bf3565b61116f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6111795f80610835565b5f61118382610c51565b905061118f33826115ef565b6110c68383611e01565b5f610c4b82610f7f565b6111ab6114af565b6001600160a01b0381166111d457604051631e4fbdf760e01b81525f60048201526024016108d3565b610d64816119f1565b816001600160a01b0381166112045760405162461bcd60e51b81526004016108d390612500565b61120e5f80610835565b5f61121883610c51565b905061122433826115ef565b61122f338585611623565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d0b565b6001545f90610c4b90839061271084611593565b5f5461129b906001600160a01b031682611f17565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136091906124b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e091906124b1565b03905090565b5f82156113fe576113f98484845f611593565b611400565b835b949350505050565b6001600160a01b0382166114315760405163ec442f0560e01b81525f60048201526024016108d3565b610da25f8383611faa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d4f5760405163118cdaa760e01b81523360048201526024016108d3565b5f6114e561178d565b6114ed6112df565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161154591815260200190565b608060405180830381865afa158015611560573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611584919061257e565b93509350935093509193509193565b5f806115a0868686612016565b90506115ab836120d5565b80156115c657505f84806115c1576115c16125ca565b868809115b156115d9576115d66001826125de565b90505b95945050505050565b6110c68383836001612101565b6001600160a01b03821661161857604051634b637e8f60e11b81525f60048201526024016108d3565b610da2825f83611faa565b5f81116116725760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170691906124b1565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f478161179982611272565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f198114611817578181101561180957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108d3565b61181784848484035f612101565b50505050565b6001600160a01b03831661184657604051634b637e8f60e11b81525f60048201526024016108d3565b6001600160a01b03821661186f5760405163ec442f0560e01b81525f60048201526024016108d3565b6110c6838383611faa565b5f818152600360205260409020546001600160a01b031633146118df5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b15801561193e575f80fd5b505af1158015611950573d5f803e3d5ffd5b505050505f8061195f836114f3565b93505092505060028081111561197757611977612302565b81600281111561198957611989612302565b036119c0575f6119b48361199c60065490565b856119a56114dc565b6119af91906125f1565b6113e6565b90506118173382611408565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b5f611ab1826114f3565b50509150505f611ac082611199565b9050611acc3382611408565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b2b575f80fd5b505af1158015611b3d573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190612604565b5f826001600160a01b03163b5f03611c0c57505f610c4b565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c4b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c729190810190612623565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611ca8575f915050610c4b565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906124b1565b14611d17575f915050610c4b565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7891906126ce565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de591906126e9565b506001600160a01b039081169088161494505050505092915050565b5f8111611e505760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ebd575f80fd5b505af1158015611ecf573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f3a5760405163cd78605960e01b81523060048201526024016108d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f83576040519150601f19603f3d011682016040523d82523d5f602084013e611f88565b606091505b50509050806110c657604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fc757506001600160a01b038216155b61200b5760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108d3565b6110c68383836121c5565b5f838302815f1985870982811083820303915050805f0361204a57838281612040576120406125ca565b0492505050610c31565b80841161206a5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ea576120ea612302565b6120f49190612733565b60ff166001149050919050565b6001600160a01b03841661212a5760405163e602df0560e01b81525f60048201526024016108d3565b6001600160a01b03831661215357604051634a1406b160e11b81525f60048201526024016108d3565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561181757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d0b91815260200190565b6001600160a01b0383166121ef578060065f8282546121e491906125de565b9091555061225f9050565b6001600160a01b0383165f90815260046020526040902054818110156122415760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108d3565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b03821661227b57600680548290039055612299565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122de91815260200190565b60405180910390a3505050565b5f602082840312156122fb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061233657634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d64575f80fd5b5f60208284031215612360575f80fd5b8135610c318161233c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123b1575f80fd5b82356123bc8161233c565b946020939093013593505050565b5f805f606084860312156123dc575f80fd5b83356123e78161233c565b925060208401356123f78161233c565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561243f57835183529284019291840191600101612423565b50909695505050505050565b5f806040838503121561245c575f80fd5b82356124678161233c565b915060208301356006811061247a575f80fd5b809150509250929050565b5f8060408385031215612496575f80fd5b82356124a18161233c565b9150602083013561247a8161233c565b5f602082840312156124c1575f80fd5b5051919050565b600181811c908216806124dc57607f821691505b6020821081036124fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161257757612577612552565b5060010190565b5f805f8060808587031215612591575f80fd5b845161259c8161233c565b8094505060208501519250604085015191506060850151600381106125bf575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c4b57610c4b612552565b81810381811115610c4b57610c4b612552565b5f60208284031215612614575f80fd5b81518015158114610c31575f80fd5b5f60208284031215612633575f80fd5b815167ffffffffffffffff8082111561264a575f80fd5b818401915084601f83011261265d575f80fd5b81518181111561266f5761266f61252a565b604051601f8201601f19908116603f011681019083821181831017156126975761269761252a565b816040528281528760208487010111156126af575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126de575f80fd5b8151610c318161233c565b5f805f606084860312156126fb575f80fd5b83516127068161233c565b60208501519093506127178161233c565b60408501519092506127288161233c565b809150509250925092565b5f60ff83168061275157634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220fc04e3c74fec64bb320728f9054b246b1396c6a458c033b73ace2cb1de1f11bd64736f6c63430008190033a26469706673582212209386d2833691e7c506bfccfc151449114487fb14b915335b045a6903eeb2e76964736f6c63430008190033", } // PublicDelegationFactoryABI is the input ABI used to generate the binding from. @@ -41684,10 +42725,10 @@ var PublicDelegationFactoryMetaData = &bind.MetaData{ var PublicDelegationFactoryABI = PublicDelegationFactoryMetaData.ABI // PublicDelegationFactoryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const PublicDelegationFactoryBinRuntime = `608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634b6a94cc14610043578063787821cc14610095578063ffa1ad74146100c0575b5f80fd5b61007f6040518060400160405280601781526020017f5075626c696344656c65676174696f6e466163746f727900000000000000000081525081565b60405161008c919061014b565b60405180910390f35b6100a86100a33660046101ed565b6100d6565b6040516001600160a01b03909116815260200161008c565b6100c8600181565b60405190815260200161008c565b5f33826040516100e590610110565b6100f09291906102d2565b604051809103905ff080158015610109573d5f803e3d5ffd5b5092915050565b612de08061032983390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61015d602083018461011d565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561019b5761019b610164565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101ca576101ca610164565b604052919050565b80356001600160a01b03811681146101e8575f80fd5b919050565b5f60208083850312156101fe575f80fd5b823567ffffffffffffffff80821115610215575f80fd5b9084019060808287031215610228575f80fd5b610230610178565b610239836101d2565b81526102468484016101d2565b8482015260408301356040820152606083013582811115610265575f80fd5b80840193505086601f840112610279575f80fd5b82358281111561028b5761028b610164565b61029d601f8201601f191686016101a1565b925080835287858286010111156102b2575f80fd5b80858501868501375f908301909401939093526060830152509392505050565b5f60018060a01b0380851683526040602084015280845116604084015280602085015116606084015250604083015160808301526060830151608060a084015261031f60c084018261011d565b9594505050505056fe60a060405234801561000f575f80fd5b50604051612de0380380612de083398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50610bb8816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127ab6106355f395f818161076401528181610a74015281816112f701528181611377015281816114530152818161150e015281816116af0152818161190a01528181611af701528181611b8a0152611e9101526127ab5ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610786578063ef8b30f7146107a5578063f29177c3146107c4578063f2fde38b146107f8578063f3fef3a314610817578063ffa1ad7414610836575f80fd5b8063c804b11514610693578063ce96cb77146106b2578063d905777e146106d1578063dd62ed3e146106f0578063e15fc35014610734578063e2c8bde514610753575f80fd5b806393b89a841161010f57806393b89a84146105cf57806395d89b41146105ee57806397feb23c14610602578063a9059cbb14610621578063c166c45814610640578063c6e6f59214610674575f80fd5b80635ea1d6f81461052957806360df7c6c1461053e57806370a082311461056a578063715018a61461059e5780638da5cb5b146105b2575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146104a75780634b6a94cc146104bc5780634bf69206146104f75780634cdad5061461050a575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b333461084a565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b366004612300565b61095f565b3480156102ab575f80fd5b506102b46109fb565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e1366004612300565b610a09565b6040516102be919061232b565b3480156102fe575f80fd5b5061027b61030d366004612365565b610b27565b34801561031d575f80fd5b50610326610b88565b6040516102be9190612380565b34801561033e575f80fd5b506102b461034d366004612300565b610c18565b34801561035d575f80fd5b5061037161036c3660046123b5565b610c4d565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b366004612300565b610c66565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123b5565b610c8f565b3480156103de575f80fd5b506102b4610bb881565b3480156103f3575f80fd5b506102b4610d2e565b348015610407575f80fd5b506103716104163660046123df565b610d37565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d5a565b34801561048b575f80fd5b5061027b61049a366004612300565b610d66565b61027b610d7c565b3480156104b2575f80fd5b506102b461271081565b3480156104c7575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b610505366004612365565b610d86565b348015610515575f80fd5b506102b4610524366004612300565b610dbb565b348015610534575f80fd5b506102b460015481565b348015610549575f80fd5b5061055d610558366004612365565b610dc5565b6040516102be919061241d565b348015610575575f80fd5b506102b4610584366004612365565b6001600160a01b03165f9081526004602052604090205490565b3480156105a9575f80fd5b5061027b610e2e565b3480156105bd575f80fd5b506009546001600160a01b0316610439565b3480156105da575f80fd5b5061055d6105e9366004612460565b610e3f565b3480156105f9575f80fd5b50610326610f4d565b34801561060d575f80fd5b506102b461061c3660046123b5565b610f5c565b34801561062c575f80fd5b5061037161063b3660046123b5565b610f87565b34801561064b575f80fd5b506102b461065a366004612365565b6001600160a01b03165f9081526002602052604090205490565b34801561067f575f80fd5b506102b461068e366004612300565b610f94565b34801561069e575f80fd5b5061027b6106ad366004612300565b610fbc565b3480156106bd575f80fd5b506102b46106cc366004612365565b610fcf565b3480156106dc575f80fd5b506102b46106eb366004612365565b610ff0565b3480156106fb575f80fd5b506102b461070a36600461249a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561073f575f80fd5b5061027b61074e3660046123b5565b61100d565b34801561075e575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b348015610791575f80fd5b5061027b6107a03660046123b5565b6110e0565b3480156107b0575f80fd5b506102b46107bf366004612300565b6111ae565b3480156107cf575f80fd5b506104396107de366004612300565b60036020525f90815260409020546001600160a01b031681565b348015610803575f80fd5b5061027b610812366004612365565b6111b8565b348015610822575f80fd5b5061027b6108313660046123b5565b6111f2565b348015610841575f80fd5b506102b4600181565b478190035f61085882611287565b90508015610869576108698161129b565b6001600160a01b03841615610942575f81836108836112f4565b010390505f61089b8561089560065490565b846113fb565b90505f81116108f15760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108fb868261141d565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b8183018181039082146109585761095881611451565b5050505050565b6109676114c4565b610bb88111156109b95760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108e8565b6109c35f8061084a565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f610a046114f1565b905090565b5f805f610a1584611508565b935093505050815f03610a2b57505f9392505050565b6002816002811115610a3f57610a3f612317565b03610a4e575060059392505050565b6001816002811115610a6257610a62612317565b03610a71575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af291906124c6565b8301905082421015610b0957506001949350505050565b80421015610b1c57506002949350505050565b506004949350505050565b610b2f6114c4565b610b395f8061084a565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b97906124dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc3906124dd565b8015610c0e5780601f10610be557610100808354040283529160200191610c0e565b820191905f5260205f20905b815481529060010190602001808311610bf157829003601f168201915b5050505050905090565b5f80610c2360065490565b90508015610c4457610c3f610c366109fb565b8490835f6115a8565b610c46565b825b9392505050565b5f33610c5a8185856115f7565b60019150505b92915050565b5f80610c7160065490565b90508015610c4457610c3f81610c856109fb565b85919060016115a8565b816001600160a01b038116610cb65760405162461bcd60e51b81526004016108e890612515565b610cc05f8061084a565b5f610cca83610dbb565b9050610cd63384611604565b610ce1338583611638565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f610a046117a2565b5f33610d448582856117b7565b610d4f858585611832565b506001949350505050565b610d645f8061084a565b565b610d705f8061084a565b610d798161188f565b50565b610d64333461084a565b806001600160a01b038116610dad5760405162461bcd60e51b81526004016108e890612515565b610db7823461084a565b5050565b5f610c6082610c18565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e2257602002820191905f5260205f20905b815481526020019060010190808311610e0e575b50505050509050919050565b610e366114c4565b610d645f611a06565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e7357610e7361253f565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5091505f805b82811015610f43576001600160a01b0386165f908152600260205260408120805483908110610ed357610ed3612553565b905f5260205f2001549050856005811115610ef057610ef0612317565b610ef982610a09565b6005811115610f0a57610f0a612317565b03610f3a57808584610f1b8161257b565b955081518110610f2d57610f2d612553565b6020026020010181815250505b50600101610ea2565b5082525092915050565b606060088054610b97906124dd565b6002602052815f5260405f208181548110610f75575f80fd5b905f5260205f20015f91509150505481565b5f33610c5a818585611832565b5f80610f9f60065490565b90508015610c4457610c3f81610fb36109fb565b8591905f6115a8565b610fc65f8061084a565b610d7981611a57565b6001600160a01b0381165f90815260046020526040812054610c6090610dbb565b6001600160a01b0381165f90815260046020526040812054610c60565b611015611b87565b61105a5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b61106e6001600160a01b0383166003611c08565b6110b15760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b6110bb5f8061084a565b5f6110c582610dbb565b90506110d13383611604565b6110db8382611e16565b505050565b6110e8611b87565b61112d5760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108e8565b6111416001600160a01b0383166003611c08565b6111845760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108e8565b61118e5f8061084a565b5f61119882610c66565b90506111a43382611604565b6110db8383611e16565b5f610c6082610f94565b6111c06114c4565b6001600160a01b0381166111e957604051631e4fbdf760e01b81525f60048201526024016108e8565b610d7981611a06565b816001600160a01b0381166112195760405162461bcd60e51b81526004016108e890612515565b6112235f8061084a565b5f61122d83610c66565b90506112393382611604565b611244338585611638565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d20565b6001545f90610c60908390612710846115a8565b5f546112b0906001600160a01b031682611f2c565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906124c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f591906124c6565b03905090565b5f82156114135761140e8484845f6115a8565b611415565b835b949350505050565b6001600160a01b0382166114465760405163ec442f0560e01b81525f60048201526024016108e8565b610db75f8383611fbf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156114aa575f80fd5b505af11580156114bc573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d645760405163118cdaa760e01b81523360048201526024016108e8565b5f6114fa6117a2565b6115026112f4565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161155a91815260200190565b608060405180830381865afa158015611575573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612593565b93509350935093509193509193565b5f806115b586868661202b565b90506115c0836120ea565b80156115db57505f84806115d6576115d66125df565b868809115b156115ee576115eb6001826125f3565b90505b95945050505050565b6110db8383836001612116565b6001600160a01b03821661162d57604051634b637e8f60e11b81525f60048201526024016108e8565b610db7825f83611fbf565b5f81116116875760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171b91906124c6565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f47816117ae82611287565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f19811461182c578181101561181e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108e8565b61182c84848484035f612116565b50505050565b6001600160a01b03831661185b57604051634b637e8f60e11b81525f60048201526024016108e8565b6001600160a01b0382166118845760405163ec442f0560e01b81525f60048201526024016108e8565b6110db838383611fbf565b5f818152600360205260409020546001600160a01b031633146118f45760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b158015611953575f80fd5b505af1158015611965573d5f803e3d5ffd5b505050505f8061197483611508565b93505092505060028081111561198c5761198c612317565b81600281111561199e5761199e612317565b036119d5575f6119c9836119b160065490565b856119ba6114f1565b6119c49190612606565b6113fb565b905061182c338261141d565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611abc5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108e8565b5f611ac682611508565b50509150505f611ad5826111ae565b9050611ae1338261141d565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b40575f80fd5b505af1158015611b52573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a049190612619565b5f826001600160a01b03163b5f03611c2157505f610c60565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c60573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c879190810190612638565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611cbd575f915050610c60565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1e91906124c6565b14611d2c575f915050610c60565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8d91906126e3565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfa91906126fe565b506001600160a01b039081169088161494505050505092915050565b5f8111611e655760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108e8565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ed2575f80fd5b505af1158015611ee4573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f4f5760405163cd78605960e01b81523060048201526024016108e8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f98576040519150601f19603f3d011682016040523d82523d5f602084013e611f9d565b606091505b50509050806110db57604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fdc57506001600160a01b038216155b6120205760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108e8565b6110db8383836121da565b5f838302815f1985870982811083820303915050805f0361205f57838281612055576120556125df565b0492505050610c46565b80841161207f5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ff576120ff612317565b6121099190612748565b60ff166001149050919050565b6001600160a01b03841661213f5760405163e602df0560e01b81525f60048201526024016108e8565b6001600160a01b03831661216857604051634a1406b160e11b81525f60048201526024016108e8565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561182c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2091815260200190565b6001600160a01b038316612204578060065f8282546121f991906125f3565b909155506122749050565b6001600160a01b0383165f90815260046020526040902054818110156122565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108e8565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b038216612290576006805482900390556122ae565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f391815260200190565b60405180910390a3505050565b5f60208284031215612310575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061234b57634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d79575f80fd5b5f60208284031215612375575f80fd5b8135610c4681612351565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123c6575f80fd5b82356123d181612351565b946020939093013593505050565b5f805f606084860312156123f1575f80fd5b83356123fc81612351565b9250602084013561240c81612351565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561245457835183529284019291840191600101612438565b50909695505050505050565b5f8060408385031215612471575f80fd5b823561247c81612351565b915060208301356006811061248f575f80fd5b809150509250929050565b5f80604083850312156124ab575f80fd5b82356124b681612351565b9150602083013561248f81612351565b5f602082840312156124d6575f80fd5b5051919050565b600181811c908216806124f157607f821691505b60208210810361250f57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161258c5761258c612567565b5060010190565b5f805f80608085870312156125a6575f80fd5b84516125b181612351565b8094505060208501519250604085015191506060850151600381106125d4575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c6057610c60612567565b81810381811115610c6057610c60612567565b5f60208284031215612629575f80fd5b81518015158114610c46575f80fd5b5f60208284031215612648575f80fd5b815167ffffffffffffffff8082111561265f575f80fd5b818401915084601f830112612672575f80fd5b8151818111156126845761268461253f565b604051601f8201601f19908116603f011681019083821181831017156126ac576126ac61253f565b816040528281528760208487010111156126c4575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126f3575f80fd5b8151610c4681612351565b5f805f60608486031215612710575f80fd5b835161271b81612351565b602085015190935061272c81612351565b604085015190925061273d81612351565b809150509250925092565b5f60ff83168061276657634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220ea53752c150b476c6f0f4392c2cb6364876f1c3cc11545bb3d969c976cfdfef264736f6c63430008190033a2646970667358221220f84749755bff181f87498a6cb4573e27de6638b6cfaecaf88513941dc2645ac364736f6c63430008190033` +const PublicDelegationFactoryBinRuntime = `608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634b6a94cc14610043578063787821cc14610095578063ffa1ad74146100c0575b5f80fd5b61007f6040518060400160405280601781526020017f5075626c696344656c65676174696f6e466163746f727900000000000000000081525081565b60405161008c919061014b565b60405180910390f35b6100a86100a33660046101ed565b6100d6565b6040516001600160a01b03909116815260200161008c565b6100c8600181565b60405190815260200161008c565b5f33826040516100e590610110565b6100f09291906102d2565b604051809103905ff080158015610109573d5f803e3d5ffd5b5092915050565b612dcb8061032983390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61015d602083018461011d565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561019b5761019b610164565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156101ca576101ca610164565b604052919050565b80356001600160a01b03811681146101e8575f80fd5b919050565b5f60208083850312156101fe575f80fd5b823567ffffffffffffffff80821115610215575f80fd5b9084019060808287031215610228575f80fd5b610230610178565b610239836101d2565b81526102468484016101d2565b8482015260408301356040820152606083013582811115610265575f80fd5b80840193505086601f840112610279575f80fd5b82358281111561028b5761028b610164565b61029d601f8201601f191686016101a1565b925080835287858286010111156102b2575f80fd5b80858501868501375f908301909401939093526060830152509392505050565b5f60018060a01b0380851683526040602084015280845116604084015280602085015116606084015250604083015160808301526060830151608060a084015261031f60c084018261011d565b9594505050505056fe60a060405234801561000f575f80fd5b50604051612dcb380380612dcb83398101604081905261002e91610292565b8051606082015160405161004591906020016103a2565b604051602081830303815290604052826060015160405160200161006991906103da565b60408051601f1981840301815291905260076100858382610480565b5060086100928282610480565b5050506001600160a01b0381166100c357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100cc816101ba565b50612710816040015111156101235760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016100ba565b6001600160a01b038281166080526040828101516001556020808401515f80546001600160a01b031916919094161790925580518082018252601081526f283ab13634b1a232b632b3b0ba34b7b760811b92810192909252517f559705a83e2830cb29ab43f78af7f847810ba4a5bff2a637f7e5665ecf8dc55f916101ab918590859061056d565b60405180910390a150506105d7565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610221575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561025c5761025c610226565b60405290565b604051601f8201601f191681016001600160401b038111828210171561028a5761028a610226565b604052919050565b5f80604083850312156102a3575f80fd5b6102ac8361020b565b602084810151919350906001600160401b03808211156102ca575f80fd5b90850190608082880312156102dd575f80fd5b6102e561023a565b6102ee8361020b565b81526102fb84840161020b565b848201526040830151604082015260608301518281111561031a575f80fd5b80840193505087601f84011261032e575f80fd5b82518281111561034057610340610226565b610352601f8201601f19168601610262565b92508083528885828601011115610367575f80fd5b808585018685015e5f85828501015250816060820152809450505050509250929050565b5f81518060208401855e5f93019283525090919050565b5f6103ad828461038b565b7f205075626c69632044656c656761746564204b4149410000000000000000000081526016019392505050565b5f6103e5828461038b565b662d70644b41494160c81b81526007019392505050565b600181811c9082168061041057607f821691505b60208210810361042e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561047b57805f5260205f20601f840160051c810160208510156104595750805b601f840160051c820191505b81811015610478575f8155600101610465565b50505b505050565b81516001600160401b0381111561049957610499610226565b6104ad816104a784546103fc565b84610434565b602080601f8311600181146104e0575f84156104c95750858301515b5f19600386901b1c1916600185901b178555610537565b5f85815260208120601f198616915b8281101561050e578886015182559484019460019091019084016104ef565b508582101561052b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b606081525f61057f606083018661053f565b60018060a01b038086166020850152838203604085015280855116825280602086015116602083015250604084015160408201526060840151608060608301526105cc608083018261053f565b979650505050505050565b6080516127966106355f395f818161074f01528181610a5f015281816112e2015281816113620152818161143e015281816114f90152818161169a015281816118f501528181611ae201528181611b750152611e7c01526127965ff3fe60806040526004361061026c575f3560e01c80635ea1d6f81161014a578063c804b115116100be578063e659d7d711610078578063e659d7d714610771578063ef8b30f714610790578063f29177c3146107af578063f2fde38b146107e3578063f3fef3a314610802578063ffa1ad7414610821575f80fd5b8063c804b1151461067e578063ce96cb771461069d578063d905777e146106bc578063dd62ed3e146106db578063e15fc3501461071f578063e2c8bde51461073e575f80fd5b806393b89a841161010f57806393b89a84146105ba57806395d89b41146105d957806397feb23c146105ed578063a9059cbb1461060c578063c166c4581461062b578063c6e6f5921461065f575f80fd5b80635ea1d6f81461051457806360df7c6c1461052957806370a0823114610555578063715018a6146105895780638da5cb5b1461059d575f80fd5b8063228cb733116101e1578063379607f5116101a6578063379607f5146104805780633a4b66f11461049f5780633b1dbfcc146103d35780634b6a94cc146104a75780634bf69206146104e25780634cdad506146104f5575f80fd5b8063228cb733146103e857806323b872dd146103fc5780632f9ac83a1461041b578063313ce5671461045157806335faa4161461046c575f80fd5b806307a2d13a1161023257806307a2d13a14610333578063095ea7b3146103525780630a28a4771461038157806318160ddd146103a05780631e9a6950146103b4578063207239c0146103d3575f80fd5b8062fa3d501461028157806301e1d114146102a057806304ddc9d1146102c7578063052028d0146102f357806306fdde0314610312575f80fd5b3661027d5761027b3334610835565b005b5f80fd5b34801561028c575f80fd5b5061027b61029b3660046122eb565b61094a565b3480156102ab575f80fd5b506102b46109e6565b6040519081526020015b60405180910390f35b3480156102d2575f80fd5b506102e66102e13660046122eb565b6109f4565b6040516102be9190612316565b3480156102fe575f80fd5b5061027b61030d366004612350565b610b12565b34801561031d575f80fd5b50610326610b73565b6040516102be919061236b565b34801561033e575f80fd5b506102b461034d3660046122eb565b610c03565b34801561035d575f80fd5b5061037161036c3660046123a0565b610c38565b60405190151581526020016102be565b34801561038c575f80fd5b506102b461039b3660046122eb565b610c51565b3480156103ab575f80fd5b506006546102b4565b3480156103bf575f80fd5b5061027b6103ce3660046123a0565b610c7a565b3480156103de575f80fd5b506102b461271081565b3480156103f3575f80fd5b506102b4610d19565b348015610407575f80fd5b506103716104163660046123ca565b610d22565b348015610426575f80fd5b505f54610439906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561045c575f80fd5b50604051601281526020016102be565b348015610477575f80fd5b5061027b610d45565b34801561048b575f80fd5b5061027b61049a3660046122eb565b610d51565b61027b610d67565b3480156104b2575f80fd5b506103266040518060400160405280601081526020016f283ab13634b1a232b632b3b0ba34b7b760811b81525081565b61027b6104f0366004612350565b610d71565b348015610500575f80fd5b506102b461050f3660046122eb565b610da6565b34801561051f575f80fd5b506102b460015481565b348015610534575f80fd5b50610548610543366004612350565b610db0565b6040516102be9190612408565b348015610560575f80fd5b506102b461056f366004612350565b6001600160a01b03165f9081526004602052604090205490565b348015610594575f80fd5b5061027b610e19565b3480156105a8575f80fd5b506009546001600160a01b0316610439565b3480156105c5575f80fd5b506105486105d436600461244b565b610e2a565b3480156105e4575f80fd5b50610326610f38565b3480156105f8575f80fd5b506102b46106073660046123a0565b610f47565b348015610617575f80fd5b506103716106263660046123a0565b610f72565b348015610636575f80fd5b506102b4610645366004612350565b6001600160a01b03165f9081526002602052604090205490565b34801561066a575f80fd5b506102b46106793660046122eb565b610f7f565b348015610689575f80fd5b5061027b6106983660046122eb565b610fa7565b3480156106a8575f80fd5b506102b46106b7366004612350565b610fba565b3480156106c7575f80fd5b506102b46106d6366004612350565b610fdb565b3480156106e6575f80fd5b506102b46106f5366004612485565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561072a575f80fd5b5061027b6107393660046123a0565b610ff8565b348015610749575f80fd5b506104397f000000000000000000000000000000000000000000000000000000000000000081565b34801561077c575f80fd5b5061027b61078b3660046123a0565b6110cb565b34801561079b575f80fd5b506102b46107aa3660046122eb565b611199565b3480156107ba575f80fd5b506104396107c93660046122eb565b60036020525f90815260409020546001600160a01b031681565b3480156107ee575f80fd5b5061027b6107fd366004612350565b6111a3565b34801561080d575f80fd5b5061027b61081c3660046123a0565b6111dd565b34801561082c575f80fd5b506102b4600181565b478190035f61084382611272565b905080156108545761085481611286565b6001600160a01b0384161561092d575f818361086e6112df565b010390505f6108868561088060065490565b846113e6565b90505f81116108dc5760405162461bcd60e51b815260206004820152601860248201527f5374616b6520616d6f756e7420697320746f6f206c6f772e000000000000000060448201526064015b60405180910390fd5b6108e68682611408565b60408051868152602081018390526001600160a01b038816917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a250505b818301818103908214610943576109438161143c565b5050505050565b6109526114af565b6127108111156109a45760405162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e207261746520697320746f6f20686967682e0000000060448201526064016108d3565b6109ae5f80610835565b6001805490829055604051829082907f67fb2216d844c3553cf557bffa85f0fde0294999f808e61dcae1773d50d5e150905f90a35050565b5f6109ef6114dc565b905090565b5f805f610a00846114f3565b935093505050815f03610a1657505f9392505050565b6002816002811115610a2a57610a2a612302565b03610a39575060059392505050565b6001816002811115610a4d57610a4d612302565b03610a5c575060039392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396106ae46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add91906124b1565b8301905082421015610af457506001949350505050565b80421015610b0757506002949350505050565b506004949350505050565b610b1a6114af565b610b245f80610835565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fa466bc069316af563b6a90c9b6f29a97752ac7be7c6bbf3767bc9b16c2fd90eb9190a35050565b606060078054610b82906124c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906124c8565b8015610bf95780601f10610bd057610100808354040283529160200191610bf9565b820191905f5260205f20905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b5f80610c0e60065490565b90508015610c2f57610c2a610c216109e6565b8490835f611593565b610c31565b825b9392505050565b5f33610c458185856115e2565b60019150505b92915050565b5f80610c5c60065490565b90508015610c2f57610c2a81610c706109e6565b8591906001611593565b816001600160a01b038116610ca15760405162461bcd60e51b81526004016108d390612500565b610cab5f80610835565b5f610cb583610da6565b9050610cc133846115ef565b610ccc338583611623565b60408051828152602081018590526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348091015b60405180910390a350505050565b5f6109ef61178d565b5f33610d2f8582856117a2565b610d3a85858561181d565b506001949350505050565b610d4f5f80610835565b565b610d5b5f80610835565b610d648161187a565b50565b610d4f3334610835565b806001600160a01b038116610d985760405162461bcd60e51b81526004016108d390612500565b610da28234610835565b5050565b5f610c4b82610c03565b6001600160a01b0381165f90815260026020908152604091829020805483518184028101840190945280845260609392830182828015610e0d57602002820191905f5260205f20905b815481526020019060010190808311610df9575b50505050509050919050565b610e216114af565b610d4f5f6119f1565b6001600160a01b0382165f908152600260205260409020546060908067ffffffffffffffff811115610e5e57610e5e61252a565b604051908082528060200260200182016040528015610e87578160200160208202803683370190505b5091505f805b82811015610f2e576001600160a01b0386165f908152600260205260408120805483908110610ebe57610ebe61253e565b905f5260205f2001549050856005811115610edb57610edb612302565b610ee4826109f4565b6005811115610ef557610ef5612302565b03610f2557808584610f0681612566565b955081518110610f1857610f1861253e565b6020026020010181815250505b50600101610e8d565b5082525092915050565b606060088054610b82906124c8565b6002602052815f5260405f208181548110610f60575f80fd5b905f5260205f20015f91509150505481565b5f33610c4581858561181d565b5f80610f8a60065490565b90508015610c2f57610c2a81610f9e6109e6565b8591905f611593565b610fb15f80610835565b610d6481611a42565b6001600160a01b0381165f90815260046020526040812054610c4b90610da6565b6001600160a01b0381165f90815260046020526040812054610c4b565b611000611b72565b6110455760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b6110596001600160a01b0383166003611bf3565b61109c5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6110a65f80610835565b5f6110b082610da6565b90506110bc33836115ef565b6110c68382611e01565b505050565b6110d3611b72565b6111185760405162461bcd60e51b81526020600482015260166024820152752932b232b632b3b0ba34b7b7103234b9b0b13632b21760511b60448201526064016108d3565b61112c6001600160a01b0383166003611bf3565b61116f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21021b729ba30b5b4b733ab199760611b60448201526064016108d3565b6111795f80610835565b5f61118382610c51565b905061118f33826115ef565b6110c68383611e01565b5f610c4b82610f7f565b6111ab6114af565b6001600160a01b0381166111d457604051631e4fbdf760e01b81525f60048201526024016108d3565b610d64816119f1565b816001600160a01b0381166112045760405162461bcd60e51b81526004016108d390612500565b61120e5f80610835565b5f61121883610c51565b905061122433826115ef565b61122f338585611623565b60408051848152602081018390526001600160a01b0386169133917f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea834809101610d0b565b6001545f90610c4b90839061271084611593565b5f5461129b906001600160a01b031682611f17565b5f546040518281526001600160a01b03909116907f6c3b15f4a619d5331e4708792bb87f858ffb7a08f1a87aabca7cd15e51e04a639060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663630b11466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136091906124b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e091906124b1565b03905090565b5f82156113fe576113f98484845f611593565b611400565b835b949350505050565b6001600160a01b0382166114315760405163ec442f0560e01b81525f60048201526024016108d3565b610da25f8383611faa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c89e4361826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611495575f80fd5b505af11580156114a7573d5f803e3d5ffd5b505050505050565b6009546001600160a01b03163314610d4f5760405163118cdaa760e01b81523360048201526024016108d3565b5f6114e561178d565b6114ed6112df565b01905090565b5f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663725c0503866040518263ffffffff1660e01b815260040161154591815260200190565b608060405180830381865afa158015611560573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611584919061257e565b93509350935093509193509193565b5f806115a0868686612016565b90506115ab836120d5565b80156115c657505f84806115c1576115c16125ca565b868809115b156115d9576115d66001826125de565b90505b95945050505050565b6110c68383836001612101565b6001600160a01b03821661161857604051634b637e8f60e11b81525f60048201526024016108d3565b610da2825f83611faa565b5f81116116725760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051632efc584d60e11b81526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690635df8b09a906044016020604051808303815f875af11580156116e2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170691906124b1565b6001600160a01b038581165f818152600260209081526040808320805460018101825590845282842001869055858352600382529182902080546001600160a01b0319168417905590518681529394508493928716927fd71e6ec4eed83207b08d7ee4a0773c0ff8f8a1ab94b8ce85737fc0c5ea2b5f0c910160405180910390a450505050565b5f478161179982611272565b90910392915050565b6001600160a01b038381165f908152600560209081526040808320938616835292905220545f198114611817578181101561180957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108d3565b61181784848484035f612101565b50505050565b6001600160a01b03831661184657604051634b637e8f60e11b81525f60048201526024016108d3565b6001600160a01b03821661186f5760405163ec442f0560e01b81525f60048201526024016108d3565b6110c6838383611faa565b5f818152600360205260409020546001600160a01b031633146118df5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b604051636e93df0d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e93df0d906024015f604051808303815f87803b15801561193e575f80fd5b505af1158015611950573d5f803e3d5ffd5b505050505f8061195f836114f3565b93505092505060028081111561197757611977612302565b81600281111561198957611989612302565b036119c0575f6119b48361199c60065490565b856119a56114dc565b6119af91906125f1565b6113e6565b90506118173382611408565b604051839033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a905f90a3505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818152600360205260409020546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420746865206f776e6572206f662074686520726571756573742e00000060448201526064016108d3565b5f611ab1826114f3565b50509150505f611ac082611199565b9050611acc3382611408565b60405163c804b11560e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c804b115906024015f604051808303815f87803b158015611b2b575f80fd5b505af1158015611b3d573d5f803e3d5ffd5b50506040518592503391507f853eba293fc3859716cf2e1a34b0c266f8265db181ec04748d0f25b8a19fc80e905f90a3505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a66c96b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef9190612604565b5f826001600160a01b03163b5f03611c0c57505f610c4b565b5f839050806001600160a01b0316634b6a94cc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611c4b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c729190810190612623565b805190602001207fa2f5d64a9f0bcdeed97e196203f5a8c1a5c8293988b625b7925686d30805508214611ca8575f915050610c4b565b82816001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906124b1565b14611d17575f915050610c4b565b5f816001600160a01b031663139d7fed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7891906126ce565b604051630aabaead60e11b81526001600160a01b03821660048201529091505f90610400906315575d5a90602401606060405180830381865afa158015611dc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de591906126e9565b506001600160a01b039081169088161494505050505092915050565b5f8111611e505760405162461bcd60e51b815260206004820152601d60248201527f526564656c656761746520616d6f756e7420697320746f6f206c6f772e00000060448201526064016108d3565b604051631af63e0160e21b81523360048201526001600160a01b038381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690636bd8f804906064015f604051808303815f87803b158015611ebd575f80fd5b505af1158015611ecf573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507f78d93753d5a8009153a294711a82a3d1ba802938d66537c1b9142a053782d6939060200160405180910390a35050565b80471015611f3a5760405163cd78605960e01b81523060048201526024016108d3565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f83576040519150601f19603f3d011682016040523d82523d5f602084013e611f88565b606091505b50509050806110c657604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0383161580611fc757506001600160a01b038216155b61200b5760405162461bcd60e51b81526020600482015260156024820152742a3930b739b332b9103737ba1030b63637bbb2b21760591b60448201526064016108d3565b6110c68383836121c5565b5f838302815f1985870982811083820303915050805f0361204a57838281612040576120406125ca565b0492505050610c31565b80841161206a5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156120ea576120ea612302565b6120f49190612733565b60ff166001149050919050565b6001600160a01b03841661212a5760405163e602df0560e01b81525f60048201526024016108d3565b6001600160a01b03831661215357604051634a1406b160e11b81525f60048201526024016108d3565b6001600160a01b038085165f908152600560209081526040808320938716835292905220829055801561181757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d0b91815260200190565b6001600160a01b0383166121ef578060065f8282546121e491906125de565b9091555061225f9050565b6001600160a01b0383165f90815260046020526040902054818110156122415760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108d3565b6001600160a01b0384165f9081526004602052604090209082900390555b6001600160a01b03821661227b57600680548290039055612299565b6001600160a01b0382165f9081526004602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122de91815260200190565b60405180910390a3505050565b5f602082840312156122fb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016006831061233657634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0381168114610d64575f80fd5b5f60208284031215612360575f80fd5b8135610c318161233c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156123b1575f80fd5b82356123bc8161233c565b946020939093013593505050565b5f805f606084860312156123dc575f80fd5b83356123e78161233c565b925060208401356123f78161233c565b929592945050506040919091013590565b602080825282518282018190525f9190848201906040850190845b8181101561243f57835183529284019291840191600101612423565b50909695505050505050565b5f806040838503121561245c575f80fd5b82356124678161233c565b915060208301356006811061247a575f80fd5b809150509250929050565b5f8060408385031215612496575f80fd5b82356124a18161233c565b9150602083013561247a8161233c565b5f602082840312156124c1575f80fd5b5051919050565b600181811c908216806124dc57607f821691505b6020821081036124fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f20b2323932b9b99034b990373ab6361760811b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161257757612577612552565b5060010190565b5f805f8060808587031215612591575f80fd5b845161259c8161233c565b8094505060208501519250604085015191506060850151600381106125bf575f80fd5b939692955090935050565b634e487b7160e01b5f52601260045260245ffd5b80820180821115610c4b57610c4b612552565b81810381811115610c4b57610c4b612552565b5f60208284031215612614575f80fd5b81518015158114610c31575f80fd5b5f60208284031215612633575f80fd5b815167ffffffffffffffff8082111561264a575f80fd5b818401915084601f83011261265d575f80fd5b81518181111561266f5761266f61252a565b604051601f8201601f19908116603f011681019083821181831017156126975761269761252a565b816040528281528760208487010111156126af575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f602082840312156126de575f80fd5b8151610c318161233c565b5f805f606084860312156126fb575f80fd5b83516127068161233c565b60208501519093506127178161233c565b60408501519092506127288161233c565b809150509250925092565b5f60ff83168061275157634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea2646970667358221220fc04e3c74fec64bb320728f9054b246b1396c6a458c033b73ace2cb1de1f11bd64736f6c63430008190033a26469706673582212209386d2833691e7c506bfccfc151449114487fb14b915335b045a6903eeb2e76964736f6c63430008190033` -// PublicDelegationFactoryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use PublicDelegationFactoryMetaData.Sigs instead. +// PublicDelegationFactoryFuncSigs maps the 4-byte function signature to its string representation. var PublicDelegationFactoryFuncSigs = PublicDelegationFactoryMetaData.Sigs // PublicDelegationFactoryBin is the compiled bytecode used for deploying new contracts. @@ -41859,6 +42900,7 @@ func (_PublicDelegationFactory *PublicDelegationFactoryTransactorRaw) Transact(o func (_PublicDelegationFactory *PublicDelegationFactoryCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _PublicDelegationFactory.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -41866,6 +42908,7 @@ func (_PublicDelegationFactory *PublicDelegationFactoryCaller) CONTRACTTYPE(opts out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -41888,6 +42931,7 @@ func (_PublicDelegationFactory *PublicDelegationFactoryCallerSession) CONTRACTTY func (_PublicDelegationFactory *PublicDelegationFactoryCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationFactory.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -41895,6 +42939,7 @@ func (_PublicDelegationFactory *PublicDelegationFactoryCaller) VERSION(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -41979,8 +43024,8 @@ var PublicDelegationStorageABI = PublicDelegationStorageMetaData.ABI // PublicDelegationStorageBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const PublicDelegationStorageBinRuntime = `` -// PublicDelegationStorageFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use PublicDelegationStorageMetaData.Sigs instead. +// PublicDelegationStorageFuncSigs maps the 4-byte function signature to its string representation. var PublicDelegationStorageFuncSigs = PublicDelegationStorageMetaData.Sigs // PublicDelegationStorage is an auto generated Go binding around a Kaia contract. @@ -42131,6 +43176,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageTransactorRaw) Transact(o func (_PublicDelegationStorage *PublicDelegationStorageCaller) COMMISSIONDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "COMMISSION_DENOMINATOR") + if err != nil { return *new(*big.Int), err } @@ -42138,6 +43184,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) COMMISSIONDENOMIN out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // COMMISSIONDENOMINATOR is a free data retrieval call binding the contract method 0x3b1dbfcc. @@ -42160,6 +43207,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) COMMISSION func (_PublicDelegationStorage *PublicDelegationStorageCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -42167,6 +43215,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) CONTRACTTYPE(opts out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -42189,6 +43238,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) CONTRACTTY func (_PublicDelegationStorage *PublicDelegationStorageCaller) MAXCOMMISSIONRATE(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "MAX_COMMISSION_RATE") + if err != nil { return *new(*big.Int), err } @@ -42196,6 +43246,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) MAXCOMMISSIONRATE out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXCOMMISSIONRATE is a free data retrieval call binding the contract method 0x207239c0. @@ -42218,6 +43269,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) MAXCOMMISS func (_PublicDelegationStorage *PublicDelegationStorageCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -42225,6 +43277,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) VERSION(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -42247,6 +43300,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) VERSION() func (_PublicDelegationStorage *PublicDelegationStorageCaller) BaseCnStakingV3(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "baseCnStakingV3") + if err != nil { return *new(common.Address), err } @@ -42254,6 +43308,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) BaseCnStakingV3(o out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // BaseCnStakingV3 is a free data retrieval call binding the contract method 0xe2c8bde5. @@ -42276,6 +43331,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) BaseCnStak func (_PublicDelegationStorage *PublicDelegationStorageCaller) CommissionRate(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "commissionRate") + if err != nil { return *new(*big.Int), err } @@ -42283,6 +43339,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) CommissionRate(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // CommissionRate is a free data retrieval call binding the contract method 0x5ea1d6f8. @@ -42305,6 +43362,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) Commission func (_PublicDelegationStorage *PublicDelegationStorageCaller) CommissionTo(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "commissionTo") + if err != nil { return *new(common.Address), err } @@ -42312,6 +43370,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) CommissionTo(opts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CommissionTo is a free data retrieval call binding the contract method 0x2f9ac83a. @@ -42334,6 +43393,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) Commission func (_PublicDelegationStorage *PublicDelegationStorageCaller) ConvertToAssets(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "convertToAssets", _shares) + if err != nil { return *new(*big.Int), err } @@ -42341,6 +43401,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) ConvertToAssets(o out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToAssets is a free data retrieval call binding the contract method 0x07a2d13a. @@ -42363,6 +43424,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) ConvertToA func (_PublicDelegationStorage *PublicDelegationStorageCaller) ConvertToShares(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "convertToShares", _assets) + if err != nil { return *new(*big.Int), err } @@ -42370,6 +43432,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) ConvertToShares(o out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ConvertToShares is a free data retrieval call binding the contract method 0xc6e6f592. @@ -42392,6 +43455,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) ConvertToS func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetCurrentWithdrawalRequestState(opts *bind.CallOpts, _requestId *big.Int) (uint8, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "getCurrentWithdrawalRequestState", _requestId) + if err != nil { return *new(uint8), err } @@ -42399,6 +43463,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetCurrentWithdra out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // GetCurrentWithdrawalRequestState is a free data retrieval call binding the contract method 0x04ddc9d1. @@ -42421,6 +43486,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) GetCurrent func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestCount(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "getUserRequestCount", _owner) + if err != nil { return *new(*big.Int), err } @@ -42428,6 +43494,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestCou out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetUserRequestCount is a free data retrieval call binding the contract method 0xc166c458. @@ -42450,6 +43517,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) GetUserReq func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestIds(opts *bind.CallOpts, _owner common.Address) ([]*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "getUserRequestIds", _owner) + if err != nil { return *new([]*big.Int), err } @@ -42457,6 +43525,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestIds out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIds is a free data retrieval call binding the contract method 0x60df7c6c. @@ -42479,6 +43548,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) GetUserReq func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestIdsWithState(opts *bind.CallOpts, _owner common.Address, _state uint8) ([]*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "getUserRequestIdsWithState", _owner, _state) + if err != nil { return *new([]*big.Int), err } @@ -42486,6 +43556,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) GetUserRequestIds out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetUserRequestIdsWithState is a free data retrieval call binding the contract method 0x93b89a84. @@ -42508,6 +43579,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) GetUserReq func (_PublicDelegationStorage *PublicDelegationStorageCaller) MaxRedeem(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "maxRedeem", _owner) + if err != nil { return *new(*big.Int), err } @@ -42515,6 +43587,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) MaxRedeem(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxRedeem is a free data retrieval call binding the contract method 0xd905777e. @@ -42537,6 +43610,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) MaxRedeem( func (_PublicDelegationStorage *PublicDelegationStorageCaller) MaxWithdraw(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "maxWithdraw", _owner) + if err != nil { return *new(*big.Int), err } @@ -42544,6 +43618,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) MaxWithdraw(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MaxWithdraw is a free data retrieval call binding the contract method 0xce96cb77. @@ -42566,6 +43641,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) MaxWithdra func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewDeposit(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "previewDeposit", _assets) + if err != nil { return *new(*big.Int), err } @@ -42573,6 +43649,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewDeposit(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewDeposit is a free data retrieval call binding the contract method 0xef8b30f7. @@ -42595,6 +43672,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) PreviewDep func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewRedeem(opts *bind.CallOpts, _shares *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "previewRedeem", _shares) + if err != nil { return *new(*big.Int), err } @@ -42602,6 +43680,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewRedeem(opt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewRedeem is a free data retrieval call binding the contract method 0x4cdad506. @@ -42624,6 +43703,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) PreviewRed func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewWithdraw(opts *bind.CallOpts, _assets *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "previewWithdraw", _assets) + if err != nil { return *new(*big.Int), err } @@ -42631,6 +43711,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) PreviewWithdraw(o out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // PreviewWithdraw is a free data retrieval call binding the contract method 0x0a28a477. @@ -42653,6 +43734,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) PreviewWit func (_PublicDelegationStorage *PublicDelegationStorageCaller) RequestIdToOwner(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "requestIdToOwner", arg0) + if err != nil { return *new(common.Address), err } @@ -42660,6 +43742,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) RequestIdToOwner( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RequestIdToOwner is a free data retrieval call binding the contract method 0xf29177c3. @@ -42682,6 +43765,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) RequestIdT func (_PublicDelegationStorage *PublicDelegationStorageCaller) Reward(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "reward") + if err != nil { return *new(*big.Int), err } @@ -42689,6 +43773,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) Reward(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Reward is a free data retrieval call binding the contract method 0x228cb733. @@ -42711,6 +43796,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) Reward() ( func (_PublicDelegationStorage *PublicDelegationStorageCaller) TotalAssets(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "totalAssets") + if err != nil { return *new(*big.Int), err } @@ -42718,6 +43804,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) TotalAssets(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalAssets is a free data retrieval call binding the contract method 0x01e1d114. @@ -42740,6 +43827,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCallerSession) TotalAsset func (_PublicDelegationStorage *PublicDelegationStorageCaller) UserRequestIds(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (*big.Int, error) { var out []interface{} err := _PublicDelegationStorage.contract.Call(opts, &out, "userRequestIds", arg0, arg1) + if err != nil { return *new(*big.Int), err } @@ -42747,6 +43835,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageCaller) UserRequestIds(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // UserRequestIds is a free data retrieval call binding the contract method 0x97feb23c. @@ -43093,6 +44182,7 @@ type PublicDelegationStorageClaimed struct { // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterClaimed(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*PublicDelegationStorageClaimedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43113,6 +44203,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterClaimed(o // // Solidity: event Claimed(address indexed _user, uint256 indexed _requestId) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchClaimed(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageClaimed, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43162,6 +44253,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseClaimed(lo if err := _PublicDelegationStorage.contract.UnpackLog(event, "Claimed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43244,6 +44336,7 @@ type PublicDelegationStorageDeployContract struct { // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterDeployContract(opts *bind.FilterOpts) (*PublicDelegationStorageDeployContractIterator, error) { + logs, sub, err := _PublicDelegationStorage.contract.FilterLogs(opts, "DeployContract") if err != nil { return nil, err @@ -43255,6 +44348,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterDeployCon // // Solidity: event DeployContract(string _contractType, address _baseCnStakingV3, (address,address,uint256,string) _pdArgs) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchDeployContract(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageDeployContract) (event.Subscription, error) { + logs, sub, err := _PublicDelegationStorage.contract.WatchLogs(opts, "DeployContract") if err != nil { return nil, err @@ -43295,6 +44389,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseDeployCont if err := _PublicDelegationStorage.contract.UnpackLog(event, "DeployContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43378,6 +44473,7 @@ type PublicDelegationStorageRedeemed struct { // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRedeemed(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address) (*PublicDelegationStorageRedeemedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43398,6 +44494,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRedeemed( // // Solidity: event Redeemed(address indexed _user, address indexed _recipient, uint256 _assets, uint256 _shares) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchRedeemed(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageRedeemed, _user []common.Address, _recipient []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43447,6 +44544,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseRedeemed(l if err := _PublicDelegationStorage.contract.UnpackLog(event, "Redeemed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43529,6 +44627,7 @@ type PublicDelegationStorageRedelegated struct { // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRedelegated(opts *bind.FilterOpts, _user []common.Address, _targetCnV3 []common.Address) (*PublicDelegationStorageRedelegatedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43549,6 +44648,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRedelegat // // Solidity: event Redelegated(address indexed _user, address indexed _targetCnV3, uint256 _assets) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchRedelegated(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageRedelegated, _user []common.Address, _targetCnV3 []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43598,6 +44698,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseRedelegate if err := _PublicDelegationStorage.contract.UnpackLog(event, "Redelegated", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43679,6 +44780,7 @@ type PublicDelegationStorageRequestCancelWithdrawal struct { // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRequestCancelWithdrawal(opts *bind.FilterOpts, _user []common.Address, _requestId []*big.Int) (*PublicDelegationStorageRequestCancelWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43699,6 +44801,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRequestCa // // Solidity: event RequestCancelWithdrawal(address indexed _user, uint256 indexed _requestId) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchRequestCancelWithdrawal(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageRequestCancelWithdrawal, _user []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43748,6 +44851,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseRequestCan if err := _PublicDelegationStorage.contract.UnpackLog(event, "RequestCancelWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43831,6 +44935,7 @@ type PublicDelegationStorageRequestWithdrawal struct { // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRequestWithdrawal(opts *bind.FilterOpts, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (*PublicDelegationStorageRequestWithdrawalIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43855,6 +44960,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterRequestWi // // Solidity: event RequestWithdrawal(address indexed _user, address indexed _recipient, uint256 indexed _requestId, uint256 _assets) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchRequestWithdrawal(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageRequestWithdrawal, _user []common.Address, _recipient []common.Address, _requestId []*big.Int) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -43908,6 +45014,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseRequestWit if err := _PublicDelegationStorage.contract.UnpackLog(event, "RequestWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -43989,6 +45096,7 @@ type PublicDelegationStorageSendCommission struct { // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterSendCommission(opts *bind.FilterOpts, _commissionTo []common.Address) (*PublicDelegationStorageSendCommissionIterator, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -44005,6 +45113,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterSendCommi // // Solidity: event SendCommission(address indexed _commissionTo, uint256 _commission) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchSendCommission(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageSendCommission, _commissionTo []common.Address) (event.Subscription, error) { + var _commissionToRule []interface{} for _, _commissionToItem := range _commissionTo { _commissionToRule = append(_commissionToRule, _commissionToItem) @@ -44050,6 +45159,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseSendCommis if err := _PublicDelegationStorage.contract.UnpackLog(event, "SendCommission", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -44132,6 +45242,7 @@ type PublicDelegationStorageStaked struct { // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterStaked(opts *bind.FilterOpts, _user []common.Address) (*PublicDelegationStorageStakedIterator, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -44148,6 +45259,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterStaked(op // // Solidity: event Staked(address indexed _user, uint256 _assets, uint256 _shares) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchStaked(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageStaked, _user []common.Address) (event.Subscription, error) { + var _userRule []interface{} for _, _userItem := range _user { _userRule = append(_userRule, _userItem) @@ -44193,6 +45305,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseStaked(log if err := _PublicDelegationStorage.contract.UnpackLog(event, "Staked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -44274,6 +45387,7 @@ type PublicDelegationStorageUpdateCommissionRate struct { // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterUpdateCommissionRate(opts *bind.FilterOpts, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (*PublicDelegationStorageUpdateCommissionRateIterator, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -44294,6 +45408,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterUpdateCom // // Solidity: event UpdateCommissionRate(uint256 indexed _prevCommissionRate, uint256 indexed _commissionRate) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchUpdateCommissionRate(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageUpdateCommissionRate, _prevCommissionRate []*big.Int, _commissionRate []*big.Int) (event.Subscription, error) { + var _prevCommissionRateRule []interface{} for _, _prevCommissionRateItem := range _prevCommissionRate { _prevCommissionRateRule = append(_prevCommissionRateRule, _prevCommissionRateItem) @@ -44343,6 +45458,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseUpdateComm if err := _PublicDelegationStorage.contract.UnpackLog(event, "UpdateCommissionRate", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -44424,6 +45540,7 @@ type PublicDelegationStorageUpdateCommissionTo struct { // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterUpdateCommissionTo(opts *bind.FilterOpts, _prevCommissionTo []common.Address, _commissionTo []common.Address) (*PublicDelegationStorageUpdateCommissionToIterator, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -44444,6 +45561,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) FilterUpdateCom // // Solidity: event UpdateCommissionTo(address indexed _prevCommissionTo, address indexed _commissionTo) func (_PublicDelegationStorage *PublicDelegationStorageFilterer) WatchUpdateCommissionTo(opts *bind.WatchOpts, sink chan<- *PublicDelegationStorageUpdateCommissionTo, _prevCommissionTo []common.Address, _commissionTo []common.Address) (event.Subscription, error) { + var _prevCommissionToRule []interface{} for _, _prevCommissionToItem := range _prevCommissionTo { _prevCommissionToRule = append(_prevCommissionToRule, _prevCommissionToItem) @@ -44493,6 +45611,7 @@ func (_PublicDelegationStorage *PublicDelegationStorageFilterer) ParseUpdateComm if err := _PublicDelegationStorage.contract.UnpackLog(event, "UpdateCommissionTo", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/system_contracts/consensus/consensus.go b/contracts/contracts/system_contracts/consensus/consensus.go index 9cb72137e..3b66fc63b 100644 --- a/contracts/contracts/system_contracts/consensus/consensus.go +++ b/contracts/contracts/system_contracts/consensus/consensus.go @@ -81,7 +81,7 @@ var AddressBookMetaData = &bind.MetaData{ "c47afb3a": "updateRequirement(uint256)", "afaaf330": "updateSpareContract(address)", }, - Bin: "0x608060405234801561001057600080fd5b50615c4580620000216000396000f3006080604052600436106102215763ffffffff60e060020a60003504166315575d5a8114610226578063160370b8146102725780631865c57d1461037c57806321ac4ad4146103ec57806327e1f7df14610412578063298b3c611461043357806332b91e8514610460578063394a144a1461048b5780633f0628b1146104ac578063407091eb146104d057806341b6945c1461056c5780634a8c1fb4146105815780634b6a94cc146105aa5780634c5d435c146106345780634f97638f1461065857806350a5bb691461066d578063579740db1461068257806358d65880146106a35780636abd623d146106ca57806370480275146106fb578063715b208b1461071c57806376674c54146107ca578063778f39cb146107df5780637894c366146107f4578063791b51231461081857806382d67e5a14610839578063832a2aad146108d5578063863f5c0a146108f657806387cd9feb146109175780638e6f6b771461092c5780639258d76814610941578063934d1fa414610965578063afaaf3301461097a578063b50060e41461099b578063b5067706146109b0578063b7563930146109d1578063b858dd95146109e6578063c47afb3a146109fb578063c7e9de7514610a13578063cc11efc014610a37578063cec9246614610a64578063d267eda514610a79578063da34a0bd14610a8e578063de5bbfbc14610af3578063e748357b14610b08578063feb15ca114610b20578063ffa1ad7414610b35575b600080fd5b34801561023257600080fd5b50610247600160a060020a0360043516610b4a565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b34801561027e57600080fd5b50610287610ca0565b60408051600160a060020a0380851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b838110156102e45781810151838201526020016102cc565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b505050509050019850505050505050505060405180910390f35b34801561038857600080fd5b50610391610deb565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156103d75781810151838201526020016103bf565b50505050905001935050505060405180910390f35b3480156103f857600080fd5b50610410600160a060020a0360043516602435610e57565b005b34801561041e57600080fd5b50610410600160a060020a0360043516611038565b34801561043f57600080fd5b50610410600160a060020a03600435811690602435811690604435166112c9565b34801561046c57600080fd5b50610475611720565b6040805160ff9092168252519081900360200190f35b34801561049757600080fd5b50610410600160a060020a0360043516611725565b3480156104b857600080fd5b5061041060ff600435166024356044356064356117f6565b3480156104dc57600080fd5b506104f460ff60043516602435604435606435611e88565b60408051858152908101839052602081016060820183600481111561051557fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360005b8381101561055557818101518382015260200161053d565b505050509050019550505050505060405180910390f35b34801561057857600080fd5b50610475611f35565b34801561058d57600080fd5b50610596611f3a565b604080519115158252519081900360200190f35b3480156105b657600080fd5b506105bf611f43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105f95781810151838201526020016105e1565b50505050905090810190601f1680156106265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561064057600080fd5b50610410600160a060020a0360043516602435611f7a565b34801561066457600080fd5b5061041061216f565b34801561067957600080fd5b50610596612274565b34801561068e57600080fd5b50610410600160a060020a0360043516612282565b3480156106af57600080fd5b506106b8612658565b60408051918252519081900360200190f35b3480156106d657600080fd5b506106df61265d565b60408051600160a060020a039092168252519081900360200190f35b34801561070757600080fd5b50610410600160a060020a036004351661266c565b34801561072857600080fd5b5061073161284b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b50610475612b3a565b3480156107eb57600080fd5b506106b8612b3f565b34801561080057600080fd5b50610410602460048035828101929101359035612b44565b34801561082457600080fd5b50610410600160a060020a0360043516612ef1565b34801561084557600080fd5b506108516004356130f6565b6040518088600a81111561086157fe5b60ff16815260208101889052604081018790526060810186905260a08101849052608081019060c00183600481111561089657fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360008381101561036257818101518382015260200161034a565b3480156108e157600080fd5b50610410600160a060020a03600435166131b4565b34801561090257600080fd5b50610410600160a060020a03600435166133bd565b34801561092357600080fd5b5061041061358b565b34801561093857600080fd5b506106b8613649565b34801561094d57600080fd5b50610410600160a060020a0360043516602435613650565b34801561097157600080fd5b506106b86137e8565b34801561098657600080fd5b50610410600160a060020a03600435166137ef565b3480156109a757600080fd5b5061047561388e565b3480156109bc57600080fd5b50610410600160a060020a0360043516613893565b3480156109dd57600080fd5b506106b8613a49565b3480156109f257600080fd5b506106df613a4f565b348015610a0757600080fd5b50610410600435613a5e565b348015610a1f57600080fd5b50610410600160a060020a0360043516602435613bb1565b348015610a4357600080fd5b50610410600160a060020a0360043581169060243581169060443516613da6565b348015610a7057600080fd5b50610410614265565b348015610a8557600080fd5b506106df6145b5565b348015610a9a57600080fd5b50610aa36145c4565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610adf578181015183820152602001610ac7565b505050509050019250505060405180910390f35b348015610aff57600080fd5b5061047561461e565b348015610b1457600080fd5b50610410600435614623565b348015610b2c57600080fd5b506104106147a6565b348015610b4157600080fd5b506106b861461e565b600080808084600160a060020a0381161515610b9e576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600160a060020a038616600081815260086020526040902054600980549194509084908110610bc957fe5b600091825260209091200154600160a060020a031614610c21576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009805483908110610c2f57fe5b600091825260209091200154600a8054600160a060020a039092169184908110610c5557fe5b600091825260209091200154600b8054600160a060020a039092169185908110610c7b57fe5b6000918252602090912001549196509450600160a060020a0316925050509193909250565b60055460065460098054604080516020808402820181019092528281526060958695869560009586959194600a94600b94600160a060020a03918216949116928791830182828015610d1b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cfd575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610d59575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610dd357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610db5575b50505050509250945094509450945094509091929394565b606060008060015481805480602002602001604051908101604052809291908181526020018280548015610e4857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e2a575b50505050509150915091509091565b600082600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610eff576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d6020811015610f6857600080fd5b505114610fbf576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b610fd66006600160a060020a038716866000614af1565b9250610fef6006600160a060020a038716866000614bc4565b610ff8836151f5565b80156110235750600160008481526003602052604090206006015460ff16600481111561102157fe5b145b156110315761103183615210565b5050505050565b600080333014611080576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff1615156110e2576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6000546110f690600163ffffffff61591416565b6001546032821115801561110a5750818111155b801561111557508015155b801561112057508115155b1515611164576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b60008054600160a060020a0388168252600260205260408220805460ff19169055955093505b6001850384101561123d5785600160a060020a03166000858154811015156111ae57fe5b600091825260209091200154600160a060020a03161415611232576000805460001987019081106111db57fe5b60009182526020822001548154600160a060020a039091169190869081106111ff57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061123d565b60019093019261118a565b60008054600019870190811061124f57fe5b600091825260208220018054600160a060020a03191690555461127990600163ffffffff61591416565b611284600082615a01565b5061128d61216f565b604051600160a060020a038716907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc256522090600090a2505050505050565b6000333014611310576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600954600010156113ae57600160a060020a03841660008181526008602052604090205460098054909190811061134357fe5b600091825260209091200154600160a060020a031614156113ae576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b83600160a060020a031683600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113f657600080fd5b505af115801561140a573d6000803e3d6000fd5b505050506040513d602081101561142057600080fd5b5051600160a060020a03161461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b81600160a060020a031683600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b505050506040513d60208110156114e057600080fd5b5051600160a060020a031614611540576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b82600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50511515600114611603576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b5060098054600160a060020a03808616600081815260086020908152604080832086905560018087019097557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af86018054600160a060020a03199081168617909155600a8054808a019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180548b88169083168117909155600b8054998a0181559094527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99097018054958916959097168517909655855192835282015280840191909152915190917fe01726557c1ea9f7286dca4bba890e96fea9041689db298806306cafa74c9e91919081900360600190a150505050565b600281565b3360008181526002602052604081205490919060ff16151561177f576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b611796600a600160a060020a038516600080614af1565b91506117af600a600160a060020a038516600080614bc4565b6117b8826151f5565b80156117e35750600160008381526003602052604090206006015460ff1660048111156117e157fe5b145b156117f1576117f182615210565b505050565b33600081815260026020526040812054909182918291829160ff161515611855576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b61186189898989614af1565b60008181526003602052604090206005015490955015156118cc576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420726571756573742e00000000000000000000000000000000604482015290519081900360640190fd5b600160008681526003602052604090206006015460ff1660048111156118ee57fe5b14611943576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b60008581526003602052604081206004015490945092508391505b82821015611e2657600085815260036020526040902060040180548390811061198357fe5b600091825260209091200154600160a060020a0316331415611e1b57600085815260036020526040902060050154600194504262093a809091011015611b2f5760008581526003602052604090206005015442621275009091011015611a3e576119ec8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611a266004830182615a25565b5060006005820155600601805460ff19169055611a5b565b6000858152600360205260409020600601805460ff191660041790555b600085815260036020526040908190209051339187917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918d918d918d918d91600401908086600a811115611aac57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611b1857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611afa575b5050965050505050505060405180910390a3611e16565b60001983018214611bc057600085815260036020526040902060040180546000198501908110611b5b57fe5b6000918252602080832090910154878352600390915260409091206004018054600160a060020a039092169184908110611b9157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600085815260036020526040902060040180546000198501908110611be157fe5b600091825260208083209091018054600160a060020a0319169055868252600390526040902060040154611c1c90600163ffffffff61591416565b6000868152600360205260409020611c379060040182615a01565b5060008581526003602081905260409182902080546001820154600283015493830154945133958b957f9c174b2536ba49e3478ca649dac74d9e9f71f70adf70f193e780eabbfcdc367c9560ff9095169490926004909101908086600a811115611c9d57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611d0957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611ceb575b5050965050505050505060405180910390a36000858152600360205260409020600401541515611e1657611d3c8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611d766004830182615a25565b506000600582018190556006909101805460ff19169055858152600360208190526040918290208054600182015460028301549290930154935133948a947fbfda049a0206fd9c90ed4a3170f5bfaad83c323a16835dd68fea92faa247c2cd9460ff9094169390929091908085600a811115611dee57fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a35b611e26565b60019091019061195e565b831515611e7d576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f74207265717565737465642e000000604482015290519081900360640190fd5b505050505050505050565b600060606000806000611e9d89898989614af1565b600081815260036020908152604091829020600581015460068201546004909201805485518186028101860190965280865295965086959094919360ff90931692859190830182828015611f1a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611efc575b50505050509250945094509450945050945094509450949050565b600481565b600c5460ff1681565b60408051808201909152600b81527f41646472657373426f6f6b000000000000000000000000000000000000000000602082015281565b600080333014611fc2576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200157600080fd5b505af1158015612015573d6000803e3d6000fd5b505050506040513d602081101561202b57600080fd5b505114612082576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060068054600160a060020a03848116600160a060020a031983161790925516600081156121185781600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505050506040513d602081101561211357600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517ffdccdf242038c2d09605009fbb95e03f75cdbd106d0a9e52a1670be9553c88489181900360800190a150505050565b6000803330146121b7576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b505060045460005b8181101561223b57600360006004838154811015156121da57fe5b600091825260208083209091015483528201929092526040018120805460ff19168155600181018290556002810182905560038101829055906122206004830182615a25565b5060006005820155600601805460ff191690556001016121bf565b61224760046000615a25565b6040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b90600090a15050565b600c54610100900460ff1681565b60003330146122c9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b50600160a060020a03811660008181526008602052604090205460098054919291839081106122f457fe5b600091825260209091200154600160a060020a03161461234c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009546001106123a6576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b6009546000190181101561251e576009805460001981019081106123c657fe5b60009182526020909120015460098054600160a060020a0390921691839081106123ec57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600a805490916000190190811061242b57fe5b600091825260209091200154600a8054600160a060020a03909216918390811061245157fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600b805490916000190190811061249057fe5b600091825260209091200154600b8054600160a060020a0390921691839081106124b657fe5b600091825260208220018054600160a060020a031916600160a060020a039390931692909217909155600980548392600892909160001981019081106124f857fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600160a060020a03821660009081526008602052604081205560098054600019810190811061254957fe5b60009182526020909120018054600160a060020a031916905560095461257690600163ffffffff61591416565b612581600982615a01565b50600a8054600019810190811061259457fe5b60009182526020909120018054600160a060020a0319169055600a546125c190600163ffffffff61591416565b6125cc600a82615a01565b50600b805460001981019081106125df57fe5b60009182526020909120018054600160a060020a0319169055600b5461260c90600163ffffffff61591416565b612617600b82615a01565b5060408051600160a060020a038416815290517fa30079721e55931e89e7cdb421712ad0fcc817e7cac8fe954aa7ed0d46b9c42d9181900360200190a15050565b603281565b600754600160a060020a031681565b3330146126b1576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615612724576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b60005461273890600163ffffffff6159e816565b6001546032821115801561274c5750818111155b801561275757508015155b801561276257508115155b15156127a6576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600160a060020a0384166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018054600160a060020a031916909117905561281161216f565b604051600160a060020a038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90600090a250505050565b600c54606090819081908190600090819060ff161515612884576040805160008082526020820190815281830190925294509250612b2f565b6009805490506003026002016040519080825280602002602001820160405280156128b9578160200160208202803883390190505b5093506009805490506003026002016040519080825280602002602001820160405280156128f1578160200160208202803883390190505b506009549093509150600090505b81811015612a71576000848260030281518110151561291a57fe5b60ff909216602092830290910190910152600980548290811061293957fe5b6000918252602090912001548351600160a060020a039091169084906003840290811061296257fe5b600160a060020a039092166020928302909101909101528351600190859060038402830190811061298f57fe5b60ff909216602092830290910190910152600a8054829081106129ae57fe5b6000918252602090912001548351600160a060020a03909116908490600384026001019081106129da57fe5b600160a060020a0390921660209283029091019091015283516002908590600384028301908110612a0757fe5b60ff909216602092830290910190910152600b805482908110612a2657fe5b6000918252602090912001548351600160a060020a0390911690849060026003850201908110612a5257fe5b600160a060020a039092166020928302909101909101526001016128ff565b60038483600302815181101515612a8457fe5b60ff9092166020928302909101909101526005548351600160a060020a0390911690849060038502908110612ab557fe5b600160a060020a039092166020928302909101909101528351600490859060016003860201908110612ae357fe5b60ff9092166020928302909101909101526006548351600160a060020a0390911690849060038502600101908110612b1757fe5b600160a060020a039092166020928302909101909101525b509194909350915050565b600081565b606481565b600080838360328211801590612b5a5750818111155b8015612b6557508015155b8015612b7057508115155b1515612bb4576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b7388bb3838aa0a140acb73eeb3d4b25a8d3afd58d43314612c1f576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c69642073656e6465722e0000000000000000000000000000000000604482015290519081900360640190fd5b600c54610100900460ff1615612c7f576040805160e560020a62461bcd02815260206004820152601460248201527f416c726561647920636f6e73747275637465642e000000000000000000000000604482015290519081900360640190fd5b600c805460ff19169055859350600092505b83831015612da65760026000888886818110612ca957fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff16158015612d015750868684818110612ce357fe5b90506020020135600160a060020a0316600160a060020a0316600014155b1515612d57576040805160e560020a62461bcd02815260206004820152601e60248201527f41646472657373206973206e756c6c206f72206e6f7420756e697175652e0000604482015290519081900360640190fd5b600160026000898987818110612d6957fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560019290920191612c91565b612db260008888615a46565b506001859055600c805461ff001916610100179055604080518082018252600b81527f41646472657373426f6f6b00000000000000000000000000000000000000000060208083019182528351938401899052606080855283519085015282517fc5caa942b8f8ea45a2e094d941dbba0ef9c0307f34c81ce78e71bfb128d6b25a946000938b939192839283019160808401918083838a5b83811015612e62578181015183820152602001612e4a565b50505050905090810190601f168015612e8f5780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015612ed757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612eb9575b50509550505050505060405180910390a150505050505050565b600160a060020a038116600090815260026020526040812054829060ff161515612f53576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515612faa576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b83600160a060020a0381161515612ff9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b60005461300d90600163ffffffff61591416565b600154603282111580156130215750818111155b801561302c57508015155b801561303757508115155b151561307b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6130926002600160a060020a038916600080614af1565b95506130ab6002600160a060020a038916600080614bc4565b6130b4866151f5565b80156130df5750600160008781526003602052604090206006015460ff1660048111156130dd57fe5b145b156130ed576130ed86615210565b50505050505050565b60008181526003602081815260408084208054600182015460028301549583015460058401546006850154600490950180548751818a0281018a019098528088528a998a998a996060998b998a9960ff91821699909895979096909594919092169291859183018282801561319457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613176575b505050505092509650965096509650965096509650919395979092949650565b60008080808085600160a060020a0381161515613209576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600a546000965086955093508492505b8383101561326457600a80543391908590811061323257fe5b600091825260209091200154600160a060020a031614156132595760019550829450613264565b600190920191613219565b8515156132bb576040805160e560020a62461bcd02815260206004820152601e60248201527f4d73672e73656e646572206973206e6f7420434e20636f6e74726163742e0000604482015290519081900360640190fd5b600b8054869081106132c957fe5b600091825260209091200154600b8054600160a060020a0390921693508891879081106132f257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055507faa5c92ffd739bc0b8b117b671e7d713917ddb1440b436263a3ea106d70c6f05f60098681548110151561335057fe5b600091825260209091200154600b8054600160a060020a03909216918591908990811061337957fe5b6000918252602091829020015460408051600160a060020a03958616815293851692840192909252929092168183015290519081900360600190a150505050505050565b3360008181526002602052604081205490919060ff161515613417576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff161561348a576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b83600160a060020a03811615156134d9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b6000546134ed90600163ffffffff6159e816565b600154603282111580156135015750818111155b801561350c57508015155b801561351757508115155b151561355b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6135726001600160a060020a038916600080614af1565b95506130ab6001600160a060020a038916600080614bc4565b3360008181526002602052604081205490919060ff1615156135e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6135f3600460008080614af1565b9150613603600460008080614bc4565b61360c826151f5565b80156136375750600160008381526003602052604090206006015460ff16600481111561363557fe5b145b156136455761364582615210565b5050565b62093a8081565b600082600160a060020a03811615156136a1576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156136f8576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561373757600080fd5b505af115801561374b573d6000803e3d6000fd5b505050506040513d602081101561376157600080fd5b5051146137b8576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b6137cf6007600160a060020a038716866000614af1565b9250610fef6007600160a060020a038716866000614bc4565b6212750081565b333014613834576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b60078054600160a060020a031916600160a060020a03838116919091179182905560408051929091168252517f508aacd44cfe23a34a8c2643ab08c3410cf5505632cfce58dcfa0efa2fd2ff37916020908290030190a150565b600381565b60008082600160a060020a03811615156138e5576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff16151561393c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a03851660008181526008602052604090205460098054919650908690811061396757fe5b600091825260209091200154600160a060020a0316146139bf576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b600954600110613a19576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b613a306009600160a060020a038716600080614af1565b9250610fef6009600160a060020a038716600080614bc4565b60015481565b600654600160a060020a031681565b333014613aa3576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b6000548160328211801590613ab85750818111155b8015613ac357508015155b8015613ace57508115155b1515613b12576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154831415613b6c576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b6001839055613b7961216f565b6040805184815290517f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9181900360200190a1505050565b600080333014613bf9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050506040513d6020811015613c6257600080fd5b505114613cb9576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060058054600160a060020a03848116600160a060020a03198316179092551660008115613d4f5781600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613d2057600080fd5b505af1158015613d34573d6000803e3d6000fd5b505050506040513d6020811015613d4a57600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517fd531725ac89042f190fd73adfdeff435e07500f1a92b4b87743f1bcf91acb3a79181900360800190a150505050565b600083600160a060020a0381161515613df7576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e46576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e95576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613eec576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60095460001015613f8a57600160a060020a038816600081815260086020526040902054600980549091908110613f1f57fe5b600091825260209091200154600160a060020a03161415613f8a576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b87600160a060020a031687600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b505050506040513d6020811015613ffc57600080fd5b5051600160a060020a03161461404a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b85600160a060020a031687600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561409257600080fd5b505af11580156140a6573d6000803e3d6000fd5b505050506040513d60208110156140bc57600080fd5b5051600160a060020a03161461411c576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b86600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561415a57600080fd5b505af115801561416e573d6000803e3d6000fd5b505050506040513d602081101561418457600080fd5b505115156001146141df576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b6141fb6008600160a060020a03808b16908a8116908a16614af1565b94506142196008600160a060020a03808b16908a8116908a16614bc4565b614222856151f5565b801561424d5750600160008681526003602052604090206006015460ff16600481111561424b57fe5b145b1561425b5761425b85615210565b5050505050505050565b3330146142aa576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600c5460ff1615614305576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b600054151561435e576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156143c0576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614422576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600954151561447b576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a54600954146144fc576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a541461457d576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b600c805460ff191660011790556040517f29d89931226d613bf878a0be8c635eaf2049121c8c68d5ad80a78f0ac9005d4b90600090a1565b600554600160a060020a031681565b6060600480548060200260200160405190810160405280929190818152602001828054801561461357602002820191906000526020600020905b815481526001909101906020018083116145fe575b505050505090505b90565b600181565b3360008181526002602052604081205490919060ff16151561467d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60005483603282118015906146925750818111155b801561469d57508015155b80156146a857508115155b15156146ec576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154851415614746576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b614754600386600080614af1565b9350614764600386600080614bc4565b61476d846151f5565b80156147985750600160008581526003602052604090206006015460ff16600481111561479657fe5b145b156110315761103184615210565b3360008181526002602052604081205490919060ff161515614800576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600c5460ff161561485b576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b60005415156148b4576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a03161515614916576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614978576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b60095415156149d1576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a5460095414614a52576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a5414614ad3576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b614ae1600560008080614af1565b9150613603600560008080614bc4565b6000848484846040516020018085600a811115614b0a57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260018101949094525060218301919091526041808301919091526040805180840390920182526061909201918290528051909250819060208401908083835b60208310614b8f5780518252601f199092019160209182019101614b70565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b6000806000614bd587878787614af1565b60008181526003602052604090206005015490935015614f5e5760008381526003602052604090206005015442621275009091011015614c6a57614c188361592b565b60008381526003602081905260408220805460ff19168155600181018390556002810183905590810182905590614c526004830182615a25565b5060006005820155600601805460ff19169055614f5e565b6000838152600360205260409020600501544262093a809091011015614da257600460008481526003602052604090206006015460ff166004811115614cac57fe5b14614cce576000838152600360205260409020600601805460ff191660041790555b600083815260036020526040908190209051339185917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918b918b918b918b91600401908086600a811115614d1f57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614d8b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614d6d575b5050965050505050505060405180910390a3614f5e565b6000838152600360205260409020600501544210614f5e575050600081815260036020526040812060040154905b81811015614e69576000838152600360205260409020600401805482908110614df557fe5b600091825260209091200154600160a060020a0316331415614e61576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220616c7265616479207265717565737465642e000000604482015290519081900360640190fd5b600101614dd0565b600083815260036020908152604080832060040180546001810182558185529284209092018054600160a060020a03191633908117909155928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a811115614edf57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614f4b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614f2d575b5050965050505050505060405180910390a35b60008381526003602052604090206005015415156130ed57600454606411614fe357600487600a811115614f8e57fe5b14614fe3576040805160e560020a62461bcd02815260206004820152601560248201527f52657175657374206c6973742069732066756c6c2e0000000000000000000000604482015290519081900360640190fd5b60e06040519081016040528088600a811115614ffb57fe5b81526020808201899052604080830189905260608301889052805160008082529281019091526080909201919050815242602082015260400160019052600084815260036020526040902081518154829060ff1916600183600a81111561505e57fe5b021790555060208281015160018301556040830151600283015560608301516003830155608083015180516150999260048501920190615aa9565b5060a0820151600582015560c082015160068201805460ff191660018360048111156150c157fe5b0217905550505060008381526003602090815260408083206004908101805460018181018355828752948620018054600160a060020a0319163390811790915582549485019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909301879055928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a81111561516e57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c00190849080156151da57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116151bc575b5050965050505050505060405180910390a350505050505050565b60015460009182526003602052604090912060040154101590565b600061521a615afe565b600083815260036020526040808220815160e0810190925280549294509091829060ff16600a81111561524957fe5b600a81111561525457fe5b8152600182015460208083019190915260028301546040808401919091526003840154606084015260048401805482518185028101850190935280835260809094019391929091908301828280156152d557602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116152b7575b505050918352505060058201546020820152600682015460409091019060ff16600481111561530057fe5b600481111561530b57fe5b905250905060018151600a81111561531f57fe5b1415615389576020810151604080517f70480275000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916370480275916024808301926000929190829003018183875af192505050915061579a565b60028151600a81111561539857fe5b1415615402576020810151604080517f27e1f7df000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916327e1f7df916024808301926000929190829003018183875af192505050915061579a565b60038151600a81111561541157fe5b1415615473576020810151604080517fc47afb3a000000000000000000000000000000000000000000000000000000008152600481019290925251309163c47afb3a916024808301926000929190829003018183875af192505050915061579a565b60048151600a81111561548257fe5b14156154c55730600160a060020a0316634f97638f6040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60058151600a8111156154d457fe5b14156155175730600160a060020a031663cec924666040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60068151600a81111561552657fe5b141561559957602081015160408083015181517fc7e9de75000000000000000000000000000000000000000000000000000000008152600160a060020a039093166004840152602483015251309163c7e9de75916044808301926000929190829003018183875af192505050915061579a565b60078151600a8111156155a857fe5b141561561b57602081015160408083015181517f4c5d435c000000000000000000000000000000000000000000000000000000008152600160a060020a0390931660048401526024830152513091634c5d435c916044808301926000929190829003018183875af192505050915061579a565b60088151600a81111561562a57fe5b14156156ad576020810151604080830151606084015182517f298b3c61000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201529184166024830152909216604483015251309163298b3c61916064808301926000929190829003018183875af192505050915061579a565b60098151600a8111156156bc57fe5b1415615726576020810151604080517f579740db000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163579740db916024808301926000929190829003018183875af192505050915061579a565b600a8151600a81111561573557fe5b141561579a576020810151604080517fafaaf330000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163afaaf330916024808301926000929190829003018183875af194505050505b6157a38361592b565b811561585d57600083815260036020526040902060050154156157dd576000838152600360205260409020600601805460ff191660021790555b33600160a060020a031683600019167fc55c9229184beabeee72b6970a96691b4200919e47579cc4b9be50a1bec7ef1183600001518460200151856040015186606001516040518085600a81111561583157fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a36117f1565b60008381526003602052604090206005015415615894576000838152600360208190526040909120600601805460ff191690911790555b33600160a060020a031683600019167ff151a3ee41626c2511372320f09f7957af81c8c1cde8cdf3f05a5979626eaaf383600001518460200151856040015186606001516040518085600a8111156158e857fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3505050565b6000808383111561592457600080fd5b5050900390565b60045460005b818110156117f157600480548290811061594757fe5b6000918252602090912001548314156159e0576000198201811461599e5760048054600019840190811061597757fe5b906000526020600020015460048281548110151561599157fe5b6000918252602090912001555b6004805460001984019081106159b057fe5b60009182526020822001556004546159cf90600163ffffffff61591416565b6159da600482615a01565b506117f1565b600101615931565b6000828201838110156159fa57600080fd5b9392505050565b8154818355818111156117f1576000838152602090206117f1918101908301615b3b565b5080546000825590600052602060002090810190615a439190615b3b565b50565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a99578154600160a060020a031916600160a060020a03843516178255602090920191600190910190615a66565b50615aa5929150615b55565b5090565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a995782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615ac9565b6040805160e081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b61461b91905b80821115615aa55760008155600101615b41565b61461b91905b80821115615aa5578054600160a060020a0319168155600101615b5b560041646472657373206973206e6f742061646d696e2e0000000000000000000000496e76616c696420434e206e6f64652049442e0000000000000000000000000041646472657373206973206e756c6c2e000000000000000000000000000000004e6f742061206d756c74697369672d7472616e73616374696f6e2e0000000000496e76616c696420726571756972656d656e742e000000000000000000000000a165627a7a72305820ee836dcf10d2fdb3e06ee6d250b00c70dcaa43ee950a4e5d026d4c8889ca96740029", + Bin: "0x608060405234801561001057600080fd5b50615c4580620000216000396000f3006080604052600436106102215763ffffffff60e060020a60003504166315575d5a8114610226578063160370b8146102725780631865c57d1461037c57806321ac4ad4146103ec57806327e1f7df14610412578063298b3c611461043357806332b91e8514610460578063394a144a1461048b5780633f0628b1146104ac578063407091eb146104d057806341b6945c1461056c5780634a8c1fb4146105815780634b6a94cc146105aa5780634c5d435c146106345780634f97638f1461065857806350a5bb691461066d578063579740db1461068257806358d65880146106a35780636abd623d146106ca57806370480275146106fb578063715b208b1461071c57806376674c54146107ca578063778f39cb146107df5780637894c366146107f4578063791b51231461081857806382d67e5a14610839578063832a2aad146108d5578063863f5c0a146108f657806387cd9feb146109175780638e6f6b771461092c5780639258d76814610941578063934d1fa414610965578063afaaf3301461097a578063b50060e41461099b578063b5067706146109b0578063b7563930146109d1578063b858dd95146109e6578063c47afb3a146109fb578063c7e9de7514610a13578063cc11efc014610a37578063cec9246614610a64578063d267eda514610a79578063da34a0bd14610a8e578063de5bbfbc14610af3578063e748357b14610b08578063feb15ca114610b20578063ffa1ad7414610b35575b600080fd5b34801561023257600080fd5b50610247600160a060020a0360043516610b4a565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b34801561027e57600080fd5b50610287610ca0565b60408051600160a060020a0380851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b838110156102e45781810151838201526020016102cc565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b505050509050019850505050505050505060405180910390f35b34801561038857600080fd5b50610391610deb565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156103d75781810151838201526020016103bf565b50505050905001935050505060405180910390f35b3480156103f857600080fd5b50610410600160a060020a0360043516602435610e57565b005b34801561041e57600080fd5b50610410600160a060020a0360043516611038565b34801561043f57600080fd5b50610410600160a060020a03600435811690602435811690604435166112c9565b34801561046c57600080fd5b50610475611720565b6040805160ff9092168252519081900360200190f35b34801561049757600080fd5b50610410600160a060020a0360043516611725565b3480156104b857600080fd5b5061041060ff600435166024356044356064356117f6565b3480156104dc57600080fd5b506104f460ff60043516602435604435606435611e88565b60408051858152908101839052602081016060820183600481111561051557fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360005b8381101561055557818101518382015260200161053d565b505050509050019550505050505060405180910390f35b34801561057857600080fd5b50610475611f35565b34801561058d57600080fd5b50610596611f3a565b604080519115158252519081900360200190f35b3480156105b657600080fd5b506105bf611f43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105f95781810151838201526020016105e1565b50505050905090810190601f1680156106265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561064057600080fd5b50610410600160a060020a0360043516602435611f7a565b34801561066457600080fd5b5061041061216f565b34801561067957600080fd5b50610596612274565b34801561068e57600080fd5b50610410600160a060020a0360043516612282565b3480156106af57600080fd5b506106b8612658565b60408051918252519081900360200190f35b3480156106d657600080fd5b506106df61265d565b60408051600160a060020a039092168252519081900360200190f35b34801561070757600080fd5b50610410600160a060020a036004351661266c565b34801561072857600080fd5b5061073161284b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b50610475612b3a565b3480156107eb57600080fd5b506106b8612b3f565b34801561080057600080fd5b50610410602460048035828101929101359035612b44565b34801561082457600080fd5b50610410600160a060020a0360043516612ef1565b34801561084557600080fd5b506108516004356130f6565b6040518088600a81111561086157fe5b60ff16815260208101889052604081018790526060810186905260a08101849052608081019060c00183600481111561089657fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360008381101561036257818101518382015260200161034a565b3480156108e157600080fd5b50610410600160a060020a03600435166131b4565b34801561090257600080fd5b50610410600160a060020a03600435166133bd565b34801561092357600080fd5b5061041061358b565b34801561093857600080fd5b506106b8613649565b34801561094d57600080fd5b50610410600160a060020a0360043516602435613650565b34801561097157600080fd5b506106b86137e8565b34801561098657600080fd5b50610410600160a060020a03600435166137ef565b3480156109a757600080fd5b5061047561388e565b3480156109bc57600080fd5b50610410600160a060020a0360043516613893565b3480156109dd57600080fd5b506106b8613a49565b3480156109f257600080fd5b506106df613a4f565b348015610a0757600080fd5b50610410600435613a5e565b348015610a1f57600080fd5b50610410600160a060020a0360043516602435613bb1565b348015610a4357600080fd5b50610410600160a060020a0360043581169060243581169060443516613da6565b348015610a7057600080fd5b50610410614265565b348015610a8557600080fd5b506106df6145b5565b348015610a9a57600080fd5b50610aa36145c4565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610adf578181015183820152602001610ac7565b505050509050019250505060405180910390f35b348015610aff57600080fd5b5061047561461e565b348015610b1457600080fd5b50610410600435614623565b348015610b2c57600080fd5b506104106147a6565b348015610b4157600080fd5b506106b861461e565b600080808084600160a060020a0381161515610b9e576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600160a060020a038616600081815260086020526040902054600980549194509084908110610bc957fe5b600091825260209091200154600160a060020a031614610c21576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009805483908110610c2f57fe5b600091825260209091200154600a8054600160a060020a039092169184908110610c5557fe5b600091825260209091200154600b8054600160a060020a039092169185908110610c7b57fe5b6000918252602090912001549196509450600160a060020a0316925050509193909250565b60055460065460098054604080516020808402820181019092528281526060958695869560009586959194600a94600b94600160a060020a03918216949116928791830182828015610d1b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cfd575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610d59575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610dd357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610db5575b50505050509250945094509450945094509091929394565b606060008060015481805480602002602001604051908101604052809291908181526020018280548015610e4857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e2a575b50505050509150915091509091565b600082600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610eff576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d6020811015610f6857600080fd5b505114610fbf576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b610fd66006600160a060020a038716866000614af1565b9250610fef6006600160a060020a038716866000614bc4565b610ff8836151f5565b80156110235750600160008481526003602052604090206006015460ff16600481111561102157fe5b145b156110315761103183615210565b5050505050565b600080333014611080576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff1615156110e2576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6000546110f690600163ffffffff61591416565b6001546032821115801561110a5750818111155b801561111557508015155b801561112057508115155b1515611164576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b60008054600160a060020a0388168252600260205260408220805460ff19169055955093505b6001850384101561123d5785600160a060020a03166000858154811015156111ae57fe5b600091825260209091200154600160a060020a03161415611232576000805460001987019081106111db57fe5b60009182526020822001548154600160a060020a039091169190869081106111ff57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061123d565b60019093019261118a565b60008054600019870190811061124f57fe5b600091825260208220018054600160a060020a03191690555461127990600163ffffffff61591416565b611284600082615a01565b5061128d61216f565b604051600160a060020a038716907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc256522090600090a2505050505050565b6000333014611310576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600954600010156113ae57600160a060020a03841660008181526008602052604090205460098054909190811061134357fe5b600091825260209091200154600160a060020a031614156113ae576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b83600160a060020a031683600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113f657600080fd5b505af115801561140a573d6000803e3d6000fd5b505050506040513d602081101561142057600080fd5b5051600160a060020a03161461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b81600160a060020a031683600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b505050506040513d60208110156114e057600080fd5b5051600160a060020a031614611540576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b82600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50511515600114611603576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b5060098054600160a060020a03808616600081815260086020908152604080832086905560018087019097557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af86018054600160a060020a03199081168617909155600a8054808a019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180548b88169083168117909155600b8054998a0181559094527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99097018054958916959097168517909655855192835282015280840191909152915190917fe01726557c1ea9f7286dca4bba890e96fea9041689db298806306cafa74c9e91919081900360600190a150505050565b600281565b3360008181526002602052604081205490919060ff16151561177f576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b611796600a600160a060020a038516600080614af1565b91506117af600a600160a060020a038516600080614bc4565b6117b8826151f5565b80156117e35750600160008381526003602052604090206006015460ff1660048111156117e157fe5b145b156117f1576117f182615210565b505050565b33600081815260026020526040812054909182918291829160ff161515611855576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b61186189898989614af1565b60008181526003602052604090206005015490955015156118cc576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420726571756573742e00000000000000000000000000000000604482015290519081900360640190fd5b600160008681526003602052604090206006015460ff1660048111156118ee57fe5b14611943576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b60008581526003602052604081206004015490945092508391505b82821015611e2657600085815260036020526040902060040180548390811061198357fe5b600091825260209091200154600160a060020a0316331415611e1b57600085815260036020526040902060050154600194504262093a809091011015611b2f5760008581526003602052604090206005015442621275009091011015611a3e576119ec8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611a266004830182615a25565b5060006005820155600601805460ff19169055611a5b565b6000858152600360205260409020600601805460ff191660041790555b600085815260036020526040908190209051339187917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918d918d918d918d91600401908086600a811115611aac57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611b1857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611afa575b5050965050505050505060405180910390a3611e16565b60001983018214611bc057600085815260036020526040902060040180546000198501908110611b5b57fe5b6000918252602080832090910154878352600390915260409091206004018054600160a060020a039092169184908110611b9157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600085815260036020526040902060040180546000198501908110611be157fe5b600091825260208083209091018054600160a060020a0319169055868252600390526040902060040154611c1c90600163ffffffff61591416565b6000868152600360205260409020611c379060040182615a01565b5060008581526003602081905260409182902080546001820154600283015493830154945133958b957f9c174b2536ba49e3478ca649dac74d9e9f71f70adf70f193e780eabbfcdc367c9560ff9095169490926004909101908086600a811115611c9d57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611d0957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611ceb575b5050965050505050505060405180910390a36000858152600360205260409020600401541515611e1657611d3c8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611d766004830182615a25565b506000600582018190556006909101805460ff19169055858152600360208190526040918290208054600182015460028301549290930154935133948a947fbfda049a0206fd9c90ed4a3170f5bfaad83c323a16835dd68fea92faa247c2cd9460ff9094169390929091908085600a811115611dee57fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a35b611e26565b60019091019061195e565b831515611e7d576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f74207265717565737465642e000000604482015290519081900360640190fd5b505050505050505050565b600060606000806000611e9d89898989614af1565b600081815260036020908152604091829020600581015460068201546004909201805485518186028101860190965280865295965086959094919360ff90931692859190830182828015611f1a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611efc575b50505050509250945094509450945050945094509450949050565b600481565b600c5460ff1681565b60408051808201909152600b81527f41646472657373426f6f6b000000000000000000000000000000000000000000602082015281565b600080333014611fc2576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200157600080fd5b505af1158015612015573d6000803e3d6000fd5b505050506040513d602081101561202b57600080fd5b505114612082576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060068054600160a060020a03848116600160a060020a031983161790925516600081156121185781600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505050506040513d602081101561211357600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517ffdccdf242038c2d09605009fbb95e03f75cdbd106d0a9e52a1670be9553c88489181900360800190a150505050565b6000803330146121b7576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b505060045460005b8181101561223b57600360006004838154811015156121da57fe5b600091825260208083209091015483528201929092526040018120805460ff19168155600181018290556002810182905560038101829055906122206004830182615a25565b5060006005820155600601805460ff191690556001016121bf565b61224760046000615a25565b6040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b90600090a15050565b600c54610100900460ff1681565b60003330146122c9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b50600160a060020a03811660008181526008602052604090205460098054919291839081106122f457fe5b600091825260209091200154600160a060020a03161461234c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009546001106123a6576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b6009546000190181101561251e576009805460001981019081106123c657fe5b60009182526020909120015460098054600160a060020a0390921691839081106123ec57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600a805490916000190190811061242b57fe5b600091825260209091200154600a8054600160a060020a03909216918390811061245157fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600b805490916000190190811061249057fe5b600091825260209091200154600b8054600160a060020a0390921691839081106124b657fe5b600091825260208220018054600160a060020a031916600160a060020a039390931692909217909155600980548392600892909160001981019081106124f857fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600160a060020a03821660009081526008602052604081205560098054600019810190811061254957fe5b60009182526020909120018054600160a060020a031916905560095461257690600163ffffffff61591416565b612581600982615a01565b50600a8054600019810190811061259457fe5b60009182526020909120018054600160a060020a0319169055600a546125c190600163ffffffff61591416565b6125cc600a82615a01565b50600b805460001981019081106125df57fe5b60009182526020909120018054600160a060020a0319169055600b5461260c90600163ffffffff61591416565b612617600b82615a01565b5060408051600160a060020a038416815290517fa30079721e55931e89e7cdb421712ad0fcc817e7cac8fe954aa7ed0d46b9c42d9181900360200190a15050565b603281565b600754600160a060020a031681565b3330146126b1576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615612724576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b60005461273890600163ffffffff6159e816565b6001546032821115801561274c5750818111155b801561275757508015155b801561276257508115155b15156127a6576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600160a060020a0384166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018054600160a060020a031916909117905561281161216f565b604051600160a060020a038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90600090a250505050565b600c54606090819081908190600090819060ff161515612884576040805160008082526020820190815281830190925294509250612b2f565b6009805490506003026002016040519080825280602002602001820160405280156128b9578160200160208202803883390190505b5093506009805490506003026002016040519080825280602002602001820160405280156128f1578160200160208202803883390190505b506009549093509150600090505b81811015612a71576000848260030281518110151561291a57fe5b60ff909216602092830290910190910152600980548290811061293957fe5b6000918252602090912001548351600160a060020a039091169084906003840290811061296257fe5b600160a060020a039092166020928302909101909101528351600190859060038402830190811061298f57fe5b60ff909216602092830290910190910152600a8054829081106129ae57fe5b6000918252602090912001548351600160a060020a03909116908490600384026001019081106129da57fe5b600160a060020a0390921660209283029091019091015283516002908590600384028301908110612a0757fe5b60ff909216602092830290910190910152600b805482908110612a2657fe5b6000918252602090912001548351600160a060020a0390911690849060026003850201908110612a5257fe5b600160a060020a039092166020928302909101909101526001016128ff565b60038483600302815181101515612a8457fe5b60ff9092166020928302909101909101526005548351600160a060020a0390911690849060038502908110612ab557fe5b600160a060020a039092166020928302909101909101528351600490859060016003860201908110612ae357fe5b60ff9092166020928302909101909101526006548351600160a060020a0390911690849060038502600101908110612b1757fe5b600160a060020a039092166020928302909101909101525b509194909350915050565b600081565b606481565b600080838360328211801590612b5a5750818111155b8015612b6557508015155b8015612b7057508115155b1515612bb4576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b7388bb3838aa0a140acb73eeb3d4b25a8d3afd58d43314612c1f576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c69642073656e6465722e0000000000000000000000000000000000604482015290519081900360640190fd5b600c54610100900460ff1615612c7f576040805160e560020a62461bcd02815260206004820152601460248201527f416c726561647920636f6e73747275637465642e000000000000000000000000604482015290519081900360640190fd5b600c805460ff19169055859350600092505b83831015612da65760026000888886818110612ca957fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff16158015612d015750868684818110612ce357fe5b90506020020135600160a060020a0316600160a060020a0316600014155b1515612d57576040805160e560020a62461bcd02815260206004820152601e60248201527f41646472657373206973206e756c6c206f72206e6f7420756e697175652e0000604482015290519081900360640190fd5b600160026000898987818110612d6957fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560019290920191612c91565b612db260008888615a46565b506001859055600c805461ff001916610100179055604080518082018252600b81527f41646472657373426f6f6b00000000000000000000000000000000000000000060208083019182528351938401899052606080855283519085015282517fc5caa942b8f8ea45a2e094d941dbba0ef9c0307f34c81ce78e71bfb128d6b25a946000938b939192839283019160808401918083838a5b83811015612e62578181015183820152602001612e4a565b50505050905090810190601f168015612e8f5780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015612ed757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612eb9575b50509550505050505060405180910390a150505050505050565b600160a060020a038116600090815260026020526040812054829060ff161515612f53576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515612faa576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b83600160a060020a0381161515612ff9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b60005461300d90600163ffffffff61591416565b600154603282111580156130215750818111155b801561302c57508015155b801561303757508115155b151561307b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6130926002600160a060020a038916600080614af1565b95506130ab6002600160a060020a038916600080614bc4565b6130b4866151f5565b80156130df5750600160008781526003602052604090206006015460ff1660048111156130dd57fe5b145b156130ed576130ed86615210565b50505050505050565b60008181526003602081815260408084208054600182015460028301549583015460058401546006850154600490950180548751818a0281018a019098528088528a998a998a996060998b998a9960ff91821699909895979096909594919092169291859183018282801561319457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613176575b505050505092509650965096509650965096509650919395979092949650565b60008080808085600160a060020a0381161515613209576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600a546000965086955093508492505b8383101561326457600a80543391908590811061323257fe5b600091825260209091200154600160a060020a031614156132595760019550829450613264565b600190920191613219565b8515156132bb576040805160e560020a62461bcd02815260206004820152601e60248201527f4d73672e73656e646572206973206e6f7420434e20636f6e74726163742e0000604482015290519081900360640190fd5b600b8054869081106132c957fe5b600091825260209091200154600b8054600160a060020a0390921693508891879081106132f257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055507faa5c92ffd739bc0b8b117b671e7d713917ddb1440b436263a3ea106d70c6f05f60098681548110151561335057fe5b600091825260209091200154600b8054600160a060020a03909216918591908990811061337957fe5b6000918252602091829020015460408051600160a060020a03958616815293851692840192909252929092168183015290519081900360600190a150505050505050565b3360008181526002602052604081205490919060ff161515613417576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff161561348a576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b83600160a060020a03811615156134d9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b6000546134ed90600163ffffffff6159e816565b600154603282111580156135015750818111155b801561350c57508015155b801561351757508115155b151561355b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6135726001600160a060020a038916600080614af1565b95506130ab6001600160a060020a038916600080614bc4565b3360008181526002602052604081205490919060ff1615156135e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6135f3600460008080614af1565b9150613603600460008080614bc4565b61360c826151f5565b80156136375750600160008381526003602052604090206006015460ff16600481111561363557fe5b145b156136455761364582615210565b5050565b62093a8081565b600082600160a060020a03811615156136a1576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156136f8576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561373757600080fd5b505af115801561374b573d6000803e3d6000fd5b505050506040513d602081101561376157600080fd5b5051146137b8576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b6137cf6007600160a060020a038716866000614af1565b9250610fef6007600160a060020a038716866000614bc4565b6212750081565b333014613834576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b60078054600160a060020a031916600160a060020a03838116919091179182905560408051929091168252517f508aacd44cfe23a34a8c2643ab08c3410cf5505632cfce58dcfa0efa2fd2ff37916020908290030190a150565b600381565b60008082600160a060020a03811615156138e5576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff16151561393c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a03851660008181526008602052604090205460098054919650908690811061396757fe5b600091825260209091200154600160a060020a0316146139bf576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b600954600110613a19576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b613a306009600160a060020a038716600080614af1565b9250610fef6009600160a060020a038716600080614bc4565b60015481565b600654600160a060020a031681565b333014613aa3576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b6000548160328211801590613ab85750818111155b8015613ac357508015155b8015613ace57508115155b1515613b12576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154831415613b6c576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b6001839055613b7961216f565b6040805184815290517f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9181900360200190a1505050565b600080333014613bf9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050506040513d6020811015613c6257600080fd5b505114613cb9576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060058054600160a060020a03848116600160a060020a03198316179092551660008115613d4f5781600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613d2057600080fd5b505af1158015613d34573d6000803e3d6000fd5b505050506040513d6020811015613d4a57600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517fd531725ac89042f190fd73adfdeff435e07500f1a92b4b87743f1bcf91acb3a79181900360800190a150505050565b600083600160a060020a0381161515613df7576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e46576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e95576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613eec576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60095460001015613f8a57600160a060020a038816600081815260086020526040902054600980549091908110613f1f57fe5b600091825260209091200154600160a060020a03161415613f8a576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b87600160a060020a031687600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b505050506040513d6020811015613ffc57600080fd5b5051600160a060020a03161461404a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b85600160a060020a031687600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561409257600080fd5b505af11580156140a6573d6000803e3d6000fd5b505050506040513d60208110156140bc57600080fd5b5051600160a060020a03161461411c576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b86600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561415a57600080fd5b505af115801561416e573d6000803e3d6000fd5b505050506040513d602081101561418457600080fd5b505115156001146141df576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b6141fb6008600160a060020a03808b16908a8116908a16614af1565b94506142196008600160a060020a03808b16908a8116908a16614bc4565b614222856151f5565b801561424d5750600160008681526003602052604090206006015460ff16600481111561424b57fe5b145b1561425b5761425b85615210565b5050505050505050565b3330146142aa576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600c5460ff1615614305576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b600054151561435e576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156143c0576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614422576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600954151561447b576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a54600954146144fc576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a541461457d576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b600c805460ff191660011790556040517f29d89931226d613bf878a0be8c635eaf2049121c8c68d5ad80a78f0ac9005d4b90600090a1565b600554600160a060020a031681565b6060600480548060200260200160405190810160405280929190818152602001828054801561461357602002820191906000526020600020905b815481526001909101906020018083116145fe575b505050505090505b90565b600181565b3360008181526002602052604081205490919060ff16151561467d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60005483603282118015906146925750818111155b801561469d57508015155b80156146a857508115155b15156146ec576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154851415614746576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b614754600386600080614af1565b9350614764600386600080614bc4565b61476d846151f5565b80156147985750600160008581526003602052604090206006015460ff16600481111561479657fe5b145b156110315761103184615210565b3360008181526002602052604081205490919060ff161515614800576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600c5460ff161561485b576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b60005415156148b4576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a03161515614916576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614978576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b60095415156149d1576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a5460095414614a52576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a5414614ad3576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b614ae1600560008080614af1565b9150613603600560008080614bc4565b6000848484846040516020018085600a811115614b0a57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260018101949094525060218301919091526041808301919091526040805180840390920182526061909201918290528051909250819060208401908083835b60208310614b8f5780518252601f199092019160209182019101614b70565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b6000806000614bd587878787614af1565b60008181526003602052604090206005015490935015614f5e5760008381526003602052604090206005015442621275009091011015614c6a57614c188361592b565b60008381526003602081905260408220805460ff19168155600181018390556002810183905590810182905590614c526004830182615a25565b5060006005820155600601805460ff19169055614f5e565b6000838152600360205260409020600501544262093a809091011015614da257600460008481526003602052604090206006015460ff166004811115614cac57fe5b14614cce576000838152600360205260409020600601805460ff191660041790555b600083815260036020526040908190209051339185917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918b918b918b918b91600401908086600a811115614d1f57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614d8b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614d6d575b5050965050505050505060405180910390a3614f5e565b6000838152600360205260409020600501544210614f5e575050600081815260036020526040812060040154905b81811015614e69576000838152600360205260409020600401805482908110614df557fe5b600091825260209091200154600160a060020a0316331415614e61576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220616c7265616479207265717565737465642e000000604482015290519081900360640190fd5b600101614dd0565b600083815260036020908152604080832060040180546001810182558185529284209092018054600160a060020a03191633908117909155928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a811115614edf57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614f4b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614f2d575b5050965050505050505060405180910390a35b60008381526003602052604090206005015415156130ed57600454606411614fe357600487600a811115614f8e57fe5b14614fe3576040805160e560020a62461bcd02815260206004820152601560248201527f52657175657374206c6973742069732066756c6c2e0000000000000000000000604482015290519081900360640190fd5b60e06040519081016040528088600a811115614ffb57fe5b81526020808201899052604080830189905260608301889052805160008082529281019091526080909201919050815242602082015260400160019052600084815260036020526040902081518154829060ff1916600183600a81111561505e57fe5b021790555060208281015160018301556040830151600283015560608301516003830155608083015180516150999260048501920190615aa9565b5060a0820151600582015560c082015160068201805460ff191660018360048111156150c157fe5b0217905550505060008381526003602090815260408083206004908101805460018181018355828752948620018054600160a060020a0319163390811790915582549485019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909301879055928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a81111561516e57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c00190849080156151da57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116151bc575b5050965050505050505060405180910390a350505050505050565b60015460009182526003602052604090912060040154101590565b600061521a615afe565b600083815260036020526040808220815160e0810190925280549294509091829060ff16600a81111561524957fe5b600a81111561525457fe5b8152600182015460208083019190915260028301546040808401919091526003840154606084015260048401805482518185028101850190935280835260809094019391929091908301828280156152d557602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116152b7575b505050918352505060058201546020820152600682015460409091019060ff16600481111561530057fe5b600481111561530b57fe5b905250905060018151600a81111561531f57fe5b1415615389576020810151604080517f70480275000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916370480275916024808301926000929190829003018183875af192505050915061579a565b60028151600a81111561539857fe5b1415615402576020810151604080517f27e1f7df000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916327e1f7df916024808301926000929190829003018183875af192505050915061579a565b60038151600a81111561541157fe5b1415615473576020810151604080517fc47afb3a000000000000000000000000000000000000000000000000000000008152600481019290925251309163c47afb3a916024808301926000929190829003018183875af192505050915061579a565b60048151600a81111561548257fe5b14156154c55730600160a060020a0316634f97638f6040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60058151600a8111156154d457fe5b14156155175730600160a060020a031663cec924666040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60068151600a81111561552657fe5b141561559957602081015160408083015181517fc7e9de75000000000000000000000000000000000000000000000000000000008152600160a060020a039093166004840152602483015251309163c7e9de75916044808301926000929190829003018183875af192505050915061579a565b60078151600a8111156155a857fe5b141561561b57602081015160408083015181517f4c5d435c000000000000000000000000000000000000000000000000000000008152600160a060020a0390931660048401526024830152513091634c5d435c916044808301926000929190829003018183875af192505050915061579a565b60088151600a81111561562a57fe5b14156156ad576020810151604080830151606084015182517f298b3c61000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201529184166024830152909216604483015251309163298b3c61916064808301926000929190829003018183875af192505050915061579a565b60098151600a8111156156bc57fe5b1415615726576020810151604080517f579740db000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163579740db916024808301926000929190829003018183875af192505050915061579a565b600a8151600a81111561573557fe5b141561579a576020810151604080517fafaaf330000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163afaaf330916024808301926000929190829003018183875af194505050505b6157a38361592b565b811561585d57600083815260036020526040902060050154156157dd576000838152600360205260409020600601805460ff191660021790555b33600160a060020a031683600019167fc55c9229184beabeee72b6970a96691b4200919e47579cc4b9be50a1bec7ef1183600001518460200151856040015186606001516040518085600a81111561583157fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a36117f1565b60008381526003602052604090206005015415615894576000838152600360208190526040909120600601805460ff191690911790555b33600160a060020a031683600019167ff151a3ee41626c2511372320f09f7957af81c8c1cde8cdf3f05a5979626eaaf383600001518460200151856040015186606001516040518085600a8111156158e857fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3505050565b6000808383111561592457600080fd5b5050900390565b60045460005b818110156117f157600480548290811061594757fe5b6000918252602090912001548314156159e0576000198201811461599e5760048054600019840190811061597757fe5b906000526020600020015460048281548110151561599157fe5b6000918252602090912001555b6004805460001984019081106159b057fe5b60009182526020822001556004546159cf90600163ffffffff61591416565b6159da600482615a01565b506117f1565b600101615931565b6000828201838110156159fa57600080fd5b9392505050565b8154818355818111156117f1576000838152602090206117f1918101908301615b3b565b5080546000825590600052602060002090810190615a439190615b3b565b50565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a99578154600160a060020a031916600160a060020a03843516178255602090920191600190910190615a66565b50615aa5929150615b55565b5090565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a995782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615ac9565b6040805160e081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b61461b91905b80821115615aa55760008155600101615b41565b61461b91905b80821115615aa5578054600160a060020a0319168155600101615b5b560041646472657373206973206e6f742061646d696e2e0000000000000000000000496e76616c696420434e206e6f64652049442e0000000000000000000000000041646472657373206973206e756c6c2e000000000000000000000000000000004e6f742061206d756c74697369672d7472616e73616374696f6e2e0000000000496e76616c696420726571756972656d656e742e000000000000000000000000a165627a7a7230582061471db561d514c210c743029fcab86b940059a4d6e7164566a6a36eaf9fcb040029", } // AddressBookABI is the input ABI used to generate the binding from. @@ -89,10 +89,10 @@ var AddressBookMetaData = &bind.MetaData{ var AddressBookABI = AddressBookMetaData.ABI // AddressBookBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const AddressBookBinRuntime = `6080604052600436106102215763ffffffff60e060020a60003504166315575d5a8114610226578063160370b8146102725780631865c57d1461037c57806321ac4ad4146103ec57806327e1f7df14610412578063298b3c611461043357806332b91e8514610460578063394a144a1461048b5780633f0628b1146104ac578063407091eb146104d057806341b6945c1461056c5780634a8c1fb4146105815780634b6a94cc146105aa5780634c5d435c146106345780634f97638f1461065857806350a5bb691461066d578063579740db1461068257806358d65880146106a35780636abd623d146106ca57806370480275146106fb578063715b208b1461071c57806376674c54146107ca578063778f39cb146107df5780637894c366146107f4578063791b51231461081857806382d67e5a14610839578063832a2aad146108d5578063863f5c0a146108f657806387cd9feb146109175780638e6f6b771461092c5780639258d76814610941578063934d1fa414610965578063afaaf3301461097a578063b50060e41461099b578063b5067706146109b0578063b7563930146109d1578063b858dd95146109e6578063c47afb3a146109fb578063c7e9de7514610a13578063cc11efc014610a37578063cec9246614610a64578063d267eda514610a79578063da34a0bd14610a8e578063de5bbfbc14610af3578063e748357b14610b08578063feb15ca114610b20578063ffa1ad7414610b35575b600080fd5b34801561023257600080fd5b50610247600160a060020a0360043516610b4a565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b34801561027e57600080fd5b50610287610ca0565b60408051600160a060020a0380851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b838110156102e45781810151838201526020016102cc565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b505050509050019850505050505050505060405180910390f35b34801561038857600080fd5b50610391610deb565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156103d75781810151838201526020016103bf565b50505050905001935050505060405180910390f35b3480156103f857600080fd5b50610410600160a060020a0360043516602435610e57565b005b34801561041e57600080fd5b50610410600160a060020a0360043516611038565b34801561043f57600080fd5b50610410600160a060020a03600435811690602435811690604435166112c9565b34801561046c57600080fd5b50610475611720565b6040805160ff9092168252519081900360200190f35b34801561049757600080fd5b50610410600160a060020a0360043516611725565b3480156104b857600080fd5b5061041060ff600435166024356044356064356117f6565b3480156104dc57600080fd5b506104f460ff60043516602435604435606435611e88565b60408051858152908101839052602081016060820183600481111561051557fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360005b8381101561055557818101518382015260200161053d565b505050509050019550505050505060405180910390f35b34801561057857600080fd5b50610475611f35565b34801561058d57600080fd5b50610596611f3a565b604080519115158252519081900360200190f35b3480156105b657600080fd5b506105bf611f43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105f95781810151838201526020016105e1565b50505050905090810190601f1680156106265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561064057600080fd5b50610410600160a060020a0360043516602435611f7a565b34801561066457600080fd5b5061041061216f565b34801561067957600080fd5b50610596612274565b34801561068e57600080fd5b50610410600160a060020a0360043516612282565b3480156106af57600080fd5b506106b8612658565b60408051918252519081900360200190f35b3480156106d657600080fd5b506106df61265d565b60408051600160a060020a039092168252519081900360200190f35b34801561070757600080fd5b50610410600160a060020a036004351661266c565b34801561072857600080fd5b5061073161284b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b50610475612b3a565b3480156107eb57600080fd5b506106b8612b3f565b34801561080057600080fd5b50610410602460048035828101929101359035612b44565b34801561082457600080fd5b50610410600160a060020a0360043516612ef1565b34801561084557600080fd5b506108516004356130f6565b6040518088600a81111561086157fe5b60ff16815260208101889052604081018790526060810186905260a08101849052608081019060c00183600481111561089657fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360008381101561036257818101518382015260200161034a565b3480156108e157600080fd5b50610410600160a060020a03600435166131b4565b34801561090257600080fd5b50610410600160a060020a03600435166133bd565b34801561092357600080fd5b5061041061358b565b34801561093857600080fd5b506106b8613649565b34801561094d57600080fd5b50610410600160a060020a0360043516602435613650565b34801561097157600080fd5b506106b86137e8565b34801561098657600080fd5b50610410600160a060020a03600435166137ef565b3480156109a757600080fd5b5061047561388e565b3480156109bc57600080fd5b50610410600160a060020a0360043516613893565b3480156109dd57600080fd5b506106b8613a49565b3480156109f257600080fd5b506106df613a4f565b348015610a0757600080fd5b50610410600435613a5e565b348015610a1f57600080fd5b50610410600160a060020a0360043516602435613bb1565b348015610a4357600080fd5b50610410600160a060020a0360043581169060243581169060443516613da6565b348015610a7057600080fd5b50610410614265565b348015610a8557600080fd5b506106df6145b5565b348015610a9a57600080fd5b50610aa36145c4565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610adf578181015183820152602001610ac7565b505050509050019250505060405180910390f35b348015610aff57600080fd5b5061047561461e565b348015610b1457600080fd5b50610410600435614623565b348015610b2c57600080fd5b506104106147a6565b348015610b4157600080fd5b506106b861461e565b600080808084600160a060020a0381161515610b9e576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600160a060020a038616600081815260086020526040902054600980549194509084908110610bc957fe5b600091825260209091200154600160a060020a031614610c21576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009805483908110610c2f57fe5b600091825260209091200154600a8054600160a060020a039092169184908110610c5557fe5b600091825260209091200154600b8054600160a060020a039092169185908110610c7b57fe5b6000918252602090912001549196509450600160a060020a0316925050509193909250565b60055460065460098054604080516020808402820181019092528281526060958695869560009586959194600a94600b94600160a060020a03918216949116928791830182828015610d1b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cfd575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610d59575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610dd357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610db5575b50505050509250945094509450945094509091929394565b606060008060015481805480602002602001604051908101604052809291908181526020018280548015610e4857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e2a575b50505050509150915091509091565b600082600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610eff576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d6020811015610f6857600080fd5b505114610fbf576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b610fd66006600160a060020a038716866000614af1565b9250610fef6006600160a060020a038716866000614bc4565b610ff8836151f5565b80156110235750600160008481526003602052604090206006015460ff16600481111561102157fe5b145b156110315761103183615210565b5050505050565b600080333014611080576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff1615156110e2576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6000546110f690600163ffffffff61591416565b6001546032821115801561110a5750818111155b801561111557508015155b801561112057508115155b1515611164576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b60008054600160a060020a0388168252600260205260408220805460ff19169055955093505b6001850384101561123d5785600160a060020a03166000858154811015156111ae57fe5b600091825260209091200154600160a060020a03161415611232576000805460001987019081106111db57fe5b60009182526020822001548154600160a060020a039091169190869081106111ff57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061123d565b60019093019261118a565b60008054600019870190811061124f57fe5b600091825260208220018054600160a060020a03191690555461127990600163ffffffff61591416565b611284600082615a01565b5061128d61216f565b604051600160a060020a038716907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc256522090600090a2505050505050565b6000333014611310576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600954600010156113ae57600160a060020a03841660008181526008602052604090205460098054909190811061134357fe5b600091825260209091200154600160a060020a031614156113ae576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b83600160a060020a031683600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113f657600080fd5b505af115801561140a573d6000803e3d6000fd5b505050506040513d602081101561142057600080fd5b5051600160a060020a03161461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b81600160a060020a031683600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b505050506040513d60208110156114e057600080fd5b5051600160a060020a031614611540576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b82600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50511515600114611603576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b5060098054600160a060020a03808616600081815260086020908152604080832086905560018087019097557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af86018054600160a060020a03199081168617909155600a8054808a019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180548b88169083168117909155600b8054998a0181559094527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99097018054958916959097168517909655855192835282015280840191909152915190917fe01726557c1ea9f7286dca4bba890e96fea9041689db298806306cafa74c9e91919081900360600190a150505050565b600281565b3360008181526002602052604081205490919060ff16151561177f576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b611796600a600160a060020a038516600080614af1565b91506117af600a600160a060020a038516600080614bc4565b6117b8826151f5565b80156117e35750600160008381526003602052604090206006015460ff1660048111156117e157fe5b145b156117f1576117f182615210565b505050565b33600081815260026020526040812054909182918291829160ff161515611855576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b61186189898989614af1565b60008181526003602052604090206005015490955015156118cc576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420726571756573742e00000000000000000000000000000000604482015290519081900360640190fd5b600160008681526003602052604090206006015460ff1660048111156118ee57fe5b14611943576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b60008581526003602052604081206004015490945092508391505b82821015611e2657600085815260036020526040902060040180548390811061198357fe5b600091825260209091200154600160a060020a0316331415611e1b57600085815260036020526040902060050154600194504262093a809091011015611b2f5760008581526003602052604090206005015442621275009091011015611a3e576119ec8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611a266004830182615a25565b5060006005820155600601805460ff19169055611a5b565b6000858152600360205260409020600601805460ff191660041790555b600085815260036020526040908190209051339187917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918d918d918d918d91600401908086600a811115611aac57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611b1857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611afa575b5050965050505050505060405180910390a3611e16565b60001983018214611bc057600085815260036020526040902060040180546000198501908110611b5b57fe5b6000918252602080832090910154878352600390915260409091206004018054600160a060020a039092169184908110611b9157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600085815260036020526040902060040180546000198501908110611be157fe5b600091825260208083209091018054600160a060020a0319169055868252600390526040902060040154611c1c90600163ffffffff61591416565b6000868152600360205260409020611c379060040182615a01565b5060008581526003602081905260409182902080546001820154600283015493830154945133958b957f9c174b2536ba49e3478ca649dac74d9e9f71f70adf70f193e780eabbfcdc367c9560ff9095169490926004909101908086600a811115611c9d57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611d0957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611ceb575b5050965050505050505060405180910390a36000858152600360205260409020600401541515611e1657611d3c8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611d766004830182615a25565b506000600582018190556006909101805460ff19169055858152600360208190526040918290208054600182015460028301549290930154935133948a947fbfda049a0206fd9c90ed4a3170f5bfaad83c323a16835dd68fea92faa247c2cd9460ff9094169390929091908085600a811115611dee57fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a35b611e26565b60019091019061195e565b831515611e7d576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f74207265717565737465642e000000604482015290519081900360640190fd5b505050505050505050565b600060606000806000611e9d89898989614af1565b600081815260036020908152604091829020600581015460068201546004909201805485518186028101860190965280865295965086959094919360ff90931692859190830182828015611f1a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611efc575b50505050509250945094509450945050945094509450949050565b600481565b600c5460ff1681565b60408051808201909152600b81527f41646472657373426f6f6b000000000000000000000000000000000000000000602082015281565b600080333014611fc2576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200157600080fd5b505af1158015612015573d6000803e3d6000fd5b505050506040513d602081101561202b57600080fd5b505114612082576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060068054600160a060020a03848116600160a060020a031983161790925516600081156121185781600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505050506040513d602081101561211357600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517ffdccdf242038c2d09605009fbb95e03f75cdbd106d0a9e52a1670be9553c88489181900360800190a150505050565b6000803330146121b7576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b505060045460005b8181101561223b57600360006004838154811015156121da57fe5b600091825260208083209091015483528201929092526040018120805460ff19168155600181018290556002810182905560038101829055906122206004830182615a25565b5060006005820155600601805460ff191690556001016121bf565b61224760046000615a25565b6040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b90600090a15050565b600c54610100900460ff1681565b60003330146122c9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b50600160a060020a03811660008181526008602052604090205460098054919291839081106122f457fe5b600091825260209091200154600160a060020a03161461234c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009546001106123a6576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b6009546000190181101561251e576009805460001981019081106123c657fe5b60009182526020909120015460098054600160a060020a0390921691839081106123ec57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600a805490916000190190811061242b57fe5b600091825260209091200154600a8054600160a060020a03909216918390811061245157fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600b805490916000190190811061249057fe5b600091825260209091200154600b8054600160a060020a0390921691839081106124b657fe5b600091825260208220018054600160a060020a031916600160a060020a039390931692909217909155600980548392600892909160001981019081106124f857fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600160a060020a03821660009081526008602052604081205560098054600019810190811061254957fe5b60009182526020909120018054600160a060020a031916905560095461257690600163ffffffff61591416565b612581600982615a01565b50600a8054600019810190811061259457fe5b60009182526020909120018054600160a060020a0319169055600a546125c190600163ffffffff61591416565b6125cc600a82615a01565b50600b805460001981019081106125df57fe5b60009182526020909120018054600160a060020a0319169055600b5461260c90600163ffffffff61591416565b612617600b82615a01565b5060408051600160a060020a038416815290517fa30079721e55931e89e7cdb421712ad0fcc817e7cac8fe954aa7ed0d46b9c42d9181900360200190a15050565b603281565b600754600160a060020a031681565b3330146126b1576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615612724576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b60005461273890600163ffffffff6159e816565b6001546032821115801561274c5750818111155b801561275757508015155b801561276257508115155b15156127a6576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600160a060020a0384166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018054600160a060020a031916909117905561281161216f565b604051600160a060020a038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90600090a250505050565b600c54606090819081908190600090819060ff161515612884576040805160008082526020820190815281830190925294509250612b2f565b6009805490506003026002016040519080825280602002602001820160405280156128b9578160200160208202803883390190505b5093506009805490506003026002016040519080825280602002602001820160405280156128f1578160200160208202803883390190505b506009549093509150600090505b81811015612a71576000848260030281518110151561291a57fe5b60ff909216602092830290910190910152600980548290811061293957fe5b6000918252602090912001548351600160a060020a039091169084906003840290811061296257fe5b600160a060020a039092166020928302909101909101528351600190859060038402830190811061298f57fe5b60ff909216602092830290910190910152600a8054829081106129ae57fe5b6000918252602090912001548351600160a060020a03909116908490600384026001019081106129da57fe5b600160a060020a0390921660209283029091019091015283516002908590600384028301908110612a0757fe5b60ff909216602092830290910190910152600b805482908110612a2657fe5b6000918252602090912001548351600160a060020a0390911690849060026003850201908110612a5257fe5b600160a060020a039092166020928302909101909101526001016128ff565b60038483600302815181101515612a8457fe5b60ff9092166020928302909101909101526005548351600160a060020a0390911690849060038502908110612ab557fe5b600160a060020a039092166020928302909101909101528351600490859060016003860201908110612ae357fe5b60ff9092166020928302909101909101526006548351600160a060020a0390911690849060038502600101908110612b1757fe5b600160a060020a039092166020928302909101909101525b509194909350915050565b600081565b606481565b600080838360328211801590612b5a5750818111155b8015612b6557508015155b8015612b7057508115155b1515612bb4576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b7388bb3838aa0a140acb73eeb3d4b25a8d3afd58d43314612c1f576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c69642073656e6465722e0000000000000000000000000000000000604482015290519081900360640190fd5b600c54610100900460ff1615612c7f576040805160e560020a62461bcd02815260206004820152601460248201527f416c726561647920636f6e73747275637465642e000000000000000000000000604482015290519081900360640190fd5b600c805460ff19169055859350600092505b83831015612da65760026000888886818110612ca957fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff16158015612d015750868684818110612ce357fe5b90506020020135600160a060020a0316600160a060020a0316600014155b1515612d57576040805160e560020a62461bcd02815260206004820152601e60248201527f41646472657373206973206e756c6c206f72206e6f7420756e697175652e0000604482015290519081900360640190fd5b600160026000898987818110612d6957fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560019290920191612c91565b612db260008888615a46565b506001859055600c805461ff001916610100179055604080518082018252600b81527f41646472657373426f6f6b00000000000000000000000000000000000000000060208083019182528351938401899052606080855283519085015282517fc5caa942b8f8ea45a2e094d941dbba0ef9c0307f34c81ce78e71bfb128d6b25a946000938b939192839283019160808401918083838a5b83811015612e62578181015183820152602001612e4a565b50505050905090810190601f168015612e8f5780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015612ed757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612eb9575b50509550505050505060405180910390a150505050505050565b600160a060020a038116600090815260026020526040812054829060ff161515612f53576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515612faa576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b83600160a060020a0381161515612ff9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b60005461300d90600163ffffffff61591416565b600154603282111580156130215750818111155b801561302c57508015155b801561303757508115155b151561307b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6130926002600160a060020a038916600080614af1565b95506130ab6002600160a060020a038916600080614bc4565b6130b4866151f5565b80156130df5750600160008781526003602052604090206006015460ff1660048111156130dd57fe5b145b156130ed576130ed86615210565b50505050505050565b60008181526003602081815260408084208054600182015460028301549583015460058401546006850154600490950180548751818a0281018a019098528088528a998a998a996060998b998a9960ff91821699909895979096909594919092169291859183018282801561319457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613176575b505050505092509650965096509650965096509650919395979092949650565b60008080808085600160a060020a0381161515613209576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600a546000965086955093508492505b8383101561326457600a80543391908590811061323257fe5b600091825260209091200154600160a060020a031614156132595760019550829450613264565b600190920191613219565b8515156132bb576040805160e560020a62461bcd02815260206004820152601e60248201527f4d73672e73656e646572206973206e6f7420434e20636f6e74726163742e0000604482015290519081900360640190fd5b600b8054869081106132c957fe5b600091825260209091200154600b8054600160a060020a0390921693508891879081106132f257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055507faa5c92ffd739bc0b8b117b671e7d713917ddb1440b436263a3ea106d70c6f05f60098681548110151561335057fe5b600091825260209091200154600b8054600160a060020a03909216918591908990811061337957fe5b6000918252602091829020015460408051600160a060020a03958616815293851692840192909252929092168183015290519081900360600190a150505050505050565b3360008181526002602052604081205490919060ff161515613417576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff161561348a576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b83600160a060020a03811615156134d9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b6000546134ed90600163ffffffff6159e816565b600154603282111580156135015750818111155b801561350c57508015155b801561351757508115155b151561355b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6135726001600160a060020a038916600080614af1565b95506130ab6001600160a060020a038916600080614bc4565b3360008181526002602052604081205490919060ff1615156135e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6135f3600460008080614af1565b9150613603600460008080614bc4565b61360c826151f5565b80156136375750600160008381526003602052604090206006015460ff16600481111561363557fe5b145b156136455761364582615210565b5050565b62093a8081565b600082600160a060020a03811615156136a1576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156136f8576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561373757600080fd5b505af115801561374b573d6000803e3d6000fd5b505050506040513d602081101561376157600080fd5b5051146137b8576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b6137cf6007600160a060020a038716866000614af1565b9250610fef6007600160a060020a038716866000614bc4565b6212750081565b333014613834576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b60078054600160a060020a031916600160a060020a03838116919091179182905560408051929091168252517f508aacd44cfe23a34a8c2643ab08c3410cf5505632cfce58dcfa0efa2fd2ff37916020908290030190a150565b600381565b60008082600160a060020a03811615156138e5576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff16151561393c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a03851660008181526008602052604090205460098054919650908690811061396757fe5b600091825260209091200154600160a060020a0316146139bf576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b600954600110613a19576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b613a306009600160a060020a038716600080614af1565b9250610fef6009600160a060020a038716600080614bc4565b60015481565b600654600160a060020a031681565b333014613aa3576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b6000548160328211801590613ab85750818111155b8015613ac357508015155b8015613ace57508115155b1515613b12576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154831415613b6c576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b6001839055613b7961216f565b6040805184815290517f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9181900360200190a1505050565b600080333014613bf9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050506040513d6020811015613c6257600080fd5b505114613cb9576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060058054600160a060020a03848116600160a060020a03198316179092551660008115613d4f5781600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613d2057600080fd5b505af1158015613d34573d6000803e3d6000fd5b505050506040513d6020811015613d4a57600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517fd531725ac89042f190fd73adfdeff435e07500f1a92b4b87743f1bcf91acb3a79181900360800190a150505050565b600083600160a060020a0381161515613df7576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e46576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e95576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613eec576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60095460001015613f8a57600160a060020a038816600081815260086020526040902054600980549091908110613f1f57fe5b600091825260209091200154600160a060020a03161415613f8a576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b87600160a060020a031687600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b505050506040513d6020811015613ffc57600080fd5b5051600160a060020a03161461404a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b85600160a060020a031687600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561409257600080fd5b505af11580156140a6573d6000803e3d6000fd5b505050506040513d60208110156140bc57600080fd5b5051600160a060020a03161461411c576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b86600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561415a57600080fd5b505af115801561416e573d6000803e3d6000fd5b505050506040513d602081101561418457600080fd5b505115156001146141df576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b6141fb6008600160a060020a03808b16908a8116908a16614af1565b94506142196008600160a060020a03808b16908a8116908a16614bc4565b614222856151f5565b801561424d5750600160008681526003602052604090206006015460ff16600481111561424b57fe5b145b1561425b5761425b85615210565b5050505050505050565b3330146142aa576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600c5460ff1615614305576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b600054151561435e576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156143c0576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614422576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600954151561447b576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a54600954146144fc576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a541461457d576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b600c805460ff191660011790556040517f29d89931226d613bf878a0be8c635eaf2049121c8c68d5ad80a78f0ac9005d4b90600090a1565b600554600160a060020a031681565b6060600480548060200260200160405190810160405280929190818152602001828054801561461357602002820191906000526020600020905b815481526001909101906020018083116145fe575b505050505090505b90565b600181565b3360008181526002602052604081205490919060ff16151561467d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60005483603282118015906146925750818111155b801561469d57508015155b80156146a857508115155b15156146ec576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154851415614746576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b614754600386600080614af1565b9350614764600386600080614bc4565b61476d846151f5565b80156147985750600160008581526003602052604090206006015460ff16600481111561479657fe5b145b156110315761103184615210565b3360008181526002602052604081205490919060ff161515614800576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600c5460ff161561485b576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b60005415156148b4576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a03161515614916576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614978576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b60095415156149d1576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a5460095414614a52576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a5414614ad3576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b614ae1600560008080614af1565b9150613603600560008080614bc4565b6000848484846040516020018085600a811115614b0a57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260018101949094525060218301919091526041808301919091526040805180840390920182526061909201918290528051909250819060208401908083835b60208310614b8f5780518252601f199092019160209182019101614b70565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b6000806000614bd587878787614af1565b60008181526003602052604090206005015490935015614f5e5760008381526003602052604090206005015442621275009091011015614c6a57614c188361592b565b60008381526003602081905260408220805460ff19168155600181018390556002810183905590810182905590614c526004830182615a25565b5060006005820155600601805460ff19169055614f5e565b6000838152600360205260409020600501544262093a809091011015614da257600460008481526003602052604090206006015460ff166004811115614cac57fe5b14614cce576000838152600360205260409020600601805460ff191660041790555b600083815260036020526040908190209051339185917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918b918b918b918b91600401908086600a811115614d1f57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614d8b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614d6d575b5050965050505050505060405180910390a3614f5e565b6000838152600360205260409020600501544210614f5e575050600081815260036020526040812060040154905b81811015614e69576000838152600360205260409020600401805482908110614df557fe5b600091825260209091200154600160a060020a0316331415614e61576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220616c7265616479207265717565737465642e000000604482015290519081900360640190fd5b600101614dd0565b600083815260036020908152604080832060040180546001810182558185529284209092018054600160a060020a03191633908117909155928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a811115614edf57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614f4b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614f2d575b5050965050505050505060405180910390a35b60008381526003602052604090206005015415156130ed57600454606411614fe357600487600a811115614f8e57fe5b14614fe3576040805160e560020a62461bcd02815260206004820152601560248201527f52657175657374206c6973742069732066756c6c2e0000000000000000000000604482015290519081900360640190fd5b60e06040519081016040528088600a811115614ffb57fe5b81526020808201899052604080830189905260608301889052805160008082529281019091526080909201919050815242602082015260400160019052600084815260036020526040902081518154829060ff1916600183600a81111561505e57fe5b021790555060208281015160018301556040830151600283015560608301516003830155608083015180516150999260048501920190615aa9565b5060a0820151600582015560c082015160068201805460ff191660018360048111156150c157fe5b0217905550505060008381526003602090815260408083206004908101805460018181018355828752948620018054600160a060020a0319163390811790915582549485019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909301879055928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a81111561516e57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c00190849080156151da57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116151bc575b5050965050505050505060405180910390a350505050505050565b60015460009182526003602052604090912060040154101590565b600061521a615afe565b600083815260036020526040808220815160e0810190925280549294509091829060ff16600a81111561524957fe5b600a81111561525457fe5b8152600182015460208083019190915260028301546040808401919091526003840154606084015260048401805482518185028101850190935280835260809094019391929091908301828280156152d557602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116152b7575b505050918352505060058201546020820152600682015460409091019060ff16600481111561530057fe5b600481111561530b57fe5b905250905060018151600a81111561531f57fe5b1415615389576020810151604080517f70480275000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916370480275916024808301926000929190829003018183875af192505050915061579a565b60028151600a81111561539857fe5b1415615402576020810151604080517f27e1f7df000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916327e1f7df916024808301926000929190829003018183875af192505050915061579a565b60038151600a81111561541157fe5b1415615473576020810151604080517fc47afb3a000000000000000000000000000000000000000000000000000000008152600481019290925251309163c47afb3a916024808301926000929190829003018183875af192505050915061579a565b60048151600a81111561548257fe5b14156154c55730600160a060020a0316634f97638f6040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60058151600a8111156154d457fe5b14156155175730600160a060020a031663cec924666040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60068151600a81111561552657fe5b141561559957602081015160408083015181517fc7e9de75000000000000000000000000000000000000000000000000000000008152600160a060020a039093166004840152602483015251309163c7e9de75916044808301926000929190829003018183875af192505050915061579a565b60078151600a8111156155a857fe5b141561561b57602081015160408083015181517f4c5d435c000000000000000000000000000000000000000000000000000000008152600160a060020a0390931660048401526024830152513091634c5d435c916044808301926000929190829003018183875af192505050915061579a565b60088151600a81111561562a57fe5b14156156ad576020810151604080830151606084015182517f298b3c61000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201529184166024830152909216604483015251309163298b3c61916064808301926000929190829003018183875af192505050915061579a565b60098151600a8111156156bc57fe5b1415615726576020810151604080517f579740db000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163579740db916024808301926000929190829003018183875af192505050915061579a565b600a8151600a81111561573557fe5b141561579a576020810151604080517fafaaf330000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163afaaf330916024808301926000929190829003018183875af194505050505b6157a38361592b565b811561585d57600083815260036020526040902060050154156157dd576000838152600360205260409020600601805460ff191660021790555b33600160a060020a031683600019167fc55c9229184beabeee72b6970a96691b4200919e47579cc4b9be50a1bec7ef1183600001518460200151856040015186606001516040518085600a81111561583157fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a36117f1565b60008381526003602052604090206005015415615894576000838152600360208190526040909120600601805460ff191690911790555b33600160a060020a031683600019167ff151a3ee41626c2511372320f09f7957af81c8c1cde8cdf3f05a5979626eaaf383600001518460200151856040015186606001516040518085600a8111156158e857fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3505050565b6000808383111561592457600080fd5b5050900390565b60045460005b818110156117f157600480548290811061594757fe5b6000918252602090912001548314156159e0576000198201811461599e5760048054600019840190811061597757fe5b906000526020600020015460048281548110151561599157fe5b6000918252602090912001555b6004805460001984019081106159b057fe5b60009182526020822001556004546159cf90600163ffffffff61591416565b6159da600482615a01565b506117f1565b600101615931565b6000828201838110156159fa57600080fd5b9392505050565b8154818355818111156117f1576000838152602090206117f1918101908301615b3b565b5080546000825590600052602060002090810190615a439190615b3b565b50565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a99578154600160a060020a031916600160a060020a03843516178255602090920191600190910190615a66565b50615aa5929150615b55565b5090565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a995782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615ac9565b6040805160e081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b61461b91905b80821115615aa55760008155600101615b41565b61461b91905b80821115615aa5578054600160a060020a0319168155600101615b5b560041646472657373206973206e6f742061646d696e2e0000000000000000000000496e76616c696420434e206e6f64652049442e0000000000000000000000000041646472657373206973206e756c6c2e000000000000000000000000000000004e6f742061206d756c74697369672d7472616e73616374696f6e2e0000000000496e76616c696420726571756972656d656e742e000000000000000000000000a165627a7a72305820ee836dcf10d2fdb3e06ee6d250b00c70dcaa43ee950a4e5d026d4c8889ca96740029` +const AddressBookBinRuntime = `6080604052600436106102215763ffffffff60e060020a60003504166315575d5a8114610226578063160370b8146102725780631865c57d1461037c57806321ac4ad4146103ec57806327e1f7df14610412578063298b3c611461043357806332b91e8514610460578063394a144a1461048b5780633f0628b1146104ac578063407091eb146104d057806341b6945c1461056c5780634a8c1fb4146105815780634b6a94cc146105aa5780634c5d435c146106345780634f97638f1461065857806350a5bb691461066d578063579740db1461068257806358d65880146106a35780636abd623d146106ca57806370480275146106fb578063715b208b1461071c57806376674c54146107ca578063778f39cb146107df5780637894c366146107f4578063791b51231461081857806382d67e5a14610839578063832a2aad146108d5578063863f5c0a146108f657806387cd9feb146109175780638e6f6b771461092c5780639258d76814610941578063934d1fa414610965578063afaaf3301461097a578063b50060e41461099b578063b5067706146109b0578063b7563930146109d1578063b858dd95146109e6578063c47afb3a146109fb578063c7e9de7514610a13578063cc11efc014610a37578063cec9246614610a64578063d267eda514610a79578063da34a0bd14610a8e578063de5bbfbc14610af3578063e748357b14610b08578063feb15ca114610b20578063ffa1ad7414610b35575b600080fd5b34801561023257600080fd5b50610247600160a060020a0360043516610b4a565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b34801561027e57600080fd5b50610287610ca0565b60408051600160a060020a0380851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b838110156102e45781810151838201526020016102cc565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b505050509050019850505050505050505060405180910390f35b34801561038857600080fd5b50610391610deb565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156103d75781810151838201526020016103bf565b50505050905001935050505060405180910390f35b3480156103f857600080fd5b50610410600160a060020a0360043516602435610e57565b005b34801561041e57600080fd5b50610410600160a060020a0360043516611038565b34801561043f57600080fd5b50610410600160a060020a03600435811690602435811690604435166112c9565b34801561046c57600080fd5b50610475611720565b6040805160ff9092168252519081900360200190f35b34801561049757600080fd5b50610410600160a060020a0360043516611725565b3480156104b857600080fd5b5061041060ff600435166024356044356064356117f6565b3480156104dc57600080fd5b506104f460ff60043516602435604435606435611e88565b60408051858152908101839052602081016060820183600481111561051557fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360005b8381101561055557818101518382015260200161053d565b505050509050019550505050505060405180910390f35b34801561057857600080fd5b50610475611f35565b34801561058d57600080fd5b50610596611f3a565b604080519115158252519081900360200190f35b3480156105b657600080fd5b506105bf611f43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105f95781810151838201526020016105e1565b50505050905090810190601f1680156106265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561064057600080fd5b50610410600160a060020a0360043516602435611f7a565b34801561066457600080fd5b5061041061216f565b34801561067957600080fd5b50610596612274565b34801561068e57600080fd5b50610410600160a060020a0360043516612282565b3480156106af57600080fd5b506106b8612658565b60408051918252519081900360200190f35b3480156106d657600080fd5b506106df61265d565b60408051600160a060020a039092168252519081900360200190f35b34801561070757600080fd5b50610410600160a060020a036004351661266c565b34801561072857600080fd5b5061073161284b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561077557818101518382015260200161075d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107b457818101518382015260200161079c565b5050505090500194505050505060405180910390f35b3480156107d657600080fd5b50610475612b3a565b3480156107eb57600080fd5b506106b8612b3f565b34801561080057600080fd5b50610410602460048035828101929101359035612b44565b34801561082457600080fd5b50610410600160a060020a0360043516612ef1565b34801561084557600080fd5b506108516004356130f6565b6040518088600a81111561086157fe5b60ff16815260208101889052604081018790526060810186905260a08101849052608081019060c00183600481111561089657fe5b60ff168152602001828103825285818151815260200191508051906020019060200280838360008381101561036257818101518382015260200161034a565b3480156108e157600080fd5b50610410600160a060020a03600435166131b4565b34801561090257600080fd5b50610410600160a060020a03600435166133bd565b34801561092357600080fd5b5061041061358b565b34801561093857600080fd5b506106b8613649565b34801561094d57600080fd5b50610410600160a060020a0360043516602435613650565b34801561097157600080fd5b506106b86137e8565b34801561098657600080fd5b50610410600160a060020a03600435166137ef565b3480156109a757600080fd5b5061047561388e565b3480156109bc57600080fd5b50610410600160a060020a0360043516613893565b3480156109dd57600080fd5b506106b8613a49565b3480156109f257600080fd5b506106df613a4f565b348015610a0757600080fd5b50610410600435613a5e565b348015610a1f57600080fd5b50610410600160a060020a0360043516602435613bb1565b348015610a4357600080fd5b50610410600160a060020a0360043581169060243581169060443516613da6565b348015610a7057600080fd5b50610410614265565b348015610a8557600080fd5b506106df6145b5565b348015610a9a57600080fd5b50610aa36145c4565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610adf578181015183820152602001610ac7565b505050509050019250505060405180910390f35b348015610aff57600080fd5b5061047561461e565b348015610b1457600080fd5b50610410600435614623565b348015610b2c57600080fd5b506104106147a6565b348015610b4157600080fd5b506106b861461e565b600080808084600160a060020a0381161515610b9e576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600160a060020a038616600081815260086020526040902054600980549194509084908110610bc957fe5b600091825260209091200154600160a060020a031614610c21576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009805483908110610c2f57fe5b600091825260209091200154600a8054600160a060020a039092169184908110610c5557fe5b600091825260209091200154600b8054600160a060020a039092169185908110610c7b57fe5b6000918252602090912001549196509450600160a060020a0316925050509193909250565b60055460065460098054604080516020808402820181019092528281526060958695869560009586959194600a94600b94600160a060020a03918216949116928791830182828015610d1b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cfd575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610d59575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610dd357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610db5575b50505050509250945094509450945094509091929394565b606060008060015481805480602002602001604051908101604052809291908181526020018280548015610e4857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e2a575b50505050509150915091509091565b600082600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610eff576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d6020811015610f6857600080fd5b505114610fbf576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b610fd66006600160a060020a038716866000614af1565b9250610fef6006600160a060020a038716866000614bc4565b610ff8836151f5565b80156110235750600160008481526003602052604090206006015460ff16600481111561102157fe5b145b156110315761103183615210565b5050505050565b600080333014611080576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff1615156110e2576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6000546110f690600163ffffffff61591416565b6001546032821115801561110a5750818111155b801561111557508015155b801561112057508115155b1515611164576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b60008054600160a060020a0388168252600260205260408220805460ff19169055955093505b6001850384101561123d5785600160a060020a03166000858154811015156111ae57fe5b600091825260209091200154600160a060020a03161415611232576000805460001987019081106111db57fe5b60009182526020822001548154600160a060020a039091169190869081106111ff57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061123d565b60019093019261118a565b60008054600019870190811061124f57fe5b600091825260208220018054600160a060020a03191690555461127990600163ffffffff61591416565b611284600082615a01565b5061128d61216f565b604051600160a060020a038716907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc256522090600090a2505050505050565b6000333014611310576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600954600010156113ae57600160a060020a03841660008181526008602052604090205460098054909190811061134357fe5b600091825260209091200154600160a060020a031614156113ae576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b83600160a060020a031683600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156113f657600080fd5b505af115801561140a573d6000803e3d6000fd5b505050506040513d602081101561142057600080fd5b5051600160a060020a03161461146e576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b81600160a060020a031683600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b505050506040513d60208110156114e057600080fd5b5051600160a060020a031614611540576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b82600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561157e57600080fd5b505af1158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50511515600114611603576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b5060098054600160a060020a03808616600081815260086020908152604080832086905560018087019097557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af86018054600160a060020a03199081168617909155600a8054808a019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180548b88169083168117909155600b8054998a0181559094527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99097018054958916959097168517909655855192835282015280840191909152915190917fe01726557c1ea9f7286dca4bba890e96fea9041689db298806306cafa74c9e91919081900360600190a150505050565b600281565b3360008181526002602052604081205490919060ff16151561177f576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b611796600a600160a060020a038516600080614af1565b91506117af600a600160a060020a038516600080614bc4565b6117b8826151f5565b80156117e35750600160008381526003602052604090206006015460ff1660048111156117e157fe5b145b156117f1576117f182615210565b505050565b33600081815260026020526040812054909182918291829160ff161515611855576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b61186189898989614af1565b60008181526003602052604090206005015490955015156118cc576040805160e560020a62461bcd02815260206004820152601060248201527f496e76616c696420726571756573742e00000000000000000000000000000000604482015290519081900360640190fd5b600160008681526003602052604090206006015460ff1660048111156118ee57fe5b14611943576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b60008581526003602052604081206004015490945092508391505b82821015611e2657600085815260036020526040902060040180548390811061198357fe5b600091825260209091200154600160a060020a0316331415611e1b57600085815260036020526040902060050154600194504262093a809091011015611b2f5760008581526003602052604090206005015442621275009091011015611a3e576119ec8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611a266004830182615a25565b5060006005820155600601805460ff19169055611a5b565b6000858152600360205260409020600601805460ff191660041790555b600085815260036020526040908190209051339187917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918d918d918d918d91600401908086600a811115611aac57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611b1857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611afa575b5050965050505050505060405180910390a3611e16565b60001983018214611bc057600085815260036020526040902060040180546000198501908110611b5b57fe5b6000918252602080832090910154878352600390915260409091206004018054600160a060020a039092169184908110611b9157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600085815260036020526040902060040180546000198501908110611be157fe5b600091825260208083209091018054600160a060020a0319169055868252600390526040902060040154611c1c90600163ffffffff61591416565b6000868152600360205260409020611c379060040182615a01565b5060008581526003602081905260409182902080546001820154600283015493830154945133958b957f9c174b2536ba49e3478ca649dac74d9e9f71f70adf70f193e780eabbfcdc367c9560ff9095169490926004909101908086600a811115611c9d57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015611d0957602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611ceb575b5050965050505050505060405180910390a36000858152600360205260409020600401541515611e1657611d3c8561592b565b60008581526003602081905260408220805460ff19168155600181018390556002810183905590810182905590611d766004830182615a25565b506000600582018190556006909101805460ff19169055858152600360208190526040918290208054600182015460028301549290930154935133948a947fbfda049a0206fd9c90ed4a3170f5bfaad83c323a16835dd68fea92faa247c2cd9460ff9094169390929091908085600a811115611dee57fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a35b611e26565b60019091019061195e565b831515611e7d576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f74207265717565737465642e000000604482015290519081900360640190fd5b505050505050505050565b600060606000806000611e9d89898989614af1565b600081815260036020908152604091829020600581015460068201546004909201805485518186028101860190965280865295965086959094919360ff90931692859190830182828015611f1a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611efc575b50505050509250945094509450945050945094509450949050565b600481565b600c5460ff1681565b60408051808201909152600b81527f41646472657373426f6f6b000000000000000000000000000000000000000000602082015281565b600080333014611fc2576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561200157600080fd5b505af1158015612015573d6000803e3d6000fd5b505050506040513d602081101561202b57600080fd5b505114612082576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060068054600160a060020a03848116600160a060020a031983161790925516600081156121185781600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505050506040513d602081101561211357600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517ffdccdf242038c2d09605009fbb95e03f75cdbd106d0a9e52a1670be9553c88489181900360800190a150505050565b6000803330146121b7576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b505060045460005b8181101561223b57600360006004838154811015156121da57fe5b600091825260208083209091015483528201929092526040018120805460ff19168155600181018290556002810182905560038101829055906122206004830182615a25565b5060006005820155600601805460ff191690556001016121bf565b61224760046000615a25565b6040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b90600090a15050565b600c54610100900460ff1681565b60003330146122c9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b50600160a060020a03811660008181526008602052604090205460098054919291839081106122f457fe5b600091825260209091200154600160a060020a03161461234c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b6009546001106123a6576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b6009546000190181101561251e576009805460001981019081106123c657fe5b60009182526020909120015460098054600160a060020a0390921691839081106123ec57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600a805490916000190190811061242b57fe5b600091825260209091200154600a8054600160a060020a03909216918390811061245157fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600954600b805490916000190190811061249057fe5b600091825260209091200154600b8054600160a060020a0390921691839081106124b657fe5b600091825260208220018054600160a060020a031916600160a060020a039390931692909217909155600980548392600892909160001981019081106124f857fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600160a060020a03821660009081526008602052604081205560098054600019810190811061254957fe5b60009182526020909120018054600160a060020a031916905560095461257690600163ffffffff61591416565b612581600982615a01565b50600a8054600019810190811061259457fe5b60009182526020909120018054600160a060020a0319169055600a546125c190600163ffffffff61591416565b6125cc600a82615a01565b50600b805460001981019081106125df57fe5b60009182526020909120018054600160a060020a0319169055600b5461260c90600163ffffffff61591416565b612617600b82615a01565b5060408051600160a060020a038416815290517fa30079721e55931e89e7cdb421712ad0fcc817e7cac8fe954aa7ed0d46b9c42d9181900360200190a15050565b603281565b600754600160a060020a031681565b3330146126b1576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615612724576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b60005461273890600163ffffffff6159e816565b6001546032821115801561274c5750818111155b801561275757508015155b801561276257508115155b15156127a6576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600160a060020a0384166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018054600160a060020a031916909117905561281161216f565b604051600160a060020a038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90600090a250505050565b600c54606090819081908190600090819060ff161515612884576040805160008082526020820190815281830190925294509250612b2f565b6009805490506003026002016040519080825280602002602001820160405280156128b9578160200160208202803883390190505b5093506009805490506003026002016040519080825280602002602001820160405280156128f1578160200160208202803883390190505b506009549093509150600090505b81811015612a71576000848260030281518110151561291a57fe5b60ff909216602092830290910190910152600980548290811061293957fe5b6000918252602090912001548351600160a060020a039091169084906003840290811061296257fe5b600160a060020a039092166020928302909101909101528351600190859060038402830190811061298f57fe5b60ff909216602092830290910190910152600a8054829081106129ae57fe5b6000918252602090912001548351600160a060020a03909116908490600384026001019081106129da57fe5b600160a060020a0390921660209283029091019091015283516002908590600384028301908110612a0757fe5b60ff909216602092830290910190910152600b805482908110612a2657fe5b6000918252602090912001548351600160a060020a0390911690849060026003850201908110612a5257fe5b600160a060020a039092166020928302909101909101526001016128ff565b60038483600302815181101515612a8457fe5b60ff9092166020928302909101909101526005548351600160a060020a0390911690849060038502908110612ab557fe5b600160a060020a039092166020928302909101909101528351600490859060016003860201908110612ae357fe5b60ff9092166020928302909101909101526006548351600160a060020a0390911690849060038502600101908110612b1757fe5b600160a060020a039092166020928302909101909101525b509194909350915050565b600081565b606481565b600080838360328211801590612b5a5750818111155b8015612b6557508015155b8015612b7057508115155b1515612bb4576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b7388bb3838aa0a140acb73eeb3d4b25a8d3afd58d43314612c1f576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c69642073656e6465722e0000000000000000000000000000000000604482015290519081900360640190fd5b600c54610100900460ff1615612c7f576040805160e560020a62461bcd02815260206004820152601460248201527f416c726561647920636f6e73747275637465642e000000000000000000000000604482015290519081900360640190fd5b600c805460ff19169055859350600092505b83831015612da65760026000888886818110612ca957fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff16158015612d015750868684818110612ce357fe5b90506020020135600160a060020a0316600160a060020a0316600014155b1515612d57576040805160e560020a62461bcd02815260206004820152601e60248201527f41646472657373206973206e756c6c206f72206e6f7420756e697175652e0000604482015290519081900360640190fd5b600160026000898987818110612d6957fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff191691151591909117905560019290920191612c91565b612db260008888615a46565b506001859055600c805461ff001916610100179055604080518082018252600b81527f41646472657373426f6f6b00000000000000000000000000000000000000000060208083019182528351938401899052606080855283519085015282517fc5caa942b8f8ea45a2e094d941dbba0ef9c0307f34c81ce78e71bfb128d6b25a946000938b939192839283019160808401918083838a5b83811015612e62578181015183820152602001612e4a565b50505050905090810190601f168015612e8f5780820380516001836020036101000a031916815260200191505b508381038252858181548152602001915080548015612ed757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612eb9575b50509550505050505060405180910390a150505050505050565b600160a060020a038116600090815260026020526040812054829060ff161515612f53576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515612faa576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b83600160a060020a0381161515612ff9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b60005461300d90600163ffffffff61591416565b600154603282111580156130215750818111155b801561302c57508015155b801561303757508115155b151561307b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6130926002600160a060020a038916600080614af1565b95506130ab6002600160a060020a038916600080614bc4565b6130b4866151f5565b80156130df5750600160008781526003602052604090206006015460ff1660048111156130dd57fe5b145b156130ed576130ed86615210565b50505050505050565b60008181526003602081815260408084208054600182015460028301549583015460058401546006850154600490950180548751818a0281018a019098528088528a998a998a996060998b998a9960ff91821699909895979096909594919092169291859183018282801561319457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613176575b505050505092509650965096509650965096509650919395979092949650565b60008080808085600160a060020a0381161515613209576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b600a546000965086955093508492505b8383101561326457600a80543391908590811061323257fe5b600091825260209091200154600160a060020a031614156132595760019550829450613264565b600190920191613219565b8515156132bb576040805160e560020a62461bcd02815260206004820152601e60248201527f4d73672e73656e646572206973206e6f7420434e20636f6e74726163742e0000604482015290519081900360640190fd5b600b8054869081106132c957fe5b600091825260209091200154600b8054600160a060020a0390921693508891879081106132f257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055507faa5c92ffd739bc0b8b117b671e7d713917ddb1440b436263a3ea106d70c6f05f60098681548110151561335057fe5b600091825260209091200154600b8054600160a060020a03909216918591908990811061337957fe5b6000918252602091829020015460408051600160a060020a03958616815293851692840192909252929092168183015290519081900360600190a150505050505050565b3360008181526002602052604081205490919060ff161515613417576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff161561348a576040805160e560020a62461bcd02815260206004820152601460248201527f41646d696e20616c72656164792065786974732e000000000000000000000000604482015290519081900360640190fd5b83600160a060020a03811615156134d9576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b6000546134ed90600163ffffffff6159e816565b600154603282111580156135015750818111155b801561350c57508015155b801561351757508115155b151561355b576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b6135726001600160a060020a038916600080614af1565b95506130ab6001600160a060020a038916600080614bc4565b3360008181526002602052604081205490919060ff1615156135e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b6135f3600460008080614af1565b9150613603600460008080614bc4565b61360c826151f5565b80156136375750600160008381526003602052604090206006015460ff16600481111561363557fe5b145b156136455761364582615210565b5050565b62093a8081565b600082600160a060020a03811615156136a1576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156136f8576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b8385600160a060020a031663444263466040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561373757600080fd5b505af115801561374b573d6000803e3d6000fd5b505050506040513d602081101561376157600080fd5b5051146137b8576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c6964204b49522076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b6137cf6007600160a060020a038716866000614af1565b9250610fef6007600160a060020a038716866000614bc4565b6212750081565b333014613834576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b60078054600160a060020a031916600160a060020a03838116919091179182905560408051929091168252517f508aacd44cfe23a34a8c2643ab08c3410cf5505632cfce58dcfa0efa2fd2ff37916020908290030190a150565b600381565b60008082600160a060020a03811615156138e5576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff16151561393c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600160a060020a03851660008181526008602052604090205460098054919650908690811061396757fe5b600091825260209091200154600160a060020a0316146139bf576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b600954600110613a19576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b613a306009600160a060020a038716600080614af1565b9250610fef6009600160a060020a038716600080614bc4565b60015481565b600654600160a060020a031681565b333014613aa3576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b6000548160328211801590613ab85750818111155b8015613ac357508015155b8015613ace57508115155b1515613b12576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154831415613b6c576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b6001839055613b7961216f565b6040805184815290517f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9181900360200190a1505050565b600080333014613bf9576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b8284600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613c3857600080fd5b505af1158015613c4c573d6000803e3d6000fd5b505050506040513d6020811015613c6257600080fd5b505114613cb9576040805160e560020a62461bcd02815260206004820152601460248201527f496e76616c696420506f432076657273696f6e2e000000000000000000000000604482015290519081900360640190fd5b505060058054600160a060020a03848116600160a060020a03198316179092551660008115613d4f5781600160a060020a0316630f6100726040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613d2057600080fd5b505af1158015613d34573d6000803e3d6000fd5b505050506040513d6020811015613d4a57600080fd5b505190505b60408051600160a060020a038085168252602082018490528616818301526060810185905290517fd531725ac89042f190fd73adfdeff435e07500f1a92b4b87743f1bcf91acb3a79181900360800190a150505050565b600083600160a060020a0381161515613df7576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e46576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b83600160a060020a0381161515613e95576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615bba833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613eec576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60095460001015613f8a57600160a060020a038816600081815260086020526040902054600980549091908110613f1f57fe5b600091825260209091200154600160a060020a03161415613f8a576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b87600160a060020a031687600160a060020a031663139d7fed6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b505050506040513d6020811015613ffc57600080fd5b5051600160a060020a03161461404a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615b9a833981519152604482015290519081900360640190fd5b85600160a060020a031687600160a060020a0316638cf57cb96040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561409257600080fd5b505af11580156140a6573d6000803e3d6000fd5b505050506040513d60208110156140bc57600080fd5b5051600160a060020a03161461411c576040805160e560020a62461bcd02815260206004820152601a60248201527f496e76616c696420434e2072657761726420616464726573732e000000000000604482015290519081900360640190fd5b86600160a060020a031663392e53cd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561415a57600080fd5b505af115801561416e573d6000803e3d6000fd5b505050506040513d602081101561418457600080fd5b505115156001146141df576040805160e560020a62461bcd02815260206004820152601f60248201527f434e20636f6e7472616374206973206e6f7420696e697469616c697a65642e00604482015290519081900360640190fd5b6141fb6008600160a060020a03808b16908a8116908a16614af1565b94506142196008600160a060020a03808b16908a8116908a16614bc4565b614222856151f5565b801561424d5750600160008681526003602052604090206006015460ff16600481111561424b57fe5b145b1561425b5761425b85615210565b5050505050505050565b3330146142aa576040805160e560020a62461bcd02815260206004820152601b6024820152600080516020615bda833981519152604482015290519081900360640190fd5b600c5460ff1615614305576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b600054151561435e576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156143c0576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614422576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600954151561447b576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a54600954146144fc576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a541461457d576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b600c805460ff191660011790556040517f29d89931226d613bf878a0be8c635eaf2049121c8c68d5ad80a78f0ac9005d4b90600090a1565b600554600160a060020a031681565b6060600480548060200260200160405190810160405280929190818152602001828054801561461357602002820191906000526020600020905b815481526001909101906020018083116145fe575b505050505090505b90565b600181565b3360008181526002602052604081205490919060ff16151561467d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b60005483603282118015906146925750818111155b801561469d57508015155b80156146a857508115155b15156146ec576040805160e560020a62461bcd0281526020600482015260146024820152600080516020615bfa833981519152604482015290519081900360640190fd5b600154851415614746576040805160e560020a62461bcd02815260206004820152601160248201527f53616d6520726571756972656d656e742e000000000000000000000000000000604482015290519081900360640190fd5b614754600386600080614af1565b9350614764600386600080614bc4565b61476d846151f5565b80156147985750600160008581526003602052604090206006015460ff16600481111561479657fe5b145b156110315761103184615210565b3360008181526002602052604081205490919060ff161515614800576040805160e560020a62461bcd0281526020600482015260156024820152600080516020615b7a833981519152604482015290519081900360640190fd5b600c5460ff161561485b576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b60005415156148b4576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f2061646d696e206973206c69737465642e00000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a03161515614916576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600654600160a060020a03161515614978576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b60095415156149d1576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b600a5460095414614a52576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b600b54600a5414614ad3576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b614ae1600560008080614af1565b9150613603600560008080614bc4565b6000848484846040516020018085600a811115614b0a57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260018101949094525060218301919091526041808301919091526040805180840390920182526061909201918290528051909250819060208401908083835b60208310614b8f5780518252601f199092019160209182019101614b70565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b6000806000614bd587878787614af1565b60008181526003602052604090206005015490935015614f5e5760008381526003602052604090206005015442621275009091011015614c6a57614c188361592b565b60008381526003602081905260408220805460ff19168155600181018390556002810183905590810182905590614c526004830182615a25565b5060006005820155600601805460ff19169055614f5e565b6000838152600360205260409020600501544262093a809091011015614da257600460008481526003602052604090206006015460ff166004811115614cac57fe5b14614cce576000838152600360205260409020600601805460ff191660041790555b600083815260036020526040908190209051339185917f9f3ca7a04988021200a04e0775f46648683bffe7203608269a66c371befe5685918b918b918b918b91600401908086600a811115614d1f57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614d8b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614d6d575b5050965050505050505060405180910390a3614f5e565b6000838152600360205260409020600501544210614f5e575050600081815260036020526040812060040154905b81811015614e69576000838152600360205260409020600401805482908110614df557fe5b600091825260209091200154600160a060020a0316331415614e61576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220616c7265616479207265717565737465642e000000604482015290519081900360640190fd5b600101614dd0565b600083815260036020908152604080832060040180546001810182558185529284209092018054600160a060020a03191633908117909155928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a811115614edf57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c0019084908015614f4b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614f2d575b5050965050505050505060405180910390a35b60008381526003602052604090206005015415156130ed57600454606411614fe357600487600a811115614f8e57fe5b14614fe3576040805160e560020a62461bcd02815260206004820152601560248201527f52657175657374206c6973742069732066756c6c2e0000000000000000000000604482015290519081900360640190fd5b60e06040519081016040528088600a811115614ffb57fe5b81526020808201899052604080830189905260608301889052805160008082529281019091526080909201919050815242602082015260400160019052600084815260036020526040902081518154829060ff1916600183600a81111561505e57fe5b021790555060208281015160018301556040830151600283015560608301516003830155608083015180516150999260048501920190615aa9565b5060a0820151600582015560c082015160068201805460ff191660018360048111156150c157fe5b0217905550505060008381526003602090815260408083206004908101805460018181018355828752948620018054600160a060020a0319163390811790915582549485019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909301879055928690525185917fb7b03afe355fcf2b1d00e020db2b1a902b9ee1b1c1d995626c1e18c957340ea8918b918b918b918b918086600a81111561516e57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c00190849080156151da57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116151bc575b5050965050505050505060405180910390a350505050505050565b60015460009182526003602052604090912060040154101590565b600061521a615afe565b600083815260036020526040808220815160e0810190925280549294509091829060ff16600a81111561524957fe5b600a81111561525457fe5b8152600182015460208083019190915260028301546040808401919091526003840154606084015260048401805482518185028101850190935280835260809094019391929091908301828280156152d557602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116152b7575b505050918352505060058201546020820152600682015460409091019060ff16600481111561530057fe5b600481111561530b57fe5b905250905060018151600a81111561531f57fe5b1415615389576020810151604080517f70480275000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916370480275916024808301926000929190829003018183875af192505050915061579a565b60028151600a81111561539857fe5b1415615402576020810151604080517f27e1f7df000000000000000000000000000000000000000000000000000000008152600160a060020a0390921660048301525130916327e1f7df916024808301926000929190829003018183875af192505050915061579a565b60038151600a81111561541157fe5b1415615473576020810151604080517fc47afb3a000000000000000000000000000000000000000000000000000000008152600481019290925251309163c47afb3a916024808301926000929190829003018183875af192505050915061579a565b60048151600a81111561548257fe5b14156154c55730600160a060020a0316634f97638f6040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60058151600a8111156154d457fe5b14156155175730600160a060020a031663cec924666040518163ffffffff1660e060020a0281526004016000604051808303816000875af192505050915061579a565b60068151600a81111561552657fe5b141561559957602081015160408083015181517fc7e9de75000000000000000000000000000000000000000000000000000000008152600160a060020a039093166004840152602483015251309163c7e9de75916044808301926000929190829003018183875af192505050915061579a565b60078151600a8111156155a857fe5b141561561b57602081015160408083015181517f4c5d435c000000000000000000000000000000000000000000000000000000008152600160a060020a0390931660048401526024830152513091634c5d435c916044808301926000929190829003018183875af192505050915061579a565b60088151600a81111561562a57fe5b14156156ad576020810151604080830151606084015182517f298b3c61000000000000000000000000000000000000000000000000000000008152600160a060020a0394851660048201529184166024830152909216604483015251309163298b3c61916064808301926000929190829003018183875af192505050915061579a565b60098151600a8111156156bc57fe5b1415615726576020810151604080517f579740db000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163579740db916024808301926000929190829003018183875af192505050915061579a565b600a8151600a81111561573557fe5b141561579a576020810151604080517fafaaf330000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015251309163afaaf330916024808301926000929190829003018183875af194505050505b6157a38361592b565b811561585d57600083815260036020526040902060050154156157dd576000838152600360205260409020600601805460ff191660021790555b33600160a060020a031683600019167fc55c9229184beabeee72b6970a96691b4200919e47579cc4b9be50a1bec7ef1183600001518460200151856040015186606001516040518085600a81111561583157fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a36117f1565b60008381526003602052604090206005015415615894576000838152600360208190526040909120600601805460ff191690911790555b33600160a060020a031683600019167ff151a3ee41626c2511372320f09f7957af81c8c1cde8cdf3f05a5979626eaaf383600001518460200151856040015186606001516040518085600a8111156158e857fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3505050565b6000808383111561592457600080fd5b5050900390565b60045460005b818110156117f157600480548290811061594757fe5b6000918252602090912001548314156159e0576000198201811461599e5760048054600019840190811061597757fe5b906000526020600020015460048281548110151561599157fe5b6000918252602090912001555b6004805460001984019081106159b057fe5b60009182526020822001556004546159cf90600163ffffffff61591416565b6159da600482615a01565b506117f1565b600101615931565b6000828201838110156159fa57600080fd5b9392505050565b8154818355818111156117f1576000838152602090206117f1918101908301615b3b565b5080546000825590600052602060002090810190615a439190615b3b565b50565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a99578154600160a060020a031916600160a060020a03843516178255602090920191600190910190615a66565b50615aa5929150615b55565b5090565b828054828255906000526020600020908101928215615a99579160200282015b82811115615a995782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615ac9565b6040805160e081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b61461b91905b80821115615aa55760008155600101615b41565b61461b91905b80821115615aa5578054600160a060020a0319168155600101615b5b560041646472657373206973206e6f742061646d696e2e0000000000000000000000496e76616c696420434e206e6f64652049442e0000000000000000000000000041646472657373206973206e756c6c2e000000000000000000000000000000004e6f742061206d756c74697369672d7472616e73616374696f6e2e0000000000496e76616c696420726571756972656d656e742e000000000000000000000000a165627a7a7230582061471db561d514c210c743029fcab86b940059a4d6e7164566a6a36eaf9fcb040029` -// AddressBookFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMetaData.Sigs instead. +// AddressBookFuncSigs maps the 4-byte function signature to its string representation. var AddressBookFuncSigs = AddressBookMetaData.Sigs // AddressBookBin is the compiled bytecode used for deploying new contracts. @@ -264,6 +264,7 @@ func (_AddressBook *AddressBookTransactorRaw) Transact(opts *bind.TransactOpts, func (_AddressBook *AddressBookCaller) CNNODEIDTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "CN_NODE_ID_TYPE") + if err != nil { return *new(uint8), err } @@ -271,6 +272,7 @@ func (_AddressBook *AddressBookCaller) CNNODEIDTYPE(opts *bind.CallOpts) (uint8, out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNNODEIDTYPE is a free data retrieval call binding the contract method 0x76674c54. @@ -293,6 +295,7 @@ func (_AddressBook *AddressBookCallerSession) CNNODEIDTYPE() (uint8, error) { func (_AddressBook *AddressBookCaller) CNREWARDADDRESSTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "CN_REWARD_ADDRESS_TYPE") + if err != nil { return *new(uint8), err } @@ -300,6 +303,7 @@ func (_AddressBook *AddressBookCaller) CNREWARDADDRESSTYPE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNREWARDADDRESSTYPE is a free data retrieval call binding the contract method 0x32b91e85. @@ -322,6 +326,7 @@ func (_AddressBook *AddressBookCallerSession) CNREWARDADDRESSTYPE() (uint8, erro func (_AddressBook *AddressBookCaller) CNSTAKINGADDRESSTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "CN_STAKING_ADDRESS_TYPE") + if err != nil { return *new(uint8), err } @@ -329,6 +334,7 @@ func (_AddressBook *AddressBookCaller) CNSTAKINGADDRESSTYPE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNSTAKINGADDRESSTYPE is a free data retrieval call binding the contract method 0xde5bbfbc. @@ -351,6 +357,7 @@ func (_AddressBook *AddressBookCallerSession) CNSTAKINGADDRESSTYPE() (uint8, err func (_AddressBook *AddressBookCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -358,6 +365,7 @@ func (_AddressBook *AddressBookCaller) CONTRACTTYPE(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -380,6 +388,7 @@ func (_AddressBook *AddressBookCallerSession) CONTRACTTYPE() (string, error) { func (_AddressBook *AddressBookCaller) KIRCONTRACTTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "KIR_CONTRACT_TYPE") + if err != nil { return *new(uint8), err } @@ -387,6 +396,7 @@ func (_AddressBook *AddressBookCaller) KIRCONTRACTTYPE(opts *bind.CallOpts) (uin out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // KIRCONTRACTTYPE is a free data retrieval call binding the contract method 0x41b6945c. @@ -409,6 +419,7 @@ func (_AddressBook *AddressBookCallerSession) KIRCONTRACTTYPE() (uint8, error) { func (_AddressBook *AddressBookCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -416,6 +427,7 @@ func (_AddressBook *AddressBookCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -438,6 +450,7 @@ func (_AddressBook *AddressBookCallerSession) MAXADMIN() (*big.Int, error) { func (_AddressBook *AddressBookCaller) MAXPENDINGREQUEST(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "MAX_PENDING_REQUEST") + if err != nil { return *new(*big.Int), err } @@ -445,6 +458,7 @@ func (_AddressBook *AddressBookCaller) MAXPENDINGREQUEST(opts *bind.CallOpts) (* out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXPENDINGREQUEST is a free data retrieval call binding the contract method 0x778f39cb. @@ -467,6 +481,7 @@ func (_AddressBook *AddressBookCallerSession) MAXPENDINGREQUEST() (*big.Int, err func (_AddressBook *AddressBookCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -474,6 +489,7 @@ func (_AddressBook *AddressBookCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -496,6 +512,7 @@ func (_AddressBook *AddressBookCallerSession) ONEWEEK() (*big.Int, error) { func (_AddressBook *AddressBookCaller) POCCONTRACTTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "POC_CONTRACT_TYPE") + if err != nil { return *new(uint8), err } @@ -503,6 +520,7 @@ func (_AddressBook *AddressBookCaller) POCCONTRACTTYPE(opts *bind.CallOpts) (uin out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // POCCONTRACTTYPE is a free data retrieval call binding the contract method 0xb50060e4. @@ -525,6 +543,7 @@ func (_AddressBook *AddressBookCallerSession) POCCONTRACTTYPE() (uint8, error) { func (_AddressBook *AddressBookCaller) TWOWEEKS(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "TWO_WEEKS") + if err != nil { return *new(*big.Int), err } @@ -532,6 +551,7 @@ func (_AddressBook *AddressBookCaller) TWOWEEKS(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TWOWEEKS is a free data retrieval call binding the contract method 0x934d1fa4. @@ -554,6 +574,7 @@ func (_AddressBook *AddressBookCallerSession) TWOWEEKS() (*big.Int, error) { func (_AddressBook *AddressBookCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -561,6 +582,7 @@ func (_AddressBook *AddressBookCaller) VERSION(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -583,6 +605,7 @@ func (_AddressBook *AddressBookCallerSession) VERSION() (*big.Int, error) { func (_AddressBook *AddressBookCaller) GetAllAddress(opts *bind.CallOpts) ([]uint8, []common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getAllAddress") + if err != nil { return *new([]uint8), *new([]common.Address), err } @@ -591,6 +614,7 @@ func (_AddressBook *AddressBookCaller) GetAllAddress(opts *bind.CallOpts) ([]uin out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -613,6 +637,7 @@ func (_AddressBook *AddressBookCallerSession) GetAllAddress() ([]uint8, []common func (_AddressBook *AddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) ([]common.Address, []common.Address, []common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getAllAddressInfo") + if err != nil { return *new([]common.Address), *new([]common.Address), *new([]common.Address), *new(common.Address), *new(common.Address), err } @@ -624,6 +649,7 @@ func (_AddressBook *AddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) ([ out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address) return out0, out1, out2, out3, out4, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -646,6 +672,7 @@ func (_AddressBook *AddressBookCallerSession) GetAllAddressInfo() ([]common.Addr func (_AddressBook *AddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeId common.Address) (common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getCnInfo", _cnNodeId) + if err != nil { return *new(common.Address), *new(common.Address), *new(common.Address), err } @@ -655,6 +682,7 @@ func (_AddressBook *AddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeId out2 := *abi.ConvertType(out[2], new(common.Address)).(*common.Address) return out0, out1, out2, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -677,6 +705,7 @@ func (_AddressBook *AddressBookCallerSession) GetCnInfo(_cnNodeId common.Address func (_AddressBook *AddressBookCaller) GetPendingRequestList(opts *bind.CallOpts) ([][32]byte, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getPendingRequestList") + if err != nil { return *new([][32]byte), err } @@ -684,6 +713,7 @@ func (_AddressBook *AddressBookCaller) GetPendingRequestList(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) return out0, err + } // GetPendingRequestList is a free data retrieval call binding the contract method 0xda34a0bd. @@ -706,6 +736,7 @@ func (_AddressBook *AddressBookCallerSession) GetPendingRequestList() ([][32]byt func (_AddressBook *AddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id [32]byte) (uint8, [32]byte, [32]byte, [32]byte, []common.Address, *big.Int, uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getRequestInfo", _id) + if err != nil { return *new(uint8), *new([32]byte), *new([32]byte), *new([32]byte), *new([]common.Address), *new(*big.Int), *new(uint8), err } @@ -719,6 +750,7 @@ func (_AddressBook *AddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id [ out6 := *abi.ConvertType(out[6], new(uint8)).(*uint8) return out0, out1, out2, out3, out4, out5, out6, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x82d67e5a. @@ -741,6 +773,7 @@ func (_AddressBook *AddressBookCallerSession) GetRequestInfo(_id [32]byte) (uint func (_AddressBook *AddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpts, _functionId uint8, _firstArg [32]byte, _secondArg [32]byte, _thirdArg [32]byte) ([32]byte, []common.Address, *big.Int, uint8, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getRequestInfoByArgs", _functionId, _firstArg, _secondArg, _thirdArg) + if err != nil { return *new([32]byte), *new([]common.Address), *new(*big.Int), *new(uint8), err } @@ -751,6 +784,7 @@ func (_AddressBook *AddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpts, out3 := *abi.ConvertType(out[3], new(uint8)).(*uint8) return out0, out1, out2, out3, err + } // GetRequestInfoByArgs is a free data retrieval call binding the contract method 0x407091eb. @@ -773,6 +807,7 @@ func (_AddressBook *AddressBookCallerSession) GetRequestInfoByArgs(_functionId u func (_AddressBook *AddressBookCaller) GetState(opts *bind.CallOpts) ([]common.Address, *big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "getState") + if err != nil { return *new([]common.Address), *new(*big.Int), err } @@ -781,6 +816,7 @@ func (_AddressBook *AddressBookCaller) GetState(opts *bind.CallOpts) ([]common.A out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -803,6 +839,7 @@ func (_AddressBook *AddressBookCallerSession) GetState() ([]common.Address, *big func (_AddressBook *AddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -810,6 +847,7 @@ func (_AddressBook *AddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, e out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -832,6 +870,7 @@ func (_AddressBook *AddressBookCallerSession) IsActivated() (bool, error) { func (_AddressBook *AddressBookCaller) IsConstructed(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "isConstructed") + if err != nil { return *new(bool), err } @@ -839,6 +878,7 @@ func (_AddressBook *AddressBookCaller) IsConstructed(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsConstructed is a free data retrieval call binding the contract method 0x50a5bb69. @@ -861,6 +901,7 @@ func (_AddressBook *AddressBookCallerSession) IsConstructed() (bool, error) { func (_AddressBook *AddressBookCaller) KirContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "kirContractAddress") + if err != nil { return *new(common.Address), err } @@ -868,6 +909,7 @@ func (_AddressBook *AddressBookCaller) KirContractAddress(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // KirContractAddress is a free data retrieval call binding the contract method 0xb858dd95. @@ -890,6 +932,7 @@ func (_AddressBook *AddressBookCallerSession) KirContractAddress() (common.Addre func (_AddressBook *AddressBookCaller) PocContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "pocContractAddress") + if err != nil { return *new(common.Address), err } @@ -897,6 +940,7 @@ func (_AddressBook *AddressBookCaller) PocContractAddress(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PocContractAddress is a free data retrieval call binding the contract method 0xd267eda5. @@ -919,6 +963,7 @@ func (_AddressBook *AddressBookCallerSession) PocContractAddress() (common.Addre func (_AddressBook *AddressBookCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -926,6 +971,7 @@ func (_AddressBook *AddressBookCaller) Requirement(opts *bind.CallOpts) (*big.In out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -948,6 +994,7 @@ func (_AddressBook *AddressBookCallerSession) Requirement() (*big.Int, error) { func (_AddressBook *AddressBookCaller) SpareContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBook.contract.Call(opts, &out, "spareContractAddress") + if err != nil { return *new(common.Address), err } @@ -955,6 +1002,7 @@ func (_AddressBook *AddressBookCaller) SpareContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // SpareContractAddress is a free data retrieval call binding the contract method 0x6abd623d. @@ -1530,6 +1578,7 @@ type AddressBookActivateAddressBook struct { // // Solidity: event ActivateAddressBook() func (_AddressBook *AddressBookFilterer) FilterActivateAddressBook(opts *bind.FilterOpts) (*AddressBookActivateAddressBookIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "ActivateAddressBook") if err != nil { return nil, err @@ -1541,6 +1590,7 @@ func (_AddressBook *AddressBookFilterer) FilterActivateAddressBook(opts *bind.Fi // // Solidity: event ActivateAddressBook() func (_AddressBook *AddressBookFilterer) WatchActivateAddressBook(opts *bind.WatchOpts, sink chan<- *AddressBookActivateAddressBook) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "ActivateAddressBook") if err != nil { return nil, err @@ -1581,6 +1631,7 @@ func (_AddressBook *AddressBookFilterer) ParseActivateAddressBook(log types.Log) if err := _AddressBook.contract.UnpackLog(event, "ActivateAddressBook", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1661,6 +1712,7 @@ type AddressBookAddAdmin struct { // // Solidity: event AddAdmin(address indexed admin) func (_AddressBook *AddressBookFilterer) FilterAddAdmin(opts *bind.FilterOpts, admin []common.Address) (*AddressBookAddAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -1677,6 +1729,7 @@ func (_AddressBook *AddressBookFilterer) FilterAddAdmin(opts *bind.FilterOpts, a // // Solidity: event AddAdmin(address indexed admin) func (_AddressBook *AddressBookFilterer) WatchAddAdmin(opts *bind.WatchOpts, sink chan<- *AddressBookAddAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -1722,6 +1775,7 @@ func (_AddressBook *AddressBookFilterer) ParseAddAdmin(log types.Log) (*AddressB if err := _AddressBook.contract.UnpackLog(event, "AddAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1807,6 +1861,7 @@ type AddressBookCancelRequest struct { // // Solidity: event CancelRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) FilterCancelRequest(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookCancelRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -1827,6 +1882,7 @@ func (_AddressBook *AddressBookFilterer) FilterCancelRequest(opts *bind.FilterOp // // Solidity: event CancelRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) WatchCancelRequest(opts *bind.WatchOpts, sink chan<- *AddressBookCancelRequest, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -1876,6 +1932,7 @@ func (_AddressBook *AddressBookFilterer) ParseCancelRequest(log types.Log) (*Add if err := _AddressBook.contract.UnpackLog(event, "CancelRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1955,6 +2012,7 @@ type AddressBookClearRequest struct { // // Solidity: event ClearRequest() func (_AddressBook *AddressBookFilterer) FilterClearRequest(opts *bind.FilterOpts) (*AddressBookClearRequestIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -1966,6 +2024,7 @@ func (_AddressBook *AddressBookFilterer) FilterClearRequest(opts *bind.FilterOpt // // Solidity: event ClearRequest() func (_AddressBook *AddressBookFilterer) WatchClearRequest(opts *bind.WatchOpts, sink chan<- *AddressBookClearRequest) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -2006,6 +2065,7 @@ func (_AddressBook *AddressBookFilterer) ParseClearRequest(log types.Log) (*Addr if err := _AddressBook.contract.UnpackLog(event, "ClearRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2086,6 +2146,7 @@ type AddressBookDeleteAdmin struct { // // Solidity: event DeleteAdmin(address indexed admin) func (_AddressBook *AddressBookFilterer) FilterDeleteAdmin(opts *bind.FilterOpts, admin []common.Address) (*AddressBookDeleteAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -2102,6 +2163,7 @@ func (_AddressBook *AddressBookFilterer) FilterDeleteAdmin(opts *bind.FilterOpts // // Solidity: event DeleteAdmin(address indexed admin) func (_AddressBook *AddressBookFilterer) WatchDeleteAdmin(opts *bind.WatchOpts, sink chan<- *AddressBookDeleteAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -2147,6 +2209,7 @@ func (_AddressBook *AddressBookFilterer) ParseDeleteAdmin(log types.Log) (*Addre if err := _AddressBook.contract.UnpackLog(event, "DeleteAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2229,6 +2292,7 @@ type AddressBookDeployContract struct { // // Solidity: event DeployContract(string contractType, address[] adminList, uint256 requirement) func (_AddressBook *AddressBookFilterer) FilterDeployContract(opts *bind.FilterOpts) (*AddressBookDeployContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "DeployContract") if err != nil { return nil, err @@ -2240,6 +2304,7 @@ func (_AddressBook *AddressBookFilterer) FilterDeployContract(opts *bind.FilterO // // Solidity: event DeployContract(string contractType, address[] adminList, uint256 requirement) func (_AddressBook *AddressBookFilterer) WatchDeployContract(opts *bind.WatchOpts, sink chan<- *AddressBookDeployContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "DeployContract") if err != nil { return nil, err @@ -2280,6 +2345,7 @@ func (_AddressBook *AddressBookFilterer) ParseDeployContract(log types.Log) (*Ad if err := _AddressBook.contract.UnpackLog(event, "DeployContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2365,6 +2431,7 @@ type AddressBookExecuteRequestFailure struct { // // Solidity: event ExecuteRequestFailure(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) FilterExecuteRequestFailure(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookExecuteRequestFailureIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2385,6 +2452,7 @@ func (_AddressBook *AddressBookFilterer) FilterExecuteRequestFailure(opts *bind. // // Solidity: event ExecuteRequestFailure(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) WatchExecuteRequestFailure(opts *bind.WatchOpts, sink chan<- *AddressBookExecuteRequestFailure, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2434,6 +2502,7 @@ func (_AddressBook *AddressBookFilterer) ParseExecuteRequestFailure(log types.Lo if err := _AddressBook.contract.UnpackLog(event, "ExecuteRequestFailure", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2519,6 +2588,7 @@ type AddressBookExecuteRequestSuccess struct { // // Solidity: event ExecuteRequestSuccess(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) FilterExecuteRequestSuccess(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookExecuteRequestSuccessIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2539,6 +2609,7 @@ func (_AddressBook *AddressBookFilterer) FilterExecuteRequestSuccess(opts *bind. // // Solidity: event ExecuteRequestSuccess(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_AddressBook *AddressBookFilterer) WatchExecuteRequestSuccess(opts *bind.WatchOpts, sink chan<- *AddressBookExecuteRequestSuccess, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2588,6 +2659,7 @@ func (_AddressBook *AddressBookFilterer) ParseExecuteRequestSuccess(log types.Lo if err := _AddressBook.contract.UnpackLog(event, "ExecuteRequestSuccess", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2674,6 +2746,7 @@ type AddressBookExpiredRequest struct { // // Solidity: event ExpiredRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) FilterExpiredRequest(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookExpiredRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2694,6 +2767,7 @@ func (_AddressBook *AddressBookFilterer) FilterExpiredRequest(opts *bind.FilterO // // Solidity: event ExpiredRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) WatchExpiredRequest(opts *bind.WatchOpts, sink chan<- *AddressBookExpiredRequest, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -2743,6 +2817,7 @@ func (_AddressBook *AddressBookFilterer) ParseExpiredRequest(log types.Log) (*Ad if err := _AddressBook.contract.UnpackLog(event, "ExpiredRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2825,6 +2900,7 @@ type AddressBookRegisterCnStakingContract struct { // // Solidity: event RegisterCnStakingContract(address cnNodeId, address cnStakingContractAddress, address cnRewardAddress) func (_AddressBook *AddressBookFilterer) FilterRegisterCnStakingContract(opts *bind.FilterOpts) (*AddressBookRegisterCnStakingContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "RegisterCnStakingContract") if err != nil { return nil, err @@ -2836,6 +2912,7 @@ func (_AddressBook *AddressBookFilterer) FilterRegisterCnStakingContract(opts *b // // Solidity: event RegisterCnStakingContract(address cnNodeId, address cnStakingContractAddress, address cnRewardAddress) func (_AddressBook *AddressBookFilterer) WatchRegisterCnStakingContract(opts *bind.WatchOpts, sink chan<- *AddressBookRegisterCnStakingContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "RegisterCnStakingContract") if err != nil { return nil, err @@ -2876,6 +2953,7 @@ func (_AddressBook *AddressBookFilterer) ParseRegisterCnStakingContract(log type if err := _AddressBook.contract.UnpackLog(event, "RegisterCnStakingContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2958,6 +3036,7 @@ type AddressBookReviseRewardAddress struct { // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_AddressBook *AddressBookFilterer) FilterReviseRewardAddress(opts *bind.FilterOpts) (*AddressBookReviseRewardAddressIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -2969,6 +3048,7 @@ func (_AddressBook *AddressBookFilterer) FilterReviseRewardAddress(opts *bind.Fi // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_AddressBook *AddressBookFilterer) WatchReviseRewardAddress(opts *bind.WatchOpts, sink chan<- *AddressBookReviseRewardAddress) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -3009,6 +3089,7 @@ func (_AddressBook *AddressBookFilterer) ParseReviseRewardAddress(log types.Log) if err := _AddressBook.contract.UnpackLog(event, "ReviseRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3095,6 +3176,7 @@ type AddressBookRevokeRequest struct { // // Solidity: event RevokeRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) FilterRevokeRequest(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookRevokeRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -3115,6 +3197,7 @@ func (_AddressBook *AddressBookFilterer) FilterRevokeRequest(opts *bind.FilterOp // // Solidity: event RevokeRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) WatchRevokeRequest(opts *bind.WatchOpts, sink chan<- *AddressBookRevokeRequest, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -3164,6 +3247,7 @@ func (_AddressBook *AddressBookFilterer) ParseRevokeRequest(log types.Log) (*Add if err := _AddressBook.contract.UnpackLog(event, "RevokeRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3250,6 +3334,7 @@ type AddressBookSubmitRequest struct { // // Solidity: event SubmitRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) FilterSubmitRequest(opts *bind.FilterOpts, id [][32]byte, from []common.Address) (*AddressBookSubmitRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -3270,6 +3355,7 @@ func (_AddressBook *AddressBookFilterer) FilterSubmitRequest(opts *bind.FilterOp // // Solidity: event SubmitRequest(bytes32 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_AddressBook *AddressBookFilterer) WatchSubmitRequest(opts *bind.WatchOpts, sink chan<- *AddressBookSubmitRequest, id [][32]byte, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -3319,6 +3405,7 @@ func (_AddressBook *AddressBookFilterer) ParseSubmitRequest(log types.Log) (*Add if err := _AddressBook.contract.UnpackLog(event, "SubmitRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3399,6 +3486,7 @@ type AddressBookUnregisterCnStakingContract struct { // // Solidity: event UnregisterCnStakingContract(address cnNodeId) func (_AddressBook *AddressBookFilterer) FilterUnregisterCnStakingContract(opts *bind.FilterOpts) (*AddressBookUnregisterCnStakingContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "UnregisterCnStakingContract") if err != nil { return nil, err @@ -3410,6 +3498,7 @@ func (_AddressBook *AddressBookFilterer) FilterUnregisterCnStakingContract(opts // // Solidity: event UnregisterCnStakingContract(address cnNodeId) func (_AddressBook *AddressBookFilterer) WatchUnregisterCnStakingContract(opts *bind.WatchOpts, sink chan<- *AddressBookUnregisterCnStakingContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "UnregisterCnStakingContract") if err != nil { return nil, err @@ -3450,6 +3539,7 @@ func (_AddressBook *AddressBookFilterer) ParseUnregisterCnStakingContract(log ty if err := _AddressBook.contract.UnpackLog(event, "UnregisterCnStakingContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3533,6 +3623,7 @@ type AddressBookUpdateKirContract struct { // // Solidity: event UpdateKirContract(address prevKirContractAddress, uint256 prevVersion, address curKirContractAddress, uint256 curVersion) func (_AddressBook *AddressBookFilterer) FilterUpdateKirContract(opts *bind.FilterOpts) (*AddressBookUpdateKirContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "UpdateKirContract") if err != nil { return nil, err @@ -3544,6 +3635,7 @@ func (_AddressBook *AddressBookFilterer) FilterUpdateKirContract(opts *bind.Filt // // Solidity: event UpdateKirContract(address prevKirContractAddress, uint256 prevVersion, address curKirContractAddress, uint256 curVersion) func (_AddressBook *AddressBookFilterer) WatchUpdateKirContract(opts *bind.WatchOpts, sink chan<- *AddressBookUpdateKirContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "UpdateKirContract") if err != nil { return nil, err @@ -3584,6 +3676,7 @@ func (_AddressBook *AddressBookFilterer) ParseUpdateKirContract(log types.Log) ( if err := _AddressBook.contract.UnpackLog(event, "UpdateKirContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3667,6 +3760,7 @@ type AddressBookUpdatePocContract struct { // // Solidity: event UpdatePocContract(address prevPocContractAddress, uint256 prevVersion, address curPocContractAddress, uint256 curVersion) func (_AddressBook *AddressBookFilterer) FilterUpdatePocContract(opts *bind.FilterOpts) (*AddressBookUpdatePocContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "UpdatePocContract") if err != nil { return nil, err @@ -3678,6 +3772,7 @@ func (_AddressBook *AddressBookFilterer) FilterUpdatePocContract(opts *bind.Filt // // Solidity: event UpdatePocContract(address prevPocContractAddress, uint256 prevVersion, address curPocContractAddress, uint256 curVersion) func (_AddressBook *AddressBookFilterer) WatchUpdatePocContract(opts *bind.WatchOpts, sink chan<- *AddressBookUpdatePocContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "UpdatePocContract") if err != nil { return nil, err @@ -3718,6 +3813,7 @@ func (_AddressBook *AddressBookFilterer) ParseUpdatePocContract(log types.Log) ( if err := _AddressBook.contract.UnpackLog(event, "UpdatePocContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3798,6 +3894,7 @@ type AddressBookUpdateRequirement struct { // // Solidity: event UpdateRequirement(uint256 requirement) func (_AddressBook *AddressBookFilterer) FilterUpdateRequirement(opts *bind.FilterOpts) (*AddressBookUpdateRequirementIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -3809,6 +3906,7 @@ func (_AddressBook *AddressBookFilterer) FilterUpdateRequirement(opts *bind.Filt // // Solidity: event UpdateRequirement(uint256 requirement) func (_AddressBook *AddressBookFilterer) WatchUpdateRequirement(opts *bind.WatchOpts, sink chan<- *AddressBookUpdateRequirement) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -3849,6 +3947,7 @@ func (_AddressBook *AddressBookFilterer) ParseUpdateRequirement(log types.Log) ( if err := _AddressBook.contract.UnpackLog(event, "UpdateRequirement", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3929,6 +4028,7 @@ type AddressBookUpdateSpareContract struct { // // Solidity: event UpdateSpareContract(address spareContractAddress) func (_AddressBook *AddressBookFilterer) FilterUpdateSpareContract(opts *bind.FilterOpts) (*AddressBookUpdateSpareContractIterator, error) { + logs, sub, err := _AddressBook.contract.FilterLogs(opts, "UpdateSpareContract") if err != nil { return nil, err @@ -3940,6 +4040,7 @@ func (_AddressBook *AddressBookFilterer) FilterUpdateSpareContract(opts *bind.Fi // // Solidity: event UpdateSpareContract(address spareContractAddress) func (_AddressBook *AddressBookFilterer) WatchUpdateSpareContract(opts *bind.WatchOpts, sink chan<- *AddressBookUpdateSpareContract) (event.Subscription, error) { + logs, sub, err := _AddressBook.contract.WatchLogs(opts, "UpdateSpareContract") if err != nil { return nil, err @@ -3980,6 +4081,7 @@ func (_AddressBook *AddressBookFilterer) ParseUpdateSpareContract(log types.Log) if err := _AddressBook.contract.UnpackLog(event, "UpdateSpareContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3998,8 +4100,8 @@ var AddressBookInterfaceABI = AddressBookInterfaceMetaData.ABI // AddressBookInterfaceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookInterfaceBinRuntime = `` -// AddressBookInterfaceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookInterfaceMetaData.Sigs instead. +// AddressBookInterfaceFuncSigs maps the 4-byte function signature to its string representation. var AddressBookInterfaceFuncSigs = AddressBookInterfaceMetaData.Sigs // AddressBookInterface is an auto generated Go binding around a Kaia contract. @@ -4226,8 +4328,8 @@ var CnStakingContractABI = CnStakingContractMetaData.ABI // CnStakingContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingContractBinRuntime = `60806040526004361061022f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306704222811461032d578063069135af1461035457806306b35d31146103775780630b8160451461038f5780630fd440ec1461044e578063139d7fed146104bf578063164990f8146104f05780631865c57d1461051757806319e44e32146106725780632429f8a91461068757806327e1f7df146106b7578063392e53cd146106d85780633b2d2aca146107015780634b6a94cc146107285780634b8bc6f8146107b25780634cf088d9146107d65780634f97638f146107eb578063505ebed41461080057806358d65880146108245780635badbe4c146108395780635df8b09a1461084e5780635ecd75f2146108725780636a27c206146109355780636e93df0d1461093d578063702b9c9b14610955578063704802751461096a578063725c05031461098b57806375a87643146109ee5780637818097c14610a03578063791b512314610a275780637a5db06814610a485780637b5e048114610a5d578063863f5c0a14610a7257806387cd9feb14610a935780638cf57cb914610aa85780638e6f6b7714610abd578063944dd5a214610ad2578063b756393014610af3578063c47afb3a14610b08578063c72507e914610b20578063c804b11514610b28578063d2569eb914610b40578063e748357b14610b61578063e7abb98d14610b79578063f2f2f49b14610b8e578063ffa1ad7414610ba3575b60065460a060020a900460ff161515600114610283576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b600034116102db576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c696420616d6f756e742e0000000000000000000000000000000000604482015290519081900360640190fd5b6010546102ee903463ffffffff610bb816565b6010556040805133815234602082015281517f016a7abf22d0d58c184d5eb406e8e9f6007698168251cf67add43fa4d13768f6929181900390910190a1005b34801561033957600080fd5b50610342610bd1565b60408051918252519081900360200190f35b34801561036057600080fd5b50610375600160a060020a0360043516610bd7565b005b34801561038357600080fd5b50610375600435610d27565b34801561039b57600080fd5b506103a7600435610f27565b604051808860088111156103b757fe5b60ff168152602081018890526040810187905260608101869052600160a060020a038516608082015260a081019060c0018360048111156103f457fe5b60ff168152602001828103825284818151815260200191508051906020019060200280838360005b8381101561043457818101518382015260200161041c565b505050509050019850505050505050505060405180910390f35b34801561045a57600080fd5b5061046f60043560243560ff60443516610ff0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104ab578181015183820152602001610493565b505050509050019250505060405180910390f35b3480156104cb57600080fd5b506104d4611118565b60408051600160a060020a039092168252519081900360200190f35b3480156104fc57600080fd5b5061037560043560ff60243516604435606435608435611127565b34801561052357600080fd5b5061052c6113d1565b604051808a600160a060020a0316600160a060020a0316815260200189600160a060020a0316600160a060020a0316815260200188600160a060020a0316600160a060020a03168152602001806020018781526020018060200180602001861515151581526020018515151515815260200184810384528a818151815260200191508051906020019060200280838360005b838110156105d65781810151838201526020016105be565b50505050905001848103835288818151815260200191508051906020019060200280838360005b838110156106155781810151838201526020016105fd565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561065457818101518382015260200161063c565b505050509050019c5050505050505050505050505060405180910390f35b34801561067e57600080fd5b5061034261153a565b34801561069357600080fd5b5061069c611540565b60408051921515835260208301919091528051918290030190f35b3480156106c357600080fd5b50610375600160a060020a036004351661154f565b3480156106e457600080fd5b506106ed6117e1565b604080519115158252519081900360200190f35b34801561070d57600080fd5b5061037560043560ff602435166044356064356084356117f1565b34801561073457600080fd5b5061073d611bec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561077757818101518382015260200161075f565b50505050905090810190601f1680156107a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107be57600080fd5b50610375600160a060020a0360043516602435611c23565b3480156107e257600080fd5b50610342611ded565b3480156107f757600080fd5b50610375611df3565b34801561080c57600080fd5b50610375600160a060020a0360043516602435611ec8565b34801561083057600080fd5b50610342612007565b34801561084557600080fd5b5061034261200c565b34801561085a57600080fd5b50610375600160a060020a0360043516602435612012565b34801561087e57600080fd5b506108876121ba565b604051808060200180602001868152602001858152602001848152602001838103835288818151815260200191508051906020019060200280838360005b838110156108dd5781810151838201526020016108c5565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561091c578181015183820152602001610904565b5050505090500197505050505050505060405180910390f35b61037561238e565b34801561094957600080fd5b50610375600435612586565b34801561096157600080fd5b5061037561293b565b34801561097657600080fd5b50610375600160a060020a0360043516612b04565b34801561099757600080fd5b506109a3600435612ce3565b6040518085600160a060020a0316600160a060020a031681526020018481526020018381526020018260028111156109d757fe5b60ff16815260200194505050505060405180910390f35b3480156109fa57600080fd5b5061046f612d18565b348015610a0f57600080fd5b50610375600160a060020a0360043516602435612ed3565b348015610a3357600080fd5b50610375600160a060020a036004351661308c565b348015610a5457600080fd5b506104d46132c3565b348015610a6957600080fd5b506103426132d2565b348015610a7e57600080fd5b50610375600160a060020a03600435166132d8565b348015610a9f57600080fd5b506103756134e7565b348015610ab457600080fd5b506104d46135da565b348015610ac957600080fd5b506103426135e9565b348015610ade57600080fd5b50610375600160a060020a03600435166135f0565b348015610aff57600080fd5b50610342613708565b348015610b1457600080fd5b5061037560043561370e565b610375613807565b348015610b3457600080fd5b50610375600435613905565b348015610b4c57600080fd5b5061046f60043560243560ff60443516613aca565b348015610b6d57600080fd5b50610375600435613c32565b348015610b8557600080fd5b50610342613ded565b348015610b9a57600080fd5b506104d4613df3565b348015610baf57600080fd5b50610342613df9565b600082820183811015610bca57600080fd5b9392505050565b600c5481565b60065460009060a060020a900460ff161515600114610c2e576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b81600160a060020a0381161515610c7d576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206149ab833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610cd4576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b6004549250610cf1836008600160a060020a038716600080613dfe565b6000838152600560205260409020805460018201546002830154600390930154610d2193879360ff1692916117f1565b50505050565b60065460009060a060020a900460ff161515600114610d7e576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515610dd5576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b600083815260126020526040902054600160a060020a03161515610e69576040805160e560020a62461bcd02815260206004820152602260248201527f5769746864726177616c207265717565737420646f6573206e6f74206578697360448201527f742e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008381526012602052604081206003015460ff166002811115610e8957fe5b14610ede576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c69642073746174652e000000000000000000000000000000000000604482015290519081900360640190fd5b6004549150610ef282600785600080613dfe565b6000828152600560205260409020805460018201546002830154600390930154610f2293869360ff1692916117f1565b505050565b60008181526005602081815260408084208054600182015460028301546003840154600485015460068601549590980180548751818a0281018a019098528088528a998a998a998a996060998b9960ff91821699909890979096600160a060020a039096169590949190921692918491830182828015610fd057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610fb2575b505050505091509650965096509650965096509650919395979092949650565b6060826000808383158061100657506004548710155b156110115760045493505b8784101561101e57600080fd5b600092508791505b838210156110725785600481111561103a57fe5b60008381526005602052604090206006015460ff16600481111561105a57fe5b1415611067576001830192505b600190910190611026565b8260405190808252806020026020018201604052801561109c578160200160208202803883390190505b509050600092508791505b8382101561110d578560048111156110bb57fe5b60008381526005602052604090206006015460ff1660048111156110db57fe5b1415611102578181848151811015156110f057fe5b60209081029091010152600192909201915b6001909101906110a7565b979650505050505050565b600e54600160a060020a031681565b6000808087600160008281526005602052604090206006015460ff16600481111561114e57fe5b146111a3576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156111fa576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b60008a81526005602081905260408220015490955093508492505b8383101561126b5760008a81526005602081905260409091200180548490811061123b57fe5b600091825260209091200154600160a060020a0316331415611260576001945061126b565b600190920191611215565b8415156112c2576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220686173206e6f7420636f6e6669726d65642e000000604482015290519081900360640190fd5b8860088111156112ce57fe5b60008b81526005602052604090205460ff1660088111156112eb57fe5b148015611308575060008a81526005602052604090206001015488145b8015611324575060008a81526005602052604090206002015487145b8015611340575060008a81526005602052604090206003015486145b15156113bc576040805160e560020a62461bcd02815260206004820152602760248201527f46756e6374696f6e20696420616e6420617267756d656e747320646f206e6f7460448201527f206d617463682e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6113c58a613f85565b50505050505050505050565b600654600e54600f5460015460095460008054604080516020808402820181019092528281529297889788976060978997899788978a978897600160a060020a038082169881169716958995909460079460089460ff9384169460a060020a90049093169288919083018282801561147257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611454575b50505050509550838054806020026020016040519081016040528092919081815260200182805480156114c457602002820191906000526020600020905b8154815260200190600101908083116114b0575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561151657602002820191906000526020600020905b815481526020019060010190808311611502575b50505050509250985098509850985098509850985098509850909192939495969798565b60115481565b600954600a5460ff9091169082565b600080333014611597576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054839060ff1615156115f9576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b60005461160d90600163ffffffff61412f16565b600154603282111580156116215750818111155b801561162c57508015155b801561163757508115155b151561167b576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b600160a060020a0386166000908152600260205260408120805460ff191690558054955093505b600185038410156117555785600160a060020a03166000858154811015156116c657fe5b600091825260209091200154600160a060020a0316141561174a576000805460001987019081106116f357fe5b60009182526020822001548154600160a060020a0390911691908690811061171757fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550611755565b6001909301926116a2565b60008054600019870190811061176757fe5b600091825260208220018054600160a060020a03191690555461179190600163ffffffff61412f16565b61179c600082614860565b506117a5611df3565b604051600160a060020a038716907f1af6bd3d85a56e7c4a0700756fd2ca3b3b65c266e56c77652c5a346bc256522090600090a2505050505050565b60065460a060020a900460ff1681565b60008080606088600160008281526005602052604090206006015460ff16600481111561181a57fe5b1461186f576040805160e560020a62461bcd02815260206004820152601f60248201527f4d757374206265206174206e6f742d636f6e6669726d65642073746174652e00604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156118c6576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b60008b81526005602081905260408220015490965094508593505b848410156119375760008b81526005602081905260409091200180548590811061190757fe5b600091825260209091200154600160a060020a031633141561192c5760019550611937565b6001909301926118e1565b851561198d576040805160e560020a62461bcd02815260206004820152601d60248201527f4d73672e73656e64657220616c726561647920636f6e6669726d65642e000000604482015290519081900360640190fd5b89600881111561199957fe5b60008c81526005602052604090205460ff1660088111156119b657fe5b1480156119d3575060008b81526005602052604090206001015489145b80156119ef575060008b81526005602052604090206002015488145b8015611a0b575060008b81526005602052604090206003015487145b1515611a87576040805160e560020a62461bcd02815260206004820152602760248201527f46756e6374696f6e20696420616e6420617267756d656e747320646f206e6f7460448201527f206d617463682e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008b81526005602081815260408084209092018054600181018255818552828520018054600160a060020a03191633179055928e9052825482518183028101830190935280835291929190830182828015611b0c57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611aee575b5050505050925033600160a060020a03168b7f658055f08cf63659025f616b2baf94baf8f4d2ee9c600c2ae722b4b7716cce468c8c8c8c8960405180866008811115611b5457fe5b60ff1681526020808201879052604082018690526060820185905260a08383038101608084019081528551918401919091528451909260c00191858101910280838360005b83811015611bb1578181015183820152602001611b99565b50505050905001965050505050505060405180910390a3611bd18b614146565b15611bdf57611bdf8b614163565b5050505050505050505050565b60408051808201909152601181527f436e5374616b696e67436f6e7472616374000000000000000000000000000000602082015281565b600654600090819060a060020a900460ff161515600114611c7c576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b83600160a060020a0381161515611ccb576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206149ab833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515611d22576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b611d2a6121ba565b9750506000881192505081159050611d425750838511155b1515611d98576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c69642076616c75652e000000000000000000000000000000000000604482015290519081900360640190fd5b6004549250611db5836005600160a060020a038916886000613dfe565b6000838152600560205260409020805460018201546002830154600390930154611de593879360ff1692916117f1565b505050505050565b60105481565b6000333014611e3a576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b506003545b600454811015611e9657600160008281526005602052604090206006015460ff166004811115611e6b57fe5b1415611e8e576000818152600560205260409020600601805460ff191660041790555b600101611e3f565b6004546003556040517f907527d30089abd16e30f06ddbbbc18480505176262f19bc16c1fbf9262f9c6b90600090a150565b6000333014611f0f576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b611f176121ba565b9450505050828210159050611f76576040805160e560020a62461bcd02815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e000000000000604482015290519081900360640190fd5b600d54611f89908363ffffffff61412f16565b600d55604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015611fc2573d6000803e3d6000fd5b50604080518381529051600160a060020a038516917f2d9d65e4fcab96e158761a8d3cc0bd7fd76951ab5574667b07190da171777470919081900360200190a2505050565b603281565b60045481565b6000333014612059576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b6010548211156120b3576040805160e560020a62461bcd02815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e000000000000604482015290519081900360640190fd5b5060115460408051608081018252600160a060020a03858116825260208083018681524262093a800184860190815260006060860181815288825260129094529590952084518154600160a060020a03191694169390931783555160018084019190915593516002808401919091559051600383018054949593949193909260ff1990921691849081111561214457fe5b02179055505060115461215f9150600163ffffffff610bb816565b60115560408051828152600160a060020a03851660208201528082018490524262093a8001606082015290517fdd0988b8c11a867814c87be652f93a86d35c6a235b92977e99d5394bd8580ced9181900360800190a1505050565b6060806000806000806000806000806000600660149054906101000a900460ff16151560011515141515612226576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b6007544296506000955093508492505b8383101561229957600780548490811061224c57fe5b906000526020600020015486111561228e576008805461228b91908590811061227157fe5b906000526020600020015486610bb890919063ffffffff16565b94505b600190920191612236565b600d54600c546122ae9163ffffffff61412f16565b91506122c0858363ffffffff61412f16565b905060076000016007600101600c54600d54848480548060200260200160405190810160405280929190818152602001828054801561231e57602002820191906000526020600020905b81548152602001906001019080831161230a575b505050505094508380548060200260200160405190810160405280929190818152602001828054801561237057602002820191906000526020600020905b81548152602001906001019080831161235c575b505050505093509a509a509a509a509a505050505050509091929394565b6006546000908190819060a060020a900460ff16156123f7576040805160e560020a62461bcd02815260206004820152601e60248201527f436f6e747261637420686173206265656e20696e697469616c697a65642e0000604482015290519081900360640190fd5b505060085460005b8181101561243e576008805461243491908390811061241a57fe5b906000526020600020015484610bb890919063ffffffff16565b92506001016123ff565b60095460ff16151560011461249d576040805160e560020a62461bcd02815260206004820152601a60248201527f526576696577696e67206973206e6f742066696e69736865642e000000000000604482015290519081900360640190fd5b3483146124f4576040805160e560020a62461bcd02815260206004820152601560248201527f56616c756520646f6573206e6f74206d617463682e0000000000000000000000604482015290519081900360640190fd5b60068054600160a060020a0316600090815260026020908152604091829020805460ff191690558254600c879055600d87905574ffffffffffffffffffffffffffffffffffffffffff191660a060020a179092558051338152349281019290925280517f2b3c5e8e58d7d1e42ccd071c6f749d53f9ee506020a81fad9ff98140ccccde699281900390910190a1505050565b3360008181526002602052604090205460ff1615156125dd576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b600082815260126020526040902054600160a060020a03161515612671576040805160e560020a62461bcd02815260206004820152602260248201527f5769746864726177616c207265717565737420646f6573206e6f74206578697360448201527f742e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526012602052604081206003015460ff16600281111561269157fe5b146126e6576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c69642073746174652e000000000000000000000000000000000000604482015290519081900360640190fd5b6010546000838152601260205260409020600101541115612751576040805160e560020a62461bcd02815260206004820152601a60248201527f56616c7565206973206e6f7420776974686472617761626c652e000000000000604482015290519081900360640190fd5b6000828152601260205260409020600201544210156127ba576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f7420776974686472617761626c65207965742e0000000000000000000000604482015290519081900360640190fd5b60008281526012602052604090206002015462093a800142106128505760008281526012602090815260409182902060038101805460ff1916600217905580546001909101548351868152600160a060020a03909216928201929092528083019190915290517fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df916060908290030190a1612937565b6000828152601260205260409020600101546010546128749163ffffffff61412f16565b60105560008281526012602052604080822060038101805460ff1916600190811790915581549101549151600160a060020a03909116926108fc831502929190818181858888f193505050501580156128d1573d6000803e3d6000fd5b5060008281526012602090815260409182902080546001909101548351868152600160a060020a03909216928201929092528083019190915290517f7a2d48d1df1249429730a253e5713a7d7a2024913de2fbccafdf36efdd32bf059181900360600190a15b5050565b3360008181526002602052604090205460ff161515612992576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b60065460a060020a900460ff16156129f4576040805160e560020a62461bcd02815260206004820152601e60248201527f436f6e747261637420686173206265656e20696e697469616c697a65642e0000604482015290519081900360640190fd5b336000908152600b602052604090205460ff1615612a5c576040805160e560020a62461bcd02815260206004820152601c60248201527f4d73672e73656e64657220616c72656164792072657669657765642e00000000604482015290519081900360640190fd5b336000908152600b60205260409020805460ff19166001908117909155600a54612a8b9163ffffffff610bb816565b600a5560405133907f65d287f4118b03f8cc979b433fd0b2246074200dd5da70c9daf204aaa0da1a2c90600090a2600054600a5460019091011415612b01576009805460ff191660011790556040517f244ff9a3d72b1dc5a4bce7f05fb615395f2a8c7ad6ea525d2bac9030f75d7a9b90600090a15b50565b333014612b49576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b600160a060020a038116600090815260026020526040902054819060ff1615612bbc576040805160e560020a62461bcd02815260206004820152601560248201527f41646d696e20616c7265616479206578697374732e0000000000000000000000604482015290519081900360640190fd5b600054612bd090600163ffffffff610bb816565b60015460328211158015612be45750818111155b8015612bef57508015155b8015612bfa57508115155b1515612c3e576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b600160a060020a0384166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018054600160a060020a0319169091179055612ca9611df3565b604051600160a060020a038516907fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90600090a250505050565b6000908152601260205260409020805460018201546002830154600390930154600160a060020a039092169390929160ff1690565b6006546060908190600090819060a060020a900460ff1615612d84576040805160e560020a62461bcd02815260206004820152601e60248201527f436f6e747261637420686173206265656e20696e697469616c697a65642e0000604482015290519081900360640190fd5b600760030154604051908082528060200260200182016040528015612db3578160200160208202803883390190505b50600654600160a060020a03166000908152600b6020526040812054919450925060ff16151560011415612e1c576006548351600160a060020a0390911690849084908110612dfe57fe5b600160a060020a039092166020928302909101909101526001909101905b5060005b600054811015612ecb57600760040160008083815481101515612e3f57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16151560011415612ec3576000805482908110612e7f57fe5b6000918252602090912001548351600160a060020a0390911690849084908110612ea557fe5b600160a060020a039092166020928302909101909101526001909101905b600101612e20565b509092915050565b60065460009060a060020a900460ff161515600114612f2a576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b82600160a060020a0381161515612f79576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206149ab833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515612fd0576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b600084118015612fe257506010548411155b1515613038576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c69642076616c75652e000000000000000000000000000000000000604482015290519081900360640190fd5b6004549250613055836006600160a060020a038816876000613dfe565b600083815260056020526040902080546001820154600283015460039093015461308593879360ff1692916117f1565b5050505050565b60065460009060a060020a900460ff1615156001146130e3576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff161515613145576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b82600160a060020a0381161515613194576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206149ab833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff1615156131eb576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b6000546131ff90600163ffffffff61412f16565b600154603282111580156132135750818111155b801561321e57508015155b801561322957508115155b151561326d576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b600454955061328a866002600160a060020a038a16600080613dfe565b60008681526005602052604090208054600182015460028301546003909301546132ba938a9360ff1692916117f1565b50505050505050565b600654600160a060020a031681565b600d5481565b60065460009060a060020a900460ff16151560011461332f576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260026020526040902054829060ff16156133a2576040805160e560020a62461bcd02815260206004820152601560248201527f41646d696e20616c7265616479206578697374732e0000000000000000000000604482015290519081900360640190fd5b82600160a060020a03811615156133f1576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206149ab833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613448576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b60005461345c90600163ffffffff610bb816565b600154603282111580156134705750818111155b801561347b57508015155b801561348657508115155b15156134ca576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b600454955061328a866001600160a060020a038a16600080613dfe565b60065460009060a060020a900460ff16151560011461353e576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613595576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b6004805492506135aa90839060008080613dfe565b600082815260056020526040902080546001820154600283015460039093015461293793869360ff1692916117f1565b600f54600160a060020a031681565b62093a8081565b333014613635576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b600f8054600160a060020a031916600160a060020a038316908117909155604080517f832a2aad0000000000000000000000000000000000000000000000000000000081526004810192909252516104009163832a2aad91602480830192600092919082900301818387803b1580156136ad57600080fd5b505af11580156136c1573d6000803e3d6000fd5b5050600f5460408051600160a060020a039092168252517fbe1849831e6775a2022006aeebcc00f70d10bc4202c8187e215ad9e9911f2b069350908190036020019150a150565b60015481565b333014613753576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b60005481603282118015906137685750818111155b801561377357508015155b801561377e57508115155b15156137c2576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b60018390556137cf611df3565b6040805184815290517f8951393946c27b45080aad111464c16c70f3d5e7d24b114a627334441961bf5f9181900360200190a1505050565b60065460a060020a900460ff16151560011461385b576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b600034116138b3576040805160e560020a62461bcd02815260206004820152600f60248201527f496e76616c696420616d6f756e742e0000000000000000000000000000000000604482015290519081900360640190fd5b6010546138c6903463ffffffff610bb816565b6010556040805133815234602082015281517f016a7abf22d0d58c184d5eb406e8e9f6007698168251cf67add43fa4d13768f6929181900390910190a1565b33301461394a576040805160e560020a62461bcd02815260206004820152601b602482015260008051602061494b833981519152604482015290519081900360640190fd5b600081815260126020526040902054600160a060020a031615156139de576040805160e560020a62461bcd02815260206004820152602260248201527f5769746864726177616c207265717565737420646f6573206e6f74206578697360448201527f742e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008181526012602052604081206003015460ff1660028111156139fe57fe5b14613a53576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c69642073746174652e000000000000000000000000000000000000604482015290519081900360640190fd5b60008181526012602090815260409182902060038101805460ff1916600217905580546001909101548351858152600160a060020a03909216928201929092528083019190915290517fcc847b5f283b573ff21408ad42cb442f358bbce95269470b05097215598173df916060908290030190a150565b60608260008083831580613ae057506011548710155b15613aeb5760115493505b87841015613b43576040805160e560020a62461bcd02815260206004820152600e60248201527f496e76616c696420696e6465782e000000000000000000000000000000000000604482015290519081900360640190fd5b600092508791505b83821015613b9757856002811115613b5f57fe5b60008381526012602052604090206003015460ff166002811115613b7f57fe5b1415613b8c576001830192505b600190910190613b4b565b82604051908082528060200260200182016040528015613bc1578160200160208202803883390190505b509050600092508791505b8382101561110d57856002811115613be057fe5b60008381526012602052604090206003015460ff166002811115613c0057fe5b1415613c2757818184815181101515613c1557fe5b60209081029091010152600192909201915b600190910190613bcc565b60065460009060a060020a900460ff161515600114613c89576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061496b833981519152604482015290519081900360640190fd5b3360008181526002602052604090205460ff161515613ce0576040805160e560020a62461bcd028152602060048201526015602482015260008051602061492b833981519152604482015290519081900360640190fd5b6000548360328211801590613cf55750818111155b8015613d0057508015155b8015613d0b57508115155b1515613d4f576040805160e560020a62461bcd028152602060048201526014602482015260008051602061498b833981519152604482015290519081900360640190fd5b600154851415613da9576040805160e560020a62461bcd02815260206004820152600d60248201527f496e76616c69642076616c756500000000000000000000000000000000000000604482015290519081900360640190fd5b6004549350613dbd84600387600080613dfe565b600084815260056020526040902080546001820154600283015460039093015461308593889360ff1692916117f1565b60035481565b61040081565b600181565b60e060405190810160405280856008811115613e1657fe5b815260208082018690526040808301869052606083018590523360808401528051600080825292810190915260a0909201919050815260200160019052600086815260056020526040902081518154829060ff19166001836008811115613e7957fe5b0217905550602082810151600183015560408301516002830155606083015160038301556080830151600483018054600160a060020a031916600160a060020a0390921691909117905560a08301518051613eda9260058501920190614884565b5060c082015160068201805460ff19166001836004811115613ef857fe5b021790555090505033600160a060020a0316857fdd9ce6d431d4ac3e8bea81bc2d7760b97d30c4e54252d8c8c59054849b8f61b58686868660405180856008811115613f4057fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3600454613f7b90600163ffffffff610bb816565b6004555050505050565b600081815260056020526040902060040154600160a060020a0316331415614041576000818152600560205260409081902060068101805460ff191660041790558054600182015460028301546003909301549351339486947f01011152a3b44da915f5831c5c63c3448b616dcc166c3543f289ed79645280c99460ff1693929091908085600881111561401557fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3612b01565b61404b8133614700565b60008181526005602081905260409182902080546001820154600283015460038401549551339688967fed38e5621fac2aa23736077187104abfe9c8aa1c5b4eb73015d8cfdf403fe0709660ff909616959192910190808660088111156140ae57fe5b60ff16815260208101869052604081018590526060810184905260a082820381016080830190815284549183018290529160c001908490801561411a57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116140fc575b5050965050505050505060405180910390a350565b6000808383111561413f57600080fd5b5050900390565b600154600082815260056020819052604090912001541015919050565b6000600160008381526005602052604090205460ff16600881111561418457fe5b14156141f2576000828152600560205260408082206001015481517f70480275000000000000000000000000000000000000000000000000000000008152600160a060020a0390911660048201529051309263704802759260248082019391829003018183875af193505050505b600260008381526005602052604090205460ff16600881111561421157fe5b141561427f576000828152600560205260408082206001015481517f27e1f7df000000000000000000000000000000000000000000000000000000008152600160a060020a039091166004820152905130926327e1f7df9260248082019391829003018183875af193505050505b600360008381526005602052604090205460ff16600881111561429e57fe5b1415614304576000828152600560205260408082206001015481517fc47afb3a00000000000000000000000000000000000000000000000000000000815260048101919091529051309263c47afb3a9260248082019391829003018183875af193505050505b600460008381526005602052604090205460ff16600881111561432357fe5b141561437a5730600160a060020a0316634f97638f6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303816000875af193505050505b600560008381526005602052604090205460ff16600881111561439957fe5b141561441357600082815260056020526040808220600181015460029091015482517f505ebed4000000000000000000000000000000000000000000000000000000008152600160a060020a03909216600483015260248201529051309263505ebed49260448082019391829003018183875af193505050505b600660008381526005602052604090205460ff16600881111561443257fe5b14156144ac57600082815260056020526040808220600181015460029091015482517f5df8b09a000000000000000000000000000000000000000000000000000000008152600160a060020a039092166004830152602482015290513092635df8b09a9260448082019391829003018183875af193505050505b600760008381526005602052604090205460ff1660088111156144cb57fe5b1415614531576000828152600560205260408082206001015481517fc804b11500000000000000000000000000000000000000000000000000000000815260048101919091529051309263c804b1159260248082019391829003018183875af193505050505b600860008381526005602052604090205460ff16600881111561455057fe5b14156145be576000828152600560205260408082206001015481517f944dd5a2000000000000000000000000000000000000000000000000000000008152600160a060020a0390911660048201529051309263944dd5a29260248082019391829003018183875af193505050505b8015614662576000828152600560205260409081902060068101805460ff1916600290811790915581546001830154918301546003909301549351339487947f48f16d9e6ab6f19798a7c7f307ecea3def480049fa0a09280e2a3fa45aaa84269460ff90941693929091908085600881111561463657fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a3612937565b6000828152600560205260409081902060068101805460ff1916600390811790915581546001830154600284015492909301549351339487947fbd3ad69fc5a8e233118506c67ebe892bef493fcf2eb9e6986f6d6c3f2adf0e8a9460ff909416939092909190808560088111156146d557fe5b60ff168152602081019490945250604080840192909252606083015251908190036080019150a35050565b600082815260056020819052604082200154905b81811015610d215760008481526005602081905260409091200180548290811061473a57fe5b600091825260209091200154600160a060020a038481169116141561485857600019820181146147ea576000848152600560208190526040909120018054600019840190811061478657fe5b60009182526020808320909101548683526005918290526040909220018054600160a060020a0390921691839081106147bb57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b6000848152600560208190526040909120018054600019840190811061480c57fe5b60009182526020909120018054600160a060020a031916905561483682600163ffffffff61412f16565b6000858152600560208190526040909120614852910182614860565b50610d21565b600101614714565b815481835581811115610f2257600083815260209020610f229181019083016148e9565b8280548282559060005260206000209081019282156148d9579160200282015b828111156148d95782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906148a4565b506148e5929150614906565b5090565b61490391905b808211156148e557600081556001016148ef565b90565b61490391905b808211156148e5578054600160a060020a031916815560010161490c560041646472657373206973206e6f742061646d696e2e00000000000000000000004e6f742061206d756c74697369672d7472616e73616374696f6e2e0000000000436f6e7472616374206973206e6f7420696e697469616c697a65642e00000000496e76616c696420726571756972656d656e742e00000000000000000000000041646472657373206973206e756c6c0000000000000000000000000000000000a165627a7a723058206f507a45eb565be1f982c7739190dc14fa77620830c6da497f5c977c3b19d8290029` -// CnStakingContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingContractMetaData.Sigs instead. +// CnStakingContractFuncSigs maps the 4-byte function signature to its string representation. var CnStakingContractFuncSigs = CnStakingContractMetaData.Sigs // CnStakingContractBin is the compiled bytecode used for deploying new contracts. @@ -4399,6 +4501,7 @@ func (_CnStakingContract *CnStakingContractTransactorRaw) Transact(opts *bind.Tr func (_CnStakingContract *CnStakingContractCaller) ADDRESSBOOKADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "ADDRESS_BOOK_ADDRESS") + if err != nil { return *new(common.Address), err } @@ -4406,6 +4509,7 @@ func (_CnStakingContract *CnStakingContractCaller) ADDRESSBOOKADDRESS(opts *bind out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ADDRESSBOOKADDRESS is a free data retrieval call binding the contract method 0xf2f2f49b. @@ -4428,6 +4532,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) ADDRESSBOOKADDRESS() ( func (_CnStakingContract *CnStakingContractCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -4435,6 +4540,7 @@ func (_CnStakingContract *CnStakingContractCaller) CONTRACTTYPE(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -4457,6 +4563,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) CONTRACTTYPE() (string func (_CnStakingContract *CnStakingContractCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -4464,6 +4571,7 @@ func (_CnStakingContract *CnStakingContractCaller) MAXADMIN(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -4486,6 +4594,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) MAXADMIN() (*big.Int, func (_CnStakingContract *CnStakingContractCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -4493,6 +4602,7 @@ func (_CnStakingContract *CnStakingContractCaller) ONEWEEK(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -4515,6 +4625,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) ONEWEEK() (*big.Int, e func (_CnStakingContract *CnStakingContractCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -4522,6 +4633,7 @@ func (_CnStakingContract *CnStakingContractCaller) VERSION(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -4544,6 +4656,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) VERSION() (*big.Int, e func (_CnStakingContract *CnStakingContractCaller) ContractValidator(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "contractValidator") + if err != nil { return *new(common.Address), err } @@ -4551,6 +4664,7 @@ func (_CnStakingContract *CnStakingContractCaller) ContractValidator(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // ContractValidator is a free data retrieval call binding the contract method 0x7a5db068. @@ -4573,6 +4687,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) ContractValidator() (c func (_CnStakingContract *CnStakingContractCaller) GetApprovedStakingWithdrawalIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getApprovedStakingWithdrawalIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -4580,6 +4695,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetApprovedStakingWithdrawalI out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetApprovedStakingWithdrawalIds is a free data retrieval call binding the contract method 0xd2569eb9. @@ -4602,6 +4718,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetApprovedStakingWith func (_CnStakingContract *CnStakingContractCaller) GetApprovedStakingWithdrawalInfo(opts *bind.CallOpts, _index *big.Int) (common.Address, *big.Int, *big.Int, uint8, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getApprovedStakingWithdrawalInfo", _index) + if err != nil { return *new(common.Address), *new(*big.Int), *new(*big.Int), *new(uint8), err } @@ -4612,6 +4729,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetApprovedStakingWithdrawalI out3 := *abi.ConvertType(out[3], new(uint8)).(*uint8) return out0, out1, out2, out3, err + } // GetApprovedStakingWithdrawalInfo is a free data retrieval call binding the contract method 0x725c0503. @@ -4634,6 +4752,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetApprovedStakingWith func (_CnStakingContract *CnStakingContractCaller) GetLockupStakingInfo(opts *bind.CallOpts) ([]*big.Int, []*big.Int, *big.Int, *big.Int, *big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getLockupStakingInfo") + if err != nil { return *new([]*big.Int), *new([]*big.Int), *new(*big.Int), *new(*big.Int), *new(*big.Int), err } @@ -4645,6 +4764,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetLockupStakingInfo(opts *bi out4 := *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) return out0, out1, out2, out3, out4, err + } // GetLockupStakingInfo is a free data retrieval call binding the contract method 0x5ecd75f2. @@ -4667,6 +4787,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetLockupStakingInfo() func (_CnStakingContract *CnStakingContractCaller) GetRequestIds(opts *bind.CallOpts, _from *big.Int, _to *big.Int, _state uint8) ([]*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getRequestIds", _from, _to, _state) + if err != nil { return *new([]*big.Int), err } @@ -4674,6 +4795,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetRequestIds(opts *bind.Call out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err + } // GetRequestIds is a free data retrieval call binding the contract method 0x0fd440ec. @@ -4696,6 +4818,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetRequestIds(_from *b func (_CnStakingContract *CnStakingContractCaller) GetRequestInfo(opts *bind.CallOpts, _id *big.Int) (uint8, [32]byte, [32]byte, [32]byte, common.Address, []common.Address, uint8, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getRequestInfo", _id) + if err != nil { return *new(uint8), *new([32]byte), *new([32]byte), *new([32]byte), *new(common.Address), *new([]common.Address), *new(uint8), err } @@ -4709,6 +4832,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetRequestInfo(opts *bind.Cal out6 := *abi.ConvertType(out[6], new(uint8)).(*uint8) return out0, out1, out2, out3, out4, out5, out6, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x0b816045. @@ -4731,6 +4855,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetRequestInfo(_id *bi func (_CnStakingContract *CnStakingContractCaller) GetReviewers(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getReviewers") + if err != nil { return *new([]common.Address), err } @@ -4738,6 +4863,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetReviewers(opts *bind.CallO out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetReviewers is a free data retrieval call binding the contract method 0x75a87643. @@ -4760,6 +4886,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetReviewers() ([]comm func (_CnStakingContract *CnStakingContractCaller) GetState(opts *bind.CallOpts) (common.Address, common.Address, common.Address, []common.Address, *big.Int, []*big.Int, []*big.Int, bool, bool, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "getState") + if err != nil { return *new(common.Address), *new(common.Address), *new(common.Address), *new([]common.Address), *new(*big.Int), *new([]*big.Int), *new([]*big.Int), *new(bool), *new(bool), err } @@ -4775,6 +4902,7 @@ func (_CnStakingContract *CnStakingContractCaller) GetState(opts *bind.CallOpts) out8 := *abi.ConvertType(out[8], new(bool)).(*bool) return out0, out1, out2, out3, out4, out5, out6, out7, out8, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -4797,6 +4925,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) GetState() (common.Add func (_CnStakingContract *CnStakingContractCaller) InitialLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "initialLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -4804,6 +4933,7 @@ func (_CnStakingContract *CnStakingContractCaller) InitialLockupStaking(opts *bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // InitialLockupStaking is a free data retrieval call binding the contract method 0x06704222. @@ -4826,6 +4956,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) InitialLockupStaking() func (_CnStakingContract *CnStakingContractCaller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -4833,6 +4964,7 @@ func (_CnStakingContract *CnStakingContractCaller) IsInitialized(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -4855,6 +4987,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) IsInitialized() (bool, func (_CnStakingContract *CnStakingContractCaller) LastClearedId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "lastClearedId") + if err != nil { return *new(*big.Int), err } @@ -4862,6 +4995,7 @@ func (_CnStakingContract *CnStakingContractCaller) LastClearedId(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // LastClearedId is a free data retrieval call binding the contract method 0xe7abb98d. @@ -4884,8 +5018,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) LastClearedId() (*big. func (_CnStakingContract *CnStakingContractCaller) LockupConditions(opts *bind.CallOpts) (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "lockupConditions") @@ -4893,10 +5026,15 @@ func (_CnStakingContract *CnStakingContractCaller) LockupConditions(opts *bind.C AllReviewed bool ReviewedCount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AllReviewed = *abi.ConvertType(out[0], new(bool)).(*bool) outstruct.ReviewedCount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // LockupConditions is a free data retrieval call binding the contract method 0x2429f8a9. @@ -4905,8 +5043,7 @@ func (_CnStakingContract *CnStakingContractCaller) LockupConditions(opts *bind.C func (_CnStakingContract *CnStakingContractSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingContract.Contract.LockupConditions(&_CnStakingContract.CallOpts) } @@ -4916,8 +5053,7 @@ func (_CnStakingContract *CnStakingContractSession) LockupConditions() (struct { func (_CnStakingContract *CnStakingContractCallerSession) LockupConditions() (struct { AllReviewed bool ReviewedCount *big.Int -}, error, -) { +}, error) { return _CnStakingContract.Contract.LockupConditions(&_CnStakingContract.CallOpts) } @@ -4927,6 +5063,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) LockupConditions() (st func (_CnStakingContract *CnStakingContractCaller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -4934,6 +5071,7 @@ func (_CnStakingContract *CnStakingContractCaller) NodeId(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -4956,6 +5094,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) NodeId() (common.Addre func (_CnStakingContract *CnStakingContractCaller) RemainingLockupStaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "remainingLockupStaking") + if err != nil { return *new(*big.Int), err } @@ -4963,6 +5102,7 @@ func (_CnStakingContract *CnStakingContractCaller) RemainingLockupStaking(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RemainingLockupStaking is a free data retrieval call binding the contract method 0x7b5e0481. @@ -4985,6 +5125,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) RemainingLockupStaking func (_CnStakingContract *CnStakingContractCaller) RequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "requestCount") + if err != nil { return *new(*big.Int), err } @@ -4992,6 +5133,7 @@ func (_CnStakingContract *CnStakingContractCaller) RequestCount(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RequestCount is a free data retrieval call binding the contract method 0x5badbe4c. @@ -5014,6 +5156,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) RequestCount() (*big.I func (_CnStakingContract *CnStakingContractCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -5021,6 +5164,7 @@ func (_CnStakingContract *CnStakingContractCaller) Requirement(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -5043,6 +5187,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) Requirement() (*big.In func (_CnStakingContract *CnStakingContractCaller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -5050,6 +5195,7 @@ func (_CnStakingContract *CnStakingContractCaller) RewardAddress(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -5072,6 +5218,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) RewardAddress() (commo func (_CnStakingContract *CnStakingContractCaller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -5079,6 +5226,7 @@ func (_CnStakingContract *CnStakingContractCaller) Staking(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -5101,6 +5249,7 @@ func (_CnStakingContract *CnStakingContractCallerSession) Staking() (*big.Int, e func (_CnStakingContract *CnStakingContractCaller) WithdrawalRequestCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _CnStakingContract.contract.Call(opts, &out, "withdrawalRequestCount") + if err != nil { return *new(*big.Int), err } @@ -5108,6 +5257,7 @@ func (_CnStakingContract *CnStakingContractCaller) WithdrawalRequestCount(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // WithdrawalRequestCount is a free data retrieval call binding the contract method 0x19e44e32. @@ -5684,6 +5834,7 @@ type CnStakingContractAddAdmin struct { // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingContract *CnStakingContractFilterer) FilterAddAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingContractAddAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -5700,6 +5851,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterAddAdmin(opts *bind.F // // Solidity: event AddAdmin(address indexed admin) func (_CnStakingContract *CnStakingContractFilterer) WatchAddAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingContractAddAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -5745,6 +5897,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseAddAdmin(log types.Log if err := _CnStakingContract.contract.UnpackLog(event, "AddAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5828,6 +5981,7 @@ type CnStakingContractApproveStakingWithdrawal struct { // // Solidity: event ApproveStakingWithdrawal(uint256 approvedWithdrawalId, address to, uint256 value, uint256 withdrawableFrom) func (_CnStakingContract *CnStakingContractFilterer) FilterApproveStakingWithdrawal(opts *bind.FilterOpts) (*CnStakingContractApproveStakingWithdrawalIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "ApproveStakingWithdrawal") if err != nil { return nil, err @@ -5839,6 +5993,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterApproveStakingWithdra // // Solidity: event ApproveStakingWithdrawal(uint256 approvedWithdrawalId, address to, uint256 value, uint256 withdrawableFrom) func (_CnStakingContract *CnStakingContractFilterer) WatchApproveStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingContractApproveStakingWithdrawal) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "ApproveStakingWithdrawal") if err != nil { return nil, err @@ -5879,6 +6034,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseApproveStakingWithdraw if err := _CnStakingContract.contract.UnpackLog(event, "ApproveStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5961,6 +6117,7 @@ type CnStakingContractCancelApprovedStakingWithdrawal struct { // // Solidity: event CancelApprovedStakingWithdrawal(uint256 approvedWithdrawalId, address to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) FilterCancelApprovedStakingWithdrawal(opts *bind.FilterOpts) (*CnStakingContractCancelApprovedStakingWithdrawalIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "CancelApprovedStakingWithdrawal") if err != nil { return nil, err @@ -5972,6 +6129,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterCancelApprovedStaking // // Solidity: event CancelApprovedStakingWithdrawal(uint256 approvedWithdrawalId, address to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) WatchCancelApprovedStakingWithdrawal(opts *bind.WatchOpts, sink chan<- *CnStakingContractCancelApprovedStakingWithdrawal) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "CancelApprovedStakingWithdrawal") if err != nil { return nil, err @@ -6012,6 +6170,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseCancelApprovedStakingW if err := _CnStakingContract.contract.UnpackLog(event, "CancelApprovedStakingWithdrawal", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6097,6 +6256,7 @@ type CnStakingContractCancelRequest struct { // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) FilterCancelRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractCancelRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -6117,6 +6277,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterCancelRequest(opts *b // // Solidity: event CancelRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) WatchCancelRequest(opts *bind.WatchOpts, sink chan<- *CnStakingContractCancelRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -6166,6 +6327,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseCancelRequest(log type if err := _CnStakingContract.contract.UnpackLog(event, "CancelRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6245,6 +6407,7 @@ type CnStakingContractClearRequest struct { // // Solidity: event ClearRequest() func (_CnStakingContract *CnStakingContractFilterer) FilterClearRequest(opts *bind.FilterOpts) (*CnStakingContractClearRequestIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -6256,6 +6419,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterClearRequest(opts *bi // // Solidity: event ClearRequest() func (_CnStakingContract *CnStakingContractFilterer) WatchClearRequest(opts *bind.WatchOpts, sink chan<- *CnStakingContractClearRequest) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "ClearRequest") if err != nil { return nil, err @@ -6296,6 +6460,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseClearRequest(log types if err := _CnStakingContract.contract.UnpackLog(event, "ClearRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6375,6 +6540,7 @@ type CnStakingContractCompleteReviewInitialConditions struct { // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingContract *CnStakingContractFilterer) FilterCompleteReviewInitialConditions(opts *bind.FilterOpts) (*CnStakingContractCompleteReviewInitialConditionsIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -6386,6 +6552,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterCompleteReviewInitial // // Solidity: event CompleteReviewInitialConditions() func (_CnStakingContract *CnStakingContractFilterer) WatchCompleteReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingContractCompleteReviewInitialConditions) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "CompleteReviewInitialConditions") if err != nil { return nil, err @@ -6426,6 +6593,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseCompleteReviewInitialC if err := _CnStakingContract.contract.UnpackLog(event, "CompleteReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6512,6 +6680,7 @@ type CnStakingContractConfirmRequest struct { // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingContract *CnStakingContractFilterer) FilterConfirmRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractConfirmRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -6532,6 +6701,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterConfirmRequest(opts * // // Solidity: event ConfirmRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingContract *CnStakingContractFilterer) WatchConfirmRequest(opts *bind.WatchOpts, sink chan<- *CnStakingContractConfirmRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -6581,6 +6751,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseConfirmRequest(log typ if err := _CnStakingContract.contract.UnpackLog(event, "ConfirmRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6661,6 +6832,7 @@ type CnStakingContractDeleteAdmin struct { // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingContract *CnStakingContractFilterer) FilterDeleteAdmin(opts *bind.FilterOpts, admin []common.Address) (*CnStakingContractDeleteAdminIterator, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -6677,6 +6849,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterDeleteAdmin(opts *bin // // Solidity: event DeleteAdmin(address indexed admin) func (_CnStakingContract *CnStakingContractFilterer) WatchDeleteAdmin(opts *bind.WatchOpts, sink chan<- *CnStakingContractDeleteAdmin, admin []common.Address) (event.Subscription, error) { + var adminRule []interface{} for _, adminItem := range admin { adminRule = append(adminRule, adminItem) @@ -6722,6 +6895,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseDeleteAdmin(log types. if err := _CnStakingContract.contract.UnpackLog(event, "DeleteAdmin", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6809,6 +6983,7 @@ type CnStakingContractDeployContract struct { // // Solidity: event DeployContract(string contractType, address contractValidator, address nodeId, address rewardAddress, address[] cnAdminList, uint256 requirement, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingContract *CnStakingContractFilterer) FilterDeployContract(opts *bind.FilterOpts) (*CnStakingContractDeployContractIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "DeployContract") if err != nil { return nil, err @@ -6820,6 +6995,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterDeployContract(opts * // // Solidity: event DeployContract(string contractType, address contractValidator, address nodeId, address rewardAddress, address[] cnAdminList, uint256 requirement, uint256[] unlockTime, uint256[] unlockAmount) func (_CnStakingContract *CnStakingContractFilterer) WatchDeployContract(opts *bind.WatchOpts, sink chan<- *CnStakingContractDeployContract) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "DeployContract") if err != nil { return nil, err @@ -6860,6 +7036,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseDeployContract(log typ if err := _CnStakingContract.contract.UnpackLog(event, "DeployContract", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6941,6 +7118,7 @@ type CnStakingContractDepositLockupStakingAndInit struct { // // Solidity: event DepositLockupStakingAndInit(address from, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) FilterDepositLockupStakingAndInit(opts *bind.FilterOpts) (*CnStakingContractDepositLockupStakingAndInitIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "DepositLockupStakingAndInit") if err != nil { return nil, err @@ -6952,6 +7130,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterDepositLockupStakingA // // Solidity: event DepositLockupStakingAndInit(address from, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) WatchDepositLockupStakingAndInit(opts *bind.WatchOpts, sink chan<- *CnStakingContractDepositLockupStakingAndInit) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "DepositLockupStakingAndInit") if err != nil { return nil, err @@ -6992,6 +7171,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseDepositLockupStakingAn if err := _CnStakingContract.contract.UnpackLog(event, "DepositLockupStakingAndInit", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7077,6 +7257,7 @@ type CnStakingContractExecuteRequestFailure struct { // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) FilterExecuteRequestFailure(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractExecuteRequestFailureIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7097,6 +7278,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterExecuteRequestFailure // // Solidity: event ExecuteRequestFailure(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) WatchExecuteRequestFailure(opts *bind.WatchOpts, sink chan<- *CnStakingContractExecuteRequestFailure, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7146,6 +7328,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseExecuteRequestFailure( if err := _CnStakingContract.contract.UnpackLog(event, "ExecuteRequestFailure", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7231,6 +7414,7 @@ type CnStakingContractExecuteRequestSuccess struct { // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) FilterExecuteRequestSuccess(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractExecuteRequestSuccessIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7251,6 +7435,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterExecuteRequestSuccess // // Solidity: event ExecuteRequestSuccess(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) WatchExecuteRequestSuccess(opts *bind.WatchOpts, sink chan<- *CnStakingContractExecuteRequestSuccess, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7300,6 +7485,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseExecuteRequestSuccess( if err := _CnStakingContract.contract.UnpackLog(event, "ExecuteRequestSuccess", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7380,6 +7566,7 @@ type CnStakingContractReviewInitialConditions struct { // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingContract *CnStakingContractFilterer) FilterReviewInitialConditions(opts *bind.FilterOpts, from []common.Address) (*CnStakingContractReviewInitialConditionsIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -7396,6 +7583,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterReviewInitialConditio // // Solidity: event ReviewInitialConditions(address indexed from) func (_CnStakingContract *CnStakingContractFilterer) WatchReviewInitialConditions(opts *bind.WatchOpts, sink chan<- *CnStakingContractReviewInitialConditions, from []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -7441,6 +7629,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseReviewInitialCondition if err := _CnStakingContract.contract.UnpackLog(event, "ReviewInitialConditions", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7523,6 +7712,7 @@ type CnStakingContractReviseRewardAddress struct { // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_CnStakingContract *CnStakingContractFilterer) FilterReviseRewardAddress(opts *bind.FilterOpts) (*CnStakingContractReviseRewardAddressIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -7534,6 +7724,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterReviseRewardAddress(o // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_CnStakingContract *CnStakingContractFilterer) WatchReviseRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingContractReviseRewardAddress) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -7574,6 +7765,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseReviseRewardAddress(lo if err := _CnStakingContract.contract.UnpackLog(event, "ReviseRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7660,6 +7852,7 @@ type CnStakingContractRevokeConfirmation struct { // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingContract *CnStakingContractFilterer) FilterRevokeConfirmation(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractRevokeConfirmationIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7680,6 +7873,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterRevokeConfirmation(op // // Solidity: event RevokeConfirmation(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg, address[] confirmers) func (_CnStakingContract *CnStakingContractFilterer) WatchRevokeConfirmation(opts *bind.WatchOpts, sink chan<- *CnStakingContractRevokeConfirmation, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7729,6 +7923,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseRevokeConfirmation(log if err := _CnStakingContract.contract.UnpackLog(event, "RevokeConfirmation", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7810,6 +8005,7 @@ type CnStakingContractStakeKlay struct { // // Solidity: event StakeKlay(address from, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) FilterStakeKlay(opts *bind.FilterOpts) (*CnStakingContractStakeKlayIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "StakeKlay") if err != nil { return nil, err @@ -7821,6 +8017,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterStakeKlay(opts *bind. // // Solidity: event StakeKlay(address from, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) WatchStakeKlay(opts *bind.WatchOpts, sink chan<- *CnStakingContractStakeKlay) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "StakeKlay") if err != nil { return nil, err @@ -7861,6 +8058,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseStakeKlay(log types.Lo if err := _CnStakingContract.contract.UnpackLog(event, "StakeKlay", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7946,6 +8144,7 @@ type CnStakingContractSubmitRequest struct { // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) FilterSubmitRequest(opts *bind.FilterOpts, id []*big.Int, from []common.Address) (*CnStakingContractSubmitRequestIterator, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -7966,6 +8165,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterSubmitRequest(opts *b // // Solidity: event SubmitRequest(uint256 indexed id, address indexed from, uint8 functionId, bytes32 firstArg, bytes32 secondArg, bytes32 thirdArg) func (_CnStakingContract *CnStakingContractFilterer) WatchSubmitRequest(opts *bind.WatchOpts, sink chan<- *CnStakingContractSubmitRequest, id []*big.Int, from []common.Address) (event.Subscription, error) { + var idRule []interface{} for _, idItem := range id { idRule = append(idRule, idItem) @@ -8015,6 +8215,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseSubmitRequest(log type if err := _CnStakingContract.contract.UnpackLog(event, "SubmitRequest", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8095,6 +8296,7 @@ type CnStakingContractUpdateRequirement struct { // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingContract *CnStakingContractFilterer) FilterUpdateRequirement(opts *bind.FilterOpts) (*CnStakingContractUpdateRequirementIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -8106,6 +8308,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterUpdateRequirement(opt // // Solidity: event UpdateRequirement(uint256 requirement) func (_CnStakingContract *CnStakingContractFilterer) WatchUpdateRequirement(opts *bind.WatchOpts, sink chan<- *CnStakingContractUpdateRequirement) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "UpdateRequirement") if err != nil { return nil, err @@ -8146,6 +8349,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseUpdateRequirement(log if err := _CnStakingContract.contract.UnpackLog(event, "UpdateRequirement", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8226,6 +8430,7 @@ type CnStakingContractUpdateRewardAddress struct { // // Solidity: event UpdateRewardAddress(address rewardAddress) func (_CnStakingContract *CnStakingContractFilterer) FilterUpdateRewardAddress(opts *bind.FilterOpts) (*CnStakingContractUpdateRewardAddressIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "UpdateRewardAddress") if err != nil { return nil, err @@ -8237,6 +8442,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterUpdateRewardAddress(o // // Solidity: event UpdateRewardAddress(address rewardAddress) func (_CnStakingContract *CnStakingContractFilterer) WatchUpdateRewardAddress(opts *bind.WatchOpts, sink chan<- *CnStakingContractUpdateRewardAddress) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "UpdateRewardAddress") if err != nil { return nil, err @@ -8277,6 +8483,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseUpdateRewardAddress(lo if err := _CnStakingContract.contract.UnpackLog(event, "UpdateRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8359,6 +8566,7 @@ type CnStakingContractWithdrawApprovedStaking struct { // // Solidity: event WithdrawApprovedStaking(uint256 approvedWithdrawalId, address to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) FilterWithdrawApprovedStaking(opts *bind.FilterOpts) (*CnStakingContractWithdrawApprovedStakingIterator, error) { + logs, sub, err := _CnStakingContract.contract.FilterLogs(opts, "WithdrawApprovedStaking") if err != nil { return nil, err @@ -8370,6 +8578,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterWithdrawApprovedStaki // // Solidity: event WithdrawApprovedStaking(uint256 approvedWithdrawalId, address to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) WatchWithdrawApprovedStaking(opts *bind.WatchOpts, sink chan<- *CnStakingContractWithdrawApprovedStaking) (event.Subscription, error) { + logs, sub, err := _CnStakingContract.contract.WatchLogs(opts, "WithdrawApprovedStaking") if err != nil { return nil, err @@ -8410,6 +8619,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseWithdrawApprovedStakin if err := _CnStakingContract.contract.UnpackLog(event, "WithdrawApprovedStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8491,6 +8701,7 @@ type CnStakingContractWithdrawLockupStaking struct { // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) FilterWithdrawLockupStaking(opts *bind.FilterOpts, to []common.Address) (*CnStakingContractWithdrawLockupStakingIterator, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -8507,6 +8718,7 @@ func (_CnStakingContract *CnStakingContractFilterer) FilterWithdrawLockupStaking // // Solidity: event WithdrawLockupStaking(address indexed to, uint256 value) func (_CnStakingContract *CnStakingContractFilterer) WatchWithdrawLockupStaking(opts *bind.WatchOpts, sink chan<- *CnStakingContractWithdrawLockupStaking, to []common.Address) (event.Subscription, error) { + var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) @@ -8552,6 +8764,7 @@ func (_CnStakingContract *CnStakingContractFilterer) ParseWithdrawLockupStaking( if err := _CnStakingContract.contract.UnpackLog(event, "WithdrawLockupStaking", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8572,8 +8785,8 @@ var CnStakingContractInterfaceABI = CnStakingContractInterfaceMetaData.ABI // CnStakingContractInterfaceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CnStakingContractInterfaceBinRuntime = `` -// CnStakingContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CnStakingContractInterfaceMetaData.Sigs instead. +// CnStakingContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. var CnStakingContractInterfaceFuncSigs = CnStakingContractInterfaceMetaData.Sigs // CnStakingContractInterface is an auto generated Go binding around a Kaia contract. @@ -8724,6 +8937,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceTransactorRaw) Tran func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) IsInitialized(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _CnStakingContractInterface.contract.Call(opts, &out, "isInitialized") + if err != nil { return *new(bool), err } @@ -8731,6 +8945,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) IsInitializ out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsInitialized is a free data retrieval call binding the contract method 0x392e53cd. @@ -8753,6 +8968,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceCallerSession) IsIn func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) NodeId(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContractInterface.contract.Call(opts, &out, "nodeId") + if err != nil { return *new(common.Address), err } @@ -8760,6 +8976,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) NodeId(opts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId is a free data retrieval call binding the contract method 0x139d7fed. @@ -8782,6 +8999,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceCallerSession) Node func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) RewardAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CnStakingContractInterface.contract.Call(opts, &out, "rewardAddress") + if err != nil { return *new(common.Address), err } @@ -8789,6 +9007,7 @@ func (_CnStakingContractInterface *CnStakingContractInterfaceCaller) RewardAddre out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // RewardAddress is a free data retrieval call binding the contract method 0x8cf57cb9. @@ -8820,8 +9039,8 @@ var KirContractInterfaceABI = KirContractInterfaceMetaData.ABI // KirContractInterfaceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const KirContractInterfaceBinRuntime = `` -// KirContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use KirContractInterfaceMetaData.Sigs instead. +// KirContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. var KirContractInterfaceFuncSigs = KirContractInterfaceMetaData.Sigs // KirContractInterface is an auto generated Go binding around a Kaia contract. @@ -8972,6 +9191,7 @@ func (_KirContractInterface *KirContractInterfaceTransactorRaw) Transact(opts *b func (_KirContractInterface *KirContractInterfaceCaller) GetKirVersion(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _KirContractInterface.contract.Call(opts, &out, "getKirVersion") + if err != nil { return *new(*big.Int), err } @@ -8979,6 +9199,7 @@ func (_KirContractInterface *KirContractInterfaceCaller) GetKirVersion(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetKirVersion is a free data retrieval call binding the contract method 0x44426346. @@ -9010,8 +9231,8 @@ var PocContractInterfaceABI = PocContractInterfaceMetaData.ABI // PocContractInterfaceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const PocContractInterfaceBinRuntime = `` -// PocContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use PocContractInterfaceMetaData.Sigs instead. +// PocContractInterfaceFuncSigs maps the 4-byte function signature to its string representation. var PocContractInterfaceFuncSigs = PocContractInterfaceMetaData.Sigs // PocContractInterface is an auto generated Go binding around a Kaia contract. @@ -9162,6 +9383,7 @@ func (_PocContractInterface *PocContractInterfaceTransactorRaw) Transact(opts *b func (_PocContractInterface *PocContractInterfaceCaller) GetPocVersion(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _PocContractInterface.contract.Call(opts, &out, "getPocVersion") + if err != nil { return *new(*big.Int), err } @@ -9169,6 +9391,7 @@ func (_PocContractInterface *PocContractInterfaceCaller) GetPocVersion(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetPocVersion is a free data retrieval call binding the contract method 0x0f610072. diff --git a/contracts/contracts/system_contracts/gov/GovParam.go b/contracts/contracts/system_contracts/gov/GovParam.go index ed59c189f..782fea980 100644 --- a/contracts/contracts/system_contracts/gov/GovParam.go +++ b/contracts/contracts/system_contracts/gov/GovParam.go @@ -208,7 +208,7 @@ var GovParamMetaData = &bind.MetaData{ "b93244a5": "setParamIn(string,bool,bytes,uint256)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61201f8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063b93244a511610066578063b93244a5146101a8578063cc4783b6146101bb578063db758754146101d0578063f2fde38b146101f057600080fd5b8063715018a61461017d5780638da5cb5b14610185578063a170052e146101a057600080fd5b80631e31825a146100d4578063296451d9146100fe5780633f8aa6241461011e5780635516c21c146101335780635d4f71d4146101495780636a1ec27c1461016a575b600080fd5b6100e76100e2366004611776565b610203565b6040516100f5929190611837565b60405180910390f35b61011161010c3660046118eb565b61056e565b6040516100f5919061192d565b61013161012c3660046119ae565b61069d565b005b61013b610a97565b6040516100f5929190611a40565b61015c6101573660046118eb565b610d4b565b6040516100f5929190611b07565b61015c610178366004611b40565b610e9e565b61013161106b565b6000546040516001600160a01b0390911681526020016100f5565b6100e761107f565b6101316101b63660046119ae565b6113e5565b6101c3611412565b6040516100f59190611bf5565b6101e36101de366004611776565b6114eb565b6040516100f59190611c08565b6101316101fe366004611c1b565b611597565b6060806000805b6001548110156102ef5760006102c56001838154811061022c5761022c611c44565b90600052602060002001805461024190611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611c5a565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505087610e9e565b50905080156102dc57826102d881611caa565b9350505b50806102e781611caa565b91505061020a565b5060008167ffffffffffffffff81111561030b5761030b611b2a565b60405190808252806020026020018201604052801561033e57816020015b60608152602001906001900390816103295790505b50905060008267ffffffffffffffff81111561035c5761035c611b2a565b60405190808252806020026020018201604052801561038f57816020015b606081526020019060019003908161037a5790505b5090506000805b60015481101561056157600080610452600184815481106103b9576103b9611c44565b9060005260206000200180546103ce90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa90611c5a565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b50505050508b610e9e565b91509150811561054c576001838154811061046f5761046f611c44565b90600052602060002001805461048490611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611c5a565b80156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505086858151811061051457610514611c44565b60200260200101819052508085858151811061053257610532611c44565b6020026020010181905250838061054890611caa565b9450505b5050808061055990611caa565b915050610396565b5091969095509350505050565b606060028383604051610582929190611cc3565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610690576000848152602090819020604080516060810182526003860290920180548352600181015460ff16151593830193909352600283018054929392918401916105ff90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611c5a565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b505050505081525050815260200190600101906105b0565b5050505090505b92915050565b6106a5611610565b846106f75760405162461bcd60e51b815260206004820152601e60248201527f476f76506172616d3a206e616d652063616e6e6f7420626520656d707479000060448201526064015b60405180910390fd5b4381116107595760405162461bcd60e51b815260206004820152602a60248201527f476f76506172616d3a2061637469766174696f6e206d75737420626520696e206044820152697468652066757475726560b01b60648201526084016106ee565b83158061076557508115155b6107c85760405162461bcd60e51b815260206004820152602e60248201527f476f76506172616d3a2076616c206d757374206e6f7420626520656d7074792060448201526d6966206578697374733d7472756560901b60648201526084016106ee565b83806107d2575081155b6108325760405162461bcd60e51b815260206004820152602b60248201527f476f76506172616d3a2076616c206d75737420626520656d707479206966206560448201526a78697374733d66616c736560a81b60648201526084016106ee565b60006040518060600160405280838152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050604051929350916002915061089d908a908a90611cc3565b9081526040519081900360200190208054909150600003610962576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108f4888a83611d22565b5060408051606081018252600080825260208083018281528451808301865283815294840194855285546001808201885587855292909320845160039094020192835551908201805460ff19169115159190911790559151909190600282019061095e9082611de3565b5050505b805460009061097390600190611ea3565b90504382828154811061098857610988611c44565b906000526020600020906003020160000154116109f25781546001808201845560008481526020908190208651600390940201928355850151908201805460ff1916911515919091179055604084015184919060028201906109ea9082611de3565b505050610a4b565b82828281548110610a0557610a05611c44565b60009182526020918290208351600392909202019081559082015160018201805460ff191691151591909117905560408201516002820190610a479082611de3565b5050505b7f80044a87a0a45f6cc784a3f48077d58f4eb1e7d78243f85daa43ad7a88b6ba85898989898989604051610a8496959493929190611edf565b60405180910390a1505050505050505050565b606080600060018054905067ffffffffffffffff811115610aba57610aba611b2a565b604051908082528060200260200182016040528015610aed57816020015b6060815260200190600190039081610ad85790505b50905060005b600154811015610c6b57600260018281548110610b1257610b12611c44565b90600052602060002001604051610b299190611f22565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610c37576000848152602090819020604080516060810182526003860290920180548352600181015460ff1615159383019390935260028301805492939291840191610ba690611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd290611c5a565b8015610c1f5780601f10610bf457610100808354040283529160200191610c1f565b820191906000526020600020905b815481529060010190602001808311610c0257829003601f168201915b50505050508152505081526020019060010190610b57565b50505050828281518110610c4d57610c4d611c44565b60200260200101819052508080610c6390611caa565b915050610af3565b5060018181805480602002602001604051908101604052809291908181526020016000905b82821015610d3c578382906000526020600020018054610caf90611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb90611c5a565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505081526020019060010190610c90565b50505050915092509250509091565b6000606060028484604051610d61929190611cc3565b90815260405190819003602001902054600003610d905750506040805160208101909152600080825290610e97565b6000610dd185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166a92505050565b6040805160608101825282548152600183015460ff1615156020820152600283018054919392840191610e0390611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2f90611c5a565b8015610e7c5780601f10610e5157610100808354040283529160200191610e7c565b820191906000526020600020905b815481529060010190602001808311610e5f57829003601f168201915b50505050508152505090508060200151816040015192509250505b9250929050565b600060606000600285604051610eb49190611f98565b9081526040519081900360200190205490506000819003610ee8575050604080516020810190915260008082529150610e97565b6000808290506000600288604051610f009190611f98565b908152602001604051809103902090505b81831015610f6e576000610f258484611704565b905087828281548110610f3a57610f3a611c44565b9060005260206000209060030201600001541115610f5a57809250610f68565b610f65816001611fb4565b93505b50610f11565b80610f7a600184611ea3565b81548110610f8a57610f8a611c44565b60009182526020909120600160039092020181015460ff16908290610faf9085611ea3565b81548110610fbf57610fbf611c44565b9060005260206000209060030201600201808054610fdc90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461100890611c5a565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b5050505050905095509550505050509250929050565b611073611610565b61107d6000611726565b565b6060806000805b600154811015611171576000611140600183815481106110a8576110a8611c44565b9060005260206000200180546110bd90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546110e990611c5a565b80156111365780601f1061110b57610100808354040283529160200191611136565b820191906000526020600020905b81548152906001019060200180831161111957829003601f168201915b505050505061166a565b600181015490915060ff161561115e578261115a81611caa565b9350505b508061116981611caa565b915050611086565b5060008167ffffffffffffffff81111561118d5761118d611b2a565b6040519080825280602002602001820160405280156111c057816020015b60608152602001906001900390816111ab5790505b50905060008267ffffffffffffffff8111156111de576111de611b2a565b60405190808252806020026020018201604052801561121157816020015b60608152602001906001900390816111fc5790505b5090506000805b6001548110156113d957600061123a600183815481106110a8576110a8611c44565b600181015490915060ff16156113c6576001828154811061125d5761125d611c44565b90600052602060002001805461127290611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461129e90611c5a565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b505050505085848151811061130257611302611c44565b602002602001018190525080600201805461131c90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461134890611c5a565b80156113955780601f1061136a57610100808354040283529160200191611395565b820191906000526020600020905b81548152906001019060200180831161137857829003601f168201915b50505050508484815181106113ac576113ac611c44565b602002602001018190525082806113c290611caa565b9350505b50806113d181611caa565b915050611218565b50919590945092505050565b6113ed611610565b60006113f98243611fb4565b905061140987878787878661069d565b50505050505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156114e257838290600052602060002001805461145590611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461148190611c5a565b80156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b505050505081526020019060010190611436565b50505050905090565b600181815481106114fb57600080fd5b90600052602060002001600091509050805461151690611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461154290611c5a565b801561158f5780601f106115645761010080835404028352916020019161158f565b820191906000526020600020905b81548152906001019060200180831161157257829003601f168201915b505050505081565b61159f611610565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b61160d81611726565b50565b6000546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ee565b60008060028360405161167d9190611f98565b9081526040519081900360200190208054909150438261169e600184611ea3565b815481106116ae576116ae611c44565b906000526020600020906003020160000154116116f857816116d1600183611ea3565b815481106116e1576116e1611c44565b906000526020600020906003020192505050919050565b816116d1600283611ea3565b60006117136002848418611fc7565b61171f90848416611fb4565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561178857600080fd5b5035919050565b60005b838110156117aa578181015183820152602001611792565b50506000910152565b600081518084526117cb81602086016020860161178f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561182a57601f198684030189526118188383516117b3565b988401989250908301906001016117fc565b5090979650505050505050565b60408152600061184a60408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f198784030185526118888383516117b3565b9486019492509085019060010161186c565b50909998505050505050505050565b60008083601f8401126118bb57600080fd5b50813567ffffffffffffffff8111156118d357600080fd5b602083019150836020828501011115610e9757600080fd5b600080602083850312156118fe57600080fd5b823567ffffffffffffffff81111561191557600080fd5b611921858286016118a9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156119a057888303603f1901855281518051845287810151151588850152860151606087850181905261198c818601836117b3565b968901969450505090860190600101611954565b509098975050505050505050565b600080600080600080608087890312156119c757600080fd5b863567ffffffffffffffff808211156119df57600080fd5b6119eb8a838b016118a9565b9098509650602089013591508115158214611a0557600080fd5b90945060408801359080821115611a1b57600080fd5b50611a2889828a016118a9565b979a9699509497949695606090950135949350505050565b604081526000611a5360408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f1987840381018652825180518086529088019088860190600581901b87018a0160005b82811015611af0578589830301845284516060815184528d82015115158e85015260408201519150806040850152611adc818501836117b3565b968e0196958e019593505050600101611aa2565b50988a019896505050928701925050600101611a75565b8215158152604060208201526000611b2260408301846117b3565b949350505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b5357600080fd5b823567ffffffffffffffff80821115611b6b57600080fd5b818501915085601f830112611b7f57600080fd5b813581811115611b9157611b91611b2a565b604051601f8201601f19908116603f01168101908382118183101715611bb957611bb9611b2a565b81604052828152886020848701011115611bd257600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b60208152600061171f60208301846117df565b60208152600061171f60208301846117b3565b600060208284031215611c2d57600080fd5b81356001600160a01b038116811461171f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600181811c90821680611c6e57607f821691505b602082108103611c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611cbc57611cbc611c94565b5060010190565b8183823760009101908152919050565b601f821115611d1d57600081815260208120601f850160051c81016020861015611cfa5750805b601f850160051c820191505b81811015611d1957828155600101611d06565b5050505b505050565b67ffffffffffffffff831115611d3a57611d3a611b2a565b611d4e83611d488354611c5a565b83611cd3565b6000601f841160018114611d825760008515611d6a5750838201355b600019600387901b1c1916600186901b178355611ddc565b600083815260209020601f19861690835b82811015611db35786850135825560209485019460019092019101611d93565b5086821015611dd05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b815167ffffffffffffffff811115611dfd57611dfd611b2a565b611e1181611e0b8454611c5a565b84611cd3565b602080601f831160018114611e465760008415611e2e5750858301515b600019600386901b1c1916600185901b178555611d19565b600085815260208120601f198616915b82811015611e7557888601518255948401946001909101908401611e56565b5085821015611e935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561069757610697611c94565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611ef360808301888a611eb6565b86151560208401528281036040840152611f0e818688611eb6565b915050826060830152979650505050505050565b6000808354611f3081611c5a565b60018281168015611f485760018114611f5d57611f8c565b60ff1984168752821515830287019450611f8c565b8760005260208060002060005b85811015611f835781548a820152908401908201611f6a565b50505082870194505b50929695505050505050565b60008251611faa81846020870161178f565b9190910192915050565b8082018082111561069757610697611c94565b600082611fe457634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212208ce7a614d5313bc165018efaf504902c2e27920e8caedde8ddd010f73345637b64736f6c63430008130033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61201f8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063b93244a511610066578063b93244a5146101a8578063cc4783b6146101bb578063db758754146101d0578063f2fde38b146101f057600080fd5b8063715018a61461017d5780638da5cb5b14610185578063a170052e146101a057600080fd5b80631e31825a146100d4578063296451d9146100fe5780633f8aa6241461011e5780635516c21c146101335780635d4f71d4146101495780636a1ec27c1461016a575b600080fd5b6100e76100e2366004611776565b610203565b6040516100f5929190611837565b60405180910390f35b61011161010c3660046118eb565b61056e565b6040516100f5919061192d565b61013161012c3660046119ae565b61069d565b005b61013b610a97565b6040516100f5929190611a40565b61015c6101573660046118eb565b610d4b565b6040516100f5929190611b07565b61015c610178366004611b40565b610e9e565b61013161106b565b6000546040516001600160a01b0390911681526020016100f5565b6100e761107f565b6101316101b63660046119ae565b6113e5565b6101c3611412565b6040516100f59190611bf5565b6101e36101de366004611776565b6114eb565b6040516100f59190611c08565b6101316101fe366004611c1b565b611597565b6060806000805b6001548110156102ef5760006102c56001838154811061022c5761022c611c44565b90600052602060002001805461024190611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611c5a565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505087610e9e565b50905080156102dc57826102d881611caa565b9350505b50806102e781611caa565b91505061020a565b5060008167ffffffffffffffff81111561030b5761030b611b2a565b60405190808252806020026020018201604052801561033e57816020015b60608152602001906001900390816103295790505b50905060008267ffffffffffffffff81111561035c5761035c611b2a565b60405190808252806020026020018201604052801561038f57816020015b606081526020019060019003908161037a5790505b5090506000805b60015481101561056157600080610452600184815481106103b9576103b9611c44565b9060005260206000200180546103ce90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa90611c5a565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b50505050508b610e9e565b91509150811561054c576001838154811061046f5761046f611c44565b90600052602060002001805461048490611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611c5a565b80156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505086858151811061051457610514611c44565b60200260200101819052508085858151811061053257610532611c44565b6020026020010181905250838061054890611caa565b9450505b5050808061055990611caa565b915050610396565b5091969095509350505050565b606060028383604051610582929190611cc3565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610690576000848152602090819020604080516060810182526003860290920180548352600181015460ff16151593830193909352600283018054929392918401916105ff90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611c5a565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b505050505081525050815260200190600101906105b0565b5050505090505b92915050565b6106a5611610565b846106f75760405162461bcd60e51b815260206004820152601e60248201527f476f76506172616d3a206e616d652063616e6e6f7420626520656d707479000060448201526064015b60405180910390fd5b4381116107595760405162461bcd60e51b815260206004820152602a60248201527f476f76506172616d3a2061637469766174696f6e206d75737420626520696e206044820152697468652066757475726560b01b60648201526084016106ee565b83158061076557508115155b6107c85760405162461bcd60e51b815260206004820152602e60248201527f476f76506172616d3a2076616c206d757374206e6f7420626520656d7074792060448201526d6966206578697374733d7472756560901b60648201526084016106ee565b83806107d2575081155b6108325760405162461bcd60e51b815260206004820152602b60248201527f476f76506172616d3a2076616c206d75737420626520656d707479206966206560448201526a78697374733d66616c736560a81b60648201526084016106ee565b60006040518060600160405280838152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050604051929350916002915061089d908a908a90611cc3565b9081526040519081900360200190208054909150600003610962576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108f4888a83611d22565b5060408051606081018252600080825260208083018281528451808301865283815294840194855285546001808201885587855292909320845160039094020192835551908201805460ff19169115159190911790559151909190600282019061095e9082611de3565b5050505b805460009061097390600190611ea3565b90504382828154811061098857610988611c44565b906000526020600020906003020160000154116109f25781546001808201845560008481526020908190208651600390940201928355850151908201805460ff1916911515919091179055604084015184919060028201906109ea9082611de3565b505050610a4b565b82828281548110610a0557610a05611c44565b60009182526020918290208351600392909202019081559082015160018201805460ff191691151591909117905560408201516002820190610a479082611de3565b5050505b7f80044a87a0a45f6cc784a3f48077d58f4eb1e7d78243f85daa43ad7a88b6ba85898989898989604051610a8496959493929190611edf565b60405180910390a1505050505050505050565b606080600060018054905067ffffffffffffffff811115610aba57610aba611b2a565b604051908082528060200260200182016040528015610aed57816020015b6060815260200190600190039081610ad85790505b50905060005b600154811015610c6b57600260018281548110610b1257610b12611c44565b90600052602060002001604051610b299190611f22565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610c37576000848152602090819020604080516060810182526003860290920180548352600181015460ff1615159383019390935260028301805492939291840191610ba690611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd290611c5a565b8015610c1f5780601f10610bf457610100808354040283529160200191610c1f565b820191906000526020600020905b815481529060010190602001808311610c0257829003601f168201915b50505050508152505081526020019060010190610b57565b50505050828281518110610c4d57610c4d611c44565b60200260200101819052508080610c6390611caa565b915050610af3565b5060018181805480602002602001604051908101604052809291908181526020016000905b82821015610d3c578382906000526020600020018054610caf90611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb90611c5a565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505081526020019060010190610c90565b50505050915092509250509091565b6000606060028484604051610d61929190611cc3565b90815260405190819003602001902054600003610d905750506040805160208101909152600080825290610e97565b6000610dd185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166a92505050565b6040805160608101825282548152600183015460ff1615156020820152600283018054919392840191610e0390611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2f90611c5a565b8015610e7c5780601f10610e5157610100808354040283529160200191610e7c565b820191906000526020600020905b815481529060010190602001808311610e5f57829003601f168201915b50505050508152505090508060200151816040015192509250505b9250929050565b600060606000600285604051610eb49190611f98565b9081526040519081900360200190205490506000819003610ee8575050604080516020810190915260008082529150610e97565b6000808290506000600288604051610f009190611f98565b908152602001604051809103902090505b81831015610f6e576000610f258484611704565b905087828281548110610f3a57610f3a611c44565b9060005260206000209060030201600001541115610f5a57809250610f68565b610f65816001611fb4565b93505b50610f11565b80610f7a600184611ea3565b81548110610f8a57610f8a611c44565b60009182526020909120600160039092020181015460ff16908290610faf9085611ea3565b81548110610fbf57610fbf611c44565b9060005260206000209060030201600201808054610fdc90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461100890611c5a565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b5050505050905095509550505050509250929050565b611073611610565b61107d6000611726565b565b6060806000805b600154811015611171576000611140600183815481106110a8576110a8611c44565b9060005260206000200180546110bd90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546110e990611c5a565b80156111365780601f1061110b57610100808354040283529160200191611136565b820191906000526020600020905b81548152906001019060200180831161111957829003601f168201915b505050505061166a565b600181015490915060ff161561115e578261115a81611caa565b9350505b508061116981611caa565b915050611086565b5060008167ffffffffffffffff81111561118d5761118d611b2a565b6040519080825280602002602001820160405280156111c057816020015b60608152602001906001900390816111ab5790505b50905060008267ffffffffffffffff8111156111de576111de611b2a565b60405190808252806020026020018201604052801561121157816020015b60608152602001906001900390816111fc5790505b5090506000805b6001548110156113d957600061123a600183815481106110a8576110a8611c44565b600181015490915060ff16156113c6576001828154811061125d5761125d611c44565b90600052602060002001805461127290611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461129e90611c5a565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b505050505085848151811061130257611302611c44565b602002602001018190525080600201805461131c90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461134890611c5a565b80156113955780601f1061136a57610100808354040283529160200191611395565b820191906000526020600020905b81548152906001019060200180831161137857829003601f168201915b50505050508484815181106113ac576113ac611c44565b602002602001018190525082806113c290611caa565b9350505b50806113d181611caa565b915050611218565b50919590945092505050565b6113ed611610565b60006113f98243611fb4565b905061140987878787878661069d565b50505050505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156114e257838290600052602060002001805461145590611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461148190611c5a565b80156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b505050505081526020019060010190611436565b50505050905090565b600181815481106114fb57600080fd5b90600052602060002001600091509050805461151690611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461154290611c5a565b801561158f5780601f106115645761010080835404028352916020019161158f565b820191906000526020600020905b81548152906001019060200180831161157257829003601f168201915b505050505081565b61159f611610565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b61160d81611726565b50565b6000546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ee565b60008060028360405161167d9190611f98565b9081526040519081900360200190208054909150438261169e600184611ea3565b815481106116ae576116ae611c44565b906000526020600020906003020160000154116116f857816116d1600183611ea3565b815481106116e1576116e1611c44565b906000526020600020906003020192505050919050565b816116d1600283611ea3565b60006117136002848418611fc7565b61171f90848416611fb4565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561178857600080fd5b5035919050565b60005b838110156117aa578181015183820152602001611792565b50506000910152565b600081518084526117cb81602086016020860161178f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561182a57601f198684030189526118188383516117b3565b988401989250908301906001016117fc565b5090979650505050505050565b60408152600061184a60408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f198784030185526118888383516117b3565b9486019492509085019060010161186c565b50909998505050505050505050565b60008083601f8401126118bb57600080fd5b50813567ffffffffffffffff8111156118d357600080fd5b602083019150836020828501011115610e9757600080fd5b600080602083850312156118fe57600080fd5b823567ffffffffffffffff81111561191557600080fd5b611921858286016118a9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156119a057888303603f1901855281518051845287810151151588850152860151606087850181905261198c818601836117b3565b968901969450505090860190600101611954565b509098975050505050505050565b600080600080600080608087890312156119c757600080fd5b863567ffffffffffffffff808211156119df57600080fd5b6119eb8a838b016118a9565b9098509650602089013591508115158214611a0557600080fd5b90945060408801359080821115611a1b57600080fd5b50611a2889828a016118a9565b979a9699509497949695606090950135949350505050565b604081526000611a5360408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f1987840381018652825180518086529088019088860190600581901b87018a0160005b82811015611af0578589830301845284516060815184528d82015115158e85015260408201519150806040850152611adc818501836117b3565b968e0196958e019593505050600101611aa2565b50988a019896505050928701925050600101611a75565b8215158152604060208201526000611b2260408301846117b3565b949350505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b5357600080fd5b823567ffffffffffffffff80821115611b6b57600080fd5b818501915085601f830112611b7f57600080fd5b813581811115611b9157611b91611b2a565b604051601f8201601f19908116603f01168101908382118183101715611bb957611bb9611b2a565b81604052828152886020848701011115611bd257600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b60208152600061171f60208301846117df565b60208152600061171f60208301846117b3565b600060208284031215611c2d57600080fd5b81356001600160a01b038116811461171f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600181811c90821680611c6e57607f821691505b602082108103611c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611cbc57611cbc611c94565b5060010190565b8183823760009101908152919050565b601f821115611d1d57600081815260208120601f850160051c81016020861015611cfa5750805b601f850160051c820191505b81811015611d1957828155600101611d06565b5050505b505050565b67ffffffffffffffff831115611d3a57611d3a611b2a565b611d4e83611d488354611c5a565b83611cd3565b6000601f841160018114611d825760008515611d6a5750838201355b600019600387901b1c1916600186901b178355611ddc565b600083815260209020601f19861690835b82811015611db35786850135825560209485019460019092019101611d93565b5086821015611dd05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b815167ffffffffffffffff811115611dfd57611dfd611b2a565b611e1181611e0b8454611c5a565b84611cd3565b602080601f831160018114611e465760008415611e2e5750858301515b600019600386901b1c1916600185901b178555611d19565b600085815260208120601f198616915b82811015611e7557888601518255948401946001909101908401611e56565b5085821015611e935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561069757610697611c94565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611ef360808301888a611eb6565b86151560208401528281036040840152611f0e818688611eb6565b915050826060830152979650505050505050565b6000808354611f3081611c5a565b60018281168015611f485760018114611f5d57611f8c565b60ff1984168752821515830287019450611f8c565b8760005260208060002060005b85811015611f835781548a820152908401908201611f6a565b50505082870194505b50929695505050505050565b60008251611faa81846020870161178f565b9190910192915050565b8082018082111561069757610697611c94565b600082611fe457634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207b7aad2ae27734a1bf085f0c2083fd34ba8a93a693c61f87e700147be8890b3564736f6c63430008130033", } // GovParamABI is the input ABI used to generate the binding from. @@ -216,10 +216,10 @@ var GovParamMetaData = &bind.MetaData{ var GovParamABI = GovParamMetaData.ABI // GovParamBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const GovParamBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063b93244a511610066578063b93244a5146101a8578063cc4783b6146101bb578063db758754146101d0578063f2fde38b146101f057600080fd5b8063715018a61461017d5780638da5cb5b14610185578063a170052e146101a057600080fd5b80631e31825a146100d4578063296451d9146100fe5780633f8aa6241461011e5780635516c21c146101335780635d4f71d4146101495780636a1ec27c1461016a575b600080fd5b6100e76100e2366004611776565b610203565b6040516100f5929190611837565b60405180910390f35b61011161010c3660046118eb565b61056e565b6040516100f5919061192d565b61013161012c3660046119ae565b61069d565b005b61013b610a97565b6040516100f5929190611a40565b61015c6101573660046118eb565b610d4b565b6040516100f5929190611b07565b61015c610178366004611b40565b610e9e565b61013161106b565b6000546040516001600160a01b0390911681526020016100f5565b6100e761107f565b6101316101b63660046119ae565b6113e5565b6101c3611412565b6040516100f59190611bf5565b6101e36101de366004611776565b6114eb565b6040516100f59190611c08565b6101316101fe366004611c1b565b611597565b6060806000805b6001548110156102ef5760006102c56001838154811061022c5761022c611c44565b90600052602060002001805461024190611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611c5a565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505087610e9e565b50905080156102dc57826102d881611caa565b9350505b50806102e781611caa565b91505061020a565b5060008167ffffffffffffffff81111561030b5761030b611b2a565b60405190808252806020026020018201604052801561033e57816020015b60608152602001906001900390816103295790505b50905060008267ffffffffffffffff81111561035c5761035c611b2a565b60405190808252806020026020018201604052801561038f57816020015b606081526020019060019003908161037a5790505b5090506000805b60015481101561056157600080610452600184815481106103b9576103b9611c44565b9060005260206000200180546103ce90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa90611c5a565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b50505050508b610e9e565b91509150811561054c576001838154811061046f5761046f611c44565b90600052602060002001805461048490611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611c5a565b80156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505086858151811061051457610514611c44565b60200260200101819052508085858151811061053257610532611c44565b6020026020010181905250838061054890611caa565b9450505b5050808061055990611caa565b915050610396565b5091969095509350505050565b606060028383604051610582929190611cc3565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610690576000848152602090819020604080516060810182526003860290920180548352600181015460ff16151593830193909352600283018054929392918401916105ff90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611c5a565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b505050505081525050815260200190600101906105b0565b5050505090505b92915050565b6106a5611610565b846106f75760405162461bcd60e51b815260206004820152601e60248201527f476f76506172616d3a206e616d652063616e6e6f7420626520656d707479000060448201526064015b60405180910390fd5b4381116107595760405162461bcd60e51b815260206004820152602a60248201527f476f76506172616d3a2061637469766174696f6e206d75737420626520696e206044820152697468652066757475726560b01b60648201526084016106ee565b83158061076557508115155b6107c85760405162461bcd60e51b815260206004820152602e60248201527f476f76506172616d3a2076616c206d757374206e6f7420626520656d7074792060448201526d6966206578697374733d7472756560901b60648201526084016106ee565b83806107d2575081155b6108325760405162461bcd60e51b815260206004820152602b60248201527f476f76506172616d3a2076616c206d75737420626520656d707479206966206560448201526a78697374733d66616c736560a81b60648201526084016106ee565b60006040518060600160405280838152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050604051929350916002915061089d908a908a90611cc3565b9081526040519081900360200190208054909150600003610962576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108f4888a83611d22565b5060408051606081018252600080825260208083018281528451808301865283815294840194855285546001808201885587855292909320845160039094020192835551908201805460ff19169115159190911790559151909190600282019061095e9082611de3565b5050505b805460009061097390600190611ea3565b90504382828154811061098857610988611c44565b906000526020600020906003020160000154116109f25781546001808201845560008481526020908190208651600390940201928355850151908201805460ff1916911515919091179055604084015184919060028201906109ea9082611de3565b505050610a4b565b82828281548110610a0557610a05611c44565b60009182526020918290208351600392909202019081559082015160018201805460ff191691151591909117905560408201516002820190610a479082611de3565b5050505b7f80044a87a0a45f6cc784a3f48077d58f4eb1e7d78243f85daa43ad7a88b6ba85898989898989604051610a8496959493929190611edf565b60405180910390a1505050505050505050565b606080600060018054905067ffffffffffffffff811115610aba57610aba611b2a565b604051908082528060200260200182016040528015610aed57816020015b6060815260200190600190039081610ad85790505b50905060005b600154811015610c6b57600260018281548110610b1257610b12611c44565b90600052602060002001604051610b299190611f22565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610c37576000848152602090819020604080516060810182526003860290920180548352600181015460ff1615159383019390935260028301805492939291840191610ba690611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd290611c5a565b8015610c1f5780601f10610bf457610100808354040283529160200191610c1f565b820191906000526020600020905b815481529060010190602001808311610c0257829003601f168201915b50505050508152505081526020019060010190610b57565b50505050828281518110610c4d57610c4d611c44565b60200260200101819052508080610c6390611caa565b915050610af3565b5060018181805480602002602001604051908101604052809291908181526020016000905b82821015610d3c578382906000526020600020018054610caf90611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb90611c5a565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505081526020019060010190610c90565b50505050915092509250509091565b6000606060028484604051610d61929190611cc3565b90815260405190819003602001902054600003610d905750506040805160208101909152600080825290610e97565b6000610dd185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166a92505050565b6040805160608101825282548152600183015460ff1615156020820152600283018054919392840191610e0390611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2f90611c5a565b8015610e7c5780601f10610e5157610100808354040283529160200191610e7c565b820191906000526020600020905b815481529060010190602001808311610e5f57829003601f168201915b50505050508152505090508060200151816040015192509250505b9250929050565b600060606000600285604051610eb49190611f98565b9081526040519081900360200190205490506000819003610ee8575050604080516020810190915260008082529150610e97565b6000808290506000600288604051610f009190611f98565b908152602001604051809103902090505b81831015610f6e576000610f258484611704565b905087828281548110610f3a57610f3a611c44565b9060005260206000209060030201600001541115610f5a57809250610f68565b610f65816001611fb4565b93505b50610f11565b80610f7a600184611ea3565b81548110610f8a57610f8a611c44565b60009182526020909120600160039092020181015460ff16908290610faf9085611ea3565b81548110610fbf57610fbf611c44565b9060005260206000209060030201600201808054610fdc90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461100890611c5a565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b5050505050905095509550505050509250929050565b611073611610565b61107d6000611726565b565b6060806000805b600154811015611171576000611140600183815481106110a8576110a8611c44565b9060005260206000200180546110bd90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546110e990611c5a565b80156111365780601f1061110b57610100808354040283529160200191611136565b820191906000526020600020905b81548152906001019060200180831161111957829003601f168201915b505050505061166a565b600181015490915060ff161561115e578261115a81611caa565b9350505b508061116981611caa565b915050611086565b5060008167ffffffffffffffff81111561118d5761118d611b2a565b6040519080825280602002602001820160405280156111c057816020015b60608152602001906001900390816111ab5790505b50905060008267ffffffffffffffff8111156111de576111de611b2a565b60405190808252806020026020018201604052801561121157816020015b60608152602001906001900390816111fc5790505b5090506000805b6001548110156113d957600061123a600183815481106110a8576110a8611c44565b600181015490915060ff16156113c6576001828154811061125d5761125d611c44565b90600052602060002001805461127290611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461129e90611c5a565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b505050505085848151811061130257611302611c44565b602002602001018190525080600201805461131c90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461134890611c5a565b80156113955780601f1061136a57610100808354040283529160200191611395565b820191906000526020600020905b81548152906001019060200180831161137857829003601f168201915b50505050508484815181106113ac576113ac611c44565b602002602001018190525082806113c290611caa565b9350505b50806113d181611caa565b915050611218565b50919590945092505050565b6113ed611610565b60006113f98243611fb4565b905061140987878787878661069d565b50505050505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156114e257838290600052602060002001805461145590611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461148190611c5a565b80156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b505050505081526020019060010190611436565b50505050905090565b600181815481106114fb57600080fd5b90600052602060002001600091509050805461151690611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461154290611c5a565b801561158f5780601f106115645761010080835404028352916020019161158f565b820191906000526020600020905b81548152906001019060200180831161157257829003601f168201915b505050505081565b61159f611610565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b61160d81611726565b50565b6000546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ee565b60008060028360405161167d9190611f98565b9081526040519081900360200190208054909150438261169e600184611ea3565b815481106116ae576116ae611c44565b906000526020600020906003020160000154116116f857816116d1600183611ea3565b815481106116e1576116e1611c44565b906000526020600020906003020192505050919050565b816116d1600283611ea3565b60006117136002848418611fc7565b61171f90848416611fb4565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561178857600080fd5b5035919050565b60005b838110156117aa578181015183820152602001611792565b50506000910152565b600081518084526117cb81602086016020860161178f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561182a57601f198684030189526118188383516117b3565b988401989250908301906001016117fc565b5090979650505050505050565b60408152600061184a60408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f198784030185526118888383516117b3565b9486019492509085019060010161186c565b50909998505050505050505050565b60008083601f8401126118bb57600080fd5b50813567ffffffffffffffff8111156118d357600080fd5b602083019150836020828501011115610e9757600080fd5b600080602083850312156118fe57600080fd5b823567ffffffffffffffff81111561191557600080fd5b611921858286016118a9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156119a057888303603f1901855281518051845287810151151588850152860151606087850181905261198c818601836117b3565b968901969450505090860190600101611954565b509098975050505050505050565b600080600080600080608087890312156119c757600080fd5b863567ffffffffffffffff808211156119df57600080fd5b6119eb8a838b016118a9565b9098509650602089013591508115158214611a0557600080fd5b90945060408801359080821115611a1b57600080fd5b50611a2889828a016118a9565b979a9699509497949695606090950135949350505050565b604081526000611a5360408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f1987840381018652825180518086529088019088860190600581901b87018a0160005b82811015611af0578589830301845284516060815184528d82015115158e85015260408201519150806040850152611adc818501836117b3565b968e0196958e019593505050600101611aa2565b50988a019896505050928701925050600101611a75565b8215158152604060208201526000611b2260408301846117b3565b949350505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b5357600080fd5b823567ffffffffffffffff80821115611b6b57600080fd5b818501915085601f830112611b7f57600080fd5b813581811115611b9157611b91611b2a565b604051601f8201601f19908116603f01168101908382118183101715611bb957611bb9611b2a565b81604052828152886020848701011115611bd257600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b60208152600061171f60208301846117df565b60208152600061171f60208301846117b3565b600060208284031215611c2d57600080fd5b81356001600160a01b038116811461171f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600181811c90821680611c6e57607f821691505b602082108103611c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611cbc57611cbc611c94565b5060010190565b8183823760009101908152919050565b601f821115611d1d57600081815260208120601f850160051c81016020861015611cfa5750805b601f850160051c820191505b81811015611d1957828155600101611d06565b5050505b505050565b67ffffffffffffffff831115611d3a57611d3a611b2a565b611d4e83611d488354611c5a565b83611cd3565b6000601f841160018114611d825760008515611d6a5750838201355b600019600387901b1c1916600186901b178355611ddc565b600083815260209020601f19861690835b82811015611db35786850135825560209485019460019092019101611d93565b5086821015611dd05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b815167ffffffffffffffff811115611dfd57611dfd611b2a565b611e1181611e0b8454611c5a565b84611cd3565b602080601f831160018114611e465760008415611e2e5750858301515b600019600386901b1c1916600185901b178555611d19565b600085815260208120601f198616915b82811015611e7557888601518255948401946001909101908401611e56565b5085821015611e935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561069757610697611c94565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611ef360808301888a611eb6565b86151560208401528281036040840152611f0e818688611eb6565b915050826060830152979650505050505050565b6000808354611f3081611c5a565b60018281168015611f485760018114611f5d57611f8c565b60ff1984168752821515830287019450611f8c565b8760005260208060002060005b85811015611f835781548a820152908401908201611f6a565b50505082870194505b50929695505050505050565b60008251611faa81846020870161178f565b9190910192915050565b8082018082111561069757610697611c94565b600082611fe457634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212208ce7a614d5313bc165018efaf504902c2e27920e8caedde8ddd010f73345637b64736f6c63430008130033` +const GovParamBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063b93244a511610066578063b93244a5146101a8578063cc4783b6146101bb578063db758754146101d0578063f2fde38b146101f057600080fd5b8063715018a61461017d5780638da5cb5b14610185578063a170052e146101a057600080fd5b80631e31825a146100d4578063296451d9146100fe5780633f8aa6241461011e5780635516c21c146101335780635d4f71d4146101495780636a1ec27c1461016a575b600080fd5b6100e76100e2366004611776565b610203565b6040516100f5929190611837565b60405180910390f35b61011161010c3660046118eb565b61056e565b6040516100f5919061192d565b61013161012c3660046119ae565b61069d565b005b61013b610a97565b6040516100f5929190611a40565b61015c6101573660046118eb565b610d4b565b6040516100f5929190611b07565b61015c610178366004611b40565b610e9e565b61013161106b565b6000546040516001600160a01b0390911681526020016100f5565b6100e761107f565b6101316101b63660046119ae565b6113e5565b6101c3611412565b6040516100f59190611bf5565b6101e36101de366004611776565b6114eb565b6040516100f59190611c08565b6101316101fe366004611c1b565b611597565b6060806000805b6001548110156102ef5760006102c56001838154811061022c5761022c611c44565b90600052602060002001805461024190611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611c5a565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505087610e9e565b50905080156102dc57826102d881611caa565b9350505b50806102e781611caa565b91505061020a565b5060008167ffffffffffffffff81111561030b5761030b611b2a565b60405190808252806020026020018201604052801561033e57816020015b60608152602001906001900390816103295790505b50905060008267ffffffffffffffff81111561035c5761035c611b2a565b60405190808252806020026020018201604052801561038f57816020015b606081526020019060019003908161037a5790505b5090506000805b60015481101561056157600080610452600184815481106103b9576103b9611c44565b9060005260206000200180546103ce90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fa90611c5a565b80156104475780601f1061041c57610100808354040283529160200191610447565b820191906000526020600020905b81548152906001019060200180831161042a57829003601f168201915b50505050508b610e9e565b91509150811561054c576001838154811061046f5761046f611c44565b90600052602060002001805461048490611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611c5a565b80156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505086858151811061051457610514611c44565b60200260200101819052508085858151811061053257610532611c44565b6020026020010181905250838061054890611caa565b9450505b5050808061055990611caa565b915050610396565b5091969095509350505050565b606060028383604051610582929190611cc3565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610690576000848152602090819020604080516060810182526003860290920180548352600181015460ff16151593830193909352600283018054929392918401916105ff90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611c5a565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b505050505081525050815260200190600101906105b0565b5050505090505b92915050565b6106a5611610565b846106f75760405162461bcd60e51b815260206004820152601e60248201527f476f76506172616d3a206e616d652063616e6e6f7420626520656d707479000060448201526064015b60405180910390fd5b4381116107595760405162461bcd60e51b815260206004820152602a60248201527f476f76506172616d3a2061637469766174696f6e206d75737420626520696e206044820152697468652066757475726560b01b60648201526084016106ee565b83158061076557508115155b6107c85760405162461bcd60e51b815260206004820152602e60248201527f476f76506172616d3a2076616c206d757374206e6f7420626520656d7074792060448201526d6966206578697374733d7472756560901b60648201526084016106ee565b83806107d2575081155b6108325760405162461bcd60e51b815260206004820152602b60248201527f476f76506172616d3a2076616c206d75737420626520656d707479206966206560448201526a78697374733d66616c736560a81b60648201526084016106ee565b60006040518060600160405280838152602001861515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050604051929350916002915061089d908a908a90611cc3565b9081526040519081900360200190208054909150600003610962576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108f4888a83611d22565b5060408051606081018252600080825260208083018281528451808301865283815294840194855285546001808201885587855292909320845160039094020192835551908201805460ff19169115159190911790559151909190600282019061095e9082611de3565b5050505b805460009061097390600190611ea3565b90504382828154811061098857610988611c44565b906000526020600020906003020160000154116109f25781546001808201845560008481526020908190208651600390940201928355850151908201805460ff1916911515919091179055604084015184919060028201906109ea9082611de3565b505050610a4b565b82828281548110610a0557610a05611c44565b60009182526020918290208351600392909202019081559082015160018201805460ff191691151591909117905560408201516002820190610a479082611de3565b5050505b7f80044a87a0a45f6cc784a3f48077d58f4eb1e7d78243f85daa43ad7a88b6ba85898989898989604051610a8496959493929190611edf565b60405180910390a1505050505050505050565b606080600060018054905067ffffffffffffffff811115610aba57610aba611b2a565b604051908082528060200260200182016040528015610aed57816020015b6060815260200190600190039081610ad85790505b50905060005b600154811015610c6b57600260018281548110610b1257610b12611c44565b90600052602060002001604051610b299190611f22565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610c37576000848152602090819020604080516060810182526003860290920180548352600181015460ff1615159383019390935260028301805492939291840191610ba690611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd290611c5a565b8015610c1f5780601f10610bf457610100808354040283529160200191610c1f565b820191906000526020600020905b815481529060010190602001808311610c0257829003601f168201915b50505050508152505081526020019060010190610b57565b50505050828281518110610c4d57610c4d611c44565b60200260200101819052508080610c6390611caa565b915050610af3565b5060018181805480602002602001604051908101604052809291908181526020016000905b82821015610d3c578382906000526020600020018054610caf90611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdb90611c5a565b8015610d285780601f10610cfd57610100808354040283529160200191610d28565b820191906000526020600020905b815481529060010190602001808311610d0b57829003601f168201915b505050505081526020019060010190610c90565b50505050915092509250509091565b6000606060028484604051610d61929190611cc3565b90815260405190819003602001902054600003610d905750506040805160208101909152600080825290610e97565b6000610dd185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166a92505050565b6040805160608101825282548152600183015460ff1615156020820152600283018054919392840191610e0390611c5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2f90611c5a565b8015610e7c5780601f10610e5157610100808354040283529160200191610e7c565b820191906000526020600020905b815481529060010190602001808311610e5f57829003601f168201915b50505050508152505090508060200151816040015192509250505b9250929050565b600060606000600285604051610eb49190611f98565b9081526040519081900360200190205490506000819003610ee8575050604080516020810190915260008082529150610e97565b6000808290506000600288604051610f009190611f98565b908152602001604051809103902090505b81831015610f6e576000610f258484611704565b905087828281548110610f3a57610f3a611c44565b9060005260206000209060030201600001541115610f5a57809250610f68565b610f65816001611fb4565b93505b50610f11565b80610f7a600184611ea3565b81548110610f8a57610f8a611c44565b60009182526020909120600160039092020181015460ff16908290610faf9085611ea3565b81548110610fbf57610fbf611c44565b9060005260206000209060030201600201808054610fdc90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461100890611c5a565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b5050505050905095509550505050509250929050565b611073611610565b61107d6000611726565b565b6060806000805b600154811015611171576000611140600183815481106110a8576110a8611c44565b9060005260206000200180546110bd90611c5a565b80601f01602080910402602001604051908101604052809291908181526020018280546110e990611c5a565b80156111365780601f1061110b57610100808354040283529160200191611136565b820191906000526020600020905b81548152906001019060200180831161111957829003601f168201915b505050505061166a565b600181015490915060ff161561115e578261115a81611caa565b9350505b508061116981611caa565b915050611086565b5060008167ffffffffffffffff81111561118d5761118d611b2a565b6040519080825280602002602001820160405280156111c057816020015b60608152602001906001900390816111ab5790505b50905060008267ffffffffffffffff8111156111de576111de611b2a565b60405190808252806020026020018201604052801561121157816020015b60608152602001906001900390816111fc5790505b5090506000805b6001548110156113d957600061123a600183815481106110a8576110a8611c44565b600181015490915060ff16156113c6576001828154811061125d5761125d611c44565b90600052602060002001805461127290611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461129e90611c5a565b80156112eb5780601f106112c0576101008083540402835291602001916112eb565b820191906000526020600020905b8154815290600101906020018083116112ce57829003601f168201915b505050505085848151811061130257611302611c44565b602002602001018190525080600201805461131c90611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461134890611c5a565b80156113955780601f1061136a57610100808354040283529160200191611395565b820191906000526020600020905b81548152906001019060200180831161137857829003601f168201915b50505050508484815181106113ac576113ac611c44565b602002602001018190525082806113c290611caa565b9350505b50806113d181611caa565b915050611218565b50919590945092505050565b6113ed611610565b60006113f98243611fb4565b905061140987878787878661069d565b50505050505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156114e257838290600052602060002001805461145590611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461148190611c5a565b80156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b505050505081526020019060010190611436565b50505050905090565b600181815481106114fb57600080fd5b90600052602060002001600091509050805461151690611c5a565b80601f016020809104026020016040519081016040528092919081815260200182805461154290611c5a565b801561158f5780601f106115645761010080835404028352916020019161158f565b820191906000526020600020905b81548152906001019060200180831161157257829003601f168201915b505050505081565b61159f611610565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b61160d81611726565b50565b6000546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ee565b60008060028360405161167d9190611f98565b9081526040519081900360200190208054909150438261169e600184611ea3565b815481106116ae576116ae611c44565b906000526020600020906003020160000154116116f857816116d1600183611ea3565b815481106116e1576116e1611c44565b906000526020600020906003020192505050919050565b816116d1600283611ea3565b60006117136002848418611fc7565b61171f90848416611fb4565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561178857600080fd5b5035919050565b60005b838110156117aa578181015183820152602001611792565b50506000910152565b600081518084526117cb81602086016020860161178f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561182a57601f198684030189526118188383516117b3565b988401989250908301906001016117fc565b5090979650505050505050565b60408152600061184a60408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f198784030185526118888383516117b3565b9486019492509085019060010161186c565b50909998505050505050505050565b60008083601f8401126118bb57600080fd5b50813567ffffffffffffffff8111156118d357600080fd5b602083019150836020828501011115610e9757600080fd5b600080602083850312156118fe57600080fd5b823567ffffffffffffffff81111561191557600080fd5b611921858286016118a9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156119a057888303603f1901855281518051845287810151151588850152860151606087850181905261198c818601836117b3565b968901969450505090860190600101611954565b509098975050505050505050565b600080600080600080608087890312156119c757600080fd5b863567ffffffffffffffff808211156119df57600080fd5b6119eb8a838b016118a9565b9098509650602089013591508115158214611a0557600080fd5b90945060408801359080821115611a1b57600080fd5b50611a2889828a016118a9565b979a9699509497949695606090950135949350505050565b604081526000611a5360408301856117df565b6020838203818501528185518084528284019150828160051b85010183880160005b8381101561189a57601f1987840381018652825180518086529088019088860190600581901b87018a0160005b82811015611af0578589830301845284516060815184528d82015115158e85015260408201519150806040850152611adc818501836117b3565b968e0196958e019593505050600101611aa2565b50988a019896505050928701925050600101611a75565b8215158152604060208201526000611b2260408301846117b3565b949350505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b5357600080fd5b823567ffffffffffffffff80821115611b6b57600080fd5b818501915085601f830112611b7f57600080fd5b813581811115611b9157611b91611b2a565b604051601f8201601f19908116603f01168101908382118183101715611bb957611bb9611b2a565b81604052828152886020848701011115611bd257600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b60208152600061171f60208301846117df565b60208152600061171f60208301846117b3565b600060208284031215611c2d57600080fd5b81356001600160a01b038116811461171f57600080fd5b634e487b7160e01b600052603260045260246000fd5b600181811c90821680611c6e57607f821691505b602082108103611c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611cbc57611cbc611c94565b5060010190565b8183823760009101908152919050565b601f821115611d1d57600081815260208120601f850160051c81016020861015611cfa5750805b601f850160051c820191505b81811015611d1957828155600101611d06565b5050505b505050565b67ffffffffffffffff831115611d3a57611d3a611b2a565b611d4e83611d488354611c5a565b83611cd3565b6000601f841160018114611d825760008515611d6a5750838201355b600019600387901b1c1916600186901b178355611ddc565b600083815260209020601f19861690835b82811015611db35786850135825560209485019460019092019101611d93565b5086821015611dd05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b815167ffffffffffffffff811115611dfd57611dfd611b2a565b611e1181611e0b8454611c5a565b84611cd3565b602080601f831160018114611e465760008415611e2e5750858301515b600019600386901b1c1916600185901b178555611d19565b600085815260208120601f198616915b82811015611e7557888601518255948401946001909101908401611e56565b5085821015611e935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561069757610697611c94565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611ef360808301888a611eb6565b86151560208401528281036040840152611f0e818688611eb6565b915050826060830152979650505050505050565b6000808354611f3081611c5a565b60018281168015611f485760018114611f5d57611f8c565b60ff1984168752821515830287019450611f8c565b8760005260208060002060005b85811015611f835781548a820152908401908201611f6a565b50505082870194505b50929695505050505050565b60008251611faa81846020870161178f565b9190910192915050565b8082018082111561069757610697611c94565b600082611fe457634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207b7aad2ae27734a1bf085f0c2083fd34ba8a93a693c61f87e700147be8890b3564736f6c63430008130033` -// GovParamFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use GovParamMetaData.Sigs instead. +// GovParamFuncSigs maps the 4-byte function signature to its string representation. var GovParamFuncSigs = GovParamMetaData.Sigs // GovParamBin is the compiled bytecode used for deploying new contracts. @@ -391,6 +391,7 @@ func (_GovParam *GovParamTransactorRaw) Transact(opts *bind.TransactOpts, method func (_GovParam *GovParamCaller) Checkpoints(opts *bind.CallOpts, name string) ([]IGovParamParam, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "checkpoints", name) + if err != nil { return *new([]IGovParamParam), err } @@ -398,6 +399,7 @@ func (_GovParam *GovParamCaller) Checkpoints(opts *bind.CallOpts, name string) ( out0 := *abi.ConvertType(out[0], new([]IGovParamParam)).(*[]IGovParamParam) return out0, err + } // Checkpoints is a free data retrieval call binding the contract method 0x296451d9. @@ -420,6 +422,7 @@ func (_GovParam *GovParamCallerSession) Checkpoints(name string) ([]IGovParamPar func (_GovParam *GovParamCaller) GetAllCheckpoints(opts *bind.CallOpts) ([]string, [][]IGovParamParam, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getAllCheckpoints") + if err != nil { return *new([]string), *new([][]IGovParamParam), err } @@ -428,6 +431,7 @@ func (_GovParam *GovParamCaller) GetAllCheckpoints(opts *bind.CallOpts) ([]strin out1 := *abi.ConvertType(out[1], new([][]IGovParamParam)).(*[][]IGovParamParam) return out0, out1, err + } // GetAllCheckpoints is a free data retrieval call binding the contract method 0x5516c21c. @@ -450,6 +454,7 @@ func (_GovParam *GovParamCallerSession) GetAllCheckpoints() ([]string, [][]IGovP func (_GovParam *GovParamCaller) GetAllParamNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getAllParamNames") + if err != nil { return *new([]string), err } @@ -457,6 +462,7 @@ func (_GovParam *GovParamCaller) GetAllParamNames(opts *bind.CallOpts) ([]string out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllParamNames is a free data retrieval call binding the contract method 0xcc4783b6. @@ -479,6 +485,7 @@ func (_GovParam *GovParamCallerSession) GetAllParamNames() ([]string, error) { func (_GovParam *GovParamCaller) GetAllParams(opts *bind.CallOpts) ([]string, [][]byte, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getAllParams") + if err != nil { return *new([]string), *new([][]byte), err } @@ -487,6 +494,7 @@ func (_GovParam *GovParamCaller) GetAllParams(opts *bind.CallOpts) ([]string, [] out1 := *abi.ConvertType(out[1], new([][]byte)).(*[][]byte) return out0, out1, err + } // GetAllParams is a free data retrieval call binding the contract method 0xa170052e. @@ -509,6 +517,7 @@ func (_GovParam *GovParamCallerSession) GetAllParams() ([]string, [][]byte, erro func (_GovParam *GovParamCaller) GetAllParamsAt(opts *bind.CallOpts, blockNumber *big.Int) ([]string, [][]byte, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getAllParamsAt", blockNumber) + if err != nil { return *new([]string), *new([][]byte), err } @@ -517,6 +526,7 @@ func (_GovParam *GovParamCaller) GetAllParamsAt(opts *bind.CallOpts, blockNumber out1 := *abi.ConvertType(out[1], new([][]byte)).(*[][]byte) return out0, out1, err + } // GetAllParamsAt is a free data retrieval call binding the contract method 0x1e31825a. @@ -539,6 +549,7 @@ func (_GovParam *GovParamCallerSession) GetAllParamsAt(blockNumber *big.Int) ([] func (_GovParam *GovParamCaller) GetParam(opts *bind.CallOpts, name string) (bool, []byte, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getParam", name) + if err != nil { return *new(bool), *new([]byte), err } @@ -547,6 +558,7 @@ func (_GovParam *GovParamCaller) GetParam(opts *bind.CallOpts, name string) (boo out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) return out0, out1, err + } // GetParam is a free data retrieval call binding the contract method 0x5d4f71d4. @@ -569,6 +581,7 @@ func (_GovParam *GovParamCallerSession) GetParam(name string) (bool, []byte, err func (_GovParam *GovParamCaller) GetParamAt(opts *bind.CallOpts, name string, blockNumber *big.Int) (bool, []byte, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "getParamAt", name, blockNumber) + if err != nil { return *new(bool), *new([]byte), err } @@ -577,6 +590,7 @@ func (_GovParam *GovParamCaller) GetParamAt(opts *bind.CallOpts, name string, bl out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) return out0, out1, err + } // GetParamAt is a free data retrieval call binding the contract method 0x6a1ec27c. @@ -599,6 +613,7 @@ func (_GovParam *GovParamCallerSession) GetParamAt(name string, blockNumber *big func (_GovParam *GovParamCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -606,6 +621,7 @@ func (_GovParam *GovParamCaller) Owner(opts *bind.CallOpts) (common.Address, err out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -628,6 +644,7 @@ func (_GovParam *GovParamCallerSession) Owner() (common.Address, error) { func (_GovParam *GovParamCaller) ParamNames(opts *bind.CallOpts, arg0 *big.Int) (string, error) { var out []interface{} err := _GovParam.contract.Call(opts, &out, "paramNames", arg0) + if err != nil { return *new(string), err } @@ -635,6 +652,7 @@ func (_GovParam *GovParamCaller) ParamNames(opts *bind.CallOpts, arg0 *big.Int) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // ParamNames is a free data retrieval call binding the contract method 0xdb758754. @@ -813,6 +831,7 @@ type GovParamOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_GovParam *GovParamFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GovParamOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -833,6 +852,7 @@ func (_GovParam *GovParamFilterer) FilterOwnershipTransferred(opts *bind.FilterO // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_GovParam *GovParamFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GovParamOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -882,6 +902,7 @@ func (_GovParam *GovParamFilterer) ParseOwnershipTransferred(log types.Log) (*Go if err := _GovParam.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -965,6 +986,7 @@ type GovParamSetParam struct { // // Solidity: event SetParam(string name, bool exists, bytes value, uint256 activation) func (_GovParam *GovParamFilterer) FilterSetParam(opts *bind.FilterOpts) (*GovParamSetParamIterator, error) { + logs, sub, err := _GovParam.contract.FilterLogs(opts, "SetParam") if err != nil { return nil, err @@ -976,6 +998,7 @@ func (_GovParam *GovParamFilterer) FilterSetParam(opts *bind.FilterOpts) (*GovPa // // Solidity: event SetParam(string name, bool exists, bytes value, uint256 activation) func (_GovParam *GovParamFilterer) WatchSetParam(opts *bind.WatchOpts, sink chan<- *GovParamSetParam) (event.Subscription, error) { + logs, sub, err := _GovParam.contract.WatchLogs(opts, "SetParam") if err != nil { return nil, err @@ -1016,6 +1039,7 @@ func (_GovParam *GovParamFilterer) ParseSetParam(log types.Log) (*GovParamSetPar if err := _GovParam.contract.UnpackLog(event, "SetParam", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1043,8 +1067,8 @@ var IGovParamABI = IGovParamMetaData.ABI // IGovParamBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IGovParamBinRuntime = `` -// IGovParamFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IGovParamMetaData.Sigs instead. +// IGovParamFuncSigs maps the 4-byte function signature to its string representation. var IGovParamFuncSigs = IGovParamMetaData.Sigs // IGovParam is an auto generated Go binding around a Kaia contract. @@ -1195,6 +1219,7 @@ func (_IGovParam *IGovParamTransactorRaw) Transact(opts *bind.TransactOpts, meth func (_IGovParam *IGovParamCaller) Checkpoints(opts *bind.CallOpts, name string) ([]IGovParamParam, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "checkpoints", name) + if err != nil { return *new([]IGovParamParam), err } @@ -1202,6 +1227,7 @@ func (_IGovParam *IGovParamCaller) Checkpoints(opts *bind.CallOpts, name string) out0 := *abi.ConvertType(out[0], new([]IGovParamParam)).(*[]IGovParamParam) return out0, err + } // Checkpoints is a free data retrieval call binding the contract method 0x296451d9. @@ -1224,6 +1250,7 @@ func (_IGovParam *IGovParamCallerSession) Checkpoints(name string) ([]IGovParamP func (_IGovParam *IGovParamCaller) GetAllCheckpoints(opts *bind.CallOpts) ([]string, [][]IGovParamParam, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getAllCheckpoints") + if err != nil { return *new([]string), *new([][]IGovParamParam), err } @@ -1232,6 +1259,7 @@ func (_IGovParam *IGovParamCaller) GetAllCheckpoints(opts *bind.CallOpts) ([]str out1 := *abi.ConvertType(out[1], new([][]IGovParamParam)).(*[][]IGovParamParam) return out0, out1, err + } // GetAllCheckpoints is a free data retrieval call binding the contract method 0x5516c21c. @@ -1254,6 +1282,7 @@ func (_IGovParam *IGovParamCallerSession) GetAllCheckpoints() ([]string, [][]IGo func (_IGovParam *IGovParamCaller) GetAllParamNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getAllParamNames") + if err != nil { return *new([]string), err } @@ -1261,6 +1290,7 @@ func (_IGovParam *IGovParamCaller) GetAllParamNames(opts *bind.CallOpts) ([]stri out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllParamNames is a free data retrieval call binding the contract method 0xcc4783b6. @@ -1283,6 +1313,7 @@ func (_IGovParam *IGovParamCallerSession) GetAllParamNames() ([]string, error) { func (_IGovParam *IGovParamCaller) GetAllParams(opts *bind.CallOpts) ([]string, [][]byte, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getAllParams") + if err != nil { return *new([]string), *new([][]byte), err } @@ -1291,6 +1322,7 @@ func (_IGovParam *IGovParamCaller) GetAllParams(opts *bind.CallOpts) ([]string, out1 := *abi.ConvertType(out[1], new([][]byte)).(*[][]byte) return out0, out1, err + } // GetAllParams is a free data retrieval call binding the contract method 0xa170052e. @@ -1313,6 +1345,7 @@ func (_IGovParam *IGovParamCallerSession) GetAllParams() ([]string, [][]byte, er func (_IGovParam *IGovParamCaller) GetAllParamsAt(opts *bind.CallOpts, blockNumber *big.Int) ([]string, [][]byte, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getAllParamsAt", blockNumber) + if err != nil { return *new([]string), *new([][]byte), err } @@ -1321,6 +1354,7 @@ func (_IGovParam *IGovParamCaller) GetAllParamsAt(opts *bind.CallOpts, blockNumb out1 := *abi.ConvertType(out[1], new([][]byte)).(*[][]byte) return out0, out1, err + } // GetAllParamsAt is a free data retrieval call binding the contract method 0x1e31825a. @@ -1343,6 +1377,7 @@ func (_IGovParam *IGovParamCallerSession) GetAllParamsAt(blockNumber *big.Int) ( func (_IGovParam *IGovParamCaller) GetParam(opts *bind.CallOpts, name string) (bool, []byte, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getParam", name) + if err != nil { return *new(bool), *new([]byte), err } @@ -1351,6 +1386,7 @@ func (_IGovParam *IGovParamCaller) GetParam(opts *bind.CallOpts, name string) (b out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) return out0, out1, err + } // GetParam is a free data retrieval call binding the contract method 0x5d4f71d4. @@ -1373,6 +1409,7 @@ func (_IGovParam *IGovParamCallerSession) GetParam(name string) (bool, []byte, e func (_IGovParam *IGovParamCaller) GetParamAt(opts *bind.CallOpts, name string, blockNumber *big.Int) (bool, []byte, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "getParamAt", name, blockNumber) + if err != nil { return *new(bool), *new([]byte), err } @@ -1381,6 +1418,7 @@ func (_IGovParam *IGovParamCaller) GetParamAt(opts *bind.CallOpts, name string, out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) return out0, out1, err + } // GetParamAt is a free data retrieval call binding the contract method 0x6a1ec27c. @@ -1403,6 +1441,7 @@ func (_IGovParam *IGovParamCallerSession) GetParamAt(name string, blockNumber *b func (_IGovParam *IGovParamCaller) ParamNames(opts *bind.CallOpts, idx *big.Int) (string, error) { var out []interface{} err := _IGovParam.contract.Call(opts, &out, "paramNames", idx) + if err != nil { return *new(string), err } @@ -1410,6 +1449,7 @@ func (_IGovParam *IGovParamCaller) ParamNames(opts *bind.CallOpts, idx *big.Int) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // ParamNames is a free data retrieval call binding the contract method 0xdb758754. @@ -1548,6 +1588,7 @@ type IGovParamSetParam struct { // // Solidity: event SetParam(string name, bool exists, bytes value, uint256 activation) func (_IGovParam *IGovParamFilterer) FilterSetParam(opts *bind.FilterOpts) (*IGovParamSetParamIterator, error) { + logs, sub, err := _IGovParam.contract.FilterLogs(opts, "SetParam") if err != nil { return nil, err @@ -1559,6 +1600,7 @@ func (_IGovParam *IGovParamFilterer) FilterSetParam(opts *bind.FilterOpts) (*IGo // // Solidity: event SetParam(string name, bool exists, bytes value, uint256 activation) func (_IGovParam *IGovParamFilterer) WatchSetParam(opts *bind.WatchOpts, sink chan<- *IGovParamSetParam) (event.Subscription, error) { + logs, sub, err := _IGovParam.contract.WatchLogs(opts, "SetParam") if err != nil { return nil, err @@ -1599,6 +1641,7 @@ func (_IGovParam *IGovParamFilterer) ParseSetParam(log types.Log) (*IGovParamSet if err := _IGovParam.contract.UnpackLog(event, "SetParam", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1619,8 +1662,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -1771,6 +1814,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -1778,6 +1822,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -1914,6 +1959,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -1934,6 +1980,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -1983,5 +2030,6 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/system_contracts/kip113/SimpleBlsRegistry.go b/contracts/contracts/system_contracts/kip113/SimpleBlsRegistry.go index 42b02f842..7271f3efb 100644 --- a/contracts/contracts/system_contracts/kip113/SimpleBlsRegistry.go +++ b/contracts/contracts/system_contracts/kip113/SimpleBlsRegistry.go @@ -442,6 +442,7 @@ type ContextUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -453,6 +454,7 @@ func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *b // // Solidity: event Initialized(uint8 version) func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -493,6 +495,7 @@ func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log type if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -728,6 +731,7 @@ type ERC1967UpgradeUpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableAdminChangedIterator, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -739,6 +743,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterAdmin // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -779,6 +784,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseAdminC if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -859,6 +865,7 @@ type ERC1967UpgradeUpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UpgradeUpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -875,6 +882,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterBeaco // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -920,6 +928,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseBeacon if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1000,6 +1009,7 @@ type ERC1967UpgradeUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableInitializedIterator, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -1011,6 +1021,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterIniti // // Solidity: event Initialized(uint8 version) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -1051,6 +1062,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseInitia if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1131,6 +1143,7 @@ type ERC1967UpgradeUpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UpgradeUpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1147,6 +1160,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterUpgra // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1192,6 +1206,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseUpgrad if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1234,8 +1249,8 @@ var IAddressBookABI = IAddressBookMetaData.ABI // IAddressBookBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAddressBookBinRuntime = `` -// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAddressBookMetaData.Sigs instead. +// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. var IAddressBookFuncSigs = IAddressBookMetaData.Sigs // IAddressBook is an auto generated Go binding around a Kaia contract. @@ -1386,8 +1401,7 @@ func (_IAddressBook *IAddressBookTransactorRaw) Transact(opts *bind.TransactOpts func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddress") @@ -1395,10 +1409,15 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str TypeList []uint8 AddressList []common.Address }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + return *outstruct, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -1407,8 +1426,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -1418,8 +1436,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { func (_IAddressBook *IAddressBookCallerSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -1432,8 +1449,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddressInfo") @@ -1444,13 +1460,18 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) PocContractAddress common.Address KirContractAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.CnStakingContractList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.CnRewardAddressList = *abi.ConvertType(out[2], new([]common.Address)).(*[]common.Address) outstruct.PocContractAddress = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) outstruct.KirContractAddress = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -1462,8 +1483,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -1476,8 +1496,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -1488,8 +1507,7 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getCnInfo", _cnNodeId) @@ -1498,11 +1516,16 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnStakingcontract common.Address CnRewardAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeId = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.CnStakingcontract = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.CnRewardAddress = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -1512,8 +1535,7 @@ func (_IAddressBook *IAddressBookSession) GetCnInfo(_cnNodeId common.Address) (s CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -1524,8 +1546,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -1535,6 +1556,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOpts) ([][32]byte, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getPendingRequestList") + if err != nil { return *new([][32]byte), err } @@ -1542,6 +1564,7 @@ func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) return out0, err + } // GetPendingRequestList is a free data retrieval call binding the contract method 0xda34a0bd. @@ -1569,8 +1592,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfo", _id) @@ -1583,6 +1605,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -1591,7 +1616,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id outstruct.Confirmers = *abi.ConvertType(out[4], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x82d67e5a. @@ -1605,8 +1632,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfo(_id [32]byte) (struct { Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -1621,8 +1647,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfo(_id [32]byte) (st Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -1634,8 +1659,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfoByArgs", _functionId, _firstArg, _secondArg, _thirdArg) @@ -1645,12 +1669,17 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.Id = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) outstruct.Confirmers = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfoByArgs is a free data retrieval call binding the contract method 0x407091eb. @@ -1661,8 +1690,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfoByArgs(_functionId uint8 Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -1674,8 +1702,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -1685,8 +1712,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getState") @@ -1694,10 +1720,15 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Requirement = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -1706,8 +1737,7 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { func (_IAddressBook *IAddressBookSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -1717,8 +1747,7 @@ func (_IAddressBook *IAddressBookSession) GetState() (struct { func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -1728,6 +1757,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -1735,6 +1765,7 @@ func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -1757,6 +1788,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsActivated() (bool, error) { func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isConstructed") + if err != nil { return *new(bool), err } @@ -1764,6 +1796,7 @@ func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (boo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsConstructed is a free data retrieval call binding the contract method 0x50a5bb69. @@ -1786,6 +1819,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsConstructed() (bool, error) { func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "kirContractAddress") + if err != nil { return *new(common.Address), err } @@ -1793,6 +1827,7 @@ func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // KirContractAddress is a free data retrieval call binding the contract method 0xb858dd95. @@ -1815,6 +1850,7 @@ func (_IAddressBook *IAddressBookCallerSession) KirContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "pocContractAddress") + if err != nil { return *new(common.Address), err } @@ -1822,6 +1858,7 @@ func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PocContractAddress is a free data retrieval call binding the contract method 0xd267eda5. @@ -1844,6 +1881,7 @@ func (_IAddressBook *IAddressBookCallerSession) PocContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "spareContractAddress") + if err != nil { return *new(common.Address), err } @@ -1851,6 +1889,7 @@ func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // SpareContractAddress is a free data retrieval call binding the contract method 0x6abd623d. @@ -2155,8 +2194,8 @@ var IBeaconUpgradeableABI = IBeaconUpgradeableMetaData.ABI // IBeaconUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IBeaconUpgradeableBinRuntime = `` -// IBeaconUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IBeaconUpgradeableMetaData.Sigs instead. +// IBeaconUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var IBeaconUpgradeableFuncSigs = IBeaconUpgradeableMetaData.Sigs // IBeaconUpgradeable is an auto generated Go binding around a Kaia contract. @@ -2307,6 +2346,7 @@ func (_IBeaconUpgradeable *IBeaconUpgradeableTransactorRaw) Transact(opts *bind. func (_IBeaconUpgradeable *IBeaconUpgradeableCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IBeaconUpgradeable.contract.Call(opts, &out, "implementation") + if err != nil { return *new(common.Address), err } @@ -2314,6 +2354,7 @@ func (_IBeaconUpgradeable *IBeaconUpgradeableCaller) Implementation(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Implementation is a free data retrieval call binding the contract method 0x5c60da1b. @@ -2345,8 +2386,8 @@ var IERC1822ProxiableUpgradeableABI = IERC1822ProxiableUpgradeableMetaData.ABI // IERC1822ProxiableUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC1822ProxiableUpgradeableBinRuntime = `` -// IERC1822ProxiableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC1822ProxiableUpgradeableMetaData.Sigs instead. +// IERC1822ProxiableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var IERC1822ProxiableUpgradeableFuncSigs = IERC1822ProxiableUpgradeableMetaData.Sigs // IERC1822ProxiableUpgradeable is an auto generated Go binding around a Kaia contract. @@ -2497,6 +2538,7 @@ func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableTransactorRaw) func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _IERC1822ProxiableUpgradeable.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -2504,6 +2546,7 @@ func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableCaller) Proxiab out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -2752,6 +2795,7 @@ type IERC1967UpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967UpgradeableAdminChangedIterator, error) { + logs, sub, err := _IERC1967Upgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2763,6 +2807,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterAdminChanged(opts // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _IERC1967Upgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2803,6 +2848,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseAdminChanged(log t if err := _IERC1967Upgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2883,6 +2929,7 @@ type IERC1967UpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967UpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2899,6 +2946,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterBeaconUpgraded(op // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2944,6 +2992,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseBeaconUpgraded(log if err := _IERC1967Upgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3024,6 +3073,7 @@ type IERC1967UpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -3040,6 +3090,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterUpgraded(opts *bi // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -3085,6 +3136,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseUpgraded(log types if err := _IERC1967Upgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3103,8 +3155,8 @@ var IKIP113ABI = IKIP113MetaData.ABI // IKIP113BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IKIP113BinRuntime = `` -// IKIP113FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IKIP113MetaData.Sigs instead. +// IKIP113FuncSigs maps the 4-byte function signature to its string representation. var IKIP113FuncSigs = IKIP113MetaData.Sigs // IKIP113 is an auto generated Go binding around a Kaia contract. @@ -3255,8 +3307,7 @@ func (_IKIP113 *IKIP113TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { var out []interface{} err := _IKIP113.contract.Call(opts, &out, "getAllBlsInfo") @@ -3264,10 +3315,15 @@ func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo }) + if err != nil { + return *outstruct, err + } outstruct.NodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.PubkeyList = *abi.ConvertType(out[1], new([]IKIP113BlsPublicKeyInfo)).(*[]IKIP113BlsPublicKeyInfo) + return *outstruct, err + } // GetAllBlsInfo is a free data retrieval call binding the contract method 0x6968b53f. @@ -3276,8 +3332,7 @@ func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { func (_IKIP113 *IKIP113Session) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _IKIP113.Contract.GetAllBlsInfo(&_IKIP113.CallOpts) } @@ -3287,8 +3342,7 @@ func (_IKIP113 *IKIP113Session) GetAllBlsInfo() (struct { func (_IKIP113 *IKIP113CallerSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _IKIP113.Contract.GetAllBlsInfo(&_IKIP113.CallOpts) } @@ -3523,6 +3577,7 @@ type InitializableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -3534,6 +3589,7 @@ func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.Filter // // Solidity: event Initialized(uint8 version) func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -3574,6 +3630,7 @@ func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*I if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3594,8 +3651,8 @@ var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI // OwnableUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableUpgradeableBinRuntime = `` -// OwnableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableUpgradeableMetaData.Sigs instead. +// OwnableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var OwnableUpgradeableFuncSigs = OwnableUpgradeableMetaData.Sigs // OwnableUpgradeable is an auto generated Go binding around a Kaia contract. @@ -3746,6 +3803,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind. func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -3753,6 +3811,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -3888,6 +3947,7 @@ type OwnableUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -3899,6 +3959,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *b // // Solidity: event Initialized(uint8 version) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -3939,6 +4000,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log type if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4020,6 +4082,7 @@ type OwnableUpgradeableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4040,6 +4103,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferre // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4089,6 +4153,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4112,7 +4177,7 @@ var SimpleBlsRegistryMetaData = &bind.MetaData{ "3659cfe6": "upgradeTo(address)", "4f1ef286": "upgradeToAndCall(address,bytes)", }, - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611ecc61011860003960008181610593015281816105d301528181610672015281816106b201526107450152611ecc6000f3fe6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f3660046116cb565b6102f9565b005b34801561016257600080fd5b506101766101713660046116cb565b61045d565b60405161012b92919061173f565b34801561019057600080fd5b5061015461019f3660046116cb565b610589565b6101546101b2366004611783565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611847565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa8565b34801561024457600080fd5b50610154610253366004611955565b610abc565b34801561026457600080fd5b50610154610e30565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d43660046119d8565b610f48565b3480156102e557600080fd5b506101546102f43660046116cb565b610f72565b610301610fe8565b61030a81611042565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906119f1565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d0816110be565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611aa8565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611668565b610458600183016000611668565b505050565b60ca60205260009081526040902080548190610478906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906119f1565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906119f1565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611e50833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161035390611b2a565b610649816111c5565b60408051600080825260208201909252610665918391906111cd565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611e50833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b815260040161035390611b2a565b610728826111c5565b610734828260016111cd565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611e5083398151915290565b60c954606090819067ffffffffffffffff81111561080b5761080b61176d565b604051908082528060200260200182016040528015610834578160200160208202803683370190505b5060c95490925067ffffffffffffffff8111156108535761085361176d565b60405190808252806020026020018201604052801561089857816020015b60408051808201909152606080825260208201528152602001906001900390816108715790505b50905060005b8251811015610aa35760c981815481106108ba576108ba611b76565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106108ea576108ea611b76565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061092157610921611b76565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095f906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906119f1565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b505050505081526020016001820180546109f1906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d906119f1565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b505050505081525050828281518110610a8557610a85611b76565b60200260200101819052508080610a9b90611ba2565b91505061089e565b509091565b610ab0610fe8565b610aba6000611338565b565b610ac4610fe8565b838360308114610b165760405162461bcd60e51b815260206004820152601b60248201527f5075626c6963206b6579206d75737420626520343820627974657300000000006044820152606401610353565b6040517fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29390610b489084908490611bbb565b604051809103902003610b9d5760405162461bcd60e51b815260206004820152601960248201527f5075626c6963206b65792063616e6e6f74206265207a65726f000000000000006044820152606401610353565b838360608114610be65760405162461bcd60e51b8152602060048201526014602482015273506f70206d75737420626520393620627974657360601b6044820152606401610353565b6040517f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2190610c189084908490611bbb565b604051809103902003610c625760405162461bcd60e51b8152602060048201526012602482015271506f702063616e6e6f74206265207a65726f60701b6044820152606401610353565b610c6b89611042565b610cb75760405162461bcd60e51b815260206004820152601e60248201527f636e4e6f64654964206973206e6f7420696e2041646472657373426f6f6b00006044820152606401610353565b6001600160a01b038916600090815260ca602052604090208054610cda906119f1565b9050600003610d2f5760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b038b161790555b6040805160606020601f8b018190040282018101835291810189815290918291908b908b9081908501838280828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509390945250506001600160a01b038c16815260ca6020526040902082519091508190610dcd9082611c19565b5060208201516001820190610de29082611c19565b509050507f79c75399e89a1f580d9a6252cb8bdcf4cd80f73b3597c94d845eb52174ad930f8989898989604051610e1d959493929190611d02565b60405180910390a1505050505050505050565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e6a5750303b158015610e6a575060005460ff166001145b610ecd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610ef0576000805461ff0019166101001790555b610ef861138a565b610f006113b9565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610f5857600080fd5b6000918252602090912001546001600160a01b0316905081565b610f7a610fe8565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b61066581611338565b6097546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa9250505080156110a7575060408051601f3d908101601f191682019092526110a491810190611d46565b60015b6110b357506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c982815481106110e8576110e8611b76565b6000918252602090912001546001600160a01b0316036111b35760c9805461111290600190611d93565b8154811061112257611122611b76565b60009182526020909120015460c980546001600160a01b03909216918390811061114e5761114e611b76565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c980548061118d5761118d611da6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111bd81611ba2565b9150506110c1565b610665610fe8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561120057610458836113e0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561125a575060408051601f3d908101601f1916820190925261125791810190611dbc565b60015b6112bd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611e50833981519152811461132c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361147c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113b15760405162461bcd60e51b815260040161035390611dd5565b610aba6114a7565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161035390611dd5565b6001600160a01b0381163b61144d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611e5083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611485836114d7565b6000825111806114925750805b15610458576114a18383611517565b50505050565b600054610100900460ff166114ce5760405162461bcd60e51b815260040161035390611dd5565b610aba33611338565b6114e0816113e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061153c8383604051806060016040528060278152602001611e7060279139611545565b90505b92915050565b6060600080856001600160a01b0316856040516115629190611e20565b600060405180830381855af49150503d806000811461159d576040519150601f19603f3d011682016040523d82523d6000602084013e6115a2565b606091505b50915091506115b3868383876115bd565b9695505050505050565b6060831561162c578251600003611625576001600160a01b0385163b6116255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b5081611636565b611636838361163e565b949350505050565b81511561164e5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611e3c565b508054611674906119f1565b6000825580601f10611684575050565b601f01602090049060005260206000209081019061066591905b808211156116b2576000815560010161169e565b5090565b6001600160a01b038116811461066557600080fd5b6000602082840312156116dd57600080fd5b81356116e8816116b6565b9392505050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6040815260006117526040830185611713565b82810360208401526117648185611713565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561179657600080fd5b82356117a1816116b6565b9150602083013567ffffffffffffffff808211156117be57600080fd5b818501915085601f8301126117d257600080fd5b8135818111156117e4576117e461176d565b604051601f8201601f19908116603f0116810190838211818310171561180c5761180c61176d565b8160405282815288602084870101111561182557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b8281101561188a5781516001600160a01b031684529284019290840190600101611865565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156118fc57858303601f19018552815180518985526118d08a860182611713565b91890151858303868b01529190506118e88183611713565b9689019694505050908601906001016118ac565b50909a9950505050505050505050565b60008083601f84011261191e57600080fd5b50813567ffffffffffffffff81111561193657600080fd5b60208301915083602082850101111561194e57600080fd5b9250929050565b60008060008060006060868803121561196d57600080fd5b8535611978816116b6565b9450602086013567ffffffffffffffff8082111561199557600080fd5b6119a189838a0161190c565b909650945060408801359150808211156119ba57600080fd5b506119c78882890161190c565b969995985093965092949392505050565b6000602082840312156119ea57600080fd5b5035919050565b600181811c90821680611a0557607f821691505b602082108103611a2557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611a38816119f1565b808552602060018381168015611a555760018114611a6f57611a9d565b60ff1985168884015283151560051b880183019550611a9d565b866000528260002060005b85811015611a955781548a8201860152908301908401611a7a565b890184019650505b505050505092915050565b6001600160a01b0384168152606060208201819052600090611acc90830185611a2b565b82810360408401526115b38185611a2b565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611bb457611bb4611b8c565b5060010190565b8183823760009101908152919050565b601f82111561045857600081815260208120601f850160051c81016020861015611bf25750805b601f850160051c820191505b81811015611c1157828155600101611bfe565b505050505050565b815167ffffffffffffffff811115611c3357611c3361176d565b611c4781611c4184546119f1565b84611bcb565b602080601f831160018114611c7c5760008415611c645750858301515b600019600386901b1c1916600185901b178555611c11565b600085815260208120601f198616915b82811015611cab57888601518255948401946001909101908401611c8c565b5085821015611cc95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201819052600090611d279083018688611cd9565b8281036040840152611d3a818587611cd9565b98975050505050505050565b600080600060608486031215611d5b57600080fd5b8351611d66816116b6565b6020850151909350611d77816116b6565b6040850151909250611d88816116b6565b809150509250925092565b8181038181111561153f5761153f611b8c565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611dce57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611e328184602087016116ef565b9190910192915050565b60208152600061153c602083018461171356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cf3c282151123924c9c8275c323310bbf7c513b7905cf4ab928cb0d42f59f3a664736f6c63430008130033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611ecc61011860003960008181610593015281816105d301528181610672015281816106b201526107450152611ecc6000f3fe6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f3660046116cb565b6102f9565b005b34801561016257600080fd5b506101766101713660046116cb565b61045d565b60405161012b92919061173f565b34801561019057600080fd5b5061015461019f3660046116cb565b610589565b6101546101b2366004611783565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611847565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa8565b34801561024457600080fd5b50610154610253366004611955565b610abc565b34801561026457600080fd5b50610154610e30565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d43660046119d8565b610f48565b3480156102e557600080fd5b506101546102f43660046116cb565b610f72565b610301610fe8565b61030a81611042565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906119f1565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d0816110be565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611aa8565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611668565b610458600183016000611668565b505050565b60ca60205260009081526040902080548190610478906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906119f1565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906119f1565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611e50833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161035390611b2a565b610649816111c5565b60408051600080825260208201909252610665918391906111cd565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611e50833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b815260040161035390611b2a565b610728826111c5565b610734828260016111cd565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611e5083398151915290565b60c954606090819067ffffffffffffffff81111561080b5761080b61176d565b604051908082528060200260200182016040528015610834578160200160208202803683370190505b5060c95490925067ffffffffffffffff8111156108535761085361176d565b60405190808252806020026020018201604052801561089857816020015b60408051808201909152606080825260208201528152602001906001900390816108715790505b50905060005b8251811015610aa35760c981815481106108ba576108ba611b76565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106108ea576108ea611b76565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061092157610921611b76565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095f906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906119f1565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b505050505081526020016001820180546109f1906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d906119f1565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b505050505081525050828281518110610a8557610a85611b76565b60200260200101819052508080610a9b90611ba2565b91505061089e565b509091565b610ab0610fe8565b610aba6000611338565b565b610ac4610fe8565b838360308114610b165760405162461bcd60e51b815260206004820152601b60248201527f5075626c6963206b6579206d75737420626520343820627974657300000000006044820152606401610353565b6040517fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29390610b489084908490611bbb565b604051809103902003610b9d5760405162461bcd60e51b815260206004820152601960248201527f5075626c6963206b65792063616e6e6f74206265207a65726f000000000000006044820152606401610353565b838360608114610be65760405162461bcd60e51b8152602060048201526014602482015273506f70206d75737420626520393620627974657360601b6044820152606401610353565b6040517f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2190610c189084908490611bbb565b604051809103902003610c625760405162461bcd60e51b8152602060048201526012602482015271506f702063616e6e6f74206265207a65726f60701b6044820152606401610353565b610c6b89611042565b610cb75760405162461bcd60e51b815260206004820152601e60248201527f636e4e6f64654964206973206e6f7420696e2041646472657373426f6f6b00006044820152606401610353565b6001600160a01b038916600090815260ca602052604090208054610cda906119f1565b9050600003610d2f5760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b038b161790555b6040805160606020601f8b018190040282018101835291810189815290918291908b908b9081908501838280828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509390945250506001600160a01b038c16815260ca6020526040902082519091508190610dcd9082611c19565b5060208201516001820190610de29082611c19565b509050507f79c75399e89a1f580d9a6252cb8bdcf4cd80f73b3597c94d845eb52174ad930f8989898989604051610e1d959493929190611d02565b60405180910390a1505050505050505050565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e6a5750303b158015610e6a575060005460ff166001145b610ecd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610ef0576000805461ff0019166101001790555b610ef861138a565b610f006113b9565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610f5857600080fd5b6000918252602090912001546001600160a01b0316905081565b610f7a610fe8565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b61066581611338565b6097546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa9250505080156110a7575060408051601f3d908101601f191682019092526110a491810190611d46565b60015b6110b357506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c982815481106110e8576110e8611b76565b6000918252602090912001546001600160a01b0316036111b35760c9805461111290600190611d93565b8154811061112257611122611b76565b60009182526020909120015460c980546001600160a01b03909216918390811061114e5761114e611b76565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c980548061118d5761118d611da6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111bd81611ba2565b9150506110c1565b610665610fe8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561120057610458836113e0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561125a575060408051601f3d908101601f1916820190925261125791810190611dbc565b60015b6112bd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611e50833981519152811461132c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361147c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113b15760405162461bcd60e51b815260040161035390611dd5565b610aba6114a7565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161035390611dd5565b6001600160a01b0381163b61144d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611e5083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611485836114d7565b6000825111806114925750805b15610458576114a18383611517565b50505050565b600054610100900460ff166114ce5760405162461bcd60e51b815260040161035390611dd5565b610aba33611338565b6114e0816113e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061153c8383604051806060016040528060278152602001611e7060279139611545565b90505b92915050565b6060600080856001600160a01b0316856040516115629190611e20565b600060405180830381855af49150503d806000811461159d576040519150601f19603f3d011682016040523d82523d6000602084013e6115a2565b606091505b50915091506115b3868383876115bd565b9695505050505050565b6060831561162c578251600003611625576001600160a01b0385163b6116255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b5081611636565b611636838361163e565b949350505050565b81511561164e5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611e3c565b508054611674906119f1565b6000825580601f10611684575050565b601f01602090049060005260206000209081019061066591905b808211156116b2576000815560010161169e565b5090565b6001600160a01b038116811461066557600080fd5b6000602082840312156116dd57600080fd5b81356116e8816116b6565b9392505050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6040815260006117526040830185611713565b82810360208401526117648185611713565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561179657600080fd5b82356117a1816116b6565b9150602083013567ffffffffffffffff808211156117be57600080fd5b818501915085601f8301126117d257600080fd5b8135818111156117e4576117e461176d565b604051601f8201601f19908116603f0116810190838211818310171561180c5761180c61176d565b8160405282815288602084870101111561182557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b8281101561188a5781516001600160a01b031684529284019290840190600101611865565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156118fc57858303601f19018552815180518985526118d08a860182611713565b91890151858303868b01529190506118e88183611713565b9689019694505050908601906001016118ac565b50909a9950505050505050505050565b60008083601f84011261191e57600080fd5b50813567ffffffffffffffff81111561193657600080fd5b60208301915083602082850101111561194e57600080fd5b9250929050565b60008060008060006060868803121561196d57600080fd5b8535611978816116b6565b9450602086013567ffffffffffffffff8082111561199557600080fd5b6119a189838a0161190c565b909650945060408801359150808211156119ba57600080fd5b506119c78882890161190c565b969995985093965092949392505050565b6000602082840312156119ea57600080fd5b5035919050565b600181811c90821680611a0557607f821691505b602082108103611a2557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611a38816119f1565b808552602060018381168015611a555760018114611a6f57611a9d565b60ff1985168884015283151560051b880183019550611a9d565b866000528260002060005b85811015611a955781548a8201860152908301908401611a7a565b890184019650505b505050505092915050565b6001600160a01b0384168152606060208201819052600090611acc90830185611a2b565b82810360408401526115b38185611a2b565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611bb457611bb4611b8c565b5060010190565b8183823760009101908152919050565b601f82111561045857600081815260208120601f850160051c81016020861015611bf25750805b601f850160051c820191505b81811015611c1157828155600101611bfe565b505050505050565b815167ffffffffffffffff811115611c3357611c3361176d565b611c4781611c4184546119f1565b84611bcb565b602080601f831160018114611c7c5760008415611c645750858301515b600019600386901b1c1916600185901b178555611c11565b600085815260208120601f198616915b82811015611cab57888601518255948401946001909101908401611c8c565b5085821015611cc95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201819052600090611d279083018688611cd9565b8281036040840152611d3a818587611cd9565b98975050505050505050565b600080600060608486031215611d5b57600080fd5b8351611d66816116b6565b6020850151909350611d77816116b6565b6040850151909250611d88816116b6565b809150509250925092565b8181038181111561153f5761153f611b8c565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611dce57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611e328184602087016116ef565b9190910192915050565b60208152600061153c602083018461171356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e45843e869e3638b99b6ffbb125e93e972798438114a77f24524b3a66e9788564736f6c63430008130033", } // SimpleBlsRegistryABI is the input ABI used to generate the binding from. @@ -4120,10 +4185,10 @@ var SimpleBlsRegistryMetaData = &bind.MetaData{ var SimpleBlsRegistryABI = SimpleBlsRegistryMetaData.ABI // SimpleBlsRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const SimpleBlsRegistryBinRuntime = `6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f3660046116cb565b6102f9565b005b34801561016257600080fd5b506101766101713660046116cb565b61045d565b60405161012b92919061173f565b34801561019057600080fd5b5061015461019f3660046116cb565b610589565b6101546101b2366004611783565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611847565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa8565b34801561024457600080fd5b50610154610253366004611955565b610abc565b34801561026457600080fd5b50610154610e30565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d43660046119d8565b610f48565b3480156102e557600080fd5b506101546102f43660046116cb565b610f72565b610301610fe8565b61030a81611042565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906119f1565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d0816110be565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611aa8565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611668565b610458600183016000611668565b505050565b60ca60205260009081526040902080548190610478906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906119f1565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906119f1565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611e50833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161035390611b2a565b610649816111c5565b60408051600080825260208201909252610665918391906111cd565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611e50833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b815260040161035390611b2a565b610728826111c5565b610734828260016111cd565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611e5083398151915290565b60c954606090819067ffffffffffffffff81111561080b5761080b61176d565b604051908082528060200260200182016040528015610834578160200160208202803683370190505b5060c95490925067ffffffffffffffff8111156108535761085361176d565b60405190808252806020026020018201604052801561089857816020015b60408051808201909152606080825260208201528152602001906001900390816108715790505b50905060005b8251811015610aa35760c981815481106108ba576108ba611b76565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106108ea576108ea611b76565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061092157610921611b76565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095f906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906119f1565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b505050505081526020016001820180546109f1906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d906119f1565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b505050505081525050828281518110610a8557610a85611b76565b60200260200101819052508080610a9b90611ba2565b91505061089e565b509091565b610ab0610fe8565b610aba6000611338565b565b610ac4610fe8565b838360308114610b165760405162461bcd60e51b815260206004820152601b60248201527f5075626c6963206b6579206d75737420626520343820627974657300000000006044820152606401610353565b6040517fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29390610b489084908490611bbb565b604051809103902003610b9d5760405162461bcd60e51b815260206004820152601960248201527f5075626c6963206b65792063616e6e6f74206265207a65726f000000000000006044820152606401610353565b838360608114610be65760405162461bcd60e51b8152602060048201526014602482015273506f70206d75737420626520393620627974657360601b6044820152606401610353565b6040517f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2190610c189084908490611bbb565b604051809103902003610c625760405162461bcd60e51b8152602060048201526012602482015271506f702063616e6e6f74206265207a65726f60701b6044820152606401610353565b610c6b89611042565b610cb75760405162461bcd60e51b815260206004820152601e60248201527f636e4e6f64654964206973206e6f7420696e2041646472657373426f6f6b00006044820152606401610353565b6001600160a01b038916600090815260ca602052604090208054610cda906119f1565b9050600003610d2f5760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b038b161790555b6040805160606020601f8b018190040282018101835291810189815290918291908b908b9081908501838280828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509390945250506001600160a01b038c16815260ca6020526040902082519091508190610dcd9082611c19565b5060208201516001820190610de29082611c19565b509050507f79c75399e89a1f580d9a6252cb8bdcf4cd80f73b3597c94d845eb52174ad930f8989898989604051610e1d959493929190611d02565b60405180910390a1505050505050505050565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e6a5750303b158015610e6a575060005460ff166001145b610ecd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610ef0576000805461ff0019166101001790555b610ef861138a565b610f006113b9565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610f5857600080fd5b6000918252602090912001546001600160a01b0316905081565b610f7a610fe8565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b61066581611338565b6097546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa9250505080156110a7575060408051601f3d908101601f191682019092526110a491810190611d46565b60015b6110b357506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c982815481106110e8576110e8611b76565b6000918252602090912001546001600160a01b0316036111b35760c9805461111290600190611d93565b8154811061112257611122611b76565b60009182526020909120015460c980546001600160a01b03909216918390811061114e5761114e611b76565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c980548061118d5761118d611da6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111bd81611ba2565b9150506110c1565b610665610fe8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561120057610458836113e0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561125a575060408051601f3d908101601f1916820190925261125791810190611dbc565b60015b6112bd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611e50833981519152811461132c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361147c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113b15760405162461bcd60e51b815260040161035390611dd5565b610aba6114a7565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161035390611dd5565b6001600160a01b0381163b61144d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611e5083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611485836114d7565b6000825111806114925750805b15610458576114a18383611517565b50505050565b600054610100900460ff166114ce5760405162461bcd60e51b815260040161035390611dd5565b610aba33611338565b6114e0816113e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061153c8383604051806060016040528060278152602001611e7060279139611545565b90505b92915050565b6060600080856001600160a01b0316856040516115629190611e20565b600060405180830381855af49150503d806000811461159d576040519150601f19603f3d011682016040523d82523d6000602084013e6115a2565b606091505b50915091506115b3868383876115bd565b9695505050505050565b6060831561162c578251600003611625576001600160a01b0385163b6116255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b5081611636565b611636838361163e565b949350505050565b81511561164e5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611e3c565b508054611674906119f1565b6000825580601f10611684575050565b601f01602090049060005260206000209081019061066591905b808211156116b2576000815560010161169e565b5090565b6001600160a01b038116811461066557600080fd5b6000602082840312156116dd57600080fd5b81356116e8816116b6565b9392505050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6040815260006117526040830185611713565b82810360208401526117648185611713565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561179657600080fd5b82356117a1816116b6565b9150602083013567ffffffffffffffff808211156117be57600080fd5b818501915085601f8301126117d257600080fd5b8135818111156117e4576117e461176d565b604051601f8201601f19908116603f0116810190838211818310171561180c5761180c61176d565b8160405282815288602084870101111561182557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b8281101561188a5781516001600160a01b031684529284019290840190600101611865565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156118fc57858303601f19018552815180518985526118d08a860182611713565b91890151858303868b01529190506118e88183611713565b9689019694505050908601906001016118ac565b50909a9950505050505050505050565b60008083601f84011261191e57600080fd5b50813567ffffffffffffffff81111561193657600080fd5b60208301915083602082850101111561194e57600080fd5b9250929050565b60008060008060006060868803121561196d57600080fd5b8535611978816116b6565b9450602086013567ffffffffffffffff8082111561199557600080fd5b6119a189838a0161190c565b909650945060408801359150808211156119ba57600080fd5b506119c78882890161190c565b969995985093965092949392505050565b6000602082840312156119ea57600080fd5b5035919050565b600181811c90821680611a0557607f821691505b602082108103611a2557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611a38816119f1565b808552602060018381168015611a555760018114611a6f57611a9d565b60ff1985168884015283151560051b880183019550611a9d565b866000528260002060005b85811015611a955781548a8201860152908301908401611a7a565b890184019650505b505050505092915050565b6001600160a01b0384168152606060208201819052600090611acc90830185611a2b565b82810360408401526115b38185611a2b565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611bb457611bb4611b8c565b5060010190565b8183823760009101908152919050565b601f82111561045857600081815260208120601f850160051c81016020861015611bf25750805b601f850160051c820191505b81811015611c1157828155600101611bfe565b505050505050565b815167ffffffffffffffff811115611c3357611c3361176d565b611c4781611c4184546119f1565b84611bcb565b602080601f831160018114611c7c5760008415611c645750858301515b600019600386901b1c1916600185901b178555611c11565b600085815260208120601f198616915b82811015611cab57888601518255948401946001909101908401611c8c565b5085821015611cc95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201819052600090611d279083018688611cd9565b8281036040840152611d3a818587611cd9565b98975050505050505050565b600080600060608486031215611d5b57600080fd5b8351611d66816116b6565b6020850151909350611d77816116b6565b6040850151909250611d88816116b6565b809150509250925092565b8181038181111561153f5761153f611b8c565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611dce57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611e328184602087016116ef565b9190910192915050565b60208152600061153c602083018461171356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cf3c282151123924c9c8275c323310bbf7c513b7905cf4ab928cb0d42f59f3a664736f6c63430008130033` +const SimpleBlsRegistryBinRuntime = `6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f3660046116cb565b6102f9565b005b34801561016257600080fd5b506101766101713660046116cb565b61045d565b60405161012b92919061173f565b34801561019057600080fd5b5061015461019f3660046116cb565b610589565b6101546101b2366004611783565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611847565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa8565b34801561024457600080fd5b50610154610253366004611955565b610abc565b34801561026457600080fd5b50610154610e30565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d43660046119d8565b610f48565b3480156102e557600080fd5b506101546102f43660046116cb565b610f72565b610301610fe8565b61030a81611042565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906119f1565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d0816110be565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611aa8565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611668565b610458600183016000611668565b505050565b60ca60205260009081526040902080548190610478906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906119f1565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906119f1565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611e50833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161035390611b2a565b610649816111c5565b60408051600080825260208201909252610665918391906111cd565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611e50833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b815260040161035390611b2a565b610728826111c5565b610734828260016111cd565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611e5083398151915290565b60c954606090819067ffffffffffffffff81111561080b5761080b61176d565b604051908082528060200260200182016040528015610834578160200160208202803683370190505b5060c95490925067ffffffffffffffff8111156108535761085361176d565b60405190808252806020026020018201604052801561089857816020015b60408051808201909152606080825260208201528152602001906001900390816108715790505b50905060005b8251811015610aa35760c981815481106108ba576108ba611b76565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106108ea576108ea611b76565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061092157610921611b76565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095f906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906119f1565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b505050505081526020016001820180546109f1906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d906119f1565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b505050505081525050828281518110610a8557610a85611b76565b60200260200101819052508080610a9b90611ba2565b91505061089e565b509091565b610ab0610fe8565b610aba6000611338565b565b610ac4610fe8565b838360308114610b165760405162461bcd60e51b815260206004820152601b60248201527f5075626c6963206b6579206d75737420626520343820627974657300000000006044820152606401610353565b6040517fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29390610b489084908490611bbb565b604051809103902003610b9d5760405162461bcd60e51b815260206004820152601960248201527f5075626c6963206b65792063616e6e6f74206265207a65726f000000000000006044820152606401610353565b838360608114610be65760405162461bcd60e51b8152602060048201526014602482015273506f70206d75737420626520393620627974657360601b6044820152606401610353565b6040517f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2190610c189084908490611bbb565b604051809103902003610c625760405162461bcd60e51b8152602060048201526012602482015271506f702063616e6e6f74206265207a65726f60701b6044820152606401610353565b610c6b89611042565b610cb75760405162461bcd60e51b815260206004820152601e60248201527f636e4e6f64654964206973206e6f7420696e2041646472657373426f6f6b00006044820152606401610353565b6001600160a01b038916600090815260ca602052604090208054610cda906119f1565b9050600003610d2f5760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b038b161790555b6040805160606020601f8b018190040282018101835291810189815290918291908b908b9081908501838280828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509390945250506001600160a01b038c16815260ca6020526040902082519091508190610dcd9082611c19565b5060208201516001820190610de29082611c19565b509050507f79c75399e89a1f580d9a6252cb8bdcf4cd80f73b3597c94d845eb52174ad930f8989898989604051610e1d959493929190611d02565b60405180910390a1505050505050505050565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e6a5750303b158015610e6a575060005460ff166001145b610ecd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610ef0576000805461ff0019166101001790555b610ef861138a565b610f006113b9565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610f5857600080fd5b6000918252602090912001546001600160a01b0316905081565b610f7a610fe8565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b61066581611338565b6097546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa9250505080156110a7575060408051601f3d908101601f191682019092526110a491810190611d46565b60015b6110b357506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c982815481106110e8576110e8611b76565b6000918252602090912001546001600160a01b0316036111b35760c9805461111290600190611d93565b8154811061112257611122611b76565b60009182526020909120015460c980546001600160a01b03909216918390811061114e5761114e611b76565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c980548061118d5761118d611da6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111bd81611ba2565b9150506110c1565b610665610fe8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561120057610458836113e0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561125a575060408051601f3d908101601f1916820190925261125791810190611dbc565b60015b6112bd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611e50833981519152811461132c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361147c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113b15760405162461bcd60e51b815260040161035390611dd5565b610aba6114a7565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161035390611dd5565b6001600160a01b0381163b61144d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611e5083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611485836114d7565b6000825111806114925750805b15610458576114a18383611517565b50505050565b600054610100900460ff166114ce5760405162461bcd60e51b815260040161035390611dd5565b610aba33611338565b6114e0816113e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061153c8383604051806060016040528060278152602001611e7060279139611545565b90505b92915050565b6060600080856001600160a01b0316856040516115629190611e20565b600060405180830381855af49150503d806000811461159d576040519150601f19603f3d011682016040523d82523d6000602084013e6115a2565b606091505b50915091506115b3868383876115bd565b9695505050505050565b6060831561162c578251600003611625576001600160a01b0385163b6116255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b5081611636565b611636838361163e565b949350505050565b81511561164e5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611e3c565b508054611674906119f1565b6000825580601f10611684575050565b601f01602090049060005260206000209081019061066591905b808211156116b2576000815560010161169e565b5090565b6001600160a01b038116811461066557600080fd5b6000602082840312156116dd57600080fd5b81356116e8816116b6565b9392505050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6040815260006117526040830185611713565b82810360208401526117648185611713565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561179657600080fd5b82356117a1816116b6565b9150602083013567ffffffffffffffff808211156117be57600080fd5b818501915085601f8301126117d257600080fd5b8135818111156117e4576117e461176d565b604051601f8201601f19908116603f0116810190838211818310171561180c5761180c61176d565b8160405282815288602084870101111561182557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b8281101561188a5781516001600160a01b031684529284019290840190600101611865565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156118fc57858303601f19018552815180518985526118d08a860182611713565b91890151858303868b01529190506118e88183611713565b9689019694505050908601906001016118ac565b50909a9950505050505050505050565b60008083601f84011261191e57600080fd5b50813567ffffffffffffffff81111561193657600080fd5b60208301915083602082850101111561194e57600080fd5b9250929050565b60008060008060006060868803121561196d57600080fd5b8535611978816116b6565b9450602086013567ffffffffffffffff8082111561199557600080fd5b6119a189838a0161190c565b909650945060408801359150808211156119ba57600080fd5b506119c78882890161190c565b969995985093965092949392505050565b6000602082840312156119ea57600080fd5b5035919050565b600181811c90821680611a0557607f821691505b602082108103611a2557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611a38816119f1565b808552602060018381168015611a555760018114611a6f57611a9d565b60ff1985168884015283151560051b880183019550611a9d565b866000528260002060005b85811015611a955781548a8201860152908301908401611a7a565b890184019650505b505050505092915050565b6001600160a01b0384168152606060208201819052600090611acc90830185611a2b565b82810360408401526115b38185611a2b565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611bb457611bb4611b8c565b5060010190565b8183823760009101908152919050565b601f82111561045857600081815260208120601f850160051c81016020861015611bf25750805b601f850160051c820191505b81811015611c1157828155600101611bfe565b505050505050565b815167ffffffffffffffff811115611c3357611c3361176d565b611c4781611c4184546119f1565b84611bcb565b602080601f831160018114611c7c5760008415611c645750858301515b600019600386901b1c1916600185901b178555611c11565b600085815260208120601f198616915b82811015611cab57888601518255948401946001909101908401611c8c565b5085821015611cc95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201819052600090611d279083018688611cd9565b8281036040840152611d3a818587611cd9565b98975050505050505050565b600080600060608486031215611d5b57600080fd5b8351611d66816116b6565b6020850151909350611d77816116b6565b6040850151909250611d88816116b6565b809150509250925092565b8181038181111561153f5761153f611b8c565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611dce57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611e328184602087016116ef565b9190910192915050565b60208152600061153c602083018461171356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e45843e869e3638b99b6ffbb125e93e972798438114a77f24524b3a66e9788564736f6c63430008130033` -// SimpleBlsRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use SimpleBlsRegistryMetaData.Sigs instead. +// SimpleBlsRegistryFuncSigs maps the 4-byte function signature to its string representation. var SimpleBlsRegistryFuncSigs = SimpleBlsRegistryMetaData.Sigs // SimpleBlsRegistryBin is the compiled bytecode used for deploying new contracts. @@ -4295,6 +4360,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryTransactorRaw) Transact(opts *bind.Tr func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO48HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "ZERO48HASH") + if err != nil { return *new([32]byte), err } @@ -4302,6 +4368,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO48HASH(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO48HASH is a free data retrieval call binding the contract method 0x6fc522c6. @@ -4324,6 +4391,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ZERO48HASH() ([32]byte func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO96HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "ZERO96HASH") + if err != nil { return *new([32]byte), err } @@ -4331,6 +4399,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO96HASH(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO96HASH is a free data retrieval call binding the contract method 0x20abd458. @@ -4353,6 +4422,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ZERO96HASH() ([32]byte func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Abook(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "abook") + if err != nil { return *new(common.Address), err } @@ -4360,6 +4430,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Abook(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Abook is a free data retrieval call binding the contract method 0x829d639d. @@ -4382,6 +4453,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Abook() (common.Addres func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) AllNodeIds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "allNodeIds", arg0) + if err != nil { return *new(common.Address), err } @@ -4389,6 +4461,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) AllNodeIds(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AllNodeIds is a free data retrieval call binding the contract method 0xa5834971. @@ -4411,8 +4484,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) AllNodeIds(arg0 *big.I func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "getAllBlsInfo") @@ -4420,10 +4492,15 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.Call NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo }) + if err != nil { + return *outstruct, err + } outstruct.NodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.PubkeyList = *abi.ConvertType(out[1], new([]IKIP113BlsPublicKeyInfo)).(*[]IKIP113BlsPublicKeyInfo) + return *outstruct, err + } // GetAllBlsInfo is a free data retrieval call binding the contract method 0x6968b53f. @@ -4432,8 +4509,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.Call func (_SimpleBlsRegistry *SimpleBlsRegistrySession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.GetAllBlsInfo(&_SimpleBlsRegistry.CallOpts) } @@ -4443,8 +4519,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistrySession) GetAllBlsInfo() (struct { func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.GetAllBlsInfo(&_SimpleBlsRegistry.CallOpts) } @@ -4454,6 +4529,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) GetAllBlsInfo() (struc func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -4461,6 +4537,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -4483,6 +4560,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Owner() (common.Addres func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -4490,6 +4568,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ProxiableUUID(opts *bind.Call out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -4512,8 +4591,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ProxiableUUID() ([32]b func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "record", arg0) @@ -4521,10 +4599,15 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, a PublicKey []byte Pop []byte }) + if err != nil { + return *outstruct, err + } outstruct.PublicKey = *abi.ConvertType(out[0], new([]byte)).(*[]byte) outstruct.Pop = *abi.ConvertType(out[1], new([]byte)).(*[]byte) + return *outstruct, err + } // Record is a free data retrieval call binding the contract method 0x3465d6d5. @@ -4533,8 +4616,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, a func (_SimpleBlsRegistry *SimpleBlsRegistrySession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.Record(&_SimpleBlsRegistry.CallOpts, arg0) } @@ -4544,8 +4626,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistrySession) Record(arg0 common.Address) func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.Record(&_SimpleBlsRegistry.CallOpts, arg0) } @@ -4774,6 +4855,7 @@ type SimpleBlsRegistryAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*SimpleBlsRegistryAdminChangedIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -4785,6 +4867,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterAdminChanged(opts *bi // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryAdminChanged) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -4825,6 +4908,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseAdminChanged(log types if err := _SimpleBlsRegistry.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4905,6 +4989,7 @@ type SimpleBlsRegistryBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*SimpleBlsRegistryBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -4921,6 +5006,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterBeaconUpgraded(opts * // // Solidity: event BeaconUpgraded(address indexed beacon) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -4966,6 +5052,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseBeaconUpgraded(log typ if err := _SimpleBlsRegistry.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5046,6 +5133,7 @@ type SimpleBlsRegistryInitialized struct { // // Solidity: event Initialized(uint8 version) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*SimpleBlsRegistryInitializedIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -5057,6 +5145,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterInitialized(opts *bin // // Solidity: event Initialized(uint8 version) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryInitialized) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -5097,6 +5186,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseInitialized(log types. if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5178,6 +5268,7 @@ type SimpleBlsRegistryOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SimpleBlsRegistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -5198,6 +5289,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -5247,6 +5339,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseOwnershipTransferred(l if err := _SimpleBlsRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5329,6 +5422,7 @@ type SimpleBlsRegistryRegistered struct { // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterRegistered(opts *bind.FilterOpts) (*SimpleBlsRegistryRegisteredIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Registered") if err != nil { return nil, err @@ -5340,6 +5434,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterRegistered(opts *bind // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryRegistered) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Registered") if err != nil { return nil, err @@ -5380,6 +5475,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseRegistered(log types.L if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5462,6 +5558,7 @@ type SimpleBlsRegistryUnregistered struct { // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUnregistered(opts *bind.FilterOpts) (*SimpleBlsRegistryUnregisteredIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Unregistered") if err != nil { return nil, err @@ -5473,6 +5570,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUnregistered(opts *bi // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchUnregistered(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryUnregistered) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Unregistered") if err != nil { return nil, err @@ -5513,6 +5611,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseUnregistered(log types if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Unregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5593,6 +5692,7 @@ type SimpleBlsRegistryUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*SimpleBlsRegistryUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -5609,6 +5709,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUpgraded(opts *bind.F // // Solidity: event Upgraded(address indexed implementation) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -5654,6 +5755,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseUpgraded(log types.Log if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5850,8 +5952,8 @@ var UUPSUpgradeableABI = UUPSUpgradeableMetaData.ABI // UUPSUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const UUPSUpgradeableBinRuntime = `` -// UUPSUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use UUPSUpgradeableMetaData.Sigs instead. +// UUPSUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var UUPSUpgradeableFuncSigs = UUPSUpgradeableMetaData.Sigs // UUPSUpgradeable is an auto generated Go binding around a Kaia contract. @@ -6002,6 +6104,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transact(opts *bind.Transa func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _UUPSUpgradeable.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -6009,6 +6112,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -6145,6 +6249,7 @@ type UUPSUpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*UUPSUpgradeableAdminChangedIterator, error) { + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -6156,6 +6261,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterAdminChanged(opts *bind.F // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -6196,6 +6302,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseAdminChanged(log types.Log if err := _UUPSUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6276,6 +6383,7 @@ type UUPSUpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*UUPSUpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -6292,6 +6400,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterBeaconUpgraded(opts *bind // // Solidity: event BeaconUpgraded(address indexed beacon) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -6337,6 +6446,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseBeaconUpgraded(log types.L if err := _UUPSUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6417,6 +6527,7 @@ type UUPSUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*UUPSUpgradeableInitializedIterator, error) { + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -6428,6 +6539,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.Fi // // Solidity: event Initialized(uint8 version) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -6468,6 +6580,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseInitialized(log types.Log) if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6548,6 +6661,7 @@ type UUPSUpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*UUPSUpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -6564,6 +6678,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.Filte // // Solidity: event Upgraded(address indexed implementation) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -6609,5 +6724,6 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseUpgraded(log types.Log) (* if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/system_contracts/kip149/Registry.go b/contracts/contracts/system_contracts/kip149/Registry.go index 15d330407..1d995a3ac 100644 --- a/contracts/contracts/system_contracts/kip149/Registry.go +++ b/contracts/contracts/system_contracts/kip149/Registry.go @@ -57,8 +57,8 @@ var IRegistryABI = IRegistryMetaData.ABI // IRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IRegistryBinRuntime = `` -// IRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IRegistryMetaData.Sigs instead. +// IRegistryFuncSigs maps the 4-byte function signature to its string representation. var IRegistryFuncSigs = IRegistryMetaData.Sigs // IRegistry is an auto generated Go binding around a Kaia contract. @@ -209,6 +209,7 @@ func (_IRegistry *IRegistryTransactorRaw) Transact(opts *bind.TransactOpts, meth func (_IRegistry *IRegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "getAllNames") + if err != nil { return *new([]string), err } @@ -216,6 +217,7 @@ func (_IRegistry *IRegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, e out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllNames is a free data retrieval call binding the contract method 0xfb825e5f. @@ -238,6 +240,7 @@ func (_IRegistry *IRegistryCallerSession) GetAllNames() ([]string, error) { func (_IRegistry *IRegistryCaller) GetAllRecords(opts *bind.CallOpts, name string) ([]IRegistryRecord, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "getAllRecords", name) + if err != nil { return *new([]IRegistryRecord), err } @@ -245,6 +248,7 @@ func (_IRegistry *IRegistryCaller) GetAllRecords(opts *bind.CallOpts, name strin out0 := *abi.ConvertType(out[0], new([]IRegistryRecord)).(*[]IRegistryRecord) return out0, err + } // GetAllRecords is a free data retrieval call binding the contract method 0x78d573a2. @@ -267,6 +271,7 @@ func (_IRegistry *IRegistryCallerSession) GetAllRecords(name string) ([]IRegistr func (_IRegistry *IRegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (string, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "names", arg0) + if err != nil { return *new(string), err } @@ -274,6 +279,7 @@ func (_IRegistry *IRegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Names is a free data retrieval call binding the contract method 0x4622ab03. @@ -296,6 +302,7 @@ func (_IRegistry *IRegistryCallerSession) Names(arg0 *big.Int) (string, error) { func (_IRegistry *IRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -303,6 +310,7 @@ func (_IRegistry *IRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, e out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -325,8 +333,7 @@ func (_IRegistry *IRegistryCallerSession) Owner() (common.Address, error) { func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "records", arg0, arg1) @@ -334,10 +341,15 @@ func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg Addr common.Address Activation *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Activation = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Records is a free data retrieval call binding the contract method 0x3b51650d. @@ -346,8 +358,7 @@ func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg func (_IRegistry *IRegistrySession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _IRegistry.Contract.Records(&_IRegistry.CallOpts, arg0, arg1) } @@ -357,8 +368,7 @@ func (_IRegistry *IRegistrySession) Records(arg0 string, arg1 *big.Int) (struct func (_IRegistry *IRegistryCallerSession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _IRegistry.Contract.Records(&_IRegistry.CallOpts, arg0, arg1) } @@ -503,6 +513,7 @@ type IRegistryOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_IRegistry *IRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*IRegistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -523,6 +534,7 @@ func (_IRegistry *IRegistryFilterer) FilterOwnershipTransferred(opts *bind.Filte // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_IRegistry *IRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *IRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -572,6 +584,7 @@ func (_IRegistry *IRegistryFilterer) ParseOwnershipTransferred(log types.Log) (* if err := _IRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -654,6 +667,7 @@ type IRegistryRegistered struct { // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_IRegistry *IRegistryFilterer) FilterRegistered(opts *bind.FilterOpts, addr []common.Address, activation []*big.Int) (*IRegistryRegisteredIterator, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -674,6 +688,7 @@ func (_IRegistry *IRegistryFilterer) FilterRegistered(opts *bind.FilterOpts, add // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_IRegistry *IRegistryFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *IRegistryRegistered, addr []common.Address, activation []*big.Int) (event.Subscription, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -723,6 +738,7 @@ func (_IRegistry *IRegistryFilterer) ParseRegistered(log types.Log) (*IRegistryR if err := _IRegistry.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -739,7 +755,7 @@ var RegistryMetaData = &bind.MetaData{ "d393c871": "register(string,address,uint256)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x608060405234801561001057600080fd5b50610db9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d393c8711161005b578063d393c87114610129578063e2693e3f1461013e578063f2fde38b14610151578063fb825e5f1461016457600080fd5b80633b51650d1461008d5780634622ab03146100c457806378d573a2146100e45780638da5cb5b14610104575b600080fd5b6100a061009b366004610975565b610179565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100d76100d23660046109ba565b6101ce565b6040516100bb9190610a23565b6100f76100f2366004610a3d565b61027a565b6040516100bb9190610a7a565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100bb565b61013c610137366004610aee565b61030d565b005b61011161014c366004610a3d565b61062b565b61013c61015f366004610b45565b610722565b61016c6107f9565b6040516100bb9190610b60565b815160208184018101805160008252928201918501919091209190528054829081106101a457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600181815481106101de57600080fd5b9060005260206000200160009150905080546101f990610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610bc2565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b505050505081565b606060008260405161028c9190610bfc565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610302576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016102ba565b505050509050919050565b6002546001600160a01b031633146103585760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b8260008160405160200161036c9190610bfc565b604051602081830303815290604052905080516000036103bd5760405162461bcd60e51b815260206004820152600c60248201526b456d70747920737472696e6760a01b604482015260640161034f565b4383116104165760405162461bcd60e51b815260206004820152602160248201527f43616e277420726567697374657220636f6e74726163742066726f6d207061736044820152601d60fa1b606482015260840161034f565b600080866040516104279190610bfc565b90815260405190819003602001902054905060008190036104f3576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60161047d8782610c67565b5060008660405161048e9190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0388811682528382018881528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105e1565b600080876040516105049190610bfc565b90815260405190819003602001902061051e600184610d3d565b8154811061052e5761052e610d56565b90600052602060002090600202019050438160010154116105be576000876040516105599190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0389811682528382018981528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105df565b80546001600160a01b0319166001600160a01b038716178155600181018590555b505b83856001600160a01b03167f142e1fdac7ecccbc62af925f0b4039db26847b625602e56b1421dfbc8a0e4f308860405161061b9190610a23565b60405180910390a3505050505050565b60008060008360405161063e9190610bfc565b908152604051908190036020019020549050805b801561071857436000856040516106699190610bfc565b908152604051908190036020019020610683600184610d3d565b8154811061069357610693610d56565b90600052602060002090600202016001015411610706576000846040516106ba9190610bfc565b9081526040519081900360200190206106d4600183610d3d565b815481106106e4576106e4610d56565b60009182526020909120600290910201546001600160a01b0316949350505050565b8061071081610d6c565b915050610652565b5060009392505050565b6002546001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161034f565b6001600160a01b0381166107ad5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161034f565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156108c957838290600052602060002001805461083c90610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461086890610bc2565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b50505050508152602001906001019061081d565b50505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108f957600080fd5b813567ffffffffffffffff80821115610914576109146108d2565b604051601f8301601f19908116603f0116810190828211818310171561093c5761093c6108d2565b8160405283815286602085880101111561095557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561098857600080fd5b823567ffffffffffffffff81111561099f57600080fd5b6109ab858286016108e8565b95602094909401359450505050565b6000602082840312156109cc57600080fd5b5035919050565b60005b838110156109ee5781810151838201526020016109d6565b50506000910152565b60008151808452610a0f8160208601602086016109d3565b601f01601f19169290920160200192915050565b602081526000610a3660208301846109f7565b9392505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811115610a6657600080fd5b610a72848285016108e8565b949350505050565b602080825282518282018190526000919060409081850190868401855b82811015610ac557815180516001600160a01b03168552860151868501529284019290850190600101610a97565b5091979650505050505050565b80356001600160a01b0381168114610ae957600080fd5b919050565b600080600060608486031215610b0357600080fd5b833567ffffffffffffffff811115610b1a57600080fd5b610b26868287016108e8565b935050610b3560208501610ad2565b9150604084013590509250925092565b600060208284031215610b5757600080fd5b610a3682610ad2565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610bb557603f19888603018452610ba38583516109f7565b94509285019290850190600101610b87565b5092979650505050505050565b600181811c90821680610bd657607f821691505b602082108103610bf657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251610c0e8184602087016109d3565b9190910192915050565b601f821115610c6257600081815260208120601f850160051c81016020861015610c3f5750805b601f850160051c820191505b81811015610c5e57828155600101610c4b565b5050505b505050565b815167ffffffffffffffff811115610c8157610c816108d2565b610c9581610c8f8454610bc2565b84610c18565b602080601f831160018114610cca5760008415610cb25750858301515b600019600386901b1c1916600185901b178555610c5e565b600085815260208120601f198616915b82811015610cf957888601518255948401946001909101908401610cda565b5085821015610d175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d5057610d50610d27565b92915050565b634e487b7160e01b600052603260045260246000fd5b600081610d7b57610d7b610d27565b50600019019056fea26469706673582212207827db2c3fa285bade50a28b40aa6855f9e0fef4940fe6b0997050d3e392458964736f6c63430008130033", + Bin: "0x608060405234801561001057600080fd5b50610db9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d393c8711161005b578063d393c87114610129578063e2693e3f1461013e578063f2fde38b14610151578063fb825e5f1461016457600080fd5b80633b51650d1461008d5780634622ab03146100c457806378d573a2146100e45780638da5cb5b14610104575b600080fd5b6100a061009b366004610975565b610179565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100d76100d23660046109ba565b6101ce565b6040516100bb9190610a23565b6100f76100f2366004610a3d565b61027a565b6040516100bb9190610a7a565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100bb565b61013c610137366004610aee565b61030d565b005b61011161014c366004610a3d565b61062b565b61013c61015f366004610b45565b610722565b61016c6107f9565b6040516100bb9190610b60565b815160208184018101805160008252928201918501919091209190528054829081106101a457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600181815481106101de57600080fd5b9060005260206000200160009150905080546101f990610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610bc2565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b505050505081565b606060008260405161028c9190610bfc565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610302576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016102ba565b505050509050919050565b6002546001600160a01b031633146103585760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b8260008160405160200161036c9190610bfc565b604051602081830303815290604052905080516000036103bd5760405162461bcd60e51b815260206004820152600c60248201526b456d70747920737472696e6760a01b604482015260640161034f565b4383116104165760405162461bcd60e51b815260206004820152602160248201527f43616e277420726567697374657220636f6e74726163742066726f6d207061736044820152601d60fa1b606482015260840161034f565b600080866040516104279190610bfc565b90815260405190819003602001902054905060008190036104f3576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60161047d8782610c67565b5060008660405161048e9190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0388811682528382018881528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105e1565b600080876040516105049190610bfc565b90815260405190819003602001902061051e600184610d3d565b8154811061052e5761052e610d56565b90600052602060002090600202019050438160010154116105be576000876040516105599190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0389811682528382018981528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105df565b80546001600160a01b0319166001600160a01b038716178155600181018590555b505b83856001600160a01b03167f142e1fdac7ecccbc62af925f0b4039db26847b625602e56b1421dfbc8a0e4f308860405161061b9190610a23565b60405180910390a3505050505050565b60008060008360405161063e9190610bfc565b908152604051908190036020019020549050805b801561071857436000856040516106699190610bfc565b908152604051908190036020019020610683600184610d3d565b8154811061069357610693610d56565b90600052602060002090600202016001015411610706576000846040516106ba9190610bfc565b9081526040519081900360200190206106d4600183610d3d565b815481106106e4576106e4610d56565b60009182526020909120600290910201546001600160a01b0316949350505050565b8061071081610d6c565b915050610652565b5060009392505050565b6002546001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161034f565b6001600160a01b0381166107ad5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161034f565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156108c957838290600052602060002001805461083c90610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461086890610bc2565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b50505050508152602001906001019061081d565b50505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108f957600080fd5b813567ffffffffffffffff80821115610914576109146108d2565b604051601f8301601f19908116603f0116810190828211818310171561093c5761093c6108d2565b8160405283815286602085880101111561095557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561098857600080fd5b823567ffffffffffffffff81111561099f57600080fd5b6109ab858286016108e8565b95602094909401359450505050565b6000602082840312156109cc57600080fd5b5035919050565b60005b838110156109ee5781810151838201526020016109d6565b50506000910152565b60008151808452610a0f8160208601602086016109d3565b601f01601f19169290920160200192915050565b602081526000610a3660208301846109f7565b9392505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811115610a6657600080fd5b610a72848285016108e8565b949350505050565b602080825282518282018190526000919060409081850190868401855b82811015610ac557815180516001600160a01b03168552860151868501529284019290850190600101610a97565b5091979650505050505050565b80356001600160a01b0381168114610ae957600080fd5b919050565b600080600060608486031215610b0357600080fd5b833567ffffffffffffffff811115610b1a57600080fd5b610b26868287016108e8565b935050610b3560208501610ad2565b9150604084013590509250925092565b600060208284031215610b5757600080fd5b610a3682610ad2565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610bb557603f19888603018452610ba38583516109f7565b94509285019290850190600101610b87565b5092979650505050505050565b600181811c90821680610bd657607f821691505b602082108103610bf657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251610c0e8184602087016109d3565b9190910192915050565b601f821115610c6257600081815260208120601f850160051c81016020861015610c3f5750805b601f850160051c820191505b81811015610c5e57828155600101610c4b565b5050505b505050565b815167ffffffffffffffff811115610c8157610c816108d2565b610c9581610c8f8454610bc2565b84610c18565b602080601f831160018114610cca5760008415610cb25750858301515b600019600386901b1c1916600185901b178555610c5e565b600085815260208120601f198616915b82811015610cf957888601518255948401946001909101908401610cda565b5085821015610d175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d5057610d50610d27565b92915050565b634e487b7160e01b600052603260045260246000fd5b600081610d7b57610d7b610d27565b50600019019056fea264697066735822122099fb84a255e41996f83a75eaec47742d65ac95be7f938813439b5fb4deda9a0f64736f6c63430008130033", } // RegistryABI is the input ABI used to generate the binding from. @@ -747,10 +763,10 @@ var RegistryMetaData = &bind.MetaData{ var RegistryABI = RegistryMetaData.ABI // RegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const RegistryBinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c8063d393c8711161005b578063d393c87114610129578063e2693e3f1461013e578063f2fde38b14610151578063fb825e5f1461016457600080fd5b80633b51650d1461008d5780634622ab03146100c457806378d573a2146100e45780638da5cb5b14610104575b600080fd5b6100a061009b366004610975565b610179565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100d76100d23660046109ba565b6101ce565b6040516100bb9190610a23565b6100f76100f2366004610a3d565b61027a565b6040516100bb9190610a7a565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100bb565b61013c610137366004610aee565b61030d565b005b61011161014c366004610a3d565b61062b565b61013c61015f366004610b45565b610722565b61016c6107f9565b6040516100bb9190610b60565b815160208184018101805160008252928201918501919091209190528054829081106101a457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600181815481106101de57600080fd5b9060005260206000200160009150905080546101f990610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610bc2565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b505050505081565b606060008260405161028c9190610bfc565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610302576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016102ba565b505050509050919050565b6002546001600160a01b031633146103585760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b8260008160405160200161036c9190610bfc565b604051602081830303815290604052905080516000036103bd5760405162461bcd60e51b815260206004820152600c60248201526b456d70747920737472696e6760a01b604482015260640161034f565b4383116104165760405162461bcd60e51b815260206004820152602160248201527f43616e277420726567697374657220636f6e74726163742066726f6d207061736044820152601d60fa1b606482015260840161034f565b600080866040516104279190610bfc565b90815260405190819003602001902054905060008190036104f3576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60161047d8782610c67565b5060008660405161048e9190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0388811682528382018881528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105e1565b600080876040516105049190610bfc565b90815260405190819003602001902061051e600184610d3d565b8154811061052e5761052e610d56565b90600052602060002090600202019050438160010154116105be576000876040516105599190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0389811682528382018981528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105df565b80546001600160a01b0319166001600160a01b038716178155600181018590555b505b83856001600160a01b03167f142e1fdac7ecccbc62af925f0b4039db26847b625602e56b1421dfbc8a0e4f308860405161061b9190610a23565b60405180910390a3505050505050565b60008060008360405161063e9190610bfc565b908152604051908190036020019020549050805b801561071857436000856040516106699190610bfc565b908152604051908190036020019020610683600184610d3d565b8154811061069357610693610d56565b90600052602060002090600202016001015411610706576000846040516106ba9190610bfc565b9081526040519081900360200190206106d4600183610d3d565b815481106106e4576106e4610d56565b60009182526020909120600290910201546001600160a01b0316949350505050565b8061071081610d6c565b915050610652565b5060009392505050565b6002546001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161034f565b6001600160a01b0381166107ad5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161034f565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156108c957838290600052602060002001805461083c90610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461086890610bc2565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b50505050508152602001906001019061081d565b50505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108f957600080fd5b813567ffffffffffffffff80821115610914576109146108d2565b604051601f8301601f19908116603f0116810190828211818310171561093c5761093c6108d2565b8160405283815286602085880101111561095557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561098857600080fd5b823567ffffffffffffffff81111561099f57600080fd5b6109ab858286016108e8565b95602094909401359450505050565b6000602082840312156109cc57600080fd5b5035919050565b60005b838110156109ee5781810151838201526020016109d6565b50506000910152565b60008151808452610a0f8160208601602086016109d3565b601f01601f19169290920160200192915050565b602081526000610a3660208301846109f7565b9392505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811115610a6657600080fd5b610a72848285016108e8565b949350505050565b602080825282518282018190526000919060409081850190868401855b82811015610ac557815180516001600160a01b03168552860151868501529284019290850190600101610a97565b5091979650505050505050565b80356001600160a01b0381168114610ae957600080fd5b919050565b600080600060608486031215610b0357600080fd5b833567ffffffffffffffff811115610b1a57600080fd5b610b26868287016108e8565b935050610b3560208501610ad2565b9150604084013590509250925092565b600060208284031215610b5757600080fd5b610a3682610ad2565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610bb557603f19888603018452610ba38583516109f7565b94509285019290850190600101610b87565b5092979650505050505050565b600181811c90821680610bd657607f821691505b602082108103610bf657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251610c0e8184602087016109d3565b9190910192915050565b601f821115610c6257600081815260208120601f850160051c81016020861015610c3f5750805b601f850160051c820191505b81811015610c5e57828155600101610c4b565b5050505b505050565b815167ffffffffffffffff811115610c8157610c816108d2565b610c9581610c8f8454610bc2565b84610c18565b602080601f831160018114610cca5760008415610cb25750858301515b600019600386901b1c1916600185901b178555610c5e565b600085815260208120601f198616915b82811015610cf957888601518255948401946001909101908401610cda565b5085821015610d175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d5057610d50610d27565b92915050565b634e487b7160e01b600052603260045260246000fd5b600081610d7b57610d7b610d27565b50600019019056fea2646970667358221220a3f6e37a5b67f7bb6210f0cfef969cb855bda4c8699bb46ed4a49ee814b7765864736f6c63430008130033` +const RegistryBinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c8063d393c8711161005b578063d393c87114610129578063e2693e3f1461013e578063f2fde38b14610151578063fb825e5f1461016457600080fd5b80633b51650d1461008d5780634622ab03146100c457806378d573a2146100e45780638da5cb5b14610104575b600080fd5b6100a061009b366004610975565b610179565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100d76100d23660046109ba565b6101ce565b6040516100bb9190610a23565b6100f76100f2366004610a3d565b61027a565b6040516100bb9190610a7a565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100bb565b61013c610137366004610aee565b61030d565b005b61011161014c366004610a3d565b61062b565b61013c61015f366004610b45565b610722565b61016c6107f9565b6040516100bb9190610b60565b815160208184018101805160008252928201918501919091209190528054829081106101a457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600181815481106101de57600080fd5b9060005260206000200160009150905080546101f990610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610bc2565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b505050505081565b606060008260405161028c9190610bfc565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610302576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016102ba565b505050509050919050565b6002546001600160a01b031633146103585760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b8260008160405160200161036c9190610bfc565b604051602081830303815290604052905080516000036103bd5760405162461bcd60e51b815260206004820152600c60248201526b456d70747920737472696e6760a01b604482015260640161034f565b4383116104165760405162461bcd60e51b815260206004820152602160248201527f43616e277420726567697374657220636f6e74726163742066726f6d207061736044820152601d60fa1b606482015260840161034f565b600080866040516104279190610bfc565b90815260405190819003602001902054905060008190036104f3576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60161047d8782610c67565b5060008660405161048e9190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0388811682528382018881528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105e1565b600080876040516105049190610bfc565b90815260405190819003602001902061051e600184610d3d565b8154811061052e5761052e610d56565b90600052602060002090600202019050438160010154116105be576000876040516105599190610bfc565b90815260408051602092819003830181208183019092526001600160a01b0389811682528382018981528354600180820186556000958652959094209251600290940290920180546001600160a01b03191693909116929092178255519101556105df565b80546001600160a01b0319166001600160a01b038716178155600181018590555b505b83856001600160a01b03167f142e1fdac7ecccbc62af925f0b4039db26847b625602e56b1421dfbc8a0e4f308860405161061b9190610a23565b60405180910390a3505050505050565b60008060008360405161063e9190610bfc565b908152604051908190036020019020549050805b801561071857436000856040516106699190610bfc565b908152604051908190036020019020610683600184610d3d565b8154811061069357610693610d56565b90600052602060002090600202016001015411610706576000846040516106ba9190610bfc565b9081526040519081900360200190206106d4600183610d3d565b815481106106e4576106e4610d56565b60009182526020909120600290910201546001600160a01b0316949350505050565b8061071081610d6c565b915050610652565b5060009392505050565b6002546001600160a01b031633146107685760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161034f565b6001600160a01b0381166107ad5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161034f565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156108c957838290600052602060002001805461083c90610bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461086890610bc2565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b50505050508152602001906001019061081d565b50505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108f957600080fd5b813567ffffffffffffffff80821115610914576109146108d2565b604051601f8301601f19908116603f0116810190828211818310171561093c5761093c6108d2565b8160405283815286602085880101111561095557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561098857600080fd5b823567ffffffffffffffff81111561099f57600080fd5b6109ab858286016108e8565b95602094909401359450505050565b6000602082840312156109cc57600080fd5b5035919050565b60005b838110156109ee5781810151838201526020016109d6565b50506000910152565b60008151808452610a0f8160208601602086016109d3565b601f01601f19169290920160200192915050565b602081526000610a3660208301846109f7565b9392505050565b600060208284031215610a4f57600080fd5b813567ffffffffffffffff811115610a6657600080fd5b610a72848285016108e8565b949350505050565b602080825282518282018190526000919060409081850190868401855b82811015610ac557815180516001600160a01b03168552860151868501529284019290850190600101610a97565b5091979650505050505050565b80356001600160a01b0381168114610ae957600080fd5b919050565b600080600060608486031215610b0357600080fd5b833567ffffffffffffffff811115610b1a57600080fd5b610b26868287016108e8565b935050610b3560208501610ad2565b9150604084013590509250925092565b600060208284031215610b5757600080fd5b610a3682610ad2565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610bb557603f19888603018452610ba38583516109f7565b94509285019290850190600101610b87565b5092979650505050505050565b600181811c90821680610bd657607f821691505b602082108103610bf657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251610c0e8184602087016109d3565b9190910192915050565b601f821115610c6257600081815260208120601f850160051c81016020861015610c3f5750805b601f850160051c820191505b81811015610c5e57828155600101610c4b565b5050505b505050565b815167ffffffffffffffff811115610c8157610c816108d2565b610c9581610c8f8454610bc2565b84610c18565b602080601f831160018114610cca5760008415610cb25750858301515b600019600386901b1c1916600185901b178555610c5e565b600085815260208120601f198616915b82811015610cf957888601518255948401946001909101908401610cda565b5085821015610d175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d5057610d50610d27565b92915050565b634e487b7160e01b600052603260045260246000fd5b600081610d7b57610d7b610d27565b50600019019056fea264697066735822122099fb84a255e41996f83a75eaec47742d65ac95be7f938813439b5fb4deda9a0f64736f6c63430008130033` -// RegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use RegistryMetaData.Sigs instead. +// RegistryFuncSigs maps the 4-byte function signature to its string representation. var RegistryFuncSigs = RegistryMetaData.Sigs // RegistryBin is the compiled bytecode used for deploying new contracts. @@ -922,6 +938,7 @@ func (_Registry *RegistryTransactorRaw) Transact(opts *bind.TransactOpts, method func (_Registry *RegistryCaller) GetActiveAddr(opts *bind.CallOpts, name string) (common.Address, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "getActiveAddr", name) + if err != nil { return *new(common.Address), err } @@ -929,6 +946,7 @@ func (_Registry *RegistryCaller) GetActiveAddr(opts *bind.CallOpts, name string) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetActiveAddr is a free data retrieval call binding the contract method 0xe2693e3f. @@ -951,6 +969,7 @@ func (_Registry *RegistryCallerSession) GetActiveAddr(name string) (common.Addre func (_Registry *RegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "getAllNames") + if err != nil { return *new([]string), err } @@ -958,6 +977,7 @@ func (_Registry *RegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, err out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllNames is a free data retrieval call binding the contract method 0xfb825e5f. @@ -980,6 +1000,7 @@ func (_Registry *RegistryCallerSession) GetAllNames() ([]string, error) { func (_Registry *RegistryCaller) GetAllRecords(opts *bind.CallOpts, name string) ([]IRegistryRecord, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "getAllRecords", name) + if err != nil { return *new([]IRegistryRecord), err } @@ -987,6 +1008,7 @@ func (_Registry *RegistryCaller) GetAllRecords(opts *bind.CallOpts, name string) out0 := *abi.ConvertType(out[0], new([]IRegistryRecord)).(*[]IRegistryRecord) return out0, err + } // GetAllRecords is a free data retrieval call binding the contract method 0x78d573a2. @@ -1009,6 +1031,7 @@ func (_Registry *RegistryCallerSession) GetAllRecords(name string) ([]IRegistryR func (_Registry *RegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (string, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "names", arg0) + if err != nil { return *new(string), err } @@ -1016,6 +1039,7 @@ func (_Registry *RegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Names is a free data retrieval call binding the contract method 0x4622ab03. @@ -1038,6 +1062,7 @@ func (_Registry *RegistryCallerSession) Names(arg0 *big.Int) (string, error) { func (_Registry *RegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -1045,6 +1070,7 @@ func (_Registry *RegistryCaller) Owner(opts *bind.CallOpts) (common.Address, err out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -1067,8 +1093,7 @@ func (_Registry *RegistryCallerSession) Owner() (common.Address, error) { func (_Registry *RegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { var out []interface{} err := _Registry.contract.Call(opts, &out, "records", arg0, arg1) @@ -1076,10 +1101,15 @@ func (_Registry *RegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg1 Addr common.Address Activation *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Activation = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Records is a free data retrieval call binding the contract method 0x3b51650d. @@ -1088,8 +1118,7 @@ func (_Registry *RegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg1 func (_Registry *RegistrySession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _Registry.Contract.Records(&_Registry.CallOpts, arg0, arg1) } @@ -1099,8 +1128,7 @@ func (_Registry *RegistrySession) Records(arg0 string, arg1 *big.Int) (struct { func (_Registry *RegistryCallerSession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _Registry.Contract.Records(&_Registry.CallOpts, arg0, arg1) } @@ -1224,6 +1252,7 @@ type RegistryOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Registry *RegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*RegistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -1244,6 +1273,7 @@ func (_Registry *RegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterO // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Registry *RegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *RegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -1293,6 +1323,7 @@ func (_Registry *RegistryFilterer) ParseOwnershipTransferred(log types.Log) (*Re if err := _Registry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1375,6 +1406,7 @@ type RegistryRegistered struct { // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_Registry *RegistryFilterer) FilterRegistered(opts *bind.FilterOpts, addr []common.Address, activation []*big.Int) (*RegistryRegisteredIterator, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -1395,6 +1427,7 @@ func (_Registry *RegistryFilterer) FilterRegistered(opts *bind.FilterOpts, addr // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_Registry *RegistryFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *RegistryRegistered, addr []common.Address, activation []*big.Int) (event.Subscription, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -1444,5 +1477,6 @@ func (_Registry *RegistryFilterer) ParseRegistered(log types.Log) (*RegistryRegi if err := _Registry.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/system_contracts/misc/credit.go b/contracts/contracts/system_contracts/misc/credit.go index 27ba8fdd7..ccd3f8e74 100644 --- a/contracts/contracts/system_contracts/misc/credit.go +++ b/contracts/contracts/system_contracts/misc/credit.go @@ -46,15 +46,15 @@ var CypressCreditABI = CypressCreditMetaData.ABI // CypressCreditBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CypressCreditBinRuntime = `6080604052600436106200004e5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663b2ec005e811462000053578063cd838f0f14620000e3575b600080fd5b3480156200006057600080fd5b506200006b620000fb565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620000a75781810151838201526020016200008d565b50505050905090810190601f168015620000d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015620000f057600080fd5b506200006b62000125565b606080620b1c0060405190810160405280620b1bd38152602001620005d5620b1bd3913992915050565b6060806104c06040519081016040528061048881526020016200014d6104889139929150505600416e64726577204b696d2c20416e6479205368696e2c2041757374696e2042726f776e2c20426f6e677461652059756e2c20426f7261204b616e672c20426f796f756e67204b696d2c204279756e676368756c204c65652c2043686f6168204a756e672c20436872697374696e65204c65652c20446165776f6f2043686f2c20446f6e676877616e204b776f6e2c20446f6e676a75204c65652c2045726963204b696d2c20457569796f756c204b696d2c20476f756e204b77616b2c204b75776f6e2052612c204777616e67696c20576f6e2c204865654a6165204d796f756e672c20486f73756e672048616e2c20486f796f756e67204b616e672c20487965776f6e204c696d2c2048796f6a696e204f682c204879756e672d4b79752043686f692c204879756e6a696e204c65652c204879756e6d696e2048616e2c2049616e205061726b2c2049726520536f6e672c204a616573756e2048616e2c204a6165776f6e2048616e2c204a6165776f6f204c65652c204a656e73656e205961702c204a656f6e67686f204e61682c204a656f6e676b79756e204f682c204a692053756e67204c696d2c204a69656877616e20536f6e672c204a6965756e204b696d2c204a6945756e204c65652c204a696d696e204b696d2c204a696e61204b696d2c204a696e68756e205368696e2c204a69776f6e204261652c204a69776f6e205279752c204a6f686e2043686f2c204a6f6e672047756e204c65652c204a6f6e67687569204c65652c204a6f6f6e73756e67204c65652c204a6f736570682048756e672c204a7520487965204b696d2c204a756e6768756e204875722c204a756e676879756e204b696d2c204a756e676879756e204c65652c204a756e68656520576f6f2c204a756e686f2043686f2c204a756e73696320596f756e2c204b694a756e2053756e672c204b79756e6720546165204e6f2c204b79756e674b6f6f204b696d2c204b79756e677570204b696d2c204d69204a656f6e67205061726b2c204d696e6a6165204c65652c204d696e6a6565204b696d2c204d696e7375204b696d2c204d79656f6e676a696e204a656f6e672c204e616d73656f6b204261656b2c2053616e67656f6e204261652c2053616e676d696e2053656f2c205365616e204b696d2c2053656f6e676877616e2043686f2c205365756e676368616e205368696e2c205369686f2043686f75652c20536f6a696e204b696d2c20536f6f204877616e204b696d2c20536f6f6e20496c20486f6e672c2053756b457569204c696d2c205461656b65756e204b696d2c20556e6f204c65652c20576f6f6a696e204c65652c205965656879756e204368756e2c2059656f6c6d6165204b696d2c20596572616e67205061726b2c205947204b616e672c205969726579205375682c20596f6e67686f2043686f692c20596f6e674a6f6f6e204b696d2c20596f736869205368696e2c20596f756e676a756e204c696d2c20596f756e676b7975205061726b2c20596f756e676d696e205061726b2c2059756e61204e6f682c2059756e73756b2053656f2c2059756e7461656b204c696d2c205a616368617279204b65617473646174613a696d6167652f6a7065673b6261736536342c2f396a2f34514159525868705a67414153556b714141674141414141414141414141414141502f734142464564574e7265514142414151414141414b4141442f34514f4e6148523063446f764c32357a4c6d466b62324a6c4c6d4e7662533934595841764d5334774c7741385033687759574e725a585167596d566e6157343949752b377679496761575139496c63315454424e63454e6c61476c49656e4a6c5533704f56474e3661324d355a43492f5069413865447034625842745a585268494868746247357a4f6e6739496d466b62324a6c4f6d357a4f6d316c64474576496942344f6e68746348527250534a425a4739695a53425954564167513239795a5341314c6a5974597a457a4f4341334f5334784e546b344d6a5173494449774d5459764d446b764d5451744d4445364d446b364d44456749434167494341674943492b494478795a475936556b5247494868746247357a4f6e4a6b5a6a30696148523063446f764c336433647935334d793576636d63764d546b354f5338774d6938794d6931795a47597463336c75644746344c57357a4979492b494478795a4759365247567a59334a706348527062323467636d526d4f6d46696233563050534969494868746247357a4f6e68746345314e50534a6f644852774f693876626e4d7559575276596d5575593239744c336868634338784c6a4176625730764969423462577875637a707a64464a6c5a6a30696148523063446f764c32357a4c6d466b62324a6c4c6d4e7662533934595841764d5334774c334e556558426c4c314a6c63323931636d4e6c556d566d4979496765473173626e4d366547317750534a6f644852774f693876626e4d7559575276596d5575593239744c336868634338784c6a4176496942346258424e54547050636d6c6e6157356862455276593356745a57353053555139496e68746343356b615751364d44417a4d545130526b45334f544d304d5446464f5468474f445642526b51334e3055324d3055354e6a5569494868746345314e4f6b5276593356745a57353053555139496e68746343356b6157513651544e4651544d304e7a513351546c454d5446464f546b79516a4a454e4467314e455a43526b5244517a5969494868746345314e4f6b6c7563335268626d4e6c53555139496e6874634335706157513651544e4651544d304e7a4d3351546c454d5446464f546b79516a4a454e4467314e455a43526b5244517a59694948687463447044636d566864473979564739766244306951575276596d5567554768766447397a61473977494578705a326830636d3976625342446247467a63326c6a494467754d7934784943684e59574e70626e527663326770496a3467504868746345314e4f6b526c636d6c325a575247636d397449484e30556d566d4f6d6c7563335268626d4e6c53555139496e687463433570615751364e6a4d774d5441774e546b744e474a6d5a6930304e5445324c5745304e4451744e4755324d54526c4d324e694e7a49304969427a64464a6c5a6a706b62324e316257567564456c4550534a34625841755a476c6b4f6a597a4d4445774d4455354c5452695a6d59744e4455784e6931684e4451304c54526c4e6a45305a544e6a596a63794e434976506941384c334a6b5a6a70455a584e6a636d6c7764476c76626a3467504339795a475936556b5247506941384c336736654731776257563059543467504439346347466a61325630494756755a4430696369492f50762f75414135425a4739695a51426b774141414141482f327743454142515145426b5347536358467963794a68386d4d69346d4a69596d4c6a34314e5455314e54354551554642515546425245524552455245524552455245524552455245524552455245524552455245524552455245514246526b5a494277674a6867594a6a596d49435932524459724b7a5a45524552434e554a4552455245524552455245524552455245524552455245524552455245524552455245524552455245524552455245524552502f41414245494274514f58414d4249674143455145444551482f7841434d41414143417745424151414141414141414141414141414241674144424155474277454241414141414141414141414141414141414141414142414141514d4342414d4642674d4841774d434241454e41514152416945444d55455342464668496e47424d684d46384a476873554955776446533466466963694d56426f4b534d304e544a4b4b79776d4e7a4e42625367355069524355316f31526b38724e304551454141414141414141414141414141414141414141412f396f4144414d424141495241784541507744306534394f6a633672526c617548366f66694d4679647a752f55646d645632486d572f315775412f5654396939434c6f4b4c695645486d4c66726b727656474e4f647976755a6172587138376c6442412f6d54656f66342f61334a383279664b752f714742375677747a6176374b656e636736637078384a51643862346b73485050556a5a333074546b4d46784c647a67667957693165315345446e5642317439636a63743649316c303976465a37317732592b6130694d4f6e4938383032386d596b52437965666373485843726e716a78392b61412f334b344f754d695165616533367242394f354d344439514c6a344b53326533336831325435643571776c672f5a2b49574b35596e6236626f303838696739464461777552313237737a4534474d36496e59304c546d3535727a64693766326b784b784a6f2f5648364a666c3268647a5a2b75574c353875372f5475484b5742374367796269397539696636774e79775072746d6f3752376471315772397265577a4f795264694d767248743856317146636a65656857726b764f32784e6938507174304237523763304377744344797431623663776e3237452b7a7249643763323068483147486c79776a754c66685038414d3374324c6f3234463954696571506a6a67674a6f654b6c5252527a676a34616f4b5a6d504b715154635a646973616c6564565649507a51474a344448357175354553724b682f554d55356a376330342f55674676653364764c546465634f49485575685a7578765231774c686332584c425665566f4f7530644d75497a375167376d4b4475734e72314453304c3430483958306e3235726230732b52775153524f43423571537268696f487a51544e6b4968695751657159314342577a4e464764516d6c45576f334241687230344b4538457561616465704172736f59444353674230393642693335494759597571347561464d39577a51356a48386b41675165614535536f454e6572464e325a6f4b3578457346564956314d797548546a785250416f4d59682b704959744a75533033494531474372497a6442544b7234643668624432436b773147716c306e4f726f48713673444d715157714d766b6f4a4f417943386e556d676631594b6f50686e67707236574b4379544e70507654536b3853416b62564b7543676a30763845475755534258484e5a7274674e56624a797a2f414156457a45306a6d677744622f3149544747724c4a64386450657556456172674d636d433662676841354753684f434c456a6d67496b426e666d67416b464742384b4e5851384e55426e4854696c6273545177436864424b355966676f4a4d377153625075356f613348486b674563576a373063456f654d6c4b534b426f31624e4f4a68744d6b676933656d4e4367346671506f55784c37725a644d6855776a3736666b745070582b512b6152743931487937672b7242322f46644d48792b592f4e5966552f5362572f692b463065475146657958464232546231787268394a57573743554b41305a65653250717437307151323238424e72364a34742b59355968657074586f626947754651654761444d424a325378424230725264744878774863732b49664a424269706c586a2b616763454d6a4a75776f455a2f783745386e6b672f47696b53636b454c5a357064496473465948664a4c49743467676d415a526f6b63314a44757a514a514d4378716b4d6e6f61312b4b74385666324b6935466f734d55424856486d6d6655454158442b784b636548326f55414d6458596d48414931616d48424b3731393643596c5a397a45543748576c7739566b76795a69613430514e62366f6b5a6f3673765a6c4c64526a6a6b707170326f444950676c4d4446774d30352b435351657143752f6168666a706d484b3465357353322f694f714a384a62344c766b694b7276516865686f6d4b4642776f3659304e442b436c756e53564e35745a375138625a384a2f4e4a627645455a76386b4638424c7556747541414a6f57565467654a395753595a6d4a376b446a71426c4a4f4148664e5651636a546b6e692f69514f446e69554a366d61444f2b4a536556694530492f5449566569437758484a46482b665075514d745452696573706263414479343843454a786a41754d6b46756b786f344a537a4f6f5571475531444e4d2b76567a795153414d7361596f6a71424f536b67525531556d7a4d314541304546303362547353487044642f4e4e70627349515473554e613542454e375a7061447139716f4845414470656853784452306b39512b536378656a3969465157507843415053672f656a704278722f436c75526f2b58384b623852336f46494f455178566a6d4965507379516e53775452415a30415967456e685570684c676c6364685267476f52324944454e2b4341714f6150617047655237765949496139544b4569574c4b4f394572646942784544707a537a69306f4142772f77546d76636f4357644142502b725a7a363172395165356650387441736e3177624858466a383171395470754b4775675a494d73597434517070474f6167364f7a696f44394f4951445141564a686a7150747a557144524e4f52384b43766c6979476e6a3766696d424c757a4a644c5639716f474d70437642583744636e59534d432f6b54503841736b6548492b334f6e55345354363648503655477631725a5473792b3832346155574d322b66357270656e623062713347354841304d65457632724c365875784d44625869354c2b5753504648683268632b2f5a2f732b374679412f6f584d75484c75784344743776627366506a2f714834724f616c77756a59767776447038507a574f375946673652344468795042416b57516c45344242794d4b7145634d55416b44476a71775330754d447853477465534d435730795151754d6b7477644e526d6e2f6d526d5877346f4e553677635963453048634f614b7545796266767756734b68384547532f38413838354e68474b70412b437533455235736e77494372384d5345415943505a37304951456858765535785467487844456f43413466686768703745524a6d504769685959344f676a366165394b42394c6355344e61594a5231596f46695a412b46504c6d6c6436423077633051514848566b6f446d6f316572465358746b67494a4d7159494846785245594d677a2b35414431462f6c3764794d714f4578695975707172584e4147346675526550656752523033384d55456c5476533657654b4d673572697945546c6d6750553163454258444a46794d4d45416138776773744f5a7130686973396d685959713975475343725834705056317739315a38726333473845794342382f6975334841365131566a3952746d4e737a7a742f45494f637746514f35534d534532754e77412f36734d557a30356f4247325a46386770703638614e34555a526356703249316a4b6d576642413047414166443239736b33685056334a59326e63386b37616f6f466379484f57614142695478526254674361634649554c797a7751485572686a7a564241314f77624e53334d6739574344544e33635a70707a59436e46567963785574744b414951564575583430526830715844706b59706f56495a41534146414b366d7077556b52395835715578344941354e4d457a31314a532b4c312f42454455514d69674c456e48326f69506745474f52524d534b73675770787a526f613563385544513969624873514c45524c6f6e2b4653513146335a454f2f56676757325344785242645173634f35426d44494a4633716a4b7145754f536d6259636b45663470694b7043774c4d6f545867554130765876523136797a4d6a7a4344367371494c62662f774274635074696e39486d323476782f56706b4f774f46574a67624f5a2f6948355651325246726557737a4f334b3337757042763266544f39444f4e77792f334d555057626572625038416f6c47583466696e6a41446458496a3634526b6535776d3339767a64724f504c35494d73474e386171696e764379626750755a6a6956726845432b466b756769374d6e39534247776b4f35434d50704f495231414f492f74526a554f4b6c41745830685155713145477a696a4b4f71726f414a4848696f532f545456324a6a42384d6679535a4f55437a6f444839377141633038336a68584e4c4d596e366d5a416a56654f4878514c6e48465070494571316246566d5a795150746a2f55694a654b71364870314c4168774d766d756674357665416c6e6d756836624c2f787a2f7744556d50695547725379456a5276594b6157554d615651562f446e37424e7948742b4b66446d6c385056484641437a4d464e4a6a52716f4150553154537252416e6854366c434f39412b4c326f674849344941426a53715a6f67766b6a71667849456c45507a55624d2b7a4b63584a524c3665724a424f71494347464d4854454f794578586d5543774f7175534a6c4945344d6d31444c424a7061736b42365a445667686f303152706a77793570694b4f505a30436a4a306a6a4e507063314b6d6e3830414c385557487578526a7234346f5a506d676a675956533659314f614a6e5647504751514b43454343635535697877516b4f495145784f4e454d79464e4e574f667a5230365870334946306c4d494455346f324b6a4530474b4862554941346576636d2b704142366c454d507a51432f49615365533433686b57707a585875644e71664854526365576e575877396e514e4151315a71786d6569574c4768376d526a58704f53434773554249757752656866422f636731586b48514d7739366d7251475445734178532b58674d3041636e714f61484c4a4e4a34316f51554d4472515a397942354d78672b6e2f334c303933706b527843387666687168537459662b35656d764f5a4f50594946786f67373459705862697242536851434a64595057356446762b5a64494470584f395a6b4447304a42757166794b446e544453496758346f327871596e784b4e79354a35436e42414d446f6b672b6d734d79704b41786a564d4a6b5564425750344d4570457056686a6d6a475244766746437a557a51566c32546c33716748504941494d59766d67576a4f315571736c42687a4b714e615277506567557930424b3944712f656e4d4b4e54386c57416161734f53435a5a686e596331584a704236366b37456c326f6a62676274794e674e716b6450646d657742423050534c645475546d4e4d657a4e646e7065696f74525952694d47777037565634786f55446962446d7164764c55387543746a463447557578553254716b526c3830473232354469696b677770696862627936596f33496b5166456f4d6430395443722f42613745757254795757375261747641796a71776c496641494c784551366a6b7544616a2f637435716b50366476716c3235426250574e364c46735734314a7956337032302b307343502f556c3154504d2f6b673253715743716e324a3951514963386b46594c467972497942716b4964435853655343776c7644566c5476584e6951503841442f376b5253707847437133424a673263707770336f4e76626b704c6b715a7a716a46385367636c797877544d58717169456b6f695742492b4344524773554d4d6c53626573556e4964374b76794a414e473550336f4e636542517777717378743367656934663951536d33755a53726359494e62505245467535594a3274304d626a397a4a744736384f704274635a6c43584164367774756f313142304a53336e384b446f48717855504b697732353773554969684b3576592f5441747a51624a592b324b596971785375377558306765346f2b6675484452424b44577a6f457456316b473676412b44386b66754c77643434494e6d71694150354c4a35317755416364763746507562677235662b3142705973777a526b4746566c6c76714e3563766370393958774675354271614c38386b5834724c39374934327164714239536a4531482b327144535a434c6355336843776e3143456d365a2f7743784e3935626c6c4c397944597a6e7453673170565a78767251786f704866576e4e55476c6d39716f4e5853566c2f75466e7535492f64325a6544556731614d307377797047377459456c315a3538476f676341544345577978532b66627a494355587265426c5242615735594d6a434c4b6b626d334b73565a35676c3455423031352f424d59695371317978772b5077514e79574761437955576f4b6f4e3730676d5866356f43656f754b42413756636a42414676636b69354b45675357775157616f74314b6e6358785a6a4b37644c57342f486b457830323447354b544159386c3466316a31633736576948545a69656b632b4b44483668765a37323462747a2f534f4134493750597a334d6d776a6e4c494a6470746a754a746c6d752f434d49434d526767754559576f4333436b52382b4b496954324d54376c43412f74676d715a4453663342416263544c6b697a683378524148656d59554c476d614268483656646f59636677565a703370345543434767594a6d626a2b616b59354f6d41357367676a315a70757a4252736f496a6f476b346f49486a4c7455492b4b6366785970774d336441735135526941376a324b57557450494a6d6f41676e5970454d555737307836716b494667354c70716b63457a447553446963766c336f476c6734524a5145676679554846415445397a493955656d696b526b6a486763416742426b577a54533453554661596f67653941674142356f7935667554616175464163786d676746464c7046754a6c4f6b555a6c6735584639524a755430545053426767352f7266714e363762614852614a2b6e475334456856646a31473147466834427455774f35636b4d63616f4b3552616764335a65746a4161496759615268324c7a42683951354c3155592f30344e6c434c3936446a2b7256495043414335624555585739544c55686d467953477766464172646c437657577a71684751624265554b3952596b39714150444e426d337354703456584f4d477278585333774d5748376c6c6a4453634b494d356a6f4e525258574e3563326f306948542f456e387656562f626d71744a4a306c426638413369654559674d6a443153525a325757646b52444243646c777a64584a42722f414c7a4b4f454b5a46503841336b74716c48466330327941544c6c373159625142456a55384f434461665675683278344a54363250706936794333435136676b386f437144666339622b714e7653565448317877386f55576679596775437751466b4f372f7551626836754b4e416849665770346165355a4932744a726a2b4351326562397144615058446a70566e39386a7247694e426c785850386d4178797a55686242464d656144662f41482b762f473437554c6e72354a364c555279657661736337585470474b506b764a6d41346f4e66393567442f7741542f7744357a396949396230792f77434d784861363535327268503841625a357567326e31317046344d45503731585549666773766c6e36366875354479364273546b67335139597178684548745451395a746b2b42792f5a52637a79343665422b614559617a6f51646158726b442f3075387a56637657496b50707778616f584f38754144444645573369353745485348724e736e775934707637766148557a4d755549635544626a775164622b39575848547a772b6168395a7478367065356c79685a66334961617331554859507264764d422b555566377862634671386c7854626b4431427558464746707a5833494f78503171336c4753683959694134642b476c63574e6f7972494d33765465587148556737457657374d6e4a456d2b4b582b396266426a33426975544f33514f703555644a49784b447266336d797a7869782f694b622b3957577150396934676954773979625147634e32664e42325a657232506f6a4e76346c582f654c484d6674584a3052794655756942614e65317632494f312f654c424944462f345535395673436f4531784a5758425a547954494d3644752f3361334d4f4b6471535871566b56314c6a655547306c51327761634f4e45486148716c675370347561654871646952307839394b4c67614342716f6a43337839767951643248717471556d44392b425150716476463177784453576a676a4730427950424233592b726266442b6f61596a4247587164687150325358436c717a5074324b5265554f50636739424866576d4a4576394b42395373687778703142656376514772554d4f45654b4d6f6b682f44586a564236502b366263304a597367642f61784c386c77413873536c4d534b794e5548705076374c365a536274545333646e39596f655338774e52614d38454c625334647944306b747a626e5553642f705478337472487735564b38324961637677526e6231593444414950536664326638417577484949783357337838324e656138787045545749777a5431597541527951656d473474476d727664487a4c63693376366c355a39585363433248464a6f474d766567395463765767343142515837654a6c58344c7a41704678683856416363554871786574794461675573373173564a4134727930535448465363544574566b48712f757259715a785a567a33646d4e444b523746356379754478423378544355706a534d506b516739554e78617564494a3439517756707543564f48365a427a7a586b626c32374d434f6f365237597175732b53443138376b58785a4158596b6b59503841784c79766d5841617a4947576151584a6b4569524c4950577976786a487841454a7650686f6256462b3769764a666358414b6e46487a377276712f394b44364339533673673437465643516b4b4a744c556632346f4c6b6c3233473548524d4f446b633159684944484e42777431364247547a326374422f526a452f6b75544d334c6432454c6b64463045644a704535466a2b3165746174454c3169317549366238524d6330484e335a36676661717854347353572b6b4f744f367457396c4f467545576850566e6e6b6a7362384c55684357645839716f4f664c5649394e75344a4443516856616f6275384f6e6332546367324f697137556239764635562f6850354a765068484c344d6734453972596e3157424b4d73476b4a4c6e546a4f32644d374d794d2b6e57463741336f5948355a7052647478445266745a42353361626e666250384134375679646e39456f34646878586f4e747637642f45474576307a44496664517a316f4863322b42516135614a67786b78427842775850742b6d5132647a7a4e7649786a4c785773594873344b33376d31674166636e68656863384d5343675759596c2b4b7150365764577a654944416156566f64692b4b424e5566636b457a4c484f716841376b5930715069676d75725a714f546a564541396a6854342f46414363472f61704b57544935736b3068414a5246794a6a516771514e3677663663756e39453850666c386b38644f4a526b4f784274736275463836664450384153667734713658466357647657477762435742645752333933626b527566314966712b6f647648755164546e374d70457558396e5332376b4c3064646b366772414d3043434a4e542b354b59672b324b61464456426d4f70414d714974544a44553551454748486b674570635370306e772b395174546d693642547a537a694a4934596c417a6243714345784d55724e5867695a4f70556e73514c7a556949537161666d70454e56417668782b4343544c597043424c776f786c4c336f533653786f36437253324f49564f6a4178775772585669616e39365454337667677130434d695269713831664f4a6b515371356a4f645542426f3577513859706968704a474b634e4c705030356f434f70736c595a76486e375a4b73636c646f6b4c626e48384547575165564d456b6f5a6c5747504649576a676771674e4a314369333268522b495758574330632f6d7474426d674654676a706f6c66554b6c4639466355415953777839794f6247714441683378555a366d71425359696e4e4835684e68526b4a44504241493150566b6a385554705a385643517941614469553176563958465438456b6e39794169674e5864454b4168314157515478484645536c7131444a4c4870702b78436f706967473732747665524d4c736354315a56346a67654f5338374f7a757651727575305450627631446c7a346471394d4f717336496d5149304838332f59677239503841564c572f68716752722b49375174567978724c784e54376c356e652b6a79684d626e5964456e38412f412f675674394a2f7741686a664973626b614c7a74772f636736574137457269506374633765746a4b6c63566e6c624e724839694371525a674f314e467a785a4545596e735162346f43365156356f344d79684e547071674675417145632b53574a42374659426d6757504538565664384c4371744a5a326f70636c6f46616f426241304433384532744a596b3846594a41594941777879524658514556444b72444241764c69713737536f3143726a496b647170766f4261673243655563456c76696355344a42366767444575365844772b477159797058504643494f4343715558777855315559384554493463556f6f474f4f53425a516a4b4a6849554f574b346537326832387455504239504a64755959444c4e54514a426d6348462f62466b48456850546a562f6b725936535855334730386b6d5938504838456c7536544a73754b44514b4e78644d61343051455363614a6d63645846414b6e75514c4138735839676d7759527a5469424c757a6345455a365968766d68473249767171526d65434d4c576d5a44667655694e56476f674474526a376c424f4478346c2f667a5667476b504844444654584c453446416f65527839324645416d31544f475830706d6f3642514e48616f526c4b70346f4756587a4743654d7456543730415a714570424854514a786a6736595659787734494a49556633706448435262684a4e707a4645476642414b646e4a46686b7a6c416875316b77695071782f464173413144676d4554496153473571526170505967544630456c6a564f4830366671435852705a6b41435338682b31413051356a712b6e6e69702f4468486c79356f7351785a43636d4f6b6f414c636965746d4844383070417848425754316c75476155524271427971676b49302b61614e464f7a4653677951505969397949777271562f7151612b444839444c5059704d535a6150554a663179442b6d4b444a4b526a5236664a4547726f456e416c776954714f7041494846717053476b31565a45484a42713078514b41783549584d6148444a4f414777556b45465a6f3666512f4c7453365737305a676a75514962426e344f6d59366f53345343374e7137443158616d33634858345a6a67654935634679593873467332426b487577385431356a682b584e426b32462b66702b354f793342365046616c375a46656a6b493769426a4c39793533716e7038665562416c62386350422b52564870587155726f3875372f414d304b536a785a42666f6e4752684d3148793973554f3564432f61382b4f6f6549594c6e416a454948445542533455524159567a55696452355a4943495a63464361616c4a456a444641794c69487379445a62365936676a5a6c45316c55705948705a303971494237554758633175792f3070424c494b792f57396347545256545a6f447079507755696378676f53476f692b51385078515156594e6d6a694f7841506b70687a422b43413069635644544771676a6b52376b636e4b43526c6d50656c30787144696d6f427955494a7145433049702b31456975502b6c4e70634f4d666d6f44414636346f4154546d6a794b4461455268564142784b5a766f53474c304b63794146576f6742446a3449524966715244456330536466765151486c564c535430553046794169425278336f49614a667154366631494470374367657a5353735051616856574838787553766b395546414a59704a6d767735465045304c30723856584d56664642787051386f6d47542f50426b6256656b725876595638302f3676775765334955356f4770436a5554516b41634d54386b7678716d6a7851504838666370455a6c44436c5563384b494a706c345542414470474846574d6a51667a4e5642586f6554742b355554485338517451664a4c4d4f4b346b4e7751533165457148454d36783744637968756275796e394f715674386566764376753244723879314c5250504d4867733076544c6c7a6366632f634e64355170677a65374642704a2f38777878453441396a4b324d4f4868716d387376724d2b725470345554365769666d675741656e7855425a51474c39694b4361693166623971446d527077554a4155706967444e334a674e504e434a716a493162696742593951436b68314b476f7a706b6d595438505967716b435377522b615969685131436543434e703745484a635577526649346f6b644b416d6c4167327170514d484e653774523045305154532b6661324b41414a62495652317334436b6855494152704c4244734b6149596e696b7151534f354177412b7a75437236682f77433555796c3564327a4d5a5859782f77423337467045483274332f544a5939303872526b4d596d4d2f397637454863334d534e315a6b4d434a78507563666974576b5369596e4f6979377934397533666a674a526c3353702b4b32514a7a5163666275626b65325139797a534a4e79663841504c344c624174752f4c7a6a714937317a3334667175664e424247584c73524264474c563559705a567751467671782b434a345955716d4443565643514278514a72306f45466e7a2f4246336f5542527533765153636e716b67387171774e702b6156784775534376715a7a696c6b657242504d78425a7361704a42324865364274744a376f4178785852394f614e6a2f564c35726e37534c62693377366f79626975683659662f41426763336c2f376b47714a372f795367674a744c343449423548674f784175446f6970314442533569796e414641733474696932616b6e6242314e575342572b4b4d6f68435a30354a36596841476f32626f667a44443449796b446770797a51526837307370446b6d4a443675436d48346f4151506b67587952687977553852514c49636171526f6d5930424b47504e41703076324247726f7967333746486477675351476c3565337754365351376f6d6d43534951456e4467557870304946734169474861675553556f412b616b5746665a314f5343476a6c51455a6f6d4c653948507451494b4231484171427954555a386b7070534b426a5242674f72696a6a324d6871616d446f4131527a52424c73706d38697963644e58514a65413054475053754a624f6f6d4573695632373549684a7a526c78382f62336f4a7078474a5259794e4b653374376b587a396e5461584e554336546e6c38564231596f6e72526c4b50755a424c5964385559793144675641436138305a6151616f4645574179535447594c4d72473144696b38734f67707565422b592f3979394a6550565467754263693052326a35727658766c6b676f413155775667344b74337a5478693243433442714f755a367941396b38504d702f745854306a7735726d65732b4b794d583833344d6777753871346f7539634648703231556c484a7856424a4e334d684b544254554347772f4a4d4f6f4f425555446f464f4e456b67772b50374551434d65355746324834596f4b644c554f42514a50316469734a616f2b50354a50455749514a494667446b6c6c624756472b6174424f4f446a4c3855704f767551564541557a53794f6c6e3675504c676d6b4f484647524d637355464570634d754846622f4145323239773379507030772f4572484f4f736b43685036654b374f31674c5541412b46454779454246384538597651636b7344303178437341656f514b4b786b717254365a4658526937746b4f785a6f48486d67333236323435424e634443696b49394141542b4545494d5273362f3662306571326d5974784e7734414957625978584f395a334f6b7832385045542b34494d2b7a74486662733370316a622f77446477376c325a7a317648676b326c67624f774c6363632f35696c314e4d6b6355466d4a594650696c4977497952666767554e696d30766945784473794f6655677249656f344b692f4852462f34346861524c565134724c764149577766307a67666967756175436253394754675968536d614251497074495a6c41416a773449466258564c47495448676d4e4541414251455163455a38516a6a6d67456542514961674743637336513143426f436c554257694279434e5a4d67674f42425578376b5a6330754e426d67426a3855756c7a68525047425263534853675471777952725652326f707a514a706c4c73553047676f724b69694f756c45465665416f6a70346969624248565642564f304d7770433148364172694878524a7a4b436a795232684c39754a654a58784c315546636b4641323061734b46416265426f4256614e4a51784c34494d2f32747436416f543256755651485061793052642f78524842426b2b7a744174575342324556745041424b513374384547442b32785a51656e78694b43754e655336456f74584e5148565642676a73542f334737496f48302b54306d39633130576a394b6d49516334624b376272716175503730773239374f62726355436164574b444d4c4677687a4a6b7774532b6f713341636b5734667551566932366d6c6f7667324b62566f426c4d365944484a6c343731333133376d506b62596b57683470596176324945396539616c764435466f2f3059342f784c6a3762616d2f4b6c496a456e676c7357703370615944452b3564367a6246694661666d677373776a6169304749437446746f2f683270577a373254675931782f4241776a71416b55396b6433424c626a775952563063705a4943492f5438565a62674c5962676c45637772597446386b4541692b6e4a50626339535751475359526171434544745a574854526b6a56634a7a4455656f555152675078524966744b6a44416f673163344946305946507248313846424531524165756143525a526c4e5130755534465541694f4e4577476f3039365854396676373159616e705149533577397949475a5269574b6b64526f785a424a4376795269446e56466d3763307a4155514b4b554f436a4547676f6d414d545371474e55454557484a4d654178514d426e324651427149432b72707a56473533646d7830534d646636637773472f774456504b6a4b4f3338583154344265516e4933535a47736963632f7742694431317a3148546951482b537969345a67456c2b366938334b63344446646a3032586d576e44346f453956705a6732525076584c4a4438575857395469504b69667164636d6b704d5541684d616e5a65704d35474d64574978586c6e363467343865533954616141492b5061673576715564654e467a5462496569374f2b71582f61734e50336f4d597461764376516258714559357375564b474661635032727132397862744d58416f67767637616338412f4256485a79306b6e46502f644c63656f7972376c4a2b70326d636e504a425766544a54694353556e324d7550546b727a366c74333161734d51796733396f523854634547662b33796d52576e3665614a39504a775055722f37745a48676b3765354c2f6472557147514838334242515054706b615146443664637941623846662f41484b7849316e336578644e2f6364754b782b4b444b64684d6a71444b48307952697a314f4f624c562f63374576726f41546d556e3978734436715934565a426b6e36565056536550385042533336646534466a2b7169336633546241316b493848552f756533797569575459664e426c2f744e77437453666b6b2f7463336f74763841636247716b3473506e373066376a5a69574d6f75677753394d6e4550676d50706c3262536475786252763744566d77522f7556676e7868427a2f37566472315643622b31334838654b325439567359613364542b35626558687578504845664d494d5139507552782b624b513246365836514f38726550554c42776e41387679526a753764434a4432376b484f5070393246537a386b50734c356653483975786444373632482f715248615642366a5a722f564655485048706c36757544552f556a2f62706958555268375a726f7733566f56387950765a54373277667268387967356639746e44774279676654626a6e51617272334e3962466454354d704464322f31784344692f77427476537a4438364a2f376265504231313562694f426e45767a536665516b585966376b484b6e7372776c30774c3871492f61587a5178622f557574393145416d672f6c396e526a75375a416c497869342b72696735423264342f514f3151374f3742784e7344346632727266635758667a4c622f7a4b472f617975512f334d67355832643568724e5063683972634750757a5a646564323367626b5a442b5a47642b795071486567347632567970302f76552b7a75417375763931616b427175517067306b2f6d5141665648764b446933646a636467435544745a6b4e45594c726d395a46444f4963354a2f50736b2b494833494f4c397065483074326f2b526649624c6b654b362f6e322f45634f58465653335669324d532f4e427a44744c6a4145497a32737451457662386c756e3676743443733635644b71507257335a69666233494d6b646d52372b6c50396e4f55587a56703961732b484868525757765537567a467345475357316b427078376b6e325678744d61444572736664323568346a48344a7a755952444e33484e42782f735a4136614e376e556a744a434a5076586238323277772f616d4d5249567751634d3748534b666e696c6c744a524d58423676647a586f476232795579496366424235326471555a6e70616e79537a73586f3949675850366172305168496756464f65536353634d632b43447a73765462307643434269465364704e394d76674636655478772b61516d6d43447a6f324e7934375230686b6637664945616e376c36534d6a6e67704b554a556f65784235333745787063797a624e494e704c554378586f326267464e4e756e464235756533416c584a4d4e6c6531426f48547a586f41514d514155356c446d57396d5165654f796d504448564938636c574e7650394a31486a687958706835655146654b49416247673446423577624356583730763252496572477646656b45592b494f36684171326d4935342b35423566374b5a7149452f6b5662397265442f414e4b56463655786a6869374a544747446c4235333761347a6e704750656b6e734c6b704f776f4d4f4b394c474d4a304e55667437636a6767387a4778634474452f79684d647663642f4b6b5363474472307372444167444241523059413979447a4574706362776d4d6a2b6f4d674e6e654272707176557a74426a5369575671476e323730486d4a574a6765467837506972504a4c617332646e43394b4c554f4650663764696e6c3273644130747751573262684261574332516f5141756447546b74697465327636703665574b446f5a636b736a52776943684a426e70452f464e46354a546837315a436e5967346e7277714a634a5254656e37477a7662556865694f4162475059556657674a533030343934576a3059455779654a516333642b6b627261677973334a584c66365836682b42576533664a36645569523467635176584f2b4b77373730757875367969302f31526f66326f4f484b354f51636b6c30664f6e45466a5244632b6e37725a316b504e742f71474937733156436573475544326a3969445239354964565377384c346f7733454e7a4277534378364d316b6b53514f42775361424f6f365a635167314779597859534a66496c617652376b70487179372f6d6d3231776d4c584731414871522b34745750434431653542305a6c77526b7143666d71507534794863712f50454f7070487351615450554d6c44555677354c463937434a72536d42697234377533646a304565394265414165417a556c4363576c46707834425043506e55746e714446567a6d4c636d7641326a6c4c365433344476514b434a476e2f414b6c5a71486439534a477678482f56464c506f3858564869674448464373734d45515936577848424b3253417339534570484250324b55504a426e4d4e4d7463486a503963614876474331322f555241364c2f41456e3959384a57665342327054463647764a42324731423434484e457962466357305a375758394c772f56624f486477572b78766264372b4759786a4b6e3730476e73772f4641444e4e4a383845684a422b5343413855704f4237306351366b71682b43424a524a3979464f7a354b616d372f414a4975345a414a30516c38314a597567394b596f46303538304a423676564d48497168705a42414b4f7139546c76656d4c762b484e5676586d676245616331424a566a55547954676a44346f48447878516c4636555369544b616d374543547336756f6f474c483336754b7276373633626a68716b4d567a352b755841615759696e4642307a414369754679562b3335636a5565387268522f79535831575249397175742b76572f727453672f444a42304a44525170445255483154613376444d312f56374d726730787168562f302f73514e62704d63567062686b736b493954683130425448393643746d46517071466543636b4e3030537868524242427345487843597a6c6b684a67586442474568565168785442434d6547434f694f494655455a733049304368594835706e47654449467a71794a366e7a526c4c344a5779483549497945535939715a6e6f6a6f414846414a456756536656795447543967556b5777373042376b4d5136492b43493653777951534d735848354c6e65702b6a57392f4856466f33683965522f6d2f4e6446514f4f394235375a2b7258665335666162345548686e6a543851765569647664573955447167566733573074623233355630646e4c73586e5244642b6953387948395377396361666c386b48724a5752487143716d55665476557258714e7658624e52346f4848765769375948306472494d77644354676f6e6e6b6c4a6232716768694971444372717769715152424b43566169727679307743733036362f4255626f4e4241396b394f7057434c43754a5665304146726b465a70596a676759463475677a7849516b48544848354945505333465562743478726a6c6d744567394652756e4c5a6f47684e7352566b7748476953444d6d4c502b53425a4d58375167432f685230767843686c784b4373344f6f6135594a70557878514a70524258704e597877536e704c684e4d4d4346564c6e56414c68705775533565397348626a7a37596550314264585377784e556d6f6a703435494d4730334d64786236493146442b31582f5330714b6a613252745a334a78464a6a5454357254413461776767785475546c334b74394a36616a354a365272384d67675973657634496d444f526967434d54514a67424574394a4655434755596c73676a2f48467458775148566733656e50792b6b4945685358506b70704a526f5a4f36627731345949424143654f415336426c676e476d4d697a4a504654334241395835634d314151494f665a6c4e5264384b347154594f614d674f732b37336f5236694b3143426633707442616c5062356f42637863596f696c486f684a6a6a6b36477032422f77424b43795161672b4b4a78454658704f645563614e32646942443148706457594d50627455636e71626c334a5a435a493073773975394130434164543556514c4f2b42515a764658344a6f4434494359366a374d68355a77773777796c634367413564716f4357616855674759444832717047516a54416e366b38494735496147456d393643514a4e79504f56566f39516744663841394b6c72626e57382f707146667664764d6b336f4179796b5071626b67356b4f4a77543666306e755367514931783976334b5341425968424468306c4d436733537853396e594542714d4577654a3763304230557a554c6e3279514b7a6c6a6d6d6f4479516d347246476c73446a6c336f42422f4574577947693078347565537956427067756874494852336f4e4d4c336b796330684c48383167395a324d37632f76647653634b7a417a433261684c784257625337587970596652493474774b4162446552334d504d6867616e6b55643761492f7177714d4a443856784e3343666f7536382b482f774276636c3152346366785a656c73336f336f76457544574a3468427a7646486b707270544138465a4f7a354d2f4c6748456e30717a37556741534f4344484f62464c4364574951334e713962616f6c456c5331356e312b7751625234432b525a50596c316341454e74626a4f33494556314b7a794e4c6153794450642f355a6b386677566255594542586269334e745a4162465538386b455a7345344f5943455a454f794d7778505967476e41706d7849774b486a77506168415069676d4a716d4279515073555179414177497067686b7949597935444a4357504d49474249706b6855654c4254414f58434e45454b6a615572676d694c456471434174562b534a416171576d5362542b6c414830344a384d6b414f48636f634751514952484652733030385868376b416b79476c38634549516673526a306e6b67626268376a6a67726950626d7137445275454444454b3350325a4257314f39567a5a714b7942476d5372304e544a42524f33356c4d7a374434726752395468475932786a495445744d73786a37313647514d545369344e33616933367a456a77334162767669582b4c6f4f696264534d76774b61554d6b41306a7a7854434c53644170714b717950684c596f6d746661714541415839364247392b535a33782f616d747972564b6175364347564577416271784b537044464f51314d4367474a63667351306b5955346f5269596c337077546b6e44437141784c30536b7338534643487145497939785146685439794e486f555973427134664251787a785145347066414b596f344241572b35414f2b716e686f695a5a6c4c4a694b344943776b564d43596e336f6b6949554853674f6b596f4d516533465179624446534a656851534d517a68535561636b79534841755545305670676d445a7052384530547279514b3768796734426454454d4d455a75614e52414b69524b68367139714c614e55674f356162746a714d5137783075654a4b437132503646357630716b783141782f5544386c70306d46752b44775765412b6b464271693236394d445a514876682b356447314954416d4d434175643649783238374a77684f3548754e667857765a4856617473614e3871494b4248547679662f414a626c6332414d49746e716c38313172304733634c6e366f53683771726a3278726c4c6a716c38304473634a6436457034634538754955375467674455517a354a694b6167536f3377514c4a76636758784b4947646355644a4c3655433648444a542b6e696d41416f4b6667676355456b4e656561515953314a693539736c4a43526d554332484e3245755a4f484a622f547157496a48784659724436775455765662396c4c545a44667844342f6b6730477441684d6d6e4645786675554844464149594953614a63344a38527a39717044526a6767624e4b7a42697071397a6f34416355435848524d7130556b4b6f776359397143476f6f6c593673332b436d6c6977526f4d41676869596f4f4939364f4a354976376b432b48732f42456b355a706942346b496a5567474f4b55386330776a7a3465785150555545306d51306e4a414d394559314b6c436345416d446b6f2b536d6f52446e46417a63746e696767414f464754554e43794468326a696c3851354241346b6732667755504653584a415862477158546f4c706d7a556e54484a41774a666c324a644e657852714a693377514c416346496b4679706b67674f696c4d30326e566a2b7841523156344b41744a42566448394d356c7663755663414d6e784846646d3545614a67564f6e35726a7a4a777a656941523655344a696847494666715a4853394452417a303776656c6c4b76626b6959675653784177774b4379564148794b416b4469707144417669695431664e41432b4b574936692b592b4b615479777277435542794546562b4a6c623176583856337273586b547941584575645854784d58796232354c703374774a48544161355a61613051575341795442776135716b577231774174705a2f45552b6769675161592f42637a316b2f3164763233437430526341314c44366e4364307775434a61337164786a717a51632b50455a7179513434354a52706b47475278344f6a347a6d523263554231554a7a55487a434a4557726967515a394566656149466e475449366e3673304353356f2f446d694270776f3642533437304164596171614c696a3037456874673573506b67686f474e55686b58476d6b666d6e6f447870525453314a592f6967706c474f49376b727a4d757a46574752666b46544b4f73616a6e2b434337615739567a583775533638656741444e5a74706230686174465973677679715551354444325a5271555467734b6f4a673450425551674267726a716a4535664e4a636752476e46427174654238552f6846556c6b4e4563666246585247704173376b624d44654f41433550703167376a63472f4d7670372b6f2f6b452f7174337a626b4e72627839766c697438494462576f57514f53437959387a75564d34506837465878385073366d6a53314d5543776c476662376c5a47436f7532424d7551783979534675394278475439714457596f567879566471354d4472466346614541424a7957586668374a2f6d682f376774576f3473732b37426e62624373666d67306351707066424c35687759705475472b6d667551574566424958657145747942394d76636b4f387469686a4c2f41476f4e42726967414d4d79733333317142366752327054366a59346b2f365367314574324a68565a66376a592f582f414f6b2f6b682f63647366725a2b524834494e57576c44447657542b346262396173473873412b4d494c6766636a6b6547537a2f414831687647464a3736797a47594c6f4c675561716947377353776b5063703931596966474546394467344b68344c504c6532596d73776f4e3174323143592f46426634656e334b616973353364676a7842756445667637412b6f494c3337795530734f4835724f64315a774a48656a4c6662636656676775714551466d472f322b4f756e596a3935595031664242664d556f676130397663715076397668722f424c2f414844626d52366e5161484c4e696a4b7653466e4f2f7351506950752f596c4f2f7345554d763841616730796431434f6d717a6e3143794750562f744b4933594f556b4634314b467341733533385157455a45636b6839516a3452626e376b47317a487455637573413952482f616d36622b34536c68614c6f4e6c4a564b6e684842597675377266384b62376a64476f684544675547754a657165685850462f643439446436594863476d747a794344574d364a534738624d71644a4e4a534c674a446159565158613762342f6d68356778616b6646493845734930646d3572792f38416b50724d5a6a3758626e702b7558486b67782b732b73334e37634e7532644e6b66534d2b5a584a32396733353652336f57374d3731463262566e796f364968412b336848627859652f6d74454947514a565543526e5867725a646a42425a43504876376b7a422b614d414a643661323763536762504372713250556376795377384c6a4657516a587071674d593579566b434839714a59676c6e437338764d6f426855706e31562b53414d36484a50494d6759466b5141654b5453374a7353636b4148547a795673594d4d4f345a4a4742484566464f435230795145564b455457694a36637170664578503755466f59396d48596b2f3436684d47555931476141546f3543506972395842455964536a56636f4949354d6d2b61634548487353434f7170515273733057656f7852634e555552475a7a515354696d534d774d7679516555716c4d394e5261504e4149394e63777566366e754a655250515777692f616d763777526654527338666856594a626f62696a5052426d76516a355579634231653365765069533948756f5059754e77586e444c676757567741536b46364430666f32387a374f765079695a436a42642f3071662f41497a356b2f4a4176714d54474c4534726a796937746c69753336693269707a3976594c6a474237554663342f77425141384636694548413461523731356d364249563751765753307a455347384e742b31427a393850366b526b612b35593944527032726f7a744734515a384b64797a2f62456b6e4c3239736b474f56737836685869713552422f4469756d646a306e463154397049423854674f39427a35572f316433464b4c42474744597270793263386745683268694f74794467673535737557792b70413247784874376346306674704775495448623341664454343051636337517836693661567150697a69756b59584a34416e755351326b6a6846754b446d6d30495950676f4c45697a72705432647871426c563972754d4245386b47553242334b537465574b6434785734322f4c724c676d386d6457446f4f664b47727148596a3545593464363265544f544152375533326b72674930732f616777614142716a38766275556c6175426d6462353765513854676a2b465479695771542b78427a7a59426a3176372f414d4549576e69375643364273537830756b6a596c6d47446f4d554c666345534b7556756c626e6c556679715374474f492f42426738735949546a3949464f53327874546d66437946746f54656268427a7a41346d4c6669726f6c6d63734675496a51344a4a5753502b6d5a6a346f4d49327a75364d4c54436a725a4b4f7549457148494d6f4c64422b41515939456878703845664b4d774e574b3079746c38323743695936754d55475132704d342f617139467a75573457764c6c5148566d345369497764334b444447334d356646545363446b7478697772674568694d4547517865725a495442774c2b396152626b33676c517161446b3955474b55534b464175525572564b414c6869732f6c315a416a5a7147664d6f6d764d4a5a515145534f4b676d635877526841334330517539746638646e5071766e5448686d6734577154596f6946776d6a3158737266704731734e30412f78534e66636b332b796a6374474e73615748306f504a523238706c704e775858742b67536b42493349694a3758397a4c42596a356477526c6739633856375351733237454c6a4f477862346f4f50482f414275312f774253644f456356642f59647645644c793731644c66327a346150372b5355626a5748783750775155626e3065416954616545736f78772b4b35526e6448514a594c7348314755496d4a4c636c7a4a32756c3858515a786575327a536465616e334e3272584a502f444c46572b564366546a78545374776a34713967515a3433726f384d792b534a753344684939697474323478714258327852466b506f2f397943727a623061514a524f357676533457547974644e4d666772444179795a426c382b2b61787545465865666550696b356277354b4749694761716b34646679795155537633426d514f313162446458387079417a5a4d625431414f474b7130474d6e487579515744653367656b762f4d6e507147346f595441664a6c584871787752314e526e5a41353332366e39515a4137792b474e4734634653496955714f6e454c6363384547694f2b7544784164754e657a75532f77427875316c51447353326f524a36536a47705959424150767268714b393661472b665333306a7135704378396d53547336354d4448547851586a314b2b7863697630702f3772646a534c4d57663936796d79574f484a48796944314e6b7a494e552f56647847576d4f6e762f656c6c366c754e4f4d66785759764539496675513875596567516134372b39686a2b504a5752395275554d7a335a465966496c785447303148626767315239527678774d6663564a65726269544569422f54543572484b784c36616c54544b3252475242507433494e397631692f4878344a7637724e3279585030484d4b6142346d72672f375548724e474c4b335a78613632624c50732f567476765730536166364a556c2b316151445a756564494f575a4230315849554c495737304c6d42722b6e4e504d4f4f61436839574e453863615a4b73504d556f6d464f5a51636e315774775234686250535947466743517a4b7a37324938387a4f416972665335784771303966454548534b49664e44446d6f654b434f446a6775647666534c56382b5a612f70335031443851756c383145486c70624f37626b4c642f38413352384d68323546644b7a365061455836755855363678684755644d773435726e58505435326e2b316c70483644346537676757506f746f56695a526c78422f65466a33506f742b414a3238784d666f756667526d71706570626e61584e462b4174683231463237585a6c635055726a7549785038576f6f4d4e6a7a3437694175435550704d5434532f4e6432647341304646686c36684f5262797766356974397534626b65714c6646426d7557594e5846633257316a477344706d74382b69525754635850707542755a515657626c363157527133694646324e74765475496d336645534f4a7a376c79534e4c7448464d4e784b7a3165574a354e6e376b48644779744347687144434f72696c6873784176436e7957585a3350543939307744547a684b6b766273576f2b6b37552f51332b7158356f4b35375145764354482b453439716f426e4174504433703775794e673678487a596476574f7a6a3249786b5a5231575a433945654b457154484c39684341556b61667637314d6142565274776b5873544d4a444733503845346d34717943537550696c6a5874545a494e6b4543733963306f6848553873516e754d4b5a4a5763504555515a34323532353634334441452b474d6e6a33672f4664433136686275455737765263797a4257552f44386c526f694b794344746945686b6f654753356d33334d7252364f71503665485974397539627655676572366f356f44584b6f4b55304e436d64716e44344a4a562b46454161764a47574e6171594470533142356f41546777537a46516d41307544546d6c6d50346b416c2f2f6b3646635063704c464b423730425959495336677069695a50326f4268324653354951746d5751555966556e6b4132686e695231494f466633455a645563446a526336374f4536416d58484e6c3262336f2f2f414779644c65484a6444623234575969416941634d4d30486d4c56674754364c6e2b7858665a7748564d796a2f4d463670706867475431497255646944782f32586d65446e6b7264726175325a644a4e7639556632666b765566593765546d5542482b4b4e5067755a7674724f784d526c31526c7130793031445a555148626b79594c704e6b5679646c4d4363524c4e3132424a713549454131565a476d536c4751714f6c414245344b4867634551532b6e483855434e58694b415178375557616d4874375a716541636b614771416b6a494a473449787167315367443863453152564274515930526b4870775154535742487554596c776c413549597870373045504652395254766c696c49656f5147684a644c302f74556a7a527a616c5541414a706e78436d6b2b32435a777a2b3944365542444350344954416d444535686a7a354874525a2b7851535949504f3733306935733776334f776c704f4f6e35742b53365070587231766448794c33394f376b2b4250746b756b61396e795849395339456876492b62426f33674f4e4a64714476547376315a2f6773306f6c394b382f737658623278754462656f41687161766246656f456f586f613446346e42426d6c444a456a434a46465a704c5572484656564c53514d63656179376f6a5377576f6b45745432397663733237693055466d302f34524b575035713376564f316b4c6b574c4a2f46795145734452436d4b6b63434b4a354144424149476a795758646c79506d745270677332384a454f592b6142374d656c6a37464e70366b74714a45575061465934496642416d47614567436171646f3730506d45416c51717330783745372b354c676553424449505249596b592b7756307950656b643342775156364b6c796b75444f495a545378346355356744306e745a42526f416f55432b6f5a6a677049766c2b614f5746454145477752307554715a6c50427a434f6f4549466a6730766b704a785443507a545546436a55554f4748747a514939476a7854674e694b3570534762676e3452474b41537474544247526c326734756b4f59774359304f6b696e46414e49474344505839715952464548306f444a784561516d306d58496539545342584f6967636371494668503334647161587a79556c4853414269706c54424170366663703148704442504a6a54676c62394b434f334c6d4d30774467506963456f42446e347068346e70547848346f495975564b346c53576c33347163426832494350447147504e435266325a57534a63446d71344850755151784f6a6d376f2f7a65397171616449636731516d776a584c78643643693775493278315662325a4a443157466b696a6e3950375658665955792b49574b52746d72684232496574777554667943572f692f426150377243637863687274792b714d732b39634745684d616451576d466b58476953446c6a5642316a66322b3736375a45627631782f59713578414c436f39793574376153694e54595a38567432737370697255644134346b342f536965564b4933494548542f7143444f2f4a424f7a3264475241366330756c694777536b41382b51514e6e6a67564471787a53794a41664c32716f447144787851516b7859454d7568746d307243586c543243326253445135766d673074576d4351784d715a3430347068692b534244566967754947387453745851352b73666946785054626b2f546478396c652f77434d395671584e6457734472674f735a636553472f326350564c4149365a69735a63447750616736457636735656472f4539457a706b506975623650763558416256344e6574394d686d5630397a62382b4f7547492b497a43424c386f7868576d48743372455a616d4a4761736f63634f6171766b416a6b5548533274496436724e7a394f504e43457a474452774a4c766973394d4d30476758744e44522b4e566d3045416f6c30593668346330436a4247456e374d2b3554535a467a696a6867676b75497a526c515555704b75655350755144716947716c356b496a486b695a674869676777644552392f74696a5148384648457149414f7041654a6b63616f546f7a494a6d34526b673877585a4d53446a524244483953674152596b645859684c4a75394243636b512f6545484d57344a6153505567736c54424b3259555036516c456943676a2f41415130754b496b687168456b654641396a2f6b5059722b334a5a74765335334c575277515a34456d4e526d675a44424e475044696c515a797a755032396978584c414f3774627239454448352f6d7438685853614b6d354449555155516c554e6b7242456e717954366553554d4b4442416746534a4a684a73516a6a525147674766746d676b6f5670546967616d744854434a4b686d6756713055784468475141654d633850785179626967615948506d79596b4e326f36677a705245344641765a57714978596c4e69522b6c4b592f5331454579596f4f5254463057626b706852417a2b384b45385647444f45766935494a4c6a464b513142696a4b494a5a4531514c686a5247446a4a527a3953426b78514e4a686763564837454b5054425139496f614949444c6a52475561756872706a524850326441414552456b4b53445959714d776f676a4549414e6967487778565737765373787a5044692f346f4c4a334c63497463772b4b6b505537556268763130584f6d5557345a726c47462b627a6c41434a366564466d6b4a665552373048642f757469524e4a3653473850755358747a627653746d773859744c55344f4b35467563586155384f6136646d45506f362b7775673650704a49763351634a434568386974577a4c4763535044636b335961726e52684a674b754434686b7568743564526b616d587a44494c7273487557355a68783846776f794d5a7a682f484a65696e5541383177626f3033376b6634766d6742695a564e42564e474c46754b6b57303164306f38545351426d4c6675546161425169756c546d674c424a45767979546738564d47504641425176693248424c494842516b6b4e6b6d3851514a7134344b7253786f2f2b70577969684969527252424e73307044546b7433703876364c634a794378324b547069363237414e61375a33506d6730647155774972676e68786c6767543855434e785277715552564e7161585967726a772b4b686a704e54327146696a4a69474b41476f6f70374653754b4f656b6e39714258346e4247517a7a54526939436735493653675271506d6d306c535a4f422f636f59676669676b692b43686153496a56467a526b434d345566394b4a5a677944484c4241483164796742727a373141307155524b43646f716f344a7751456c4a42366f46302b3769706a58676e446a6d464e44395877514c4a763249573475394d553761653544444376456d6943467149476c654368365479524c5067674952724c682b4b55527a552b6d756445454a4179717047754753673766324b4f4d55454f6455344a49637052676d633449467554476b385678376c4a7a694d7678585a4c47507346795a672b5965476143754a69534e53636b4f474c495146655470744142346f49635753303848657246485973632f67676d6d4f517743487a434f6c676c6b674a353053453031634136736c544432644a4b5036554855324f7874536848635436357a694a64574163634630684552476b555842326d2f6e733469314b4a6e62486862784433726f51395832302f464978504355535032494a764e7647354e3542366355673239764f497172723179467870327a4751354b57395149772f656730577263514f6d697443353933314f7a594f674355695030696a397441736c33314863584b51694c634f50696e3344424254366e5974323931447977415a6955702f6773386f4539795068724c45697646416f494a44426b5766715271526a676847513067436c5543566a334945646854654574477141674731594e687a51534f50384143715a6d5679665a3856646a516348556d47366d596f4b576467446e564e636a67446d72596e34716e4371436d635a44484c354b797a6244786b2f543845326d767467727245576a536751616f547277634b2b353474536f674d79466f3651653533515761714d724d41315371744e475630596159315141743142473553493038556a66465335534c3179396d51614c664e57584a2b544456696375306f57416449314371352f714d356269374862572b38384f666367583071774c6b353779654d69304363677272387a656b5a677341576a334c61496978434e754f416f73786a39495158575a69645172635134574b77664c4b31776e376b44474c7851596a424f376f45676f4662536f3350322f616e646c79743336355a73457774447a4a6a484941397635494e635953765131786c7071736c2b374f7964467747736f6e566b56784a2b73627277526e4331484952446e34724b647a754c754e3263356637523742423761456f7a4478716d5a6d78586a4c5572684a4f75354535615a4d2f6174746b335939636231372f5564587a51656c59733667456e574378756273492f315a61777a767062354c6f343147614243373139366e5561707761734d6c4a476c45465274784a7245666d674c555764717130466856517342375a6f4b39454838493979726c5a68346f78477273775767316f68444242584b45593544334965584276434663775141637567714e75426f526b703546746e61673731644b4e4f4b587371675551673951717a5a74797235592f4258786f6c626967704732736e3652376b77733279474d5233425775794438654b43756532746b4e704861683972627a6a45634663352b6f66696a6c54322f4a426e2b30736e45664654375733476d6d6856344c496e487351555132746d497045492b52413130426c613434594953593867677147317435525a4e3555433947567274676c376b46576873455270547456685242394a2f4c4a4256477164754868526c316f36474655414179784367475a78546b41636c473730466248484c68324a5942316166453571704561616f426f6f6c45416138555a454f6a6b484b4247536a784f552f69724656546534597747424b446766354c36744b306673374e48483954767939793870434f7564467239563348335738755842554f77374251493262634c5931484f694336785a386e70347258417679624e5a6f6b4f2b57533152723473554241305950586a7a56674f6f45455543416251473473566f2b706d7067674551533056666f4474576e696f6b68426a7a4a71633257675578372b4341674f5147392f4e466a7042644d53775967686b59366d776f676b6452664657785174316a5841706f4e446d7942744c645252446e33356f526a577561614a30596a42414246364442416a557856756f5a7051615949494f434d61594247464f6b55523135494978556e51394f434c78416f69413544647942644a384b5950775561526c524e704971554168466e7233496c3830614b5a5551476a653374676f7a486736684951484d4948493977514563325131565942416e544a7379676d35757732304e63734f53386e367a7662742b62534c5279686b334e644c6433504e75484667754c367549692b34344434494f6245456e5646644c3067796e6634394f5a574141476f6f742f6f6d6b626c6a2b6842324e7847517458705178302f4a655668713055785872727a4331646677364a664665574868414751506567476b2f55636c335053672b3148463177797a4e79586539475038413437476e556758666b69447a794b3574483572712b7044584453654e467a764b36584a2f42425559416b4e51594f7653572f4c4559764d5269497836544c466c352b6570394e5856556f474a6356504531516571382b7a6b785a4757347434695141586c4445484c386b6f6a715038414e376b48713558374a416b4a4433706a354f446763313437797a4d2f6846453237686a6d48415165756b594373534f346f2b5a626c30754879586b42724854475264737767664d414e535367396738515046464356793362646a462b5279586a6943616833546b546a46795a52422f695165776c647451385269416c382b31786a3372783475584d35456f6939646b4b6647714431306274733963574a7736536e366d655243386130356456543374564456646568397662696739714c6738496c466e7953536e45316465504d3566584970784f59476f796b334236664a4236345374345537516a516b69672b4338626375794a636b6b355a4b6562634e4e5248656739694a516a53684b426a43666847706c354558626a6a716c33464a4f39644856476376384164683349505a69412b6b416636616f53732f5649502b4338656239382f584a783830664f7579636135567a396967396447635043342b536c77573555496a496c65503841756277715a7a59633034334e3352346a586d6739586f674f33674d45306a484174324d4634343769344b526c4c543858566e33742b503148356f50556d31626e346f687677566f4675426549413731343657367647706c4b76636e4d3775734855554872774d54456439457074774e65484265514f36334831546b4f575348336437474e777367396749765544344a685a4536475065793864472f664231617065394f4e35754d376850624a42367a52474c7862464962567239416a334c793333743846396465535765377655496d585165724562494867642f696a636a4134516f5070586c68764e354543586d456a676a4866376958696c7951656f2b32674b36536b466d41384e736537334c7a66337534684c706d636531442b3562715031495053614c656e544f4948596c4733737978694a6471383664397544454d6643724c6538766b41526b67372f77426c597a67442f4b46576654374d73496a2f41477269446333346871413865436237793441376c755046423364767337454a367841594c5a63766c716b4d764b6a6633593456484e4f6431634d524a2b376d67373179635a502b39433363387936494d32727064634437766347704b59622f41484f5a6a54764b44627550386376472f77434f4a746b317950743846335055646e7273437861654d6550414c7a6f3958336867786c462f696b5071573463504e2f384153436736566e3071774a564f6f6a5046316f687449506f797858432b2f7742314c7879476b643337557733393932316642423254746f674d66676f64724446635962376377384a6a4c385578395633686977496a58365548612b31675467414f4b726a733763656d4171754c3937666c53705046322b4359622f63747079393644732f59326e4a2b50344a66744c59444d467978366c756551694d6748503730783953754267597339583150384548552b787469724d45493757313268636a2b3633346b36514a617631426d55742b6f336f6e72783452796442317a737263656b52634b665a57785573567954366e654c39527037634554363166616b6458387944717a325676737a354254375333484f6d6135632f564c6f41365079536a31612f6949305164593747474c45714859327a7942584c2f75397734422b5151487175346c6c45523935516454375377616d4b62374b775230774463735679763733636961516366425348724e794a6654376b48572f743971505357615879532f322b77615169445867756550575a314a674152692b534d5058482f35492b3542304a374732656b674d46562f6264746c456539595a65744e31516747374b67495339593875526c704f474251645537437a45506932535757777479464f2f6b7565505735747146734d717836354843555447754c616b48536a366641686e592f676f646845345a726e2f3377597a424c393379526a3633484b3265383850624a42763841734c59634434706f656d32316a6a362f61447845503979726c36394548776778374d4548512b78747470536e59787a71736e39386753474464755079552f76316f466a4754635167312f5978633438644b50324563636d775a5566333362746a37755753722f766c722f6b656d4f686b42335870316e636b54693975342f69697172572f337670314e77504e73654856792f42756131786b2f7657725a52687570797333514a51302f46424c473932752f774371314a702f7050544e64473364755776483178343445666d755276763855733365766253387558444a6336572f33767042466e65524e79336c4c386a2b614431687578596b556f755a63395133634a4d42612f3841554368732f55647475782f536b482f524b68353571336437507a5771497a6a67677147374e372f6b6a44562f3875542f41414b457762557865742f546a4839513976324c545932314f754d5841704b4f4a576157713355483830486174584265674a787a566a5a726d624338302f4c796c3142644a41554b41305569446877526f4d55437334524261696d496f694d45435474517544544d504535466358632b69433235326a5247506c7972452f6b75354b68553549504b617862653165427479345377376c324e706361324e5753323339744463445463416b5030726a377a30362f7434483755366f48364a6667677375536937782f5973676b7830346a33726e6265473676337051415a7363616336727277394875482f71794875514557684d557179795839724b3331414f75684430653747546938782f6c2f617448324e305071757638413651673837636a435461777848315a6a734b364f7839586e74394e76644856624e426434667a666e37316f762b6a79765668634d503559554b72742b6854684969642f58456a776d306737317535473545546751596e4d4b6e63624b33664f72777a796e476b68332f67567a4e7636504c6179313262706a2f44487739346464574d726f4856704c647944426474585147334138324f563230476e487448356535494a43635364517551384f755069683268644d7a6d2b4874376c6d33477868646e357365693650444f4f50654d434f31426c46732f524953674f474b563856736c74584f6f556c793666656c6e7448776f5277515a5357723363555a5544684c4f4d72564c6f4c63516c6639503755414c465436574c4931354230424e2b334641686870637173456d5771624f4f464661684a36307155477178754e5a6165504658794a6a584a6371455462704844367552576d4e3655664655494e5a354a5a534e4b495772327344366e77524a593845454746554e4d5a4a656f386c4a4d53676a4538315748623266356f766f546d6c6664784b414370626b6879776f6a4f6f447151415a424135545159704e4c2b394e594857546d67746b434d4577593051646e66464138325a4158414c5a6f36717346415971447151576a3366697164787334627949684e7870357456576a69725936544b676f67355550544c65306e356c754e654d706167744e48447262704455574b34487a514563366f4d48624a43516275516b576f364269526a6d6f51434b714374586f6742704c6a4642504547344a43493936625163636149734b454941654b4d51774b6b6b545772596f4270514e4b464e326f455a437141516b5061714d6139364941775a6b7250303549445568383351593534706a31464166705142786c69455a596a494941536c5570674d6b436b38464f6f49614d2b50656d636c414e47706d6f6f6741434b714350306c41785a6b434142514b557a774358566d677133757a7362364268634652345a5a6863495433666f4567502b54626b343566734b394b5256384643596d4a6a4d504473644250547655625071467258617848696a2b617475514d634b4c7a5739394b76656e7a2b3732425952385565584c694f574b365070487239726574433730586667657a386b4738675a48384b704a3234793654554c58647369566659726d33626464416346414e767478474c7431423171494244726b324a5474587843756d56432b5337563043544d634d30465a455a56474f535575334a4d5976546769326e705a414b5943697a3737426839547253777a785758655a486e376539426244436d444a715971753368324257696d4e4843415a31514f4c356c5151663349455a594d67567665556a484e50347644694573736b43747a435531367553746b424c7143545750442b7830476378693766696c497051317a5630695a5643706c49517771677259596f7a6d543038554a355a4f55504c4561356f47414a6f4d506d6c4a3039694d5270384b684c354163454545754a54514269616f52446b67462f646b6f7845574e66676755777a686b6954316451716a704937555377446f476a41676b356c564e70374f615a3552727854516b544b7663676767616169794c444251516646516e506767554f6176524745694b4651784d7171483957504a41784f726b6b30313144396963555130595a68424764485469796d6b6c4b496d5170526b4562714465466c42445646484a6b385a445042416f784a694d455a645237556354704a51696375417851414178727a55505365574b413652567970414f5879515455417a56344954416d47346f73353073724e70616a4b5a427951554461617043517a34712b7836646174786155493670654a7775693042306f536939554656753345454e43502b3158486132707671684835464e45555673437944504830754d61327053692f77424a71466b6e427055465877347272526d7837367246754e6a636d383742446e474576774f53436a6353646a6e687a575939524c4945755a526d4f6f556c48683765354e3453316535417457344d6c594f2b487954796441784a3755453030354b61434d6856426e466351704b4e4848354946446c6746303971477435315075344c6d45414631307474496d476143795a3030397968774a514141474b4d6d7977514c4b4a4a70524e61752b5164583048787438307070676d6a49653542693961324d684b4f2f7742742f77416b504533315234382f795851394d33734e33623879502b7150416f37615942386d666850682f4a636a636265666f3138376d32357354386366302b324f434473627178474238794e4166462b43352b6e7a434b7656646d7a646a65464b784963637756352f66782b78766a55577453384d7561447279635547447170794336537a644e327a7146644a6234496a706c524153637a3765355232465843597354565452522b4b42576f2b53684271654b596b48327a55417279514c514d33765230305336526c6d55355a766d676e384a43422b616c4d79703830426b4f35533555756a704a702b36696a6b47714247594f464d32474b4c764c6d6d6f6355454c436e464b534770564639485969645830353449415a4632516a53694f5964476e636768484a527979495a716f446e6a3765326141647455334167305569434134524d61366767516a6f54526c704341486367616c416245492b6365496974525030344c50595933582f6757694d692b715742775156573678666e543237554a3471577731746a786c5874556d4777515a79326451714a79455146726b4f537a6b45464174504579456369794a4c70424553514d445469555931793756426b7949656e597941476836667a5249457646696943596a4a496543425348445a706748347036524f4b414a38576141455553796d796467334e4b3270394b41366941346f6c7a725646754a376b532f5a2b4b434358596b7166454f2f38557a6e4c346f677634764567487a556b417a6f3663304a546e6b4b4949326b6f466a51493150596d4552452f6967724c78643855324e654f436a36687a526e5150774b41647546564777442f4149706f3150484e4131775144487043504654543031544845384543436f302b7a496d70626b6751593052642f6367456647793062537862756b33445755656e712b6e327a575856706935576a61435a65583035383043656f375437694551547072394f4b7074656e324c582f54666e4f713655792b4a6f6734685771437146694d5234496a6c70546a61324a663841544150455556754a566b4546666b6d41596c776862386265337469744947705a72735977303342694a6a3353702b4b44584c773058443354666333503950795863594546635065786663483279514b474e5642716c33664a4b7a446d3955305178417951535a654c68426e504846456b592f444a514941544b504e436f4e4b6857554846495154564149754d6b65524476524b415a436d53624b675a41704f4c5a2f4244487554796b44574e4166676b6c5874514e747764595045725a36662f414d5230302f71532b61793269664d41352f6b744f782f346d6636376e7a516154683270476f3577546c3044694f4c6f426f6170516b51532f76354a6e31636b5a54656e42416736667754474955694e57574357526675434273485338307a46757248676f513241506567514f5378554e45534934596c466737657a49494252444446474d4a41396a6f794c5551492b444a79474c6a4e435568456464667a514963494342714c684c6d795a332f4253676342417036547835492b4b716b76346b6336494634496b464168696d63596f464a656f34594252673734496d48314f6c4d6156514e496b483571552b6f4b427379436842415458735375444c32716d6c45596f697249464a7a52414f49784b5053464750656741674770696f59765251683856425531515453596c30326c3845706b436f412b48376b4249315931484a6365383475534a5858656e56677554664131462b50775143594d474b59676d75446f616156396e5269356c336f4378776167526a45346c416c78704a77524755585146737854322b535670554c7177315a3157775053653130426c714650656b354a6d30343449453950743759494961734468376b7077306850685633645141527739696731656e434d493347593957504875354c6444716b473777755a74347a30333432617967595362395854556436623071396333557047647556754d50315976777777346f4d6b593955363045356950764b637730313470626332596e4d4758666d692f444149434f4b426c6c6d7033596f6c67616f4534364b4b4f4233444a4752455470413571616e385151534a4142306f4d47426c566b4335344b4376594d55456a5575576667684d4f57507554796b526767486c6a6945414d644b7162706250323936756e45532b53716b424842416f6a55635374554251757375625a6c625144527767767431314d72414139614e37594b71334b764a576839525073575157507070795630656970504656694f6b4f6166784b324f4834494b69644a726a6b724a323964794d6368575379334c353877577834667158526847767a515335634669325a3535647179656d32584d747a4c4765484a5637776e6433525967656e366d354c6f4536414952796f674a6b36706c466977544f4e58596d5055677a3349526c306c4a47586c304a636667727a45475452535344394943417775526670636669724e56324f577150754b7245614f4d56414d686967713357346e6574797452426a4f564679726e7045394839536b5034484a486146336f456b4d795764364d50795165592b786a41746174693458707270333846644461584a4136744d496a36595a72717945545573506b6a6f69497645596f4d7350547a39456f2f36767a56304e6a6469532b6b6a6c2b31624e4e4b734664416b306673396d515a6f574e4149786647693178595262426b4c6b64513655674d7535426153455857665759716169546767754d2b4876536d576e45597173535a45334b49483878366a424154474a53524a384f50354a53434f31425a7145533067696233476a4b6f784f4a53756330462f6d5a386535417a30344b71704a7a2f4251764b677843433033414b756d4d316d6a4a6a7a54516b585157777541315238787a5255736662424b526b6776313041344969344a6469716253585075344a592f4642654c6f6575614a755935716c75507a516c476a49483878793955504d396d565a6870786f7942443475345158796e777852387a4f696f30736c5952785157693478524e304b76532f46304245396f51576561364d62754149373156704d6a676e38736f486c6647436875484b6951325151772f616e45576a56416f764349354b61694553426b3359713956574b42684d6d71414f4a516353632f4249316150326f4450726c2f436b6e663869453768777469552f6767327638414a632f31362f354f7a30525056646b336345486b72634865527a56735141774a516845426f6a32644d4e4a702f7551616f6b67675033466149682f4655724e434a6361366a4261346c68386b4477426761597255474a596c55514f56537446754e4b6f44414e6a674d4f39614c63577171344169687754764c365544564137565a6236674e544a42674d315a704a5157396d434431532f776857514c3177515355612b337752306a536f496b31647531454f415751527670446e323571526f45634554414e584a4165784d49364b443936577448374f6159542b4343434e4b38555441385550456d693738766235494a7037516f374d474b64326f55416741422b4b614959746770704a4e4d30427a5145463362696a3563714e676f5252317a7433366a4c554c4e67342b4b5842427133573773375350584d4358365872376c79706572514c67537a376c35652f455475536b5878784f666571764c366978795165704e7a7a51442b727558493961627a49662f41452f6956324e76577a622f4149594d75543674445466302f7068456469446e366e6f742f704231377155542b6c63346869777a585439446a2f586c2f4b3379516476644e35467a6870586d794e4e41463339782f77415a62412f677546687a51564544484d3856336654704e594246657063566d6d75393659496d78316c6d4a784e454657386a4f63597748366e66677144747952313473757531736c684b4f48366b766c6a4678326f4f5063734d572b504a4b624567773034446d7579495148686b444a47554967556c482f63454846386d524744465357337543546746757a42646656626a396342327953794d61365a672f4a42782f4a752b4b6e2b6c4d4e7157774c3936374967347866696f59786b583178376967346e326b704d52546d6d2b306c45744771375551414f6c6d544745525136543765326144684861354e5476644137554131475078586242746a3668584e30307265764d42427850746a6b684c6147493756335459595549353177536d7732414f6e336f4f46397163385030684f646e48466a7a5861386b53726b7041413544336f4f48396b2b714d59756c2b324970556735634636415166773658437261477069594138544a42776874336f4133614544744a535054422f685665684e694a483048695855686234456539427744737232427473796b7476526d7175384959426f34386350696a35476f3041707a48356f4f436468496d6a6f78324578347055344c7647793144494d32535755496b34684277703755476d4979532f5966514633785a486967416b46734f314353673452326b6f6e445570445a5843485a6954376878586f4a57644e644b4562495a32374548414f316d414f5353573075484972306342485430684c6f634d7a4f67344d646b61413471533269394243334e6d41422f596d38672b4c53673833486253415053614a2f737a48434f48695870507436354e326f797474516842356e37512b4944753549547345565a6776516d426c674b6355733749465a526f55486e2f4a4a71684b41684b6f6c6a69782f4a656a2b334741694f7a4645526c6279306a735165634543656f595032667456683235393637336c435a646e50466c4e4d63685642352f37636a4c464e3976704c3846335261414c4748775452326f385269435a49505069774a6a54562b535937635346636346332f41434935426d2b4b45747151656d4b447a733757716b6854386b306266414c30483238544a70525547336a39564548414543315530596a55614f537535397262427742485a565162534d4b6d4f4f516967346e6c5369523075684b4831484e6471566a436e346676512b30742b59344758557944684569337a7a77523161365a754633593753334930644333732b6d6f4f50365548447473446d2f38715943414c43587658624779747947695a66344b66322b3347514d5973655459494f48716a624a6a4c48692b48344943555a5954476e34727553324e6f7a6534482f68616e656f646a5a4f45472f302f6b67345a74307067565a4b49474f6e747758592b7a4566434d45523664616938394c746e4c4e42784e5a6c687051387654556835664a64323536665a38526a48554f354c4c61516d636b4845365a466733387161554a654b544c726e59522f53306a7954793246756247556a46715577373048424d4d6a6b724e44344173506375782f62513430797a707a39754363656e55366d506379446961525352627556647a6f42417858624f79445677512f743155484669314973695357345a4c7378394f692f464c50303978676734306f6a4353636870426e5942645757776a373042366459347a4f5344697a734d3355536365784e35557268315637313278366446337879376b3439506a34703464745548416c624a474b4d5a6d4d54474d51596a33727454324d446b684c30364f515a6b484372695145306265735a5650737937583971747a2f554f7a696f6654625a2f5547365231494f504f337038574f5761724e67694f4c6e394b376b4e6d4157685251624c536176544d6f4f4751492b4b6e37457768444b713763396a6149714b71762b31576f2b4a7767343445613056586c77646e474f4f6c64372b32516a53446b38796b2f743874506869374f3270425a616253444c4f71322b6c6638413355676334754f785a4c397357627a6653583039696230776d3175746373444853482f6d51656e65724b726357345859474e7743513531566f716b752b4173673876752f385968652f71625352684c394d755049724b5056743936584d577437485862474837383133375632634a56784a71743979334339485263694a7850366b484a3276714f333377657a49526e6e45342b334e584754487241437762332f4142573254356d7a506c797862386c6a50715738394f506b372b3372742f712f626767366c2b4a67317932616a6d743866564c594857474836736e57485a6272623775502f6a79726a6f7a3979746e747753526d63596d67516453463633502f41497944324b78654b3952686439506e35396f47444836634f3965733247342b357351752f7143432f414934496c52304373794b6a4f6f334641564f52512b434f4655464e79784539516348694667334e2b6532447a50542b715034727145354953674a4276326f4f4f505641513844496a6a52442b3646327850752b617333486f7475524d3750394f5a3465453979356c794e7a6253612b434f4576704b446f7739526c517970337638416779582b35504a74544d73496950795347737961494f7239784b55664d6738687742575735366e6468394d694f55772f755757334d3278306e5478624261426474334b585967634a444e415a65703344694c6b572f69437332322b73336a6f75334c6c7565576f676648425a6232336b4b784c6a33716d37706e48544d43555167394b4e6d6638417533502f41452f6b7170374f344154627579312f783143344732336d35325a2f6f793879332f32356e2f326c64725a6573324e304e4c2b58632f5250384f4b43723769375a4f6a6341782f6a4e59487679373159624c6c2f63756a494359615651636c686c7342456b3765586c6e394a72452f6c33494d303453776b4d44376c5759634671747a49364c6f30485067657851324b5042426a4554586d724277436a564d5856666c47314c6e2f414249486f66465138304a52344a59334a536f55356c697942644a46516e745836365468787a5369756167346f4e455a4359476d714f6f437072525a41644c694a7a37465a47364c6848646967754d546766336f6d4f6c4f4e4a643875436253775155787233354b474c4d5854394a464b4b4d42376b43564e46504c6b3944326f775930544d784c3449466a45684276716766656e48556a70643046517447517843456f3352315159484e584f496e44334a715945494b76754c734b454f6e683668442f414b6b44482b4c4a6c5a6b77772b4b6a5032494e56753543354858417550346172477769365137613237314838727854364a4f774a5038414e2b61416967534d6d314843714f756a316f6742693943464849445971415956526f55456a586d46493455775378354a677a4f5543394a425042475845705447474f664a475262444242434d6b61596a504a416e53586b67592b78514e6a696f46423855756c735543347355387746414b4e69464931476b4947534545686c4b596e4a4e7070304242586e7a5443496a324b4d35722b354548674b6f416572735a4277653130527737304e4f7175584e4147306c7a6d69655359796243696d726948514b4f4b64714256343154567252415264306e384d6c79765550513765364f75782f547534386a2b53366a653950713661596f4f42365a363763326b68744e2b345974714b39464f3362334966454e7142344c42764e6a743939482b73476b66444c4d4c6957372b372f414d6675434d76366d334f42792f5965534430566d33667433434a3654614a3654484876556e48634f347567777a687041596471666162717a767263626c6f6731777a4234465269433262494574796346736b772b504263653776684345647a7435676a706a64684c34666b7576476f475a5a42444e73566e33774d5932694d58576f6646593939485645455672524266624c4e785250464b423031792b4365505358772f4641486356516c575849555564364b613378475645435379356f4e52676e695159312f61684d4131642b7841755666677132636c574763634361704e4e554354716550596c30786f526b45354a6b2b523449536d492b4c4e4252706363572b614d6d384b61554e645971735246485144547063414d6a6f506238303336695871706f78504242415769337951465151614a76445842475557646d42393643725743346b4772696a4d694e4934424e4a394e6375354a72304f4f50346f484c55306971426851734f514367694967466936686d41656b4d676768714c79524431456b54455a4b456a41755851535a30784178664a526d62536f78414951477152484241374441684b3147464561444a45696e7336424a395054787a516467426d6a54446b564458386b424d5343386579716b6742556f773445422b31314a4d4179434d4d73555338546b6b44787038564b6731514e7a7853747737455957357a416c45502b43746874376d644546514c5946766d72396744356b3559302b5075556a737754716c497252616835636e42723830462f69504571617130537563516c5054306a45494c483073452b6b74314c4e474a5057636c5a475538506d67305270327132492b437978756352675666472f416d6862746f67342f717041336741465462655237315153634d485772314f47726443356b4c596a37354839697a413653654f4e5542506863462f6d6c4270713534636b3746716c6b70356f4a52335a41524573634650346f31547a4a49596a322f4241706b356249354c665a44777173454c5a4e57785851736544386b466a4168386b49754f614c73486b6f782b6e42414e4f7274536d496a544a45594953624e4142576a7574414e7665516c59765634354f71546a795559366849654959666b6777374b3763394d752f61586a305350394b66344c7237766151333167327031427735465a3933746f2b6f324f45785563704c50365236684b342b33766638414c6234346e73514a36495a5778657362674458435559793747594873577277535a33694d4672386a2b76357762544f4f6d584e73466b7546356b6654487039766567465a45444a46744e426d68483449767971676850444a4d6453585348726d69493170546b674a70795367596d574b6b5a4f41366d43417741465467675950554368526c454559736d497230594945314164694d6571756162737a554d616355435a754553644e4557346e4253516f676a635559565a52686e676f37442b464144316c776d4d513748424947795247444f676a745149674134704942756d53734a7177784e4543676c3659494555596c315951783071544d58397943756d6e396959794747534d6758536d477270663969437a626e2b6f53503071397338316d73452b59514f465670674f594b436d7831517a553076696a5a3847724e4e4b754b436934584c7250636739566f6c384658667031444e4254486b464b7769364c55644749426f63454166554e512f61704561676d6d415a594e79346f4e376b4169776b376f305a6b57634f68554241724f65414359787279436a496b456b73614949527771686f3171466a30672b2b694c45637967534d652f4c6d6c4d613976742b784e49667077545955464543366663554441696754415a31514a507664424247722f7743354b5a53666b6e784c6e456f74496e546b45433078794b4a706878396d5279536a6a77514c707178524970307656485646695369522b6e464173634649784c736346415363635554506a52424e4c56664654716169676a7a6f7055752f356f4255564278556c31465279773068576557654b43706e3472567478707441442b4a4a3550457131694963754b426d5a7063506d6d314d377175564f38492b4c6d67614c4e386c644638466d4a4a78556737644a4b445845505256623050596b59354e4c3346434e32526f644a3755303569554a5779474a42434454437665755a7678706a7134542b43336259614978676645497842376c6e3330584771704234494f644934746767615038453869353046422f774253434579346f4d526b796155644a354a545375534144477455634132616a4f65587a526c67677262426b326e4d594b596c73304d57346f41594953445577397345326b6e386b5a4434664e416c7336626c75504662665432386f6b306a7275662b3559344136343171363237505435626678532f397944524168414f4f31426b4446792f74524150357355394d514d55426a324641653365674a642b784b594f3548765a456852366f476b4872372f6b6c6a3764364147446f6974586f674f434768715a6f6b6b436d436a305152672f64324a596879706933494a71444641733431374564495169484b4456664538454456376767496a32354973616f6e4949466b47596a4e45657a7069534333636c4d4b49464947434d694269706f72784b614d574655414263466b445771674f5251316b596f4343485a444369416f58344a6f6a6767496f4b6642412b33656d77504e4b487977515238314430466c48476445537844594942795a45466748514a414f64656167366a70793979434d56496e676d636e6b6c4a6f674d6d4950426369364e5632353846313871634679626b694c6b78774e4f7a3936414f373933656e3074375a70474f59546b68366673514e49414f6c6a4b6f4a5a4d4478436a417534514b7a6f77496a3763556f69306d4b595144734367485a565174334a6a55632b53553653454561506345434e514f684e32306f69344651675862337a74376e6e51596b7830796a4b6a7467663372527566554c312b326252746944686a4c58716f6664565a7057775477516b54676578424c5451635a55557844356f364b5578515048424161597161584241556b666356424a6a576f434144423237536d6b484b562b71672f636a72776646414a7864732b50636845746c376b524c336f7352674f6143754c787247716d703347614d596e484e4d65497167544538507a56526b63446c332f7356736f30344a44422b773538304161576f646e65363277354c486168314d484c725a454d5271515777476d493755385a6b79496f686270485555397678534b44516f47314d6f477778514e3245626b6f6b2b4373676779577263726d376c2b694448745042644c6358504a746b344535717659327446743559794f7558615652646664376e792f2b6e62724c7451572b6e324e4544656c3470313773767a5634416b35516e64486d69304d6735373035446c336f55465649654a30344f705769527a775541427167545252445348634b7a52526b6f4446676755686f6b704445534e4b4b30756f4973677230737365624f756a4f675850754561714945626c52474848334a596875724e6b305a6b6f4e454d6772625a314c4a43343153437259333476574a5162425369555344344a4958725a774c4b794a6a49597567456f6a414a5a41647966354956514a544641744d70327a514e4233494b395277795464494b627977436f49676471435230344b52416170523078513052415a6b454d5234554e4c4f704b3148676f624544575171676b6f306f51674c52484251626532443451366874787941644166494850337143315875553871333731504c4748346f4362594a664e4451416353366e6c6a45684854474e5252416774684d4c5948627752483858596c304f657a356f4a4b455166596f6c73525254516358716c4d5267635542416a686d6f4967394b6768306f6655676730767a545349415368434d532b61426a4d59664a56362b4b7330313448696f7a6469436e555a3146456453754943486c6f4b532b616b6f746b726a434f4a4b5133624d51515335474c565156414146796d3876394b68764165434e5031476934587250722f6c77386a62482b6f66464d5a63676736573733753232635876334b2f6f6834757a325a6553395339524f2f756562703032346a54423875666156676a316e564b702b61746d65614144544b54717944413459717533574a4a785674764750445656427573774237507857694d514b354b69794b567a56734431635a42426549304a6673415638434b4e3763315741496a7078785673494d45443650707a66325a50474967484277727952476d4a6641703442334d76676749727954616358636f5266777179504c4241735358344b7a53616c4c5475347134476942636e43664770514c4771425a304461673945524d78536655476f6e61514e5032494a57674b4c4875524c537a2f46526d7a51534d71736e674753787734464d325a4b416b50564275624a6a414d364f4f4f4b42484a4c6e3936664370566337304c455463756d677237635635752f2f6b75755457725230784f5a78376b486f4e7866695845634678644a6670777748494c6e322f5750754a78747a4236694b397543366f7436535267574c3979447a736f524e30784f4471715673654c427677566c32743257726971356e346f50533761516c6168776235726d2b737941334444466f366c30646f50364d485a637a3165524634536a5179485633494d5177664e62665348463478796271574756667a572f307147692f4a795841434472336f476475636332702b5334586c7653543831364f567656456a4231686e73726b616158357567356e6b786f426946566374367a70505544375a4c727a326b31507370794c687450616734687457384343472f616c466f52446a55336175332f4147365571456a75532f597a686d4b5941596f4f4e47304348314d6c4e6741733558612b79754d48616f37335250703550544c3979446854687236673579376667724e46793358564b71363876545a5269616467512f74733370777a516367693461367a3263556b724d686838313178366266445230756635754b4d76537238533873454847596836797964696d414f4d696665757766547275475834706f2b6d3359485552456b6a33494f48455477315362745454684f483153624e64622b323342456c6e4a37325351394e753555397561446c365a48776b2b2b6839366a547a4d75365874376c31663766636253584e55543664633845616f4f58624e3065476336382f696d6a4b37456b536b656f56572f2b33376a3668337152324e3035506d36446d764d76706b556e395354475250454c707a394e7569516e474a5036713855527362394f696e486b67357045347431666769393031424b364a394f75613652706d5554365a65646f786f4548506c754c786651534f4b713133414b6b383131492b6e33625a38424d694741556c73623331516f67356f6c637731534164507275326a71446d7661756844597a6c32702f734c6a46324645484f38792b657345766b6c75334c7a39556a5867742f3246326744565a4c5030792b4d49616e7a5159504d756653536d4735334c754a466250734c6f50544276685653657a3345523141486b677a523364372f7545486969647a664f4e77305676326c782f77446a4a42354a7a735a35776b66394f43436e37726345754c68535333562b5165567771373753356b4d465a445a6268395168542b59494d5975584d64637665726f62693945734a757259374b364b3663654b62374f3642574e4f54494d33333237474532484a57773375362b75662b7157535032643139656b68302f38416235794868626d67702b2b7678465a4e2f4c69583471523357342f376b6d542f41474269614f334d5a7152326c397567647943736237646967755550594538743965497154544e4e505a585748394d76775466322f63547841414753425276393042303370646853666637683955706471742b7a767653325737555273647849485550624a425750554e7a34524b764e51656f376c7a2f56547832386761305046474f7a7559676a33664e304150715737494e5165616b4e39754b395244594854524c4b78667251706f62573571454a4138526b45447939523363662b70542b564a4c3148645a7a7754445a3342673668326b784c5445653365676e3978766b4d54722b41516a366875766f5963456e326c364d53342b58356f6662584445426b4678395433637154622f546a38557350554e7a626470592f715366623359595244653346536531593670654534494c492b71376c6d4f6b3556545239563341476d6e37465844627a4e57785668734d634366626b67582b3637773041694170623954334236787048356f477849514259755367624631394f6c42595055397851655a686c5776616e50724638414f4154376c6d47307648674538646a4942797943302b73332b464d2b702f6239714a3961335043456537697176745a4f7a5966706f4544733965566330466b7656747844712b6e6c464e4c316d38774c52593135724b4c467a55496b45382b784e3975595630456a2b484642644c316d393473527969794550576272755069714a516c34764c6b57512b336d5164554a447551616836357541583666626d6c2f764f34306441442f67733473455a453979457251464a43764e42735072463079306d416635496a3179635a4d49362f7741466b6c5a4a6a51562f4a43567556716b597454455a6f4e77396475536656454273526a696a2f6648666f4c35647935336b74485335357147304956496e33667351625a2b754854515570676e487232724345692f59793572783855524f764a4e473254346b48522f76736136725264435872756d67744d437566716b6342587378566b4e55542f786b486d454771353632514138613542506139646c434e594f545663377951415978446e39535879726842415164496575617359464d5058504d4c4333686a314c6d2f627a6c4b676c576d464542444a734548526a36374453397942483663303339377473386263767771755835635451436d584a4e7046496b7652423044367750714478374566377a5a31654163485850755778703078475062524479672b6e76384b443033714e694d774f537762556d5677506c527553366337462b314454634776684f50346a386c793975336e6c79376f50536257397242696351723776684978584d74793054664d4c664f3442417567354570364a6c6450625852636a7a344c6b6a706c337136786446753571794b44733673306c3233432f45776d424948454b61714a73616f504f627a2f466259506d374f52747a7878576531767478745a2b5275712f706c4f4c45392b4339593456642b786233454462757845346e496f4f584464786c487036684c365a5643473076513263764c6c5345716a67446973753839416e61363969542f7744534a7033484c7656454e76366e446f6c5a31442b6550356f50556a714434684671636c6a39506759513637666c6e4d667457747377676a416f4d6957627453686e5a41324367475345327a55646b454a347073464973674354326f49684f324a6870414d63696e55516354642b69522f354e7630792f54395037467a4c684e6e7076435553473744337379396269684b3347593079446a6755486d3756693566597777504a6249656e546c48544f51506452627a747032512b334c44394f53787a39513871666c336f796966346344336f4461394f7651697775674236644b71762b6a54765331693545486a702f616e2f414c71787047523757552f756861675a426b506f647a776938334e6b4c6e2b4e2b59476e654a497a304261346571784a5936766372507654494132792f61674778394f334731502f414e7872742f6f6c483858634c624f4d694b724263335a7439553341354c4c503161647678786b496671642f676736766b6168706c5875634b714f7a755733307a376d6f75586539656e45473543426e6262365a4d5232686c6a2f2f41426445482f684a2f77447a6e2f36714430633755704e713775536f6c614d616d6f58452f77447868442f736e2f3841536673566c6e2f4c37476f61375568484f57702f686d6736586c754878545347504650624f333349383362793576444c7447534268495649787a51557971475065694342696a706f6868346139694264446b6b6469535243636631455a69424645476a616a475873566470494463454c636441413549535044676745674d3074427a644e3950464442414258755270516f44684c48384534444268673253425766386b42464f49674375484643476e456f4a426d64475558706b69496952726970454269794341436779524c6976737959557145506945423148484a5144674541334770716d427a434352496937667654474150496f446d6d71634d506567727557737946534f4c7353742b48466c6939514534523832326350454f3142424673584b4853467a50376c4b4f656f486747545439586c454151397a483845485445684c6777556b3250374678626e7246323357525966792f73545239567654413073334f4a6442317737566273556b75575056626d71734b675a42435871747a394d682f70346f4f7271314964564f4b3548397a6e5455476233702f376c4f5962524c745a42316259667351507379354d2f5553412b6f5237596c50483143354961745949375032494f6f325a46564845527177584b6c76706a36614a523668642f54497935494f6f435a5554776a707278584c4739756b734b446870716764376641594434494f6d43484b476f6d754b3530742f6350314e5376536b2f755a4930366950394b447136677a6f6d7062325061755350556270776273306f663347374d3466443830485838756f4c49475978584c6a7672306348776f6f643775496e544f4c782f686a31494f706d416135705245763847584d2b2b6b4b73663953596236342f574432494f6b596b657a4b6558356c73776d4e513453775061467a76757034316267694e3663525642793931366466394c754864374639415056483950646d4f613748706672646a66786a356830586547535350717567316a4976346759724d625733505659694931344e6a326f4e6e71666f4e766454382b7a3058486559796d4d2b2f6e3731726a44533375717357303373724c516e31522f397659756e642f71774534476f2b5048336f4b764432724c762f6f667571716a76764c6c6f75366d3467505656377a6361353074334a61523079695066696732323545734277717441384c724a744a473478492f33555042615443686a7739766b6753585a56505568536b4d4b6c52336f676f414d6363554f32685638786f4f5655706867436754532b61526a44484e4d7a343143575142514355535063684d52302b77566b414a59634d315758346f4b4c6b61304f434c354945504d794f4b59596f426d7855634367396d556c45755477516c55383041614f46613155595942435548476b4a69432f4469676d74673376554c524a436b6854532f597051596f4445426e4647516b514b6e424e70616e465141416667675544765269774c4b596452775571545549494848596f7a46307863644c70587179415359795a33545362744347475655582b6c7355436b354473393662474b4a6941684b4e55434341666d724f3342544233434a5a3250424149755333314c566132772b72784b6a6257764d767563674858536f454663656b5a4b475144305566676c784e4545417277444b43476f2b32534d3575654b676d77634371414679326b736d49306c494b6e7456734e55554267574e425247754b51523034352f424e4d5a6841776330434e77617145496a6d6f4a5a6539425663326c752f41517578706b325379585054663841733366394e796f393636496f586b6d6c4855673446324e79785463514c5a536a31522f5a336f367451315a44394b373465495a59722f70634c703879782f54756376436535427a544936714b5342667078556e7174543871344775436f7253515443736e4842424a7977624262396d4e64767657417856767075354858616e516956446b55477951435a6b4d73676a4b427766385541774c386677517a7a2f617242484838554a4238776755753963464a436a4952624231416561416936625539663841754845666d7333712b7a6c50547674742f774174762f3152344c546f7a2b61666258664a49683942773549453949395574656f573367476b5048484d48386c5a667365584b64775954625679492f504e63572f364e754e72766676646d32676c35526b654f492f6c50775870524c574e4d386330484e62394f48357075597a52467252493279634f6f63782b784532786c2b39414278554a4f53595135684f4c52474a727751556c41674e38316162515538724a30434d3439714b524d7356614c42503155374d30504b6c492b4b69436c794f6b3566464f37717a79537a4f48536a62534831683046635452467a6d6e4e6d57426c4769687453627852446f464e516778495444625a61676d466b3553446f4b376245454252714f6666386c5a39764934454a6a74706d6a67494b785771683675354d4c4d786933747853655463624a41526735514d7375784d625578395566626d7035647a4d32796747716c6346474f4a787854433349427a70505955445a755a4d794132533069542b6c58776a6a4c357175466e54556b4f517035676e724f5143426242506c784a784e51724a38637679565778754335743453414f43746e314f79444f545467713568787756302f447156636f6167677a674f584f4b624447715a704d31434237314f6e545241704f627068583271687a5447725651445551477954524164306f48306e4568304143636b424c67664a435263456f6d4f55614a6943675545594945614a616c414151575145536153514e455a786f6b384a39717077584b474c4e52414e4c422b4b684648546b4d55756c6b4336586f794a704c55674271545546545641434b55505570703034664a4538364b4d31454138564d304b793755326e466b32724969694374304d656f5a4a354174564b42514d67457365724657527338443074376b62547a6f5663426b4f4342573059436755594f5737314b4d366862415a6f4a67634b6c513953506c364a4e374d6847625651485458424b5a423054476c4d552b6752376531415938436a474c66735148476965464b5a494662546e54336f784434344973486f6d59456873304249726c564c637351766a5263414939785970384f50344a73516735302f547051727435552f525038442b61776c784c71704d665448357230416f5652757470486478725359384d7578427a4e4e4835496a496e4e4a614d694f6f4e49644d75324b5a715646536768647959344b5a594f794955304841344946664d55775544446b555a31385075554c593549424556726a373050475854796b65376b712f43644b43516a31786642317132682f70312f584a5a59316b426b3457763032457232336a4f42306b6d654e63796730456a736f68677756683231302f5750397148323137457a482b31416d72696c6352703755567632747a4b55663976375552744c6a654d6366446e373046526e583471486b72593757365072482b7a397167327435334d782f742f6167704a597345335a524e4c61336a684d663755527462677a696770314232727752477157412f637244746275416c46763556507472786f3866636753526c706f6c50625258666133426e486d3455473175484f4b4241476654775378476d7056683231376a465137573663347567554e6945744f31576a61334f49512b3075343668376b436e77302f656c3131436637573841776c456f6a6133424a2b6c4257546c56453143732b317538596f6662587335523979436f53474c4b4163565964706449786970396e6362454f67726a4a304a5143732b307576394b423264334c5367584d4d6a6e554d4f536637572f786733656a397264794d5167706e46384d4f4b5a334b63375737394a67503950375544744c334743426457717642454e67703970663477662f41464a68744c33366f2f37542b61425449696a7063447854665a337a39555552744c7a7538616f43445536614f46794a683958466454636e7949506349476f365233726c6c713971416952784e555454444242696338666770705a75654b41366e7854437442564b7a46796953395542635549537a70346b596c792f47696158684c653941615736704e447837307848426c4b346f466352707878554a2b6b344a67574b567466426b45794e6553563051414b79782b444b4d7871674f70712b7a6f4d4a6e69692b614a6b506f51497a7952302b374a4143696c666234494432344a52774f53505565616d6c734d506d676c433549716f53443249364b754648714f4341667a66755353424f6d58374659334434344959304c596f4b79416131537a4f6b463668576d5755736c5430365333356f46746e2b6f3363743049555747772b736759734676684e3334494c524546684970774449316f7134444e5852716553433249646b625667655a4f363369594e6c524345656c61724d5737454750315431434f78746743747964494432375664744c5032317658507848716c32726b54394e334f39395347343345644e6933344b677670777750477677586476504c7735494f4e3979625677583530457a312b334a64714d67573446633264727a496b584750746773304266327a2b56494750365a2f677944756e696c595935726c6a315356732f3162636f6e2b4871484f6d533078395473534e434834476944636c7a714653647844393067717232354948394e687a6b5547776b5238525a5a70622b32447067387a79773936776b43523153367635716f52496653506367756e7572747773385978355650354a4a41345938314d4437666b7045682b53426f74486b364d52707a5574677369356478696765464f70474c38556f714b2b3557786e52416f4248654d3059526671774342476b56547848424138584b667731782f4a4977626d6e714d6355447872565275435639564169506b674c41494774426971336d39436c6158363046326e4c4a526d71714e552f31664254724f457a376767766c4769686a6d565257674d6a564e716b4469677449716a4b4b714f7248565243546a4d6f4c5a51644151417756656f354571505445756774306f6165395643347759314b4a7642694d454675614259487456486e6a42413367434167756b497331464e4558664a5a353365784c4f396f34494e4a6c4770705446417a6a5077724c353857366a46304c6d34674d5a44386b476956324473784a355a6f2b64712f36636c696c765268714a376c574e36666f6a49397a6669673641755438496942326c305a546e776975634e31654e59772f7744556b6c63767a70723067384167364c33637a454b713775375673365a7a424a444d755a396e4b2b4f75354f536739507477464b65334642666376366e3041652f386c587468646a49526e534a4b62375951712b43305737624e7171585165553952336c3664326475643252596d4f6b536f7935777436517850354c627635784f3676634e525754745143426f7961496e526b7352775a6d566c42536f5147492b714a7252577736694877657659716f452b474376747842494a7751625955417a2f4141344c554f5978376c52624249636c674670695a546f637665676671774b763067595a71717a4a772f74696e6a4539794232616756735936465743523074543471794f486269677478693437464332487379574d4b6773612b7a7179565a646943635155776c30696e656c59355a4a34777749514552617149475a7a376b7236714376616e5a414255744a457842777777544e6d6d30383649414132436151644733514d4d4d2b61625452384543514249374561484a534a4270777854523148464172443349586273626364633666696a4b63625131596c63766558355474796950717a4f546f4d4f39752f65524d7953305a644d634141764f53446e717256656e7552694c5a696630727a526b424976523845457341692f624f596e466574764e726e32792b584265557467655a48743731363655756f6b7670782b4344794d2f2b5751474c344a4337396d61754544356b2f77435934347175556645447a39756144314f334839434c35414c6d2b71442b70456e4d4d4f316448615345724d48796f73587145504d6c6a306a776a6767356367616671344c5636666674574c7335587061527059596e4e2b435532577864677135573479384c383351646d50716d316b4f6d62672f7773702f6464734b4754486d3952376c787a594e51546867686f6c6a796f45485748712b3249306b6b4469507954443158616672707a4334677345595a342f75532f62484548765165672f753233794e4f786e5333505539703955763971345274532f552f2b6c413759522f535548652f7565336c345a6b7433664e5165713249755363753165656c5963305247326b517a6f4f2f2f6439744b6b72326a2f5354386b54366e74612f31334759306b48354c7a737476682b61486b3663366a6c2b4b4430493958326357416e4c2f617266376e744a4d3937352f6b764e52742b5a4279666274532f625a5964694430773955326b734b6a6a68384b496e31546174535a482b6c6558386b454279614650354a667351656b50713231384f7469324c4b523953735369346c416a5069764d6d7a7741512b33306c394c684236663841754f304a7063375544366e7441386a637a38574b3835354d5254546a7952386d4a7978354950522f334c616b61764e4875524f2f3234464c6a7679586d5474597938493936513763784e66676739542f414844624f77764e2f70544466575a5631784b3872477a4c53416e2b326a6b37495054533951323745546d483449666662624b61387a35516a574d57644e354169355a714950526e66324939586d442b565165705750714f4b383139714d30664b7944446d6739523933596c345a67444c696f647a5a6a39516465574e6731314a34325030346f50542f64575865524557784b51373761436d764467764e773233454676656764764959594e58696739494e35744c684769344172496269316344786d4a46655847326b5730707a7474546c7350346b4870787662656f764d436e484a4d6435625031696a727970326d6b55774b6873457866416f50526a64327454307734352b39576a6457542f4d764d7732305170355053347737634548707062697a45307751473874525053315279586d2f4b70564879493674516b7835495054692f6248314a4a3372597850775a6c35775759436d6f46386869704c5a4354346f5052432f624a3851486169643161413851586c6874524c453056336b69486862444e4236434737735341305370376355346e624c7351764f655733572b47484e4a4b77596a36754344306776514837566235747552715141764c2b522b6f6c6b2f6c73584c386e7167394e3538577151782f5458354b54753238782b356557756251503030504b6945624569474d7a58706b355165702b35746a7754446f537651643951586c50494c356f786a4d654b626f50562b664751307550666970356b595336744e6665764b6d45702b4d765869794562637646476e747a5165734e794568394b5953743858586b593270767172784c6c534e6d5679735449646944316d6d474a7a2f6939716f485177476f6469387647334c6e492b4b576f357051626b596c69673958485450784d534d46594a785a75505a2b4b386648586738304e42424a6c556e77346f50574359774131484e53576741344f2f77416c3559473547674d685439535936324248665642366149426b394530326a4c57614c79706e666e395a5965325341755841307a49766b53673953644a365a5946575445424a6a57516f764b53334638564d33532f636269493863716355487264496a584e475038495a65546866334236664e504651583931344e522f5076516573637651317a5663764c7a707a586c516238427131474b66373363534c45757944315534786c456730356f4143416f422f4e4a65574736334d6169564d306f336d3430366454452f5656423679347878626e686d686f686d503556356362376333493435597456434f34335561526d55487070576f484141706847443949586d44764e783955704544344a527662756c675a39726f5055697a5a75556e624d6a33676f666232584c57394a344c7a41333136456d6a4f524838786635492f7742307667596b7339633048707446746d4d5755454c565141764f48315064796c5130554f2b33476248672b5344305973327a5275356d522b3174313151685476586d66376875783951626a4a4f642f75583862664a42364937537847676a714b575730742f53333756774476747a71304335694566377275595479664469673777326b4f43654731736b4f514f316c35372b36627954794d78324e2b616e39773359672b75764b4f4b447647786277474b4832567032304633787a58446c366c756f4d504d616e36565a2f654c2b6a55396348356f50644c6e377630717a75547238467a4b636148397136436944696d786532396267316a3963507848354c56666d504c4a6a56623257652f744c6435797a532f554548456a6f425a6e543178786f6c33577a334e69526b336d572f774256756b76642b5372747a4533302b374d4873782b4344743757377268702b6f59725271717934746d3462636f79666a716f75794a4f48434267676942376c4d454243446f6749456f4268696a525244532f59676834714d67347755466149493271707755786f67394f6167346e4641544652694b4a6d624642795545775571674f7048414949455645554556643633433548544d554b744b546d6735642f77424b4d61324a4e2f4469734d37666c6e544f687739736c36494656584c634c6a367736447a74496e755658577a77795854334870556d657757422b695652334c5059325562307a6276556c2b695259393345646941376665693447756743574266776b6f58646e475231325a43467759786c345a4c535051746953336c312f6d6c2b61763841375274576253522f714b446853736154552f6233663476444c384669334f31747a422b3668354d7a686568574575304265736e3662743777616364556563697377394232543169512b576f6f50446276302b377454716b4867634a7871437362414c365048305059327a307749374a532f4e43582b50656e4847332f414f7158356f506e2b33335633617a313270474235653243395236642f6b7471364244644452632f376b664365305a4c73442f487654733757503841464c3831442f6a6670306e2f414b4c663670666d67744675452b754c615a595a7849565537637853717573656b3762625035416c414849544f6e346c6c7046733861494d444d446c2b4358526f6d357a577956672f53635658434479714b69714338686f716d585452587a6b377371366b64534259744a4c705959664657636b6f71425641754a594b79673568534d616f6d47724e4167426a564f4233684d484351314c7669674d51704935494552644d7a6667676770386c4861716b6159564b4142425a41644c564f615945594d7957636e706d72447a775141366851703431505368452b324b4961574b41747146564a526c4b4a6a785569414b4f7743654a457345484d69486978616e385076546750576a71753966746934594573564962693337754343796f3663516d397a39697a666432684c532f766a2b53732b36747a714759494830386345597850622b5351376d313730737435596a4c466b46766b686d614a41373670644c3161504470565833566878586d724a627132333850464249516a77434268694554756262654f714564315a48457367595777507052454131593156493356703675796362757a4b675076514132344f39666d6a35554454676a35316f654b542f414965354e4f2f62346f414c63486f314d304e47717041397968763278577145743361784a497951503557594139796a63575a566666575830786c79552b3774533659342f7741534234526a48676d5a7043534133466e4575347a39736b763356694558663449446f667077526141784b57573473795961334b4d647841596c417867414d4b7052714e614d68353047634571655a62773979416c314a32426378435537693339535837757a47726e2f41476f4b7a7363634e4f58464e74624e327757696166703973452f33646836532f77445379655734742f7151466f752b58347071686936724e2b4d636152514f35745436596b6c417477663035635248465a6653643963336354435445784f504a6137312b457263345278307375542f41492f626c5a75586f54704c706275643048634169535978785379723766697070786453592f4e424a45632b435854775537455a75616f4b7870464a494e787172437a5a6c4c70306f464568483278566368704468574561537778514a70314e2b39426c496556486f6a706d555a696f3561696f676869334a4145756d45346e455971415a6e466b416937307a516f45524854306e322f42534d52775144714a37464a644e4f4b496e714747534234767a30792f4e424e4f6145672b574b5030394e53366b51522f4b674d586b7a2b374e526e4e5554554e6b454e4f57534154714b2b39507059686c487a6a3371544861676b52524b4253716b69596c736c6159365258464258534a504e426931453141574a5271314b494270364b7054496e7730545263314b55784f4278516164704847655278576d51594d4d3156747642587356706b37506b654b4148716f6c7735386b656230553036635545444b4d5467472f4a41784a6f3248746d6e442b424142456d6e7852777a79544d4d4547796955444f544a7659706a5369474859697a446b3641422f7154634f436a386356434d382b434275304b43555456364b4175464b4e6a56413368554d7a6d67394f61654d6e376b4766653755626931542f414a496455447749722b7863533030346a5454554843394e466565323430586a4131307a6e4576797145446e62586a48365654396e656a67597554714336644d5033714f54327367356b683668487769325278632f6d6c387a315546764c74312b72562f2b7375724f4f76735331795163782f56546a4730702f3841764947677367727143707141366d6d4f4b446d782f75625638672f6d6f337149424d764a2f7744557569597830742b7843685968427a347933354c6a7952337954507635526152737365316235516f516c5a6d42594944734e786562797479493676706c4842623468785259414452384d6b306961484a4133716f75473147646b64596d4d65476135632f766e61506c7433726f364956456e3779683559505945474456763238634d5030705951333550544f322b6136586c352b78516a623936444235652f4d544c7a4c5468473250554a502f414662665a702f597434675a436a5555303163682f6e7851633255642f494e353051694c667142482f4e48686746305978447437555562394e45484e6a6233305453374771596a6652703574767458515965395479714d6659494f6635572f2f414f394539796b626537657436492f304c6362596a694d45336c2b3542674e6a643130336f2f3756426233776656656961346156753056644e7069615a343855474132393037432b332b6c4162666354724f38543255572f574a5a4d6d4541334242672b3076696e6e7941645357323347456235626e4662644753686761647144414c4f346a454158792b66537039766538586e5335394958516a4854553468466e43446e2f6133662b394f492f68536e5a33584a4f3475446d4b4c6f45557170477547434448445a3341662f754c6a665339666d746c7361524e3669644a50376b354430344b61654b424e76416265334733427a474f487452614c63775841794e6557617068307653716d3166566569432f57442f3651677370323856586447596f7269716271436b4453547a52415a2b78526736494c507051435166444a4d49354839794e434b3449414534356f414f5a716f7a78356f3048687837564c63736a512b39424f334646686b7049484c465279415233494630315134386c47655444735241626b67444564716e4a48463278436a746a6967675042453473464455616c4d365a494a414a57695766735272676d6d4f4f4b4152672f4e423244506d69494e5641314c6c424b5336564a30504a475150636f5155434149694d63426e6b6e397663717a303971433633446a69726d627453577454567a544455616f492b6e6b713341566841504e5631426f676142513174514b536733743730576f51674d686d635543414f777070414556545266444a414966776f6a706f51704544417078422f626767474f534d43446769425776616a46712b785143706b475450793730444a334b4a6f616f4441756d4665354b4842354a73445242794e7a2f543345347453656d53526d71722f55576a754c633835516e4833565645594e6955456b4f4b41694a4832716e4c795170676768692b4358415a4a33707a5664506267676b7a6f44385077576737412b4c7a43472f6871736c2f72684c6a79375633545969616b6e446967356c7a303079492f72532f326a386c5874396e7564734e466d2b42416e557874357271797377416570556a6268634431486567352f6c3730762f774353502f30512f4e4c3565397933492f38413053365a32734d7a4c2f636c4f3068786c2f7551633452337a6638413341502f414f6151386e656b503979662f7742464664493761427a6c3346456265492f562f755163337964343748644874386f4b437876542f774474522f38413055563076746f385a66376b54743766502f63667a5163333762654e2f7744642f7744386d4b486b62794972756a2f2b6969756c397062352f7743346f66615775663841754b446e437a75733930582f41507052532b52764d54752f2f7743564664583757337a3935512b307438443730484d4f3233594c6a64482f4150527855466a65662f31662f77444a43365a73572f44567530714461576f3444346c427a425933704c6664452f3841356d4b483275372f415036732f7744364f4b366e32747645412b38716662572b48784b446c477a764866377154663841306f7152736279542f77446c452f3841356f4c7248613273435069557374705a4758784b446c6d787577574f366c2f2b694359626664502f415064532f7744305958542b307466702b4a524f3074484750784b446c2b5275523166637a2f384130595147313348316271662b7864503757314c474c2b39483757306147507a5163723766637977334d36667769716e326d34502f414f30586667463144744c4a70702b4a552b30733436416735513264366a376d364851473175302f387138653564596253794d49425162577a6a70516372374f34616663337531566e5a45662f7464352f77435a646f624f79486141716f4e70592f514851634d62575831626d2f58684e456251346e63332f774465753539725a773052512b3173666f6a376b484847796b545463582f39366739504a723978662f3841306937506b57545452483342443761796161492b3542782f732b4f347666384136564e44303978572f652f2f414571363862466f4268414e32496a62576855516a2f745163622b3162653466366c7937636176584e78334c56445a326f436a74327136647979656d7959366869794d3933744945786e4b49497851555864766230536b4d672f69646d373168306e5541634675334f38323179314f4667786c4f513067442b4a5a4d4f35416f61744b2f4648534a4369464535426f416756694d426878516b2b534f6f346c4e3467437a494b6d62784a6e624867694430313967695270434254497977444b41417638416968726a71365755303957434345474853692f532b6634496b6173556b6d4e446b676374526b4b45744c4a487753706b6c6f61673177514e322b775345667079544d576650424941776f67614f62302f4a4667596e344b54426467674f6f39794356793449546f575a67794d78707246715a595555494241442f4642584871446755543661506767775034496c325a41736851526242306a476b654f43614e4f3056344f67427172775156574b584333697a4b32327872772f63734f3363584a4d7568462b7842664179413430566744463158436c4a594b794959746b677574756662426139495a6773646e39517856356e634850755157546f456b5152564c4a3553446c5768426b75346c38306b6f50555a72584f324a592f6d71343252694a4832376b46486c367679524e764a6765356144747766716b676475425548336f4d38725559526f47717172682f657455797735724c376767586d674f6f5643653448785a4578794b4257694b6e464e464b59687543654c41567a51474d5934657a6f762b716e346f752f6368463265507851474d536130526a462b784d773431526a536f77515341654a656f524655596456436d69364270466d30714633526a6a38564930374167634869676168676c455150436e5163373732356762546b66705466334357646d6130655649463455713641735442424d6b464933386a5879354e3231512f754a646a626c37664261664b6d35637555664c6b417a6f4d387431642b6d32652b69716c75373242744e2f7177573379387a56415775626f4d3333457a34594570664e766670442b7a4c5a3558444571755733656f6c326f4d37332b46736539454763686b50594b386257444d35644837554878534a2b53444e355535564a6979723873765753326661327a3467696476625030734f31426b386b3861464b5953475a57373765336778622b5a56665a32523950766b677965584a3359704262592f7744355258534f7a732f702f774455557632646756304442427a7949765552504d70324570644148756f75694e76626a6a4350636d38754d545349516373414f37736d456753774978585146754553644937564e4561426779446e455231562f4a5743304a64517174776a484d42636631623171477a65315a414e3468332f41456f4e59684c685251777548496b2f7972796e39323374774f62737138674573742f664c363731772f79794951657346716631524c39697765712b6f783263664c67663630754830766d6561382b4e3375522f317267482f7742516c55584875396379387a6e6d5478514c474a474c4f61796c6d6330726d33326f682f636758514c626b493459355a706e4c4f63556f4d74564b48696d46656f393643434a577a624d53435173316f6559566f73456954745376747a51644f4c514438553976564a675430732f76564e6d52627138533057366b38616f4c524455784b7444526f4d54677134536f444c325a57786a454230446d4a666b6e6955756b50584a50494d55446a39557579754b4d6e5a49413763566467675271646961414a4c46537077376b336951414d4b5a685764694a69525134714d5164524341747077784b6549413658716c484248536767642b7857457654697135477445394f3541476375755a366a367235454a6977786c454f2b4b3162712b31756359554c4c7a7536422b326b77366d4439324b446c584e78754c315a335a5654624579382b414d6e72585568495535464e734943473774366a69554865336352354d3574514446655a6d476f522b3565733355645669364a646e76586b6951532f4241323330693543576272316b6263684d5264655373794f754a6f7a7839363968644a6958374859636b486d2f2b57354b556a6d55766c6b5372554b2b64732b59644978376b546234634b647144746248717352644c7564764b354a34302b43797739534733746933354a4c447843576161353678456c2f4b6d427866324b4234374b624d44373671762b337a6b616e393649395968434c4553537939587335435568326669674a3256305a756671532f59334d5454686856412b7557734978507479556e3631314e4730343535684134325a776b4b2f4e494e684e7174373142363244307a746e476a664a4e2f664c522f36633235565144374b556155356f53394f6e51305448316d7961364c6e5a793730503735614d71526b33504a42492b6e58436351333663506d6e47786b43702f654c4c4f597950762f4a5553396374442f706d58657943324f784d6a7149373378522f74785a774d4d65617148726c6f2f7744536b503841553667396174786f496e7678515365784c644d5135783442534f776e45365a342f77414f415548726c676c6a52503841336977613958626b675358707a30464a4442413744584c457847664d70763737592f69373054363362616f636469426637664c484c346f6a5a534651443845592b74324361366f397777512f766c676c757273624a425073702b454d4f6371707637644e6a71495063796b765862556641352f30706637785946433466356f424c303053706d702f62705156683961326f3661794c596c442b2b37624371425273705541436e324d337761714d2f5764764a394d704a763778594d66786b67582b326d646456554a656d58677a4e494839556b2f393532734a4853386d5076522f75396e4433643643732b6e532b6f6a386c507344514a70657357636f456b4944316d794b6b4944396b5a56634e7a554f7a4a446c6d546a31766278384175562f53507a532f33726167736462384a424168394f6e47544168736c584c593344445556702f76466d51654d6852542b38576156484e426c2b79494c776f5662443036354c50386c6550574c5178723253536e316a62346b36666955464a394e756b73395570394f754167664a5852395a3270465a7a642f3030526c3635747878626c45664e416b765462674265696e39756e41315a4d6657396f4d7966394b7348726d3149385a457563584877515a6a366464464142337652512b6d37687136475a58483165314b6a676e735a5048316d78476e552f4a426e6a36655764675432565453394b6e566f67393630663372624e5752712f30344953395a32686f4a483359494d76384162376b644d59344e6a2b43623747346347703731664c316a62506e376b77395732352f554547582b337a683259492f5933474a4f4a3850597450384164647646336c547553663376616c39556a5844705155783263326b342f6c716d6c735a537172342b71375166583845304e397463544f4c383047516245344f78504c69703972634a5956504662507639742b765533755550716d33416333474a515a66735a4e314e2b6151656e54374f43312f3358616e36332f306f6a3144627453587651595436644f4a315278644d665470737a676a466c763841767248366d54783356677359546a584236494f5766546238324d524676696e6a36624f6d556c7468366a6166786a4d4a376d3932356f5a2f7451633657786c6e6e6d6b5070732b33757238463052366a74685458547354783332326e547a67446b45484d4870306867474b4d665435487458544f39734d2f6d4139694133746f3453487951632b5778755030354a4a6248634d534978666e69756c48645750313974555076747333564950797167356f324634774149414a552b7875616d62504867756e4c66376549704d557742435937367a444673454849507039773668325655507039776a7143374233466e2f6b31785a41627977533179595a427952366649534f6e4a4c3968494e567543374d626c6964524a782b48742b3545377178627870326f4f4c485a5859504977664d616354326f6a5a33383762486d56325937697a6348544f4f484645336262735a78666c4b7144676e597a75456b5550492f4e4765794946616a3675664a64377a4c594c76524c356c6b38554843387136515978746b413570597871414979316469394635747551624a53562b4c446767383943784d467a4173552f32303877415034563368666a4c77736c3132375a61557572674b6f4f4364727078686a385573746f662b6e624c387350697651487979576353526d32626479446748617a6a54504f69575667697334795059752f4879716d55617079626441634f53447a634c45626c4e4d76636d6c7479574d515764656930526b4e577242542b6e793979447a68327246694437636c4a376557737845534f656c656b45677a4776616b4d34696b666858323730486e2f414369656d63543344386b73374a6a477443614d79394c4359784d6d664b564530626d6e71424864564235723754554e5a476b63797039684673533378586f644845422f62347165584454725963575164354246524245455645415750642b6d326431575161663634304b324b495050334e707574734347383647526a5358654d2b35625054647872653258635965324e4f61366a724e64326c75354d58476159776b454768676f674579425170676d514e5541493730716b704d6f61494a70344b434c55516c544251535145714369684876532b394178504243556d37564d584a514748557942695267464e5446386b6d7051536f67736a564f713444425749426767556561417851517063536d634d6c6f7a46424a534371753262643649316a3237565a7152623979446b37726137797a58617a314439467976754b345637317231433350524c54626c7a48357231392b7a357347456a41355347494b354e37306935754270334e2f57442f38414c694a647843447a6b7638414b4e3948704d34767845526b70622f796e64787063307a707758582f4150776874542f314c6e6254386b502f414d4937552f3841567565373969444a442f4a72737136683265582b31555850386c33516366307950355630542f694f32616c795935736c2f77447768592f37307376705163342f3554757334322f3971552f355276442b6a483950375630782f694f327838325a2f77424b73482b4962555342383266772f4a4278782f6b2b38684f7569513461614c5a752f77444b495837494541626433344476344c6350385332636a343768393335492f7744345232574771343437502f795547437a2f414a56716870334e742f346f55397665757a36587666766f797544776a446a337249503854326d5632626433354c6f37443032333664417874475568496731516167535543355668783661705a527741514a6f717855616c457a676a45464d4955715851566e5339557a444246336b32705070616d442b3541755748656f614b554e4578686952564257492f7177523452543654696a51557a51563644674170476c636972477a2b4341706967574f44466c4d30592b4a534d6669676c416a456a4e4e486b45726355466d6c6b49456b7363464e4c467852517851633766624b6479527557704d616445685354664a6370764c4f69374854633463657a697651336d787a576137596866476d384e58504d6469446d56505341695956396d54334e72647342773979332b7236682b615870754d516677514c434552696a5749504a4f53356632717070634e373046596a4c50443235594a4441745350617254346572344941356f45455834496153445657434f714e55706a717878514c7171776f796b7061757857486c6b6d6c42787a4b444f4978692f4e4f4c6862544842487933706a77524f6d4962366b434f6537357145544657446346596254314b6e54674d45434442686a77556b58704b71656f4e4b496547735543687868525152302f74434d574a636f6d6c525641724579556a2f4e54386b3774306e48696c41424b4259445755305973534a46474d4d564a6535417449304e5278544354533570686d33616b4d4d32716755783165493137636b6349736e474c4a5a526f47642b796942617a7278507756746d57676e6e306f4555634950706941677475755879706d717a4c7145692b6f44706c375a496a554a6457444b5463476944525933596c49516e535238504e61433861346838467a47303969305737354443526442727053534e7a69376c456e41385570444874514354436a4a514d315a4c464b517862464258706156666d6a4a71784e464a427767597547515a7a4836545273564d45382f467956636f667177475341676876324b4668543549434f5455525944444e424e5647356f4139364e5a5577555a425034517071306e6a7837456449474b426c385543396d616e496f7a6a68374f6e4c3861494178494c6f47754f484e535931593534496e6d45414546477a526b3439753547504142416b615949306b3852696d594d78556c703730413030434a48306f675552314d616f453074546968703661347177435438696d454e526246426f747342705448334a3441594a5a6734527a5143515a754b4552784e455777644544334946626a67724763756c6e55746d6d624949426e52514372674a34307269364a4f65614251574e457772345564504651527951462b4b426a5245427a5842484e42415433495a50676a3068526e6f674d526779654a5a4c474f6b4938325157686c774c3538726433534d744d763977597275784c345a726a2b7051305839592b71492b442f735158475742785444716c7177474377416e3936736c666b526f63782f48765162744a66325a5453636856637a58504d6c414f4f725566662b3542307450373855664c376e57537a6349496849713433414d5544343055416f3641597333376b4463515070427a566e6c6747707756414e4f7242445645397944516263576f55426242774c4f713966656f4b63516765567365463671655647744f6c5669596c2b314f344a344241777352496f543733524e6947494a6456776b47775550446a3730467073525a792f7651467145474655676e3949556b2b5a5a425a477a48496c4e354563696b3570482f41445150486232794d5a4f6a4778625a6e50765567515647716766376547465549324944416e33704b6a48334b526c566b4668735738616b6f5373572b6676554d6d3857536835555154376532613141375549324c5936617067546755424d6e3830424f327430786674552b3174444c346c534a4d6b54517669675562653145356f7932316d66302f67695a426b596c716c4250743759792b4a512b31744f37662b6f6f696448497751643430514c39745a616b666d6b76326f7774366f52414c713853536b63634f614266746242724b4164534e6d4e755775474576334b77534d6733424c4d3134494b69356f666571626e7757676a5669714c686569436951593851724e4c456e6968474c49307a5142324645636e5442694834705a6e6867676e5163423746545270374552476e4a534479446c416f6c6e334b4d43354b6a5030594a6d6f7942496b464e5244416a6d69534367585471636a4a52334861674a5a7069314167586d55326249696d46555446386149414451636b4b534e55534f6d69574a5145414351536d4c383159447737564b42736b45616c63556c59393663344d4b38564d616f4270444e78544161672b534a654e4b493654775153324a514166414a687952374b497846614945304876556253614b7778427843566a4a4163656b34494333303154614169415452414731477543624155442f6b707066484e466a673254555151524a514553376a424e474e65574349397531424d304177504e4b31436d456e514776656e5a6935536b344d69314b2b3542496773516d4474524c6757524469694446366a467a616e776c702f3341724b78573331514e747a4c4f4a6a4c2f31425a4b6b6f4641556b34384b5978417139454d41314543396276676f4b79706b6d4c5244302b61567156446330436b4139367a6e62325a4773652f714834725451647951773159494b62647533596c356c714f6c6950716c677651325448514e4c456677726959534c31664a644430696d30682f712b5a516279564a527a534f4d73457850424248637144735368734a596f2b4846424144676965435846536f714b6f444c6b6a564168324b6d4e58514d446b6c4877554443716d707a52424b356f3177513156716c3145464134596d694f61516e54553979684b41756f686b79674e48514857634553614a6167415252642b78417259756e464d45485973685878464153636b583449476d4b4244486b67596c4146304d436f3147344944454e52522b50424179306f49476169474e516f547853786d39416773664a446b6c6430516631494378565736766554626e637a4170326e4434713270574c666b5438753263444c5565794b4444745a66616743513530784a5461704636346e73376c41436a703556434147524c38556c4d717036753641455836732b39415a737a454d6c6c457468554a693247535068346f45784f724c676c6e4776465044566e52535161714252467578423636416d4131456f4d3155432b5742524433706741554437694d6b444f633073366a74526f4f52555941345a49414a4e306f5944414646683845325064693642554445674e57715a326f684f514861674c525a51524a476b594a59343855394b6e42416a687a7a2f42416b6b567a566b525471437267644e43674c45496b675a4b503370497363506a6d675359524d51445174326669724a597556575878346f4b4c45544b36546b74385467566874316e5159397933322b6e707a51614c635846466248486b6b6846687164504846425a6277342f677264623431566463385079566863396941365269452f4d30644a414e514a794f4b415a766b6a32706644795271454461614a4a426753536e59767a56647950516333515a376a5277564a69537a5a7134796346492b494f534375524d696d6b33654559784f615349596165644544644f49716a475053654b4f6e5361596f6a53334e41736f366d487456573046436b4558427172596761614945455142555a736d695233706f786b6148464d494e5446416e5552704f43735a7145553470575a4f41775144464e455a5a497354324d6f357751534962464e6b6f4b68434d576f67414f6b3855756f38455a6957415345452f556773316c71685148395355786b51447149536d45686a497367736b2f616f386b49755251714145645770424135726d705771474e564a784a7a4b4365447654565361434d4336416752546967632b35415049616b44436a42796f496471427052344654426e5378426a2b3948745147526f364c6843496f337379562b48733642395879516b2b4b5556376c4e575341366d4e457572535061695751345643703357387437473062732b354269396139552b78686f6758757a7779626d7648776d5a47526e57524e547a5233463665377547374d764d2f416345306146386d51466a7062345949416f4871714b766d6a4b6c523765326142626351522b434d324a42503730496b786477694a6a45443855456a6d654b716d617572545576452b3544537872563046634d6346496b536f33636c7744464e435045494c4944525869746469476f567848795755794936546c38467332773639584a6b485173776a337252482b49594b714d4754323958476943335378664369746a626171534142465663774277356f4a7a50743742474a3168676f486648464f476a51494447476b713044334a47656d4b636e56683745494959384d4559645663416d474655613443714138676d484f69554a6d2f5967684f514f4b496a7978554d4d314a6b5246582f616757556f326f6d63793052334c7a2b362f796d414f6a6277314439557346627564784c65457a6c6845793078356a4d727a47486567375731395a6c754c6f746557414a477255576e642f2f6258582b6d6e6356772f54682f5874367369752f77436f6874745042704f6738344344376c663666415376783968334c4e62704856375557763034534f366945486f4e384f693452776465556c46674379396475596e526469634e42493756356173774e497141674671324a585951496f5a5258724c6b6e6372796c6d514e32325a596173563632454e41366d596a4e427a5a324247547834716d516a6e517273655843703039507479565a733235355a5564427879476f415345444e7941667958614d4248454d3375565534577a56384f4d654b446a367052693569316571714e4e4f7269757835466d6461592b3951576263736d2f4642773551475178514d54394f4f58373136443757414a6d3248755652326c6f2b4750385344684333456b6756377769494142673434727477326350304247657967613661494f41624d546756504a797747533738397043565a436f5666324e6b64576b50376b484238707a696a4731717156337a744c544470436e327472466e35494f444b3058596c51326d366e6f7539396c616e314d584754555366322b3234654f574344687973416d7042437238725457492f42656b6a3664617a6a704748734570324e75513074376667673834596778306c7046545443577254543472304d7654344d7741594a763764455930644235333759533668552f784d6a4b77315069765251394f68444a6839584e4e39684441554a78516561386f2b4534636c50492b6139464c302b45614f6850307949346f4f44477a497359353039714a6a596c7964646f656e51774234706a366246756f3034386b486e3537636e6a56494e714332724c3656364d656d32385850596e6a36645a4164713855486d7a74644f4742552b334c4265694870396e4930393659656d785a73754f53447a6374744a79694e7358624476586f5a624f447354384552735974515949505038416b796273566632776d373050765870667367534777536e59327a69483755486e6f374d3661674a6673706b5a65366939474e6a6162556a61324d4b6a4e423573375139773978556a744a654a7356365437527a705973455a624b4c7553596f50506661543146382b4b45726338413639463974426e6b4835706f62474538522b3142356637624f54384d4659624f673147574c4c304832555763686b66736f53616a6e76516341626638456832307341463650374a79376e6e795379324e73687056664c696734497345787251486b6c386a42784931586f423664626a466f6976765a4e2f626f75512f3730486e54592b6f424364696d6f767a586f2f774332774f483731423664434c2f53536548424235305749785054484a5274514d6d654946563654376531474c41504a4b64706246526e6a3349504f526a434a72386c5a43784836717678586f50737263532b674a7037433052534c424235306255456e5234526b725074512f67444c746a30794a475746453050546f7836515333454950507932306a585342334b5273306476685665674777483852484e4b6654774f4b4468477951476a692f42534e676b31414a58654f78684b66566a676950544945426967344832726d76376b2f32623158614f774f556d7970696b2f7474726871497a507a51636637586d65314b646a716f75392f62774b456a6b79503841626f4d65706a7951634346675250683967726a5a66715a64655070774242316b41636b543664475131416e48326442784e467550416c3830664a456574763841614632592b6d322f707049704436506265684f727451636d6533484d6a46315a3549465032727052394d4548447550347171796578444341375548462b336a4b70697a2f41464b477a43497970775859752b6d696448374b705436634f5151636362537a6e48342f74523869455251632b4b37413950674b6c6b747a30385842774b446b2f6277417748372b785162614d715a686451656e4e4678696561622b3336754e45484b386a5371355770534e58624b713742395031426e5568734b4d65333239753142787a626c4531643871354a70516b2b6b796d4b664e64695070355a2b4b483974636e4855666169446b4862383553516a624d656b303731325a656e317a412f46566632776d704c494f4e35416934632b33596e6c5962416166395258572b786b78694a75682f6251526f50562b724a427a4a786e626a6a6a5368553633786b772b6136635054356b616143434a394c76546d2b754e66676735526a4e2b755263344d667954577a4e6d3153393636583971764436362f7741763755663762654a65553875474b446d7663674863794879535844634938522b57507858562f747248712f4a4a4c3036623667572b4b446e526b5941694a6c37793556594e344847587658546836626366583470634d45307654622f307367356364527135427838546f5066773830767758545070392b4f63666d6a2f4147712b2f697078306f505a714b4b49496f6f6f67695646523041354b5a4b596f565a414946776e5377775449464e56575a58636743725348515a6b4753642b39476e6b6b766d4a52556a7659597a456f667a42616d7a555973677a2f63575a42395148357034396643695932347a7869437176744c6636514f796942784559354b536c38565835456f56684b5150413143587a53356a4f4e66707a51584f314d6b7659674a3675314538596f476878554d713971726479377152636f4e4d4d4878546f414b49497958735459424b53324b4263305a4e6956473549544c696e755141715a4b44686b796d7253676d4835714e7178513155777955314e584a41686359464d4b6a6b6f484b45684a4176613642494f4255726b6e7751544c324b47724e46766967546c3765354249795a367071396944456d7642485542584d6f4247764a5761544b676f45494279723046517344696a354d48647171784641756763464e49544b4941516f775255514c6f6a77513052344a314543655745707441687346616f676f6c614f5341746e6746656f676f6c486767413437466f4b4269434779515a3842706453504e586d48424c4b424f4b42593831432f61674f42487652714b4d677275687734565563586569766e5448425a785771416d6757612f73376434363464452b4f5257696a714773654b446d53684b4a496e53542f4a48453043366d6946794f6d3448645970374d32363235616d2b6b342b39426e4d435166636949476a6e3243574f4f502b6e676f4843417936634d75394b7841664e575262336c4b4d78676756333756496a554f726a524d5761754b476e705a41633047397755426f3570324a6d42515679695157466171426a4c6f7179666d555a53417778514b54456e534d30686a567868775434345a466b336951566e676531453471616631666d69483441494a45475234717641567854615148487952424758754b4153306a334b434f62493077434c695747434263582f5677554a3469714452754d5564546f44466e647170596a365a564b68646d6a514b565143594553416e7078526348436955683855424966386b70443446717074526c67475965394168714d4345414a41365737454e416e5647597148707939736c4a754747534272467964696772444853563049584e51634769357a4e31503349573768746c34494f6e4c71354a5144696c686446774d63565963454366424130434c5531756f6378374d677a544c554b4648545842496b6a4644476d4343665456567456736d566b3847535150356f42707a48636e78524170524c4e41706b31446d6e4d736b4b7843674131504a76306f492b5a554e4741772f424755523452676c6b66464d5a494a455a59684e4358755377505652474e4f534139514a554e59756f4d4f614c55624e4172454978724a6b7863304b424a77442b3342413764504676696b454b4a34304442475261707237636b426a795674746e426a5135383156474f6f506b74467141464a494869787954447171614a6f784a485348566e32776c57534369636130524d434b2f4e61664a6a6b6a355551676f79344a4a4e785a61685a674d416d45496a41494d304f707139715a6e562b6744425157346f4b424867677a5a43717646714b67746a4242543463564e4b743873387663686f6c33494b325964714856334b32517a5159494a45353449754d3075614f6c41577a433576717352356c71584855502f535630512b4f6179656f776a70747950307a2f416f4f6445474f474753465a564164574e566d536b4f39554379554d65786b4449594555436766756442444d7972466e5769315058306e465a4a4271304c4a67644f43445a4f6c4d446d70713146686a6b7137633966566d684b4e5846507851584535464456324a496a5868337148554279514f4b59715236527843574b6a6c6b444f3661435458704b56674d5544366753772f63724357594530564c366144464b5a55636f4c784d785a5136694658716a6a785131746b677564303054526c6e314d53324362454d4d4546356e6b4d6b4e544871565a6b526c336f52496f355157367554706751574b70656c45524c6967744a3147694a6b35376c6e46776c5765626c6b67736441416c56367779506d4433494c48346c4d5a4d37594c504d684d5a4642644b544251537a437163797853756776316b5965354f3759724f50624c46457a417851577950596e456c52714a5946515361673766643730476b3438454a44334b6e554a5970364870514b523953707646583949464f785533364e6b67523663666238314b7658683830416f7a4949346467674a61585a536f37555a635542416c68676f4743686646544241695a74584e434c4f694272727751513474774446536351314d55326b6843517967674559754278524a7a62322f59705550784b47565545484a4845462f6367426b6f49645046415930373147594e464531536951694542626d6d617245494131635a706f4f49307252417071375949793452556944474b4d4d572b614353714d4b6f67697047536375614978743661667351426e726b45635564414c4d72664b4a41356355465552376d546356614e754d31594c6351585a426d306771526931414b3851744968455641435a426e306e67694979563669436a51787a4b4f6d756175555155746f4b42437651306842554b344965572f566d72644b456f6345437334556a7a52414955796f676f3363504d7358496e4f503756676a71594e6d506575726f31524d654e46795950355137506b676378565a4c6a4b6959784944706369436768693365704b7442676849366b706a7078515179795a415a4d677850656c4934384545674d506d74766f38694e71426d4a534878574a364d74767059306263526c537678516278544371556c71424179303079536b7961694377314c7141354f7169344874696f36433456514a717753413137554a53494b42787a544b717448716f786a314642615644514f465743366d723368412b50596f354f4371427a50747a52312f556761707878785452497953665336476f78774b43357a33494f79714a5545387330466a6c2b616d716c456d74514d666246413572584e545546533556684b41732b48656d6c49344b6b53597369663146425a4c356f385a4256366e4c484e51534555446d71414c46495a4d777a51313170336f4c444e687152636a464b4454696c4d6937494c4877487855684a676b727766384146545547366851494c444c58515a726d376f69356350384144306a356c6264624f566842794f6454336f465a6a326f36423952596f3149513035494a346646696c4c3571325665394a49506767456e4264516a4a457561484438457363574b41454f4b4442517879436151634931784f4951494f6e7155306b315a47545a346f534e644977667351446b5568365043725048496f526a336f4b3234342f6b693756396d514169394d55354753424772375959707a587350746d6742334975587267674169306561423079494b50346f753152524258526759344b306b532f42444e73754b44615a6355414b517361703344596f423877774f5341634e4a62696977436c4a565a4d59682b534243574475794754414e6d686b2b5842535a31394f53424c49494e43633171455333557149437241592b324b3077654e575a42666169634665596e486771626275417234764f4e55426c6b4664454356597167784944697175746e6967636b4e315a4a513731544f6749686b45626a3270716355676741587952694478514e5130535853305754344f7137754c494d394f35714b7350337179596153493676326f465a38564e43667979564149733243414443696b5931624250477557437338726c6a33494b6d5a677247484a4e35636d594d6a35527a4b4373523434666b6f525772712f516835584e4257525651556342574732546d676263754b434e37776c416642506f4a4c6c4d7943734a677a497369675534493969575163567856586c56724b587651584e7855715656354542783936677352796c4c336f4745426b6a326f47304762464c3559777167664a486b7168434977566d6d427277376b414d684770397539457a42536d49646b513253436338736b7267422f696d492f636c7871516762554336414e536941314572356355454d684a4b4f41543468696c514e4b574b516b34496e354c4a767655625778742b5a50786654455a6f47336d38743757306231374159527a4a586874397662752b7547632f434d426b724e39764c75387561372b47556367466e302f704c785155776e70784875566d7468517555306258454a3765326958656b6b43415566326445645053726f5734783756504a426c6d616f4b3349376c496753724965394d595648483431546d30436159664642544f4d593041596f595946315a4b4d6454422b7855584a784652677942484c4f6e683155415657756c61555631754f6c6e515748476d4a5077585232594d53334c504e596f4d4353315630747630744c46676732414e773763557769545170524c5347495634422b6c4130414233344a32444a593468577457694178775944696a474f70704f704539544a74445a5651575144643454364e5355515a302b6b6a6d674c36512f636d67524a434252303855423858596a454139724943754b786233654777526174316d637a6b6731333978437a447149422b6135743331437a492b49456e2b4c67764c622b5a755870435a316154516c55575978686467477071446f50534745576b526e4752393638367a69685972302b34674f737878625432746b764c4765727451613969543538522f4546337437474d724d35444b4d6c774e697733554f442b396568335a38766258524c394a6a3730486c34474d514e533062486f334e73354535716b525a6f3969763256747478626361673965585967394c6369664c6c47586936682b53383143336f424567357a355658714a4445526f4f6456672b30307a6c4a714642796a625a794b632b436b726c365972636b512b5a58542b30342b4a4a5059757a2b46427976366875654b556635545434707457344d54317a7068314c705432656f343449665a6e735163364d356a367a32464b623034665551756c4c61584253454e587469684c303654366a447451637a7a72676b486b78344b473966705057563154734e556d7278552b786c705939705163337a6237755a6b35714737754d69572b613378394f6d484553414f59542f59334b6671624b6f43446b472f664d756d52696d4632395856636e4c766f7571646c6342306e68327066735a456c33354d67356e6e3372627969585050696f4a376d5231536c51344c706e3036344b447436696c2f743938456c6f442f5567782b5a65642f4d707955462b364d4351324754725639686548442f537044597a69373979444c397875576545794554756431554736616e76354c542f414736363267645859704c595842346d2f53677a4863337a4b7477756c46362f496c726b6c712f74397972793766626b6e6a36644e394c6c737967782f63586f6c764d4c6854377663777a6436725766546272616e646a346343516a2f6272677978515a6a76747a2b756d66414b6f37726374714e7a4f6e53756a48302b35476c48396e532f322b5a7762757743444c4863336d72632f4e41626d384342716c4c7479577237476250524e4859537749516338377138492b4d38697756673364397752634c5a7546756a36664e7173712f7370453971444c4c64587045474e7958626b70472f75494755544d6e6e7a57776243543047436e324d774152564269382b2b4b2b5952325239696f623235616c776b386350324c5650597a4e59304a512f7439776e732f5367792f65376f46786372775a483737646e36354d7441326c7966384a42375839796e324e794c3064426d472b335a494d5a306a6b796e3930764750555337725448595865475076716a483036514e5151554755372f643469564d2f59496e6537693555354856517254396a6349494665304d455073376f6634494b68366e6641445369655246555076743041774d545842576a597a665650503841464d4e6a4f67694b653542524866376c6d465437594a50764e3461786c2f366c6439684e326d45333976756835416b735044703979444e44666271423050453974552f3978334d694e626176636d487031364170623164364d64726542477179516355454871573534787238557638416364794f725750636e2b327643706a334944625850706a7135494550716d346a4c537764542b36376b476c44324f36746e59756879594678537158794c3448574936663451667951442b35626c73596c2b33765148714f35446c7765394e396c6369644d596c73654b68326435324e423249444c3158645430763559376b663774756e36394a566632643632386a45454a7a7435666f4c2f414d4e55416e36787559306f702f644e793368546a615462554b646f5a47577a75654951592f423046583978766d544749393955773957765136596a3371665a584d6f767863714462584a59786f674d66584c7548376c4a2b757a416341392b435837536477304362374763573651674a3962754555446e4873516c367a6578412f6568396b7a394a54533273596c7943394367423962754668462b616158724f35617567387168474f7a6b515a73306b703270694b427a6d674239597551445374682f676d68363164414f5279365568322f6d554949354b773746363137454148713932556e7268676f50574c304b4d58535432556d36423163364b66593373504c4e4d395645445439587574536879706d676657627749695039585073556873706d6f4766567177556a744c68347545466b66574447676451657536585959594a62653175536b326d512f6949552f746f4e574b426f2b7653786861456a786b6d50724e772b4b324968552f5931644e3972632b674230446633303465587934715850584a416c6f5534474b51374f5a3668782b6e424537536361686f6c304466333636662b6b65504a50483179356a4f4a66495246465639704d79785079522b306d4451412b3942644431724a696535512b746957455a416a6846556e616b6b526b44487570564437505751385354375651587a39567a4543334e5751395a6a6751657971702b79616f444772734843533574775a416c427150713469514462595a795658393363366446636c53646e4c777868552f714e456e6b7a69576c4833494c6f2b736871776c54394956773963746b4e706c48672b4b7a53735350302b3359717a5975537159616b48512f76566a413671636b66377643544e6761564656672b3063504f50373050744e58554155472b5871494f564d61466c582f6559355753662f7741356b733532786a394c756835556f78416c6832494e73665672632b6e5178375454344b79507151674d4d6c7a4c6741636e75554676574e51642b5344714466516241705436726165722b33443278584e3869354f734137592b324355416b5964794470322f564c55795977313938552f3978747434567a5a576d34742f436b72705a753576324950654b4b4b49496f6f6f6769434b43414b456345554545434b726772554371496f494155445149706b4378434243504a4b326d6943476f344a4c6b524d64575364714a5a78426a52426d456d37314879344952426170547849797167426f694354494535705a395643726263656f446b67307149736c4b43454a54463855783471737a496f6759766768436f6355645176324b417469676b67353449455058464e516471447567445a597152484e474e666d6c41445651434c4b5a6d755359414a554339694e445250534b527175676d4137456150795131765869703249495239514b446e46534e53693365674d4a61534f4f61306775736b587754776b5969754b44516f6c6a4d53775449436f6769676969434b434b4b4b494967696f676969434b434b49496f4967696f6743444a6c45464d346d57537a5348747a57356c526469677a34342f4243564d55326e33704e4e474b41683431375532707350696c4a50687a52634e7a356f4b722b326a64714f6d3466716a2b4b7733624e7979576c55667158526339794946476c6767356a4d612b7a6f73435764583364724b50564373663048487557625739423773304271657845686978514568346659707064522f69514944536e7432714d5458354944512f7852384565584a41425448334b526644424e475a474b44354439714139377669706b32444a59334b64694a6c716f7a464243434b677155786c6966656b387a6a696d42474a474f5342545444424e4654553563346f4136734544486b454863446c386b4449386e55656f51545470646e4b4a4647427777523156536c424449756669706e58464b3435383039545641413054524e7a4355462b6e45664d4b467578415938496f6a78454134704b554346514751574f436550616c4c6e7443575435496c786a2b3141307933596b37633030644d656f6c4c4359656851474f703343313272346c535646696a536f7a5453692b623051644c77314359344c42627661656d58597462784c5a562f4a425249744d76676b5a306267366a5432434277594943525578474356364d61424e48555470657561416438324b42435533426b7044555a5350484949475a3331437674334b4f6d623371474751514a495a42434e50463742506f7952423549456a346952554a3438305952777a4875545242794b4241442b53492b48347074417a596b496976697a514954786f55782b4b4a6a3764696844476c554559314f614e4d4878516977384f4b746a45437249476847693237653151536b736b514e4c6e322f4664473058674f78417969694b4149714b49496f6f6f6769696969434b4b4b4949676f6967436a4b496f456c463044464f6f677244594b6a6642374a354d745a4471753744564355527751636e532f5571324d63567149703846544f4a7a7951554575475a304a674f37397130474c7547565a68704e45464d797762464c4534754b71395636583549464853574f4b766a4d6c2b4834716f6e4c696f77674b6365314264456d6267555342734d45496c38635754754771482f4143514858543277536d62427a696753634d30757571423852544e5232726e6b6b6656306a41596f786a6b636b4266436c4f53684a6b32534466704e4367395834494c486468376b424a677872787a566236532b42514c4f65587851586770584a716b654978396e554c676f4c444b6f785531365133616b6a537637314452425a71376c4e6448594b70776a323151573632716d317551503272504975724e644b6f4c4e63584f72676a72307438466d6b5a4555782b6159343951596f4e506d7054634a5647736a7351664d6842654b646d4b6772565547626e492f556f626d5461615a494e4f732f74514a6c6e67716462393647766a6745476a7a537734714737706f51715a6c77373053616e7a64426f45394c71324e786c6a317547426f6d6a505631444c4a4230695063717278656e7556653176617636663143714e32484e41756d68344b556a7a55436a61616e42414648455478556b50656f5435686f6761673746437a5653416f36644a71676b3861496e6d6966436c596c6b44416149734548646d2f4e47584c4a4c42776355423745434b7355654a436e494949513354494a534353796158596a704f53417472647659494f5477524e42514b6373446967554565484245444a4d484b4d5967386b43673548424d47496f6f314739364342766b723477387a465578676159737474714f6d4943417874694f435a4652414556464541525555515252525242464646454555555551525242464145444630555543414d75644b30597644745854574b3942703971444c49416d765968494f36766f456e6c6d57484642546b3651695061722f4c66413056556f474b436f694b4463635856725a59716f78302b4c4241434143374d744f784c5771563669732b504d685832486846696731534f673471547542567a4f6d6e656c31766c5242624d6d5866376479676d63465445304c6535434e796f666a376642426271776c775443347148615865675a2b39426f31366a70784b4774756c6c51626c4b6f6d5238546f4c68657279344b5070726d7174587853784a384b4452356e56696f44484c39367031366b485076515836744b6b5a4f666d71683164497a51464437653542634135524a3471677a414c49536b5a5543432b6d4b6e6d4d48645a3951474b49346f4e45354e34635657435161554b714d38477755427134644270634f36686b714a54423549526d65316b4638715935707454565765626975536750754f43432b4d38386b735a716c7a6745786b3643774565324b62553355714a53777952316e41494c6e354b4764574b7a3630544f6a684261544c754b704c4e5771636779596578515a6779424e4c304641677a34706f672b3945777078514c7161696254324a6373455750314945704c4e506764525177504a43514c7367476c716b3155494a54696872376539426e6441686933566969326d714c736845534c49424b4f6f31775130397a70794d3854386c4443767851566b5659556f682f4579756b4d31574934434e55437a47766b454759756d3843427831664242474153364737487752306c33474b6b385541684854462b31485131636c4e667654455052417072515543456742563057413937705451457467676b534d5570346c504e6a376b5742373043566d777753544c557a546d4a2b6c4a636c556f42626730745331786f73555231567735726443744f43432b337a5638596a4b675645447048347253477877514e454d364a6a70777755446a42484448416f4631752b53614a317154672b435542425a6a6958553074376b6d43654d6e7851454f395654664e5663374e7a532b57536134494b6f73374a6f326a4c6c2b4b766a41527754494b786142784a4b614d497877435a4641464645554152555551525252524246464645415552555142526c4555465a6979724e317145456831656c4e45464276774845494463323546712b3471787330616f4b667549486a376b787678646a537163676f61514145464a7632336f536a3978624130744c2f61566137644a536b6b422f594945382b497a507578546d2f444e333745614a534a346841504f695351486445334b4f6662676c6b2b56416a514669364136675170724464496f6f496c734751717a6c424e644b6535493868324648532f616f57683147674761424c3138576f5375584330496972352f745869743575706232374b374b6a746f484a3173395739556e764359512f346f6d6e385237317a57314e5445664a425871476548446972483079354b73346b4a6f784f7274474343356f7352346d393661474f47492b436b5151554c6c77327a52412b6b5238534a46614372305343344a52314767536154692b49775152334954394c633156574c6b71374a7a696757634e4957535a666c785775374849347246643936445046686b2f466162596b7a724e41682b53313277434e524e4f4849494c376655524433727037636a5458776e4e6336774759352f55756e5967355a734237304771323861355a65315666355961745652493675302f67726f42365a4241384961614b77504939696b496d72686c6443442b4c50424249413571304453526d794562625564474e4b5968413741476855464b305a466e785473447851445652485354686767544732484a594445354c7a33712f7139324d664c7364412f586d65784233376c30524e5677373867626b707949636e4c354c7a6876333555383266595a457274656e6465334d70316d54386b484a334d52357063596d6734685632673977524f636777576e646b4334596a4a5662646a63744868636a6767394e75702b4f584546655568526573767930612b386c6558593438366f4c4e6a722b3474695447713946366c442b6863694b7268656d3033646f354f66325a4c76336f45323553484d793549505078426e486c32565675326c474578636b63454c636f2b4b50566d72656b306b636351673258505772443962754b4a5037335a6e5854496e336646594c305931674b6a323973556e6c426d4844755164502b38524445327a704f4743542b2b577150484846632f7936526b77535441465a664c424231503778596b356c614c384d6b44367a5a622f6a6e58682b3963765342526e54447939574e6368784b446f322f584c524c474d34343154483161422b69516a78314c6c6d446775445844464c4732426734356f4f75505637467366557750365573765737544e4856546b75574944367046307767626d5251644f5072567557496b2f596d6c3678616752467061736155584c6e74794b6d69506c5175524f6e78486a6967364a395a7479776a4e2f306c4e443169324332695557717556354d6f5634437144422f466767366e393674737a5364542b38775a744a397531637a5239575270322f6b6d4f336b52574a5a423142367a6249776b4232666a383144367262474a6342636a79524d7343572f53694c416468345548582f7574754e4353334a566a31693377707a584d45434d4d7539314a514d7341376f4f724c316d324d6c50377a626c3031445658492b336739596d716e6c694f564548575072746f4278626b5478344a543635627a4576324c6c6b68366e2b58322f596d387256454845646d5344716a3169327a36543238454c667265316b2f6d417850772b433563724772706a6838454a3242436d42484c354d67366f395a736b4e45534b41395a745a52494838533555626365637579696868416449466578423170657132794f6b56556a36765a6271314f3253354a677a67444c34707057794d644b44716e316d3167424a2f34766e52534872466c714f583459426366514942697a63632f7a516a4f48466a32494f7a4c316133474c52446c3876326f7939577450706e3076332f494c6b78746b79654c734d7946425a6a4546354d53673630765664754b41475844534d50327152395673537731672f7049584b6545705975337a79354a43576350475848534872326f4f782f64725270376a712b53582b3551433541684b757355356844796f6d6844684232492b71326830794a633561614b6633617a42334c73754e354e7550564a78564f44614a654f423434494f7750574c654558306e4f516f6f50553742465a664263323362664376784355325935675964694471663358626d6f4a7a526a3672594467366a7a5847386933484373564a5749305a3251646a2b366265546d4f747563612f4170726671634a564f7145542b763968584644634a417130524d797a4f6736737655747046784a79583776676d4871316b77313466703968566365646b347a445655386d4d497550657944722f335861534a496b7a6532614a3954323463784c2f4a6c775932626368704665355778322f36422b43447378395173346951424f43732f756c7439556d4158456e5a316c356c6b5a6264794f4b44727739527353475a5452395332306941395858436a593746504c44615a4166696737703954736a70456f74327050377874492f556639492f59754b497770304a524d6b384f57434475483150623149774b4939513232556746777862316b6e705a54796f3455376578423641657037664b512f3271663348626e476138394b31456c6e4a62683756545273444b49664e42336f657062634368444b446657496b7a4d3468635437636761644c67594a626532414a36535366346345486f427672556853595075536e65576f44784146634d626345504d48334e676c6c62343134494f39486632446863692f7954446537646d3178457533466566386a4f55616e6b6d38735a67443530516437377577337437647967336c6d49704a797650536958594f63332f596b4d48384f426f654b443033337467755a6b5561725a496e6357634e555878586d74444d7765694a322f6d4372506d673945642f616869632f596f6633446179593678386c35324f3145656f30397355336b6a4c68696739414e397436365a4e7a522b393277776e452b336176506d3249316576422f6b45736f4f486a556a323755486f2f756250306c4c39357477586c4d4438563533544c535a5963636c49327245365566346f505466635754574e5239505367647a61417859396938334f78624653663970775451686f42307935564c6f50516a63322b4e5534334e6a395950785a656238736b41695875516a6244504561654c596f5053797657384d6b62636f4e677938374b6376704a6f456b6f467a724e654f5344307075326852774644754c4f5a586c2f494e30364e49663235706862694730396a596d69443059753269644d572f4571793535596b4e556f676a6d764c78746d586a50374559625952464866336f5053666357414738794862785447356245636e2f687a586d6e6248354b507a5a2b6144306b626c746e7a35346f48797a6e487658416937754a456c5141397661673945626b5331592f6d6952434e5a5341374b727a6b6871364a564751696762656b7445632b39423645334e764d4f4a784e654b47717a527a4168656378686f706a576945774a4d446c674f7842366b79684139576b634f6166566138564777586c7032353545342b344b7252637831535a2f3149506f71696969434b4b4b49496f6f6f674342544949466a4671684d67416d51524246516f465578514a5564415764416852544842416f4c555550444e464c4c704770426873764965594f61654956566e70677854362b4b427758367361713761683436383154456e4c426162486835494c56455545436b3570636d54494f67464a426b4e56556345596e346f46446e46526e51774b6872584e42447a524a31596f47547336414f5754596f476a673658457569634839696c64384b49444a774853753243614a4a4c2b394355586f676d46585361526837464d7a4638676d687a51484b71515971474c31526c6734514c4b75436669426767394f614474524159544c737252635645704d6d2f6851614250334a6c6d4d75436b6276367330476c52556d5a4359584b7367745153655945376f43676f366943496f4b49436f676f674b6943694171494b49496b75594f6d4d774d56544f596b45464d774d76596f616d4b65523434704e492b6c42487a355a4978714548464e4b4431514d426c68775377414271564b34634f436e696f674f6f5a4b7137434e7a454f66636e634d6c78465546427352646b4274594f744654564c71366d49356f4b5474596c77456674784657563473454246366c42584b784630766b786b374c514333555467683034742b6144503974414470522b31695765763471794c6e386b2b715468384546666b5166436d435137614c387634736c6339574863697a6479444f6472626c7a4861683545634153466f30744a79672b6e4b7144503555516134496554466d647a7a7172342b396b514f346f4b493759535949655344466145514547553257795447793471584b7446742b615a6d77515579322f7656557246474f41577378624b71452b7842514e7550452b5074564437636436307357354b41634d3047654f333052786f6539434e6879613472566f474a715541335977515a50745151787835706649694374732f6536426a32494d6e6b53755335684b62486374625a4646714f6779527348396267703469647641305635694a4e795230394c6e464257596d594d6c49573430344a794b396d614d675033494b5262306c307a61634864575057706f69513531424173346d56654b58527871666b6e6d57663464716244724b436f466a54483846414b387678543439534e6643554352743166464b33657247594b474e4e534253774b4d59766c676a44437167476e4e42434a424351456f38303876467843686977514a47726b6469614e61635548794b63394b41464d54306f4d523238314a52795157777857797a4a673257537851706a6d72597a417256427555576546303571385342514d6f67696769696969434b49496f496f6f6f6769696969434b4b4b4949676967674b4369694448646952335657656476675078573763594c484b49443845465570567267704b4c6c546d557871454352674d6b6867435856705964716a384d5546586b783036535467717674794b4448466154416759315145574e4f3942524b314a6a4534736a706b4934643630456a4f69726d2b4f546f4d34315144596c474d433146716942564c355a4d57515a2f4c7a4b6d6a50677444525a7a3731437a664e426e6c46787a553875574a5635474f4c6f6d336f504873515a7843356957494b68746c2f6d74456d695752636b4f677045644f4a53537347496f4864615148716b30746a6d554651685471782b4b58797a4870794b76346363314341616b552f464253596b73456b59455372514c56703148735541693951794450704a713742574d53726449795569574c4d676f69433642784c72526f344a544470616e4e4255524969754c4a644c3571356a464e434235494d786a685876514e7562766974596a77554d414361494d774c5550464b49766c2b4b3036576f63307a45633047505458416c4a4d532f54334c655974314d704b4761444730774f48596d3670636c713773766d6c467436365547654e34776c714f4150735063747875617045786f4f78557874746a3370784569707277514e563845306f61656f6c4556444e696f61302b415156686b7863564f4255416f7058366b436d4c684f59384d304749544f4255346f425141766d6761646e79526a554867454d6e5152794d71493658426f6979415048324b4143546f4146335468335973796b63656142414b70744f716b6b41613676676a6e795151786274516d506372415137454a59444c4a424931487379566e446345376535544573506b676b575a6837386b3546533653706f457763596a3243423452416335725661505346694966784b2b45394f434453696c6a495344684d67696969694349497149496f6f67674b434b4341714b4b4941696f6f6769696943434b753767724654646c6c336f4d306f4f6c4653306856575637315554586d67426b444b6d434c674573456e46454854544a424e447556586f705657616e5441565a6b476156682b6f494147486978576f6745744c7553364b6f4b644f616b6a566c6435645778555053657842554b466c57327273562b6b50587552306f4b644d6d5a6d5248696f72424a6e664a41444e425842386373305a516f546b7243477170522b33424256704f4743476e4371744a55686a326f4b3854704f4155426571665451494d31454353696561615a4c59425765464c554848464258454450424e6751334e57476c6331434b4d45434e714c6f52504842576c38456a4d2f77436f6f4b796136553745314b6b5153484b6432785149544a756e42545532436467704a674b494b78496b636543496674435a6d6f486f704871504c46416d4875536c6d6371365557356f695277795155794a616d4b676548534b7177446a385558707a51556d6461496d626b506d55346742583271694c6363304530317068777a54667735346f6161312f596965796942577a54455a706a582b5641306f67514f334a53584d4f4f435942514f61494649656f556b445833717777474c4a4b784b42656f3449786f354b5942385570654d6954676751697570506f414a474b59774c39696a653942586a34564a68366a4769735a753338304a30713643734f437967743673465a4878445652476863494b734b6851744b67566b52484f714563474b4371354147716b334e4346624f50747a536867476169436d6656566b53482f4a576766715353685641676241343570537247427238554a466d4f61424d667a4b686b34623470365a346f4f44566e5149644d5930565a4c5656737170572b6b3449424674514257734e6b73376458454b2b325269454677366d795769444e327250426d70677445582f6567757a314967416a6b6c445a49435942596f4751646d4952667555643045647a703549616a6d4b706970452b3541304b31546f52525146525252424646464545555555515252524241564645454255555151465252524246454645455354344a79715a4456524133387144426e7956506c7656796c386b7657525158786a77346f754257537a47794f616e6c394c45736776306f734d777373724e75586965535879493576373047776a676871694b4f367a6552624e574b41737777417a516164516433617141494e4371644d5934526349304343775331564d716f616977344a61654a56796d32434270334e414a4e414d79764d2b70657053336e394730577448462f71532b6f3732572b7561415435556161654a576147434375654a4873465277576f7845616b76525558416663677a3347424850465062414d6838465a636b4e546c4a5a444638572f464273675844454f556b374e586b472f46504b4c4e444e4b2b6954356330454674326a4d5565765967514452334878537a75414169726b4a4e646630383046326e554e493471434d6a51305655626e5365333470344856623041747a5153554e5163354c6e58635630704e4a68777858507547706b633047636356737336534f537a767777785771454142715a754b445259794f47586375745a69495558507451476f6e46734f613664694f4466366b46756d6e4d4b36334774536c414a5a58736761464f3957415a6a46414433756e6a4579774b427732464854436c6330724e2b3157526b4d4167464a4a394c4467465675393362326b4e6437756a6d5635586465753769354b516749786a394c342f765164333153364c6b4977414f6c326e536e6575443672346261623037643374314d692f4d7945637350337076556f616263447731494f564a346a55546c3856335054344e59746678524a6c373177356d6864656832625432305a5177484753446862742f4f5042364957593955435031676a39795863534d726b7a6d374a74704c5264746e507a49386b48714e3043597a306e454c7a326a56324c3064794f737a6c32793776627458446843555847526b2f4c7151545a7868472f6275794c5267356b666b75394b35594c6b6b5342584138743356597479474a2f39534430634a3761414552704648414355693266486f5a6558386d63753064314544626c4d616e6c6977664d6f50542b647434686e48627a5138376163496e6e6d764b3643506e58424452336f5056524f7a786549434f766145394d72664e3135654e6d4d3249716b6c62476355487132327741646f7834684e356d33464e63666d56354c79334f444977695a4542734548702f4e32707a68524e4735745731426963666477433873596d5852522b4b6e6b6d6a444642366e7a397341336d52424f5279516a4b784d754441392f77435338743542694d4b35667652386d5036667751657065772f306e74542b6674336155345250637648477a456c692f76547a7357785544764b44316e3347322b753543764d4a343771784b6c7535627232666b7649486251646d4a484a45625855472f774464464236733364744b686e46776f4c6c6836546a324f764a6a626a4e4d64742b6e3531516571313763306c4f322b546c534e33623469554b66784c796e6b516c4a67443370687470484a4236667a4c457143356263593956455a48623450486d7842586c706252673570676c46706f683366696739556275327034612f5533424d66494e586965576138714e7648486c5654514739716f50556e793263786a47492f5579582f77415576573254327279336b6d574c31566b6475534b503349505461397561616f6b46714a72666c354565384c79333230684a3352466e554b444432346f50545375574a6b536c70497a723855776e627564417762394b38334778636978464237306e6b484f556e35495055526c434f45596a6a314246374467475673667a4d764c51327259794f6f3844696e6c744d4b56434430326d784c71364f52307165625931615a45643066324c7a48327544696e366e546a5a316f5433495053697a627556436e6c5759306b79387650624e6c493935556c5a6b335467673953316e67472b6e5545707432573077467366797346356e375841794c38654656427467352f416f5053694d4a5544487351614673504d447638416233727a6732736834437a66706b564a6265356758506167394b396d6636442f414b582b534d525a78416a33686c357a795a41314a47484a54795a474f677a7851656a3872627538656e2b565479374c66544c74586e6f32706765496a6a564b4e744d784267575165692b3374517164494b662b694337366a686a67764d5374584231544a6b636e4b68684e756b6b4642365458596958784b66546150535445643638756256775645697946754d674e58485039694431586c324968353657484d4a4a576252346436383059334955314833496d356662786c42366146714571394b54375741344c7a4568656e53557066376b664c47456a4c56326f50556661577a536a4a2f7437594770676543386f646343776b6138314443375854634c397144314d624e6b467841565348625751657150666d764f61726a61524d6c2f6d56574c6c7734534e4d61756739536474592f684861565074624431592f4a655631655938656f3971736a63766774476368474b4430737474616c34633038647474794d414b7279706e66662f414a5a4e326f5246364a4855534433664e42366d6532746b434d5759636b4a624c62475659427a7a7a586c57765370716c2f75566f6c504b49416a67633351656c2b30735530762f414c73307732646c2f774131356a7a4c356a34754878565535616857526674644236306244623049446c56334e6c59692b7067764b77755361737342785971377a4c3272717545784f443151656a477832382b717570745047695750702b3364394a64656631337a39636e3747516c4b2b4334755342356c42364d3757774b53426444375462456a706a377331352f3769383339535a4d75436b747a646a6d5233495051533264674268384534324e706f76486c32727a7633563673684b51663674492f4a4e4357376c316135567a6f6739464861573956514368396c61414f494b38394b2f757264645a42354a5a626e64346d346131516569477a74426d694566734c516b77687a7777586d78754c38613679694e33667a6e4938756144304d765474735a56746779505032434576543752594749376a2b5338366433666d344a6f63614a787537344f6d4a6244712b704233346243795130497035656e5771366f783732586e4a376d385048636d35344b755737757670387958464236512b6e574a554557374930536e3032774a4f57426a67467778764e34574176537735664e53473433474d70482b616d434475543950744e704a63456f54394b746d4c53596a6b667a58454f3875786f44524c44666273316863376d6f6737333973746b305a6b307654626338526e324c6854332b375a705341644a4c66627467493342335651642b4870566a56716a45754d386b50376262675470474a3976677542393166464e55337972676e48714f344e544975673730746c624a615761542b3232354534556f79346b742f7538496d6a59737949336d35694f7239726f4f37483036414452702f456c6c365848416e745847743737642f71302f497148314865522b736472664642326f656e775a716b436a35315352394e74573544515351485046636e2b35583548464e4c314865696f6e54426a48385548552f746b43616c78346a37657a4978394a7451704542766556797a3670764a4233306e2b4676696a4831546457364f35356f4f7050307a626e45503846582f626250414d7a4d734a395733684c6b414a66376c764e54616733426733795165335555555152525252424646464545555a5252414169674555455152514b4148696b795459346f7652416b67414849397947436273556b4851514d56586538424b6144344f7050776c30474a33494f4645326753564e754977344c5447464542307256465557345a3853744b43464442464c714151436679533655535233684c4869674d6857694476524d59366f6f55504e414779474349417a5569573549305141456a424477344b44344b454242445155537941626d706734554a7a514454544630304f4f61516a4d49766945425a364a5151455a5956557167556974455763767854526b2b436d6659675552796451524d6b635741556a30307751517557634a49776671396e52626b69656d69417438666d6c6b3731524e4b6a745562554e4b427346444a676c484c4645787a34397942684f6968495a6b6f6236516c31615477434377544a6f70356d576154572b4154413671596f48457a6d6a724f537142507755417a664a42614c6e46513346555470523145494c6a4e4c3569706374576962566c785150724a554538465434574b65544e5442414a385575724e444c464356614641785a6b7543575452384b66546d326c416f3669374f6f5a4e6a6956487056415651517962385753453654337177733963446b6c72454d667a6f674d57494b56694b676f45355a2b33785549346f41446c524564714a446c364948546d6759696a5a717355566a34742b3156695444444469676d504d4652675751784b4e4f3941597762715336584c49783653337a537844534147434351356852355a70354871626b6c31494a46774f784c50496f67563673464e49376b424a7a3976676847744751784b4c30414e4f4341752f77416b4d4b4f674a48476a386b64514e634545635a4943702b616859674155504e474d54696742775230696d6e67684941394a78556855436d46454278485967546b702b35444142735544316946574b756e41314f455255386d51566b31355a707565534c4530474b6d4e4367464347514e4d6e543071364250464168477249594a736569534c3035596f4e57714145356350785230674273442b4346574f535a34314b42644955706e676d306879336168795144534e4e616f36514b42456b79375467674737507a5141444d59634552706937346c48496b49567a71454569786a576f4b47596232434969364c45356f412f37455859384f614e5258324b44554f7041426979496f7a35495235596f6f4933742b5368417751425a796f2b5a2f59674f62635558616e46434963767852624867674c35594a775a4d324b71673374795443555973633044786b5147474b76467831546964526f5641544642706a636c696663724933526e51724e726f36426b53787843446271434b7836672b483449786e496f4e614b7a2b645247463130467969547a51694a756764524a356764737770724846413643547a496f3677675a524b4a684a35764242616c6c4944745655377043716c4d347951575475724e493952434d6958664a5679633449412f45496b6e45466b4a506d67656142644a444d4d557736616f4754565248444a424a463359344a5164534949556b4a5a66745151426b45594d5451705a644e654f53413556526e4c73534e6e676a4b72444e4178696f5a4f375655416567554a476141617131522f6d2b436746574f4b5578315a356f447a554a5a753145616f38754368444849756756414455612b394d5a6433636f417759596c424f7170524943476d726e324b6c55453038364a73766d6c636c474c2f5367476e7452306b346533616a475448356f7777774b424e484549684e4669656a4243505563634d4543694c6d745554456c6770463855544a75534143514954434f766b51677a4f6748376b456269704b424a31425471376b7867576f674247435874566a5a7955415144367568526a4a3251624e4177356f47456450596753652f344a67434b5a4953636d71426f696e4d6f44714e45574744714e6f78376b413441596f694c4b49452b324b41784753444e32706f316a67687034494762696c304548356f6a686e77514164797941434b5a334b465734414a6967534e4577674358554a7070556a4c49346f4149356c523663436f596d48666b67447879515148556d4d4f66775145514b56483655574a666d676a52375167417770374f6e694f425375676d6f674b454e6765354e4555356f6d6c45416a48443570785472435455574939795a32515043523472514a6772494363536d35494e596b4369367a6934324f436e6d4d4b5079516146465647616257677355534734464e59514f6f6c314251534271674b4b54574d45524d49436f6b4d306b72702b6c4263675a4d715a6b6d4a4c70646268754b423558636c5663516c516f4756584e51554335506d6b4d654364526e4c53444946417a2b484e4c704c55716d49447569514d516745612b45494246314e4c6c424d614965476d616a4e564e5854717a514b4148526d535849554f47534f6b494b6a46736b7874312f4254447154697659675152596b6a324347465238557a42364947527a434156656e4a534d41617068456a38564350663730414d524a77674277436156656f496f455a776f616e6c6b6e415a41577a6a6967464233714e52736c415071516b5851436345524854686b6965436a6673514952377553494f6f7445594a78786b674945486c386b4144796667694148624e506b7877534d596d755341474a416f68527347566b6877532b4873514d4955516868584248424453314d45436750326f536a716b6d31476e4e41537a3969674431346646454e49304e52386b326e4c39796b59734b30434375664b716b6d2b4646597a6f4f4a5236765a6b41446b566f506b6a4633636f2b31464a52705142425733376b7959634f536b785165315543734a6d694d6634564248535645416b77526b48484e427944524275474b413675616c58556c4179555a41634b6f616d6f555a5536636b6449783969676e686a326f5a4d63454b41315247427069674c4a49786571614950746b6a55637967416a6a77514b4c61656c4138536755426b5865707a566c47703855754f4846417567666b6b59316c465753417847495549617646416b6f74676b6e437456657762696751677a4550676c505974527450456e496f546a685433494d70655644696f4973614b323541486b7171647943747174785771474772326f714a51567347623278516159674e54465743565652473433347068332f735161496c78326f3077564f7477546c78566d6f646f4b4378386c4731594b76574267695a3546426170716569547a49355a4b412f42426447537342645a684c414d6e316f4c30456775493677675a524230585146425252424646464545555564516c6b455551314244574d45444b4a4463707a4b575630424261344357556c5472484768514e30537167736b616f534a564a6d33656f5a76676761497a4b4d704559344b73545138794a7751573038575357745756657077364a4148636759794f444a5a53634b7257777161465458484242593144566c444a7356584b36336879536d6448722b39425953356370546a7953366e474e43717a505153355158746d63317850554e366270386d792b67654b66486b6e3347375067474378474f55575966456f4b41635a4475526f4974476b754b7445477877535369475931716754434c784f53714d52577656683731664b6a5561503070626c736973616f4d6b72654f6b652f7354576744325a7035776a4b4c3846585967347859494e5247714978314b7134515a396777566b6952416765465a5a5639736b434366547a516a4c504a4e415038414e566932654f4b41394a4e566f73644d5253705765554e4e636c64596a546755466c794b7733597679573845732b4b7a6d4a5076515a59323951303572546134664256694263366350637456765344685642747351707750775851743836447357537a62307448784c706741446736426f6835647173697a555369424641726f77644249517a47484e57733570523149696965494b41552b6d7164394753354f2f774457343759364c4564567a6a4c7778584b752b753337766946767569554772643366754c73705462703659386d7a5844756835503346646c2f4d68584f4f5334647a67487a5162765347317a696541576a3161496a4733443954795a56656a5131584c68475556643675386f576979446954476f4d7a6750334c302f707266615734536977507864656441456f6e673156365030385074494166702f464279747742356b7732644171626366366c764943634f392f795733635734796c714372455456687a64423644794e65733436756e383152396a61594175346f7a3473754f6274312b6d6367354e4d46446576534f6e57573465337a516463375379335245714861327a5573793548395a6e3153412f6d554275677671393644736e5a572b43623747464e5963664a634c546577457a46315754663166386835384548636c366459627174753261454e6c617830436e6375472b356b64586d79443568504f376644784e776b443958374548592f743170336946423662597430306c76624263547a4e777a6962412f70556263777775462b3130486350703063347076376241485870354c67334a376f4274557170597976672f386c7976385344756632327a454d30516a2f61724a464d632b6134666d37693258684f6e61366b7232356a557965587452423276375459694f71464542365674764647505a374f754c506362764f5a4d666b68472f6679754833494f3748303679433858502b6c512b6d32357849616d4b343839787543474679564f354a4b3575544e2f4d354f673752394b32706f595646664579575870747359522f77423261343333573868302b624c464437692f4b73357a6e796c2b3942327637505a63534436766746503764626572746d75494c2b34306c70534563672b61654736334f7278795a4232663762487769675466327947505638317850757434614352414f63754358377664334a646477672f714842423344366462746e57424966496f6a30364d716d494b346b4e7a753455312b2f6d6c4f3733543945322f6c516477656d52784939314554736f444b702b61344d64397558784c64764253573833574f7036356c3048644f79684a7044732f4e4162434177486546784a2b6f626f31316434512b2b336862546362735164715070304e527854665a3277346f467734372f6456416d514363633035395733516a70383177654d5975673759324d4a6a6769665434746b512f77424e567766376c754a42684b524f6654466d3549486662735270644c66797367372f415062344f7a474b582b3377496f572b5a5845472f7742787044335a48742b4349395333502f634c5a39492f4a4233763764475743516247324d4136346633323578467734386b2f3979336266386e77446f4f7750545959567278775379394d42474a594c6a6a3144645144536b532b6145765574314c71684c542b4b447452395074674d35546a59514563567850376a75423965484a6c44366e664e487167374d76546f41705a656c514f4874386c79663768756a6a4b6d57616e33323850697555374548575070734c65412b43592b6d655a48564b4a3150374663542b34626746745a552f754734667866476944744830324f436535366359485541574158466e764e314961664d78715267674e377551656d544d673750326d577073305436634f4c6e4d2b3342636b2b6f62746e4678332b4372472b33583154457130396767374d76543754744f5250303054663271784965496a734b3478395233592b76542f414378536e314c63636b485a2f7431766e54356f54394e69344a5849472f334a4e4c6b682f4c57716566714f356a68632b4344716a307533484279557376546f53505556792f376c6577314f55547639332f334e4e634e49507a5164502b3177474665314e2f61346a4b70584a4f393349724f526b2f594b3979552b7062754852473569673749394e742b4578636a67455037624155416f5034574b3555665539345469472b616c76314465516c7131446733746b673652394f68496533344a342b6e573853572f46632b667165374a715939775a442b36626a414d65393048515070736342683855626e70735a346d6e36567a543668753430614d6b77395633593841474b446f6632363052717a77516a36585a6478454c442f64743261454e38753553507157344e4f6c423050375a5a6677742f4b6d487030493955614d75636655723245766d682f637477592b4b6e4b4e666967336e307932616c6e552f744d4d59794d614c464c31432b5935653738456e39793349385677482f51673652395074316a71636a2b466b5037634d63514d466874656f33787a5448314f2b324555477a2b323238546a386c4a656d774e58392f7467735139517678447838587764535071653449317a68427757664242766e73594676594a5a2b6b325a6a726954586a2b537a66334738394737425571763732396a5848446d67316a305778624e49742f714a54443075336731566a487147354e4772786450392f754764712f7a494e48396e696543512b6a6e3962524e4349787237316d48714637475971636b66376c75337070624a7767302f7742726a444358543461357152394a68684167647a72496655376f3851425047504a504831692b51644e76446e564263505359524c32785842586632375434704f4f774c4263395833456a5332725a657262694d76384168482b354261665368587150344a6f2b6b573230346a7457542b3658342b4b46526b4a667354663361354c2f414b59492f6d516150375462666f422f4243666f3041476739532b4b705072647a394e426b4642367a642b6942356f4c2f77433369544f4b706637643562415543726a367a6542384253783962754d30724a7167752f743073424a754b582b7a335934534861682f64376a4f4c516a6d64556b50377a474965565034596f47506f397a36376a384e5034706a36554a44556453702f7663744c517439386b2f39376e2b686838554670394c6c785a4b505270752f6d6636644b542b3955384a634979395a684c454770794f43435139496b61474d6d72524e62394d78303977504a4c2f65394259526c496366795444316b687569522b6143483032374b6b7742482b4756555436575448534b4439574a556a367166304e3270592b735469662b4d41635541487045786849792f6d78522f7445663153346f7a395a6c7259784d7677532f336e36504b376e5164714e796473744356426c4b7678576d4f396754706d44453838466c6e314369684c446b673667494e5169755a4234566764505a677234627555662b514f5031522f4c393644596f713756364630504175724545555555515252525242464646454373676e5a5939304a7947693364387558456748356f4e4c5a704a512b4b776245627946777733556f7a6933544f415a31305232494646454c77315150596e624a4c4d644c42426b7377796c337134527754776741452b4743416a73566955496f497179536e6171726b4f4f43434f395641347855414a5277514271496164534f6d6a594a66446a6d674a6f6955534b4e7853637a336f4766554e53475645614a6454454241524c4934635541636b63557451654b416b5a70576246455973677a64364267423370633671547743476e33494a6c78556a772b535a717379726d644a5150682b616b65314271636c42706430412f693471434254647151546f2b61427a55636e536a69464959636c4864413071344a43536a555a344a58713551574238384573793253676f48436b70436466326f4a455a436f51464d4b7149525a7361494a4b54392b504a4d4252696879556d4e5863674a474252656e596c384a3471546f35514f546d6c385656577a4b77744b4c5946414b4368544f4a5656592b43615a7951415231564b682b614561593969476274336f476b4b594e7a344a52634a70373030585a4366456c414a4b5071444967734b7174684842415a6b4867355550656f52776f6f47465541595a653551423634766b6a495630344a4e4943426a465142733649415941344b503030514541454f4d4572354a346830736f30514a4b74445473546d6c526770474930315367365451596f4a6d352f4a5358365a4a3645636b72534e4f4b42644242526b7871564e44314f43494835494248464146757a6e78566d70756b594a644c596842434d426b6c6a70446854586d554137746c7a51456877385543576f6d71633253305069785151342b7a493873314f576153513674497851507a4e44676c6469343936655270686d3663434f6e5367726a49454f4549796645493654714b4a693641616d434f6f63456f49464168704b4178702b4b6b697964744b684661596f4b355970337a344b4e454b414446414a63577238454e655a7954454d672f42415358715643497869785375314d516a6b344c494153315169517731505645794f65614a63315a4167476f4f61384648514f4b4b434767725469706c69695034654b48507651517543794164744753667773633070434143322b5a544f44686951705651304854552b7a49433957344b41353845432f615647644142704a664e4552434d656a4b716e69495152756c733052456a334a44495366676d664d6f4155305344334f6b6b645254616e6a5769413455544f43654753554f653154776a7651576347396d55314f66616958564744484e314a554c4e2b3941344e657a4e506a686771346d6a4a53374f677347435a7a464a4c67707149777751504759416f6d68504256527541525564785642613965314579444d717831394b6a31594948457373304e5559696853766b6f6130474b413632505379686d5467717763554e564f31425a47706f6c6c4e7739554357596c4b413365676a7458696850694169505949615541597348514e434b6f36534b6a454b596e6b676b416671537352326f446b6e6b58384f614263416a716175626f59343449456173666567597930796641714352474b553546366c4f36414871435845755468676e6a5242395565434241484c70697a344b54417977554e4f546f417a714f2f4d706f6b696f554d5147504642434d6b414d414b4a335059456f7069674568685647744b6f7542565348546967686b4831486970674b5a714d4a55716c6b374948417051705147775245533243417859494a704c734b555531315452694b3855487951434a614a51787a5436654b476777396e5145567237776c385647716d7949436b59757a4642496e54465155396d526b48357147584241496954734553507149514a6f2f774339484e69676b68527338465043446d6a4b6c57716854416f42773438553836314b72494b617044636b454770696f584a64447477514c34555a412f476c564e514953737737556530494359675047507653684d5967594b4774446b674a3661684544686d707179713553674641306f7348446f61587848656978785378366b42305378434652696a4c416346444a36444e41496734596c45446967654d55574177515368727751305639676a46734d307352706f53675a35595a6f413661495235496e456c413067776f6849487555314651474942396967426f784873456449474b5042304b414943326148544b7149356f69417851485577637032566547504251594f6773646c42306e735359565271676658567769437a6b697553556b6d702b43416d67597972676a563277533632787a533675425157564272554b534f6e3277434749532b456330466d6f45756c35384575756d434879514f5a424c7166484a476b61345653546250464177715544544254707a5159676a32716761674f584a566b6c6c594963556c45454265716a675579524a4943724a713055426b65614a47534a3468445533344949434158347053534f704f63676c494d68524241656c346f436e65796678456353685547694364366d667a524746536943486441706153575576314979464b305a5452376469417335664e4556516a4569724b4770617143526b4d4d555245413151595054346f475655425367474f4647544e536945716c386b416257416e4171412f7346434e56554a412b325341426d797258735568314b5252657445414c7570474e57514c35487354615737554546653542684847685269437a6e39794a694351454369492b6c4469436d306f314747614374337852494a7248424d7a4232775242417878514c49555949794650326f6e735352637536416b4f456d4956686a6d564741444446416d687778526a672f42484a3054376667675636736a486d4641616c364a5771676b77434b685230784f44497969414d4d45436b664a6c474f47614f504c6b6f596c414477554e616f786a6f4655414b30514146735755304538796d304e5559705a422b7a4e415448683730735769694d6531545367493453434146485434523479536a55445842417378524e6f77497852695448356f644c3164416f50567754616d774b464379673473676c543473455a59494e7855455846454334594a68704e554e44567a524a5a6d7278354949597456422b41644d774b57514f53426730677755306a6757536a476e376b57494c494470344948476e7855316b59565249464f614373564e61496d4a4130717a792b615755744c305155547343517069714e4a7430342f4662726a3656517841666d677245797a7456507279596f45526a556a47695541697355467775453855357571674169754a52724768506367306d34336951424256465255732b6147766967304f4d315a475979396d57515858365a4d366b706a36653542723148464e356a724b4c6e366d6450726f33775161646566755268636f3679786d4252504759725642726b516849354369793678537149755659494e497542673242524d7941737775675547504e487a4f5951614263423763304e5a4963666b7332757443796e6d5037596f4e416d4d546c7751643152356f6b4b6e3846424d444371432f577853796e7856426d426d6835744b46426f3175784645766d41304b6f387a55616f6559446767753135684c4b575256486e524e436c6c646246426f4d674d55706e6f4e4d53733072344a6171486e527966466b476a55555a54773969466b4e2b70596468516c663148776b6330477a7a4b6d4d6d626771764d71776f466e456e7166597054637553593051617a636f3451314c4450583954647957517553474b44664f3756562f6352376e5753496b6835636a6a6c3855476d5638595a63466d76626d576c6d376c504a50424c35636e45554352744854385572414f634174486c2b394a41483630464879526b496746732f785677417a3671305130412b48412f4242526f774f51565447724261694d6543535550314574773745474735467970626949304743756d7848414a5044436e374545756d4a6a536e4a5a6f695666314c586f596a344c4e4f416a314679546d67716d354c342f6d677878474b72336b2f4c6b49517a5650334d356e524f6944567272583371327748565544727156726742457567726e45784168494e5371714d51474c344c544b525a346d696f30743266696741596c58326f39594d5157487a5664754657455153666b7431753278614f574b44625a4266554467745169546a5572505a706b7464737561494868386c594153474848344b52315a304c70707a6861695a33437778515442686e78565071562b5564755a514c534f6d4a372f337269627a2f494c304a6e795978305a48412f465a72472f763771377075345347723342416d36745236656c716455566d41444e514b2f657859524e5669505341525271386345486f674a547441786242656675654c69487758666a624d7245446d596a763967754665424d7a6f6646427339424d765075514a622b6d666d75683668447a4e455373506f6252334677482f7474386c30743745366138304845387467512b4b3946736f7a4f3368474f515a636546765446355938466f7437792f61693050434d3048524f7a6a45735370396f443067726d5439523365454a434c384b2f4e542b3437764133493938616f4e397a5a52754f44546767646942686b755966564e79414f703548336533656e6e366e666b4842643673634548512b7747494c66696f64693833584f48714735506a365279516a3674764c64504d6a7a31424230667342395231486a77515070354e49466d584f2f752b386c58575a663641416c2f76473849414d2b6e5054462f6567365a394e6d6147345748384b552b6d6b6b365a46632f7744754f346c496d453646714842482b35627342354833494f686339506d4b636b5436664c3956546e3756574358716c346e45706637726668555341375167337a394d4c385478536a3075364457556554564b785339563359786e487343512b7037763959775164512b6d635a7a2f414e4b6e397459597950616679584a48716d3447452f676766564e775471424951644f6670736d496a6e696d6a734333544e683731793465703777665777656d4254663348643136775850366345473862436552526a3661586642317a7637747548616c4d30592b715834634762336f4f6844307a526a4979504f4b42394c6d65715863734139543348476a5643732f753938644d57373845477a37474d656d574b4539684541312b507757582b3637682b6f577965564554367875525141446e6c326f4e6638416236306239696e39756b5257675a59492b705836776d417a637531303066567234693568454e2b6e487651616a36544c39525061682f5a376a4757764842556a31652b78416a4853504336542b36584154476c63304775333665395355307654544b7072386c6b487164364f45524a6736582b36627149654e442f43673078394d6944702f436e76546632754d656d726367732f39323364756864756376324a70657158546a552f7a494c5436524147736a57697468364e4565474e4d6c6c2f75563656644c557a4c705a2b6f3350434233366b477558704d6559516c364e456c7458354c4648314b375441317a4f53662b355877616842716836565570342b6c30504e5a4a65713767414d5148512f756c357751515a66793845476b2b6c577a3075565862394836717930342b31565166553737564d535534395876476c4e505967762f74414745354843694a394c746973535238566c6a366c655a697a454a6f65716267766845634167752f7455435850667a516c36555a58424b6d6c6d5761587132344853653951657233526a416154785161492b6b456e725075534830636e7853425970503778656a514e486e696e48717535506a38736a3346425a483079496f4b766e4a504c30726a7756503935754e534d585a566633666361775a524235494e5039734c5578347154394b6b66723675785a7a367464674830592f77415365487246794962534f38494c6f2b6a7a4231655a5134525666396e6b5230796273526a367a63384d574b493957765378304946506f2b67596c2b4a5466326d5836763249483169395858454d5069456e3933766e77782f4e425950525a514f6f3341522f4b36582b7a7a6c45794a4875516a363166306c6f44746c4c3845596572586d2f342f79514f665363514d546d6750544c6d564f354c2f654c33365432636b663731636c6a45454e3455454870563276583847566839507573326d50615371543677635750596e50724661416f4c52366159354238464236624b4666714f617050724e7a2f414c512f31532f4a482b387a4c61726266796e396942342b6d7961724e78526836644b4e42454f4f4b722f764d7a5345484368396175416547516676515778394e756677396f512b786b4b305366336c77346a4c2f596e4872526b64476d522b434252366249783670565466323651724b557677536a3169342f3841786739364a39646c4565477636554250707643764a4d4e6a703675415351395a6a774a716d5071386f34512f483855416c73492b4c452f42443743623059636b3339354a786a3841507852487139656d4343445933587741346f6e597950424350724d735a5779577a516836727162706c2f746f79426673727736597769632f4638552f32737a5763632b31452b724d58306548346f523956455a504b4a626967556253594e506c2b536c7a625448743746504c316930514b484a452b7352474177346c416e324e7756634d574b6832567a436f5466336944304530683958727045616667676b746e6362696c47787655313154783958746b63385771704831725658795735366b465a3274304d4448324b5032643736414f784f66584944364a48334d7250377845563067664e4253646e66424770753551374f64586a2b43662b37676549533975784c2f4148754f424249504549414e6f587245507753485a797745653561592b73575333544b75495a5358724547364c4a2f31494d6e326477654349552f743932574d47343157762b38786677414b66336531684b4d6e3474546b67792f5a334f6f4e68674853665a33577745517433393144344e2b4b4d76567257504c46426a5070307a7a357175507031306c766b756a2f4148577943373670556f4d614a50377259315645346f4d33324d384d52775659394f7543767a573465725757314a2f376c614558634d4f61446d2f595843524b58376b70327332625143654f724a64416571325a5944562f442b3953507139754869692f426b474437435551596a78646c4662396a4e682b316135657437654d634a636f677050373974346e71684e754a515a44734c68346e35494861586e717a4874775853742b74574c6d446a6c4c3971582b3857664359792f6d51596f625734507049434832556e6471763846762f764e67314d756e3279512f764733314e717078596f4f6f474651674b64527754564663314a4d324342644456346f67742b614d674b4563454449346f456e44366a513859304b65473575327a705058384370495a633141413735736730323935626d644a3654776c5261567a504c46794f6b31375649613750676c2f704e516736616979577436445335306e344c5647516c574e51674b696969434b71397437653469595849695150465771494d753132466e5a6769774e49504d6e357253696f67553855707172464543415a5a49736d5551524246416f464b523673724853366355414d686b6f5968713152706b6b4970324947696543427134526f554835494151314d436f374971456f412b6373506b6870727a4b4d6a77526b454361576f667a51666d6978427169654b4142516a6a78515a38555a43726f4a534b4971673859304343416d543877686a6a696f6357436b71565148487351644c724a626d69354271364344676c5a456c6b41357078514d7a46434e4b6e4867684b51436a4d474874373043736d6a4c5851494579474b4d4d696747716d6c4843715a774b302b615873775154543763554344454d636b534f42715063675850375542424a4856686b454b594e58486b6f585148756441645459424f654b54776c304a46757842474e4854596a6b672b424c4b4e584771426562706e636471556b4b4d5469676b71476d436d4e554d434e4b636878386b43697063494776697752774449616d51522f62322b4b4d7a6b68356a64716a366b414b56786c696947663841616d514b59594e676952564531706d67614d55453063384f4b44386b43544c702b614f474b41364b6e325a4351797837554e516c6a525478657a6f43496b315150435154567a77516473454373614e676f32704f434f5358416f4953564d68374243495544674d674f4f4b574d6d356f393644444e41527039366739343975436868523271674b304c494a4d4e6b6744784b49634369416951587939716f4939585544596f796f4e53563952664a424454444a54773146553058784b4c6e46414357556b645178522b615751644144785230306639714d7954544c4a4c6a6955414939754254524c48717855664653714136654f61474952356f617449624e424453685145644c6f365166777955596f4165583745574747616d724c4171476e765144716647714f704639544e515a3979474a6f674a6b614f79476b676b5252416f325a553045696d5341476c436a7047584647754762704249346c41535277557046795643554e4f6553416b6b3052384f5a6451394e557236525846424e4f664246684838304f594b5a68785152394f41634254784a69615653306f674f4270325553735a707a4c5045664a445548464541425a787751494f61644b433571674d634b706855705148504641426e4270324944346a56475575436839355142424645455a36714f6941674b446b67592b3945632b784c72716a5467675a744e446d6f6553455a4f41364f6c4241576f56415339556f5a774547514f2b5a374548494c6c4b51314552707a3971494c416b4a6648386c58726a49305172687a51504b54346c45423067476558347068306a356f4a475854524d61306456416456485a474c4f5467674f7233424444773142555050324b5749424e634d5545636436596b4d555043684f4e575150302b37346f536936425036736c483459494350626967314866464d473853416b6756795077524a7a4b4d513154682b53614d4e5a34494a79344a644f6b4e376b617937456f42514e5446516764694568586b4648474a46666238554249635a715944545643654b6844697143474d51464d61494f343755305751414e48383143324342366b7769324341524c4f4b756a716632775549444d707064755343637a38307046587a544d3966656d6f5256414a413449695563416d4c676646567a4c306a586955424948346f4142515678447068376479424e4a78526a4a2b435073796b53776269676b6731535577506568456152706b6f41436149446b7a4966542b434570742b4b5a32464b6f4931464e58743249346d6d425373314367483549424f4f4f4358793042695458696934784646487a4e4641776b67427268586b6f7a386c59394b494442414969684761675a6a7951314d376f31507551435564574e55546a7a55554271364167672f696f4f4a554631516c417656484a526d71394532474f61454b6d6e797167456f78643143476f704c6c6d6934434155786b6d35483449474e4b70514d676761484651646459354b476c536f4b5955484a415a635478514a62454b457651342f4e4d777a514c6f315679544757664a4b526745775a3045634d6c65764935497355614e58464143783746595341514269717a6a55497834356f474c676f527851444371625567477555637533676e697a716e467755354e616f474b424c4641594d706f39735544346c6b4a6b4d7771795855356269706a336f495a4f4f53447456514636424d376f427a554a43456d78557966346f4469657a4249533145356a6d63564b784e554665504a457179555878716b59487451454e777853752f554643794d71316c676748696f36615a3068736c4d45736e486167615a5077536761716a464d36414448422f775147485654676c4a593845324877524a51422f635554797a43563943496346414d364a7041697051423654785548424142463673706d2f6568567130524a496c7048636746423270757a4e426c4341545241474a376b615a6f686a554a617333477141753555417254465070444244553155436d50424d657a424b2b706e544f4e534258443830535848425451346451426f756767646e43574c6d7159476a4b4e716f67683459464878596f43524a5a6c484875514b43324b4254454448696a6a564148553865434e4148536969416b5648425445736c77524f446f476b4d306a5a6e4254545646744a2f4241633278424b575144636b35492f4e416a4949452b536149423861504e41754278514446523830375a734575434156774b5a4c6a6a336f6b5033635541412b4b6a4e3249793647664135715a382f67676a4f684c6c696e496246776c594371416d524f5037307238614a69526d694976574b424343564642577039796e5a56424e565879556e536f552b716d614c672f696744304243464a562b614c412b4c75544f426b67725a672b534c4750616e6b4331536959636e397149466b68676f6d4449453035385647414663564a64544e6769496f49636558775246425252395359644934464148314a534e65492b4b4a555a7143694241324c55546d494f4b424a4c4d554a5651512b325356772f35717a5245304a3975434a6952677943725341634d5557456a324b7a356f4d2f6167724e6f53503841466d5573624e46625146305a51303952514a477a2b7044795974554d7251684e7965534372795133746d6d30415641646b326e504a5454583845454671427751304149786954324a70444c676772305a674f45445a686779754e6330736f754f4b43765245665345504c45717350334b33426b64503730464a694331473568547973475673686d56496b346759494b6a5a70514f6b6c434f4c4b376e6e775177484242566f64434d466f5a796b5054696754546a52567a74366f7137515453726642452f6f515553427564584435494744305a5836577855595666464254473233656b49656a59597253422f7451454b30515553746c6d514547374665633353536a583243436b5742486d7242444d71324d5155756d72444e425759456b384544415a4b335345733561547951556b45466869684a70593468586d6c436b4d434d55464a69343549476f5678742f424b42713654676770684638454b2b4c677243417a59666968454349515643322f74696c6d426d72666950314a42454754796f79437556765631456469706a624d65442f53746844696741566337594a515a504c6b656e4d35396953554449434d7373654332433033554b414b6b51303969446c377661334c72474248374d6c5861326334334e637943334e3131664a7469696b78475277775a42554166706f4f4155416c4d315672755849415149715030386b46456747705567346e3279397945694a524e58567567735777657659706f474b4450433230546c2b53365733747548474f616f746a4535737568617336634547714d53507956774559684a6f4c36597172642b6f3264745539556a5544673346427367644f4b3548713074567933622b6b43556a7a62423179352b75587a497331636b2b327653335a4d70675054446b67352b346c7175643375562b776a2f55713141547a5a55332b6d5a595548774b76394c4138376e70306f4c642f4844567757427449306a4e645031427845484469756332627579443063497661483849627558477551506a4846646d4d66364d577830443472444732644c797a785144306e544336306368557273626d317245596a492f4e636e62794f33755043744b39717450716335453171546767766c735a5955464b6471722b77754e55716f2b7258492f53367250713979343643365070397a553730775a47587031776e7130716f657158546c2f706967505570787951586659477466656a4c3032354a6d30343538466b6e3678636a31475074324a4a657358634d3047325070387a54554d33552f744a302b4b6e446d736366574a7978697a4b5339577650497347664e42702f7468683453564962475a50535771737366576267776741523855663778644a6f41503841545642702f7473356970592f79304b4e7a30365266442b4833724966574c33366539504831653653786a467662336f4c7a36584f4e4b4550785548705535686a6a6d466e6a36766344394b582b38544d616151787a6442726a3662636a57496a5839525348303867764d4163736c6d2f76457a68474d756457526a3633654a71496a322b4b4454396e4931707a3549483032526f4377347371492b7458486f7a383471543963767a6950436135494e5039744d526a71516a36577861524434725044316d377748593250424565723344394d667851614236622b6f4278777172503766474d6441444f635062425a4a6573334d504c627372373070395864704e6d2b4344576654496756454737556b5054476f374b6f657333596a707478445a6c4b66564c317764514743445350544d574c6a4e3067394d6b42512f7556556656644e47646c50377863446e79766a6b67752f74702f5549766c4c677048306d356c49563555565939597644427364556150376b443672636c34675365645033494c68364e4d2b4f665a705348306f4d584e634d565766574b767754663374693859346c412f384162434b786c494978394e6c6a714f434139584a717a482b5630503778496874492f7742714379587073696354676c2f7473714d57504e4a2f6435634f7a676e2f414c724b5749493730422f746b686e42736b70394e4c366e717244366e4c4355506a696b5072456645596d505a5641763245686a6e6b31507a5444617a4c786b47417a7a54533956707030793475796166716c795236595539337a514b646a4b6e464357776e2f43702f63354f306f646e4a53572b795a7330414870306e63342f4a45656d464f66554a4e716176372b534239526c2b6d574b416e5948334b665953484a4c2f63542b6b704236684b4e4f53437957796d41796e324d6f4f44676848314e6d316649716633584a716f4a483030683951635a424a396858414a76376a4d595778495a315a4f50556a4c434a4655464576547064716558703178715243762f414c6734714d6c5076734f694970782f5967702f743032366d5168366666776f2f77434375472b6c6e4556775a48372f414a50336f4b5037624a7347504c3571513245755076576d4f2f47444d5642366a4f4f413730465039766c576f5379324e374543687a5630743861394e457839533048414e7742515554326b2f437a71445a33444853782f6c563539534a464934387a2b534939516b666234494d6b2f54626859525a2f65676654627834555777656f45596f66334145612f326f4d5576547267474c79643435426b333976755a6b47546671576b65716670745038417a46685867702f636d494a6933356f4d763255345542597034374f3771576f6234505769592b6f523073314167772f5958434862556d2b78765272707777637374513955694b694478526c366e626c6a416f4d78394f754d2b6b7554377539543747635a616f76376c664c3147427041502f4e2b43622b34786a6950642b31426e6c73626a7571667362684c68693346626a366e464366716c73636a78515a4236644934676636565a396f596c6f6a324376507134413651372b334243507134647141746c69676f6c7370486d2b614932647a4e58783956747431435875556c366c44682b314251646e4a754b413256776975484a6166376c436a7076376a41305a426c4f3066484a54374f596169762f75466f59416f4831573265725334515a7a745a487041486156507335477069437448397a6a71614d5748507354523955474939364446397064496352504447695032462f77415a6a45442b5a79746f39567438323936596571526944537144462f62356b556f5554366263496f61725a2f647265424837315076375a384a48346f4f65665470596667796637475977677567642f4441564a51507155596f4d45746a4d6d6e546b6d2b787559795a31755071747650357166334f4c3951506136446e2f41474d775741375a4b485a547a636e42627637705963504f764c39796550714e706e4241343855484d4f787573784141355971485a47674c31354c704431477a4c77676b7166334b3339525938736b484d47774a6f41652b694e7261584941416a69756966554c596a56382b31542b34513843446d52324e306a77356e745a503974636a305168687858536e76726631594e6936413956733443576c427a5a62535946527166476941324d6734304f2f762b6136556656626358427155592b70576539427966744a4131746d4950746c56534f796d4b74376775762f41484b7961314a2b4365473968447651635937554e304471726a5476522b31756472303656324a622b7a576b544c33492f64326a346d3770494f4c50613343474d656c4b4c4539446157695065753548633269656c75346f334e335a464a534344686551636450646d6b387134374d4758664735744436674f64465076725747734f2f4c383047726237717875713270696e30356a75567042784c72794d77504658586b5762354c64742f5664785959544975513453704a75314236457734705a787173566e31626262676747666c7a2f545038384674307655462f6b67457175454251736e416169486145416b57552f69645153644e6c58424168415a776c694e4a653234504c42584d77354a496e714b43324f376c442f6b48547843303237384c6e6850357244324b536a453952716631494f6b6f73454c7479474231442b4c46614962714d7153654a356f4c31464645455555555152525252424543696c4964417050464c716446414671494932476b6f4f356445394b6a5a2f46414157552b53615162334b50697941457855424c4b4233644965314137385572444c464e51565171635541537355325a475151774342596c796d4d714842416e555559347345454877556b47366969613936516b6f4378486567654a527870775172375a494a6b4549795430784357527a7a51456a365573693361693730475357754343456a425354393552306a454a50695542787879554a4a6a79545231594641385136434d3551314643714f4645413076314b534f4b4b5230446b634551654953753146484d6852414a533466765578644d774a434235494142704b4f6b424e455a6c412b35417048596f48465543614f70535150484369416d50424e5170515642693346414f78536463455879474b492b4b42496a4e75616a756551514c7577716d70326f4251636b4e546f6c3075542f424151487056517a72706a6736674a7843626877514a49467a6935556355444f69656f38776f314f43416153686a6867454e575359416f414f4655633149306f564457504d6f44456676515a6b44456f34427a336f427a343855534f616a7561596f6471434375436b3054306d754b447561344943414871684a38554378504a4845486767455278722b616a4e32494374416d67374e6e2b434252584874524c59597069444e566741454d6761496f2b434137614a384b464959566f674436516d414f53596b5153437445446668682b354b596b50775474564c6349774b414471545a50785531555955514c6969434f4549696a4371507a55596e70444941545769633137436c476b6f6d6d4b4153447148504e4d77414878536869674f6f6d4c2b7a70612f5563506b6965474c7161644b42526a7954616d726d703153347153494e43675548354a6745434e506a7a3971714e7751515245715352694b47497751427934714573344b435a63676f4b75314563634649696a356f4649633163706a4832397171454e5842546766594949574a716d42623334704b647150697877434346785245474a356c4156374548634d4545647932534c48386c4a59594a6a452f54676752754b6736634b70714e56434661346f44775456694b705361497963316f4367686f70714d6355436a342b3541544a6935714573515257674b6a6949772f656751523149434934756a71487551716171644a7751514d774b625559345938304e65707966434573675258506e56415361766b672b5a2f4a4e447136536f4d574f434359447039676c7772336f757a6847574e5456414b44714b6a714634304657514e655343456a455652306e4a434a3439795a33384b424a524d65785141477149346f36696352524144795144696877544678686d6b625755423076696942706f6a414b536977706767724c354a6d4a48556f584653697a4673454262676c786f6a483237304936546d6749365179675942534a5571512b61414d34524947664254354a7049492b617230365530614834706d3030356f46416643694f6f4f675a4848344b4d664545454a6454526e69796156614875356f44393643557a71366e7955674878552f683449484c41676c42717345593956514d464f6549514a794e553361454337746e7a54446b554141345a4b5144303936425077344b7776336c42552b7075314d343843686948623371554e506b674a52354a614e7a546153664652414b507951303578775278774e436f48646767457267776b4554454848414a6b4a46304336534f394d43364950306c4b51674e6353674936634d3043534a4d6d636b305143507552694b386c41336570534e53676d5663636b44626b66636d785a3141644a514c5358546b724163306e4d4e7a526f63663249426a584c694648414e63314862447552592b46416f4a5a4f43644e45424573794968716967674e506242567631506b724147476e6b6b726d67496932616d4e41694f444973426b675543696b527770795241656c5647446f497a564b4942792f596c306a4835706a49356f41374d7070434430644e4130354949584e4267706842304d32546b42674467675349476c456c68524d515734565336773945426a587043496b365269374e376b31516757496b63536a322f42474d64585967434145445248424c554847694f474347493546424269357a785269373936455648624641324f5357564252526d726d69434541593971415073553052527a524167753641456b646961677a52634d45434851484f69684c4f366b5841303570532f63675553434a42436d723675436b6a58733936427451536c383831447769694846416747493745596b6b38766d684a79775443676569416334346f786c6d6c446975614f6f384f39424b797155645449416768304a4f4b443277514f7779536d6a636b5458437079536e56376b427157306c4364436d4661594631414543496d4961714163462f656d637637596f416142346f7866452f424b5a47574b6572697561416364534569586642466e636f567971676556616f59564f4b474234634f43465432494356417a365368564d5144584e416f493756444a364973636b4341676b756b647146425250514a59746b554562686d70454534344b467a52476f716747494a55426b6559397543595650616b6b426a6c375a6f4c4365354c6c2b43416c71637456456d71425a34706d49384b446a6a56506a55346f4b77417962526a6d6f5779534d53344343506e6766676a4c67634559444e6b5938304364694a69324b4c434e633053446867454144597878554955593845476169426948775378695852314f4b6f36585149513963307769546a67706856463271794353385641673764716a635547594f676b5975636539416a435076373037594d706a58416f426f4c7064425a6b376671785549702b6142654459715a7355326e39507345706c79514633726b4573524b6c65784e6a686d6f413943676d6c3078616a424b426c6e7852427056417241652f34496a6b704f4e56446e374f67474b4c6a4651794a51703953413658524147616e6c315930553076512f4241414179596e703148484a435930696944426b454244506d6a4550543936497862454a54464151385550676d6a576e42426e4c6f464d58715642496c4f7a714758765144456f485669692f487454415078514c6f354d6741515641364f6c415a42752b7155786f364d6f7864436a67526f676b546e6e2b616b447779566b6150676c3176564172426b44576b5437594a774f4341486567516e4c6769434a43754f5359426a3149734543415a705143724d454a554343474a35632b35412f704b59746c336f4671636b4350485656485343696358527a71506273515630426359495942576e7456636f6e46414d61476854456a444a46686c6a3742434d554664525248415a4b786761653376534545494564733255456d476d4f5366484641675071514c70344a5a5234703436635547306d67515661534d636b4e5a346533376c6479464d6b736f766a556f4b32654b5445555670695965464c7041514b4253764e4b514d4662714c56535372456b5a6f454c416c71684b6168315a7039754b57566f6e484e4257626544497467394534426a676c306c6e795156365850566771764c475077576a533572565152684443764a304759776f305757637762706b74307831636b4a7866454f67784745546a583239714a34782f5341727057323757376b686870365934494b6843516363556263484a4f43734d6d7866334f794a74743144484a416d3368316170436758516845436f7756467361423866624a5966555056444b4c62654d6733316d6c657842334a54466b4e6a4a714c7a2b2b637a6e5047524873467a4a623763532f7743704a6178636e4f325a47546f4d456353434b6c6458302b50394d794847766375544b64535a564b362f704d52494f526d677737726f767a30763338316f394d6c47563444334b6e65516c39784974552f676e394c7479473468326f4e2b383161644d716a5074584f6c4445522b6f742b4336392b4d70394a4f424a5759514f49772f464231374d487451594f30514f786c5250615566784c5044657a746a514b4e6877556c76626d5151585432684959437153587038766f2b53712f75467a68676a392f635a325157483032526f2f376b7639746c476c442f41444b6d4f2f754d376646443736374c434b4338656e79793732516c36624877534351622b3450454e506567665572774c434d66656767394f727130736a39672f7743314a5031432f496e777144663353774d5179426a3666567351712f37664c4f67644e48666d486a436e33706670697751504c303655756d4153663238393655626d51646e632b7a6436762b386e41566f7943722b334d35446c4966544a4d7a4668334b383775626d7444394c4a7a75355975677953394e6c706f2f5946492b6c334a4870485974663364774f39483463305465496957374547542b31544c676b52717048306d54454f3535344c6447394f70787755382b636f6b5a756777663277784e577038456e39746e526d6464507a4a5570586979655436714433666d67354d66533767636b4d5864542b32644e6646693636346c5068687a514d58785163762b3345526f6572734368394f4c34727352737875596533347177574c574c664642775037584d3169522f71524778306c797849357230456470624e44673663656e32547a644235332b327a4659753578716a2f414732636343423272305550534c42385561667a4944304c61534868662f564a427742735a34437638584648374735476877397939422f59646b6161442f766c54347179506f6d7a622f6a66746b667a51655a2b31306655414f33464837455348694234615636662b7837482f7444347076374a732f3841746a336c423569477775446b4f435537496773514f4f4b3951505139694b6554465844306e5a787773772f326f50496e617848696c4564736f2f6d6a354543583879482b34666d76582f327a616638415a742f37492f6b702f624e702f77426d482b77666b6738684b78626b64586d672f4a4e4c615269504542324c3133397532763841326f6637516a2f6239742f3272663841736a2b5344783064727044526d35504568576d78444b516f4d645158717a3664745455326f6637522b5367394e326f7774512f326842354932344f2b754e66346770477a62474d345635723170394f32782f365550396f54665937662f74512f326842354c794c623942663549697777662f346c367637446266384161682f744367395032772f36555038416145486c5a5766316b4476536a62514f456f6e322f6176572f5937662f74772f32685357783238716d31442f414768423551625950695065696245644f4c723149395032332f61682f74436e3247322f375550396f5165592b316961524d516c305131566d35587166376674762b31442f6145527364754d4c5550396f5165576c745979485455707a7443326f6971394c485962654f4671482b30494830376179787451502b6b49504e44625430696c4f304b486161612f6c6b76532f77427432332f61682f74522f742b322f774331442f6145486d50744e5146592b2f7554445a5366484a656d4f7832352f77436c442f61457639753232506c51662b5642357a374b517137666d6b6a735a476f41587076376474662b31436e38495444596263553871482b3049504c48626748544b54486d6632702f74684c70426673587066734e7366384170512f3268442b3237622f74512f326f50503841324a4c474c767a415655396a5548686b34586f76375474502b3148334a68365a7451473871482b3049504d66614752724941633059374b557175434d4636662b336259462f4b672f386f522f742b337738754c446b6738344e684a364954326b682b6b456353765248303362482f705239796e397332762f41476f2b3542356b37453467397a6f7832636d4c4141667846656c2f7475322f375550397141394c327276355555486d7a7353517959625054346166697652663276612f39734b663276612f39754b447a63646b5a5968413755595564656e2f414c64746a2f30342b35412b6d37596c2f4c69673837396b53486270436e324c426a4835552b4b3941665374716638417068542b3162582f414c595165642b7a387a706b572f4241656e673454354c3067394c32724e355566636f665374722f414e7150755165632f747a307152372f4149705236635935594c306e39713276365069667a522f746d322f52385a666d673878396958385076514f326d6367334231366a2b3262636651456637627473664b6a376b486d507458795a496469584a314c3151394f32342b674948307a626e36425642356e374c705941674a54745a346d53395150533973502b6d45523662746f3457346f504a2f61334a556c56575232522b6d444265714f77732f705a4b6654647563592f452f6d67387164726379672f48712f636e2b314a7843394766534e71666f2f39522f4e4e48307a6278444343447a52326b63394c716661466752512b39656e487075334830714830367766702b4a5165612b7875455578476155374763546734374636582b31626239482f716c2b61503973322f3663655a2f4e423572374f3977444874512b78765945447543394a2f614e722b6a2f31532f4e4d50544e754d496b663670666d6738734e6a4b4e444673335668322b716b69503841555636552b6d6263314d662f4146532f4e4e48302b78483641673874485a5738526a6b7a6f2f613036672f6267765479394e323873594944307662417549563730486e4c653347444f44514e6b6839724d5558706a36665a4f5878536e307a626e47502f414b6a2b61447a48326d44782b59524f31416668324c3070394c3278786838542b6167394d73436f4665302f6d6738774c4d695745514552745936395a4339516654375a2f562f754b673950746a4f582b3542356d57794244694c66536f5054333855514858706a366662503676384163555037646171356b352f695165582b336b52545365544a2f74704d2b6b4f76522f3232336b5a66376b763970743436702f376b486c5245414e564b4976562b387035592f696f325842416b344447682b4b73322b34766255694d4a6b512f53674969326f5a5051342f7035494f6e5939656a4a686667572f5648386331314c4e327a7549367263784c42655849375157792f464962527454654c774a776c47587350656739646f456143694a43382f5a3956334f315954506d322f347153483572713250566476754f6b54307a2f544c443334494e4c4d5849523068327a52496b326f564239796a61753541684761586772544870356f4e5641474e5033497334723773557546464a41386b414775324e56732b2b6f39325330573930583033417834685543766977526e46362b3145472b4d784f7353364b35314d512b722b484a5777765849303851397851624646566233454c6c4161384d3161676d53575270524d7179454178716f526e6d6a324b55514b31434367476d4e4b443861424f61494147774b676641494f657771436e4d6f43425241527169356b42564b344f4b4134597057426c584838303075334e43644f446f49536f513466322b43685046426779417844564b683663454d4570474a3969674d696a4b4c6475584a4a4772756d6739546d676a754f42533538452b7254332b336171794b416f476473456f424e546d6d692b7235714550583655414a6f2b614663515558792b43414e615949497968413852554f4b48793976775153744f6142434a6c496d7663704b49616943423043324c706d36584b514e6966676766776c314765706f6868554b4176576a356f44306b7052376c41347156434d6a67674771764e474d73686968344252544d48424244584a31414b666d6a34616a42444e3043466f4a6f794a63714d544c6b694961617367676b2f6479554e50624a4146364b415046796759452f6b2f4e4150454d6c3065775169674f6c786b6c59686c4d52676a4b624d676268524b474f425269544531782b4b4249392b5343534c64726f6d67713645546b5650434363304563346f6b35494f52306a32504a5367375541426169676653796d724a5444326f67594470354a44564d4b347051347167627863304d75784669684c334f676a7367374853704a78345554493474326f4a34755344422b614f6246454230436e69366d44507855634b4374636b42784c5a6f5336757843644b414a6d474a5142693377556b5248494f7063474a552b5343434e574f4f4b476e6d6d3031664769534930767151456e745a544d4b524c3430434a3449412f464d4f354b42376c4477346f4142376b774b4a70486b55414d7867675873434c5a6a7654752b66596752576c45435938697068524d345a2b3544525273304166686c69694934674b4241423648464249524f48376b63442b4344535131644661346f485a6a792b5367357052554171524f6e44416f4a4963416a6f444f454878644848424247507571704b664651354142305a5a416f452f667a5466553871494354593863455a456d6e79514668556c41484d4b50495971557951535842523379514c4155784b6253544a414332484241426b644150536952785148546b614b4f314371367844706a687a51514e6a7a5246436b6374584e4e513143414446466e4c42366f34457467683349414139552f68534e707155334d31515358545131434c436a49753963733073716f424d42736633716168414f45326b484c39716e63675745614f45573156525a38554841445a6e346f44326f536c5476554e6535535a35494965426f67546b5561346c416a566a3763454531617363564847425270676f51324b4148486a7a554845346f6c7537696f33755141675a4947754e657847546b38516d6a45527167557859715246464739795a2b35416f4250503971686c6b55327155652f34494144453549426d6849366d524965677a515a773153554479783663314d4167432f43694c5a46414934496b6a46523946505a3043394477514269616646486d694d48396970685641756f733543616f5131555247434351593151496176636f7772485046456341676a30664467674b6e70556a49484445714f4158373045596a44464d4d4f4345613147436d676a4242416664795250413442413842695531554577714641776f6a34516b706745443064494452314e58414a6f44333969426e4971456d6b78726755784c4471346f6e4277674248556a5853516854416e48696a67674264335577706c69705475556b63426967596b4f3453645741543663304b49446e37594a4a34592f424531344f70714a376667674748616e5a7734645275536841376b43747052356f55646d78524c635541714237594a744c394b486978514e4f70413851436b63592f7652355a6f6b36656561414a6f6d716b58536d4a4651674d6e50616c3067304b4c554435496b4f437a6f494d454e594963354b436c537068696749354a614245452b46516c6a2b43414477766d6a476b645761566d47704e326f4a3034707168774b4a596e4e30786b534d4f354148656b554241476d434c674d4f434c2f41412f556758446d6d6d48787a51372b35426748624833494764716f5250425156476f6535456345414a63315145514f33676f4e4b4d673150336f4953347169774b455968326a6d6d4f4341536a524c584c32464552466851396950387561425132616a35596f76394b4c6d4f5341422b39534d654a2f4e4d4d554a6330414a492f3841796b5363736b43586f56506b674e55706948705439695a30515255494269554d4d436d69305231555334477039755341484e516c78564d5735714e376b43356f7a624a44437162785551515371787951616c5752596673514a6f33464241774661354b4d785467616330474278514c46716f6b73636c425369426f4545474e553068556c43504e435661436a46424f314d674d634d5543446837424147592f464e453953456877556938614d6768494e45656f697142476b736e784654564147716b694f4b656f434a4761424d447a524250616a54504e4578594f676e616c497a5249596375534c7335514c584168426d794b624442512b334641736f3673366345614b4233303164523041773973564931726d6f7a34596f694c2b35417245347077434a4e69456f4a4a37386c447a51545543655878524d535335514876354b4d4345424e6533386b4468324952475758357039514c307851414e326f64794f6e334b4d42326f4270464f536d544646714d464a444d3051435054347355484e42696965616b78526b4236733147794b487a4b6b6549785147664236354a587258446b6d4a77516e4f517971676841592b32436b69634d6b7a7679554a4a6f616f466f2b70445339516e4a776f67644d514145437477526a6d6a58484e51387a516f46647a5647584251786576424567564278515230716b734b315448694d4f61416e6b6c78375557424b6d4251544d424b37426f6f73697a6f46624e523830315063685134494a454e686d6f5750616a50554548397943616665695a45426b4e4e614370545134494161426c4248483371467373506d706b676d6b3555534448735241723035354a2b6b49465a3843485245637a376b4765714c6b79514549455a3855585a76785578775141593139364c34746d6f325a376c443148733549497a687955754e616c4d614b56796f676769546b6834676d7165784951414f4b416e413855593668676737492b47764a41765a51706d553030357147694254485074554f545970772b42514d534f61417a647531566b4841305467444631427844494163654b415a4d777a51454e50596767596a327953796934624e4873556c7a79514b48716a4531527168322b3363676a5a4b507037366f4f537852475042416a305a6c4158342b33376c5941336277516b454350712f46493251375659776a306e4e44537a4941394753766d55774e582b484a436f3549454a47622f676d4b4a646e7a51496b783549456b424c716c696c30384d45346a7078526a445361352f464168426a6d716d4c5a4c5249416d7674376c57494342776f677230455a4a573756644b49505477516b436345465a4a444d684567556c32742b355753686f777853786a70446f45455934537a53366f3571316d35396e795361447751494936714771476b7658424d326a416f53424e5839794373677367413241546747546c3845706c704c5a2b315543366e72794c717551614172543546576653576449594f6348504e42584b5a3047494e43754a654c754a5a4c72334271426947433556327447515a67387341756a5a36624a4f43357571754b36674c52444445494f584c41786a57754b3748706b50364a6b614c6c6158704c697531365a4237626b6f4b72396c3772314a61736c627459395466676e755231486d456b586a715973636b48574733467941314676624e4b5054677761546375316371562f6377446562303969427658394a4f737851646237423647595a566e302b4f637452584a2b34334a5a706e7353543365364e4a535164672b6e6e48367667684c59766d347a584a382f63674e475a2f306f446333795048492f70726e7a4344732f3234484238736c5848306b452b4b622f7043356876376b5236726b332b4153472f755a55453048592f7463596c6761383067394d67432b7475327135666e376e395a3767364d647a755341424e75656c4230592b6d68336a493135596f79394e7548704466376c7a5a622f64447038312b344b733737644470463333444a423135656d616645615a6f6632364c317a584b2b39334d6671645766656267303141664e42306a3663394d6b3332456831454f75543933754848395268795432397866636e7a4a507a776673356f4f6e396b306e4a707a78516a73584c613954636c7a5a627a634f4f717649653930447539774434735548562b7841365a6578375650736671385865755750564e31673462735379332b344e61633855485947304d6570767855467471634678343772644f356b506452586665583555397a6f4f764733794b6b6f4e58454c696666586834542b576141332b366467514d6b48654d49355554516e416379764f6a6537672f57366e332b3566533644306b6267424d514851463241704a33586e5a657033335979666b6166464a2f63747757506d5079374548716f3771324455534b4933566f5952507433727a4139523350696478676848314463356769714431673951746773786450446632327a586b2f376a756670655663456839523345734866466b487268366c59646a512f7970342b6f324439566547433866483143354a6e724a36496a653378694152386b487366376a74783959546a6532503142654e472b33417147626779593732356e45534b443258336c6b6658483370767572574f736539654c4871557349327745773951765336596742423751583766366837305050742f714876586a49372b2f674778344a7876726d516967396b4c6b445146487a49385634696539765646436d6a76704e2f78785165314e79497a43496b4376474466484452464437306e36492f4a6b48744e5155646c347a373756574e73483237557633326f7635597077722b4b4432756f497576467839526d497435634735342f4e5766666b654b3346754b443137354b4f46354358716363504c71676439416e543555675232664e4237456c5265506a3667644a6145515034712f696e6a767a6977722f41412f74516574645231354137773136506933346f6565425578502b342b334a4237425231342f3779464f6b6538706f37347630516a54692f77434a51657564523135412b704436682f746453652b46446f6e372f7742714431366a7279493952306c6a456a332f414a7035656f61673766753936443162714f764b52395270345a653945657136545545646e373048716c48586b342b705364716e76492f46502f63534b415635796b55487158556465566a366954535853654e667a52487163692b71546a33666967395336693871505644454e434a356e564a6c5a2f644a444c335351656d55586d54366f654d364b6633516e395878434430796a72797839536b47456a4d636f794b736a366c4d66714c6678495053714f764e44315376313938696f50552f35366678464236565265616c3667534b4764663430592b6f74695a2f3776324950534b4f764f2f3347342b662b3739695766714e30563668524236525265626a366e4f5649794937612f676e5071636e66556537397944304b6a727a7739526d63445248372b59786c496e6745486f4648586e7a366b54574a6c373042366f53635a486c676739433669382f4c315363614e4c2f414852522f755575662b3542333146353065723561352f37507a5148724c535a356e2f542b7842364e5265666a3671546872627548344b523958656a7939772b6144304369382b66553577506a506541666b45503775426a652f384154464236465265656a367a487769343537422b4753596571794e4263446f4f2b6f75462f64694b6d5348393249446d542f4642336c4678543671576f342f6d412f4e4a2f642b662f414c667a5164315263492b7234445742376e567366556e502f4950682b6144734b4c697939546c48363474786239714839322f69434474714c695239574f446a745037302f774464414d626b663976375548595558474871764351502b6c7678522f756834784b44734b4c6b44314e6d6551666779622b347a4963615548565558476a367354517967435062696e2f7573526d4433667451645a31467976377166302f46442b3679783030516566636164514c765244486e79536b3848694f4449427877515332596e485543457a67304f6e74774b6b656441364159767172775a4243584f6f6832546450424d774f594345616a53474b42435a4873556d423443424966793139366653584a6b57536d4a6b4f5342624d3732316b664c4d6f6a6739506375727476575330526641592b4b6542486469755a45672f4e526e50534d3048714c4e363366693971516b50696e6c566878586b6f77496b39766f6c2b714e485779783674757251417567585965365344304f4748634d45414156673233717532334230672b5850394e7a38313044456b5078397a4946304e5442466e50425148534566676758776a735544765244474e45575141786963636b384a7a424c482f4148594a65614d77347167732b35494858482f6256575275435659724d644a41353845496b784f6f4642706b5777556951634654435772784b794e61596f47643845444a2b314445666d695a4142415a454871664243497a42533555522f6d51487379514a79554f4c7153776f674e4f315478427663674352524553514b446b636b64564d6970714c6f455a6f43584645726656775548656a326f49434969716c4d7338564a466b6f7145444163554747474b414a666b6f656a76514b35795531566f6d48466b4d334f4b43444e7345666d7070536d51456a6d675a7a684571544c674a424a3665354576786f674a444a61794b6246534e4541414770486e385644496968716c2f697951535a2b6b6f766b4d464158777a4342726e52415779515a2f5a6b54306f4d476349463136676a584146426a3371434a485a6d676c4136494c6f5141642f676f57377767584b6c553730706b68435279524e614156514350554b347147492f425474716f65714c494147557a417a55666d69474e5256417373576c5644456c5136652f494b414146304241616b7356444c6d6d50366330726b6b664642426732436b6e6f5751306d51785a4877785151397442775374676d496f707a514b4b565467784e42696c72484446456e4a4149385647424c714574546967422b35417846634570442b4549386c4a5a6b5a6841497537554954524c6d695842537448514e49746967354645676948634a67674a4478634969525a2b394b656b746d70713655444173483470654255484a527767474e4d6d524f703246414f614f6e504641304c6e4838554562565559492f53307355703667694f73647143446b674f4b444936734542424251544175676169694147427751597533424846545431565151785a4e427348536d564d6c4a6456516746486f55537945666b6a70494e5542634b414444696c647852536f7851457638414251476c65314579496f6330634f354167366854754b416b4d307770514948424243357168466e4c3979614e564b6756514167343549474b6355375543326e6d676b6a576941484a4e416d4a726d6f47446f42794b46525467704a386c4935424157627451505468677067707147487379434f2b4a5a3041774f61642b6d69535449486c4a6e5545744a593470434861574b4f676434515456684a466d39364f7236545653677851514453616f4638555931485361714768514373715a4978366a676f49314a785a434653674a3636594f672b6b385643446d6f57445279514f2b514b424a63756c425459592f46416f77786f69374676636a436a7043376f486378726b704531597065525453416c6a334941545651636c49746a6b70356e7651514f52775166676e4a707853786f577951446d674134465641644a54366e716741456e2f4a515278556c785077556b43775a414d4369533563346f4e6d413659454636494954514948704c5971536c337570514945596d6d524b6154785248755538474b417331592b39412f696e37456f6a577455454945673342516b4e5556536a755268536e44356f42453063554b4c4d585270556e46474f5150742b3941486644424c346e496f7973654c412b31454d6d795141506d674b302f596d4d734737306f724b69426d356668676c6958526f356269694b64504241474577516f4341574f4b4c694a6375706b67616f6f56426854443845493431516945444e6d45474936694b63464b634577785a4172354a6f6c6e4d63754b44736348436b7542713641654b6e76545549663471534c4231504341454336534553424769595672386b4e5753415248464567346e6a6b693471794244436d4b43494a676376326f7846654b4244536e465148674538534d385642476e7452424348775369494e416d6271783745723673454259356c5367556d50642b616a766837304145546c524e4b546969684a4e4548506978515177496c58424c7830344a784b724e56416a695545306c752b696a73612b7a6f7357626969593051494d574f436748444a4d533142524153417850374541484a51436a2f41464a674b754d45515269454365575866676d78366b437a756a627056424448454a57315654534c557a51485042424d3261716d4e454230792b61496f614947616953514869524c76704b6e4c322f4e4141546a6b45776c542f38414b5361544768566d6d6c55416a56314b41555566494b536b346f676a316f55594f557368494e7037307a556269674568522b4a7855715254465274524e6346434f4b414e6b70454a347544554a5277514b52676d6a46362b4c7351776f6d465063674277533654676d49626a584246754761435244446b6c634d324b496d31434855355939694152446773687139366a75457762504a414a4f316367674b387745344c314a596f36614f636b43456a42305343657a3571614163455a554e4454386b4530696a464b6959487452784e6665676e4935714e3845514137357063795545306e3371477452324945454a6e4c5551534d5737386b5a5653516b6145736e34634543306a2b61424434706e61696b6f4d474b436161436c464761714c76306c41444c4e424d516a696f65497853304f4f434346696578535450544645415251617445443667614769577070376535416e6936494c303755416a7a545058717753674569714a2f69376b454e4167496845564c424573542b534254485656456a47696859426b424c416f4366346c4e4a756436686a6b67395544564b684c566f6c3756485063676a5a715549712f424e4561676a467879514a5549614b6b38506d7244314f6c41667651434d5846554d4551644a42554f5078515131476e765a536d4a5242466345577950356f4b7878545033685269564f78424e5167486b6c4c476f54434f59714554312b48336f49514a59354b5648536751772b4b426b3141676d4e4577494b4c665355506b45456f4b6f427a67675237303142326f4a31526b6b6963696e7a55694d43554163784656444a2b314f5348535678434359684d59746c564c564e72346f467a356345575453487553632b354242516c5366775442685241346f42454164534c615378514239796254713755415970534d446d724d7355735869674c50322f424469365069636d694a4770424b70564a4846546b6768714b4948424d496b64364f504e416d72543334493430435978594f55496f49486e69694177636f766e6b707059486b6758776e7353734a6d695a6b52326f4267416c465a6155305154676870504e424a55706b6f654b4a344b644a4b41526242364b41566241707a426b6d6c79326143434c6c676d6b4750742b394b4a566f4538704564526f6755356f5939574f53686645597033697a7479514c49386c496e35594943523745532b4341554e56416d7179456f694c534b4161695643516536715a6d4862785162682b39414d714b5247716a4b6148727855415a794f35417244504e4e4f6e5970784349416c7a43437352346f7a6942554a6d78514557426a6e6b67455147516e672f465175412b614d6f763473516772456632706d63636b615371695141794375496371482b464f53636745704848686767536a56544758417370704e455142707751566b566f6533676f5a4574782b535a6736673449464d412f4d555368785876544e3038386c4e5846416d6b495244304e56626f53364b494b6a623675616d67396a4b7756484e4b514f386f4b3534733453364b4f66337130676d58424a5241686978632f6d79515242385743736b534f2f77435342713731515636537a6e4a4c71424c59496e7842314a394f5655464a6a57767753334930364468693630746d4777564d7131506947584a426d6d306f59446d7552754137384175784f4230367341756264672b46414367356d6b4f463349524a747866685163467970773030674d5632595739635258414d45475957436366337258734a644d6f34565465584a6e34664a4c706e6a79775161703237632b6d57497a43667972597877584f41754573636b737a4b5944762b35427575576f6a47674f6155576254735a50384142632f544b654c7333742b61674766665642304a62653145307a554671314d38575743454a344f772b4b423142744a35633048514671334671314a2b436b7476624e5a5359636d584d6a3570494a356f4e4a6d6a6b586c6e5642316f574c52726b6a6f74786c7a353846794a536b526e32705247594475582f42423168597474556879634f53513753325238757063795a7552427153457a536b4e524b446f6e5a3253584c6e2f56676e47307474694147626e385679394d32636e75513879344b41345952516451574c524266713753694e76594277584e6c646e6b57346f45335342702b47464548526e74624d61784969492f77752f656d687437557869353459552b43354f6d63754a666e675542626b4b2b5a49494f324e6e6241796a79784c7173376532784d4a617136567878626c68456b2f5073526679343473634b356f4f714e6c622f41465079344a7674726351385850657551646344706e4c396e344a7a4b632b4c5a6f4f6b6472626343636d4a392f76552b7a674b366e6c2b43356b705446484e4d736b4a475165594a516450374b414a414c636b333264734370376775534c6c334f5263436c614a6a6350456c2f6d673668324e6b484555797a726d68397262464177374b726d366a4547765555494759776e5568423150747255693879364832397345436d7238467a524b584e7662745436702b4b4a4b44706e62573230594a507337637a7031647935344e7752643846426476526b77516444374b33414f2f774474544377473076376673584e3836592b70754b6133656d614f66336f4f694e76475159666b7154735233596c5a6a4f3431544c7379513879356c696732665a434d767a5478324a643378775744376d6238654a2f4a447a62306a536a41494e70394e694d435535394f68306e555173493365353159686879556a656e6a717167312f7742766a78522b78694b4c495a3350706c38565962743850417a5075487a51582f5952347368396d42556e4a5569376564335147356d49307a516150733250616a397048366354376c55647a4e6d794e55673345366958306f4c7a7352395234646948325544557547775a5565624f5574542f4149496e63585865524842426f2b304657772f464750703275706b7a352f4a552f6458477839345348633348663861494e4832422f567134535a6b667370635835795766377935487045734576336c7950554d45476d3373706a4846483757516b7a674c4a4c6658414b305477336c77786f644b44514e715361354a52744a7946546771496271365974493675316b66765a2b486b7944514e695a592b465333745a6365785a2f764a6b675277393658376d37626d377541673266617934686c44745467506d73304e334b51716d2b386e6c5642616471535839765a3066744e644969716f4f37764d4f484a4f64784e765a30454e6a4d554b6337615571503731543931636a5367485970393150416f4c2f733249306e715a4162484c446d716a757a4164536e335579574343364f306b4973542b4b50326d61714f367534686e536e6433444771432b57304d756d50777753783273686d50773936722b3775557749526c765a4d324d666367754f336b33456854376552423068557733747739524641674e374f4f6445466f326863552b43663757584771702b396e6a476f5453333869314b6f482b7a6f6a48625a6b5963565639334d5478634953333835426d722b53432b573078647553454e735a5a4b69572b66535269666569643930644e50355546343239772b45304b6832743034454b6b623635706f582b4359373635487150754761426f37613532707674433952584a566666794165535033317a6e79507336437957306b4b35384566496c62772b436f4f386b6e2b2f4a79427a514d4c456e63554f66464e473079543736346147414859556833313341434a492f582b78426235423076334a664a6b614e2b434839774c615a414f3330757959656f6136524655424f316d4453724b47784f51537a39516c625055483449572f557a4a3347413936416e625365716832387346507679616b4144394e58554f2f6e6a6f6a336f4547306b61423034326c77345247726e2b31577739534d58365150346f3152487157704257647063594f3363716a73626d41487678562f33306a31474a5a412b7154746e702b5343694f776c67773763552f77426a49436961507131774851592f366d6f46503774576d723349462b78754d635642744c6d4434386b5965727455702f3778626a302b3379514c396e636b2b626677674a5073647849644170786c54325a576e315236675037646961587154596765394252396a4e326d53543841696468634163465866334d2f7059492f33567867543847515557396e637945543855333246782f43466366565941616a475237456b5057426e4359484c464258396c6468347543583753377031554943306a31574d7a53457532694550563474345379436a3757366646456166356b50736a44492b396154367a4458567950356632496e3161322b714d61482b46426e4f7a6c6951432b544b6f6261354771337739597435673035666b6b4871316d48564f4248627951592f4a494e5039584650355631734a61654b302f336e62334d7733445378512f756b4d4d6d5163694476544171794d67542b6e3954636c515a3661464b4a4d354a63464270686a524d4a7448534d46527230306f2b49373059546f3071494830475277663235714152447577596f506a715530786b5252334343794d6570714d564a644d5735717354414c46466d774b43304153704b6c4b4a52624430347174694a48694649456d7561432b5141775345767a41553176306c4c62596b67356f476b4e626734634a4a39746475376374616b5150306d73565158314e4b68566a6b346842316248727349394f35695938785750777758557433626434663070436659563562555a6e5648765354684b4a654852495a786f673964703731574b564334746e31692f5a493836506d524759785851323371323133423036394234584b562b58785162496c774238314f6141692b4f614d54714f6b49457555516b325761596a4d684c544a41346b31536a4366446b6b4c484251536648464262714a3675435564574863674352523058594e6967634e696355496871346f616a6c334b504931514d59736f2f7653305065692b674641655154644f4b72724a514279654b4179524d6e4e454863664a41314b42774e53424344616751436979415370306f767053307a702b536a682f624241544c4a413071564e4c394b6a4949534751456168385370497658697045596c41525767772b61453051324f436b543730456744336f434c31526b5853534c6f444d6c776961464d4b4273696c5979786f45454a6646414475524c6b736167494d636355455a476d614a6b31426e696b4d3045795a463251717a444654476942644c756a5350656a464a4d4e584e415163686d6949767939763249616156594a6f444e41756e6869694b70714538796c4b434e777843414b596c68676c646e2b4341535959596f6170484245554834497345452b6e6d6f7749637151615367646d785154554e544644414d68694f784538454569786f436c3539695a736838456f346d71416761636170744b575163746c2b534d6a6d6757525479464b305a416e76536b74524151354c6c6c4969724165355161585931546d68716772442b4b69496678635541306155543150737941455570564c6a6769656150464142566745486f796b7148687a4b4c416f464a503149434a4741566a2b3261514e71514f6164576148695974556533596f474b574d6d6f675a694d5557657553442f414b736b58654c6f42386b48306969686b4f34715277626b674f41634a644d5a64716133785130673449494f48682f42545470716f5746516f5a616855565151564c4951366a70644d4b5639796b6d51416777553034484e44486d453441465543523673614b484446456c366d694249385342797a5653596852336a79556b30655846415344576e3745477133484e544556512b4342734b7367524b52664c327951314a35365744494979574e537950504e434a393642694345766936516e646b6f6c7951413172697032425443696d4d666b676764516a4a48476850656847576e4842414f6b493064796f4a424f593855466567344f70704278373051374e797855505a38554278436b67706e57714e4455594945485434736677544d6351704b62646d614461634d507851484b6941476d7077544543584632524547514b3437666246486d63564e5878537847724c444e416670645355717054546d6d426643714136796f634f61414a6448436c58514c5148755277375550467a516236536759456a784b616e504a41594f485264424134775377624c39364955494f6553414d5a4f4d76785277527843687a6a6d675671696a4d6d6642776f34775a4b4b31514e51466b51654b5578593951544d53344645416b5852624d444a452f4e416471425747616245414a514b755452535151534e65715359506b50327054694f43614c6d6f434252486a564758384955783973464477397661714262624d7a55546b675a4947546449785550504641644d5455312b4342384e4f39524d5973676770694d453144306e4e44526e484e5349514842566b6e4a574774456f6b4737454569477737305865716b7346496b6a4a4244315547434d5269526d67596f6d6c435541692b4a78544f3353425651484a4e58504a41755656476571684f6b386b63554378414263706a4c4c4171475048464c586b674f4f4f614d65716945576675524759514544696c6c577163526350775379426349456c5350424d4a686e4152694b55342f42467663674f50622b4b454b6854536941572f4a414d41416851445346424758436962454f674571554b44414979715077516b4b4d45415969715979376b7836536c6845596f41344935354a67344234714d47354a576441667a514643614d704b504a456954645342574144736d66676938633670514f39417734484e434e48396d5247504a45444c325a417546545149654844424e6f4e57536c414446336a3755547830747a52414f49554547784b41522f6939366b6851446969445276696c493549494f654b426a716f6e4d684b69725a30454571707a58485042517150544c745141544a66326f675467546d694f6b4d6a5467676e674c4b644a4b6b61314b4a464b4946504144696f41794a357152485332504e424447694f4e4d4573673965536b526d45424641516c427134397962686d364770685446414e6279726d6953434d45533158526c494d79414d475955556a6b6379692b53414c34494337486b7052325149346f77356f4251646968714777344b56524d614941654761444351634a7748446f50704b415271706a58326f69545677704f4f62494a414d4d5649795a414476525a716c42484342424f4b6d6e556f794155666b6a704c73453141464478376b435930436c4a56696d4c415a4b444667676a463871705361554645325655474b43446a376c4d4f6642514f634b714d3551447439676d387a566b6a4b754b676939546d67557878516a784b6244384558725241756b4376656a6b4336424c4631474f4b4168736e554c4d34514846545336434873516a673243646e787056535555436b652f4e43543467424871474a716a7a5152754f614a4155423034706a536f434372527754787279554569357254336f6c733043737942723765334a46686c2b78484e30417a716f584f444d695471352f6770676753595441426e5255504841494152566c41575530352f425269676c48556b355374714e63516d4250306f466a78792b437346616d69586d69597431494663796f56444a6c5043457a4868336f4677782f636d6c676f7a4941635541306e4e527963505a3077446f4e705a736b456a467a77556b4147436d435a75574b42635647346f365161494d4d43614949784263657a7059565445643455624d494245456f4e6736614c424d434d4d554345685173616c5453447943476455446164494f614c6e6b705671706f422f45675352644753614c45705a664641705a6d5278787854505241687146424347445553796a33702b314178303449413852563150436d6e4853675339454249514f4b676f70496153676e6944496d4f7246535452556b4877716768426169464456517437594a6f395061554572584e4c454f6a56755a556339694258366d6a69704956644e466e6633714368346f494f476141346f354d564f53414370632b3548476b6c4d305968424f314b315777556b45666d6767697870696f4d6c4154437249454f4e4b43534874676f4b303471435842516535424d4255464b4e4a79566a596b4a47426a3765324b417350636868556533374647637067484e5543314972556f44676e494d7170657842496a676f584e4d73304e50765549506943413873306d6b524b7469536b6c55736745683030514e616971734c6f4d58644168466166366c4a4a792b4348544573675145706d616e42426a676345515161596c414e4c4f525254556a347953674b7678514b4967422f594a54467a6a52457777526b474c68417067374149633845346b58664a517842716755525a7a6d7135646e5972674d776b5156474447714541354c6c504f4c4e7a2f41422b4b4944314e55464d72564853796870444b2f54562f63684b4b444a7742506171365337517457687a7149536d7a45645846426d3143546b4a7455683142735578743654797052494959792f42426e7551456a4a773478584c5a33352f4264323141796d4f43346d3374755a475763756f646942445a69534448496538725a594d6263515a355033704262426b47384a556c7459794c6a4242726c753766674c3867464a62717870722b61796662356b3051386949426442706c366874785559742b6c456236784a6871797134617178513230575a756b385573396c527751483971494f6a48643254693150782f4656486457526b467a35624e70466d592b3243623751314a4f4645485138363134695062696f64785a6a556d6e344c6d2f5a444d6b6e6d6a396d4a6e564845555164447a3748367144447078514f347355367346674f79727a2b4342324d7a68705a3838554851473473786f3437305466737a7164424c397665467a4a624535316669614241656e61533944386b48534e79777a457432305138367845445470626936357832556e2b5874676e6c7457634e6767336d2f59316167516f4c746a363767584e2b3031463876624a5048617634674e587a5164435734325a65635866344a5a337245756c367246506253474a485067795347326b42587537304852382b7854344941324c7641356346672b316c48702f656f64744939337651644b354f322b6b4d477735737047355a3156496c566376374f636a514f6c6e73394944446b6736766d37596835467735516a6632756f485651726e6e6154464d6d77532f61794663526767366e3944455337614a58327a556b373070374f73413234495934714861384d4f7842766a5a737a625351337a56672b3348696d4136356339726b582f59674e6d5451345a494f6f62653362706b4f31536362416f343539363576327334426b35326b3541366e5a42756a62744139487854697a626c45737935703255715372324a4a376336767172376b48552b3132394451794844393661646d79774a627679584a6873794d7458656d6e745a517744636e64423034574c58454a7674345976466c78706261654f484a5162476f6b5a45494f7362466d4a7842666e38555951746e4131433573747359683475653943566d35417479656944705374573559476e42475671326161734b3658584b6c47352f4545507470383351646a52625931626d6c3875784d4d395175594e704d6a436d58616f624632324b756558375548584669334950306f4462576a4c47502b35636a375734533641326c32355846766b67374d37566b505564796868614c42317954744a78714b5a444e45575a6b564a374548546c5a742f725a2f656e466930434f74337758484e7344704f703073624e7839566159494f77624d434767553532747363427858473869354c6951663476334b6552636c54533537616f4f763970616b783152716550344a7674493546327252635365306d535769796362596d73666d673746766157346c68542b5a453753422b764e6363574c342b716d66735650494d5337486c79516467376148366e44495232317246386677584a6c357352706a4a783256512f724d326f6735494f7a3970594e5361386b4c6d787379702b7863675133414c796b65664e54544d68795a61755a516459374f79576b4378354a5474524145796b57465679774c6b637933616d305863486b654b44702f593235562b6158374f316a475a354e38467a764b7552784d734766563730734a58414331666d6737493274764548707a356c4a396c5a4764472b6c63732b5954302b504c32775238752f34544d6876306e4e42312f744c4e76503379532f62577854334c6b474245737a7a6b6c42755a6736686b673748326b4a653155427359524e54324c6d744e6e31464a3531353878326f4f73646e5a4f502f414b546770396c6277424b3545726c39324a5a447a37354f4a48346f4f78396a45637772447351774f504a6359543345686f4d32436738384774776c6b48554f7a725767542f5a69596f7935526c6638557268347072642b372b6f6f4f6766543479494a722f4c6768485978636773756362392b50684a44386b4a626939507854714f565548542b7946423074373149374853486c6d75595354557a6c3346714a59334c7349394d7044336c4231527359436a2b785377324e4361426338584c786a714a72376345504f75796b354a51644d62476a4948592f774158647a574356792b4b52504e53562f63796555526833494f6e485a6674565a3254484572414c3235594d512f78522b36763861637553445a4c59485430673134346f6a596175715436656178533346396e4d7666544473546664626f654b542b337a51624473774142416c54374857656c6e3435724639376478312f6d70472f652b6b423048516c73576a53596668494b73374b5a59697263466c382b394d366f7930746a6d68486333682f314365794c494e31765a584c6b735748344b36657a3163794b4c6c692f66493134667a465752334e364938595a2b626f4e6f32636646562f676d2f743745474a3663335749627138324e4552754c704a3059494e5a324c4d787a7751477941646a6a78575037792b4b776a6a2f4142496665376956544c33616b47366670636a453456344371616670386e78365150437a5033726e6664376e492b39416237635271344a374367332f41475535534d677a4566715247302f5645557a5747572b334643597844356d58354952333933474c4435494e70325554776b6553483974493073475753572b757847716d50656a2f41484b3547577159726a785162663765626e6743575870376c367638466a2f7556365144796b572f54524358714e31385737616b6842732b787151436d2b7a3472475055743148776d4c446c56475071313456596f4e5a32457a67717a73626e686d7a483339697050716c38314f484e7535567939557661756f662b7042712f743067576a346164716557785068446a34724a4831616368574b683955765a7567304430346d6d7376696f646c50364d527a57596571584946355231457076377a637738704265646a4f584a4d665436724b50574c682b6e334a342b71334a5259524c494c4436664d55677a48464c39684c517a315a4b665570787964303339786d7a615367342b6e546755597747574835725a4f7845566752376c58354765623969436f6b454f7a454b43526269724c6d334f70335a303332772b6f6c425643344a4f314f61676d513447412b704d4e6f4a64526c33414d6a3976435067632f77417943526338776845596d494a62686a54464854705941595a74564d62596d306f6c7a3769676b62756d7066767a554d7338485146677934767a55466b5071487432494a4334485a386331447a4c53664657615148684b764c745130474f4c455a494670474c696f2f55695a30726963736b77674451595a4a4a574d7a3830444136616e492b32436b5a456976754f4b6774516b645751567569494772536751536168513152774e592f784d6d6c62684956693361706232344d73744b42747475372b31705a6c306a2f414b6371673968795855746576574a644e3847334c336a344c6c7774527152567149365254503549505232373975384e5675596e4563436f596759726737626157796466686c2f42544264534d2b48636776597630304b49654e5771712f4d4a556a4b517136433357644c3570774d4654436264564854475a3766795157387365534a34484e55616a6979614e33564c385546326b6a444243723455565a4d6748556e5039364277644f4f43647461703150347633707953576167514d3347724a53484f7244464c456b6875436c636b44674e6e56454a444f6a35705148366757515853725254535268324b76716c67656145356b514d7a674167615a59315446694b685557706d5963315667695a5677644177466449524c436d50464a7136613845544a73445241786f4b705731645842516c306f66496f474e564e576e4a415a342f76516367736766487378357154424a354a524d6a73514d697a6f47656a35636b78694255716f5479516a496c426159356f53693944696b4a6b65614d703449444f754f435853796b69487055496e69674e575a6b70634a49794d714250483863454546636c4b7652494869534155524c506c2b39417a4530526a52714b754a7a4b6770544a417869324b4a72334a4a50376c434f434176716f61684d5067717849742b4b625547356f4256775530364278696b457378557034383042792f4e4b7a357058656a386b524a7734514d547153786a71444849705a4134493635454f505a6b422b4b663936724e4f616d72526e37766b67594d344b6a4d4b562f61675335717178714f4b427739587754557a716b6c2b7851794277514d7a4a6f3156656253524d686d676653775948745171615a4a63715975737671462b653132647939626b31776157506161386b47796a7345496976637174744f647931626c4b704d49794a376578574d5232464152476751646e5a75536a6a73536152484442417748636d316c3253416535457941636f4378776b6a4d737778354a634d507a526d307553415344356f784f697365435473785541476642417a534936683763302f63713348306f4354307a51576c56696c4370356a43744642714b4175684b535639574b6255785154464d376e73534156342f67695267414847614274444279674b4b6548456f526b6665674a6d335970706c676c4262747a544f546e5469674d51442b53474f475347676e4e51687355454b6278554b5548554643347951504b76463041574e56434246446745424c41366e52415a4b34783969704752465167495056516f4145486b7044467633714d584f614353494c4a764c53304f66596751534154346d514d796b30735337633054446767494655414855656a6f4d355145426d5a526f346f436f514658664a41786573516d72564c4868692f76554e43676647526b6c4c35315162463057663277514d6365334a4b7a3039763249633072462b6142346f7969484f53723755666d6749777752346852364e69714e78457a7358492f77532b5343384f7a2f414152306d4f584e654a735173734463776234713866615251657530367662322b614651666d764b3664743265394c2f414f4f44516a2f615367395a4771625353485061764a512b312b7157484a7677526661534c366a2f414f72386b48716e4a785230456c655431375965456e7344706a5061536f5449486d55487168714f4952626867764b662b4f4b655a4a753339695456745251546b6138535077795165736b3554474c68655665302f6a502b35495a324a663841556e79367166454950574e785541586c4e4672395a2f33562b5342733242575535652f3969443167475a4349693946354b486b4f2b715937322f425761374d574f7566762f49495055683863384f785163364c79757579543435742f4e54354944797359335a2f377632495056696e59564f4d53764b76626a2f314a6637755063684b646746764d6e5843764475516571456a6a383057596132586c544f7a4b506950765542735947374e755576324242367079616e685648536338736c35587a747668726b772f6950354a746469542f774253582b37396944314148592f75556478566c35636d78442f71532f33742b43582b6a49316d663936443155666770474f575338762f4145514b542f3841576d6a4b33707263722f3841554b443034497839795541696877586d664f686e636b50395a5655623973663953356878503549505778693148376b6332586b6650746c6e6e5038413346503531715272636e68784b44316d69764e4856474a5a342f37717279586e57763841755448656679565a753252575636352f75503549505a752b51393455455334594c783333466f466a657566377632492b64624e664f7541383566735165754673356a354a774a735279586a50507434693963727a2f596d2b3474732f6e5850397850344950597363472b4b686763783256586a35377533674c397a2f414848386b4275517a7876335039333745487374427a51494c44396e7a586b507549792f36382f397a492b664356504f6c2f75516574386d51785443335469764865594d72386a583955555463426a2f414d7847574951657830794641457254647743793866472b502b386668324a6875763058706a6c715a4237434d4a4953684c6854334c796364334c4f2f50766b6c6c755a482f384161443730487252624f66755538737579386e352b494e2b586449666b675a344e666c2f717549505853744d4549326a45754238563551376e6a754a2f372f324a4275716166506d57352f734344313468506768706b2b4743386e393577767a422f6d527562302f392b66384175623845487244624d736b5247574244727942335149483965352f752f59703934422f31706533614548722f414370494733494c794a33494e44656e2f75483449472b4b76636d2f38306679516576454a424349712f745265526a6567342f7245665035492b65332f576e582b4f4b44324269534b684b496e4e65534e385a33706430682b53497667442f6e6e2f75516574446b344d69596c7346354b4f344f45623876393337457372347a76533770662f716f50576942344b615376497876572f38412b6f7566377638413955492b66413458376e482f414a6632495056614a634b706857544c79666e76547a352f2f704644634439563666644d495057434875523870797a4c79503349442f31352f77433676795147376167765450742f4b673967496351554e504665504736482f65756539456271424c6a63544865673966706c4934465178494c314b386a3538542f313767503879457238446a656e2f752f59673963306e774b6869537a6730586b6a666951587679625071534463572f384175334b66784950597363514573596e36683846354962793237692f642f7742782f4a5162714d692f6e584737582f42423638524f4c4b5147524338694c344a2f3570754f616e33466133353930763249505773525676676a58675635416275482f6675663776324948647750697658503979443245593164694438457569523969764a52334978382b352f75547a335141627a376e2b2f39694431706a7953776758596865516c76422f333767372f324b4464312f7744754c6e76503549505941534a367166464e704d634635435739414c44635866664c386c427534683333467a2f636739596549422f4c344b53426c6943764a66636b462f754a2f7743394837702f44754c672f77447a69443131546c38455977397633727948335a4652666b522f4f694e314f72376954482b4a4236777730344b474752783746354765396d43787633447a6476775247366c2f2f555850392f37454872693745674b4d6331354c377959482f7742784c2f63694e334f4f4f356c58684a4236733670552f4245774a703856354c377163685463542f3841306a4b53336b67645233452f2f77424967395949454a6d504265512b2b4d616a63542f33502b436e3363694b376934334b534431326d6d434164734f7865532b3875436733467a2f414842453732514c656663702f482b7842367955484874697045454453764a2f6579442f41506b584b6e3958374566767079384f346e2f75434431756a693651785069446c65562b387270382b35582b5039694833782f2f414b69344f32546f50574d3866324a744277586b66757079442f637a37726a66676a4c64794e66754a742f39514f673962546755484d736c354c376f346e6358502f306e37452f33524972754a6a2f383569673957496f48694136386f4e334a2f7744376d663841766238454476412f5675626a63706e2f41504a516572416c484646745a772b43386e44635169582b357545592f774449704c64444c6358502f77424c2b78423677344e565370474877586b68664f6e2f414a376e2f77436c7168393031664f75507a75495058745271714749474c72795039774f65346d503952503449666646762f754c6e2b373969443135692b4b4167446b7649486675427076334b3833552b3531564f3475482f576739657846414379494c444172782f7742324930382b35337a5034497833655833452f774465632b4b4431784265674c49452f77414a6f7649793354485362397a74316c48373247483346332f635548726a714177556a4273632b53386839384d7231312f35696f4e33717776334f2b534431306f356f4855636c354d6271512f3638782f71524f2b622f723341472f562b7842363057364f70474a42594265542b2b634e3539782f356b7633762f774463584f2b534431306f4543675130794177586c5075762f3769343338794833686964503345385031495057614a4f3644534e47586c527578495533467766366b527634753333467a2f414866735165734c30537969587a586c4a622f2f4150754c6e2b3739694133596c555837762b35423630686a5156513849774b38714e314931462b5a376269483356794650754a762f506c376b487178486c6c6968553476376c3559372b582f41505658443764694839776b634e78633767794431686a712f636765776c65556a763554502f3346795038417148354a2f7661662f637a3936443152655355754d6343764c6e665961647a4d464c4c31417351647a4c4242367254707852353472796639784f41334e7876626b6a4c65534654755a39306b4871756f2b4769476b3142586c52767a68397a503570767670436e33452f6c2b434431544f474c6f615070586c54366a4d482f6e75563975436133366e494e2f35452f39546669454871434b5571794c4578594c793876555a6a2f727a2f38415368392f4c4137695663395151657130795a386b4a4159745265582b39755a626774326f6665545936743058346167673953596b674d4b39364a614f58774b387a4465475652754a552f6a2f41474b76377a2f2b356b542f4144495056446d436a46354c792f336c7a4c63482f6346493736594e4e7766393053673951354155796471727a423335774f364a504c44354a667679502f327158743349505556505345527764655548715a6a547a7a33502b536739576b662f414e6f2f394b4431586c392f7952384e5a653565532f756c786e2b344a2f6c697268366e4f59366478582b4b4951656f6979445069764c48314f37457364776f505572682f7743763765354236674f537043595a65582f7556353347352f38415345523672644e5075652f516739524973634b6f5242586c35657058542f384174447478696d2f7573335958792f59454870684b67644754634d56356558715636465933683767682f634c30362f63736739537a636b4e4338782f644c7638412f552f2b68306b7655726a313364662f414b53443157707743366b7535655768367264622f774334502f364e512b71546e6875432f5a4642366b527056534a47574b3874443153354843394c76696a2f41485737694c354758676967394f4e4c5949386c35663841755638564735475036596969582b355832593339506934495055634e536a6b56586d492b6f33733978376d2f4a5366714630564f3451656f6367662f414a536c52693638722f645a4d3333422f7744306168395a7541644f35702f3950384751657266676f413536515237313549657258542f2b306e757470346571797a76534a356969443147464b7155492b4b38702f63376f2f7744326875795037464436706669582b34502b333969443155704e794a4b4a5930393638715055622b4a3348772b43457655372b5734702f4c2b784236754c35666d677842586c4a6573586a5837687551682b784a5031613756397a38442f41506b6f505843503149675659443846347558717477662f414c536634656b2f6b7178367275422f31504d62484642375755574665614247446f576f3945536354474a545344436d43425a48336f526b47726a3249675a6c5355596a7179514c4b5241656a465350536330734944464f66656747747a524476553873484a4d772b6d6942635642306c426f79354a68474f4a38534141506a676c6c4636703265726f3663732b534370712b31564247723855326e39526f7070446f4b2f4c50596c4e687a54425836663143714174344874515a355738677373396c695850566b363651684867704f41384c4230484d4779677a5377356676565a326351656e7558566e414d496b4b6165564548496c73736134704473424f4c616a334c746558456c796b6c5a7a44494f584c30365159774f474c6f483036354b516d5a6151757530512b4c4961497a7132525163672b6e7931504b54397950326845534e64563178594569774a3745766c78666779446c665a7965736d415550702b6d756f7271365239536a41494f57646c504f5747444b763757517271585a387146436c4d4934464279767444634c4f2f636a48302b76694a2b53365a7352444b527351794442427a7a7371366958716c2b7a72556738794630764c436156714a5a6b484a6a74657648424e39716353756d4c634d473755545a4170456976346f4f58397468702f636764764b5766765853466d4e4f4b734672696735423237344530524e67426e4b36633972414e46714a6f326f30702b784279425966776b7552345566496c56732f702b613749745246514570744239584a42786a596b5147357177574378474336777357356c6d57505974653830476f68636c45646d53444b4c424e4b4a59375870615337486b5738782b616b724d596a42427934323864523969683548577a7575714c4d637167714331626b4548494e70384d4554747a694b4c7278737853433142325a6b484b38695563442b6149744e67563144596933484a5157594474516373625854375a714462463856315074494a764967507851636e375765495547327544426e58574732674b6a696a3546736c4278343756696175614a7a5a6d324e427858544f3268716370764969534b494f534c426a7a545274546a6a5664453249345a707649672b595163305757342b33636b4f334c346539645157495935354b666278384a6f6345484e6c74694b782f59674c644f6c64456257314f6d6b344e697254743478464b555163337954453830504b69637356306f32493534716662524a596e4e427a66494c354e6b6c38676b454d756d6241774a6639696357686d6355484b466f696f79475342747a46492b497270697a48416b706a7434635851636b325a6b38654c70764b6d4d6172706d7748526a74686a4642797a61777054696f624d6d34647136597343574e564a3267576442792f7469613054477a495a4c6f537361716f36475046427a444352704b6f78514e695459447358544e67594a2f4a3143707751636b324349754930524e6c6a6946314a625542716c2f636839766d67355973797978554e6b766856645957674b59717332526e6a77515966493178384c636b5a324b344c6f6978542b4a43566752487355484c386f7530734d6b35746b347263624441416f2b52484d2f753745485046736a32785275575836563076494758636b2b306e787167355a3235484d7076747a6951467338772b624c62784479697a396856756935476d6e3855484f6c74527746565074645751717567626335644f43486b3347717a68426868746d63706a59616f69467546715a71477170433163627043446e697a4a6d5a302f6b785a3271747874584f436e6c33514759494d486b527a6945427477634279572f524e394a7734707a4361446d47774152514b6662784231474f4336427453634d794f6934547a516333794f414b734669686f385676467535436d61476d556778784b446d7832756b4f57354a6a59424e636c305a514f456553724e6d6274484630474137664d426b664969574f6133787458425178484638306e6b54727843444c3545414d4f61593259524c4d744d624d73576441574a36734b632b4b444e355561754b6f6556414856386c736c6275797a5a4562613451783039694445625162436a706a43332b6e4c6774586c794172374243466d65416a6967796159673455546558456e43754c4c574c4e334d42755a77556c5a75506745474f56714a596350306f434d5870674857794e6d59556c626e67576634494d59672b474b6d69464246624957797a426e5268626c6b422b4b4446355543474d516330425a67664541793243303563687a37636b644a4e575159355749593442474e694e5a73345776524f6a427a38304462503657504642694667527067426a33707859696352324c5635526c566b54626b4f6e5357515a5a6253326376594b6662325268462b5073566f30477446504b6e77515a59374f30474947484e776a39744855375657754d4a5070702b4b575563786b677a6e62786b4f535162534456664261794331416741517a68426c6e744953496c7743503273514e4b30335a4332596730316c6f382b4b736c484b4f4b444839724877736b4f797473596b4c5835556a5648795a6d675a38554750374f32574a2f4e4c3968446a334f7470684c4155644270594e54696735526c474137556741776c694d3149533151635975687231457841666a78514853433355656e323449616e6f3774792b61476f6c784c7554456b342b4549434a6458687751357469704e784c346f3675644544526246535430487456497a346345663074694d5545354567532b5361546a706f572b4b61344e546b6748694657514759555154534448566e67724a5777476c37315777427a56706541636841756b65474e4f4c6f334f774d4f434f6f79505570415348694164417359526a552b477174685542734d6b674d674f4c494143417134515167594650355456396d52305269306f462b4f704755614e4842414941477157442f366838552f3161386d5443446a547a515062747638317067354942565676495079567a6a4a41776d4d4533504a434d6a3956585541664241656b35643659634a484467674b6c776a7150695148555970394f595663736a524e71444d6763452f696937342b3942774861695676704978515071784c30554d6941366b41514d6b424c494442413270363846444c5667684550677942494a6f6768636c6b35476e6e383073734f61684c3531515275435463456555666972434233716a6355747a6761383046753370486b325359734b3056646d74754c66705467494c47616f775a56304b6a6b557a524d577163304542524853536c716c38534379527a4b44556f6c417949716f5479775152334c354a7451785a51697455736a33443845456b4b6c71736f33314f7050446e6d704871696768476f305231634d4f4352324f4b4f6b3151487555624a4232705643766367634d4339457444795338754b596469435348486d69593544425269447852706b67724772415a38453434464b5766682b616a59686b456c4c68696d4f546c4350536744577561434d415543636c437754555034494134643876676c314275426169745a67715470635269675a775078526c5641344e6d69593866656741723138314e5439794172333845644c4242496748734b4c4f684c7237564d6e7167445a6f674e697a465254537771676a4e54676f37343055474f7046416a56593570394c386d514a494c346f4d4367504f4b776574662f41474e334d74482f414e7933354d73507263662f41414c756d6f703830476a596e2b6861662f74772b53306d476e39697a6257746d30324268454d2f4a3164685441494153526968683765337954474f48464669376b6f424b6e596b6f537249705a4853655341694a6255457366666b6d4c68306f4f543446424d45525874514931387678526d507151446d45504655594a714245682b4f4b43754c794746565a6b324a5352643670704f394b49424c467a56434c6b6469684c6f3464714141736d4a6f387331424950584241527a51453430516b4b394b59523470634542304f536846346971494c42676a5476514b35506852445949757a385067675a61733663654b4343443957436a5659496e6d6947656f72386b436a6756445139564f78466d4c38554871326141746d5554494f574b47576e39796d4b43426d3449616e646b3044562b354c7079514375493571564655324a64446b50656748616f6152796445746e696c5a365a49476b584471513667364231436d534a47484e41497353782f63694b6c766d6a705a52794367674c564b6e7954526d44544535705966424170443077556c5163666d696575714a4761434367356f7a4c4d2b504a4271305549617373667751444f756677524468444563304f6b5a424130756e4656377638413470312b672f4a574675395a393742374677444852492b354278503865747775376b323578426a47326645482b714b395439725a412f343438664346357a2f486f6638416c456a4532634f3251587165314254397261617475482b30666b703970596a2f414e4f482b30666b74455572484a4256446132763052482b6e676a3545437a516a2f7443734c3449524f5a772b4b42504b74672b41663755333231724f33482f41476a386b3744464153644256506157662b33482f61507951477a7343766c772f77426f2f4a573530555077346f4b5a6250622f415062676639412f4a44374f7766384170512f32686148596f73632b4b444b646e5a427061682f736a2b53614f30736e2f7077353941576c7566596c6a38454648326c71582f546733386f54485a3254394550396f5673694d416f546b67702b3073592b58442f595079514f7a736e2f414b63472f6c48354b3933464d305770326f4b6f3757774434492f37522b53673239707642487669727458775166695851564862323834782f77426f526c74624d764647482b315759684168327851566e62326d625245646b5170354676384153503841616e776f7a703263494b664974477569502b333969427357574930522f77427174457156524d57485567704733742f6f6a376c4a574c596f597834344b305a3846476246416e6c32384e412f326f6558627a6944334b782b38494e546d67556265334c36592b354b62466f6653506372524b6a49766f43424a5734455569442f414b56574e76627a6750384161744663557376623243436f324c522b6950384174522b3374616d30522f32685753627771514c554b4376794c63666f446469683238663042757857676f617a69654b43715733744436492f375971694f77327a6d637255484f505336324f43575368694b6f4b52366474662b31442f414768543744622f415061682f7469727957544f492b3774515a767364732f2f4142512f32782f4a513744626639713233386757686d4473684e355543436a374862696f74512f3268435778322f384132346637522b533041635534445561754b444c396c747a2f414e4b47464f6b496a5a32422f77424b465034422b5376424747434d686b45475962486243766c512f7742672f4a534f7732374e3556742f3551744a4f616d4e634367792f59376334326259482f3034342b3548374b784c2f7057782f6f48354c5532615745736b46413247337a7457322f6b6a2b5342324f32422f3472662b7950354c526a334b4233644252396c747851576f442f51455a624f77522f78512f774267563051577737314e56454765587032316c55326f6637497153324f322f77437a622f3841306366795767734b4b436d48376b47663744622f415061742f7744364d666b6f646a742f2b31442f415052782f4a616f6c76624e4451636355476237477747617a442f5a48386c4a374c62302f7051374e49576c6d795544737943676253786e61682f744342326d33417061682f7348354c51514469677a64527a515a2f737473612b56442f595079547832566a2f74772f32782f4a584f794c356f4d33324f336b4f713162622b51666b70396c7473664b67502f77413246657846516f42385546454e6a594830512f326847573173696e6c772f77426f7a5633616d4137554759625379332f48467635516f4e6e5959663034663751744246614b523538554766375379332f484275476b4a7873724836492f37592f6b6e70346e667452314f51554652325733502f54682f7348354b486157663052622b55666b726134635561346f4b76747247476d492f7742495354326c67313875492f30697176306e424751636154346b464132646a4f33476e38492f4a45375777504443482b304b344d78634b61714d4547663761794f7252456a2b5750354a6873374f55496637517276437a4a534d6a6d67702b7a73596149552f6843503274714a3845663841614663474b6c5367513761312b69482b33396954794c663649663751727336344b47514b444e505a57376c4a57342f37522b534a324f332f414f3142763551744d68714479533179515566322f62592b56622f326a386b68324732702f536733386b5672642f336f6548327a515a683666746d4a3871422f304251374862442f414b55472f6c483564363176564b4a56367345464a325732412f346f2f7743324b483247333166385550384161466f30616b534d6b4755624778674c56763841322f73552b783278723555482f6b4330794473684369436b624862762f77414d47503841415079512b773238662b6c442f6248386c7177443570586f78515a2f376674786861682f744835496a5a626366394b482f77436a48354b384f42306f695434494d386468746a68616733386b6679556c736475445331622f414e6f2f4a6142517363554d4b6f4d2f3265336a51326f4e2f4a46413748626a2f70572f396b667957697054654a426c48702b32642f4a742f7743794b4832473246504b742f374972534b30524c484442426d2b78322b506c57332f414a492f6b68396c7473504b672f38414a48386c706268696a4d634547663754626b763564742f35492f6b67646a7435553875482b304c515253694c306233494d38646c747a54796f6637425434497932573346664b682f7448354c51325342726d677a485937622f74572f3967566b746a5a722f54682f746972674b733951674f4b4450396e7473504b672b585146447362482f61682f736a2b5330414e7a436253677a2f5a32524774714c66797878516c7462456143334676355174455a5551427a514a486132426a626a2f744351374f78554333422f7743554b384e68566b44524256396e59773875482b324b543747782f774275482b304b316a454b78366f4d2f7742705a2f375550396f5448625763726366396f56724d67616c425439705a4830522f3268483753786762634f33524658534e487a514d753542534e70747a2f77424f482b794b493264682f77446a687a654956784770515170556f4b5073374a666f67542f4c48386b33326c69542f77424f442f7968574f3145376f4d3074705946526268542b41666b6a39707438664b672f774449466557787a554134494b66744e75502b6e442f6145527372426f626366396f5445444353664c6c79515a356248626e2f414b634b2f7741492f4a54374c6278482f48624c667744386c654f6c7a6b6f3739517a515a7673397447766c5150384170436e324f33482f414572662b774c55412f7a554859677a485a324b455734442f5350795354394e3230762b6c442f615079576f6a546d6d6958515a492b6e62516a2f69742f37516a483037614166384e76384132522f4a615148556c336f4d34394f327872354e742f35492f6b6f6468746e2f414f47332f77446f782b53764c736a3230515a2f37667468555762662b794b6e3247306a2f77424b482b3250354c54456673536d4b436e37486278482f46622f414e6b6679512b7773592b54622f32522f4a587a2f59696355464832746d644461673338736679556c744e764c2f70512f77443059576a41735542554f4469677a53324f33773871325038415248386b33324f332f774331412f36422b5376356c544474515a7062446276537a62482b6d5035496a5937616e394b46503449712f4843716b63474b436a3748626b763555472f6b434a32646a4f33442f617236476b55496c324251565332566a44793466375168396a59797477422f6b43766963656169444f646e594e5462682f74436237546269766c78622b554b396d4343436762617a2f3234663751703970595a2f4c672b6653507957696878514c59494b6674625036496637522b536237613054574566396f2f4a5743564e4a5548753755464a32396b3457342f37516f64705966384134342f3751724b7837557a765242534e725a46664b6933386f552b30745034496637566249383668454e6b79436a3753312b69505a70434932316c2b6d3141442b55666b727053424e464b467763454650326c6e2f74782f326a386c50746247506c772f3268582f414351444444325a425439706150384130344e2f4b4650744c5036492f7743304b397965315232703730464a32316f343234742f4b4650744c5036496637522b53735056584a45485567543757316a4b4550384161456f32396e394550396f56776c526a78524166735155666257525452482f614549375330666f6a2f7443304775435276696772687472597247455737416a354d446a435048425761336f455836586a3249464f3368695952622b554a5459746e434d66636e726d70685134494b2f4b746a434d66396f554e71332b6d5075566c5434554b696d542f42416e6c786b39415063694c56736a5470487554676749476142445a7466706a2f74436e32384d4245663755342b436436506d677130524647487552386945764542376b7744426b41675879625a66584565356545685a38713365694d70796a3769463736566356346934504c7433762f717a2f77446367396c4164456555596f78436c7573592f774167556d324151444f694a77504245456973766235705a536f676b4446416f752b61494e474873794243484c356f6d67634b554249556f3342414165435a2b50656c4d5877556b5144584242464e6373714b65477079524931686b436d424367625032434e4d30327430465a5064785130506869364d7045346c5455473549437a423876656f435a43714661415a71414d61596642414332593757526469572f4e4d59317853316b326e32356f464d6355306355544a6968584a416b69324f616b71394b6551365751643473475144506c67705242675046696f5a6363454445694f4354512b4b647451356f59383649424544425267434d327167656e4f696d68792b614167427a524175394d55535032356f6748765a416f63496d705531555a4e6a6b6751564e44327074493161696a4d55634b4d617469675348554437653145545371676650424d55425042514a5479537335396d51474563653335706a536d4b4741372b355038304274346a6e6a795850384153543037672f38417a706436364554574a656a726d656b4548376e496561554854413034346c414e696345542b6c526d367330417a6f796d6765394b49315a31425448416f4730556f6c706c6b6d4b55422b2b694178445677524d47446c4c4563507954595a34494630484e5156356f6741684f53776245494b347563457874365470347156644d656b484844336f466f4b6f6d5249556854425273554375345461644971564f5a55643845436a336f675563496d44347568346578416561446161356f6b5a4a327964417361462b434169377469564e4765574b4941774c74785151422b52514172516f7a7872676f65564541306f36414271513857476162546d5256416878443449365159354b56385750596e366f786f6742714b594a4246696d41797a544e514d674853513376536d6f59594a68446a69686f2f53674a6a5254525370525a5442686b67587451474a795a4d427a536d4657434143754b6467413770577a487852456330416a4941664e535555303430316355635178514274654e416c5a6b38593153694f6b735079514349624772706f39485969413952676a584c3264427a59662f414d5375522f56612f4a627854427a5259596e563671654973742f366c30507751455231562b4761567453494f5077514a30305151786f35716c46453841335970674f48464176696430444535706a544442534a356f4a56716f346b3553516a467a38485145514456415370704c4b455a454a6732434253345578555a2f6246534b41366e4f6b4b614351704963455a63454361426945795544454156524d614f4d6b4239374b6132594b556470594934396e6167556a55665a6b52536f554161675572674f43414531366b30655367726955574d533755514b7746516c2f6d3853656b716841317851413958765249317553674752777145424d614a4251312f6369782b7052385a63554461766367586c69684679706a6a6a77515163666d68484d4d6958616c5577444942686769344130756f5769374b527161647142583146456469494e6171526a562f5a30414368694a647942314e524841746d67574e61346f67615377702b434d625a4c756e306e3655484639596c354e37616e4c56335649585630434f4b355072344c376668356d6e354c73356f46416a6c5566696d4d644a624e4443676f6f59394e53674a6744463058706a6b374a616345326b4d79447a55725a4557774c4b6c74557452782f4258585130756f757970417946587a514a546a3730577a4c7079424b6b38636b725046673945426b38694b4e77716f784a30743249444b66464e39516b4d554369496958795630496158714b6f6e454e6a3830686f37596f4147447545644a6b51594968744e546a6945577a70515a49474d5a5978783438304e5a637566326f7543573449447066577a666b674d434445386345544f52596e78634f784c566763696e4d706158497067675135425048713676656958696578534a46587167476f76314153344b52755348692b724c73544d416163554a48563476596f484c6548396962436f53674753734f6c6e4e4544524948686f45347232704e555454677252314f674d4973557766337058303052636e71623845447453714a6733556c44444e4573674d78586969426b68475568346c4f53426f794c70766d6b64716f43594a346c412b46553748465669584575506372525573675555517744766969416c504868696773676170645a4162696b6a6879436363366469416d424b7133456e747937437243484a4a4f4370336a78736e73515732326c474a4759566a4448425662642f4c6a7841566851416351694641654b51744775507438554448714c6c516c713542416e33464d526d67456a7038504a4134412b31554d3666735468744c6f41417834707170616d6f717067476b67576f374641412f536d6a4c565649376f47774c6f524a727a52315a49344677675a2b617242622b564d2f7551594d674d5743426977366330617048514e34736165336370467a5641416b485345326a69676b6978717071725652754b47484e416f4c59305570556a42463875436b654343486c676f5334614f57484e41484a414d445769416e352b33376b487763496867564831464242463648484a484e38485546545642694b4d6749366d644c49313975354538716f4f395167494d6f787854436155535a6953416f516363667951526d4f72425354507a524453726c6c524351444f676b585a4c70464577706869704d746766334941576c566d5547496b475267386c4330716f4951324e466839625038413446332f41452f2b356271687a4c69735072762f414e6a506e70487851614e7241527357654f69507956347252553756353765317830425851692b666567424f515542547351575346796149494470795542597351372f464349667455306b4f635367686248676b647a7a5441466d4b5069504a41325647644b4e544f704448537055753141674579487a524c53356f365448484a417555423663582f65694d43536c77446f41476b6b42595a346845636b5455616b7230644148694b6a334b414374555831462f334961584f703855453850656d7778556d4b36536c4e66623845445579516f534f436d4e4561494448715376717852656967366b42464f435756634d3052456a327855464b49426a375555626b6a48416345727557346f4a496161346c534a624230636968383044636a56434c6165616847414876524a66444a415042544868336f532b4b496e49463053324b425979397330324b5556654f512b434278494655426f516d4a455575625a4b61524838304231634851424359466b65655951413538536c4c35706959397168494b41534e587a52434a442b3156445051337951445335484b714144682f676a7149396d55496568515352596c5474556c484d714f516553417962386c6d3366547437722f6f6e2f414f31614e6267444439716f336e5674376e4f4d6b484e3943366431793867664d4c307365674c7a6e6f734e4f362f2f4144502f414d51433947376453427034704a566f6d6945724542413073456f3658544f34664a52364f4543315a5163734644464e674136414d324252484a79454a52644d5333534b49464934594930415144747843596a50696756355949524a62715244507952475a5149494e32706a454a6d41773471657a6f454f5073794c365552476a594a5454484a417a7361393644506a5230745377544871484d6f444874515a6b784c64694172514267676b6856467a6b6b4a794b4d5a42756c415a536f4855776f6732536d46446967594a4d4f78456a696c4c5a6841774e487a527777515a6936446366623830425a714f6c6831565473436561484d346f4a6961346f453652685648466c474b43526a334651795a51307067686967687a5269422b31442b58486d695a5a6f4a46675751446c46745653674851464168714936616379707a51516c6b514555426a5867676a746e584e524b542b6c474e4178434356646d4874775452426673514944734f78427a6967496b58594947546b38456f6f697942755134714e705367706f67346f42705a44576d71457447664a416678554d754f4b6c50636f6564454177777a544d54563649516a565456376b4269474b6b526d707261694f72416f49394b704361706f506878536a6d67596f5a5a4941424f614769424b3446456e56676d7753676b6436416d6a50696c664c6969497469707064414f7a4e537249675053696a67346f493564534d7558375558416f554d5545784f444d6f53337379416f5555454539536b514d364b455a4b47525a4151486f67634f616b6669674e5876514d47536e6970706273524a4552716a67674772676f523845794661737942753142776c6436657854416e4e4176696f5578425061707953366e51516c364a334d6856566761634b4a6e51467174686d6f526d6c726d6d4e4a49466f4f39516c4f79514849356f494d464e5655644c6f6967514454703750656f433955514f434476524249734f5368443570694b593043576f77514234343570306f36517945587951527948346f78666d796c4d315071636f492f3755576f68684a434e4b6c424457695a3638304e496f6f5a484641635864514d4f78413047534c366b4541624646365577536c79697a42417646455963536754484c34492b455651485346434b46304d4457696b513577514435706a704e6330445247496644464149523071464569724446424241474850354b616138304479524966424153557352715277707755596c6d6f674154474c3155447a4464794270544e41587168453638613154564e536c6b534b494353356f67503074676f41536a6c2b314144675752384e42564350503969496f6752303450366b41474c7141596a4e4247644e67684d56354b5a4943516c465230714646714d554145555772336f437149444d6756717152772f4a536a67464f7a345a4941534d3144514b55376b5842354946464556434b4f7068544a4152454d685248563341494375487651536f444b5664386c414f474251684a7931554448466b6f664252386b61477141474a5a6c497955634951414f4b43462f656f773936695950486b676736634554524b61467a6b6d6b66676755353673305879344b414d55754e41674e52696a495a68427570485532574b4145616c4a5670386b5430346847474e55436a4669673965784d66696f79414d534d4b3831416669673543594852516f4339584b423465394c4b6f6f694d656c3845414e554143366334636b47494c6c424a50376c414e4e6535415a416f6b64794136736c445241524d69347752384b434b615744344a6145746b6d643430514b3252727a5465476d4c71636b755a646b424a415042526a6d65355153775269364343496a6a676f2b6679532b49635643776f67496d7967557a6f6f5975675038716843695751634943533363674752694b63464e497a514767775531464c54454a674e4e4d6b457135636f42334a554242374169346c696746517938526369577676582b705033366776635052736c3471644933772f2f41465a2f6d67396a62597769634f6d4b4c4131533277397545682b6d4b68426667676e5a69454350656e5076536b525a38754b43466f2f424c4c696d35714f4367444e795148764b4c3679526b6752705141536167775249475951723455776750467751415235705735594a757a464c474c6f44704278524c6b704f4b62563746414a436e486967412b58344b4f667754534943414f476f6751514f336b6d68544b69414466565242414d3061484241544f56516d434254536d4b677771696130425264364641686c706f45474f615931412f414b5236554535684c4d4e544a4e544241453845424c6a7153354a6e34756752674d6b436748414770516633685275364b5a744e637663675678713730784c43694741795269614943394d4b49644f654364394f49556c4568416f6b48556571476b526b48524961764641756e4d5a71434f6d6f447070644e5170584c4e4248516658676941324a516c715a6e7751535758616a4534466c427734706e4f44555151566f4f6135766f7a364c352f77446d6b4c70322f454b56584c394631433375416342645164504b696869394158645144534b7142734d55416a44545446466f79716753324f53676636716f42445658696e493155434f4e50656b596e4839364361546b703477573755574a726b6f446747642f67674663546b6d45514849792b43455a4f644a5169344a4b41794279514642704f435a674b3439716d4b436175536b4e5a6f706f7056454541636b433530775259366d4f5367595056485567684e63457655613845596678597148704c43702f4a414a41684d324150734570444e795461614e78396e514a704875546b473546386b4e4c3933342b334e46335152756c335a447738307a4d455a484e41706636564151315553544c424153615438554141614c354b4566536d7168514d55456f3759465354745139714e584a7955385869514163314a4279426b6a4a76685644384b494154692b61655846434a414e4d305469676d54594a6456484b5030386b484743416b4d6f5142576f5550765567644e4a4641485a4e7046654b6b6d784842474d434b6f42686869675741624e4541595a386b4e4c5959354943315647594f45574a784b4d2b71686f67354d4133716c79762f533778554c7076556a4e637930492f3353662f414e4f50344c71554c797a4b42644f52554c706f5144382f6b693571675363645645784e4f5a5271334a5470783549426d67574b4c414b467a556f43654966397957492b6e4e467338314845674f53415270376b5a43495235594961416355455a364b5664736b514363556869355a4177464d614a734f6e67456f4648554d6e71674c346f6547694a664e545367576f6f6f586a54463649365249746b6f7a6f495a7161644a4878556348454a383347434261562b6147474b4a595956434752514841495968526d504645527167566933454b4757584b6961694441596c4165576141446e70545341784344556634494238454a5a6535504573456f6f676c50456f425447696e596943674445664e4b344d6b37742f4d6f59765241626b636b65555570434d514467674742716752536e7477526653616f6b44336355413858746d674f504c344a71767852634242772f582b6e7943503175753145524574575a43342f2b52414557596678727361796663676a36537a3052426f35554e516867656f6f4a68696c303575635532536a463379516564334f7134664d5a682b4b7934306c512f67744f34627a44456a415077717330354447574341355661714e7373522f37587a51306779434d6f66563769676c5268306e674541446a4b48664647335754534b614d484644456a74514e476f356a6968455650424b537a6a41736d694973776f526b67464251682b6175656771717744714459306f69434945774f4831494872714262386b7545576b4d305a4751385236557a5a2b354144456654376479674430507355474e533965435069514f36574d4a5a46504443767855385435386b465478384c3152456441476b6e2f41464a34754d52526b784a51455365686f416a616c7044795373545868696d456763666967642b4f6173314444506d7132365756735150456768692b4647566a53755550764b726a4b5172683270343854512f4d4941495666324b4a4c6c6c4e546f536c6b636b4434645155365a52516a514e676f3545654b41675562676d42426c375a705147346f78594f554266566a54676d446d67536a4e515365676f3641546d4d4f43736369694142506943556b4371427947415a6d544f2b4f43526e443549676c6951674b6f33735874465769426f534f78566273765a4b433233344155774c357064764d3641636c43324842417869314477553163304e514e446b694b386b424266383041375a4b435277425171794236646e4a42696b6a7852456e6a5769416736633053306f342b334a446d653546736e7851445345736d7755714b5352464b3144664e4159746c37383061477550596b42792b6166416642414a634d67694b70584a71555a636b45306c6e4f43415077517270596f4754342f42413153475231452b32616a734d6c58534a655342784948484e484a4b447843506959446767453478796f795a6e4e457277397331443165484e415349346f4246394a5a435169334241496d726a696a346856526a6e336330773671464174416d4969314b2f69674142334b4575517943614543513335496769574b6c507a51413078514c75366836716851733145417a716f47703756545a6a32785375415743435349795569614236633052783449554f4e51674d4458546b6345546c51412f464677516a6a68686b674942585039596b447372704f477133542f41464c62684c534b6c632f31772f384167334f4a302f4e427474394e7548366445575479703038556c70786274686d3649706a2f41416f47704a4b43496c674b4a6849794f6b7053306955426350676f70794f614558726b67676f585a51706f6a696f584e55417752665368454f784b4f6b59444468775142363830336579414a78536d5179514d5148594b736168465058755334554b43456e334a386e4743586d4d455978593466366b43366a6b672f77424a5445616355547878434145594556555a79784645584a7139464e427a4e5545464d464a525a3078445970644f427a51534f4442423278556c7750375538635543447171707063565249446c426e71674d5a4d534573437730706c477a4e436755787969456353794b6b6a70716742716667674b565241436d4e51674a6b51706b324449454f474b59525955514b4e49787851717a71435053355263675551414871773745775546667934495551545446383355424a776f6c46536d6c5772494944375949416344676f7a7148713755426b613046564a5537304979306d6c526b6d315a6c41515839754b464549487072526c5042515a6f47635a4e2b53444b534f7170554970315651453431576665485459755058706233713538645753703331647463624853554748304f6d344a482f62492f39635636444d674c7a2f6f6f4833422f2b6e4c2f414e3056364156354947625469672f7356414256477565475341526452746547584251776451486877514d4133636c305552646b41417941796331436b4f6553434a43416b4e676b5450527a6b69314b6f4b7a795455425562565573794f6b75344b4142774b6f73324367716939484b42524e2b3542382f5a6c4a47764771616c6149494b45424273787852305a684e494f6752386d7752426f364456615368477168775141733955385a445368795a4c6e52415a714367624e4d4144334a514542354f67414d4559384370716676514238314d36706d64774d4568366351674a78434a6a463141374b56785142736c4a5677556c784369414767526753464258704b4a4844424141387149496c78524c455a7536422f3476594a533861714e385644494d337a514e686a564c493855315a486b6c64776764754b5372304b4e58354b6166326f4a3457504645564e4f395178514f43434f2f646969534647424f6e4643527179414f4d4551437967476d675a516b6f41787a7852664c676c61695931777a43435537776a4f71484c4e51596f43375949416e5046474a4f434f706b43346f757859354b4774554863636b42634f6c787839696a795247444d674746457a61687a515a3668435653674a4e4f6634714d314d536f7a56396d51374d45456169686b4647504644747951457761716b6e7953454544327a54505667674c4b4349426f6f48646c434b64586167615262424b394f3151557855494f4f5343453671596f714555634945356f4946474f53684b4571596f4863506d6f5366656c4e616f416b644b43474c767843664a676c496c2b436766506767684831424d316170596b7652455264424e57614f64436c77667451514633444442522f65687064456f4a4a446b55524944385564515a30414f4a51795264716c52424b4b476c445643536b7049476f4f52524a47654b43686943477951536a756b69654b596d58376c4770524243477169574a514264534d5145454e6355774c5643556330546a51494641527837416f637333554846414e417a79524744454a6b432b4b4355373042776a324b4e6d554251312b484a4243355046474d665a3144496c545656796745675255714d355a4f4163314b4768344945636f6761616845594546446b674661635578424e53677a42314e565061694363733149426a524d53395575497069674643614a76436c4744464e5869364347545966765131615433494563455343533641487146464b5a5a6f3663733148795151567078556b575542726d3649494f43426456484361687855494a4b683978514b4256796a695751693157434a514145786f69506d6a34557278774b426868795170694d314973525475526c5767776441684c684f4a4d4f5367692f356f43542b4c424159486967526d6d42554d6531424a466b474475365841756664676f2b72454947594f342f4a514771425a53474243416c2b39435164454751503449414949574341496b4b344a7942696c504a3045455878715551776f554147714b4b466d514538654b684557596642513838454a54596a4e4152554d5547794646415766696a7a6a5241534147514150314b5369433555495a4144776b6f5069697a7378514e546967687230736f65425177544e6d67574c353152496330795277425a5453785a41506e386c4a4d68494e57535069594241523271486b6c793570696176374d67464d366f346b766b6f4a565a4444453969426a69365646736130555047574b43636b486f6d4a616957694266627654686947474b424251414743434f3944696d4d6d484e515271376c41596f494a507964516d6a414b434c6d696862444835494979684c4b44486c2b536d54346a336f4470474a7a5379636c48563349796f784341466e4846513171704c414d6f374f674966337058546a69456a5068564154373141614f6f35697a3449343953415971616741777854503730706c557367674b626e38456f446749457456424e517a3730636a56517942484e4c52765a6b426176616d4a7a51416b45593836676f46646c3475514839594e68636d7661352f4a654b42312b666e2f5575495058323566307266386b553543577a2f414d56732f774145557a394b416749436851716346434777775141754d45664679434c46687853794f6f3077515369426a496a4369656445724f4b596f4a4667436f4e57564b70532b56416e4131486b45434238754e554b3444424f4b3041556d4f434248656d51526a4b6c45514b637967634d4f35414b4842416167586c676d792f464849506b674a4f59774b575571506b707a496f6952394a3979437366464f34644d4975456c44306c424e4978526344414d7070592b33596c6a5761426f53634e4549313971714568696c59653541306b6a6c324b6c4d632b43614e412f4642414e4e5642784b4d59794a6633494442676751786359315268385065697a48696a30353546416b36486b6e6b526c697049306f6b41663855467463386677535235344d6a5842422f646d676c464d6d51354173794a44316a374642444c536163506b6a45762b5342697770564752616e424170475252356f6b76484776742b434d576e67675349307963312f616d6a47694d6f3448426c4a5362456f434939545a726d656b78653366622f76537958546a51694a77584e39496f4c2f4b394c34494f675144326f6a676f446d5566346b454d6663686f624367785467754572484a424b64366c5078536d496c4c54372b7851774250543742424e4e65614e7a6b634554467355576f357750346f454a6c69426a6d6d69654f53694c616b416438736b4e564f436d7234706d644148314d4d6b4a644e516d4557526635494559555a45444d2b7752374549386b41777752795277724654536644336f42476d436741553045552b4366673376356f424b457363464730315443523755724e686d676a5a5a6f5349792f636e385055687a4341637769486957556e514241524c6f44696f5254327a526b4d6a6d686d324b4361534b706449797a5441734f42556c7778514b537749554e5735706d31644f616b7870787167676f675a5537416f3378555968794b6a3845414a5231645861457a7668696c6432346f49576a686d694b4f704351344b524c34596f4a6a687a554d43436f58504a6b784342487251492b4b716e7433706747446a4641714c453134685166776f47744f587851632b314966334b36662f6c67664a64427542717564456166565a41663972386356304d4179426f394a703730416d7877556170484641436334354a645142726d694741546e534f3941673446447146453537456a56487551476764526e4b4f6d687a54506736424742446f436866496f6d4c4a744a514b78794862324b50706f70454e564e6a6a6d67557352525453575a4d614a524544323976656763547a7a5336635345537841524262464173616669686f4749546d4f664a544a424141416c4969364d61654a416c7a5867676869436543476b5037643663564342346f49614f464b344846526c4d5541796646484a6b6f4a616d5350346f42526b536668676f426b794d666a6d674f6c676c656a2b35516765334e414236494a6a6a3845724b303958636c6c504a424e4c564875514a36614a73636b6136574342477070434d514d42524549786f67726e49795561695930554e616d6a6f4931657848505563464845735752624a42786658756d4e69637631315858307342546e334c6b2f354149797332546a2f5648347273364d41454150536c6f6d5a716355534b734d7535416f4c497348353855474f42716a587849504f373242316d59465079437979746b4f5358795a614a30466633704d2f7743464256434c386f7432704e544f7966542b6e424e71346e764151445671416b555a7768346d464f35414e674b35684d43667169675772434c557a544746614f56484934446b6d704a6e5a4149346e38654b673671766a383143584c6a4252677a6e4949484d504c497a2f556d315459756c6977636c337754566f6358514c7148315a6f784430622b56534e6149513841314f43364278476547506169476c3238553271494b534d51413446446b6759386b52326f41675a4f4644434d756b6a4641305338327856686979726a624177464d6b375030356f444531726c3855384a4f4432705231555457774930663855454579636b35494644675570783546466d4b423650715569786f614a596e533454674d36425248544a463270676f37477142725236494c414d41694470566261634b6f366a7171675979642b53595670524944773730326b4e3249434b4369685a71594a515755786b38685874514e694f315351366742696d7738535754797751526a456453792b6f41697954484d466c727142793463566c33706c4777546c5242667478717451303461566469583936703233394f415a316143783442415a31644a58424d37597153725230435537307a50693657665432344a70536356785146754c4a53354a426f56444a3671556b6578413342736c4a6c796c426646434a595964364279515572734d554446476e65676759346f6a394b4d7355496e45494664714a7851506c32705734714f30756f6f4445366b64506350696c777a795448426a6c6d676c48716c44454d6353674d4f6b756e6c675546656a4c4a4d47314d4d5078556b7a56544f376345416476436c656d4e4551337469684b4c477143503030434d2b436a66444651592b324b4175387543464d305246416b6a42415979316469575443676f693450567a53366e786f5545303845786f47554a4a5a30736958306749437a685159746769796a34386b42784854696b6a466b43372f424d2b534152384a65694a4f6d767751306d4e4641506b2b434268424b4135726a77347074525569487145456761746779353372387a396c50545871692f765853776c7a58503962482f4149552f356f2f4e4274426f4f555970756157564b6341416e6a7a716742704e35647957485355774a6c524d5378726e5241735142516f4774536a4c354945644c68417a2f4651762b614567575136655a514e494d4b4244466b54454d717a7777514f526d56434e4f4b676f454d3351416b762b53614e4351436c4443545a6c4f44706c376d5153584146536b616a39714c36766367654a514c486c67684c7064764355314d42516c414d4f53426d346f4f357170633076326f4d61522b61435331476e3070674e534567794d6345454e616b4b4e6d4d554d66436a493071674867505632756c464b342f6b6f536e6f7941456a454b50537039795167684e7031567a51517854563555566236446d6d63595a6c42434b4969675a514854696f4470434150587143596b346b49414d6a6737596c41724f4e4b49717944315a514469674c674854696c4564495935706a536a356f4d2f5967614166464c47726c51456b6f694c567a51463337696c35384f534970792b4b416b63754b4353484e6b5343614a4d3670773643654b6d624a534e646543614e486c6955314a567764416c5735494e7954532b434c3544426b43446e564a7557386d34522b6b2f4a58426a69714e372f7754616e53666b6735762b507865344b343235642f554636624874586d2f517133716638415a2f384169586f32667351427134315249616d53414853584369434164796d546c435836696a454f435467676e44336f766c677068676f5437304578436b69526a3349536944375555424c596f494a7669705559635543667a5266567a515457596f487077546768304d6355416e3165464636615570435a394c49413763796a69376f5942314454327167476e484e507751356e44384573693367514d6345427977517871633354554c616665674f41534638416d426375653551634851422b786e556c4b554b5a6f7978664641564e45456e6b366a496959474b4d546b67585157553150586767785445735541712b4349346f456f6d58747a515152425271614241636c4a6b344242444c536f3764714438555a48396941565559634d45547a5141714751513034495347414b6d62444a54476e4369426e5555516953676d5645547744756954376b414541315671704c39794c4f4e4f43677068676746614f704930516f4d45516330444e7853414f6e4e4378516c305a6f492f5437596f434e574b67794b6c577167686878436a4d514553487a517139633042424a71464b4a51374936517a4241542f4141706451544b4f485142334b576a707778787a514341695842444375534a4c6e3845445641632b3049526b7a674b442b4a466b41424a77554a6568554939794e4367423745656b5969694f547054784951485558776f67334252366f36617555434d79646d2f4a517539506567417831464243586f554477422f656a51483855636b457972334a633243674a65694e55436b63555150656d6438416a474f614259416e425179644877346f474c696943616d7778556557536d6b44765541414e4544474f46457256634b4d586f676548667a5146684a7837314a4d4d554e4c317a546b74686767504e563673644e46435551484c6f49537830674a5331526b6e6256556f5946424b5a4b594163557a6f4869794141564b4c4f774b55416e44334a6d616e42414b714839366b686e67555a423043796752676d4c484442543846415751445558356f386b49412b32534a443449466c536d534f6f4e2b3151676b552f4e42324c494a456e33496c676a6a676f414d30413854736f57354b476c537045766867676c51355578785252796f675370556c476c4d5558347153346f415934684f7a304953387770696667676b716f4833496b394e46496c414e4f497943676a6d464454456f6c386b426a527a6b6c66332f424e5436635544486a77514679316343694351574f61534e4f784f39554369644f4a537970564d7743674e485145746a3873304b4d36684d6948775579634f67554238557866474b67494f42527751514b59636b4a5666696f4b4943335570703471466a5654484242477a4b464d384644516e69706c56414d4d45784b43554230445249554a30696e7356424148424e454544354945464f616430414771675069674e5a557953697162416f593151466a6d6f504538636b42795572334947443936574a4d65354152795a4567346a7451414676436d78716734556e556842444c56337152476e44336f784c3470547177514d77536b59634557594e6a7952784c653145455a3855484b4a71785531594d676d6f3549474e48344a5a38713845306e505367694a6b37315a536a306452676747736471685a36353845424858464d373449464e55584765536d4e4d3051633549413265534a693948536d62446b6d44784c38716f49437038564f6b6f54477176464157727955716c714d65355370772f62564178693165436b63575544596f76773730436b5069675278554d6c48634947485545493070386c434a436f554a7951536a75687a79545968686b6b7a414342324876524c474c49484267686e7a51544443694a633078515131557851454853474b45314b34714d31536762566b6b4a344976564454376b44523973304a46772f464e6e2b4b4d68775156785453464b71525074327146354273526967416f4559757959444d70517943454f616674524c785a5156444b613951633549466a484a475a6f4a594b4f31516a51315151526a376356347955576875482f376b3137496c714c786b716a6361762b37634b443246715038415368702f54464e6a785362634e5a6744546f696e4c75454153694d553876696c6174616841756868334930373053484355312b4342692f2b6c536d534869515042414b2f53677a73782f424d5270704a51634f434359486d454a78594b5975634577716753517950596a4e776f484a4c31545549314241737347344943726f34486b6d5953514b33465134506d6f41315649766d67416c6b45324345474b6d6b46415973616773675a5037635573773155645a6b314b49492f7742434959386b47366e39696a6b676e694e42524b784655617456505568414e4c706454594248776e7353345934494335777a4f4b674448484a4d48647a67364568523045397531426845386b3566484d4a577a514373714b43716149786646426d6c306f4a413652584c424351426b346f6d6b7a3956666b705467775143763156434a6b65304b59594b416f4a434b4967785a4370376b41306355426f675245556445564b5977667262464173496a554d337a396e584f394772446363664f6c376c315959737556364b503664372f7743724a42306963426745592b4b696b512f79516b314145457267456f677852617164366e6d675751314273506d6879487345525139694d53485151546c4b6f515a4e484a386b41374d6755483668696e4f464b635542536d614a44314b424e494f614f544974536d4846544a30455045494f7959444d71654b70785145504c75537978354976474f5248743830592f77415078515351627351454f6c30544552484d49565a2f6567423667436a703979594267364654546a6b6742686c3349767051786f6d784c6f425241315230746c6968346871474b41736345754649706d2b7250334976713643674642375551304a67435575726a524159784f43424a61754b736958514435424167636c696f4d553242444b48466a6b675752664e476852617546455931714f4b437647564538654b6c585142365851526743454347706b6e4d5877556d4771475151594d6b71547a5447476b30645138546a2b43425a45753253664769483871426953674e47516d47544f6f526767356b5038412b4b7a482f77416a2f7743494c70456471356f662b366e68355834686454414f6742654e47554f48775159464e6c79514167436d4b586745785a363446466d3530514c477037464a444e526d4c736d642f636741693553776f4b70744c596c534e58495a30437468705249624e466c42476c6633494161345a4a73427a7953694c596f2f46417044714f50636a5839695942414741556a476d6f4b4f437045766967414b6a683077792b614476375a4942494357434f74516e344b453636676471434d32614f575a4b6b61396755494761414632726969487a77514c49306642424a567168496d4b594f36484e424647496f67594f6957374543567a775266696a4941684d6449465541424f5155444139364552376b4a554c436e4e4135344a5a7341357854732b4b563675674449786939417068564b634f4761426d46514644676870436a3853676d6b79504a4853324357704e45346c70706d6734332b51394669312f7744562f4e64633954543550375658482f7949366474435759754276697579636869675846464e704475366d474b424a4671464435594a394f487a5163506831506967383164455979624e5573533049303538467075794479616e79594c504b4178793549456e626b376e4e547137464944555449765155545372586945456869414b44356f2b584c7343556c786a5657784e486430436d6c42555a31555a69325836633059322f716f36454c5a6a4c587142354d7751526e4844676d6a4762505168522b70676c4d43433749487165764d6345582b6f66464e4c534d4d456b5a53316352386b424439785443476d4a4a71554e5242716e31645663776768495a71705744746b79625532434c426e4749514178417a56704d5239587556524e4f615a33787155426c2f445645557764304b6b636b38514b77795a415977634f6d7750534d4657492f535535616e7a4b417535354950536d43684446776a7177346f476b3242716d30454b74366b6850454f454547706b2b494a516a494f497061436d4b4377567848656f615552445a65775150564a6b457179676551306f5649303576564759624444346f424b54592b2f4a4e704161536b754456785559633845424b4f49356669687a344a41426967746b4f474b792b6f334239706335694937317044444869736e7163483238673644525944774541636b3462425637616c754a5a336a56576d7668514b4734644b5a69657045633845704e454265756b6f436e4d4b42385237424755744e546745456433354931712b6677527a626a676c41416f675049347152635579535144596f794f716e745242484a716f3958526a3075672f437661676b4b386c4249414b50562f63694b437143614d7739556f643262337070534f51702b43456131785077514853784a5a4d51364649672f4a513947534144466b4b36675561552b53506a44455949495a506a68386c43426d6330495150685563562f4642496c3857623471534471526c376356487764415a462f79516430543238306f597951522b70736b34783976624a4c5476436b656b75676d6d4d65614655487133737959636b4162365643484b6b5148524f474b417654752b616b69314f4b4250532b47534e4d4543525a734d4d50626d6e4a346f43676641494d47615063676734465436584b6e6837564747495148535a5a71635739796c474c71446945456a6b4d6c7a76585a4162516a6a4d4c706d54304b35482b515532546a2f7578722f704b44716761347850384143455841436b656b4138766956415161356f415179442b35506870664e494f676c734751455570776f675351577952786f6d46484a514a70434d634b6f514a784f434e54556a424248626d6f32724e423271696351436767554565436a55354b456b696941616f6a4251786641756d624e4473775146795252414f7070656b55433542514456526955784a39796a4d4b346c45687578416f2b534c414241463647714d577861714157775268564679704b5064565232514d7a59344a4b34354a6a79553467315149794969777056544a574444323971494b6944555a715965354d3271584a455179514b58347145446b704d6c516b4442415a633845594e69703452564b4a4d6759565a315043674b552b61456a71446f4153395970754f70484448424b596b76715152674b4b66676a496968474357524f4b427648326f4351314f555250676f2f306f4953366b71476c464d676f4b6d7141694a5a30636d346f6677714e6c456f427078302b7854486e5244545371456745424959737a6c4c714150556f4b2f68324b434f512f61675936576f714e772f6b3350354a4b34524c4e6d56587558386d6571705a42792f512f38416d482f306d2f38415746365453596873313533304d4533522f7744536c2f3731364d53617141437661693769714557714d6c4d415367416f4648474b4563655373647570424f7a42414e376c44476c4d454469675534706d436a3570545476514e574a63444654476d61444f6a54424158637066454854427531594e7836706274546d4931467361726879664b49356b342f6e6747364c714e6e376c354c622b75626d31575858482b4c38442b62727462623176623378706d664c6e776c68372f774132516451635548617167306e77396f356f7a6a7159594941436a707a51374564523730454d6d5a414a6e344a5849384f43417a694467674b317855777a5569374d5544424b493830415355537a4f674a476b5551306759344a764658424b446b554536693373364d6c41546d68694751474a6f36456a5844386b61477157764a415969744553654b47503471617665674c5963304e4f6144537a396e54426a686b676b716436426f6c4170564e685241644f7171576d4b4d516343794c4d506242424d61316f67786a584149786a6d674d454271795638536d50563142527149466f616f753244714e77554e554548557055344944424e41565a414e49436b67504561486d6a46776743674a412b4b424c2b4544536f7a59344b46386a69674c4e554b48776f34666d677849515277686e386c44422b7a3471454159494735594a4430706958716f443730456a49594d36413658507379456f70755343637768497546486f796a317069674247656159696e4a54566b67536665674e476451796f6f7a4231446878515447707851594e6d6e65695471646d514d41554e4e4f53416b4d31444b756e4a41434841795a4e55683351615144715335342f69674f6c306e685445306646514f616f49656e765531566f366a6d436b515467674a44425451555046696d593446414e4c6d71426c77514f466149733261435956396d544f5268696c4a594b536c6c6b67455778524448416f61674d4d4532564541424f616b69593969686f354761687155414852523034415a49614669694a3051456c6d6441384455493449436f72374d674f72546a676732434e51474f436b70566f6744416e7054426b4268374f6766624a415256516e7135386c47617053306a55346f4961344232524a434846386c47346f474f4b41774b4d436f5345414245716f6159367543495a54566b554249713455492b724630446a52544641524c76514856676f326147724a41596c67777854526b457442676867554442314a63636c44505248543856494230416a797a5531484a4d4b446d6c7542716a4e41495578523858666b6a716171415063674269415852494a554c76696a555939794361516737594b5a66696c4d5759494c486331795376715a45732f356f5362456c41613449346e6b6c686a795278504a424a66776f4f394641353444397141414e66596f496f66696949672b465441555145483651365564425564772f7741736b4341376f4872785338776a3271445667674c70616d767952496f7959796f3377514b4961516f59305a51484e516c69355154436a4946794b6f6b5a49616e51514564796d434a4e5855636c7548424243644e442b61494c6c545439614c55722b3141454e56564b4769683538454141474254484677554967436e775530734f53416b6a545446516b4944712f596a70796967554676624e4d536f31616f61334c494277346f7564535a71756b31506b6759667855556b386b4f776f314645426653516345756f59356f2b466b4a595651513466697070444b524a465544774343614d384f4349367145666d684e676d6b42394f4b4159347142384f4367446453504e4242494848416f476f514f5278542f4241703755515233424574454a414155427837554d536966623830514d3041425a4d6134594b636b732b61414470644d44586d677a5555414d634b6f4256327839765a314b696f52314e7852794a51427763554f395358484a3078414343436c4168496b31616f556b66656d30384541426646485336476e4a53546a77352f46424157356f5939337438455a564e55755231494a714f616a454769444d58784364774d454375706b334e4578344943476b383044544c554f4b6772794f534568546a38454a41436778514e7179505967524750596f4b496a4d6f4550444a50517141756f676a6a75516961557755352b78544d4a486b6751315869376c49376a2f3673766d46375673677648452f3834616e6d7951657774395549446b464448535739766b6c69786a487343496f616f49485a67677a466e51635a346f6e69676746564a41354b417452485269794264477248464d4b4a53572f4a456c36684173686b673764536331716f7a383046656e39763570796155524d633141477751515650444e434f4e455762444a497a557a514f344c3969414751716a47764c38557353446767585337684e6a5245526244735367616b4162536546564d46593346456867364373774a4e455766707a4355644f4b5059676a454630544976386b526b79614a4551616471415236307543614d6d446c4a717a43426e6356532f7741494e667a5453633979445672526b41595152306f6b5a78552b43425a4d4d46424938634f39517744714e717951474e614b42475131553471434a69656553414349775076555973697a476d43417161494665724973457a486b5170347149494a4531775a5273544653493658436d41772f4e41474c756a454e5439366b614855564a47726a46413052562f697556364947686638412f71795856746a71444c6d656a4856432b635036736b485362536f412b4f4b6a44565645644f534341505651736f51636c47656d61434d634770785335314645574f416f564d554559525248455555636774386b473979415272584e45786f7961684444386c4f4753425a416970797852354248413143444448424152314967746a6770476e5967415837454378366b5a52784b4a4848446b684d4943484a523975784749474f4b6e74376b437333616a55306b6942323051303568414f4b4a6242526e7170516c4242704e4647623278556b4e4a716a4934456f495749706b68546d6f57504e46754c7567426942544e5276334a6f3957474b5538636b4259594b41594f6a575353526646415361504956554d6d54436f44464358775141784a4b684e4b4b462f656a70315968424b4a52426b33596750467143426f6a497150334a644a72526b7846644f4b41456a765131386346486445594f67416a524d42795a543349793456376b43456e4a466a2b3545524750737944427539427a644248716b6966384173663841784c705541354c6e6b74366f43633748796b756a5241493846416550356f735456514141305144526b6850467969634d307a7652416d4f5365494f4358556d315a49462f424d445846534d614f6741493455345551414e6b69555153775a457456416c575a4e70705645454873536c70565154514357644477554e557a6c6e3979684e4545376330513270416d50765530312b53414563464737696d635a596f454142414b47696a50584a454f2f4a41645743434563714956416335706d4744494d336567624a3068714d4535516f614949314b4b455052453072785241795144737835705a44556164794968566b326d74454379426b4777514a6567545a30537964336967594134465436765a6c4764423271676755413977554f445a4b564557515267554b397959494d447a51515639716f4671384d30314d6b70795148537746663371416b5652314e524238383048482f414d6870597463664d4834727341445348344c6b2f774351683972456e39592f4664594367666767445651417a2b483755774645615a6b6f42494e524b7838543052464b68484c6e775165636e30736352702b436f75434772707750384c4b32544e55354b71625a4769424a534a6346434f715558793570744e485974787a53796c70624e3855466d6d6d6b346f5530386b544c7936456a396959506a484a41673933616e647831395179376663706f314638436a4535647943434e484f536b5a675942535571307743686c7071633865534150377a524e454131557a634e5641776674434176566b6643644b4d527164735547455a616a385541314f4341345452596451777a527434632f624a434d4336437973614e2b61414a37516c5a79377356625450464144483669694338586a6e3730473936672f5437653243423452594e6d67526c77556a5776775443474151474a31596851416d707167594550704c4978414c4d364176334f6e6a49436e374851594e564b5976575449485059704874376c414b4e6d5548597467677362562b6553583866594b51443967526432443151485656527a566e2f414151425a4531434269484c6c56747754594376465155714b494a6e544e4d42536e7751384e564b48386b4441616566504e592f56422f34386a374d745649344c4836732f77426d653334494e566b4451416368676d6567785064524c74784c545770566f366b4448426c58417454464530464544303549496d69614f5648656944675639716f4a7045554d4b38536d716b69586f506b6761505736676a716c7a53355037667654796b783068414e4f746e716c64466e6363766b6977514b513142524f48516b32614d6348514458545355785a7979567671785269784c594942466e72565136596f6b63556d71764a417772315a4a7365784b657244425175394d77676d724d597161444c4446526e46564246714d67424146456366436d41414344365452414e505579476e676f2f45706e464839765a30454e4d464268715a427630347143587a515156726932536d46455258784b4275386f434866384168536c6958474f614a682b6c54562b70415a444c6a676c596e755459414a574143436154324952446c7766775263752b534c694f4b4361636b61796f4d4467674a56444941306269364269376f45466e5541476145412f63676d6f6e484663762f49584730302f2f414442386c31664634736679584c3964364e7447517975494f705843583067664a515349726b6d5a365946675432705278505967476a7036716f434e41585570484230324243414574316363307870685654554d51696134596f4b784371734231446d6b6f43782f65694f495141687a375552647769577747614269776169414d4871364c6a4253674c6f364f474a514b4b796f4b496c754f4b4d65574b6d714f504641444b6c6345526779444d474b476c3668424e54483279524a50694b674a6b67345a6d514d5168707a55315051596f6b36653068414147786f69476c52314479396968675751514850454a7450314d675339426a6d684c4832716758476f544f5046334a744e456b7139794232344a53325a51456b343564515141413979456142696a706453686f6755486a514b434c636e544444356841466a5642434e42716a49676e42536844494356475148554e4a64416b4e56467763536f7a64694159594b5269796a6b5551776f326637554577516b4b6d4b6866755450484a414377544e6e69674943565643344c44412f42415153464353454337386b43415545427a474b626c4c3936446b4652796645676d436d416f464a4277785547715134494255644b7233556d737a504a58434b7a622b4c574c67474f6b6a32374548503841514746377474482f414e2b4b394e717069764e65683076746c35502f414d53394a4550686b67414c696c464456485534716c724641576644444e4b356b6d7a62414967745439364361714d6c46515878545a5679556b636b454c653543574b6a4842417563325a41544b725346564256484663503166316a512b33322f6948696b4d7555656645356475414c367236714c5938697765763670634f513538546c32346375392f5132304c5031585036732b7a36522b4b7032646a7a7238626630347a793652696a7574796431646e637950774751397a494d386759307174646a62516a48376e6455746e77527a6d6679346c486132493234432f7542306652444f5a2f495a6e75564f35334539784d7a755579694d4e4934447351645830373165344c34686450394f34576942684467334c393639474b6c736c344b495874646e664e327843356e4b4e547a7a2b4b4452476c4652623374756432566942653544474c466746633961414c682b6e55395476384159663841334242334267797a3239395a6e654e694574552f345930486163466733322f75627158326579724c36353842322f6a376c76324f78687372656946546a4b655a50356350596f4a61336c6d37636c6167586e423370774c664e617a30697553345070592f3837636473763841334c735862304c4d4e647736596a4e4262306e784943754f484a63776576624e394f7276306c6c75382b334733357a76625a3955613051584163464f33444656574c384e78447a4c5a654a644c65767732397333626c49426b466b376b625145706b442b5973452f4e65613963395573626d3347335a4f727131664d5a3971367530395332747a525a684c724d524854704f4c6469446543356f6a347a795753507147336a4f63444d50624858694737315244317661334a61645865596c6b48534a627246464f59397955463234487654456161756755537165534944646958565869795a2f63674e4a4630415836516f5930624e4541674e6955457a354a645a6c686769493534664245557851516c366f46685641504b6854415a6e324b43437052464d45683435684d59356c4141654e46496a6a6769546d6f41334e41475561714e4d46412b4b424177654a716d4c4564696a555244735367476c7955597377516b5161495942424348703755554166424552465a63464b6f494377553546516d4d582b4b35783959327570336b592b485870365851644855374e3855635378537749465934596f6b4d6553416b6c4b41364a366c4e4c564b434d2f75527067797a586431433163743235753978394a796f74494c423830416f436f7777645a3732376a627532374a42653434484a754b4e2f64513273645538486167636f4c35454e6d794d4a66414c6d66337261797a6d6131365a4c546133634c39326471414f713252716643766567302b48464170757843507751456a75554e617144465a7062794564794e7178316d4f72566c382b53445247726a4a484e766d6f6f534153674171616f766b6b753372646d4a6e4d694977722b614d685470785145386b496773354b50695548444d494937446b674a683670735547315678376b426f616f59595a66696f527071464d6355453036714842485652386c44456b6f79514268324a58716a5673555730696d4b41546a696a4947507478517a636f4173644b43476d4c6f2f4e486c7a5338434167494a666d6739665a305a63636c476f77515175616642514f4a565231705a56775065674e48344b59444e537642544f69434d6f37386b484966327169436345454d644a554a644836655341356469434f516a794b6a3549304b42564a4f6173364c4b4d3551414e6b6744523061634b6f784761434444696f4861696d6e4d494149414865714a5a45553973456f3549476c314a32344b736b464566464141426b6f314b7154424b684768415934386c43366b61344644704a5152784847694d756b63517052394b4244394964424f797167475a7855446f365541787a77527a516e456f786b4157514c6d6d77785147627159344949527777557a5a512b35524157306854784f3243683449466e77775146686b693155707750376b434d6b444174584a514d3641466149616e71676862414b55656968594a68673252515454587355724f7543686c6d33636c315a344d674d686d4d456f623845374f6f4f6d4b4254464e5242434d744b41766b70347168427945576f3641434262322b4b664371584641485347504641577254464542776c4570484248777864424e4941636f6d4b42446c4c6961494961706f6a496f6d4d556f50464135447063536f4154457152693954676759384647644a51557a5531503349444a6a67707a4b6b686e394b44415564756553426d7a2b61454a4e33715a3134494f336971675973657841485041493177795544476941537052305147785034494d54334a6a77514236664644557a6f6b6e4166476967624e41414136597331456c57376543597739783730454e526d3645532f4a526d5a474c5251536c51454b4645456e677055676f4a4a6e642b3542333731414878716f345a77674c426d51636c543570735543454d644a52594844424375436b5471716762545371424f574252664a4b2b4846424f5252675a4f4f394578314b446d674a4442696c45633048657551514569545241787a436b656f4945746a2f77436c4e6a6767674f53517654397963636b414269635545414d5552696c4652564848424172386b3562452b7753596845414f6764686d6c6e536d4b494146454d6355417151347169334433706d414c6a412f46434c697143466d586a5251376a2f36682b61396b3449717647584b2f634d2f2f4a4c3449505957522f53672b4c4974784357332f774155482f53456330454c49317955385a78772b534651586b4b49446958434f4b554679364c6e48503235494151464a42364243495a4547726c414a34736f6f4352696a3471684245736d5541624875525979514238516c6e6a54425069455844553730437969564e507755484a3054346b436b756155436a59675a714766616f4b55514273307755456548636868586767677251493654696b44794c796f7254306f41394643564e51495a445656424e4648514744484e4d334644484367514453693075354474554a5a4130587a2f59675a7150713975434944416c41724f5752314e683855446b416a6a3144424163634f79715750743249677357474b49476d7143476c564766484e4373714d6a4868394f584a414a44546d6f51594931345a4b4d2b474b42684668564277436c496242506852416f624171434434305231765446436f51514471584f39456742432b332f646d756e42347a726d7564364c4d6d46372f36303048524d6a37307559434f4a375577785a41744f394d446b41675453714f6e4549492f4e4a714c3154526f7072723149494f504243715a34696b6b4139586f676a6831414b75455a525975554a41673845444d3645756c514679674d507a5154735177716e476b596f782b534266446a67672b5361576d58656f575a6b4149424e454863394e53695131546878554c526f4d304545666b6f7864526d48616936434f3944386c45434b6f306b674a596c4a6e524d61555269666269676e5a697045766a525173706855346f4a38305a4671466b4349356f4561612f4241584b57525061453061554b47544e52424d4d6c443855514170686767534c7178325971456e45465167653541413063654b6e4544424667334e4c4a383845426a467356504166696f613155715061714176566b73774a4a6a456535534c4476514358465179474877524c7935496e6b674438454269325364786c37464c4a3855484e783956772f7743682f774445756b61726e48703955692b646a2f346c306d6f6755426c4b4254422b475363595678514352624641427856457863756c44355a49434a315a5444424173527955484641544a6c4363696f5844746a79556c676768714f61416a3769694452454f4b4944374d6b706a6d6e416f3644386b454c6f6158375578477248676c6a4c4241584f616a67382f77514c487464516a4d6f415a5552656a674b616176527330525159565151786573753941554e4d457a6f55795147564b68425142476941414f6f473731482b534855314d6b42664d6f6b4f677a715269514b49494b3571476752356f556c6a69676a4f32536b6e55306345706a53764241354c49436a71457145634541776f63556634516f796b5a555a424f534554776f6a7079556945417069464b594b4565355241514d2b43684a785552474655484a396644324c66447a496a35727151774438467a50585a4e746f6b2f7248347270774230524a785a41516f334641746965436d4654564244696f3258344974526c4e4d585165594a69666438306d6f635664494d4165616f49636e6c77514b6358526468576a3936486c2f56677961594d5a6173775067676d6e563149674d582f464b387552422b434f52474a4b414751667154516733554f43676c46326b4d45774a646b416a51486b6d6e7159536247714f76694168676449702b4c386b424445764a4453324f654834714e6f4a66413470674b526248383042784652376b596d4d6f312f4c3371457530654b58517872456e7651506a33596f4751474868357143476f74696f414f314135417843686339536745585547426b4b49474574654e556f3645774949664d5a714556633442414a4854544a4756774d2b6155426a57696278644a515742695168434f6e48454b4d66793549615a66366b44794f6155564c554c6f785076524854325930514e476c5a42523353686e35707842386355426473464166656f635553446b5541464d4b71534d5a6969425a4e417565595151794d6a30354b436f715751697a382f775461513153674770772b6144307754474e5739757843417032494c414843772b71482f78726c503072544b56526b737671585474544b5744565161625263526267453461586950354b75302b6b4d63596850553534494a673063676966696d70794356696645674d6958506167597453534946475137554242306b6e42544e73306f44634539416741416b5550464a776958696155544d476f67552f46516d6a6b4f6d43514858524138686c324b73342b7a497335526241657a4944715956784b44743463633143574c4842545343486a6a385544564a515a75616c63464b4f554262494969715848765150546c384544506e46534855645347614a476b49413257536245416f6545666d6b593555514f554a4d79494c315130366a3249412f75526b33464842434a316c4248342b3541777849544d6835623178446f43422b6c426b4a455a4a7751525630437454337147694935496164474b426f524e426b673961344961584e55535848546d675755744a6f695257745644457a706d6965412f6167562b48765231463149786374676d4a7a47434165334a63722f4143492f2b4b487a75512b525857595a596c636a2f49675274414b7472682b4951646d586a4a483850636b6331444a706c3545592f5042434c6971414351617675484643494d736355576175614c304a6b676a63666b6867557570384b4a7932597278514c6d4f314b354b6647696e537a594946474c6e73435a6b775076435238654b426d64434e516f6542514e634542474f4e454458424d5131564931384b43487478514d717156474b4542787751504a6b676254564563537a714d55453653565062325a457770676c4e5148785146744c6e4a53686453684849594a52313179514f55706a56303469592b484e4c7271385542666767484b452b6d6e464d5a636355454e584c6f434a6a5539364d655835666b6f346c31494445754166594a534837555479396e5177777951514f455449794b6d49666878554230696e78514c704977716d4c4565324b495a307078306e4c4e4142476a3845543167414f6d464b5a4a59346f426f4c56544f525549534a38493975616b547851454179706b635648616e464b5a5a6c517a716759386b7256367543554850676d6c67794168734b3054596c30497141616733424244476f48656b6d797369564151374e306f4166345643474c714d43536341557669774b426f3178575866412f6233503565356134304b79373576743538644b4448364933334c442f414c582f414d51586f636e474b3837364b473342662f74662f454636474a6367424148656d436e4e53574c6f2b4b714353416349746d55556f6b445242485a51496969416d526967684a797855595277524a45615a6f4f356f67782b71546c6232637a5a4a45674d6538502b4b3862686976653362506d323557352b47514d54337277703231775876492b70394c63304779314c3766625375665665506c782f6c4869506634554e74596a61674e7a75502b5036595a7a503452346c61393162745735436432747132504c733238356b65492f79766963317937742b57357561376e75794179414841494e6d2f6a39352f774356624c7841416c484f484c2b5663365845713278755a376535356b4d63786b5277504a58377662516e48376e6244702b75332b672f6a486e37414d51426465763949746b625333713856666a4972793169334b2f49573444716c54322b6139725a674c5549327868454350756f67656858433274767a4e397562627471684f4c35696f58654d73317864682f2f41424b2b2f412f2b34494b2f527273646e636c737234303348704c39584a2f2f41472f6d75395067634d56673956394f2b3768717430757848544c6a792f4c675576706e7150334d5462756e2b744164584e732f7a51592f5353427639772f38582f75576a314c5a6d2f64684f394f4d64764770424c456e325959724e734c6b624f2b33486d79455449796255654d7632716237792f376a4562716c6c756c384d442f38542f6a52427176626e303255504c6c4b476e732b564b4c4e2f6a35313237746f3955484878642f6b7568656c7372554e55686245522f4c38414b726d6567586f57355859584349796c4b496a45304f644f334a425a364f5a62612f64324d6a51485648323568696d39596c4c6333375778676354716b66626748507552395a74793274323176596653644d2b7a396f636535443059472f637537326631485448323542683730432b76324c646e6278387545596e574b67667779585573626533474d4a694d51574263524377663546423974482f414f6f4366644a624e767537467752747775524d7155315651636e62574c65353952752b6231434a6c4c547a4443767658553332787333624d6f364144704f6b674d517347772f2f41496c7541415861587a433764332f696c324771446d656758446332756b6e77536c455033483856315a6c67754e2f6a782f3841476b4d2f4d2f3841686975766767674d5a4b5366507352616e6367514d554243677051356f4d3145524c4c4a42496c6a5473554c41365369597455565373394d3045444f70544e535434643669426a696f3734714849354a614943666235714f7968714647434175486f675a48464769424250746b674169426961736e62494b7559794b63454771414b533975784d7a49566a556f49374768556448532b43515a75677276774632314b4d69305a41784a37614c6a544e3359324261753234337473507274347354527837446d753563747875413235566751306c7a443652505235486e79466e39476d72634e583745476135644e7a64324c46696372646d356144435044714f6649414f70486433746a4863327053387732744f69557365726a785a306431742f2f4f733237524d424732776e47724e726248385676322f706b49787552756b334a5866484930374f786b484a73626d39624e7537436479345a6d4975786e453657503665446674776f7455526639516e656c47374f324c636a4345596d6e5478347256742f5462747159486e794e7148686868334535684c63394c6c4b647956693662666d654d52414c3968795156334c32347433747261755336706168505434533375575064334a6d6432636231306d486838714245493870636531645750703041624a424c5758626d2f46555439496b646349585a787433435a53685445382b484c4d5a6f4b4a336a6576624b354f6b70435439724c754d324f437778394f45445a6b4a452b5271626e327264707851636a306f366275352f2b724c356c555774765063627664526a636c62384a364d5477727735666b756e7339714e72637553424a387957763570724f7a466d3964764f587536616469446c57743564756245546e65387557765472303670484f6e50386b646e75626b4e784f7871755367625a6b31377841386131563439486847774c455a6c345438794d327a344d72724870756d37397863756d637a45774c6765775163783738746a48655376543141394979625531655066324d707674366247377437694965666b753362712b4158522f746352745074645a30766a6e34745743732f747746364e2f567130773876547843444c703358324a7532706d35656d78314f37413467446c372b435859534d72326d4e365a703157372f69376a2b4861744d50536f32376372497554454364554e4e44413976446c2b4e5562587038345868754c3977334a78476d50534941413868695547623136312f342b707941443463693578505a6b6a754a3344667437434e3251476a584f35395a46614f32544c6f622f414767336c73324357427a345a724a64394e6c643875586d6b5872622f774259415948694f796d4b424e68657532397864326c32527543476d555a6e466a2b3964646a47717862545a6a62536c636e49334c6b6a317a4e4d4d4f78624a594d55414a427752695141355569586f456f356f447a4b445634706f6c304f5766424130577270397561455157374641574c4a514e4a64415448504a5271756c47504c3856624b4b42486f794e4554576f53397143614d6e356f4f435577353052624c4641414f61574f476c4f656157677267676274514d685267684c6e77514a4a2b5342715a714f4d687a554a7a514c5a44424163334b44765652386946427a7751516a495a34493647776f6830355a4b63785142424e524b464a567854415055594a4246716f474d64546356444f51554979376c4d63554531644c71436e5a38455a4170532b42514d78795247464853676539423838442b5341474e55523155716942775245766967585455756a4d734b492b4b6f795541376b4368706b636c4347774f4b593971476d76733641676f4175675a486e676f4b39504241644b4942643074536a694751546d6d5a41636b76346f476d6131516f533342417668324b5650554542314d587752505469705169694c616b43565066785474546b6c492b6e33493648775152744a36734554792b435567685456787751474e616b495a6e6878556b41614b65484e42496a6838554364534d6c4b753551534d57366b5367474663796d4e5545464d556b6f6a4a513152376345454f544b44676a325543474655455a475661634572736a7166464161697158354a7557534259567a5145754d6346426852492f55516d4143415678524e54537146557a38716f41417859493430436b6b4e446e6c37666d674a6b3145444c676a676d61726a42417268713449454d4b4b53424f4b683856454569436350636a496332644253494a514d336545736739636c4155424575674c7364507554444769574a3150457159634545772f596a77537969695366624a414e544968786b6a72444a5749787a5147614e4f35492f484a4f78385566594949364235657a6f694c6c4c7a43426a795339694a47434a6b4251596f445367536957536c55736b445078514a494e4551464e524a71674a4761676149346c456830754271674c315378346f7844424e4534676f46694a43574b67356f67315177514d496c4b6355655459494f37684174582b614d614b525461586b794253514752754944695644785146366f446e696d4e76504e4356636b41307547772f4a4f4d456a61555a4e48776f4a4765703043464f724a4e456e41305a417550546a7a5445636679515a78585067686b324b434f514d5578504241686c45454966704e4834727830346a5475436372737677587359754f31654c7578364c34502f666b67396e61693049502b67664a4e70634a5978365277594b55464d6b423548425679366134706d70302f4a4577397941426b4e49555941754549314e4544633351685448424575537752434345555a497a6d69596c6a38305a4468524258306b6341455444756f6e49774a772f4a4b43546e33494933444e4569722b7a494d35626a2b4b6e4a4154466b73644a385345597469706967676a785266676e7856517256413175754b6a766c5253456572536331414746554159696968424977524d555a34766d67446c2b48354b4561616a4a4f37317a532f384175514175527152384f4b4d547755314e346b414744384573772f596d4554684b696d4e4d6b446165395679344a67616f6b36735543554a2f424f45326b4e564967676e6b50656f4644466a5446474972673643484e2f62356f47677169577855484c4241446977556670517a3776656e4445365751534c34653952394e546a6b67584264523949632f735151436e4a48686b705755745042427452514e434a4a4434726d6568687264343862302f775855746c354c6c6569644e7538347776532f42423077496c77706f42716a70616f51784f43417a47525373787752455337596f7871676a3652314b536646523547736b636e514b3746314365435a2f686d6c706933614544464173656141596c4f484f50755145344d6b74315454416a67674b6e5669674d534d31414b4d674d46415350795144547044665678523031314b557851786f45456b6854486d6f586f4f474b64674b494271624b694e6632357053546d6d6f396345424566676854454b4d3549344b47675147644d457548755478504641664a41416452347166556a41686b72317167624130516d4d386b63337943442b35413032344a596e4645594d674b436943595970694d384f616765534567676a736f5158344b4b52464f6143427968494f6d7848464467676a6b6c6c447955776f4d464841785151515a416764794d55596c366f42326f67555542417146474a4341304b545569414643546e6767356b6d2f757363502b4876384145757143346463736a2f3841656f2f2b6a2f384145756f4741664a4242676c49645054464349617142514844425156524255474c6d6943636c4d6b65314c70346f474934494f364461696d4f4b414d454e5459424f65724446416a3349466e7948616e7877535278634a6965354147344b4371674f436c4851485457745642513831464246734545495541634d437051666767423349494148722b6146473745326d7271524449414d4170326f74704b6748484641644b426f6f4f616759397943596f554a4a54426768795152314150656f78434a4c4946495a4d514d556f2f556d62676757736b54476e42514e676f416355412f68436a735852616a68526b414a4a424b4948344b534e615a6f6157444241654b48696f455453755345616c7867674a4c4b42467a6b6744306f4f56362f46746e2f7269756e6742324c6e2b76445674572f6943364550434f4c494841644a4855436e647355486441486673533667334a7345343655576a6967383052704f6b393361556b344d64516f2f42504f6f6473457549596f4b675a5979554e4d6b534177356f364d424c45356f4a474f6b462b4c7075674f334c39716849616e75514d773145414d6845506a337075716d6b50524354546f526c56484e3850324946494f574f614c44784a7572504434707053414854675545694863356a336f5236386171616a6e582b4a45436c4133443971414e546c7754474949425a413951716663693441424e636b424853615564514d48443153735a644b746a34717345414d634333376b5747727455414a3745515249554c46414745616976743763564350596f41455578716f4f6f674641596e364d30574f4b4a494a352b3546744e587155416a67357a5249455845366e694549423648424d7a63657a6b674270586a375654446d346a384549317a495561523745466772574f53563271454a6669695a3845426c48686e696944536e77533162696a474c486b67496978706c696d422f54676c69587752454b4568414255566f3663785a4c4144416f4d775157593869675944424b446b6a7131427a6b674a6a3767735871736d3230774d3175594d7350712f2f77427351503142427074566a4538672f63726536694675514e633264534a51515364774d56446a524755534d556f4f6d714352642f62354934314b4c55356f4173435545794b597845616f4d472b4b4e4a733955416a576d43444d4b552b534d7065354a5630466c586f70487071614953397553493667676d7233494159714161514641305a4e3730416a476c45777934706d4342416c6d676e4a4c474c5664307a3170564677675677394648426f69784a7167574861675639535969716d6f505446544e796749417a5331714b7079416741536758743936614e4f395274524a4b445a444a41547743484d56544e7144684b4b49434437383070315a4a7143755349475951494974557163386b307351796a74306b4d3643416a4a4b4f6d72496b5a6f69767456416f494955656c55764a4f376f49426e6d6f51424a6d777852384e564a59643643614644584675436b5777795277706c3730456a69345a636e2f496f6e3753416a56376764645578584c3965636261324d7863487951646135315335715a75537a4b54784a553766696772456d784e55385976346c476667334651444d346f454e42514d455165465752352f696f3546426767456350627355426341596f677563616c51633043317a77354a68484a434f5a346f616d4e654b426e6f69476a49454b5442385153566b636b44786d4b685268494f50676b69452b4854336f49436763616c5145425131706b674c66762f464a47575a5479425542624e415144424c4961687a52424e516a714279514c67315649766c5248566d4d666b70474c2b4a4154524c71624869685442504b6b754b41476f64777071495a51784f4f446355306333514c6c525153306f446b48436d425a424b78785336666372557252485967455934706a673261485445484641687a31555154533965396b57314651785441644a434165423042515652664970412b4b4167384f434e4872686d6f4147344b5230797751534f624b4d366b70316f6a5850676756333973305938545641677632716142697943527258487577527a6f6941776169674e4b354945475239366331376b496774315a6f4e31636b42303856412f785138526f70386b424261717a656f617674356e4e6c6f59454b6a664f4c467876306d714446364c3162696759477a2f38414546364370586e76524a4e756449662f4149662f41496776515930514874524c516f4d45596c6e314950376b43343449762b78534a415a3143574861676c536f354e454279554e616f494b463354617358776451744b726f4f2f53674f756c65395a4c3231684b364e7a45447a5967746b4f5434725548464369673862763765356a6338336377494a2f32393254636c6a6a68714339374a70396e41344c6d376e305462332f41504c6c786a683776795a423549484d7262366444637a756965316953325a384e636a376646656732336f7469783154486d53483673503971364944675570376b474c5a2b6d3274744d336d416d6670643477347437636c7572776f6777777154386b4e4e474f4b4269637331526232747533634e3645577554704b546d7271352b43597834596f414255716a374f7a4b384c776a2f4146423956522b7a38316f444f6c692f63554765397372462b516e64674a5334344657626a625739774e4636496d4267725364556c474f4b444659394b326d336c716861393779623375724c757732357565664b324e6365725668686d74555863594955625355484239593339752f5a386d7849584a5844706273723832585932396762613147314836526a784f6678716b736254623763363451694a6357577242414a7746794f6d5942457351566b74656d37573349546842706a4e7974623055504c504e42526232747533636c6574782f71543855766974456d30744b6f50347141766768493553717943717874376532686f7352307878372b2f7356756e4a474c4d3477555152367457696a6f503846443730426a6d51674b714d33464630454162735373374645344d4561597851423949355a6f476d436b6931436a716f794345366933344a694177635970657845312f46417567676170736d4e5541794f42716745773963305438454e556a376c4862756f676a61533667634948695553415046676742544d42696f4f71755342365545314e52456a4e52714b616d514b5871364d5335593449732b4b6e4d4946664c4a45654630577a537470716149444b56653049355651424c75674167614a4f4b677139554b65324b4a3446414739796c6351574b4c76583571464241564a5964714838794473616f43417a49714758734648376b414e51357852774c444e5156714549636b4171426d55524b6c564d4f334654534167684266755249456134714167646f537936714f6767445552356e39364c4e514b6469426348644d5354676c6f7a48424858376b445239753143514b6849785577484a4243475548366b444c4d5a71434b416736716f4d79494c767853736352564153774e50594b646d61687055357145766747514e6c7751417052494f756754784771694147706f6951366d54556f6f7a73676a50696870443848524646445371414f796d707858464d663473554e4e645342635a4a774573787a51457173674a72544c6b6f42526b644c73436c7136414f5854454671565146416d6951364143544a6a554d5573533166687a5278726a384545634b4f68694b6f766b4d55457755456e503470436d636a732b4b434f32574367374b497872334936754e554131497a7179513855616c41324953306c6a5252736c44797848464154537146435644567969454548555367775a50715353703149434b4b5a6469566e4359466b45304d585a4b344f464564564648354946787a6274546e4276696c6f5379626b6744594d6f474347465552687a5154512b4b4771574b5a696345424a36684153374d5543464a63734368434e55444d35354b474f4b49494a515a42414447707851353979684e5879546469414d324657522b614474326f312f4e4141496749426e5a416a713542534b416e6c6d6770694855642f624e4178354a63613855334a4232785151417878544369427755692b434244524e324b45736163457a7455494165476145424939716d614c4130434266434b5970795468684a4b484e57716f65495a42476375555358436d485755474b4136584459714278795a4478594976523830414265686f69532b507651614a4251314f475146696163304762454b4376616d5a7a52414243714461697850656d72795541303951514434424538436b78544e7171454569584b45516352376c4759714d51784b426a7755476e4a4c50705230306441705a6e4359734b716143784b494f41474b4343765648464876535a7151393642735843434c6e496436494c52356f41532b4b455973666246454f395032494175534542475939676c4154524a376c4831594946356f394f61464b464d412f6951514d6149462b35476864306d52644131586f694d3355626a58386b6d5074564138554245464e476f51366b436971594567306f6751386531526a4847714150563048644d394b4d6871616f434234394163344a48644e7a514343594b4d4f367166554d306744684242675853484e36707a7a4b507a4e45433164655245522f354d53634c6c786576414950746776486e716a75502f7153516574747a6b62634a5950474b735a6b6c722f6a67663442386b592f715147414c705361736a6a6d794d71397141596330515269686a6770674b6673514b6669455150314b4535716533733641694f65444b762b4c334b776456636b4354676745446b636b4238564730747a525a2f3249494b46514679585250424e67512f42416d6c7176565178415459526553676246416e68354a6d436b6761677147496b65776f4245484652694d4d6c487a64484444383041414f6148444e4d37347152447646424e4a78415a6b51386978557744756c42446f43515332444b41665367636d5177514f4b764c7351492b6b4d6c3745592f46424d447a554c4448755530386b776949766b67447869613143674765434c30646b7062565642485963676d4d58715063684c704e553272676757525a31497a664570744a5a445367476b3438457a563449536a56545545457269334a527755665a6b54556176617141615976337153494a5567475259413473676c7646637a30656f33482f31702f67756c616f512f61756236493574333563623079673654454b534665515259765652744e4d30456a485656516a525641564e456454346f42696634555948676f5936735566454851426e4849496e6d70565232514b51443730535337384551485277354641754e66324b5263507752775530766767415a51554c496b566441696c55455967756d6b6868324b6158787851486b6749766a2b614a51374d4545694e4f4350745651673471535a416f54455a4b41414232555a716f416357527778434447434a624e4248344b414d6f45785956396967575471534439696a4f6f526b676c54686b70676f39464d5345423745422b7847574b6a674949787a5374546b6d314371445a4949474650336f6b74544e4447764246744e55455a5141476851307355535751426e376c4d67654359526646416836444241645761415061672b525571674f4f43427056456b357145615548506e54314f4a343269503841314f75684555624a633467793955694d685a31662b706c302b6f423041464d45476479455158525a6b456345734d554771484b6c4557775a41434b315569654b49346c5358536742624251522b4b6a45594b4e376b4549457144465254566d6345494d6138554570773976326f366d4155663471594942467a69694b3449383043446745424d6453414f574a55465643676d4367346f756f445371414f324b6771575249357155464543756345354355675a5a6f6f495558555a534d576f6744386356492f46536b56434543346f6f6d544b44695545623349462f7a527a555a4244584251463057436d7038454151624c4a485332436e5967486169376f4f416d42514156464d46475259596f456345454344466d436770686769533253446e657453454e71352f554675684a34784c4c6e6635433532636848485646644b4f4142785a41314d314855302f556f4134596f41686f70795a466942564e6b79447a63535a427a372b53726c486e7a56784a30394c64366f797179412b5743656e484e49574d58692f5438305979727a7952456d4e516663675556776f3673306778705655696376707a7856704d6731614946304e56314b4f357754434c38314766414d794266483144424f4a3667342b4e4d457859467667704f416b48444e2b434374712b7a4a70386671397170326a6241306f4754467967416b33627a566b59355052567764364231592b6a477034494670584e4f4748636f2b5953786e6e786f67676b54792b43665357706879396e55426278592b394349616f5141594e6d45386144712b5367456b5034706d714258474b5a74584e4e674d614a5231307743426e5966676a4638543845424b6a6330596e70514d65716e78554a50636c656d6f706f5637454566426b5445424c3151434d51364167487849686e664253574645437a494730764b696d6c7934514259645753503841456345424d696733696451773055662b4a3030537777784b41436c55315151675a4232775142615065676d70714c4836794732704765714b336152716667734871386d32784c66564876716733573848474e464a454d35627553322f44543979624149424b526430326e676f3437305837614941497658504a434e4377775452496c68524c324949413450444a43677a716d6777712f743763456878716773704c44464c444873553073704c6f6f674a48357076456c59697552537470707a5150706a78396970716f683873307261716e446d6764674f784c676d413976626b70535645416a30476c4b4974523351465256544b6941792f68556a31564b455378644756636b4569484e464a436e79526f41366c483745444e6c77536b694f5077514d58374547496f454230317169333149564b595330396d4b435377726970514a4d4b393663463855454543427151664f57436849666b6965504c4241724f6f4f61424f6f75636b7a6875314143636c41374f6a496d4a7170394a5151795268455a555172696346414a5a2f6b676d6246485458696f4871496971457550376b416345303975434d71495057744577496b4b596f4961726e6576307332526c35674f7064466d504e637a313050627443582f63434471505569574f53446b732b525454442b325341446c696755783078514972715441635650435541717a664e43516b39436e7843574166483239734541643873464b6c466a3249477070336f445534424d31485563747753503841717851466d71555378375543324b68416c554e69674d5a49734d3147415a4b4d475147766339654b625139667053594b4d315a494942777169574c3151596b4d685846413163734575576c4d485a736c4b416f49373969446e486a525239415a52394f424341774464714f6b356d71426f68444679676151626d45496c384557664242763149464f71506877566844564743577236516e417256416f352b7a6f683674676c5a714951447367594e675553316331424a736353614a435778514e4768344b595a304345774268345170414476344943656141346f3661766a6e5241734b4941373936414a6a327079496e6b6a6f4a43424f614271584b62533261496b33626b674c4d6c484e4749794b6d6c424455634579582b4a51303853426e44616b756d7445534b66487555303563653541756e3950354b4535436e4476527142525168304367393556472b4c574c677a4957673049624e5a74394c2f78376a2f6f6b67352f6f7332766738625877634c306c58354c7a766f63483341502f414d72385176526b5559346f4a6d796d70386355496e54544a523377515453794a6a54676f5470415142424b4169575a7751724c444e546d416f4d4545774e55754a523865426176656d6653577951427a4651524a55716170513577515745747955675145707151666d6f42564153485179706768494155525a6b42623235705a4d6171446d35545347587a514c6957415a5132794b706751533555656e6167484a435045496e485568326f435935424e6c584e444a67464d4d4541596a71556b68722b735946547856492f4e41774c79524e4d557036456355454e4558695167375971474e58514368655743684c31596675555a796f7a3151456f4d32645647666c5842453951706b675563546d695847434d55447a51513148556f794f474b4f4342474c64714e4378524a34594b746a34696773684a363571616e37796c4a31426768496b34384544484876526b4b305131484651346f4a6a5842474f72565442534f4b676b52772f42414e495577504e54566b79504a416f785a4575464f614f5343544346514755656a6b49754147515142366f6d4e4541477267684b577167393643455549437a3337736f584c55493145355345757a5353726239795671426e416179412b6b5a2f4f71787a7677334e367a354e644570536e2f434e4a46583763454631336657624d394535674564724238484e514f3868506633467577336d6c6e656d4a50594256636a63335a796866687145613350365562645a415a6b382b4f446356667548686668644e773237666c43496b49763150554677514870576d43446f4864326841586451304767352f7435596f51336c6d634a33496e6f6834715642374766344c6e6d33617432524d5475454736626e6d69493653614f517a6154324e56417a6c7562473441416e30394e324d644f766c7a493546423035336f784d597950564f6b63337a396e5666397a3238635a696b744d71476864716c715634724c397a6233463277625a314e4b54306f48676365664a426e3256384e6e656674636f4f73414e537837472f50633259584a674355686c67727249364939675850394e32555a3761325a6d51702f334a675a38783845476a62377839734c393867447166494d4a45632b437468764c56794d726b5a55747671794948593272736f755a616d647673375467442b704a35546a713064557572386968497a6c39785056356a32476a505470667859636531423034622b78636d49526c5534556f652f416c61422b39633239412b547441502b35622f415061567473583433444a766f4f6d543851676d356d62646937646a575549796b4f3042477875684957346d6b3578314d33592f7a4377377a3143486c58624d775933576c47454b6b7a63554970562b57436b794e704f784b395143456f536c6b43644c50376979445a50633272597547556d4674685070772f653477557337367a6475614947767a37437a487564637264487a4c47386d42535269335070697432366a2f77435474364d78756433516754622b6f572f4c61396336396377375964524163674d4f396c7275377133594945383868583442797563496b374336777a753976694b736c64685933506e58756d4d376352476551494c6b6439436736467563626f38794a31524f6179536e667658703272426a434d414e636a4855356c56674b5a592f4a5430775575334761467963705131597357725869584b726a646a7337397a7a656d4e7a544b4d73697759682b35424c3237753272623341497968636a45795a6f7969534b68386d397857757a764c5636527432354179344d5166694b6a6d466a76334465674a36656e7a62656c383469517132516642573341667649482f3563772f7551572f6532504d3876554e54383266672b44386e5771585356777455507376744150363761664c7a315034757a36745337486e786c4f567647634e4f722f55677a58627432642f794c526a426f366a4b5564524c306f484744565077567475354f496c397930644a38654554486a6a546e565a7433637347656e64426f687446326f7878446a416a747171664f6c3976646c482b7061456835666d524a36537a766e4942365934494e396a6557722f52626c714937525469485a787a437268366c74356d4c54385a614a7238326f65527173746d354b3775725a387a7a6569353143476b66545148503846555154365749742b6a2f774432416f4f726633566d784943354a69636d63393741303571763732774c5975475930796c7042794a722b52726771547559626264334a587a70684f4e76797a324f3437655379572b72623247422f7743642b35356f4e78395132354261574830365a412b356e2b43613775424b454c6b4a7447636f365a5244367634652f7743484a494944373663682f774275466638415566324f735942386d416a674e31772f6a4b4466503147786231526c4f6f6f61467832306f4b343463385671746b474f73595a64697732502f77426f706a4d2f2b324b73324a493274702f30514877515532373234334f7537616c41434d7052454a416b6c71564c686e5041594c5239784746754d3733515333546d35797069566875334e71547176505a76687830366849384347595366734b532f357a37652f664a744e47516e49526653533249494944356e49384548556a75376479486d776b4445654b57444e6b6548656c7362717a643659536338475974787150697565626354616e65684f5634476475552b6c7451697a7341414454356356624f3962334735747a73485549435a6e4c4a694741356c363979446f2f77726e5762323676774e324a746b50496154453130796248566d334262376477586f527551724568335850326d397457625a746e555a36726e53496b6b76496d6c45476d3376726479774c382b6c2f652f4268556e4658573739712f41334c637144785a4d5278664476584c3154326471794a74624d6a4f5570796a7145436174326c3266745652686376327433474a4d3548543161644a6c30384f66785164537a767246347447546b4455656b696e4555714f784e486432394d4f716c7874484e362b337578574c626d336575327a3578754747706f364968714d5157694737437150496e634537582f5945764b35794d746366634248336f4f76472f624a6e48554162662f4a774431484c6d6b733771337543317558557a746757346838527a57436475563761584c7247586d54387a546d59435159663751725937694f3633466f3763367844564b63394f41496253357a4a7935494e4d7439743433504a4d7167746851486754672f61727952434d6a4b6b525663654e32467661334e70502f6d506d445133564b556953447a47465630764c6c35506c7978303658376b4759584e7a63744463514d5762564733704c6b667a50695279556c765262334146776d4d44616a4c5152314f5a4849566473556d31333975787478616c2f7741304936664b7a4a485a6b654f437474695233596c4d4e4c795936733636692f7851616f376d7962666e786b504c2f5637594957743361766c6f487141665358422b49425848455a4333646d41644d4e305a794847446a4c50462b35624e636478754c643279645549526e726e32737766346f4f69612b35556275354b7a434d3473356e626a2f756b486233717758526574696471756f50484c73584f75373247356a61684166314e6475556f56654c536376515543446f6562435679567348716932726b3951717a7637476d4e777a476966685048344c4d4c384e767537707564506d4732595a36674973575a38386c6e3273446274374d4e5547542b365344703766643272774f6958684c534742487641504e4c59336c6937505247646373513435456870647a7168684f2f75424b4f6f6558414e48452b4a7746527462344e793362684c7a59674e3151363762527a4f48384f443879673351334e754d4a334a7a654d5a463553706757624159596330316e6332372f2f4142797737515233466975595159326f7a49366265356c4f512f683147764e7363463062562b7a7572706c61476f69502f4a6c5836587a34386b4175587a5a7657784a764b7564494f65767434456373564c5736317a75536f4c4e767031484f513858634d4f315466513162653579695a523467696f627641576137743232455951695a41614a796a6e4b6f4d76784a51613976753747354f6d427142715a6d4c6361674f4f595466655735577a655067693779344e512f4a5a5a586f62752f5a6c5a367447755570444141686d4e4d53637553785376526a744c323372356f4e7a6f5975786b5344324e6d67366c33653262557a626d65736a557a456b6a73474f47537473586264324f753264555a5a73736c754c6237566d4c4d662f63556d79755174526e72707176334978356b6e386767763374326471305a323238555939512f5649443855504e76326274754630786b4c684d586a46704173542b6f302f596b395647726239654477667331425a783549763235624d48587161666962526d3730374d3351644562713135637232726f6a714569324459305a31495834584a474d584a594534696b6e5a633363577065656476702f7033355275533464506948653066657235586f626664546c6436524f454e4278636a553437655344544c66575245546e50704d744c3456442f6b5562473774332f38416a4f6f6774494d596b5032726d325948525944482f6d75596976314b2b394756792f656a444879514232395761445248314862547043645364497871634b55593154334e356173534d5a7a71334f6735746833726c7a334e713561323971423634334c516c466a306b636548347254486357397063766564517a6c716a69645564496f4f4e614d6773766277576238424b665162636947443669345a737974454e375a6c447a524c7066533963634b30634874574b332f3978624f6732783555756e426e4d614b6d377130376768793132334f6779476b6c42315a58496959742f5558493773565673626b723176586371586e3768492f494b6a376d3375647a626e62366f614c6e553150706f6d394e4f6d30582f56632f3978515857626b72747935436546755559303578422f464e6433467262676559576567476675446e344c465a3356757a6676695a596d6354676139495665356b392b4f34457a62747968706a6345584436716a7142307638575164474f34736d7a3532736557667139766c787069705a3346752f2f77415a636a78555a7530477635726c584c49466d4e79314f556f2b64357370694f4754694c4d7a31773568614c46793341334e7962787561593955744e41413759426a38545642304c336d61443554613636587739766b736339385a57626372592f713354706a435830792b7038326a5662736663734732323852766273674b615979354179385464756d714336357537466d586c334a645178706832746833712f7a6f527552675a566c7130383237467a6f6269337470336f6267316e4d796a5478524c4d4278344d7172594f316a745a337143455a786c492f535a414d2f755a4230626d367432395a6d61573231304e487277374d4649627933636e35634a6454633249484135397a726c62676937446554692b6d666c365378714743336271426c75747479387a2f414e71433635763976614a684f5942474f6264374d2f4c464e72486e52694a59784a4547797058426375642b466e61333976636358663676533153354c48737771743171753674482f7743564c35785158486432764b462f562f547031567a4c595934705a372f62325a53684f585648474c456d74634150334c6b693449374837663841367364496c4671687076376d7a58533238523931654c59693138696731526e47374553685548777956566d2f4b354b344a4d644d3947484946552b6d44527459413547582f764b537a7559626564364e30733978786a6870484c6b6731796e455868445551385364445579723363465750557474497861654f4271423250672f4c46556d51756269334b4e5235567a2f414e775758793957777351503672582f414c6b48537437713375486a43546b59696f5078616e4d55576b55726b734e787676495a663035312f7742555670743352667469635043617837454766623773477762317773786b4877464a4544327a566c72655772676c4b4d76434f7168424863514375644363724730425941655a4a35536934674e6375707558637047526e647547552f4d6577644d394c444534636531427574372b78634d5247626d5741597365396d3763386c5a75376e6b575a3352394d537977334e58327531306a43566a3848576e314d532b32752f796c42586676626a613278667547334b4162554245784c45742b6f6836345a712f6362717a7470615a6c71506d574845733744745352324e72554a544d356b66726e4b513979793769394c7a376b4249577a303657743670547038526c7935494e31376557624c473549415447714a34696d44646f626a6b717257352f72336a4b58394b4d626371305a77536565537962574e646d577149584f366751334f3375584c39387763694974534d4d726a4f576635664642316256324e79496e427a47516350536e665655626e6358497a685a673054634d757164574565416f353730316e633237326e532f554a534135446a775a4a764a5771513346743752636d574969526737436d4f4f534237486e69527433476c51474d774746614d51394432555a533376624e36344c634a416b7678597469787750635669695a584465746261526c614e76706c4a7a706d6141526b6352787251717662694637796f53765431514d5435576741784d636a307678442f414251644735763746715a74334a4d6665412f45674d4f386f3374395a735430546b7862553153613967354c6b3772637a6e4463516653657365564733314544366965664841444e6262592f3873482f414f52482f77427851627256323366694c74737645352b31566e4737456274364e7767573751684c563269767953656d78503841562f38417133666e386c6c7562474f36334e2f55346b426130537942593162417367316d2f4b566733726b764b4262537763694a495a38616e736f36747662797a5a6c70755361555143326d5270786f432f345a72467572383732316e435961374132784b4f586a6a55636a69466f74763933646c7868622f774469514e2f6362476f415448557a5a687a685841646871744f683178644c656c7a705871797a453132424f453553746a474f4934616b46462b37634e3062617959784f6a555a5344357377446a6856505a7554684366335444523958307948484e6d7a5647366c747a4951335547697a7875463865446a776e444f71787a46793559756761726c6b53675961716d5142426b4b31493463656144703264335a33422f7053717a7358464f4e6352334b543331694d39426d4e514f6e6b2f62672f6573687657397a754c52736e554c656f796c77426a68326e677334757768744a37536464782f556a7061736a496c7063786758516473394d5857625a333562697a43354f686b4161594b32454443413159694c46632f59624b45724675524d77645036354438666b67753265386a6574323962435677456a6d3335554b762b376847456a717062654d2b526a6a37426379794a57396a5a764164566f366a785976452f50344b533270746d3359492f774359524e772f78514f71582b344834494f6c6533316a6279486d53596d756c6e4c6353414b6470527562757843496e4b516166684f494f66742b617862693659626956737a4672706a706c6f31546d3730485a7778564f7a6a70743758554d4c6c332f77435033494f6e74397862766a2b6b58302b4b684242374378435735654933454c51776c47557564472f4e56322f2f414c75374930364c662f784b726562614f36334e71463048546f7559467630384546316d2f4c63536c4d5573674e45357949786c32444c6a69694e3561747767626c787a4d644a494c797772516338465674357a7376744c754d59644573707779772b6f5945643670327736396d53502b6e4c2f414e7355476b2b7062614d524c7a4b646878474c687164363278494d524b444548687a57486257683532344a48696c487647676674523950754346697a626b54716c4435494e674941596a6e3349394d4d4d557458354977725531356f4a47533859486a4863634e647865795a38717278357062764534655a4e42363762754c567638416b697248496f6b73512f707748384d5534636a5367427851497a34496a6d6c5a366841547a55424977785271796841476142524834714370716e4448484a49526d674a5078514172714b6e5a56467338755343536166746768516a344b486b366c496b494730674a644f534f70364f672b6141476e4646336c516f765573674139654341596d745643534f394d654b556a365a494a334a685142755342424b4d445867674142485970705a53715975786242416d6c305454456f786931564e4e45414d58726767615654696e745644534f4342524176306c51467a5549364e4c35443570686967574a6371526c52796d3076524135526f77514d593053694c6c6b4f626f6756716750785544474c686c43434b42544a414e5468776a6947524149536b765642416a70304874524c4930484641484c555563776f4648346535444e6867674a6970694d4547347068306f434255664e63663050706a75502f716c64674141397135667041494734622f767a393145485378527a53784c31344a6e795142794f546f45356a464e44425236666967446851737a38564354484248547871676a594d6f7a6331476f6834753141774752554654544645556f6751676c4d56437046674755504e4143546767587a7754613377516676514d4f6c436869794a6430477a5151383143474c6f673656432b5341434b6a49536a775271676a565a6d525965355269614242754f444947384e546d6c496445682b35526e4e632f774145454d575262696c6b6570456b4242484271695378596f43754f4368673643533468545542676f314b714d67676475667a552b6c517677522b434145434b494f65616a45316b68474c73674943444f48716d41474f6157584c69676d426f5754516f4b705151657851506a696768397171567a5545532f79524c6167674c356f44677069555046336f476f6c50556f3148434f626f4f644b5465707848477a2f3853365657646379592f77443370446e5a6c2f376c3038536745656b2f4a417834706767586f67494143564d6146796741635367684f614a4439696e5a6767485151394f4345426d6d393641484242506b55496a456c4d6355475151784a6f706d6d77534f787167596b6c54532b4b674e65536a49437967434141495a516e336f4a45497368696f7a49497a497143696d4341346f53476f494574326f733643456345434f434c4e5642424253694c4b45556f6f674143686f6a676f4f42514168516a4a466b6336494677716a326f70546767422b434f5442453155514c46466b54676f676a714f7751356f736767517170525446427a6658412b31626a4b4b364e73394949344c44363257326b3278702f7743356272644952423449487a553755714c4d67484a476e4369425449504f5842566a6971704671555a5879634178795756692f45424157494646424f54307735386b354831426b6d6f6971426e6a49746d6a4c54467a6b70494454553936562b72534b446a2b4b416967456e71564431653261635244567a51306759596f456744452f503841636a57545965354f32673171684749774c6f41444b66534d47516b4b4d4f584e4f326f63472f42434d41616345424a4a495a6d5a4f5658497535772f464e4c436d48596762544e7a6e6b6b59397949314e306676546759664641594e34554f6b467343796849772b4b5964574b42544a7152474b44454d55644c4e776234706951376355454a65677855314555516f6a486931454162792b39474a346539545332434d6130422f59676764716f7767314a555269787067704b54426a55684131544a476f6f63416b45695378415a4e704a61517167684e4b4647494c7637304446734d56424146796744563549746b6f4f48424e627153674c456e714e464269674a44464b4d536330466d4251314b43527a5a53504538454445736142632f31674757306c495a47507564626d707034724c3671783238685671563755476d325036664a4d4d615a4a625a476e6e2b78474c41734b73674a705832436a6b4b4531344f6a34616f434a5046686b6b6935716d4c65496f5939534153474a5a366f462b35422b43646d505a67674f676854546d686c78554c4847767751515974694578352b78516351367967445279676d716f524a4a714d4f43424c426c42485767476972496848537957594c49446b776f7046773555414c386b30554246436c59346f5a592b7852726a6b4542505042435856345530692f747853677357393641746c334b424b7a2b48334b4269656677514e34574171684150544a4d4b386b48616d41514c7170524d4f6a7055456b5978617249463076696747524d697a6c536d417851466b73734d616f6e446878524e6149417855614f534a714f4b496b7a686b414d574c6f794f5a775279664a4c3568356f493272425176693656394a4842504f4979514b795073555a674d774b6c76686b67456a6b39567966585a4e62736e2b4e646775447158493965694e4e69474c3345485a75654d79504a44535a567a526b584a344b7432384b42795770697946506169452b73342b35445142516f447134343865436b513559666d6850356e772f74526b4167494c46796a716c454a636877356f7367584b71465a4769614c646e616f2f366355456a55754d3148626d616f56726b69513061314b4148416c36707149616e556950715037554144524c6f7656514f326f497351676b7553574e532f6677546378674572315a41596b48484245563755673755774c6841512b5351456c5049674b534765483755414d637355503455644c43694d517870334943497345754874676d77533830456944346a5149393945644f65574b516b437142334250464b4b47714652696f4a48444e425045614b4d4531634d464451647143526b4d464e4a4a6356554d54496f7878306f415973417855714d50334b47495061704566464176684c71416e424d496b70584553676253443476667855306363454979694b5a4a75335042416b704e7a4b65414d73506568587554667734494645655077524230304b4d2b4753676a5677674236615a49526c77775271786453505453487851416759344b66494a67477872386b7266703755454148743372483669644f30757469522b53324147654f474b7a37364a6e5a755279306f4d586f78626447502f79527a7a433737386367765038416f704833492f38416f6a2f334c3044766a77514e4c4e306f49775542775130385851516e5458357159696968314f794d584b41665379505a376532616871784f507677524f4449494a42394971794d5a4175516c4a624b76344b476e557941794e5855624d56516c776431424a6b426f614a6164334a505349644136664561494a706467556e37307a4d69537a6842474271517056314b64764251412b35414d4f584a5269464a597363564b34494a703936445552786f6949674566424168415a5050426b4355544c366767534557666a3255566b6a6b6c6c46384f4344634d45426a777a526c51756f2f484a514e4c463045454b3179517049305547635563653141734f614c5030715078785578633542415862484e523355646b6f6f6763424b7a4b4f355259447551413969455878465535696761426b414345695a466b54676f4469674e5736735574477051716330306578416a6a4e50492f464c4b75434d6a5641414b756a795244756761566f3643444651536470437052446c314d45414d386968564e4c4a36715242785151635572456e464551516b357743412f4a436878526d476a58464b4277514f4333596f4449676c6c586676437a4356777530664670344b75377572647533357276476844566438473755476e583845704e4e576675556831426c44537550354944456b6452515042537453634644303151456c366f646d507556566d39353053514453556f2b347372544950323979436156433571794c4b69377534575a4344475677314559786374782f6633494c716e354b527147437954336b44623178633951746d4f42424a4171446869744d61686e514d4a45305352684733446f44427a4c744a7166696d5a7363556e6d474d394f6e705a395754384546684c6c4c704b636b6b4138666573383931624638575365765471626c2b6143344f7a4b4d6941356444356330424c356f2b2f73564a75694e794e6e3670676e334e2b617462395343416c324e564b75374b4842515949493755346f61416661694d4b56664656692b4463386f59674352374353337951576c7a676c68626a475a6c45566b515a6474422b4371462b4d684f4e6f613942616e4867357032712b714163326f6d64717059736c4c34494850616c63315455345a4b717a656a654477714b6a67354342627471356348394f34594e6a3078507a3975534f32327732384241456c733563633335713347705263384d45436736715a4a736d527a533455515452314f4f4b496d47644b546e6d6d464d41674a6b6b44797877525a6b584f41514135533549456177596e5032795362653947344e55445373613869522b4373596e76514c6f6841614930416f42324a38656c422b4b6b716f4270303179434f736a6c6d7162742b4733746d354d46677a353573456c7666577033424169555a5338506d516c462f65673144344b4561667951484a543855456c557437465145796f70496b5352384f4b4258616f2f6369656f4b713366684d53492b6b796a497970574f4b6178656875493634344877382b66746b6763436a6f6d716d53676a56414a6752726b684d5275524d44675178524853375971476f374541686259615251424d615657652f757264715675334d365a584b5237665968575837384c4675567937534d63666b6765414a375551486348425532376f6e6f6e41616f53443673474873565a6d676c4d73557778636c4a714d70735230732b726e77545444494152576d4361423936476d714f434156657566484651446771507572636248334250513272556e68644c686f6c704455387148735a425a78446f45354f6e4e542b434464577042414f72322b6153555979596b504b4270794f4879544375436f6875726479313534706271394f4650774b432b52616f524862677166504c7830784a6a49654930303976616a65767773322f4d6e67477735302b5a514a437731325636636a4d6e706a6b4978785966696578614770677048327167513155456c68586d70385167373056642f637773654c3676444749366a7941474b436f624f5570524e79365a7868495369474136686735474c4c575a454b697a7559585359316a4b4f4d5a68693252722b43754841494154715a314e514e54696932534941514b487a4b424a3564716648444a5633626f74526c636c34514358354241373652326f4f556c692f432f434e79315742773975314c5933647263584c6c7530584e73745032376b4634476d6d535364754e34614a566965504c3979623845514b6f4152567a676f2f63564848636978505367474a554165754359644a5073454f78414e4272454b63693671383257695568417543776a536f343969754d6345475463625735664a6a4b365261506967414862672b4e5530647470766563532f54706a484b4939754b306b5a684a636e477a45334a34414755715a42416531455342374641597948496f48427633494931636b6578515552314d67425934496b30514468414853794354476f6144337151694c544441426d5a4a63757732304e5630304e4f4c6b3465394a44637775793876726a4c4670525973673061564a6471717362676269324c6b656b48566a796f72577a783755456a3764716e4e6d4b574433486a4b4c4148333838554a4854586b676345596f426f696c456e6d366f43356247762b576c43316662464f61384f78424b6436674a495530736a6c6a676754795969666d4e314561587a59653258344a347553784b72757a6a5a684b5a3849446c4735636a5969626b714349314873514f6c6c67674a612b6f59596f6830426f796b5879556c304f5931624c697168646c307645735257766850413975464546776963636c496838564836514d30493845417777547978624d72462f634c496554534d502b34496b78705448687a773571337a7835736251446d596c4c562f4b337a644265326e424b4969456a494373694a53376144384564516175536b357868485753305144584a41583030514a4f437951395174793036684d4352614d70524969546c2b783264617a513830454a664652776953684531593845424553334a434f46556354576e42563337734c4673334a2b4749726d67596e5361496d564f31566563504f3871757252356a354d3766676962317545345776716e7130393155466b6e713662732f5971726c34524d5947686e3078706a6d6e5a3649415158366c496a336f6b31376c424836676767636d69674237314a63446b6846774b3449475a4c356364516e395461583559736d41344a496d6c4d55445a567232634564546f61613055455379415664654f6d4f6a63442b4f582f414c677659796a5846654e6e422f7561762f556c387767396e44774350494b566967434a5269655365484469675679426b416c642b6f596356597a3470583155514857434f784b78634875526a6779577566765145304b4d6934556b5469456645675855394d6b7a4a63457a53514b44696a686a6d68556c4e6d676a5a3936574f4b6c4a646e4641653967676870676954395551706a567632706a444242412f656b6c587454455a7061477141476844706a696d6a4871624a513438304361714d6632706d7943424965754b50695148516537336f554a5a4555557959494a794f654357555754416a4e4531514b2f7469673965536b736457536778514d2f44464c777032714d4d30326b4f4155437467324951414431524658356f41423649482f6d51727755445a3449672b574f3142496b794c484241796641496a7141346f306a346b4149624653576d6a71617453687067675a6e716c30635256474d69564d6149464a524277544d6c49656d5151544f4a584f394961513341482f666d756c626f56792f5279773342662f72792f424231474761485048354a74496a326f4d515743416475436b547877544574523671536471494157524d7130525a7170634f53415956545944676f5a4d70704341384751726968474c59597141565148486b67614a6d49516f636146414d36496c427a6d7245436d7446416f526a5242713077514e584e4c4b6d4b6a71444369426852516c42677a7151614b416951485967334a5438454d45446d69587768526e3667692b5251546d67346c376346434f48463063616f4141324b4a446f70516377674c456e6b6f345065693455625677514a456b3054434c4b44346f53414a72674542446d716a30513075475561756e4a414935424654425175574b42734646476171526b442b4c735130317853797754756755414f794e6535426d78527951516f4770545a7567426d5548506b502f336b4879732f2f457567654743775470366c486e5a502f7558515a384d454161714e53685630782f42414d7561674b4474336f397143616e556f616f4f365a6b43364d3065534e445242337167476455796e616f79434d677a344b436c564f614344354938314251714f674252775548465352514c474b5a6c4158554c494931564544524842414779524b4b464167694278716d78515a41475255464555417755555543434b5949344b4949554f315251555152526b554355454c4b4251714242436f2b616949644170417a544f454d306553446e6574663841326b6e346a35725a5972626a4c6b466d3957614f316d5348772b61315777504c69427743427745564b6969675142536a4e6b69794b447a7336486c677151432b6a426c6f4a426b527743714d674b454f6770454b39574b6846426849736e7a4d31506755436b786856454e49366f35714f78344a395a6e347a326841735157424f4367746168576f52446a464577634d3451417a6951644848755a48584638574b625534314a64414f49657142695577596a7053654767356f314c6d4b415362696d6b534b4f6f59766c2b595262416e4241537a63667a5369494f434e755131616b514b754167682b4b6b355a4877706a467a3149466d5a4241427a49624e51483348337068534b58443971416437424e47504839364463555434673641744a715a49484c696963776a4545352b7851527a414f557872564c7130355552385270376b454846466e5976556f544e4f3271424c4d374948464d5565594e554a534178774655305433684142704a7038554a644b556a546d7244774342515361596853544f2b434c4e68676d4c356841486f6c4277484a4d6146735649796f364348554d566a39554839437638507a577a5553512b53782b713173616563666d67315768706a706d78494e45385846656263456f36686a2b7749686f356c417a4e695851634f334654476e79515936616f4470447355534852354a64654c49414270715530576b4561686a37664a4b447179514141745651792b6b7166556e69784b42635a4e49496d496c31594a59366f5045356f45453434634545444e5842506957436861496f634b4b4d4764424b4768782f4a537148495a4b4555596f44504675534144686b327649495049637a77374545777954434953743953687735592b3243436173754f434d596759643641447550334b564b43637770477443704561734554415279514d4b4771527739436f78426f614b436e4e41346b335563416b70782f4a5161734b49674f356955455a354f57526c48394f42526d52775149475a5142737869694270706d7068524d2f4446414d4f5367664641787a55442b315542476d5251422b6b56436c45543249454f4e6633493653445651554842456153636b42516d474254786a70356c4a4d66464244673266344c6c2b72792f2b334a78383065374e64622b624a6376317167322f2f774254336f4f724f4c47585044344a424c33594a35306b59684a7951514269794c7343436f3852584c676d4934494b324442476f43677133734557456856417038546c41795031594b53596c384564494d6d795146793346516b597155425541624a4243487770326f747178554452594b53365456424e66414b53693941686f414c787146444b754449444c4253474655474c315261764e415448554f422f4a44517871674b486877554a346f46624a504a685435344b534141532f69674962484a4d51664547496441637356444853676d6b6d565542484e484c7434714456476d4b4363442b355341792b4b5a73776f5167426b414f4b6d54782f636f4d4f5470645449494846536e65716a422b314a377355446b4139755354477541644756616f4467675a7961496d58484438556d76686b6d7239574846417044564f4349413470696539492f443243426e3076785149696a584a4b337651444e4d4f6f7438457048444a526b4249617077436b514d536f5134725648716c5549432b5178356f6b4e6b6c4f4b6149657077514357484e544770376b61413055496355514a463354535a2f6367426c78557056385544552b50775762664169784d79796956664b4b6f3378666233482f5367352f6f66567541332f4147522f376c36466d354c6765696a2f414d694c436e6b662f4775384b6a547a78514530554469754b4d692f7555356f4641314770716d4a4f426f6a324a43487879346f413734707a785562676c4d367555446158716355472f616f376f734347514b425771654d6170514e4e51674b486b676777714649305431774e556b63507751466e6970677a565a544a78676d37716f466436532f63675843594433494d653542474c676a42516a444e48385545416a775445456347536b3545747a5264386531424f615956536d62654a452b334a414d51774b4a48464b3375644d325939794359486756416163564177797751795153474c594a584761734a536e6b4d55457951384935354a672f762b534c306f785a41674878544e71596f312f4e51467643675579656e464b584e536e4e63464e4c424159683070555078554c6a4a424252522b56464f59516479474343536273525971534a7a7a52596e76514b4253715a30435131436f535545417a35715a454251794d6134494d35726767496931554d45547a71686e6d67496b485a516a48694559306446676553414e55416471673468534961684b68423776616941482b4a512f425131636346476169416b413831794c46672b654c452f7744697366314963395868662b5871627558576b2f636c466d4d5a6d64656f526a376e62356f4d454c663355377370546e44544d3234365a4e70306756356b6b7656316e6a636e757a746455705238794e7a58704c5070302b3379572b657874335a475479477278365a45416a6d506772667437596c43514447324349354143583741673535767932384e314733492f77424c546f3146794e5565623979754e673761375a416e4f546d516c716b5a50304776733377576d5733682f564c50356f3668786f7a6535632b7a747079755770786a636a47326362736e62705a6f67452b38384751494c5a2b3376586f7a6c47554a5870513079594169527946447a64317072754c304c63695977387358656b36586c49385256682b4b316661323557355757365a3674582b7246567a32734a61574d684b41614d6f79615466496a7451545a546d446374546b5a43334c5447575a42414e654c63556d31727537356c6a2f4145363874503575744e69784862773051484d6e456c38584a7a5358746e627653467835526d4b616f79597469335073515a505554613058504b5039557a7461754c366f74385032716166746431626843556a47354734385a534d71786174634d384b4c58396e6245504b59732b726d5a43726b6d70542b534a7a467954366f6174504471516371334b63746f64385a79463170585046304269656c734f5846367258616e4b65384d584c473147576e4c78464f665437556a31507066566f3148532b4f48626c6879543339724737726e48707553683565726b5850774a51614e564b72672f64513079334f6d5a75655a35672f7079627934305a3262774f583472746d324a572f4a7151326c2b57434d59434d664c62704130747939766367773351622b384673546c6f4e6f7961456d4236673248626c58756f71497a6e62735474786b61582f41435979786b496c737a6d484b364e766132374d684f414f6f5238735a394f4b6e326c76524f3259394e773635647450794344474c4174627533474d706b47467a785331596165395a72527557746c4c6461355375645552716b344839527144422b5a374d4630376578685a6b4a764f55674731536b3559706f6253454c586b4e2f54497a35342f6967773262643458596a54644675514d626e6d5442796f5231456776775649334e7751674e566475444b392f466f6c70723267534f6553366533326b625263536e4a714456496e3237367034375733457a6c542b70342b6553436a5a6e7a5a58627050535a36592f36614f4f30757375363838333767323750355565337848446e32726f324c556246754e71324f6b5548376355734c4d52634e302b4a74502b6b4f79444a636c626a734a53323530784544326738383366486d6d4e767a74306263355345664c67644d5a4749786c77396a6d727a74625a38774d5775654f4c30376533324b6679597775655a395269493930582f4e42796d7566617933486d543879325a6165724b456d596a435474576937526c475446552f62322f4b6c5a726f6c713166366970473052636e634d7145526a4750427678636e755157433547557a414773577032726b323579687434573479302b5a656c62314445417a6b6163366479364e2f5a5175793139555a73786c43544f4f6168326c6f576859307444687a3476692f4e426c692b3376655445794d4c6c75637571524a426932424e61724f49537432624f346a4f5a6d5461457455714553594d52673165443936364672615167386e4d706b616455354f57346469655730746d45625448544453522f7077515a664c4f37763349796e494333706a48524978443658656d4f4f617a324c7337746e625770456758646575516b306a7063732f50354b2f64576d754763626477796b4271387151694a63706451392b4c495132666c37534671635a546e62722f544c5342726855594f677275695672376d455a79496a61456f367045732b72417254656c49666268385a6a7636442b53723265314a6e646e4f4d6f776e474d57755365525a33664673634f433051324675325974714f6a77695569644e47627362326f6778694d727364784f55356a52637561576d517a414841666a546c69756c744a2b5a5a684f574a684539354470596261414534675575475570643454323759745146755068684543764a426d394d48394673427275663841754b79584a547658376b4247354b4e735245664b6e6f7844756178666c694672683666622b6d5677423954526e49427a3370726d796a636e723153684c4179684a6e4850326442676e506354386d31664539556f7a6c4f4e75516a4974514f584861574b322b6e78754153743341576a4c6f38786964504d676e4e2f7854584e6c4335474e5a4177384d6f794f6f642b62383044737151616367424d546b5a534a4a39715534494539592f2b316e707865485a343434716d393534755770376b776c415445577430366a5147704c675067343731763356694f34746d334d5550637172667039714d784d6d55794f71506d536c49413857507345476546763732643263707a6a6f6d62634e4d74496977466562753958564e71553934624775556f366f584e6567733544634673766247316475456b79477678694d694e5861334a586a6232347967514730526c47505a3741494d463570334a514276543078413032697769546d5471446e3373745779334275324c5535316b59683030746c626c634e7a71656669694a45435861453971794c4d497768345234554846486d744d7a72747866756559336962566e2f447861724c6f3779354452454363756f394974654b5941646877484d5a5a725461747874616845556c497a504d7978564d746a616c415734366f364830796a4a6a46385735636b4850382b344c4f35674e6352626a475542634c794467357561557056616a624e6d395a30796d6457714d39556e66706644415647544c534e6a61613547763952684d36716c756665724a323454496b586546592f4a42793550647358397a4b63784b506d6142475245596944745441766d34585332343132595a6e53485063467a743559314735433162755050684943424a474a44355a30713261327773474d685055375778623038387a386b475831437a39786573327a6e47367834466f742b615335642b3868474c654745726c776678526549482b37562f7458546c61695a787553465943576e2f41464b7133747255504d6c476e6d6e71376345474b784b54374d4f774e732b484e6f527856456456765a2f64655a507a4936745056536b7a5273434f33737758596a74725938756e2f474e4d506c2b4351624b324c423230682f5450346c3855476539634d4e314d753859324e576c3839525762626e635468617651467a584c535a6d5534364447574c5231557836614172585a684f3575705854457867494332487a496b533435647173687362646d54784d394172474f73365165782f68687951632b567939666c65306937726a4f556257695145527034687737346c78795856747a6b5941334b5430395134484d6479716e7359546e4b6279692f696a4352416c37636c666f5961635167342b7a316d47334e39764a626f344365526e2b47547266636d527534786568747a4c506d44484c327856763274735766743236473031344b513230586a49753859364163326f6735554c633462617a66467965755268467a496b485557774e4d317367445a33666c69556a626e4179307a6c7136675257723475727a745965564779483052306b6636616a354a2f4a47727a4234394a694f2f38416367767837463536775a4331614f342f2b323154385036745a597a2f414958376e78586273326a5a7478684b70694d536c74376533433135456638416a72347634716e356f4b64784b51334e67417445693771725367487956667168684c61476343344a6730682f50466172577a74773045502f4145333039394f39562f3232302f3161416451743675683861447479775143325364316469394e4e756e4d6d537850634e697a706b5154664d5842717a7a58527637534636586d64555a345047544f4f42372b3944374f33474d59514649543879504b5666685530515557496d31753557515a6144626a50716c715936694d54324b33633242646e41776b49585961744c314247427052586552447a504f776b32682b57507a51763249586748786a345a524c456434342b35426d4636586d536865674933764c6b59334931426a33687856714b7333536470596d35636d7a584d757a2b39624c4730685a6c72724f345132755a314675436f68734c635969505670695159784d697749725432776f6771685a4f347533784f6332456f365247636f743043744f66376c4c643235754c653274536b514c6b5a536d51576b64492f484e6c75685a693870512b73764c334d73392f6277686168474d5a79455042355a616352787152324e384543624d4733667657784b526a4557394f6f6b732b703856663668467474654f50525038413970574f7873726b68666e3151387a7934783879547a706954777067756c646a47354532702b4751593936446d57626e32634448395549334c556634693054482f637837306c6a617945397a74784a70614c51316774316b5372336d71364d746e62506c302f34794e422b48747a5465574c55705867435a7a5a32784f6c384d6b47477a755a62693561494a4769426e64624458345750654a5938466e737a76336f5276776a634e306e552b714f6768366a547177626b37726f6243784b324a33434e4d376b7058434b554751507a373030646a62747942695a434c3674476f3658374f334c4242534c66335537706c4f556445764c69495330745148565448484e316d686575626b6255796b596d666d436567732b6b483573394f3562372b7974335a6134796c4352365a615a4550322b3365724474725a6c436e2f452b6873714e386b484d7533726d3047356a416b693249536a714a6b515a4f4d2f6579756c594f31765752433563494a6c71315331616a705048384b66426250743445334a434c2b59476d4f4c5a6646632b47336c353175635958424733716b39795772365745596a55654f4e4d45435862747762666345534c69387759314131517079576e792f4f33563245355330434e76706a4e7131372f627352327530387933646a65697775584463303574526e3530577946754d6273727545706750325264426e394f6e493242724f7154796a714f4a416b52373649372b635a625334594e49614a314859785674713143774e4166457934314e565250593270456e7130794f7155424936543268426d767a6d626c7577424d7738765649573561536341484c696735464c356c2b466f57626d7147713849526b53387841317872584541384630647a745958394d69346c487779675749373073747247647679356170524a636d55693739722b356b4765514f32752b574a53305474796b307047526951315256367637316d466f7832396d3947557a4f527461745569784571454e6838487a64313072573074783145504b52476b7a6c4a354e773544735477323976524331394d4e4f6e6a3059494d67746e633769364a796b4932394d59786a49785a347554544876566e705677334e72435569354966562f715657377374654d3432376b70534654626e70457361537144546a774b665a375335616a5a45704e35635a616f6a4f5576792b6143626f41626a62384e6376666f4c664661626873655a447a504831655837712f4247395a686469597a446a334e32486a324a4e7474595770617571556d6256636c7150594d67673545596d3373667549796b4c6b54497836756b645a6f3142584e3856746e624e7a656c35533069454a615979617279397561306a61327a5a2b32416532587a346c2f6d6e685a6a356875743147496a33436f2b61446d6733726c7263434575727a69504578627063416e413845396d4d4c6b4c746b6d354870633272684f6f4e6d4a4f6146736979317932566f3235526278793877314c362b4939796c726178734755336c4f354961586e4a79334242676a45326468626c462b72796e366e78496673374d465a6274666362692f4755353651596159786b514b7735664a6134624b33627465523147494c735a5956646879444b7947336a626e4b394546353664582b6d69446b6e6333627533323054714a7548713046704853446753324f5a785737597875695534794578627035666d5331486e5545307778546e5932764a6a5a727068574448716a3338554a624c566230516e4c714d586c4b524a5946365670682b6141656f6748613350355a4c4e767a757a74376d754e7654704c3963696638413272666373433945327031456e6966623971653541584c63726368307946654a4344444f3539746374585a6c72636f4745713042414d67653969506371495275546a5a684b556839784b64795a63757a616845634d7347774b31622f41472f3345493249774a695448564c41434950764d71664846614c3969463641684f6a6455577049455a676842686332626c3678716c4b486c655a46792b6e454d2b4f58636a43374e396f585056626b5a567836593438565a637365525a7543304a584c6c7a70314576496b68716b6e41664467726247303057374f767832343666654144386b484d6a726a73767574647a7a5271303952616b38477750652f795855337049323933526a35637533416f2f5a3276494f33622b6e58506958783753744134356f4d6c694d527449346558355939326c594c4671567a37574a4a48394b58686f5736632f787857372b3257706e534e586c342b574a485237767777354c5162414d6f7a49366f6767637454494d75774a6a637532435359776b4e4f7375576c45466e4e654b76334d49584c633458533173687048745358396c47657252535677784d356679384f344d74456f43594d5455476a5a4d6778584a587473414c346a6474616f67796a535172516b5959746733596c6a4162793565317a6d4241365943456a467150717069532b627130656e326f6b456d636845304570534d66646e79644e64326c7537497965555a487865584c5471376535426b74376d35755962614d79336d617a4c54516e527a4744346f334362556478616a4b5241742b5a456d56596d514e487879634c5a63326c7555497759675138456f6c6a4873536a595778626e4770387a78796b586b614e6a3259634547625239764b7a49546d6463744d6a4b546776456e444c7543743959502f41496c312b483468615474345330384c5a315237576238554c3969462b45726378306b65315547662f7744627a2f384151482f766b6b332b735839754c51426d397a784668344f4c46613432492b5a35396462614f3746504f78627554684f574e743950654751594c68766566593834514145354d59794a50676c536f4353496c756264792b5a796a4f4d7069476b6b434f6a694d44784c34686447356274796c433452574652386c5264324671345a463541534c7a6a4762435861506e787a515a594765347557544979694a5774636f776c70424a30392f752b525347376374576230597950546338754d70564d524c546d654430646450793436684e717847674e7750376c58633239765264695936764d3670526678486c77777037304763326a5933566d4d4a544d5a4334346c4c553541444776617434424b356d33323035583458514c674673532f35354f3734414d546838567532396b32625562524a4a694d654a7a2b4b432b5355445451344a6f30716c3135463042646d434972514a63653049786b33683936416157433867614463542f2b5a4f4b39666776494155762f415031626a6f505957673171493452696d68536e464a624c786a7a6a4657462b354172474a514948755246564a446a67676b596f4e56796a705a78454b524f6f6f44375970635479554a43674b416b753451597937555a4d4f39414d43636b454844466b6f4a7a524f53494c342b7851435741414e5551417a457166696c6d66306f47385650636935627172386c4167516345455a78676f37303470515030714e6d4544474f5243596366636b30346c466e71676d623549514a4646474f654b67504241517836636c4336674771707855784e4d55456f437038555278513745424a4a71464133636f306355514e56636b414242664d49454f6d4a706b55483144705151696c4d51684538314253696b6130664e424258484e4676677046335270373830454b454b4270496b4e324b5269634d6b4559594b426a4769474f436870544a4151574e45736f6e45563745326b4f53674b43714269517955676d736b514f6c696f554567575946637a305564462f38412b76632f42645552775a637a3065736234482f667566676736514c5949794a78514c642f4e46754b4263555231596f6b5652484241674e6168477155534954746d6745664336416a774b595a39716e4c4d6f4a51347141734547457134454b467046676767556b584e616f6a69635549484d4943656b634755616a356c5134746b70704277515148696f7864416c36664e4e426b414a39364171536e774e557458494343595a4b47496b692b6f4b4e6d674144427330434d6b326c7570514579515150676f446d554e525278434257634f364f706a7755484e51424244536f785243417258696f3252514674505969586451466c434f4342433243634d636b754f4b624641436f432b4b4c6b4f70703449496356484c4950716f4d3063716f4a5845494b4f706b2f6567674b685948424556716f513643564b6d436a42426961424141487158555a796d34305564427a3768663143482f30797567756649442b34514f666c6c64416a69674b444d6a32494d36414768524b4b413449436c6448444645304341454f4577775a43714b414b5971465369435964696969476c424558344b436969434f3667436a71494346447751643143674a436a714949426b6955564541354b4b496f41366d506169794b425a56525555514246424641754b5a6c4647515252526c4d6b456172714f6f683249436f55416979435a4b4d6f5645474c3155507470446979303271776965537a65716839726339733170322f384178512f6c43433142514b4949377155775577555165646d786669717a49783853756e57706f6b4947665936424a634d30514e49634a4357347034416d6a494546616577566f6a3076524b4e554b4372343841695245677834494a49667047435454717152554b3054594269775141427a6b364167616176584c67674152516f475147415542314376685143686f55514862536531454541434b614d54456153674961496245494d39633148454f6f444244574333356f43326e744753686f5847655350784b6b534a482b46415341685568696d4561385554496e704f43425453754368673957365552554d4577476142474a526a4868326c445470446a48456f363555484876514c484e754b7369324743476c514d4541427054464574674f4b68494f43496c6b674762657a496768363465394e4548784e525275583745454d744f4b49494a5a4267523159386c443068414d53526b6e384e557234694f6634706f7961685143516f68455970674d6f34495178596f4471656b5577417878435267554d47514e704f56475748314b576d33326c62347941792f657348713162564b7333656731774230694a7856707069684347716c63766b697868556539424e504842415038416b6d5a77365352446b5a3549474c4530435851575241626d47524249346f4247675a455570374f684c466769394f7a67675a75465549316f6b49416a5769684761426a5575794c48552f424c6f7177484e4d433143676d69716c4d73564365434a4e6543416b66676c63453975616e506a373141477746654b434e7878554d76714748425477315147484e4158346f61575264714253564231494a685248354956457561677771676b5877347142343468454446715a4b4149437a3438456b63776d4a316e6d70326f4a416653506232775241705570526b507152495a4248634d6953653548535544456e7651537663457238633149794455544575674569545559666b68574f4b5931533042617141783471617a33497a4162675755464b565151686a37464b4a59366b58475349427977514552644b375a5a4b527153695a4e69674c75467976565a36726d307251335038413467756c7164637a31516e7a396e774678766a48384548596e5357724d706156644d52694478376b73384d454169583563464a6670795447585654386c44787977514c4a38734f31523668306373556f356f4471446f76565152666d704b50366345414453384f534a722b4b412b4b44652f38414641776a785373514b706a4a775061714448336f492b6549527a5a534551675544526d49752b43576d536a3141516d41653541373855735a415554535379705874514d4930314a59766b6978493969704c705153706367345a5a4952716942484e536b636b45794b47726d704c7339676d456156784b414362426f3435714155785378445542546164526441572b704c505554795270326f67385543365145784e564930556b674d76636c616d50596a45534e537058533642626656696949386b65664a4b3158514d4364504c6b6c4244314b59536371507751427753366d48346f7871616f4949484d7130526c67446b6b6a52327a5435646942475a4e6f633039696f4453696d57574b4348536550747a524a656777516477796243704343614644485451594a6454356676526a51494343395641644e66617168414b4248795a4241425853736e716a2f4147382b78766556737258562b78592f55692b316e77492f45494d6e70464e77422f38414a2f38416a58667871754236535833492f77446f2f7744787276695164424a414549414f505a6b5a30553669676a756549554a6273524c687a6b70704f5046414e544b4d43464749446f6b56646e2f42417067636b5a4446516a394b6a4353414273305142696a526d5334446d674e4d425646415646614973435256424e4a48636f496830435a526f61715946414d7561597a6f704b714d6d79514b4d4b6f7545414b4f6c426f364270476e7456536b734644555056515263386b444173476b6c6c456e425351346f6a462b35424f58454b456b344a54567a7a554a7843434f4f304a706343686969315541774464794f706a584253514238534278352b324b41695455515036564467454b494a44465448463033687751676543434e70717069616f4f37496e7178515453525149346f64716a524951466a6867672b5251446b496d74654b417878356f59654a42427378376b466e4d705359355642524479787168684855666a7a5147544549417143543051354869676c417a39364c423144456b306f6941315167416a52386b61476d536b556b716c425957344a577058444a534a555a38304531505432346f6b56716f656d6a2f6770704a77514c486c56515930517552365a5a46704c6e5739786374326474627452426c6369316165474c2b314548556944334945414631686c76726d73326f2b58356b5248575a795961694d49353833576e613368756255626f7071792b667851573663477a524546794a5737467258393544714a6c2f5749634d634f6f5070596357576d6479646f57724e732b5a636d50484d30306a4d746a6c326f4e784439504a416c594c6d2f6e5a7433544f49383231707a6f524c412f50334b794f3476777632376479494175616d306c324d6131666c773979445737597369415a643635733935654d4c6c2b33434d725676563470645230346e686a373176696451423542413542496f6d6d7552366c435a76325a773856754e79344f656e5334377734553956752b625a38754f453453756e2b57493144336e534548556e4f494f6c324a2b6e73344b4f797832376d6d566d476c395673397442483831744963664e424257696e7456633646324e6a63626d354b6f6847306163684c34715774394b35636847376f613534664c6d356963612f6d4d30485172373054555946633037363659486351684532596b743164524558426b4d736a5170353775376376697a593031674c6d7162356c7376626d673343716a474e59344c414e2f4c797451682f56387a7951483664543475324765437373376d394b38647663454230473571692f366d77507355477353666d704c6b7564366b4c65757a353159617a716a2f705034736b734333397a48374b6c7470656177496a79786f532f444a304855776f6747777a4b77584e376573645534524544495230367574695731634f62664657527633626d346e5a6847506c327a463548466941634f5075516134796a63447749493476536c45644f5277794b3566702b36497332374e6f417a4d726d722b474f7556542b417a58554a456b456347685163396f585076546a3666654e776a6f75346a2f356777482b6f66454a52634f7968474d6d4e3638535a475649766d353452464548546f634b715578574350714f6d46307a455362656e2f6a4c784f7242752b6c63465a4739647433597733416942507779695841497178666c6e3845476c347972456738653368326f2b4c42637131664f33735061414a6c754a51725478534b742b36334d6230747559774e7a534c676b38744f6e4374486430485478775348706a584a5a6265366e63746d63496a7a59794e7555586f344c4f35616d61537a764a436479462f547168447a4e5673754e4f644f4e4547796973355a726c5139536d3975552f4c303343497447547a692b442f697a4d7448715a30324449346172582f754344574f717158564764496e44486b654377324a6a31433772622b6c616c30776c695a667149796236516531433776446274333551694359546950356e303438362f424230513570394b684a5749377263527543334f4d6573457761525961636456487a792f4d6937615835336463626f455a516c704c5642774c6a74425158784747536d724d4b4155344c466366377579332f6275664f4b4463514b424c417842305531634d3635726e2f65335a514f3645492b514b3439656b5a344e7a5a53553768336b2f4a45542f546857542f716c777155485341727a514e4b7957442b34544e6d4d6f784275473535556f367150714978566c766333664e4f33764165447a497969584441735158417a51616d664e474f4476514c4276496d396573376558674f71552b656c6d377131484a575232597458544f3330514d5447554267546b65526169445647597552314169555a5946485377714d4d31794e727572746a61325a6b52386f434d54314856576a384f373472624c63585a585a57724969664c62584b34534b79774162356f4e4f664a4f474237466e327438626d324a6b6154345a413467673143792b725142685a457871486d783152784c4e4c4a423054784353636844726b514930786f466932304e76416d6469314b334b496b586c624d666d71353736373971623837634749746b523854764941766c7a465367366b685669674b7573747a6458626c36566e62694c327744493343514b34414d5069726256303349435534474d6a6a47575874386b4673714842435567476953784a595078584773376d514e79786270637558376f457a48706a586a675a634174326d4f30386d3162464a533039574f424c762b6f6b494e67646d526438567a4a622f63614c74324d496d4e7563346e467949634b484c697259626d344c6c767a4941573774493165516f3963716a68377967337859684b4a4f69427071467962577a73333731347a694a487a4d66394d554856526c56636d4f3475574953742b4f354737355674364f37454f65514e547957757a66755175477a6567484931786c46394a6248477268427171694a354c6c7833742f7959626955592b584c533431485631554754596e4434712b5636394f3862566752506c694a6d5a4534797141476572596c42716c636a6259536f2b48503234496d49784335317666472f43784f6351444f6368785a7457484f6d4b3051336370777653494432357a694278306746427230736c315a6c563757374b35626a635031526a4c764b6f394e44575039647a2f414e386b4776467a6b45644a37507a57472f765a5275797332394477413147354c5455315964324a357054366e726a614d524856646678795952303475633630484642304e464b4978355938566c3265383837574a4e7167644a306c346c36687665717656322b316d2f384142384a785162325a4b5679765664376175375335434a6b35474769597a346b4d747033496a666e6275734247497552504566563769673073343544356f4e77574b7a764c6c7a795933496747384c6b757742695067616f5874374f41766c682f524565386d4c315164435666656f3457474f35765175573458597845626a36644a63787a725376636c4f3976434e7935616a487972656f6454764c546a6734484c4d6f4e33694e45584d566e733771335052475534786d5245365872554c6d324e78493278746262786c4f647835737741456953787a6c6b47777a51646f34707079697a4c44416a62586f62614145625a69644c667147495061484b726876705368435a413054756d31482b537466654f7842766f7a71456e553066627456486e2f38416b655350446f452b3879495a5537794975587264672b416963356a39576c6d42776f3537304778714f6144386b51664d694343345a7752374d73763263624d6a6373394673786b4a526a3453636932527977575862626d37597357544b4d664c61334845366739487762484c346f4f724c6e2b31434d3477385a5a3644745759376d394f354b473345546f62575a6c6e4a717762357173627358685a6e434e626b394a31597859532b495a6b4736556e524561305249344c4a3668586258662f414b636b476c394b6d6c3863446973553735456f62657941626e6c695a4d734142544c696863333834325a7a6c45655a436362636f76537047664e36494e77426a565354674163466c7462693947364c4e2b4d65734755644d73475a7758626a6a547357512b6f582f496c757255496d304830676c704d37506838454855456f366d707146577a716a4576677566507a593775354779496b6d46757333623675474c6f6a6636624d6270413879552f4c306d5452456753376e68516e6967364242505945757038467a34656f61446346375354626a356a327a7142485a78375562472b6d5a77686330447a4b4479354f596c6e7278344f4d3048524a42775130347244366a5157662f725773653161623977577263726871493170795158753353456b7159647a72425a39516c4b35434e7a5130384e456e4d53784c486a335a717558715a414e36496762635434544c7249646951506b4d2b5344712b4c424c69506d6d5a78544651416841704c41354b50717078584c3246343274767459414f4a366f6e75632f6774462f64474a7641416630376573632f462b53445a4c46383033446d7564486458783563376b59694630786a306c3541794468386c5a4c6458535a6931474f6932644d6e4c4752416367554c5a596f4e586d524568422b7249506a78546e673635486e7975334e764f41477564755259306948303936756e76726f7458544f493879795271306c7759304c6a2f532f755164436f7954654c386c6b6e75352b634c64734f42447a4a532f39767678374576336b6a7472563968717565583244553379656944627a2b4b43353874786675584c6b62555936626265496d726746716650344c5674356d2f6268644930695551573766626b67764a7032704a53454469415a4767346e674678724e386a7a4c4e716c79642b3548575230784846384365413472655248612b5461684545536e7063314c73532f6166785161326571494863755a4c6533674c3179455936624a6b43354c6b5272776f6561736875376a326a4b49387136644d657271446877345a712f446d67334570706355674a63486d714e3838747463346558633766435547676451716c4e46692b374e6d336173784d64636f526b3977744541416538386b6b6655746474394938335835516944306d58613244562b43447041765869686834734d566c74583773626773336f675330366f796834533249726e565551333136567547356e43486c793061716c3630635a64337851644942716f546c474c526364574862795757562b394f354b33596a456933703161697a6b31594d3764764e5a7a756864473133467769476f794a66772b4751785164506b4d55577849584f4f397551736e63414452714443757252523566694f537575626d517554686269476862387955754a4f412b424b44584b4c3830474937466a6c764a787457626f6a31584a57676541317175573533457a6438754d47746e5431534e656b467350696736494c6841537734717531644632334735476d71495048466c7a397274626537742b6666674a6d5a6c347670416b51414f416f673655357874735a4542793365636b3776514c687a75543871314878536875664c424a7830616d632f69756a59335677335a574c77694a69496d44476f494a61726f4e524647527a51417a526b514f6e6b676b754278586a3467364e7a2f3841566e56657635354c787836596270762b354a42374730503663446a30785455506171374465584179716445565a687a5154537853794e5278544531624a494d616f476b536739464a7a624a46786a6b674a36714651734d616f4546736c4b6e4a424736615949526a453139366e636978504a415342334a5247726f53442b394e6868376b454b45635641484b6e424130556f624a526d785259486c7751434b6b526b6f4f616d6d7242424165436e68376c4e4c6c6d523074336f42526e7a55426f794a4651366e697743425150636d4d52694d46497366616945692b50375545306f7872315a6f427a375a714f79416b6c4179306c476e63695147714543467a584e4d426d796b7149697051414e676c4145536e48785245326f674271476c6d6943394971533549427345455149645238776d2b6141534c647146754a6f69497851636b4f4545724768546431454132484433714947315a5a7161754b56684b546c51593077514d77634c6c656a6c7875434b2f313769366746517564364e4567626a2f414f76632f4242306345774f704b777a7a5443754342636d782f425349417778554a717a6676554441494144787155544b744641457a44443271674652584653526646445345445443694276462b434177636f766d6832346f4951395548344a6e72324b636a6767684c5971664d7147694a4875514273676f49736356493473454a414371427741554749557877554e554162556a7063756a515949476c454244597159393647564b4b4563616f43774859674d557955466b414a712b616862464e516f45684158424b696d6e6767446d676d4a52626d79474b4f7169434f687a52504a4c476c53674a475a556f6a79552b6143486d6f414d55424a3055456444556955767456417a4b453542516a4a6b445173454244596f59464e4a4b4d5542484e54536a6a52484446427a726f2f2f654e762f77436e4a644446632b546a66772f2b6e4c356864427149496f6f4b4b49492b61434b556c413156445556555a46414855354973685556514442484e535846464145475a454b494370326f446d7056415755555a514949516f3642526441575155555a4245455645457755555164424454425442454b424241677a5652554b416f46525474515146523145447751454d69794343426b714b69434b4b496f4169676f45474c31556d4f316d657a356861624161455279437a2b71683972633746707346376365774948555552434159714e6d696f364467454e323856514178726a2b43767542366363456747762b624e4258453559493643354a78346f534553482b534f455458464172505651765676676d6a456745592b334a5178414e4b424241432b576c515249424b416a5834636b3067425534494678484434706a496a48344a6e4a49416f6c6c3166796f4143344e4b2f4e504a38654b6b5748554d6c444f6e6367414c702b6e46674368556479576e7651506249785569787846487853674876434d503031514e7a51456d716d66494445704b4e306f47456a484a43427056414567736d304d5834494953416345776b4b555a6b6a2b39505476514c467355596b676f61444a503141565141525459696972624d7034344d654b434757535a71315179633459494e56386b426b49782f4467697a395743456d474b614d587971676c434168555a496b5a6d6a494541687a67674d6a4c4b6e79527778516953315069686f632f42415278436558546b2f446b67483755653141706d2f6879574c31622f6a686b386f785061746f57483161345957346d502f4148423845473245636d373038545244444874526a486745456c4774454e45664677554c56343831496838554549365563525244476b6b4445484448676768664671706e646b4a536468674648656f6f79416b4e557039516653716e474555615a6f445638554736745279522f4e51394a726967424f5a55704b70706b6d50596b3149446d32444a674e4f585968416e484e48786e73465545642f7855723950755177526b6757716145654c714d345a416879674d6733745651427a77555a73554a4444546d676d47436376693145754645725045344947444e52534b4d533954324953365a636b425953446c5368554d5878347051586f4d4544535249716c503756483148755152314967674f556447534969395367534a48747854534439516f6c384a4c4a3578456778784b41616e396e716f33755562546b45434f4341414545736d4456616855306b39696a48356f495769674976525139574f4b6e596759416e707a584b39582f35396e7a75482f3342645855486f4b4c6c6570416663624f426f4e63766d45485675454f6552556c4a715970707539506a6e2b4b56754b43444d6a43694a4a6c34765a6b4a537177526b4e52596f46354b41616b3158514130676355435249647330306142776f414e4a52624d4946664d356f39334e51764f714c456e705149596e336f796c524f655645686f5851453052505046445366715268457678795152436b76666a7a55466535527a3855424c2f586c5652546d536f4b39324342596b4f32616433444641566b387355424a793342417a56516b5968513570516759564b6d62452f76553068544d6f494b7076594a532f46466d514c455055354936584c3571507839364a655863674f6c4b4b752f7552496c6a56386b424267346f53674d41454a4876556a576f39696d71334a414a4d6f6549785230644b67476d754a514155614b576d4a5261724d693742304162516355434f4862564e714431556c4c4a2f676767516941366154346e75556b676d6d744573514a5959594a69486a6b36574d2b50765145523149677469674449646948354947706b674b6e6d4647646e2f4147497341676e694b45682b616a4b4d51613969414f3563596c5a2f55522f34317a7348344c5671617057543149662b4e6337507951597652782f35493465542f7744457651796a6d463533306f6e376e2f38414d396d4d6c364e7963454341487455557a6f6d59484641756f345949386c47794b424a514f614a644e464b6436626745434f51555454424679555458356f41615649716f47642b4b4c355a705454735146744b6a48414947546c523646415a514b6a67314743556a33496954494358532b4c45706d53786a576941694f534c6b6f4f3739796943454f4f6b715a4e775249616943416d52354944704471466e35496878685241422b6e7652594e37555162494b474b415077545a71475169665a314877514446456b643667444b4369414f6f394b4b61736a697071656943416e504a484775536a677367426b61494933536a32635573677068336f47443147534430434a777032705764754b416838446769526e38305357516c4a414e52344b4176314930694d79366a63454535594943756149664244566b67554f3554474a644542304367424c596f366b5a527951714d63304269582f414355636b6f46544842414a4f4b6c4d682f4536674e55426257674a55557a634b47676646414c6c596d4d6363466974374f6342743330765a424237644f6d6e375757326a706752507451632b37744a43394b3762686275655932714e7a49696a6773614e69467174783875414641526a6f77376c644549534e55475054755936725544435971524b345a416763774866686b6b47306e5a6a61386d54797441784f75676b437a31717a5a4c66554d324b6a5578777951594c32777558724e3355592b5a63594e58544552774473357a4a4c5972526632387274367a63697746737966696455576f723949495548484e42784e794c6d33735872516c624d4f73395236687172704d5771613072334c715770584e666c6b4e626a434e545235484565376b6e6e7437526c726c474f735631474e6666697252773967676f75575a5376517568744d597a69654e57624c6c56596f656e53684339445544726a4b3344495267585948764a3767463151582f4144536e705a426c6a7470436471644774776c4758623038734b4b7a635175544d5a3254574c764758686b442b57496f7274494b4c673430516338624b64794e377a6d45726f45656d6f694147474c4f61315273574c6b5a44586274414436346549397a4275645374347069706779446d445a5878616c745961504c4f6f436464516a4c4561577163574c725244622b566638414d2b6a797862353050746d74495969696a7437634548506e733543334a355269664e382b4a6b61437441666533795173546c63333271656d6c7075673667486b4d54784f4c4c70536943476e55484c4549517432374d57684552346949414655464e36775a334c553359514a507669525261454c6b584b4f726c5242787836626345497730326e31412b5a6a4f58552b4a446a336e67756a5a735374587274326d6d34594e784452415632594f495269487851637931734c6c69454a5739506e514d745843555a534a306b732b47464b46624c4679355058724441536147546a69523276334b344164366c55476664574a58346742764843662b3067382f77536233614863615a78414d6f4855497a384a65684837654b317652367070634469677754326876575a32356946737962536265524651356f3963767a5247337633726b4a33744945486c30794a655744314159593057736371414a715946427a2f414c475a6749306358764e37745474686a38466447784c37727a6e476b323477625078452b3671315964714436616f4f5a5030325a74546938542f574e33535430794476704e507a716a61394f506d544d343234516e62387378745561765948706e5467326136684a4e5069674f61446e6262613349474d4a51744e4836327157354e51393631627930623976514b64635a5677365a413831654139596f534f492b61444e63327368654734734d4a6547594f45343836596a4c334c50643256793562765142693979635a7837426f782f774274463068376b736d6955465632305a58345850706a47556639326e386c544b4e7a627a7558494d5463755159566f47414c3847597259347a55784b437263573579675243576d56476c6c546a797956567178656e6446362f7047694a6949784c347456324841552b4b312f69674452766b673533326534386e3752342b56346464645167636d5a6e7964317068594d4e77627a6a526f6a456361452f6d74455454327855783745484f6a734c6d6c69592f382f6e66365866686a384f61306e62794f354634746f38737750467a494873576744754b497267677a627662796e4b463232514c6c764456514548454676594a4c56752f636c356c77674141786a434263567a4a5964314672396967677753325677374f4f33654f7361484c30365344772f42577a7358374e366432787049754161684d73786a6e51484c454c5a395655423076386b474b3162756266525a704a2f4d6e646e6855312b5a3979626662653566467279644f714534334f6f6b4f4144774234384672464d554d51677a69562b344443344c624553776c492f3841776a76564d747049374b4f33424775497467384f6b676e4c6c77585164365a684b525769444a4f31667458626c3362365a4334326f544a4445426e6f4437766974566b536a4143354c564c36697a4f2f74384538596b4b415551596f2b6e76627557376d4679354b35486b39523245494378657543304c70695a57353670534831426941634d6131795733484e5350415a494d45746e50796239716d71354b354966363848563932784f586c61572f7079633967695254333573744d5848596a545452426e3238703362657534474f71564f54304a7871796f466e6332707a387279794a793152314754696748446c7857734841706d6f7944443968495777495365384a2b62716b4b47654875616e4a5757374e32567a7a62326b4e4852474d616a715a795454677931365232494f4233494d50326c7a375347334a4771506c7563756d5150344b474d7476666e64684b332f556a45796a636c70493030656777396e57774238416c7562653164593349526b32476f412f4e4278397166364f316a6e356b3563794f756f354662547462305a335957784454644d7061704f3854494d614d7877354c5a35635249533039546164576b596348526d526b675862773871316274794e5978694333494c4a59733775784577674c6375715244796b5045536630726655352b77556b4379444264327378656c656847334d54413152755a534648425930624a5339745a5338716352445862445369593942315974517375686b794e454743486d32744d524332444f594245425152626a53744b5578594a39395a4f34745373774c46346e7177704946616a79524e6578426c3952736e63574a3259477368324c503672596a646c626a45744f524d447a6849505035426452686b715a5269535a734e66367332375546473532307a4f3364734e717436756d56413067783438736c52506158705276367a48566441343651524673665a2b41585362466b6e7a5155334c42755474534464424a502b316c6833516e74374e2b3171742b576463764631417a717a5a6e68587558574e615a704a324c5a6c714d493676314d4e5876514c7434364c635846644d666b73304e6b396a795a30496c4b63544836657077584f5965767557794e616f756535427a4e2f77435a39764855514c2b714f67787a6b6163736e6668334b2b65306531626861594732596d496c67644e4b39746539624a576f7635674131445050735130366b47613174702f63472f5053503665686f315a69342b664a4e756246793459336f4e72746d6a2b47514f4950346331704a397967446a7177515939462b5a4d3772523654474e754a63567a4a59664b69535778755332317578545844793334644c50566c767a7755487951596a6176573774793559306e57515775466d6b4b4f474742626c564333744e454c4d59467a626d626b70537a643349377974774464716d4c6a4a42547470334c73544f63574c7939774e48375173747a62376d634a574359536850554e636e31434d736d7a497971467650536f7a67494d6c36786474334266734d53492b584b4d797a7879494942714f7a4e4a505a334a327943592b5a636e47636a3949306b553977377975676348514a5a426d6c594d747843365044434d6f2b396d2b53356d36453976744a375947456f766f6831645a655868307434765a6c33485352735778507a42434f7639576b617373304352737947346e636b326d555936654e4857543743586c614a6164634c6b726b58724534305063667958533149596a6d677844616d356275516e4346765848542f54716538734f5650696874624632456f2b5a4330472b754f4a2f7744534735314b33654d4d46426979444c766246792f434d625144776e47665534485365784c4b316676776c6276434559474a69384a456b484c4542612f62696d6d324b44465a735849536a7274326733315278505947476e6e55716931735a32487443467563484a6a4f5869414e5749617037777570626f67375639765a30464675374d334c676b47674342436a4f47424a37484e456c7762694535477a706c4765486d534930486b774e4d326f745438536f476271515950735a32624e6d4e71516c4f3066716f4a59673857787069696474647665644b656b537532394141656847724e75667a6f7474634267694a494d6c7a617a6c4379496b6172636f536c32526951576f7339305432336e614a57394d7a356b745a72416d50445043676f756953516c6e74375630363577457052776c4b4e55474c5a324a4e74376f77686259386572546c334b2b335a30584c38376d6b77756166647061727261773731544f3347344e4d6f76453436712f424268394a7374614d70456b5436516339454f6d507772336f51326d34386d4669586c3662636f645856314342344e51747a4e56314d4d4d45432b51515a724f334e7535646d54347944482f61422b484e4e7362457474596a626d515a526a6b74583871724d64586167785739694a5737747139555475546e30305a793450614642597679466e7a6a4856626e714a2f55474977616871487935726470436b70667351594937533535562b3345676d36626d6e6b4a52417237464e63326b3551735242445770526c4c2f53474c4c573961596f6b38554657326c6375524f736152716c702f6c77474f6179583747356e43646b474d6f584e54536b37786a4c454d7a467670714630482f4e513668676777334e6a3157376c73526c3563664c30334d44476e625875556c745a584c5930364c64794d78636a7048533434353144677264422b35516c36494d64757a647558764e7536515967786a4750566a696342774348325677375333593664554e446e4c70494a2b53326b30664252756c6b4743586d62652f636e43554e4677435568636b51597347636352546c32716a5a62547a3976747053414d626571556f7947496b434238335853755762647736707745694f4d5856724e54396944446132336b323557356b655239426573596e454678674d71344b763075772b322f7148564b376d33306761592f41503372664f417544544d416a67512b48616d624c6767356f326d344d62567557687255725a3142336b49636d70547471744e6977592b64673179547837346756397931446b6c7a716754613254617377746e474d5978706736795173376a61366f574e4572645a5231456778664c417548777757384f4551345163383747596a616a45755933664e6e49306339542f452f745276323532397850655261576d79596163535a50717757384a57417971674673543052387a78734e5459506d6e2b51356f4159545278656e375545664e654e385564772f3841335a664e65795a2f77586a685347344e4b584a664e42374379644e75332f4c48354a734b594f706248394f4950365542554e4a42444a736c4761675235596f61542b434274564b7367344f4e557463314f7a344943334371686645594b414d5841785245526d6756386d716f45633642314b4371415955794b6777717a49365269676355424134565570674548636f6949485469676d6c2b6c512b39463674464155397355414163313853614e427a356f554f41525a734541624d594a5a555a315a6e56445677515344595949434a4c6e48676f7a555468326f6772494a79524d574f6f6f41356f797870556f49366a47574341392f7952617665674a4c484251486a696f534649316f676d64505a6c44496f6150696d45754b42645043694950425375614341416671465578507855303863314148514d533652394f53497055715071445a6f49334e5357426646523835496774696745692f687952646d644c325970764648356f4a4c542b78484b71585378633936594f5167674f43357670474f342f77447254585369434a4c6c2b682b472f77442f4146706f4f706955496a48676a45686b4545414c2f4653497a497a52384b6a594949564356425848424b41516761547377785550785178777852774c484242412b61684b684c303471526942676745666b6d7778532f7a49747171554563446b684b4c6c4538635561646743436153425771684355476e4e4d373969435057716a4e6a564152716f616c6b41474b64714b444254456f41526b61714d3667425a33554341434c5956545a4b4b4946694b55524552697079434942446f493755525151484c4241574137314859495a5552624c4e424b71525159596f674d67504a54484646364a58514268454969714c4369484e4247434c5655557851546d6765534950465273383045554f4b67446f5934494932515242554846434f4b446e33472f754674736f483856304f617733662f76725a48364374374942676a697056544242506b6a676c37555851525146384545586f674b474e4558513755455546436945475146425246414169676f67495555555152525252414556436f36415949347146526d5142314d45564545523745455345415543696751464246524245427a525151526c455545456452525242454478525a463041555255515a50556f673757342f77436b71376256745150384d5652366b50384178726e4d4b3761307332322f544835494c564d555541674c494f696f794468584a6b6856344867666d6d4a716b5947764e417363783465614570644c55354a684567367358544270426b46624343634148386c4a786248464965716b554231504d634252516952476b59714768354b617741342b48742b4b41776a54554f5078555958415a4442534653774e564a566342424978423979464749465078567a7668676b7049592f754343644c6871664a467967474e564b41617667676d626345344c744a4c453642795278713643527055346f474a79486369514a4d706a794b4361555445505253754a5244533755414135552b4b444e5165334a574f2f6844704f5951434e4f7054476e654659412b4b5638737364534152775a4574586a7852466355544544464243354a48754b476c7a5432397356496879794a7851513550676e6b41497539556f35424d44724772424257484e4139557a394b684c356436426e70775147445478544f596e4771475341496a5641586f6a712b6b424574345567704673386b44412f5438466b39562f346742537132554e566839576d316b5a764d4e336f4e3577484564366a6e434f4b55436e42754b643041474743584750596d7133486d6e314e314242547065763777704b4c30656966546d554e4c7670514c454d695a435478556256514967645073364168674f49514542324b4574544a51596a4642484a6f6761467a324a6d2b715866336f452f5561494a6f6952524836575259354b417567536f785474457533755142446f75676772336f416d564572452b48424e48715141304b497969557a31655655754e6539424a593952544767667555656a4f36576a3051467456455454455a5a4947534d697a5651426a334976334b6166705549695541787871464939474b6c4d425134714774545642477a5549786448525245676d6f51426d446f6e2b476955436c45326b737a494569474c344d707166424d416742704b4341686e526a3769794f6e764b4566636742706a38564a5577716e6f4d456b6f49444768525a67324357474b614a4d6e4f4842414771793566716b6636327a664b5a2b635631744a2b6d6e4e63723164687564706c31666b67366849713261414c4455724a45467a6b6b644242494844424579634945616e41556d78726e2b5341766f4f704a7271334e4e494f66795550735543344f6e6b34354869674b4b4767423976326f42705062384852305a6e4d706a536a3446426e78772b534257484442453177554f464553576f505a6b417770696d41496f4658455554567978514853346f6853436877702b31536e59674c5537314866424238796a452b3541754a55694d55635a664a4854576c4545706968474362773471452f703936425a4f4d464541587854476b766d676a356e32375649673969494473675045676a454d4558715743584c6d6d4b425361303976594a6a46716f526e6d55496d5251484b69686a6b454e4744464d5a4156515168694f536766764b4558784252304641473146734752306e4168466939557668515131374f534e7670534175656f7078587061694159554b4a6c2b78456d6e596753424641754b597843536e694743643877676a4d4b5a714370626767475a697949427937554566556a494d65784269693742686c337536416a71774e554a73675a5067706c785151484a3953792b6f782f3841467535555771546e71575431492f38416a54445a666b6778656a7448632f3841356b662b356567314f7542365142472f772f6f6a2f774279372b6f4f674f6c30486349534f5a4e455541716f432b434d612b4b7055314e5641524544747a556658324b556a56514677674448334b56714b716154464138415542443449366d354a514f4744496b463634494a34614b52414164527731564b416f4a69707166735245633143484770424d6350334961636c4d634561653541615643534c6f304a5a5175394545375558594d707a4f4b6d49354942584c46416d6e56696d374544466a544241666b6758666b6c52773745423757524878536b5a6f6d754171676b51414477524d674b6f5539365674557578424a4638457771374a7578426e515368493936516c4d785a466d78514b574a544541596f426e49524d584151445656796f506346506a565152444f6768427971416f6134594b42387543674661466b456a496c4534356f434a5a3048717751475441305241397855632f537956366f446b347156484d714947715a2b4343454f6c4844464e4c676c6c68326f49326e7452696173555256526d484d6f4649365843594f3961386b4a4536555a45484c76514c584b6e775447726c522b4163494442414e595a6878576537656e62753234426d7545787734524a2f425733376b376475553452316d4970486a37646977797632393366736d7a3161444b6338656b61534b392b53446235397369552f6f6871315577305938306c7a6532594e716b326f6167474a636578464d6553776d35473162334e6954696335585447504554464432664a57325974667348685a6c3365446b676264377a2f7835337245734a5272773667434b3455507557693176624e3257694d74556d66444c69446e334c6e626e2f69334e48653744767242613931712b373235792f71762f414c517943303736774a2b5871712b6e6c71344f7a50796430313765577475644d7a58476764755a62416471346d336849576874623936555a4f787461512f6978423075526d377254652f6f6269374b64303259334e4a6a30786b4a74467354453466702f4e4232497a314d52574a384f654f61356b7439637437515868454738546f30346877613037415673326c6b57724d49784a6b414f6e5651746c536977323755767670514936494756304869626a4434645344544c6461353259323261344a53504b4f6e3879452f33316758504c4d7570394f5a4772672f68666b3772483662616b4c383479464c51387148595a47582f7430685577755268737a744a4237395936474c6d57716b757a5056687a5164586362757a74756d34574a7744456b3977426f724958493372596e626c3053774b77473548613769553735365a5734434d2b59647837363830646a6346754c7a476d4e323750796f366341666b37456f4c393775447437656f65496d4d512f6847716a79354951382b314d43576d63446a4b4d644f6d6d6453345437753535634b7738794745382b6e697a5662677364716473586f445a534a682f3149687a41427566684c35424273323877524c54497a6155687759384d4d6b74692f4b643639626c3462656a5454395558507a53656e7542644a2f373133334f714962614e37645839656f5668345a4750304467616f4e566d39493337746f2b43417474787137706f623678654974776b435438573445674139797766616d4a336c75302f5662674936704534786c6d66594b53763237384c4e717a346f797479616f4d4e4f4c384f484e423064787542746263726a4f32484d6d6748764b7a794f3773744b656d3435416c434553476667584c747a4743663147334f35594974683550475463644d67575663765534587449736464776b644f476b5a6b306f33376b4148714675334f37473950777a36614f306449344444477057712f7537566d324a6b304f444233344d324b7a324974397878316e2f32525757795a576f3761396470626a417866394a4c4d2f79644275472b744332627a2f30342b49352b356e425638377359536a475a61552f434f4c56396e584833455a37713375626c6b61684b4d42482b497878492b5134737235626d462f633765566d7352356d6f67466738506e7951625a373678626e35633573634f5078774237537241534175494978454c7533765870514d707a2f7061496b796330496f5358346a446b75764363435a576857554e4f727677376535426c76377956766478735538715559317a31536471383262744b50714f396e7459783873445849313156416a5145355a6b4a6478596c667658595945326f615a5a4169526233465a623070627262334e7a4b4a6a4b5274784565555a52663841395439774344715376516a646c47556947743674476d6a4f65723847644c62337469354952747a655576445173652f422b574b7a626b4837693749662f77424f3366716b713577503232316a776e747a7a43446f57376b597a756a572b6e54716952344b506a7a787a5173373231754a614c63772b4f4244396a732f6373553579747a33686a455438485361763044325a5657376e6e626a6279452f4d4138797362656d49365454396e7651644537327847666c6d665834655438436348354f6e767a3871314b3447654d5a53354f41754c433345573562612f646c456b796547675665547544706376692b5863757676663841376136572b69662f414c53677474794e32455a6e78474d5379716c76624e756569632b72504d4135416e41486b7174727672457263496175706f78384a783979353051495175626539646e41796c4e37656b48554a4845644a6b583758434473626a6432624e4c6b6d505935626a5146687a5432353677444575446d7558632f3866637a6c4f374b304a5268706d77494c436f63677478616a7254737a6232397533596a496e56726c42343653637a32592f6b677576337a6275326f696f6c4978503841744a5276376964715673443635365a646d6b6c5a393962467935596a4a3231796653534434546d46586632734c4e32784f4f6f2f3150716c4b51384a346b6f4e6b6478616e436377656d32576e4c6759346f5864375a74694f755869476f42692b6e6a514f336146673356695562357342784463615a486c6f386676444b345859375864584a3370615933497830537936586550626d79445a4c635777497a6a4c2f6b496a4134676b75684b39473349776e53516a356d6548466373514e757a43374d615952762b62702f5241367174337633717964775837397964737648794e4f726d43634f4b4462623339693770454a2b50773473652f422b574b4e3364324c4d6843636d50437070784e4b6436787a67527474714f4539756e6a66687472312b4e796b707931523666454e49444469324442427268754c647778592b4d616f38774f354a48643235516c6431394d4330706378375a43764e63364c32397059334d5231577744702f6d476b2f467663696473624e794732786a507935533762565a6637756c42307232397337633662737134737a734f4a6244744b6135754c5671477379476734484633346365355a664f74375463585a582b6b79306d4d76315230733363636c6c74776c743462653564426a62684f345a4276434a76703933776442747637775432313235596c31516a4c4b6f504d48386c624863516959516c5763687177393577707771797758794c78763372506738725271796c4b70707859555675313162653842644f767a59783033446a3069734477346a6a7a4b4470413572506175796e667532704e70746932522f716433553347374f3330796b50365a665650394842365948344c42474d747a39314b31555849786a4357446b524c74373264427673373278636c35634a314f464b48734f4237697279306539636d642b3375593262646c2f4d6a4f426c466d30434f4f72687735354f756e5a75777661705150686b596e7443436947364d5a336f586d6a35665845345041344875714368747431726a447a32684f362b694e634d512f4e73634658366e594632566b6e4f596a4c6e413149504c70513330764975324c382f2b4f4d7069557547714c422b2b6a6f4e55397862674c6a6e2f694771644451462b566535433176624e3257694d6753634d6174774c414875584f7533504d4f376e44776d3344547a365a594c5a754a442f774162674a2f4b425157584e3759737930546d78446353412b446c6d44383170464f7a3831777433754c6b343769416b4c5a3675694e743554476c7452505069314631396e53314236644d666b67792b6d62365737742f3168706d32716d6365493777782f61724e7476424c62432f66496a346e505a49685939705a6e4c5a327273502b57324d5031416b76487648785a56574b375378644d54706a636c636d4d774e55717479785164543771336474546e5a6c57494e4d434b4849682f67717472767264324e754a6e2f41465a776a3379594f485a6e66454b6d37636875627337746d73425a6e417947426b6167633272373074364568746472796e742b374242316559574837323548646e627941387468704f656f676e3467484a613458495848306d7344706c3234726d33725a75587477494471694c556f667a5231483969432f653732566964753362784a6a726641524d6d2b4f58595666353975334b365a537041526c4b4c65454d66652f6575644e3774763769555344637557744d546c474d67422b4a37303939395738664f45502f624a427473623678636d4c516c3148444669324c453050637063333169334c793554446a7035422b4a774865565465682f3973325578546830535753396668613830577a31536c4979323979477257542b6c717365394231764f416d62513851443967792b534675354336444b4a634f5939346f7364793944613776586336424b3345413431456a5474717250542f7744696b663841356c7a4768385251474f3630584c336d6b4333613031375975653076676762733432664d7648793955714156494430427871632b44386c6c2b792b3576333542347a42746d4279456845476f77507537452b3576486357476d4e4e794d37596e446e71487647594f4344546433396d795a526c4a705238564a466e7277346479623736784b5974695131797048676639516f35344f36717442747a7541324a686c2f417373593650543751694d4461376a72446c4232504367314b5a4a593359334a4741786a306e744b7a5433386255703237335270384f65756d58504a6b41322b353879315a6e4b5447356b4253527165626356614e7a5a6a447a444c6f6654714c2b4a323463566a733270516873347a6f5934387567717362633362383974496630695a3333357a697a66376a4939775164575636324a6d302f554271505a672f42553239375a756b51684b703761396a6976633677517433647874723070672b5a4b506c4e2f4a4776766b5a4b79356674376d566d473378684f4d70426a30526a694477344d67305850556476456d4a6e345a615a304e447a70547477577356356a38467a7244797462722b65372f3751745778426a743750386b502f414768426e73584e316567626b4a57774e556f78456f6e434a61703163735756316a65783345625a50544b3648694f7a4832344c48746654725734736e7a524a35473539636839527964766545524d334e6e613342485661616375794e4a4476446f4e6833566c35514a625159786c51304d734f56663371337a6f786e47313955716a6e7078584d4e755932666d73645535787679476261676668466150506866334e75647671694933486b4d4d6b47386174504e633235366863477a462b4942764536644c553142336f2f496e46644333646863694c6b4338534b4c6c57625578765a77503841783235537567355063306a34646676516254754e55374d6259667a4162683552623879464276747672386b7a3674576e5048672b44386e57543032334d58706959366249387148595a47587930724f4c672b304f306b48763168356565702f46325a7667673674376357724c5275466a324f57476242314c6c2b42454a6962526c4b496a4b4e64524f5866384f4b797876513265357554766e54726a62305350384c67682b4c315a5a6843517332355943573545346735524d334162346f4f6b643361736d354b5536514d64516277754d4d4b766a6d6d6875374e32666c786b386a7978484c6a334c6d62794a4d6434414d664b2f7744614674336358334f324c5a33662f61554675377654735145774b6d64754e655a4157686e3746683955496a6169526c63687a707148424e63334e7664323532724d6e6e4b45745069475859676531753976656c6f684e7a6c6b4478593448754b6c7a65324c5539457041542b413754674f2f46632f61786865466d3062306a4b426a4c7974414269596a41394c675a6377717151383278647653746d55356e52704231695836656b6b30353035494f362b4c34724e35736f58764c75446f6e463766614d596e74465172624e794f6f326f6e71674936752f44354c4c36764553327335696b6f6455644f4950376e514778757a636a637654614e6b486f6c78416f54373846665a3364712b66365a6378787842397859725076624769314151424d4c63375a4d5258706a6a544e73557076513357356a50623168434677536b4d44715a6838485157322f55747449786843645a59596745384877666b61713639764c57336d49544c535a3278707870674f31632b4d662f336661444f6636582f764374462b473333643656366e6d43476739675a687a664c47714462627677756a5841366f6c394a374b4b7547346c4b2f6574795a725974366376452b4e65537762446466623757305a7836444b34382f3064556d667477664a535566756675726c696f6e434d596b66567042647665334242304c573873587a6f684956776f7a6a6b3472334f6c6e76724671586c546d7848657a3853417737325757356674376f325957664847635a476e67694d516548426b74752f623268763237395a476379497434784a6d626a7735494e74336432724443354a6e726d5839772b474b7473586f58343634467868375a6772427449584c64797a4335346f32434437343571375a55755879584839542f414f474b4278664d4c306f53595145424e2b38382b537247354d72553739772b58624e594e346848696533466d6f7339375a513357356d4a7550366366667150636577757066767a753761396275427274754c454e535134783548344769445a6433646d7a4952755361545067645248454d6848314462466a7242457338753874527a785a5677482f6d452f2f4a6a2f414f38724e7030374c63446962336655736736306a3372504f394f3175495735743556774e47584366447647484e575770786b3170336c704570636e564871554263323977357847714c59366f314243413274775a7975546b30624d447045754a48694c384d683371797a7662563755495363674f586f5737434237316a33646752326362646f556a355a365135594545307a3438304c4974337962677647374b4d4a52384141597469514258436a7567315233316939417a68494745574d6a6b4f312f336f324e355a766b69334a7942774950754942626d73676d62667039733651656d477255484177636b6373554c452f4d33496c356e6d44793564656c68346f2b394271742b6f324c6a43467a783459733535345079785433393361734e47354a70487670786f4b446d567a77502f41746a6762582f7642562f6d78327537756d38644f76797a444e326a55436d4c35633351624c462b4e2b496e624c7863313732576133633346366430577a414345394931524a2b6b4839513471656a6e2f786f64732f2f664a555774763531362b544b594f756d6d636f6a777834494e646a65673235547645526c626b59544f546a6832384d636b6265387379684f657277566b344c67646a5037555766655247317351466b526a4857486c4b4f6f517a315678504d6c5935457a2b346b5a363373394d394f6c2f46372f774155477539766f334241324a762f414662635a4d4d6a6a556a35565732463632626874784c796a575134507a2f4446632f644456743976434e44727339517935743742576253344e70473562762b4b4c33444c39635439583445444242766a564e34756f4a526935524131565144555161356f6c454d67446d454179397346342b465962674844584e65786751656b597278305a5044634844726c55383251657774536531427344434b63794743727444544349793078444b77454f785154436f716737315a4e4a7a544e4b50315a6f4134787955636a42456e4a4241644c55514558726d6d496442754b413575564e4e43446955727455344b434e45445056796c4c6d71495a30584a354d67676349306955726b344930777951516c687a53346467554a31554b4e4237635545774e4d314f315358464578594942454e696d4c6e74516b695a6153676e38796a36636345724b47626f435975375971596d69684c6c6a6b704844696744596a7651434d587879525935667351516d724839696a384647716c62394b413043626970496c4b33444641514644787755306742515366464151636b70424134707961684277527851476d4f52513078384d6b57314a514b3178514767446a42413169345548424e794743435335596c514e334a63574152426247694273634455494f786f7071634f684a415948677562364f4747346a6b4c397a3846306f68633330696e33482f774430585077516449397167426270526b704769426449795550735557636f6b494a71436d4a513031524162464142484e516a543730413873364b4770515349306f754863496e745142484241777837557349315244414f31564351376f4a6a6946474279644c4b6a464e5456524143433146437777554c6c474c674943517751645174775139754b43524b5a7156526350525241476f794a3663457268516b6f437967425a42514f676d547143714f664e427a6a6b674c316f6752376c414f534f4655414141524f4b6e69726b706967674c31557752436d4b4150536d4350615541516a51494137714f364e5543674a44714d6f4d454e5341714243714c6f42696f36676b6978514149752f59694543516735397776366843502f774173792b4b364b35747a2f774469454f486c792b613651514369495155515230575a413155434138314d5641683249493667555251516f4645465241554d56454751547454495a4b46424648554b69434d6f6f464f61434b4b43714c494967696767694b434b41496f496842464545585142516f714d67694b436d4b434b494b494969676f674b47536969416f4971494d7671482f32382b784e736e3869322f36516c395162376534442b6b717a613073512f6c6a386b4679434b69434b494d69673455326478487556556f794936636c644c706b57564d69444c44386b437668716f666d69356935474f43573568694538474b42516348782b535a77394752627136576f6a4d75506d675856586b684561516156644d4b63455834342f4241756e456e504241794d5769794d3861496b30726d6750346f4d324a5130674d6e6b5934494562546e524e3052446c53526168474b426953454278726965435a67355956434278714f78474c6e383041444138767955594838553064565753745641573449784f6e44484e4b5331666d6e6a30347367452b706d50356f78415341567038465a3441666171414d3156424e757a38564e546b6c5153775146366330412b434a4f436d4861674f66536b59594a776347525a69324a514269395066326f6b643552416453664b7143506b6351695a55354956374368726f616f4135464871364e47514554322f6769654343434c55434d44786f7941705654744a5150463559726e6571595734675538794b33786a55634173587151593268786b4547346753476f4b44686d6846327254696d4c7a374542374252526e706c794e555043657452736d6f674c67566b673859345971616e374f4b6d46654b41506d505a30714d5350626b702b4b42734d65436d6b4442475054315a4d706a5242487939794868526c566c43344442424978416b79686b43526b794f6c715a5949476f4a3549495778474a51616c4543616769716167366539424158775531566235497836545253556b454c354a5967636b32484e53524146554377354a6e45556f374f614d705056424a55772f596d6f41306c5845636b774c4941447154444d5a4a75724e5667612f43675978624652307275575a4d61557743434d314d31432f424c714a6f6d2f6c39794151425a6968794e55586244334b577979435370584e7531474a355a6533425447736b754b42716774374f6a69503475436a5a7843414e4b6f4255756f4366395363454f39554e4e426b65534161524c42477051303663635563613151426e4148376c7a2f55613776614e78505931506975674d634b4c6d37372f77433732684663516736737561443159344b477547546f4f5256304448486b6c425938577752795077536a566755426b612b324b593956556f7161706937386b432b4c4e444871344936586f6667675a616345424e52324b4366465142757852714f676155546e2b394c347678346f6973695363455956366b41474444464c4b52522b4c7141444c4a416f4c5577544f2b434a69496971687052414931376b304433756c494368664242414b2b31464351413873464a413475697a307943415371635643434644314273536a7179514179644d7a644f5a2f4253723077533674644d45426b532f4a51762f414c76334a6154723764715a73554456784879536879477a54536b4268384572366142414e52475344503759706e656e4652744f4b416a46454566562b314b5750687a55624e415132587652596a7151464d554e577167795154574971534f7239714f4b4f6c772f42416a4146776f47505569514865716c44544e41424159767a375551434b4e7a5231484142446750656764674d4d554e4c3065695750585630427879514e45422b785159705936596b787a4b614d585145696a522f6369536553474a7a5a41676b657a494135497233706a4a79796c5a555a434c5379514d31466939564f6e62334b55596647574b3231413438566939556c2f346c776359392b53444c3656416a646b444157782f376c3278556d4a584639492f2b354c3532682f376c33636146414454464c6945374e326844536330456a4a3058414b5842526e6f5545425a4d6561556a4d4936577a5147644b4f6743314d55704b654f6b486767476c6a56546b66656b414c366c59654a6f6757744356427a545362424b31474b427055434663435565334244772b456f4348795130736135714535425375645541647a324b794a6955704468782b7842754b43436644424e674574426a677034715949444774415855714d456b615970327977514b4158314931376b41306c4b64726f47424148464b61496b3851695930514444776e324b4467464668696f554269356f4544307161534d5647714e4a77434343524147587a52787170476f4a7a5569586f4f386f4144394b6834496e4446793641443143435078524e5a61564648717a6f4a68375551656a71536b53694f475341496174505370676553593071315543755345585a796f523730544c7051526e385063684556556a306842696761504e44534f37356f6c6b42583845426a772b4344704f78503471494a6c5645384269704c4573674232494161427363464a5034676961346642516646424e58464556446c4c49694f4f474a57535071466b6e435968493075474a303177727a376767324232524746556763703349724c4641424a7343695877515049305537505a30437552544e4855636e51725846466e446f444a73516f2b716d444b753575504a3873544436354333546d36746b31436768664e416d754b4643484b6b5777346f4447744574794d4a536a4d314d58306e6736626c69736e3331754a6c53637450696c474a4d5166325a7336445870494438457a7658697144757265753341563877534d546c52766d36746d385153413744446d6745675866464d3374326f434c4455324b6b6d5065674c6a4a485534434563327853433941585049486930366d795a325147527a342f4a4e447036564864516a553551444770785569516a68386b44773767676a505571633149384d304455756763557856647533474a6c49426a4939584d34664a4d4b59425647374558504a2b765472376955463069474b6c5a464c454d45544a2b31414a4267787752424475614b616e554430515a3976742f747a4f636a726e4d67796c68685155484c33725365734f374f716257346a65746565433047636e73537a3364754d5933432f58344967457949375069364452724159496b71693175726439344d524b4f4d5a42694f436164324d5a78684b687548702b61427965425a5468474b716c65417565546a4e734f41352f67724e4f4c6345425a71635573374d64596d335542704847716335635575423745444236383043584c68512f425633626b6255444f5436596a36616c7330435737445854666b544b6a527945592b326176634b7137756264753135732f4251676972766832756e662f6277514f394d5573474e65436a6171354b752f6546694775517a4566664a76785157796f4b56717331367865757936627074786b4749416a387a6753744a6966666d6c747a6c706368692b422b6142624e6f6265456263504341414f35577543736c3366776849323469636a4878614947576c2b50354a2f757263764c6c44726a634f6d4a797a2f4a426f6b55492f70643144516173655846434f7155484961527848424241546d6a7065714e414d456c32356f6872494a41796a557432424138545667684b7556566b2f754673474d44473545794f6b6172636837667657794a643045663841546956586268437a426f4267612b2b70783571337730437a37712f3976704d672b71635966376b462b4966696a6a524159494e56415365394b4b466a6e6b697a426a376b42416c417742427277556f2f4e56336273624e75563665417851765872647474574a4969426d5367736473666370456f746d6f3749494a50554a6756584b344c496564493456346f306b2f42416b4c63494f77784a4a3754583234594b7836564471474e4b717539754261485647557635496d574859676555697a71635a425a4c573974336942434536303147334a7163537932794f6b4e484241414b5655776f4d46415878717176755162766b4e5852722f39524449484656484271457863354b45755541314f555763494e6b7949694b366b417755314973776f7149626d324c5833424c573231616a7751574345626274527a713576785266685243463255794b454168395279354e69694f534179494655666d707951714d4d6b423755465674393144637831327a52794f77684e5a75787644574d4b6a33554b43786b4745547a2f425148343470687a514c49385654757242767730617a4733396259794842386c653743767555446b49494d41536c6c31304f42397355587a554a636c41497845593642674d4f53676f71723134576a44566a636d4c66426e6638414a587578706767474b494443717958643343315079794a536b32706f524d7164334d46585762384e7842345a466944526a7a644264707a342b33344c4c754e75623034475575694574656e6a495956563851796a4943474f564f61414f4a4656566133416e657557674b32394c6e6a716458416951306c416635564467385655647a4733636a5a4f4d784b5565656e464558596d666b7656745747416638636b4667727951414d5648434a7764416774786754504f586937525438453547474c636c5462334d5a33626c706a2f54306a2f64462f6b72596a4a424249414e6d6a4b584a515261544b4354594946617461716d396176534c323768746a4d61596e76443572524845756855305156324e764778626a62747577667856375837537243444973735a3952732b4936764c64764e306e52372f7877357252432b44646c5a695043496c2b5266386b466c635369557367596a425454462b53416c2f327153636971686b596868677071712f424151496775686c544171714e2b4537737251724b44646e5655664a4746364e393946524574796359743875474b4379736363564e4955714b6535516c3350365543786845534d38354d2f64686a775248426b7a5055564b557561494769613971567a4a4544696f37494a3230645134715236517a6f4e6f6335437143474a376c56667333545733634d426e30785037666242543775324c4833424f6d456871427a727934386b3862685051596c6d31616a78346358514c597352735734575950302f71783969565a5542476e7655505452424e62562f4651486a33494550696a3453487a51426d434537556273644578512f682b314f6a62514b596b31526b3363683249524b41384f616869414d3147444a6a564150434634694e4c4677385a662f4576616d57533852626c727433633469667763495064436b4939696d44497744774463455348715543676958616f364c4d7a494f525241413242536c4f5a4146733043454231616356444a7578456a3349467065464249677054476d4c736d47443446456c41703975536b517949554c46322f6567476e334b4d4d6b3248662b4355484753413459716157777752466553455367414f61644c554b455670376b4145514d3663314765584a4d3376514e4278515453513378514939784b594d7864515564414b3861444a434571386b644b6d4753415242425a536f524a4179374548713261417970696d303565394b474a374561346a4e424238464a46436d4153345579514d774657556f52707952465179554f675a306f63706746475a4147504e6b57597555535649674d6753514241716e69785567546e676c456b44415a444a415637314e5a77436b43314544526f6b6633707345434b75674978584e3948673333412f2b66635853474c63317a5052712f63482f414f66632f4242314e4b496b56414744494d787155455379714b4a796753676b73464a5056304d4552774f4b43427767536f6f7a43685145417148466869675077545a5651514a644a443845573471423830455a6a7955774c6f6e676753324b4143495271394558346f414f4f534353726d6a58755562696c30767851527379692b524b6c636b6531424a467355554e4e5643676d48616f546b68495a6c45416d71416b766768324a557a6f43464d456f6b61416f75674a7167706b35525a69364346414552434c356c416879674f4b4255797169676a74676f55425246424855354b4d7941514654425446523045436a4b5949424153576f6f564545474334662f336862482f79354c6f726d5848507156766c616c3831306b427855716f6f6769696943434f6967794a5146425241464248554e5579484a415751436a714e785152526c4d564d4545554b6943426b464641676967525151525252464246464647514246424641464556454555515251423055455541525164524156454d5645425551554b41756f676967792b6f3132317a2b56507336326266386f53656f662f62584d756c507376384167742f7978515875696c5251514b4b4d6f6734636f765164367077485451713652634d71705235552f46424e4c686779476b6a4a53495a416d5569575141556b6553654131476d53674c644b554d42703936427943587056492b43595247415149343071676d707a305552683270776367717763554568484e4f42394951456a6e6d694a3659686b43314f487756682b435567776c682b3948476d446f42676e6a4934684179656941464b6f425372715a4a7848755359426b45384b67697872676a6b2f46436f4250464259525470537944554345364678547354536432474b43526a77554966414973786635493049657249412f77414550454f61444e7954456f434742624a44434e4d555248416c7149494c4d41324645767a7a52385172676c6b4b5564335145464359356f797167527138564542464f784e3461464c6770704a714d6b426350524d543349426f6e536c6c57754b42715a4c46366b444b64754d63544e6241636a525974374969566e534b36776733776e7035344b50716c54324b6d4553633145437369513541354976697048444a676742484a526a4c4442527a2b534c3671494445364d454e546f46786c5432716d4f434353716c384a5949502b70453078515269374b59564b477030346778354241496b6a46536c516a7031646967716751476c63436e426350376e51354975376e75514367545249784835715241596351704974336f454569372f4145706a707879553141437156394a6f67736730536c636b593976616c6849696a7177527a43425739796a45752b43426356494c706f6748326f6768593035705a6b7844436847614978344a69486f667951436b736c4d417968693963506242512b2f6d6756337777527151334e6c4d7531467450686169434d366b634843557579593430515454716f6f496c38584b474a314b6161307851516e3655544d48705a51687333556b4137484a415142776f67656e73434f726b6a4a6d6441724168766d70455a6f675067704f4a6c6767556836436f584e33332f33757a4934792f426455534c5678584b33376a65624d483955766233494f71545574782f464b35674f5255424a4a62696d50494943782b70534e4b445067672f7751307652304269425571414f486a6d67474e665a6c4453694351556f6345575964587336685076514358566b6a454f5743676f4f536a74574b414d634544306845454b6467514b787a444d6e455739733043353571617130514851486447524f574b54584c4a5274506a69676172383845477978554e61634b6f68777746454149497752343055446b6375435969694251784b47536d54714f554169576f6d4d6e72554a596759696973636a73514c70436a6477434c76795530456c6b42646b7458634369416b4b6c4d5a494a70634b537267673857646b4848315651545331536f6365394d59563549686b416234384531754645705054303565394e556e75514a384755385747434c5a4968744e6539416c41374a6d6171446f796c7751544534496557396345596c2f6367595563494951346f69656a444e546b4853346a4241334e5453672b584434703468793563494166626b70713435496c6e415369343151674c6b446b673253493534714136636663676b63386c6a3955422b30756e6950784157335564584a632f316468745a384b662b34494d2f70582f414e307764764b2f2b4e6439716331772f53762f414c75582f7742502f77434a647779616e6432494935436a4d67537852594555514b54714f584246314278436e4149446b6f512b4f485967334648454f636b43386838564e543155594e67794d4b6e676749706756474743556e4b74556134424151434f53416d424c42455366326f6c4663454459465159424b6548464e4161666567455552577642516e565371444d674a6b414b6f44717852384b416933567951536d4f53566d4c344257436e354a4a422b704259575a3049796441446a696c4854515a6f47384f4b6c445641427146456a686767567856544a4d373470573039794175653530326b4842414271383148306f455068705248586b50656a4b5846413473674d6979626b6c4a4c6476775542716745687755722b784d3446454b467967494c4952474a65715a793376785342694542777955594d6f43325349443151426e77524d71714573577a3549526b44326f4337593446454376596c314b52362b525a424f6e7871434e5553614d454b306b4f786b454c6d4c3845444b69674a4b5950675543636a696d45526a6d6d706d6c714f43416c7535523956454335624e48553243434e56736c4b49416c304a68414c77684b3149586151494f724b6a4c6d33664d326c727245622b334147724b516a32595362755855303634365a59476a63585745656e3261416d586c2f3841614d7047464f2f446c687951556267334c75357557394e795559526a303270366645395455643249436c6956377a4e744737516b5864555363576253375a737439376151756e7a486c47544e71684a71634f784a5059776e41566b44447779456a71726a56426a3346795552764f7154783061575068364d7543766c5a6c597532674a7a6c724d6850564a77656c384d417847544b34624b3249536751663667416c714c7533785673374d5a6d4d7059327a302b356b484c6d4465733374784b63684f4a75364e4d6d4564447454437256566b58763362566d5a6c6f466f5844706b52714a705530503755752b32706e35734c647534444d487779416753526965702b326c575775577a684f4d43354534523069556148396f3936444c757255684331626c634a2f725230792b7069437765745278566c732f623775566e555444792f4e367047544553616a75723437537a474d59782b6d586d383956616b707a746263726e6d53465444797a775a3372336f4f534c7372666b334c666e4858636a47567935344a4352627776542b48704330697a35766e794e79594d5a455230795a756b484c3866784b766a36645a365979315345434a51426b534936634748353969305232734c65756e6a4f7158793771494b396e634e7978626e4b736a475076495761314737616557314d626c6f6d55744a787a63526b48474c346a76572b3161466d4562634d49303430436f6c3666624a4d6f6d55524939555979496954325a50795a42694a6866756258513849536a64614d656c6730615577376a324a5a584a776a764c496b534c59456f6b79714e554878787858536a7462635a516e415674366f773541735077554f78746b335a456638414d424766634751596a41333979494763784479596c6849687a71497131566636624b576d596b544c5263755131477059476c56664778487a6466316164482b6b463155646d496765575445655a35302b4a7a397a7433494e5275526a34716171446d566a7733344a5a764a6c2f7743384c52754c4d4c384247646338364556444a62577a74325a47594d70546b4e4a6c634c3034646e7355484a3879514675374533704755342f314a6543516b57384c304844703731644d334e7864756a54634969644d44616b49694e41585055484e6377614c58483036793052716b59524d6445544b545259356532436535736f5475473545796849687047456d647550356f4d6b39786432336c337278724b314c56484c58476f2f335656567333593664715a6b3342636a716c6e6f30362f6e302f426453397459584978684955746d4d6f35316a67683555504d462f2f71434f6a2f5469677832725574374b394b6335784d5a6d3348544a6846686a5446336572717131657562775749544a694a5735546e70366452444448486e52624c7578743370475a4d675a654d526b514a4e537263715554336472626d495272485234444573596a426b464f7a6e49586231676b796a6230796a496d6f314232666c38696a442f414f2b502f774247502f764b7673575962654a454163586b5a467a493853565865326c7537633833714532303945694b4f2f346f4b765562747a546268462f366b6d4f696849414a6f354450787857576432397337563634424d51455036666d53456a4757427a50625664413753314f3335557a4b56645771557a714235484549773230444569547a31556c726b376a6879376856426a32304c777577414633545558664d6c45767a4855574c384d6c303861425a7265314667764355364136524f5a4d516632642f4a5837617a354e71454364576b4d36446c336245764e2b32422f70586a356b76395069482b72702b4b302f2f7477346553306639315779344c564b304a7a6a64774d5130652f46446337574f354966785272475553786a326471436933646e4c632b584f324164426b4a69546e534a414e345232706437726c637343324271315362566834537446726177735331764b557a54564d756450446b4f784e6373786e4b4d794f7148564835494d66707a64597566382b722b71547879622b4673466a6c666c474976577a646b38782f565067494d6d62532b4455384f4e5858576c5a747975433666474f6c2b5279504c35465551394d73524768356b44716a45797045697450596f4b625672376a6333346d637845655870694a737a784844354b7578666e754c4f32684b5265362b75514c534f6748353064644f4e714d626b7052786e7031647361425a627530743237417432347a4968574974796159356775506367473267626534753274524d424732327554732b72742b4e6667746f4770633231744c70463654536835676a474a7553656448636d703430484a644b50514e507a5163757874702b6639764b7471782f55686d2b7277672f79562b437574327a75626c34584a546a6f6c6f694953307430677654453971325174434d6a63692b7551416c334b7535744c6432526d35695a556c6f6b59366d342b7a6f4d4d62313763574c4d366d703877577a706c4c54527758464b4f514f4b53383074744f4d4a54503841556830335048423552705633346a466235374f33634559344348686c48704d657847477874614447736e6b4a536c4975535268587546454645596662377133626a4b63684f4d71536b546732442f466c5a36624b63724c794f6f36726778345350344b2b35616a4f35473458315131615432386c4c567146726f6a514f542f75716669677957376479314f6339724b4d684b58564357557343306867615a685a72736f5834324462427476644c675a487131563758727a34726f58746a626b5463426e417938586c794931632f7742754b6131744c554951694253423152376678787a7a5159375a6c6276334c4771556f2b58356745704f51616a456c56323964383761457079416c616b5a615a4e716254696678782b4b364232384e5a6e395a6a6f505a6970446132345367512b71334879343968623867676f325a6c47563233716b5243513036693538494f4b325569396163316e766251546a4c5164486d474a6e4a2b4466674756312f627875776c626c684c4671653243444c746762397a377151614e526148384a2b72746c2f77433159393566667a70774e325534654756756b494749375137665651384676743745515a70334d634a584a48446b2b484a512b6e57706d52366d6d356c41534967357a626d677a6135376d3762747a4a4554623832656d544f61426e475178533775334b336274774d39583965476b2f56454534506d52784f544c626532634c6769584d54476b5a524c45636e556a7362554978674d7043342b71706b4d795546454a6662376e796f796c355a74796e31794d716773376e6c6973586e474a7454676278315849784d352b43596e2f432f2b326758596e597436764e6b484f6b77376a697377394f745230683548793543554e5569644c594d4d50666b675331447a723936557079614a6a70694a554478442b3347716f73334c6c3057747153664d6a4f586d532f68743866356e69756e433147314b55342f56575863466e326c7037747a63546a6f4d394969446a70474a4c6354386b4539592f7744744c706a576e347062496d4e7966755738306a2b6c2b6e546d33506a6d7a5a4c56637377334d44626e345a592f4e4339746f337730384231524f59495163755a755870336d4630365a65584479354349444e6b346438533768714b36374d79387146337a446330617032724e4850456c7851634871567275374b457061675a774d6d31615a615837572f596a6332554a7a4539556f6d4930394d6d4a6a77507a516371345465326e575a6e54643052314871625542314d616b636663746d3674546959526a356b726351645562632b74386937676b642b5046586a5932764a6c5a41364a6e55574e58787837554a374f4e7a53387061346a534a677365382f6d6762597a4537564a47545349367153484b54316363316f724b71796a5a694174786853455a2b5a4c71724973635456366d7659745868376b474c5979694c47715259435632762b715377323778684f7a4b427666314a365a537555684d46384976513847416f75754e7443466f32674f6b366e422f6971566e487031714f6b6b7a6b59474d6f61704f7a5a416350696779544e32394f39533464456a4333355568474d576a773142796333656d43532f7562397137356d6e2b714c454e5459524f6f75547946634858537662474679526d386f796c34744d744f727448486e52474669496e35674664486c38656b494f66754a7973697859746d6477584e557053684c726b7a48456e4e3378776f457430337257337643516c41435676515a53367179446877536665634375675054375767576f76706a574c537245386b333255504b6c616d38347a385771524c2f6b67723345706a6432597866535264373846676c416e5a7a33486d543879426d59395642706b614e67656275756c61326349534677796c4f59776c4b547334522b30742b55624a70626c7166384131467967756478717067754a74446362626e634e35416a30616342503664586468774b3759414d6668376c534e7262386e79476541476c6a775156585a507534676c68356379325869697345424d62577a654679666d534d4976716364564347777a705264574f326a307a715a776a6f443850624e4437574168477933544168712f70775155576762473738754d70537479675a615a534d71784944682b525736504d4b713974784d6d35487869456f784a77442f745a4e5a745374776a42333067427a7951636a594437537a44644444716a65374e636d6c54394f66497132334f49326a4755687175546a2f5472493963697737654f53364e757a627451386d5068392b4c763731534e685a46754e6f504551366f6d4c36676659356f4d746d6334472f45617848793951463075516134467a536e4846562b584b4676625859546e72754733475231616e453476675841624c3331572b477a6844556571526e48524a354f2f3766334a76745947467544644e6f786c477636517764426d746732623979784352593278636a356b7454476f7a7232716e624756756473585463684d2b4c5764554a6e6b78494845594e67756a3974626c4d334378315230536668697162587039753259735a4e4877526c4a7848732f626b6777506633496e64674c687561706144475552416153514b61716a6934717456643175626b4a6d63593234322b6d456d724e7954547370386c6439686231796d44496171796a4752455a632b584e6d644863624d587036336c43546164554a615352774b446e3372382f4c7441764f554e7870664f576e55427771746e70737a666a4b2f4d764b6369384d6f4e54543238654a354b32477a74434d4952485462496c4874442f6d6356624378434e79567946444c78634333346f4d46305854767a354f6b66306f2b4d452f5763474951745854622b344634694e774e4b5534687778693057484a734b6b6e4d72566532734c397a7a535a524f6e53385a474e4b384d5552733749684f424469666a3146355337546a326345474862796e6233466d49463043656f5338347671614c754b6c6a376c575a376939476432417547344a53454a526e4551476b7342704d71696e5534585274374b33436362684d70584965457a6b53613039714a5a374733714d6e6c45534c796a475a4553547948484d686b4850765870323731396870316979446379747534663873754a58596862305245594f514269396539413765447a6b512f6d41435435675562357175337478616e4167394559614978784c2f736f416758665754657476436c7933317737522b42774b79526e4f7a744c6d382f367477612b7766535039492b4c727154414d534a5a7050746f69324c5169384e4f6e757751632b7a43394339623069344939586d2b624953484974714c462b46466e74334e7a64744463516a634e3252314136342b577a6e7030367347354f3636746a5a787447686e4a734e637951427948357571787362596b5a514d774866514a7930766a6832354369444e4378472f7564774a475169446238456d726f46616675536258637a6c613232366d53662b6e64357554454539684139363663624d4c63357a6a6a5054713771594c4a756473493759624f7a416b536f357768584575587a634d36436e7a4c6b37586e6b6b43356568702f6b314144333438335775657237324179387566592b714c55566c7978626e61386d512f7067414e6e54424331736f776c35726d556d4931536b356169446c5774634e6c446447637a63476d75722b4a6d4977393956314e37492f623357466445384f784e396e614e6e375a7636596250684a38566649475136667a515a6835663276582f78614b384e4c4c4a354175377135463543476933344a474c34346b462f6972342b6d327a3039586c342b5871364f4f48446c68795771466d4d6268756656494148752f656735554c307a5a73504b522f72364865704131596e336535614a482f7935434a4f6e79485a2f774349354c524c5a5754624e6c716174574e524c467763554c657968614a6d486b534e4a6c4b565751632b46756475785a766935634d3547317131534a42456d444e682b4f6272734d71507437586c78745a52306d502b6e4253785a6c624d35544c6d636e3552474148746d673532343838337478354e527074612f77425456385050484875563138786a745958747165693230774935784749506337382b61335273434d3558497538394f722f54677137747362654d355762637047645445476a6e46334e487a515972393263787562385a485447333563474e485a796531364f744e3634625a32374f486e462b66544c48696d326d7a6a74397647784d4f4e4f6d584e38666d6848302b334853786b6442315131534a30396944463563376c72635854636d44626e6530744d7347647659354b387a6c75627475314b52414e727a5a615a61584e41314b73486646616f375341747a686c634d6a4c2f5869714e7a74343659474d4a796c44706a4b334a704155346b50676779584e567262376835794d6f3359434a4d7167644835392b6132334a792b37736747684631787862536b326d304537647946365054636b54704a6373654a343066465832746c627479684d3670536737475574525163794d4a6e6166632b5a507a59367044714f6c6f794e434d4d73367273546e7274475459782f426337612b6c784e714d622b6f64556a4b4772705055534841786f314d4f4b364d6f6778596a4769446a37585750742f755738765248792b416d314e584e76442b6133473549627a5339504a4a5a3839597956386474626e612b334965327769783465326167323049543877755a43506c3669613663652f745163794e756364745a7652755438776d324364546a714c4e704e4d2b433157344862376f51457053684f325a45536b5a6455534f4a7a664261507462636255624c644d544676394a634933374175533879482f4a706c455350503979432f6736424e614a6256767934787475346949687a6d32615a33777751514671356f31554a624641444d5a494a32714f3942696f50636c793969674d426b6f4b755644483366696a49414942544e654973782f6f33774d424c3851766352726a67363855496630373466433458376b4874375a2f70676677684d5a59737137526533442b554b7a536758784d706d6f4278556172696e464248376b5077544846676c77352f4e41584e416a467331414b7553564d516756364f6f4a5a5a6f396941726e524244376b3147516b55475a4243546c7a55485547464d6b38572b6c4c6f4151544848464749646b476f654b5553624a413368646c4d7355727433707355454744636c4d314d636c4a566f554549634e78554554686b68704e457a754f4b43553979424f6c4d4759756f51436747724a534942435542735169514d45456343716d6b6e73514161524359697445457a6f6f61394b4a356f6776314d67564349725839364c61685446467330416b43375a4b456f466d6f69447078514146735553784251424a6f6d4e54326f41515a6841686b7848444a535244664a4249302f4e51756170577a716e4e634543366d6f6f69774a597159554b4167682b61356e70422f2b352f2b76632f42644e3848584e39497833502f414e65614470414e58354975364772686768714e57514578346f56434a62456f4f445641556f69584b5a516353674571304b4f46454a523156557a644165786b6561464d6c42537078514375436d43596c36464b61386b444232356f5541716f376a6e2b4b6d43434f426769344a6f55746355373845414a6f46477168676d4b435664416a4e4242326f454469696a3570504467692b52514f417753434c594973374b4535494a70525177554a496f6768785a51683856474f53685153574c494176696d42514979515146516e4e416f6d587551484251756f696743425537636b614949696736674b41366c43686855715a6f494b4961516f4579435551504252444e4268756876554c5a7a4e75512b4b36433531382f2b645a3577754c6f6f4945457a49416f4967616f714d67436a5a6f71494343676936553449436f6f364c6f46555255514473526452514949794b4369434b4b4b494969366969414b496f49436f6f6f6769694b566b45555251515246525242464755554b41414b497149416f696f6769696969434d6f6f6f677a656f662f62334f78507443396d48386f566671414a32317744394b74326f617a4166777851577149714941707a55555a4277584c305348703731624f513155645641384d416762436e7756656741385554416a7165714c56726b67554553726b4531476f674974697252673578434373506869706f457a693261505a7855635a596f41376b63555741447a2b435a7373536c4243426e45694d314438556b514d6b5366306c4243577267672f44676e5a776870423663304559646843424a666b6d5939364f6b494663416f6b46714945756d64753941437866682b534d6d6b46483745593171674d585a4441504570514f3947687771674f7476636f354f484254537a496968614e45437831457678544e55567878524c6163304a78446f4744534446442b457142457a4473676d6a50426b7a56726b6c314846454f525241726a38304f6b50696d6441314e50336f44774b594e71633570644c5261536b6953674d6a68785549474a78554643376f593431514d31467a2f5564506d626343727a666867743847773756673952614d724146503669446f776a52736a78344a5a564447694d6e4c4530545a49456b477856684f72464b4d4b6f435178515368526267703468544149732f5638554562366a34556f6c546b6a38314467364351716f5a565565677056514d656f49497a56412f4e484a786969554b786f67416754564349776646485531636b6458314d35515353556e4e4e314e5876524e6178514c4c676949616578426d474b5a337851435853692f547953672b3552776153644178714b6f5259344b6168715578376b45637755455165394851545448342b33465457394467674f6c75527956637134703955636e644c4756534f5341353858544150346b483070645446304270334b5359564b4d5a754477514a2b6b2f4242496b6f315061794747434a443952515349796c374d6f657273514970375a4a346c676758544c4e5177655446535468466763385545306a4a4578344a634f616152376a6767554e4576795131414250713030782f4e4c484242506235726e377a70337530375a4c6f74706a714f5035726d62754c2b6f62542b575344716365314363633043586c6963536d626a6879515139506569634b4a5a4455655364386b4343644b6f3873457771367247465278514d41674348524e6345497539454231556f68315547536d6871342f7454506b67456a564376596a6d68552b3941615a5942456d7455476f6f5342306c4173755645564761524255314449494747464b714d5178342f4a516e4d596f476c5269674a726c52516341674347706955525241496345616548444e5453314f53476b466e3979415277306f67355a4b524239794c4e7a51426d346c4d577835704b55644d43394d554378786457594d6c7a5a546e6d676771355545514b49354d6963656142534859356f3434346c4c704449434a64417a4f4f6e39696b584c6f65486d6933792b61436169437a31554966696c6b3142785478352f6d677248456f6d7455544875526a2b704243337467683475534e475530303549424956526f7a5a4b5070702b3152386b4541614c69696a39386c4735464767442b7851436a4a6f6b78426a2b35536d48306c41644b414352775a504d7547795376536d4f4b6b71346f49422b6c5a5056442f414f4a6366494c5944316471782b71743974644746422f376767796569743977575a2f4b482f754b37305a42736e58413949502f414a4a662f74662f414272304750636742686b564a6c4b5477787a54555a424d30756b75794a446f746d55416b2b4f436d706c496c793451726b676152624651554a55356b7058416f67494e4b6f6b3675314b595056454867674f415a494a5a7073692b536e694f70424864336f6f61596673526f46414851414836676a713434495245516870705833494a707a644d4b6e38456f7852414b41756168515956554a456c48346c414338383143324b6742787056536d4f61426757706b6b4d7a3375696366697058464147344f6d6f5648445577516f375a4947646a564b4f49527877724a414f7942384b484e4a3246514769674b4143654a7739736c44557677544f6c6667674c43726c544a6b70416a7a5668642f6b675847544b4e787a51497252467967624e6a56426a67454a455a4b50714135346f4a46305451317751726769386d514148676a34616f456e6a6d6f7847644544507078534156706769584c6578545a36636b45795164416a53704f69416c6d71684d68337a525947673975354b7a3434494779624e42744b4575534951534c6b55775545584e554d4f585970326f476671624254547879564f35483943622f6f6c38697546707378323971566d334b336461332f56306d4d5267354d7343506e3855486f6b754b7a587478634e7a79624d596b786a716c4b524c5677484631582f4148457447526942487a504b755a744c4c75647665673363733354536f5668756230783832576c34774d597834796d637669485268637532376b625638442b6f4f6d554354685669376539427448536c7246592f753566617a76734e5564662f414b535170506358546638417437516834504d36714e31455a592f42427572687751797173456655704379444b49387733504a59476d74327862444e50617633547550743730596a6f4e7834456c3667634f314274455778556f427857446658426275574a5366787977446e7748494f6d32592b366b4e314c7374782f534d442f714f664442427074364c7655445469457a784663317a3437755a733270776846376b35513034414e712f4a7a525048636271637032644d4e63514471314853787779643048514647537353465474647839785a46316d647752697842494b7a65705430527448454337626b7772522f656736446e484e5130776f7564596b64374d336a34625a6c433345354559796b4f50415a4375614d4e374f646d334d522f717a6e35656e684948713977425162753152334c6a4655323978723831782f786b786a2f74425755372b3654593052695466695455737a414838554852495973694669472b6c4558664f4145724c506f774c68777a2b354a352b34684f33433849447a43634a456b4d43572f6238454852774b5755546771372b3174626c764d694a4159505659665464725a4542634673616f7975567a7049696e7951644a347369517935783364364d345276526949334a61644d5a504f4a784435653553397635786e50793941387568387954475246533379664d6f4f694c6279516b4d7a6b6b735868656a4763634a44563346637230575a3239713143645958413848796c6e48335648656736394f304f364f6f51447936654b354f7a766d31747251746a564f63707869435748696b54334d727a7562686a6432393441544675557870646a48445067554730454561346c784b766136646e4c354c6c62666358624671784b55592b56495734554e51346f63472f4a6456394a5a41786977354a475076584e7462713374393375497a4a3166303849796b50414f414b577a753763623235766e77694e6f344545734a5a454242314e4a43685745626d2f624d44656a48526349694e4d71784a7742634e79635a6f66655870584c6b624d596e79793267796163755979484a386553446541396376775266425a76754a4863655252764c46783836796238466d6c7635364352474a6c352f6b733755646e644230733074525449724c5a334578644e6d3947494f6a7a424b4a634d374677633152393766466f587843506c544d524561756f43556d63355642774743446f6c3334736a4b754f4b7a37344437613850344a2f2b3072464831437964727065542b582f3235343665786b48556c456c487041344c445a7558596265794c514231516a31534c5269305237796376696b50714d785a6c4d78427557357867514a504575526833484e4230644c594b636c6b6a754c7775697a6445527145744f682f705a77584139345773676e745147504a4a47634364494e5258546d735871762f414e72496337662f414c3471326431373037545270623150327638414c3855476e6d453065716d504e63505a5774704f7a626a4f77535349764c79354d2f46325a7561366c76636d354f374568764c5076365155463444636b4e575157434f2b75796a747949417976413064674744383166747238377335327273514a5739506771434a436e7951616950656948474b78584a483732336c2f546e322b4b4b6664376e79414b44564b516a485557446e467a774450676730506d654b68634c42446636504d46375354626a356e3949754a522f4e776b74622b5a755168633874726c47747931474a5a32504844455a6f4f6c31497652314d4b724236734732307532332f414f38494e6e6d524d3941505533686572636578507062784c42643345343370323478695447313567346e714962736f6a4c66447a4c5167486a63414d6963745868393542434457786b65434c56443572466333306842394c6b33504b74443954466e4a392f75566c712f63686338712b41356a726a4b4f426245567a775161394e5839714b4f79356350554c7874517679684879356142494f6458555766686a6b74587146647465703945766b673141444a49777a64635565514262386d314b31505648724d4a514754756333774134726f3337742f5731754d52467646636b32726b47516168514f457a5a59667358505071516c5a7454694271752b474d793051324c6e685476567530335572387057353664554e4e5953654a456e77507a4344564b4a54526a526c6d33635a7a7379685a704d6a704b77326f626258474673477865427a4445746948776b2f615548556a4638564a45504545687a34597669334469796f74336a4f64304e53456f6a2f3067724650632b624c6133357441487a4a48674f6c42312b624d68726171354739757a3347316c4f354672637077306a47576e554b6e7434425837577a74664d4274325a5149776c4b32592f4e42304e49344f68476353644431345a743742595a622b5832493354445764505456764579766a65666379746152344979315a6d707032494e476b4e7853584a7867486d526c6973742b4a4f37734e77752f494a39394d5762626b41744b48544c6e49424270596d6f775578654b776e63333558353262496830434a3679635a65336371342b6f335a576f376b774174456747765655732b444d2b575934494f694b754369587a77555a71726e6d45647a75726b4c6f6533616a445447574479657043446f6d71476e4d59726d37652f747241757a7354653348714d493145574657376543654f37765130547577416863496a306c7a457977656a65374242756c4c494a686773647263536e43394a682f546c4f507569365437713750795243494a753239665561436b667a772b4b44632f4e47697a62533963753634546949334953306e545556442f6973573633583232376c4f596472475666714f6551356f4f7149354950584659415a625331397a4e7058435965624c4c536164504b497734346c5844652f2b524f7952305242362f7743494d53506449664642714e456c32374748564d734f6548765757462b2f6373516e4745586d4e526c4b5452694455506e77575865376a7a746e643167435675634953306d6c4a524c6a6b673635444936534b724c62334276334a433042356361612b4a3563686e7a6f7441666d675a754f49437231786b54474a42492b48356436792b6f554e682f2b394835464c65336e6c783346794944326a486c716f4d6666524276374d46493143796663334c64324675394749387a566f306e4178717863444c4e56626a66584e767175536a487978394f72724d6549793773575164434b4970676b756543513546636e625876757256726151654d664c695a6e776d512f5448747a504242316a4d6174446a557a733953457a536d58437a43364275525a6a474c65552b72736b41335a795751622b2b4c647663474564457941305a645479774e61647a6f4f70715a48587157537a66764339354638527731776c44436c43432b6465396170796145706341674e49307955706a5263654f3332383974473975694e567a714e79574c6d6f59354e6b334261374f35494e71486a6a4d4543356d38616a3331397944552b6c456e6746676a366b5a57357a41446955664b4836684d7445393676334537385a4e626a44534234726b73547748356f4e4f484d714f73483330356979624d61337458694f4442386b39766553694c336e427057514a4852554548687a6f31554735754743714e3245584f714f6b554c3854386c6a6a75747a43567358495241755362706b584643574e4b6c55627939727362674d427075516a77646a4446423132727752594873564738732b665a6e622f564578372b4b354f353345747862737a74314e7541334575305a642f58376b48626f564d467a5a58523539336379724331626a482f6431663841354b654f347657394a334559786a6349694e4a4c784a714879354f4d30473879393551642f637348336c2b3547354b3347445770536a314669644942627457797a656a63747775436b5a78456d37612b39425a516a73526a5846637a66337862334669374b6769626d416331687746556232387437692f59467079307059786b507050454e2b4b446f366a6b69587a58504f2b6c43784f6367504f685079744f524a49623367757237643655373179314c433249562f6d422f4a42706b644b575a4244796f4d585850742b6f546e6273796a474a4e307a697a30476e5658345656673356772b6462757747754564515a394a426473657971445647634a474931447272477549354a797a30397977577477387474535038415574795038765445734f56617044767238625233416a4177675a4358556452455a4e5432397944704169506570496e4c3969535a506c6b686d306c553741443761305034496f4e55716a6d686a324c6d3366555a457a38735130323369524b576d55694d5770335678566c376641796a62736d413151467a56644f6b4d6342784a2b53446352524138734652744e31397862316335524c5a4563382b533045745549415471716933376b434d416f644c6f433270434930492b4c4a47564b4941537071717948492b775249617143546243724c78734a42747a2f504f69396c496357586a62566264386e487a4a65354237477a4e376350354970355366465637657471423552566941792b61484a4855366d544f67417835346f4f2f4246325269435541417a556c5146437548464752626c37666b676c43675548474b633449495a49424853477038454d735545415a307a49443470537a7367615234714130517a7051715249785154506b693446564d58797170544e42476642515647724d4b44546d6a48436941415068385573614a6f394e4370323936434f324f4b41495a6b786c6d4d456f6944564151376479566e5445436a6f6158786f674a44564a55306a7849686c426933424242484d4b4e705376586b6d7267675876554164674b4a6a677968344946446469496f4855646b487252412b425375357852487a7a5141596b6355447535722b3542336f67517736616f6e6967426b33617071637150375a6f4d31446d6750306f776b426a696c4c48354967634d4545344c6b2b6a7931584e304f4636587a4b3673413635586f344f7664662f414670664e423171354b474a79526f554246424852717a35714550676f4d5834494a534e6331504633714d525446484c3845414b6d413471427869703467676d6e336f736757314f7045684157415142792f636f5642487671674b4434386b53784367464545316356436f6778485967674a4b596c56677069676734346f68544b754b6e5967426b785262676c6b4131464d41675946487353696d507552314d676b6d51636d71684a7952425151466c44565168714651525a415168494171453845633041315552706b6c434f43414d6d436a6f61754b434645494b4369416b4f6f654155436943494f2f6167584e4555424a6f6f536f432b436a75676e4e5441494d5553673539332f384169466f662f4c6e2b43364b3574366e71466f3553747a4875585351544251686c47555a42454e4b6a496f4a696f6f6f67685178544a554552354b597149496f6f6f45414b4b4b69414b4b4b494367696f676969696a6f4967696f67435a414b49436767696769434b69434b4b4949436f6f6f6769696969434d6f6f696743696969416f4b4652426d33314e76507354624f577178412f77684c766a2f414f50632f6c4b625a2f384142622f6c69677655555251425231464548454d692f4255364342525758426b6b51413449314e516c426f35474b4c484846424e5031505571435931427338536d594f334a4c4a32706c3730425a6b49784a777a5563696e454b474a307345416a7a4b6156734136754151307941566b4e4c3151414d5138554a41786f6f49676d71457175395544365877787a536d4f65534c4e673749644d637967665454454a61524c4a68514f687059366a69676a4e544e45746a3765336567593463314d657841507752643671486d6a716f786f6758436f7a3975434f4970524d546852545449346f45456550734659634b39365563464b3442417749717968644b43423270704f5136434754344b434a6b5751616c45394d42676755615456544367376b53354459636c4e4a6c326f4951543230544346584f43456347523049466c672b59526978384b446a446d6a716a37443969416b444a43484e467a6a6c32706d4f4a514b4352697358714551626c682f3148336e4262745078794b7862797433627848366e2b4344644973644d736b4447694e5137356f534e48514674585368706344356f2b4d634644556155437a694f535956484d70585963564948486e68775148773971686f4169534d454351374642425432795559616b51656c6b43614f3155456b4b31545a7059645055704279667851485578553857434d755a536b675a49444c436c564979506368676a534a5a42437a75633843694a4b524248745642794b6653676a795a6c42586d6a4144444e53704341615854417351516871694134716c4e5279514d532f746b6845683142576a7067773655413031515964794f4c3655524769416b705764414271496c6b455054514b594f536d3141347059686e664d49424668556f344b6455655951776f6330423142755951384e5559305531665155437a4c6f7830763366465176686d557869316662324b4263616c5048555834705970744c346f4935434772446755474a7155524e6a5241513857584d3346642f74704842702f4a6449744352497a77584f334d6e395232304f455a542b422f4a42307441636c41416d7231566e50696b493979414d3954324b474c35496d5741526f50445641757347682b47614a6933426c484237314b302f42424a484c41714f3965434c366878484e4159306f364354352b77554746564352785264736d4b435a636b6744313570795846654b474f47434146346c6b41526d6a4a734561595a73674c7878503755756a344a704f3749456b4e39534168694847535673343571435075544941574654326f794f73763765394c7161714969783046414b444846442b4b6959696f345a6f48713936426f43725a4b4d70476b74494865675134356f41486b584c6330576571455970744969474b43564a356f413571616d393668346e4241324f62715a4f63454979465877434a4948556741536e4a30645431554f4c48755145594f55416a4c70775245585a6b4334645152666a514961516664376c42484c4e415341314543575263426b644f6e416f494a4450484e437547435847754243593051534d6451716a346b70524855616f4361552b616838546771524c4669686767654a53344b5969694970314846414d536f5a6355305a6c32525a366f4659384f61796570617674726d4743316e426c6c39524a47336e772f6167352f706c4e7750384136482f78727679723272672b6b6a54757a4468612f77446a586f4e5449464c68453177516b546b6954522f62354942457358436b53796257324753584369413657524d6d4c6e6b686d6f676245633047474951384964444446416330574f534845714167684165784169694a775548656757674c424d4a505544324b596d6a7051575153556e44454d6f4878555a3670485a413459552b435669455157555a366841596875355165334a4c4b542b39475655424c46674b4a5a39534a476b554344384d55424139794868357074597851504e4247614c354b59486b564258676f6631415a494934485970713149784356736b42307652517764415070772f616d6442484271684c69675133616d694f4e6149426f6f794a3661684130375644544846414e566149676b563449346c5275626f4a695855656a414a644446477447514273796a6970683271476c4a494a6b68423673706b694f4177515175354155356d69424c52594b595955514f37756c2f695238507478556369684b43584154515a4b4550557579456d415144774e6168424d436f7746634b6f7657716c4d454248486d70466a67686a514b457567533543556f546868716a4b493731682b3133527344625338754930693371655571446b772b64463073554863592b3253444a4f78657433664e74434d74555247635a46764467584435466c526332306257307565644943557a4b354b51773159687578673264463079336941375658636843366571494f6d765548623971444861325570375479355575792f713676343331664f695957623179376275583949467439496a5635476a345544594c59436d776f67356b396e75504b755749364e45745a6a4a792f56566947353476334c5443775275504f707038735235754a50376c70484a51676a77346f4f5a4c5a546a43556a4b4d5a433862304366445841483374386b4e76636e5066504c533474665164514479474a59567a58536c415849365a42787778537773323763644e7352694f45597345465632775a7a737a47454a4579374445684c44626d7a6631326d3875666a682f462b6f5a50783936315271473470676365487751632b7a734c6b4c646d424d64567563706e685856685448715677747a7458703370595345427a6f2f35712b4a65675447494855616f4d4f336a653235686248564755376b707972534a4a49373668583771784b2b4c656c686f755175567a4563566651304345716f4d3039764b46377a3744417970646a49734a415a34654966454c4e743745626d3875584c63745549564179467959447433437661756d517853573755626357746752483849594230475837652f43647a526f4d4c6831456e474a5a6a5450436c516a623263345332784f6b2b5643555a6438514b65376b746d4f4f614c6753515962757a316a6336693062756c75576d4f66657378753362312b774a2b5753386a2f41457a712b6b317744443372724d456c71336273673649694c2f7069412f75514f546d73746a613349574a5770536155764d714d745a4c634b686157414c4a7a5242794c58703179506c50433141327a45796c46395577486572447459752f454e573657796e62757a6e626a626e475a3166314d596e5049754d386c765a2b34714f535541683067552f3230437732646732306a7462683668395179494c676a73572f5670527161494f5a6139507532374e71494d664f74536c4966704f6f6c78672b4234597133375737636e6375334e496d625a74786a456c6f765770376553327543474b44734b5651593537536372466d793431577a613166364f374e614e744f356346795577773179454d6e674b416e766675567353394d6c487136444e59732b586576584a34544d472f30784171713562435679562f57656d39474d597455686e7238614c6135666769354a77516338324e787544623837534957794a6e5449764b5177796f506571393373373234314351746c36777553704b4150594b746c31446d75744b69513854376b474f56693762766937616166526f6b4a30664e3372386c575054726d6a78422f50383434696a753362374f756c4c42676845674d36444c4c62536c75504f6d656e797a6235316b3635312b5679337434626379684d43634978306c355330794758455a314f43375a4c716d467131435776544857667145613535346f47334e7333624d3759786c4751482b6f4b76524932504b7a306165396d39714b34414245783159494f6263325578354941747a4675476d554c6e684a59427851384d783855592b6e7a46756473614f753547353030694730386932422f59756e584c464c2b61444e64746d56364637365969635478366d773979666133626b37555a3367317768794f33347139785867674f6561446e4862626935622b326d596d3371443348366941516347783576334c524b784933626b364e4b32496336616a2b4b3045414b6330474862773364713143304932756949692f6d53792f3070764a76573731795672535933644c6d5476436a595a76334c62306d696e4d34494d466e5a58496a627551664a316132664f4a464b4c52433062642b374d74706d4c656e6a307638416d7441596452396770346a7a4b4448754c64377a6f3372496849694d6f45546b52693341464c6573587478414365675849536a4b4f4d6f6e6c4a774b56577345684d32656144474e7162734a7775516862457870486c312b4c44334a647474626b4a6a5662744152786e4845396c4133764b326850526b4766617a7558624d626c3041547a694b646e772b4b795432392b35622b32756d4a687148395635617941587762476d4c7375697a73366c5234554762795a66644739545435656a6d2b6f6c5a7250707479335a75773141794d745673344d493167394d6a693346644c464677315547436579506b57726343504d746d4d7766704d68692f613539365957727372766e336d6a706759776a45766a69585959746774687067564a565046426847796e39704378545848525772644d676543306275776239713561675135456f68384b71305352455355484f75324e7a6668354e7a5247485343596d557055344f4133626b6d763741334c3872686a43596c70413879706733414d51587878433330797167386b474350703034324c4d656b334c4f5571786b3768766a776f553733624d586a6274786c4b555142427a307655794c527744355535725863765274423546683764367a533951736e703166412f6b673062694570774d59534d446c495a4e5659376c692f75574634516845536a4d79695353644e616350655672745834584b516b443763465a4b576b56515a4a57747862757a6c6130474e786a3159786f786f42583368565132424d4e7643656d5562516c727a42654c556f74356c727852422f5669673538396c656a594e67474a455a524e6f7966415342306d687777422b5331516c756a49613432322b6f786c496c755853506d72794e5743576b6662356f4f574e6a65466a37546f3067394d745264684a384770376471327873796a755a586a6759526a7a634f666b744c6b6458464c494f4b6c426c3356693763765772316b78506c3633456952346d624148677137747263626d3259543873566752706c49306a4a793942334c655136684c4269677a3264764b4734753369326d356f30742f432f35354c4d4e68632b7847314247734e32655056773563463054537637555345464675354d6d344a426f5249454f4a6f482b4e465665733349587650734e3144544f4d71417467585973635673417a4f4b674e435367776a6153752b624c634e2f5669496159565942383656727744496552754c6d6933654d52433259794d6f347a30345a4d4f4a397933426754714e4643655037304743573176514e794e76535958535a56665544494d614368776f6e7462616476795a53492f70322f4c6c582b58436e4a6243526c6969514d55476178624e7535647553777553444e79694256443761583342756c6a624e7679327a665565544e5661574f536841777a515934624f56754679782f304a44704439555878485a777a79564a3246795732466f79486d36695a53343633457376306c683242644835706d5a793945474c64374d335a514d59786e47414d664c75556a566d4f427735685a7a366450794c31676142356b34796949306942307547626c337271435459346c416e53474b44464b316332526e50627359474d70614f457877595a35696e61744a6a4b647069644d7a466a4b4f5249792f4258564e52676b354839364447624f34752b554c2b6743334c573853586b5143426b414f4a7853376a597a755176774450644d544633794552576e4a6443664a535856373047652f74357a7657726f5a726576552f4d4e37636c7a376e7056796471646f4333716b5a487a70654d765868547442505975757a653145326f53696753596b515734664659767370655262455746363241495479456d722f704f42572f6c5630546a6967795273585465463659412f706d32576b2f555a41384d506a7953445a7a2b33743764773844624a34644a79703775616f76657357376379424856455537316d6e3633636e4c2b6c62595a616b4854763270777638413349665447334d4e69586f6144755639715535776a35674479694e5948484d4c6c7739584950384155683378577133366e7435734e54482b494d794262566e636261506b573945344477475a6b434277495976323051762b6e542b32687437636d6e44546f6c6b347834354572634a7875447052486567787a3250396130596b4346734456486a706652796f53556c2f597a6c666c634d626477534551504d726f62476a4d526e69463043432f6168417345485032327975577874784b51506c6139545a3667655876566c7a5a476374787149456230595269324949422f4e625934307955504e42796a6475584c6d33747a4e7339542f30356169656b395849652f74566c3759335a327230596b506375526e462b41302f6b7474757a6267357477414f5a41566b515255565148697347783250322f6d6132496b656e6c43704139354b3644444159705751633362656e4747316c59757931476231475755666341465a354f347653674c2b6e54416958535354496a4467777a7a57374442523843677857746f62647538437a335a536c482f55414b2b376d6e32336d57546232386744434e6f61704439516f472b4b31756f52544a426d7632446376577274414c5a6e71373473464c746b33627471555453456a4c3378495769673743706b78516377326864333271456e6a45527554475055486a487662354b363559753237307231725352636a45536a4a7751597679726a68526134573451384941666852796e38504e427a374f786e626a5a44782f70536d5a6339577244332f7454376930595376587045434537656e2f627157316751795764754e324c54416b7a4871446f4d466a62796b4e72634746753278475a31526a6837717570396e634f306e5970716c723742716b54773936364a47594f434f4951567a6938544159594c4a746f62713147466f6932524541654b57412f307261654a4b593078516332577a6e616e505247334f4d7a7165344b784a7879714f4748424739733565594c31735150546f6c43355155646943786268775a6267484c346f305a426c683574727934615941534d74656b64494134633359632b48445870417753734d7969435065676b6f5564526b63334b4853375a6f4665726f6b4f6d6c6a55494d6350696749366b736365534d654a556f36434d537646324966307233485663397667766150303078586937456d7458676631534b44325667745a673336592f4c465841764a5a72422f70322f3542386c6648466856424e5238504e51342f676f5253696770332b324b435577526c38304347716a72515351713642633078555a692b534a78514c3455535145324f43414f4b4161347150394b4144464f78514a38796949754b4e5251567077346f397051445155644c6f486b696543414d3954687852493039695771636e546967414e464133656f4d4b3570576271514e5571484470514d6d2f4a42326f413166623549476b3342516b59385648634943687167627856465648376b48495171674a495a54566c38305766715131503249496159594b416a50425444464751456734515353414246585245386b4f52346f497a6a6d6f437a6e46536d487555414a785146423355716943674430595a4b4f4255345a716a66627533733752753353774270786b63674f613842366a367265337335534d69494843416c3067666a322f6767372f71482b5536546f326b645166787977376877376663754e643964333938504b356f6a2f44302f4556584b4d324c6a424638786d673077334e325272636b66357047727136787639787471573770694f47507a646c6b446e732b4874373044315a346f4f2f7350386a334e75582f414a4246794a384c36516665507939324b37666f45786368754c674247713949746d76435469426a514833727265682b736e30387a6a50716849392f622b6144337659677a4546437a654632496d4d4a5964685667706967574e616f6c794f47535541794f723470794851456f48476945697877555a41596c314d6c4779514951456c6c4549344f69357a514442516355516c64415871677a6f34344b596f46416f34544f5451684357484a456875784141485441484641394b4d533641452b394b325471436c455257705151316f6951342f46526d71693155454347706c414b73796a75676e504a454b644e51564751474e4572755642544a4845494146436f3342456c304555624e436f52644249714f434f4b58385555453035424d67437067676d4e557a63454370715152367369674b71494a694565784b374a6b414c464642314764427a373748665742776a632f426442632f63427439596c2f446343364b4350785579555551525245705a42415646484f61504e41475555555a4246436f6f676d4b6a315a52414943464d454d5645444b4a555545555552356f496755564545515552515242454b494a676f6f67674b696969417055536869674b69696751525252524246416f6f67696a4b496f416f6f69677937372f414f337564685437514479594e2b6d4b54666a2f414d61352f4c4a4e7371324c5a2f676a386b46364b434b4149714b494f4672656b5171714b32666953454d57434244774362543130526273716c3073615949475969754a556b4737457359796a564e5241444147694d5979782f5967594134736e4459566441766872696d773750696b464a633039572f424142696948636e4a314258716b794549695a7166326f446f476147726970703159596f366e78514756513453796b345a5131596c4f573979415471514938613530524c4f7753767071464a684249747035464d777a53446d4b464f4b56514b4778434d4f71694e546a38454e4f6c42412f77424b61487a556b51596f617a45557a657143435142646b5348526656584a4c714c636b42414f424e4f6147724e2b536c576f56484c7367495a4d2b6e424236384f4b4d484e4d6b416e704f4b6b6449726d6d476c6d4c494163554541316379694a467570417966425334344343434f70517558426f6954714661303979674a444f674d6f456b46595055495063322b52452f6b7432465a4c6e373644337245542f455851644b51624a457834344a4a79636151452f4d56514b4a6165584c6d6d49516169567952547451544170676544494d44547637314163596f484c67767753453438455454456674554c4d67686970416e3845486c37596f6b555a30414a5159346f6e44546a6d6a7a346f414f4a514d6d712f636f4d4b3563455978344944726f32536d4137304349674b5a747851482b62676f4b634554696d5a777a494641316c41736366434642776675525a7755455a71555a4c37304e4a4f43596b346f4a4757595a6b5a5034676f4f4b44416a694f4342694b4a486676526f326c5477756749346e46444654566d445248566d67445a6a4e4d3453314b6c616756356f4a4e7851315a4d4f67305374774a64414450324341346f733853536b414f6165504a414467365a6769536c45583755416b4445366b32724e446b4d6c496343674f576141636469684a6571676952556f493158584d76456e3154624166396f2f4b53366d5237467a6234456656647577723555762f6a51644d6b534444424e6f3031795169446b697a6c6b46594e584b734761426e77534e78785a414a50346b337345386e4b51766c69676d6b6f784c68346c6c493856424a676745412b5075516c5371634376596f3331484a41754f6553685a5152794f4b6253637343676e747855646b7348436375364155554c5555455838534245545149494d516848466b3069374e69685456326f464c2b324b6152596f44464851585144776e6b79625552414e516c5352494e556f7731484641516f37676c45416a73555a33775a42487277524454716c4171485177514f7a56537872686d684941644b5a754278514942567a2b784e55684e705963306f4278514e696c6347687872334d6d666b67484251414630306744546b6f4335593936424c345949455a57446a6d6a7249465252494271726c2b61417944345a49794447716b514f43426275514f2b515359304b67343549396943436754446e6c2b4b55696967773658514179637568703936614d533945587951416c756b6533376b54706c326346426a524a69655761437833476e4a515262765378594f703034346f432f4776344c46366e482f774161656d70702f7743364b316b555754316a2b6e745a6e68702f397751592f53366232626639764c2b646434542b6f7267656b416664502f38414a2f38416a5865446e6e2b4b4279645357574b6a6c6e7743456645364236694a536765394f5256676c4a456539417844463845706674516373355279636f447a51356c47544475555939794150714c497671356f5038554d4b4949347078524d654f6142725170704153727951495470384b5a794b2b39434d514b4a7352306f46314846306173694363326646524173736b612f425341626b694a65394243444956396969314b2f6b6c706d69316452797951516f516f34523549436f51466b7246547334496d6d4151485656415330315241616967464f6e46424b783746496d745644384167546d31454141474b4934635558344b554164414e4a77554c67616b424c414b4d674a69446b67374e696f6179354245344474514e55664e56784563526b724d6d53793651364347514c4b66676a6a334a584b416b686b532f4644535063705869674554716f532f37457a3863456f2b52544d6747706870795545535570694d516d5041356f49517a6f383042544e3144536941474c706c415979722b4345576a6a6d674d6f305a51426b644251355378514236496c76636c4941354a67574663554664366569457035694a50755174334a53735276454455594358657a6f626d514e7134522b6d5834724659325550746f755a756263542f7953703038482b434454744e33473543337259584c6b504d496273666c385854793356726a6850793844347a675062765850726132746a646161326846786e704930792f5075516e41326470626c4c4558495872762b3535633666676736687678312b552f553276754877354b6948714e693459745048444848495078354b6d33656a64335975577938504a6b484742366867714a41663236303347312f774338494e747a314862323553684f624748693653576673487877546a66574a533043594c2b4867546b48776634716e62772f386a63754d37662f414c466b6a4578395073695047334c6858574548534e2b454a7a4a6c5345524b512f534b316f4b757957472b73546b4c635a41794c3661596a6b634333615669334c6d6536624b31482f346c6675417832342f6a6a33445155462b397579323169563246533863655a41513331343765786375775a77465836714832306f3854622f384164465a2f55746a626a74726b6f4762676639795a345a505642747662793174354e634c506b41536663485065705065576264754e3255686f6b576a4c49352f67566d334e3878334c6168613652706c6f31536e5877672f6869737471456a5a735249723537793938386b485573376d317548387556592b4b6869655643744a2b5335307a3565386e646e344932485064496e324331476374486d51476f36645552672f416436437664583557764c616f755849774c3843442b4b4e7a65574c66524b5665776c753167514f396c6a76627147376e5946767843344a79483651496c33705374506b705a7632396e637651766d73356d5561654f4a6941414f4c59494e74322f6273516a4b636d4576446d2f5941354b6b4e78596e447a5249434138524f58627a354c6d2b58397659322f6e536c62755242486d4d34692b556e6632474b6b39653432786e484b3747526e62673275496271617274336969446f3239315a76435267615144796f5157787749644333763976636b49776b356c6877505957596e6b734d544339356c324e3033434c636f755967426a584943764c465644635175324e767434456d36504b4c616178307338757873446d394547306236467135656a656c3454485347636761515468566e4f4a57794453694c6b533450444e5a647150367534504755652f6f436e70524a326c725669416774326c365637584b62644679554f545253626665412b616276686864387241345562346c5a746e733433504f6c4979667a626e686e4b4e4e58414655526752597643494d744e3756786b7730636361494f756230524d577a53636753427845566e2f7557336f424e3952624358787051397172686668754e31616e627245527556792b6c5a44452f3279555035715a2f386851645739754c566b694d354d54566d63747870674f61466a635133485644716a783431492f425a6a6568743931636c654c436362596849345564773759316475394c366464747773784270726e636a482f644967664e427033642f77416b577a46757135434665456a564465587a59454e474d376b496c2f306b706655625a30526e4547586c334c647954597344576e5971622b34743775567133594f732b5a435a5959526a692f4473516162752f774276626b524f5453695749306b746e6b4b443463315a506357374d42636e4a684c444e2f6455724a5a44486338356e456677425a6263764c6a744c74774e626a62306b3436544b495a2b414f434471324c7476634458624c6a32786355565a76534737466b4d336c6d35333667506b71396a4d586274363941663035614936734249683350785a383256643635437a75784f353078386f78646e2b73464276753359576f2b5a636b42486971374f367337694a6c6249366646716f5232677379786279354463573458624a364c647747636f6a5670365456694b7334794b6f755766754c5634326270757a4d4e4f444135734741632f6d6736646a64324c737446756279787a446a694878484d4b376c69755674664c334632334c7a6a636e4455306449476d6a56614962765854745859376945627475735a59632f6567703332346c74374572734148476e486e49443855622b3874325a364c68717a73784a626a516646632f6437794f37736553786a666c4b4938723668706b4477415a6737713833376531335679643836597a6a447935355564782b4c5a6f4e6b3978616a623838793650315a495133567136444b4a3850696f784863574b35596759576f58706872636238726d6c7644417578626b3772534c6b4e78754a58724e595274474d706a416c33414846712f4a426662395232397951416b2b727734353550672f4c46473776374671656d63325043705a2b4a4748657978482f774379735234477a335643532f4f4e6d6430786b5958443946794f714e796d587950784344717975784677512b6f6a56455a4e3873306b747a626a716c4f54615a434575524c4e387856593558525a755762317765584356755565555a644a45533247464f7855546b5a32377859395636327a384f6a696736566e643237307445433562557a48446a555648596b6e366a74726269636742476b735770566e415a2b57506570644c3775314c2b47352f7744437558637677742b6e7a32307a2f584161554d33314f2f59654f486567376b2b6b4535676479546258664f73517546684b51692f7564575866424a714d43756673742f59473374323958554952424663666367305874395a745430546b424c766f2f4667514f396b392f63323973414c6b714867355075414e46796a44524f396275336a62317a6b64476b4858453843596b6d6c4747436535443758635231585a57346d3347455a6d494c7469435a43687a79516461334f4d34696343385468324969676f736d316c61745168616a496b7a6c4978654c637a6b47346a344a3978755074394f734879792b71542b4867344752343549466e75435a3334544f694675455a6173534e555a456e6d7a4a353337647133476335654c776e54575863412f754646676c4c7a5937792f4374755676544358466f6c3239716f5874634a57627573323465567031365859304f594c6476636731626e65784675336474584f6d567933475573744c31642f324d723462323150583166386454306d6734733379584f4e6d4968436475527543642b3349794d577137634277784331364e572b4468337379663841334242664b2f623151693465666735747737767954446332524755745452746c706b35594832397935566931644e715a6c343975304966364a4f572f6d6a7043734d70576470724d524b5679666d533152635245704f354838496273516237573874586457677552314d58423978414c4b7548714f337545516a4f7332616b6d6667374d2f4a33354c44614d726d366c4979387a2b684c723036523468687855334e775764685a6e4959477a302b347379446f377a64523274737a5a3559526a7839754b346e3332366d4e55356a2b5733466d377a564a65757976544e79356a6c794842562b5554456a69674f7145793578356d7147765547464f394c4b7863316b737750464331594d697839696774684d4176416e56784e46304e74367142532b4f516e694f395a4274634e4873566a6e45327569595a4236794574516436636c6c743773322f4e6a666f6258552f47427750346471772b6e627a793565564d394277354c5a76374d6274797a496a47576d584178724a6a784467494868757a6274527662706f47654563772b41346b2f74567364335a6c626c65636149592f74444f4f785a3939495774786176542f77434f4f754f724b4d704d7850795757352f35454e316374446f6e47496a2f414279694b6b6641506d7944717a757768706a4c7854704835716966714f3246445041365a644f65466155372b355a726d3674376d35747a614a6b306937503039426f65664a4c6f5032573442784a766669673646376457374c655a4c48776a453977414a57652f7534797447646965453763536544796a543348324b704e794f3333454c31326b446130786b63424c55376537337373786c3575337647443133415935347772583855485675627933614d6754574564553645734f4e42375971795735674a526954575a365278594f734f31732b564b37747231664d6557732f5744386d77616e494b6a5a546165712f516261506c50784a78502b30523936446f7933746d4e6e376b792f7044366d5046734d63566a762b725169644e6f616a784e41363549755338754e7566686a71496a6a39524c397a3979457073616f4e5a33753575467a636a482b574e5069566f68366a65674e4d744a356b4e386c79546331456d4f48747754655a704459386967394244314f7a704572683875756b6957522f4b6957473631376d4d59536532625a6b3246645947596463474165596d664641695665533254755864396563455733747974342b4b546a70346748694b6a3568323746364636506d514c7863736679566539334d724d5943327a7a6e474771574166696c323235747a6a41534769586738766759696f377669707535776a626137445662647035734f4c4d537a74324944614f34686338756254695234346a537848454f66676964375938775739593150707a5a2b44737a386e57546154742b64474f306d5a576d6c356d4a6a4673474a7750495a63466876585a587475657352496b387245596548712b6f2f46364f6737463366324c56777775533668346f67534a59353048376b383931616a62383755504c4f42342b3344465537642f75372f5a61373653574b332f4145397674376b67664c74334a3675565a4148336f4f6e5a3346726355684b6f715178445a56646d5332393959755438754d6e6d586168597469785a6a334c464b3548633372336b5a326449497058717737383156744247364c56756436577132596e796a4141784d63515769344754756736567a66574c637445704d5872697a38436342384562323573324a4345354e496a5541784c396a412b37344c6d78755173324c75336d4435784e7a706173395a4c45652f484a616476626c446457785045574e4a6c7a31525162625632462b4771314a78377632724e4b35654e2b646d7959434d59785056457938542f7844676836613854652f774472542b55566c7652322f7742334d3767665262302b4c6d2b486367313762656172647956387869626370516c4955695735392f4e632f646573655a41777365483670792b4c42632b3763387963374d502f414c653265694a35732b4e6363466e6e4a366355426c4d524452772b535158394c53435879726b7643434172503766635a364242504f4c386566616e463744386170543666656b487753584e68666831447151613974757674376d71502b714f52374f66426567322f71566d2b5243456d6e774949397a6750334f7649613532664743467174584443634445394f754d76642b783048706a366a743754786e4b7361536f61487547445a344b7935754c56754975536b42453448484867325063737532693433422f564d2f2b774b69334b4e69473175335131754d474d736f6b694c502b61432f6462324a3231323574353955514f346e4b6f2f63744e72653262747777747a424c4f4b5a446757596a73584a7645586f6279554334506c742f74415853334d662f41436476794e79762b6c413874335a3873586458544936515761704c4d72447549786b625a49456f7831456677317a77584d4f313832395062482f6a6a356c794d7376366b6165346d667755737a755332393364537469563258546f6c2f42466a3350714c5a6f4e396e6557647830516b3873574c6a76446976636b2f7565324644637144704a5973474c564c4d4d4d3167747a6c633346672b5a35735272384d47694f6735712b4141326c2b4f5a4e2f77435a5164545550713450376c7a5933393165742f6357394969527168626c467959354f587850597430515a5778453036636531632b7876346265774c4e317864684854355938556d6f4770562f636759372f4150725131764345725772526e7163636e64737531624c57367479742b614a44522b7268786667736c737a6e765947593079386d76416451634c4c4f3149517641416b52766955687841306b2b334a42314c57367337676b5779375671476f637744383256374575467a504f6875647a626e624f714e73544d354d5759696739396535644333646a63674a77714a436c5077515a4962347773544e30447a625a30536a484f5830742f4e526c5a4734593362634c737636686954704742495a2b78767857653774346e6532354559784a504456436b5365594569797476412f64326952394e7a2f345546747266324e77357479654947715279413975394c4466574c6a6d4576434e526f58624d687855646a726a4463577a36594c4d5431743459342b4a323933465851335673336f334c7337683075327145514f6f4d66434548596c7572656d45337050534948695467775a4465626b324c5771506936514e57446b7335354c692b6439726373776d436264767a4a57354375702f432b5930676c6457653774334c65754138324a704b4f4a417a36574c747751516663776e487a444735412b49786a6f4d666958483571346269334b4d357630327a49533561636663756443566f58725932524a69542f556848555943506634532b444e77514e324e75317564764b6c795572706a4673524c413079346e336f4e4e33657874583765715457353235535a73533857357579305762384c34313269347a354563767a5753775036396d6d466e3365464462335932726c387a4c4133524876494151644b5163555567426d697a4d54376c4178514a6e524552342b78554d636a676855316a334949346271716a55356f434e57527748426b45414b49786f67354f5655335967584572786b474d4c777945706539653065557142654b746b67332b47713467396e592f77434f3250345971774e42565769397541616a425767494a486b672f4c425251445157434145763730784758443349526939546d6f3145414a314e6d55786b6c6a6c705249727951415552484530544b4e7779514c47716b754f4b497143686f4a786f676e785542417155306b756b4242427954596a676f34775367344943376f444646686b6f3451544e6b546852515270524b41355148444149615743684446526d51506d68496734716158714d5570464b346f4447754f436770564b4b63776d785145486955616f615755504c46424a6452644538416c72554248424246425642754951426441614f555332534772495a714867674a6b324f487478524a4141644c4a2f65736e714f344f30323179396759784f6e74792b4b4479582b5462767a372f6c674e3566547a64636933747033414e416f66696d32396e7a53387a346935664874585a684132777a554874386b484f6a3656636c77397662425050307135487767452b3146324c526b66474d63766276577946756749376b486d6836566547494c7248637379737a3875634735534b396b4c64612f6971647a735933346e586a6b2f464235412f44347632716f6e792f4156747637656471556f444c323978437936514b35384548722f7744462f55444f333972644e525742355a6a757935486b76547653712b62656c587a74397a627535526c462b4447685830664e6767494c6a67564364496f70714a435949415864547452353542426755424341476f633061414b434c346f494d614b49534146537170377178476b7078667451586a4644424a472f626e534d77663556626d675455377145636663694f4f53476c424b756855466b6646676f4339426b6756336f6e634a4a30624e4d41676d6c30496f6b4d6849356f437a6d714271554d56546633646e6255765849512f6d6b4155476a42513071466748724779755546364438354e38317374336f58514a776b4344687a51506935556a51636c41613055656a46414d4d453053673552787167486837314438554e52646b6345422b4b42725246516b46425067687052636b6345516743694f436743414238314f655349785251414b4d70676936414b5a736f51686a69676a706d346f43685251594e782f39335a374a726575667558472b3235794975664a644142424646464f53434b4b494f67685255664a526b41484a46314645415552555a6b42775178526444424246436f364b434b4b494f674b436a714949696f67676a714b424d6743696969434b4b4b4941696f6f6769434b4341714b4b49496f6f6f6769696969434d6f6f6f67694b4369445076662f74376e386b6b646d663646762b57507955336e2f42632f6c6b6a7447386d476e445345463669696943494f696f6734556a38766d67546b6a4c736f6b6d30584951545453715178657373457a756165334e4e5159464244454e7a4b6a45386b4e58464539744545774349686d4b3151672f68536878466878514f375935714d33634f7844554b664e48737a3549435a6436556e4e4155714557316535414765694c496e395073796869572b53435550656f472b4b6d6e565467703855427859483243673670644b47706a584e4349784f53426d345a7053786f557763394e454d4d55426f4f3130776b4841347052463652375552454530515432434e6345482b6c43744133735544696d4953456b7073696a51345949456f4f626f78693534664a4d4739366b67376c366f4a47684b4269496e673659494573454130394e5532696d6f6c6b586f6c44346f486a68784b484e43504350376c4a6e563249474b6a4f58516f4b44344934307751467a7757486661546673762f452f7557316a376c6733784d4c316b5248694b4465526d41507854446936584145444e544842424f515a456b4d6f2f59674a4675415148687753486c51496a67555942424f5239364a4c6365354c6a5651795a6867674c676f6d464b344d707165756147724c346f4349746c56423336654357523030667452665477644130634b346f61686d4b494d445250534a514b32716e42467832496b44486967412b417751526d4e45306a58547843447657536a386667676b47436d47436a50564155356f4248506b69706b33765177354947695777716734554a41656771695a6355456d41516c2b616336537a554b6a463351416c366f456766796f6e71726b6f526d6758534735496962496e4673564469674f724a41317078536e394b4a4937304549627354444371616b6b6a4f4d634545494235464b447048636e4a6f7851624e4249764632526a58484a524b426d63654341734d506969636550344a546d6e314138796767677558756f662f7662626e2f355a2b55313144506a526375636e395673452f3841624d762f4148494f70474d7375436a566f68426c416367675953352f424b485975692b53684f414e45457777557131564e4f4c56514a6f337432494830354643495a7a524c3145593549694c426b42315a38614959317a4349595634714f5269676e79533455555045385532714c63554130736f4742553056525941554b4151716453616e636c442b4653527751545478554a627051366e4c3144647941693955424244674a677a70544544747937455839754341684453413259513141344a68692b6143452f7046554e525a454e6b70707a514268376675524a4a484245734f6c4471425148436b696746472b4e464761756642424479555a6936674b4f4d6d51426e4b6a7552712b4349427849354951416a6e676742414e5852683076384549784a356c44462b574449474474564c4935633077436b6f356a46417a354a4364566330773667355546655341484269794c686d5569355a32523165354249786f686e564846434566704b41786646475179415659425a307850424164515a5349535078784b61676353775145534f4f535550676d59476f4f4355314b427756693956492b30756532592f466177613134724836732f326c7a47756e2f3341494d7670555038417a4b66396766384175586548785a634830302f2b59522f38722f346c33535469674f6a7551384e51614b56697053513449415a7452456453672b614a66773855454a434557434a785a5156646b41704b694949435750347034686967417a2f636d4c597061344f34512b53434838564455317839714b496d4c79664e4142513663555739753154485046412b354153365670476a7036444654416f4a6748663936534a594d6f51394163464d5479514d487843676241344941313746473159346f412b57614f733449786a49463377516c554e7a514635436d53676a5371674a4645413578514751593855477964536f636c4677394d454559314b684150765564716f796c376b414a5944696847476b386b5351525251426a326f4a71617646414768694f355174675648656943617539314f334a4633554e616f4943483756446a384570637555776b2b4b425333755467704744354c4a366a366a4459327463382f44486966624e426275647a61326b6464365941397665764f62332f4b43656e61775a76726e6a33443833584233572f75623234626c30755468484963766274575877346f4f6a6439623363386270505a54354932765874356149506d61674439526463775067635564495a423643332f6c462b4e5a434c484c322b613733702f72566e663944365a66706c6c793539713843413261496b6263745563636b48314873525a73367268656965732f632f38416a33662b5836542b72396f2b4b37777148474951415046436a6f6b5a385568366b4475636c42494442414e67546968556f4731424b432b47434d5938454542616a46545335726b68636b5941795068475059736b50556255324a31526a4c43556f536a4576683159634546753632336e7447556a6f7a69414f707134384f4b764d6d7852424f6c423336636b45636f6d6f635653766f52377149434b4f4f35415846566276696479647069444152667666343056326b665437424148784874564139434e443071644e454246657075784752634a632b43684a5a34346f47485668676743543152566372397546794d446a50562f366356504f694c766c524c7941315370672f48386b4275516a6469597a4478492b43655a41777853674f456634596f434e557531426e36516a5873514e4b6f4447495a6b53444b6f51714b4a5a7a30784d7066546a376b416c44584355416153422b4e454c56767972636254767041694d734133344a49582f4d38756341385a6a56712f5347635056316345413030547a4434346f4f5346584363706a71426a56753775346f4c4a41684444425145424a4f3945536a43574d6a7069334b714377446a563041446e564a35735263466f316d784e4d687a37536a626c4f51655564487a2b484a416c36467934587433504c622b474a2b64666242437a746264694d41784f68324d73586c6965393150507473356b414f3157573730626e68494a375546674761446154374d6c4a2b723243534e3645726b726366464454712f31666d794331686963555245596f4467674f4a51456b4b455a7851596e6945774e5751414130344950587555664d397171733366754c63626a4d4a42304673674a596c3353776a473345516a534d51414279435966773449686b4571554f6b64697173377133636e4f3345395550456a433743345a52784d43783757647663554434654b6f5a51633057506171647275667559433641514a61716468623845463851796d72337054456b3078536939413344612b6f41532f306e39714377456c52794f78557776526e636c626a3944616a322b3363726a68564141466b75374b563879686375453279617759436e4238572b504e613366717755416b5043674a72696f5341575570376b6f7a41486567666d4855304e563075736a46526e514c70675a693433557a5237437a2f41435467417555734a64496f782f5363516933436851456c38423846443072506633634c4e7a796d6b5a734a644d544a685868324932647843382b6773596e71456e44646f4b433465394d7a6c44557137313379726337682b6b4756454668636a464141677638414641536f4363305a484e414f78637231613635747734764c33436e7858576171382f66506d37307a796959782f7742754b42397674504d2f716c58456161454c58666b4f776341735677502b3141513561714f674f6c746a565559717753444e7851484e777237746d4e36476b6833565170584d6669726f7a3153417145484375574474376e6c796f437537734a6d65336963614e376c6e39587476434e7a4d4b6a3037634333614d476e4c716c34596d514861794474354e785163454d557471636238504d6a55537a3976594b776d4d5367455334516c557071476878536a394b437539435a6a30584e42624b4c3037304e747478596959676d524a4d3547574a4a7a2f4a5747354732776c695470484e506f34494b7064514d5157344867754c765969325274675469626c79583670486975374b35706432594265534e795635355378754835346534494e466d795a56616e755453326c65724e6465573246754d644e4b64717a53366967786661526670517437436e5649397931793152777a54774a4869514a61324e7545644e566a336c6f3759366f63614c71326958592b464a764c506d5744786a5844446b676259586866384145486e6270712f6d2f642b476136594e46776653706558663044366f4f33597578647577323844636e5349787078594948425264526d6f4641774e665a6b424d67437137304a58496b526c6f6c6b52583570774e4f4e66624a4846426c73625879357975546b5a7a6e306d574441634146704842567776786c636e6159764178722f4d48396e54366a5641377378516c495a355a4954503152524743414f3955445054485763716f796f4858503959633757516957655559397851656545357a61354c2f414a4c682b4a572b7a73593259746952562b6172324674397a6742455237577958527576416d4d616842566f4d5256536e763730784b414759514d4b594b3378594b6b466c62453071676f75576f7963476f584875572f4c763644344a65486b7651454754454c6d6572323947695568395748424231765372347657524752724470376542576d396275584131715a684c39576b4834466358306e633274724f517555314d7a5665574144635375316133734c70304e4b456d66544f4c5038416d6747313277322b71526b5a546d64557048386877576a4641524172785564793253416b67316444412f696778716f4d474f4a515134684d52526b4457544964524e666367496a524b4f53707537324671353554534d6d314e43426c54755432723976634f5950536b6f73784278714367746942686769376471474f4f4b424137304149315043574246564978686267496a415963682b536432706d6c654a787951417a30466c78765550555a546546733659356e6a6b7958315066536b4e467244346e7358476e4c55395759494846364e645037306775673077564e79524144736c45786e5832396e51616f546d4b505448713535717978755a32376f75577a3144686765355a487271786f69532f554f3542363359656f773367302f574d596e327174786e77586868636c47516e45365a4442656a3950395638372b6e65706339775164657676564e79324a3431306e554f31576b50685656307877346f4731435143614836516c65726b344935746a6d36414d374a79456a6e444a54745147585452516a4d71536b314f3554476d43413431534832344a347348644b4764417a4f7647514477763841457a756667765a41736172786b54586367635a4642374b77663655442f4446575039575353774774516950306a354a3379515166414b50715142594f416a7034596f4a466852553339784778457a6d634f594354666232477a7436356c697645372f6666654f5a616b486633582b5452736c6f5774663841712f65755a632f7933636a77323467642f77435964634355364e77707a56556763304870375038416c31324a2f72576f6b667755586532487265323376544136542b6d532b64672b3950616e3563684f4a71672b706f56505a3856356630762f41434f424174376d54553852586468366c743772434e324a4a2f694344586a514a68774a536b76584c696d4a4178644170692f4e47687777514a7855656a42415543584b503163307457515145756a555539794a6f484342784f61434f4165785354664651424c326f484d386b43434b66464d4f6c4a4b754b42746235496d69563350465537766632747044586449412b50755158676b42384b706761636c35652f3841355a5a77674a637166745751663554664d364d3341785a42374d47695166426564682f6b383950566137347956632f3871692f54475464794430376a48696a45727a396a2f4970534a4a74544d517531744e3562335931323865654b43344e6e6b6759746855715a3047436e4d6f4359315a634c2f4a376d6e616932502b704f4d543243767a4158655a714c7a6e2b577866625265725478375155486e6468467455327850775853424d787a584e68636a74624d584653506637594b794871576e78577933356479447132572b6c626f6c7567562b487456594e6a754c653738424c6a455a2f6b744a6e4779524b6374504f584a427169574c697634497471464b742b3732376c6a2f757530686863642b33386b59372b7863724362443356515976566470726a35677848694f4650324c7a6c2b4767757a4c32306f476354484930586c6431594175547466554749344873396d37454747464b4c366a626e7269434d77766d4174616a6f2b7152302f4a66564e494645456b686b2b434c45556a6d6955454646414b31555a6856656139632f794f4f3342746261732f716c6b4548543954395a73656e783669397a4b4b3868757638683365366c51364938492f6d7550637547394c584d7554696b3153516268636c75442f556d542f717a5655724f6d674c6d717a4f58546937494d65434336316375575430534d657772716254317a646251342b5a4467545769777776526b4f73554b726361586242423754612f355074377a4337475544324f46326264364e324f75334a77563832736a554470397677586f503865333866504e71644e5170775165714b5a36386c4759736963436748446767394b2f6b6f426a3742413449435a454c6e2b706572626630364c5843387a68626a55392f4476376c69396339663841736835466d74386a7445487a356e4d44333550346535636c646e726d544b527a4e536531423166556638693357384a6a452b56622f54412f4d346e6e6c7958494231397155416a3278555a69354b43647136577839597637474f6746342f534a566273346357584f302b35416f5058322f77444c6f694945375a6b637a67507858573258722b303354524574456a394d716648354c3579532b4350687751665765785146366865572f77416439644e7959326536596b30747a34746b66772f4665716f676a6345476969597147706242414245414a734d55472b4b6744346f4743575534572f4551427a584e3956395a742b6e6876466379677647623731532f36675875536150365167395a652f79477843526862716565437275657058357838794d77422f42462f6d764632353441696936343956743277494145305164772b6f3372493136746641474c4c567450584c647761623054446e6946354f2f767650625144464e43525a36487451652b684f4e794f714242435a6c346d787672753336374d69412f686c675636583033315747384767306e6e464230453243685151464241736967352b364437376248674c76795853584e33512f3833626e2f414f702f3756306b417955555543434941715934496c42435645485449416f696c4342675851555a5242464864525242455647514b43496f42456f41696f3669434b494b494969676f79416f6f4b49496f6f6f67696a4b4b4941696f67674b4b6969414b4b4b49496f366969434b4b4b49496f4645554647382f344a2f7741705337454e743766386f54376e2f696c544970646c2f7741454f78426f55555551425252464277524c6a6a69683467546a6a324a6e4f487452427967527749345652505039794d68495648755131466e34664e424b51464b6f524f5977344968526e636535415a79417738565563364839364558504e415349424a51485347636f5242774f4b4d675065696553424245703366356f423853695a49496353796739796d45527852596f44496d674e456b6f6a4a3354737945634f415144444438305366636f326646423541634544503841554d55446a576e4c69506b6f66626d6a4846414a784a384e554e4c4a6a4a7768456345445a2b3145544f7246436f63444643556b425968536b736163464b5244346f6a713763554367474a786f69776432556c495a5a6f645164412b724f4b47444e6768475231557a7834497538575074376b4262426b4a67774c537a52623655786b78346f46416170554d6377687063755064676e315a3855434534493878576f5264796a515a34494a453679566939524c334c4c59366c7359477659734f397065735248366e51626953527a5237614943545058735169354c6f474c437149476f4d437135394b63434f6e5767426a6e37464755646674375553363655545a612b4b41674b4f6c4a315534496e2b46424834494770716a326f304b426342673361696550746b6f79464d434b49446339796a354a632b724a4e456b592f745152394e476f6a4632726d6c6648676f512b4341784f65536244424c6a676a326f415871464761675549393668344641773849644177426b2f4645506b704c704e663249435067557353706b6f34777a50755145794936564448696f7849716c30315949476b4b3651556135344a5a48434f614f6f745771412b4b6f524a5a4a47714d75724242496e6a77524a64695650434f617266686b675941593549697448637145696d726b707177356f4677375530637a77525a314d4f6c41756167424e453246666d6743314545425448566a6d6b314530657642456a54544a424a41366d584b765262315862766a3563762f41496c314d657063322f38412f774155737847417446762f4146494f6e4354686969574b726e646859447a49697542366c363659533876626e44453565337336443045527077566f66785a6c6650356570376b6e554c6b76393076774b757465756275795131782f35716f50636e6e696f4f5338357466386e69513136423148394e56323970757257366a72737a42515879544f776f6765484654776f474a616e7345725052455537796a6a58326441417a6667674453716a5552694e51514b376330496b4e2b784e6a33386b756f6a734251504b544a59415a4b6653364d692f496f4961386b41354b4f42664e515341504a415770524138633831415969705077526b4e54356f4a4c4a514d4b6e4e4a71314667695a63636b42634e5149436d4b443043416e567345446b6f7566636b6a496355327267675945424b3579376d532b5978664e4b38687a434333484432434a49456771544f4c317737457a3665434379453471615455425536314e656c4263412b415a516342346c584f394331435679354c54474e536558746776492b6f66354c65766b7773663037664c47586533795165757533725671576d647945442b6e5541666d73312f31546137613372316168674e4a426473714c3536535a4679613853686967372b362f77416f334d70663047747837484b7a6e2f4a642f6a35762f706a2b533541464543554873646a2f414a56433930627761442f334944356970393375586f4453496c47735348664968664d517655663474763841554a624b5a2f69742f6950626d67394b4f6c534f7150596a7165694c3543766367426b796b6631496768514f7942524c4d315042454f66623570744842414d65584a41733566554d5173767150714e725977655a476f34527a506477357137646271473074797533693050636577632b487858674e35755a6232374b3750456e7048415a494e32352f774167335635774a61596e394e506a69755863334679344f71556a326c335662566448776f4c62473676574a363763694478425a642f5966355864747448646a7a496672776b50774b387977376b44584149507131692f4463786a64745331516c6d4552516e4e313839394939566e734c6f47762b6d6646453465334e652b7333726535674c6c6f7641356f4c49395065696367674b64696a745869674a4247474b45574e564a68713571455551527757346f6961684977516f67684c736f2b536a56526b4b6376795141454b61667071366a44366b615a6f44716f456b6e4a354a7a68795368417874356e44354b456c3656437278494b61676c306f4a696c77365578692b4863674d65434131434f6b397945714775476179587656396c597064757848495650772f46427364426833726d577658396c656c704677676e395557667679646448557864413750544e4173456459666c6d6b7069676173714246365552497956623855446b4846416a4a51454d666b6f57727051416f677564517078524e5547635651526d35716158785262676c496b657842415163455a46716f6e476a6f6d705a42496b6e73534f446d6f53774f536d42514141766a33727758724871423332343166394f4e49566f334876782b43396a367a7566743970636c6d526f6a32796f7641644d677a2f74514b787553312b7a4954426c4c736f75335932556f576a4e75716248736a2b3350755674763053636f3669514d2b645548426943593465485032644a6f364e5277587072507045684578504d6533747a574b586f312b33485470647669376f4f4f415246365670324b45754e4f66344264542b3133497745706a2f54795276656e79695a565a6a542b5534476e7345484c746d554a43594a4242476b6a4769392f3654366950554c416e494e49556e486e2b3348345a4c77563242746d6e483559727366347a752f4b33666b2f5463476e766a55452f464237535172794368796b6f4e5368306b73675a7176524b326d7168416a69675344516e42413542626d6c6f5a44676a6a30714869677033502f46633461543869736b59772f74774d6a302b5348662b5662376b496d4a457343476b75564f4f79734e47553554455761426e4b5551334c44336f47736139784b4669365a4e477a43526a4536544b55735859354e676c6e4f5a746d313568364c3062596d5046706359396a7438776b33473968646d4c6d6955573664635a365470507a487346645a334f7a4e735770616f4153452b724d697276562b614336467332647a70457053684b334b54546b5a64514944317739714c46507a447368752f4d6e356b394d69524c7061556d5a6e6241397136384932726b6875425768692b54466c794e7873764d657a61686369444e77387636593667535148355544556642426f68596a66336438546c4942725649794d617363534b2f466b6c6e6354386978656c49394d7a626e7a695359682b4f5336634c4d4c647963342b4b576c2b35325659325673325049622b6e587471582b61446d4463584e45334c472b497974637455744e4f794a69653158376d634a58664b4276534d592b433154532b456a4a3475546b48376c756e746f5844626b525732656a354a4c6d31746d666d7649535943576952694332446f4d467556792f5932354d3541797553684b514c45676178586e5438566f73524e76645473784d7447694d68716b5a4d656f596c796e6c6232316d49695a6159326a71724a6d4a6633346c597a36333666433735674d6e4930556a4a6d4435494c392f77435a4c6332504a30366d752b4c44435042546178313761646f45692b7838333957764c444c394c555a56572f55647666755275524d70474f6f44705944557a384f4861745669355a7633686474306d326e67376352386b476147376c647557373450394f496847655165364b2f37656e3470726335334c646f616950506e496b673145616b5242796f4267746732646d4e75647653304a6b6d51346d536c33617775514673686f525978624545634478515a535a626164797a47524d54614e7750496b7849706961742b495649684b3162323938584a6d637a616a4c564a775249594e683255666a56644333736f52314176493342706b5a467952326f6e62326a4333444b32596d50486f775158596d7637466e767a31324c686958614d784a735177543765784b3371315363796c4b664b754875487856467a302b7a634d6938687238635979614a3752384b494d316d55774e6b596d6b6f6458503841703064557a684c37536535317a31776c4c54316c71547762507666334c726e627765424e504c4a30355968766b6b6c737255725a736c39426478326c2f6d6779365a37626332684352497561347a45704f2b6d4c75325864526c6e6e636e355130796b43647a6f314135617950594769367073776d593344346f453666395643717a746f52476e4543666d342f55372f414451555749486237767974556a4356765730704756524a715055597176314f5534797454674271684b557571676253333472664b7a4133504e2b7653595634667658443365362b346e722b6d4e492f6d67613375546265526b44636b6455327a50355a414b6f3771354b4f6b546b774e476b632b4a784f4b6f4d4371337a77515035676a534c456338767a5769336630347844355348354c4c724538522b31447a4b3151642b78366c435a305449684c6d71726c77324c6d3775772f5262622f61567a424a756b74796457324a6d795a466e684f6b343863753344444a42757351765275326d6a64622f712b5a494545636645574c384d6b6731334e74506547354d584f7563657270476b6c6f36634347465843303747466773597a6e3030454a5466546c682b62386c644c3079314d6c39576b395274695853547a485033494d6b6f4863626f514d705269624d5a474d5a455631483564797246366362486c36354f622f6b435831616458486941756e3973504d4e3975765470376e6638565850613278616e44515a61704734597658552b494e477232494d38625274626f516a4b6569554a6e544b526c5634317237634d566b746737665a3274784755332f702f5630735a414d324766626d7447327345376a7a4447596949474c335a50496b6e6b54514e3856722b30746d774e7649485147702f4c2b30494b515075373932457053456265694d5247576e7852665557566d77757a755778724f72544b55645836744d6d425433647043354c7a415a524f636f466e484e5732595173786a626747694d45484d4e6b2b5a653346727832376e2b364f6d4f71503563776a593346736a6333685052416d4c547878694770787937563034576f577a4b5550714f715850414c504859325a516e6230394e773670567a50792f42426a32307a44633234524630516d4a36764f4c755934454f5351654f437a5734655473447549546b4a774d6a4871366647614e67587a642b316457477868626e4734387053672f564b54346f2f59326a592b332b6974487255766a326f4e41693677656f6732774e314878577572746839512f4c6d46717432534c6b376a7544706a4750414438542b5365355a6a646759544644513969446e53684c62626546754a4f75374f49755849385a6d7048794373455474747a626843556a62754357714d704754474c566339725972586573787632394577444574384f445653574e70437a4c7a4f6f795054716e4c555734494f654a334436614c6d6f362b6e7165745a6a3846634c586e377135435570694559327a706a4c542b726733746a6b726a365a5a59676d576b6e566f3164494a3444325a6159326f7875473442575452502b6e3936446c526c636e5a73325a53493158626b5a5366713077314e586d32497172524132626c364771624331714771547434734d546b7237323174697a6f455a5361576f615431416d72676c754b703257324a6e636c4f4d6f69514550366b6e6b63616d70624673554641684f46726233497a6e71755374786b6454687052664130635a487671744550364636355a6a4b576e7968633670457361787a5771653174366263434b57744f6a6c706f455474726372687553784d504c37716e3855484f45705866744936354456626b5a744a6e614d632f5972567443626432395a636d4d4a523036756f744b4c346c577832746f4732596a2f6a44523743415077545274516a636c6348696d3272756f45474f354b3548662f306f6958394b4f4d695071504970744d725975376e635346736b43505431434947645763756543316a6278467a7a52346a485233592f696a754c55626b54435931416971446b37615a74333751674c6f467a554a2b625855776345427978667351467563747065767a6c496b693748535a5541633444324b364d4e6c434d684e35536e4477796e497978706e6c38552f327349576a616a2f7879314f4d2b7246426b326c79573576504e346558474f6d32547862714f52344370624e6975674961612b3156584c6278315275414e4b4136543235486968747245725671467552314749784f6143346351754236665a4e363963756e776963356173712f73586f424a36726d2f38577a6e47417731524a34354f6754655836614c58395358695074677566507a416455745154577256797a616a62684a744f4a7a53487a3565436f48785158573737552b61764d77326f726d336263744a636e564b76376c66623274754945326c492f78532f424264393063687171746d33334d5a306b4e4a58496c6575524e4c577275594c5a62766178707657664c35346842723956695a32444564767557583077337a356e6b6d497258573544386d49562b7a6a4c64433761757a6f5043324c53533748303077686f75796d4a617050706d59767a6f676c71345932625669424d444b374b31636b4d61616a4c535748694f42474376306d78656c5a68496d4d726370694d7a714d5a436c446a562b3561667472506c2b54474c5777614e5167385878666d6c746257336231467a4f5567786c4b5479623235494d41684f473373337a4f5a754532684a354f476b775a734f2f466149327a75623130536c4952746d4d59615a4d7a78636d6d50657455647248793457767068703038744e52565a643362694c75735737684d685879356949504b565237786b55474b4542754c4f307558444b556a4e74516b663475487a78376c7233686a4b364c494e326252724333307458456d6e634355396a594e7437646934576c623675677351655859374b363973345475655964555a6548706b326f446a2b654b446c587231362f73345778716c4b354b35624f476f676171484c4b7064596476474a454a48456156364d656e576862386b41694c366f7361676e6765396354303762656249522f54714d754e4a4d673765356f3272412f4a6334774d6a306c61765674774e76433341523148672b5158464e3765534f714e735248747a51644f6f666970474279786459724636344a4e65625677576a63784e79337031455664785242726a4352795630496d554a776a694f367134567259794942463259374a4c702b6e69395a75364a33504d6966714f4c684268394b5937727367583934585439547551756257556f566a3061546a3963566c74526a7450557a2b6d3544335a2f677477394e73527731615164576a56305032657735494443522b386c456e70387550546c6a4a597047647933434f715166635369576c5675716e59756a6632734c382f4e4a4d5a414e71675770774b574f7a74414341426145764e377a2b2f42426b422b31765849524a4e7357764e416c497959676b596e4b6971386d517357627875584e63355770543671485551576244504944357270697a4558764e50694938762f41457536357632576f786862743349694e794d75756277694158703146337937636b466c76624863627263504b514852344a61613642576e7479565733757a6c613232356c49733574334f7739494a377750657570437a47453533492b4b666937714259747a73394f334f3073514a4568704843447964792f61534d634546555a584a57664f4d69317939485350344e514139347233725a4d6b37324676434a74794a484d5343756c743764793135422f77434f673747773777797274624f4e7551754f5a54596a564b546c6a3763506d673556737a687359376e7a4a2b594e474d69336a5a6d774e4f4964612f576d4f334a3454672f765776374f304c50323330444c736b2f7a5650717473334e744e7352582f6256427a665437547938357352325a75506b7264786445435a45756e765174574e727168632f7145644c63386c6976517453496c64626d67736c764c556a706475786149594f43472f46637a52744d6d52485147746875547367365478692b724a5553395174516c5369716e4b34423178303833315557574633623235744931504a2f336f4f727474316276795a33576a64375437717a6f2b724564764e632b506c3371775077624264485933486942664839544b51772b667a5163583079496e754c4d702b4b4a6c467639456c337a666c486351747a7452366a4c5263315648532b44553459726a2b6e374f4e7a637a747a5053486c7759767878444c745232634c6339524d705348686c4f57706e39716c426a6a4d6e6158703669344e384176686a677262392b65326b4a75385a5771446a4f4f487666344b32667031715570654a707671674a4e456b346c7661717575574c64775245366945684b50383063454743334b34384e6e716b5a7775504b54314d424855506d4971576f472f4737666c4f55626b54636a46704d49614d48474277712b4c72555a3763585465315138787450692b6b56347066733746346e54496d4d7a31526a50706c3239756646426d3179334e79795a457745374a6e4b4d5a4d2f683464763763567239503152463231496b694e7a54462b6f674d446a2b613065566231693442554451473448397946713049536b59597a4f715862682b4344466346773775586b36662b4f4c362f774359384658616c704f346c66506c33616170437357626f494835352b3564415752724e34346b434e4f412f657135375331644d7a49663867416b4f5164757a7551594c556a432f5a67504e416d4a503574645452656763736664324c73697063724a623255497a6a4d36707a68345a536b2b4e465a7472486c577843526556586c323139772b53437a436758493955334d6f5842616966703148397137456a303857586a35585a5870797653786e5873416f6766635854484442637779423669414b64693279747a753277414d66636a4430312f455743446e39315649776e4c7742313266733444444a61625671456571495a427876744c6c487a5444617a594f482b4337735143616471756a616b5367387663323932324e556f30726d704334664563574b39544f304a524c6a385635712f594675376f7950376b487339744b4a73776e44445446573456586e5051393662557674356e6a6a2b702f78586f3956667851434f623449676852323748516c4c34494a496153366d495a4833497577514b48774f436c51482b534d6c4a422b6f596f435357664e4c435845497936753153585567687251592f6b7646776738747a5436702b353137496873614e376c3545575a614c3179492f354a7934594f673964596b3171332f4c464f4f6d4b71735849584951305342594442585949472b52535837304c46755632526f413659754471586e7638414a3931307832342b71702f306f5050627a6553336c795636394b67384d567a707a70525733324c4449384552737073364449694f613351324535783671647130572f54676345484c47724a46774d563362657a74515947496c7856763975737a7034546b6738364976476955754377392f746775397550537445645561632f6242634b55504c6b306b487166386439624a6e39747544697769563677754b344c355447666c7a3143707958302f593378757246753850714151586d544d4d616f7567445855554a4851355148354c6e3772316e613766787a426c776a566562396339666c754364747479317643557839585a792b61383651667151657233482b587430324c646631532f5973635038414c74304431526766662b61382f585567492b354237545a2f355861754e48635130766a4f4e523773666d7651327274752f485843516c4357427864664b3952464156302f5466565a374765714e596e7852795035486765346f506f65435942324b6f326536743775324c317376452f41382b66465a2f55742b4e68594d6a346a34527a51637631373179657a6e3547337250366a77586a372b37756269657536544970376c79563079757a4c796c57537a456539424348777752426f6c785151616f5479376b6c79576e4444676b746b636667724445484641624f37755776444a6c3064683674637358664d5849306c4b3759653942394f32572f74626d4c786c6974724c357a366276447435596e6e324c336d787638416d57395171673045674c792f2b56583553456473413436626a74326a322f42656f4966784c7a582b516259334c31736a444433462f6b36446c7a456476487259734f48424765387367524e7942674a6a706b514d4d48702b3072586332677639556e34386e396a56567a326e366846754a6a3744765155625745625634473257504c327a572b2f47336459545753336145626b5448776a4c32357262633153756a4a4244445962634e646c4155772f636a39727372314c4c486e476848742b3545656d3237673875354856445671385658342f68697931783249426a4b495a6749444d73476235494a5a69514b476e78586e2f5742356535686347654e4f31656e6e62594d75483676747a754c317141784f7150357432494d507057312b3833466f436f457a636d654146657974427958767a553058483275337469324951704877344d51526a33726f624f577530446951673075485243464d3156667638416b5770336a5852457939776442356e2f41435431733233326c677366726c2b41586a366c5065755375794e325654496b7137615742636b387643677a646d4359514a777758544232305a566673576d334f3363692b6c427752624a594d6e6a48546975344c635448426b7471573068307a414a4e6455736d51636d334530416f74473873614c635a4c307533395038415464353448316a3664513934532b7065676e527173456b522b6b3151655473584443574c7265625479453752615758647a584f75774e6d345948474a5a6162473530304b44322f6f6e716e337472524f6c794750506d757177447576482f34724d2f647a45735444386c37457866336f4a6b7376714f39687364765063532b6b556a784a772b4b316c31354c2f4d4e78303262414e44716c49646c422f77444567386e657654334679563236586c493669656155314656414837564751474c4448484a42536f424252785142744a56396930626b32794e4656467a55596c64625957496c3569703967677833646f59317757535959735636532f5969662f316667755075374c42426a69544270417363614c3662365676507539726276665552312f7a43682f4e664d51514637622f454c784f3375512f5450562f754837454870514d386c45494f5136684f596f5545504a592f56742b505439764b387a7977694f6553325263347278662b5962737a7652323054534654326c42353237666e754c68755843356b61717941303474697149764575636b444d6e4642644f2f7743726c4d6b757179636b54476a6f4c493370524b32324e33467872446c6c7a6d6f6f4f50755164365947594d5877314a597a6c744c6e6e51795046545962694f376835467a2f6b6a34543766424465513044536166537944333969384c39754e79503142315956795038656d6674764c6c6a46646674515242314452526b4850336e2f3375322f2f4144762f414c56306c7a6432502f4f327a2f38417a66384132726f4944696f6159714b494145536f45435542555178524b4170634556454555555551514b4b4d696744715971496f4a696f6f6f6769434b694149714949436f6f67676968544949496f6f6f416769434b69416f4d6f696743696969416f4b4b4d674b4369694349496f49436f6f6f677033662f44502b557162542f68682f4b464e307773794a77414b6d302f345964694339425246424545564548446e4535704451426c5a71705770354b72514a5949493337554144704a6c346e37614a6d4c55775268316546416a384d45593474696c4e59305456416365464178414151507851315a426d5549413730445a564e564b6a70474b564d7a424153653530724976326f4175656c415256476f376b4d77695271775145696a715939696d48506b6c664b4b42705263387553596b6b307150636c4279775344704f6b59647142793446454431555562685230785a71684175497778547341584b4441436947584e412b495955536a4453674b47694d6f794b4156456d6c5254745570453936596b453051435046544e696a4a6f6a6967496f4730366146444c737a5571525246736b427a376b58343153367758554653336367686f704238385852616e773730414f4e5545456a6745305133556645536c5045555162564c7351484f6d4a574866415433466b346d75433642344c6e62746a754c59486567336c7a3276376b4a4271706952475878532b4848446e78514e54444a426739556f48734530534b444a414d55546b6778376d514c2f6b67635571675a596f67766a3746417941485669674f725468564349657078716f514a65395357504a424a6b76696a556a322f61692f4641303652676742486355354d575970614d394d5643632f334947466346494f4b49446c2b39474e6146424d42524d7a7972676c6c30345a716544744b4361535456474f48616f506970563243412b4a334e50696868686d6f4a7966344b4d78356f4141614f67374b7a5871537a412f61675873544f49307a43496a7a537471706b676e69494f507a5569534347546161736354334a5449483845445370586b68544630547951614c356535424231424454717a785535532f596d456350624641336978534269684855585441616a3249424b4a486570704144756a4a304e5035494a55664a4c526e7a54786c70726b6c5050456f4a49686b736941653055524a474873556b70494164556c35763158314d77336f753763676d454e4434682f62347262363536696245504b742b4b65504b50356c6555665669677576377539754a655a656b38766267715a6c714833496c347047483149474a6a6846434a6367444645564663457366642b534379584c42575762397a62584264746e5449653365714f3957654d657a4950612b6c6570783952685161626b6648483851756a45734f6c6650746c75703753364c6b63526c7847592f4c675637753166686474693745394d673439766d67756a514f56444e7577716b45436945626a6532534337567144714567716d467a4c676c684b71433652713455456d71506679564f75724b6e643736337337557273367634593855477535647432415a337036427a2f4143584a33482b5337534478416e63374f6c655833752b7537756575366635526b4f5379454f4b495054542f414d6b743674647145342f77366e564e7a2f4b647761573478672b654a586e39564734497532434471782f79446569757656794b3337622f4143753747546269416c44366d385338306a4b75474344364874642f7439384e6469585550706c346837636c6539473967766e466d394f78507a4c5a6151587450545055342b6f577546324961593438782b4b446f7955787753513478784b6d7239714346456c38653941797a34705a63446945447934592f7353796a3953566a78373141437a4943535764523377775378474c4433714376695147754a384b6d6f6e44334a4249476d61654161512f6d48785165632f795864793877625159517249387a2b53382b51756836772f337430477031535743454449674448336f43496d667478567632747a6756317472743451692b4a58526a4364494352492b43447a483274774442557a424236714665786a62366e61716535747865426a4d61687a7851654b4950656e6a4f5675516e456b45476835725a366a736a74726e5434656177436d434436443656366a392f5946332f7178365a6a6e2b70623672776e6f65386c7464314576307a36443334664665374a47665a7951496d426f78397535416b50682b784544446d6762516b494744553538314377354a6f564f4b44782f2b5562727a74794c517774686a2f4d616e344d754743345a5758376b70335a536c55796c4939363162506175584e51677174374737643667474331327653446a49314b375671317162532f5972425a44307751656650705279574b2f744c6c6a78447658732f4b6648465a4c31682f61694478334d727638412b4f65706e6233787479336c33442f746c6c3738466b337530303951393677626563724e7754483079424863672b6f6e4277696a77496f456f77495063675078516b4179674434594a7049414762696a575557555a73677967354949414f43476e4c6a6b6966686d68714748737943454e51496b5a68536f4a51706c77514b53516a3471424e7a5330426f577155445078376c4b753657664a45466b424b356e7158724e6a3037706e31584d524159392f443572462f6b4872523262574e756636736831532f53507a5037563475524a6c726b586b63337851622f5650567233715539552b6d49384d4d76336c633863457734706451784b4169544c6474665664787441316d575047717743716d4344325870762b5457723757397942626b66712b6e762f5438527a4339477a6a4967723556517231482b4e65736154485a5853344a2f706e676630396879396d44317070324241415a38314a4534634f394349343449474853583971715377706968454d4864526d4c6f4a686a69555a4f45425148556949676f4a58765135354a757a323570544965354164536c52326f674e3249467a5642486f36414a554f66444e5349624642776638716c456255527a4e794c6646655939507451763769454731523855736e412f617655663550435832305a527975664d6577375677765262526c656e394a48394f75494a50344e67554862426a626b353147556871305767386d3438414f306f533355725a776e45667841536a336d4c39696f735764784b7a72747a416c634a317a5069704c546879416f466648376d78643143634c6c7268685035424230374e7a5848526d4d3353546c47336a697552597558376c7956713350524332515964447344566e4f57544b767a3732346c50376d5130577a6f613330617961735469774647474c346f4f6e3931614a614c30347175556f584931627437466973584e6864364b524d547a67332b72742f556535617275675844706d353852356a427a32476c4f58464235333157794c647767653341392f376c58365a493239335a3558496a746569322b75674735624663473761724c364861387a6632755574582b3271443647376f79424939696b4446507743424a516446736d55504868336f436c505a30444d414e522f597162392b4f33742b5a636f7966566735586e3935756a754c702f5448777837554276377935653670476d516973706c4568382f623571655077346f77326b714752784b42435a436e465743344d4a484c4e4d646a6349444e337054744c74764964315547697a7554624771306350704a36542b337358573275386875346c77306f34784f4b3832626e6c79596e42624c4e77323543354445633851636b486f335546456c7137357342636867557a4f585147527a4f4766597649627a312b39646e4f4e6b365959446933356e506b74767250716d725674724867776e4c6a79485931543363563563444c492f6967316d393576584f702b6e5667473444386355674c436d617a6d765945344576355167766e4c545173797574627537623637557a452f77357438465141434866562f4b6959366e503745486f76545058764e6c35573670492b47544d4f3964346753777a71766e6f6a672b4e635632746a765450614731634f7279355771357472487345487153337356434839363531755839777547662f547448706963544c39556763472b6b64366e33303437637a496a35327679744f413136767971673647584a4b47564e71394b35647557704d31765341654f714c724e6233397964757a4f4d593637786c79415a2f77416b48516c5556546b55574b4f386c41585266412f70524533686751516679565033562b3262526e43496a636c4750697246363134302b4b446f6b6e4771674761354564333545373175482f4a4f364978315569486a48453464324a562b347578394d3277387361726b7061515439556a6a492f50344946395233636f447959446c4a636d594641417a426f6f335a6d35563675367271337851564762306456536b634f4b5a6d4c534248316355777353756548464255626f7742524e6646564735737230543052656c55687333625a366f456646426f6a4953724c735a5777756b467543784334543957437569596c7131627351645061584243354359474d744237442b31643353764d435a684234306c4871377867756c5a33734e3366323834462b6d3534675239497a49434472354d6f634778584a6e36704b414e3061504b6966435a395a6943784948794759376c6266333078646c6174614867496d55726b744c7656682b66775164427331423159344b6a61337875624d62324772486b52547637566b323835524f344d493670433457416f2f54484d2f4e42305269794a4c454e69736c6e6433504f3871376f72457a6a6f6b374e6b566e48715a614e3461504b4a5a74663952695764767734494f7048676f49732f4a59765650384137573778306c566253384e74743578754635574837644f4d6665474861454853466635564d5678647435757a7462696261726b5a526e4a365978426c38797438743770757868477344447a5a7934527939395547774d512b6148454c6d6a6658644176334952466d576e413963524b674a795050687a576d33644e79376474456638656d755a315264427041414e4570714667683668646e6173334977426c644f6267426e2f4a504865797465634e7742717452467a7071344c3450584a42736473654b4d435146684f3533414e767a4951417546756b6c7852324e50697477415144566c6d724178366c79742f616e7535697a626f626354652f312f5238585063725a3737566274586f73397956754e63745750654547342f46426e6f43714275434c2f6b346a792f4d2b4c4d732b313364322b3034786a6f6b61694d757550626c326a4a42765a75355345784f4f714231413569744668325539776239324e7a546f45687870306a422f6a7a564f333338355737486c51673933563034434c4f67363256557047717057586237696370334c563441547436584d54516956587238567a4e394b31754c6d7568454159317a6667673770635931487951426931537a594c79737a626950427037503371765848474c393451657646657841634a594c67574e334952657957494f65485a5262626671737463495369774a307a5042325a75306c4272333132566e62796e48454b6a54356530674d714f2f764b782b706275557476636f474e7a796f6e7671666534573366644d6f573236502f414d6c42696c49796f4652716c62366a307372357a44305765396335555a414c58584a79743834644149584f733732772b6b754375674e335a6c485271393643675350314f797567663067646857635336744a5736784552393359364377572b6c34306d42306e4171375a334e646f536c346853584678374f716e4a314e773975395459447a4947344b4366345551626e3555536e4e304a6c3644763976334a73554376376471595359315330726b6d5a38633045624e4b7a31794361725678536b4d6558356f4a637577746a575377474b3548704166633344674a784d6d375a4f757266744337624e6f303155584b39486c72766d5a78454e4a37645341376d354b37754a4668306e514f35697564356c335730716436366d3574474e776e4856497248655964522b43436d304a547541794f4879573235613152414b537a5a6a2b6d724b2b333167672b394279547359795055574a34592f6b74634953735230755a4e494871567335615479514f446a6c56426f3952682f354d444c77796870377856617654695459692f5074354b6e31566841546642316f32646f3262554c6641565161577a514c6f7862426b7541514854566c41316457616d46564338616e73514b3554646d43684964453171674e526a6d677a4641533149677655346f4255314956642b5a7432356b59365a48344a7845396a4b4776745242797a622f384145736b4e55562f3156575737434d3873467575452f61322b415035725050695751596a7432776f2b6157315a65664d664661626b772b724653454e4a6642426f7637656d6f59454c464459364a6559514f533630547274304f705949484935494c6a41456532433032423559694468536972747742714d30346b54636a475753444e366641446433596a477137476f6e396935646d576e31433639497944642b4b75762b6f52424d4c5653504650682b5a5161747a75426146534e52464679622b353142706b7a7a6241666d6c6e636a585631532b703853732b746d44396943794677536a30686e56586d41534e5253767379714e3053664d354b727a5163682b4b447157643964733536346678592b3964586237713375427167764e556a4e3473787854416d42313236532b43443152516246714c4c7339304e78422f714331667849494f4f61684b476b314d614a755a2f65674569394f533858632f70784d4a5549654d753565794e63736c342f314547462b364a6671366338667a516450305862473574705862686c31447047515631327a6f4c45397132374f304c4731684766533061726d376e3147325a474559536b657867336252424930774f43614f46636c6c2b386a675945647456644f52496359494c68376c6471302b4931584d47346b443030566b4c64323841544d4e795a42315978616a2b3337563533316a6f76526b4f344c76326f54684670476d533576712b314e3679626f786a587543446c577977664d56484a75613972745a6d3762684f574d6746346d78447a4e4e7641794d596e2f555637693345444b676f67616e687a5165716755464f6b6c4148457345597668676f5456515347474655457252435743505044697544366876787548733236576834706671504166696733626a315733624a4676726c796f48376633726d332f55397a6348535932773755366a58396935397936414e4551772b4837316b76546f334e42723347353176356b6a634c2f566838316c2b375a346741444b6d4379334a6c766a7a532f5135775158323738514e516b597934786f363665792f7943395a503961586d32384f4244726753704647426248423048306e61377931756f2b5a62494948775868665774346275376e493465474b58302f643364704e34466f487864363058397048636271476d6b5a6e3461584c643243444c7374724b394d535068795859334d4157697a42645748703172627830774466484259743762592b3261444270726d553849694b4a41346c2f67694b49437975677859786f73373669586f6670577932664c625668373047754d524b474438767a7958443951394d7164413750324c76326d6c46785876527557347a6757784344352f65746d3349677236422f6a6848397573762f4142662b34727866716745727830307176652b6e57425932747141796a3863304773676b727a762b5465704778612b32684c2b70633851475566322f4a313370334932596d354f6b5967795059463833334e2b5737767976546f5a4833443979444e4747522f334c56747471623833396d533046426d5632647062454179446d6276614331373257475171765165716263473238616c2f6d755065746c6871515a436d654b6251635477547968355a623363304855394639542b797578446e79702b506c2f46335a387535562b76656f2f653767312f7077704838567a5a454d592f48383157574951614c6452494467714a554e55396b4d4a61635657547237554564714a576239696a72547462486e5341415147785a4d35557758542b78696265505531567073376652484a3176743766554877504642355464576a616c375657614a71766162763075462b4d677a48436c563432354479706d4a7843423453306b4d7657663474756a49334e76493048564876586a775743372f41506934754464655a48772b456f506334387746693953322f6e5753592b4f50554f625a64395676775344467a676678516562326b74644f4c4b796377484a57632f38416a3370572b456a79777150676d76796a494d3945474861794e36345a5a4c62626e6f7567565a3272385667327875626152416a7147537673324c393635704c5269632f6d6739424561734d465a42714c50626d335a5261444a676753526350386350626773506b784f3568646b50434a4d42786c2b7a357256644a6248324b7a3747486e7a6e622f41456152372f6967735a3548546a4c70484a38536561367471314733455734757753324c4d4c5a6f3738566143794363315476594764693745596d4567506356634532614435474947637449783936395248306a7972596871784479666a77564f7932476e315735627974796c4c38766d756c366c666c4a77374134494f494e7261424d582f31464f62586b794d484a63643373566d7662596d5145734f53307746776c356c354367354d67746a624d6f6b354c504b7a43524c7348796b756c3545764c7a4f486175567562506d4679534f574b445274665352502b7062502b326a4c314870776d49434d3545745376414c793370734a324a6137633676574a587264724c577851654a39653278322b397546756d5856486d43734e6e6776556635687478707462675975596c65544130696f785165712f7865795a626d64374b4d64487958725764633730545a6661625566726e3153373130336642416a6b5558697638776c2f356349384c592f39306c375a38655338682f6d467035326237487145725a345571506d55486c57595038307a4130536b3845776a38554568552f6d72446230696d435879692b444b79496e4942346e6767706a54325a656e324e6777396931667a584d3950394d75584c6b544e744c392f746b765457626567474765664d3969445063416a4569574a7a3976617135573673366f6e6e6765786448633771335a78636e44323971726d626a64776b47673966634548434e48664e65792f774151747461765844675a526a326b412f6d764b626d4168637079717661663470614d646938734a546c49646c42387767372b4f434951474b6b6b426947587a5031693662322b765334546c48334667767070474a4b2b6557374933562f64585956414d694f2b542f4a3048474d6e6f674f6136643761523851344c4d497869575156573456416e476e75576e796f45616d526b5a46765a6c3266534e7164795a6178534d617579447a30724267556f6753586946316655344733654d4a426a7977532b6a3274642b4f6f394a397663677a62545a37677a45374d4a5359763068656733657975376979626e6c53456f5661575074697651574c7a5330694a70376974734b315165642f786539356e6d507958704635442f475162507147347341394131646c4a4d76586b6f41434d55614b49494f6675782f356d3250384139582f32726f6c594e315864376638412f4f662b3162304555514b4c6f41696f6f67696d4b6969414a6b464542517852515145494652524155464645455243434b414b497149416f697069676968555551525252524146455645415255554b434b4b4b49495647555551525171496f416f696f6743696969416f4b4b494b747748745448384a5132703157596e6b6e76654358595575312f346f39694335424652424646464751634a446d6d35636b6d6c79357951456b364b484a49593644524d50487955306d5834494a55525a6e554c767934714567316b6c4c6759344948636c4c70484a2b4b64366f467462534e50616941474a38492b4b6c654e636b4a467939564135476d49356f48787163314b42696535423656785531524e43674e514751484e52705030696e76524d656249426f71354835497478527778666b6c6b6149414747464659344e486f6857504e4274504641547779524435684b394b6f75353661494a4b7054654a4168386e55304e54397943522f684b4d71653261514d434a4d6e6c46716f42676a5443535478466b6365784133506852544d6d4f53686e6c37555330413076696765497955634d7777537478504a4743434374416951686c7034344b794e634f7a7651566b38555a634d564a34567951665452414270344a675770676c496f6f354a3549434a64352b4b35323531446357477a315558516f2f626d734736364e7a747933674d366a676345485272567a564b4b346842333673314e58376b45504e33556b4432494354464d67484159684d4a7632635669336e714f333264626b756f665448785635666d7650582f384149647863706261324864323146752f386b48725143447855674f7031346d507247386a4c554c6831414d4f487577666e696d48724f373143345a31345a4874434432327069375a49515931584732502b5132727030332b69522f322b334c347272363344787a46472b664e4130756f61636b635152696f4f41514a4c3971434750755447526b4542564d4378446f4a47616a504a78543549766b6f79427056444a59764667616c54517a4b506f2f423045712f53706867474b4c70673155436c6856455644714d4a5561714c504642434179487a525935594b6d39764c473269544f56516775494c63776c48466332353637746f6b78694a536236677446723162613344706a4e6a54484e30477354426f464e4c6c6a67706275526d4f686a38553034467347346f46784e554348556b576f6744496546415a68715a496b6949516c5770475345446e58424132644d554a6968716f5154566b534f4342436376326f2b4550334b437553456d6f674a6d5a684b5a3538676a723030396e56645063674743587a4354774b4251755430314a776442354c3169393532366e776a302b3739727244673661394d546d5a484d366c57644c4d36414635465163555869656249596f4a55354b47514e466661736b315238677a423475677a7333344a34754f7848526f64314158434147546a6d4636482f4142336545526c747a56757150426a69463530776f5778585339444d68757848694a412f37554872444c4c504a41676968536d516b37555042434a597341675a694279516b4848646767576a586a336f534978515777485670347279487257394f35766d4938454f6d4b3963626e6c786e63783078507758674351535478514a6d6a6a696f695541484648784369576f52414b4346304b4654424e386b413571375a3771653175693944454b6a4e4555716739335933554c384265676153376d6c69565a4764534d38563537305736396955434861516b33617531476644416f4e4a77722b3951786339715355334b746654546967555271794a6d4a5935494635496a394c346f4a69612b354a306e416f334b5970574865674e6355594d347738515078536c2f705441417947475344782f724564572b766163356f62617949346e33713763505066583574675a664e534e694634365a6d4d527a706967366530673368414f586957324e7669656e354c6b4430713232726233775a5272375a72527462303951684f7077626a7a5164446a775478684a7553356d34336d3474487934526849443953577a76393564464c4e747578767851623935736f376d30654a464634363744524a6a526c375462797547747a786677354c6c2b7662473252397a48704a3851343877673837456d4a31426652374634336246715a786c626a4c3372357a6274363569417a58306133434e753343324d42474d6663677645617555784a465467716f6c716f366459595942414d416d42347052497332534d5a6b643644353347426e4935315859323042414d797a2f626552754c6b4d644d697976742b66722f414b5a4139757842324c41496977566b5a797a437743377639755472305447665478397932324e78356f3667496e46426f61574f5074324c504f50465063335562596f48574f5a33397747554e454935644e653142527559784d44486a38313537635770514a314442643650334a6b3977786b4f56466a333174376b4943686c54346f5065577064414c4d53416f616a4f694971554f614166496355633255706a6e2b43684c494347696d4355564b4d706173454659355652384b5633384b73636f4253687a52464b6c4a70302b326163306f676d54484e44514a414549444e4e4d3066676742644a6576437841335a466f52426b65373277566a4e553158432f7741706e356579455948785445543256503449504a6237655333742b6436644e52707947513767736d434e45596e67674170676f7741344251426f677148485355453073585a45394d6b53344b55455938554537556263394245346b676873464b484a4c4c344242394b324e2f37757862762f414b34764c747a2b4957706d344f75482f69317a7a4e6e6f5030546b4f34682f6d753654523830452f6c534a684c4c423079416667707a43484d7067533945434d2f4a4e3475535146364a736b426c4a73384644514f6c30365578726967687256446c6d6f4479556c77346f4d2b2b7436374d6f59556233726b6243304a584c7842662b7166384130674d7537636a7167657863625a57785a4442696150377678515063745862633955593634616a4b55596e71695469513741676e73494f435365356b78466d7a50562f387761496a744a4a4a37414b726f47624163666275564677334967612f626b676f324f30386d4d70534f71636a3179346e38686b73734c5562562b635a466f3344716a2f4e6e48747a44346862376534454c627a444566546a2b395a374e323366747968704931665463474b4330375458426a45455a39412f4c4a63324f327433704735463945502b4f542f554335492f68697a44496c313062587032324d584d4d4434645569422f7064767a56317a53526b527751655333385a6939473157665454766464542f464e6f664d756269344745656950616366626d6e322b304e37646d2f4964454969324f30687963386c364c6132664b74694d4b422f6e7851584f306e5a475144307168374f675a4944706f585548534542467376334b47514d7553436a6433664c7353794a36523330586e6264737a3769563376556f2f30444d6654704e4f304c6e37474175504d6678456f4545664c5a57526b58344a64787562596b30597a6b662f6c71753375645a66544d4e5235424273624a53324f705148557953354b4548317a414b42626c6d3363704b49663953773364716473532f677958567347336336596c336f72393959506c46785159356f4d666f3134504f7a6c346f2f496a356539644466582f414c617a4b364d52345879505035726b624b486b3769476e77794d3474795a2f6d74587238663841777a6a346f3676397944792b6a4238766632725674646a7161636c5847447970795861745130784434494d33325676567161696b3970616d476a45666b74576a6d6f79446e79394f746e4c76437a332f41453255662b4b5a4134537175794741644359627143447a586c39576966544c446b6a626c4b3149547736362b38592b352b35646e6437574e7942635658476b4f6f6353572f4a4237653774354337472f5949457672426f4a782f4d5a4838466d4673586436544176474946795563745a65493739492b53364e754a6941503231516a626a427841414f6454444e426d2b33753237303774725359334e4c362f704d51314b56393453574e6a4f7a6273436e39456e567a423159633672624c46734369494d4d47397665677879324a75584c706d656d37434e766d476638316b6c4f354d3765334d32356631496b65584a3954524e57594d477878376c324756454e766268496d3347496b637845422f6367716a7441664e6a6459787553314e79596534305754643765354778626a654f6f777544544c4d78777254477456316a4e7159717263577a6473796878487851655a6d4a34476e314c525a734d41654b7373574275354145594e722f465858494e3143416933302f4242686c745a63684c73566d336949597336734d3772354a474f7035596c426f6e4a672f465a33757a425a6d397543746b3977434568482b5a71716a2b7445366f4d2f4242566332526d61645038414b73397a614730635333385835726f695679596166444a623732332b373278743652475552512f4e4279593348675a444453757659326479497353634e626a4a2b5057337469754a73775459496c535855506376563655484e74374335612f707768626c467a3154385445757a4e58476e5545397a61536a646c646847457863455249584d694b416773614e6c785852306b684b78515a4a574c3973514e7252514e4b486867587a474c4e325664567a3950757a7358594f42637579314676446c54697841596c6c765a6a7a4b4f484e427a3757786c43394735474675324247555a52687a624e672f7743484e4c74746a6373434e7254616c474a704d2b4a757873636e666d756c4e73416c6c4c685369437266324465737a7478496551494843764655626a61766368654a416747387a2b4c545750754b76334636466b4f5337344263792f75444d764c3967514e472f4b4679394d416558634c76584b4947486373473276584e714a695138324567496378455561764a53376338526b58564a76366147547567756a36684f376268597652613148534a54474d6f7849594e6b39484c6c645378634d3739793574394d685054713878775152544271687559586e6e314f56624736666f4f6d66486967373233324e79314378626366306a4c567a38584c6d72622b7a4e7a7a74524146794559673568745835724e3666366c352f384154756c726f58555945555163716432376375376546303279424c562f546b535a644a727948765736784f64794a4e774d4e55744f494a414a597034574c6474355169412b6359733673346b59494d4e76302b4679647937663670796b2f495277415366322b35473262634e4c517543375a66337361594f2b4434726f7532474b68515934574c78762b626330782f706d33706a566a7163476f7267732f77426e657554684b666c36345331537652704f545a4d77787a71517571585a416e4c416f4d74697a637458707a6f62647870506d434b59595a4b6e61624b646d4f3331534839485871353667634b4c6f6a345939717a6279527457626b6a53682b4f43446c6236345958727067615852443352642f653679615a33615170484a573766612f6433334e4c63573163794675755768623659686f3845484f6a7339582f49564436625a6d484467725752563030574e5167775876537274754f717a4a2b4d53466d6a75394d7a473444712b6f466432334d52442b2f46592f5664695a4e6474306d78666767703052334e714e754643434c6a502f455357356c6466664635323538416677586c4a796c4754616d6c7970326646656b323876764e684334523178476e764645476555716b3846683877504c556346703879706c394b7275576255752f6b67416e627546704d573565785775785a41775a79367a516a4f4a7770794b3157397662496551367549703746416c344e4d446b3632324d6e574347334d627a755a502b6f755630596e4b7142726c4958415045314f3072565974527351454f415a5557726362384432393146746b4d6b437533596a7a5150504a46674f6553424742785265574b6b55524b76596747724e475271366e4c4a514d4355456b64646543354f3348322b2f6e4159546a7248342f466459763370504b695a6139494a464851637231436639516a6d5067736b33562b396a70755442342f4e5a35676b3034494645694a4d374b38456e45716d456841764c42736c6f467a627a776954385033494a63746e53616676565975616f553973453862526c4c57394f43416a706a49636d5a42763357336e753457386839533361744f436b42706a474278414150755444446b674f72336f5236653145564650636f5452304548504641524a5a436243696b6977514559616b4d656b3470713571455a44424176504a4d4f48777951446a424358534851464445386c506745347251494f66764c666c326f5266366d2b61776b38463039314755374d346a743777754c356a4d676c7a69634656437a4a2b696376397965345152306c7a2f463763566e6a4337642f774353526858434b445a5a675a414575434363466449467a4d302f465a57306a5461642f6b6e666352494e7a51594e6945472b3349786a30737061423877484656734d4d41566473343672764b4f6661674f383238626469354f66564e6a49453444322b4b3563343949674b416b594c712b72536c39755931724b493935584c334e7658426f3468414e77385a536c2b6f5257533756796670373130726b42646a475977307633686332634836737330464d524c337048496c3165355832425559736c334672544c55506967654d347a41345364617267454941444a632b7758614c4e5664676a49396e735543574c6e6c3359796a67543742642b4a6350782b4b38334536613567723047304a6c61693643327446485974524d65314166424148496436726865736262567572502f414d777366394a5865643856673338514c6c695a784677523770494e6c36647341575a6b41474b38356475797475595131766c7758573330576d5a6e4552584e76567778346f4b4a337a4b73774279576e6139665366443831523068717537747a576978456875474f6e73515939335a304668686d6c736265424165526a324c6f623370713144565532694c6d5972386b47713149686847577461354455476b4b454d73396741793442613767713253447a75787365587534526c6847372b4646363845455a4665563341302b61633331784b395131534545494a787a554750616b425667346f4669546d6d4a62424238754b6d724a427a505574784d447949753868716c2f4b7544656e686b41567633736a633346336c306a736a374f7554634945654e66696770757a71334835724a4935354b2b37714e63304a575a2b4c4c67677a38384f53724d33444769316d784f5934414b69647378443473675556526a4870634a515a4f364d71595a6f4c6f476a6a677574735a695632786d31794e6667754e68324c66593177684336496b526a4b4d74575344337432324a5441586c765750554c4e6d3462554b6b484a656f334e337972666d4d2f3756343766327265327575327379366a326c426d50714676394e6353546a334b2b337567654c5a666b733433636267595734674e39574b46716c7a554b5665694458754c7074504d414c4d4c392b58683661726f2b6f575364735a682b504f745677722f6d7936684c706b57344950522b6d57623842726c50554d534d563151307350647a5748623041306c67492b396262556e4a6b6738703678733958715174512b73782b4b39304b4e70774646356a633242643954684b544d4976536d4472703747394f3375425a636d336342505a4b4f4e5546582b53627279646f5944475a4563637353764451366331364c2f4b722f3841576a614473497638563575496b634d63416732625363504d65354c53314f4b3765326c6278684b4d6838667a584f4672613249786a49655a637830672b397a6b6c736a6133682f5445726377482f627a2b43447358624a7557704436694f6b653335726979665472784270324c746263796a4275487a2b5066373168766247356375546c43576d4d76463765324b446c53616c442b39617238663841783458495645537837446e3763557539324d74762f553143636631522b525676706a62694d3974504363656e352b3359673566314566535656685442614c31733270474538595556494f733971432b314579747949437a6d7139682f6a577a683555723876455470484b49575831483032784f52756a70443463666367387a41616978586f746e473343464d566b2b7a32706b304a72527437666c644f5344584f2f43324b6c573276577472486f6c4b5757537858646f773179772b437a433174544a35466a6830346f50535776557474664f6d4d324f514e4635762f49396e4b78754263627075443472756244613761492f706b796c6d5a4838465058397435323270394a314242346f4c337638416a6d782b3332734a6e475a38772f677647656e3763376e63323754556c4961757a4e665434434d49365968682b5343466a34536f44704443716d726a6d68326f5050657332664c752b5a2f33414b6a6950594c6b3769666c654b73547734384758725055647239785a4d47384e593971386e4a3577442b39416b4e3362692b6f55397553326266643267354a5a316a6a6270514d4f4f507433726262744759596741386d43447037666557373874447638522b39617a774f5074375a724c59445230745448323976323250556b346f4a4d665437657856506f4a314863797836322b615737646b3374376531566b394c3373374e363561747731786c4c564b514e49446d3478355a6f50554374536d484a444b694c494933464d546f446e42446d716437626c6373584951784d4a41653542773972636a66334e2f645777776b524153374b465a743230545448357137306f36647248746b2f6233724a76756d596858422f774145474f6658636267747845625a596a706f653963795570453667454475373550554232495054514853595346572b6134743439576944634f4a566c6a31692f637541537478304f486f566e7539457a49356e3446427232726b315a714c7662516141437558737251673032376c31725749475344422f6b4e69573674327258385476324c67656e2b69334a37364e6d37574d52726b636c362f642b474d736f6c31792f5135542b3776512b6b6a556544762b5344304959594b5a6f6b7042577231514d3742777544362b5958684461796a57583954553745616548746775384146782f5637456a4b3166646d4f6d58656738487564764c627a4d4433533468646a6262514e4749414a617566622b4b7039546a4b2f434e2b4d51494173374e6974753166524544674835386b46385049734635734967357350322f42586e66374d6d55526445755245682b415648324d444a355244382f62334b6d5870674a4d375676712f6e4f6662784761432b467a563447706878393632334c6b3473546e38472f61733230326f326f594d3865396c64767454526e773976336471424c5675302f3841574948387841392b437a377133596d5435656d514836644a374f5074564a6539506875694a6d4d70667030793067443975616f752b6c323452696265714a77636e3857515a50554e7443335a6f43384a4d2b474c7232486f4d6f2f593268413452307935537a397543387266746d646e797a695a77412b4e655339623650747a743974474f636e6b652f44344d67364c3051554131437149354949373058672f5266447565656e2f414e7864653033735a6d786338756b394e4634373061333564756332637950375544584c41646a7837506973467979386d6975686330676d517771714a76704a434444616759734d636c36482f4879504e6e456a44414c685376614f7075664e62505476552f7439567a533549302f6d7944766571374346324c6b6a5647763746794e6c6138756658692f75585333653774372f4147567a376678644a6c78702b356336784c7a5a686761737a2b386f4f2f626d6278415855747830426c7a396e436d6f2f77436c755336454d4b346f504a374f4232587146362b613239556f79355056313630454550484e6350664349766d7a4847364a487677585932746f326255625a727044494c4d4645554751632f64754e3374762f7741352f774331644631673362666437622f38352f3756764b434b4b49346f41554642696a6d676e4a525252416346457372676834714c6a657265712f623234334c426a4d6d656e484a6e5164746e51586c74762f6c414d76367366645664577a36317437703067346f4f71794256566d3947344f6b39697451466c46464545555155515246424642464645554155775543694149714b4d676a714b4b494969676f676969694341756f794b69414b497054494371416f724a503144623236547551423579437a587658746c617875682b56666b67366943354d66386832637672413755542f6b4f7846504d44396b767951645a52594c48717533762f3841484c56324c614a41344945762f7744484c734b6c674e626a32424e63384575784c5944573439694331525252424645455548447a53343957484a475561394f4b535563705938554272694530584c615766323470474f7246466a7866387330456b37634561514c6671544673456a736745425141303470395439584a4a497467694256386b4259347437657755665430344a54484e4d515258385541684476544e717753672f46456450354944474146564e5468774548303564364f6c35616b4242414357565559696849787851456e6a7a434273756b6f413066336f304f4b522b6c73304461525045565245654b484a4b4a50556f486e70696f7749375577644b784b416759506a676f5148716f42696b714b6e75514e674b4f36634e2b33676b64366f366a463271676d6d74436f63534d65503730444750314a7a68516f495a6338554e543434715344687856463942644241535135556b424874346f306655677a3434494a4e694e4f5971684a7a5673454f7a366b52455651474a476c4b5a557256513436636b575930372f3249424963466733414275784277664662737331673342303771305031422b38494e342b4345573730754172376b596c78544e413157425748662b7051324e76566a636b2b69505a7837483472526476437845336274424165333746346663376d65356e3574307554384277484a424e337544756273727368552f6777565050425061737a756c674d563072506f38702b497355484a5a67345564797652322f524c62646270543642486955486e31312f5350567a744a2b56664a4e6b2f77447050456375493778576875756568786a46346b3971354f35326b37465a5949506f486d4173517a537245347546495330314338352f6a65393141375757585648737a48342b39656a31436f346f4a58466b4e583165355271714450746f67635670337151476b2b394b43576f6d306742386b4250546d364659346f67415949434a715544566978526e7a55783975436d6141326f74583472467676554c65324a45617948483969472b39536a746f6149654e6a584a6561755870536b6564585157623331533975695159394c74346d623359686379633443544367506572626a775a78565a4c6b745643673057372f5651712b63514930727a564e71795a78364d554f7141494f4f434272642b345a5930484d68613758716c3678313235534661366a715850736b524c535447516c466b48734e6a36785a336b576652642b714d734433726f7a59437677587a794e324d53357133483563563637306664677738755236534e55657a6d6736676a476956693944676a4d50467747344a616968434269346f673272327734706a566736474742716757673755686f6e504534704a3143427045694e46535230703954463068475978515134724e657749354834677134776f54546b566e755277664f6751654c6a78554e61444a573362586b334a514f524d66637136346e393643476259556646644861656d7976414277464e72745036657556536350626d725a65644b6b4a2b58325539376577516142365a4f79486b354475567632323174584c5a4c4d4f31594c64323762595779524854706e716c713148694877374630646e4e72656c30464576547475586c4e6f76786b736d2b394638754175324a435554774c682b314863374357344a6c4c776b2b357661764658574e6a3563526f654a7a356a73774b447a737759554f5643756c364c626664366a394d5a666c2b4b316571624b453755727744544447584d50376646542f48724161642f4e39492b5a3563454864694e4e636b4f6b715052796c64365a3549476d6b6653436e4166464b593548424256755a662b5064474c776e386a37594c77355a657a33642f794c4679545a4d4835727932367447334f7631563936444b586c33496b6b4c71656e3753336474794e7a462b6c53377462634b346f4f5943395170453671444e6162597343747779485972343761337169595642784d6b4850306c366f59723039753747304448514a514876584d39524e6934336c514d5a494f536d527a537367366e6f3835516e4a73434739363944614a5a6a785843394b7476436373797a643156327259464848385065677669484b7344753731437068565048466b46773576564e45365371645a43627a53614948777163306a67714751507a526b4b30515179712f77424b6f336479567133636e48474970322f7354784a303078344a6230586a4b4f576b6f504d376534626c36354b35557a2f2f41436c716e73786344716932385841384b366d336159663342427949374b35624f754d734375743664445863457a77564e2f644d6446736971364f7838756365695170687a2f4a426a39553238376a5474306b5070475064374f7332793348714d4349786158384e78767858617553387555524a78493863464977657242424c643235502f6c743654776a4a773679657551483273596a463564713641675772324c4c367045537444574f6e5631636767382f364a747a653363433149395875772b4b3975786b7a6d7134397948326b49547351476b7947725469526b75704b59424279496441774f6c775539776b447077516a495a2b4a43565851434468563775647931616c4f307a71386670775a5658625a6c624d5456776738786f6e35743356556b367564616f2f31524952686e6e6e3350514b7949315844496e457333426c314c566b447134494f56416232334b586d334a534830764e36382b465069746c695055303831724947474156567557712f302f53676f442b5a495a6a447479565534627964344e646d4c5a3859646d4f624435664650666c35643875757461674c6b584b446a37654e776a5464727a3973306d38747a4d374f686e452f6c583846325a694d51775749326e6c7264744651673633702b347562675438304456476241386c7477575459442b6d2b55692f74376c7246515545664e45594f654b677054496f646942744c3177536e4368584d395739576836646241385535654750346c6565682f6c7535314752684468682b314237544e38456876327834355269546b362b64626a316e65626a2f414a4c68593543673977574d7a4a50553644366d434a436c52682b314573443746664e4e70366a66325539566d5a417a4752376c37663066317531366c306e6f75357834396e732f6167366b526b6957646c4161734d454542643135372f4b37556a7449794474475966762f41472f4e6437757277574c316b526c744a3238376761413479782f424238396f63695346324c486f2b7579382b6962352f69736670317258756f776d474931616761594c31586c3671547734494f4c61394f74526a714e77416658416a70504f4a7842397346595051397475484e7137496348447366677439792f74595035736742476e456644344b36784f7a636872736b45636341673446372f48747a43624270772f684f48765362723053355a614f754661316b7837503272315632514e74775667756a61782f71376f687a346453447a6c3330323545395056325a63763272464f334b314a7042694637574d4e746469316f6876346665374c6b657637614d52473631664355485a2f7857476e6145385a6e3841753554474b35582b4f575461324e6f4847577166764e506775714f4151464a65765274523879345247497a566d4743384a362f366d6437644d49663841486270326e4d2f6b673665352f77417136394f3367444566564c507556647a2f414353394b4f6d3145526e2b72386c35797a626b66366d4551726f32702b4e7561446f77395633555a6135584a534f4f6e4c344c73325056356b4179486d444d5946766b764e3265714c6e4664437a484b4e44326f505732647862767731774c387378334b796a4c79316d374b77524b4e4a6a5049386a3755586f747275596271324c676f5234687a51587a4c30434939366a6b6f35645342577a5747355a467158546e3741647933554a564f384452314445494d38354e4553345a4c485933634e30444f3147556f677449675a30705661347a46654c4b713374764c6d5a577a6f31566b426d654a4666773755456b59524771596c483958546c386c6c745837496c307941663956506337657858516d6238635a52502b6c6c6733566d6534486c5879384d66446a552f6e32305161346e5858337171376856537a4557494345574141307841793973797162737a637561492f55572f616730624f31713077797249392f48742b5336394267714c57337432695441592b34646975774645434f696d455344564b4b6a6d674a494f434949434648554655485038415637766c32482b6b6e39714542396c744243566273343939667954627377765374324d5472695a446b4b2f765539527550643038493665386f4f584c6452746c6f516e4a76624e6b626432563045474d6f39717645526736716c5574795158327938516677564679567350356f44646a7254596738434139466e75575263365544626262324a6e58616f5434636c33764a315754626b586f793837446132783441783738563374704f524f6d526569446a376336747a5a2f68457a3847577a31634765316b3244782f774463466b394d67527535366758687169547a4d7679775851395368356d3275516752714d61486e77516566324e6a7a4c6a4443497233726f584f6d6b4650536f614c4f732b492f7559382b57536f4e2f532b75546679394b434734335351566461354c496431416b7731537033303470527535526f4271374b494f6c4b476745724f5a354d7166753554442f536d687559456d4d5a6a56777a51585230334b636c785962596d2b49593959484836677535416779664d4a74747468393454495545593342546943506767374259496e71446e4a41674254385545444767524141556c62727751483730454e4b5971616a686d455458443936476f5a494158376c4c6b6847426b63496a56376b7749495358497875784d54675133765159665367312b374c2f7541584f783154663653515469745070453231325a442b704368356a4a56656f77416d346f61494d686c70375658435a4d75574b746b4974707a5a553635322f6f3163657071494e46324a49635a4b7145342b49347172376c774f69544b616e346f4c6f41533576386c3264724135344c6b576d4d784233474b374e6d516748474151634b31596c626863634e716c492b3964543033636d2f624f73764b4a305078574c314335316d49414f44667a4c703750616a6257745031654b52356c426351314167496b304362553657446957704130754a5262676736674555414935565333726b624d544f5741545a4d43755236726331536a61427045655a4c3845475337754a584a69637645634f4156457056717a704a5359503775784a53636d2b4b416552667679366144384666483071656d6b6d4f62726f626544414261644c48536738396673584c465a6a2f564575465a596c473430763372747a73436654795849335778386f2b5a44484d494265737966574b48497275656c3773627530353859365a64713470366f5655394f335173627761715275686a7766496f5055615437304a764573464a554e452f5a696745526d796c436f654a4656496b2b484e4248707a554170334b4350464443544442416175756436784d2b5142483963666375693577585039583639744978784856376b45394a69327a453835504e5a397a756255726d6d32333856614b77327a485a5737634b50454c6e792b3374794d5a4e4567494c39516b614a444b554f4353784c71445647537433457a706549665033494574626a64793855596d504972726259656662716341785a634f463363584b2b5662456634714833757572733778684f6f62565351792b4b446a6276626e5870506a6a347578612f3863757874536e74706e6759435762347374507263426175323737556c30532f42552b6d32592f66615a347774616f652b7142742f744a62655775466263736c6d6a46736c33424b4e7a554a43676b523856783935447977664c772b546f424758775775334c7a4d634678374e393364626f5839544242736b41376c4d484a4552517936663239777756666d435272386c6674617a443467535034494e676a4733455168674534417855466363464b526f6755456c4f537845556a45594842456f41516d485367582b4b6b675a484642504c342f73554231634b4967424c4771426b4e5446476363734155735849516372314b334954463749394a2f42594730353472304e2b4f7532583750657650334271365a59444241574d694e4e437262594d2f4654735765314b543172486b726a67785157526a39507956396d774c6c30444b50556533677172464a4f56723238675a747a2f4242756a696e4c5963557352697962416f46484356416c4e42565068676c474b4267356f67656f75706d633144303449416169714a70516f632b434f49446f49325368633449344775436c616c41434b302f656c356a4c425058454d6c6c3159346577514552594c7a2b35736552634d6373596c6567452b47437a6237612f63573942594556692f746d67344a71774b4d6f764c7079396e527657355163454d592b4a55435244486767325748423746716c45794446597264344f78397553317875617345456e30437133624f3231765839552b726c7957574d6463532b476b6c644a7449416a67677133566a7a725267636148736171357632354a34483278585a4e4b685657474f71624f645248614548506c6146694d686851747735726c53327436396a4a68675748354c704736535a7962507064632f636d2f4d6d597574587767494768593046696d75776a4b44484656524d686d5a6471653572746c674d63554757473275776c71455159677270512f7154307a44456c5a725233626e54494e2b6d574333613545504d4153483654516f4d6c69334f345a57346a36745076587049675161497743775737454c64324f6a704a44542f414e5037467641623845456b48715554777851664230484f4743434576555a4c44366c4c524333644f454c6c7563755157346c787a565735322f33466b77796b50596f4b765575714d63717356794a594f51334e646665457a73524f592f4a6357345766394b43713771695152394f535747366e4b64564a7a6f35384b4e753163766b78744166685642713879394f4f6c7765546669734569647665303030792b664a644d624b2f5a69387078777943773772636d344e4679456f6d4f625539364470375738744a756173385668326b6441464d6c6f42454975636e515a76496a754e7843484e354e6b426b56334b5032716e61325262674e564a4544567a4b30534f5343632f6b6f5331636632494530423570697a555a414a4b486769485a6b445642773978742f77447935526a684d552f4663753374726c7952684469314d766576532b6f576f473172776c675079545762646e5a76454e4856372f785165566c7459577a704d6d5050424c356e6b6c73596e4e6c703953736d354c6f786646736b6b4e7449534859676f6c656c636d49674152565161324e557644775853765764493879414c786656324b6d646a7a49695554526e514458393148574973514e4d54394c6a6c386c30646e744e76754e72626e6374526c4b57703565463638417346755173426f6e716339504d7273374b786f745268336e356f504c6575375962613644616a6f744555414f66617575584f3068595961526231392b6c2f6d742f716d31743775454979384d5a7866764e566c6e62683976644d4b433348522f366350696736386e76624731493474624a3975316566395161636159435771754a354c76624d2b62365a6259347746567774782b69585038415967356c7530444c44322f63744f3273663951484438555a542b6b65376d744f33303761786f4a655576682b61446f37637975327a45687979354e33616a567146524572703744637868626c4f3452457573507145497975655a7470506d6543432b78514d39516376677570454745584b347578752b634354694d5758644d686f6f6735322f32773345664e42455a78724568562b67627557377544583434526c587457713941585969426356792b537674776a747264336334644e4f774950496574334464336c776e39587746472b436630665a2f6358544934512b5a37317972747a5564574a4a4c3936376e2b4f4f317759316a2f38587951644f37744979424d674737465450307931624f715141503841434737632b62653564566763567a72392f5850796f38583979437a6151476b2f2b6d6e74583277564f37324d39336757747457504874374d6878562b316a4b4d534731593933614b4b363364454c6d6a416f4f506239423876775465584f4c4473356a69724a2b6836534a325a614c67797270666c6d75364c6678623370706b3162776a336f5049657057707a6d444f4c58414f724d634858485053576571395a755947374d33506f3079654f47446e68374665546d645a315a495065656e6a792f546f4e5455444974786b567a743945546a6f6b54774f6446315054336c366261624851472b53342b346e4931792b53444462324f69574e42386c757378494144395050465a7058394a624a6444795164756335654b67515837697a2f53706c38767858496a36634933597a443856365339614679794a56485346786247343666346838554852326d6759426a39526233725a7571625734346361537979624b41754f42586974743869554a78795a4279505464473038753945564a694a486c4c39693957614c796e6f47316d62684e3377776d5247505a6d765648555543466c4e4c6e464854565354346e42424a47685078586e7656746847312f774352487745395134486a332b324b377a6d58685754315739433174726b7073517a615a5949504d32626768546a3856756766302b445075586e37643252415a69745733336430436b55486f504e6a345161716d6438534f507437594c6b573433373069495a2f5448385a634f4b37653032456245515a744b626477504c3879676b4c4d726e6963524f5045342b3774397931777452737830327730477970387330385277726d6d46476a2b784271323177536a562b4156774e466b323179424a4830725a70434251614a3050696f316355486e646e436471334b42704d5366754d6c7a66564a36626d72423472304871646b7862635170394d2f35542b53383375625a76447a59344d677932357875675263412b355665624856582f63744e76617873317a4c46597235366a4943694472624735414446705a704c7074334c6e54346e562b797443566e6e376c6e752b6e6d31634636475a4f61447262553659677655597271625756654a584a745431384739736c304e745072356f4c5055705062304446697276547470397662723435654b536547326871317978576a4a6767585535374553426d6f2b4a434a775a414747537033646a7a375274352f5432696f5670484245385548697231677769524477534c614a5a5a734f465837465a732b695159563450526c3250574e6a7142757777786b4f48503456393635567150567849506367376e6c656262424455565679334731427a697a64367a3262326b4f636671357053664e6b37307a397350795141336e3652682b39446377506c6d53726a7273394e75344e427a5a7a2b545a4a643175747a355068592f716568376b462f70743866384147542f2b554374753574526257414347354f3634653369626e3953666a624c443239754b366b39323844416e446a52426b386a7a4c756e69596a2f6366792f4665707a6f7546364c41584c6b373343496a372f3366466430455a494a326f344a593549686855596f44347578654f7466306239363242684c686b76593969342b39394a4e2b354b2f626b5249312f31522f504e42353467616d7946666d714a7a475651724c6a793635306b4f6d5861466c767a6568785143656b316c7856396a645737544342416b50447764632b5671517877545762492b724d6f5056787677765164324f4575617132746e515a4e5538564e743662747a4456314e49667170794935717a59626637656337636a51794a6a4a386967374f324245414f415771526f3670746a69726f344f677a5132304c6b78666e5751316156735141436a4941616479694a5551632f65416a64625938376e786975677935322f443339742f4f666b756967696968525142465252414d456c793947304e5579426d736e7148716472595131584458494265453953396176656f535a394e763950356f4e6e722f7250336c7a52612f77434f4e4d63585841314e324a51654b68514f4c6e46573272767865717a6c2b314f496b6c42304e703676754e704d47456e484353395a36642f6b316a63394e7a706e3759666b7644787574307939696f4a31316a4559495071776c71714556354c305431386b697a75446a345336396245754542555a525242454556454555555164415563316d7637327a7477393251694f61346d382f774170735769493265766a374642364e526553682f6b6e6d79597a4d4f32494b7a3366386c75527043526c7a5a766c5642375a5265487466354c756f564a684c33727337542f4b4e70646a2f556c6f6e774f4876516439525557643161762f41504849533743726b455552555152567a75787468354668784b6c36344c63544f57532b662b73657454336b7057344672542b3942365031442f4a3976747959577a726c7977586c74393639754e34616c6f384930393635576f696f5a526e464f3141336d47574e536847526a33386b6d706b655342347a7a7a576d554a474f73596469794f51726f583555626967617a636c476575424d5a506b76616569657153756a79377549586d44627433494271635372376477324a4f4d666d6739394f59306e73527446344473586b596573584c597731786572354c3048705739743775317269612f7034494f6b6f67364b434b4b4b494f484d6b6d6d535363636a6d6e595348737953517a4b426155314d724e416a31524e4572556f7035596a6967686759316f2f46447769707078484e46337855496638416c514355636b584f47534c6535476b52536851416c31492f78494d537070316f43435237305443704a7a516b5878714d30497a7254336f4741656d5367726a676c384a526a4a674367596e4e6b4a504a6b6f70686d69774a655873794361685673552f67373068664842475459667551536a4976394a7751346e484a476b5762424141482f4c385647624e47426a4c6e696f45456a55754f3945544242347153474b445a6f476365484d35706448446755326f414f4b6f5a7667674e4a5263476e42445748714f5343496c6d674a7158475342633143687759594f6f4a6154537552795150694b3055315032664e4175534877555a6b4553307754476e55677a50454949614870785145395430526b644e457570787a5152677a79574c636b65666269426a6765786151584a5050444e5a4c38645737322f44544a4276446a437659712b5355444131544e56427776386a76474d49574163535a532b512f46656545586b7a3058592f774169623769483867722f414b69755041457945593435495052656e37574e754970376331315262627056657a742b5862624e6c706a4a384d57636f4745496a4539796b6f7668514b4f2b48755544366d6c537143695547507467734f3432386267496b50624433726f6d425a5a37767851655844374463527544434a63646d667646463769574e4d766b764b657357774978494f64652f7744637653656e534d39765a4a7830522b4151614b464d34616d436b53314a646956395641677377726936444f41427839364f747556464b6d6941675a4b53725248464548765145664c4a5533723332396d5679663068315a456b72483674456e615349346f504c3339314f51366938333148765351755671714a533153594636302f4257415271444a4164314354617a676667716f57664d59484e61684f49494569744d4c516e33494d4d72656d6737797172344c4c586359543079396970355a4479413976617144484378714b736a625a33772b6136496a4a744137316c75776c3463655842427a627241394f43617864306456586a774b61646c6e553067646944326e70572b473832305a4f383444544e38513261332b494e6b764c663433417733452f306d4864697655536a56414d5554514973346f6c7a66326f6742536c6e6f706b694762745149516c6d413374696e4e4b4b756463587167704d734a4f71704576584c42586b4349614b706e45757751632f63374b46776d6373433272757a397934647a615374582f41437351394a5a4d765479664433724e7564727175526e41764636386659666936425a5231654c4c354b324e7145612f424a4b422b6c61747049745642683352304370412f4e582b6e6b7358576665324a796e72416549717975394e7658346a5552456a56544a426f6b7a796937533463566f32316d72386c6a7657726c7a2f414a5a417a66564751476e48387669746c692f4f4c6962762b61436939447a444b336c4d5369437150536242733759412b4b5a6c4a76683857576d514f7170596b712b494758765148534358514554483969556472756e4930672f4e41444961556b75536849646b4a5339364446366f66364f6744477675586e4c327134484e534b4c302b35747a755130354f75444b486c79614f4b432f61616f51454151426d7473724675344b346c596863637374316965415a79677a332f53673777446849624173664a644f632f4a742b5a4d35594c6e53753237302b755750774b4456474c51345038567872357557626e534633576a4f30344f726a33492b54356b586c68383048444e364735706544542f554b65395a4c3973516c7048637651626a6257346a566f6552346e42636d3362383364414555696536694471625731356475454a597434736c7374366d3638556c713346745576335a4c524746655341676b78374530435452454b6168474e5a415a314c565150794f504242716479353076557474616c7038312f356174326b346f7839583231496d3530396a4e3773554851495949676d5a5a5a376536323834504739416a6d64507a716d473832776c6f6c6568712b487677515752356f475a4e42565757342b5a57336f75415a776b367234385548433363504c75556f5059713231634d51324332656f574e6473584966536570637931312b4c36554673746a6276754c596c716f705a394a7475524c552f3667734632642f5651307937464c45397843516a616c385548642b796c6f45544f556d343159725843557251416b755a613332366748765764556631527858556a664679496b41472b5343796477653671797a506d784d54574d7670397346615a4f584e43565861756631476248504a4139694e775734323574302f48677478446a552b564f617977366c65596d5559356b5248346f4c496a363855784c6d7155484546514d4d4b6f4846464a546171726653786576743349764b5748685a427839335a4675665341337438734670326c7a57474e567076326865746d4a715234567a3441327a7047595161626a36546f3853785762384c632b714568466d4d70436a7035626b5757387774775478334e6958696d4e587452426d33462b33656d615372346165785856325a6c70454c6978587239694c536a4d616b624f34387a776c2b4c63554776645857493056575733624d366a78594164716166395361367670566f5273367a47736e393243445659746933434e76467669564337706950626769415a42416f4f6172763368746f5375334b526a314b7a4555397938762f414a5a366a34646c44487858507748342b354235333148665433392b56365648704750414c48686b6a324b3631594e7a4242533947556f6d75513053596f61536767477057574c73374534334c5a615977565949544d7771672b682b6b65706a3143783567445841644d346a6a6c3346644853343572352f3642767873393243543054364a66676535652f49484642424176324c6d2b72576a6546726c4e644a674d5658666a356c715146584645486b356b54395246786a57426a326d49343969376c74376e6652595261414169324574516c6e576a46624e746347667379424a624b334b334f334b4130793858636e73324e444841414e47497757713479706d54456d49782b53424c7841744d654b797a32554c394c6731524f523559596471314747713171343856567335655a46703149376e5158513256754a4262776a544538427737467a665849536c5959593634743764363767694934564753352b3861354d613636532f59526767366578696264694565412f465878664e4a6244514179594b776b5942427a50587433396e745a45654b66534f2f466650534f427858622f414d6b336876376e792f6f746a5433357246365874664e6d2b4d516736587032784a674a33526834593831303537667a4b6d6c46626172306a683845375241636f4f5275505457366f6e545433724443354b42306b6436395452334b7a582f54596267553653677932376b5a776645344b335a626a37573635384a6f54792f59756562467a6158486e6e68774b32793677342b54495053786331644e58417244365866382b30783855656b3969327949626d6741624a4758554b73796a7669704d2f70516375523871345975776a6e794e565952466b6e714d663673526b52386c6b4e366473746a77374547746f6b616f31374573786a775758372b454d324a2f425a70376d647773426e37664e4270334e385a486c3773566f394b6871756170597848534f33327173646a616b4856503239766d6c3952335a394f75376559447a426c4b51776142594e3334317a434430735a484b6e4243636d78533272384c384933625a654d773854783976656d434345756932614c4455365674565542494b494c38796933424b5a4e546767346d324f6e665167586656635077562b386362695239736b392b7835653974583870616f6e6b644e50656836714e4d784d597470515a726b744c2f7657656335514c694c792b43746d7a467546565362384764426662336873744f6348636455516e6c4f4e77616f59465a7264344f352f6374416b4d596d6943794a61543842386c30765478545575587063454c74625748394d486945484d6a4f4f32334d67502b704c713545344c547659792f70694f43352b7968352b3576475170433571347563417570756f504873515a4e686238754241667853507857653562455846775564346e322b4332326f4e41596f67353566464278353237542b4c6e37555174774d5a3673433354783975533333703651325a5761334f4d36754d574b444f5978424c6a706c38437276743431493031783573694969457a6f71746342435453306776324946327470783039352f44383171736446777434654864375a4b43684c4b7978454f2f7456426f4d524a5452386b492f7178556a4a3045636a4468336f715a714e7071676c524b7155316f4564512b704b424c464132703564694e4a4a54514e6b6d774e4b66776f4d486b3349627658434c784947724a75616d2b6b4e566671433334344c46766f5044554d66774b446c536d5942306b72726c674856386f63565663687064425839774f435933526b68795a48532b53427250544c56795a646d774c687444517a383178374e6b334a6947504664364d414741474878515a62667030686445377374576e715a7331744a306e6b6f4b4b41484b69416b426b4e4f655368693943707871674c6a74516366536848713973305545414753383166752b5a4f557a39557065374a643365796a437a4f592f5366782f4665646d5767427951496168785657375748314c4c49616a334c54596a65674f6c6d4f5a6442306f467346652f5637465a6f533139717033457268476d45784350484f7144706d4d705a4d6b6e5a456e456856635154326b5a662b5275706b384b732f63757874507459743545684c4f5855353755484a334e6b37576253667935726d6b52457455614d56366a3161774c32316c4c4b494c4873586c59764f416b652f7742757842376531643177467a69417268376c68394f6e7273513478364b667730577767344241306139767a536d57717159596367672b5a434347534a69355142635655497a4f4b4344677172384263747a68786a494b326b71444a45307851637663427246743641426a32686338375779527138754f6650322f426466314749614a43352b6e53354643674562596859387752594f31466141534b397979334a5475615967306a576d464559754a753643774f367574754a6367526b71624e54704b317768376b4851336d322b373238725573535069466d7332684c6451754878655758624d394b36466a7742594c3175516e4f555861497038794543544769396367437a73523334726a656f5835577a306e78763846304937714e345276772b715034344c427668357047696a4642694673794c6874576246614e76626e476b73366f375854686e697473424569714177674a564b32574a694e7763434e50755645433056627462526e2f56792b6c4230745358484a4546756d654b59675346634545356f444631434b4d686b4155426c505370466849653543594f654b4e586f6742724a4268534b4c63465077514d327275536e416f2f776855334c304c4e5a467135596f4464446a546d7650335a45534d582f414a563172567733626875454e46744d657a69734f34746a7a484842426879716e674a54356f7966755639746d66464139736159746e3848562b32614175543575716f752f4e5854683046327254393644702b4c71545365517161726d62586565584557353566563756585269524d5044424158666b7047496956493431556a6855494a48464448457079374d4d457064366f4470302f6b6c4c68527a6847694a4c5651463371674451354641644e6332545067636b416a5369676648325a426745593139733041664e4a755a364c5535444b4a56704753776571504b416a48504c7343444a76644e364f754f5944686379595a616f332f41444c625a59643672306756514a5a747a484e626f43694e766c69566670467572346f474e4d42526c737358684f304a5a384f786330335265486c77503878354c5a7459364a364233646f514a7674784b30326b7445314b3137507274516b4b67682f665659665672427557616653662f642b4330656e586e32776236656b386d6f673539323059593439586173706b644c727062397161663971353034456738443373674e6b593350623936655a654c38466e387935626b4e496a6f3578524632383947356f477452657678433151446952475661724f49364d6662385670742f704e4b61536732626d3935506c33593163615734352f67746475596e4158526e6833726b2b71396632316d5069503741757662614d61594438454230366a584a517471374548717a6e322f4248476f515433562f4643547159397168446f4b74794e4e7569344e2f554335384a586f79424c484442634c6332326b6263735267666b55484e6e742f4d704936577a316673556e434554706e3166367679577a797a695652634170717a7279644262746476616b6455494e7a31462f77416c70765778656a31554f57617a57526f476b557a57304545686b466341514f59566f4771556255616d527232437055426375725054773932522f534142336f4f6f50676f5864776855555269637955455a366852384f4b6c545251795a7767672f536765414342634a6f766d673566724d7a62685a667743374455334261765562657532777950746b6e334e694734747973797a4878545735536c5a6559366d72326842357966524a674d42486e67744f7a6a354e675475792f71534230367550425558516454476b75714e454c2b33747968485534304f316330466b4e31616947756c7454695844344c6e33746c437a656b4964515a2b776e4a494c6766535430757467744d484446417469316f6c68583953376c6d4c5263686371775858586a5141494a666b4243514f445033726b656b5770475636452f445071672b42585576335235627a372b4b4f317364414a78616e5a334948394c6b4a6265566f44514c636a467541584739544968666c444c523330646567326c694e71354d6a2f414b6a4f4f61387476596d462b394357494f50616779744766354b69566d3243324575614d7145784357554a6a50324b4454454749303858375676734d4c626e386c7a4c4d6e4c53784a78586274324c6368584474515a3230794e79336766454d4630594e494c426273693038637566344c525a635551624c46767a70306f426d6b39666d4c477a6b4935394b312b6d663847726a49726c6635544c2b6a4563536738544e7a4a64662f483574636e446a44355348344f755649434d714c523664652b327678756c69416139686f5548713730796264487175623538446d4b63385063756d30533442397539636f575937653459474f754d6a346350623271794454626e63307462754275796f372f5a3174743235694f6f7931796278637537392f3459785059674f595366675872692b42392f7743714e714e37534e714a576d38556e6f335a784a397541646d7865424663564e7a5054626c5041415634446d71624e72524967566650344c42363775685a322f6b5278755a6677352f6b4f39426c395533304c64714e71784a35584231796a7734642b5935633177674e5134634f61516c674f4b313753337230413461785642377262774e726232374a6f305248336674586c376c327463714d765737347341764c656f4165644b51444f783971494d6a5631476e4a4e4863376f644d635077574f56356c64446652635571673946743933634e754d496e507557483148626d33636a4e2b6d52717954616234576f6a564534355643307a395173626e6f617674785161646c634e754e4d313049514d68495a792f42632b31474d46324e70466a786571433762574259673261755a7346436174384545416447736355706d65537a3374394733683148327a516159746a6b764e6571546a756e6b447248304e55557a372f624257372f6433747843555254706b524875703863467939794937657a6245504470655066384d583738616f4f62746f6a537a2f57616676585832577a3830613849677449342b354c3664744c597444554e637044556332706b506956304a6a7935692f436b61526d4f49347437557a51616f5734576f36595577703759344b364e6361464a4332635437444a57536c706935477158306a4d2f6c376355444d5231464355586c484544395038412b562b587651675a5979782b585a79356e464e356a6d6d503439764a425937346c587775745358667956494c6d6f7238554a797255763363454733486d694d4f437a656362665372784c5548514f596951306e504665553357312b32762b5744306b536b33415a4c3169382f366e482f414d75524a596d324e504e7056516361392f5463746775544f3644306c646a643239516c45385635346875354236485a58325a313067614f667a586c7470657256767a79586f3741614931306b676579413547575958573950734179387958692f42594c5544713163313174744b4d59367a523047706c4a55554a7a51664e42485a414b64696a3655426569586d6951346f6765614179674a67786b4b454d764a574874794d435043544833486c324c31706f764a656f376949334d7a626b44416b4e4b4e513546613459382b53445646745a7a2f5032447244754e3264756344496363672f48682b3157446443664a714b79635250487639767851534d3978756f766174526c482b4735486e2b535335397a636f64764a737961446e6a6771664b74577739766a346854385654666a47356230796b5a4e34645569515062386b433239337075433345474d333751336256617a497868584e5a39744557596b6a785537465a47506e7a4675465a5336592f6e79705642364c3061337073617164527935552f42644968306c6d7a477a626a444b4e465a4541494664713571526f6d536f477755514b4b447a50723231386d35357351347559396f5841704b623542656f2f77416f6d4c64694d7333493934586c622b3774783659386b463042714c45305a61493249547245735758486e76536642336f48647979706b67397259743659672f533361746b62596a55347277753139587632664353517568592f796d3741744d4f4367397062697834712b504e634c5a6576626663394c36546d75374167786349436f6967676967525151632f666b2b6674782f47662f6175697347376a2f57323534546c2f375375676743434b69434c48366e766f37437962307138427a577865542f7a4c636d4e753359483145796c324242356265627935753770755843386a37555665333230377861495232316a7a5a675a4c304f6a793465584850506d67356366546f774433435848425852394f74306b4337354d74736263523078616f54365361526f50656779325054344f386747577933744c56544b4e66676d686a7a5638616469437931736245342f384148467635556c2f304c62337349694a2f686f745675356b324b31514c6c6b486739397372767030394a7248365a4c31762b4c657079334d445a756c3544772f797133316259783357334d63783465316555394e6e4c302f6677452b496a4c735166533146454541645a4e31366a593267653549425833352b584179646d586e6f627261325272334d6f366939443146387348375543626a2f41437933626d3171426e7a4f433465362f77416b336c2b526557676670697554634c7a70686b7130467479394f3531546b5a486e56566b3673307238616f6f44475247436d4f4b4c705253687851486e484e41756f4f4761614d737a676731374f2f663273343362556943396130493746372f307a3161337659436f453236687a586764744b4c5663736d74376e795a363449507034527a58503841537437486432336a6b793258726774514d35594242775038703338647659466b4670542b5338484a697458714f396e7662387273737a546b466d474c4641675074696d692f77433161724f304e7730775852743745327870416638415679516363577953796e6b7a414e463359624f4f726b2f76563850545956314e78624e42356e4a6b7273584339616652597a63694a6a2f7178354d75667576537052414e6f59494d46753651432b4361473549724c776e344b6d35596d7a484c46434e7a565271494f744178754456417668677264724f566959755744706b54316343736d32455942786e6d6a49784d5152674b634548732f54765552756e6a4f6b343468644e6543394e33417437766737436e792f5976654241564646454842314164366d6f696945326a78375573636453426a71484d596f42774755385061707164424e525144453668564c54484e307a734e53423438426770426d624d4a49454e31424545596749477771394549645743587842676d365834494936416f58436b6a567632714e72354d676155756c41456c7378775149306f4f4d6b4479446c52395272512f6b6c314556526d356f653541546a52466f67567856594f522f596d4c6d6e61676b51364e5766696a4832344b736c34307751575248366345412f4251594d454378706d45466d6f5948424457633845674c3449794e4b424177665454416f553755616a4844337144706f503349474177536b42536f397662745572324d675a364d556e314d6a487859552b53597a6375674a446a4651386e5334684f5046707951434a306968537a617369457679716a504c334949433742457871344f4b417862324368692f544155514953663372467570364e335a6239446469326d514c4c4865674a626d79482b6d53445a394965724a63616c4233365161495342414d674b6f504f663542456d37452f5349694c6a69354c486d6c394669356c504d4c6f62657a4339596e357252317671664d6b3050646c2b3155656a577a6146794a46525054546b673741614d514d3866623370664b387a4d7837442b43665649524f67417948755744643264354b312f5375744a3330783659366669354344664746324c6d4d39654436685658787644547149584e7352755779424d6d644f715850504c42627270366156515558376c36546933706a7a7a39767a5761573375416170546c4f54384b66424e656e636a62486b41504c6a684838334e5069614c6e69357652624d726a2b5943424747696d6d7231413747515762324175626163546a487139793750703066384178374c3436492f494c6b7965566d546776706b2f755859324c6a62326d723044487351614d526f4e555973666267707262415653732f6879515070304d66656d4c64365556515a693643796f6f4543366e74796454496f4a434455437133746b376a625849785055797679782f59553975476d5463654b44353163366d6248424b356a2b436664524e752f4f457145534b6b4e70493439694244536e76576d31646c437358354a78597a6a4458784375732b6f32374d676274687169756678515a6a74373979756b315769337439774b5344643637653333316937315271394670383246537748625242776a4337434c455a2b324b666232705245707a4246615a2b2f6b74382f5539706250564a2f3561724b64396276504b3254702f69515a37746b476f575063776a5a444274525853323844502b6249726737324d78666b4c6d4f614430502b4d477379634b664e656a4c6c6a7858442f774162732b58744450445850344264796a4d4d55413742554b536b3163304a3430516c6a70346f4977774346496a6b6f4a4d344951664d346f4649346f44426d644e4c6d6b6e4573376f4b354267517143493846644a774771485657724c4e6b464c4d5843776b7a6c764443456d45512f657430317a7947333130442f742f684642304a673669654a53526b59645044354a6a646732695869492f6373336e30714544376e665737665250334259343736647a77514f6857796a71787a57697a7437654f6c766b6751622b3877676257725634657176347256626d627365754f6d597049597252434d49426f3057653549786b34396d51587a5961634179474248464a616c356b646457795667495a41774c55474b6a46534a644764655341454841344e69716a5138676d5a6858454a5a55514b2b6d677a34724c754e724359316152456a4d4c552f5653716d6b4f61305163533441667a566c67365950334a4e32424174785274335a6730384c4d794452357366424d7336775473325a6b364f3957377262777641546a69756639766368584c6b673257646a6f6b4a786b44586978572b3150544a693953755059755834793663422b7064595844495049455366752f5967733346364f57437a624f774e526c676d4e7258303144725a74725168485367756961366535576d424a5934705957354357474b6f395733773264766f50395366774342505566564c65782f70322b71377879586d4c2b3575626957715a645679655a4a4a7136556a6767696a4b5964694c45494946427a3756485550464130626b37556e6849676a445376513748317a7a534c5736704930452f77413135766b706d36443338597869576e34546c794b387075725a3265346c416c325a766d7574364c36674e7862386d3666366c7474504f5037466e2f7943305a33424f4f4a4665354252596847364b346858322f535977632b5a58455a72694463584c56496c6c664431436350443855487072493032326e34657856796e437754456471354550567a673165334a5035786d584d716f4f684c65526d527057697947446577575061576862447946506276573631456161494c625964673630617167354d715941767a563245686d4d30436962344b794a42727879565a7762745453434236527145434e5868344a57316848544531785151422b6f68593734387369527a79785a613477616a302f4e5a393450365a496f79436e5643594c6a465157626476414f2f66795766623374593079784331777552484c356f4b626d33747a4e594e33592f4258326d68466f34424c4f384745466d7637734e537553445445693550546e493969373175324c4d42416545436938727472336c7a38795745534a4e324c3147327651334d4933725a654d67385544784c43714c676f2b493051514b5a69494d38424839362b5a62726479334e366436574d3545396758763841317539354778756d4e43527039394638343549486a34714c314f7732516a41514f4a44794b3837744a5737647a56644249474169765437626657356c347543523953446b537352756d6344394a5075584b75784e75524743394c7462457245626b357863544d71664673316e335870742f647931517452674f63682b61447a31486f6d65713764372f4639334333726730322b6d4a366d58466e614e7552747a693068694a55495149537939352f6a6e715033646a79352f386c76702f77424f522f426545507758513949395150702b346a6548677775442b452b7a6f506f637755373668706f713764324e2b45626c73764758564876544374516778627a5943353178614d7671475837317a72424f4d4b6865686951615a726952746933646c626a67442b314266726f794679424f45744a5066696b455766523363466e7579334944526c482b493655457557626f6a6f38776e74466679567531736d41446c7973302f50622f414a4153503463566473343335487230742f366b4775567955616676566533732b6650564c434a48662b785335633067726f62613335566f526c6a6e326c42625850424c667578735735584a34524772334a32414849727a2f77446c573838726265534d626b6d376f7355486937317a7a4a6d5a38526339363944365a434f33734337632b7171382f62414d3478794a5a31363635616b5230414f47365467364373622f41423057357a414f4d56664465527659616733307943796935765948434463485a615449794944434a4f4b44563567437148714e6746756f4638315a634145485753337574794a616674336a2f4f5062755164693361746236314a326d44675078586e773970786a6f4d6f72302b796c4178456f52306b346a4e63503169784747364d4434626f63647363554139503355593374517750544c76586f634b67727857306e57634a4375414c73765962532f7743665a6a637763494c68536851664a30524c38317a4e3536337437452f4a74487a4c783664454f4a346e444848506b6730656f2f54686973636476473444394f53626633544463574954786d5a5250617a3470374c423466366d514966547257646662322b534973434657664e5836697a5a715167626b6d794461754251437a474e762b7263704350345a3967793472786e714f384f2b3345727042442b482b584c39764d72305038416b65393051473167576c50716c79674d5065666b764a346e53636b4855394839596c734470754179734845596d44356a3852336a4e2f5a5764786233634e646d516e446a772f4c76587a7163614e6d6a5a75584c45684f3349774f4434667637335166537739475138533874745038414937734132356a72483668535466492f4264335a65716258654854616d444c39506850755037554773306368534e57554849346f3657514c4b48486a6d736e71635362657239507957364748465533725975577a4869474b446a7749496648344b673257366f39367676576a61726b443846572f5046424c646c79796637574d5a3634452f676e73744b6e7556397547767738454352694a6449784b374c474d4e4d474a41376e575862574261506d4868307138617539426e3265324e69336f506950696c7864615a56634652676f61304753444e35666c6e2b452b3956793658664e6135774c63316c6e706e31494d637a6b4f355a35573443675a2b534e2b78714a4d537a725048626161562f6167303642456b68687a573279504c6f4f3163324669526c51307a3746303755424543494e5546775a73466f745130685657414e5330452f706442484d554764545541376f674f6747426f706b4368495037635577494468425046524b5a4542517941646b6561434d785562452f7654524a7a53676746732f624e41596a696c6c41745842466c437a3051636d2f594e76446a38466a6c4b49715467756a754c686c467634704376414c6c62673663526c6b67736a4d61754556646f634c6d69526c49384f486174567136644c35494f6a73347774395a505556306f53314153584474584b3656324e715235556130306f4c4764305764516f6f42477445512b4f4b446b4842422b43426e624a54554d454d754c4967382b78426739586b5932504c46424b55592f6a2b433463794356307656726a534550306a56336c6361394c7a4a6e545241743252416546546b6a59687570533143656d4962325a57376149757942486743366475316f51563241597a726e6b7432353238626b476a6a2b4b77786d397748674b727054597871673476397473334a504f4c736665756a593239714a3649694a374755684e7a7957717a30687967612f416662584b3030794875586a34783875464269417661587950747a486a302b3965583330504c45446e4b55666347516454304b3466366c6f2f777a2f335972737934727a2f6f38744735494f634e4866452f6b76514776567851415038414e4531726b69616469684e6561424447725a4a33514e6361494867675a364b43656e73513857436a7555476664434d6f31794b356c7753414c6c64554358554a446f6b7556664445754547533566684536535354775a51623241464c63356679706d474e48347132315079792f77437841323275655a4c57326d4c59537857363358767757534d334c43702b4e65613656757a35663957366152516259796a62674e56466b74784632334e38533738665a6c6d387956353579772b6b63426b724958544b542b394235375564767544747075415471682f715630702f546e38614a2f576a436333682f77416c6d5479412f53612f425a34544e77564b4379324248765777474d48574b4d694b685633504f6d4a655947475846423072496e764a614930674469463259514552706a67426773767052747932305a5751325248385331334a6c716f4b373541426b517331712f49593167654f4953376d35356b7448306a785a31557530496a48464275453479777843494439717a79674a565369394f32613951516135444e4b2b6f4e67713458684c4e6b4c3234387355464f3975337351584444677135335957382f782b537a53756d3746336f674969416644735150633345363642703535724663464e645a5335725977504255794878515577764559594a4c335658676f49474a4f6e776e35705a412b4642444677477a51454e505972426f6f4d456f5934494c6264634b4f5666704242484a55516846696d456d445a6f4d3173616977795732455a322f43534f5430564733736557586c6956724130396f51503932592b4f4a79366f713233667454776c5539796f6d4d33717339323347356c5642314d455350717a584c6a64755767305a4675446167744676647759612f67673273795555384b6b447169342f4e51486a67676759386a3731476f7864444f694a38504a415938493468416e546a6b674f5353354f4e6f415a2f7051504b576d736a525a626b6864426e792b5371756d643273734f434f33756945784671503830484b3374714e6d5a6e416e2b4d44493866334b71334f4a71376854626638392b314f73684d315042486362573341366f764534734d442b31413433554c494a6b6669714a58376c302f5647316e4b7543743246694e3065644f763652775a6174387873474d75576b494f6c73397662685a69626656475138584630313244564a5a636e2f4635792b31756136786a4e6f76385630376c307a4c6e444a4170334a304745772b716d724a6c71326d317432625a7477776c562b315a7145382b614e714a69474250766f677a584f6b615a2b4e5969476d5743374d72305a3946364c6a6973382f54524b526e5975592f5250443335494f58656c504543695733636e4955576e63323731672f77425732572f564871437173536a63384a4272682b78413843544c71693365727a4579455778507853454f61354c627372586d487a5a5952704642634e744b562b4e30733051774143306969627066676b643341514853346451673479727751314f46454455495331796f6d3071642b4251417634736c7a392f5a316945794d4470376a52644a33444655626a2f684962443830484c762b4754726a584c736f48524b71377438644c4263486374356866494d676c7663386c30624e774d474a35726e5749655a787033592b334e644b3344394b43313879746e706b547175506e706234724d494d614b376254467138387343506333352f76516457754874564c4976584a53557446655065694b46414e4844676f794c4965476941746e6d677a6b696a496d71476b73582f616768524e523071484e4b3478346f4f44756f6e56546a3863316b334e696432506d58692f3841434d422b3164726332486e54412f4e633639614d756d582b3142795262695a6152377632702f74444274457a584638453854314e2f75572b3078366b4532773069496e69417570626b572b53775374366562712b7a64594469794239786238325675324d48655257326737634654624e484e666b726847684b4234534f5663317950577473542f35454258362b5943366b41346633703479317861576552516545684a2f624c676e6e4636476936473732506b33357969656a4675437762713849447451477a4479354271676533344c30473367573661435264655674377253614c645939516c426a4a774f31423272326d464a646e7438316e6737734371495844656c714f433162654f6b75634438454861326252734e7a58412f796535456d33456e71625633555a647a624634796a7750755869665539364e3175376b7834413059396759664846427a4c7444714761545166657239786963323976594b67794f495165673949336f7651466935346f6a7035782f5a387578625a576f584351333853386c41364a43514c486b752f74743770386566314371445a61327069666c324c66617469334567525a7664376667737039523230525351502b6b2f69714c3371666d485441652f6a37636b477a6362754733695a30455737483750623372794f3833553933656c656e6a6b4d674f4874327262767850522f554f4f6135626355466b356962614d68315a56356376696d7454625363776742687a5168713850417579443339363735396946334b556164763746793935594d375775744237317039474d726d7a6e5a6c585434666e524a626d30545a6c6d67343037656f5663787856663238596e4269745679374742303550303967545268435a36654c6f4c396e59474877566c7a5a7745686f4445634664742f77436e463642576d37413442414c634434636531646e61784f67536569346e694a684836732b4337304768455a68736b46674a47536f334630573436356535584759694879433556363462307459772b6c73682b5a2f4a414c6b3558617a4e44394f587478344b7377635370556533354a69415258414b55306c78704a507734657a494d30626569477335386c7a722b33304157517866564b4c31306b384d4b6375316469514561444c446973307475444f4d38474f625635653342426f476d4461614e703739503755597a6c64445344517a6c792f616f4c4773367047764e58787737766239714157346d324e4138497735637537344a326a56383030334a70512b773976336f66532f6567674c56353855664d49707851387867777879346675516c49577a5556504642626250742b7a6b6a583939465670416a7278346533344b795a5a32617674676767365a5650354a345843414a41315a56346a6e692f48386b53644a624c336f4e384c6d734f467866566f5075497a5a2b68766974763349732f314a6e70396975467364354c31475632394b7031675248434b43323547467a4a634866624c714a46463364594d3250655658756f617832635548423275786d62735363435636654732594f354e4f705a7654725775585a3846316230327759494b6f536154686b50574c42752b6e334969706942636a33592f423158614f75626a4e57657337324f303263784b737267387475326e356f4d332b4d2b726e63512b3276482b7048775069517653386c3870323977325a6935436b68345376652b692b74513951743662684562736145494f7667694b6f6f4769414448676f66656d64636a3172316948706b5031335a4470682b4a356650336b42785038414b505670585a485a575430442f6b494f4a2f54335a6a6a544a632f59773832774948426a2b4b35446b6b6d52664539363942364b4263744357594a43436a7132387444635062322f4e6450625468656a455a673162396e74795533653145386a7839374c6e584e746532356547484242325a325939367a3362554c5657444c6b7a333130566c477145747a654970452f6d6732334a43427056783456364830585a5772566f58346b536e4d566c6b503452386a6d2f75586b375159363768566e6f487138746e75664b75482b6c646c58674a48413875422f5967393654376b4e5277526675554d696747574b4c61554d7170735541626d79684f6e46526c6c3951766978616c4f5830682f636734502b5958342b54617467314d69666376476174533365722b70483147384a74706a45615248764b353773674c554b67716739455770324949614b53716778524a667451444371362f7033726d343268307a6e49322b483733584a775263415634495071757a7632397841547479634c53766d76705071317a303634434f7145764646653332487265333331496e544c394d76617144707149596830554748664672746876312f677436796273457a7445422b763846715152525252424634582f4d792b36747834572f2f41496976647277762b5a67666457332f414f332f41504555484d394e674e635838507a585a7630777277575462572f4c594f7849664261726b6e4767476f51495a576a4c555a434a34715275434a4f6b767a3472467564755a647676536552705a795548566a505479516a75744d6a714861737471556730637a524e6432356a4c584e426f68764c5249366d504453757873373476436871764d45523144694636663037612b584855482f65673673374f75426956346e312b77624632426a34767958764158586d5038733237776864345551656d6a4c5845534742544b6a61663846762b574b765165642f79623155625331354566484d65346356344f6370546c716b3772712f354c4d7933397745757a52487433712f3066303358487a5a2b486e6d6734384e764f5a4442433774726c71576d6361723039797a785964697748612b664b755344686d476c6b2f6c4f4b4c736a59572b314f4e6d49562b43446c62665a5476644f47613154394576526734494a344c7662534554576f572b41427052423443646d64715454444a536331377264374f336548564665653953394b386a2b7044776e44676735454a484559717a567971713477717843746e5150676739562f69463355626b65514b372f7245744f7a756b59365635622f45756a64534752682b53396676375033473375577631524951664b5a6c64445a6250574e6336412b465662625a4735654d44394e6663753277307350686767574945493663683765394e56715a346f6948536a6f4f445551414e4435725a627736714f736c4779374670745769592f6b55472b4a684c483971736a422b785665567877374b7256434d6a6767342f726530742b555a7848552f692b61387a62742b6161594265672f7957636f516a6177646566327477577930734367325741624c456d69767551316673564a7677755230384666435773616a694546566b655866742f7741772b612b68787052654673576863334673527731522f4e653746454255555551634b5445347546564b48686571736e51357173434171633042706a674f616b513261575661444e484870723249497a5650765169374f3261533975624e682f4d6b496e742f425a592b736255347a2b62664a427662534f6c5138633846566176327267614578506c475166334b387842366376636758446d6f4a416c304e4a315a6c7365615a732b4b416138483976656d3038614f6871413654696f43454231653732716b427271544b752f66743765426c50704151573877736c7a66324c42506d544177595a726965702b72692f4879724c743955734848426c7835544d366e753745487062762b5232674349786c497651344438666b715a2f35484c5630327742322f73586e58497971704535464236657a2f414a445a6e2f79323551374b6864657a6474334c6571306451794b384445354c54744e3763326339647644366f79774b4432375a745651764b6856477a3351334e7358594f41637542567746582b4b4273504355777737556f596c696f426b43674a693353436a395655735a746c2b614a6c567330414d48716d35356f345a436972497a4b42346e6d6f47436d6446485a41786255796d56422b53456358346f78716661714352445966384170775159436f782b6166567051797167456f67344a4232344a36745442566a544d6f42516d76354c4864455475725463434f35625437787a574b5a42335564583645476b385070522b6c7356427045574b51484930346f4d4f69416b4c4d6d3858376c5a74724974366f696e564b58765458725142457a6761486e6979533258354e69673332347541706f6373464c5a306975434d6932484642426d44323856544c774566755575544936426d717476754c5679734c676b4f5042416c686a48535137653374383170466b416157392b533538377349336a4553662b4869743975342f496f4b647862312f3078395854373174684479774978485448704859466b6a4f4a75786a32313741746f494f426f676b584e44676e694e53555935386345375055494a516546486732484e4d49697366324a6447684161696e424e394f6b4a63454f6b3151574e7757503158665332646e7a496a724e4964707a5772572b46566739593235753762574138725a6675516552334d6a63756d5a48564c786470573274356e7835634d466975544d376a686134744b54383044786d4e71574d4e51474e63663372544466374b2b4e4e7930626375565664434f73644c417632717263512f55496b664e414a624f4f32756445686830742b4937314c333965307a3135724c4458637638416d4e682b4b31797348584668553468426b4574725a4c333679483073756c74722b796e45517358504c4f516c51507a4b53357334336a716b324452354c5a48593267484549615333303170776f67555230453670422b4b34507131727a647871746970694a466568334174766f387567376c7837784564784175526c2b53447465695468486169313956765671377a376c306a314369354778412b394d67326b7736744f47706468324f446f4a515579516942676f37312b5345755874375651476e424959694f4b596b4d457242414d3356636934344b7779565a69773755436d6971484b69736c5445735655593150346f4b37674875584f6935395176662f41452f776975684b52422b4b35633552746236356450554e4878705242646474617a555644666d73706d62636d4e567374527a50356f584c47724b6d4b437546794f4b31787541594c6e5374536a5556566334337868682b4b44736d2b3250447353546b4c3068435835555a317a3756693453444d3057797a415175447650752f656733516a71714d5063693477526944676d684b6e447551434a694332536e694e63464a30716e4151435131522f68564d756d54476f7956776f4b70574f53437468324a4830306f58566d6e535853364866345a6f4f5436782f5276442b5632344f73467134496975613165737865344a356d4943354a364b346c42324c6477537268544245375a77354b3430647759382f623572645a39534f6a544c484a4276466b32336b564357787a574d627a554d797447326e716b416365484432397944586274534c79714f43325274747a556845524f6a6837302b6c797a6c41594d415a484350344c78322b3352336c2b567956422b53395236764b566a6154307535614c3869764763304249645150696f4163464f31424641555151676146304547436e4e514d5643485151535248743271536339695942696776324634376663516e48497376546572447269324f695556354546705077586f4a376935666a4355384e476e765163326533695a6456487056627474364a433762457965305556733436336c4556416571625a6d3443372f365751542b79326f31447637636c70746243334565325331516c71726d437251424b6777515a7a616a70616965315875566b346b3034726c377138646e5a382f43524c51484874516455466a2b4956736944303846774c5072396d3530376d33702f6968683776337275574e33744e7a4a72467747574f6e43587878514e476f66483845596a6a55396942673076346b585a41545373732f6877527751647a31594b4548676742422f465a3936644550356a70392f376c664b57694f71536f2f384176424f316834644a624357522f44736442787032792f53574b4839654e4d6c736a62316730306b644d7555686946504c4d437944444b563635486d6e746263352f4e6152486c2b5332574e744b3532484e426e3036596d552b4277352b314674394a6a503033616946372b61556334762b517156664462615a43567870532b6d50306a6d654a2b41523346335262504538554854315a686b5a6336726c6266637a745259316a54743975533646753943373454335946426a3962323533657a757768346d3166376172357a47426b644978583158467776447932763258716e6c4877764b5565444545684258736433754e7242724e7353424f6646617650763375753562454748694873363357764b756653324b57354f45546f474a3730473762776662694a62554e4d6c77726d3033527545616a45435649673441396939467478307571373068626b484f504c4642587449586476306d36626b542b7168667478562b393274726552613945534a2b70756f642f7743434e6d55544c73563077574c592f4242382b7662655732756d334d4f496d7176395532673238784b332f7741632b714a586233327a6a6575617857636a70493538567776554c643362542b327559572f446e6a584a4237582f4142304e3666615048562f37697572454e324c483658592b33326c71306352456175303150784b334d44676149466e636861426e4d694d5969704f51586c4c6d374e2b52334e764352775041552f42325750312f31673779666b32762b47482f414b6a78374f4876565730395274375778462b71516361522b4b4473327431456a564d675a3969726e36767459593348503849586c3978755a6269526c507541564a6f673976744e31743932487453666c67565a653952322b3248584f49504a654868634d4a5046532f505561686967397073643974397a66593342537351537a6e3969373159352f745879674f56364c30583136357435433175447173355a36503249506179634665482f414d6f33506e6276516178747845652f4665336a505778695847584e664e2f5670617435656b503179515a4c63656f6356376145795a4552342f42655132397563355047756b61704e6c6d7654656159454f4d5277516232727170525a355469626c50597171562b632b69494d556b5933374a366f687553447158502b4f4a4f48344b6e5349794f475254796e47354551496f33784b7a776c355677325a6d6748544c32775164625a6a714431507346797638414a5a455837476e456176775862325558476f727a667239324d3936482f77436e45523735562b53446d33472b3435766b75705a3963743747334b45346d557452307467324e542b3963653844352b724e48667845675a35466a326c416d2b395933472f44536c706763595177377a6e332b356250385a32596e664e36593662592f77445558412b44726a5141464f50344c32766f65326a61326b5a4878585036687a787748752b61444c3675544865376558422b367634726f6d3147564f61357671594d74314357516a482f414e79366b4947584c6d4f484c383045454a534a684130474d7677375662637557397645616977627635734f4b35753939572b796b4c4d4144486a48474a35356531567a7033664d3670316b65382f73485967356d377437726433353769554a4e4c4163414d42376c534e6c6641615543427a72383131504e36663454383067756f4d583974765344426d345056542b333769336b442f715772376a5365736e3338565a4734446936446c456d32544359306b5939716a6e32393946315a77747a2f35527143795839724b33487a4c56595a67346f4e5672317a6462634d2b7550365a2f6e6a3733586332502b5137652b524366394f6668615651542f4e2b624c782b4d5769516b6b613561666837653155483073682b78527452706d76492f342f36704b33503761374c2b6e4b6b482b6957513744384433723179446c3335364e554a5a657757433530795851395568345a5a6b36566844306b67467434315852735851445876574552656f7a56676b776442304c6b745159557957766b4679344543516b563159457367575148656a6979444636703855436e446b755a656b49334a5246417571596e735846336366363876333845455953464b736a47322b536f442b474f43506d6e4d494e4f6b41616b595445614c5035704f536b5031464231647352703144452b3335712f7478576261334e6473524e43507a57697557614169624244344b537156474971674f7031506b6c42434c315a4249317777515a36706e44496b55624a4172747a66354b53444b42685243576b4241517a31523156666b755a757655345144512f33594b757a664d68356b2f7247504c6b67536339524c635a664842552b4c69724a394966326f714a52707051567a6948545777596a76554d54676d78696763484168623579303264454f6c6a535842596254675234725a5a6835306e726f4856496f4b375071736f644f34482b7366694256644f336568636a726a555a4665553365364632374b63523053494552324b33625835574471684c545877346a334950556d543152417158584b74657277502f414344547a784835726f5762304c76676b34515770585063694967506b73337145705273536c6a6c3736494f4675377575526d61764c345a4c6c796e706a4951774c3669744f376d6452684833386c7937386f2b3542302f52356769516173532f5975305a7959652b4b3876365a644e7537544130586538316f6b696f43436d56322f4366526263454d37306462726534335577444f454175644c314b4d574559796e4c6e534b76733775376f3169455a63596c42666f387554737a7256616e7043796e6358623064486b6d492f567142576d7748784655476e65546a446236726859447853344c792b2b334276334c644a5945683879756e362f75534e76437a4847374e7534657757663177524679426a4c7177354e3742425053354e666a4c4a2f6d46366b427976483743666c365a6e445647533966484e424745634d30524b4a6f3656337878545372526b43697454676d5a6b44694179674a797a434273556f4a7a4b43464d304446316d336533316a5574565146585070424d696734643242744f44456b2f77414f4b30625430362f6436377a323466702b6f397551576d57353873744141793479516c646e63447950756f67762f70322b693351766a696539566279666d48796f304555495041367867714e5166564b704b423766534f66425657693870573850327071347041514a56784b436e6657346d647663745752454c672f5544516535632f63322f4b76484f456d307270377136597974576f484e35466e7056566279784b585765306155474f3435464d417937473973655a45586259314d4f3669343975736d6c576c4f4332796e643265796c62672f6d45303542423150544e703972743478786b657563755a5462712f49677432643662376747324e485a324d737432745355456848526b695447636e4b566d6f6c6855674845494e4d356159676373456d72545832436535314d58775646796143775445716e346858327a7777574b496b5a4165785776583563524159494264326362673132756d662f70574f666d327158414b5a6a417270524e4f536564754e324769663769673552766c51587936716e4479626d6957497a4f614d4f5278514d5a452b39435875533974455133685151794f704a4c476d4b49702b314e414636346f476b6f2f536a6b786f67656c424e5576676e6647715454673361364e4d696773456a495653463277556742464b5a76584a41776b2b614577433744484a4a4c7051637871674d4c6b374a65433664692b4a554f4a57657a745936646435332f53367331426d6a51636b47726b6b6e654751632f4256534c56642b314a4b577248747167736c4b52447654504a557a6d4f41666a326f7a6b644f6b344656412f53545149424a56456b68506867677a4230474f35593133664f4d744d79493463714a6a453653446e6d7447694f49533651614948305274573478686b46546332666d2f55522f712f425778594b386648327a514a7462454c4e73323764497671302f4e584d345a4b53465a6869676e4a534230383068434579644c3445494c4c6b5766696a626b4d426d6a7263616c6e425a42744632634f785558647474372f5663686f6b66726a696c456752564e48714b437165776e43735471676665333472565969504c41683764364d447070454b435562564357315370333544696775787170346134714d774a546469424e5137307a4e3071515949536b496a55634545385571653551793143754b79584e372f326f36755a6f46564f55376c4c68782b6b5548356f4e55747a4342596d76425652334275526b39497454382f324c504d434a42444249535931464879515637693752364d755666477361732f3142626274526f4a6479714e4949303836762b43424c41416b4a532f617439755878574778434e746a694674746d714452446f6438554a68364555526a4c696c4a3155346f4a473563746c6f544c2f704e592f47713132392f48574265365a6363592f7337316b485361426c504c78427a5164665734314444696f4237653373467934796e5a4c57354d5030354c544466524a2f71524d655971454732564542557357595a70495849537241756e59593549496547614c365170524441635541757763664a636a31433349474e324a4b3745697978796a727439726f504b5841524a75613062653659686a69484b6d377436432f596b73415272785162764d4d672b533032354f78574b4d61764530576e6279655344703269775931567261566c6c64304870797935653361744e75374335456161463042784438315a41423073686f36695252637935366c4739756f62657763395677396d5341657048724a3556586e3731677a4468656c39536764576f59532f4a634b384e5278594e6b67347475776454643946324e6a73346b43557871422b4b3538352b586c677535745a526c434c594e2b3942644f4843673565326174684432354a674b434b654d526e69677a372b2f6474574a2b532b715854544a382f63764a577252423673422b3165334a49483472686635485a68627432354d424f5250755165664a4d695a4a586f36414c78303830616b30514e414356563237466736535146797265334a726c3846324e71305379427a744c5a4935635062325a61624e6d46734141383237453459732f48323765354e414153664832352b3542782f5737544d612f745847674b3058705056625554487a4836425432396e586d79585052515a494c5263414a4f4b666267784f70612f5476524c75384c2b43422b6f7252764e6e4c5a336a74594155776b632b6144702b6c62303757506c4166314a6d4937414d667a562b347467796f576242633730332b6e754c65644a5a5a72706271656d4c315935494f427634796a315a3856676a647553384a4b333778726c4252563753443936445659766269674f423472666263556e69716f32366159426d78576b4d476442703238784758654856653639594f77764359367245714e6d43684b5968584263375a3254367675644a2f345948564c6d7944316b375a334e674844554e54657a4c504c627a672f7741434630424b4c55344a444c56466a52427a726a5a6f466a68677568706a4a777a6e465a726d33596448782b53444a4b4965677068526172496a6250554d4254733565326172493079412b53494c5371364179477435476d724251644e4544797248386b59734a4d5777397553416b4163455859674d68535234486936684f6e444233377a6b67616a3850646837666d7169613642694b6e384f66616d6e4d4448785a6533746b6b3277306836597567752b707a6766636d4a503746574a616947464f4743615854315949486c4e7a58736638315863755173773158446f62456d565033726e656f657457746c2f546354754436522b4a2f426551336d2f75377557713661634267454855395939596a7541624669747636706363634f5335767075392b7a75766c49615a646878574d6c3047656944313533455a646347626770654a417233653243383974743259644a7174513352346f4f72365a7539453577705574712b5878585475536863746b4f34773731357662584247512f5554327275573773346a72455967564d734d45466b656d514868476659764c2b7465706e66586a705052476b636e35712f3150315153486c576350714b34705a413053306c59627631436b754b70717069673765782f77416c335733614d6a356b526c5046656773663566744a782f72435544324f36384c474c4630434f434431572b2f797964304747326a355977316d732b374966466561757a6c4d3637684a6d63587a2f46566d71426b2b4f5342326f347175703650756a743768675138446a2b654b356570787a54516e355a31417563554876423766765765647348714e566c394d39526a666749792f64322b31563035776963582f41486f4d506c67467048534f43356c77616930586232717574754c577167392f743759724c70306f4d4e32485477642f6274584b3355474d437a616f503234682b396e71757663684b3430576554694948504c68794335337173684b2f6f683462596a613764474a37793644306e706e2b57776b304e364e4a2f376b6167396f793771636746366533636a64477132524b4a384a6a5631386e443446624e6e366c754e684d7932387a455a78786965373978356f5070324b6848436938317350387373334f6a6544793566716a57507578487835736d39532f77416f736264346266384171542f555043507a51647a64377931744961377368454c7748726672557655626a5170616a674f504d7244764e3965336b2f4e76534a346342324c4e774b435244314b6b5134646b30496d354c534d5376523762306d4d4c516c6434494f4244617a7547676f74397230374b56563059773235786c683270374d345472475961503034494a3968626c6a45554865733339707473444d7273574c5a4c7837776e38755064696738707576546a6159514f6f6c5970325a513853397635516b5270507754332f536f336f616677516545694336596871696e4469742f7158706c7a59584f6f4e453446596f537a793979446f6250317a6537526f786c716a2b6d587336372b7a2f7a47314d36647841772f696a55653739363866497558437259653542394d6836687439345947786369534a595a2f477136612b52516c7035486c6b7576732f77444939357379486c356b50307a2f41445166526b4677646a2f6c4730334c52754879352f7859652f38414e647945347a47714a6363636b444c78582b5a57354463577268384a6a703777612f4d4c326b6a706953764665732b7032665534526941596d4a704b51792f65675746787747344a623938574d584f616f326b784b323071737270673479384f61446c7a336d346c34656b4868374f6d74334c75463035653243325349664467716a4a7061636355476a62584e567945756136652f74693562412f663759726b626366314945654a2b7865693346677a327371594476376b486b4c6c71353575703243394c3658637577674e556d706746796f793134345965356239715a433542734b31346842365062335a7a6f566939663273747a6168444a36726f374f4451666968766a4552476f73444944336f4c7475414c55414d6f674b315a746c626c6274364358624473576c4238353951742f632b703341634e626535656974394e735a4e2b433568746556767478502b50356c62704e437556475155584f71525a5a376b434a56775639776b53596539566d516e54336c4243426a4555556a496d584a4a4b4c345a7039765a38794f7634506b6730323550566159544a4663556d336845426e576b65554772334945456a507478557532775258444d4b61546a71637037636458546a775165573333702f6c7a316b644a39367a79326b744a6b4637472f74656c2f70584675512b6e446b67542f4142636a3770687a587553514d56342f2f4862576a65662f414a75522f774455463250573765396e6150327368474948562b6f3969447a4f357551323237767868314f52587471755a754c393263334e4f7843786242695a4834715467386553437147356e43726b75744e7631416a4e6334304c4969426c685642742b2b6d3147666d702f634c6f4c676b5335554379434c39716351516450622b7337754a6939592f784c32507039337a726570367948763841623372774f3332393634656b6436375870566a643761376271664c786c4845494f6e2f6b6d77756275455049695a334163715537317762482b4f377951656569336c706b612f4231377341413077586d765566577232337579733641434d4a48394f534469627a30693973326b5a43512f683967724e68737478636954434f57656136477a74333935454737344a654c6e2b78642b5241327374464e48446b67342f6f32336e393170756a7766745a6576584b394d7441796c6550314d412f4a64564246464645486e3579496c55566669674968363571466a346c772f57765644624a32396b73634a792f416669673137723157787435474a4f7158365938655a7937717269582f4146692f64485164427a2f5a374f756151347854523559494a49556646414941765441496735354642444854327262593955334e687446776b66706c55664844755745696a4245466b48713968367844636630354452634f575237442b487a585330757643672f5576522b6a2b6f2f636a7962782f715146435469506232785164676c7a7834704a56664a4677516f4d484742514a6576573745544f3553492b4b386c3668366a4c65795a6d695042483831752f79486565644957492b47465a634e5837766d754c346b436b564c4a7377744f33322f6e793035447866755859322f706c714c526c31453151656638414b6d6152434a74536855672f4a6576685930665438505a30446245343653337751654f41376c4348616d4b39486632635a354c6b376a596d30614f325342646875356253384a417444366f3851765a6d524e494233586769474c48466571394533506e3242624a36726550387553447247765367394352696b456a6d6d42515168772f7653367633706a4c55575a516e6945424d69543163564e49314d636b4d52564d416663454259507a51726c696d4d64564f4b4f695171596e3349446868376c4b495a46736547616173656143765853696677696f3761726d2b70657157396d4e4d414a7a3450526562336e71562f63644d354676306a4473516572756571375330574e7739674471715872577849365a792f77427138554b31544f325344326c76314c625878706850756c2b614e3168656a6347426959636c34714e5174466e65334e75656b7567396a703034344b484679734f7939546a75546f6c30334f474950597463692f5467675979424f6b352f465a3773664c75427643526c537363566f6a704e63307537486c776a504d5334494472647449547a6c7138574157614e77444433356a38304a584358474f666367756b524b4f6b6878525a70323453704a753739696f75376258345a454f617449745848736632437038717a482b6d5a54702f45674e755174544a784752355a726447344d71415a344d793477323858786c6f486972394b79377a6661337432334676356f4f6864395847316d664b36704470315a66465a6a2f6b6d2b796d4258394d6679584937555a494f7166384149642f4f4c6561332b6b5a724d505674362f38417a54662b5a596c4347516432782f6b7534746743384933422f46512b384c3047793956322b2f416a61704d66544c384376424570347a6c43516c476847614436504c46776957656e466376306e3150372b3042492f7742574869356a69507858534568346b4269474b73305a4842744e556d717141646d51655239533270323936515a5569516f47425a657139523251336c743450356f456d35386c354f794e546a4e366e67673656754a38634136723330694865506572724e324e6f3659384d56624b5975526152785163375a627a623762786955356378514c707933327876787063307a504c41396f564d4e6e6175755445532f546c2b4b73507074707177444475627651583235485457756e4d4c54413949302f366e57653361747770436e6572376b6d476d4c4e78515a626b4d584e4667334e7435786d443442373170334567324b743265312b356c47552f4344715034424274324733386d33716b4b796239363347546a6f716c69346669706e303473676d706977526b576f706936724a6571413051385641685531474153796d774b4345645056676c42372b484a5179596348554669356371667951566b7555686462496258553270576d32785942427a787469616b726e376a627968507236704c767a7771715a3259334b537a51636d784271426149782f65725074476c783976626d6e30744a426876514c5571714c636a4759427758576e5a634f4b4c4d624a31462f6878515652424a6241494852626b4a544c5a652f354c5647327035586d644a776c5351514d4a45597068437242437a5a506b3270696f59525078592f436f566d4e58514235503031516765474b4979546e686b6758514b48344b644f43676b77636851476942446e71376b4b44745668414171394669335738745749457836726e30682f624e427a765643504e30667077506175624f337271745632636a4b5535346b2b474f535332484c494d6e327463322f55744839744f4d632b35624c4d434769363132394a4963643644424461366644687857726257744e2b414e484d6a544e61504c6346677364306d33636a63344f6737656b536b34373077747849594c4859395473334939524e732f78594c594c6b626c594548766442693964746d65784a2f53592f6b764769712b67584c4d6431626c5a6c68494e2b31654275325a576268746e474a514c68565238304e536a5a49494755354b4261622b316c6274777553776b677a314b614d435a55526861314c62746f3249676d556a7249384b4445325341344c75523944763771486d3273446b6149586638414774785a737976546270486864304846694b727362434275324d2b6d5877584e327577766271576931463565354c717537535a38554c674c48696737316d426e672b4330787353674e544c6a37583179355a4c54674a6764785736482b51375a6a47566d51504b614471326f7561713633414545427a325a653563452f7743533234672b565a615838556e4379626a2f414344653357454a65574f46756944314f3476513238444b374934475875586a6655643664356331797045556a4467452b3668354673516e5737632f71546b616b4134522f4539717749415a4a68636c41366f4567386b6a766a696954777a516466612f3546753744516d31795043592f4846646e622f354474622f414533524b314c6e315248342f42654f786f696149506f73493038795055503152714350626971546349776f7643324e786532702f70796c462f306c6573394e33773951672b4677654d5a64766567612f412f765568653875334f636646356374506141666b377252636754524c6267306e5949446132384c75327454746c37336c782f314d4d4a6649484656696475356246794f6548627757376178742b51497848674f6e3359685a62625333307249485430335147624848346f4e4e757a474459506e4c6e7954516d5a5736455047556f7136527942703953796455524952784d6e3438505a6b463078433331584a63327a574858506354663652386c5a356276493435794f66746c77566b4270464544454d6c706a376b66636f5279515857743163695750563763667a58482f414d6b6a476362573767474d4a614a643952376331307044682b394c6474323978616c59752b47663456516566322b387761583730743033376b68706d4d6539472f36624c3038395856614a704d666971623171352f795735414f5068326f4f7674507642474d444e6878474b3237726169647369553249627135727a32336e6145663638376b70483642514c714462486478477361625177694d6539425a734a796c463559763731304967796b79716848514b4d2f344a373932567131647578506868496a7479515a4c2b2b743747326230793876706a6e4972692b6a6257587165374f34766543483953526c672b51397367755063757a767965345850465779765445504a4261324b36636a7a356e7451653433662b516258616874586d544830322f774154675069764c656f6575626e65764455495776305270377a6e387553356c4737556b75416f676d624a4454464e6b70584642444543714d5143555751712b43416d415275415551694353744e72613362735330536779794d73446b6e323930325a75503841567a56302f54377365715959486951733837636f79306c42365030623151574a55503841547a74384f4a43782b74374363623072384b776e316539636942303979394e74397a4757336d4c7a79454a4355577835646f516559675a41754b454c314f79767876574954657352706b764c7a63794b326248642f627a305030546256326a4e42365065576a4b44774a695156524755515747356b422f48485574466a636559477a77556e746f536c3152515732626b492f3841553877386f735078516b4c2b343859596654484d317a57717742626a536835667557717a61786c4e3379664a42727367436777433854764e304e7a757274794831547032526f4375333633366f4e6e594e6d795875584d547742586b62456d38446471445353626c7750384176542b6f54724747446a39694732683175614d4654754c6e6d5464384546424757587758706652643366685a454b6b4d65576d4949455365326f347446386c356b676a707958712f5139744c797866684c6f6d4472686943617352774b433731513654616b4d412f506e376838564c2f414b6a6f73572f4b5a795063756c4f334d56672f4d4c7a56365a4d35794f50562b5151556b69553951783438314e576561716a347167507a545375447464416c34435743713145304b65636961414b676a556773654d75724e57572f69715a5142476f496a42686e7a716730786b42455069726f7a62334c4a7130304f43744a654c5056426b3365334e73656248774878636a2b537a366e356765396459474e584869704a6371566d56753462655036633855465543666f7077342b33354c364a734e774e31596864783141652f503472796e702f6f462f63487236496678654c334c30327a324d4e7062466d4c73433965614250566267496a4559672f67734134594b3331412f3164504166486d7159786645555157524446575347654b7168494f355469663745466b4343776c774b36316b366f6a735847316558314478634d56324e76624e75414576476355466a4641386c5a436646567a5044483449494239503731784a33504d75546b2f314565356442376d73617a306a75396d584a746d555a7a747a48554a792b61432b497a41566b35694d5741716b69516134684f4a4168304351686d45326a55576a695437666d724e51687956316d324b584a5a6a702f68422f456f43427036592f535062337256624d5a315763312f4e4349596b6842726b4369497561594b6946777631447657694e5167566b59672b4970516451352b334654543730426452752f69733238336c766234316e6b426975586633742b3847704348384f506567364f38333176626b7748564e76434678743576623132505530512b4874697171572f442b3155584a782b6f49454e79546b4d38546974337075386a4c2f414d613651343848354c6e616a324255334143586232375548714c7530376c6e6e6175434a31784a48454c6a625831692f5a476a785234477058547466354274353075526c4538636b454e6d6376704e4d31623972634e6164694839383255674f755859324b7a7a39663238597443334b5a2f6970386b48517437516658567542702b53772b706571694d5474747563543153794143355738396133473736513175332b6d4f6661735558694b5a384547754d57444c5243515a2b3559664d346c4554694b50676733777656634e2b58376c5a472f414676712f5646633845417579594d635062336f4f355a39527678594365755043344b2b384a39397535334c59675759314a3436636c7737567730693951563039356342674341775a753942794c31787a4d74677352774c4a376a704a6869675731644e75596b4d73313666617a687549366763576465553141657a4b7a61377157336c716a5633635a49505453322b59795674697a6442646d3431574b7a7667517858527337713349554b445a48577a3549526b4975565439794251464730504e6c5846427966584c6f382b782f41645465355a74397535623637475a6a7045517a616e39696b395976656475535934516f4656616150596732573536745841527033466577676455524959466d586b4c44544a484a6c366630793462753367374f4133756f673179444251444a41544742645241326d5830306442327a372b4b426b36484e4243366d503755597950614566777851426d57432f75504e6f42535078504e58377134514e41786c386c6a4147414b434668564730794d7644334a42783936445271596152565a70526642454d656f6f767171675841734d56576365314f414d71383070446e695546553442334f6636554271746d6c596734596b2b32437645427035712f6157764d75503946732b386f4259324d624d64557354395042563368716c3372647554726c3243766173417836655077515071305a342f69674a415578516b535769464952426b66623349476b534b66424e466830684b4938635551527148416f4c353853714a395a7172354470354c4e4d7534514e5950555a6e36616435545776366845483756564c2b6e594f6d6a7969507a562b796753504e6c68687a5161544d413079563843414b724a614f7035653558524c4f67703953736562623879486a685875344c6c786b4a4e4a65673159796f754c7572486b58544565476656464258477454676f3257436b656f74676d4c684177476b4f677a70586569597a3936416967555a783264365351593855385a4d676a6e7553794a785075526a5630423030795153546c7543544368556c5056696c316b34494c484456576a61577a71317a71417373586c514c615a65574e41792b4b433264347a385655674c6d6c5756575444465062356f47313078716c3144465363334c705967505875434169576642566b50326c5071427878536a476c5543544c56546d322f4a536b6a5772494f4a3979426842672b534134436e46442b45704d4b416f4867654b736a7877354b756b63565a455563494359776655455257707136515341546e4278516f484a645653726a6b6e3141705a5651576261516a306e4e5562676153414d315a706157723243612f417a68782f6167716353693579393630577a30766d73455a615470377665756a64303262596f6767785362726266655770575a596e7738694d47356f3764394a4a7151724f7a41494f4e3646764c317942747a7241553148496a6e775858753775467150366a775358376e6c417769772f61734a494a4555476d573675334377366371565651476f39546e6d617176586b6d316a456f4c493855784e5837316e313151316b30714345447a6e7171634d46544b342b46456f6c6c6b6c5a7a795143622b494b6f674e71475a7a562b6e5468565474722b53444e4f4a695662475a6c6d794d375a66566b6c454a435859673047564b5a5a4a6f674e714e4657484646595a5547434377536575667755637850556a475a51385861674d6a52434d687878536e4a41536641596f4c444b41713166314368566c766333496e7861774d70666d7330704d47526f36446661333975544335306b34634672314d486169354c52774b65314b64736d3341396a31393335494f6d5357706773596b49584a6739724a3974463564637053507739796f3344655a493845484a3331747042754f537957737a4a6264784c7a4f782f63736b4941366b466d6f4357724c347258596941584a4c594c6e7a765737593673566e6e3678356449524150475655486f4a534c763949474a584f75372b315a4236687150444663432f7672323550564d2f3663466d4d6f762b4f61445a7650557239366b5a474d446b36302b693268634e335134754333716975535335344c71663437666a623367422b7347487646506967362b313958743736496a4d36626741445339733154637476685175764e376977625632554a59784c46573266554c396e70684c4e42313732316669467332496c474e51755a5a3963414458594f65494b762f766533642f4b4e6634767951647942316e41315667635a4c68442f41434f454d4c4a2f337244756658397866704272595036636665673946366a7634375565584536726b36526a6d4858412f77416a756d65356a626c2f3034526a33346c552b6a573562766577316c323669547957623147384c2b3575584f4d6b4763754f35426832494446686769593830456a4f634b524c4c5248314337436a7632724e326f592b3342423364763676413075445438666234712b373678596846375a6c4938425164726e386c3534424b6733536c755055376c4153423459787769753736663648473058756835666d7564365636774e722f53755145342f7148694865765643555a67584c5a31526c56425a5a6b4952706b73767247314f366a43635048462b2f4e61685442474d645444426945486c4e766344766e6870344662627478775979576e31443038334a7976574b4534385033726e6d45733648356f4d5634475651724c48524950684645784f5162383031693262645365386f4e3171496d58464b4c524d78746a357243622b727069356c683072565a394e75373665752f77424676346c426e74327233716c7a52442f692b7153394e744e6a62324e7357375970376e543765316232397351746741447564474e7945775a5a49486e49536c707a565a59486973787574764978786959717a64445249484a4164576b36675764575275436446515a4355565462755345655034494e6b7168555839755968774839767a5a533175412f4e616f6c326242426845364f33636a42787a2f623759344c52657369344e5561454c42616d344570746a68793559666c5242704d6a68676e754541412b337438733152435573512f506a5835717733674f724965486d66616944496270753767576f2b4744536d33475874383170737a462f722b674870624e714f4f575137466773693566767a69473148547150415a4474663359726f476475324268704877616943584e786232384e6477746e7a586c76552f38686e66486c3766706a6e4c4d396e425a66562f557a764c6d6d4a2f70786f4f664e637346693641455a356f767955786f5645455a51534f6167416c67704538454479426a51343471516d596f546e724c6b354a51554667767a346f547579624631574f4a555a79676855715563554367675a30534b555469635444533166314b732b3941527a52624c324b455352676f676b6d436734714d454d5542425443517a5361564759315161725632566736346d76443239677656374c314333755774786b4a534e65626e6c2b52586a4d614250453653376f506454675a5942766e7753797446713530706a3746592f3841482f567675356a626269747a364a756570717365625a386c305056505772487039732b5341627038492b5a504c356f4f66766277394b742b61663841376959506c517a692b4d7a3867505965537a35712b2f765a377137356c37716d635a6533344b6d664159494258417054303571547547654b55595678515131716f4370556f6d6c4d30415a4e474f6f736a61675a794549346c644b33735a7771656b6365667a516444306a596a56726d48415858334d5247476b59646972324d4262743659397035716a65546b634d4b6f4f646432634c7451572b437a53394f76322b7544552b7050757472636c31527839796d3333463232534a6a5652423066533935505670755a4c6f7a6e706b386368374663617841463579444e2b4f4158647637667972526e2f4456426b68366c59746e724242346c64666162717a754976616b4a417278777577753344716b3341636c334e6c36586275523879775447586167374f3932456431616c62497151645046664d6d71596e4a66564e707245644e7775563874334d6446366366306d5342437052436a4b476c55424e4367354368514f4e55444f3355746579395533477a50394735704836636c6a79556945487576537638414a343773697a7542706b66714868586d70773152455877642f65755a626d625a315278585732375336355551537a4e756e41436e637456445633354c43434979592b33425875546767756a467a306c5a372b4a656a4b79334932795853547578727150646b6779776e4f734763635375337366564c31676558634775324b6469343839784150707879585232637264786a496b754d71494d38373074557030446d67396e5855395044334c55686a6e79574c657873323578417175707337416b59746b5548704c49594d7562362f5a6e754c456256767847635630625231425356626a49447478495734696669594f7256464548694e2b5a51336c353646365077376c53665743596d46794c4544706269746e72305733706e48394e76563866324c4275495739506837645753435776556e6a317671546a66526f496a324b78796c625a6d71557266705162526545543035444f6c566c755862747a70697a63687851494a366a565654754733487477514557723069387664466476303730736a4848735842687568704136675268584e65743247386759444d6f4e3972612b55414d676e3039594d634137715376516255705a4658515758725a6e6231444846634f634a4179664d2f42656a74676157584c7462505847596e6e4a426939437336747a4b2b7859504750775870694843355a674e76626549384a31644f43366b53346442383875784731334633627944564a6a3831696e49476d54397937332b523759533359356a322b5334323474435a70676777536a726b3052697651656c2b6d516e62636970696363467a74746174774a6c6a2b43394473647941474244494f4c765054447475715868355a4c4c43454a39565858743775337462797a4952616f4b386474344152417a5162746e5079496152374f757673444f37553064594c4f3071493856326246767934614548523238656c786737727a762b5337627a4c74737738544e3363563648626c756e6770657452754545314f43446e376931397274426f63534179576230666379336471646d5750686635726f58535a6a535372665439703976436f416b616c4271733268616749527743735555515252525242357264376f6265334f374c36513448504a65474a6c636b5a6b76493137546d7653663544646131433348367048346676586d70556f454569485559745842505a73797648705859736569754f736f4f4a544442505144712f65765352394573784f617276656a32794b42767751656370696d3852344572705876534a51384e566775514e75576b6a424257587a54326270737a467948696a56564544456f45635548764c4d6f33344363634a445542326f6b365a4c6c6567334450622b582b6b6e3877756d53583073673868366e6345397a636b47625637664a5557376370394d63364a72684d376b6e2f5553723974466a30346c4231396a74425a6a784f61364969596c38786a37666b733969576d4e5374734a436e50334942475064323850326f323441654a506f717a6f48786355464e774d57784a2b4378337256576a5664476658314c4e6469514f7042784e39736a70387a416a3277562f2b4f5359334931774859723767424a374b4c4e3646622f387135482b483851673943445568687a5263592f44424b2f774b63654c2b4642496b7334474f436149427078533042664c69735071507159324d44474147755136667a516150555055624778706347756555422b61346b2f386e766d585262743666346e4a3937726958627372704d356b6d52534767516466632f35487537773078506c2f2f5463503856696a366e753439517658482f6e6c2b617956785249616944743266386e334d53504f4562672f69445339363656332f49624d374a4674347a496f3477373135466d5a57524f6e745158584362736954562f65717042774539715942396736304e71384b44435132614e513346584742314f6d473075335730416b386b476657324368726974452f54397848474239797a796870354d676b5a474a78586f505450565266617a664e52345a4c7a30597669692f43694432397952735735534657372b78634f333573627a33444b555a447031536576446832637142545a622b65346848625438514e4a63655330584941394a78514a713875707750743746614c56345361754b7167504e364a45502b7a4c326f733037553763336a512f4e4230544c5357474874386b6b3772524f706d43775376335956594655584e775a34514c49463956763146735a666a2b533562635664754c7075334363484b72795141465832397263762b434a4b73326d333832593155474b372b306a704a7941516351656c3333307a4243463330796365613957326f5671554a57595a5959646944786372453465494a48344c314738395042656138377562586c46414c462b6533754337624c536956376e625834376d3147374267446c7a7a586746364c2f4762356a4b56715247673151656b69644a2b616345366e37465251747854777233494c594845686562395a323432753631676630376e583372306d444d7348726c7358646f54676262593855486e374e782f774279766c74504d366f796c45636c7a4e76654e7477563062462f7a4b524b444f64744f506a75535a50623238522f78335a41727265574a7341774b63626141485034494d45624735482f4146587a3036566f6c497774675372785775637869546775567564304a5550684342726e39536362634d53523856364d524e766f6a674d636c782f513742753639314f6748524476586131443671307167676b634d6b6d4261536b536341554a343830427871557546546d6a4e3842697179674a6d4c6669716e6a5a31654b67566c7577496a5650782f4a4d434178514d4969416f4b70385277534374437041456c41784665536a50564e6f53364f4e45416e54476e785347335769736c45305a56537652737831545a686a2b784247656f2b4b79626a64376662567553483875613466714872397936664c3231484c4c6d6a61796d664d756c3547756e383048587666354861693574676c5a6a2f6b594a66792f77443166734b356f32703773565a3972324d67375733396532317a2f6b653266655068566465316573376c343765596b542b6b34632b4e4635434f794d71484c4a4e396839646b365a6a755165354e73526a4741384d576a376b73374d5a45356469387273503867766265666c6278356a44566d507a39735636766233626534674a3279344978515a376c6b7872553831584a385674643663456e6c524a66443855475765434d494632783470762b4d744c336f687543426f4d4d636756776655665335325a4764754f71336a30346a396937726b6d766379595330565074326f5047677864346c6b396b303472302b37324e695554664d57755242776975587472466d396330514f7157594e4762484c4a426d7477713852687a57794c6b4d634673742b6b3332626f4865667971745566536d503841557546686a7044494f58704d4f6f3463317a623932424f6e4535434e66324c30737653746942726c4579375a797a37316f327475317434415762596832564e6561447a7530394675377174332b6e622f414976462b78647547337462533335646f5541393630584a456a726f73306934514c4978485543764c2b7632676438576f346a372f77423639504c6953754636395a315868506b4547442b327551457739437553367a4f496a7a5035726f324c467535626159722b714a56647a302b7a4758564335494841676a76515a626e6f384c59456f5859796267567132566e373865524955483571445932613945774366714c6e344c70656b5768596e4c534b74587677516377656e574e724a726e56506877576e612b6f375455424566314f6341472b4b363234323862776151626e6d7358324a743368634d59794d526952682b3142304c473968654853532f4d4566677463342b5a614d4f495a5a68774455577373492f4c735163543033613268626c596d576e4a3479347344516a3334727a6e72317377766a554f6f7872786f342f426572765749794e75356863693356476a7842586e7638716d44756f675a515a4277514139554a4b5956525a7856416146612f5462454c6c31376e2f4841655a506a7048356c6833724777585375662b4e7334322f2b70652f7153346948306a764e5547472f654e36354b354c4752637172456f6b6e4e523251526b535835494374536f41775152364b6153616f446d69546d3643436e6372747475726d326d4c6c7648447456494c436d534a70326c42362f77424e3953687641302b6d592b6c625a5130397543385059756d30645547433948735057625679482f6b6b52507a3534494f375949464b61632b31562b5559377964385943324c6666714a2b536f74627a62336157706a73646e37714c534a30306971433255744d4e455731532b44716951644d636142516a50464168415a2f696a714170337144695570496d506767676a5846547856784342344a6b46594c686772532b716c414655327171467934504363666567756a636958743361776c5178586e723050744c336b34776c57334c6a793756325a6c67716239714636336f6e6766654478515a4e727362526e716171374d494143693873626c7a302b38625569374e58744646734f2b7537726f746a546831664e42324a335144305364556235343761385956476b6a346f625777417a73364f2b477262334e503653673864474c4175674342336f67465168364941654253413571775556512b43426f34494e33497354676c346c4265474a66484e623970732f4d5978446b6e326463324d32714d56332f515a34317750424230747436585a7478426c477679374672386d4144527033707067397a68474d67373845436e6278656a665035726966354674347768436358636e446b4931586f596a6a675635372f4b5a5573312f55343979447a7035657a4c7462455074434f486d4565356365456136736c7233653731774562644935684268755331794a7964515938616f6b5a78543761326239324d514b6b2f4242327a4b354352304c5a6233385a6e524d4e4a4c4b486d5562443371797a59443179792b61446f5762304c594535594a372b376d58626f6a787a56647530425367546558726f67387036744b557478576f456331545974796d644d56763962734778664534696b677a38315859334e6d454841655a376767533550796f61593444486d6679574b50555354544e5758707975484444426b6750314947465a674e58322f4e65303942364e6f4c62566a4b35482f31466556394c74655a753755442b7348754666775874747662386d3252454e31452b39426467654b386a756759584c6b446b572f46657731527778586c76563941334e77386f2f4a427937736854673647747a5844424a4d3679577a354a6a535055674770704d4850344b36316265707757614d635a4264323373346d414538783830484944397a745644776c793361466665476d354f4a78695730386c6235586d322f4d4748626755474f4f6f76775a6b385378304c4e4f596964496b36557a4d6a7251613956644b36586f676a6333734847455a4c68324a7858652f78384357376d593557783345736739535330655a56656f496b4574775663354579515964377354666e35746b744c4f50486773663275355051624a375972733651636355597448416f4f5244616273733173522f6d6b727266706c382f77444a63684566775650785851374d66656f537771675461624f33743677424d7335537a577478347356534339426b6d48453979437930535365434569426768616e78774b6c776b6c424d6871464f43356d393245354562693052727a4744747a58536c5775525131615748484642785954494f6d59496b4d69726a4959437079375673334f78364e46746e6434724a5a684f4d7a72424645446d787147715749776a6c332f6b6e73627758547077756a3665504d66694538576c34616471716c7449784c77704959486d6731674179644b7a546b4d6d437174544c3662676158774b736c4a7055344948427a666d6f586574507951595942535869514f4c6c486c55636c6d337538386d445736796c67654837564c3236743251586b4858476e666a636c4b637148394b42627373354679374f71547571457864737535625937697a6347693545742b43726e36585a4e62467875414f4344443570385146537154496d705576323532504737387343715848306f474d364b71636e7a7170724c6471575574504e416b70643359706a6767386338456a697558342b336167594d545435715a386b412b4b4c36656142664564524859466245674144366c577864355a706a784b4271717a553258747a56555762696c387a33494c497934317a34707645644c4b6e554763312b437338796e536774675a52504e6457594e2b79777939766d754e435a6c544a6462306f3678496b5030743855484c4d4e505366453670752f76573764485354327245374f554757566578416a4d4a3853536a5a737a6e6743514d65534471573441786368614c466b466e785574514c414849596861724d44476f78516134526942536963793067366378526b6b5470784e436b756c2f63673833644238773830776d53786f41744f367336427147437941694f47423853446674727264524e4376536569792f7053745a776c384437466552736e484d4c72374466533274776d555a4733495967597467636b4871636578466e5850683674596b634a782f6d6a2b54725a597577764456626c376469416d716467673348464c7130756665676255466d763767516e477a4374326677417a4b7a627631614d48466d7638414839492f507557503061453732367537695263776a35622f414d5251624c3531334449735741437045713043747653474d566d6b54693961494e676a4b554b3936714248476973314e303470496745463855433967775269416534703345517941416c322b35414a52474a565a48436d61756b37317853474c2b4a4167376c76394f486c326e4f6370533935584f4e49796c6b4631624230786a48426f78515a72386d4a2f4a55422f4c47654b757656706b36703175675444454b794645704c2f6b69614e536a6f4449344835496b4d51697741637159467a32494e58306a6979795469306d7a4f613250303868386c51514547666653486b77616836766774552f366471334469736e71414a7657625137566472387736766169432b4e4f7a6d726830682b7831564d565970365944687851585177574831575052627566706d33766f746b6544716a314f496e745a636a452b346f4f6479434d68566b6a366744386b2b6d544d674553546d7067616f456345645149644152494b4374526971395742644d59386355444238672f344954494f43426b3763416b366b4131647155536331537a505551714c687a6648423047766178387938374668462b384c5a68677376702f545a31306163752b693047624942714c70724d337069666b71345671554c41486d7479515879355a6f6c6f752b413973554a4d6646526b435167682f5368454d654c4975386c4967346a7849444b4c6471552f314b5a4a69324a514e6543436457435173547a546a6a6b6b4f507467674570615335566b6a71715573672f623730305270777155423857436a2b33616c6551724650476464504641386f416e674561454d3155444942474c6b50546b675273316262694e4a672b546a75554561397561567a626d4a5a494d5169444d506934577a657a31474d41714c747254756f66704c5351682f55754874627551626f78387532453859754853587034527954517a636f4d5072557a62386b6e4457596e354c50632f7034664e617657492b6273706b5977496e377659726e78756934496b2f554155467361706957536139464577514854484c337176326f6e3571455651567a6a6d61496d513730386b6e59454568716b575565694a69374d66623277554d6a6a5241425870435142793454674147706f45577a39794361524a4e466a306c4c6e6a69704c70663449486b6573766b6a6a524c475a6c306d71734657514a676c6b31477145386742376b7035494b626b71636c7445504c69787a2b4b77364a5475784754725a63787067417942625a4a756151586576755231474d6e50464a5a72507a50394b652b4f67797778726d67315244567a56557a356e5478347064726445374d654f6c4a754c6b62467556323568476e76516332375052463538666b75527566557048774d797a62766479765335422f6973656f353051577a7645347171524d6a57714a6a376c48617051456f416b476d4b686268525173616f41616a6d6d74543875596e48474a644b2b6f4e6d692b704231765837596c6468756f2b472f41542f315a726b414c74553366705a66783765662f414b5a66742b53347553434161734d55436d41514934494a6e52436a633053366a484a4233665154397661334f365030573949375a4c6947754e463272344f79394c68617a3345746375776577584365726f475a7345414356477252452b354241546c6b67554a636b6159684248776f68694565595570674d55424448466472305031503761597354503841546e78794b3468446c4632376b4830575539414765627059584a4573754e3646766a754c52737a50586238504d4c71327856304675747357575132347a3851713557713730304b724558354e676777584e70417936545658322f5437644b6b386c6549356e454b39336f4d732b314256613231754641473473746b5342476f56486d64584250346b47626662677a476950656874664d743239624f54394f58354b32554b3657784b326a77386745484d7676716863415967726f62754f754f7071724e66674c67306a5067744f3175473759477245644b4450596e394573384f3555546c6f754563325575485164514c444e53637456546c3730476d3264513144324375684a714f736d3350394457315372595479516153644e51567a535a457343442b723279705475356c6139544d73312b77626c7834477459312f4242544b354a6d6278654671593465394a754c306256746f6b79454f72754874386b386e307975446730666c5850332f42632f6633685a73674358555177374b5038416a77516137636f624f776274796b6a5735496354684564676f76502b6f2b745864365447505262776269505a714a6656665550756a35635430784c397034726c6c30453573676543673449386b45306f4e5245315577515442414868524673776d375543794b44714d4553474c4445494468524b794449344943684c696f3771596f4a685652736b576f706b676777555a30415551676d486168695556425241414641654b4c4d7051565153474e457a6171424b55344f4842425a62755374546a4f506967614e7847434734765433457a4f58376b4d336a524b43525641707953767855787167616c3045356f7477524343434273314b7149383048613947734169562b54557048327858536c2f5539767a575859514d39764454686d756c49466778775158325a6a53414f6c56584c55746278714f425332356d4c5348464c647552636f4b5a776a4f57703237466b75536b5470316535573337723047415745337a5a4c78694345473753573035504856797176553732794459754134454c786d3133597554455a5262557736637a79587354764c653474536a456e564548704f4b4479462f30636936786f487972307275656c6255326739715a4d66346b6470654734694b31646d58543263576a544a42704238754773304144396a4c355a66756d35636c4c6a4b522b4b2b6a657533445a324e365563644f6e2f6357587a524158554878514154484a414d564d45507855464b5a4947644b45457a35635544416d50617432777567584c666d506f4d6f362b78772f775850354b32414269574e5167396a2f414a5673596933446432777842455a746d4468376c3536334a717535507958722f54376b505750547a6175564c615a66675634694238737973796f596e54376a2b434461586e51552f4e5a4a57536646584e5851754e68586d726f6933496c695547447954436a4c746568326f54684f4e77645464784179576351746d64636c7632414c694c34754f354254752f544c677536725a654f51646466594363594e5046766975686173786e414f422b4a5273324978716731326f734146616b674b4b784246464645486c2f57344765364d526e434a3978586e6431716b376356366a317361647a626c2b7145683369713475347343343034305035494f482f5542787136364e6942656f526c5a6334594c645973616e646733464131725a5375524a3467726c336251494d4b4c314f7867344d75412b433550714e6a79704737612f774271446866616b6b52494b394673534c554b3979353971596d7757367a61505945485867646648534674323973726e3764385a467a7958557479616b63454769504e56582b6d314f5179456946594b3143532f46375578784251634830692f65336b794c74596e71667358706c6a324f3268597478454762697469447a502b537830334c567a6c4b4b38394d4f4b2f5376592b7662595839752f31524c68654a764f584831524f6b6f4c664b6350464a624856704171716e6b4b4767556738726747667751647a6265626244516c302f6d6b33477a6a634771486a79566c694d7848556341466d2b396b4c774a464b6f4f7073344749484a644f465a442b4a5a3744655871466458737930325943556e5a6b47757a467356567639794e70614e30354b32504663763841794f334f2f5974326266696e4d44356f4e65317532393541583456446c75366933774f6f4f716472746f37617a477a4843495a58517734494755555551525252524238362f7741684a46794554774d7532763746786f42646e2f4935367230526e6f2f45726a41613561637967373370554936487864646878455678584c3273504b684742576d4f2b7341744d73506638554737557963533473526d73747663324e77644e6d34444c686774506c6d4e4851567a45534f6e324b7762725a7875426445514d365a7242754e7a5a74543036334b447a323432553742494f437a45563072304a765176642f4663546557664b75467141315164663041557578773850347274766d754836414e4d626b6a53736678585675337a615967617452302b394235766332685a7633574f4576785854323232305242786b666233725076375274337463767234476d465174316f6a7978786273514a47553330327858386578474e6a647a63776d785a36344c52456d4652314556623278584f76626a66792f71514d6750307879475837736b4851735839355949462f544b50752b4b364d4c305a743074386669754e74376c3370387736745136763454374475585a73523644485039585046425665335174416b4455526c7a584e75543951334170474969724c6c7970754d356670372f77417353566e6c7639334f34625a4968436f665334707a7a666b67414e794241766637736832702f5462486c37795a4831512b5a434e71394f344775525a75564f355862582f37733078742f4b53446f4f444b74447a557751657263766569375643423558424333726e34592f67764537336453336436567958734176512f3548754262734379476534645863764b4232346f43694975614c5874646f626e5649466c3239745a4675476b4149504e655849596851327059315a65724f314439565573397070683041666b67387056324362535179313736417433476a326c5a485146744b305175454c4e453071744671706158424230746e746a754731595a5578585774374c7954536835657751394b74364c63645333793644714343694675554d4d446d61717664656e57627736342f37567263486936734a31495049627a3032566e7167586a38567a6a41366d4b393566736a54686d764f2b712b6e4d504d746a6d6734734c6b6f534568694d4636474e2f7a62597646756f65365859764e6e456a67756c365a6365457252347567364d774748483239763371655a47526164446c7a397378337051476a3030565535612b302f4242627138736b6e44344b6d3563694747583449363557795975344b7a3779374741614e53423855484c6e69355268413343414d30705076577a59316b5a4845436e6567336261586c394c55433378334676626870346c59324a596b65785433397a6232394a51644275472b74794432386559526c667563525876584f737a686675504164503472644b4d54487078474b4148314b4559364e784579783841584633737264337169344234686137322b386d5769634b3833564539395a76644a74676339503755484a777a5772302b2b64766668634848506771723973527771367169486f67392f624d534f544130356f766d7552364c757949615a6a7772725149494d734278795158776e717045716e314d522b324d5a616e6d526c7771736e39796a656d64707469786c48787578666c686b734d3433656b585a7a6d526c4f54742b53446b58374535534a78645a764d6e625054526c3335573964434667334731694d454757337670572b5a4376487173342f6d736b7475596c6a6b6d4732656f2f63677650716c7934474a2f4247337175784c68343855624f3159727052743651513143673676704542485a57674f4a5730476858457337362f7332687045374c344e31422b4337466d2f4463322f4e736e5848346a7477514d656d763070544544714765434a4246436175675a56354e3855434f5a5a594b363361654f7668687756496650446c697239316674376132626c32516a4241784d76712b474b4d644f45694b66716f33354c7932372f795763756e625230782f55636663754866336437634856636b5a664c334950664831486247576a7a59502f4e2b4b614f377451754e4b63512f68655846664f57716f534256423952414259787734684236316f766e4f31395276374d765a6d51503035487558736653505737652f4769344e463466546c4c7351645a6a375a72786e2b523732355063486234516942546d6172326f4c30587a6e66544e2f64585a47727a507543433730363048316d763572707a67396353734f334269417936634338554646472f4a504333484a6137644f723449792f5652426b38767170696a4b426b615946577453702f4a475442427a6437746650673448683976334a66384148392f4c61376d4e6b6c6f584333666c2b5336542f6f7758413374673235367853726f5066534761684e582b437a62432f7743665946773531396774516779425132576153554e4e526e2b43594872554e7658513549466733315a4b753044496b39716373324f4b54625378417256416c32524d68474c39325335503238646e766262466f5867596e6a713464355a6453633462655a757a4f6b4e6a69734f3776783342747a6857497552615874775164364e4a4e67334e4f4a462b61556a724146634850616b6e50546a6b67426c716d4163416e4c4e54324372746868716b5565784153426771744776735675764753517430766736436d555877795754653268646a31444e6254466e4f6154534a394f62494f44733565584c546d4632626438456151335a3831777238667437736e714372625535665467416736563635626a4e676135386c71324e6d49476f6b563967755063736172636948456d3854724c47357637464933484749636f5058546753355972487136715a5935726a376337736d742b587a5853467879424931346f4e4d4c67507379766a4a3461567a3461395478573678694a506e33494d3237333172593269627836767067504566324c78587146303337766d79786b41535533717477586433646c45303153412f4255586830516d63332b43436b73464248423147644c795161746a74767572386259774f50495a2f4248314463666358355849306a3459786243496f5067723971667437467a6348786e2b6c442f5634762f53756456424d364b56524c6f416f49685146513953496334494a56426c425651306f676d4b594a657a4646754b416b59494f3451464f784848424154526976556568656f2b5a48794c357150432f35727a425968733149304c6a4c50735166515a4961693678656e626e376d7a4762387539613371676b58784837306c5a466b544b4d4d785842797a396a3439796a534166676355425a7a564b53366d546f526a54464243477856424a6b57794753736e636f326673565659684b34535256425a4f6a5556502f4c4a6c5a4f63513058476f2f546e376c6a2b35386e2f6a7249353845474c66327a64766d57626e345557375932644e4d6c5259426b354f495854736a6b67767477703249334271667356384270687179533478705642346e6537623761365935597837466b6a4c4e6c36373154615133466b794c526b50444c4c73586b6d30486955414166424977775669575561616751674850336f5a70694f4b6730346f4642705265692f787352694c74796f6b4d4f39656630653562375733305138327a64474935462b784237457965704c4b655a45787230726a37613775764c4572674d6f532f534b305658714e6a2b706f6c7177315372674d616f4f6c50316a613269514a31346577584e3956413375334537594d7057366e677857666258374e6d656946694e776e363548393448775865737a2b34747a6c35586c542f6d365a65354234595330304b4a6a526a522f6b76522b702b6c32626d7a6e766f41776d444870456e69586238317a3939747a593232333144716e43556e354f37494f5834547a56323076655250574f5939367a69504e50476c41673966716a636a35747573537756746f6341764c37486633746b6156742f70586f646e366e74722b4a387566435a70373048537446686b36756a6f45544b64414d31793733717530322b45764d6c776868372f7958423333716c3365792f716c6f666f6a68336f4e58716d2f47396e70674235634845487a4f5a79585075376d3563614e30734254546c2b53726a654570636c7042656b36676f4d5a36516d414e544a697466326c7678524c4156346a3831526574334c5a714f6e6a696736502b503233337354774569336379396d547244306465522f786d516c7569662f6c6e4874695065765874474b42744c6331356a312b304933504d4464644a6431483731365a32586d7657535a64545961667a2f46426b6c744933476c436c474f544a2f7743316a5338726d68613973386f6c7a6b7170625779435a584e524f5431415159342b6b334c5131786e47644f50484e644f7a716c445249462b4f537937586252742b42386175756c74494554367330484e33327a75584c336d51785961686771725870742b5a615230773854444d2f677537756f655a4856484838467837566d37353866366b6a4576726754684839754344507576534a787242796630726d33765437305164554a416667765732374e79765830354b323759387979593435495042435a69612b4665742f77415a6a716c65752f5330596348584d394a32596c656c4b583050706a7a717654374136724f73596d5574545635494e57505a6b6b6b512f424f584e50696f314b4942514a514d6a696d48536139726f546236754878515163456b354155616961464d63554d5734494c4961576f6f58636f416a4a4530495a4159304c2b31455a7a726c2b43727771614f70504369416b6b7a5959653542346b73675431506d455350717851476e356f456134366356424a36756e385055677a4e6f7834315474716b794634434a6a495a394b5344417355476964734556712f75534332496a51482b614c755136735078514b49426c796433366a70506c32432f4758506b6c39553335493875786839552b5049666975514a5a59666d67744a315931507479534759784e5370723141384f4b7a336d694b654c464266357761694e6e634548446c56592f4d634f7a4a597a695458336f4f37624e7663774d4c6e597556764e704c61342b462b6d58454a72463753305233726f776c446332644533776f446b654b447a70714b55537977786f724e7a624e695a73346b59716f6a546767494c6d69516c366c48575367347152682b4b435263565547505667672b6d6e76532b3375515759596c4b4a444e4b65434d47775151484650495a6e4b6955794431556477676a31344a7457716d4943536d4375323852496a565350742b534456746242756a7043317975445a57664c6a57376e2f435078526a756f324c524d616a414c6933622f6d5363317a51582b597765565371355445756c564771522b4b434d586f742f703175637a4b7030487864797752695a55474b39467362506c32744d6a55316f6731327241454f66425745617345385453696d6d72346f4a467663694c65736c304e546c573668626a716c385547652f5968474c7943346d34506d584a4556474557396d577265627a376736494767397857473355763953432b414971726f46734d4f437169644b684941496a34676736327a4c67546f373034727032352b58574f4a584d39506e71746176347667743048474b446164336b42584c682b786354656269354f3770765541726f6633767858556676584339637436424738442f77444c6c325a46426c76626b5436507048797a58643943747974374579506a757a6c4c2f6468384b7278786d6178433970315772554c4c556a474565547367726c4b56585646775548496857466a79566477314575614458473457632b4a454543724a49416e4a4752713478514f357755675248447656646346614f6e67676b6d6b5843576655614b7761546b6b6b644a51555832685a66395258566d326c686b467a4e79786c62694f492b61333354706e49484e426c76584337444e5577705630623531524f727556555a455144596f4e4f6c673348336f78624834706d717a55546a6879514567454b6f3873316f4564666371386142413774306a4e5752416e306f51694330654b737468726a5a42427a726b776431637646763655644d61356c5461344f566a7433745679374b6a536c2f774333397131626170716731516d33564b71613345536d533241376c584b58567741576d79414d633044766763556d3865653375486b2f75554a6276716d7556737a695030795163573251512f4a574d566e736c72594c5a4b384e48412f6767687042444c6b6c35706e664641756f484247755355444c4170772f757851435854524c4e34307a6f70493863636c584d6c7a7a5156796b2b4873797a62695a694e51344b32556f746d37716d4d446433467141446a5544335279516479467637653362744836414f56537049676d7673455a4579624f715671766e376b414c5a595a4b6e5870756a67796335766971357945626b536561445543524f71562b704679337853524e57515773534854526c7148616b5934383077504156514673696f3153796d6c2b3554426767513149526a2f46696832714561715a49426a67684c4a4f3550596c4d6f2f6b6768656c564934684b4456315a342b6b59653541394267483570346d513663696b6a495372776f7251485147475035704e34447035354a3754484244646b474e50626d67614a427477755055425a4e6c3141334f4a6f704f592b326d4b764f67626e696a626949614c4d48365231494c5a2f71504658625945776456546249713630417a49444f486e5735572f7742635a52586d74704d797477506366394b394f4a6754354c7968476d3563745a43354d44336f4e676d4a594b364d596e46594e33756873375775684a4c5265754377334e33366b492b6455514c476a4d527870326f4f3647494b68672f4e65633358716c3635433149467044686d7044645839374f33747263744c5058346c4236574d5879666a564b516671433835754c56335a542f414b563755592b4b76345a72746e666b62503771517133547a4f4344584b464e51797a56636f39355078586c7258714e2b3163457a4b54453450526c327658747a5062323752736c6a4c564a7877503730473445594977424e4148376c78665476555a58495474335a504b49314179354b6a62376e66626f79466952706c685242364762634479565666437544613954336b6a6f6a63722b66636e334871667147336c70756c693341594832354950513232787a566f706775444831586654456636546a4a6f3564713179396473782f3549534532384b4471524439556b4a51634d734f333961322b344a6a46342f70314c6352523435346469444c74705064655234737261796b774c716a61676135533461676a475274784150694b4453354230684a75696444465757425855556c3850714f5a5144303262514563476a6d7266554c666e62532f41782b6a562f74717332326c706f654336634f6f67455550524a2b4251664f454179753346767962307258365a536a376971427a515068564b414d38464864454f67444632524944307952356c54506d6756696f325761675a48553243447366342f656a472b64766438463447326530726c5872506b334a577a6a456d4b6c6d38624e794d78394a6464542f49726359376f33492b473449335065673430536f575248504243546f43447149526a48584f4d6550346f593434727166342f74764f3373544c77322f7743704c2f5367762f794f59382b4669506874516a4832376c78425846614e2f66462f63584c77714a534b7a6b414238304137464a55354a6f2b39435131564b4343716d534f6c714949494b71415a3549454f6f675a6e52776f454d44524c68556f4f6c364e75425a336348776e302b39657a306754306a46664f346442664d4c3364753935384c643739635166645168427276444c4a5a3764447056392f67466d62535332614338754856666d74337133554735344b6b753945476932446e677265334a55774a5a58536b4d454658697552307258724c6b4c4a5969664d314c51416379675335627a794358597a38567346505542315349364c3354536771676c2b4e476a677334474e61666974393646566775514e73356b494c4c62693049344d6a456e56524e4974613163365a717178505755477159785656357a46322f5936637a633969535a315151596439656a624262454d5967727a50717537382b656d5068674f32755a585239613352714d4d506b764f34346f4946497536675569676872696f6f446c6b6731454249344b6330426936507551426c4334445a4b5a6b7067674d3467476d42534e6d6e444e7a64493955425053672b43674b6d43434d2b4349705653696155614241756235494978354b4d67677052425171486767684b696969416c4b795a696f496f4a78526742564148676d414d4367734142663237315649354f724e49494a72386c552f755151414b45634643554f61434e6d6f546b69564d4b68424d536f686770676736577839567562542b6e6a622f547758637462754e364775465948476d43386a795866394b6c2f347047657442314d504467636c584f75444d6f4c6b654449546b51656c427a74316330304379517647644a664264473761456935576332446763554132356a497830564949376c36617a4b46776d62764a384f43344f33324e365142454b50346e592f4664325732707267346b413361675333614e6d3750444369363971516a466c7a3745434b7a2f414457775179775163372f4b62786873577a4d6f782f46654258722f41504b372b6d316232347a4f733931507a586b7853694243455145416a6d674368554934496e42424d564a5a6c45424353414e5257325a4d65617178717262412f715651656c2f7844636d33666e7435476b6838523746636a3143775937792f714474636b666553556d7a7653322b34463247494945575772637a4e36354b354c47523745484c4a6c6c6770475a70704b32584c516c674b5a685a6a4271664e41304e7a4d4c7037472f4f4a424158494675726346337653624f486336443046692f4e6741535673322f55566b67426c3068627245544772594242745551434b434b4b4b49505066354b4e506b336630796b506533354c6c33754258622f79533172325a6e5634455370377678586e5a7a506c3832434450637565574b42337856384e39613053424242503661696d537a7868716b2b495639337939444d334a42316654742f5a74577a456c7952337249505662516e706e4153746e6a476f2f4e63654e364e7558537576746f32626b496d674a4e5548466b444354344f637368324c72375464427744535848696e332b7a674976484565396332456a6f6b334159346f50553755524963596c644732644c5658497358474c52344c6f325a53384b446f565548554656624a496552566f514a7462506b327842584b4252414a524567785869505666544a374f354b34584e7564544c6e6b76634b75395a686569595444673549506e467731356355323369487139506d746e725070333976764e43747166682f6837316874335462494a3850344950535759354442505062436261673677325056594d78442f77417543323264396275594f6731326f4749595a5a4c564638636c6d684c56314a376c2b4d576a5630476e58376e563573786e4f4e773478384b7957706559644b364b4146534959496c4c44424179696969434b4b4b49506e2f7275326b644e2b4758544c385078584c3246735375756347586439516a4f37637432596c6f48716b7566734c506c585a734b5052427376577a634563754b76467661326f6172326c2f34767747616556765662307533504a55322f545952316168716c49596d70514c4f3173397a57337031557248386c30747671304e4b756c637548703851644e6b6157366e783968794b33774a48534d454333784b2f774244744139797a32626d77683051304758746d79733857714c5554523274734858473241654b444e6332554a3955434f5463467a6655344e445668566c32493751575044534c2b484a597655625a7557394563586967312b6c3254743745524a716e58546d7237354230356d4d6b7532726141415634416c796632376b474c315471456f415a6176636679516a4544334f724a774231635430766a3348747853576a674b494e3175496c5569765a69703566634f434f3330796f6663706475573762776176356f45466d4f50742b31583278726b51537334752b5957417877563169456f794a4e4b56515a37567352754553577332667064687a2b474b777a6e70756d65542f41415852684f4c5a384f78426833466b57384575336744497a356156646644344a4c464976784b445135474f434e76714c63556c544a6b4c74324f326a4f376741506a2b3942356a317a63656675533368683068632b454f725370637547636a493858562b31695358624242317476622f54376c3159574353444771382b4c3977482b6e4668676a393566646a54336f50527a746932636879564776534e66306863363176444b74484b72335738307830517a43446b37676b33444c6d717139364a636d7141514749636346713263524b536f30394e5062334c6f656d57444b52656a494f39747032376358757a684874703846704f37326b522f7a524a5065754c65337532676455346963675730724c50646247352f305a412f77382b5344305233566f2b4569512b43636236336f6636506a376c35675473507173752f3657585774516e4f337166755161623372467530656d334b5257622b342b65776e5959482b4c34724475397a6332394e44792f56696c736272314b3648744d422f4b507843446c627130626479556561577a50546369596e542b43302b6f5133456a356d3448556543774f7944304554356a6d51307a42366f3976344b556868525a6d6c4f33472f62385969422b3961624d78646562394f4e6376322f76514451474f515064376436775832596e36667757696534477351784831766d426c2b614f356862756a56474c5266706a6e544c73644279534b73745730614d6e50684b7953444867746469555a59494f6d4a514d49784e474e6539507537416b596957475379786e527a7844727041787555515532374d62513152795639755476725a4879684f684e452f6b3665755854455a46424a574c65347263446e2b5a5732396c6277676449624156702b613538742f617453385150596c6e362f433346375541542f4656412b39394f6a64684932716c2b39656569504a6b524b6a466274783678754c314449415a434e467a79645574523730472f5a6571485a6778454158347064333674754e3134354e484b496f7345656b7148426b44777654747a46794a3634314339587439786239567450426864674f75476450714845636331354946714b7a6233356261344c746f365a78775165736e416d697a3337426b4756557638697458503668736e7a54346d6b30653374566d303333336b536445597965674344483973586f72595130654c46364c556266412f765352366951513447664c4e416b625a4e54386c73733765567769454b6b2f4c6973307433744c5a3053754d663459366833716a652b74777441324e6961533864334179374d776731373763327468624e736b5376454e4854554238532f486b764e62666558747450585a6d596e32797756557075395458696c64423644626635506345762f41436f4363654970496331334c4f2b326d3548394f37455350307a3654583366426543495a4d4153484344323371487164725944434d7268384d5268327279572b33393765793158693463734d68324c4b5456314f3142464f5255624e626264682b7430474e6c47646447395a6a6174726e386b43444650436372523178385752536763564734495066656e6571446562553344533541645935386578654a6a456d5a634f6b3232356e7462676e44763568573751363530446e383047363251783472645a6d347143797a786a394d6b304e33617451367a6a337367364e746e34685051316973455056647537456e6b644a483572614c734c6731526b434541476b464345477754584c384c6454576e765747357672372f414e47794737506d6731474e447050354c6c372b323431597372767537353863573749736d6e31687a695548532f7879397232756d565447587a58614c776f533638742f6a742f79623837457344382f327231556767535a306b464168794f4346796f315a6f5070703756514454585479564e6765594d546966334b3251455471786f796f3237564844336f4c4c3037647532504e4e4f6135317155664d746946424b526b49746c5631703052764136672b58376b706750766f4159655764506469673675707734396771626c5470794e552b72496856526c4b557452397561433246616a753969693271684b55597555326d574842414a5548626d6c6174634531477a51755368434f755a4559444d3039753542524f4f6b56505a327053316f36356b51484f6d5061754e766638414a5957695937534c6b482f6b6c2b41586e4e7a75726d3575476432526b536736323733317535754349453650704b6133666a54556338522b356345476c46665a754877453048772f59673755374736746b5331394f58376c6f472b33726456793065556858354a6474656e4563517975386f584135474f667a7951556664622f414f693741667969503468576558765a3964793857785a754373685a46717359734f4c4c525a64744e616c425862334a4f6d427156304c4e385341684772366c7964337074526150694f5046616654376a546955486a62774f7376693564427952577174336f4176334e4f4775587a56484a424b6a4768554e655344707561446676663664697a596a587038326638414e5038412f5641584f374538376b726e564975557068704b414b61564257715a7979414f3243696a4f6f4b4949656c41484e455263694b3052327432645978506179444f4f31416971756c5a6e436b686d6c46736e415651494b6e676f596b594c6274396a4b34567674656b584c6c73544875516351754f51554859742b36324679334d68694a6350616977436c45486f2f38414837346e41326a394b37443936342f2b4c57664d38383441524876717530493633446f504c2b707a684f2f6446777938794d6a6f4971386161426a514446367570433564753362647933656c506345785a76434131586642734d474971756e3668365a393549546849527544706b2b42475747592b5859713448622b6c784d594456634e4a534f505a7937454856754551777734354b6d572b323172783342584454314c6a337431637567616a512f53716961636b4852752b7251502f4862314e39557679425747377672393251315336503043672b436f72345234666242537359307a51614e746269446376414d62593665302f4e4347356e48365166624a57326f364e68646e6a727578742f3761724b773173673357665562594662526430386657644965466f454844697564686744696977464548572f765638686843334163366c7a324b7933366c667536357a49466d336a455a6e4152664e6375336138325974773855756e3976637457356e434a4671777874322b6b5039527a5034494b4a335a3342726c58354d65536f7637654e2f77446d3473415067726f34715366383048497532705735615a4b7151666b757a63684759367632685a726e70385350365a79774e55484e6653575738656e7a4237512f6373747a62334948714237636c3264704c5749536c7978795a424c50703070645572594d6531614274664a426a47476764723137317468656a493661444c464a764c397131416964776168394144762b546f4d3370586d586270696642624b364f34322f3959524e62633631355a552f465a2f5462656c746654356831384f7864533744574e4f66306e6d67356e6c79746b434a624978354c6647325a577a4748417249622b6d5769644a443472545a764f475075515970374b5731394976776d53535447582f716973482b5253486b62534563504b662f414e7137767138762f774233582b44512f774463463554314c31434738386f51444331415778717850616735735a55554a786442754359553745414a7252507943614d7336494555624e416f66765431707a52413039366b6f6a422b314134443077567259463152475841713047516f66596f4c49794a626972593335526633636c6e674b484976525776546d6730572f4c4574634178776f74323139547632534978496c4467666169354d6a68527879526a4a704e6e6c7951653173626f6275325a77635a536a6d3634587157366a64334a3238766f414135386664543471656c3332754366307a506c79484535483372687975534e38335a306b5a616a336d767a5165687346736774624f3543353043517a653344344c56433443315544796a707a562b304e53543242594e78657271797a697957783672596a4d6775475074524232797763466c6d595438515652395273626d456f57695841656f34653556576431394a34494e2b6a42734f437444303030564d4a7877566c73744d4534494f4e48626e61627159786a6347716e46647262572f4a7478686b337a576533596379765338526c37677451775a42634878434434676f664e46337843416369796a676e6d69536a696772755a4a644a46554a554b4165526641494c6758777953366d446c437159536568515155464b6f54505568523649367763635545484e4c456e547a554a6f546e2b616a394f6b494c4f3270397543414949354a444b6a2f46454771413334363461636e6f7148425635646c6c7475493830476d4a564f2f7665545a6c49556b615237315a6e566354317a633959686c6269396631532f5967774d6230686268696645636c3072473046714c47722b4c4d4b6e3033622b5844564c46644b4a70676735392f59786c31776f357779584e33456446434636533542786e56632f774254322b75476f476f4655486e7a462b6c324761425a304a686a714743714a7a4c76795157435a422b446c62396a4f6574697a4c467039793137637330364944367645584447356e3454326863743278586f4e33596a6673534d6361533979382b774341416d4c4d575857394839507437375835684c6871522f61754c493058706638576934756e6e4838554276656c626662744d69557458366932437a434f7767644a735331446a4c494c756279337275786c507167326b4467754876376d71526a394d4974717a4a3464694471773947325633544b33416d4d36752b53387075344331656e434e4e4a62334c33477a322f6c7774517a614f4b3858366a2f38416458513331532b5a515a514b6f6175616a454b6377674a6b4d5372725573666771653346614e6e6138362f62746a417972325a2f424262756f334c4e75416d4e4a6c314473794b78476f6f75392f6c45577651503036644137697542474c68796759484e4b58784f536a3170676e625852423066536472356a335a354c76527443684379656d522f70632f4833594c6f6545736667674167414b69694c505257454d3374676f4766326f6751674d7a552b706354656234377151686238486854656f2b6f656650794c503841786a4538316c69424750626967724e4f6c317074514667416a3936466d4a4c6b2b35533464585448356f494a4f374a6e317863686e37714b5862476d4c5948325a4e437351505a30485632413157524955594c6134785754302f713234372f7957766e374d6774696458627a77584d3962674a3757346630474d76775853454d6a6779782b7041533231305964415165563950674c2b3674776c675a422b78657876536671794f6659764b2f342f623137755041436376682b61394a4c704f686b43505456775358444c5458463059344678792f616c6d446a6b6731526c704149344b546b3858564e73366f3178567a6a4e76624e417252643164426a6a586b7177426956597a676b344948456f6b566f6c48696456536b4165785851366f76516f4d386d4f35673965764a62376b775a4c446259376b53375674353830475464773130346356526179694d6936307971615a724e62743956554774336c673674304e68324b6c325638654342394a616e4256476b3671794c7377774b45793535494c625554466979655467475a53786b3459594b626b41572b3942357579544763346e434e793548354c70576a6f67387671584b747663767a682b71344a652b70585566564f6d41775158516a726b41742b6c69475758626875724934636c716c4a797a494b7267307365645664742f7743704354696866765761374d536f5065744f31365973554842735674524f4f58634659373139677339676b69755570522b4b3043575251504b545968566b7667674139636d514d71616e514573614b5170564b5a466e6955786c492b47694361714f71726b774d75564d5648476c6e56647761616e477661677a334a365438552f705673334e305a4e30776966656331584d6a347256364e426f585a3579365167364a644d2b7153716f37465751356f424948425a622f5249486d74747742795173473641302f4a4270316448785569614d614b6f6b45636b35365258386b46726a48344b794a4f4256635878347077376f4458424566784a597a7231497a36753541676359347068495944464b6a41566241494178455748765563795456617157685141594f6e665432424b49365531425241396f5a71796d717172746a53584743756d484f434178716134736b335056476e59726263586e6a7a376c54754a45644b4446636e35646949563232647a636b65476e73575865794a7577322b41693179586179306774436d47614274775a534c6331747339496f734e7435536f4d46764659394f43424a4552384b3833367041322f555a3671526e474e776641664e6569756e4665652f7741676c6f336471517a744376466936446c2b7464586c616643492f765666716d39686546714d43346a42695077577563526667597a773856503272525a394f32384b6d424d766767382f62747975536a4531344c5a4558505439794c6d6774456b646f4e443846335937533145695169482b4330507844316f6738707639796431654e3052306a677239397544637332647662384e754f4466556356365a7374494b614d49447138754f70423436384c73495274335961644c6b46717258366a7642754e76743469736f417850346642656c75626533666a6f7642382b593746692f744f306b6641582f414a7662346f505062765a334e714c6369615849366832537958572f787834787548496d507764624e7a7459583451733342307759524c344d4564765968746f6d4e743469584e3048473948694a3774794d484e6553583179577263742b6b434b362b3332316a624856612f354f4a564e375a576478633879365a6169636b475778744e78505362643466796d58344b373162303635666d647a5a692f774371474c486b726637467478344c73783366424a66394475577a723263794f526f55484b7658764d6e45626d4f6951786b42704c66426572674e4e71443544486b76505876544e2f754c676e666a576b544b6e3572304d794e4945663067653542587452575141782f476979377157766447414e4c63666974327a476d54483651754e744a2b5a4f64773131532f6345486374436756643971703446725a427a5a55796155716f4b72636d4c6864574e772b58717858497439587671756c627242736b486b76584c49733736364f4a456833312b6135754a64642f7744797533707632376a4e7169332b333934586e7134494778436a4d70703149534e554155595554453530517843434d2b434171464b397959456c4242467a376436375871662f414a47773232346f385874533776334c69346469376e7038547566547478746d65554775782f4835494f474237304344334b616d527a354942526433306b6a62374863376e366d4671503841712f657548526c32743866742f544c466c7133544b374c6a7748646767346a49796f47556f44524c5641596f4d3650616f5277514673796737596f7355754a71674e5934494a7a3164535563554131464e326f4d2b43674b43534e5743395a364a656b64704548364a66443936386d757a364663724f3332535165756d41774f6179334470697456386e7977666b7364343944416f4c647558476b4a726b5432465637535771704376764769436f5441375666636e6d566c684c574f5374306b5a6f47684b7572332f67744d5343466c6a5758484e5878654e4f5342755371767862725061727458785333576e30464262644c41634757476346716c507a4967697446546374756745354437567a773731547433413652525733333869542f7056577a6b5262417a49366b466b696958415656776b633034654978516566384156646a4d57626c374c5848543259452f4a65655a6651647a616a65323979796176416e734a587a3651306c414b68426b5648644147522b536a55514465394158515a54465238304530386355543856415855643045434467476949496c4949796f55415a714b42514e6b6f537941674f6d6e516f51693867426d704c784549464178514d6171425241564231494f536f36434b4f436d4b6a743142416a74676a6b6f7a715968416168696967416745467038504e56386b387061677972456d4c6f49376c544651424853454537464864446b6951675546454b5a49734541586f50544967374f51347a79354c7a3742714c306e6f3866384178612f714b4450496d32656c487a324479667556317942494e63386c6b49307944494c54757572554b524345647a4755337a474d654b787a424237565848703858356f505a656d3349337047456d6c52343869756e4f49466172797670647a5449667a4c30686d4a436779376b454145585754315431534777744754367079384d5664757435485a57546575665434655a344c774f38336b3937634e3636584a2b485967473733567a655844657646354655315a4b45614f6749633967515a6932614c6f44476941784434357166676f584a52417077514c2b434b434a4f6143556450616b78716b645349716733624f3035654f574b30796a315054687a64632f62337a5a6667636561364675554e78574643676e6c616938385574797943656f4c56474a464a7336456731577751594261367731463644306979784d734254766f755a4d55705869753336654e50536634655344705259595a594c525a494a354c464b5557635975746469596b5152336f4e344e4b4b43596c676c4259636c3433316231473773726c7539594a6a356d6f794756436739736f764c2b6d2f355861754e446444524c3957542f6776535772304c30524f424242514c7572506e3270326a395149587a3233716b5a776e6944334f463949586b765876547874702f645148524939514752346f4f52636d594268377543356c79354f346549572b4d3964514842366b626c6c7145455a6f4d55474e436e6b4a584a6630304a573559674c6473343654716b472b4b42627472635531796345303973454e744671793731334a5175586f6757732b4b7a7a324a4179636453432f62534a352f6c6b756e625a7949726c62654f6c6c75695247544448676736385a754754775056795757325835635671746355467969714d394d744a77566a68415646787655663841496474736e6744727541654750346c6557336e2b55627663394d434c636634667a5034494f782f6b753774796c626843547a67656f444141385635362f41526b546b2f37554e6e50564754347978346c4734584e5863464149574e5a634573757a7452706267754e43394b4a306a4e6454623351494e6d343745486574523658475956523862797a707854546e47456171735263756141494e323349695630435746467a4c55394c5a4c526476615139454630747a474f4c2b355662506632397738524961686a484e636a646273327856655233573530336a637448544e387149507153692b6662502f4a74335a38636863694d69472b4b394474663870327431686365425048424236425256576478627678453755684b4a7a437451654e762f774449613161507a57614673577a5279314671336350726837425a5954686743337379446f576a48415a4c5249456a6d734548785775457a4756616f444d6941314b6d48584b6d534d39552b76413564696f6a657578655a67444b76683449466679376d464d5374747357376b6459774b7758626c325a314161666a5258577053444e2f715161726b6f6a6e3856677673354c4c544f35576857573752425a745271743431645736537a797839717172626638646156566a6d51795a424e62524e4154376c6a74306d59584b646e34643630534c422f6d73742f6f75776d4d5749626c5230476d4d2f4b46545369514e4a357a376f2f6e6b6d736e5757784650456875646e3535486c79777a434336577135476b616350795641747a74644e707838666d7059746a58473164753349763475706833483555775775473236524b4e343146634a59634871673574713163747a31653962376431672f465962305445616245355375484f6d6b653342624c6531386d4131467839534147354b6336357252623668706b636c5262615574512b6e322b5375485478515767436a762b5334332b5158324173794e583164325336346d3950623472672f35484272734a44395079516351315857326b50364f76477134374c74374763764b634e77515566637a67664279556c75626b36434e46325274376437707a34383162354e6a6259346f4d477973537553496d4d5069712f55624d4c6357415854734745726849344c6c656f586f79445151635538385855414a504e41706f6e53575157794e417652656a522f6f3161722f4141586d356c714771362f7057374d5247425a672f7743304950535332706d4b47492f6959563975437933505472376b6732322f6c592f6b74573276786e414e674d4938316635676c467966656735466e30754d54716d7a6974417568477747616c636b4a33684d3649477130615351303266676777666232726e5450425752324667487031507a4b7276796c5a6c30312f684a78557337363349365a4f4a6a346f46336d33747a73334966776d584e654b6b4e4a62466c374c66376f5173366e5034396938624d39524f534471374e3432745563736662327a542b58706e4969676b4b2f682b3955624f58395053634a6365533074316459664b694369566d42414c56344655436569656a49526b644a4f42596c624a45366943367a62693235312f55782b43446e64695948536c50536955485632382f4d416931666275573232346b7a594c6c624179425a646532386141565a42624f3862647658394f61344f3533567938656f39793648714e2f5444794d4d3178745855674475585569655342716f4355424a716f5764734648624f69684971676b2b43444b466b32534347677067675354556f596f754361596f4c3972764c75314c326a69705a336479336538364f4f4a47525759676968545a4950593753567664786a4f4a782b6b5a63566475626359324c73686a6f6b4b726a2f34337554436374762b6f616f396f2f4e64663169364e76594a6b4b6d6a38544a42346b76336f464563314d6b41374d455249676f446d6f4b565151304f436a384544323570385379425864516a696a715961516c4e51427751466d566c6d374b337a4842563832717038304857335632336473436354336346796f38314e6252493470516761414d7041444e4735413235614f42516a6b744f2b6831526b43356c477661677a32624537783032346d52786f75687362586c334a43595a6f2f56692b5379374f467963394e76706b653561486c356a7a4c385548544c61584b727362537a634f712b30526748517379634e4c68327132377372632b71626a69794332646a30363948515a7769654d5379775739726532397761476c4534536a5643336173516d317341532f692f63793233444f4d4e475a615061676539624d6867616532437744655232306d4d54497274626d32593277596c694f43353179794c6b74554772694d69675766714d4e7842744d675a4a69346849792b4b4671313562796c535154587061596355475059776c357750385556377551594c7850707731626d493479487758744d554175594e7957654d6d6d596c57544938587957656d75514e584f504c67676c794c544a4a776c382f7957617954476377746f6a6a7a575363774c706246766b676d71647334506d737670733774336461376b534e4d4a59696932576e3143504c73576b5055477143796367494538557476414e6771726b705349674d47544175517943776976536e447a44424c3032347975544c516a6d636c355031622f497033796257323662583676716c2b78423276557657724f78426947755852394d545476586b392f3670754e2b544b38616670474157496c2b39513855425a6b71676442417a4262665442475734684759654e666b5668597336306248707632332f4146785164446237733765687248326f7476384164724e73644166742b4f43355636324e52686733366c6a4b4476322f58624d533753355243746e3631426a35454471346d6e77586d5763735662416b59596f4f754e784f37497a754635792b433151334d7251367363733179374e33365469633170334e337939417831494f66366e43554e786348385378477456703335316269344d784972507a5142314f7a46524767777751426b78726b6c4470734b6f464962464559766b6d6a704a36716667756c5030573459433561755175524e61532b626f4f574478566c714a755441697570505a76366472486a747931663643772b617a656c326e7536736767366533324e757a48497a492f657570746f2b5542476756467531714c557269585851685968627153527a5159372b7868654a6f79573336624332324863756870695864384d516e455976302f765155574e74474c4d414b725635596168524552705a6159575159397144466373367a70586b2f56646a35637a4c4e6532466c3476436f50444a5a6437736865682f454b783666616944682f34734e46726366365238313141575041737350706a5734586878387638537463486b616355476266582f743766614f6c634b5569535339566f3955762b5a754a41487042306537397178786b344b433242416c3765354d417a30785761485558344b3852786232356f4353796b5a466b73365934704d484a344642305a672f59575966726e63756637614c4d596d59427a7857753838647073332f2b647a2b705a44444c46414a44415662676a414d43523731424453655a474b31624c6265645079795036666a765334522f623730467a666157764d482f414333715166474d426e33724947754867775a50754e7a3978644e34686f6b36597834524743726c316a73515752445270324953654741707851316a776f2b5938744551355053497872586b79426f6b6d6759704a4749476f39495779783652764c6f485247314839567956653444507443363232394b7362633679504d752f716e674f77494f446274376e6378303259457772315944767954584e6c506144544d77664870586f6431664e75456a4d3067436155357269584c6479566d57387559534d64456555705a6f4f5a397a6369576b4368437864765850307938517a727a43767632346b6738567033554c73694c6c69516a714465376779424a66666a2f6b416b4d327a572f6133647a66476b616733465937573033467747553978496454644c6e39793251324e716352723346325575326e7843445275646b4c736175342b7235716d3345322b6c79577a397171715730312b4739633035504a616a46716e325a41393362334e357372316d335763744c50536f717647626a615839704c54657479674d4f6f4d2f666776663745614943457672366c66646c6f426a6441755773476c55392f4642387a6a4c49344b4d57344c3357372f414d58326d366a72322f3841536b6546592b374c75586d392f774368627659566c487a4c663634312b474b446c52646d346f6873536f434d5170497432494952376b756b4d35544d517843464f31417a56546c68524c6c3855514e55735546734335347070534d5379556352526b736a694d786d6774746c2b705233716b316b57333430354a42645961414b2b3942324e694e57316b526a62495034726d33706455357577642b3179757a36527372317178643877614933414e4f724263363536664f557a623144546b776b53656548354945394e6e4b647777655461536578712f4b69366b4a794263384575303234326c75516a69513070487845484963483936424d5157376b4736424568304432434e765a3272737463784856476c4b643677586472456839557832464a5a324f336c4b6c3657726e676737677461413052527666376c6d765749796c726944452f697164767439486776794f5565533077323837446b7a6c4e3238534332314758314d6543736e644675314f352b6b4b6d314d797252585147754d3434445333463351507437766d32764d694b54413072524e327175483666492b5863734639566955745059632f65756874743459644e36714455546b72417044526347714b593947546f4931482f616a4b5467386b4e4f4977537a776169436f4848676c6a32716151656c41744a426461725559492f55705a47674d79664a795546636b483130566f6747595a4b716345437a6c49446b4f354a4136774a53772b6c4a75675a526862713979576c7551567669365251522b53416773343470796376676b424c736e6a444949433743754b7a427851304b30434434717255307063325150466d623979386a75706e6362686a3964776e4849666b463658645438757a636c494d772b61386874726a37734636413151656b6863476d71734632754c6c6c68386963366663774843464b464551755754706e4c5632494e757434315078775647356e306163386c566436527135594b722f7741302b4851473730484576445455315a5648725063745735684b7a4936774249724761487551613763424b446e454b3645644a30787a56657a69304e587a5677614d7463536733375362366f63596b4c7a3136496a307938547272574a2b586369484e4d566b3957742b58667143306b4850496f76526634764c727652783641764e794f574336336f6d356c5a767a6862447a6e45776a3235495056337431627441785058506847754b38377535786c645931694a314878507757364f7a336351353873562b7161512b6e5848506d58624e7669782f4e4232376432463478755779344c4e375972772f716b662f414337777a31792b61376c70746954636a757262732b6d4a4242624c76586e4c74777a75473563724b5263397051556c67555a46685247755151494f5341366d58532f7836426c767262387a2f77436c637a444b7137482b4f523162782f30786c67673633713042754c424f4f6835503765334a655430414c316e71562b467177597a6174414d4353764b334a506d675267533056727432674870677374694e645171756d7a394f614458365a6638414c6d495a534a672f49344c7636614665566b4d7877586f64687576754c656b6c70787049636b4677726b3635667175384d596d7861724b586a50365277573364337874376370753073493971382f4566376a347531424c566f517254383030515a644955465666426f6a6a524170384a624c32775173513639556867724e506d5a456331646f496a5242524b756f6d71537845786a546d6663744534645063733878356473754d4b397944712b6b7965794f31644b35565950527835647144353953364d6f485567654e616e426c6d76322f4e6a4f332b6f465874536d574b4f6f505473434479762b4d3269623932514649774d6665663246656833464a516e78785850394474655663334f51387752397850357266756e7542384751556d4f6b3971535141424a5673735449344b7536484c6c6e514330426a7757694d426a6773555a364a5972624737485433494c49686a70416f6d6d637355497749716c6e6736436b67436f5630515932337979565a476f412f4653355744444e417578477663617a6749726f54344c4e744270456d7861495779656b787234753142696a4637684c30412b4b5745576e2f436d735261354e38466261694263664a69653942584b4c47745539736f586f744c536a62446a6d67647453664a6b684c653557526c786f67736845476d436134446f6f68414b79524d516453447a473231523346346d68476c6e397932774865465475497847366e707730683173326c7353777743445a434f69435a32446d71726e4a7a795549434375655034725a74706a527057505456624e7053324f4b44674565584f3745663841636d6d4f4c7062786539656239636c49754f434267483546416a56324a34304e55736e2b4b42527a78556c47763471446d522b53636170697543436d5853774f6179585a6352675374474e5857615a31436f3975534369556842766575763657483274762b497950756f7548666d6138475863394d316661576579667a516154535279624a474d6753684f4a4a3666324a415441695344566344354c427535473343576e4946627065465a4e373157794d326b674159577751614e383141596b6a5571334d77414f43735a426536614c73717846366f787232494c6355492f464352776176354942674f5251575361727155774f4b46435743574d61386b44616376594a7a476d4b574948687854556b644f434249556a564e454f7947485378594b7741536f67575053654b306a546d4b724d496d4b766a4e412b3370634a354d735634764a754879576945644e796d654b7762693849796b546b677a526137754c7338334552324c584e67474379624f445266695857754d586c58346f4e4733416b656f5942626459306b594c4a414e3372524135596f4b3568717267663551644832732f357667793945596e4a65652f797130425932387961524d6f2b2f397944425a754f4e5270327264436451543850624a63617a63424c2b78573535553566705164474d77796d4e5171724e59763841464f2b62494c336f2b614964335658747756735471714d4d6b4450772f4e4c535756555737304f61437534526771394e474a71724a594f6b4a627451494a4e564145596e745478424f4b5957394f4b43797a4d526f654330435863734d70634d6331744d71526b637767746b54784a437a583469554f7a447456676e6d7137703144447351546179306d5a4a385556777472466847756b45793939572b4b376d7a36706b4e6b765037514454552b452b374642336f482b6d47785655354d574b4975644150464a656b2f535541677a67426262484a596f7845512b613078494251592f386e735375376133652f7743334b55542f414b712f67764a3572364e6f6a75625574764955754167397552376c3836753270577047457646456d4a3751676835344a517068676a564163656e322b53584446536f77527851526e5546485a515949416f47416f75312f6a4e7a54752f4b4f4679456f666a2b4334727572397075447462384c2b635a43587551567a69594567304c35386c5746302f57374174376a7a626667756a7a496e74584c41346f4769486f75782f6b5a454c3975794b69336268465a665237506e37753141696d702f645654316539352b38757a2f697033555159506b6f5471556339794951436f6f63454f5954486767474f4b41367149414f5646474a5143494b49716f557142776149484369443052656c4d55457a7175683652636264423843435067756341315372724a3058424c6d67393743526c746878775074324c484c534742597252733569566d50506d7365346a485638454733623651484761744d52495a685532762b4d48326f6d6850564772647142634843416e497345386e494c6436726830794344564b4c2b4646755076536d576f4b796a6f474d74417051496736687870385643424d55344b526a71446a73425141394558566a6159716f6b676357566b53614d79444e764f7178636c45595257613150797056774f42775776645469496d5048354b75324245504c4a416d6b56566869497753524a6b5438457a48456f4c496a5565764d4d766e2b39674958376b4f4569766577493141444c3846346e31614f6e65586563696777415a6f78785277376b7561416b714b44676777434171463048346f6f497a59357149474a376c4d554262696e4d4e554e513473713256746f734445683377354642566d6f51314554556f47686f673062514e666871774266334b6952655250465062667150414b7646414b496f714679554559397751464b4968415651534a616f55664a51636b554155315a425246744e55414152657446443071474b42536d375542557149476b6c786452305545777778434252515a41577a55306a456f4a684535562b4b42546776553747486c3761324d694d655a5848326e706c7939507242694d6346335a474c43414a59637632494b70516f77385075575364754a384f5331334b417571704f42715a7767795373665452796d322b776c656c70677a356b7131347332527a344c74374347714862332b3365677a3750303032735764386c31624673674e6974624e515a4a394963647944786638416c65374d72343273664441416e744e5635334a6444316952756232394b522b7551666b4d467a67364167354b59706e4b524158346c4855636b4d555141794353716f65434648544f454241346f554368504243584f6941463145516867676148695a4e716e5a6d57385554697134394f4b3137753149573756374b5950766a52427432752f6a64307875304d634a636531627748664354727939635671733779375a2f34354d67376d6e52575970772f4e623976485441454438567762667250553936416c7a646a3846716a3639627478625135797951656a68584657527565554b30413973563579582b5547492f7077442f78315a636a632b70583930586e4974777951656d39532f795746694a733766716c2b6f354c6a6575644d4c4544346862633939567a4e725a6c66765174444763684833726f2f7743523352506579456349694d66676735647559486156703276714e2f5a6e56743547492b48755751566f6f59356c42375030372f4c597a364e3042482b4f4f666376523237396a65774969524f4a7858796a6d4671743779376161355a4a69522b6c4233765676536a366449584c646242667469635757573375346b757a6a6d6e2f4150784a63334e6b32747a43452f346d6232507558496e52784632516447653568394a557358784b596569354e63634754323535317167396a743738474f6f3950446772726c7933527531655774626f436e7a572b7a643178636f4f6a3470644b3078625658465968755974776f7262562b6c58716736646d626e54777a78577933494d434d5679626431715944696c75377a52487071536733626a6452452b697368302b395a35626945673879444636366c78377534467347636a6c787758443333714a766e54442f6a51615a7a3231792b52616a70694f4e6458354b2f642b6b776e41584c66542f44785842452f3034426272472b6c62486c794a62386b44323973625742543362427a716669685a3376366d3072727776625864427175334a75346f4f4c2f414d6447577a59334e4575734f74392f30714e77394f58484263325671375a77685844322f42423643562f5552386b6b726e6c7335466665754c443154545335484436732f616970752b72755470697a2b2f346f4f2f48644d6173372f71564f35395630306b77586c626d354d3536783856564f623936446275392f4b2f4967304861734a77636f52507852484e4151615651465377556c56434951624e74767232324f717a4d77617649397937502f414f4c4e313565686f766872586d684b6c557a3944356f50616b5a685974315a6a4333726741434456616a32495849787641774f654b4376617a38794c657a71786c6932737a623644694b46616a4c42425766556f526b5953695843722b396a7841373672544f7a4735467064797979323435462b53425a62375434663270724735387736644a3765614679337741485a525757343661527751504f5447755346676b794a4f48617172306e6972724d57746766555546757353346f446b67326b732f76775569614d3375514c6349306b7a77574b642b562b666c7a44434e59787a396d57305238787462744844322f465a3557394e364d734b6d4c486d454664715269645075433656755570443831693357325961347871416a59336e6c7961522f4242746e62424661396e79645a434a59474f4c4631766a63453845686c314867677957374a69645a7939736c6263756d5452784a35352b324b4d35786847547250745a7775534d6a6a395035392b434458626a4730472b504647424c386b706b4d6b592f7143427741366f3955736663324350726948353056305a4358562b434a6d4e76457a6c674167384f7a55474b326253576e4d737331326571526b6e3278486d64644548596c75744a6f3443706c4f35664f6d47505050337173524a345949526c64746c2f45794332583373586145683256574b374f637638416b6f7455765539783458302f4e595a5835335047585155356f69626f74524352475342703544465837516b6778437a534f534d656e7151647533757057364f433261452f55664d4f6d55766371397075375a6e317352324c70332f5462473674363478306b2f702f4a4252446233397a4c2b6c4f674f54666d6d75624864326f6b47394a75333970584f76656d4862544a6e713063676749325453492f774463673353742b5845797533436635697372584c78486c412f6b6a61326b72683166546d46736e4d6257422b66486b67355739755445424335694b63567a7772747a654e36546b75466e4c3535494f6c74597662636c6a6b566f48574f5046556247526c44526b46706961395042416f653551314b6f336459523034766a32725553387168714c50754947516b427766335651637953484d726f2f7742756c646a356c6b6767596a503237456b6653397763494f50636776384154726654723476384631522f5469355950374d7332306a43324e4763525867366e7147364d4c656d6a7978664a4279643175446475456b3057666c6d68326f436c5878514d6146736c45484c31554c5054336f4132616d4b634f42524c7064424a4164694441344b4e5646366f41696159464534755548346f423765394e47325a79454269614964716a3655485748707536394c7557397a666870674a69756f6472554b3166354876495874454c5a63654c73664a6337656573627265514675396365494f724143766346686b2b614254467968324a6a4948444e4b36416c38436a70344947716b614677674d6165355277706a69454d5136435a4f70514b4d483756436330426c56416b6355514777516b67694a6b48354952465670324d597975615a6636587764426e4d57566c3834555a646d3973724459615a63734375547559434d394d6345413256364e69364a4876585676375852493354326e3846772f455632397036686175576a6276644d323061735165314258624c5a343455585274796c4c7163632b7863776867424575334257327039534472334c6d6d46446773554a2b5a63453342694a554f4b72307975304d7148424c2f353277682f34386f6d322b516a4c35684233442f55673337714c6c337a355a4d6d4f6e34724e62395833556a70754e586b417974463256795a4e7976356f4c6264324677616f6e33716939634a64734d4f31504f30414b556638566c4d535452366f4e586f31732f6351627458716963735278584a394532506b774e795a47755134344439363630592b39416b717a5a2b35594e74634d37684971486461357a50564d50545638507a574430694a6c624a4f4e55477933535663466c33683875344a5a725846775437594b7265323963524c4d6676514c436c526a2b43306175487557614e523071324d7a483349454d336d2b6543315779734c64564f4b316265635138706c6f78367578735548412f7958314169583263443078724a76714a586d384172643365382b2f4f36635a536b565363655343633649636b7a5a4a574b416d6943694a5152364d6a475267515269432f7553714f364470622b59743769637737584f73663636724a4b596e324c5a3669526473324c3866302b584c746775594a6f4c4b6d73714f6e6a3048716f5654724c4d6f4a456f4e5275734f4a566d796c4b39757257724b555433425948585239485962714a3554502f414b536778376935356c79632f7742556a4c337171584e47517136566b4547434b6968346f4a6e79554b4b6850375545474c78577a5a3775646d644a4d44546b736249344950532b66623274733237735a474e32503038506171353279496a4968794f58483971303254397a7449584a47746c34397877576262324a626776476b2f705162622b3238364f5937465661325071573265646b53306a4c6a33666b71725a336c7158686c3072534e7876364578334242773670666b674e6a316163656d2f48793544452f734b365933506e416b594c6b58376b37327256713177446d4e3350734b4f3076576f577a4f3762756b5a6d506851625a373763366d323441485972342b6d622f646c3978656c4750365175576650764d625544434d6e6c455278707a2f424e7472667174795945504d412f696b324b4476574e70443038694d4a536359366a51397930626a665173426f784d357a654d59782f48674679376c6e3162623274666d52496f44484f7039733131396a735459506d585339316744774135494f5873646a65747975517a486c5637696a63754461776c656c346f6547504752576d3165763266554c746d5a3132694e64636763414f39637a2f41435064796c64466d4c6441667650765163475a4c503841366a7856666d4e546a3730384452316c6c556f4c495365586174656b4f376e42594c63692b6b44466447412b6b304c494270656c464a556673566f44306c676f49644d7578427239524d6f574e7041765333356e664b717952424c7652626655375931575931614e6d336d735569634d30424c5236732f6d746d346a39747434375a76366c31727432584c4b503746563666596a6376445566366350366b7a7946512f6277437175337a755a7975792b715772757743414276464c444c6b684f52444d4f775a6c614e7074726d2b76437a5a6f315a795a39492f4e656c326670646a5931674e647a2f7553783975784278746c36486333413833636b32375a2b6b6549392b514b372b3332316e6151303259434934356c6c63512b4c2b334a56613650376578514e49796c56435941366b754e54374256546c70726b677965735574794f5248775766657962614d507038756e595664366d4e647654774256576a585930537836666545484f76524671394f304d41596d5065727249654f6b314838504655657152467564752f4843626958627853324e35474a615748366b436d473574334a53734453487248697465332b34752f77444d53446d30575732462b45764363566f6a634430592b39416f74694d514d6b54613632787a376c5a4b63632b31594e3575445974546e395a6145653253446f624363726c697a4f5653387664576e77576d52636c31565a73517378733763595178376633713266504241384a65576455663951563971365a466c696b644b7346786a376833494d3371506f47313337794852642f5648385176472b712b6b332f545a6631513850706e484476344666516f584e61653562687549473364416c45355a49506c515050424851394d75533733726638416a38396b546632396258444f50375059726769543065714268776450626a7170464333484970725a4561346b6f484571562b43716c55754d666974753032647a6658526274302f5849345243394a74505439747352716748752f726c58335a494f4c7476514c3938524e2f2b6a62624f736a334c7262657859326c4e72623668547a5a316b65775a4b2b35656c4f5773312f695645726c4543376a6331656657583975537a574c74776c7a5834464c63416b574e46594f6d4a6b67716e4e7a6f6644715765567a796d6b7447334175583730386f4454777153714e313053694a59667151627242453659425753394c6a654f6f6c6d7230726843394f4a5945354b34657047466354376d51642f6237556265476d4d6a494258336e416463573136744968354f2f63744a3352757835486b6730773636416869724e6c4f4e32334f3548777a6d59783578476134572f33766b514d49532f71454d5a6342773756322f544c666c37537848505471503841726b34515964637248717079686361457533535078577a64772f70763953357671503841393947597231786675585a4a65505a696777324c3568314f7848444264613175796648373178647a474949456645634f3562346736514d6d2b4b44716559446a3142533762315070397758507454387643764a614933674f714b416d486c2f4c334b6f4d4d6c736e4b4e336b636c6e3053474e52524266434c69702f636d594e54464b6355786633494641615447716c3038665a6b49314e63464c676f2b4a515a626b787231343651573755396d6b4f7645716d4a46795a626b744d7570676578415177366b7a75615970596d6a653145326f6b4f67474f4646546575614a784c654a3476777a562f62374f736d2b48394355734448713979436e6664653375523556586b2f5471337a6e5265776e4d7a73796641776c3851764a2b6a394f364f6243585967324461575a35794569583144466262566d55594370344b3677616330352f71533078354948755743594455756665686338486d694863632b4b376c79414b7a3634673653416363682b39423561635462386374623453575735693856366a64624f42724541506b765037766179746459514c59756142715769586334584f68634d61344c5462766177574e666d673032706b5341786461505634526e626a49767148354c4753326b766855725a767571304367344551483763463264707358674e567537476465714e413365755462756d31507a5955593056302f554e3063626b2f6b67374d765462456f36705772763841753471752f73746c746f766474335967385a526632376c795276384164654558626e2b347175396675333550646b5a486d6736482f774336526a35332f7051753350546445764b6863314e30366a68777175565845684d3775485153556a7851426f326167714b4a585145677978586f50385a364c6c363750434d4d653963444a782b3164445a336a48613368484d52456a6e6d67723365374f377647374c422b6b6341367a536b5870676c456d474e465a61746e5046427173577a45617356706a4d353150745255777030765469727851642b614176524778633869516d47422b6661716a68303151754f52794b432f65627237695663686b714b47543456565554395046534a434332795777717454422b4b7a514d5939422f4a5732384b31492b4344514a4f4b65333471776e70664e557741474977566d6b48437275674d356d64466c336830323546366b4c5343423143705750657a61305167376e706f3032625a35664262387168636e30755a4e694c7271516b343549477131633030786858424236704a5446476646426b3245476c662f3841714c5466314d5656366645434d6a2b715a6b72377778434448414e48547871555a777a43515541434d716830474463796f2f4435725461752b624552786475395a743156332b6f344b656b6170515a6d305359494f787161504c6b6c4c7a4c344467684b543470744c595651437841796b306356664862526672714f525665314433444c2b4834712f5351586c79514e3541746a70774b4c48546972723249696548795761552f33494d746d526a63785734786271354c434a6b796241686443456e3755465677644435717531497744713635426a697338596154546d67766b493571514a5038414b70494675774b5241643047693338466d3365354d41545275484e614945594c4e764c506d776c444d4369447a2b316d626c36345a596a5438563364724c7937626b316f76506261656e65584c51786c6f586f4c68486468376b4452596d69643363413039714b6d4d394a2f46504b59714544514e4e52376c7373426f42593456594e334c646241455277356f5050626b4158376e4f5a566363533673763841566575482f774359715446734d5851616263534b346f5459522f4253334d414f6b6d47515455526a374d6d6c4973534f3556444774452f5563554765584467733938365961766171746e4c71624971755554395344466547584a643330346a375379426b4a6a2f314c7a75354f6c324f5339443663423970626245494e305969513168565346466459763653337553334235647a354942616b775a56626949303431774156326d6f4b717579392f42426a323962635a48417574416966334c46737039445a75667a57794d4b424259493066424e6a516f5170696a7151454238553559567a55594d4a5a70596b42417847536541344b756e75566b584855454278446b4b7742354f614a476c69553069676b6f7658366c495234564356754f61736a456969416c6a696a4536564e504641534d6979427857626a444265653331306d2f504f7567653365752f4b656b30776465633345444c31474d507050583730485268436762494c546267715a7a3064556d596c5462582f75415243686a6c4c397144584775465661484643666775546333462b4261665232666d74573176546965756571507966346f4e7a4d4750463177663871502f41496471502f7a442b4b37316454697138352f6c6b763657336a7a6e2b43447a7532426c4c70795858737831454e6b79355733476d5863757474776456635751624830684e416b466c555a4138322b4b743235596e334947665456793556657a7653695a5973536e6d344c6e454c6d53754731636b43374f6737704f624a635477437073335249616f6346614879514134667356557972686771445630467476704f7170437575395654514b6a62356b4c55515a6842686d4e63686d4676306d55515269797a7a675358396e576941476c76326f4b3230794979564e2b5946526772707446316c76536350696774326b6e7550462f594c67324e506e5442503147713632316e7075644f446a334c69776b665075782f6a507a516477654769424164385150697134584d6e566d7067654343577872636858577a3069584e5a334d5745555a53766b4e626b78516461796537366e586c2f386e326f74626e7a6f3458427150626d6c33313766324138376b6d2f684b79627a653362396d454c7831796657436777593470534f534a4c35496a42304379356f6d694c6b6f615456424e544974377679515a3143486f45426a38457249386b4479434475576d336e706b6f47747a627931442b55347269344c716568332f4a766d314c7733596d334c76584f75773875354b422b6b6f4f742f6a7364463664342b4733626c49726a334a475a3148457273656e2f414e5059627139675a6159666d7549454278374552584644546b464f5151453665394c7a524c6b756961424141576f564d46484978556f7943534937314871686d6a7951514242325261716a4d376f4137686b784878516f796a5a6a4a423762306f6d6531686b77566534426a634262704a50764370394176796c594c30306e34634670336c74324d7631494e75774176576e656c566b6c2f536c7048782b4b73394e7561626b6f4d575055452b2f7336756f59596f434a435136565842764d70564c435a7743676b646274544d6f4c7a4e6f3956475769784e366357366c54474a596e784b79775a556673596f477a59355a4b7a4a3435635573324642375a4947514645453175577a2f417136446756576467635062322f4a586543465547546454496979724c4d506b68644c3053536b50706f6773736d6c546969513741497844664a545548514742455347392f4a65533966746d4f2f75446d506946363230584c535a65632f7741716237754d786e4166423048425935344946463142383041796f69454d36714446424d3058554c5a4b5372686d67675155544d675668676e456a45754567525a73554675347436443856534172726a473347517846437150715158514a6a4138325656586f6e2b6a76534e6b674c5a4b484775436849494846547477515153474b6a594e6968794b4d5333596745616f56436238564d4b4941412f4a475151464d45645842424e544252314d464d635541515a4d65617432323275376957697a4579504a42554d4b6f47713942592f787134774f346b4966776a48386c306258703232322f67694a486a4f4c3449504c574e726576467255535839337658536a2f41493964414275793041386e3936363130585a56667079456144334b6b4334354d6954336f4b596569626541363553504d4b337964727436326831667154454758765379745057516f676b74793345767a7951382f5855384652354c6c3846566374546269794458474e613466465479795973466a316d32612b3373467174626d4d67794132397656694b4572756247333559663969353167774c4131585173546a474c464230346c77796253477069732f6e77474a537a3358416f4f586539497333397a654578535931695843584c76584533662b4d376948565a61592b4b39584b39704a497852684f564a41305166506232303346682f4d684b49346d4b702b532b6b334c2b76706b3067654b77337652746a7567386f65584c2b476e7777516545374b4959594c314e372f46676132627463684c503237467939313646764e735042716a2b714666326f4f573667464f614d6e6a306d6a49636b41644563536f77436871674155636a465156527951414833727032774c337038794d6255784c734571664e637a4f71362f6f63664e755864742f3362636750356855494f4f53696d45644c6734705843417871684a462b4b505a696741555151456e51647638417832322b344e36582f5467534f3163726458446575536e4c4f52585732623754303637667a75487967754a795145305266555548554961685151684e45734b2f4241426948515a7578424a55585a736249446243374c475876374f5334314858733756714a32746f44445330753269447a46327a6f634b6955534633722b326a4f69787a324a4574497145484e6a4a67746c7134584761742f74302f706f3673743749782f4e42665a6d64514d63317168633472505a746e776f546c47324e62305162544f637853677a5748633736473378724a764477574c642b70366e6a5a372b62726d456d556e4e53676537666e644a4d6a334a5357444448384570436a4d676e596a67686a69692b51514632692b613032376a44566e386c6b7a52634155516433612b7179687041496236684c3846327265357337694d6462315a7a6c337278635357576a623335573555503545495055627630546262714f713130794e4b476e74376c357265656d33396e4a70696d556c31396e366864677831505877727443364c6b61392b6144352f544a4b43315636723148305346774735596f66306c656276325a575a4745677a494b79364e65314b36694267573755726f6f49436557434c56354b5978636f505242375236396a6f5236545549454d544c697041594d67342b3733582f6b46677748532f503270334c545a3349666a2b6c63653949546e4b6645794b416e3554536854346f50533272305a445572497a6676586e7257376c623677726876706d687839315548596e784e46515a743755574d37795a7037315a4335717155476a62447a4c6769664348615059745533702b43356c37655432594679474c384b4d56667474374865447070503668375a494e423766594b3246756333426f46555335773976626974735775416d50356842524f486c696e35716a6344574f6b3958696965595734784a446e3455575735626c493548686b6774457875594365414f507958507637566977774f4330624b3652636c616e67657150342b3346613532334c35653374334950503239786674523666442b436158714d3236594d75784c617835476e616b6c7451593169484344686b33626b6e75596345397534525058483650623468614a6164576b55624659595465636d346c4236463448726961484a52714e4833724674626c44484c4873663846754236616f473164555944416e466566395a337432637a5a4e49784a354f75394749666f584339596835747a584564516f6561446b554b6a3571456e4e4733626c636c706748504c46426f7333645069714632646e63457052417057765975567566544e7a733467336f4d447a422b537a516e637431693749505233505437643476345150657542667465564c534b3971742f75647a5349484434724e4f345a4855616f452b4b41507643674b6a7379426e70564b4477527a51504a413043524a2b43376e705071554c4a4e715a30786b587175564462584a4367556c7372735975794432317332376c61474a3555375659646e627564576d504a6548747a76325a4d444b4a37785258543954334968703879564f6455487064304c657a314738305132476675586c4e357644754377384b7a333739792b646432526c4c6d56576767555a6c477a52316655673262496973653962376364525944335a726e6247496e644554523136797a59387341416535427978746953486f744d4e6d43584e5676594561493936574d673247484a4252486278464e4e637064697033346a437954434e586a336356744454772f4c755758315367366a6c68336f4f58596a58554378574466336a647579427777585331485471417758457553424f726d67425164305a486967676a6b6c2b5349446f5a4b6176656763644f4f4341493449476b687952314f676e616c7852514743416b756758435979475743556b454d676a71434f61757362572f6563576263356e2b474a4b33325038653951756a707447492f694f6e356f4f57516f3772762f77443454337266512f38414e2b7855532f7866314166394d482f58483830484678526571364e37304c66575a61664a6e2f704772354f73382f5474316263797454482b6953444e696f4d5754615a6a496f522f546d67362f6f4870316a667a6c472b5a456a777847666573587165796e737278747a42416670374672394133316a59335a584c786b48476b6159757570363976624738326f6c616e47636f79707862734b44796f696d6977354a515855425a424477434170696a727168513151454371654d3945675269456a766768547351642b37754953746738766556777079315970396241785042564641636346487a51436a384547335a586e364a2b39614e4857325335533132727367774e575164557a75573467674578795a43487146775957544b57526b39506779467137726a7047434e367a4c437a6a376330466c7965376b4e55747662726e3753564a766269525932375977782f656d322f7031304d5a366e576f37655565666279515a375775412f71437170767930767865677a645833706d4d612b39596f76636e727741515a4e784f56692b54416d4a79585632582b533372413033783567796c675679642b477538364c4f67396766563746336133544359313653304451315733302b326264694977774a5867524a6454592b75376a617845442f41464944365a666d673966614c6c2f656a76597641355a74373178746e2f6b47336d577641322b65492f4d653564713431364432692b596c4832716778776c706a5846573468386b6e594d6663364553775a776759696e73794d79425976482f414f56632b52566a44434f61772b717a386e5a584258714d592b2f39694478706f6761314b4a4343413871714f6769417764424d6c4764456348514b41456b714d6a6d6f4d7967366578486e374f2f59786c4272384f77556c38467933397331306652622f6b627533717247523875584270305766653244747230374d735979306f4b4e4c594a547854446755477951436a555854394a41486e797a6a59754564395078584e58583245524459627162312f705239386b48494b42785542346f734d5541775565726f4b59594943373449396958457034676b5579514251394e5578444a53516355473359376f516c35557638416a754e4766344875585a75572f744c6b65644a637879586d574475765258643361336b6257695858433347476b2f7147504a4230346a56716c4139557a386c6c6e667657794f7158543947705a39767557704a5335756870316e44346f47753773776831697256353869756836567366754e6d625679556847666835444c34726b62617a5031432b30473078366939463637626d4d47677a494f444731634676795a6638746c3479346d427a39753943316375512f5652755337472f32666d533879476b33523463736561342b32332b6f364c6b694a43686967374c367749346736546a775972534c70574b3363695147485974454a4f5141674e385274796e754d674e5535667934666d7644584e3139334b6379574d7047586376522b7665745772567137736f763570476c386d7a58695751644b647336656b4f4437316b6b4445316f2f46583274315143524f4e465a48526569302f4678515a3970456d357279433361754856322b775377322b6a2f6971716a496e48397a494e455a6b76713976626b6a4e3849646970387a71626a38465a7146472f5545485139556b50756942526862482f704b79584d354842582b6f334e4f3775434845442f30716933487a376b625558424f505967746e2f77434e74785a6a5133326c4c2b515965395a6d6b5a434671743258544650767478353177334d6a535049526f46302f386132673674374d56384d507851643330375a5232646b577758502f41464a6356706c587846674d454237796d706e67674435716935626644466147725839694d71354d45474f385470306a4e5536476f56726c42346b632f6d73356a56425475685277714e4969476b746c787051596343715a5177617558596777627177627344596b33563454774b3838595332382f4b754471353572314e7933473444414676306e675173527351336639432b346b4d4a2b33795163614e6e7265334c543372645a74536b486c4f662b356e5850334e6d357337687433526a777a3572585a33554c564449494f694c567579386f525a735a477147775039773349754e2f51736c2f35704c6a626e65334e334c794c515966703746366e30766266623274417747484d6e464230626655544e4c656d4a7a456147767433707066303436614a62554e55693451566267694262465732384b4c4a7570365735466162636d706767306962596355344d7331554377546a4471795161413068704e51526832727848722f414b43646c71334e69746f346a394c2f41494c317573752b6553652f456269314b314d50475151664d7263736974634c527545512b6f3043306575624733734e326264734e626c455469506838317039437436357a7638412f62464f636967374e69784461572f743758542b6f2f71503745474935424455543147754b575039514d636e514b7a44537330703546614a6a544a69736b687175615543434c78346b6458657243376947503165395333467949343932537a7775537547567a6a303977515737416b65664c39527037796a75374176327446736e554f71506469454c6571455a787478447a303958446d2b43546365735232353032514a7a50696c6b44792f4642786f334249562b5046507031426f30507437594a4e2b7776366f3045326e373158724f434473574e76433145584a483969572f7669656933514263305868705765354c55616e755157694574784e735871666d53766578387549684f314c2b6c435053636d6a7858473945394e386d7762313066314c6f49484b4a2f457162552b563662636d3563526c613063444b54503231515651695a6931666b344e79382f76585432387457347657446b5843786269324c646e61774f4c784a34302f42303975357039566e44415348785a425664477664575232763372555a36446f7750774b71386e2f7741324c2b46745743612f4c54634873794454626b2f646974414a69614839717832695351437278504d6f4e416e554658577036715357536b6b384a56705242746b42675542523378544751494569673148346f4263687077464652647552467555754157676b594b7564765672682b6f4d6777374f6e5536327458735850394d72416351576b756d4a614b795a7561426446585667476c5a626e71657a7446705841542f414857613536316141497432356e74365167364d7172503669662f487541596153363538665772372f384d657779637252486354332b30766b784673526a4b50476f715543532f774473337a38762f7743466551395075655865696631553936376d3633486c62457746664d414561396a727a4a42746c342f53554871664d306c716856692f3545745a695a45666b716f584a58342b62444d4433705264496f51616f4f762f41486d784e6f6d4d784c736f71623178702b62627078664e4331754c6669306b302b674b32394f334b334b476d62794836634f4342724e377a427242704c6973487130496d3238656677523254347950636c395a767868624d5269592f4642357145744f617467444c436c465870423853757355727a5158757a52577963684f31496c59435445567861683976324c706265506e577a474e667a51634f59445556654e636c626642684e704269716e41464542654f536d545a49414f6f7869674c385255634641434749526b4b50676c417a51475571755065703855414846464e4c596f4344586975725974434778755365706d4175573477586f2f5339685a7537507a626b586e5776443830486e70644743757433414b6e4e4e75625a6849766b73304a455651626f7670645869365a51614b794354394c7145536958705371432b552f70556954674d456e6d613450443936477473614945756d765433704249524e4370666d354566696b3141684264356838524330324c6a785850494944703764386730775164625654566b72745a7a57477863667250755631755265763745476b746a476d663756673330686f635976705639795754555a5939366341525233624e42335053662b43427a6153366b41473746797469514c63517a414d6164793677446969427a4638465265654d5a5334416c584f504373652b6d4c646d354c4e736531412b794946714a5031522b61317a4c5231446852593973534c63524b724349577767732b434442436d4f49537a4d75356b374f5346584f564751596235364a4e776461396e6146757a43507335575335445849506d5758567457382b487551474d42564f47627355692b4251694267677532554e6479514741433078737a746e462b3559494363586a6244794a374532334f354e7765664749692b496d54334d6733587748634679733877475670704c694f4357635255596f4d52414e794c686e4f565676737a597356686e616154786f5156737353453863554674794c6c677370704a62496e754b724e754a4e6355464d54314d72733249514e7276566b4159346f4a4c43696f7553485a677257564679446f505053682f7744764b42342f684664687a34677566757069337537637a523479375673744564364234594f6168575268716b7174593849563173555158514e61635676746967437732367943335250567951655a756b6d374f527a6c492f676c6c302b354e4a6f546d50343566465679723830476933306b486c564a4f444f42583971737345614f625653584a4f6754525630307044497049765568533567434d5547556b45734d43675a436a344a704d2b6d7153354c34494f5676385743394a36506331624f4a2b6f50462b786563395138587a357230506f636f6e5a687359796b446c2b39426f7551634f363057376d76706e33464b516341712f4b7269677645614f733136456f786f4b6b5557714c71716342636473775237304845323135706168395472724173486f7544706e593341745842704d656c6e643875444c752b436943773952635971434c3470576644676e457156775151535269386b5a524a6c52534f4b43655944792b537545754b72306e735442425a627a4753655459425677426b565a494f65584c46424b466b495069616f7930736a54547a514d2b64554944512f74524c4b6e3755307a6d554664795a6c463243343134367655424944724d52466458637a6a473258785848324c334e354f3465373542427246714f725849764d63634531756b74647673576b324f6c6f69767a56666c7452757842707561626731346a426c545061323365464477794b62625459365467726143714362655a414772697650663563576e5968776a4b54643637375a75764c66355466387a6469422b6945522b50346f4f6674435335474c72737845594273317a50546f61726c4f43327975456b7432494c345344676d7677563975594553324f4b79796d495646536b2b3541505a6967337a6d57365469734636784b365149347034587a64484a6447305979446a4e426d3275306e5a6a5358354c595a66715530674853794f4c766767414f716a653555586146786b727046734b717164634d554631697238316f444556437832702b57584a577156364c4f436771497a497856397554716d35646a45746d703538496e67676535417573633544776b737930334c766d594e77584e756e55614238716f424d365a61774f316379554e47397552475a5035725649584e5753513751796e356b6a31486767732b34466f645a782b6e4e4a4c66534a6f614b32473045694f655a344b36473374794e49696e4a4252617547354b7136566b50324b6b625941757757714673784c3446424c39735872557252774f43385a4e77573455587470346338753165486d584c6f424d7561344b42526e5541515159386c45436d424a514b365930513145644b445a494478644531785159487351356f4768634e75516d4d5258765854396332385958686568344c735933423334726d327263723078626857556977484e65746e364465334f3374575a6b7662776e6b333665376967343934477a365a61482f6375536c37714c6b61645061765865722b6a587a746f6b4e6f73785053446a784b38697a4941354f614e585a5368775447714247716e306e464b4256516f426b6d46634548514e55425a367149536f57527167484e524631475151493431514f4b414a51656d3941682f546c4c75573764485651565762304b6d304a64366e7539754b766e4e706157663271675731505264684b7137642b416e46786b4678384b5672547558583238784f414863673578365336614d657238302b34744d35437a3237684f546f4f6750434b6c7a77543233315037306c68694f6c50416b39512f6567613942306b43637365437538575042553639525a42497959504b6c55742b59694967667652467a4a5a723177545035494b703342357568712f556d5036566c6863506e6d6363466f3161706a67677342614b4a41696d625564496f717a4a76795157576a56634c2f41436d44584c552b4d5a66417275324a4f754a2f6c49306d795268312f4d49504e456151706b6d3165394c69676734714156717056547551516330575a4254565241616f633054795564384541374d556356437a6c42694b59494337686967315852664d6f6d7141794c44536b77547a6f6543524243574b4b6a4b4d67676f67416f4b714d674a514952414b6877515351596f4652733052785142526b63437476702b786e75376744552b70412f7032774f374c797041592f7358703465587434697a61476c76467a4b797a7643314b4e6d464c59344a72306e35456f486e75326b2b4b51584a6d6f49645a4a507159354b735551644f4e79556351717a634d69334644616b7a692b4374755678717851566178676753586f6e72413654564d47306a5456416d69723471655847644a69716154784e557359315959635546467978356c54677152746f6b736346314a786f2b61706c414d596c426a684363487251594d7264633246616a366b73707848374673737831654e416b5a6d70346f6566496369744f3159794d4467566b76644d793247614458626b58636c364b2b4d7167696e366c7a49587a626b426c6d563149456d4c6f4c48716979795275454671397931474c42685630414e4b4b57722f6c3444444a4352364d6e795567787167713333706d313951423178454c76366f34767a346a6976482b70656d33746863305861673453474258714e39634e69344c6b63423865316444643765333674746841303165413843672b6459347143697333566d65337553745438555379714341785046414646796f574f61414469746670742f3766645772684f6b435166734a7238466b77526a536f51622f576248322b39757747447547344771353773757a3679504e6a59334c317557326c2f4e43685848596f49427855666968326f73635541595a6f754643585245637a52423250566230445a735759665247766175502f41416f796d355a4b67676f695136457131434c384541314a69414b424c6b79466355444e37313276522f5652742f36567a413445354c696173696932534433586c78334839533331426e595a705274744a65576553385a5a336c36774e4d4a4541354b2f2b3533386967395a4f787165684757474157652f6573574364636f6a32776f764c793951334567786e4c33724f5a536c6a564232723372414469794f3963712f75726c2f787964555a7149446734396e5370755358745150547643434f6e676f376f434d43795846795555726c365a6f474a51706d6f3376525a7149494b64697374795959396970485572496873554732784c54574a596c646a302f6450496354346c35324a44344c667437784a456f6f50556e726a37664e63766537574f34684c554e4e7a366633712f613377656b2b7756312b3243615a2f42423475375a4e715445594b764e656839523277335131697334384d3177634b437142524a6c4e534f4e456f5154745263733261674f53444632356f50617a413455397935473939536c45366473634457575063507a57432f7537753459544e506350637154484f4b416e4669482f46534b44667152496667674659725a5a7641447238493858344c4b3549346853594455375548634671326178414c35685861576f3243354732334a734d4a46375a593969374643484a63494f6436704272546336726d3761354b31495868395074386c3066564b776f654b7832494355644a6f2f69374f4951657332336c7a6871685547764e6b547045674f2f7656473176324342617445644959445033593936767550454578786a583830454a7277564e32424966384b7252526e487a39797a7a6c6a5367515a626b574d5a774441552f65756a626d4c6b415175664f33556e6a3365337a4b7573454f6452692f616731476a4e3766425964775361412b33795851756a417877347637634667763666716b33624c4a427a376e5254342f6d755a624268654d44322f6a386c7633653573773845764d50385035726a544a38597851656b32384b5049697558747a2b59566c737a7478306b4f426c6e3365335970744a4339616a6348553472322b775639304878677359313975534178496c463378564f36324d647848726d78797a4b4d3453665645732f753750624250397a5974683778302f7334494d64763050622f38637a4b556e786a5435726152732f523461744c45354f387a2b533565352f79426759375749412f564c78643342635737666e656c72754856496f4e4f393953753736577134656e365970644e6f774250692f4a596f3178527267676b327955524e4d46484b4141634565314676636744785145496d75627059314e4555485932763951434b3153674e4a6b35344c6c2b6e336d6d49597575764a343143444a63594455784f6456794c7a4f636c323772694a4334392b68375546416a6d68464555554661424141464764544a51554b43364e7a54414155497136396673647862336c714d6f2b4a6d6c4867654b38594f61362f70526b354d51333851784344306b59705442787147537957623839586c586a3176546d467171314b68414e424a31417332615735746f33756a366c5a4a346b5279644c3574535735494f4c7659537341686d31426349784d614d7654657033394c776c562f6776505872786b5851555678544368516b6961305141564c49675a7052537147614332335a755835614c5554492f70694850775855322f2b4e622f63736447676362686234592f425a64687572396b6d4f30667a4a357844793741756d505476575055476a6431694a2f376b6d48752f5967742f734f7a3264643975682f4a617866342f494b73332f524c5930787333626848314754503770442f326f6a30486262542f414f393355492f7757366e382f7744306f6176517242307464764e3957412f2b443549466836743662624c773251503830332b594b55663546474d6e7362537a4544446f636a76444b7765732b6e57502b485a52502f314a5038784a4166355065747639765973322f7743574e6667554250725872462b74765670502f62745539376669733132487246304e4d587944796d6e2f4150784a366d532b756e445248386c564c3150315863476b377638416f44664942416f394339526d64586c5437385570394a395274476c71344f797679566f48724d6a2f415074482f7254475872467248376a6e343045675057626243493341622b596a386c726a366836364d72762f414f682f2f56584f6a763841314e694e64373379546a3162314f31587a626e2b6f5038414d494e452f7744495056724a2f714f4f55725148344a5a66354c647566387469784d385a57362f4e562f3841346c39536a6a632f39456679567638412b4a74784d4e657432727638397638416167483930394f766e2f794e6f496e3956715a482f706f456832337056384479373837524f5679442f7744744834706276716d31334d4443397459516e6c4f7a3074335a2b395a37566a5a584973627337632f346f764834494e502f414f48373836376164752f45562f70797237697a6539636d37616e43576959306b5a6346766c36666474563239794e78712f303564587578566e3936766b6556753478765147567a78663768562b3142795648616d5374766d457076614245546b63767a5353344941464d4641796d4a6f674255484e513470753141475a41714f7069676856326e7a4936734f4b7043767345486f6b4b494443354b79616356303766716347367146594c6b4d327136706e6159394f4344306c723161304b47546a696b762b703270426f347269574e72356d4e56716a5a6a6270454f67477157366345305775416f426b717474487270516a7557674e74775a797769442b614468376d526e636c49357167424d5335375548515148686767654b4e6345476246415178576a6237323974662b4b5a484c4a5a32553149505262542f41434558414962762f774453526f65384c725847614e794856452f554b7277776f742b77395575374b6654315733655544675548734956725855755a2f6b5a62615147477135386f72667464315a33647358724f5031527a42584d2f79647a61736a6e503845486d45597555694b434f6f695478376b41484b436471476445584f534c3549446968464b4f574b614f4b434f52555972732f35484553767733502f6574777564374d754d2b4b375871556a4c302f61536c552f7742574c396b71494f4a6b69426b56506b6f4457714146645a2f4c394b34655a66384166706a2b61354c456c646e31426f656d37534f5a3832582f414b6b484654456f4f6a79514146484641714d675a67464e5443696771576b694a434c6f46424a6f674d61347146544642487954774f6b304c56536b635643454858597a687267637669736c375553367073587a624f624662656d347a477141574a336245544b77532f454c645a395a337342566942797757614777334674764c4d577a366c66356535482f41435777333667522b6144766254646269386636733452346a39764e59665664744334393630305a4471504e6c4e7275623877776949446a6a376b62396954655a4f5a6b634e4e454232426b59516d5a476e75504a6448376d473274472f5077327871376548376c7839695259364d496a552f4a63763158314c376b697a612f346f3866715046427a72313433376b72732f4649755657774368346f48745154454f72524e714b6f6873457a6355476d31754a516d344f487437664e61544b47354249782f466333422b43737433644244667551583354705432376c65797054307656564d6f73546b6732656f5438336447364b41682b396b2b7a6e4b506e58485a6f4e373158764a6168626c49553873664369414f6e61796d5071496833437144464b5a75455269474a70337236447472454e726174324d6f427538314b3862364c59382f6557337149663144336674587335534a7846587a51586265666d534f4c424e7130535972466276655475594436626e532f4d56577664686872715751586775585a4965437132743858446f664c344b2b6357464b494b54513071466e766a712b43306944466771627365442b4a42554361756c6b4871453042714f6b6c32566b673142676735386a317948417173744a6863343470393052397a544363492b39586554356a6d4c6436446b376d786676573276523836475534654b41374d54324c6b5239463345356c682f5466785370384d66677654533275673634302f6c4c4f726f776f44504c4a4269394e32467262616f786379486a6d3379354c74526733746b6b7452376f6a677257664e41737175532f74795337522b715842315a656f475357542f414570534f50346f4d4f346159427871725958487077564c36734b384f78473349454d4d554851684d5a713177344971566c6c3052663841656e684d6e484a42706b4b3848556c4948336f2f6b3671323874514538705651656638413875733672646e637879506c6e7671506b70365844794e6e43503154367a2b4333663548613833302b663841444b4d68336b44385373567336594348364248766f6765334e395563346e55334a3154623664324456706a5279646b49584e463458413336435034536633705055516266584373597a31643451623532324a476178585231523756756e634d694a35454c6d333368506c78515850347456472f465a6474316441792b4376334d394d4850425a3970314857426d677575577a632f70696e45756a483071784b6f42497a655753785375542b34737750684578376e46663372715835584c307a596757426c2f5550384951635831505a7a4245345261324435636638415438567a525071597231396979445a304e684c56385635472f4152755342794a5156677468676e74584e45347a494577432b6b3446494f4b5969724371447232665837766e45337571334f686950702f6c37506174563162344534574c4d572f72534e36584d4c79474e537664625552756662785030323479315a2b48424254366a487a4c316f4436543876327244765a7968366e626d2f316753354f744a3373526f767354723139744373572f493346364e30426850532b726a486967376c7950384135476f343446632b354945317964626476495862596d635164506573526c31456c414e722f557561546746746b645053666373746a706c4b34324e4564764b56325579426757373047794d704b3047716f6a5442574563454732786578475277566a67644a78574b784a694857693549526d596f4c48425544526e587656416e4530775138776b30646b48474f356c73376b7476626c3148714d382b4e45442f4146547176534e787631357242366e4d6a666a534d5141746c635451464262454346494e486c464335546d70435459316456334a794c573441796e7748743830436132496c7a77346e4a6c336470596e5932786863496a452f6a693679625859446166313934786e6a4341727056667157386e66476e41484242782f55623844474f3274314554714a58456e346a6b46314e364247656b5a436b754a50466379564b346f4e4f77336632397a6a42642b5453454a77725277764b436d4f5337507076714f676558502f535548587358377a6d4a69524846644b46795559346c59625734684b6879576964324d49366a31636837424252757267746d553643693870764c357654465843322b6f2b6f2b6249786a32636c796f67366e4b43786e71724c4d42464b5a4f6e42596f4c4c684f4957375a79454e4a78447241514f4e4f616133497750547864423658642b6c626666323951506c336348784865764d623730712f735a4e644854394d7867563350542f5564636f32352b4a3133357974336f2b58654771457149506d307358717069765265726634394c62447a4e7231326966446d46353659514b61497333745245566f4368687a51547354616e64714b4536634576496f497a73324b3952366449666252417152717032727a64714c795865325574464269677a6279486d4f5758496e48544a656a3345446f3153414656783935434a4a6c4842426e457a48444869724e626d70466355336b585957764e3048524b676b3144324b6e546967756c596c414351785375384850735562637a62464d46483164774b4362694f6738566e424243364734687173786c797173555945646943524d6d314b596867725932783956566243794d57515677744842317274306f506a6d6c38724e5877674155436955637856734d56683363796559585261727437666d755875346a56306f505337452f306f39675857685163422b61347578366f386d3746324c5231426868564177495968632f31475432394d76726e47492f4e64436a385668336b65717a442b4a7a2f7043445142714e636c6f6473634656614f717566425051596f4d3932486c6c355a716d345133746974556a526c7a3931716a4c6b5546446e7a52456a737a57694f366d4b524e4173776e2f57484d7374387251424f6143573933705a36444d725a6276323734315a4c46354c594a426230467767364d37635a6a735378744e4a6e51746d68644f4f6f67487351615979397946794c42754f4a526b484e636c5863356f46496f34517345786c5841714439504a5141675966745162444e3634464c41555a3670666969415544796b49347054685648537a71476e6878514c706f2f4e5a373074415a614a416b4c4a664162346f504e2b7061726c3458705a5a4375433665336564714d7a39565735465a5055592f307a672f344c716151476a394945573530514e5a747830344f723664367231675545612f42577845674139454674754f6f3179433257777847537a774146545661424b6f51656176512f72586f384c6e7a564d744d5267723932663841794c334858536e384b797a6b534b5a494e6532414d546768654a62704642383064724952706e6e32354a62707a793449414f734f71376b64474b61334848556149586f36616539426c4c36734b6c4c474f6d6f77644e6f47484171566b584b446c3777695a6372732b6858502f466b422b76384142636a654552646c3050514e55764d66774e587451646d334f59777856385a796b5756657172444149584e31437a4457532f4c38475158786c54465049686c52613133574a36554c3969354d6442486567352f716c6d4a455a347968494e7849577777623976466358645735486432724d334771546b386c32504d4f6f6c6b44757a6e4e4538465748657054774f6f636b4430704a466d795352415a47576f6d71426d4a35493143716b306156563853344343324569356646544771724e61384662413659765641726b47695945414e465271736a34554250515853546d63546963453270716d717275757a672f7551597430586152717375306e434d584d68557638416b724e304765575842593976734958704764335671667047455751646933756f7a2f36675075567362774e5a594c48623247315068697a493376542f415073794e75636350306f4e67414a654b74316559474271754b4c2b36325a6538504d686871483756756a636a666a47554f6d356a474a6f345158735a74484e31346a3157386478764c732f34694f345558737264384f387778486a344267363846493670536c6d533644713741556c79344b364d5850616b323064473144566c4d756a613178446f4c354277332f7157576349526c576932524f754c53784f4335392b77424e6f794f724e3047675878435439775861744456624568776f764f77467439455456645830365a3035302b4344634841666a6d704c6b694a5945705a444d6f4b3577397a4a4b384f7858546b4431534463465872304470392f42414e46613153777a634952756734346f47625351507069354b6b62494f4a39365533684b6e7654656348596f476a434b457241726f7754787678424962743746446469394d5367722b31594d31557774366662354a2f4e414c386331426636634b49454672696e6862486570472f4573514d4544656246413541784b49756952706b68473441414f4b4a4766444641684a4266494f36385669765837692f6f745475414f41506e54386c3541386b417852354944696d48566967586d6f4f4b4e425241557778515170674179556e5370326f474f4c597146674b4945686c4167322b6b4854764c4a2f6a6a2b532b69585a39556c3836394f4f6e6457542f38414d6a2b432b6962693535634c6b3877676b5235674e732f58456a46664c3542756c66546476314e536f64664e62774d5a53666955434353674c49414975676d4b6b2f3068526967794139714269516f435648644247346f686c4d454d454541556448784b42325144745264304d464548712f52472b7a49794a7a52777663666b68366364477a74422f455a664e5337626336734f5344593570782f42624e7532576178786475595674722b6e51345a6f4e7436414f433555346d4a475472717a4773616837653959647844435278795157375871506c6a46714a6863723141616f39504a5a39764c793730547a2b61313362476730777a5150357044444243524a71465662496e48672f3766623449796b41615651517a5961654e467a376d346a624a69534363417464776c7561346535737a4677544a36507951614e6f5365724e793636454b726e37474d644a6e7a5730466f306c6967746961754170637878714559426f7554566c535a533150334642644357694e44566c796638712f364a48385336384f586175482f414a4b61576f356830486e58664a446b6d6947724a51316f67474b6a4b48676f63475148696f6f454f534359714571524c4b47694359493178556f705139794454366673706232384c4d56364f332f6a56686d6c4d6b746a4842596638572f2b37492f676c2b4339546d3253447933723370554e72434632313466444c747958414a587366386c422b7a6a2f4150552f417278324b416b715969716a4f617150336f49412b4b6d564548434c75676e4d49636c416f3641636b575a462b43675a426f3275316c7570364966366a7743394b495232567652627857486132764b74436d6c342f4e4c634a5a39522f6c515072315448484e623573314f35632b7a573433444d4c64634f734f67797a6b5859597043346f6e4f424a6f394654474a4b446259756746704231736e6b35376c7a524a70436e73563034523648722b6c6b464d51355451384f54716b5850366b6f346f774e534d6e6f676163693746573237596f713650714f437345534d4d2f624a414c387572534652634c5934712b55584c39367a7a674353533334494f6663494577433746646e6358527439733951614d7554754c4c41396e78433648716b2f4d3256755264356e35494e477876435a456b753664324873466932467a72593555577a66544771446345475079364d74653233424d4e4f6375504a55676b784f524e464c62514645476739456e2b53304357714e63566d315944444a5045474f426f6731306d47474b617a4545666971625a6359476930572b6d68515a50555749726c58334b656d3374454e42774236547856752b674e47724a59374236534547582f4143625a4335416279336c305850774b386f41586f766f6b424863326a6175566a4d6163463450656257657a76537333417869666878515a7a5254456f674b45384541696a49756f7a71596d7144727a756566365457707433666447512f4e6364645830732b5a6133466b2b4532395866476f584b41794b434d395565615645426b454656486169626b6737596471436469676b77554c39366a4534494870454a61494e566c4851534d654b6968346f6f417a35496173736b6643366c4d5541434a64544f7143416b48454b61614942455577785152466d6f50657046694b34714769414d46416f5a56557137464163516d444249536f6572745153543549636b784853796a415677514168444171414549683271676d61594771414442776f616f4869533337566643556f5657654a786b72596b594242313972664169443951643132397663315931507a586d3972646a7050486d46303970636c45422b3942723951732b5245626d31545365755049727a6671753246753572746a2b6e4d43543838313750623368667353684a6d384a586d2f57746e4c617642775944716a336f4f4343454855596842364d674a34684b79626b6c2b61445a494549524a554d6766467755694f6141527851695353596e4254784236635551346f5542385068706b556457504a4a45484a4d5a45384b49414e56424b674879585932563058496153584d42377775504b3454544838465a4336624a387932572f6167326570796a30777a506573594a4d756f354e5467465a646e4735494876565476496b554343324d7046713143325750564c39716b7a724838583446633448525556544351774b4430587032396a75347a6a423346476c6a7050666b7456776e36714f653276743846354f424e755775424f6f5a6864666165726952454c2f41507577392b5076516253474a66344c682b7357576e47396c50453831364f5a30317747575874374d7558366a5a3833627941726f36767a5165666b4b31554163386b4731594a6f34647143616148676f656f67483243686963637330524145317951646e30533451384a5a4e4b506575764f634c59367977343565337379387674393339766338316e4c537032725075743164334d39647775543775354231393136334152305767354238556c78397875626d354c335336705251544e6c4e4b4170696d71616c4138374a67427a537774796b57416457446379646c7074626c3767754667332f414d4b4444706b4b6f4172726237316539766f2b51414e4a6c54546956797052307949495976676769676b357256536d654b487a51542b5a457847614271464b6f48737a6c616d4a7878433956744a57393162456f35343971386c4945314336507047394732754e634c577a347332356f4f356374516d4e4b356d2b324c435241773936376c7535747273646471354167385a41483346696b334d375549363554685166713150376b486a4b6a4641384538324d6a77536c42486b4d4545585a5446424146322f526848544d3877467853475870646c3546697a4178366849744a2b507467673137697a714f723668676a62764d64456a69724958425071474b7937365636516c4b30656f4d50596f4e562b526a695069466e755468434a7645556838386c6e3233703078313767752f65756636746668436632397643486a356c427a6274307a6d5a356c5639693734394e3950336a79327535467554426f5861652b5278376c6833666f6d3732745a774a6a2b7148554548503756472b7042694378795231494249474f4b47614c484641304b447062623157657969427452474576716e706552392b41567354366e367052376b346e7445482b537032767150327476524331417a663841354a523153566733487158715249675a7a427845615248756f6731442f483457657265376d336248365231533933373159492b686259735463766e33442f346678564d503858334947766354685a482f414d795758642b4a516c732f533971663632346c644f59745262346d6942783674734c4c7973374b4c3466314a61683769436e482b57333751303272567148387366794953523952394d7379486c62517a497a75532b597145747a312b30442f41456470596950346f7566677943542f414d713335384d6f6a2b57492f46306e2f77434a66556a6a632f384152482f386c58522f796d35416630374e6d505a4439716b76387433706654473348736a2b31426d68366e367065724764306a2b462f77414577396139553235597a6d5035347638412b344a6a2f6b66715a482f49332f3575503549662f69623145482f6b636334522f4a41502f77415465705965622f36492f7744354b4a2f796231455646796e386b667956772f7937664439422f7742483755662f414d586230663841622f322f745156522f774171333438526a4d4839554238575a4e2f2b4a4c6b71584c46695235322f326f532f79573563726373574a667a57332f46512b746257352f7a624b4250384574487943416a31543032374a372b7a412f5562637950634b664e55334c507075346b6674376b374a2b6d4e324c6a33687a37796e2b38394b765575626164766e6275616a2f36714c4c633256693658327432682b693730792f496c414c76706c2b3131772f714439567376387172486475547546356c7a6e785635322b37326866544b4c66554d50654b4b6937666c644c7962567862356f4b794f436a496d7168446a6b67456736696d43474b42744e48556442516345426c57716a354963696f5a566f676d4e45525171436c575564734547765852754b716e4978535735565a50504c69677574546b2f6374735a36347563567a486c6c52585275734b6f4e7374494c733671395176694e767966716c3153374d67712f76495272395666324c424b6372684a6c695541504a51494d6967444d70696f796759494965436877554e554157514d4d564b59494f455367366e6f65384f31766a562f787a364a392b666375682f6c4574486c5733714e557665764e676642646a3137646a63537379482f41476f2b383151636274555565714b414d5169554b7149434b55554c49554b69413831475155484a424b47707858586e43567a3071456e2f414f4f394b4c6370526635726b7575743666474e335a376d306645424737487369576b666355484a484e444f71494c71494277585939586a70743757412f374d5433794a4b34793633727730583432682f77424f3362682f36516735576c7356456171486b6742545144705863756e726b676d707854424b4a48444a45466b7064424f52524e5252513830427a5152383830564e4b566d356f47354b79336330794842564b4f364474654f4c2b356c62735a3771464c637749634a56584b733775567361656675585a326e7164694852674f43447057444f546132636670444b36647353367045716d507174694a654c2b334e593978366d4c5a316c673245654e4b494d2f724e333765417452704b66564c7379586e6772723936563663707a7154697163554453476c4473515a46424479524137776c7a6f692b4c494a455652714d4d45414e4e557a4e56425a596e706e7843313341434351756537463171735843497365784271767950323169514e576e6a326f58706a3765304d43544d2f6b6c6c31626133796c4f5079533769657252455a525164542f47725231585a6e4552306539656a6f52546b75442f6a783057446b5a54393441586367527230796f4546472b426e62654e4a774d5a78376c317476656a75374975514f507a7a4378536733544c42596256772b6b6267786c2f3976634c762b6b6c425a724f307651447378592f797575354c4469754836324261755176665449615631374539567354476142626c44775333496d564d6b3977704a534d6767783639457a7177664661486f58564e345630383031715138736471444a75365473797836645075563968764d714b4b766457682f536b7a2b4c3434495031755067673379674a4b6b775a50626b2b43655163676f49305978702b3953416f365a2b444a64517a43424a7931476d5264476378627445414d71326338754b6d366c71674944695063677877415a6c626236673261725a71653561495144646943585a4f474861727476476a38614c4b4875467867466f6a653032784b6c55446271636a4879342f56696634566645526a51594477725074356133756e7369506d744838587345475431613372326c324563644f722f61584b383774722f6d774d76717858714c30524f334f412b75456f6a334c79473346496b696b71557a5a4266666345534644383039326571334c4f4d786a774b6c794f715572453331517a77634b693149435572557964506866673644547372757533704a714d7678576264794d675244464462327057627074484563302b3438626e75515466544c44696d32567332343556716875394a75526b63426a3371793239746f7878515a4e31633875555a5246524b4f6c64754d5243552b4d35616c79626c73537651426f41524a7578645752364e5846412f7073784f516c394e7761543736466553395673697875626c763841695864324e337939724b542f4150483833396975662f6b6c7474304c677775526a4c74516369754f4b55303755644b584473514d57594f4f2f74587374737773432b637255596a746b7646475339727433473032384d48416b673568654e69497a69666d746e707374646769565471366e5748647662316951776b2f5936312b6b4e35636f6e485633494e65304273796e617847725746527544355534366a5356506374567a70307a77495754314950485854454d67727633664b675a6c787138504e614e7471745749334a47732b706c7a642f4d364c4f56626c4d634d46717453496843314975414470516453784c707237424e476c44674f436f6a63634e4a4a75376e6c32744d6648632f707737304532393878684578636d5570653359756e355a7049316c37594c4659732b5441573431306a357264426a6148454641685956624e41394242566746475754644567494f526574776c653877316c436e49567856675a334e554a7472356d6e4a4362527167654a6e4f344c646c745a2b484e64657a6274625348522f794878537a50374667326b525a74475a5039573557523746544f6370645751515737712b5a48672f465969576e714a7754547536773539796f7654454c5a4c566c52427964784e7a69354b7a786b7754585a4f615970524c6967444f704561574a7a554a4177554663554773585a774a6c4352344b584c74793447317949344570594456486d6f594f34784344504b47614e767863552b6a4a426d37304263346f534c597147564f534f6b4d3346426268544e4a4f5648554a657553716c4a2b3142303970416d41766a704d44306e7358633264337a6f367965587537567a70776a74396a4745764863592b3961396a4d7774694865554863733344487847693458726e6f304a524f3532773668343438656635727257705964697674797133306e4a42383430755755656a4c5a36767450744e334f32486278523744374d73526a71715379413464714971674b3043566d716774695858704c6b4957376c6d49474d412f7346356755726b36395a4f477470794453496967532f4c43494335472f6b47594c6f586759734d79756475692f6155485439526e3566705733746a416a56373135344134476f5859395870743973502f6c726a463266446967654c674f6d74687971514d6833713679474a7751616f794d725a69632f67706f654c42436f69384d454e65696f7167614d50306e3372554763616c6b6654327132457a3475504642615941436e44337131687866344a496a71636535535452616a396d4341546b49436a75467964784c564e644463545945414d5078584c50564a7967394436624c7042484264697a4c494c6c6247327747564d46317245614d36426a51315850756b7a33646f505349314c664b543949574742666579663662564f53447057614469665a6c4c6b796d735648424755645641677a536e56734652666944416735725863437758496a69673530395675596e2b2f386c326476646a65742b5a384679743247694e4f4a6c5873577630364f697a47544e2b4b44666f7a7a53732b4b736a636a4d56526b596f466a68795674746a634434674b714a796f7272624530516142697172683431664e504441354d71707a4950556757584a4e46337170624431556a487143432b4a316336725270624e56576f764769763039484242544e7662696a715a6779596c4277634b4945494c644f537a585969574e466f3145594631546478366b48463331734730546c6e785a483076586374524d6a5671502f437264354458626e42735156543656463976446848562f376b48536a47494c55376c6f747849795641366643723476707269677677374d4661476f4278564e736d56535664417579447a6d2b70764c773577502f707173306156792b537639514f726558694455614238466d666c696731376361515748346c4c656f4b55716a5a4c486970646f6772746d5264714a5354717165394d4b636e564e79525a416d6b6b59352f42435937454a56526c544230484c33517278586539464d545949682b725637386c7739785752646250534c7a576a6142596d5749516471642f57576a6c6932524b5341675a43636f67384b4c4b4a6444415a3135725a446b6731776d4e545a72514136783279335556614c6f49643044377262517678464f7150686e6d756441796853575853523856746c76486351707a5765385a584d366f43444531526a6b6b747a654c79474374676452354641496a6867695270554a594e67564147434153485579304164374b68383264615977614770424e494b49526951582b534a7475674c756f4258716f556746586c5570326b2f43767751535130314957652f4e6852574757734f63467a3935664c734d6b464a67626b2f4c78342f735777574e464433636665736d7975366259654f6d76765856746b53646b46456264484652376b317552323977573739626376424d6e5067665a6c6664735275524977504a5a5a774d2f2f4142747a5554776c326f4c4e355a47497750544c383167323176376d486b7670753270644a484c3271746d316c4b57765a33662b5348684a7a436f754479376e6e7835526e32484e4139767a4c6b7843392f464856786f56346d335a6c4d36654a5a65703365384f78383355784a627931772f534c597662714772423952376b4851336738733237554d4952366b6c6e77397550464337636c4f354b66385270324b574353677568486f344d7562656962386e6c6975726467644a5a596841732f42426b3867524c594c6473393143314c4769797a73672b4b722f42566a62786438475164346232302f6972376355307433413047486175454c4248656d4e674478316f6732543952305361516965665671575739366847635451756543413262674535704473416344336f4239394b54415973726257346c54566a2b4b6f507031794e597336714f31765146597962735164545649347070453658584b74376b786a314c566233314b736730506751635170475234313470664e747a363847536559426d676164365a70777a3470764d754f777856557041314653365364306a6b4367315133576b4d66637242756d4c5337317a39644f4c344b7333394e554861686631486979734734464b72676a65747a375078512b3966757751644431532f48796450366d6275584179567436354b354c564a4a67676a4d6f617152414f4f436d53414e524542314e51513755453755575a414a7361494269706b2f7336434951573765526a63684c2b4946665266553773626c6d566b394c3031484c6d766d7353596b4e697658572f77444b4e744b416e754c552f4d774c4d5238554856394a742b524d77685058453951664a65433359613963483863766d7656532f774172323173505a74793135616d48794b386c64756d3749794f4a4a4a373043474c49416f366a524134494456307870584e42335542314371434e57694172696a686a69704c686767566d37564d464839796a4f485154464d355a4442544a414d61496731716751796533457a6b427a51657574322f4b32396d422f5438537162512f714432376c713347567335414b69794e56386734664a42724559344a6e65736b5161397965456b47697763586f79532f5a424439366530474e633039793244674d766234494f584f414876667658567433504e6735784873367733493654676d73584e45324b43793457384f53704e2f52566262673141734b4c6e58374f6b4641766d537864315a3559755162465a2b5573567174514d7165394267304462746150694e56664b564132615431482f6e7336693144712f425153426f67314d424269336171375a4d7061306238394d576170436c6f41777163554675475078586e50384149726f755859687a345636493577776f764a6571336f33626730665448543368427a38614b59714f697941496e476958476959463041495a5245636b4256424d564b4f706869703356514751717968716c5a73555a45397944756634784d6a65365031526b4238313675355a75554178586a503866756558763752504d65384d7654584e2f634e78744a4e5434636b46502b544178325142796d506b5634734231362f31712b626d786c4365496c45732f6376494d315545487555632b3951464d3479514b69666967376f4d4d304445756757645442484e424d6e5457725a755445426d557561364870635162346c394d656f39794471376774496a4964493741716e44636d516e505654477548424b484b424e71587553443555585363594c68776e707555785858323236456f766d4f4b436d35413976344a5141567075514d33495075564f54384d6553436d374a6e306c693361756a7362732f49466f3159752f463179627065347a4c5874376a666967426d3178343565497252627566534469714a7358596e696a4772494e735358595971324567474272493435724c623669586f2f4657516c356547507a51614e474a794378546345785078576d4a31436f5757374a2b766767667968636730735566565974746f5177306c5074773437556e7138577452694d64546f4f66745a6d3349486765706444645858384a7267334a63753378785769556e49656944564553465268373051654e475763454671386c615a506837636b467a6c3379576946575a5a645270387543756a7041707851616f4638635062397974686d545656577a6f7777563861387632494c4a776a6368704f5930726d32596b436234784a576d6376747737305077556f5a616f31422f46426e32573431644c755069736e2b5237493769324e3544714d4f6d665a78564e75586b584a797769626b6833636d5862747a4572656f683479476b6a6945487a3468416c367264366e736a733738725a384a366f6e69466878515232524c354b64714571494f6e364c496a6477697a6952305379704b693539324a74546c4130306b7834344a7476646c6175786d4d596e557448716b504c33567a6e49793939554746476e4645534f436e61674753595656336b61626362684e4a4b697143616a376c4b594b412f7551634531514772714574696a6d6743364174376b4377445a6f486d6a717a43416730515a4146385551574e554155786b69376f596e6b674f46455a426977514161705245694468696745367161584e4531554d5336414576324b486d6741703249445842466b4133656a475341476d43685973796834714f674c4b4f34517855515370436544637945734d655359644a6f6767617078546c6a3370464d6b463969363068794b37753368356b412b4b38304f6d5435636c364c59367051666b6732375335354e77532b6b30504a7331723956323333653070346f59646979577262537238563164764b562b7959535a7943485165436e73626f6a356d6c346c5679323979454e5a69644a7a5861326335516c6f755959486b7a4d75314879377746713478656d6e42304868744a41636f5a72306e724870666b57516259774c3978586d334c366330476b674b554f47495466776c4a704f475341674f675151693254555577374542595a347152434c76314b567a51416330307561585758706a6d6a57565367654c416d6834717653413770346a536138454a6f437a41426b4e49474355397a493654394c4944466957526e306d71456f36716975615a3650386b486f665470787637654a6d616a70506467727078314150345347497a574c30696269634d6e6956304c6a577575346450746767386664746d7a636e6242384a5a306f6353376c7239543346726333395670384248744f447244714950416f4c41475347544f44564456785368424744493161696834494d67422b434a4c59496a71376b487a616943414445714277614b466d63596f76527345445770526a4f4f716f4271756c764a574e3375347832725273794d523457787864637644484e577775655831786f5268326f4f6e634d2f53357a6841317245646934306e6b584f4a576d2f356c313978637a4b797377514559596f396e656751314644775154444651784f43687752355a6f414f534c4d7067656144366a52424751624a4531514a79514549415a5a6f754f4341346f475a304d614936733070346f47715631765257766b324a667a42636a555346647462707333424e3241783745487368434d614432393653467479515337354c6d66634735482b6d352f42614c47366e4732484e554276585a616d7a5a63626678686275534d5251743372714279547a585033593168426b7457493370615a55504a6472616a65625668744c3069477043353466784879574430757a585849594c76326f6a4671494f6665336533756c76554e73307a2f414e573154396e785757586f316a6431395075366a6e6275394d7666675636555344615a645861734f34394f74586570744a34786f67386c754e726432307a433945786c683763556c73526e4d435230676c74584264766633377471324c4e32516e444b4d6735413467726977694a54476f74456d7034424232626534394c326a474d4a6269352f46307839326161587250714f37476a62524e754c65477a483855734e2f734e694164745a383236502b706477375248354a4a6575656f37726f746b683849326f743355716757506f6d2f33557464304d2f774256325466742b43302f326a59626343573733514a2f526136766a5834674b6a2b792b7162365771635a39747954664d75727637583664746a35573733423830487146754a4948774b415333486f734230326274772f7853306a3446566e31503038436d794866636c2b536b6f2b69776b32712f4d635936572b4c46587733486f6341336b58702f7a483870684167396132554d4e6a622f31536635784b632f354d4c557636473173322f7744546e334d704c3144306932663657306c4a76317962385a4b532f774168323448394c5a57683273662f414952383043792f79336645303052374966744b4d7638414c4e30527075517453483855442f38416c4a5a2f3550647738697870503848375649663542626c2f7962537849636f4e3833514b50386a622f77445a747638412f6f2f326f66384134682f2f414c58622f7744364e5866332f5a79724c5957333751502f41494544363773694b624732782f692f2f55515666337262586638416d3264732f7744302b6851377a307138524765326e442b4b3363632b343051507150707038657a49422f54646c2b785456364c4b762f6b526649614b4941592b6a547071767750385169514f316c5264394e747a6c70326c3058762f41455339306c65646c36584f734e7a4f48384e79325366685255332f41456a53387474646866693330654e756355475755747a73366464743674673670755438797044533438567168763841633265695a4d6f2f6f75566f4d71344c4a634c6c34686b42686f2b7033354a4859386c6274794859716d5271676778526934514b6c54564158525075536774565241324e554358513163564851516845634543794249656941673171744733674a7645346e444a5a35446a696d6a6b67327932326a454c50636d49345a7173335a796f5336517963315147536a49497331454548795169704769684f61414846696d5a426e504a5241476445304b4a4a4b44494a45714930554653674859724c6c7956776a6b4753456c41484e41324b4255624e5376596748494b4b414f6f36435946467837314254465141456f426b707a554744496b67697141633131765152723345724c2f38747535622b48374679596772712f3436573339707339512f394a516377686e53753955303857357055467533694c743245654d684833725836314d334e39654d76316d50634b4b76306f662b585a2f2b70622f397756652f752b5a75627378395535664e426e645130555a7355574a6f6748616d424f476168775a53676f67416641716156474f434c6f49484b445651504a484a6a696750616c644846416c6b45306f756f42514e785177356f47634e6d70474a41636968543236594b323565456f6152546d677231306242567a7547356a32424367514c4943413646514672324e727a626a45644d524b63763949645a5367686b44676c424c756a3456454278554a795a6b43564f61426f2b39456c366b6f44705245584645424d684c427732434d4a4d584b71785479487651656b32336f397a656253334b4679414855576c787779376c6d3961394b6e747636776b446270453869722f7744484e3570684f784b76315235635676384157484f797535316832564b444e73784f3373344e535165587858636d426674693748777a4875584d6a48792b6e394f6b442f61747670317a79376b746e6438452b7133333468427032382f75487358662b5350682f4e563767776c2f513350315a6e776e3571587473306d69544359384d783869725075504d486b62754e546849594642784c397956757a633257344c78627a4c4d2b4943376670647a5874344f486350302f7358473962684f315a307a713272524959694c4c69773258714e69414733316d45343668355a4a4448737a5165373342686238556f786639556d56423364694e664f74632f3667586b4c502b4d622b2f315469495a76636c58344f5665663853335a2b75332f414c6a2b5344762b665975487075327a2f77446e466662677730796a376c3561352f696d35674f6d64755838496c2b7855783348716e70765231776a7a366f39324939794431313248525849724a4f6779584a323371473876374863334a7a6b5a322f4b30466d786c58446b756462396333746f76634f754f596e48464236327a4d6a675757753349414c686262316a61586d362f4c5036626d482b345a4c6644666259467a6674442f5567364d536b75566f566d7638417175303231754e79647745546351306833624832397977482f4a4e6a492f57782f6848356f4f7641645354656d6f3530584c2f2f4142487359794d796268356151467939332f6c4679354a7476434d62663851636c42364b4e742b7054636b517430714437317864762f6b746a432f624d542b7148555063575a56377a2f4a4c647a6f74576e442b4b637375775551646d77417830356f6275627a47336a576d6c4859373762583477757875524148696a4b51424861367039504a756174334b7337706c703552795164575146754948425751426c6a6773384875564f43756d43314d6b44327744327356354461577457336943503156722b706578743949445a727965776b3175646958696849782b4b4334784f3973416e2f6c68307575624f364830334b452f6775754c666c33504f6853583152346a38306d2b324d4e78487a4965493150627851633235646a71684c6a2f41457a2b31576b52456a47507343755866657a4d61753250623742644437754d787178514a752b6f36734b6675562b31756a534d367250756a725a2f447030704e76666b342f544641392b36664f3832654c397a4c72536a717339345847334165524e475856326b746469555a494f62626e4e727352534569436e3965692b33327437505162662b7843454e63357849727066337266367061383359795964566d59504d526c2b31423558564c424453796a31636f386b4273323558626b5952485553414f3965796c636a4d6b513846762b6b4f3249586e6652495075593343326d33475679584a682b624c722b6a584e65316b5a596d3749793734684256366c41447161684558376b7670557575637332437639516a2f41454f355a5052795a794d7a523436666367374e78744f6f354a62746e7a37656a3676703755734c3748793574586d724976454d4d4f4b446a79752b5a656a422b7133475a6c53675337556d34544a3665337a566c365973656f4363762b4f35306e734e46524b506b334a5776306e34484e4232594455476f714c4a473633493068375733663841336676566537334932746b786a57632b6d4c66542b3162665472483239694e736970447937366f4e47707365312f5a6c70327a474d6f6d6f5763783542586257514e7a5355466a76346c683351712f50425833794968636d37646c644c6a386b46665343334643394574704b4d71476e78565570436548694b43365677766b7a49786b4a446d73396f67457750695135786f67746b776e787a5850335539565468774330334a6b516c6e3072427548306369506967777a4e64536871687a554230467345445848485a3845427a716d774c71733151623972445862632f74563837423455592b395a746e4d676e35653156302f2b5472465167356b37596a4c705a565364714261376c76793954446d736b696758484650493651465753644f6e464b644c6830463069385879513231727a4a6950457052466854466266536255547537634a6834503873506967335862703345674b4e444c6b4b4c6f574c596a4555726d736b4c576d3651417766344c58435939736b47363363566f6b394a66752b617a7761504e73654373316c427850387173646471384d5a4276642b396561474c72312f38416b30502f414249484f4d32586b4179426e2b4b4c5a494f3942554b6471414f43334e653133497934434b38552b6e6d563761452f4f733237682b7541374843446e3769464f6543343562535365613946656a4534397934562f62547475377438304676715539646a622f792b3378584a504172722b7146724e6d47424171755049616a5241314a4544697445434978594c5045634d466f7352346f4e554c676b4241314b516266536557534e734732535671315175414f4750306f4d7069306d6d4b506b725957426372626c712f686c69746731786a706d424b422b437a334e7335456f50475134634546486c7a6858366e774b73317a41626e324a6a43636f483866334b6d2f4c5345476263336352676c324e6733726a5a4445716d374947545972752b6c62593272626b6455766c2b314230724e735239736c746952704a47436f743071724d55416a5a4d69354f4b3533706a5476626d372f70376c7433462f79346d63512f426333304553386d39503841556164794474775a75504a4d534b48334a4c517051653261636b45657751495959757356794962697434633465336373733251637664577862695a634f70624e7063316261334c6950785754655467306f6363316f324a486b57385332703047725365617548446771795341796d7574505a304677477069466f73556c4a2b45566b743137317032344c6d726f4e41384a4b707541546f6e7778564d7a584769426f517056534c5578376b4843756738734d4544784f6d4c65355841594b6b615361465179715167746c78716c594f79574950636e384f434375544f714c70667456383643717a7a78376b4744645062747a6e78422b53703948693230684848567150756b7176557233544d665542383164365065457470436e684d6f666967364d497469616c5839575641714c59646974506a63356f4768372b6176674d4f31556a5468785638424556396e516557335a6a5063337a2f41426a334256436248517965394d797558726e475a70384658776650686b6730576e4561385069704967592f7455744d514238555a4e6c2b31425634616b756b6e4854337072595a43354b6a75676f67327273556273566a396c4b766d68634b446c627a704c346c31547462336b58424c42614e3531645874376c696c3159494f39596e4763423731594c703034565844733344626f634630724437686f51684b5a6c687070382b4344705772353031536d2f31365267733271567152684f4a456f2f544c487448487557617864695a466e474c68423249534c7438566f4678365a444e6336315039693132376a5643435374365a3678525852302b394d372b4c425536526263555158596c52754f4b58414f616f7559696d43435778566a3371306546754b5345565a45565a41626665565a346971664356634b6476755148416c6b53656c6b7261692b43684c44327751556269344c59354c6c584a473563726b727431754e52306971726a4155424641677567424669466f6734504e6c584678514261594268785158776e356e4968546432686474536a6e6a4138434652636e6f446a46616f54467a544a36476f5a427970626758664933656269452f6b7264356368472b3330473238766678584e76376d7a73526374584838666d32346a4d484c33726a377631533975656b4e4750785a4176724d7a63334a6c50384154467663746e704e6b527454756b6349523754697150563561353235787071747750657449687073573442775a6452344e6b67554e687a78563232386267386c57374677746d32746639516a542b4342376b614d5039575378364765693333503668374652637479416b57415a426a30444a6d2b615977464346476244735451424c6355413069564d6e5478746a54337252474d6d6633717757514f434371324e6668347133794735766b72345778436f543671306f4543573745446a554a7a617258496f787249713852424645484e75656d576276566369585a745647375373467a2f414234564d4a2f7975765144466b4e424f474b447978394976777244716f7262667074386e5334433735456d3731414d4548416c366159556b616a4e57576654596b4455757663446838306c69483675644548453952324d64765a6a4d74716b666775526869756e36784979754148494c6d6a6f78514b464565334e51386b454d717146436f5277594641754359526f536f614961715651466d486167496b49675054494b4136616f4a32344b41756f79676355346f42517149736355514d3855414d6d51664e45416b2f6b6f5541504654424e4a4456526b454f4b44756a4846314f51515131556f67416937346f4a6b70516f35664a4c564246416f654b6943436944424d454545646c322f774448396962747a7a356a2b6e414854322f7358466a6c7858735038667561747235596434796b4f56616f4c4c3569376e4e4741354d6e7567526e584e6b38334245614d674d5748556e30746771346154544971335478795157524c565637676a55737869434666626d4e494449456e44554b72484b684a7a4b36456f7669737436416c3463654344524136323746546344394b6d326b426972626b656d7144486f49666c37666774567677563969716743664438717252723052624d596f4f5236704c5664682f43485362615a4c452f4a55656f587446337a507077523273352b586f3431516135544e79574e506b7273744d566d6a4d5738664566705432716b762b35425a656c355673335439497858693730336d536172314871307a39736548544663794e6a5a6d773079664f616d694d6a586e674548474279434a69585a6274725a747a4a634f592b396c4c31706f6c677834494d4a6f6f4f4b6165465569434372756d4746456a3855587a5154424e616e6f6b4a5a4175707951427167763364323364754735626a6f6a2b6c5559684643564d4544323773725578646a346f6e56336864452b75626d566150384177726c34344950586b677633472b76626b2f315a4f714839796a745252424f7846754b6e4e5446424b4e32494f694b554367356f446c524b55574b6772324941537531366662454c5249786c6e376667755462746d636841444572304537586c394d4d67496c425645354d706f526a563043474663454748777a346331644f37356368564a63614d7333775673336d474b44525a7667643673496a494c6d534a455363304c4f346c475162416f476c65315866624a624c64484561385858506e6365385a522f4e616f445042426251342b354f49366641712f77434c4a474a45436543433232654656667150686a697159784a566b475a6e727851586d546a714e6664525633706a535279564d70422f314b71553644746f67362f70395938566739566e31596436364f78694259456a7a5849335a314536545236494d317567725258616a4d5556555931424b766a4b587551474a303434712b475064334c4663364b796275576d4961446c42644134794f4472526244654877724635676a347531504337576d4344706972453563466f6854327856467147723831634f4343626d78357475556358486579352f70393354474d4a354e483846314a52426966334c6a4169325a586a6c34593853673566716c2f58754462683441576a2b4b376d304c376545542b7169386c442b70633153346b72312b3169525974784643306e375467677a2b736258377a612b5a4164646b2b2b50374d56354369397a616d7a78616b736561386c3670732f73373872593842366f39685159356352676f525242383058427843436646626656586c636a644a667a494358346667735147576133337a356d7a74532f524b634f36682f464267696a434f7151484651636c7032455235327557454f7633494c4e2f4d744778684748446973497161344a373134334a6d5a7a717177586f6759554b68664d4941714f6767594f364f416f674a4654555751544446414f6f3145515545714f7846395645496852414e4a496f6d415a41636b4b79514d4a63564b78504e41686a67705442415541586f554432706b4137454d6d52774b4972546b67474a7754526246306f365577443430515177617642416e5479566a676c5669495a384543736f376f67356f4d4467675a30516c63737949465751474d617145384f4b456742683730756c41376e446d75313656634a4f6b2b4566704431376c784e524c525852326e394f41306c6e4f4c6f5052327268694354576d6133656e644d684530645937647a56474a6a7739363237596143444a385167386e363166755739314f414f4257496236384447546c3472622f6b74725476353832584949716737452f3841494c303678416a4c6a6a3831792f506c35766d76314f37717350694572652f46426f63366b66453579554479775263776f67586b457a6b4d516b507954446d674a36537945706a4e53584a416a5469676c432b624a346b4473534d446969354a5949474e6178396e5479684674576154476f5269386858504641424b744f3546343530517232492b494d63454230784172374f7044714c5a4a4e575a52694f46485164583051693363753635414151642b49437765702b6f4865546f57746a446d714c3138786545446a3476795755494a5139716a6b715956544f4d45414d65434a6f6f42714c6f6d464f7841684278524b4d6f6b596f4546415477516452527373304578553853676451766745456f54584a57774d573571706c71326d336a664a456a58675a4e3830435862706d476a51667057664b6976334a4f72526c476c507a77564941644247795144496d765970467330454e454647716d634446416f524e4d4565784b43676c516f4849556452716f43455a56384b55566f6a6945454165755344354a744f6c4142785242424c546869706869706a52526b4674692f6374486f4b333750655063416d57314c6c676b64694a776442365758394d366367756675447142697a454b574e314b35623676454d2b5371334165707a5164483030394e5033727232335a6d5a63725a686f7450386c3172517772546767636b6161704a76694659635778504a5558376b59674f67354f34746a63377933456a7042362f77435850344c6a3736774e74656c6247414e4f786447784d796e4b636a70663546552b6f784678726b517a596e385546477733554e6d39325549334434524734484135726f33663871336b6f694e6e526262394d635065342b4334442f4245686b477935366c7572394c6c3263693774714c666b73706c717163557072326f73676d41554e4b6f76554170644a7851526b77774c6f566f6f513143676c464f584252683373685241485264526a7752423979415934714555515a466967587454323579747931774c48694d5541554d6e4b44624c314735634769384933414d3543767646566b6c4e7a5367536c31425642645a6c314b733439364d53457379354b42534b6f6c304752515441565571416f6f7a6f435067686b696f37646941536f6f416d445970514d3041715551455779554a636f497a565146455862464242455252444442526e5148464251746b6f7a596f425159464e6948552b616a6b4946434b424b59386b43746d696f6f666967687255714d2f636947784b7473626565346e6f74683563506169436b636c475674327a4f77514c6b5447584130565343416f305946544a416773674c4f67527755526b3642585579544d44326f636b42354b2f5a582f414c6139627659364a786c327373394648596f4e337132312b3333467950306e716a2f4b6168595175752f397732672f373233482b3642772f77427679584a4c6f4f6e364244587672626a4455666445726d796c496c2b4b366e6f5a306d3964774d4c4d79447a6f5078584b62676744444e455251786f6f5145424f434134685443714f4343654c73516446676f5973676835495a565263344b63304556323174666358495758386368462b315544466c5a597579747a6a636a6a43516b2f4d4942637453737a4d4a4270524c476d444b73386c322f384149624d5962727a6f654339474e3250666a2b6134714169696871687955624e424b6a42466e5565727264734c594d62317957454c636a33796f45466d7a2f70374f2f652f56707452506234762f537561415155336d7a45504c424f6e784e7a34704145454c41496e416f6c6e5a41306f67414b6778556f4554494d7751444e456a4949424e4871515134736f3378556b3261686f6553432f5a337a7462305a6a462f6776572b716c397359355330797077586a4b4767586f647475426332666c5a784b4470776744635038414548576d397476754969414c546831526c6d4346547434344534344c70326f6179345a41757839516a75414e767542707667566a4c506d466650613678314e49664655376a5a513345657356474573776b7337586357496a7937756f634a5a494d48726c676e5a7a654a65414269666d755236563631653231714d47456f4367794f5046642f317935632b7776617a566f30483877586939723465546f50572f3336354941437a2f414f7455335057372b6c3946755078584a737a486a6271773975355861474f6b664a4264633961336353583875512f6c576e616635426f2f7033784b503851714f316c7772704d4b346f57704179706767396a613959322b343143334d7647486d46343544754377332f5839724a78356a7835787835594c4a3653662f4930482f7157353278382f6b755064426d41586f422b6144644c5a2b6e656f794537563062642f464758486c566c595038564577343345542f702f61755048544b7136506f6343647a48544c2b6e45655a50683039764e42313937364244632b58614e30786a5a674c644c655050484e596f2f346c616b615835662f6f7632724b665664784b524d5a434c794d734f4b582b386230442f414a766441666b6736646a2f41424b77377a75546c48686f302f46614e7a59394e7352386f787367476c6648373851755a593356795a2f71584a6e56694e565063732f716d33695943396247464a63304859486f6e703978704346426d4c703030574f4566544c6c38375951416a6b52493137317a396e474571726e584746302f7031494f37632f786d3343526d4c7277656b644e657a466c32626655664c6868455a594265597437712f646e6273516c30763831366978487962666c442f564c6d6732433457306a414a726544746d716259646c6f4641774f42716773696455677649514c627539416e2f414b686c3731366d4d32687a586c2f563566622b70786e6c495251626841536f666d70626e4b32476b524a7565533557396e65322f77445645336a69434d45647065383878387952366e777934494e6d2f774274627652476f4153796c7a58454f3375526e7069386d4c55422f4a65694f317479694f6e567a6b61724e4f642b7a6444456b4434494f575a6e536264324a4863733175656731776464753775726b2f477a446b75446675663158616e4a42306230645748444a616468634178775076574f334953675739676835336c6e564845596f4e766c483779374849786f33637572627465644365332f414f37623039347146797a636a647657626b616134395849674c7257702b58354e7a394d6f367639564548686a38557642614e395a386a63334c592b6d636c5177434470374c2b6c73747a652f5670745237366c622f3841486a7273584c6643635a65395950557a3547327362574e4f6e7a5a397373506774582b4f53627a6f667769587550375548513953302b52633542595052336846382f7a585433674d724e357630726b2b6d45516750596f4f6e766251456f3349642f37553975576f615269725a4e4f4f6d53794752684a686b674f3773787541617166784c484b4d597a45357963474f716f7859712b6478785531585039556e71765772574851496e7651582b6e44377a634338664241687530344c305762354c42735952322b6d324d4974686d6379743243426363464e57695139757845344135705431494b665537756d356f4278367665756334447944636c75333431546a504d32317a5a5366776f4c4e5148654675394b32674d52656c5855656d4b3555736d393637332b50794537546a785779594e77422f613644677a426a4f57556e7a34756a456a484e5762722f6c6d546e4f667a56554b304a716753394e6f614778787a574464794d734d442b433233354f4b59685a4e3145754d6d415159644f6b5539366a4d6f4363386b54584241736d55634769594d33596c42634d67316251645435443846324c41634f3257433475326b4e544555586446794e6761686732614442366a636a4470412f63756153324864795674365a757a4d7971447a51574869717a536e4647423775616a736355466b4b4a6f7a6e47344a78794c716e5577562b3169435471716736397137356b524934356e697474764c5655726c3751454577496f2b4b36316b6159393644547130697543757452316b4e515056555263682b66795769786e4a426a3966426c73726834546976473058727658352f774467667a58417648674f2f464151586f704b6c41796b532b4345693643446b7661624d676253796541586a6f696e4e65703948766566744241553873796a37366f4e6a5577344c46646759794a6b7a46626f534270672b61533741536a6855664642356666536e636c717535665477575941614b6e75577a3157326256783858574671567951435654526137516f775641687856316d32637578426f6c45616363564c63784744483235717738574c2b31556d676742385547694737306a69506b684865327a6b714a514a484166465643304a557851585433304d68376c6d33462f5848355a4b794673434663537339324d734d7667674f79734863586848685539693950627461476a484a63333065786f746d5a6f5a654875585969546950795157443243536f657637453570682b3157625062783355795a5674784f6c7631537a6673515a6e68664a6850466b6e7075333869334b4838636c5a764e72396e656a4f482f41427970324661624856627167624156775667496b477a785333413048566343444641303279564634354b346c68565a3735616851634c664e4963446a52625054706d5673412f537330346562654d4d6948376c30493234326f694d522b314138376e3471435569644b7130616c7073784552726c56424c63744a636e4a61396e4d584c637063316a67544f564b4c643662613157544534655a4a42616667716268426f466663323976532b6e39696f6c74444a2f4c4f6b384541687a5477766153325372307a6855673078566354483335636b485568636a4b6a59685765575079584d3668344b713062695553772f3234494e766c5a59496547504a4c4336445846504b756445435430304b7a5872676943727053302f67736c396979446e4778716764597170364a482b6a634741467861394c51506638466c39442f344a3835366f6b352b7a494f6b48596d4b304b6d427a56676d354576336f4c72644d5233712b5054553843566b684b756b357133636630374e325838456b486d497931514a412f613651734d636b59452b574a4467457367547164304771774f6e4473556d346b487752322b414a396d5276422b3338554361577853473354384530426d617158707431494b43414d614a57366144737a51424e42785079526959785163792f4856674b71674e674b7256666b353743733068707046424951426b7877586239444a6a756f3666347838417550627049444631337651522f35622f77532b61445a2f6b50524f7a6348475675582b70763372793869625535534864324665763966693967542f544f4576772f466561755168656d38525641316a634f574b366c6d3434397938374b426a4a6a7857717a764e4c617548765164364d713078475373314448444e59724e773651545661664d6a434275544c414241777877566d6954636c357a64657533764d506b4d4c6551623271744f7739614d756d354848366f386b4865746748744b734d48564e69354734646473304b30454e55654a42566f59397174695363613568564579784361445666336f486c4a7663466733562f534e4c30576d3565454b444a63736b335471706967577a624a424a786642616f51634d55526145682b617568474f4431514e426f7354564639446c53665378564e4a466e51475856386c6674594e62414748557162647379787957794d4e4d47425165582f77416e67526474534f6473447664634b724c306e2b552f38646b38376e344c7a514f4b44726570523157397250485662306a2f41456c6239374479706932506f747851386b582f414c455a434a6b653676785a4c66754735636e634f4573454766563136545572723237586c78595934724c744c626e35305851753652444369445071596d5277346673517579786648386c4b654c454e68327172537837554343324f444a345734754f5364714f4564496b354b4177693047346c2b35614931594656784772334d6e634850464130593651782f4a4c476e596d6d4177314a544667345157775a333570772f743846564354314c71324d6d787851466d7163555249444e5156384e58513067556c37635543794e586a695544576f397968496f455446785642526369386562495161684f4146553877473070594f614772426b486d7656796675477a5a6335676531627656792b356b2f4350795746386b417777524a55484e51654769414f39564456537353366d534175366a4b4e6d4547514d4456412f4a516c693645755046415576596a70716953775a414558595555494f616941436949475955474b6734494950676f51674f6b6f73676b5a493064386b4b4d364a48755141736f4b564b6b6c45456576465146444e4d5a4941564b42523337464f59515279674d4558576a62324e5a3542414c466b6b36694b72722b6c586a6176364a50706d656e74574d514a4c44484c76576d466957754d342b504832375548714a787731396970755142716341723745787562596b4b73684b4c55376b475952496b34783471324c78785141474c49454f67744d48362b3950596b5948715647767159342b3561415851585434354c504f4759774b76495956376b703657515a444475576a553861716d514950546b6872303147446f444b527152564a637638415335436c32656b4f666478574f643349494f58366c644e793442394a77484e616f394d42463152663670416e45594a34794744344d67305138514331572b6d4a657057414d326f6346304c55644d574b446e2b735341747868786b7550356b6953356f44702f657433716c77584e7a475036496a33726e78694a534f4b4152762b56633877642f5074375676334e734561786d4667494867342b33373172323179563242744e3152773745484e755a68556b7136394c7249344b6c32504641514f4369677170496f43794143496a6b6f67444b596436493449794e4f6141424636555162696761494377555164486d67474b6a67496b6c436851454b486b707a436a7567556f6d705242554a516450306578716c4f34666f48785851754553775657786762566a7049367a713932536351634f6751784944696f5279706d6d48454a4d4b67494d2b2f6939754e4d7970743550434d6c5a7552717453427957586153476b776c52732b6142397831524e614b713330354d466475474e76547a564f6a495965333730427452366e4332774e4f46465443324978632b3947626a4a42424b76414a37647a714f4f6c5542716d4f5330516a6f46632f623855472f796d69446e2b6178796b426774317965694937467a4c30346d656d41792b4b437964346c6a6b6c32386e4d583474314b6f413848577a5a32395632494f412b6144714f624f3168475277667658466d4e58626b756e3671576949635078584e59594d3155433665417172496e52456b6e6d6a47444f715a68734d4269674141636e69756c743478304f7559413578593058583239754f6c79584a515a727361616973326f7471705438467176524745566a7550484f6e7951645430715a7557444c4e386c3042635a3548486b7554364c6430655a614863655a572b394968773155477533636a64734d7544366c4c52626c484d65384c7237435771336f6c69352b4b346e723732372b675a3953444473624f75656730664e656d6977476a674b4c673743476970347274323541745242584c70504a5a76566241334f314d7834375231507869566f6e4a6a785451306a6f2b6b6a5365626f5047474c494d394671332b324f32767967634d52324c4d4331416744726f526b2b786c483946794d763930534667647561313757585264746e366f2f4559494d674842623452386e61612f716e4c534f775972414267742f716b6d3875794b65584143512f694f4b4443344e5549385367794c5a49435a565149436d58596f344e454555356c5456565369434e787952356f414b46416170512b53676b6a56424d53706832495a6f6d74454444397155676c4530464649454446424d304356477252526b42484e4267516959355a714e7777514b376f6749766d694352515a6f41425874552b5470784677575361534b56515178657142556441746967686f455137494d34526171434f5a426c43774b684b4c2f534541714b384675735538544e6e337245597456585159424236623036345445516b4251554b374675724f764d2b6d334d765a6c365377524d50464235722f4b502f764a6347697549414347586f5038414b782f3555534d3452507a586e734b4549415252544e737345574937454e49666b67743150565355745353587a54612b46454245644e666d695277775163792f4a4b5452783855446c38507051597951656d4b4c6c416134493559396e4e5679366877544236745241335a68676f37396941775142447363554436776373304d4f6f6533737951346f785a304277644139496331554f49556d4359385546443172696f53564d4530496d5259596f42494b45467553312f617a44554b6547786c4d34747864426b676331767353467767456471333754306531647875784962365a4c64483055323230366a2f414c63507a516337375547484e5679395034416a6d56326a747051616c4f786c71307930395a4137554869397a744a327342525a535879717662474671345731516b4f3163766665694734397a6236536364496b67383767677a70376c755544706b4b357049795a4151785259704f784f3451615a3237567579346b54634f4d5777575756653954556345475145386b714a52716768524e457034497367672b43434c49694c356f4c6472626a657552747a2b716756633447456a45346a384549534e75516c484c3846307656344334625736683462304e55763568516f4f586852455571694a4d4542576941457142456853694347704b474a54557a53746d4545425a574334475a56766b692b534234585a327a306c5878756d5a4157522b437532776537487451656932746f79595a4664555049396977374f4a6a4163783272705265517252425870712f7336356e71463171357270334a6159644958413953755a41754d55465730485467585458596777494b617a63307763436946367364636d6a7044647144695370525273464a73366a4d574b43506b6f5339456345427a795146336f6d306a5032396d53366669706a5549426e524539714a3446416836684163516c416571494c4b4d67504a496139794a4a787a526b5545496641756f656b7567536f437943486745754b5a7867672b656143506d6961386b4d4563554542624241736f6f65704151474b494f7246414442544e4175615a364d683271506d674c6b305152425a51383041384f4b6e4e4474524271676a6c5368552b536a494331484b674c714135494d394545645130726d6f6f79435a3831453066696c5a79676a634566436c41645241616c476d43685075557751415652664e426e514c6f43533637336f65316c4b3364766e436c7364363443394c364c644d646e4d5244395935355a6f483332786e633238704f43596753626b4d567774705974337267684d6b527a4958704a37767a4979453949654d6f384458444665577376433441673742394732354e4c6b752b4c2f41496f6e3061784847374f525036522b61364e687051316637667a5665366e35636462427745484f6c734e726272316c636d39447935746b756a64765a65395962347a356f4b515753706e5149515159714b4555645230476e59376a37572f4734617866726a786963516e395332673232346e4350676656446e45314877574f7553364e382f63624f33632b7579664b6c2f4b61782f4549473259303748637a47503841546a3735562b5335744630596b52395035797659386f772f4d726d6e46424f785178596330657851776c466978446f41533662743936446b6f464247524b67554a63565141463053586f674f53675146324c6f45683649735370587451643763662b5a36526176463965336d625a2f6c6c375241584146614c7638416f736f333970753973664562666d522f30562b624c672b4846424446717134585943795952485754346a2b6e674f3071684667674134727132536258707432592f774370636a62376f6831797a7a5852334230374778483963726b7a335543446e43686f68346b58436d724a414345776c78536d694961574b41414f464556435851426d4c714f536f61466b324a514b426d6d306b5643466665756e7376524e31766a714130512f584b672f4d6f4f5a474a6b6445616b354c7462437a754c47346a74622f53434e576d6835723050702f70566a303850416137682f366b7375775a4c4a76412f71635a6a4f30352b5037454775325071475332323759756a7a49476e4c46316e6868454b32502f6a584e58306e78666d673052452f434a64367474677870714e654b6155645170326f694241775163762f4143414e3666654a784f6a2f414e77586978435562622f5478587576574c4233477a765734347472442f7731586e2f536f776c7442436655435454386b484f73536b6138467374795a6e44767756382f52775a613745782f4c4c44337034656c62746e653250355a494f5a666c55724f4f316469666f32354964676557734c6e586468754c58584f314952474d73666b67332b6c4d4e355a6c2f464c2f774255575747376130536c4166544b6350644a58656c58502f4a734150342f6d6b33303276336741583879375874503745474578456741757274523976734c32346c5356342b52442b585068512f67756352677848666936332b73662b50446137504f33417a6e2f4e4f702b4f43444d775941396a657a71692b446c514257776d47785448625872342f6f3235534838494c6436436a61376b523975533747714f3473536a6b5238712f46634b3573723967367032794f4b3362472f7744547972544241757a673079413763545263362f57636d4c7556317766506b31714d70667853564633306f6835536d4879616f446f4c7652474d35337a5577455978484f58354c30566d4a755236732b4f53342f6f65336c6138344d4a487050626975316276526d644a445335494e6d6d4d52544e52354538666d733043395174456455616c41334c74586d5038724138367a78302f69765569676330586c2f38414a394e7a63786a6e706967353975394c624137652f577a63384d6a6b2b666437306d777569495a2f67745a3234334e67784461343143792b6e7749715762437144304f33756964714d2b4b456f435937567a374871566e626e524a394c366f694f53337976625739463458684138436735642f624356506232785847334e765365613942646a4c716a4270746e62722b78636664445754307951553758636557574a70386c31744d5a5236574f66484263446b7a4b2b33666e6b575a4231706e52356369314a743731304e7753646c646b4d52474d7548314263794c54326b5a6e45535861365a6253364930654567666d6734502b517845743462736644636a436365594d522b5377624c622f63626946764b636f6774777a58513953486d3750615838394d72556d2f674e50676b39476c3545726d35502f5268493874557152515a2f5674313978757033492b46326a32526f506b74582b503347334a686c4b45683334726b4f39567439497547473874482b4a6a2f716f673950654175575a444c5175487359537430352f42656875516a316a6c4a7543346530682f5648412f677944754333716a536e7467714c6b47485542566159436d4471713541596f4d5a6868484842636665534d39324e50696366426465354f44467351754f4a5075775148616e77516457573575655a7168787a775a6471334930794c4c69324969626163446c77495858414171546c5149434233425633532f6172534b4e2b7855475277515a4e395052355a694b313977584c3879514c686444314f74754532384a787a717341744734616a446d67454c6339784a6776512b6a513871596a617246757558504a63336162557a696349512b75576244494c713272385947335a735261304a44745050755163726573643366674d4e55514f334e593557784175614d6e336f423346372f366b716f3237735a783875376a6c4a425358755577484659397a61616d4c5a7272517343395352702b537a37794e6d33456a55444a76635548476c6768707a4b456a78556378726d6762436f53457565314d513463356f474946454675336b42506b756e4f564f31636b644a63726f526e67676f4d4f7253566d6e4669325336756b4e685659643548544c5648426b475676676f516a552f68336f4e7851476770697457304963354c4d774450337132775472445a6c423172597137342b3964455466742b53783237516a495147495851746a4d315157326f4e5869744c365971756743496a6b616b6f4f622f414a4630374b7a2f4142546633426555494b39522f6b2f2f414137622f582b433877376f494f4b4c5055647955486769432f34494361567a5857394133416866386d5236626e7a5848566c7536624d34334934784f70423750435844322f4e46745855413672755431616267714c6e56547556746d6f624a42786657724a466b5334532b433463614231362f6637627a37556f5930667678586c5957364d4545597936677456676443726b4f37677259516933795158526d494d3768383030326d63634657434d38455a61512b614179684a6e365656576c457a6166624645457367726c484a5a70514d3569456671576934524776314c5a36587474524e2b59773850622b7842314c4e6e52455148684147574837317068427346476170784b6742616e7355437a6653534d5453493572736253774e766245426b4d6565667857485a57686375655963496449356e4d3979366276676771334e676269457255382f6d755a747456766f6e6a453665336d75786e7a57506577714c6b6366444c765155335338574b70745350617262766739735656414474515758656b4e6b3361736c3633536d4b3276714c2f745765385447426d52524279684674305a483659725349476465654374743248694a797a2b43306931434746583936424932424370376b314a646972316173465666335a384d4d634f5343795a686237535670394a6d5a574a5334334a454c6d3234454857756c36664879374169477a35494f694a524b797942743341324254786b4a46733152636d63435851617458306f67524f437a776e706a70497853366d72554636494c343277334a4c4f4448732f424b62326d7047574b766a4f33637047682b4b43727177434a6b56634c646168515777584a644252714a6f657855546a716d3344765771554d38465349507937554765345243456a6b4158645a505353593765426b50467150594d6c6676574e71347878684e55656a336f334e6a616b5257456a62376b4855414a396d5230746770475544326a324b493078397330466b49756b39546d4c57307563534e4865566662614f47433533723130536a62735a6b2b5965795074326f4f4c4b5039466a53674253366e367561767578654c636353566d45484e654b4464614a41436136526d73396f36533366334b34764e6d51434a4f437075556c78562b6c767835716d354c35494b4761542f424d474162456355644d746547587a5347594170696779626932576359664659574958556d786965316336634e4a3474676753425936674b2f537651656a3965376a4b464b5366334c674279584875572f626935744c6b626c7573333164764a423676316d4275624737474f4947717649672f67764f7774516847674242727137563651376d4f37326b35527030546933365a4e554c77753133307475514a6455446a48385548574e75756b314766617364335a36583030354c715774473474367252655078484c6970637455706c3830484c68656c626d524946566570377556786f50304c6f584c4f6f744c42594e3773355246484c494f62706b7655656a3751324c516e504845447458413264694e32577566686a55312b5339485a756c6d51644745683432484a58517541426338584b4e6e775231304344524f626c38464a58324657535247734f31457874686d4f5846426976534e79576d4c6748366c6261745566324363626546767169386539332f42614243725a464173416d4a41717a707a4668565a37747736755343546c2b354c413954425345534d53745671304f2f4a4131713330695237506372714e54325a4c514b326a4f45486e76386c692b3067635447347a396f4b386d47484e65322f7947794a3747656e47456f792f426548464548723975597839507333546c43344f38534c4c6e52594141725a644a74624378594e5332763331487a43793234475677785162647242706168334c58755a4342442f55724c46725445474b7937756571357a5a425449347567655a6f554a686e4761633954506c795147326458596e4552707764796c6a4e33497a35492b4a412f684f6e326458414f537147416f4f3471794c6e7066745157455a6d71535245513674306c7a484c395372753172697941785a74597172544f4c366c586246414a6673526e713757514f376a556e37512f73465662384e55356646414a477271526c6b6c41444e6b706967575571346471724d78674b4b3262674b6937634a4939766567387a36724a39796579507957455578585339616766754e52464a443555584f35494156416a6b79686232346f4a67616f4d3649504651466b41664a474a7a517a526f676a3571466a676f436f4d554542656755307567692f46424b6c5374554332434a51416b684d53585371596f433771615755415264716f464e4f35514534425447716d6e7551462b4b686a395255624a536851423355656950596f5a49424a486d464231466c3037587063682f79445355474f7861633177576f795974444c42504c544b6c73615248454b473277315a49464a49714146326246756a436f59463178664b4f71685a2f5971793343377479397331516567394f756d33656e6150686c3144745853757766415a75764c3276555a435168636948476559586f6472766f33674749424b43467856416b355a4c535978656e61716a4167557751557a6a67516e7453794e51684b4a4372454a5942427574544d696e75744b7648465a497a4d546c3372544357714b436d524446386c6d42314846614c306449726d733879773068417430426c6c75482b6e6c544c6974586d46744d502f557363375a694e4f4c6e73396d51596278634f4d41564944575779344c5a65322f394d67345a724e7472524e5a6535427373516a416157576b79444d46584746586a2b315662792b624e71557a517454745163486333504d767a6e6b53565449463634646d614e514b392f7438315649736131397553433841536f784e666a376673562b78746d647935557447334b54396757595330392b507469724e764f5542656c44394464786f677731373855686f455855385859674f534471457569373051522b436e695061676944706b4367426f69437070717967484241422f4569616f4651686b454663455755417a53366b445077517955553146415253716a6345464743414b3231624e3259674d53573936725a64483061304a33784f644262476f39324344723367497a30517047505437754b716e496973555a66315a47637645636b744d52512f6b676d485a7855474c78376b614a437a766b6753384e5675344d322b5377374751427256644f4f4a6344537555492b58634f664242646468716c45444e58796743306956673345326c413841744e6939726a6c7a51615a456948354c4e71355a664a50494d4777634a596745315152324e565a646546756d4951642f324b32364e5676484a42566176794e6d4f762b4a6b7343574a6e6d737469564e50417259496e483449437a414f5630765362666d456d51384b774e4c414c7262556d31747958784c75677862792f77446358444959413665316c6e2b727177514a314f2b4471793244775a4131497736532f425a35697165636d3652523155326e414947744856544e2f6775315a614e766e6775525a4c334f72422f624a6467682f4361666d677276514647373179726762784f37727233514e505035726a7a414234684274394b364c7373334330376d53796251744f6c5278562b2b6b412f596730624736434b5963467a2f415049782f774358435650414438316f326c77786c69386543782b75487a4e34782b6d4d516754615a47575958553273786374526c7a4f484a6343552f4c35357272656e792f706b34422b35426f767445673549414a584d73634553514b68426d39573270334e727a5941616f6976467356356a73775874624d744a4a4e614c7a507165304732766b523842366f6f4d5277576a5a2b4e75496b5065506b7371397a365636645932746933634d58755842716b54576851655032746f4734435770316472666d7137736a636b5a794c6e69766f31765a376133634534323469526479792b666232314331754c6c7548684570435076515a676d4844416f5955522b61414d66656c4e4b4936556449434364716a6a4e53694563616f4445553449694c6f45394b4a4846414a6c4567705552496f4a526e556c376c414e5255726767684762714d4643774c496c6d6f6756474d6b516c514d2f7655624e412f46575a4f67514d4642524755654358444a4151554b736a6a566b4153675769624555524b57754b4174565134465149615467676d46516f3070594c7062503079563273734437635636485a2b6d57494477312f557a4d6738766132463639345946617266704f346e4856474e526c677659577476624663316435594e634b35495046326653393346794c6371652f3971366d7939526e596e6f7676453561756b4c314d62596c556773464e7a36665a334d4e46324c383830486d503870674c6c757a75592f792f6c2b4b3873525631753365346c53773769325a5972454f43425a463674543830726c736b4a6f36636b466d6e4e41416e784a5347545057714268514854676c7047715a776f574f4e454250737944767979524a694258424c7131494a4d633148343143494f524b684f6b3051537055786b2b487851634769456e496442612f424a57764653574761445a6a397942736173683473457353796b5a4542416b686b744731744f387a6750785642443456585232734447337963456f505562622f4142336161492f636d56795a44346c68324d74423942394d77386f762f4e503831747345796744795754316a6458647274746533704d6e484641762f414f482f41453456386d5150625038414e4e483054627848394f642b3250345a456667764a6266315739496b5837312f2b4879376e3535646930656b2b73626a3775467164326334544969645a66476d626f5051627259334e76624e32463663375942314335575863666d75524b516c57546e6776556236496c7435785077586a74354f37614a304179626a6b67326a61367373465a354d37444e5542597654743966334d706176706a334f7458397a4f6c72746d5148474e65394254753972446448564f6b754958413365306c745a615a3066446d76584345474d774358464d6c772f5843385936736b4846494977587166522f53624d3976356d3674617053384a6649344769345778325a334e324e7241534c397939766241674149654564493741673575342f774162326336327a4f427a474b7a532f7741597353384e347566434a512f4631336954686b6c656571496b3143672b663769784b78646c5a4e644d6a48334b746166556e473675367631792b617a41634f31424356454d613855617851526b4258396967354252424b357272772f386a30365550717354315235526e2b327135493530585639464f727a72575537552f676735575374745754654a456357667543725a645430754f6d31754c702b6d33702f336e3969446c4870504a516747716864514944433371773471474269574b3062533371724c44385656654f715473677152787851414b4c4f676b6774337074736d623567532b5377594c6f2b6c532f71747847614430323274674e336675577a79325757334b506868466a794b3278504642697655657665764f656f75626c5636726357504d7147623572796e716b446175483239794262467951686a514b72647a4c434749784861716257444b715a63387767516769695a6979444f6f7a49437a31536971624149434c56795148546b6d47584e52386b7353554461587167786b61344245414f7070345949466f796e614648597148423045524d6754375551426363564a632b354242565277364d6167704b356f43796e617079396e552b717143415a6f5939694f484a545545415a367179493643565774753136346b476f5159755350683756436743674a7256536942555a4247556451664251346f436f6735557a51534b6e6937564167676a4a766d6858425241474c49743349385570595949446d6f5a6173635641555145454842412f465138536742564157557a525a446b67494f5344714f6945414e53797368656e612f347959396c46574379687751585433563634776e4d6e766449377942535946544242367a597a4537635a596a334a6438326a327a565070463537576b4c5a7572506d416b657a49504e3353445046314a672b535a63347132395930794c38614b6d656f57544534616f2f4a426b6f39564643514b424853516742415535496a6d7069676b6a775852394f32653733454a7773326a4f4e796d7241416a4e317a563948394f4174374f7a47333454434a377a552f4642353364663437764c65306944706c356571354b496c576f39314779586d7450466655374d6e787a444c356863704d6a477143734d76517968433974624d4a596950697a6a2b7865645865743956693379686b67352b35394f7532717471682b6f63466a593936395274627059526b667a5779573174337638416b74776b663159532b4344784a6f555636573936465a6d663663705135592f6b73352f787139394e7932333852623845484549506367377270373330652f733749763344417864756b76384167755869674f704455366d4b6d7042312f774448747835472b672f68756630355a2b4c39724c4476747364746675575a66524b556679393456416b594e49597575372f6b73524f646e655244432f626a4b583877782b42434467416f6b74324b4469685242435777585539556b49773239754e414c555433792f6373573174432f6568614831794566655757333136556676626b4965434452694f444442427a42516f46733145512b4b4359664a43726f68423351525143694a5551617265786e50682b4b323276544c59597a4a6c2f4c51642b66775273584e634263474d61466134585870326f4e6d3173574c666768454e2f714c39707758566863456837664a6357784e2b6c644f775a4e554141494e4475567974372f774478437958724b33702b61364c366a512b39637a314541622b78506a452b2b71447032596344556642616f6631596d4d716e4259546275322b71424438453439516e6150384156744d4b64567571445a5a42746e54576c48576c793963436b68754e7664714b6e334a764e68414e414f67723363394669376334516d764b656c54617a626a6d5636623157666c37472f502f414f57666947586a746a636951493552465062745164324677595a725462764e516436356b626764316f387a546832494f6c35676c566d4b7a7a4f6d56484766465657376f41306c4f517871454769462b5a4d65702b6f63455a5843626b782b6d5844734b78796c6f496d4f4b66636e7937317738534a662b6c41384c5562706a445445366a58704430344b75394b33754c6b3553684756644e593170527679566c69355337642f5446682f7177373152355a694f333855462b33743234654333434a78665135562b75527a4c6533425a495362465752753078515a39375a4d6f68714566697556596c4733633179414a623969376c774c6962697a474a5a42325075524b4f4e4f56505a6c79626b336b615579357175462b63656e4c4a3163503668302f7744715158656c783065624b4f4f714b365833737169566b6c75444c4a747255597830567158663831744147424c4947687559546f326e6b5673674976712f63566b6c72694e4d68583371324e737471446a35494e4579764d6635424c2b7643597a2f41415870584d4231314b387a2f6b6c504a62456952514c366449693441314a457677584d6e4b635936594673512b6133376151365a737779584d4d5a65444a42544b32614a72477a4e7951777839736c75733745347a4c2f41494c584f3962322f5343496e504d6f4c624a6a743441517070483031726d7447367569466955334e426a3239797174376d326151784f50547857623171374b4e714e73556c5071506367344f36334572307452646c54467856456a536d7457745a48444e423162446e614d52374264666254316261342f2f616b6663467a59774d4e734c6665657847563469794c4d53514c686a61505a4b71445062362f53376b4d5462764352354355572b61463053326d7768624c50754a61763945634837367233554e767439764532595167493036577862697139337472462b334d5474784f6d456d7058754b44356d726472634e71394359796c452b3556484e46796149506f4d34316d446e67765057486935474d5844633136446254382b4e753666716a475876465678496a526575525036766d6736384f6f4e79564f3472376667724c50686f6b764d63717367346d37643941784b3578766558654d702f42645063612f322b334a592f53374d726c307a4964766d6736507057374735755369596948546b4d6346326f4d7a724e616843426a4d44535254326f744f756864424a45415671367a456b6c587a4e4d566b6d58784e6543426431616a64733847505571597838754c4d34563467626b5a52694d55593763526f55416a453344563247537574516551686d63436f4e4d5177566c6e7843584242782f55724f6d2f634838596b65384171694931532b53322b6f78666358522f39502f3272484561534848616747356d5952467142596e716b51566b6c596132626b54683851746b596454346b347064394565573257667651636555524641485372626b5445365a5a4b6f4279674d6942326f5077554a7a55726d67496c70445a726f574c6d484e63776d744675327458474b4464453954724a765142346856614d39517038566e33747555596842676344425251783936496d3243427450753472567459617230412b422b537a447158523245584a756350785164613143725270346c70743852525a344f474b31526a7171677548566b77436b6870636a4a6b686b6e426442797638712f3464742f712f4265594c4f76542f774356756265324c2f544c2f7743466559413146414d6d4b67672f596f4271526a38304149555237554d4b6f50542b6c58665032656b4871746c75347266626d376675586e66527431477a754e4d76444d47487677586f32305551616542586b4e335a2b32334679324d4866337231316d645758472f794462614a523345633855484a743149663239736c5a514775437a516c485042574f5751614e4e4b497962446d6b6a44554b6e396855673868372f6767746e634238474b716d58654f48795345615269715a6a39584642666132336e3342624238654a3442656d74326f326f52747846417650374464666133504e3036675270624e65677362363166385053654251572b574643644d53637743565a4b422b6e454c4c666b314f4e454857326b644e6d41685234672b3961447a46566a394b756174724456694f687635614c59526936426d417173753636744d4f6572334b2b4e44314c46764a36626c70767131782b53436d3444703973554c56414a4876566c386e4c44356f51665378514745613057483143356f74777467316e4e744b32796d324743354f374a753779324434514e5865673642505454365657626b6266694c4a7a4f5177787171767478634c7a71677a47394f39344d4856396e622b57435a4d637972347838754c484c4a47516430464a6d504345323047714d71765753476b477162592f5848682b4b43324c52417a71744974783341592f745655625831594a4a6d6471666d572f3951346f4364756262786a38556c755a48544930577933656a64466148334b5862524961353845437844683869713562633674555355426238737335597138796b3153677068656c624e6633712b463461615971556b474e4753655748666967756a75645653715a58484f534d6f717534475a6b48503373763646306a4b4a376b505472656a61573474346e4b4f2f7274376f35492b6c797558725547384d427072464135747a48556667756862506d6a554b4b775758464d315647336474394a696773694737506d754a3672492f65615a566f5069463372596c69563537667a3833643343504448543373676c36734d4d5069734c7553496873313052574e4d4f43356b6f7945695a5963506d673261486a386c5a416d504a736c585a636a713967684b552f4642426445506771433478727a34464e626b5a444850393668696645475079514c4a364d2f4655796a78576e446837316d75516c39493936416154474c454c6d54393379573432376a466d484a593537653437536952464257304979315a72545a767a647543712b333068705a4b517556593463633048712f5364764b3574726b7933395856543465383572776b756d6858704e767537397178647457434e4a6a4b5663593866666b764e6c6e355a6f4c747475726d336e71746e44334c306d7a3956736275496863506c33543769764b684b7a34495063587471576550684f597a56586c39514a414c4c7a4732395333473170626e54394f4939757864697836774c33696a316677344f6770335731386d516c5a77345a4b2b784d5347724c354b325734684f5445733677526e4731505448776c42304c632b706c6f6a4e367241444b4a504a573236566442766851306f437455434a6a53634a426c7a597a6c63445a7078647532713652494369444a35317a303235354e392f4b2b6965544c7157376f6d424f42365438565764785a3364754d4a784267652f7744637149624437592f304c684550306d767345473663767a564d42724e566f73573554444650477733552b43426264714d4f6f564b766653634753675a4a32427871676d7359353570344555347043324b59596f4675576f3374566d5745347969766e646d775a33593263435a6948344c36504174494638313551625764723165526b4745544b35335a46425a366a6438793859526f492f30343979303750626d5055636662354c48474d524b63706b4f5a4664657a626c434f715765485955476739485565433438352b5a4c7a48342f7358533331777774486a704a584a6a714169375a4949357a78496f726f467868565678464e57614e725539616c4262706c34714d726d497238566e314b37587247464d6b426a415a5a70726353456e627954516c3952707751586952787953584b39324b59445456435542506c5241496e414b2b55444c4475564d426c4a58454d4f6c425734397345635131437135464f47485678515775465558465158435a6c426d636b465971334c323756586469396544717755716a636830734d572b43447a76727352436473667776546d53754f75783635416d365a6775437762677934354341354b476e596f4b7153446f497853697445326e4a412f7051524846416c314f534359596f347161584b58506d67614a64477053346e43714f4b4164714f4951356c526b415a6b7a49466e544e336f4268326f4138555735315569326141425233715645787751476c436c4a4b6a5a465149417a684d613449454d6a467330462b79595834413856313978634d69386961354c69574746794a357272626d657134644e4d3047627a4231466149586f7a46615a646971426a634f69574b6f6c445163585164367859742f56556c587a326f4936677554744e324d48796f4f4158637461707731577a33494d462f59786b61426c6d743272396b6d63534f613642334c644a42316347516e666a696155344f794462744e393576525078444a6258772f484263474e38753842384743746a7562724e346533424232546245686b6c386763467a593374782f44566172562b2f71496c413034494c4a3274484a3831575a79746c68775a614a58784b6d423936716e636a6e54385544655a7244423364436476562b444b71642b324b677054667230312b6455442b554d54677170576f2b4955537a766d3534616d4b7a584c7478674d304675366a5152436f74514d664756682b3575516b306c5a353177696c653142315a54306a566c6b754436727654666d4e755041433876356b392f646554445551306c796f6a7a435a6d704a3755466846644a6f2f785a4a4f576f642f3570364d364139374f67445266553373465a436b4c3166706a3877716d5a2b4b727554494a69394379436e35494b4d794c49496130556f67496c504c48674543765771596330696242414f78484252716f437441676a4f6f4642774b626b675847696a76696f6a32596f426a6770695752306f64694175675646485153693766706c7156757a4b344d5a6e344c6b57375a75794549316642656b4e72797847427947434376535a4f6f63765a3141506a6e785231476e745641734f6f476c564a523459493037335138526f67724a42784b785834434d784d4c7054414234724475413464426833456e6d58533267686365526457576f5535494e6473766e2b616a3673456b43343731594d67517a356f4c497344677946346e544b6e785474707837776c6f5270465547505973386e376165334e626f423167327a777574322f6d74344570316a374641786a3567306a697572757065585944566632433574754269326f45444e62642b644e6a527a636479446d677632386c644f6b575351412b6c4e306e476c55464a6b4451714751424948425179415079536d55544c4e2f6d677373654e34727457782f544570466358624e7136654b36344c42354276326f47756457446436346c774233686d757a4f5a4d64594438567737306872366453446f3753477478324b2f65536c4b4e63477737466e324178577539313264516f79444859595472684b6a4c48765a796e754a584a2b4c38466f74676954593875447244366e4a723179484d664a426e3830334c6a7275326e743249634456634461774d794146336233394f4d526b326c42594347636a70516b372b78557464554361704f44494c6f444d342f6746543670592b343232714f4e76713751726a526945397536496a51334c754e45486b644f432b6b52686f7377694d6f6a34426545336d302b303341686b534a525876626b674b477256514c4635426776482f3544747265333351302f5845544947466543394a746433432f44552f4c7658432f79433454366f324f6e51414f5750346f50506b56354b524a5870622b3273796542414e635668753743334c7143446b68777038303977615a454b6f494a3249314e4547523745455a714b4f34716934474b6769516758465155716f614b4d67494e4748657048696769634b4949785142346f755455496e6d674135494d53694b46536f79515232717047744372624e715630364969704941373172762b6d334e744458636268303855474c45555141347147545578526a6d6742626b6c4f504a5752675a345a4a4a5130596f413552494243456c41654743427264733353305631624778387556656f6c59396d7850595632497a36584f4b446f57476a48517a6c6272444350467346797246326741573678504b6f5164434434466c6143596a3239367a5736304c725641494c6f562f4a587a4c524a437174426d64592f573931397273357a68512b474b443531654771636a784b7277715541534238553078536941536b5252562f4e48465271745641385471785473493442423277344a4f78417a2f41464b4d49346f41734f5368716759786646536f77515a716845653930436970366b6363616f74782f4e41426b4266494b764279634531416f79435071484d7071742b6145667a5550484c4a414a52344b4541454244454f6d4c45494c64745a3836576b426453414675314965324b79656d523158573553576a636e564d51356749505a37582f686a506941724c746d31666a6f6e3143764a5950757a626949443651706133666e6e5142552b35426e502b4c626156664e752b3363724e6e2f41493774647063463847633552714e544e38736c314c63386c6134515a50555a76745a6e4576384169734273655934774b336570553230694d596b4834726d6e63334e73584e73474c506a56416f395033464f714e4d656d71302f616158457347377531437876495861427853735a4c5161654a426c6e48517a4f66795843395274655a6567534359676a554f5337462b3463582f77424b7a526847354e67782b595158547378745864566e53493664496a79373174684d4d58565534694442384d31572b6b6f4e67654153546d315267445645524e4e56416b753955572b4344782f724e7351336c795038543135726e595658582f7947502f6b6d58366f784b354b434548464156716932535955514a7a556436715a63464f31415863727065696638306f6a4532376e2f414c567a42774b362f77446a7a793359674d347a2f77446167355250557572592f6f2b6d585a6a2f414b6c794e76756a314c6c7a38523756314e2f45574e6c747251505649537579483832423979446b4f2f636f65436e4a61396b49534c7a7847484242627472666c68704175737534426a6359347271334a77783657584b334d396333515663465043564a646a4949447064624e686330334b6676575453724c45744e775351657732747a70476e4e62773073447a58443274794e4941344c733270616743442b4b437a797748474b3466724f316a63477150487558654e616972594c4c76725175576a416f50455349464d4756525972646632737572694d4f785958346f4a6a52523243594e4a6d3979464f35424e4f72325a534d5852635a42512f42424b69714c76795341557161714f43676e792f4a514848676f655743616f466142414a565130615370495a6f6b557167576d4b67596f74394b4b425252523346556453684a7843414f39564d36714f796a6e48464143535368696a386b4446417a72627371652f4259725944683175326f59747a39766367783347314874534f36303732336f754f37695665355a6d51462b4b434977514251535645577a514558544f3642527855556451635542303855425246446d674f704241794b624a41416f706b6f676a4d706a676f7a6f44344943364d66696f493856415545634b416f4e385545444d4751524e454157434173703463454855644243694f43444f6f61494f763656636e624f6c38537651476f6f7650624b4c51314869757a596c466d6c696779656f576458574232726b7a684b6475556377583767765262714469745375435a2f314e63766432494f616f453035427966636c51474955504e52776867674f47432b696569794e7a59574e56656d58774c4c353541354265352f786d394b577848474535526a7a2b70423074746446366b51774230313555587a6e64773033376b4d4e4d704433466533394a7362757a666e6333556f67542f3657707a46734f774c783371332f77423565622f75532b5a5159736346334e713072454333474b346d4e46312f5435675747474f723845476d334d516d477958557454634c68544f6a72774b364e69343851585164487a446b72725a31593563466c6c5134305a57786b7a42426939646d42744746486c6c78586b53614c31502b52546178415a366c3563494931464b6f48696f4b6f4932613942632f387630614d6d36747663303434526c2b306a334c7a3773752f77443437495878754e6a4c2f7177654838304d507a376b484162696f514742544548334a63616c42317638647366636236302b456636682f77424e666d73473976384133462b35652f584f55766556312f516d745764337553644f6931356365326548784334636d506167565273564b6e46516b6f4737384548624241455a6f74775142736c42553052555a776732375364477a585268634e582b6134316d576b725643354b4d616637696737454351654333574c6d6b397676584d747552315a444662374e4d54676733526b4b6c636e3161666c627262534a77482f784662375a79474f4b35587251725a766344702f4642364862793144494d5065747775787a62334c6937475a6251546775724b324964506632494842657349747a2f41435268624f5a716e74316972596873734548462f77416f75473173434d4e633478377366775868374e795430587450387344374b4d763033492f4972773863586a696737566a636d574f474b31573579314c6932355379777a5736336350466b48556a633531543262326b6b6e4e59526559736662344b3249643047792b64454a5955447252755339776e3955592f4a5a746c616c765a6d7847576752694e636858484b764a6461373658724930335a6449594f496e38416735786146754671565a536c356b6a3259424e727939676a76747450627a6a4f5a31526c4c532b6c694371473661494c346c7a552f6b6c45395037465471306c75415379757653507551614a794a44485076575355504d4841707a4969585652515961686878515a66747a6237654b4e75314f325834664661664c6b635367656b475842426f736b5332386948414574504e3050755a326a2f58424d50706d50787a57725955744730616d524d6d51746265646965686a4b337834653942723265377433343945346c615a4e34736c79352b6c575a4856485647654c2b314670306d32776b653942646639773936387a2f6b722b6262682b6d487a586f424f5568523135722f4937676c757067665247456678515a64695736586f46664332496c78697365306d444c534d5671746955786362783234362b3173554678745375394936596c6162573274322b5a5664693771414a7a7754334c776858486b4b6f4e45726b494374442f43734737736564507a6a4942777753536e64762b44706364365735626b4a6148387959707943446d376e5a78466463547953574e5669356f6b3464646178735969516e644f594a344c6b2b6f58764d76616f3444424276313945674d68546d566e6c4b635a5734542f376b4a64797432563858494e775362734e63746a4961554876373463453563634655575a686e4766554b756b335542634537545550787a56573030327259674270614d753542383449795367457074544f5170466d356f50542b6e2b7462614732745737684d5a7744594f71376d2b323136365a3270477245367332586d34795a516f50643258754f773747623848533338475a6a6e337278316a64584c42364a475038414b56324e763630385775655036655a514a764e30625636466b44564d476f37614c52617558397630524549485055337a433439694e30337864465a67366e4e517654575a537552726a6965424b43757a7537355039534d54484d78573646305463594469717441306a554b2f71513036634d454275584e4930737373715366557975755330682b4c72484f5244306442713273745a6e455952415768754f5271566b39504c334c672f56434b324d4251393643764c4d6f32395434706a474943534a3434494d652b686f76476367305a615a43545577416239367936725571524e665a3136532f65454c41746c6a53685a636a66526c4b4f76394568377344384548506a6a67794736724134666d7458326b53616f7a745268574d5179447a32356b4a536363464c5733756267746269536634612f4a614e395a3058474831645339465975322f52396d495338632b71556335452f674548426e364a753755504d75524549746a496a3838567a744f54725a3668366863336c7a5650776a4350425a52554f55416a444d71794636567677344a476f36674f6b636b47797a7635416a575063687639794c354247537779724a516c304148376b54696a71594f464e4a4746554631697272702b6e513643546871722b4335454b594c71656b6267645671596f2b703048586a48366c6f6944494d4574746c6445447351474676536a47416453455263384e66697272646f38473761494f462f6c63756a62672f706c3857586d6758504a65672f796d2f4364797a62684c555952366d71784c55586e79794159447651644d425251797a43416469686646454b417669676144673673313748613350754c4175385238563479413153624d7230766f392f524765326d4b6a71695063673631715a4376334f326a764e764b7a4c50446b73706d504542677464713463632f596f504233597932386a626c6b68716c4534734636663166306957384976577646395556357135743557334568705036654b4268646c4848464e3930614f466e315364696f5a565158655a714a79374570496c6a326c4a4148434b394836643656477a616538327558484a427a62562b315a67494d583471363365467730595559647179622b334f4e7a71414148365656745a745057537766336f50536266664e47554c6d4d5759724c4f2b4c6c7a2b454c444b5553653162624d477269794476656b41364c6a2f774463506343415630446a7a62426372306b6e58633569334c3375507758587851416d7135767155694c6c674839524a374d4630704774467876556268462b4f656c68387967744d746176674b73614c4a624a784f456c3049757a6f4b7a41414f66334c6c585a4757356c42683066562f4e6b75365a415934726b5837596875704e6a4b7675514854524f796a505758747a534469676339534559356e755130763155393663527252416b3674386b3279493879345277697137686c493471335a523635633468427230754e5367615136766372443845736870716779334c4d764550623277563175385945516b4b4b775448597946793347565367734c454e376b644961717a78746154695155597975446d6776304436654357564f536d716e424c71514366597170395743736e4a755157655845494d75366762673044362b6c64437859685968473162384d517164753870655a334c59412f666c2b354130656b506d723546687a5663614e522f6d724b5a6f4d3235767832344d2b414a626e6b764d57384e59385766463831642f6b6d2b4e752f446276306164556d346c5a496271334d687164744779516236666b736536443034425775496b534837306c386966745473514731485646774b68715a4b7934444c44425a34376933614141717950336b5253494b432f513563304367684b4f624c475055496b744556536e6633414b51712f31494e3439364c694c6957484e63715637637936754f417943795862684a4d5a7a4c6f4f3950643272654d686773642f314f49424450796b754e3576444a55366a4a426465762b59586b6b462b517756664a51554b446474742b62647137626c684f4c4259585566676f57464367495969767655504f716a50564145344942526b346d3159304b56694b714d6736466a655735644638455a616774567a59795a3448705846354b323375726c6e7779626b67366c7564793334716d497757325a44526c416c3152505a3344614677733544366553707433443567746e3671494e317664334e594163482b49555779337534417463496635716a63624737743469344235676a6a797a576e625839723668624d434e4a2b523566745153357349586e75625357695271324d58564e73336255744634482b624a4a2f62393173354879356172663463303238763662523179306176665242316244776946706a704c4665432f752b35684e3764776a32344b2b502b5262306655442f414b592f6b6739706f656d4342697649772f79586368675977503841702f6172502f7858667a74322f63667a5165726a624950465273704e337279397a2f4b377334394d49685a7a2f6b65352b6b514650306f50596e79774e5570554b382f366e76724a3345703270563876796a4c2f414642656433472f76376a2f414a4a6b724f43632f5a6b48715053746a50646b62693450366239504d727454747a4161644f6659764b37443179357462517453476f524e4b74544d4c587550386b4634474968704270784c5a6f4e472f76693963614e595270546971494e6c6a7a57657a7552654f6d4a69446a322f7457674275394130756b734b464d492f71524d645455554444484a41515153355631754d677744484e556d4c3555487a566f4c595a6f4749524130396e7a55476f564c496736614445494c5967345a353969503039694676705059706d58515152307067654b544f71736f513261415344345551474c597033416f6751314179414442776d4a62487553766f695a53706d735735395673575469352f6851626e66414b75354f4e6f764d696e48466c357a656573334c335461364238567a444f5579383548356f4f2f643255626c7733544f4f6e716c7043344e786e636353674a6b42304975674272696939474b4f66536c714545646c4455756f4b34344b466767557068676f7a7159346f4a6756485a51456a4842423251466e6f4543446b70346c4544505871514a4b6b577a51595a494471436a366b41694f61434d796e61694a4d47795146454549344b49314941536f4a4a45486767374b416c41636c4b4947497977544867677332304e56324d6566597576656847647952663355584b326477433435585130616a566d515a5a6951504d4c6674674e7a416a683731524f466173795731616c4a3266755161703750524c735632323338397161654356434d5530647a356730334b48386b7768456a5239587a516461337534745450765469647557416a58336863364731387344537a4258485443704c4642744147422f4a4e35495a694b4f367753337a45576f564a354a4c7075546c39513730472b6372635231555655392f413068314b694f7867664738753271756a7434573439415155584c743634656d4c5a4b437a636e576448573041633073445630464d64764341347667726848454e3271476c47366b386a326f4b626f476e386c524e70426f30576955526936716b7735494d4636772b4657574f37666a5a69787834444644315064584933504b69644c69764e637a7976656678515463626b376a416152676d6a426749344d556f4d5256776f5a5778586d674a7966414b6679356e733976676c38794939796775786648323976324947467639587437735654666555713473727463522b4137666276564e374642586969554545456452314d4d464151676e59677a7068785a4142716c42476246484a48556c434364694b6d4b41514841567851436e6169675842526b577955624c4a41433770766d6f48514e5547725a586f6265364a7a4436634f31615a2b745877614e3331584d4361736b47325071743453636b486b72346571676a726746687332544b5942433253324f6f555161493732334d344d543755562f6d526c38384678726c69554b5a4a42666c62774b4473584c6c4747415761356d465262336f442b614837465863336572776875314256636b7856396c32645a584d6a5771315771395034494c594d66624e5062675a46474469717667597748385251436f414f654357596941634e53633348494a702f43714a6a453564694375354b4f735369504352336861496276534d4750347173526759507852386779445051494e636437476b63316f757a6c654750767a58496c747a4767717955585a77496c56427230473334686b6e6b516543537875526469595850656d466e686b6770496346386c4364515a6b63794255494356574f5878516164755a61324746414b4c716954726c62474231366c31433036653542584f5647484e637139497a494c307758526e50554758506e4451377339554772616449654b336d4f75337034686337625330674c7267426d2b43446b37587275616a6c4c33726b65716a2f79626b66347350623831324e71434c6d666a34344231795055762f75726e48556766302b3233556537745771354a786f61727573396965717a6f6f2b7256334b3362546139457a38494b447052694c634f724e4141477234594a376831395758506771586241342b32434377783146796d6a7149547769446c564a63765762593679616345466432324e7864426e394e56304c6e7159683434754469755050316662572f444579504f564653663867754f3049524151646630726278457061443469467939394f4e37314f354f4e52452f4b4943512f7743517a304d41307556475754596d3563756d365469377567365678334a4748357171636834673956424c53386c6d33463353446978384b446e6267764d736b4a526e575356413963497058393668345a7141494a6e54465145346f6e3349414944547770657845684c6d67643041536345457a6b5651425134496c7373554a5342716742444b594d6d4e55704b445474643139764c5645413974565a7576557275366f543066705749423149316f674963684252326f6a7843432f61582f414372676c674631726b4c65347443556d4758655677684a614e724c36486f55447a32686b4e56756f5755774d463149784c6941563568416e5552676734396d656954354c715175394f715868794153584e6c4674554f3030346331544764644971673663626a735467745675656d6f7737467a595231564c5972565a3157773361673757336b784263726f327775547450314d7578597a7a37454769464b634635372f4144472f6f32384c512b71542b35656b694b7277332b57626a7a64304c512b6766464235384e345368504667724e5076537a69394167566e534d485a5052334b47675966424137356f44436e616d6c376e5559697142587a50743249365855425a4161737355414c796f6d52484f6c45736667676e6652546d6a4e676b6c4c5679514e4a7756444f6a42497a34344b47744544435434714f4d6b6e7a52643046676244344973593434716e4170347a306f4e6d796c6f7563326c37636c326470597478653775476c493863492f745848394e454a3334444b7572334664793963467359667435494f6c4f63626e535432616171367843466d444239513936343971643639485870305179585a32393447446b5966487651614a626a7077626e4c327854446353344d466b7633686347693242492f4a4c44302b4e78764f71324c594945395733385a574a57595071754551664a5a62577a75742f566e71793746753953326c7637595368547952716975562f657473446d442f4b676c79784c62543151397930486664475055324370743771337567644c646b7561615675414c384543534f6f435a466171335a5359796b513338796f7579474876373177642f64486e48526c524236326430534c2b3374524a7279584832462b4a68774336305a435263494e63434d536c6435593430535944546d6a474a6943535548412f79456455546d42376532533449586f6658595059746b3853764f31795151424545353449664e454f676b674d6c435563516c7751546b75782f6a682f382b3332532f77446156782b533162446553324e364e2b4963783438777944504d7449397175336d366e75356955677a434d514267476f715a45794a4b475341594b436c416f516346475a41784f524b414346455367445a49685273754b6847546f4351364f47415141376b37634b6f4f7a73726e6d526f7a34484e64726237694c7468486c6d7649375752747a6355586f7472644e4b64534474696e595658664467786a6a6b6d73485845413037553947726b67387443424d7a452b4a354354385678726b534a6c656a39543238374e2f56454454632b6446772f5549614c6d6e4e68713546426a464d4551577854434c4f366362573459473442306a4e4258724f4b474954474c5a6f6148464543754d45776935357052324934567a5146674d56435844494d39417054444a4166437a34714844696f785250545242434d4478554d58775541656751777a514b654368595947714c4f6c4e4542726b6743794c5a71484279676a49636c4456544642626146574f433132365336566d323853536331746c434d616a5038414241752b6a4532347455763767756479433058376d6f614173786f676837464f5a55434645424842454b455555484241547a5169454256546b674f46536c5a4d2b614475674a6f416768324a335a416f4a46564d56464b643643436d4952553031515a6b454252415a414b494a48346f396967716f616969414b454a7141385543663349493161714f69497568544e414545355a6b424934494f3173662b426a69363337655268336331794e68632f706d4b365733632b4a766246426663754f4b726b377545375a4d384b664e646331376c7a66554c50394a3833397944696b5a6f417051365a416450636f5179476d6943416d69372f6f572f7357626433613771526843656b6951794978773438567741654b686f6739682f6450534e684c7a64734a54754e6a31663841786667764b626d366239795632574d35475237537169586f6f6561412b466444302b373053426467524b6e494838317a78775a626654384a6f4e4570784d617252745a75484f443572484b5046613976414f4a4d673659714b5556384c6e306a46714a414b4e546b714a793876567951595058352f7744484134675637317769654b30622f6453334e347a6c37425a73554547444b6330587955446f494d5674394a335832653674337a6845395838706f66677344456f733451627656664a4f36755332387456736e564876715237364c44687952434344757a66622b697847642b362f2b6d4e4b39345844656c453575796c45516c4936492b475042306763396943636b4f536a49387767446c457361714549416c424764525252714944456b6d6933376165767856593979353243303751395655486573517842777a585238743438766973323169636632726656744a4b436d4e446a526333317a6f74576d2f555433344c52624d35544c30687a5648726830324967746a69677574373278614c544d6e38574846642f622b72625338476a4d61734f6f4d765037533147647147734f4e49726d46316265787357343069433346423249546961784e46584b39716b304f383969716a47724d726f7859594d67792b72376157343256323145645461674f79712b636a70583153412b6d532b593732304e7675626c7356454a79413769676c6a694d65664a616f534f49476f76375557474532726b723458524536734167334362787a4375684d6a772f4655517542326f724945477044684233763865724f2f504a3441647a7274447a4f4d56782f385a6b4a625763794d626b766b463135546b4a694969346c6d673533726378437a61664533594c4670684b73434b39337a563372397974693263444b557639713551414a35356355477164746d495765354d4444324b7076626d7a5a65336375544575444f46554c34785936636b46754e516678537975546947633179796f6c6c7649696b5931565a334d706e7437714242654c6b3444785543612f764435636d593950446957584c6e76524767416c7a5274627135764c73647549524775555230697550463048737230434c413873744f4138584e437876376b6a35563572557a345a596958354a3458744e795554784c6469736c7378666a706c3152507452416b3747365a7a632f7742735549574a787742507854376661626a61316a6445726643655865744833597434687a2f43554273524553337a5868643363382b39754a6e4f3477376e5a65326a755a584c676f77446b2b35654173794d39636e2b702f6d674e6c6f6b4d7570735a694f34684c4b54784c4e334c6c344f51467132637871414f55784a41392b32646e63302f54346f3969364542626a455467424a36366c6476396b4e35626e49654f48583363467a646c7554596a6f502f48394c2f5363304779553731794f694564494e444a534d4262474e4f4f626f2b66614a704c555438453769574653677833376c79344e4671464f65616f6a36616648642f77434d645279375630726b34326775647549336435307a4c4274514151632f5933497833456a476b54712b5330377933714f7667733233742b586544344c5a764a776a4456692f74586b673956764e3366684c56624676796a585664504a635863663545496935626d49796b59796a453271645865764c33726b3768655264495a555a414b4936736c76322f704e322b484e426936336a305745595069794469527a475356317533477a4d443059633856686e45677355415441734b597061507952623234494e2b793376323977546c574c395565495870597863655a614c787848356471385746322f536655664a49745438424e65546f4f383739717a6b36715a68625a2b5337546c704c2b3959376c6776724f45735145476536644970565a3366386b312b737a41753456505552326355477a3034747557476474644b634137635677624f354f31752f634550704659397131572f386b7354503953334b492f684c2f4e423064414151747736676566597159656f375463306a63306e394d773378772b4b7373377262546d595175783134436c506567763363543563536341573936797a4975784d6549397931376d346674684f6636674a5a72487045673861532b61444f4a7645537a775049707039504d596c504b326255794a2f574e556678566436364c4673335a6a67412b5a51596478636a6176786c4d442b6e58387669755675747a63334d7a4f5a636c4c66756d354c564c3669716e6f674747434a4c4854696c777855724a41326b45694b75746265643474456532614f307465624d527834723147313267646967383550307663517149366c686e45784e614c33556473487a58503957394e46793372675036672b53447977416431614b556f713552615448765673484657702b6141526a566c307265314432377354585847505a7a5753332f55476e4d594c302b79324f6945524a71462b2f48334242654e76494136354763683957487956746d7851617168384553524e324e4530627475515a366f504c65712b7062757a75626c67584447455a5545615578474835726c334e356675306e636c496335466c317658746a662b366e7549774a747972716948464238467730426f55434f4b6743492b534356515137557843434f34556f456f44706e5a42647464506d677944686166506e43364c6f44455a4655374b32386e794375767a30342b4a42336f3359796a71686756727333793950654635333076644548794a65484750617570626e355a4f7169447377754445592b355a4e37744c57376a706b4b355377494b72462f547a433157694c6b4b6f50483771784c627a38716547556c6d6a42354e4774563654316a6165664278346f6539443062303779342b66654855487079346f4a365836554e754266752b4d3452344c7443302b4b4a4147474b674753444675746962726d6b6f3847584c335870586b5238344d4976685842656c4665774c6865753335655a43794d49395251637145486142795851735a6c593759315247547258412b35423166532f2b64785856622b496c2b31643047693837745a364c6c6f78796c703770426568777237304577586e66564c6a33424f4f416e384d463239356538697a636b4d5245366677586d64384e634e47644f396b485568426d72697438614c6c5839336273576f53756350446d53797232337147347559415168787a2b4b44757363567a39384776776d50347453714537687271507953335a2b57486d6644374d67764f6b526554416356796433367661734854614a6d6553355871667152335574503052384d52682b39633258556553447079396175414d49784166676b6c36786378307837567a6d39794c4271494f33742f577a63614e2b76384145463276543933747a4f5238324c6157715777375758694153614b59554b443656617632376f365a526b334358354a70526638414a664e34585a57693853593969376d7939637578595436677a633048715766444e47585451716e6262324736477344484c465879694b6969434754684f345054775659484254546d674c36716f367744676c6a42734f354c636b545149457579645a35793471584c6d6c69566c6e64474f4c6c6b462f6d54626f6d52334b3737766352494a4562672f68704a5532364b794970524270746570575a45526b664c6e2b6d587333785778346d546a50426369356269523167465968666e36584b424d76384178705330796a4b756e6d4d3048452f7944562f634c72386664525a4c473459395743743959334e766562753564732b47524877703856676f4548657462754464513933426b307239695a634f5232305841456d474b636269344b616b48666a63745448682f416c4d44616965746f742f4546353737695a4c7563456d737a4e616f505133765574765a46476d66345974386679584f756572334a482b6d4248757175617a493661494c4a33726b2f714a56645545784f5951534d645646475074785164446b674f6b346e4e466e517a55314e6745454646506d6779676f674a6a6745436941464257714342484e6b496a504a52327167474332656e57764e7677427148633979794874717578364c5a4454756d724d42785164613375346d5663632f77376c5675746e4739623169697844564d7941784b576432647551366d34443830476e5a2b7033646d664c763174595077576d3773396e66506d6261364958442f45325078584f753353335845486d2f73374b754d62656d553269424566484964364470376e3150632b6d434d626d6d65716f34737650623366584e355058644e637553532f755a37686a4d6c6f304156514b41454642484631483449446b67414643534b49677669674f6d766168674b714751357161677a5a6f43376f4d7945577854447137454550416f45566f6a6a5535495a506d676b5a474231526f7937657a33763341455a2b4d426c784e4b6b535931464751656d4a505946594f70694d565273373062317353784f66492f7557754d6e514b774a647643565a726f7853414236463061523745445234464d4746505970597a67344977566a6832434276436d6d777756524c386b577a7a51576a6d694a415a4b6f53456a70464372644947484241524b69516b52715659764d2b7137387a7547334841455651443144314d33586a43674e4f645077584a6c6a56414250454f654b42536a5258584c4f6d706f367a6c7531415761716a305a4474554162464151482f414454686d78514e4d554975676b364a6346654f4753726e6a564168424361684b55756f4f6d6f514769456358554c6b636c454246536f55534136685a41754a524279555a304544555374565273776f616f4a67457a7456444642394a5145494b5a7177416d6779514b49714f72497841616963787252426e414d734d564e456d6462496d6e51794570524f5344494a736451572b463468706a48357250706a4f706f6e6862303143446f32376f757a442b2f67744e6d33456c784c3936347031526c314258625864796851494f34625942774c6e4e55546a624649343172696b32753467353139315630492f62677662784e5543526c646e4551672f42562f6254754456503841306a4e613433504b6f57632f465732385849593475675462324932787141722b7058794456514a55657645494c41483976676741654f4353556e4b73316a46414a484152716543574c596c41462f6232396e547850306c735544433443665a30722b386f61574e453069596842584f515049344c4f5470563745542f4144584d3375397247316149774a6c506745484e3957755238324d763447584b75335a794c4f566676647839784d615152435053482f486d7331525642474b56744a5a486d706c5641447852795a4e524b3258424245516452716c474b6e4a41536f32525553343151454a67636b6f52776f676d706b4b4f6f6169696a4d67694c5a705578716767555a414b554b4364714a6f6f63554343676a75676965436d6e6967697573674573637771664452573233684c424138374431434733693836344c52627551495a5043394732584951624c646a5364557143717438732b33425a7876595444344661724d3458417a747a4b424c396f4561517550667336533443372b6c672b4b7762714853534d6d50484e4278735078524552336858376f526a634c59537171676353374942435044486774746a69526c554c4e5a59354f56306476427733743764794234364d5a426b504d692f56677178656a4f526345746b73642f63796e303441494e4e2f645174737764714c485063536d716e706968695544536d39484b6e6d4548566d6c303051314d6731573939636a7a43333237317539466d616d476134774b614d694471474951644b65313053445543654e3867754b4b37613352757265763634654d635278536d3339507456424e4a5055356f6c6a53585853584a5777365341506a6b71707730383634346f4e75794776534f4b31584c6d6b704e7542484d416847557849645750773936425a7a46754c3163354c465048547a314c566734344b67786376334948734349724c4d7272774a5a707456636d44786c7177624a64573156356f4f646f303775702f617542766a71334e7958385a2b6139467670434632336577365348357871764c584a47354f556a556f4e5673686e7174646f4c6d427a67743232755164702f755164466e787a5437672f623239633359594d793262534e6d364f6b6a552b4256487246694832736947634642777233716c79343446423272444b5a6e347669675142686d6c384a5145714f70696f4b346f4979362b7873745a31726b59344c304e71506b32592f715a425863425a78694668334e343572644d366e6c79584c33417a5155534c6d71424253684d314545415564307a4d4b594a636539424b4874556a4630634547494343596f734d3041534368564245536377694b5971536d31416741726d686e52465141674942554b61587756396a62797653706775706132564e4c41494f6661325a75414556576950706b7059347271573972706f74555133564834494f485030736b4d47667457533973376c734f5176566974573751516d4f316863446c67364478556f385572735858714e7a364a6275534f6745486b764f3339764f79544351775162374735686849427974734a746a543851764f75785854326d354d77306871624242334e72626a63364a43764a6354657838692f4f33484c3572743765656b73545867756636355a612f72695138773547626842693238583631304c476f564c4c4a5a44306171365671795a67474e575164505a3279417576596f572b4b35753174364b762b4b36646a334f673152444c356e36784c5876627042776c494c36575a6151362b5633352b64646e4c395569536767464f53576678544351535a3830436548715562726275524c6c54707772326f4831464c696355704a47434f6b7353676a634538614a524635506b67492b354137444e5647546d6d436163784c415553555a30455a77364d522b78415678516375674c7557527751504a5371414f69437949416479676541514d4144564a69727a4161424c69715132534237647732354363635176522b6e4462377361355361592b6d58344c7a5438565a74623532317a557a6a4e4237496b45477278416f6d7357664d72645952567533743272396b584c65423570703252427452376b4771506c7870484257322b59584a76376d46714e476644704e552b31335572335443334d38364150322f6b67364e32423345445a30394d73566875656d376546613464714f346a66387333444d41503449666d736b62682b6f30412f6d514a35567530386f414349344c504f3545595a2b32436f33472b68324477726d626a664545366330476e653773786a3034386c78746665704b766167635851644c30322f706c704e4f4861757861755054466565325a2f7141594c7232726a6c6767375675657568344a7356677458733846747479455974695548503963743674767134542b6138726869766262797a3978596c622b6f6548744338564d474d713468414d614b567a52624e51423041434c73675643674a5a52714b5a4d6f526b676d44356f36564e4c4b414f674265504a4d592b3746435252636b494247696c45585a4c457345446c71756b504a413171706a5242474359644a5537457276556f4c4b5a5558553247353642624c754d4679574a446850616e35636e4344326d3276475146666273585148554e587452634c59586e6a5444366c30643975687474724d2f564c776e6936446c2b766570576f4837657a5755635a634f7865624a4d3564645356706e747a41655a666f39577a4b7a334c6e6d554159424242614f592f4a64472f366e6575575074794c5967333052346669755345634b49493749456b685153544946665546427a7955306b3051776f675946546d4549674d366b6d47434233645175614a4143536e497a4342516f33755259466d513741676b71425454546d693270306f4f5341755a4144676c5a454b454e524148557a545359565565714466737835665557644e754a4d422b7267714e74664544584c344b362b6452654a6359754f4b44424975547953307a54452f4a4a6967474b4c464658324e7464334236496b6f4d376b4648535a645179586632336f397132416233584935527748616e334e7437666c78416a795165654164437256547a69596c566f4354567767554d45513261413139366a4841494d7068564131456f776f6f654b4f6f3549424a516f7568564153796c636c435741554951536871555a596851594d6c6b674b447144347146785242426a5645597147714e634167424b436e63696731624d6e56704b36384d6d4646774c5259305866734e6441484242737456576666524d374d6b39683541455a664658377531356c746f303478346f50495351436558544d3971534f434345756f46474b4f6c714949454751775251526c47414c4652795132536d70424256317432516a35647838656e38566a726746713251424d6f6671487951614c5a6570585673645144344c6d53744731314c6673726e306b346f4f76474848346674584639597647324a416a46766975355a726c69754836396249673961537a5165662b53474b684c714641576451416c44735279664e4241364f43474b68446f4a6d366a754551437a70514851516c31485a45554c42544771434f6765534b67344941694256434e61496e464151514133464c696d43516c7345425946614e6f2f6d4273364c5079577a59774d726a38412f7551656a323477354c5a436b437357336d52416b306368757862724d5351336567516a57475a63722f41434d744732324a64646d4159307758462f794f4a30326a772f464133704e2f565a68484d616f2f6946336244674d7a7279766f64317054746e394c2b356569736d34434e4a516446352f706b74454263496551594d7142667567423670686575584d6b4773534e415638382f77416873655476376f475a316637717233304c576a784556586c663879736a566176667142682f742f65673876795674712b6265516b71513641446f4f7243657976554f71792f2b755035725a6139497433535049766173333535554e56353553723051665166516a445a374345727030764b565432742b433244656265556d4632426b37415078586c50532f38414966746476397663744737705054586a6c6756736c2f6b4e756638412b7865332b3141332b55584439785a68483659536e373666677545647a6345756f707656665537322f764739704d415969337035592f4e63782f656736526e43346455757165526c774362567044794e506a58677558724e4b6c45796c49395344566333566567652f7743617a53757a6e6d3453454b486967496f463250384147626572656561634c634a7a2f443856786947444c302f2b4e32684862337276363551743977716737426944676a39746550674a622b5a69725874334931496955703238593138304467306b43666254777547667656317579494578474345626b7265457966696d383834494b4e376638726133376d59743652327a6f7645374758564a737837313650312b2f7743587359772b71396331643066776465567354305442516449416b53636a383253375139514f4956706a5352784c594c5074626a534150487651657332747834754d4a51712f4a4a6439456865694c3973744b556457672b47716f32736d746b4134456a755a6437616b6552446a706936447963596d44776b4e456834787a56305a36616767757535366c36643979504d7430765248536550492f67764f786a7231505167395861673357327545356c5633444856305346503071756438792f705736535077566774776a62387549414c35494f526474742f5572314c50366b4a577a4332613042506156314c384e4559306f437552366a2f397a495a552b534447535673394e7343397549526c55437057574a5972742b6832435a5476596151337639676736384c594e49742b7a4a585146474f4b704e32335a2f35437748426162562b78642f34376a38654b43712f7464594f465678743136524f636e4262494c303742754b55573453704c424234652f77436e58624f49797957613547514c535830485459674f6f675565754e466c76376533633851423741364477767355596b413158513955394e6c73356178574576437935726355486174626e5861387157427248694432725a7439396f2f6f334a552b6b2f6d7544597569494939676e74574e63586d574c6f4f2f4b4d5a6e5846784c735663374a41646965784c744a47324e42367543335742586c386b484f6c5a3157357539496e396934516a4c53765765734879746d53634a6d4d6155624e6559686c6d676b4c4c566c6b743233326c75574957614f61336257547337356533596736566e616d486c57344574496d556f75614d507a585968613872414c4236664c2b715771524438563035586a434f724142427a2f5543587444367a4c446b316677584133313657353345647445764350787a4a585276332f4d756563635135697554733436487654786c306a385548506d4b644b725a7a6b724c7654636b2f7346566a676746517262647556777448453043657a744c6b3349695778585932323448703536625438304737307630767949646669504264625159734b507777584f73657657626e5449474a39367547376a4b635a6e41632b4b4466334b7563636946564c3144627850584c54374d715a2b7137534e444e7965302f67673831367859386d2b537a41344c6d77707a58706656595133396a7a4c465462794842655a785162665470663134774f645065766178594167597278766f31727a74356241774231653671396a50714c59527a515a743166466944797156796275396d2f5454385662753275544a4e57575952353438636b47757a7539795961344563782b535739443779456f3362516a6362584755597353653350334b625759746e53757266395274656d3763584a4856493068464234575171672b616b716e552b4b4743414848425045676c76696f3257614d59594f454343696844565668694941344b536963454772302b4c36754656626346754a72376b6d797a6745747933356b692b534369647870644646337264333769314734503554334c676d316f4770316f32742b6467474c644a7167375672637867304a6c33566c3358452b62614a62687858454f363877674769316250654733535265507851645333755a536a574c466134585934637356794a2b71644f6f56546258564d6562634c6b34494f324a6f78497778584c462b55543035397976743732504630473756473142356346354737642b35755475534f4a70775a6458316e66434d44596a3435596e6746787250524668686e7a516137637344677234674539696f6c2b35504136714271494e39755769555a34615a5250755870786d463551456d334e75422b533954616c71455a6351506967586462633337557265476f664a655733574c7a38514658795a6575314134726b2b72374c7a49656462385138512f55454845394832736439666c353246754f65524f42577149674a46766174465053744f333231326564776e547861507355396948527a5158516d4d54686775443672366f4c2f7744546834516669722f5637787444514844686565456e6f67596c305138676731564b4944696f513941677a46506f4a3545494571436765615952314a784856426d71677178344a6f794d4d55326972464b5341536732624c657a3274775365693978597661374d5a346b2f67766e56523272364436645a6b4e72614d525453443730476d63786a7855634e78564e3764324c482f4c4f49623658717366393574546c7073524e773550534b446f317746466b76376d33742b71374d412f7078507578564d37312b37575245592f6f682b4b775854474c796b42714831534342376d36383850454d443731794c32386663526943385157562b35336b59785956316642637578435a6d4a4448464237433131594258477676574778756f32326a4c763756713877544e425241306a33726a663546496552616750716c71397758594a49476b72682f7743527a667968794b447a7261635551796d4f4f5349514b546b4b497543616f4d6e306539416e59707a543650656d4d43616f4b6d5076524a7a524d57786f686b7941594b4f6f796238554367714176557071416f49496f5167394577484e41727159596f734d4d30483146413435597058597141307169347a514c4556526f2f4a4832346f596f416553364730335973577a4351385456574563464843447562596d635847617a62752f4437755568345769506b73554e7a4f46496c683846554a6b6b6e4d6f4f74366d52437a615966564b7648426377336a4f4f6e4b6a705a3370794169545159643651684242536942636f7339464d55424c346f7870314442445069683234494254464749536971626b676d6271506d6a677079775142364d7055302f636f78555042424a424679454230706f5151514e676752696f4d4648475344712b6b5442506c6354475466417274314f58666b764b375864533231337a6f596a69756a2f2b4962376463596b646a494f7337464f3057635a726d572f58624d762b53312f74722b53614871323171434a44752f622b43446f67426e5235725062395332732b6b58474a2f55442b53756a6473482f72525038417151574f63436a6a34614a574f4d44456a7479566e6c6c734837454171656e4657413149495352686b51517259524e6550464254667665545975585239433851535a564b396e36764879396c6442474a6a387776484768705641764a61624e707932617a6861596b5779436366616944587574764c79384b68637368715a72757733567539426a6a2b4879574c636254584a344f42785159436c4b746e74357738515663686d675069375547507452514d4d46454667344b654b4c4a616c4579475343764245557877554a31564b4342696748774e56496974564b5968424f61696e5a52514949433647436c58557951452b3531434f436c4d3047627451516f7452416356434d30424b4b6742474842445652425a4574346b2b74785371704a79546a426b467875756142492b704b42586b72496e70626945426862456858483471434a664d71324a416935566b70367179515045784a6161573373684b757068372f6b685a567471344c4d74636d306f4e41394b7653464334397a716f2b6e626947412b4b36466e314c624544566348756b4672462b31507758592f774335427a4c64766452367042782f45746475462f785246477750344c5a4151776c4966376e43733177444855472f6d7751566a7a434b2b394e47417a634641584c66313349755478795358505564706144797569584453673047327862396962797a586838567a7637357377377a4a2f306f6e2f4a4e704564455a2b35423066496b3373653950477a576e7658446c2f6c46695068744758624a6c536638714d66446144667a4950516a62746a6d7254747a4541526f764a532f796e63534c786841444c457371442f6b652b656b32376b485339653952386d586b577646395278586d68634d41572b6f4e334a623130335a6d63793869616c4b53674d61347161697a496b6f4d676a4d726f32544e73315a7464716268615336554e7270416b416778576471532b515738624b4a35594c54477957706d74467662766a524277647a366670426e44344c6e36613158733739677769524e6e6f77354c7a66714f326a417642427a773451484a48745564334b4353346854785555646867676149436168516b34714f6f36425161756d7778516571694342526e5543685075514568304d46434755514853366d6e4a4555435568304244464d436c4b416441544b7445524e4b426d697a68676759547a49397961463478723756565a63486d67336567367532395272707542327a57677a45347446717858436458326477595579514e636367413555376c54324c5675476a494636474b7947744267673062616b645332695851655035724a7468307574396d314c56704c474a5156656a3771315a4e7a7a66465070484273304e3173347a4a6c5a71395575353258395178685152397950336479324e456f754279516332567378785443424e526b744e322f473461686c53514938766d6754523730756b726445526c4179344c505a6d42453538454642434473724a7a4d6b68636f4e667032374f307643654d54535134677275584c506c53302f53394f59586d4636503036374864625a702b4f31546e4b5037454646382b564f4f6b4f4a643665454250546b446a79415656357054303430577931434d4a4332664670724c745158797051594b75354979365366334b7952387670446c76637153576f4d386b426f427853774c7a59696a7147526c514a6f687643674d497565307262426831533659724a646c477841546b576a376436344f2b3952756271544f30426b67302b73622b4735303237564977316646636b56775535496330427754786e314f6b41344b59494e4a336b7373417039374978306c325755303730644f614268454842496d31506a3777694a61714771425a426c4b73695258696c42515837574f7537474a2f5541753763306d683967754a736f476430486775756275494753436d633473537566666f743979414242574864455078515a5a4652736b4238305167494f5a514a4a524c7057705242436f585a486d6f6358434164694c756c7a544e566b417735714d364a6c6d67674a577a61375356786951572f424a73747362386d4f4339667474704152614972346572682b5344465932636476515666344b775247624b2b63644230716a5032785147556a345141482b714f50656b6b395245643675476b697665715a376d4673494e746d34644f4750657430435730454f56355766724579656946526d636b327a3365366e4d4e71624674546a346f505677744f4363467a5057765268756f613763644d6774657a335537677238714664635347427a51664a377475566f36546946647472787448707846614c31762b5165676d394c37697846356656455a727963374a7379307a426a495a536f67376c6a63686a49674f63654e552b356c446348713857547244745036676667743852306151677a36426d7568746f7830394e466869356b376471364f3259316937494f6c746f35484a644b316973646b5572337264416a4c4e4258766a703239306a394d766b766c74736747712b682f774351627762585a7949786e304476587a6f5451584f523370536138507a5231615575697554494444424c6f71367445616432535271746d36424a6b416f31486168494f6f777951454f6c6e795263524371514e68564632444a5478526945417877523756304e6c3658633341317936595a6e6b7654626259625730424b46747a786c4a3351654c68416e414b7a37613949306956376c726442356351442b6e3979736a62746b306550595851654a742b6d337059785769506f747774554c32556255523238654156676848537944784f373268745778624a634442637654706f76636570624c7a493171636c347136444756585149686d364a5a426d6f6737332b4f2b6f2b544c376566676c3831364465626564364a3079424f455877433848435274793152784743397a365a7642764c4f6f3049385438754b444a5939503331756f6e5a6b5046706b35412b43326937767039426e5a45663441566c337672566a6250473244636c2f36522b61345637316539667a37644e416739584c63323745663639324a49713337463576314c317146332b6e743436596e47544d363567655a3153712b61706c4141506b67686e49347172476d536338556943454e696f5345576441494c4c4d39456e79585973474a415a63526139746636674548596846734b4c5447345939536f735431423831705945597555476933644d35506b363839367873764a756562447754717539412b5856556271456231733232385136653049504a464559756d755739456d4977536b4e56414779557951636f6a4242445846466b45574b414245596f4775435942384545303571457567526c6d6a482b46417249344b364672574856557355415a52422b4b4f70424d4b4b4549366b6f6967614a4f43446c4835715056304854394f33666c3945384146703347366a646c3574337778445148452f677549447037314a7a4d7a5641392b2f4b2f50564d2f735357346d526447467657655846644862374b37644c73386677514c5932586d7831634663505369634b4c7337626136596d52706b79314378787751655276656d58626275466a5978704a65374673784763735379356536395073794f6f52596c423565497855354c6f582f546a4773567a734f5343664e526e78554271694252304271673555374b4b5264756141346d6a4a6a4c696b647355454450567661694d693945744552416d67514a697249526c49726f625430377a44726d576a387975395a394c685a47727845684235476343504550636c58713939366262386f73476b4b2f76586e376c67616967787552697259335a52533337636f477543584474514171535564516330466c734f575853326c33795377384b3551643170463473774344753274774358517653426a537373317a726437564b69766a4f4277487551596655344158544c69734c4f7574756847354179416f755953394543737851487754443449456f49586f67516979413549446c5244776f6c5149445476536c305a42416c3855455959497452416846324449416963614959346f6d69435a7150524c6d695542624e41566f6f6f79434646334e4545784b415972706243376f6c48677559723974633053484242365745514b487457765138574c7541734f327556417a6271585246774f387350676738687672496a666b32424b7a526775687670526c646c707a344c4a7a4251455854484b69417552495a6c56547554516c57714270516a544a5479716f523447697569526b677075574462534744564b767641765655546b6564454149795437655a747a456b6f357150704c68423272725630654546783371713150544d557a645074726f75526562566f557434644a454d55486f647463614948763746523672612b34323077773152366e354259747075504b43364a752b5a4551796b444757654b44785234714247354479356d42794b566e71676a7147716a505245645343414a6f793470534659625568455379514c6c554a6561746c596e434f7551595a4f71356345424a3446444c425267464f5343454475553571533442527663674750616f394f534f47435874515473554e54795264687a51306f417a4c6236624d5275646f5a5933563232503841554151656a324a4741786f7570475241636e45726762666f625478585a6a634a6a54486e38304630366832584b39653674752f30366f662b307270526d596c5976572b72614f503165397149504f2b6e33664a76786b3943644a374451723246696368326865466431362f5933764f733270636d6c3355516436784d4d4f437438787341566c74584e5059744d62676c534b41364a503159634678763873694a3749547a6a4d66454c754e52355a4c4836335a382f593351636f366833562b5344357446796a6d6f326f6f343051494f7270474b366d7a394f6b52356c787746763949324d626350506e347a3465533749684735524278626531764e2f53676536685634325734303956732f417273773152775468337167386a647454464c6d6f646f516e73345850435252657a4d684c7059456377714a624b334f6d6d493435495041334953745349495970485a6573332f6f38626b4874317559385635613543566f36446945434279454761684367414f4b59426d6442484a6f7666656c62654e6e5a5762526271675a482f586e334c774d4947354d5146544930347236474965584d325934526a473344736945416e5963566a7162337173577245656e7936382b487756706e63746c717154334f6d6b716a322b4342593351664150636c6e4f656b74536a666b6b2b35474551422f4b6e74735a4364796b5976636b6555612f676738352f6b39353978477750445a684750656172676d4f61763365346c75623037307147637053564246575164586233504d7436632f6d714c62787037555362655274654a3262677234776f546d314548633242456f53493455586f646d4e5671322f365931376c3562306134626c6f6a4d616c366a59313238422f444642627574774e76453343485a655476376d5679354f365936645a385041666e6d76565839754e78626c6179495a2b43344872487030646e626a654570534f6f526c7172512f755163474f34612b584f6c6453786665516a494c7a3035744a2b613657326b5a7859436d4876516461635a626a2b6e416169426c6b764e62364572642b586d5972314f334974394d615a392f34716e314861446557586950366736687a484242354f4c3472664431433947336f675747576c5959526c4f516942556c6c3135656e6a61614c6d4e576c7751504830377a49784e362b645568713067617366624243397366746f6956755a3161674b30703863314c66706b726b5a537658446272306a532f34725a62394a4443486d34486852416d7a396145426f3348544d59535a78333572547550562f4d2f7037542b704a76466b75665030727a4e344e744574523768344d74327a394e6a73397a657341677a306172526c6e484e426e685a3357347153497a346b4f472b4c4a6a506662516174567563666a2b436c2f77424d6c4f58586530482b5667336370623949755275442b7047344f2f44346f4b4c6e72586e572f4c7677684b4a7077495046634f51414b39467476513462694e793643315a434178646c77397a59756265346256774e4965496471437531535337316e627830784a784b772b6c37614a3158726d41384b376532695a44677943754d6570774b4b2b33675a414d7a4a2f4a456152564d2f446f6a346967792f774355584a69376273665247416b4f5a4b3464703136442f49626b4e7874374e38556e442b6e4965335a385635794d794547674d5a4f74316839504d4c6e51754f47585132733236632b4b4471656e474a767a773651334f76426239385263734d42315236753173567964684639784b35483651336136376c6f323573355165557637323572694234536543486d552b5379377a706e7048475379764a7553432f637831585a4748566d7250546476356b6a4934443572563652624559586273736777375550532f4353324a516453374270466e4c4d6d6876764c365474706b63644a77397963454f5a48337130394f4570446b45484e33384c56344756714572636f645231523030517457376d6e574d4e4c703939496747493670536f4835725661734132744138576b305159626a584a52382b656b486a7739793647787362416a2b6e4b4d6a2f4566776f6c7432504d7478457743775a7063566461325673593234672b35425a4862516850554b784c6a706f343572795071573147313345375977786a32466530745759326949786653764b65743270486479595566542b4344662f6a4e6b2f31622b5947695034727558704333624d7a776f732f70316a375862517466554f71586573662b51336a44627774786f386958344d6771506a77644276335a30584368754c6b61786b566f68366c63464a39515164547764595771666f7472314f586e5737756d52486830762b4b356b64375a4d514249366a6b4935393675687662317330427033494f4666737a32387a626c535561484a4949316f765162363739395a4a6e44544f41365a3865522f426566384f534278456531453536634d46514f4362566b5546684e4d614641752f596b4a625075566d723234494c7469644d33344b2b38595172714a6c3846696a4d786653674a617a5846415a585463784b6b67545565354b614a64626a6d6773716345687550544e43454a2f53727674627077487751563235434a64646533367244774d7777584e2b78766b65425a6d494f43443059333173327a6f716374504661595368744c506d5873645056327279734c686a685438566f7562753565614d6937494a63766e6358444e614c5a464237565757464b72554f696f7a51586955612f4a58412f4835724a435773567856385a616941653942756758746d4a796a4a656e32622b56624f4c776a3841764c5136516579587958716471436246766e475079515773394f4f4b462b5974776b526949792b53666e78566432486e5735787a6c456a3330516561336d356c5a746a513337302b307565594e516f2f77412f62696b76786a6374316271576661532b336b47774f50636778663541534c2f634678674633503841497043647945786759726a7774796b5245596f46454641537533744e6a617467537534444e6170375859534477755269636448464235364d58706774424174774f6369756a4c5a323554306832504374536d6e36586168684d6c736a2b4344697536676b584c426235323745546f6e49443846727437485a54693575596f4f4a4c707a56526334726f6571624b47326b425a4f71424472426a564177664a6134584a53416a4b374e6d624767354c4a437041376c314c4d49516a71495a4230624870384a78726f7039574b32523274726230444c6b334e35614e484d5278437474376d77387069374f5038414d43516736526e434c366172487649695554456861376477584d62734a6b2b39533543517877346f504c37713249536473666274586246697a5963524379377578546b61386c7a3964774e567837366f4e3037377a59424858355a6a58446e525a4c636a6951726f58487161396c554852686375506f4d7a4c6a7943345871653438362f536f694e4d65774c667664344c4e73786a2f79543430494334654971674d6a6d6a462f656c31505250476d4b435057714f744a55464d374f67694d4a6345644f57503549514a695851576963534f72464c4f416c574b49446e4476775638656b6353677853476c4c69744e7932377a2b437a7342514941536a524375614c49494755434a47544b51446b52346f4979486859723274722f464e7559417a6c505531576248334c7965393270326c36566b34775077515a77584a554f4b6a6c3951554746554179523163554342677941776441586171685a54476d614c41386b43696c56436f6945472b4779387a5a486452424d6f7a306b5a61572f4e59616b4c3266702b3046765978747946626f31532f7742574877586a4a784d536757714c4b596c544241547a513755445446614e6a742f754c3062575251554d7531365836614a577a657578643841736d3732596a752f497963447558616c7572753267426f42487843444c7666544c656c375a4565525846755739425a367272584239785056666b496e49636b6b76545234725a64713855484d455178643356624d46327654744d706b54417a787858587662613249467350696738643461496a4264793363324d53317950566e536e7656647a5a574c31304377656b346458795163615262424b506775787650534c3975486d5248524556725542636a385545474b6a74696f5a4e52446d67696b6b545642754b434f79674b6d50596d78515457525236647174382b36497447636d37565177425241797951577833463446784d7632707062322f384139795876576567716832494e4d7433657541786e496b4848755647436d6f6853707167613058504a644378735465367a514c52732f54664e327875794a476f30484a574861334c6830796d59784844396944526139486a49644d346d5751645a78644f336e6f6c552f43694550546f5272726d3450444a4557327578684c71597535785a42624c654351307969414f785657665378752b755245595a644e56306433736f5173526f3464696531637957786c4f564a4d6775766634354976356375357356784e7a74626d326c7075426c364c6262532f4174433954394b3058665450754c6b6463716756376b486a585930525055654336487133702f325630614b786d4e513563517345515a6c6e7751442b4a526c434f70544642425642305764516842447955636c416c6c415367675a486b6c4f4b5a67634167564e6a6a5641425131484e424f314571476d434341315a3148436a4b79454e51306f4267354b733176525857746c4f5131454e5432775755327a4531515843576f3051456d494341365453716b685669676155364f36545563596e424b4358624c354c66593264693441664d41503853444c5975534532347037387670486575704c5a3765492f6f4635447171754e4d47453277515a325a526e567534686f4c63617173594f676d7374696953525230714c366b453542523144676f546d45424251376c4378514f43413442444251635645444f394543324b6a3856485a3649476f365752446c6c435644516f427a4b746a6245675a48424c6268726e4750466c3072396b516f454532323946736d6d4b33326656415234514f617777334d4c5166534454765365614c786149306f4f2f44646d35574942504e5a622b2b6e613668477553585a325443704f4b6664574a6b73785042427a6d334f396e716e4c466262507042492f71584161615233726c2f774261334b686f742b30763339516a616b4433494d7671486f317a62764f4c53695030354c6b737858304b7a485646703169664646714c7876712b302b3033553751647670373047416f455a424d5938554479514173436f7a714e52426e514e4846513178537563457a4949534169617055616d75534173586443504e5246324b435949416f6469495152394f43447136466963737679576a374a736330474155544f3153757048303079366f31545332424d656b494f52584a48426144746267505245704c6c69356150574b6f4b547a55624e57614d7a676c4f4b41367977424b5751794b67634a76464a3830472f6277416a7a2b613656675663344c6d324a433377572b4c343855467537737631776238567a504e307961547273656262494157586452746a48503855484d6e5a45356449626971726c75726356766a5945694e4e535674746245577871465a63386b4845334730753764684d61524c4a5632375a4476526575395932594f7a6a4c475553376e483372797a617967736a74376336526d7a3863452f396e76694f7568484b767953523231776b616172554e78764e7648413663484846427a527337786b64496372527362747a5a33646368544e7869464c6534334675344c704666355664752f55495837656b7761546549494e4671486d377946697a55484673737975684d615a47655a584a2f7879596a766f334a6d674569663970585776334e5231643145464e786e37436942334a4c5165574e455a79494e4d4541315945355a717752786d4d426d7157634d4168763738724e6b6a39585367356e714f362b346c7047454b65374e5943534d5645327171414d346f6f52546b7262566b7a4c3846326476364d4444564d2f796842786f577079434537556f795972766e5a51706c6c334b7135746870777141794467696d495579573239743272425979474e4d5541714b49676b46316243794c69726c4270636b44782f544c4e43395a3875576b476d4b574d636c736c62315758474d506b676e70306179494657572b51594f416662397978624870422f426251504c6a314f6770754d53446c376c67334c4173417568636d414f41584f752b496a4c4a42514b7152345a49755456416c424938564b6a4243694c75676d61676454424c5230442f414970564861685237454551417a4b49716f63454856394831617079677a6a4264326671466e6268363967422b61386e74377074454e56325857755246316f5342494c4e782f63677375657375576842686a715666397a4d3856664d626662306d497375564f2f427a704766536733446436366d6970756e7a793552326c6a7a75736a554d46315a656e5468624a694759505846427a426668743661582b5330625831574675576a5134504368574f357470334a3473723976744e4578494230486632323531316b44486746726a656c3574757448507843353175576b786b614d746c6b36726b546b432f77516434795a597239375a332f414f6e644e75522f544e7678576977645556527666547247386a2f566943654f614479642f59522b376c593254694e444a3668332b5336732f524c4969784a316d7572566d7456797862394e743941446d6e5469744e325833466a7a593542776738335061334e764e6e31444a6264724456795631736a6662534d77326f664e4e74593135384548513238577777577742366c6c6e73523936723952336732646956306e4434386b486b763873336e6e5878596a6862783753764f734d63303136374b39636c636c557972373075746b466b6561627343726a4c4c4a5857794771674d48414c724f776648506774303447454979506373544238615973676d4b496f6449516a4e38513649754d6643675751303077534d68496b6c30786f67474937507858523950325a7633424f586846566973572f4d75526941376c6c36613144796a6f48306f4e3175314b63514967734d6f30777a5630625534347849584e50702f714e38613433427072684c38466d6b4e2f737a2f41464472682f755164325136514d6b3450746973473233706e4471476b6e697447754a693478516137636d785769424753355133634c5a31584a5577384c30576950713277694b33522f746c2b53432f6368344e6e6b764b2b7137434c367869783936394a483158593354706a657848365342386c6e336b49584c636f767148306f50436e6d6e44594933375a684d7849617152754b4270396e3731305053393062516c44493438317a645a4954776b5157343845472f6379656f6f4f437947337a572f79355851444166424c4b7851303730464d62485038304a6752686f56326a366852632b6433676751687a7a536c45504a4c383042356f684247726f49674156485a544642316472754445645a3656326264324d686f6b777052655a735372704846645062336d6f7944734375425542306e555432636c5247364a4144334b307a63455351636231697738764f69476678647135492f69587137384264747a6a4d4f4a44342f76586b7a69306b456f454e534c6f4469676950466b437069676d43746752413956516c7469764a62333273496b4e7134484e30485075474c3052484c464762546c2f54425639765a584367625933424734303850785133746a79356474654b364e6a304d334a654d552f546a3856647666546f345843585a30486e6e346f4f324b6378414f6d7058567652746d427454322b6955576155432f374548485a544138566f76624f396247737749686b733443414e6d6d77716c777855636e73514d634f61763265326c7543577769714451726673625a6e47555268303449456e5a4e6d68444f75707476545351444b354f4d6d6355594b363573356d48394c5447492b71542f67735933473473792f2b3469584c4e3153487951644f7843646b2f77425335724c3942787077585275524e73435178627558424f356e473545534d6463694b59426466316165697978494570454f334b7143673766633767743978702f68776238306c375a3349654b2b4a455a4f7550666a64686478727a6f74747135764a6638414c616a6548454d2f765157546943435a566c79775845395273655850555251354c7458626c794e42624f48684f493731784e36524a69596b483845475271596f4967305a54464141697a3151525142454f4b496377694331554177706b74657a414e796857594d3675323930774c7658384548707654492b5a4455634166656172743234794868775849325739326b4c63626362735251644d6f79787a637375704863526b61536952794b4239316238327a4944466c34376532337246657a6e4d524b3874764c746b4755415a616e30783068427a4e4f75476e366c696b47504e613579496c7172546973737a714b4245572b4b434c6b6f49774270696f4452524b673052756d474373473670683765355a6341726242356436445a4c63786c536353734e7968365174734e4f4157666352715546424e4b495077556c79554b4161553157594a6141714531515148696f436f434146414542484241736a544753414b43457370696d4c5a464d4c5a4e5269677241725647693032396e4f3568556677713666707842306a486767775934496157433649324a69782b6170334e7531447775534d55475556514a56397262584a466f784d6a77307254483032356a4945666767352b436a354a377471567373556e5a676750616e4561676a696b726e696f433145486673533054647741565676665644502b6862384b79584e31306163316a7a6441784c506b6b4569796d6d6a5a7252746470647653614e57515a316662326479634464794337757a2f414d644a36726a646d53365a394b4669426a6a487861575165487245712b334c5547484658372f302b65336d5a43735857534c4f55476f524c6479795849744a73466f425a4b59695455515a565a45444e6b4e52314a4547753149784c35594c544762526346632b30573743726f303655472b4538385879585168654e4f4476775a63614e7a71634c7057703668516c4279665549694e32584f71794371364871594f714a4f444e525a746e74356271344c597a492b504642585973547658426269484a4b332f32332b706f4e492f715a50366262386a63534576464148446a79586f4c7532387a544a326c694b6f4b4966343574726b5470755331415a6b592f6b736c3330653736664b4e7958586242792f45496a6258484f76642b58632f53656b652f7744656e7477336c7432334d4c3054517831616e2b43444a366e636c757843455234544a632b7873626c3634594d77474a5871646a365a4b4e7a56497543645239735666754c48326f4c5645616f4f4664326c7545424333614d2b66446d755464326479314857596b444f6937782f7944795a74354474334f756c5a396274622b42745369314b786e2b4262356f50452b57636543727a587544365862685a7551486938756138515256414752646c4751774b434867696173685531554171676d534e746e42646c496d71594d554854747a3069504a6465334e78307269776b596a4e6239764d6b364a746767367a7558794878575431553674704e384b532b4b7545795279565739496c597561716a793666376b486b52677937586f4e34367057526d4e5565304c696c325674692b6246794e7759784c6f50666253656f504c6956736764493438317a4e707574766459794447593134354c70783239736877537943364e3059562b53614a313576453950464b4c5673566233315663397735307779355551664f4e3559473376334c492b6952696e324f323832596676344262503869322f6b3732556f595852356e2b37397131325952743659527769673651684553614f4461565a7179564f32426b58772b43315274534e525876775145583949357134465661526d6e4e734e7a2b43427361424e71314656614935594b7a545669676b6a6b56355831327950506b525579615834664e6573504c4835726a622b7847643576726b425867487167386c4c47716c416e76572f4c6d59384371794d2f326f4f6c2f6a396a7a39396147555a612f39746677587372377a6c726a693634482b4a375a35586239614479342f36736663793738356d755861675033416c6c2b64457374785a493673565847327854537452785a6945426e754c49414549476e4a6372316e646d3373794d44654f6b667943702b4b32334349682f5a313576312b2b5a626a796670744152373853673548617239724d5737305a6e415343704876526442364b5737687549746672484773666b7565615270677935336d534e4864644b37632f70414448535063677439466b664d49487346376a61482b6c422f30522b532b652b6e584e4f34344836563772613775794c56762b7045466853556d5078516445466c78765835675742484d796633412f4a64453769794f727a492f3767754a76377633637959454745526f6a774a7a503449504b37697a774277376b32796d4e62546f342b4b366b4e704d7365437a33396e434557307463787878516262557a332f55745537677432355849314d593675543464754b354e69356831594c6f57644d68704f42346f4f627537567a7a374e2b37474d4e656b6a543848357273787378753235526c3958756f4d5668333171354c54536c76453471327a655a6e346f4c7266714a3273764c335671564e4c546a567832594958665762502f54743348357448383130495877594d3365567a4c3967796e717434673950424272394b733349475632372f77416c30367063514d67727655725568356536737865375a4c6e69594e575050325a63612f754e384a6d666c39342f657568742f554e374b547974784d44334549495056646e636a2f56654d76307a6a4c38416d473974582f366579673977394f74693065645771453132456944496630795477663572565930786c3034477644384542685a6a7437666c4443492b4b346535326733587146326336694d49796c32734b4c767930363863317966542b6d39646d66726e4b4e6557434249625749384d514163424657694d6857497752386b31305956527479496e706b6759737a444a4c354e6541434276784853486b6c6c35737a71316159665637666d67782b7357504c32517a6b626c54334c7a756b74584e65723346363365334e6e62797262455a507a63454c6d656f2b6a797376637331742f45494f54476d433657786d544c7137317a684b6d4332624b5447524f654344712b6d796c4b3564375973753966746557776b4d7135317a5754304b37474d4c30356b524a6e6a4974674b4c667676554c6475784f634a784a306b44717a4f43443539755a6d637a4d3856575331436a636b4a53635966464a4f5344722b6b79457264324234786b65784732504a755468774c557757445a377337575a4c4f4a44535672383858354762566f394548547433594d524b6a354958414b6b534b71734579692f7356717478636779346f4d6c694f6d5275546c586e6c772b53364731763235476b68515a746d71373370384e3531784c562b41664a4c6239434f7070544a34395044735161397a5a6c43635a414e7144386c71684336346c4a6d39367147302f6f65555859654869456c69386475384a3151624a45526b48656c567a376c714e7937496d72584449653558584a6c6a324b6c324964426f6a4b70346c5a5056374d622b316d66306459562b73537743792b7058764b32637a4944712f70343855486b52534b4a55456e4e56626f4251564e526c32746e644f3474476239554d527979584d6a5a3130436659332f414c6538387643664567336275586c3761542f5552474a2f4263584e656d39633246324f7a74336a46672b715934617346356c336f6759534c736f4d535168715434696d5879514b656543426b43644f5359394d55724d674244596f36324b4146556330414f4b7673574a5853497778535650344c3050704f7a45476c4c452f4a42627450543477367946307264696d4c6a4257694c6e6d7234304442426d2b32426f522f745848395639496a4f4a753276475070586f47307866325a417669794435314b4268512b785477484e646a313359364a6134426766785848694246676330463048657543304370717172567833417854796471596f4c4e59456e48633673673863617167417530753557514a6a516f4f6a4239424431307958724c416131456349782b533868596b397534587130684542657773334263674a6a416748336f4862495a4b634837457361344a6932614479312b486c327742394a306e6c6975544b364a44715074334c7665715734585933744a66435650314c7a38324c556273346a3971436d354357347766534d48566e7032324933506c7a3851666e56612f5343504f3053377535534d507439365a794c75586f673066323664796a366a2f74556a36626f6f5977433656696362684d6a534977567432635246426a735772634a5230354c7037726178754d577a584d7454417539525943754749585a6a63746e36683830484a6c3662626c566e35454c525a327349306a41413450706f6e38794d5a474d76337256614c785156477842326e45476a4e706f76492b6c624b337539784b33644e41437a4c31573733413238544f5741636436386e7464324e6e633832464a2b384d65534337314c3032337335784674794d53363531792f724e5671395239526c764b7a41456854706f7562416361494c3962304f61513350636f34694b464c585041494c44634f49616e6469747533395476576d4d5a6b674477797735726d5959356f6d736e51656c74372b31756d68506f4c5a34667354587653346d73574435354c7a596645344c752b6b2b6f7532337538656953445662394b73514453367a2b7244334c545a7357374f6e5347637336744c7368684b4a504642356231687a753536736c7a79636c6f33383965357553503669732b4f4343505369654f437241646174685a463236416342553979445a7366545a582b7557433746763075775046716e797757717845434934354c554b4238366f4d7364685977304275797676576663656857626b656a706c6b5858576758495632416f67384275746e643255744d782f7134717353793472334f393259334676793534664a654a763235626534624d2f70514f413563724e65746d423731666c56516a56477455475455677032715551527a697476706c767a4e7a62697a3963506956684f4b36766f524133747257667134746c54346f506f594875587a372f4951322b756a2b5835426651415634442f41434f554a622b345979444e48773969446b4568474a795177556269674d704f55496a4a4573634d45726539424d614a69475177716f4844494352775274776c4f51674d5a4d4233705858562f774166322f6d37754a6c6844713932434431643259322f524843496a4566364176462b703766375863536856767a58724e314e366e32357267657466314247663152365a486b634548467877556335714568537143426c32663841486254376956772f394f4d706667754f757a2f6a74787430625a714a784d667851585267626d384e2b656452376d58577451684f424a69715a663070792b43303763445167356d35394d676670786432574d62453270616f7a6b47586f744771674b7a37694563536350623969446a6d78633178692f5649306b426b5675334e7539596c6f314f4f476d71326248626d6477585a43736644796461392f62486d363272703766596f504d66646259764736342f302f74576f5739704e35625735705044416646614c3278467731694b56706e32725461394b32307136506a54356f464f39744730647450554a5469414f6c77636e37797648476862454c3642627352747a6a4e6851616131396d586b4c74683458747839506d615939704c6f4f6332525331785250425369414e785550775242414369414e56676f464477557751516f344b4f7a4b4e546b674c2b3544776f4f77554a51476a73565a5a683568307173597375683654747a66755462365953506567394a61674274375147476c564e6f65597853584c6b7262524c6d69574f34784573554576586f5242346856626474666d547a4f6c2b4470705849584a61726743797a74626939317748543771634548704a5146363062522b72504a636a7a50747a3564313851306c52744c75374c694d3552493979364e79314b2b48764d5a697268413171514d756a4662683041796a6a4c344c427472326b395869576b335249466a33464279763867746562474465495038567834624359424e654a346356365738504d4a675771506d76506573536e5a335537635a45596371616543446c7351574b56305851434348436968557a52456b456a46384642326f4847754b6a384542713956432b4368624c4644416f49374b46386c496e336f4f674b67646c485a5232514d434939533162456d6434526a3953794c70656b2f386f6c322f476944304732456264756c466b336e70554c306464756b7543732b386a5a4145336f474b7a5866576266686c624a35796b79446e58746a64674b514a624f4f536f7557792b6b67686432313670626e5879326c6c5846616875756d73633850336f504b52424d764354334c6f656e656d7a33467750466f635a555776636575434a49686141493470396a366e646e4155366550374548624f307337537a7074414273546a374f563476657749753138576646657a6a63313434454c7a5071316e546345323854386b484b6d664d505a7856656133332f54353237586d6e503663317a30424c5a49344b664a426e46454279553746486f674278785148537968696f7a596f6767596f4a7059556f675278554e455452414f53426276557a522b53414f6f373054475076567531633341416757785335476a31474b3942754e734c6c7769476b5277385076584e334f324e6e524e6d4a4b3657337678506254336f4b2f375671784c2b33745657572f5468624f736c644733644461686a78575063656f526a526e4b415752706d474e506169366b657133556532433839503151322b72534d56645a396375526a7045427a5a427575625731636e315244783430484a58574c6351544744663656794c32356e6362554d667756316a637a685357574344307475485479584239643230626c367a646b4b6547584e644747376133784370336b42636748314552775a6b48473954744177634d4967644c4c673472305734684b4f7a75536c673443383633765145594b42526b4355456f555379464d55636345414b4656367638417833306a62622f62584a5867383952694b2b45616351764d5467306d6642414252444845714c5a7362423346364d50696762623743647a7049717576742f536f32794e5147533656376457647444724972682b7059342b73324a34356366623234494c6a5974776a6f6841636c4259305342566c6a63777543683747567574687143437357476f4147566c757a7757532f77436f57374963752f414c4a4c317534346a616849667a494f2f4461776f3955312f3071337559615a39784b38395939617647555869545771395273747a43364b4f472b6b30785165473952394d76624735706d4f672b453856676c4266554e7874346275333556344f46382f384155646a4c59337a596b58474d4f776c42792f6b6a704977376b3034674369757557394e714579616e354947682b6b72714357714c384179357531715153757041764838776771494450556f7774505771636d5673595a5a5543726a7649673958376b416c65753763634a446972596571695161356c56477a76374e7a706d53787837736c6f46697875434a524159697674696736643365324e337469484868776571387461322f6d446775376532486c51506b644c69725946637357376c6769444d5363554478326373487146304c48706b324175534a633147546f62532f47547637786d7571626b5978456f2b326141433343334767487a586e66584c555a58414c5551446d3342647137754a446f4278584233467a2b735355466579617a716845676d51306d533246376b644f53352b31454e5242784e56767554366453426254616d6a5833657a4a32365448695656626b787764575265725634525157786948464872697556363164387a6336426845414c71326f5a354d645863764e37715771354b58456c4257437274766265516b71347766386c32746e5a4169487843445a73625130366a47754b325275475855526d68434e4877344641544246535544487250425538575a504269574a5a4852716b425242696e5a6546446d756275647559696771765152732f71727943467a5a526e4370777230346f504c57443563324a576e6457786a477158663758375735704e507139366c71344a7838766967787859466457784147456a78444c6d334f6d54634d3176326c32524651454457624d626674565765486d366b675154494b515065476f676f754179655752584f76426a7042646235303659726d33443149414278557851436d4f4b434e714b4c6b344942462b4b416338314561494642434b5655647777554b4d61494145344c5a4941313731666132766d524a48356f4d346c566473536e4b33457878456356796a594d4c6f6a4d4d7651376661644c5974386b484a75577a4d3958357157396f34433768327a4f3146524f786f65517167543076616a7a4a6342334265767451684f41494137563558302b554e73535a6e4665693247346a6368704655484e336d316a624e652f76564268626438794d497270376a63324463386f6b616d7146352f63323532706d5553644f50374547364d4e5064372f65757074413869546b76503239794e546b5647533942366249456b346a346f4f74436756697a68383166453051632f3166627975324359654b505546797638663365714d37457a32426433664f4c4a49786f73566a302b466e2b6f504678515a49572f744c5a686c4b556c70327474713545704e35455375527463395330576f31667551624c55644b38622f6c507142755347316a6b64557533494c316538334d646e7435587059676646664d4c6c77335a6d63735355436330436330326d71456735515370784b30326f4f65315a346338467432514a6b41612b314542334e2b756c38417979632f71567437714a4a48616b616d487851434836685253636c4e42725656466e6f676a35594a516d6a315971414f616f4f6e364a61313374583651363765394679324e647533726c4a5976524969455a36766546364b316245764451494f4663395439513230584e6d4d49697548375564742f6b30376e52754c59493478433755746e75625a2f6f796a704e664370474f38694775784248476944446374575a79315777596c71465737657849755673616a7a4748494c5a5a746744704655484575324e4c366f2f42797378762b6c37647866694a792f5445566634664e647a6462634e725a7a6e7050795842334f79394e4236784f425036587238435547757a6439463341307745597949776c716a587477566b396c5a7364647036393672732b6d656d33347443334d55784f703166623248322f674d6a48394a5165573958746465754e467a63634636503175316f7375654c4c7a626f497a3971674b6736545244436e42427173372b395970435650676a4c3147374a5a42676a6767667a5a7a38524a5665624b596f46413841376734414a63566f7332544b334f356b472b4b7a452b3941314365536c5147535970685241487a525a46545531516761456d4b325735754b594c44476756316d62486967374e6e70446e4c344c58626a71437778496e485646573763796a4e34303976795161355230386c7850566241747a46775946647731687850775750637738327a4d5338516a7143447a776f6f7968693155436377554578554152356f427a5242312f547469626f66384155363645765459527047323537322b616f394e764e5a6a45596730376c33724677584d58376b48436a7342456b6b41484a61726578307945774333387937516843474f584a5a4c3179496c6f674f7553445636625a68704d75355075647062764468697a5a46576245474e76675539323735644a5a386b4841506f313263734c65714f626b4f756c74646c4f45656f51662b47744f6130526d354a5a2b61315250757069677a58624d5344475163455963563454315461523265344e6f596331377139507147626e357277337256337a4e35634c344854376b48504a6644464675434c49616e51444e6433304f4d576b63364d75473772732b6d585978442b7a6f505232726d67312b4b653575497656745038414b75574c3730786b734f3675796e487934305161665464744465372b5679524a74773668776f7578363374764e74526e68474a6a4b52344c6a6262316d787449694562636752546b546d654b33585058376436327774584a66497567716a4f33634c7a496d422b724a644452627473597830302b6c65667537533962683538424b494c76452b31567132643833414e62507777516242624e2b343151446d764e2b71365465506c2b4632486376516e63517447727637594c7a4634536d544b51343971444a6d6d4548384b465161706f79306877673062665a2b63376e4257584e6d4974704a3731585a76364365615364386b45494b5445784a48424b4b4a7a4979726d6b4342374e755677744845723048706d7773783637306f67384c6a4e2b3156656a374458455853326b796176743856316f2b68626345617a4b5a6641596539414c2b3132526378765758353651506756565a685a38794e75426953586a2f54776648327174635051397047596d49476e306d542b337379532f7743565933646978617436577230486a6d667a51614c376b566f754c36686673575a794578726c5367794b372f714f7146754f694f70376b59793467496275646d78624e363642586c55307851655976626a61586739754534794237566933567532496b78786450766655626c306d4d535262796a3742594a584a48784630416b2b4b4c50676d6a41355a4a485955515138306f596c4f5334536b6f447a43654b72787854516a5771445842786d333471306955777a4f796f737969615a72584470485a2b78427a4a776c45736f314b7137645468493946565154526b412b61474f434a71464f614153527755487a55514236495964694c4d693346425a596871724c414c5444615375345a6f2b6e786953524a6250744c3853396f304f4342663752754c505845344932392f4f482f4953543830384e6e65736b53767a496a346d315974674d306c726261376f316451782b4b44515945675462704f456a7856634c2b33743945354e78476c332b4339464c61516e5a4547364730727a65363252323979586d5231524766795161725737736543784d3134342b396c716a746a704d707565654b703950743259783641753362364142772b5344796e715732476a574d6c7a646c6131336f78496345674876586f2f554c4a75516c474f59712f484a5a7653396b524b4d6a394a487643446a3732486c3370775a67437a63466d786368614e394c7a4c39795847524b7a6a6b674c38553049536e4c534d65436c6d7a4b374d57344235534c4c324778394c687349655a65443348725232376b47543033304749416c65424d7a6c6c337230466e61573751614d5246563276554e6e49663873587736756c62644130754b672b4569714266626d6d46517a66693656686e524e5446734f43444a75396c6276524d43472f617645657162435730756b5a5a64692b6874484c755849396532766e324e546455505a6b4869726367656b684e4976345656476871705046415a41697152585277304b6b75636b4542597572487a576737545461426b612b4c75575974373046746d587758553238437935414949722b586575745972434d6955436571782f70686741306b663841486f617230354d2b6d325a56346a393676333176565a6c4c366e57662f486238595835516e547a4936554432375274334a4141613563463648626e58414f3947584b75325a65615449414c54744c357448512b4b44707932467535342b726871717953357474747471776845543543716e334a413663547a5a63343737622b5a71334d6a45414e454d652f4a42323970463450676d6d4250704c474a396d5850326e724f32306d4d5a694d5166714f533250432b4e567159662b4575677944593359645733766163394568714837755330513239365856754a526b663459674a4e707574596166697757386e534b346330484c337430574e7663754f33524b4d653072776c36334b314c526370495a4c323138692f4f4547654a6e386c356e3132516c767270356a35494f6141374159707758484e4c475248745248552b43434d4f354b42524854784c4a346747694374694544514b386a4a31586f61736b473279486a4538537474746f6b4439724c4a74515442677464754c6c7553446f576a70413438465436684b4d62457a79622f7742537541654969566c39557074533163427137332b4b447a636663456142414d79424b44752b6b792b35742b5449395676716a2f4b6352335972306c69427467514d713971384c7462383976634679423668385633397275626c3843646b687630792b6b6f5052363942416b4f6b3572514b526543776266566368706b7857323264493549504e2f35565a6c2f51765a6e564833467773316f2b5a463832376c73396433766e585073496761496d4d70537a45767962465a4c45524f30426d41676377383534676835593155486f2b35694e646934334b4d6c6c763757486d615a544d5654486136434a3237344179725833494f7059335737747a467663645657642f6b7578356a572f4e417739363431727a4c6845356e56707a586468612f70434a4643506d6735552f5564304a66304c4d535034692f354b364f373952643731694f50306c71653872426475627a6239466f785174623731474131334a61674434534b2b2f44346f4f3335346c45305a6c6e764d4775634b4a4c4e383769496b513336686b6d334576365a4a46527751655033622b644f6a564b6f3849573365376537626d5a33515271507a574d7367396c2f696a66613350357a2f414f31646d5668367861764663503054546132567551784d356e334c7032397a356a68326c7a7a346f4c5a625739495978564f347578322f535458356f584e72757235706461504c42556a302f62324f712f4c7a4a446d67585a786c7562676d5131754d766c6d76483736386232357558446e4b5339483678367035646751736a53626a2b34666e6b764a456f49795a2b434159554b426f6750795736354e3763522f4346697756786b3848514a5a4f69344a63463164357534754a4e384175514777702b43747633504d496a2b6c426f6a76596767517478725371374e7658614168634875483741754273594335667436734e5139777858714a534f6f7946596b394a5153416a4959676e334b712f594d78716c58674664474d4a4d376176696d694a74704658787951634f4d445a6d5978782b61736a646c4278484233374674334d5072474b35317937463949705242327766754953693472457349342f46632b312f55674468387952524a74623574536f33566b6d68666163676144687751624c4d4a5a6b6c766368633339717a50524f764c397974747a426c565a7655646862483965446955545538753142646139536864687146693549413477693965355844314b46756c323163747750314750755675326c6645424746326a4447494e6678566c793775534e506d7561564541506545456c6568754c5a6e626b4c67485038454c4473337556566a303246713535387954636c586750634672497a5153353052645a6f322f4b68714f4f5065727239793345645236515679372f414b7061754679576a3457346f4e55493473616c5658626b4c516534637175755a6439566f30413341357059794e37716c69654f4b44544c31477a62365957355437614434494865626935536b492f70437130317052504b52486971554776626a55645948584877793463565a763841652f61576a634e5a5436596a38537164706469497935664665643375376c764c68757977794841494d39635674326371344c49655330375a336f6737327679396a656b65727147504e6c77723933585341306a7343366c323570394e6e4766315445597268536269674272696c4152695752497167426f7447796e4b424d6369466e6b444253464a426b4863747931557a56312f61334c37615a4d417566626e555a2f42644b78646c49434d63446b6771746a63476e6d696933573537387859547479626a512f6768445a546d4b68583250546a5a47716851557a334f2b5a6a61696634684c38316f3136764679393632476730346e6b75635a614b6c415a4671797a384b6b584937565350366b7a4c494b374446424861576b466c79505874302b6a6278726f385861563062743857524b3466702b613878667565624d794f6142594555456c64434f5957633571794d69416732747878483471324f776a667632726572534c6b756f38472f464a6275655a41786176755462396f325166314950532b766261384e6e4d5433414d42394d6f78477254566e342f6976424f6d666a56414277376f4949703449637852515651504d61656c557536746253716947514e464b4f314e71594d456f4a515757344763774d31375859325a4333453574376c356230714d5475424b36644d523150324c316c6e66575378684a2b394271416f3479545146575753377634516a557341734633317155442f51746d522f697751643078303146554b487868636d7863334f342f3841754a694f625263466237556442784a484e426e395832336e376331717a6a7558686e62784c33322b6d5957627039717278453975574d6b4573796355785639566e67473746634a416f476b51435852684c4d35717645317a39797342306d76734547793149694f6f4a72303763432b6b633866774b79655a482f5638456d356c72376b47727a72656359742f712f4e4a644d502b33476e38522f4e5975525336386b48707471664d324e786741304d7353754e4677474a6f756e36584d584e70636a39565238467a43534f6d504948745150736273624e34536c68683738317633396a5841584934506a4663573637743755545774314b4a596e6f4e434d6d51647178504c397132786e4751306e4a5a4e45594e496546563372736831416535425a6332497533334d6a4749445046626f3743323275627a49384d6a3766466351584e314d697041572b78613363682f7939334a42303557497a5945595a6f3278634230724e4378757a3472346273576a63586674374679364d59525076792b4b447a5872652b4e2b35354d5430573857584c663949566573794a4a784a2b4b6e4e424e54705879554f4c346f53705241544e522b4b6b51536e4d4a43725537454353504247427a7a55467558637077795150716a694232424745394a63596a424a72494c714357637355487350547435486557654677556b464c317a795979756653415635666162715669344c735333486d757a36746530375856482f715348755a79673832616e55554d4f315278696f41324b4341686c3176526f6170793430584b59344c712b6b3364426c7179346f4f3961695939693167734f7063535872426a2f7741634d507156746a31547a4431305031494f7647364c5a71617158505562466764633439324b78763568314442594e473173793133754f70326571447437626652334c78747850387858422f796261365a78766a426d6b756e74765749584f6d335a6e496548494f744f2f7366646265627836694b49504650376c5a725a5636644d6a453546456d6c554656364a474b72447856397761687a4370424761414d395662616e45654c425650586b69345164412b6f3353476a64755930366a677345324a63464b464a466b41427952646f714b464242555555776f70326f31646967474e56487169527153733641766b4b7230762b4e41437a65754878644d65367138797a597230336f4d69647264412f58412f4e30477663584d414b6a677556755a44797a4362562f426274317742623277584a75456731795163336d676e4d587746455957706d72494b79636b3971374b784d5467574952386d62616d5361534b3151656e32312b573574433550484277744675376f37467a50534c676e593050574d766756704c79364f4b4461642f354971335a6d56686e756f413635676759397979336f2b52654572674f6a694d567473376a6233687031675a6461445a7376564c46795478634d305138614c667537676e626e4f444578443438467735656d326a574a4234365a4b2b31365a43324e55537a7639587a51614c467754646a556a42627259784f51586e6f584474376f674b6734647137734c72786f67656371644f533448724e754f303246757750716e722b433772435866376c3548317a642f633769514867743945667a3730484e5a5163304e53446c6b42356f753553674571557a5151316f6f3649436a634d55455a304d30614d674f614168735368324b414b4f2b4343633132505137304c63376b4a6c7455614c6b615554515651656e76526a4c6e386c524b4e57354c6e374864427445735630693270426d6c663079495971367875623865694d4e51344b3430426b6b6a6575437353422b4b433462712b432f6b5369633231492f334744663841484d532b487954626664626f6c70737435764341315847373047577a653877616f38465a624656563935596a497945682b534d393961735231753479415158323464585557714e52344c792f72462b462f64584a77773849357341456d2b33397a644774426c454c4551516750596c45733352436e596747546f674d6f794134494a696945485a48416f4a71634b55516c584252716f4969527857763033592f6662694e683264556269304c567964736e77534d6663554666616c4a544371434267486f7572366442703653576463714259764664726232326d4d78702f6367743331737651594c6b3359546e584a656b6b48466171696577746d704c636f6f4f527359537433424c4a656f685a4537464d5350697561595274786a4559666d7570746e6c5969334242353764656e45457950666d744779324f694a695365547272583767746c2b4b6c754773733145466c717a4b4673594e4875646333314f794a6d4d6a6b6172737a49674f49344c4a66455a524a50647a516337316d5039474d346a7041303476566559474b394436772b3132386244316b64544c7a784b416f41356f757967706767414c715637314f7852415938537071514367705642455361633145654b41597142516355586569414f6e7333504c6c71344b7368456f50543775333978434d7868706f75586236544c4e54592b71655462387559315279354b54334d4c306a4b41627471673032357a4c365377344b61594146736566344b57716b38426d6c33473231676e4e42585079694f76464a4335614649425557656d663952644b33757263434f6b632b6b49476a754c4676786a464c7470446346342b484475566b59513376565142387558374675746257473363514644336f4c4c5141717a414b3364334262686949676e4f6d4345415759307a5842396676384139534f334238493675306f48395933317539415762566136704663466e524c73694349346f41416330423855776f6c5a3045646c41516951796e4a4237542f44374537646d356550686d5142335a2f466552334e75566d394f335078526c4b4d76665666535052374a3232307457705967664f712b663841724d64472b76413065636a33457567774175757a364c41784679364b734e4935502b5334347056656d3948303239704b4d67656f2f4e76326f4d4939507562796571636d475846616a364e624553386d493534736d33517666384e6f4d5031502b316375653176766a546a716f6732772f774444714358576f335a33514a42633645626e316c2b2f42646659786543444665614c61306b64787437553963363070327272333972716a554c6b663277544f70716f4f6c74665639724d36584d59384d5077585a324f3973587157797544737654626344317744487658597462577a45784d49735268706f67366b376b595359727a502b5732424b4e7264513743655749586f374f4e566a3961326f763753634256712b354234612f614174436239583732585147306e633239493452372b61394261326533756257457051425048735462693535556f452b43585446755042423475784f4d4378585374335771666273574c316661486158394d664365715059724c5a4d4e4f50466b48524f4248745655337476624f4d64556d576d7a49584964566542533347425a6b48466e61387558685a575752636a4c565a494a585276624d33574c756a485a79746e57374159494c74723678702f703767615a2f7178644e656138386f3037306d373231752f44553158785332347451554343754c676735666b7568357571707743783034565674793547417157514e50783177584d33756747576b3153584e354f52666973704f70795546746b48415a596c62416155574b77574c6a3936305150444d6f4e4544704c6b31546b30344b6e7a532f465776704f5248346f4c49394d43634b4c7a424a3146656b76394f3175547a6233504a65617778515757427149354c765133666c78455931354c6d2b6c734a4638786a7757796671635955694e512f6c6f677350714d3555307377542f6445696935307439352b4d414478484e6174744133433434653942624f2b572f695766636269344a4e4639584661723167577872564633632b56486f5a38756c4256434f357546335859324e6d2f617a6c4953385834727a2f41506364772b714a5a647259377a637a303678356d4f4644333565315548573952394c68753752302b4d5648354c78444778654d546b766f6c69345a31617138762f6b337038725677626d48686c5138696735642b324a415352325a6554483936426c35746d4a4f536f737961614475626932385163566d6c54444a624e52755757444442555474686a45316a693346426976446e334c6d7a4665613647344a596957574335356f37494278516269696767686355555a676950636f6747706c42544842516e4e46415368486d6f6142325142796569426f304965713632324a3873415a6863634867746532335274487146445242324c2b314267386d6669744f337543324e4f43467470573955634346584b4d73386561445864766c77733136354b6f6a33666b6b6c616170644c724563656c6b484e75776e636d2b613262506458747231444273304a37694c4552592b33465a353335546d37494f6e596c417931347a4e5858536c6238796b6f6c634462773148544a7838675633747473376b6f61784d306b6734392b314862487172576936767056307446386170647a366364785752714f66424462376564676d5250376b4866684e7948664e3175433557317561793261366343347269677033736847335869456b647843497871466e396463374b5a6a6a5435726d572b6f3172494474516151504d76617a69756a596958645a64764238566f334e2b4f32736d374b6741716738312f6c2b2b4c7732736635704c796679562b37334a33563656365654497573344a474341396955706d6246523251454854686774573065505637425a51414335576d314e346b49466d493669633354615234756142485972745053326543444c43526477422b784a63466661696c73354b536c713745434173724c625056566d744169454866394b364f6e412f4e656974586f5a4371387836584d796763794f4b36517573573969673946433571483471584445554d7135414c7a3039334c43765a45736c684f2f77434f684f516c386e51647133417a3856413633644f53387850314866324f6d5733482b346e385374566a31666345644e676d6d4772396944746937434a71443236564249476f5a636d33366a667678496c594d503841562b785632393363736b433768377a386b486669584b793344536e656c6a755979777853794a7544745165653966706149503677563567723048724a30334443623643307172677a30366a707751566b706e5a41384642537143456345586f79474b694342444647717532316f37693547314478534f6e336f4e4634437a7472635969732b7558794378536c56644c3175354365364d49486f7467577879302f74584e643855457a6f6845706845732b5342446c6b457167557a55356f4d3642516d6a4b726f664e453845473762626d5561417449726f523134306669754136365731337a4e4756516736734a644172556345776a355a62474a6f7172546d5772415357695675556f394c41446d67383375693977674b6756577265522f71466d707757556f41374b4f6d59444a41686a5642302f543770304e6d4a5537364c7362653859556b58474e50624a6563326c33524f754258567333446c336f4f3548636e54536a344c44633355396e4d79306c3157647a35666a695350356c556655626368704d67513331502b54494e5676312b35452f3841464a6c76732b716e633941745442503153444c6b2f6457546230466f38346e4a645350724f79682f3157772b6b6e3845466874584c5a6361687a795633334579346f4b4c4a50315778644f6945695835555631476442424f6f4d6a585576456236586d33376c775631534a2b4b39563670755049737648452f4a654f4e616f41356452326f564872685645486a69674150785856394a6c71453754314c534834726d4750765432626b7263784d48424236657a593837476d584473357242756274335a58574d51512f76562b30334d546344346c67747479455a485351436561446c6a314745773874754734725674642f4c62764f4669587549436c6e667832703045364f78614c2b39753349394e325248752b53444e755057626c3061626b44422f302f755641734677592b39624e767471616a575575394e64742b57784b444a66486c686d5a754b34317934585a3175332b39666f6a674375664853617a6f55466369337651413149344a63413641366a6756484f48424c5631477951536f35492f4a516331414851656f324638486177674d7453364733334679335356593876677650656d3357476b4844357271324a38304852756267356366637375796e45583558376c444b676c70792f414c54474d5a6b4441724c502f41423458706178636b422f466c32494f6c66332b3274325a536c63675247725a6e3971384e76384166334e314a353466534f436d39454c643032376369597870716c7835636c6b646b45455361713233445751654b7267432b6b59727462543061356549414c632b53446d54685269614c4f7659542f787a54476d6d62346d58374d46783935364e6474486f43446a3442486956625062584c582f4943507956637045356f46426f7967723270674e585563456f344241314d317474786a4b6a724246733166624f6b766d6730793245496a78506c3756537932447831526b2f352b3958526c4952474655705a3048506e417853674e565758424931795654653942504556434e4b676f4645427755775549595655425164543069464a542f5375394f486d6867764c37533662594d526e77586232573470704a2f61676557776d5042467562706259467535474570507049646c713365346b4947754158456a754a5741374f5a4f5365485967396e656d4c5971734a75514c2b592f4a6372622b75796c416963504d375a4d566f3875377634534a476a394c596436446f51323972783278683831644f545733354c696258657a7433504a7559676539617062677a424565446471436a6356494254574e2f5932593158336639493973306b6a715a3861506b47586e2f55622f6e587963685475515a357a31456e6a2b4b747457524b426c493044664655674c7537545a52336d32424e434d754b44642f6a66707568397849562b6a6b4f4b37562b346471504d4d5a7a44316a627166636a74774246675044466d5773366d465751655a756571656c5835614c396d5543635a615144384b704a3753397344352b79756d554b4853546950782b6136752b324e76656872385357776b4b5339374b6e612b6c584c4938714d69626557724a427332386a4f496c49615a6e474f49576d31636957474471695669634231634d5175536470647630746d512b4344306b5945565a563349763079784f50426357334431585a4372583474673951507a5737612b71327436504c6b4e4677654b32655344784871746a7964784f47547646596c3250384149513138566434673969342b6c7767654278566d31742b62634551714f33412f4261746e4d573536714f506967374247755056512b463178393144524a64547a784d754b6a677566754c6d74426e684572712b6e6b474c4150526365505269756e73376d6b67427330472b2f487a4c5a58423079684c58476842643833586f49306a77397346786268596b494f6859334d393434754d34475761307774686e5847323937793539754b373173526e51666b6730325a64547a43723363624736486c47426e2f4c6b565665324d376b6762556d415055717a36544f4931472f49646b66326f442f5935524e6259302f56695458734b315750537470435858456a2b48586a2b4b706a3662754c662f46756a7137782b614d72667130546f4f6d36503145782b426346304771573146695a6c5a2f342f30634f395072616857665957373976554e7943444c2b49477676573379596a6b5452426d6c6368743453767a49486c6767446a4c467531654e763335585a797553786c384630665739326274347769576a484c6a4c6975553641314b6b616b4d677a49697142394f5a6f72645036556b584a354a34536c72726736416546754b45726b356469754d53617171646b785a426f327451784b364e6d3237682b7a7357485a577a4d5558537439446d65496634494b37323768747a47334b70465a4e6b712f5537734a37586f6b4a457a46426a686e33726b337a31796c7a5658454946554a34714868676a793449464859756a36506530587862506775485432634375637754526c70496b4d5167392f743241777a307254414f4153736531756566626a636a54584855335041726f3277536142774167345071466a793978754c68465a434d753742632f5a794f47512b446e4265673374725752492f70496e3242656232632f4c6c6767374e72302b41416c4e71386e545232566f48566f69542f4143706247366a4553474a2f425558397a4b377168444441385069673047634a7a4174354c66356765702f4a655a6e36704745674e4245384a44416674573678367861757a416c54756f6663673631367a62334159787765764255665974485348775765643235616c39786a616c3039334664434e794e7a43682f42425362576e74436f6d41627475456e625556713355685548755a5a664c383255636a7169673548726f386d4a67395a535843745770585a43467573704552486156302f5864783532376c4559513666646974502b4e62547a4e796235384e6b502f717748356f50525764704462323765335a3432773344714e5a464c754c454a4e6f78415779554456735469714c6859674e5242792f5033632f364e75476b6330397230323362423347366b476a69655331694a38494c3951586d50574e7962313779584f694750622b784150564e794e784533423955744d655549344c6b7264766f4731437a452f6f6633794b3536413055514349493755425a4d4452696b66347068677751415930526b78515a516d6c65354272394f69387a783079585532346c5a6e7174302f554d6973767031754e75314b394c366a706a33564b307933746d315575587951644b31754c4d336e63445339364e7a653761324f71344d5044454c7a573433747934534130514f437a4754346c4236533776724d6759752f77444679584b753349435430622b46632f556754454369446466335675344869345045717531755a6d56617373593470684d753451656c326c34584730347270655835317654526a37664e65517333744d7751757a732f57425941467a4242752f74635458564f4a376346304c466b7744566c2f464a5a59657057727459594b2b48714d525844765161356c5554752b5867714c7671635234636662357250435537353154706d45474c3162654330316f3150444a6353335a75585334474f43332b724e39314c58674248354c4c50656b64466f494e6476302b6d7154555a756130573452685456527353617573492b36752b4b4a626a4a61596261356a4b673461712f4642714969354c34357171704452716d6e747847764642744a4c69694274764543574f556e344d7938306331366a625131584443544145534761387951496c6b414e41793062576b6752566c6d495a614e6f2b724369447137364a487031766e635034726978715858583955675274624772413636633178327a514d4936704e78524566315a6f526943587a5670416d414b5078515668583754597a336c34576f64357941565572514837463662303361543275326e64482f4c636a377543446b336d74334a434659784f6b48737a5174334e4c7963767953326f764374574a397561536353454738657047445071643174736574444354767a6f7650694a4f4750384b31574e704b5869446f4f335066695a56492f72537234566e745752454d63506b7272683875334d6a67516732796749426c524f624f50657568477a356d3168492f38414a6f6a4c755a6330796944712b6b654c75516376316135685a7a385568386c79594f72627477334c687538543766424e434834653542544750414b6157484d725330644a64567969675858495557373143496a59744155782f425a37554b39616e71464e4934395464714445634851516f694b66696743733036556f443152496f67642b504a4a4d7570566174686138792f4546426b6f44576f4330517347565467756e4c625739586c34795077563066546f365848562b7842587476376647485650716239437a5445535a47426f4630507464486768454e786935376c56666a2f543479504c464266593245726c6b586466747a575735744e78616b47493756332f54724d6649694d51544c386c566f6a614a74543668346f6f4f6674627671455939563244634a422f6b46315957747a4f50564f412f696a2b3141434d434a526f655332516b5a487038507a515a4c3169556f79463252756168796f736534323976375735434e44474c2f774331644c63584d77737536694274376b384f695151654e6954696d4578454a596b41756c6b376b6f4c444d6a76532b595a6479716c4d70536776452b495630434f4b795363466b596c736553432b55336947716b75537a7962346f6176636b4c595a494f312f6a3939726b7257486d44346849656d36787a4d6a79584d74585a32694a524c454c53647867536344543855446268684a75395a6947704a6162383375636679565536686b48553256387a744147756c61374a453564767a584532732f4c6b787a57362b446236774d6b4855752b6e3270385267376355316a30797a626e726556467a4c58712b674d7a397175746574416653596f5051527478417067756236374d78324e7944597969717266712f6d446b7174374b653873546a6d6571503841707167386f7a6547716734714d33616c4166424138596d574336573039506c636b4b6535545a62557a6b77484e656d3274675768524279492b6c354d333571364777454431696f6f7579596b686b4957483853446c2f595757364866426333642b6c6b645550795872744143576467542b534435374b4a74304f4c6f53414656362f662b697776774a685358347279453465564c5363596c69676e62514c6f372b345a6253773248562b41584d47444c712b6f514e725a324c5a2f694b446b4167714f676e314241704336666f38497a756d306671696667756165316276535a694f37675a5a6e543777673651763769332f53733277514d7a6d6d4d6431657064694e50366e58557457496d594a4a78384b653562674d614948394e744674424151337670384a53316e322f6370735a673357794b36567873772f42427a74766238734e45396936554f706e584f7437713371616a38426974316938426d344f5344772f71316e37666353694d484a486573514e58342f46646e3138767532476361726a36474c356f47647138636c6e6e485374457754584e56584344575343742b7847587a555549314941446b6942785373796d4e4542524e6531447864696834596f426855346f697168524e614641445446446b457a50564b4f61426c3366386475454739444c512f755842697574364650546475453465584c3445494e32384e4f78633647712f3032496d52344b6237632b5a4c54436b596e3472736258314b7847774c646769795132725648457455382b5879515a37586f6c3268764746742b504258327652374869755834302f5374507038596d63726b69626c476a72697473444677305245636f4d45484f486f323176307333756f6d6d6f7638467a642f3658754e6f5875523151796d4d5063753536704b313548555234346e2b4a6b6c6a66655462364c6f753277314a6e71417a2f637851655a3232344e695776697574356b626a546867734871307472357237584168356348354b6e61376a797933376b485a307645303750785766794c596b645551756a62464e514f4956567a62796b666d67707362577864384570526e7954336474757255546f75456a684a5074747562636879785851307547516348613266754838304d596e4664714564496273565552575463564c7534687472666d792f32347567772b76627a79494462577930356455794d71594c7a574b626358355837687553784b71775055676170436d7077795546456b5a6f492f4842446b70327142424146455851464542624a51525a6c43534f7844586b676a7141634561594b494950636f35775537464e4c6f4348695151757643365a4457654335474e4d46327057644671456634516665677374584e52633148344c54397a62746b795a6838317972312b4e6e44782f46632b35646e4d756633494f7a6639644d442f343842482b5046636d3975626c382f774253526b5371636e7a52515146736b586c694b70634b4d674f4342784e7561595439797279524271675967597853415a706f6345706979434d6c59496e6b6f55424663554a426b5256484e416f4e4552544242744b694430482b4b78503365724552676669734872566e794e3964427a6b2f2b367137482b4b32786f765854796773332b56512f723237672b7148794a516344784b596c31476642526d446f42386c36443032344c74677565714834726759717978666e594c32797851656e46786738714a4a376d6a4e33724e5a3341334e765563634446555847694b59494c6f586d636e4262647036726268474e6f767748354c6b52753277433166327072466d55354452456f4f78754a4464523157336455376264796a30794655747a7a4e70306b4d573164797a57376432354953755572385069673747765748576665656f577473336d6455736f2b3335717a484768776f76502b73334979334443756b6153677a627a637a336430335a6675437a4d696736434645465138585551516f4b617367696744736f456346435367675178557952444f6748494b455a6f386b41676d4f4b6a71415a684538554137464134384b4942514344665a33556f68737a566447316331572b4f4d6e58456841366453756875703236494f707574715731777139566d4f787642794174466a3161324c5945687741354979395767446851494f683666745349673062466c7476573469707a5845746574514130386b75343959456d68456b684230726d38685a6a584966484a655376335a58356d5a7a57766362377a756b59465948306f474141375544376b486644424e575861675646526e6f672b6141715577555a53504242395832346131447343384c2f414a58614d642b5a66716a452f682b4339356144573435554879586b2f77444d6244655666484f4a37716a356c42354b42597576552b6e7a3141677842614c7279354e4636623071513872574d36464276476c6d6d717a5a74533663413378437349694136726c78475343693962674969454b2f3661725874724a45425263387a6135716c4e7449545776574c4d4c6a5236672f59673756324e4d63753472484b36436d487265326c4c544e68372f795766314335434d345368344a69756c426447384d596864446256584a746e7a4f6f5579344c726257587437636b485167534d6d556e562b444a497a41706b70314d67356d386d6470744b654856576e4656336268334f7a74796858544d53576e66325075624d724c73366f744731733971383651672b4f505a326f4f5a367262473474735070464f326c46796a48776a4267506774586e79755145783965487951423435494f665063584c5a5a6d41554f396e4d74493057692f4356783479484e637777302f745164665a2b6f42327758566a63316a4c74586a77584e467173377937626f435367394a50546a2b355a5465593077584c4f3475334d697976326f7554365454386b472b462b32496e4f6a6e75584833752b6c644c52635179576a314b65693343334850714b3552514e356b6779614e347535564f534c596f4e6364774756317664774869396e584f484a52766567362f33566e426e563176656264744d36646e46634a325164734548633332377353737974323546366650386c777330584b6d6f346f4f333656744958374d39574d5a64366539736f786b3050646d6e39474a6c5961464a43574958574145376a2f5542576e464277763761386d77354c7237586178416f4d50627656326d4d53506e4a5062704931702f4367736e74526474744b76344c674461526a4932352b4c773854795871397464684d4543675030726c6572776c626b4a67664433494f4b64715a793067484631307470596e5a6241416e4c3856585a4562556d50666d727863316b30726b67376d3136685156532b75625558646a63676670695a447571724e6a485335623949542b704639726545762b335035495041624d784e6f775038414e3850334c4b576477722f54442f554d76345356544d4d55485a326376365a6a6a52533834437a2b6e7978694b2f6b7274314869673565344c346c3257557361344b7a63584e5a3971716f566f67566b77716f5877526d324b4259303755657841636b772b534164716a756f3759494d3641386b4d4f70714b42795855664a4159314646427a7751353570766d673137486579327870574a7958713557597a6a72686951437644787857386570333432685a6a4a6f6a446967377334474854335078585076327a636c327162546647374178766c32775458496a574d75584a426d6c745446386149783141485374387a497859594b756473526763794d30476661755a664e656a68636c4741446b4446656474796c48767a5855743776706a48353845485674544d7a5770576957326a6f315a6e354c4259754352456f31354c7057376d6a4641746d3262624f567631384d466c4574526f6e747a366b47693762463232594841686c783976593875636f5271575953354c74436c466d753268356a6f4a5a74385635542f4b665668636c3972624e42342b4472762b712b6f66322f616d66312b4750616679587a6d55764d4a4d366b356f4267674b30554c444252424e5761424b49556b67497752446b70434d305458745158776d394664714744724a474a4a5942574e4a394f54494b58494c6f4576565754686f69345349424b7445566f7562557774786d37366737425a35554a5164483067764f55546d4631344161674635757a644e7557714f4b373233334975395151624c736f6266716b3544643671742b7137534162564966786166597258473535734e5271773459724266323739556f686a7767454779313672733576716d66356974566e66624f5a316562454833457268666257684c72464d6343727265313239796c7532352f55535141673946393974662b3762666a714378627539597667786a4b4f722b47514b7978394632324d77442f4b5a46586a302f6252505262455432794a51446139427a49572b324e556d776a7834635652473078654f4b78657365716661327a61682f795439385167383336707544653345794d48596467574e4445565272676747474b49344b61517a6f474b43426b6578416c6b30754951436932656e3767625363722f31695054326e386c696b56434544534f6f367049456331434649305147636e716f445369474271707a514f5a6e76537570474c307a5164365a6f494748616d306a45704f3152754b41794875556a53714f50636c4e616f4f727374334c4172736257354763787172584e65554230455343365730336253706b676f39545962693457784b78344c64366966366a6b755667664e42474b68444b564f4b4b43436a456578576d33757a444b6f57584446456d6944664c31417a6a706c47696c6b52755a6479774f724c467a793561736b48576a4f3162366a7478506e715035726441327238656932493179697a2b39314e7463746b526c6b36336d3761694e596f6751376533466d694b4a35586d784e4f4b5464627546675049682f7034727a572b39536c7554706a3077475341656f372b57377566776a425965536a3855434f4b4346466e514446466b436974456531476a72587339704b374c5639413852515757684b3345533777753373742b3852433433383261783362476f644f58465977384a6436443035324f33334e54474a39754b6e396f73437361455a76374265656a75357862544b69732f7564774d416566486d6737743655647548697934572f39527152624e472b4b79627665334c745a456c595046694b75676836716e4e4557754f4b496f41565a7031494b355130345648424c6f2f56526153325156467a71594946304955554c597143765967564630484c6f78346f4e577975615a306f56336248444a655a6a517576513761666e514567334d636b4851757a76512f384174697849584833322b333159586268623355586174795a70763078367663764b2b6f626e376d2f4b35674d6b4751685751695a476972646476306e5a39506d5378506848346f4c2f414537302f53657344697655576f416c384734636c6a73574e45655a58514c696e63676373475175577766465867365352497166676e3145386b464d396c617541617668376642635831442f41422b456e6c5a4964656869546a334a355141466343672b5a376d3163736e5263476b716f476a4265383952394d74377439513676706c77586974377370374f656966614b7652426d437468496e7064557034394a315a6f4f7a48617a3078484656583973594d34585232317a7a6263584f49546d33713745484375526f73687054323746334e7a747451775a6c79627342456f4b364d654b71504a4755654743425042416454686b4b4b4f4d564d616c42625949684d452f73572f7a4442713971356d425775317547416a494f67322f635375525935312f5972352b57526f636439467a50754744737170415343447437546257784d58444b32414f4d783746626a7537566a2f414b3061666f366c3561334f4543306f754f334a6466303639743768306d45596e3235346f4c3562323176503666436f4f4438565a475142706972373278694f6f634667756b327933637942647a633876706f5858503357326a4733433568716569763672306736703953763635526742534930684268642f624e656f39456c4757337a654f4c345a34636c35577543396636564551326c765439542f43525164657a6569324837567038333667754645546e302f73585174324c7667446c427575536a48785971344275316353653773624f662f6c6d517735396936473039533275342f77434f5834494e45376572706c67754476765449627034537553746e4c39504a647733764c754144776e3349334c554c6f366743673831743970366a3665497a73335263742f6f65693674762f79476e4b33706e68584550697439757a4333344132616f767a414a6d543458504a6b486976587272376b78426351416a52637073797473374e33647975585144697364794769694351397a70744a725846434653724a39517951573759796b4d575333703676457252596b4c486d425969487878514d4379305744704c724e474848325a575159494f784365727178344c4275496658784f6173737a3039503074334933674c37517376636c6c47416442682b7031314e72753955713472442f6139374b6f73335038415a4a614c506f322b6d48685a6e713539507a5a4236537a574c776f46624c612f6341787737325848732f6637667075326268694f547262742f574c4d382f336f47486f393053667a70687566375630725733466d4f6e564b546e47537174656f32633566734b4637314b33626a726b51414d63304674383171572b5378446466315241673149412f5073584f33487258334a6131467a6b352f4261646c5a6d776c4d6e57364479753867626436634a5969526455434b33657153313775365161616a677350496f48616d764a4a714f4b6142496f673642785067727263365077535757486977576b5274316d4b4d67634352416b474434716935645a786e6d6b75376d557567554353316175585830416e545873484e42627470334c6b6843457449507541346c58377a3144554461736b2b5834586c55792f597566712b6e6e37304f534345643667593455554e464d454246614a64534a557246414f536d4e455136493667794470374c316d377337666c4d4448365878577158716d3533624364307867636f5558444d394e463239745967304a6d4c765642707332626b4b37664569756f75466959435231646937473167787a584e39564173626b7941706336782b4b42624570476279713946702b356844704c6669797832376f746c61527439766368727541764c4e426248794c376964794c7630307a397331665a323171304b5367442f41445558486a6f3230694a577463483666314468554c62594e692f573361306a6a6a383243446f546e623061544b4a423463316c736267776354574864626e62577a3564694771352b724c754333574c316e59577465366c2f566e58524878415a646e65673257794a444a58324c6b4c63386135552f59764e626e314f4e2b34626b51522b6e715a76636b2f756c35744d5a6c753542503754653346795533614a4a4c797a586f5054352f32367a35516939742b75656c6a496c65637537323563476d523933464350714d78537665554875346b53477142314f7330357669764b572f5637677247556f7979302f692b4b32322f583738662b614d626f3476705035664242324c317a3761334b2f3841397347512f6d77433850475a6e4a355a6d7665757a36703674393359386945504c63367056642b417743346c74784a3830477a31556e7a59327a2f30376475507766384146594467744f2b6c2f5750454349377741466d495a414257694f584a5163554b4f676a4971597951356f43426d46487951624d594a6f746d67375675554c657a74796d4f7272307834383178377430334353634f434d354578694864676c303164416949475155657653695167444f6757416f6d374644464170525046444246366f4943324374684c554b70573076524b4f4c6f4c785a6c4f5853355853322f703835316b63466d394e76694e77526d576a4b6e4a656d6a4d4155416f677957646c47456354566443454445507743554277727262303745486c66576d7462365a6b4869644e4f344b6931657533502b4745596a3234725a2f6b596539712b714c77397a45664e633761376f5743524d43512f464231595772386d3836373352416458786749686a4b5256466a2b71426367784147533045677355424d645a6952566c53656b31775673626b41566e335636467147755170394565504e4131753747316568634e492f564c6c375a59726a626e544f374f59384a4c7837456b3738726871556d717570424237316f326b3945363448344b67446a6b6e6a784b44722b75792f6f626341676a7272376c7842484d34727053765175625356715a366f6c34666b732b3139507637776630594754665667506555465544773731614a52696142646a5a2f347a646e58644e62682b6d4e5a466569322b7832753041387133454566584b4c79516358307230587a644f34762b452b4747644d50334c3041306d5855427a3745626b737a38454a6e5352503658396e5165586e7476744c38397649503955657958424c6474636c322f56646d6239714e2b30486e62367532504263713163467970786171446e4330625a365742393636566b61787134705932717552526e576d3145436b52544a424977474b77657133526274614d356e35667458517248716b475a636a6350754c396d7a6a577665554872396e622f70516a2b6d33475077575064656b51334d47747a38736e7842754336566d4f6d44444e41784650783549504737762f48393174515a786135482b4848334c6e617a45365a385639445967304b72756257317542707532347942355651665033634f704176544e6571752f77434f574a6e2b6864305250307471574f2f2f41493164747831325a43364f48685046427a4e724457334d6859393965463239497877464f35626f7a4667367934494571484546636b6e36754b42634b4b446d555448765244533755433042645045557032714f4165614970564243375577566d337565526445386756566d3578516c536a6f50532b5741664d594d54373176735248303058493950335675355a46753465714868352f7557363950796a37657a494e747933356871567a5a576f52385a4c527a7a5633334a30312b43467946712b474e447851583250566476614168315262386632712b3964736279414d4a50495635302b5034726c51394972724f6f393146314e7273345749394d4f7041746f43426159366774384a67425a4c6e55526c4a614c63754b435436734b46636e317a6477466e794c666a4e5a63474b3745656c3379433846656d544f586167557a5a566d62346676536b7179467556777367726a4238467274656e334a735451486d756e737472433031484a58556859694a4642772f37585278564e2f5a2b4a5a656b38714b6b62416a514471516555752b6c796855595a2b77574b355a6c41744a6651425a6a34654956563330757a65465167384452327954777771757a363536554e70474e3248684a30747a5843656a494e6b4a31354a6941796f7446716a426152624d796772316143506a7943366c752b4e33625a384470344c6c58346149653261302b6c476c794c634a653542586473365a61634531754a4c4d4b646a72644e6958792f46616470474c365946414e76747048726e4578664232585432385749726772684151787167315846506b67386636767468593355774d507a56477a73656463302f4a64482f493476666849666f4877542b6932504c67647a4f6e365548543274694e7361596a702f56324c6f787453496646382f5a6c774c6f3347386c49575330593979582b79626a487a6d486167394d443074494e334a546430316f5269764d323458724a65557a4c2f41464f474336384c63723854476f6963785642752b397352597a6e474b6f75657637473257457a4d3849786f754c505a575946726c526964564670325735395067644769506544387967362b31395273627766307a55505134757542362f365449534f36736968385147584e6569413239364451474742474b74754d59364a5669527061574a51664f4c5a3677756a3630386273626636593148416d716f3365302b333342737871424b6d615071307457376d6635666b454742454d364b556f446755626339453955614e676c496f69374950617776786d49335966564565395a6431757a506f67335073584b394e766b774e722f6279567334456c35422b6642427068764c6c6f7649467551585274622b37656f427048446a2b5334747a646e7752444e376b7039526e5941306e4a423174355a6a703179654d38736a37316d746572787348544b736c7872323875626874636933417059675150346c4275334e306271393576746d7159324946316e75584969686f5554663068383046787367554171717275326d7a74525832726b52696677576d47344863673454485069686e526237396e5649795a596d514c51716469484a45596f4a324b59564368504248566d674950775148456f437052446c42417a4d697a557a5149496f3642346f44324c54746230726570714f4e5076564e75314f365243414a6b636855717a5362636943474f42514e686a6a2b4b6662585a3237677557324a475538465472306971726e4d794b447448666275383874656c763035653548377265327a716a645059754847345934466c72736230786b31796f4f4b4471513962337473744e702f776d4962336863362f666a656b5a4341672f77424d634671314f30774b53775761554358515a67636f71524c64534c4d4642346b48523232364d4c6254717451333053414b366c79524c4a504a38526c52423339767651443272584c634475586d725275616765587a585174577a4e6e3730477a37687a3063666d755a366850524f7939515455653746625441577263726b7a51653963363141377137445737592b39426475505135587a72734d423230584d336e70653432586a464f497176566e5462476b436951536b53587751654b354242386c365863574c63626d7145596b7a6b776a495a7252366a3644472f42397549786d424974454d364479624b616c5a663231797a4c52646952494a4951315551426c41797547334f64456674786953677a736a2b4b746862316547714274536a676771314d555143554552467a5242447751585632666f57373366554936592f716c52656f39503841524e76737366366b387a494f4167386a7376544c6d3569626d46755031636551577a3144656a627938714749596467587335786843476b41434c53384d57587a5737634d35456e4d6f466c4b55716b75654b426b555447725a68416873633041436b6c614c5a4144684a704c506c2b6143467350327567785a614c57336c644c444264545a624234504d4d3142326f4f472f7555414c647136323539486e315374416e6c7837467a4c6c755675576d51306c42436c6436495931436b61664e42475a536f464578446d71556f495457716d497033705377484e4d79434142544575706b674154524237482f4834474f78632f56632b53722f414d6b7369377434586f66394d7449636a2b31644c5a327674747261744e6848564c6b546971665678356d79754e77316536714477334e513055657271456b6f49456561485967673037612b4953414e5175774a784a3056663446317737634a544c52446c64796d6f48346f4575626471784242474b6545355169776f6634614c5a4161343575554c646d423851667435494573575a58434a586e494865575733796761355a4a7263725144527754334a68744b424957664d7552445571764a62366d3575503841714b39665a6e7049475430586c50564c63343769354b5949426b53436330474645444c69677a4b4869676e4a52314e4c49383045715545587a51515474554b4f53474b4167555572346b4d46446767635653616b596838564d4b6f413759494d355262676a69487a5142544e5142516c304851324a6a31516c322b355637697a704c72505a7565584d5334664a6459334266694a4e682b43446b58485162386c7633516a553057446d42524142773449366d444f6749453155515277436755546778555a3045413449315241616879534f6665674c71793148564950686d7174534c6b424271756d7a344c62383356506c74574f5372474e55784c73672b6a656c6572324e39434d583033414b775074565a2f386e323475374355786a62496c2b4834727749754742426957616f4b372b332f794b56336258647475716d554447452b6463667a5165645939785858394933516954743559542b42584a4c3448424e626e3563784f4f525165734e7757785531344c4c754c3550314e37594b33634856487a4965476245557757535558713955465273655a4869345061713462444d48486b744d74783556472b4c4b6f656f362b6d454a502f4e2b7842717462574d6f3672677165533051326b4c64593474546b734d4c39382b43334c486974503339364936375650315a73677667776c6a2b4336746c7948584173377157346e6f30454633702b4c72304f3268716a5242736754497178774352677330486a54447457674857314f3142564d7338703452783746346e316e31593736597377706269652b5234716e31586654334f347545534f683949416f47474370394d6872334d484431457534494f377537597343335969335248766553784f504342564e65334233467955736a562f6c376b4949424b4d71537934724664674a594c5a64497a58506c4f55537a6f4a62327571584a624c653267656e486973396942615567746c755452614b43323361674f6e4a6142624741506571596967796b566246674e524b4467372b666d5854584369793975433666714e6d456835304b4546704c6d34305142463378553035496a4241756c3845636c4431535a48414d67556f39714147616a3845454e4d464f6169673534494f78364c654f765150456350782b4337506e36513248746756356a5958664a76786e6c373133726e6a5a75306f457658376c77754254425653334632304e49446a697237636f525057725a3771324967536b442f41416a46427a35623763447779307438567268366a75376c7135356e55376545734b387353733039335a67584657347256733937745a5939482b6d6e464269737a4f47667a5771784d6730776b552f714e3362364e554a416e48484655324c6a6763667a51657139506d396f662b7175617a657558394f797563572f464462584e455a415a726d2f354675744e6e7938354242356a593176777849354a622f544d3971473375477a634534354b3365456d34353755476a302f7743503459712f3155534675337a344c46747067486d7572756f6a63625978774d656f632b4b447a706b6f585461574b4461716f4a79557a51315664475251522b434748656a70636f4630426669686a52476871676155514673314f61426f464d55455a3845324b4742555142314345634b714f67654a305542573633643879505656632b5641742b78734735416d4f58346f4e4d643441654c4a626d3631453831584f4558706a7879574f5853535345462b74675935713058544a766a52596f4661376251596842324e6c636b2b695057353743463362554d48584f394e743944687632727269576c42614f6d504a47456f6e76576655414e4f5a564a6e706f55485174334f746c66644648584d32397a77746d56314c673644324950412f774352573931353733592f302f704f49433452583075364933626e6c7a384c507843383336722f4149347a334e7452363650794b4479386f356c436877576939744c3172787849487638416b7148514669416f2f7555636e424275434136476f706c52515964716a4d655342346b673450525736593435736b67414f5a5431624242586459527871367142426c5842645331364a6633466e7a37626158384f6179627a5a66625345586478587451644d65706261466a79345231552b71503756785a48575877644c696d7077514473777856753376474243706343716577356b427a775164376137736159776b6142313042643063475841505255596669725937755542704c467665673944616e5a4a30596474614c646274325a355048334c7950336256775779333670474f4d70456a4f50743730486f474172482f6146566561413147722f414358492f757573663033663952576139666b51646338412b6b4642723954395868745036566d74773438754338764f354b39497a6d535a48464352316c776c514444464f37596f593471664e415148436a4f6e4479435353425a4975554855515156557852695641674743494955495a4c3249485934495562696f4e51775551467a6b672b6130574e724b36576a5467744d7653726a50716977516330736a324b3235596e4679314655374771434f3455636e424245535a41786f70476e4a307270586674514e4a79554f314d4f7a765548464170466149344b4e6b67655341674f554842526f56427a51424853363362625a517648515352376469334430757944517963653735494d73504d413035437174315844684b6e46644137614159684b62456342785163726378622b626d7566494c7137356f504c4631797a6967524d614a564d65314151484b4c494a3443557949777154527330437768716b4f4339505a6e43566b51676455496a675233724e364a365a634f36303349446f38635a5a4f765654394e6949616266672f546b4f7842353666534b425a7230424a62622b316c5a6b51797844715a78577144444b307859315575514673562b6132795a336c674d56794e78634d356d4b4133726875644b716b532b6142366355646143536a52797047347753756f44795157655953574f616a306371736355786b33656744524262464368374531445570434d77674d616f74547355597335774b494650616941675a49323773725a314171434e4b4b4456686b6732336655377372586c38567a574361545938556f787167743239767a6267744436697659327259747472795952343971342f6f4f304c53334c4f33534f336975754c4e7555744d3436786e69376c42736a7637454359796b334f5332573739715931516b4a514a7958506c7376546a53666c782f31742b4b7a582f5137646f65667337756d75565155485a31676e4848344969514964364663546137693571305859744b4f4a576a63584c31754c32744c6e395753447278426c673673414a78433833744c472b334236723077503443757262394b6c46764d76585a552f55673279445931664665512f77416d736b615a69674339506f387551695a4833726e65746251376e626e54346f6f50434a6d4a6f67446b55787751646e30693972675946736458374630345434727a657775433363367346337a4d697441454362323649696a4f4d6c7a4e7a47334f4a6b44565537363453585069536261376c4c776f4d7a564953794448466139335a6a41764771796b565a4171616e76556b6f4b4943434748464d5177345a71736c38457842397942755253766b674f6445616b6f412f464e456b463072756f7862735164586265723351424279527a775458483355784935344c6b366e4c68616474757a6149424648516455572f4a687a4c7269584a5063496b756a7574794246345a726c766d67445a4d76512b6d626b2b526f4a3846506579382b4f5333656d53307a6c43574251647139654f67365046326f2b6d2b747a73506233442f7a4a376341534a4d7741714d6c727657724e3250564546427676655876724a4a61555a4d326135646a304f557151753657505432647a4255513255724d396531754732787750684b3053336d36736837317353424869746c4230667437317133474d79626847636774467538314d4678492b75796e4951593170314b30334a4539587651646d562b4f416f326135487146326430655641592f4971794c6d6c4f537858665672477a742b5948755843547069314f312f774148515a74394b487075334d41787658637541586d5a4630313763584c387a646e556c5673636b445278567475506d46315341746d3267353745476a6333504c74614251506775624472375664754a61354d3768563235616363454443576b596578526b424539574a5664776734594a4358514f62704e4176622f77434e62623762612b593358634a5050534d463471785a6c667552747838556979392f412b554247455845526f51622f4e44316e5867456e6d422f4566355a4c672b7562755675324349735a50574d6d5a7156586b7a636d53346b78484e42394e4568466e6f7554366e364874393731322f36647a4678684c744334587076723932306447366c4b35626276422f46656c6a754c55774a516e4569513666314d6738392f7744686663795052646765312f794b775439486c626d59584a4278775864395a32577541763271536672306c6e484769353967764c545633716366326f4e4779325562555973476464534964686857507771736b4a6739754374753378627454766d686a43576e747951654f3355784f2f4f575570465a3863305a564a4b6a466d51414939754367514342684b6d6e4a48574a55536a6967677575626556734357494f595547346e473262516b30446942522b314935776a67557036554148424651484a62646a734a626d6f384f5a515a52626e4b6a4c525a324d376744597230746a3032317477446a4a75304c58477a474270694f5761447a51394775474f76414647506f306a6d76554e6e6945644f7271396d5165552f744d69484277795850765770575a4e4a65384d41417977372f303062693232593850742b4344786a55646568394676692f624e672b4f4e5938786d7546756242323979567157495573585a324a6935624c53474344326f68702b584e5a665662456a745a544d662b4f57714e4d70657a726b7a2f794c64436b6445542b714d612f4656624864583933754235307a4d64586950384a515a62647772763761354737434d534b632f6238567864337479486b4278645a59376935616f442b784236324671334f6a554861467866557655495842354e694f694d636561777a33563636476c49724f394f7041304c68693078516a416f7a75616a714e53654b724a344a636b44676c32554d696b6a69694b30515445707742324a596b5a354b4159673979426830344b2b3365727034724d596e456f786f657842744e754d366c6e354b7533624f7350784371387a41342f69724c7435734b42426e75534d35794a37556747534a42696f547751417159346f73386c42524147597161553250596741454542794b49444948696f376f4a564534394b57565551674f7052394e45434f4a5544416f47646c4b6f59465742792f4c6967574f61526a6c676e6b544c48696f5a647941416b3949344a55634b6f4f2b4a5145466573394e752b5a5969542f4b7649344c30336f5a696245745a455144695548584d5a47516a372b7a7452334738687362666d33663945655064376c7a6435362f613233545961647a4d6e77647938356533462f66586e75534d7079496a3730476e667a6e656843395078585a584a2f4a6c7a36784c5a726636726345722f6c527247314557682f70783935574768434178755374486f4b31327655726b6154615135696f57487771564b44715439542f534458334c6e334c7372307456784a482b464673696756732b43686f5752624e466e777751414368644538736c57376f346f4c6264775735616d646a684c44734b2b672b6c622b31763741386f43456f306e434f585a374f766e4b3162486654326430586265574934684239496e4a49414931785337506477336c6f583752594b325550656754512b4f4370684d327a706d584376443971717551654f714f534336784d48776d6a594c6a2b6f374537533662396b663035654f48435846566571793132664b6a53557548316532617a324e2f4830617a4b3350716e4d394d4d6366694547706a434f75524559734456597276725731733069446350754334473633313365533158706467344255437144723376584a3341305941443472487476554a57647848634d356a6c7843786b4146526e51657a322f2b5362573642436354626c682b71492f4a64654e324632416c4169513467723573774259315856394c395a4f792f706b47554548747670427a54437057666162717a764c657577515132484474563068713979434559496b4d3157726970574e464977656751632f316230364f2f6730476a65474234386976446269786332307a43394854494c36524b48554146673953324e7665327a4334486d4230547a664963775548674b4b597037734443576d58694647534555706967494c4a674d796b67574b6d4e5367735a676c4d74526448557a4b4f51674d614856484c75586248716c6a52457a3145782b4a58436a5173725957675936683452564274766570366a305270323156556655377365484e596a69796d4a31494f35747433754c6f706569503466594c645a323979356a666d352f53572b4338734a616178586139493951426d4c642f4f676b667851646b656e57625a46306d5776747857753257594654534378645a4c743645554776635847745349794863764233617a506165786536686231327a4535686544754d444c74514345645237563264765961683853782b6d576a4f343577433751755173316274516172466d67576d45484445553975537a576656397245615a30357254623952733357454a4f55463469434777516c46756f497876577a79536e633268517533596776674e4a664c6a6b72547743776a31586178694162673979756a7662463064456e5159663867746d377443514830793145384d612f46654b455267767046367a44635770514278702f75587a752f61387552693243413267786553362f702b30753771576d46496a47613533706c7146376332345472456e71484a653668415772656741526950303845486c2f5774726232773871424a6c42745575334a6333302b3735647a54493472736572573964792f4134394d6f2b356564457a426a5642364b636364516f716f534e7558536873622f414a384e5759365a666d72504c707179346f4f31617661346a696e7545527877584f7458756b52496f50715175587a636f4b3857516376316256754a433442306a703746314e6e62666277416432584b33566e2b6f4c4742656f375630396a5349675467677a58724e38485262595068716f714a624c6350315861667a4f765377745737683667434658396874346b74624251636e626261656e724d745038414b417652374d4557323572426349665248455a59726274514e484832434448366a365a486448574f58494c6d57665437646b366a5a31646864656a754d50455766326f68445351305a55515939745a423674426756736b656c2b4b63694c647157354e6b484d4f306a397866334c504f4d656e334c7a487255663841796458366f786c2f3651765a774f68354e346976482b7652454e334b33477567526a3850326f4f5565614d6571696a694e4d6b30593172676755697142545348476955466b466c75346255684b5037463644623771462b494f422b706563563862677452615069346f4f6e76376b586f51533147584a4e776d70785146777964306c4467674a6e79544766306c4b556f41427155444f5a55524d6d44417065784e4541647143323349305a5747584255433753716258373046304a5a5a6f584c666d6455526b71375a345a71347930675a6f4d4a476b71474c4c52657475614b6d58546967584a5231415643484c4943456f52423470694d796756714a376344636d494436697751784337506f58705a767a47356e3449462f7743596a3845485868736f2b6d6257553762655a434f7155753165546e497a4a6c4c456c2b3965303959364e6a65624e766d76456942304f315078514b63416c624a47515a485141554373364a697973306731344b61614948735869426f2b6b712f7a4836526b736841646b304c6c475158534759564a494365424a5a587a324e2b4e727a7a45365044374446416c76514a4d756843324679424e69386c3337466761496b2b7751533162717431753041474b534e4d417857626533726c6d332f54786c6d677a6571377358376e3238504445764c6d5675394b74505a467734594c6a6257773871566c54484c697531722b3373364c66447863304233462f5663467359437161557a474e5433724e7362637058444d6d6e7a57692b4a544d59444d3151586250622b624d5870356546386c6276765662577a693561552f3075712f57505552366462454c662f4c4964504963653165514e307a65553854346b462b36336c7a655844636e6e6879564978637044494f6f446b536765553278636f693444476f5662596b4a666d67766f4b7467694c6d5a5a56752b4f444b73306f6775754142686b7572364476746c745a662b5262366e705046767958467233344a41514b4d672b6f69554c7745375a654a37475568454e38463839324871567a595431573844346f354c36445975517577467946524e414c38424b45676378496642664d5a514d5470344c36547672766c574a3366307864754a71766e4e2f637a334d2f4d75566b6772596e46575772496d51447856624c71656d57524f45706b4f4167365732326364416f585630747074522f7a3950782b53706d4a334b435851394969685676384161725a46584d76356b47797a737471775a7950775730577245413059726a787453735341717758577374636a676757633457346c774743785433316935307967354a7a68543471336441784f6b7175456f654f5841596f452b783230734955504942634c31583030374f6575412f7048777231316d4962326f717433745933724a737a4869774b4477565539757a63766c7263544d2f7768314c6c7332356d334c365676394376655476725569635333766f67357334474a6151593836464172366476665464767649694636494a77456869463462316e30576670736e46625576444c3845484c4655304b79414f447174626653374a76377133415936676138716f50653332387a6b71726c733349584c59786c4355554a677555524978366667672b65546759534d546b67516346332f774449746835567a3769492f703350676632726c375059583934644e6d47666979486567796b63465a5a3239792f495268456c79765162482f477043596e75794e492b6d4a717651527477737738753145524134494d2f7050706b4e68626368377048564c674f43346d524d735a56376c366530664d4a6958366833727a3753426e45697473365547627a4a52365930576165367541554f4330546952555a72504e774751624e6a717559754630574561724673674e504e6247657078514e45356a4838467074577250713967326276302f2b6b386c6c6a4d524947542b39556568582f77447a37774436534d4f79515163443144307937734a6d4d367850686c784377745666533978626a63654677416a394a71754e75663841484e72654a4e6b6d334c67616830486a693648617576752f514e357471694f7550474666654d567957494f6e336f497a49464d677a6f465a456734714e37307869676e4d35716161594b4375435a6967535279557277546154414e785130356f42564b59707a5175557051523252554464364971616f46504a624e70654d656b42316b576e6279454b356f47764133443148426164767439537138304768576933754c635471716730586636454e5a374f37354c683372336d7a4d755063727431754a58533330724e46733855426b636b70545a4b636b414b684349695a555639726133626736596b6a34494d35314247706f4f39623766707370654c42586a30724176336f4f51416869752f4430574d6a706c6966624e4c50304362475674794f354277337a51504262647a3666653239474a41785750424153795573564971416f4f3336566642746d3053786a554c53326736735667394473473775524a687067484b364e79505759745242544f3141306c462b39565468496548334c5a445331464a434c6e4e426c6a4b2f626d49423237563139744f56364a3144443372494e4c6955736c304e7463677a53376b432f613136614842623975504c697853677569626d6d4b432b54527248454c46367836674e6e746a4b486a6c30772f4571324e33584e6c782f38414b6a2f5173446e4e4235526a69756a36533173336278706f6757504d30487a585041344c71626549742b6e58356e475537634939315547545a3368626c706b374835727065495577354c68674846614c4f366c416154676733337777774c72454153723558764d446739797241624869677474526c775769467a416d722f4a557869394d466647505430354642706a706c346c61517872696861484839716559614f76366a54437143794f333832784c586e6746357265625132445373637578657430797332346a504e593933647457724d784f68496c4750456f504b45384555446a52477078514155446f4f6d79514e4167686442386b787851464d45454b46636b547a5151475337316a64446451416671694e4c4f754143796531646c626c7267616f4f7265746d646535557874526a4c715779787549626b6170556b366135593164517167716a4b324f6d4d59482f53726f584c4553356965786c6975624f344b6e465757746e6331564e447751627431365847636464756c4f3556625062797464594c2f414c4630724f6f7471507671725a514136654864336f4a626d4d714f50647a586d2f574e31352b346b592b4844745a61392f756449304435726779446f446270494c527570504a7932437a7778566c3235724c6f44624974796464545a33586d4c64474c2f4663596c793457765a7a4773484d494b4c6b644d79426b565849506869746d38746d33634c67314c7247614941326142554456475349716757566355777751554446424161494d55347269706967586d6f364f4a5a53755343595552784b7373325a7a4f464675736244395861673532677a50536f59365456644b3862646c78457565664e63346a58566b414857656139622f41497262314337717a6270354c7a32336959414568646e30376551326c34544a3067687079343979424e7a7442627533626266385a36657953353133625379774b376672573674692f4339616b44726a3163476a37594c6b334e37624a4a6765796a4d364447624f6e73566b61534554522f78512b354a71725463684c715975426967394436554a595358577245565843323239674964525853322b396a6369674e3234577267737775526c5844676e767a4a44726b57397663337434626133346646506b4f333845486639496e4c64584463422f705136527a4f5a585a76466f464a746476446257785a74686f78576231472f70416a6d6777796e2f57664d44676d6a752f384179507470665646343869736479344e5663417345356d5634635831525042766d6775336c37794c3779677a4f4a796a6e3348357179477a326e716c76706a462f34656d513975395966557233394f55706549724a597543526963442b72416f4e4f362f78535944376165722b475643754e756654372b31706667593838766667765662666533496b61695a44682b6136316a6462666344516138597951664e436e41306d692b68332f51646a75412b67412f77726962762f41424b596337655950384d736665673830492b3950727a54626e5a5839755776514d506b7164564d554876624e6946754969544b4f6b5a636c7a2f584e6e5a765770547444727850646d75784f6a6b565762645233642b424675324462504f7675516650775777556431723375776e745a645949485a6d73756b7567427032725873596956784a62327335696f623235726f324e74354a42786442727557684f4c794651734d397279376c3172635235644456563372556f6b454846427a4c6533316a5563467674375455527756676a4d5969675a574332644c6e325a4168742b585442637a66336f52654550717879585776572b6c3548426563336b33754542426d7a5155427169635545634b4e6d4d6c424a516f4769532b434e306165394a55697159536361546b675267794c6f497567425572676d416b4b4961546b67436a48444a576554504568613976734c6c3771776a6d67784d51746d3132453778633444347270574e6a6248686a717a31535730575a4756492f3761494532396f5734417848623763467168427959787232703457414f6e69744d49434262696777626e5a69517135664544426562337531386d6570756c65304d414d4b486936355071316e5861632b4b4b4479714f6c6a5253354271456f5a494947434d49756138554f7858374b7962392b3361474d355243443642502f48746759615261416b52786c2b61385a367636564c302b62417647517858306e6b7562367236663937616c414d4a5a486d672b614f36677069744737326433615330584973506773374f554542437474577a4b7242507439686433492f704e2f75412b5a585373656b62755068456366314438304132396f686d717439754a4654787756734e6a63746b52754e6a6946706a5930466e515565572b4a57652f4d516a5371326b61593456584f7633487561585a42794e325a6a7848735750466c73336b7141596b566372475a5a6f4652554e4f7844456f43634636482f4639355a73334a5772672f71584e496a50682b3965657267565a616e4b334d54685355533435495071514552676d45736331792f532f5537652b73786b5048684b4f664e64453663676746327a6275346863612f365063482f47787a593843753237466b515234666967384236724335742f36552f466e46636b72702b75376e7a3935634f54734f356373794f4b435551496f435645586f674a43552f4646714f6f546d674d59305a5277454b5a6f73676841346f3549436959357355434f536d67516d7332745a624e31626432766c6a586a7879514c5848696c6b79575551464e5449424c424a67725a476c56587951656f3942692b3130385a53506574562f303255775a7876546838666b7978656753486c4752796c546b2b6137776b2b5063673831503048554774336f6e6a71634c706248306d6531704734376a714753366b72454a53314e58327854734c6665677a62585969642b5535562f4661393374415964497146627449675656774344782b35394c336477766275446870456d376b327a394b33316a71463752496e77363136555749332b7546526e6b70477a414f77515a746f4e7a2f77447454456a43514f49344b376336595762686e686f2f42615044466975583676754e4f326e496656466d375548684a4f543370593155716f43675a32776f7578596b623173636c7871597272656c794f69546f4d653668497a62465a744a79577a65734c684563466b4a5a4148536f6b50686d6868566b45314f6d5a415351464b6f47634d796844592f4644484661624f672b4e426d4e63455135665574567937622b685a3553424c6f4132534362566b6766696756326f702b4b67444b4370634948457a684c755375314645764e415672324672584b574e422b5379532b4b376d7832762f4149766e57345031474d35634d434751616472757843583951394a2f48327174636435462f77436d5843346c797831475156634c73686a6c5242366131666864366d596a326f7264555a312b4334473033305945616879354f74557656635769422f4b58506167325835516c507141516a634a4a47564b3455584b6c75726c79576d324b6c5a665576754e75304c684d544d4354636967322b716571526841324c42724c787a487953656f6571626139366459326c6c395544314f4d474266336b2f6d793464667a536c41587a514a6445317755495a4159395333375744514f7248386c7a33344b775854434c5a6d726f457547727063314353616845534c6330415a514959706f774d6949444534494f312f6a746c37307237663859702f4d6142656f314856375a4c6e57396e2f627474437a2f7742516e584c6735774863726f794f48314d6754314543394b454a505742584b7638416f314f6972393637552f363832596b782f54566c5a3555346463756b66785341516562742b6a58704f4745522b715576592f426239722f6a7479456850376743512f5445792f4a313162454e5574555247654746794b3053746d32586c48532f416f4d562f62333541777562716b7645316d68436f6a365a636a2f785445672f3871325375446b2f3853676d4a446e78516379642b4f327275424b4134474f4a34642f466366666232357559613574706d576a46734248393639615a52756a79376f3178503079717558765038647433592f38416979305446664c6b614844416f504a6f2b78576a63375337744a614c38544758746e6d732b546f414b3155484646414944676769785543434771564d6f3955445247755141784b395873487477454973467766544e7239786366415247726975794c2f6b3559494f355a687178542b55376a4a65666e2f6b742b30576a415341347037582b5447354a703278462f302b33373048644d4d67686f6f782f6373316a6569354277585750646574533230714455657a507464423134774f66637133656a5658457466354c4b564a3232433667336e6d3239544d2f765165632f7948623662777578776d4d65595846776f7659657237587a6474497838556574755761386778434156495a5862612f4c62334e63574f5665616f4d6e6448424236445a516836686275584a6a797a4454476e55356b2f464335365a597453367a4b574770756b4b6568543875334c2b4f37626a33744a6276554965587437307635523375673835756273424978746761666973776b52687752717a70636d51456f4a67347a51797167492f6569494f537975735131554b3278746149567a3936446c6a706f6d4d474c4a3730544753706c777a5148556c666c696d30463070786355514e6b4646504355644f72745147594d68584a56737975625469704f41774b436d75434170696d355353784c494353775a415250636f46414d304277375649746d6d35354a5343537943506d5557556b4e4a585a39503841546f53732b62636655634f7842682b324d397472694b784e565844617a6e485563507758597562324f3367625830796f52794b6c76643762526f6a535148316c427a4a625532772f76566475476c2f6b7652626261327230586b52717a2f596a62394e74327043637030664273575165656c59755272494e3848564a4842656b3952334f337552386b7a636a68476935646e59776c562f59494f646f4c616a6b6b487558573952734552426a3459686c79712f46414754475578513448334a58644232515175635631505137492b343832645957597975792f77424f4878584c646466616b3250544c317a4f374f4e702b44645878516371557a496d52784b6864676c2b616871485153737355585a6768384755376355454a52437574375979786f4374554e6c6f446d72494f644547564577696643757a613266533561507a563976596a54674365614467364355756b696a7230457468436645667970647a3656707750346f4f4141706856614e7874355753355646636b4870503852334a382b64683654692f65463635693753587a3730506344623732314d2b456e543777337a583057574e45464f4937436f49355a59717744504a56626d2f62323975563235534d4167343372766c624f4176536b54634e49525a654c75334a3362686e6338522b4b302b706236652b7647374b6e365277437878484e424e4b4a38544442413431527a7751534e536739454b6f67536642424b5351646b78684c45756c7131665a6b47725a622b3773726e6d327a552b4963527758764e6e7537653874693941342b4c6b65432b634172742f3439366a396e663875582f4864614a3548492f6d67397749757a705a51344b7775374474526b554753394f554a6a686f4b54564c47584a7531486373626b657a344b5267773549504b2f354a737843364e7a41556d576b333676327268466776622b71572f756245344350385565304c7a4778394a75376b367a30774831532f4242527450543732386e70736832783444323936333376514c746747642b554977484f7675586f746e434f31732b586177475047533448727671486d45626533534d6179376632494f4e685467706a7a51694877526943533063535542786f6d6863306a544a646e59656a796d786e377632727066324b325267483730486b4d52524179586333666f637263587331476456787057703279784448346f46664e5351617678536d614a71673946365a76726c2b33354a386363444c67742b3232784d2f4d782f53764c2b6e377237652f476373485874744d62655741514e594d4a58504c4a63747158684e31624e692f4f4a6f782b433962365954657533723063486a46636e312b7a4335654d375a63676463636b432b6b526133492f562b43326e5a776e3436506d46523666743946694a7a6b2f61725a5233424c577449356f45752b68505731634666706b756362567a627962503841685769364e33437372772f307977566e56636937755778484641316a6458664148503464365463584a33697a7346317654746d5a6a7a4a53622b4671704e317449526e726851346f4d4f3239506c654f51427766466567323370397149304f77377356356956726333726e524e6a476e426c324e70593952747844796863445a6c6a37304855305737464e545057764a65542f794b794c643458592f5576537873787531755135567175422f6b6d33494e6f7842714e43446d656a514d743561303858587570774e5356777653665334375136376b683570776879433768726a69554845395474694e2b457a6850706b764d377130624679567557525874642f746a7562457259704a3955546d43764f37346a6457342b59434c3061557749397330484f326c2b57337536683378346a4e6573322b3274377533356c69546677727931765a7966425836353750544f426b4a4833494f2f50596153426336672b442f6b745733323474524e7a533059676c6d59724e365a366a4c6541794d5a45782b70677932626f6e5359757a74376b486b7472644e376561692f57645076585a306554546e696866394f745770516c5a46524946585879486a544a425a44654745576c67716478366c4e694c6178584e7463457457484a3164626a473331532b43424a6271357437594a6871636e564c492f6972646a36774a48524d61592f42562b66616d42726c704370387a6243577258724764477037766b67377533395375627336504c364439542b324b6f6c637537616248776e344a7474667334576a48677a71322f49585045506274516162463874326f755a39527756646d336f69777956306f6b416d574c494a62674c6b424535533936384c367a4d54336c346a445752376c366e656572572f546a706b44496d4e414d4f5338544b5775526b635456414854525946304952656771666975727376525a336d755865693378346f4f637a56507336724e417937473932506c68344234726b5346536757674446463631524e6543426a6e696744755551357753694c72703748627543537843444435524e457042646c3671317459796a584656626e5a5735754a5271324b447a4f4f53414e46303776703468584a594a3270416c41724f704b6771707051302b394259446b36654d6979726747785675716c4544616d437a33427136386e566b5142552f46642f2f41423761323935432f5a75696e537a35596f504d554b67344c702b73656d2f322b3770482f484c776c633173454566494b5930516571677161494c74747435376935473144475262397139356274517352466d3368474f6b666975422f6a6d335954334278384d66784b37734449654a76356b47623171342b7875356b6d507a5846326d7a387a6167346775756a363444657441505150497176306e70326747465548447637526a5446556d77584430354c302b3532305431444873584f6c3046383845484d387378444d746d31326374787a3745777479754536634d7531656939507352735777472f6567386a7564703563694f434f30324a334576345633505659694d78636f654935717261784d7944687951627654646c48626c73654b37595a324e5163566932375347724e61794e46546a69672b656275775958376c6d475535414c336c76302b4d4e4e73334b784465334a634f7874645871643265506c39576b356d58733637577a757a6c764c384a4536576838513643324f79737846535a453856787656446f3077674b565863334e364e6d424d76626b75564d47394d584a41436e5448687851632b31593873467a556c62486a4f4e63416d466b4545636c6e6e5079687745336a3349425a635070577333593757506e7a384d4d754d6a6b73753168726d6634567a2f41462f636e7a527433365936544c2b5a427a643775356271374b374f704b7967357071536f45497336435641645134714841497343676a7458496f6974546767434d464d63554444694563636357532b4a68696978456d2b5342514b6f6e334a6d62704b566d356f466b63794b72302f2b4d6571614a4461334d4434447a344c7a587954324c6e6b585958526a475554376b48306631434839433877666f6e322b46664d6941463959684d5467446944456646664e7656746d646e755a3232365865505967784d5a45414c30477a74434672546e535279586e6f794c683136376251476d74636b474f2f662b3369305961755a5758373763677645434e4636473574784c2b495a4c5061394d7469546b664642693231793765493167667a4d753173704854536e597176746f77474863723741456142304665396962686667764e586470636864656370475074546b7659546a7148347176796763514f7842796472747052756137463348365a755233727445616f676e76344b72795963466f4d47486567385236356130626c2f3167454c503661503841797250487a492f4e646e2f49747630526e6a6f4a69755a364e74726c7a645769783069516b53672b6a584f437837766151336c71567164596b5535486a334c524d6e556b71447a64423831336d336c746273724d38596c62663865414f39746b3444562f375375332f6b6670336d322f7537654d5231396e464a2f6a6e706b6f327a75353031426f446a7a51646a512f59566247455735724a7576554c473070634c792f54466371352f6c656d6c75335469612f42423337753368646762637871684c464d4e45496933447041444e77586c442f414a527542394d43725966354f66717444757a4b443073442b7246567930784654563135726466354c754c332f462f546a3779755450643372683637684f6144364248704e4b6c636a315730624e2f7a6370674c7a4e726633724d74554c686464582b3978334e6e797479476b394a78722b54647943584a4351634b6867485a57673667644a63704a30782b434452737930572b4331475552566c7a725535517738537475376a54416173554576376e79334a50742b53622f4637577135637548687036655a2f597550653158707443713976365a744937533135644e545651614c744a55795351744639534c417937553173454d326143336d735738394c326d2f63335974503955614662544d51445a38457534334d4e76624e302b45635548682f572f53503761596b5445684c446946795245733577577a6637325739767976536f486f466a42514d5467794464376f5639794e4542444e3071454351315a4b324669637744437058512f745a46766a493135494f5141706d6d75524d4378795378446f4e4e71497542672b7236566d306b554f4b6533633053456878523341416b347a515630533971754733756d30627769664c46444a71503271766b676537624d43414d4348534f634539795a4d596a67475346425a4b524f43426d6b42716937646942616c54456f6b494d3945463233323839784d5734596c656a732f34394745586d353756723948324d4e766265662f49576c4c3846314c6b2b6d766979516379783658626732482b326e764e563070474e75316f68776270436f3833334a664f6b4547574667414e34754b6a454767563072596c6e55716f524f456b466c69344365786134615161554a5748797937696930786b5a494e4e79794c6f3054714d31356231623055577061374f48795872625a31355634704c734e5653505949506e4e7942746d754b523277587150552f54484771412f59764f585965564a6b486f7651664c2b3375416638684e5479795462794c6631474f70552f34384e4e756376616933336f45307950464278343767573341483745547579616f3372476d5a497173786a6a6b67736a7571615a71323376326b4142514c434c594a35383170733264556b4861326d356c646a536e4473576e51547857625a324e4f47544c65314e55714d674d4841314d7358725870312f66786835494245424939764a623478654f6f594c5a735a504939694435704b314f334c544d615a444a644734645070734b34334a664a657a332f414b585933386446304e4959536a3467765065702b68626d7859454c4c584c55544b6638512f4e42356c714b616155554d444573667955646b42684d78576933756d7844724b4b4975324b4473575a32627a615456626264714f6b674632586d775446457a4f4b44302b6f51595046782f45744f794d6478644163454153507539736c34357a394a586432514f31394f75627558696e2f537438754a39794333314831776174466d494c6535634339656e654f7561715a36465242423155434c4945736f36416d536a6b4b4d672b6141767751645268337149493578515a30634d5642306f49794f41554655445642626175474d7752785862323234722f5578616a4c69575138783272713372596c41474e4a5a6a424231504e4f6c6868795a547a59412f4a2b4b383431794f425a4158376a396944312b75324961347a6a7941344c6d626e64436667374679624e7955354c71574c4269356f52386b484f336c71527a584f6d354a58706478747849306f36344737732b584a426e664e456c3855704b6863494745754b4e75576b3668694753684d4f6e4642304e39716d31797463317a33626b363032722f51625a775761516273514b70694532426441355a6f426b695a49697142434147754f4b736a624a6f79733275334e772f6d75745a32736259712b707578427a6f62416c746446736a743764756d61315367526958314c4f7764382f6275514e4d4552544759674b6c78386c58314d77706d736c366653774b444a656d62736e5077347136476d32486c6773384f4b615a4a63444446413872784e5070645661704d364869716171416b6a6b6767775a51524a78556367555166336f484678585233486c3046667957586d6d4964427368757377567632323872587358454256674c48494950562f6450427942543846315054545a68717530442f73586b594636676b7264593373625564444950594464327a4a7451727771764c2b6f623037692f4b554b67644d47794f617a572f55623273616a6e6879574b6535466d3459787a78626d6736753675695a654e4b5637566b4632756f34724c4464573559696f3756626149754457416774335535536a707a4b356c6b6b544158546d544b42454d5679626a786b776430485246782b78623974656f4e5a63386679584b32387053594e6774396b5245476e6e68795164697a754a4445393477573231366a4758524f7048426565686359454f653161495852496738477167394162397534776b5178796b507757542b7a62562f4d38714c726e692b664354514c52397830732f77415547323459754753326f33545745756b447771726179387a62776d6357566d33754d6561433655497a6959546a6b71702b6e57766f7032713234574f4f6b6c4b62596b3153587a644279397874674a694a417239537a666176494e3846324c746a7a4b6e735641745248534d5548503841496c5a4d6e723766745378684d44566756304a577452595a654a4e4862786c67436735736452784b75666756727562576f4d5252766971726c69726c426933733274754d3135653757525048344c317436774e4a4143344f35324679632b6b4275316b484d4e564a456e46644b333650656c4a756e3371332b7858435130685769446c77745475644d417445505464786372474a4c3572736262303637742b6965676735367352376c3262594c644a307367344e6a2f477230324e2b5174356e4d397a5a712b392f6964776a565975786d5034756b39693763444f574e566f6a4c793841673842752f54647873354e666959384d776538555532566a7a447134664e66514c746f626d784b33644c435854315a4c7957787378737a496978615877346f4e45626573485548486267737479466d3357623177307375704b4451314d3550765763624b64307554442f564f7663673533337469457571424c6331757462714e347561687659632b31644b506f7471513030667366354c6e3376543537593667496b5a47442f46304855737463693548636831524e47575062587a454d4d2f78577534415936736b466b44446a5469746359327846334244664a6566766a7a47695850597373646e6473533151654951656e7552774c64697862714a6e47556370436e61717472656e434c544a5779326457492f4a42356e65374b59464b726b53476c65366e7477525448677648372f414735735857343143444e56755339422f6965793837646565523032682f366a54354c685762553730785a746835457346394c394a324139503230625031597950456f4e5978716d53386b64515156337476613345644e32416d4f613432362f78586158592f3058684c6b61664664304875434f42356f50433350385533554a64424463617579326254592f615575334a476e365a4d76573446456c42774a626d79526f312f4358354a4e646d51704b6f586f7561476b456451425165634d596e776667756275396e63756a6f6a31635972324a3274673477682f7443726e744c444d49414e776f672b66587653647a434775344d4f59584f74365249616c394f7562437a4d5a68634c656634734c3074647136496e675974386b484774624b7a646c473341764b57575935716e31503033374d526b4d313633305830542b326963376b684b6336644f55556e71506f634e347838325551503458516542576a61374f3775706946735935354c3257322f774155323173367272334f4430586373326264714f6d32424749796945484d394e394f74374b32497844792b71524658585242496f725967446d6561556735494270346356496e5343325348494a4c305a65564f4d5047596e54326c4238313373764d767a6c2f45566e4e55393445584a4134756b41506367504e41564b73743235544f6b4c5a5a394c757a664442366f4d64757a4b373077446e6775746139417661645630676677784c6e7653665a377a5a7942465035545262626537333179476d6a506a6d67354734745173644946566b6946336836564b395056646b2f77444c78566b6652344445744c6733346f4f424342666b6c6c4867753350302b35476b4950454b7578364c756a4958504c44634a454230477a2f4850545354397a634642344834707638414935674557777a386c314e706575626533356372556f682f6f71467a2f557653723237756d39592b72365a445074516557776f45726e4261393374376c6d576d65504f69794d67663648566548656e4e456f4f534474656b58577433484844756464757875394d656d71382f364c31536e622f5648346a42624c6b5350435548645071515935552b4b776633574e71345a586f6d515044344c4659704e7274526975694c57337577794d48774f5343522f77416d73435230514937716c6172482b5137615851597942503841442b5335386653396a713862637466357270376547327467526864422f7742546f4d453935506233544d654357584231317472766f583430594c4a366a63733277504e493669326e4975755964724f4265334d61654555486f5a37694f526f76506576334874694431385863756c5a695a52477273586e503867334772646d4177674248382f696734356f65536877514e555161494270664264443036674c3572436550466141664c4648424b43627764617a6954554b6b357558516c4a30424c34357058544e524b3145425a4731626e634f6d41636e67757036643654397a624f34755361416f4f4a5864733252746f6164734978356d705065673557792f78323963477138524566707a585474663478614f4f72756238316d3350712b37424e7657496b50686d7568736656727044546e47582b6e44762f596751663433744c6454475262395278397975683646732f71736a2f644c3831306f3767534653684c63674642566139443251414973782f3841556165395a39352f6a573276786148394f58384970376c4e78666b41534a4e777956566a64585a6e51627737704f55486e66552f513978366631456137663634726b6e6e6976706d6e5845786d664d6957346436386e367a364964742f5574442b6e386a375a6f50504631423731434e49516571434c313370567757505337766d413958687a7249427663764a383133665239794c317933616d517a6a704d58646b46634a3675655345374f72744e46366a642b675774794e6349694677384d5063754c65394933566d394779384f732f52797a4b44446232494d584b306266302f7a70614c5931537a34447450344c725139467462654f7663796c656c2f32345544725a5976576f32487357476c6a355473582f694f5747614376592b6c666254636747625675665445387678586c50587431397a764a7948686a30523776327272372f6658726d30317a2f70416d5852453478796436342f75586c48667451424552315555656967634144327167624a4c326f307952786f55433573696736694143754b4f4f436d4a6f67373971426f784d356149676d526f4176582b6b6569445a662b5275414a584b615969756a3971346e2b5032504f336b5a6e43332f5550643742657575456c676539427a2f55626e4842316a733767585a4f44323967785854753274644a594665653375363052386979656b45367063536766652b7458662b486248524166706f535678376c32647736706b6d583852644b527a716b3549447a5733612b7137725a736256777350704e592b3742596e6371434c5651657939503841386a7362762b6c75596933504b51384a5034657a72705862485537506d4f594b2b645056647230763132357376365635353276694f782f6b673946472f41544e75663841546e2f38796749354657365a4d3073446766627454526c593953736a513179422b6d57492f49726e33647265326279326374647359325a5a63573976656731376a6132393562386d3850355a6656452f6b764762375a7a325630325a3978346a6a324c31653233397663524c41786d4d5948464431505a66334378704662317364484d5a6a327a51654b4a344371686276524e4f53474651676872676f376a6d7047694f465167464559456b7372747059462b34307a70694b7950414c5676647074345238336133444f4c7449536978434452734e395932646b36675a796b66434d50662b433236764d7478767961455434596a395045716e307a59754e55534e5859757a355673324c4c675531526b376539426a68366836665a70356b75724854462f6d4d466833567261332f366d3275682b426a702f4a614c2b7a7552505443334b50387351516b7432494677576a78306f4d6c693566736e5241536c704f5346793935317a56493642776c586b75763656745a376a554e5a45506c77623971796e6161444f33644f4a642f33494a5976656c4e70757a6e71354267506346746c754e724d673761365339434b7565356c7a343763786c30327263674d5449666b757474747474376247554951756359754d66624e6b4744622b7561705432323447714a31576863415931346865586b784a58764a3753455958646542315448476d42586d6257317379326b5a7867393255706a56712f5458444242796352696f546b63304f53494b44706253666c625364305977765754384a72306671376659336267714a614a413970433837746871394f766e684f314c2f414e77585647362b3739476d443437656d4237424b69447a524e416c346f53554251462f636741634d6c447879566b415a467767746a4a675063745a7547666573336c3663615a6f6d5745594f5a494b74774f706c574256317473656c33397831474a695034714b6a65624b357335614a3979436d522f63674a4f68705a5062694347723249454e537242564b596e424b6149486d2b41524d395156514e5552315a49464e536f54524847694278515473556a57716852414f43426e634d4531714d69656e455637456936766f4673584c38684c447935494f665a684c633334786c6a4968656f7644796d616762344c692b6c774833674d78687150774b39486f743359744d3051637546367841747554452f7a4b72636a5a334270744564315077576e633762796d467941492f57315747414b35317931594e62654a7070414c756747307654743342456356316239795174764d4d5975552f705870326935476377773854594c722b7062515872636f5278495165587433396e635039635661763072723766623743556636494e4f39656347306754706d385a672b324b376d7a394a74474d5351584134346f4e73724671354854426a467341764d6572374b4f32757550444f6f58744c646d4e7432792b6138372f6b305131725467485165644a70566b4134484e625074705739714c7a654f5241376c6a4c4f794145414c7365717a466a6257646a487877486d586375716452376771505439704f653773776e436b694a4e49597846543841566e337438376e63584c333670535a38514d7667677a6a344947714a6f4547514e47426c4a7331304c477a666d6c324733387a716c3731336474745153776568515532397144394f517957727959674d514672454974576e7a5145594836712b3365677a5274676a7156735948682b394e646e6274314377335056764a6254624a353671636b48516a624138533151674a437134557658723978764c73412f46624e743674646c49432f5a4d58786c41476e374546667176705976774a6a342f79586b70774d5330736c3947772f5074586c2f38414a62467542686474304d6e64427976547069337572556a6c4f4b2b6d537a587a4459577a5063573467616e6e466655437a31514a454159594c78332b532b72656450376132576848786379757a3637366e4861577a4342363555586770504975616b6f42696a717153675470517a51512f42624e70734c32367045644b623037596e65545a756b59723247337443784852415942427a747236465a744e4f37316e344c726978596a4674415175633845593037735546647a59324c745a7846467a626e6f31724a646678436d434c427175546e3759495044656f6250376154414d5078574d55714d5176572b70323437697a4c557a786a7148476938695548306e307a654464375733666c34694e4d75305972585279596a4665592f785064663072746b7451786d4f2b68587042514f36444c65746e57357943736c307730357057653432524c3969726e507a702b58436f6a6d67535568322f4e556e62784d6447584c3845384d5349354b36414f43444a75496e62516e64695745596e7864693852637547636a49346e385637482f414343636f625054786c70586a4d4d554442313648305830377a5036747764504663506157764e75526a677662324974625942695268775a427474776a4477686736625633305765467a53426d72446574774771526f675763497472774a584d3375796a66697a6458466447472b747a4c51426b4d5879644e4d435a6f67384275647364764969537a695753397076746c433534735635626662493761655053634547567377752f44314b563362474c744f49712f44426566563233635362696739683648447937426b637a712b43356d3732385943394f645354302b3964545937376177506b53754e632b4876436f395673655a4f4d4965453955712b324b43335a327845434c30455174666c51505352544259725532623949646443463045596f4d6e324667486f4663306c7931626738597870484e6c7076626b515743463058376c61517a516472302b334557524b574d7139694e367847765077716d78666941497877795734677948546967356632396d664146583237554c51365173773354584a514f4c365673684d5444523979432b334561613158473957306732357a7247334d536c332f673637727446636a66776a64746d45767151565834524e7a6237697751535a61583545565857754d435065754a364e4179747745766f6464336c7951567a6134326d69775432657157474f4b365168564a4b4e485159783664426e4a77373077394832742b476937586d4b4d726f69756d52717043352b697141625430653373375a74324a306c4c5631312f4a574859334e514e4a4e3855384a61683163565a433451574a515a4a37503670524c68597478744967475561532b594337597646487a67512b587951655638364d2b6f53423548464c653238726730777a58707275303232342f77435731456e4d7373302f52746f586a4547322f435344783876543541764b6f346a4a64586232647045442b6b442f4142484e64533936415a6a7076476d4468595a2b67623633345a516b4f3849444f785975534974327845766945625070666b53456a636e4a754a36617258744e6c6673654d503266765775555154576851565142694f39476478674b3950344b7551725433717137616c666a4f324d34792f4642356a636957376a63766e785071484b4d5674394f3947745849523347354c695138484467367a3751362f36583644586e314435727332742f452f3037754f414977396767364e6e623262636636454952484556537a323461755075436f6a61387336397363667079576d3165383268385842427a647a7467513859754f433831763745625633544545417233557942306b4c6d6573656c523364727a626669674d4f4c4950477859687a676879556334464b654342374d645a3072746257335678674b63467a4e71536267594c3056694231636b477131445446355a2f44327a526b576f6539614951494742526e626c436a494f5a646a7179354c6e33724d515779586346697451717a746e476c4235713774395055506267737046477a7a5872375777456a556636704c542f62624d2f474851654849526d5063636c3744642b695762672f702f3035444c5336387436685a4f33767974634f43444b2b5258706638414644716c653461592b3375586d475a2b4b39682f69397654745a3347724f625032494e6e722b314736326b744965634f6f64672f5976413531583072635341747a3746344c3150622b54654f6b4e4356596f4d62493648595253713362514e793743324d5a5341393551657a324e754f33733237424965496339705779427058464879414137567756557045477543444c7634663069324f6c5964744b56757847474f61375679486d52352f44327175546642693852554241742f634e4835726d36684d6d537576784d694e576157784b336166555779515677334537637143693665333962387350495578376c69382b792f585565355862532f745953784558373044623766576478613643646231702b4b6f32567a5263474f4f703132764d7458597441786d4f544f7550366859386b363766306f5051375336497836733671325a4f716d444c48737268755749546f39583752697454752b546f4f52764c45724737687549304a783572743753777a337066386b32667577575957784d36367962395332796d62647168717944487638412b7050514d766d7377456a686b72647778596539414849635543694e52466361397568754e32664c2f77434f324e4566784b322b72377a3753795977704f35306a737a4b357577734551414e487167362b78416a6856656439616959627535453852386c366661786a436938372f6b4453336370444e6b484a4f4b494952624c697266496d4b6b557a51556b31514846504b4c71434a6d3059687955452f424a476d433668394d6e626a312b4c67505a6c7a355130457567554772684d44524e62746d5237757861626c714674744f54494632753076626d576d3346382b48784b763376705637614d4a3665714c307142784861463650307135434d6f416761626762764374395a32766e577a41657a666d67384f4f655357533630396b4c6b5a455978476f686c7a74786238736a6d672b6a656c6b2f5a57512f2f414534726b66355674504e32736273425732636634542b31646a30324c624f7a2f7744546a54755650724e7333746e64694d6366645642344b4f30755272536e4e65693239304e4535484a5972304932524276717937564c5a4d5a615267673944626e71434e79596f542b31636d33755478576a5835735143675339766f4354796b77397543776a3137793561595265744857366532746e6f6c48557363747259683470786933763730477148722b6f694a736e2b59486a795a617a76686a4773666351736d30755748306955653164433574684b4a6f4735494c62643053484e6170556a56637661774c6b597879397933546d614846427a6435447a34742f474333746b71397a632b3374323773483032376a6c7155374670754153654a6f75627474634a584e726371395167395047666d2f314169374b7661394675456578614b57366e336f4d322b6c626874702b624c5447555a416e74586a54363764746257473073644d596a716b50467a375061715831723153572b754551503841536a5163327a584a45543349444d3675715653654f4b5538465071524a5a41487a7a524952666a564c67676e68376c424935596f6a464630434279615a49784a7a5566504a4d5a48504a426259334d725a6f75785a6e4863773144484e6341712f623354616b386150386b48573874792b574b546351414442644b656e79784d44786539317174624278726c522b78304750306e302f5470767a445359734438463652394a307250627477307353566e3358716b62636847456464644e4f534459777a78545a686c676836674c6f6253596e6d6d6c666c50534c6144644b626379764c6635503668726e3972416c68347531642b37664733737a76542b6e3572774636374b37636c636c34704641676f6867706e524741633151534d5a534c42646e5a656a4736524f3637492b6d656e4f515a413971394a486f476e42425462395074322f4339466647794d42677241344c6847474f4e4548423956394c3877613444722b61387a4b334b4a59696f6f76704d774a4c7a6e726e7062673334304978357367383169724c387451475442554e52506b67746876627362457476712f70794c3665616f44344959715551624e6c7434376754675a61544745706a6e7071736e4e506278356e38556b6f6d4230796f51674e4753386c4e4c4b4f786f674e5671394d3235334735684448367664565a4d56306653706162327148424236794e774f53465a723168694d46697474636d4e54314331626e6557397644724966673955444347724a696c6c4469475a63795871396b6d6b71466166765152694b2f4a427038504a56796c31382f7a575365375a347242503143354545422b564548636c3065494f4539752f627a6b4151764879462b3778716531624e74366464595364766958373048733748563446726e6242433548702b3175576d31534f4863757a62664130516332394152656c4635623172302b4d41626b63516346376937447a416131344c7a2f414b6a74684f4d345378496b325655484a2f783030752f366669756a646d4a5534726b2b68516e2f41466a44777869757071457645482f423046463245626d4b77546a704c6a74396a677570714a714f61794547526245494f664b42774c4f746d3269496d754a5663343953746730706a7351646d7765544b79556d4b70684f492f596e694e58566b673052595277562f703536794252772f65716264755630696e376c7674326f325a46716c6b4432704755706e326f6a5a6b5241555a5a74724974634f49456c706a53337143446c2b706569574e38483846333951586d392f77443478754e754e567272694f3472323330756a435a6b4353672b5a62653346354366412b395547692b6b377a306a61376d4a31514773356a487458682f5650537275776e5550622f5567357a6c79676531516356437943797a624e3235473347726b4264722f41434335477a47317362662f41456831667a4654304b7a437a47652f766543313442786d754c667579763344646e6a49763730434f685251636c506d674c4e5652386b424869696556454178554b674c4b5351454641306f694478513546415145464253694a72564144784b4c70635553636b443235364a417878433732313351767771586b7541553169374b314c5645315164793574596d5a2f692b617753736b44437130324e384a78366831636b537a7345436253443949792b4b374e714439557141726b777543314936324372752b71644a6a444839556f6f4f3563364b75474878586c6437664e32346531473576726c796d4379683830456f45664348554941374548514538436a686b6867484b6a4d676d50596d4557435657516b48375546595331577732784b5053733748383043486b694179684a4254326e6c49416f4f7a74497774323634712f7a5463697970306d454d4b6471704d78336f4c524c6837594a635458454952766672416235496b43564f4b41585471636c59623868344857693444427a6c37317a35334b34494535496d754b456958633571444242446a7951724645784b4645427743424c317a52446f4242464f314e70515151424d66636741366e4a426647397041593178566b723730574d4d45524f764a42766a64307a316e34716d2f622f714565355641616e7a4b323268526967777a74455679356331307654626e6d52387459643066306f62653862647753396d51646d3544512b504a637136356d534d5636533649336f416a416a4e63666457444442424c505668547656385a7658504e5a37664b6a707a454370515843657270526866496e69367169476f4f4b4f6e79794547713363453249542b634e4f6d72366d646376376f786b496a75577a7a7870302f46733351656e3239754e71324c554d49725066684c62335844365a4d7235793033485037455a53705444322b43424c6c77536a71346c474e38686e772f4253566c34344a6255664d36454771513142777374344e5038307339306266525a4d5a455a316f6c6a4b3549764c456f4c424376566d6e59444e4c454f4d6d545342495157536a71484e5653434f747152637153494c5a494b4c6b58496c3272474951767a4d414f6b5663344c58754a2b58626d59735a7430725036494965585868714f6455477357513241644b4c414d6a4f6e546a77484e616d314576565950554c554f6d3344366e64426d4d447131444439533052464877514d504c6b49642b6e6b744d6f74422f5949425a59647167487652684d36542b43614245437a565046427a665744657433626479334c544763513735455972697a74534d684c766b634376532b756b526a614948686c6e7a7958495943504769422f77436f77684141365239557331566373627563615474783975785877414a6355343856746a74626437785963735548456e74642f6247767a6733383641332b366f4c784d2f34586f3363753763394a74584b796f4d65537a54324e7530576a2f77436c4258622b307561644a76435a2b6b5644384d46665052623659794f6f2f544c385658734e6a49536e4f4c79634552666e38565a44302b5673795031487672326c427a52367a613234306d3372492b72557a6642616472363574354e726b59386948436e32467935416b4342723955553176625368307a7357794f4e4548557453686559326a45672f7054546e47335735636a456e2f75544158503841374e594c7a6845776c7868503831526439487476717561356e2f356b71494f716478592f373176756d46355031612f62755842354d68494d78623971364d665134616e6b4978412f6d5034712b78366661734d5241476638534166346a734e5570626d5938485448767858723548765841394a75585275726b4836497831474977637275794e4f5341366b777234556d71764e4e6b674c76512b33596c6b57545242774b4c424142496d685578795131616a7955494a77514d512b4b464e4c71495551535742664e4b78434e4d6c584f347864415a4552716f49566639695345533676416f674557556b4d307a484a49587a51475841354a73475a426b4b466b426a45342b3551733163314938556b356873695543556955316c49376c2f5a6c5275376874575a58596e5359343530516650384131537537756b2f726c335653324e72637564624f4662366a4757727a5a4f5450714a346b72702b6c782f38414872784b42726533467550526d4b71472f5a73482b70394f576e4e627263424575714c2b303834366741377631444642564431765a31476d354a2f35667a56742b2f7472682f3841484d68504f4d2b4379614979627a4c493135476f54784562683161533748486877516274755a3367304a512f312f6d4666754c4e2b774e643249306c734a6b685976537074652f705179726e33726f626941314345322f5632756735453939624a506d6e5445594d74646e317a59686849532f6d4d666a6a2b315a4e3336584b4d7464734167346a3855646e74664a6b503655442f505833494f3962332b303341613365414838564b393675747a444e71317877564e6e59376534486c5a6a71576b32596a777345486e7638677433723054636149743232375850446c3272796a7576642b753659374b344252394e5677505266524236674e647774454841596c42772b5368504250663069354951384c6c7578566f4e477a76793239324e77592f6d7539626c61756a574f57613832354e4676737a6e4563766b67366c79784335692b6c7161566e6a36624354613553684531314d43796146326a5a72624b476f646f515937667075776b662f756e2f77447a5a4834726244306e5a5370616e635079507656554e6a4b3458474b364f333255624f4177515a35656737582b4f583878577578596a626a6f794456354c5359686a785a5a4c6c7a526a4a6f69736967626358346257306230387167633876697644584c6875544e79654a4c6e744b332b71656f6e6479307766793434632b613570434167316454476967706967327041512b5365557452376b676f686c56424358716965434f6e75556436424170365530625a6d52486a67744778737833462b467154744b566578624932495333346a434f6947727738676739434e46697749786f494c4b4c39754d7465344c6e4c566c324c62754c486d554241412b616f6e365674356e584e35793757434268367a73744c4755482f6b4a2f3841685765396173376a71735330755847696c654a56467a3057314973784874373170732b6c78326e56475248543748755158625356323541676b616f394b303771316432384e5569444c67716638636a356b37737a587163486a7a572f31514e4b31492b463048416a75747674514c6c35357a50694d672f7547444c6f57503841494e6c633663502f414d327a65346c44632b6d69355853344e464e70364a5a74525a6e666a2b5344614e354335614e336245455234666c6a3846726a6474334c596e4a6d756648386b6b4e6e743975386841436d58537262634262745269523363454867505739724461376b7867656b395876584f664e6576396632304c2b3732776e585752416a764743792b6f374b7a4862334978684742733665724d755771653271446b2b6d2b6e2f6633664c42305138557063422b2b69396a736476747469524565574a34522f58326e6d636c3558304c61486358687763616878694b3158734a52736235374273537230796d7770332f414a49483362336949655a70674231694a7153565874746e43554a454e62456a3079465a46756272784e36376532562b634c567739424958705038414776552f75483231302f314164554a494e6c36506c677a4637706a2b747373655a574f7a367074726b5a6631705778456967694b76324f53756c367a59746e626b615153546f6335506d75645a324f31322f566f6a492f716c6e32426b48473330507542716a716a48394d69754e4f49696363463648667946323430657a322f4263432b52473549494548464c47694f4b4476514947703349506b6f43416d774b43434e564a444970555a41346f466f79495a523343364870477847387641542f77434f4e5a396e4476516437305061486257664d496156327238494438313144454f67574f545a64325359697455476266587a59323870776f6349392f354c7864326c4f3165753958424e714f514a3731354463537151677266676a47446c6b735975726f57354445494c72516a705a5035555a4279746533394e6c4964574330576654626d54754b6546427a667364556d4e436c6c36644c454c734461626d50687479397662697262657876742f7879427939736b484873625463626151753262676a49632f62334c73576656742f626a7276574933522b6f644a2b48354c5274765470416e56476f7a78626d756848626932514d732b4b447a473839636a656c72466e793777776e475448764456373131396a766675494337436b786a48386c7a5057746949584a536a384f43355732334a323078504a2f676730657437654e72647930426f543634392f3758584c4164656a3966747875324c562b4868464f34314338396a7a5143584a5149616e5541716736767063493362463644645853337657763148613239765968434936706e56796f73506f39337939784545734a394575396462314c61584c395a447746687a484876514c74704345597452674f7031766c434e344159736346796f52303969306a64786a5542794f487951626a745a526c68546973567661334e786336414b346e67416d686576376d576b5070527677336475332f34786239516f2f642b327144766257333545664c384e5857506557524e3561587a37563569473633646f6b39524c72716250632b6f587958746a5166716e6b6732326249755265456d507452616f32744a65574b353932467a626e7a3431697731694e475059744564324a77312f56376539424e3364506b33612f524a632b785948324f31476337686c777a5a614c747956796b6336465637342f62624a67502b507069357a6d376e7578516555754161706163486f6b5a517161477a5164625946396a75346638413070662b70767857585a627737585844474679426a49634f42376c6f39486c475a76576a39646d34414f59367677584c6f674d7a556f4e4930515a3174394c7352763767524f4131532f326830433766302b37654641773472736262304c58487867462f457438704d4f6c384d50795a593537362f457462737a6c2f50476e79514c7576514e7859477545686343585a4364695a6245733478396e567366576432447075325270465330532f76646b3930696477474c6a5549346a765164493353527242666b755076504e766441392b4a5862386a7937594f5a43343236335a73546b496976355651636d353666634d71526b65356272486f6d34483954537a48444e616472362f4d6e524b77535234705170337270574e7a6233524d6f617459786a4f6843447a573532656f6b42395335303763726669587570625731506f6e5538563576384179477a437a657477694b61427951635971323237736c6a4355366851552f4641724f564f3147544f79577051517141714f795a7330417156307652623474376b4352614d2b6952584f4e464e576b366f6f505358747564704b45352b4c71747950792b4331575a30635657612f7743705774376269596870754a534272376b304c6d6a356f4f6b326f42364b735759326a713073546d4f4b726a754245417871567a373238387937474e776d4e6f53426c6d673944596b5a6e5765786170544d634d6c794e76366a7470784c584d3877744e376662614d573836455479446e34494a757470593342314750567846503371793141516a704237316974627a7238755450694f595730455579356355467477366350663272682b73376565356e617452712f7535727254754f4f72483234716d467658644d686c5467427a5163622f496d7357724732676152426c376646637230765a2f65626d467331425056324446586575376d4f35336b70786b385967514237422b6136762b5037636265333538715375556a796a2b3142336232336a637241434e79324a65556630306233636c382f334732756261346264344e495972364a47754b776572656d52395374662f506a345a6365525165455a3863564f7850657479737a4d4a306b4b454b73466d4951656873416265304a484161666571702b70626d2f2f54745963496971317a694a324253706a452f42555133454e74466a3369495155523257356d38726b5a642f424d4a3543685732333632473051737a6c37646978376d2f506379316d336f6c3455485373774d344f505a3151596a557a67413472756248626d466f617377754636683661597a4a674a474249594445494f70744e7a74375147715547356b426272653674585830536765795472796d30324d4979315374452f3841314d4633624870397474586c5167654d5547346c7775482f414a4d424f784358365a6d507671752f4733466d6246636e317931713273682b6b69586467676f2f78333034573466645348564c77446c78585a2f756a3235394a387950302b33425a72652b7357626c6d7849744c52466a6b44774b75334e73774e3634502b334b58665642354431586343354d52784e64666175594d6149334a3635506d6678534943586571303748614864336441377a77576245747858736653746e397661442b4b5131532f4433494e4f3232634e76445262464739355677426270563859534d6159726e37755738737949733264584f5262344f454133467a64322b7357396366345336625a2b70323778306b615a2f704b77572f38414937304a614c316f5250474c70623132337570527551365a4f582b6d5344304459555175526b51566873376b69494256463731694d656973695030785143384775413456367577386d586c4e7a4452636c456356364f473874583565584945534e4f6f5658433954482f6b544177426f673366343165306277514f45347969666e2b433970475a416f766e2f414b58633876647750457437364c3641433852494f516778797638416d334a7768307944523149585a2b54624e7579656f34792f6173753161526e4d35792b436b726b5a4543475869356f4c37466b323436503372514749376c6e45376a316943417277534b385167382f2f414a4a636c3564754234796b2f4a65622b4c4c30482b5453506d57786c70586e3249716736487051417536704c303862385a4d526b764f656e656d7a33555450494c5a4462334e6e494f656b346f4f72754c38724d53414f617837585a334e79664e7553772b6e4a644f46694f34744f66626d7544763756793254416d514762594549505144633750626a5235304279344b32473873584a4e43596c32466562394f324e677972624e772f785569765562506257397645533052696634526767716b4249564658373177765662477262386f316936395263354c6c373231726959635167384e6c564e4136434346434e4a5a6b493956665a3047752f3168786a2b70656f394f7551335731442f77444e43476d512b53387274775a6b526674624a64795676794e347770537650707851474e3834443250747754472b46564f4a684b7543716c5754382f59494c62392b552b6d4743726c5975365149536d365952304559766d722f414c2b786238597179444e612b34746879645565636d585673324c6c31702b5a4b4f59475379322f56664d65454c526c45344e554c56443149576f6172316d35473378306f4b6655624537493830456b5031505657374c63533036786c2b4b326663574e35416d30524b4f635777584c32396a794e6354574a7751646557366e4c4645776a4d67794473736c6f64363132576c4a426243476c68454d4664726171447445484e54586b63304447543455354a52774f436b6d78376b75716d6e6967576351617174674d4662507150347175514d66326f434f614d4834732f76514772484a527050326f434a4632566b43394656574c496b307269677438774f324c496d36636c556f4a745469677638414f706d6d6a6430446973346c7078785246786a706646427068634c4f55664d6a70656978794f42436a68426f75574c4e796b34705962437a417648554f39494c6e7432706f334343484b446d482f487a435a75324c72505853597568503061386351472f686f5630622b3768746f6564656c30354445715776564e764a6d6d376f4d5672624778394d6f6a332f4a4737434c2b5a42784c7378585347366a4d5043514939366333735155484e6a6447346957785362652f35647a79706a48446d74643646715858414e4e594c396b3352306e714743447a587232784730334a302f77444863366f2f6946794a46653433323348716d3259394d3456726b324b38526f596c386b4851394e736135616a6736365737336832384e4e73504f587754374378354e6a6e494f706374327252457270412f5a7751633337726577446e5670504b69326266317655777569764661496570374d67413636717264324c4e7a71745a3166324344715739784335414e374f6d7533343252716e384678646b4f706f7557572f64774d4b48424256632f794b46767074774d2b636b32312f795457534c31706f6e394f536f322f6b574a6935644463332b4b3942747a7462385152704c395163565157516e4735624534566a4a6c3433312b784b4f356c4c365356363337614f336b644f4279584e2f79537872322f6d48474c664642343845354c336e6f676259576a2f4e373358686476626c636d495272716f766f5778327832646d466e68483970514464457967514f786358316a61772b7a3879564a526c30393637747963425531586b2f7744496436626c77626359572f467a4a51634e647630446152755866754a56454430773572697379396236427466493235754878584d7553447369512f4b69426a47564367496a737a544f446d67723042794d6c793937594675736346317938687147437765724552735939526e476e4842427a3469452b6d574b77626e3036574e7571313254556e4f67433361644936543746426e324d725675545872636163745336766e6251696c6d446638413078386c6838753459734d666d7239724454307a71676f39513230647a442f7872526a4a38597845616479783266545a326a49616e4c44565846656931394f6b594b694e686e4b43726257785a742b584841462f662b315858722f6b786c636c68454b6b394f4b6f76575a622b6364754330443153346b494e7670527533624f753677456a726a78624a316f766b334c6774786f33692f4258334a2b5246774d4f6d4b78324a6445726b717536436d3459335a6b354f795763725965633651413149576858564c6a55726a3737642f637a47337465462b72762f4a427a376c7737362f356b2f432b48414c7532594541506d714c4f314673616367666574734b4d677474674f35774653764e656f783877617a2b7065673346794968706b64494a7878586e7435474f67786758727751443072592f63617079384958542f7437366f787a7a4c492b684274755872316151756a75424b32486a696345484f683644626c346e4a37566350523765334f71496d2f465a6a486658445367616a746c334b75786633726b47576c6a6767314f593071726f57374e7a726e414a5243563258554256644c62626359596f4d467a623259417845577a516874374d333661476b6c7133396b6b794d4f43344f356e75375659394951656f7362434554512b35614c3232387871344c6c6247653838714a4a672f7433727232746477506359544661494d6c33303656754a4554695071586976556f6556664e7558306c6652774b676e32432b666570573533765562735968795a34495065374b4a6a7472512f77446c782b5365354554746b484175436c74773871454943756b434c39697371653542354b355a6654456d6f574f594f726d4636532f3658726d62746874522f5667754e366c73723233486d585978307655772b4343714d513632323641743731677455376c73747963594f67353239687548614d695965354778737475542f564d3876442b31646956735834737a465950736234384236666967314859656e36644453663235704e7036666674586456695a6a61346366696d32657a763676363075316469494144494b3457786237635a4a35504950676d754577777a576164307578515658677a6a357175337478646e47635045427031636c6261736a637a307944786a553158524d5952496a414d5077515778613345415a55584e3963335a322b306d5234726830447678572b4f4b386a2f6c57376c6533666b6e773278306a6d616f4f445771684456554a557743414f786f6967416f5278775148546e46514d6851436d4b6d54494267692b555647303051465542714b4a694748464b6a563042594443714278716955474a7269673952364866684b32664d7162526f4f52585176626935636352625375482f6a354a75584c637344483547693942495662326f677847463355786b657a4a575174526f7756704137656130324c64486243694266494d325a614c634262444d41666768493043536236574f5a5163722f4972756a61615838632f6746354369376e2b5233784f3747794347746a346c6349733643654c714b362f7057786e656b345a6c7934746756324e70643345756d774f56496f50513239746f7067724441686353583978674e5946506946565a39536e412f314d755655486f645836654373743157547a53596963484d53735736395176327a7074796154346330486f434d41565866746937304841686e5844326e71752b6c55323553442f534857795072554845623844626b4f4d5548693978624e75354b48416b4b73416a484442645031363049626f7a677a5347727072566378786b676846616f45703231564b55566f674543415630642f62313237653448316870667a426330484e6c746a6542326b72527845684b50653643697a5a6e654f6d32484f4b72306c324b6533636e614c774f6b386b6b716c414f5a7175683664456d3444487543352b716a4c72656778313769454f61447037793859776c435069343572415052376d34616370615973354d736663756c756f69334f526a574957473736724b48524147522f56495643444e66394f466e7745796275564675345979474134717958714734756b36753943315a316c78782f656731323756793457712f42565872467979415a6c6c336470623042785849492b6f2b6e793346765669516734467665437950325a72545a3961455a363552315a724a4c303838416e736255513863533537304870396e3633627555454a6a756f36366b4e784766566e774b382f5a4e77686a4671354c71326d4463554853494271666775647537514e326f707a572b42425657347336786a32766d45486e503863746631647a617542763246627437366559764b42356b5a4c52667344623235334c4936684758653334647174324736473873655a4876474c46423538794a785a556d644378586f372b787458334a46567a3733704d706638414533427059494f5254567050684f62713231455247714e575670394433556670676635546b7262586f2b373541484e33515044566d743232746d3477674b4d797573656c4341367953654744727151674930685242585a73527444534d5656626c6f3879584e61587a7a574c7a4e56736b6330433761576d7a4d6e4f6561766b514c4453344c504f6262654a6f306c667561516a2f774335415a7961464d776a746830617971626c3177495a45365664636b49523038506b67743141706231694638614c67654b5345396446634b696944796671332b4c4d504f3265417159477675586d37577a75586277734d307957725266555163677544363336626a76624d66366b427150646e334950502b74376946754d646a59384676786335486a324c686e3237555a794d354755366b714d63304549554a64413855515541555a546d6f4b594947504a4b455834714842424a493645432b4a55616941594652754b6849774b4935594941616f67386330475a4555715541664a454643714a356f48745430594b3656776b304b7a526c38464354496f435a6b346f49424555514150336f684473552b4b434f3243495a6c41464f5343437445587a53424e7a515156376c41526d6f7a5651424b432b4e38774c594c56437a6276416952494c4c6e7578717249544e4751573364735931466149624f6c7a327856396a654443515630624e48482b376d6731584967523041354c484f576b304331584a4f513679335142575342504d476c386b304e79423034425a376b3456507556635456425a75706d6663737a4f57567431737a5255304a6441574f534271453073456a5a6c424f525577553571534c344949584b44497652516b346f44716242414839536d49593449784b4352354b4b594b5651453149644438454355634544526d51613157714633564944397178596d6932656e2f38384a6377676d3969525051523144784c4a45726f2b716a566431385864596f52456a32494f337362786b4d507a562b3474656244554d5175647472676a7077476b34386c324a794578526d5163713745783665435456566d716e76584e5248415a34717145786d6776446a717146586665497156614a303968565974314f7265394257415a7944565a6276504c733157775850744d44584e6174556348477244755165337551316959784c644b7a3761394674452f47614c5671597639537762714d6f544d33635974797a5164574676564449384f35636d4570616a4d3044726273372b7575465067732b396a474e305248686c696771466b526c514d39614c5341415855746b53446a4a4e706172494a71595654676355756f5a6f674f54374d674c4e6e33496152454b55794e564a45426b4656304334644c5a4c6937585a584e764b562b44686e47683865396465395068695559573951706767786258663769382b736756384f66762f4143566f6a724f75574b3144624f576a6c3731646374693250784b446e33336c4f477645666974737749786334737377747933467a44772f55743238675459356f4d746d555165764657374d4735646d54345238566775536e474c3573756a7449693359367548754b444836784b4d2b736b644a59647134676d325743375739674461592f584a6566757a4d4c6d6e4c4c68336f4f725949314e787a4b3645504c6255662f5375426175696e626a6b74666e694e5437667551645863586f327733454c6e524a4a366f304848452b35632f6347354b734139566c4871313632576b4848622b314237445a7741724877736e7552414e4d2f67764d575057634f6b30714e4f44725566584a41744b325750747951645331636a4d6b526154464d5a79354d4f433835393239776d4853352b503472743765353567316b73673167794b6e5549763730336d514170677330726a38554175794747656135573433737256377968463655666956304a534c724865326d71555a7a38514c526a6d35346f4f2f3656626c355276546256644f6f2f674f344c56494d4f6b4a724d5767417a41525a5267794352566844344b67414174677249536f35514d4458556f4d45612b395438554169476f704a6b536f3643417467687130306b31554f5873333745736a6c6d674d354475564c3679416c755847352f4e575759524343324e4f314d51564161496c73536767445551375553684a3041782b61696a35476a4b45746a6d554542703030564e796b4b70346c6977775664356f3651632f336f464c6731576664786662335935796956706961756b764457386631412f4642343237745a5874734a786558786273542b6c394c514f41642f677466702b36686274744f6b6f394c4b6979625275457849494a2b4b4464624a495a57364a536f542f71564d4363632f77577133484e417073737a315748645844446f4831726465444f6678575733616a666d5a7a5a783067494e666f566d45424c69757275397443344e66313546633761376f57797a644c2b383969366e6d527541615367355a71644d7163705a715070385059724e2f62684969546457537074786863365a494e746e55417257494856696a623032325964695579632b3261446a6635484b5574746f4831533731733945326c7978743477754e714f6f696d447176314b7a356873734253344f53322b6f37324778737a757a49317352415a6f506e4577306a3270644a427169584a4b4658726b6746485776616c347974795038414b736f50747a544352695851626f626935743545466d4f6136466a314f4d674163517557423567664836566d6e43554430356f505857742f616a52792f4a62493737617948566368482b5972784d62736d57717a41796a57766367395075505562634f6d42315350444265583954336b3778306b30705469744930323474394f4a663841426365354d536b5a635541414b6c63464469677a494363564b4563304d6b4d4544397455414d304d616f7844424241516f2f425134756a71666b6730656e33685a33454a354353373839744731767263327a4a343831356967376c376663774132746a6344674f726c49635546354978346f77753234654d644f4b79436457484433707863456b47364f353278776c45386e585033387a63654d4d455a573441367449645a66756265336b5a546b584868694b6f4f33365459466d3232464b4c547664744863326a43574f52586c39762f6b42724144713766624664452b76796a4a7037655a464f714e667762346f477465712f624e62336a786b4b526e455549357252623958326770723153503841435866334a5a336257356a356b4b6a4f4e7950484a4e5a6a6268574d514f77494c376370332b715930782b617638786f305365593653557745484939534a75622f6152486842315032794237636c582f414a4a4d577263682f7742342f434b364d62506d6276586e454e712f4a636a2f41432f704e6d50415350765a426a2f786d596875433478693374376c3676663370376261334a5771534142694f44342f6976432b6c786c637561594376366e777a58746432504e3239316e637730756738544c61334c67312b4a33375675324e753574375a763234764f4a6a7070576e64676b747a4d426f356d493575757659486b57784749426e496a6d61356f4f703672644232706d2f5650524c54384678435865413430354c746232304962516936415a516938666d75474a7845524d52455a486d364348706a4b55736871397938314a706c796172304f374c517878695635385138525156305262696f4f5367726a676746585265714c475341366146417546536d596f754d5662733970506558685a747335773159494b474a2f426531394c326e324f33454a556e4c716c2b4335323039442b307652755870776c707149784c3179344c74534a4b434f6e504655366e77344b334446426939526b507470617a68682b39654d4a6554723166726c34323975495057574b387859746d374a683335494258765736334c654d4e454433576e2f4256324e6b5a5231334a655844353967782f42575233517448544337646a4676453746304861394e3364364230334973542b714c5348762f4264694638334b6b696d6543386550556477356c43345a78475568714c665034717a2f774445473448686a442f6167395475623837636156584875577439754f727a504c42796c494438567a7a3672753979664c695242385a436e785646793241656f47354c4770706832494f7a62394b33304a4452756f502b6e7a43563172637433426f62754c2f787872373135437a754e75502b5862416a2b4755682b4b73472b6a74354837653565684134523166562b5344306e71316b334c52755146596a71487479586a7238574743363976384179486532756a63784679483859307959382f33726c62766377756e2b6b4a526a776c4a323730472f627a2b3539507532443472545849396d666346786a31594c5274747a4c6253316a4d53693349686c514167416f464b4b5a31536f48457a47514d636c37614872473033566c3553454a6b65475749504a654872677068544242364f7a4c7072566e59705a77696336386c67324f3845592b584f76426242666f364276376a63323943662f4145726248315862585976656b592f365864553272466d35572f462f35564a375859322b72522f756c5642625064374b6546377135776c2b537573372f627844433843422f43523853467a32394f6c346f4d5035704a3462445a3335616f4f496e394d767a5164482b35574e57694a6379796569726e62414c59507757632b6c32624574646b794a47556c6f316a3673655342336a626a714f412b484e633731336657726c694e697a4c564c56716b657a4433757150574e384738693369574d6a797943345746554561724973314645414548543943752b5476724a46586c70377064503472467572506b33726c6e3945705239785a4333493235526e47686a56622f38676742764a6d50686e706d503955512f7864427a6578646630717a354f37675031776b666645726b4676637539744953694e726648435566695167394261737546566474334d6952324c52616c526c6f4a6941373064427859324c6b693069566f32316a71692f566d4835493737647773306a3469576a7a64624e6a5a75434f755936766b677576566f5777584833657a6a4b656f427067355a727258574654346c54432f62754851656d59346f4d4f3073536939413538524f4b36486b52704b544f7267305271344934487451556d32414359355a727a482b527450637747576b4265707554497778586d39376147356e4f372b694c64364365713747317374744356746934302b4878506d764f7376532f35444d2f61376142656f4a2b533879357751535172524b457859424941554241646454612b68377664445843476d4c4f4a536f732f7075304f37767774354f3876355255723374736876346643334a4235502f384143322f6a68474a374a6a385668335070573732372b62616b414d537a7839346f766f517955457a46692f376b487a6662334e45313244494161754b372b39394932323765596a356433396361422b59586d37384a574c687333664647694452626754515a3846756a59735167595268724f4a6f2f79584e3834734e4b7a5866754c7030516e704849735065454733632b6a334e526c434267487067747579394c7451416c4d617339533431714739662b6e64642f346a2f38533277487155433062774c436d6634494f72763751756b546854535856646f7a6a2b53786d377534754e784d534d7347702b4157775437616f484d7a6b755a3633666e59745734514c617a4d79624d594c64646d4d63467850583775716471336e43466552516367422b396578684a3949474162334c787a3064646a61622b4c41537951656f73584f6c75437331506936352b327564495048347262616b5a42427a765850544937734739612f77435944712f694835727a7632336d576f6949615131536c334c33554a484842635066782b33334e7963497430466d7a4a784b44507362663346694c6d6f476c583276536a55774c503841717173337063744e7574433637554c6d6f4f633047475870747a36726e7577532f5a6555784a727a7a6462743175346257477564587957625a3637397637715a637a6e535041414f45486f4952306c736d6f714c34742f5777356f626263435452635965324b73497454424d6a47517a7167786e627864346c58516e394e57586e54754c75304f71442b5677344c716254665175783143704344714273316a33566f336f6d474c685879754f45745a59596f4d48714f3047366942415064476e5366774b76336335572f54376b376a363432395076577530435430302b6135582b5437714e6e624462673964776779374258356f5045654c424e6e696f796d464367316247477135453473765932707641506e2b4338783650624537684c2b4834723056756b514d6b48556a4c32354b583749765259466a2b724e5a6f7972314f72504e59553969673574335a62695230794e75556578696d3233706f4144437078576a63626f536e70786c7758527357347868717a51635065577441595a68632b333670593233544f31496b6671357275376f613731634150784c726c376a61626753635246793232425a2f6967706e7574727647386b6558656465657633444f5a6b6331333437434e6e2b75527049656938374a33515345744567526b766652334c37587a52684b495059654338425572743766666965796859486a6a4c755a423039714a6554707941784b303272396b4273774f437a57524f344e4d4848504a697572437749514563575153334f457345306f5a6f2b5742574e4658474a69644f53447a762b55512f7157356359727a37384636542f4b4a61685a316343764f41444e426f3235755436595349694d65584e64586137637a65496c4b5563484b30656b3747316374526d6338522b61374d347874786149614977346f48394e2f344f796e633675334f336a63424d3668562b6b39566e5357784e46714d546369596a7377515a424e756d4e5077576d4d7753355845336c6e6362653571456e6a6a704b533136723164596158774b4474794762725065366943717257364677416b4b795677474a354950446271497433707878366971416663745071456e767a49576235494e6e7073774e7848566756334a7663335842687139793831626b596c774d4636446158764e3347762b4835494c7273474c565035716b42386c30397a61457073426a3831795448524f515073654b44534c586d525969713839754463745843445167393637396c33352f6b6c76574c6438364c76544c4b574b446b574e2f7574754e4e71576b6671483534704e7a764e7a656a7076546c49633131342b6e5752346276562f49796548704e753563616333674d754c38454758304861335a335264464c65665038416146337a6243756a61743277495144526a6b6b755244366663677262515762386b59334a576a6b4f35416b6c5466577a473335672f7742515162345842666765534d4a6671795744307136385a7831594631706c307a6f61494c4a483855776c49476972314f4f623470366436426e6648464167794c71593139366673514961653261684e4b4a69476867674347646b42456570416e71366b4442676932704247624e43524d38564e54565563752f745241434d314d714a744573554343484c49466e50542b4b4a4c4d456b7566354b654446415a56635a4a364d34344a4e574a556b542b354267395a416c65734131416a4b524277795a57375932356445534d4370366b5036385779687037395379786848515859795161726c6f5735453279482f6757726237714f3568706966366e31527a584476626f324964744f395a746962397a647775576738786a77624d6c423655695567644654777743773359334c5a456f686a4846644b4673334a536a476a63614b58724e7a52574e6556666d67356b3770304735627a4567573530586d7439743457524152485576556d4d6266534333384a44565850332b7866544d3548345551613756764b584149333745443147496b5034736b385a3538666b70473463446c56427872386468646d4769522f4b4b48337077307044533741594c65624d5a686a5256787469324e51376b476e30336278725069645137316f395332336d51303842713730646e54444a6441696c585165484f30744757695a494f58354c766250303678637352745472703161613865617476324c6477345642566c6d49746969445859326f674e4c6b6a4a7936782b72526662586f7978307575703568496242637a31553672463254665379447a6638416a75306b647a43394c777865587a2f4665756d444c71574c306a62666237653343654c56377953744e2b2b4c4c75677a37766332396e624e7962635972777436373539795679663146313066574e334f374c544976797941354c6c555a7767363370477873587a356c2b595966526d56367533683034566f4635622f4142375a486362677a6b4235635231507a5871744f6a444a413165354b5978373077476f734549786c7762386b476664376762573262732f702b6e69764b7833647a6537754d7031366777795a503678766a7572756e36493949376c523659543977442f4144664a4230726b764b6e30725674392f626b4e4a7a56462b316d7558636a4b505667794430304c397541634e324b367875725a38533866356b342f556d68755a786f454874664e6a6b77564d3977423141726737652f647552704b6e316356736a417a6f63536731796e726e6734563278496a633035695077564e714830746d467a4e78766a732f5554496541644d75776f5052622b665349514e5862383158634c574332644654636c43656d634b782b6c4c764c35326c683244317871673576713371476a2f414d6578346a346c543656747448586e6e2b533532784276337463716d76785866327364494b4353364b78634e797853514c53726d46717536704e782f42595a577848476f4874336f4b64314e772f37466b32766c794d2f4f46476f724e316c71775a4a36595264756557632f696736506f58674d427858664e6f58427a43343232736978636b525264537a6665726a4642526532476f346e2f5371596248793550496d5842644d546a333873315266334562594a3449466a2f544642697465336a396373567a4c4630376b6d6264504e644f7863454b59386632494c37396b61584b35392f5a69517758555039534c7871755274393535684d53474c6e6e55494c724732306c7a6775674c65696d575353794842563043777256416c2b3535624850386c784e705a4562393976487131506e574f433747354f75764438567a49784e6e63537543735a51722f4d43676630572f4f39596b4a34516e494469793663674f315a7472614669323263695a79375a4c51547164415978343571752f5a68666a4b7a4f6f6b47556341674933726f737838795a6f4b6f50435862633972636c5a6c2f3079783745396e6367477274386b3371553437692f6475444f57584a632b594d5367394e743738444770577333344d6130586a49335a6755566b66554c6b53775165766a757744686774634c3043486f4634503779343954523170742b6f584347346e737851656f76627648526b73453931726e6f686a583969775737747966344c66364e592f77444a6a722f6a495164375a625437653170786c6a4c7652447a6d5a44755a57333574417979412b61534467436a494c4946694477586866386a4a2b2f75762f442f3756376d636e784646354c2f4b72426a6474332f31786276483730486e546a564b6347434b42716749424b696e306f78695a466b4170544a536931324e716238326a6750715853742b6b323759486d53636f4f49784e576f686f4a77585a336b4c566b4d77315a644b3538626c79636d74683047614e54706b7539742f5276756469623973764946394b77322f54626c365467615176562b6a37576531456f457642773345555a4234615554416b4768474b47533935367236465a3334317736626e48493971384c656962457a626c6b6737582b4d782f72796c6b492f4e656c3873454e6d764f2f34744b4d4c30334f4d4b446d7654565a41426159367548306f7936596a556d6c636244465679367a7943437365355a665666554937433049697479574336456a4546754b384e3674756a75747a4f34634859636745475337636c646b5a7938522f465642796d4561495a754d6b4856395032486d614c73773853394f4c6674586376376134776a5a594d4f786b50544c582f6957794d644d762f6374506e3667424d56346f4f52636c366e74363653592b395a4e7a43377549655a65697a466e586f6f5842562f7a2f4142584733313633754c6b62466d49446e716b67466a5a333757336a667458573150305a4e334c4843643453387963546350306e4842653173374543774c4c3141433475306843784f566937346f6c33514a7450574e784936664b772f77424c4c757a674e7a623033686a375a4c4e61466d4745513632526b384e516f34375548683939735a57784b5a4e41634f5753356e5976626574776a6132453553786d5967552b487a58696d497155456f6769344b586b67626d67446b6963566f76626351745175444e77677a4131554164516c487351547358582f774166414734467956424156584864714c73656d7930575a6176716d492b7851656a6c7478634874697364373075637a517346664864677a4846612f4d596462494f504c306a395a41576d4f326a6246466f765859314d6c6b6c6668616943546a6a707951644378624557316c626d4573616865526e367231596c7172544431383267436130384b4471626e616764514766637172636f53466142586250316e6237777450706c6c77584374376c695953384c6c67673739734138794772785732314238665a6c77724e2b4e77305862326b33314130516273674543484f4b7131636171334446427a7a763452334d374e326e41636b50537245624537305965457a634c462f6b646a57624a6846376b6959766d7932625335714d5938585164423078415a3157576e6869715933713655462f6c6f2b56324a62647779696e4d71736762514b48466b44643044717843447431465a64527646384e4a5157584c6d694f6f344f733130766230444d64796d36496c70747651486a696841617a474a4f425157626d48394b3343474375334d5838754f4e506b717477786d496a414e334a70334f6f45595a4944474c794264774b6f5375796e4d396d436c42696a43476e7849486a4c54486d72593869715a794c746b466462414343794a4d55786943474f42516952676d7851664e665850542f414c486447413845757550596375374263313137622f4d4e7272735739786e43576e756c2b3565494b416d57705130553073686d676d614c5a4b437543494449464e45636e556b672f42415755356f4f464b49433644354641493669676d4b4b4446544a424d6b634b6f454b454949705876524f444b565142463255415a4168385544554f434743444e696f413643594944676d4247534251514b476f716f5779555154437149346f49765242487a5250444651464b5437304477665654697534495046342f5669754143324b362b306c4b554d7665674a42444656334967697453744554704663316e75476a6330474c7834705a6b7252706f77564d38634b49466e317172765478426d344753515571454565694655786f6753676c536f42785244464d494e676757696e59726f575878547832704c6b5a494d7870524662447335414f324e6561536467366561444f4b342b7a714871484e614932693243726e625a2f6235494b616d6967664657614b736f494669675232504a583270614f714f4b71467454773556516162386a654f72354c50494741306f776d334a473563316e562f706f6730374f3331507758573346777a4168476b514b7478397356786472754261634845394b31323774577750486b6757367a70644969613164575336706141543830736867545269676c2b35706743324b35356e7250626b724e314f4a6c307670795649723146426f7457395a705664502b322f304f2f69736c694c4d494d43756e3573764b664a2b434430674947483755623973544446565249614d526731566f483676326f4d4f316a4b4635736b322b6a4751726c376c726a467061754743723355444b4230384547546259386c725a73467a704532704f56766958694a63636b45625567386f6c43546b70733279514152346f796d33376c4b343844676b693879496e42424c4f336c646e726c3456726e4551706d6b6e66685a4665346356526145376e564f6a35494e746f52674e524378626952756c333665437675532f7069504655786854534178514862326d724574386c6275354d49676f32344d5747535464795931516336503953343068302f4a644334484839504271725062736b463470724e337a4c3268364372633041336c714f67556669764c337645596869334e6579764145474246446976477a68356477786c78374b49424579656837756133574d412b495765314950707a566b726b62497057585a696732763841705a5758492b634271686a536b50784335486d627946594164342f4e4c626c767964634a5650412f6767374566544c654f6b6a386c707437617a2b6a566b7554613952395274556b4849797a567039597679483961334c483655476a315861774e754e7945424853576b777934724c747a6f637551367368366b4e33475674744c305452746a5333784b432b456a49564b50546e55346f46784c3277534d3161477676515732336e49434f433137537a4533645a4868776574654b7837547a484534786933354c713753783067356e714b4463434d63304a46737669704c7143706e4c544642444d52716a473444674742574b55745532563469572b5344554d4d56425055506b73346d54584245542b6c42664a754e55736a77564f7656796234706758514e4b6230514a594169696744463061393253415178426b744a4456576545534756327255474b4277636f714f6c6b384d475a4b39454479637054414f70477035704e65716871676269516c7579417161706462462f65714e784e6e3159653942665a506336706d3070616a674b447656704a74694956426359594947696464416a616b78534f3943724959675949506e6e714477334e77512f557568364e634d72636f356775755676352b5a6675455a6c6150534c34743374457143595a423641467758566b4c756b735658486946534270636e714b44645072464343755675746e666e2f787477505533424e392f47507a543266554e75344d6d374547537836586531314a58516a36535a7865354936755252683635744c66533069503142582f33375a774467536b654251613757796a5a6751387048695373317532597a4d4d4b706638413853625759367263682b436f323371456433654d49677363424a423137633951777756375537546a324b7542692f454b2f564848765163542f495a7474486a6e4c542b4b38595a6d586971765a2b6f52382b4d754172332f414c6c356263626252314442426b374d55483449304b444d6749354b61577851716d4d66714b4332314d34593571346d4c616771625156686a6b55466b4c596c55565779476d46747a69566e7444534b5970726b794f6e50394b436e6654426f43342b537865455558567662646a706e3473644c594c6e58375a6a4a42554f616751447855424343454f6f5545337a514b696f7a34493867674561305264416f4e714e454453375636725a6570574c327a743765523033495541624776347279756f6850617547334d5447495165746c4853644a7864474570527747436b7a71362b784b65757441794455664470507336716c73624e77753365716231795671325a596e4a632b48726b375436593958456f4f7048307145684a774d635a4c6f624f486c67434c734f31635862627231433931776e4141567249426c7631656f77486d53763268796f673742694735724d4341574b34312f3172656e6f30526e2f46423130646a4f356373673341306b477079655154794178556c677a7147657569436a376d7a733561373078435050456a32344c795072767149332b34317738455270696e2f7948636562756a452f54546b754f534d554857394a74473430346d4c776b4358794339525a7533376471384c7869526f6b596d507543383336424739636e4b4733455449682b76426756362f623262397345376f774f76544552686742336f504a6c355448454350765a6476593242306d552b714868584c3238496d2f4f3066474a466f3876324264373032332f54655836714f674871426c47784b4e79657255654758354c69526a49594369394476374d7075435748302f79726e797350306f4f66667336345571324f5859754a6374474d7a52313669646a45594c6a6275774f7166755163615a4c344a52517035522b43523830417771464364495a526a6d6f2b6f7555423150697936666f63394f346355595362745a6373456775753136505931534a392f466b486438326b737a5244773143706d356d32587a566c6f503147726f4c5863754f395752464b356c5568796143716c7955644c6e326442795038696b5435636553344d51636c3250555344756f754e5168463950366972396a43337574636a434d64493652476d4b4369317478754d6e6a7758526873644d52474e68786b5a464a596e2f4147795268656a49326e654e3245655048322f5a30626e71327830644e366f41706f6c5434494f5464327337555a584c676a62416a496159426e79346f6634357459334a6d6430435552787171642f366a2f63726b62466b45514a715778357276656d326862476a685444503971446a626d4d7653392b42502f686d64582b6e396936452f54626c75345a3244426a585463714b726f6573374b4f2b736153576e43735a63467a4c667165387444526532336d475031514271334f71446f32787542305438736679522f4e5a4c2b7874626a6432624d59683633626f41707039364d66554e3566366247314d442b713437446e674631646a73507459796e492b5a6475654f523463427943437139736f626a2f6c416b4d6e355a4c786e716e7076323235467133555841444564713933646d49344c672b70577a393162766b616f5737654f514c6c7539427937582b4e6275556847383175476374555333634374782f784f33674e78586e622f61746e71396a5275647463746d75725156326953354f4b4479647a2f457234706275327a326b6a38467a4e7a364a76647457646f7350716a554e786f7664796d394655627567644e45487a6a6b6355447758727655785a75776c4b3745457453516f58797778586c4a47744d45416a4a716a4661374736494f6b344c497974743238426d67372b3133454a55456c712b316a63506a50594e4a703755586c3955374a6359725439396467476a52423641656d576a6e4f6d48546a327136335946714969445350366c353650724e3571796b6539582f33325a42425164572f7549776a3173755663334e792f5052617a57555375626d5771666375313662733436745573426d6559516559307975794d6c582b43322b6e57343362686849394c485571647a745a574c6867634d524a42517a3143415a5442466d5154386c31665644356c6a62582f414e5672792b2b32572f46637573734758544a312b6d522f56617645442b5763582b594b446c743856366230372b70737252474d4a7a6a33554a586d5455734d46306654643363747a685942364a54692f76487a7a51656b74332f4c36487037316264334f6d4f6f56645a4a534a75475043522f59684b5178434442356c325638587a4858707142324a78363166456a356d6f5339714c703761325a566c526b77326b4c6a74706b632b505a56426e7465757a70356c7155687839676b6e75445063472f434d6f784969427143366476613654476a416333557574633856572b4343797875684d4d53744a6d7a2f4263327a2f5377384a546d5468793641334c6d6f48546a7835724e36665938794d69333134646d50625658546e70684d6e36512f4842656638415476587a73375a7479674a314a686b7a2f6767762f77416e765238364731482f41456f483379717650567a56753476793346795636654d79352f4a556a4c6767684971704c447352484c424b454870663864322b6d334f2b52553945657a4e656b485468677566734e76384162326f5773476a462f77435931507a58526753656d47493549447a5450773571692f754c4f33367239794d434f5966335a726c376a2f4a4e70614a386f5475662b6b6533636737577033584639637343635050486a746870646e3746677638412b56584a4d4c5671412f38417150492f677564765057747a7649655849694d4d78414d3643797a49543659352b35623562615533455067572b4b383961757967614c7032505674416154344d45476e2b31796b2f5870504d72587450544a786a34784c6d4467467a7a36734c6e344c62742f574957343954664a2f795164473574756c735373757679366d6761717a337657684d4854686c562f6d46686e764a586941482f4c755164413769457831594370344d7650627a634863583558503146617437666b52354c746e4963317a6f6f446d6d414b72713742574f526767313754314b35595a36786642656932767165317564554c676763347970587477586b7668324a7077417851652f6849534771476d5134786b36796275774c77313653667050597649626263334e704c7a4c456a452b324b395a3662366d4e37436a656150464839585967356339763970495a754e5365473656322b754463474d644d6f36645436677559427050346f4c373835335a4e6a6e334c4e634e38644d4a394842576d2f35646330592b6f326266544b4f72383047657a353044512f6b7570736654492b4f6655666b71375871666d55685948764a2f4264506166647a47754d6f32332b6768304276625333626761437678585068743765767a4c525a386f7252757037753546725a46776e366d306950765078565870647156713252634938586167366d3366417252344d636356525979664657334a754f78426e75793033514858697433754c6d367553753353386a2b4842656c3958756e622f31682f7742534f6763526a2b61386e4f4f6b6f464646464558593051646a3051744f584f69376b71514c356669764c624339354e30617346365953452b6e324b444a63334e7a5538614d684339645053354c31366a54344b796341634d666d735a33783230394537626a4546304675783331765a337053334d5a536f306332393637566e2f49647066617069582b75697777395732562b32302b6e6944626365384c4e63394a3232356556695750446e79785162622b38747975655a626d4b745469747775524d58676633727a63396d6474442b495671726f3737794959303745463371753646717759416e722b4848344c79793162766453334d334f4830685a7553417437315a5a6d30775657446b6d746c3556374548746468612f6f784d68346c766a4179414957485a2f316241414c4d5a523471372b336d5a2f355a442b556f4e516a4a717062674d584c4c47665452716358726e666771707a332b3169344976572f63526e37596f4f4c2f6b6c3079334167504445555843425853395a766e636271552f44534e446c52633346423672304f2f77442b4f4944474a576d2f644d3656586c4e72755a324a616f596c644b4f397a2f616730336655376d7a6e706a3466314a54366a66336b744e75354d4134782f616c753733626d4146327376306a38306d336e66764674746230443954596436447637665947467343526b516139527870384677393947454c756b65493846762f74743052315839784b6f384d666238466b48705551646343534d6e516164744c5142785732334c70726b73506b364279533775384c4669556869596d5076516563334e77584c3070385356532b43597063454269346f7572365a502b6f4a5a56487433726c69726e68376c7239506e707563577839755344317335754e6664324c6c376b56646c645a334671354d445833416f626b6169364450422f70776f6e76572f4d44527856424945744f61307775674d2b507469677848623338596a6b757a73624e78684b6245717358346773634672326d3474687659494e676a516b64367a58686e77566b727252637247535a64326143327a62633156312f544f30597a4e4755746867324b656467546a584c6a526b48502f7741664c7a76524e5730727158714d79772b6d41576a4d527a6d66626d7431365962562b784147344b5735495734334c766769572f564a6162577862786d764a416b5152327147474f514b45426c6b543845597437304259756747506951714f31502f414442416c576f6871794a6f6a7165755254414e326f4b797a74374658786131626c4e6e4d515a434b533346716c45544f6b676e496f4f4673763841493739797337657367355a426458622b7132393130796a7066427a566550325637375366585161717376516a656256686469597342515a2f4642324e4e753648743542555849796a3046634c30694539784d5361514f72716e6b6541586f4c33584f514b436c333671565432326c507353356642474a306a5545464d672f697137716d64674e30557067747845626b65456b67323838645557515a4c4f78426c356c7a775278356b664a612f7547476d41416963644b573449416151656b664e5641596a4d6f4f6c366550365a6e6b667757734c4c73576a596933503572534b6f4362634a654d41727a32356c316d4248682f50386c36454349504e5a6276702b333342317a674e5836733048413161614b324d336f50334c4a4f62796c47546a4564344c4b44714c484642706e4d5a7167544e2b656a4a4b4c666e4155595a704c38627349505a6f654b447257357874686e7a5853414a384e51793846487a7a4a7961397137657a6e7672656e51524b48365a5a643644566375447a6a444e734666626a56735652657453765438795461786772375130596f4e7365437a3337635a394d7539547a5778513879686d4546736f535a6f6e3979357537746c7a474653756866334d72646935635a7052446a673638314431494f3835344f777748356f4f4876484e32516b716159354c6436746674376e63537557673054703937565749524d6a6f67484a7951657939427365547378504533435a487346463034414e794b7762666432646e744c586d347868555a2b356362642b7633623778746630376634495051582f554e74746a2f566c555a5a2f42636e652f354a41323557397645695567786b63757865646c63315366456e4d386c554d507951476275367532552f4c76526c7a5763454a675441366869673952663634737a753378584f76576e784376322b2b747a704754534c4168473944533451632b65314c4d572f4a5577323977594c524d6b536458575a2b5955443761775247673756317255473658773472505a4455625336364e754148656757336f746b334a65474e5a4c786d347648635870585a59794b37487265397239744444366c777761754d4f434430506f6d366a6374797353385172462f6c5644312b2b5a4e44492f547758414a306f787545477144702b6e515a6877782f42646a586b7556744e7944306c684c42644b523144584846425a723652785663616e6d4573795337594c4e646b306e6c6755474c6356716530386c6868646c59754355614d56723345395053466d736265573675693348452f42423636634e5542633467535336324c453466537135536e4f454c466d4a6d4941524d6a52506f343845426a64314a626c6e7a692b584a4c47494855324348335174384931346f4b647a352b31746d46675935346b64797832547638515a4d3458572b396a43704d474f50554852683672596f5835754546657a3350714e6d58574e634f4648522b317574715a704773677568742f5539724b686d41582b616264334951746d62396e4e41327a6e4c5178344c574c6a425a647530674a444e61684849555149513431465a52455071576d346445586c2b3963726158376c33784d554856457a686b7249794248465a34366761704c6d344d664456304631795562636455782b31636264333558584d764342714556736e3159354c4e6432336d44544836694c58762f596734566b59367379536c755749366451416f72376569354b3431524762523745626b423455484e6e445033716b687063426d756f595a484469715a626354714547474e736b733146306476744233703757334a50687837313062567351714546636262616155433648706e2f3355503562697a6b6642534a7543546773526767372b34475846455379344c6e375831574c366233647a357270776c62754368514b52527775542f6b316a7a4e6b342f77436e4f4d75374438563269496a325a5633644734747a7454776b4e4a373048792f73585268746f69774a61656f76565a6275334e6936624d36474a58705a57497774784571744552516563477975544c52442f48354b3658704f3446644c4c70533333323430327837647171756571376935345943507851553249797345416d702b5879585768475677356b7375626231336a3174712f4e6568394f744567677538523730484333316d4d4c68317453717174656f57647253467639713776714f306a4d307879584b2f74317753384d542b53445674765672647a364346324c46384543556150373169323171656b466f7835525775454d3830472f7773526a77586a2f38414b4e6f49583433514b54446436396462426a324846596655746e48655274776e684754397637304758623757317359527377447a6c6a50682b5332676b4138666736533763453374554536534847696163744647637951423566557168636e5856334a35533875702b4b596b5477775155626d374b33616e646f4e4d5438614c7731796b7356375031437530756636662f6346342b374772494b6c4752484e4474516570394b76366474452f704c667557307a73584b794644375a4c692b6b794537456f5a67712b555367472b76326f677774524656587337316e613964305331766731466b42454c3339616a487162487358572f7575326e3054447835785164665a2b7032726b64524f65654b786573323458644f3468683958747a77576262376a61435852537641305859322b3573334c5a387375306341472f5967346d7a6e62384c73546879586f344346755059463562647774773344626173632b334e65687461694867374e32494d5038416c452f2f41424951476378384156347348504e65702f7979662f44624c66564c6e6b764c763730413756436f654b686b634545573853467a626166306c5949347262735a78467a524d39456752373830474c6b45516e467079577953436a6f415631747265486b77746e47553958344f755356727479616472566b332f755164323745324c724e373159626b6f6a2b4648656b547547624d43566a6e646b41785157627936434e4957472f7437737730632b356162635263754e4b672b4c725263753234437066383048462b786e454f634539765a61685474576e6362334b4b7a44634845596f4f7274505462546a457a4166336346626532464846446c6c55724262337479505662474876573266726c715136685073497a515a4e6372552b766a6b765237556b694d6e64387543387863335133556d41596e327a58706467544344537a507751644555504a576951696b376355626b6e377678514a75704161587871797a624f422b347554794141697442747875734371347662754e78783967677346436c6d47787a56684a48566b4d554a4d654645437742384a5677456971594f6537755575584e45522b724a416d3775366949414b7a524b45584f617a6261426c3154396972773537454747637a4b367a65456645725a7459417a66677373496170534d576431756a447934475343714a655a50456f7a6358426c324b7533346a6d366c306a7a6363616f48755330304f4b57643652445a795657356d51644d65507a56567142504d4444324b4470326870694534504556564f71514c4b364f5a772f46425a7a43734743726a2f36517242795163332f4959612f5437335944377042664e653166547657782f774344656366515638794a64424e544a53516e537367594176524c677079527a6f676a5a71494242324b41696c564d456345426a326f49546b6f6f6954524161494371474155776f67686448424156523075676e6170324b4f6f45455a314b43714470714d7942614b53787067697a71654642427a51597144696a7a51527a67687955636f344943514d5572745646426b42474344616b584c6f4949467532682b667a57413846304e6b2b6d6d434454717254464a4b3237315a5334524b534d326a77515a6272774e53737848565662726e56565935746951454232395a59734574794f687768416d4d675172723061416a4869677a6d693379325457524d2f74564f77732b66666843583153433968754e7245524565487551654a386d6274564e354d375a714b4c3039797a4342306b4f5062465355595436486848322f464235757a63494c5377585373583441664e546357413767725047504845494f67776e413470663659464b6855576a4b546b59476957594d413075396b413347347432786f67413677547679756667746372635a74716f726f51694d497677516373516e7757375a3753527133546d3636746a626c78434d59766e715852322b79745844716e4b512f686169446e326654705834536a4236446851466362653747357469544f4a2b612b6757374e754d57674b64696c2f617876514d574465394238773474676777572f3154616d7a75353230746a59334c386456754a50486767786974485853323734532b4753335139496c61736d3651383648514d682b5063734e6f78474f4a3449486d537a3139366b70505271736c624679704e6a423830474334356c7955672b646553726b5662415a35664e4274744f5a4c71666233504b304d583973317a39726163754d384632664d4461587077376b4854327065445357794f4663466a3234634f2f354c634a466d7a514d496953724d5151324373695841624a4d327278416f4f5a66734d4e5846437848724142783731747577476d69786d7a35633479475344544f7865427048554d2b705a72747a512b71456f396b4a4566414664754a445078524a5165654e324d714458542b43512f424863626b375a343278316e77386e585575587058434c634b6a366a2b43714e694d4a616d6557543151637661624f63352b627554716d634f41585541307349706a455247724c386c495238776a4a6b414e76563147694f6b5236686a7a5668696c6c49447364417351356334674c4e7565715854697449352f7657612f4976302f4241542f41453445342f6771396c347341485362715a3067422b37466164734462687850795158584a61614873586c76584e724b456a6474673666714b37392b62796364355232316f58496d46317a47534478653376786f4a314c726262754335494534785a4a36743664396a75644553385a6455566c323137524950554531516469352f5534724c4c6133744c774a6458432b4a733157397633725a6275526b644d716669676f68446543585564587a43364675314b5676545033725459455a30592b31553034514554566b484d75375733616e72685835756f5a36716b42766b724e314f4563635061717769364a5331444242716a5055445656584c6e5647324d54682b6170457741334e6c7539457347562b64326250416152326c4230626b445a736142694673736778697970334d6567753631436b4278514c717165785a726f4a6b74576f44335657435561686b4441645744737274656f73456f695145354f5842416e6952656f644b4f327173747951435272524b57787a566a4d645357654b413632716a713143686171724959746969434d506169437a532b4e657857796b4c65437047693144454b72587272484230476e7a4f436257516c675131575131617148424164564853536643696b705562414c4675726a494c726c79724d7174586d5447626e34425a784a79477a562b304f7535492f70446539427275566f71346d7659704d766a782b61574575507651522f6371376b78617479756d6b59785065726a47704a585038415537642f63626679747445796c63787177412b465548684a6e56497037637445784f4f49597273772f77415833704771666c32782f484c3867555a66347a6674523179753267477831667351616247356a64486d5a4b77533148556346683275326c616a4b3343344a7431644963653871473531616b472b646d7a4f32597a6a71664371793364725973735261642f3469723756364d67744d4c555a6d74522b4b446e37653573794f75333746645062337472474a6861455039746669695054624e7968784f51577662656c37654856706638415967595734335070456166534654396c48574c6a422b5059756e4341743046427a5761374c534e534373584e4c4243356547437a53334a4e494b7931417950626d6778334c757347324d317937316e79346d55734f43367479314b3363654e44483472467572426b4837657842357963686b67553979314b42714336535456346f425149757947434a785161396c623878786975694e70717131517556744c747531505663447859754251735636625a32646a7568716a3570694d704870377a46427a7749776b42612f715863414d573572713250533462434d7437766571364b786a6b436678585774575932756d314346766e6e2b61353372556a75504b7368322f354c683745484d68616e7548766e78535077584e33316f366a4a73766c384636457830782f42637264796646427753454e4b4a6642414d67683979434e5855515757543564794d754264646e622b6b44656261653567347566534d7578634d6c656a3250726c7578596a743457695a674d4f5a50636738365148726967744f2f7379735835776d4e4a64394c757a31795756786b6743497232493471636b48704e6e6546327847594963644d75537668495336666233727a757a3358323735786c5351585947346a70654765534471776236517357353255544a346a4c426c667435786d414156736a48565361446977746558346d4656314e7662467957565067746732384a453667443272565a327475323545514834636b4377734e6b4e536279786170784e5672476c6952677364325242636f4b39516a314655473935635a585a3045415a4a62312f5543494279684b3147554775396e4a2f336f504558376876334a584a596b716b4c6f2b6f2b6c58746e4d366f6e526c4c454c416736666f65342b33337471524e4364502b366939727652627379462b376a476b512f344c353359674457713946624e32346456325275456479436e584d626a7a7750726b2f466c336f696e51644c6548685663693774784961674b2b33785854325265426a7a51586464773670316e39587477566e6c74576c452f79544d3259356355476163426a79584c332b3331516b314b48345658635a6933465974344f686f39556954336842346134534a4544424c4d4d553979544568566f4a556a677067574b4c593855756c41596775777858705054375a7357477a6c6e79433432783270767a464d31365863526a6241686c466b4761643078566c7562414e6c337250635970376479766452427268496d7159794c636c6e6a63592f5032356f473464516957596c42794e37643833656b63656a344c30467662697864387355683563637356342b37633879354b58457233412f7232376430596d4d652b69416630323045442b495a4833705a787357346b7874572b58514d666373312b656f36734b72464c3148526336384f4753412b626232737a6475774575556161666372747636376174796f2b6e394c5972464f3765335442683867684459584a69686a7a7167394a5a395a3264337044395830746e77584c68666e7462763143314d30344135684e74397364715770493579397633726665334e6d3944546342636a67337535494e3975666d4d512b6e484e4f5a6b39697737516d50525033397132414e52426e76797857627949334c64794a2b735534506b7457356a4c536c3231413878544a41766c666347784f5a62793865304c524b37556e33647955484f57507756567935705153637a6b73323575703546337069755a7674794c5565424f464f48356f4f5a36747567523555613856787974636472754e30664d6843636e7a596c6259656a6d324e57366e473231576c4b7675446b494f5a5a74363541414b2f617738792b4952784a576f5734783850372b6179574a6931666a4d4f774c6f4e562b79307172484c62737539756f61346955634350632f61754e636e4b32444241734e704b654b3057396e484d7162652b493049593866624262624c4556715544574c4163443667744f2f7742794e72596b496e476c4d58536563315437666b755676622b75656871464175783664522b6f696e666d74562b33356c6a546a494634452f464a62686f68514f6e456a4b49454a5269667031466b48486e616c62784256645758737062455274656241692f427450544632584b75624778754330434c556e376e37442b434468787871756e3661546432753673444f4562762f77436a6b3539344b6f335070642f6246355265475578554b33304f635937754d5a2b4735717453484b59623855484e42545175474245686b585575784d4a47422b6b73675548724266467a2b7044777a3676676c6d326c6d785849324f3736504b4e4f42344f75725a506d5231636539426b7562612f4e774c72512f696c6b682f5939304f714f6b2f367356757532706b61644e50775649394f335541397155787951477a366676724a65303043503473565966376a63413177697778714b717a62624b344a4133707950615672314e48527751437a724d61392f4a585366444656534d674744446b736535335174686b423953766164726446756c412b654a5a6553447652656d75782f384f394c436b572f334c7a495147525a4478497363555167583442506267383478346b4a4e4b75326c364e6d3943354d45776849534c5a675a495065333731765a32546676345a4e6e7741586b765550586478757952452b58622f52436e764b792b70657058505562707554704565474f5143784f63454461745654553830427955617446436367676d4656437a55554c46543549434131567176376252474a62474d5437316a717534434c7073525031575737775a4438454846306c327a56304c426b367376326d6d5864614c41306e75515677325249442b7757364d596243325a7972632b6e673455316d4d6d417032726c37336365625054436b5238546d55476564777a6b5a477050464b616c4d4d48434655453571436c5643555849515751636c4e6463717346687852467a36636b42456a417157357967664d74536151775a4a4767646b59795a4236757a366a4831446154312f77444e41504c757a57434d52496d516f4256637261586a5a7569353831314e3744375734616445326c435845494730556c7856523231756549442b356b3975596e514c5a6232774d71494d4d62384c50302f6975687372766e6e5341527878474b30773252746462426172473330666967736279783034705259417739793143493731524f5168696772456a484241584e5534777a574f3775774b7757725957745677536c787751654f395133567937754a6d3458496b77485973636935314b376467797633503535664e556b4f6769443673555350696f79436471374f7a3363626b414a4f386548426356696d6754436f785165767462665730785769586362574f6e53514a64767757543072315155747a4e575866617a7549364e5135354630486c785946715a6941434d346d717953684d7a2f7041672f42647a63656a336e4a74584742797a3937717131737032682f5579507437636b474b4537356952644c74372f657357376d664374572b334f6d56506775544b524a7167677256526b475a456a6967474b62557747534558465577363664794431336f557850623653514b6e784c664c63324c56626c77552f53645743382f7466536a63417130514f6f356b35674c75375861326476456e534d50464c46425037683530543545616a44573852387678564e723149536c6f757830793553782f426134626a7a762b4942754a77566536394f382b4f493143754645486d2f5837594e324e34554d346a466357496464763157786373323478754444776e49762b5334723936414b3231643047745171336442325164547934626b617643567273657158747462466b554172303475754e5a756d334e31313747306875674e4c422f6837304769787535334a435570475756563134447a4939564f537837583034576938693856306f5859514141726b677a585952685168655939553355626b68434f45632b4a58543953333472434759784338362f36766567522b4b627377516f757a365636426539514f715852614831386578427877786f463648304c3050376a2f77416a636769324d42687158713968364e746467503663486c2b75565a4b33664f4c6251346f4f5875425974644e6d33435038544f53755a64694a682f5a6c74767949634255565a6a6b67357334744a773334716733444679635675765736754d316b75526f30736b4664756246354662376379375a726e57324448357270626248494f454732456a49315674754f6d6a4a573034725262307751575269465265737776445465314e2f41575767796364744656726a41506b505a6b42322f706b4c5672567470796b4d644d6c304c573367776e4f70344b7a593766794c6466464c71506574456f5570696753644f784c636b304a46736c4730687a677174314d787438582b53444e5a6b2b46413657357562467078646d302f30386c47636152517469654b347671562f647a414d37576d4544716c4c69326144715774314c646a566236493563537961562b5671576958566d75527470334244545a3658475062777a576955623975514d2b726d395548566a6674335a474d63592b4c6b7244484d6c59665369445a6c6666384171546c4c553477354c59433943674d6159316633425633524b324841483730306e474743754c546a6f6e785163435a74577273376631654b665451502b78575332506d57784f4551594539557551344c567550524c6538756d365361384a42714c5a5a3270743249325030785a7a676776424542474d4b524379334472504a57334c67674e4f4a4f4b7a7a6e71464b49414b314b684f53426c564441386b456b5836614947714a72524b584251417931436d423731544d74453863506572417837456a457a6845596d592b4655486369504c684749344b4f364d6a315571794869365545484571783655564936354d45384a55397149504e622b31355735757846484975522f3159724e5854517273657632443549334d66464274584f4b38784b2b574567582f536731334e33355053716f656f4358696c31666771504b4f346c3131697431765a576263577a346f45382b314c78536372733262304e4d64424241465678786173475131524859757274646c5a6c463551446a34494d2b383955466e426c7473586f3337596e484d4b7664656b3262734e4c414f396333575459326674375a747a64772f752f6367364d717966466b39746a324b69446b61614a724f7263576949644d6853525158334a506275524c4e70492f4e654c39553032354151397939464f3366326c69364c38395547365a4d7871764b58547275505568425149475879576d77445a3667576b6c6a495138474b726c504e413979363776695654492b3546364a53577167616d6e6d6c5a7178554a64413449414b68484a51383043636767494e58772b43376b4c7571416c4b7450324c6867726f62573549525939694239542b4a5732356933346346524950564b4c685a6a6767364d7439356655426771626e7139306c346449574f5573736c6e75546167775156334a536b5354556c5156785339696a5a352f696762786c48535432717438315a475046424859754676322b396c62476e4938567a675165536b6156516567686646324f714e43716478636959734343755a5a7679744870566776756134356c417339557047417156365830333076376531727566386b76467948443831673947733254634e776c376d555a5258704e4c6b6e4e424c63414d61414c4675626569557630347265446d3141717238664d6855494f616237644c4e7a584f763751333539523666775771345a61734d456a494d78394e684871487539714b513950673350326f72357a6b37436754327130314d677532336f6c6d543638565a7566526f69332f41454a7352394a772f597465334a3756745a71596f4b4e6d5a434c593564363278754d644b7943304973493856594c677167723370364470705369355870556d74504a64616233625a746d722f4a5a726d3374375556426a414e6b36432b4e775168712b5050464c474f6d524137466b736456757a435641444f374d61543950683967724c657254435536485263767937546736427850564b5041796c49396b454c4d3246756645584c726354675067733074634c663841464731475066636f56664b32354e694c74624675302f464235376143634a6144512b4c35725553394d57576266334e507146335253756d6e495656304c6e785148527071736e687777576d63337a717338672f3879446674397a45354c5a41616a514c6b3759615a366950334c71786c6f476e4931514d7741494171736337725862597762726c334b36377549676456414d31797472755933742f4579637750395033305164713562783031645a4c6534753765582f7569506d743574796d446b7971753239513079775161375737316b4752376a374d74304a433551597267324e75387548494c56593345774b35596b305163762f4b5952473967514b6d49316331306f57347a44484446633731793165334734467a454e51384174657a756d5a4772466b4479326a55677378394e6e4d3952502b6c6432334f4d78334b586a47412f4a427942745937654a4543653964546152306a672f4e636d2f6638414e6d777778572b487149746a534d4d45485375572f4e697a4631685a6a70507379744871566a6a56636e3157394736496a626c35494f78485448443969756a6a79586c72572b76626557695a727a5a64546162767a4d4d667851647967384b714a44686b424d45493064427a743373353362304e77375268386553755a385670755430686a2b35566a71366d515a3731727a426f4f445a4c4c435537665363507757396e5042566932485a42792f55726b70376155422b714f5338744f4a31316f766262363049626135704836666556343364783875656c4251516331414f4b41716f55476e5a33764b6d37597276324c6b4a5071366f6c6559447262744e333554516b37636543447533646b6234497a35307077566471324c4e4a4d337478577a5a337863704936757a4e626674497a445a5032494d316e656257426c706941666d5662355933674e7549496a496a554d4d46492b6d78464a456e6e374262374e6b5148755163502b33437a63446b744841632b3164595247706879397a493349416b352f6b467750572f574e4d54597348714e4a79356345484a39593370336d346c4d487046493979353755516371615542495152714648346f4a577271524f6d6f554b674c555150646f65535352566861554f78566c42477172706769594171614a62634e63784469634532346b42654d6f3061564f5344316d36456451686d49524873367733496b47764e633233367875444d655a4c5646362b4844334c6f335a7831687167745641743061666433726e7a324e34316c6756767633504c6f505972567435796a4670484871516351574978446e34717933637467786541445a31586375516a63423178483472424859695250536138537942746e646478454d52675630726c713365786743394f4378573749745358537378314873515a5073495778716748623936313254704145714c554c62564a5353743635616a336f4e64755949484652794b2b7a716753784d565a356f59456f4c74755845754153587064514d556638416a68716a6d7446754d64774e594b436b676d44506a785353494b317932314d61716d554e46436744456873335850334e30797561526b5069746c2b666c327a4d356533657562616564764a33393644665a6a47413673386b62737862747565794b594f3363714c3977516a474a2b6f736774327354474c537a57692b30594a597771415531356f694d4d6e6633494d386d42374656664458414664516c77733932657271376b464737756c3846667434795a2b56466e68614e3237714f4336656b5768306f476870774e416e6748446e454b6f56397171324966714a514e45764a57524471537745614d6d41634f45484e39667547487039306a4d4e3779792b624f5639452f795974366463356d482f414c67766e6c5367474b68445554454d454871676a2f74515272326f76334946464b71465251444e42414771456531425141484f71435a496f55646c4b49434477556a565356464d30456443696e7a555146304161756f65436a6f434b464353687032706a687a514c676f475441746b686a326f4379586b6936445a6f4a79554663564971554259494a6955633149344949474e536c644e5358636c51444371364f78625358797737566771793237614e4e575a516149764a7a554f67514844596b49794a49416c376c575a55646d6169424c684552565a35675a42577a706946544b68636c416b5277576a554e486173324a5a586868427a673644523656442f774179305350726a38777659627178496e5637677564744e734c64794e317644776f4d4758615a30486d4e39436247724c6a7a6a634c3669363958757473377848657552505954343051636d457052476b344c52596c4b34566f47776d4455644b32324e6b496c6d51507462656f567a52336d3246534d6346306f326441464b725a65326e514d797944784f3445686a6a38566b462b634f714b372b363263535461494d54694a7379356e326b344561734d30443250554c6c42684c6a677537737433754a2b4942754c726a574e76716d48586f74764b416f42685242306264776b562f6174646f4756446b7365336b4a55353057363342696738662f6b2b7a666432794d4a7862763841597273656957664c7454735441306a4c6b742b2b32554e7a5359664c73586e593736357362766c336753306d316376626b673337577a39764b395a6a2f774162457834746d463557354c5463624c3372326d377467786e657736616377635176447a4a754579464145446b597667684d5559304b516456425350424e7569497830352f7151632f4d72565a7443585478575945476932375332626b684a42304e744177704b70646176756574732b4b79534f6a706476356c6e6271307658423048714e72634e776670585267546d754c7439586356314c6339474c494e647368304e4949315635495131595a6c4a726b445241357542744a4378336f764a6868384670314f6171644530462b3375644655623177734e4178576352302b4647496d54717977515778614972546971424f7573757270524f654370757a624269675763395a306a4250626547437074364e58734174456554494c4e5978566335524d6c584f35564a456a5669673052474c30574f5131534f723372544c7069367958376774774d3259424252667536634d73756130576a716a306b734237317752644e772f78544c6469394261694262644252754968766171303747644b6a465a706631433946625975787378353845484d3965675a584c664b764e6c3571354371394a366e64382b526d65444d75546673366d6c7734494d586d5367614b3633764a4131775656797877566362527a46554856687635526f35356f7a337370344772726e614a6e497574646e62584c6d4557595935756776312b5a37314967794e54514b36477a4f6e72785771787458495a426d3275323878356c394950532b4a6647583731306264324f776d4c6b775244435456727857794733454b384d4f43717632684b334b4d7378376b47713563686530546831436e75577551617138702f6a305a32376c2b33714a684675783136534e317732664642595a4565466773734b7a36734172707a4978785651476b59397142354871346f524876516c7a78566f42616d43424f515443527a51444f5747434e4469616e75515173545630534b4b436f5a51466767527a324b74777854365544514f55432b57395870386c6462692f597972454b746b72355430304753416d5464495168584a5648554457765972346e457469677275536646633363504b5479476f344c64654f6731574337636b45454d6449635a354c5a74784b31624f5a645a5138355a746a5262756f78416a462f683830465a6c577159566f4850776f726f6262457a39794e793442476c454647353346725a78655a726c566343353674752f554a2b5674426e3473422b5371395766635849326f66584a69633133646a7452744c5174786f4d53654b42624f302b787379753376366c302b4b5749485936386c49626e31532b59536b376e75396776596572766232303377584d394432385941334744735145477a375333734e7559517946546d56356a65663035484a31363366782f6f47517270787a586d4c7838774f412b61444462767974595a4c5a61395162726f73647a62754f53704e73794f6c4233492b7379372b4b74742b735347595a367267694c30474b7674375635596451346f50516633654448564a5a4c6d3675585a4e434c565761337357595472584a645333746343674f336a7178486574633547324e6363413378527451496a324833704a6b58747a613273636a356b2b366f5164486437474f34416b2b69596a694d6c787431734c3972726f5938595a723078714f336b755239373976666c596d5347625277494b4479753732346b4e565336772b5271656d43393175505472573747753064467a3450324c7a6d37395076624f353173596c2b725451386e51634b64696363716535556d4a586f504c456f69526967524b4d656d545032494f4a59323133635330326f47637634617271572f5150556f4234775a387463522b4b363370743645544c7a70674358466858745a644f3766735852303372662f414f6b6a376b484474627231625a783875566b7a413477314e33686174706375626b656465416a7170706a53693137376574624e757a49476e307a663546316e73526c617469474e4b38653930456b376e69506b467964363859474a7069563162773155345635726a2b717a456567564a4172795163636f4d70703449356f42795278716f41364d496b6d67515333417a4f6b5972312f6f2b77743755613245356b564c5644384667324733466d4772363544334c716261344a7a45706d6739713830486d2f57376775377935495950702f32674263374a67744d4c4e7a65337a473145796e4f587a58626c3642743970316233636458366266352f735165624147617632327a763779545759475a2b48656346365061656b62433745584978756b662f41444445412b36745631345844416558626a474e764454476e7355486d4966347a76482f414b676a4341786b5a443936766e6174323373574230772b76366956337964555a746c6e697554596a3564687a51794f7152626e52427a7a657557674a66547943323250574974704d4f384771726d426369307343756664734d656e3239756144304d50556f572b48554d5361712b31367549317077586c624e6879354a5858323279614c356678494f746339546348792b702f63714a692f75617a6f5070566c717847416f474b304163454573576f3277537766347130774567597a6254324c5075723432385163356d4d5939367a2b6f5475504862572f77446b756450646d55476a5a7975584e63586531484b513141727a762b5137533362756939596a70684b6b674d4e5761396661732f625245636d39766573322b325672645136326966666a6d7944352f5a4a423656374859327a355474556a48344b6a612f347442336e4f576e73412f466453333650597378486c616e5a6f79312f6767796d3349427a7778524554447269655a576964687a71494c38636c5451555a4271686331446d725877303157534234653376523839736e7179445361476d4f4b3433716671506c776e434869376341632b336b6b395333392f71743236526173754b38764d794e445241735179554d616c4b3730546f424847717473577452705838314c4e7658566c32396c7464413135676f4e6579326e32342f6969464e33634d656e4d6858776f4f5a785750314178387869637659494d56793463445253453334756b6e70656e775343357036386b473745504d305766653776526244654b513031346355746e62626a65533037654f6f5a7977694f3964766266343361424539374d334a2f6f6a53492f48334d6738577a344c762b68373234626b64724b6f44366534452f4e6466665368744e554c416862307879692f764a586d52366a644e324e795a426b4b61745048735165694d686e5231783733705679636a4b50683761726f53767875417a744445664661374a6f434b424279592b6c53786e6359446b746c6e3070682f5433502f41504c5732396238364f6e683949574b313658646863635847676351395547722b31373044566276672f36572f4259765564683667596955326e4350364b666b65356569734e62694d653958536f43454844394b4a6c5a47766a6e7758573176512f7556556f434d6952374f70674b393641626d342f544841356f517352736868496c7663466d735868754c3572534d6669744f6241596f4c444d56697330376b496c676171585a45667041347a6b41507a5849757a3264326d35335448394e7533497848666d67305876554c64734569574b78572f55394d7959573763763472673165354d66547472654247323356736a6864476a384b71665a6250626a79353779496c6e707461783777674e7a316a6558482f726152776846766363585849334d33754857544d2f716c55727351394b73367466336c6f327566692f326c565850375643576c37387a6e4b4f6b524b444671307744356a39767336793359524e596e75344b2f6637765754473130322f69527a35724243576d51504242337654372f414a6c765269566d33646e7259562b4b79574e37355533616e4a6447354b336347754a635068773755474b3348536558344c66456949364d50656c7477474c4c524779496832397539426a75596154584e7561717432664d6d38714250755874784d7a58687a2f464a5a395545656d566f4166776b6a3855476d554767526c526c7a3770316e544c75373130375636786536377576796f6a727231484a4c47313658356d6f58726b596e4c52556436427247377662613341324a6d4c2f7046433246506775695057357a69323473777644365467582b49397a4953394a6c355175624f666e323277776b507a37467a5a62652f61365a5737674a2f67516462622b7137636c7a7464502f30693566675230724d624f787658524f31436471344a4351664354484467436667714274727532746d553763344366314e547655734335665054626c4e7161744c6f4d487257787662652f4f374f4a30546c4b555a5a5672697557765879395175374c707678486c6656435971526e513856775056622b30767a45396e624d4239543865512f616770327334323756326239656d4d49393572384174757a33557264754d353174616d50615033726b56415854324e624f696e696c386b486f626534746d4c6b713462694a2b702f65764a33496d4a7a5a5651334d3434456842377146794259456469532f637432326c4d735062426554687672385164457950696c4d377535494d7a716c336f4f6a756655725a667977355a33775351746d355057586c6e70564731326764797572433077515463442f774161354155366365513969764a55425872742f507939764f5234664572794c3936413146475144752b435a3656716c784b41534845714a744c49456f422b355277314d55514d7767674f6f4e704b4643564b6c547451516f456f6b4b46685241584177585333422f384142323932474d5a33592f4553487a4b355944727237517876656e5837636d65334f4636504776536677514a506361346963735539713643314667327a794f67564a775769335a6e72306b467339507839794272393443422f55666b7561477a56742b5975476d4753714e554241554842445369654b4364696a6e42422b3947516571434f3145574c31516f795949465a51686b444a3057664242413458587665705275374f4e6d344875773659532f6839714c6b4d69514751585772306f5643365676314b44417431444e316c394f732b595a327a6e4631566632686765534474513965723451335432713650723857364d5834354c7a41466171794e6d7144767a39646d61414e3254564d643165334574525942766233716e6162457a4473753374396e473334513443424e74747456563262454247546e324157653345444442443148636661375337637a625448744e4548673730784b374b584d716e55536a7164335159346f474234494d353538304938436f554578566c735553784d63466643624270494b35326a453037657861625071642b31307651664a41796850717756563663666f34494f735058356b4e4d526f4f43356c2f314b39646f394f57437947716d707142414a4855693148644b6d5151305177525559464163563150544e6964774a584a5941485432354c6c686c366e303239434f336730674d6a5772355551616474754c5974533830676558377a58385531714e7a31413635764731394d4d793350677357387465664e347347785771334b5167786675516453324e496149464d465a4a354e576e75584f4737616b6a32465857643055432b715752754e7463686959784d6f357331543846344a334e463945456964575a306d692b6533596d45694f5a514448464b2f464636495651546d74466a637a736e705064324b6c413151646d487274794136717371622f72463239485447674a584d6b466461737a756b5174524d7a79716744484677746578394e76372b576d7a42774d5a3441642f3556586f66532f3856777662762f3841526a385636753161685a6a6f746752694d6767344870332b4b324e73524f2f2f41464a6a2f617537683044494a694f4b44674575454445704c747358496d4d73436d46456355486d62385a526d5953643377354b6d55546776516276616a63445648786a34726b58375a67574f4f6646426a6c704a414f5377336259692b6c624a436d704a3565735678515a6f525a7774316a54453146434b4b694552476f444658576f6c365a4475516174544b2b4a795761464d567074787558352f77424f76504964364379354d52446e443277576e6137497a6e3531344d423449634f5a35712f613749572b7166564c34447357314155676b364a4b5342656f7751515345656b7175397459335132436b69597942562f4e427937746d646f344355654b7033582f414a56696349486b4f6661753073742f61616754614f69523549504e2b6e5474784a6a4c2f6b6a302f7741496246644152316e714a4c354c6d79735432743032747a48786b744c474a663467726273396f62662f414276456678494e746a612f6269564d53364c444a4f433738667851352f76515148486b6b30354a7936535469675152794d32514d6954556b756a4b574178566543426e30555343497154514d6d75462b614d514a346c38554174323458484b746c616a4563776d674245616662354a744f484e42524b32516d4e6e57726f674b794d6d51633655437074593672386159504931776f744432395750556d3230514c736a54776f4e5a2f656b4944755554422b354e4a6d4a4343714673713233306a536c692b5074565976556656626670746f7a6c575a38454d7a2b78427a2f41504a66567649746661327a2f557544722f6867667a5841304862534d4a6a41726d58647a4c63587a667564557053637276656f32787172512f4e413169325759557a566b345844515a6667755a62334572523431777a572b5739684b495a7767747457494f483857627272574947475338393577634548765858323239456748494a356f4f68704d756f3056463249743146536a6333634943754b796d2f4b3750476a494e466d4479456a6743754e746434646e366c637333502b4f63382b6451563359686f4d764a66354630373666426f2f2b31423050386b39514d352f61576a306764545a6c65626c4f71426b35314641314b426e7052475253696948694e45445549664e4c704b6855656a49474e4d6d4b424f595334466b636142414d56455347557a34494136367670646f3334536944575055334a63716f576a5a376737613747594c4d6138786d6736683273784a5653743648664c6b765251454c6f4641524f76637949394f32676f59482f65616f504d326f43556d4654686a56594e794e4d794f4646374f2f4b31734c4d37384967484c697646536e724c356c41696a556f6f326159644b4245345a71714251424241487a53766b5577415432374679386446754a6b6541716772424865695a6646643361663472764e77486d426248385750775851732f3459545739642f327851636e3054303364377535357467364952786e2b58466578754157326a4936696e33416836647339466d6b5968682b4b34386863764e47474a772f46304851456f4f7976386f794438634654746468486252313344716d2f6345624630376a63366342415037304847333976793738745049643670317554564c4f374b37667632786a47354d31344f33354a4a573871366b4673444850424a6368614b797a6c4f4e4931564564775157464145486f74726461693649764e526c35666237715570687357585874584c6c3064644f78427275626b4530557436695658446276316c6c706a63466b47632f44454f2f594543476575796273662b6e4d785074337264616d4c6b4f52794b342f6f426c75746e755a59655a636d523236515670394c766d355a6a4b52726e33494f6b5969355355614a62757a733358424749616879566b496d49716f346363554757393656626d645543596c784c462f4373556246797a49473758564b567952346346334939504e4a4a7059696d6144776e713172536256364178385248366a697338627a382b4b397076765362653567644f4a2b6e732f46654933466d5730756d334d4d6566775157616d7136713877596c54586b732b6f67735548527458526961725162307448446e78354c6d5773674d566264756d324750356f48336c2f544676396f2f46632f616e5665693769763034704a7a4e773669724e6f50366b534d52583349505943586d41474a4f724e535131466a696b32397a5831766a383162494d6130514e61744153452f636d76516a5056636b4b45416336594978687063685045494f6675724554433949456d55495250592f4a6332775462694478597274336d4e7939482f707a6a454c4c75724675324973413878717879514c486653594f733239336b7042696566636c6843756e416c5a35774f5069514c624a6c44706f556f326436516558743376524747366a5a704956645347343357346e3042766b7944547439694e6639517532484e64477a617435553442766973386653376861562b367a355256766b624c5a3956755a6e63484776775156372f61573767654a6338566e324c786c6f4f5373742b6d7a7658664f6b4e4d50706a6d56654c486c334e5144494f705a7947422f42614b7878774378575a593535757239626a6955416c6d6355385a39444a5138596c3073524c463248343845445375616734347053524768516c49434a623264594e7a754b5934466b4533642b4d347a685668704b386e757069647773757663757a4e7135496a2b46634b5a637555415564314b59715551444369633071677a3969415158324e7a63736c346c646e612b76546941434b787232726845664a50433371393644324e6a3136453653366635566166574c54394a727771764d3264713857427172372f544536576468336f48332f414b35636c485262617636614c67537863314b747644714e4b4b72735145423845424669796878526441474a51644168305367412b4b4a4878544d4968304b4f36437979484f6c5645635538446f4f7058626662584e3364467130484a51563765666c334250677432773947334f394f6f445442367a6c374f76523748304b7874527275395633344264534e7a5561344433494d47313943733747305a55755850714a775841753359335a753246563750534445675a68654d3953323474626a58394d2b48456f456e6331476f626e7a5631712f70476d53797a4c526444587a51644f472b3039796833627a725663677a4a77594171715679587551646b626b59346c623747366a4b4e4635654e3749466162653430674d673953647a7177565a75616f7375586176584e49494e4374746f79314d3451624c647738466f68457a504a55694f667557775249626767747035656e50354c6e2b683733587274532b6d525a6445535a2b433878365a6645643966746d6f456a49634b537167396d63316b7658596956442f4372724e7a7a5941385678626b74565453546e424276336d302b37734557793073596e6d7566596a4b33303349365a4164533647787675644e6172566632777564514c5351595a454e523256462b586d334944494b37544b464a4b7145395679514657495a4273744436676b754635486c6770624a6943714a586f75644e436761632b6c316b6a3153786f704f382f77433156324a764e754131494f6a4333355936527a566a686c49544f6c4541745241644f6d69736a31596c4c4278562f774236737434755542466159425759344a4e5554374f6e656e4a42772f38414b4a4e36664b50475552385634466c37372f4c502f73582f4149342f69764149493156506970716f704641575a4131527a52624a4250706444416f4f6f45424943446f6e696741676b7163325549307146796d485567475367634959346f6b6a4e424a5635496e42426d78517771674f4e564379675a30445769417150546d677949443979436330434553654b4342735477514c446d67364c78644146447a5138534f444f676a4b4b4241635367616a494f55636b5043674c726f57502b4c5561666975666a5262624c6d44484242706978697a75716a47717446754f6543706b4f6e6d67706b5432704a6d6949693653515a416836565a616b4d78514b7656577165794e636d6950676739786250394f4d336f6667465a724561436f5663626354626763394b716e4d5738634d6b446d50553866626b7153663142567a76744669735537754f6b6b76376b47383341422f433661784576714f504663733364584e613433504a674c6a31785a4231544e355677487a57364855487a586e493779325a346c2f682b3564665937793364476a574e583655476231473962684d573372346d2f617375754d76477a3852775772317034326f7a6c5851615234767a58487354396967324f49674561616e454b2b316536767a574d5854494d7455476d65773151646a62534a496b614c6643564351755a596b354a354c5a417652427242634c7a652f3266334e79557a6a674267374c304e70327175664d43563352586e326c42527664324c473031537a6f42324c78474c6c65692f7975506b323756754a4f6c79616d6a727a6f6a4749417a4b433233414d7737656158664578614a566b4c59344656373532427951632b4e53757074794c5965764e317a376653567467527030794343323564387755474848465a764e4c3657372b616b70414638484b54565853314851656a7473434a456545654c6d757645734e553856786263756f774f48794b366b4d512b4753446f776e684a364d733276554e5746666b7442414d566d494262493830466875417871532f765658334d5252696b466f2b45465044627a3877416c2f6b677638414d3155513179742b454630626b4339575447656b645555474c376f7a4c456b2f7a525a4732587a2b47534679344a75614b57356c6d5a6b476d454e667639676e757a4d63364a624d3941362f334b583552696451397561436e7a436178546d66415657667a7a49394a4d682b6d4e5372725562375043314a2f77434b516233494c4c6c41324b356d2b745862397679345572585575724459584a6c37383235517038564c6d776e6843546a2b4c464278375777416d4a546c3144334c62486455306769515a576e3036354c483375364a394d7534514d51454753647767536c6b426878584e74544e7a2b704a6953534237636c33727670304c6467676b6d5447576f3856777255504b746a5567572f476a506838566e6d56726c4e3441797a574930706b676f4e736b3853466f735345427050465657774a4855744e694d635150656731777542714b32334755736d6448623249416c785262597859444538554365522b72334c5261694930475348303061694c73487951577a6f486b736c2b3770684c69416e6e4e7159724463506d6b5768336f443662624e6d334b354c47556e62677456712f436477327a55483675435337307847544473527362614a367a58735162707730386b786a49686d785347354e32656e426c55647a4733346f7948794b432b4d434f35452f444c6b6c686574797246574668314d675639504f71424a314e6b5649676b644e56424d69576e356f4472725867676c313654314a3334494b79593651445473516c31553932616156613566696a43414c6b68425a48524671657856457a724c52384b46323454324a7264736a772b7a494c414e54567a54794a434867356853565277515a64785655324e766376457a67413347533352326b626c626c66623243306154414163416735347558647332746a45357879573453317731766a67724a57396361724274704d54596b477a6a32494e654936736c585071466663694935506767656f644e5548486a746457354635673739793645484d7450417176794a4e314c527459744979346646427a66583732697a7a4a6274562f703967324c4d496e4671393679657048376e665772474559396375356459784270484241747776416731376561385874726b6744624e4e4a3746374c63337247326950506d496966683756354831474562463358614c32376a744c6d67517478393659576849305574746367524a6a383355675a51505669666b673232746e43327844456a487657364e75494451784f6179574a36797a594c56455670526b47714d744d51437959573843556b513447616f3366714d4e704870477134664446426f335734477a742b5a5048434d6379666d746670477a6e59684b2f652f3562745a63686b4669394e394d6e4f353935764b33666f686c486d79375a663349474f4746517566366c7452764c524e504d67484332695a68457a34664656776e6f69596d764642784e747570326a702b714e4a446d7537626d4c396f6177345046636564732f63616f3448785a34666d7578743474414371446d62373062563157445439422f42635739594d5338677843396e45724e764e694e7948485450496f504b3765314737636a5a766e2b6e4e39576e476d433162722f47746f41346e4f4a7879492b51557551756265344e514f754f584876574f39362b4a3945724a4575647a384771677a37585957343344706c724463472f466459794a3766795762624479345245715350564c74577149453043584842354c6b6236784b374e686756324c682b43785369534f61446a54395075384b49445a6b5361654336326a68514b75354454696777517469416f4b7256597356314e337171514a505269744d4377454944564930624f714332346454593642394b31323976627543506d306965656b712f62656958376a47397067332b7166354c715432646f42705145794133562b354252734e74744e712f32776b444d5a6c316b3365315033586e79596a365838504a4e4736647066466f675274793036503453757351445356593431515a62657155574f574751564d3341597136493872704f4378333778686330485042427273734c556d7a42584d7443553749684c457870795858733232746156352f59626d54427a3454704951555739774a427a306b48536f65414e666d68366a596c597561345668632b5a2b544a4c637455615a64364336775272454375335a416c486732584e63617843494c4d3547433756714463332b434452474b575a5950674d30356b30484f433550717538387132644a385647344f6771322b354871473931343272666847564d3172324d6875642f4b374b6a556a3246596651374968624d686a4c344d74667055644f2b757467493958626b67377436576f3177576156326f69616471746b664d364d434f437a58615368455936766567364d4a41556b47507754687356544a6e366b385a4638554175572f4d446a78664e63692f656a4735704e4342775861315438537176374f4734476d5936737068427770583444704e526b6c4e3845616b6d39732b545052632f6961517a4378755a6a6b776f454433696643377669754c7557456e58577530704c784f7550757549464478515a694f727052424a4877554a4743306257446d7144703748624167416a445074585a7432774d4b4e6b734e67434d4e55635237364c705734394f76384142424c594553324c65354e4f7a616d48755142546558356e54576779576a622b585a724956796b6355484f2f2f443975364e55546f39734673732b68374862744d784d35662f4d4c2f42583350557841394c716f656f5841784169485064386b473757496a5352306a4955435533504670485a4a5978366d53616533765451335632354c515961596e50384163673450725570796c656e526f365837316c2f787a596a63337a65752f7744484436654a58513957687274587041564f6e344a6638634a6a616f4457556e397751562b6f794d4c383773664354704934454c52744c747555445056486e79564e365a4e2b395a6d784f4c6e73584a76376557334f753134436737647a314f31626f4165344a4c507167755334664265636e666c5078666b6b383142394273583433634f4753766c49732b613858732f56764a7251647975335072317934476a556e4d495053334e774c6236714c68332f4146473775352b527452302f564e5a59574c2b384f752b644d503068646e5a324957726654527330436257784861514d63666d53714e39366b6255544744435762346861622b6965366a7468533452307947443844794b6f4f393274342b527534504b4c78492f5433346f4f444b38635a395575617238774868335558726a744c6533746e3747786275792f6a4c303750326863536671316934644737326b48482f62364751637550395071594563307368356936763358704630615a57626c762b4b456e50787038453862666f6a50357438486837522f46427972647545514452305a436c43756f4c6e704c6450334576384161704c652b6e5645646d34353347506567344e794e61594a4e4c344c766e316a62517061326473667a48562b4371752b765835576a6174787432596c7752626767346e4e57517579744855464e464b5a70644c59495054374d2f6332347a686a55486858354b76646570324e763078486d584f336f2f61754662336436314852435241564f6f454d52336f4c747a75376d364f715a376851425a7a6a526174706373325a7665742b5a45356169473979326d37365863724b336474312b6951492b4951632b462b6471456f41306e6a3356563169444238437567336f307672766a2f61747476307a302f642f2f61626b6958364c74503841386e385548507358626c6a7174546c626b5766544c384b4c584c3172656d446564516a4552442f76344c4476514e6e634e6c34535047335566484e5935626877394167374e6a31726362617076456a4d584271374d543763466d33502b53627536656d5a412f6836666b75504b524f4a516a4849346f4c4c75347537695a6e646b5a795031477171624e54536346486f79417575683663544d5367333853357846614c58734c3474336871776c306e76702b3142747657775869735572656b747a572b634153515133425a376b436168414952457941614c6259747452766573305135484a626f5777514f49384c5651616f5131462b4376674b616c514f3158526e35586a7048386b484b2f795064504957652b53345436734174767147736d4e2b34584e7a5633425952774f534353346f676f476f523176516f494470566e6c69526346767a565278354a2f67675355544870522f4257786e5251322f4d773730464c494a6a5131785376775146386c41464d366f59494946312f38656c72335032356f4c304c6c71586648387775545258374c6466613372643739456f795156755953497a69765462503144622b514c3177674543555a527a4a624c7458443961732b56766230634f72563353722b4b77424130716c416c77746d3432734c646d7a64423672676d5a6347456d43794942676f373449675a635538626448485967554d36494d534f6f6676556848677049657a6f43776430744d55486f795a3649465a4678454a584a4449344941616331476445555563424276394b75433365367543366c36337164367667793457336c706d4a5a664665677458444b322b51516369376230644f61323743335a6b586e55703774714d6e6c6756696a2f41454a616a52423657506c325975666232357252593345626b63346e35726a6265374335454135447738503372705759313146427374793039713833362f76764e61337164766376515851344d5157664e6344642b68334c307a4f4e794e4256366649464235355233566c793135556a46776559565859676a736d4a5135706e634942514945686e7a556249714770374544526c697049616a77536a34496b413143434d485a44487354416b564351444e424370685245714467676c4643587170696f4136434d79763232344f334f7150436f346856544f544a547851644962727a4a6178542b48676e6a366a4d534553614c6c784a523568423278766e526e366e43497045796c38482f466350555279524a4d7144424275766573376d3545687847504a6336524d716b714e37314e4c643641414651736f4351455739364345674f6e6a43557a6f67486c3854334a4245797771766665676567783249462b384876456430422b664e427a2f53663854636139373357782b4a43395474746e5a326b644e6941674f5139697273536f5136435a714b4b56515130533434706d344a5866424179575534784656697537755632586c32734f4b7a6d314f52642f6567336e63412b41642b5372753234626f4e4c3338316b2b316e494e4f66754b49326b6f696c3067743273677076656b33496e6f4f722f306c5a76744c344e62523771713877334e6d2f47416d5471504d305861416b44516f504e7a326b7a3462567a2f414730567472306663535030774235755633784354314b4f6b7536444261394c7378386658386c3059524559744870484a4545464238676762424252364b596f412f4653426f65315357436b44306f4b3732586172597175344145385270514d635555714b426274714e304e4e636e6369573338645938563245736f6951593143446a3264355a6c517941624a61593349797a4b3878367a365263326c33565a426c626e79714f537a6266596236524c616f3161736d51657938754a4772412b2f7743537a3347425a634f335a3365337250554f596b396578626f585977424a6f66315a6f4e6d6f4d616f61786d7378756950657043344334487651587545596d4c315761567778396d546d3647636c42766952537146576632397356676c75625673695538414d466b6c36334f2f4c5274375a4c6e49494f786375547769414163335761375a75584b655958575745665562324d497742713876796455336474763766395333646a4f57635032494b6230642f744a366d6c637438712b396c73326e715564775764706670384b7074657254737930626d4267663156623855317a3137302b4a3154746d63763143412f47714476324e7847345750695766314c314b333664623133716b2b475048396938357566386e614f6e6132514f426c58346674584233752b76623665752b584f4849636b485533482b5562322b546f6b4c592f684835726b587239336354313370475576346c567a54526f444a4242694f4b394a5a6e446557597a4f49476b396f586d68346c30665374304c567a793565435877515862693257634263325673787877586f64315a594d314375626373436f4b446e6b6d33686b74454a7a4e4153365157714f425661747241765159494e2b3073456c356b6e674d6c327246735952584f3270495a31324c4d644e4d736b44754c62796b634b727758714e38376e63334c6d526c5475587050386833336b512b33742b4b5869586b5751486b556345726b633078494e5167484949424855315547627451447734703667494e37314448336f4a794b6a50564b63557844393641464232525a6c4e4f5343454d6561474b6d7253697944302f2b4f62714d346e625362554f714c72765463537068785867746e75447472384c77794e563736367a696552366e376e5165622f795864434a68746f3564552b30727a3073697274337544754c30376b7a575256506167444b616b514541794356485972747674726d3475433162424d6a52556d6d4339312f6a6d772b7932336e58492f316276776a3756515537442f45624e7470377157715763425350352f4a656a73574c4f316a7074516a475038414373323532586d2b416d42574933372b7a6b3138617266366b4861314450424c71694d43733975384c6a48492b35587445596642426b33386464736a454d73753274614144454474347272536a7244484130584632354e743763716161494e786e356f504a592f5370764f2b2b4f764e61376653574b78324c663274386e365a48356f4f4836725a2b7739523834556a6472373856664e3231487358583959394f2b2b73485150366b4271696677586e396c664e793358474e4367576361636c6d4672564b6936576d6a65395a69504c714d30477662574269774b3656753345567950755757784c70413572554a6167325343324970706b334a656539643952456f6662322b4c7949576e662b6f7339713167523146313572544f2f63454c59367046674f314237722f464c4d725778426c39637053485a5149656a6a72753233384679556669757659744461326f3278346263666b75583648587a3772304e795a486531655344703362756b664a567747737677584e7637767a626862777870326c644f7a456750336f4c74514239696d447541465542566c644871484e41525259505566544c572f68706c3468345a63467263417353717a64616b526a2b4b44773234326b746e63387536476b50444c49685a37746b427a77354c322b37326c7666577a6275782f6c504265493953326c375a584e452b7148306c425847656b567156524d7975564a785546373656555a6345456b5630765362496c4b56342f514b647135525046656c394532344676567a5162647646346a36535757714c67315744642b6f5739704c41544a79396e566350386a7369545474456679796442325964654b42634c4444312f5a6e45536a3234724c502f4a4c45583875426c7a6c78516450635131776c444231547145376b6f5344536a5a302b374e637135367a66334453746767725636615a3337763841557838755131486c56416b5976627436385a4369446158576e65776e6568624d5a4e4333453970585074336a61614d3830473437614d34764d4467734d746e3555365a4c71574a52754230336c69357a4b446d6d557333775737615772634354636944776b79736a74334c6c614c56706d43445641524f41444d6b75577a634646646230747a354a4c75344676786646426c45644a4951665553666239367a58722f6d5542577a62314f624d677a54336e322b37386d39534534784d5a42566574657566626e794e76482b706e4c49416a4a55663552616c6f7458636f394a3754554c6c37532b48387956546d4f3542314c4734335572657663474f6e4c6a38466a752b5a754a44522b4f4a576d562b5737654541595562546975687464754e7645544f575a2f6167346d2b7369337468466d5a6349506b7652657132794c5066553858586e6a5369414d6f42336f755a555577514c676a7a54534b413468413471466f73774c6a476f564e697136566d324e4d534d30476d7a48424d6250466d5432724f6e2b64585867424771447a742b49315a4c504f4c59594c72584c5268425a74767444754a36426a385547496a696c35466250556f7768666c47313459394937736669367947754341596471506955657144494343534544556f2b4b7132656e6247652b75433348444d6f4273646a6333397a52624650714f5143393973646a62324e7279375944356c5537586232665437586c32526a6a4c6d68473858426e3742426463426644383149307158666d6d6a4d5448536a6f7734494868506e56636631665a616f554643506356306e455477546b693548714e47516547424442787953336e49593472702b74375437572b4c30502b4f3531446b566867317a71343845475749344a44334631746c62417156584f316e77515a52565757797847525447477277703543497148516164704d7a4e4d4633647550704d7570634862455137463374744c5578396d51644b4543583471324f4b534436612b7a494f42676765396461334b55716152386c34333032345a627564302f5671783572762b7333764c326b324a714739363550702b333062654e7a39524c6f5052656c3767695a6855786b614b6571514e755854345a59396f57446233504c39754337573874446337655134696e616735566d34626478733258664567596772783862684e63342f4a6568394f76695676516355476733684b6c46544b33477241416e6770656f535467734e362b5a64455378516444622b4d72544f4557366771746e44544542716f7a754364777747456365664a426b33507067755231517878584e323171364c375444644e6535656c4d39496f6b4e754d385256426b4172795441454b6d37646a596e706e6a79344b44655732396e516149777a4939367468416a7356467663323544534a6775744d4c6b5467674c4b4442474a456b4b664642772f38724437442f584665417a5830482f4b662f7343492f7169362b66307a51514961716f78414255356f494b6f4e56456c30435542656a494f6f4645445578533449684241655a557737454d554d4544466d556f686a56487451514950564441714943586b585269677a6f346471414d6345334a42335551547451646c4b4a715a4942694644576e4e546b686b676d4a6349714e6b7052414755624a52516c415930557855514e55427a5737626e395377524b33574d47515747637053616455435471366b38593669787278514d635743436b394935357167674c52646741444832645555374f4b4375644f784e616b59393653664a4547756f6f4f39737655794e4e75354b6f77504a6237317941446734386c35654265547456656874332f4f674a5339767a515937742f6a324a424c57644f437333414f74736c6e6e514f673151747348392f4a5637757a636d496974416c743730572b6d4c42576a64686d6676516379635a327645725a796c4a694d6679577535354d3645747a56566d4d4e54546b31636b47324d373136476934515238556b724e79323546427858523278675961522b31575834776c4851614d673463727a45564a795736316430345a724a75374772726a6b71746e49767742393644302b337543564d6c3162526554727a7530754354783550566433616b47477248676732524c6c635465373233744c747956776e366449484a647149496c566541396676796e764a77503055515431583157573975436830674d483472467172784c7167436959414d354277516259676e4f727250763575304a4d2f4a586265514a45736c6a33482f495777793449456739437445706d525974565a4952315a71776b6d694270414f53685674545a39794f4b665147306f4f7a624a6c4a7834517574746232706c35392f4c754745437865767a585432323544787475657a6d6739424b426a4154437a4755536e38347a677a354c5047376b77666a676731427043714d54457961506573326f59452b36693051464b49486c5536633062737a6f614e536e31565a4c4f516171446e694d7a342b5330514179774b61515934554b5578497a7851614c4e6b336e717a55567350546241715135356b72427464393976646c627565484876585447366a4b6745755853775157573746753247747841374538714b67336a47705a754178554735746b5a6e2f4145792f4a426649736b4c46565376416c71676354525836653941735a595a6f43494e557869345a5477636b46563535514c5649586e4c2b33426c706242656c594c6d627262663148414b446c797446744a77584b6e62494f6935674633764b69574766314c467539714b4f5452427a5153617877475376746e5550624e5a35774e72496f325a48776c423272505832414c514a3552584a74585a51776a5838463049457936384232494e4572674766747754655a4f56496969726870372f623971766a47745546526a7044346c594c523876646b5a745467756d344e514b4371786262626666587156684878542f424275326c6e376d57732f384147506a4c386c314a574c656c674e5038744539753347334551674741524f4c494d76384162344576726d2f38796c765a3277584f71522f6a4c725137555452476b56514a5062323542744c667930565832567433476f482b5a61535167496c426c6c596e444e346a33706f796864364d386c715655375772716a696778334c41746c79344876516b574332784f734e4c465a35327a626c3034653253436a706a584a4579702f45564a414371533549765167494b7964574b305641564c566330566c7479634b6f4c4e446b5a71324550315655692b6b47574b73414f6c42445371614a634a645078516b644e523349484c35305850395174504f46364e4a514f504a62697871704f4f6f47415935494b5a7a4677754d43795167514b61454b4e6d70633659366a376b46573775655862316d6d536145764a74504b6c4835724e366939793361686e4b596462722b3368494e5049494f6273746e4f563665366d4b7944523746764a6a62486d7a36514d38506e69754e4c7a3453457264795542776478376c7942446362793563462b633578673444354875515966574e386437664d2f70485445634172746a656a4f7a35463673533748394a5a575876544e4d5849504d5a386c6c7357437a6a696763327a596e6f4c552f484e5777494e537456327a4756714f746a4b4e4f355937585252304852326b6a454e376c7147346957634c6a66635274697131626630766337332b7065506c32654d693150627551506539517558694c57324855632b43362f70587045624c58722f58654e61354a6654726d77733352744c4d75727861736965433765697445446773352f636c384a514f4b4c787a79514a64416b514d6c6b3346304d337452614c687a35724a617465646662455251546132744d74524e537568627a4134716934774f6e677267422f7051576a4248466c5672493655386a523046573432736477412f694742586d7437594562674534314234562f6376563673316b3952324d64336263654d65464235392b6f79566b53515779565a6f3843356b2b6b39794949663549424a70485144696b6c627a4b746b77706d71376b394a306a416f4d3979526957686963566d6d614a4a7a4e7359313571373037303637366c49364f6d3050464c386b466533737a335568617344564c33416436395236663654623252314872766671344c5a73397462326b52617368754a7a4b74774655464e327a43523131422f42594c2f334e6a71682f5567376d4f613662557179706d535167356c79634e39626355507452617470634e793358475054376c6c3351386d666d526f446a77562b314769522f6962336f4c35516b54326646633639475574304a5a4439533646336f6f733933716e47345167757445366d586d705059336c3630426958445a505665696951434f61346d366966376c4d354668384167746c434e36334b32634347374a6356783632476a4e33646a2b43374e7145524e7073336174473674375464505a6849475563346a44765163797865637531463249586f52623271755059736d4945675454674671675744397944664b3834596673586d3731323536686630446a3846713357346c48444e483062596e7a4a585445755130652f464230396c707357357a446159774a377772665348386d56382b4f345850354c6d2b70377351746e623247422b755834634632746b306476616845553041767a5157696e616b6d356c4874545431484e4331624475654c6f4e786743334643354d5239797275586f32636c52437a4b35575251614475345236437249377145384d517137653174514868437368434441674d794448367274507572494d4b33493148354c796c6e706c7034596a6d76635278305a4c796e724f316a74397a306a7075526633596f4b4a3957714f464d6c787479644c5148456c646d45684b564d4b4263763143445847416273515a52485577376c3264727334776a31316f466d32646a584c5552527662347275574c4448564c4449494a473139555747564d56625a73376d626d463467446a46617247334e79684861746b646f314d6a6b677a784f34692f6c4d49766a4b72703774796442494145664657796c35594d6d777743796d334d7831547850775157584e754d4d65316375646778774a4b36396d55706974564c6c6e573253446a2b53424a77756e5a6b5a654c68394b79333755726370652b4b72733335366d6e6965487551583364714c6b54455664636a305751674a6163626370646e617651324a656159766b56356a5a6e794e3966732f53383241354642643671504c33554e7844775849732f452b33465669596c546a6a2b78646e636258376e6154747948554f714861463575314e7747385456666967462f613279544d41674c4c396d3559594c704f346f724c5a6b507743444e5a39464a715a4e483472703266546247337744306f5a48384662616f4f766772785448444e416a594167474b32576851524765617263486b7358715071683263504c74482b71663841306f4473762f4a39557658782f7741646b4552345068386172442f6b75332b333359763236433650694b46647a3076612f596255573566386b7a726e2b4157622f493469377459356d4573655251562b696273336749784c536a6a325a4c58367a364d4e374133624e4c7746654575336d764c2b6a336a747431416e416b5558764c4d784b6b54553845487a613147746376677233346b72315871586f2b31656536754337577068594844452f69755462752b6a77366a4463532f6d62384367356a4349636e3846584c54335a7273543376706630625355682f464d78507a4b542b34656d6b442f414d4c2f41506d4642795831666d6b6e4a6932525862742b6f3749566873676635726c5069466f2f753970326a744c49345070503449504f68753158322f54393166595737556a7138504433344c5276665635626d4274437a6174676d737263574b66302f77425a76624f5454363752444744734f376767354e367a4f7849323777496b4d6a6b6b694d3136432f384135424b374d7a6c743745763534366a3731584831586158662f754e6e436d42746e5167346b6739554f7865674239477579714c316f6538662f45555a624430702b6e6479412f69746b2f6745484674572b4b62635842686e32666b746d2b68744c45414e76653832524f416977412f4e63707a6a6d67494e55416f45585a41414855526267687165705147456b4364536a76334936714d676a73724e765a4e2b3743314836704350766f716765436142712f424231376b4c6b423564794245775771675a6156363763624f33366e414751305851496e567a4977584475375764695769344e4d6e38575241356f4f54726277346c62647565354f646d426838316244614544586e7735494c497451775758314734316b2b3733726f5774706376644e6e2f414653794835717231626157374d644a6b5a546a487a4c6d5557774878594e69673874754c387230675a66534e4d52794371526f55423845415a364b4a7361424b357a51454642797a4a677944355a494470413730376b5653426c4251494c74555a4367566334747a5141344943525a41704359314b556b4e7a525a3845415a4e694549346f61585164583151656461322b362f5844524c2b6146467936674d757062486d2b6d7a445674585979666c4d4d66694175556736667177454c65316750384173786c2f754a4b356f2b4b36487130796273492f7074576f38666f422f46595931785146736c414e5271677a796f6959737941695830676c6b615346635542305639767a534f364347764a426d716a48346f4f675a386b6f646c41464938454264304b71507077515a42703263664e76526878585a75614c576d32376e4e656445744a5859394b326c7a63516b62594d70525064586d6732536c77576263326f79416c373175732b6d626f686d4148385252487056374d42755251637662796a47626a42656932382f7742533431375a334c5a6254707a562b326e496a67414f71527951646963745231417379776571626f5737636a44436a6379666773573439597362636b5777626b2b4a704839713432343364376445547546783949794863677a6b366967614939696a5a4944456436556c385643707a4b43497652523145454f53694269557a2b354141587047696a5a6f6755344b564b415939694c5a6f4d79426f674937464b6f5970684f71432b31624761732b304f5a6f716f5231345543304e4b4a302f4a426c4d444138464c4669642b3449577738705552757958562f787939616866496d776c4964456a6c7937304855326e2b4e5762554e65344a4e7742327769473472794d7a314568653939517638416c375338526e48353058677045505241475550376b51536f416746464f59527a7172396c744a62792f477a4847522b47614430762b4b656b4f66766277635957332b66354c324a70565577674c4d526274306a454d49707453427053544f6b66676941345151636c475a416d6f47535a4247535849366f6b6359736965616d72704b447a76706b35584c5554453178376659727036654b38723664656c6245432f74712f4665693274303362496b6355462b6b34412f6d6c3058734979474843694a655266346f6a5544306d6943336232694a36376865545a55415778733152626963547862744375626767444546386b5358726746432f74524c54446967636355747750524d4b5237457035494744483549354a595671557a6f424a6b7a555341354a386b46457830736d78685643364f6c4d3778726d6765496f70454a4c574364417969446f7367703346694e2b4267563554636570586f6b327a412b5a45365a43507a587353754e3678634f31742f63776935776c54336535427a3437362f4332664d736d555239577071646978376666575a33475a77613968436c7631612f575268506c53697173332f503363434c656b3934373048622b7732786656456a735037565863394e3165436450306c623479642b442f4244533750336f4f544c596269464b53374a616677565537653467514a32706a677a4664306a4971616d392f5979447a703378744635776d43503457775366337752654d664d37684542656a6a487a415a53414a64636e2f49726c76625759414347736e436a6838776735397a316d39774c633556566472313432354f7850385761346479345a3434704a4267673942366e2f414a4248643758794952713431536b3377586e71555564484241644b5876556f52564b516762424d57797751425a463243426363507a557759714753677167372b30335033467071366869726a616957346d69346d313342737a6356586f6f5131427767712b33414c41594b51322b67366d577a797a484b7165513034346c416c6e686b724e3376504969344c794e416c6c4a756d54636c787435636a704d6967356536757a757a4a6e556c5556774b686b54584e445536417978634b53412b436d7269364d69454373794f416f704a4b4f43426d63506b69496b4241566f694a30514b526d6d4c4245423670656d506167474a554a6169687256536f4c5a6f493771463053475a6b496c756141566a6776564866786e3664712b754d4261392b4a586c633053545149497a496d716a4a554230385256516c5238303052716f794464365273543668756f322f70786e324266536f78416f4d4679503864394d2b7832326f2f38414a63724c6b4d6775744953674b56514d416c6255475a78777955684f4a414d536a777a516354656253357376363232384238634458334b33303731474e78726332424b366b71304e517544366e7334786c727468694d4e50366b486666334c6d62753249336451776c2b43364e7535356b424d665571393144574f78426c684945754b6e386b312b325a7849616f714d71724a61756933646e4357525631752b5a6c384544656e62767a4f6d527133444e6372315830733243622b326f50716979325445747675597977685068782f63714e76764c734e2f4f317535663037674f675a63757969446b44644134634d565a4355535839366e71477975624b62534771322f51654438566964326b2b464548577433594471576263627773306172415a2f7064433264527251494b7068735632663858394d4e793739375077527046387a2b78637a5a374b35366e754262486866716b4d677657375065324c63723169324774376361666469676e724f376c61746556612f356278307753583751326d3368744c574a3852374d66795650706b547664784c31433568487074523442506475655a633830314651675331596369494831522b43374a6d31506b736d7a46645877513365346c4b35477a62385250777751617242387a722b6b2b46436437797a786677684335652b32674952794879513255445737642f354438454667745531543858424e62746a78536f72434846564d4b636b426c626568584939643245622b306d41486c45616f2f69757541776330526269672b542f4143526e687a58553965394e50703939342b433531522f454c6c456c6b436d7043394b62304e766168434869674b393638336169386878646471555466756d45637a6a486b677751742b5a656b4a3141556874544f623452474c384631746c36664c63585a776868703670666b7572746250703969356f50566369574f76325a42357939743763346e79744c66465a425a6a456b7a2f4e66514e314459576d467757346e2b4a6c544b5777735138335441772f5646736b48453257336a3563576b48784963653564577843493841786b33357179472b394d6b483651563576642b736557384c42634f5a435a7844392b5344723757784b342f6d394d6457644848746d736e7163746d523154477364564b754f3742656375373239644c334a457171724f6736735055664b4c5978573633367045527251727a6c73755146644b4a712b43443055505572636d6375675056644a7067764e39576161476f6c304871423678476c4471623953717558726c3874334c6a3758716b482f6c5859674143345158576f745753364f334a4e4373543441346669745671576b4e4a427a2f41504a626b52746f512f564e2f63434635766245524b332b74332f754c6a4443507a584e73596a3278516242646c435853616a67726675764d4c5870534e4d444b6e734653786a4c6d5538647672356f4e4e755732464a52457138536e3366704d4e774e646a6f6e7779584c6e4c79614c52747655627476704270794f53444c75665437396a2f6b6a54694b724e4c466c3359656f784c366966775655724f33756c38335163556a4a57324c5275476e46644933624f456f44327a563232685a7379666a3368426e73625569624c7457646c706a7178354c4f4e4d376b5a5a41392f4a64753344554f44664a427a7a4141382b6168674977646c70754d2b706d535867386662464279626b2b67364b342f464d5a6e3033625376522f354c704d6266496655666977526957316167635069735872742f7a4c6c7545664443412b4e542b53446b52706967526d6f416d4341454b4d39454b713762574a3771597477724b526f67302b6d2b6e5866554c6d69335166564c4a6c377a593743317372586c577778474d737966624a5459374f4f77745274573264756f356b712b576f4768393346416b7245514779536d7841564e56624961735371626b7057777a5551566551425850347134594e7754516e4334582b70504b5048383047613746363438456c6d3850436352376436307867576635726d585979733342492b4534494e75347351336473325a5a696a3548697647584c52326c7732352b4c4c6d36396c62763035685976585054687572506e5138634d686d67382f7045757075785679687147656171747962706b745473477979515a4430684c50426c716a4148784b715552324948746c706175533765796d57643335484263474a2b433665327674466b486f664d2b48734658637661427171736b6233515a355a2b33354c5063334c5a6f4d6e7256346d3335593431347256746f366468474966564633375175564966633342474e563643334143334b317966464267684e2b6f7575313664756a4b416a497575465a746b396f785737625238746d7842515a665662597333394f552f6774327a75554a3455566672583953792f413937724a734c783179696345485976337951334a55324c5a4d343675507a566b6743615942573759435533434472435177584c324e34584e563769532f63687564316f6e644277414879565870305443784752356c75314230376374636c644f594379375575487a54585a61512b4c6f4c4262684a3371355664375932706a704145736945316d765067725a48545242795a376563635258395470644a6a58342f75585875474c4f5136714e7354685446426b684f35394a2f3359496e314b566d6c36334a763152722b31564634534c3475684d696651472b54494b7638414972304e7a365a4f35614f6f41772f3977587a353131642f764e4f76613253664b50697a636871345577584c646b457771703271527252484442424d436f454f52525143716e4e484369416f67674367446f69694341714948464641522b6c4236495555633449496345645342523549444a6d71706967794271676d6d744552586b6f31464367684b41786f6f6867674f4b4c315a524446417778514c4b5a7153486367426f6f65616c464851457152356f4870434c2b3942423846737352634c494363317532383474794750464177416476656c387a54574878526b51535770327175567336763455436b366c51596e4258674e677138712f38417151567a48636c63484645304b414251454c70624c656d304e4a3967756239564d457a6c3048636e4f452b674c4c4d4877344d736b62354e4a4c5859474431644263505434466961487353586472355a4c2b483656303763694974452b785354736934346b79446d5173366733444a4a43304a53787a566d3532733439324b727357706a78592b33795164437a74704268466955742b316574773035385666747762592b61305476534d656f4178624e42793469354639664470357059306a307456646a635734584c66534d4f4b3563785567426d39364466736a394b39425a50514268775842394e7446745a46633132355341486167323766416e6e697548367a364b4c386a667455754834727132397a474162425566334f4a654a5a42344b354852467a6a6755414e66617531367859747776655a42744d716d50425a702b6d7a6e445661367544494d646d59684f74514d466a754856496e4a31666573584e756446794a6a2f4d7330716c38304143737862696c41617162356f4c49514154504878632f696b597836765a31472b6c7539423074324e4f34695a4f7a6a334c6674703235596879432b7244754b6231506152674b2f7a6479353279753638716a32716737735a6d557445614c544b774c6236616b4c4673514a52362b31613739385169444b6e48503549434352677a72524337706854466c6a69524e694b71794d4f354271684f356347716a664656334c7339514239697446746d357248646b544e34307951535573356c6b30626b5736533630375461773061376e55547877577a796264794c45653669446737753163667a59555a62626537453763626b784d6e776b5a4c5864394f684c776b6a34686336653075326a5555347851616257366f7869592b35576d3647724f54646935396e58574a6f3334717956317351673269554a66744b53646b45665854394d79737276586d6d4e7734676b6469435862494172397833536458573745497866712f77447a7077376c6b6e637641307554442f48344a724d356b316c542b4b726f4c4a334a524f6d4f3645414d764c4253513363424c7133506d4839506c7350674535336c7755694967396957487146382b4f4d4735494d3037776a4a386c6549573731734e5838456d356c356845355245616472726d543879784c58594f6b2f704f61446f48614f614c502f414736576c6c496573516366635130484f555430726244646265593143352f366779444844597458487357794671576d6e35344a2f50744443594e473471516b4870715a4173656b736139796254713666676e6c3068336f6f77494a47584642524d536b6448367357795733615852743465574c4d784563413738316c6a434a4a4d334d57776a52316f4e79314548544b37442f4148666967756e36707472666a6b52794d4a666b6b6a3678744a5958502f544c386c564b39675937695148386e374533335568457464312f364751586a6432377a537479484373542b78574864614b54684c2f534e512b435462337a4d4f6667717a64674d4e5966394c494c527534546b3052496e6870492b624b324e384878394a35724e353976362b47654c707849546930444759344642734656566533467577486d56676e75414159323641342b33425a514e585552586a6967324866796e4a3763514257737365344a7675756e544c484e5a7531714b75354e6e49795161715a477053734959386c6d326b7455576c69432f6374446b31514e62746a565661664c3039797953735375444775565530493771424552315247636b477355504a4f5737457362674f53634942584a4a4f75503745306951716e634f6761443459666b704935424c515a7545582b6b6f49493954355a4a647a49526a7a4b6d707a536f5665366b4b4134592b3542584b4976586f452f5148393631665457705765794b536d66724e4f4c425741686e6945464e797847595a55574c41675a44427946736d336943707345316669675735614747625930584e47796a47354d4e30792b61366b754876566370444b69444265395059475544307978354c6e4430793775626e6c576a32797969507a3746335a474a63467566742b4378334c6f4a4e6d3134496d756e6a375a6f41646e59395049386f526e6470317a4f7075794b354f2b334e33635430584c686b503059522b61366e32346c487972594558505649317735704a37614551424b72665670396967387663684f7a4d536761696f5059766f486f2f71503332336a636b657550524e75504876586d626d786c4b4a6d597469634b7370365276423658755a5175482b6a4d64545a4e67673976716276564d7a6972593359335969634b7878634c44637648566751676a3679357048357372396e624d49617631456c4c61734d4f70587542515a494d74346170644f53766871616954546d4b444e566564637645693151443676795157547547485150476f386a4d4766654170434e7662356d5a5065554264752f394f3169635a483845476e5858707172584b7865547535343342446c434b73743761594858636b6777657362594749334552574e4a44747a584d595946656b6c4458626c6278476c6555456e6c7170574939346f67736d52465a5a3354507150596b6c4b563657673069456474744c752f6b59575131742b7565414859675461656e53395476734b576f3479354c325549513239754e71324769465874374d4e7662466d32476844343830786c773449444f5445635078566d734d3556636f2b594b4a4c526b33554d63554673384b4b7344462b4365567735717555745344487649655a624d637a6773667032346e506f6e6a423439764e64536474346c6c795462387664386b4853764e4a3559446c6d73786e6f74366a6b66677264335079726657736c38614e7541324a51587836794d71724e763450757965547137616d4e7767696f533775494e365149444d416757646b7a787a3979785772734e7663304552684c445533466264704f55725a427152386c4c3171457935596e46426b5979637a726c795465554e4c657a6c58516a7170534b7668667332737033542b6d45583935775156576654444d69562b6b6677565871507156763036486b574b335433694837655371395439587578426a4b49685470692f5533456e3846784e6a626e657661382b4f4e66626967756c62506c466e4a62552f4e6572394f61653274792f684139793557397345305955446472725a3666755243324c556e6150763979446f5a44696d7430695a46556562456876324b626f4338504a6c344d5a385479515632645735753679546f6966657570434f6b454255575245523078444258476f344943305538565070524d634f6141536f754a2f6b6350364671392b6d546479375569566b33397358374a746355486b62552f4c4f7073316d766b334c375379793473756e4c302b586a4568704869315930584c32636865334d70537a316155485832746d6d4861757474397548442b334a5657625130367331757373794454436b57616967654a3144486b684374492b354543575251434d514455354958514a687541547847724842563349456769502b6c426d48544a682b7858696971632b417068496f4b4e3342386331793962796a494d757465655656787079697859317934494f765a4c4f595972682b71326f32765534794649335144302b373568647a62793142346a416531467a505877495864747547776a4c34494e523374765978387935335231566b764f582b71394b384936415338597574666f3862667156323563336b6a4d776a30682f62424a7672526a506934785156575a786f355a6134615a4d36782b587071314856304147666867673673445853634f4b7468576f77487857434677366170647a756a626a703435524f42516164397668746f4749385a58493949323076557433356c30764350564c6d32437a6d7a633364305174764b636a6e6b7659624861513950732b566238583179346c42716c6345596b797a3967754a36726431776a5a776b5a475568795a644465333478474948366531634335646e4f6370342f696766306a626957374d70355231646b736c334c6b626d334f7547484448334c4c3648746f53747975346d63734d7742677576637478696451484e6b44376263527642734738533878362f364b647566756476384138524c796a2b6b3875533675694669384a323661756e546b633130366d6841624f4f52434435717846634538543738386c36623148307a302f5a6a7a62736278746b2f53596b4172454e78364e474e4c46325a356c766c4a427a374e70716c6d706963566c7558584f6e41344c7454396332673659624f482b6f2f732f4656783964674b77326c6e76446f4f5261746b6c57473244695632492f355075346c6f5274524844545258782f79726461582f414b4a2f33666d6734636f5241564f474b3946482f4a6231796c3233626e624c786b49304a3935576158396c7554714c31742b7868387967356b42455669776569655a30676d523731317062503065564c65356c482b59482f77444a4377657362613374784557723062775036635179446b536b2f5a376c43617677516a4a3642427955424e5642576d43687056516c30416f69436531444846534d304242434a7051596f59397968443449492b5347614c4630427a5166554e753179324a2f716a44347851757463686f7642787a396e53656e5338766137636e4f31624877433336676578427868735975396d344248394d367374467230364148395735356a5a65456642625a574c5a7843625262687751535534576f456e706845563773563548314f354c374365366d65766433425468434c74386858735865396275796c626873376236373530646b633135332f4c7267684f7a744c6668747770787254354242356d6f554569464a5364544564694355524743444f706c7a5141566f69413955427734714d324b4270645068536f746d6f42564248656f554a42716f47474b4c42424d716f4f785245535a414446614c6e70323673395679314f5062456f4d764a484a535162454945494f6c36653573376979634a5739666641672f6d756349757476706c3457397a4533423079654d6e7759686c6e74626135666b316d426d6545616f4e6e7241493363346a3659776a376f425963756861647a7464785a3639784759664f5553736a615454416f434177644279334a514d545442516a4a424a4d3945535878535a6f6f494f534264454e6d6f674471664e47696c475141794a37554d4b496f6c424147577a592b6f3339684a374a594878524f4575306578574b5342716739743666363974393264462f384170585066417638414c3542645756437870773446664e6e58543250726d34325930654f332b696466646d454872393375726533746d3566385036633548677646622f31473576437836596654434f4837555055642f50314737356b2b6b44706a484b495749555148735163684548466c434d6b417145564e54314b6d4b4149734d31454d75614345366c4a4b66464d316149426b677a4b4d6f575145535a51466b46414542354b4e6b6f674379414e6c6d724973536c69324257797a454131795150414332487a5a4e6a3271644a44704c6b376b4d716642425665747445464a74673132504d6a6b6e75584e555761717a676d4a6355494e4548715056626a374f5144474a6b423776594c79756c31314e7a65387a62764c483831797741674c7355616f4f556341515545414a4339582f682b79667a4e3349596630342f69764a4e775830333076616661625331614f494771583878723830477158697854766b566e75544a6a7134666772354855487951534272706c5657426c6d754130617035712b3064596441614653556d4b6e68516b2b6f6345424a3979713345394e6d6373476a4a584843697a62346a37613450344a49504651426862697a302b627270375064547439454d4b3979795735616f687858386b4c4d4362676330507379447448653344414d4834724e6339646a5a4f694d6464782f447a3449376142743232794b312b6e5749543345726869435944786678494f6a744e597467334130735756356c707877556b6d4d6148696768726771796c686330644d6c4a3051585078516b576f554154523856477a2b43426f696945386769394855795141644a544842534d57525155586854556e446148557567354b536a307367454b4b78794658414156566d4b41756968544642336f6768716b6c626a6342684f6f4f536642515651654b4e3764655a354d49794d6f76626c4c41552f59756a365a74376c7563726c2f7853474475797639514274583246497a72326b5975713454302f6967317559734d6972497a4b78655958664631664536756143777877516e3067796569675a334f53536655476b644f585967586337714f79735333453674344f63704c774632396333424d356b794b36667266715233313354476c713330782f4e6363387345444d5641674d55512f63676847616741774761474b4d5973674750616a704246454452486d454368314d6b64536a75674134493661506b674f4b33374b3139784735627a4131443875394267785856394f39564e672b5865726250484a637a437156325165386358496963432b7056536c707175423652366962523869354c2b6e4930354c306438786841334c7030786a6e7a484474515972732b677a4e492b325334473933734c7449502f712f42543148314765396e6c47413849574138454241594b4b4269747469312f3431323950456d4e75506269666745475055554b4b4f334a4b4a5671675941444654735578444b565153505a67687a547866444e4453364169696d70796b4c344a69676a756f63475269775464694374696744376b5345434777514d61347231482b502b6b37626462627a4e7841796b5a5361725543387a61747975796a6268347048534f3965363373783654736a434830773871484f557179504a7355486839784b506d7a467361594f6449786f713468716f436f594b454f674d2b43376e2b4d656e6a64376e7a4a2b433131642b5334547233482b4c625356725a2b614b5475796366797839696739434a356f6e694d6c6e6a636c46784d64347a5469524663523855454d64485750637251635853786d3951685633514e516969783771317267514d52575046317331564c653769714c733843674f786a7073516a6a30342f4e5836616356584174375a425769694467336f6b37716369746f595277566432447a31443952664a585348394d6b5a494b72323346327a6f61735334584639554a7657725768764e4250546d42486a3372753765342f59566e3375794275692f455549367667677a6250652f63575474373444365469666d7650376e6279735330355a46642b377379497645422b4b797a6a356761636168427834324a547757797a7335587065525a385a38584166676c75656f51327336784c356a69765465697830624f4579474d39557965442f73515a7234486f32302f6f42376b2b6e562f4563317a37317252597462437a4a35336e6e646c38617172316a652f6433593237645951773579646458306e595374793832392f77416b6870412f5448682b61437a6336646e7434327259414a36593831546268706a47497a784b5865585050766a4f45512f6572764c306454594434494e6c6b3649796b797132467658646e65376f6c573359474e6e2f414e714e69486c524146637a326f4b7273504d7647527777576d4e77354b755a44366d5453506c677a493849392f746767754d346d544476566f3673566e32385a6558716e5755756f72523452564161736934425352785a4d666967356e7250702f3332326e4436343168326a325a664f5a686e4842665765663756383139633278322b397577496f5a61686c34716f4d64694c7a42587164707434324c674441532b7276586d3968445665694d334339584f49316e2f66376b484c32767174375a786e477a434f6e564c552b4c3459725a36647337313231357a755a536648446d58344c6d3757314735755a327055456954375a55576963664c42477555414b6f4f76482f4837636e6e667561704770775a637937734e726163776b38737457413731694f3875584f6d633546756c73456a426e4c39694274784f48576251476e6732445a726b79785852767a4447496f655842633263584b4251485a57542f534549513675515469667951563879756f4c5176523177344c6c46622f54372b6b6d4d734f61424a327051726b6b446a466c314445534853466e6e61346f4632344962674630725570447069436561353974345562322f61744d4e774f43446f36744e4f39565874325a51614859715a33483661724a63786f55485033546e715532744379733350546a6a77775657326b3074527764304778704f34795668664f717854336254364d4577336b544561685842424c735836797338587248676e75626a584b6c416a47516256676757524c61786968476646567964365a6f4848676761356934566c75394f49717158545134733643373769634f714a497136376e7048713853664a75353045753163457766715530584956487379443364365054584259376b6f6b64666572647075504e3231755a4f49723355577131737863427558615148486c6d55474157674c666d7971423078316353754e36687442637262422f4d387531656776334476357874376150394f3258314e6d6c76375957594f4d66782f5967384c49474a494f50424c517256763567336959724c4775434173585a652b394439486a736257755662733865584a6333304c2f41422f535275647a2f4e474f4f47424b395331616345437963466a79775230774137555363384570715367496a77772f4e56365856685a4b77714548507637535544356c72492b4644616234544f69347a7270736376334c42366836594e78447a4c6654644745754f6144666f4237466e33753338327a4a764541386535592f54642f3576524d316a535846777577447239754b4467374b39715855686430594c6968374e34775030794c44745855745465685163483137307070666332487234674679624d7a4a7548487358756f796a636a6f6b46353731483066793547646a4448546d673567694a486c7853454d6143767755306d314c52494d33465878706c544c4a42534c656b3534712b31304775436652576c507756636f434d71653942707333444556714777564e323535684e65794c4b4d492f74562b3232757336796561437a3032314b4552636b326f64374264557845584f6368525632494367557658415a364f43444c71314e4c7556396f463659724c626749755278576d4553447143423935624d37556f6b505263574a4e713571464267563648454567342b3377586e6f683553474c4676656737566d3547635734726474756b307179383774355374304e4758593230775039515159665772766c32376b7839556f76334c727762514944394d644b355071467358744d43374357717136647367687a792b434452596a584e55626d5a6c63455166446b72376353354d6a544a596f544833456f356f4f6e596b41464a79656f56496b3142696f373530514e4b3554734374326f4456576135497a4969635452625944524642567564754c77664134767758433332342b3174334a595341707a4a58704a466c6a39553245642f596c616f444c777962416f506d42504644735675347354323979566d35535553785656454537464f7a464d79567553435949784e55476f706b676e4a466e51436b6149494737314f5a524a4a716f7a68424764424873527179426356476f3647616246424d5167532b4367554251525232553745634b6f4232714b4b636767696a7632714f4544544241775076515a51714949634b4a68576953714a515163464167374b7830436b6852547451646b4241476130574a44344c4f366530527130385547386a3949376c437843455a6b4f583746614969512f4e426e6e456b597173524c397132616f735935716937634555474f6551344a4353565a646b4a46325654356f43514f4b594d6c4c71506b45444574584e624c4e316730735173384c526e6b34566b4e744c48325a423134626e58583237565964335370702b4b347368637477564537787a51647165356a6a49684b4c3973536f334a6357557955596d6f434430666e7730366950645657526c435a78374156352b47356c436a7132317644437144304d7055455a667850525a6949676c63322f77436f79496149626973387439647541695251642f3736315a4262466c525031567a5450395334506d534f4a554d73796736302f564a334845704552616f69333431556c76384154345759652f76357269363244594b536d54676736317a31547a4b53414e4d566473742f4c5a6b5444732f76433467366c743235476a544a6b48753537617a757259467a716849503746655a33332b4d5374794d3745687078307264364c7668475032387a344636434d7459787871672b5933724679784d693443434567496941597451723656757654374734695263674f35655839512f786b325a61724a36503079516566456e4b61723431526e41774e51683830487474786f6e4454494679764c476372463255596361354c32457a624f42646838313558653254627579634e58464231646a4c70637542376436336269334b51497a584d32563058493038512b444b2b35754a6b73416774454a576f7563633164626d44313832584f4d70334a752b6e4c6936333243783079716736554741597171334858634552686d6a4c6c37676e324c64557a512f774152516277416a4b67706b6c457754556a336f6b4356496e48676766566d6c6c46776b4d4445366867724a4856524269334e737672694b73755a4f6364624751594e6a53766575384654643239693452726847523568427967596b756d456161563054736f4e2f54416a334b6d5779752f546f495159326f78795568527570586661376730614b59624f647573672f59676f765149416f3657474c4e2b5345726b5165716a484f6851684d45676768384d55433362666d52725432344b6d33766f5769624f34485468715631792f626a50714e654b7a37754d626c73314a593845456c36565976395671344e4a2b6c364a592b67615a616f4742624a336455574a7973533642302f4a3856324c4f2b745341314d2f462f67677a52394e7643676c474d56644459655834726d72354c544b3962496f584371763768384379425a33785a365969767a575735636e666544615878356a4e4f596d5a484c7849526c4556776b325a6f67757352414145634666634a48535862327853524230757850416a4253623530515355584c346e735354685273324b57642b4e52717279424a516c63695a4e706d4f656c3047697a426f684d5a367539567a334e7544413937677151684c646e52436c747575583442414c657135313544706a2b3550553457702f7a516f7570617377744452414d41724e54494f64474679512f7743492f77436f786635707051755244474e50657432703143576f6735467956794a65554333765757385243504e64366477415657532f597433496d4c56723855484f32447842656f5a616933657162467332426f694857797a5a416a356c797376674544576f6159366b4c6b34785a346d62725641776c46774b4a7751673563747a5a464a32726b47354b2b33757474394d2f774463747043724f336a4f7368462b78414a474d67347a344b714a41795246727976442b7851427858456f4b6a4c6d704362696d43716b54484370564e75385763444f6944594a6179324575504a565741626b664e4c317757612f633167576262764c7848674670747a4559637679514e637536576a4b7173384a45566d67504e6d72595365394e7670366678515336537844316455374334626b4450384169494b4f366c4b483150796f6c39444f7261526c4c4d7a4b4237704c747a344b67544c7869635a71795a4c75632f436b326f4e7938544c2f414b59376b47714a386e6f49426a2b61776e5a4e4f556f74314579377974557065624d7456576d494743444e354c445356546232356e63426d615a4258794978563042303950616771755733746e6b4b6675584675656d66656267596944646d43376b354d484b74454e45474863677732646e62326f41674333623742614c635444716c6c5658456142555656636e4a6a415a2b4c676732676e533756496456533571325a302b355a62753449357a4e4145447a486d41524f4178567352685767566359793067653378566d753378464f3941544f474d59764a4e457a5041414a34796a4c416f6f464f434a6a564279324e455975656f6f4a454e6a775867347a4e7941694d4b31373137696374416c504152432b6477334974694d654869393644644d78416a4559767039754b37336f304a6257784b33646f54497959562b53352f70514275584e31355a6d784559636a375a727447594f4c343845463963363570694e4f53716a505651494334314a5976306f444f33716a7142596a4e4a4736634a654a5045353468306b7572716a2b3942627230304f504e56616a4670424c496c712b78533049785158536c3030584d76786a71633472586a5172506369677a657558764c73776a6e4e71636b643953335a4759695a6e767757623175496e663239764d674139693037364c79594449526f67753252366d6c6a693374677264354553367550344b765a524a784f4665316174364a47496b4f43444461754553307959676a766f72355671466d4d644c545a316f4f346a435055376e6767797a6c6f494d6a5432433565393356372f6a3136495a526837664e624962694e326479366151677744724a636839774e55786d67354a695338705058697653656b37587974734a6e473435505a6773473774784e6f5169426a466c364345504c6845522b6b526a3273677a3362645934344a4c5544626d345037316f6e45595054385570747467673032415a53415044344c48747238373979563065463269465a4b597432356b666f4b585a52387141746a4559766b6669673645496d4c4b2b46774d785034716d324a5a6857694d546a2b346f4c59544d71436e465079697139576d6a565347354948423046797a582b415678756871672b37425a4e7a76626476716b353068325163483172647874577a43482f4a5078636f2f7458463949482f6c5248464c76626b7431656c644e42493035444a6454304430393548637a776a3077356f4f37624d66704442364c5742704c596c564e69593466536561736a636248464266474f593969695930624a534265704b637859494671413068524e4961683263457a55716b656e4e426775784d54696d67584330584f71697a44704f6b4942636f4b4c6733346a79355146526a46643636576a67754a666f64424a4c6a33494f7073356b776a45343453376c6a2f77416d673971334d5a46766572646a492b57487872565865717838793362686c4a34746b374f2f6367387273346e6279314467307539647a643235457849485357584f75776a43665434683776697535456630346d4664516430484c753248445a2b354a4553464b4e7a585476574365336d7373374e575155546e70696451422b4874565959324c323575655841417949316376666746305a32664d6b57442f6d744e6f783232337551742b50544b5576636731656944625273505936702f575a654b4a3464697576376f573843356e5376344c7a2f6f46377970336937447935533778677432784572327265334254773268325a6f4776526c636c6f7058786436726a744263506b35636333576b68704751505561725874624f676559507951614e70594669476b5a7132394e734f4656524b393763465835756d54352f4e4254755a414e4e6e72376c31595346794f71485645686375566957346142416948385332546b5245526a6c386b47695675336667597a41306e3472792f716e6f567a62766432765862786c484d4c763262706b476b744554355a2b5449506e5768386365614d694f583756366e31537a73746d504f7562627a4e5a3670436368586d755662395432467336726530416b503158444965356b48496e4b4a6a6b6c305247456775374c316e7a496b5332316a5351634973666d702f664e7464614a3256736a2b4573662f61673430423562766d79747467345973756e5063656b626b6a7a4c647a627a34787150782b51566c72303759586939726567667a78592f774471495163714551354d3270324c4664597a4a79586f4e353650397674376d34686574334c597a6a692f436c4f3565646745427877536f6b474f4342487651466b47554e43366c4d5367687051494d6d7a516c7a51514652326f56477a55784b434f46435755474c49554344366636654e65797345592b56442f414e6f5631727036566c39436d5a2b6e325a667774376979303336415334494c577179684c66676b737a654c48454958377732397564302b47416c496a6979444274774e31366a63756d734c455261682f4d66463773463472317264666362793963422b72534f794e417659374b523250706b39795431796a4b38357a6c4c772f67766e78346f4a52446d6a4530514264424b736d6f6679537146304461766768696f334241785154556736664446446d674c494d6f454d55444f33553956394e74626956323161755370726847564f612b5936546976632b69337864324e737634486766627351644b39626a63443349516c2f4e4631583970743359324c662b785035672b6c417934494d647a3062593344714e6e5333364374573173573972623875794e4d5277784a356c4e72644b5333506b677468666b425134392f7a5758632b6c625865427077416c2b753351392f464f446c6b6e464764423554314c2f48703747334c63526c475673643071305843774b395a2f6c65373077743755487866315a2f6746354d5651516f52354b4d366942703855744d6b5548514371596363304d616f675a5a49414a4d6a52305847574b445a6f426b6952467159715648596f51485a414d455458425171416f492f465242323755576274515251383141586f6a45444e414872676f47524143556d7143484254425148676a497579414556554645564d614942526b516a37464c5149435278554b495a517567424b6734715643474e5544516c714e4d537568597350327242416745534f415856747a3132684a394e66676757634975375949455275525a4e4a7a57537269656e534866323973554649746b552f6371764c6a6a4a583359357250495a346f4c4c39335644546b73744d6b5a346f5a7367685577434252384b445a365274667574336174476f4d75727346543846394e6b513638562f683232387a637a76482f707862766c2b7831374b544242535153346b6a7472676c44546e46566e3234704e666c7a312b3942736c77434f334e43436a694e5953734f784261613046456b6d387976424f4b4b7536644d67677459726e657458664c3273674d5a644b364f4e467776555a6a647a6c4165434854332f414c45484a62524563475168646a46684650753279474335304a456e67673942626c51434163304565334a64725a37663765316f7a786b56792f53374a4e794941704561767958646c55555149617034344a4d38464959494b62767953514237666d72623067326b4a48707234305157785452475a78535056504544532b53426957555079536d56564a467a584241515854344a5132534b425a3830432b6a6d6d6d324255496f4543784254794c424a48356f75676b3555356c4a416e4a516b6b365432717752376b454264435254344b6b347536444236785a313268647a746c2b374e636d4772734258704c39767a59547435454d764f576455414848564870503841706f6765426e6a52616f526b326c316e67785a736c705944765151507a2f6175623637752f7464754944783358667358527554686167626c366b4269612f6776472b73623737362f72694e4d4d496a6b6777695878556c5271714371684b41444e3054554945386b5155417137496a6967417042424178784b67554e46427a51456e334b5971636967515079515145753630374c646e62583458514b41344c4f32522f636f3734494f6a363374687439796448676d504d6965527175595633397844373730323366486a73487935646d5334517851414d744f34333133633234516e4c706747412f4e5a633078346f4161714165394275434e45416b4f425861336c767950546245526a636c4b34666b506775545a742b5a4f4d49314a4941626975782f6c456f6a64437a436b624d495143446964696a674b4f4456454454556f494f4f61554f3945545652784a675541504a45466b416953794343544943686f69416671557a515155716d6669704846415266707a51547353687355783459494f677374334a577043354173596e5647584d4c547666553978766950754a6168476f486173514e6346435837454569347167546d6f2b515852394a394d6e366a6638414b6957694b794b44485a7453767a454968354666554e74612b327451736a434d5248744b7a2b6e2b6c626230384e5a485566714f4b3234422b61435a5651694772483969634d41684a6a56425759506a696c6d5336744d644a6f46584b4f736c4176504e5a4a54426b4158385939766374456977593846784e76664633666d30634166697a494f383961342f67726d6f71496d745663354f4753444c4f4c784d6d774b65304f6c736b38514d75616b656e443234494f64436b6d37364c5a41366f747748775754775844715771335042386b4176396c46684e694e7736766775705071647852632f613239514d35476e3755484e336e706b64374b486d644f6e482b5833496237666d3659374b773862514145757a6775317534613445572f457a41357575665a3265695a6c695741506167665962434733414d427a572b3964467545736a38304c624d4968553732594f6d3333396944485a746d55584b3074496741356b44336f516238465a5969626b78774665306f4c397a57476c4e4350477054626e78386b4445696879515a70504f34782b6a6771626d344636364c4d4d756f747748375654764e3339764f34394848663764367039505058722b707450785164754d7a6b6d6a6464394e51466b4d79586848412f557262557051476d3247346c732b504e427269645855553158352f4e5577316c784c686b727753476667674839544a6c7a7657505437572f736b584b5469444b4d68795856474c4d6c75516a4d485668583349506d6e70635362687a306831365751637979476c31796476745a656e3732647564417830797949795857684a79545044524a325165596e7544627553456671566436354b5643584353384435686f6b6c726a6967454a794237465a432b32476172384f4b55447071673069397144716b6c36497748755549597567516e5454336f7877344a70594b746b426f694a6d42374547594f556f484a4236477a6546793238506370346733745663577875703261787747533655505649536f5270505a306f4a6f304f795331412b4b6f433351742b614f6a53582f696a386e567364726370456a50356f4d3859763451367033416a6236356539644d32593765477535307839376a4665643332372b346b644649447778515a376b35544c6c435574474357494a4b6163546d6755737a356f4644464d6765333153666772424b6e5669713452566b67425642554139564968354951715372517a4d67505248697045454149784565384b34535a6e716747724b53667a4e417156584d4d73383545314b44752b6c37366475344946764b6b576158302f763731365063536e764a6558487074523855654a37654139793848746a2f414649475a6f4a524b2b6978417869663467676b54477a485247675850333236454c4e795978303950616e767a625679584b33554c323536497861427a7a5165566c49794a6b5636722f48665337666c78336c3674656b4c7a4632314b314d3235436f4f612b683748612f62376146765054586b635547794e794456504a6b3073717250477749485545534455684262534e43614b56795665706730716857513073343933424173695a643641366f3655386f4d565553786267676533634d656b72563272446374394f734b3278643152424743446a657357507372304e2f61476258426c4a6476627a6a6368456a777344373156753750334f336e627863555850384151372b72626d334c4732644a3473677039516a3565386b53635136304365534872646a56474637366f6e53564c62652f503234494e566c2b78507549754e655946564c6341657a385662626747306e34494f664f7862334e5a78442f4149354c4d665459347771745776797270686b363159686b48452b776c48494a66744a35746775744e34476c566d6e646d2f68373047654730426c313971744f6b447047436a544f4e45664c4a6f67767475496d5a78584f67544f55353979365632586c327a32555849324d684c61755457524a4b4332316851344c564536547056466f6c3347484261494e4b4f71574b433848564d78795a634157764c767a34535075507a5862692b6268316b334e754975476678515a4a51415a6c737358486f55756c7766337062564a6166715157337575682f63744f336d3067566c6b577067797474554a6a694f4b433247366a356d6b5a653671703274775864314f58365748376c6d74776a35307035474c492b6a7963335a456451396767366b62706c314b347a365866386c6b3234496930712f4a4e4976495239364454616a58564c354c6441734f6177526e704c596f6a6448777365336767335935706f6e4e5934584e654375684a427866386d39482b38742f6357522f56686a2f4142522f5976426b5a484666585766466362662f414f50625864764e74457631527037386b487a7447516169374f2f2f414d61335730477549387932484a4d63687a58464c346345456f617141494a6743676b68785277536d6f55714545374641654b687755656e616768795237636c475a517864424542524873516269676d435079556b48436c55414a70676f6f61715056304577514e56436d6c564147344b4938736b485154745541434d734f534743435078527a557935494f674b4450696f6355787056414b4b455a6f596f38454154426e6443416370784269673251426977537a6c314676447a566d6d69726c31446e78514b48636d574344464f614271704a584d67485156534430565a414646645042365556504e30456a47764662647436664f2b31433350425a6f5852624b316a314967615a44702f63673663646f49773045436d6172307862546a774b792f334b4a41424875557437344568385547686f45724676646e3545756a44784c564b39626a486a3272585054754c596d32415a42357a5332616d6e50384161746534327a50494c504b47517a795156475430795266696e6a5a4a4645304c4d6a6a3742416a507854526732537568594a37716f3659327858464257496a4570483155696a66754f797064766d674a5265722f414c45726c537246304638445842614977594d33375669453279567374784d7379446f364a776b47392b61362b7839546b5a4333647779586d596275524b75473445716a4642377931504e79526b7454786d4e44652f6d75443650766865742b584e332b415856457a6e32494f4a7639725a4e79554759342f74584e2b78506e362f6f775776314864536a764a53426654306f2f65445271373845485473543879436f3958394f6c66744339444543764e5a494337626d4a426d4f58347276374b3735304e4a3667666242423550302b3459485263446c64417a6753346f55767158702f32397a7a34696a3143704669557076692f743730426347693162654d376b6e44553934536552475068557352307a3152385259456f4f784b62312f5936724731747a365a78456e7a6b55542f414d66503471676d4f34724833494e5939507452777457366331636472454553466d76384d6d2f46637777415936574934302f4650456c7147556635545242744c784867755237332f4657655a35513169547735724b446368574e79512f6d366c64432f656a48724d5a397a494c3765377458762b4d31576734726a33626867664d5952483148503979364e6935356a63514f3142704e6662696b4e4f704d537032344945457a6d724b6856524665583071317a6b6757555953636d4950636b4e6d4836592b35576b6849526d6771386d334c43456166776f54326c6d355356754b73456e484a516b356f4d63746a743545776c47673455644a4430625a677549794234366a2b61314e5769755a6b474d656c3263415a4f50346b6b2f52375a44617074322f7358516a5245557167354d76536f4146727336307957757a734e74626a5346654d75724257674455547a5633686f677933505464744d764b44354d354139775378394e3273534e4e71507a4b3154346c41305147445270414d50636d67584a4b556c476a6471416b4f61696f52634b71396674326f764d7350697159627354724333636b4f4c615238575161717948424542636d35362f5a74794d4462754f43783651634f39566e2f493976482f414b56332f61502f414d70423270644953616e78584a6c2f6b4e732b477a636c334b6d66726b704d42595a2f31536246423139624670597169516c4a394b7978337479645a51694737315a397a787a2f41456f4e6471787047475065726f32324c344c4c62334e755171444572584142756d6f51457a627770487554444e705476706f63314352586d676f6c6175537a53546a646a545566334c5667374b71557967703833635172535877532b6472365a5261537631754f706c58634150683852516337314c636662327965496f7562744c2b69324979664633354c502f6b57344d397847324434497848656d3274767a4c627a7062424e4d797944726250564b4a755344612f434f533058357352444a6c58596c3075615559636d556b616d346633494e4e6b787479456a6856316e3948755375526e632f58636c7050454c5076747835466e4871754667746d77734778596743342f616771332f414675592b7a702f51322b302f77425567732b386d515a4f7a4372713330534a4f7a46486563304462676d42597162454e433550395a48746d714e37502b6e4f5a78306c5757694c65316a496d706a475576636775327477794d6e7133775775354668526376302f564a7966726c7158557573616f4d552b6c327a576d412f707571784c725672533074782b6674326f46745263386b306a7050746d6d306d3341755853613642753941544a6f395757617073645574636c56757272514d49697078556e754c653268726e534c595055736732334e78626a487a5a59446973466d2f35684e776433494c6d7873332f56626775334f6d7a48365633596265464f7232434252614570504f5250384f533151307744516933596c6a47324337386b3834416b6161393641362f696c2b357469686b78546932526b6d6c4544327a51566663326942316644396963583445644b5678584230774661666d67342f38416b5737473332556f2f56634f6a757a5867376473334b5178344c732f354c762f414c726465564477572b6b647566354c702b68656b47332f4146726f3632365277422f4642315054624d3974746f57744756657170504839693067673478592f785a4c544341637572783142705651632b56735a4b7339464a4c644f7a4565484656454f644a46554759637366636a4b496658564c4b476d716f6e4f5565723655447a345069566b733368357372516434355a725641526e49474e584e56352f6162694a334632384b6b794943447669664f6e743731584d597658682b6170684f6a6a444e4d4a4239506379444c7649617656724d47665445486974742b426235716d3347552f554c397756304345492f4261726f623971426474467934576a63482b6d7a35717532474f6f646961393157577a434448795a5a4e30574269426a6756663452565a376b6455332f63677a503043326336717a53584a6a2b774b36647470564753425a74434450442b707572567557424f727430727542752f4875344c6a2b6e52483357747a307866754b37555931783665484e4252646948314d6b4d794b4c52636954487057554f5769546d36444e76727874572b6973733174394f7343335a47727850716c326c633364336847394144444753376531322f54716e514e37304634384f6c5043326357545144485441456a736f7254627552776a487650374546635979626d6943515062344a784337776a37304a61686950696770494a774a697564754c4f346b357561664c503150577136386f65594747533839754c47726461683441484177727a516333636241796e704261724c304d4c666b786a5a4136594d78474b7832434a536569315377427741514c7537312b7a4d43773150464757425663665554476258624a45754d4b71626d34525563465a616c727436626c4b75473465315547363375724d347655552b705878303351396f676b65356379355a74784c342f46566d5549304149656e4242316f7a6e6e48544c34464a623346752f4d32734c6b664645384f5837466d47366c41385973503371363574374f3862365a78724759385139754341796944302b7a725063494237305a58376c69576a63426e2b754f425754633350366b6258456c6b47792b4a53746d543078433839644d6a633076526567466250617542764b546c797751625054716a484d732f7741317433736f6a794e56415a79422f7742724c4236633447444438437433724d54486161342b4b456f7a48765a42797655396c395844347256366463384e6d5744616f666b567438794f346978486947706c79774e4e774349314e674f4251644b516376514a532f31565a5533726b6f316959672f70492f6173312f38416a6d3331556f6732547344473750524878596a4473574b2f63737a684c6237547166706e4f57486375665a3259336c79684f6a3670536c55726f537578326c71635253495053416734396d786474796c746f30316e713741752b5a364932374d476141623831677343553579755a797a3756304e74745a5870504e684565386f44746f6135387578625a54707061676f6a4b634c59497948425a705848777764424a45355a717757645262426b51344930696e4469726f676954796f45466d336a47493146504b4f75546e444a534d57444a774a5030356f45384a6f476f6b6c626935315971364d4750465451596d75614450647351763235324a426f3342586b654b38414966535467766f46324a6c4d42786a77586b375733394d424d72312b55736157344d666936446c475769677856634865693631367a36535342617533522f464b4c2f6b5530765364724f746a64327a2f774455364548494654326c5768754874376331306f65686d34644e75395a3772694e7a2f48392f62424a7461782f444b4a663855484b6b5267717344514b362f6275574a364c6b544766435646523249494144676745355367494a32496c77587943563063613549494d457546557a63564256424551546d67706c58397141796a6b6c5a6c416f584344364836426545646a596763784b7558694b365a6c456b7869596b6a7844672f4867755036444533665472635142496454366a2f455664764c4e754d44447173417872706a306b3442794d55472b464a674842632f3179666d573462614f4e2b596a783659735356757336703278435a36744d6539594e744b6537337479636d2f6f52387550445566456677515a2f77444b39774c4f79687434663951674e2f4447767a5a654764785665672f7976636139344c5756754d5939357156353831775151715a6f67754543676a7568565454525474514679614651477248425478494949464b69714e57554264414779524b6a6173454179434754344c75656b6276797255345a43516b754c55417132336338734f45487237652b36614231646233496b4844676865536a76575851746238753258536739444736595543627a734e586575645933634a426a346a7856786e4556427751616a65426f2f754b676d6347786f734a4663482b6172334638625742756e4c77397144692b7633664d336b38656c6f6637614c6c354a726c303370536e4c456c30756c414e4c597159493563564355454b42554f4b4a7167564552617150616855494951796e6370326436684e63554255414a51597336494c6a46414d30535269677a6f784341476f6433554155524c494a3831425149596f4948422b4b4341346f6e694545456b4647795246653141437855316163456343796a7555452f464642386b43616f49484e416970564144336f4379484a453055634949414165533647306b4e4c506b73447264613274696476575a455339736b476f6d55612f7035594a534e565269567a37316d4d4830794a39753143457a453475454639346b466c6e4f44712f7a59745255546a5467677149434a6b63536c426646516355425a454b59424c714b4433502b49576447316c636173352f4350375858656b7835724a364a59386a5a575966773676384164316669746b68336f4d31304d6661697045334448503237467075774f716a716955434b6f4e4f336d3950597136516673574b7a5053584f4b3254346f42436f425358704f416542526a536a4a7235486c7649345a6f4b623234614650456667467a35514647372b616f7633695455344c4639795948694772326f4776422b6c593976596c64767868615a367637594b2b63684b6f785864394932707451383659426c5034494e6d333230624542484574587457724b6972456e6f45384b684247536a675647627355384e45464630673950734576305556557964524563485476687051587741425670646b67356f6c7338733045666b6d41624a596655664e4e72545945693536764c6b424952354c6d33743136685a7469335a743348774d3767316e387665673946456f414c675139583356743764794f71344377364348375337424a48317137423558663165434e43332b723845486f547a54536f7552623964735363586f7974734831532f59756c627678334673584c5a6542712f4c76514d2f314948724c594d7047683973465464426e4e7544494c507166454b304649614a6f696a6345426c56566d68716e6b5743723148455a6f4742416f4635376444796239324a77654d76666976514f4f4b34337139762b734a41596a53656561424c4d6346634766344c4c43673651374b794e7a4a41337146694e2f61586f6d6e3950562f747176412f4a65333959766a62374b64657535306a73646549464545626a524552373048617675552b4b417363636b70775a45346f4542424879524151556655676255675355305131454347356f4146496b505646364a547a5152716b4a674e52645467554b41385548632f782b35356b376d306b656d3748346a396934392b7a4c62334a5735654b4a62334b3761626a37652f627666706b4e585a6d75682f6b4e6d506e78767770473745545163596c2b78416f42485545454f4a555549656f554a7a34494f6e364459463766576f6e434a312f37612f4e5a76554c7633473475585439556956302f51497874574e3175353030573945542f465032413731776d514e70525a7a7753784c4f6853534268564b4b4975794438554531444842516851386c4d4b49412f46476a6f6a676c4b41344b596971476268486b55454b68726770454251315151422b7842474e464b59494a673639622f68746b2f77425735394e493936386a697670586f4f7a2b30326475426f5a44584c744b446f5735505230326c6b4177384b4930344241415644465238434d31584b636f5037664e413871704a53594e6a3271527578754d39443763555a6d49477249494d4f3776783238444f575834594c7a6e2b50543836394b6376455a616a325a712f77447950656162635952786e6a7943792f3432487558446870683855487164626b76376c7474736155574233344c525938656b5947714330304a4151594e772f596d4d4b7371692f696c7851633634777539575a637256616331476179376b6a5645447357697a55426b467a3644564a73424557414a6330307a70426d2b437232456d735733345a633351615a38466e6e4635474d5864586d6f566342516b484e4138494d57584c755331584a443659596331307273774f724e63306a72666955466b415045744f304551355765322b64575736324247325161505642564b476f73374a353232633468564f3578566a394e45486d2f584967533138524b50666b6d395075644d59356b4230505871676341546d73487046307975364a634f48424236654d664d4f694f58426259644930786f736c695968442b492b775775505558795157777146594a3162755149444b6964677a3668497555476f50696a47524a717149527577784e466243526469677a6276593264344e4d343957556c357263512b3061453647722f414c563746654f2f79635849546a72384d766d6734555a5167536343652b71573764316479724c5343516371567751566b48454f6f595a4a6a69347038304e56487a51534749644e6f644972644a4f4761425a51657171494f6131576f505255336f615a494b6c6674747435397a7933597171537432397a7937676b537a4642555159534d5a596843526f79366672466b613458342b4735462b3859726c6c6b4244787146625a334679312f787949564f474b44494f687674354b3947454158416a3856677854664651416f4c3764516c6e494d744549434d5154775765374f4d69644f43436b6759597152443471416e4e50453855424279344a726e6752675065704d6b2f735156434e56623234634657426d566262674234716f4c59615759652f4e416d4741345637554e546451564579525641356b537a594a4a44486a797753766d63306f7735494c5a55376c3762304b2b643574426c4b4a30466546356c656b2f7741566d497a75787255443368423653646b523854464a4b4a30764844426154774f436f75514e593449504d656f624d584e39624f6b365a366458646a384637516d49703755584e7357424b397147512f46317674436e4176696759537271396d533651376c534f4c46526e79514a696358526852796962516b6f6263686a68386b46734f72464359425663446f713676466142426d67432b6e6b715947567535706678425833597364584255336f4766554d596f4873534f73784e5032726b37442b6a7662317355343936327a7643784a6e724a5a5a5039354b59384d3950775164446657684f77527772376c6e32707a78344c664d4355476b504573304c4a74793661494c69484468565333476e7034712b4a48426375394c2b6f515467554465716e54624734676344314e6d466274743371624d63315a35583346695673734b485432727a2b78766d44327a6a452b7851656e4a42534741345a4c505933414c524c5657695242515630373049416469736c685441704845515751632f7742547541574a484e5a4e73526232734a5444435262327a56507245705368356554713932743763592f6d79432b33624c39713169677173396d3234716331716d644547443971437555364f632b3543345263746e6b734734764533474e4752735842574a715367734e4a6359385563432f483278566b34386543562f4c4f66636746794e45396a703673565841416d716f6a6346747a50705150636b7a694b6d776c704e78384a6855786e724f6c362b356c64747870747951624c4a4f48376c727477665552374d756462756d456846713572705369775966755156435a384d616c316f686261702f596c7478366e54677866483971432b50557249557171424b4135496965664842426635776a3249473451714e625a71794544336f4e45656f615638753953327732753575327630794c646d532b6f7864654d2f797a30366362673363423045615a647144792b54715931556c67686a696749356f47744552516f59596f49554d457a684148346f49416d48344943754b68476d694255337a514e455167443155554e564467676a74524846426c41454241636852526c484951413456525042515a71564b414934714e78557751446b7079524b434136534d454d4864515a68516f497a69695042314277436b6d5151485434553575464b4b636b3573797a47495162434e585652736b6d5645624a794b68757847415141794a53694a59354a5a58434b43716b784a30465a6c6971745471793541765656786767684c7159304b6e78436a75676d46464a437242446b6e62446d67756d4e4e6b4e695673394a334942386d35534d714c4e7677497a45492f544541724b354743447533346753495743656d50412b3377575133357a476b6c5675673147376f536e6330594b6838696c64426448634546776c383255735657694139636b424d716c30744370704b6d43434e7778556569676f6f4f314161456330412b49525a314144686736425754436961413470674148634d6733374c64797448564845306b425146656b6e3674447964544553412f55395635434c50337252624f7142623936437737677a6b5a6d7369666370716c705a2b6e465652745a6c305770707934633048716239727a4f726e6b6a73495474484a754f6130794c4e705432724e79343038492f464132364d627473323266767a586d507644743579747a414268536a7356367135616766475679643336546233492f706a545036554462655976444c75563059395754664a656274656274726d6d52494939785861324e32567934436343506567333369593141584b766266553074586c7935484e6465356145354e4d482f4145716630374855504c676634366c42793756336577415a72772f696974467265544c2b5a743773542f444677746e33686b662f414c6c682f4461663471794f36746e785835482f414545666767716a716d4b416a6b724e5a4161594c492f305a564632364f6673455961685747346c2f71692f34494b72756b524a34397970326534752b5a4952446e44535675724964576d58453866775849762b5459334d764d65756d58544c397144756e6358514f7131513843717a767445535a32356a75584f6866326c7743497558512f38414555303578302f30743251582b757445473648714f326d57425a6249584954724167726d374d7a6e68647458477a3073746c79794a6e7174507a6a4a76795161644e464344704943356b72566b644a74584f337150346f61625166543530472f686b67364742716f5177706d756362676a2f31376b66356f666d466a6e7661394f39446e6a6151646b654b71746f334965334e63617a75747a4b6b4c7471362b63756c766974303775376948657a3735494e4a786356537a35594c4a352b376247782f766c2b53712b353342724b56674e2f4d667951644341494f6c574d346f56796f3771636e2f41504c74687545667a4b5765354648336e756848386b4856643848553045314b343070786c583771374c2b534c66676870745a7a334575365835494f314c48745358623862494e79355152784b3446794f326d64553437682b4d6e6f71356d56316f43354c79686a43547566656731323767757a2b347661716d67417048677457757a51796c63503664547373494d625864687751454a58434d5a637543446b586749585a787a4d7048336c58517552694f4b473774694e37534b2b3243797a4570394d454630393678307742666739466674624677663174784a3379564e6931416c6e373831316263773742695167614734315546736e4a5752743342466a48536a475a4c565a7543305236673551474945596950424e4161547167536a4165396c4a54387350772b4b44565976787550475749785670414964364c67376a666551664d77697548366c2f6b74336478387579504c686e577051656a3333722b7a3257666d585030787937546775582f77446a43776362456832542f59764a66696c4e4b495063772f796a5a5470507a495078715067585766662f414f53576263644f31363566725a674f3472794948464c7143445643345a58504e6e695456646661623061644536682b3963434d6c747379452f44516f5059574e3559755249314f3942484e5a35663139774c4d53444750585032354c6c3239314462784d7a342f70623952347638416775707339744c61626656502f6b7566314a7937636b4750635844764e374745667070463846364b51613241474466504e63483036496e656c646c6a39503572756b734166656735653848394f516a5769312b676b6a5a41594f5a4c4a7550714f4332656c572f2f414252455a452b7751553737776d48476946363239754d4a6a32436d3865653562694d45383542744c55514461454f476668324c66756e7a7769754c5975534639673774554c6f33726b6d3574376b427378426b3831706b7a7375664b64516373347078644547644272765847706b7339793477315945705a33342b4b526f736b796477514c554359385a55413936436d3975444f6c6f504b5a59646e346436366366543752496e65674a7a624f7264324347307357397631545933442b6e4a617a496776474c2f414d3145466c734444355239736b35684542564335656e394d616533424e474e79565a426b42466d335078524875565537467334783931466349796657614d6d63476d576144503545526e496636767a5673594d507a7169644a536e467a6767685a5a642f766873724a756b646545655a4b3034484663572b667537776b375246424834494f5a3650365a356b7675626f366961666d7657576f365146525a73696a466249476c5544434a6c324a36674a514748596947515152616e7336724d5250785971312f657178556345475578306e536564566b764e62664e6270395643754836723670485a77616b7273685350366561444a764c2f77426d5a54684a37636f394d65422f426344623369376331586633567a635331584a4f71344167684231596279656c69496764372b7a4c712b6c69637575346148717777415845745331554b376d73573976634f44514d593971437a304f59334e7a635848724f663572717a736d702b6138332f6a467a544b344457676f7656524855777a434450417357393657395379536d4d53394654754b37573831535077717944444f57442f7654524234647154557849474e46554c676a306e7442516143644e4373354a414f44563756564f393567384c6f5265576d4a3933456f4f683666623069556a69666b747573524c4c48446f444e6770357069536731537555726773517564665437443856564f2f49557755734668496e732f616778336f47397672567352716450754f507758734c466a53786c55383846786651747362313665386c34662b4f44384d31364552306f476a797743505a56455262424c6d7943533979443052642f656c4a3979444e6474476358464a436f3455586c76584e7a4b34497968533461454433664e65747749504e6549387379333568674c5a6c37716e356f4f7a74375174526a6b41492b2f45725353414b64337477534471464d66637055477553436d2f494551456e7271314563317167624d532f6d55357248664f6f5170676a5062527641506c6c6b6737646b5735686f344f6d4671426c56634c6247653175434e664c6c546c376c7275337057726e6d41754851627232304236674770785747586d324143443166417272516e72694a4f3449644363424b4c5341515934586f627532524f4c63522b53344f384437793343544e626a356e76585a76324a5735616f6e70354c6c656f774a7643386143555978486367366469516a41527841444f764f62796c346a6834563139764e325044344c67372b3452646c374d2f77434b4473656d5035576f6c2f69756e766f6d657a6c434f4a447246364f5a6a61694d674d614e7758556c2f7741656e6a696779626168424745612f677554743757766547324348485775397449474a70786f7548642f70657369414f4a6a48744243447553323975355948673835764731567778746a764c756962693162365a66784868324c747a6b4945386c6a735849784a42786b6458655546384c656d4979486845636d56554c5775577565414e4935557a5630704751556e485342707a5144534771454a584e4561344b59683566376c78622b362b356e70742b422f6579433657346e754a644473746531742b59326636754b7032396a514b414c7177635244596375614142346449777956786b4c556463315663757774395573506b756644646e635844586f5046427673794d7036736a6774635131537363496741484e47563478364941794b44634a694163344e565554334d4c6e2f48336c5a596265647a727579635a44383162356567555143396341307a7039523977587a2b455744386c376a647a4169424967556c48556374594e635065764e5866525245644f3473462f343251636a453155646c306a36524c515a6564596c77613758346f5139443374324a4d494355654d5a7850346f4f63433941724958357772436368325356397a307664574b334c5577422f445433724c4b45726549493975614237747956325a6e634a6c492f55616e7656654a6f672b5955444371416878696f34415171506b6f41324b4350714b69684c71646943594b434b6a4b4173454541314b4f79496f6f4b687767566a696f785a514a714950552f3474746257367433505044364e4f6b366947642b4859753162754e6474697a636c4f7a4c7a4a7a387a717048426e717a72682f77434b7a755770585947305a6a704d755869794b37312f627a33486d53733947714173773130455838564546392f66327472447a376879634e3958494c6e2b6837797847325263755246325570584c676c5370345a4663692f73644e327a59684f636f6d656b6e494d324842646a31655a733765354f454c656b4275754e613044635367385476723533562b35645031534d754e437336446f746d6741446f71596d7167353151425146512f4e4e55686b4163697168424b5771595351516f6165356b3158446f444d494267574b6c5a4252717155484a42416d5949426a6969784b43537954526d5171333979497267673151334a43364676665a454f754b7a3152684d784b4430316e635055535a6358314c64486354703449304835716b376d6255474b7a6b75674e63464e495242667455434256445247705135684241697a3151484648556744383046506b6d4647514b4b49346f736f6355454f436c45477a51664e41666d6a696f464d55424c7055525651783449464165694f434c55554645415852394e394733487152506b67434d66464b52615074374663397543396236442f6b4730325731466d384447635354534c366e723738713841673835752f54372b3075797458596e554f716c51334873564675314b354c524145794f455969713933735a6e3132557478647074682f546a612f55525635652b673970597a62394a32562b3545794e7135412b4b4d705058466d66765165517557355735614c67496b50706c51684951576464503175395a76626a5859754737485448716c6a38672f65755779417331554b42487455356f414f534f47436a566441686736416831436869564b5a6f44514c545a47714b79694c71793367576f6773756a4a5575786f7267374e4975716d72306f464c706e656b6b764a42424e4b4f4277514a716f4b5949413478562b337379763359576f347a6c47507656644631503864732b647637596c674f762f6255664642394445644930436d6b664a53496f6e6d51394b6c4a45494b376b644b70703731746c463830766c6f4d5537654a46614d744732754363644f617446734161536b6c614436685168416d6a54496a4a592f554c786c487978326c6139336469494f545663573563314855676f757a476c6f34725045474e54696e6d2b484e566957575a51614c47332b344d62663670744b6d517156366d5a4557344c6b2b6b3244724e303542753872735841364248315a4a3446315245766867726f356345426b483971705a4d4b4a7046673477564e2b5851534f43436d52474f50354a6f744956343053423159477079515857384658633067312f63724966424a653442414441536759676b633434716b374f6353544739504436712f677249644972697243546b677a7973376d4a45684d544844542b4b53636272367057524c334c65314f4a516b7a55516358623750626d5a6a4b784b4a6c58555134343079586368415734434d63414658436464494b756c6767534e617041786b56594d5655432f63674d685771736966314b74744a3430376c495161736b4458575061465643546e4e504974696b3036634b49476a7a7757543157324c6c70786b56734f4c4f71397a623832334b4978616751634f3334577a562b6b6d55653155524439533157414231537741316535423548316e646566664e7356684278466378674d565a644f7535493879717855494334787a51474e4644543855476f674e57706b6f334654554469676665676a68485146447977516269674f46436f65534859677a6f475461583570593571594641575373694f616836554166494c3047342f77444d394a7433616d646d5a746b2f776e50354263485331636c3350513233466d2f74446a4b4f714c6351673452347073517778536e476941514552657553674f53414f536a4f6739464966612b697869374863584e584e682f2f4149727a7939422f6b736a612b3332682f77436c61692f38337346774f534344426d516f377141736f4b6d714349684545595a464967597055514f4b67484241485a4554554a6f6f3147515351514a6f6a69674d4f5343414e334b41356c463048397941673655524968436a71635548523946325033753768612b68395575795035344c36524b517779586c2f7744447475317535666c6d52626a2f414b616c656f514f464e41344b6b7a306a5578526a66426f51554453674770524d775a304449592b354446416b7257716f5352742b37344b2b4854514b753564455166616944352f2f6b456a39354f31566f4e45663756302f7744477749325a7a2f5649563746782f584c777637363763694b45743767793650704e3432374551374d37392f4642364d45634662436569576f4c447462327375543073746b5a617135484242306165453472504d74584e30327071357171527a5a774d554758636a7147704777474650797852334131556a516f57355a63454631316a446b78434f3036624673667736556c795775334a75437673686f78617244356f42343866705477476a396f55315537506971353163635543337561787761525a5858435269733471616f4e46754c30576d34577438386c4c56766a6d7139334d694c476a494b3763385756737a7857657a5445712b2b30594f6738783639634559694a714d2b3348354c69574e3150627a3132364c66367a633879576d4a775847314950642b6933504f3270334576455a7a3773313134452b4c4a65632f7875357232303766365471586f37457849565157414f55645455535375614b6c4e616a517a4f4b43794c6e4645674d794c756a45754541787858442f7966626562736a5041774d5a2f682b4b377273465475374d647a596e5a4f456f6d4b4435654a30524568376b6a615a615a5a5554554f534353454d525656796b31566270427146584b57527751494f654b30577a51636c6e545244554344667145485036677373702b5a466c575a6b314b447345436b555235706d7058465157794367655638797469334a79423456535369376868696751794252564d5141672f4653714350775674694c7a59717172712f624552655244305157626d59445242664e5a3951556d645a3146497a6f485a6767593037455256474d6d777167613064556e4b5738515452434d7450596c4666775150794b73314e676d674133577071634d513641453070564a4d553068486c6d6c385235494549554c79434a644c49494347495959727566347863493367475264634b6d4a58612f78702f76496d4f577042375757444b6d35584658584b646e34716d59302b4b745542734d4870552f677455577a574f314567317174476b746d7943326f513831386d51684d787a663841616f7a6a6b67614c6b736d6c4153784e456775616758486172424e425463744566676d7479623856644b4471765378636f4778436f7a5935303572515a55574c636b78615934305163333157666c334c524a385772717a37466e73584e64325046482f4a4c6d69315a6b4f507a57545958427169613950346f505457617742645336486e714b7274532b6b4c5270457531425669485063754c636c2f576e493856313731337978304d56777256326372754c41494f317443316346357266327674643657776d482f414458704c4236476b75522f6b4e74353272764470393641626136324c386c30724e3254506936382f745a46684766694336566d35705a696736636237303471713766455378436f684d694f705a377433534f724642796433496d2b4944463366384631723973435559667041314c6d6265486d626a56707a62466447385036386d7951616f436974764577464d4d306b4e49494a775a4c6533586c76456355485076326872484f7675564d35474f594251752b5a6369326f565757375a7845716d4b447162572b502b504572644f305045413361764b584a53746b615a4d75313666366c356b5243377961534237396b7534704963466a6c4b524f69574b37686d4a327958424c467173755665416d576271393644445a752f31645573517572626b4444537548654274764d726436544f5679553350596737466d4433486462764d6f736b2f36554f66414b7979615651614955344d674a752f77536b4a325a42596345585a7946515a6b6a4769686e726f426767744d34356c57324e31444172434e744f644764776d477869654d5548586a4953716b763268754947334f6f4b7832396a4746597a6b2f61744d4c5a674b456f50412b742b6b54394e754f4b32706547583448735849785831652f7434627142733352716a4c466543395639417662456b77367254507151635963464b4964694f534359567a515a54444842456f42696a6a6768514b4f674c616c43346f564b733648494943506b6c46557a5975706767444b64694f4b68346c414f78466b634572684247554a79554164544c6b67677252454d39554b385643454563416f6d716770564b36416a6d6f434641696767624d49537279555243434173756a4463366f64584263317972414a4573677665764e5765565855565842366377725954467548554f58376b4545497477644e47302f38325846567a6c707238316e68656c43516b4d6b47693946794269797275774169777163304e666d4f3653354b726f477457446378566f325663553232675a64522b4b764d44466d6f677754735347536131745a534c42626359383162366242376d4a785a427a4c385a2b596461715a7665743236682f586c446e38556e686967784e6d554756397731596f52367531425533656c5a585335424a4b4b41526a724c6356626368355a306a46617468426e75384f4b726e456d5249396e515a744a46475336585777326a513534725064715546596972486f6c4536386b4d616355456f314d4538596746335a566e356f343151587947447438306b674d556d6f696f54473451507a514d4d4b4c52615048334c4b43486f726f4f433439334642306252387764693065523034645859734e693459466f3057337a6933777751656e686f464934686159582f70574534754658416d4a636c42766d59545055717845596a334c46644c4238386c574c30374a7158507551613933746265386959794131447779344c6d3753335062334e42776a5146644f795a47767957636e564c56466b477547334630645a3665416f367674374b7a5a48394f416669616e347179304d433674416b3641526e4b4e44554b7a56776f6c644578424342717147754b554454676d4a2b43437535596850474e6663754c366e7472634c7775415952303939463233727a584a3956654e7754703447373048506e6362322f4e555468467737562b706b5a7a4d354d574b4562304c6b6f746b67325749686d57324a6d50424d6a74574f3041484b76467a705949483836376c4f586570397a6648317571354f3946575742624630476d35764c3047367366345238566a75656f3334484742663841682f59724e3149664a632b2b4250716233494c374f3974584a45584c4d4e51397543766e6432656533666e5435726c32496758476e5545664a6179485a71444a4261626c672f3841374e62702f462b78503933616941316d494430645a6f50715945763950357069534b534b44542f634c72394e753133762b53536671573668515174442b574a6f6b6b5234686a376535553632397355476958714f365038413149773561416678564e7a3150636766386f3764444b75394167554e4375615a6b7534307367766a75397a43522f71467a7a6f7455623035735a752b622f75584b684757376e474e48352f693243394662427479416b4c6c77742f306f7645494d4133456a5731616e6379384a30756d6e5a3331364a38345374772f54434c42645765347553385a753259486862442f414971517652465933726a2f41507a49302b53446951324f3368692f6d5975615657573572323839474c72306c36562b354854356c6f2f7a5549584f30364c3355787a664c69674778394c6c632f71587a6f684877784e665a3064313674744e702f547451316e3949703856587539396539536e397274656948317a354b2f62656b32624647636e47557176785a4279542f6b467753364c4d644f4e584b3362502f4972567a70766a524a38637543366e3245473849584d33666f6c7539344f6d534474516e4751456f46332b714e5656656d2b72557743387a7362393730753859585043616356723958395330572f4c672b71587751637631586648635430517043507a584e474b4d764579476c415467364476565138736c48427851516e7555716d4f4b556c3045354a6f7a4e76716a524b53673578795164373058612f6458546676654746524869757076623072683051777a35386c7776524e3335462b74524b6939413141324a71673062437a706a686c70573264775256566f61594f615679537a313665517951632f665849786761457270656c326a6232385938766d755675324d57396d4b3632324a7432363430515a72343162794c55634d74386a4333307a365935726d584359626946773559393630584a367977617066386b47507a414e36434d44443372666362557935562b592b35742f78485252623773336b2f64336f4b707a494c6967526e6574327735496f4d506276516e4d474f75766171646e7354764a504f6c6f654c496c4266734c4833674e3634444742384934317a586246694d514245734f434a73644f6d4e41314573524b3351682b614277496a39796b727256696d44464c7062744b4153754751537a6e635a4e4d55634654564c745155526c642b757151797548444d725847555a4f39453067446767784e643542485663743134384671305a59724a7539794e72616c50675069677865706570334c5a473373307579372b314861574347474f637059726d656d325a587048637a38636a32304b37305270656e4a426f6239503571364f43726a4945396d435953514f314777554144453846544b396b713562774146675a4d6730794a3471715a306e6d566c382b56796870792f616b6a48536458373042334d726c73663068726b423072774f39686646777933414d5a6e48566d766f64746b4c6d6d594d4c7745346e365a56397944356d6d37364c303371766f45514a58397034522f302f77417679586d5448546a696736657769374756563074385773414372654d4c6e624344516461747a4c705a76326f4d2f70467a79723166712b53395a356d6f61673638687477424d53617642656d74536c3562494c3774377a4d634277564d593639767549486a4833535566546a52314e6a4c7a5050356a35494d424a2b44653361737534684131617131573955717844725461394e755876464c5244336b2f6b67344d625639364f427a6f756c365861315336716151353455393636747630626277424a317a2f6d6b745132555761325245494f524b556a462b4a4b724d70596c624e7a734c6b5070393259584c6c714853615a56514c4f5430343571364d6a35656d48696d644937316c50564c5351413368376c31765362666e7a45762b325069554862324f324730737773782b6b665046616d47503745734339546b6e2f4e414b3571454e5149366d554655436c5646355578645744344b7375634d45456b57504631355733427431646e6a714c6646656b764852435535595139766b764d656d794e3632626b7631532b4b44724f47306e3971716d574772353471615877373154646d484c6f46684d4f78774c6479366b4c57714e4677747531792b595a366535646d467a52434a35365851533574795248415666334a397862383232517264597551635a71324931326e2b7042587364554c586c797977576f544831696f576177474b31416a466b414a707a574865625558495367374f4b506b5674384e49305766654f496d517851655a74337a61746d4a7764704873584933556a4b56616671585939546e4f567955444c7856773472687362743051346b44346f50582b6e52387662326f6a394c72707470445a724c59614c516a4674496a47764a61546b41676b664357795846336e2f3841473759417745543846326744686b75524b4772316d374934516a46763973667a5164486452647a2b3959705265622b775737635644444572484f3041432b414342504e4c386955383978626853574c30436f306b39682b5335323473545938426b676d37336b7477572b675a4b37302f61734e655156454c4f6c394f62415a5972745737506c78387349444a74576755577130326f544f617168625031592f4a5a2f5539364e68594d332f714870682b61446c622f645333323538697a3452303869526e334c7362585a57746e414f64552f6573666f316b5147714e444c716b54784f53374a6e6268516b61386156514e474770714b7a5470447059546a4d394d53536a714f414642336f4434634b75714c6a45694954457454444e5a70796435757751637a31666344376559376f3976376c354c6d56332f563558626b59576f416c3956777437677556445a626936486a413037766d677934346f776b517451394d3354644e715a484552636642565864726573482b70417835454d67305750567433742f38416a757a414754755063614a7435367675743544793730684b50386b52385758504441314b6d6f6f4271794b62675570344a766767474b426c7754414e6a6e6d6870666d67674b443570704238454d6355414a64516c3855596e33494d675a7745474278554459714f51676a596e676f484a706d706a565737613372753234385a5242393644326d7968397436726f7738327a483378412f4a6479374b727269657153467663574e373452433535636a2f41416c646537646a434275534e494357484a42775a624735754e316438713862634c62434d73513871742b61702f7943397549374b46712b4945796c34346b31306a67526a3372712b6d695564714a6d6b37686c646c77367346782f3874756a525a736a4561726837385078516555785231484e5155716f61494a794350616849386c415878515356653541316f69794449472b614877554134424b4544555142556349766d676a736d6c5369477077796e346f492f4a4246754b674c49414746454d45564f314145356870416c6b556e597456767132737766704d5a522b52515a514b4b424856376c4b596842454e53504e41596f44493151795549554143434e376c43464752644147436852497a5549705641485a4544696f53345579515371414b49596d6c55473149437069676f7943456f31555a77454279515230516f79476455424f4b465642685645304655477261372b2f73784c794a796a724856376365617a534d72684d706c796333784b5638306561434d7872676f7a71506d7056716f4939654b4d55704e585569326141305a42736b52516f557951426b536a7155487551514a7333534f2b43594e5542425a4176514b75595975683831487135515354343855434757333033792f75492b64674454747954657132525a3364794f524f6f4e685642686f675369614b486b6767706976552f346259486d3362777745645076722b4338745265392f774154322f6c37485751336d5350654254383048634a55414d6b4152674d55635542635256643263674470547950637043394764454766564f5959356f6458696e51426171426775523668764e66394f3167504566772f616771334f343877734d466875544a436a74466c5647504e4149417670567349695231676f51437632384771633048623263526268784d6c706b565259355a4b397156346f4d34364a4d56714551797a6165716930784261694173417375356341354f744d68465a4c38694f6c42534935686151584157654e5757694a425158686d634b75666866347132414552524c4a794779515a34676a464f2b58656961315a5163585157784e4573787044444247304f6c6c4c6a34494b59466d4d6662324b3078646c6d48754b3051397941594f71422f447956317954524c597049514565316b4478676a71444a6e634b7134637330432b506b70715a6d717043476b56554c7347515163714f69434355494279355550346f4f49592b5864755179642b4371335734387261585a2f777437797448715672524d6b47686634726e627944374f3843543073666967386f513464544156775270676c4f544949784b68344b4f695543674f694b56344b6471484a41636b41364c4d6c51483470745873454d61495364716f4749474b464356426a52534c505642485541664648425145684147444c6f656a337a7439334351776b6450766f75655530636458785157627131356436634f4569716f2f50697570363742723062736644646847666575557a59494a685661665437413347357432706547553467396a3157623572722f34394566646936634c635a546c7941483755465872312f77433433313265514f6e2f414730584e445a6f334a613547527a71676553414a69423370536d4575474b41455a714d6a785a4b4545504a45446970564268336f436561444b4d6f50346b454a446f397167436751444a5233487952464d5541372b3253413177554f43554f433665454e556848695548306230577a3976734c4d637a485766384156583856304471782f6369592b57424143674879544f77514855436a70424358386b664452417769324358534a64514a4254617331496f4d6b74594c532b5335667175374f313273727566686975394b4f6f5678586c7638757647466933446a4d6c423479524d70616963617274656e544559746950795847487957726258644d6767394674726e55757a616b344878586d4c56305272484c6a7a586573547a474b446f43585471427170493831514c6a5579537a756169574c6345436d525a696a4357697677524d686a6833706641472f616762553944677475334d5a526744687058506d57376e573278414345534f4151615a434461566e30366a79567770514b6b6c6b47546330434732416e4a6a7956562b597633476270475331324c64506b67317834597246755a61704c5a497348584c75335471635a494c72634b314f5075532b6f794f3373416d68723765395a4a372b5559394c754f624c6b656f623235754b7a4e426c7751636a64335a534c6b724d4343724c70314b67565164623062652f6133774a6547665365396532735430723574715a665266534e72634f336a4b2f347039574875434452474a7579717455656c5047476d67526f554341423655435a4853497141466b454a5263464b49746d6749735851664d2f564c586b62793744427047587671733851324e5375682f6b67302b6f33572f682f396f584f68556f495930716356596244697165684c5a70343349517a636f4d556e4d6b414771746c3379376b61556c6d7365426f674d6a6b6f4256676753596e56386b593950554d5851614978636469686b57646c5643357078716e4e345444494d374d55484a52376b596c30436e464d37714f5251494f6741705658786d4262596356537a71505242497336446f7952617570413067775563414d56414e506570494f4879346f46645757674a666d716a337254616a3031514e4c674753436d4b5966776c414e494d67726d413963454a445365536152594d68475657346f464c6e44396968366b5442714d6b38425141645059757a2f4149323333654c4269755049763272712f77434f6c7432427845675548756a314167354b6b78786f6b743341527946454a5459567851575241796f745541482b5378325a61343178344c5857682b43426d2b6c4752717756424d736c584f7a4f576143343359526336716f7875514f424139755378485a51474a782f4257574c454954316759484e423059714f35664a5344527a537a66765146775043717238424b42676d31757862334b533669434b495047663544754f714e6f2f5438457670636a4b34447843782b756b666658427a2f4a6150545159783159386b486f664f30504a512b6f5348544838317a4c742f69566d4d2b4344666533636d4d7668676b735841547a4b7836353342556b7264616734427751644b7734442f73564871305162526b33544534646975323774564464447a4c55345a6b49504f577742583953364e6d68726d7363436266547a5732314267787751576a6f784643617246756933567a376c746c704144346e4a63376379695458776e4c676773394c67505036734831664e4e74334679354b5a776d65394e3666303761557a787a56654d2f6276516262557a6447546535566272635274394d4247577270486171626c325a4a674d736c564f59456f33496a4e41647a626c474d5a536f3156697658415a504c4d4c735330626d4a674d5737636c776f4f594d636b4652426a4c42783256536962476a686c644f2f307333554b4f715978456d712b53446248636d5171566f6a7577594e6e6b7558444176334b775459463542425a75784173496e393662306263777358534a565765556e4466465a6e6c626d4a776f67377633597658444d4673644b3656753647646565323930774c6e4e644b4634434e614f67376c75364a68777244686775506233486b2b495564644b33495858446f4c326a46447a6f6738776a4f4468552b55504d7055494a3932543077474b4d4a7a31645a636341687072306f6a62547559664642716a506963316f686464327757534778682f774251366c7068624676776f4e4f734e524c65745175774d4a31422f465652345a2b39487a6441636f506d2f7175794f783345374a772b6e6d437349583062317a307150714674346638414c48776e6a79587a7935626c626d6263714555716772435a4b516e46736b494655644d5953686b6c4951466d7855474b446c616472742f4d6b415546454c637048534d555a3235514c5370327231477a395067414366437438396e74376b504c6e45532b593730486869576f4571375071586f38747164634f71422b4334364352526269454b5a34496f4a6a524b69416f674c4a6f746e5838456a5a6f67414242416871346f31536a6b675a434b6a736f79434846514867696356474171676532776c58426443314143416c476f584e464764504334596d6e4642666369585a416b4f6c6b61764a4e704a465545757942424f4b7a426170435267537a4166465a4751474d744c6f36395372464b493830473677596a44455a64693043594c794a374175552b616a6b494f73305a515a3668616653354e356b342f394d4f5678424f5753366e705635726437476b5546416d354d694b6b347074484d4c414c68692f464d4c3546536730584c626d6d5036755355574241766e775366646671716578563362336d466b437a6b4a466d6f6b7a55642b7851565a3048567432786273637a56555469314b56553356387868477941427048663731696c634d68556f4e55376d6d476a4d35724963616f6d566134494946425a45304e464f51434a51515578533455544d516f67434f474b6b614b536f676a70745a5334736943673057627a302b72354c6f362f36654e575a6358424e3568376b486f747636706374734c7456305236745a4c3169447a4b7a572f5272512f354b3853742b31322b317474356473616761644c6f4b3537727a346a79787150454167664869716a5a3352366949783935507958636a727a5035492b547271364468324e356367534a7849793976334c56726a634f6f3041723364696665376477596e4263477a4b35616d6444616853754344324671636942525853754341656368462b4b383066555246684b394f522f5262446d764e434f3446776951736b6e6a635165692b3573412f77444c476e4d49666662654e4e667a4b354e767a352f394f33456648757857797a473631576a3241494e6633316a46793338737679522b377348366d2b437a47334e717a2b436e6c79474a63494e6733467551654d677552367064746561497931345638735056504f32346c72694b443372425a737976482b6c5079346a484f71436b324e72493676384179522f7070386c644859324c672f6f58534d50454b71346254632f395063503278434a74586f30765764664f426638416145454779767334632f73566b4e76656957306e2b5a56516a616a555276327750356d434d4e787467532b3475782f6d6c4c386b466c364534346775713555786f473459713257376941343354412f716a712f424562695277334e6f2f774131454761354d4e315a4c4264775966384178666b75333532346b503663374d7a786b367a542b37627168746a336c427a625678385666356f7a416f74486b61413837566378627754526a48434f334e50714a515a424a68677a2b394a4b3545554d6750627458534e74362f623675394b59584234647041384862386b48503832336a51482b59496d2b4763462f35617266356534674f69785a6a2f4d582f424d5075596974757944376b484d382f55474c724e666d4969524f417a5a6c32504e33496a71755373782f6c79584d33317935757051735276527547556f7830516a38536531423066384148396a6f732b62504766557a59444b756137356b3247434675304c6342626a67453570543449463145654833716d354b5139714b7734566f73393235526f516c4d6e33653942516247326d2b7532444e6372315778433362305749474d69756c6474334e4f71354957342f7734396977655a4735314376416e3979413748625232316f516a545634755a2b487558527476785757317a783472585a43432b496c3275684941306c2b35474f5254784162765165643952746a785a3668583856356664544e79374b5950657661657437517a732b5a4142786a6b7643454d616f49776b484349776359705852514146776f7a6851494f6764497a4b4f3571693155453571505769494f614341774a695152526577326c794e363143354b756f4e2f74586a6e72795863394533415932546944716a33346f5053536d59696d42797a575335644743424c41307856434253426575644a496b6366795859747945626543354d51317949464f4b365236595959423047546356474c41596b703558496e71634f566d336c343239744d66716f756661756d32414d61494e6537756162746f6a3654714376382f7741777648422b2b71785469544f456266564f5136592f6a324c75624c30794d5976664e635778515637585a586477354a3078664869757447774c594166735a4d38496a544148755452726747626967454c6b50447139366341547a5545686751684b7a626b6766564542745143587a626555342b395679323047307944716d58706d324e4a774344587174385171355837554b7a6c565a2f375874675830423033324e6d4f544f676637323052516b35344a4a37316738596e3831445a6a484166465a647a636a48502f41456f4675372b2b522f546150785075586e4e7a6675656f626f576a495368452f444e5765716238326f365944535a5550597276514e6d495766754a2b4b5a59557948356f4f747462666c7844427677415736415a55447177716d746d685161347744717263516c43426c425757626d7341725359766a6d6734423342755649594a2f4f664a306d2f746e6154314166303565464a4334373077775162596b6764495478416c79437943364d717177584b5651587850354a54633150784372314e7943737063714b4e676767764745587947533831367a7359526d4e785a3842385861765254672f537566755a616455434b537851634c616e53444963634368646e6d6142504b486c486c77576366314a4e37667451575138505a6d75317462386730705a726b6b444a62374a6f334a42717545414f6d324d3432707a453268626b50466d715a487a5064517176534a47496b4b427a326f4e2b314675323538542b452b32433251752f735741456b44536643704b624d79446f472b4b6b6356524f2f4e6d6b61354d7373623859317777533776635174316d52326f4e4539795763315042316d33456f33657162446d565874747275642f31576f2b58622f585050732f42646e612b6a62657764557762737a6e4b6f5165574667334a2f30424f345034492f6976552b6c37616469312f576a704d69547862674630674e49594d337555456b417131554d65536d72504e456c38634542476e50464b5a6c314d5336726b45466a6b6b484a567a4c4175687131564645743235706a375a494f58363576425a326b786e506f4335336f74732f6136786d5433726b657437386275344932365734344c306577746d31744c4d4f546e76714544456759314b35392b343570684661376c7968792f413856782f557235745738784f5750416f44365a64387a64463847375858704c5548687942586b505270364c78346d4a413753765a324a416a51675545694f6e4c4a61374a3151595a4b655378774b4d4b5959494b496869347a57307842595239797a584c594a315639767754784246426b67763074525a37344f6b7548427856677545556c69694358306842347231515332392b57724d657a4c6e624936393162785056462f6576522f354e415432397534504647656a754d5858423949746d6438456a437637554873724d6e6b2f7556734d566e4262326461497a7052425a434a626b7364717a45626939644a72497839305146704a6363686b6d7362654d704578727851557a446c2b5379376b526a6a67747869474d525175734e34304c35494d5a6934476b3079547562683542562b53496834356e755367335a4f574842415142647531794b366d6b2b4c33685964705a75655930783766697568636b4c6475557357514a4b374333556d6a4f54797a58417478507132342b346c537a4470675062337246366876707a653050714e522b53394c736469624e754641474139357155467364704577414d706774394c436756734e70746f6a77796b654d6a5661496735356847554d4b6f414c636263574159635578686d374b4333707a632f424c704c385543536a71777a7a574c66334142354e724d4772596674563235334450415541376c7a4c767274757757466b794134795a427a6658343654596c67397366745843636469366e7176714839796c4879346152454e706438567a3557726c73646343416631524b423462752f5a48394f354b505a4a6c743233722b3974553878782f485663734979624841494f7a6339666e654458624e6d51774d744656784a454530526a52474b42514563564d5252436f5a6b454d6452523067356f732f7438304545787879515a38564e4f595569636b424b416451386c434545784b616f516574464545585639423278334738695030673348375032726c4d346465702f78765a772b317633376a682f3654786f577a2b59516150554e74754c6b62327277434f7648685775537433323675626d784733427636386f524463386669737030777348566375526c4d4749684b5771683741732f6f75386e754e35597333573032684c51526c54506967394a4f3762684c51434748534f374a65522f796264656475394977747845507a2b4b39544b7845334e625a727848715962643359796f645a515936684b43426969364a78515244464d7a464179633051426d6f694368676f676a6b6c516b34496b5a496a695543785541526f394167574f43434d534565614862676f445771434774455a636c43614942424d65785251566f6755424b396236764e2f527245526e6f2b4553764a6772762b71377148324733326f3851694a646d4b447a2b434c496c6e6370575a41517a7141416f555544674d454537464b486b6d6c52424244524134496a4653674b43446d6f796d4e5547795146676f564643554177554e4f616e4d49754d516741525546564851526b4d556559524645414a5579557a51706b6768464b71414f6d42444d6767416f6f6f2f42524154557148676f32616e4d494156484c7145385577424e426955436b38465a5a73586238744e714a6d6634512f795870505450516f51694c6d3847715830323850655636537a4b4e754f69304241636b486a62662b4e622b355532395038306f2f6d722f2f414d4a6233543944384e53396a4362654a45467935795166504e7a3650764e6f486e626c70346976797757414c36674b55794f574b2b62627743462b35474649786e4a7665676f2b616a502b4b677855487751513859726f37372b74627433383261546351756341793157377571784b322f4e426c555a535450785164415758302f3075304c477a7332782b694a3939666d766d2b79732b666674322f7742636f7839362b706b4e686c7751434e447a54534e4f53554f615a4a5a757a635546467736793046624861673175564b746a6f74784a7741584b336671527564466736592f397a386b45332b3868442b6c5a7848696b4d7558657553535739716f792f70696a2f4e2b5a56527546424a48586e5250434f704a624f6f61575a5867486a694543456474567174523078366771434f4376317541454857734772385174622b35594c6650334c5a62505367726c7a376c7161696f30763148697230465a4c754a4c4c4d6462354d74526f57775765556f3131494b6f696930524f705673634172593969432b44745656334b59344f724964495a4a636967714c6d69684f57536e315555474b433232537a2b78517575417062484e4e64724630464c464f4f73716e5552686d72345470544b6a494b7439634e7544697064683370495375416456585133636754626a4f6763793979754d777a6533356f4c41435256426768726f6e6b785156542f536c69526a69554c74436a61694771674f6f745559685354305a50324a586b4b68427976577143426a7844726a657158504a326b6f765734573932533758725852747a63474d5a52586c765637757351675468376642427877637969436f52537142514d5a4a4d4d457a6b31436d706934514c4c71524a434d587753694949356f4a676a7a554171675167674e55636c486f6f2f4642426b68566b305333656735594942584246714b414f70717167474b67524e4d4d45477a5164753748376a30754e3347566d656e7550735063754b5175313647664e46335a35585964503877772b466535635a6a4136546945414656326652694c566a64587a5543333566384176634c6a597273577047313654636c2f3362735964305136446a7532436e59676a56424844714e78514262424d4843426667706a33496e6d68695542484651795a41594f6f394542414b67716758526a715a2b434159426e544a634552464143377355774c653543754347506851534e54785851394674473976624d515071422f774274566758552f774166765273372b325a39493668373473672b686d544b4b714a69514b315a3039576f6759534f493765354d4849564c7942626b6e3161616c4262452f715537466d686463594d6d46344d677669587771567a6657765449656f575445663867384a57727a704477717753756e4949506d66326c794c6a4d55373154706c44455658702f774449396f6472642b3467476a63704c74586e39554a556c6a6b6730324339636d58623950756e546f6a677544626c355642553856302f54726e573341414566696737734456314a456b71725856385666466a462f6d674869444b59687543636738554759494b6230756954596b534464713673576847496c6977433538374a6d423272615a4564676276515035674335323633414451677456755138527766354c6c57626447346b6c4266746f456e566e6d756c434a6a46315259743654792f46614a334141676f3364337977314858477553424448484650366a756375613542766b6b3652674d554631366359344e584476584a335263352f6d725a7a4a6b33465972306a496f4b3764733370434171546b7658656d6634744763664d33546a426f68562f34337351492f63686a492b462f7043394a4b5a7474356c546e32494d32333944324f324c78746952347971756a4b656d7553706b4b4f483939465671616c55473054795a4857737573352f76526a4d36636a536e34494c59333454755374444741695a643673596a465a646e745074784c5631584a6e564f58456e677451446f432b534c444256524c3154787055346f506e762b544276554c6d6e2b482f3268637655475a64502f4143514758714e3066792f494c6d417869674d4c456a565365314952463251776f7249584c6859444a426d30536a524b37726f33495330504c4a633673716f495336684a55436a7652414d5553487155496c6e5452346f4256534f505967516d636a7451535162424b7a566446676763454550384b4a476c523277552b70414f314d47474b476c6c4367665854424238776c6475616e5967624771304358515163636b6257312b6f7035694f4f6541515541634b6b4936335137456d766745466c414467367248545549366d706c386b757042474866696d6e4150524b2b616c41615a6f447042726b742f6f4d6d336b44322f466333745862394374566e654f41487851656c74334e4e4a2b78566b71645335304c38354e46624c6431774546396954423257682b7275574f78504a614437633046786d4137344b7135666c484a3158475056564d4c596c676771694a584335576774524d41523249537057574b413951384a717249485452716f52726c2b434a4a474f4b4377535956384b634d61354c4e346d794a5673496b4469673433716e2b5051336c33376d334c724f4d63714c6858747465326b2f366f593545594c334d5a75555a776864476b6753487651654768637a782b4b6b6935626b7533367036424762334e74536636655063754847457263764c756445342f717751585752316a682b533641424c6c5532726e5337682f64524f434a484642736a46787a547a4d7a46733256554b5259497a704945305163613934716e2f5374573138492b4b713364765250755274534d616a4242706c54494d7554656b444d2f36756456305a3949315a726c776564324f5a314f55485676784f33325676444c552b617a7a673058794b7639526b4a796862794565723335495444774a694759494d387273593337647774706e53575a444a4c6b6843556f55302f6d6b365a774d5847736646433141536e716d526f2b4b412b6e7a386f6d4772487555335968716c4d45485758504c334b326578686436346b594a547472646d4c53306f4d646d51366878716b6862423756655952665244344b364f32454358784b446e3234534561312b616f6d616b527743337a6759784c6436773349474a716744354a4a615a5651454d73304a4d66636737467933596862687072304e4d59564f4365463230773877365363385739677548353878485144524a4976564233376c2b777a7671505932436b6657504969644665456543382b6d6a624d794952784b44312f7048716339374b554d434d73666975314544504263583050307165312f7154784f584264337730514d413142524d65704952717146584f4e77645559366e3776785158754934347068636a687757534e2b4a505743447a563175554357716776675772486e334b546a7144353873436b6e49527771724958524c424254616c4b334a70595a647058452f794c306133666a397a62614d786a7a586f5a5142505373752f74655a746273526e46774f784235486262577843494a6943654d71726f516a61776c41436d4f6d69773755766a6c54745775334c49316c6a4c674546686a616c545447582b6c4c64327533766e7274615458774369467953736a50686767346d3839476c624a4e6d73526b63517433707530466b3670734b4c664b365863346e6771357a4568387779446f616870487433704a4d4f396337376e557a5a59725443357151576769354853537544367036577a33724963413141585a69387165314644652f574851654c494f4b426f56364c642b6b787669567932305a43756e6975444f784f315359497167544769456777524a705644456f476b4d7768694b4959597150785146754b4241795561694a6967425a466b4d464771775146745367714b4b45495244423045356a4e5732694f4e5655334257774e5546356f4e5179554467636c486c494a59544a787a51615a516356727757472f6230534841726f6747416f73737872474873454752716f4979434e536752796d66676978696c6b675a62396e456a623370636f6a3379584f71756a73684962612f4c4c704251632b4e4f31416b3071693342544641506d366c5158346f344942416553743231727a4c7359385468324b6a6d743277427436373255523836494b4e316338323654375556555456364b454f6155354a634b6f4846566247314a433345424e4f2b55424e73416170496159596771737a63464233446c424a78443077514e55513730436d707345434e77556430375a707444346f4b6b52564e706673537551554130355a6f303455644559746d70394c4950635759613851747469334749344e7879393635473839637362586f682f557544336675586e64353672754e3254726b3054394d614242374f39363561452f4c3238664e7544683458546a633335682f4d6a456670694850764b386e7337735262364b6671375630374f346d4a61754943447439633467534f736e69754676746e63684c707a797958617458645978437a65727a387533725a2b2f42427a396a62386f674d487a58556a4f6570636e612b45544f4a393636396970516134303471793235703853713468366c5730397561426f3135714762466856514d656c4b5847434371374f68726d734f3362544b4c745631717545434a79574b7959796f2b644d3047794856314131573645715973334369356f6d53576a6a6b746c75515065673061797a5056535533505579574c5564474e554231516b57412b43716e74624677365a32344538644c717a4846535571633047613574647650704e754b6f507057306c55326d4f4e4a4662506d6f424a42676c3656616964554c6c3233796a4a475070567159706576552f6a2f5974314254324358786c686b677a6a30713263626c332f65717637567474565a58432f47644432726f6b716f6972494d4a3946325836442f756c2b61746a3650736f3146742f39556c7231463043417a6842692f74657a74645174436e4e3062554c467535356774694a694f6e527a376c5a66505332413438566a6a35684c695148616736452f56724146597a2f414e6959656f375530456a376a2b5377796a6546664d69565266686341414246653542326866744675736636714b7137646b2f524d454448544a655a763659394e79496b566c387978456c684b5065673774375650443239364e757a585563525259747065743341385467756c43514b43385262465751354b7344575179305245526a2b667651575244446d6e6a6771346a4d594a77615571554461496c39654239792b652b74624c3758635366416e705830456c36444c67764f663556594572454c34786653673863546b6879525569486f676d426f673772524459626d3750793432704758445355397a30376332473832314b5038414e456f4d6770696d786f6f6361344945466b4550565648464b6a6d674e4d6c71394f75655866484f6e76574e2f656a43526849534753443244394178664473524e5936737773736439417745354d38683156775353337748677232423047694d7455772b6136457939764c67754c616c6375544574467a2f4150526c6235797545614243345848365032494d4f386b3852776a5539797852494d6d6b61793849474b366c6e307263627158573975316e716f66637651656e2b6d37585a674732415a2f726c69677937485a5842474d3451416b326e56632f494c6f773230775047424c6c4661794753314b43754d444564646561686758654a666972534b4a5a794d4252425272494c5343627a7456416952356e696c52566e62524e5946425a7231355639364579535062322b43534e716365444a76366d4d6b465a31596a7865334a5a5a513345764464306b345544664661726b794f6e686973383770427069677a33664d6834706e33726d62336443414d3854385854622f66437a6e58322b4b3876754e3062356441386a633374304f4e556a3846376d45595734433344434945517649656b68706d5846656d73544d3762484a42746a4a3678787a5263783746534c724e77576f7934424138446f37566f684d4659673578785769304e497167767557343334474d7167727a6d35735332647a7935566966437653774f616f335667626d33704f503039714468324a42714848503571342f4c425971325a6d3349615a523733566b726f2b682b61445672634a44636f344f437a6566377970627678346e566d67735071486c66386f702b43795864784463523157736677563135704375497a58444d5a32376a42426675495475304837566e68627031596f6937705953634f63636c5a4166706274514d614c54616b77444b6a58714f6e55356c67465a434534554a727851614a54316741566457526b49556c6837763272426633583234663676705a5a59337033486e4c397944736939474c735171726c317733797758506a643832656932435a455952446c6466616567626a63645735506c572f3078385575314268686376626d3535566b61705037636c3644596567323742383363365a334d686a4565396450626253317449614c455142382b3157753361676848444a514b457455346f41303475674a5964705162694563306a6d764241354c6c6c554336616445484d69676b35674f32422b61724d793349717a56487735717172394e45417478616d5878586e50582f4146585144743752366a347a7748426454316a6678326c72704c334a447039767a58685a3672674d354845366967726a3146665169656b506b4967426544327344637651694d3541442f63766458636551516336394947684844324b38787664783531776a365175393674656a5a746e46356541596436387651397144623657543534624e656e367052427379307943387836644756766351347231566a446c386b445766556433624c536158785853742b6f517553416d414366626773414277496f6d74374d58443053455a5a6f4f72487935346f7874735869755663324f3968345a786c38782b315043653673756267662b4b504c4a6b48534d53376c4451374832645a3757386d635953492f6c5a4e35305a636e7232494d767257782b3732736f6a78522f714e7a4835727a6e6f55657162723138727567694a4743387874644d4e786368452b485670393966696736317331664a61495334354c6e433549315639713435476b5677516254505468696d687169524b4e4658724c694a6f72656d57506567456a575431663841466372646c6f38426775704d66547950617562754936687964426b6c64614c68474f36314552344b6d35623159486d7159783079414f504e423272462b454a43523559726e657162755a506c5767544f644935556b724a583430452f594c4e59733350554c354d446f306a453845462f6f336f6b4c52382f642f3841492f544848764c4c304d6f577a562b664e5a397636626274344855656646616f62596a4e414c634f70736b324d71554345594749706b6b6c492f73514e434e574f4a5665356c35634b35706e725867367779757976584e524854672b4b444e63367778384a4b383736735749674f4b396464494561734f506376482b73482b6f416543446d44426162572b765757454a7941345054334b67786b493446534d666545485873657579482f50617458592f785244742b6162632b7062432b352b31306b3065467876775a6361575356754b43793662542f3077597834534c6e38506b6b4b4178344b4f315545784e55644b426b364f4743416c7a376531554242304a484a4d417942584f614c4b5339796d716c55415934354a7578443549676f4135554e63564278514c674947494a366353766f6670757a3876303646676c69616e766b363856365a6242764337633845657152397561395566574e754e6c4f3343524d34783078424445766d506d67743330626b4933623173576a3053726e54385635483079557255705867436444532f7744554670334f306a48596a632f395355394a344d7570364c736f665a506a4b3654726c774751516433625347346c357738425972772f7262446658775031666b7533364f626c6f4f585958504c6c484b68783756357a314735357536757a47426d5547517163307841434435464243794241464558637568696561416a42696746486246527a3730414e616f6879456353695a5a49416f6d484a422f306f46545248457061595a6f676f49533156436f79686f454535494654506d694155425a384b75765a2b6d656b326f5759793355504d75534766306a67754c2f6a3370306431643836352f77416476482b4934674c32656e4d6f4d4e7a30545962682f77436a705036725a6239693575342f785332662f74727048384e7a38782b53377775634642494846423450642b6b62725a3175327a702f554b68594d5639504634786f4d4f645679665550517472752b6f663072682b7150684a796349504367715a726f656f656c5839684c2b714470776a49594c4158495154437168515a5173674f4645416943454279514e324a5855597369356253676a555564304d4b49417367596841314645615a4959494347785155646c4e4c494a526c415752624d49534b4359594b456f73366d654341633053326144354842544a3045434a72564469364c36616f4158647974667030762f4a742f774177575144676e68634d4a69517842793549506251753634415a2f7741537674336a675667387753384f645837565a624c6b5a6f4f764471435a55325a46734f7858414474515041366a48682b4b2b6262382f77446b58422f484c35723652624163446d4b4c357a366a4852757273663435664e426c70676f796777544549466b587754526c704c31514b6d4653676e4e6c4779514571633059314e55472f774247496a76724f72445846665469766b2b32756d786368656a6a416958755830792f366c5a7351457964546a56455271536732344c4e75747a613273664d767945527a7a3746774e78363375352f385549326f6e776d645a653361463576636d3566756a7a706d355069554864762b706e314b576f7648626a77777a6e7a6c2b534d5a6871554879437832726d6d4959636c4a734d55466c376356624a552b592b48656c6a4636534f47534975427a793736494e45614e536931775753784e6a337258412b394144777a5531613773514d5345376b437456547065343065434473366d61745673744f33785850746e4268514c5a61707a516164566679547336514d575a507a515633477a576369685631776e4467716777646b4174786644386c6f726771334363307267677369796b7852797046736c44554d67704d546a4a5667614f7857544a48596c497948765157576b382b6f6469534e6553746b55475357504e4e45355a6f58597370616b7943726445473541476a4f6d454153797a37715938324e6173746b4130586e6e6d6759394e456b72685a4c4b7163576931634543526835683146576c7341694936456e694f6f34424243475976564457314f4b4a5044764b58476d61444c366c447a64744b504550376c344831417664342f7458305852724f696564463833336b5a787654452f454358376b464c4f6a52416741715a647143416453614a596c495331416d505069676a565344676e4a4f425145617367556c31484f436154733656415747446f49674d3749424247616968346f6b6356432f59676a714d675363454b6f4755374d45616f4e6d55477230322b4e76756264773443516673562f72646a794e334e734a48554f396334636c3266566e76376178754477306e745163625546312f55492b58736474617a36726b7639574877584a4166426458312b52462b4e6b595772634c66743730484a5564546b6a79514b497656454956393661504641427855315946456f53465545774e464739796d426442794f3941585a54476f51716149344946423470734b494473524172564248795569674136504a4250775264692b61696c5548757652642f62333172544c786a344c7151743233386663766e6578336374726331512f314c32316d39446551467949424a5162623133524178675835716d48366c586174784570514744617663744670704f636b46653675446278636e4574334c466233393764452b5262613250716c693457655677372f63796d4b326266524856783472715767514258436751474233576334442f53363032355878557a67655466745663486b4b4b774e4a426e3958736665374f356149615147726a67766d376d4a37463952687148462f77586a76585051356265586e32422f534f4934484e427842634977707856316a636d33507a414d41736b6968794b44364673784464526a636a31524b31334c44484266503841592b7058646e4a342b484f4b395a7350563765364445744c6755485430754f784452455556666e48394e43674c376c41397730356539567a7668744b63544764436762596b586b67792b6671784a6638565a59447963597134374d44494d6e32316f572f32657751616263577173472b33445249562b34334d624d584f507469765062726379765336716469444e7562757375654b7833705a3444334b3663696361354b754946787a4b67795159376b794157775656713163334d78627467796b5333765864736567334e31494855304d3534664f702b53394a737468593241303252584f6566376b45394e3278324f3168596961357937556c3678667553667a5750495972614a504a386b70416b4547506258726c6d597358527142384d75486174643030614b707657784d454e68776f6c7433472f706e6b7a6f464a7551773675544b336137737935664a4c4952694f444b7152677a5a6669673668755364487a61664259596269355a4a63644a77354c56472f47375155504e41786e692f464553656c5644414d79357672472f742b6e376379423635445444692f487551655239637678766236374b4f417037714c4243464f7456526b387135717776494d522b784259626b496d6a646e4e4a4c63794a364b4641325a4877347132473261477557512b4b44504f374b645a357174336f6d6e4a7967616f4139564d46434f4b4972696745573731484b4951514d513261425a54425273304141644530726b6f574b583549474c5a4952514e4578497951526b5358594369445a4b474c68424d565a62303671704879556a556f4f6c636b2f6857636963693253713831575175796a32383043615a44693248636b31614673694e514e6179576163426967724d517a63556f444b2b4937556b68705050336f4b7a4a5153393645754b6e626b674474514c30336f397332646d5a6e3639546431506d764f574c666d7a454934794c4265374f326a61323473784e596a542b61446a3244314374425876576d3375484c5a4c435362636d475254546d315145485273626a2b724550346c3134534f453856355766366f2f543142656a32312f7a59366a695167312b58544e307736634b664e447a4743576367314d736b44544846514e3957437138787345504d3442425a63756d585448424c4130655253514e5777546d516b6774457854546e793471782b436f4e7a39796a6f4e414d735a65394f4a565a5547576f4a3479515869515657347357397846726f422f424b4453695a324c494f586539496b4154616c546763657859504c75577061626b5347355550755870764d694d314a796a6e564235345859517a413777457362722b45673936375974324439456139366557317358425732506b6738317534655a45483667666b7331756f426a67753775765334434c3277343450554c7a306f364a6b4768776255677375506f50494c507475752f42734b3154584a76466e666971396750366b4f446f4f68765a6174354c675978444a78494d32483471626d513834796f3530716b7950306746415a52673738736561706e5a6a4b7039364a6b30744a516c5074514a4b7a4a6f6d4a624e4837657645766d7259633854386b7377546a6b674768704e677964795077516c4c496e386e5361674842797751577a496e697345397353447043306d515057797176336f78675a6c785242794c38664c4a6963565364516f6a4b524a53687745425a53704f4656427858702f5250524e522b34334f474d592f6d673575783945334738366f6a54483952587150537651375778363539647864474e794e746f5244446b6d6a6669656c425a706167546b4d77534f3457432f666e713077516448514b6355596c2b6c5a6f586752706b4750765667714f6e42425959786c6a564a35414936556462346f47343642794a416458373157592b58686a3756566d7354556c70514c62757630357032684a774b41686c565147764a50714e5253714477396c684b6350346a2b3961486c45475439497953656f526a5a336b3762466a2b4b68766a5130536539417876534f635350696a4f2b37435157615a3053445a7175643848776e336f4f6c43382b424b467769576b794e58584e68756a456a5638465a50633235577871666d794158397762453966303446644b314f4d687268345a4c7a39325a6d432b484e612f5372684d54446d67363870763270764d70705657764d4a646564616f4e495948704a55497437676631655042563248302b3956334a615a63454754642b6853505859596a7471754664737a746c7068657a684d5344344835724a7572454e354454507844416f504c4156533878525758625a747a4d4a554b5230454d733043724c566d5632576d4f50484a626a36506641314e5275422f4a427a586242474c594b3665326d4b6673565244554e454336576f55644a5a5150686d6a6a3349424250456b4b744f4a4e544e425a466f7964455363754b4b6d544f3665513067494e48334d5968735756647a6347537a733669434570346e4970473936496d6774455934465355514b6c4f43434b706948772f4e42526f456d4a6f756e366441486233754c554876584d6c557478585839476b42716a4d734a68696734326b6d6d614767674f74306d6a63495045386b73715642356f4d5a69324f615565396161434e6665714b647141566462345747322b76395879574f31454754466457375079374167614f673559747571794136307a75644e566c514e795572484644424435494c62596558556a494131564c305a474a5157427671785077514a634f5167475059676149434d786b6d3165324b674f53496a71474e454668416c686955766c76696d696175506232344b7a57527a2f4141515a5a5769507753302f42644749457855566f45766b563135647a494f666f4b684456585a6a36652f306741713737474d5750547135315163474d70514b3357765572747343494c4433725466394f4559616d78344c6e584e764b424464714471625431667935566f654f5336633933472f453178354c79524a79577a5a33792b674848325a42333742314267756e74725a6f4d317a2f54375238553831313452515851714b4a794344326f787766745531413969425a7977794355394e564a53666b6b72506b6778623237354e69354e6e594e3731354f3136686374482b6e49687a3272762b7558644e6a792f314873772f61764b426e5a4233396e36744f35495176537248367348375636486262753349645a416b33682f497277397155594877752f466461334f4d6f744d616767395a47555a3573724245354c793449352f376c59496731695a66377345487042716954516f4e494c7a55355849395175336e2f6d7038557374337552515869575056716f67394845796953394538533153764f574e3366496b382b706152767430502b70333655485a3069574345586958646379472f7742324d5442763563554c6e71312b42776a4c322f424231626b7050694b716f4636593064636537367875337035635232452f504e4a2f63643661366f486c67673773582b6b4a5a6954394869344c68483158646d7574694d59365238316a3366715638306e632f774273574b4474335249543638776d30475236714c6e656e616a623879626b385a56585242514d30566c76527135344c526f656f5765377034667351632b3853412f4263322f567a6b756c754c6743354e38786b2f464266734c6b36687777374636437a4c5546356e3075506e585262694866344d76554733627464637a515952356f4e64766b74416a5769796261526b4f6f4d3633516b3253426a49414a52302f6d6e63477148694b43655a70476e39697033657a6a764c527333504165475063723546366a687752315537454845482b4a374955653537782f2b536d73656837486158496e724d706546363464677858623148484a63373157395062526a754944775377503856454758317a653364767073324a79673736356674584668764e336f307a756d593454716558466568334d447672455a3241504d47504b6d4850685265617665624b396f7574625a75587551435070385055534932744e71374c39526b306d787950344c542f2b456477332f4c6150664c386c6939507333622b3968486279714a6174587839754b2b67484376374851654e682f6839373637734f357a2b53762f38417761315a582f384130667458714e54317a554d6d516564732f774349324166366c32556f2f77414d572f4e62376638416a2f7039707636576f6a4f556a386341756d57474344745242524459375732576a5a674f794472534a61656b42683249526c394b55544c503845466f6e4a6b704a6a5230444d487177514578674f327142704675616e69795361324c6c4b626e766441304c306f6c706d6930362b4b77334f714d6f356b552f4e4c3658765275376253706467644d6832494e336d4d3771733368495956775a574d654342362f4367704e6d453852584e56446136432b6f34725249504c69506b73323633747661394e7776492f524848396e65674d6f61616963325043536f726272475570562b6f724a663954764d664a4549446d356c2b5334323733642b354f4e69567a564f34326b594150324950512f3343334b44544d64584b5666642b4335587150716b4c585344694b704e315974656e51496a706c4b493670634a63733135692f656c656c726c6d674e3763547653315a4b6f314b4761596e336f4e573176434854337275625464304a315038416776506261416c4d426453784d574c6844394a434474776b2f5974567164474b35597553444e6774456268385a346f4f714a4d587939755330514e467a34582f414e6931525053454771464d55344c3179576348677259584d67677a656f624437754a6e44707544777934727a6c7952736e52654769595076356a4a65756a4c67714e337372652b6a6f753559484d49504d475a4942645a37673134555a6174783656757473305977316779594556374f7857325052743963655245496e394d35663841354c6f4f6444665862564731572b615339647433756f45367630344c736a30506541595754324758354c4265394333376b6941505a49494f644863527476617578365363546b682f7734556a4b7176762b6c656f4d526373794a7962712b54725874663859337436742b666c78393539772f4e427a2f4f61724e6b724a6271456f39586948615452656d732f347874597362706e644c5a6c6838507a58577462617a7432386d3347505a466a2b6144775732394933752b6c3567746b44395571443237463364762f414970444864584e58384d4f6b652f39675870544e6b6b5a767a514a74396e59326f30325943505a2b61754a536d53515447534330476a424c4968394f65535678467968496e506967494a7a39366d72676c316742566d3532494c524e7777554e786c6d6e50494a5a53346f4c70547256567a755a756c6469466e755459557743433737726a705965394a506343414a6c6c67754e76765562566d4c47732b78634f3576376c7736332b43422f55392f506462673344674f6b4e677739717243626d734a692b59566256716733656b6a56764c4c2f7266334c313136656f55784a5a6553394e672b34746c7671464f31656e39576c4c62325a584934694c65397767387636707570626d2b5245754939495351326242302f7039742b70745250775854386f79667451596f516c6276516c6858344c307359474d524c414d75446477596975525870665462336e57496167394e4b41544975516549714b4a726d3074587a726b4365777374553763574941575339666e454e5a6753654f51376b47717874664c70412b38757235435561674573754c4c62376e6444564b3935592f684834725661394d756755334e33337567326d354d596768564e567733666d7043462b42704d7a355354416b556e47714371345a5269424c427832746d764b57784b33764c3057596e583831363235315544346578586d50566d736230586139634f7042736731794a62466838466674745476774c637663734f323363664156327475496b4d4545675036723846664f4178474353786e707a7a543078514a50723673466a6c4f754646726c544c3969795859384d5367353878457a302b7a4c4c50564769336b5a6e46557a746e3673443855484f6c635964575258643941736d4671567a4f5a376346786a596c644d6263513869575a657132735962614552496c6745466f4a66425732707a71434d5370356b5a56696a4766373351516c7a676b4d644a4c426e50743830386a4a3364766d7134753953644951565835644a475a56496a6f6f55626b3956786a55446769546f724b68515a647952555955667358697478643832354b354d7553563672314863616246366631474d592f3776324c78374846426f326d38756265596c45672f77797143756a6339587358656d2f746f6474736d4835726a496469433663375570677769596a7466384174653132747664334e467353416245312b5157665a374b35764a69336248624c4a6c36513234374f417357545436705565586679514c732f527472467766366c77526b7a6c6f7638313556324b3952613953305436587a6a6a78586d44535241514b616c4d5742356f4769674b4169755645485249797a55456d4c3855416b67536a6a697070346f4967526b6f45534b4941363137506148636d744952724971766262667a7073537746536553395273626359323262785a494b6247312b35745468624f68756d45654c6365314e66394a3137617a3555503841794144356a4e566e3574376c734f314e736d6469576d5831526c676561364e6d56307359326e47416c726f654a51654675776c57334e3474394a58563233702b2f77427559655137734a6158702f7164656a33704d626576635733684878616d772b615862513346306172526a4745757079356b6779656c6d355a6e7559377068496631766543537645794f70354c3642367661386a615837385a504f554e4744554a5a6650575a414f59525548775151546b70676d53674941696f7a59496f46314a675755417a4b424f51514546734d305334714d46464e61435349314f6c2b434a516f674a78357142516f5351466c64746474506333593262645a534c653359715278587376512f5476744c586e5348395734503841624839714471375861773231754e6930476a4445385a4b3468366f474f6a444e5355754b436d6367475a494a4f5756784149314958493549456a4d2b325361345a5934763831574a455259354c4c66334973516e646c394163667a5a44336f4f4e2f6b6d38317a47324745664832727a32537375585a585a47354b7369586b717a52424148554b67346c416b4641315a423142486867677a5655424c6f4165614c4b56524a656941594b59714b4944494d67533552795151526e4e4563464841516667676772556c514b4d366851454b44464842544641744d454754476f6441484a424b756951785178375642693643414b646c55596d726f59495057374752763262524e4470306b63577a57367a615975755236484c5859624f45766d7539626939585158777742567734636662383156474f673056325079376b4269474d546b4b2b3565432f79433335652f7569506237367233576f666776442f77435276392f63662b482f414e6f51636c46336f46425446413841675064564b51796156536753676d4e516f61714e6d6d77514c79585a394f395545494378666f33686e77354e7758486443756144316c2b424857476c452f554b672f6b75584964626731645a4e6a754a776c70666f7a4332546b64626d6a2f4642614d4b6c517a444d33657167787067724a5130322b6c4138376d45534d75394c4f64634753437463663249534e43636b476979574336416c70414f61356d324d73503372613744682b3342426543514e5a72795357415464716366594b5047524148772b534f7836377834494f74434f6d504661595538574b6f747863396930784657396e51616f31544a59736a4936657842564a75354a47507852493449444667674e526858386c594b68754b56337879356f6a676773694778434a4b574761625341677175454874565178596c58796f7153546d676541494b73795a55517057574f4b7331617539425665425a6a696b6b434b6857584353346c6d715a6d6a6673515558415a6269493565356277424c506b754b647759656f78735a474e653676344c726941422f46426643455930696d6570644a43543975534f683855416e31466a6771674b70726b72566e7175794549385a46766d756266396539507366395455522f32347638634548554d574e4558303430586e4c332b586265502f44626c492f784e48383167752f35547537376933434673484d3149397578423675355161706c6f6a47532b642b713362642f64546e612f77434d6e703573337a5632383375383349315872684d545454345165373969357a30306f4257626c422b4b6d4161697473376137667061695a66796841674c5970537a4f4374773947337549737a722f447857613774726c6a2f6c684b4a356f4b65614f546f347051674d716c6b674b4f4a5955436d4251484e4443716c4641616f434f4b41346a464767556a5846414d4d564855464557514156524a5179554b4356433632326c3532787532763045546a376539637031364c306630446333674e773468435136587134374f434468374f3335312b454f4d6838315a366a507a4e78634f50564a656d326e2b4b5864766346337a5975487958473955394333487034383634524f4250696a78353051636771594946696f354b434d6d425331524c343855455161727068586b6c49515156554e436f69574e554159736d4f4c7043636b34636f4168676d31635649524d694978446e356f4157785a474f442f67756c5a3941337438504730522f4e5435736a632f783766777162644f556f6e3546427a41575373366537626e624f6959496b4f4b54464241757a36483672505a3359326a573349674750617176544e6859336b5a3635364a7844675a454c4a66737832317a704f706d6153443646356b57365455354c6e657037375262466d312f7954702f4b4d44333971785176336275322b354136576b5a6432666637306b3974474f6d63697a314f5a3745472f6132664a7469484148763572534c68645657707849614b63454843707951587875566458366e4e46686f44514b793349754851627871774a54466d61586857555331712b6f3665507551655939632f782f53392f62594e714d4f4338733746694639526a4e364c6a2b712f34395a3362337250526334665355486959577a4b4c354a6f6172665647685730573537597973586f6b4848745448546a524230746a366c726a7076552b6d4d767a5856743367354d6978646c3561374f4d54725a71354c587464357146485165696a4c555163566f74456e767858477337735238526f74493373667166735164505469785443517469744b4c6c335055626475684a4a3756797655505733486c323341474a7a516176554e38596b7763646d4a58496e6365707751326d793350714a4d6f526f66714e417654624830477a74514a5842356c7765354278746a365866337045744f69332b6f34666d7652625830797a747737435568395837467667535270774348687843415941444a42435663455a5677782b4b434f48654b68716c4c674f6c6b575143515973714c7472574f6b2f76563462776646557a515a6476752f4f657a6370646a385662347069414855666d756436714969486e52706342614a562b755549323554704f4c48746638414e423368455a384657664c486746564a463476795766633359625330647a6471496a44696367676f395139526a736265715a71664448396e42654733753975627534626c772f75513375396e766268755437755157594944474b767453306c5a2b537568306e744b4462627678674839676b75376d4f6e54795755544d697877514543614d677277515a574d2b435178306f4a4963554157527877436e4e414646436f45457a544f3154696b4e4551675945684969325367514668526c4454464370356f386b4543465563554b343449485a797757713174336a716c2b395a3451314c6f5739764f4d5272777951555473694f494b724564417174647a56474b6f6c4642594a327846675654636b5a6a6b715a523030474b544446426249536a565634674b324d364f556b32595a4f67716b32534761494e6171527851646a2f414233622b5a7568635068743958666b7652626a6336496d6368714b71394d3258323232454a654f58564c386b32347361496d524159423048476e4f5535397156315a63476f76415972504a384d3046776d35306d6a726f2b6d376f7765427175535a744e38667756384a534231352b324344304a7635684356374e31797247356368354d74634c684a3467494e5554493434706f534b726761754d316445596c6b44344a744e4b6346567244746b726f547a7951474d4d382b436d6b6774374f6e68666a6a696d4f347466584a6b4172453855484c6f4865516a476a664255587439474e492b39427142306d714572326a7738567a4c6d3766785a707675526b66656736486e45736e6c626c4c674f61353864324766495972526139516a5073514735596c624c315432355470724c397130432f436365315679494b432b4945736531636a662b6a6d2f4c7a4c525938633130524a676d467967664642347a643750643243383448542b714b50706353622b59694f50466532315a6c49624e7134486c4848367330486d4a7335496248696d314275486469757665394c6855776b336375646532336c59534a62504c35494d6c32335446717167774a69786f41756e5a3278756c674769324a437676656d77624a323745484467347277524a4a4c5a4c625059454854426d7a7a5366596f4d6d71696f7546327232386c6f76574c3043326d697758444b4a5930355a75676333546e67735736766934574741526c644769755a57514230454a4244356f4b327a596e656b4951476f727637582f483452593335634f6e493855484d394932523375346862506848692f4c74587634324e4d52434f4347307362577a303267426d79766d4445307a51565373687331524f7a6e46626d7a435351377767357a54474f475358797953506d74567761527879564c78486951574d4f32696a4741476e397962704279554a4767745641316d2f43525972546f457779343569497959352b3342474f354e73394a4b44706554496531465a47687a576131766f6d6b73663476334a705838776761636d706e79533830496b59685a505574353972747058446e5149504a2b7137767a4e39637544427a48754646584335304e6b7355695a796c49346c474e306842716e667a6479436c6c4b5532345a7173547058696d6c4d64794270416730344c4e4f3452307137586c525a6d3671315151534970577131656e335262756369736849464649413667315367394f545153792f4a4b30644e66795337573644623058446d7176755a62586361626e56476e5a374242707448793648773546573732775a784578696c765168507174355a5a44383067336741307a444944597555415638625a4856386c797238504c6b4a57384574766653697a6b346f4436336142456234474e4a4c6c324c4d706c656a7579687574766f4e4a466c6c686146747332354d677632653368596a70465846563078754a4d514f367135576d6d724c4c6b7249544d5471474b44705849446352307a416b447971754e752f5359794a3873454867756e626d47773534712f54433747767651654e753759323855742b794c656b77774964656a334f336845504d4d4f5046636a6332544f7a356c4e492b53446d5250484e45686c49356b64794271676d42576a63572f4c706e2b4b5861572f4e757847542f426239375a31794a41356f4f5679436e775479746c3845687155415a7171436d434a43444630467475364c654b7438364a44685a70444e546b6774596a4e617470656a433531486773414c59706b48543951747463647352475171736c796555614c587572766e574c63706455683076325a4c6c536b666936432b63656a556343714d33542b615a52306c4a67487a515857496d37495234727165705445376a74545470584f32554e56316c70336c2b4d37783872774242686c333156654c6c644746754a69526b71353755455068376b474c414b466957526c46697955635542307164694877525a414d457a7555445770785177514e452b395759757167617369677541416f367434425a6a645a58776d50454d4851614a4451412f77576a5248537a39797969526461664c4c746e6a37565162725a4d756b554a7056614977445649635a38567a624c417574746d626b50566b476d567438364c4c65326f6c456d6a6861546738656f2f4a57334c5a72496f504c626e62614b6d6e77566578746562666a4750366775397572486d593156487057334671657154564c50796442337472626a4775504262596a67367174524a6f4b6a6b74514444674545354b756477674d55397a54526c6c75566f3642714168303270772f425a71365666716f67382f2f414a42495047443178727a586e764c7175353679504e75475271632b77594c6c655249636b44776952517252616e714e45734c514f46467574374b4a446559394f4341776d32565532733471794f784d762b4d6c31622f623977422b70426976585a43504a557a6e30766e795730374863683436443731447364794f6b5774584771436978522f306a4a61664d30744c6a6b68485a7a746c78485468696e4e6e79356451656e596771755832714d46544b374734433250344a363674496a2b4b6f4d42677a666d67477152724769615573415877544347706d493738555a696e5655494b376b336a324c6d58796230744b31336d48526c4a4e3664737863756d5577664c683853673773523564754d63366175437374783143714a6744584a6c6247444d7737454334785850334532496942557264656b493043354e32345153634547626379484131584a75456b3652556b305771352f556b526b5631724870316a5966316230784b367a694d63767a4b43335957626670316c38627376464c6745396966334d396275497244356c7a31533462647439483148322b5337396a623272554243324f2f4230456951374371324174476f5644786855697642487a484a51575375696d53496e5668677163527a515055414b494c64645479542b626d532f344b694e54696957657144544362555454745276524d4c6c524b68574b65354671697150714f6e785250636778656d322f734e316473547643336262554e5456666d615558584e7a3075586a6c596c4c6964424b383936686374333732736161414471724631515957346736726351663155494a51656a75626a5a776b4937517738776b442b6e7038506146726e495244726a62474e754d59334a576f69664746467646777a484a42703136303774516436787975306f70357a31786442744a6171527837666d736374774a454d6d6a756f7a6a7a7751615152477054595534354c496430414e4b6e334c487051616461686e475642376471796a63505630766e674455542b434453626a315131434a5750376d47565550755134596f4e5a6e395179586d372b386c365836674c734b776d4f7363767a586346317753635667756d4d6952494169744742516479783670744e7a44584335426a2b71682b4b6f766572375378306736356677666e67764f336f573842416637575759323272683845485a752b73376a636e7972656d794433792f4a5970586f7765654a4a3669566738357a30724a63636c427176657143502f486a78576e2f41422b7a724d3937642b6967504d35397934666b6d6547613775353356765a3750374f32434a6e716c4a427a2f566435397a4f6d425076584f3031634a324f5357494d6168417341386d52345a4a614a34444d6f48733945745842623976593835382b444c5059744356563264704734497342555a6f425a6c4754784a71744970346c6e334f334d584d4b444d42437875764e4f6b7446754b44624352484d74386c73733361615a4c474a52496f675249476a6f4f78626d414f6d7130422f7a5846735844474e4356752b346e70653242492b3542726e66467644344b755736306a56497346356a66657062694a496e48543766465a74763935366a505262636a6a67416739502f41484c7a4a2b5861633178475333574a5357485a62474f787461496e712b7166746b746f5943754b44534b676a4251506d716e4936696f4c6a65374e4261626d6a4873554d6934344b6733415254324b534e39384d416731444638464e617131545043716b6631494c49744955536b3035424c3567474643507853546b35716759797a5531506971764e47484255797530703730476d55744e546b6b4d33777848465a664e316742364b43597846653141327375364a6d44524b4a783936496b44526b4467534e54544a4843705664793849526566542f4d7548752f584c646d6c6c70795164652f754261447a6f46352f652b7279764454436777584e7662753566665763636c55774a63464168655a34383144494371615441734d542b4b6b494f5851416750696e6a5931534374387654686e5250724170486967312b6d576f6664327254644c343979372f723173666154423975444c7a65303239364f35743344487069525876586339657576745865766d412f416f4f5274625974306a2b6d7057343851666573634d666856616169464255596f4b627031386c3076534c676a435553532b756e65755a4b595a306b6230375a366146366f5059786b384f70716f6d33456656546b755a73722f414a30514c6771413961725874394e7433384f584e41707577692b694d70466137424a6a715053717054416a2f544467716d78624d5431596f4f67576b6457704776462b4371386942464d5530594e3443676b70794b386a2f6c64754f7533656a6e48537656335a644c5a72796e2b54774a466f6a4c552f6555486e7257346c624b376e7033717571634c4c564d68334c6a4462545a7775683662746f776c35687867673966626d4943754956706c30354c6e376664774d5a516e3473586c77574b39766f776b534a672f7736634f434471585a31447379726c4b494f4646787836334345736535585433304c6f4131686b47795673366e575064513153454334435765366862743634365a465557643563336b764a684872787851646230363143583964744a77346b68385630343232384e53566e32316732344344565a6134527a434239495a7a676c3871426252696d455358425469416734515646325939367276334247456946624d617145716935714a4551677a4368356845774a7771746f73786c5568455732504a30486a66586267455932754d7466634b4c675a556f757036704337767431636e5a695a5242306a547957552b6d37763672552f3971444961725473396e63335532674834386c72742b68377151636752663841556172586532472b7457394275516a43492b6d51442b3542654c6b4e6a48794c44612f7261726e6d566876332b6b36382f637363644e71565a4f6b6e656e654968487348424272325839532f726e2f7832787137577175644c716b5467506b75707542396e746a5942477166564b58344c6c41444f69414f796772553936494c6d675544354941412b434f70734d56424d6b39536d5a515144504a54555771694431494175376f49517941716d49654f435679794379795a577a71573065713359476c46686e654d68474f5556493658643048542f76312f426f6e744330624c2f4a4e315a6b626471455a616a534e6365544b6a3037306535766d59616265632f7741754b3958744e68593950364c496534336a4c616b4766636e65377a5a584a6269455953595368474a71577258386c353466354c7634304677446c6f6976582f56315537563433317a592f6233664e742f38632f675543623331666537753135562b3571672f414438417559515553546d6c4d75434145756d5046414654745141423144524d4f4b6a75676d4b4e47716c50443471616e514d42717751726b6a6770676747504a4275474b595643563251466c41674335525a7355454e4d516f4252444b694a4751716736666f6d7847363341312f38634f7158356436397a4175567a6653396f4e6c74343235442b6f657135323542644951664242596572464c69464334504641394977514b324c4f6c6b6455693375523156354a5a6c7662424258642b4b386e3633762f4f6d4c454b786761383546646a3166656a61327950726c68324c7945716c35596f41374b417669676f55455a52544a52335148745152716f7851546b6868524630714269645347434c49464248716f7967716a54734b425754464245645645454b684b674c59714941464d4170677055494367654b67554c6f4351676a32596f446b67694f4b6d4c7159464236662f476242386d647957457078482b317a2b4b3944442b4776465976547248326c6933626c516973753253337769386d51504770315a2f465233527779716742586b67574d3278586a50386e6949372b6263492f2b304c3139795a776a6a674f78654c39657652766275556f4d5147486177516374514b5578436d4b434f364b67414f4368785141386b63454f3148413051427149366b4d6c4f314151534d46713239317a314c474237315a5a4c53516463733449393663492b58487842386b756f41386a676742496936534d7a713075577a566f42494c565358625a5a3456374546746b35684e766431356357682f79536f56584f364c4d614c42474d7239305a75634b494f3773346d4733726e586e566166546f694570486958516c4853414d674d302b31656c4d4548547a314841725662755249616a382f7a58493153696553517a6c4f6f393644306354376b4a6a4d59716a5a58546374395750483471386e6d676f4a64504555594b4545763755516a4636354947455753314a61724b78797953474c6f4c657846754f4b55457067577751413078564563666b723578656a4b695a366d474342774e4a624a412f424b4f47616a6f457553416a547356446a484a4e4f656d706f714a54656e464279726c7a2f384166467363496e2f326c6437377933614f69556e6d506f6a556865552b79753737657975423763426a5041397937316d784331482b6e33367354326c42706c7672683845414f486d4835425937386275347063757a2f77424568414b3270797077344c50644e45484b335779326f36704362386456567774317478626c303448697539757074476934562b365a305059676261375933427a58557337533362306d574b7837533943336248483279567075655a496558335a3151443165374532345268556e7135726a78695357694b6e4a6250555331347842635245592f42566257496c6469446d55486f50537651346152653355542f4442656a74794675416a41434f5452574779326b4174514c514b6842706a646b616b6c6b733451766a793730524f4a346a32346f514f6a417078774b44794872486f4a3277383762764b336e786975466b792b6d354e394a34344c795872766f76327a3339754f672b4b5036663249504f67414b464767375647664241477955436d42555a41787167554347556a46304266696f6f416f5336414b42546d6a71434141766976702b30756164745a3532342f2b304c3569614c3664735a522b3274662f54685475515847343252584e2f794d2b5a3666634f4447502f75415851614c36736c7a2f582b7259586639502f7543443534796e59696f6745533145634f315251596f497941716f46413451454e4a54777149455a49436a6777534f7931587470637357376432582f55646832494b72566d642b59747744794e4146376e307630363136664155457272504b5a4748494c42364236634c4676376d662f4a6370446b4f4b374a41464a2f7451576d5a4a633056426d626547654b61556a67715a6a5557785159743961687559745048346a76586b647a6138695a6a6b7659587839516f79383736694e5654785163794e4453696b704f704771684c684233592b6f32507349374f426c724e634b4f2b4374763776524d516d47303863666775487441392b3347525947555630505735572f7572686855657a6f4e6d333330444a3357364f3871324a2f4265504c73797474376964756f4b44326776784a65427172425056526556732b6f79465a444264537a7668634161704b447457726c4b4c5843596b48584b6a6369574c34664e61724637754b446f50704c424d4a67344b75424538316839577433504c31577978475846425a366a734c507141486d554970716a69715965682b6d674153673562395266357375424c314b2f613856475273376e64627157697a456c7a322b39423037332b4d374b51506c334a516c3275507a2b4b796a2f41424f4a70472f2f414f6e397136323332707373622f584e71384175695044306f504d2f2f684f3745482b734477654b4e7a616275784374727a50346f6e384d563663486b704b583068776738564b7836684d4e48627944357356306654763862302f316437582b443971394535346d695756592b315541687069476a48702f5477566a366f306f6b3176674547497167746f66436a717935716e57426d71726d35414c5a6539426f4d75615458577179472f7159466c5562324c6e3969445a647544556b6e655974695077584a3350716c6d7a31616e6c77433557343962416b3971507651656b6e75675430677573392f314b4542716373764a7a395376334b69544467716f58504d50584c333855486f724570656f5864633657625a423756303773764f493159412f4a4a3654744958747042753031784b36483255544a6a384544446457374674376836492f564a654f396239594f2f613361667968385376542b6f62434d59656249793077424e61674e6d52386c3469553964325247475647515a634648474a43736d4e4d714b706b444a32793936534c68477355463176686b7251787148436f665365533032654d6d663971424a57444d3667465464745a67667658544e313436596f796e4579306e4442427858794b4336473432735431524c6e394f617748704a4244494a324b61526b6751796b654b434142366f734547515a6b4443726f4d785a4d4b4a53794363564e524b4f4b6c6670775145593464697374577058696c694858537336576f5544573974434d65616b39784462784f71704b6c323770684c5157584b7554316c42644f34376e49706a632b6b4c4f2b6e73526d58397149476e45696f536d4e653144553141695a6d556341676a7467717a7854303973454a42756c4171366e6f2b326a6475696368534a7175593346643759544669324150456739534471785a3659716a646872524a7a42392f376c6d74373250436e4b7173753334614b467736446d5367326179376d33707777433746734351484e2f676b6e594578314e5642777051494c6e366c7273744b324269516a643238713675774b67644575784131772b5758664661624e38544442337a57532f63486846567632666f643832786470463673673078754e2f4b7455626a747758424e32646d6b364e3765324b33324c6d716f2b4b4470536b6537323731584f63735173336d4e6d725954594f674275484279733979657373592b39624a4d616e42566a546c6e6a79515a446a7055496b5731554330615257696741474c494b4262634d4d73436d46715748347251475961766d6d454271474341573747726b72764a6248676e67593459704a3342562b4b41776e4b446857776c71437a4338454958585074696736413975784f4c745668467838734666432b507151616f7a4770572b613435757359765244736c76337859737a75792b6b46753171494d767148714d353376746247666a6c77664a575168455130342f6d754a3663656b334a2b4b556e585574585a4e77716731614a5a4775535355726b6145344b7931644c366b64786345346e437543444e4766315a717758434d525434724a61736d4631785545594c5559746877514f42546d714c7533745338596f7233344a5a54426f6735653439453274342f3035474a2f697737714b6d5038416a6c6e36704675522f5975715477696c4d674452425473646a5a326f4968586d6356757548494c4c47626333376c62436353424a427a39317367535a577053696634542b315a3750726d3532557847392f556750654f39646556794f6b6a6a77584b336472552b4344302b793339726577387930582b5956307778634c353773743363394f76786e41306671344d76663766635233646f546978695167707547682b43353132396f4c4662372f53584f43356c2b5a596c42625a75506947354c625a366f313731786256382f552b4b3674695a716663676d687a526d2b536f764269744f72395371753349676f4d2b67753436614e2b3158325979694f7a4e4c723745596b53476b302b534452455639734f53386c3639762f75723568452f30342f4e6458316631515749655644787a445077586b695351674d693141704976314244464e496f4a45735854534d736c57343936424c346f484d75415a492b53676c7839366e5967466346324e6874664c742b6449565068584d73327a636e47497a58704e3948794c63595661493078375167776c7738744c643654637a463250585766366c724d4247333163467a376b57777a514333754a573650376a6974312b775a32396476712f42636b416d656b4c562f5632686330644174753866424c676b756867345333524569696f4c796b673337486330302f56786b746c323450433449476135746932596e693676747462664e736b4736336448424d546d4d6543353872725364624c64306b42796730327061636c757346773061726e7844466972595847774c494e66714e6e376d79304d6669764d6d372f516c616d574c2b39656d73587030495066785846395a326773584265674f696677495163466d70696732444a704d554d6e5158376165695776677473372f414a7034646977527045746772374236576f35514337437561724577797376536f566e314949594d53546b6b6b484e4530706b31775164716f464b4c4f686a6769376f427a5535354a67324153676a4e423072554466326b322f36646163317a6f307174657776434d7a4354744d61566c6e5174696744676f6471425046456f4c39744e726f4b3037617a35684d6a53717832726e6c5445786b726a757454754f78427375546a6163346a3572486476456f454764516f4965386f4b515065697a31566f70584e4457306142425759365657496d57436552314941683845436a69706d6d3745417a6f492b5a513745324151785141566f6d6a4a756147726770795161726535342b2f676d2b384c74334c487a5375634f61447543776531613476627044685663364f3873415a6a73437368366c706341592f5563666d673645647a536a422b53316a6477774f742f682b7863507a764e477641632f5a3034753661593936447258353036574a5a56374b4f6b307958506a6668704f6f73742b7a6154634438554863747634763272514b4e38566b3235476e557a4c514132446f4c4a6b6653714a687130547a6b345a434d6e656a4d677159346f58585a3846664a702b4832374668336c2f796f366d635270584d6f4f44664f712f724e5133636a42703434425a345863424e6e783746726a4c554b35494e454e6b4c6e564275395844302f6377773063386c627477423031576f5351596a597678414a6a582b4175704b2f5543567539334369365669626e45712b4d7059534a5163614d34334b694e32506245712f7a625551336d546a33454c7343636d717072794344695433494f626a675166795757572f6868356a6e6870492f42656e68707a716561646f544657357567386c393742796459662b552f6b793057376b674b587262635448322b4b39424f33624830783979726e59737a69787478494f495a42794475694d4c31674869566a6e76626a6b47395a624e75433638375732496332625a2f30724a4f7a616f664b68486e70795163532f756a662f70776d4a366a674c61375778324d72634f76784e3465433057624d62593130313553624a586e4e38554165492f4a56334c683155397945356753597246657638304664362b57784335642b2f47526330543374773141335975526675536c374d674679394939764a4b4a796e4b704a4f437077775852394c74617268755561456456654b4473656d37694f336a355048452b3334727151334e58586e3533476d5a4c6f376264556249494f703575716a702f36654a78576545684c77717933624f6e6b4d6b46735a3638735663426e77516a53716b6361552f596742444a544445734f3735725245784654697137742b4d4234745077666b677958374a74764f644967564b387a7550574a3370474e734d446d75337549793333515330442b6e39584e654f76526c5a6d596e45467663673775307444542f55365935366f356e34495837397258707475445636394a376c7850754c30686f6c496b634356585642364746793949434c74796974666d58515831666b764c5276546a684975744e7231532f6270716363366f505279334d7644454d56544c64796f4a737564443178793179507578547939523239776b6e55785164443732417154324d465075746542584a4f397374306a34716666572b62494f72473859347937555933677a757558486651617250676c2b3974696f5164543773427a77532f643550584d6c6365573972716a6970724e786f3939554857756272793561386a3763456f336f4f4643734832573475523178693866697364327863746b367365314233374f2f4a4c4769754735677a6b73764e526863696153374b71324d4c6e3159384548543347346a6c2b62706242684f4c534c35726e2b484555775a5062686344475a4c66676733584c5772716a51725035503952354139363157393030472b4b7432396b3379534f72385851596474596a4763707a3845612b7a72424f34623869432f7658593955303272666c5238524e65786359796a484b71416164493746556170703348775367746b67426a384672326b49476c772b395a5878664e5062737a75476c4548576d4c6473612f707971757a7477496a55633634727a64766258476a4147763656365062576851586268476b5a52782f6367737641474c635679622f70647937313268586a526c75765772576f2b54753469584335454e324c44752f7574726246324e79463247456a41426767776d37663263774c38545262624871317162677648687757502b2b334a556e62747a483855582f4655626a664463522f346263542f414a4435464236487a59546938545258326272436e3731347946795550415346315053623037743851755336514a533979443073397239314679326e394f5876576a5a54733262666c7749476d68302b315678643736695a52305736522b66617332777453757a36525836667a5165736c6359646957633952437274575a51476d5438304a53496653474343375868785365654836637561716e49344a4e4761437a5872484a434d6f73477743724a4d65776f4333634c73636667673157376b6a6858686b74516b4944725845763649526134616b7350327279753733563757625a6b5245654854536944326d34395473326a575142773973316a6e3631747751645163385858693850456f653142366f2b75326f30695155683964736a42796635614c797a315246454871727671756d506d53745436764333425a702b767434496c76346d5741585a33624549533845544b5134317953474c6c682b6144664c312f633849747856567a315463584b65597a38466c6a62426f7070417163767751557a4a75467a49792f6d534d446d7063494a664a4c46685641584a777a54664a41564e4531554350524f4c756971476b7936596779644357307644474d672f4a412f334a3141347050754d6d56586c793446526b4862732b705275694d4d4b68622f585a532b33684131424c6c754f53386f61463856336439716a744c4d7046796457702f3841306f45684d5456395a423379584e73544d54703472646175674446425a4b417937316d765330566c6774635a426d415938316939527062306a462f6767362f6f323738304f504550697530416338463444613767324a3668795873505466574c4f34506c74706c383048576753615052567a67324b74677a7350454539794771496276376b4357485944496c5873636c6b695243596a6b3631514e5769676c774c6b2b7237667a647263676351306f6c646544794a4e465275624a75774d65556b487a32337552426d4c4b3633764e4a6646317a726b64456a444d456f323763356a70447367375839786b314c5162697a4c6d626d38626a61385170433563686a68774b456a47356b79444d2b61614e36556343797638414c45734b4b75634e4a64783730436170537a6638563750304c622b5474596d49363772796d652b69387473646c393564454934597935426537736262797847486867414f316b4477445947717568646937456f78735146534f537438754555433673796a4f62597070546a62446e4156376c7a4c742f584a416239773546735573643164746b445334504e4e4330494455564c35315230686e514e653955306a776838787158483366716c3364516d4c4930676a5447587a5233662f414939733343425639497a586c3578765031754f5343474e3362467178504c6d6d2f754f34694b334a48765351686475533078446e32782f61756c74765341432b34502b6d507851594266334e2f4f55766974316e595872634e64352b7a674671757a73326f3649595952616934397a64336f48706e49446736416232496a6330524c686837306d3075787358424f57587a56633547637455717669745731394933653762797252494f654139356f6770334e2f7a704f715156364b7a2f69642b56626b34515076397665724c2f3841696b34514d3756324d794d744c5949504e61694136445a703774733279597a4245676c4242446e42424b5077516438634558716743345a4131425556525936584b51416e7455485046413536734371334a7854454d6a50706f674e697a4f2f4d5772514d704530697655624c30437a7332756236516c4c2f414c5977666d764d576238397663467942615554697658324e355a33476d344d5a69725a46716a7651644b3375666f68445444736f4644636862444175567a7a755449644848426262573161494e336967656370534742495754656263583755374a7a474f65724c34727275426867736d3668704c3441346f506e6c323062636a41346969514231337658396c6f4933456169564a35562f6175445549415336674b49705641424152685641565452475a553035424144464555783936684a4f4357767551457762425443714859697943595651666969546e6b75723666364864336731792f70322b4a2f41494f557a4277616f78684b57414a58764e70364e744e73306f77317a4831584f58414c7164583073334a42387a4f337578596d456750355674394632766e376d496e345964557535652f6c6377475075584e7533504d7661517a5248306873636b4639736d5447667656346b473143695345446b475430774e5544616e5a6c584f51435a6845446973383242596471427048492f425a397863467542757959414b33577a7556357a2f49393758376147565a666b67346d37334d747a644e79527a56504a4446453845456f516c4163714570674545497a4b6e34714467636b4b46424d45543156517778524d736b4146635641575246564345454a517755636848346f4977356f436949776334495056414f52524164544775614b43484769414a434a785549705241487a526a785142344b477143455067703471493555514343595971554a557737555831464241654375326c767a723175326335414b686448304f7962323874673864587571673975414b2b355877353056634975544d382b785773794148344a5a7645315a7355346b596a6736707554306a587751595056622f3275326e632b74744d653965466b58787858632f7950636d64324e6c2f414f72746b754432494761714742524449664a416539424873532b466b44786936414e61714e6b6f6578424367464d4b714f775a415a4952634b4b45676f4e2b32336741307a783471365632467a42637169736a645a7553446647754859746c71486c774d352b2f73584c6a75354138386c5a75742f4b396238754e4b35634546746a2f414d79553957474c64697332304247374854577654334a2f544e6e636a475632574534733345635666437931324755596d5239364470376b4239497a52735a765371655839516b69724b51444679677375512f557170453968384d57346d69304175355064326f6263655a50584b6b5955375367363231742b584152354376596d7556634b51505332536d706e43425978635033386c4865675456774f43444539794235534d51797270696a672f42495437304638634f535a7a69714263302f6972597541416759757135683670334b6d5770426e374b705a466f38464a75634f3956546b324e554646316d3733536a715655705051312f617234773935514c4561523070355350464e2b5046557a59666b674e32544c6d3337336c2f6772626c77595358493346386a552b4a515a393375616471356335645365374d794b72414a7145486332783245346a572b726868566250733755682f77434e494538496d6f586c784d787777563172647a6867677539513274797a4e376d667a51394b7369377559526c7831663761725350552f4d742b586436342f7741575076355a4b6e302b37437875347a4236507a51657568496c794f31585150425959585a417574567537727751585250755667592f6d71346a3953494c304b4334797969684d516c457850564530354d6b485858676d686b4d4548696657765454737276542f77415576436677584c69766f573832734e31613869655961504b584869764133375539764d776c516773554661464852596f563455515156554a616949775a474a51415949446945614251424144696f69454d41676a386c394c324664705a502f7977766d726535665176534e632f5472666c2b5051597837586f676c75374c376d5433486a6f31435041382b4b54317a543968656a69656e2f3342637a2b78377353387a7a4247594f7676343831302f566f6d507039324d7a3143494d6a484f754b4477476148616f374b45315145304b4646416a45494170685252792f4e45416d71414b46514f6967657a447a4a78684d744677765737717843385962632b474a2b412f4e654e6571397436624352747875334b796d4837417944704268677741464f78416879386338307259526b72496b697143535a6e56457778567477454269574a39765a316e756168326f4d6d346c30314e4f4842656633383647475475757875356b5a727a7536754f534267677a48676f6f376f7367447035536c4b70716b356f7545454a77515a486d6736417850765452757967524b4e43456e4e5236506d67366d7939556c623662686f757474392f433478586c6330305a79686767397a5a335a747471433352756959634c784e6a314f51476965484867753174742f495739634f714c31624a4231764b59394f48426e54334e774c4971645077584a5071735445766a2b6e50757a566c76307935756a3532373659444344343971446274376b7273664e6b43416664327132787537596c7066386c6e3357376a6169336848306a6b73397671615a44494f3343364c67664643456868376c697358485772706e56366f4c534e4f435633446c453148614644385543454567675a4a4a5847474b73314d4f716935752b33747261322f4d7542384e4934736761394e6951414850753434726d58765672466b456133504350357375447576564c75354a6336596e3651735150464231372f414b394f644c59596646632b357537317a475257656d42526569414f2b4b434c61634565476141484769696854414d484b44732b6a65742f596732726a6d326547585946324e312f6c316d4149323173794a2b715641764764696338454737662b73626a664f4c732b6e39456346676957554b55386b454a63756f555132434449434a4a776173565752694557515878693948396774454135645a37544d7268494769416778657176327469357537766c57772f506773306263397863454c66694e475874505464694e6e613052386631532f42412b7a3949733761493164567a45792b4b4f363948327535676455574f557331723152694b5970784d53354950442b6f2f77434f626a5a396350366c762b484a6359754d4639526a505337344c67657366343944636b336471305a2f564841464234764e45466c33422f6975377a4d41547a50354a6a2f6975386a5561442f715163456852754f4b364f38394533577a7263676450366f31444c48623238726841772b4343706c75322b776c4d504c7048746b744e6933617363797973755833372b4341665951412f4e5a5a322f4a384a2b43736c656c7142434679635a5643444c4f342f5467365346764839366c343568566b6b676330476a79597456435671414f4e466d6b546769586171433656754c6377714d5252414433493969435679524d334c70657846733042646159627768696341475757696d46454733376f786f43516764336368545534574e5238304859322f71486c7a2b4f4b374e726432726b63656f6a76586a585a4e47636f34495061626b57356a4d6e3663317a4a517a41727837567749587078774c4b47394f55616b30356f5053656c374c37712b447165334139597a6f765262373147787359617268595952694635625965706632336136773070334437674d567a647866762b6f487a72703564694462366a366a5a33526c4a6d4a384d6376626b4652747655576b3244393635306f474372775165706a636a636a54425834437542586d747676627533777248675632646e366e5a76394578706c787966386b4767333236733354787630644c63326849364f304c484d79745362532f507651627650655661783978556a66693747693576336a644878566f75526b5431554f42516266754365436e33483145357373457064504a5565594955504642315075733035756b3958466357567745554b757437696e57585164547a4930597034585744726d43384e5054515a386b39752f4563756144725275475137455464424b356e334d59674447716531757054446c423042756d72676375785a66567275726253686d3855766d3663757a6d73767131345473307a6b794157336a45445038385666626d5268314c4a6275786e45453468624e70746a644e5132626f4c3765354d694f316c716a5a6b61797779795a577746713156712b337757626362364e57515847576d754b597a4830342b31467a4a3730743166464c44644855356f6736735a36672b4355334b3566367346674f356a4a794f6f4a42666c4f725551612f4d5a346c567975414b69557a5273306b6a584642624334395451733365724e65687773557077314d416d4e7a54314772664a42734639563349367638413870564357664656626d2b335337636b484f39523044773467727466346a75333137633444724834727a4f3575613559307958582f77415a3151766d365042346665673952767868774c757548656c456b77483746703956333545764c692f4d386c77376c304e52394b42353772523077774331624c3145786c706b2f65756247416a5669726f766269544642335a627354476f4f32537a7976677971567970626b6c6a4d6c687777566374337048443855485a387a6a6d466c336671766c417874302f46637965396e45644f5941575579424c6f4575584a544a6e49316456314368366363564542526b6131513755514b6f427a376c4277344b594b4371434f2f4a544571555551622f53674275496e67666b7570366a507a434944416e765848324d3942314d35576d46387a75676b59494f7a4d7761717a3736646f514a694b4b6a7a35584a46364c4675626f6c6967623032304e787552775851395a674e44424a364f664c426d485a7547495362726366637a3030446355484f74375752494f52576a376549703856734a684b4969614e775379755159427345464e3276527739676b6a47496f56444a3576372b3555536c716b306350314d676433343434347252595061574b787949693158563974346e6f79397a494e4f765044322b434d4a38566e4d342b4c4e552b61613653673757336e716c334c58367041584e6e634d6e654453484a637a593376366773343671457266367875504a32666c6e366a70626b6738644974676f435834756f7a386c4978656944544f455957527857642b433062695478454f437a5551464b31555278554c4444336f49525769424b696a6f43454971496b6345454d616f36434379596e506b7031454944616e356377654256322b69397a7a4935724d584958536e447a4c476f665367356a5534714273302b6e543730705a4145445245567951306f47636a44424d4c7069556e695537454436754f504a43725648344a535643533945446b6844563855485a4238554467495478314b4f3337306363636b437339516c48785634746e337179566954494d72756f66696d6c4453556848444241534771673957544a65354159676e43693157594164537a2b644d3470343335514e616f4e346c31643145766d6b39544c4c61763164616f534d782b474341536b594f6346336470614e6f414774497958436c4871454d6e485976517553646361503830473362414e526261694e5065714c55756c7543744f4449495a3444676c4d7867454e5248746b672b61426e6f754e36724d47336f7a31562f4e64676e54456e3264636938664d3177506850376b486e62307a433430634174573033675a356b766e7756462b797a695653506b73734159346f505a6265745948677278576d53386a593356797964567373656133322f574a3479694e51376e2f41476f5051786b49564b7661744d56787266726d32303965714d7665467374622b7850773359682b4b4471413652584e423873316c2b357345445464694f395043374762364a4362597456426671497153674e775a4854566b7372734c636455794963536c68666a634851524b503841436761354d344134685669524d4d5652764a2f485068373068756a4b735167613531466770627436515478566c73415648424d5a41565a30414148593243716e636371584a6a4842556d362f356f42636e474c794f444c6b3771356a6b324b76334736423468636d2f65643944366b46462b362b4863735a42644e4f526449777a51544f71332b6e5870616a436e574771734a624a534d6a47555a4445494f365444523173537972457030594e7756756d4e363438634468325a30785276544672784442427373626d5675505656644331754b6151772b4b35646a303634414c7436656e5634596a344b794e69516e516c2f306f4f326273414b50715379752f79737552503141576154476f2f7044503843565a446258393648762f414e4f326349527a3755463933656d58525947755877566c725a7a6d646534496b63686b50626974646a62323976426f524376694b3971436b78455332574338543637742f49336b2f77424d7167397139354f496c6b3634502b53374d337249765238567635495048415a4b664e4447696a367149497a6c514b496f4950676c43624571616e4e6355437146776979474e5544456734717a62336a5a6c72484842564146516c3048706f586257387450434d595346664456593754526d317a4631673257344f3275655a45557750657465357632377a614b537a51646332414f546669755a757244536549626a78576762302b5749477650425a64784d6769597254755156434248535271375673386f474746655335683345675870334c6459334d6267592b4c6b675932444b4937553864724f6769506574634967685747345a4e474b446a7a365a65584c48677574365a642b307479756b316a6b6c7537654d415a754470786b6556537364376557486f394d4f434450664d747a634e79654a3937496662445430312f3071794274596b34356346654c74753441506a775a42796231734130496f71504c72774336642b33476b525873574b5554416b4630435145584761317933776a3032682b5378546f77705241435877516433304f38626c79557066544833594c7248314670614b506c32666d754836454354642f6b7a53656f784e6d3547594f4b44715859327434476e476f2b6f554b342b3432393762526c6167536263735935553438316f324f396a6f4e756448712f4e645749463056495165516b474a34703764696336674c762f774274746d3571443658376c7468746f7842425a7a386b486c706257354545366144464c597579735331524c4665306a744958496d4d7a53635777586a4e7a594e6d374f32616153794338587a646b497977576e3779356166796d5a63726d742b337348633675456671516454302f314f2f656e43314d304c79667358654634754149752b4d754338655a2b5553495a594c72624831435a496a4d317950356f4f37714a785569536146533564444130495663393145445430305158694e64575151755338756a697676585075657052416150564c686b6e3231767a7065644c45736772753252633865613576712f706370327865685751704a754753376d366a477a4456492f55417239724f4c4d6539423836774e63556f4472306e722f414b4e35582f6b574b775069484265635a4249384559687a5641717930535333464231445a6f496b4e54425a324c452f4658376d54584a5234644a7173336e566c6766624641394d437339323458624a4764334c4e556d7561425a6e5561493037776b6667724c466b33706945635452426673397063334d744673667a537943377533394b7457496a5657576637465a746245624e6e54454e4c3675617646306b4d45466c75506c30674b4256334c7479444455512f6571353358316171556f7953573445686a45694b42723074593058644d324f7242637939737263347645614f39585862326d6e486867733872356a795159626d7975514f706e474c68647a3153516e366662464e57714f4f506858492b364f4a4e6664524a637554753963792f34494b3446735675736741554c4c4462466363537430625131636b4773654c546b506975647653626c776a4d647936563259454354797279584b4a614a6c385469676f657244464b306f79706950656a72456c665974616a686e6967394436563635356f6a597676717742586f3433497a64736c34376137574e30536c4674567558555062347272624463314d4a76716a6e386b48546d52413673754376684c5848554b4f717a4f4d674a533730624d526a6b67304576574b4748566d706a7955316966676442346a2f492f547649766562414e47667a52324e6d566d4c61574c50493455344c30482b512b6e7a33753241737865634a5a634d364c7832343950336530706474796a38667a51646135657479364447496a792b617953743757565339654335496e4f71676e4e2b6b3135494f6b6470594f5a6f68742f532f755a2b56624e637a77397553306244305466627469592b584166566370384d5636765a656d32396b44704a6e4d2b4c4a7a7751552b6c2b6d327468426f504b6376484a644f4d52477637306c6a63777568394f6e74354b3346424d6766616972755868626a726c51664657536e4333456b344c6e587a35784575487951555333467a63395236595a527a37797237566f447148695a5061735a712b5559694c73677138777936556744794c344b54686f6c685263333172314b4f7a7436494e726b5063673558726671416e66366143505437636c6c736b7967645648506637317a54505857574a572b7a47356f61496553446635317578447148755850752b6f796d425776424a4c6233377765415379324e2b49637837304765552b43617a5a6e754c6b624e6f6170534c653956364a57354e4d4d7939582f6a2b79386930647a4b6c795436655151612f54665172477972642f7158654a3849504966697534447a775757424a5a3671324d7130514e4950676d6c574c386b43324b56763349504f66354873664e694e786278464a6331354934307758307136586952494f4b72776e7175794f31766b447748424267664e46754345716f6c4244785543484a314734494378775259736c4470744b4242566448307663655264454a2b4752413976624259434e4a37554b3468423743305a595a36766375785976473941505168656132473538367943664841365a632b422f42647a59536a4b332f474b534874524275697778526e4457472b4b5148535558503755474364754e3053733351384a654c3843764537766254323177323772676a44735876743562482f4a6e6e6b754a36397449334e734c354c584c5a3031786c4838776738726b6f584861693348424163554270324b48707167547252616a6f43784b544369504c67706b676d6c6b4f5349717570364c7342754c6f6c50776a4c6967326569656a433866754e78344234596366324c314a5075474367673173487554515930514545674a744d565750447851315566673643585a6949634c48746f416c352f556a646b58614e584330324c575a515851476d6b614a70426a517161614f457370346c36494b3774374d4b67537271785663726b5a453971533565685a68356c3074486a672f594d554337766452326c73335a5a65484a7a6b764533626b72737a4f574d717256366a76356232622f515044486b735643674761597367464355436a6d6d4743586d694b6f43412f4a446c6d707a554645454961716d4b694c7452414f53624a6b726f30515269686769575550464247306f6873536b4a66464e775154566d67433471696751676a4d68386b58514e45445566324b434d6967655341797255494d366a492f4a414771695452426c45454c596c656f2f78546130755879482b695034727a646d314b394b4e75416555756b446d765365702b6f483071454e68744341595236353575616f5054323443464d465a4b4e48586837662b54656f524c6d35714841776a2b41663472752b692b745876555a6d4679324b4239634b43504975364472307a7173562b374333435570556a45616a375972544f596858446a7a586d76384149647a35634937615031645530486e6478654e2b354b374c78534c7047705651384d4545454a6f79694a594b456f427a55446f38314d55416f69425667756c36583656503143654f6d3250464c386c37585a624462374749386d416344786b5049393644776350537433494355624e797565677154394c3363617973334f33544c386c3949314856695551547837454879755554476851774b2b6d377261574e3647334673532f3933765841336e2b4a776e457932636a54364a3539683975314235446d6d4e566475647065326b2f4c76774d5a65326172466d34593677435278514b417576364c36583979392b662f41423236747850354c4273397063336c77573444487848674f4b3964633062657a4778625952415a2b50456f4b444d334a75614e38466262735666465a39723158764c4c50693636776a434965575077515578746a4844464c4c5445387a676e75583763513066677348395335495350547a354642306f564c79526a50714755567a7051756a7163756b6c757077423152503841705165704130304b595a726e327657746e4d654e6a2f4536754871473262707552596f4e514844336f466d36714c4c63333969415a334947565678397a366c4f363445574661464233764f68496c7041742b4b57354e7142654e74584a57356d566458384b374e6e314535762b6c38506567366e6e4f5652764e33647436644743454c30446d46587549656242754343367a36674a2b4b685772376d4d71436a72793035335976456d6756583339794d5831396d61443168496b4f31597033787159485075584750726c3078305341593543686f742f7039716431726c324a48365976385547324d43576f726947444641476e414256586267466345416e4b6c46697658314e786430676c63726358337150444c437642424e7a753264386c783739375763582b444b792f634a71736e696b77434159436d50465732342f7178576a2b33584957665075526150784b7246774767515658625979795656636c635445764a55397553412b4b6d434474676f4f4f436848424231747276756b524b374e6a6343644930623472794d614873572f5a376e71615863554872726336636c6f4172514c6a574c35384f6136566d37675a565158314f4e464157704839796d754d68696d66446967574d736a6c33727a6e2b53625057667562596f664576524e7878516e62315230334d4345487a736734497652644831663030374f357148674f4762636c7a51676e617034554347524861674449734479516f45554241594945494357536943454d5637543058643272757847336c63467155437a366d4a474f613857434648516536506f6b4a7970666e492f7a4f73767139793173646e4c62516e7175536f586b35412f6437597278344a3431524a794b4345685356616f4138464a664241575147444b4b647543426a6a524b4d457766464b794342516b344b4531346f6b653941316d486d544541484a4c4c336a6932304968744930397743386a364c5a4e33647747513676637656536953635379437944366c6f304b7533436f30713656656f6f4b35386771623565705a5733654474327242754c676a45794f43446b3736645a673058436671572f6533712f7741537753356f4552524646445641477252487652494c75464a514d617951443571454d4b4b444245304b43454e564c67464d6d4f4b615647514168426e523030716f55454a65685863394a75772b326c4836684c56334c68717931643875515a423672303231426a754c68655a4a4563324748767857773335334f69456463766b754166364549365a453072326c646a61622b315a7469524e573675314270742b6d78745338376364647a394f4d5171372b3674776b787834425a787654754c6d6b65484d72646176376177644d4e4a6c78785078515a72666d4561684662374f73304c716a63657051747831534a703355584c50724d4e544455663555486f76504a484268676c38775271612f67754c4463583546345769416631465637725a626937594d78507241666b522b61445636683633613238486952636d587048416471386c75393563336b7a4f34667956456a6e78514555417752556b514d4d454d454264304f52556445635545624a5353696a4e67676a444e544a6b532b53684e4851414a6a4567736c7069564252424347504a413054474c6471566b4543674e4558716742577543426f526c493651484a51775a31337652396d59514e2b62784f45667a5750316e792f4f3032774e513862594f6735326f4b794d324473716355517a56434430502b4e47477555354e714659386343374c314a6d7a4156587a6945353269384379372f707672785957376f70672f4e423665556d72676d4533484e59597a457572556171324d327851625048464a63356a7653516b44774154462b2f686b674f7378784e46504f4e754a7552784171355754314356364e736d78346a525a627479562b7a705a6952316171494e573039544736654e30644d6e72495a4c6239705a5a705167653249376c35712b627532674445446a37737539647630336677334e7434596a78524e53503263454647373944736269426c62476776384153764c37725a584e704977755266684c6b76656d62436757546432496269305953476f6b483335596f5041767853796c3855323474477a3054792b537064756c41784f7167565a6b6d385643697a6e6d67484a6b686b374a69546763666d6c5a415479553538464779557751427945776641704770524d5141676c5252475265767336436744494363475379476c6b51484e464f53414651594a6f776d6643435664445933352f51554644384d4543474656304c586f32356d6641514f4b6265656c584e767049712f7741304747324449364d5176522b706251626261474d4d4936532f61566b394532453533684f3647302f713468646a314b506d6261554d32723356434478707545686a5641384f436843476c4243696848676867673257505562323344524c783448444a62346573516b47765777666d4678527a55775164792f39704c7753374b72464f492b6d51706b73424f5341516254755a5136596d696e3351776e55344c496171486767764e34555546344f714d545648533643337a4872564e486345646757596346484b445a4c634f464c56303278714f43786c6445676659676e784361423462346c6f7651477147393355626b414163317a5854323475644f446f4f6c744a523076493058546c366a455542702f4479586e535a673641614b36455a675032494f706539513155485a5659376d346c4c44325a44794a4d38714f7262646d46747046335155695570437231566f6e71746948372f656c75334e5a6642564734794454724d61523733566e6d5a696c4d46686864712b50464f627571694458356b6e31355a4a524f58686571573331524943733141557851434f413470774a51446b3879683567374668334739667044464274753337646b59343535726d58747a72774e566e6c4b55354f556834494c49526678594c6262332f3238644d435438412f34726e6a6745445442426663336337737a4f52715559376b694b6f63495959494e45747a4d344a44666e3371756f716945442b59633855686b2b4b425a44745150486e6b7241326c7a677168547354796d616f4b7354795445756c59714e56415870696d4a7277644b51794f4151494d655362437167716f676d7031485949496f4c397064467554354b30334967306f73594c464f5a766b6732692b4251467973387a356b796547435161534b34684333374642302f762f414372506c4d333851344c4e614d516457503756512b76465148396944624b62456e3342514856557573384a48693534707a4f6c63383046676e457172414d3666553153614f71726b394a6f67496542636f36744a664656537653786f67626d75764641504f71777754595370563067744756516d74577047576e6d67362f6f39722f715378474863712f3867334f75384c4c767046653072665a76783247326c644e5454524574386c356537636c634a6d635a494678444a37594d61675a5a7064447254627375774971677a6b4f56504c7943365932766c74496b632f624256796a44437635494f63524a546d567075444d564370715543646d4b4f474b566969546b676864335137555a4b416e444a4259474a344a4a59305375364b4267777758543246597a444f343746797830386c733273366b444e413037496c514476565539752b4743364269416361665371727334576d632b35427a4e4a676c594c5a6533496e68677363716969415579554952514151524671714d6867676a357155434c45494948697a7033796a56556a42585149465059494e646f6871666d7946322b5952594b75647a7934734d566b636b75674a715851514a5a524244564375435938554d6b44524c565236706c38536c4d6a456f6e6c676741644638797079536b4442426f74584875513441686573424d7947504e6556324d64642b433950745a436d6b396f3745485167536173744c6b69696f74594f4d31646b6750646a6d6c355a706f757a38636c58636355346f45755365433539346a367331724579485a5a4967334b7a7248735163362f62456f4f3152386c7835326a45366a375a4c76337835636d4939793539324548654b44494f716f6a377a383033562b314f4c5a78783745497749354f67556b503142474a4246526879623471503841534d306b6f73612b464132694677566633354c30666f6c7a56435141614563682b4b387a6372523136442f484f6d7a636b5439516967362b3932317664523058413958434731674c45526268684769616436774b2b62422f3567337a5650334e755a30776b4a63577751597655624e7a64536a62457166587a5733625744474d596e77685857376239536563794b4149415a557857637a775a504d7550616756467934433569677275584154565a622b34496878723845313637434e4455396935743639714e61647642424c7336666775564f352b315762692b544b6a6667736866456f445546304b4771495971554743415077795578516c56456c4272326d3546694d67635a4d78344c70656d336f337478626a4e73364e2b7863546d4d3059585a5779384367396c4c635276533152373379354c6c2b6f657078732f3037506a50696c2b533434336c79413067395035716a573563346f4f37365647482f414453784a59636c3662624f614768586c646753494f505972306578766b78592b49494f6b33306a32434c424a475a52464b4947427a5358625133454a573565475149553156544f473449506d7536737973335a57793943565352707778586f76386f326868656a65674b544855764f6469413531555a36356f346f454641754a5444696f516f676d4b6871454f536c58514349644f4e50636747515a30485775656d786e445862772f426336567332334332626665364c5a6839522f425a4c317a576453425958446754514a2f4d4d6732536f585173584f676b733248746d677845464e454546646933596863786a7a5773624f41787079516372623775594c546c68677473665562554a59596e73576d2f597457343949722b4b357374754d546d676d39336833454e4970463341584e30454c726661786f6a4c616557524b4f5972452f4242783636686d6e315469616c622f742f63374a7a743367677851334578546774586d57372f41456d6862784c50643270686834534d566e4e7155616f4e63396e71537a7447455163314e7676726c6a705068357256726864693863633041394b334675314f576f74716f746e7157326c75376571324e52686e78374f786354637759366d785776592b704777524758672b4b4446626e355a357273656b5869626a50516a3471622f615774304266322f69506947446e73396e576259514e7566583746423274314d626672625646394d687735713278636875497643576f63764546524d6a6376616b63412b4b3839507a4e76634d725a4d53454872744d73596d7674334c7a332b5232644734452f3178456974757839656a4e6f376a706c6c49594a76386c7469646d336667515245366665673875545873566c752f4b32346957456c575452544e7767376e7047317458503841794c78476b4877382b4b7533636865614944415570536934566e6354734f496e464e4c6558626e696b55473647346c6247694a6638467074776c49764c78596e38466932734958434a523853366e5862476f654838554638746d304e6250786f747670392b4a476b4d797339507638416d4e7a3979357537737a326437584150433538446967376d2b3268336d326c43482f4a346f6e436f5843324f2b6c7238713634756774376c334e74366a413661342b3734726c2f35467437636f5233746f6a7a42694d354e2b58795164757a474636456f7a776b4e4a43384c36723659646a666c612b6e785235672f6b752f3658366e356c767179577a3158616a66375558414f7133562b49375548684462595658513944325574337552434c554250563846686c4f54744c414c7358665574727437594870304a777559536e504675417878354e2b515976556f2b54754c6c7268496a784f7363704e682b536b6a6e6d652f7653794f593449427263315131495677554a4278514677334e646a306d3041584c64514958486948586632724744696751644273794277376b6b703037464b6b6165427977537552574e47514339596a4c78466a4c3271734a394c6e502f694a7837506d756c4546334e65613043496c37666b673445746c6673486948535331546952644466784c305248315a425a4c2b326a3438796734567a6278622b6d58397561706a30783072727a32626c77666373563233505667677868346e6b723458326650674f6171306738696b755159307145463839374b55576e77564a3346474156636779476c3042317035626935504e6c54544c464e676737662b50627757372f6b334730334152337230304c6c6d7a4d694d64567a506b7641516d596e554d515636795739466e436b70316b6376326f4f73622b7566354b303368426e78357267576655595749546e4f5266682b5372742b703239666d794e636d794344735864374d53315448547846666774646e6677755165424a483871344d505572636d304334532f3658563076557078723555705248474c495051526d2f5648322f42547a54414d616a32354c7a56332f41434452476f6c465a4a2f3544546f374f70427639563947743773655a7334675853664467434f5042612f525038666a73592b5a66416e65506549646e45726a624c31614e67584e316365524a4559787961764a62647676505574344250623242356630796c4a6e2f774456463048703539564a4c4e4779494f52787163566a733374316267392b7759486a626b4a666d566f68767255773069524c6d676f73487939354c62794c4358584467756a72624848386c7a4e334c2b72617552704b4a36715967717935664c366b467438796d7a34652f424733474d554c563865484474544751446f4c6e686849736d315234366e79584e3357397437614f7163712f70586d372b373347347547555a536a4159645344302f7158714e7261327a4b655030783479474338526368633364795636356a49715872385a534d7938706356584f3571785158574c4e754a6554396936467644704f4b354133476a4434725a5a334d5434384751646d3350566a52503541616d61537863684d6178374661425055574a2f6567716e61387942686361584278682b3558576435417a3875644844446852514153446e46316733386463486c694f6c423651316b4b6f776d486f75423654366d332f6933366e36442b433673727266735164474a486336577077564d4c676f3261736a4c4e416d6b4c69657462507a725a6c48784c764871722b7859723953344641672b652b48745163444664503166616978643178384d2f6d75624a424648476668515a6b4479514f56415467674a466d5244794c59354949376f536979394636642f6a4d7277387a636e52444b4f5a6465697337446132427074325961542b6f616a385548684e6a75447437674a384571543750325972304f3033597358497a6d5330693071556269753366394d326c324c5473782f306a54386c6b482b50576f4637647959682b6b6c42306a5877315142366463714159796b57415a5a7232774632486c327273375a2f5645343971386a36747374337435662b53544f4f553954762b5865673948762f4146336162596159487a5a6a4b50684861632b3565533376714633655431335458674d41737037555851456d76614568524c4b456739694364696d4b684b6871676c4d6c41446b706b79322b6d2b6e7a336b7744534138522f42425a3656365850667a7830776961792f4a657732323073374f324c646e764f617473575962614562634b414a704833494a4156726b6a6e79536744554d554a6c734d5544584c6a465a3731386e7034344b753964627457494858646a56383234494e316d4f72716f36364e754f6c5a624e7651414379316869416330445372334c4875726f74323963714166497263654338762f6b557268766662436b57316476596770762b723237464967475836577a584333572b75377954335468674f4331445a776a34716771543239754a7248737a5163354b3636586c3254346f4e2f4c4a69666568396c61627853482b6c2f696735714c4c7266326e55423556794a50756f73737654723172785251597979444b30327944564b656142532f636f426d6f31574e5551484b435638536e7a552b536c4d554555344b64366a49416355545244437167515254562b70466e4b424e57514e6a564b4f6149775164385545724a5370444b4b42424b47694c4f454854526c33494677716f51334a46545579434d324b69614d4843757362587a376b62555046493655486139427365524757396c46792b6948456353724e33364c48657a4e2b787562636a6350687546694f5848486b752f5a747873576f5759556a455a66452b395a622f70653133465a686a786a374d67383466386133346d496558516c7465727037654c6479396e365a365a483032794c55616b316e4c6a4c386c7876375866413032647a636a4868712f6146527470332f5364794a585a536e7435306c4b565350626b67394a663234754d2b6446382f7744563977647875357a7942302f37614c334871652f6874724535757a78364f5a4f444c357649756452784a51526e55647969564256424345485a4555356f595651516e4a5837506279334e364e6f66556365575a57637274656832394d6a655038414c2b4b443165316a4331626a5a74345243303633414f6135666e6670576945692b7042753165354d354742717134485645524b654c4555514138697046355650464d7a4a534b737941584c554c30434c3852636a776c566c6775656d577750365771414657474472664a345679514a51636f2b6e5862415032306f6e5751576c543264633763573934443152487658705a774a4a644959644c53714d55486b507472306e2b6b38542b43617764335977506d443950466568753753467a71496334636c684f314d5042674851565139663238474537456f2f71626c32707638413853327169335a6e4a2f3145424a4954384f7169726e6174334b36527137454333503841494c6872437933782f4259702b736269345850536b3357326e423544425a70536c67794333376f58574d33504771305772317277367363515667704b6d415569414d4b2f745164714e794868684e754c4b305175534130504f6e466345516c4c4a58577245744e48376543447233446f673877306c584b374179654d6c6a30587a466a6336653271716e594d635a3676627451625476504c59524e467432587246754c516e4a6756357955687856524c7851653730626265764b3149506d5857573936524351712f63764c625861583932644f32424a2b586176592b6d2b6b445a6a58666c727534746b506269676f32506f6c714d78646d356950444538654a58596c51366b7437634146594c6d34712f77433542644f387749574337754141797a334e7a7165576178337237462f6767612f664e77554e4d316876334141783969684f354b2f4a6f2b496c6d487957726165686272636b47545734484f5749376b484a424d7a30315861394b3946765847755269425878584d4f3564725a656c324e67786a2f55752f716c68334c664f374d396d44494b443658615978766462384179483969324272355a46503166745775424f457346597a6c7767346d352f77415774455074354550394d712f48466555336d3075374f5a743359392b5258306b3169734f39326c7265577a627664334549506e6242482b494b2f66625757307547334c4165486d73774f5341673152664a4b63566f74625337754b77485468717748767751624e747642476b75786458623333594c6b485a51746764657157596a674f39534f354e6739596f673950617678375676745331467867764e375863776b2b6c325a6466613333444f35355a494f673144386c594c514b706a4e67725954715877356f4b3978734c5737744730634d75525867742f366664324e3379706a2b5758454c364e7159685a3937744c667146725265485965434435716c58573953394776656e797731577a345a444e63706a7a51516c314345575a526d6f6746555751554171676a4d46484c4d6a696a52366f4232494e57714a5137554442304d6b473471464157536c484769685151444a524e34564543383063517755354c643658366463333933515042395575415164622f486476305476676677686436466a6a58354b37623761317434437a4877774878566b534348514c355967413653595a316434634f537175784c56515a6270365848657550753978476278714150456677585333637a474269395a664265573332384d33747850546d677a33414a33446979616349365131456c6d4c31547a476e73515a547952566c7946614a39706174334c3049586a70675431494c6654396e4c63796636526970366c467235682b6c65746a74525a694c554b41654676683272796672454444643349383047486d6f55636355726f48385747507a54566a517042536f5544596f44686d6849765571616d554951416642534a5970693648346f4c6256787941563062356a71595930584964585735365456423661316168743742746a7853724c6773635947623277506773467a3141334f67344c74626151416957373046647630694d3439546b397165487059736b584930726774346c49534171436e684533656b346f457358363643374c5334747a417a4b353979576d656c614a784e79494979516559396132683275356c54544758564876584d596969397836747378763972682f556831513530775869544a6b414a6f794243674b4c5a6f4953366a4b597164694347584242792f78516f364a6f45424a526c524b6a6b674e54524b412b43616d7171684c68414930586232757a473532423044724533397758464c4c30766f732f4c32722f786e766f67387a4b4a6a53574b364870327a462b577134503659577a315030364d7a3574756e366c62737431626a623875335138475161743175593757477334674e474f495a6556755438795a6b56305057627576634741384962354d75614f534138736b4a53664664496265794c516966484c36736c524c5a672b4351777a515a5365434d584b45375a69574b6a5a424236583054637a76514d4a6652675631596e50327175462f6a567753755473794c6178374d7537637373644d666274515043584b6e743371364e77784e466974584e464f475330776d35306a745158417479347242366a666e35485533503846754e422b53356e714574566d63426a6b2f7a51567a50334e6753464a6163754b342b33335a324e307a6a6c5358417264744e3233524f7056316a59777666386c584c6f4c746a36686633736d59415a7274617862615279645a647274346255615942446457376d6a707167387a362b49656672686e77584a31453472716571783144557a53655439693549397941366d376c4d4541516753676a4f6d6c6967373833554566656744316446364963696f674c6f49343055773730456569674a50596f686a67673946744e74737431747a636b644534426a377361702f4e324733614d5a43575a4f6d722b356562457a6a6b564b4769443038665639716146615965713750706a4751694736714f76486e6d676739762f636475662b70457148645737685a364f76475762687358597a2f53524a646264372b78654a4d444948356f4f374979746a706f754e764e39496e7977616e46507350586f526a356535476f6672346479355632357175546e7a36554757354576524b533659395263705542464b685130556442714947534770525a31434751476f5141557a4b6242304336517067696f7941636b64536d4a5a53714153554a6f6d4d6e7853306673514632573278507a624a73476e44745746736b304a4e55494e4d646d546d4f61306262627874764f6367534234565344457330673579554d34326f7941494c384547534d367575684431436a61585a63306c31412b4b44702f63655a5144386b6875544e4373316a6361586570576a376d4978514a49535a786e3730684758637259335a5843726673623868724d446f346e3264425349737a3054776c69564a575447687171703659312f656732527536756c4c4b35474a726b7355747871444369706b5a537851614c74383135724c6a696f447754615367476c5267674f615a6b4155515a47585467675549344b48446d6f5545624a527356434752666767442b394d326155444e477043414f6e4a6648424c4b694753416c522f77416c4b4b4d395167497a6646547768516f494345416130554a4c4f68556436413971556c45315549716749504642714973366d4b4365494b512b4b6c6342676d6f4367496b547954786d485a49485373677544767856707544425a586274524d792f73794452357062346a6d71705466415a4b6f6e5656796753516775306a6a69672b6d6d61544371594771437931706b37753631334435635869734671656b734675753342354c5a2f4a426875586a644c794b544564694d49616a3035727079394c4e757762787843446b6a697234336a4369706f6531516e6a6967335233554a6a526758376b686d2f4f7178756a68326f4c54634a78772b535356634d30426b6f437941474f6d6851524c6479417851457164716967695a6e534b6c415046525443713648324d724931546a3742597267596f466f55346b7a615658696f673066645356526b546e564b34626d705242413455786f6e6778782f4a42736b45414434705759707841752b446f43476d71414e71414b4254364b732b53516a53616f416553696c6345535751516345655555714a706767442b3945714f674351674c5564426e7169564f6141646944466e545956552b6c425a63745862564c735a522f6d69716d58316b5145673832506375627576524e6e66636d30482f686f613969443531686767376471396a652f78666143676c636a376946696e2f6a6c6f514a463036756355484432552f4c76776c7a58713745616971344839754f3376523145474c2b4a64797977496b5548537330626946704f4e466d7451712b61307869676c427a564d776531315957774357356852427a3774795672785948344b7a5932347a444c5075717447525953496667427a543352616b4e4e6e63416c715145572b4b4454505a2b3739544c4266394f6a49366f48536578567a336d373276677550796d684c2f494c6d4636333368426d76625739627869343478576165715064786431316f6575625853584767766d466648316261444363512f7744446a384548413834526c68712f61726f6758543078476c736c3641627a61585a614a7a4663476f436b6c366273726871422f706b67383765323063684a624e6c764c4f7a746e625852494131316b59725866324e6932663645354f33687871724c4870467555764d766e5566706a6b454755656e574e314c58626a306e6b51363756766277323864454141487956304969495a516763616f464d67456a6a7634705a334141324b7933747a6f3675475341335a355a3039793538373461545a592f76534463584e374c5274726370486a6b74396a2f414230794c376d526639467567377a383048434d7a4f544235452f534b2f6d72592b6b623639344c4e442b6f36666d51765a32397461326b576749323434632f666d6e382b3350704741516550482b4b3732512b6766366b4c332b4d623245666f4a2f686c2b624c32346b444669715449423953443533755052743359386471564f46667a574b35616c4478426d583053343071484c334d7554767653374f35367642495a6a4d3830486b674b63454759312f65744734327339764c525038414e56434f70386b43534c69694963684359626d674751414230475246616a4a43547567394673724f725a786d37467a7a585132457442795037466b324f6e374b3237347a57335a784d362f536736735a4751717274564b354b6945744d656e735478755a664e425a71475873366644424b48524567616f4d76715730473973537453785a3439712b65336252737a305378432b6c73534b596772792f2b522b6e5049627132503530486d6452344b4f52696c70336f677355453067315564314b6f494931485564544a305759494a6e5369424c594b414f6736427733765331696a4a516e4e414d464855554a515751757a67614568624c58716b34676561424d65347241374b494f715055376479585738422f755736316f756834546a503448334c7a6e6854417456794f7a6967394e63746945544f3430527a4944397978584e355a6a574d39584a7543346b70476669716c5a4231342b7032346654582b476930783957745346593665724f767943344c4d67526b673958473962765241684b4d755648397856563361774e5471663575764e4a34335a784c786c6767374d2f54527063526c376973463231506253617674334b763841754734773879587653584e336575556e4f5248616732516c62334852646f637063466a763761573375614a64334e56435a6746706c756a64686f6e556a4475514c5933457264496c6c332f535937666450353835524147564e587a2f4147727a444e544e616472756a742b784230687649324e2b644265322b6c7a772b614f2b323469382f7742533575386b5a585463776464697863387a61435a724c4242786274696d754743653336686474325a626156595347422b6b3851725a6b6774675431425a72304a4536755761436742426770327159477142354e6d6832494131554134494c7246343765344446657a324e363366744e394a4447507a586838367254744e2f64325a65336e376b48704e762f34643656735365464444567a5852336c767a6242664c714665433854756437643345764d6b612b4870705251622f414841476a7a4a41634851617476765a326268746b686e2b4337647a66417841346865534d5351357a576d7a63753236514a4151614c63547437676c694366594c3051396232396a626144315449385041344c796374527a65515350717751445539554e536b75434570617355454d69717856477543694355434a63466e5152514565494c7277764345577a2b4334386578614e57714c6d71446f78335169614b345859726b5175506a566c594c73545242313764324d7175522b3157783349416552783731794933774b55484e6159546a494f3955472b65386a46786b3369584e3348717479585446533832456a3242566442717a5a6674514a3939634867444a4a584c393778456c4e3050516c57526b636539426e3054676178536b5a726f613553445a4b7155347a6f5256426762676b4a576d3762427238466e4d414456416c45414b703566424c54464163467475627a58616a4271784377357074564f53433631624f346b496b357230327832316933706146654a586e396e4f4d53786f75335a7638416c79306b307751656773516b4269416662677277526e565a647463314e79576f79596f4d752b32647663527245647758687437737057722f414a567671667767426651504d6a493652346b39717a43334c5645414676463953447a2f414b4e2f6a75694d627538782b6933772f6d58706f67447347435163763270384b444a424930492b53727662573365445851503453422b4b6d6f5a314b7175626a52512b35427876553746797a624d34796c4b32432f56694f594956646e6353756a554b506e2b617539573330525a6d43445545426564326d38387532594875497951643665396c502b6e467a493041433232706134765046757256684665516e3668502f706c6a6e4a4739367a753978623871637a7034414e3855477a3162665133463752622f414f4b4f5063755063766d637159634575464d304739364350776f674b4b5955775469594171415543366e4c7136335a315971797a4b7744727552502b6c644733366a61595273576f67385a5651505a654d517932325231565765314979724c67726f4178447367766c6538727772426345744a6a784c72544b444179397171695558446c427a4c6a76716a5167347271572f554463365a556b5071584e7642706e54337171334d52506167394c59335a6c6d463062643859506b764c51334f69732f67756c5933496346304864317655716937456b55535772706e4647526f5031494f52366c593836426a784b387663675948544c4a6577335a3657616d4b383536684143576f446b5547416356435844346f6b384d4541576f674b394236463666454e75626f642f4448687a586e34395339623662646a354d4c6563512f764b44766177512f7432493677394d5669744679566447657573666b67304737706656772f61737839547432795163514366432b43736b3034615469596d4f425841394b394d7537695a3878345759792b71686c79726c7851642f59612f493154505649763346577a454c6b5461756a56413546457a467673566372674a6f614950472b73656948302b35727475624a712f446b56794858753937755933495367664157457338666776437a6a35556a4867675163554a4433493434714e52424d4d5648554a2b537373327a634c426e51573758617a334578415a35723248702b796a743762594d73757732673234726a52644b524f56416730536b717a4a78324b6f7a4d797135793434635544536d79716e6549447667713731364d615069734e2b2b52324946334f364d6138616436302b6b676b473863536449584b74673775364c494e4365304c30316d324c634977746a706945463761576b74414b6f74534a78562b7442445572483678744475624775412f71572b7548506946624f3478624258516b58636a75516650767644347330447539645a55567671657a386e6358496a4455572b6178655555476d4f366952543470686470302b337657534d434b38304969714451623834536656554a68764c6b635a4538633153434356626274776e463546413862346e544e5533597847414b45345367584f4752536d34575a414a776171705971306c3054627252425832495970356347536d744167444b4d6f6f67686371554b687169674c70525245357367674a5a41384578697947434344696f41324b424c49354949496f6749437665726f576451366b46555947526f6d6b4244745673376e30526f4d6c547a78514456523136622f4142725a3658334d7166544438537546734e6e5065586f326f34596b386c37714d5978455951445269474135494c394c754f43594d465333424e416b312b43437879346244344a64315a7433625a6864714438457a3041423756792f584c306f5759776a547a43783745484d386d4d35316b39754854462b6f724a765054415235316b4e786a78374672326d713345413572534a74347345486b434339564357775855395632656d586e51384f457552584b51524633517952785154566b5636543032324c653368784c355a762b533830614c315732334175574c543467667551644462317879577155424575756462765374304c4c56486446717379445a4677726f454f2b4b7952753846666275422b4b44512b52785379726a5254574d38314d2b61436f345653363164676b4e73544a5143334e79364a6d34624a55334954743169435938592f6b7134337370664549444d36617175556e796f6c7658484471767a4f4e515544584e734c7353394479584d75575a3251587957373779426c31644a7739736b313256756344795163344457416667756675724d5a5a4d585738322f4b48454b6d39447a4830346f4f504f3155386b7451577857325931654c7844464c3555537a75506234494d6b504d742b456c644c59324e3776356d335a4e41484a4e41452b30394b6e7644716a3051474d7a68334c3175327357646a6246753154356b3830486e662f77414f622b564a5849482f414648386b6b2f385a33517271676579583746365357346a5546333975354f4a366d494e436738644430446333626d694d66357047672b50344c73374c2f46374e7376755a2b5a2f4447673936363070794e437135585148346f4c725268746f655862694951484432717339336430492b50465972753561704b35312f6461693572484d6345473265354263437561785874794361594c45626d716d537a333737494c5a33672f74386c66737654353732656f394676696365355a4e6e74395a426e6776543765635141616152534d5547726137477a74423052484855664572707a4d7539554737714e4f39585277636f49596e676e464135716e696a6c536943754d2b373855336e41447453536872726b714e4c426e51612f4d713771752f6330314b6f6e4d7336795837684e4d45484d39637465644153417248354c6b625830792f75542f546a54427a6b757476727a394d54324c7037506361725775354a6f5246636b484e68364c74396c623837645431456654483271736d3433397a63434d494454616834625956507150714d39376331595778534d566c684f7445462b6f42794b5038306b38657246417a63316f6b397531414a544e7554776f666d757a365876504e70634c46323936346369436a59752b546342344950645762326c7456636c62626d4a4f5859726d324e304a786a4d4d302f6d744548484242766a634f6d7130516b57376c676a632b6d5761766a4b6a75673179597871483546634431442f47624f34653574794c5a50303545727469516b796157504c487351664e7437366666325574462b4f6e6e695065737a4c3664667432376b6446324c784f574b38643631364964722f573239625879516349386b477a5561764e4d5778514c5549687a696f354743446f434a494a6f6f474c6e4241487954437456427851353549427064476b6356474b43426850536849736d68616c6349684150493542656e394f2f786f577a47357644566e386f6669554847394d3949752b6f536f47686e4e653332757a743757324c566d6748696c67537445596932424345644d426b6c4534687a2b35413353474a565a6b5a476e354b475a5a735656506e674546305157723469717a487a593574376c544734424b6e7756487147382b7a32307067752f54486d5367346e712b394554356350455237677650677070546c636c724f614746635546735a535a4e4b58464345614f536a49474b424a6e5452564a70736346424636344950522b69657036774e76643851384d732b786337312b6d386b6551584e684d3270436361454855743371323547366e43364455776a71375548507269324b694663454256415157526b5145425245565152786b672f4645685131514542384d554345516130516646414d4f39477553474b6743416b436936477939536c5a614e327341567a583979595651653432313858326c6934634b586a397463422b6d5a397934486f7537304756736d67476f647937567a645735574a616a5161654b437a6557424f49754478527172646c506f624c38316d324736387931704f4a516a4c37655572647a70414e43324950596732575a7a74584e50376d586a6656625974377135474744303731365463582f4d3345596a4565507677586e7657322b37754e792b53446e6d7143504a52415156454855356f4837556f624e414571594641783468454d657a4e4b557a676873304345555a5232547970676c6267676d4a586f39704e74754877466665764f4c7557726746765332545651626f37754c504d567252635268616b44422f7857695677527269734d356c324743416236666d583579357169304849484e5335496d5a4a784b763273444f534237386d626c384658624d33317630676f376d6457564f756d6b59494e593154484e555473734178566b41496a7139366533594e36586c3236795044356f4436524f566e64517552797837463632462b4e77397550622b4b793250535273376656347950637374793735456d787a51645335747136686877344a4c6a77673479575735367861387367654a2b43356c7a3143355772435848464276487265676d46794a493931566776376b3370394665334a59436466567a566c69344c66697136417a745466563863315a613356794e4153442b5337566964753451474277584733566f574c354a72562f33494f6a747656356974316e4831666d756a61395a734751414f50626d7645456c337754435a77644239434d375735483953455343764b2f354636625a324d3465516154633665485975625a33312f62746f6d556d3433647a6454387936586b676f6375366d4b4b4f46554137464d464b685370514c51346f75364a6f67616c42487a55435a6e775369685a424163304d4d4558616843676f674b567543695a6d6f676d4b437573574a33704e4261492b6c5869484f6b643955474a676f69597469746d33324537736f366e6a47526950656779797436564d7148677656442f4864714b536c4a2b4b347671753173374f344c6475744d54384548504b72784b61636e71457072584a42487170346b6363464d4b6f416d44424b487743496a77515370553546512f4641305153694c714754347141745641416951704842413051526d527a3756425442524148526f7a714d794251454d7051496330576f454163465351554964474951444e50457348435867694d58464547713375744741545439516c4f6a6d6e503572435a4f69375651577a7679755a4b6f6c7968676d7843414130514a634b4b595949435a4b4f7068314b4530514445497533596735666d6a4771414f7968645246424843484e51465242416330634b71464b4b49474743684842527972624d664d4c494b32346f4e5769325232524a624432356f533239454754487651577237546d71353269474a515644676f53776267686a676a476e61674473574e55327169436c4167685956436d62756f4336434167496b5a6f47694b4141354b416f594975676e4e445551654b4c674b4f794359465352526b654b6e4e415365394448463255514c3845426c4b724978426a68374d6c4a5a44477677514d4458554d6c304e76707674624a584f446c45466947506567395073765468474a4a6b37664261505744624f33386c326c6a326c65616836686468534d7148464a50647a6d476c33494b5441784c4a4664357a6c79456b7067314151566f756d4c5649556d47514b6f443845653151444e4148716d64304357554f464542643164744f6d344a484a5a3173326b6355485a33556f33494e49356e347268626b4e4e624c3132556f674c4663344642517a6f34496b4e52416c4143704563564347556571426f4671717945674b7335564f48596d69673130506168534962425a6f794c3471616e4c6f44634f6f71536d2f596b4961694d574645454d644e654b68434a69487179516f49796d50636f574f43507a5143724b44334b4f696767696f69436c4251476f516f32627147714e65354239576a45784e45424b514c454b6d57383056507a5652336d756b424a2b5874386b46742b54315850334d784776466441786e637178433565396845654f344879476e42427a626b76367253396d56304a4f52772f42637264542f71556b444835726f37514763526d6736396972796756652b675634724e6136517764614e594a4234494745582f414153584a554e554a533431437a33532f55776f677733496934524159506d7249324e45586747374d45676d397a5374735a6d516f61494d7632706e4853517144736a4a77584f504264414856486971376b6d44742b7842794c6e704d79356a34656246316b6e365a4f50765862755842454179446c4a592f72766a2b41516353657a6c444842614e6a365266335039542f6a746671664875785870724731697a7a7277576b52316c30475462374f3374343649672f7a47704b74456664394b7530756f5769614242554841786443354e6b4a33415046526366314865364a61526a774343322f756f7831536f33486d713972733776715a31546546682b777952395039486e75694c75363659437359636531656b3869516847413659696d6c4252436472625138717847677948357175554e317543776c35634f454d66656e6e5a762f414541446e69536c45643347565a784f6261574b4357765337467336794e552f34366b6b3970577a797862776f6b426b3356696a69515468386b4347656e4438306a31544d344a7a4345766355464e32626c3262697364374369307a47714a344c48754a644f704268334633475261592f5371397674647065306752716359386c6e334e3453646c794a58394d71456f4f39652f783678636a72735844442b4735677552766653727530477152456f753353742b7739516c50706d5862395876576a66513836334b34414d506d67387a49676f366373314347524b4471326431356531456342452f45723058704d5a5173615a5979416c586d764932395734757773527a4b39315a5931616777303867675a786b6d736c7a385567672f554574732b5863624630476b534a773745384b636c5759755077566c525641314d51714e7a7452756263725a376138517258657078554d76683730487a6e6662633765394b426f7857556969394e2f6b653131747549342b47613830634d4545647877516469693253474645452b53616f6f6c3746427a514531484e545433495955556a7a5151466b6149304355746945457a5555306c4748555541785277716f52376c4751446b6755534d776f6769685542634b50775145555551355a6f6d68515242456e676f337651526e514e464356454279354a65614e4f35487451504b5149632b4a4941636b4a4d617077484e5545726c6b7447333373724d4a5162554438466d663953684e45476b376753787853475948657336506943434d415543356f6a346b4269674f46465a434771714671426e4a617a48514b494b355767412f4875536142337177467179526730516770303671414b65543846704557666c3731665a675448557a464268386f77787154386c5a4a34686953756a637436496170676471356c3257733845436e6f7278534754682b4362745659694864415342696b31414a3770376c55413551462b4b484e53565551477951444e484e6b44576968434167735553636b714b416a334644776c514f516f4b596f47314d655256304a61537a396a4c4f2f76544f67756c4a697877514d6d6f7177636b786642412b7167344a7045524c4b764f6f51646b466f7545556a566142646957374f7a393679366843685469364934524151614b53366f69715364677a446a456f2f63524a2f443856574e78493868376b464637627968694b4b6f6331744d3962366a69714a32675453683936444f6f32534a427a557943434f59796464725a37714634614a6549426352336f635664594d2f4d41674e556a514e6d673966734e784a395077626775784141314a775850394d394e2b30742b5a642f35534b6a39504a644e417862426d5454596b4b76552f5477546177434f354135623279536d59674837316e765834786c553078584f766234584a6159494e6c2f634341654e53754c75742b5144694b4b72666230577148482b5a63472f7535585544377664472b5865697a475948686f4573693676684349476f73364249324463424f53754168624661736a50636b3039766371444938634d304443596a676a7242797171436d4555467372594e5855685a4d693448597045673936747433474f6b5038416767636261764a583259422b667656666d30476b4d726f544959696944664357714c52782f4e586d474c4874354659726669624a71354948636949366632494e786e54536578597278426d306347717035697a584a79647757434371384e4e7a566c6c7a5747563170757237307952565935444e3048537333593361427453754570576a714877354c6a36694d4d5672736267595351643361627952694b6a56784b3646726351617078586e72414a697933773652775161726863592b35636a6651366a62497871756b4151342b6171753233385842423575514d4379566264335930395177575177596f4a6249684d45344c7632444b334d474f51316473563537533637577833477132416646487037516737735a6934504d42375672327657584377575a523239746a6e6b6c7565705269476a534939364474365243703979707637364d507939733135716671306957693579576b656e377a6452647848327a515833393565764854466841344661492b59326d5047744d56697457664967495853424b4c716d2f3673496c72636939657842667672326d4d6f6361653359363839764934466c7175626d56796e4e5a74784a343830474c566b6c624e475159715077514669394d53753736587434786b3756585032653331486e394b3732337365584854587451624c4d745059723547697174514642465761534f784242492b4a5a726c3571453472524d56594559594c6d3369773675353047626333794454484e594c3932556c5a656245724a4a70476d43443076706d30477a7443354c78334f6f3868773731746c646a414f3947584676656f4738424f4e415268776f797948645361682f4a42364862623645733846766a65634855764e2b6e327a65615a6f6557627273587845574a584439494d76636779373764474737747765756b6e2f6467756a5975474272673853764d2b6e7a6e7664796273363649782f5976554d49687a6c3148755165543964756a377534315a5566745a6379496c4f6a302b436d34756d2f656e635031534a54577870442b37745144795a4648794a5a72584354645758484d70746349316c6967792f626730425369794358344b383378773550697a4a497649754334515743464764786b6c756265325342626c373042314f446c7a5a4e62786f67793339746374645567774b724d57354c7132722b6f614a566365785358747261756456756e626d6735684f7242456747755954584c5a685356457669514c5632524153674d2f46457545414b4c7368476950496f4a5559493645776750616969424e4368354a68784b49596a675546544a684261414d426d6c412b704173595271555477524e4841536d555a424164544774656157344b384b6f475434646932656c3758376e63526966434f715135424236483054626a623267667175422b775a4c7378687059565747334c586445596a4470354d75692b6d494a514c6c58324b736947375542787a554e53416749494e46792f586f534f336a667a684c344c71744531795750315961747063484350346f4f4674794378717931544c3166334c6d624c63414563437a2f4a5853763633694f6c76306f45334e7a56435949634e324d32433441365630397864476767592f4f71355a2f65674964416b6c5142364b494a6974757833486c30344c4679543235655855494f354864754d46646233416f4a5052636146397738734f43756a664a71516739426233416b4f4b31576477537a2b35656473335242616f5879412b4b4430647535714b30506c38567864747536747843364d4c314b3971445a474f4b666e773936706a6364306454596f4c63715a705a5168634454414952452b6c6852427156515a4c6e705671514f6e5642786c67736b2f544c38497643516b476f4f7864665748556c6344434251655833466b6d6b78706c772f4972484c637974654b4f4b396a66745737384e453436753346634c66656d5445645672715956695456427a4c6538684f6b732b4b76424258496d39755661452f5361664e575176364d2f7951614e3974694f75417174766f33704839786a3574302f3034764676314848334a7468756246365246316a795771473076376470656e58656b6e55624d694d3048577657664c47694f4754594c6b3776655739725478544f53473648725637704673416677796a2f77446c465962666f57396d43626b41436335546a6e324641757a75626e6458503067634636574930415a72503666364e485a782f715331537947512f45393630334c76303977515a4e3550792b6f4c6d33393237366366623277566d3775736155584a763377395542765861633871725072634f5662744e6e63336b6e69644d52395339487450546476744f6f4458642f564c386b486d62657833573548394b33496a737037384674322f2b4c58353965356c47333375667958716a4f5570416b6c75564532725046427a3974364e74397364546d636d786c6774586c322f7069797363546f426771544d356f456d344655594d4b346b344a4a5a70745942515845306646413357344f737339786b71664e42777951626451776955444a3379575057434b657a6f47374b46416539427375524169354e417556754a36362b3156644c6446716b63466733463346426a33456a4b576b71692f76762f4846694a7a39366f3347354d35486879574d395655466e454a5134775144346a424e6947514a716b6e4d6949704b69694966346f474c6849724e54647153636e50416f4f39364a646361446b6677585a30434e42376c3572304f3935573636754248344c3034367561412b414f367568634c4e39536f77775247476f63454775334c475270326667726f5842494c50626d4a4369727654307477794151627079654e63364c4c597678424e7534314d527979575462622f414b744d6e434871346c5a694e315a79704c73516376316e30417831626e616834596d4f59586d717858752f542f566f584b452b3359716655765162652b2f713759694d6935595a2f7651654b556f56316439364475746a6238323441593448536348584c4a66745152514f704869686c5241616f424d416b6f79434d366549795334727265692b6e6e6433335067686967394636507359656e576f544942765444366a6741636c3142784f645233726e52506e3767763442714c65334a644b4d33726b6764394a4e56564938503249546b31514b4842534d7767726d5350456a34696d614f665971346c425849647934482b546268353237492b6b616a3372306d6e75586a66587045377962354d506767355a4c73794f4b494431344a6f306235494868306d75434e79516c6a2b344a437a756b4d6b443064676b6477674a4651484a41477a52663342434a4f4b68475951536a4b526371496768414d5551577877554665354146753141634b68456c386b4a666769376b484e417034497a4761616f5368424479554e45325061556a5551514d6f4d47526f6755476a615430584154676356736e7541625a68784b35674a7853317751646e62627164694c4436634f43706e7570544a6e634a63355a4c6e4f36446e6967376670456a6375695a7a4c6477584e3951762b64666e506d724e6e7642594263645830397034724a4b546c7a69674476324b4e6d6f78346f565152387969774e4168514842514369436469494b414c46466e71674f4a71673348464566705452685475514b564968676854504e466e5141414b775835733253724c3449596f4e55647869374b6d5a7136516c302b6f53784463454662354662747342433066316b2f4259796170345854456f4a647561696b68557346494153636535574330596c766a6b677368616e667543324d54536e3472314f7832593245636a4c4e556248616e5a3278644936704b7663373753483768564271336d2f6a46792b5073793555544f2f485778366a525a39766275656f584e4566426953765254686232747679344e5143764a42774c6b44626f57543237634c6b644a4e634b4b58623275617a796a4b7964526f79413337586b3969716c4456315244385673473546776162767657652f743544716a67675731666e624a59315462752f47624f73706d466e4d6e51516c3043616f766b6f414345456667686b6a795149636f49364277545651306f4a5252676f6745424b4a594b4f6755425a367141714b48496f4a32705754535531505241584569677a594b5a6f486d6759536c41394f4b764f37767a6a704d354e32724f794151575735615a435450584e62702b72584a6541434b35714c635548647366354c667478307a694a55722b35636e65626b3779374b394b684f517757634630596f4153464764466e7179464d5545436e4e5445756a706f676d53676f6f335a56422b4b416c736b4367654b5949446b4645424b72715a494a4c6b6f474e536f43536852417a75673641484651594f45457871556356436737594943516f2b61434f5342555446773668555a41526a52522f715339716255364343744548554a6673514179514e676f536c6169596355456430477a5241476167633051526e444b4f324b6a4950785145676c51456f4d6f79435956436843683446546b67627353736f426d45636e5152754b6b6b483449346f4932717136767038656c327175557531743441575155466a69565350795365555a2b5042434d68673666564a6a374f6747675579354a4a786a706243512b704e7031396d4372766a6f3069726f4f564e784d70614d6d754453575073456f703142424b477145532b4b6a4f69427751546d68696f4643454250536f554b71564b414549344b59706e514c6a336f6f437661697943436c436765415278716f4b6e6b6741524c4f694747615630424b42645131434b414d6f526b6a6867676749507555786f6d6a4352594b324f316b676f495537455a526b43784369414f54516f3663512f37304b71566958514846793145475544354946424277524d6d5549517871676844725861492b6a34724c3249683858716733536a496c715656526a474e446b565443354c4d6f7a75616936426a62457938636c564b325258696f5354584e517a4a37454345497677556b636b4b67555145466b44383145655343565a5232785578516f4544734f3953495352547652424a454a56417969434641664252336f6936434f4167334e546d693641636c43555438314d4545306c6e5163736979444642395538757a452b454f72497a47444d6847455778446c423444477143774632346f47455361784250596b316957475079545163343051597435744c4576366b375543636a676553344a6b544930446a687758704e79486a77494c727a736962647971446f32656d4e566353386d61697a6263307269744d5750566b674569496969796273305a617077654c68637664334d6d783971494d316a646153784865727233524c56617a437a51696446564a794e6b76507776376b4851322b38684f4c466e64504936734b72454c567a654d64734b412b4b5641757674746e4b3157354953504a426968746650704a644b7a6168626149384f537345644f474b726b6775634a6e6646596e6c523256677645557851614d532f73796f6c64596b466b6b373075544c6e334264334e7757725053543470636b464f38337045744e714f716643704e56733250705679332f57334165354b764853463064707372657a6a71746a7150696c6d366539754c39724c576735397978613139633772673475772b533657336843492f70334a456472717237347a704b79314f504875536935444542757842743179417864566b672b33656b684b6c436c314f484266323936433938683830684a4263717258456d74455a54777a6441626844633154636b324368754f4d466e76534842415a53634c6e6236354733706a504867746b5a6a4c755849395669392f56457344455551636d37666b584c34426c694a637574462b70635972504b51775150626b596c2b4b37396d3535746b6950444469764f677565706472303262504135696e61673556344e4a6a693671356c627655724f69516d4d4a44486d466831555a4273394b684b573674786a6a71587549686f394f433856364d7733634352672f794b3950352f486a6b6736454a41394a3976624e4a4b4c47705a5a376536674431594a4c2b366574764c475251644b6f6a30347078505455726b5766553949454d33577a37677a384c64364459546e6d71373077417a3565395a44646b4139485266702f46426c3373664d32313048437037313469754258305733623879314f33693458674e784479726b3463435546574b424e5642587452515474515578374559734f70414765705243416f6f546d6769595643414751515145386b41444645444e5168385543736d42554878516f615a6f4a584645715959494f7941737941555146554444466c4269676e4563386b43673134497378596f69494f6142344641486452754b6253794a48484434494b305161486d6959705a554c494932535a4b772f596f634542516c77554e464d41676a354974375a494e7751465544425062737a6b48694d317632767030794263625778384c38465a6633462b423079693042682b53444643476e325a58536a4959594e3764797646363363416e4f3242784e612f74542b58624a31577056356a3855474d764c48464852704c354c564b3065495763326a634f6759484642626273756463695748784333575a4334444e3241774859717a49576847454b74696c33563052743659356e76515a74317544656c5477685a4163587855384b4a4c644b424a566936537259597035534c63454c635a547044346f4e45646c46684f39646a486c6957376e62765a553771335a6766364a4a484e6274763665445573325a6c5350375530726d78675471416b6634634548474e564b712b396f6c4c5662654d4d6c514751516e76525a366c516f636b45645474555a52326f676d66616f6a6d6751676a5a68454833714d41554367674c6c57436541644b52586b68686869677465716d624b73644a717249335343345a4244423675772f4e485363386b526672723071537679755930514d7743654d704c50724c3178536b6d574b4459626d6f3845764a316c31537747435642734f6b7861574b7a6a627975793057515a45344142644c306a3065652f6e716c30326f2b4b53397274724e6a614479747645524178346e76516552326e2b4c6279395734317150384147612b37383258704e683650742f54675441655a632f584c38426b7569394e5761576453677271412b4c386131556239574b45757246413069324b426f39474f654b532f6446734f726449575064774d6f7a51636a6333355853773849725442317a4e3566334733506c76704466542b613764717a356457785748312f6236724d6276422b31423576786c796768564d61494471594d7a714f635541572b53674f6969413530537656457367434d43676d47434a5a364b416456454e5a5145546576425062347042564d4f6d70515836795769724e5a7748425a706c3635685456583278516178646c6f61615133355952706b7154584e456c716f477247736a324947356d6551565770777a4d6c664a41317962396971436e59705641576273523542426c485a42713239387849417a5858735864656679586e672b49563062326d6751656c38794e5139666d67376a534b50334c6b327275547374554a6b596f4c4c316c77306e6f73567a616b4f526774734c78657456553574687145494f54355567574f4365784f567156567133516165464d2b53786e346f4e7534334d35414d57574b35636c4d564f50742b433062625a376a6548546171324c6d6743374e6a30577861627a356170482f61442b4b446937474d33646e58717476366c6146736179306a6a322f755850336e71466e6232355762645844653965654d35456c4237587a646c75344e6446567a5a2b6a62475147692b306a784d56776257755a614a6371626d337562644c73576238554737642b6c7932736961734d4a5a466376635463734d6b30397a656c48544f5249475256416755436879723757336c4c49737432323263514f7176344f74384e76454638492f6967585a626148696e6b5069756c414f4d46544333474f666136736a63467677346f4c793174562f64305959465a62392f546d75646376384d63736b473763627742632b39633145664e5a4c6d344c74457167337451636f4c7274335668324b6952376c444d4550376c575139554733625336586a6b72705236414566542f53743175486e616734626c2b4f4b554e48753853447462453644702b6b414e327271373044374f2b2b476773764d6265396f6f3966323856336265376864746d3150776e7035494f622f6a396951672b636966677572367266386a61584a4446744137316e394363776c616a4c777959664e592f38714d725168622f57664d397a49504d672b387133575267716454386b385367686b534b6c456e6767655658526b476f67427566536345336d61634573656e4446467755463062326f64564479556a63692f55374d7332616d41644270303661787a566f756c7452775757467a53484655546465495a427663626b4e4a713448354f736d343278746d70533237686952775673657039574251596a54465261376c675530724a4b4c596f4256456c474e5452535054564242546b6d623349616e51647345466e42466d785657737567446b5546776b496533344a4463666d6c785147714f5645423163554b6c325149666d6d374b494151664575332f6a6b44357335634972697936697939562f6a634235426b616172676965774d5543486465584f64735947542b35614c5071424f4f5378796a356c7934546c4a5653746d494d685543714473322f555967365a304b326a64696878586d495338787035653872566133476d684c4642335933395a6f795465474633623359346b774f61354e2b59743235544a2f616661694738756d7a73707a4e4a7930784b447a38626a466b4c6c36527173776b30716f6d5752514e4f345a55565a595a494647726f496155515473335970703434494566336f7844594b48697966566b6758776c45334a477133624430323936684e7259595a7a6c674f31624e332f6a4f3673327a63746b58473855594f2f625642792f4d7a57714e777337726e6e354b364633534d61494e51334f67386c31747476666d764f6d5765617574796c6948434431317264676a544a61726434534c537a586c3746387a4e653671365731334a7a51642f567037456459504e6336462b6e7437317174335064785157694e57676d6a493031476d43555841477170714d715a6f47453631564d2f435366626d724e4a44464a494d37464279393973626534447a3865556c7a2f54647862324d5a787651426b2f4265686e77586e6656625572636e6a3454556f4e742f30766237386566737043467876446c2b78637159336d786b597a4247465255652f39716f73376d35594f714a7a586273657336774954476f53374743436e6165737a634f63614e68376436312f33573570717a636458425a7232333257344a6c4f4f6958384844354b6d50702b77456744636d6556506a795157376e316d57522f6571596572335a6c764c43742b32326c51345066683730573239746e6c456a6b5547432f664d68356b36666d73323073666554653553497166324b6e65586a754c6e6c777045466472302b4f6d33455279724a42324c46767937596867506774414c4541716c34746d46594a50326f4c5a46735062344a53534135534365724653546155454d734856596e5643632b4256453737595966456f4c4e5139714c4c66752f53466e766274793158645a5a3364593148336f4e4a7634766b4f39552b63324f61796b6a4a4341356b6a2b4a42722b3530394b65563355574e666b73586d36527743553333646b47337a4d6f3572447562326c78676c753363736867734e2f63655a534f6143716454696751324b4551706b675942776c6969487951314944493845534341787853344b416f4a7a4b4d5336464267675a45314b4234546c47516d4d6d58726468756f3775476f4670434e6531654f656d6c64503066642f6233774434545242366753667453334a6949344c4c653354544a316674575335654e777845735851582f334746703846304c4e794e77442b4a6d58427637625151636a33725a366465306c6b437a6c2f56386f6c704471366c336470646864746d336344784e4734726c2b753757567949335676474461757a49706468757865694a6b3143446965716247587031387769656b316a4c4a6b7533395676324f6c334158712f554e744431446279686a4f50564874344c77306e424d546b67364f363959335736676256326277503073793574636c4155615949467a5a4167756a676f4367495a6c4246544549756749416473313762615742734e724742704b58564c692f4265653942394f6c75727575564c634b6d58344c305a4a3346777a6e34496e35494a70386d32626848567a575347396b2b6d616263335a58546f722b53352b796a50646273776a3459316c4c6b45486474585163545657417878347242657456317844484a552b5a49686a6e386b485831674369676b77795a5974744d41615a34757441754358534544584c7774755a5541477031344c633376507553754e57556e587050386933586c4162654c4f656f6e6b764c786b785148424633434246574b67716767664c3969674164423255507664424830344b4567476d436d6e496f4943614b4f3669444d55426441466b7a4e536941514b6d416571474b4c48504a4157664a51785a41423659496841492f77414b4e5232714d35524a6f364153494b424249664e515677433032746a754a2b43425a426c777878524e4b5a4c6f5850534e7a62366a41724463746d425967672b35416a756f475543673449447951624e51636b6553416469675a5443696e4a41634f78446b55324743586955454c3052784c4a65314630426342474e44714e5541486f6d414e437943654576696e42663277536b50584e6b48617141455a6c44546745305a6a4f6968414b43454d6c3068475253344232514d2f77436c4179644b6e3730414442514f464156436758426448306d414e2b4a6c34593958757175656171327a65386d71443066714871454a4f58342f466565317976533756555a6b346b71336146723053634151673958733756765a3264454b6b306d567a642f7574447763456c5a72752b6d4842575461694e2f6352316a7065764e423350542f4145386d427533633476474d73316b3954614c7747646666775859763771465342566d626b764e626d364e7a65307877514a5a32383542326f6e334d376c75416756364879725675304244774e2b39656133323446363457777743444a3856486371636c3064685a6331774343693373626c7a71776a785638765335614868314664653362655162774475562f6b7547646d7951655575325a3269784464717178433954754e67627348616e783756352f636259325a2f776c426e4b43696b574e5367684c6c514b436e74676d2f4641754b4a43444d6f4167494c425173334e41346f734751426d55504a5173445653534173706e31495a55555a415370716169474b44494764455264426c4b757751485567366a565262486b67584642487355644247555a514d6a68326f4678545564304d46473936416e6756436f69416748682f46424573707a514138555445414b4d445642415862425254745269676e733655484a45754d3144556f44563649476f51426f796e7751425233523746424b69434130636f736c5a30773663554142496f693365674b346f7677514c494e676a324b4d3555356f434b59495971454d4547594944677032496d76596751676d62715a305244674956514845507a5178524a79515a41586569564d4b49596f434379425262676f51676133584c745854387653414668326f315359726f4d2f4a42554b79414878545136474568513968566b34674374536b6e46734b48436943794d34787256686972494179504c38466d673245692f48745461626a687632494c727579686469343853354e36784b32574b3741753177717366715a6a50544c6b67356c516937594b4d687951513055556452716f474a376b47617142785237454137564345513749643643525076525564456f465562686769416779426d594949636c43674a4a643046486f56506d674a7735685751675a6b4d7179486f75707434523234656663676c766267686f67366e71724e4f6c6e5055507756463765343652697368334d6e7a6267673279664d6971787a6731434d30737235504a4c724d736345437339636b475434345a7047716741644447694b73733244636b7743437242484e626a5a6a414d41367a3337656d525156636b4d555a42514149414b4a6a587351384c6f41424177672b4b597731594a4d453854714441494159736c41616975455152324a44484f4b42485a466e4349536b494a512b465167494e52456c6b45785566504a416e4a4e6b675631486242514171416f493730554e45776f48537478514542304b356c52466e785151344d454752525952635a6f4177644b2f7552415561764a42394f68746a4478534a66675554746f412f74536d5630563858596c31545a7955477146726a524e4c7077775754564d42383830304a6e4134596f4a754430612b41586e3767477150357273335a4578507958496d7875684275734857615a4c54414d65685a37414d437455526e494e32494a4e774b5946635466326a6a485041727679717566667432376d6c3350374547434870356e484b6d4770624e76365843544738524d672b484c3971486e5350544773634b4c666264674762386b4769455932786f4751376c555334645071314d6a492b35426e7534705a4678525853675764325659687a515a7178562f2f41426c3032687371724a765a537432326a6d677a3374306239333765794850366c314e72594733743658726d6365617a2b6d374d62654c796171324751384a64415a62695674552f3347654274754d46615a52344b6c346d4e4b49476c66312f536b4e4a5078556b42674d6667684c71476f7367484d344b4754436c565272656f7953584c6e45397751614a5852486b6835764448425a446537364f2f4241334347494c353151587a4c4a424d505467734e792b4a754a5a4a4a536c674b6a4a4230775268697558367542706a495a6e344a7256375553507147433533716d34426c356363526967353936626c68525a3855356b3957434172326f4868445551426d757a7349675468536f78584c73426a52645061667251566571427743654d6c7956305055626750517564496b6c4266744c6874335945646e76587135577a494f63514d6c342b7a34683272326d303074474a596168584e427a7264774757696541376c664f786d4658753759686569516153485a67744559363479346f4d74732b64554d785736455a4d2b6135337038706c3638766976513259693553574571456330484d74626d4e306d4842644541455571755a746259675a514d613676334c66616b497977716730327164493472772f716c715672637a696348314c32636478434d6d50535452754b346e2b54656d6d4d76756f56684b6b36344642356b7853766b6a4b714f485967413471446b694b5949446b674e564355454861694134714e6d7069556535424834714f55614a55424b474b504e446b67444d56457a7567654151426d43614d6b4f534a636f436532716859314b414369413077524a4b554967736741644f546c6b6c7277553149435347594b6330724934684170556f6a6778553076324949433943672f464e386c47594f5543697176322b3375585a616f514e7743706941366261624f65377543335a44794b3964732f53393573375968614e6b66377458655543773965733074376d7a4b7965476c7774466f37486466384d785849534163396853335056622b7a364e335a31512f58417638306b4c487050716c594e43625941365a6648397143582f41454954366f6b4448474e467a39783652637477303653414d34467775696652397a74596e374f2f494166525032492b4378587439767476467479614f7a78302f4c464269734157356d7963683958746d72664c7436664d465061716f326b4c57346d39323464636a387336727548304952682f546e726a7a39766d67345534753034747057572f49584a4d484374336d796e745a4e374d73686c3855424c3570447a6f654b4f4156426d5a56434238532b586174634e64757471426c2b78582b6c324c5936376a4638485870624e3443414d574148365238304869647762736a2f5763664a5530795873397a434e306b54464469764e627a596551544f4a65434445785a6b72714752536e6b674c4956546471444242434b56557855787752626767556c466b587a51426f794174567869674b39705461674d6330415851414b53553071526755454e456457525555696768776f6d4169557356474343346c3671434178565776334a7462486945424a415a6450306e30552b7061706b36625550464c4d6c63715a4f4e4b7231486f46343262576d4a64792b6e385367394843456263426174686f784879584e324e777a45706c2b715239772f4e56372f314d6265796459724e774b717a3032337073516963342b37696733516e72444b77485431657a4a4142484b694165723449477837516d7478314a53344a4952746671795158614d2f6232436f336376366376624a58796e3342594c317a7a4a61596a42416c7544394b754e6d4632486c335254385062676d4564495464564a44484242347231583069357370394965316c4a6375704646394e6c485645776e574a2b6b727a4871762b4f6d496c754e725750694d637767387a7a5154567a70383142496e4641745365616a4f6a725a7553495141696d7042775879524949396e536f49414479546b344a52784b6742514e716567556a5642324c684153616f514f394553587877566245685232484e424a524c36754b6b54526968715549434364694d516341675335484665362f77416639466a74344463587744646b4159366834654866386b486c346568622b35447a425a6c702b5075782b437733624e7979644d77596b63635639584a4d73325766636261337534473165694a413535682b434435615a634d4552694758744c332b47324a66384e3255663575717663793557342f78712f74415a542f71517831573875342f67364468367961713631644c2b78537a73562f7036695035565a5a394e334e346172567555343450474c3139754b43324e77305a57797538614b32486f587141446d7a3735522f4e5a7478597662576c324a742f4c3334494a6330724e6a32494334324e564463312f6b6730324e3264734e4d412f486d464a372b354c6f5076575044446972596257632b73696d4e5546666d4752716c6e306d71736c61494b51783149434c72697131572f554a783663593070697351746c6b3862654344584b3735333067633162597444564855456c693345633546614c493154646d503442426f686246567074694a785a556e534d4d4373303930496875614464636e43464269466c75626a534b6d7177336430545531575364345370775161726d34614e526d736335367345676b2f4d6f65335967413571452b35474d5a5458543248706b627658636b4f555878515a4e7273376d356c70674b48334c305070766f4e7361626b794a6b6434376b32306841794e6d307a44466c33396d526f616a514e45463171316f4179416f414d41764766354a41626264796c476e6d52456d357232387a7058682f3870494f346933365548466a656c3242534e2b59774b724e4545472f302f77425575624335357351357a427a567672507176397975786e474f6b526a706a484838467a475a514d67696a6c546b6a49466b45444f35795469755352323570784e324f51514568364a59304b654c536f3945474b425a506d4650775447724e5245314a515674774b447432497477526f616f434b422f676d694d565757426f6a72592f6b6731472b4e4f6d4137555441474c6750384167737775454368597179784d427a492f7451555468576d53577543314872665469714a787a51566a42424e4374455443746330413853694e636b2f6c4f484b42556e4a584743575557365a49464435496b356345434f4b50536742495872663864742b5a73354d394a79507743386b5a61686a6776566e314c62374c302b4e717a4c2b7359757734797a664438554759626b6170696a6b357251433975594a41476d54727a4e7264546a496e463171687668704d574c6b494f687359524d593663543766466149624f653433526a5a45544b324f4f6c5939746630456433375658637557376d346e4f654250367342775061673758714669374733474d34365471714158777a584d396133635a32343249636455766773752f774233415246717a5351784f4b35733547645a477678514c7a43694743653145475145734546396a59333977444b45535141584f56465141354977585a6e367159513875337038746d456450682f6175526f4d7168424e426b6e4d52676a433254566e5a614937625431454e6d67794d365852716f4d5858542f74377831526f79535778306e58716957784344317670647131744e7647454f455a4538536535585433666c31786b47584274657257724d4731682b55586f4673325671353668626e4f45394d49394d4a4e346a692f734d45475431583073626f486332574633366f443675593538732f6e356d6652307456656e334e76643761524a74762f4142322f6238467a642f4b4632506e584c5a74334862444833353830484b5a3846706a774a57614d6d54776c714c6c4276747965547262433633637554475a464372504e4d41785a42335958795748344c5461766b666b7544436573735333426137642b55447078434430455a67316458514d445631787247343074562f6d7441764354635548537852785a6a567366594c4843366344525035736e364f396b476c324c386c6d334731463047445968573272723078644d305358516553336d777562596d554f71484467736b44624c68324958733557744a344c6d3733307531667248706c2b714e4b6f4f4461675a5945454b3264755031466a795a4c64394b33466a7764592f683967737372556d366e314449304b4133424841462f324b6c77615278504a56794569566f3231675337436774323233455143514858653238644d48775747315a41614561726f593051615148496570576764505561724e436c666239696833496a30733644543471596533424a4f596a6e6746696e755a457341614b695734483166765157333977412f61755a65335569656e42624c684567504d7a5757365952354f67785862383957444b6d64306d68792b6131546a484a5a626f46534f3541306237647963626e54546d73354141366b702b487751577a76737135587630717256586b6b484a42444d344b464b695339554262535644564444465242416e6233704345534b3051526c475a5242415a49593449456f7552544e41653145644a53686b61684233397663473774753358476a6376334a62316d65326d4a53772f425976537478473165486d56696663765258724233454443744b6f4b3974434e2b33704f456870392b5937467a744a32643779352b463653354a765474314b3349325455784b312b70326a65746d394c706e4159494f6a7439774c67307a5976466d586e7433436670753436422f546e6832493748314b4e734e50484a582b70582f414c75324247756b4f364454737432586a4a715a31785847396132766b37677948686e316a76536244632b584c5249737570366e4b4735326f4c3956723549504f494d6f516932515151316f6a6b67474e526c5653705151732f4a5045784a726e33704d46454870626e726c76796f37625a783052704856395235397132527664456262302b4c6c6555323064563249656a6861703775566d5853587167322b6f37773278356350464a647a30725a66322f6264662f4c6336702f6746772f3866326f763370627137346264527a6c6c377679586f4c30355870734d79677933726b62663953644150332f4a563753334f36504d6d4b47766371626b6675747a3545613272645a38364c71366f6b6173766452427a747a5079576a4c39717432637a4b524f41413675774c44616a4c6533705836365859635079542b713368744e766f6a34726e542f7051634831446466645835585467666b466c384a524a47536a73554270477553584a48553452624a414d4f4b4c55716746473936414768524a644b6933765151384642685652484474515369484a527a334b446b676c464143706969577a5151464d37567a535949366e7851544e57326f61706156554671325247747343673733702f70317132486d4e564d4f5a586268456e70774335657a75526e41662b37735853467838666767733153314f7566366c3666623349367730686e78572f5531505971615267616842382b763270574a6d4568554b714f4b39462f6b577a30474f3446586f6677586e335141316f6955464f7841514647554e635545426a513856434f4b6e59705139714256703265306e75702b5643716f6342656d394473614c6575727a7a51583250516241694e5a6c4b58314e6d75704459324951305734552f694365304f464356624c6e526b485076656d6261593841485947586e66555053685a65554862354c31636a6e5067755a766273493235664a423541676f416b6436616368496b684b376f43376f50785561696a4e696767484651555562336f346f464264454b664a514d674c4946544246694d4545636b3155474c6f44466c42464178754570726477326a7142565a5544494e4d747a634a4f6d6a346f624f4d7054654f537a706f546c62384b44716233644741304f7935574f4f534d70475a314771586d674d526d757474695244546b5679675771567632383262443971447362575467726f37654452312f55537562594c45524336573359682b394265784972384679665666542f4d7445783851396d5861694e5156624d4445674d6345487a2f424131577a3144622f4147312b555064324c475545646b564379444f676a743271446d707a557851526746475237557071674a5a484651455a6f456f4a696d77534a6877514b4577346f5564544e41795842536f6f555256414f7851664253566665706b364350524d37594a56454549397967446c516851636b42537656466e5251426d71692b6155444d6f6f44696f3261434d786d674f544a4d6170696742777851475467383051344344714e56304578636f346c7a7751555a36346f43554a506d6f3957555a716f494f434259344b53484251494a676a676f65436751544254785655514645427955416f687039366a73676e61697a6f414f70564248645163314d45314751425454334c5674396c4b38655336316e59326259447831494f4349534f5363574a6e434a587168306876687079524e694c30434479586b7a72525667505265746e434263454438317a39317359533667475035494f46554b48696d6e45784a425177514e4173614c6635674236736c7a7830315731784a6d474f4b432f7a48366a3456424c394c64754b6f4144346c4c705a336f454773444841305336744f437031526f364d6a576d434235586f32772b65544c6e334a4766555539365844425659637767584a446d6e44356f5651413463314179686f706b67695061706b6f3749496f70456f633042434a714f6147534c4e6d6744686c496a4e4544696f53364153444874515477414b555266436f515444465354676f6858625862693949766745464f4f4b65647a55447164625a2b6e676c6e78552b796f7a3979446d386b32626862627531455258344c5063323759494b634f31446d695846536f51674743497168346345587a514e626a356b6846644b4f6d33466f592f55755a72494c35725435354450336f4c4c68397679516d784372317668514a684d475056385547653647534f74454c57714e555a6251736779315242345a7177325a6773416c3045467042416e4e47456d555a426e4b4267355478496a3271765332536b524c68564263345a6c4a674d3749482b6e34763976424b6268505a6b67456731456877526b36414b435968514833715652484a424d55475566696f436742346f78525939796a38454142645174775543685151456b4b4f3668524b43636b5769334a41386c474c4e6b672b712b5563654b68672f6573555056625536536b424c334c64714634616f4545486d67456f55726d715a322f6772524b6a476945706735356f4d5537556948795a636870527545796f75354e6f3058473338744a63354433494e454c7572716a3453744d626d6d69342b31635335653253365675334b51773755462f6e456d6d437a33376f7476784b713365377457496455757267506171356c6a5676376d737551506767366530674a417a4a785851314e5263324c3277497779785639726463522b5344595a4d5864766d6e692b4a77576353457a2b7a6a3271375535636c6b4667596a554b71654c4442566559336877775246336867676e6d5a7467737368356b336c674d456d2b3349743239454431534952326b2f6638304771414741513852706c775451744764546b6d4a30494b7a4169754b61497057724a736e4b7862726567485246795544627263614f6d44506b73766e53354b72544b5461716e6a2b43625851687355466c79656b4f615556506e786a554b6d34586f7170536a707251386b46383777422b6553786d35497763314a39714a623977546f58575579414a4d5365354262352f366b357678714879584f38317046306e6d47644455494e2f33486b48574f47613556365a75534d6a69725a33486a703975617049444f67424e58437368456b552b435152794e4672746a5433384544323755686756304c6257346d52785753424d523070622b34314371444c753547637956544148416f546d3674743233704b68514b614c712b6d2b6f6979644e334439544c6d69464f6158533570696737473733384c74385367306f7270323774755163596d6938764561574949666974493338724f4d516561446f374953693763546c697533744e546346342b78366a4f42632b7a7273322f584c4e67616e314671434d6166486d6774756269337439354d45694d5270784434717935367274397647557457755755576f764b583738723979553531314b74766367323772314b37666d6272735870795851502b517a6c745a6261634e656f456169637a6d754343776f6d41514b446d4d564f616a736f413643446d69796743444943613449696751374b49475251516c42464630415a466b43557764414b434e555743413141736f55425a366f4d4764414549317751422b534b6943434f6f6f6f554262676f4552586b6c487851456a4a4273796948646b454263397947724e5147714c634541637036474e4568725651444d6f4c59647175322b3175626d364c566f4f5438465259323839784d5737645a47675830443066306d487031734847354c78532f4165315544656d2b6e322f5472506c77385a38552b50374174397869422b35422b534d6a7143446e3377626a746837313566314430364d5a50426f7a587262677a43342b386a72366a7a516362626635447539714e456a72695031596749657065747a3334454d496859743144544d316f73726a4a423748302f303359373231674b3434695150354a727670392f3030655a7372786b49316c616c576d4a586b7474753732316d4c6c6d54454c3165782f77416868752b693548526341702b6b386578414a6271333670596c4d6638414c45456d504e655875677749476566637576767259324735317748394f625348446d48584d332b6b585a454d784c347669677a584a45396777537870327063456561447462494f4f5143376c713249776f50646d75523650737274323262684f6d422b4b3745743573397366367430647766354f67736d656e714b352b356c43354335435577326e7048504a6447787666547238764c684b4d707977317862384174553972743762432f626831554844336f506e557645684b4a5874397a2f6a657a76452b587174584468563472796e7150706c375954305852544b51384b4446556469435a79513643435949765652545456424b596f633033463047427a795141635553464a564c6346627437467a637a4671314856496f4b5557417877587366542f41504662646f61743464637950414b416470562b342f786a6254414d423566595458336f504375365a6266554e694e726349747931513546316a374541664a425375536a7561494955786a6e6b6751366c6379674d496d5a41475a7a6f766478746262302b7853554330644f716a2b785867324b6a76564276332b2b4f2f7667696b58614d537655324e395a7467787555623675356559394a7347376531742f7839533656335671346a41386b4864473468634c52776247686f744149344e7771764a6559592b476e77566f3373774847492b4b4431453773596a674f6141335676693638314b39664e5a544d52377775687349537552316d6a394a356f4f6c633341306b6731795232384e496f3534726c372f414842687542616f47696a397a49426f754b5a494f786f5a676330574941424b354e7631433447446d5332533342474f434464464a5a6e727553667775797977766e784f3478565870573638324a7544485555486c2f58396b646e755a6166445071393635516a523137502f414357455a3755544a366f4870372b4b385a69676d4b4271584f4b6154594a5148514d4a4a615a7037647564325769324353636f3157772b6a62356e38695948387144432b7246413838313376545038647537302b5a652f703233622b497477483572314e6a2f48646862444733725047654b4435793477514b2b6d582f51396c64746d4174516963705269784835723576656835557a622f5353677266676f6f34525042424d4d45416f794b446236587450766431627448416d76594b72365848427a677646663474614d626b373577625344323472324a75305a4263345647344574424e736a554b746b65536353496a564a724f716766735157574e78446352317737786d43724e546a6975667562556f33504f736c70665677493538305933747a71454a73496e50456f4e75675369774162356f52737868307741682f4c5165355678317a6435396a436f526874394c6b796c4a2b4a514763497936704259643739714c636f333541416a4f7675484662685a694b436f353158506e3648734c72794e74696339522f4e4234716577467a55647649474430795771313650434856646d536630772b56563673656937577a486f4d672f774445756675747444627a30695a6c382b39427a59375062783659514f72365a534b4832684978376c71306946636c6e75376d4d54305a6f4239714354716f31417144736d4e466239774a39557150526e5663723857784a624a426e75625854676d6a7478414f68633355496e5346524c64503455473356434964566a63694e5934726e7a33426c554b6d64776e46427475626f2b476c6630724a6376535065717056445a494e524130706d5646425769474861756e73505476754c6337784c4348742b53446e4e77576d3174544c6d417465327332626b3942716670795a626a74664a38464778342f46426d322b7748693732572b473069786b2b6868394f4b534630524967635674323753446355443757334333466f31665069746d317661515966714b78572b694f6c7346504e4e76426b48557558673146347231693535317a5754326469374d3932644a58413373764e72775159614a5879526b6a457652417051717242467947516e457878784b415a6f497454676f45415a30634542537169416d697342376c566a697068564263435063692f4656565545694367597852417977524d774f526431614a776635494b644f5846497a4c544b4148556b6b41342b61436c675252516b706a62594f554a6a4a41305a73475451593471736976536a674b6f4a4a736b684a4b59674d4e4f4b424b41524a55456942696d6a484a474e742b614264655a524a6632644c4f4a4644524c456f47656c464d455452424149347369706852456f4a49454a5a4f694354544e6142744a742b61436b544e5753564e56724f7a6d4135495a5648626d49446f4b5551374d7237746a523164797a746d676c516f357743646837596f67426b434b79457a454a45514e53433647354b746a75705463506d7132686d694b31694751586e65546278507956467935636b58794b447043544c4e425359615639422f7857492f74386635704c776256365636662f452f55705231624f57465a572b334d49505353674a5931426465652f7944616964714d69394a6471394b447839697556367a45797453694d6a4568423453646d554b717076637574754c556f754267376f577654726c3633714a5948776f4f6443617431687166765233577a6c59794b704569426e5642654a6b486b7237636d7757494d4f315345786e32494f714e77654e5069745976457358782b503472694336593535712b31654c4f55486374336d6977396974454c72596c697548432b2f526774566d36594e6d6737454a6b696c56634c2b6e78666d756262764e31416b505261593333706d326634494e343632474b6e6c6a484e59347a592b324373463834547951615461695669762b6c32726f7238667a57793363476e552b503470744f707461447a4f3739446e614a6c61363475374b71336249506c796a6f624c6d76556b4841594b6d39744c64774f5256427859584d6a6c525747356f47704863656b334964646c7044673952324c6b6b6d32644d334576306c423035627358413457667a794f315a42636f596c495a43506167307a766b752b4c594a50755031565078574f647764374a4a33586f45477637672f543764695364346d6f396e57547a52324a575074772f4242664b3642517171636e4c7054626c706f437035563257455a563549415a6d574b54566c6b6e6c61755238594937556f68495a49424b6c46483471794e69375077786b6579713647332f7741653364356a4d43334839557a2b474b446c45436f566c75334f5a3077424a34414f5636765a66343374683133706d372f44487048352b356569326f7332492b5659686f48424238765a693073516a454c36503678365a61333169525965594230797a587a6d6f6b786f6330456c436a684b4139516f5a6b307955456a4a424b69714c6f5243674877515236756979436d4171676a4d707a514a6f694b596f496172723754316d566d476b315a636741756c5161627436526d626a316c586772507662686a706e4c702b6178346f565157475a577133764e494e6535596d346f2f776841786c562f69747364394137656471514a75533931467a354b4e56424b6f4a69615555773755427267554d46455931785141426e4b6e4e523255666d67684e554557536c42324e72366c48623259326f78637553655a4b622b396c6949516a475a3664546e344c6a6547714c6e4242365430336332376475554e58564f754e58542b70623779374a74673963754657412f4e655969564865756144315778757773626239494856492b3156775055643139336438776548434b796d5a556b41616841484b6a555548344b42414b68544156555a5242475578585732662b5037766451463041526766435a467346677637613574356d33637869636b464a78514165715934312f6169374946306e44464d584e5564526a336f693652346547434373524d736b78696645797368655a7878535376534d6149454d546755445475526438554541465552696d7846554543684f44576956363055636c423274687557784c5a633136473364316e444a65497458504c4f70656d3264387a4874696736305a7563465a69656c5a3756546a52624c644f3142527664714e7a5a4e6958684f4861764333724d7476636c626b434e4b2b6a4341412b61354872586f34334e767a72482f4b4d587a51654942644647555a41365469464b6f41364f465167532b436850424158596f4b495a6f4467563766307977595772635a597337646f6f764d2b6b624937792b4c66303479504a653862524852476f474343754a47536d495279624e5653716772757a4a71652f77422f354c7a507247344d4868547239374c304f356f43636e4878586a4e2f65382b2f4b6675515a6e645474526a58425277545642473471664e4d7754746e374642542b4b656f544767537a4e55436a67686e52454534597149426956416f796a494155634b4a71706561434135496c42733143674f6144555541434f6c42445651696c454644584242496831723239786d69736f716a41365548623231326a6b3472715772674446384d767a586d626434302b5336327933416c794874376345486646796973635941354c6e5275533853323235672b334242782f58396f4a7746794f4b38786746394544534769576553385a36783665646e642f676e5750746a3730484e4471496d4b674c4949366d43446f75676742393667706b6c775248424132496f6c445a7143544b4771416b6e4253696c564f78424346427a556431475142755368524e616f434e47514631475a42776d666852416f4c3055594b554b6941346f4b5a737068676747474b62356f4b595551527330536755786c334946775538534b474b42674b4d6743785535714641704655326169464d30424170525778736d5241716a61685264586137654c396544494d634e69626d415677394c656a454534653146334c4d4957712b7a4a7a4236743855486d7a365665414c525747634a5736536f765869446c366a6879574c66624962695053476b50714b447a654f4b444f6d6e4451544569715749346f494b596f307977517a5271773449424a5441494d6d636f41496f464645344d45417a645732494737495256516f747579783166566b67364e6f6d49366351746b506371624f526c6a2b433052356f4c596a554b68736e54434e4d33556a42346b706f797a43437137456d6d5459344c42666e546b743932575a78584833636d6c513051633236584e56532b536163336f6c354949513673684c537178696e46525242614c3255736c426359756667714277434d706d534338546a34704a6462476970787979524b41334a64354b42427a51656e454b4176795157474d6d5a4959464e7163736168575371656679515a77616f34344a35777071534f676d4645447a526442415363304648637142424d314169447055444442417a31514f43586d6a6967506846633144784743484a517951514f367568666c434a415655634b6f476f5a42654e3564643350765448646c6c6d484a524272382f763756544b34575a56594b4f5167496b5a6c4231436a35524b414e563042563038344733535355785a424231416f6a467961496a332f414a4952514855777a49546a704356773155737175636b46384a6a414b345853517a676763566a316f526d6736455a2b5958536d5142624a73566e4630697271436570426562594c5a704a324e52594a34334268376b59434d7a716674515a6a5a2b6b5a4c70656d69786175447a50703675726c6b676245434f6b7571376c694f6f593971444875726f75335a5462456d696f4a31567957693574664c7137716d55434479514965434b416f697a46414170683249756f6744496b354b46736331427a514446513137536933785577775144447655435a6b454146425251567277524a516267674743443054346f4d585165306e5a69374d4d615a717133656c745a7561396c4671453434346c56336575674c74383048583275396a656a696d6e4a6a3755586d6f585a624f666d67395031426469337659336f67784c7567756e4d78366a6d764e6276645375334334784c635631747a75674f6d48694f53382f616333685767493144327851645350513068677357353951767330634437364c71414e306d4c763731543972356c4a5362383048447357722b2b7543424e4d2b53394e5a3273624e73517473437174764346726f686c5874573255343237666e546149465851633364335932574f70796670685833386c645a714d66346c6732384275622f6e524650703746317042756c38666b67716a643876784b3646326e546c52595a5852647561496d764432433252736945415a59385544517678443852696b6e666a4961717246502b7050534b49786e4952446e6c77514a49584e7a65416a3459344c75577a434d512b4b35646d34394150626d756a427a454e526b46766e534a594f785469794944584d7345576a594479385879584a3365366e644a6a39487a514e754e39356b7446703248315a4c504346646550375559484d5a42515472374d67597859463875615456587177624e43567a6a5231584947565367704d79414a44456c56546e2b764e57546b4244476f77584e3347386a4974484242626375456869566c766b785a6c524b385a4d3146584b524a5150493671706454712f593747397662677457672f385751586f647873746c3655414445584c3265756f39794479774a4b5a58376d37724f75677870476756424c2f6d67496d3071712b4d78677372765651486767327875793756564f5434342b33464c35702f636a63766559677061717559784834716748537235586d6f616f4c49327a4b71566952712b4b547a52334b337a4e5875514c49444a43394b4a6a774b4679656f366c564976346539416834496d6855306f596f494643464d464452415166314979695549784250424e2b4342614549413052644553346f4655642b784b365a304251776f6d646b4b4f6747614e55724938304246464f616d4369434b4d676a6c795152444371675a456749435339414f61567943366c416f61396943446b6a5652744972565173676a6c716f425138754367446c413161684b705842466d515278696f7038304f33464133347072554a584a615968795573415a644d512f5a5665733247313275316a475574726675334744796c626f2f5a2b61422f5366737653726575356468353073667162735a313174743672744e7850525a76524a35302b624f73763332776a2f414d75306c626a2b7164674d74452f5466545056595062454d4d626653523776785164427837636b6e625572695872573939493668493374734439565a41664264486237793375725975576d592b315546637a31506d615557432f4755346e6e672b5333334a41454f756675647a473344564d6a50464277505662666c3653517a2f466c7a4d6e562b36335033453350376c6e596f414856746937354e77543446566f4f554854336d2f46794f6b42365a315a2b53356836716f6d6943434c5a735957705331337931754f50506b733175314f374c5241564b326558437a4569646578426f336e71742f6378387179504c74526f42486832726e61434b4846575433526c515944755759796646425a3078624e577a334d6a447939637441776a716f4f785a685369414c6f4e58333138304e795a4179314b54336479374270794d763571724b564f31417a684951785475475a44557943417452446d69485551427171647159423045476e5a624735767273624e6764523977475a37463945394d394c732b6e57784331575238557a6a4c3969772f77434e656d783265334636582f4a63446e6c484966697535326f42584869716231734e71756b6142787756706c45417a6e53492b5338622f6b6e71393237503761335331324e71392b53437a31662f4143437a474a322b7969442b71656b4e33666d764b536d5a6e556355583156545174546d48414a376b43414476514c4b364e6937637247424f654753454e746475677968467848486b67704b63687543736e747a4345626e456b4e324a52434d785131514b6134305170676f325346526767372f41506a3874454c702f6c3731713364494765583472686244642f6179636968562b2b3953463843454846586b6774454b4d797473574a53504a58576f7643426b4b6163552b792f7141364b684174364175546862483156586f6f5138754d4b4d4277586c7435492b61596a6870664f697574622f414f32675a3669534b4d545230466c6e2b767535337338496a765631306d334e6c5236574e565a564e5675302b5a633552414342495145576c6774554272726935783471712f4b4d4969414e4356707348514246716f4b5055516265316e706256507077574c3066632f6167324a352b46627431634e7955495a4354397978626a59537579426a4c5379445a764e724865487970796133695a666837367267627630614e6b47646d39626d42547856562b37736271774443556e484548386c304e6e764c487159742b6e43333559622b70494e3950413434356f504a6945795741633563313662307a2f466a496566366830577858527159742f4563683376324c7637583058612b6e794e32455a546e54535a4e4939314b4c6b2b736262314c6676716870736a77774534682b327143302f354a366673345374625342476c323078365366652f657548502f414354314334385264594868474962344958503866334e75486d473031517731504c393346616f2f3431656a4c5265755268485471664838696737502b4f2b73793373545a76567577712f45666d7535457277762b4e574a432f384163416b52742b4c6d363931457358515775766d2f2b5257664b3330327a62354c364d37446b764266354e4856755a7a2f4145366669454842656a464c58484a5446526d4341796f6751794c6f76314d67395a2f6a31733239742f4d645337384a4d79382f366675644559776a2b6d4b364e7538346b516343314b6f4f6a7231556430305143577a43786561785a36717a7a71635a6475476144524f5a49716a6272574a397978482b4b6f645647394f7a4969314c532b4a306f4f7a5056455537464230504b5a306a6d56785264767a704b374a2b35562b54626d2b74356b66724a2f636737636433747048534c73483461677259526241727a4a326354636a4b334561745661555a5866354676767434526c596d59585070417a376b486f644c3446313572316e616273336a754248564165485469427a43793758314f31366c2f53766e7964773354646a4a673672732b74622f414e4e766552756e7577464f646377522b4b44426376766d34783730687642334f4350724d6f62666433493234734b66477135526e72366a6967306e645a59716b3369634452566a676f334242484a554a556b7a75364243434e565148676745787167676968346c4d454b3449446776532b6d746632506b577942496e72656d663746356f3055636f4e657237666346363653783775786444613779563764536b43786b473473334a63526a67724c4e32566d63626b43306f6c42366a61796a366849324a2f30397a4436754a7759685a7264365671346255756d63537a4b34373359587a4865532f70336266566f4848747a342f4e635466656f7a336c2f7a2f43634b4950516a6432684c2b6f517174377138635730737938795a6b315769313668647467674847745546303732714e616669736c793438516c7558355854714e456e6167424f536772676f55584743447437506278614a68487234382b784831715a45644e77445653754335566e6454732b4173564e7875703768764d7155464a4f7169476b4443716b577a7755514b794e5a464e6a6b6c6c3845415a6c47495230684242415379615746554544784b416a465131716a564b3155454a4977526430473449346f44727170724b464170694f6f6f4a714a5242314a534734714e7751524651596f6f46444f7465324d5953317a6675576145633174322b313141334a306847736a6967362b33394e742b715231524e516577674b6e61663439397a754c6c6d467a6f744670545a366e49422f6574506f75396a744e707574307a42394d4f302f7643767461396c3664627432326a643347716370637366653243446865702b6e5739706438717a6438316831557750785765477a4a424a58526c4b7a5a6f414b654b576153357672444746754a4d6a3952775a425648302b4d51386e56663238444c5343374c5a597353334d4e5679357074412b484258584c396d31623871324147377a372f626b677a62577a473054634d6454595a5949334a43556a4d4845717164786f31775649756e415a494a646b614e554b3231744a33496b7864763563466d745842457677586332587149306558714978663841694b446b3359533871524f4b3534345a72667572344e79516a3456684971554146436a784b5841756d4f43434f2b506169365544323975784e454f67734441594a2f4d4744592f46427750636b6c587339794345676a53614950714e4d45534844424c4b33704e45463231687175786a3731504d6c74372b7530656f47682f59724e706338753572354659355465524b4433337076716b642f62456f4d4c6738636678533779656f3642522f467758412f7741646752636e4e394e4e5076585933467955734b4d67354e3134634632505472454462307a63796256373179706e2b6f584f613776706b5048494376683979446d7973586d45353642442b4c48732f5973653639474268356b6a6f6b53334a2b786458314c64474f367337555647754535305650712b344574785a733536745a2f4242352b3336527537674d6f5739555239526f506979777a74797448524964533956764e7a637657507372475a4f4d716e5042636d3973702b5731774e4c4c4e427941484e55346b63564a513079624a566f4c6865506957717a754e4257414549676c6b48566875744c635078577133764759517232727a37713458704242364958394e4377484a6162647a554e54727a6c76644e4a77744d4e32475947767452423368664d546c324c526233484531344f754e62334d53574b756a6545716c42323454664450354b3250545548466361473570314c5a4863766a686b67325169485a56626e61327477487552666d6c6a75676e2b342b61446b5866386367662b4b3570723953786e2f47622b567948762f59765552753178434d6d5a4235592f3478664e504e672f662b53502f774346722f3158596648386c36727a52624771636664696e6e474559366f657a6f4f4874765237473330776841584c7645346675585547307452476d3747495038495a556259546875424b686978393379572b33507a4a796b667077515a62554a574152624e4d71664e4e49656453362f792b53653031364a75566f666971764d75614e52464d334b41434675464a513676656b7533444552674e4d5864505755645542514c50666a6175526565445a494450636d33343536655a302b33657346333147324d4a4f736d39326d6d636446424d5031565a5532647443465a6c2b784273322f714d5263455147424b37636273686e7749586d764969475959536464717866486c783159674d5548627358524e34723576367142393365306548584a657a2b342b333158704d304249343435674c776d36766566656e656254716b536770566d337453763349326f654b5241393651634d315a626f64596f3244495064792f7741623256367a356349614a444366314c7a4566515a6a646e61334c6b59694e544e38767a587549373174694e316a2f54452f67766e4e32354f345a546e556e486a3730473731625a376577304e716466366a6958354a422f6a6d394d64666c354f3373567a3963725a456f466d72544a6443332f6b4739744452473439667171666555484f76574a325a614a68706346586f6b3243362f7076716c72617a6e50633252656c4976724f49393772304734396332572f732b5835707352776c4532335077644234686c4f334657626d33627433444731507a4935535a6e534d55436a676a326f694c6770547977514647704b474b50504a414a4168526d5231424241575a4178514b636a6967587355464b4b4967664a42474277514656416166696a6d2b53414f43676d557751426c4348716f54394f534259494434564254464138314734494970676f436f666767694a483071565a4241514636443037302b787464742f634e34482f376344395844323456584532766c2b5a45335041343164693648712f71703373394d4f6d7a46744d4f4650627551656c3257352b2b732b5a49422f68466c3537316b447a4e513779722f7744484c7a6d355a796c3150775a552b73414d37635233494f4d41546a38564e5147434435494f676e596a54426b487a7a52666869676944747a55557951466c4644676f5154524248716f376f59596f4173674c6f69527a5161726f6d714256302f544c6a5859774a784b3571657a5079354365635367396e624f44653962374d7531637262626a57337639345851323033784b445a43596e697064314155376c49784864677961634b5578434479482b513753494933554b4358545038416d58423155785876505564703931596c6148697858684a6a53644a7843416156496f67705751544573694179684f52556a57675165723941736552624e77343344376746337849385668326c767952474179444c6f516a306f466633716d556741324a567368525a706b507a7a515a39316345624535696a44346865494d7175654b396436334952327048386f2f466551726a67676e7a5555693941686d6763687149617543443846476b4b346f4a7164544438304741556f676d4e5551674158624e457567685531454a6553616f39754341497536424656487a5154453155776f6963464151674449315a54416f4f6769686f6a5671594a653141336167546d45526734517878514e435446623976654e766d5375646a5658575a4d6561443032336e356d4b364e676b6674354c7a2b79765269344b33486553496579444b57514873324b446f372f314733734c6575645a6e775247663746347664627135753768755853352b58597531653943333238506d7a6c47763670594c6c3776303763625966314974775159525771497161346f5369324b497056424379436b6171474b41734b49793449456852424a4d31464752706b6c5078514679686a516f41706b454b67727a51474b6a6f437a565531664242524157515a544f69494c494662336f696755554262464151564f78526d7851495a424b6c5233556f314d564d5542346f4652546d676d645648637143694a5151686c416761426c4f334a4245614941745253694452596c6b3636646b6b52314f755043524264624c63694d4d304863684f4a397932573561756c636578633664512b43365733766731727a51587a664e563349612b774b33785654614d7767383936727444502b724559554b34724c33643362655a486a2f44786465513951325574724d6a4a426b6638414a514934686b745542706b70454f6f774b6a4946544370356f46734552524146304e68476a6e3936774d756e737930415a6366656736566f394c4661524b4d69797a32596935544a3130497871575a6b4130416873564e41656d48446d6e6842716e424952474a5a326c69677a5867784848326f754e7670634b4c72335a36433957584133747a564a6f346f4d6b314934386b346a322f745630626235494d77446f36614c566f656d436e6b6e466b47526d436d41354b2f513063455a3269635546444156515a4f4c656e784a2f4c624642566a516f4d552f6c536430524455364370307875536b585469317143744e67696d61445071514c696f57675732706e2b4362794547522b4b49414b7376324461504563565745414b494367436a5a424144564646394b44556349494335514a64484371494b425551616f72623664737875704f53774344505a7354756c62523655543461727557647447496270703856734c486858687751655775656a336845474a446534726e54745367644a6f56376b67596e396934322b3238647a496748717843447a785a53496356556c3851674b49476a4457614c6262736d465a562f4256574c776830795a57334e3241476a336f4d2b346d5872676b6a463247474b4236696d41413475676a736155537658676d7077377356496b424175614c506d6d6e4e386c577a555141437465394768557170556c414179496b654b56736a52453044494869574b30325a686e474b7834554b73676531423068634439494373693861355a6a466c7a5958394a706b726f626b78504230462b6e7a42714e6164695735594a3750656b2b344a43416d5a59416f4b5474386543706c614c7346737237306b39425a6b474e6a464446614a517a396d56556f3845434842536f54616549517771676866425233536c786a696d474e4543354938796a717135556441485a466b52547455514b41687956326a6d70356463384548705936716e6b6d7558434b5054694d5677625737334544704e663571713437347477484a42314a364a524e537a4c4e616e63384d5470574b47384563442b7a464365373144464270755835786b38545673302f6f39767a4a54756e4159726d7a743353307055422b4b37587063504c32786d78315350775164497a41564f7436414b3275676e4c6d73307268314854336f495a584231796f426a5663766662793576376f745170627745523831647639784b4d4e4563307670746a797962324645485a3275336859743642773761706655623432384e52616f3666356c56747239574650715035726b2b703776376e6361592b41484642307468447937656f2f585661647a634145544d737149584f6e5573507157356a634e7533332b394272683078645a747866457043427163516c31614b34426e56657932313365626e6f7766716c2f4367374f317436674446336f5630784b47336a71764842565338725a57757236654e5858433357394f376c6f2b6a326f6730627a65533350494442565267424c7378576548537839794d726744365a5935494e4d326961344a4a58347869793573743278366c6c4e3235666c6f686963454854756233365256317173374c636267476432516848506b4564747462487031767a3979645678764477584c395139597562743763656d312b6b593936424e396374526546736d5879584f63794e5572497367446f316e4a5172732b676255584c336e794854622f4150646b673950365436654e6a59455453354c716e4c38463548314f394b642b34374f2f6176522b762b702f62324262682f795348754338595a616b43684e695747434450696f41315367497a51643856424b6968446f43526d6c306f735755414b415a49476854636b484b416b484a45536f554f5345616f434a474a52643670575277515164534d57646b536173686b6747716c6171594b474a4e557a4f4541793746464f61615249614d5543486a78514e51364a466159495a494145796c564d4541487a51354b59555473364141356f4652514f55454a6445526349695046444b71425155315269706b67364130643047555a516f4934554a6f6f354b67346f4a6c524842516d744d43694769675853364a705241635563634542596b73674b5971636c48627651544661646e3662754e3949783238444c546a77487657555271756c59395833566d794c466957694171544556504d6c6e5165723248706539324d414c454c416b66484b5a6b5a45396f47484a61357939587478314e596d66307831412f466776455139563338535036317a2f635438467673663558767250384179474e7a2b59666b7944307739624e727033316d64724c56346f2b2f3936736e3662744e354558747152436630334c5650655077574c616635567464306446384732663471785775353656474a2b3439506b4c557a6c47747566615079514331763732316e35487141444877336f2b475862774b703357782b796e393174782f536c3434662f45506d744e72665133502f69373247693461615a6547545a784b716872394b6c6f6b5450624844505232386b475864333451746d356b4d2f77586b743175706267386c3276386932383974434d34456d3054376e77586d436746416d4e42565271756c715851484f716a494d6f3749437a49484769684337582b5062613163757976583677737838776a35494d6c7a62334e6942724f6d6378674d6756694a7a4f4b31623765543375346c656c395270794753786b49475a7363457250676943692f76514c71716d51515a7355453745776f4b49412b354146415158514b696e5967504e416e69706770383044417262365473787664314333394c764c73474b774265702f7876622b574a5876316a534b594e2b6144316b4934425071387957694f4178564675626a322f46535633796f364234704f6761354d584a366670686c78503746356a2f4b70772b347057517436666d7653776d4c63644a6f4967796c324c3535367276706233637a765a4767376b48653941336b667362776c6269545a457042786a695630722b2b756254302f376938414c74794f6d4d493441797779345657543058617732757738362f534e773635502b6b594476516c6574336966556436347478503943314b6d47465062334942634576532f537943777658687049484e2f772b4b34375473624f4e694936726b7455757a4a64535a463678503148666167352f7051426f325463316a68666c61737933563650555a66306f34732b5a374d766b677a376a62693462567356467549316e6e6d6b4e6a78334e4c444c73586f665374712b336a4b34586c4c71584939563346754633547036525178356f4f4c47314f3551564b714930795a64617a75746e74795a6a584b663067696a726d585a693549794343735677525a6c486f67376f4e663374385230475a594b67587034677048344b4f55444734545756554a546c4c456f6436414876516476592b70323756762b6f4b696e53756c747478486353654f4f646662344c795144706f584a524c672b366944306d38336f747a45533354556771587658417a3277492f4665636e497678375671394e32304e337562646d52614d69785061673366655375454752444c524463366a34783731756c7676532f544c6832336b6d576e78546c48563164363362623154302f6348534c66562b6e79587033416f4f64724e77487142427964572b6962574e6e657a76476b59322b3671376b4e6e7335345768452f7741724b71657a6a623165543959596f4d753233317a6333747a4762776a474d764b6c555547592b617a33765562302f5449376d456872746d4f754f4c73632f6d712f56764f685a743372506a737a36757a38754b7a79334d625a473774782f7058502b57503858464230642f366a4b4d747275342f3858313973716642552b767a7552323979554353435976384179666b7168756f692f7743584f494e6d2b42706b492f556341665a7669724c6e584f3736664c77536a302f676735662b4d58515a337250366f50336865766a6463525041616663766e32786e4c302f655238796d6b365a6468785872746e7549577a4b322b422b645548616a5070633846354c317530393255323851302f6b7654573556695268677935337247324e2b4f4651307544386b486757594d6c77775674384345794d456a7567446f7772326f484275436e59673232623852792f6958583239325675304a4268716c4c344c7a596c38565a35733455426f67396a59337342442b716669744d4e325a782f6f68787a586972652b755244466a326830387655626b714d4b6f505648635444796d4e4971674e315a72516e4a65536a764e7750444f582b3471655a657645435569787a51657668754c63512b5a7978556c76495261446e57634974692b43382f3547337356684f354f66496151746d3039516e61476e613242356e2f41485a79633139754a51644c64656f5239507467335038416e6c684868376c35432f755a376965755a65713233396a753738705872774a6d6354525577394d753530434443546d563374742f6c4f36323973576d684e67776c4956623331574f5070637a343642616258706c676a726b554848765835333579753343383548555368707179374d76544c6630766931566e2f747847446e484a427a39456757373044456864452b6e5264707959437163656e3254684b54384b494f5758436279384f61332f61576f5a6b71445969544d3955485046736d764245776b46305962496764554a6970775147326d426d4f4c2b785163335363555a416d724c71437a4b41655747556b44497950563455484e454f314532694b68645557346b36586f614a686245656f5651636d4548707a513875543969362f5654582b39566d6362636e415163737846447a554d4d577958544a695a4d526d6e6e616a4c4c483356516365517168686975744b7a62743030724c636a43525a6b4749683053584e566f3042694753694459596f4b73324b57515973745549434d6e6b6b76323950566b5546424b504a414853697751474a7169636b4a46796f67496b6b4a6673795249554842414f614d714148696f7a6f615545496273557837464642787951516c6c43564a4b5949494557424e554f53465544436d434272326f4f36643869676759305373692b53654d4a653374374f67566d706d724c6467794e566f73374f64794c7859747a396d56384e3561326a6d493133654a7743432b3173724f7968352b384c6c756d316d5662486453336d30334e32585349434559786a6877584e6a636c667433373079386d6a6a6a575753316243582f7743377433486962667a51566a6369507063725036727679414b366671743832626d3374782f3745414879784338365a6e79524449534a5858396575786e6473334934477a62507a51594e33653834505455736778556e4946494f43437a7a4a456153614b617349354a485161714451545369476f34685647587755424c636b424d6d6f6d316d4c4b76477646416f484d3371556e61694f6141424a5147583471413655616c43544241485a4f4a4d4b6f434a495673624a41633051536d43746a626361714d6c30616e4f59544d7751494951666d79716c46757857546e566745443159426b46596b4941784332374830796537496d656d3378347373576e564c326f752f754e326264714e71327762773867673352466a62523875324b4468692f4e56584c394f6969355276536c315058696b4737426b306b472b32524334424c462b316567736162646f7966564f5575444f2f796f76487a33596864426a674d31324476532b71326567674639574344624b486e6276376f674143455931786669735974656275664f4a6654537178332f41464b586863685a7276716b376f305944356f476d7876584c31306c386a696d394c7333393664556a4c795950492f6b7074396b4e39636a5a6834414e552b4f4b394a366a6573656b62493249414355686f6a484e2b503755486d76552f54356b6d2f61447741694a444d4c6a7a4446313632787554742f5437563973326e7a6935487957543166306754742f65374f746f39556f6a4c323449504f38306f726769654b4944646941484248414e78524d67675343674c5a4b524c4b496f4c49587972376536793472474d4b5a715a494f6e44643568613462747858745842456947414b667a54676739454e304d4456474f397054686e69764f6a6379697445643171614b44304564387a4a626e716c2b45646473742f437a31584a68756933465857372b756944745750567476764f6a6376626e7877423746766a747445746469397142786a6950654d463543634e546b34633154704d52307949345651652b32734c63356b7538677930536b4c6138523648754a376665326e6d385a6e792f7741423856366a316a6633746c4b486b32347a387a70366933733451616f58495768677a6c2f62334c5075764c6a3564715436626b70533979775766573976662f6f333465526379664432375656367a4b35623875374773594e58732f4e4272395249326c6b5174466a4b51693535704e6e73626d3176395231577941583568736a2b43782b74776e754c55444441592f745852326535756269784153616f5159665535796b6452776775644b34446c584e64446553476d36426a2b6134305a616a6a696730776e3165324336454c30484d5433726b78702f4d6d7533434e555361676f4b665774334f63764946492b4c745848624d726476784b55764e593542594f31424e49576d774e454a4568316d3756742b307552326e335746737930392f5967325776553773646d646c6a4352787a626775624e32632b7a4a51632f6c696e4a31323046414f4d55517a3177517777526941616f4745694f354d37304b72774c6c4b3642357841447254396b545a46364e65504a5a53636e6f745779337374704c6a412b4b504a426d6c485357534675395858376b62737a4b41306a6869716a326f49377142443449676768414370716441496f495842554a4a366c4d455137494a57587954525a3234704f31464178487751435555557a354947417951657142494742557751454d31554452462b436747614359305164463237304f6676514530376b4448696f53364a5154477167444642785252366f476877346f36574b4658722b616d4e516736666f3273583368555a396778566e7164776b5348456c62765272597437667a492b4b537765716d702f552f775163686d7851484a504a6b703979434767513166424671494242487a52555a4277676d436d724a516f6d7455436b616356593266636b6430525641434755706d69615547616d415a4172346c506a56526967673748703237307730537151374c3057784d5a4153586a646e46726e637661374d526a6174784e4a61596f4e6f6b5a34344a784b675a5678494f49716e67484341536958356e384635442f414348592b5264383648686e6a327232456853754459724e7664754e78626c626c39596f6543443535706451356331627562457476634e75575372504a424734725a3658592b347678694d41645575774c44553043396836487366497436352b4b64657950375548567478314f566547644c442b6e48555741437953395532746f365463414f5a782b5151613630645a6234416939566662336c6934503655346e344933625a4d744c596e3449504f65755866364f6e39526a3841764e466a6775313636434c7250395258457a5a41774b4859695541654b42674d386b477955444e56516b4f36414f3946436a456f46424d3038634570716c4b427042526d4b6a306f676131514d337651787167314545446747525949594c31332b4f546a5932786b7731546d584c56594264573973396c766f744b456452474962563730487a79536a723039372f44376e6d4879376b664c2f41496e6475344b2b502b4b5772624335634c2f77696944794b6b56366d663841696f4a364c6c447843455038534d2f2b73472f6c663855486c39534971345872442f6867486876652b5037556e2f344e6d442f7976324242355156566b49536b5270446c6537326e2b50625462744b5938796638655864683731304273374d597447454d66706941673831366436484f3849334c31492f705866322b3168594851472b4b30734269457457644241414f684735626a6359544468766d6c6c4c54336f314b447a6671482b4f41677a32766a48303853764c79736d3350793530497958306d4e7875504e6372316a30693376496d3561476d37382f326f5044756f394852495973636b4545484652325546436a784b414652454e6969375955514c6a56535367555145686b557064454667674141525a304f5367446f416f7a684d79446f44456756546b4a436f546b67446346434746564d5645454e4b4b4f314561494469674e57354943714943474342685149412b39414652304546555879554c6f4d674a43674367444242424f6173684c546971385641537a494e316d2b4953706e5264537a634f48376c77375a306c67567532643169784c6f50525767304f6f72546149397977325a786c306b667657714573632b5344524b54314b6f332b786875375a6963654b416d30645365467834395665534478752b395075625139596f6343736351766f573473773346737775427776472b702b6e5432732b4d4438454850774b4a4a5370674541415a45414d366a357155504a42485859324e6c3949474c30584a74774d354e46656b326341427a62444e427173572f6678577932497842516a6164754374495034494b7267347169364d386c6449673431576157426d364442764a68756e4f6934386f3670504a62765553597766697563485a383046384c636171336f7133795755544c3151714454416f4e376765484273565a473449304a584e31474a64487a5a52666955477378306c68562f7853334161784971737076794864774b7546386d4e5358346c425a3562795059704f325969672b53585656314264725844322b53434d59686a67684f7442546d6a47526a46364941682b492f4e4142457969364d5935636b7a6952426c5565315552507172676762795441617543665363454c6367613156777147643550524258634275774d434841396e58486d4445746b46334932366c73316d336533654f76504a427938536f52706f6a4a31454379775154486767674c7148676f5456484e417669586638415372524676575251726851695a476d613952746f36625552774e5547793330676c455662395877565a6149434a414766346f4266763649455a726958747959323566786478422f4a644b3945536a7a58483363444f52455255494f633656504b4a67574e4345476f6742544150556f64694d5252424a4d7a4952424c414a674570344241776b2b4f43614e456d4137554b6c41353663457546636b4864516f496146414645734b496161494953534b6f4f795a4241577a4b676c564251436e59676734706e7a346f616e52726d674a6b2b504657786e72484d4b67385751456945476d5574496f68356c65616f647935775436744f4b43313378514558716b7777514571746a386b444768644b592f53453570554a545549426f347054467530717a44715664442b4b415678556a7755465477524558514b43324b4f736f4b594947636b4936714e6b713252594f364472584c734c6c7a2b67375054324956386654623034366263544d6b5671337a586f4962617a74324d6748374d4659424134416535423575312f6a6c2b52653444486b4b2f4b69366d33394168747938343566564b7675585674794246564871534d454761375a6a49615a436d584259376c2b33456161572f6267756a646947646d50423177765572636a34526767754f366641716d37307765422f42636f334a526c52567a76536c34792f3549486e5058634762727037545448784c6c6956634d4671735867656f68786767313776635273325a6557586b52702f30726c656e3235546e72344c567570435164563237777444424231645174566c68483262765846637a6c726d31566f334737424931565049712f77424e3950756236627970617a504638676771326d7a752b6f58644d4430447854795a656c3157505372476d335276664971752f753750706b4259734376443831357663627535656b5a3343352b6e6745476e64626d35764a6170794444777852306d42773979786a63517a62334b6d37756f7838486934384f78427075627a7936476a724c6576366a54465a4a58436145756f6149447231554b743232346e596b5a773857523464697a34496b46425a657679767a31585a456e69716b58554d55423031644b575a4874523730456a4456534f61396874504c324f324f70744d4b792f696c697938393658596a4f65732f54683272523676764e5457596e70465a6335494d473933633933634e79654a4e4f5157566e5251356f43564d564571416f73686d69376c79674155656a6f68544f714346544e42516841564f61446f78476f3855415a2b354d496d525769335a617561305174524277504e42693871514f474b556e5356324c64735444596a6a4c4a56334c5675594130694a2f554d30484c6c4c4a41794a372b4376756263775763394a71675a3631554e51674f7170556b67476445424a4d3145506d6768624a5351557864426b45444b4a736d7a536749434d304558436d70734541636f4646456c42484f4b6a75794c74696c4a7a5146387767794a7851643855454b6a6a4e46426b45524b4859697a49424a514d6d6569566b455a79695755346f59684272394f324d392f666a59675765706c774158304c61624778744965585a7469676155737a32385679663859326b624f3138373637685061496a3971376a634b6f4b35375461794c7a7332322f6b44724c64394c324e2f706c5a694f63517a6535624f3342556d516442357231482f4744623639716463654278584d326e716538394d6c706754455a776e682b7865364636724445717663656e626265782f7177476f2f57504633494d7530395a3266724d425a767443352b6d58486a4572574933747045323778467978394d7a3468322f6d764e656f2f34744f7944633235317846572b704830622f41434f57336262627a72742b48566d507a4878516462314462613976633234366f4561726638775868534d6c394133556f574c55705236724d675a426c382f7545534d7059416d694261596f6a465142364b4d6355454a517754615877516171434d7930574e784b33626e414f30394c39675759386b5542504c336f6347514f4645644c4946594969544b4d5255495a49446b693667434859674e4545324a5141346f4677544a6d633853674976584a417042557754364f4b595263317835667351567869356f765a2b6c796a6273573466554b6e744b38646868334c645a395475776f54524237654f346742566c6e7337754e2b6370356638635232592b3965576c36725052306e74347062667130724e735762515931366a58464232503867395430572f744c565a53485761346346776654396d4c6c794d727830777837577957536335334a6135467a7a5268754a7836596c4236763150314c62786a43426a724948524436493542316c3951395173584c4d504d47713659306a6b487a2f4c354c7a6b6a4b5a65565671394f334e7578656a50635138794f485a32494f3175353374316174326263544f636648706253446b484641745675774e496a4f4a753350446f6a6735784a37464e782f6c646874466d795a513530487543357366386c75577a717432595243443032357551394e734337656b43596a706a2b715842665037312b573475537554786b5856753833312f667a3879394c5563686b4f785a774e527155415a4144494a7862656967476f55785149784f434a645779734d4b4645324351676f4369635159596f6d79517a356f45554f5a54474567484b476b34494148434373386b34354b655649346f4b7958566c6d394b784f4e79464a78496c4651573579774474336f61546967394e74663876496932357443524831526f66782f425858663830636630374c482b4b5834414c79426f6a685134494f78767638693365396a6f6b524342707074357176592b713771453432597a4d6f6b36644d3669744f316330516b52514c62365a7462742f635130516c4b496b4e55744e41787a51642b48714572596e6276524f59627437635173686e4c623745776853554a7633483464795038416b753568627669466f677945576e2b43382f473763416c46365378516433632b6f51746a6233375a634478446d454c76717768764463696636637847767578586e7a4c494b4f775a423366564459334d664e63526b443949704c324b577a756a4152632f7a48354c693670476a75796d75544d67397073392b4c3175624f4446695062466443643858414a4845556c334c78577933766c4d633272324c30566e632b524d53756c37556f34383048453961736162376a4168317a764a4e545631313933662b3875506870774e465844617a674867616f4f646f30354a42616b6369757a4f3350534a4d377133796949617747626a6767342f32706b704861613269445664447a4a63432f4a50573558525869677852326b4d5a5a594d7467326d306c53523066792f74562b6f57717a67375a6f78755164705242666b67503841626470707a6d4f5a5a442b3237574a2b702b43654679306154684531667356766d57706e7061504a30474b57317467394d695132436f3836554d4f6b664e6c3062305a474c594f46566274682b706941676f74584c6c776a5148666d744d724679426562474b31516a62493651416c6d62636147585669554765454d5263422f685a51776963465a7173654c5558536d64715a4f6b3459633351423563347977566335586e44334f334a31636267617070373663566d6c65746a716c4947493566424134315051352f4644536238764631646e34717237717a7270514542507268674b666d67596262534e514f42393655324a766f476163546c4754354e677445434a4871594874515935787541364137696c436a487a3452715456625a74474f49722f41424b69366341473936436e786b617957566372426468557138574a6730474b616469625939725973677a366448545048386b3275327745695365464d3044616d4254456671785174514745716c387355464e2b634a426754544c4e4333743553796f4b315735725a7841487a56744b695038414b6777697863747a413936637849785775457452356f655a4d65456f4d306871414a365a44465a723975555859304b306b58445751726a712b537259534f69574b446d6d784b70705434706f526d513941506d745a32736a395743467a614632487432494d7275616f58734f6c6170624c79366c316e6e626b334e426a6c444e4448436976466d354d74494650397249596f4d67527757324731692b6d556848386b54737868726966626d794443497557785149577935594169344952473247474a64426964367142644d62495a56565539726d422b5344437a5555773572564f7959306e416a354b52684579384c494d7235497374677451496653717a5a314e6f71446e69677a4978716e4e695a7772324a764c6d2b434370716f6b41706a6275596b48334a4d2b614277565a43656d6c474f537042594d6c356f4e6c2f636955524332644d4d2f77434972494b46776c5a506f6e7751474d69496b5a465757623568626e6242595378376b6e6b794a5a6b304e764d34494645756a546d3674766275562b45497a5a344453442f436c386935526f6d71457255785853666367725a3076596e7951485967556764364c756f66456f53394541444a6d4a397543563143616f444938464847534170324b6471434f794c6e4252386c624342796442572f4a51412b395843484434492b564f527751566954425047354a6d637374554e766f7245442f56677249363455486c6a735037554747704c74696d4d53437464795a62714950755145345338576e686967776942465a594b546b46304978746d727870336b7130324c5567326b6472346f4f4d3746577a766d55574f533033396e434d544b506456596442425930514d34356f78497a534e6c6d67596b59494c4454416674536952695768324969336d6a4f3035775156366b64537468615036533346615956365a4278777a515a4c642b646b76626b596e2b47696c2b2f63766e56636b5a533479577679516550656c2b32426551356f4e467266512f74387474507836756c2b474b74394439582b794a733336324a343573367a5339504d625a6e4a6d356d7456544c62674242753961394c2b322f774449734856597559456653546b754b757a73643763323975566d6c79314f6b6f79717a38467a685a41724c3969444f55547a56307251465644446c56425131455155336c6e46487970384546645561707a5a6b4d417955514a4f6c414454444252686969595367614b614477514c696939464e43584842425a435a6a6d72426666484a557335515162493767484971472f474d523031574e5442426f2b346c7168504453645557786f76612b7633507566543462695047457879656e347277666176533276555933505366744350366f4f6b5579314f3734494e653432385056747471694e4e2b507749792f63732f703371486d767364372f4c456e34424a365876644e2b4f737353476e6d2f424e2f6b57774e7652764c6544365a636d7a51583635784d746c6372712b5374322b717a6f67417a506d467a6433666c7539764463784c5369385a48676679584f2b354938557967372f71573474744d6a4e76677542436f64335176376d42686f6838566e684d517258755162664d6965615765346a714a746859376c377a44514d46504f6f7751615a585133462b355a723971467554524b676b2b43727553636f45504a64712f4e76536f516c34764d4a483871347a61734d5631742f4f4a32746d4563672f4f71446b426b784a77514d6171507851513151376345634b46514467676947435a3873554267676a35495a5655664a47496373674141376b5a444a516f6f466430596b354b556443754b416746546d6f4878436b6b455939694442526c4267676c44514b554369493442414b4a6f384d6c41636b6f4b4136694f3943727556436f36434e6d4645636b45424f43434b434345444254477052714544795145634d6c4e4f536c4d6b4358785146314379444b4d586f673958365349445a43584f5877584b3953646956302f537a44374f4d633952584b33786f5834734f78427a66696a45674273442b43566d786f6d4f6c71565046424b4d6734416441686d356f78693572676743414365554872775538746b43476e596d4144633077694d3073526c785141554b414e5754476c5238314e4e4f6c41704c6a426b3243676a6772504c794b43723850594956474b744547634a47616a315161746b4e65347478347945666976613349774564636a306a703775626331346a5a54386d39436563534a63714c6f623366334e3549784649665448383048616e3637744c4961494d2b794c44347169502b544530685a655038556d2f426341524165514e465a6a4b4c59495051512f794d6d7337564f5656746a3676743777364a615a634a5578586c394264785244526a522f6e3830486376624733366c636e416a71614a31444a6555334f326c746268737a44454c7562443147577a75457969385a4d4a63517931657377736238326a62494d33367a6d78515976512f536f3352397a6542306a446d56324e313668613263427144794f5476324c72536c6232396867426f6747376c344b37634f3475536d6175616467515733393366336b6e6d57483655766c69474978487553516f5747427a4375723235494d77687072456b486a67756c732f574c746b36627a79487858506d35714b4b55315651616658647862334d6f586f66554f6f63364c6a696c5174386f433741787a43785369324b4141317168385644565149496d45632b4b5567684e56417069796e7a5450567768705143517a5159594645305177515138556146514267694d4b49427151434c5a6c4556516476306d38664a4d4f457365525857736b53476c7178586d665472766c58472f554e50766f753974727769576c7751646758376a4d44373154637558434b6c767757697a474837307438426e4b444c43336350696b56614c743630645259787730387678516a4b4d53774656654334356f48732b717366366d474336634a616f676863553259334f7246624e674348745a426d35494e68684531774b5362476979446674666c7470686a4550484e77745535416969424e594e49714f335561726c58722b695241775652336b674548556c4e756f6330766e67565a637565364d513563716e376f75616b6f4f75626837766b676230513347713550336b6358494a4f474b5365365a327167346e71646b43394b634b416e446775653631377136626b69736a494145575a4769424e4b49493644756a79517851516773366a5a4b544455524343594b5a49456f386b4541443151646b57555a41457a616b70776f6f43674c4b436d4e55414561756743694f4e41676749443043446f73454d45414a344a695843445655775152777a714b425353434d6a6d675169364149565264466b41417a4b6a5a49697145713051466d7856396936515173356355526a30314b443057337559567857385842694678746a6665484e626264515a44386b485274395652374f6e6a48537339693577377561324153634d4f58464264624c686a376c5876646a48655754456a7162484a31527574375a326e2f4952712f536b326e71747263532f544a3644326f67386a75647450625854626d474d5654326c65793963394f4736732b62616a31782b4b385955457778533455525a6b384936354d67364870316745695a4663753564336252426d38735078574862577051476d5044334f75747462516764574e58516178414d796c775a354244555a594f6a4f4b444e64694a56425761524541306c757658625667663143596969347534395332384e5464663655474866755942783953787563465a6633666e644f5430554c67304753437364724b4634304b73387477386139714969667051556d50314948704435712b416f564261475a43444e70306f6956414a4b364f3370697135325a414f635367416d357764523664366e6c4546734563616b4943656d67556b5778553038455a784765434357352f7177546c73733068693869542b534a6d51474343794577784b756a64316875415755556f697846554777543048574479716b33573759614866507657665870494a57536339626c4173695a4630736c6f7362667a4850347062316b32537a6f4b52785578524b6a765242504656546d4649384854524771514555476e5a575249764b6939445963784468334b773237486c644a485542566262627334345a494c59524554315a6479356671487162533057677a5971333158645332397351474d38563531304769573675334a504931354c627374384a53454c39634f70386c7977366d706a524233392f734e636a4f31334c68584947456d585739503952476e526565696f33316f546d5a513763636b484e6452516f76775152427331414d314b6c42445442466d37554f534a6b43676d41775555425374576941676356414852416441555152314734497567374949476f6f676943676d4b4a4c6c516f554f4b42736d515a5446423351456f654846526b63304555456d37564847495569675a394f4c6f46426e6f69394544476a705872794b504d6f647142573156434a494b4a594948466b4144346f6848437168514153636e385647486678515259596f506f666c69636e6b683547725044347177584165744c4b36336835494d6776746538747148506d74306f3661686350316a63523239327a4d4d306454396e357273322b7352492b6f4f36424a2f425558726357356436316d4d70457841536d30547a795165643365776173635679377476797a7071655037313743653342476c63766462487a71686e34396d5344673279424c5563506169303362317544474e447754533950755051757a754d30592b6a376a4f45674f50735547635863796b6a646a345944564f56503363317050706432524559416d525059752f7350534c47786a3538324d6d715a5941386b484f395039426c4c2f414d6e656548394f5a5851333371306245664c74734744414c46366a3639467a623234315638575837313536643033435355466c7a63546d357a4e58436f726d6f51795353416f4d39564b7142776769507951555a30454e4d466459736d394957335a2b4b7162676d6a4d784f6f5968427433487064376268775249635972415256644f31366a5454494f3678586f786b5868323151556745383142463642456a4c4e4e62414a4771694470527543316145597478373179376b6a4936704a3579713046572b6141446e6769334242513051537543456954696970386b4564424e69674367434c3139696769454266336f4d78527a5574784d704d45426a45794c59725a437a7072376b304c486c78775469426c785153324131636c61495641536147786f726e3034444a414450534743535a59746a3270745939797176584341677249427850354c4e64743654526164514b787a6b4a46337155465a44557a524e564365434473674c5056456861397673727534726269347a503766326f372f6152326f6a42336b664677644268375641536a71346f456c41596a4e416f496b4949366a3571464549414d614969714944344b4174544a416f4c6f73686b35554f4b41344a516d354b494a4949463057556a5842424b73366a4b4d6f67414f5a5571564167675a3253684f50676763454862394a39646c736259745363687a494e566c334c582b53574c6a416e546834682b574338554a4e676b64366f506f4939517358413862735365334243653431476b6753507858672f4d2f554535756767314c6f506f454d614d6c6c75374e6d58586368452f70664265452b35756a2f714846557a4f6f6b314b44337437312f6157484a6e714f555931586864336647347579756949694439496f4171644f5341692b4b446f77395375513270327571684f65515743454a59736e74327a634c4442623765334f42786b67353467546c5657614163654b374232494e5a5a424e396a6168575753446a697939474b54795a6a4264675761476f71683545484249397944697967633073713971375132746e4354736171794f77322b4f6b6e746b33792b4b447a354c5a4974376c324c2b79674f6d33454d33366b68394e7542744946527862356c427953666369496b344c7178394e756e704d59787a78566f322b6c6f612f384130756735506c534e4552626246644f4e6d3351536b56712b7873584271684a2b34494f494c4a4e566239744d55596471364d37594246506275556a61316e707970795163325669674456537974474a497156313537557630354d37386553706c616e7130753335494f58354a5a324b6b4c6369354c396937456468634a59586f446772423654656a575677544838324876373048434d4e4c6c566b63463647587037645069702b70542b32394a4f6d71447a32676f6d334d555a65682b7867316146475870316750716442353857704e77543234772b70646f2b6e574b2b496a6b6c74574c566f2f306e4979315a464279764c456830354a3432583657782b7064614673554a446e735a474d496b48454159494f524861796e3446594e6b596e716330585a6841516556493971536e693937386b48496874424f6b55427378693946303774794944526a6e7a5759516e4f54454d677a4462615135446f6a624f63672f6574634c45744e575065724c45424b515967494f643971524c70785247786d5a6161422b4b3766534138546e2b354c4b565252782b4b446d52394f6d3741774a375573646c72476b796273585742476f6132705868565752747844524162385548464f787956734c4d425867757235576b615856666b35596f4d41326c73594633792f4a4b647349794d514b4c6f57397462687a493571346257332f706242716f4f5859735133452f4b3651376455697770786239793366326a30363266363936567958366256666b43724a37653171663534706674375550422b31426349656b773847327553502b72385a497833454c5a41322b3274577a6c4b35314834666d7373394144315a474f6d4f416f6776756572376b784e6263475030577a2f384145736d36334637636a54647653414f49415a2f6341725a576e384b515779416457587336446b7a32554358426b2f4e5653325a4a41476137305951504a4452476b576442787637575967367044562b6b56565232666c797864646935746f4148537170324234526a78516355324a782b6158797064793776324d72355967675a6670536e61693354456e394b44684742474b59476367786378433673396a4144564754397958375567304b44445a354c5a4f6374516c486772504a6950465657326f57364f3735742b3142514a585468496772565a73584a79655a64717339467174323752795a5852694c63744944506e7951555173686e61693065522b6f30535441673430762f41437957557a48684962764a6f6733473361714a484673304e4e676e6f6b5065486f73416a616c4270426a7864572f61674f61494e6773573559497a326a696b61647979776953434244772f7052463635777142787167746c614a614a39676b6c746a644654474934484a4962704c36787043736b4e5568417367702f74567949654e79326531442b31364731794262394f4b756c75424368556a634271417a6f4b7a7337594e584a344a504a684176454b396965664a5456474474456a346f42626a4478454b65525a59744850676d6a4953474237306d76435248742b31416d6d4c4d335a307147785776692b5373756169786848563951474357336233552f6f4552786c4e36664e416b353277575068397667716e47427a39676d7557626c776132474f6e7066425752684944776d676f675152746a364166356c4c6d694f45574179436c635256387561575675356c6939554231364451456a33343549523355734248443953613762764d4e455847474b70386d2f49755941387330476f5879335741433379346c4b5a325a6b6753694a42756e4434724f647266752b4f325779412f61724a624b57476e4c33456f47473374334a764b63433942314446582b5471777552787956493274714941386b7a492b716f56336b57342f3841516d422f44564154596165494a4834706f776937424e626844445366345a636b59786b614e2b61436e79424d615872324f7377326c4d6571754958516e435a445147487757573762767a7149416a33494b6f2b6d627753616b68316457533066322b39426e755247584d4a626479634e55524453443153554f356c4c554e4a69526d554670684a6d4d3659616b737470416b456c69333071676946797036697237634e586844413936436b37486a6439366f2f74397a364c73653962726c6733634a4e2f4367594d4b34494d766c7867503668452b376772342f596a787741533364714a734935594b756670774a496d666367317874625a6d455133612f344b73656e52684a7731566d68744e5054445857704c4b794d4c706f78702f43676c33626551617764364941616a574159494733754448434a6a6c314d6d6a416549523675525157614c6243556854742f61686f746d4f694835756b38324d617a69373830397564714d51644a726a79514a4b3563742b417458394371742b6f62746d38776a2f54462f6b74486e32342f5271723039544a2f4d6c2f326f38744f50764b436d31756273574d726c65476b4171793575664d365a4539394f3545336f6d6b343665654b48394358535231436e4a30414e326a5178537a75776e2f7a5734794c4d35697268614a48544771724f324c452f4d6f4d6b724669644462412f6c6f6f6654396b42716c71696552634c596241456a5678375643716a495238516442686c7374765557357552686b6d74576a614e51532f742b39625a7932302b6d59505a454a5274724567384e6365534367786567446e496b357171473333596e7268487534726f5273575848565038506b724b665353477032633047547a6439466f797455484c69714362304b53746e6a697572353178717a4c2f41494c4c646c31632b31426930524936347438555439732f4572574a365a616a5661596279307a5469482f6843446b544d5434634279554e69334c715031636c324c32367369683661765163456e336e4e783855484775624d4539437a7a326c61454c745476572b444446315264467535534d66646967354572456f554b55327941756c396d3959304a79504e6149656e5835427a6f48445731554849687435537146707462536378306a76393636413257354858474e762f63507a53323763376376366d6e754b444e35456f50784834725662757745744761756c627556303042624a5674485455784a34356f4c665069412f54337379486e32356a546f7439756d71706763577032684e6f312b4c346355466c7137624f45494875547968626d6132625a374f6e38566d6a6165594651566f306a5336426a3546736456754d43336178536554614e59747150454b71354d42333733716964476c2b2b69434779314f6e53703976616e3434676b35756d4671334b706550784b726c65747842465544443071314c7775442f4d7448396b6d4f714c414869785754377547577276346f66334f376a435266394a43446166534c77776e436e434b4132416a4942366975474b7a66336d37706159314e6d42564e4431574e7a4e6a6c456f4e5539544e674f51434e6f2b587739797a7933646b346c6c594a35527748782b5343796475334d475146614f674c64687576686b6c6a72627655613633527148505367306662624b342f394d50337536576531326762546247437a6d4e312b72386c59586241346345414e693379422b484e4c6474774930306c67334257476b586d4b64695858706a53314b665a47675155666243526653426b6b6e626a416a5648742f65744a7762797052504f6a6667713433504c6d4449532f5534716779584e7644364d445656697748665533626d756c43364c6c5a4366385130346847586c75584644394d6b47434f307a4567546e314b325731747844426c704e75307736516578504c303853384167427a4a516338326f6756564f6d50496864473573424878455077696d6a73724a447968567578427a3763624c744a6d4f4e56644c61327044704656732b31736a43417879474b49746a464279702b6d6874514157663747346177746d69374a7433496a716c52335a58445847494772346f4f444c5a474d53385a416f53324979507658616b626b33316b74772f637134783175576442774a3244477355504e6e4b6b69546b7a72767832346470525946473561686a454230486e4a61375a357233577a756a31623079554c6c4a45474d7530564258467562614a366d6675554e6935434274324a36424b766167792b69584947354c5a335042634466366c7a4e785a4e6d354b314c3653793631765978745369597961595a7063303234327033457a6375414f6734513471486e6775725059776a55686832717362434e77304c442b5a7967357870544a514c646332594a59466c6e6e747068732f6b676f456d716a562b61667935594251327a334946414f43366370772b337445416134342f673635786933497179643137635177644255545649634755374555455a73564871674f61596f46464d556561445a6f6a42414d4643707059736d6a46384d4d3041436a6a7657725a2b586375433364384d71507750464c63323034544d5931374547586d694a4b3337653463496e33492b52503667666367716367636b46714f324a646e6f6b386a346f4b4f5155433066616e3856507469445642516751537449326e3851522b32717771677a455a4b4d57576a794650743545617367676f443570534d6c736a74346973696d38736669677844466c427a577a796737746d6a4b3058644269596847555844686150425568545747775a3047655553794445314376453354433243486c383047556742454231706c5a447346517a446b675142464854796f6870504e4270322b366e5a705854775462692b4c672f425a6450755465544968385543355555306d6a34717757694d56493236395343734455654b62715638496654376c64626a484f6a494d596d316665684b623969334861775053545833495432634d5166336f4d51496b6d6a3134555638747268565437504b4a356f4d756b6a43716d6b6a426168745a514657627443553274574264425169537a63553034694e416d4d55465a6345705046557134677049524f4b4379454349305478695a596f7834415970346b64794244446a6772784c36676a62746741452f76567341435779514c4670654c486b684d5368315963477856786a702b61716e4268782f4a425249503144784a66755a3765596248386c5a49594d614c4675545642324e783676393362466f303438466769774c7667734c67594c584636484a42664130666d725a7945527a2b43727447726e4a4638577a514a63457163456b497544786242575241315678552f684959464162456176374f7162397468567142586c6d5a4335706c6a6c37696735756a67675478436135516e676748465545497a5242614c49503775434f4c635167566e4f6c526d78524d58555a41434f344938314477795545434541504648414f69324c344968694b6f453074324b56644f34532f4e4151574f7267757a59334745785572695378354b2f6258764c6c584130516532326c794e79474f6271793734645863755436666638416f6e6979366379544673475163714e32524f4a64325852684b51584e75754c6d7061747463444d5336446243576b4c56594f6d62352f705752774f795646624336306f795046426939567548622b6f5175786f385065757062766935485575442f6b6c77527632536347507553656e376f366f776a5233516174336331544d654863736b62735859305762314864797462676956435256632b39765a794f4b44703372374531634c496432415857573371765363796f72504a36744563546b6759376f41594b6a37737375335a32736263613954346a466270656d3754647731526a333446423471524d696f346b6172722b6f656a7a736b6d46527758496c41786c706c5241413551354971555151346f5a4a713549416355427771464d55496c696f613151457567455a4942415755796f6c786f6e6f6747616a315572676f6667674149434c6f44466b5157775154425747495a566d6d4b4c553755413073704b4c4d6d647936424b41454e51494d6d6268564167346f424a464453796734494368696a78514a79515442484371436a50676746536e6935434148464443694173335968704b6b61464e2b534337623354475135727332376f63416969382f47544c7262534c73667078785164713348357250367036754e75504a7346355a386c62366c7659374f3242466a636b4d446b36386d5a6d5654696763586872317a655336413959305161467343586175575642516f505a656b2b73326277386d3530532f69774b352f77446b50706b4c4a4734742b47574c63653769764f344769736e754c6b6f365a534a48444642574f61312b6e3239643465395a42774f4336336f6c727a4a796e2b6d4a6f67374e71316a52623755574744344c4275765562577a47413148366561344e3731766333445136526b4548724e7a75397674662b57646678396d584d76663542743465414755766746356535636c634c7a4c6e6d6c4c494e573833317a64543153505a795761496c4d6949536770347a38755438304771577a6b44546772414d5843726e753359696b6c5a61336357367373554445476a687770474c306c514b2b4f6d3443782f307053444846416d676d7445574a4f6c7665724350657170784c314a5a414e576d704c736d38783644715179504e4b49307751535553575078516c617a566d6d6a4848326f6a57523073677a614b754d384642416d545357714c4354747147515657676774564256707861716d6b474f4b736e4271484256694e5778514758474b67344d6c616a795272375a49457667747a57574a4c61567076696a4c4f415844494f76746f3652554f4654664175794f6e4442584352694938526b7364335734302f42426c6e457853766b746d344473324b7873324f53415664583761305a584279717141756e36525a4679556a4a3644336f4f724c78456d735a6577566b4f4a446346535470567738505967352f726a6d454a5a427775476172314f35747833634a5759733865755046656175576a624c484c755156714c5261326b376c654b3033505335694c68427a6853717331385456536475567339515665464542774b6a2f4142516a556f386b4535494d6f3155634b684247516169674b68775147515161716e596f4542795547505970555679554c7567587455375563306168414642696f4f4b4a716578414a6331476642466e37564245684147434c4976536f5a4b5478514638457054304a536f446756454f53496f676a7145735855697a6f596f43364a4c647155635577346c4245425251306f6867674a4b6a5651785246445242446b6f787755785563757a6f5053375431714d594e634a4d75783257754871397376704f416671433865435169626877795162765574324e7a4d4159527735757656656958504e32554a483643596e3846345939564d31394e395073327246694675335749694432766d676b5936774b46453243634d4b717964305a49536d79436d646e70455a592f4a54794c6668793549796d5343324761724430787279514f317548674353596c63426334397752757a7462614f713657433837366c2f6b5553504c326a6c385a532f42423164337539727361795058584e313558314431573576535468486775646375547548564d75536c4a49376b424d6e5143677755306f49453243566b53674e45754a2f4e4749344b53693155427a53594a7450424d327248504e41754b41716931614936534541695441756d3136436c426445756355414271706748436357356b55423979724d534d51675059706967794e635541526b7056437273676844714f364f436d6c424345434f436842474b4c56515163416f53365a6b764e42665a747864356c6838566f6e6673516a2f53312f3841772f6d7566324975794455643571464967492f667a62414d7376747a51644275687651506f4237553433305762533359567a394f53556c3048536a65673944697170796953357a574e36756e457a6767736d514b5256456a526b386952686a6d674b43714151433650703278382b6656534d5652744e7050637a41694b63654339425063626659573950696e6870772b4b433633746f6767536e7079305277666d755636394744774542554f386a5233396d565637314864587048544c524135634f2f465a44596c4f737939654b444959466e5230536f57572b46725347414a43653244566f6c766b6777666279786a6d6762456e5a6c31784b524e666b6b6e497a6f666233494f534c564f615932753964453766566d33346f5332396c3653624e30485030635549774243364d3756754970314a6d7478704741775163305151466f73757048537a344c5130534e517033494f4a354c306a696f6252475258594667733437516a473343494b446a2b574f33344b5245593058586b4c63685846566556474a6359494f63774f564752466f4573793655774777565452694b596c426b47324a6f7039763373746f4264696d694246346f4f5a35544a644e6172717832734c6d72467838464a2b6e6b7830695137304848445a4b6469366f394b5974493139794576536f68326b2f4242796b5456645733366245314c6b2f70563866546f4156414878727a2f4147494f48797951446c6432653074674e4b49393665466d33623841596f4f504862585a6a772b38745262624870673856346e7369756a70674257716b3274356f456a59747769504b77385056696f497a6f51613847566b4a525a6c4450672f5967706c41686e6b5851754671354448745668494935384d5655576d54714a4c3855466b5a5a426b4a54316d744d31576259674b4a68704c52792b724e41386f366e4759795659456867464e4d346455512f7432496664584251517155416c64616d6148336f424e645059725933627a417974787156594977784e694f6f634a4f67716875374e305631756336667554656644526f72536e50344a70326f7a7049434c3850324b714f324144514c64756143324d6259366351655037456b4c6b595051594a4274354548715a306e3252596c36664642714735774464766571703773584342474431772f4656793256303169614c58627352744235596d6c4544527567754462702f4d6a4d687168567974744768397958796e48544f596442594e744578307770564837474f6f2b2b746663716f5752485631796b636c434c67416f57376543432f37646732716957646d556a30457432724b4c30744c7942414878344d6c4738646856736b47795657646a3756564d68636b34456669714a3336486d507857694d7744712b474b4143334a6e70513953614d576d7a592b344a497a6f663476624250353331436943363373386a3231566f32735939627458537970463578575278373073373044534c752b614336395941476e5671564d37416c556450795763475270716348784b77514a3666696757567476425535714345366167784b764d6841637972495734792f715464736b46486c7a4935674a544577416a467a334c62473571364952445033706275343873566779444848575135426331776f74454c62447151383264773069314f3951573545395270384f394138446150544e30663647476d72397445504a747a616572714a306f364c64734e4241576a4b6744444e4d49323336416163654b5332416648554b7732346d674c49456133566d42527567552f536b6c5974776b39736b6d6c636c49794a64335153656d49634f71694e50354c544677684f5974346d522f6c78515a6f6e5454514350356b516457526a6d325373383851414f6c7879342f4771583773793642416867674d4a74454e516f584a4563314a545036574b416d5a5a562f4c4a4131752f436a6c696557614c754b6e322b61466d567539315369777034754b57566e6247704a596c425a4c68484243516565584a413262416969624e6f454743436d634c6d467558614856674d674f72466c6447334544704355524c306a54395761424c65346a4c5448546c69744d4c647339556f424a455250546d706f6c4955414449476e4379666f692f4c465a4a327254756d757975755951707757597876527249462f6232716767323041533550647a54446132356e7075334f39566e64614d326c2f4b72726671647950686d332f35743044513950494e436457466343724273726f4868726d53714965725870482b704c574d5251425777334e795653544c39584168425a6132386353465a6f614c61534f3543476f7331526a324b30335a46756b687333515a4a7833424a454157356c435562704a316b562b4b317a3877556168346c5a6a44794731676345464e79334b5557342f67703975626b744c7454704373383648414e7979566b6239765471306b475031494b5274784a334b736a6274323345513657476b4d4975516164713052684a6d6a517533746c3349457339574a6269744e71304e583438315759585a5a682b64454a334a6a7534494c6649695a436234354e676a633238426d58354c4c63767a48677a34724b50504a724a687751645350394f424570466b4a3334786b786c5655546b4a696b6174564e30474857534b556f6772382f466e30382f616954564f3955524a566e6d3234314c306276536e66577452684b4f6e6c575342595737385230365948677a71793135756f476248346650337034377931644c5245767756683067562f6167587a4e5a7254464f49435138576b436e4e5548515a314f5465334e53396341746d514c53484a42736a5a4e7361497a6b33367330737264787645526b372f414a716d3363687046754d384d355237306265316850787a4d2f676755786b332f4c4c6d713569393956777948753936302b52444d734f48742b4b6b72554f7251472b5344434c39793051424e3863565a3933634e5141346f6e75576a49614e44524c64515655746e43354c714571347367302b6663354a6a666c466953466b6a734c63616d546345786a4f4f667751453769556938734f4846316b6c4a7a78567335617a315a724f4c4675354c55515544692b4251524645773347743436437778354b6a796f57367844412f715779332f5469306837667351416a537830707054674763456b6e425356776d704b496e5576516a385546636f51667063502b4365456266307637777249324153535a4475357049376145432f38417063494c4937367a594f69576f4b663353775a415342493676316432534273786271713374785765646d4142595634494e503841526e4772784a43716a61467750376d5763625354454e5476573633744c6b51304841514c356349422f6e56567a6a616e4c5542324c53647463704b66666d736c79526a5454526e37304666674641357a644d623078487141594b75593167646d706f383151596651535731494e67334975675259664e5743365a6879422b43353059516c6871632b347179787174792f6865734f4251644f4e3241786a324b73796572647a4b695639754f64416b462b654d625a504b525a42706e47544e6c3263565364704d696d6f4957397a637a73482f3841534b303770756d514d5a634e5770426b6c5976514f426b4f53467964774634786c68774b3645626d677445365743736a366a6367474a667551636e7a356e2f707a4d63364d6c45355463614458365375326656596b65416b74324b7547374e346a534e4866556e6767356479526a39426945504e4d324169343472702b5a4c557842594b536e43515932535278317367356768694147656e663370784136546b4858513057682f306d7a724a316c75524d2f414d364f67454c656b39502f717168456d524a78376b68745868566f347175344c3446446a7a516249784536364b747064576a62435a596a53547758496c39775765354b744d56733265337638413146786767332f322f55584a64567a67787766715a734553414f6d7642673651334c596e31416e6878515363496b744f4e54374d6c47316a4d306f4d6b317744534a6c2b314b4c3970712b39416e6b337764514d5332437833724e77645678686d75754e3347465a516c4c2b586769665562555430326a482b614e6632464277345849523842723246617264364d694e556775754e366359754f4564495a4364754534735969754e45484f61314f766e526a38303176793842495348625369322b5859734e4b646d4a6638415348373254433374706e5749614f37384546455a57515845594f39576c2b314f5a6169576945387476614d6846673375554e67436b4250443666785042425759444d59346f4730306348516b44477042374d31554e774b513875656e4477356e327167486e2b56497938754a626971626d2b4272354e7475556172575932645856485532576c71717933656a45394145666967357633656e2f70415a49584c39753450424855757351626f5967414534724c50306f584b6773516735623269386846323449783877416d455a61696666776f75762f61544c47544e77356f5439496b414362394d71736777774739754d59786d4232666d726266334d43302f4d4d5734684e396a5a42306563524a7354636f44795268746a434f6933644579514e4a314f4167736e434644434d346e684d7656567a6e66646f456a2f414575453179787549454456625048536131514d70484362456336494b4466334d6a706d3338324353596b635a536a78306b71796479644e5a424c357964565071714b4632354943784e4463754d727847364d4e784a6d2f536b694c6e306b36516a4746783951593971437769647a704d70584a4e6d574345347a7730536f6a62735469432f54584c6b686369626c4979596a4e71494868435a7149794c636b78766a36777847584c3234726e6d78755164556274522f4579614e7538664849367662336f4e6e6e6956546a324a3558546b7a646f5759576273735a4e52704d6b6e73592f7331494c54754c6a4f444770506957652f7637304a5a442b564e483075526c30676e6b342b654348325630417869477239556b4649337378314770504b71304463584a66536f6474634c474f5366794c6d7278494a627558535270302f696c6d6238336c6268626a582f5638565a6f334166524d59756e6848635338556e2f414a516771746e6345646472554f4a4c4b36494d76704553636736736a43394931504a4d4e746367657244742f42416b6933307550636b6c4c54454854586c6b6e595346612f7064566d31646e34634543695538686a5171333761354b50306a3235704474376b65714a4c68562f3147774b445a5062776b4b6b4b696670566d5a3179772f67795645486a6b2f4a5757373177504a755269675365797457324541342f69536978454442774d59713033355344797972705663723842463854775161527472456d6131454233704a55376e6257346a5341496a746456324263665754374658586f76484a30474766702f55537a6e4a3154503075522b71507657692f596e4c775931564d396e656848586338485046426875624335624f6d57584376795642746e4e645541435147504c42614957724c6e7a4c49424762353969446843444657366147525858387179414e587345766b626155684a36502b6e45494d46766336526b3668646e594c554962654f41532f30704e45302b434357357a454b6d507756674568563665334a5757703751782f715361512b6b634f3957782b327846653271444e356377306e69512f6172526575436a384d4675456f434a6a47414c385576423467424258446458694b5854455054704748617266754c324d356e3239367145497979596e676b766e53517851504f3339785579722f457150737a416b7a6c3349696442714c47706f72504f685235636b4757634933414e4f70686a51495132766d6e674d75433055774d6f677034326f33686f68634e50306f4d33326c754d6561595734446d727276706438596b704c66703569484c6c4249365939516a33647145676351414279576a37527a547534716168716558636779534771736d57616475565a4e337271506175456b59707862747a6b377342696735397578646e347852614a325a79696134654661764e74514854314f716a5038415246337937554762376433314771706e3666726a306b5077354c564f6279384b714d395745634b636b464e7a30746f76524c39704b444c544c6353446e512f387549532f6454774550676771386d516c7030767a785452675a6973416d6c63756e4b69716c6575323859303435494a4c61787a70464b4e7471372f6b724a333768416650344b43524d6d4b4178323973595a4c5239765a456361746a6c376c5764726e785048504a4f4e74716b7749514e3972456a7141504e5658647544536958795a43356f4a706958504467726f6b6655596763542b43445047334565494a70517478717a4874785668356479704c78793144336f4c664c7452384861645743424d4866534b71737469555978656a436c6662396943347768634947584a676b7557486d65417734717033642f6a78544335562f77423642627533755861467559576565306d37766e526244636157436b394467747051597674627072696d6859494f4861746f6e6f44517a5650686c326e346f4b4461786f465649615672646e44502b616f3045683876785156676e434b736a536f7852386768364d36756a6134342f6b6745626b59304656594a475250425151455157396972497870794b4154446a44704372387374584f764e5845565a325655336169444c497451385669766d713358365359597375664d75585153416368625955476e4e595965494c56473643656543445247546e53452f6759716b7964676e456d6c325a6f4c48414b72596876656e695931357173315055794277324f504832354a794f436f3849356533636d416b4975677a626932316331517a5a4c5664693768434853583936444e4b745168456b6548337262306b73426a6a2b4b59576f59754232494d59743978544555654f43766c47496b3855524b4c34346f4d686c4a3053532f6174576d3261347956676a627759494d45346c6e51694d56753030314d79722b314e7a4166676770387673542b524c4a626861456f4d4b4e375553546764546a6767792f617a42624a5579742b57574f4b33794c566f714c70315a303936445473623547487379377472637a6c6236386543386e43556e315a4c7162612b41656561445a4b6e55633847545770617662354b6a565230305a514163344242306865664842474e38634772386c69665845414f4834635062465148504948336f452f79674752737a79415139496c416d4d7a38317539527444633754337365444c67626163726254647450692f4e42662f6b593158347a68574f6e78596a4e635543764e62626d2b6c634c544c7746475772616258613773694f73776c786f79446c78755369466259766d4574533746372f47626a6e795a786b4d6e70324c4250305064774c615069673252395146734d4778562f7050717768656c4357467863772b6b6234482f686e4c2f537272482b5037795a44774d4f5a51657033566a55506d7650657262653347426b414e58506d76543765786446735276566d4d65447269663544747a354a6e444a74545a424235506d6755464544454b43764e42544a4245614772494b4e6936434f2b4b6967357149494737314648544350464172344e696d77716c4155795146364b4d3163556134347150373041306c46422b6445784947434252524d416a5134346f4f414b494c426a774353644367445679724e55546a5630434d57644b784e51726a707847444a4e4456794b43765367617132554771634658685642486646436d615a7a33714e52416a4d6a3830535363634543486f676d43593155446c42383045783472525a3355724a654c4874576673514134494c4c3136642b6575654a53446d6f4136684b414a6d4b56364b596f434379424464714e4d6c4d4545666972624f34755767664c7a7a5664575949646d5343544d7046356d764e41304b446f6b6f497878524a7a55346f4943376f5955557879524e41674359686b767952445949444334594634725662336b674735724a326f34567a5164534e324247715641726a41584b7871754b35433057747a4b4b44535270346f366138554c65366942554f726a4b4573475156615a4a6d49476e46303536636346504c37676771384b62716e5845712b4f32314176524d64714268552f71515a7861424e52326f584e754d59316275566b59744a6a6c775630764654396944456245322f636f494f38704c614c663155435532395859677854694c6c736759346a7357435467317843375274313461636c7a4e31613053706755466c753971447554492f4e57584c6f635537566a685054524f616b467767305259757978334943425638447077795358686d676f5851394f6d7a6c3167426233726f374732384548516a65634e4a5757346d586573516d51572b50747756734c6d424743432f5761694358375958534a34484833496963626b716a4a615951627856434249577743446a58677262306963304c6b514452563335794d36634b6f4d6d377441316b46775a6a546776523369397669337658437632794a5671677a34736f536d6451784b41494f3945574c49436d4341746d70467767364f43416469504c4a413838555456414a556f6f69554839364347744555556f51466878514a6445756f475152744b474b6d4e416f674d545771696d484e424145524a46434b41597069414d464b464453676c5545782b536a5052424d464851354b4d314f4b41696f55624e38554b496969434e3730486f6d634d6c5a304541516f37354a6e70564b67306d7849436d48765347305278585474325242316235554d636b48474d4245385637545a2b7562534669324c68306a5470367175335a2b78656575374b4e786d3936413272447179516568752f774353624f46496b79663945572b624b6e2f3855375942744e7a6c345678593763596d4935426c5a47453478364b4642316f2f35545a4d6e6a596d59357931666b6a755038706951667437557458385642376c782f4b75334330794e4f595448625348555a44546e46754b444676647a757432645637335a4c4d6476644654484664614f326c536371736d38714d54696734686870785238764c4e64535675754135464c4f7858476751637751794e47566b4c426b2f4a64447952487165764657426e6f3155484f45514b4e3756513869512b6c7946314a4d6568756158564930694b3830484f38695571616170664b6c4573793744584c6b6e6b59763841676f5944444b69446a51684b514c5643413653753259616d4f412f4254794e4d61737a76564277355277476d71654d4c6d494861756e4c5337517277546d4f734d616345484d387374715a2b535852496c79474b366b3747635a66696c46695a4c366b474345377747624b7332627059466449575a5641343438665a6c4e427749627551637957326c45386b6e6c796b386c31532b6d754b704c6b5670564267466f346e424132364c6f366670796f6d38714a7948356f4f63335367496e42695175684f78457144617a62566b6735356752696d30456836726239715766454b5332383442426b38755244737734716d56755842622f4b7567615a4833354b324669574e50656735526951553862636a5130585665314758584a686d395649372b785a7241504c6a4750356f4f55624a43756a734e7a63384d4a532f6c44727044316d45547169432f41735169503841494a6a4750664536536778773947336b782f7853636539496653397a45504b33495a31697533612f79694a6949336f7a635a786b724a66354674626b54724679764771447a63724444506756546f626d765479762b6c37676b6b365333315553615052342f57335a7150344950505168723649676b6c644c622b6d7768487a74314c54776a6d56727565713753304e477a73755239524873567a7061373068637559313653673158642b3352742f414d4f61706a594e79526e49312f6954655341664c682b355766596d4f4c3971436e79394a722b3947467575715765533079326f45616436706c6245775145463175555253694570653871727957445a4b51323766567a51512b4a38304957376d444273316630366e722b4471546d5965487651562b564943745062337154745478684278543936736a47556a584276624658516c4e694a462f6d6735374d6168696b3031313542644b63745557354b6d414770744a3773507951597a63597374476c33663264474e6d4544553969742f70366e447937542b5343697a456a435a5a54535335426268774b30675249636875536874686845556442514c4d61567172444332426d706368706172392f77434349746d4f46515167625245476e42435562593473797230586a53334b4e4d76326f65584f465a4e586755426e636737526638464e634c6d454d56504e4d756b596f776c3563745970386b454d4e59635077536d3257782b4365642b374f6a2f2b6c47722b4a686d677050585358644a45334e5059663031523832583079315655747a7545394d6d5a41304979646f6b69587a4373426c346963454c596f487158314f567049685854516f4d756f537136736f5046676c6b5a6954455048334b4458453951514365695461554a576a3952787754796c476749442f77717935473144726e566e6b7943714a4a4f536b2f46555562484a3074793762664454716253472b4b47695a4f73596345435276564d5446794b75366d72636d4c787478626e69722f4b6d49366a68324979426957776f67784533355932327069565a47467a4879346c61703369315a7566307978556c6350694c6b6f4b6456794a6352592f422b7857324c39326b69314866556c6c4b343241507a53534d7757474d6136736b4737726c5752393146544e6f3146507857632b5a633672684a633130346535435634793030646b466d706a453459307a37556b62356a474a30616a67737372686642754761517a4a2b7169446f2b64633841384a38504c334b7155784773797338624a6b4b794f613151744671395151516d764a4345415364524c2b394735626f444156656b553979486b5952784438304538754e6358567a41474d682b395a52666c63364e4a7172416278424d4d4f6143344269424f6d6c2b2f742f616c4c6d4852483969724f34334163467555677249472b543174496354526b44536d626d4d6345504b6a6367586a7070336c58447a4255302b4b614a7279342b3243444d4e754449414470526a74326c4578777839797475656f32344561424979483666435549623757305259416c687131503845476156676b36734d314957664c3866683858597270453341382f454f434a6b644453714547532f704e5934356471714562656e726550385752585246734842744956643762516b6779526e62746e704a714d41725a58624d774e4d326b50346543506c74476b5155776847356a436a6f435a744b4d745a492f5333795443376170556c43336136543079354534507756646259654d596e735158305074564151424c48486e58325a534a416a314f2f44494a684a7751446a69616f4a4b544f58784b574e77466f44507554517469555149753254725447324d574842426c387a625436623146594c4f30694f6a5533484257796749677341394b737170536c6c2b3449453037634454636b596a4a58697a746f7359467848323731584b774a78502f71664e56665a783074716b496a4a42704675312b71696c4d584a57574167543046354767425073466f74514f4a49302b334e414352556c5778674258412b324b585671666b68346964534377796942306a712f45716f695a636c795547414a63754277542b644f506741504e416d71584d38555932767159414f466443643251306d6a2b4a6b326b6b565a7833494d3473536c68552b494a7257324d5a79426f5078566f69514248343079516e61756870524d54337656426635636645573745447069444a59794c6e655167444f6a4d677638307651436737315639786342306a337170376b77533450636d684a6f68672f79515035686c58685165324b6d654e465635706f4e4a356e6d72584c65476d4b426445637366704b4e325571526674546a6378684578454b355a716b5338794f6f576e35762b43436956694a385166344a72573268696e655676784175636b5958674b454f3642703251593665583655386241696151593856646276785a6a424e4c6468696761467679675a476e444a56334c7765555a4f423831524f35634d2b6b39464f315633764d78647a6b67305475576f644e5a4867613936736843467a7734726d6d345a6174524c2b3544552b5a41397a6f4f763976617759636b74793377686a376775543974616b30632b4f704f4e7535365a54484a2b6e39714466637579724547736d6455544d7935683957585970706a627271797a56634a3830424175526379423676717956676d514d473745317554316e4c6f5031486b722f41424457482f546b794450474a6469427a2f4a4d476a574f487954796d49352b78566475356268543243426a554d50326f5374796d30524c53415831484d725443554a7963477547474b726c624569446b445369436f3237636a69544971794e7071737a30716e74474f49694438304c6c325776694167716a4576704b614c53373831576439666a494452475135596c4350714e776d6c6e484235494c4c6c735531664243356175533652344a43715562766559434e6f562f53614a4a333932517a52416570515a794a6e5343655a577135634d496c365672324b76566348584d676b346f78755850426a2f41445949425063334830364f6e492b33354c4a5064337868344834594867744d626c7a5631424a634e30357869523468322f6b67577a7637735047386d77624d666d722f414f3569354854706b4363614657324973776c4f4d7536717369776669676f38794a3668542b5a476344656e5751772b61756c62692f5646777134376542632f71376b476556677844536232354b737a6e453657316367746e32647142365378566b624e73304d6d4b44434c456d316558452f677441455a394d4c62444e2f775678324e7545762b575150444a53355a30766f6e4c554f4b445063737745694e4e65334a5a5a677a2b6d5838787a577652646d66365a646a6e77356f6d33755a6a53664c6c4548426d596f4d4d4958517a43763857436e6b33443139497a385653756c485a33596a564932347a344f714a326275494e70776778616274597870536b65617432737433416837555a38476f5564642b313955487a644e4737646e516b53797054346f4e5033472b6a463532524350383244704a626d2f4f4f6e5149792f567164445468475a4c503271307a735238594d6f6f4b4c6c3363454d5431483568475677695845382b5758765353753751357a7862716971342b55346c456e334e3845476e54356a55596a3467716f6265654d492f2b7471716e7a497a48544c397756634444367a306a6c67673646737a686a487037566577454b414c48597637646742507134454c54473944434a6f55424d7238536441384c507957572b4e2f4b4c5048764656743830783654336c4a48646c2b6b6976366b484a4e76654354344447697338712b51356d3739793673397835636573783474464c63766934424b5a4163394c494f634958375a46536639574b575175682b6c3672554c3973644a4e666a3249776c4439544d6777614e7841645563632b4375686333543959374673382b4d73626750503841596b2b373235416a4b56663553454568637647545841572b4b76747a6a634a306b724e3574764746416c684b6730767a4f61446f6a564563534f437275334a43576f4d636d4c597250435a6e693738363470644d6f5431534a624e42624362566c3038556c3365376532346b6534444546474c5463664d4a626b4c55686858434f6f4f67582b35375750534e6250384153422b4c49663366615241704e2b6637456b74725a2b6f66686a3271736a623236475231446862514f665674522f70322b6d574a77646c575055394d36324d556b6231716654624a6b333847583571793348554774363958445133785158773951316a71327a39733949567372397951316662633679705259576a4167796c706366552f79537a336c6f4870757a374e4e442f366b476d2f4b2f4b73496a3279565562633768726754322f7553513954736739594d6944376c304c652b744473493936444b624e793247497a53472f4a6a426d377a2b53324f62684534556a4a56335054723937714578486e7151552b664855434255303653665a6c6f6a654c56773756582f61704471387a552f436c454a3743514e4d4f31425a4f65764867714e4d4b6b6d5166394e79695a70594d47354965544851476b784c6f4768626b4f71336a694f702b354747343374754f6e527266495a4a6f524775704f436369374472747949504469674976627162534e6f696c6570575734546274783673436b383363532b6b79775a43567935476774352f5567744651306e5a41544970334b6b7a6d58654c4135366b4e51366953334e413837733869612f466c6b69626479516a4c45556a5661504c6a43766d41536b654b483274746a2f5630482b555364426a6e4f4e7a4a3334685a35335342704262345558522f745675662f574c6a2b466b77394768492f77444936445073326c626b39534f4b7474786a6f6934414e64587479566c76307539745a4e53587762382b35577a6752466d2b61436a5847315557784e4f62384a514851523242483765376a45593855545933456367422f712f4a42514f67753546557033556f7541533152676e4f78767a45707a5037416861325267357556344241624e36544e566a6769435762564c677a667356704d596b44414e385539746a6757506269676f4e7537636c7042635a68712f4a5878735678304566772f677259782b6f7a4d65594a2f4a4e636a596e3165634454697944502f625343384e777850564a34705a62532b4b6d37416a6a3249334e68616e4b74773037315665394e7453774e6531417632743634547175524a793632487756734c47674e4d67396856463330384f387074775a4c633268674b5853583531397944574c416c37734d6e532b5462696376653156677557626c49695a48464964725478456e6967375549516747614c6a78565136594131702b4b3547333255783141566b742f6b535a6e63596e744343364d4c64706d6c38564e7a6538754a7256552f62326f6a5766456a4f4d444a68346345464e752f51593057694d39626141575761586c79384e573979585443503147754e55477a7a70516f316561712b3675615343586f684331593855784b523756584f657a69336a4a514e435636496545524a2b4b4771374668494d3369536d355543334567464d4c5535426958366b446158465143712f4c74686f694c342f44735635684b4961484833397168737a496141515652683559616a4f6a7041446e334b75634e33626c70466c6f2f786345644e2f2f6a4e714c506a793936435768466e726a6d6f62466d52367751654d5438315a5a3237452b5977484c6d7448327533456e6c675078515a44746d47714c6c76346e53536849786b39514b5239755336506b5778574c386f70592b58456e4d2f554d45484f6c414f524c47696f386b534a3052657646646333624c61644a4a787752306c7569496967356b647245592b37677249324c556670393631614a79695252386d584e33573176612b673048446d6732433159413678455a6a7056734c646d5662564b354263654f317569674a50354c6f576476644d615459664642726e616b54546a37314967594d6b6c41325973533534706f7a452f6e326f45416a4362525246754e41645034716d37647447517762363142633247516766356e4251577768416c736578566d4566706848536b387a61774c3277786645462f657035747643504369425a475036414f784c45744569456d3543694e5a42704c4c4f45355363307970556f4c7465346e547a4469324f61763137754e424c34697053326f7a416647714d497875436f6b4a2f42426f4e2f6574706c4b492f6c786f713461784279417a4d333470484149614a4a48785465594c594d6a416b664a425138324268777173784677676a4b51785852747a38796f69597546546f3079723242425874374d67514866685661412f69646f71756349454456526c5635567439526c3038442b534456637657774342496a32354965664564494c6a475753534e79334d7338655075563059777071446a367535426e47357436714f4f4948346f65634143793179466b4f30637771707773784c6a487351553663745758636c307845476b6165355867644c52703950656e6862614c454e547464426b6a4b7961506a2b436679375a36716b6535584862324e57476b354b517367697455476351694863563542536362567761574c667931563269625a6b4a5a43554f373277515934574c554b6458656e4e75334941505073785633323472494278395331776c46774a4d337851595274347836346d524937714977743636416b6765486744376356726c614d6d302f566a3272486632392b30646349734f4971673078736d45756f7630705a37667078366c6e2b3433726452444b54334f3469346d412f746d67754f3134643478545332787548564546736c6d472b76784f42552f75573766546b67732b337a716d6a74376a346b533538454962712f4e6f364748596a2f566b616c67587778514452636a4a68526e56544d575a2b45655a37566f454e4a786c697135436570386350795156586f3350466c787956506d526747644e7552654178654c4c6e5334424230667559506e2b4b722b3772536843776c6755444a6b485247376a567338565076694f51354c6e48696f6139364470513357747452715878566d4e594769354c6b5554655a4b4c4238454775394e69584e51736332656d4357524a4c6c5043325432483349463149786b31416e6c5a6f3672775150475a4f465659444c4e554f5170714c356f4e5976794664525a456269504e316b716737494e6f334d5762676c47354742717361494251624a336f79397170625263366358396d5751466c70735842624f6f69714452354532647134497732307977563874345a6b36474471727a6a4974374f6748324d79425669636c564c6279746c69726263376b6d39766771376e6d4175632f67674944463555357132444c495a6b595a596f7876594642724564515a4e706c62614873566c3879527744706a4f2f6845564b44524b524271636b707579474e5652435630533668677274456f7962485075514a66694d426c55724e507070494c594a303673316e7651442f6d6771444f324b61335052494e51716d626776683845704459494f72432b5a6878376b336d617a3846796f584a57366969305275367061505a3048522b3450694846504463746b333756696a55744d4a5a4e71624c346f5052624b373539695674384b726c372b774e6e74576b515a7a70487352394d75787358336b4f6b74475234444e5a2f583738626d36307777684552516369696b5333687855775146454853322f7247347367523161342f784231306f6635566441307a67434f484a65646c524b3644316638412b4b6f694961305039524a2f42412f355a6b4c515a65577953396944304e2f2f41436664544a38735267506a38566a6c36316476577032727745684d4d4d7176385679334a524151515250596f436d6a44676a47416575434374744a356f696f56724559686b6b68567049466c386b4879566e6c45702f74704e55462f774145464a41514e565a47305347566e6b616163554652354a634b6861425a656d4b59625959484b71444d42516f74307138625942795657594e5841666b677148536d5a384b71596f78746b6d6942614841565259484446582b57636b445a6669554652477041787a544d3379544750376b466245704174544d4866484a56694f5951434e335432494566464e434c682b354c306e46424b7367512b433051687159784c48334a48696530494d2b61596c315a4961512f484a4b5878514352397941476f5654794845342f4e4b596b596f426b775134706a476a4a53774b415a49354d67694b6f49785555786f69364163736c506b6f564d6543414645524c3151644e41556441447a77555a3077446f746b794375694a43417252456f4a6a56526d36696f373079524e5751414651714d4d6b44536f51456a4d496a7355634a575a41774a5a5231475a6e53343151467770574e5647424e454d547a5145736a72497751554d644164427074376d76557268752b6c73517352646b727456423054666d54724753506e7a3854724247636f68736b2f6d4134444e427347356d78706963714a6f37325552686973555a454967765242742f75416b415752507152496239374c424d3549614548542b2f6754563631504a5a72397946353378656979734456535134346646425849615a4a396259706454344a54456e4442425a34616a73526e496d49344b754d75614f4b424758553264794973317831437642633342504334524941494f735332435174524c616c305650596e74524d70525a4272323971726b726f41524d6845725061686f4850506d6d6a4c564a7046676773756630317a504d4e776752784c30565071573931336a47424c594b333034445735465255494e4d49644e6138565849675359314859686675584a5a742b785a796335494c4a6933484349377561724e366a56626771664e6b5437667653794c48386b466e51576c6c7a4b6f6e596a496a536d647579716a6f4d74323145486f564949425771645835724f59746967726f6345575a4578716c5a4163454a534b4a4347614167714f3742444248776c6b416f61714d6d51306a4549417a4253696a7567675a2b4341726a676a58336f4e6b67434e5764454b564341414b4556526c56514241416936474367785151444a513055596f386b416b3346547478524c4b42346f49564d6346497871516f777a51514a633066456c594d6739464945777055343830414d3875655846506f6b784641667030716f3761344d4a644c6f4c725448386b777541724a39755a3479777a542b52634856422b394262496d52416c394f48503979582b6f52303470504c59744934347134536d6644516f426f6d6136596e6a79514e3255674d4b6653676462615451664e51794d6868514947462f57534445636c585334534d464135775a43754c4f5155456f615553534454444438564253706f6759546b51496f474d4979654d6e6667694c48625650437a314f63566462684a7131515551732b585534636662425741616156304434713262774c4f6f5064326f456e553050775334345968574359456957373074795647484642526376334e4c674867614b546e656e52685176334b324736496b782f656e47366d3358686c54324343764536793145684448476856307231667063453470764d6a6979436a532b47442f414254366e4c5534714359506977565473487939324f534278755a44682b614479764f4a4f79614e794a3857537669596f4d467942674f664e41456436325374527a56463762617348484642555153395565715878532f62796367756a434c79624a4243414132412b704b433256447a566e6c4856302b3954795a4758483830414a50465533496d5467794a4374596a78555230366a38756144424f456867394652716b6379757435596c5364516b6e735954637870322f4e42796a496f594c72443079336e6437476972503752626b4f6d5a4e4f44494f4d4d56475857507030625a636d694a326351644f6e385548485a6b513577447273523238496b536a476746632b355752326c75496a4b72494f5261323979354a67467174624b41385a506375746230776f4b42586b5757446b447351594c4d5957365169327233717747494a316479304e594d74546c55334c5675582f4b4f78425544416b3663634f61496b635156594e764531674658633273674349592f4e41336d2f714b706e487a50436663727a59503066745354486c6a566878616e7651556b54776569756a423676316533425041783670797977356e7356326b5372474c4242524b32517a5a2f424c706b4841424b3069314d644977627539364533493043672f424256433233634544462b784b3163394b4d6f665478346f43664566306368696a47414c6a714939735544626b78656e4243426c48706b653942634974514854454b474d53512b493455564149346a397165414164796553435132386e6b39496a42382b7857527366572f5378344a58674f715a63444143704b5954746d735165394130724e7141416869523953797a507756346c395053795a786751454751524f4f464b30513674496461355859774a456851717535666a49616748515647495538765849367345346c6245584557703731486a534978346f4447456e6f6156373147314d52337072636a34582f4144552b6d5551676c543449434c444a413235753064504e4e4757727765336172535779782b614448457a6255593865314855514b6a7658516a474c3439744b68566d7a626b344e426b7944484b396467784971416a6375544f414c745662547435334b327a576e69344b7137747032692b734574567358515a4e4e77344168676c6c62756773354a5a2b5859727953335563614e78514554474f7033616751564e6331413571367a476378697045474c696361443855734e784b33686767326a58436a733338536b6a47513851315a63317a593333634350556a637455316b503845477a376531454f54714a536e63325230444559647661736774682b727034317937567167624561437046573745436d344a7a4f687750693676455a51714d464a584e50685a7365354c4b65676a3339794333587261555952722b6f7175554a596149412f7a4b756534743454384f58443830776c624d415949424f7a2b73646a6331564b302f67446156716b784f4c2f676b4e774845486d5546634e4d693052314b78794f2b6953674c67467553616762706b4b31515851743648493935785646313479315a39714a36513879655559384655397477616830434e4f557353466f685a6f574a37636c52714d666e7a54432f636c346f494e30432b483745706e4d396978777541675037766b726a666a42694b6c36386b466b6238693469437170335a5942337754666452306b5678545476794a59644c5a6f4d7768706930592f68564e46376545644c6e745668753654557571376379634d2b4b42764d6741374855503457644f4a616f344566425356387875546b523148546e795a563635544f724134494e424e576b6635557454555a706454447178523161635455664a4262434f663745336d6152305a4b4132726759347035547352426a416a73514938694b4439366e6e6c6d4d512f4832344b3756413239655470626845673861684256496b4141455069717861755372494d48487656784f6773422b785457525845446a2b43425a656446674b387a52766a386b6b376c2b4564525a73324b6c7a65475055496642796e6875626b367874366a6c716f676f6c754a4e7078474b59794f6558764b3053664f4f726a53695133494773675165534249626955625a4a694238796a4c72786a346b424f444755714476535233454448707951574731416a5577456b5a57344e54755247674477756531426f6741643163766367724a61736d6371536c72654b4f6e57796d6a584b75425155386548414a70796c4c776e4a503563596972634656706a454946467956476e544e565375796b477871664574454e6b4c67774179486572423656493956422f7134494d734e314a6a4359366e5a51582f41437a306b682f7079567337634c6332705569504842616f375548713456722b43444a4735634930696d62357256626849554a4248464d4c486c756341654b593349327a30796633494a7169375a6a38566e33567a53384143577233717935664749442f414970626d367434733338785143334d3031642f4a31737465554332724c34726e33747a616c67523833397561614f39322b66544a4271756150462b315a376a45306f71543668596c4b735a546a67794e767935395675336f6a2b6d654c6e4e424a394d44704a4d6a68717155386475546a4f6a6655632b5365325932593670516370546668346a41617542514d4e6862667275532f33565630746f496e787647493658775a5665665a6e46347777795048386b495864594f73434951572b544976314875514e71657175484e4c432f6268395969337555755862526a716c63487651504b3034596b616b70743277784f4f586479517433346c3478727050764b75755368475838526f506e7751494c5673644a7a7267675a61576978367345305245354874566575344d756d7662326f46755749524771344e53716a7474557047414169526d6e3838796b3051375348656c757a647778456e423549462f746343534449506e794b536670635942784a7163553531546e574a414f504d6355384e6e59307665642f77436242426e68626e6136526b7262637044707956773265794a3662736d3731576470744a79595375477663676147347544416a532b4359626d386572703552344a2f7339754f674f4232563936654e75334342694138554765567936415a455948547a52684f6570706969306b4274556738583978566372674d6e7748346f4c6f7a41365736655362544755576a772b4b7a334a41394c6f54755141365547692f576b54385652475a6b472b6c563659585071566337444e706b774753445161796f77375372504c746e726c4963467a2f744f4a313056304e6d4c6c57365548516a61744e5167354a5a6d304f437a57397549564f5076566e6b51695070342b3542424f3371704564366d7256465355414931622f546d6d467671306a6767706c666b4f6e503371655a4a756f2f2b6c6c664c614574412f542b4b6e323756646b465570365a5571717a4f5a78427174483278796c52436359695a6b5a69492f55677953457a486d4d66627356336d5842306b44354b2b666b61326a63684c443676696f62516b476a6574312f6a51552b5a63454e4d644c5a3667666d6c4e362b41384245442b4661726531733277524f37453973714a5a7a73526a5735625038414c4b76755159644e2b5569535870375a4b76794e623672622f774153326663526a4c56674935302f466c4a33346656634b44494c473259436471555a4846704b3462577a434f6b595a5a6c4e4b496d656f3836565631766277423147522b62494d737476622f564955543237566d4931534a45734779573037574a6f662f56494b6b3753336361554a7837525842426d6d646e46757552504b7157563278435436703048364f4b335232467148686c457634687854665979616b517a494d55722b31316170435a36636856304c6d2b326b54545777794d63566264326c7933394a3564697833446642426a5839516c564264393759633649394a4f636131524e2b3277416763507178564833562b586a74783768583936714d4c3877326d6944555a32793271664b764a473939707036356a2b5867797a78326c793444725a7a3846717337614d496a566268506a6c5641734e7274706638453473634e587954584c64753234756b4567665367425a774e6d454d336431546374325448567046664567302b526275485644546249464778517537665245544c61587a34726e5732736c335950384142534736774661793755473657336743645642324b714f327354614a7667446e62315656636431636e49776a714448744376416b78634d33346f4b35374733442f697545672f77732f77435370454c6a6870793163514676446759754f3271726e63474563754b4367432b51336e542f414e767346654e724b3553633548672f354f6e6c636963436c473475516c3053716776743754797857586177716962454864384d69714a62753843306d50653375535433563748562b614336646954445641536a322f4a4d3269766c44564c47574956586d584763534c506e46574756386e6f6e7035742b42515043364944717467424e64336b744452453863714c4d626d3768587a68583955516b4e2f636a47635a766a7739324343323563686450565a75532f7742464658474e676e7273796a58394b4d642f6667343652482b464c486433726f3852374f4b4332316473577638416a736b2f7a4d46656239707571314c4c4263337a444e6e6a512b3931594c56736a5130395150775164473347334a7862314f4d6a386b6b6f6152717a344c6e784770674161796458574e70634a4f696449385547754d62676977415a732b6142695448544b672b616873586f75354464715837655144544e45414f33474a497757535870305a4872754163656642612f494150694934736959577a6d43426d677a2f5a45476836667939753157783235694d6138696e4173614e4a6d33426b4a5174474c695647514a4f78492b43394b326662676a41534644496e4e354647375a6a5561616b59756b6e6146734d4961686b67756c427646683845673874366b5635716b546870316557777a637175633976506f74325471796b63507a2f4242724a32674d6f69634e524e51592f73553057644d6d6b41535142775750794c6c794e49524d5278396e56746a5a3344394c524f65707767762b794d2f2b6f434269496c542b334134544c5a3152477a75514c74467531573664447645635546486b364b442f77427864562b5737564c39767336313664645351694c55536461444645337571474651316174334f6d68397a71426c646b483459664661674247564b452f4e586d314b4c6153507851632b5a7646744d7937745566745457374f367553615634524234686259323531616f2f697753473166625352537546454659324677427a7548504453684b7749314677746e456a354b75566934534d6a7a6c2b56436a486158356c69635543534d417771546b6a47426c5577426236534662446265574e4d7148696d5a6f3658515a376b4c6d644d3269737874334a44717858546c5949725375436b74744b554b41494f594c523034765834466150744c6b5a536c70675152537543316a5a615046567351716a5a50366948515a7032747a556553442f454a4a6f78766e68456a685657787553674b584332474761734d4a5348544f70376b466362557869657232795451745847464f315346694d523469357a544e35644a536d33356f424862792b7242577a3270755261746557616f6f6641355358627335415265546352516f4c503756474657616d574b6e326b4c5271432b43357477575133566437587a3756425a47506d584f386f4e636f3270594670444c32357072556a466a536d667a564168356459537166314771686c4d345651613458616b3564695974634476454c463568484d68563635775054456c386e51645054474c64517171726d72365a6b2b355a72657076442b4b753153746744534878396d51552f774263654335496e394a7148564d7037364d53432f6237664a627a4c6457367869572f68565a75582f444e7a6d677a434e38316b534f50424c7075567161725249534e4f4f61553955587a6633494d74792f664566486a696a6133737a5531793142575369325441344b6d6f717a7478785162596277434c694650637249627a7072417373766a6a55566669744e7577576367453971426875514270617077536e567070454d54584e6c5a6368456b435565787341334656744e3678596671695541387339696868483654564e354e5839365365306b574e514d6b45684344566b3759717537744e5a2f706b64786248414a7637644b4d6e463176624e49665272747a7238306c716e4c35494b66734445617031377766785a4a48593234316e56303339716b4f6d4a5076546632323955435944596170494774656d32537a6767725862394c7448414e4a596f777632764663667357714f357641645a66735a415a375578485449646b6c56473042512b4c74567875786255613970532b64474d58306875314249573763432f56712b4330774e75644f4b3563397a5056344b66464c4864784d6d5a6b48586b77596735736b6c636d4b69323678534a4d496d4a59505658576f6d48535a6d6777634d6746362f657555686136634158564967534e63773166437239636f44706b2f4245676a453833515a5a3279587962465a723967456955713072785855453234486a7a54472f4347545351634d32744136596c614c636f6b507159396933376a653253356b4d666750626d714a334c56317451446667526d677a53756d37344b4e6a7a5638746f5747732f68697455497764345a6642535676567a59494d766c7a685345736634556b6f584c665672782b53325373536678414275394a6363644a4c6e39576e41494d7370745756796a38465050692f692f4131566e6c526d344936565074625a366a4641304a39413058693244474b65515936424d53437259514146514f4357567133484564587a5147334b553346527856385133546d566c4a7432376c614f74747135745a44547172326f45453469526a6931564c65714a5a363565326163327263447145346774706c32724c496a563471494c623475527077616972383651724b4f734a49334137532f334a7a3565746f5569674133416b47596e7539714c546275572f447038574c665373424d7264424b49493572527071786b776255364338376d3145474245686c78565a33467278636346535847644541497871673058657150526a7a576336734d65615a6a4b57625339763372524b4557307747475859677977697a52703234724e66326b4c6c5238467430326f3150547a51496a4a327a7a35494f5a4c30396e306e7335724a4c62796761677275536159596e7039337a545432786d4f65576144676553555932695379394644303631557a7277356c43577a323957483879447a35736e4a4162656273787175366246724b6d587379454e744749786176746d6735456473517849706d7463624a4170675067746b62506c686e774f4f535451394f4b44504b494831567753655243594a4876576d39413473716849415946755842426e6c366658466d536e302b54675055725954395139794d7030664630474365786e484d4b7237655966554b4c61437975777252427a626532754534553471772b6e335764716e447357695275477548792b437568754c6e697834657851555776546455756f686a56572f625145656d4a31446b7449334634654a7932435562715a72474f412b61444e704150466b524547723971747558726e4144737a514f6f6e554d2b3542544b4a6a566b305775394c4f45356a4448456e344978684c5543472f4e42544b3342384168445441754b717a795a5843434d546e2b434132644e555a46366f4a6176776844514931794f437538384f4237465579674943706f716259794655477956385234735651626b734d424b744d3059764c4535397961566d7275677a59497a366544725647786274735a5366676a3563656e70782b4b444c646871784f50344b6937616b427958544e6b615a5348302f696d386b474665364b44694e4c446837306a3846326275306a634e467a376d336c62704a41734c7a47766169643066706f5655594d5777513048456f474e326544704457754b6d6e696a686e524249783134555130462b314873646c6149366736436e535155644d6b37465768333534494b4a57793271535542386c7038736c30664c4f4a79515a3432745375686167445657787474794b5356746953632f6b67746a6246534d464a5559526f367261494750742b53736a636a69674c4e5371726e594c7531467046397938366a45715475695170786442544b4d6f6b444d684547524a4750366b2b6f6d674f57724254555a55514b7a4268686e374d6a726a67324357626739575357456f53797134515748514271554c4669652b5074564c4b546a2b464b5947523034464262416764413753684b41686b482b5957617343336574566b744c727751566945477269364c615136304733523359354b71483658356f4b356b52596a34664a49626b6e37635534417977524e7156786e7a39766767726d64517278526b41334e5753694157393652756f4468574b43522f53614b6d64445442585342427269513671504842736b434a4a537a5677746b682f594a6f32517766744b436f5466773563452f6c536c6a69722f41434245637a5650474163494d586b31624649594d574f61326d45704f39436c6e427345464d4777516b52697250493144703979723048557a494b347931345a4b736a54544a587868536955325336425570596d6d43734e6f44476e46534e765557514a4167477543556e6769616479562b43426f6c3076496f343971424c6f4c494559714759495a49536f446b55446d576354676f345069785662734754416f474a4177566358785459594a53675963436f414d6a56416b346345524a6837596f474e436c775231756c64415379564e4a4b2b534169717646736151732b6f354b324262484641446271775148446b6e4a5336614f79425931714647543647443571434c6f454a344b6471734d4f435578514b41525642364b79584a41327a674b6f42724f575374665757393670416f6f4351574f53432b4c484248534756596b7a674b324a316f46795a5168316f466f546d38572f637250736943777851595a5736305665686c724e69554456495953424645475a717579684a576d56717238554a774c61634f61445032596f46335675694c46304a515a4162642b554d506232775857326831687961354c692b5857756132374b396f6d4934755548532b364e736c7831495275655a4755694b694a54376a6276413352694d5667457a70494a6f634548506676646458302b376f693031794a42714f746d306d3430476a664e4275754d4332537a786c70523853575850416830454d36307a513879744544466a7834646955764844503549447079347146676d314f4f4156524c3051476242556d317059383163717a4f55716f4b69476c7743724d546a785670414266464959683656514c70516c774b5a6d777951785154536a792b4b6a424131644248525077556655554d337a514b794e456371715335494a7a5177717067706a5641575237556f55696539414d3059714e77555a304162676d62676757436b71494a454f4647555a474e5541497a55434a4f6167515375436a5a6f44465149444a437150616c795a423354756f4d44454563315a397841734165354a4f77444a6957644b647351327250507351614c637a6b55626b6942517171466d516334495442596836653335494830434e44346c4e58563134386553486c764846696c4d704d7a7555466b794a394f436d694a59534a5657715264716e354f6a714f51642f6b67734f6e78444c3570527042706d7177525867704f576b3134494e5a74777551654f50746b6e6d6264734e6e376535633851387a78636c6f6a624d68707951536333365237314e527245667654777343756f71614e5978504e425643463874496a34713078754168775658474a684b5841437235397974674131554244546f5433387771343236755a4f4b3048464b527a6232354967426748646b4530455a593051454948716c714948755358486a6d6542576d3562314d4357694f4151566552626e553463383143424750495553365a76704a3642554e78516e57514e57344946594870446b396c516e48534f3947574f6263733077615a65514c63385543537476556b317941567567434c4e2b784d5a41413050354b5241343955636578414262343565337654323461716d6851695877795246775644755546773234497173303741502f47446a77393665426e714c793979736c4f5474456e356f4d4a747a6964504446306f6a50776b553468644b42456730324a37564263306e6767356f684d6a70464f614d624a6c322f70573256793631545138306769497a3142426d30796a63304165333746584c716436666972764c506846556b374e774871775156344d7961454d334e443456654e76707a6f7259376532376b2b3346426d2b343048462b544b666454773473746f7357343949627578566f7332773242516332462b35454e43674f50536d4771565a667558516c47334c414a4c6b4b695551776171444635513076492b33636e6a74784f4c4e6774494559467a462f70526a4d5935494d30517a78623971594372694e6678563072676c584276594b692b4e555842596f4c504c6e4c4a6b5049763130554b7a526a50546f684d6a7455506d454d62702f303855443364746569326d70503676324a62306267446e48694d46624579416345345a6f6d6477556c47767751555376476e5353325054696d6a656c4546673348697455626730735934704c6b424a7a45447551436430364d4b647157557a7050387242504c5342705331493445494b376369614750623270532f36614469744675325a36736a324a664b50493969444d4c6f2b6e70503874465463766b78717850747958546d5a4d416135746b41506d71356748434c756778655a6441646d302f46547a626d70356862486c694746456b37657270772f4e425448646b6b41365971306b535051612b333756556476473534674664473335586652415765684f6550617242627478413164574b53546b734d456274365567476a514e5469675764793371774f6e446b6c467149505469366c3079464a36674552637a2f336330447a6149504e566e527863664657526332384b4a6f6779615753436f474a694245666d724c686b4253494a554d35454d4132716a3571524d39514146654b425a517555627849365a514c2f414b5649584e4853573769703977543145523936416e7a594179497844396853774e356e3730783364775236644b627a4a794754634934494b7939793331506a6c524c39734a505376784b3052426e31466e547945684c514d6355474b4e6a54783778564e4d4f4e5046624a69343566343456564e33624e5358422f7a5143637a6951375553554647393665646a56787956734c63596d75444d36444e4f6342344c52424f59354b6f4579656248386c3037646761644d6a5434672f4254793269777837334951636d496c4f49315259503271364e737731434945522b43306d4578456746754f615143374b6b6d5a745863677a65576342576e7433493372567966556644514e686772596d35467042672f464356335649696a42426d74375335505751584a39765a6b6b747066417055386c716a657137306275562f6e68677777346f4d6d693841306f7566637035736f4d38532f4a62544d5941507a78534778666d31753346346e36767a51565375544e4a796b334439796b33505354324a343765364a615a466d346674556c71493653596c386553425a32444b704f61506b59454c5243594f622f6d6a4b3547323869677a65584a365a717955532b6e6b2f61797431733077516c3879524942366d656f515a785a6b2f54777a774255466949376678435a6a4b68772b5372426e4944514547735770413941416647695764702f484a6879342f7653365a794658314e6c6d6d4f30754d504c79396e51566d4d4e4467312b72755130526a5146314c6532756753414150623855747533636644706442644f7a724a4a50543256495667322b696b63417445624149426451573551594530515a44336532436b597a6c3459677962332b39612f4c31454456376b766c5049534a7779507456426b6874356a71624247317439417143487a4957386d4d414a366d4f53726c7552456779366e372f676758524b50555254327953334c6a646e7554536c35704967666669714a4854486967767433634441524f546f7a7348494f4d6c6d4175554d426b2f5557437531627551366f783758776441336b7a3176454d47786c2b574b74416c3964653956655a636957496673716b4c786f4269673078756b646973383054344e3266735749347548306c45326f52476f6d585967757a4a46572b61426e5853526a3763456e515178314e7752416a496a532f77435342444342365975536b75792b6f34506b722f7478566930754b6357447179634d6777516c4f59706c785631756e5146724d594e707a2f4e56536a4770474c302b5342524679304f7855366f57382f67744d5a577761306f71726c32455137462f3563554351334675526163694568467364446b685679335a68307974655a334c5a62755349725a4543394f78426b466930576751573936317733576b734a45643253743058492b4559564b5363346c346d45544c786377677275694e30744b52626e52556a6132515869442f414b632f69746e334673466a46556e653249356537464249624d6b6e2b6f3054345973704c302b784350556454455946555433506d6736596e76566364726959672f6767766e59734767693163637970355730694e6334755171325031766a697249523675736a5167306947326c48774f4f5068566768612b6950342f4e55796e4b5a62492f53676274323345523463554458722f6c6a54414e786b755a664e2b34586841796b324f4b3333484f6b794138537131584c5238625670704c416535426d7379755768356334536331785451766b533637575050325a53625842516b452f46625978737769396f4f526a4b55632b31426d38304d3062465034712f694559324c4e7869624f6e32344f727675504d6549736d4e5766586d724e4a6b433857373845452f6f7747714d61646c555466686c45766a48745267592b46756c5141584b78713377514a724a6a3165354357707a727a777170644e30485243414c2b3156562f58482f4a617438394d6a2b61426841447050672f464c714e4469794e75567934644a73694463387665745136737135494d6d6f30442f74537975536a5541474a2b533054633452714d6b51424c473052386662765159444b32616148486278577533674e4149422b6e4b6961525a3441653948376b47625031636b426e4b3945644551565364786674316c426c64472b574f546f61577a4a514a432f49734a414f36726d5a4e673673454c686d512b48302f74526a626b2b70365a6f4d665671477147427854796b43576a45456e4231726c737268707269787747425247313045797a35494d586d52695838765554334b3278644e376f6861496b666374427354314852683756576d33614e767044502b70426d6a4470442f414c6b73725948554a4f78704c42585374334141595837634a5a394c76775641737a74754a6d4579507177515a35332f41435270715352383049376934335462722f467a57776a46384d3157774f4a392b43445062763775482f52442f5477542f6537754869737750594d31734e42342f623277576545355330786e4c3335494d51334f3630782f6f747036516131375538722b374a367255536550735670362b4a4b414d514d4a48343151565737743634486e674f4277566e6c584a59772b4c7546413043574f50366b776c63786a4c4834494b4436564739496e5378787079376c5a4430613033395468717a646c663978756f3433634f5353652f7742794b6d555a7479596f4674656b37634536684a6a2f4142554365507075304c4f4b59596c496435634d524b4665657250386b6e336d3464684a794546387653746f5975424c2f6452566a306e62674e4d532f4a4964317570523078692f47542b343979417637746d6d666967757437577a436b4e51546662577a347053306e45506973385a376d5231787561522f4b454439387a65644242596474734a466a475a624575715962545a6639495841334a6c64627537713238707a316175512f6572427539365046314d474743444c4c6157526847523937313471713573794f72564c534f31627a763552365a52704c6b6a4466474658592b38494d4e766254636456796e46364258666158413271526f74304e39636e5131427a397170674a7a367348797a515557703769325245427770447a702b4f42415939584d4a70584c6f366f58434f34495276337a34376d754c41474c4e374f674f754f735733596b664a566157384a5a47634a3664544a44352b6e544e6d7847534371634943704a4977565537466a69566f6e47645147493563304462617377534547667962503146327856316a62324a64526e6f3547555850764b58635749536d385974546771664a7377625549676a4634765642746a446175373343547a67337753784e6d756f6b75576269506269716a477a556b554178302f6b6e466d30514a57794938394f664a42702b7873584f76516458474d6d2f637374336157366162526c7a4d33535345526a635a2b33354a7a666c454e71422b4b43574e705a6e34376466357662347256397474674b5767584f4f705532372b706e53584e33474c525a324f7068466b47324e7577537a557a43734669466f366f526273584d50714675324f6d7a4e2f3468543549573939656a344141445673616f4f684b65343136764b707a2f4148717333357736764b42422f695642333179666a7539336c344b4339356865456e49396e5a42727437714d6930397645556f3833716b4e6e616a4730784f597a5645726c2f4d784c557762337570357479424641677630514d644d517a344f712f4d30735245502b53595434346f665a2f6344534a4d33746d677168644a6d7845514f4c2f696e6e666336697a696c4d45626e6f6d71505665417a72494647587057333238533178337a634e3830464f75636a515148657259584c7763524d4c6554346b70785a32674a4c764c446b724247304b4e4844394c315156666358497631427338303333543031342f5379506d78722f54777a52383355474939364267596c77433772506376625332576b356c775a614933726472464b665649677470374f6c427a2f414c713254305779472f68546b536d7867776a395770612f4f382f72454336454c5579314b48745154466744564175656c794f3369723432726b366a6a7a52466d384d644c3830465268476d626858536d4a515045594b655663486930315353315236584875515653744233416f704547324e576f694f4f6c554746796368473253353654466e4837465a39687534314d5945442b4c5367637a7257707955383456656e3564794d64727641346d494544676346586469585a787a374f3542574c77455863446b5158536a655267786759632b6b705a574a79447761755a79514730767a724c535161676842624466536b78634e6e6b6e6876627430366e6942683956566d6c737a39566139696b4e6e646c4c6f3068766367364d6239324c39513979724e7a64743048544633352b33465a78743932486537467630386b39734733706a496b7939736b44483769726e5638455951763136524867386b336e73664334547876694a3662622f414d784b435734585a556f35356f6d4e7946527034704c642b497867785476626b6139714347524a63792f6171355878436a6b46576b5775424a4743792f65322f77447458482f6c515857357a6b615a383159524a74576b6e6b4f4b79776c496b64426f7234576f69574d36354f67736a70306c6f4e78644a4633444376344a6f51726d334e576d30786f44335a494d735265384e4232706a637543576d6d43747551696343386346564f4a695361486b67573461364477537830524e445438304e456a314d4477564d34546a68467149484f32744d77385069494f58656d6a735859524439366f6c743772384132535137534d70504d6e76772b61447032505462554b6d446e337068733975664862695478775743785968626c726957372f414743742b3775526b7a6c736b46382f5474746962564f55696844626262434554475172692b437948637a75513856456c72647a6e684f6e76516449516a3949667456647736476c7870565a427537676f4a67747954523331334541532f686b7a4945752b6f61493649776d584f5170324b7564347a4c6d456d3746736a66333149326841637531494a3777423577683331515a42754a59434b74694e59477348537258764d4f6d4a7034754761547a4367575732467743636763617339456265316c443647484e577775742f4c376d546d35704e515342697851553644422b58795353746d55673578563179356130506f506571767562445a6a49554b4247755149455451664a61724d5a5849564e54697334334d442f41464b694f5452566f395232747345784575314134736a777a2f384154697035455154314678682b4b542b363762365979495074524964304c674c5249666967652f7542742f424d696d456c6a4f2b75304f6f455a5377666b3145706e6269584931767971725463673761544a6d3967674a336c3650544d4475546663796a394f5357354f3350706b434f464d5559776f3551513773754e556166677176506d376557385363552f6c5245366c776a617474686d676f6c505848444258516a356e68444e376c654c4d7751784444464f4953446b794642676777676c7a4b525353684278467452474b3254686f782f637135774a416172304b424262317862495a5a4b7737654f6f774c79594932663656574e4f4f43764d34733442596d714369334f324f4c7434555979456f314e4d755330777457376b4b796c6a6b79712f7474755031456a67677a7a323475654734614a504a4a715a4876775733374c534d4e584a49336c6b796b4b6a695547627974427836552f584c78414f472b43766a7559573574474e633659666b72767569616c712b33356f4b6263707537477259725243556f42354474564d35334a44554862322f637339363750565432356f4c376c77595379585038752f634a4e73504874576d5265725971516e3563745144494b345772776152663330576955627036636a3371794e7a54466f352f4e57367335494d632b6b73314657656e4347644f7a32795853725070674f6b357136454e4972554d67346b783978623844484c7637566d6b32707357346a46647936507049446d71716c4232503035636b48506a745967617a45553475333756654c564143466664655553576f46575a655758696578426a386833707a576a7947427a7067725745584f4941727953786a562f6879515577326b433731356674566b374551476851653377566d6d384134384761726c4759656a6c716f4530455a666b6d684f74425565347167336f774a7255496e66584147446537326442654a734b35356c434e34454f324372683674646a535145753669797a33666d413651424c2b576c45476d56345670716633497730796e6766394f44684347344e773670414d636c6445784d715345547a4b436f325a52373038424d482b6f6535616f32347a4c67316239517756586c6b556f336238554341786f542f7156734c6c7439497032724b547038565150635562563852494d6d39736b47794e694249694b45696b754b656469334b4f516248693678584c723067583571767a5a4f48496669673058394a4f67312b6f792f425a66496c6372476a4b34534a63466d3756594e77496e41666967702b304d744950552f74334a6f626544694e66336673577533664a64364b475a70494d2f7a515a6874597a71666371547344782f59727a4b596b373161716546374b5948344f6778584e704d562b667a5466626b645a44527957735874424259456a44676a4f35356f31536a32346f4b4c65336c6369374b33794a78483472534a7451552f42504f5a3855474c38386b4749784a6f353038465762455a594b2b55324e4b304c6f655a4b685a7761494d633971594e45595963555074626a616a37754333516a4d396e464c4f556758515949374b3449394139766d68397075446e326476344c6f536e4776557879723846584b544f78623971444c486133644e436e686175456769766637664657517647745847485a2b39547a707870476a494b5a374f55334c657856457263345634634630507535566645444c4d7250637543494d6659494b49796c6a6b555a584a534e43416c4e304a6462562f63675a7446565a485634686c676f496b7445304a566b595630384543616a4b48546e697445496c38636d53535a67437272513663335149624e47782f4438307436784b6b632b3742616f737a2f4142566477346d4a4772346c426a7562447a44542f55733074724b4573616667756d5a535a7173733177764b7561444c44626e777437302f32776271614a56303858485a5241784d3476456a744f4b444d597874304859704932346e77393636457246736766714e6553506b5777325a417167356f746e454b30774f426f636946753870712f536b4e6f415671554751517267364f672b374c4a61525a317a354b53736656522b31426c68513951526c433256644b314e744a3746576264514d485155477841314741514542465869447949474e41465863747a69534d7a38304436596a68536e7654456e4434636c546f49485669684b5575303865784130546d614e6a6d6a35686f57592f4e474d61565469315874515a377370466e435871474137667758556e616741444c4a6c6e6c614559644f42515a597a346832576d4c436b523349544931616665694a42336c552f6b677674416869394848656e42453575494d7149376750683070765070322f5555446b50536673416b38714c75435750464a3767575274435a4a4a446a386b44536c476a78722b5370446b554c6677712b5541593675626479456d4d6e717a494d3077534e4e56592f575a537a4154784169484970776171724a626b454445536b612b4671425349614f6f5a30556e4967734d575478756d644a5a59494530786b443775394d626441366a347a5443656675375546553453385152366a4a322f6854796b66724e416d4542346f6f4d637039526a38554264656e42614a776978644a354f7273397543436f7949716f487a71727a42364a54434d364e2b3042426950596f5a30706974666c6655423742555862496f576f676f63346c6c495430343570704d4d4d556264757443676f6c52306f57695670384f394a4b4269677249526f6f4a495a756149434b345a6f5a4946454230425a2f456753706951355551514b4253574b49705241416f6f394b71427330454b41624246314542436a75674b495a6f475a454671705755664e42614a507a4b4a363157414530514d33514d39574a7145646566486971732b6166353976356f49434a477159594a574a374544417677514e77545272543370523147716b434f774d6768674d4643496b4967392f79516e6d6543416d496b374944674d6c482f414452312b39424e66417374396a6651482f4a69756449356e4c38554d366f505357426176696d4a526e745234435735636c353633646c62366f6e7557797a36706374644d363830473737543654516356544b7a4555656f57697876626479703853766c4677616a356f4f5839754d30733766635630764a694d4857655675526f3141677865565279713452305342573477346a425547322b50616737757a756137596d542f44494e6b754e366874706265374b4e52484c6d4675324634516a4b4f414954373843344e57584e4235713544366b4c632f4c6b7877527552616953504c42423152706b4b6c4b34626b4b4c4c74376a304177562b6e467837666d676d6e706675514653324442514638617145556639714259524e5856524445423663667a56706b326465536a777a77504a4173594e55312b54704e545635396963686a374d68644264786d55456c616572724f593542583144684355532b506367703048414a634d4662714758374656386b426b554132654b6254546b555442716b49454439366a346f2b4b714244593845456b523271647144634563416747436a4e565434454b4769434d4d5544564d427149314a52453449494f4b495939796d4f4b494c507a51416c71496469434e5542795147436d41554943434369694a2b4b6835494141694547526441725a715652504a5268336f5052516850534366626970445845654b6e3653704c52496752456d2b6173304352427a2f69344945454f7248755447305071775464456332376c555779623979437a4877753478526d5348634a4e624559755657776948724b5573337764414b516f4b35313971717a7a324c7566777171355263417333596764524f6d4966562b43426e6a4c704663332f41435673574236732f7742544a5932324147422b61597836574e6543426f474d61676a6a376c626b325a7a56447648414d6e45356d4e49734f4b41366f514f7157504c424a456a3969754445677953796842334445676f4b764c694a754931504a5038415457723876676c3877534c417333765144365159755878346f42636a5054716b7a367670344b716f787a793746664935696c554e524d586469443755515653442b4c6d684c584453497558446771306452623264584d54706c2b6c426e6e4b35703073334f5365554d632f7a566a472f7131594a7a4f46554765514d4d42334a52654c2b5759684e63766d4a71686f3876704e54696747756352345835464355347936732f77424a773936653145584467583933755667736d686b477864426e6e4f6a5a38454a334b316777347254466a515250373161644d6e6b637550346330484d383739494b76463053724678526c304e454e4f72566a6b715a786845614267677a36764c476d503841757851424a635371704b416a4961554471692b7041613149474330522f7142774f315a3479486d55665341675343537a2f6967312b57644a61696d694d367a5a6c53386a314849554357554c6a786b54546b67754141474137306b4c466e78473545532f534570314e79397543714d4a7a2b72546e306f4e556263625a7956326b416471774778655a3958543256554e6d35674353654344575a4346422b3955796436794c464958684c5766446b4541356b546c6d6773416c4d3642395255674e4a4f6e4a4b5a45556a696e6a626c3954523431785142792f477677524d6a4930716952355959342f676c31694d6871485a7a515736496e706b5079434246754f41695067713579306a356356574a4349454348597555446d34484178695238566263756165694f6b523435724b5a367a516158795a4e4638734f4a342f4e427069615577436a6b5279376c6c30526b64526f66642b39453667656c6e5158434453422b6f704e635a526f4b3446566d5246633070755246595236705a3468415a6d544178316678634b4c5247655568502f61796f2b35756a6f694142696e4f3476793538644b44527245735153777a53367a34524352427a69735574396477353951566b2f554c7a645757575344524b5a456846736d5347594558646c564c655445515a674b6561626841307536432b4e77636666696a5351306a42304e59694b414f73317756614959494e3430517a465063717053743436775a4d314d6c6a634e56792b53614141496a4642704d35584936535355624930346a6961716f436a6967484258523030426441304e523973465863744530794e5379764968454352785a6d47434a68355a366a513845474c5364516a6779733048463257343262574f4248486d71394e766b79444c35623061682b4b45747443513079484844327856684750697945665a6b316f56702b7841734c4174785a716330386d4649746a67695448466d51594d37494a434a69477a5168617552456a4b63534d2b58596f396572417072555a3341526e5873514765356e4561524a364370436f6c7562307672457535504f50376330384a30614971654b43694e79346178476b3570366c6e7834717776417441552b704a427452624d6f4b7057705370444238557a58493949755337766242614b4d38754f5351743349435a7949655237304b6e435a4850697170376d334233316679354a35587a4b49416977413975784168446e53535432386c564f45632f45634f537446787043544f782b4355577766454b424167323466546b6543633262467555597838777a2b726741727032334168476b632b48357072686b3354455678666b676c6e59516e57576f4b795730473344514a62346f486333662b33546a477446504d6375372f6767714d70456756504a4a4f45725a416b4f61744d5a794f716f3571335271724d756777784f4a34354b385743657162565633394f4c6c6e6b6e6c644578672f44324b425932342f71614c4d6c6b4973385870785a4a482b7069507751314d44412b4949424a366b634f476153586d4139556d62394171566f384d58694f6155334a53456f6b59522b4b44466f7557787131466e7278537a4246586c77643672617a596471716a456152456a4242524b354d564d7055446f61376b65714f4862552f7556704e584d5a616d79464644596c4c4456326f4a61334e30316843697474337a4d36534a442f566971785a7551727179554d726b576a717165546c4271386a582f43482b6e464d62596a684d742f4573506e334938424661624a4461704e793755446d4772714a3164717241314873344c5262456a6d4b7134536a4c706b314f5344444f794c325a4450583936732b3179314f72355178314d466d4735694878706853694332466734546d61712b4674673070535049795645376f464f54685a4a377935416c79355164654f70366350432f3746524b336e494e2b6e38567a6875373977644452427a4e53745675626c356c304635674d456b4c5677466933486968454f64543165695755355848417573675932376b6e4e52776c7a5377324e3879667a434d30317531646e2f774259486c53694a736273696c316a2b714b417832563675583570376c754a6f547a4a5377745859442b70634d79715a514e4245596f4c34576255486d39427751462b4178682b355a78626e5141687662464e4b31646d476f325663304767415844676a496752484931584d7550612f774353526a2f4c56474f377345364936792b4d7030464d3047773352614e574b4233634d6831634549547447585545626476627a7235636750624a426e4535584f71456d50745241576a4c36324f61302f61626545656e6a543971797a4553375551576662366831487177356f517332346c772f666d7134546b4d42497762465751766171364a4f7a56514e344a4759464f6145377370523078465233396930774c6a7068586d6a354e3171696d624642696c636d4a61636635716533616f5a7a474447693153327370415249636e4d634d38565863324f3449364c593038354d67713836345468377632736c6c63494f48765477326539314e706a482f5571787372354c584b746e71515356335735646d716f4249395a4c7878526a5a4c5a4d744144524767396f6b677a53675a6463545253396275445341644d5a59397130584d48464f536f3876793453494a37384f35425a4355673467515237636345737231797070373158474e71356744386b38624d5070444641787536726655512f355a4b7157344d542f543663753871307774334f6b554f616b4e724352366967615a7553694a69544439544b73376c7a57565671315779305a634754655674387a556646304755626b74535a3750336f4864474e51374a3565544539413164795239565445307a5158323931712f617252667478474a71735169443153427279576d56736a7030306952702b61437935646a494847767452554335457a456f384e4c653156656475644c6356546473534869424439574650654546476a5857494f48682f4658417a67644a6a6e5871713334707265754659436b68346f2b7a6f7a6d644949385576456741654a646b54635936614d7a725035733569763730346c6c6f72793936433854697a6742314a37694947416f71695239546a39715768426a4633515876644d65694c6470566335626779646f36654f71697468636e4c383038584743444359536e4b734c5a4c4a6f7a766a364c6368683148397132526a624a7a443845737246764d6b6f4d38397a65744e72745150387179533359754f4c67694b36763265324b33584e33735947706b6535564339365a7163786b4d2b6f4f485155777557685145534e4b4c663973644c7447542f7844383152354f79755a6e46337430377168557a732b6e786f4e5a4c316a4a42305a324c6b675331747635736971664c3036744169445275716e63756435647343556263514e564f77393663584c4f6c69586e466f34556f673645622b4f714d535544663238504662503873566b6a75746d6664536d5a542b665a38567638482f4147494875626d314c77325a682f3456614e4a6254466a6c782b4b792f66546754474573412b5359372b647973694a634a6345476b5768416b344166696c47324647424a46566e6a7670474972453061754b654737755369496d686b47515779737347306b384e4b58524b46664c6b4234656f31532f643338496744337133726e57367a2f7741505076515a346d502f414779773936767444564b6b4e503661597136555a2b485848337132456a694a42766b6771386932476d593958465558623975413649796b634d446d74666e4555317566624e50627633534b544235526242427a4c6d6d48515835465636595a34354264472f435678745861736e6c6d30544553466139682f61677146755172475172374d70447a347948556563635172424c545846734b4a6650754f30726745706677342f6b67643768367048344b536e636e515953485a6771376d36766171475035716663546d776c546779437946366367354c763845756e514762704151387951596e422f686b6843354c55444c41466b467471524d58694f616343356d4b6539545462452b6949422f55395737416f4c6a644a6f337355416a444268376c6e6e73764f2f715030757278764c4d443177497269723437714148676f2b497737554850384173644c6753624e504c62674e457a6369724f463052647354746d55394f6b47717979753756394549526b51354e4d4f39426b4f316869414d6331614e715166414f356c5a2f5476654b4652682b7861596553576550593243444e4f3249316c6e566b677557332f55334a61726c757736574274386e2b4c494d2f3841546d61516b4755387653475934354b777a67616d675336376645307a79514a44634556593050364663643950776867477249525161457a3050786f456b373062655567503467396535417339314c4b55572f53315856482f414a5633774350506972504d73336977704c2b5676696d7557375a386573782f672b5343735737676a314871316173636a6b71703749584164637350696d387261427739782f35543349473259744f4a6b7838584a417366536f7467376b5970352b6e693155527a41357070584c6b4975486236686d5539756479557455506a524262446157784967696e346f334c51744767374f43732b376c5751692f5a795761652b335461595777516631562f464133614d6b6b79336947486567623235786c626779534f37763557346e38653542654a353652796f732f6d334a533649463865444b3866652f77446268446d7843312b6675744f6b36442f704b44474c2b3477685a4a2f314a422f63697868626b426e5662426330466d446e74542f64614451664e426e684c31415538715838576d53754d64353956707635353565394137347936586b415738504a56537632376a3955763957506367727552334543356a62505a4a6b3339536b54454275456b38504b6c5855572f6c546558744d4a47394c2b57672f42426c765762737a77503836533359334c69554777347654765769376132634377467976686f73383457422b6f423044434e324c4365497a314a37455248726a6e2b434d4c466f65457354786238307768624e4979727951417938735a636e7a37516d4630796241646975473245664449453448324b45674947725a494638755166686a33707a5a75416141514f4a53456a536570757861497830683553636c4254396c4b474a642f623277535132776a4c574c67442f7178376c7231524a366950656b765167526f6b51654463304443454d59793978782b4b7a33647449534d34336f735268494b6f656e5750717834794b593743304a44544e346e4c69674a45794f71516c2b43686c70366e596e48735466323241776f2f7744456f4e704d357744594f5542627a423476637268746f6a2f716b2b3337316e6e624d614337462f345542455031334167754e6f416b416e74516b5a522b6f2b35547a725236544947584147714d727266534542316a39525044323756586333457849566f79533763423036526a6c465061426c496163507951585735763133415165537438714a44696953486d4f3447715766556d6c43384f6f32364e3855414e6d456872316677674b6f43495a33537a746d565a524c64714169496d6f492f3150524138726d68774173302f302f7457714e75506971334e4334504c675a45642f75515a49784a3671455037753269476d4971635372626c324d6a524a473549755445696e31526276515548623236645a374e4c426b4a656c795067793534725a6275584c6771412f755352387a4c4a42672b3375516b497451596e397130644d52716c452f7973744775394556454a41383077753366724865676f68753747424d692b576b3676795630647a452b43316462687056666e4553646f302b6f6c452b6f376932544b4237684c38776773694f6c394d6f39716d754d4f69723969512b74587044544f79376a39617a78336479546d4559514850715158364e52384b736c4b7267437650676b745375335a6462446771357948307869663469554530786e346e4471305737656c6867456b54485431426d5453747a786a436e346f464a69423068346a344b6e79595366395272677270516b42556471676c71713057446476735367796931434d79482f6c444b3755324567566f69424751706a6d72495273733467482f56785163794d732f59465062457262534f654b327a7432342b434961574b4679666c2b466b4766574d5258676c75526d4f6c7a584a5766636a71495a5a4a587a58792b376767756b506267726f6163616a6d73506d5854395163592b7778577147753444726363337951615979694b2b4a31544f41314f4a4638797134574c7041414a2f616d6862755649476b444874515547316369424c53352f4258327a63694b7842664138506b6a4f3564733951456a773038565564376371344e61476d4343303370534245674968533251634b416331535a7a46574a706750656d74475a2b6e702b7169445a475274304f4253446376517630315663726b51573035385664616c614749664e2b534354387535555052732f77545268586954395037303433466958696a45664e5848635742576a7567704e7034303663354469797047334d376c5336754f37686d324b742b347476306755346f4d5832394f7154415a4b6f37636a776c7974742b5931366d77437a526c316b436a34494550366e5238703349784b4d50597372444c544c546a78354f675667414f3449546a49554f616b516645376a466b38694a65484a426a6b6478356e515177563062647a56724d795172626e5330534753334a4e2b66464257597a426257542b437547316e4943526e2b395a6235305669326b5a5a7678566b647a71704b635976784b43343761593146364254375335415579716a433649763176544c423072794130527747614274426b446c2b394b4e70636b5358484c6b714c742b364a564665584c735761467937694e584d5351623457726b6e4d4a486b316667705062337064496b44334d71624f3930675262722b43747437344f58444549465070384a314a48446d712f375a5a4856384f4336426c586b7a7052666a45734941636b484e2b316a554369506b3673424632396e58516e4f476646436337554177625567356d6a793477636741753251706b6c6b4953655241505048354c706134526551694a4e6b634f37437159627133494e47456548534e4c2f42427a576856684953786a79346f43334b3551476e35726f6934415445572b39336f6e313041702f4c2b61446d66596d56444d6e687737453864684a6e507a576e564f44344f634735704a3370786f6638416167413273496a467667737a444845346674567776595a667455455979494d445242517a53654f42476637466f467373784f4e4b5a4954414965614d4c6c75415a7a6967453745684770666a526c6e6135476b4a4d746c76633279534a48745763335961756e6a6d674857514b6533456f6d775a5378412f69563575784970686970716a3962567751556d4653515336686b395a6b3039796c735a50346c596241515669362b446f2b6149343845744e624f4238464a5768493855466b446d44517039476f2f4e555779595562766a3755523679616f4e55626b534931595653617a4c4848384654354d3567416e48353979736a745a77504e38416757556f4335475576324a394e743634506a78556e7442434a654c7561666a2b784437456173763458346f4c50497344776e3243726c5a6744785477326348456d314d6662334b77324244772f7451594a77614a4754704a694c3951646c304a776731422b7a745648323444476e4e6b47447a4166702f3841537249796952673434415a7262445a773654674d367256623273416155495056776238304753566d5a6a7042717a392f42567932374844386e585230615859483234704e44674e67506555485061596b307879566f316158464835725a4b3156387750624a55796a3545516167766b787167714f7334416b3536515748656c6b4c68366a463354793356366e41394d75664c39717574376b546c716e38506c2b31425635594e534b71713770775a587933477175424f54724a4f6656536d53424830395944664a4e4b577242696e31362b6b4232396971626b7352454d506d6773746a4f5748466159734b596a326f735771633650543571794a6e41554e66617144624b47726a7035354b67573531664170492b64636a316b38754472525a457047754842425362636f395048354a62747935714a6a34693359414f475376316e4474534f77376b47556d565a5a2f696a496e784548394b46793647666971786331543144346f4c424456314b4733494e79706770726c4b56634d6972664d31636b464d49484273466f743262635a504d55487853537541566a6d33656a50574b426a7a795147486c3268672f7742586367434731596655706370314d77487a5477706a6b554353317a626767495931576c764d784b5032786a684a73367367772b5649343534706674576f7835357574736f6b6c39546e344b6a7a4a67637558506767534e6c33697a50684c73557067796b376d636355664d4a442f554d45413178643663466447477554343845756f526552596c766970627543336d33356f4675456a484442553678423279576b5368686a6d733068427169756455445176754f716959516a634a6649667556496855386350324b3644364e4d654b437155444538617170694a64624538714c5435645078565565716f375033494a475570696f53776c462f62424551494a4a77537972555949474241777170496e777848656747424a4f436278563466546869675a793361717753394d4d46496c766367587979434377534a3859366b304d446c7757654c6a6d5561346e484a42724a6a633857536f387655613463306b4c4d356e6f72524f494531495935695342504a74366d644d4e74626269336334523875493665507a562f394e6e776b45475755497338534f7856334c5a344c646345626d53706e626a47577172494f65625a6473454a5149706974373661302f3159704e486d564f51785163386a454f6856626a5a4466424357324f5748746b6778436d4b4f6c2f624a6168595067474b45647547366b475a67564379316e62786c30784b6237635a34653342426864716f7539566f4e714a39767a556a5931554e454759304c496b4d6543314333426e4e53677778515a54676a584a614a57772b4646504a474f53436c7330756861764b4554676a6f6a346867676f69587843414a433136486f69304a437668515a78346879517a3145666d7270454d384b70645969486967545366624a457871797466456f784a465a4369444d5931306a464f4e764d344b3252465a52556a4d313175336167726c616c676b6a437662334c544b594963653556655a544230436557346f703559686a563030704d4b5a70504e4d794b494730413936575673447654546b42554b7356353845426a4568794252414871636f2b4f6d43427a495151304c42614e76764c6c6b3071366f614c6830664c7964423134622b4567307667746b4a32376d4474374d764e526d785631766333492b45736737384c514a3671685554734355756e755757783670712f354779366c30786569474e433451633751625a71733839314a7134344c7454746964466d75624f4f56482b614468584a69594a4b71464b4446646535744150454654397041466b48507a7052614c55784963436b76574a5156446b59494e3865474b6b354655324c6a2b4a504c56346b424a475865697a6d7441684b547153504531795a424e5442566d575937564a64505968455562394b43654e3054315931566352526b6451442b324341694943574a6567782f464e4d3164735649534772544875514c6f6c373039634437303272556355785949455a6c4a7836734b493066386b64556a32494b2f4a56637752334c5535694f7055334b59686b464c756f776a516f47714a63314b42514f434f4b485970705146314d554645423763564d6c4e544b4949496f4231464446424d4d464d516f4139455862745152516f49674941707a5178545056383048654574494438453175542b44784b65544177596e717a30706f324243576e4c6c69676b757375663242487961654a755a2f4257473259507a5245774f334642554947497a4b7346722b494a745947474a565a75694d74544f4f784177476b42753957516d424936512f4a5a2f4e6e6338427a53526c6f476f596f4e6b397a4b514d4a52303936797a3152476f7548546562724854377a2b314a4b5a6d775a68326f4b646368546a33707446364f447350437445654f4362564d4e45554875515a763667414a6978393658524d3951786431714e79555868794c49514572596862742b45566b2f31494d2b69526b435178486979577a795a7844695863455a615343346f56584f32357830382b487478514335616c4976514255695048483471324e6b59435262356e74566874427570425245744c714e6663675932332b702b6174386d6e5378343676775658587877514578624c4467713767424e544a7541437369346f6330336c3547705151526a47476e366e65735530656d6861703731497741656e66695534414a4c6d6f51583267634267506d683567413077505678564267414f717066415a704a574c686b3869414770577144524863537434596f53764758545067732f6c49796a4963304675725445426c497a4a704a6c504c6c4b4e42703449537379414142642f71514a49507a5352694a5364586b5462544b542f784a5977476f3653614946386a53516344384659486a56776d6c627a4d75315633474170775143585764555a5665715354354d55593359784f67494363484d515766464130592b567a347165624944557831664c6d6b6a4f50687744652f77427331594e596c30356345423836656b504a316d75586d71413378566f3167313036666969386e364d75584242514a69494770334b76457450564c47564f624b30773152416b4b4b7165356e626f496436432f77413654567748384b4a59427744715077574b573646325653797479414a596f4c6a306a69667a53536c62486a65764c465665595a4169544a3443497769676e6d62473553555a534b4174576f5236496b6a6869744130526b785a542b6d43344c53375546666c785a325a6b35682b6f66424b53353673516e467a70596f4b2f4c7431476b56343471584c5557654c6958414b32356f5a6a374644776e437144495a784165493673566e416c7145586549427777424b363979476b5a45484a554561756d6466312f67677839365a76434e556d2b766a5467746e6c445338543365337355317977524634304a39364372574a2b4144547a78503756446265527a354b7679355163416b6677386679535273585231412b39427168593059345973706f677a71697236332f685a5673437a75784a306f4c78415236754f41547874794e585a565236732f7a54776e304f63526967486b734731454966626c674155386f316b445678453969747354682f315a4f655344435a79674e45734661626f68346733466c6562747152614573566e6c62684c3669354e5167573576696569493655386433624553346235716b37637977442f424e623251474d543830447a6e614a36325379334554344a4165337657694f334248574d6549716f646c594f676a564c4b72414e383046506e36644c7946564e666c76463659736f6256754747442b37336f53746746674851447a3652784b614a45592b49695a774f49566e6c6d425a4c47794230517a795156794a6a4a77576a547654325a78424a6367452b39474d41484d69425250397070455450424264434845384f534268496e42325665696377384f3531564b4d783478334948755735794a4d4469713461345331484a5479626772434e4171373043415965776442306342316b4f3377436f75454853332b6f724c3549694e4e78332f4149614b2b4e753355534a622b4846426153416166773653717062675979505a6c56503565306c6a4977375337706f324c4159786c72712f56494833494d384c30795270646e72524f444f58387631567a7857676c7a772f685a4a355a79482b70426e4f755448776b717947324f6f764971366c76784f65444a684e356177432b476c42584746776541302b53516d383545617978725473566b6a4b4e5452387543476f36515938636336494b7a4c63597552504d5a666b6744636d415a6b697659475230584c686f33655756773239306a55515062384542306e4975366c7963626444376b507435344667526d457362564e514e483039364333575742307352336f435853342f315a6f52425a6b2f6b7a6251446a2b4879514b356e307853323774364e41416e386d6341305468375a714e636a50477079795155334c6c2b52306c2f7756634a53795965324b306d64364f49456a7a6f794a3344654f4d666e2b43444848634333514d35353846623530355277596c4e44644145364c592f6d5447392b67494b6f7a7531414649346c4a4b65707457497179747562753541456e42736c4a377034365a57346b737a36634f776f4d727a49367550684f5061744559454238667a43593775656f454455572f543756536664334c77307962534f346f4c657076346543754677594566742f6173756f787a36522b4b456a4c49386b47775468494776636d30785a77334453566b6a71377553734d674a4f4e4f4c653942624f3347464d556b74724351654d52774b6b515144576f344952684f564878727764424262697a434c4f694c45674748687948746b7266496c67395566745378695a4e375651556d7a717736496a6869724962473242706b5032712b4e7251344270454e314a546267494d5467677a7a3265333456663470593765336277706b334a48376149385571505135713437654a6c7131422f646767724d7264736158643158352f6d4f49764548446b74427452784a72677035634d354230484a31584c6759483846626169597334576d59465a45557962326443307877474f43437165316a4e6a4d3135657a497832634c6862366679562f6c7762544965355347306a4d6b616a42424c5070304771634d734b4979326475482f414236677259776870783166784f724a485451554d576442514e7049386662385534326f6930694d4b706a4b4e544f34334e3850624a4b445a6c684d7951504853315930556e474567386766795231514f457a376c5159323958566350376b46774f6d6f66396957543477315656635a7869656934535539766343353961415474583544704f6c7550425a70656e334c5965467934652f384673386e5639526f4f35566931554e4f5343694f31332b426b77503669486f695a546834704f564a374b474d70536c7a6c6a334a445945593676336f456c65307a6632646159316f6b6c434571344544464e474974764a7a2b53445469326c6a7a354b516a494679415141736b704d6336716e574c634b476c63383048533143574551506d6f786b57305963466d31774e48366a314469694c39484569676c7a5a6d51635272776571714e695a36644a392f34712b46387969474e4b7167335a7844527167506b695a416c477669537a74513039537a334c317a56704978475842557a6a6675356e546c33494e6c694d5a3145786e306c58367a484d6478646332487045726e696f745566547a596b39764443767a51624a47656c3339755156467939646934702b6c562b564f4571794a2f4245695148564a2b72562b7842574c32346a7030316b2b4a344a72473676784a4535534d525374416d4d523330507555755467645a6c4f4d584d573539694330626f677467684739454561362f6d717035776a504c425652467947626e322b5344664335422f6a33705276424632746b3663477a664a5a376436583168326f6e2b35616d696e4b53433257377554384457782f464279714c6d3676347a494c2f3841793254523338443033594e7948563755576547367467365a526b7a7667677674544d69424c323449786e4f4f6a555761526c4c54386b776c435a4d6f6b7848494b324274784764635379436733725542313343484f72444a43572b736a43364b3851667957364e2f7977774137346f5874314676366b59536a32494f5a5064524a4c796f2f77436c2f77414f39533376595259524f5038414258354c6639316245656d454a66676d47376c556741446c6a386b4762376951384d5a635830736c334735696133415134783539764a617062754a2f3549546b4234744c6c6b6b647a5a75743053307552564258626c61755238306b504a676e7477323569424f4d54584f6957374c6234326f366634575345327a714e445844735161662f42674e4d74466341376f584c57792f37554850385656696c4b334b564e5061334657376178626e474d3461535a6974634d696730615054532f544355682f466d717238665463534e4a2f686b36592b6e324a6c69426d2b43617a3654626c53455152376330474b55625247734e5869794568474a36596a5346304a656857367544335a4b4430697862654c584a502b7154494d6b747850537767412f77436d727153765861516a474263506a56626673624d644d64526742332b2b71706c4346756d764242524b4d76455977442b4c6b70474d492b45443239717179666c796857376f4f4f706b676a747a482f376f6434515333636951515842427977526c6430305a7878566d713153506d5250596c64674f716e77515761497a485649347536424e76474d6e2b5371457454364a5a636c624b5931445552306a4a69677a584c5938622b334a4a62735837674c61524856395258513879324b47756162584141466759794f53444a50596273686a434a7a31655a526c4a6244647654797765636c6447356f4f6d50694a797739786f6d4735614f6f686b464232452f45657032774b732b7874514f6234305044386c50376a5a5a704735543949535433646b56615a666a476e484a42644732595366696138555a573248376c7a4a2b6f616938472f327171562b34535a41744b544444325a42305a62495469544f68375841344f7334324d6952474d6d422f696f4654624739723141366d695846473979766a432b784d744e61666d6751656e415342426c4b727934466c6f2f35424b525a7a3030705166543263315a355679314277527a5a436b34732b4343726c494a793173456e447455387257507952466d556571345a464256356b53354177777a566b6238766f6a456c767135497738722f7036675437647965467933704a7a515666315772626a577161586d434856626273566f76776950355550376c61776c505479306b3051557832393235445845484636754b4a625675342b6b39494f6646614a2b6f6263445635386a54426d5649336c71386636636e3476536943534e7533575231454b324871466f4234516c5374417159576259772b507437634664473459316f7734494c4a6571426e466d3658354c48756436353662553478576f3771664c38306c7937634e43613430515950756e50676b4374586e6e52457944533570626c317a7146585347506d4f5a42365946425075744d6a4b4c644b6e3978305a44587a7762697135322f774259656d5156734a5136524a7a54395044696772757a46774e4e3438644b65483264766f317a4234694c756531614e496d7749627163767734494862484373584f4b42504f323462544b362f4d4838553074335a713835422f2f414a626f665a7a71783849535739726f714a747964417733666d644675394e736641414847574470645570426a587335717732676161384f61426c6274687a696561444e4f656b7444323470586c34595250506d6e6c6469484c736561587a4c56772b49396764414977494e476f567045726862533775372b775666325949314458584c542b784e44625166714634766c43694458397675354478482f61716a734a306c4d76785354326c71736d767735616e6233495174517439636463753130422f746d334a4773467a395470376579326c6b3454654f50616c6c4175514931486238456f74334a5545534f442b337a5158543265334a6b52626d583676466d684462574234493651324a2f617044613344306b6c7a7a4e46723871546461445038415a5738545771744174786a314e54354b6154476f4439717a33336b4445346f4e476d334b674166506b7135574c48564568686d566976327636596e68562b6d6a70686363594759516154613230523079787964304d43346f4267714e6359783841624c534b6f526b444a744d68523046307478704a64746553797a33506d557a526d49546b306f6c31664861326751636a787951565049344d666e386b3532676d377959653943646942797a794f415538734e7044342f5567535070316a4f346138422b4c4c5a48595741514954636e46796b6a7069484271796379694b434e52782b4b43753536655967365a766a6773317a303077715a6b72566333467949615069507556557274346e776a33346f4d51324577574e33526e6d3630573969593138382f4657784e325a7248484f4b76684d78412f326c425643784a772b3570324d2f6572644148686e712f6979566868626d476b41644a344b677a386f796a434650704144664e414a3755337870316764374b54325568535638682f34714c4c64756269345869503841514d55304a5868347256773973575158663236354d4e617678647550374657646a766f2f3955474a78307963664838453864786667484e6b6836632b366973473876476e6c6b4842744b43754f787661646479375163635573647147485757554e3235636b444f456f7437594b6a7141626e52426f416a475661676331655a416a344c464638534b6850475a345a6f474c6e6f6d4253715551467a784d36614f34694f6b67796461504d745348514e4b44464778462f7864575473434d573933376c70476779616856674d596c2f717951595441365767435368354e336f634d33693746305869326f7a5a4e356b516173666d55484c467739514d657969614f2f6e414e57702f522b4b336e645770564d6d354b5737776654417344584848696735747a634736356b35485a2b78575274426e346a714744384631544e38612b3359717a61416561446d78455a524d6f737a30314f725a58644869455433347035674e704f47537a334251534f484c4c385542316b7949594e6c6d796b6476636e494535495274536436725a435274307165336b675437556b6d6d4b576577656769333572564b594d61347173337074516f4d2f39744d476e454d665a6c6235567a4354313571307975597a53546b324b416555596c395854775655647335413434395374495a77656f44686a564a6132786e306c346a496f4c78626b42514d41655079566479447770696844624556647a6c7955416e68795a425843334d5436756e687943736e65416764527161424a64323434736665714a57695a43456e786f65314142746a63673851374b6d37744c6d6c333767726f514e7330316a323745384c3177634167775432317a786b397962374f354541786b7a31433645726b353162444d685a5a57792f524d6738304457396c4c48574966716b616e755673396e6174786563386379666b736b746954466a4e387767646a71786e4c3845476d576d413662774e634b4a4a32353341776c3857533239726230315a2b4f617446694d5862446a4c35494d30765437374f5a754f534676627a32395469633357364f326e6c674f48746b6b38715a3669676b5a54496152434d7a63744e78644e4b4269334838455a546c4138766d67543731717947714f6145373064464d76443034714765696744562b42566c7644584b72636d396e516337566953364d644d7737422b78627274325a654d5130657856327255346d6f49505967574d51413049682f6d6e3679426c37425743314d4f573731504a6e4d59394b43735847494a2f4e487a62593851775444625844794877566337553554304542417831417445753470677334675a46784838467030546643764a4c47335677574b4369586d53493144446d6d6e5a4d3550504534636d577146746858393663577445517a6b446a6c795159504c4d6570395753744d644e596c7553767437654a69596b694939714a5937585358657143765734456f6c4d4c6842654b455142476d4a4b4d4c457064517a34494462766d45684c4278576a3979746c643879754f644f534769524453516a616a4b70515533684f626d42785377743670536a4930697a46587874434d715966676d68456a41552b51515a2f4969415a6e365670687437636363472b6e6970355a63787842536b5844456b6d764e424c6b64493079485366713464334a5a5a5741654b31787358706547512f4e4757336d4d362b2f39794444633277666a2b49545174757470464e4c305a566c72635a412f5456426e4d444750534f56556b6254795a6c66626e714166762f4e4f57492f5352562b49515a5262366e464970784f4f707a374d744d67515841565552423631415155777477757a647138566435516a6b5850733674686345442f78676b2f5677522f75656e70494b444f4c5a74314743627933787834717762754677614d4355336d526b576a516f49427071517a66486b6d4577432b534461716d70785546754c694d42326f4c493772415a715433547471595346617147516a48557764714c4c6376526c30365177794e645344544c644d2f5a3364716b726b5a345a4c6c33376e5561742b50424c6276477253624642304a5963486f7a716f336748694842346e42562b6447644a2b4c4a565571356f6730693545784f6634712b3235665178464d537376322b76422b54636c6462387a394f4a39696765632b6b79727a7854576a4a6e315a5a716935596d53774c366663716a7462326871422b4a51626864692f555848366543717562734636416e344e2b6135353231344f516365664474516c74647845794a2b6e46426f6c634d3678775030674b7656585763736b67315733697449455454696771425a7a69315065713773744e573756766c6245653066464b4e746271545535634547447a7848716a6a77566b726f7565466152596741785979354b537451794c61637767786e2b6e314846316f6954306c67355436514b537a2b536b6a5641766d4f5131424841444d386553736a634f7255374f6b454975376375306c51513652356a75674d6a6f6b325355584b746c6e2b5342306c394a776f787a644454702f46424c6c754863566e6a61746e4876577251414753584c48645474514a4e7a4961515034644f41516e46367871586f506d69594578663471323348514450366167632b61444a35556f343441305630424b52306968484c486b744d376f49484a4a724575702f4633564341516d635a4f7955786e71705145347132314575477743614673456949356b386b474f5730334179385874564c4862626b347575686368634d656b7632304956516e6447725334423666785156665a58616458376c493753344d5a55775a58536e4a697a6d69496c636e4a38346a4138554651327368677a6f79744d535147594251673233346a456a6970707579476759537167713045306952564a3550547a7a56384c546c6a34634f7847497a353658515a6f62615630506838457364735a30664e6444514249793455626d6c4543432f682b4b444663322f6c79595335397159526c4546325458535a6833777956636264584a78774861676163324450334a51663034424e4733637a782b434973536b4b3166755156786b53612b355157597a71774278566873536a5756496e703730336c41567a34494b644941416a68795663684c567857715547446433596f5974306d69444a326f4735776f7455724c39364574767148453845464d3777384d5355735271377643744d6475473438636c43424b4e636b4646754d33315536523473776e6871484a2b3931646f4757415479746966546d676f47716654777851386e5579654949445347434c6b34595032494b644677446f4f5046526e446c615932787261745649787a694333366b4642677763344a59322f6974424f6d6d525a447a49584b6a50696753506845696c494568714f487952497841512b6d6e42426e3663596e464a7264694d766974486c6b783155447059325a415955514b574666314b5167626e7379614c4768566f4959494b4e4239754b714f5058526c726958704d4230766c2b5a6c56425450797854552f774145496771365733416f47523873434c5635494d2b6a553553746f6f74553461616c4c4f7a706a712b4b436a55387146487735684f4c64484956766c4836686d677a734d516a45524556716a7435534770714b6935427144424256474f4d4254344f6a466f3459685168363571474251416a4c76537a6d3247437430365343445256614351352f6567515847777146504d6c676e6a422f44676b6c41413830416957716e4674735534477342326f6d4d43614642546474463243426731566f30616738536c6653447151565467593969456547425634477677684a6f36734b49494e44767753366f6a706239364a6779536358514f496734714875564d6f3136636b4d554461383051777a536c73527a5568456f44383166433963685155564a62456f3666656736746a3147574531742b34733359734d6356353353526a524d5a536778474c6f5051796a47684e53714c31715657445557473376694a42366b4c70323734766a56715159644772787248667369706a7779585a6e616965594b6f76656e2b5964413755484141303471364e3353467075656e586f4872697734725050627a686c5241524f4254476255564f69574c48334945537a775157657851456e4b4775517878537871677343536369664568704955596b4f55457a315a68474e774a49756f7864413475506d6f62674f5347684b49484f694234334e4b4a757571394c6a67695167506d6b30534f364f6e4a516830414c393647707969455246417246466d484e5231477747525142526b57795577514b6d414b4252426f79414f6f61594a6d444a575146715551435a6d644142735541796f693156425245526170514b795a7150384534675451356355336c5a2f69673942396c4956647148776f32396e636a316d524c305a57367943784c6e42565870797766755157584a316568564d5248465677596d6c4345386457443979434f3477524d324c44484c6e3370535452796d4d336b5a48676757496e636c30305a6b733641784164303979494c53424e565a434e534d4167706c4858302f774470566b62654e575079517432686464714a705739456e4753424a3048694d7536695069445662334953436670424a346f4247426b4b30344d72414955474a56555a4f4349346c4c714d4a615348346f4e4144654e364b746748716c706e38557874765546674f3942497938326b44686769526f4c41396f536d314b5142675762486979574d4c6d5266686b67753161596955715266323571794e327a474853412b4c716f516e414d513579474b704f326e4c706c34545769433655684b4a44666d6862426a3248337175473375526f545434717a544e7348496f675a6f347737307570773363684b33644478616b713470586e412b416b387854336f4c4c563067394f5034496d512b717271433349416d5130387678513074583363454246324d587051706866306875654b6f6c4978424d6a5146796b6e6374584b7a77794343793575684b7238754e556f3357716846414f43713875457670494b61624e7049515847594f586971565075426336414e4c664c3235704e4d7267655277775a57394d53492f77433776356f45387a57474f5842513342694f48376c6649775a6851446971705345756e49494430334f7471464c5061327a4c56494d6e4d76706a5673636c57397a566767734e7145527068555a5a706d4938495a6c527249494a3853736e496b4673577a51435a7a4b75445271733474616f6e715268307533747a51585a3971614e345278466630344b76567a37304941544e554575323458756b42683856554c4e3175694d535031542b61754d5948704c75665a2b43574f336758302f547a5156364c6a566b507a375577746d5642546d4672387145514239523449577a45546b7a36766c32494d4e7a62776b4143543347675448302b45434a614365395833524578304467794a6c634c364b68416b5978344d55756a727a773756446575594669364175737770326f486a61416a515970784a7a375a64797246776b386972486f54675544544942635a71695149654c5a712b4a6b54315948425633495377774b4143454451443855776d515763736c65324141636345646359556950656775614a367069696b726366704f6c38556f754159307a52505534486167716a594e4a416a38557339734a48574b534743766845524e42564853774c356f4d3971307a79556b424c415656326c7167686b5441452f6832494b64594c76483979445148567050755771476d50656e426a31567834494f63397574502f53707245656b524a504661353352614c5662386535557a33647133526e7a4d754342547168344249674b7358726b4e4d2f43586f4d67727875674b3451507456575375786c536c666246426a6c75626b6571524941354b7762737a416c427a2b4b7445347353532f414b4454447041367631494a423542697a5a70394d496a716558387145492b594378774f6642584552785a38735546656b736661697a7a69495331525633524b524168682f46522b3956334a6a5658424170774642576975456f6734762f414b614a41354453697a56376b38544e67524667674d7273593169694c35464158626c3777717041512b6b7638436c6c754b6a2b6d517839716f4e4a6b7a796942372f774b533544574d414b6646562f66614a485861616c4e4d6e2b43614e794e3450474a4466486967746c4333416c6733687a782f6571784375765077736f484a4a50636c3179743179484a4244744c4476636b4879376b6e32397533534f574b53344932706839574842366c4e434a6b645242784b4379334351704b514c5a384279542b634e4e4a4f314b35716b77757944364b7437555765567339524d6366676736647563645a34684a4d796c6378706e3246596d767430577733484e585174586a4c5651557166324944636c50566f69454f6f524f525078484a572f6258542f414e4f546537356f584e744333706c4c484b71436f6257336a4455444c4455634f615578763235414352507954367075356c6b6a4b2f4b4272562f696741457a6a52766d6a463564416f425874504656655a636f506a77566b7270416379787a5157615a5244636c5a476477395559342b396c6e6a636d3767756f6264365a63796c46427030364b4679334641794c394e543755564173584c634b536c38316443314d41536c4f55706678444241534c39794e4c494272714d702b35566d4e77566e70626b7268496739524b724a4c7447584e41386f365a4d4d43465663747a4135793936757836795772395353423168797a5070696632494d4d34474d4f71764657783879594a684677445631723346727a415744633845386f634d6b474b4e69356338524d582f537249626636545849635662636e49435a69484c50415a4a5943354e6f452f7a45594f676f75524d636a4a75377356627974764b596f425474585274327051675463505548642f67695969684d51543259494d496c636d58616a657754517633414e49697734737465544d79496e4574386b4754376a545754756543635849334270442b35616f434a715248687952506c776c7159456842686c356a734a2f7343513753354d31756b396932796c7136387677554e3053384c6479444964726674526333416530565546754a4775546b48683831613135694c6341526d2f37554936684575426a6c77514c6269664c44342f67724b3454717272567a474c7154713051677a7378597350626774486c776a31414d56544551746e6e2b6f6c504b396270714c2f6d6730434c6d7371356533356f797441304241302b3954564552384e554f686e306f4b6a616942696f4977617054794d71663033355955564d72506d5630746b4849515865585a45615544313571706f534a446a3979726c74744a384c343039714b73577a4561744c45494c35445a45645a6a715046415774703472553759352f6b6b6a43594236515437307372596c307a684758506d673054736152706a2f754743796e613669542b6f30576d4d327038417263577178515972657a4c36497348465854322f536d4f6e7a5133384f4b302b58714e535877644365306952716c656c4538704e2b4877515757747447306571526e485056795655534731426a2b435347324f72574c326f413461645878567074693348706f325341796e474e532f44397170755859344677324b744d4e52494971712f4c31466d63593969424c312b78415269645a4f4c674a4a58375a65554249667136666b744d526268395059366b35526a6b326646426c6a35567743635154323846584f4669344e4a312f426c72704f674f48346f5332774e634f66376b47515768436c756d64667a566732386d71782f42577a3950426737312b53512b6e536d4f6b6c41783278694a524a48476e42504b4f6b6745694c6878774c66697367394d6c6762682f6c2f4e5766614573443078694b52782b4b44524735626a44797a54696e38327a466e6e52364d4f3733725043467350487856526e4b324b54464f78426362734139614f36654f36675934312b44724a634e75574246667056426a636367532f7076546b65614465626775502f414f33385649327264794c6d697a4e50555343487a5a61497836476d67732b33746a73644c48302b335071654a3752683249786c316e4257615a4f775155543246734541696f5077516e746f524230445372784942684c68376d56576f6745394a595a494b6a74686878342b3373466e687462647068497438566f6c435931476b6458552b72424d424b5434482f562b43444f4e6b4c7542665074577133434e4f6b4834684e5a7451456e5967746c78514d4247496c77514f4462446e53434d714a495274696f69442b314c50625470706b306c566f764136584c596f4e594e6e77365971756368416e5444397856427333597470774f4e457032323973784a6978693731785156334c346839467956614e4769653375723179576d4d644d4234586958423530346f786c764946726b57455976794b766a646e507147667a5156323462794a414742666f6a2b6145664e73394d7159766d6e6e67544e775034665a3074754e754d52355a314164354b4252496d7630717656722f4870566a61532b4d577237446d724a5474776b5a365777514a6274572f716a67712f7339766759734f314f626f457a52736b7475634c6b39446741437143323336625a3067546552474c66444e4d66543762654f353243537a78327436334c566175616a78563072323974787062314e6e7171676f48703179424c584c6a38704b6e3761557831537653623955714c5449626d35454d52414846736578574341596a5577507a2f61677852326c7353443677546c6b56644333626c4578414964615462474238586850357052743949424d6e59664e4253317550555953772f54524a4b64694c6630615a6b7857326778646c584b35624a50695a6b4645525a6b387263596a50676d74414748574d75716c4172444145394d582f4a41376552515679466948584741485a524a4b33626c51513459532b64565a434e794250544755526b552f6c536d34416267677a7932305a344433636c624347674d4d507a566e32392f5471597835657a71445a5869644f6d6e366a4949434c4d6f754e4d365664334c4a4a47544e4b45794d4f704d4e6a644f4d39422b70704f6e4f797633425463494668474d593850345a594b794e714262514158384c4b6d58703235422f2b34636679717362506366566446425453342f4a6b476b325a6a70413470504a764375696c50462b35515175577a706c4d73336258744e55336d334157646e4f6e69677144577953597a722b6d6f72334b7a564d6b394a785a2b617246376353494d376e54456c34725443357142315a487371675151713744676935506834634d31594a653553514f4c554e45476163376f4e4d4f53647a4d646675772f6570574a63686b6876796961594442417074434a4d5344334b754e79416a57426966355374586e6c67357049347158622b6b734a30796f3643727a69776350334a682f554f6f4161514f43714d7831546b35412f534b6e753571337a774270446a6c4b44494c514c63576c4f455762394b7a2b5274702f774453796f63483933354c52356a307835594a4a37754c314343714732416f4a6142775073367568614e7353656276386c6e4e324a6f35624c4e517a6b413563763841536775364d5a75337a5541732f77415863714937336352444379444c2b5a4b50554e314478323665386f4e6f38754936435255597856526e4b6d6b2f4243337672397a706c45527a72543237452f6e584a41454d3161666b6753586e7a617249585050664a796d6e6649776b42375a4966637a6b6646466b414e2b2b626745774e4f4876577130626b6d4d6f3547685757653975572b6f5263384d6c5250314356787a704f724238414f77494f6c47665831306648536c316d3258694930796f36343932376430314f65614e72632b57583153443851352b4b447033492b5a346746554a3747426252412f7a46305933357971533434554361563479704b33422f7742576c4262486462654f4d416639507978536e314331437252624e73666b7338376b394e41503949556c5a6a57514479504a4266483164354d41565a486578756951476f666a2b537947494272387346504c747861576f6744356f44317a637976466e36593455576d467373574c686b49787333413870414e786f6e386d333945714e3950464173724e3464577035446d732f6e627142725a6b54796c5261626f6d484558597044356b513271584f4f53436d33656e4f736f47446e4f54305775463649654e7970564d515973644e526b6a4c7a7066394a7758776b67746e654576446e5433705038416a4e537831634f43467556775072746d48366570565859536c63707751614c5577335548657161516a54707a5761597557394a703338314958704774582b434270693235314139315542354a596c362f71566f7667423534486b2f3571585957376759742f715156765a6a526e495538727a47444f6950543534327052302b394a50303364794e623150345743427a596d41774e654357354349443341306a6b2f42562f322b364d62787269564a62487776634c666d675954742f534171355848444d5237653243614733426730693947344b33376531566a55594855677a7974795055492f6832703941686950336f617470626b4e55366a394d332f5972507564744c773344582b4a425443396168502b6f4748486974417637576e6c6b4238337171626b6472636b424e7a795649324f7859316d442b486367366b664b70706c52434d72636a6f314677734e7533734c59654d6a715a7138316639785a6953307858336f4c66506a55313163542b61627a74554b456c6c5271686365514977397a6f656661774630486c6d674539784e2b70326a3733347068667579654c3049654f72696e6e6545616730537671417133375547616337684f71644d75615164556732416646644757334d38384b4e7857575552395750596778764d5249416638414e5a352b63486c70783756756a61386d476f36704d3577512b396d415874542f414e74416779477a75437a52644e474634556c444832375673382b3437434237564e56776d676274515a35576478494136522b4b49736277645550463763567145394447556d356b356f2b5a4b70316e6936436d657833736d45694b636d54575954747647394553517569356344516e49532f6d775755326232496d54326f4f6c35734c512f347454314247487854584e376274395174354d477a584e7479755734365a6d76616b4e7935636c6f627043446f472f4c495939797146792b53524749774b71454c68776558597234457a4c56483745416a4f344470493967674c6847565365373234706a476574356b747a56663231734350555836766967734f34632b3374324b534d35446f414a7878716b2b3074526157724257435248676c586a37596f4d3876756d72616c2f4e71556263455567546d5136306e63534d39414f50747853655a47596374386b4654627573664b616e36714b6556756a2f7941772f4876576d4269584c395030317a5436544546726a4448462f6d67713634427145354a7a433657566b664c42655571746e696845784d68554d676132474131466c58636a5078776b772b71504a4a4f65674755574f5859466e4276534f6c7877644270486e6b4d4a416a464c47356646415136547964784c70684e754b712b7933455a43506d6170494c52637653476b6b4d6155716c67424d752b6e2b624e47507039777965556e4f50425633746c646d414a53454150303151624a5168706258482f544c69717a5974334438316a743745515932706636705a653958574c456f7a4a3878332b423439694336466d4f726f776a3742576662433465756766424949796d657138503559347075713239582b614244746e3852484a4162655673536a4b7570577976584d492f4650616c657553796c2f4e6b4547595475774b4f715a7738505a6d56736e616c475043724275437249496f79436932646358776b5077545274357844484d716a6333394a625355736431654e496a33356a6b67324d4a7530612b3954584443515a5a696273792f774249376b75726d547951625a585953384943593768756c755a5751546f784a4666676d6d6145676c426f31524d61786f6b4e38414d49674d6665714e4c6874574b61566959366e6955466b72324f6f737364362f6f4e446945504a75474a3035413655492b6e47644e66504442416739523671695162504a61624677534454442f4846434f78414666324b794f3149384467494e4572456f7863484c42596274753644554668576d41576f526c47686b533257536731616131515a34427753666b365979427150334a3945514337593831566f74764b74496f466a505351415134397932655a434563427a71736d694d4b5a346c73657857796e62745342625652425a6f424772482b4a4b4e41484a4a397a6169532b413434465335764e7141356c586733347379435046336a54386b4c73714544677376334d6645774e46564b2f71646b4737554337344d6e6a4b46497964795175594e773152554a6f332b71764e42766e516c696b46795949306e39764656526d5a30656854776a41567a4b43306b534a705438306d6e553561707855323841474d692f483234712f5862413643346276425159353755696d4156677352464b6b746d6e4e377a493077695737316c6e636d5177694b5931716632494c504e426345734650754c45525269337853786c45394a4743615671784d676c6e7a624c6767722b3646787a555052475574636742377972644e6744456b713642744142716f4b49576d727142494f444b584a7a6c4d6357713161356535573678455662717756416d383334494e41426d785068414a3571775230306973317135474d65645848616e387a543335634167736b4e4e5a562b615837614a724c78637662464a472f6f44346f77766e5533306e675543584e764356514d654b6f6e736f6c70437461426168656a413450564c432f454d4d765a30464550546742714c75726f375a6d316a6e486d6a643373782f77415a445955514f34766d5a655135636b48516847446451715062424454587244386172474c317874595a387561726e656c6757787951614c6a77426356616d44557a4b705039585038414a5a34795946334d68696358545737305a686d456667676155582f6c524e734836695432347058387a44427531474e6d5262547a514c4f3163424d55766c7a786e34522b6c61664c6e714841424f625431515a667434394d67353159756e466d6e54584d636c70466f2f3841556f6a41516934422f49494b4f6b46733270326f536a4669414372684154367330686934366368547443437144413657663449786849487041526849457366667a566f49424177514a4c56506f774977536d506d56417278567041786a58566a7943575a6c414f513735494b2f4c7053497037316159672b4e6e5378424171532f5a785238786a716b656e69676b4c4272326535554453656f5a353969736e4d7867626369432f444d5a4f71586e4961517a6f4b70796d4b4450696f51526a6c2b4b7674326e4857514f655a3975354d384975666478515a6d3156656f7a5767576d62696d30354175414d632b784e4b516d353449456a4b5551777a5451764164365756324e79674948486c2b395a6a4f4d52714f422f4435494e6b37674557786f4f3130497a45515837753156526e614571415537364b793541525050476943536b49394d637171727a4a534845417130504b6e374d456869597678716772776a6c5539367631796b4879564c67504a75715236527954616951514b6b6f4a356b6168745842584351693961454d46544b5a6f496a39365275707378376b463433416964514479412b4b4d72734a54694836635a4c4e4b4a6b53523830546169316355463757704679422b784f42626b48677a4841484a6c674d6f676b7468675544754978625348374547364f36486867456e6d77784d583068553634334333684b5533535974546d6336666d67304735704c6b557856596d4a6b4d503271364e79336a494f6e684f45695234614d41677a77615438305a524d5141635661396e4967596a33715047534450646a6e77516c435830344d746342454370635973717a617558422f544e43654b436b52647a6b3155737734446b486d724a4152636d565879346856334a435a4c4942626c6e462b48556b382f71596e6970636567774a3559494342684c544c484a415a584463774b61626541593865436b644c63777242554d61463046506d36744a7a44753668754574427a714875567a516c556d767479554671453842315a6c426e4d6937635258745436336b787743753871454f6b45756557436f6e444636382b7841597445564c4631634a51474d7668697143415137684a4f4c4455372f7451614a334936527847464743486d5630784b797558315356746f68385456426f6b49536a58465645436d6c75664e4178317939716f537545737942685a4573435655324f6d715969514c7637464c467a795147467a50464f4a6959645669726f67456f4a30345471704b6f53683579357153456e3152514d634270775336706e74794b72684536612b35586d42627077396e51447a5445486741367175585a6d75436252356845465a4f3377716779362b7054533457673243427a346f54737871493438304759776c4f5134444657697a496c6d5a626264716d43614e6778476f6c79334e42674e687a675650494d61456448466445786b3356543971575145714d3478466662346f4d6b625250544c354b713541687336653562644c5546466c7543516c31414769425977444d456b72594d684e473557756165635a48424257776473384854572b6f766767625a497172764c5a754b4249326e714b393645724770316147707835497962484e416868434959784c2f6968486132323145454a6e497a50597043514a396945435273687152565a6a68394b766e496e773039766b6c494d744e4770584e426c4e726d3965394e7047484a57792f47716b34556f676f6b3258596c6e413547696331785445676f4b4e57516f45524b55533456756b456b59664a54546d4b3969433678366e6374387775705a39577458443142697544355a4c6e3264445159795a423630536a64384a78576565326a71365931342f6b754462767a74556569366c6a31576a544665614454633270495a2f6a6838466e6c73784c78426441614c6a63536a6f4561343969446d52324548374171767459423258584d435a6451492f59717947365751636b37534f5170676d6c59672b485974386263596e6b713541486b6778437a426a78554e6f4e6b46706a46775748763756446145513069376f4d4a3238545835495332356c7a3572635965354962656c42686e5934705074797a6a4e64487939654f43726e5a6c7846454744794368356461726635544d716f326a6d6779697a79536d44443575746e6c6e7553454d61596c426c304f4b59664e43567073467530634b6f584c555842784b44426f50306f2b5778624a62764a69434f6145625966534b6f4d65695842534e67354c6f65585675394453424638304753466c2f454f394d4e714a666b74635177424651556f44534c494d76327842344a2f74347837566f30594f686f30747851557873634237424d62635a43727132324a4651792b6c4258473370726c2b4b5a73364d7244707952706f51624975372f414c757848547147745270777049672f776a424b4c7430665651636b4673684c54704b51645051545833704a2f7742544e7a386b4e424965582b34494c74496f772f637045746b684767665766336f5753644b427749366d347057306b78793971706a4e76465655585a3444414948467952774f46466245786f357037657a71694c7977475363423266466d6b79423465575158716f317378304f33755351646e6b4752362b374f694268473341744930566b546279717972304365426f726a745452794b38304361625461704277376532614a4663644c356469614f336c422b484e4a4c62536c4852466858322f6367516153656b344b7766307a6f4e5078565a734855596c2b316c58486247503179506167314335456a6745763349314d42583953706c4334616b684c6f6b3448745242644863514c76306976612f464e432b44496b4f514d3156473262673566784a34577a4848486a4642663575706f765433704a3771555270794253414f6361383037526a30732b5a6b677238786e34356f616a707156624969585658547956496e6a6933747951584355434849544e4763576f4f33414c4d6146383038626f4343343234546c553149436b596143633156357572704e526b6d382f6a374149476c634c45466d564e7a56713174685139366875485630444253555a555046416e55376b6466344a346776314249626477304c4a544f37456166696775304d4b5a6c71594a626875524c51442f74516a4b37623658444e7752387a52557543656b6c41326938427164755053684b5532356f7a76796b384e522b64466e63563549486c4d2f53377059696369426b634d6c5a43656d70772b6c616a705054497677515a6f624f656c79585168453445594b3656774f4e524c63496c4c4b2b4736582f33494b4a774d63716354564e716a5455374a70334844634d2b43417652796438714944517554676c6b595377625646535533385474696e49746870596b594f4d304268435568526d50745244794c736a3053306a69366b355779356d584b73456f7350306a4a416c3278654150395155565174456e544f59647647796155764c78444256436335687935682b6c6b445232344f46336e32685732784d323370552b384932777a305a38654c49777536496d494c384f4b4173525767683851723477474a503570524b48306774324b696432656b6d6862336f4c35526247574f545a7165556168366e34724d623070793766682b6155473541686f677848774f61432b635a3847545737686f3342552b5a4c485334504e567976796764576d76504c397144596237394a43716c7569344f67313979706c66755072464379467a584b4f6d524b43323459334b73797338746e426f4736654b7a466a4853547a556c4b49784a6c4c446b67764552624848765147336a4f6b693272416a69736f6831534553537272646966696a45767a4b417832304945694570633833554e674f3471587750425877746b594a6f327a4b4c78694367724e6d474e4471706878532b584541527a2b43752b335947424c4a4a62655249424a772b4b4367376533726149772b4a35497449502b6f4c52477a48553242616a386b3874744750315a31366b43516a4b5557444f6d2b336c48784d4f5153796b63416639536b72706a2f4d676b72656b4e583556374542626761536551566b4e772f48562b434572737763414f6141333578647939616469547a514f724c676b753335573846686c764c6b6a6f694b494f70486367734133556a432b4447556d6f4f617a456c362f702b4b7568714552306b687543427a656a4770684539716e6d43645445436e3071754c7548485a334b4e496775522b534147656e3570764f747a66586765435952307944436850636b6e4f4570645261683559494c596e5634526e324b7a79376d6f506763316d383459676a677039356930774b38554458624e79544345744a72584d42562f5a5a2b6654735448645341665548475a554f34424942367064694143313565457959354964524854497668795a45586952574f507954776762674c42425362392b324e586d796d66437877516e756f7a6c317671373856654e764f6a74676d4732494c676f4d6633635a484167666971726c304578456172664862783851486677375530496a765159493270334a6444735533327367776b61484c484264474d7630346536714a76363269634d7a775159694f6e54476e344a39645138447a504661444b32486c4a6d514d725146525164794132393434455a52595959714463516c68624a4f537046797a5453424850484e49486a6d342b5344544f35636a30366678437a793355375a30787336766774747263426e716a35344f514344464464334772747a2b4375687572306947326a6a2b5a7171323575794b41733336566d6e76705738496b74376b46306a7563504a4566384156452b31464e463258304e326c5a492b71334d6f6d50617234623254426937346e73514f4c4679525945784a44597573356a66674b66556449315a7262397a4770397663696234384f4c5662682b3142696c35325963696d4b6e566d37386c734d34796b2f4c346f654b6a592f42426731456451637950795347373168776346756e71656b585a5a70575137303973554657757a6238556176786f70447970513173584b7468746a526d2f4e58573452746a79382f67677169495a41744c4a56796355694671774c4b65454538506b6753642f794d58593563305a5853494f785a6e66735268496e4853784c6f577847496c4357457a78514d42475564637138497131374d75672b4a5a424f4a31534649696e74374d674a526a4d50586d67325274325a436f446c565468626a485462446b35716e7a6265725471447177474c4d43676d6d3745536b5a524a77436b4c6c77394e41556b624a4d5834465356733278726c6d67766e4f55427a776458433550426c6a7458446266554b4e32713257395936675750763967673047567a4e793377644b6441476d516674584d753771374d796a35704c6b4769744d3541796b546779446f524d635741726b732b4a314e7a56666d366e65675a7578305a587444617167444a416459385179514e2b334f55744f584c4653784f4e77616f77494f466353675961484d777a566967633344414f6378774e454c5a2f5845416857512f7067784b45705641594f676d754677413669416543686a45534163732b6168446c2f77423649675a6342484e41544d47556a4c43493675394e72796957487856556f77495a7877532f62314a4831494c5457723573704f576b506936726c73373071514947576f6c4c396c7542495063694751566a64434d6752457334795477334d7a3074784b497362697a547a493471536863474551667a376b476557364938594f6f6c2b6b4568616650754f523865536d766457785333412f4e5633626d364a3079416636692b4343345870617452647a3731504f69395373385958706e53493970775767574c68715952377355413658614a6475355157354145394c4570694a51592b5571645167656f4d4167736c422f46454a4e444e2f5441447678577332714f634d613470436441644269387963593670787879696a44637961734351634f4b326936514b784a2f4e45336f4f386f36546967793237385a674349507556327545756c6a2b31585734417836574935634554743454786363733046416a616c53524e65344b43335a6a457339565a396a624e4d5756663246754e515344326f4638766234365252553769397347303364636a77696d7537562b73756b2b786b32765335514a622b30754237597652504f654863683061425a4f6f6949374353727a744d6144354b57684b4e4a5265525059675157376338497a392b6131513068686c68682b4b53554c6e3077493756566f76442b56734367316e706b6570515849366855313469697a697a64306e58484c4a5270366178705833494e735a524f485a376c554a52646e7756417461644a6c52386b396f57445345716f4c5349536f2f616c46693141687a4750346f524550316470375069733979784355336b4865714336384c635435594c356d5153746162544e7958314c4d594355674939504641516a4547524e522b4b4237393244734d585a46346967466333516e74656d4f722b5a48554967514a39794456616749774967574b477164723669686274794e63423855303548572b4d41775156784559514a4c752b6141675a50546e31424d38677a3561717044647547445665726a7477514453636a326e6746634954705634636142566d4554787171355753596d42714437596f4e4679333948505671344255796952715036697a386b48304854476c4f5a526a636964556a772b4b4235774553644f58346f434d6e707756496c4f4541495a56504e57796e635a4242475563716b2b394a355735662b6d4844392f374651626d344961446c755655747a633769325a4545786c382f33494e63345877645231446c71634a4a32643344723167686e4e4143716a764e33443679326e394f4a517437322f634936537a4e68373047356a523855624559675663487337466d68657536547044316f4345384c3979706b4f6f2f42427446323249745832346673564d39785969305a79303531444c5035354236677144764730687665485a42724737323979526a43576f712b33636a4e694d4d714c6e6a314a695470464333675a77726f3335546a7159416e446747516244433261677047746d4f4a64316a74376d563039464b562f6d564d3731794d694446693644666f36756c56526935425a7a2b6c316c46357a696c463754315475365144544e3047743665436850464c6f4144414572506276504b702f6170357475495a704d4b6d546f4e7774616d4e474e436b6c44515177444c464357716b51512f4869673177644d415a6648323730473633636843587437316463395275526a534d5a6475506175654e716276544946362f7556634c46304d4a5941393451644f47397553363369512b6f716e7a2f4e69596b41634e50347250396d41573673653470764c6943516456454668495a34685669366458674947585569412f68422f4a4e396e49793653334e425730332f3979534a4f6f6139584e61503764656738705867527756557474656a704572735a4e6b504565314252475452706c6772726b6f6b6169324e4b354b70333642785247307479637a4937773243426f796a4d6c39494a474f5373466d457949655942526e694f436b646e62746e715367576f4f484c597479515877326351574e7a4436744b4932554a5270666f2b656c5a496a6253385a756d4a2f53554944307746345737383866624642664c302b64577578596d6c4158546e6145435564546873416c684c62694f6d314738414d6972423532454c4d757245794c6642425663325733486a2f4c38552f6b62614c43422f334a33754f346a555a4a477648477a713579514e487977664646766d7242636a6144366d2f774250465974463169497748663841676e473233475055415034584344562f6362444f626f37346b49523356695130784950486d7149577842764d4770384e5563466a6c474676716a467375584e42314a7a74794f7159443847564e792f4f67674b5938466c3836414d6738755472544536574d53394f3671434863337868464537693949617073334a4e35346777596b49796e4351414d615037464249584c633669522f4a576d63654e506267736372323274366951424b4a616d724e5752395232677a64763455445275487a52716652347639536769546a2b3153487246694a30774a4c2b49365576397a684d562f3841626b675335667532336e47477158775966697168366a6672707339504f697431536d576871342b4574386c4c397162665552692b534177334e7937536476527a31597134577a63367973384c4e782b6764794d2f50734e4671504c36754b44526f67434759534874564e5544565433724631455070615234596f69463255544671494e746d416c71776f457767496b425a6f77456a314e334b34516a34704455334e41784550715575516a4b6b51343977535367596c6d594a444942744c55356f444332414730786673533359444b49662b474c4a4c6c3469576b674e3765324b49763642714d55436557524e325469316f6d34464d6b3039305a4234357172376d524c78696537464271387a5332754d542f70397168575133596a3434675a2b454c4d4e314f54523075364d4a6d5a714b6330476a3736335455482f77424c4b543346676e544b4c3847442f6771784844494776465047324d5334506367704d3744506f2b43726c75647646695166647757775174784c45314859683539714d546755476533367459776552702b6e4e5866665248306e3239753158513363534f6b4376384f66424d6230704268456330464133416b37524b6333324f4e4642633473416d6754634a624a416a787862484e4a636b2b47574e453868646b48697750302b3342566a376a4136542f4547515a4c776a634c5442344a52745a5951647543316d3765465a74514f6c6a666e46425244625875786b6f3263694f65664e64416561776f484f61726c626d372f4642686e73626f6930574964585132313232434973374f724435344f6f454d6c4d376f4e53415070514c627433512f684770474e676c77536c653663547150344a784932385437647142496952493148556a4f31724f715a47437076613341745541543679374e6b67614d5154316a3243704d3473376876307173337a4b646356546472345931355a6f4e55627469444755763556505073534c4d4e50307248354e746d303134717978474536694a63653542736e6368346843504a3157486d4e544d4f5837616f7874322f77424b744f6c684559344d6751304f714c416e69704f37454279516578565373754f6d6b584643712f4b695975613139696731676a48414e3856623573592b4b554232726e6a62527544724e443764794932573275537032494e647a645737636e38794c74334b5233382f4447515966566b79712f742b3061737a4757487452504459624f52654d795478514c506536772b6f64786f6f4c6c737878397930665937534830766b6f6654396f6351582f684b43754458584c4f726457687a4778453138584a4a43786132377974795037555958702f564a425a397a4368386b59657a4b7134504d71597350694f3958457a64697a6a6d6b48554e4a50387a6c426e7633694769492f7743705333764c6d63644f4137566359786d4f6d58376b545a745442366b412b3769616b5038416d71376e713173426953546d50623845307246676b566b344f726b6a3976747a4455514166714a7251666d67712b39323537585a573237316768346e503279514777326b2f77434c675762357153394c6a62426c42774f483755466875324834452f5637464a4b344741745a47766573306473425273316f6e62614c787079515553774f665a784363414877707264753347684c4644546b38513263654343364d54475431487755456d44346e4a56526757627a436d46725830534a39325a51547a776150583264516277526c6f465342586b7338746e6142414c2f41494952327533746b474a783730477547362b6b7736685874344b793375444b50342f7357614678764333414d6c4d744557796167356f4e55373752716376656539494a327845735144787757654d645959736b6874517a55425046426f38754d6e3079426c792f464a4859796d4b79422f42566d334548704e4d47623855625a415069772b66747751615937614e74794371626c754d616b314f43614e324a6c553953756e4550584642694e694573413641323976567045513478344f744e344e466f3534794379584c4d357635614379653074696b61506d6847785a6d5848426e4b786933757064417977366d546e5937675953456639546f4e634e6e61457a4579654a4136754256304e72434d5048453559726c7973476b7053512b306937676d7066484a42304259484c327a526c62302b355937514e73735a417363507a56336d5244317077515874332f73546d7a47585a3853714933437a66764b736863456a71494a515356754d51343854314b7a7a6847524d6e784f6c57584a536c6c6a7a7171347350454b6e35494b376f45545353486c6779466172644778624459456e424c4c616264756b6c7a547437416771467133474749783730444f4949495630747645426f73714c327a6b4a5577515a54754449394f4964474d6753354442585432325155387471484a416d6a526d2f7742536b4139595944366a6d7254746464545438565a354a4663387554494b705175414e37555477733341415a3435317754396f4a4c394b7345756970772f464167734358562f377330747945594272684849444e5a39316375476b485a766d716256696276504242624b39434a3652324549573576535246654b3257746f5a6a534b63516d6e5a6a454f7a537934446d676f6a4f526155574d526a775a4a4856345934354a3949464934665075527479387565734f77316436424a656d796656715938427a565a32586c794d73572b7246317438794177532b5a475435634546446b523652315a3549472f64695066376c61664b4d71682f6d704b516341554761436a377163343046573969727a7553667050636b684b4d423159354e7757693161746b6955617669677247356e636930346e694574752b3353596d754b30546d5449306365474c4b6e5763673955466e335138476b7552776f6a726a4b4c6b55795649424966536156632f6b6b6d4c674c6839587751585349497055705933674b45454b6f65592b5235666970616954526d484242717433496c39464862556d6a716e554269566d307a62436e3149774c4f775a304674793043655874386c523563573044444630356d5152455a354b733352457566676768442b324b6278567a535737304a566c6b33657261547269507751436b705648775652684f5a657062344c5243344a34664a434677754e474a5069515a50745a7a6c556a6936736a744a755a54495938466f47384f71554a3451786f727a6467576a52426a5070346e4853434b6e76516c74345241397835382b6131584137794456485477556a6274536c71597448324e4547576362594852463543686b4b5970524b6f4a6f51617252636a6263434950506d714a5230796f4b486967496c71365942754b5936706c3578626d71787a516c4955465848654f354178345a3563796a477850776c695737456b5a39566670546747547850737941416d4d583539697550384155384a5a306f68714655736f67412b7a6f4645664c71616a696865744577596e784978412b6f5a713370617455474f4f3366453950755477324a493663736a6b7266324d6a4e745242425a4258396f5267634656397663615536646932526c474c415a6435567669654f54596f4f5a4b425a7973303479666b7534597530753556456177424a7537346f4f5447453676374d7433307372593278467a4b6f51304632487336424f6d524934444647516363782b6e682b61733051702f37654b42684630476546677a4a427143557874644f6a50386c6262754e3443442f6f516e6663304663367367723873427739667a537945524c39587a567875696550616a62754d4f7a4e424e426c45567269706336515061755349634776765333683566544161754c49464a484e2b43684a4642514549314e4d4f4b616352347546454352456a31527938534a6a5553664a57774c482b5a427851634d304763327a55555666564c4b6e466c746a4f464971727a6e364e4c66366b4652743668376b42456a48457179427759313745534976544c356f454144767739714a3451476c7a7855675153347254464d2b764b714369556e6f334a5479346b7343357a56383762385754364c624d7769324243436964734277565835494d616e2b56615462674138753148706941582b43436f67357044487144594c526376797473307171767a4935592f4241734247524f6b6451546e7739496f6c6a4d444a4e486a6b2b4b436d3562594273332f41476f4350772b53304751505344586d715a6e463851677266553553366d787170714e6173704846735279346f4c584e766f594f61767a554f356d66466c385643486f6f5251455578315a6f466c654a69342f4e5047345772676b387572516f55326a364d536765456f416b44677174594c384d315a434167613873315a41527034644a515935436d7169614165596a6c7957746f7842674269717a6138735a64794373514a66356f776932424b594543725a716178516b596f417a30344b7336672b6a46584e476f7a5141637445746d676f6c62497777346f516a6f4c436f4b304d5467704a674b654c6a6b36444e47476b56715564454232386c6343314f535179417045386d77515a726c755143515a676479316139485352587456594c47754b436f676b397952715657304f66433334713444492f7451633752356c54513845703446646252616b4f76466c524b30486f7944446d7753454756437470747866736f34542b57495678515968624a4c4a6f325366466c6b745647494b726e4566546878514a626e4b307842572b7836717736316a68434f4a565a44485167394a62765737775630725a4977586c3763726b5a59303979365733395575574a6466566c6967365537556858414b715732635557697a764c562b574f50746d723763492b4b4f4f61446e5432394e4f615765327742585138747a554b616138655063673573724c6c676c466d5664564b4c7165572f554b4a664a4c6735356f4f574c524e557475304d56316a5a63366c5362444f5367776d323941614a5a5744466235783471734236494d417447516364694273506a6a376642627944703658644b522b72412b3530474479496970346f4349616936456f394a6c6a5769716c62416a7a515939415a7166696747487a576d56706a564a4b30573755464a344842307359655869725a42777878434f6c334a7167714134595a6533596a52744b7330366d624a5356736e42425539486b6a6c2b536377717a393658546b554374484841684b66677274414a4a63456c4c355a6241476c4f5341654b7055632b4668376b34446967397948573761537944584d3277474d735567694a56426f63456f735a75503563555977634f65364b433379394c455a6f556a563949344b655a4833664a53476d65496366704f434274445a34383041476b777835705142434c517048322b53427353616e437143346733537a684c4b79444f70644a3562306b7050525454586d67737457346954443969486c463341482b6e6c676f4e45614d5839733054636a476b59666d67726b43504858732b53577a43514436534935367171375741475a563635547764754837304544696c514f7a4656364a51673951436550745258784661767964474a6763512b4b444a314754695a456e6f356f6a6f75526a6f676176385672614570474d4967667154526a453146485156694d6a454e546d554247376c6a2f41444b2f52454d356368303068475142392f424252477947615a6250742b61655679467677752f347062733767746a554e51776b587753314d656b7477515661684950696d3179656a675a71615270366a586e52487a51326746796755536d314756787633474d73787756582f465579487438302b50684e4544784d79476c694f434f6a7a4a7331423855414978446b6b4a4958596f47757872786c77564d2f4d6c34636c594a323956437a346e6d704737624d71454d677130546e456a53396171794e69626653473470346271416350524b62306142787851584462546c574c45636b38646b4964546d58344c4c4f394b492f706b4e6a334b7a7a626d455430356f4e4274323471735348552f59645353475054696a4c554f7247546f41304772346c4445615844766b6c6a45786430344d7373496f486c35636e4166764656564c61516655506345786c4e757244696741594634444c763755444777415062486d706f413849717049366f734d2f6a2b53686d664537354d67497469514773394c35495373327a30526e4a4d4953754f324874676c4f33494e53675557375a64704838454c5a6a4877344258477a6f34455a716b3264585543772b534253576b484f4f53553349654970355778676665725036514963494d6573584b52644555496241347138794563426a6971704f42496832484a426f455967503831594c6b585945555753524e70704559305a58516c44532b6c42624b3545442f346b6b3774764d66424e4334347844636c594c6b58654e666767786d63617438767753614449462f384161756762304945445333447457532f637a7a7a514b49665166447851387564756b4f4b3077755034414470342f424c726c49566941667137454344554153396543734a6c634f443845736a49314c594a6259766d54516f42376b466a6457446e344974463350737949416b4d5568315263437141613445504b6c65474346795549764d5662346f4e3074674572475161583833424176336349454273676144696d2b376a4d6547556531474675444e493134636c623976624c564438304655627a436e6470553879552f4246767856734c4e487a55306753306f4569544c74474b5179306e4434344b77574e446d4e48786669694945536330474e55474f374f672b574b4276454857315062327174576d4f72717a6f6c6e61747847715561494b7a6563413443665035497876512f5458676d75574e7349734a4544683271614e744439543855466b5a786b61436f7956737934626b71504c735447715a6d4f4c497973624349465a6b6f47593434786f704f4d57496f716f6558492f7742474e657a483371325549366635632f62676761453277444d6c6a754a484d6830336c74584e6b766c3164745135494162726e5547646d727755463075343775354e47455a4477684e6e356373686b677165654571684c63674a677845637663727a4576534e577a7752455439497079515a34374c566a54325a4d4e6e677a534934305772514258452f6b6a3549314279677a2f59616d314d56504b387477616d5748642b4330776948306b756c496a7141483755476137646e61366f3274517a6c7757632b6f3348693844474a5055574f43364768736335422b785035386f52307878347452427a34656f66704570485677576a376f6b4546366b3434396a4b3358496e72724c3344344a5431654f44555156472b5a445445556171534f7563744a425639753147457152717252637a6b44376b465168645a6e4141785675694c4e4b6e4c696a4b34306442422f77424f50656b6e5a4a6a79504641445945655978357052474f68744e45336c6a554f474861726f4d394b494d336b57726b68306e44444257537336513042376c664e35525a3335724c4b78656b414464595056735542454f4937526769527161545556634c4d6e4a4d6e79576d4675576b505549462b33484971753844456b31714f3738317076663078686a6746696c437a4d3670416b6f4b3451636e56484376556e7467414e5442504c52496a5451646e44325a4b6265755764654343364a6848715a3670355859516336617633465553736e776a4166556b467539474f6b6c772f754344667174737762696d6a4f4664482b6c6376515a50716b64556670795a57516a346545757233494e2f54454f50324b7253306d4979575746787074776f725958645571436f6f676556754a4c4e584a475a6930516363306b7256365874696c68626b504550666945446d3572366f7770676b6c4735494e45565074676a4b7669636a4c7657714534696f506367354564746669616d6879616931735434774d4b5a4c555271715a73446b715a36586f53666b6771466e566b506b6a396d5a4669424873546559434f57446355646255474343663279467a4536577a5448303461656d35537654692f4a4c435a643370772f616e4e79496152634f4546427343325a526a51444138315843456a4b73792b62344b2b4534306a7850765230514c315156546e503668485363385753366f73646465664a4e4f79342f706c354b6955626b6134636b466775524868702b6d6d4b547a3453654c48696b68617578597543334e613764786f677a4651676c714c78464b487842576b456e4a516a4d437077524230422f676772455a584f494b42614a306b6d584e5666643235456159334b635252552f6375644d595566706356346f4e356c45434c31314675354c4f414c6142684967724235346b42694b5556336e6167425642724e6a5845315948686a324c4c396a4d764d6b6a386b6b504d444f31484d6c6242794a645831426933773745412b786869612f742b4b55656d526a4c6f4e566635305948705939714d626a5563446c6b677a4830374553755350775769335a3041526753414b5078645847426c55533542436f6255515267554675674d41545838457031447779714d4d30766c615841782b436d6c2f2f414e586767535569517a6e745365575a68346b766d36736b5363496b6e6e67456b727062774545494c49536b4d4a314c4b6d555a3165556e4743767474704d75373370664e4f746f316441756e6469734c6a6a6e6b5574773738436c79496268463339364d3773674f493452552b386d4830677432565a4254356d356b5776534c746a2b48596c6a4f35684e316f47364d6f5049633150754f4e43542b31426e68627554704f636b766b54673572333156347579446b3855346b59756778694d34395564555333302b7a4b7933757032704158646256366d637574554c6d73694c4d4d692b50596d463252447551787737454332393449784268714c34457251626d76784b6d5533632b7753536c48456b4f6730526575672b2f6d674c6374546b7478564975527270716949694a615264304479737a49655237774542614f63695554434a726b6634717172793477384a5076516159776f2b716e506970584f537833446375644d506d70477a6436745579645845304859673147344a4478456469556b4d586b334e554347715130794c634644626c4c45386b4630504c6d3842654a2f3039537175656c32356e707645633152636a637456694b4b762b7161436f4b4336573075415676672f70306765354357317667644634466747456f7175415a67376670576753455257544f50456753587032356c2f7742654a354e6e775548706c324f4e776c2f3068517931456e7a535277347147556868654966496375614354394c6c477575342f774371517a514e7352696456776a546957554d376b5a4856646e4d78796b632f6369497975556c494e774b41776a4c4858496858694d706e56716f7a64366b5a527476474f4b597946522f757078356f42414e454f654b6b376b4b47544f666b684d4671425a4c6d3045735979626b3644554c6c7163714842463762754471412b61795734516863476d445968614c66384e4f4d6b466a375a2b73764b486379542f787a34485568473348706c694d65315853324975683479442b3746426b6e626757366943564231747175562b6c364b332b3333797a53746876314a6265777556743367444565475342596d3345735a46674661445a4a7154306c54374a714e3239696f6e746a456d575251576d646d52316c77433965537138797861694a774c6a4a71392b434d496b5a66377561677369493036634d4f5859676b744664424a703074522b5365647a2b4a6f736c455366704e636b5a32704164646f742f4550326f4b7a47422f3638473751436c4475476d43427a55386d7743663649504e56773274754c53455742717735494c64453853527046547a37564a626d336757374258464747777436792b6f435375487073497553653369677a77395368435141744d5064337130376f6d5868706d74423255535a567830705274634f4551676f387068724c4544447654543255547a59384d4d31643554754d68774b54547a506150785155485a7664317a4e473742335a71767970474c76692f7743533255694f4a48347034755179446e48564354456c77636b4c65366b4b524a46614c6f4862786c4c71635546654255386a545154722f4c566b4651766b6549305a4f4c38343458595636644f61663758554b794c64696c766262654a722f757a514137363149744f356737644a4474776f6a62755175504d592b324c7132503274754f6b45592b353158657632764c4d6f45476e6367706c6632397278534566394a542f65376565426668306b6539316e6c7570673659345a4a5a62753572713644544f364a306945734c567149314d48373356634e5538763270325a784a752b69444a636e61744839497a427a50746d6d73626d795869644d586f586d53744e7552746c394d543231373049364c674f7352643639507951473775724567346c416c756453466e6a4f794b7a387331794f433143466744554c63557372657a776c6f674f47626f4b597a32754a4d52325052757857517657634958716a4c503470667464704d6a52496539496653704e71695831646e7a51577833637064496b533774374d6e4e305841536273524950395a5659395075773850303465452f4a55334e6c6331764967794a39775162446338754f6d4d744e4b6c5a72384d544f3763616d464651495461546875483746645a32313237344a654839636e2b43424a435541543573752b744544593145796a75744a39736c716a44635248566374736351414379736a626e4c7869425963506e326f4d3969334947743757504634553062516b65707056576f44364445414868386c4a52304470474b426649746c346b5938464245517777556a4945786c786458545a2b6a324b4252474e7559424749643067484a515844517946527a2f414457574e323545456968664534615547674f5377456449385135385656397137434f4b7374584a414835756d6c594f524c74394b43694f304f71704d754753307773534746414d6b4147474a37536c68664455713374775157536e7537514969415238316d6c7674304b2b56542b5a61355834475056347547515350485654743969677a6e663370556c5a4e4d6e6233724c6476334a7948394c5344776c7143364275306345667556635a5071304e2b6c6b4751334a6e41474f515332376b324436774934356b72617848526f7142787155386f534565714a596678494d6372346a53494c48444b71667a4c682f36637665472f4a587775573433617730782f566a2b3557783951326a66316a4b484e332b5344483539384579306e4a6f2f4e43503365456f39504173744a3953327454486353414e413866324b713536765a4a63546c4a734f6c6e4b42394d70556b47566372637034596a424b505649474a3667493439574953783955744d336d4f6638413661425a324c3067305656356535685356753433494c5662395868627a622f5369505865706f526e543673666736437145546272634532476b76456642587a3346702b6d55343864536b5057784b5651585063365162713366723164347751577833384e42366a37736b68333969522f71545a755372304356596d6e38724b3862477a4d4d587167726e3668737046395a4f5868397665712f76384162345777503969732f74396d6b7030413566424e355669305878376b4641337074746f7a7a5a504c64334a554557343846593459526941427879524245676459706a774b444a633879345842623663466d467263584234705679646465454932376a6e68306a6d6d467141625251356f4f5362467751784c4444715634312f715063756762634a436b6e4876504e562f6150675547667a4c686f2f537170796e49644475526a77576f374c58395a483039504e482b3379384d4c6e53506967775474516a307a636b385a56626974454c647254486a482b4a6d545864694e52314f7168744e6e345a514c746a675432494e5478384f747138585358504c49724a7756544861324431614c6e2b715467667552454c647375497352687a51453272446a724935667656396e6157323662706c6d30736c6d30366964635151532f5a3371437846715239756144524f3231515269736c7a55356d4136306d7a7171324c6f513250415a5975677832345475457930436d43754e6d347830686d78576f57434a4842384d636c624857483136574f4e654344434e52476d5171565a497444716f726a49456b434c3936716e724561783148684a416a673456415531516b37684c434e78395577724d415a5a46413979356174697343522f436d4e32423659786f4238316e675a4f596e45664657326a6342656d6e6b677231526b49687378376c726847324b69332b3555787554673267426c5863334e35744d475038414d6733446132395477484239565570746558566f724e35393235576e742b4362575863397659677442455234584836557075306378444b6762324c4d2f61556264793363426a6d674e446b41364d656f74523875394947784a3979476b7949447458484e415448584c70705279716276703979354e376b686b75684733624231527a44636d516e4a6d43446d51394c41716268705530547874365270696165356264426e4569645146514c4a427870376b46476b79446b3077532b575a46346c6d34386c722b3169414b5537585246766b677a364c67786e4a2f6b7134573738762b6f57375674726b715a784269547a397941327053637866426161477678344c4f4c4a6b58686a562b6634725461684b49424e45464d2b6f746d79796d336378485a52645054644e736d3331484f7249546b583677485a42794a5175326153797753776c6644594f3734727236726b6155622b5a4b5a7a77444f55485038414976534c4e6a7a6f2f4a54374b343435634b4c6f636b4157485469426d67772f5933674e4c342f55725049764d4e636e2b43364c6a695065715a58474c4441654c67677a7773304d5a30434e79334139515452697872554e676c4d42474c2f69677230687445614a664a3059794a2f533443756a704a59696a704a422b6e67677a7a4534652f486736754f3644364c6c43426a7854655a716656522b4f614457673950685242594a782b6c326b6c45576439544a355374674d774c34636b73626f794f4863674d54715045506d725a45526f4d4d315855343438453834474d716a48356f4b7a5a387967694653646e4f4f41702b43766c62314d78703856575a58664447524878514a3563346d73656c4f424b4a4a306856786c4d6b3633567244486b674f7252567350775655707849315478354b7a796a50446a334a664c4a654a77514e45474d5246674f616b524554484f6e636b7437654d4e4d573476576973304356585a4170746b306a37387578534e696241617634517259577a454e4657434d6f6e552b487379436f514c4d54586b6d6c71474f4375416b63507a526c4751397345474c544a324f47576173746a52506e2b6c50633239795855614e68454b695675364861544534757943337241706936573451396161616f41534d644a373164433264546d493546426b4f3441786735354a7062694f6b73743175794c626c336c492b335968397643466355474756794436773462706a7a2f424e4c6432395641342f3933617235326f79456f3854376971726c67534a426346767051416230747246482b4b4d7478356765737553427351314d39426b6f5a57715659746e692f616762703779464745616a42322f4e4c466a554e2b7853514a2b7244686b676874526655516b305a4439796546786e345a64763756497a6473754b4254743768446b616d39676e756259316341466c6261642b5a797a52467a365a55515a767467786b66597132336f74524d614d7a392b61743069544855615a4b75656d35512b48443979427a5036736d7079356f77764e5632666b714b544a45433534636c586957446b6e444a427246324a44767a4b5752316c2f667743716a74337249344a34327a622f414b5a61754e636b46526b42454839564971324e776b444d4a5869434f6e4e6832464d4c6b5a4573432f6844386330444130366a58366b6f6a6e78514c616168795046327069354657663349476c4857435a44447770593757456930574758656c4e757463366674565a734365426f4d384367766e3664474a62504e5653327862546c79344b43476a4752706d554e4855495069454369784c4868677338725568344834384b725456346a444c734b55516b57367531426d307a746b6b392f37565a614f6a7842316f75324151776a31484438566e3875324331512b413745446d2f54692f7741464a3769456d483648666d717a596a623651354f4b4559694c354549484679322b67412b3571354b47554a5667395656356574754c3855395948674145465537676a69775a57786e4138786c327034364c682f38417967726f375741465a494d7745515078554c6161346c6144434c554c6e4963556768306c3855476653634851674471714e58344c64667457386c58414342306a4d6f4b394e794868486556435a6e784e77576f534a36516e4d524e6e6b6156384b4443626d714f6e685369654638527a773731734e7146484c6671564d374d644f6e4a367350596f4b664d2b50636a4b342f65636c58494838464e636f6b434944596f433541635a4a51544c53526a676b382b51634e6a374f724a584b4e4b6c55466c6b3649366a395869374573704f48446a386b75736366446a334a3458497878777a5159356b7a714b736e74536272344b3255593547684b4e7a70423043714376524a712f457039416569574d726d45616c534f76762b53422f4c674258464c4944492f6c336f77746d5261583745374f4e58436c55433955635743574d354f34374a4d725a5071614162694f6145675872516f456b506572625a474d3237466e6c49355975796353474b426a4b32635377533672624e374d71695849306e336f526752534c593435494e485339507053485365706d4b5147496f79636c33644177695a64422f774233344a4d49764c6979654a79773973555a7742707a66383041685a4e532f774353734d6445614f2f464e59684758544a69517254716c7a43444e4b524e4b2f6d6830317a5a6142486a526c6c765771744853482b61424c6c364a7764766d7953354c6a694530524548704e42376c5a4755415849367347375547667a415351653554586d4d467430516e6b456441474959634546486d4e48386b586b656b46706539582f626b47686f55626d6c69493134494d6f316b676b763846623976726a49393456636a70476953736e75626c714c526f3378514a3970796f616377706236615a483370527662747a715059455463387645494a6345596e76645652737544702f616e45705477444a4a61346a536353676d674445345554784c556b2f38414d6d493078596879456a5375567a2b4343536b77447059363854586d694c63726a3061514b4d446f654d3043655a4f546b312f425349647a6871783773453862656b536277702f4b494e423746425243334943754f4f4e5659595a765434713078306a566e38327957613541676a365751576937486e6837304a53747a414d535843707557746353367075516c534b4454723139494a53776d4d4d51367961644d755365505631526f52394a51614a39524567574835716f784a5073635664473265524842495742314e31486878514b625a384a2f4a4e466934566b6e6574564e4a6b61454f67573247784c46535553376f615a796471746d564a526e4d4e4c482b483234494830636d2f48334a39476170456a454e587656786d41477a4761425442695778474b55776570785246776179637945306a303667334e426e41644e35636f356b2f4a504574307467706932724638416751526b433570525648462f69746239387367556f6948634369424272694f6b304b726c4b7548772b4376684952716a6f416f5546424d674f6c6f6c616250716d3474524159536a6d737477617341374a6f51656a653738554861323371317538305a41524c74326471337875776d38595347723846355756714d69444d4e4c6b7234627137746a78492b4344305274784a714b6f6548773446632b313675445335512f67756c626e4339474a6a56416e4149615841664a5745634d46496c7632494b354153787753474169484376304e6a3845686a67526c6a32494b6a46384d456b672b43746d786c5653516242426c4c2b424a704a6f79307a674a53716c4e7373385546427474322f536d474e4535456f593064414573776a686d677a473331755178514670706331715a79324b585145476348755359636561766b414b56785353423842392f4a416a68797a6f5265525971346b6b73526c67456f4a637477514952475842683958464b7a4677724b78785a6b4a7341656e44336f4b68475236673454356545397163534d512b4b4e477744747062715156573548566a52366c6b597a65524f4c635656624d754c69697474455350535834397143325674354366384f6c4151303070696d6a505631532f4c4241334736736b424e737452567a736d585556614a52634146447a744c4d4456424c6c7436786b3051456c644f4475636c5075583538796d38794f475476456a69674445644c2f7741744535307454784f684f35704450696c4e794d6932484e414a586a43493043763673782b314a39354f7a474f6f79722f437249756173744d6238594d5777474344506133586d5231694f4a6f5756384a487861616a784b3657386841474d6757797a564d76554c64775953352b7a49414c7436644c566b6636383044624f725530596e6848696a5066536f6571754134667653666358637837304367476d66344a3453796b616a454b435a78776c676b6e636a49395553342b72696776684870656674376b4a6d4e4a74584a4a716a523847567353616471437559457935474b72505348433252687071654b596745454467673570736d70795050324b614171514d51746334774a6558596c506c7844693243543730464d6f344f415278357153446a7730354b324d72596979625661464e534367326f38485247327353724b4142576d516761784931424a495348534d506d676f2b3174596b48464a3972415a477646584750316d76384b506c695236335a42544731626a4943496f307533324b7467414967546f355076537a3345596e534d65584e53345a436f4e58376b4453496a6869443845444d596a4c6a537168746a693550465043416b584a4a475772323979436b334a7379734a3067365750356f58592f55506a2b784151304f4959484a424450552b75704e45346d493035643377536a534b76546d72443559476b653361676c434e4c642f4c6b6f7849364b2f7a55524174596b5963304245507877434167474d4f724a6d37564a6171664643577236734d454a587052474264425a4b7a4d4235397a666a696c6b597747696566315a4b736269566145444166696c4e31324a65576e443235494c544b327a52557547325177693537614b75556e726d72514f706a6767716c476a524650696d6841414579465a4a7044677135786c544d6c42664754436a6f53675978634632564564516f636c613450456667676b546e476e4654564d48575437636b497a344a53525042332b53417566464a43545471516a484e315a474d5165724d6f4b756d504c386b664e6934666a586779736a5a4836412f78522b33743664524e4d383042456f524f76336333516c755352784439694e7563526d456f6a707145465a4f6a776a346673524d356549344a7079755469326b41484871564e32526c347743674a31536f4d7662326f7043457a575a7168447a353477684741342b4c397131517461734d55464973453954694c6363557732305269527137552b674775587851384a7046682f4c56414c6352624e584c344a3955497670424b72724d6b6d6c5030346a334a764c3039705153356568395271636c544b646f4355363966547062676d387534412b54384d753156587263704546384d41794332414772776a44424f5932352b4941724c45744b6d707a7743654a6269347951582b56427449464279537a74514574417142682b4b654a4a6a302f7653797445463278515553746b4471725444676b6951656d51487a57695556583548484530374543527558415862424e47397042636857524230694a682f71644355474c674f654343794e794d793539676d6a4f446d4d76686956696e594d68704f4f5359774f6461494e4578626831786456784d524855442f464c76516a593871494a7279526a6171656e476b67674d62384164414e56704e375453575171735168634e595250426b7746774471697a346f4e735a466e424164576558356a4e6975654c6b6830444e53562b6361344839574344706551663144385656634169574a422b4b7965655a47746156526a6559595651614d65315158486a69797174794e79614c76554d676545444930702b61733876513266795765494a636b6b55792b5837556f3838454848542b4f61445a46324166456f536d78624c7478576155704d4849666972476b54522f357566426b424d7a34514d6379724e65716838537146586648696e42686262574b6f484c696a4f704359314e38754b4d4c6f4d514a3062486971336848704b423561644b704e385136572f774277526c64713849366e5358415a56306b53514b4e323070415947672f4e4e62335557444f2f31446b73737254773456645851747859675563494e4c524d74557944794b5752747836685074694171756d302b744e48517a7844526c785143505332724e48376944507050546d6d746d453345777a5a6375534570524d6e6a6767593353515a615348437a78766d4a4e4458367677566b70755178664632532b6149346533765156692b52566a554e4a30304c6f496a5441646a4b7a554a556f7070675130734252417372747341786170565a33444f644d6f382b4b3247324241745538364a504c697a57324c393644494c776c6753507956305a575956457a4f65484769483267424d705648626d727a5a6847413074454d33546b67574d344547577558755352386d55764558577156713371632f565256744349726a79514a67644c6b303936746a4f4554716c687753536d496b2f715a4b504c505163387543422f7564733152683731516431745a48776d584b767336736c743454715234527037306e326c76364f313046734a327267654d444566784a6e4641593470504c6c45694d345549704c38314a584167633644315267326b346f526e716978444165494b694c76703142705a4a70584a6b66506d67304e7846556b6f78664230677545524a30312b615735656c436d6876346d656943345169344b573541536f615539796f6c76527130365a742f4b726a75626379664c314f32597a51576a2b452f7741716b4a694f4f487a516a475141466561595762686a68584d384b6f424337626a4561585959706e4250566c564a49616f7633396e5968304872497145465a75574951426e7753334b766d337756756d6a3652543846614e4d67386b474577476e4d506b714a334c5a6f4a665044334c7147376231445654494b732b6f514c694564516a3076682b43446e5374735745535166696e416f3034304336736478476376433067686276326f39514f4a72792b4344446245336549366379744174304c436872486d74486e5735316968716a4f6e365546426a4a7451673550504170764a4d534869357a5767733153784b5a38595178515a64463234574556555933386f726161556633386b524a7869336567352f774458686b426a71314a67626d44434c3831706a66593071447852382b33557a4f6e546a564267766562456e4453325353496e413456504e7a2b3564413769324456735071552b2b4557694e50554f475075515a37467256496d6548347070576e4c3159664e6b2f6e357332545052573555375547654f326b5931716e6c737a6a48735678636e7566464d4a782f4a42686e744c344c323567416671793746584c3076637947727a5437714c6f6451665351335971702b6359732b6b66776f4d304e6a4f49363536767837552f6b6457714a484142736b2f6c7a446831564b336f4a6b43353449452b316d4a445151436355346a655a34474c6331594256504337475561786f677030626f644771476e6b4b7037566952655a5069415635693444427578434259676654383043776a52696e4a6f2b51627456586d7a4558614962424962387a4669326f4d6730596a55496a354a4a3678345967384549376b4632774b687631775949486c43345a34446d715074376d7256494e466d706d6d6c75327a71684c666670717a636b432b524b737052423542474d4141785a7a394f53483373783145525648337070705a2f65677548542b6d6e444e456178536c4f4156634e33474a655464574330432f616d4831567a35676f4b68495266576179564f346a30596b653346585444564263384f53452b6f6148704c366543446e526a6f4965636942566168636d4f714a724976334c543974726d3441616e7478566f324f693572634f51314f31427a62652f75776351476648504e483732394936576b4a456479365a32305163497841773475564e424e414256426931584a6d4d326a7a3730504f4d524579374743316d476c354349356331575932376d6d6e38586677515a3536726b763575434d2f4d4f4c6670615743764549366a70662f41473052753761334d7339776637516735356e637467434d523764717374376d35426f34444848443279576a2b31626535346a63503878795452394a744f3861426b456e367261746638674d6a386b4a656f324d4947702f5570486136656950785650324d6e4a5a7967305333516c314d7134546e4b5261334c2b6267455274626b32424a6743453175473674782f3541577067673065544b375475366a676b4f306d5138726b6e427779566b62383331585471376b73743145744550582b476941655850546941506d6a474745347968482b4b564573703279486d324464797a792b336b6636774d79504470775a42664b3650467248617161536c57644a556f556b7a5a67544551487a554e36455749745a6d71415071692b6f752b6e676c6135454f542f4d6d4e2b336f654d47626c78556a66367572427453422f743770786b59302f556e306d5a7161636c5435346257775056704e667a2f616d4e786778342f4e4262623061514455706a66387677776a6834766171574961636f555a50494e512f707167716e75626c4869432f62376642572b624e36516363704a54624259785a4e3575755056427369524a42504d753551702f4e6b715a5754633859797a346c58322b6f4363634f4f724e4e356c5862453655474d2b6e62633162536361594b7a2b33375674586972682b4b744577354c452f424a39304147302b78514d4e707479344a4948414651324e71486359594f584b613366744878697235493237317476434f396b4666394f48556349704a58396f53493635522b722f414933576a585a6b61694c667a5a71364e794751422b4f43444e70747965542b4c346f6d334733314d43326553667a49454f413965535a71506a46426b7633625561546937667043482f6958497635504c67566f6c6238774d416850617a4d57416b534f53436e2b333765375749454839345366325330522f774130755172373162397275346e56355a49483853486d5874764d514d5167782f3271647554517555346a6a7a576f5770564475347233664a586e64523075497537314846566e636d4c746259426d4c6f4873374f4f6b6135652b69535870567563717a425061337556453738497a615672574348704a4437687730624c5a414f677548706b41526f75476e74383166485a336f79365a302f697136356f6c63784547697a63553568623161794b3839555548524e7559784f4b6d456d656977644d6358422b434d49526d535a5054776a67364458636c466e31594a4a586f6e4147694d4c6350716a6769657154694e41324343674436516578552b555a54726774552f774436636a2f71536d6d414966475059676b4954454969504871526a4f596c782f4a473341474644544d5a4b36634953665451664e426e2b36694b356d6744496d35716b344959706673353659364a42733073396843656f6b6434782f63676c324d61395463572f4655365351305a6e745a4e4861796757465878644f6255785141532f774253436b51774a75544d52685230304e7435686b444e76714a774c712b4e695559734a4d2f30684e47784b5961474a356f4d30624630364a47524c596a687a576b5375694855645231565035666d68355736694b516963753774566b7256344836572f53582b614371524c6168372f6238466d6c63466b6838514d576461346d5561524970777172345874464a552f77424f4b446e48655735467067346670444a54653234502f454b343071757635397563636a2f7071686346694f4673456c427a626537324e75737249316533466736732b38326c794a4e757a4a782b70683371586f4175474459737270323955656755624155356f4b493376543579384a457155796457534e7375595543792b51597649786c2f4e37426162646b73584645456a6568546f69347a5a4c47364c7042304e4a6142742b4a444b75516f67706a75703665694962367458354a54366a66684a6f52746d4962475046504c71714f7a3349655753772f3349466c76372b707a4731586b6d6a7672756d67672f494b6b51757a4e4d42395037556e6b5834686d414750544a426648315056694271397a4d704831475a4f6b5738536c30547542674161464e2f78785a716f4c4c6b727a36524238385559516d61357049584c6d6b415131667136766b7268754e4c4552366d445a494349476641646949743359754a46715a495133462b41305274514d6634705a6c574463584a5230336259425036436770613541796557507656784d3456314771566f5a69544934674f61494b707a6d7a564656564948563156433169494e5843627977656767313435494b3759776752324a4a62557a4c2f69744a74786857684964504759476e4a386531426b2b3148694a366c5a3546546948576b7a694841344b6d573475594e464249625749444636462b314a396e6242596b39365554766b394941434566506b656f5230396a305153566d4a70456e765666326347724d707a35302f70414139753556475678774978643361767469673078745772565268786b72444f302b7036686336356475782f364f716c5739697142666d546f687435516650555751644f35474d336b48615239797175574344306a55734559627334304179772f6572725a33496a706a64496a49384b6c4151626e5630683875785044704479416349334a585a534c533556716c46764b56536759584e64596970536169394d66795436424c4f6f54547478384946637967706e475571535059794559516a5354366a78576a7963674d6e5575526b412b6c426e30573544544b4f6163324979692f7743785072646f36547170676759475a464f6e36686d364376795957383644696a486f444a5a32395876565a684b32534f58315a494c34543055636b42576939614e61672f697341766a435452393675673179485332507751587a766a4a4a3533366365436c79324a47564f424243797a7476696163735546336d7a3141427561744632524657414257574f33305675436c447a3936327746735136672f4a4177753235554a4a3471644a464d387550616f494f4f6d6a7064423849306f4b7842752f686b6a497a5a34395865704f78634a78425045634572364838342b48754251572b476872336669724863724f4c776a394a727752687542495a2b35426471674271634e783471694d68496b67594b487938774357566b4c6b5a644f6a3449456f3269574f4b57557a4c454b79374a795743574a4f50344941586a31614849782f4254376d553342677a346f7a6d5365505a79552b343075534367667a4137596b425070314c4f623764576e4549773352646f686f6a4d68426162454c6862414d63446d68355231553936506d4d58794b63335363427034646e356f4b703764777a5535636c564f77547167427050762f41474c624b5579474d4734562b4b53544e70356f4d4d4e73544947546b4470562f77427134366350697278436a44414b787a37634546586c50325a4b475a42304f33346f41457335776f6c41366a4b63695167476972482f41484b53307532614564426c6e2b78614c624d644e51677030616e356f4733527536697368636a34634365534a6e576c4f505967703870754b457454596436744a45337953434c75485a424147496957664d634573705349457543742b702b497839677141356c7041515750634231794e434f4b67336368626f327249597176794a4d4f6f6e6c6b45787467427a556f434e314d30464b5566356c4f4c30354b71512f557963416376793449486a656c554f4e4b456f69556e465345754c71755553412b4b4334335862327172495839484d4f7364583448464e636b30756b6f4e68756a55374d507a5663726b654472424f374b674f4834706f33444130787a5161504d72576963437279493539796f3879517872774b45373870644d4d693548366a6b67306d4250417a50774357586c78704963755378334e33644a7878385835446b6c6a505654752f616732614c6366435756647954784c4a527149446e6c3830356a494277667a5156616e49426345636b42644554783563386b4943576a585046574332336944634f39416e6d537978342f676b6c757036744c4d66346c6f75514f6e533365713577316c755964416e6e7846576154594a2f50746b4e4a6a6e33702f4c4238654b722b31684b7051434671446134796f50467954526b4a3955545534496a59327a694d4f614d374245515348726a326f43326a706570566b4f764838306b67394662474a695739676763644f49636e4c6745706e72727a707a5a43637a686d565744484c44354f67615a796b547a35757144667158423763614a78632b706b52756259476f6537356f4b726436557056446f663144636c457532537446364d515a30504c3855544f3254484163756142744f726f5343456a3463307479374b32484761587a3553714458446c7a514d5130744c5554473349306a554a725a6c703069673572514c664c396f51596843345469572f5363555274354e724a62494c6f363879412f686a324b474e76366e59494f6648624e4e334f474f546f6d30514b69704656744d49486f6966795753593153315250614f7a67676a51684536697841444a4c6b672f54676a4f303954555a63306e6c6e776e397942724a316c6a583953736845474a4f522b53714e6f3457382f6c6d6b6c5a6b4b36324179346f4e4f71446b6a776a776e6d6b7579454330543239367a744c6936514f427a515754366e443833566b71513167346b5256555a694264362b484369594f35486545426a4176706b724a41694c6e504e4951346569456f673144393642764d50566f6f636b756f73524f6e365478565a6347706254676e78774439714267574c54715063706b346f44386b5849784a494f494e57567359615a41552f6567547972665033717164724352396774747662786d306a57767437464c4b7843755135315159744f557143584257473345735453697375625671436b666171716e596d496741766d67733043526154555453745267527a7734716f783074717056533551754135476144634e457570714d71706744672f3666785765467959476d5139366c7776556f424b4a6b525656435a69484950746d724361635368414744796c686c486d6746795a7444427a3266697178644c426a7854796c4b49615869352f4242395259422b614369585730526e69686f4a46497331466f6844537a6636714b3457737355474b516d386a486867687059764b713269477031584b485778446c42512f444261424456486858565838566e6e455948754179566f6e7038564871677575615a6454597167334a4f477a6f46507547784c383155447046554630546f6b656976366b7875536e4b576b3039736b6841424159736e36593165765967726c654f4d6941716935366c6463675a43707856634c4d72595a366f4a48564b4f684e3458664e50616754496d5a6f6c6255373549486870625074346c6141786f2b65616f3043656e4d2b34414b32626761546a6d7943753549784f6f4f61594b75563755514d4f4b746c687979564e3241456f2f506b675356326e48747a514579427078423973455a7434786931454244484855674f732f70626d796258585656566754625350696e625434714834494c625567612f756f6c6a666b49757958434c6e78444e47324748356f474231654c466b635430344f6c672b5936754b4561415346442b4b44626375315a4c70684b6f412f465a745a4c6e696847576b39504242657763436a6d6e4949676d4d7061475965337a57585558355a4b78336552484b714178366a6869714a577848444e58784d6a48792b57534145577137344242555a78694f31556d526d744d34645278354d6c38754a6977507477515a54713076546b72375946794c6a347258624e7344706a705036554a5231456a427a6967704d426a672f7552634173664678535441446d426f717465416c6b6776754872654a5966785a6f47526c6d314d7379714b5366463438556775674161736b4777796a476b757a76556b3265543969782f6379625447746543316e53336456414951414776696c6b306577756d4d744c515a4733463861486763454652614c54706a77514c6d75494f515673686d4b64695136687a6669674e5178412f425232706765655358544e3671534d5a566d432f7864415365417172514e50574d51714c416c434c684e4b47696f782b6143794966785a765643625378374549784f6b6169334a44525444324343614161424157326b57775352686350565853725a574a527a666a3249457539552f6b71356b47576f344b3656765455533748514d523953436b41753075314d4c73725a6533306d4a7842554d4a486f697841566558456a325a42314c5071374e43366144366869757059334676634e6f6b4a6373442b4338734c524e634336494c53456748696739654c556f654d45664a4a4b4e645334473339567557526f5953682b6e4e64577a366a627636596c6e2b53445449505249517762396974416a4d394a667655384e536771464553483668676a4b4d68324a4d4d63554379443471755558774f4877563157504249616c6b465246656b313549796551493936505670476731544371436d4c53446350696b4e7469383162496173325461447036366f4d2f6c484677795557366956473472564556634a544541434f5835494d55347564526431624941674b3032795a4d486f6a4f4269777a2b61436a546e6d36486c3178727739676a64367163465036724f395734494e4e7a7a644d4e4c636c697576356e557a74334d6f6f674e66715a71366e543232712b6e527a7755555158336354713076526d556835656b612f45394734714b494b7036576c786449504b7938584e5252414c2b6e5458784f4573644c39447331564645426a6a3150334b36486c73487765754b6969417a5a686a707a7856585333512f78354b4b4948476a574e54767a2b434676532f5478716f6f6776697a48576b756164495a39464d564645436c332f682b6c58396278384f6a38564645446a56394c4d7056697a397969694375574a646d795354665630344b4b49425372596f6a797671385369694252706557686e56554e4c6c7458344b4b4948745a616c645a3876563150793756464546734e4f67364e44386d645544792f70372b315252417374626a7a4730354f794177707130354b4b4946476c2b584e586c333658666d79696943734f387458436a3845447131515a39536969424b6165742b613057333771344b4b494c6f36744e636149532f354b4d3266596f6f6757577434366d354e6779467250685846525241785a70615731557753515a75623164525242584a712f466e533232664c75643146454771506c2f586a2b3553336f3676452b61696943466d48444e32645677303668717731466d5555514e4479645a5a6e59707a35582f5462576f6f6777376e56397848546a6b797074733874654c315555516159655670486b365859365777357078356d6d545973483746464543795a71345a4a6f4e39623671714b494c4a6559335332696a61735573764d6f333636714b494e45664d36744c61386e5a512b666c6879555551412b597731616d7a5a57445578666c7034714b4943664458425652387078693735714b494a4274525a32616a4b36586c754f4b6969444e2f5471334e2b314a31736531525241594f39585a5062314f6448682f69555551474f7078692b66424f4e544232666b6f6f67726b2b624d3457633663734b714b494c59757730346f58504f6361573056344b4b494b70666566394858334d7178393434667a645856346d5a525241592b66585833385574764150692b61696943796669476c76703166745379314e30732b61696941523161686f35737965322b6d7667793756464545692b756d4c55785673504e306a563461346642314645464a312f5732724a6c624c7a614f2b764a5252416b7675487a664e4d664e59366e35616c4645465238375547777a646d576e70366d662f54385646454769337079642b354576394c2b484a5252426e757534643953533171656d4648555551566e7a645658666e697931573958314d7a714b494c5934446a6d71626d425a322f465252426d68356a6c39656d7265464a4856355a5a32664e5252425a566737746b6e3647727130766d6f6f67746a3557755772476d4b6e39503664544b4b4941664631595662334a37544d48314d6f6f67737131585a566c6d4f767774584252524255504b59615764692f464c42394e5068696f6f674e6e7a4e4a3161744c35736c7561323648625052346c464547622b74582f376a6b376f7966362f4e37325555514e466d2f7073326259713633725976696f6f6731327448314e72706974634830687535525242447230312b474b53627357624376785555515677313062346f6631644557776571696942626d4574482b6c75484a4c5052356450452b5369694262586c754e583673384d6b7030764a6d626d6f6f6771476c69374d32615762616570736d5a52524262622b6e463838667852366455325a767855555143546171344e564c6264677a756f6f67726e35756f612b4262424a4c552b65724e5252427374766f2f714f37686c4f6a4e322b6c5252425265386d6d72553261512f3235786f31616d2b4b6969427a35476f344e523352742b586b372f4839796969432b4c5677616a4b796a4868702b4761696941322f4c706a6e346b3850496238754b69694234365736487a777751677a6e676f6f675536573675395548545632666c77555551566630334846733074765835644d582f46525242644e326f3270562f77426654466d2b4369694133504f70356d686e7a536e7a4e647a5870624a6c464546632f707764386b527138733638484c714b494964645730366375314b50342b4758656f6f6772476c68687a314f6a6230356158354b4b494c2f414f6d35314d32577051666274526e354b4b494c4936713632303566676a59314e5051327076624652524162506d6134363264686a324b3436364d7a642f42525241747a5539576632644348316559336d66546f5555514c482f6c44384f6c306636626c394c74542b5a525242556643586243756c4d644f542f466c464546346653487879545579377532716969427a6f59616e2f46542b6c394f7643716969425a6558704c362b396b68656d4c35756f6f67587063616d666e78533348594f7a50565252425875664a66725a386c6a2f7061797a616d555551577777476e4669377467716732715043756c734646454479786c716679317174364e42666b2f344b4b4942443762534e624d35302f7a5a6f6a37624a76785555514c4854714c593563564973773134714b49494e46645064776450754e4c394f6a4a394b6969444163503657724c44426172506e5030344e6e785555514d5043485a327278624e595a4e70483830667855555157793036704f7a4d4d4756647a3766366e64714b4b494b37336c6141332f45396444507957622b6e714c655a2f433250656f6f6733573957734f2f6c2f446d6a4c5778302b592f775555514335702b765871616a5079344b75342b716e6e4d3431654a5252426c6e722f2b6267586256334b38502f46706f3274314645477531796653786475504a586630367337714b49445268337333746772492b557731386d62465252426248792f706457586d302f5433714b49466c356268744f54716e63655538764c37325555515a5435624233354f374b56635974333979696943793335372b357457436838397036325a36385646454769302b6d576e766449504d314842737531525242544c7a65727933625034705a6663734e506d5058426d5555515a3733335038623573324362626562356f2f7743544e745463464645475966635054566e6974412b3530686e662b46525242625a2b2f7744394f666d4c576454487a504656335555514c482b46396664696d6c72633648656969694144586e6a3366464a445656336238464645413766324b57504e71336979344b4b494c78397a7036753953377130487a4d47716f6f6772504e73437a4b645468734d2b4b69694168744a3744776447476a554e4c64324b6969413274476e4a6e4b7a334871324463314645447778476e42736c565855572b4f4b6969414858705069782f4a43486d616871555551614f6d6a767953686d4c654c4e5252414c766d31303675355551382f54466e657239696969433465626f2f702b4a767856735075483633616a756f6f6754726f2b437a7938397a35657076676f6f67757365612f553774562f77427131573263347531585555515842395054686e324a59737762446b6f6f67683856585a535774364d3752302f7335714b494b4a2b6333384b6738353636564645467062366d78716c6a70387a365859736f6f6771366451314e33344a706147793566676f6f6770334c754e4c4f794d6458314e70354b4b49474f72542f414532666b725a655977305935714b4944447a586a673261716e357a6a54356266395453372b7a4b4b49466937563073722f366a313034556452524138664d5936644f4663465654562f56387073745037464645435866454d47354b6b2b5858553331594b4b494d6c7a796d442b445350457159654f586b766e676f6f676c377a584776567a62464a42322f7161767764525241353858527266384168546e58716c70647333555551585732635068584469746c6c32446366696f6f6773476e574e576c4536715034614b4b494d743743504375437268727133344b4b49444c5733583363556b764d6375375a4b4b49446d45517a46734f6c525241776650346f5131616a6f645252426446363639576e503471446d375030366c46454630644c46734f395a4c6e6d7630766947344d6f6f674938787333357068727966546d6f6f6773444d47777a5448566b2f4e52524256655a7a78616a4c4e487a64592f546d6f6f6774364e5647314d485a5063304e5233594d6f6f6774755a4f2b46466d2f36675a32664e52524133557878357677556e712b726854425252426d4f6a55664d667677547a387255504c3150795555514a6d4e546f512f687737314645426872667137736355753466364d5844714b494b49613379657157586d6171507a5555514b50506172392f617445664e303958453434714b4948477172346479574f6c366352376c464547694f6e386d576944734e4f436969436a4f544f7959654b6a36636c46454655764d316c335a717668696c743632477032716f6f674e6e7a484c344f58314b3876527669796969424a2b486d702f55634e686e775555514e445671446157795a6b6e58714f72552f636f6f6755753163636c5a643863576253333731464546585671444f7a3057653432757547624b4b49484f6a5431636b747679327a624a5252426f757470476e755a4a5a62534778664e525241346636585a5766314b3663644e657852524251504d316833304e5238556c766c71624e3355555158376439636d2b4b30525a68705a36344b4b494b376d492f53714c6a745633657169694244357a6a46326f7973692f77443148306173314645464a3161706147622b4a534c6639544652524177307652394b614f6e544a6d5a71714b494848673657664c7453324e656b7433507855555153656e51504d78663979716a6d37632b4b6969437978356a7930594f4d564a2b6258676f6f6731572f4f31525a6d56306d70673262714b494d397a7a4f70753767794661386159714b49466e39502f715454664a326571696944506338702b703957574c7052674f395252424f7256792f65724269576656795555515744776a573377666b6b4772514e47446c6c4645466878366d7978516b7a6c7365616969423461324c73796270666e563146454765586c365a61764679564e3754714c59556668696f6f67704c5054444a4e5a64697a61636e34714b494e70616d76766451366165586a795555514337716350333857514f696e484e525242584c45367363735573644f6f4f2b72384646454668626b32537436645664574647555551566c6e476e6c347632716b2b5a7147727835594b4b4941666a79552b6d72756f6f676b764c3139574f667554584e44447562676f6f677a4274585537632b355851625077766d6f6f67727461644d6e3161586f3661574d6d77795555515471616a756d4c36612b4a6c4645414c4e4676446e326f786679363456785555514c4239525a33567374542f784b4b494b6f613958506b6d6b326f4d372f696f6f674d33654c2f73545531426e376c46454765377031486879556f314d63314645467478755474566c6c4f6636736c464544574e4479626b72724f6e7a432f636f6f674d64503150702b4b654f68364d39635646454453663673476c67716f386d5a73314645416c707238572f42414d3158787a785555514e4c52546a54336f334e4c6c2f4652735646454275614d75394b4e4c5564755369694336446636636e55697a48467134714b494b686f63757a7456335377785043716969415430395836554a65552f5337386c4645424f4665394a536a63564645435230642f4e566447726f3865576e696f6f673676702f3357754c4e6f7a315966426471317172356d6e6b7969694330365735354c4e506d366969424b7558354b57332b6e784b4b494a4853342b50596a4c41742b4b696941545a75664c424c50776a553735736f6f67485334304f364130763159714b494446746448524772544c6a795555515a7a706172507a785572334b4b49502f5aa165627a7a723058204432f79581b8737ff9d6d0dab6e96a42cd3f81d841f2794106613d6b9e86d59e0029` -// CypressCreditFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CypressCreditMetaData.Sigs instead. +// CypressCreditFuncSigs maps the 4-byte function signature to its string representation. var CypressCreditFuncSigs = CypressCreditMetaData.Sigs // CypressCreditBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use CypressCreditMetaData.Bin instead. var CypressCreditBin = CypressCreditMetaData.Bin -// DeployCypressCredit deploys a new Klaytn contract, binding an instance of CypressCredit to it. +// DeployCypressCredit deploys a new Kaia contract, binding an instance of CypressCredit to it. func DeployCypressCredit(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *CypressCredit, error) { parsed, err := CypressCreditMetaData.GetAbi() if err != nil { @@ -71,29 +71,29 @@ func DeployCypressCredit(auth *bind.TransactOpts, backend bind.ContractBackend) return address, tx, &CypressCredit{CypressCreditCaller: CypressCreditCaller{contract: contract}, CypressCreditTransactor: CypressCreditTransactor{contract: contract}, CypressCreditFilterer: CypressCreditFilterer{contract: contract}}, nil } -// CypressCredit is an auto generated Go binding around a Klaytn contract. +// CypressCredit is an auto generated Go binding around a Kaia contract. type CypressCredit struct { CypressCreditCaller // Read-only binding to the contract CypressCreditTransactor // Write-only binding to the contract CypressCreditFilterer // Log filterer for contract events } -// CypressCreditCaller is an auto generated read-only Go binding around a Klaytn contract. +// CypressCreditCaller is an auto generated read-only Go binding around a Kaia contract. type CypressCreditCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditTransactor is an auto generated write-only Go binding around a Klaytn contract. +// CypressCreditTransactor is an auto generated write-only Go binding around a Kaia contract. type CypressCreditTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditFilterer is an auto generated log filtering Go binding around a Klaytn contract events. +// CypressCreditFilterer is an auto generated log filtering Go binding around a Kaia contract events. type CypressCreditFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditSession is an auto generated Go binding around a Klaytn contract, +// CypressCreditSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. type CypressCreditSession struct { Contract *CypressCredit // Generic contract binding to set the session for @@ -101,31 +101,31 @@ type CypressCreditSession struct { TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CypressCreditCallerSession is an auto generated read-only Go binding around a Klaytn contract, +// CypressCreditCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. type CypressCreditCallerSession struct { Contract *CypressCreditCaller // Generic contract caller binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session } -// CypressCreditTransactorSession is an auto generated write-only Go binding around a Klaytn contract, +// CypressCreditTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. type CypressCreditTransactorSession struct { Contract *CypressCreditTransactor // Generic contract transactor binding to set the session for TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CypressCreditRaw is an auto generated low-level Go binding around a Klaytn contract. +// CypressCreditRaw is an auto generated low-level Go binding around a Kaia contract. type CypressCreditRaw struct { Contract *CypressCredit // Generic contract binding to access the raw methods on } -// CypressCreditCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract. +// CypressCreditCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. type CypressCreditCallerRaw struct { Contract *CypressCreditCaller // Generic read-only contract binding to access the raw methods on } -// CypressCreditTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract. +// CypressCreditTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. type CypressCreditTransactorRaw struct { Contract *CypressCreditTransactor // Generic write-only contract binding to access the raw methods on } @@ -294,15 +294,15 @@ var CypressCreditV2ABI = CypressCreditV2MetaData.ABI // CypressCreditV2BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CypressCreditV2BinRuntime = `608060405260043610620000665763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633d71aab381146200006b5780639457f63a14620000fb578063b2ec005e1462000113578063cd838f0f146200012b575b600080fd5b3480156200007857600080fd5b506200008362000143565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200010857600080fd5b50620000836200016d565b3480156200012057600080fd5b5062000083620001cc565b3480156200013857600080fd5b5062000083620001f6565b606080622bc72060405190810160405280622bc6e381526020016200021e622bc6e3913992915050565b6060806040805190810160405280600f81526020017f456e64696e674e616d657320544255000000000000000000000000000000000081525090506101c06040519081016040528061018f8152602001622bcd8961018f913991505090565b606080620b1c0060405190810160405280620b1bd38152602001622bcf18620b1bd3913992915050565b6060806104c0604051908101604052806104888152602001622bc9016104889139929150505600646174613a696d6167652f6a7065673b6261736536342c2f396a2f34414151536b5a4a5267414241514541534142494141442f3277424441414542415145424151454241514542415145424151454241514542415145424151454241514542415145424151454241514943415145434151454241674943416749434167494341514943416749434167494341674c2f3277424441514542415145424151454241514543415145424167494341674943416749434167494341674943416749434167494341674943416749434167494341674943416749434167494341674943416749434167494341674c2f7741415243415276435a34444152454141684542417845422f38514148774141415151444151454241514141414141414141414142514d454267634343416b4b4151414c2f38514151784141417745424141454541674545416745434151495841674d454251454742784954464167524651414a49694d684a42596c4d6a4d4b467a45305168673151795a425246495a4a314654596967324f455668593346792f3851414767454241414d4241514541414141414141414141414141414145434177514642762f4541454d5241514143415149444251594442675545417741414277414241684544456945694d544a425557487742424e4363594768556d4c4249304e796b62485246444f536f75465467724c7859384c53387549304253527a732f2f61414177444151414345514d52414438413746374c4b2b4e54497a6c50386c41724a7a6c4f597075652b71774b38577a4f6266384147764e72424e6d6c786a4c4b49615a3836466636343376376e6f412f6e777034336955342f5a723874757358613946464b4a6a557668375176546f6374666f6b7650474e304a3053314d58532b4a52727254497466413461514f4a6d4936794a4f31682b515a67735669757175315a6c536f5365524169654f42577a7749305246586a676a55493466766434354c692f376a70556a78744e52753749544c4c71527967736d4c61584a6d316344496d726d65465363392b34374e466d666b30787838357370705a6c74425432502b574e66597133544a4d342f7743676b34527878667832715073713552544c6337613539756a4f51326f35625661737a6444554f6d69506e324e446f4e5879744a6c6c4e2b5a687548674a4349614f66423371535963454c6443674f5964433367476f656a735a73646248524179634350556250342b4d356c31414a6e31624753736d574e54576b42524f4e6c4e3742565652434d36354e3645326756536930764774596f795451334a6549505a734378736c4a796741554d7053445575644b39494f42356f687a78695a305644354e64474f6549366d3664306e4554336e79516e5a31666a756256787a364a78685a784d4b774d7a2b35784d346d6c772f757643306551467a5766472f4e426d6d34574f374c50793237575a6f49316a735a473643764f7372695376526835504c43625771542f6d5268567a72776d2b6b6d7761353265635754674850504b304c79716434366a364c696d512f545470524c64432b6d785455776f78355850575a70483435347834722f4d4a6f36516a48565a6b6c4738656c54693668614b624e46757751536f4f6f364e6158544d422b766577463562374e4279516f7273663765755362316577416e5543574c41714d652f61396b717147556f6a706b445169514e6961366b497962637131505833573832313731424e3751367a6f75315a675535672f495153337566586c352f6b4c63387361697a5477557950356c387a723764335356324b43467373584b41502b4c6f6e2b72385348413336424830784b576759767668726c79417059745a586a77474c6e76444e2b6c5a394f333330646650644c705948376f6e476545574a58504f64686b645966786f586373483638386747644c4876303244546e516339756f513139524d696e343736736448455762464f65706c4e4b746872616b725758746e57424a4e4e502f5964796377713969655174736b736d76766b74436a5071517846796271786c3159585a6730555154672b70542f47344b4756395664497676776754322b306c794a4331765439494844727568434c52694333585262483556717879766a7832616e3247316e6f49325245556c4779656c64424b4d4f4b704246626c436d7235676d766b6d5272796a35426b7074707043386d6245633479726e6a5833503841496661366a4e374e4b767544376346667a6647316c4d7a76346f7764503843524c5144534a574d6d43727345326c65334f6d304941747a5942346846686478386e55796c4c71385a54795a3378516a636863616a6536506d72456d4e484931436f72623765494736326256473350517166584c4d726b4243597a70304f2f53796f5a2b3436387647736a5a52386d634443773665393674503036374f6e516e333254554170326f455747374f54424d4c477a4c484d5737544f7735614b63666754366b47764d46656e6e533252584e454c685754754c4e53315a58527046544a3571663630352f4c37693950484d7161376d4e6c545a4638312b623357312b746261764e44546c574645474c70313532786f4950486e436f3245536d4e3761437a636b30756c6f6b344f4d386550694a586f34773052755936754a4e784b63696c39637861477273457a50304b733438374f76314f443355644e4b4b486a3879624d2f6874544335544b54614163336453565a544e4a6537507272302f4a71494d656537496763444a732b7636327349632f3755363865616e576e346f6d73704347625634707673375830612b674f73424f6a34706f55552b49655262506a564f394272726b44786d5856794d572b56655052506d393867756a576d577a79522b4e753648614a676e636c616332752f37304a4e2b71784d5a3638636a626e30322f4c33636735544a36715a522b58414432664e357034564a692b4d6150615478614d47652b75546b70745451634e454c566a426238483254624e476c695855364b633530346a73786764427648765533776631436d5a732b4e61666a2b7248537250626f773658666f366356505736676454735a6c4757564173576e33455355555274544f5a706c373966676471796d73784732524c586d544451645048536d5038414b714d63335270576d497a6a2b727449424e2f6b77416b6c6c527045444f494547306173597955716e5552787943732f57465a786e79454e556f7a6a546f3263375057674a5a3254745651323559436d64754f7158334579703634364a6e557559432f396d67456d304b6e5569617a71306979346336375954377a476d5248637a725a4a705a63706246705a75453658535552664f34536273544e426a49775039424879477250702b6548517a56614e566b476c537871382b544e6f5a566270504a73384c7147464b5232574333686f3730346a704d452f72375a5566304574374a586e36376c572f583045673462583344507751637877787075304b2b547a2f546830413973614747432f64374b6158382f527345653437376549545454715576584831494c54597a5330722b574d30377236706d5379752f684a637778534f6b58644a6c456d634173577a6963304b444f6b506843756f53316b775a39766663647952795237564b55422f50517437555a6f78523577362b6530317a486775795a316845624572666534452f4e573450723270326f43756672544368644b4561627156396f3745534a4d7049776f306e723175705666584334796c3678656c326e7248427961645053634239704a7132793367443174566c79795335742b552b584d314730544f30395059727039724a6330374b6f324430575a59625363737077587870434b54667a367767383356434f4a52465057456b3045374964596672363845747431796332504c6e30453573733968335650545534486148464e567747766f6d4e4d596370443946612f616b454a4e4754545248616c756343717a32357574747a395a43587a5931304b5968474c576e66386b724d746c416336417644356158502b4f74307847796f7a36354d4373574e74754656457578636e57534746593172344f3058586e4c4f746f565a382b613457724a6765396454686e4e5a4134336341526a3261552f762b496f6c4872305734364d38724d32566c63627431314370376d754c504b656f5636476c38456c796c327164596f477a6f43676c3974626238494b5461636f7833355547777058777578335461524677466636666b7575676a30422b575451636968596c7767584761752b777675663752366d6f4a5a6c716451715a6172313056306b456a4a7030746d4c704c316f346e614a5451725179465052637477495837506372324c706f56386e4f30416a396953686a6768643547686a36446f5a5a546c386f3566333373304b736c50474d347566512f6c7145316a32626c4141426766362b467448764264625a7442766132654f5738486a4d71543337427a3258547a4b6459796c7a62616b754d666c7961686c5372737632523461576b633336654942386f73473265634835744d7944484972694e464b5a4e5a67782b346e6f7a2b5a7565714f4d757970734d6d416d503430476f717544305134304d4d54746a6b6a46585259682b526b31706c7a7a6d4631756256576c6a4f326f6c7064316f6b6d5a3141664c794d51346c436151555a756153772b7330574c527a6b48563155777a54496a6e737952714b4f59517063535a70577a6a332f704c6c594c54567838366863344a48415a396d6348324b424e744b30485148324d36767533546c4c4636464e4c5163306f6e7672696b3664516b743277616e4345644569667371724157646f4f475a6d5a6e4d6763374f70716869686d682f6c49716173754f7a514b354778537836474c7434684c7879316e715763325068496b394d3451586f714f556e7a5539396b373765494f3538393641693044536a756646736e51615a6d58706c4e362b735773506e5a2b2b335a5969356b5938466a536534336b612f74473445784f4f3450444435574b6b306a7535544d696356317a427142484a6d446d7237616a486c74573165744c32356b7162656f5358656f2b48717a4d4164474541612f70305a754e54733173446d6459664a35314e4163575349702f71304a4f65556e41553352646f47585a336e786e3168557237446b47332b702b4c6c2b6752696c536d65695a3364572f756670566a535036325a4971556c55774e4c512b3754726673714732444732742f755561516337334d2b4a7930386750636d35396373376b7a63342f374c6c6a7879737a702f504c3337756b2b68386b6f63646b6c6d7a6951666f682b555068637559554b436767587a754f446f6a505670464d487776464b624f7949307842567330726375366252624c6e75617653753458795730324f2b706e4566506a4d30663044473363705a57336441324b2b304930566469435934436f74566c787648353936784b3458646b6f537462487a68373141797458617871425839426a2f3841482b77326a5969427235446d6451484d74656c6b51736446414d3938382b6f39767872546d757536524c53756b3346336f69516d4b7761366b6c4b714a30592b656752626c6a2b794245363756337654724f76424d3138342f525958786c386e746e39787a5465772f5a4f6b4666314d597a47656758586c396c68733777725764712f69356b335a68765779714b795451326f626252526b396f304c31797259624a32434a754a4c76734753475466314163764b4575556f4d335a7a65796d376c50774a6d316d46794e6e61366371446c414948484b64562f48747541777248326b3476324241414c737235493470443743566f72535038564134624f5a6c4f65576c5a302f344449752b5736775072697a702b35582f596e4c32484f514b656f4165587a457a64444e30327a6134484e30677838446d6c4a4756564c4777765a454d6b656f7a6c3358517567475a342f77434e4d38632f362f587847417a6d5a694b6a46623745396a756e5632726f784a436e6c43556a725356527464536d7a377446794b4d556d4579757936557154366e2b535a4e37314e34355177433730785a51586f6b5774562b7839575a794e626b7773453658365735616e526c663852446e38304c666b43314b534147553043485a3054702b4a31387778524d532f476830565a3469544436566753796a6e334e76535a395a6645334d2b4d5a3432642f585648397155426d2b4e4a2b2b6176336c4f4f4f4239692b57664b6d304c36463072642f4d343130314b4c7334363130764c4e6170726d554a2f69326636574549696a2f554d66574f45752b336e594835485675574f526e4c67676a3774316c785344315a2b4b3757346d636c7a755046534a553864376d47743569502f5a446f38544f66742f6f486249356271425a6f356e4d32714c4c4b3767356d753335364e64593538326c516656635646664f3657632f736b494e5741476b6d476d647674704166376e3032665a5055584c4575674363734e61426330636c76616a6d644c42564f396a4c5062705a6e434b63357130702f324f63546a2b47514367594a4d3163736b50584d4337614c363031626b4e647777695a553366486d684758324756736c32754d6d6e4577436e535068676c7773372f514261344535326772517064584d4532584a65466346464e43596f6e544c7a334f34474e51632b4c4a3375675535476b6153344e35653833704b6a37416651586d364c6f4a7335504a6a704b364336666e4d5a4e4c71735a74436c7a72696a583173714c724961676e5a4753584b3434675777506a425039544d544857424967706e5773453672634b6251532b62516532316c56696b6f6d4f69643268657a7065386c44386c442b6d4e547545365033386f4b64566a5677416c666146614e59546158487961554d32586b324e6f5454475768714d615755786b773533535a6d704a64692f7163516c4a6c537472584a5a2f752f6f486e4e4949675a485a6f36506153706771717567687331323255677968476a4a54705a4f65796b666d7358635a6a2b754a2b743871547149694d5036423242394f527a3470532b5a7956475a456c71656a58656934455445753246524e5364684c492b7270457531332f4535733548535a674868624c565a2f4b7a7170723562554171727036755369484931576f71485743744566536c6c5a5238336567386c53745838686738674434436e4d34322b41636b63574c524173676a42374c645643716953693456315870545a627a6654453739726c44693435417049714137584f2f77423632392f546963625434794749645253364f51715957714f706f6c4b4b704d78683674456254314854563379394c5573726570314b2f643176524f592b6e7a6e79715532416e4a47624a4656364a2f794e71744a7a6f4b76685463326c31516471554d7a644f70484f432b7a514b685a76452b4c6f412b676c587437377749726165584d6730775a6a56707a78675776516a3555305a354e686e564f4f526e374378504c4a3944764b6841416135795059617a56544d6f4d376261686e6564544b33544e6f76444e4f685538363170666c6a735a4d6c314b782b5a5362525a6335523957596c384e4b5070796b6155434833742f4755516b55773651474e4572355833306f746d52514b6156743764324e506635354b312b52646c4359666c627a537534517a39492f614566302f6c6c6635426f64747672666e35356a45624b735a644755717430746335784e38686f6d424f62306f32632b415363726f5142777a64373041344879712b733035326347386752485a4c5969586c464468723149334f534555326c6d7a39544b52543041684361794e6f3068787254426c4669675a6e48524e704a536e6b2b63797a4e2f6d6d5432746b44496f527857652f69545a584b776e42386d62396d50674e6f45756774464a63364b6c6744626d622b35493461394a55574f304835373569745571626135513350306c6263792b4c4b6432386b6f2f77424c615979762f5a6a322b3576514778774f353258323559556c6e6a6c49526f737a31673350304d5a6b6b30756659654258664f3263757a2f44746354516c4d7a42374d4e5254442f77314d36677a726b4849526a4d72426631484e6a575670413574714f423248354f7279737963506d463475755561357178474f57396871696b537a3544427779615a387a497075586d796e56524c487461503355707a49314778646e33594872516d796453326178546730506373763050614b614b36682f6f4d3873327977766e6e323770476f7a58396e357957546b63466a724b71563859724849416f396e4a626e725370777a7041476d6f334e59535341534278712f6455646475642f4a39594d3771766857715a4539517a385a5a624a4f563270437634626e383651636d4f6977556753444e6a6636416c534533624f7067553864445354384c322f526d597675724b444a6e784d5a6d3534436c61435377562f462f70346c4e674f6f2b746348574178342b4d313231444c31457165644253316f677976334a7a5573346566566f753143544b3973715845664930534e5437476934442b7a7967774b5a326a6e75646e6d374a786d794c50346f416448625a617147544c6b435673384e55622b6647756462443449746e4d77706d4e79564c59432b684f6641764e5653336f7a744c61392b57696a6b55756c326635344d47766f7a7936454e356c64512f512f523059364f7a72344d7154702b4d6e4362706d67784f4d39777432416f37414e61645a52496e2b726f78316c6c77426e396662514a752b6b313541644174372f7a3065386f5541307a456251416670674258785464317645577375794e42636972656661666b646c7a707a756d6e62596e6955392b516673617a574a58315963446e75346b2b67494e6161763669596965734334562b70666b6c376673785151554a51444a6e7a3866512b684e54752f4558612b7a522f705074596d6852695a38464c6a42426a333263352f56626364737a783265762b372f415049442f77447a6a6556567052536e7838624f427a67564b71576f51516d644c79355348742f30786f5a5a4b7a682f3970797753436845682b774b574d5247597a6a63492f33316138686f54776c34386b31484a335553314a5958554842506e4c6f657765574f6e584f7430726c6e374768385353634250667876566945374b2b416874507146356452325646754c6a75597178434867446f714f4c6e5a734c53633450524b417571584e6d334f2b503271464b506430676343544e545a58774541733956397172374445654f2f477050477552396b6473377771564a37496166626b52312f794263574e44616b693848544647496339774b425a57465861766e506d6d69316b394d556a724c2b73686f68645849756e6a4a344e4350566f6e5733552f7744625070355057764869324f6171424b454f55667637584d52457a786e45434a36506b2f714857584d372b4b79555a4d33567a444872794d536a545442634d396e316d4c536375546e2f414d58386c465347382f585a2f77422b7a376e752b794e735536352b677058314579745457625a4e7534575774746664354b5934584b667158446f794c6d69566e305669734159746b49396330426d42504945706f595832547066656e5a67617865552b4c32535a6236364c4977716d626b3832454e737a6e2f4247696e516f3131364f5058382f7778797057733079713533367262324a61487868416762445572317139554c706242563451656a66715934737834453238616f31506d476f48783136353752574c71553666534f684a7334326a6c35694955775457746470576e58644130397039532f58532f72394d6f76443032524b71766e72707a746a5931476c46484673452b4253566d6376324e36665062484f7358532f5978334e6d594d7846782b6d796e5439502b636750623667666b4e716c7661732b506e3058636c344278696d334f532b7148713532565a5273386861552b444d37425a4b305656326458794d6c5570416b4452584d563034383539654953753836396675614f57303837773347653254626b5a504a6b75304b33716d70316b654f705a4b7a44503571705a644b3447763777654b6269443275754943536c7a476e34543968454b6655373869563751767838764973376d6665324f3648425a6c742b4732564d36594c6754514a525a59707779414a505963646870553843564970414e6e62703439663044476e7a50386f4b4a46356b38754478757872714a42726b32705842506251755762756a447a327a4c324745736c766f644f3462457a64736548454a586336333750316b5250796e7a6e3136677a6672376d66343065676a587a753355617552524e527479357135636952632f764e764758544d306e6943344766587948514a4b7437763841722f30694b54776a39513375386a395a6d554d4c6438583864685a5a627053485a334241396a5030596c3632656b51765a697455764c4255656879526f316579556f336d354a68387830503266724951523558367158353536383650443844527273765a6930572b4f725a6e737949336a6f34327639524f6237564a525a48384d2f4b6b666f4f2f4e396f3750347548506378534f45684b487a443138706a317933764631424c51484431744650696c5639506b476e627036562f484b32383550457a704b6d716d686e5a474b4261675439466f6b45354d66732f575130386c386e2f4a52766b386c7a2b59756c6c4b357756614a34316273306a78326b5473374e643268363857795435744266475442505972756254624147667a6e302f3652464d42614c7972386d632b6775496a314a37716f74725a62617278366a485332423579346a62736d646f636e6e336a783650494b55677237504a7665646e324869344c6d763266724944782b5a666b33547a74422f384167326e52715a6d6a434d6a7073695a5877324f4663306776426e5779354e466a4b474d54657977357863546e78396553546d66732f575158312f50767961795767324844386643656371395a696d342b2b3756705a584933627a4944677a6442314d726c755a5041614a756d3661797870733554486f6979746a546e314952523537363930395557586b72756b585a6730654e612b7a6b72677938793961776c566c355863663635614330702f6a56393433332f41467245385036494a682b762f557a46492f38415956447a7a3137334e4561496362787a4e667034794c5a39504a7764686d532b4b334e6a4c7871576c57417874452b317936505336564d7a7659616f4a30744d36327a4b6647326c6576722b51625665556576534b4b4f506f794a434f644f6e79585a505651554f687268704e305a4f3334395873304e62733663726e7a55434331756d706537743377563066302f5a2b7368485a38733962725033796a2b50316e79356b4575646d774c71666836393136363352386c6c58445256646b306c6d3648454a6d584e38637764655a4a676344757a696e6c2f4d4a42356e2b51743242374a502f447879364b4e53366e43722b786f7061534d2b474d46357430564537715763686875556e682f4879507363776946453038495a3059706e7147646e71562b525863674435335051724e373258516c79504739716b3634657856527a52625361506a62556b787a2b49563150572b79637a4d6a4e796267354f4b6558387759373558362f6773464852347046544e54414e44565230627a6f2f314963506a4f68714e7950337a5030475a2b654c3256714642777053314b436e53494c2f7150326672495a6a357a36316231576848427634486a476d6d3759356a4c5834737764473261726532326155423744357952646a7173795234584b466e794473775850374d47624d6639544d556a7147306e6d5035416f793949546a38635a6e35744e666a35557338497a31357445304f4e6a6e444c54573332737357786162753858784e71534e777664526438444b7a597035667a4478577a36323675686f5536444a6347676f6f5a565544674c314b797a764a6f366b615764436b73387674782f77416c7155556a39476c7562474577653155367553456246504c2b5951794e6a312b44556e763374476b38322f456f79705863384d564a44474a36324c6769574251794e2f326b633056304b61506339364a527069436733542f43785554737836794773336b3372364f526d5155597565364f5336794f616166772b537432624e3937566b6d73732b654e44725039695931722f54523757344847446564664e546578544f414b71322f7947306532556c646c647a616f65364978374d4f57374e77382b7a4f5a6251746a35334c445963413648306d777a4c616e67306a50535830354a416f6e46504c2b595531664b5079436a4e627272636133482f6c347671613254693535346b6f775a7247342b5a584e4b79652b577759316b784b313174544f47776d566e5263645336574b655838774a6930665864736a6f56342f6a6d48396d5052302b667a2f41496f65386c6d67492f4a5a747a41456f647168527a616f657353507042544e396b484e353873396a46504c2b5961573750726d6a4a786d3632743438386f725259696c766a387752364f66715079706e61656868614f31537947577147686256683949797070437053616546544a4e4d32307a6a764346666b5035422b5163336465797a4566756e714d67656972786144723667705a714f68782f7052736251794e75564c436b4f78305539635771505571754d484c6178534f484154485266362b4250342f7461577268564930494b766b352f77434b3653644a484e4e4b39553864685a30362f63734c4c6b7343536b65652b74774e4434695755637a6b36657635686a502f415058417a4447392b7234717949647a7864474f466e6a6566464468344c7a5833353564725273613679456f4a5a55556b695a665a2f6771706e396d544d35564566732f57524c552f774431784c6d555a6c506b6d5a435746463256566d6378715658374e546b3465764c4e6f713244653742444c6e7936526a3751442f384144392f4377466578726b3669465a65582b5557625174772b555a4a445865306b366d4e4d2b65334a7a426f716d376e7a6a76796c61364535366865312f7354386e7a5230305866517a766e433237533850583867585442362b4c5a6f354e586b533430337a5356486d5957665a545276644c496a5536624378676f745239352f4f4630506d66372f414949324c6e643151642b7258396e3679483258347a36373557624d6445754e4e354d6b6e3953724d78507451697150532f6a734956746d53306e61687331436b4e34665958642f4648376556324f2b4d5a6d61544f5a3669546c34642b546a6734655a35426d33336e774c73715a506a374b66723564554566647450477248712f727430726859625337544e4e4431715a69615342554d66732f5752485338652f49584b5a593633796e78462b6e6e792b4b796f7a4f50546e614955596d574f4c316f594b744b6c525232454b36425150666d634272396b3331484e6e706d5a705055666d344835477a65526147546d6563497a4657773155654f304c773136773539626d706c302f71614a79396d6f31754f4b5757726a6b396f44726739796e5155536b364e314d636138526e6b366e72373173777837387877386e7a43324e447958786a783736336443324c463065524a6f6c2b523774796865664358506d6f6e42524152687a375031444b6355387635695461486b2f72705659494f38367973374a6f73536e6d4750674f646c584c66664b4f464c7458787664547a4e355535734e534f64486c53706a536b4f74396a535654476c2b414267386839644f6251597a664d585132303641513645792f547a4d6b6e2b7670354334366452484f304532466a63652b777576346c61633434394c6a706a424a67647356786e62782f6945766c307656567a395a33665544575933472b74784630486954417572743035467179706e707a597a513665686d646a394958543073396c6c4e6b6845536972474d30384a3966555265656a386b4e48594861487a715161676e304b4e437652384f6a7a77696a30734b37487931506c7a38327966334d48586e543969614c39303357424769697867646d66504a584e646f6548752f6b6e6f356656483572486e615766516e44354a71654158356a4d364735365a454268374863316f56544d6c4a33777a7461524a4848392f76506e2b366c7966672f3351507a3676795373687a49756565782b554a6a31694a75674f4f6a47566e50586b2f756a4d30507265786e33704173773167536c45723473545645353561514d4578696b66447444477066354d626c32374d586e6d6a7161565371326f545634376d346633664765514d686b547061446e546f7935355248375275575056673035766539576c44336a584a487734774d396e4b3965333171573779537a546d76647032387a77787337564f6156697a544d484c6647764947636e7962646f734d4c6b7941513067465471784370514e4b596d6e68674a577039662b523938727a505543494c62464363534d62786e4d7962777a73686447486f56713564636d5851573956483655705958567034366d636543637a6b307032644a714a58437a317966654d795055476e52525471342f324a75654e7a314e6e32526d463150543931556c63503841315551724570596e4e427a6c5a6f4a753663426631476165452b767150775a33354e6f55434f2b7157414f685a5a536d35412b4c556c6778313853346d354a5a6b63626b73304a34782b6f6c786c6f7345395541505161714f536e2b6e37504f647645424c672f496a7942655154764f35362b637966486152763176473052646d56716936665230384c6c446c4a4c4c64724c6c52304a2b7a706d6d2b594841617541766a6b6a346359432f47666b5658426e536551655578564e38616c5271514e6d3853586e3563696e34673041686d59586a36305661314c3742627868504936546a55346165496a4f6d7966326672496376332f794e5a6f7034666d2b4e6269326165306c6c4658694a37554754792b746d724e4a704f796e484a37624d724a583136304d414641326445304454543171324b6263376541642b4e6552666b6443575a6c36666b5867517242305762506f356e7037583139714e77624849474c785256454173715434327579546a6d774f59774e4b6a39664131505948784d61633863694a79332b766f62417935506e47497939394531634e4e6e707254544a52703430634f5834344b6c6b3769736679795855476a324f6d4c34533570664d71684d34545a76584a6a6a5868494a72386f39667038366c75643566415364465930555754656d4161575a6d4c38676747635a30565433536e6b726c68304d6c686d543348496562577959354c463166596e6b2f422f7567594435482b512f6a7761577565783466384161386e506372306f64547843505850614c7331484355317754546d6d6e726e4c6459367765434838492b6c7a6c68375242696b3849372f6d503258366a2f6b4f74695a6454653950464a6e6a343934532b4d4f716a3141314c3348356235432f7974717a6a6879536e5a4b456e61617673736135504e4233564d2b4f364a696d6558644d426458715a2b52586a37576e767338426e35666e78462f3544443474354674616d554563662f6a6d46512f4c304864467958366a75764e4264544e71706a6f436a36794a69516d64744a36434e6439535079467275665246623664526b724f656f4b4f656e656f7932504f38553754662f476a58752f5954444f37554b686a5673636e705375536c78306734457954737034322f6b43325a366c2f6b52697956655154374870656164446835766a2f4c76414e6e2b66516e646e38675a4c4c6c36724b6e322f43616366514a6c52485641484c434261534d47417175327378332b766b4a7034743677666b54354a335a7943312f53735a70493955654a6b77716a496379432f516a75474636745a3154714f434e467a4b2b6352584d4342536b714653546d6c4e6131386365764564622f77414466796b383739462f4a562b5437345a4776765a756672346d6a6f626958597239334e337a7a64524a6e6670792f76466e346e4a2b565475586657416d49574d774a706d2b767a3674496d4f484b4f35702f77427a4c4e4652394c7755675a446d7472715870766f672f55343653346e6b66537a75417359786f5764662b48776a796c616d317042643730347a57382b3634522b7a6a466557763474332b7250382b2f4f5a3343492f334f38692b32614849384c6b5479686158546a52716d673777703035382f71702f774445654d6f634d2b6f612b633451702b6d43334c34667655453269303134573933586a3035643265316e2b4c6258683265484349487a532f7556717a7248544634495a6a4e4831363947353763714853556b34533074444a71306c6f566f53796c6446304f66705458692f70684f43416177636f3063636658394164482b347838786f4354302f573674723170576e75354f766952616161775a63346244427376632b7a506178303475627835684d755969706e4e6b374a7877345774316e6d335735732b506a6a2b55547734376a366a2b342f6a586c6f6a543464584b654a59366568455432326362436d6e4a6b304b465674544d43567064645150665a3333392b6e7a2f4142347068422f5672787258694e3270752f3841722f444864326668787938765a43592f33495048776f53783369616a6771476f6274425633787156624e7252352b6c484d3336727a3143523879586e7a345570426158473967385578505556314f626d336275753673577a30747a655047496e6d2f384174626359616e39797a786d46444f4d38483051765653637870476f4871426a4664716d5432786f72567056554f467864414451365a56496e3963782b7943597453392b3162646a2f4150696e6a4f36334765507a6d64766147553339792f78586c5645396e6a7363374a65715138717442553463655a7a30746e6c6f4b6a6f3669527a2f41476672346d7335512b79627176597033415646644f59323478746e34666874303639383174614d347a6974756d412b3066376b47466d6f2b5976454a656d2b4b2b7144366d2b716a74745758505054715a4973596f53645a4a50644f786e5565357a662b6638415541413068563035696331356266692f37743163647262326574647368314c2f4148464d692f543063366a78434f5769483751567154667061464144416d57366e684f6e7965545373484e75615475473866685944674e6739416737652b2b387a4e706a6471592b48773849366362635a6e4858646a684d316b693766376e486a4b4a78355a34577056614243716757617678496a3470795652726f6c3750396c5930547554534e564b457046422b376e66627a33663145366470327a746a68742b48772f6836352b4c646d33356763622f6359794f4b7075583666413265423977745a7a54734b6c39674c6b636a4d6d426d57526c71633556372f41496a39763753484b472f52446a31497266546d302f44582b482b39706d66682b4b302f46743751555a2f6359385a584f56636d544a634b3254732b584c7136324e7148394550734e67665971704e5145532f61686b7169596450766e42795a61533565497657317070793776682b484e657a626230345478725873352b4848414e4b50376c666a6d532b704f35346957644d6f546c47354e726d384b704373336e413937493066616a35705661456e7972542f414d7679696e3474667a41663956696c3857694c64757550703465667739726a77697537484b43576e2f635738636a5a4f41654c306b664f6a57394832573037456b56664b69517a6d4a785047554c464b3531306b74332f41462b75456d744e4a482f55624c63324a323134384b394b3536376531316a6c3836384c4268482f41484866484b6539734c784a6b69356f553248472f53516a6a6148504b56515473306f306430424b637147736f516b5a556c456f5366786436572f303257696378742f6c752f38414c635075662f636b385575576f2b654a367341316c5a3166624b454a314a6a5a5643654633547a326a4b34554f6c714a70476e6a2f727144376c58785a6c487968614b366b64316431652f34766874327678524e64316264727538672f582f63567756714d367644576e536d4a3954347048565757436d786378596954556862444837463143306c4e31495054307945357750394b6f6a6262476e4566752f312b66384134394f312b4b774a542f33412f484830515358654d48432f5454657858503552564d70397a364a356b6e505450386e52392f484d37776d2f42374353516b344b5033502f414657644f6357694f577476682b48387658772b48764832502b3450342f5833694a66456d746651544f727a3056472f51596e6943503272795a4a32505751726e635945774564596879506834317648716d624c52757a626c742b574e7638412b612f4f765a376765712f4f72783642566247654e4d616c4f67725071414e514c715a79705531734841706e537965723335713074516f79416a4b384f754b5a546c556e4f4c54545a504e2b622b55522f4b74647466773772592f4b535258356c35646763366e784d5953576157304d7031304e6e64386138397a2f41494169496e4f59742b704742634e5066325a6b4148772f595a4f45524e66643132327879383364615a3865505847363262566a70674f512f4d4c4634503644442b70336c69516e357257396843723458793876344e33466c386637572f35674834694e45303142314c54376c6a794b78743254465978573237504e6e3466697261507738767a747434383044755438752f484c55676263486b663274426556487a5570546e79316148792f756d5035534a724532637a5263545134446b714432632b5a33366438545a3273566a6d2f69346333385737793638657657735743697679735579414b482b4d7457756e7250696f4a314b4f722b4471446252784b59616d78724571492b38493147496d6e712b66726869536b626f33596e6d747a5638707a4535707478465a34566a6c3767537a76796c3863764576706842544f5a394c50706656564638372b6a4b726769436f57745734766d4c2f6a3245665a6a625350506845682f717352715670616b646d332f7742762f7743586c35766874615069422f492f4a48783764516a6949754452584d302f3046485a6c477273762b776c743652644a614745785a38455437786f415a396e2b542f47323630626f327858646e70345458473376356669357550785a7a7a435430657365516d5262327045314b4e417636676d542b795a6c4b35756734324358567341714a53614c534661674d2f325a64352f6a6e4f5a697363745a726e756a7638417a6462666c7a6b597439617358696576524d66574c493372533969434469754d596f717550585548436e4d65546e7a3967494342676269417a4c696b524f61544859724f59696561506837767058506950712f57504d736b2b784c6e5839377950746247692b54672b2b5754374a7a76517974625245462b377064554a635a31797a3978653467464f5a6a4578582f544838507278367a754561325079417a30514232504372746631624f6c6e756d4d53377750624b4c415478334339784d596e764236416437307547412f76682b322b5a6d4f466178452f7741756d4a6e485a335732356d657565492f656e766c56586c31314e46666a2b6558644261766d475a30347754635561345a306e3841396176384133546b4c6a616c73374f4174667638412f6350615445593278336931754f57644d3030346d493970574c6746556170526c597a3947796667543861385644474a384d50662b776d39356974503750384171496a4d34385058647a636f67506d6d2f42346a3471337944586133755646316350315a4a5546486f575470544c5049314d71773971666b2f7741476d542f61507739452f663756546a45566d335765413533374774354435665133794464707a357454376a615965364b33764c4b7953556e6c6b7a41514d503841324a766d5a336e5462304241456837457236564a625445524f4936514d70476a4d4c6b4c352b716539796851566a624c64625252625a47344b724563326c706c64546f53304d4f58744b43643850574545307839636d422b6f375936333438787036434c4c6f4d2b506e44533255444648324e5a6366473658756f5839577a706735534a6e71432b68546e6670767641427157323279506e3457584e75535132506e656d53645339784e43614a464c5a532f3466767a6d71556c7352784c4655382f63396c724f4a61316f503558504532785478413974544d3875673967737938334f7735714f39364d39735a554d716239716358484c7a32642b3442522f462f746e55416a556b576a5570686d572b724c7472442b4f2f562b6c4c565447706a6e7654782f4f7558504b7536453273623770302f575433324a456a4c354a7a4f4d6477497379454e34464e4a6b6f37733678325a4a6a7570536d316c624a354652664c3133526a577a574b67766e4a334b352b66476e2f41434671684b4134546f323536757861537a7a313863633071786674774b6b76315561494e58476467796e6f534d4b4d53397a5065355471542b4e55706977565445545051435a3433394e46566e6a757661327a685366747a714e7873675a77556534716b584c5a386479364534376d43687246382b59474133324a4b66384171415169533247485264735a4e55312f7a55365a6a5132665970594e306243666d3674576833716d543937484e545a633564617568536c732f7741482b6f4a706e6a50434238353873306a575037397569792f7267475852596e5547435a6b754c536b724a624f4776536879556c786f473568683978774854523154577167443445546f6e743157794557594a645a504b78656438456f31477a59304b4a3878576c536679646c55505669783838786b316f4f6c4971536349474631726864795231423169314b3557746c665446647076533533506865714c50466b726d366e6b517264786f2f473737683870642f71704a49422b66792b344a706a6c63334e4c52746e79744370746e4b43666f7373646f7048764a6571324b466a577454515a333347427349416f506e756e427a6c6b56477253304a654c44704d625833726e4e3578766173743863545769755656547a5a44556362656d505569444f676176325377444c58753053304a58587a67314d656a50773532562b365633304e46634d2f41342f53536b567a46726154483070466f54686d754e615a356e455954474f385932515a7431476651774a3958374b36303644744e74476e6c352f31676f7a43324f6468314f6f5978737557783156484361326b416e61305059396c50395148616f5a3948517a34566344716d4644322b537457566f3246774a436c764b666e624b45563350716e6e5a31584f4166746d53767676545a59535147303358364e306f54324b6f752b505176794a4c4a6f5876464533556f5a57557462696b5a6d7449694f64344d6d6b7237376d6d422f6f542f6f444d6a637865336e4a31356c537661784b62556b36795654622f624c4c337374317a474255784d615a2b74506c42424a394d4434497a394d4f544763546a4f42383553464255702b62467268364c567476674d755a5a726f69302b3861324756553839325772363931492f476175755053345062457063546a674c4d3549616e7a4d6d4a622b5253452b61793754746d6e774955755649325a38755361584a6f4c456f6f544c374f4653547638432b7a4f354e494d2b533835416a506538657550636e7666436f686846763038334e6a41305563306953367759524c6e416e397268596d595246437a615a426e6e44525531537575715535647338384a3836786631446c584c316973762b4e48714d2b7965796758304e6456387746377a513667726d4a554479424545553153423731445656794d6e2b4e386465546b50356b6e322b30323137677258386d666f464a374f66762f4143635953416e6e2b385165717a6d77784f366854533155476c73397646467a5061584d7a50697a4b6f65744a5a4c76614f6b4975476e70426251424f63615a6d5269344733453965746f506a3564616d3638314b6f6d6d6f70715430525746634c47774e2b5a66645346684a50362f5730444e542f674a4f6f547747737967304b2b5768587179726b6f73546455355530314831526a2b6a4374665a6d4e6f54503841524a792b477a702b30362f685a77674e7967427954694a7966616d615a6248506f6f4d6b35616748585242564a706372732b314b3755533055777234776c41414e464c584a564d394d35415272557466485455685073557166586e5a733063765856585161506147794d566f61756744697354433637686b754f732f66734e653154714b4667514d72576148443036306d33557464324c557254414131584c53716e362b6245596774564757544b4854634c366a41732b6159466f43646f55762f6f4731715261714f7432624748446e303746366f7939714833367471526f756a304c424d3949577a7349452f46302b756266416c68385356534f412b37544e7134326b2b69707569314b653357795139684c50706b533873396b33416a455371717659736a344b577553307a42457764344972533478506e415356646368746b396a686b36536d305464376c6c7a547652485a44324d58555a5a45544c71463631435669546d696c38636a43613578717034474766536d7731556b72536d7a367056767a446b787272755342664b6d6b354b6357563143494d384a793739596b4d4c326e65305342796c3041734d474d2b793542336467556e5761675830444c6f36476c4937736b387361506f445553536f625932696761704768514e526d426e395837486445486e49477374674b6d3750466259546151774a6355345a5a57513932544a56636155724a692b754e346641582b4143442f6a53385255436b4b2b797773696c5a6e346f55486d553035376d556f58445273664971566230757a37314e712f6a5a303835305a663377514d4b484f39725065413272536b306753744e545a4872356657337570747139396331736a4a615652745271645a5655633862654d4b6d776736656c3148796634494e494b567966526b794437565263787477312b2b6a71584d70427565787a4e6f4731354b687336366972562f536b6b3548786778776d3843475951564173524a76304853646d79516569764d73754e7256484255376e5470426f2b536c31304a2b3753577a6f6830546f3153366d706e584b4b6b5069315a335a65327a366c69733574696954396a76304b5646464f364c6c324c5854483266356a4a4a444b6e345153346a346e3370722b7577774938442f414d6a46443573714e6449424c45414c7a754278425367786234702f624f3571374555574a535057772f45507a417a6f2f46775461483558375879565a6847696c637233452f756c4e786c716773726e6d716b3033394378695872736965626959706a565751744e3771534558417573644245785a6167314a585153337a6856706352336c6270464f7a546b477638416a4b754d4a396c337334696466733476324b34446a5973663642494d6e7451795249304b31364f636866372f41497832614368704d324a464753615a2b307264325650754870454955386d366b655472436633677a4c7152376f4c76645257706b4c733935587931774b6b6778522b5a714b492f48617862795939434e78677a6a365848796c5367664f616a42674c356c46507768525979354e36704553567935307a4d4f6c793435366e46506d7952352f4b46787239313150777a714977434434576d31674f647741615730413249787a4637523830517070636e5072425654765a516d744b3943736e4e714c363635586b5a6e374844422f75615866685134436768626d6662792b66527a4e764f4d61357371484a70704f593739785a64414773306d6475585535333265384942704c763133494150395145474e794d7975514335577568466b49412f6e4d70676a6c35655059543838344b376845426a6d4b7833564d42366c4f5a4734596e415a4279594637454a7a616f5730736c75586b4a6153737164664a6e576f6954475772585251746e4a794a56457478763659704e30344238595568387162415964626930496c705a2b3547693069593564457a6d6144477755592b684b6a523563715162412b38546d41313675787476637a682b7733413448464f6e6648616b655250632b6d4d5764582f4a54777956315275596c7556494e677a716f454a37497954374f4c4f556e44372b5039674a454271466c4c706475485374793551626b706a6d68716b6f7172524e41745251717975706b57526f582f487158567a334372376a6c64494568385038415166694b4b6164487a367279792b52306e30394c71315a377a376c667274703848326936373574537451762b426a36477a43717854766f7a632f6f472b394e4e49326e6c534a6e5247514670583668644b5533367a426c4339312f4e4a494c7a334d3376623871357a503248534c5a76636c724242714e43687237586a757a6b4739627052715a326e4e71593175744c41454c2f414e776b7166346f3366494878746b4c6f38616256484e534c4741395472324e2b4b6d474b6179557049306f632b6a56464e37493948616171634956797a4e4a49735735784d6f2b784f52475144774f7553744166477630772b757948524c2b506f57354e357231613765746255786575684d7570504b2f6c6c4857335666414a453335557a43337675506a456f42545741497648624b44493764555330314f6c5a7042494c6451465a5a374572503433666153616a6e687359777a4e76526e782f6d5331706d3636796139592b59555a516c7155585748534c61506b563049434b665a737a75317a32577a636969716d70787957356e7434336c4851454568777a7037577168554442315530435235456d74367962705361744b653646464349355a374b4d5641545a6c35752b692b57694e764a614f395437584e50393941785959526668366c436169644847476c57534a654e2f694a7764446458456e4c784141757769644446714833394236775544715a6950696b6d6b624c636e6e39676e5046666c504657564f64436f725a3238354b75674d7a744b576645706165386d57514f4d6732696366656e3141754551623978526e5248667a5a42476e7052366a73716d6756742b793139433665433672724c786c7a667135617a494761517163537a6d72516b4539704269515538564d5479414a5455756462692b5764733832316f54495644705471734f6357352b44327673632b70386365734136447672645478767441776b62774f4c73642f514f61644c69616231393262657a37384e4b325236564d6e4539513145754f4952325a554d785170396b74305a4545684e642f38592b4b6c6d6d5a654563325075377452516c55703765565a2f49665a396b684837444b6e304653596144573646556773797957506538495065446d2b39764341394b7a5776666d514c5a646c35396a636c73576645327561614378326c784f6c2f4c4f5079536348354e59596a76672b51544679335479636e6b6d564e306d304b39704d2f714d57747a51416d7a3550484f6874394c6c35692f354c2b4d356a36657242506e3642594e4f707a6d666c3662466e525a704373714764466c4858495034707862504b4a312f31657464767a6b515a626e2b512b58547a5961426b7761703772493639466465487161585a577562524175614335444534664a787a596d4e49456c2b7a4553595971726c6450534f4d394249636a7739486b452f48307234632f45314f53646b7975533051517861796c5a6956386c6d344e6e4c69317543756a726d463933374170625051636f7861323348444f524c4966424e444b35544e4531465347616d334c536b633948376c6d664e4f7655704f354943706b76773061484f643679583633334675765566512b454b2b3838684c54794d6e6e6366693370546f4770673665684855792b6658373156576272433351737a6a56644f2b584c6f64384648516e6d366b2b697735756c3874643976455a4b30347353653778397a374e4a6b794e6a75584b757a37394c4f3535304f315a5035436c503172387449727339693656722f41462b70674d5532544b667949724d39416e4d46317552506e574f6c307478596933696f79474f7070716b636c507a734851563978615572754669786e6d63356b797563593949746d4b4238556364497054733073436f4a5a4b4c30624a3870304a55304d6851326d62556957664b717231357458522f5a734b7359466344363761552b36652f6c79467a6930646257366c484a395a4d6e79785a6678665837796f353663336d62336c7271586d3549793653317255376a6b3843726f31394c327641702b44362f6f4962355648577565566b61433138335155722b543147314f6753657a5432624a7662652f532b5357724e375062634b68576d78527670616d6c54556c51583957302b38636a667a4f7a7239377a377839423556476a6b38794f53325a757838386b73705a4338756b4b6e365a66584e6d57337949754e6563315853702f3071503545586878335270544d526a7667564e2b4e6f627065724f6e526336684b35636d2f57766f572b716e4c356f5a5531454862657858787a644f7a673646544775596b356d415a445161644732394954664730644e6f4c466137345a6b4a714876386c4943487a366a4e474c4b6347624354783867655654716c2f4a4f35684243664f5765795273594e5935496676494d7644447a6453574232796a576c706a304d563156726f704738526f4e2b536a2b494b2f437935666d7a776a3170576d4c7042574d615844536b316e4f75774a2f7744783544537658776333527469616d5569316f67304e4e6d6c4c6d397377797370546c547575754a54705a614b6b4c614f514d626f484e3939496e326748365a63744561764d664969646e424b375574663163764b502b64423338446e6f7453724e557953646d4775636b66567351642f62354148726c676b7a6a4d5a78344437326a797571684d6c4555695a746e53343350632f5673466933352f452f782f5858332f4e78496a73564d6e6e736d4468636a5339734b62355a6c4e6b6b44346333507731374561644e38723537635a41635251516a79465766632f5468626b497a57754b587336644378624434427541414f54336d6b376e7845356a494f39567a516e6d5a444368654a52727736794b3255717a2f41507834525272574b70694c54486f4556634f57534672416c434961534442304b4941502b70413346464d2b64392b4f7453564b565053726e4a59773064656d714e32672b4d6d3047796a577a2b694c6d4f71616135487a4a3662365268476f7a414676756b4c52646d796c484a6e4a42516b704e7a6235357634444b6f5272356d563355314b6f4b474851493064426b2f7a4c7a70715758386438496e2f547141424a6863696954625a6c5a666b61765a6a6f446b3631354c6e2b52686e717468334b66616372744251782f467967652f4d3371655572637269595935414d77353838454a6c4a5a5650677778524874676e4474664c662f477164382f377147643356702b766b312b79643035384a4e6e3170665a424f6161414661336c36734c51686a7a346b4c306378556a73504474644568314d35353151535a55334a73397a4d4f436a555447487561466258544a3474744e6b7841365947766976702b37566f66355076522b51576164667975485771742b6a526c54577a54592f575337646679774f577a4c306c734d2b7a5a6b72577a4f357777636d512f77436f7a335231443354354d452f692b53687356646b444f7a333536436a7a3632647972534b786d327a42577952684d7a3837483673334a36324a414e4d50724734476849416551555778327046443432614f5a7178384f4b7a4e69305a583336476757732f4a76377a526c5a4444514b36766352546b5a706d6d62387774686e34414f61736a7868376168732b43694b4b6543697249317139695076546e56744d76304a477969344636485330467a566f364b55746b70476a76325a2b55665a436739337a5737636a796f42626e5a5447426b33353256617a532b4e58775453356d627a4f313837502f41466452586a33776e7a764a5162784f333735657a4769796b35694a6d63514766696d4e583547687574354c6e543439585678705576483078386b374c79553338324f5372795574346d65657165506b353963507a5667794e49304954416b6b347a4f4f67734c5a432f57523137757279644a714968705661507578305763414a363561423336364f773470566130726a714e6c677054714b6c4d6c4a434f69614f6755646b4c514c4c4c7176344341507079543632426e7032327776616c394a2b4e327a79524a41754f364c644a5478584f7752732b7454797568525563445944647a326f6b686d6a545670306f3232334a5a334e756478656654706a57646674646a734663706145365234756e354a36507074314866714d666c2f6f48324d7a4f6a6b7961387537496f756c5547466f427a6d6671414b52545531316a56364f547a376b715856614243617554657a6d7735375150336a2b67736a4b7353393648317a54615951724e45682b794c4c5a4e786565757673364f7a564c764b586d6f6d6332477a324b6d49423935502b5868704151324a6e5668726e6c5275556d6e536b794d313771376966676468537969684f5a504f4962424c6e546f547463444575346572517635776e6d42726f34646e794471664b33646b4869374d5a513179364d2f4d7a766c4f6d5861696f44502b7857466e584767306e5a4753334b57774f756e78417563315447794d2f714a74577641596c34336a53667947642f46575a664e77633336505434735a7855716f684b695a49522f714e665a6271694a564e6379576f4e71627131744c2f72553357363977567354706645326549356379696a4f69516e4a495970786c2f676b586430704978657a69796a6d2b77356863664d58796734706c4f63414f54322f4a356659664b71754e6a306f6e4d73584437637543724d51513669566f445554707a30357a535939655a59794e4f3551445848476d6b5152304f546d414e4777623633515132484a69706e6a7664424278756e64537a2f636d6a552b4f67645451304344374754565958304b2f61446a614d484b47396e6b2b4c32414272676d692b43546b6d57793356664d6b6f70566248303163747974424c5a2b315038716b61703348664a47392f46476361624a7151556f665a5653417652316c50302f704d756c6830457a6858374b3879546d617a467a32737430382f4c2b3138664853304d6c48376b646a57453044365a2f45507a4a4147755a4d454e3072376d35495a4e746347787254464267357375412b314d4d4f784f612b6148552f54627253352f58555475625437324170774e502f414c41424f39475453526e496a6f6b564e5935796b672f50375a6a774c6a745432377838657a58584c365077726e77776f63633471414e4a714f694b5a7638416257754d637651613438374856354c5448495551314f483753714c6362613857614765394e4c483557626c57526f2b6233615765342b5057584f4363616a636e35794d333242736f6a6c4f4879436376737478364c714c5a41552b73726a63564333346b31454a4b3555492f634c34752f774155484a624b654f50675a3976796d45506b72794e4630444d6e48524a567a6138664f534e724a4d7254346a533049377157577957357637772f713266444f6d6c4a4579333769554c2f4147644274414c61384e376f357079794e30632b67646976764a372f41476c32615358716444517a535531637077542f4142556679483370773555446b337a465778774f47746f476e5a7559762b586868796d612b76476864525339797a4c524b4c36697a516c2f6a7263746e5a4a66634c4a515932747947425333336a37414177445176736b395539566c324a776f2f4949636e4f427251636f5763445254347a534f66715a78444f4d612f774361307059326c7735334239576b45786d30753168686b356548316f3942764b566f6e697a335a52563061504d3650795874796453444b63552f41585056355250506d536d616676526a5a51553031436e2f414f46725733664b41427a4f30307436302f64553736554f4748366b2b5a74614f524d38647a646536586848616c316b497a35616554547158773968396b33776737355a4b6a597a30712f577a6b56366d646a737a6349373331624b554b77563565312b6b4472554649754756513657505a525039516c4b41665a494470654964396938324a6a724577444e4358326a6e624f6b63463076754336524f706844577a754a574f6b3555476b4e486a733944474e3170646a6b72437173424e562f54364656536148724451396e6779383272616c4145714f727948505a6e727a58335a655954754f3073687035756c6f58664e39677347334e48717a705657414145767774496e49547476723469742f4a50484d6e4b437a475a4a626b746f356e68396971516b4b706c33784a7a396169544f316e57636f666e2b52476853314d726367367672385a4d66384130416d4a7a47524b2f53447837663257396e387372793937526a357478422f4e32614451726b303873714a4a737254424c56356b36724a4d3367336a776746392b503841597a4a33663775786132506d4c4e39563850506f716732737172543855656b30615547373466754d7333732f4b335a2f3437443173375a743043466c6b30304e5565754a71634d58306a6342663655756e725765377465764d50504650796e39572f4148452f7a43624939556648715248566e347979674e596957374a44536a7871636e536f62594b4b7171725330454a764d46307070542f756b396a6b366465376c47322f6876356365684871474e6368655664384d386d59443361666932395061682b73375762564e6f50703061474d587162546b72314a3263367348543063494f67706a3163646e616c6f6a733768737469697132486c4768546d755a527962487447515a3947397969532f49716e6f7062642b685931336b48777650356d4a666335514c72414866314864793442586466546669672f566f62567275525846525a62435542624f65687132324c725639437844705539757a524e6661663044672f77424a6774487466574d6270323950314571463276495136464457366d4b7875585633572b7057544b58766e5736656556314d6f4c307664384b42492b557a452b687955394270754832584445704c322f486f32313547356d39557a36786663564c44526d30567a3871356f6a7a517042777a734b42637a526e565730593367505364374f637a2f4a392f75456e6f74706e7443584b6d5379444a5a6d364f625a64784a786f31624e46353139707a53577a345a5846704f4a6648324d446c682f584961547063765147376454363163564d6c644c6b624969313065684c59366f556d39672f576c624c48396a656841585a3756665557366a3367317753306b79776d35785472756b4c383248576336766b6439316532537255524f52534c334d716d6e5876357a4b596453634353483861586572576f714434376a674546476b3256694a2f3042764974454e45635a4d6f5137746d5048336d644c796432725848724f5a6f574e526c537062482b69706f584f6c784b6163326d584864436c667569747876587a674778327377766b62306e516f316175364c4f73556d305861556a696f7a717956636f6666474e6b6f78722b7033394971706d4277423833432f724d595a436c554f6b707a727231396f78442f323254552f5a5661346443436847724254516b62457530376d63617632707345556852387677304453414f65563075623935413654456132624e395949363571714f4266325837716c41704c2b445a3267366b4d39784f2b595065564562584b4a7a417a3744526f5635414f736f564c47566836622f41434854452b4b2b3276446b2b7647536c7638416b6a34366f6b3948396b74727254464e4c666955316a703542466158512f784c736a2f596c52347a794b34653241785530466645315734317772596e35624373576645534d4d576e4f3035766b39337954333832524a472b525963314b36362f69435053634e6c66364b74556450746f6f467246514834335371724c4c592b7773533758385a537057307836444134444535786a69507a314a7a556b61325131555a343964486576324f2b6e4d417968565061576c507852666f484f587859762f7743384f616a324c636c564a6841627530733850712f61667a574c492b4a696e7a484c546d624e7177317667464344326c6a396853394c5334616b69556251634254795454657a72774c4a6c5a70315a6554523978556c4b564d307543427a385649527a2f466e554f6e2b44727544446870426955396a3468736f7264376e39367758514d3966507a644f706c76794a4e656f47624f6c76366d5a516232774f6c5a4c4d48533938736f66546c45316a306c6659766175687a32474c475445346e495a744a33527267304c6c686c3564484a4563367a693431326357354d70366a32754e61306c6376552b62704d65396255735562444e6e7358414c74627a6e6267626b4e574d6f4c475a7330306f7651315170515a4e4a7448444763593073693577666335726e5448337232564142677862306c39754a37442b74624d4f5443555844314b61567a446c7464516e5556756c7a756b32357a7554436250326f344f6474636e34566643426d392b5a3953514c67307059737668316e64777863316174466a4a734f522f5656454e776844744178677a4b2b743745494374704159674152325250552b4a416e7666744e6f71386d6f6e726f79355168674e636f744f2b5867526c567a33757a79657232752b62736c4e4247344f6a3741422b2b71752f7457506459707248787675707a3078576144715148486e375077564b6e657a377a57664e2b326f346b7861356e756c7039375a424237486f31717a394e51744368456c374f39344b6f774b566a6c4671777a6e62444762382f4e62513570644e737747535031796c3575465362412f49306e39706f6e645970756c326c455131315569545555574e314b455478314f57774b6d4d7a72716c4d5553792b6f464e4155475079787155447638415155535435766374435a62577a4f624d76534e453832764c6638616f632b6c3250525251526a6573506d372b766a536b786a756f4a52634d4246423857797567575753374373787364565465534c627a517a506d7a6d64516c63597364714d7630454b3750376a5772336d684b7a634858544269716d63494a714b355778776c7a675a77683065412b3269426b326947646558734a6739756a4546755a49566847357855646438776d77452b307a574c5231574c463970414e4a6a565554726b62705474304955463176384147746f314252777671506c5a2f774259557a64576e6a374249514233434b725a37577a4e3070724d5a415478357a713672412b6f336b744d55656674546a336843554e6e4669744a73594441583970676830672f6f47664d746948446f5a77794a516d616f6d6a614667335a5177544c462f655a69595672475630343244502b337a46787572304f753676676d67435041702b746e4f4358536c5a52793455636e656c5a677053364e6b655136306a4775546c39586f4a58305162317637784a314841745a7353594e315161534773677a2f687266587953716a4e5656376e7336346531745664687671507046796478632b586a59756f4d78543166666c4d7842566c6d6350436a7a6a7a6f47386e2f41473450667063613150425a447057706649384f4c7159794770706b6856676355482f46494c702b52494e6e557a574a6349725a394f66435074465758535576794934624b4e43657a73784f743047485059535137542b6839314e4a316d353078645943304a6f5933506a39682f7579684d764b4d6c597454526c4f524c437965706964516c5758435470336e794e7a65494d304851436c7a6d553441386f626b79615878517355416f724c75706f626a4e6552724a336a412f50613233612b6e715558755a517671775a4e33393039374f4534645038415145346e33546658767a6f4c5639665171335248737136766d7a55395372547965306851777358502b3434526f5538654b3443536331764863456a4169357a5a46304f314d2f4b37792f38416b58534a426662684d677258306574567379396e2f6b4757444b58574c4931714f4d68346d676b386d34417243376255366838373962736d733979716f496745474a74624774476d366d785551524d657171694f68552f4852554746684f2b5530752b4d51636e7173717a4f6155566c6a5a637751484d686b6c4c3364612f464d5a352b46437a6851314d792f71396e716b7355436a533552676746306b3448433074704a5857316732636e3547694a3533546f446b672f4e776d707344334e496b616758635972712b4d72642f794e68664a4e436b4564364b7577716f6d4f6f4753654f4b7077364e7035616c7a53563053634439364974524749734c4c66316651375153715570616f55704a6a5161766b396e32653859583161365a316f2b667138534a33627142626b5232534e6c3672536c70644c5558412b4d66663335655042617a535167795a32576b34383557705558426f564e4f4336566a31334e724e4b3132697a7837526a613348585379647865366955572f442f414e6866746957522f774241376a305379454a626e736f325744394248574c69616352766178314e74674d626f434a752b6e71564d6e3578426a2b6a706143505a46375142673261566e3875577a3939384261584a6b5a6b37314e7a3741306d36465339687242543155384d36586158364e456c44655270665453346c664d41672f6e476a556f427439597936383736394b5a67703054437436344631612f5155776d766c6454676c3966334e497955514744562f4d6d4e4a4f6e6b425773745a76526e4e76566c3744476c72304e59724c677a6f36644a475851795744725072634b726b4f637a3636486f3673773075454a39556b58474253794664455a302f596247635a76693039453739464d796a397736516c5656645554584a6f5a38667a53506e647a674a4d4246616b675039416b36705174492b7871647631795375527a54756f79564c476e6e6a2b68574833637a593539617756354930436f4f4a5173493070507067726e414436354c63724b3967784b4c39352f38697570617669724a5362724e4851304b64436c78385a4839576956526362796c616d4f392f7741645a7966364a34326e7a6b4b79746e6f74716f6a69367936552b5558587775433279545871733050744b5666382f4a324d6e773077382b764b414d61635947307150594946412b68566e7a746b4d454731364b636d4f6446356373586e755a42596557466c656b786278464e48534c5046704534774a5241446146673841454432766c4b7a65476772597079717731374d39503232317435543837614744653152306644376d4b6f454f70594c5467636646706f6a44674c4d3256617753664c6f4d4f6161516d495855684b766e36717648754575636c734c69306848636c6e325839474f51792f785456374255783038674f6646702f6f5a4270504f2b4f2b683131735134716d4b584e386d65796855776c515631777a686d7a316e502f38416259444a7a6d6355344641344164534a34755a6e776436573354644e7531756e6f6e6d6b305a49646252304e503272494d504c4f4f6555576b61676451446c6f6345682f2f54594e4b54537678376346627032773871696b3233746b6a313978724b2f74616659703874726152573276572b727876796d58574d4e69666161514179743866312f555a3936665a4b71576e5762432b78743572673679716b5a6c757a382b796c3756356c43592f6c68745738657a72306851566c4c534633516f4e7451536d4b4b6668726172556e7a364f7062397963415a63576658423373425531532b346d4c466b432b7144766247664e4d365945476d6347704448534f3543695a4572726f4b71517559565232554d594642555742484735666a3733592f6a367634665548334348734276736f353866506530412b304d6b6d47684b47796a3056787943717557796e4e53362b504e6731776e435a7a46574f50335553505253537558554f344a4c2b53547658417350594731383261565755416b497262714f592f487a6e69336d7a562b5a424f7a532f6b4d6c4b537a3043796e76616241536676627a32496f65445451375137574e584664556d55695a4a6c6663483667486d555a75425a485245634d3446506f44514d362f3841486e2b324d4568374843557a7754584c496467557a4d71715175766a47654d5953484a6663556d575379304a5639536b425837556b494576767975474f574e7a50314f766b67547278547a31575452626c362f456c6861544e422b424346614e64544a31677459484b6843342f75664a6c6b76687953554f2f7741492b2b77505a5173446e4848456352663659632b6e7378514d357053365334627075324a3658336d6b74672f426670775468397068456b695954442f3936564e36447a48333867454a612b2b4d322f6379497766586f3179486e4c7166327143696165593164366c54574b49682f7743395a7a35544c3965794d5065644d367a58504578457878675830767a3777316b35564d796b6d2b30564b716b474e74485656314e4c35352f657062682b3137522b58714245694951367a2f6230523664593457746d7354312f46792f6d6a6d2b483832377a455a3276553730356c6571656e41704e2f474e5764664d35676b6d655630664b6e39354b6b2f646e744a69656b5375392b6358642f516e316441636d4b78737447336d38632f3841312f6e2f414c6362647335475774357834437a6b71572b4e3230793636516c41686e2f5636756d6337543474524c343561327a3145503177454f70435a767642494b2b526149694a6e4872782f442f753363732f46626d46596150717a365841537247654a62744c6765467345392b59665847634d624e4a5438367a71322f484b3736755770684230322f4a3858763933362b5531613238632f63515057395a7653564b4d716e5339507433494b6d71705556446365446c4533492b4c6b6f564c7870664e504b61334c416c6577766b51353373452b716437574c66692b77684633716e365638547938665466522b6b4648632f39553472303153736b436a35716c305637682f5659446a5770424e66387953704d77424a4c496a303933623858722b51682f6b58712f36664378554f7636616558433559794c5332374e6b544d4f50633875585273717a2f414c43744c353073464e6f704e796538702f375164583757317a4662593457477233714250346c356a552b334b38413873324f7469414f38386d7a6b614c3444685a393448783239336d7658735565326468534a6370482f414b61357342704f6b4b7a7445544861734e663165452b6e794c6a7a37664258484e6a646a464f6876773632646f424c6966527661456259612f624374734f656c795a37435854502f75452f30514761744d7a34794e5a76497655333030385343334e7950444e6e7971334155785373366e46566d42695a31576b6d4b397a2b335564526c2b4f3958504951304b34553950772f477069574a397172784670784f3768506d4b78327658663036386c2b444c305054546433625a6f34614163664a474f305976723745326b743268417965314c443070636876554438704a576632584d4e73682f4e4f796678435062483544656e3776356c654a3446356548303970427a364746545055555649735472554f71545669764b484a563934614e4c693577512b6259554f6f4d41526948394e732f6a6e31395133752f49583035787a31343750536a7a502b536a6c2f553878794a37714f4a4d4d65316f61525633706d6b59564c734a7a6271323934662f4148424d2f77445451706e573266787a362b6f68645035442b423755796e4c39492f5549464d4b6153545278697730356c477a5a385a342f61385733536f6f30756e6e32783836614739574255697034794f574466367637767a714565666c4836632f7871497366306838766b3230747735737a3759773436334c752b78652b71656d69716f2f2b4c6f5334796d6159324a64424d6c333035684b6f5939316676766a3138774d2f2b755a38466e2b675a2b4236726576304a70503443357557493037655a75516d356b666a32556c66794f46634d394832614566442f77437139556d53475a724666316233552f696e2b663841774854665672777257786d376c487044355050465048763575784254324b726178364e41466c382b335a4e6c7537354556576c6c733637366946756a753067434d34366530575431327a58684e754d42664f396450466278354c543648373971363753677a315a57356e315a2b796a527764527a454d7444794b567952376e304d4e61335547776b332b2b457673685a31305453315a376551436f395750484a344f65514236623651616b476239336c566533477864503768466d707967364e6a71484c58705273354950787942795266506a70627150364132327a6e47372b6e39674554367a654774787358636d394a375430554d54484f326d76425931457a3835636554475733786c582f70372f414c6d6238793031633538336c536a39306f53676b473264324e3339503742632f563777562b616c4770364a73554b49495751624f6c705a6c4e4458503861314935476551424c43543464446e756e51385548704f6d6e796b6a593569457661364d54347a39763741567a3161385752454d622f4145655634316a365746682f785a36756c6875796d4b2f6a646a653138366678784d4d664c62423867574b774f2b68707a445a7a5266796e324a414c625a7875336350586b4a4c33312b3859707556797a3066664c43524b61545665525a2b4c46513747774c6c357562566d564d36422b4d6a71464f4b656b72674b524d315649506171756974736e386366622b7772703372396d614e4f4a6d4636613670776138737931446e2b555a69777a386567324f30446c7a3849565335385065533753696d6253715645396a48483879556b63445a5034342b33396763785079537751316441705052447a534f527566525770386d305754446c795a644447366638392f436a2b724c6a66506a3959584b4a524e32346c7a506c2b515242616b784861444e2f726c687a356d464e543659364c6649493672384939463073716e397763316b4e33386c35426a7a616a614c4c42376d694831326c5731464d42574c4836356b31732b37742b4c312f49456276574f4472366c7139436236744935354a77656a4c53334c6b574e56796f724b6145516f5a5568654c6a367a4a7a487177536a4e556b4b70774b537174742f4e4838774f762f4934595755546836456559744353376d545970466d4b72794479484e6a7a536e79613439794c516c624f35447376556f596771436a5937534d524e735a51632f716473666a6a3139512b782f5633497a3661452b4f2b6d6e6b324e7a7568443250453531554e72436e66507155553675666f53382b6a5650715130424f64336243685638494d43527830745a57315a6d755a74776e7a413759396466474d3757374c692b6a642b576676312f4b453938717668366b3032623872422b626c384c32564a4e32622f414e5252712b797a67445964744c62484b5132546a7452382f554439354236395a4558326f386e3038707974393236782b332f442b564732463275556b2b54744e797538755757624772507a6639617863665936747558394e35396949436d4b542b4b4a396649497339664d4e30586a582f356c7649386d786a66473553706a65724d54705a73666c47614c394b655553374e514f61544930522f5a585a3744674366564f70746e797776647a6e7441384872313479674d3735665349675a7034715a5a462f79454f67733456707931357550354c4c70354e362b78494b57796f564b3461617535723268374b5930712f703775333476583868445765756e6a7830506f6d394d4f78773645476d3358666c2b5931665833356f74695768476f757433376f79334a307449753941593567533133797941615567483954736e786745636a3177774e484635652f77424566354a64446e366d6a7030747a38756d52326d7966693873744155766c5877446f4a7238783868674277416b35682b586f484875357a3268444d72386c344d5a525365512b67666b55756f4665506e354e6a644c4466706d7a37576f63556a416532616a4f79557870577170494c3067447342677754724374444c65373877416d39655047666b356d2f38417a4b366b62486735644439707136452b51356545784d563039645639436e5554397a353433745355767562506d6e4350564238515376642b594835503542343635636b652b69336a59366a6e36305a7675315956765071316173736472716e5743756955426b7978346d4c37537031754f624e724156684e4d6d6b7a38575a447033354a3444347859583435367a6e465a504d2b7649386b58446b35764355363577413246644d5358495a5a67712f51527276466d776d564a32576f426f523775632f356b35444e2f77435557657a4c6f7a7372306169386d772b6d45574c58335431656479313061544d6b4a626261627a596b553654386e6930524d51787a5461356270694d6e386e33666d477433355a505a726d39766f787278564a6f385378334935724a3065682f4f4e4a39522f7741706f5373743076734b6f716c5934774161307748324e59754d477776642b596834666c56374f526550792b6a336b373551766d30477732575a75696c4463774c4d6153624f756748764c7055335a75683369424b614e794a69734a52704836376e752f4d5742562b54462b666c34557a5053576d484f324f795a2f6530373369756b4f5a6f6131724b7263724f427769397a4f783537686e4e59554f7070732b624f7246326c54556c37767a424b583871764935492b61445053765a7279615645706561506c4b4e515430744c6938724f6c4a436c386267304e6c716348513753556c4b30326e47304573374d5562497a6a647848326638414b7a5558642f354333305373386f304d2b696647324554627a4d47446d374b31696133577037443746706f47504c5549386c6f7166374f544a704e6f66572f7037754f6d37312f4d5a5a6e35652b533074316430505254486453395930362f386a354666624f715a30736257426e4c63727349782f77416830666a30615948664433456f705336796849724e4f6c45384e774477666c5862766d4f704c3657374d36415059456e5365513279743754623958546f6762453949384a7a32667a3361525175686345457a756e58384a64736450752f4d5742522b534f672b5a4344394d34714f61305832614d7a483867644b4d43787866344655754c547054755979704334736436316436716b58413577394e512f434562592f48487236694c7a666b4a645253334f7750514b4843547479393043723064655854554464544a7a5a3539544d706c7a7a50516377696a485463726c41684270453178334c625146445a6a726241495a333549376a4c4b664871505269374c71696b3558304d72537a72356469714c794c6130587878767a503439474e562f49584c7a5a774a6e2f4146656e424f6b4664374a474c5a474d3775416d6d4e2b53455854555764364f7a3975754855307a30594e42445a3776452f75433435744b4d4b492b36693464444c4a4d716d4936744d795932744c6b79327a46585a5034342b333968445a507955797931434c5339482f49376450657a4e6a482b375456676b535973346866527048715161446f2f6b6b68716c2b7943523477626e4f6346626761483674377563646550723130457638414a767977556e56572b33306c75766f32306d4d30396d3739305635472f7069374a7a4f48666d79304a306f317073486a707447396b6e4a6c644253786f704356476e694f316e376947312f6c6e48645034784b486f427150755a4e52485a4667655251396b586d777a445642555575625a5843796376354c51585238764b357a6d2b4e4e4141444268463776727a412f662b576e6a45476b49582b6a657a6b5957596c477050514e38534a64506c47457958566a7a57325a356c526c2f4837576c53362f3546795a35783843426a49444b49303578777349616635565773317333715052573965687a5a2b61544b47334e656f4a742b392b69716679473771545648374b4d6e5170536c59466f30687066416c546946772f3162336635675a762f4b6e37726d42356636476c764774626c4d6d717338593649467175385a52714953313656314c6e5839794769644b363561464f5135644b61716247633639333568376e2f6c4a5a6669595a37336f37766c34377352466c646e2f6d634851734e73696635574e6c543959564a306f2b70753867714c35656e4e4757775075636674503662336635686d2f386c5a756579796e30447630527254706155596e6f534e386b446e646963766b6651636b69667666486e796a5530657a766b5a704a506a6e4a4e5353653738774b752f4a576a783671526d5a364a6136706f6e33787a354a6132322f54786266494a4b4e66666336375247622b4c7a7a2b7659345362536274466d55344f303139555a54746b7a316e69483966354a354f37327966662f4861365a636f3266547a324f38644a3276586f7977305347575a75464d576c4c4370566a4a5668534c412b34393530722b324d6878464a37745366734432422b554d622f714d7039472f4964474a503256343044746c656c52616f612f644f356d6a706c6479724f62526d78794d584f704d7951736d544f453772473255784f6e503473514d652f6b5974732f4e562f6f6e35664d45484d4d63584b466561753938796249394c54735674775a5930305a7441337a39736d6d6479654632326f4b615358536a3354746a3863657671507476355278325a646b6d4a36472b6433466363394831702f494536786b736343674d2b38577130672f6a2f754c57504956383654306f6d5637366230704473646664542b4b66352f3841414e5a333550784d62584f3730553276357a48636d6d72726662656953774f593775616e4e38386d4e5731516e4e793875756c622b7a507154716e7a6c59304e6d704237716678542f50384134434d76355a654f414646634870447530464e52706a526e332b51466f5a4770557556693135384f74534d784d5a4575724e4249544b712b6a2f4b673164476b355376747a37753334765838674b732f4c44772f5072757a362f5354553239625764444572526b6f7470324d545357366a75716f305a535a4f726e616e516f736d2b5658512b745458584d50617a4357394f6e61652f48723542686a2f6c3736617735714b4b2f51507a5050317063394253513032554a4364374a336678746e5a726630553862416c6e724f34706770634b57556d387a436534487572543858722b5161462b552f7071504a6b34336f6c72376d354e7770504b664938652b4f664c584e4f7a7942413658634231584a506836377942374f45613578552b6b786f71633179542f7159303537375a424b72312b7959447839732f537a794846596c3671527a6b327556396648326235357050355850437074734e6939436f6c664e5170467a45704f586e3135474d4630624a6e4d5a6a495144386b66444e506b6e4c50527a794453706f5a55666a314656766a556444394479504d6f6b6e5a646d756f5543396972595a377a4e4c4f6a514559664a7963314a4353646b2b4d43784d33316e67374e4a6f7439432f4d3739436a79437679567a417a637936683874646d6b6b7376616869536e6e386b36504c4c33545453583837534370362f637068474e646b2f6a6a3766324375522b5373384d715835666f78755a574634396f3532684835495532656a5475584770697635715230452f6164455535384e5853564a594d38773435536d33374c757542736e386366622b7775614c38787536326a6c647a2f5336704858634755776a6b7737486f50525176496c575531374a5230496b5a744677472b64644f68374b56674a7269637033616536783176417a4438776674654d57416e777279433153374c325a6e6b4165515a6f506a436838747a74426c4b6b6e56734d504a584c38304947304f2f36514b7a324d6b556365366a4f4e3042356d2f6d484132644555487037764a6257337649387446386a66347774494a657835485468645a777330637638416b4f713450374e72737076736e544a62373354376e383841704c2b536e6a4c6f36724f2b4565585a483138796a5067782f4939536a51587873312b53616465635a6b71654e795753705a4770716546545a6e70496b6a6e324a70565833666d507a507978586178424f394f74355539347973724c613648485037545a64434b66725a476f7865706839784a56637357796838527353443641754b6a4f37533933356951742f4c4c783132306a4e6c384a387a534d57726c714c55305a51772b4f79587347335067796379464d6c705476574e4e6f31437a2f414c4c71617a59326650746d704e37767a4450786a3873634773366169394d2f554c786946713264763134676f36483874776c3030324f646c435435632f6d54384d2f7952394e704f7053636f45746c504670703432446750797a3855644a694358703535787043726d43374f356d5a4f64692b3679364b696f307963644b7472492b6c2f6877715a6f31534e5158754b3467366733752f4d4a51666d62347061642b5a746541655150324f6e34766f4d374e324c37314c457a36434f432f364e42706e53697178622b696c77453638367a46386158592f3954377163626f73506c2f356852397971644b6a77446631364130712f6f5a757a72443344307364317473566a433244732b4336722f4a334f74492b4d4359452f73726d2f726f52377638414d476c76356a5968676a72735865666d4473615a5a735033704e504363553139464c4b4e544d6e2b484f7446726c75434f6e6e5a7548544135504b5a6b556b435a3931506e2f4948422f4c2f414d5a7a6f70396651395064474852766d673266484e614f4850704776457a784a6a74493535727167716e6644526c6b564273452b72674d31663841754e5537335535787534683568666c48346e6d574a30702f414e664c35524779757a5072706e5a347277395748536b707364646b37566b6138686856536767524b656f48494937772b4f33334f69644f6645443972387273536e78396b4e2f68486c6542304e4b357938744e4d315763584f4e68586e5a6a4b302f7562796a51687a53464b2b67686a30736d6f6366454a56543730616335375741704a2b556b41444f6b7648392b422b6c3475334a516231397579316479496c333538717461314c4579705864346d7444363147455a74796e2f4145506654577073733749385a4276612f4c50785866624d376e696e6c6e736632317932354b4d38466d6d614b77596c61534578316e74546f6c316f524177357777444e6237516252535355316e546d4a436b483552344a51527a2b592b4c2b5679703264764a72304e47517362582f4149786d374c6c352b644e3172554b47697a506e4832473258713659356f44664b44703274756d65376e756b464b76794d38536d34634d73506d6f617163374d56537673394b594d544d62797a4a6338615a2f6a34794d4379302f5a715367464b643438427a4d3548376c63624a38594376384139646234585a645a556e49382b5536686a5945306d68746942547058756163374441554a6e61464744394a7a564a7556543939455a6674616d4d7a6d796645542b7a386e2f47595a733355787350795354327a7a3753386f55775a3850547a7448504f35656f634e4350356d37345a614f4679524d6f3053504b2b78615071693145624c5a4668356635474b386c70504b3548624f5767712f77446965637a6b32364b6f2f7258467971464646674f545a79364b4771586e667375443769576d625a6e392b6e585a743434786b574e6e2b7666696d6a30666f65473732707155393742532b7a36376a4936497667472b334771755932464d39306566376b746171774f4a416f7762485a772b3178623858324571385a3955384339703762636e5a644278546f752f5478494a78476830316e3877464c497335596677595a4c426c6d585748434f5a504f694b57545464686d3163786a6f4a52672b756e706858737a5a7659392f576a5a5175444b3239464f7233354230366141304230382f35476a517675306e504a7a752f433337426f3451414930744f6b317450666d42616d5a366f656e72723941517a2f4b72344e47664a6b4775692b3651757674702b4347624542346a4871546f6a736352734e51442f414e4e67664d453758394f4e6b3438784b4d7a314c394e4a5a334c6b79363433746a5568447a796c386a316b305a54764a4a64435450796c752b7839584a466e587245544c343742366f7a4b6c52756961572b596e3264366d656e336250343369664a686d697437534758636b4f495479562b66515577636b57356a416c6e646d73616c505355426d4c72543577507245325738424d4d7a7a2f306d7a484e4e4757384b356f7843726c4f4e70534b6d354e4d755a564256637a656d746656334d69366a7156475a332f5950686538443757596d5049546d447937307031304464634f73634256537979334c795458374732782f4f5164446e3257547a386c39766150313334307553344b304254375036436477622f7079317450614d35793354315548337051554f56597864307571594961756747304372354631437634514c337a463775664d5247644d583859396651542f414345656e7431546f6f3045756f61757975664c4f366346494f386141524f78513834535661784f587a6f6e384b544e7153616f684a51782b30395946786f79737a44413154357949357a347235574d45702f654b572f5078357035502b2f614973667a3963496666307a4968365837486b3270656e445572617473634d38762f6c586d2b4c2f394156703338795a474d436c5031494957614c476d304931636b6e6d5a77676e365a454d7a68634a644d2b64396f6e2f376e415a72506c5a69496e4557336576582f77426431526f42352f357466357435504e6169692b50486b6f444e796c4b5745765571705974577030584a5951727165516f5650555366662f366134462f37676451476b52694d523343713064524c567933756b3434314b7a364f7878733437736b75646f5467715164724e7146552f77414b56324c34616842507730716d48334f59774579507a545537723949744852526f6158426b79577556434d2f52676d686a6657396a3652566334467a706331524d53507553365941497a6c534145367769734762734f6f5956366245364f512f3675687a706a59677471484c6454454c4f366c446378784d347a76653961526b387a53344f646f4157423053535730466d5670762b30585166625578722b444e63755948774b6448495a4d7479562f744d347446742f73556c6b373166736a423165642b7a586c39374479746632782b786573665a584346756562616d7130706630314b66342f5565785a63414a45307a54477454544a684b4156765a767671766456494d394e444934346c6b6d5174793545702f66737561377836706f6b785075574e41706e39386e374576667a3455414d784d784f59476372323970462f7a466c4235466f4c2b48523162314a717a35484f7a325532644456412f764a6e6e75343169324f3533724c454a50356944366e395150756d722b4f6779347a6a597a76552f7931325a4f645858346a616c53716a346c7a744264473051454c437142376e514733535630753961507638413641706a55374b33383757714230494f3458796c70634e584c2f737830395a6376546e65634f617a334562766a65366b364c7a4b58323861616c544f4f34447635425044793555645a6f583344384f6a5a5250532b366f65694c3444424772354175687a6a49766e347843314b617079584d42337839436d413745704a2b72716d6f7272644f53592b555334326c566f56632b705a417a372b6b47654a4a5346554a46517341657672514e687156796c77434451645162754d63594f66785447466f737174386975314830533252745776536b304d6e32354b32364765533569364e43544d4752722f6331486665432f4c75386f5468652b356b6330326e6e3639664e4a69644b6535794d6552394f772f71515659736c726e6133726570397459554e397265385563774d6153374f2f344a353436377a56585243504a725038594f5a724d657a52584e6a6a31566a43465171594348486f5553782f4e396454464a42594752613873726c637258576a5158436c783547356469467a36795934614f432b5772363638366839545a67443670416b65704a53513658776b4465576353444f6d594338352b6a6e70702f697553356a766d58524d734f326f7a56514a484e635266796871744369674a707a424e524e427955704251636f59383048645139734d5664436e4e644d58766570736645724e6a4d37352b364475614266583468383472577961716c4c666a623767417842434d316359614763306136554a70466e5a564c613837547a35585a50475652725454692f587575342f6e7a30487a37494e416a73564e5330497a4a526e506e6d714f555935433562716d6737436e375775786443382f7246736c357a4c466a4c714f4c644f58794f6d36754942416663426738782f774257617139754374696956772b566d696a2b4c3779336e4933446d444a4e39684f663068306e54696b2b68584f35385972434f5166726e4f5a787438413435554d394a346c33596e5273304f5852354c49706b446d4a345656544b6f39554c46674c474a6e756e2b59714b53443662522b59434d544742674c4e4454376c4670304642796545363944506a6d66485a385a714743457245787867457353336658654d395a6b316b337a69452f4365615144466931326d5846327254335264786a53377035546c64557a506c372f4b5555736f7335486d384b705a482f723466317755344f6f6f36636a41637330427063615241383658503142474f7052702b2b454f6b34624b356c55575541546f2b78734c7259356b75393349356a53434755756173456b54727970374f3935703835473075437a566f584d6b706f394e2b647a6c4f68556d6c334b4f5a7663756a3568412f705577475850647a375141362b594f364554756b75476d646e54373759744658457331654f7a6d7a4f51356b2b663771547a586648524f66796463715133544748497950324351446b546c62485a4d7870364a4f6c6a6b6761396450574c454a632b696c6e7a54776d6d555364396768732f52676c396833485a30334150414f6a513071437270455a6c7a7554465251392f7730704c4a6f6c6378784e697265695662436f6f634c754f585849456176724138786342414136564f715753312f4578395657646357684a494d533834565a6e31593553716b463466613634524b645448715851546b7775396b68664430434639513061382b5454586f7a324b656b37575a4c58723577566c6e6730746d622b515375644b4578723667324731303032716e6f6c516444666944394c317a717379744273306339746a6b3674666a716d55705a64536f6f31522b36566e482f5a4a4e5648666b536c33735059543766716944683443644c31614530364267646d746e6d774c7a716658564a5245417a33504b4d6858522f6c51553661686e43684c6a61466b782f76332b366a674c7976354b75636134576e614b576554543233647a5457796a36547157665759706a4f783072714d544e624463365a682b2b74564b7755706f434c6134754e51532f38416d612b696a466f30637a37303761745276326e6b587a4c6f712b4e61317a4f65366e6e506c4d4b562b78626c683149675a6e732f6a6f335a3147756b6d77506b584c4d677544524f56476d546d5153465847503061456b544f682b7a6f57556d715430754436314e68417a2b4e6c61383543416a6675365057575879494b33515153394c50646f5456462f4c4c464776642f36626d714961524a4c706a555a6e4d5846476f48397936716a6233595442456974306f736c71756c7372726c36583133686175756f447563392f77386e614b715a2b4c784161783944774a51414f6b42326d6864713479514d384b702b4e517079554d694b435855316d58534e6e552b64334a33556b44654a397267706d494353632f77426a67496746415a756a6e53787835733772542f6b616e3675585778694e574855366856725a714b57797a6d63376c644271702b4e542f6f6f4d506479622b67617a55706f75747157736f6c39307157617135456532674d754c51686f374c5858556c614a5449396259596767436476752b565a7968594c7067423431384c704d73472f784f344c44376b716f767362586e524c5a5674506e6259767049547061413054356f567035304b3142374b4863613770496d42624f574a74706e677673443745306c7a516d52526d386c304e51624e5058536737614b46556152537551532b467a2f41464f31534c3456574a4649673966415664566a6454614b684e5a31614f6c4871732f6a6f4a30497531705a74476170507838756a64515536466659363569675367443451706a4467446d554c44545331426367385a7266565a6e71546d2f765059696e6d6c30364b5a7068582f4879387339702b3075653479736146453073386a7636422b795a493051414873306770586f6c4679436b31686e35346e63454448464977653679365979466e524c6f41757a6a48414874496761434a4c7072352f4253495833486d6b73334e4d6a304757727037456c31756a6e497037704a2b5976354b6564697a41754b5747723878645377416b49486c76336c61577574613550746e576b355a446d51326252377961587231703643554f304b6b5257457a35526141734f57784c314f39302f44427369326d36544e6d57514b63664f7778756d6a3478644d724b5a564c4336613471584c78336a6d2f4e7965502f36414f556c7874452b6b595033314a3544327363325775792f736c6a766a537154446c644a4f797274576368667462637867697347744d4747306a624d4a6b49476b6747665031485a38325a55416e794e42755a47644f6352635a552b7a6b314f6e79796b314238645471313864504f794d32545541667767612f774367454a2b6f32784e4c3756314665754970365a47735a64394235772f416b394679584d687830324f2f7a5069766d347939587a75724d327261474765322b79643347714c3357464b4e6661387536764f344e3643535662437a434b5a354d58556b36683537522f655678497563523842547035416e696a512b45396a55576947735867776754556d62677869746d617548724b34575555546c52476c78524d374b426c65484456307a2b587159784d7834414878537443472f50435745724e4750726a657a6a3757646365613436517069637868536964547147742b623454705a54447a74677a6f2b4d414b4c6e7530475274314d3566586d4e5a774c327276703230366835476b7a4e77396a74636f73546c736a3772715756507a6c386d6b4a413836752b2b63464c4b496378704c6c76717265734c71574a515375386e726d6c71696e5477584339624a51577574684b555649725035653042375a76643047545a6f564f3635335855485a44586644704f4a515441587745726e43626f75644a4f356f36464168504f49526d65693553436a353877394158497853756a5055796733565a632f324769786b6e37795a46444c694e7a59382f50706b757a6c6c4f735558477458736f5352704c745073537343616e7a4d72794e704f58564a6e4832697861673076342b316964647854634545544f426a614c6250672f6674723673472f544a736a514f4f6e674e346b537a53787a525a427544516d526e7670475852304630615278357564646c4d534c48475443712b7539516b30433443666e4367682f587a423975304c47364844364766524f5757656b76506f6267366447646b3666536d585948453363355a7147744e414d357864637a794f59754b63305038414d496e723077506450642b30564c47484e31744b62567a754b6f30375242454a366468525a3751634b62745368584f3855637a2f414c6e4f54544f42724376745474514a50524a467a46705452565454636e5139366f6666416e703664784c71615244624d6264427a474f6371646c414d44343030522f74697a6f45716847796d6d54522f7743724c6c544a516c4d6d70514a364764475449726c357a62464d5a5251783036572f4d6e696547344a6d2b7a355170554d6c4451597968545139494c7a675062686c707230566f50536b30314d716554637567754e6376355a3236424f36326d67694e795531734d796e4637463235505037426b4156746c5a6f3466334a75357272557051326349675674514c32696444456d695166646e2f6148556e392f44346154316567414a41542b5238584e362f6b474751376168766e32707668747332365a30426b51364764634950596562436e567172376d30426c7664485a6f4d635a64396a713755693077414456544e7354776a3451507362754c3172675255794c4f543846456a6b4b304e5557593766647a4f524f646b49697a3435732b5531574c6562546544334d2b56587a465271496e712b616a6e54332f64716b7937754c72766e314568773635374d326d46656d624a447a7a65795675666b7968545439636979794d62434a6335396f6a7a393335694c6331746e58506735335a52784242656f6e513044664d2b4339564471352b496930796c354b5850687937477a6758793562506a2f78574358426662685750495352666848565631477669714e4f31766b72714b64467a70653230756f314b45734e4e634c6b3777395a74526c785968536a6964765245715179307a736333313851596c786955703831704f35587975414a35624454645168582f6a615a5956716a4a4b6e54696d706a4673586455507a6450344a6e436c70664c5947455a45796b41485479395673693832754e3942787a54466d6a4863324c54696c416d634b4a756c5055336e36496e544343416d6366734e3149537551555a4d745633477835692b684b2b6237756c636363732b6654507074736b7637744a4f724e557a515a7765634471777442674438744444375a687874506d423645325462615a415a547971527353717263325361714f4f42395255334a587a6d737059354b46734a6e442b4e727a4f784e7a44413661436f6e3450722b674964695531393775386e324555314f566b466237644f656d54512b3179466a6735556257614461484d4d6147454466636e6e2b3736344f4264514b584a396f4f39546e362f4d3257374b74504730374d655754536e727a506d51416c4c5577382f594b64316e66387575452b522f34756453744b6c677578434d3674546c70592b6464773654756156496175647a7648316c6f31646b6b6370303153387651736577543443343558544e4d42736a39316b3862543568505164496a714639544f7937566b6e546c68512f475470616a6b74596f4231414471545a4b4a4e53524d59544b575541734970364a6839726f455031323547726c4954386234624a496b7147353032714b59382b724e6c796442724f2f4432696a355a36704f494c7261326d6d6b6c4d47694252495053753736446b352b624764567a7a624d6a524a6b307935666a3736735375654b6d75784c753445646a4d354e32685571756253497246743448736d6d2b474d725038414374626748665336665342526634786874562b703165626a416e502f414a58784f7132433472346e4b686656525546334e6a5a4f7a70484c79794f6c33657143784b552f71314356486a704371392b7a4936682b4c654e486d6e47716965764e2f6b6f596a41586d6f37632f34335850576a366943594b433755757848503435677545504955742b45756956464f4973654d596866715a6b6433516c41715646355456484b6a7444594b644c5531566a794e63726443736b333643686c6e3679723638664b4850366b526453443653656a506f5751592b4f43387a6d722f6f396c4f6455576177687a46563948516a2b6d54334f39774f4d5a5a72657270422f5143786c58656734354468366b684b6d796e4e2b753070347866576e43742b79354b2b6d6a5a723059556f576a6a6a5a314c5a7676702b785a43587841394942794f376d77422f6b6949675477474c3562354f7736696a646d3137546f67657250326b7272664f3246735879414c4b46454a6b41535278364e616d2f4d43725852547377425846354e6d503934564978354f64374d36656f67795948716c71376331666630684e5761524f684b56703961686f4f6350526f616632774b774c613272556c4d7732313052765572535053337248354e423252636d594d6c4d5648616b532f7930653852664677556752387359594e55417371634546663278456d5741626c674c3756524d6c6d5a414e6b39696f66646e5a6c656b444a5764456a7a3774705a38746c796a71424f6c5335686d754a4268686d78357659747976517275304f6a4f3647364453582f7743506148512f6c73566d6f47663949676e6a6f4b6465657754654d78775677423332516a3735306730757845317a5a73726f354c446b734f656c7a594d2b6250354642706269585271686f3075686a75576e436a4f6c76373938314a7559366b4743354a6733383538317a314e31735047566d4b7073794b2b665778707244716a4f426b7550564c6c3562562f594a552b7450734c6b5174435551486732657977674471663642706e2b4554357053766557637932616d64614178744b7557736d733363324358514c4c75306a6b7a316d784e58657a4c3934436d4d703458305457756b2f6f44757a35486e654f5a496452314766473247683262305a553645626c326148306256522f6346375a49367670324f2b34766c455a665a3565376b7a2b484f6f4b6d2f576c75655677354f5170546830437931523956587252737754424f5870497a53747853543965766a4d484c545079563670696366422b4a536e4239643045686d2b484d59335261376948775a4b68306d51595537744a3535314b636d50512f6c6f62707a397a6c35565377574d7a6b357a546b364d7767526355454131504a585556365647492b36376c585271302b535a57717a4871543138756466534d5669522b3569763867573732476a3250446755793850535177372b68574e2f7035584e524456725761367134736251744b386d534e6a6b726a6e7379734c51646c57703756527050686443796c5a4d6957337268503749316939637439382b454356543262766146343075495230615339434858622f4735382f4964422f4a63534a4a3568554262435575682f4c464643385a51633379524c6e32473659503351575a3436374e4449673072753033385a565a7975483739576c724f727934352f714d64536338796f366c7371686b5a456f552f4158327177637145545941547430586b7966726a6a7676703075543858566f4c3161732b6867526c2f464e51357566342f7741657459647a593067726e474a3665633735484d6173474e437875437172506f6b30796930624d754d52444a48526f57656e68647a705739793144416a693876516e2b6a557367617473656c3348446d6b48436d37385946736e39785a2b55547450636167616c646c37413247392b78555455726a4345702f48666d32506349794e36484f463752307154655978674164726673794a69725266734e667552366662725679417254484f62325469724b357273694b4a495a665230343970475844637962343839587a664e4e3044396a69702f7175646e44726b4f4e424b527a706147786157785969434a39524278632f4830314e54464931565a7a3041587430745334652f75696d77786a616f4147583435474e507641375261754f52527a4958423437524835426e51547a533538794c596b52694c6176343439512b366e79434b31396b6139662f414d594f4a39744c4142552f79333439665831304437525245703663466570572f77416a4f6a51343959353963544c66764a652b50674e563858484a6b637673527535305453466961535a2f746342787039346254764c555164614b457278494e49776754666d335339624e725477725466384178364a2b44714a6a6e5a61456f6439703539514131556b3655384a4c736565515830416b7876687a3154354675746368566b6b717263396c675665354f636274485147486e64756f4b456a7867424f6b772b6d35337972616f7a6d61666549684444786a4b33334e6e6f36686f6c524f7373776c693165697a50306a3971714934485479705871434b2b6643777a424e6b2f38416c6e6f506d6747366e76783579376b3264794d47584a685341446e564f6a6e63674671676f797262617554796934536f6937777a6d314a3634456a5859365654586e586861504944593570647878696d6235506a676d4b706e30593764444f6972676c612b72527030456d3753306c4a684b67756c61626d3170467a6f7850676e32335479443741375070665431526e756270456e4b595338395a315739624c554376704465633535387137706f3742344a4f534e50487047615a43684b6a7462636558766b53435353782f4a37656f6f35746c6d6d63394e453978465454464b547a4c4a7250506d66514463334c753675684b36493074324c7546537337614f4e734b58746d4446327434732f4d6f364c6536796d56776f7a6236466b355836757535666d4f663164676f6f7a55416b78582b6d4151665643676561744959592f6a554d514e78627135557535446d756d62514e4d654c6b774d31467647762f77414e574c4f6c5256526e2b366b466b724e616978334b523658746f73424d756f72314274317337733454592b534f684d36584f736a754f33525458335064454f6650797a3775506e6b4b5870664a5037674b6d6b4261306763456d385435546873363963626258636e6d6d67314e616745712b7933524c36713335775a366e2f4a2b6f59365772752f6638622f3175446e557661414845786d4d4364625a655042432f6c45634761654e36653062556473747a654a4c497258797031497a354c474f3050644f6d587675512b6633426653525555694a4e62542f415051304f6c6572527138687a3252614a7832613663545a726a7a665a736865635442792b4732654d77737a305a734d4e5443734e2f31306d7635473945613371304351356b2b647264586b4a717a724c6b5a344c532b7165476471755a3956586a32564576794569626e3631754736586e7779635341464838443533586758464d7a505763687867397030644a783138715273624f684e6756537376587252313144327245737a6668314d3948485379703071323834617856494a2f77416348777037433041766e302f79702b3545795938354865784c6837525a5439695846724c46757a31547a6e6f617931564d6e55785a4c597554716e63656b51706e706a2b733067645453446b7256786e5230526b70524c575a5a7746343237497a70736e756746467444444f355a5a656c39534b61686673414464494c73365a4a43674e4f6655444a7a624e507977656550655351704456717547704f3466772b2f49796942724f4862514b37705875716c463931334c47725461324d466d425547576c66672b6f716d31306f337839302f77435331482b50366b453957677065745365586e744663306d354b4e48376a78616d7a35667341686f616444484d557454547a752f4c6f4c53394d7647487935617475435470774a654e3264725356305a2f4434744f6b786f2b503056525544526f547a735a6d6957763052463078456e36676364383256356e4f4f36424e664d5045366448302b304830614936585a483363634f684132695957645a6f4c6c30632f39726c4a676e444f357039703443724c4a724c715a3678627a6756696354456a52336147764f526e547a5a73393264576c374d31736638414e5a36475a6371507045334771586b714f725147794a597a74746361656145646c446e2f414b4a774a334132744f5466754f69717a4a7634436a567253374c307456754f6e4b4b3361726b6a44547a35742f346c3564506a2f774446467872347a4f71343675445a54306576434f455235514c2f41504150566e3165394f714d6a5a6a387a782f4d2f48382b785756752b4a2b5371627a4f6e7a387a5248547736312b52513356324a36736d35357938706d45464e336c4b59342f62527a2b6f6d6c5a345947366e70742b5673652f6a757a664d556f38612b6c78475a705656787a61534e437251624c444d364a3839796930703257615255674a636336537944324f44327456484e6a4f6e746e4d4461655479487836764c537a78634c4c736c4e7a6b30445057673333676548664c784e3577755736645846334d574966542b747831397644535947345a7178457a32707a414a7a4e314a577554544b6677314f3475457054792b745971563167792f7741646d7a616e517053725074592b594a65682b75524a70665552306b6c566867477661427635474678724832554d5956536453566263702b686a54756f78306550725a4c6b6d5255576f456f715645373766586d50744871674e467944647030507474486a58564a705a4f6870563539545131366d446f52354d6a472b3645575a4d71755768796f7a375332466f455461556c6c7a55383444726c2f77763064433965646c7764374c2f41434b4a7036766a3037463435587831536e71353352544c32474d57706d363264337a6766336e634468414f6f4b50696a5338426e75477a326c43314e7437664a445767725431714c42474a546a6e473533334a535851424239594439306e326671475a343174742b55687a6474614f6f30487a614675612b304c6168706a496a755831307350314c5879306943437a5479387375675947737a2f6836413450744d4b65524e5a6a71465555683278744f736f343839564e4a4d46563138544f6376726f6e3049324f52495246557372686535596a38624476455a7664377a4d59474e585a73727036415636634344304d3668724c556d5a634861306e496d696c7a737775476f5652796b373966494371434e7349544b4936564a42777930336936366e566b4a4f5a4c716e4577494872526e727a6f626f78712b72564b78547639656f3566444276512b66534a7a6e4a426c556e412b3650565a505738505a35395535516250316e7a537971746a6a7a2b4c7a613556464f6e4a3248314f6e346f5355416e4265514d41532b4253674c61636a5a386f61577975627830327051684e4d7944312b425637655a326648644b50764833347178374f305067392f7a55314c4558434d6b38313678387734503730646257526d36685a6f6555566e4656376b6b6e574d7a63364b667669684a4c75582f6a4f587359736a56594f50513148454f4e734859433672382f5a6a566d6678744a513559725a31314437523470636233584b4c525a72367369364d30544b7843584e5735674a3533686f527755796e4d544d544568704d4b616b6b6854394765476963455579304c4e6e46677056527059374b7068423871536f596e394a4143625968352f59614e464b5576674b4e724e6b354376536d306c4e305a442f6b4b39474d31616d6554636c5a75314a70716d4439795952594c36676e59426e385279552f5839674148792b5a56632b376c55336a354653576c54704b376231616a5659377249317a74314c552f557a78524f54765a7a764b4f526e4d62685032425a4b366338637877427a4d6f726f2f3750656665306e64525052477a704b72356b4747785646574838554b336145342f77416f5878414949626230784e4a65344a7032774938783148732f6b34676d4437314f6465724e73745161555231526a797a70744b704c554a444e4b72677a6838772f457a39474a2f5859716746384e2b61503048515379422b6c7a39354a6f55484e586f565a3153784a3747664d415754677844476e385976616145763454567072552b4d456b5a314776613154637a5a7a737a736b6a356d6f42536c7361753057634b70364a31736e2b4f485979562f5a614c3271524d626c456b796166394f6e6b445948396967565a366d476e744e6e51564579474974472f5769533166323061726c6f59785a4c712b30392f657548367a765978344c642b67784e78703066646c46616e35515376372f5064343879444f6f762b79784c614b6c7254637447624f76324b64317a707676715a4f5831765949413330546257517373434e714f787a76536f746d6361597154737a56543670616d564678615a615076532b7969655a53566f5348796b4a454a6744776d614d4a565a45434258573049314f71446c69447a653034792f6c722f414a4d35324c68792f642f38525a66344231543567496739716a44344b3571632b485772306c6c4778646364462b6832666c664c2b3753394c363846525a4a4b5a3768574d6637514370412b74777841776f617a674e50306b636e5247354e6b4d66475262442f75394452306275524f6a5a6f5a6c7045366568784f637966704c616e396e4e5342642b494b552f4d44574e4547706c466e4f717230683931364f3643416654646e4155637647303058466d2f497566685a756538487142612f6c64377a582f704867546d6335377737516b2b5a316c4f666e4b5457325a635066392b644665756d576e502b784f75756b6e6c6e664f566b662b46504b6c4954543158666a2b78476b59446444526d70326a416a6c7341756c466658337466562b5054707a52544c70352f7a4756446c4a496a71363339386f43626e2b7235556d663841514763326967354c6b53667838576a4c4d4645735278765758615a7875624c5a7367345538306e4c32676a48705034417a6e47373347687a534677495246454b732b473973484e44545878564a6663633539454b655473344c4f3857794b64314d57566c732f33694844414638434832544a4a674e667339577075554633556a626f37797372517369355845747475702f48576862516a53506955313361454d5a3966377a42394c416250516b3075594375722f41426353532b6d67766b6369695270537246587376736f6a686d3162326e71485575674248503841624f787a462f48706645596b4b6953494d31314d5a7362662f6b545545704f6848372b306e6470496f4c6c4e7157793652364e667730514a7557435062376c552b39786f452f6d64396567483646362b61546d50654a31396764486e74513653576a69303354323030542f3665664731464645706641745271663841344249316f64596b772f4d61766d6d3056305a664e57527739752f54446f56724b7a756b474e5855505541615257516674767973584e315354702b4762322f5873426e5a6d50444a353857575445357374632b566f7a747031653075307259644c3978783075366d6878616c6b764f39627833782f632b7954625061507642653665306132507a49313332614862345a65785a3075574a32512f425a4b7770666a6e707a2f6c64504f3646784730473964396470434154304b4265364b76782b4b324955494457596a50594b61507064436c62615a3053564d58514a71645679356a4664553176656d787858526b62763861415832514c363346776b2b35792b394941557563383550522f6b6f586b736671763679555354427975426636396b3879552f427858364a5142703434776f576d5272394176494971345a4a7132776a52587057774c73636a537159526c6f4351696c725864704931424e5361304174337845474d63687a714a30317445386b68534a79593435364b5666634e6e33416a735a4774515173545576366e7865395955517a54794b42714a767243487956445837443675766e4e6e4e4847757a6d5a6f6b564d5766474d6f537349632f2f5262386c6d386d57596575533567574e4f542f4143694259416f766d684943323336494463644833427774796d754159697365757a4379716c614e672f58755a6356444f68525678624767426d6b7a5964434179464e61586a6c633059766e654d595572664d63316c4c64515a707a79675451786a61692f68547163776a5032636f6a3737413978754b51453948736c6b394e704d586e79315861424a527a6d6774634f746e544f4b546c694c3479473670384e6b7678744d75794d616246685358762b776f472b726662746331383678544d765562334f47566d77557a4f2f77414750666a6d6d736f30432f334f4f69364e337963346c784f6a4e6a4f645a2f67594d726b7876376f2f5672304d7459544a6a5239626f355065554d5353574a746f4b4f756c4e6e42306e66707a316649446b6a5366414e366157672b7654492b426d6c64724f693059473076393677536363303536566e63314e6a792b77576e4752526f4d772f627569356870517179305461414b54706c7457544a337a4c314539507373493154574156564d374f4a576c737a726544503963632f6e564879494f665656312f58716f6f704d4772366d356256493778334f48666f4f2b694b3363785778364f665578646f4f757135796d7a334c68412b547a4a36497550327944304f6336434f67357477554a4555366b544b6f4f67554f7175335535397571782b34336a31324962555349616f796144434f64332f34543755746e3477456d6437584534686c7a705959643266536a64514e4b4c7172704b5061755471583064746a63665746504d36314b5a324a784a765a4f74436b6b56766a2b763668786f5550733677732f4a75697853554e695a725644515676386651545173734f6970334959356272584d377a67417a74616147736f54306e6354587035443749433774702b6c3279753964742f61383867584d702b6c523965656f576a56624b332f71676c4d4b4a4b5a7a5a536f6f327a2f58396a6c4f6a4276773156634b32754f6a33337458546c7a31784a4d4933736e45365934737863394374785858547336346e424d745a2f395a4a4c5948752f6f486339485a61777931774948354c6e564c50486f787675446e4768334b307a53477466556b37526e57514b624d6b487a77434172483466334f4556666e5672615574615a4b55616e50384174707633614d6f4a7070346f385852624e4135456976676e53314c5066382f7a4a2b7a496b484a55677a63457335556137656c4a69313648586e47544d2b2b6d2f774463304643324c355979716877664863325632384b766231725766455a302b2b6b457a764161706b5557695a42316c693867394a346b70345a78596764313243576b3658747a41306c7258705649465431505a7a32665a556e76574c45672b75716e6632634b30554b6d746c73756a32304f7a3773567a5a337359714a48616244516d6f467353744442555076345a6d715948754279412b4e305666635575486a34753534544e686656555774624973575136476b4865317876593566526f6f2b4b4e6643613130424943704c51354e7933776658394163327837376c6462565171796443363952726457645355664d3676574a6d6a373668614b5278636c69666e34356258724e376d755335552f77415651496e306a7868525039756134474b6d754a75764874784c4f373977507036667866726f35506339676f59722f64386748396b412f77437a384e4944547071564532635366654f7a444e74584c744e58767279587772643374655a56557a726e646a736339696937387a6e4a584c2b772f634d2f39425958692f71475868303879746963583456516832326e36724f56777a6b4d656c71722b577572684a6438326c6a6b58514667704a7764536e3279547945786e686a493230776b4b31364a71314b4c5468386969544f44494d30515a6e4c304a766b72762b594e44337071596b534c376a446431505567494f6f5566764776437365516b626f3652376f5667546e4e6141436257356e536b71546157625263793275515a44584b544b6c697466444633766d3933462f4543692f7176765049544f5676702f6f496d30394846464e667773577945464c30515431634b573145675666357349452f3545314271595a52687866794574587674584554574c65762b336835392f66335935694c57772b6a2b72387a366f4f304b4c3352336b306b30713632695364692b4e6253766e666a614e5668697a39455a6b66487350336d492f3074505a325a7277372f41422b4c622b5879454f713854394564586a4b4b2b614a6e7a6e7a476e746c42553939387053456d6b685a2b6e45544a5872466c4a6a3370516649416d663761626e387675496532663068576e2b566b4f6f636b327a544238525631324b654f797672695252562b6c6b53624856667035384633666e595844644e33354f7566792b346a546f76536c7565476c4a6a624c585a3075624f717775366f2f77415a6b4f6c47763633753049564b704c69567a4d506b7979647771556966754155636259444765462b6d42326f6e487866544a756e57465a384a7531475354786c6b5552524f71465468467331316b3952634575416f794d7857624f735a4f5a385a414650684870524d6b586c366458706b5345564359355048567a636e734b543773494c476b6836492f58754a7a7734333435725038314f396e7a64537a506a497050314839465048504f7051302f623542426d77453263635a7637794839487167726677483255456b6449697a37754b737037386b394e346d726f653564564e71336d497831675535642b4c2f70446e595a795359766c69596531633159614f3233576335633671714a4e574e574c75384a4c787134354b7155312f4c2f78317741343447636e666130394d6974612f51663071346971496366623159446f792f6d566372393559534e796b78716148556b4d2f7731527263356134702b6b487a544c5339497053413662722b706e2b776a64766f3136524d6d53636e69506d6e614d3936427a6856427557367a712b3354736f676732455330707a3176584b747a43414b474e434e79706a5247534153335839545038415951666e6f743655557a54496f385a386b4e506b636d6a426d4a3050476e424c6f42577a425177677a575976312f713858716671546a5072635a384e42482f6b3143526e4d2b4d68446e6f6436463030562f633856386f714e63314e3061307a366d3279366430656677456a3770582b32682f77366b37502b6c77462f63562f6f6c2b6d6c4a5476743467544a36642b69756b70656274654a65535750304d504a434853726b486b5349354a6d54436d65534a694b714f746f68766649677046484f6154556a363745306362475a385a4131486f583652616a59484e384d336559724e46626b6245382b4634714f624c4a354c506c774f526b386a2b504a6f7a39536579632b643464446b35703072397a69553257643976454475656c587062486d5478572b426558554d62446f50747a4a6973317450346670585968313562414a59794d62646c367a557243315a2f53637562362f5768523757363369454e44305a39454e504f3865584e347a3569784f4e6f3566325a494947747458783456504c52696b6d596447537635726e755735557a5163374b6e532f706849494d5265326575522b64364a2b69646f6f637a772f515a58466e42304652354e6d5a59457566715661623043482f41447a5545413056776d6279706f4a306643544f4241585036623765496a6150526630357a38344d334e385338672f654235436d624e466d6272616b656f327a62746b4b6b50485936756648514e31486b372b64536a6753464e326d645041712f77437133323852462f4a50536a307574356a6e6b2b423762394536747852504478644a38564b363753626e314e6a7579394851644c49776248736c533447574d323750306a2f4775622b7069317536324131302f5337784753702f6b59656d6d67457742413830426a33346b577a4648745a746b6d776d42365a7058626766795773736c71656b6e542b535064373645685366394e3173343338426a6d2b6b666757547051377669586739324d5666314d544b6e767a6d75524979735674794b493251564b427a495375316b4549552b774176452f6d486c49424a4f36625269623444477a307477437a5a4564394e3947595a636a6d6f7830576c6e7a30364d3145656c6a477943774d756b6170583051787a554e2f6b556d687449306168306856775036694c54505732506f466c656d38767577315a50682b704f78756b7542566a717362524c796141704c426c787530366566315a626835756f6d6b4362564d696b2f74756b4b6c507468564f37382f3248793730647945612b78564a3467544c7133753659356b382b74685930476b366979374f767a596b2b34614c766a4e346b64485335526f42396c744147305878766e486d4d452b6c5858755a6e72394f504a6e46425a6a4a4d75665964354e4f636b6c4764634676762b5761795637453265372f414c616630427557772f6c6d724f716433352f734634765350766a5744492b58302f7078546b37334c64712f424c6c56353271576474523967707a4a7452736c5a4c6f6448525433744946303655326445467a675a4e33352f73426d663658357650596776424a752f636e6e365144324476655a6b31593473785a2f7751736c476a7577736b67696f35675133337541793446494245326d4f6c732f514571664238424732764b73384535644b2f79662b55356e773748647a527a6d79567a312f7741517a655a4a4a3250515a4c715858706e564f774f6b6c436f37324a34355957342f6a6a37415670656b475a37595937505432366449586344624e6e656c5734635475314e55356c6b4d62766b385943786c5563733758554f30507070523734706663547137702f4648723641315836503554737962332b4331516e526f4b4d4e444e6b373430436b364b6c35653278657a687039766a666b485338663068364c5831317a5458747576644d6d69773074302f696a313941424830453634376a76384b6f63704f72426f7a474f6b7251626f61537258347a7273696b2f6b49564d5a524c2b6c774939354336645a3648364f63457a752f503841594d562b6a6d617136504f4477657566795a6b32537a59506179647650386539726f6270397755576d56664761534f6a5a3150734c6b77555444713849315236564c5737382f32464f374870636a43386374624c3656533152563047414d6b646d32733057757a2b7731306a6b387a784f6a5135556c594574596731716b2f5468366d5a39763072376f6d65755a4772666b50714834526d556e6c662f4e33354635456e535a6e737030647a507a45722f6a39505155657a47476d566b707a2b5341507441485463564a2b394a417556396c305a4472465a37726679454a3867395566426b492f6a562b6c586c566e4e434f72567a733356324d3237426b5435424a7048627a59356c363264475678615833444770387a43726b32365163464b705a5a713055742b4c4159542b7566685332577272394d2f4d2f4748386b355779644e6d42744f6b6f3868784d39574d55595461795a70654273596b72317362395a317a6e4a616d754e78754135327a2b4f6658314162623966664171624a79306654667a50526e38676e4b7463386d485a6d714f4d7668574a55794d6368574c6f4f5a43364b7730496d6c5371593141626a4e7177525363346977436638417a722b6b6e323636552b6a6e6e4333344b354c623850715074386870646f4a5272505a392b704161777438674e616239567a776b62334b6159746e496668686e4676786659505976556e302f6d69644662365a2b6f537631524a4e6b30787056452f376d553637794b366d704f6c392b757971564b2f634e436861395833424b6276326552395854452b4e66742f59664d33315339496e376443582b6c486e564376734e386c6f313673765373314c50484c4c6b70356b3032394653717648694f714744392f47646559596578524a74594268616132363767546e2f414342394c714e4674482f7a512b5777374f78624c7062766454773236326250674b784c6f4946393035554b4c53635761494a54434955485248534964633337424d625a2f48507236694f312b76767071712f74326e34683535536558714a6964557a42794c724e584f306c56575831614d4e56434666355131624537364e474d5a7576536f75704e795741552b3776347a397766306657377753665258625036542b5a4779774c6732646e4b52302f495a6f477331456165486d556679697a537a37477a386f45744e4c6c6636776f6d4f7a3252756a625034353966554f4e66386766532f4c302b5a695053377937536a652f5155696f306f7a72627537766a734d696879664975736133512b797a33643730796870534d436e664a5762722b6b697475753769432b683632654436504b516e394c664a42566267773546766b6663367a4f337333426b5452504c637a78317567767638675679644c2b4b6c6c4c687470506e792b3434464d736a5a4d644c59447448725a3661572f52627a307538752b336c6a4b4c724535655862667247397a6c61355446486a3965797a6d585051376a524b696b783930694c31744c336d32332f463935424f48386766546c2b674261336875304e4767787337714b386b35534d385265616a795078614c36756633763652506d30664f71345a6836707565794d6834464a4f624c5230734757623679656c4a32305563385638336957794f44563133566f786536326570556b7171494974436e553544436c6b35446f635a476a34313964376665337563456f4e747536777a312f574877686c64424b394c504a7436537433775a565674385a376c4e576c6e3648616f35637a2b582f6554342f335938627856494a715848504d34307a56544f2b55675253333473424a5872783661596d7272633376412f4c38374a4b4e64527569697154663969724c7963386a584f65706f6c4f79316568706c4a326b674f426867426e485a594c706b30744d634c41596e316b394f4f74746f3536622b5a35714e7a6a6d7548516b37775070342b586b72354a34354176532b3238654f30764a6a4e672b774b51764651725541726155375a2f48507236695131657550704c6f356b394e2f696671484d6958516f5874596c304b4a346b386c6e6864716269723463357467786e486c30546446702b2b676a436174546e63726364646c73597a7743476a3677656b5463376179752b4665635349324d6b433265783464576a514e664a79356d3230727a5252786b62726b3658655042594b2b6131324f784571614f5274624c5a7a6e6a3638672b7a66572f306d7a7357593766432f564849736b30624a596f6e775a3369314b394371534864794d3670314c75454979615476494a52506b353267362b6950327144326b7566643233645939666237437571665666306d4c4c38634b2f784c7a39564f747163386b376b594d7343763435634c633175504a6656486b735a5a6f504c2f414b714f71614b6374627673414444704c353532327a30714a374c3634656c6b30517044307838362f6a7647626e5a544e4769484c4f4c5178706a6875546e53553677672f5163476b4d49784f345a4238447555316e59432f77424a6a62663858336b493566726636593433793249394b50564c5a5639486b305961486a54462b542b51386d6337514b2b6568304b752f52505548326f4178636970396a53534879635035496d747266464568757a3164384975314f7356364f656f46744575486f3971626c654e2b367a626872754c537a383877516d59624e4c3278364449467235554d383261536a61373375317062625a2f4850723668486e7248344556314f6937304e39532f496d7a4d7174785a6448775733574836744b75376c717452656a517335632f5164526f64506f6472442f542f7558495846485258452b4e66742f59466565762f70667330775a3150685871496778656f644653636f76476e66594b2f535841445a6d304d7a36457179334f5551305553704c337a64634c2b445443747376586a4e6f39667a47666b48725a36543655693832763071395361637154624f33527953775230426c3754744a61785644463631457548715554304d6c6c6c4d3664436634706e644266456b4d794b3234323351426e2f7741386670644e342f6e7a79656b6e6c704a5a4a517174623947625638614d55356b4f31492b726c5364463837567a2b4a67564d39366a6e2b4c374854535244796c6337625a37584166504850562f306c6b7644504c306738707a71612f2f41494841706e306c4c2b5a6448365a6470776158746f2f6633714a6c717469676d50376941464d64444445573233645959342f72723653534a333336507046366a7759614d692f537a2b776e346d652f44506d637977716d7571386a4a615a5a6531513669416d3749376c504e576c4c6d6e4d68716146744f336a48723559446a76724a3444434c64476e30393952485938327a6a4157667a4f385672584571682f7873364e457a4653666143582b59706e6d6f6d464630667a474a6e4366434a74743566792f3442334c39615053797165335244307a3953356a4a765661704f692b7a436b51304432716d396d337250624b34432b7779626c2f7a5539505639394d4e7741636b376262792f6c2f7742387672563662317a305a564870683546446f50476d7733792b4b3459396658745a3953364939796457784379556375476879755243526659472f746e2f636841354674742f78666551396b39522f535655382b6846365a656332785a584c64472f79624c7879636a4d35304b7461447332616d554a6c2b796a4b6a34596c6133682f5a63564b615873583057322f34767649664e39595052367a49304d4c53394f50557a782b6c4e4f707448395477334e6369526f7736444852387a7a336e6b37572b5779366e736463713675777055516770595631717274746e7456456f6839572f545036316164663077395539483757636e4a31484d676e7771574e2b426b756d3353505175357774524f7471556f7375514333653931557749704f5a4c4852746e386466583144665039582f41457879744879597344776a316b6b69797470312f49745a5659584a737a50473744746f6e717a36753162316771584b4b324f73344861374a364e4b626b7a686f544d31744f4a6d3043664e395750546d334f7869763841547a314168794e5479485330743564486832635756436a56697673517648696b4a353656415231617937425174626c465a4d31334b556a783037336476786576354154343736772b6d2f6a70385471656e2f6d485869695a45794a6f494e44456b7957654f55523572394957654f6d376575356d69746f722f77427936507336516970505757506e6961576e6a4673342b6f4f586575503439374f6c335168386339527333725a76736273617648687470727163633657664a6f7972536937446d7153744e7a446f486c4b6b2f4a3962677549776a5a712b4544452f5658305a752b704b574a35657472413548724d5044376f3562726f3731364777396c626951313235546b34745845715768464d386c63625a5a2b4c552b6e2b726262527877426d762b5148704e6c34694378634879794c523775633130566557356b4962586a636c654a5251594e713231716c635838505a444b745a6c396873305945373456666f78624c6541504c395a2f5447435257586f2b4b2b6f656831386b6b756375724e627435316332696e484b58787365364754636950504c4c314d463376456a34704a6f456530676c6136366262524f4932674f667246364179506d665846356b6a79792f6d656a4a4f446e6b53716d4655327a4859454d5773536f705a31314f3144363032514b3563482b706936774e5546396c764157484a367638416f5853486b31392f6a336c656334566646724a792f464c362b4e56552b3574475a70507a75714366576d7138663030527a325545754d6b79484a3849736252545462715a78362f7342567672762b50612b5458766d395248485a4a6b37546233654d3655756c6b6646715652557236614357694731597977386437614f764a2b334d4650765650396b5a326176684145612f712f2b4e4d75632f64304d5431497a6e443541696a6b32503468596a7553684f4b4f5959766248564d6e364d766b5754476973777248744b5a6b54473943696e39364b33366373427a74657666343065515a3874326e6f655832356b553171737461384773626d6456613557506c34486b4a724b61577468532b502f3650387668716a647a36674f523873614b617354776b664f2f6b442b4c7a324d3035737a7a664b6e4e614a676b302f484f4b6e624870307030755973535759725a6249784c3536475447333767652f774238334f6a31534b70325838765831423566726a2b4b6336713261666a506d484f326f7a576e6d44343171353147746f5236486b47524b70364c745a4b4a552f6363514c59585743556a682b4e68302f48324b757a5638592b774b503841573338616172384e576f72797a78766b7a59762f41423474627872706f6e672f54537635565850522b33574664476b757174474562503558687638415a5a30554b6a62712b6f2f34436f2b72336f4846424b4748543549754c496e71355645334c765376646253796665796d444d354a6b313330633278693030734f6f625941366d77474e625363785855372f77436766572b746e6f54526c563574483868347a6e35754c7042526f3533703173555178785636432f497442584b732f586f47467979586c6833346c716372574d526e61424853646a5a71627576723135677234353670666a764c6a34575a667155625337615173306c56654f58472f4f74706d304a6e74552f51684550707679553152396e35332f4f6c3331583279562b7a743854572b63394944764b3959767834317273396b2b36784e4d31384961476c4e34355137756937507764437147366169717a6c46546a6e757345566877716156374443464b6a2f414e42707271523367777a31422f476d787a636e48316670614c4635316d513042706f66467974744332636656327945377077736e78536d3443614c68342f374578722f41477858597866786a3139424b38727a5038664430767250386f62485264307a6d584e343976706e47702f6a34795478625654737433794f546e50734b506c597a556f5a377754534264703930667450574262384f33364139697977623535626f575752766a737a352f307971704d566554476352705a463250517931797772354d7566346c4e647170653042564e4d314e646c7641573134583554365635702f574479725a644d73327539304b4c63344a4a4d394c4566792b4f6d43466e38307834693434364256785230483951666f3853436a724d54486b4c4944314439474b36695a33796571646d4f2f4b5732652f50314668664f754d722f414b6f4e4833546f6370597237395155442b33544b436a6c45356a4b6b4c566938673944636f494d67764d6258335a732f5757746e6b43786d4d79696d4f726b75616a52674562505a59536159306c5057537867596b426678545454544e70347855546877656a4138616b2f4f4a526f725449354b58546c396e6c464550795a6c48783978516238504d2f507a56304e487676635a68777844356a59746d2f6848723669553465623656304f7834632f7a585a567073653668524d6766536d3946732f78304f31446e48725258326a37412f553557774675635a744d4c4f306536747430396169307366787a306737585138504d6631566d544b696d587968774a6b434354536a7355655473706430636471596168644e30544e4a6d5a66347046506636576d307878723038684d4d37784830756b6172692f49477538685478414f764866767171353273465336463066386a55336736482f77426a2f682b6633422f676b6d382b4d492f66584d2b4d696449395066413341736c2b5a636238784a766d66635578756965425336556a427a633177692b6b542b3873663251665a5a7363535876346d6351706d333466754c477950436642744e384259577a6d39512b335259464552784546797a466e5a31716165647753464b78452b417632423836556b626d7536592f315762586a6a4d6576356a5944777677444438544137383172646169727643355262775361766a666b61747169622b796377682f516e52316763596d594f463777442f48654b784e4b33722b307457596a6a694b316d596d66486a57754f73346a68786930576e424b37522b4d2b6d6f546231696d50594166442b7155696676643150365076746438357549544c70653337516b4837372f6e506c62684d7a4e7431726273377354355735737a385737384d394c31366a52373170395766355458523464674d512f463577724b4c344c63304f3657786c6e386e5a7542566546524c4371574876656851584f2f572b4541636652454661346a4f42723970367a73726a685464334c63326d786e4e4349732b3257694f563266796a507a6f6668705173656a4e704572726142723753452f736f2f326d6c6467507731514b476673724f745a325532506175796874426f7a6c4e52544f435934524f706c6568474a337536485453716e7232384c2f774237674a363056564f6446776275756d356f766c31633647494a704e6a7337797a7134465a6e566e384b2b44436e6a65384f34706e587a64554e48524e4649432b3131786671364b70692b634974584a4254797654334b5738314f42562b72707637436b4d3057634e517135535a30386b6362416d6d426f4a5551734d6366477a4d4f31794a676c6c6a32632f492b7167635835365266456956632f47745775694633556777334f70645364544f7555616673674870537a485170447379594953646335344b597252424c344b34715761693045795236382f34306c594351574e593864372b4b55644e72574161576c38534f6658447258774f5a644d70484e47534243645a3147654d51304d636f5159782b537474663256454455663959566d44544d672b536859465058714d4f6c58534c364553333876324a332b524f314b395072787a7759396566325758785a34505455687844734b724c3241704d7377434a5a506c706e476d796a544f4869724e47715850716174456a70724733537368426a50727838306a3442665a4a4d3379485333396c3173796c41656963684f7756716e57727a33315a2b696d533261536e5430304f36366d483648385455444b684233324247716862674536582b796e2f642f77414148617161327473696b5453376a462f51436c36716f4d78647058474d427253596c7153787563504b7943526738644b5873357a34755467386f676c734d4a5a487275364c63376f5131357030764a666449654a737a35512f6a2b6b6e6c4442706f6b66305a692b796b65476b6a4a354156303563395043614d536b3332304c627879644736665667687558647a4c664649596e79366839452b656c5856753666545449786a4b66596c4941465867672f6e792f446d424b597a3030492f61686d63453569682b6850484a397562364c4a6443673579366e3471326f39357a7037307841487347303339557662584c4e4e5656423374546d556a79414a35593357524a31437a5839786371655837545646315450726e66395034335530685457437970626f304f35645837395058625054462f4a364f5772683643704e6169707677543265396d58335554437376716832326b34467435524e78696a42313877357a326759746e716458754e5a526d4a6e52525a48417a4a377154306161633574553953667455473657424b544558652f6e2b75645a6b5039423967584a4b686b7053544f6b7936505a4852724a36437964444c5a6f456d6a425a416863644244724c4d657236727245706d4e78706e703976417751334f7a704649714a6d4174456e5a555a304b6139754375575743797252584e6f317a7564334e58644437616a6373763841434d4766367a48766567317a3835485169384f7343465139464c574d347a6b4761342f7578374a41735263504a6451787a46715976365a7034734647514b726b616f77586e6555785145762b546a55415771705a53586155536f39336b7a3443716b7259676364334d32555136704a4b456d52396e45513653774148394572444338496334456763704e79614f504d4f462f454d71664879674a6168646b365462455a346d357a51706d49462b7a336c523336595a6371706c6f5279684651386c584c58517458372f6b6442556d506f4d43714437734d694c506a3070616c6c317442556e4b6c6339664f542f774448515a742b67355a504873614c394f686b333147744258594f357561782b6e6f544f46774f476f4c6d456c704c594255497a3267616a4a762b5159686c55323954592f53675733446a657a55484542615a6e6d7261586a6e4e4f7274583734584a666d34544a6c67524745777a4a707039366944493435304c6a7a4b4a6b4e5631386871627033766d676279796e516238543171304656646f356f43672f69366b484c66397473344e6d61557a675566426f6462652b4f502f414579527773315a68574f4674395544626c4c616e6e63306b44337243615041393666737a4c4a767342502b7367773066717453337338767a74685767323930745470716b6e527070726679625266556e697248735976506d6c2b77357752754d4b2b743778712f3644414d5a48637569794d364a49303075446865524a53476c32785a564538736146452f7736452f4a4d314b7664336f2f766c4e6e7342587664386f48567068727a3242434e61797a684c67706579712f774378583870636f304b4858646f64526e6a6439425846474a3939364470496a65784a474355664e4b4e304f726f5451616c56497975696e59784b43497539314b636b36484d6c46777a3055585a34715978507362545477484e4d6b7a2b38506965554a6d4e32617a4f716d633648514a59577176537a375132504e326f322b72736844794b4f705a4f56796830796f4730465963383765744272342b4445524e4630512f576f72534b7553556d63707331356c6736576f5a7057722b39776d6539615854706d397333665a316e557a4e454d32326e6f4c2b7a726368757a49364b6c4a432b77303649424d695132616b73545668783265756a7136657a4f4b45506144674d2b6d372f61424f5231346156723646394244597a596e704c6d5457696970376b7261763438396f4959566b72486f705850536f53532b63466e4f314b3567644d676f446c47686e51784479554f4f714777457a716c54372f745a2b6a6b316363587a664256507064537767554154392f78366c4c574f6341756d526331355371637a71536430715659594b6d7656626c79746e756a722b533732453663536e6e6154772f7a6b324643716f36334b39774f53517074556a313641464f367257585a7963364b2b566b31433253634b6a475341722f2b6d4e424b48473336345370722b6233742b46534179302f31656c6f32525556396b72624451525263566c496d483672595861306a5334515a61682b35306744674e4d5667494a656d594b65676774656c70484f5235372f356373704c756a4b36793545485a596d66484778417262397050324b4d7a7067502b56552b4f34544a674f4e66412b58695461496f6233503464544931573564456d717152733548476f356c2f50563746797a6c6f4a36584543346e667874447638434e7a684148637a73746d5849693842476c466e31483053493570697957646158516235627a7550304e53326b63763946786741436a64516f48642b576e6747416458396a70515a316f765a5055562f4f456a6e51733931544a6d572f516b564c4c4b7958513674564469706f4d7a41514c326946444157375a4e504a453966644c492b3435656d6d644d387679556650336b693943365a3375665a316a5535726b703453534d49792b51676f6c6257734d675271644c705a365446312f48737a4b663470495174544e33556f355239716357784d2b714b5575446b7657705a2f764a52675631424a426a624735776c653275756570504a72465a352b52646657735368635348584d2f6e44544b3055725774645a724a4c6967495458482f414e5a774134564962714e4a554e41703270657032437575696a445546763841704374307331587a67686e522f7743582f4b7753364e6e4b654b2b596a436b506772767a72774e764a487259372b4d614375557131466974567679505766305161524b6e30464578394246326d672b54496e623741713443744e78477561687337567952646e494b633155394e49644857733472527a616a5a30766365665037666c6d4b65706875446a5676486a6e47434d4a354b484c696e2f6b3546396c42713630615931534346316a6f4e447370313042796367716f4954707062503150733747705455473071415246525875754272727956566d52565661733563413467544859694a373250392f38786e396a626e2f4e337063635a7a4a2f7946684f7061436466767131357273777356724649493674654277614e41702f51687271667554576d79797162535a383350384157422f57796871476748474a6b4456665076355a56553643724c7635496e5255384c6b5259396d52486f6453716957777669752f36663841473837524f434f554738775166564a482b6753645862394d7069347462736c4d38397445614d387672614b5743393644304a66324a4c4769796365696a6f6e2b6f77366f4a696d437367566d57756879532b6e4a5a72506b522f495431643649737a542b43716e4b7237446b6d587945765349454b5537764f582b315a68774f4148394269467a526e306f387a356d39423764446b72387946634d5053524c734a7a46396d307669576c6334314b65326f4f4850522f376a7a323041324d4849754c6c36563951745766596b46547971555666595736635838687149396c6e316d32547579524c6a67557272307a54634364594f305139774b6c48526e4f6b6772744370756673355366724e727a4b6e30513331326638415437545a63307545765066484d624449422b544e4871656948312b2f30456436764e4c41437a764e444e6e43696544556e313252556f6d53304c6e634e383964555958657771436c4932763643514e545354306d43446e48506d5075556c5473367357507343354f685a78416a396e36366e46704556326c4f6e2b55594c43714738476b546e664e783261523839376e2f726b2f46792f514f572f643050314b70415a4d6e4b774b756372727468376e4f78644344764e5739797a2b544e2b355a5a3269656f754f4d7153503754654f5a774941437979384f4e454758776963304f626a63346d79432f4b5a596b6b4a4b51733277464f752b767152383472715750497a5a533657672f6857304d484e30304c42753133393242596f77465a512b3141695576315432326b524175586b7a6f666a6530766b6e6f7a5356536c6e5459583954333875526b6c6d4c567a6b764d6f394244474d3158505854784b386c68542f414d726e4b30705a5a55716a6343526c6277335466737245304936377336675763382f6e39776e2f414f546844506e396d42374b4e444d72562b77664a6d6144437a4a4846414f524d3778394d73497a4335644175596165416c7a47306c4772345663624c654162425548377236795373783132506570386676436a475441617236516f70355253326776354436764766584a7a4257345a4a7a375231722b314131312b5a546f733165564f54425146476a392b50554c34416d2b78726367307033315548456c796f3252715a2b3347354b514252775470476c70322b44362f6f496c566f6c6b55533431646d6c4e6f30714b515556364768525662494d474f71334e50392f4f724a36763274516b78742b646e7730305570396e36597133623873434b567837573037785a6d4a424e4848706165552b5256414d73667573586b35617435584a4b46394c6d61714b65722f4b353348554f706364346d464c70374c5972574f494e575a4b533370645032462b32342b6a565a58486f45565254756373574e306b7a6c3169614f564f733753315a6b3533735943364b4979435452627558634c445845777032524734344a586651314b537a624777516279364670623279643956786e56644e476d46374b65386d3446476c2f77446175496d5a7a45505a394a4f584e6e6c42673530793163564b4d6643524a646f576871555a504c45646871592f596c483744356f67596a3764517775613061523477314162596b5a675a585a4c4a5051704a306e78712b4466714e324a644a6b4576486465326c34756f496a4271644279544b523776394c6d66462f514e3546794c53534c72476c74706b396a73704d6333777a6a584771723252616c746e4353503152314f507063636936364d656b2b2f414d30797636426c477436314b346c4d757531504b53374f334d3039616171436d786d436638413652636b716963797136466a79577a6b34646438526e4f524934514673576655512f713261546c3854534762715a32556d7a53527a4a7930517854494f2f3673786c55646c48326e3851306d6b6748552f442f67704d387a6a75417a365768786949544655326c434d7a63726c632f4555525639306f536e3550474c434264332f59314c456a7754466c6578796833372f53305454767434685839573333747a673778316c345575554e4d314e4e46485a49706235704661616c2f586f643941714c7862303131694a3143557a794a584576672b76364252376e544d6547612b46752b50616e54716572497a636b3437564f6970692b4e4a49594d3649633234376d416675443458646d706254376d3971476c763134386a6c4a513053454d5033756d63315843343354636d776e436557342b35734c57464e64396954336c32673678464d3770794256766a2b7636674435516832566e6a62384f6a703273756a4c55354d713941715550424264624a4d654c70736a474f67726c644363506d2b446f664e50774966336254377879592f4f2f43547265705748722f4147766a726b3857684a4c384c4a5a473351647338596c574f7970506a6458614e536e576d6e63705a7a6778485a6a5961304f346c316d2b6c77726a366972507736797453623158314b35716364666a7259356445323371713764683179462f4758307a5a6d68696f666c3079664779676c424d6e7653706c696d6e4f523356543276504448694f744d32474f682f476e6c313177384f5379326e4a65746e6a71356f743676576d6347625a4856374861783657313868534d58784a386a594b757056583079773331385136777769302b63566f43396b7461757768577a4d7a614f753144315073706b614c725071736e426569735a7574356377364d436e723348476f413674752b454e4730652b7856324c4d396e7a6c4a546c6f736e614b655456464866334c46614a5157782f4d3868616f48547666586e4f5350567a705356525433633241363856797648552f566f692b334d586a4849615467326e3179354b4e5a65664f6565314655736f516b506330625151484a412f32757530534231444b4f6e4674337768476c755a755258613075672f6c5948484336394e526a5271777632767161476c37747955313647683970784c3673314f4e4b6273304e4175334a6e61456330666d6a37685532584a59326c2b67646644426b4378304761436456316c75677a72774362566c474b657a3635654e312b787666733075397969632b6556737858415655704e6b7a4a7336706438562f4f7a4a6d2b314c6c4a767431394a624933625045705a7a51706a68306c67727337334664536c304947596a543777675753356c586b51302b515851315254317955636a355443725268716b677857333433366f30564e4b756c3331356c47766e74534856514d456f77623967487a35725239714d484b526654514d75624275507a73334c48616e786749736d706a7176682b316f306f30314a52464f7233547570557a374166434e4b6745763870306371574b574a556139367674444e4f7a537662646b616c713166646f5465584b4b586534644a796555763556526c41734234346a49796c3647504953392f4a4d79625171314d364b5674323352694c6b4b7251753056363634746d4c5575355a704330737557314b5072757336744c55736f4e58546f454d6e366a6f455459744b5a70636a4f6169317451783531734e6b546255345647705461324637633076756b357a5063546d634b443437574f346f4a414375727536756e54786d587a6e785449593637635a6c357a2f4148636f6d6c72415a4f7164556e782b676c357555377147473237747758646d49724a36474c435773376b2b4d516c6b4536486d7833526d546175744e4157577630755a75685936584e73386b3439376d56555339732b4d4c4c3472494a704447333451467756463544355a4b714b53542b536e314b58374358506e75526776355749725a4d6f4b687230464c3861304757436b615350544a343052664433367743314e595354417951794e7a5173626f4c6233584264305956756241755a39577a50326970455647653162692f6b475a63356e5371637668313533676c366b684741474e484b7a7270573965752f4f6f356d785a5758695a634335356f75576168545868653650646751564647705a4b336e797236665473576149624f4f346b6751385a3851556e4f434b43456734795053544e6b6d634d314d656e5a566b38324b4b346846446b6b696a5957547154645336584c70704373543648436f544f5a6d664557544c6f456e794b354d7150494c4e7336676b5976566a72614377635032374d3662525a58665977766b6a5830334a57615749796b39545451326e4a436748554b79342f77446c366f4f65527864533945386e4d782b77364e6d6859646675474c7871574a546b38584c77474f4f634b6b55386679776d6a5a483859545a4f573269724832553067534a593361337556542b6765705336437a5a644c546a7a2b466f5a70357638652f37527463396a4d77546d4b31465041494a50324a466465552b6648716d4f55695969754568502b5148547a6d645461536553715a663953716a4c5978726e6f554b74696b7150695a544d376d6637543167466231302f4a657a4e4f724f6e52664c593274694f4649787564627050584e536e59792b4c47637170646973574c49506d505654776b72506f70505166644d6f35374c667254635a78364d573775614361707379615970714b35324649736c2f59542f486550314a6d4b3576736c6f4e6b726a43624e5761514d644e503039413272767a2f414f4a417465616e37522f533058774f2f695945675633464844374363744e454e42444f77492f6950337059507941774b4e3635376442626258524f3679544c30644e45656c32594d2b48344835552b5a665173624e5664553036774c6f634c33664d484869376e4a5036444d62424c6b727261757457355436335448376766755672434e7263594f4a644e51566e742f6a655546384a7155546744714f614d79564e416e7252665a5871484c3978446263534772376b584a4e4e334354316539424e667957685a564f4c596f4a5873587850442b73624248357a6f6453455543534c367563476a5057316255336a6234374137766b4f5a427961724c626264486e705479697a574e6451765a2f3841565a537331334f674876536777785a557a4874726e7a412b797a3749796553565a476b75656d6b45576643314355557573546a366b35615266726f4e527830312f774179754a644a384b61384c523541466c754869592b6665703273644e69444761364c633162327a44694c664470685056437332564c6447755a78743537565357486f7435372b444d432f5a6b53444c7a63394e797574586b786c75576149716f506e423133364d7a707864577931465566313079496a594670693943362b4a5578777a4c2f53356241344a547043455a4f6e7170682f6b5a30766e595864435a6663623463523947654b7747366e7452754d55716c5345334c775a395255374351774b5532354a63727972556d456f725033354370614b356e3575535347636f3246534855535063576b4c4c48546c624f4876705037387276723043436f33525870487943534b702f6d316c44456a59432b6d324b796158366165364f727742716e314b796f766450526a303438715671757251616b68544438633767616166366b45383748556447576d3073707946554d754e4766717447527a734c4d6862387256324e47697a4a706f4c55442b506f5758734d3565384966692b7255436d4f6a6e64443936644e755a2f4b506f425441686c7a6d445a4e557733494331336a763234376a797a6e6f4f6b5670564a5a396d763372643849544154314944766d31714b675556786c646d4650656a33374465315957706b77397330364a364f6b514d475662366756303432343766714b4e733148394271592f4d763841354c546256373049665278427431633956314d393875457a4c316170316f6e6d56504f6e48533261716b5a354a566b696c30376675587a634d472b786d5577733134484b34374f6c5872526149574d477176527748314f4c63473668444864794c46556656704d306e3150564846665736725534556e5157796539626d5831636f73764c4b674a324d7161334766494f705648394e4532666a6c764d565a6b78796a437a71524b4a316e4e575a355a7958736d4c67587a6c7a385434336355664c6332344a4a364f365a532f6252613563552b7a557848474a574876366c644155317952416a376d785458717a724835772f6f442b6d334f6f67624358585a6d4c38554e4366646f30357146523353354f73374b6678624a2b5949746431337772347a687964507652476f482f542f6f4e515056435a4364717366496335676642646a576153463665476b4f6657686f6363373659386e35426452507645524c37396f766b3067616165556530557a584f65485555505434394a72655655496e736b553257756d66506f2f6c6e7961666a2b516e532f6246345663334b315a61327a6c425644793279704d686d4848516b48766432385732316a786b62452b435a6e6a6d5a6c4d37446e6d5742715568374f5979643979614f307673656d6172533042536d5a6236584431617043353061637237465357394a6e485a7a6e4d353669634a744e766a39475176507276645a556374734b30612f774139435045386147706b73796f597a2b546553743158774a6c636d704b546d3469737955564841306b505230644b7a44363276456a5468363157564c466b54392f6a6c352f4e44556c646e5a7566734b595a444a6b7059702f782f483256656b504a424e716e4a3530434e2b514c37424470506139656b33596f576a5135794c4f314e7034346e56316c706172656248494759633955374d2b58696b4a59597938756162423973776756772f413049316c7a787a58327a315744446534476c34724c6e6e6e52527a71594674303669547049634f314e33716d7463504e495072665839306a677261323335794c51792f546e5050506d69386758733672654a306266483635394b2f4972505069324350506b767974684b6c7271356d3637436b725358316b70424467414b584b6f3557622b45445758776e7933314239462f4c56562b44655562476434394578737455565862617376664a7a633957445064347852354653316d5357666a7777517442744a70507947794d78366c4b5730586d496d4d534e752f412f7a327a345a303548716234382f4630746e324d4c7953665775386b7a6458542f6e7173336c4131776b783638384d2b6a784f6a7257444e48516469652f4e4d7235614b4d2f642f6837787652346a366c34666e6e6a36744878447948766b2b62464c3765614c513856667a765964536a4c67476a567230506455786f7731424566456943786a564b4a55304536686555306d4c5a6b5457327575775551506d5544305269714f4b746d6e44383937714d31566455656850384148784a767a3648437a3949495857483965594f424f53714c417546644865746a753571786152336a4d6a592f685549477a354147666c635858354b754a796634724e6f5a787338664771516c31437942446e55684864793442454e41715971346c5349676a7a6a7951484e6f6a6f2b326a373056454352586d35756c303954574c4a6c6a56503841574568657745546770346739435a43314c6d534b6c624b57397975696169754856545532797552633436327a6556664973304877316468495a2b634d674279383065726d615a4c556f463055583138306f5152484b6c62325a7848314f524854396e6d6a714253694f44516c464a56555633434b42396a444a656c536d5368774b59687747646d42475a4d72327a7737385679317935664a364b593756736c4c37736c4130444b7833317830426e35504539314147304570615642744e73324847302b5956793946764e4e525a7564576d4a73722b354568324e6b74386a6e6767543868555a6c5874434f376a4a3952692b3955464e496d6c4e4b30324951497744732b6c2b6d2f52672f6b763272364863556f45744c436c375a545630707970307468616243594a6538676d365562516343566a777741467a33383251706e367a4c776d6a52324d504959766f386b6a315a3971654c4f7a5a636957466a4c3279753539684c4a324f45325045474e42495469437a374d3562624f4e33634131656a564f326b556a546c6f6b7471677066307270382b4d7068493559315653786e32656a74335a457a55416f363246325935696a347850475148766161316d36796a344c4a646a4d705936474f69534453532b626c566453344d782b614b2f6a4b696841474a4c62374752757263356c66543646746c76414b3339717143614a6a327a4a6f5a53337251707166536c6961454a56386a6173325238767966522b4f7a70324a6b2b536e324e7257625039636365313568647275746876493356784f2b62625937764971766e724a544a3445436a737454714c4a524b557543315470706e55704e7257653732694d417678504e456a7458795159416f30735369697167785737486b50366e5875576850577a742f39505a4a2b356e6659554e2f416e64397852456b4534527a4e4135613570766b706c3762384c487973766447337152504c377a506c712f536630794e6846784a4f7068476161696c514754477941356575714751377a397559613551665a4a637561696376342b6d6965665932612b6b7464556f6a386965636f5039326577366962386f4a4e6f4f566158366d5a39434c6e64494a372b7966786f526d4b46444e4737764e586978487446464654453956775a6b7353355031682b4e54546e534137765348513749774a6f59484d6278614e4452756b587971754250633757626c5436346a58434c76724e514537522b7037445035672f524b34474f686b74776f6a597271616f6c2f4b71796672724f72363674643266436a58584272646136576550506854315a63424c54436e332b772b484f4d7a4d7a3143494f66436e6771757362586b3348446f7752666676547a72494d33374d476635414e484f35704c58594b754b46396771704e31624a6b6b66564e674f636e4d4b586c72343170526c6c42777338626672354e6c705a6c463073693653536c51342f37314b4c652b36483476387a4b586e7739735935557a4d7a4f5a4268715a63534f503645767458445270327a6465554e4d2b65484f4d4f344d65356977372f4c6d746c4643515a3030704d4871527756706e2b33412b725670467175574e7971463046446352706b68476d687241396c5843717958794d4f48367130392b6632536c7a374c766a36387669435547646e467a44384c32524d6f6e7430595a672f5765323063612b5461704665664c6c787436553572317355444e36543934683775664e5143584144365247647a2b6174526c76446f764567653177527a7936336235326143654b50342b52732b7651494e61796a6e777030676d37396b665944674469386535326b544c477150692b456969525330615345757a596d634f6e6e48633653316678734a5576503272345879413171772b5672414e3131636c32354d344c4d314d4b717a7453747a355256322f4c6958525366315a364f4b7a562f4d54436139633776306364424f61704a3848674e5650743447664f456c4d656a7a707763344e55756a3735593531775355354d65614b6e4c6e646d354f3461712f394446426d73534247494a6875426c7a4f5177345a3255664f2b61654934564333516c6a7974504e434e3131356f74634a584d6e7a746250597070492f667833735350752f59545441345a526e7956614477476c4d39544f776c6230766e344a69507a59374658726f495a5a546a4c555554474733734863316b33772f49314c674276556d443661574547676970664b546c75364f623265334465396c387964726e484169706431476c41527341685678314b6b677343486f5641704d79484f536b2b4944536a306c31314744623677645769485048503471666f6b2f774232653734324e4d412b5839306d4c75464a396a7155415461332b61524e6c3864496d6d5934616f32546b616d55525372637253573470702f69712f547271422b7a316158423743724a5166584d4b335149536676693249686f645a4e6d6f444c5853536b364c555a7338713364356f4661734f516a78326f4c5832384d652f3841514a4c506c4a67474149564c6855736c705737586369723471466856483264427a68634a7042784366636b696a6e2f5866594837593130333250686d34354a426d637a4f68585a6d76346a4f386462792b68466674625a5553346d56746a717a6d733552714a57796c69582f4144304f4c7131755534564e4467474830382b646b326c49696c4768617745424a705357355643646162554f656f6535796938676138726e756c6d617470664d7a767746377a6f5a38673842712f46414f3254366c387a37414676523543357a2b6d6d4c50466e2f414835636b6548435042546a2f4e7758473470706a34613079637041514c444f78307557366c72716757453576527a756332316877723045547a52636f6a597632752b6a512f6f7537514947444744326d384259495267426d4f757864596c5251787674457a586e30537946325170494d36546c7362446f58784e316e782f2f4145357a34505941746b4548666f433147656458474b7a77786e5646496a4f393945394f6859785154574b5a4533584b7874575a44535355764146444f592f573738726d6643496b446166566f6a7174614e6a62726b7236695775666c33776375715174334c6f704b43613875397353512b316f4d61357868396c74544f7a7a67444c3930714a6a2b4b7458434f476846313647734246334b495070785346782f7741793166384161464a393673706a5374793367784968536c494d4f30715171496c716f41727039565669484b6f73783870387a376b5a337a4c4b6449793571614957494d3158414242416b3273346444623341665a70696c6b687659556c64736a4959694a376f792b797165725279624c67634a677964684e6a456e4e556c4861723364447258483075414d68544a314b62655068717a356c4e6c2b346f374d6d3749346c5037536965756a4e557837486648516e76614f694b6778416d6134754b357741524c496b4c547130303258314f626c3173586d346a4b34746d346446433139627542533776534671383234766a466f3572436a4d5155343264426b356e474f34505a4e797a4f536b695a6f574d617537374a6b476673585861584353745553656636782b30644852466453754a6e415930715770507943786b424f7a54616871546e695a665a4f3351687956382b664a752b4651664b304a32524379656e5737485a30486e623076645348742b494b3536524d423839374b38303339656c58464e7250756c582b737a6b31566d666c2b2b462b5439705336745279334d414136436a55482f41467a6e577758302f77424134597158586c644633716b6a6e527a5a634a6f727252527955352f73584a6454634b466a64566d77756f4752724f494a4a2f434578384f6f7741572b62566a70756774314a5266557143586d5852326e376e2b4145464e45644565667a7270574a305072713451753552506558792f722f57627263732f6c6e37423265504a70362f3841443049704c4f373874664a7a76716a377278415855764c676a6e716f4b69684f6f306a6d6f703459545a51746f556c4c6a6345524d78786a674355535047686f7a6c637137376442375a327168424d6437394730714775586e3378784d567968313076757246585a77495846306c7358776a366e506542724f3570664b7746502f6a66354b6758776c483142315a59424f766d515939457171584d6a5a385478597a6e75434e4c71786e4e6f4a6b674f3651644e543038774b35494e4348724d6d336b7748527061504a7459615a56574e4b7a73704f4c502f51734a53364a2b544f47595135545a39674168346a365434516a4c64317266492f354e594f705142516f545a4d324a466d764855707933343550466a5a7934617666396a33695a6c2f56743976455a36464b2b4a355869304e7a6536714e72566a67343647562f6570566f4e4e387574523372334c374f6b706c2f5847587673373757657746664c5248667a5a43434653476d572b37437971562b36376b586b4f58564e6d543750475361556f6b774b3968566159534634724b6f6b2f574e7957674a65797458316f42486a2b66575153744f7469436b65637266626f4f6d7243365437766a777459357746706650705a39317456553155456e31775542395530715a33416c4a50777051374c53714b474e50646654716e645a4c6e7a4a6b3074635368315450354f304c536d4f5034532f526d705579563266444c3743494772347466556864392f4b6e512f547352703256496a55396b5133564d7031553252613036466648376f57632b4d783969686d4c347179344c6d48624d52624d635967534b57654c37713055706748394b6a304b746a734536672f367a714b556775326f5341724830547549435071544145324d72367733505564654f504949356c78316436317257394c71702b4d627342737172355031705a7a4e585266323431664d537255645032695579716366336b356e3279624345713848395362764564785a7056396e466f31624a74484f3775646a6f7467656c4e434b632f72356c7a725a314e564644706a59343661546f374d723667744545317a452b41334d3857316f504b73624f3373516b5671306f73787557546558566d447553636174756847554b696e735439636846582b2f363377687a32416674503841724b5a7445347450415357656361364f6e4f4c7a554c785535722f6371666a795735732f336c53704e5079395776334d42744a6342487344674f3459495a514830596669527875303957563263304b32475a39396747756b6b4f35525437754d35316764686352635959384a58442b4d2b72352f6833534d5431746a6d6a7a356635313964395242726362306a4859522b7649506c317036465047586c374b4b486f556765516c7838587562556e3635457163696133396d6247436c70677a6e394d33786e414530342f70524c3165614f2f7a374b6256495569704a564f666257686835702f38416353776e4f2f6a31314733697a45506637766d424b514a4c62632f6c39774b79664650546762356e6863746a45484858654b696c36704d63566372786c4a3767362b797062736c6e4f4b2f5376305875542f6b73564355784d3578505a4634737a2f546e53574e6855354c464e644c537633464a53756d6d5936566451735a31674a4c43645a422f39446e423666763933363933794a6973786d4c54533166686e357a30745776686a72455a6e505a34427864342f77436e624f4e6f6f584a6158587263463146494e716e497a6f5849504b4b763058744e6242576a3939396f2f5844686d50784c5a2f5338306a64476e615a342f61767866586c6e346252786930646d772b662b502b6e48564a6e2b587839362b38534938375a4b397443766238377075685037536f3933786c307736423939706a2b2f5a30795073544539597474356678642b50346669322f4b4e3052617744322b4d2b6b627071493961754258784c5a522b367433363777435765506e7670667968594a6e2b4f7556676f5069774d4b656d5354457638555445377574636450692f375a34664c6a77365477343843504b38442f483563376856443466564e312f4b583854564f397875574654716a714d43393374366d79345747584f6e337454506d377a33474c45545057307a623873634a37764b59343831592f4e2f7547556670392b506a702f724d353435614d695071394776626c61776578765a64374638375550512b4b6c667a644a5a653847526a38585348706a2f41457a4f4d786161322f6e7574397473592b662f414f526e4434462b4f6350334d36502f414d55584d3571755735374e6958736a77366756476d684c6c73547962693941756d4850622b6d474a7444686e7a69307a4f654f62646e387638586a2f503742656e30742f4857646a61716d654f4c555857756f367a5a514f654b6f53454d3542425651417357714d4f4c6e534a6948514153424c515477777645526d73547162717831744566307262627536383366313462613772435376536238654d74625a577a2b4d385458383056714c4c49334656526f6a4b4c716443576f53476a513466776d32686e52392f76397a4f6e387a666c704d327a78746d763566303966554c4e394966783851797348387751367843666c675a71356b7132416846333157744548633678663152304f443376584431457a6c474856714e583954474d576e336c767938502f41433575582f747a506c3264777033305739414f71504f5a6e6550386d6548784a7a4276463051537a76346b6e4c6b43726f474b36484d35372b6434354c50396e7a645076472f306965577470314f62504e47337048446a34543858444d424a4870582b4f415269434a66462b4b34667873366a625a4c5331395272624742746e30514a6a69464f57705837393352354d6b55653054392f39526d317658385854682f442f77447277457739482f78312f6342756b38584e54553251543864702f755069616c57543078524362666179563430314e656c5836585566736137356755492f30695a6e7262686235384a7a385843307a792f682f465877774541394550787552576c676a6975596454333961476f4c726548324c51576f703770694e30725072324f344c5673427650596b6c487a394b3931367a476135314a32386537623265615078647670385733766965385938394150786c61316864787648574f39344a34594578437a2b31545633676b37692f645558334c7442696c6d62754b2b55675638493837336b544d786d506566376262657339643232664365465a362f4450414a7239455078743754335457764361786f31574f36476c4767554a7a6e564568337a533936795757662b572b5069794e71663035507967303170344554615936577461505766486a4e666e2f465077695366526e3856585030465470385a4f6e713742304f7a36793356636c70705464544f776975623745387563743767582b78643977666d573376763779307a45526d4e53324a366376587733563656366472666272474b397261504c6652763861372f414b45514234326b656648616751753474476a4953794c6a577647676674454d726b694844365a2f4d6c51662b386d682f546d6a6447376d722f4b652f74577874346644626a6e46635a6e6c475a2b68483477507035386950433245686b7651427568343861354f4f37522f47392b723166376c594566794b515073424a415065414c414a6f6e5762577a694c637476693438767a356537347474666b5031766f4c2b4b316b723433352f6a7245636f6d6b4d3944534630737a6c533251525a615266376b6f4a43394b766e41344837575269465076364367546264473364573031743633646d4f2b656e6445643974334b507739492f787250707a6f646730736c59765546544e564238675251697269765a43356e526c534f58645a385a68385842427838502f414676614c6b7a534a787576614c59357474597834387562627635313567786236412f6975726f54727a764445464c7755536879334b556c6633584a69674d50623333554d4b7158696b6c3069634456415248316743372b6c7078504c6664786e3462644b31355a2f77432f7737752b776330656a503479764153544c34784f686b4a46574337497665354a6d4d6633446b6e45434b6757437458324441692f39696a377750622b3032695a727433563864334e2f4c625776612f5875786b50552b6a4834797957553655324e34647a57366c674d31506d692b61623970475a774d746537702f4959783243376a432f5174716478763841754d756c5762637459694c62756250346537627438652f64302b482f414c68586e70482b4e464a2f436a4a38566d727347434a376b756a6e6464416d7433563571324d4666746e2b6156597434766767494b396f39456a4c7049744d31724562766562752b31636638667862736677674e2f38414d522b4d47744f4e6952777554524431444c6b626e766a2b63446c52525a78783046384e524d75465a3949674c34715643485158376636746e756e5535743174317476574f5847507a6471334e746a35416c6236466669336178334c734c77367775664b44575842415765442b536c6a724d33564c4d666c442b51364b75724d654a4277382f38416f6e2f75316d64474b6375706132702f4b4b2f61326332356f3574324f317a527a4166572f48373858587a554e6f78764657646a59437154736f545176744e45335a2b47354c682b75757770376e70453138416c7076506e53446847503959623778475976395069396655512f66384178772f432b3653722b575634724e546f63516e6d7365756c54517455327830726b6b4a674930646f2f77412f667866654e2f3841714f414239366471326d5937553174506c772f687a6e50547079397132323232764565575038735a2f514c786a314f383477316551597473324673736868314a6f66355a6b745749646c4b3779707a4b70417a382b36667375656c3877754a744732344b66386b3144563261635874544d786b6144627537364559726e636d38775a706d6976586b6a79394c4450514a6c7a5048364a4b4e616f34484d6b6a45717471686c6e5436354c4f556e6d703449575354753272463436523145626a395466516d7a756e5452357a34316f364b43306a6f5433787861333755693533446b7578704145466c4f4d756c6f464b4853503466686d706170612f3548354875372f686b52645071742b50644d714f6e702b4f3638685754576a416e4d4b7a6d72565648394e3956744e62326b755761794f686154506752414272346a6b396152587964742f78666551584431462f486855456571473657344f483542706d32696e43326f38366d714f53656d6d6d6b39644c4e5444466b444a587a4969696548546e6e2b7a415a716f53446266384146393541592f562f38646f47705a7532342f324e656c733874445a724e56574a392f57636d747465446b306373634b4d584e53626b544f6e736e564854473433325541433569757033546e3138676f7a7a763068466b39655171566e47304c34635a35477056613957523542515176376c7a4f547a6b5a2f65704c76446c64436e33722b784e384458682f5559764d596e6f4439507144364a5a38777837573968597a4d366244314a382f2f414d49314c496d6b4574556664522b694e6b5062686d685a35657867423973326a4d7869307441613454694976482f734a532b712f6f5931436539496933336466486950787342464e75687035564f4c346c34313365353541444f54725337534a363253396d70626e554e4773557a7562397164742f786665516a6a6571586f564f6e48316143314355325851586f486a2b4f616d4c6e2f41434f346d6471506f34726a6d4e79382b31337535504d533657377961545a5950764f4e4e62396e72416332656f333432356d564772597338755043386b4b79426e654a7a4e576a756d646d74704e7a7065665670427055574f6457316a5470575932646e536c4e6e416d58474c7a3467544e3570364c6255316c56327450746c4e7878456e4b6a446d426c667845396c41512b576443657237676c394848746b4d796d4d37484a4875744b5851436563586a6f4536642f304c3061713638577a794851303353304c586c352b61734f4a576e526c47527a6b574f4e54745374446736624768565a32696d776d513353564c6c2f702b30395944342f4e76516e725634616b3672616f577a655263366b786a70307261536f3074697137536d7a304a334e414e5a6566534a47775639725050412b733661684e692f5850722b67473839512f512f787162366b5735355a6b6150494d54614473506a764d2b2f5534325748542b6a5a616458756a547975783351374c396a2f414c464d3064476230314c6e2f7074766272362f6b412b3336322f6a6e6e4c6b726b6631655a6c626c4d484574797173657736427a495a694e6a716946426178342b6f36456d50663877704f63424f43354b326e4d5576485439524a7337316b2f485836744f6673556f524a444a6d356e4a4c664374716c4d3759313356734f625830593641757169685a6b30384531566d6e7030795530782f4939595274762b4c37794d62665776386570483152624e586b625a667155364261482f77413231724e4a50314a4d6e524f2b7245737a6e63737a334c6f436370474572764a76616f7a76664556375a6d6c2b36632f3930426c6c2b70506f6a377241693863386e6f794a544b6c4f4e79545a782f494f523571557a55582f414555766363363159395767695755646232732b6d364251304a6d44693432323772435154656f766f30472f69364b2f46764c726a4f6e41717a784447685850426b30354f506d38315a4b564a3045617371783074514e4f6d6969684367305573464a4a427976366a6262474f37774458573952765278553946592b495672315a4c65764250754c392f7a6d5571473941727552734374624278355236766c626863373374414666444158446e6262767341576436782b696c4f6a46516a4e386876727464524a7079636b35626f556f696c7172794b4b716738694b57584c7271324e77587558396d6d63395551556271676b426334763478362b672b623371783448435653627646664b45356c57684c6178553247564f634f3148622f45616c6836724e4a7a317272616d6f445a52396d6e325146785a70563046785669746f3654674c55372f414b4d456a575a4834483669564b587764475078696e787969464f7139755a4b7a4e7a3479517876386638414275616c585032766c6450485a6f5a306e4770443576366e62663841463935444566552f30627a3261486b515a2f6c7a644b4a4f5254354d4c76474d52325854584930655a3147424739795230705431703931702f4a54503957747965424f445566433574766a626e68363867557a5057503052633637527750482f414339736d744c76614b6449504630304f6b697873334c7278386d6c7a45735a682b4c39534f744e314d54567a556f6c47655a61524c6c6473545730395a7943666a4871683647374d334778654f2b70323043315a576b4f6633786d7974644e2b5671344f5378455644367175334a724c532f6570524d7a345944644543667466584c53524d30743362592b346b3076714c36616346364238443951356c616952647a42445061624e534b4e317a4c75614f5670585a387965447258517155766a525076302f314d5277493634367a576678524872364146742b712f6f75445a647a4e385238337963664d696470395371422b68792b4478363931475955673354747279364c49312b36527a534f5654592f63482b6e692f687474762b4c3779427150576e305a3036382f33654d2b563952556464574d46456d516d6e5855376b6238366a5672347450747543697679434d754c6638544766536b576e6a6e4b594c62663858336b4e77395550526e4e68677a5865462b6f617559326262536964654f2b665030325530782f7a713643324d315a5a493053797a31712b31394e4a54596c536a366c594a705732332f46393541566e7266364f326a6a7564347636673353736234786e5a71633341696c7a38563863535479447a645a587462526d794a6f7a3248383969614f424b69475432733967547a736e38516c4850567238656f3145755878337a49733674735337704a737036584f4a4e63732b52512b644f65626b706d5358422b476b556c79643064774d586566515847322f77434c37794d73543159394374557333347641504d716b4c48746c3268544a465850552b3366316e38584e5161477a6f2b797a787663535258397461356d4f4d6a4a5a4163452f596d742b36324249352f55373055627968302f69666b576579364e4339617a487a797368526d68735452313736562b50752b53784e374e42326839687363786a4e4732616669732b576433395474762b4c37794d6150794d2f485a6d4f2f78313369766b646166763250794b6348416e3865716b376f654a32667732584e334c6c4d2f75563673612b697032665452577177316944554c2b553432327a352b49435a5872502b4f6535733637637948316a307337554938392b525269564c386f58653878625152756c737445703136304b5867356131302f5a7443614c555370564d4c4a6d746f6a6a747a346732667252364435775764747950492b5a4f5a6f74756e69586a6a343730614d71716659556b397149675659584c7031352f5a654c707a6b7a5a6e372b325030306c4e5862654f6e44366844503964667877703557766e6a506b576e354969436471504a4e664f755666543358346d674c4a747750744b5135304e45377a62556b45442f41505146725068794866314d307638414f6f527639646678326d7967685a6d6554396a516a794c52375648687573553947727679755271354e424d6d716e30706467724a314c54794350372f414932704f6b6336677163445a62506e362b6f6d4366577a3863616448436f6d3853387633612b6837786f523431713573464544354536435a7837563768654e4f684f7868574a70757a5164596d6d35557a2f72736d6a5a627741575431312f484c646a446b49656168324a5765546458766a6868446173623536554253765931684d645a6d70704c58534e6a6c4b64486a49392f4348366c365a6d6c346e6f444b665866386268304c352f6f32564d6d6d30307455575a33487a4d6b475a552f5558542f7741686b6e50395335632b4f3139664a30546658544a50324e4e67534a726a5a627747486a2f72722b4b312f6c65546f7775334d72536e4c525858566f35616f415a6f3650632f472f6b56436e34325556564d6f6a71653977696c507770424f65487a57576d6d6d706a6847426d2f31622f484263544d6f4b50554f477462526d6b31745041746a4550484d326b635450484f554a5174674d6f33617844325677476b4b584d537876327474335932616e584e6630427650395676784e585a6c342b6d6e6677644b6436344b5a6b5145334b3237697a6d5930484d2b4a667954353069394c586a62515441545a4a32616845507a6c54534c353236324d2b763535434f353678666a565330304c75387434552b62466e794d7a4d44794451737a6d5a7664417a7a4e47455978792f35426d686d35667a416f7035336870664358766a756f4e3762614f6b5942576631752f476c7249614d2f663158542f786271356c78593274707566354b315242466e743866797a664648563065334d447362654f446956556778426937355779336747396e724a2b4a2b706d54795a666c4e74483361613934787a66473947724f4c585634757a573062746178387677513164334e72503738774939707a51615041303577425538635454556a7258372f41504157316657443853394f634664302f4f4b5131763439616154776e35427653692b5a636a767254304176482b4b584c7a375a4875344d724a7a3462676b42636349527331664341743331442f456d385762746e6b2b786f49646f48544d6c2b4a31486a376d51756c7a79757959706f796f6f6347717a4e46332f414841574935563332445738546c544f33566a683365764d506a395750785a66395250504e664962746a537a7159725431614e44374b786d544f5661736f3161457235614a6d5a736445737455765074533676472f7741644e384c70663662622f686a2b592f4d38742f464f4c416953337a37654b4c2b62754378576a346c642b2f496664695131356373764d727876745a455750596e355170703469644166714e3159546b77474e533175794a4b586e58346b5a47697a4948315630456f7a39554138655a4a6e70317772422b6456314f6c56697a776a3164333835434e36446c2f2b6d6675544a63535936414f7576503841676b502f41427a7a4c38574d72516e457655542b4d707751424e764d2b4536644451506679687a6148534635466e714859396b316c476b323335612f636e32544e5163505777357159314936563966595a59336e5834705050646471657057464e6e7652557961612b472f504c52794e6d69584f4b683349592b5071544e6d7a384166355654666f4a7a5850486a516d596c6b5447703355466f6147782b4d6239746c7a76554f583473684b4a343331614956737638666a434d6261366e3332644c447a78482f78747a35616f2f664f6253596436416f5251706a562f414c643856792f7879305a3254346e724c6745312b676c486a31754c674865695778453332706b3657342b727331454d7359705355666542374f346a76732f626e643941617a766a686175666f4c44586a2f6a31497042532b70754d67786e6c2b6150534c2b5251745a746e79365a3179664d69697963736c6c3546457a392b2b73477556544f63582b4665623850322f3446696b6e30576b56614d6e71313459366273724e70476e4a707932747a724d746d6272333371364379442b51616e786e482f77433435507a66756e3774627141664a3734785068496d2b624e36516164467161505637784851707637705a3670322b5455736b323074344f707a52644e62714c4771626d66517355646e70493373705759447a686a386359762b482b763968646b766a48704f6c4c6f513836384b526c394e34725448355374436537576234396c702b4d7262375142632f7742707a724474617a34484d635833306d382b492f71756266682b34735878373038395074504d78306a366759645748754a704f69575269744d576146635a5a32686f54584a7a6b384a5a7932644c2f483633516e704c347166714237714b7a6533346343623550703534487436314769337a76786969535a78587739396f4a314f2f616c586d527a46796d7232436c6b6851394a6b737168615650733672324f4575784d7a6a4733454333596654587876546a557a4a39516343654c5334396945363045643743464170364c72394a6c78737a364273714b6e724134787045373750784b5551652b74725a2b482b514f78656c4f64544939372f41444878756f666375343243476531464e6a2f4874474d745a712f6a514a4a4e6939523770702f597351396a75673446752f6362767965763569327372306e7771586b6d487958452b77396e66735553766d473662746c544b623536353345593079396a5438512f4d723366344748764c725664436d36667754362b677572776230302f68325437464e7272467368516b78412b4c53797053382b52464249354f4b6c70346d4d2b462f38415241506d50715641526634784f3630626f72792f694634733650464149632b44355350394b3650363935384166594a634965644c39634c2f414137374f393538492b373345496a2f414665312b575a3035696c62626f323971324f5765623856637a4f793038612f6974694e70713936392b713650483577385879725868763670536b3231654e5a71543432643179357a6671635453746e733652454a4a3530584748754d4446337363746d32706531372f4636396669372b4930686d46387046654b3153395230344e696d6c353539513233315436736933564850573055696b6f5779635076772f49464a384e76624a6a4b52484d34563239675664446e61562b745643745047446c704631576f776f3239543071675a6374546858536e76534a3379674e68484f6968674f6d635a6e485145724649655a757034304a6e75687939495a38566d622b6f464f2f6a6e4a59637631772b4530736a565a78637a53642f70424a703631535367503135553636327954644764303849364259395646447444566f4f535655684d574f5750324d6c4c70732b5553464148382b53304f63396968746a415662444842575230616d56552b642f416959754a4f565a4c4462536431625546385054544b486b5647304458644e416853482b617a614c516d42576b744c4d61464c394b4a774d633234725370696f57674e42556262496d456371705979567166595a7a3348535879755076546e4171442f6f4d6f32636e42542b786e4e6d66637155576b7a58564972756532394978396f64612f6c41352f754c5045772b56715358386b496d6f33546b6f456536393165465264526c6e71356e77412b47784976444734774b306c717276636b6a5a6a754f35306f41766e374b6e6b624141502f686d2b63546e486550674b69743130786e2b33424e707135595a6164444c6f74513533536339714f3652394469393637514e49387539736730716154657a57632f7141747035764e4157597662535a306d35753069393039644d4d634433665730644834554d5a4e4f75664b686f5544332f4146776f2b465a744e62544837674f4c7848514d43733057425973466a4848504b695770756b546e6153733655434b594a64526a50485336772b3953616970494258384170425944724b5a337a387972443368304f707178516b31716b78547575356f537a7632712b4b39724c4b4744564c2f7536556368386d4870713674596e77486b77352b534d4d6e386b32666937654b37654e644c657a76714961766a644532344a3832645a66586230724f454641492f54434e764a6c2f30436751485a6e4d795769797146766a6c5931544c6472505a59554f6b7269644e734539487973717030726e56726238776b70514748476e77666279637a6e506545772b4469303379356556426c6953732b45454c575a4d6b397638414b64652f497649754f46734a53394d53656c41416c4c6959336e78385441657257325a2f313975796b495a4256455857685776725573354746464f684e63494459344a334a496d45625358334e56786f753651743444584f74696e6365684951665951367363715563535a3275536736356736584e4c6d6b524a45686c6c4c3966477470485941462f6e7a3353413068623037537a6d4e5971475a38793465545a68727a74466971366836394c6234356b664d6454745178374f78672f4e6d75647974784e61304a7877794830724971387561754b6a49652f524e665957616f6271702f7379754c346e4e31766d34445065454e6e47764a733746714d6d414b7a61584359343444786a4b564f6f7a6d536f557954526e48506a6b444f736c444f3746525039524764524b5044716974737a335574344c49684a7875502f42736f4e675a5079436d6a72644b75616c4f6e733064715270554b58534f573768775675692b59575577696365737558696a6f642f7070623776733965532f7743674853786a2b36514e4d756d2b72515452543131415336477855646e7832614b2f72693975564455376b52675271483267373468505167397441416f63335636557a636e7146494b486a4a56614c355535675349546b79725844654150574d69706249784c34336e49614b54594b5459594149454d66744d633468544f5038776c75644c6b4b71757a33362f655a623361326846373466683457615a5a35492b646a352b4f4f7a6f42386f474852427351703164476a516e6e6e54514356715479515457347848696236422f6c55357030724c704c6e4c335671363265614d314a2b796b326d51484d6d656d6e4c6c43714175784a6c7a4b33747159765874376d374b7171524f6847332b78324a67304750353838772b3933764a50762b52496461414a7157364e684d31425a6c4c7a4130304b526d6273436e305579314963374a306169476461524b706c41632f667459426877694966636158675759667868414c65445568314b39504d6a4f6950516c695a6d734b4a4334492b556337564778303871445962364a3245622b4d7342724b476743306a79697631536b304c424c4f45326147685462714d346867636f363354534c4b6d6b6d63565855677476526d4a5a586c326b516d486e4144387571477a523669476d6e736e746462435136592f583931756152645256397634325857454d71766b596f7864396d6b5a726271476d5270426e6e3538725973355344716d314b4b4f6f57317a4e69525372335a43345a646275664d5130456c77706e6f617a76415748316a6c4e4978705838674f79376c3268532b6e722f64484b736a76526e7467467965322b78744d4a4a59776c68552b63594451774b44596e367742556b584638774a385a5a386873632f4c59395631334f386947725175342f525a5a384e66302f70396c2f5a7054442b7156463872715163637a725073544d63446a4b302b4e67445030646973354d356375303575684737346f447434765258432f517a4a2b696d464d64366736723367356f7059736b78396f4146676a586e716977382b4f5679484a6470556b795a306362644d706e664933342b7a5075632f514b622b434a536d50585777516a50346e66476b7545426b6e6e42772b46464374474e494767766576354c395261653233636654736a4578732f77426f7461583966424e2f715954766c4f6442386e4e594471323859684b34354c624a4259374a2b6f5938594f6879696659342b547564465170456f2f546e63756c427243776a54533334684d474734474d2b3433506d4f364e4e63616b4b5575574471487a7a4246374373526f68555964564f7769314e44322f4f326444795033487761656654514761456d4c6972685979384f72577965776c633156642f6d4a6b7868317657536d537671797a7755653533516e61712f356c744763754961446b61744c7573584c6f317a364e797072555a7257647a4a32694650797a654c31745a4f774c456773645932462f3169506f4c6d396e73373757414b53584a536b7657697164543473666d537046544a3170763052304d365a46644f6534797353566a756f6366654d366e346661546d75463077686e6d432b7734386c38756368694a3153717a322f53666444456558534e46486230754637434e634e445236556e763644672b4e70704c33726451616a7a5a6b74733868534b7377546864336c456156736a4a6655346f6f65755a5766562f453364314a557a4631764b4f6d63447543505453553441494b744f6b384b2f765864306f736d4e433336444273483432514a736e6241443531737a3455727a317570754a5356386453612b413372554e61487a5856556d6c6b455065706c616b3157544750614b4f646e582f4736463779566e776d4c4254435061476d697371512f3449666569614c2b6761544d7a726c324b667877306a593233686f554e79746d5853664b6851304c746c6d70545931556f72536f5157514674715637756d59762f414b42395948336d53392f61553775626e6464486f6437394a554650745a65316c637a7957324251575555417044437456332f6b374647772f6c6a443732364435757a614e48313349315258577755645a46552f466d6e59772b33335542387930664a6c394266656663596b316b426641785358426931446162526c76314256495832717774354c56374c4f366e47516e7a6b30667645374a7149386b327261785853596c613138436b48424d432f5a382f32346e754e4968584c514c4f54393771677765586e497a4f4459686130536f4b697a704d3750776736455a6448357670684d6b4772644a4c6a54584a734d6f4f576c5273314a6b32773870545663544c56556375532f3569614c4c416677502b7643466e77726a4635693041466d575a794b56665375714746625a6c3350656a5266534c3670785649746a6f53434850384174572b78624871344d7a6a4271516d613550384151484f6d75523179493878585a6d6e706856587938592b4b797036536f6e6e71716873447550596d7946617630356f683030744b6e345567327859446e3161544f4a5a39554e4673794b7050673456354b6171663268667132583072447445356243744547636f5372324f6d2b7a4c4f625a702f6e444f6e363846494d5930564d427a5a386939464c707051706f4c32386e4a426b3550305772585251696a3451354d6d6b6d6f63514e546f4144444e3133426f3138697a6e697032656c6a386e4d4874376f4a756b3750684762646d6e36536168304e4157307a7a7264325071586d44484b4d314b6d596d4a78496368387271616536636731485264796953716473585870745772374b382f59706f634c497a5975694f4a4b2f6535503653416d74414c375779417a613762576e537269584a4c5a564d756c7562664245786b6c55626e613056726e78516d615a796e71684a66482b77334f635965365a4b57456f4746674b304e4268646f537964736456556d65317a364f4f304473314c4c55726a61537757586453704b3147326358384c36686e4452497234554f6e6b466f69746f7353437a6b54584f52383655513566387a48566e55577a587a38743752776d4d5a39576a712b6861354b5a744b30562f5453726e454131666f317a2f526d5156522f7a5745503049465551767a644d553665735164732b372f7141577732527144396d6b76687a552f4a784d307a577242644e4b37496b6874797168725649505a59646851415530744f6d776d7157742b584d75646955355a41746251367a374845384974493273442b702b4c6c2b67693969327843374d667a4e7a5a2b76315a6f6e35732f74446462514d4e6c76566975376f4c7335516b6768704b6b2f694e3346755366774a6d6d67454b4e444a53495731586550596e6a774947716c30506448517552724c527051443076594e53374d466a63477a6f3949706d6c3950357a4234533973473350352f6352326973716d7855356d6a734e79785175384638592b4f4d596555366b3566596a62633535665050686b4832695838776d43754a2f5851417636742f483950554250576563475658587976706d5541726254433836455a4f5834786f64722b78476e715849304e52544c4249425a77557944667965693963632f2b794b645a2b516a757a35664c4844384b4c7630706b58593953464c354b6555446f554f37557a534c5a734e745731564f79685a6c2b673939446a69466a6669515a7a576e664d434b51374a65614879764d6e52394162587172386c3634724e68346a506d6c55476170374357374e63346a5230526133376a676350796e4a2b77374d5669735a6e69436d4c347a73356754773053614e4e45397962474b6d6d316b4e3130416c6b4674773063724c2f414d677a65432f783141763474616750566155396a68674f735a6d31666d4a376b5931326e34334d37576d625733373279686c43506f766d7a327771736d56384b6c6a504c61357456634953506e34756945412b49654c55762f626e7535747766347373654a6f5767414d546b78506d30756d6a4f6958594562644f7946626570675738716b7373686c594836344b6e53753431797a554b482f314d3969767a2f7548555a6c3036553537414155305766616f4e696675325a7478316157584e5133545159513566752b764f49542f59615155743674616b6a4d5061444e755946443573747275336379644f7137754c54375064517a2b4e645a6c56347a4d357431426673736567574e63314a64525a374841484a4863584f36633775384f38562f624c4772424576595363726d6e4a704d79614b31775a3974774947505070576f59592b626d546e4637464b34564a5578312f5842536e44524162644e476b63386648756b61694a4a515a39616c5a453452555236696469536a506248577a4a63794853583058382b50336d5a7446314c6b7545514c557446383077564e526e75696e346b4b6241796b79386f4875696455624b794b74387154724c516e59494251667a2b394b41613031504d45747a49376470386a2f414a5a675a3468516330334c736b506b6c644f35633472566648395451536776762f48514a6459366234364f653831484f79316262666c4978532b4158556534724556613674735a717146546b3165527a632b69432f35573677676a4836386458554579774a6e56332f615a4e7a35774f6d6f613930485457305a2f43743752454862494f46446f3535644a72373672526a3165786e777271334c5370704b583069396a7541326e2f6134516468646369465434744b4a794d714f754d4f4359426b7230465a5768794b5672776f3732696f46782f436d6b427361674d6469516f4141706e4d4232784441656871496e756d742b467a364f356b39486241464f6b6866756d362b316a70506a6e5a52596c6658413732574752634e48622f6854623450722b6777386e6a574549647a71345372637a6b2b7a544a716550792b7853624b6734316a624845706d31786b6565354b7a2b41763950754a4a65346d5471647142794f2f4c794d382f793378456c3552316f7469624c644c6a3163306e547173706e4a744f764e58503265636c66497433614247755a6730706543536f46764b65725437784276784d69666d656f65736e6262526e2b533533697572512b506576314377555033724d7535636562534b3538353151334d793353684d796a363338746e42542b6e437552725536634f794f6d6564797639393769553142412f6134347378714251397331615851576c4e70425930474a577950392f414c31433473726b70657a6733737379377562414d5a715a4a5a427674736132747733382b68526b494658486a2f41437a73376b787a396f4c4a2b4570306f5559767064596e396463357a546643364c396d51397a702b526935682f4a6c644f4b2f6d6f436f32523444473673365a2f67317379654f594635344f7838336a766b6135516a557858436b6430555058374d6762644249724b6e706b7364793056587841756563764a44765a395a5544563675626179696f6e535a2f7744466734557341324a2b597a4261334d456e78636644682b763143654d6d644f306e5938695763556f42572b4c48637273466a4d6532324f556647716369724e72702b6d444e5263364f534f4d44565342454a3846584f4c524f3345514564666f4e57557444704b51736b3146556151716e304e5a2b6f686a732b444f546b6e734830544b786e69356838435570613077702b30492f41593245493874685648796d566979315676316442683132636f3044357156612f77426b362f4963744b584c6c7a652b51544a456934772b4a3554396236626a434f6563474f747338784d6a2b5970786b4157466b354f685830454b783676627058537a6832546643784c4a312f486a314a6c4369654d75706437584734674d43414b76797254704b75684d76616b5a7a35336f326a546f5938654b3771383131626446493166615a70547756654e304b6f644d365a73786b44686b564f624243514f7a5372347835365850494c325a646c6d73367a652f77565a585a4444306b664647704d75582f4a6241386c2b596c75434a6937472b37672f58594453356d6234732f537a394c54587a4f6f304a70567373304a5a4d664e4e7437494153756947686a73307052636c737038536e73783067524e4a76366e633678773778416533303378554f6b6b4454457648573479667573677a62377246593861616b636f424e5038547146476b6863697a3551426155684e384d356b366b4a484c58347434396b4967484c4b642b6378794b73394c7034616f713943326f7162493536776e5a566f516c4c704b3433712f616b4d6632526c4e41526662437076354c73394532424c6f346c69364a455a546376544f4844386838662b387a51362f3738542f495855324a47715768697a413651695a35434165353061724f634444784d623058785536506a79313633614c632b54516f38687a62324c6550436a31704d7a4a7a6330343670326c6b756a426f4a37504a4d6b36502b522b4d55685a5751476a35493564306b48503148666c352b7268366b314d646d6a6568735936504937375568386e37597769596b32502b51442b75745879684a51304a44464e656a32685a5a4a4175587663696a55376a6c33503149744367732f726879706e424f7869367178726e4d784f3878672b637a705563383077522b4b785370757a63307265372f63335875612b42584243644f6f396372633356757354307038654b653562714a712b2f2f544b537354514d7831324f435356487843703656325a2b75334e4e494b494a3173567132674733336a4a535270494162696f6a5a567a765866723742745a392f6e2b514545346c7a7061355a33325a6b3274625648436e7378363966694a57387878706e6f323256516a53326870747656376c55682b7564732f53484638543172416c4467562f486632782b4c7a7564437456566a6f697a394336653632334d37664d69684c58704d3566744939736e5a334b585451487a42534857663158665878456f702f6e696766725835665a594a6c64784b3063304f4e68747a4f554e30643939544b492b4e6e792b366d597a376868544d394b63304665342f6b4d77636e6c39684c4b4e7a2f746f6769565a524c794e5642424b574c6f727074584c526c6467422f324a4b566b7a50536b6d436e674f62314d61564b34662b722b712b3738783871794b53315a5a374d6e61367657646b6f6e565a516a71454d55544c65756131646a50342f44424b56707057436c30697462536d506c697150592f672b7671514a696f4e2b68735a6d705070642b75546558304479734855556550736c74706536593030453536703650694166594b7a375943366e554f4e7463642b4861386757726f4659652b4332446d557257504d73626168586c4658417a70747259756f6c6b714565756d3564634d702f386d393373414a757a734e50457944376550796c365656436d4563633254544d7a527262625a72557a2f50596e6b72646b6e3078304f7157796f656c4f31376e7830416b334449397265634d6e5235634f64537465306d5a3831507a543631723031517a664576553278746c3765343231436b763473435848306842356a4c4948472f38416341477352684c444f7a50555935384b73364b5246773163715935656a4c5169612b584c46534a324a35666337694f414b5550796d30706e564d4c686f3642454e624c7a6c785638795955593944724e43595a4830387a754664443166777a56667853532b34536149355a42397051556461354b5363344154394f744f7a412b4b6d6d6673307a4b7971696e2f55656244586e352b7a4c6c4f62516631314d30767072506b64794861476639736963307a2f37446e4e417863436241724c4a546b3045545830717667363354536d622b55324b6737514377755a56504a4d74784d5975684a304f6b4975414733504f51664552413044466d6a454865513571467837516f6674765633556971655272686f53456e5a3542665033594871566e7975314168482f476a654a6e787666706334717a537a49362f4958792f64304d3965746c742b6e44546d506d7a685765707354686756703737625756734964417751524a4f61754f73317a4d6d467a6c39416273386476303836797136504b704b624f6f57704e6a6159646e4e7a6e6b4d57704e396c33316d72544b4e45663841325a466f704d49322f484777723366657276723467544c694c314c674b39656a4a474c36395a4f5a70366d61794c46475672494f3051356d55346672774b4b573536795970337662704d6f765162506d34325a6d4936697749595a32574a52783162644151346f63724f73707a63364749784c44517730686341734b564e6c424d59386b2f436e4873346c56424c483278667379477455326652505656524b594c4f7871386d716d61576169564375304d7963644d65557059537a686f45504b546d3559326a32632f5371662b703762445646396445593657464b31643058775a2b336f64796331364a59415978526f4b616e612f6b4f565a336470656a79566b756153426d63774532465a554b6636443735496a517a3442696b464f504269614b494c6d4e676d3474543753755a56432f546b7a543930745838704c326a67394d7a666c4e3433343658706f63456579705638766930536c734e6b7949504679754b3346797a79613763786d59765470696f72372f473643666847644a683878696e4e455059757163422f6f4e6c7648614b33356248794251754c506b72723052544448725661796f3161464942425a4869306f31495a716e537a647235636569304e586c626d54306a577534447355732f3151706f30744f615a68376c436a613161396a75797a7948536545466a7530395179554c4a2f59545161356e7755716e4435675a43372b6731793952382f77446d39536e37503170362b754462324c6c565849794c6a73676f68442b4f7a53577165653052646f4a4c3550686f7a527a6152717337524a5336683047764f65446462613037465a5947716c6d565475624f7867546a7971687948526e4c5a6e62544842725a595a4f66734b616743464b667639732b4872686d50506e6a57664d62612b6d69596c6f6e66484471514139637a556a6532535451783576474653354935446b457853476243724a5850563156435866436d6c387449684e544d55444a325647772b324562364950307a633776796a62703461664846356c55424244674c597965756a6b62493575737a3354644b6e486151702f51636259476e473339446d74767a34484672377a496e6858665a323876496f2b426a5865517a7431656f564c4a6b757075304a79597570426f4d45724272796248516a2b70372b624969504b63374a4772467a47306f66767a5156345530305655664835586b6830457244777031616c664939475336642f652f564649506a736c4d37306d59422f5638622b5054416565462b4a54415a724f504430344e6e627a376c6d6e6a2b397448514b78446239684f6a52613253344b746232636b446f5268545362452b326b4b41367466756952665665496a5152677855354f33507a48367a79416b75756d2b3932616d694850313561496b517150593253543545776d68384d637a76655366304c544147356a554c315038556973382b38674b7576546a737a36716135663246746c374d3951513831623030355574462b6b545931797972366b70364830594d33426d6d6d6e4d4737566d5a6a694b55707a6d2b50623838317a786d37544d346a30637a5631327a6b33794b5356642f627261386c304653376859775257714536544b6171716c59505932676241396b34506b38746b2b6e6a65523758696e6b326e3553316f612b447a5535436e7831654f56476f6a466f515049787a585a6554374759355063786e2b69784b654f46534b596d59787a6442756234352b54486e48675743697a314e79712f4b5a73324f4450766f384277586433387a45556f726e4876694d7a33697865784737695063616d30484746664744424f34716337616354326639773266394766796b394c2f586e452f6d6642504f31486c30793046566772566b7861734d4f515758465442564674616d6659493838667363787a356b7339376e5649576469675a416d6c71577050476e4562444a4c4f3750337552526c77584e747a38784d35584d6b6f6d56666e35384e446d544d646e64684a6c38424f4434307a3842694253352b55584c666d6a753573427a6a446e544e3558473241676c4374486668677130745a6b37483633565756314d736e71762b4e4d6f71487643487247556779452b74374f464c7535734251476e544c6d3353616b5658547257626176483350784b62684b3353534e7a4a6d2f484775565652614c566b35677437384a433668725539427369527174656d4e4c6570466d58525048465844536e7333367637326c48485654664351727044556a7952554c762b545a325067742b4944502b6757744a4c4b462f655875776155446e636d6b6a332b4e6e6b3074466c42716e73324a6f2f77425832446c704836337434522f544e6e763937766c6a34424c746936616c76344838705a784f493555535931434448575a384c3373505a76587770355a43443433445457674863734667435630334171357738624d6d36564b335135436447646c3757453336553066376e47484c4536586142464e725369503150326252466c42754e4c495a336d626f4a34316e7a47594c7572587454794331565662565572787a7973627661797a387364556d32614d412f52593439496b395576322b776d4a736136596d42306c514753574a682b3870453674436643746b584944645474484f72364d38397252682b3939635357354a6d79586e552b2b672b49704676582b77674e6466626e714436545a3564554d6d446b77394d466741516f5446787454417a5a4662426644566e3952326d5a776639304579394d556f4b774348326b367758596b3273436f6d4f42386a72617262626d482f41433673786f66445a5a2b6c366f55554f2b6b6142562f6b6c5556484b4850595141334643556a7845495a552b6a583165326d534f616f585a7462394f6976734d3663765052636b59714d30587559616b6b6658544d443476637967414933536365773077554f4e532b555272544b316375686c4d7a4531555a302b697169636e5269365050736d456c443750656251633673663949416a45534e5a727462516b314a3878576d61593253546f4e454c69367a54647331377a31685175654d7462334148324349485531706c4b775148744d39654564345731596d3967737152335652503352694a76514572344f3153497a71592b72352f6e39784b4e4b64614b654a364b42706d2b595364336c5a42412f554a354c376a687231632f47576a6c4b4d2b794230547879587a444e52796831795358516b526f75367a6754666163576b33333073712b46784133707938377437324f5a504d53426c3071657a77783079303336534a7a47764737726972506b6c4835686f494f45314a746373446e6432576d635a33546a4765415263774e55616d4e4c7653586f616f317a5a7074646f46566e702b4475517664445359482f624c53353849765556416d7378412f63483035343665516c536e6356414e6c63473770353350716f7a6c3534325578436e6b616555424c4f7a52536176626c7a7035776d7347737a4375633530794f5767777730744647645a703930506a75756f52636f6e6645566b6b796875392f53313648516f443456304c59716b656b7039494a454b4f734f7a722f77436e587a446971367030625944793851776c6c6a30356b587a664c4863447635514c4c4d656c2f774172614f46474b674670644c2f365a46532b47326e6e5141647a7243624a4962485a6a4275656c4d2b6579585258796c564d2f49744a614977695563647452584a344648752b5a786938564e4672326d436555596d735a754e724469636d5746456368635448755670357064666b4c2b536751583859333553482f50324f6c74627639553539644f4451556a3161663879665244566b327659484a653630644b6d3057366965764e39613646635a4c4c495767747870345154397342505073552f444c4744504f417564693765544162544d306568485a336e567130615672547038574d59564a6c657864516e786c6e3050684e6674426254644a304468567a51704b65305a5a366e63722f687143624a50484c335362486e524d6f3545494e7a306e625a4e4d2f76524c39657778535644506b442b67566b73307852794c69556a5a702f44387463314a3663416845612b342f4a5555564c36347032542f767039456e56554a4d77442f644f3534416b6f71534d31457731466d354c4170746c31757671544e6c52574c504e70495a645a374754764a64412f4748736a54503841433334614a65463777496461742b633833494e2f38726d70496b51452b6d4e7343364d39395932384e337a70594262667645765a496248534f6f2b5651743968677751762f6e5a5a6e6f52394a71302f534266334a337346564d386b532b7a5172344a546c4169746c487a634d59416d6b4c396442496c594373466835665756754c756b6e547a5a546f446f56313645744b4f4d5652577055746e614c767333614c6c455a7a2b326877485437776f413347362b596552477542464f556e3470685137484639724a307268702f7743716d7463557a596b746454386d612b6a336c4e376d316a4d5450386632436d67625936544f712b725a72547949747a6143505a713065676d577062594443696a6a765a387a4f36476271444f6637417848397a4e357a71693477416a3550355255324e4a792b5738374a673475793933557472374d577770765654746f58516e6b72474a57584f3173344468344b725073683767576378544f453530462b30796e3565357a35587233546a2f58456c55303266784c514a6854746f5a33724f73533050742b316157477639676e372b4c2b776837347064655369796d56716f7141376e746432644a2f756a3341746f75687364384d79684934686d564d61534253584a42536e6d6a546642474537446d4f57716650372f4a524a352f446c754d716d74374430516d57743049304b59493956544f6f474858596443704f674136444b3731656457352f48302b50395664506f385a32326573387779594d51307279566e4472636e306c6d58774d486f71702b46455a41347543474e73624650706a4e2f6276753039483555664c707a457a7236676c32585154706f2b4b6f62744965734932646b39315138426958475943444d2b3572586456506e4f356b5553745052743070722b6a463961662b524f6831593571754353495a334e71555267376a61584b4762354f6461344736495754737a464a64716b38704a30557056417651657875537867486f62692b786e786e74544c70564c65766f6c5958486b773139435070686779687467787a6f6b655075535170616d572f50316f6b55444f7671656d695542717a653576764546396e4548787049564135456e362f6f4531364254557147466738556d433573486a7a74466c3258636161336431436a696853326165486b34324c486c4653574f635a6e4d7358713538595a6d4e535a4a6f344b4a557579587144586f5a71616d6141363071737a6a304a36596a327a51766e6e30462f7270304e4d566370644f4266595934476f676c326d4c354a744b58744a5a2b4e57626a4b56634b7171453879702b31612f7564565533334a3441696146307a705855305a6d63344b672b7846546f494775696d6d576b54694938365a4f707166593530387674663255524a6e5136354d2f77444949706d544f35314345557a47514278546d5776327044676c66586f702f7743725841456a5835692f3477677a38376b6d6376507479656f38675573323576614a35352f597a764f4865325a5269326961324e48395647536f7049624a6257796f31586f5757656b4a793177545a727a4c7271324179783630512b5073613950356c6d4c6a654b5a75586d707a6b4351426936465846547858524a716f6d6c345861495542565174724f50734e4458782b794857707a5966482b38495a415631696165562f43304a4a78427a5a70364756652b3259637444714e414d353574786666506652476a594e4e522f477578544b46336c4f6c6459396f623830464e4a427846446c4a64664d4f5630424774315955574f6458565176516f665a466e31757070305a69732b707a4f6f6b586c75664839772b6b6a6e2b75657776596c784e534b7761524e6d725832706a7247395853792f6b6c645063756339566d6842765a746a70355a566c5975635a3577597966707661373267664246786355474f6f532f6f3230387967504f336b52777470647266394e736d646c4c6c305478565a6b4b6c53705575656471614f6434756d764e49424178354e3867455a6d643056387575396779345662755556357157566b364f785a4c464d736e50724839637031364c654638585842566f4337356d2f614e763941314e45614f6a586b736e66504c484e42582b7070717059716266686b69314938396b774c636f724a36763130366565772f736577577071624e2f51596d754a73437579527456516a4f37587a715654617154522f494d6f5679496453726744704c546f45747a7736302f6f41507350374a6741416c66584c7a4d2b575a5a3556385369525971784a447a6c56467962364a4f317658622f414355686146533249575875704436616a4e696c6c376d54333832516f2b417858466e546f564a5a473946434a4a2b32635a7a7833566f5a715867614c5359476639796a4c7359663744332f41414f397452384e524a6441576348555637436a304c7561477041366c32397846506b484f5031714b4f687a497936707a4770505935313955616c3157484a4d6361486a2f68562f514e3130506f5663555038413672516c334a32396c6653754d5a374b526661517a73634d3664513473564a44567a3545394f796961656966322f4e2f514e74616758516d4563734f535532684a717451734a52415776726e75506c6e304845765057386b7070567756663666754762766c656e2f41473270326f456b6c734c50586e697546594f7a584c3770636e7a7135656664664570356a325a5939677836763473436e5a787270727565795471567a387259745665766d49757a4c3256707079307a352b6335476b656d554b382f374f6a6136666b6678544379706a46444f716571644950443365325839306450356a6451563830384a396655542f785831463366544f76505669694e754258666d52614f5944443557785435795a4d766e30726a356f627a464a68357a6f532f4b54443430324d4e716c66315462753459794e392f45746648387279513238566339544739746e764c33754c73547934383763336c557773556d6676312f38414e6f45333938635a382f38416a6c332b73356e45625a34774c4c684761745267356b2f424d657437786a50615841734d66644d7a6f6c773566625a30694c3943492b2b5a4a6949643458367a455832505476772b39466c2b6a6a63536f45564b66316e7651425630765a7970686b6c79692f59754a33515071772f51556e33334c2f59427a546a4763397167726e6538663948737871367458512f69365970396c457246485568386a4e4451494b41422b654b327a734e6a506839796662386e3350636b516366796d693135347848722b5967623837304e56326a7262715872396a6e776f62336a53306e556f49574e343235446a735977624845796b6d386131557976736b514a495a377a75377341565471656b6b37614f423544716437795a4f6a332b4f7037466f43447a4577524778465239756e5a4f363339385132676c4d2f66776b70365665364d322f4439774130764d2f5331506453544f72314c4f3836507977665158587864552f38417754686c6455353771484d2b54696e4233392f4c4d365a59746f6e4f514c4347312b562b6c66553130687662356f68782b614d584470753052576d32424e4f64496d4c6c484457356f36474743757656316f45355055484f62663841476354345349685236742b48307a364467302f4b654b474f68637376773650462f4e436267757a54362f366b36394c34784a50766f535954686c644c762b445a6e55547374344367764f2f5550427273526c2b482b533775767a475531626b6479516d733754446e6932544e6e5a764b70376e75526e2f4a325a72456654706b2b794245706676645a614b7a4d38335342532f6c4872446d4b5a3961395a5961452b517a5a2b7833534b764f7464347736374e6258483248576a4875663874524439654e79534a504a6e504558437462714c7857493452485543746a38672f482f48396273374e462b6266644c5a714b5645586b382f4f6a4f553761455437744d344d3867752b37384c6632456f4970585370523863485574556d6d37486b4b6e4c386c7645573061427032432b73433030533430324c715071775972716e5a306439386c73616f732b482b51793547506b345643715a70325172366676427a72374c654154702f4962776e787474717a7431676c5974344639363354304a71455a6d515533546a677a682b6d5368306f376b7a6a78635a69716b4f39396a772b593469737a306749342f3562654c47686b4f707065542f41486237464d37645a6e6757645141547a5579364a5870616a4f30785856442f414d7236347a754950664b326a6f7241703257384130682f4b7a78797562794f6d6137646d664935497535463546326d317a4f415545595339464e5645724477366b72456568325669776d584e776d523075544536637a316a494855666c6e6a4a7a552b516e762b5956614c4a636137547a2f6d76346d5641527071586433366247787777736a5a596266313973356b36583257742b5a595043327932635941367638414c534a77555062354835506d61654a51327a557a747643314c323575496c303970346d634a436947694a69397a4e52534574543061537152396e5a554143654e6b2b4d4152622b52336a3857746a43486d766b73306867697446444b4a704672697a346e4c624564466b4131502b5a4b614f526b516657314473702f39374b416f5447793367413076356459695551617150556679763462547369546d4c6e50567373684c487373695a704b35514e42574e70486b44314d4679762b74795570375a70557546377533546239417035662b553265563579522b5236367376507869434c63355745383330704d3863396d587845756b4265366e637a6669374f4a4433366a6a4f53557741766e6e336339386a37622b594748697a3055543365615a6c4c32696872554435447078636a4655756c6d4a7573597a724d306b78792b5149624d48595575545a545744506c414b6636624a3859483566357665453234396c4f6c6f2b5538795a5659326470784e78396a4a757a68314f61336a7a3462394a374f55726369714568657163553030753161552f5a396e7339732b377450546949366635592b6e73714e426174576a41646670664b744d416273546c665048484654566f6f6e38665a51754d71436446537670546473464d624e4f6d476e2f634433562f442b7639674332667a5638467949535a6d2b55655834524648733565713274572f354a504e4e445a50566e485a556f3646796b636574597466526253772b2b506658536446445464795930725433594366667a4738545075613351387538384161745a6a32797a4a31474578453179736a4c707530344c4a472f614c2f78654870316662766e6139507873634a2b3447766454352f7947633335736541563543577961586d6b6c425433353732466d33377531437569325746694c4f5872657065616f6b6a776e304d5073306c4b6f6934734568332b6e7570382f7743516c57662b586e6875387855382b783572626f31553565763063794e557935487579345a355772442b592b59533739465a3934564537766d76614c654c345a545556325434774746763569654935637530695054386e72506d706f5a56532b446b4b30614b38672f6b59344c787943657356776c637848426f41326f306c7453787366373470736e50454b78666d74342f785949447944796e68614d596678586151304e65714c62644454706f78596268314b56753146304f6c3778326570776670394c5a3554576b41546233552b66386730542b644f42725a74747935664e4672736f67646a6661693149346a4b78457476515a707573532f657657532b522b342b79706f2b7a524135326451482b5554707a4164332f6c3167676d6a462f6b504c62536c74354a5a33354761484d79654b7432776e6d317a54754e5767796d70634c335250564f7342634830355a5339376a6a5a506a4167492f6e66347072486470614f7435314e6379625952464571456b41716d31562f77444946745052706459797a724570593136324a34684739374a77534e444b75573931506e2f49563735542b5a6e696e6b6c6463673676715a3544495576376f3266475a4b493737324175364850645458737972374f78342f7759637a6f70696a61536673307a55544d646e2f314d6155783331476d336c506e66342b614165526835544e366750746675617856575064753864504a70634b53544e6a6d3866736f6c526e7a4e44486f5452525332656638416c5a5856394f514f5466317245586a702b6770545638333941644c5a786579654e656f396b656a5643706d316e3567387a636a53666464727772354852373434364a535350315a7576456c73707654595357736a6e58614976456477482b532b552f6937666e70507a4c787a315337396e56762b3569686e616d58706f56316f575554686f6a376e3538764649796338306a384a714a492f586a636e516449566f6938394d434e704c3855597274646865476559304a64786e6b616d4d78397253356a58425a5571316d4a694473464d7376644447776d564f39344f36705856506b4d72546a4f722b4d4a7633767838566f37433750542f414e53416a4374475a6d5a316564735965656739504e796f637a5a65574b514e7177633279576442396a2b51456d715971503841437350687474762b4b7638414f5134317176782b314e5052304c2f5454316b444a74514d4d654d745770486a5236306d5a645a4b2b36736c77706e307565524a7a564c4a302f7a574967704273447165494b6d7650485759474f4e6f2f6a7443327144477750576d4a634c476c49544d5758696d624376496d534d546f343631533657704f4f444451683153644679464f524944544e307156797a7a39654165343278364474594e392f692f713958725a74575a556e6c476c5a395a3847765850475575713676534571484175583754656371416c7a58766e6b54476f4146635476366342387638782f474d38746257654f656f544b3761543141717a5a65366d766f30543647626c5a617174533269523155614e4c55786565316955554f4f59357a756830766c397262712b6f2f344477646a3862594e6e4c5433787679577a536451632b726c7030724b6e6d335332792b78437172537a2f717279796a6f78794e53324a70536b494b776f4375733272632f6c39772b66732f69732b443775683456366c36396b314c4f2f51313237327458436c69552b4c7570644472542f7474504e355a554c57346e61412f516f525653626544436d754e544f4e3066495365447a6a386538584b32644d764133357a6a3362484a7a55544d7974552b5477543635366d63327278754b2f584a44477a67787230325042326b4c67616a72522b4b63586d637a5952767954314e39464c6232594e434e544d6e7a7665325a79354e4b5379635a7035376249614a343746507a316835424c73644653616544326e48346744453166744d7858553863774236504d76515a72526862672b595a6b58645651613961636d587638307975676d5a7a446e4b77565938355436512f4b52436e3636646954765237394a36626f7866786a313941506b3350787757635550385a36695761613738353474354c7565336b3772616a6d794457336157334c6e544b3668534b436d534a6f4d445948366e6d534e73582f4c2f41444667374735364b647073354c46355a57506c434632782f4834794f417a566c32487558554e6b414344716f303362556166733142424353306e4b72767442637031694e54752b45535050395266783054766159684235437a4d59694f6e5231336545387672324b7a5061344b4c733132657a37566934706375643743494a564e70496d6d69366577485274763841692b386872732b71663438577a2f5a77504871354b61483633306250346869424b75546d7479444f7935516c374e514b5932554e4b68465a52752f684a6d7a4e4f663638303862622b4f5071506c6e7170364d596965592b3534723552514f6b73555661386e692f637934436d356f4d6c4755597969354c445156486a2b656f5364545a377071452f5672644a4e373532336e6a48554f4a76557230763130795a454746366d583661624a796b313848784336584f7a43734f70376f475a2b6534457a69466c4f536b6955694f5131665a35432b5a4b616f7a6a62624f633851425435523653356c383964456671646d616761532b4d30664a4d7a545167486154464a346c364b744957314c35544c3963444f4c345a30484b664f64565339586259745064456953586570586f4f796e786f552b482b575546566e702b31425234716854486a4c5050705478347570587348786c5469714c32694d6b786e4853426d6f336537677874763841692b38675a722b736e6f646e75314a65572b64356a617572672f38414c6362413374484b6d666a356638546d7432746d69576b317868633858724c3542374b77443539345a702b2b3574762b4c377948316e71582b50555774382b69666c655a5a514155387430504874724f35514f547352386e2b7a5031304435344b726e365371684f555931494e4c703246415a2f596674505741797339526678307443494479764a59476c6e5450366a55774f5535576471612f565653366c6d65475255417a716a3246716252516948367748473446755562512f7074765870362f6d4549765658304338655449796d547a4f504b6f302f46766d79364d33546f6575574150683031614a7657746e504a7147585549354e4e377755522f457632534a6f4230376453652f31394174712b72666f37524e56685235752f596778644846496556426958647a634c42314b54646d2b537a5a3837456f6f2b78556e4f65556e58664837452f5667674f794f79753232633534676456366f2b6868544a6b715435776a4772566c66786c2b7a6e70376d61763841486c6f642b37505063504a35567358384d52382b64365a5a394b5a50776755706b3264742f774158336b5059765648304f65724e305038417a486450534f545073376933595572434a595646755a3963393445796832674e57626754564573423450776f2b754e416b77757a74763841394f50354242766e6e6f6c484c35467331782b575735744d6759583076344352773639394534385851434b726564682b75764e6c6c424c536f436c556254734f386b396d577866706e366843503143394b41356b6a4c6d376b6c554d56714e725350503061764c56356e6a2b4d37786e51704f33796566367370535377334f536169666e634f6d7574795163414c716a62663841463935424b4831462f487a79426e306c552b5435774a726371623550464a4b4765544e31434f63704d324f6866786154422f6856397a3031666f444f62375a707239733573597648666e313567726e6570666f77476d6a6243585772546f56332f5874444c37386f6c452b69585854685a32632b45644c50646d777a386751504f6d5371544f69795a4d2f45684531746a476377483766555838613232465437764b6245547374484b57475476776e727735554e574644465652596d5a57576c54724b4336755a7a6e6a4e5638782b3836544e55374e58776b43386a3153394443307a316336445a37566d5436456e596e3431754534755542566b556431704131416c314d305a646a4e2b7a6370514b366d776a46546e306f544b32332f463935456c64706568785070313879667938416262713657666d356e6a43312b4d684d6379526f42623756723752687830615470556b6366626f4f36722f4148704979734b6d4f66707839655942554e39425049334f6f54643667616c586a7976754f54794e30626375634e426b724a712f75523047506b694363356931445446314b5676436b2f724849564675615043426c6b36336f5a7164665866702b56316a75356b2f766242342f7743565a453671576e6e6c6f387a74625043683265496c5a464c564b756d6d592f35554a7058436272425648375431674c34567634397a35456e7a4d3053734f6d782b7671387964504264496471335249686e6d3867782b73305065756446436d36546c545454324a6d4a545747667a527a3537382b766f4a74705865676f66657a756865702f556f4c55666f342f63334d30363846624c5565516a31336a354c78592b4f6c597038727566636e6b676853535a314b62522f552f7450574137794b50526d43475732706b782f42466e34577332724f7a38422f3756584b6a4c707a6372504c39595174686e2b75313152694b75576c5677365a306c383149336432514b43543068704a7153386e465664307961616c6147506e6d6a614f65506a364f585079746a76306668385346656378716d304a644d75644c684f64746c503841562f326e7241695850476678384f693171504a396d584e30613666484639546a4d7a715a4e326831486332664f7a5a3536373035386b7163756b50665230505a37416b564d644966314f622b456576714a7a50342f774368655246735665502b5661577565636937575a6b33595771676c43786c486a554b5938372b4e35546e736d7835596e4a517a6a6154547631492b79557758425a5864654f7644364161574e2b4f70317761522b622f414235507671725a65575a5a577272744c4c6e584453743554694e6351756e733556326d524a736d736a2b66713448746d6e6e64663850326b4944344e2b5038475378672b64317950384c752b3456766b47567052364f3944544264624a66727852516c7a4e316b34727057476e692b307a544a493141356836736c4d62377a4d6375647743494c385a74484f6f5a2f3834766b62732f4f30413034646e6e6a6d687077566f31754e4361413530664d6d5736635a6668514e4850694231396a58794742392b4e6e557a303465765855495933696e6f6a725a4370387a796a647454416471566f7378394270364753704a565453307836497a7a522f656f77302f47395a5355766f705548564334416d4a4d336a722b676664395066512f4e4c7330586b376173765a627a5744645a6c6b6e6d692f77433546764e304b504b752f4e50724542554374485738514b537070367a35472b31546b54656567493938432f486a4c793975692f7a6658726144376459587735624d37787a5564514e32647163583543556258523164485147686e324b5675377a56437545544c6a30386e6466385032446d2f77424e2f52664658417166643059367243375042526c2b463359586b6d7459724f71506f304a564733685430667943597570704233372b486c5054692b464a757276743467786f656c336f6c6b3146737339554d694e4c4d702f6b6835325849365a6a7465534a6e6b4830744c5a6968453464546b2b7055776a6943623553306a6f4e4a6643686f4e31375a724e4d444b72306b3942417a6738617139543438317443704a4b587556695478366c4561634e476b5649466e3936763434527045657142696143306d2b354a4b4f75624b6237347a742b6e2f496b566670502b4f6c55664b4e6e7979546b2b46636e646b4d316a7178334b4c4b735147586b4d596d576857653968775144797064375a3573315a422f7562567a73623954346163506f4835656b3370497a4a6c6970387368726a5844334b7954707973642f3763696d366c645259654a51336865507430382b4657664f684c72624a6f4c414f6e6953654c4a3935623850722b5949355034362b6e476e586f5736666c3736457a306251535154654e517138584e734849396171476d4a626d396868484e6674636a7070744175636d53376843756e6958566e557448537644794667552f6a6e3652415759476835564a5a6c616453394e75786f6a5136682b5a51474f6b545439615759394a79562f4332562f47302b3459444d5777616e4a767352767634542f4d57486c2b6776704e6e397938615831426d336667703342776579555a754a74515938623259744548377a63477a756c556a575a56524f544d39314b6d58733674705567384f784e3754786d7655584c6e666a74364f3361384e71664d4c30547a56383257555437534e5754512b7a6f77306d7865623542596376302b314d544a2b7a532f3242537063715073716166395539356247424f4a2f51503862772b6a466d2b51776175506c36455865356c47434e3648785a32767556755771382f6638414a6f574f317035445a5367666e2f684b516b6f6c302b4b4c2b6f3332385261555034746568564e6e6166384179615255774c4345636e3950464775456a36474e4f54534b78494a467a485176543144792b4834656c4934487163722b6f3332384a2b776b75542b4e2f706c72506b375035726a35664d364b504a6249786a775841396c47786d766b34302f6a4f6577303631442f415056554432727a585566395a5274442b6c745330526e714c68792f786238506d797369476a7954785363517131374b734e5538765a6365425569357949475a70414379376b6c63756f324e6e567a2b562b63786d6f463767707635736663572f6b2f6a4a347a6e543868792f4d3841564179506e554d6c74797058746b527149754e50304e54326f7a7a6a48486f426334676c54512b43656673335069545364536536425a2b5036412b476f756f7074382b356655504d7167377a4d464b7a2b49595856495464506f4c346e39584c6a377a6a456a5237553148307839374f4245366b2f687a41734c452f48624b664f59483569786256765a77437a7158756170464e4e534f7a4e6c5968544c462f47566b584756634668757673754d6a4439704f74727a50776576754c31776678397a4f66426f71387872315a6f6e78384f61616c446c55714e45633176454c69354f6b7144536b6566342b30762f54564544566977413547365a367a74396570343447326d46474d634d4f5a4959455359597a6d344432456855303653524b7669674d506b542b2f647a6e66614147755966312b7a4c336631534933386b5633616c72635076756a62385765486e772f4d495236702b704d5867754e37754c54567636514d6b773838795535396c774b63637a41525158783066384159576b46392b62332b387841502b5149573369307a45313278757247323175764c3364656b31365a6a75694e7533346a6e487165534f31423657752b7137555a5254547437356f69725073586b56496f36537375787855446b386e2f41483747536a77592b7a4b497a2b62706b7951336851663161656144426d31365a6d516c41356371716447722b5547585261305a62474d7a63583634696777373045674354636c412f43306e426e7958555663674e586f51785a31507645596c6b423546796a486172716f657963695a39714e68697a7072496a56416c6843584745716b4273734b4a587a61465152367561504766785770707a4930656d45564e52646f50536c537858777371546a386b34726f496376337873705a6561714641476b56456d59702b56735868466f35306456655255726836633266682f5071425757686f4e47467a366d5a2f576849684865684e314b755543695943427972526b53376b55685a594b6c743765646e4f41546c56777a3535646b4e46684f4c4a7a316157537a35466c7873787454784d3758476d68503941547558797673475170694539393174614c323553446b376f5a382f776237732b7656655a79724c53734c726a346f585575674e346444394759426c466b4642794e4d73422f786255494b6253314a36727248326a5462786e364f6375303651755871534f4965645a304a6b696c4a4561553041446252552b554e614e6b6c33564e586f632b36517274703034695a525a5251776256394d6446566e7a66496e70674154395135524a70684233394267796a7033366d652b38674b70716a5151664c4445434a5a6970715147634446737a395a6c525a727672644639496a6d754d525a5151487747624e436342306e6e7178756255796768707a4b6e46504157724c474837682f394c4e7937422b624f62337171365038416247716563562f4d49304139782b39717158637078356d667770514f506a5a31685a2f494e31416b79395a6a39682f7a5a357a7346354a556448456a704f6f2f7a6e62315055384f486747315048303230355355694c58397066705a64424d364e43546e6f6d6a68725a30532f6a566f6f5738654d4a777062545a39524b4c5143622b674b52774b4b6369556f6f7a74502f596f5a594b644f574e7555756d6b64467a6175386a757a577046776357716c344f6d4d5453306148664d4446323754504c497052616b33436a7675317676524a6150506a704b2b6b6b2b79567a4747686d665974516a384d376d4761334f6362796b45476c57756e5576566d4d776c4d4f76546e5879656e52454342326e4937756a6f357159474d6b737a65426d36443230316a544f593241747176724e2b727963546a4f4f4164342f386a506c7269793870454f69484463556a37334b695168582b4a52364334696f56343352555363314b31697169593354636d49464d393375546a7544687279324b61326251324678564e312f63756e53624d315a706173556c586b582f474c574b47776671456f4a50314d6c6e3758535a705931457a45384a446c4d646264617048653645655943713434706530784c6f47525a696355385769587773354e52486e4b61305a3244375a6b2b38715545306737412f626d624e5344325a42737a315872447675713631483344702f384154614e426d6a4e383966772f56686c2b4276384167417130692b483557744837675a4e566c76384131786c382f4e447448655a6d55716c6b6c64464a363944633759656970693277732f6c6e4c3462766a4368514f392f755a43645333423855576f747658684e484c7154366370564c3545644d39586172574d723348464b45616b797068545a4833505545674d2f7943796b506e2b4d774f677232743468555530584e664f686b5a70337143655364396c62687a5931706270646f757a7543514c3431664a6d76504e43647a4b7761453341474e6c6e66476c716b6652746d414d30367a646b61466b624a38794d68446f7447762b517157553958366a4653794133476e3379744545414373716b6d764b3765594575696637745a4c7a315a47623147565756494f4b4e6d664e376f58737330444e6e43557570556336662b797634524d47724d316b79476e6c64783946616e53334b4a553073615859723836347266765038416b65375164334f463030366c6444332f4146694d434d2b4a345147755553726c7561316b7630383766683638342f34746438484b6159726b396e7072755833517a5731542b35432b4b4f65672f6c3977396b537a35677734746c44417271704b6e6d7537546c6b5838466632657948383145726145585a357275634c7168343179532f352b6d306c41626250596b4665626a66494b414c506c616e5054493232695338694b445366336b616c5646597a4e54386c4131456b503238314c4a4b6639522f707070614132666f705273703664586552366474357a747535572f75504b2f4e6c7363697850374b45686f714a4949377977506a6d49426d372b775751464e4f65716561412b65796c334b5049555378364734366750735171355452474b4e79376c64724f68386378433369714444322f454269773230426b75683274514371346330323665766e457252566f35792f75456d33746e4e43344e4368585a6662564c71456853414779645a6c7a4f36487441326732524f4f54326d697657745a4a62717a3035456a356d30516b71353062362f6e65746a70422b5a587a4c576b31425455507a4f2b4653474d2f6f48764b4855554961587a4d2b5369795778356b746645357a363031334e48524b4f4b36636a73593773375664474a612f636c6f47507534414e5a6b764c37495374763450562f4e5733505068476a374b6c324e627a6c5a635a50342b5043316662775848796877444f5a48774436344754744772577a4b596b2f4e375a35517352334a35525238427152524841696b355a2b4c3346646443746863644d4275447675396e552f47356a6f484347386c4f6176515774546232304f312b38423966306b444e562b6b30325a44673450366e736f52316e4a2f6a3938686d48567534344642386f56686d76715a4f615451584831316c4f4f2b31434573416f2f72517139736f4b533474373762564343543674326c525349436133484f417a74554d737a4b55513976376134636a5a466c436d683738324d6773386c5164516775716a696859414f37783445762f64572f34774c6e5166446c5761464c6563305459534b574c62565936505542633757335a314e6d5646424c307242577450792f475145616b706f3434457337385a6734596d59437a644679616669706d5346637461694449546a5255653337633379564e563970493475654644666c4d6150717969504a3138373955455734595a394e6e366f5254745356756c56504b69786c4274376e744868353357554c4f555a4b71765941714d6632745a4d65417250697744376e762b79745062565545464f2f716d396971565a30464735566f7053446a6e4356715a2f2f414d4d346171474e6d57344b44436d6b4f513936437a4b4a3649703674516f4c4f4b565a4e4e5044724a464c6148544f6b2b456e6d74596958472f56436b32662b302f2b3153747943396b414d6c366c6c4b4a6b4c72772b6f54564a3736646b7373633244506c344e6c6779386761754964446f36436547425653396d58417a696567424a2b494843776b4d35566536666f356c6f3164745561443030564e32716c752b796d687a6d5436416375686f6d3453464e556b4b5a552f47504b695944634e5a756832666d763841636b376f7a697a534f754e6f7a44595a786b4d30727a6f563759356d4a30493175652f67665a6d2b38613343426673475563314e65787a357a686c52513554554b355a633155362f6d6959455a336e50616b614a4c6b3862774341667054357666635831756b5941656333557636316468557a5376792b48624a54596c37566644595047575277664d733747437633657757554e6d4d35684f677943684c5767503031614e6f354d2f624a2b484f633437427277655938683055574d6b66326a5244462f2b434677783966774f395854424142762f5873457541516f5136524f684a3849307670526335345232567943716b32757655457347664f4c48444f546e65317650696465594e2f792f7743793455414254303641637457644c4c5632324c747a4a515843716375446d3663647643584f7a746767787446484867775a674c485754552b77666151494855424372756851686664476b6443666b6961714f66586c2b476435765a47356f466d6f30375073713630774d56487777725550756c69423245646e42524c714a63566136424b542b517a767631326148474d376f56485a5443306b4e573671457839676d59556d6c4c4670593650686838576775652b6361525338567237486b527a617a302b77713864512f645a425079736477514f716377597378573639687173417a713934593061586a774d2b4663584e4b7237696c7031416c565239594f5661527165756b73795a693768642f6978715150766551412b634f4c6e427a7078506849546c5a43327166747732427a5076716650667249556932327532744e777a5578365a642b4f4662584a576a73715843326a4e6f464b3751426f4841554b43487263374f753036754962485a704439376e745575516f436b62326a55443247787a55304d352b754b7064496271464b2b626f3143594263354d6b394e446c5254315a3270787930614b3638785553344b74536558545532576c334f4d5956453872482f414568375950764f5a643474486e736d633934584a6d56637548555662305a71582b5278456d6b73715745416a466e785573466d614d374b457a31566361626d6d73616a532f72442f62666e674d4a64502b4b625439656d4d6648383555394861464e6e70353736596d4c7a4938316a53532b576833632b676c72412f77422f636a454a706e542f414471534336704d3279787359584958667964512f596a646f486e554753305a7578484a4a4a5231324b736b6c4c39536e706c32704b5453616569432b4544617254304b6e434456516f68536149374872586145386764584c4d61504a494b546d55346a6336775458535a456276614b666d374b4b65677a386a6a624650486f335235585169616b504a5a5265546d4f6c72374c6e4e69706834705953754d584c3938784e434637644d7151576f6e644562553755435063386e566c493674306e7577394849316b635a4a67796646496d586c557567717055393347554d75584c38792b50613436516d4d35546c424c672f7133752f4d4d3261343855315464745032696a52717a542f634e6a6950534d716b396761396b76614e7a68466d7151437442635953303143394b4f563138646f4941652b78366b4d444f6b524271427066476d49594e4b344e54654c516b4f7175594e785448412b6a57597046706e4a4e2f36496874447739383373427a342f3466554b463647784e4d2f526c3063314a315677374e6353386d6c2b5855537038724e7273483571616979352b6673694d46703453656678375654387061324f6b38524c4a6334315373574367355459307978794865553361753648617530334e30506d5153616d51736e6e365a534b5944773637763649515452635335617036614549554951437453574775544e4e7568664e55636c657264597a4e6f5978477451744f7778476f7557536d6c70306955305a696f612b6359387a6c72784a63374e746f7a75685430735a476c516a51352f4b3254447a50434f494c4b766a34396431424772394c6e544f66777335396736444f33786333722b51662f414663364a6b2f462f507348705177734e56714b68664f7267665a69665230386f6e2f4375656970667968473168383071584f473973593048554e774c546d6c6e6e64586e4b6c564231464179587879612b6c3155303936373232436d63336a33576f4c32676d634b57754d3368473770645532334a352f594f5473654644683470374a547a3877657a7375686b30457a64626c6c326271577a63526d69316c476f7a3546544477494a6d76443450335956443450722b6755357473444d642b395055513070725a3356735853504a4e6556715776367154506c61686d6571622b51364a54306436664530706b59336a4a554b624c6541636845464e4f2f5772526d6942556e5655527a735658576d5356576b63634f574170514f6c573258516e6e6c4b6731504f50514c6770543741724b6f4d66566c524b625946432b573733544d304638316f774265764b4a6f6d64517878457550696669362f704e2b774a4a62326639652f397544354d634c3949685673417a764b5a45357651425643436e4556356763794a6d306343646638745149474452576e6830756169684348552b30424359454153392b53744c4f4a72374f75624e4e4338326f377068664d39544832462b394973323468377a7654454a3666335049705a755451474a547a466f7a5535476174312b692b7273536e4b437a7878457773594d6d795830434267324e682b483938577750644d45686d6157756237672f6147667846306a5a393255394343734c5a6e76384135504d5675785a4f6f4e58472f6630484758466f38674b5068715331715a5758316976335566462f514e6c7054444942644c4746623652354d6d465a7970745955732b5a50386c4470336b7478554a63533565556c505a504e384e487778796961774465576a50705753304a6d5a334931394c5247644766534458433557633744736630364a6165513245796a5537774f7a7830413735692f77416c2b397a4c78324c66502b77356a666c7a6d5837506c5069764a71644d62677a37383672617a45376b2b74447135326a4f692b5774576438436f614c645a6d78514331553041446e4b62544d535a67502b756a536e4d664d564a2b4e62664b49505758516f3066766f536d545672304b3257755870652f4d533378376c456b4e6a74413850365768567141697837794665566c486145453472393532314f7a784855724f7737436d5768396835756532466e6b4e4d7570495256736b704842566c71305553304d465534325a75676a67644a794b56324a4a6a5731547873484466587848787664624d35647a6e49356e6e43396155617935664971706e584c6c3770514e6b3061456e67304c55566a4f6f5637485639316665325a507464504d356265654267394f6b794451716b316e4d6f573153644c5132667059505a2b674e3044416e7230766a36524d467977486a7743636a3151535654696d4545743966454d466279324b357133387271736b6968324752363148554776345761584d796172466c4566745467756f6f327071622f685537376441465135353873417a64472f71364b6c4f48705372674c54454e45744a632f77416e3865786d6d443573586a57556658315530554138784271336c4f722f41492f5368434a357264625638732b4f7a74616c2f4657627061394f4b724e75797277476a555a3232624e45724b48564c537458586c50584d375651723338716f4f6b41635362734b4e5245776738363873664765722f6767786e497a6e56727056586c355762724c5477667261464652672b457169476f5a7665667971613441486f7739625575437a616f444a6451366d6e727336464130564c725639544f45357671782f79677573314745755644464f53373575516a324f6d617551506c6a4b534a472f61717943437a65313439716a4e7a5a704e456e3873312f705235656673527439744136784c3543582f4a39536e74445866626b36366445643041565a6f5a6d4c7962535830633965524e2f4d786435564f756a6c544a59515051624e5071542f79623057617957392b734c706a396a7542566b657a336747504a37764b39334e317248354e38467977704758526949363656527135683747556d314255414f78557936676b4c635a4838744b6e4638764b507555787769504b4136316b346f5152737a73795766572f6d474b324b47734d615a2f707a58556e336c7135766238614e53697a37333177525343584c35306159307143755258466954746b4c35565552373157707251336678714e4659742b51492b72522f4637714f6358676c646f4f486b31664263376965422f4a794b55614e49413773435757475478646b7555746e46737a77793358494857793756376270356d705471324b654c714d2b6f624f547a745254776b54705637425648424e4f654f51516c386175303969764f65725079385a344c78346f4c346e514a666e76426d794c38535447712b7074455656556647706f36384543686f636e4766374d34774c573864676958464f6b77697a626649696d6451444d36696e73714b386e2f534e75664b504f3767306957667a5165597a4f5454536e6b34424d79616c6f5a4d314d5441355a454c47457a782b4e656a6f4b314d3676466130644a4e586169697139725179382b542b4c756d5a4d38446d632b41754c57514d42445161493047327a473242647a507552444b6d6e75766f61785a7a353537325a384c74476947674a34364c7357774b466e5530307070616c4d307055466e504139484c4e4a70374947376158377334324b7a54617936765135446b376d6b647332576d474e70586657793139613259326930374b47704a744c554173434f69646544645a732f61654e626e66782b6373635453387032714d6c7657557571314d755377556b38485452496457426c37486f4c2f4149486c6e42454a38314f584432767258645a7048445376515a79544e627a795572645a316464413455676a544652525979686256497a364a7a45435830466d444854675567426638494476354757423830465647637a542b526562636f726952717a4258684f5a4a64516b79793342375339687830384e51556e38687a352f765058674a316e646b386466324f525a6f7171304738426474476a6c544d6e334b52624b69684178796f6c753559796f4a794e50414e7a715070307162387368316e4d3573424e2b4e6930536f526445704658305736616b7970746b7a75313961742f56776466704c355470446378684c4e6c424f3974346a39644e72446f586175373641526c6335454935764d3555395a396a717371446a4d2b706d4962334c69746c6245784a6463744975622b366d5454715a34383844354d6666332f57676644343764376136797634752f6e4c4a3566727a796447796533634b533932554c4c6a4c364b43645541675a7a776771775a51377755472f75667650494567446248397a4c6e4b6d567432682f44536665716e516d70306454452f42564e70537a35624554787549716156632b6d79437671776e64313379563550503741685841544d56584a5a6e4b73554d4d2b6166494635664173612b65754c4a7569435a4a773165366844506d624d626d665a3472374263624d36683866312f554a566f746e4d654a686e696d76355437732b6656616d7a497a35704b4b465045364b6a6638414d334e687564336a4a714f557a4a49477a66514b6c4256455974496f786e664a6e3934306b4b796c5931415a62574b416d367a466a3762364a5577357270336670505141675643414e48674541316830444b4e2b6c4f6b616d5436373068695472306e614c375a4b4d334e75706e6242394c62375553732b4a347a724e584345574d444e715452384453584f335038415a2b736831695a4f682f4f7845556e48534a716f735658566e32585a394e6c55646a6d317777795a4c6b77773135733834706f647831453034424638435871734d346e626a683142765044546d6f616d6d562b6c6d4974576d304b4b485a2f4d787147533054634a2b6974536a752b38797858457a386a424b3071494b6674777a2f44515150636d716c7670697a6170786c547558593047335439427a4f50664774386330394c57636a6f2b624e646d385773694c356e52746b4359584f6f7044616e5a67526979632f7371784a56445a2f4761434b4d38687066584f322f58646f5a6b374b365a56663841306e59544c4b3470412b743030744a584b6f784e514d7347746a4c4d333548595639692b7976746f4c536c35477a4f6e4b652f345856444c6c5a4c676a61316d6c6d726e56336867776f423973337a536c54545847364933514a62343261577647726b63724a7864426e2f612b6954776131567939387a644a707a6d67626c70716a4d6b4a5038415644572f5a55376a4136646464547548336162497a4474304b4c5a6f665a49427a374a4c5251326c62327a496f574a747a2b757330474578335a3561464f6a634d5a7951416b75422f56766a2b6e366a57624f7a70614939502b47716c4f576b3968575675497a622b7a35475a7a6d54323350744b59686f754a7956726c36696e71556d7578464f6a51623054796f7342313255326c7531585255326a4c79344a75315135542f72335a3164667a4c70784761656469676e4e5779477a50714243706c4a64666f576533336f5237564238646d703064436756313575766d76556557366a496d71725073617331697975675672617a57427563546f6670586566424d41665864505a6f4438306241764c78374f7774664f696e7478305539314931616e637947715666583377784d33652f77416b4b3978723179766f706478334a355857554f77534e69584d616b52726163526e4751615a4c7a4a6e5a70737459446e356963575472656a2f414b7379764e2b4c4f6978745a467a65574d4a61636350647a32564a424c4e48684f6341314a54696331464965563164436c384c4b766f4b666c766673616d644f355655456d454366755a4d3667324a5348326156476b51506e4a4e453459374f657761596a596468722f726e7772624e323369376b7337706130584e715835726f32757776354f4657626e4d58373131557770793645482b685466533735436c564d66745547782b524c624d4b55586f6b506d64455432364372467377726c35383875464a71617679456d617250657972485a5452507a692b63706c6b524e597a6c497a424c76482b736f4d4a39464e4d7878317777383869716c7454706144594b55353144396a4b6e302b396c575a44382b5a47686f304a6e5439707864704f6670687076366b787a4e38376e6b5053594579393253584f776c535a32354468574d30313573697466624e614379647171696e4d64784a6e394f6e36464d74725655303372644d644c664c3959465378326138632b6d7a512b504337583568517a686f656d6173636c434679655139376b76356e69765037557a57304a43645349666143695254766366307a762b7a395a46732b6e32624b37797675506d514a756f6779382b6a75587974777779366579486a733170554d56503937506f56525a6c6c4e37656930572f394a75644978794b6b5a7a6e7646345954626530546c5259655a316c30305334365a354e6d6d7436432b6c6a36636142577876753457786c76416170356f7870643965716d7766387844577231743864374e36683644496d5a724d536445375a62644258786c463161744a4e58416d6d38666165786d6b752f6b4d7662435642484d42516b464a69373437317445524d534e644f59316b2f6b4e7976342f50436b4b4e5373305a6636544165752f57716930504b49376f73732f346d4e4e454f313173656a6f484f7351374945644c69535839615a6a4765344650476c32354b39324c37394f706d2f715353796a536c30706255356e59302b4f305a6759766a79496635624e706870686478633331756f6d64484e5a54556d337030706a4d59467365562b4d366d54343068744470737533504c5563445958566e4847757a54314a506e30622b51384d36756c70357657674d62416d6d437a7638417a534a6a2f564b326d626352713336636542727a4c34613844543041324e4b6d66587a4b59306f7864394b4e58794663556e7630734e793272775a705a3376557958504b65514f437476436a765951615774337a4936452b482b616557517a3337477538764b4d2b53483672594e316d6462355145654b482f6839374e48735730545a324e4959545a4d6969774c655567343644734835344d4a69496e684f59477a474c765a6d6d366d64632b6a6964745a5563685a7452583536317a5735712f4948365179586c316d624d6c4f6b6854565465317264582b4e363467544b624b7a4554474a453278504c6c3656556b48784e3136596c4146335861306578524d764e6c575666335364516c565641366a45754145546777665a2f48436c626d50536d524a70397a4f303231546f3732694c556132687a53574c4d75595a4a6d493048356c77787535485231676a464f6662364848595942485343717870355846767866594c596d725252596154433257353132646b365463374c6974587a6237446e6e6f6e5656316c53316948324d3538376e44515250736f7448745a74454a3742336e746a4a626a3165565563566e487162322f7454564c6e2b6b317a6e78543864576c6e746c577461416c465a4d537979443238534a7a326464586e3876754a446e62746970644f72453648316c383166494a6a566f52334c6e55375259644a3233337361476b774f625876623864597053634837364946395a345a642f4e6b66705873704f646d626447696d6c656f3250625a5a513253336c436c754a535353773275637450316667374a337675576c4a636d3968416f48667a5a42554b65495757356f784d6d5154723031424a6e5a506b5467677568792f62793632716733706c577a37556e554131344a397854685431716e636334396e7a446447517258644d48325132616f36644c534351493652346a6c623254597263746371354a6272706f59616c745352524a375159694a544e3675633347732b594b58615077614143553770553076716c7375315543734b4b66724c54646573425a7965582f7359394852567867683158366d417a5633692f36674c78734a4b3562483863424d5948644a484d3279586779324c54386a65547a734e30735075366e6949766948337064396a336e37706b6d436855636a59324f737251594f713959584b3075454f4e584251747268305753783142526f54797364305454326a72573672454a34447543785150797555716b35616e474c533554516d5174442b50786b55757664464275485465357461614a2b4576684771684b6b4243704b51427a6a5373474d36315353534c6e2b414b4d306345617030796165595445336a472b74484c5453786164424a626b4b7563627747746a704250755541485a55425a6c71752f3841576d4e724b306b4938686142523068506b4e304e614c55685051324c71353255702b69715872522b4e774a456671634d41616b4868382b7a6e3178306b37394270353374524a7039566f766e687364557a336a6647413166736671714a776b59753434304b425138584f384779394f776c5230365637636d5a797262304b48626d35563758614b793657545a6f45745935665a355a525a58384875616344553956433668644c67485035426250477a4f7975646146557a34756a7339436a54536c304f4e5655432b66745978393148664a2f777864534c4c65562f754e6a676f4b5a69596e6a415664515448364d535153714f51527a5069736b73434b5170306c4f325467736f55316d73646a6e664e4f6737456779592f6d5550364c356f446942317165366665536775562f617238374d64325a7558504e4978796944576930626c3372464e482b4c474c6e53492f544f6d677a36344161426d6b30366c733635324f703059504b4c763432655a733047783243324f696d56307a6c5475646f524a574a64347352633058544e4676564f6d3634417865356a644263436156424132652b53613175576e4f73386562477370474e444b70304f304c477071376d46527776617a6a766b614e5a3035786d4759716b6d6d31375671646f2f616e6c316b2b2f58744d746d394b3646654f4c4667456c31466c47486e7a75366c5644532f374a4e2b503458463973466e31646b5a546f334d67675a44424a43424e4d334177776c464759364b5556715847546e61414b4e7966654b584a61373634677870474448516f5370732f574c2f796d5a45613249552b63632b77456a594a533345563674685a61444d65776e4a595947483770446e4871542b672f503059684450735a5831664946526c6d31364b517335624366462f6570626f617373337937524c2b476d547632766c4630426642386f4e3461672b624c62564c546f6866525431594e644c4c57703573764b476865685a4764576651736c304d645a4b7076744a74494f53747a7742797638417367344a4c71705a7758645670426b314e446f586a6e566e384a577379736d5779544a6e503746412f4e47536632734b7a423344535931394671412b714732707965597a514c75666d456a6b64746b3679634b7046356a6c74425730626c354b3832574e594e6338774f6a526e596c6145396261596658366b3030363357717a712b564b6f634f6578396830315553636e4d4e61756b705638537878574c4c70307146676539614a702b75516f7742696e2f617274613374532b6c3838745265544731637156556950495175523245577972667831683372415155626f47674c7566496731424d57592b51774b55644d63787948506971445659696c6f6c55686c3154624b706d565373714a726f6165635749416e742f76476c58534c3267625a6a364359616d305366664c726876617671376c6c54412f536333694a306b73446e6f526f615642546d6f2b7239353861344f4b617076514b426d386c6f50376b6c4355394876614b6b526a516d3153757270464d546d34765a45787371576c726c4677766d6259333345707a6d5455674b58774a51664c7a6b67486e4c6c706532726a596c4e427a3649443236307a4f3464476b31326850326a726c76416753357675534c65736145516d792b376e622b6c71797a614354677138686e6d6a4762504d5a4b55734a534b4358527a516c2b6d354c757536627861466a667370396a654c4d455542326d69706b526e4962483858317a4a70624b64504f4c51614d5552686b7259517639306f3865556156436130394d326d62552f494341766c726f5648634230357a6546716e706b70564e4371716a6e2b5a7444327870536e344e6936656854506d634a6a6c4f615a2f5a35777636444c5547775165367054416a563947335774533568346e4d3631624f4d3154584d7a6e6171424e6132646f34446e4c35395a6a654453346734414f706a4b51354d2b4365494c613645616c5147466c705635507a6551364661374970314334655a7371652f487733705a385075616b7a452f73412f474c6f6e53774f32565631725232586c526d46755a4f4e36587567506e4e4a70756e646459504353314b55714f42545447646b7146516846324a6d4c55513435567151696a76527a5851782f534254363249572b3833434c4a79627146564e51706a4b57755a6130526370704c4f674863696b52592f64486c4e47636c755471725438527672356c746b585078527a36553872522b4e31376c67546d3953765239674f424c48395959544d546e45385a6749712b7a78374842467062645371386f4566426c306f6e74712f6c4575494b76743566654d52516e65732b507044394c7338776e4b4272374f583951485846786150416b426a304b6b466b4b6d3066364a4c546536555a7256356e5a3172585a79725047666961585766763641575467367461616636645049666b357343575242376b79584e72713543684c4e586b644f545a51754473454572567956374558562f4a38554d3455664e38786670726f362f3049436236374645724452497975706a787a3336476c4d366d547647304d79375337594c47457a374655397730684e38774f442f4a7271506d7061716550613877594452596c6646366871764c2b4d36457949655a725a585a55444d2b4f476c4b4c32443336374a33556439303162544e656b325645646657393463415a786e74376f506b6e644c3962577064724b7170624c426f6e74537a76577635726c6a3070576f6c6848334d34394c76346668717041334f6f53426c6a59796647353230717063683473424f556e2b5a437448446347745455715953434f79694c37684278776d4563734669657967707a6a65455a6c42656864564f336a3670353531762b71496d4d64595a357a7041414450714876796e4c556c2f65722b5033466d67446b7348324e414834364d4d594c7a556e6e30636b6b393648514c714a732b5a374633585738446a51586e3164314a5a3565756651665838674e524c5651663232323575313638417051576d382b7a307456457a74644e436364756464436d476e36362b6863544d5a696675664a4d493153725973327a6d4266745a694b3635716749444e454574636730793835526463536f5336426f6f314e516263793573772b364f696f3456304d49554a4e326c2f477158337047663242423473565a636a4752696a61426b7a7270726d535451794a6d6949707033315756447a3671525851346e76627879665a70587272636b6669622f51664a486f4d477075572f49697153322b3937493948457239677973513356616f584d555652363074334b76656974492b775031423141556b304773464f6750336f59633464506d6855556a6a36324b54545a6245762b4c427a55636e6141722b4b6637632f44364a7a55557537385430735374414576486232413665397058674e7564707873735870303053315574525072643055356f4c2b504e62396944566450326453574f4f506f744650377a2f414e57763270444c4d35574a6379347536504755316c4e544b32704c546b6d7061774b567343623455594c76744d742b75667875344d66742f77434b6c666357613054316e76436b5359713634704a474d313946446e5136793545565a366f5957574348783053696f655373686c3172503254455034776a4f6b4443593343565135526c335a7864616b5069464f337973714f696f6c306350506a5a59695a49584e586c6c535a483861424c353070704c2f726d5851614e743976454573314e5842635546514742464d75533859316c2f434846584b6d30584e6e7a52347a59666f4c6c5574445a3254752b5a6a7071584e4d796f7147674f6d5330716550667a4f715447332b49304851717a6c534f354f474a7349713066644376516d4c2b48594a4364646e5a334839734f4f624966416d65447675385332376649595745485a2f59696a4e79576c667a656b376e3651766c327970496530616e64614857367378364331562f4b626c7161446165524d5a6a45393436492b432b5859506b4d4c39624b34584b7032716a727a32687a3335326b6e356f32786355796777364b2f6a714d564251342f3841642f38416655485064536557632b762f414f5957736745687a3469464c4a7770647a696d4c5169626f6534672f53782b4e59736f2b516638762f635844642b2b38414f38352f56367845577a4e6665614f37786d496d7643764c306e4d5a7a2f414e325a69735a454e386e384d38634664643130626d3934413047536d302f7059547163584f6d416c337242352f6b524c2f79563367644d51412f6b4d3270707a6f7a576c2f38414d786d662b37484470586a34346d59377668464a566c364f7a454b67726c587a336a444d417a6947676779754778626b3154724970544c397559524166545964353849414e71766a704f6338764e54313343764e7a532f48316e7736464767717269346e615337714b64515748787149387848536e7244707271366b676e562f794454636b5038414472674869706a6633343966495162536a394142672f6a63742f4753364264494a6f71586a6654396c626f353269747a6d316a38384d2f73346c4b2f645761574d64306541587474472f4d6450706b516939766f612f377a73334d652b486c72694e4b59574d5249363557586d38717367305676544f783639526b354154516b624e5533354a6751565057576a66694f7630794b753365656864656b57684c6b583361497071485134334e315a4c76735a333853754e58585735424e6379714c4a71474775634639636154536c3031482f766d4e33634b30304139503361796a70673054726e7976657579567477612f5179794c4f36344655353574306c304f3075705a49494f704d4a663337477536617636742b3039594770766e58673246354a633155324e74566141784b6e414448536f65464e6b6a41483639484b2b746a3050764a534b4f63344d455944544e396d4876787550574a6d4f4d43697444786543765133646e546a386a7676784a4e46636d2b33467a737a6c7057524f38647a64446b4f3970547a446479484c7a327a553939765161465531437a4c32414d43727649665544302f38414644677839624c38346a7a63784656586b4f54683471586f6a35465658705a787a6f2f6a317564714f7a575231442b6c4a65766e33476c2f4630796e7762785362635a6e4752576550366b656b325437363542386a56726661663841615161633745377050526d2b5250696c5a546374714d316c3969664941393166567439756b32626f54542b342b337457336a6a37416e563539365730426b2b50615068666b7655646a393863556d62546d77337776316339394e5038687153395758736c71306d3971363153517073374a4e317677682f55626264643345516e5739512f54626f6452337733547a5963594c4c2f41427969704d635653356b36554c4a736f63664d314a446e4a69343667436a76474e633753556b6837396968384d34742b4c3742677a31513844302f3548574441592f5153787553576448347a49515a53592b30614143566a334539656832644e4330736d374d4a6e716d324c697078707079703232374f6562354342302b757670736d7257527a43303261477a4a734d6955764c70565255756c6e3774736342594d61364e53704f587556444a563055696331424c537554324d6a76737434426e6f6574767073656a6c3237506a3965592b71336b565648514b65542f794434485a786d3030743754484b314f316f504a56535a33564b6346565073486c46485932326d4d784144655465736670316a786b326245462b50516c645a613736696d38656f65724f7547695a6d424f743150756f7a586148666656796e2f634651642b5a376772564d567450646745332b7248705a6f342b6b767347776e50626e31716c385a38646753504b6635577650556d794c78343943304a4d644f7452564945616a714172707161584a54634845777874746e4741423736352b6a7336504a31312b4b61433372305577366e5754313576564d79427737394439776d6d766b2f6a76632f4e754d4c41464e42543243487876653533526e336476786576354170503670656a4f666d39307647737a5234756643524e576a4635663053314d76485776483137563064466159335375314b614f7a64623745326376556158702b58694b336e72786b59356e71623666546c74697230323138362b526f7973793035786e714b7a4b745265534c33775a37505a444b2b5054364d306e414d674d32302f564837463770337537666939667943475a3674656c4f774f6d457668752b304178616257643176354f325358624c6b64643838756b71366e73364f42386b6c665a6e6d4654715a31754f6b556b59527474586a4e73686a6f2b756e6f786d79766b44786e7a4a656e6a5077387467515241366a7149632b695475577a5a78507152305a7176354378764555386f4e376a366f6a4c2f68723532323841776236372b6b31457a632b62777a7a7254716d79354d72463346554e6f59664846556d6468617851396e75635774524b4356664e4d536a3161564a574d507830484f7932633776583867537a2f557a302f77426a46304b48654d655a6f74445646314b7271646d3275506d58514f6c4f6a56686c63426c4f576856633076305852734c2b4f70373265646659416a62614a3451476d50366b2b69636e624b552b482b586165565246586a3575644d47585a6847585948544b587a5358524c4f7758503173393076484f6d4141306c4e65436a7a67306b7a616c736472703637776b6a316438477a7976356e354f784663757a78375150486937566f652f77436a576c737368575746374a6269483743684b764f5178785753382b5231494b305678737434425754314a394e6f4477615a2f467650396e5a38626a32373474536d7a4f324f55646a41722f486e77737031505a444d71504e755151304a4b7273486a787a4155774a2f7a6a625034362b767146592f5744304e71334a6635544838794a39575734396a766b527975586b36504d7542633965352b6f572f773035736c61317676435a4b4a733161316b315874756e6e6262774469373173394a4a59744353374f32666155464c6e7045465030322b5349784d384d70735171307067735653784e77554b70534b714a6f306d31394662593744624c6541693274366b656c544c4a426a3851312f6c795035527963704f6570625854395444753977744c71592b30706848536d736f4871752f495534574a4a2f7654306d7a466278303443484d382f38415272575449573933597a6d613874714c737075547a427a7a4a725849336632342f754e497263324f516e723635496578306c6c64676e384e6a6d7930644a45547238793949664938334f305438563837454d38364e6e79714f7642613554465a744645646d5051416768395170315047396a7343506d536151533061467a3255774d376246343738686656383439494b344c47562b4e37766b476478775a2f564c7949743132616a496b733254736f3039486171527351684467304f5a4d342b6341774670484b6c42634645587a4f4f4f514c79504f505350533553764b3848334c7138436b563036576a6d6e4a4d7445476251314f6e34342f6b3635644a62385855715a79536f506162745737333956505931765531742b4c39426c58356e364e5a55796d713841315a4d3657585a7a3047415238664c445463375437456a6c466e2f414b68554f7a6b3732776c5445726279796b2f595476656a335469333476734a416a314f394a6972325071656d6c7275557a6f70314d7a4b7838664e5a566e59744838782f77436e315a7242305932446a4c58776566434359796a504f7549792b6e5a2f5664742f78666551462f38416e51384932434b444d394a74377049586f2f414b2f70534441323974793953504b4a46442b4963724c4b3830457a6c4c6541664b4439696d7241356973783851646f386e395038414a51784e33706a715a76696f39737a6372746562446a767a50487577783449614136387a69476f574d304d56624757695635645033684e53374e4d4f7a693334767346652b562b6b564b6e6c5434333555392f61636d30644e6467746d2f6c6b544d4c794e556c6d69364e5136434e353070682f4a66443969696c384a7a476157742f714d5838593966515a643956665479533069386138473879786c4a7a6b7271377235705553707a2f765137614e4c4a317649506e37506b32513573703170597765746d6d4e335159694d37614932576e7259464b64337762786c797076485045504b61743237654f6a355973736a7274774e45397172597935315a31504b6276473271575443506f6b7168324f566162472f56636639547474505777585a367a2b447a77397942386338677a2b6f6c65456d6d486a5131535535695a394365535772546d6a37506b777a77357349694a2f434c552f38746c6d7566303434327a31332b7635676c6235783650577274566e6547623272306d78343276487334566345755a6f52716f5136664a706e6a653265696552326838796572496c455a4f447666724d482b6d322f77434c377949506e6566656b66732f6d4b387279642f383973355664636d4544575a34364571527749585a2b586c6243754d4958517273396931436266737a42334f4e636e666b6a6262474d38424a49764b50535045305043372b656b2f6d756d6b66484d764e5062306645396f316239646a7149426b6f53557644644f474c5158787649484d2f77424c44527958684759544d586e647a63526a4636692b6b4f316e5979345053377a56476779704d702b51363938657439587431395370376b5a36374a624e367a75686a62465031796e4c532f5750387a4f7a562b795a4462663858336b4e4b764d6644712b567855656e6e6b5831536b73505138706f6b73386c78503543566b59547073696f6c4e564470767233556e4e7848787148533633324277754a2f7164732f6a6e3139515938533871394c4b382f536266366137415a364476476c4256385765706d564e3147364f6b666a382b6f6c59353764432b554642565130763841646e726f7061354e51305274743357416d7a79723065766956675a76683238625a4e59684b7169504f3669756552487a2b51567a655174375944696f6c52596c42616e30507275787841435277375a724a694c645a74675065656f2f704c6536584c305047504b726446563846755a5a682b4e313077565738306d52352b664b37566a644c594b357869446e545537674d4e4c61486367417a4b4e742f774158336b496133715236566f6f6e736236656554307a5436794c702f4843637171665177376f2f76515757736b386672595335746a37644d5568394e52686d305552725169416a5732323737427a64354e34434255785365486174544e6257377352306e4c506c532b2f6c2b786c664859497a303872637669666d4e306e52702b366f516c62513954474e6e4539642f443135686f7a796a30536c2f6c4d577647386a66736f6d3053797171636c634766572b46597a4a7543662b55715153783150342f3468475435387345677642486e524f63497866726e6a362b674b30552b6d726e4642722b452b5735655a533746633344356d795567724178476b542f35776c354d70706f58417864427534775168534458484e4e33354c344a7866786a3139426a72372f704a34366e526235443464356839624e376f6147356c6c346f7061375755315a3145495374553468716f64764c6c41786f535a6a4a354f62473230443861537245576e6a467676496159486c507048446e3539486b48706a35584e5a70516152356a502f4747546147746d51322f4c6e7876726638414372485852386c4d2b6678314446646161535558334145516e4670365779424d712f4170614c394863384e3835727a6c5957492b2f516f6858714a704261697a4f6c7156492b4c364f6f6e467a394a797031722b702b715346526934356e4e596e75766e3139524d302b51656a4567535079765376314d5858337839545a4f42467248646f39304e4c4a56524c68783532726165654c4d66794478394b30713538376f4841412f565366362f714f6638645247372f4e2f534e416b466e67586c32626b6e56584e304f357638582f436b39654f4770634c7170614b4d396a73746454554239394e6b6778702f7a69365356424f322f77434c3779497854367565676d5a6f476163727a65695575366b397a4a736d742b366961336e6b6962466271594648322f5536425471496e4b2b7431384848786e57775769753232302b48723568632f555430546f366e4c6c3859395157354d2b42655862705a37624e6f4a35426e6d6e6e6a2f6d34666f6f4436347a763438506c554955736c534b37654f613675322b643265507279457158354c364d724b505a52672b5a35454d5a30536a7773617a4670595650384c693565646f704c446a44533043326135574b47513047552b4944452f42515156635976307a362f714345586c4834382b50785344626a2b653153366d546d3261576b5742797570444b657a767143344e54614741364f5974465662724b584d6d4e304533416e53364c3743496d4c7a312f5152484f382b2f4868316c4b6f382f774252697934714731646d703861325a317a767863586e3174576e41564755635a4e3249644630392f484f5859754250757253364d2f6774692f6a48723643645a766d666f3754632b757a78627a784d6d624f376372322f4c6348547252626c3673755775724d666c2b5075396d684c503841786376322f7555484d51522f3668346d5935503672692f6e2f4d5068387a2f476966534c5538546c39514a3835726d53612b6467654f626546714c5a5858504e526d387972503066592b31446875552b6936526f4f6d493175647a357a57787159785045464f3648705454594759762f414f6349776e3143645a5a347a6e624469304773513758765754796e653961357063544e596c716168352f706d4d5656326e2b76366e2f534a5475612f6f355a513974452f6d69436f705879723576427150755577726639334a66706e5976356671792f776c52477478725853476b567a663841746e30447245587238777944796a3054654630734d66716c526f55445a5733557a664872752b507a3339482f414d6e6f326369696e4c7071324678584f37315971714536364f694e625a6a4f542b7078506a583766324257447a66305a786377645453563544504344625a4f6f6f385a38772f6e59724e627867352f467a79376b533031786a5557656b4a306f5a544e4a304643707879474c7061346d654867416e2f7a692f6a2f4146544d31396a50387179715a3563774d5256666962337a55363050386658546d304a5864332b4c6f50364332743533685466544f6c684d392f5a326e4f322b4d523369575a4f3936454f7579305144715437466e4855513034766971456147486e4b6f6c302f664a6f547246646c307574477a715a715a616a6152706259633338614877786966435130782f4a76525043652f62304c64702b76704e526e7a713166472b5a3842464c5353697a6d397a3647797a31433464586b6146696d69722b4530674d777370686e3045524d3849446c506c666f4835557945766b3179592b50516c306e4834525144715859474c697137533271434f773532365571574a6e565363412f764b70526f71416266366e62614f344e3165522f6a382b316661646271395a506a4772715a38733256574f6e736a4c59756b6357686353654d6d2b5451466e655539536331343749716f6b5543564256474a384a443749395176786c3752774c764b6f453250733039484b6f32596e4e462b6a6d4a793962505a395a4f62424234376b763073364e62484c7a3665736c7057493939737772366d746f3773682b7a7950384148675254666e2b6351595338782b765850666234737a50326535674262446b766d64526e3032616c6a797a57496d3634584e54524252464d4f6b6e366c637359762b482b763967374f6e3866466279577233396e6558324b645277736b71356c546c6f624c524362747447504f76796251482b513161574b71563858746d58386e7a4a536c787566622f3777425756542b4e336664715a3371327262626e52327a55395a345a7652526c6a4d523549463139567375477453794e4f575536346952712b3855736446372f6e4d5a6b786675726e37666f4a33637238644b507042692b714d2b51454f6b544778703843306b7a4a30527a2f47364d483659464f697a51757578614351583146385a70554a584f4d344e58375036726a5537364268692b4f2f692f7162544e6572316568676a6a704e664d2b6e4e3356313356516143526d6a62554c6c46714d537a6e62314d58545966546d482b52587769344472544f726a477750386e422f477a2b537a4d765039546378796c346348455a455566733043546772706b356f7873757777344b57547a55485451643958614341566c386a517a514f76375447646f49792b412b677138395531486c5746544e6f496975776531326e4c3558794e58314e566365763269454368752b6a6e706e584879666770706a536d796b7157392f707a357873422f77416d384a39444735713236506d33687447784a586d4d73764c51727a66706937756c6e54586b335078562f5858796568316b717a476d53684d774a42393377716c72524e38384b394163787654583065626e5a7338336e336a527470616f713858466b7272686a446d50444136337439792b4c666f6331504866476547795a30335933575044332f70396b50576266682b346c553368336f2f4f3531506650664763756a5769683051626b57495058584c4557666b64415533455033377164694d5355445745313272414767317a76682b766f3133582f443970466d654d5a666f6c5434335a65337a3378774478483061627a747963454143664843354563334d33763247352b6559324c576d595473553336316e302b5764502b515a45377359322f59573534353437365578342f7744466c356e3454736652716964706374306353524f314265766333775230717649755463716b7a32544f2b663374396954633071616b694453724f63356e714c4d7a2f462f5375634230502f4c764130374c4b5a4949354a4a6f4c2f4a2b4e2b61566a484a7030474f5a6e30496e79326d687747457a674d3543616678526b5543662b4f353370626470494e766b2f6836446c7350516b34622f414c6b48587a6a514e4b4831327848387931615a51645136715934356a6d6f42746d6b345a2f65457478664750533969644246486d6e676b647341336f656638644a2b774d387778652b5761314a396e714b63394a2f6538686f2f7a2b6676516f6e5336542b71546133346631467234486848703231684c54355834664a6e3638634b32517a2b366374756f4d386c383471507444697a32464f75637068483967344948396f5a5a315641716a64616574632f51573148344634663846614a2f4c504844732b6f36666c4655637955614d2b687152704b4d79553069687a2b57554c34735074644d62507546557a726b6d7a2b71377679782f4953584e394b7364394d7338486c574831307632595a552f53504e706a6a6d5973314e6c44495a474b7954534f665170584565774353386837536c337942544d2b452f622b346d57523658344d744c596838346c537831757463504f6356444a4a714b73576c726557496451564241306d4a58386e546d55564b5771446c436659324a744d6644362b3473664f394b63575a364c42386e7a3366367752773071516b6d5747725049496b7a45785a726e6e5a4c4f785536792f514b636153442f4f76353743354d47444b784143584a6a486945316353716f46784c355174524a6d4e714a70306a3978504b7230764839736431783571523537763854566a4d3274335a4534386b38707a5047734b7653306d735769555664524c4b2b685654716e4c486b4b34783458474f36396e78696f53366643495450396d492b7a2b747074504c45563235357475363232737a32622f69374f33624f5a374f37704f427a4d38733878302f4e6454796e79472f7630506445672f6b30544761664f5744637430594d63736b7671364f6c79506a2b634f5948484837682b7a3872422f7133474a7a504e61332b34523774614c46536a4858612b64487a4a4b6c6d7178576d7832567155722b5735554e6e555330474e6a477146783847696e345a6b78694876372f4146554e655155304d55326a504f4265665054703077725668385477614e43794434494d365372684d5a2b312f4a4f3172484438316e744976597472763641687a526b7a57736e6c6f644841326d6652656632494b632b7a4e5775364b746a394657617032656c79552f457a35757539374b654d6e34664a7a4672723569502f414d64777047386a502b58736e796958514f7a44644a487455374e6b2f56537055756736495956536e774765367563426368583235414c674d5742546347525136797a446d77567a547832756c304d2b6d7a504c55355671356b425642306d575a665a35567355704378344e4b474761545742752f6f41634456327a5476707a7754564e666f37646e414c5530352f6f615368687a3643345562586b585a5735332b3446567566544e377a573737436e4c416e716131437362734c4a75394f5a4c707557746466546e64312b4b6c504f6a7a71564d2f624b5035443653435a7956356937596e4a7257667479446e453578336a4451526f63516a4b6d5854554433526169706d356a6270784c4f504670515331756c6f3544516a50316b694b3568426178436a346a3461527064417757617844512b33702f41726e49344b725730746a58424d6163327331497a7032547048504b585176574a724e385534544742756d6d4d774943683545715544476d554b526d644a6c69464b4e43726a412b614d544b6a446773577a4e753563735539474a494f57526767316b62706b3964664d446e3944764b63784e4b5757507247634a7763556b625a70527a5a476d3459624147704e47683877664534503841413569542f706a392f7741514c533154497a52783833375a7a5a6a427279755461737275514358337445444261524a31566e49367032504434506343394c33746f4157754f6f454f78366c653776702b66534e515138473674527335474b42467a4b466356386e507665316a413549446a2b7351774350564f6e5032304f47504d454e6a6a304746637476437a3662594a3844585663336c693036504668584d4961446d682f472f47545033493372773778507355696441384e594973376d69425379665a7330723143454950356e6e394e646369656a536658314e2b72596c333346496c486e476a79593479413130524277484836724a6565717054614a464251542b3078796161755468775a383956644b614358394e7456583756797a687a75483355756e2b47636e71444e656a392b6d4e504c55795264526e7551436f4b71454264374b3750715a70475355777251436171564f616f31652b6b663841707443546e37424c482b4f65544e536e6d653834675641677057624270687a326c43724e552b7038644155565376467848387443452f73773433342f6170774159675957513052557a6c3049426265344e513756327a6e39577844786e79353644532b63496331693149344641304677334b4a30694f6673412f48306c704c7a654b4251345633314a6a374858616c756369714e4847432b3574457053702f78476e363438412b663938302f43496a774873382b6c693238304a65526b656c4a4c7458614b3372493249676b572f7345524c4c344a624454516b75454a49553439494b5855306448374b777a7a617132784c6378796c4a4b71795545305538746e6f6f6239706d596a4a4f3852354838326848473553544c726a6471744d5854416c6158677072533171396b666156544c3764786d5565597854786b47505671484f7978306d4c2f4145787a6873306c3942337550686643312f38416d306b6743567363776a4c713963504f2f6254546f72614762566d4848563978564650436358574a745356477433326777317463344845487a4f4b4d412f52635253673355433771316775756a73633672325566425a377339666445733852716844504a33432b6273615136597553615253644b77637a6c6d5230324e6f6b476232765573323253636571414679353948596f6e79796b645973714c535437467370397167357837706a36436a42354a4d7a556d6f53646d32794e553064646875636463434c775375656b5466733155314456524f34566958557a6a377631523753703756384c6f486b666459655a7a6c3861687779313876624c4847504b54726f44734758774b382f68365845757563396867532b702b795465696b6672474166724b37616144567a4f43586e316e56574d5961364f3438773030483177393149542b315233555977624549452f74686d3044436c58446578776665532f557a4d5562386d58623566585168475467537279677050485a72584b62444a537a6e4b4a78573562576c37442b7a3938666d4d7a39783942474531394f662b516b496d4f537650625532694f337558436f4b4647712b71424b567357397a702f734b554d7a6736434638423747544e454673665443596b5a78766a436546387970316856546e383061657a797351317158736f56373245785037592b73324b2b79665644785846437831445a50384174766272614179506c764d56726e67613170794d62387464476a30472f4d49726c2b456b39454139395a38593733756d534d7744733974695848524c513979523171437677307654615331364d32677459686b686b675a4c4256786578435065523873625358756548464d4250536571324e4e39546732545270537543593471352f76564d2b534937745535614f4c2b5a55746d6630706b4b416e642b762f7242564371784131477462356d50704f43523772756f546f6452384a34586152627254305a45446c69417539704a624f686e54594d787741484a75436c3567795842554c76315631476a504a596a59346964334a73715669716e574a667a504d4a6a6c4974444e5849676e554d503461512b30736d4a4f755148646a345452627968512f652b426b7232544e447277302b744b746d616c3670362b4f4b647a6965315861652b38542b7933357a42683944374a4a57564f6a4b4d377442664870313832706e5775796c356a306b7969662b4d64503854484d4778674e37783667396a45703649705437464132714a2b717162527364646d305463677672672b6d3339525472795a7a334f4c5937374347526c504b74347a636150744f4d79705737732f4f4a4442736c44714b792b68623830786e4c3349765155553838394f6655564272626f7536756a39434d2f7661716458733441742f582f5a4c36344d6c4c66537a505832322b464278785579676846536c66656d4e4e415258526458786c756b4656684e4132644d334f426f382b5a346d372b675a5363514b6b72375650424f7952372f414f5058745966304a6f6761756d786849427975304d557a5145324e6e555a416b4b45673047745961516c4b696f706f424f6166616456303944526254466e533675624b55614970304d7547634f36535031646b744e704c6f456853337638416a4f7478663041686661615756756b736137507071386455337578414b3639426158445431307479425330746431676f4762692b6d6878722b526171484b667741776e546a7472304f745a2f50375349744b4837506133506c6d7a612b464f724f517a4c7a5775314e4258787a393577754e2b59446655424a49366b71443476694c5878506d61754c4e6e796a2b663777685059777253304f777169705a6972546f4c34775a546e4a6f48303258702b5835506846794165356c4b4e4f6864654830574e50364d36714b34724f383459736f6e69646e74574c2f71336639356661476b626a615a6930485438554839414a34583071625a6554326c74353252466f67755a304c37624b6b324f4f624b2b416632325778554b306d72716541417264524831502f5541414169566a4832444735737648767a49492b6b4d6563424d794f39586d684f5642564b613637343648653068576c4b5575634650366159544d414c326446716e3538436e737131333842314e2b706e4e65344638586f39716d584e7355492b6178656749724f3477456b30734177547a6870634475537778376c374766747a324d4c7445367546566d5166587a35763544695930427858376a3050354969495a366a3642676d6831444b6672757041473759356f2f62716649697566524763666652572f626c54486f6155754c2f493675774e45584e556a686f5168796532557a4f2b73507867553341644b42436b474f42334d4b61664b75782b5a724f57636f3246736d5a322b655661534e6d612f354d304368466c457764542b67644f6f4f544c53627177475069424d6f3958667a745333537168304d64465a4e6c376c6870784b547a524f78773565695930584450315471316c4e4d514f433562567457474e706d334b70737055736b575050656c7944717476633136514c536f6a747a5263615a5a486b37354351416b464866707a75366b6e7a49634471366430385536324c644f37344f35745554426248377a5843532b3132464738316b664375795651675a6d5a4a32477a6d6c50734f475947384c424b634d4339575033716a7947746f6b674b544b54514f65364a585a63323746583177396a57776755766b333650374242516656484a4b434670302f4e6b3963694c56376d53543272356a683062744d657171374c6565646d72446c5633303137687a6d386568397978686c442b673634415533574f4c4a6250536f3634476f5569387536456972306a55686c466e615961702b4d4c4c2b34664f79537252396b48496552456c4b54535143733275542b50323658756237454d66626d4b2b74476a5336433650355a3056744b795232714e6e32744b4b56593945503159302b48796f515573426a467230346441486c52336946555a4f6c6e43312f466a62566a79387a304a31755a702f795878304456516c6e466d7051664a5856396a336e2f51416462555936614753744a717a2b673171357462506c556b37645766427a70786b34597a743076497579304c70664f786c4a2f45342f7744724f46456750434f6556655859755354312b5350716e6d54724f7357303043384f5779544f566d5a554e4d35462f48334d71735a2f71554431753753342f714a426677687046652b74684636716454597566426b38586d79543176796d6552315a6b5877474d374533597751797866444b7a55726f75736164664866796b3150776777314a54587a74754659386839787648635039706470376c516f5a3244337a62552b5251656434776d32693269636c2f4d7632334c712f695569442f75663538702b7048376135424e62643849736c65414b496e545a50775a4832614530554378316251564e4f4a49377732523653514b6a6d702f6d75596662784e446865726b59634d4b633939764546475a324772516b7173374f546d4a4164664f6879325a374f783665634f513256687870515335506352636a4e75675a4a503330476677695143333238516f7a705a49717447624d6f73476f75626c566b364b714b6a5769634d3872627371716e72693653374a654257327862356a4b79634530574c4a7363625435676c774a6c36755a4c6b546358304b31614f6a4e30354b5832715a786447593964667453697370567571426131754a726c597176384a7166732f5a6e3465506a772f5836426d464f4c4f32646f79562f615a31326432714a656563576933517030737655652f486b45757075397a766961386953706e733546564d414a6d453350352f634c6532595970526453584c576f7062546f66547179365a33425448736430737655304570484a714768646c412f37552f655437425850304f7a4c423866312f5545694f376d6536493672475034376c564f6a323672587a33585854564b7a383639414533726e4e73756438376c4b58376d645437434d327143796f62335630744161384556575a6b6a4b31732f6a7448357850764d5970712b4d6d6f314b6b58584c304e417155396a353733427046376b68777a375462626a74634948335051334b6a717a5869662b2b68624a465a38364e53393152307a73437a5445614f707834792f69666b51676169732f57775075634c36754d4f6f65353255584d3530734d52574c72753678546552536f726a6244487946723749365073795455416d685a554f63594c432b6e39703549356e4f4a427a5241797044633651585336626573664d48774e6f6e5a4f6e70457967684f72732b7051714748515177416d5171356f50552f774341466a522f515a51493356313331317767306c776c2b6d616567396e486e7343794d74506a4d54462b6f346c7a4f306d72437162376a5343694546667449644145475a366f5456532f4a2b4262425473525a392b724f35476830596461344a506a3061444769386b7936584a364755753731314a744435786b39695159446c6d7a745235394b53597136724e4b6e4d4378552f4b47316d44394742725357707769763430737159316a526b703655774e6451342f36422f725430325a6f734c7456553076557831637653426534574a735452576c79614f45744d6134644146646e6e594649556931595543435a34772f44723046322f7456476848397a3655386a785679336b736b3875746d4b2b41475372466a754a2b756b574348756f63627665526a2f41427673414c76704c4b3867346574616271632f5076304b4944694a5763567152626f6b44615069355672554d6e304e546b5430742b754248384b666d49694f47385a327a74362f6f4f654835564c576a79544d75546e6b6a574450316159374d56624e4b66795851354656776d6658374b5a5976737375564b626f3357676144647839485930462b3730374d436b7678797a66476366315578355230597132726b4849726f484943504f6e7a64584a7736537a6e7230634d65694a5139576f6d54765366414a37566d545253484e74544f337a2f55644c4c52684f71463275716c7652482b4f6c30394a743864334b32716e386b633373464e4265366f585a745859696d3437326e414b78706c427953444c753563414f31444432653557637157786f32545231774b6f536338504764324a754452624337337a365862724e436d785a6a54774464536d4e4e585068434b51433163624d5a4b6d32335a3654774b2b79755a656c466658476e6a393757476662586f304a36366d6a2b61316c6968385677745348422f365a4e704f5941645753374951374875324736336a304f65704c6d706f574b444b6d6a335a5057637236496531566c36376a4556306838337653546a6453594b42726d3673696568493671505178565a6b3544464c45325668536168394a64326c54545146666c416d79467857385754703657592f364e3441466e444444567268796b556e6d775a484c375551306c6a444c50396a46476638416e4a72706836743073746d684e553278363156393066384137447149704158795836594b2b4d65506473314f3032596377577764306273724d78357038734d3565775679667661794c624770397a6e4f77614f4e576d78446b6f496c4653462f3077427a66545272587a332f414d74392b4741474f6e726b7571703075356c4362716375536d4b57566e5264306245364b7638416146537a643147585766736d4a494e3951733253695038415a33706a72576a547a4a4d6977744b7233784f596941353738725361724e6e564c4b4e53685a3334525a4d35395154665a716a6345532f38663875746a743868386a6c38667354546c53516c343148457a587a3461776c63796341592b674f6132584b553441325873347a3944594f4f643130706833735a6a4f49376838387038684f59644a32697956385574373639664a417037644f456347536455742b31473753744750344a31776c51445061446a41512f5970374c386369753464496e575261516c4b68756b6e525a395565334a6e57496152466a766e56425a384c68523475794557477a3250594f32546763523072573042314f725258665a314b7a6c564478576e6f4d70304a614b6e512f55717a3879436332344b337a453866676631545a7753493576516f6334365a4d32594a52342f34752b54364f6f706832374e2b486c4154796b7a4e573648545659365231713532614479584832666158387a324e397954706c7a5730706d6f2b69674c51796e7a445a723158357a45513747754e6e6b6d6f7069395078764c6632724c7a7544466b717a613652732f375263624e5637427173735336727167425a6f4258562b723435726430786a756c31425631794e4855307266347467324d457144456e6b78306232366f356e486d6a674b4d6a426a567043744c6e41776c6f4e614f3771703956696c70676c754874304c61416e356e3575715357584a7a586479386d6261542f77436f744146684c52716e79475073414a6f53413350727165695853304a366536326451677648346a586d366659476934675330626f5a34344a5843765579536f65635a3070646d69446a3974484745457a524f71665130643361675a4c524f546554437164326f6a2b4e5439683964656d37567069426c56483276494546376d416f7635496e53754135374159455733764d4174724650692b426c4e38676e505462726e446e70792f497a56527436617935646b62475670413251416b7a524f67614864342f76786a7954704e51635247497834433551314a58744854593548494d4a456a4e365654382f477a78592b57722b506f5239535476757a574f6e6f3552327a71682f5358544449507a50464d6731483972754534556f3379485030383353346b73344d6d68656e4b6136724b474b7375494a6e54726859386d4a50354b4163584850634e494a6a43576f6149766f38644f5055464563734b6271326b7273764d6c4752484b69653846596b66585a66566a51504b376e45344554556d5a7946774a2b5963653135686b754f536a354d702b4f6661492b575a4e734b5572664a6a6f32434c6d694d636b552f483630506674664b51396358516d30756d71542f733171357543505a7261704746325a724e414d695238704e424c4e44696f382f35624a6448547a6143526c37673365315239755550666f4f6e34706958456168357746672f6a4a70334b30654b6d507633353034626f354b4c6967616d77416d6143697548516a56554e4571306c4659445a58425142476959616636302f616573435a546e42647a49386a6c37543971306f66716c39624f65344b7378594e5853706a724b4253784766396f666638665265423935306150737353464f505a387739646b705a5269616c50466149314f374e7473474d50767359336e30346264724d4f796c7832556661682b7463766e794b52596a67662f425733734444577a33396b363170444c6f7541614f6366314e42533050544b3353477574375a31757155346d49614666515943592f302f774458792f5a2f6f497a6f5a424f6a3550747468656f465153787566616d61536c366337597647683479456c615753732b714269376f494f5133646e3643574878344e4e444c6650563950726e4c43574e734d6c43387a43347636314445683972737474337846734c61786965506c4f6236332f484b514c7450416b743848312f514c3578363754697952794d787a3371376c387a6961435954627a74703568306161574b37372b4f47636e494d324f70565432536d61696a6e367563765837657534463154333074324550664b526c475374433772496858464152727a565161534a5538354f4d636f3145317337564176374e6a534867614c6d663155556d6447717666715053724b694c55346c5a4956743249314d374e6365613353366a5247342b66564a306157746c6e71562f686d2f4e39622f414f2f54743848302f5150622b5753365346556250623331452b316c7553304b3672425652384a7938396d676c316e79616965312f576a544f4367544e325a6241426f5632446d504d44524d6c613256784474754361576e7839633463484e62704a6c58515571394837446d30642b4f66586576684f34716248483942775a71462f31586e38767544334d664c6d7836386c4f6132627365626e4d327447536678386374534e47567a4f70785a757874526f546e7354366969354a2f6d6158464e385a4967475a6464312f772f61526835454a356e6a646456465467564774326764364170584e374538757474314d2b776972726e577a4d626a315564584b3559757354496e6f67446856464f732f4961787a793979667435624654556b5958614a564176477835646f496348503841484d79462b65624c35383656727453787379353139476363715531706331494e44555057397a5a453654663558576b794c6b4e36474a464b5063754849307174445a32595861714d336e79513062326f615a327037332f36637a67563873644c5451416a4365744f726b4272346539464f693476714b7230644c794d4e2f556875596e5a6d6e2b74387242644e755a36324d57516345777a514542446c7638416b4635717479706c4f666f7a426d334f32395147467074706c66496a75703944346a686c2b7374315353756850724f792f4e53626b4f503749674e42424976637936362f523558486d636d736b2b7546514a436764696257476e797544373149702b4f65574d32546f2b4a726850766b694570396f39563877554e366969734e4678365563745054533171344e636635424c46555762546b596745796a6f6b6d523237565163594e4d37432b76536d626b64444234464f592f697532312b687556646f6f68567761436e5967485a444a67694b362b433764715373336242755847646434726b6e764b6b476932614e3143627776575246382b55342f4941647078664d4b49356267733035503155476841782b4a725250616c6b37685958794a59524c5a4d594f366d472f35782f6f4a6e69773063355871494849694c4f3164357136386f524265532f4f6e6d786357455471303063752b654f55574e732b6f53665a4d616e67364f69684b673148382f727348794b74636b6d637a5174767a6c6262634f70554531503841433859744e4c4a724a316c56567866756973615531466141696d49774364543147465362576857595939456a7163676a6476565a72542b7070326a387a732f4d6e626d6271644b486c576f34763549794832773642776661443953304a7563515748365a5a767a584b307147706852733555586a624b34746a5736686b4338744a374e4863586149526c64586f6b325a424a566439774a674f656f4b657a4e64612f616b586a546b5a687569324c764a63544c7071793836767036725a6f657a5a31784372517a6c387564555967794e6d69422f442b784352314a7a7748616d64724b696a765766776e69677a4b646b453647302b3832326834396c714a5838624c6d696c517a775a36516a2b7830717246556c786b39557836734b75796b732f624e6173346e796b61365a546339584472626d736b7a557656506d61566f7a61714371376f5a2b627a3779716e48437a4f73726c7857413962706e38346d6c30616a732b7a324c5945504466346338584e587555582f37736f394a336b6a50727a7a4434314f50746b6a315034764e373353317066485a644c6c455856714178636d543241346770444f3237647739664d624166485765625a445442546b5a564f574e6d6b3565527362664d504c7a34343572313161645735316245697632745a5233683255382f774135554a612b6e325a6a586e4178366376795a6d61324846304b6d65574f59664c5a39764b306453314f6c625577703738645a5064375a58465046505134576833567a51427674646442667461655850694e6e5a4d75772f494d6c33664a4d65542b4d6a3257363275614c77626a56564f79365a4b39576d784d78707733753070577236682f5162624d707045536b704538524f353063483658304c72614c6c3652776471736f57336d6f2f536576506c7771343771447254517a5158516675554938372f32466b2b424f696b54437a7333483149636261462b627236476756534c5a6d614f7a5238726e6e6d316479594e4d5a4c42624f7a74326f5569347936644a6d612b2f5855456c4b59347a4554455a34794a5644312f4755446b736d4447307a7a775a4f563858386e35432b4c5253726456413269776c3573664d635a5851496377564761564e54594577636d37496b2b646d5361504c4a4a52556e5766794970762b6f436f6448796d444c6a74546e435769777a6f2b756c4b425651662b39366a4e6a557154544e537175374861345343336a6d6f79736d515a55586a2b66705a695a726c30507933452f374f6e6450337943664e432b67754b46524c6c346f58696b6d6e71684e47536c546d444b32703378415164343865726f585a31656a5872394c5358786b434f30555363474f63657656392f5a6c705a56553563666b542b4e375334686e733967443775495544477a6a31794550696f7a6532717958334b4f624a3669774c38334a6b2f6a6d5a6b345a746c5767476e744d64566d6b565633317855727351535a712b676d716c53666d30423039476864657a4d43416f415734376c3644504875564939374a5a37782b6444705549465052315039774a617a6e42316566444f6c4c6a61774830704444634e46567733716e39352f4871324c47546a4f3675656c44374231616d38716e6d586e73702b5a597838704a30376b75396961624a7157357135675347377558736c6e587861484d37393171516b5071517a635439616b6c684631696f55302b4e7558725a5648612f59396976726d596455446667567a506a57664d4c353477794838683733496f4f77614f5a6f33564f706b31737762616635724e2b4a5438755a525a624e426c6e554254516e324a737a557550334f37496342442b505a4e572f774333453557684c524850504f5643755767464335354977306f3764424d354a4b4e326f6b4f71506f64622b2f6d452b41442f414f675634654470566a426d646f546b78575338686446434d656839725365516379326c5463746a73384569744b4f4c587750616c4a57454a67616e577a6173385157783149424231553438314b2b535a345535415a75657a325a56576e4c584263534d2b7165656a536f732f6d4f6c5174663761634465442f714a6e395643663151306d76376e3548386b334436764f485436716d3562394e64463363706b715633634f6a4f6b4a66786f552f702b2b513168396479763266384154703542615736367053524e44725a4b386d536949357058636c6d4555766f6e61537a4b4b51733233486e58386e42416e4a43627152427a477463627035425762346d496e6c76533332506a3234356d734333566539454a517042657a543266726b70374c4435422b68476f765a37326e783068716135516644416f6f4b633459365a63395a624a6b7568535a5462517030314765436243712b4746732f38413247385134696e2f41456346514e573551556b4741506c70416c615064416b314e544e7a6b6e5834736b4b4f482f455461314d3635776e79383058536c58507831446e6b784c414a31414f452f7743675535396e4a73752f6d66596e514c47766830514c3476656c5831786f304b4a304c582b6d547464524f4c58386e5069755466496d62356666374a694a6d654542424157444f4430632f6b69636d334e69505143696b7764457556325656444c662b75325543553977417836763155304f4131724779665747424c314e2b336e39623861426d6c6765354a716d6549386d6444514d685038417172347055367376363945344358784e6e73635969357a766f66304152656f7a45352f41536435392b39776a6c32446e636e636e4a30437a373538744c3868637a68644f786b764363785a5469466e74506a67464b436e457a6d51354f61675073664e46616d6e6b644c4b464a62304e4369622f414872354a4a564648314753756d7031444a5a69635272624d5a42372b41777636675979454465684173306a7843597a4e74656e64715431544f44375031716a6c2b4a36533437556f6e58776d7a4a6d354d4264533158546e2f6f423572786c4c76363754304a493031547a52646e70543038725754486e6e54512b7a4e3968734a7565736c4a503247624547784365424e474b7a417a584146733772572f4c31346c52425648736b6a6a615a5970364a4d2f4d576c4e446d3066736d55644d505974545541343355483333754d4d48706b436971686d392f77424b436c34764f704539544a544674535538366e6a456e4f5838745577554176384163334665342f5972324b53414e48746f745437577a766b524762337a392b4669725a68586d616c724a6e534f7a5572483279736f5a7a3547706d44373566454c44576f4f41765a64454c565331705857365474646462666f3964484c6f6e445550416641726f554456534363746845436b74424b66314c2f414b6d4a2b454869714459526531595354365336724e623972525a726a3973707a537a51766d3474564c6a594e69352f6c3478694535582f414747632b515036433466537a7854493837783177372f6c6d316765576739732b5932587059302b7644442f414b3837556e59432b4b6f487252715348786b5a6d50772b38336751664c4670783035687350347a364a315972516e30744b53374d55325277644547633678484a7835525353436f4e516b4c6c7a3848762f74393575636e6f764548386d3854586a505a6a346f357634766e783462757a4d31345449736966307a386457746a514a3973686c5431557764537a3254393651694558562f37506343534a664f73616242483944376839337447303658444e4c626f7a6a68586a6176617a466339717461357457647533644765304931356436515a6e6b43487154523256633639587154653970676839496c3166746e5759395950524b67663832384a58616573575147484f647a6e6c6d30524f36745a37574e7638504c347a3466326b616a2b612b50582b446179386176472b553647514d7a34556b6832552f4c584b537452614648374b43634648325033397067664d37515544752f45546e4e747a5a6d4a3562563758347369416274566c58796e4c78656465774e472b4e544168347368677a6e582b7865525a78517836426c644b6c546e417458374266574f452f6146494131333172547a514c4c4366376a74436d3845784942616f6b5475456c684d36506a506b48743170764a436e4e42644a516f636e39676e6f454931497a32356d4c4e33364b4e4674734f6670334431657672544a3548546f665237506c38363465777a796f6e4d462f7433654b667a2f77436c704775645148566e63633970417a6d613279654872306868614e6d584a6d4f6c2b3644506461495575306e752b724f394b30414e797a6a436d5033766e536f453138672f6c53766c4e6a4535394c3834487a586f7556624e586d7a67797a575355376b5643724e7a366d4c456e2f4335744a30646f37302b473447777668303075374a434337377574433474477736454b363247475652525070583850743437506f424a4936485648396a712f61507659414e5a307366396975572f4e7264533531587956386574744d2f583566582f414351687852546c586e773055724e513834413071624d51646f4c3551526174527774303478465a4e2f6930305231316f4d614f39355a52772f69626f576c7055423971344838516e684b443547674533735335594b645176512f376e5871577579356a6c76504d302b5a7153705575536b4b644139413569576250682f5167464279303242536b434551486a7035444c546e4c53566e596270426c74577132584f706e7a61686c35664f365853335a7334644a4a38736a2b76524b3041514a50396f50564e4d74637276366d4a6d4a69517930752f794233357a71625a6b41416a6d547a6147566c4d3533734f55593650584e583764495658653573704b574c326b3976464159666f4a6f366551432f4a646f55505a796d5a6b73356f546e512f666c6d6e57354b6f4b70777530326134646e6f4b784c4b7669354f42644279542b7353457141516b316f567a46656f7249714f4c3074446c2f4541674a66715071782b4b376f307a564d586d54737158597163327a3076486a6d2b32786f4158734268597875554f774462795a70474e4a3464374c4964776e466e5575305a7233574e2b3779464b666a7a79353151394d4467706151544354572f7742413867304a387a7366494a2b58556a5166366759524f705a546f483761436545306650734c343734557665534437515767424a49776754542f4145434677766b534678785631386a66517a3938354947635a756e686b7a633633586a346734364453786e543738594f367254556e71546458787768387968364d6b4b634e4b4d7953332f59735479376442587567306d544c726e6879574b522f4f4b7658443372474a6f4167414f2f49616e63554d7a6e4d3536684e71344f39306a78312f79426f795a697a473755545957693541354f686d2f722b62393338687056726c63394656416763504f75456c6967434e4d424f686547696e4e486d624c376d30527359366a6c326c52384e4f546f636a4761657478704734527a79344b584a4e4b572f45734b7a6b53437a747a62667967577a4f4d3570455a3053494a614c4b494d394676654e42556d6f314c766471325a3876754a69656659346c724c536f4f6c3267732f65376848317674346779724a2b4c3354584e647a74756f3577433359716f2f6a714d6d68504a35744745667379512f5657796451456470487a6a754941656a386a696237654946506f715833376c5631626147553173784f572f6f666e46566b372b4b723261474f6e6c715579665042616e6c57365148652f6a666a616d71527965663248374431394a66445a613771364d6375645a6d565361622b467278544a79324d717a724c425551305131634d4846615a417879666934585073482f532f616b4d337845754770564566557931474e3077314d6d726830733344304537433462447258534336584d6f317638414269506d2f566e547254775170372f5651635849776d4f7a382b6154505442394f725668626d6a487a6a584837495a3675564d497441614a6d57645539432b634a553142645568794573554345334b45636775702f633754376a6f74646d6c4f444b5a6d4f76377353727376635643303964626d4b57314c68634b67625154666d49684148434c39427a6a35464c4c506e6f547650666e78796f747a796a676a684e4d2f385a6f55487972355a35336337384c516f53594437692f3634386d443542545966334f796732594164784532725265717a746c6557676369522f38414b66735630796d4b616a447435435454536f4f69436e7553344a68345a3566722b4f585a586b6e6a7455412f575157547a564b715770326c484f4e68787761533833506b46646a7452576535675439734e4b446f543761446f49775448574a67644866546e314938633952385637737a526d6c757a7a4b54627868764c376562595836597866654949686f455745774334492f3573412f66302b4c365039556d6b31692b4e764c2f41446e2b4835667a342f6833594c62463379386d5a78724334532b462b7a396978597963503868594a4f34594a4c6f436636397868336e2f414f6e336a37644974573139382f44486678335454467354457a3262626364716433777838465372764b50416646645646623259716862576943657471702b7a2b3736522f77447050514b45694b4551597a7041504239702f4d3443372f6a7753704d3132784e4c54792b4d63764e4d2b664c77694f48486d336365555556354c7a3066796137503554787a645979724d4669312f616632324c50657a4c4f654f482b4f50724a5a78314854385170616d6830676351663666655a7a316e4e59356634762f77435831582f55495470792b6957754e71655a586b5a52774a70523339506477416e5a6f684f34732b5566636c517164565639377448784b424b5356535938416a475242376c2b687a623941637a47335850323457504e5536463934716a5855324d394a39456a4f4644704d545a434c32754a5a712f7863385866436b77727a2b58334556324c6652705763674b6350796478325061586337507962716254465761744856354966633435773949633656374a444d3038692f374c4f6b52754b385a376857476a742b6c46386c52592b563558764d6a3646336144575064414a395765345451356b346d6d786638414a6c4b3441465a7964436d6e32443879536f2f715a726565764836696f664c504e66446f6c372f363843395151485664644e30702f472f7232374b52306d53643638595364557973557575564f7178696a6d6e2b5a764353616c487058697339317872483533675a2b6e354537665267616c4d6b6f723471326a672f536b79492f48713747353045475978723950515350584c3434672f782f6a5a73336c69564f5638742b67313231386e5038655a567a7943664f51695369325158575735314a426c3367757147584e6d706f514768594d362f6462797350643059363576384f6c55353831695a6e674b4b3066496653784d765536666967627159617a656a547a5a65362b686b71597171327a4a56636e53346c416e484434753265764d57634e4e50736d486b377547423634742b4c3743453658716c3433343865547064384b386d796e4d6b6a726e376d5777314b3153787037496f594d3737646e76732f544d2f506e443555766d55495667763569344644473231754737723541522f382b3368785263637a776e794236396a327571334c5368646c4a6d315857636d336f4d684a64474863715974614965417a2f64486d794d4135552f4b4a78746e38632b76714b30753958764559746547722f35727463703162413763624a46354d50656c4e6f36564647643933546353384e326d4c4d58685654736e2b53774f30744577566531756b567a385838774a7039586643364f563071394c5049312b514b5866747571744b4f55564f707a3669712b634d346e38544632466557716a344f64376f65796d44684848516666366e622b61503568437a3171384e6f62386d6c3649367a4b394a576643656335415a664f4234396e31565a4f674d3064515769736847476e70484f492f5a534f6342307a55574955322f6d6a2b59475565642b6e326a61364856394b4d756a364c6450513045764b476132583949545a704f6d7372645134766c6c4846374c4d7a6b2f7a4c6d573048474370356a6e624f65466f47552f716e345975534e4c2f536a794a5075717a6c354f6c656330616a636c366f58704b2b6d3455584c567357547371424c5a45664a4775524e6866392b7a2b6f322f6d6a2b596a6950566e774c2b59462b7236582b5248715931305933534d546d466e4f3234733836644768575a526e783051724e4a52564c4871325056546a6a39644b756746785474746a68594e662f6e2f6a385a367a4758364a6133664a4f43694e677a3653366d746756504830655a596c342f38414873526f316d437a34302f44724c6b73363458665644344a35325a34377335436c4872333478504e526e35666f6c5476396a735768454936576e5768437a3556586f613169446c3752645953394f694d7150384147393458692b5a7a4c506e6135736e766b4f49665644486b6c61334e39492f4a725a696c56586e72334e494e4c2b625855374e736f4d6f465167724e306e5a677053706a55554a4e356f46667957516e6d726a624834343966554d636e31693859696970434c304f6a44547552464865334631444b5079444d64446f42582f483055564d5272555257556678744a3859326b43536e327a2f414841634e4d7a57652b333877337a5058767876376330474c365a36664d566c7765516b386c6677302b59355931616638644735646b2f4a647157346150704a6663524c2b59577866364771614c5a50585045464b505646326c7030636c3948624b4f514b7a7432392f327150354e6a447a727450354a764774516e4b7964516f784a4768465a536e334745776e4f6464564f63364e6e444f344e543954637a4337354c34726c2b6a2f6c6b5664664d6f584d5139656a536875564a7562656831433673656d644d705a6268366e736b733833364b645365413333684d327a50476242685a36705176336a30492f52505738707258642f485762666b6264424d39536771714c49793968743374356e2b5353353766724f44506e41445670436c535848516e76384155376548623465764d43645431652f6730727a4a50524c79435272636d35452b62435336574c56434f4c4e6d454b485764536f553651347665384b617237417073543939794c4f304732392b2f77437671524a4d6631677a382f354e5a33705178382f386b45576576596d506b51356b555767375756466d5461456b77787247786864694171656351346c4b5a524e4e384c45316e76742f4d515876712f686c576570463651395a426d3372424844304938366945384f4f362f53697954476563747a78735a35386e6b7677304e374f314d62766c475979622f5462505466362f6d444633716373594338675a365576737279644a383650486a3375313567705a485258505153394c4e34424f6234334c54624b2b346e5555544a50684a567a704d6132643234563658724a67624f59316f2b6b57373439647a546d733165364f6a6b34755a3130577175586e2f6b614a5935596c727a614e465a6364396448745562325268336755562f3162624d543238695559766e4752715a48497333306464495163644a6b3564394d56302f5a6730624d76626f6933746946412f784b4d39714a446e525265617a637741556d69746e4b6f6d507a3439665146372f4e4f5a6e62644772774733787a4666666f49586c3142374b4a4d767135394b34584c34524d584b722b4e386652564a51453356512f474f6934552f744c49782f386e722b596a356558685a506b3972394a4c4e444c426d52745a79654e71706d7a6d4c7a4a37386e526d59474b4d554d444a36506d7046794667736b7541794a4d4279386e625034353966554d6a382b3864526e643037505257496a6f6b7458654854786c353865753353734c657a6f2f727a314d2b52685575436e6d6879627268514b6152702b396e4745596e4f4e2f3977743437353557397139377854306632464246726b3164694e367533503841686a7a454937424b74736179735038416935796f62312f762b2b694d797652796e71666c545878734d735431643868672f6e624d6630376830667037324666586c533178517645637951574c706c736e5968447630357a455563424e4561596f37456d5a7978705a4f327838566752483169386f526d535362506f7a7450422f6456326c6172794f65374f30456d7536527164427a33636f716e6b6f54387444596d4a426f3652554a4f4a774a736332566e7059503858314830714d716c49656c486a434c64316462726d31372b674878376d6536463436696c416a6c6b2b55355a4a665a386f4733766665302b4f624f76744c33666d4748504c335a667972543666564778557a677043686f636562394e2b5470396c367a7454563475677439672f5951756d67327432436d2f63516d71656564732f6a6e313951566b387931353959397253394d382f7866556f436178786f304d7650736767374244506d387562597470613977366b396b61752f38544e2b4a7a69372b324e495978474d622b48727a456b77647a6477716a6e7966527143374b314b376c3150334e4a4a7532747163747050306c7052633670624231492f5a564453553662506a6b544a4f705461666d6a45547833694a782b6f794a2b50765a3659364b67524a496c584e486252767377367647694a4231777a4a396c476f58464c367461726b4a4f66363378636e483333786c50752f4d5a4b3833585137412f6976526f6f68354d32614230766b6f5a53756e5635484b394647586e5675376f4d4b71684b2b4151546346644a7a64596c4b54593057503841355058387849413835757a745231732f67794a733663616f59655939305864444474665070655551497630314f41645a4a3657787044524b5a5a795341364845704b70717863782f386e722b596a74666d384c627666692b6b3965706f726e564c6f426e65514a4b4e4a49484e756d747838665478326a705474386d7939526a4168346b696a6d34494652465759554d662f4a362f6d45346650626e366c7a2f4150356b7164654c4c6f72504737794e4e2b5a7a722f62385a476a4d7a574a6b5a55735959786e426b645333786e4d772b6a4a53446d3368322b48727a474d66714c79325074442f4145663174444d7450374b4a336e3541356b475543506b7a78362f52785a592f4a4b4834766c6b37585473346876667548546f44504567727a65373877705a356a6a315a646d63666f6c526c555375556e5256632f4276587a5264502f41654f6a6d744b4d4f75772b65554f644b3552396b6e557235715a6e676f2b667069326533362b515a75387569444a334531656e30457235592b38533250567643654673373874734b7379626858636e574e6e463258554b616276672b6b307953536e303862655062342b764d54666539527263577334352f53327576504c375970526470593857616a496f6157394c625870386443544b46757673665039646a4b54545574744f6966666d6f354555696669487858717074364d4e2f753946594c704f4b7130574e763874747a6b392f38414b2f75492b7a556849305377786a446e356241697161614237326c79612f69752b467a624834343966554272764e39322b6f3134336f706835655a6b39664e64526c62303368366b4e5376353670744b7652454a7333466c6b31444a764a34334a7072316575516b55742b6564746a3863657671412b6a36722b627551795362304f586f41682b42707648782f774173524e646a51525866596b6347626179666b655770316d77584272585345396161724c4855695a314a74746a727539664d59733951744e2b76695262336f744c7864475a2b6a65693242326a4e72364c6457504f374c624f5831644c502b786444544f4a4248655a2f397066316b705362577a7774694166623673323878455853656a4d562f56313753354c6562564349447a6f687935744e38695a4e42736c544536466b6467565663664e5763612f67736c6a6d374d4d62655062342f66384171464b76574d4963474f65763066314d37614b724f647162452b6f4676492b57356c503637392b5039727752526e30614251334b436463664c772f6a3236736444714f4e6e3567326b3959625a4d6a724e443046754f6d6836394b7a59487956646b4764427a5830437a755230333748467278782f6b716a393956674d7a526d41332f586f3931695932636362677a52366b395a72552b5262667043697575724c6235474e452b2f4a4b6d64614f304d62566d5a564d2f577575736f726f4e6c55744875582f477a487a35686f626f756e5a3362676b6e3148786d305954792f486656376c43316f55316e626430454c736f7a4432646c477239716d537a463772445a487a366249445a4e6554592f6b6e4f387a6e6250343539665545632f637a4e72395346365a4b7567375256753342487439706c4a4a50545663624d57484c572f6173576e4c683648413739693876485571415a6766624d714d662f4a362f6d44477a3671342b31695533582b6a614d335462546f7078453061546c36506a2b5478566e617561656a746435574f6646715a7a71796541736b432f626d5653366562324d4f49726965312f6350572b6f534d2f5834697a304f324d6b3038504f79306d724a3341706d62584839666d70704c30474b4c59447943577a5169486e4434683079314852307839383745593759633939537647444b3478394e33312b523572646d46666b4362646f3673344e6d616f4175392f7742795a6c57677165694550706d6d61686f6142536d77782b776462624f4f317968465071374d666b475046354c3658624e4e564277717a7358537032646d53684f6f7654665a7a613150706330566a7a53716550657234636161514f4e49424f4e4e444733684f4c6342664868754e6d65555931757866364d37636f444f474f676830592b4d577871644c717542744f5839744e6a2f41436a794c50487352664e38626b6a5a4168485a6b70476b7a6a687534664d57316a656c4c587667526e656c6d7a53654b7a7365766b37486b63564f37445a436979504b7376794b49347a6c58326370304a346c43554f50594e584b534d7a55646257696669342f7a443966704c3965756a7376703933475a4a4c6e55796e6a54785a2b5a35436c75646e30342f5333614754767833546a6452787038565063366d38516b6d58436c357a546d504741316234626d7977785a79665466794c4957552b70713335657252683468567030736e374262556174544859466c58557a6c5967654a4d476e3871544f7759733136713866787839684e4d3730784a656456667a30764752444b49637a4b70684e47646f4c796a793667592f4e63764839716145374750516a4c70755a385230582f584d5451516c2f54644834703966514f4a66414d66544667782b4637655a7342586b79557772644c486c5438792b55586555305931304a5266782f366e6c387168663962716a6c4e4e4a6a50476571414a6a64663850326b4569394e63333371317444774c61377167374b4c4b46317a626166684a75664a72647079752b514e51347579324d374f7273316652467a6b30706548324b763662767a2f594f4a6654767845302b4f34506a7670625271356d534d576f4c7a375038414a6e386a6e7a3572313330654d7a7a305136433749374b6d4c58544f716c756b4d77664d4c6d324b627035706d775475395050473131362b705a3662366377337879613145633262527173523152354e5565656a44623734584d5a6f46744d5478394c422b743941434432786a373433577a6a6677444458394f2f43426b656a5339492f4c4d6e737445764d2f5750427079326b716148657531646e4c566b7733637357493642556c493269677030303354416d6d66384154686e4d3931342f6f456d2b6a2f7046436e6a5a6648764e4d4f533358352f7871776145613130646959694c4964705835387034382f38413541516b4950705a4770736366547a6f2f7030396c6a665068416361587042365a3575564e53377852584a4d626b4f4774504d764c3157546872654f5a74456d6334314d766f75594a554d483968474c5063432b716f664f3131796d36303962667a456f78765354306c386678585957723456747a385a566a4b6f30365a73314a4f3248375565466d4b7a644f64316a4b4c6c6550793533514252754b514e493078717355416b636272544f5a734231506f6e365864694b6c2b4c354676717430623539504e717836444a6a4d6d5269626a6e484e304b5a485a73535933543857785a4a53507448737778394d2b54766e77674f67394b665432756d5a4f6c36666563356e586d4b4e5038416750474e532f6562584b7655336a6662512f452b524e4d76436c6b54516c5968777241396958416165544e302f696a313941623736492b694434744b5a702b5a544c6e6d6b35566e34616e5a634f5567454a6d664859637a4675484c6f59566a6c796c4e4c496d697a73774a70464a6578766e77675032666a7a2b4f556b7a4c7551655761302f442f6c6c72305068797162577a4c636a36642b56666d7874304b6c5843734a794e61535a3036464737394148376a6662784375702b4f6e6f326d7a4737546d655234424a313641755a724d61356332716c32485058412b37574f616e595764576c7255746a6c57496a2b79756a54325266316e74397645545a50343865672b7532585137592f4f314d7a353571513138514c747273326a5a68345256315a44316b73664969546c352f48726d49322f454b3039417946527874396f34422f4a2b4c586f5269314a4b6654324659336469674352563464754830586130574a6c61656131736d6562726e564a4857483738724b46642b676843544b73713155707661652f71476e6b766f502b5068716c6856706251635938574e6f56677168584a4637346f48795a54654547656b3159504e4a50445677334f5448577639634f6b376b78467265496c654c2b50507056506d6a33476f6e54583964324c50693059626d77507a4e6d7570494871554c795a6e66594e4b59336977556a4f325a4d30395857705730676e64627846682b4d2b6850704456446f65507a4d5730356c7836506b68747a32653253474f42617a4b74664d425169716863376b6d355850736e44394554625a474c5a4a615774614f4d635a453068394b667877754665505874427554686e6c52666d7338645a792b534e437172465a4e2b6e445a78726d4b2b396f544b4a396c687a55754e4d6738654c55706a64712b702f7743525a4f5036612b6b6d52765a74314f716d54396465314d6b75666736744765484d765057704b557a79796c504b613743593734794d77712b4a4b6c634231594847627a4759774a4533305539436649644c744675375176794658633371485735476569466338544a546c2b3764486d754b466154676f4c39502b4178583972367167587864773133326a714c497776512f302b303136476f33797564786149354552445278636f75486c43516134304e6f503665675831307261594258537762506b344359366663364a314c52384f5a457a78507839394c68676e6d3535306e5370346d71524d43786373667076593637326c4a6c334a6438674f64374674634331503841655a706a554e4c57693935623850722b596d736e704c366334756e4e576671446d7872556c79494f4336684d77356b2b586d31757a382f762b735a59546f594e6a46644c334230412f6658714633483174615a36562f51546649394b50465573725448357256617a376c464c50716d353058433045547a6f5536514c444a656530575745587a6673784b77372f6c2b59517035546450344a396651572f692b6d302f6a524d6d436f74424944463158376b66655543342b2b394753387032433269344a2f62375863623779357a327345762b4f6631573138786949452f774364687975487056557052417152317462586c31784b346679574968364146776c304374354d582f73446a54623876772b394c6a35516154656f666e4e6e7150355444396d57515046345a327a3457667069797668313831496d7333335a394352355a4b6566397a73376742564b757a434a632b4153502b74346a455946544d726a376f584b7a6377425058657751597959524f4d536c592b6432664762756b7255356a33554e2b7771626e3650374365447a6e73482b704343616671544d306a344e6b677a51374878362b716e6d664a4c56776d464d4f4b74316c44626e7a70594370574d53437557664e54305568386e517a625a5749356d6e396d364776474a63326e4c5364523573576b7461524f577548697a6e597861645263354b536b507445354f694b784d2b4551594b2f68323837314155665642725a6a70424d6d556363564e7a46575430314c46714854736e2f69364539393144576a65366331537a4f353741655a50305163795a64446c5853796f595041526f58345535304c4757476b356d4a4247686f644c2b514e536b703432797a35666354706e63564b45637a62732b374d4237437452584254532f53595472545a4574634b3563627073757a2b6c696c3964792f5a4f71763841326634693179766478735147324c305633614f58304d6a50632b6957575850707a616d425448585839727169732f6a666a58482f414265316b2b77446632594870446e7354547a393842355256626d5349366e53316d7675536c524d6e556d474f49585075505458786a425932663770435271557478614c52675858396869464a4148587a412b4e493650644e764f32556c5736476e516f4f44474d72553146524c654d644757746e467874792b697436377576456e6345505a4d6441674942716e4d585059694f69724e7a3363695545775a39442b36776772395276587979576430756b744c4c466e3848787874434d4136484a35484f654235326753364c7a6679686f3650574c51352b686b6a323650466a754636676e4f793167725155386f2f4b6659784d41457555384230383949664853324453545a416370797770315a49787a7331565432664a55374f71665136586972766a523246534f6643372f77436d6c6d3549756b5853595a74375a6f706a4a73374a61557a565a526379624c7442634c426d75317461454c6e574333343731712b556a6f647a67734f4f59334c6d4f6178514d347275547361726b766554775a7265366a52795a47324b6a65736f323473456b6568523266532f32456a684d562f744a4a664f727337704f5441542b684f782f583257723271416c6c354e706e6d38656832566e524a326b78636557744d316c31525a343072563831487442314d6650597351454159543439446d395a592b6d616637503774324134466d6c3439534b6d58705549417a6932554c7a5942446e78636f4a6f75443461506949514d4158496234477255356b545a4a684d4533394c34355931376c346c486c5363484c466359305866654d4f30545442543334356a61434e4e5879547874506d4a504447793934716d46787939526b5a6158337248526c435a456f7653696f4e426b695770546b7866476f75646478676761615530757153314b4a6d4f6761324173324f7451746f544c4f7650503532636930584d524244635573326649355865367943367a762b37714f4a554352535563377a557141646f314d7770436e522f4b756537523172526e644e466f30757247334e4d3076654f6a4e4b6c4c61767239475263376a6135314b7a41484e6f5534452f71557a646b6857762f316e726c57667564316b714854666f744638314a7a4a424e474b6445362b4173584539702f73566b3559417341796e75722b724850564d646b7a76743063756363374b4b6247636c4e39736a57657849726e6f5a6f652f77426a792b495842396767544f4b2f3641454e63554f61345656364d2f317a624e4d4c64666c6a326a476a4c72614d776f637959704b48542f476b5a2f7266796e4864543030664b494b43567a614f497a5152427837717238377630385a7339464f63352f637a535a56506c4e726d686378584158465278376c4a576251436b4f4535557747707836686a2f4d583355566359504649423154784c4f716a31305652736954304d2f7631474b4f72374d3639465169734571636d4e4a6851385135394b5a695936672b6e334879634d7a575255706c365158597833773039794858365650735270727161786d5a5837614a75384a4d76777241506a704b6636337a51424d54526458503841596e306b7a59777a48532b4d322b2b2f6c4f646d676e687a6379316b74614d6e506a562b336347622f4176664d66514c34676c6338463262457971434d6d6d324e45713078546831357274545158314c67336c394b746854707537303069545155347937434d2f564e414a5a2f77434d5070745651764d48536b6e344d36375370616a36634b2f6b6c2b6a6e3366636f5a384b537a586462306c67526d5a2b2b4d692b75726747362f434b42695936774652637a6e392b796c7a5157515a35494c6e594b7571614143736e4f4b756459713737694e5073396856474968436c35357855705259626f5a54617157556d46336a4a36364a3257506c5670504a564e5169372b4e54336a4a2b546b4c6a6e492b4677665941666b4d703664564d53656f68314754314d6f31496b55716364646a6f2f755442595866644b54467a4b4432437a71416a34333352714532644242734c4a48496251757032617038763049324a72414f45444f515a6136482f4d303646396c30684253685964616d5279414c4f47644b5141527a324a364a43716675637972727441614d79514d766e316662786c6e4b5a2f617969633561474b59735669736873564849736c44386741397169597438396f703754644d6a396f585935326764414c566f51663772346958324e4d6b75656e35444a6f664b615630704d3367742f3841514e4f5359706b48474e616e733975664f6a693033536f4f6947566c4c6d563250306c4334554f64714561562f48325a49494541536d645044427a706c6e48456d5038416458594e464d79352b39625a2f494c553648322f627a3236484253524567584c347466515437506a6d4544672b4c36774d58504630694d35724f6f547a712b5266773145723667696f7a6b6a4e326578637130772f50384159636d5a5846384262665941476339487663487866454879686b376834503038777a616f6d57764d763437576f5a4e5a30584f356e69734a32543946505a3246387839357730364b42554470566338307942597539716c616c4f64783258514771596d39556633766c75354762716e46446a30384f59443763356a7661354e434c4163596661313672422f6b5879555561776f51746a697a3456646d44396152577864676d46667836585a524a6b67732b55326a4d5844706c5533333842335a327058693064303269786e3864776a52324f524c33744e64712b4b4b567336442b61662f414b763178412f6d5a544d4476632f52654b672f6f495133574a6e7654316e33304b496e585558666177376f364f7a57506f7736484650384d2b65535264317247664c523873616d50534b684676516d445548744b6f6e6e7379566a413062734643463665586f46434f68374f726370512f4b786e50734f35794c76436d63796e3748794d2f626b7142684c5061526d71694749706c5552614a4c647070727846356c4d376e574d61344668502f3070616d4176336d6e37412b3937484f6f457a414d3432643345686f57616e45667964624d764d7970562f585a663737434771505276576c564e6a42573751615a6d517351344465537a57303067417046486a2b57756c6a4c632f77446b5a37686752536e364e315139745a724f676d6c7a6e694c4353306d664d43307265777a6d2f774377723750774d364339334676446c4d6d674e4f58326d73506f5545704a5a6c65624376572f6c78767755734263797530536e31683054676f484c34342b71614c5567764d31546855616378696e4a3532556766644a705373567949754e597170512f6f715068645038487a4b50346241354e774f394f4d794269556770655233736b477251645239626758664a50583757786953394351563874314a2b584450376c64524c5951474b2b53552f376c4744794531756431454261394f726e4c6d35526c2f553636474a576e6a4d304b2b557730564249545071736f5878672f346e5471306532554655526d51522b76534c6b5369432f51682b47763553546f394e6a6771386637526e502b5349432b787056542b317850594a6d70595644476b3366456876394134657165683230366561686258534d5464743368585a6e72517974334b76396664426e63654671586531582b546a48374a7a4a6c4d2f692b51484e6b7051314b426569342b3166597172317830416b596a4b5270532b356e38686d7a7151783375757a3676713955584a33617063663851487a7177644d3754733643612b484d41634371473256344d6975786f3544735334485535497254444b6869457a4957307754316d4f774334663358473930386731324b355273306c426b4979724e414b4664713778307854732b663257304d703748316b7242546c786b4352625136696a73622f6a4e6271564d4153716a45304273526d63533547644455684c476e6f5857525330664e6e5a336b3838587965784930527361545038766d59322f774376525038415744727541533165323135464935773579326772616665545770314a4a3833506d6f47705a69346545794e62767270465a4a2b556a50326a3334654251515a61557131787564337259353242354176565456706a4d56647a4854305a397561753131334636525544714c3631624b566d5548772b31716a4d78434f4a6b6c64784636366f61776f6f7662792b617a4e326331774a4a64613752544a3956645873752b6a3179584e4250444d7a715239626e57674448655a326850644b7237664a386c67547a7857794c79726157497163646c65595449312f54592b504e54543954366e7a5543625171497555416b375634387664495a5163316566615661796536756a4575317554684b7830742f3841456c693645476736334a465a65514a5a566d79704b66697a2b4972484e6f645759476338642f4c6b5135327432427a7446774d6e6648544c30773032725a5a5a4e326c6b7a56426c7745346d5430366c4678632b48356c715337345a556e39696c744f3468552f6b486b756e78546648704a5a73472b59385635624f6c57413648384e534d34346d65394c46795a4c7264684f6b304b62464f6f53435a314c48355670562f56647466414f59636e486e6633655555766b6c327a6e49356b722f414a4954707a6d457a4c4c5568627a4d7334535936534b703172325641584830705459365579314261333138525a65446a4e757454512b624c6e524e6c2f523433582f31535666736c6f592b3373576c5632693666327559564b4763614d3238794f6c54565655614338375733664b4154794d4e5246425a796e6d6f696a73492f6253664632615469644b75694f6445774b565238795a796572712f59557a6e43316632564533324e39764545703861556f45334e5a666f59693036504f572b364663326230307369747a3943485057673957656a574a77395148324b556b6b4159504f4f6f5a57336332344b707257794f7656354e5659704e4d364f36457471736f7862533755763067757a6f626734354c647236664f6b394a7363466e78546f58394d334a7148457563536951334a79493548486c5941317a335676664f575431544f354f66394c6c69787264386448362b45472f74504b557535593179572b79652f6d794d3164363138714f54424b74563230786a6f32584f43537055747a714b4a77557468396c53587536786967714f6e2f68496f4d506b704f426e7077353366736c707734374773727663522f532b3532612f50786365797a56302b364d6f4d5954696e597a3345512f763465394d712b3075502b675441612b56484f616d3537497162723630356a6444514c5270747a50734e35466d334366452b37532b753447387236696e6c4a726d5679637a642f51503641566c316130646272557576564c31395a4531656e334a6c683464417776304d3276714539755a38516637707a5532597a55416d6f5a6158587a4745376c4b6f4847585971796d69514c4b5a366f796d465661374b41796d3852396a6a6f3074585a6b6733734c54483545696c494f506c564b3578777950796c36676a4159786f796f704b5453324f4643465a64564d326f35615362657563652f496d6172366334423044623332546c78504a716636675a724e6f37333139544e5842726247784c384547725362305872374a2f4630687366445038417063412f4e7464693676706c3731384677477632744d487631386d614766726d507067713631756c5a4d6e6d554434466b3265536455715a2b2f592b726d3669616e394248543977413776444e497257487755616937746c625939446e7766375556446a383751376c48794271686c624530723353314e756438796e797165415562446c534e70556b484d4450627730376b755754724f4e6a724a556e5646524655424f6270736f6159314578334a784963756455632f7932646d2f6b3253685153552b79384665496e31477371534333756a323465516e7366546a584e786c5648777a457735364f66496550506c302f76764b4f4d624e514245746a50726f6450495a32704a44584944536a7544747270654f702b446334396a763431546d5657507a53716c535332554b595938514c5a7245736a58336f74542f41454243714275524f463778504e4b6a3373303832686f7267477a52755a5571435953535464412f395246794a426c79662b534a69525542412b554966745a374a697a4b4c43594d7947536f5979654c726f49634e663841486e64326e4b6b4c363336637373386b6b6a3451596a564e49675a724a725a695a6963774e422f794e6b68476a4570747150522b4738567a54493971633945666b3643316d452f372b656b4a774e565a4e50704b4f6336637233567158474e4a6631754b6f394463707556366c4c326a66584a454e73305373717031716f4248516f545866786b4d734974304e42585953744b663435434930736d4d446d7334376b7a6162646534627336756a30766a6c6648395348352b4b75315a442b362f50624858626f56636f5a576b563757587945644253435a50503176412b73726d3032426b316341556b6a4573724f7779316e4a4354436f7a66496334464f642f49416f73384d78374a5531513641735a39507148435367346348773139663174484778336332414d6b6f3241375674375655692f49396f31525452776c77745a4c66745a56577964456c5146477851536c4a5437317149374b4f4e373333306a77776a48646a6c77466376783669634f342f633637794c4852735432732b544b7a4453574f324b374c6b42632b6847336952473657575871524661676c6a496734304a72414365486138675852347767576374766b454b303178445054496a5243484c6257576c7a4d665651686a474d68344a4d714971702f59537246712b6d61654a43754e39664543594d564132703064516d556856724c6f794e4778334957355765774d656a4b7054626461617247535a72574a62333571657a6679744e3967505a4e4f664877387630443974553864705a5a567351455a3945524c2f64547a4c31346270674454323366363952693261552f5071665858384133706366734a79694b77715052643543766251506a69714230437a745047575447664349537565356d395039335a63484a317a517248687a787a65373657504d4f65536c445179634a666e3464387a394f2f575871572b5236455a6f6a3056306678654f4772796f6f4b6b4e70676e74626a3748433170653056564f55316937506a4f6156444b464f4268356e737356624e6c2f4f4d75726f4f306d574d682b336e625135393242636154304e486b39444a326b36577050574954533036542b476b2b325a61786346566342633738697a796373616530675973724e46365331364c4c5657624e3444564a5643374e6f6f7a642b7161317a484f58582f774267314a723976786d41586f61446b596d46335763374f37395262744f31326e482b38722b4b4c4b5573624b68343759755a4f2b6b494975574b436b484b464e46663170757543644a6c6a5747597a79464a743074664d656d776a6b4c517269754978374e4450654f676e6c56556a6b696d6170545838446e765653315044716e734353774974477966684f7a365a7077313956392b6f33546b64707446655678776935463361746655564f344f487a3674426d31777a706a48702b39674666495862707468546b47515533324a5132436c453773647461502f4143354e394e32766861484650326979762b367859755a56476f2f73396e6264777a5541714a5a354d534a4a394362516a306e703146776f7a73582b47794a3354366b4931735965587832687049734d486a7a37307068546e2f46304c77436151775a5136486b5375577567566b565a74384e764578716f7a3575597342566b6471793745396b3862434b3578715354694747687863426c38695735737745446532523257505a4a77445338617a4a6851714c756d7a4230383350316a4d343833542b75316e6a2f4148746b3963636a363666744f644973333241344a314248387255386b723170354a73334f7a384a49356b4e396679397344522b314f7371364f4b6e324f70796245774f6f344368367a684e2b7548304b6d465031515332583032312f4c564f62445a2f75687037426f5236687a315a30777a4c4538744b355a45332f77446157716d37323055546a513058742f3764432b632f515772792f6546314142725432575a3839334e474e363774436e4e3071644265644d5462366f6b396c533943387739543350556e357746507646514168396554792b776e554f65394f726f346c5671645a656c6e354f534b495a43376b4b3038636d4e706b7a35506b442b4a6f6d7a316c77574f614a2f4c5948322b45465563307558487465595356486c38354a536d473263775155746b564d55554f524e6e4d6647567570584270445a2b334c53736265644e497449513934303167687647332f616573444b7570315664733632497a376273724c43586e4a3550484e6374666c6a706446724f6f68643776393157615447715738484e3075436648786c7a2b73772f6c4b4a725a5a6f4858594a64324f54344d39794a34334365382f4e2b597851316445785a61574d3068657a342f7744516377544c424c655474454d416930304a76715541696847686d366b6d644a454f5a734451656a486d484f4d7955732b31477430494a3674762f436557485459646e47676b4c623765496c75586f7a3445656270713463546f5247722f414e496b5932506947337556566f33524e6c59652b53374c6e4651437734644b336931764a324853453165766d4e316642764e2f536a7a584f354c355834526b594e634d366e7039383072354f686433374167707168427136414f4e62486359412f436c79765a7a3255704e73644f747263664435542f39736663574e7a305339494e62734f786c704353733661376b48686172706a632b756f7a754c715675654c68656c78413367394470702b4c322b30754b494c576974644f4c527178613175744d546d4f4f33727a5235386476442b495250652f48495a6f653938633869706e524e3866465337546c756a6b2b753851482f4e52434c702b534d6349542b773067582f5548674b70647863596d4f6c6f742b4c6261764c2f622f74366271313756746f3172386f3947504973734773762b4368457a394a466439446e7930304e653269354b51317273456d79723636716a6e65714b676f2f68446b3332762f6768455445394a4649776550577861576c7a585654416273732f6a6e483564796c366c504769334a30577769437146746f736e36774f4170514f6d4943436b463068322b37485a34514756506b31476f6e683875756448334f3755356a7351367053573665674c4f4d5953786136586d6376514868706338784e4e597831445638514b624c6541716c57566d716c703143747a355070556b71656d61432b7446455059575a2b69314956393646444569557372554f3442542b394c6e474d337336657644732b51575965702b707934726e61766b5a54504557655a41393832444439326e566b3862715565654b6c3054434c654e563137716855735349794230636e6c396756673579554d3361616e56325a35723471483644464b70706870376e3148722f776163717a354635394e46705366482f682b6e574e6f6d66536176694f76355076397849592b7a315a6f7462664b637a2b6154507538796e436c616753566467766a6a76657971785a4c58512b632b5347614c67662b6753566c4564666a2b7636674c35464a52717861302f6b4a6d5a69462b745863785973795071343064485a5a4a73352b6c53744d663841354a7265357456464577652b6e734b4c6567596532305238566635534b427a483475687a52636c5833456a714b714b4465376b573650313155705058726f76665a6162474d7a3650475349484d4378464d304b6d306d6a6c396e4e4142784f383075444f574442706c4b6b6c463852572b545a41324f5063646f64697a364a5872536c7566644962616d44316c49522f3677637030774f41644278646c7a44686c69706a37496a364d47757761555a7551616f63503672704e575073302b50333352304d614c673462446c526c2b77335530724462444d7a4e4757425564325056445937616d4c4a3750384179635949546f51444a6f4a704e46485a61474b2f6b436c4839634f4b594c446e516d65627631714d2b472f31313966636674444b634e6e38624a46644a3548576e33594b32517843366535636c6d664743364b726a644b48783258506f494f502f774242784f42527563794d56623930794b3038686931484b6c324c4e6935736439667a54534c72535a78354838624f6d7a44727a766d2b5457386971736c534842716d6430584161326533397a4e64654d596a485155522f474f6c623237754f6c4935745a33756a2f6b51386577744d62744953303670727a754f4851636c676942364e4239306c6e4775626f434539452f39534c6e77742f6173784d65662b52367a4d47653669447172632f6a396870575973736d357a535a6a714646564258616c514745335455324e796d6a4d6d684a78784d524d785066416c485a61344c474f35414e75584a397a736e5764706631537442557263363333664750795a342f6331706e4f366d316e56514d5a4d68494d53372b70476f50713075664c3831666e35345679796c4e4346624a6157495271683142583530354f72464173705936464c5a6a355179543330782f6462384d37754e437264504a336156786a527a4e76796a3233716b3363716133504b4c756d6a55305748706678627041536b68386f58337453566d6c61395567595848644e34573550503743332f53394e393776486162584c377433686e7254645652714958744b774770626142736e42685a654f554f6e4c787a6c3046374949454151684f61674f4a6a457a48674c663353354b746f6274715a7539315035584c7a4b35633358315a3471387a2f654e446634562f77444679743147506d4d31506d34777a36706e57394f3550492b5170543175374c506c5a316d76493378355954375769476964534e756b325546755a7565685356376c484b6d4a714c33696647395838323146317a666966396e6f6133537a70646f364d734574632b6951773055612b6d6d646638612f4559576258796f6233564d64697a357631574775417942687a4a47616b4a30553375302f6a2b6e71424a50434d627944617479744f7848482b523330333477786178314271352b526c4f4b532b5051305a48693257356c58313766644b7974716e4f503444345638315359744d52453169427337586c5477525451635051376c7575767a3164526c6975792f483061474437644556614832776c587366374b5748786f754c62346c6e32322b783430464d77654a366d4e354f756d326547544c586f54797a62446933416f797a7a4d6d48516a30447972693463386f61793438383548724e44575574614553593636512f71637a6a48634c5a7952777956342f347970565053583775465335416e34396e69632f3862354c6c35633138614b70644252555369675032427a55357638414954416b42464f6841732f497837724c445a70654e5a763355357a624e4a52636b5878766a3164544e32726b33617444376135782b756f43594269344c6162507244385879386d43597a68446b716e6a707853484e6c6d6d6b61476a394f576d35304c5034586c444a7a3474476b4d315830775852576e4e6a647a5442784e3939446755423742486f525378354e5a31523934376d5569665336745731567a496a7a6e61315543726e4d78316c5a47376951544f364470324f62525376397a6a2f5662396d512f50557a554454497a76302f73555253427a5174706f6853334978646d617965616e486e6161556f717979346650664c534c6b706366566470506c545a5877456d6e3075522f6f38394f4f376f75445664476d6737364b737a496b7a344d312b6f6c454d53766b5272616b7245757465307a4833324174546c756e4f76752f4d4d4d6475685979486c5057575754763036417a2b426e426c613664756a517938675655707a324b6c544179464978506e2b543442412b394f5474435a376258374d697a5a61737449525a6941563862546264456e342f74633475764e77337a757a6730716d4336506c52304a6e7256374a75476b76304859796f45387562744349626646365470484a78376d7337765268666e342b657168726977756c6563307a695336755768516c4b487a304d6e344d3261594a5479476b31497632505049474c7865545065654e725635317a555856584a6b393341783872583539624a5a4f72506c45317337484d496c6678706b4255715438566838416852667275675a6431587854746e6f6b466b326a553955744b53304973773432516a53556d64716c555547597a713879576669712b677964706d5876704a705a7a58752f4d4b72334e696132654e50644e78516f706c4c6b36564a744f47574d587a797276396f7a773056544350372f3355664745646c2f2b6c4d532f366e5a486a496c307a4361556a4734756437427a4c70686f436e343672415445495a7941374278444d4e784c6e597054574a6f63354b666d424a6d44324c7947526e6e3445365a7566796f386936774c6851787a47532f75466e4b417064745675345264636e4c45564e464d335934776d615368427066315047302b595155546c467837616f37535a336b482f6b4e2f473830474c35795768432f715151787568715a69706c3430586336626836502b4a43446754414f732b616246415547465a543230777761455569726d795135646a7056547259393070324f74306f566b5a5439375659397a4643414e59556e39426e336b2f4356526571724479572f5952706f356c52783144795436734a5647656a52332b4a684f3567746d59412f7448323243313877644f6c774956545a47704c31634d7372653043397a5676516d464a3053716d647a7146554d4f654e505851734869782b4f636d77662f544969442b6342656e536c675074757258584d5432444a5255366358327a3567536a58667161494962374a524762364b3758716346684353574d5768497a417746637958672f59464d394b6e5a74485549545576556c6e306338703463383755722b34464e6b705473533776456b72366e494f544254464431773942777133736c72383257764d766f6e69306a73647853587a6a664b57625a79506b39566e662b6f32636959415470493150644c796851382b3262515858626e567269306f6c54324a4a5272346d6761725a61526f70736d5a58644832726b7844466a7a6f6f362b336a55547a5268795a672b2f34663641456a355a366d795730523644776b78716e4a34374e6e6d3466375a4231657a4a597351476a746c58376f663841496f526438776d616a4761502b674b6f304152506b302f546b6a626b72734e534b71627737556d44526337585256427031644b724e586e3576797259546c664f30775350364943542f51464962725a737572724464464d6e5442357136763448574a6a55362f597a7a516d4d5247662b463149336f3738663141524730776d6d2b45416343474f6b317553327752764c7550504d7a51665630633150326f6d4b342f53527775426f564f6378494b4259787446767a6c39552b734c763941506e76503841615655482f477547596449756c51383439426e4a43505936695a636c43362b726f5469383931545065336b335a77706e36755945412b6d6c6369694b6a4d50684d357a71653150706f362b2f4f6d587076714c516d516e6a703471637433794351386e6f2f77437351635573686239454d5742534468646f7549506e446f38517571444a3643496f55576143325a56487653796670585150577634556b422b3931536a5a786951416b63735556434d7054473246302b712f534c6331694e426e49394b59464970722b5a6d4c615a54353449584d5076615a75435a62756a386f426c4e433358304c54584c6953387a61475871377867796b72343552547064534754434e563142363148526530692b58716f6b4e6d712f3067663841515a7938435147553653314d455a5a6a5a48786c54476a324b61716379423551743738614b726862394e4e5468425a6935772f4e317a6a423939324f5869706b6371704a74696a566f4441696d6a7836356d543774425757745669306d75645930413371534b6b7672663652507150634162482b412b74336b2b584a41765479717472474f644c654f475a536d5353797a526465374f6165675038414946316a68366f5448352f314161784e702f4e534e71326d6b346a2f414c633930356a6a48345a34626378787838716a5a5443382b3849325571304d7a6469344a4d2f613561696c7a365237336e6370667953762f774269784a6931434a6577682f522b38432b452b6b4f645a6a54744d326e64577565367357327a58783233362f68746d736669347a4950713238526e47736b30383177676f61474a477951754a556153614a63576d337674575873547776382f622f372f77446a3550643070743775742b7a7572626d37505a37346a6c762b4868624d376f7a5066416a2f414a463478346435564935573231645955632b4e646174546d58585078717564423864636a67366c33424c2f41454748666957344f764471534165386d6d7931737a626d74336469507854384d785773394b2f4433327845625a4e48665658306d563474326a646a38707a2f4143724264384d716e553364563554687665616b6764466b624f446f5a764d3979666a4c704a59414150765a7778412b7a575978586d35703775626c2b6644347679326b5654416f39697670707a5a45354f77623054706548637353413450724f364951324c4346794a786377416d54396c764574637453666c62556341584e4f557a73686e5a73315a3530656f2b4535744a374670354a4735623835744846732b464e424c54485541723448754e3378657a7176684d45375a6d3538793376572b664b67753656537450586450512f566a7a42596b3676696c45306b636f7051424e5343514d785a774644376a2f6f46515446424b614f4e4b5767597053314c3957365874415771526f4a314a376c7364556d36586d717062536d58536b78717a514d464478795461413654353639444f645739394672363046624e2b7870302b30593557546335465145665248394c757a326b7744465141394a68315530347874412f774266714f374b305571396e455757573056364f4e4e45633062456c6f493732637054307631517775473572556d55385a75346f3366377177595a76522b5a51615846754c395130523952642f487a6e664250436d7654703074484e4e47656d656463505a76302f6f75434e616749783979757a4f4d7a6a6f484e4948614844567a6a4d397232554d65304b644b5854354e463730783250305935796f49787a57664b7a69672b6f6f7a4531476a70543867416d736e62496e4f72644550612b366a734f646e6337564a2f317131332f7741745166324a426e4c71534544594173636b41344270436e33704d484d744832776935385064565855537a585530444d41315656334c3436595a37495145727a78644259386457615666436b6c702f58753666416a633854614b7a424d59357156334647756a4b686d6c59646943713770547630416e51334a6f37697053496d48546569623467534b695345333941535564412f554a306c464573783033357070656a4b39727738674c7661644f627678676c33755a56455436505a5a5751556853686f5572584d444f62665a4d6c6647574d7837704b38366c4b526c68696f334154686678446d48566f7a72376930574d576b586b71546771566d6f5a4f61306f632b653279336741734e456e4b44743472523674754c4e5a456e4e78594c364b3272355a6b716658644e372f414a694a4e474b4c4342497a744b6d6858763561304f5063335a3965495049767076646b585372596875632f75547452706c302b545a6e366d757a31386a726b5944536f41584f4c71666350414c45416e3368636c4d664b6772504d79567a707a736e464a5446566e3569703634562f555854373561794a6c6864565131304d2f77414255646b6f625361314e34457842514944394d6d645a67565861336274544e486b6a793570392f6168686a7951625643784d72557a6a2f4c453564722b44594b544268633934643430415670564f354f674463464f64564c443978696c6446307662614e69706b5164596d6a6a5345497973396f7246684a4f732f68436851546b774248454b7566484d36557270554b335a354d73554d3147354d73727030386e6c6f597574645358727a71484e6b366b6e4d54655944796f5a4f462f51504c6f4f752f6c6e6c7757387154556f4d706b306c484c446271334e532b44516e755365537348793243716e35534a70324551697a35714f757476743468435876334169744355556e6f3668765871307833706f705450385935397335746e4674437566567a2b6f4a53445342704c6a2b304f43756b6c2b31494956514b534550454c73486d57363965614b74436d666e564262594a32346a55614642786b32656a4e6a584f376e74554533496c4f4c356e65796f5a4e3238743544734f30325a3957765a46564d7a7462534f745a557a695553337859717442587557564273645250773830706839687159354873747a646e313467586f7375346b336c582f494f37492b6850756539556c525a746a73315458564256786f5a4b5a57616b2f7646362f69546f4d5730576e3155536169514b364e3936506b55676b71426362746d70576a4d4f54664870443233576e744570305a52664a4b5077634a6f2b79365a615253716b42516d3353766e622b675952666638413547526b346a727a357235342b5a733359323152617948387848307966626a36556339487952744157736c6a432b5a50787035337678663146733535756f4a6e705566754f7259473173396c57706d45367854706b52527a494870494b4e5633455331505a51767269565641414f7a524c37377671734534784d394979437562753063536b5a2f6d346d5332504b727a51743072527a62465646316d6652776d4632786e4d316e2f41456755774563636e6e786a374f6a30417a7976492f4966434e354f76447057346571796f4b3373616646743134354a383266517a7436475453375056517a46546e742f6333556a4d4b56714c68645361676d497a4f5045644a50536231587950556a4658375578356e6b75663153745843636333536c59597065564d7a353744477164796845762f6f38506e76494864562f77525245626545383353497a7772313438643059377135384e33474d514c4375623767346d6f6e54452f77437a2f6771696577794a6f7034744446554f3778684e52567a6f2f7676374d356c2f34392f6673504f62576d5a6d2b364a3638333576692b746562634b73304d37777872716164624b4c535a4b464551742f6339696e777370644c53494b6e543374564443594c4b475738377765556a37684557683070335274363833727a782f7546593361586f3469657a7666477248494d424658654c6f7050356f79706f6375387057452b6434446451396f7639684437786149724d506b4f6566792b34696c2b70364a4c6c6b442f77416230394d476f706531456553797870786d51746e70646c307a6a32775430474c63742f656c776d4f436c53696e39726c4f66792b3472476e66394270797567526a55793138514f67595a6630323248595544453652306c494a6e6b6b67644433485178302f41463347696177416d7474747636696637694961327836514133707934506d44587663656237744a304d6d6273463369374844336a48664650596b7143703675376f4f2b583530763448576b6d6d597a334376437639476f6d36636d4c347435684f67386f2b4478666b53427a48707655644432597050637636327379556e637173465877546e3033653878425365547a323834464865553758704c3353314930656d336b526c713556777932447353584c3937557252725838573058636e7367685959674378375a4a534441454437524d6c313472623858366a552f7741797866536a644d2f6e385238777537733261757a722f665a626e54304f79644365415936616b35347179324c6f304b6b675572442b46775430664e4d6b327244534a6d4f6b696d764b737a304a38527a2b6a6a2b6b745a61536b44596f6d735a62424464736f7a7756724c71324c42436653676f6c71534453634d78756f346271464a353969573054615a34534b75332f4146433948525434376d54656b4f776447546b4f5a6d537072686342354f48417446486a7457696773366a36352b51564a6f616d6e6e36642f774454497549307747713052627275362f5551566e714e3641795a396b7562364e656f6b68577279395052444d484549354d625579736c45466c3770326648486f42627457442b2b66623938734877324b6c4277745a4f4c66692b776731587168364e352b66396e4d39437656614865687839526b3267653873467470636d6e344d4b58616667696e7961724d6450476a6749623766673337443730365074443232322f77434b7638354553386b2f494c30346858705a2b723641656f336a336a6d4a45522f4a39365055306b30364f4f3438365a366c2b386366504456717a37562f4562557a466c5766585a39666a706b4e6c7638417151494d2f77444b44303673356171723054395434577835326847366f7559373942653348444737596c4772585458545176513245663841702f546356536a70563949304b6f2b4b693375372b4d6663593065766670636a66415950514c792f5436346f714e6259576e446c37334b6d79467a73796f426a6553355a532b34357130524d4547513763426d467967524d357374696432702f594f622f414633394f4e76357466766f66366e555a564f722f4a48314f784c64623258794f4251655356357638565a63364e6859363978674a4a2f7774524a79696445376e4a426b624c5430744569494f39572f542b41374e64586f7235625659324d366873305263796544556d6c546e704d38697861725753706470575574617272703074715658383163356c396d6476356f2f6d4858505876776d4c4d646f7339454e76556c6a5673523564326a662f466678714b733265625857687a424e46486a347079382f6b556f496d613241335477444b5046543154736e7867436f50584c7843626e6b57584436592b5a33386b69695a455a6f7a745362507a4f364b34364b597751425032716a6a397931423255506f6e2b6d797a562f45726c4d374a36353468565872523665364430727a665237797952554c43314d5a62664966476c49763150482f714b334d365762586c6245764a6e6e6867426748385079734f644b615a306d62484e742f786665514c2f41506e793950732f566b7a5a507838395264584f6d797162694c4d6b6b64686e64515a4e3265456e6d5054334c78753657656c7237654d6d6e5364502b595344306a4350647a6a50764b687458362f656c663263536e4a39485056447833522b4e716f7058772b50367a6e374e46715a72724d4b43656a6e58546e6a3077435348545a796551702b3243614b5745436f32576a72614d417372386976544f4a4838563478364c2b70562f4969682b50766a396e69325774757937677a6c5132656177322f58616e486a61524f713748594650513066724a436e687a4e4c395a744741742f39633534666b613736476568586c6c7a4e5659322b376e6b416347765074626f3166494d4561776f6f573466494b6d6c32524357706c2b523061676e7073506a33632f697742745035515233352b54507a3859664d4b673047566e3255644744496f3071337a5758523875794d6c63764c396865656b76745566475138644d414e2b3355795335723363782b3844614438696646466157615a666a5835474674395038414978654e4f333271327a79704e4c53307146366c4d2f5430614f726a726a6238484b67396b31386c4948325932715939334f503879634358595035432b6e3258727864483865664a364e4453343361426e69396c593136454b2f73546271565750544b327478554a633174594a6230444263667a4a54534341696157787831424835507957394b35385658542f47547976506f432f75613165507455564d704f7679426677317a6d72636c347965656665576b36656c33725473626e6354396350686e7473742f314a41797a38732f5450787656392b5436436559784e7a5a41387858477a617a3475664f76422b442b505776496c7041716c736465536e676175724f502b50544e55717a72614530744d64726a3639644131582b5533705055734f32656758716a32694b6f5637583142717531364364305672757a744e716146696c4c4a5a7a597669694a326c2b6a456161484a6a4f5064582f46583139524d2f47667953394856386936373859504a76453536525455566a644f7a745663556d4a64396a6d5a2f774350584632503932507636465852454a68633737382f486f6d76616d6c3436616e38773931507948394e706f3578386e39442f556b7031547a374e396a504f4f535a4b74464d2b62394247586d6133316b7771426431464d38703935624e5848517a6a76597444644f4970625043316369736d2f6b5a3649756f734c47394650556939553046366d6f62355a34382b5666332b367a71655a7976464c766c78786470464b6655636e4d2b6748776b41325641704e7664366b3962566e2b515a626635452b6d3277743147662b4f2f6e61446d6b7a4653703735426e7a496d777245347332634c4172304b2b75712f6978596a3950675033487055755a51464b6e6b39576c752f55346957443636654e49795a32732f48587976735350483436615774484167724c646a7a42562f4c6a4e6f51706d78636c466c4750476e7279536d6c70334663414d7450324e6c762b70496b766a5835426549335963334b2f525079785134736c65544c38644742493375566b385057683051305a764a4f365a665831744b5736503442564d33686938464a5034586c45306e50584963512f6b443659332b5479767139452f555350496150777635566f2b4e593132637649666f61562f646733705452504c5256716664543849684b59685153706a70442f4b7330746a4d576751582f414f7554394a726d5a6f626e70543678364d5539504a307875386c6974464f64484e2f48716266525270555071463871793539334e5a53637963314a676d686959372b326a5474335448314363487178365a5a61766b52345635567a78664f3478544a54704c47494f507934397679544c717a6b546b4e576251375354576838662f63533334306951632b4a617032332f463935456978507945394f617337586b6e394e664d4e5a6e6a45766a68524e3772684c6276624856304d3237716b44505033516f55506b6c7a515a77473941667275377968526d626f6d7473397274426c6965756e70376f6b796a5839482f4144362b5a70375741686b4b76463465374d55556a355a4e624e58614a647a76313969726d6430312f49646b64446b6a6d68493952547474485333415743507276345875377164434c306b38317a2f47353943697a4f6a6c797648735775316a4d7969782b5449322f42582f41436b4464426247304e4e586267444b2f615a2f6d72516446646b78484777455950723736496e3243792f307339594c6e6550362f63627872364f504261393442464b6e4256493932675243364e4b64785847696c497a4f4e5857706d4d5a4a477070614f746f4570623636656b312b33542f4d656b507131706532334a6a7a4f57783050314f397a545454586433626a71414e53365768625a5a6d715033552f4d56436f31653846386a626238556576714734666b6a3650667936357150524831735968507a646d56466932784a6935716e48706f3463366d53746378713977666a6f5a79656c446b6741696c78707157327a2b4f7672366758722f6b5636642b4f574b357365685071726f4f686b754c78366a495a342b75612b4f3354646d6979724e356f45546d66786539714b4c6b6f7559663745366673715072676d4b576e7061412f38642f4962304930493078703941665561744d4865593842315753317755352f47616373374e354331386e71442f77424671545278497856326539423850337a4b614361576a7261416a643636656c4c39484237752b69767154587a674432664f7a6e4e4252354769346162476376726a724f69553647374676375778625a50396276686a2b78375778737450533053434f682b5248704d7452616476343965706573764e2b4b436f4f4b644868432f4d44352b7275494c7956687870756f537235626d32642b62456c635a684f3563774e732f6a72362b6f6b476436392b6b74447170773947664b76482f496e784c72475859677a654e4e57786e515939533155314a475461466a6b365a4e4266316b6b4f6c3831436552534a4269644f2f64594f772f494c774b6d2f782f4c4c307639582f4c7635346453775a62344d774d6f61643472764b4c4738737a726e4f6a39736446517a5464345a484465532f6c6e6c6178333952736e48617255527a5939642f536738384b423949765777577871783566494d496f7356746b4e434a644379535936507545784e48614c4e69674335524152555764702b70385167663954746e38646658314332763678656d796f616e342f6f5636743359314552384c74656c6a37486b466b4f4873667a364c714d58516f53444d2f754f354a7a744c6e48615077577059716e6a675a31746e38646658314556775058503052566342312b6a50716a2f4c525a336a56586a2b6635456a4e5937517056504a2f4a7954534674452b70494a732b57565567414e4a544278362f6d706f2f715a70614f746f42445a3952665457546c75666f656d48724c493271544e6c7a734f4b37777649504b67612f3675744a6951346c564d736578384d506a364f5635394a66576f3868644e482f3177722f63525733347167582f38366e70423472464569503063395a632f5250476f6b6348572b4c364f775675637a5156704e6e334b395758766a385a5a2b73612b79332b32744b7a654b49776f564f446d32302f4655597a6573587044445634796e767042366f726a686a72517a59317a796570376a655277757071484a34706a345a6445394f36354357756e5948416a623730756e46536636625a2f485831395156623638656c475a354e6d324236542b7245756e34314c6252596e53664266796d655743576252667072694a5959384b35746a464a524a705649316c3854733256492f66617473746a4f364d41647265722f6f4e714955746e7031366d59396e692f637a7648746d797358516b326330713879546b564f557556746d70536e50614e414d664e4e386d6b326c6165747047726b78572f346f3567555a2b512f3439506e32383076466657664e32545a716161346b4a52426e586647696335626232386375756a536c386b6c6c73575344353979643031507a42535a786d393366786a37694b7a65762f342f31776d756a30373958644a435a366b4370305547534f4f4f516a556930303644704b4a4a56396f645435597472455347734267704f3337437033544d653776347839775958362f2f41492f785238697038563957345578785a6373722f77447777394837386e387a55724e546f44506e66646e326c616b506b427767487941683249412f71575a51455433642f47507546504766577a30687a4a4233462b6a666d57652f4f6c71726f30642f784a374962305378533574586a504d68727148356f79726845307335507977536a4f50726c52314961457a57335a33593965416e486a33724c365236756b694b4830793872717152564b6a575a2f3467796d4241545551334d4a30646d6456396770664473396b7753756356664a775731496646436d4d633756744539722b67394d3334506a2b46505053523274356e6f5a356561364d72562b586e35464d63695a35376b717a5570646e4c46694b4f74546e70577835692b6969677a2b63365063526e7933335a74453775485a7874375835764c7444664a4558345674446c6b736e686f4d475a6a6c6e4878354345434845786a675a4a786a4a46704c334d4579396a65665a413265316441395a6e457a4e4a7a6d75703850682f336275502f6c6e2f414c65494d6d7a2f414d4863335063316f6548764d6c58445a4578644f6b543265347730525a6d557359524f62385a4b667a76422b326c5078483730743578747178453169625776573266686973786a487a727a5a2b774b614f522b47585265476d66692f77416c4c70714b2f7743545a6f61452f57644c6b5846584a30584f576c6931532f45524637577145793978443776642f564f6662327033664b762f414f76446d7a2b4c6874377775556634636145712f6b3534513844357849666546624f3870734746534f414a725a31507664506d434c434965396f506a50325644756b314f376c32356e6c342f7741584e3038757a2f752f68474a3466346374726531342b4c5066506c682b2b5543786a4f51497034586165727148722f623863416f597766306266663368695a762f414d3054624670746e4f4f4733787a332b574d2f55455950472f78496c536b3575654d546f712b3239494e746f373055455936644a7257735739536e68652f6e75442f3649676250635843595a52574e536256693174746647337a38743339413067394e2f774150657654334d797646654579454b565644323373503053436830622f2b524645363279357451437850663845706f447673594a6d4e353849744f4f626a2f4445384c527437567078306d3052467538666372306f2f45334c576855754a34374f686336474c592f52436148696136437564577444376566586c636d786e797346616c456d6e342f3050533642353737392b592f38417262502b376c2b584e2f447a433766535438554548464f656234794c49454c5a474e6c76614654416779684a30696d742b4a4a464f744b423670597461684942333371396e654a74664f61352f774366394e66586546644430712f4646345464306f63427647494a344f76326d677749346b6c79683656504c6e63366a6770712f543172533552473070364141324832323663313634372b50586848447077343776477654777a59536e3947667857543370526a6a5a7a70795353546e7655687966714d71582b2f596f756b6636536f656c3750305078774137336673434c2b6f3332786274576e34663841376276734d2f3841356866784f57532f6b38613855552b636a636872554b6e6169722f54616c712b76574852595a532f737861336e7a6c4d772f38416732483874363269597275746176617a337a3035635274694f312b666d7245394f414c662f4d5a2b4e4267456b2b4e697659552f30567a67564b332f4141493548627067626b4350614361744f57526c306a3933762f31634148742b574a7a464b7a47747531493678693344746646326476542b4c507734416f5078362f464754744849386678624d55306f58316f57374f6d69655758554e55517a63556b5a334f2b534666786b6f4463514b49476a332f6a344a6d314a6e6c6d316558647a546e6a787a45386b646536654e66486a616467645236452f6a6645746a79697a6c6737735448643755364e466445357265466d6c373169706c4c616b786d34326349476e2f7744472b5148474273317875747162754d6450446d7a484e484361384f7a6d7648686e6142352f6a722b4d4d55715a35664750476b47386d716d5a6b4775466e7551787932684a32546e2b72322f4d7354396e5068397156674144384b5036724e70694b34744e72642f682f443438766650663850434e306842333435666a676246743569593031355643487a773138485a41685651787046735175355838765a316b7a6867376e55396d2b623345356679636d4a7273722b306e64627935612f6d742b4c4e764473313364726747762f317358342b2f4e2f494c794a753055704e4a637964437441386e49306b355849383979654a574a554c2f41474a2f35546a537a76533477684d617a6530626431763563337737712f6c2b2b6134357177464b76783539434b755854385445737145396d746d445258374c414759546e37644c333364537a345961752f726e4146774a4d7663587a4366394e316f6a4f374872312f7948306e6f48364a6849515349793078534539457079366249687a654b567956365a72557435314c43575767777a3933584c2b363177752b5833462f556272593758772b6634757a302f377677342f4e7968746c65672f6f69675034324339504a562b7856457662596c2f7368536e6e76627836656647545754794838612f774269517a4139514c6350544f32596d4b7a4f727a32387263506e2f7742333463384e336c456a75583043394936354f355a7535624e5776536e59707a78707653697a2f72473265732b73366b563354703649393538535770555971535a63502b6f335a72753363334e77357677387337767a6576796d45336f48364f734a5a77554233746459505678656d756d656a6f566c536c692b4c5a7768636a362b6750506a50676579442f4d5345573837575a74742f4e7a662f58622f4150622f41476a39502b503370477055637562732f735a4b5a315a7957374d744c765a49555056547036716a397546436f556d4c4539347766686f442f67444e663961326a6a4f4e534e766e6a3856592b484f613865314861697332694f41653265676e705456383331366b676f6b7254624a7a53495a58694331396c5a6567364f64557859714a5965342f654344396f6c2f6c37777a33593362623774747558687a5448486a3674385865506b586f4e36636644395164475335564d3963747872524158322b4d71586359456745664134512b6d6e6e41476638415469537633714d412f584a2b4c466453506e7878307a79384d2b585a362b584551767a4c305438457a2f733646576c67397a7a5763724658534633695a6b714b6f542b32316e4f42557567766431682f356b4a6d37326d35414743625445346963353736357839367850384174466477656e666a4d4d737350664b636e56724d454d30364f787a3046743534433647464b7876542b324d54506375646a6c3841772b74535242776d482b6f7a6238503346772b442b6e306557394f334e73356d6f6e5851506269544c38596c31426a37574f474a33734b656557556b677a2f3675632f595648777053484b57766d4a69494672386a5156707564306955735263584775546e7a43776d467a686335795034696f4161456a33394d417a392f7339776744666c6f4e545057723148373542392f7733786e516f6f3864795731713876727a2b787a452f344b4b6d676b4e4a4e48746a7a5363757858564c537878475a453161672b486837566a4763395a4775554f6a7a58746b74626c312f70332b78665532712b2f794a61522b566b516c6f492f6e456e644873497051535667644a764a512f495165793354794765656d747430316d676c2b666f5264732f6a5679557a553150576b585535364a333868544d356a4a525371656565627242565439343254696c4a756d635a6e48515a78716a624432743835553539435a347858517935556b4a6f715a2f4b4376515378334b4b4263375559676a6e4a6a66614b54634b51416c77454f56646f6a7a6e326f7a357a512b576c5275594f594555755a2f487353597a4939334332437853495a71454f6453614a674e7849354e5942676d775379693175323652727951414b4a3746304d68634141366d576a486d7a6c3646435670556e51457669644b53714847376a6a4436662b344d7538546d6a652f4d7a75746e4e33496e364651746c6e6e7a4d79792b4c6931444d49446f55494a636f715032424f6b674371796d483544435a3138776c524e585a624d727355624e613775547077397171752b2f52645375587139506b6674636d56614c766b377956684a39716739686e482b7949414a6149474276762b306c5268786554777445617266654b624a3666342f556a31794a316a67686e50756832594234584d337450484b5a395935775a6933696f4e494b382f77436a525774732f774269524658595858496f3533697374696333723073594c6c2b31615a2b4f442f33423963556d59674c58536e4f7174314b6164437845514e61556b525647724f702f6a4530617a31717045672b54756c513154466b59544b2b744e2b714f6877722b547874506d4d2b4e7468476c536e55716442784d53744857664c7049727a71567a31555749513270484a35314c545637306a31767869344a544e502b617149447a4c76626b386c442b53376e464e437953563450686e422b675671372b4c7a7a747a2f637958354e6b55536435785966716d626f4a4d784f502b675a68334e4a554430307575584b696d64376d634c4b64706f7469484f2b674b363432632f686634394b567943736e514a4f4d5a326d5832506d54626e382f754336346b5561326e3047315a3145724f2f466e6e544f4a4e6f7751462b686b6e79505137797a50626e3244504b34363048414f6c59716b4f413170303142564d4b632b4b557a5451432b6d67357a777237556a644c597578716372514b75634f614743736946597a4c41445742722b7a4b51642b5a387a4d7a31446568416c52485450554f573678576e556554717a4e656d612b5055577931377a4b726a6674476c7a43424c654546464c2b3139396a5073307367436e553630476479367a4f546c7a52725561746f485656307356504963345a7935356f4f424c507a616e79574b42552f734e4c7165636d37372b6c30485564634c70616951756476387356665568704f6b357a3956547530416e305754616a7a30703332554d4f7472366b703531672f44332f574a63423530674e3465305652304d2f61793157352b58467261304753787a4c4d394c35324e3551766d556c67765250564b6f326d6377742b6f66536344574a79323161476d724d6f686e464d337a5a2f61776d56444c52506c796735644a7a714363592f346c786a3337525464646d6e3874424173326630443651753831455053636850574c56486d616e796c4e47764f7031714b4b363770693444466f71644b776b52645548364e727664375a6d706e4279786661616936534f333535546e57764961364c56524f76532b5343464f42794b6f5a686e474f37704a57394969522f44785166704a4f2f6f4d37754a4356746b30684c7678542b6c456e596e622f41434a61594b53374c727970783145486d7a384c50734662506c36506530307344707152796859446e7a6e6155764c707074507039686375776f2f326c614d386975767a6d634576396935624c48454848646e49676d46526e4f354c522f6f444d396e734b4a52386e674b59657349662b7369534233445a4b58327145386134716a2f6a2f68426850636e39514c6c617459574b6d53447733494f576e4d6d4f44734d2b5a796c4b3531684d5a75645431697577586351483035576a56434846643441644f4e4c754c42496c396f4d4d314f5a4d65585459455653306e786849586e3258555473736a4b6961664d6c4f726951734f57706c4964624a78357363357965635137726d41365450486a7a4d6b6c727474554649364331336146335a577a47796935375a614545457a47446e73377a7231686454374b564d63324833696b7774543035385931664c627361417359575a6151426d6e7436457053572f7561795869763351532b4764585571465a4939696a6e366e3274563750685763544d52475a47356d50345834356d7235314d744a4358424151426a6d6e3161324a4a4e53656f64336968594b4863502f414939354c4d765a7765455a484e646d3364653236317433434f76355a384b38596d4a7a3352466f696573426d6e437757564e36324f4672533970732b776d55563836704e49574e637370762b75787162474451585059524b6349462f72466675616c6131764e6165585732504b3259747a56744e6f33635a6a48487452465a4663366e70623478333537644f6d6e4f774a5a5766646c367a6b5957545263597043727674442b367330686255346b662b3372425437434566306f4732315974753464385a32786d4f6d364b7a617677784f4d6275626248654e547655742f684d4f69724338547a745036655a4b3354626f4f364b56363171586a53557351364c76614f575a56554e63552f514c37482b732f68466a66744b39663666772b767a4372707536302b6e6e5236564c49475777535a6a7a7044366a61654e36767678395654714c69597458746e617376616e35505934675237767567344858546e4c546f6c6e305066645631645541314a526e44524e517a53546f735870583646487a593662686a66523747685a315357676c3373596e7639413034776d72616364616c755539424b7959666861526d3470574c4678797558522f6856437a7455375a52365876574d6f4b36772f654757684438566378497a3832542b577374636773782f5a2b38484e372f4c716c4e2f4a55392f6a5173455362374f72414f357269716354414f622b672b556734474c5853647332684f55484a4a6f3136543472324b595538734938717141335544704a4a374b5a7953673655717334513873535a673736446e78775a333861655056596d5764593269425736436271325866794e494e4651754665705447432b456e356a65372f6138564a7065595a35504b5753777264534a614f702f442f564354722f7273517574303664434e7869506149515459524463777a73535354627a2f414b617a63514232484d504c355667556175794a6d6e6752456a756d4b377964386b396a61353241754d4e4962506e4f5a596c774b572b383066595578594659767435754a4b71576152454e52387553315764637669526d47576b716448507a792f643143376d4f636a744c7a563761564733346e4a6b677343505a5665564e6f2f716f4e436365766e67583263704c31544955684b655436554c5847374e792f7236437964385a6a31466a776e6638507342594156746b3774704d6c3651715975494d7a59746f6d367957617256334855314c2b5874414f6f326c78707a66593533794150494f4f345a4e36592f30415765484b73705a624a477135387338646541455662472f506670756e6f747358486e54302b36646c48484177362b43446f3949466e7a69683538344549365a377674636a4b7661695878516b5732365367696a62717245507032424431355855445a7249483369564a746378505254567a73316766426637545a307a574e557947564d6d792f6e5548436b46734d327934396e506e6247766957542f583631677a472f35675951714850372f514f38684447785442556377496a586e7044566654425a51584258566f694667646f465135774d5a534c5473634477584e3267356c2b2b77326869746c566963364b4e713965755a444a3053396e793577396874594f6c542f466143313054357648633068417a57346c4b2b58707a634e77422f514d55306a5859755244644d31764c494e6a59624747696e507054553173632f4b6f654235414e4f643956485137306e694a786e523174494b495159576245574d6f74414964626b4d38733836374462334c524f3578456331756333663841724c6a48343967566d535a6a6e596e375467684352394e665a694d7a674b7a364f7230394e2f6235796a4361624c314b574f6b687041667479726b544a79617053366d4a5a59355967585141354137302f617a76506241577a4b5a4a717071546b2f6242692f69654e626b5a45386245624c52344646396e5672437a4863357967466143624d305a684a497a645331514132376b497164504e7048505771446b44503574552f736e4e72582f414443756b7377706c5270596d554f6d614f4e614a664c796c77796e4b30675863632b32756a375261636e5535722b56324e753767706444397235506a71747943446d57762f63745066686e534a762f414556426c796a2b6e547941624e6f6d6d6250435475522f5775762b766d453179334b77366e756a3065313874503631695471735233694f796d74623031674a7158377749454761757239725379367753365653754f536e473676473146783666617451617254557479354630457a4c346b56304143436d5534444d67742b4763546a4f4f416554323834624a4b64546b7a4a733239756d724e6967306f357771706e737a4b683472322f4d4a4c756e4434306f4e427a4f497734556c453448415a7a616b33446d706d56653435626259755a676f6f6f35377549536b6b58446c7969754f6a3358366e4a2b71453030722b534a564267736c54414730632b4c32565654455047727266414a786a706679647651753045614250646b465a33536c2f3767745377785571647872476a6a304e42796762362b30392f4570747739654b5535374733735477724439705046714b575a516a4439466249382f4b664e51546b7355637956642b4d793937625672752b5541586e6556765a684c5533366b48735171795772746c726a7663352f336c35454b4e4678334f71542f77436e6770537a436e2f32394237426f464e74725537346756466275326552366d66656b5576687a5969703048524e30784c4e502b5a517361315a756d6b5a3549567a3562756b6c6767584430706e4a554d7433732f71324e745a783142754c44566f79556e4c4f765756556c4c7142326b714a443169754d6c545a33587975725a744a79364841727261683644415a784d7a657a664775776b2b42673865354e6b6a57574644615673763030756d4f61324c74455539626b3661657478795179644e6678483850615775374f7a394a374e7a6d64723930534a6a6e5a4852537a4d4370366b6e5642396d52577550454e696663702b65786346316a53317143304342594d623873663841334538624e384a6b4956746264386f424f5a315033447579334c684d7331326e54425856784631366e6c71504c37446f6f5a4878306c56646d4f3578592b3433365366624d30506d72706a70776e754459657775494758564e2b303745632f556a626e6f70586e38765656644d552f575276574e4877334a577672786f496e72426a6961526d61594362636439636561365a57654e767861645861527932766d4f772b4f6935462f4736566b306d54704d6e59542f627853336d367a39396d5a53626d7074757a32754d435157796f767935343670556c38774d646d556261632f4f76726c2f6b7058305346334671347974632b616e504c6f4c446e4b4f582f4144477a6a446c4a6c526a6e7a326975434a714b382f5655323651386548735547632f48362b35715a744266596675783568574c6e554e487a653578704d50594d67676151634c7a77734c6a6b467955366963694850673748326f566e7479316f634c755a4b6e596c6a36436a34776958384c75787a4e5a372b6a777636444e417a6a6e43324738704d36324e70544935516a69593876652f6c7458516d4654434b6e514e5077366e75427a7659787a6d722b6162346b324144504a474b757868574438696c5550495857517a6c396c442b4f4e796f5564496f70357a77664858474e706c2b76647a37444670396875704278515832314961306c58566f7a4f396b766d6e69683151715169656d6e517635335236576264306d45736a344b415838667a4c62384b54555148464d4752304537714b596d4b35524f64576c6f79777278486e5054704b71484b6e6e5a4979676273744b7a4a5376324157462f7a3866764649445672763752502b6b36464e7852497a303236464767364e2b45715850324864307474655055735a575344714c4e535a334e5854375848776c4758374266516a5252536235662f414b52784d34484e734e624b666f61456b71387950375557596c7338704d79303535306d7235654e6e6a6f6d4467415a6830453762697470645878564f6f3063732f686e7058786f45786e5251746c493069337373664a786f594539524a63706d614a6a53446d71374d44794f6535497a543831732f647a38315a797a5464685737527a5a73326832644f71644763796b34625075585a4963616b67556f6455543737657163516754663841537472314571663970633041383753786f4f537269644d6f7161707149386e3548542f4377696e486a4f4238564a47594e415641594e7450362b666f5a6656364e3572586e66595650326d6741397467324e7655484e436438644379712b5177574844365879705576767739355a4d47476b4e7057314845437075575139584f5a333731567856327a7679712b69592b774a374b6555394c3570564b5433344643446c6c37534d454c794f576d436d7272596d31544d73482b597172304a732b56376f363375302b4b2b787978664b737567702f627750642f474e7036526d723548414d766c30362f62354c6d7144512b4251564c364e5a794f73342f4557305a593038304f7467396e73685743436e4e50374d506b6b4d2f7742752f7159786e6a7747703372786b343277374f7173523375704c6d446d69554d776550315a664c4e4c487870714a684c782f77435370302b6b4f616c547a746d425955367650394b5a58634c576b7a6a3543695054374d37346635686b655155372b3578576a34354778366e386e30726e39624b3653446f6e626f445870536a566870537052777a65304936505a4d54436e65753355624f364c4835393975616b4e786d654e31353161445a3953302b5361416c6e342b684f2f72674e4c6b35475778585870716b6e656f2f5a5439616b564c61416a4d48515670494b466d5346564c632b4e71327a6e5849466a6133506a62566e396437614d336b753474326576375377574a6d58792f4d6b6a414c546c39462f4b664c5a4455486a326e64445072555246584a6d784538375365494d3044696c3049797a394d6e6146337661516e504d4353587967454e61304d6f764563496a674a4842365737755775366562785573572b4245677a616646534b43615656396d7535507874497575557433386b3163354a52304667305070744f645949626f2f6a4450617a4d384b2f342f5379687970644576354c553265543943683071776a62464c6566786a794f56592f4e5543467a752b6575614d4771372b36306472584f6558714b73386f6731636448473838646856506d34586443562b666f6e5678346f502b4e542f4142314b775a71754a4f626c7a716a2b49702f5a536e6f734e7a3366464a725862783269756a64727232356b3530623074546f534467586336747135797444656b6e75726270434a3057632f6b6f596b67734c54546d6d6c762b6c3665632f7165475049544d6f6e5932552b627836796a687052644d55646a7775625244703641315335366548744d646830487179566370557761652f425a6d384a6150596c554e635a744d54336442412b2b54584f34554c4f5474304b4a4d2f525a38484b553054727a56353773783763444e587738316150485737457933772f75697a346c30547042715556686351496155522b4e63563161334a434c4c612f4e69396e5a33343056326570503868635335584c64384d2b61444f394f46526d59545279706f4233663642586b734733715a375a4432456f7a754957352f7a6430754f386d347565432b4765586d6c56546b3744626e53724d6c55476175306e796c6952707061774a6e66776d306d69644347644b5a4e4c46643430734f4650387251744d39594b6a4e59365864536956446c7a41465065337367565778495061415a34655266632b6c774a4854546d71666e7754614554615a3361446c56614176687a304c4c6d47356d6b573349596e4962752f774464414868373666706747314536416638416b38444b423343324e624c6b2b6b4d51324c584e6e7a6251614b6b6978772f79576f6c4c4d6b757a504d7a6a2b7a3975623648506e354143794664737761383064354e6b7a6c55593745472f6d646b35352f78386f4f6f7056506e723677654d6e3852537a6c7339434473424d4d6b7770704a416755776379322b5948367572796d746850334973594e7546645656786a6f785973636e6b34314173746a6d6b776c4c6861536c4c6d7055415a7461656d6c494f4e5054785a646c665a6d476e65545178393262675a5051423178366c576c6d3070314753473944464d4b78626d7a2b795953436536412b39616b6c41524878795454364748795632477662692f6a716b5550727a317172796d6152736e7657467a4875644e52566377354573683441324130356d35376861324a6e455a45727a386650787a4b46755a50534d5169566453493948476a3070766650727a497974475371564f6b3658577153516361667a4f5359392b45615a2b663148433065516c486a594a3865304c2b6a6c357978687a636e4a7a36664b592f34716e2b5037327869684e37657954793074696b79544b63317a316d7443794e54566f34376b384a3468357a497a4e61575a76574e7330573362585230574b54347a2b394251314b44566c6a6d5a7a334f593577383644712f6864397837574c44394145564f78353542464434464e7158534f6a7a6c7547732b316e6a554642657935507a6e745a53316b4e5645737934306f57596f397a666e70397a68545136774e424a4558384743585658545179617643625378656c7a7141645345306f483930744954376a2f7263716d4a684178445a2b48472b6347726f4d653834465a74337752594b373563353646754b4674544455442b664f697a62444d792b52516f4836496b7a394f6b596f6546445943584e3452755132312b3149626150595a70493771526e74356e6b712b6443354b483062594c7654486f4b7364753537506b6f35524f70394b716747384f6d346f474a542f75376175373642316c443169457979392b7a5031642b614d6a495046344a6a3650796950567962552f574f786132564655683976666d397165306c785358694d6a5537675a784a7a5a557367647053593973504a625678357a42706e454d6957532b5867795476354f37366372414154586f4d493870597270367a744264726674534c4937464447354e5a514c7966347445306c4c5653726e6f313461434b47654b434e745841516c656b524a4a354f5633682f4b347945782f593144364463315951615759314b30636f4d55787535723572366170777a2b775a6c747a4e684a31555064376c642f32642f374c2b2f2f41457370744b6e684b39443148386b54796971545831554b453063682f6a74573351574538316c547339497a775a7268464936436143556256714a76304653754d50693456675246767139764e716b6856754e7366394a614635396c612f35463378456e367a4e4f6b7452615536685330564b377a325548372f6b437a346736663942584f727561326e5a66715656362b68644e776847316b644755325354517159765543673857686e484447744a383751696b614a6d37626c7163485a5863374d78696344452b317a5770564a6c6e326249346f5454562f4954507465513546474d6566673332476c4e7934696433767848383377653651307053796778642f4e6b566349394b6b737849447166665a4a54636b37485752736e71316d39366a48524d6c796f724f3044642f77414631526b364f4e6c4a6b50326850634e736f776d544f2b61506c6a776b4b396d646b7a49355a5173355a357561524c51796671645164615063515578386d76624946437158644a4a7a44572f5a6b4c574a30446439474c6c48632b6c7357396b545a644538656265765163357566334a4375646c6365677370374b3145356e516b2f69586b6d7878754544636e6c39684d4d704a464b46476b394f6c4b654d4c4150744d2b4c4272753865304c4832724b57623741556e55533858355039356645384136434f4f51633435642f4c6b66642f4f54685a6e526e52544c6c4e7a4d326c6b744e344c4563354656756d555a76316167426479356f657653382b53455a55316e30716d5455795557695a744d524d35695271382b6158536c367a573032452f4d6871306d306e5a6a4745534e464f62584a306f74483549614675732b54366e454e64544b334b4a316a47306456795055535747326564544c78323570783135497335393453616c496e457a37325668353462446f2b732b72376243423748556934577a53544a454448716c674b73783874586b4e5a352f384149556a6b7232646d2f774365456857646345447065612b717a4f6d4157654f736f7a3775417746664d6d76334b70534a734e6b345870466e36454769785655485a6a3271784b646f64467a382b456371506c71354c466955396d5a4e6a554f2b4d71654a64787156415361414651686e322f4c415a727a6c57547853612b626d75634c63766d6b79506b4d612f6f49386a6e7179714f2f572b424972623863367a636e67684d6d6c337364376f33422f53625248436f7254314c385a30482f78474745494579626e385a49614751395a6f4870364442663039466d6155384d7664797178792b4d532b6b48514d44695330616f6e533369596d4d3977707864476c354b7369306e7942586e36435655624b504a49463556314c75534e4a37732b783354792f743248704a4d4f6b51352f506866332f516c77386b58546a5a7933654f2b55527047666b304e6b35427a5876734e694b7550714233533061462f587835314d6c7a312f76505933764a6f466a54492f6967542f414542326674594a727a515169724a754e646336702b6766624e6162766a466b4438397851726e756f705370335059624a2b4658384c7042556e69784f4f486138687268367662616c65572b5151436f38505346637375725539664b456144586775774b5a744473374772574653366d3955353769306c75524d785a6a4f3650697653506b4b2b5a3467743674536e45526d39544872426c727a4b746169764c317634467636665646684234725537516e5a596a4a65766b797141694c2f535066707968425049736e303738626852524a32314e62412f6d4b3274526e6c67353942664672614f6875585a6d6846734c3676484d733637346930466777674e504549414c71785746734d304f2b4f584e614e6a7950596e632b4c614571363463313963624c4b47624258444f32357a714c4e427a6566553937322b79474e30387764536f4b6b39587573437a7832746c47694363324b78384e644565682f4e53794449375450587a354e704c4f6c482f41434b636d6c7647494a31583036342b522b78666659477347626e364f4c71756d5a6e54514b4c6d712f72364d333677704873516f366a4e327569476b6c6e38625243754e33306e65332b536a6a7039786a4c316338625435693176476a376d364f52446c7433664739584b6f3055782b4a79667265485637466d4c7458416d716c5032732b64646d4c5a5678566b33784333652b75754e6c4c7666324262476b7876484d7252566648765a5762736b313733566a50766e6a61365532585479522f5961435457353542376e77754b63486f6d736e7a686d616f4951764f79592f4d64476c716371576d62476c756c45374e4453687235714e5a716678396a344b5075466b3162476b786168566d5055353879356b2f4d595548304c6b676e3047684e56652f6e5849784942313950636e366e5231577a334d767a555a3261765557796561764e54516f662f41495831776a64326b6d454d2f754231505a4a62594154586f3065363233714576484b374d6a4276764478384f486d7068533275504e37384e6b6e51575a39726e76426f4733336c4a5345307a63364b344c47397162596c5439505173306d624554356665367579444f5a6a56313742466c754447484837315a743651422f7a4b7a6c4d62757a68674c74644b56785a4c4462526e2f59447275346e5a6b795a76644a7a744333486a7938314c6c7575752b344b31526e77574e6b583766724c6c4f626b546a76457a70675a70356c5050355a6c366b706e30705063557568424e7976517a4e4a39695770535031394130786b7949766b2b73344e583555684f6158434d6731516b755351544d564c31643544335578702f4771624a6148756565716a504c4d5464776e57465264555972612f6b48313347464444622b316630446c47786d7a6170453774395a6147756c75665a472b43464364532f6b704e49616332645a614c6e614831612b6a7744463667446f5571396e314a7339764c3539524a654f6d57694a74574b4d667542384e714533354b49735a577270706e4a5038644a4f503841456a3159343761554c4f536350754c5937377261754b646d4746584b567979546d4f5278596143454d4b5439747177383954307a35544c354c4d2b59435a786338704f595a2b34676d7136705079706b2b6f476666592f6a516a706b766970725452435637596664434f72425246325757756e4a64326f55527a4a6372706e3874495574516e70634570365144364d49614579655964366446796f7857314f657756526c4c7564757574756b4973385357665636554b797158543830383775386658525950396161666547415277436f6c747031517969624c4a743646796466674a30427a6f7755656132795555736a646b796b70414a63784a6e69664c4e39736e2f397478332b756e7237675a6d3765696a332f56535a58745546476f61356d72697a4e756a3731777055696e71353944512b4771535874314a4f48342f624d302f764e497a653738784a6376537a324a4c4b6b30724b374f4a6f35584a3275364f785a31416e5546732b752b345a5861526b6f574b7335302f31536633694762397a422f5332373641314b383673326839726f4b4e5073726d5a344870337a4c2b357031666248374b367449713032544b3551506241624e504231316b622f623850364776782f583951375461794f68696338676e7246633255707077385679596d737a6553326b547649756678576e795034334233767a46517141482f414b4d667141565131645852424369394457584c70526f4f414d3962394650614d5a476871664d346f5a37484b466c6c57737639634e77453753636c584665786a7636423364653974776456704556655662337567716654564c754a365254693343545565674d50755847374c4e6854664d426d6151644a41632f316a743848312f514c7679564652323138616e71473259482f4143776373564f476a383239584677582b546372542f3271466a516c62692b51344139684344502b3355454d546c4d4f556c5770324e636d68616d524b6c4c717471735857447478505a48775479794b5452343277684e306950384159626946597a684d634b672f5956733266312b68395334503467744c5568746e5a6e54676e447a6b465070524745396b374637586247463778562f31312b394a4653354c765930434436526c2b6c706c62585850666f527853366c7269516659366f586179326e702f4b356b6154535379726e537369397070482f412f73695143384d796d2b376473304d524253427030724e53534b547370584b5a7a36714d4c6a31663473634f7351634361755a2f5937506d6e4236546f4b5a786d636441376b4535524f35616f7977533669645074595a324b6c6b5844644b314f72396534363457556146546c464f6f572f715a6875646e6a4d386577484e6b364137665855656c48426e3531542b5270435764564274375a456d5a584e6c4e44507464644f733174446a674149474b2f77446847416744657563744d6e795a6959565274676f594538452b546b364a7558713055646f706d526b76586f4c75586c44333272556c535a6d6532746952466f484d634a34774759725265674e525631576a504879785a304c4f5555614830585a73556a714d764d79366e324d58525a6f383458566577417356396a746b797a2b5741547a6b4f6b6a707a635548546e50386c4c382f756e506e353873664c42743446302b6176763133644b717a704d427233664a4d486638414e4a6e454d39654d3934797064504d6a516f6b696a4c4e644433675552616a36717551554a572f7449366c444f416e55534f65775a53716f55594a36594b427651537055427566314d324e57644d47666c4f4f314a6659566254386a71613732757a36363175544f717950672b316b4e48792b376a542b796c4d3332506c4146753235672f63577251304f71576a6955684e41754b34353976704b306272586130704c6e4c6c475773685a3067364a37414b4e586664503967506a6a6e6e682b6e3547356f5a2f4678305351786c77434244474a35657172744e517a6a5a793437676c4e626d4e482b4b496663583241596f4a4c6438454c58304b42744e4636556e4f6f6a7a2b726c3059354c425262677376572f774347642f756e574b31496f4f586e79304a4e36304238774b4934344b5753694d73374d5a557338316371707046552f736f2b736d724236546a716c5652564f74544f75486e7576565375646c55367a4d463948646b592b34526c614a726d6c6a4b55707a55547876525941796f7a46564d6e535650732b49444532307a386a5544544e535142494e61366f426d6e7465397263396878486a7752665a43682b554f616e355979467a4335556b55775a2f652f4d3444436d42796554794a736b6f41484e7a4a747054725a755355364375786a417172357538386a3437486e646f6a524a4c517954326e486d7355316f745a377a6d3469772f32614241426c4e774e4a36316f6b6e646638647370313456734a64726d6d71697a61575a39416c3357684b475050495164545a78514a6374337972554455674c706b566f6134617a64336f7a397a50644e6d3171692f786d666e4f6a72556c6b70492b536668663575596f575463586c46485141542b785041647473324c746c66313871573264756e537353366c3336594f684d796263694f6569325a4b5a3233546f7455784432734658794376686e31715036424936686e5270476d35722b4c3069646f764759655351363930796147757071354350326c303277772b2f77434569396e5977574d7378384535674164307139527a6f31415a7a49586e7437546c4c7974465458396939394d395547665237635033766e486b2f58496335626f2f616f44593452736d4a6d4a6951527453456e4939436a46637975565a5154316662476864773645432b4a6f71794651396f6f71714662453939712f6846564974487276384447414b545655676f6945444d6b6c4c4959775a424b35544e637a57556c714a2f703154574a572b4f4a6265416270576a4d6f616d494c6e2b77465a3055543643554b64584d6b3656534b4e4f655449676b59643065744e6e364559635a506f55615330302f4f43314639796d6637424e547a7451677a37714e356f366643567a5672616e2b56564f374b574e4f346a2f774163314a6f5538346a4c34746553613370536c6244497568543161686e36354d2f5a784f4d3977524d4b38344a2f34365a566876715253696334427743747634466c42636f7131506862486432694d6c7a72554355664359544577303844765943696d73547574717962655035497370704674314d726f36576d70793673325779716464446d593734787931735850377a37546952704f644358546e77456f375870574c383270736a72496f72737074566564712f4c394b5a315338342b5a3547316d4f32504e6f632f3368776b396c3970304e554b526650667a5a476632796c664564797033665a4f5037696e614e4b61624549616c6a685a504d3751416b3252736a58316e533537462f4a4d613653636d67594355316647355563313963374e475a4c706153665664744b647436564d4d58536d314a68576469332b3739664333334a41736450796d35545471364469786f63585a46444d324e30656e4a50572f4b3463734c5930497177364b4d2b714372722f414b4930315a37796e4d547055644a7563302f61744d775a544b6d376b7a676959646c4d6171667154396b644d796c6e58395879377566714c593859617453476a68664b4b542b3237324d6f4e564b564f427051656e334d5a464d7078535662737a4a61636a6e7a5a55334b7068586232796e716b685150423043565153584a5356442f414c4e687a65376a54747965663243756238302f59587a524f37314d72517a67434e6254307a346c594c304d3531424a722b594535394147497a2f4a706651616d6a3954715431692f616b4a565a2f4e5667357559416c6d2f4a79686d7650532f54757651796a5363756968587a574b325072727764676c52716a594c2f656d6b4255516d4335694a724d57744162487155704f4a6c7934594a65642f6963716156383558424c4e6c54724a362b4476632f6a355a35365764735773615a57706736413846527a6963624c65416535736c5964793136737a493339595675736d6572553136717a31632f5536584b477a64557950512b784b772b64344c46436c43514277557a705745642f4c6b4d474f7a5833794d524f6b463673314d6c3735786f435a595370793876624f425830536f795a6535747554786a334a6f2f637345782b336a507342794136696847695a6555687679614f5a4f6a4f51366d524746326562512b77363750714a68533257454442685651534b48485048546153545334784d7257343833644961392f6935625a68492b364a6374757455352b62524a32324d387a534a534b6f6d7358526e3064594f62794e795a2f707a5775374d747856394f516e50352f634a726a6249656871683148782f6234376d687549707450723634324d71346b653652384a4d6e31364a754232557836326c7748775739396f787837506d484b4d7a364b65516950646176756d327254675563516267694d69364a6b5941544e346b79497152654c784a684a6e556f2f384173415570736e6662784461613333735a624e512b4f37374f62385554455a7a6356456c324a486f444c6a444e6b454357552f65735331504b6147754362362f7a494e7853315642546c6a70337a4b486d6a78624555614e656c6f3253466c614b4a38766a5048587375726b544e6b616c463331304c466e74397958462f6b414e4f5a6c746c76414f302f42786c7473644c5648524f64695a714959334a6e6b3679646c483378794a43356e4e424d354152382b7948792b3866734a72363770314457556470464b4c33565173663153702b7861554f676679736d6f73614e2f666a797947536f57466d435a49662b6d2f51514d6f756d354977706e486343736e6c485047664959504c387a5a732f6b7564454f6265636e5762385336656c5533487057326676645356337a55423173745853486f6635734e31464269694a6e684845622b656d58725a342f366c385669364375782b556644513049714548432f61546e714770747345704f55544572595174364a54675143663639762b42304b70614d6461342f352f7742764c3566327753766553487871597744636a694f306641336e794b614866612b6d5a334e4c514a59724d70313961492b7767354d44696f454f39634f644f31416830327a342f7741574758712b4a354772557178386563682f59756c547866574e2b7751304d3971616c2f4343766d47676a3778786d6e334b3648537645346e506139666c35676871364f5a5033533933706564517237536c6830632b78326878736e6a516f6c754b6e71794e7a6c6b58656b6b7857416461594c55633452486c66313952414b744c784850623973505372556757692b34542b7a6c706f5a567a32777a2f4147524248795555796c4f4d765242412f774335546a4152583778703762457a30766e36514b3732717648417865705a364a617a5a46395351396d38656f68316b4d65306837556f645764416c4355724c4f6e65564b767138506e765374507a6671597a485763696d4c392f4379657a396b39452b706c66737230655857354e4833456c624c5a31744d64767a552f565a79464a4a3462426f555148522f6d75654e6864764d654e6f6e376a58546439545a5a78636d443865314e6d5a4c52735636644f6470536e705a4d7573374a593864476d45795334387a555439625146553146685a3572483457664837377853592b4c674b6b387a386e334e7678796a78764e394662704c36656c4a6d62656a6977336a6a53356d686d6974736e456c386d6f52596f3536574a6563357a30774f4176692f7743505a6149694a7a6b6137383862336f73793757634f696d4a536c30397038676c725558782f586a4e4f733974326b7439487475366e76436b5251537177614352556f436f706b556c756561486c654e794572446635507635574c53792b6e52374c5131445871646d55466d31326d6f717031304f45416d6e597737446d6e494c514b5a4a7130694a336668465736576c35542f435130614870506f614d54374d34484a597a756a4e6c71793762463233577a725762614e49576950496e54382b563348494655333252556c5673786e4f3737697239627a725432424f6b66526146586339646f5947597445556c46634c596d4e4c4d677854785470584c32646e5672436b4b5558474450686b39767a5539746a48666e3139414330664d74393743597630576f485068565146656250746a576d6c645855705835444c7359576179735573317376535a6135485a2b6d5276363558324c65702f7163523478392f37434646356835746f334b315966516d58553438566130576c666f74566e7a4755785263752b6e524f4b73485037644f50614f4c6a43746a6f43616c63633476435763562f463968467176565879573355384f2b2f3651354e4f327459352f4a38686d73616f614c506d51506337653570434c7477387a71306d55326753484241613577397a61665a4f324f4f4c644137503157395167734b305053466371333158566c6b6335526d755858504d53704a5049696f7363784d7964444c6e52796442526d43744a6c584b4a6a51305578697634767349506236312b5a4a314d323378373041426138504555783864354f4b535763474f797647773770314d34765354335157373461666c5754444f314b676e346c33314c625937376451776f395a74656d4c49645436442b547744657057303965576248333538566c756870324735452b597734633034352f646e4944715a78566c48394f6d6c784f56484732507878362b6f4d612f724a72312f77414e733365683149524455366d4432616d3675695678505a62653671316978752b526a4b70315644595a39562f49636b5a55594f4a424e73644e2f722b59435976354758636c6a38677976522b704d3476306f4f35556a714b646651316f4e6c3273537039476a4e364f6850384154707a36482f476167644564414d425155746d4b646e534e77647a2b75336b39516a354456364733686b7068524979424f766f536a34334b6e6d747166505868392b74497678334e716c3345536f366d65594f476b52636b42416c52736a4f4e334566482b72586c766b656b323776347a703375336671545559476f554f747149626d35757a4a6a684f6c545656554a2f6a38393777596c56686e656f48756a2b744d674a327845634e5144637a315a386956644f642f6f4c3439522b706c3675746c3236467659694e72766d4332767870337a5356334e6f6a39354d535174494a6a6370786666544e5332566e705953637657626568725a70742f47324b677561466264474e2f6d693250326d64547258615859704a732f69624a782f79533176374e6e4e4b4e78756e443475424847794d59393536396551424a39573933736d6a6e4d3945384f5456794a39504a64565a5252626d303746713971785a32573878576c4f542f414c534c4e467372696776627647644a74482f464c624834343966554576384135333965575a32646f65673536382b71457657307330523039505167627143364d4b56596b594d5974626f71474b2b76542b68707076557461474f5a7a2b7039333568354636705750526f356e66787365436a37444e664869763248346b585674587349783674412f487a644f36437042506265624b51762f77424176352f6e59633062654f6665416176314970373349326e65674d7366304a35396a63517a796f565761777a753063576d36757a2b4c523243715a6c4679327362375276593734682b455a67393037653766395055685857395858554d6369583864354f304d676c35747a5947726d642f6c584b6f57786d4672457937724a7964784c445a5033704c54787a7148304e70636e674d662f4a362f6d4d6b6571625962737a43787651517036387249707167587535306c757069354f4a664757736a535466395972506e30724c474c4e335a496245337a4b464975585a6e4f59372f41486765576572666c6e6c584857502f4142796e2b785a6e3030727069304d31697a6868756a72706b62465a387a50354937493944683644614444355163614b557037564d6c74694f6d6f496c6f2b742f6c38394f624a4c2b4e3674593061554f6857576856354f6b6776512b6958513249354d686b5a6156326a63353869442f51723766396d656c33744e4e496f704566764d6576494b562b6f336b354d692b4430417a39434d73384b494a4b722b4c65697a356f3159586c766b665841707379543261737637587661333251664356682b3877476c6a2f774354312f4d4f4f2b6f57797a6b55456e6f4e6b785635317976486c65522b502b555577704f575257666f35557564424f31674c6437706444374973755832527561392f4a4f566b5366366a4564642f48313567532f31383173625a754333305a6c712b786534495534566676756c467659615636584d75764a74354464656d6577436f6e53372f54473442544c32382b484f7a38774c35507272734f7a4e4a542f51546f5a6c51515a3652797145706f5a576e547955565a7a6446656c77714978714c5063417257305030657758744b6c496b6c4e496a347351473850716275335572646f2b67504b2f492b6c6a4a70587a6d6a793662356746574e755856326158584f6c50322b7742516358502f565535465079746568535932782b4f5058314578673958764d356c7064582b4f75544862655473366d72594f79616255304f61394651664a685855664c5178365961476934593746476e3243346b752f54763654574a2f65657671426566366e2b583557712b70666f5034785630344b4d765542376442566e6b4d6a74416e795a554756484b696965457374316b6e5250707a48384b676d42783342326846496d4f466752733833386c7250544733304677626a305035534f324f4c51587a5575647163484d3570396b714a525a396c756f7a794172506b304448764869326a694b77355745342f50362f6d4a4f586c6d735a78624e506f664b2b584e6c57637a53327a7837315a6861524b42745a2f7741476c63646957516b4d2f7743337452796a34666b4a716d3673333956787878756a4872364234727a667944537174364870415972705a6f7233777038747a46616d6934632b727856654a5579486c6e316446544d46686441616b6f796d54445a4d6644643869574b2f692b77423648713935554766397976386333716c535649565a2b68747030594835322f386e6a6d4e7859365275476f666137516c62546e5439374a4a5a476e337a6158766e624f32507878362b6f2b662b652b655553726c7a505250782b37506d7762636e537431504d5a624c676d544e4464496e787a4d477158727964707838536f465354385159665743632f347830765732507878362b6f4d7a65643747617a755958342f2b4f345a5173316c54736275573071704e75704a544f4f4e624c6d7476385a6a3071474c51796a6774554152306150416e5a4d34516a45572f6565767149697631553876716c537544386666445674694b324e3931326c7a5536736f73307074522b732b4e6871517766626f4b3064474e4a303049635a30473842547772592f2b54312f4d4b792b5965522b50564b626a2b6833685762395737524756756866334a687a6b734c4e3869737459444d746b4732796d724e3864655a434c585a304f7745423831416a4b7a4d6a45543866722b594f376e7148366a716f5a5248364965505455362f334e49744c50666f396d436944534876576272386d354750354d737449764c4a6e46534a704235725979775a37584b7452577634763043462f7152355a6634747a53312f514245376e792f4e7430654d3674636b2b6736684f53793674476242597350684b6a637a653072454b6673743067347a76506753762b6d32496e455848796e3141386f564f6b38663049442b56706b335167514e326f47684b6a4848483742716f79666d494e7168544c4e686c5a43687a6f59385374587553785032584e73666a6a313951516839532f5073367957486e6f6435454f705536664b69653870627264324c37465339437537685a36677939413944424837726e742b7853476175345873574832587869763476734444664e664c2f487137637a6e6f6c34396c38314a5833517852366a66356556396f61586a3075712f527a4a6568695139316d4542324f734f59546e2f414f72323653436c5149694a6a4d32366874333142326559345a2f2f414d78574e4f7673456f31567a374658694650376e55577234304d2f4453726e38702f4636444f666542726e456b484f6d48746c44675978583858324142486d464b7974312b656a46666649394b41746a366164794c4e303378446f5a3768355868575a70426f5a356551436c557258644c374d3043514432546f41786e45644e2f443135676c5236693741356638414c3676342f69794a31586337787873573165704e7174563274444e737a507a6d4748324e486b4c4b4f6c787a342f33656e324e413255642f714e754f6d706a2b514b35336c65375a506d64703942387577664b3745306f77612f4a7435322f34376e4d794b6d51726f57715667516b47506e366c4b42516d4e54445351452b4e30784f2f704d5248785a6b6666357a66377a4b37642b50567453375a3535574664767675477a4348552b2b31624f56326364644f36657178503231736c5851317774365533303661334e31662b714431323335433632762b542f487278504f77386163387a4a667055677a526b4c47702b78524e6e4f68795644714f566e796b7a395339456b4c4e335a55302f5253553746667866595665337967465541522f6a4f32624b4b6a4b76353433712b534a31595a362b3645764b4949466855397631663566635a325643703531484e5437676445752f7743326d596a2f414f54495a46355072467a5a646e2b6a4c3332353572376e72576e36444a596d54315848686b50755051314d7668446e744b554b7a726c5474686f775463356e66384e73666a6a31395137797649416f386c7973716a38642f706d6849497a34694e646c63775558626d3374326a6a3644423748326a4e7a7953344931664a584d34394c685547464d417a6a2f774354312f4d457a386c7554556a76507839624673592b62343772362b2b6434364f30456261456f5a643262575a512f5059456445665a375935766132694f676c737344333070706950475076384132455a772f55346374596f44304974754c745033352f463839694b38474c5437396659736b582f4e43756e376976706a4b6b754654776b552f61532b5a4a4d6c6b74747a38655a453438463961746c4b4b6b7339476471414967676a587766496b4b7447712b4458556d482b4c4763514764302b6577583955326336465530554a72374d7637725732507878362b6f75795038414c6a3149385979306e543661507367636e2b507361726b564e64476b755450685747626f585a3555626c6e475a645276365061714a347070366864535a7572646e476c53666a46792b4b666e643575736f37705042367436395a5a6e4e6e6c6d5a34366a55362f54774739354862465073496f7a5a575766616a553571706a626437484a2b464b5253565a30346a70595369503835504a78354a6f4c38513171794353422b66502f414f4e79356e4a726f7857764e793362656438694c7364733878484c79586a78594e6e666b557a334934556537387730482b344a35677654734633694776565a6e6165334c56763744764765304e5462686c52314231352b664b2f356c4c6c572f774455353243476254396d64596645314b4a3931474f304d5a66376b766e426971624e384430594c6446635571492b564d666e664c765557464b374d2f6566424f4e48377a2f6c554e6c5061556e71677754645345377636546f524d38316f3441766f2f7742774831493155446f713848746a7662644830536c646d5559334954696a723869505230315a2f77414e52647038686e4671574e6a6b622f4a5267373446756f5452487538634974776745522f754b65626e6c30386a394f504962366c5a2b657a41566d6c6d6e7a503257386e524e457937616e7a3061583279646f567342626a4b5a4f724f444a78616d5a72487559335a33663242556637672f714f57426b3256654e655130545a6c4d4b6571624169712f754c4d4755646451397a33395173574d696f755153597178564136616e3330756530676a334e6335447366376e58714f636332626d654a556b327477446e534d7a736967446d44523071464c413436486a484a4c6b77314c59676b66456a6d392f69354635316e544875493637784b637638417559657274304c36744878352b457a634c4d6d6971563473335a67324e6473756c72397938344731507348504c50795a617758533162615a7474796d2f77436155682f54334e5170332b364e36767178354f523451553064532f35464e7a4949656a5263765932632b2b6d6d2f576e347770383266535751415a4f6232414a42614333757153397a554b772f334f665778586a2f41427734374e4b742b6232616e34664773414b6d3058646a4353725054565643706d656268334773436a706d5763433631614a5254324539376d6f4b627638416448395338374c7376646855686c6e38444b647033696c6d626e4e766956504d4838586b73735141352f646d7156426c78696a525976334754716e46422f54334e66582f414c436448397a6e3156654e5475654c5654706d674357373476456d49503658645a6b715156517651374e503861584c6250514a634e71667266425368314d7770653572362f38415947422f6444395a69614d2f664765587a59352f472b6565694b5771462b6472486d303466515a5950746f4346655456774b472f357a6d32517151703971703375612b762f5973672f77433531367449304e46364d6a4d79494d762b4f6a5379535478786e547376326979365236414d6f4b63584437565564714650316d66625359526c336a6d562f77415054782b30424650397a3731427471735468344642364759663865314e655268337a755662763536367336504e6a457255564f6e30695731374a77414854424c317178506c2f774454334554316e674a626966334d2f556e5632325a2b5469624f544e54526c4a7a6a666c59666b46314e644c626f75774e697a74425a51722b7a6f53386f6b5950444836594e6b63304465344536465a39662b784e6566334266576a4f584e65617070587a466b4e754f714676794a706279704637464d4c3742305a76424b785a4e2b74302f73705432655a764853794854334e664c3743564a2f7549656f2f756264526875784c5071387a663176513557546d6e7071625171742b6170376b5064437a614a424b4c676c7a3472414f71616356664b456536703466302f734a4f3738394e2f504c426a767971676c4c732f4a4b4955495a6a743653424f6f35374b4a53616d4667314a5a386e36706177486437525248784966596536703466302f734a586b2f6d2f75557657335454417648436838746445385038687a4959687a4c4932535655504257732f74513658535339494f446d65487768396346314f6a3355655838676138662f4d68326c4d3661764531733759632b4f475230575a592b4c6a586f474a4e46796739675a2f36584c3965594f564a555a41414a2b765037322f3150752f4d5363507978314c47395633787a626f693151306a6251767772624c52614931396b6b596158557458424357477466384132484a5364444d332f66384137684267783771504c2b516b32482b554961746568484a68655764443544357258616d4f4b4d7651467145784d75693647682b344863756e4a704b39336666456c5650512f7744745839566e546d65735a4568542b522f6853437a2b635a57376d7a6f4e41476351485070446f5a4931664c63684e52686d70587254726177654d5933682b365a4a74705533725a325738424c73723136394f65535832557530624f4576757a53545a464e2f3562506d7a744e645972344e7a692b34745a74584d3661386f792b495638636733316d6c737833417074656f2f7054354d332b4f3259504b4e51704a3558536e3950557644536e2b46793231736631696774483459783478773849502b79762f4144483243546f72573159343942622f414946682b6e506e374f6e466c4f31567a6f59564e32766b47796443676f4c684459367545314251427769662b542f65665a564d475a522b3478724f2f752b77767a36534970566f7a34317269523861305377386651456864696e4e52763659392b755856563066756a6e66682f334d4a7675503947797644475974756a31362b6e7979613965742f71414749696a784449326668386c304a6556616469574352355764545a505365524f694d676f4b366a704c55584a7836354b6153636e762f736d6f6d7463635a366a544756414639674d357451536469745853453079706f63345839304f587461646e794c6f2b45714f652f76532b4575704a4b75425a6d4e6f6c3042626b45555435417a766c5a4b7772457949545a476d79546d5a436350615a714f7976356d526e47756f574b396f307550536a495059663748737a4d7a5047516e534c4c4a73745578645059376e735a342f384b457731796f5050756650504d53436e514c716f70593072584f7963754a7052385a447758504f413374337446725a6c5348637473306364687530487a79787874306445763431443044423847774e6b7a5072442f7741485130516e4d484b634974364347746c4935567a4f2b78486e444b7331546c6f3656594338617070567a466b707864536236756f706a506e597170712f622f4b38615354613337417a457a45356743594e542b4e48746d545042386a3232664e4c4c3275537669614c335856746e726f5756664a522b5258772f476e68534b396747347a6b533830635a347a6a496b45304d31435a686e65655837565a55336564653736345a31575a5932705239304953582b6b54757559596b3576556d614239697a465836675279636d5047654f71596164437257525773324c44746a315435575850426f577250342f735a34665643763547666f7047476f536f4667706359464f337464397565536254783573786e3762534e693455366c683270534c50733066493955717662474931414e4a4d70704c7679664e4f656b31695936786749554b52436f616f72712b4e6648514e61304f525830687231537975386c353862457a79382b5a664a686b7a6c795467436a614a526c3744416b3233515351467843324c626f737a6548424c6e73566335476c4a6e647836395456596f4c4567587a437a342b4b2b4e6d6b4330756b63487a644443436c4133314c70324d334d35705466536d5a4c47304270596972324232667650642f336b4d6c4a7a65644633772f4f4b512f64644436516e6a6950415a66534d33365471455279664548614c594967766c2b782f495569756d493351755571645a4a644b4d6a4766494c657a645833354341486631412b34746b6367545476526f35756a4e3163484a4d7577654e5770654b627453706338627152577a6c3136523757585a7069545a78786e51416641557a6e76444d4b715655314c6a6a3742646e722b4b6547654a4d71794c504556707a5666704c7a306b70584447787275524a3737557a4838663249484a374149422f4b5752637055645277665730436a56544f32384b594e4473355a6e746d61784e425338584c4c6239766956452f6953624939507839702f6f436e475a2b6b576a703356764f465077756f6d6b5a706331464f65703330334a393635784e504e4b64616b646e48397066554274636968532b53755051432b686b4163683131396b77552f42584a33516f72646132654a61317931355566644c3741694c6955796476446e50374e68304e36346a6e6e57476577344f4d696b74354d33786d314a413168577358497161527134633836696d6c57646953753554563154314f396777492f2b712b4d4f67367167786a587452716b6d6c5a4e703349556d2b394e474b326f7443756a745a5a764a7a626f4f43643250776b70754966665942676c5877442f41464f5a385a43483864777a77327a796f304d3668484d2b6c596f6f36303137744d6f5a726243526e722b72476969684c4a5255485665387763564c6e75363573427452485679536c4f6975377239534473315631414545344566303079736d5a724a436a356946633634785677472f4537346148456654442b706a4f59783142795a576e686470362f524d4d784e6254526e79546351366a4c59764e57423344546e743979303537506438674e4d784b2b4f666f725574487667446a4d73366f6873366b2b4b5a4a524a647a616f496443757a6962433939534b6d684b5645704437442b744e387177667839536a2f414e58394158657859424a64525a555a6e644d31706165686d42544e5337517356524a524756437847636d5543616c7a384d33465373322f7234794a594e6a547769587a57616b7278356f73566d76356f464a394742326c72735a64536d796b6f36763438585571437a396672356f46416378724e79776530386b765664707a5a765a6163726b7a6f6a797252495a6b33677375564976347a3668772f566e4c3530754272432b7a4758756c71616267416456375135785a61365a33334866316b747466426c354251686a7a30516a7a4a5a324c797a4e656175583758443470795638353747664341685a5870327a777839387a2f4e4558746c6c7a76694446796f7874544e734b666d7654657971614d703576676a6a57316f782f48374f4f46335a7a65336970467550724872317a523147316b667268365778417543594e546f6f365a3934764d70506854353451396455315a46326e322b3232632b45784947373245512f7676764961785848475a337a2b48346639762f4844347550416b505057627752734a576a56616b4237615366616a6975314e6d6e532f76466e78696543507830442f7741662b376866366a34742f774159484d567233357271655732593364333463667863336c4146616e7233346a44466455314771564d633432636d596f756462483171566a30324776677352302f6a392f42365249492b646f4a612f7744622f5359744d327a616561496a7278377576446a4844684864773432787a47766e6d586e2f414a4a357a57366a574a6b586a4d69625262697355733063494a5850466c3267426532697862464431594b644f6b766a476b6c6b5346306e4d7a4e707a613172572f466163696e4d793536534a7135314e7a44752b6f333548565a633578716f6f5632323246633430667955743144766553567a6e7863774530327a4c574c51547579465a68746d665a6451346335616b715437364579734e5838625945734d4d5a2f4838785173345050695637676a4d4c4350715266474479362b5a733146614f674641646a476a6a654d2f644b364a61737830744e743861333245656b78672f7633705a51633330435037487a4e344170646c385a754a6375643350546c75773032386a5a6c58424d4554717149382f76474336647a7449694d33544d58504f5765697341462f4f724d43457a434f387668583867736c726c49666a756e2f69704d756f632b663456634872426c2b7856576b47646e5354753549546a3968725234414d6f3837516b6f7452384d553761752b366c695a325a6a644d36556a4a454b6d72634a554a5979786844557358506374787a45633567437a42616e323049645641504d34776b4c504d61506e6a54506e53544d4e4b46584e6f514e6c464e554d764f4158416f58377165787875506c426b416b3436495a473435643561485a6e614e5366745a7455304e377a637a6f52665a7a545a6e334e742b6e523264512b7751507674345a734b78307a4d7a4d79436474786c4d3054736d574a6c526463365775616d69654b3932336c79446250486c694c4261492f774477756c7a322f57397a336659464d7777475565363632633632387a754157684d75324b5742445a5579633062525a56354265326850666e6f4c514c6f47366959564e6a62306b6c2b365363446479756371582b6e4d7474504f70707462564c4c504b55306b746d6e4365685a3265372f70396a31507255473264614f726d36443039492b4877484e43497038795753384a3245397364344b686f75485a57544a316d774e6275665a304672546f6677712b7048334a494f7041457049426430454f50444e626e557566336a32305574415531355a6970466c2b356f3646386e4f3148386770756c73465050635a6f50363962365453422f594231517a2b51774c4a74544f762b766b4a37706f766a6a365658495556725550626c4f4b6773725543686442396c4b676b384343776a4c69306f4c2b67546c7430686e4b794749644d6c543344483777517970705471577175674a614958486c704e30367937305139707253726c4a6d6268596b426d306e6f45706c513153504e2f666639393330516b75307858386a424f7165734268532b4851537a6a5770392f774239715576482f4277677261324c2f567963624f70686632435357362b64656858592f77436a496d543979736d56515445354f68783678702f66737a5345314459596d49493663415174303635724e446e4a6e6c2b2b3941386e4d646633526d727565473075583550754e7a2f617a3577486e542b744e30655448395961415451385258795876316531544443546c63782f6250562f4e584370626f4d357563783638395a4d5a5330674b67676f4f726e7875426a4b5242794d456970366e423231365a704a6c736432516d5a366c4f4961486679466e6b6e783873792f734a30446632552f7368796c547669497853332b67454a64326b2b39676b6e70716c7a6d636e752b754c5571716c596d4d6e70636443546e364a35733870704d71532b6e544b35667a47363274774f5530556c5a592f34763074585a61394c513573564f7835644b78656f4e3258524f78764a7468594c573553702b45314956676f45735837783649664331416a7263584e54523061424644614b5a6c3930457a7874495a644b7841754749484356326c59706279375a49593243512f576251487967775958464b36774f69363030366b566c6150732f78584f30733235306864525575654d7035705253736c734767505a37686a6f5478487974427a72364e43582f52614d61514b6a4a7a4f7a5a366f463665726e4244556c615a654134585a6244736f6f417757516b6d6a355a414e372f6653495258746b72516c317a73417672486f736c52506d6b69324d526e3976465642524f32536d7831476559382b4832794c6978795744756f4154625048732b59615561756c4564422f545850734d3147623169354e564676646571794d74646d4a446e5336454669394a6376534359456c777541366b43705071663674696e6a5072364144722b665a6d47366c5946694a7672426d436e5472657542713675716e795a317a333932702b696876787a2f4142496d553049527a573963796c32633163383764334e6e475243374e6237456c436358457a737543796c736c652f6265436b2b534e70726a784866506e545467735539546c374651704b36626f424c383377744e644c763630476547745a356d66786d6b376d313931595766796e2f414e6b46463936567161746c49334f4d615761626b39473945424553615766732f65414654572f5a6b5450694e4244737274744530394a775047796f5866434c376d366d61576a72773059302f55457a376c6848796375795648302b45774844476c636c684a5a73716a69316a347a39663441734f506a714b7468784c705a5779674b44612f46622f7744537573736d43686662676337534e696574664b445378335a3758474139584250446f564b584967655562456e61735847354c4964415a57636d5149456165473554463576756f736f6f4d4a542f414e526d74774437454146512f622f494f7a4b72757a6132504850326530797a7a30636d6156476a39586b3161556a744b54594d374d3470444d4a715239716555706366324a336b4348514c6c2b6c6c4a364c4a3378726252574f662f47586f65696962505177534965674d633538496d442b314b364d487641356a354e533265506138786d377469704a706a6463744959646443373458304a3554494e6d68533931394e68437561706a4a366a5933336b6e6833307539736a754b536d42396270394851573530455a356d39764c466a715a4d346a366d6175674a455764664837474d6f795350765641672f734f53667a4e643854326b4432337364524f545776523779703978717a556c57624c48787071794c567674374130745236434b466f394e7676524f6b53637973674e435156576e334d6266535531713151587955516f514f3345674f765947646f48597166724a57496a7a542b31524950756566306e43534f5668536748695934456970754f35676774646e314f6c7a545277697830707376675752614861326533482b5276557a4f4644714e4e794f47774a6663494f465a384639775a714f3962383947686b757a74424d46732f7753642b48535445744f66384357734837674d41315554683950676d365a71663644495346684e596b4a4d695874665a3833674b6f443678617375543879614a723631413656517a6c78726146675078475a4a41446a2f51416f6c7a4d2b4363354e4d5930632b796a462f61744a63324e516965642f46495a797a35716f542b3439314a392b4a2f7670705374706b42316743756a486f57314a4b4c69684f35714c35716f4b627a374b656254646c62455349506d4b68636446432f69346c66513968556b7758495650305036426457564768464856424f6b35465430717971305377525a6970557246756c535a6a774c703031554c6f71363430715036615151726e556839675068727162484e596132336c416454576146566379506741657a6e505779524d76465469374448336d645038416c504a4138553068547a6f6d424c6d564c614e6b4e6a3238366a327964573257444f5833392f432f4d6d716b52637a6c47572b3668784f426e324349615339363065317a6744356e2b3352414c53654f63354e6b6c4c6f72564b36413478506e6d36446a2b7743766b4f54365a752f66442b776c4a54415336666c616f42517775354c79312b6578394d4c46394c4a796a63745463347149353542516e4e5477307a7a796c4b354531414f4e6f35767554306571397767557a374e597555636f7835733064546937706367442b78706373512b4e594e6f764e78674d61614c50746b5943456f416167527876784573772f5441645a5569557737552f483968576a73613171357a50755370654c5775642f42466158556b3461666238435a7258456b792b775839414f6c687252556747363030417161676a735242647935702f466d785a4958555132633933796c56437068643543494735767a5745357775534133617466646252336d6f304442515466576f6b70726b6f6c7962596249705a794b7274574b515a2b684f3844617563536253504246592f4f6451516a51394e72504e76346d484a59656d2b4c536b5936364e47677979564448363448494f766d57432b64685a356248577657387a2b7a383375365145366e2b7278655936385241764c2f774163642f78503258697679504e596d6a3367686145624f66384158355248743551724f375548342f6a374f355056672b64662f7557706776364878576a5569524c7348306a3834315035447578347455366e51636b5430517a30783145685368354a497a6c64416c5158666a6f396a4650536e6958637344374a724467524e6f694d56473176707a3446365a2b4954534f3870384838723376494a4b71726e6e5572725959714965484d4530475253587353564c55786e38414b372f3250596169503242304d356d307a32733147777976562f774158786f6767795045366f5853306a4b45476b634d53337445624655645a3032454244386b374f6d2f6e5245784435543643544439556a6862642f77447a667a356550726c45533366574d733461547030634c41465755623077524f6e75307935797568612f6b3449392b5a5a444464316773637a686e37666148796344713055694f7645615a2b592b723370726b6f5633433861686658564f70722f4a2f49677655445a74537a53577258435073724473735a384f6c635333444d4c615a753946516c31314b745970627747767537734435626b6a634d614d674e697a57344c4278536553666c7a6c374535314c5849742f77416b4d37732b316a2f68465652332f74546a614b477530724749774b3838674b34637048586f596a4c744f695361326b72465151447253624565772f59756451667961505a4d2b452f306247544f70543868674266513974674261787a4b49494d6a63374b794f72537654426c757975686f6f784f364575627153517a52316c724d343965664e534a79755766665a563873443350674149723545494e616a79684b65633554382b685652424a4c7137306969386c5a726975716e52357876326b4d675462314a51664d357151532f77422f796f58533643424f703239326c4350343969495759564d6568694f446d6f692f506b4b504f7a7448574f2f6557364e6e306649496638544d324d7063333547416c31726a43595235574c6f327830316e3767643546584e552b756c3965784a62336d653650697978306c4e4c564c514e36592b307a3055436333316b6e5338716b2f304243616f6378327a6936474a564c5a782f32382f79702f7a3657546f626a5a303630636c4770745a64445955794d41714932473878502b4e2b4532556f2b596542507332494f727a4a5969716c63536776767a704e47745573757831517a5073546b5a68584e713176727a304561574f736d4e554462576650384e5943433965427244327a61785272614b5134707a6d4a4c2f504d6e766e3271595452416c48585a36555232676e724b5a6b756b6438545072646232746b546a76457a56347a6e2b4d726673542f587932496959334e33686c69454677565a4f6248632f547472364571367634326547666e37466e524e78706f2b4c35702b424557696567726a795479562b302b7a49774c4331383061613161566f6e7061436b72634d49764c6c656e354d35624a2b517836415066423748582b7a2f722b3665656d7830784749786e496e3370373470334671477a697555304c68526e6f6e31334b47434265637568307749364662357064536d7752654d36474e465354722b644255744835497462623835453071307458674967774e43536448484e537a5868374672387a425766653077777764716c4e3036534c53746d39676c50383249786e766f39356e2f5666342f7036674d64444c665031777a79613178654f6e76306e41364473383634394458542f414263696c3053706e6e4a382b664f546c646f427a4a71334d3662614b65327a57333138525050446f4b74785a303544415a70546e596c62394a74736b6a4d3170784754436d3346574b59773431654f635231636e61456c4e636d7976727664326d6b7a4e5a6d496e455149386950735369615751764d625a6d6a5452324a504b3675646d796332436b3876475259706e3178797959487545663378524761356b6d2b637931456a4357466163584d35466f66736a71305773763656643172655a4778325848617731706e7939617169456b4369626e3258456b4848387a484d61664f43596f4b7335576146453041447a51366f526c4e434335694b6e756e5577754f54524f6b6d30574277507241773437302b39414c6d5335494346546e545472655049725858386c7950336333575437654b666d3662383237536d4f66716b776d79374c623965414356377155736f4f62332f473665506138782b4355656a6c7a74546f57573251304b79395165355838686363724a394b31347936664630616957754c33764a66466b5a7134705832486456525841627a6f2b6e304561466d694168705155324d464555485337707a6b43364d315a73704e6d674f65787a2f6a644549416555376b7a5a79492b3936424d7064574f4b32314d75687a737266652b56713069716e7330386a74506972464d78774832715735792f595036447047625747446957584d49695a36416c5445775165465761705879642f69663554586a70304154564b62423552546f6445383866664f496d4d5874424a5063596c54536b2f6d706741644868387a3836323233512b435a74643864746d69417a6358664d664c6452704e4679644c346b7258375a576579637767393946426d62506a42777a7271447057336c4c6a70305a39774447734b6d4f3042437a2b4d563439486e4c6c466d61756a5757392f7a6a38624662337350356a56536b415a53737057366c764d6e742f644f714e2b6c5532546d653275696a737143544c5a7a3761766a6e736a714e39505867464c775a536c33514435624158343769732b744e6d636a72777a6a593563564c2b44776c5a302b61584f5154664963715843496c336e744272652b31536c453047324c444b35744664376a3039464335756e5a48706f6462784b7063794c354b76706146302b683268784c756e324135376953482b482b6b44704f4330726642396630466163306b674f6a5779576a37476b6e36534b74506e632f58647231496a393265326d3670726e542f58586532586e414e7a2f414f48736e3463676772336244354b665035436d61376a4f782f784c5a6f5a4c37577454645a396165774d32765456382f7741656c33536a6846686854786952346155796964487a4f7038504a2f7a2f414f782b79633230776d64393965345466686a7a34337a44526f5379765a6f4d516d6c6737585133702b757a3175426c544f7554383374547858796f642f5565383868593649716145386565685936544e5a5046524b32646d6964737874694c525165594353375859453673314452365a4b497741505a4d5142332b71386e6e39674f626535325235447a3372746244554333794f354c343437507a3677545061725655324643797a3568746c4a4831334a2b566f63466337457a4b702f715a36302b5544587a4b7945785939464d7761777a564d617338356c63544d626d66523545514a6379754c79547659526e7937684834714b706e54646f533177726452792f2b744a6d496a4d686d73626b4a7a7772304d724d4d2b364e2b5a6c6e7a4c6863586338343761366164436b654c7a614a6c7048744947687458754d3148536830374679794535366152326d424831304c61336255694f3257584935335a71316e615768644d694b4f616f635661773075506173425a545070444b71662f414768383966683576714c3379427a53315775736b2b5274394e582f414b6b2f526e7074484a5a33487a4b704874376d2f566550644b723545704b674743582b416441574f64327475376239762b4137572f7039506b6d666c497559686570476d6d72787a5331797a33694c744e796e6774534146754c6e78734a762b7952626753743143324e2b79796e667a5a477566714661466e6b4638634a6d487373304746396656705a79696e4d30637a4f3636707155796f3053415573647745735534326d3843436b59766433617653506b474f59324350796543685a7330726c31765042516a676b656c6d59633164566172636d58506d434e636561744b2f61316f303273483468536f6a6b6355693563526c4f62466e3130307a6d614f7a36476a4b3768304d56397936717969366e646c79566c52557877772f483138587358586e4e6e55416f43796c7462396d512b62486e344f59324672366235384273365965615343707857575a45566b2f5a632f69366b6644354d3336374b4371713537317a42543778544d34356e312f6165734457543142784a6378786a6c4f7a71536a636f644d464b3866384145714d3438537a446972442b5467574a564a662f414173594a544d494b6252664b535a57476c79616442512b6c676e446d376d394f76466f5a54733572614b70376466595663552b36377839593639526146427638585137556c39714a3838444f4c5367724f6175304f2b325a6d62544752642f674b7443444d6d736a56524d797a372b6b714567307242545048306e74303575374a424a6c36533566744f5a4b6d42374d32692b6b556e522f774264436f4636564c5036397a69324258514d6e4f7a7166525a4f32483459437a35636d48646672663841547336354e67314350742b7a4d6d4e68475a6a3965674b6839574e4554544c5a6d78366a4e5137706d6471304e674d7947566b726d4c6c53734f2f4a783061324a575446387a3650596165556c3075646b4277613659454561325131316a705248432f49634d757a6769506374476133536b376c55316665364c492b5a3743706552706d6d6f576d684e31416375344d51574a34766771796d7741565566636d614750367578546f627678376d76753179374f6c354239755372764b686f6c2f6c50722f4146317554573737482b345a366667454c697a314d386977497046585650302f7331426e7a6a6c613033785a6337395962633943324f706e63366a44455763487458326575327a564a634a765536494b36314c437976507036764858654c352b6f2f4f7a353335303157623147685a6a4e73355a4a424d2b5556536e517a55684d4f494141486c4b6b49713754522f706a724848764670543257456c6d742f4b55554f5443792b6637756e576438677970735633746b554f6c5133373332695771732b41716a2f53644d644333425366395348716365526967336b7a57786458726363556c5766464d36706d4d4768675070327648506d365464594c4c4a3653593470424c37386f705a783131424847597a6a5045542b6143667468587930764c636867524b4d3032496c6b655853714879463071616356792b636e68586e32546578386e746b4b75425831666b4172506e6a6658784473646866477879635463376e785a796f6f58592b476d31744e614956544a7a36364a2f765435764b732b6436616161683437336c4f585857492b4778737234426473415468574f64446b2b334d376c582f414531647975396274305a66306d4b6d6437534f65554471774873374f59562b772f644e50503841592b7336776b61706c586e665031646c73795a666f614d495867696e4e7a7033616d5439664f3779655a576a52645976514f514b766962395a504b512b566f76542f514a79353879744a45307a386f6f70394a346e58496b37637a4f566a4a6f55394b687149657364536c684f3474526c373077482f744e53542b485039333638524e616444586c68703556546b4c307a356d56692f6d6b374f305757726a2b5578756d6d577675685556576663726f2f414166426c4c4763524d7a424e65547a2b7762784e76356f4f6a54666c614575345572654e6d72484e5375766d71576e56323532646b68315448564d58315941683141744e436b6a2f6e536f366749394564434b675246784572744f4e4e355979717163313871556134626572425043536b4a534f67424d566278376d7650326353536a527a344f674646355a5a5535303730462f574b4f364769694b34314853773756716e676d71657861313642367a42486732742b592f756455525675756348395a54616254694f41484d79655579532f79302b6e6a4f5662506d2f4a4e483548485862316e57494c536f586c546a54565a553476664f494f5035352f6d615a73367a346c78757832654544485a6874532b617a495079616c626a4f3441527a5a756a6f6536625272366a7366776e786a464c3073386661707a756b36423078704946665a5846635a357567477479755152674764745135317445332b5644715276707036374e6759307a64786874637a37484b31784c563973507248326d6a6a4b37464f3566453237555977415a7165576e6c48525356564279794f7a4a582f414258313366786e484f69522b706f2b72785566796d44645433326e4f35344773544a564c416d5a6f486b6e6c36344e4765715164414a6e445854596d63324b716132364245384e4437594c6d637338695a5a70495a57673577354e4e65357646693551454766752f4d5461616a6b3373636e59693471324a464b4c48577a57634e557675585656307449527a492f2f41466d6f654b6e6a2b52706d6d525576655355306e334d43635836356c486c3754356130783531334a39486b527572796e46742b79376b73366e71716e4b31394d6135666e6e50356672416c50734d442b3150667935423471646871306f476274664c46634e73576c5a5464454e6d6641357165497970346550717936552f5846795578676f562b2f7743596865523368504a352f594f4653664f6f65746b4f7962397735576861483866566f7562504849797165734b395a5a5133427244516968726735796d615169657058457257357674346870693662373559652f514b6d576974484d3670665664697838792f542f3841496d364766593678704d716b6a626e6d624b4f774837306d50484e7349314b7144454e7472477074306f46596d5a4a536664525255764f4f764c6c647463315a334d304d756470616a4e52326f74496f704472585748326a3434324b542f514a585456335a2f4a367457574f2f7743784a626f54366f35382b6571726a34316a612f4f437a35624d734b69737253732b5446554a7442737674637232416b7469503547514b587178793533513430656a4c4e5a5441535335667833792b325377616e565a48466d3870672b794166493667436e4f77464e424b644f6675524a6f496e354a5567553659756e68506c71656b665743714c334a6f736d5a39796862432f536c7531654a564f446a30484c4274416a6f7856754f644576324d3470614153594d6c656f2b5661454f656873374f2b316e32474e59315a653677793067464c47416c7643425532364d2b6b664b665a414130737a2b57686f74496f2f64584c5a6271336f2b727a75745a56646e7a6731412f4d52386d544e37676372322f7742572b44362f6f43725838672f6a594c6b79454a6456536a75652f614b5855793370715833356b485a513255654a6c4c73697861342f39505068594a6e4f6f366848495830527a467154764d736e596876596c506b7066645050444456796a3937444855694e4e304e6a4a3265385a6c5377587a4d44685371482b674b61466e645057714f517a5264445177732b794e5950304c4f4944503158396c6d626e38726c4957626b4c75464e3878713475614c716d7a75344b677a6b30484e7a2f774231735775695852564838774646513831794d645270555636376841426e476469656e30365866495579676438565a74533445515246524154376a697a4f7356384e374b4f3674767a2f4147792b5835713169745170542f474f6a4a684a5a4d6157662b32596d797050675061394c4f6a594955637a744256326d774763706a7472304b6d2f595a54625a4b39326b4b593555554f6f6d616b50734851594a595a56714d5a32674c67723571566d4d724e574454716f6e526a753577727232544e537a69375835784d6f433655585a4a553139582f754f6d415575486f43705a6770785a30747370314b31647a704556387258536c4c4f4a4c55625052706e6f49304a336a39784d5a4554616d3163573171546f4a5047704e33394257462f6839657535355a2f6c75752f486d30363748762b474d6d6659565837506a716c7532506a6350593742597a345968513775776b4b31664a3975542b7450656551314c38385038414a4c302f7138753171664a74726638414670417131383155454c44327376783675763841616f5578636a582f41434653626e2f642b576b366171555a7650664b6a6a4a6e55326a5a50643968427066585463386943664f5a3544742b502b515a6f5631637a7a697a457761773558327157472f515a71564375466d78504b55333171364776343568674e4d35554b564d5245546d49774d4f6570666c384f396c352b56713957674a3953757665386e354565656e456f6b385a756834664d6e794a4d6a6b717959784a35534a36796e74365363636452307963596a474d634131317655663173687a2f72552b58447959792b7063372b6638597a34736e4d2b4e6e65315a61376f356d35614f31527554484d35365850444e2b4a342f586a4778637846596e7367627565715072564b724f377a7a366f64536669744f556b6932544b507856564e79345a377461636e646c424838686e71372b6a6139502b366e33546a5a54516c46612f6779442f6848354b4978394b6e41386b725a42727874722f6a664a504839486e38524d78577755442b776f4e6e564f58524f5663334c44636c7363303343596a684d502b6f6d6d376a6a703444647a4a382b79754a7a59563330614374756d2b54464f6e796a4e554a6373346d5a72417552476848742b526a6f79564f796863396561414257615670354854623857664d57586e79654e5a48797a354c59337a6e6e6d4b33744f784e44435a7a5730716258586c50524f6b5a38334e466e2f77424263686734506d4b5a777066326b3537776d4d3169596a726a634a4578386c51635167382f50652f68564d715858564e52796353577469784a503761746f307a436a6f78725755384165716675655a354f7455463355783557674d6a61376158353764757271584b65753334304c30766b5974364f6b4341447271515a5a514d626b7574303571394944366c4e4c4b4a71487877564f646b6651306136714832795a6e6b5155616471343356395336757a4a2f384153325574392f37557469546c6f644f412f6f4b6a39584f5477536273396647646a3679672b5178363879464f6164533030486e4a594e457937666a4b635130564457754f6c66764141466639414d7a766943563039592f7a4a35436d584678304e2f3135616c714a302b676f4535744a4470534a6a48715a766d583855344a6e6e37536e6875624e735a3565674f614f5658785a7a7a5652635a7277744573693678656b3663366732737577553665636c544a64525536614f417849474a394f6c686a515a6634514767334c426661624b4b355735782f786b6451676338763372632f556d5173744b316646314f516d7250542b685a6630446a6d475334784b596c67366d71552f53305573625a7a4a546c6f53654e31614b493152564a4c4858432b646570303132564d6f314f38343336767a42385447384a53744175416b474134614a7774516d67356a56704d69656c7a4c64466f465172393535314c583131437339644a7a6451506672546d7358425a2f675932333238513051796f6e7a45365769646b6c2f774137305068737679597469744255484e71755931504f566451554a706c46482b76707a746f46795361484b6a4179735930365956634f6a524f72465a4e626d63644c713978595a2b36515a6b78777165554c45342f3776345577425357614d6959306a3251544163366d51514b4451304b4b557271564f72755a3772655256576c4c54626c4c53356e444c3678577a39425466654467644e3162666c4432414750566f4a452f4c6d55436a5071597a39716e4646646464664e7974534a30766e4b686a4a4a3131424f7a6f476d6d5a5847742f7741785561776650584f483137496536517066626f6f364f644d3543702b336f6e6f344475614b3250316b765a715468543065482f374a6b32444d42324b534168306a59777a70415a7071753041726a78526264563256565756325675787041457730386e6353523469456543616a4f5659304c722f55344744316a71645745653655635650322b6b70562f7744494f767a72325074716f6e55476c325671364b7579725a7874533530386e4a7a476b5377635a6a624f325a327943333873376d61577078534147665366377146743169684c4b35465644466f7a3953745a666155766c51384c324d734c324a4a783054384671327933674d4c5162645a44747a354764544e2b38367335615534347a6248386b796e7136354370735577645a555a616a61424277634d774e4e54666a5838763956474b382b7652446253777249714c31744635466f3048774d3458533058745a584b34534b34574f583261635448767331514d6c386d5932594143726c6c696951563749387947725051565344716e6c616e374877327271716939346956585751316437523153546e6f76417763435a566455423647474c325a6e6672746175615876774d3456636c2f384a75374474464b4c5434504248506e6e6e75496a2f624a757a754553544c59536a4942655a6a774244505459694a3265434a6d4e53705157655161664a43713048374c4535734c44366d6c4c534e6b374a5531483748635678414f373737623765496353386a6768556c534d2b6a4b6c6d7135336b4d683746564d73584e425a304d3044754e755051744c4f554c4d6d684f50316a466470475a68313866312f5550534b756b4a657369664e2f457a634739777831586c7a39506c566b353268335046466163746a493648505958793070463361474b454f326437554d70306130745531514541383863706a4c4a32472f4d466d5a6d79564a6f504c6c696a2b7932663757573750354d76396647506673434a4166584b2f71334a352f59626d656c3372444c354c622f345635447039507a624c514a72726b6d4b6e704c6b54554b686d6e374c37663544336143772b7774784a633578664477525748367a7657596a4d634b435861384d6f4570485273365a75476568584b35315174736b644b78366b2f4f786279752f334d4a49456666662f414d742b45302b785a743966454f7333314f38745a7a6d4776354531687046464270307941636c305a5472496c394c345a786d7151545745736d73417742417149334e4d703273384d5232626644363966514f6462613958614767456b6e49676d6f6c6b506e313164705a4b7542706a667a7338426e315a46393332547234706a6976587775544e4434335246615430346941365731362f7872347a2b4b4266794b69684d697a446c782f73446c6c396d712f6a4e5a726b6b67695735544f537236376e73357852306453595479655832466537486c66726f4b442f4148346d716c717265315778614f66325a6a67625379734d2b56776b736e5542376b7a3973555851457165736443626d704d70697450702f4d563352752b766b626c667678534f673671312f4359354d72557a72716b5a4f4651387a444835696c6971756f496a6953422f7876776b4c486b44357259302f4366734b7232664a66794b4666636966784e7074374e58507a6b486a62767067546336356b757759645739785370304a62436d594c5567706c6b663154704975706e7479654f5251486e32462b52586d7571666a6e6b506948582b4d2b39475a71585165485076425364437234632f4f664853794e533139737a334e713746477030524766652b2f345666314e5a7048474a7a6b617565585a76715a344245574b506a6577464662425a316b2b4a7076767647626d5056676162714d4e6e47725a7a50334e4279354a6c726d2b796679465162576d356573625a367a774773336d736635432b5678426d6f4e712b716665513330654b2b79676e5a56665a7449336156646a5579375650455a37516b585438497454557537717a7979595634325235694637506a7635484a72317068386e62796e4c5165585657486a75566d364e666a33636f585242524c4e704a5a4c5a79666a7252706f554f67464a696d6346456d6d76746f6e54372b6e792f34466436486a50354b645a625a42763475536c3739445770625436665a726270313173453670315257705131646e426833712b53303065306c703635716262317a4b2f71633038663841634938506848354e647875614c764a354a6e5a5447426d314a795751743546426e554a597169504d6e366f5a787737553050516738354c6c327a544d69714d562f464f644c4f66376576754b396634352b55384c44597a6538524c6b7438645768545a3664654b307a35736e6b6469396c4d39343353734b71494b6f526c4f635069497250394d546b774b372f544f6e34663770454f767a2f77416e695639316c32586b534b355966494e4c78664670496856542b35395a456163556f6f584b584c6e386e706e453958374c755352527a705631683666732f57512b325047667976722f414a7532445a542b78656a5067673734546d31734a47334a5a6c546f795a4a5061395a46706167784e37553054486f46533261784e4a6b757537546a6241414f7a767a43734c6b50556549466d594d4c2b61654d506a67573033356a2f4a644b4c42527850474e697a35787a5a526170584b4663354e4263667437536d6c67572f5a2b736875324838754c466244446c777a6a666f37447034752b6e356a3843504858654b693272446b5336587674485871737372706c564f712f36594d5839615a7955672f5a31363866722f65516d4f7a2b5833386c54483362374a484a3351786275332b412b4d4b3149785171725544565a6f6173776459797969785a6f756e7364494d7a703271644e47763559333750316b4d4f6250356375312b76566f654d68336346797333535a36596f7a504749344d30732f6b30387a50486e4c64705438536b536b716a6638564b374a6150724748744e4d376450475031396631415362796638414e44544f574b50516c646248756744345a66432f4734525273765a50566c615656444b6f766d6a7530452b51572f4f6f76596456684a4d78656d6370342f5a2b736865452f7741756f4b54316c75305a4254504b6a4a686e384d6a3073584b4b2f5a3175546c67787655757176516676537a543370495733636f307659316868384533583750316b504e37552f4e757575797562616e524e6b53797a7a6a4a34463477784d59654f3854486f555a7461395a314f485a796f7648375059736c674c50747a764e2f5263733052705233592f6d49685a712f6c735062626458536d6d597a467a765a70345870566933555a766b7238744b68706f544a5a50486c6f715335307a704f66396e51346a3658514e4d36596636746a533850754a4a736557666c72673837395863727758717837305a6b316e7036554434593036396b38365668586936664d745930446f3530746155474a6e5a4e4e6e48786a42705a474e4b662f414f4952585644387663356f6173666d326a525a44426d6373616a7745344b7544564f54706f4e754e2b67704e32586e543473736c6679553658466853546b75625041774a6f354a6b66624c667936384f56706e5a354b712f62306378556145727a77356d31553348725772676f304c61426252785777546d64474b6f592f3338626936662b6c43334a4d6a377178666b70723238667936793547544c2f48724f382b317934533839734c49725a36427747537872374c72576436313332552f35675942316e7342544e49417067666c644e457172346a714871352b305a302f68642b6e4e736147354b6d55594a346f68554b2f6e754c51567873372f7075504b7a766d44356e7a326b2f5a2b736a3664503553487737493948646b50476c62467a5837345a6c78553068333730564f6b3353424b6d616c43493135637276386d6644314e587a66556b47595a333750316b5357476638414a6944594b724f704371545a566c5453386669755a53656c3853665a6a2f5837343332334f38714369656778554e6b31644c6b675269326a39712f702b7a395a41326c50356638416b4b6363447a39436d4436365464796e7872496f576d42536269686d6e592b797a35694459304a35416e366c31446273785037436b43486e484a4567375467666c316f52636b305a63746b5554484d32755553654d767664556e6e38336d5a476f6d2f464537744b3353316b63664d2f714f4f35354a374779665864534d7a396e36795078356e355472326566485745766b79426f59706d5a344a4c725a75644f44563574726c61656467743475356457586b6b493857546b7464396f37353533433972396e3679443847562b56563246354b3867585176463666636534764863324c4f67546e36726d51735244674f4d45727273792f46324c6e41586d722b5359414a765453365a44396e3679476b755038416c736149596476667858637965795333452f4c7956353145574c48564a70556d4373314e46574f374e6f7a766d6138544936556e536b4a70523551624f6e316a694a546e542f6c6f716a4d674457647177595a564e6967792f454d6b6f496364325678334d5038416a4e7966724e4c572b482b556d50746c50364139373662445439517a512f5a2b73683534336d2f6c7858354165536f3943617674676f784e7a4f39504d5a476d69766f364556755a6c57397a614a3538385074422f4a3955774b4a412b756c774759546e79732b376d735738664d4874506e354e5a507a537761336b6476776d786e63714c78624d4a7a67666a44566e4d746c304e5369526d6b2f4e7163786c355059345a4d647157382b6b302b3966733752362f7743513644502f41436376754e4d476c354b43726336797178586b7667333172683341736a48513875784b763535796649474f3868595846756e545371626e79544f54796e2f61626b694d7a6b4e37707679394361376c3932334e4a4a642f45596565486964632f6264374868305049475a65636c33485334656c514c68375539553730552f773564572b5361704c457632506b42376b2f6b716e527a7a71655364736a3173597673594f5a746355655a4476446672794f37637a2b537137716177305050717659644b626f61534871364b5a3766732f5751515966354e7a547a5a307961382f446d677a4d396f48342f52445a6a4a7133437253756e432b462f574d34793567554d66376c42586a7a4f594b4d7164715466732f57514a5848362f515531596d727365517a686e364774644135486a566465626d563563473879477636756637666b5456665939485134386c69656b313341595a326536764a3134673758712f6c4f37564a61582b545a31696c312b4e3643592f48494c4e4d644358715152493565745256794b566d65364e4c61596d6948334741413038526f4e4a4c476e574179737966794c72734b382b327478455a6d705a6e6450774f63664c4150384138686c6e757171737338667252644b4f68727a324f2b5833543643622f6565664d66384170426d6d4f2f3139684a5049432f4a36426c434c7136705048366447547358572b4c346c7a6e61566c655049564f50784747674b43616e532f566b737a5a6d424d6b476d384747564952487537656f444a2b62362f6f7a4e625769753359374d6a4c76517a656a6a4a4f697871577279696a6d30365a65387935537545626b6357634a3074436a72574169712f4f55354d3866702b76714249536a2f41434a7070565051792f5032514b334170306448467a59464f64343535426e75366e44726f304f55354f53476154714a6c484542324c5330324430774d467a79656632416858695835474f6f505048796a597338556c6d39754a666444305a4e4e563146473032437a4a7876696169712f58546f4430695566774c2b4a4e49534e4b464c497a702f3933366776343734642b526f775a32573677487572314a746757796550624231383866304f5378344e4f62624a347632595a5a556b56436131514253515741774a6f45326665424d30786e69416f5a3372726b6935766c65716a73624e445045636b764255625946453637596d72786770316375507553495646505638535a33756448597a3271706f7a52662f546b7879352b774b3632582b514f5a6c78713863337062507633554a746f5269357033335258577957527967666b3073354d6f4863485364562b6c714d6a6730672f366958664331696b7a7836423237787a38704d46474e6f57366d3550567032563475626c552b4d53357a6138787751396772304e4e5357647a5a65367033646d6f4f4f6c4d5768742f4b756345664649455a3072634f4d69544f38632f4a2f68756e7a6e626b32646f366464576c4c663437346f71444854594b395637314e6771436a74305638655a7872506b3758414956555639754b5037734535302f47667349503558346c3636647a466c342f567253492f6b3833436c693734726c4a58557065646c794c737974755778364e425a454e51734f74446e544f7642335a506c4f64616b54534f313143367647507963583735582b546256552f6b56673176706c7a5a557a376a4b4b5a6475614a464b466b65596d517443566935695341653239764a6669447461616d644c2f534454394c38686246477a4c3176755364513055636778363877717931737234382b7558527a6d54556147487a3435594864363337356e53436a37376c4a6e4765547a2b776a586b6d642b5130434e566c706551706844566f44374d2b4a68777a357974506373317172554e567549455a5a56725779663669465272434e2f7767703268326d5349325433794858542f4a586b6b444e6c566642774d354a3563396670356753306b37362b5858446f32564e386f3758567064616c626c2b347a6b4b774b456b35363661633573544f6e33662b582f734151712f494c4430414d58545048547a30463854426967566d33422f4835464d7131614f6f56573878302f3841446e2b766e544d36354d3864447673442f68626b6e786950587a44594a2f573665476c49356d67666a615a76354646552f6733622f74736d694c51656c62387769577677582b4e624b373454754d38784c76723067634a4f5a4f3550503742714e6e35503051352b314875614d5766526e3669734447484230575a365a624f5a2f447a70373275705a5157663169482f41416362504938347879484f56656c4e4839542b7a374d2b7658794746492f6b552b314938677a545a484a444a4c644c3449644257703055334d374c4c4c732f7165786678305130754d35314b73375955446c5054416f536a6b382f734445666c6e354458346f30542b4e33637862706f71397063766864495a31476769665968624c534d6d66317565397759365a5136517a7154796b696e6f644647576145597075387645594835392b52304c79727552544e7271463454525365497761522f7741574d32506e434d4e4478617655795737474b49642b3662574a594649562f4576504a6c4d37644c31482f415658356c2b55534d6d72413569356a4a412b31342b36726e674b72745a566e6b47422b354d746f364e514e7a38736d554c375358655638707456574271354d4a6e4e474e504766374439423558362b334d5137426b4e4f645a5174646b63586a30307531716c54636e574b6c454b7147446463663841475a4e7a6e753737366a6330314d3069454a763652464a375161302b522f6b326e546c4a3369474e324137446b706e5048596c7539526a5144354547647659566b61496d51717a61495664684d33444f324e7832446334355466624650476658304258766d76354574326e5a2b5a6e525461585a4737484252346467484e5158792f4774315767577070634757765154704a342f343053777a7870547068384559794458464d6275384255622f72696a2b56525a34314258425a42517439382f69766239575632634767336d6e6547436d51395078463749385837774647614b544246442f774468696b30327854786e3139415a53723135326165397a736b7067795a6b3746772b4c354a715137567961467a3632494d6b477572355a39543771625337453946443335744a7a7a393731733661784e5937514d72642b5474373671707378566857366e6a4e7456534d374a3868757479305a6963322f4e4159716d45386f683173325a6d59534f4c4161657a4b5a536d75524b592f5a6573434d542b522b713254463551624d626946342b6775324463626b5431427a5a386776592b57624f69304579585a7370365632656647636f742b496e4f416e665a6d48394d52505546332b5665756d656953544b384e31594b367649376e5a66615048512b5a55736d634d454e386b6a4934427147644f486b38586e426563335354326b6b75643952714c636b6462676f723155396363625167707a2f475a4a7177646b6433456232496a4d6c744b32586235465650564a5566754a75704c636b45546e53454355685767577a6b36506a46667866594e76384135797679423471745532584e583176784f7a2b6e347856524a713161504d6d6a56584c7a56386651767939634f4b4d4c62462b3732307a4f2b5a6a46632b355978743076556638414165302b6f6e7255684364334d7850486535383958593566484e5050325549755a70593864386d327661736f5035504a473257473941524935396831494b366c4a574e6d4b75796e5439502b63677656366e65747a54725264343969616a3870763862567063786238376b713075532b3265354a513066796d4c4e6a6130644a4f4346313256576c69516367412b795462543145663345797976502f4146527144457568384c784c485439314b346a643462714e52484f4b703971456147336144485a2b7433362b6251386165703473444f67437058304c777a32302f4639344536385a3873395a6c75513272785768436351702b37466c506a564d616d69452b705479357937456b65686f484f796651635063744d784a6d684c3275436854707074465a6e6a627035697950477250554478324c5030662f46395270315237383671334d73664a79727346436a416e535478396e647a576c69364c462f44387932567343767463776a2f55576d74752f456962772b5a656633494b71723034696d4b43362f78372b4868794c6466782f6b304251786142716b7976303733446d7562385342642b70486657656d68503254482b7134722b4c3743783833314a39534d396d626f6a36625a484f6f7a454e6a747a2f48746e554371616a4f31675155704a714d5a63587166627871315766396e376b334878484e32617862466678665953484e3838386c677a6c315a2b5267785473317236766b736a33535445637336543975676d5439434c4573474e747249714654453243756352366c4b6a35535969654569647a6570666b30316d656b7654337836566e656f6a5132584d324d392b6d7a52584c6c4f4a563065493933756e542f734a56526735717a47517076663231344e6b666a6e372f77426863792f5663455642566e34766a5544536f736c7754524d64444a544f71686653444d646a396f475a744e437770372f6b536c704e584b48422b753356325234794a35342f3673354c6e576165333663354758595457716372694378786f54464d7653557a367452523853706362316c7a674b2f796f50684f2b495a2f7452784665735266312f4d543248314677583361564e48706c3439564e4a5a62494c417a7276765a50656f2f6a5a4c4c46725348334572586c70667054733673353032702f7743574b4d506d62622f692b386979664876566a7856396f595466532b52326e4f5036474f61537a354c35552f362b58555161452f38416b536e4b527746566b3173342b397446424a463168556d73347a7539667946366546655434766e6c4b386c76707973716f75525253664d676a664f6e6f4a5863704a706c4176616f58755a515a6a785342637853364239773048535978486178383844635a47584469796c4e6e776f544b453661474168527159624a316a3743633569666d663079577a76544e6e2b516439762f414c752f38317477746a72302f774448383377323362767a634c6266417033316539546337303438645a37365135354c756f314a636f614649343862684476654f46614b43464d4b6146704e2f524551482f3759594f614853696c6433484935307833366d674c4b7a4c56304e4857307062663556765736512f426f6f6a71766b3679657775365651314573616665312f7742647a6b2b77306f61524f31425451386954336964444d4e765557775553747334746c587a3157395448397254657a51396a6e645a47564a4936504b306a504d787267583730324d5448574d4449344879754f7856747a3354536735484d78694a3171746b7a6d547479484b68583858434355636e33304c4e446a6148512b4f635353446742742b354937517254564c71303976666e555a4631523043794a442f6c584d6a52586e7046644859376e4431505461305a6763784851506a514d4831394459632b756a52614c2b35734341475a3876366d6f66444576343161664952346d656f566b6a706967796350615455667456384b61675865362b326e4d713042746d6b707037657334324d76597a734f5550416156565973585a4b36675a4847624a35656e5047524e2b6e47623069444f6d722f414d657431706f3449437079726b4b75303154686e496231387a715366782b666b39464c6b54455642754a3376732f54553853564a4245447235684c583933313663364a4b556c787062457379612b327953396d2b724b335448536374394766512b6933554b6366622b7044644d664931456d6e76395770326f435751556b796f695a54794b764c716663797964596678542b78544378495a745473376e4a5a795a6d6a32626e573058476c7a7539556b7737385651746a3551386e57524f67724f6d69486446722b3952546f736b5a5575565a79663841564763666d695970707135372f6c416753747a6d664b3043434a4778396e52504e6937436b4f634f556772547a61705653546a444452585456376b6a2b6d5a54497a4c6a4143583666514d47424a494a676d7a69574a7a45732b2f4378614f6458447a55694247675539306259415156516b487a455570547159505570392f42474e776a536b6b682b6c3057705769525759776e5439714f656a56306e5a316b75657879644c547367764566332b754f6c6e35796954696e557a4a6d57514a7443766f4268584a72644b6c534a79355846526871315937354554352b6a5869784657362b65634b6a6e46495a756b56794774495755426c63364843396e2b774353464547667a4d546f6850484a6e4e38617862686b544a4255795a453448304e49316c7869323658744f663475636d4d5845445866457639434358742b79784e43547a57355568614c6a6b70586d3671376453694e64584c4849736f36634d2f644c575a7a7657304134367669344e4c515849546744707473437151365a617443326345496b52645a62552f467a73756e5175566f6369566f6371534c70632b4136532f644273414b497a755353584a6d4176446f64666c684f766a6673706e3770514f366c434747715347694f356c456b4c466a6c7370714c555830444e5371576d7962334f50396b344d33506f67356261326373344e32524734327a6857365530386e6a3879666f5444583130786244435a555970396b6a306d6267414f6d58785167447676473530334a4b6b5656545a36714a6f707555462f4a39684561496336744a627269575537724a6b2b78337a4561365437483858584f6e4f594237366f6b7a61784d30717165707346425263377a694a493832746462367930514544477a37475864306c6831695646667964664b5454316a6756304b354a5753584b374c75327a5742555671702b3131553271546b364e7a2b766f576e74544f70526c304b6d39764f2f396b69346d696b4a2b7642327470636c74363177325330595573716564706c67637a2b513274445a76706f2b2f5a3336756c313148756d5772682f447a346964396f477039345a73754a4c4f484d533944537a374c70726f464756644a70774d314e75584463706b4b446f482b656e4a36334f2f564a464e384b577470486a6a41626b4a3061363771436168665861484d3973625a5a6f7166715a79737236794857317a39665a544c5238505867746a5145356c6d584b667171426f4a65526232626953306433372b4f6f65704858365a5173426c745a335742796f6a4e48306b754632666e767049484c50736c4955636d4d52424a54455450515662752b7265643435507062506b4a3979764576704a39724c62636f4e61316a4b4b74443772366a792b69476b364d744b6f6f35654e4855722b314e4f70626f4463362b794a35593755434b7a666c4c364e337272716f3869304b7857375872306e767862304f7678364b73316c707670646c6a4e474e4e547858527879346a5561566f2f376e735832694e6b2b4d43546133354e6569325858453754315030335a324b705a35724857534b37664d3737444c3659344767305a7762764d614c5a6b65396e386b75772b383935392f70476e6165344a6f2f4a54306954504a796a7969475848722b57523364436f4b6576696f5452725472686f704c334d6f576d545165784b2b674579616673754b66384166754e736e7867474a667964394961556d575a35786d6a676f737a36396a5968586f6c4e7739616863396230736b326b69796349544a4448724b726c5077334e414b5358384b4875372f686b6656666d64364b626533426a796558537664745474304d364c4d5a513444783872543246306f756341725871665a32493676676c4e7746396d7866782f4d77675651393161497a74774c59563531416b46486768526f4974476836443579564657657179787a6557544c4e6652544c383375577a6a75746166317042735750424d70364133537477316656666a32507a463273434f4230626a6343356d72356e6e4e57335571645a373642733654445763786e4e4749436e6a6c4a6f4261586c4e464c6c534e6f61316a35676f6e52707855746e3033576b46507963714759464575476557726933437a323055745638746e572f49594e307a503841677336335156464666304f35614f5567756a52676d626f4e50704e6e2b5972716247464b7a37487a5571425650796c78792f717461444a4a4f344335345831724771656d57657878417250707a536c63396a714471594c5959306b6e55366b446d41445a69542f656a6d536e7069475538785a796161736e58476c425156456b364a70536b433968746e6e347772614671537a69302f76707436514e446e506c625a42514972444d7157757a6848502b784670587a6e774759344d626b767a32636e4263654b35437857366a343231476d6a3466724d346b3130664b72396c49444a46674775572f6b552f616f4d35354e52326c79465532304a4343494c37686c367577575756664773304d506b35325464372f414e677541344454366c6b456c4461655a4b506b3750384157646f793764456b6c564b344c39596148526e586463525a4d714263587664386d7232512f7744345143414e32534a454e686b324c516c5a7a7278334670396b6e5748595976746f58314b4d6f4a797a2b77667948746c4471584e4436306a55526951447741396d4b2f33577370736c4369784e38307a474e6f4c6259726b76324e436f364f7375617a574f6966593551496f73496b522b37394f2b554f6d424453366375664a7346576571437158564931346759382b5956396359784a366871324f7832477369373171785930525766477a484f34786d444c6a754e5375704e687535505253353966774e4d4b495a70687a4935646c4646494e493739434e676451755536794c48347461506c4876327742635859755637654b427a4a7238767374674b7a7a746a7a5a595353766a6374496b323748345443486f4a4d41623736462b394d6976655166585632365a6d6161594e655a4e4e4a4d346d52664c346c564b6e36355657664a52314e47576c3036546d57594b6f483477347a356b6d6132544d596e486744584a484f61485251714743464f7270706e56784953646b313354304b596a4f51386d4c4a6c6d526f474a6447706f5548376c4a48394b4c2b6f4448367276716e647a5862466a4e37387651436f736c793275626a693138616f7168614e6e647067392b526c764a666d5437585546503830376779355373724e4b68697372373736744a3473434b69624f5536666b376e5a2f65644a6248564c736e46686b51477967666b424b35564b4759515a5553394d3764474e437079303566326d75673837736c43324e5459383278784c343269686c6f3745365547783776314e30456c795a314d78686a653562726c75695336447651485358646a307a6344577a4e4e4b54456634322b69706c524d7a5a793656532b48453570673448414b79502b67486335622f4a387a6956544261464e4d387935536b7a37534e4c6d474b4b58426c746f354f4833486446716e326c4f74332f414d5868657a33546a686b50744233636f552f4653414447716b6c6c4f38325a314447762b35444d6f4b476a4a4c632b795263782f7743414752526d6b356e386250306f362b5948395a4e314e7a5a4a5369377969583473524d4b42486c4d622f743866466d3530663270597a525135616c71492f7548423067426e2f575730474643555a2b695263516c4363766c5a4f3551636c69554a41353168464a3144494f5766476d7168704957307a39307932696b506d647777654c616f34365563744e4e32597347715555716d6c77366176686d6459386f584e2b69416b3243635a67392f796839576c775339573267424b326a6e36474c6f364b61766f3074614d495a2f637179657273314447523264426d61704b7942655852782f4830412f33787a4b2b4f73692b7555392f4c6b4e37742f616c78567a346c663872576c38756a4f39386e4c632b5263352f577a537453667353356e4c70617555454b47316735305165324f677a393878455262467036414e5835684e545a514e78726c6b7a6f64537137353857694a556d5530364e5073726d4f792b445649412b33715173584f36747271476c37412b4550367437767a465961647537722b33626872526a65507a4f58453354727442746659546855682b58445a724c5a4f744d325777656a5252475356643865534c6d4648592f774472514e5a7645644371642b6452434f304b627635334d37595663374b324b6c6f554e475846646d6c4e71527a4d716f56444f4e6330796a4d31302b7751655931746262383545375369786b2f624c655a56664455564c6d416445306a4d7a4d2b2f2f43646a6173766e6e555a4655316e576975564c55676e6a5264502f4149562f5a2b73676833435a383332593238647851726c6e3671504e334a75342b5a59764f75684b57355a722b4e316b65686257633466494451354d30374b65556a4f39353541782f474d624f5767753368392f54633445762b2f464835465a33546c556d334e43613951357451786a6c386e643170753973594a2f626c2f433775596c36737842716f7a46354536583545785439717a755876734163756b59765a7746564c554b2f68476f685338412b55302b3667594857685367427271526c716d7a526837495a7176365659796d784e332f41463839464e552b3941537a6a73456931564678494c6a492f7366747a66384136734846317033624331686c2f774166645a50796171733132322f5642566c457953346d4853523266592f39422b5a516453615457344a752f44517a6e39426c4b464a367436372b5179537667636b497971714c516641315378302f6f4762454d4b64382f774255446533706d587874544d45314c794177656d6865694e63316b386a6954616e7637513666526e79344d70796d446c4c6a7a2f67354d7a70664d4b3556652f6764766d2b776b32416c4a6735316d7a6f7368536e73756c585061646d6e4b7858386f456761507a51736353584f576f732f69633961562f497862675335616e4a4e4c682b55472b717a466d557a505139793264746f674c556e766a71746e37714c48556e304e444d38657136544a61436e7a7a643775683733556d34542f774161656d4432444d544251345246326f2b757a5176527749713644716e58575645415a6e32737471616b726f304e616e3347594f36394a744a4a543961316f59366d534f566d4a624f684c5a69376c6957584b6865666e355176357054565a2f646b6d664c7352682f4944397a712b415861594163665a6d734d5854457a4e6f6d65755135644b2f4c69567a517a69572b55474d4f42557a4762426a5a5852505a3046364a6342692f686c57774b464e4836646871563056714e636778786d664f526b6a5051434a7271514a724d6c79704a4b4c4b6b502b53584e6d4a75625652334d54314e695855555745537861416730416f4946754c324a44494a716447524f68317a6134336f35706d2b77777869705254585a774f72305454306170574e5735777436596645594a64556f6547307744466c7446344b75706f423264453074666e53346831566b76443149657a72627350744a326c4d6d6966686d7472754f4833382f62613769543044586670306f6b302f744a30775533767a7234683146565561732b57382b6a7945704a715033644b776d4e4f5662564b442f414f67487664502f4145436661783551754261383575645931636c4d687a4c346461494736694931726a5659356c514f6f4850555375664363684a3731417170654371516449524e38485a4963376f78616d6a78624948315531335a2f52526f4a3472723561756a476b7250716d6d546c4147632f77416a70724b413759326346654375693276506e536c674c535557616f667351653650547a38744530337a374e4866734d574b6441694a62474544336643587552306b474179574730716f446d6c714e4e437466695863737356524936754f696a3548657978444a30725935596d6b2f6153776378482b6444516d41444f7256484f77426461765169746e324f3038436c2f5753717478364a355554356c7a45416f6d57565a4b6e714e6e736564684d5a3843474f2b4d42347270616d784d6247386632593433386e65517269672f6a69736766507177554341777347476a346d683844526776372b365148393050444f722f414b6e617376506d346e52526d39354c3062325a4d376b6d50786d6836704c7331587a436b7449795974514a555a6d706c494d645237414561774e49314a6270452b577a327a764f6c7447703856447a737469355a624b496f2b413535434e69336d487662594a70705531787341446e687671704a365a354f686a51746a675a6f526247787a57706a6a6d7875505646557a516f6f736137764935537446692b4d66376e70464c666d4d556d77354a6d4e3835786d59464d2b712f354f6165677a4f386335704a667058315a37565a65567a4f52514e4c47575a6b556961744633556e72532b522b3776484d554d79577a454268535874486c716163526966486950324c36712b5935756879764b31795a795a667855574253727543576d764f75474f50354a3579734b68732f77426368372f7a4d3663442f77433748596c692b725569497a6e6f48386671623536495530503361754a626a64676f6e6370564f6d4f6a436d4f4c7437574b79375844485537506d55485464556c77704d48457069714442696e6a507236423174656f39324c5131547274445058334e6d625756616b6c322f37504878675865646a424645713941703030396e4d5847344544385370676c6f64574b3775475251313977614a7370486671716c48544e4b4a2b575368646e30504852316f632b36394b526176546f32474c5478737a714e42667768534d6b6a615751556268764f2f6d724c6f5a32685a47444678565a7a4c71305947757765374752687a2f41485a5379382b59324f6575676c3269736d69662f6a6132386d396e6271715162572f64305736664b62344b6259644732545537552f4f66464465316c3034592f4d39454a74633670647866584a4b6b30417961674b465469426949514861736473746f3735447856744355614f6a63424346646557636b713438617669644d586e70526a516d5668646c624e536f6b6d327963435830414375504a6448516d67765335326258613339736c7a337966786e496162493673774c6d56386a43536646747330426d2b516c423879744a6748395a524f34774534673074747558625a675565386b327a766e5a724d44617a63794669394455486b322f514462452f614c50557371766d545264655146546371795a53516b55636938326d68394f742f456f68584870537079304c55625638374361543132736e765a7058633174535556736432497a444b59464477516b2f68413262616f6b364f68445970476634695844524f57666e74444b2f6a4a4b676d653957784769626359566d78734b52536a6f4a37626c462f7742354a766f65754a78306e76487a754a6774336f64394f66704248346f614e4c6776784e426a594b5935536868796c77352b476a375878646a793238363372685442536a67754f5474674c6b4f797131764c39584d782f4736375675525731714c61663541774f6e427179613966543163367170737567493254796f46356e4d6c7a57664d6e76616a5a53794a6d4934794c58794f5a7670394b3254777869397a4f555038414853434f6b3374656c53375a75436956597132484d2b516448536f37386c4c782f536b7a722b5a514b6d50695969656f443362686f314f3563307a4d4b5756386b5448787033443179373230724b45726c68304a432b383635634b3648706e65527376513433303578714d476547515038633866637877626568577173556e486e44417a58726752786c5253396b6c5a6e356c69474a68466c6d77686933444f4c53784a7a47534d49447146504868346977657a7558546d736368734a6244706c623876667158414b7647787958477555714c6c4f712f362f77416165756f644f78794d31724a515350416e43524b4d76492f6a72732f3662587877333553356d79313950376c656e56622f414f7070314d383744566e37456b726d50633367466f38625976384154506a36537559636254356a4b62517932743653732b496f2f4764586e4738793463334b726f324d71725063574e65427a765643746d686336443638727142486d616d6b416b6834756b3978692b657157424e53636e51316143726f6e524e61374f73303545467a6c756e39384f374c5351332b5971662f414d74506a43393374454f72574c4444504351725952416247364646536b7079394a6d7639377032392f3754737858626b54392b5a33374c50636150397071644d41652f3244584f374f334c6a6277794a4f474669724731307250676f6b6a6b714a69303539464f496c466f7a4f7272795948536c334e54526c75344648464f2b6430663246454a3865307137376549777a714c6c5a6a324f7643436573796a47687a644a31376275366d67754a7a2b4177416a684c504779633146787a714f6750762b34394c652f77424c397151797a4258796a4c5357336d6c49564e72744e663841475a484555783255616957514b6934736d546c505655767074363937546f2f36356e2f71354e505542382b6d4362507973557368674655315855706b6b6d6b63493048347675316452576338706b585a3562702f6757593075556d634a6b7436626b68703857373466554174506d36392f77413050434b614f6b5659396a55516c644c50525537616f7063654a5a592f336b554b353071426e76354b7a7947644b66596d5250527a456f7a526c7957675530704363314d6e6379766135497545753858526f5a4531307463714257313250562b7856306b69313033764a763252655841647463317931546f5579656c5778557961344f776768455654724f5277784c746a4c365a6679454d63794a6b4f616c5a3651742f2b4f4d6e3167486339773153517776626f53555955513079716b747167304b326935656677545837714966613670387448615767705355752f782b5258424541546765694231373754573964475555316a2f69436f3839464e6b71744354527935535954435a3861554332567a53544734412b54346e6648626b382f7348733379314e624e3354466e2b673535335031704143684d2f4f61415070754b61714e784d737159747956392b454a722f77426672534e4b2f6a71436352747a4a5a70744456306c314c6f686e6b645a3956357467505161594c6d616b532b3462432b576777736e4e516a387676634650657555454c43707134486c327148505a486b64646e6d77737a527348496e696a704475795349366857346f61506e36646b78684b7431417446774f463141424c3643746b50526670324e793564485131497579616c566a584e6e6f6f534657477361474f4745796a5a38644c5242726d365832757156395535443072793533634d686e5571316164574d45544a547153776131564e62667477457245745a4e447361314f62434d30396a33755a6439357931645633684d73542b306966384157676b73755a5a693059682f5051634563377061394f45485175673635656257746d6a7a564a764b733369644376384153434361735568505052554b662f6f35397679774a744d547a7837516c664f382f77434e5071756b7a3563647377756c666c587771514a6b55314e3073626c4f4179644f79414a6d756d3658784a7a44587a65476f73796250432b506d5839354f6c6c3049354e487135767361704b6d6656524775724c334f335a65737052427a5537323433644f6161675a342b3270326f4771476165574e6133616d7a6c3943677a473644513574364f66446f33372b675646484b54386b453855714c70334f463765306b6f334b536f6b762f54486241336c736a796759376c47517a71573653593838704c41717a4b4f334e6c6b344f666f754b65484c3739785537522b614d6d7a67756676785271572b59506d4369695a63526453556a3563384b3355525653755474746c306e525972737651723239567a696535503241577234566643386d4f5959787136734c76786b37503263616e74644c724c4830744f5a593562653235746a4e546b3274564e4e4f4c4a334239783150566970344531426f4150726359446339547542535a576847755765484c64542f48756f44524b32445267486f34664a5739627a4e7a6172553746684a684a6e4157594b5a516c59646e5034715235586c6e38732f59612f38416e38737346624e31326e7035636d6650546c795163575a58364531506b6e7671305a6b712b424f686d397a3075754a5343704132336d357333317843565773634f486750793251592b6d6c764c4d6d6e54723772546d2f52706a4633577034334d7538672b4e47613269713677616f345641743442313272396e343267624f746b57474779386669374845424e6f7a3543324a33567832714e4c4e616a4f4c547a6662704c6c73755741314e544d6a6e57556e544b325839696170335a2b3738773063624531613637374e68373556394e54443030346744523869634a5447716858376e495654445148765a5146436c6243336e7a6972443665673167395943546862314f68424d72506f745654484e414e4a457664554d6e557a57565948334b5333436d336b75762b4d706c453663364b776f53796b674f496e4d52506949744b6e794f6e66753036416d586e3551746b776b6f6d646a357452786e567361754e3372694247674d746d667266452f3431386c4378314e644a67536c736b547a787946686d70566e63724d4c783750377851555354325971737251374c4c4d62594b32506f5453476d7a534e73695538636d6c5066384174702b78796d734e694b5a4f57537a7958505a4732556743567931784a6f5466647a553639454d7467786644562f4b525473373836654534504576646c4a6c6f574e4851707631646459334c306c65515654314d72314d36666d4e6a7a462f46514a314e6c64474f61753430747a6d454a576144513431592f7057775a4865716d61466c4d526a45593644572f546b74316d634f514a7448505050784c4e4858345656374e704b6533424b6c306b387665305378314f6e556b3068784f716879616156477634426f6b54484d693571334a4e52374575706e2f586b36486a314e4c4f646a6a32796e447944427a6a514864444652646b3564487361735a706155307043376b786e5449462f646e667a366551726b6338756a6e6f32306171314256354b31766443696d564666506c66796c4846724c51612f684e70354d6c77305a314265347177727a5379627443304e4735776138365275385743476c6d70702f77416a4f732f4a6d4873793574745356586536506579335a33566e2b7549397272487a2f436f4b51734c7833744c5673424f636a4c585450566b5a7357626d4a6c2f336d4d756f712f5458625a4a2f494c75646e6b66556b42324f6f6a4276654637356c54684b7442507738582b696335755a71382b7a646e7a756942643775447a476868484253722b593032616d6c6f66447976333652447045626d7a55756d5651443463487832716161716e7835485849726154353332634d715a385579667435376f78756c6d736c47556d4c56386831726d6e53445769526e53553163322f443977697a337469303441484f686f6b342b3953707376325a7853565064782f50494f4d6331746c464b7879532b4d4b596674456c564645346b342f3547776b4d395541647368386730353255394731306238326c6a6f687a386d347552304f783736467954733543355a536a4c336f30707663464268574d6c6e395a2f77414831395344736b32623130584e76515a58724e6172726b6c616a52347450752f6d5a6f4d6171653451634e4d4c5073706168375443705076593053446f4f667766583149655364397453715a6c61614c4f4e37705a68614f31634f56376f45516c544a32716d7969664a712b722f467a67354b686374316c6b707a7772644d4363784d4c63512b34796e7361367579615a376e5131327a44712f566f2f39637a4f612f7874636636374f546e7539356b3333755a37314f3936667467336541324e32546979614b4d747057326137716b73366d696468536d4838657565366b2f6a73715778383876484964535468375974502f4c754177634634666333683570524d446c4f505a5233707a3934486a34352b726d7950393861755432554f646f4a64382f7555353044422f52704a68716e6a32664d506b4c7474342b5a5534557a31635a50566930395651626f4974644d6c394b4e76582b566c5773697a365238357971634642423750696451507772675965332f4148477875616e6d314e507031563638377a7a4b7556646b434d314357326c6e302b7a344774524b48364268337a7a4161674d467a6749493842337957574c6c48696378756b70575a5a326955644c646d766f57585832426b674c4d66672f6135536f6c557a6d6c3332424641752b44674d39636f474d583131726739696e726e5a324b5a3338354a647a48354730426f5a784e51726374517a6e4c47357461636c2f7342626e6e7a2b725537554166794f7657722b5a4e326a7777525933517175516a4f62432b58724f482b36646542544e534e4566786b6e70722b4b49394969614879392b774563617a35694d4c775a58306530383735434e575849686c504c7144646d342f66333078627977766d493261416d686f644d42536b48544331667a505266336e6b42612f3572786361576f71525a4974626f387a6d746472524d7a68306b565836475a2b723434314d686f504e54566d385033684d626b304143353666664735627a3453506d4c35477258677a305a6e46306650476c557961617031646d6d743564616d634e6e365a67575779564a503655315a714c6c4c482f57414435562f567254694d69544f4b6447704a4a6b375435777074473971366d72594365414e686c6250314e324f5449326c3869486d56414256777a6e2f4148384b524e5566447a2f382f774473485a393439334e4836395633574758363479316254356c4f30465235384176592b636e54735a395737342b664b5352646c664333744530664375706a62614d39416b35305a5a4f543349707a6461634e544b4874367a51746866535a386a5550756734534e4a4c4e74747a4776426a666869422f61443730762b7648667a5a42526538315937626f334d344f67796c75374d6270654e58794e744533783175517856577070445a376d4736647073554e4b66674d707a6e704f646c76414d4730705843483232544f3551706b303971376e316330445244514f5774627238395536524757793369464e70523177752b75784c67374f43716845395049694b6876654a63783776347637554e2f534e75666b6778777a567a4971714b786c5830366e48326864696b54556c302f6b6d2f51754132453265366e456e6b7863743165584f7a6877497376547a2b5071666c6f34316a77634a726a3470453743476a347661546c75596a6766356f42534a57617655696f766665444c4e42724d306f673679534e2b46446e4b794a42567143537a5a79576653364b76657234667373615a30776d6b526e76356367786f4b3048356c6b75726e7448377a557379474a6463767265704b554f33664367786c732f6b4b6d55734677394e34537a6643557a6746695a3444654f5752783973633075742b7a58584d616f6177704e324771657966634c69557230367168306b75702b42787055316d6b32626850544a78765a3575794d304d647a326f784a2b4a4f64476c474e44594b486353737335544c4b473439544539715832656664344444516c6d6943552b386d6b33366639514849374664434c4d3272506f744a2f5737584b314670307361705446726b43546d644f77325553714a4b75306471396f7270644932784b6669706b4446376b36316c4d756372346d4f35546f77394e6d613557644f72517a364a395a4466634569616d35634f787876744279762b73487352534d77665942335937713676482f6852746373584d726f5232577a69796736593351746a593662353079366c597872634a73367a346f335036777763594a6c426f786d305762586e7861546c5676553775565a57365063686b7a77374b3775676e587958646d4453466c4878413161756969672b4558762f414f743845786a4d5a364176394a71496c3046445578377361623643754a716f356f734b6335626c3135615764747154446c7571584d514d2b742b6e4334666d6343686e674e434b64516b68576c6d54354f63545a626a367a51346d534d35724a374b6d61554d3948553678454e48654555354f413070615a2f5463364c674b7131753851684950314b355766465a646b564958726f67736332586835395964534c6f306f68575175375143334550734658464f613178684739764f793645304a325a3061383978724c516262467968394d655879786f47444934574838337a563055504550722f4142544f644741456c30314c5a695a6963774e6350556a304d67336d354e6d4252445073304a77587961666a7a2b3557516e5a512b694b54512b67676d7148516d544b535a6b67416b366639542f41414351546152654f2f68493071383977664d2f4237363976636a79585353614f76516a585233513565346f4a3558445433475835462f736869716f6f344c31566e396a7578522b38353333766a50574d54697339344875386a6c7461374d79375a3765664b30716979394b6634516c54445136776f626c324f496638413169653577746173486464746d617a305768516159784f4d3434424679554f685776537a337a306e684a7863724e734b5149614c357039676274546955375848574c4b6a75305963742b62734838624f6d44713274564d6344356d35764f45796d754f5a53376376786d4b624e624c426f7a303871596e74416130314d7467305744342f386d6e6e7041767336553079616a4d48316a7a2b67445a2f6e322f36635a3635664732594f77696a4a357354654936764c32654f50796d53376963656e782f4b6d716d544f7a73384e3361334830487a7467653570394834516f764552664f37714e792f5350316d782f4d48654f5331325a2f696e6b2f5468726b384e6f31597536636b755571664d7866714b524f594f7a5654356253654c44544d6236516d346264417837506e61753364346a5a68486b586a4e6e50694b4a7167305a34416a69316e54716255666638414568687a39466b69626b3073716f4e68415a63644a4d6e725456387373396c4e742f786665524a2b52513353797a47664558544a36696d43364237446d4c4f4a596c7a52444d2b30615255376b39434b6c4e6b39374b533968756b61376735684436544746516a6b684b5650394f7a4b6e566f7177627969574773435a5755522f56352f45394453643751652b55312b2f7744332f45592b2f6f466f7a6f655375334630554c363962784d713450747470584f757a744f6a484f2f72717174443670304a2b5535774b4d5a3644464c6c67734273647450306a6f484e726f6b6575325041304e57754d5630386d5a523747796f6455346e544c6f636d6232676344534b4e7755752f3742697533782f5839526848796c6175336d712f596c764b326476437a55796d787655776e705a73677a2f70766a374b585558637259583369464878414a4154776e54555a5a2b7274356c71466337486b544c573353524243474d6b727069515531416a3357544532395a6c64477a687646335a70302b377674522b2b6e61307850474f6f6377367879473277585857554c4c4c6454477a4e77514c4e464574557564645336614a4b3346634c6b386562576c7761546f6e5a386a56736d52554e6f6c554e5a794f6f726a71356c427972417a6457717a7438434b4a33582f546254524f704c696e484c474d5a77635975547147364e622f414e712f6f484d577453713736773261636c7162722f35496b50736f716e787171696935316a2f73642b623975596c6e33503233356d52665652542b3044384942314a426a4a45544d6e3570367278644e6b57366b69374752557a5335756d3759694d69586f57736f2b663263597a76776c4741683079637872674d4458334b2b537164664d762b52615a304e64512f6d6c496a4f6d53734e5551617968746c535368314767726e4a6b736a542b6b697568545a676e6a61664d4d5936326436535638792f754c56424473776a713337767a547668592f6e5a65355337416637716e45592f613562514b30395454787a585466444146366c3570626e6a63687332506d5053753175613065626565495559722b35355a6b6155306b7a684f2f78364e4174536447673446454a632b4f314f3141493558387a43766c4d4b6c495a41746e4636774952774b70746f4a324578454379644e4c46566f5a5079542f436c542f695570625039314c443674742b454f5a6a786d7467717972626f48726d7a3561376c65396a6f356d58752f6343724645774579736a4c515a7871676d2b633075704533413457797562732b7645427453474a7169344e595156746a55674e6e364a7936784a2b6d4f6a3179386932704c39697075676d7276732b54355863587a3348795a49665755375541764b475654574e72484b5576514a44787262544a4a39445a316f536843516a6b6a374f76616962506d684e5432696378485039733941415967707a2b6633476642354a3745577a507358384464417170546434387a515738717246355673336630425a70356569524e5a64395a6f464e51426c514130645a48667935444e4f563164593844506e586e5351547648572f6d3539475475584c465175584f48366376776b6c4e387a6e685a2b70317370445172596637542b763667594c7a6f6e534b6d37664c7230335835314e6446504d386c7a5a396b535a355143652b586a6150645a4c48387366505a513573664b6d754e546c666f4330746c4663575355352f4c4d66766f584b32554752357471353462516556715351645448707530726b2f4433767561484b7a706a576c5a5167773034487864574d5979665037724737544a36422f5573756a47752b6e4e305a624b754d4b56396a7250327a3542644e38774a5331776956495770326f4254747565325a646a456b69775772305a593835313264474532686d736c7a6b4654557a39787539314250415663563046574e7259414f42717556413639413254684c384d557646322f4343316b754f714a575a664878306b6971645359386674676c5971626b69542b4e656253307a4d58664a3047507961756c426950563542566b5653353537554a3964546b466c544f347a506971567058306356566f4337504a78463056384d622f63595443424171334a352f5962512b42657258504a6f70734c7a587054366f393567383372654b4344556b70716c6761442f414c524c54507264475645386f2f4b50362b4835783934697639303259356f6a4839424e4e506d2f4c3131482f4361353878544c6c7354536d79697a507a4e72692f354474524d6158794d5456326436754b396956744c34654b4a52416a48634a4c346a3576354e7061432f48647279492f48324972642f473030504e586468556e5852535a6d695652546447726c416a772f71716f536441416254615a2f57474f6c62785834757639525a576e3464356c523061342f5568457267655652663964616c6d68524b5a38632f57725953324e6f54515a736278726b3950345a782b4d6c476262484c3265614d39722b76365637552f574e78573766546a314b2b306d6c48713542335064397149516f4c71776c36317248445374764e49654659756768627a69564a6170735a71456b725a54774b377166682b3043767649665333316b6f6a2f5576724a6d68463836374b497545766a376e4653585776706f6c6c57512f7637435575486e5064374978494647512b3956363272786a614b763176537231533678746d6a36317764677a37616563304d2f546d6556584b39464e3264316c4f732b6c6b6359706c4a68474c654f6e443974413658634b6f4c35722b483769756d2b6a2f71625458796d62316869666e376163396c777965597353783756327761654b6d63555367334645624363667a3875506e2f662b59347a4d2b74347a58385033464d65552b685071545658334e335055624d334a383665726d647556655879366d2f6c5738736f6d634279574e476d6f674853716a4e66486b4d44394f6233417a346d6c2f566f7648645561596571486750716d72766b4b386a7a6e787543435a75554e3968655936596275527970654c4e6d616547557179357043356d6c71553841684f5a6b376d383730584b2b546d745a72385544554879763069395449744f57367631336248704b7a6d554e6e79664d7552513461493962616250646b3339783265316471636b507063576c7a2f68705459336f756d2b624b7675702b4837514b38302f517a616d31534233354d58375469714b5a7742366973696e386142446d5653396962795a726d56494b785569707667464b3275444e7164562b35534b2b2b503841702f595636373041327159376e595835513757636d6a503466775a3371446b5868395048775539472b4375536a724c726553324f58796d66746f71644e596d2b6d39682f576d54654a363665666f424b2f7741637472706368732f4c5879585258704d64646247586c47666e3447594f6659766473736f6a376a6f6e547830755737377657384a50316e41485038767643567665522f30352f6b4257662b4f476c444f31367679586e6337694e7848446a38717161334d7452627256544c565052573951365a5a4d79565a354c2b2b526b6c6c4a502f7752524a4f2b502b6e2f41454551703945504a2b73576c2f354e5a536b632f6b717073624138695a4d5832423076492f484556476e507336584e716637326b63667457476a502f774378686e4d41445333782f7742502b67647039472f494f35736a396a386e70646d336564735379342b76356a6d306172755a6c33304f52314e30724f7a7a31545030714f69326d64794f444e637a69614453756b47364d3967434c66514c7a3056572f7741542b552f4d6d50782b3759526d735a7662457a636a6e48445a45697947676671554a49645361756a684e51766b744a6638307a532f71795976482f542f414b666f41327036456571553865627a582f4d4c4b7a717138324b424b4c764c4f5a6c3269464c664971486f367952314664574c56697568424845734e4a4d54556249656b43774e46342f3666387849512f487a7a37517176526b2f6d4c69787979743035766a7132555435325a4c6d424f6169586f54352f4a616d4650525958477359723374645334446b7046675578766a2f414b663942464d7a3070395248786479502f72753672482b50324b5a6f72507933437a703766486f3971794d363878316376546a766e6e5956476b31744c58415578314e705a315354564f364f7577474f656a666c7a3876562f6b667a506c443253775a6331756c356a3470726642386e53354f4a617170652f576f6b68304a53596f587a2f464d46413953426578504736507752362b67434e3947505576452b6c4a3338724665516138434f614f6d575236672f77416e525a6e32632b432b6761483571506b4a666c57706b6b702f416456386b622f7663475942706c62715438457a2f77426f793250542f77425272596f59512f496e4a626d69784e5474432f7a353135396a6c6f4c4f7338676d546c57453269555a30755a5145375a79506b7a546c4d4b547046714a6a7246412f5236522b70576b62527866797536786d6e53466531526c2b614e734f544854574f67322b796544444f66483368386a714b5676546e6f5a7978312f666279687a35654e3066676a313941376f394876564c494475636e38706d5a6d6b2b56634575727265555161437038562b4f4e3062426e546f4e6b644c797033334957647236595547336e7945364a626132364a2b4471445576705a355054446e4d44387476456d4f666a396d6f386633504a4d69434b54527173714e45377635424149586f646f314371713538314863325a314b3178486c2b79305933782f302f36416537307238704b33636e742f4d4478584861364348566162764e4d7432644d74796453362b53635379584e7a664a704d2b74636b7268596d6d6d7543797139712f682b74544f36507752362b674550394d764c74445730726d2f6b2f454d4365434f4948664d735479704c626e5a763868544c4871624f77534c6e4d70646d69483655317a71506d6f63696479595a484e30597a3776312f5148442f41422b39526d614c335a66354e515774707975366c4f6454356c54795a7062345a3978534e7a7075304f6854314a56436c76427670477978727672424a324d4b4933782f302f36434f62766f2f7743713679474d6679676e79796650725a63742b50354578384e4d655a6e4f585a6a426b6a645944464c6d7175446a512f36683079396d5a4a4c476271613533522b43505830436d682b503372526f4e6137422f4a2f416b6c376e673279652f774251494e61656c5a4c79394370495373793559666259475847564a4e2b53697a767a4f2b506f546762555830342b443742504339452f4e6e496977302f6b6a4c537a4a646f536143362f55366e44626f363130737276346f5a2f483833336130744b367443535a6e592b31706a7a5364544d344852697061386459302f396f665665692f714c6e354c3378666b6c7436387053616233347976555062736d30706b384a55637475713465645a38513258474766377a42315a752b7774544c36576a4f3676344a2f7742496e4f4436512b6f682b512f4f6a386d666c556d6e6236673962797273734f6964456b64646c2b4c58306f2b356134586648314b426e3968727a644537436f446741696b32726a6a7035447a473945764d6436733248362f52746170665031597a79504e5657316b746b73755352655436576b61786e4c6c51696c44484b456d2b77417063496373705471524566356639424a496651587a32784f4f37796231774c57542f4143457174526b2b2f4670306a61656663623535556d4b4b50322f577175616c544a653254684e58425353484c53786b62347a7930794c42792f786d39554635335131665847322f756f764b4f5450683875313866616434794335584f6b57374c4c705a2b7454516c4b796c7035476c5041735279345a35726d55524f72576668774339666f443669785765302f5762625765564e6f7a543054373555785a47656c4b3757516e6e2b4e36334836554b355636687546625161584e564d37683645732f5852377976346658387737523643657272736569536e3134387569725a4e55557958655565522b472f7945695a786f386e422b726255637a426d30745a302f7653776d4d474e6f41303545664d365065567a6e6145736e386176555575565957703632373636546448694a6b72327a53456b4236457544567a4f514d747645356664616878537543564953706d66654932536b6c415437797634665838782b4838612f4a66343374526572327339785232335a5a316174674f72304d35564753782f45646c6d74583772714c4c3758742f525175796c394b7161616d4378386234384a4258412f477631454f456e6248725471614f765053686c4555766b6871616e6d7447464f3167683272374c636d6650767935542b325156314a374d317941556b5453314e367a3849426148346c2b6f396d6165626d6570336b55443975516d71352f3576354130717476796474487a755a62584b7152694b35626c414b366b7a307869646673656b564d645250764b2f6839667a423450785739544a4e56636e5057786c5058496e5a487456655670572f736861476b36613555522b7961474532574d34696d4a78706a546d394f68784f4b617333764b2f6839667a43585078453956737a2b4f48592f4a6264792b7a496e62506d6a755832523371564a705449667557496e61332b50662f462f472f32664d6b58624566464f72416b384b6665552f425038774c372b4d667155352f613650552f4f7a7866782b72354c6f7736756b6a4e716d324a2f6c6c70797034554c2b304e6d70706143675970446a4b535945732b437737566e48764b2f6839667a434566346f65632b5135664e546539544e39575664546c326f72693875767a724936713037443230354f746c4d4d6649764962696c2b656766617a6b773733334567376b33376f6539694f6c6658387736642b4a2f6e566963704c6656446135534e462b72576c4f307a78482b4f4f4b4e64755a545a69555853567a33634850583056797a3043685533756f49312b396f5065562f44362f6d444266694a36795561384d4b50552b6a446c6d354e4231736e6c6c43575835655a646b32346b685631772f65326e45784d4836463743593531394c4362536f59357033764b2f6839667a434f622b49486d626a577154316938695a6f4a6a753664622f4144575a47646e3131343967614d4d317364334a4936486153616d424d6d45374376776556367464714f7173533935583850722b59542f2b745539595631547835507144733143464e7637306930786d70626c746b6a5446426d78496a6179717065543955456537756853744f6c307734637a7668343935587672362f6d474d58346a65716258614b732f3157767a325536655a56506731655559716730626273657a7571424f5a7358324c4d706661344f7a41356131355175554279382f6b516538722b48312f4d45646a385776555055336a2f682f55377a47656b6c726b33676b337a576a65666e356b4959384f4267364b3565646a35725161334f54746b74594a2b343246546e3870582f534e537364613543636e346d65744d545470487a4c525051786337507635342f5a366a5a795974667475574c703965542b4e71614f6973316c724f3076306858736d7a51644238624f79556939375733445a782f682f7546332f41496d2b7165686f344d6b2f6e2f6c697446464e6b515a54664b37465957344669374e464744664273487a727058342b58472f35444b6a6a7271552f747a766854704f6538722b48312f4d4a352f34682b7039766a344f68386d756658422f4c5a315948757073506c564862732b47334f6c317452744d2b437a516c474e30364f7a55614477702b58322f442f6d393558505a3465764d4d7337385376556262707556702b59614461716243707a64695453577a75316c667832684575654e50563848517a31626b6f33384872472b2f35684279712f6253303376596a7058312f4d5055666876356c6b57395a6236676275747261657268744336505a7a5a366a56592f5164737a39576945667330474e304b55343043686e753636634771766c54772f366539694f6c596e31395145562b4776714a5176486d792f4c643676437a645054526d6d337a716d625430797030324935484c625634726f77466d31616c6d624c3748674d4e797371644e67664c384573556234384a4154796238506656465563687a2b652b575a306e3835342f46696c6435624a582f4c3565786b724c517062546d314e505379376f5247696c4b34446e6f476e76762f414a434f4d5636646f316178384f52574f332b4a4871663474457a69665753304d717a766a37383974506d6a49306f4a637a6e356a596a6b42636568317638414534505a65554b6a53796d6e3464487251536256576a55706268744172432f484c316930434c7576366b6551364f6474762f6b3272673832442b666e637649316d3758774f5a35623774424f62713366524f426e475072735732696c337675364472626f2f42487236427a562b4f50716c4975544e2f38416e48387a716c342f3377315a66715042546f6864644c71575a55744c2f62704e7937484f736c4e763267353269583930752b3039594f706a665838502b304b2b502b672f71396f4a32644b6a31453838386a304f77334b6b6f3150504d6679532f6b6d6842445845312b69323673716d4e57762b5068466948784f2b616b4a3838454f5a386b5776574f74517a712f486a317a755242442f41504f54656f744c7948476c727a472b6335376569746b56566e6b4a5768646f4a4366374f66434d665a41644f75756c3263342f615650796d33303757336836386734582b4f6e72464272356c42657365316f31354a5a2b445266752b5a5975747335617371503738674275667a4630374b4a37684835654b6e4d4a4f6736386d4c6d6438663841546658626e627741726e3439666b4b2f6d5871683631622b76567968397465662f77435947524a5a42585639326e487968322f726c79656965696276476f5437537a556979456b6e6f712f713236507752362b672b7a666a33363138316f74464871663548335a4e5a536a7468743162506648637a616c5a794b5863635077765a436c4f737a764855304a59495939416e7a34312b3635756a384565766f444b2f7741652f576e4f793162556e717835425932616c6e777737766d35302b5172785a72537a742f794c3777334d6438664b4a636469656e7a5436446f2b4a57414f684e724b6538302f442b6f6c7358347a2b745472634f724539563944555a58577554797030506c4859457758484c735a4e2b65334a5a61746b2b61656c3541484875554a2f626d5439717332396248465539375365746365764951795438667679546563303666567a79512f4b39766c63302f6a62504e394362566d697532596d4d6c7130374e54354c463958715a363253485250534b2f723170397a416f557964394d646e6c4579562b4e767258466d42516e3162304c6a62677676765a4a357650485a6e54304d38676967306c72566e7a666359474c3744533334767270704e3630386a50334e5a58336c4d396e37687a5436432b732b593156385072427364303876577737454c5079695a656b76474665353044586a5a64534a7332657a48306d4569654472524d4e564d70786f706d704f6d66656166682f554e732f7744482f7742564c6d5a7935765762657158624a4e6f36534d3779736f5538736e2f6b6b5a55466252306f66763841325a593578364765307a58525361785963536f356e50656166682f554875666a3136355a4d694861507139356b7a58324e574a6e385147784c387550324b656565585843576b6d762f6b4a78584f6c6e7870366b4b3332473561347947503841715065616339614450422f4672317357562f49665746373037462b63455669305a6e385079687446576e6f3174664935773971673048364845686250396b2f66584f5a3070637054337661666744652f385a6679467a527974504e3962392b485534537831436e4559733652334d516555616563764e647731314c2b396c2b39656477476932795a343956494e464a5065302f4144732f342b6573575272576c6f6575653472507a4e444b7964466a7577416f4e4b77374330557746546e704b6557576437474935373274392b6157652f6c43754e63546653617a796773666f58363361736d4e6d596e7269477454484e4c302b38726f687967674b7147536153696e5579314b687a524c4a64597139792f38415265446c4b416c476644694e536b66414c645836476576424d743552366a3767785a61493563326a42304d7654577551364d384d72535338732b6132565078725a48337177644c3951486774696156632b4b75366e34667441744443394b50794d6b726d7a4950574d36772f68455578504c4d386161334f356a5a316d666b4b316735445632776b4d73716253386e302f504e375741597541416f726d763466754a664a344e2b526b7443456f39527375584d707a32496a74697a306d526330586a6676547733716e576c565464544a2b4a512f4b75616b63314f6b31337968512f535a722b483769553450685035415a4a355639487153506c4755757936503266784b48577a3530665059646b74737469326245734d374e4c6b784d3934664134794d412f3166754a3254384973624f782f796f6c414579367a4b7166473330325546486d536145646b61382b4769427263657a59476e3733784d64776b687a6e744b4e4c492f72744b734e4373374d7a302b754261574a34352b55725a5a6e55777473586e426f4e75355a466d794656506e4a6a6e6c3230794e734835754778776e7878756a496d66355730784b6c4132317a5352595869715058536c737937387361517a476a4e6945506a6a53483255565a387631564e7431476f7a353372534a6f356e644e4b63397a6d677a33496361342f5a2b7369794d3948726e4e68797a763855467175357269306f376647736557466973353145393163734979797559367358463047494547706e763552644f4c47665462586b7a6a642f635433786f665765436a7056654b564f34576e324b306263586c456a6c57464458455850346c5a4d6f5838636f386632726f634274346e514e52382f7969646d4a362f5841747678706e725742706d307641736c43342b577a724b547865493544446e445343364f57517258435443544f38424a71556b716b30306c4978424432737a58704668755436645932706d2b4e7863326c7a4a3161436431337835716f435358486b6c52385548766f492b7a6e5230766b6f2f312b2f6f687850742f77524f4f533159393371643878756d4f365a722b4c347558706e707835673638303870772f42504837743758627738724e4a4a6d5877636f6f716139776e50424479746e654d63786652465963452b2b77506b457a2f7743522f7139713172656355335672617337754d637338593454586c33562b47617a3264325a714f5a4737354f6e7a6e7a445438683871714a6a72327557586a316241696d7a633659792f6a6c78477a4f42354654686978784a73366b5855336a37412b78385075724559345141314e37732b784a4b2b57324b61767248412f576170316b2b5a482f49557378333248316a795775346c6670782f4d384a6a4f6e684f5554715144646c767a6d5564524f5472346b773161366c7a6a4f6e6b3464782f6b676f4c4b2b62366677705756694265763575546642524d584f4e4d4464664d50794b505232692b33624f4f756d423155635a565a6a64417336714f6f6b585175716f346445744555354748326d66344a4d624c452f41664463446d6f732b44535a704e4b2f4d436c645230547a4a443769474a5471556d716a4f546e6b7059734a3332445776695a366151553539584b524e7a5142344c77482f314f3131546e5a73453655452f6d51354b45474d4b4e4e6a726e5664427a72477a5a3830372b6c2b766c4147414873584d4b706e475a783043316f3956413271313061626230577a63746c68624b726272724433536a31756b7376716a784c666961432b4d5a7a376e782f384157396b78716744573236464643342b676a6e5a732b56737a4c753244626d547868376e654f63583267685a755655732b75346a476b4249366548383356304b54626b382f7348584c794768457a5152506a787867764a2b745248585072353466546e416276394d74485374474745567271414568374c494f7155722f4143436f795570466d363748376277714754796a49436563564c42646d315736787249624e5935525764546874503475476e2f74476b6c554b46745538375a323767527935314e6163484a71323937335241696e374a47495550546e3047432b39754e79626e6a4334687174414b44716d2b6f3672355a776f4b4a343866454e6d7a324d524b7a6e37646d32496d6f796f51717a4e6e68343770433438522f6b35773548734d6438496b6b5647482f51416d7a2f41444f747541486c466d61395a44484f68533238422b67556c444b4b6139446f786e63786d41704b2b585339737163776a5a565a4f5a784a6576744371462f73472f33466e6d726c542f3156426c4b6c762b7878533956494237654b5545365a55726f5432693264695a32754e782f7970714c676b594f2f6f484c5a345a6f43637a6e45396e68527a6f3276564e335768444a54526367363055564a6f6a5a38635954394e3142304f42516e2f77432f70744250782f765674796759337553597459496b775434526c77425a4b4b5863536c67733547795767316958746f446c41566b446c48546144356b6a4b36726b564d626f5343396d51774f71716c5433566d6a32624a57515649766f58634e4b395a334b474d3931446a316668346b4b5461556f4c5479644f55506d796249676a33543131646b6970596e516a67356d395073346a482b7055745a4e395254666b57726977416672546977506e44465a42637574495774676f7131736763765230335261557270487946754f716d34395146505a2f463152716f6253732f68463374397675636a7167644d7367374f4c45647166396131667a69397443353954506a6e736e6d656e434b50736a6b6e566e68374a2b412f34562b376a33544e486830676c4e3975524637575a755469314d746249544c4f5441734f7852756f6959716d656e7443307a684e4f6244594c654d5a2f684f46507a66462f514f702b67786a5035356b63697334483665657531484b4c6c347549446f5264532b595739712f6376316e504f66384156526e3866474c6e3659632f6f47664d65725456783150522b6b316d6e6137526e6471717a776f42416a6e562f7741556f57742f32547a7355623677664d633136766a34336c7952534454356d533254386f37506d5549554d587a756b373334426466564e47314837716f35706f372f414e535244554b49307050394e4d4a2f622b6e587a43732b6465576631452b6a4471613342796c364645343662374a522b49542f4149746a464a357a577a2b314d64316f55434648373071453265392f364177686c644e53725938594655755243702b546c7a532f4f326d697a4e6a2b664e5671746e744f64466b57686d2f4f542f6a466968703652676171436a525048746559317139616679413856394c637364524b4b74376231455554343368754b54475a30525547525231655436677a726e385a785a30554f6265366a682f71644d6a6f526f45766e4453756e4e7576556336396679717a314a387562366b65584b6b325958784f356d7a716d6e32656d6355586b445432664538686b7931435863655679614e616c676538722b6a39506c6a5463653078746a624848496b44364d54782b4b6d5647646b57786f67784d3379565655316c417a37676371726b7a36746e572b4c513879387336794f4e7246386c64384d30465a2f39744d6444356f3572656541474c7a43502b574a746f622b74354a75772f497a4a784d3246766c49514b4b464b72504b2f4c3052562f77446a6156526b54587753555555674d595331417157597050367437767a4450796e5269304b503544566968714f544f47695041687a6f384d36704e724c33734e456d58727159783369656679675257395345563064303475756a6e6f4f674775525077312f6e494f2b6e3266354a36723765666e2b6e2b627948502f6c7465652b61313377654e2b4d5a47314a433347325a6366794459644e6f6155326736635631635a5070794a44734130537a4332646357697459382f4564492f5272386466445054764c4e4c4d4f4c796263506c7a396f396650373061375a5557616c4e3665493154565a434c71716f706f774c6958797a4a7a696332534d50723457314a6e6f4e70315a3346494b484d792b396e762b71755770756e5653514b703132646d707a6d4b59594f424f356f436f4f4461667a6654576e336749633932594e7569716a424d483158546174616a78354939616562566d69306b6a632f4476674c6b3379564566386577526d574846433550546d5279616c795767364b5535623874446b6863764f704c73666243584e4d727941425438484b356e2b3537717533347276744638664f2f554d766962563853754b4248322b5154456d6b676d6c56424f682f52596c387944726d6a48536e714c4e2b47567675566f564c4f68374141795367534c3271536b6e41747957585353644439716235702f77434e6e6b376d534c617a7064546e664a592b55716a525134566a55584a5671576741704239426d415470534462735434686c724a51616373304656484f535772516c374a4d75666f724a5153674a5a2f5a4d795531712b7638414c4f5548532b45774b5764494a5851614e454c4c5a724844386b73346654506735517a486c55782f796461366f614b67634e644575615076483947505454535a4a396a682f6f4d35476954345a777948364d54306e4c314c75644c556f36735930544e6e612b63304f53764c6a2f3472352b6c664c4d36506f5466436b4a672f545567624130424761735679716e70586371435369526449304e4544754663335a66312f417a677746386437517659664b6631533035775a33467039736b736d492f6d5633376469737745665a5974352f4f5a4b694967514b5775597676573073447333386167796d533044657348664f49727a487355325436444a796a52666c54725a544a696850566f576b36364768453056452f74714969583373796d725878494a61732b7a754d543577454f755a6d2b3174507a6c52597063686e444c4b6a344b59703953446a34354a3432646f7a617063645058564b6f574a38587964337653716552494a496f6c487942734347425966794e4b737032614d4655375a6b554a344b37644a49715452637366636746584d70416b2f707a712f614272426978722b464977434e45756e5430496f3148663036356a6b304f3664566a4a7245716e4b5a332b7168724f2b353655713755365947483041635a73362b784f586c4567756f635537453261584e4f6e4a626f38733455396a70714142786644506f4e4c39742b6f4873467a4f4c4568377745714e7474457367534933765957536c756c6c477a6c34484f374e314252636256702b4b6833315a526a41694753706b6678455a693043636f4654335738356e324c7a4276707337517543693772585549596d5451746331326355644a30585556464f76327939533368324b634243427a2f4144413269716569634e58626a644f38672f6b39476569506a42304b574e7155556c45633464714b3479465a63622f745a7970774e4837503255556850586848655073764a3177533250755747586e53443352462b3868576461694449477032694a3969476a73645a5770486f505544512b2f2b6c6341536f5479414c796b324650724c5536674d2b4a494b306c3978435574753270532b537153356d624e7971486963644230416c55365854552f5262436c31414f475a7833413076716633784661677a2b3168584a44462f7744596b37777030364c6757644c4b68736764565256377a597449417172484b6a3750375459394d4165384171303246625445376966675649576b56496a44727231527130565a2b705576717339613838616e687a674f5959615141487a4f446e515a6d4f6b3441726f79323078494e425a37644834556f7967742b4e786143493772574e71624c733956505a4d363534677067483137706b732f3066356b3042476a396d626b684e6f75326573317353724d757562557172547050495846526d782f786a70324f6f4e695a3363514c556d54706c6d3770756d426451446d36453946643364744d5654323154777575396974566e423173746b5330785359424c6256434b5a522b7638414b50652f4d48734436597035582f55392f4c6b52697679727835652f6169313845364e506f73697a412b6e4c7971326f6e5435386636374743474d716a634a38514954704f6a56642b2f627a2f4f692b323233416955746d68732f783836686e7a73744d7a35542b7258797175654f4c2b476b62586b614a6144586c5251516c4c464d5461442b51305530667667544d6b304435586a3173326d7375735a72655349313870564c5a2b73484d6e6638415232454b7a6373375067644c6e6c514d4b326355644a6a546559554c50516238515a2b3838684c6170624c5165334c5664755a51553161475431565a5557317a5847787a315a78646a6679723469476f55396e427331512f5a6b5935424d6f35526f4a6a32485664486e2b3174436e3758593739424f596f473566306e3532686c46464e32686b54624d392f315a564c344267664f663454674d68566f446e44614450663431615756784f643973566e525174552f5a637874784e7a316a7876794c4c6c564a69346e547365366c6f6f733430456d6871766461637a6d774e4f4852314c4369727171676e58324d6f72714c56586142416f78374772514f6433432f78617a6157644c58437578314b2b2b39505263336b524d784d5341614853707a712b314d6755426f2b53526c4e6c794d6a2b54717a644a452b6c6e52632b775256312f523679636f364b65652f564e59752f6469694741517958757a78776f506b594957796b376b69706e76696d6d6f67324a2f3841705577304b54714b2b31714f3454705a7746775a5047646f4d442b324d7a4f5a794467524a734c526f7168544e486f33485370364e4c57414934495736674f7630615a334737557136356c773837376e4b7637717a457451456b2f6641537a4b4d705455745845637a355a32772f6f56737235417465615573714c386f55764c5971544d4e6f5452704e67554e6464536e6e316c6635544f65384f6c344e6c37306f6a306f364777746c56647a35633446335730716c564d31333856565136506a47616a7555696743503661656659634c66334f4542724c546f6a6d54534f6b464d326c61577039537155624c3873717854544e4953366f2f69586f6663645154416448504f496637457456396d5669414953726d6d674e644f4e774a2b54636456526f58457a5075466b792b794952516c6a7635496f3546314c4a537853457865787a344337384b456773497a554f5a314e6a6e7369667432757a56352b6b6c7a382b6a597179494f776f676e595a724c356e4335435664346267702b55532b565077686c7a75527479686e756b766e4b4266334e697132716f4a4d3353524d7a6a61325861612b76734b585374483373623141457555666959492f7743626e474a384a4475574936794f527a327974793944377253715a526367355556615550626941686b6b4a5a342f7945773263616c796b306643616b67384342336e6f4e746c5a576e6f503637334a67365649574977517274537a4f7a554a38642f5450355273643034556b7355396a5534676e5a4d746f396f4237584c4c722b344471714638334b632b76737a5935624c626f7575644c7049307a536267304f4f71682b556b706b3454372f6d46494530412f6f4230504b4c4a7331744c3879664c6a53504c416d6764597676596b62453856433549534c6c454c61666b2f626566554c395754482f41496851594f44346c4f6571493045484979303874564b364956526d3674644d6376314c657831533175483673396b616c63467958476b37436e6e53516e374149314c2f414a66764b706e7558465755544236695964683555492b755951527962487541714b4c6957353666653334755a585163435439365a67776a2b776845544c6539367062552f524a644c576e397a6c7372555558744f46334b5a5548644178686c7a37685575623066734e36452f5178577962466858586e534a5034374d3659446e68586f756b6e63794e2b726d67307330694a4144555a4456375767624775636c52744145674478632b6c4943564a667976445862497551753366656f536a374a5936475a3549596f4b6f6c4246594c4f4d4e482f56574c6c47377275476b47742b63484557417576566f37326c694e46395a4f65756555343566347a70584d7145456b715153506a456e4d2f77445343366e2f414963432b6777587156794a366171762b397a683261476b3463666e3867746833314b346b4e6165656145685856563777616f4f48396b597a6332316337414354736d636a2b636e6a6d75316d514f6d4b576178516e66324e6d61533761383557685a316e5864574c694471523473614a6e41626d6d52746a415054644e4c4168785a5367737a464964465856716b6c346636684a7170633350365059793743744a736f424d346670332b524a3455352f7742414430644654565655725a3955574f366968522f4d574f41533654717770646e6a444d444a2b537032656643426d3848636358572f4366613042724c36313773666a75426e616331532b446e546169624e4c4a713349744c6b54696f6f6a5834354841535a484f4c5058724e6f72654a527a6367482f42387a656933576b576d637a336a56337866666c3366564c784b4f5453306148643136645232335a7a474650656e4f7658564d466c386257584d4f53716830756b545344346e53706a366d45316e2f4146615a78457a34446571624b586b3034774d746f596c483139426c39304538614f69503869524e374c636e733554733064544e4c356c55304e5a302b6c52636d7359574a7834326e7a4551532b53674d7a4f704b6a59736e4b4d694c4a6d6d526a535578464c4c2f7743505434777059743073383561795259356b3442796e37505061527437792f774330395945647257504b354f4d51534a536b53485a6b4d6862714755594c34316c643255796337733151704678544c2f7864625431774b473131485661415a6c5a63304e794e4e2b674f6b724f56704d303533413754713159376e55533075664f7250623266594f7a6368725341682f7931333130384a5055476d4f485a38673674386a6950506f3166637a787478646a3863305a56355a565561585353574a6d55624e74666b4879642b704c2f414b61484e59594239796851732b62346862477976674174656b6a6f382b4d68546e37664144377758325a69723167375175346268692b4a6c5645386564692f4a786a696e5033314b5438507358787468414e4459484e6f646855344f6f3131486b45733431535a68516458734275514676534d646b554f6f30476678777a69717269466753736632534130676f482b675a51594d65446d635a5537714a39676e5a664c75754852314e4a39674f6c5055695432774959374d2f50757a435a38365a72626672564c74574641674c674f41627071306b724e784454452f54525557664a6b54426d6352704a6f3063657951355757555a614e68684c6f702b584e6e2b4759435444387041434178776d36635a63777648354f7677706d4f7a435a4e775a7176665a545564484a47587876713144646d756a5542587558517061667551534d475977705450575a4569776379764b526c7748416d6f376378456c474d7a446e5a6b78367a436c30754f62624f682f7872646e2f41484c65505072597759344c4f657735784d41724b33537a61746d6a4c38576972746a30426c75666f56624f6a796e573032537a6d47656d59664755543657674b38585049794c737a65504139453658496c436d594c583853307276483953694871594f62696f306473707a5867324f4750502b7477773067446f6654734c4e7571626146467a714171706763482b494e6f6e696364346a336a656870565a4a56353346726f6c776568336a714b2b46745a2b5834372f4854344363665962786c6b70434f6c54772b4a6d6d364b51366b506a622b2b5438772f5658463543354762682b50466f365a357375527157466a5136714d785a54366b62504a5331716954426a7a736d634b3054633542333455704175514a2b623638544d52786b5333777277463973575871306168796554782f554e5249467a6a7159436774597671754d366c314450354b684b366d7257346162716545644275637a6c5a7645644f497465687a5034343643577a53536954546c7a46554e7a30364848584d31676d5a705870574859612b7047644566564f41756539346645777575346a494a59733646504b764d666f3266362b4f7257504b4a356f527147754f6d6e782f4e6b684d45756d6334766a4871332f496e56636d675747706e3730314f344a7235704a6f2b4b4f706551576d32473232556b324a6a306559614d31464565537a4f2b69593164542f4b425533714542333355537539396e58456a5150362f48636e5755724d6f307375504f6a2f526a525a5a6b3579354c46634a5135504f2b564e722f6d3768696172726169514659544a6857306b675954427a6871697044354e61304e2f504b6968614772596a3457766a6d6d686a583243584446712f7461484e4445715778726b4f3649576361445630416b43364166377a494c516d363046746d763550614e3158645752574e6b2f4b3035506b6e486554326a333657686431616d415a4f6459436a57414a436a75504e742f4b44545934616d74616f5661554c5a72626c75374455576a6355745762704b3272555a4a542b327a7663306c41746e493364734e306346502b33706f71414f573463756c7645774853614b66724e2f61686937326761616e446c557a61746a2b527a7275424973634a4b46667772704e6c6b354e637347745350744444394a6c63715366545646562f34385562343562644d613354647673324a374865502b3072545566474334307536716c4d696c4d2f6f43382b636f623430515a777457754c617278394f727272577a5072524e7839656c554a727253517354724f5a337137422f384153756b7833484b542f5674397645466337366463794a30352f577a34746d75395956434b35713153314b626f566663717a7a574a4e534f62524d667a503938644a3247626e47566136685361485059346c73694b316a563641796f6c572f6d6939677a445a4e37487a5472544c706449696f57484a2b41484947644b5a744c6a704949354e73557a7544467445622b5a367a374c6f55796e4f4f752f4e4364383378524d6a6c3750562f4332516954487447695769772f734c7262784e50384156375636326a6a456a386439394f6e71535a2f78636d51466f424f483336653674414b6a52447449346d46456b626c344d376a357757673371774937414435527062484a352f59666d4245326c3835726178587530777973413742686737336c367769376e4b3134304b576c2b6237674130442b2b396a2b54357633304774714850426a6c4333324655306e7030386953695339677430755a73365a6a314630646e463739447447657464345574642b706a6c6330792b763769747a2b663348796a375761756e53516d545035486a38656858316e51494c366a644b64304d3645786b3258515234717442673569322f576d31574a2f585252774271494a4a7631774b7472504f68565a753332316334425a2f574b695a4f7763765a76396a6e543431426a704c65566261506c6a396b7967446a615067357037767a4235505a71426a434c4e64474f70567935504474374b2f2b5037545571306e707a30385464372f34644c7a55695250765137324e396c4c666e626f4d454d55556e637a3775783254493676514473717a4364495975717a692b364642517334754d6c796a6556444f7a2b78746b314e44754e556675773439727a45757a794e58746e726d4434325669796e332f576b7257796d635a37535131536b6d6e326a435337446c367466416a734e56307443513732414a314e7258615a7167664656784f642f4d38516d7a586e6d6a4f526c32676e43414b644158616957794d2f782b2b73427550565036344a5a386c66384156755872397658634b54706d57742f6b452b65637368563632656a62576b504a6f76704b6a7a4a62637251463932673165704c3250455758546174616769634b4747794d4b2b2f31734a526a496a3741683863327677614d69506c6d4c4450723530576e453264666a37716f367a596d616650624339626b55664d3077444e714d4436617563546c66724879444c4f70512f4c3731696447755a38727554763061474d70525031732b6732546e4a2f6d5a486b4c2b316a2b7751756e3665666d2b353136457867726d6f73444c527a644b6a4e7a4f50594d3965687a726d5070366d6e515945644c4b4e445154744b562f494d683971707a6478514c5961526150516453664d4c52696342776f4b4a2b53446f2f476a6d6d6364615565534259375179744e6a356376466e4c346f56766a534e56475742764a706530306e50306a4d4a546d67556e3538757a5164465765676a716b74436e524a62575a4f3350656e6c5658793575696c7662526375697a354838694a333049724154374c4a32556c7a616e5a67432b78356c464c382f5338697976493377364f6a59536134417970684f4c376d5033697831492b4c58642f4839597058506c65416a472b73434142366b3743667a344654335438525052566e74572b48324e626d686d557764564c6e5a716b524a59514a63466c6d7432556d7451303362617a3976746452585058665878426e34632b37527a64475344585252715776377a682f552b43445970587239717145314c61374e633353587a716165417072666841444e4b6b4a4f6d7731633962664636396a79475336726c744f6a4657646b786374484e6e676f684766557631653658434d553562496d4c6a4a4471347a4e6450436e6e4c6738506b566e4d5249726171797a4f62745a477a4d6b45385770576b70546d5479564d677a6d497630735043536e68304452386d6b4e647154684c6a7a644454544d754a78636b586436653530584b6665644f6946453932724131624a433031356d66486f4d72533253526349544c6e434f71794e6c48566c307763453665715678617636433761517352676e6d5679636263683954394f664a544771324a447139614f622b496a735375623230374d374a69706f7350326c6c552b3142714f6959732f336e727746562b6f4333423462587333593167665a30386c73485951373171785330704b586c4469596955486f646a5a6b784a41653170464c6d4156594a7a362f36304774632b625a7a437273644f334f686b75313052574e6157726d316c6a564c677a64564e6638414b414261684f7a3670326c3372612f33375262634c426c516f4a39345a6345626c4c376454473679726d6768356259366b6d6a466f6b4c375732767a307a733243616d36715a444f7663336a34326d78383378514a51467677345156536f52632f52706d54312b34747559756e643063334d56554c496a71306a68623150737164474a412f774432382b6174543466682b6134414265565a59467170637432626c624b3574444a31485a7537476d7656567450736c376b496b70304571776b6e716654365644682b466c61486e483776696a57304a356762326c745a57625456526e5a35317a5a33516632566d39504a497a5831586a4d376a3959435857524d533441496861534631732b2f594572794b7579766746737a4d586953376d706f3230356b4b4d72496e4649535564613355386464453037473570334e2b5453747a35394872754a3473426e5478494958516e3266303352624d4175634b4c586b725337347665796c4e636138396c6b37377049722b707533454f5a5237532f6b4f334a7a5853642f5a7058397879526b535a74346339334c674738374f6e454c464b646f59394c4b574f6e304e42465538324d716a4a7543665a31464e68494d396779366d77395132497a6571707337436e345341334c707164776b6f70646b787470796f554844723864387443623171676a6b366532304d4a54416b373336367833424364514238767650706b6265464b762b713533544736514e5671326f6b704b5170637a4e4b615a384e446c786252343155504a776f6b774a6545522f635a6f4e31674d7175434e42302f4f4a6d594e522f5676336e727748786a68764144596161516651454e6b30656e4834314c486d6c7033503554427261376e537a334a6f585230466343594b6c482f39706e2f30315a693349556462423264504b5932314b706c6c5355762f414845536962394a37756f52596d69684348724c526b42744e2f7868717253395878484d4c4161556753714d36696952636e4d305a4b4b3035775a6a36356d39514f654338346758386d61305775583868714363506e6452395950714e4d32686a666b624475682f46783130547833394b4a613835735457534f416558554c30623949412f6b6c2f4a587a6a6d4566777a66454a5447304672584d5937774766565a476e32393163674c594f3241637649314d62527a4669756f55765361552f4e444e4a643375535270556d6f4f324477585554424f4c494743495766562b596b55387841596161356772716d6e5843685038414b39664d6f6d4e6f4a62693070654f39692f73424c596c53714249474c6e427052434c617443726b5343444f63477576756971364645725a2f6a4b464d6d6633423532555a6c50324f504a44762f686d64432b634768674b42746e68425a567236456b34414e7472354f54665a6b6b2f6a7a67706f714b794b7030645366686f75756e414745536e7946533369464f59466152426e324f6f6d7a77727075427138757a51695a7158636e707a2f745436485a75636a426b37724e4b4c4e7354416448376c7064374542316752695355416e56707730757658544c384d71754376497530653035302b616f72737a6638417371714a686a4c474a49306746616569376b774f2b4835654f58474943646a41794846593465783948507a666c6f4a716c32355932744b464b6f336c5974705330646a46337864564170494c3152467867795a6441365674615a385256766a3168536b7244376251544a644855703931465539626f61712b335a43502f4a33792f4b49793830684a396e666b562f38415439516d566e2b787a627a77342b41492f77416938365a61706f70757939376f3530763738673242377332546a4b66777a356568785038414a7237734c314676662b343365795a70324f465543584e6b466f37504976707a5838386b53327445453232457444395262767130617a686735436752734d68712b75735a65396e64503962534434304f6d2b62323135504c37423833575a516457663376793361595756647a7249474479477a4f6d3149367372744d32616846365a4354504f64482b6b3354544e2b794b6f4f667575776c4546566d6e7a6e414c6d626241765a6e4c51537031455a4e5034327a35434d4d7275794f577232724a382f5a3658523951677a416d7059343839547542614a33637875696d76354c7569787871693769786d654f79304c49344b71475437564a73572f506f45716b2b34476e414534657733545563376d43434c624f5a7a726338305161666b437737704263444f52444f35756c79363035515a39654f6469516c46374f4b3937563030457a2f6150794c6e6a32664d66766d57775a4a79557a5974304f366a654644717964377136303356702b7869376b717a2b75485a37434d54637a6e4f484e7a68752b465a4e6d674d575756777339737345624a54646f4c4b61633948345436486b55767946586f6a48324d5a525a4f7469546639655a77557a665a7139346742675230436f64516a746b66554d705a526f796a6b3539553638346f587a71552f4d755a435a5a74794c485a35587353317745482f5a49696348312f77437255375544483457676c62644346434b5a30677937674c716c72367a4e574f666f56616c716d4d365570766c2b55666e6170494b4b6b6d6b7252354f73716a4c3752556757623969425768496a51375a59356d666e304f5454616e526d75744e75774b71474f314e686c6a7145696e69766651637867594e53384d706554514a546f30537355736b3575685734583930452b355531546178706d65346779563879696a4a7252734c363665664367317041524d506973714844527a4f65327a5131304a744e32704f6378683347454b41315263714c324b754c704d7a334748617661763768476d795967654a547874506d50734334776c6b2b6253746638692f73794d30653343684845573046564d7a727170462b376a6c7a716b613668496b7a4b2b744b61557539376f4266487a53776d4554684f5a6263325939552b587948335050376a4b4b41437150347549726644614c2f41496b4c597043446d544d6767426971356d637a6b46357a3658366f30612f6d666e38316f36436f526f7355725262554861366f6b4641507875526c736c4755314570702b7730756e466652664e41614d4b376670544d6649526b7a55533063665a4d433737574d6c536e6b64755650503032527371547176367a345a682b7237374f4149546351627035416259773639573379434d374a666248735a30554f574f53676e4c4c5053595a67392f6a43347867556146414c5a4d422f395436332f7741647a487245484e73794555506e616263397131566d464f695857543967764a61662b6e636e3453686c587a5055624141482b38366664504f626a70564f416e4475714c694e536a722b7230714946664f6e744d452f5a45435037486a78735554726e437657464e4d716a4f6b674d6a64574b7a554672634f5875674e6476457758756a52646b556659684c5641376635617961617463655a4c71354d6d6c4535692b736e47585531507376496d6d6c337a4e702b794c574a636931766d4e526655583865555762316e6b6e69715970644b6e6d394976434b79764f6e71537559624a70325a453564597862693074416b55645638795474704942443354416e534e544d596d6344546679546e6d6667743836504a664231545279342b68785653735845794f4f566351384d70646d4f79366449353637474339677055532f6d6362766842645952367845543262395135466e644f6a49563864767630736e514761306f5854367339655a48516e5371646779772f597a38306d46434b754279626d662f4d4c4941576f46635651435735625a6464484d2b444556714b6f7451764d3865566b7a37314e41314a307054794e4a636659394954386654425a307638417469704f53364d31566c6f547a3067433150444c4733632b334b7164314763716e4c444858645a55433571463061564931567a3965712f54755a637736613342325038416a357172784d36355a6e616275587a3643582b6e76726e36692b4239526d2b643532687234716b3456353773552f4e6679505079473574586b617152736b624c4e75572f616c7347616b6b422f7742767948334e6449624145453169597a55644766477656487858565571396263646e386756553943626c507063766f3257496878362b5479693676636239427871556c2f546d4350725446643448516546717a4d356952626556664e737a72305546704a677371533947444c4e6e76484d713679666b5646576249776d466e76645671653956506668467268426c446b436d6c744c397151385179345a494f6a7348522f4a6c475475614e5956725872657a617a2f724d45394276484a627253324535432b7442367157776d4c2b6c37427150316d33566f736843335151534a616e335a6934334a3364434a37666a4f4b6e3536616d38537a6f6c51745a50436752543759327a504d7742387a5759366862526e424b6c4776536e634e365651364b795371757935397250354d30646965687264443543706e49663337546f636c4d777a4e37573371594833366161576536744e724b724e515753716e7353557a36767134644c4a7868624f3834306a506e6c65413961326d684b514f6c74617a636c494a5369714a6332595862632b4e6570774e4f4a6a48314b32474979735033774d6e5a734567626a6830706574616f6c4a6161536477335664476b77617a68455a7058784f70715479594b62496f6c736845504832342b6554652f4556304d386631685451365650506158754b414244324d61583167785254646c4b366e542b5a696c775a395176317248366e4855436248624b666d305763545263696f6e504e63744d48773850717669756a51356c594f4c52477975684a6679744a3951355334356772466b724d47756f2f746734595934703532522f77436642453347372f41315a2f7975635641454f31562b78644f61706967796a7a714f51393672575a557566737535526e323943726873644e3872415975626e793057574a6e4e6269446876426d6a78355a436b3750334463387178355038613039716e444e3048784e5a7a6e7768744438636348626574636e324335774135507644335733323851433556466155302f4668524e38436d6647424a6f6c644c2b366f41614f68785365624e52796a3549484f3849536342786774632f78746b374847732b594c74572f3473375579474e552f336f4e4d642f66734d6f75304a645369316b543875666f354c6a78303653472f5952796752534b48417237416770584765626f416453366b6f4a6679495630647637736b74726448546d666c4b6a7556526d357849534a4c2b4e646b37666b557033386b464d665059326e396337754379327253374646675776646c46486d376d71336c5930597064484e5133462b77663178584b6339446c663671564143552b3937707a724e31484f426f61484d2f6c6f4a3035436f72716b2b534a314354712b494b38566c6956703751517a32385a6534426b57676d64624e33356f3230724d4374737434427a52593954547279535669486e624f72477064372b397a31305264796363596f2b574d655572496671754a3443687a626765633838784633353178333832517479513532456d33694b4f466f5a30376c30365838532f4f61326566692f65597976345842544c4b7435494e524e582f315a456d34484136416b754b54554a46534679736c795a2f316d5a7869625a746233664d39534835656859336d436b6977382b494162524f7574514b4d78464d2f59715158465657637276777a314f453349526b534b4b676b577a505a4f76366d6a50733753786e476a3349592b7071304a4f654e49396d614451574538625435686c583278744c31444956557941344e746b4547636d2b34492b7270567742304679737a3354335959676965634a2f34306765716a2f7668503971424c41623863696278503731442b304d79474b6e304f68646f50514d30386d63656e756963617a2f3353384833534b5545794a774e5577674e41415a7443454a395451307557746449636c4a7367374c4344476c6533506e67664e6c32644e6c6e475a63776363495465304d717051456e674e465538657a356858516d6e306376492b6570694932747636703937616d6a6d77546c52326157486c476778565550456c6f7a65363056414178676249776e2b622b7070326f4175583231774f70707053753748785764566b55576936636d5a6c5550662b72646b70397a474d5773564c2f6142714d50714b58577478724e6c526650674871563232514d66594a3267724e4352504e2b716d6264376370647638626b4f3062346c3962564c3272706462556c616b7334734f54475a2f6241453136544d43784b34474c61487a3047366b3439565833466a5453536d6370474e75686e56364266503941433069417a557a6f4d39356d48322f61494e412f344c35544d526377664e745938763537572f52324e476c6275442f455879314e6a76657a6b367034356e444373445a33356d6b483736616e394d5036724d636378316754327a774c784e644e67683564737243696a356571786a35386b6337796e75364534782b397a4674584b73656770686539554267452f42636650365a742b483769463666707236614e4e67576555614e484e596e33545630386e71457553304f7561775a616b31392b71796569626e784c4434666d53424b55426437304a6d5a7a793969664d56586f2b6d7670654930564e3952395769713566546f48357364452f636c342f58426b71353138706c4c6d665174492f49302f645031335548377a6c6f5333572f4248322f734b6b3176536230597271796e77656336587a706579703355346d6c57587558516c2b677975504c7a31647a6271796350434e4b35557444484a774b61796e733561567662485a36657534565a762b6c506f736d793237756e566171665877616b6164655071704a57746d4f6e576c677736387a7133597135395364617a46702f5544336c4f3150526a42714c576e70475255486c66706c36583647586d534c32387a54464b585a6e6249594d6e5642613457556131307978722f41484f36476650586e3942717665314c63657946555a67372f5670457a4d63597849303638763841783978746c304c6457564b425249697a574b504f6e51615835704d52586c4b6746614837452f5730624346564a58594b34357158643462546f6f707646706a6f4e56504d637a30573861386c664e35663433566f354b383250366c386542594d64644e4d31486b636274644b5a414f66354e4a636250317a3354433376386c4f4a58652b314e346d396f346434702f664430526e47554e444774696c696d577248446e6a486b734c56634a783532664a5a72734a76484556476f5257454a64305136397a4353417170393936372b50365a454b312f48765265517331456d66766a2b6c30622b736c50692b786c38597957655537716b32545139346e327a334c53544a516f4b494855566e5136537564316378612f77426635694e375764364d646a6133626a3869624c41454e4f68546c5265525935315350744a61317345394a316568485847763270497057437676326a344848554c6363784e7034524f51507a552b68614476317a38543138326c6b6c336b4d30696f3652325567754d615a47495a5574764d32354d5975663372536f3648387238625732424d6241742b303959456671522b4e6d59724c6c487876516e354767633537436264746172343257585a6f4d2f61574e6a6e79314d6c6a57326b525870525535556570594c546d524c782b303959446350472f514b324b716f51704f6e6563306f4e47504a316f744b4d356e4443646258755a6e794d53704d4730764f3467366b705a705a733030623030702b7247622b663867507a3850304e7977556d74564f4d6f704b6334644c75665737566b72645755554f6d2f4b6b4a5336597a646468324e3753786f6e6f756f6859595447636e39542b30395941483648343671596a48303642336252677861497264614c524e386474646573614d6d2f597279794366514a6138654e67566c4d507958696d63345a3355716a6674505742396e772f514851633733772b533536376135617479503664626e4f4e354644336379353566334f5879614563795246326a483851346e79746d4d4571706d66745057414d304a2f786f54646f315a4e766b6e632f64614d56612b3564775944325a47785946734172546833732b6b376b2f6a70714a64494d2b4d7149525930554a6a4e2b30395948334e7a665148766b2b666f4c2f41504a396a556254526d36332f6a336a7472636e4d356e4669346a33536638416c4f636642744e4d766b44484b5379776b72534c5a2b534b62544d4c4f706a41514758304469372f414339474e35586d586c7338797774326358744e6c66783266642b7a59564b2f3158734d536b6e4b396e7971637746464a38616571722f707a394249732f4f2f484361367a782b326e7a5075564468444c705372774e556f4e694747396e5343753270794a394b326e4e526839555970434f395155334e5341534d64516e6631416d7566386258522f445957336930526348545a5a586b494e62664874577062587946706c764b716e4a32484f517831636d42567946752b59515354547066745057417774384f2f485058714758682b62397a73484b6b7856366a5047746c4f52446d4e56696e4761344d76505a4e5a437a516a54536678424d6c714141676449376f492f71596e556a75396651426448776630442f6552342f7071387a547948612b73724b2f686272632f6277357258574a3271416d6c73376b7a706c484c597a356d303876544d366b544f6e2f61394533363849456830632f3866583852593341382b6c6c6e50564576484f654431794f564d4b36452b522f61304d613533575373737878363369577a456c4e377546396c6f4d49342f61657342456644665252536231693379504e356e5079644c4f715a6b3747316e5a74476773536f4733795532554d646c7658705958534e6331622f414b6d6f766a56696d6e6f646e4e2f43505831475657583643467877615864764f4f4b76492f6b3436764536463765384c754a752b7576526648376f376e4d3146746d71476637656b696d734169584d3272526648375431674b4e38652f4866557a487a61313239486b4e73706c35774d76794250327475444f6c69304e686c6a57526f316f574c576b383630496f36615832657a71672b7a594150326e7241423938622f4735413763362f49764973524f684e6e2f5374312f47506c70754365506476793433616645783041365a326550667164656442304f5653332f7371354d2b63333849396655433134663437614e63395378386b592f78376d593668756434357579555a793764573666577874444c704f434f584a58645250544b6c4e4c6e6b4d796d45537271544157622b45657671485935336f744c486b36314f747051516657706a47746d5a354a7a4b6d7a632b534d614c56352b426e2f4467724c46595a54336a54317230303843655361452b6b45382f6c39784a7647634c3073586e4a356d62326a704d794d356c4d71337232593473524a624f4b44644b683342597773757a2b446f3472342f3437347931472f4f436b6d5248457a6650434f4139534839733330442f414248395376546172797231446f6a5a354f4e5632564e6c326168347450314a4735622b5756706c7135525132563142454c7573634c4937456e5462582b7a3676673137366b5778586f4f72325038416a542b4747616e3450486e654d6a6e3171706f737a3137474a524b347443644f5a6136794f684a684b54436e6e456761484f7148397254785365476e7556377a4e7254573174764c74335634394f5078655054727744616a38566677746957656e517a78324434326f613235506b4751484f76575547684653786e524e493269576243354c766a4277634d6d66735764412f3652653878615a747a66773966584c2f753849724930352b4b333462636d4f426a66456c712b476b56797a335a4b3335373155464a6271386f5553796e7336552f734a33656362307076642b2f65423837472b2b4d7a756d337939666c2f336557514b3738522f7741484c3832645250384144353438356654352f774374794b6e536a55793069612f5a6f2b2f35766e38586c6c2b546a5361304a544251476d503451584d32314969737862644e7531474f6e47332b72756e362b56672f622b4a6e3456534532426c506951756a5a704d72792b3675584d784236486669727662484651707336766e48374457394c367775396a2b384676776d45546655786d4f373158312f75444550784b2f43364732696c32336c2f6359537358706c3546455057387530563378496e4e4b782b31567a5579307a52384c726d7a4642395a583748767435626465615a393574747834625a384f573263577278366636666835716847483856667777475069632b3342484f78374d79787563726467706c7a617561466a5a6d71566f4654384c476143324430552f2b2f38416a316f455039594a576d3838754c63317679396e2f77445866394e7678546173414f33385566777363326a4a58354f487a4a62532f7742672b5675714b4f6b526e58537a6a456b4e4261484a70523538626e6b7059527255496343666967627069632b3833562b55396e4f336c37504848487534642b376c442b66385250776f674d6335646d4c4a386f56696563653345364e6a74646d5756524e79394262415470502b475661794759474852595a4372726e6441346939706e6a66627a6463546a627a6333446a39763841546743432f457238454a6145716652676937736a315a38312b38777861747a6c76705155643566485651626d4348426348794e547055516b4438372f414b597a463954724e2f743566543557342b64636a4c6e346f2f6730624939442f7741697854717a7746737a6a386c676c454f35394d375575646e4c596c6250396d556e355073547451373644574c442f486e78524e373434326e36523563493631373930542b487579463676784d2f42704c536f35725a4d64416e70577171563556304f6f302b646e59312f654b71575652537a6c437a34505a3851706a4277414c4a324f2f715a74655972692b37643134573565762f4142326648386f2f642f457a38476c4d485862735a42717a595237537a5438776e736a51755173396b64544a467357754f6a6e2f414b57705676384177547541416649627a4d755276764d39722f6238573370332f46772f33547444716a384d2f77414d615a464e70314d5a75646c35374b4a766e38696b426d6370484a576b396567356e4853735a557556682f7069675034514432664548744b497665656b3750384155446a5078592f45483677524473596f465a4456536b34764b754c71484836433270727a3657574e646e726d5135664a3254755343666d4432384677547542463734724d63664c4871764e2f2b76714b4e2f465838524e4c512f612f4938734c4f4a644b3561664a4d376761504143664764566167684c6c6a41344d6372712b4142705837514e6f734a625376575a6d323264546257506978624766682f3766693573634e334c6e6849713338557677336b6e723456486a30793655586e53695861436546744536477a465547646e334c523879773458752f537939685464442f5637414145546d6d366238324c634d664c46632b65366262753748664d6a4c512f456a385074655a634a73776d67695a387a4a352f4b596b305151324766627550485073533961366953514e48684c476e7636416739344a36756b587645317a623538762f6a342f7743722f543272487848347366686963375a46582b4c30424e3856756334764b4d33547178546c6f34316c36394b7035646a4974686c37514c76654775752b6a32474c6565784e72586e6a7a547538496a4f37787a504c69767852797a77362b5975503473666965314a7571326f62586a306f71373958794b53323442752f77696e61377441477478446f4c397673482f634637524d544639484778467035496d3233643563493758612f30783072504c50346f32794e726678662f455476583948563865797a5a4e7964503866354c4c4d6b4b57793351534c52794b6f654f54384e476b70436a4a78424f626c4b4d503841416772763159396638684366385266777a475264304438763655394c4e524e4c664937485478484e50566b6732567a74415268647a37416c77462b78535153445a31543837796a756c3752455632366c7262757359786a772b65666e327547366530463166692f2b48716b545a612f494d55454b2b4a6f704879534a576977627759616d6c664e514a5558664a61767364482b5a7a724e687a4633704e642f55546159347a7162702f4c452b66347546657a585061727a6375646f46392f452f384d786e6239375768666d30643764384f6c76354e756334666c585a4e3265546b70494c5044347935784971364974647746416b656d4278533137546a64377636543939756266375a34342b64546a782f63382f486e38512f545877754b2f30333236664a4e5a334b34365042386279476a66376d344a3461634f796846676c577956684a30686f5a4e31716e337367702b745a49394a6b48527058764e38566e68347a58483233447a656551733941736254656c586b6e6d696b664a626a72314e5a6e6b325648697963357156334e797032356f646e75376f4451704371537a5a796c79672b797a32647363505a472f7638415838673044432f47374d6d72315038417a587a7965374968365977317a36386b6d334c70354754336c38464543364c7338714e623532634f59754341624549474b564d6a65444e2f43505831447a6b7634392b4e7554735a667152354762334a64446d4d5450632f63554547504a6d6257667936665136396443495757556647693946696d42534a53302b796e374d3838646168796a7a4438645a4a6870322f566e51437170314e756b76362b75433157765a55794c61666b30664f4e6c6a3761466d6f496e6c585734783478796e5a774f4b49692f6458487948336532667833745633545836782b59616c6b6d714d5045646635547a427073366a517055796f6f383059726e4f733242756f366b357570564e4e574649414d314638566938644b354437522f2b7475686f56697439582f4b724a305a32566b6e69527a62706a41356d43754f3865646b6f66553661744f7855376e753462497a6d57394d6a322f43354b4e2f5861454962767876686a7966494239536475576e526652376f7648706475444d67314e496c7a30327230704b49456e515330724e43536e454b43427a754e545a4d5a7a7a7a394e6f54512f3841484a5735443548333165386837597654673170725047363756614b656f5633483551434a4e5a6c6d6c4b3071374f2f516e734b6348702b70777a5742302f302f615a7874342b764d5432377a503862325a7178796657506573766d424f68505075312b62736331727152356f77572b5356616b457852366456574c4f5852544f317a4e55484c4e363068396d754c654566594250702f6a792b4b6131586e6e6c3648564c6f797a3173526e6e4c61736f6d554c794e6f4c67646f646c5774424c4a644d555367543172774d58416f356d4f746d2f68487236684e586d486f313355564e6c6570506b6b534b585353554c746b38716875704e796332533239314e316a4f5a386662506651575a7972736955545838506b3058787364474c597874456f6e307652536a4878745372314e547436544c366662455a3756666b745864466e6b425846694b516c6139426a647031466254483277567a4f4e5361344139302f59323333646e694753362f53434f32634e44316638414d4e616964476a5136757259383976444a5871615371463975306274447369522b4f475754356248734e4b77353876325255632f394d7a2b435035427a48356636493554556c6f65656552627a615235447638416b656a7261755455436d59566a7366723479637a512b52724578765977785331697249653163636f3575437862776a37413956702b6b767964757a2f414650386f7a6f67624944372f4b3948796c6f37634878574d6a61766d64447847446a304c6a6f36354832655533665051526d68784f6e474e74756d50587a416a4a327652625056486c572b71586b7231563432504a6251765a5a44486d365859506d787865714a5a6348536f4c506c74696f4a69584961594252396e2f303136706d74353570714a70465436517a707575483159374c52706142535a62736e6132447072515665392b68797436784c57626c417a736f57432b39312b754a774c4f507443592f6658452b4569324275394630354543762f414a36367332584671477a616e785865556e484948576551532b54574e4f6c7a446e637757564d57314b79715542704253625069594839553538396757486732656b4767484d7a42395739784c74544977734c58304b394771355346756a79354543705945683250387336645a665a443739672f6d6a6d6b595a4f4a625537756b302b3473724d48776a6546794d72386a7450577a704a41326c495435617938724b626f3943375769544e666e73586c30667873346c504f6c43456e54614b756d7862576b694a7a4858543966794675654f7439503474445159507268396972506b374d7a497138336f595436624e464e6c45544a35534e61707a7a4b4e526646756f4d324f39342f516455446a2f716b356e34636651576a675a47424a3966556c3961634f4372587a2f62705077504d6d6c6e55766b685449374f6f6f5448316b72426e6f5970694a79427a615a6d444a52386a78524457637833437a636a77365a427a7754657461644966486b3177547556767749566e7748436b4b6b327644614c2f635a78696c525550412b4a6a446e77716e624e514d5a6e776e376633466f59766a506b7176307a767279495a3775513534756e3373616933504f54532f6b6e7a49432f4649624866634c6f523953687141544d437044657a6b305839567a48344a2f6b4c59794d4463684a4b61505843444d5239546f3172792f4b744f53724a55764f31483078317543703633664775453342554d354350544e435a5a766d2b542b71376f2f424872364366352f69766c5357616b3858726c3438464d3734623367506c4c74436c65666d317a385370326737355163735575576c63366b71344930704a64566c4d7a506b6a4e66772f63587a34586b65647a3148786e726267334a7039396c49523636575553556a4b4956753653467245592f5975506f4d4d6c66544f7a2f66382f442b6371576d7658622b6f7658302b78664e6f6251304e6e7a524f3146664333736d66694d652f693376614e6e4c506b426a527a57646c2b49574b552f3469503267672f615045426e4e6f6d4d56714c2f2b78395359366162526d6a455856306e52333478584f43317036336a506b2f52666f566b50476e30696478334f3858372b2f7744466f74624671557479782b4b32336a6a6a333763397173654e65374e686f463670656157656f486d4a636d376f552b455a61467467584456544d707370324b657a5170534d66654d4a6f783066746a44344252317a474c765979395062784749345277464d514850446936466b2b6d724c694e794f4b684c2b4d5a4d464d546c33396a7a6f4a686f4571697a466938414b5655344f6438536b6b7a6e66614452582f71647649364c4e4f50747332636f386747723754467a6c36304e593351304678754b58356746596451784b615675377a3639482b63784f6e6b41312f4730717430497935432b696b506a55696f7075647a373078736f613841466a325a536954795867666f334f4d4f6b5077704f7070684b724b45565346754c32463350676a426a624f4e7a722f7743477a6339566a41736f66325552725a5446556c74434f314a62305030684c4b50695343674531393036484770512f42704438513379655165313446387a484c4f57657579556b712b755469636a6f6753724f552b785a665a524e387749366c6e78356c7350596f784d495964445351686f453670467439433535665a6b366e5a7271686c685378594539686d704270456e4f576179426963713532786b4e6d645579704758506b70747a5a454a306750743359744376454a6e37612b787a714b462f4d4964554c766a614154695076435263682f6c61644e744442502b4c7a71427a36387a6967546233736b4e557563483132632b4e4d563046714136745065754869512b55522b784f344978687830526445456c6433377a7139504f746643385666784632665354436e6b6d7134743076484f6c48356d4174744577526a4945717047476b4a432b6a2b50726c483649794c672f69574d4c723764447342744f765372626462595a4b2f6b6e796e6d3047763570366a3936444e6f54756a6f4d474d784f536e525255763635555a394d6d4e544e336e4c71775a4e4871645169682b397746314f6f304a51584f5050696132427a4854432b647a484178375536545644744471723736712b5372356b6c5531754d457567696d6d617348754275655050483437484e616c596578326c395930434854446f4658425168524b357a7878744263304f747046523744663552676c525331533878636f777875483636564b2b75357945546675536a367a42366b4630694b7a48506c4c6b73315a54744878392b62322b79476c6e31364949776e6f456b3563763157514377653030544b70307066696e3934666149506a6f36395032616445546f324b4f484f626e4a37336e366a3764342b454979716c5a4b50795535386444314432765561545a756768306652644d414b4632696778706c6b504e79416f4335466b354a717a6e7778704c534f6d4c6d5a5133736d4b2b67637462564b656e3466724a53424f6330336442716565634b6f6c4b626f59624a6c6c53796a4c35526d4b347048657a7247694a71525a386e7773336a7159734f47776f442f7741306637756b425549434455727674576a52304f334c476d6a4d62586f4e68536e737036427966576c725a39644b4d2b5567393465395258703733682f456775683846746433506f564c7936476c76626a7464644e4b393938325174745646664f4e716f2b614e5455727a61304d49414a4a2b787a436f36686e39416c664b3256527879464a327172554342316d667a6d756d4c52347568733544445735356c70396d737237776b384f78774a4141446e586a31774c5a2b653130634d6a523164765a4f6d31747365677a374b357057414b744834513037756e4f736c385966414e53717a6638507a4b6c5678514d423769797171524c51367455315a3163365434387234534a5675587058525a316d70394f785678495864596f56676269544c704537334f6438725342444f46424263594a734e794362505a65514e6a6b764970366d6150796a5250312f7966523072474752705950537054317a4c6d7a4b506f435737432b543631644154797464324b71363477725364634c46354e46613336623850394a48705a363264366e70706e4131736d63485458386f52577a7a6453353962764b46304a6b77394a4e39306c4b78795838556a5566596e54735a396267367931353742517772506845447339677a6455376f57325738427a4d39592f79344957615870313653352b623544356263652f6e616e6d4f726e4967783879697a5773743350473850515a384c703943666939794e443331657744324a766d2b78535352623056302b2b3359476f6448546b565a35463541374d3867327237615637666b586c3946515972514f4b453953696e35644b6e6e6b586c4647354851703839437a2b4a6f4942476143666b5a335470793136774a546e362b727a587032573775735544385845386c304e6a526f3757374838667a71726977394c5675586a7570793336454f616c6a3839587755324e79694b7766737a305a316362655848654974563559394d794b386738767144665a5569716c7347486f7478494675647136472f6d366a706a7a635665674c7159784c5275706f6e70465335726c396b516d64756531786b5242336b506354506665334f67386a413472355a6b654d4e6634337637736e4f57495a6d2b43654a796277485234337965704b6e37756c772b736c63704d30316641623872457a506e5072315562592b6b483433372f713172342b6c354f464748344d356a3757344471592b4b666d5871673435376d684f6c396c484b73307135706d545365796979677571557553614e644c58696b6259343267646366547a302f77444766453837714d624e3130716f69645672304a766a386657484d374c5a424f3261714d546355644e4359365639514c484a58536a3368775259466e4e61307a7736514c5a51436b30544d526e5231513533594f775a363656355a3530444b48464770566c68414256635a517367594476665966764d506d5944687071484b704a5538627873534531534938676a356e496a4754724b7a37564d4655756974624c53584e6e315a3668374f79696d785636666a65594c7339774f6d3864664a6e41734a2f3247626f4d7154514d7337416453377170597267714c725636314f5448644b6450784e616f672b54767534347030674d4c4d4c69364e46536d736b6a3675704a473258517130614b4a334d756c5051644f30737466585a634d6678474965786f56714575664c374a67594974752b2f64775454466232326a4f73544471304270384637683763325a2f4b6e6a3946613874624258306b6d6d66347a4c334b4950724165474f4766684d4f324c6a32757265792f74656b77574f704a7973674a3438335156796534716e457a765846397a6e36494a794e7953622f41454342646a5a5064554b64644d6c4b7a6456516b473875576a4f6e304b716a4836396b2f5845776e56474c545566763559596b4c6a59354d674e6c7a562f703747684b47677633314b6270715a72367961462f582f3673305352724d69617a37584a654a496d746b6a4b6a34656d74526d433932504f70684a44512f77416b6457477937515367495a54746d737a44314a3470744172663544746b2f7741677255526c384944396c2f54503969412b696a326a424870727a3263624d69633747726f724571496f6e47335173376d34346c4f584d76374172487261456d64345054387063486a415173325675713657564f2f614f73706c5559736b4b2b71627145684a545237434359316455713649342f633769784a494a2b46445164326f2b412f3163587948494f376c7556725334734a4e342b39766a796a34554846707559706664324630726b66496d6a36344c452f383736486356772b2f4e2f5152642b6c703163676c6457413951366e5272446e4d6d4b65583357793168387035755335307364444751434c2f41476463327977464a497851514f4279567a766c6d696d3743694b544f742b57716b584f5454565977624a66664e314d374a3942735653796259743378675079743635527931687748755670787143577447655366694d4a656d6d376b555862633665346159623430494347576636704f75563852442f6766456d49786c59332b6759356935586c4869437579644e46576c665963597a773150344c375071754f7445715575535334563961796735685963772b34676441525468394d74443747646f48497432645a4666496d726c2b74323673646c6d6b70557165503066714f304b724b493651714872542b563148742b50345841594e73776847673345504e454d6e517674505842306c74464d55714b4b337273612b4150684b7237397257632b4e79364b5575396f494c355441433178547a7a767546475532555679783244317a726d5a2b676976362b536464382b777871302f567554553055394932734d3146386a71456b734931453246383567586169434c36734b714b7864452b4f61544f564c79327533756733354a7a3048564f4c327a70593337672f746e5741636a516451326f61684e57496e564b6553696452794c44756253554d4878756463567347304b7975637547555249322f7167594b506765716e337a414442374b667145327039614158477a6878777968537a37424d734c69732b6f726945687046792b71554572667341373453414442767a41352f6d4544533269526e32782b69665a73396459712b6546534c7271675a7153796e4b6a51705a494e44656b53543938594f466b30692b6d41513369786b6d63765771616c78737037794f3233583537473666456437716e4c52503174434159374e72734656453143714950304d3463455447652f6c794964354a3553764c716a6f43707836673638713755346e4a6152314b5a584a73526a67424f6f633672345a56383550442b2f6b2b796a7241623131745a337254766d42444561326c6f3155766c30703948764f66646448724d72783253364b634f6a6230563235746c566f4f2b326b7131646255417355334b4353506b7a544e7364754659386761777343624b636d682b7a717331506f574b6e6c7a715a71632b70326a525264634551396f52387a73786c79336a52492f362f7378446e6677444d5157746262383545397438597a6b355a78324b536375596838724e757a724b356349786f78304678384951316f586d2f4a6f576639426936434279615a666e3474536a4f74623930794a426e6847354e455330466f73624645752f717551752b50726c4c4f334d737a744279715959564f30617557386a6e443247464d31696f78584d627133375568724e4a6d7a4972726d354e6a7834362f306d66766561464a4b66442f4c5461527a76782f7254304b6464524a3066343554754f3566436736485541484b673076586558522f6c39576c4c4b737a5036616b564d6c7a4c71696e5a5a6d77612f5843464c45396f4c51575a6336696669733277442b7437444b63422b634f7050462f493537733832542b4f63586c4b372f4f497037507a4275566d6c484f4f55686b724835385a463752532f7743475032646161577a6f4656755870392f5863452b304664627951303474592f49564d494431426b536b356b634e65786e39696a5a4c395559374245412f584c4b584a4d2b4f724f5a58326167335a4b4f71436b64784f4c696f3747657a4354345157396a46752f656650533857706c755a56396448746f7157526c396a362f62433661676450495a54383079596d584f475532464a497a6b506a56594b687955777a584b307669464e77635863632b686447686e42436c503176682b4e6e416e4f6750304f732f43744e444a375a57547772314c353471346d784a35486c576c6d774d49693579574e70566370424c336b736e5a5879664e7a336472354d566d597a414b6e5a43646b4b625a6241505661645a324e513665793653506c4751706a6b774437632b467366334450392f344b412b476461577a694c4947644c756f2b457441394f5452392b625270477a6f507a4f77337761556d6c6e72703678537673302f526f585554532f58766d424a2f546d343136512b706432583754726b53674c4b4b564f46723478346850623969524d5677524f4c684c6c576c48525477774d657236314a7271416d4544674d2f376a6d5461756831746232747a306f5937693539434a6d71744966354f635135756736793655557147677a6e576b77515254674833414b6b764e453531313030706d74624a6f4b42795a4a56366b37785a6b74532b7a4653384d32565243546146705a43794e587a66483779525372674978534e5071356d7062586c6a773438717a4c326266757366784c74484d76347856535666493263556a5237676e4569797144436a70703474594f72417a6c5374576d50376c76526d69306661704e30394a53534d4f5857376f54736d6e4b70546f564a363966307a37544e2f7741642b5133447746576f682b33394a656a575334684730753369316a44306f48623058453959686e326f5744476c792f314b6e76533969554a4d316577497752566e444d346f585845356a56557a4d7a364b335055544f5575585a48556b6d4d2b39376f3530714967696c2f6348736e49484637484a423738664a6d33565757386c307165797732504b6c744255785074592b70755935306243714674546c4e44363555653438723476596c2f456a2f51667163344e427252617147526851432b34702b7a5371575371453170417447715759456663595475732f667a645363622f414a434d4a2b484d4354314d6a792b756f6b6a726b56525631737a56796754753239756e67444b715a617479624a572f7945363072345449775439695954594c654d42326847656e517a6536492f7553696a6d6873532f537458334b374736756969564e597139727339365752796e4e31784c6361534b666843514741664d394f6763382f633444565050437949315577786856774a482f41474c7170737a506d4c367056706e4e5075656a362f66754f4250505a5a375342517058685770444d7442685936322b36784f554d7932544c766c65723637353644434e62506d5948574f343277322f4d504765304f30306733713271636f445339584572427a4d394f685248396a4a2b6c5567766e6c62506447734e51694b78334667746e532b5a7a554855776a4d4442727974743656616d7446704a6b542f46485a4b6d5736503439416c5755786143797a4d384b6e724771697267642b59334c4f5965396d37635832574135356f5549717a775a4c3979586d6762676f5849336c4c61707466424f6f4a3556554e4d766b4c53577375477a6e3266737a6851796c58736d364835693474475a725739436736757063776943536c584737436e6367315935346269597a3463385a52363455384e616f30302f4b2f77445243495257382f354f476569644d6f4b6d34364e326b682f502f5335687970654e6b4f506b2f7741684547664851773250452b2f47363569484532754b7667616a666c4a524c39487837795471354f5a646c616f517564574f4638493335634b56562f7a3774704e6b4b77587436365841676a59364c35334c366b76674a576c4a345441316a3845626e4e387938516b6434344567783646666a7a506156726c77426e32587a4e51716965706243324b3132516f3631744b6b4f5037316b59453476384c32365438687544724f75726f6d367661314e462b65364c5635586e2f4b55364643327a557831367a48366b787875747a376832766846356d446f36534550726d6641696e5a6744646679616a564f6a782f4a7273487032743374546b374b4932396939326c32524278794650327069343361714b4578552b2f2f77424e452f32495431554d6259726d514e385478306b50573036554756584a4c4a56564d5364767336516e43353148307036394975446b7364704534524254556763702f4e487854754d544d7a45526d51386c666b35392b67714e69712b3346315239474c5730664a756c47336165374d6f4b5966727a35745657544b7052634e4e4c78437750654877734d5a417077737a7956565a303946334b68712f6a6d6f68624e457847666d553576493231726e4859716e2b6973476d5169336f7a4b70636d645542476b496258512b7953586b3733433350687530573058363934732b737363422b666e57574f59376e77704777617a625a303164644159716f4344333072426a6d3874676b70786d4c6b6f6a63484f2f79513567555172346d663741545a7a5048616f324d57585a5a30676a6f382b4f695035356a5a3946787a684f6c536879365a74456d684a4e45453057697657734c6c6e4b375947484b30625956396e3250486157523473346e4831624b55482f497a69436f794e774b503073525430464d71337879786271443470612f34624645475a6a4d796270463265564e33757a746a53436367644d6f333633324e45425945345741786c57394f446d57367a646865566972546b7668707863616a70665752386d584870572f587052446d386e5a4144352b4b423837495039414c6d4c684d4349613338577a4d737a367a376f42746d64516e5446457a4e6976305179773051716b4b456130365341687951595053375471747a5449364a725642522f5146664476424d6e4677693253304e61726171437a4a74524f4f38415a5a62375631476a4e656a444a757350467357585663636b4a364567524247343067694e30626f7143386d486b4a59497374727a6f396d4777314a527133576155614a70537974396c6165793962704a664b6e4c36327268544a2b476b794f6637696554746b43453569642f79504a6f69396b7852756842636242526d31616f737464506462326c36374a2f34746366384148753738366c57576e2b2f67442f754f57324f4659386f4637592b4a4668716b4f4c73364e64576573307479566931555276692b49666873363269543758565370367859485349707a52425967674944626e61326545435a5a39574d6e6b736c556e3666486e53356a656f642f4a397a6c5855797733737672443372305750755975756c56445059487638413037716e556d6c45632f6e3977443273673337632f774246396c634e45694c506d796e6164345a72355a617339727037683978786b72345745687169363579547055326c4c7145392f7139657a783643796978736d4365427a6542544a626d4d5678646a5632492b317a4471666d4a5a425a6e744666315071304953447033476b65664a2b356c6b316273676e72546c49686b6570664d68443751436937364446416b394b566146787a4f7557796b76314e39666e5062373665336775664e53594b6f6d6141392b34335132573878615856325852723173317552745a384c364d4a7934327637705636755454506f505179374a415771352b32665a4e67506573752f48614b326e6a6752656c65674570737a344c394b48723253382f6a6f56737073725a4c56707a38726d717a367a5377434844567858445a372b54657753706c6d46713668356e727a4a6b4e75745663554a6e336b6e75356e2f414353783656544f516e343358333658796b517054562b6b6a7a4f4644537059623246507762583755683172314c4f594b50473574754b43796456756d55785249723436736c7957397379324f45786369464a505931446c2f7743774768333374536b7059726a504e3041744a6771704236534878497a707450495331476c72575255586a437436705a7161664866715a346c6e7a7a2f426e7537377a645a396c3376764e507a7a667453466462755a4e586c3970624e6d6f374e30745459714d37737733366e4c635949727852676a7a51337663464332732b496a49306d4633793948396d72753437512b3657764937534b47626f7938666c55634a664c58543179364e746c345a376c5544306958394d73316e7553546a3738502b6f506d396a7636636e6e3967567a614d6c552f65614e31502b734939474b4b76524b334f4a6e5675664c7833454c392f6c444676584b436a2b78516d6b6e467852746370706e4d357a4f334f50494f3964544832612f336b72356a55545a553149726e715a4c6e545a6577774556536933594a69334637684c346e45434f307a4259342b4c534b76366f495a3352716e7a796f7874616d6d625234632f314162307443713353355944454e6f6c6f654774556b636b5361716f456b34695035766631446c6c625a627744766a7161717a665857356d632f412f6573365a447242795679496e64375a4b6f334f54715a6638656d6f467a7831664f626e64346b65554850374b6a39572b56744b4b3878554943472f42456270745848565870542f4776516a32744f316d30584b4e5239532f67537a67415a684b48444b6341514267392b777a4f51334b51796a7472437a654e34764c2b3241315731704c7459486d664b7a5971556d7a4c624d452f79324f644d62674e4b56706d4545724c586b34374c73796249586b5a543538544d70416468784f306a75445054586633612b784f4b4c4a324c5a522f7046504e68366178397254596475547a2b7769515a456b7134415a467865584e593570614656655248502f366c636d6a547067706149746a5768784d4f415135306f585a7444763841364856756c74377a7945716771736e6d47684d4e527938306e45684c754a5531314c7773736a343565356d716f587871574749634765316a4b545655787a3570784d61636254356a34726b30726f6b4a6f4379544f735764616735373265776730697378395369764a345a5a77314379684c32634d507352685333346e4c4557774a4c6c7756354473724e4669714d6a7645583252686c73304f3847662b535757704b7161686a352f653530637775555a732b57626a652f394e626b6b6e6a783851343867314e4b6a444f66456c726c615750483075556c55453179564a4b6e4a586b4d4f644c364b7671724a62484e533070697034354b5032416e524e635a6a50516137422f4632634a4e456d69784d76316e6f634674456c37357266646f716d6b764f7076636e5356562f486c315848556d6c48756e53615356486d6a727a2b583345687272793464654c374438314e3143443571672b7945716e5158716f3264484d6b63396648564c352f4870564d66472f436c5232553047587858477577595a6a63616469437a7577534d6b4e712b624655506a50567a53724a633230325636557651724458346c7246502f414e667632614264315076366a2f4e316566792b346e75644453335659563337347771457a31305335747a6675444e717237485936714a66464f7a61504851734869424f53594b62666b536b426230517a2b44362f6f442b6c78507368717a72677961556355366969555a5259686e756c7a4f482f48535a616f312f4e4a396161325434702b546e374a75754277742b476f6f6279314e4f7670736e416531747a6b702b783437786b4a7251322b464f304256723551394655424d6f4b6b6b445a4b555a7a4f43476c4d396c50317471646d412f7a4f696150482f7673574e79724b7375716c374858383063794c75542f4b46587178564b524855364c446e347a337967633759316f55795a516e4b32776d4753375142635a64685a72496a666e53352f33592b6e596949754a584d47686b51304c62486e6c7151724648462b395148472b5a7a754537352f367a314f345041794e454a6574796f352b3045714959456131544f5236626339383875685644443363446a4d32676a496573464c503938695a314b414f68386d593154386b5a7671386d70705450446f387971443070466a724663502f7144333236642b6a34316d584a356b6c33785a506b43324451704b427270596873314e426a396a654d596a4851446f6b746f716c5470633035786d5a456b702b624f492b35755a49354e302b4a56485979696c6864584c6775365a364f6471324f702b7336546a356c6d6d5250636e496d3174796439576a342f30446a45717367667357794e3339623675704872366b366443705a55732b316a3843663456334d4a4b67416d6b43577543342b464474776962436666506c4f77367a586c4a617a5155454c3646384e394c473858637957662b585733397a7144342f7742302f57616b324f6f7934557435534b5839542b584446303769366b4e4f7947713368556d6a744533386c4c53725a6e74747136783345356f697752616c786d566445366b7053546754714b4e78697330676e525471414555394737623361314b5a4c58453173365a4567436d5848386c556d614a4f552b5a4471506973594a48495a7574514671786d576272665870784d5366457554654e6c4f71554743506a454474437974685154323634304f5953614c6d315153516450686170634f673074476638416f4c67776b7272766a356d4331656769665430423073324d536d6f54354b4f585a465a6e6b3075636f537647733070766456535a38706a4e70554a6253414d434137754f4130414c44742f6c494f34366f6b473244677a61654d4e556d4248703831634f754b64674d4b55415a52316a316d6b7171416c39394e687845784d5a67546e4972587251304f6c3162715a3330305a6d48546c49777369433555396b39645234576678696b756e58485635416459652b385745436d64735853376a7531744f323054346779636a705a713166754c795155767a73367871736d4b79524c5946315a64316b4654345675334a7968716361766d703463335470564b317a2b665a586348627255335a4e4a6835466c784d5a6664507a694e5933496a56496d485635587a4f564f4a4655694f346e55577239303650754f6377514d796f586e2b383965414a5247706b5771495934546f634574433570556c6f5a6976354f50515a336c454757576576334d375253715a3443776b706a706457637a2f6e63623935363841492b664f703578664f7567626270784765646871546f5a4b6f31386c7a4a695052756e507272464444387451767054327772444234392f5a4347676b63307836554845797356473554435a6f55354e66666947666b7048592f3745516d4978305334704579747936545548315977497146644d4d657a6278774851757a614c357a724b4f7a583779432f4f6b636a4a4f7466575578684a5a6c7a674c67573176787a2b7871667070374e49437a5534304d4a6c525046593955306233327753474838665a6d467175766f56497a767775696e4657636f6d755751314f596e357539587731755332706136316b705147616c465432796461753647794b58554132596935484c6e6f47696862486c6c3054304c7135724a6e50337972497864395950764c57366a3241337a493574644d3458664d717556424d376e3648452b4d4e6c7135535030623932474851593264583033463964374f4253616962544d48512b4d2f774367433763616c69444c48314f635079707939463837505a33493070364a6c3661382f4e6c617651532f504531566d452f56427750304963616b674d43537059657a353362426b55552b59526d6835307864697555694e434564464d4d2f7a53685044715467756f6c6534445331744c6c7664785152515975787a39646b707252712f576b3866533475324b467650625a45367a496e6c534b62746163763962707567365a7a6f772b7038726e5845514377396b6c664f4b52616d61687936474e353878364630656f56575832346552554b5051713436356871466e532f56686b4c4775345966304446703658487275584f47756473747557794f2b616a734f74467142535769546d4534757877684c4f4e624f4d537168513073343153505933706849537a30385642616c5357526d6f497830356e534771686a794b6c504a364347644e79593179772b796e6e58542b384872347236386a545345493269577a74756f6c6b326e706348444c4d515a743542736c484964485a566b75486e5675584f6d6f6d732b4a492f6f4577734258614442326e35507639787068347236352b4637327848343233566e38533070394c486a794a4b48495a4e70557064636961622f7957725751744e555443426a6875537654726364427a653959746e445845347a6a674c354e6d64337839636475745459796e364d7a3575492b59354b624a6d61334d34782b34432b326341563865384554547876704946476c342f744e506a2b6e3667717032316a45746c4f717a545471347a4a5a394f7156532f6e745648706273707035594c4c47525444584f6f476e535a712b595631696b30714e546c74353443556a2b4e564b326e3473346f64562f6b3966506335394964354e6d3769656f6f37395a7567364b704e544745594b6851656b3466722f48775571734a5038416545484379695558354f716d4b5a39364f5351785a3670763561584b34324d30394a5762306c30574d6131543242665438504b365a515a3051786f306d5a4845366f6a57715a4768324e2f5a724b30496563366f347271434a7156664a724274546b456f683076616f7849416b574669755a347a79654866362b594a4c71747a34724a6c527670586c356356764a5775737961786c63637231617934485a72614a35353079336c337653494143414d304770564f39524f333559446c543679564a7748356b566b64316b6b42664c377673667a326e734b667032527a77727a6c306638416b5445794b6372342f77424c324b4171374e33334e586f442f4c5a5034634a745a5562346d2f5a636d53796831623674443255714867316a476739437a6a73307065716c396a2f5a616d587241643750666858646e6c424e555047756b5156656e64484e504c515766554464614f47506f7465795452665448376b356174536e6b366834302b38444e2b48742f74552b644d426849463748376c745a353677436a50576e36673361563031477a536b3837522b78505159613262564872343752517569762f4677786e4d46412b397748516a483531305531364e2f6a6c44633675547161455a3564544a513651536472786a396f6944357243366c7443763841524e59366d7276794438642f3537382b76703636426b723352346949675a4d796a35496f7554794f32496c564233763244797530584554386e71785a554d374530746350766d44364a6744756a48782f5839522b69373841775261663078464d67435653555277785a46454e4450657966537a394b3957625679776d653135495142717a693761626a4359563143693043786f5439545a4e49706a737576525555664b32586c7353787a4966316c514c716e744a70544144754f496e4f635a3942524368495a7a4a765279536d56396f446c35553455726a586c2f4f6c6d70386661755154614247476c6e76795569744e584655653063326b356b2b7963424d423943586e5536673054355766437559615a6a727a4b657232637a5536696574446d6a79614f666e477738365049784a662b723445676d64334a375537554178507950745233497159724c793652304a5236694b70586548314c353378774a6c4c6c432b7a3061536d765178547553685839774567777a355549527a4459394a50354c396859793932455552583963313065705569774b4b4f7a6744484d374473634c6e445252584f66654237522b78502f51454a7337794b7637434c4a6c73302f327732644e5772565053364a48383863456b75773530326c5579784352417061694c2f4f6b2b2f77436b6c483045713874334655546737495a736141544930394d3543684d436d6f58794a395a396f6f2b53574b654850364b6a346e68736359664f71634b545144764f63576d45644664436648555763456f6a6c4b443637475a61473078474e5455745353576a43583251584d6e326e663841442f685364494c41644b6e362f736b4e4f676e446c374c45787872566d5a756132643653437971485658545737532b4d5a57784e5777486c397a397434412b37715167586c507070345a354a4e4f396b3252494f783437526a2f534d7a4d6131466b4d716a712b477a4c2b544a6e584d32776c6d7632477a6b66746d704f6269467076467072316a674f663371442b4c2f6c586a577976796a774e327652684b7530374f79684c7432506c6a6e6c793533516f31365a78434b57724e79574b527945774436742f7747487a636c644e744634745848582b6f31352b2f5a6a3647376b367332504a3564386a463676616f4f6f46756648726132765635453637626a4641323161697a46363634314577556d6b784279563068667463656c49457369556a505933593635644e2b5252735a326575765332646161573373374433485333546168386f5457364e3567564a55574d4c367962676f4b6c4879566a4d3471453259755a645a7152322b5055643868705874624278305a6f37506b624d34323571374e6265435a6e736c6c3559754f587445686e517850746b625337394e56317674346943594f66354c4257335379642b44786e55304a366e49712b38626e766c44323062476c586c61524a6c7931565435347164396c414865637a5273396977497974792f46327658674e742f4150797353636d466b65573231342b3476554b614479476e5367765a31685a656c6e6466727839574179726635497636376d7263454e504b54584e6d7244726b717a6d6e6848316762796549655a516165625768656b6e4a37476d64716b3231774931744b4735517156546b79787548734f574e527731636353714842576c69766b6378706c2f5764716438514a66474236315276773531364572783135316971354a4d6c2f6b7a7334366569706a6b4179726d6172554157304d2b58674c424a7a46544f667470614a6965497a75376e52314e506e56636f73346c6c535a4679326769624e5a63515a5063712b6459786a386a6e5469622f61327063625073703559646a4c49444a4d436b5479565a775647323176554c634b494965564e4f526e454e357042704c6e6c3143576e6f464f3451366b6e4a41314c4f4d364a677a43766d547a4e684c4c597659564e4b66624a45615669347279515763467463575a6e2f41476273327862466b6659766b6e6658536267636975514343654e703877395a6463716e6d70514e66496c6155723035363061444f57566f7464665273795a4d62556a485254396a5169367164494c2b79413250443574412f61784f635934683771746d452f646c50616f52374c6e72716d716a5a7a366c426c3956453071502b7a6d2f4a386451496b6b6f676353552f4b445255797a696f41753542614e45797848525a4e6b74367a53524a477153725151324735314b6c65794e6a644455496d6b535546554c76636b4f7461464270536745707a68646e49622b712f723036556c33304a5048356c6e304e476c6632624e50514b35394576756e73755230766c352f6d46627a453041516e62342f722b6f7872696e644871507a4b3133392b6c7764434b6776494864485178315664306666545a6d3971644732786567504246765a303154665736372f4143715231757a32754d443675645874314f75636e744f6e696f6d526f3032563531692b6169724e42553533365074566c35624569704a6d723341592f7744483649453167756f78517a36765877437754313059667754304679526c6c466462317a75584c504e5a37744c556c484a3477536a4d77396b62676f6372682b35733865313568316f32554d6a544d37596a706a2f552f42536d6b2b59476a795452577362796e6b7136476251624a382f3975664d66317a53626a4258776a305941695336547461314f6d303273546d667174575657786f34384c794a624f6c784966484f3775396e4c4c6f6838517a754157413459316e4a5343663344666e783066465141362b44666c72436a59665658524d715633753030374c374f63304d307348536f3448486d4e4a3075364b33444e7742554270575972704e36316a4e59685366305755484a336a6146386f7a394334714e44466c427851376c69667239615636552f57637331422f75374e62666278436a59367659634f5131587872484f34453739584366485171626a3657616f6e7a534870464a70574d3439436745306b34566b7368715453756f487052726a316a51653556446c5666596962564c6c52755663563333633530626c6a5a5a6f4d733756394c70724f7164314b56587663414e39674962476279334b5974715a4d364a41635441356368514f32523676557a44396e4d2b45687173496f5a32682b6d4c7039674758654450544e5171314f31414c647a7137746272654f2b712b374f586f2f5837797638416a6e687830674e736c34745a4e31736c7558485370676352514a383069562b334d34303536687078584f353775503048674b6c436a4d646f53684f6e74536b2f46594c382b7555656179332b5032433875394d324163414a354736644a4e49486c6b557971714f5531366c4e71637a4e3436724e50344164526356485443536444786377554c306e414a71343664337a6a4c50576f35502b74626e382f754d6d556d6554477772732f6d6c33726b7a466571484b69642f35427638417a614d754b6a4e7554386d7456705a4e58746237436f50746e37522b78482f7431445432752b4b71614c764d717957527461597145717a36755a6569743156396a5a3054356853316b786c436b6f3470695774446b394d366e44776c416c4f4756576f4f726975536e694c614d79587564556b536b354a656e544b6e48396c414f7a324f584849625153446a6f413355676b326647304c52384e383057395a356c6674584242706d75566c6b74423842733038346c31453269546b4a637869666a656b75676248526d755a6e745037663942613967702b5a3141544a36614f386d57593865367178445a726f326e6246464733727157664e52372b636d4d36614453584163633450454c473849395135307a6f78664b4d71485865774b593873725541644448577a4333756453786e764f4e5a72597443366547516d55337648337a456b6770614e764750586e2f323966366964572b5336445436505053756c706a517071435772692b4f6a6d5a5a394a6e31345a334d46674d6a5a31517255503650324d4546636237303132782b4f505831466437326c70756577652b682b6935724f356c673036434d7964715a4a776662307532793646525a6f2f4c4250384d784b6e4e762b6b66634272492f367448386566354372397a616f52492f322b6932357a50384173427a734b382f514b6e696d5643765235664e42503268307270574d6f475a61334159482b692b486f2f343272456669794b353773375956552b3738666a377a4c69717a486369707351656b2f77434c50554b63772b5239556c78334a6955767064645830706e6648773349466b317473663841556e2b582f41705863383530706956372f7741624e616878306979616e3564557a625a6f36684970526d5647767173326776734f37315061542b777433734f6f4e52543138766a2f414f54312f4d612f2b5678366d7654334d5a364833346866787375724f334c763074444c657551374a3534396c654b6c68616e655a62467347455a7030337370364e494461314c547448385752725235726f54597235734d66526e757a71544945386d755757326d4d4c3954562b624b314f7066557636717264723558314261763633445366524147634171377847376a75774e667064616a526775536a304e586c5a6c74476a4c4a4774327955616d754c48697264795673505a394b573348716a644f32627466536b4f674d34786362356a766a2f355058387857577a7265626f4b536c503432354f314665727856634f345658746f6d387033496e527961394e6c4d767a45456934644c74526335314b762b44563870475366367469762f414650762f7741434b7837667134374858336e34327675745a4e54636a79544162486d566d6b4e504c7a3352356638413543766745332b4d54444e5451746b366630427555566a585477317a696d632b393966495246766b666d316f555530666a5a426c53503057614b4e486d6c704b7a4d706c554766705a376c614a787a446b69354f4752633747674c3666314d7a3451624d4a746e46502b72396f447548792f79512b5464307678644b374f664c446e5a6d726d64707647442f414f494f553762506f30566a50417653756d4d363551562b3743444c36674a4137314d566a39352b6e36434536506d486b68383245376634725258616d67623173545769303364314b34644a312b626c4250433948456c6b70716e612f77426a474d5a395a66733462565430544556367871665950342f4d2f4961613656662f41466f55626f5131354d2b616a794f784d695830315361566d6a6b555553344b5253504d5857734a395432754e5632436d566e4b4c375a6c4a62592f366b2f792f7743424874487a573237794c536e522b47316a355364472b53484931686b386130516d31374766666e386a716c476276766c594c432b79796778766e555032447a2b30442f54484c2f6d657635666f47646e714c763841615378482f683050536962464133795a46695933792f7935797778642f6b676a375a3436352f6a6c7953516c4d686737367959444f6878306c32646b6639542b6762552b72486c705a6944682f4453565747327177686b6470426b346447684635643832576d654447694b524e43536e38676c6143717a53347457596e4c6d2b36456a47795038417166304471373147386c794f32366333346f68775062735650304d366a627179633156467448484a3547617a4c2b535a6b3871644a53316e534835757a4b4e7170546e467469655076505831436d4636682b5363304e43392f774345764f2b51727154675a584c664f504a5a746650557464304e46575136444a6156544477374f2f4237707a64797959353372596e6f726c54574f7a37774f4b2f506e344f6670614a2f682f586b5a3831503278657a79477253494f4235416e50793564654b4c335777334d524b4132665a593448443438452f762b774b5365784676337551706e2b522f774172592b7076347465577a77355054474b5139665273766c363361683050486b785a32634d77447148506a35716a65487867363757376e5430756343657873663841797a2f494a72383133787762477766683576615574763841442b5356334f30614d38343671316a6259634545424751315030536f437433325064704f7651617a365565657a2b6f78585038416d6351793868395264453438796a7966384e392b6574443666677975614f5a6e39325a4f3432486b51614e6938725071634f66646e7931665a39714f456b3949454d636f4f47372b6b524864712f3045685836772b5271692f7744354a39792b4b6f38316139476a796a6139372f3841786d306f4d516867533657756662566d7737307677477a7277734e4d6a506d5450535a7a772f3633336766693952504a4d7a4370646f66695235534f7842394b577274586c3845473345436d7735333270556378616b57542f7741577957617759666c6368757732666c43505953676a46632f356e4552434c7a2b707248303748346a655151354d326a4d79674e48585074306c76316f7a6e6e79713378323137577a526357374738614b4b5375494b535567457554315673654770674f4e3331636a386442644e6e3457375675556e4e6c757a5337356a6d5a6d6c444c6a376d70563359666b4c6b6d4a314654504863396b7a416254576838615a79543748746f4f49726e7272665951656631447063725964722f686c35487034314e3263794d702f496b4976512f374c69486d647a4c5753344673397568597748796344336d66584c6546567244746a2f774354312f4d46322b533432676c4e454834646232706c6e4173354a7565544e313333614c63366a4131627259644b65586a4c75465070762b5a44766e7250562b384c716d67633473662f4143657635674f48714c6c7473546433384d364a5a4663626e7a4b3531724a645a7563724e652f4e70704378707a335244646d2f53466c4a46384d77535469755032504e6a2f3550583877327a66574263724b3530666866656e4d387177755a33737a49633677534e534b4b5572304a506f7a4f6c5376794564513236617131776d535654693931534a2f7073663841796576356a5a6a7762386b2f4e50484d61326278483856664c386869637653385034486239587944537a5a33775865523579796d66636b48315552726c2b654e4147436d6e4e53392f7657616e556d6b544f5a314265754a2b5866716255446f302b6b506d732b62546d7a5072314831323749305a6d39343538666b465768754f2b64524a2b524e54477361786b342f516d4361687331576f78395064312f46362f6b4a464e2b56666c45475a6f6155507078357779683252504a49335032394a3757746b38664b6133334a3041676e68576d65364e6b745556427a416d2b6c35444e4d6c4b5a5939334737473731363868383066796d3830304c382f443857394a764a366967636238314339705a314a7a317a54325874304e52704e774745735278782b524150662b365961765a544d77566365376a6a4d324456333559374d665a4c462b6b2f6c6d6c5044425332784d736533795a4d723758565a736f5a305a534655786272746854756e70392b4c4e7a576766484a556f2f366a33666d492b503559655177796142356e7046354835465254374e52736d46354c7257304843356b4a7972652b50516137516e426c44434d484a3638614f552f2b2b536b714850642b594c367635672b6f457a6a7a7337304638386d594b6e497a696635473268656c647054797555364878314356466c734c507761715772574b5a46412b4e6a304c6e2b76542f5433666d506d662b582f414a4e526a79614762364b2b644f7a7062682f6a4e792f794f504e624b47712f44696c696f6d52342f774166354e50626c3647687776744a65476a42384e4848485252303535393347653177396575674e4b2f4d507a496e614d58665452797447625669786e7667334a5a727a6c5a2f49587171426b2b6831324f683945654f777a562f49537a614d7a75564e524e2f33567837767a41437238304e6e6c724d39336f4235302f4e68526a33786156666c2f55523665443247506f79692f6332676d326e747a37496c5564565764543744392f564f4272584f6e3363666a6a2b556a357a3878664e545538637a304c3871306d664c59566258614675537562515a4f4f345667312b50544e52505558326d554a5a4341307650334e73366d5a77736d527078337a362b347733507936387a4b2f6278372f52765a783836764933413863797333633176496437744a66446f74767a5934636b32626b4a7a73643137476b667a67457a4574616d55672f70476e48586345752f6d5a6f6f6e457276534c792b3975434b3561494c503442707a2f62646e3338792b74797364442b7770715456425568632f5071557655414e516b6e302f77425237767a42766e356136427475564636526555447a746b74656530764a71796d653954643553334b536e5156793746636c795a644c6b7a70332f5a735770334a41564f316a33666d4939582b57313731775674394450495568784d7746656a794364386c6935764a38397455574d4750384831666a30484a4e682f484d386238315a783065386e716539333569513650356731654d78437550307033615532753141646e594f74706171634b6d6c47543064544d6b66634f6557734e307448464c6f564b71616e4e36636241534b4b6148752f7a42757638414e6a52324b433476306738374b5a65592b6e5157545252586856424d557a4a54366778645173593173495355764e4a522b7a4f6d397068424e2f5676632f6e674b7a666e466256625a3436506f763566707374364c5871584f41616b6d6b543539724835707a5a2b694b395a4e6c3050653951396a6759354d645876446c41736f6a3358444f345061507a6b4d713133532b6a586e47656a547942617165704a6b56485a4c6d46594d5768696d746a732f774378506f4a5431634d636f664d4d33322f7157576d63653738784a644c387a6471766d644c722b6c666c385073706b7838546c5a5655797a357a38757938364366686a59704b584a6f6a362b70387a4856394d4f5266614252704e37767a44616a38356473753555465070563563686263416d5830793779736e45472b6a542f6a49377a3173574f666938314d37456f576371464a2b7659492b777547366733752f4d596133353230366170633533704e7649684c736d706f333158546d76556a7666696c6a366d6b6e3669366e53737177355666626e5a59755261524f6e687162542f543366666e312f4d5266632f50576244586f37477a36592b65614256732b6c6d397430444f76734e2f6a4c464c4678305373555571306c4f55796d45547130536c37454f70616b477a476c6e70596646666e7761302f787a76526a7970476c796648354e71664178696b76587a78664e35322b366c6e58574d353432576c32536e354b4a2f5a554530345466625650525075667a774167666d3735483547725238643862394a66556e5479634f4c5079632b613573386e3164744c42597a4e49746d656c476e397a4c6a54497365456f4f69667a6c6c6b44566d45547052484762774b5339512f77417375585479344f76364a2b716b6e6b4e4a347349506c62546a72306644736577655a7835575858776d2f4a394863717a2b514f37665163564d716135336c5a474a3272703434376f6e497037653961765451464f58355836452b723141486c6a693136594471616970727265654b7a587964386679366a64524c626c6e554d5a716546464d6d6c7a702b306f676f6f74746e386466583145467439546652554f79553576347a657263574a6452334f6758705630367558673261435579543638656a38664f562b50686b354b56632b7a4b36787a4d706265386d4432586e626e2f414231483258314d3946633267364b50783839584a64455579703932717a4130732f507578656e414f5a5069564d49382b556d54354a7164397869437a615847437031472f77447069397545366c51484c7a58305642546b422b4f3371476a4967572b3575514c35343633783574732f54377475324d584d636d4664465571366963644a755566314b6a4d4c4137584f4c2f384156722f4b51347238333948714d59396e782f3841475831437271564a343572565235534d4f4a71644c355a7970344b3335594978325779325451696855644836754f61576b766d5768314c46754d54715677464b76557630556e77706e5666695636683532375a4e6e763356366e4c7a7a776d314b4f576a705a7367435878722b2f554b30664a337343584777624231444b656c4d624c2f4149353966515a6f39556652733236384f542b4a2f714a6139666b444561497a364d68346c454d635442686d37656a4c707132705a663433766674653172574938566d4d30754d52346d6474754670314b685a6e714636462b52316e7a462f4858314f7871577a5461506c47676b62584b7449366b35684d7a6f644c466f69754c2f47506c6a695076527264784c4655574734436a477058684f7041594c39542f77416271466e6a626e34732b6f3063344746564e4f5443724c524f646d65756e464d4e535846705634336c6e4750734837447876653177556b7453507154537a74766a64377973774841657266343534507573503865765653562b69686b5450723179536533494463744e5771336b656652457969622b546a6c6d6c34353342616679693934434538376271572b4b732f5142366657443047306b56335a3334362b726e4a632b71514b72362f344c57674d4d7a4b327271355a6635616932595679354e4254715976715a6e684e4f326c503037505a2f5537622f4150566f4a54643674666a6a6455783150343565714e704c6f53697051386b5051545144614a504b66354f5974496d6c4b6b56357644347a502b70532f774169766e502f414956383258586e2f485548734831563941377554703266783539572f72724b484d723861327646764748566c2f4654786c33742f64436f7a58597a51484e7a50595247365a6b4150706f562f774267436959763361734158483670656868625770566f2b694871657867784d473750707a7339794d6a506635706f494b47616933557669757752736f324f4d39352f4178574f636c6c2f5532505969635878326f7838684d492f55483866645879484f2b6e2b4f33713362486d3565552f744d45586a644d6179334b332f41456470544d2b57647638414a726c2b6d2f35443477674f59356d674965302b524558694d5271514649664f76514148787756656a586e4d4874727a4e6667352b646b3078334b3575617a4d374c627575734e57706d31635776346c64617049554f2b4966703049722b4f4e75722b4f66742f635344766d48342b527362757a2b6a507138656a79674f513532356f794e72717530395573394657626d3432577332665a6f71646f4c474256664b48553042333254684c3978692f546458416e5869336c6e6f62426f544c332f527a31542b4f652b504f586470707a356d6f69324d32344d366a73766b437774306d382b4e5832507239495666576457716d6b4d7756424531746a686142595557372b503361454938703848395138705975726a4a362f465969707173326d5a63473959444a324d70626e7254466d39426b675465313232424c48396e4d676134314a36544543774a664b2f77416675354c4332764266505934427a7041766b6b38452f686b353071697575676f356e624f4c4b6a34726976454a6d30495151486c4e4e4d644579324e62474c2f694676654e2b56666a726f7a303264386139534379632b657739432b58436f716b39716a4a6e626a676938736369796478537776596e694a574a2f6a666873636b414a464e63586b545878427634325a6b6c4447592f7149754835746464304e486a726f366b5a622f4142755536443048515a615857442f483657474b6d546c5430365578704e6337534e707033392b665879462b70732f486b6d4e70687438306c76734331665133664737506d3063784657534449565a44766e2f37656c636c793341715a64524b6c6341666f70306447676c336a32562b4d756c487933517338367a5a626c684c747a552b48555a38316b79616e65396449535a4b65354d73734d395455394c2f414863636c4e536a64384d697636724d366e7a39655974444f6a2f4875782f38757662387345455065756c6b486976794a4f4b6569576b76756f544279675a52484c4677756430416f39694566576f2b51534f7637543167585034374636436173675635336b486d4768506d36544c54514d466d67795a5674553647624e77766e41474b626e2f5239764f68376e646a6253346b2f716853717a766a726b624d6550384170763659584950517a53303255794278536d614b79783754656435497a525a6638534761524d73536e6f31665a712f7a413354386e34772f626c4e3778326f7a39527376343259544775584c5177413551635537754d2f6b31536f545354616736546859437276682f77434f67787265394e786a3876384171393636784f4c5a74336a5844313439556a3231582b4465474850524568466c4f31714678464f634e4d7379546a55752b55756e797854696c5938666e53485a34336644587879784d4e4b31694a794e59556e2f414f737a3561333955715275687a57736872632b464d4d644d367376335038412f6251585633574e51772b2f4838332f414439424b556e542f55684c4c6f723743372b4e6249444b2f61744b674364645a5a61636f79726d4c7155323930452f58637632492f5943544147684e4c66666370457a6a7541366c484e484d5a5679577031374d36666b72757a70727159787a45424f3678557979424f6b7061383335685174546837734750446f6f345a496e342f722b6f654c626d78755073504c4e516874736b6f477948346f737741757a5566515a714c6e354f7a375169744963534b2b3852474b51453531664b366f65574233376d646f3832706e643131644a35716a7a5a3458777a615a50375a5743615137424f452b6f62754d5851494f522b7638682b2b766f41336f6b6c586c36525453364f67687a506d6b78544e55743675684e594b7474383947307a35506c35517466554e514e663330386349442b7a5377445170314a39565a364770486d73466962477852524c50525650563248674c345a592f50667143507a38624e7866614772536a715453785847306741745379714a306a5a354b4d742b3977496e79364c623535392f55713073375a526f62445742557450593352752b44767349503841464c32437442697750746b456563567055614651544e6a627750742f79444e756770544b33357175765478777870716f6f59734f522f437066774d627a336d67327a455450514f5172424e3136776a726b7a7a737a4a6f5a323261317442583537593436624957703350634e584b6e43585a68397a6555704d584d454f485a464159557a3536477956505652517072486358714c706c6271313279653750414e556d3450654a577776617a344a754d393566504e47465830786834427a6d774b39422b476d79564f63374d77343565734d575343624b425a483177725a77302f632b69734764616a6e3755667641416d44324b6e45347a6a674163624f584f6273634c5167746a2f41505370364b5a4d2f513355637071687a68525042586d7136796a6e334a4972424c337a4c56373168534230485332412b794a57504f6462494b767255543559756d4673364f545535397155757a6b536b796271394e6936556b74626c2b3935346841447a396a484c416b66612b6a33366c63583864532f63716b7470596b5174442b517a35564e4c34644351727250744f6c357970646677316c487a6f4b3678503661414f6b5858364e4163525241716e504f647a6b4b4b57612b616d526e426e6f34516d707a6a64705a632f615a6e4146763176654143612b4d6d416c3049304b6a5774723138696f686b666548485255356956336678754f7a7379624f6637686c3069597466756530532f53584946686539594a584b4e5767794b5475623258734256314c376e35383431544c474b3534302f626c534f31374d2b55683731396a6672446d67786a6a4c32462f51496d2f5037434831723049767a364d75536970704d596462516f474a47686d5458753532555a4a387438373577564f4643544547715850476b6c41364b68684d7a5458507031464d704545612b4144505a64497463524937616468723245384c626437545176334e2f6e7a367069536d6d4d772b735873524f4a73777a307356565943366e764f7061376d5366424d327037387435724653346167446b692b4a2b58536351306e4d62532f6f4d4f51765a6c3431436d304563484d69796153664865584374354a5a4d6d467a4b3170444e536e704d4b7668386238794c365137476c702b7969654e5a38344754356e5778706b37457a61656b395242415945346f4264645a5863754b4e77725033644c4e636b3045354c41545a4f66576731744874674e623972755a73567566755478364d4c6a546d54554a7475587153552b31306d506f315269376c32744e526e75636b484d4c355a6b7670716d6e2b502f624d566d597a41313339537656487837774c7865337a6a66386c62346e346f504f664b693153356532617447656e4c376e65505a425a376174416a6f7a625061694d77672b615033394d672b756b4e4b306d5a78505163746655763869664b7656646e6b2b586a55542b4f2b43754e4c563538794c497469324c6c6c6e4662585a3550477a376c6b784b364a4f42797a2f565744694d48744b59413649704554783751317771646c54316551597a3831506a2b50697341396c5653644e586c72614a707673654c4e38764d4a53507776772f74777271735a2f3175714b6c4d4274544254524252634839666430333061344930377a304c47763173334232744f544b6f62343939706d6e44385531476b384f6a5234327378717571516d6b4d655a69556a594d664243497245644941414e62794c34396a7944667148486862355a6c7a356e6a306733577a35717646335a73737052654e6153564b324e5735656c6b39667633786c4e4278774f6a6e42437157524a694f6c657672316766504876472f4b665648794a6e68586975527a797939477a73485176545870522b4a654f754c4c717a6d2f77446b624d375561473159586b486b43316b326c6e38644e784c567359415571636c4f4b527835594857623865507737384b3849712f6e4e5a5a65592b66616259377649367466466b35336a5779343454693779433150666a6c2b6e754a53324d426f417a67415246704f2b2b665066556d63546a4e5a472b2b66693457504c4d797a4d76466c70756f4e45373447703759565663384372517950694c536e5975714569436437676f544d4d35732f374a712f724762545057525a6753797659515a71754c716751537057473134364c65792f63357863715530635a4f3446314c4f5a7952514b5039674572324a4b596f413939595a2b557870744d35536a4b4f6533376c61586671567155635672306c6e7454563779327674634a667a463776637770444a4a6441415337416a6b584f62343733642f6b666e617676616d7445324a6c6e30504966737355452f7470715777666b4a6f2b317a6a436c6157696459507135712b5354754c4f6a6d466c4f6c4d31574e536b346c64647a537a786f3171685966616965786570787841514f45442b454b535146414144675a6d74375274703538724d69526875554b6d4c305a38745255426e5656633071706c665856505958616e6a376e4c514c666348324572634159557a77514b4e69567946586569635a2b555563632b4b4c4e6f6b3142357a6979582f495245755837424e425a69313261304a7574522b6753446a32646b585a6b6774597a366447697473346c6c4f357153364e56344c6d6b5132774a792b4566726f4a712b4748592f692b594572544f4a426b4655704c624e626f6143656c6f6d6d586d73637a766b686d6e6e6767756d6c7a636d63302f394d6f5665397045732f744f4e62674e5964364361776972346f68547266456a70532f776f5649744472566e52433677326c6e6c7859712b4658427359427a71477876556c77784d4a6748454f6a51696b32494e764d783648343871573866447a4f7a716264444d51656e3234513045646a6f4c6e6563364c696b6d4e5350652f6a657a4150747871326146426f30484e7a4f61446d356b7961766b3552313069614550306844337a7730533644704b4337796c4a68476644614667715370495735365265584436542b4f394358416c3149374e46314d577073444c3838505866533571446e4c2f2b6d58593835445178597a714e5266795378563068446a484a347a6d515a38372f414346387538716f356b5a584d7247787147555357794e57362b36673461456a57467a4772443637766a6e6a446956664a3339307361717033774f554d7a4e745474323366462f746976384139612b70464850785a633949795a765530717a717148566736456b50434255374b754464586862442b4c47565a6434587a79433571347a416c55495239663841714176553931457a6d6a527955364a343357587a544b564f4d7378537470306265323667394a685a6447614c4f635949652f794677445452536b457a41357534696462415568533154724271454c586c30584e76556f687370304d3569774c32765937576d46646f664c3739356c4351567a676d6f426446697577735955706c2f486759647658534930544b6d586d6971767133616855536b32555a756d6858472f444d46424b7245442b735159573564553055425559484c74476e76625069367844447a7535712f75526c3350566d752f6a36474b682b76327061617846514b664d66434b79582b67545242516e4c37784f68644f465243464f726f78317777727a494c6f5a6d6f414b367671325176686857356f634d4b54434e4b756e5a39772f5941304e48716a3053706c44572f694732747670664a622b38754b584675367a5471684757626a4c717079593052366c6870656e33635333686857414973335661444c3975576f57665a707a3651546e6144327335612f38416b493052426f6a516d51575577395941715968332b6f576c37424f59512f7163546e474f49557030724e462b744f694965753246415758396d6a696f6f624c584f696e4c336f7a61466a38696971634430744a582b44707144634948395341477230737a794f6579674c383471624b6a727a6d6e6e6d7a6e615a79746b6a786550564f484b6d64687a364f503750544e574a674a74595534414839547872506d414b644c754269487276476d573652746974414a5153366463545666642b7254334b6a665335674c2b4d3274465454416e5466614e796a4c6962634c32386f45446b50793675734d53375759613532704e50507266364e484c792f2b7654546335457653646c745579575664452f763455646e2f414b67425466433462386e6c39672b697761753645766b4f626d2f78304637754f34564d4c764a696d324a45757230645834556b66426e624859756478435032484f393968764d49364b58563366446a7945727976424935744b56463673656e75543255704836476c462b6d2f4e526335575663375a6d393942484f546b7a394e675034664575634252677159467239305344554f5556485a7163726963355431763642616d626e597632704e62347878614c4c63714e6a574f764778797a594931302f58426c67657879574c707a4252575442785533792f63322b2f626b546a5a453933317171336a636d4d4c3777423330697a57653266716734546c415350383246594c52546266627844796c4c4f316f6c63313761437164794d6e343953714850436a447565764670655a714561713243326878764165736a6137347659366b585647544b68655a67626e5478617933514a447568624f33594c4f6845514e3346437370784a596a7776317968434568777a4e426d35516733376d37536b31796e5241745153416c6152624c6d37515a79565a664e515a6f734e33547a53626f6647446c4b2b4c6e44704d6e2b2b59453071444a4334546d43375171414674355069746a336b58317a4d687175574a5774644f372f41484d50536e536c6f6950416d7367426755705839766e5a6a5063483151424f4161424448465046325873326a5870476d376878473775636d6c7333754e6a44316f37464f4258317835544e59516e4f31784e54412f587a3867567252385232662b5534682f785944745551306b7354374c2b4c374c4f6f6c75514d5a4d6f595832666545776d6f414d7a5453362b594a795249334a724c7361744b726530786679644372474b455a71356c6856476e48766e36436b72354c59436d4c364b772b6d44706e476a374b4f67715153537635453038683545355a314d5850432b376b6b2b66513768575864343438654f53325a5046755a30414f30324878792f695071514c4c753533534b57694a735471575738726d43484f48683075416b574f72463944442b4c6c41336b51685a37502f557550636f53415875426b696b5864647a6b56504a4f30566a5553353556774c6c7330647862496670566c315572506471434e4837343844375439626a5854717153514b2b313245664a744d6251793968327279616d5746556b6e555572575832434b625064334c34716566506a42702f4a376e52736f656f414577634337517674304b553538635151425279796c5a7a6b7033594362524f725a347a546f51794e77517530564c5479686e51636b694d5854555873534478636f78637956557436764d5a48714e454a54316d73474c3346504c474332365865592b5431644375674c6e39613374494a455a376a4e736f50763437702f70756a3162676d3477366461476d6179326737506b624e785a746e3558594b584d536c66556735774f73343662336943752f304358367a335a2b6b374f4a7a71683764544c4e6d3533336d6f5a6b774c45697431586a30575171565a6f6a7a354248704c6d553664762b78536e686e526a513136482f626471774d62472b647638544a435045614d7a4e53723446577855664334566644644c794a33466674626863314874497a45506c3848633845773054334b573753375339694f64305a6f36415a505168616b486c384e634d36485a7675476b424871356b67613650653569512b647a626266307835776e6f48544c556d614856397757526f35516e71655a6c37414c746970662b6d73655438467258456b75385a504f7a6f4a7130737461716774664c43746c6a46334a46622f414a2f7535314261723870672b336e46306661715958317841302b774f6e3758464e3133415656444a45564f6366662b4772332f414c4c6f5368364c755a6a6d5a4a38342f546f344a4c6f7930304778612b4b6d50746e5570615167596344342f4e546e4b4f32466445615735546a6b58704d304d3141366b6733592f7744486f3652422f48324439527a445958576d70535459496454377a4943505a7250736c496c6d7570664571766c6e2b31767570633957314b6765316171573961355031644b4e6e534a514638726a4556483831507444454752384b58506d6c614b4a3343542b7374306334366c536c465238504258517455394373372f4c6e7561314c7570465a2b38466334304737616c364578636b6a3550585459764f7136386f795864545a514d426b79684c694e4e456d574b544e3379556d59332f414679643959332f4146416153556e5450575a506e56476b493671503544727033646562506f552f626e4b69526c524d576d7852387065412b383139436a70695a786753554767424364554b6e614b6263756c757345797a376f426d457652375263456f6d7a5379526a6a2b666e5334357a2f75444f583136525437515142656444523155476e4d5179796462526e51585778306c646f7559394534736e495a696f616e34525754756d4a6a47553868492b4533644156356375574d72646d794b75533653784e4336324157685649684c5a70474b5849465254584d416b7570694153396e313346385857756351544f6f30632f4b55594d374738454873737a724636566d6851546d7757364f5a445a45574c70354559784334395a2f77416a486362647a344565387834385a6c554d4d396139622f502b343143384933382f51387838436c6a2b3264376649475a7a6343354f4c54702f567a4f6d6d77567470756134756a4c52336d6c317955644e73786d6673573133733178694c2b57427562354579396d706c72536d4c4b5259336843655772503153594f634a5163527a6f51686d43524c6f6c354c554b616141596b78536e345639636d6f525a4a7a755870794d345471557864476e2b505a545652505453376174417247333435476d57544e645155465266723532514b42464c6f33334b534239644b5a316970383065732f2b62306530592f384d4f632b616551437a69306670547a75586d69375048486e363153687042396a766238564a474b5169766c694e63644771625656707667726470625a7832766b76304e5a593170676f3049355834712b5a4c6a4c5158394b44366141596362686453465944655941395449686f30524c4f7179414f7a547069737a397649315654795a756a6b533951352b54545a7a34644269705a3136464857506d706b3865565131583167366d61496d4a6a4d444138656b456a70664e4b65633574685034764958676337426d596c7a637a4e75476565656571774d576c3036695571594254657873594f55772b5579416c42647839334d3432576e587972527964532b343057307575713472576e5079434332574e682f794656566c544f415062586c787a6c41445655483751503642526957356e343948386a4e444435526d494834424f535a63376461495948792f7771356442334b466d63796661377676762b446739516c5131766d4d5964476e4e7a466251524d573954585a534d7a68574e586d4e57746d39412b624b5a504c645a2f7237754356544b5365464f61726a6e4936756b6d78694d597877456e7a66647361756e504d5341546b386b6f63316c54736e4e6d33786c7337462f43356a7149566a704d63503275386654534b417878587a727067506e3953476d557936544e64477939464f2f47687150733531666b3262512b56544e4b72424631727459564a46757444714a2b6e336e534c2b595737394e364c763043756b417831316861766b474a62694439796a496b52587166466d426f426a66794e2f75365a6143736e334d6d5358436d537a367356547669495a67415a45765a337444757338624a73364c49706b36684a30306147584541554a313355716d4c73354c6e3070593551736f655a746a5a774b58304752665764504958744e6d77303046427252313662704c4b4a6c56714c516e6b2b746b75532b5961654a5863324e7a68537341597a737764633558797434544569724846717a77446b67666735664a6d374d496431717447754c3739546b70372b686e7475746c767a6e546b7a59645a6470664e3066746b49332f56636d5941364c486174345a4243564d6b2b662f49355631483252377877706171526778544e2b47356d7a6b6f636e54354f766c43707a6c734b634858486a67784c722b2f564673642f4e6b476931556678307464646d5a6e4f6731584458612f657931686c3374724a694f585645774a696c595a614865716c4d36352b4f64476d67417462516d426c71324c6f6c6d6b374768383662695a7850503469666d55336b732b5377376859564c5670517638416c4f6f757037515476387a455a304341424d524d7a69424271764a7233653463664e7a4a30493679334f7a56397a43304b46797363425268484f756e6b3474304a6373777073584f71655435624b412b346d64633934703133534b307a382f766b55317a74666d70693064666c576a4c4a4a7a506b54393750654650306c36457a5134686c73644a2f7357635930654c6179575a704f64646f4c666a6c6a66526f7730552f77416847416f6b6b4b5a6c6e4e4139666b4d616f4c317a4a53326f72686c30506a596257723731546b72636e2f5247664f63455a34414879437256343341442b583561484b585535504e66487a6268374d5a3669565338354776367372706834304b4570646637474f45756e527933776658394135736f446c612f73737a7a312f67695231756a4754456352584251592f4c6d756e5479584c597a3465394157484f32747748464f7467614242554463774142534b59797a496a4f51715677386b6c6e466f567a6c4e48506f7636796c792b6e595330413041506e4f707156496e714c4a32794156666a574c764b6c4e594d6c6a71397377563164302b61677468783033456d2b5553434e303953792b46674c6c412b754a514c3967566e32322b336947665658614c6b304173787759733343313067326d79567365673276516e697a4e4874566b2f4c4d386b7053706e657153333266365157634a2f34314436454d312b78557a6c79496e58392b6c556a764c5538655a47744c5955704c537336367a343031385878686c3748586a654b6e4c636d6a2b726642396630426c732b6b6d444b585258383458717a6273384e533068744b59315743485663666d384765685336334e496572417764536d616a6c6e54425156456264796a4f5266714b5747687247766f4943524c2b636b57634e556c42577a3665675a4d7557492b356f746d64372b57633641436f3665746e6a61664d4f432b6a656e6e51616d656157616433464b794f5162473431576670456b7547346b7965355667752b7556774e6d436d4d7770416e4d3977774633667953454c5261584e612f52714c6e756979394f666a4a695a486873427372557256704d6c6a795342517152393143715170636a2f5361716757542f47793541364b345a47654e5449756c4934587968305266584c6d776661454670352f6b35667636584a67474c746a696447703067554f4144705a6e3877756e7062314135396f4d525752725733764d36646f6f624a6e4b5a70444e5053306d6678733759752f4d5a476e677a45453573375047732b59524657632f565a3863575a44586d686f6651707a726a444c736d5257766b63764b527357557675633533466d70676c3870752f526f664b314c4a2b44362f6f42646766586c755a6d467271676d436569757a52374858673072556b5963536161454c474e6c3042736f7a564a3664503252452b6d706a3657535574742f4839505541374b78756a4e527373614f645a2b344766444970436c753549626551537a4b6444384c683559797463374f4f6e5339744c6d39397a6c6774644f505a38784b676f3473624a3277494c764a704d77386d654a4a4f68653544444d67713673317a6e5863356b364773467a464e4d766b59624a752f4a41442b53304b346c7134442b63334933363059446b7a585a6e577662514b334c3664524c31485561446e4477675a38676a4d317251613179766b745474514b566e6d306c396f79746747767061444f3366394f312f495a68584368482f414748783856576b72506d642f774446346d475048535335474f556265374439634e6573372b4e724b3664493250354753457a4453765271466570796a565a5248527831585763756b3434514b613466746743545332786a6f34647279426d4b46673037536a36307561336b462b706f7976706b7a54706a3579674f7333327063797134653646454b68567a674437356b6d624b612f595a534a556951532b6b2f4f53614f665751316d6f2f577369672f6e6c464843794975556c4f6d55624870733753694635556e7a37696e664b6170456c68333832512b30436f5976514c5054634d61644456754a535569317a54727a394a6364397550434b306468365078707356523334686b706e3967444a59546636642f4e6b55763538484a5835372f77426e48683934717a4d3551644e6b3075544f646c593152303370425339426e3061754a515a6c307635695a494a6a49436a62725473774a48566d616f73526d3074645761624a374661567a7335375a744637464239504c7258504f6d5a7a4b6c7555684e5055764b71435a6368714e6e754377736d4b714b6e6c79587343676337464630434b4b763177355578364849745765396c4553796c352f693075645736576e6e7a434c47457455663841574e2b31492b36347a794f3663736b5453366d72584d5766634d4474376453664a7336416963724a7535566e6a77543738772f79566a6c4b415235534271647142717273614f45577a724f4a6737683744616d7931585a7363367674426b53562f614766556e46667a486e6f2b4f35744876726d70427773594b704570647347656d57756e51334a746c5733546e32524a71562f4a3073737635564e4937582b4372376a464f752b597264525a4c6e59444f4a674b53566f657a4d6866486477466b2b4f6447304a635539445a317141716f2f6a64734f712b6179336f527332666d74595531476864506a724b486e36534639436f3645397655674f7454462b7a496e6c766a724f395577653631304b6b4c5561364a437a50342b6976542b78536e5a5050736b6c5973456e556c6c4d4c46652b7931535935334d2b59473139353543722f566153553139794c5758524f6f396d5171687179704a63764e4a694d50516a57645255757a2b55523052693663484f4d5935334e45754546664c316e4d5a377872356b446c534a7475485030457267797050476b575853533963724456446d7456393347782f736e763462502b357a397251344156653261482f503277746b544b584e566f4e626e797a334c386571717031364c4556363855382b6a714a647041654264477a682f487a784649684877366d516b6d3848574b7a6a5a536e6f6241354e373837485a46392f71756f6d7070522f49706d727a37497073784c3947587035615443686b3874424450516f5a3143763467545179664f43597133374d694765584b52623732574937396871506d5a70712b636246657a4d385030493837694d4254706964306246734270684c443250342b74424a57452f2b72416e6b6853764a316358497359734e535850646672646138475a5549594c4b74656767676859684d725a6173382b6b6c587a4d355a6f302f75656461525a4534784f65676d3071564251674d79697253355271645a616859396b334962644542717a6935482f4142394e354c6b455135494669574a702b6e4d42416171467a6c494b737964427a686d4437434b6b4a7843425038725647634c61557970353862455471592f4e546e5279384a514d6e416963306d67526c384b676630353078792f36424e39684a544d576e4466527872714a4165575271387a383363756f48344a7945685076764a5858642b49682f77437377382f6565515575366b6e53614f6d6849716271306a476e6530335551315156496f586d6955586b454b357245724b4d566334444f71634353637169626f447774426b2f4c6d637a5631354e5232546d36487753396e4237755a73356e6f727970786f594c765a4e6e6a38637a7279366b2b396e6d53447630544847304373434a71646965692b79794a304361787267796d356f7057614b42546d4a304e44447955716a636334556454786a4139732b68787832632f38416166504f4f34576630626857726e307a72304a394536486452646e536a774866444e744e5169784b795a6c746e53496d486638416637506c2f774131712b5434514a7045352b5550526e313851696d65696e4c424b6570726c674a593556585738574a7a324c635753784b53342f32455a4e446c64687141675a77492f55413575646d55506f72367745366659614a71654b614a6458576c6b556e2b496b77535833394e4c3454634e6a476e4d50576d372b496161464551776a4a706e4e31376d334b74644e524c32695a32723255722b72707373712b50344c4379587362454c6633386a67595454503639594f4554534d6c7a427231496179624a4d6348476f7a4735665a464b59644c695851355a52732f6a525a336f6968532b44455a63547736667141456172376e57306658374842533236665a536a577a7a4c3373302b5057787a4d5a5272367969714b6a4c7557355a4564625365566166736a30416f426f6d4950715a4c49434f56587a5a315057357a5a724b4337524c6b6e4a465575665161784e78527a69584564456b7346786364796741564e2f514e4f68753539384f686b707a667030314b756e4776476f74576457726f4d7954434a4366317a4c6c455a63316f7334616c6441414146644a79466444395a62723553356a64634563673559752f6c6d7050533077443539496b787a534b736e34532f685a734c69623866316a543731736a34626741776a4c57314a356f74637669704a4562374b41664579333536783179766b5369636346706a6b6859574d48654e2f375050354a4a6a444d316f4e70446a58354234494f7a394354587a6b58593145666b656f2b497a35444c68346d31703654476f386371566c39594f6f63386573763754464e57795a4c2b2f576a6f6a447275757473634a4533394f472b512b6e586a44612f41764a4b4b4f686244546d654f62666b624b6333513059427570307371622b56475a4d6f6866474d386936446b6f3675796c307a6c66414c4678626a626d6a6841754c78583868737a554b7678377a58416f384e386f725837746d714f64312f69734f682f726c67506a464f6e4265744b36365574432b735576704d6157704e4c6b694270706a6d6a694e714a7459614d67645478375a6a62735253386e354f4538647a653074357258594b3152523643325a2b3471484a71543045782b344670615943706e43463266586c74316b6647526d6256636f3334323750494a5073636a594a732b76714c574d656f324757347676365170546b39585349494c35624933436d45793938646739527161576c5457424c3042706a4b624866644f616b57476a626c587151747330736b564444396c61334650305a6147534177457055464154645a58685750494b53784b58623963704d3871527a613439523045556162396b6550637337573532614d6243684e4f523963757958696333732b3452564e74647a2b724357533030664e7a72417162592f574855362b4876314f71736a5852664c526f7447455552614838437469366d53386f63496d776a574c5361595a366e634755396a4b4e36322f537a71634c7365683375676d5371687a57365655337664625534763064544865374e6a496a5431504658756d39337a4c4f776e37763134677477354f73727a477451756a6d76676a706c4b564d795a755052476d66413058775369567965614e7739523871684d65557066515a6c4f75477a4d507266742f63747234336e386c574e6447774e4f664e61585932562f75494d79697733446e2b3264476637315042507a4b6c4a6a514470457167506972496a69747a58587a716350625834303454385270737831385a63366d6e546d574849774b6547674b4b3344475a6e53505a307a46394f6a6f504f4b2b744a7970476164452b7644584e526e37636d6451534d5248696a474b57327050374a466c44705335514e53706d39435a696853723543756142576536723538374d4f4741646169616a71492f715168324858646e4f31334f4c54566d4d4c50324b35632f4a50346851784d6161662b74796b5452775159716c69346d4a64624a746557342b4a7a7965764e46764f6f73754b79514272756c6c544f4f34747749354d30356a6f446b2f43424c55457348562f6b616b35646c3945497569694453505379315749476c3758647a7a5471634a394c2f72756e5957534a684f496c385456304a397261516d4332336d3268354f423077356769324b66686b346737596d6d53562b645871643759552b52622b304a393259364f63314359456d5649554362684752636c514d37525432526c48613155714d394c523432554d6c5446504c43576673737631584d726a38673549535a57444f5274414c456c517575657852794137712f6b5861733965674a6e545239697654477653765841444a7a754f444d5050754b4a452b6f4e4f674c6b47516645445944614353732b392b7266423966304345366930507636524951364f4c58557652396f646a352f4971707a31566133305873373357304f55553752694a6a325a337337386e794a3669554934396e7a446a4c664c4c5462376a49494643726c344b664c41727637742b43635863724c67546b2f51584f30525353715631574a5a37657a6b7370494462572b78325435714a7534302b703368774e713145306d364e6732557a756e7a376e6634357a6f35793650654b674b4e4d7a5539616d6e6e6548616e6167502f6232356d5976707575305331304f484d644a4a6e54545638706e6c7a7a6f7049696e7579776858386e56797234317a515766442b4e686e505542395637354a7a6d3035476c47374e613132706e386b67477935636b2b687a675555664b6566483351353742583770364656306742742f774379387041632b52497a5a4f7473715471726f42374a5062546d75393631733169624c624d4e45706658594c744453346866774e4d7963626c634f795a31484a72475a774b4a3874394963547a71666469312f476c376930584a737330555258794e3065795652786149434b4e694f3067416830477555354270576e6966696f2f7a2b594c78655936774e436472386576506641646675334251666b58682b7737536b4e653358464e35686c6c70304a315a786d646e4f563235502f334c5a36514e505741684f776b4544717a767643506162784d596e7443734d5a324c6f64536f74624c6e5565696a4d6e7a4a6e77685137544b6e4e69545a6e397a454a73796670727931667357637654395033492b53734667464676326e724147792f77446a732b44465568304d4c7676374b6c73557a4244725436765332594677357564724f546c734c354a5563613471694d506e547879722b6470576a64766a506d4a54623378716e4f566e783473656c347a5835453137593772337a344374612f5434477a445452613430585a6633682b2b715579736b63314b6a372b714c4b5a6f4b3863352b4d50633331423876394d76344f3730342f6b764963734d354a30594f37626469756f686e794f53392b686f726e39755870454e49312f4a374b5532535950746f464c2f3434577a4552664f37714e325052373869387231457a50487a37316b576e51656631666a6c796e315a55736a3671475a6d6b6443386e6b5450396e384c43703450564a315044734368344f704b664f394a36544f42732f6c6161664950354b6564446e5241616549313762357868567772383173347570564b31734e5365584d576e6b7932554f35655a48556b684c764b646a7a794a5252664f324541694d7263327569755752663161495548726f7a383048565243393677537a6c6a694e4950653774775465785362524e414b7a4461726e6a6c434d39326c55304a7335744b55384c362f77424a324f75694e7736476a714c6a574b3833724b7066617559766842515447396b7242624b4e75667a2b345a4e646f45566647305a664a322b52547a5079487966627a4139756f5164484261716468726f4b36764c574a4b36522f4b44584b533176614a483144705749365a387475483946444f553559716d696f4b71766c74533878643771385539512b66794275534a4c5a5148313233534a70396e444d4b4374757a32754d42766e787372356b5a694754444b67633859714c484a36642b316e534d725a4d5446344b79736c4366535771613371666d63636257742b386674415934316e7a4457454b4f736a646c4b7a3459394373353546446e554d4b4135394c4f3149465845747a4835756279434d6c646f567871787039316e2b2b72346c4641632f4664726a4d6e52667041613134315673416f7a6d3275306a61334b566f352b61316a52737865394c5036722f414a72374f63773165783144352f686e6a57664d4f6e66626656627a5065756d2b594c4b4b624b497149395365334734736c3052305a762b487966437556353861613230422f334778396e70367273443666554a3973554d73504c7353686c745243397334526362613579315551685566616e54554d2b426730645951486257784a2b78784f5341326a4a7a374a346d4d72534236516a7157746c70756f6d6e547a507a79484e67366e764f702f327a304177312b394938424e4a664d367766736731726b676652697a4963716d4b364264504e4453636d54515766502f494d747a4c61575378684b78657656736453416b452b6865487a546d4e507a382f6f4a447162526330456f72314d2f516643364b525665786b64304c47366a5558534f68694a6c4456314f354b576766766e46713253303254456d6d706855386d496d5a7841463879556657696b6d4a6a75497a4f54364f6974433561326e6f795157747275444f4b74726937476c7975394c706d316e78417237414b6e4534487a6f7a7a724a4a59566c716f584a7a38326957743736327476583956334a734e673954614c30304c63766e654f4b626a76317a345a50637450514443616f4956514c482b512b466447643161724155644544796a537a4a6c4e714d326576575a5169566e4749654b4f4e396871455757664d7363646c764166657a646b6e665a53366438424a6c306c555731357463564d753950646d4b514877546d5653527a3746674a4c744e516354474d3648544b2b4c2b7167567955447a41546f3261624d75714c7876716970524e52484c6974793779346a717a2f782b75794e47685638584f4543577a6f6e4f646657635073392f4c6b4e6557496e354c634c4a58676c42545a543363502b50376847374a42564b53356d7348554a784556445a30584d714f787a52374f35482f595841586c7974494a6b52413246622f357477685344346b70626c5372717031464455324f674d65683872702b64424c5134454d7942574b5a556850384131664e5043665831417957766a6b3036704d6a5871736a6572713456707371687246454b2b61584634382f512f6c42783236624567585a71534d4b665a6e2f413579546e33666d44464c4e46325854386659494c657475376e364d6d544a53755333614f566c367161657263552b784e56566e6774334f4144715841445774427654444d4e654d5a6c56447a6c412f393734714d3664744d55415a314f664e486e737a61417031792f6a53354f4e6c656758456762714d31733341635076595947767357696a4569756454585831756b3175323654545442447a5579614c497a325574684b644a4f7347376a656c317177435a4d7a2f7344317958573550503743622b6e336e685a6d68446c2b54564365632f6a61547469716b502b5031795a5a5a7263556869666379446f2b314a464f52336d6e2f734b2b78326d637a6a4866485158616d41503549466d374b744a376f2f335a3173476a3862436f524d7675656c5355735858316c432b2f7743343256395562687041564f4548514c6578764b664c34705966483539574167503446785031354b4542787678316f576b72792f58466b4665572f6a68616b43634442494743587638415a53654d523331722f7741662f77416f6b46557671792b5931796554654a5a64627761316e444d574c4b622f414234383174716f2f6151343337444336492f462b366668506e57414c5156694c546a762f774332762f6b4968354c4436314a5661574a354c34753561355a6a6c5862537573535661616e4771716f352f62386631432f53316451447a352f375738353866766d597058626e3475504359742f347a776e796e694b6e7179767948706b6a43663148773061523364363250756a4152386b562f7743514e4b484f7157355861474f534a634a2f77634d4254386a6c652f37496e624f6e2f7742502b76384159516d724239655564723552352f6a74717371707054504d57632b724e584a5637375a4a2f65333358517379366b704574483561514e66796b4a7a4e57704d34702b444972445438542f496c31653679547a437078312f79736f687966786c64514f2b595034394d794e43726f66546d686f73377a6a756b484f70425a4856523170684d54702f50313543682f4c2f5372317075753164626d3930394a486a32464a486b5a322f2f4141756b6d646a6c31643470576770616e6158506e636e6c58744a58466533366b31426753563369315936526761763676706e2b5146706776783779514d5646476b32552b536655764546364f6468697568564e6564337675576b452f4438763345653443556c4d78444d354e347458766e674b637a66516e31374b6d684a2b6f562b5a5262342b7869644c7857474c572b7a57366e5130644c53436177696b2f6b684765506e4d325835687248356a61354e53476468764d312f442b67526f2f487a3139756e7a4836767164714f374f7a586a5a7131695a786b7a4b4e7a307a33573967476c4d5a4f6a30695877666e553659456c30494e436968743764483449396651517a4f394350576b474d546b2b70476f78444d5165352b6a334a6369504e7a7559506a4d5158616b54614f77335368484c51756f7955372b5137476861766c4b74416a4d3372507735444f7a38642f5871722f414430765572516b6a2b57536471645265476f6f7649446450486f35326d456e4d2b595a5732662b52433836656d66553370643746723552516c75702b4837514762665166386e44717474373669327a77597338733730586155656e7357317a2f5272316b49685a342b6c314750786e38796d6970344e70437050466e30374a576954645438503267526e5339452f79626c70633158714870797950504c6d516e4b7362412b484c5a637552666450364a6f70315064346d4c3239514c4b6568476c5459574f35543767627166682b3041485636462b765254616331666e6d6573615a4e52306a3943335057322b71675067356c79364e6b614a77714c4c5a4f336a5669665770773870315272464b4473627166682b3041383738662f77416936366561476a357472554c756d7a4679537a507849716f383266512f62593057636870437955574d582f724a767530616157716146507a4b6e435a76544f5972675954666a6a2b5546576a6f614d507171476d2b374755374a356a36506a32436a6d4b5768597249786d616b4c68655766316c32306e374377436d745761645833424c744d664a3336582f544462592f482f3841495330474b3535367a6334323743424e4b744f4739534a737043644e45703071555536744239466d67674f50596c54466646706c48524944666445587048773542625539477679366c6476522b4f2b706e6c2b67494e7a7377347374466259327272564833795339743364352f77444c58637852475a4b4a71382b2f336853566443703477656d49745476726b59552b6a2f3553375a636c7a765536365a7a4d30565a633073574d506a4e3173314748704d376879364f5452546373796f7a516f71724936432b7a776c56666f7a596264535068415452394750794332613870486655367069424b48503841646d535a486a61726172793149597331516f6e366a783166506b73756f72696562514a7746376a49727a73627166682b776930486f352b543133496b6c3672612b4a64564b372b556f58496c4865612f4e69572f79714c63676b73636f632f69382f584b6a392f4e4c545473554439754e6f387a706254625437716576714839486f562b555773352b724a366f747569304c5a4a48424772437a3835776d79694b625370324b496e3949677a6150473131632b4452414c766d3042374d7953715a54667078306f484466527638755636714f526570643562584a383737436b5334797676313236374c733336305343425852644f4d387873474d2b796f37705575414e463470716a64702f676e37663245626d394876795272334e4a646671752b6972505871745a6c4454685855316e53756558756d37512b4630597872542f414444305274716e4e4e47625a5253433453636b356d2b6e6a685847665879423476536238765048504974696b5055736b335179615036316475664d5a4873353856734d396a6d54746a57654c2f3061744c35365977506c4d387a434d456950732f704e744b596e6b7748576c3652666d66372b356176567065645a42342f554d45653068657072576f2b31633130306937644a666166737057556c627171666545666a46644b3075545a324f6c7630762b6d494e71656b7635636c6c614d4e6e71614e737a6b5a4c747154525669486a59375a7047616d646b366a6e694b6357567a5a536a6d5847484648496e484f682f7536494a6e6470666747716d7668666b3534327030506656334877496e724b534a744663466b38633473594e433837345630664e59663831595571655338753930462f774133625a7a76586470507535363139667a4450416f2f49374d6a715458363352364739596b3272373542566c4d5771426d746d697a3268566e7a76546e31614b614a774c4c526f4f677239716a7643776773736966647a384f51376d386c2f4c444e30686a6c39627642633944546377666a5267657a4d303638637455796a484c7566626e776a6b68745336596e2b2f30456161477a4448386c4b574e4c38494e7038302f4c4530534d6e39663848746a646976527867336e5a45314b327570634675472b4c4577334b736c6347683972692f5949386335795976653458784778706667436447392b534532714b4d37386866473665713063562b526e5a65316a304c747961536e68646f7473546d385a7654746c6d6a59776c582f6364665341786775672f73307474662b6b4d4c764976796b575064654c31687a7976707a4e646b69305038517a724e62766b354a696f3478696e665a715a434d6d5839326b68563254337070366362542b7554476c2b4153444c762f4a642f473831505844495834783257647a5a73326e4347476c56754f77594a3831613437442b30724c31494b492f6c523767356a695241714f756634596d4b6431415774315079794a3737735031577a4e564e6d4461364e434e62465257706d62343770497152354b617955557a47527877314c532b575366333673455543665a39657557636166344243693250793548795335426574575a4e667033625142734f3166464a424d486f68304b64655056676c6f66516c5339474c7643593735707634316369466b6c674a426a532f414a61586b48354b367a4d734c66572f46356241686f35386c4f666d6164444f33555338717a4a475a46336670787171586c6c4b69564c6e4c436d2f774331503254342f7652696e344d6a4a4f332b53383041516638417a6f2b6e664a714770716851752f77356a4d374a746b3366354257612f6b4965366763482b5748704e58525371463338633431484f3530383430767744444a32767962746737506436302b4e3265516d33546f72356f3633676b2f6c2b6a696469782b737a3261632b6570724e54506e30684a6b39567866474b516d5a372b66444d6166647838504b445a2b592f6c4c4844593352395866417448785136644f5455505876785330495a395851386b7066534562764831564a7551466b714f7461326758582f4b3732652b6c546a72466450756952465765552f6b6a52324f79443164384f30732b306b5134377537336947634f4c627062466a644c4f695a726531624b716333573246393669666e42497946394a4d4867333278706667425054332f796c7437343754732b716542705a33554c52646c3253545a4f726754736c6c4470367550386c553957316d6b51677632667479584a56783350594245396a532f414237664c76797779394c50306366314c384131636d4c6a73796e327538636f6d71684139433361366a587948496e757543475057593939375767502f4147444252316b61375978707a45634a78416d506b486b5035494d3064494d583149774b4b6833563142705965376d6458524e72555050514973392b68556a4e6e666e6e4a46564f6a367231792f63702b6b6b543978784555373635417075392b564c382f55425071443444523847636578707974303831692f7663356a36306b4f6e6878777963304c2f6d5a6e70456e7459594943444c647872786a42375a706545677a4835562b584146584e6b655634742b464d46576c434836384c7067485a6b6e307274434d7257564f434e6c4e6b7565726f4f346f426337364c353635312b3870694e507672362b77455a657a2b552b5a70593963766e2b4d676a7a72436f6b617678572f4f2f6a48367a4d34644a4b723170574f6f4f68564b70415a354c4b5963386941472b38752f30787034375045466b2b532f6d4f797a567a387a7a6e78324f77724436463252342f484c75757a73794964424f6c756d6458425a485732664a5336626a2f41487563422b394c456e30624a787066674831486c5035636b6e5479646e79374c724e6c6f313335535238546b4c5070306f2f7635504d333474696b43465031586c795a4b3175705a394f627679324b6d6f5a4578703931665833417558662f4144466a4b5a324a746550626369702f496e763130444a7136486c6b7258583166786467552b36614d666439364b366b69443461414c6e7a5836795a794e6a53373578362b51652b4f6558666d49624a652f38416b5068666b76746d304247695257586977526c492f51433843736f2b43556f31594e326b4e62633664774d6c6a6a56505459414a423054476a342f3041786671422b552b646c555a482f6b73304b3771592b4c3065326548655431746971693049395a4e38614956667a6336386556494768376b7a6d764850357449584d3548624f4e4c4f503743547638414a767a4664564e6137794c77784f70797a616e637658784d3379617770556f6f2f6a45325a2b4a47674b4f6e5a6f527a726e4a6a466c6c68505054396c41517a794d616668503245464c796e38724836575678336d6d4f643862654c683076725175304b7071747368717870377050617975656e5971334a2b7057345579716770744c764c6d6e4c524f4e4c38415937586d763558646f4639767148344a71375630396f756b4877727879704b6c5354513078364f484e386f614338742b6544426f36445461456d497a374848416d744c4552703939415471387a2f414446727a3954682b552b6e72554b646f4654382f6875586e5436796141385a497164432f6f646d54647a48597274434f6179554f58734a5a3874454533736c6a476a3478362b67623365532f6c38312b6f512b542b6e49366445534b702b316f796e3169452f694c4a7a69693270492f63376550466f7359533138584f7451424947663876324a613432615868494948702f6e524a6d73714c794830396f474347717432554d38575957726b353355356f315a7475744735387656707955705130714a6e4b4e3035645359464c384c476e6e34736975336553666e4a354b3350545675654a61464c744a32626e35636d526a55365472463046727576726264724c47707a355751396f716266374a32324a706f61326e345871766a536a79456d3864386e2f4e38486554466d7138446a7651464f566f79426d2b50365567315164715043396d69345757466452394a696b6d382b736d397a6e4e6b3444696355576a536e7075455773386b2f4f76576e3468712f445a54376e387a757961474e6a516265617744317362654e63694c754c7958633866385a4b52394a5570423662774d6864523732484f4e4b50494b7131507a71757a752f66743849796b7175726167312b4f654f64423579517a734c4f5034632f522b47674a2f7170367954707848417353436d6b5a6b754a2b787a772f35414c5938332f4f534c4a32383747796643746a546e6d777764477a786e7778774b392f4b6671644c6b4e527a7a736d7570306a535356393936644b6e2f53364f5377454a6a5336794455666c58352f3671485a6d2f7741384a6a6c58705859397464666957636d34667561336a2f5a666f5576642f737a5735756542714f6633474532785177425071706f776e476c485350734d31623335306f79644c55735a346a5a725a477249724854483435343133593042367655695a4a706231332f703773336c566350757256615077386a5756427570576d41713430732f6f47772b63663345613943656644776646626239446d6c43702f4d7a786730774b4b724e50794764586b4d4a496e2b385631317a357936544261426837474f647976707a7430652b50734675373335766e6d7854783548677132427a50536e5430733378744e4e766d456d746d38304a3142545975524d4c4a30306343623363525430426d374f2b6b6c55705930764350754448762f4e31394d694d7a4838413133617448476c6f5976692b54646f5a736269306979376c7951614a764669366d655a4d4b6e4e553978382b65713477425850685437727677476c6e71422b667561564f72682b4c2b474d6e2b614e504a7354786278516b4d3076725a36414763384f6734747a55437271545774352f7274494771616c33654b6a3545526f784f4a342f3142366a7a6a38374a4c6f38797a413857396d706a7474567472384b77632f62397552722b32486257706157556976725049474545726b7a434b7a425470342f732f75786a526e70674b34336b3335597a3657692f563534343357505733595a64796e3035677a75427a5958704f5a646a7731325341354f66715a6567346a6b4476794f796e7146417273366c5557393345384a346678444c2f7a5438696c696d652b547733547a714351773257356d5032434955515a39755232524e4c6f697a62757368306a363959584b5631792b48516c502b2b4f64756c366a2f67584357372b536a647562755a466a61734b64523749582f57584d6d6132334f30704d6a62304c6f62362f3570695a353253394d54477476556d726b354b4c68757a7854623039664d57526936763558515a2b3751724f3861306c536b74457a46515a3268694c706b525a6d303058785372745a5975786c6a574970645179576c3041535567357135454e6a46504c2b594d346c5035555a2b61696d72773778797a74576731584b4e624366527433394232747a534f6e4e4848304f6c437069624a7863704a7454507043625566483732646a396e36794e68352f4e2f7957717a4b637a45384b386461535a6e58317635345979625058646d313536565475537a596f4356663862573562466538416e63357755473476737454584f6c2b4d584c345835522b526e33714e4976542f414d4e4e753547713336332f41495a615574504f4e6f69666e36644c776f4564416d5a38716a6c576a70396f2b5645616a55366452316d4b644a754c547766554c317631456a584c344634504c66597a2f4a6d61467262594d575333736b6d447052715a786c3632787a356e2f7153484158764e524367614142444b7a577666474259314f332b5165374e545858344c682f457a4c7055356e63586a596a437655306e557739726153336d534d576877557037474c455678722f362f315733663154464a2b4957486d316573703655792b2b6a6e674849302f7741624c6e614d4d31743747466445376e485536754c41706153356f4c544f304a5754484d31344d364470685877324b7831743046795a4e2f71774e6f496f394b50475269347169337458304b73794e4e664f6169486e42784e44337371374b356e79423255684a79653850374d704a4f757337592b49584a6b3165634f302b5736506765426c3573715576645537454c737a5a6b75577772655a53716d4d584365574d2f53353051396c4d48552b37363665752f7175593859466b353955766b46692b3349783445336642596d534f644b4532307535557a6f55724f666e74714572566c5358474c506c426c4d44412b4d2b444670784752485056483152673855787450786d4373594e71754a526144324d6c692b68426f524f686c36582f58704b585137526f4b2f5a55724a4d704f2b7734453934677a52584e7378786d65673159704152444a576d53574c55656d6e6b55693063303235316636476e5132637a754e525633354843546c396f4f64414237464b4e4e494c42714c416273586f4d3671645a396352713072655535504f636957713265745338376a716c694b334d4e3132572f6c5568664c503979626a312b304863454747685a6e315a6d6c50586e7943712f51375a524447587856476f422b375878786b533158546a6c6c484b6f656942305568302b2b7968786f49485876624e4843546530634662617241544665632b4b326d594576692b42734e5279724b4d666373564a66374b56596c376b70366e76745142673078453356356963612f504c366a7772794c2f414b696a54716166777665785a36534f6f7166744b574447697737476d6b75574277343055505a6d6573354451714d706a613173502b4d496579523254444663646343767261555571485661395a3830442f3841473676597848534a5a456b44533031696b56416837304d6659314e593855316f4f6d347574333237334a65797868646a5443665279564b3045387153354968585335645a30302f746679673174327035307a56705866544565486e5474343945314d414a645a6d323073623933484c3977732f30715335337345334153356b43427a7072443753636a572b5278326c77535a6e395a49696c4b4e476c6332685a51304553554a647a6e75702b753550587041786d39694846382f3841324b2b41346f67314f636954786334343163335a394242526f6b4468546779615a6c566b7a754d467a4b4844523949546f7a31523570454a2b30584f2f6f434c70373232793879773178724c533157776a664b63776837676f363034714459522b305a2b4a64306c55382b5a7267372b7241427a54434b31424730546b416c366a4c486a2b724c4b593564435452757663354636615672396f3230614766596e764a5148716b30706e726a2b5a786e534567677332354864617157353675727a706a4c566e342b7a5030624359787a55784855396f7833445958792f59364e49732f5654672b4c70382f6f4364557953586e6d4e4d376566544e63684d4c716d30736877716377644368383547784e6878707a50734b446955554238706741676b37763642576478386c6b6730654c30704344564a79324b6244306332345a57695644656152304c6c554a4a6c75637744496a424c756b6243532f6752357432637a744235383855305a3951564d483247716b473836786f6274663943646e566b63376a393755714551354d625a766d4469556742714b5a767777636f707a536a74484b76665774366553386355446c77523852714c397179666a7a75345455415451473871576930796178514436592b65387139504d79594f7a6b66526a543247334652456a6d68505975695a74584a4673356e6c6d31574e614153464e3743477a7066366567516d6d444f745252656d5a2b764b72374f583943783732325156444c2f4e7a57716e534368716443363576474b5575592b7a4d4e695a7749416f64664d434c537833493064616e50727645516e4e5373347971573067627330754f50395430706f57695769774f4e364531414953524a2f52693476366e6d37496639685761615536565156317274584f6c636f546b2b5a452f31354c6574593734766a6a4a6a4c7156427968553479646453344f474a71374162766b7456756e4e6136716e4d6e3031685065485761506b4c374d7531645973364e7a67455a334d6d6f6839387875347a734878544c366231487743725a4f61475a3964444b30364f6570636c77792f595370656a6c315a376e555a4a3361445873495755434e59696b5a4742544d796c73356746496844504b50496f6647373673503547374439434e6b593136454d544d55324b525972483564546d536d6a376a73326a4a58304677756335483133684e375a32504f316137754d794e436658373872764866416d5259584635486c486d657a777076474934547934737a4a64566d35656838657134366e647a54596d4547476c445848626e582f726961582b78564f31644f63377338527a68386d39522f4c665558795879445a3954646f7444647a446e38677a66456342577956474c6d356d626463694750527961464f77614f6148324650654c65476b484e585050504c5145673752574b7879696e34614f6146737945374f562f476642702f56337266487375796d757a4d56505538664363335058577a5079324f3751362b6a574e302b726e55306e3872546d3044677348666c4739486c38354831784876642b685964374a36507336326c4e2f4a57545a3042714531316a4e5047735a644d766b436c703670544a4e34394e774c76357570386464654731733677613237565071375654394e55324a7476687a3759383155584e354e506c326f6d45582f3970544842376e4e4434776e61667644596a30452f476e7a6e31527a752b5161764e337876783858517a596b396c474c5073375563447452533764614b7a4c6354456c666e4c64786e50755274646d304a72414b2b4d6f476c377858356a744c3652656a4f42365a5a36504876457648636e4554557a526f3237714648715578793144704c326d6144744778744b324452435353396a784e78756456536169704753626c746162635a67584c69544c6b7a71754963372b4c577249523979452f4736346b36446a682b4b6c6453616d4c577a376c6739576d4c6f667562345136395a657a356132367a3877362b3354475a6656587255735458557074377335665773537564675330506e6d2f6647532b32636c715036784e35326f4a47633654557335414a6b634b776f47555032435a384c32303061516a6773537331786175566a3164536b724a6c5a6a6b3967483762545638493041484f67784a68385936734639367a6b36713751534639643161454a304d366e3433477836596168646e336446384d396b76564a415a6e435a4837686a695344645231496e376f74526d6c394c366c507a64656437714d3834616c7345355a4a785a5a4b542b6b6b4f4b4434756c38774f4e787562533846364a6f357035645463534e4a5277633753484b362b52614e397061444a724d712f52576f4b6f577530732f695247636e676450466b707a675430775a305379616959776c614d344b3463766531496e4e6d6f70314f664c53313746754e4b37474c7a347a71576661506854477077436331335567456c682f5a58336530575536514d7330745369714255726131467956746931517179324b64524a6f4c6e6d3637684e39686d7270747058593445674c6f744d65556a526c716f566879563974767a693457674e4946516974712b72306b6f6353383066386871554866737057597a7450687045474857773636594a614a3138704b66394a525055356b7965746e6f43566f746e55707677674e585449767431304a2f324d366f4c416278515a5351316f73683739386e3150576f65304337796d4772516e5733324c304d35694667704e587777776e31564641794a56536258547a41376c42423875706b55452b6166746f572b617a50374477416c756b79706c564b3978517a61447638413031787330675a3057554177716638416374664a6c696b48765a6a502b4e7a4b4e5242544358586e5531777274646e52324d6e4c4f6776585958614c5279526847663554636653704966747642665063444639576976743536564c72344341633959437053395034753565684b4b32386259315166764d712b5662514d4159715033445766764e6e394239623979526e736f6a6d73476252517a626539644f684c6349455049696659492f59585173534a7637637048764d4a6d66434c4f44542f51596162724b374e50326344506d5672664835425048436a597558572f6b74436d635454567a76306150336e43487a7a49424d696665545263487334416d2f596a534f764a48797649745879734b506d4f2b7a6b746b2b6b3769333332496e49464f594e44677037374f715637774e522f49645a644443682f5379622b6f55766b394961677a383561315a5654714e6d6477374d32505135384d3670525478664334436a6b635a473033665756304737574b5a77622b4c75547245356b6839354d484c33554a706e3457773534664c38303837714a35685974487470424c6a4e6254426f4747535239382b68394f536c745873696642546d4e2b30624a776f7a772b583434676232584e5a50504c314977394d776d4d4b43543965672b6341496e527a415a4e444d70735947614c57746f6c63765273556e572b4b5a467174536866746f443748366b36667a474e4d6637502f414b33326151747a2b66334139623450354b6b5971796c61363739736563774c432f644f6d63366f7138726a6766705a765a575a396647547339342f65634534312f4b61327562622b55436466527264634757796b6d4478733962614a33696a363248724a6868654b74585658784d626b36575064337236573067432f6437557463416374714933732b513473785373316a3242306773565973585433315a3955534230687735347073706644475372517a794e547130664e387a766c37542b792b77656c613269664152426c56617a6c54597a42617237797045737664624c3973755859385557614767487a4a6e3930413574522f4d726e474247786e32434f784e452b674c7a6545345766705639654b323171766e75377330426f475647684b786b636e794b644458646b773858523850434a3750694339494455616744374663322f4439784a4179384e6931564f6a7a644c6b2b67565a5a4c54646f73302f626f2f77416f342f347a4f7951664f6e357358326970676a4737376b6243453650616c6c66326e7241734a4a584d4254615a7a646c466138714b4e586c6b5278777264484d684469636b792f5232334c62395558544e56784b307a455845673038786c466e4b544d656954476e30584c586c772f76563147577462636e4f30794b776244626f565466586a644b4e486631396e5752387951443454554264554951514f7a73525435464c5053707a6e5a394d744e5668506a6c76797573647038722b7173574f78464c544d3166773178787444354136687151453553356e745a54565442524a326d5777635a58386a464b43565335656f7a7272346e4d57353338546354464879582f4f6959596e634e585649344476685864435453676d594356644256796e484d35446c6f5136524e77486b754a716673546e5a5638635051346e692f32347a366d6a7639414a697a554273454749436a705a6c6674677a3868716f6e67467457745a565330566a793664576c584f6f413931457268706a735a434b564a39317668342b504439666f4a446d49756f674f4f4b592b646d316a3047343833537a786170444e4265645567704c50657968516a5177342b6b5861755455494f62674b6e6252554c544833327a7857667948646d47434e6d534633756335723545733976632b6d53676e7279376c3537535a51684b6e433533733472374c4f72454533302b53534453724c4c5166426f616c6d6a526f6b3943416565576675716f6f447334396d6f62644f706863466e733537464a417a4e44536347534f544a5950465a31714e75584d6364466b7a47637653716366735763356c747a2b4d734762515a4c4f4e66656446376b6b6c365666436f2f364137314b3468374c37374552352f2b4154577a4474794b77382b69634d7752584f3553563572633931585a50324b5162774645672b75642b2f364438636b5337516f7053616747317a476d356f496a6f4f6331696d7351687a5864646b39466c41524c397177415a766a4648776e4e3849476d496c6a415a71423075524c4d4f543073707a374e4e62776e496d6d357a707a4e6a75354f666f63704d682b5966354a6f49716371783346424751342f373072473645707950526b635570596d5771575a534766644572436939764b4c424c532b5467687a3466622f41427642367866374d5036412f77415151726c4656435a365a37584d4e464c533445637a43632f7661624349565a756852446f5a696c4d62796e334a6d37795874457935357636424f4175515a43425659422f52346d774c45787464656c4b35733867633566307952724f2b46656631537834594b7a6a542f75564d4c656b4831694852783874756b6670637457326e50466c534c4d714d46524f375155596379367530434f47765556396c6e742b634a7567333470546e5759495341334e73724b716966515536314b6e796e586f6d483367515456766c70544f43397979664c4a50753471525466663742547754544d66384151476251356f5058384a716171645977504f566b7057647162417972696d7a792b785647346b6c723730534876776a656e39546c772b63414779343172596a51626b594648786f6e466135644366476f707a76702b786e614a4c6d7665746a5a557345564433706d72514835674475644141426c636a546f4f464579364b2b54303970736550757a4d45767054523042334f596b53393141777a6a3742537a73672f4478622b424d31636a51644e307143664e6e34526e7a4b486735334638416f756f6c4c74305a6648374671346c627954376a37387839536f2b3071524e7969684b67666f314c6230314e3569314b62464d55476a333470677971636d6234594a3645326d78694b4a516f525a31644266384134504e544d315031674a6b344d36436f4b6c764f57714b4f696168616a515838623761435650716d6f4c375032784e54484f54465437503073574a5652395a335a7a557346306966666d6d4f57783435353250564a7a2b59344a5473304931786d76323242797a48664c39686e7a7549693938316764345644577a4148786c6f3354354d7875584d42776b6736363541735363724b4d3349314536433637694f566a4a30693457744e527a686a732b58336b3457674331594d704e7445344b6b687a7143366c4c394d6c4b3161706f6d476a505454666d394b6a326a687a38436a33392f792b7a774f674670483046714a74536557374a30503431792b78383464316132304854384c4f6f44377a6564343277554378777037306a6d706f2b79737156684f304a77614a61434a723136764e714d477065395a72785a4c44554e6d3277653661776e714e6b4b574d594a4c6e41306e37446f2b5a74644a4c7057445637334f6b587867306f3555544631753654744b337175462f433864566f554c353776645050513475576e65744365414476696d734d2f36425a6e4652634a35456266667043714a696b35326e39325837795134455849566b687a6d63677a522b723267536e37385467464e43763851682f6b5175546d646e43575546766c51756a736c46764255492f4e6c313936455a66564557694f6b50476f397764616448733578335a3367476d2f354938696c38496e326c715a524d7878783256313071322b766c62586f5255736c794d7a613636366f54543959612f3138646276684d767071585a2b394e507647696a4a6b7865572b48486e6a446b63426d625058586e5a777554334e756f4f584f4b526b384d4d2b4b4877787344727a6a3737344a7633336a584a2b45396f374e766f4e374d6a4d7746536c654369553258364b57556f746b30686670356c445a5a516c78333063554e67324a65546665796d6d7557594a3530484a58376b564372504b4d796430693535635a4758324f6d6d64765a5a59592f677a4a76354241596a732f48372f494a4f485179324877574b535030412f636970312b35495257765272757437304462384b3055382f6d747974634f6737555a5737505866785042557465474d2f774133754c69454d36622f414a5643514b533451463453326277795a333852712f5038335270303330573656575a53646d5346486a43396e4c4a72714a31354e482f50474b59746f7a4b7646546531697638416f4a4450714f6c65435a7343344137486d7a7779565a36356c4c427569376e624755587257754666777a366e6545716d5a7a71674961484f5579443341326f7a583555527a436d436633785649327139533333553532687a5659464e725864454433706577314a3938686e314c6c5a535574396e61546e6d41646757313863505659594a376e484a7a5169596d722b59663552433647625232645358494c37636336705842784b753857317a663163637935326b6c6f445046345749713072454f6e69706c7a3472455435733168505467686c70306f4d756844397267354b5346655775594a75674476702f356e395a71656b46685471324c324974676d666f4c7a57792f774153564f54384150707a3866476d2f6e735a2b4d6b777579334a625a3158755a2b6a4b774b51346c584a5a6a424b7a7948714e575a55454c6732332b4c6c5848657a45676159797961626d594646534f3549563536515753313870612f3945774145492f68353249774d305a75546a352b6a585258646f336146306748485765554547544e4a506b76556e59706a734e53536244446f653470755530706e733530304a496c304d7246737a694f677844786533794c53664f327a53677a466f6c564a67726a56417a3757524f772f7355796156524b75792f34396a4136346a614668754f543551416b6d616252485557584e5042506e33766c4a65724a6e3962624b56436f6f6b57515a7170333242426f5a713178664a4c6b367454652f495446487748657850313568454c4352595a4a354262484f746f596835692f30637970743556324a6d33554f6c2b79476a56787565763576624f45315242376e47355a434d797030686a667453467572645255626f653473444d736974554753696b6d38475363515754464a5752554d6e724d526f39387446706d445358394e764f4b64554538797165687573394b566b6d7a2b4e696c7a672f6a7062737574626971697a6d362f5967483664636242574c61444c2f546d753934636238524e434c36653835444d3255622f414c4a544e486f31616d777032503841787356553565516e6d357a467334346b6678704a525058523048502b4a6f2b3566764c2b72624c6541713764386f67736d3075574e303741624e3966566f53576d6b52314a305a646f5a65794c567165796867736c6a6e4f396a7632364e7946386d35376b79615672742b63686a4c342f665a714169724e3869666f545a676c412b36394f7443364e4d6e6a345430746b646e7143653667626b506f6b52326e7643535a2f5a372f414941697775716e787a506d796958503947336250554961427079695457536f554d6772616265564f4f763964546c38492b5555442b3243776d644a2f50336a756d4f7a7771416d59332b556e6e75552f766156564732656241446c35625952317a3271685336584a4a7564696d553876373477464439654e70685a64796a32706a6a57664d534344694253466c503148302f463954596f6c6a62715172704647674e68486b696e6a4a382b66507a3942334e486f386f4a74726c652b6b6538582f546a32664d477144426f7437504670383749776e624e567577325973727174624874544872643552317366374b6a3547754d58424b637a66616443514c33514153494d7a4d795243657a7556644839524e656e6470553639365a36587064616776317064347a514b3667757536716e35574c4356546c70674f5652547874506d4d35644d6f394b6a51646d6f307a6345743057677356765a4e384c4a3063663247477a68304a37704d54533752464d38776476503841667a663647684f79336748306467794a366d6c4c704137506e35362f303676377039526f617930364f34716d4e55724c506b7134552f38413733714f4d44633734514d3031426d5a4978305337534e386e5938437248786d324a7757353336705a474d2f576131486545763571474b35302b2f57723538514e52504e374464506c74342f634b6b757978686f356e5546656d524c45453748596f42644f566b7337324976307065356c586170342f6b70373978355670452b673150753463434b3844525664714d6a3063576968393362495766724847385451686678424c444a704e4b6556327756785568383332474641522f574367766179652f6d79426730645a796873556c4f307159736e2b4b694d323854383530753474396c6631426847636d5974536f6c7557317a6a732f547a63704d687a514a426c5a6352786532664b5a5943564a6c7a6272416a3041446b743874454b584c6d35385970564b4e446e6f357831482b483344625942546732322b336948643972467a614178797976434e4456616172644a4d3570722b79756a487a73545243726e57546a705172357932674b4a77576c79574257336e3131314558316276737a44544c66707a514c4a44455271647038564862794f70616156546145384b7779564d6d57756d66366a31436366476c772b6643583954584765626f42636d362f433552504b5133712b32725a596c6a6f65304f6f6f2f6a394a382b5070792f4a4f3667745446465350637670324a702f626e47775a6f36623764334e6e4751536d6f6473354d386a71575a715945665730713431364546584754746c6978555439564f6e2b5131432b7648544f776d67347a54384a4763744a306631546a57664d53724937654e416a6f305a65584c6e35376a436534324d306c534b35386d414643716f33424b54703539546f6b706f697a33756e705534426e536c624765485153474b50427641554c6a6d6e7047794a7648506b623837596f5064574b30685a6d712b3450614a324a613332724d6c576c38664a675971735941437447764f756c52327a7a3950496d476365534745314d3755756d4e693654535363576a564966744a664d534641426d3549304167306d47742b564d3243616d4c503672524a6c56524b7a30746c7068386a563372557278597367566b66744a326c714f51684d7a6c46395a7a2f6b6b5939784b3276325a45776777707146796b432b414656436859696b61725075617a66487845586157677146614e7167544b4d3568654f625336684a6a77456762375036734d73333742535a6f672b7a6f55546f707a73594a3952533949686f316f2b755450383133632b646573532f333859435a6e6d702b6b424a73645451466949707a3638615361386d70573243684d4b4a2f4a59533672766335326c496c6d754e7731706e4c516468396846696b4d6e3969787071364266586f77372b58495130474666714d30686f5448655572557a444e6b386c3148335453364838746b554c6a467662466a3943376f6451306e4b714b677745306f704f4f656c664f33394255336c6c46357258342f4349367835396462574f5154485531524375553735446147776c3873596a51575a2f322f73425962442b4d714a316d416156343833664965795a446d664b6a7564715a6b78554968747175466830364667746e324c74486131517559777031366e6a74513835565133684e6d4655797a5364513862362b4973624d74686b7070795a676a796c526b44613377777273706a483733386369643259646a426c3438525a7a336d796f6633384954482f746e534764743378444861784b6c544f75557874316142667866796f456e30396c2b526c545a3738372f6d724c716f687a2b2b367568414b576275473433663841446c6262666c4931585a765750724c59544f2f4a696235646b5a7335354553566165656b472f6631383733335431757168615447477668506d39786e59373266573539662b7467465267503071736e2b5a56595a6d494b737948616261625a304675735577736576794b7267464e58486c34744c6b65784b31394253314f42435a35566859654946396c33515a4a6e317a76643356707837632f50686f41382b6e2b546d56754e5451354264347567713141722f414c6a4730754a66576b33715243336c69536b6446566a416e7a6b6e5776503058655068546e645a7a55304168584b576e3769425631546b4e6d4a6f386a354e305144514e77482f414546642b726457505a6a5a55635433464d52325a50494b2f774475752b5758537a5a77795a4f363378466d756d6a7375577361654448327667664d414f53704c4b56335a6e49707565737071746b585a633939566a59707a52417466636a4f686f7970396f4d586d6d43565435566b4e6c544b72436e36646a682b583766452f59477431784e664838784b364d564755364a3279364341396f4b7447515a4a4f4c794b716e76352b71425a7062553274682b786c6864624f59625a3537676e4d66664b4675356b636d6d704762616d432f53376d634b6d4f59632f4e6a31614d696d66616f715943347858537831745642555438503841625a6a535a6d706857416f412b3067674d6c776354713649617567535035436579413658424e6c2f64303836334d545556316a795a5948476c37456b494e563959625073744b744f7a414b654e546a4b53566155304578785a4345547455644b4d7546434832615a6d664d305653497a43496443646941393949726a646f6534766b642b6c2b7a49503451354646624c4a70687a6e6c45367a526a2b354a7464373246524b756b5a5a6c4d486c457031565479416f464d6a72583877542f436c644d2f612f74505741755979583145656471616b584c4b4578595979685a4d38364d33724e4e31534a432b4a33756d637565644851423870652b5543306d45624f75726a624d626f474a54554d786f64476846615a624d6766666d64704368744e797136766c52354e5a5045546d4a61797a356f6a537a392f582f512f4f7345715a2f5676336e72774275534c6a534c716135554c6f7430744d75676d3030567656565257667a652b65636c797a75736f6d2b7345787a5366387044676f7565746559657258665a334d34304c6d4b6b706f70534552366562666f6d4355366e50597038744c4b735534584d6a674e7a4b4b524e7a696a63415355382f6f43634d5573476e526756795634387257534333556a66773337553331534a6e585a3652636d6f6948536e574a4a46507a416d71664e346c4876352f55386531356930674f4354505954367378394b4f5a39504e4136354c5a722f414a34584c347654356f6358666d6c3270644b51575441704d386f77627744446c44594457745769706c424237654b7950642f7933436b665032696b575472492b58736f576c6a575a555047664c7a3479396951436a6c49456e2b6762307359756a6953666c614f656c543336457338764f63726d7a594d5565777374703069726451364f366c6b7a52373332397a53352f783335465441686d70423755366167504e756d2b5a7a7a4847375179694e2b4755794a6c53795755476b766a7a586579614e59534e6c64534551676b314b2f6f453636626c387a7869716f715877704b71334e7a5a654b3051587170657575392b6779684d72464c59346c49347778487078683162534d525342447338687a427348454e5543474350306b503547764c486d6d786575374d53397a457557656852384648776f6c4f726869514166436e506f43394b6c6774414a5652324d347970434230554e3177376f477a4a4a6264472b585330466a51763463744b65696e3233456444666e576f3241414d6d4d7a42554865496975306f623074307157324b553868717272304c737a7657464f63365a4a61486a776166306b776a576b2b6b6f454c415075696853644b50522b4758717859434b4134795278797831532f517437485a42376638415764736169467952644e4e615a6f5a386e436372675133796550337a3764687a304b4c6b476c49643249323644516e566f783057553171756f79574156433254324c4a7444555454496d454a4a414c3470583270326f4850542f78334c6367796f6c61614b716466517a71394576474c5a4a76494c38685a76554b6d5a3455446430744b376a5a6d634759765a5454387133415a4473463833782b6e4a79615657587971576e7872626f5a6c54306430585a556b6d454f646d61464a392b57636d416c5a48384650502f5a716f6149465361774d4b3833636251717a636d706559376e4c704e435a4e6465655165506451654e755a4f56705648334e5a536a535575583759476b4c54546e754d6962476e3376706d4d6434494b78642f7741562b4f764230374d53366b4f794e564e7036364c4d324d433866317a774a4d72782f7741664b6b6f5630436c61564a622f4149514f427774584e3975614341544831303250486362787647387a384c7438697a4a3543584a354c6e4d647a37324c68715443374b566b555a61694b5543314b6b39554b2f746b714146324a2f6654647959695a36514e6b5045664c7337796a4a35735437726256534f3644677a615772743171736a5668796577573569716d30457865676c6372456f57786e7a664137765038435945435a696d685161417031356d445046643955535a516d574353566a71637266544e4b7676756e36743331575061597a4a70787747652f677055336f506f6b643679366170693678664c624f786d333070733751315075717a484d584d6f6837636e74465643795544583375702b724d67432f36333041794851736b72524c3964576848563932665132714f6a4a384b5a67347844697531574d6e6a6a68596e516f4a5031365a79524d346c45564855504775797667484f6b46654249552b6f66366f46716449364f7430344d30652b485451396a5448564e636c51776f68346c78395a6d505433356c4f6f70346c527158575a6d335a6e47413579704f7a366a576f565253484b4f7434636b6d4f2b625262667a32533538566b374775577852554d3050306a6f675873536e332b394a724a6165586a4847524953734f477972756b746d6b714b5343704a4c52504646624a5768325264516c436451454a725a474d707158376c4b4d4d305063786a667248565476356368316252617a78352b6d317255466d3554394a43464b6d5935303164476b53714757564d4f696869703538586a5257306c473735684561586636754e7337746f48525139794b476443353352397a726649386a4d2b486465575a4a3245636d79423876376e4a5a446445547a66796554322f58713658324a50383576327044354f75394f6e784f62322b5735357a566e3867576c33396656645135686e4c4f4a314f554d3948747a2b544a4a7061703841515a39656d6c7478575a6e674738313362576f6b6e71664d344d3436355749794f3371792b744f726a68666f746c56794764613579657037416b467a49412b6d4b786f4d37477933674878655473344f5651434e4c2b427934315354714c6c3572454a7a594f787273684a427671334f5566773678572b6341446d776c396e416d3554397473743442797566504a782f444e5534506a304a4838545962455a63504254553577584c306b7754326368474e69347a4439644d2f774263636b44353736676c31394e62575a672f46327651567a51546e794f777058464f79654f42674f743453584a73415a66714a397966665153545930312f6f30304132686a7575726161644263745963567a6964594b69637736574a7434794632686d734e6678554d4d474d373830612b61514736592b386f6377477175682f47594c35744b5851477448426d7a4a35356c71334e567a326370584f685365464471465259524c414356554248542b33546e2f6f4148566b2f79302f48714c36654870766c55576231796d5553564c6e306e5476433353792f31636e6b3475455a78486775656b316c5738566642546638416e767a362b6e726f45493661464a624b7a4a6c42364a733557717a6c7a4f544b6d43657a6173354a647536533351314f36365765647936506541545a39446e4e412f692f7167546a5579674730507253434454437a51304a75342b5a6f43742b31566176717371357a756e59556d4b747655766137363347456b574348614436434c74454a4a6157316f7a7169585a7a695a422f375769553846786430613131664d78566c776d566230577a43352f785a513241485038417543594c534c7a48364349714a6c61697550384176574d47533551634a50586230713151584c2b57645058496b5a4e5130512b69756e7145306a4e37694f3350352f634d56654b793777583330647a374a4d3567737675366936354d5235655a2f474b574f522f4a4c4335772f476d6a76443430456e4d4a752b5a716638496930783047725071392b4d7668766c46324c354c626e61574c705a63625638706b62323779526e3858506368366d3046552f746b3670364e626f7a5568336a59552f45746641462f7a363176614a327a776b616765512b432b652b4a304c755349756d6e624c70794d77634e4e5739654f6858397735646953394a2f79327734764556322f706b39496a466f565832414272677350574a7250616a6949506d65517244466e6762567a58356d35695666792f4f5737576a507135546f2b436e362b4837486a4f7a424576734752554e564a6a676265554447796a2b7074575a743877586f6b58737279714b566c53374e727a74665179374d374a6a6c31394c6e6a624b70746a4c3273575673785436576c7459334f547a4d62504e4d364531436a72576c4e546a57664d443663694c794435757a33366d4665764e6e5a497947625378624e6769576e6d2f325451575331367854354b63386a544b3667763170444d564c31434873763250504973507866386e765550784337507a742f505876344f666f707058745435715375337371693363436274575535615578626b6d44597462454e536b71534132313154556a38527070453861794e38504450567644317353736d667057426e31565231794a6c2b75303751324a4a6130374b734835537375663956643966484253306c75573659414d4b477177325974457877694266452b706c3367746e476371596773746e324c4d2b52656a534b696f6f74354f69656347304432584c306d4d5a532f6b365153744b334b556b716163677271466c2b2f354c523630463744416a3633522b77634435464f33616264584e566b384f485146463035546936686f43576b3558314a61566d6f37553755444e6c43365179704b7037356f61313559614d617555495a5252656d6843313035564352614e5179736d4259474164612b6e6971694651642b616f48357a3254696c76645949746171736c41387332536937526433345941357277646a56336571436637426c386778394f5977702b5944442f724157454a44626162696a37384e3962616245366c6245756f63693647517151576e3475797a7a32554152476f513443533645613247584342764574367469484c536e70325a4f6644433836424b666c4d664555572b503536626b3245725071443638377033463959795542703753463037766d743848312f5166455a44633371545246437845504e4b783874657a776b6c4864725554613637514b7956553953616d5845716b4a3631495655746e744d2f6853714a744d39516a7a4b314c3465795157637233466f7435724a414b536c30435945374775794b74467846397779466c4a4b545248786e4a6736494c555971374153314259643431387074396b4a7667622f486e576d67624139304355625a5a43615a793979666b5237766a535876315632542f41465262307a4256617566586a6a624339334354396e7943666466734d6f65485a5961544e7a50683579576456566b51396176514f5a33666d503677673732434447544e3558524d457957496f7938767469526d756b61366533616e537536502b50343569395453585648557567324c4e5142717941376e542f5164426572336c534b6d5557506c577164326b6e6a5447616f6f355674755a6d4c5a5145705471574a4e5a5030336b5959357a663841553649706e4443737962545257393676724f785536543731555047622f7742543253613849334e715733443047437850446a3630467454796c5138536d5a53663642666e56766f4d5943326c48524c3064532f344731524d366b50747637314b745943537769545a2f774176514369505a344c66333333764f337766583942474370497669733048343147725448726a49726b393150644b615a5879586f7a396a756339342f4450436d7161686338787345785571763841316651357343673671425239666b34774b4a6e622b452b6251302b767343466b43356b76706d4e7a6b69495a61422b6273307a6854594255395a2b7a4d46704b644b554e494f79515a7a414a7a464e2f6c554c46304d39626d366458566c444f49353771696a627775306d49737052556f6c6b594d506e44625430666b614f592f7077687a564f374f4165386647344d753167746e4a6b6d70787a4e676c755934317058377150397a68396a75462f51454e6e33776c66587350455a34306a4d4379716d526c364c78714b57304b7046695930564b546e314630666d6e39703038464953657744564e596d5a344447426b6964492f687336643750707037704b333336716451796c546e36527353576c38524579716a32544c427a54656348516d4d457a4159543848312f514c516a4f78364e434a6b747356487a4b73585652754e676862333745444173726f71574e55727372516f58437354557333624c334158564a374b794f505a38786c6c333536356b50736a4f546c4455625558566a4b6b6e6e65513858774f4c304b432b6e7a32653069576c6a667365786868772f684c2b6f43664e4f55614d353058654e7a65664a4b73497075765144757a6b706b7564625a735566616a7058724b4436334f4137356e54475874374d63794a372b62496b6e706a366f62506734466e3739766176436c466f3878637a51646b796c4d5554364b4c4b48574e71664d6c684a714a33502f6943336f4b4a506638416478544a76574a6e4d63626a642b446b4e73724c4d71354b73713133616e30664772696b71492b6456784d6b61654855366d5661776174382f66684a335641667539795a366958775a32533170753351665654492b2b596163396a463039494a577236496c5037526e64384c6d635654304339307951614e48766137336743386979504435487a316b767a6a515a6135383358527476616d5662327a383541727450372b4b63766856306d6b766975634d6e4748316761484b66446d4f5072312f5156527253656d436b3847532f31546239547449394b4a546d4d524c703173752b47574f61666c4a4d374d4c4f434c415032416c58742b4e546c4763382f6c39782b384b7039467139486d686f49386f346d5067386a3039655556546a5975736162656878524d584d542f414c33764e4e414c4d41542b2f725352704165546d325a7a32664c312f77446f587652643648327250723531564e66465a32684432583946774c4a4c6d6861443239364e445072722f626d43667a6748457163344f682b34726a627a5a6d656277322f446a2f646e50306a6832682b346a3064716f6e7a427970654d624d485a35776b2b524e45335a703535356d4d465075644f7864436542772b386e3443522f7741413443754845356a4d782f35662b7638415638516a6c765078323041342f5238626c3145366c4e4e3356305931684b756f5944456e65704a5266747954365654424a5a4d514d2f766f5a37412f794730634f4d7a622b63562b482b473366385878644e73415757442b4b617a7a5144786e786351664c532f4c686a69587846476563365874464d434743697164355177742f77416c664d317379573850684941675261334e4537746e2b3734747635657533504c385044414355595834686d684938385377526a4532334d4f504871546e6639522f386f644e72754f46433247754f64367a367632666f79396a5458776a5666686a745461315a6e75694d7838393973634e33775734323777485a4e2b455556484644346834773146557036304c342f48486a456c63336331465038636168464a6644795050506f415266436b794976306b7639732b57362b3335527569333473626f362b4761347a32703263516d76542f414244727a32337a654b34464559714c5362514f44576c76436d6f2b57683154474c4664424c735351632f5444643744644f72327a45384f556a6645346d662b3734757a395932352f4c6d323374514734375034683231525a6759754e6653483863364836574f6277344d682f77436b654f4766676b3737445038414d6c2f38556e7a326d782f3634736b544d56744e733535662f77436264312f3766352f44746b2b4a352b475775797535506933696c6a7a5231646f647846664a4f694f754a6e4271396b6f4450374c7366504a5a634c76374e4b6e2b2f76777261714c62387a743356696647643336564376637a3852342f6d38657a7645383441664331314e47586c616c456a594a574f427157464750424c4a347a51643169656636576666384133785a47353374544e73557875336646782f705862792f7a742f3268646669483466384146312b337844476a5249327a4f5a38575855336b626457306b364b4b416174765a666c713046396430766342702b45584238487357793054777865317433356363663841382f5062662b48687a4353664850784276556c7a6646353757314d5974506447447956315365565450565761703678367a46466a7675743461676e487654503553534836494c54617355345a6a562f467572486439656c2b6e6a457a7578626147556e6a50345854516b36487869444d6e31614970685a4a6e6553632b7a5456593669466564786b35475131445263306c663447514c345056694a682b347a6d6b527576377a6a75374f3374526a48307a2f3359443850452f774150587663422b4a51756645492b2b396b4f35514d6662375741785348304d4e6b68647263785842446e735370412f7744744141352f534a3665387450646a627472384d352f2b754a2b647473396b4a686a6669426e6975582f414d65795a4a6d4650372b313557756d4f3875793658454a624f6c6652636e693350425a394473337a556d596637544969704d366d4932353965762f414f4873774f50347a384f4d74446b2f2b50654e52512f474e5377444171696e4c7677324f596165466e6762484c6c58594858456e394a3578715774563058644738546d31706e66742b4775613776726248442b553537503568485338642f42396a55616859506a2f437a71756348586f386430644b586e386b41356c4833613738393631356f7a7a7979743935474579442b682f684f5855453438334e5035654665507a356f322f442b4c38516b632b442b49645a4d6d6b7776484f443372652f477a4f666d7a74644b624864346e745377453363636c686643332f4d65544d414237524d34453035767a5938502f414f622b4c346364506935676c5234312b484d644374436a423856674e7462314c346e47646e334179356b6462522f61707866533771782f626858386e2b4d7a6539534a6f65784b5a746e724f33777a584750444f4f484c7534375a357476414d7938432f44446b7338382f6a6e69736e4e4f722b61632b61526b38373950347032314f3044597a69667364454a576b4a422f6b466e2b6f57714e6e394a6d2f4c7433646e6d3365506c2b582f77426644756b7a35346c2b4767386d6f623476343633714d75795035614d3230686f46707a743056564f3673686f304f4a4750336b526b66514273367663736e4b366d62346a624674336638387a302f4c6a48313342686f656b663453747a657a36586975475753386850344473746a3630496b6a6348412b437846476b716237792b3934766a673464502f50796e385452744e356d31747564767738336c38584a2b4c79722b487a445054394e50775671792b77366669666a544a784d6f574a634e5139527a4b79732f4e6e354d4a6b437947664e317364414b5833684f37536c4972703648744330544732756258393533394d642f5a2f462b62646176337a5538722f3554666a4836544436756556624758346a3566355834716d717865467a4a305652417a416e514d333174442f7830684e656757317356502f6647526e594e3150793953466e4b4839576e6532336a6247526f68736548656b4d6d56685a6d6836532b746f6c6c2b554c3852586d305435554a4a517832626d62517831533655767331457531343063654b63775445794f5246666150737962524e75752b4a67566d586a503461362b663175703654666b50672b50682f4d5331466c6f634a61587a35525a4f566d3135734a61523646553156575656312f5065336a61615770653259505a5a6239742b4f417731636a385a3474516b7a2b6b66354d75512b7279514e6a4571376d524a39316938486f61536852557778544e4c354d516649755a706f2f697661667a4f2f5271694e2f77434b4a6754545733507738587568744636522b756548335055795767654b5a464e6b364f536e36304664613550685a6f4c524357574b53567733584f704e4d307961494932786f72713478756941757679623854644168507833306d39624d58593041306f57306c6f5a466a70702f64504a6167516c596c4449565561444f536f2f5469614649414e4d307a3949584d616e6661492b67653165512f695169376374386d384f396557506e76625041552b4b3875616330574e5a5737782b4b617170584e61796566384135743937546371796e72506b2f774150636d50326b394c7849696d66662b48614861424a776679507943734c667a3957496f307958335331315a55624c72692b34745030364e43455a366d6f714a566673614e3149307251356a4774343139665153334d3050786735524c6771385439656f4f5449577743693859653648513042544f42727a4d6e753552314e453266644f4d5367732f365a52317953436b36626d44474e58726d7566586b41336a743334584a6f6f794b7643765842394c56466c2b50556f7a4d546f5a547449696b667430664a74635a4c6c684b6d4e636b456a484853644e6c684c6b4238792f36744d61765864414c38796678643863664c6254365a65766c34794d347a694f3530566e52435648785930435546765442506a39786c70624f4b574a42644c71467965314255534c695065543864636a44695077314d4c4256345a362b354f786c6455684a2b4c707967786b565651707072302b797031487578496f32616c62714642794f63702f75574a6664544e4966574e627872362b6778307450384c7239495a7448774831695763444a4b6447743932486f2b56686e6b3257586f3659636f65574b626f382f32646e6b626e484e5453537746514248496c2b317877745751444876346a77373070713866396438374e654a632b714f484e7330566c506a34387032524a4b69586d66632f4e386b363570386b4a744f6161596e644c4f7241546e397074377433314239466e346c62764b4c492f465057664b7355777064445758685a6161327a4e553457517879366e6b585670684c733864776f303270396b6e75576e672f3443714a393548573852394150702f2b7462574750644434463631307739612b4a2f6b4f6a46663546576d55734a64524f51573450313579504c2b62367162316d6c7754476b4a4a4553534a342f615a787671486d777638546868325559586a5072324442377a2f414e4c6c3864303379373054733357456e444e7358564f7936756147772b69454841343046534832526438697a68524f706e6a616f5854622b4e734e6d66512f2f77436571574a306570787568746c47694e6d4e63552b68586761544b72456f686f2b6e6a7a386f576f50686f6c39377942395a72564a48376279456437622b493579614d474634393634344f726e446f566165625776793131794848326a4f705053685a4c516d7a4f56446d6b3152752b50375033434a314d2f4f6759326a336e573249447a50702f4578386367624d33726b32704e504c666872673252565975616557742b5032584438663779643146566d316556694a365a6a516c696578315545365a4d7a377a75322f63436e626e344a697249692b543139782f4a58486f4d305962764870707a612b614256644f6a6d624e435a35386c627932716a66336a666c47534e54592b5354476b32786a567a6e68743963413636483464624f544251376e354249546c6474364766703475316b38727a5071353075505448464e524b6e2b596f72546e70634b616231423336375273557777564e48376150777a2f502f6766506c2f44375270356c61506e50354436716462366457656f7648716b3645434a4933622f4b776a777039446d7a2f77436d7a7867585a624c4666723548484f70694f4f2f706e567a6e6241655136483466753864315775387139614a624a5a38375069794e4c424454393875756c4838526c7130776c7a6b7a3633663439625666733630306f324f55574658502f7744425a3163353277484f416a385057565155564b396674577a4d516a74666a7035656f34616d593553316159367a71395a4b61726f58626a563538546d4e53615a7672586537356b31436e3333647439664d4b4d6b2f457a656f6d35703658716e6e745357742f4b5a75316a507a6b5a77717069524d33364f4f78336173327571587877374b6c66424561556c4438453164484c657361735477784d434e782b4a2f69516a4d6f7a6f504e765772475456687443664d646d6131576a6458767a36306d625a6b6255726b687144584e6f554c564572535449533344534a417039306b6335314d3532526b47746678543855344550646f2b712f7166737968703172683061597472566f7a4a6d31305a377256612f4e71744e4f6c4e4872543853542b4b4f4e4b2f74644437696873557a712f686a2b595533387a38564b7649614d3266314a39574344556c766d496c59666c47596a4f7a333471462f664b716679526964526647547a677a2f496d3658386c6f6e385577754d48497471384a3278497878764550786632454638336d76727062713136585a635a6a7643743156647a3259424f784e5654445770632b673931462f4b33664343464a6a2b764361536e4e79557a7154384d667a424c5938532f467638416936343265706e7258636a49445276356d3455326d315856775078636e616558697366364e3179366e62533577703538706d484655457963766843493935487751494e6f355834352b4f507964452f5658313330524c75645074706b78664d38784c6f6d72716b7a3648535a416a566d73646973314f684d3772592b49796a364a704e4e48616d64536667696671435a53666a5831495161507156367677385a4c397547485956356657345970565a4f6833794c4d3352495873304f7230726f53587959676d2b6d377638416d6b5a493150326b644b52414135666850343761796a7951396266576e5065334e56713157614f5a354e4a695333663946512f792f6347506c5048424c566d386e4868714837304358544f534530302f4c544e34356f694a6b4a5a6e685034755074363763396366564f58556751334f79646e6d52354a4f53354538637375614d4c396f64474d6b4a5a714450647a327a54416170714f664f616a34744f7033566753445338422f436e766a65426930666b52366f5a4c744652357849442b61706b6d7175386969386a375866703638364a7249776f6f304b6c46537a32314b38652b71743458433332526e557a6e5a58494232352f346261306d6634312f382f6e717873754a35446d6e446b2b574b7a587735367338364275354a634e6269706e6a324e48745533486673383862366673752b71734a6a337465507534417a4e78667873393663713738672f5749583350356a747a6d654c364633464b664d477a4e6f50505171612b4f6b624b465034625a2b766b536d6968535271552f3457362f2f4145714351726e2f41426e6c77656f6436302b55777776514b747143633939325a714f33427977694a76784b4f53545363765737546e47344a342b49564f6b7a64386864434d337a30446d587833386664474b6a48702f4a503146484a31396567394b2b5a43726c7a585a737651377339386f527044327a514c4e6f6a4e54615975396e374d333666772f5542384d6272627638766834674c6e2b4d2f69377966623075666b70366d4248336e386647725079664b4a36597730373173584f6a53664f773539446d4c4c6c6b376a75396d4363795430776d637349375a314d6266643142614430302f4775644f46716a362b2b713959735a316c462f6a57543557766166512f4d2f54632f52303876526d646f4d3435323138384e4571374b565532454e7975415642524e727a45563933554541394f767837335751324f39575055614b476844457a594e6542356e354472416f63642b4b646d656e74426b3751616d345766647336784155342f615946562f4c38726d37556a687472475263696652623862463753453533722f366f6238757a5031656c586c6876667138436f737a647548512f6d614b78636e7558715372576c4c674f61374834726e364f684c706f3333384b2f7741784a63723071394670375a567965715071443549396b31444b744c4b30766a31453976544c62695a2b6e484a714c626b776f465972676e503558443748416f794d6e4a6d72653175456252632f692f672f706a526f3053582b71336d2b316e6a596d58557771363949487678454d4774614f333632316e38586b6e4337354867304b4641334b5977614270346c78307a62385033452f7741767876307a756f526f4d39542f4143546536674f3148467a507470527a794a6b507834576b2f7743686e71376c755050707557536b71355079794d546d5335692b4163544e756d337239525a6d4c3464344871506e6b6c39566f786a62336937576f5835587874764a6441766b5447306c756e6f6e4b66623938784a585037487755356156726d443330316d5a6e3442656e696e706834586c64796956367962703353547556666f33356578506f72665a305171512b6e37365a6366346c2b52516d5846476b2f3841314e756f4e4953496d463162577a38503868642b5236612b4c32616638356e65766c4b507451347655545a4457326734507555587a4d437a5a7777564c567a33596257767062373665343575414667373475557a5053616931504550414d4b757444367658376a615a4e4d4e4a66523757576e6c537934732b61356c6c6a72466c2f433035624248712b72396a5864355164494131795169625448576f756848682f696371396a4c4c31336534704d39556c797975626a354d67454f617273744762426d7a6b6e5337645976674a2b346b654e76714d7a6a2b52797636706d6531742f714a2f342f3452674e674f696231317630756a5659533435724b5a4535364b32783578356a6b4b2f56522b3272324746442f6570776e59507357746e42434a6e6a326343364d6278664e545444394431734a764c4d74616a7a7133533676322b4d67644e4c39506f4c4e647848517466746153484b70624b6f56675643692b576d6266682b346b4768545a2f4a737765625665336c56526149364a3064712b7162366c7258786961564d4c6c57583265696448457457766a6a2f774377596b626b2f4c594d2f495050356641736173714b705376723455797157496f58385650495a382b526b2f4d67563075557867755647612b4344442b4a78394435306a5847794c544131503032626436714e506569396a7a372b693173324a664c4b5a627451492b386f7a494d3877716371644c6b714248446e2b584e4b7757666f6a6d43656e547542434f536d6f59377a2b423637583271532f4b3732453950724852733038322b6170337a61532b456b61676237335445324d526362512b4d6a424c6b33494b365246453945644354625a4f7345704f755a4c326144395342305876356f4a485358553451465a3042326c784f624e496b4841362b5979794135445163636a322f63305a657332744b733169726d6d54424871336e6f4f73642f774278316f765577357742337a64616c314a736d534d7a6e4d35366a4361684d43454c616c6a374d2b6b546f4b644e6447687a51396d676f3942714573616e596f61796336336958615249356941356e5571436165416b307a68513775705a4a666b31514b6851674f53317376546c7961467841384e443967356e2b4c6156386330676e536474696b6a776a4f51486b30535668526d64745a4a4c5133526730464f7a42686e7a36477a773637754352793846796661533632674b5068454c332f4539387738346b425538544639457457567731523556744f67626c455970714178376e31787937592b36576742444c5a79677742774c2b5a535a6c697a67663044746b6b6d5830472b37524a732b5864472b515a46766d716c304f7231644b373657344d2f507179334a68366b6565384f796647305a337445754d64664d49522f616f717a4a344d7a6e46547957454a756470304f544969746d686e6d75667146725778646a4a33743538744e4a7a6d4171556261584b6348326d53656d6976515a586f61576446414352584d6c3338656876515471667169476b71782b546b6f304e655444427a6d7a4f625879686e2f576f417a79746246335a464667552f57316171476173576c6a5436576c724c4d5857787939366c48456158794f4c6e4f53502f363470425a48396478706d414f2f646c36776669306173365538616a56687a6a686874397473755a427042636f572f755075756649306d49485a783776355550594d2f774135756f426c373453484d51464d43726c51382f6b724c584738526978785473366551395031352b446f4f4c2b534f5872466b56426534473154412b634141356e4b5a6b36693558547070454274702f6c7a6c7431493374426d667a4e733759753539454d4a6c6c7738583866326665526c4e4d394e4954392f6f5072314a36326a576d70367371736b562f54664b6e36463553782f4f466c4471376d4b4b66374d2f774254725555676d597663446147396d2b556765694f316554655a3078556b6e4858626e306f584c776e3648777070564968365a666a6c396775644b4250396a3178754266426d70446e7542726f4f37504e5471527a764337507a6e64475052584932526777566b443839624f73706f6358584a6f2b54356c7553564e6a4666494a2f625951504c78523350616d5a7068717679744a517534343865717a733964576e41582f7457714f49714a5a3553625539337844302b546d597a557372443463326a6f6d2f7242566e7a55314f75665854545a4c2f414e32353733766f5446455037485050536334653050357a3769365541537673386638415a6450494e79753044567a362b486d352b6d6e6c5a6f59345152526d393436626f785649304d56564f6c437979636567545564617a3677554e614145344a672b7059773957723271747a522f6a497557776d4478345665664c6f55317934315145465038684f7361417436766f414262447632536675664e2f514e4b4e4c50344f6a6f3355636c5363314a326f4f72496e2b503730315831733350637970565a4b4952687a774e6977414f5a70714243556f397449564c35423541777074544f6871757834636a6b556c47767356386767786369785757743143394a772f4a47764d544f536a555145324e446b775843774f76343353744f2b59484d3331612f4a56586b3674507833306875704454714c51437a7a3239474f4f584c4a6c794a67316276442f3536685530656c5073667a6e3133636c374f5966636342554e7055484e3630787876334454694f7241514e4734392f643737682b53366b50664a4c48576257746f78596d486d39767776494e7a3744714e7045612f49456b584f357942424d7947424d56683336477655562b556a4e4f4236664a6d512b4e6f7a4e37362b66685a386e4c7148625a5a576666487165506a584335653478563076446278636f51512f7953544476487779696f4a4e6f4d4452477455314c4966466136376e786a4368476e62354c427063646d7635726157646b722f3879304c6662637a724a48567a522b7a376166766d716c6e416950686e68766e4871647461766a66676347742f3568466a647a655a436c577a66616479397a6454643836335064784f566776593657774d325a50442b615959365038414b62337154614b786d657a36364472482b506e344b35336965386e797a7932654453386e6c624c7879476f6a3150486c57653337656c6a795a3256724f577632444c4f6e6b513853414e6d5573754e6c5857423839395763596764494d7277664a55715a4f63336c62737752396d67775956614138526f464e55576c3264504570483351796f4d7065397339344735504c414c3264786d31766b4a705731316f52396935444e4779746572556446656647375531756d7831624855514f4468457479796335586253494c556a7a2f616f674d716837507263536e5050716e646d3068624e57726f4b6e62516763304d754e564a4275326d50774c6a684d792f557a423968756d2b7877334f2f6f425a56793958766170616378724138784a417575574e41317075544e306179664b417058396957456a4557724d51536e6c4a2b347079414a456c6b5677637561384b53684a73562f42355161303347345758737a644a33742b697636712f6b47566a5568587831667971616b425759442b714539656d5a3651716b396c56765554514766793155706c4f614b4a79366d396f7a696c3974633464436b6e4b6c2f77426e5072724948426c307a2b355147776c4530316c6a596d4b4d4c33624d6b7934732f77432f42383670754f597634786e503677632b6d6f633367696466515035412b67555879702b74416d6a4f785955684c3153474c34744d4863316b4c6b2f626e54314e78537a35665845313036766d4e5446666f57734a6f4a567957394a366c392b6945696c7a5553387a667471436b775a5848696447764a486e462f4335665a7a4732684c58574b573177664154674177624f547875573071505a2f46386c744c3230625163785a685a5a52797847675031324f436f726941795a78674a4e49396d34516b372b67486662775a334f79417a497673336862304970794761544e436e4c686c634e696d703578646c57667a5541756d5471584b54333572416166744278366a4c39616e62357235513756713539375273676b2f6468414b566142646b6c376d4532646677616c6739345a38366342796851594d734e7a584268446e706e73744a742f4a4a61794d304d3750774e62596968764b6f5336696831434a386e354a796c46772f497878787a50443253653036412b55584b6d6743572b33516d7137396d464539566b4c2f414c532b56735a5335574a3055753070325278725830474f6d412f68555169426a2f71426a3276617a3174634b377968756f376f766f7339732f57364941774f582b367355456d7a374761674b6b55417535704a442f636f2f684e34434b416d6e6a2f6b4b38335a734c52687555525044507164467172644c4e304a4257357a49584255576738466c53667641446175796b46447a2b67626b6741714f624f6f6f6a4d676c794a39427179554770796339544d5151382b774c70666b53756466733441643539425042397a6d6e503048744e5466302b6c44476e644d6b694d2f6e644e4e556272366445564a74716e5630717045356f395450524f72354a5557556c317a364b506d427a336b766a6971744d316971666f6150772b2f6b303072357168666433456a4a4e6a2f414a4c766d676c366c334f64506e30456c46594d39337a5475766d493356524d34584470557a4d626a356b566731384f386b31397a32717a51757666546b724669772b3568737170365878657877484f6e6f6a4f51677a3579714532374255697465505970767768593173397a6b355679454f644650517977726e30434e4548524c3348476c725977533776766e4158725853674a756231414b6271356d5a67692b54554453707663624f774c7430552f47316c3331586144614f703538796b7838582b3650754a4f53314f31414750666b34794d33374655694a4b73475a466a5530474537446d634e57616e533931785435612b45756f4845784c5a78477a394b4b6b6e50482b72667450574248744c79684275436961674a6d396b553176516731446f617a4a5447354e654f566b3532574c456333486f347674644a4e34595a522f45444a2f7576642b59672b5a354c3362305a733250412f6a66466a765133413055776a64735038414938567856357439415336564b705a666f36476771623748323656442f722b736f3166353278332f4142594233443862646c4d6f794279394d324d536957655a38746b5a4a794756706d584e6b73706f6e48574763733263484338446e73464a7a664b6e2f6959346d5978756a754578586a3970375338686c703163717476584d70314c73794e6570704e30367353597371326479584c5a48504f616d7671397a5758696e2f733250643969506565516b654c4e724f317454344861475638636b3962712f6a79784975794437534f4d36366c7943393261756a746846497050315069704e44544d42474a32343464524971755a4d66444a3077493446576a537a6c5758506c6c4f684d792b496c57653750476133745a566a4a575475316c4d4530557955675941493134326e786b66554a36335763556a3665456567704d317430736a565361452b557a4c4b324655617862445547704a646253666563393079673677352b2b36786b42716d3657625856507a4767756f63717274656869636175755872732f2b545136683273786250764b634d7337666678615461343567544d58457141437056335233576458543375596c5a6368477035316a764b6953527a2f446e5a303454553050736e6e52304236386e4b2b5a4a6d3435644b662b6e587a474a617159594b2f6154387a616f304c4842567937484a446e30785545424d58576c7245324c4a6a685353564e646561774e695770577a6b344b486b644a4b4b6d75323069727456613263757868613158304c43585046485647376b6f38742b6a7a396c306d4c464a6b73527346626e414c78382b574e45364375375a515474442b4c673676566b7053655665576364732f594c6a2f647a3670325272366c3448327a2f47644c7773746e6f43546d79757654434b365032777650516542302f72555a52572b314c7838687167794f2b2b7937693459357a6c5a50774a4f54635578305073482b6764436952382b6b57746e2f506d756438644849366536456c32696b31366b527a3538646c5254304f4b5850506b353841365062513465796b4c547142362f764672625955363279617a615858524a5850744461336b365934644646614a335036776e4e2b527068326877465336657a3575464e3051545a4f66494750584c4770453356792f4b313567614871754557736c634445667948463149577355762b536a32557a764a6a6c434865416c4c78627759694f4c4e6f4a6f44617362705361316e50724a305546507936615a69766b5a4c6d50464a64637072512b796b466b494f7142544778756e4e6d3152757a61442f6a733933476a52584631565575505149334f634d3576585579707a435539777539303767515a417730456f4373734c565a3969314c7a71483868362b7a6854366f617030505175576b4e482f584f4762377339636631776155352f496d6962324d36414f53435a353659525a5a623051766d5a754f2b3732364a6c644c63774d7346534c4a4f6f74695358717a734f6552796c71682b2f7746697356436639413674734465716956464c5668305430466378567a516c66505661356b6a624f464859424c576e55464a752b796c3033523166327676787170352f514e486e78667739586565647172625452563933503170464b2b4248474f2b7579784d5a4f54783265766a574b352b724b61576d456a69412b414241716b44492b664d4261357951746e5a426248624375644430545748517a6f73564a5a7768595845385879672b324a2b4e4973476833394170624a4e6e396f377a566177516d42484f416c2b612f74582f586b7331387959347a47796f5a566d6b6d4d3648552f542b4c2f727157706b594a7952746f723665585238446f7153796145542f58694a48316d4d5679624a47684969366f37732f394a5a7a6f70447236424d7a42626a6f424f5a465577353643324e483549444f362f4a644e6f7955565a705053536f474e634c2b4f2b61645a6831523069514f3967665753557a2b71416a2f32726c787a30766f64566f39476a4966547a503841707a6f4e563143657775692f533131506c6c7359316e4546316631694d2b39547a327442565972697230503553757450574b52784d6c77684633744c666d646e7530644c52713441334b6444527a6f73414261362f7742717741506d2f6f47695a6f744959326a44564e4844396f4e546c6e776b764f673476567a3565676e354f6f64496b647239424e33744875472b672f665a527a6f56676c30754e6c6e67307a376f67362b35396b387a49306d4767716c783374576d756e334431365a614a2b644c343070556c31507541654a3477434d4b586d786a6f55665a67436672524e63764a4465354954463046616c63733432566358385a54725a4f33346863426b5352575031775a386b5145706455326b7045436c2f4f594d30326b6a73395a6a5771515a6d4c5a5750783646424d42624e41334e2b6e5251507555527453487a7658736c633246783272357849553934475670732f6a36517367746f57346144616e39783154714d4842524e4f4d78664366792f3475444b304a4d3856306a5178434f517a76586c5a587848316174674c674f324a3658665a684a6a4e44526170564466306f6f7764796b536d3430672f5a683572582f506d3666546f3973616176704a3153757a793974566e5a57534b646f453567704b6850756d513369565a58424e6e736e4267682b64645946637373544d38555a4d30714b687959396146747a6c424b5641544b6c6c5a32484e634e587358325a4e422f715868754a4366647a6f446c634c4b516b797a4f726f7079632f72376336653737315a7373304d76335a37732f4e4137425a6f465277453141546d724476464533355638554747376f72434a394861712b6d6e4e687431485261456b4f54526f6f692f6c753345624e414843356c4972357a72654d2b623749657756754156304271522b5157652b7a78316354394b7964344e3533574b4a2b4d57704f636e50626e35755855636358616d4f696859322f714b4a432f365a2f44556c72546e5470703934306f4478616e4a7338616434577a494f66433279736d6e694f396372705a61733345733759633247376d7272542f784f7478493046516f7974623736306855475147673341644f367a4931566165543737314c62557a506849456156445a6c5a39705a35756d7835333573645a4a57732b682f7966624576797246667653636f4978527368347632765a315956615138786b50707a32786f5a6e5a357470583962364433594d6d637a5164572b376e4242694a50672b56626a4159302b39313878487358484c7966366174454e7a4d3064582b536545534c567668666c71306332534872467064785831754d576c51713532623633644e334a6566525050556b4a424c386e493778376d7a746d6a55696d586e463873735a56795733346f745850364c536f574c427a3149534e5366686d544852386a564c545030463948506d6d53684f567462565762734f697a76347a4f7a7a527261576736524d47554f6855314d34357452796c3278742f534d457a2b315848566a38537541377a5045394479665065565038564972456c303346623969574a6b39756d37506a314963683155647a69755a486e36345461446b766c714362346e4a4e495a3571724e6f6a4765384355354f6157707554654e5a756a715768564c30395064705968593158584c7230324c576b3049496b623072486b73704f57413578547553356165636b6e50444e75414d694363587857624c624773466153333562585651774e6d386b376663364f5455644b34687079394276786a31375939427a574a7345536f55514c4e456a3636304a586f48456773514d7a6461617876632f3459394e36702f7034324a706c6e3355384b67796d7550366f394278645764746650736b6b54435078474a62544a746759614838386d35796b59746b31375576386a354155336b447456796b384c33513867732b4d326b6647586e59586564414a6d7243772f4766484c2f4b4f6371715a32544b46536d7736545530526f7551505a33426c596a4530423830544a56734d70507231546b5a444f494239645356316d305231466d566a426e2b2f5067366f5849546f723175644344596e346b73617a6b654d5533452b3071465571543870315445536d676c667470756478495a6365313568306938355a73574f75453871316833737a6635476169614f456c42476e4e73756733646566695264386431467067466c514761316d444b6565343348746559493137533646616976484e65652b6f3145324c4a6e6447412f77414a565578395a534368434365746a4a584c475250663137747564545472764d4654786959367867446e6b6d37526f6439764f37513259454f726e6d656a4e677a3353633037385a4865615172316d727a516e56337039506f47596a37524e5a6a6541332b5a764f78364638476577633137707a524e46432b61506b393132576d577345317278312f43785969595042314933705163786d6e712b5778477a50654b6a387133467a484a6c37634b356b326e7369374c486f43664a70364b485573586f4e5838745558366176353765554c45453068524f417334707736566949366363676c3439347035426664412b7476554c6930574b4f6d69697935576a57464e4161647863376d716656397a2b4d46505854634e74464e50363738726b2b36714c57724e5a3435794c726d4f487871616a505a6b6456526844644f6e6b3872615864764735506b61346333356339317456547671786941712b743775557973503557304b4c2b732b4e7038784274547a57624c354e6f5a7a6c61394a79536f5a784675652f4d5679686c726e2f716e796471704750344d73416831424d5038417865766864596d7a765a3257384176433174433173475358595659394c4e444e6935554f4f63367130766d6d756b7371414575556d69332b50716566614b5267447074624d77657332456f7a5368546a4e42484e4a546b65504f7842726c656337476a6c38485552734f7452634a53754a6e742b567979556c744e69334b614b66764347504e752f4d4d6179356d397168467a39527132614a794b386b74615258637a44734f696972723174626c786935626c6d502f5966544e4162762b765a7a744b4b684a694a554b6e566d397846533648573167377461373174306d4d4848546e524e546e55635841724a5958553139374e78785373647a766632306f414a697934716664476850316e6a6e586e4e71646f58514c6c396c72566f61456b64353947647677364273476f702f734a4256316a61424239675433383252396f6d2b49374861657962673865325a4c5331714a71306c4a566d4c64506f5230596a703661485a3669584c3250324b57326c6276706e51497047696d41347a646d6a7438464e624341594835386d69477231464479684f5051466c442f4148556e785931324a5a786d6174394b5446437754514c71514967636b74724b6f304c69584a2b715a5638665771736a6e545772596d53564e6c656637382b68307678564f555643657057343075396a2b6b4d34414c454145634a5a716f4c7164516146394c717571426c30314570737a7662566e2f426c357872545368455a4d4b655276746d2f645a72534841615178305545656f7037415a46546f784e545951557569794f5032465347546e755a4e6e356674586f4b447648566b58484a6142436e32484f42556c665a2b706e7175727a5a395775566d63304c34512b696a6c6479314a737845723970523155434b767531715033446e2f592b56524e595167366c315479713565616175745a31304d6c3871733870352b495838794a625a54763030752b5074567863396c5076503270374d3732514e36327559695a6e68415975307046356d7569433976786967707852446b31634749554e57574c514d772f41445a2f7071595843377a7675727653305754693733386e5a627745666a30596465776e75654f525369475276303874326a336c2b5a52634d65586f78517a536e335154786d5a382f576d4e69754a674c706f517050796371485837735646774c4861436e5a767a33666334354f575558617149656e38394c796d5178336147517a7064796b786439786b6c456b3034454e675361634f684963325871614a614579633870774f6d6e4b6d30364d5a41686f7779397a3457662b75642b6d3774436b6357667a4a35792b536b515438414f5a7377315278456339654d55427a466149327832396d597657795849526b4b533367366c52434f543864436c4258596f2f682b783964307a663642577a37466b7646356a4f704f72506a73553136622b306f73766d4b47625563696f774364314761546d6350715341415067725350564177416f62497736494e6b616e4238377156686e5a70753043627441794f7248516871726d523163583771716175387a6d4f4966754a2b4d365273624e3074725479353851516a30644b4e304641364774597a6f2b5030356a53386463484c7532305849324765504f306444696f484444614471444b64583257783842356a7a70496f734a42347979706f5971725670363264596b71564573626576763035796d543434757176512b556e635a6d704a6f796d4d2f774259506d61304a41344c38395475456c5668567a6f49307a78697173656c7255684b7876493630754e562b6d42533243754f66726d4f4d4f7a4d6a2f772b53784375552b367561752b3369444e45314a4d536339756a53427275506a6c343978616c68744857304a775a46705a62315a38483159556b67676e4f65784d77704a72706772514e5241373565352b7658454c45726855514e35382f3774574d79546e75336458422b56664f7a6b6c2b673633346736747633492f384164796f452f3130434b4d62707a4647766b6d5253712f782b366e512f64624e6c37654a695a78414c7a334c4e374d304a4630436c5655616950726f346744334946523135504c37437931534e514e79455530306d6b6357794f2b70382f426b4277696f2f7742535533476c32586354484f5678692f716676355a6e4b5571677962694664496f632f427659634437532f6976496150664c717a666f4768687558546f716d5850784c462f56596c362b6451526d426a5238502b62524b33782f5839527144646b705a5837686d2b445157393971554f7a7050713565586e376c3271376470474b6443714a2b5a2b78444c79726c3672302f7871584c4c747a6b5868734345384d5176524d6e546f714266386664732f4334444a55575a49556b54736b476b734f3537767173486a333866594e626a704d586c776e4546682b4f7479557a446f485273314e6c635a3455394d70794569322b697058387168586142536e49456c79306a52326c5950444e467068315365646c726673794c4674705471567330714b57674b786372335238585a6f3130436e50694f2f514578704e61656532704b316c78703950654d754f6a554d7873734b37395165307a776c45756747614a3749665352515a377047646c43374e624d314a6b5333574d2b57696537682b7936575a7754532b3453366b3244576e5a675137782f6d5a6d2b4e647a4649515849327961716e7938705258327533545834305235366e34626e69754b65724a366d68616b5554667852763730587562662f55346a4f37774757586336576d424c302f4a6a727158563265597259703836753945634b61465051746e636d68635a4d6f47635758557a52395556633430424f37736934636649377a45474a6139444d6f75764c562b786b33756c7a3546417a53486c5841645178316a3078334a366f75496e706f452f6d45364a6c4a41632f69336644366741664a46716455374d7a7262456470666b4c614e64555349584f79374a314963487a30457969697374416a37523841584a464d672b316a674a315671386562766b5350497a4573717044342b7a74317531725271677255737969377672585a66424571794674492f49553954335063594a70433931495547354c516d7344427235715150796d3061474c584a44383753527a5336646570455364434e35544750583246316b726b31724a337661797a4c636e6f473551707a2f50384162374266754a6d7a7534356e62346e4c5273795975674862726a74316c57366c2f774172576143335545774d2b706b674e705a3070546b486971456c54386f56333238515a5a6e6639412f49724f314f742b345831316144587a31543569704c6d66363832684b5454594c6f574e706f6e535a6e2f4b3175353372434c693434396e7a444e47434f6d36522b677650624c524e625664323153484168566e3870497578434f79676d6869654c736a5a5a6149556b6c50776743476645332b70333238516747572b4a4a57375a4b454e476d516161575079473066474c684663565476737872334b4f77325270344465546851657143307a417945694a76743469565a3433615674466e4a4d744f663841613752466134437a3678712f6b4a2b7756507052386a4b49564a7a397167797435374a7567415a7441484a534d395250357969346c493830654a6d56315a79354e48414254494c2b5376664e72664535764956674f635357646177317a47364a4e335234445270425939455955566146757a585245722b515a57714c75655644624a74437864735964366b71434a54724c6e653950746d392f7744376a3448792f77424133625752303574435059504d6a37467663305863354c5432617a36325a6b423837474d576d6a5157583058714c2f495a6c677345456b4a663644397755517a71696c2b4f7850737a57337547576d3956656e7346395a2b4f6b5935367975573754624366476b7471556c4e4d774630304b6d363450314b75313255614e737249474f2b78714b2b6e4a714c3938375a35644874645136376d425a555449335039715646382f63336b39432b7654584d414e374d7971766c6455555633412b375841576666707437497172756c474430543570786d2f55544d4c4441532b4d776d4b446a6753356e5a6c2f30434b6e786e54394534704a716a5a474130736f7a5a676f7471513444585971764e5a3265727362452f4b39532f595a557452413574484f717044446f6b626f74475476612b543430584c2b525830536f47523833746a446d6a6f554945746a684a4a7147436b5073416257724e6435796e2f514e394a39747464787874544e3946716a6b7a35355370757a4a364d796a3571577935306232396e37474a42774f327342687a4838782b7a39534145543370436d3864324357327079614d593564446d6653784e584e4b6d3173434d36567476796a6e36334530536f353049334130414b5272466635724f6139592b5930323868584c31624e4b76515775654c4e74797375624552722b4e585366772f4d2f566666764c6e58304a2f72627a4c6571506a54536d30786253707a6a4f6865346442416d374d597455444d34496f52767537584f70394f6875467058614e394e737372477264744536684941414839677930744a4a53306e4d4b61516a6250424b483633367163357678364b705a713447324c304e3654526273482f4142627171476675687a61744a7a796377796c702f6830533058544856375036416333786e344e702f62586f7a43516e73637a315556364a49775049732f5a7776703647324e43437a3535342f4871505a624b4b6e71614348574e497865504167486b2b546f35573245307a6c434e4e485a6d5565534c65394f66715a4d46336a6b3056434b7a624b4f5478497a764436346850664c3544596b662b75626a61464f753863666c36734d32624e705365515947744e2f4b61556c7231356d4f2f547238647646336c47704b356737566e75704b6d4269304e70556d4d427068736e6b756369322b33694c56786656667a66307075793664694e666d2b65745a61754c6b7063357a38366974446a2b546e7a574c526d7775537a4e4c5074427448795234616b6d544846475849784673386473432b2f412f57337758314a78754b78747a526d6354346443777479546b2b336f575a54632b4f524d384645722f6b6a34583345704e66312f6b4d5066373347366864464a704d577a49756b337a2f41466578794d46784d666e58317279382b4d5538546d4a6e2b6569565558506d306f6161736d586968476376724c6d356d392f54714f537173474136456e3162626d387236784f593866703051687a556230447738574b505136713453324c693861334a66384a337a6b365a79752f354e476538774c494242726b2b48323979354636354d5a396545394c4a475150704f506f516670504e41624e78335a345247684c3241584b7672653043414a4c467630636d6d6e54546c52766c776d683753356d565754746b675a5455334d6c67325038413039697635425553766166444a306379577155516b756e485a6277456437493857797334355a5153614c4e4c5a4b37393638654b4570354a53796a30733155705a72644159576c7862684e316955304f516251494737417772584371744953706b71544e6e36374e494b4337336e4b47776a527437476269767550726d564d7563706a4b696142665a49784663636a7155353764764e6e4f415252625a7638417a5a6b364655394f3973425a3549544e524a6d6b74797568494d32684d4b3646573536564d57412b354b513737584f4f6b557172475978594a7a6b7634322f756f7262572f7741746e696c773869753362584f304d6e563273653870567331474a4678452f6e42645730644470675a2b3450733142436236725767556a657568706b5647724463764e6c3061444e4f62552b513947584e6e5a51744b2f6a366654396e61556d4e6a54734d544641594e714a7749584473563051776f536568424b47716f47576736454464686358474d3773323137436b6e2b3130502b75612b476e6c624a422f6f4d30334f6a6a6c65334f6c6f4e6c7a334479684c31306432596d77334d775a714e4356505375673376764e50354451665578746f346f352b714e494d37644655377145476572556e52306e396f6f6d525459325262322f614b58724f72347a516e5737345a78535538763057527046716e6533727636435649314b305479496e4b65617a4b373853595773376f6152304a766857786c425578754f55766d50345335396c4c47706376714f4853535747414d46496d5866717379732f53307557364763747a43306b6a44504c51515a626d473959464f77463574314239574c6168454936552f474b4b42525048732b592b56334a51396c754e3352513872733769385170394272456975354d576a44644c7a55576a3546734b6f78347842734e4e4c484f57346579756441664c4261547a744939322f4b5a6c79776f797375666f7564715861345a394e5a3854637a7054726e304b6b715a31786b4e446f4a6a6f2f384159703149504b6d484174657448565766656e39444e34745730663841494c56714c54504d6d625430684664334b50635969507a666f592f5943535564424141317a7673446f613874315551552f4371724f736b6d30655a5049744d5452596a725a586535676c6369566e556361615370436b323955726e4b41556e564e796c3153346f465247587a7271526a33796b364f686a4e656165695a7178563830632b7837714239383570575a70545658564f6631512b54366c6e6338462f73655855394b674c4a6b4342767a6632576b2b75726364554161303648366f6931497a306b795a504f76616f474e653049687a7739486b5a4439745348543665664358456379632b46476d794171447a3946452f473948794a79563670427779562f38414359587655726f4277394e32336c786e41306a395a76514235584635426735336a754e766143724c322b54486c3574486a73765468587357775778546b306b726d736259766932436c546d557a63624f484447352b6c4e54345a2f6c2f59616e65535a465067596a42356364506a41335679437a543866775a7647634a534d79696a356b4f59696c464364614c50653472496861706e75705936616b4b55476139496e644f36764351527945726b6b31626f524a74334462454433347174474173764f6451564e6556566d715a52754a2b77794b4b54343264544b55594f6e5549445739564c546d63687270785a2f5a763456506a6e4a4b70704c7274374e6a732f68732f77436e526b65515a3857733755304c5072334c6e7738397a71783057757373574467417a62505761372f6e2b3332445844723066546253316444786a7954577550646f6449473255386d4c6a61576e506f4a76594f6c70364f776875584f756d71784a4b637033744d354575374e6e4e6e68736d4f654f504162572b6e663551654f53313433686e6b57666e35334772664f644c663543334873695a6e59727549567a5264336d683542395065582f414b4c41534e4673487557526c4e4f51357a707a6e4d64527554346635486d62796b5635586578584a7a4d586d5651384d39736c6c685a32505a43726a4f757347566e384c4f6d50705371483264694248746d64396165664b314f2b494669496a746a42565730754e55413574306e614b47314f7538596e3061642f54445a6161525945386462696f465379366b34776439593341516e7771573235355157436e666852584f786d72373271377a4e5530612b6136492b75544f354d496956525a346c4c6f4a7a3068337165665953594e634e67436b494557585a5578475158564a314d36476273386e4b475356735a442f36664a43564f506534766d6c586455776d426f69756b4f2b336c68734d4a706a43776e566c6368326e4c6e667a52736c2b73336d5a70326a374d6b59702b5741317a636e6731565430546b6f6d753658334632416f785438677a4f426a6d6155656a624b452f5532566968787372676e7072654533795966415a32566b764661634d582f61544a774f556c3734314e392f514c336d413233477675316e46626d613269736c6971564e4a50573264644b6e436638627a536e59777065574f457030384e7449485458302f3263796b577a4763786a71427a5466633463385172375649434b5035456b367133664c467969664e7566796651583776744a47707757653668636a416238794350334648415257763471492b56493435636459512f774345713151444854502f41426c5972656271656258794f63536c2f645478426b6d6876653859386c434242796447685236543642314635377338623839326355554f65774b73397569696634705738576e6b4b4b6d49506f552f433662324e50336d55366744484d72563533376a5048666f7a3068697a464c7056557870485655755450664a577971676871545a525151537939705630416570335339737a536e6a57664d664e4b706b47644c3756486f616178796e46626e79524350564f674874746a32382b38694d536a583869682b735079456631766d644d77754f6e342f722b6f7947764756524372756c737462697a5666586f6b79796f6b51444c325352336657544b784538376871595139553238334b396b726d6e78545a35716761516f304a36644f624f314857305a30533958527a4770314e67636c3535656950596a6839765958706a2b45706c42327a327273456b694d61767345487a3546544f6a727977304a68706470684a6d64687a6233493237313645564641302f4d68544a6838627930706c535171355948484a503253554144756747357a6c4855552f4f597154583049354653466e43642b6a562f474f78736d6f74436d56676f3970364653565553474c6659457a6548386967475a6d50776658394150717058496c753931414b3577666f5874725a774d37507a75756c634675654f6870437957392f7479592b444d6736614257664b7030766239662b6f34396e7a424f636b5552523851535a4c714f39355761594f446435436f6b4f73794574424b75554f584b776f656f66652b6c526f767658783142567a2b2b422b37514d676969564d394c6174444e6b6c586f624336436d6a7a65777a4d6179723639524c6c587351314d2b41314178712f306b557a483050654746633338626c78496c5253747431414f4b484837536e503270394c537935644a6a5745536c335238797846724b4a4549724e566769444753685a3174766a2b76366754593138574d69694238495a61656932322f6169554f62456845712f7155727a774c3546796e5674452f712b425350792f5a58776c65776d7566467a657635423142485645715646696b364b3132496431566c4d6b3836644475577536693269564c675a714f6a5a566d7a75702f307a47482f57702f364d35555237427a437a2b53787133554a54343972495979664641704c492b75392b506968333971725966777a6778637641596c435a4f2f546e4a686d4a2b353250782f583952596668586e766b6e702f7475525a454f686762745064626152626f69744557536c2b61486235593732644757696a4e58576269362b5435414363622b6a784c5677524d566d763959472f486a315764715a7374506a356a656756543538626b734a6743786a5a31555a706837444d666577617a344b684941442f41695342735757574a6d64757a6d734c445433522b6f6c384c4d734f4b6b6371526c5966506f4a6430436c2b7954756f576e375143513962786e514d665959734178424a437a77724f612f4658702f7835384a357256783359714976666e2b653935616a67654a70463374696e522b77643372587268363670782f5461546949534873346c7751502f38414357632f594a2f713136374d626f2f6c4e5a2f7062383372624971783058714a586f386c3533775a4f64395432672b41352b54437757625451755650314c44644b6567374c496836633630386d61585847305036636e6c39684839465871695255784e4478516c55736f4e4c513163317755736f3675676e6f69304a32464d4a366772702f58364a4a675a743437336e3858484a356659556c7261767164664e786447686d785a44656a6e3533306b77314b53585854742b4e6655733532394d6a4955634d754b2b79445a716a4470392b4979744552486b4b723870386b395379756b6947337737345847706a3854546634374d366864735654474f654a366b766333504d536a6f6f55747a6963645042392f423636546c6f6976664f4252666b576a35666c4a62654f684a55326933426c35524a725475354870506e30745679616b71663157354f553838626d396d70626572376a77393756306578576b567238787176354a355a36796552306f64672b59662f4e36746371714e4352384a4f3038755358506a747273794b746b7143586e703938715a2b384c374c654a613734546d2b536f4c52465936317949506f2b7066716f765266496671626d7133706d64304d6435496c51374f304a70727531337a325a4f66514445325130796c516458502b78774358506e5a3834697667563950366765734a573655612f5662784c4b666d6271726d56644d362b4a796f387535306d6e6f55615a4b5333324f784856713666506535774830556d4c6a44493078583845676471657450726f6330506b722f5537424c5579672f6a68527057654778324f58787364356131645661554c796168716f53622b6a316e46314741476e6f434166314661316e6c6d674346367065734e325a674a782f584742754c585a586c50592f6479545746694e4371784434396d47722b506c2b4171705334485775374a664d76693750397459636e62575a784e507142657a36392b766b4768326d66316638534f4e504b7375706b6663343464574c45374b2b6d70563269366564646c47684c374663354d3733696c437a456d4335614a39335438496b6e665776386969446a4f2b7248676c324e465569326a4b646f5a56453767685452724c6b304e46666b692f3561714e716d57554e4e774c6959316e7772613663654c7274702f30352f6b476865732f3542336e483176725234627377424a4a6d6252532b577051706d7244496e795a2b33506433596e35724d553473306d306c336b636171554f63563031796a6d7437756e345941355072702b526552486d6430664e4d4f6c7a5a6149324b69644e61575271742b6d76557575366d7a2f377038664f786437485758446544432b716257746a593045794e6c4d7a79675a2f38376e354e36554c3631656f6e6936754251552b62497679334d6e3072764849437531306f326e6f35796a5549366e564b7536535342456d337a3636752f73786f696161636461674d7231732f4b4d596456655435643449327a746b6461436e386c79782f694a632f4a455a35714e614b6a70496f73535562487443696d63795a59585845542f6a644f33543735742f495a3650725a2b54792f34572f64387a77324d6d2b6d653068666d6e366445373536376456485a56626855757935312b51542f4c38493264523348543150755459633757326b394f50314478667256362b5a316d6963336d2f702b2b51335556364174387178436c6c7a55355032313655596f733667557566476c464c41496b42495a755034536762544f3550775747466e72782b554d57612b4c4b3956504276474e4f455755307936477471304a74796f64596457556530364730696c315151754a687876576b456e537234776e2b4779695246644b653153776676396350796676344c74507a314f7a4d37566e386c66504435424f673134775931535a734d585a6979736a58527466485432637672444758667475346b313054787664302f4441442f774431772f356763766e7977387a384b475736374d627136466d6c464c6f546e3261642b354a6935577442373564615a6b746c464e42784754412b4c684e37396c7077746c4f3167506c2b766e35636261396335764a76454d6e5070794d2b334a57506b2f6a687a33493768575855306a52394d6a715748694d2b4b756848457368705164664f4237706d7455393354384d424e6e72312b56654e4a6c7836666b33686237344d694f4b586c657a4467614f56593539476864446131746e785a6469764758754b76727563534534424d644353716532707430353773676262362f666c61725452464435623663796a5a785355314b383378655464336167687a305353612b6a6d2b32703871563156786635745759415045542b2f3466593261654f74765833464b4836732f6c68356a703131617a66544f7a64763866596e4a6d64666e366d6362696b6a79732f74707a2b534a343933525a484a516f2f39626635365a4c5753705050525666627078787849727847372b58534e4863505975384c5276447a5a596b46707772625a31596a3775765a2b3639517166356855363670322f6141675a2f44724679365a4f67613762644c31482f41626c346c2b525764625139647670727479517552335758472f783374416c6c316a6c5a56392b386a796853644b6f36436b6648554851636d764e624b597061484a6c526d6e357635416c78483552664e4e4f5744366147484661694f585677597a4d31724c304a37712f7741704e6638414575724647737375632f33797a6a4b4d644c6e4a4941686d706a396e2b62376778712b4b666b3931597942443648364f424f374a3078652b7a437575412f356d6a50523875706151716f58535539457170515161525053736b746a6a397652706e4e507a6679436765462f6b424e695a6c4d506a5070747a4c62736e71583249747a4e484f782b364374796c426162374e51796e576f626846484b41304f2f6257667a66476770702b78753038343435432f504466795a5a346c6f7954654a656c575735577867357a744a6f2b4961636a6f6673467652534d624243685642484f4f616648794c5a3858386e395a4b6545316b335764505057325130546d666b5979443456656e2f414b5055757970644463317033686961642f6b65547353592b7a347a4e567a536c72355a676d364e4969682f4b452f46704c7061487a4f494932326e3472667a6753334e522b5374326c704f743847394547564c664f4f4b5a5435656e79742f5430746b4d75544548574a755044784f484839366f3139616c38646e73636277467638415663365834374166566d666b316e566578766976704b787653614771564e45424f667138697a37617a30754d316b48526b6f644f6178367a6c68544f396a6b70637233786862396e2b62376a484f7750795a62567061326a3658666a2f4f7958556b304e4665374d5567774676564a747643764b6c3075356d623937335467305a2f3841543962525339316954373837497a70654e76754373666866354a533279793558703936426c375a48666179747a7447696163582b56334835576651594f35496e505a3437705866444e6f666f59624e57644c7a304e4a71313862744c786b4c356e6766354c5535755874353370562b4f614d38355032667a707a304a36574a624c5433544a4f6c554f6a49757a35353364644355776979774454796c6c5975346d644b5a7a757347662f695035542b5058366d66543658656a77643031353771746e58743858626b6f7430426c657565466e6b517a396f464b6f5357697269352b494230373748436d707a574a6e536e347251426e6a6b333552354f4b554f6436522b677557796e2b5157337264374d35397646342f6138692f6c70376d3143364a6658547365796330706d34566b3455786451532f7354507535744d62725a43724d72387074597a68386b394d2f534a7377356c7566683530586a324f2b414a692b4f6f65355333575573416638413032685a564c6f513242744c5157707268434e374f6c45395a2f6d45464d2f4a7259687a526a384d394b2f5a596c6566545673585159597674547035624761555663324f7452554e33353875576e714f565253414546787a4b3478746639522b7a6a684d32444867666c504c4135426545656a655979445152654d4b6b53452f543739644c6e65786c64314233624178366d6f7456434f7a754d36574c4f56376e664b44396e6e47625a384d6a4550472f77417739614d4f5a76704e365a31527262442f41422b4e543438702b31684e64685946745666386635465958795a384b4b726e664678306a6d3165774c71334f4b48346d644b4a347a626748726276796c3133535259336f3536526f563748783266617963643278464a6f62452b626a597539546b37484f4a69465a542f4c514467643876325461426d584d75686e53386266635a655a772f6c6a4e734e32372f5333307072777a356d3631505a354d736d36314f4d754c66627451736c754e714247646f75344b657a58746459583261326f7335547959393350444e73674b32503868567739445a394850544b667955327264793778764e7a4e4f6e73474e4d4f52425758386f62595a35516c736439686261467a6972534e502f716245732b72474b57365774414a7a52666b68714a376150704e365951617a7266456f7164444e6b772b36456d764c33613459627972383141777356347655744a725a4d78582f414b62796874594570796a66733434544e67437138612f4b512f66306654583039766f6d4475767273537647707658507774725077424f743230314a655031462f497044704e6372336e545458386e73443954763076475248514c386973547875426f656b766769372b53626d5035506d35325a6939386b624b3144735967317673337a756a6e5864703841524b592f746c59426d4a55787055566f32545043342f6133682f354361436c367476705a3657434c7139482b652f3841494f34576d673562397a794c4656334f6f514a64316c50544f364946546f616e746a67705553704442497846715279786132515048786a386f50493747774d3944665441632f74787a32795a71417a4c4661754669432b6a2f616268524c386c574446774755657964743266503154663153436c7074537666494a333450354b2b5252746b30505450306b6879396175664e303256354f552f5038414949676e336c764b486a5067307444536b32424751462f4a48372b4143525459344635716d366c652b5979474f77763139645a464673666a62365a716c314d375079374b736d4b7542443464444b71385656566e594d397952485059724e4a436d766657466e5639473769452f4242504d52534f7a71326e3138704236645872594751654c6e2b6b7670686e444b3549534f3154444d725a6a675a59365a4b517249532b4e7a74537156796965646868544d6c706f726d34704d59706e347630416a466939655275626e4f39437653476a5851374d696868746531476d6d2b4b66615555347231645a345a68664a4c4c7a68395a51314d5739394e3333364f4c396b7a7337557a4f59425451782f796d754a6c4f64364b2b6a784a58646d5749524e35546c39727a5937613539554e31736b3131724a633037575754364c4136314c715a6b767269764d324d726a46507a667a444f48785438686c6f31433250782f38415154755536587943344b313665446f544e4367796d6b4f7555376b6654546273594b5a6564374a48375030566e7638416d42785a7131716432726231363851672f472f494c78364f6d5166524c3074723867795a64537279654354546f7354557439433172657a79486a71475757465251456452576f6230623949564f396c54414b6c4f7933484e676152366565767a745a58452b6a50706249476a4831764d314c4c49354a344f637544617a7455316a49724a304a714d3962646e4b36514d42634238674276366e676d623659375673425079334c2f4950554a465a666a393647562b5061776f4c524a6d626c336a704b304934644b56546556585343576b6861364a31436379726f457971663737506d55626c62552b475a47412b462b72306c6e316c2f6a3936584e753272394d5a473262714b4b2b5276705832614b6a346c696d504c7355506b412f616d6c46443075676346375a312f554b4e3066395766734d354d7a31733532464466524430725a6f587a547a655152307a4b315942655445677550596244557530763164385a6474363265777a7976734e4e586659453175547a2b772b623369487244616b756e3644656b6345794a595a565232624859476e6a34394735506d7474375979656f6275523747682f482b2f6a6557652b54762f64644f305652573150686d5149772f4450564e656e784a2f6a56364d6c6f55527268304d2f52313547655536645365745a6c5261414f7a445a69754f7650712b3731795644315951574f6f735561307a4a6d753350764a456869384a395a5034324b324838652f426462426f6773685a4c304854646d646838314a696f30726d65326648676379474f646f45426a5745773242774a4a676c4279666a675056654865746e6c4667785a503437656e3037732b444f6e7156745554556275466c6f3076736476636e4b734646487a6a6d77746d76472f6e41485371617a2f6a6a69536961313757725072364231705933727a567265534e6c394950544b68316d52715a6e446e4b6738664e7970394c57314e45625374597030387148513355454861554430394a4943327451766d624761636e4e504146736a786631423867727a57582b692f67384d304a57727a30563656646e632f744f67754a454b4a3458586654735356307643424a6a316138724f4b677a61343643626f69654668596d4634463576426934734676704a34752f3432427161715a4e32764a6e784a7130664869306148656b2b4e4d72427a64526a5a576d3739667a6275784b556f58644373326a3857425a582f69667162534d656870656d506845353557704c5447764a6d7a382b6447566c79447157463369324e56626a2f617357367048613665382f6b6774672b564c773972665878466e522b4b65666f68636a796e30727764484f6e34692b4f5078777241567135306148633274474d4f35765758542f7741586f5a2b542b6849337358787a506d5839596335464f48646566754c637a302b5637576d706c2f70526e356a59565132593146326778682f5950534f4c72493946556c4d70536b6d725366384178334547453363715a4968385048482f4146576548533266734c553856772f4a387a356c372f70456d2b447333536f3768374d57644f645069395a4332504f6b6e337041314930755375796e6f2f384162354f446b70637741704e565a6d4a3452596244347939487247787a2b692f5635516a6f4f7a5444536d637a596f686a4a6b374c585a7632754a57317a6c6b6c545a4157326f4564554a694b7764586a2b4f50734c5a7963526878496a58364561722b59697141744b696f355174757a464a6135382b63547071463752574d30416b4e3676634650764e4d786d4a386d724d7a33587a39684f4963747a69446c666f522f4663346d504e37557661627252386b732b4e6c4e6838694c35726f55756d6a52314c702f69565a423852644e5271706b6f4c65673866426e307874394b365a71745771616969562f46555354643777724a363771365067665238664a35304b6d4e59664348525069756b4b57746a4d654d417871376d626e6c58687a2b4b302b50655878496f5574714f707a6c352b585048507a6e65584e537752704966695568482b2f34755748387a6c4a596b6636694f5048647968444c325976476359644e304d354164435a5a455a734877564a724279657269746e3473472f414a564d657868664d39502b6267543876542b7861654d5448694e5872395053386f33504a4e6e54374c593359467a34625756576b6163554d79695050716e6c6d68374f4d7274453532493446536b706535725767582b6766366e47336c674d796a47356f617752614f664b764c62374a47335649746d4436307568465233325a726d546b71696f67576632524e6478712b513656752f7867506c516577474d4b4d4e455830495442797254703737562f632b426b7a6766387a494a3235374a356d6339685567756d5547436f6e657a674e73326550376d7a70574e4b544c303031445a62626b7062576e4f51713633572f69632f7743344877423755722b54685430636c2b2f317179486e546f2f6f486a7856786c315046317a2f414561572f585a6375654d7333506e6e2b7645336a3971586c4e486a363770324e5761304e556b77624f33334f5948514232374f6e6e47654a583855656670736c4b564f5161346d632b657164385254614c453837514b59786f4178413066743939664f70454e4545644350706c34616c304c6d7a7974693552527056722b6656793547314d2b7456535674546a566f433547474b4a2b45626d2f5442496455422f4a502f514c6857787a66744162523630655736415a7a714268544f6a4f57556453706170516456306c6843355a4e3641387239306e312b796a2f41496775704f6d6f476e562f726456596f59312b50646e37324c502f41493932334e6e70306c4c6e61345a78747547306f457a41415267686a6c52712f55775a6d4a7a54717a74436674314c5a2f7250696c655656394c674b58512b704a6a566a70434f68375a467a635550765531496e2f716330354959514c3567354a696d5649356c4d79575435556d69456262414770746b7169724a30576c3854694d666b4971706575346b715567485a6a58315039544f6538597379542b4678465032535543744f4e644e656e5873646c35586b7856304537517a31757335793564695570397a45734f2f34542f304d2f564d424e4d624f42484e4e524c5a50436a587130354e4a2f38416f36594b6e6c71686161724b632b56664b49367077366371567135594a4d3630326b4967707932683950384146766766322b674b7261564c73677a30515538525a6c315030432f6b47676e6c464647615074367866324141657a2f4c77654b494769512f6b4b36745665617249757830742b4b5476374f566b6a554c306e616437635a4c45544d65687a5151494d4c342b4f39362f6331545754682b58483165693148486c4f69545070626d4459756c7a56615637506b334c6e537a565342446d714a4b784368365146555a6f4276316e4b6c542f514c3566385938615071794271383639453345426252596167324b636d4368477143732f51564f3669505037386a566b62564766666b34484b4f705744587476556a4e51786c45436e394372596875766735492b4b6459386d4c6979596f374a36666334766e43655a49476b46496a4576597a2b676b6449393473466157526d55783861707757497a51646d5566506d6972735a726b3033766e4a756b6b52645558474a4d48436e334558457a39416658574f4d6862335558617a62714e47765571516a4e6450587a5261753256365a314d343734584d7368702b554647354878712b496c6b6a367754455a6e41597a715555335830555a757a5571626c7a6b6d6e6b535856616156684d577769314b682b497031324e2f5466724d6e712b4d416e6b7357455349424e6f4a5957743838356f314b5a597530704d3474615a644854716b546f4d566c6a4832684a757a306d646e525774784a2b476c78416f6b7241525835446d5a476264744f31706d5451795a2f4f76626638412b51497a325443494e7a465a48784c4162444b654f674f494f6b51524e3075306b62564a6f445754315839582f487344786e56387138787069384b7a56592f747a556f75524c354e75315664782b7253764975644c5175686b5032423463354345433956517a64706935376731725730576d493478493542657058354d2b542b732b686e2b4a593864486a76693375477a4b384c564b436462796a5873304e4c4e624a58685a5247684b656b6d466a58766f536c547071484d39365a775548545773527836696c6c5834385732764b7a33722b3567515a364d7678774b534733764e44793750377a566f374b56565767784d4d396c4c5a5953365364444b6b706e4d633275555273426d6e76306171505a596f664974717a527a52454b6a697431734756666a77305a75493166584c6c75302b584d68547a4e786e43575934315a2b725571634641304a6930554a6f3153324d335071335272315a43776d5735633264544b3956452b7a6e354e6e6a587a6c50435575627253686839594c474b6a6477696d642b316b466b2b6a6634342b6f2f724e71347574736152654a352b6648375044745042784a6f6163324c76633164367366786e492b562f6975616550745a7255684c51683167526a594b59302f384141317465745a78413762656b2f6f443474365577514e38566c4c507955566d7076794d757a595978506d673037614a4a426c6a714a65586d2b7a6a6b45737942774b482f414e3644547957764e756f76515a59375a35345970553375645243336b62625671624f796562487031344c354a4d386759366176427a2b564f495339787571644f514c2b54325542776c506c72475257656c39504f315535394136446a31745454376f332f4255367432677a35474c2b595742396b51547751614c50686b70482b672b42506c706b5a4d783746636d546c6f6e644f613371766f7745587663564e307953355249354f6f5457726f4261777032365166545553685630484774317572516a7569425135792f59327075767a344631336a384354397337452f4c4736647a4c444a2f424368507a44536e3241726f4a4153726c636b79617531672b6d6d6c4a516d45315658494c42555630412b5258796674667973795a7835473068636e346a69597a374b673977675a66326f6b7a51413530637873625a53645442304a71487a5157364e636d6b76384161546873367a376c507372366b2b2f4e38546d6b6c54577a412f646e574242533347556731484d45357762516d7a69536979506e4f42706e7244494f656567512f77436177443454322f6156504244345441514944444a70757932506d735a57356469716934306f45537a6f71664f4270476334374756574a58336f43343164534e50412b4b6b6d2f7742426e4138456f4f6742375a70706f2b49786e58304b7733726d70587078582b79646e794a4c34622b632b7430753856416c67562f4a37446e44387672387573354567655950477854786c4e565a4c4c6d675530393161313856647a3477564b4b7a4d57725931484d336e53556f657463414441313565735761596d5a3963794838626d554e533233556753544f797162787a703648616a364978366b4776426b2f45307357504463414941354a787175644e67316b2b4d396235375856386b71784b5a4b346178674b717351545968784c5939765144324148786e7a363837366636424b436935484b5a434f67474b6d62334b6553333964596271577072524d427776354377694c39394e524f39684f4166624f5077675942456e78434f52574d733668476678306d6d4b575a386946755a6931695a556838303969317053775648496c4e6b66325755676c6e5775732f6f4d4e435151376d667834643265742b706e364d756533497a7330316343685475736b695977705a326956677649324e55705a6c59337267436b46677373666c5a4368302b66664e487753694b754e504b3964476b756a2f414a2f694b6834576b77796c5830327a684e386a347a4659664657347742327838307a6e47354e794d3973633138593563477130555a30527a70474d615a5254392b355a66797a574c583732726e702f2b4d6176734b4d497a746e53366b357235733065754c4a7a7635496963755051304d336b724b4e42314671524f6964556f72417661663169644d716d685a79646678344c666136747376417362564c494973737a63714e6b66573264325a7357754e53704849544f376b662b72334c34542f6a674a77415173346b41596c62505a513135366d696a4f526d55614b644b387a56716b436b547675646f62464c67666c3562687a366c2f72354f43306e43306a6457445769416a61716176557055394d4c6763514a2b7762724875583865747053535a6a363361432b7373415845683731382b69667945346d6a3971637776485974382f374150723172666a6351493570706d6867725933615a7052613541702b61706f75676f31416f6a715a524c2b2b2f4a516c59535268376b706e2b454f7854745141644e7648507a744e4a777851322f567a7346706c4f322b624f72517452614447457376722f4142533539584f6d66423662545837425070704c757744366570762b52787331575458353863434c4f7534384d72736d5842737158755654364c6c4c4c6b61786e687a554d397932452f326347634d2f716151476d6131355a444a57547071686d374c56784a545a307a46706f6b7943305a5a485936596b6644456561414d6e46575451723363704e36577a4a57632f386b37394f6e6b38767344645a74304d7a646a547061476c5a66506f4f6f6c3039535a4371707073334e72797070466b662f654766737049734c6b72555563547a3244563953672f36722b383965416d734f4f784d734375636e68794d755a6c736c6f4b5738765a54704f594f736e39697a6b2f7a3435546f7348374332567366382f4b4a6158657a537a48335073765a444c4f564645745673684e577836485736715a5159357a4e43585155773163545a6c7047596734346f37412b4c726a6c4b6b534f65506138784a6e7845504857366f5475537838702b7a656a435650314d396175483438535752382b756e6b39465379555831312f597a65462b6d4e476d5949474d4838594f6e55395a325333766e664a42424e55724d2b79697a586e6b5652506f73314f493048667862497a614a6f50677451644a462f68336e412b52646d52572b386c76303853626a45306b35756966756f304e544a554c6834524e5579675766354d635078642b437777503841624247486f4b31524b2b532f576b6d657064584d2f7743763347646f506a4e4d3472304855736f6f6837577459555443707747756833314a70414e583033526f554752556150644f49686575444e6a755479416f654a792b6d43504955315564534f7672436a35574d505355744365554d2b49466e774774435834674a6379715a71433733704b795275513149524c376f3532634f73525463512b30525a39474e59756f636b31685943502b70772f39414a366b4d6f3435386830334a3435736f50716359394d6c434a76396d6f7639683231565a4e6f70326c306644327436756461326634655568374f4c4e5472356774506972672f585a375a516970537952532b306b446b52676d4f744d647a446352713041682f6c4739575348556b476176694f2f7744574a7041345650526e665453714b545255454b4b3470465436617556336f515770734244444c59624b7444726c302f4c313547484f705141657a35484759434676712f6b4a4a462f795865744b625038416f366c57653061366c66616d744d65366c6764544c516d64504f634f615547702b6151456b664255595367337855634871334f374b787a35716443657a2b5036756b696c516c41386b4c764a30707a42596f57644b75623975426932694a6762676958337747316e3831384c36655a33464e436d744447322f4c397058336b7652503841616470426873584d48794d354335566847317959464f5349475569617578544d63466f5853735347597154556f6c2b4435632f676e4e4d72374c503350565459336a7959526b44754d494c4264384e5946614e7237464849446b6e526e53614749795a4b4372416170696b3432787356726661525a2f436c30752f766a7944744b5136787a442f587a426a437454514852306f4c47717668466146385761752f4371536443654d505971543270484852752f543175416a492f744d412b484759426c39354c6136374558716f517a586a646c6470304b4e69786a796757576b7a67356f75526b772f44506f4631346f556756774e44396577337869436759566c4e464f6145364d324a715a7a4b7441554f2b666777305472305632466a70526f577156436e764152314c566b344342546b6d424d426c575767702f45324970735844506f5a2b64634c42706c6c6a66506d2f664d2b422b6c736956637978542b6b39512b795978623332476c4c514a77536778416f7a7930575542437773325a4c317065353374793476744d716d67575a536f482f7743437634624b666c79766c42703850346e416d79614f68556b7a544f65487132454252303566567a54547a7556587a705256494b43356678736c42763154415654683732304a576d5a49666170724c6b366b5849556461416244616551727a69717a387178554e717849516f443569347a53452f327973657874536c6a4146496a37676251726f665a435874794b465330484f342b546d767566696d48304c464b4b536e6f4f732b7778796e4c71575a4b4d2f595148396a7157675a6c2b5873366b64746f59564d4c4f306e5a6d31647070756f6b646c2f5a6e536f684363657239774170784358366d45506d5731514949444763306d454465504874562b6d6e336851567165557a5559374b546b3774513658462b354b55304f576a6e6252554c682f61756d306d67455a564654504a5653414d306243617444567670304a6d766930367963697063765155655456326e35673538447834416d6c745650556c304b414b53637a714247314c477258586c2f444b2b73436a7a427a4b3156486d5a352f592b4c6a4b4631564d57524278697666594d7a6d2f437966727761554c3737586256655a473835584a65657177616d315071516a36756c65453079314e6e42645366696f2f5a4566414f6c726d6b6c72656f4278483164545230616575695a51396f7856733478487a386d6b644d46466f446870345653694737676e5348796b5a2f36364a7741522f6f4d6d4f706d716176733171726f2b4a5661346c307337384d6f4f6f6c3438716d646e7833556652304f427a6a48476d626b786d58744e77663044616e76594555766b6b6d6c5531376b305030336d4431614e70776e584b6c645467513865454e2f524a50574b2b584b4e78475a705964415a47746f5871355070587957664a4c4c38696f6d76796561556c544563514465546c317a6b73496e4e446e423979347a4d6a43512b4a7244383579426e4a78333043334b31443648444c546a4752474e4f7248614e55386b706f57506674554d62516853656f5a536b5738456d6a542f51593071523765304f6975366f42596e736e766a793254504e594a75376e4a55707079754c354933734c32664b504a6f36466539376e474152756a6e77652b326c75496d6272463932732b71574c732b6c6e762b35316b306234726c68704a526c363073793138515a7150515178482b4c526d4d4b583954636d48667a464e61476a556a6e3044484d7a6134382f69706f78683551636d4f547068646d7a796b6179593373667766357036373472506b64616b784538653861692b525a564f66344c54446e6c4c7a516e5a45774a6d49534f784a664470356553474937536957544e542b4e5a38644a794c6c52523058653645506d425578374356572b5161504d45683865386b54555031712b534c6444302b3166536a316e7851327179737833644446642f35424f306d643539646a6638414d374f4542734f4d526e5065426c654a2f77435230575362586c6d6f746b4d75355474525366525a7a6d6553584452492f49762b4f76326c613549736d4e35424965772b41446a44344648496e6453416851464e616b354c392f4670585879616370637143473258596556674a366e74557156305a63597642716673704f7761463570396e6e534665466f3867516f6b5a2f4878575a6c475550593770456164724c45337a63706e6f6e5a6f3261516a6e313858714c6c645536706f67366639326679704f536968786e5942507135314656456d686d35575a43685744636d58446b636436526d6e6c5136506a6753436d32644b477072637955767373664e3979744967665a42434d3657766f36504e4c78396379444b753352694f727263444d62526958646f5271616c5a44734b4778794e43484835323336334a766f423376736459566f506a45526d5164314f4a6c6c2b725533715851396758347848506b304771714f664e75747161326e7875796c55717a6e6a6a5846514d694439686a51416578326b704d686a6d44333536703358372f4e486a4e434c4e304e553036724463324f72535859632b587447724c6650445a47336c6b715a306e6671705966384137327536422f61307478493877677278656155756f71654c623574717a6159746657697a616b69597a663841584767726f6271474a3651433263436e6b2b537872675345733857384f377449427574775954704a31783135767761463031306e5269303377687a327359356730454c486436487a6d63376745782b3664566257786a48555472586573633173656d32612f515643646d6e514467697a384c51526c44567171736a6c2b6d7078547579632b46487966496c585a703348463750637832644f31414d7533736975575a4c4a3046586c6f726466547862666d576c3945752b744457465a2b764962477047657030783859457633456e512f6b394247625a627744656b6453794c6d722f487a614d6f6a6e6f4f396a615832784a4f564e566b4b592b524b556e54374f574f784b3255394550685839786e79653466367141556d716c5335544c4d6c53696e6c4f614f796730557a5752705451375062487062616566563047434e33364e71484a5332556e4d43756b592b487037767a416576793349716d7063356d6d75307968304e7943616c2b6e314471376551547a506d556b2b707a363161524d6f346c415757424d366b6c734e547a553238336c314663467036766b702f59577653303837723878336b382b673375796f6b4661576e68727a584e6e64384c75707475745743774b56644367576f442b75627137784552306a416e2f67766a574f2b3174586b4c39426c366b5338707a4f47566f71707354472b55327575635a536a483970673847527870344577586579662f414c507a556d307a504c306754636c77726d585834362f35716670624e516f734f3269743879332f414765446b4a704679592f686f6e3973664665386b464d66557172596c6f2f315476357369474d3831567055444b333748543444666a776d5a692b5a3467344e53797a593663364655543534446d752b562f656d5a467a32415533316e746e76743238326334434768346e76784f53552b6a6f7a485a4f4c4f4a36374e4173785141716a2b4b49616e5679736f48373632754d4b56634d364f4d685163544f444c4f2b5043525077375071554d6d58425851754d367147614f704f564435636e6d354f334a50736935564f6c477050387041584646333567796b6e5948666c647a756647732b595879637979692b66556f4b7063336b633453326f304b644a4e77692b786b354a7a4172574a7a7372646438417553767270613942356539413063482b70747735653641615a78644c704358452b71536962744d6e4a35783450327079474736726e48436271714a7333514569375a7a3567546c504175735a2f317a714263744e4c2b30554834344461354830755532356b7636575356447077723546585a7a6c314455304a4e78664a3962334171767070547a344a67477a556666304f2b4c323149506b314557673273617a6a6662332b63686f4937645a74447773456f567046485072712f7741584e5433345875534839576a4d5973486e63794e4f5975324c50313274704c64746e34656f464e3245397073364b74416e73397a5932797231474d55373470326b34703166447878667476743468386a4f6662514a63574e787278714b5069653350484d733434475741746b31487a437571543745746236433437346541686e663854464656512f65575871647a686c6b30334b79696e314b787579732f53636c70386c6a6f617735696f533446546b4b4b4676706351665a36482b78736153344556727066454c5932782f5230415643324c6c2b35304c725631712b4c35576d6f75494b366d69644a6d72376f634f6578796873397648636f416b335570626b78486b397a30424e6c536a6e3439556f39354c77372f6f366469726b7a484a566e3968714c6a6d68384d69306a78597458527a377330346e4f4f384d464177727669553232462f4d395a6a6c346376523063724c344f6855796a61454e4c74597334507a456c644b5676384135444e2b4576636f413558414e524b5252796d594c6b36667a4b585449796d4c447951596e6279567a66566f564e482b7033636e2b5a72506175616a32704f49673937514d416a656a43457658473368636e7268556d676f3961755057725a504239574e565658334750646d33736c682b5558547141757a4f50376e44565478335142534b7249732b7258633349316e4d6a3057704754714967554f4b556c696c2f714d614f6661625a52475270514945315165382f6558362f6f432b636962354a577273766d70386a5a4a57747856746b6d374d784e662f6a38375754706d665663327078414437666c6439684979696d70594c35546a667453446b5575652f4f72596851776c7a557a3671644b64735765304a5a6d7256466e796437516a367132614e414d6e51347630446364497470433477474e6674534a4e6a555473526f314947536742792b784f735a456e73437535437973697a30436376653143464335624b4f4c344876584b4649693430676b366876765457707a51305a6b6a566a776964626a586f56544e636d7252734f47787935476335384b5936484d4e706c633668546a704d45694b5a796d4d6434313359494f5772324d786b36494654625043364b52495461794b5767346d57553576776256585070734f725156517939716b50436c357a4a642f57346b4f615276304539412b3833596b31784855764d6a737a316e712b4f56626f3453394d6e63546830534d2b6d316449742b456d4770334f547a50544833505537684b4b6b5a6567642f616444566a726c56424e7855712b7933493172776e652b335352565958592b6b6c4d767674426e5157466b796156464d6e36775635712b5751576852516b59307269736835633861623539445167584e39616c45756a705a4c6e65354a55564e58442f744f4d32684f73326d377679634a333956426e6256485a53434b376e497161704b47506456666533783754306b3157585243727349304a426d7371464b6c75542b6e545663633734773470583942556d375652545871706d7a64736d5a79364b57614461486a6a3638386e3361452f77417066796652476a6974434d706d726f34696c4e4845714d7a6f7041553755374d42355534384f696257745863534e4f745a3934363677702b52633261716f697a7357716754376372617a52617354515367427a6d47617a392f75726e667736594534544f356b2b6450796e586e36356c5771496674692b38304841786d6c586f77775a7067576649364735677a6e7a2f3473793576612f356a6147594761644c596648746a6c31334b487a34397430536d304f5a69303655744a58353961636d476f2f3449762f4b43726c354f79427768394d42456a6338506462627a6252716c7456696331714d2f5270544630656b74764d307145466d565661516a6e684e524847724c5741334a536369667368384f5030506d3730695765774f5a702b51716e7931506f726456636370575649787049594c4e4454717a344d3359717a3670304f6a6a566f4c386b2b5a5938516f4c33426f2b78776c7a37515358772f7832334f725365744c4532314334334859754e467a5359656851365759644354366474464c6c777061497335774b4f66434534634531386146743746462b536d2f794a72637962764f30637a62637579752f354b5654584d75596b2b5564544b76744d73634139436442317830756633363741734d63367a6d4e736975764f4e4f53574c4b736c7a75476e756b3359706f6543435a5a57724463685263592f57557579372b53316f6a466e3147676f37567549474a6c5a5575316137666e49676d52466c357937644561383878375a6a4b675668364c6f756475656567393366486e55786c56692f447666717361424956646e7850745874564f376951734a4434786f6858624c5569717073475465575666446f51642b4a473478744b465676626137333244512f4a45314b53706739376637676e2b5161546f433438646e44783054707a704c306f6d6131756975764c527735554f734c744b4e42452f57496e37542f462b336b3747724f624b72434e78636e3530382f336e72774148793169346371696e3649446b7a3844366b6c476650625a73723164786e4a4530584a7a326a3770744b6a4c5a385a4c724d2b735342397a33736134326e33676a342b334e542f4835695a344e56593331457130626c4f73306d74313433534f70716e685950574b57446e56414848576353364f6d63316455734a6d7033435a30654f4b695230585a2b56314f644e574c4169375670337949582b7549534b416d52503841574b4f486569557a7230704f79414437304a69752f56643976454e2b6c374a31796833553242435279644b6d77617452756c574d395334313664535366506c783133586143313957355a67465257712b4d4b4b5066554b78356d6c446d4e5451766d625845766c4653787830324a34376835732f7a4c4759654e586e7a797546547a59436144633633334c752b4d2f6d43524f74356d725a7a5973305a7257634d322f4e6d6847672b6f345449386a50716f59762f597537616c53314c532b73615a6e6830584330334f6d496d5a34514238454c57302f484677492b534c49656d3571686b6d3135496357705676306f34324d6a543136666d624e7853586647412f6357635975506b4239424b4339656d55374558334c2b75737a6d31644a654a704b356e52757830754b6b52355655745a55455a725773365830393634334837414d4c446f6764785053524c6364736c45394948334e4c33366259374e593139585252522f366b7a7166762f7076544b647973704c6c70642b775351444e356a676e30496b32652b6b42645a4764566a486f45374b666258796732543852502b733071766e6346676d4c6a5377663253696f6e644136765753726d326f6337343273305a3353397042697054747a6c795a6f30754f635a4677767a5359746e78413041343549634e766570636f45486e54704f726d75684e55726552545a3078506e4c3973737347533457794d2b754a4a4c50495163422b394a39645174366e555555755344376e4457683464646951795766797461482f414c4e5057345a6a326f4c44747154384e58386659376a3141776b7a39426f54554c2b49484c426c6f7a6c546172686c3936674d397152716a5166453869374f494a6273646859674a6672522f49683079657458636b434268702b556d4742594f452b646f4a646e614436475a39683138706d6c616f796d59746430396e4952354c5943595337326c784e54386c496735426c2f77412f30413471476675356e416e725a6251675731736f3865427274446e46334245646272713072454579695877736c534c474a64373139346e6a6b674873325647635533493941795a6f55553071612f52715a6337683641386e515371486363524c756a3637352b4a545134415a53507a4631594248742f32576549557671706d736d2b4573326f485577307752534a664c77715341786356435670753967436d4b6d56586659543142475a2f4e4e6573664d613370794f4a77565974324e5936654a3342596b5a704c475a4f6c333756444e446f7a754945316678496f3979337554525a57366b57642b3759446d612f48395031436363325a4c6c69553338584770576d3636714d38736c554f632f6168306c7853743456615635383142516d39494d4b6e4f4950724733346b2f4b6d7761353047536a5232327a6d2b2b617154586e312f705236556249383667492f682f6b6f4f4c42612f6e4b686a4454776a39357559667a424d593861455a767a4e332b526e56665862664e50324b50714a6f395167585a7a4e715252564a466f526b626b73644c6c6a39543670704372462b7659526b42574347644f4d515a666c4f705053454d68496e632b756a5671633259366c616956422f49426a304e7a5a516a63732f7742733559594e636d464a667237547151714d2f454237713071767a786448505773732f774334583645324c756f7a716d567831524a7032456d51365274396c6e414e7378534548302f737468416235333431572f44756e796f4d78614d2f433263734d78394f524a6655763962485a4d793976616c6643367831444a567a696f71524b4471765a2f38415566314d547869656f6f326677774b446d314e37494334344e4f496535634455305478687152757274646d622b695361495a786f7a5255786a2f6c6a702f3078336b36696850787a757832654543585a2f6b58717836652b534a792f4539696e59784e5357633161586d6d6e6c77486e4f46573474574c376758663359486d347545536150312b6d454470703654686f62596359704e654d38665872714c3738432f4a58784852366a473138362f784863546e78436e447030787078354b5a483644723753666e7361694c4f62705a6f5445745a4c4e5434786d673539644e4173724f6e50617876463230746e336c2b4d567a36575a7035576f70476f75346d4f75672f6a3839433768633334796f455a57574a6f34316e7776436b445544485531454e51787772486b4a5547767056646e3938695251667a6157647a4f31576e665a31536e416d4f4531564f39326f764f68746c62327567312f50476b61412b53637758594435327831527657765473695a6f315733516d504f557a4b626c7861334a2b64514d4d48324e43646d706e7258774f66384163346b464a392f4f754677487032564f7937707956696152594f4b6a4c7966394c4b2f496d3255343157745053333936674b4b5070667a44654d6f716e65344161645a6c535379526e2b38396541776f5538547248517a326b6e70554e41343764613861366d53446f4165746e795370473646546f6d6373576e6c4559426e68772f724d4c673930436a657431766a4734366d682b732b37526e32476b72372b565a6a3631456c47624d70712b46735559637443697149506f42526135504839464a774b415a43557758544d48545741786e4c565651575950555858545a7a67517649626769583866376b7a3249596f2b76426330613658444d7842504d4a4248396532424b37706c4f6b476e506d4c45466d666b5156326145756f3531756232576862664a50666d73574d2f5746396e337055555a6879687a556756433176326366556339724f7248582b767a516b746a5a376536566d624b4935303651377251335a746a785558453955763567525051777a6172754848732b59525a626b724732626a7339626b4b705a6f2f50414d524c4c556b6478746271654f5536555464517768524f32754d4a356742524a5438464a51454b4a397975544f5230696e324b6a7344372b636a6470306d494b6d72694f4b6a666a6347664e3548433564424731664a666844324a447073502b726373666d6e374239494f726253343179425441364f484d646c496a513539466b42706b3868665144597857717845363172363568484d4e30426d535641412b366f63655152726f6875423246587a616e30463275413545704a3776744a446c43656e4b316166304b374f7a794e4d554a437a33697776682b7a2f56716471413030316f4d714c4d3751736c2b6246626b5a38534575713161387848335849422f7742476370733247784d544f6354336865394b5242644d73395a4a2f7054745143706f7a776a52426e616e327271455150797a586e313975316e317a364c614c4f5449304a316a3956476c5162426f5343774b6b45744d54367462716748564d336758456d3537724a6f43566f6930365a6672716c6672586c5678656e6b2f4c4354595570696e2b7055466753302f615437674231514162522f4c30575057634f7661303772496f37494e476a4e6f6970595261446633785139375a4c542f414947723352386344594655714c673956386476672b7636414e4f7a6a733150435749334c577951763547754b6d6d6e656f5374695134316f7a756a54553746305a324257595050754d57634d332b5a4b652b50362f7148566c476458444d6150716373714b306d483235724a697273466b6c41464c71306473314e424c6e52715a4d612f77427241446e4d476c39516855375542716a426e4d65793743565644576e737a547a2f414a4c706172624c634e443170586e2f414c56563875625070447866364933436b4954507271654763642f4c6b56563572344669656259312b64644b787365774d5a3049666b775651745a79682f38414363646d39463359614b76756b50434b65326b5a6f31557036344a7a562f576b54614f314841615a2b6f6e343236336a6c56746e6751726a6c31394b384f354e2b334e3342734c6d62755a384765364f4378564d6558636c79554f35503032436d5252386c396a58476a536d70756a4e6f7a41317230764b504b536f5a343735505038417876626d356b56564f6d65552b6d766d6c5444515548386852724d487953354d37493178614d374c484e69506768383346465164357245317a414d38386d763368337456434c5a5252457636553657383365635456496d4f33533550545a393269456338624648424d3845704b7830667641442b5948752f4d66764b4d7a48776530622b6a503435506f734e37496b5330724b52646d684f6d724f4771617a4e474f7a3433446f4a6d5949302b79696c756950445a2b6a6e5261317548334237774431643836385248506b7976494e476a4f66566c4e76682f69767539546b636b6942626a627a57716a682b477a50644b58326e4f6c7351664b542b4874482b616152505352765434462b52754e357a666c2f425a456a5376306d72354c627252647664526d36476871493465627862563062336248423266675567626b35737a516e2f41505a314f4d3663525048674e6f5a4e4f617156656a4c395437376f343646317a357a6a72696a307150384147643761716f77306e384735684564623554556d3868436676764545346a364b66484130486a4f436459323930324b2b566f735249416c5054386b6d694b784650774a6378764357684d79526c63716a324d47616d613350352f635a53677944364c3645573832532b6a37714b58542f414279306137553231476c41353466557a797a3672506e304b4434414647664641353037756a5547374f596362714c4d32584e2b752f734e6b796a463072302f75686c4e44304e4666657a4d48374642732b722f414f3574496657457a744279706e4d634a3767472b7330634b33352b78634f36327937794744364d6c534258666c6132544f743673326a3270317544523956496c7879524341446369634666574f6558642b554b61656a745a626e636f756132374f4269596330494b615a744775683775526f69517754364d76424a61666137715a353075494a2f6c4d334c6b63732f6c6e3741504f2f345a6b76737158466a477831644b34645a694a416a554d38537330747076786e6d6c78333135685431525569324172557446616a2f414b714865623770516f4b5971567a31775a6255794e633647373672705630726d45324c597039584c744c34632f384166485748543834704f66724547594d4f4643316562446b6d71713270765474687966497551396f766464393658734679397976364d732b6f36704f617873352f4e39396a704b314e53567972632f6e39775a6c714c6f2b367a51616c52784f6d6b6e366d6b63324c53304877724f472f4e643872632f483676545747674e51736f4133415351704a6b677a5641777744665255537536374a486f767a71303255783875592b674c48726e7550545934495358715a347055587650744c7666426e475055754365654e5a38786e646168436472495a4736527338536f383953307268396f796c342f53716179413354736a4b736e4c6b584f76367a657576732b4f645452554b4848746559656372637671434335475a505048717851502b63726958796579367a737638686f65506b785248704c73344865394e764f34697146473179567437416242492f5337524b526c6650544f46794c51424f627a3439474e4f3954526f38306b6f58744c483545384249634168726a4d66754b2f54696b6e6a57664d465a6b33717437513254504c474f62596d79644c4c2b774643483874576a324339693576744f496b3255644757687a65746d5654443735317a47634148583962766558525a3464724f4c744c72565a6158386a55363348586c4c30467a364a7a3539412f566c7a57396e596f4f697468704745666a6163392f4e6b454b757a484c4f6a54682f6b755557426c4e304972382b686c633957674c744766515632634273304644524c774a66594a634a5174414f6f64574b5a352f50376875665a775648526d774f6145483153304b3062596f7a5a46343732436d615058736279563267576250434b6d6f5a302b2f563531786d484462324f2f6d794732746d354445736b6f6e634530537542426f355a74745255682b645a54334e4251796f6e716f424f6b5655713467574d3149644c71663138694b5a7275343751744a484776783242444961337938747a746d6533546e5830495836394b654c436b6371644a4d4a71345749644959554477512f54714b656f443274334e75426c58334d32585670526d5a7638414b484872573656453338676e2b506e692f7743633570665847696d7757776b6e76654b6f5a396d694d4672574241767446514b315a527337394b546d7057725866445850734f44373644707a67304a355967696b2b554d584856396957634567637a7663372f3659522f674c72553755437a50533731487539503261656f787a4e334b495a53666e5832617152714850696855313873396b2f746831436a63786863442f41464b4e78303066477a6c596a5759333534446f393474745a586b754c447334542b5877766177334a4a2f4370675a7a6e7a325a625a754330307342506633306639544f6453584f4c5734456a506a614a6965496c7533342f50756973644b4936463841666173514667564b424c4f416f6c552f7235694835695a785a68786e515358666237684833375470617563785732706e466134723172456636757a74745775334f4f6273696739374538454a62383276777679306c70586478504a707457724d55786979352b2b504c336f524f4a554d3538664f665736422b7a6e50623745486e457a2b50313952554f6c34743446534644302b442b714e56524c2b4163617170434475464d35437839474e5934427179655472647a7257384a4c755a76786442727944354c5a2f4e487236696c66494d7a30766c72663944306c3954576f51766d7252304b7447785a4572586a2b4a55715861414b715439577a55377a3550625032452b6b72354569634a3652466f2b4b73534b52316354307251696d6b5053443156597258505153554c6e385338497255773631386f5a454e50315a58557a354f53633556636f5a333954696c6f684f5653706a644878774e6174334a38447861505a6b2b6c6e6e5461394b72525a476b644f4a6c695a7a7a627170777444496576704e3073723666753443576f352f6857645052425164306a6438553547736e7145374738696933714e627772314438543866737a37423145366d76416d516371542f6e54304c732f507861644777686c666d79632b7651304670702f6b532f776f35392b39637850446d476c6e6c702b6c336933616e342f7056366d65642b4d774e517150755948597430334d7a6d507230613156546f3675655159616c316e476f7171614b67634646587555516134744f6332696f4233572b6c5641726f7a50787a39514a39564a79626d6d326a7953532f6e323961795048546d4d5a6d366a4636587a4b5867544b42646e325874736b2f6b69467741357a4e2b2f55774b74386a3869394875374b5939623861765762653531694f6f375632524e65504c6d2f4a6254476a6b3661536f6f527446533935704b63715547447756384e675575744557694f4770474a454364663662616b6c48742f4776316f56304b4c574d7878544c7232323066616f73547536576736505763736d6b7a5053623056564853446a346e346d7a42514675663864513731664e76532b616a2f7866522f457631706f5a6d67476f764e3874716d69644433746630555a436c5a5633793647576c4d4f62594246543869317a55554c4d42536a374d59766e4f2b4d68765a36672b686559396b566e346a2f6b4a5a6b32447a37362f74517771706771584b31567037655330614f4a555256664c316345392f3663747a4470424b4a76366e6e2f41423145467338713948644e7175442b4b48725957516c586a5954436571454b6149646a4d66546f2f6269644d30686c49382b6335327262396d4f4473702f6576424d30363578662f71312f6c496c4f683548364e6247644274382f456631327942347553614964487a2b5263566c7a642b57337a5451476d353068686e686c365534746f3676396455483143633350734d7a6a4634345271564177504d50533631784333385550576f32785a75665a38392f6b437472433530343839506951794f516d77732f4c6a336f5a2b2b392b69375234466e756768636d6f4f73632f3436687372796e3064767a703664443861665856354672364e716d44354e72615548312b69564546664656684b7567754d36743772566a4d3035394f6b76625a796c524f6e462f2b72582b556a5056312f774164384d386e2f77444d58367a35797574666f345261756f585858574b795a3835614d2f47585a794f4f364f36504c39344179647872706d533959454466354b4933394976582b517738653350517679484f75676d2f486638414932584a30744843375a4d767947344a6377337a786b726d57754a50473668436b70785254337166594564412b3434666179695a33782b3872492b7138703941657630656248342f6576773975707a7176474a344332436930437a49714a637870596b30356d552f6434636b6d4171554239762b62763841365944744d632f3436694d3632352b503575514466536a387035654233466a6379647659374b32426a7a746c7569376c6b6762484f546f4a36696745683861665943584f645a4c313034316678522f4948702f49765254485054314c765150386b596333526c3862526e364773796d6d642f58566156574a5a4a796a6364582f41422f4b74444c705778464346674c6e444952736637445246356e48764b38517a30504a2f774163555635724e6a30532f4a56466455484e4e454d462b3361434643474c3266492b47586561314c44726e734e6f35384b33565a7632414a6e4a5a327a544d6176346f2f6b456e4836477a63796e31666a582b53576e44624a347a646f56334b3734357079466b7968482f4a4b37695a49385871643172492f38364575446a34495557745478715530787a2f6a7143646d372b50326769656a4f2f4833386b56545561744933625472596471566a632b4e7770735761435972576e5859365037546a6c706844337453676d486e7a424b352f7831454d584c2b5065634f50325430612f49726d41415276374858747158665645643957746d43696e4f522b6b36483133615536476f4c37737a746e6c414c4979576b5a7a62386343515a4f4e2b4e314c364e44443946667952556e72544c5538567a6d7668544931326244426d7a3765625a724451796a685556417a684a734375506e73614d48794659354532373778496d6e69586a486f447461664d76785430783966646269745a5977364e554f72646f50717054555734464c6235567564763841756a4e6333335647354d657839674270752b77704d544e346963336a674a556e306d3949354b394c596c394c765870584a5641792b532f64304e4c4d6d6a31562b4b39783663686c696c47324f4d6b702b616a362f77427434416b766b732b5a5a646a64624f5065567a38684d2b656d486f7936375833385830352f495453647a395761326448587965576e4c33572b3657756a526e6d6a347a504f4e4f4f756650454c324a2b5a592f3841775a784f614e317337643866794477505350305048484d4d7a3037395a6971564635512b70576274564c3871374b73702f4b776743795365596e56474d4f68494948796f4f5455745a373942784e55556239587867455950533330744e2b6c6c542b6e2f414f514e4179364631556f5a6364576a564c667a494c7538724f6b536c62386d666c32666a7846772b4f70442f73564653794d4c482f31472b2f584e522b6e394576523066763475543468362b732b785450507156705739576a4569625a474930424e4e39567133715831636931386e47686c3461587767564a4a706f623739633141374b39452f783439794771384f3965793263776265614f7a33512b46394f3478512f512f386b6d646e79717357577073335a69624a712b774748784d2f776342653537792f3471676a4c36472b694b6e3852732b4c666b5272624e6a376d354745756e7948625a6a79366d626d79794c6f6662686e455378476433374a6673416e5755314731714468545466336c2f435075462b2b6d336f486f53642b78682b7333626731736a4e444b7362752f6467657932686c756e796e4966592b68333830347059375074696f4b774f56766135773461715a762b582b516b63766f7636434e596d58633848395938734f42427048535565686e33374e4c72456e58626931563669356b6a787a70544e2f57792f54444554314d634b5a6750694c333652616f434d394e2f5276732f6a30756a366165747939306171467776796c352b62596f365559384c6371376d554a426b7a2f4141305a5942552b785075483756774e644c53457454336c2f774156514b387138493948717163764f677966585344503138326a4352766a725570766d326b57352b306e2b4c626e4d6737646973306c3561306b66494a2b55326e4e785055496b542f534a766e647979484e6e70583650557a624e4178657672564f6a7a6e76336738306f7a384c4c4f79426e547a663154524a58486e716f5a4f63317a334e4832574e51393966657a2f615a7638416c2f6b44592b6e506f3374686a364e6d422b524e744762477a536432446c456439714d374b7153682b423966566f4f717a6a42386663664f64396b355449364e414b686a726e6a64614f457a55446c656b2f342f5057677145666b5a6c4e787168346957544b38676a72422b46546e6a7a4c68334e4451634f624363625933732f553354424d306e3664656f6f36614a33616b644d52394176355236612b6b4a5a63486a336b5742362f667a4d785436737573724b3053626c773333585a396349352f2f414a523274304b4c73396a77352b30544a435a7561595531786a524d69312b73625a45584c30363948356b6e614b2f79416b3668655a504e71654e4835566e6834377a4a54656b6f79706f544737486363503130704c2f714f4148556f556f786a4a7257622f6c2f6b506e6643505233617966494676443868685a4a395a3273724672386830336431466b4d636e752b33714c6e3150736f78632b524e68554d465351564b4c74514765374f524e346e345a454a6f3862394339614b444652682f6b644a5268737062684d7a642b5741356f3547667773586c442f69487441796a446d6a396c557a37697144456e644778527a73732f713264534d7a796958326548656d6957593839506a5872336856356d5a726b572b6a794776547672724f4b554330536b756e4a67757347504c3475542f4b79776a3055674b5a6b456c38667450792f59524f62784830693866624d354b5079444c756f387361364f2f662f6c4a7a6e686e386a794d796556333834326571694f795552616a36636274474f4f483254426e7576525a664e72645969415058346e364f59654e4e54726e363755654f74694e68547938314964422b67443135317061756875536b37544c6b4d384b706d544831584a3871756d4e732b6c6e633061597a61626359726751625438633942394a724f5279666b31354a586b486d5631515a336b6e6c4e632b613341346d5636717574324e4e49704b3746593468616b6566423851787a436c70394f2b5a3861674a4e70666a335561786938652f497653304f6d35474a656e654c4e6b78744f755a49795574323354756638504d664c2f546152795356793431483961325a716153596e7771416d486f656848457336656a2b5168644445664a4e2f3841644f64697a305949353862476b54584c397047787166786274546867553941696572772f343071337a4f736e6e3876754635442f41426c376d57304e335079503534397233365a77784a624f48694848616d625a506f3565766c324c70444a75444a2b394d507a4a5144756155555537416574316a36382f356433314169316e34345a3361614c4d37386a374a724d38746c6c576271626b486a3642304c3832696a5879724d4f35713170375a6e35725061305654534673544866586637765a58626e387675456f63373865717a65726f2f6b66755a6c674f566e6479783263773158336c523244667442477336744d595653324a564d72695679706d375452503168677671643064634358453330536a467965655065756d556d6a627a50342b56386d756964737576704a6b68722b6550596c5250597966463047492b506b6f54652b4f7545614e4b39777a4f66792b34464e56364d444a6e4165582b51724736544e4646585a642f792f4a6c6a70477950585a6e5758562b576163717864394f566c6e5a6e2f414f4359344355376b59315367352f4c376a4878366e304b446266636d44386a4a45324a6f37624e462f497a756f56416f744c595479696e55574c4d6b736c314841453076624f6556777a6f5730342f6869642b4a364145796e304678394c58386a435831315675746e4c785849314f6f72614864624f6e68786c364d57786f3778425154434c5962384b52376532694e59496e3642316a54504e5044675030506b586f5466324379616631357a4d366e79504e2b68566b546147616d576357792f525368342b5356512f61637a782b67655a7262456b4444354536696a534953427a2b5833436d68354a2b4f6d2b7a4e7735432f497a5070306b53354e4d5365766e7a4d6439675862443274656b57637a5748764d2b687731644d486e536a34343168706d626d4c6463526b446535336f6e7235735a75742f4939425a326e4e6e5a326e4c72585a554c396572506c76796a576a365931437673363839484a6e7374616d69723247757874505676632f6c39784c617333305872446b755a366a666c484d612f5a71594374537932756374346a2f7744466b5a544c65303335333266626d736b6162346855333750794f364e594f2f71754c643949444f544f2f485248534d396a386d4d76536274345664735741586d33386c354e4c466f305a646571734c4670553667534e4c43393361546d6f2b4a71564731686858626e387675444d6d56364a4c43662f77433662386a6d7236427978573638752b4e574e5069423545764c6f7a506a3067715856556c57516d796c3363354c41706f7653526e703939376e3876754d3837523942423756695665562b756c52527a3946316d78636548346f2f56766d71556e4d727859684275584746692f45796d362f6c373154303934483743343943614f62727745717a642f304b5579624f563558367935655a6c4d4c79544e39694e5053374f4d434f45666b6d624444522f6a4852646b7235573752396b2b656b33542f4146706c4777797261742b736259433865742b506a59705850386d395a31544d706b48734f76593948657232474f2f6c3832325a4c457073443743585366483956783058482f38415141325741626e2f4141564639546f394f6b7438576a77736a31617564556a50586b723061416c6a6166307461616e744d664e454e43584e6b6f585537342b3963396159454e4b7442785565374f642f444f50702f77414333764356656c764654616249505761707036634451546475366b66305a504838617964476a637056552f334274714d6573367945454e527a326a3974733950316f352f4c3769523430336772636259444162366b73375475785235597a31326461696d32397a6d49305a744561527353744b79623746554f6d3931376963484c757638416257633534376369772f466362774c743057585a35423674424e5035456f6d2b50616e666f7a4c7375544c2f414f4f3574615a3943626a4b715751367a4f4e6b527a3465356a716a584f693269636e2b6b5831347448366335387a41507a72315348624c76573157307a363745582f79446c36465077733575646847656759626b79633733345235354344495072652f534e464a6d656d3273785072754632596d74366578497a2f41436e76715635686c3162664553346d6e666e757062424655686c593342646f4b5a7866734b646b374e466a467a444b35726c704d7638414874654f635934432f4d4479663037544e6e773550725036694a6e706e7772674f32625237715730753250723646452f4159704a4f2f6a5930527337314a4a615a6a2b714f7464384436346e77714c737a4e5478592f6a6a52363665586a586c795a67786c6e426f4c485476354c5364354f5a5a447a377a5a63744d2f652f495466695873664f346e47314d386c4d542b442b6f732f787a5438595a6f544e6b395766494e5a592f62615548453343325a2f31356167597a4f556b485a366673454c765a3164494b36466a706b4677662b74474a38426179745344486e4c53795055587948594d6b5478515463304d324b39446b30324b505052556b5a6c326b5038354f6b506d3664507a6676334d612f77434832553639717542587576664e4f74726d3662362f674a6564715832685a53797256547a7361464a31343536766f75443754766944326777573373397041772b714777706a5a7472334b693158513637494d2b416369506d67715572634f66514d5764484f3441735a524f4c6f5a33674857437746492b4832475666766d6d496d5a783368716765563665664e66544a63544c456a47384d2b42417952545879734b54714b4337506f547464714638526d4841516c4c3255493554333452674e2f696a4c746b4f52426d2f46512b5644632f4e6c676c746b794e4c2f58514e534f7a754e785a6f6c522b356c4d397a6b6e3031496d6d46774f41674954495531616a3553436b426e7961763038356558337063527070784a4731366a6b4677692f693138454245553942705271734d7236466839754e51314e347a5167766d6e7a7077386963352f5062334c5435485157736d6e4a5953302f54354f74625a6a46494e56796e336b4578552f495950744b656c2b6d53455573304778786f4c5334447271593558437569355a552f553967436c676b6e696d4c58782f464a636c4c4143632f70414f7a745a366c72644c4938787a3547737443596f7178726e4a613671343834674c35474a4b7a464932394c325450393771584c534a6773674a556f4c4e7254503133756e43524e7343624c537a744c4b64506336787565786a6d4233342b4a4835666850764b557a5569384844534a4e734271672b4e4c7378596f2f483061623663312b544e52645855673944724a6a6a35714254702b7968346b414e52303466724d6e364e424f4135775a506e55647631336530545956747073446e4a47514965637a597a7152744432764a4531704a727753347746744b376175702b79446942615654724b4a4c4a715737624f33787536304971317732735337506a5641553162456f6a636c4c466d6b6846496e4c653847416b353279434254483035716c53614e3454364b63385a64425657673268682f4d6f36706c79396c5977364c42444e58745776366f5a353366514d785349665a2b47596d596e6849774f746e5a616a3537454b6266484f656a6d61576a496c4d75656568627032357a724c6c505a385761784c4b44355363337373575874494f2f4e4841634c30723066765157784b4d784b53725866584c77616b52316c51355250645055316c68446932554d59632f6134674a4a6d4550416278715148565938785a43314579534a7931314e4b573964634e455a6c32347146564d64386f5564553665656759675249535778714d48417951454f6e4d2b4d68396b592b6a52637579327478685446497a5130586473707068524f367a52747a7958625a31744b785459514f634c413478547946536130677a71325a786a504150542f7a59644c6d517a54756e42394c44314563716242564577394b702b634e594d75533177793063633169676355435441786239626f51473952774f664a524932424b6f724c4f305059353858546f374e4b646134746f4946754669456c3262347a57314e4d5a7a475169784a3841475864472b764a68414f42464130727659632b697030732f33596d5252616572645336716c4d4c695a6453356b34384a78324b557176356d4562514936664c6444493041684b357a545268646c6f54332f774253616d74746c37614a6f6e516d53636c4a4554693639546133484132636b6a524f6639414775644f7559536d6d665633396471534763625759636531336a4f354148666263746f356156787771424a2b7a3378366871575a6b6876384151464d375053736868617168533838714a7336704b6b566878314b4d644b356d447756757935565a3871364f4333365966365848384a5648787967693237354b7644472f4f446873727056796c552b4e3378696931765656556362784b745778387245746a6e2b7571644a743442416f50384845514a6d496d6567306a2f4948386f504566546e56567978672b562b5a315a755a6b5950684f6672555a3261367651593751674851663950734f544a4d734b4845626161394e79593652474949436f4366656d6e4d7a2b4776723177484a5031463951504c664d505035664e664f504c3464326e4769626a51775159312f6c6562684a2f656f72513866386245386b4254714f6c6e3868596b5a6c6d546a7a52525775396165736b336949724749466557306a563362324530324a774d78393056506c665a62504a737a4a6870783278365766484e44395233692b347956302f587a6f6e3654327a4c4533444a4e47744d6a445079644b334d2f6a50476f4d744e53495838312f4965364e6b4e63576445354c2b594248464b7566786e354a364b6958574c6c624a304d6253476c2b37394159776e66697258612b713378373078794e4c66746b31764a7659586a4d464d39394c4846446f4635586a7156725079664755796c4c7654685334624b615167493232416d36696a2b6f6e68484d4f68663436666732724738697a664b5055655452312f4a6b7931614e754f6a6374713866486a7444794b70624e4d7462504a6d68632b54536f534c596142744f6141493363676d714e78593331635269736a7178672b4d5a486a4446355532626b3457776a4f56796d35716447642b6f734d2b6571647a4f52526f5259544652304d53484c47756a464e506663317a76636e6e6d637a6b4f6f387a4a754e366b4d3866346a7367536b566b4a564f727947327535652b6d6e4f735747576e2b4e374f763279742f774136415748762f7741366866414d7a7a5062504839714f4f644e6a73376d666b506e356f53473458792f566252796b7736746b57544150786d5054366c396c557a657563707155682b30484f424e444c47386b4253366457715675664862533870696e6f664a39566864505330462f654834792b436670694445302b7767635967705531487779746b2b313175643848574439567a6275747938694778456e47713972334a5370777a49362f35365a546350546e7053644a4b422f62654f632b4b466e4e415a4571446a317066643950515a727a4479735543634b576a476a51715a4c38517a68774370366e733871306d6e2b67626b677630644c647543665271392f65354d4d67795241446a584b6a553261676e4d4b756776514b51522f5a6d317157534a635a706130514d746164624d304d6772713662415935636646464877582f4d4a70586b49304854746a2b735877385a61635a5454466f516d77476670774b414e7351754f53364a4c2b4e6b352b2b767557594664714e727a4d39464448364d5a64625056546c6973432b375437464c734e505658544a2f5941317a447543535a6a36624958515a47594538302f656c717a3130496d585255527a6144545a574c474d46543169446d395355332b763841626853442b6976324f376d415370366b63415567534936477135633266517a6a7a7075536e5a5056486732456f7749654637372b69356f41587370424e6d6a4c6c5a636638586d6b3333696655356c466e613156493630716e556f74533478734674777a722f5269745074423038314a6d49382f6f506e767666423957777039412b7a48624476496f624f684b457773464e764a4d6652366b3246387a674c347745776c436f4f4851414e656f4239716f395972636a56516f342b4b6c63434c3135737864316864314e666559576e44382b654b5936435a7a324d536c637958444e33347a6f534b4a7878674a4e706234726c666337796d346e717a4e47436f73386f354d524f4b744764394b706b3336466a4f317345484b65707a512b735a687a2f32306b42344269756d563239715455325832456d7769744349322f796a7a2b532b35686e55754f6a516f576f432b64497570536367496142635544546a587a3537597531317171715a6f7a73705330354561724a6a585052486f624b50676a7a56392b3874504f6c496c6f41347146554a6f45772f6f496a7952363832644d33306d35744d38486332414b5063376c6e30584e4c2f4144664231617835444c6f45784a4b35374c50734b35514465456f4156374a706d36536e517a34327868374f575a4c4f3057424f74456374326659364b6239384e3031517a3966376c4c62784c71517253364d33484d41572b344f6a334a464d79476f61774e45714b6f6c43544553763051584c6871716f6e7958646e4575394a6e57754f72596e6d704d4f4e6e537965506138786c72567a4e556d4e5563325a4d6c33365a57367579454561636c5335336650664f742f46736d716c46696c42514375786d4c6c386c54475663384343573645326b4d384e4a6c55312b634844676f706d41394b64466f5261736a5a6b4c72565244563542505257716a3963564a377a73374f587a7162567074323832633443657a624f6952736c623168584d78595342476a635052373337595a2b684e6f7a556c6e4672574d5a4f776c6c3263456465644431665349314b61302b38526d4737797a66757358526a7a35514175463037483354493435326753313463302f4f4d4873704375685165336f42376e58744471315166464775324b316963786b4b654e3565664a536347476d67566f58553471504971342f355453557a37437061472b514b476e3573395a57756b5958432f514b634247513845666857786a6d3643614d6c6d5a7373554e564c304b346e6d53344f31614569714b477a6e554d726366596e5957624f6e517a65557544336b5175653133764941663276377631346a50536a6f77337258694e52325a527a56364f6a6646796e516b653974636c566331425549697a50656e6c4577726d436d595635526e5453546d2f43534c525043776c4d574444526f67743857776957514c366f546a37726a4c6b677651475848364e3773304f5743552f326e41505063566162313069427553594b72767434676f74365774594d2b73335166336a5459565177693875396a324469635663612b315552533571324455705a4e555a7a4f462f37483456507147553738786131544f5664564d757a34335a756f32574c6e317976594c6377383847494b686a766b6341726a2f636a466e4d3736332f787a433350352f634f59327564524d2b5772536c596f7672326c53354b7669634d71364e5859345556516a71667637754f31796c74634c6e7a4e4c71477036526e554c444d674e716d6370637962744758565a735a7736454d353332534a32702b6b6971576469426c566d726330312f7337457a6d4659324559644e514735494768617a397a4e736d746e68746a31725542704f6f2f6a6764566f46454c6c49496b7058474d6f6657702f5269664867366e6a4343634865685461614366522b6e6165556a4f4b37714b67654d394a5a3949764949776f457171702f756b6f6541776a635075344b5647414b5943574c6e6476647043535a766d796e31636d376c35674c7361302b4d4832484d6b5a5168736d7561585863415143676b75496c6a5237767368694b50713254316178317957523030505656532b784b6d75713246356c76366c5164427a336363746e65433457534a542f6d48754d756759464a704738556e7568584968302f487a5461456566727738666e53426f47706a4a782f333669617366384169366e477a32636d54483070693967652f77446f507561584a50384131472b694c6b684a34706f4e6239617a4e6f676c445353437047736f376b705050575859304b2b457a582b316e38366a4876384151486946703063746f444d626e53502b65477a532f6b496d636a5a4f554d567662557872525158795569493956772f2f41494b545659564877745545543178756e51364a6968444a6e6336723745313145764e4244674b4e4b78634572587a786363576b41546a63425455652b636d2b35716659433075517769766e64456230496e444557707464614c4c4a507436315633435932645161582f6339716c2f71495a314b704e584b412b42706743764a736e556d6e70744a5136474b6352557371436637545263466e48543872303830585a744864426a7570576f766650325a7632574e5343765942536b633954726c53555547765768327242722b6d2f516e63504b4e4b6c4964564a6e2f414f502f414d4e6975543944744a4e543834384a2f7741797636427a505a61776b704e56684c66476c54363830355830357a3776354b4e2b4c7137554f684a3163387451304e45785766754e494a416d744a50734231597a733454534d723261474c5472366e63364274664a5763357378735731765475655559726f73634d39505770347471543666413661792f6f45716b474c7166646d454b6c50632f4e594575615853734a46487878636c676c6543614f7344616f5830314e554459464b4c32644f5a4c51623676596c4f7a744256466a4f4b69524375766d7a4e396253732b737130537a33574f4176683650776f45766c625566745a494a74344365674348386449375273655348617a424b48363955585a69736b626f4f6336396e5a61585342484d52537838625a517768634a3068505353513653674f49324a74444d7530654e2f6c49514754466f69736b2b57506c43376d4b7a3761364e4e6e536c583970626b495076774b2b643354443946307745424531395033312f77414e4a4a4d48465a6a615a763479715630624f644a6d68456a4f4b64705454677447683372757370345876704f63766d57355a41562b78796d717936645731302b63586b55545463673445367071367337544c36644c446575696171724e39344278736e764148652b772f6c4c2b675541456366335553754e4a63446b50546242506c3534636a4a7878554679765436566b365153552f5148724a6a492f64306d2b776e4a4268484231724c36316b735a627164536d694b6d6b6f66723576546c3630627051635077702b5558454d33614538684d3644645374667a4c2f414b43522f56763531576972354b442f414a59465065326961546e7337313156304f677a356c735a6f4870464c37784c744b3530396f474f6453552b304148386d76316730482f4644454c7a6e546e53315431796d55736371592b336735684f4b784a73304348336771637a712f367a4246624136594e7248554a676e2b4e685154646e617453446e47446c65693137454c345a335a726d542f6f61426f506e75704d6d3553474c6e39356f4167657a6831644e4e764a7245433071757a537561616d38686677696264656e37547a4b55524b6671584148456b56676d59544a556c7041487159704952747836684946504761586d77556b69537543644b343759745670632b6e5038624e51706c42315857663874595335774d69417a4c6d576f6769756f787a6f546c446b3835473942736f6a706c71586d5152735946545a535768536144452f6742492f435264636d6c546b31414c696f306d726e6a65326470314930713338706e3750653558654d79727970657a34796f79527953463757433076643869526e4141614a71423274495464646e552b51705144446d7454334f7165755753687966742f7876626853437a6c566e36544739467165664c4936634755395543323844356f664d6d39314f636a33767a7153512b326738313349707734794947647255315874535762643868695a385678314b32383468375257494a4a556a6d4e4e7074524d41727245702b7a45636f55536f2b782f6d4a7244694572646a7230656d39585170635578554f4e4d33797a47416d3278315257466a5135316f3066746c452f376c6f56594d326a566d5666645a626c6b32466a4e59716d755831686e574e493943666a51507068522f71593656655a626e48616c32686d72613279633833397a784f61784b5876747a3161447066707678614c6e4d34746e466658416e41596e337068656e57666b4b4c3832456166466469644358574d524c58327863574c6d4d312b2b554b687466635356632b3045395838566b7871634b53595130557554536c665879653355563334704767384b79653379454d2f533063434b464a4f5746436f637a563152314d7258716932644a69767070717539736c4548766f4b74337975446c4b314a63456f30427939725479644252364f4b394e433338796c4d36695a6c4d6233547a7a666363787638777862467975436c4d77665a544e66773646334a614d3052773465416c744f70646e7846342b4347463751783137466d6e572f5a585771336d74376b57556171302f4a4369703262612f3668537a745335796a367333464d6d5247625a313658666d6169514131382f746549707556614d37786f6a6a304e6942455573397a456b576c4e3936706d682b71356731534e767334706961775571596a537a315a4546574c4268667a69355a456a79524c4e4c676278643555584d2b35337958585934363148782b354a6e5a4d6133514559696b51616f43534e58326c5165557774303335704b6e5a65374c7466706c544b35557231544c5a615458513150506a686e482f41473556644b6670414861503642516f322f663772366a555746484e32446d6c4a426f7138595a444b4e31466e4a7332744a417862582f7766656c4b6d632f69324f704e7462464f4f6348522b5476746e526d2b4e5a396c54616d6148436c75647035586a486a5569335764746677565471477759695859417a505138425270544a41674c53583757496e7247524d386a783661484b634c4c70666e4858775753614647492f4a6979706365763631552f77414531534b74445955544966754f353850424c6f554a574450324131333138524e34354d71425437654461354735626e705342576338704c39643572557675713541504657443236567a6b437a72446638416134756e345a6867544a58397036774d7256747a6e575245354d547a6b666e4a31473630534955684c554f75302b4279503370576d706e4743507635597335715072306578385852304163303979624b514872314a335946536a4f71682b6c636b4d2f7567765455366e756b4335526a5378615a446966536e704a2b466a4b2b6c37315a397679774a4461374c66494a75704c6c463856564c757a31636c2f62415053743045355647735446326654464c487a67542b7a6a374a7548546432674b6e56352f5037697537504c79624d4e6e6a7a67564e32577535664e547561797247677a4b746f4e487448414d76636f6b797235574b45457477514c54396f4b5067646270747a32754d697459563365523157776b774c61394577314a7461754339586b50386a634b2b6151314a674a2f7742794d453356535a7133504774502b4966584b77503931756732433861386472385a516d54454e3453325561576a327133697443736a2f6a35563235555565446449557135702f774461494c6e61656537484e504739625831447370744675457867413966553174585835396668592f545069702b6163396934636e3669366a547958525a723952386a4b72496245664c337166616c496f4b39725957575458623951512f6b6337514469587356726148473663655650726848584757624b737171614d3942314831627a68327666777936435846664f424332672f664e6f435838526b5a4e44532b355a4d56417a317744427a4d6a5135425a30766553732b5153716f595879517563787a3661713077424e2f766e514478786d3172634268713869386b665231325634384f644f30437a7533507a6554385764476d73787a6b2f747961387a6a45734364344a6d372b6b4e353853766b4b65654f4d63412f374e6d4c5a6d4e454266576c6a5a556a6e744973327257494c484c6b376e7974396c6b66624e53772b30794c5a7964726d7a7a4c5a4d6a686e5050352f635375464b61347579356861504847464c4b457a7435627254306e577a51596d3750705a37716d4c69666f4c2b52377269634a6a39646f3275534a56444c4c7a35356374536f3236695270586f79447836714877527667305631537834396a4a412f7741716b7262557066496a476a2b48494f4c525a39787857747835753651487a706b30435431643434323655736c716b4b7572786a736a6e5953417547516546562f3667796748382f647a32413662706838724436432f616b5a6861316e386847784f666d7050346c3546704653576c6c74706379487856644558524833526f4c512b467167535a2b2b6c547659504a5334565138677935323278397135494474673946544d35795550706a31755a656f7544765649324471376e39396f33556d35722f6e2f6a6661424f4d65462f51483834492b797134354862723572705074556e343531436a6f54343435764a7262444a5a6244694f70335742317063494c456c527748766d2b594865796e733046324a7a36394d4d2f4e6f38336956704c4d36536561557a314d6e594456464833554b30554b487076563850732b5530792f4b4b4f484877455973597965725672493870454f3033325058536936537a76754a7a704736736a2b395a4c4c775a386c485a6c706e5366777639356c59705038415143637341557056637143386655314f66305a5a4e616170536f536e59746c7353623838687a2f6c6f577064637a65745233366251645249366c7a6c32763270424f6a5130755777314d2b6b70714a5950323871486b2b66456c6e7a36474f7075374f68476b786d73367a726c6f6d354f5975344577434a4334366779354631564f524b743859647155715a4e74507974736f702b54366f424e564b345653442f4b547a6e78615a4a70502b737a337a742b465a4b41425a6f765a796253565570715871716232596f666f4e53637369565a437064616d45754d7875704a685478525476534663433646487a3370372f41464f3263376538523654374e456f366763716432484d6d61326936654a466447576557562b456866562f625136506d6c565130354b466d4c546438366e6530577262754454307a61543570744c6c58746c766c526d517a57554c6c3752537168712b6b61302f53755a7a53386b574b6d753642753466756e346a6951557a446a57664d5356555370542b756748702f632b544c43624c45364b355649466a70536a2b6d3566384148736c6e456545726c464a6b3659356f30733462484841657a386f4f527448484d71434161632b6f515656526e50716371684a58424c7a35457073574d756c3071533471654e73625255372f414f4e493448666c4d75682f4157717137317a634653464a306d386d5a62773659324d37644d37753477645455564871562f7672476a2b6951426d54566d3370545847597a3047754e576558537955483175687048584c3974777967756153797536774d6d4b783173377a70314a4b737968716e667165777a4e4a4f2f7742584844336347734b326e537a6b68706f626f526a39476a584c52347737566a6f726e7a726461467542524e59746663353154506b4476434b536269356d55797a685a77443246456a4f30626976783442755731706f324530374c55554c73304b73786d5879695835575234354438627a365a4230796d4e77663469346c5a32377476322f3445386b51795a6c645051474e4b2f334c31365531517268695a73616d6e4b692b7a74584f5235353539576170716d6a48515855482b6e436b5473546d4351707a4431645071476f51795a7755636d5246544e3965546a6835436f355a484b376f4f6d5a5059326356304161686d6137374c51393337636365517058644b6d6a573464694735734e315370654b355064796e6e7a6a6a6769414f3273486c42484871652b586e4a416133376c7269544d6c42302f31725470507a443345363664397a334366595679525657514f6c6c2f3057457569666c42516262754e7a7376362b31557968793044375668595052475039634f4e547545356a596d6556414c736b422b70464a5538676178456e612b46724c5539743838367a717a77726f734643342b4d5464587171495571506a4b4735684879326d676356564372637a4f57384575746c75704f4a4b715951645441624e44566c574855387932664d306d386e5763394c51426e484e34307255375544572b477a7833502f77413942304771376463766a425a7177686e3975366b3539537567333553796e6f536c6449306466385155794f49713070692b4577324833497836494e506f79352b4432794f574369615a41616b5061396d6a67316f7a5832513577634b63734f574d527072596276735a5277306d366c566478784d78455a6b484d512b62636c30465166794c4e66537a6449717443544952476e465a4a6d797064485a513443485743374c2b737239665953515443342b3947634b526a6857504958566d7a714851485167436e58373354754342764b4b6552345347707179596b36326155386c4172346d50335569376a5a69564761774367352b2f5a70624f324e33583942422f50432b6358344b626e32553663667764636e4e306265524b704365594a614f776968347047683069314a5a4e4d66324841314b674f6742584e5936326b56704650384d7663754368306a496368646131543142525a497833647439656456314f306a2b4e6c544852443855712f6a4d30306b464e63346371612f514535546248714447322b6a665848504e506c53546c507139527673697369624753644c794a79696c3734374c764c69653663444f50336b383666734a3753466d5a376942714d2b72353062634473484b664a6c55546f366d52733653584a614f31594a33663968715a6d476754565141714d6e455156394148336b4d4a4b78616768534e44627356374d47716c45566e3865686d595161516b345344366f2f487256635677756f634d30647951492b6538677970316e3541686a3578496d6c523544524477376a6a6e323547324a3478627a47466236647455756f77317a30585175705361495572572b4f51336b7347582f774256746a504c30432b6d686c417661755039796d55696e393872356c43656851326f614b464b54626d39364a754c534965496e346d65587556313061584f705373594836584e536e37745555447072314a30714c597052797236644354364642524d58465875444c3947744c763058774b5072716c6e376845426b61594f6173395770506f5766736773306d4c30437056554b765a6f5a5878713763624677725146442b72482f744e594e50417036333644695433355a724f4a794a4c4156456571756e2b5243666a4b6e4d72703162574c6c68543746766b452b646c347547567431676b4b322f72345367374f625261564b6636674f627146775332497a4666496c31464c3959556463354d78517546744e6b56474a4e33672f587933542f4c387977427962447064372f69614441475a6c6e74756a5a78316a30364e4e4e464b4d35584836464b447259632f537a524e7155697343496c6e384a44304841715035544f685577574853377476784c31474b74526e3233756f41375a7558584c6e6f6e526b4d6b557462306a61566d47354d3647754e3357596a6530485341554c554467655477355a78707a313748616e4870726c65614e43724d6b4e6d6f784d3143553566454f682f6a2f7465326844505954505a3748742f517341456c546c6373786157556c39645a4f5a6e7a51565456522f42596b48766379582f736b6e7178714e4c41346f76692b7933704a467478674231656c4769486d72394c767861795270725a437a736b452b6e4862475757625366636e3452456f30782f745036627730424e4e3044353870414f6e314b786656645368412f747230646a6b6c624f2b504e525237597162462f583930367a4a6c5139704e346444767462534266376c4b41643339726b6c30526f636d714b53657966502b39626f4c304f386e6f7a70572b776d644e4b335278314e6677667544384b544372356c71557a2b677770574a325a6375676f6a6a746a547a507a2f6f6a527a7145365a6647796a367531382f7a50314f7a6f36514679595a33506e4d3071446867446562505a41757979524b53726249676e5a6a657437546f424f6f59712b6a6f6b3558323139716f5830446f446a65676d53686b69766a443367726c5130426e677876786e4a6665764b6e61785355335a724a64735a337738426c3456465033356d665a69533065474b535553516130666d434d626b535138647635613278636478366b4d6f414d575970625a666f72694347514e417056304a756e7361582b494f59697a737a71794a5843354e6573664d5578586b62594249336e79626d51316e565a307971354941312b56324c596e6f707a3949514c6a422b536e3435687065434d726766574767776f6d76377a7945617738516c4b6f6f633254597a7a5a4e794d70356b764c37644f3154566e53797857347636636c4e6b64584355516361665950726a7a74414b364e7257322f4f51557a632b2b4a4b6f67575979584a5a526f7a6430533061787872614e4c4f35474777315a766f6f56663378736d706570767555664f4c4765546872645864385750494d795642566f546f6b544a5352584d5a526156575439334a30724a353574414f796b706633735766654b57564b4a526342757a54573333307455314f67416a6844516a4b6b6b5178502b7372613537766a634d6c376872626d567944466b38366d7a364c7670636e5847454876796b456f4a7a67536446643966455164734e4e6c31374c7236527a503543716c6453676e305876794d70716d3465305350716c37737943646c6a6e687a6869624b665a38726c56312f48594f396b67706d6e6233475a7436386934645a6237583274356f78364f344e77707361666a494f615136336a38356a772b704534593267373476686d486f51442f786f4e4e70555530426c6132745268643364574c4f586b364f7064782f54795932514d4b634a374a3078702b7a4e3770563332544e567a6838424a7543436165566c49704e567237486677384d6d72546e31707177636f62644f786d527155554d7a702f6a684c72714b4c564d45464c5a64484d533966326657344152375638502b54783963656646646a3750626c635658566c69335831585258707a626458354e435a4338764a64735a6e6a354853397754644d464773422f665071496e453538414a746e395250415a39725138524873436a75795a426a5646724b786155356d364d6b656652466f344b2f646f543570796c7741716b766142303270633971706d555445524d346e70497454412f4a7a4a4f6a4f6c3837386336766668537063766c6d5a74455564507854797670307a6e73544e526c726431693031335571434e5830796a4a4a414241714a703452395947786e6a757a6765576f763263436d487072307635505965364e6449357937486d4e6c51565433644d626a75644455624878386f41485155714437585363455a694d524d38516152705458786f44756d71533275647457596774526c724d32706b3330755272534f6f5a776b76517178784548644c744e41527a794c73704765746367714f75765a334757764c78374f744b3131565164794b46703271357634392f61576f354578326c504e4977766d36746732434476304e492f4548785a7a58625766475164794e6865305849324a756b6441576a3970542f34326a7338374a657a554858494d4c4f6654585a6b3561754a63317a61577a4f42696d4e67443632674279754e306c374f76354f443962516f48584239706777664a4631524e2b6e57794a6b7631584673533845702b4e4e564e6b61337253635a4a4d434270717a4d2f6b4535554a6c715865482f4145686d4f526d7758457251314e46724568436d5335645043524a395936426336524d51642b466e39423972422b59797a56736a7a364b6448507a56574832342f6e7a71775954356d536a787a5a5a3170577565673744464b5141485541354d3569566d66623873422b756b6a6f5339525333357566494654766c304a375a4b58775258565539537679434d50687a33304b397153554a5446794f7873596649692f7263772b556664416874644f4c38786a5364625042512b584c4776336a6f4a5674704c5161556f49736e5477716c38544f414a554879427833652f7742547872506d474b30503175305743336b5655614a3647776b746d62492f635a3434757178743930387661714b42646c3353723577544270757036722f4a4d6e65754e5a38772b30584670525250567a617a6d646e6c5172505857764a7a5a36697964445375364b4c61702b78324c6f57502b366563327a5554567870542f6f57626c5a784f516f76487372726c3161626e4d532b5a545579303674455631454d63777356556e366d616b3865645333776d414d536179702b506951456d4f744f64324f7a77675a716e7336756c317156617a6975764c743647576e31724e6453536a443555536b756570512f434c464b4236715164384a2f6f307a41366f7a726d474b4f656e755735697a73374239335763646e3868643545736d4b5135725752632b35794d6d537359387936756f44426256752f537a6e6a32664d4472624f75452b7276696f66557944547a3771716e354e7647704b6a524b6972514b71694f74624630564a464d72424a5454515053344a3650497070326f4746457339476f31794433715a5969705633726d55364665724251573444584659577052394758754f786b33746433396d37326577357a58385937424d70797734766773736769726b75647a7233496e6c524e4f2f38416b75636771574f6148432f5954696f5a6c4e6d39796e424778334748472f7566623873417252567055313775656550712f7741654f663841596950733266664d3868625a516f73356b384c452b304b4b46674b6147756c5961564a6d6f634d594b376d486c4a6144367055636f715a555766517672666f366b79716f715a6c6c54436136557670484c723930493231724871674f50674c62326b4235326550613877423056354d314546314863717271384b6454503547635756766c2b58552f6b2b555930644847583549353072446e4a616c4161622f637637674e2b5135352f50376a58623162394350467655694b6159355752736f4e36385453747a66466267304e45536c3247574a723550326c6c33324d566e4357725550355754414644365039553537566d31652f4d6a54627a5830593835384979724c55544e387556794a7051343270636e4e32355763766e2b544d302b353333364e6b6633706532594f546d6275702f6a676569684a7664614c525048734371452b61703259646d7a714b68515838586e574447675a617258446e305430687032434b314d4c55484e6e4d367078355279314970554b676e2b334e6233666d48397375504361736c2b6c5338424b546b65566f65782b6164306c564857573657634f6d744a5a7444703676325431483964637a674a633134664344397036774761386179456b45465766566f3562583552506e546f6773744859687a7978732b67316552536e35467656356457706e7a744c334f503841386559547054664d4e434737647934786b584a3658666b31354970474c69655664304c5661464165514456346f312b686f6b69524f665a5254586f466d7a737575724b34714538615a3555783572597a435436354f5a5731496a6d6764452f46664a386a54544d783950325048722b504e6d37384a4a644c72497a2b744f4c5357596c386d6b79665163536f654973706f4b5976657759375671484b305450535264613966505470457064437078536a2b525a444c47576a52394379375956636e55305a36476e514e56435a7963766a696c616679436e374b6b676e2b73674d687a4e46796d4b4d4c6c7a7a4d314a482b396c557570536c4d7a702b34364a7975454b702b796a5257594e5a55452f3330726e5a51495366567479656632435539494369584b524d346f7952745774352b76356f57663679354d4b6552737257353575716e34737168536e7150396241635939545048487465594235794b56505051734737526b7042696e5573726f5948447051396d6c6f5749664b5336443457625a77674b666f724d317063646745705154667453434f644b62394c6c7336506976564c6e5536446e327a7a573570565a746c61366a6b2b5a6745746b363675696c664c31672f3950415155356443716a4c3464567a5a782b38434a326a54676e6c33523375767557656d74552b7232643341346e374338737165746f596155446c4e3537303942765142797373346e35746f626e326d575a7469746476586e4477634f3974627133324d556b4f6b7a7374434a46646e6e426e2b5a4e732b4a5578304c747a2b6633416968625857507a49413550704b514c3154535279555a737463454563765575736354512f354c5073715130574a642f48794a4d49796a6f6b4f436f6130552f6f754c773833514b58575834396e356457704b4c56335031364c7168566d30795565373547364573725772375438363158304f6b55457266304f6e386630395148556a336379796c6164464d344c6e6c707976467a6c4c35706e56624361565a4a532f77437548555778326559666153707a6b7a4e2f58794e43682f4d7755612b732f6f7131456666575462575036536334306972572b4e77584f354a37666d732b777849642b50736b775465344838634c6f3366315066793547466e5a74634633752f6c46593038346a6e307a4f2f527736526c6c796147524c34356b6e526263535259524e56524f4b572f444a38726d7a6c39674847732b59593370547a4f584941444a514a55357646557555564d3944552f41752f5048526c6548786958485573754251706d2b5979454f32664b383441716d4758537369573546417754586332516d59704c6f394a637663755749745a796b31667957674d38382f4b495a576b4a722b6232706333767666304239315131567a5a46544f4e765875584e7a785a4d49506e4b5a613134726e374256385533346c786972337255674462594a7a456f7549482b756349466369664f547a5332627a4b766c76466657634f746d776b544e4b55614a4466724c5a483863724365746656776b716d6b302f4f6467666353456d764f615a4e7434615168445865752f683530626e56685230632f47375376594734666d396c4758342f7830383730557663426c4d7a6c432f72663047457271516d757a367549706f79744834365930334b56517a78777555434458364153704a6444744a6c42537234435a416559756f34685a38355345645763457a4c72457a4c30637843474c4d5a2b5a6c626b54336d756e53746e5a335237566b7056517877476c35414e426d624f67366d55365864416b53422b4b4e51316c4a734279436c67483152476e7479744c566477317841696a7373377930592b485837313955364d5a54305647546242357743734a49572f51564b46506374794e4279495a62707649613658493074716d6674524a6d574e5436474a39675375543852753645786d776b676a6f46752b6d486e643370723545725279644372566c6f7037702b515a46536c775a355a7242334654736c48364b5167597371456b5a66726e327676752f613365396256347a4764732f683750654f6c2f69666d4f4235706a5a336b654559315230683032542f71794b3666714b4b557a72624536565a54702b655832724d31714568635841365875352f5649785732623665364f4d7a6a6c2b6e4c77783338735231323536594275794e5155314b376f57356e4f38726b4375564342696c455a6d644d426a4c504956324d5936686f64346250694d41396f6d5450684f6c73377254617532652b4f7a782b58772f7741496965675555356d542f55632b6b694d715a76734f7a4863475a6b6b2b642f4b6c556b6c48502f707363516838784233376e2b706e744251696e724f337365763468554f6d796d2f6c6a4139517177486d6e396438556551354c6550643850592b31322f78596e4f77435a4739335234526d6151593732675073473066773446502b5964427a6f34376650384157792b556f314f597446555a30567570544d502f414353436e56384c4b475577744c323853777171544157726f415443776f667a48586d6e4559662f414a77786651466461724a59633869566f6263736e7a324362654b467374566955734f5a5164492b5641733341615844374a6a2b48496f6e79535048747131394f336633646a724764565179754f7963596532667a5757397a4f63634c4b42524c376d575441616b2f5441416e4e7953537339635474786e694e582f41446f71756f346667666b71384b4344782f50646256644a4a707a50304b4b707779374a5a7649754563732b597a326f58503772546d443549656f614e536154734e4e664d4f6f384c30783074623135334c754b7750494636514938516d7369414130744c4f644850433471786f483237575134356a722b4c34636f706a364d4c487456704535365546656a73654e335a66645a66724a356e3435336b31526971764e5a383145656f364849654e3635466f43564c3750357a6f4f4263342f4470556b37627464307a3550483845665956627561486a3932666b46442b52506b6d424a485658715238306d3741545236546c50646e3732633350636d57536669374e617158694a7665354c676e3658425639596278756a3931362b77696457393467704b6458502f4143593869796e47366772477677463673777255657746354c6c3863493549644b706d53796c6a784f66684666596d5a51665a2f3638343776643850586d45743379507843627835556350355a655472352b3639537567664248766d36737162635974664b72376e3847576f4c68766e44724a53742b74425037334a4e7879567a4554752f77417352544a383138447571386a3161667961382b6353315758514e7638414561496a5a597a5a5932576255714c4747664659776f614f5343623167587a4239786569536b33766930576a6c39336b4667395266432b5556785a33354d65716d6238523161443767395068697a3549584d456a314533486c6a32346a5a736372733472684455796e6b74587a523857515474742f77424b6f4535507164345a73664242522b5948714232544f585644666f312b4c2b5462736b4f6232333765626a394a55624f587a393975514c534674377152764d78363245464d76545765375471447a764d764853794463503563655977384c54586d4f546f654e70727a3763787a624936352f4a772f68536e486575317357645667497136347071565255786858536f51596e38483951336435666778336f3263723872664d382f34474c614c5973436d544c786b4c375a532f3443787444684d2f6a645a64457855447a514e386c4d357a54366b6e45664b7850545a773965662f41415075523674654e36644b4d62502f41435a72562f44513663562b4c6667426f39703865352f494856706c5951714f574762537930724a33376b6e75504e644d5a423030564e625a694e306166722b5949512b56654c486f6144302f6c44355a78714d32474f4f68655a5642456561735848434b356c52306b373358665961337469354b564d73504f57616753632f3956784f3348752f703634426b727964367649394f3158356f6551545a506b47506d4e665633302f737a6a717a3663433557587575324e4c506b46313338307a536638414247615743724e536b43725838765a4c596a4848547a74424758314338664e314e47332b576e6b74465a34533446457678362b6e4e766d2b6d74366b3632336268466f51724c612b764c4a5a37335155517a4a665170776537516e6a62482f546a2b55694f683667346e6a5163352f3966426e6d68695a314643586a724f55717861497462727447354847454575586f584a386b365345557a4e43535a4e435153543238435972457a77305a44694c314b776c362b492b4c387a5934354c4d6a556772307649637a627044596454484f765843646d52342b483132635a59735a6541307167392f2f4147557a6f5a775774764c2f414a66443133425772314138665a706e52522b6373306d5246396e505a334f38557a366d2f4738644c4e554b594b6b76725677725a34353063536a3555554a392f43614b307458474a322f3548396848472b7258537a4d674d3738783467566751494c55726234336e3646656c6f354a565751665631644b5551634a7254513444663841646336372f4d444c6a6f5768625a482f4145342f6d484e487256324d66336f666d44724661372b63794f6c483458694f2b704e537375327a36703563644361434e333865746b724253345a386f637563727033664a31736a2f70782f4d64707637635069506f78367a655261692f5758313331314c6c343658422f6d736a4c38546c33614b416c6e44503437567877524c6330596464384d43532b556c4f3061424677457855664e7135723072736e2f41464474666d2f696a2b4f513952626e657246477052483355365669764a4d7a62362b76646f5336592b314e5a5530524630496d74433247766a50746758376c4f6f54357076624f324f7a2b6175332f414d5155522b496e342f4d4c3531656f706f6c6a305a4f716f6831633666636b31633878357a347446632f476751797558776c4d57616c6e536277456e3936346f3332786165474a2b66482f4150682b6750782f6952364349354d4c504e593948756569595a51716e784b35554f593737514665685939496e644a6b507437306c4e58396159682f7a483338745730327a467252702f7a2f41507248772f773235766878756d425a58346d2b6a6c546a626235737a5264533166554c756b3862735571726e37396a6c4b716a5035366e54737559616d6449544e337a416c582f4143366973337a7438652f38762f362f76756a384e7243727678433949625675617a7973364a36787658375a2b34364a43686257375134717763385530564b436c332f7848754c684b6d4143353370664e2f556539763841686e313942697a384f2f5237524f6271764e7251396770374e4a3857482b6b4a6c3575464a325a47696c72452b79726573637276476644774a4f4c4a4279757245375471634d312f702f4435394f312b62683261377541564c385150537131504d327279796837704b556c6f67632f6a4d794b5968596e51636b4a653534416d6431692b4d4c712b664d5147594534706d6748394e307a4761577275342f6c34526a624e6430786e4f5a356576446f415a66687036543170544137792f524644337461553665347654666e364c4b6d32543536584c4a676b32747a695761326d3767664a38512b2f33644f4e39706e6a787258746669384f455a6a4d2f6c446b5077363948306a4877664a677461695834515067597874623350544b6d423343466e4f2f416f5a567445653945432f78365a4e2b5141366d38782f462f742f316636753157764c38774e622b452f7069324f32566e6e57732f5130492f696470457a415a594d66416173354c4a305a616c6b6d695771777178507666734f54306941414e6976366e664d646476385038702b582f414e713764747177473176344e2b6a2b67484b693879533972562f736d57426b3154324e415a5835316a65562b37355354332f482f77434b4c4c6b576d6d6d67707846663949314f573170747a62756e4870382b7a3674355a4649767778394c335a36736d4c3146496338485230735643506863717663567a4c6b5338584e6839344d71377573664b6f656634636632666a47516c3866596e556e50686a2b4c2f77446935652f2f414767323338517644616b396d48314242536a305a4e4c6e5735766a686d5334762b71714666384170486e3058666554316e4f46307665446c427a3461574c2f414b527154693970323876772f463850382b762b326241616a384f66434b316b776656657939576c45334c59337173426e7563784d735458784d5354555133633738504141524a6257306b50312f384161776a6d4c7a6a504c2f38416270752f2f6c382f3537514a662b472f6a454c4b38392f724a4e424a56534c465a33385a347a4c38655770695577744f52496a796867665868555a32664d747775346e327139352f4f6d2b4e324f506832756272782f4c38703232356f34426d4834506544396e524f6671426756396e684358764c632f4c4f594535354a374e4f6d626a53424e457957642f5879393437324f544e2b6c52702b45357a505762525845627575376435634d346e6a306e61492f522b433368354a313835337166342b74573476695851727873716b497a4f5956586b754639334f4d6f7031474653776156306531702f6f772b41572f4a48764e73524f4d6576582f6c3856514c482b333334637037616f76574441586c4c594e506378506966696f78687055664d544c4b47752b6237317a334d627a6a336966363738682b7a6e45726d476665356a4d397277343537764c482b377574355a42455839754477364636536e395738765178412b52744f635746673264726c5a656e34332f796c5879766e73356f54725657526c5371795a4c4a584a2f5274413139614f366433382f2f414f554c742f747a594c2f69346a31725358455a3649744f4e475234327558546a525047523136306c4d6442705a2f313741514139486955754550397178354c2f552b396a6845626264727937507a782f774276662b554e772f7434356a354e6c6150576e416f79396a724f4d6b7a4d4c4253744f6e5745384c583336556864373541782b685263356a4c6c4730364c7759592b377675474c6173316e4733642b622f752f77425566584534484c582b344e2b4973763439346d4c7465412b75506a3872664c644279745345636a785a6c663631557038637070716a374f783773586b75734c3637552b393357515447596d665a676e333064546450476f34386e3564366f34654f486a5a2b7450696d4e56556f43766f7a305a6336566353784d2b464843774b4b75773064643070577a4e636a32306248516d686f346130316234724d35326a37626635786f67534c2f77416a2f5449636a703131305a46666a3368493665394e6c31364759616a4670416d4d677a39435039306457745038616c746b587a66475452746e2f77434b6635686a4e732b5874757463663541656d486a756a61725a73306c736838477939566b3239614d53784134632b6c46453670666e397434307755385a2f4a4437694f6379544848384676734764506b6e7164617a74556e726834536d4752455a7a31622b483454763033354f6e6965507a78437656386b49793074426364554b536c6e5035472f57636977592b61494d63355077514575373372465a702b51654e56666c7a36656150506f664c52382f695070336e756369642b543179496d6149327a365336637479366a4f6b326370575a41715154463361324b347a3775332b344a522b516575656c6e736576384149447763653565334f4e58664e66487641774c53733758486232722b5354676b2b7267574d577671416561666853325a706648374c487a696d6365374331477436737a304d7a504966796f7964326e523432626c456b6d5965516e514b796e556e6c51744f53745663382b705a32583541665a785165543076735849345a784e47324f4d61665166582b5465714d46386c655a2b55586a746575553435774b314d7677586b79395857527058362b426e364d7362795873632f6d744b6f7a6e66372f696d4e446d6b6c71506862612f394d527666336657426b3157692f77444a50504a33555a556d6d7376476647386e76577154516a45465a79533176617a756f7545562f664f6169582b45557030616a4235614c62582f414b514c683558367868354147336c666b5834666258463156593641512b4c74476e4c314b3134786743732f787633334377632b727270756d6f2f5a734c3935385451494578582f414b595662722b734f646b426b615072313457712f506973736f59764f38526838565439387170794371624d7a614878357375746f5272725a53626a45444147383939484b6b755872732b6f654a322f55314c5a30322b766e6a4f2f6d387a356f716f652f517974615777386c6131635a6b564a6a544f366832504f31467855756a4c344154704743575452386a6b2f4241457a4a39636374584e642f7743516e67582f41492f692b506f33325737574634714f656e56626d73767678507272636f744b63724535504142682f4d756b4a3534304632696b6a6e396e30323841537872505768657a706874657666674355365439576b6b516545354e5276466a795a683972646f7a777048502b336c61536d38367755684a6a4e6d70716d7a514662706d49347a465a45576e386a39576e2f7874556e35436544427a2b4e566f784948784c786a4c374e494563612b5944744c596c467448693739625177304a4b703775563035544f6148753630476e4732762f4145684d7874395561335566796e726a36625a6f6c6d6f377256423465483856466f2b544b49324a6f65546a513539486c466b3750726d6c6e54586c5549567068395673535a7857656b54494f63315056705731484a6e2b7350684534763058785759696350483161374b62797366354d6746617466317648367635426558782f6631584a704e76686f644b664932334f7069754d62516177566562784b594c764f2f472b79364769796f726366785878653955386a4d78636c5434397a724f317a35796174536e355533497039367250314d2b4165736161635433433238302f4d65513631302f717a34467878554254334b4c7872782b4c572b663471494b7037462b50304333532f384162485761426e736a525362672f774334354a6e54584566672f6f4c57786376792b717253662f35354a6c434e4a3472614879594e326c4b2f6d586a69765956506f654e492f6b37352b724c6f6950442b796555436b3254636b55686c62592f42303964777454415a35693752374d506c336974683657586e313351626e684546366b6f6c737558727674315938316646356561746c796669706973692b7a38706c3776734f4f656b343768504a523834706e784a3872796a77356b657444785259656e34726c33723147565734735a6a387a6f58706e7a574c6a73366276337a6e614d72355a77366b4b6d6c417633496c38356f68792f353351394f725a6c394b565648664773587133746e4b4f4f74655a516f56644951525168676b6161793431504f54782f7158356d42664d6b6e6e444b4947347562365030547a396d62555459705847316e5643724e6e546d454a426450576c4b566e3855674f512f2f4144517a39433734632f3841554c7a7a4d4c79762b57355366696e70734c59314a63666343584b37333351546472366c334e686855435372724b694634715a396d68795864643153554b5257307869654d794c526e38483839646e31753076432f53596c725a594b5673307a302b57706f766e6b42796c31723474644878324d62313344635a4f2f7a39346e7730305a784d52484c65334879452f374a7665505158655362575036594c6e77656450526f6e4e3944316a6d73596a713338456566592b7859754c69474b556e36337941524c5a3856424a6a72694f4d434244596e594c6d35384752504f46586178524b3530506a3331545a4b713156576b552f754b555a3462753073354d336e3245385354754a6f496162394253766b392b485246566d42506e66587a3344554b7139445141583645625672374c467048505542534c54704a494763615075664d6b48634e6e41393878575a365147577a59324359666d6b534378366952364b6332616d31565567574f7a724b612b58464a4774376f30394c67652f77426e2f755578732f36344d424a5a484a78646f357a74485a7a3348546f583055545773546c43435a32383557695033665264524373556a7a76796c79774a5647695a697a5344785775316e6b4b71444253337971733779504e63354567436a58795a6556645a7a593472505345347334444b517a6a6e536e2f46317952533663474b3073435a64545873524f697962507465746836506b336379764e355a543830333872315763777930474e5a47587a4a3937474b5364422f364b514a5435422f486b554b323571376c7951546e30364b6a625369757145394b6757532f415038416c6f6352524b6f6a345a64787a6b4148753533763941314361712b4a4d61484f6d36335a48524859305636766330506a305a36676575796a516f4d684a316277424656596d62316b587a434375764543385531414a563253764b534532556a76544a4e4e756c77485275744f6d74334b4a394d52716e6f35306d423849664c6c4f346e74417541656743673078794972616a612b2b696177613343766a2b7a392b35504e504b6333435851764c6f436655626f53395757654268704f5633327963705349457337704b31527153784c583264377a72704b48754b6953567256544b6d5a5974357a7a2f444f37397948387958647a59766661487763446f4b71447832646564746646635741746d652b4d6b4b704a556f525a31466379496261574a66564c3965644b466d594857547752774a6b70396e7a7a7a646b664879437538376a662f49346d6652302b50564242526e70747a414f56326e73506f59786b7373734e44436b664d31704b6d2b59756e552f74415577422f56506f367944547a49382b686958565142327177587958556658794c4b35366c4361624a30352b6850317838397466773067445766446e4741543034783341687a36644b4939456373655a34545a7947495631305830686d52573431484d656c513157676370443062706c394f6f47435a6b52484b66395143447039572b4a614e646d57734a677137707978314f5271412b684b323035365a34302b3337444b68733751307566442f334242514738766638413042456d53544a757246643855326852424652587a65304f49746b51314d4766616e61556e74466c5236695354306d39616276767a50416e4a34464a67467a42706d69626d43562b55796f4b432f3841496a6c7a49486674355a6d5a4b575a5a625a306c6b36646e794b5533762f4a306f3967664a4f485142344f532f52766b53724f377470735666783139397347456556516455642f5658424d783674496b75706f4836585a326c372f634448636e35373267786375616b3276677a5368304f614d6c47652f71546e6e6f734e35436a6c6c4a45796a2f41456a5a69724965724e515630382b53523378394234484a34744c4d6b70684f7548767a335755567978745479672b2f5a4c4b665a305957463830625548644e614443416b2f41446c476673724d415a3055735a526a523631504f4d616d4a37477746566438524b3256705a534a5a38376c5a2b653357536d59506d494b46637a65424f346e4359674166524e2b6a306d436d626d69582f41477247335244472b6d76535378467331486275705a6d724970336451346567667673564d366956667a532f303665517233792f63785949396f353763434b43442b4d6656356465554b7371574848525632353063332f596f6f6f377644525031564b6c6b746d4f4264437a36517a4d7446626649636f2f574838307933394455385639474c594e4751645263752f366e7567707030577836332f552b44776a49434e4c6365646c524c7a2b565455396f4f6d4e4b757a50483274447072705934322f306a522f53663478347331313974316568727a52664c51574c745a4b724c5a614a48417659304c71374f58654f6a2f4f6132773133786d797856737966706e375a506854714b7838697a7047614b624e3375704536734c73737647634b5a7564653244757a2f4e4e6c305770476865653574564762322b6f666c73644e4761576162733733684e4d5a7a474f6f4c6f726c626a3964355a733153784f5a6a7a4a385069304b5266342f6a533644697169596e2f797858632f6566394d556a6f4b7a525979784c6f79455066593963642f41586436522f6a66366d6574642b546e785963666950707a7931505a4e51787038634e724c5666633264395359633163792f4a714d2f774469775a617174564e4474587149652f48536d705557765775492b49647176516a386450462f544c46774d76457a7267326959755454336b4b3239446a4f636f4b6b474a30666b625a6d352f624755554351562f636b566d305474594b5455344f5455314a764f5a47316e59457a4341444e4d2b64714b6171564e51537272304472673076704148774175587433312b2b2f6959347a4b775032546e4a59356d59497a316d6454566347763658787a797a2f41474d76494a56464e376f316253615a457a736d63772f6a4870726e4d766b39676652464b584d4177484d432b6f574848777a706f3573426f4262716f70414b4d32794f72744155766c7056376e792f614e765359356e7777474b57736e54777077505277636e752b72325749706b74576c30774c6743647a4d666c53632b6569626d62376b366c466d6c3879316732524b696d4c3367372f616c6f59456967616f6e5733704a38626d68775a756d75764554524661684d6d657269314f736c545a6373784c35315546773075354d535a67346f474649727271354e5a4168664b794b2b57716c52446d4f703756526d76455265424b79394b6a345957664d7770767647594a42596d33704d4167333354793873724c5047675730642f6a59616b4b2b67317a7736724e692b6c756466596c6b4b78707034536d6d5474614b6d51544a483755416e7944516f6c373268362f623249717444536535654e59325a6b335278556657762f6b754d58564f544a5451444134316f52645277415574344142592b557552514e58567a79616e48664e4c557847584a6b665830796d427657707a525a7a5143464e3070652b66396639622f41474f4e59464d6f4757664e6d5135304d2f59474d6f627877753448386c6e714f31545a3661716c51503841684e4d6f7573782b43336745346b30424d6b5869354c6541386f697a3053305a573147644b6c766a4f3065462f41786c3743736c2b646f6c503265776b5a356636706849556b56507334427542744a67696847637569525a497a7770704f6b464c475365634a363562636d6158686e465a4f66423750476c4a4c2f6248644c2f4147724a79756d325142316a30387354584f36456a6f374e3950526339796c524f2f5172796d412f71514c495971783356664731494366666c42707a696f663043656439615a644f56544d643676327162336b553557646d526c61433957684c4b577253554b767544784570396f5366385a5371592b4a2b7359426e614c4b3942737a6666644f795850536f3254472f6b6965772f774151376c4e7133643475757659656e6770543076312f765948443677353267356d6e6168697264564e4c48776e65326951714f773674576650396565686a2f6c594c56704173386c554e63767032545a7038613143597a5530415a4f59687631496e774639466977676336396a6674796f5874573836746354767357782f48534d797662534239624153567a632f334b53436e53544a2f46536d31656c666658385a497530576250483270676f68544a6f79794c6e6b474d784633486847504b566a5444336e2b676e4a4142394e6479763564795963384e4c76556d2b446a39476254326b6176526759714c527959314d706a6f7342507a4748322b4f644d7233436d6e6f774c4149586b6273693155414d3055553547764d37516a63347451465a37304c4354765a7857396d70395262364730507158393549424e384a7655564e5157327a624d67497a5533454a3053564f784b3944374b2b6e554d324670692b664e6a377a52314a795451326a4a375a43544430326959386e2b73354b322f4453514f547a2b776875743558342f6d39765665756f4c493077474f5347746d3169773831524e6431476b6a514934593564692f34766f546e39536161514255372f583750366e626272336749792f796d756858317561324c4d51384b65782b6a446f307166424b784e6478717a6c3970737359566243417a46633750754c7052787233737a6b5835504c37426e6b2b505a6e7a7170642f4e566e4670735a6f33614755356875314d79644e387a4e444c53786b377435784a6a6e4f336b303038394b4a6b7a63723466376459574c695a534a36375853377943413941727a7a46705563715961583061546239494c49536c6e734c2f59304752642b4b696a4e6135417656786c30774f347a6e614573727441744853476272372b376253686a3672503171507553313674455a4e78644b63624d734345324e5775656c7a654e63342f3841566e7164774a614571464f637962526371544e6e724f6154782f6c655864464c46496e73746c664730635a6b7769736e473332414367584d5530674d375278453259496e4d396e753737557636325a304b726e5975587172735646486b33637864423953564c654b7972753441534b633739546671654a514c616e67456b72717a4f48622b7852712f5a6a304c777834654e656d426c425452664c7064306d646e48713478616b556339692f5a774753364155307259362b59555a48504c546f6150637978656257324a556c5671697a3432636d792f6f66455032782b34795769697250555663333278634e67706c486c4179534a4239476f2f737672687a5374663841484e7a516859534430386361437530614c704f6154357049334b4c573637764f4178585164544d48666844726842615a7562516d6b546a6b706f676e4962443531394d7467355470574f6b3732764c4e53592f72797a2f4677616d664e30304231707349766842307967484b65356a2b53737066792b525347393435674e7a324c64486539784334304a325531417348644f79576e334a624e3750656e2b6754475364636939325175707947304c484b5871544a367048474d6c6f30382f344a35796e6f612b784e4d616a426e78554b4d4236626c30307641484c6d557a6d703936314e6d6e625157672f3345674a3946514f716d7372344a42477957585073517366654a4f366c796f7a3552494947774a4a6e78335131743753497944747a56366a7935424a43462b69744e46446d6f735778684d636d6a556a43623372704b5a723646456f6d675458426c7847675a796a3276536f556c5778445378515a76594a31726d586f534d5279514f4c5a6e737a7975454f44305645364267704d674658654134764c6772464d62667272686145645838706f616c4376674537426c4e6c7971554e726a63794e334153775334737a507047453563364949637632657156566535657079743259706c6475696844386d58366f304d66564f3550442f6b75724661474c703973374f704d31495941382b5947322b394f744c565445433341637155486f6f6e52796579367330736c374c7968684e537831785864567966674f6163426773307048346133514f456b4f6d694a5a78364f684e3371724e79617947616751727657576c564d356a353241787970786a446e434d43516e4a5542684f6f4455414f4135576d4a533065367652594d6a5a455a334a6f626454766531657975744f77356a3732542f414d374368695031385537306c336a6d482b6e796838677a32747a6d53504e30334c786d6471756e456c66466e51444d3032326c6e5171657352717159444571367667507a652f496b42533664494b413958486473444648545a526e73734b3751546c2b30716b6464694f367a34726b732b4673612b39346778476b2b41504a75753441695144314a58433930487459723674456e315935364f76736558644c51366a726e4c6e487178346c6569457650304230506a544d37394a722b457757552b72376578664333556c3474763633596574694771306c7956646f5845576573456a616c693962694748396743584237414b6c6f385551504a484553564f57754b6864624531615a52535070576c684f5447397630312f4632483769694a76534a3569484f752b7553534b6f47413743364f3353733752336b663335374b6230756f4b6765424769564130664c4f6f75354c454a39704d64385950443571576d49547a634b6b506a5a616f6c4a583850773959795a3273585355736e4d57775a4854662b5049705a7a6d6f56435a69357a396d48766a63787246557472486f4e32787474636976746b7a486f723156325555576f5454637948515a6b397a7175497a6b676d6c6371784d54616e7171502b424e564943634c674b363074474c656235314a564f79494c5a753645724d794344513970535664584970674a376f484c3775763550783378534a6f4d46683050685936686d374b37656358324946386b5a505330754249476746704c6647505533446a4c4c33482f4c4a4b675436625666723555673130366e464747547232304171664f6f2b656f4d6b32756d6256512b5a764b704a5a454644386b7333495a654d6e36704a6977467261667564314a64543967484e625658495432474364446c553657614e53352b326b757a70453465524f62595832433469663341485674427937436141557461494a44506c5139546f425233736e59344e485341424e777342444f54316b30416b5333703268637050424244676e6c6e4e4c31456d6179634567705a44436d4556444451362b6c6e2b2f74486271434f73464f6b2b475a48754961506a4853636c4b336470516632556c385a2b304a7742677331304f564761347377355272716851694d304178374f7930637a4750596c6f4f594633302b4f58386f736c524853317955714c356636422b4a46324a7238325353476a6e582f41437a72646e38582b754f2f363343756f2b4d64704c4e5a7932645a38592f723372416a583767393444324b7a6c3949616454737149716573624f7a6e3279476d6b682b32412b355053496c6a3957644d2f7655314a65326c546757664a4b414b6f7166476179654559446b6e717062557162366133674b796e6c6f6a53755039704a514c2b6f766a70316353595765783162654f446f59746b4f656539326b2f77436158526f712b7462386b72704a326671694e70633349586347693666595455544363395243667549312f7576737977436a504a4365614b516371505050736844596e4f5a506171584f48495839532f326b3169514f71483546394e695a7a4e516761782b5944416f67516b4a62366336377163382b794d63676d7847635866716a6e776a6b727336786a756a6d36444f69686b347a4e506a412b53493267494d754d76574530724b55736266524547686d457570416738484c6a6c43555a336b4f5471645375503431436a70527076483267442f3850364142706d3775585738574a4250596a6e31632b363562425239706338765273745859346f5850574e516c574b532f2b6c6d75416849576741556c366845585961624c523165636f6a4b486b4662725a4935494b645133536473706c534a395a7a4864444c7878665442624451342f6c686f3661375537554458627a6c547273584c6a6837524e3253755270363943722f4874594939692b48697542786b3743385a58796638416b6b566641715a596639676c7869466e58643244357a6b705a6d7351784764523857626d4f7a6977386d6e6958343437796b7369676e4c7239524e4547626e2f414273446f75656a5341356d664639714d414d4e31436c626f65482f41464a54475059792f495554507a65786365417578596a4662346249324637586177493730367242706d6d635258506d4d306e48447465512b4b5447476c7063732b37557145613164435a7034383531717a382b396c6341693432304f69733049334332644b333355386b6f434d54544877354558367a755a56466e5a35313153783272572f47745a55615841394846526678694e42655a5864504e7a5546664b51712f3754366131552f465856387267692b6a6f6f7a747544437a70415839656e37733452784d6f7169673436345962633575526c307068596f576246623364556a333149536361756f2b764a4f457578594d2f496d6c5875315135655a6e5573637a4f7930374476494a6246626d6670517437715363576c305935733850574a4d3661507251633554307a636b6f77787438354d66496354302b3861375a614e3861696f316b2b4e62633136395541642f4a2f593059786f4970316c3957325170557a6664767a66714e71583036336e48646d306442504d44776e4178645068327442336b6659614a2f35585378464673417275626a7a4a6a736e77386c4233764f596668585741555854714d6e534d556d74363031744d78306757412b7253737a54464f505575784a57353257784472632b744b77374850506f517a555a595546634571526c426b2f2b6f68427a79704d77497779412b53794f7a744561366e7a2f4956685755614e59544e564a6172794b6a4a6a716f6b596d497031734879447473347148354b48506d5750732f324b3641395470774a345a2b515474302f34333546366b396b54465530614d6256765454724d66447735625a783073386e6656663748657a6e466a33334b2f7248626e73385944445531726255766a7462374a706256356b4e3941564c54396161314e4657687363754733684f665573576f48512b5a46667a43432b674856312f3161596d765a6a4f5256742f7142646170374d482b46383331646a6c67544e38617a4d32466c666673314b2b594f6552537537616d574878396241516f7a6b57317a42466449396d4e7473634f504948304f447074474e6d787038314a63645076696e5433435974462f77436f3965537937336f6b6b63783952524e5849386d4a634d446e497246436d4c736273396e6a4973566369496d4b644b4e314b4c595a4b386d6e52493179574c6a37726147673976313131722b4a5632686e386b4d684f5a6e2b6c4f6548597a57353967657971633542396e565a38305a51536344497a2b783055305a557a426e546462304e6f4f737932386c644f532b633558372f41495539625a4e7945527874752b4952585930386138657138666f6d3571416174637633656a4b7832536f7262474d77746a5353593349586978396c4e644a6b43594f542f4e536c414279334e38585a3965414977703866677a56547739355254617031487a30396f75514b6d76324557706c6e4356636c6c6b4a36684d6f6d377a6c6b664a6d6734456a3950367a39703677484b566358636c304c7634394772523845686f76663541714f5a3748522f6672546d36784b5552586168485348417239707543516a634c414c6d674b34666a7879304c67587439386169677a656f4e784632785a5673314c6e38694358514b72356e676c76654d6338755057744536566c315a4d524a6a76743467506f565a33795553353936577271746b6a4b6e6d6c576c695a727479366d69616a445451705359786a2f414955554e4d57475366313852434365394859546b4170366569303569576a6850716136533231727031585353797568794e4f684c4656584c2b783837682b5542724233414e583177476e2b75634b36446c58356a5a3832466c4a4251764d377a3274705a684b5874706c46596a71537a73754c7373627539344a7a665839344153334e4a5930424571504866743155726644492b34374c67626f70476370776e3164584a6748336f792f6142615672492f6d735738693967474838636c663253656d322b336944714e6a5161773156794e65456c74684d342b52696c2f78374f2f74676679644b78566c314d70716c535535706174376a6e436d354c524e2f4b68504a6145746d6b534e4a2f614e4b654b725146657462307176342f55756d304e78775a4c456e79483742364457396f725a48325a796575536d62735344412b752b6d56614f572f5971505a6837592b5a334574656b4474463736336334353366703971736d37305142362b666661582b6b4f715038416f5031464649554e6a6747553648555639346c692b544f35524c7a516b665937455373487a3050634d2f525a37574e5639596b4b39696572354d4556764c4a716b4268416b472b513061484b4e514e68714d65506b5a364362356c58414b465754726f2b764b352f534c683037787446497046504857352f5037684e6d3257664b7647305655667453305a635a7242564f4633724e4b457549354c4754754459714570326d4c78536b2b636f42686931774b5a47326362753445567264713545702f634b6a5868534d697a6b524774555078444c30613836625067557a2b4e654c42524e395a584936436d367070676e326745396d336a6748563847724e6f375a4178366b642b7232782b584f6d5772336256684a586e726a2b4c7243455a3247366c594a59617a50715143626755663155526e54314a4a325475754d327a313061467231356f31304a566f66794b5656446e435a4a373977614e42684c4d5359326970795847756d686e6659414c517a58736b304d7273414a6e2b2f6c736c48516768707a7a7574537a53765171666778382b694c724351785648786839436d6c7063615a64442b744e33785938673468525a326f5334784b3031596b4e702f77416f306d6b6566566f704b3953677039364b724a762f4146416a34444f79467777635a3263547a366d596e307a584b6d556d6c6e7a5636767858736766546b444f746748504b4c355649536b2f6b6163374f523072367272774d7a7455346e4a372f4145456c6d7777304f46572b4b4f7a7358464e6652544d7963726e69413146506e746a75597448546334574e2b7568337335536b516437456d6359522f624f2b5042766b3769493047732f6a346e2f42787130315a4f6c45552f4b317a705a30716b683545754556746e55347855663653433666392f384155313678387872553165656d374d38687270517a536c504c6136734431494a3835584a353963364e573356635a564d70585a522f31752b366f4b77495676476b533457346d3248793548456e5a706a735436446f4b654c485a58546964307577333649395934576f754650326f35546934485653484e4d3376427931734b5a415370654e373944696e715433574c49612f4d52442f475432497a713946305535535538536f426e66476c79584e54784b6a3570653737736e55732b624866627842614b6b457437484d6d487571623539464643744b46554a2b3431775a312b506b4b63496c396a5179726c72584c796e7337552f54636348512b782f56515a314a6166722f724c373130372b57717a65527272616e544148574643336d347567575751766e6c5756437a734f6239522f59436d66346c6e51464738704550495863756f79346246313671487679744578314a5a704b553475343270536b752f3744793076744739354b41676d7061436d554f6f55576e3776313469596e38595142753261413647683136732f324c39384d5647627a5665746a75315470364e544878363267386659796235343068396d59484f4541707837506d4c41436a786a6945765a5a31304667797243516267376f5a6f52697170544b72704a30442f467a7a6f536167476735302f5a4f5953506b614568414265554f4761524646435048626b48485146654c3936564c6e4449794f4c674d54794f6c52574b79797a57794d39716f306e72642b4b6e345435522f567164714272685a725232616f432f4c6761423846325571562b4b6f7a666e4c634554735744544d4f752f57682f6742642b64337762593835514b4c48395a734d556f6b3049703439694c6c3851736c30324956725234677a633564794f47796936356464744367517578596a4179723244704f496e5576554873437773316269314a682b2b484a2f68426d63733272534d565038666433507a4a3835384e62626853726e794953465057523051634f775a5a4546502f4145466774584e50734b6e5774335879486e5746445245475773786f3148555474516e68507263743664716a2f58386f6b5a77456b505a2b7743486e466638416c6a6e513252443762465461576248723266614d3154784a78504a49554850616f3978656a6d30544f633858646359304a5a734f6d6e55766b466e396161666549726e534b78766365596a4f7a4e76536a4b555a6339614d74614e453258556c5a4f6b4a51434f4d732f4661333365397a307a522b3441364b6c684a6f47324e6d6c5264616950694d754b63637855764e434c666d4337596d626e51775a6c4e4d3061544a7833554438696855437150685933356c7a70636c3962396d52632b446d364d557673702b536c794e65626962775a6f4a4532564d7334505a2b336b4d5262444b744a35664a557070385376362f7a47514c482b73375733664b4239335a724c43736d5569617144587a6635624e533154707375697167566e526331646b59746f4b5570662b51613572755265324c324e3578424170326f41484570306d6f78303361696e6f50507a48614163756a30735656794f4a59745859427447574633453532776d5947316d4b5866497a68746f584e7961327033435836665132573276305a5170344e467752766b39313278434c337357724f55676b4451796859705832776568796e3466495134625461446631546a57664d45614d633755356c2f385a435a44523139725562544a78756d564d362f394853626e434d73784c75554a6a5178514b2b4c326a3747684775426b793631634b3179305163445173626d6864446839427052387a4753792b32584f6d614b534b504d4c69737a76497a4e79654b48726c73635351623475576265354f6856396164386b7143377856554a6773416e496f744b5a6b5173346d674851355a66486e4f5a4d6f41705351417077732f71312b31495743716b566244596146632f37424f5a786e4b35396541436b2b5a3779536468396e6e41526f6353365357616d7a4848516f7a4d356531422b444f372f4f796d75625343546a64444e61726a72644432546e525a3870547a31352f555a36307264472f71714f4751435a6361434d7a6a4f2f304577584c385a5654517a6b6c714b6d54444d4d6c56373436444e6677746252325565352f747a584c4b53586e7373564e384b6a463376534649466d4d4e444576576b5273365376316e3965754f2b4d776d645935636d6861756c43306c56716148464e66785041366255304b2b75337054676776364c2b747a632b564e477a3244394b6e2b5345626165686271564450704e597676386578376332514f38573371654e4e4b36464b5334512f6f47394e50794d6a542b334b35516e6a6b35796c4c6e513957395443714d674a64564d316b6f2f592b4f62747946714e576b51306b36666e5145436d66647a724a4550556f624b4644545561586d58546f36704d386d6562624b6a4e626c56547352536c7252624c7a32552b3332416b566750725379536836624e414976622f4a756a396b72455164646e2f4c775a613544482f314a30306444752f7468704d794e744252456c70306f427253516d794130472b624e7a3834725666547670666f48492b787a45747a35475649726a6e6757776a456d797a6749666f554a614877706348335163784d7071613955616d685878614552727962714a3836706c427747324745506d745a473475697268704947574552663970637a75675059767673304e4c4a5a5543717039764c70686b6f64574f45782f45396f68796155464c3350797055792b506b7a706436734f4c2b4258772f2f446e41543563704a59527a3649757a6f746c5256362b577775386f724b63334452632f53305955707559305353626e5738702b486e746d352b754f39763841515577706b38764b6f4d39514337485156744d2b6f314d7a554f3074635a65337a36724676525055396479532b75382f65664c532f5458665739773941485234374846544f2f38416c717451626d766e517455366b7861326c6e565342794868725132574664475735437a347a34614567556e534e674a657250336e6b444753694334714d5370736c6f7579494e4d447935713876507256723073356f2f5a7665786f6f6f635379636a68665646726233384d6f7a2b476b466f784f36414d444a39315938545a566f614d3968706730622b4d35727a634a396d61454d4c7a307572714e525a392f446f6f51746e7367695348756e454a6b3642417139574b4d2b335a2f47686c6463696a496c482f70787878527371696d696369766a49566a64525a556d6c546b6970574f6656635a4d70697772586238496a7563444930614d33786d31513662385645716f2f486c594f6a7a52706d35713553383848484e5936354e3253672b6442775563363178467a7276664e59667431386d4a33667935524b6973337379613161462f6a3633784d354a524651716d7947696461346931614c693473514f74422f4b342f7145303646566a4675627645585834324c584f6f6937624e70596a655742556956484e4c58507647304f694b64784d354752345a53794454774b626566542b6632744e326a5432776a552f694237724974726c384f53334a4a544d702b546e33374e452b7070356c45616d506c7771446d5a64524b755a73387a556b7731336e502f414a69514c49476c41397164594f626f35485431646e51643435324b5052356a2f77446b627764723330506c3358676c6433334b764831435166596b536c4e674b636443517a6f6768336e6b4153344d683674675363717530382b66576b4673666b6e624a36495a37375855387361554c7163524b337652544e5138334a366b6f657151705839425456586a52374b5347334d62443037554a59792f51386a794b614775774979514761495468564b4d727648334f6c574b5841427749424230417a3370426e7a78674d4365375738432b7a346c6f417875766f626d5470344b4b386f5230715a5736766b506a6e6b5036585a5a2f4a43505243696236774c704363457463716b4832335a6e6d35675a38442f4966794362374869767168426a62386d57314b61664f76474d7137527638687048557a794257706e697a704c314e536752364c6b4e43484e4d7a2b42306868524f714a70587456346a636a787a314d3848386b78313134653144524d702b6257476f6a706f33795470667a3073536f496c6c77644c354d2b55487a526f4243662f41494969763455665943733537756f6d69587254543545646b58384d4565744757685348666133546f6e67565a54636f7445533559445a52576c624236514b646d306b6d2f6b66754f575135356f77364374484d703345506d6b48486f75647130383050624c547173754452376d646f576c314230547a6f2f52634d68435a64494d6356416b414e34682f69716f63474254725a4f7a6774756c7170306863475a72397473566f73624a6d6352637a7441773853515641487578465671645079696d745766352f74396739627235513858316c552b567064684c737638376c517864302f744b6c7a47686d6e46596c59316e6d756e34546a542f6f6d6348735847384c6d64304356417a782f645439564f73684d5a356a336138494e695a704d34372b4c6e646446377544504852485a562b337a4a56585053686f6d723762613667563754464765625a31675a447378696b79564e4e74524870717a7444547a376979506d36756461624857576344746f75624f4642645550434f69494852545535456d694b3261754f7455647362344a446b2f6a364c6d7a7a6f65506174717162356955553655427a6a464f35336845564336573668553539767977422b68455a766f55715074477a5551335277447063766c364a6763454b68466132676d67325654396e346f2f703856477a32557a4e6d705962336e6b4a486e6c377059397831722b633754626d71746543477830363656474e306c703243463037422b466b74432f61726a686b4a704852562f31313034396e7a48796f3254512b78516f6f54393971646b306b75366b4f4f306668544e2b6d36567a526a6948545a7838334a546f3971544a2f5344355069675052655471644174706d53765062516858506e5854476d59624c634d31664b374f3245454f6537504771674b52665279615136754767663934557a3338755135706c6f3050735335314c364847544c30677a6d46784e656e556561723743326a7139477a55464e4576792f754c2f576e32443850444a4441675262554e7244342f467459466b725669325762506e786d30574a5755743875684d63664a63566e3868735a59584a5950796e527342475278754c6b76644b392b37372f4150496b6a73396270456c64546f49355a4644452f716133356142457a645144466e6c7963434f46693954514d4f765a77466e6777304d2f552f5234655945664f7954762b4c465739672b48526e7779314d4e61786175564c33766e565469776d347034705745756d6a76372b796c79553947735072483042336f426e335a6d6d39395235394f6b375256613736665765514d732b653666536c315a4a6f2b73474638646e7a455858744e587a4b427a554432656d626e48785a47646f573052743867697a75325478553077367142726d35744c6b305a3536666e4435752f7872714a71447061344b4647354a735a38544f6631304438736e317456552f54355a417a6e43644c446e42584575614b474e6b383847686f543947476962712f652f6a43464d33337739706748796f44446a32664d424b345a2f4a4a74436662376d7274736369624d7036546b4e6859756a506f7a784a506b6c78304b756e686e79584b706e57424c49484a41415035584a764d545873786e4931763956507868385238707a35622f414166742f6a6e6b6c5364444c577965576150615645477273365a5a723255314f6b6946756d736a476d3263684b62422b5133554346416e656c356a4d7a77476c766e76676d6a3653623955666b47626f3268527532714c796677386f707355595276504772422f4934364b6331736b72425932506e325236474a596e3741716d356233534a33786a763667686a3565357a55647235625635754e4633797a566d4a5746766263456164484c75372f48446f4d5333737556536e582b77796c484f67592b7a393245496d6e4e6a6c366666313341705a433457356c74575a5a6b55484f2b5457354a4d6d4b7257754857634b6352394c35327663455646576b745671655866434b666c396f47366d6864524d50547a4a39536369377833457874546f3159764b714e4f566436383965664c6d6143714b4a633642456b4c5a3356664a4f61327457597036504153464b5431656747387667486b336b48594d75585638593070497a2b4847624c494d674258535261456c7236766f62465831644a30316c7a5434756934457a4c3939626563594230557645596d6538586e54325a38464e64696d79315832737034395774486450447244565a5a5439526e4c71472f444e777442485032535675624e4e3143382f37494e6f79447433386d7135644d6b6973744830625755446d6f30553847674d31694f535072706e5776366f5552723454554d2b594835692f397a4f66747741424e4636564b724c587a6f65647044546b7a2b5149793559484e375465396a73714165314a7139384c6865767054447859434e44666c61316967546a6d58705653755451696c54382b51385630535556646466484351775776714b56354c544d786d6c7842393642706e443430307a6d6f7a4d47646d576d50495a71362f6455585857665849685a657a4454526f4b39364a6138377275384b68736952416d5339466b692f725479356f754d786f747674346866556d7a387147774e54356c6e5337536d5a6e674979556e4e4a316a4d2b5a4f68705a724c7639337a4c71756f6f36446b416b4538745647616c556f6a64626a784472514b4f61576a58746a6c325a3666336d3363707a326853425a53472f52706e6e352b724a5667356a686562566966737a5246524f5033752f716f59646f7845644539526b386962636a2b4d543968622b7a724145314a304c612f6a46532b336654644f675573346632316772686977534d3257352f5037682f464f425a5670547951777a5267796c63386349734b646d704977396363376c347342616a6e6e306d4b6231564b3343342b4b704d59356d6b2b50362f71424a484241685154324c37704c76304130376b7131307262566d6d50506e2b36357679724542486f555855734172322f6f77644e476d6c53366767554b32522f37343341523573564e54344933464f64564d79346c6b4b4a46735a3964634b374631746b636c74554a38534375552b3935426845315567316c4e434e554f6c72497971526b6f7a3470516f51735a725476504e6a47523064387574387947435145436a535a4a706c53732f3642436e4c624c4e334c43585446755a6f547a4e617a73577253617573596d5072506e6a455855522f794539716d66474b66736f5034656a473733496d62544d353734446375506f526e7778786579616c784f39364b74435258386130617443795a65706b4d2b43464b306c6f4d735972695a376a6734705074682f536d752f6d7950736747756e2b523858686c36697046545a5a5a564930436a42387336577a564c5661457a4a51644d7754373769396a76704a5630533553505a366374756b4237716235495733364b6446616d556d79766e6b305649476b382b683171726e563056455032557258552f716761626e4e7a2b4a6e43614d412b5257753735514d4572335836615735647358564171664e436167614a4f31784a624f34426730387148744d35646c6832434a717a3737314a615a4d712f665172697533504d452b54356b74633475627a71754e3030416d674a4f3330727873796b6d467632755478756b795a785547535a3661695a3879662f706d495a6e68416175524d6d2f7258326e6e4e57717042787953794873526a796a4a304d70597555342b706c6a68524b4c467641505936616b7a47683031667a413670396b5664456f783157616b6a5a61583036675a362b5a3039723443736b7a4a624632684437534c552f663653646e54703935306d594c6661443267576c46517166554f6d6e583358766e4152574e4d4c3353755454574c714259746a6b6157587a377677667351533551497644356749416d766a337148722b6e7a4b2f4a2f445a757264464c325337447530344942653664726d5354564c6d5451455447354b552b2f6e416363514f412b47414c70722f716362357850654e3763447a484b3835786444526b5954614952434459794465554c4d79774f2f4b5576584e6f353070327248334c6231703950356b766d42672f707034326a62614a6a6f426b5777586a5953786c4f64556a71773553315a4a6c346757476d6771596d4e6f3739646e2b346e46316243533459314d344d353143372b70323775624f4d69593653724c354c6539337646495a625a69716a5945613458394852495a567773694f6a6e486d592f496f2f736670674f53516d6c4a66477730317248575255656a445a5969677a307647506f4a5a396e6d7053784358686e52457636795a327270563163644b794553663333697637504248393841442f414b30477632333472412f45317167386739504f716a6277356d356d61704a4f725974665379364e4d7462332b306e5a75597a6e4f6c38334f48395439414266734a726250575a4776666b586a474e425331593335664d30474239504e522f465a6a323030357679614e614a562f43725058506e77366e4a6c797047616c54754351743661653032695a744d524d356952726635446a786434724d644a6b525a2f6443624c6479596272364e647a633350444b5165613272703163367a557559665871533668507a41452f4e4a333143306a6a78385272583537347244343350396678624778764a7243636e54684f7673746c47662f49613343346c5747316b72557037556b6d31526a4e516b436762786e796b6b6c54327a6d6561527152354a6e65585a3964764c3954306a6d3174316c304930545a557533387464505636724a4d6f3548537070687153765736514e55367473797758795948506e632f53505064392f7742424261704b666966714e3838394e71745a4c66476f48335235383846654c47735962775052746579635a6331582f5872396a4556392b4c456f6466512f676f4375654f647532632b764d5674544136304a737533792f77424d6d61716e366e47655236506370756a592b6a443868716e4337787933596439696564694a7a377a346962506f2f4f784c767470633437386677572b7743445870684e6c7a566571336f56795a7946313445742b646d58364f61745679366d646337556f39796147654f375879566f706659305866596164702f593753626a2b433332446678363954384673502f7741352f77434e46313231314d4661654e4e4d50446639584c626c397a73374871464c74484c6e71663841666e4e6e2b3041672b4633426a616165737a737449475a63766e47747235536f66552f3854684764307338744f6378746345325a58586a777970766764686f636c6b5778687570542b75637663374e576d4f786a414d77634e7564746739484b7031732f782b3262314a2f484a2b5961705572556e784b5a30385850696a517a557a73645576737158784d2b6c463336382f744944754f73313067522f7742546a6a3262593852694e47786e7459705871722b4d384e746b39695759694d4742666a4f524a6266553465335555584732705031353245735a66746353594567714650702b38316a38732b766f47586a7570354670496d7a302b72486f5234626b2f4d6242786e5a2b513343315a6f6c79356c2b346d664f6a527936365053794978536c446e6473756345355353427753636d492f4461636768334f38676371476a543952767850716f7732355771726e4f5a554f6a71616c3435383474304d726c6e5a686a2f6c49666b6e5549754e34636e7a356d66586247417a695043776146467577333635624871742b4b61637653646c6b6c6546426936554f726d664e697a57686f785a784c44724a714b6b77703444574d43685a544a69635a7a6b35694f367367794f4a72364e533455656f3334743479542f5764636c6966466f6e374f6a50715755684d2b7966643664574764327072496f6b6743616c53365a49362b4b61432b6a6e756a3846765830436c5766354e507270593331652f46597332786b4b6534756d714c5176616a79435631616536755167657779776b795567516e32774b366a566543566e41597a5532342f67743967774452386d576d497372315a2f45624566466e354c64415562455532506f346474464b386653477857543862426b6f764b666b64484c365358472b624f4d5a474e6453342f67743967634c2f792f516f677366366766682b3652326c4d6a587938726431487a79746938666c5362474d32733548585a394362636d70636876467a68702b47634c4b54645974782f426237434b61636568532b752f4c38312f456a4950526d336372553263335353666c6c70424e56454f615a394a5936336836324a48686b564270516b41644e5334792b30637850534972634f732f453235797936576570333433364768444c6f79326d4e6939624d6a736a6e57746663367a72716f324a4377537a57634f4d502f7077526d617271444d4670694f4f323345454a6433796a597878796276577a38556e3967722f41497656444171784e467249494d744d306c57625a4e6a766e796648326a5177457242414a4b2b787957556b7562764169596973544f323069316647504b764a634b716d3356395a6678784b4b616d717168436f5947575a2b5a6b2b4f757745566f636c7a564a6e66625a59684f656c736359426a317a51752b777879585674474a3456745038414d624e347635462b747036554f4e6c6571666f5857687a33675645656a6d566b6e56744f4e5235314d774f4d557974704b5654524641554f6e70346d59763841554b4b6154534d5a786245672f6e666b58352f70366a63326a315439464e4f672f487947656d6e6138622b7570374b787a4b6d646d6b716c6c4a33484d4a675448556673343445364c464a4156444749384c435a346635556573594a6a717766565030365439414c416b7a66494e7874544a6369642b4b31647a594a6e4b2f6b733070382f514f476859646d6f485664537879533748416354703136545733414b5a50355965765436355070657176706e4659456c564233325744506e707a723131556769532b755837446b783570655257702b63584c495a706b556948795463435064302f4459522b4838795058322f77416f67526d65642b6c537a6e434f5736762b597856344f315363435a366d30614b6b754b4c4e766469355a695865714c714e4b736b746d2b4e33416537302f77414e68494f2f6c702b51443974537444314f38426e303970784668346f624a78794c586e464c2f774351386f33624e79656a536c4f69666557696453357070324d6f6f536359726c416265377074374d2f7143715079773964746c6e62637a3174394d3334476c72354b2b65586f38787735394e724d396d6c4d2f6b6561323566737965314a7878426f6364373572496d447a33754130563933534f45316e4978582b556e355575305a3235337131364833424c6251697363377a6e4c386e546d4d69707a5861537634384e6a763839674c7861767338343846326e54747368573458644374543364507732424b6a38762f41466e517165686e717a3650767336555853526f6551727a35637531536e65514c4b367a4d73544d79784d4e533064614851705331496539415a7a754e4e37756e346243502f384131332f7276636e61354a3636656d64594c663542792b7572794835417170545476565a70705a6e5934457a6957466c43317839454a465a5634704a4768596b5a487536666873436d6c2b58483542527a484c6b2b70337072715559355a6c62496c61664d7968326366386879502b41763161473032357666683731764677306336756b4b5073756a5461353733645077324172552f4c4c31323072345758656f6e7064377234763379486e6d47546e563550662f41457074726770386830706565544c474d712b506f355766506148746a6d584b30756d393354384e6762732f4b6e3159306f68637a79723071664a71746f785731626671436a4e6a545832696830746d6d56507a78753048615766637466564c722b6932443338392f7741796a47506478352f36594133512f4a6e313078737772443874394964746146556131363837314b676d6162704761462b7a3961534f6a6f584a352f4e4f5a3049544a6e5930305461522f45484264614b566d657a50386742562b526e713243547231764c66532b51594f5558787331504a4a61396a4b793362575a424a426f635a4f4a3574716d57457332386532646334445243626b6851372b6d797668594474333134395738765032496635723073724d45466f496f6e3836386779524c78704d4f485a567a534366576c52525a327752412f6e6363383338727a684a4e4a4a636337617a33574174583550657057506d78747a74447769747572666d516f782f497656796966576a6d7a587271564e504a4c4f51564630523355384c5070452f6f7536464332642f58663652536b787a5a2f6b447a2f794e39582b3536644865312f42666a71796252787172764e3438426c565a6d764c6b763243704a7270386575717234486d7467385439386d7045706d63703439335850435168722b7650716241396374446641653564435754636864366839794f7331646e6d6279694d4448534174545572326f6150696a397959302f5a42716a635045384e46496a702f34694c365035472b717561717256357638416979704f4f56314c6562732f635648594e584c533654797568564e6e33422b6e7155424c503371476a4c6a6b416d7967314f644d616465366635426e712f6b723635355575694d766c6e67756757647866385a6452353075644b71704d71507447756d366d34632f5530424c36505553394436337a68574d6a675076545a4f796f6f66314639586656546538636c7a74756230727a38585161776c61336b506b452b6e5574523968304e4e2f614a645437632b6f6562696c5679626b6f474a756250336c4c552f5a566174617850575a477674316e713564355336724f38632f463179386a6c4d732b7054356d4f3170326d2f5668596678336958574d4a754c67792f56426e4b663070784a595274397076747959377745753855387031705072367670662b4f55584b3633753049326553644b6e597566524b39337a6b7251577566514c577a59314a5839716b33487171762b5a314950305a37524d524f59744d514271665437792f547a4e5847332f52543049613769364e4b43585a38734b3336464762504b2f59376c464c744c366c5177706e63317253637049552f63435a6f706135724d654d695a35766a6375687a4f5566705436453161666a384e622f596e3141426868567334637063376b52364f6f4b52714c506c633053623031716e42527a4f61466e335036704e732f4861506f437a2f4145613773584d6f44304c394d7056363179554c6f6d31394133654e61714e37515a6e39716d6a58397136476e4873545278355379657959774f567248754b6b4c5a2f4e50723668444739496649715a676d74394a7652765157766e47782f78577a2b38746b33544636325432357452797a6a5951695765556b36706a624f484a484f724e3848394a744834725239772f732f482f5a42486272665237304b687a715230323658656451626f6f5a636d4863687a4d74632b67517733646f7a7862393131507643714e763144704e332b55626f2f46622b55695231656d486b5250716f2f2b626a3051636763664a7a7731462b565835375935624e6566754a44334c4b6f476a5a465251502b6c6154425a425239686636744f3661752b50384171572f6b424450526349456b7657395066525447753152546b6a796a615a637656776e6e446b2f55316e70496d78756f6e6e4a67396e6f42734565725a315a73704d365854766e786e3768784a3648617367562f463664666a3932666b326f76527656567a4831632f4b7964724a7076307130335a4a474e514355756d67776c62305a3949426a70544d686c546e764b2f6a6e2b582f49433566704c736233444441394a665276527463426e646f3261655454596e51564e673475546c485a50394e7131774b4a3378317a382b54554d79495149497a4e637a614936326e31395151693943772b7a6165503650656b476c62754d737a6f57532b5466776b394d575056514f686f32706f5a772f6a4559554850484f51766e59663841472b79796a6836464d62386462542f4b662b426c347636552b61364b61427a76544430323869566c325a5446545865547770624d5554633138726a6a727151314e4b7250474a624b487135304b6561546e663841614b684c6f45326a704e356a3643633533705035374654724b69394c5053526633644136617a6a30736a63746a70574d7447586858586146787a44763054726f6c2b5a764a766e423038796557424e2b776a66482f55742f49524853394139366e445a397230533950715861544c7549582f4c496a594c49753465652f4965717a4d652b6a48722b46304a794d305341657a4c4b533553375a515a4d586a5061456f6b394c504b7579546c71656c6670764d477670794a652f506276376d786f616f352b6534713362732b7430506f445a67446f66484f6c7965546d7335484a597762426a66482f41464c6679426972304c386d4d5a394b66775077464e3332655a754f71743266694a64726a4656577a472f314d725664726937592f6b4a4b53584f72394f45714339366d424c50764b2f6a6e2b582f4973587837304764526f496f44777a427a70627453686e496b4d796c614d30356f504b326a757a6e7471726379596f566e78726d756e734872434f70636f42373654614f363250754c613866384a32344a327a4e583439334d314a2f484d6c555a444d593173304a69323050426b2b68302b304c6c305a61576739552f4b4b62452b777374522f494e4c5733664b424b664876523779664c704b696a7854456c70795a3266436a4565506b554630754f6d694854747934702f48303061576279722b50537272446e6b53712f324e732b366461796962525044647545357a50536a7a46476369706d4947544a4c6f5a57592f41304a2b32516358397759543069424e4558773063685a4b44766a495831397045546d56384b57484175484d385138704471723773616a4f75344f745a476d4f4e6437457376363530696236757a2f4146397a4a4b3647632b5766584279432f6a61766c565a37696b43332f467654585154667a6e50546a596f6c5a585251364d4b5a2b35645069366379476f7070706f6f7a75736c497055674d394375675851624f4243366d686b394a74483473433366487642617a52527766527734754a706d576c5374786f36756763304b5a7377332b50574a71577638417a49672b51562b38486d3173786748375964654834352b34756645384578374f6f6e62364e626b4d7658756c35417257735a454437414b356c4449697570526f66747a4a6b47625464372b5a6f646c49694c6b36367a61592b4c376931664866442f482b38517a6e7068356e485777692b316f31376a4e52663168745754434773394b5a43534a4d5a2f5a6e57763557704434534d3366474155744d3537574135624e6e32766b706769747970352b5464516d4a72614767456132526335454c6b396b4970346147473264616c386c392f4f6c534b6a39675746592b5562456b514e6977394e3145542b544d337157555a314a787a53706e303168653663675a4c5a796550396d346d30447754426f634b69666c4d77565a5a5452532f4f2f675a65784b463673746d612b6378504848694674574771367970596a70554d304e52694b654156676b396e5a332b3050643050744e392b6d6d45714d58787569686e36504b426b56347330576e6e315830747a7a3747684253316c5a50557a69476d4842503468554e4231737a335479474b7a6170395661716e66643266727a3959375862545443723756576c49714f524b562f484f5674517271344843564557674576542b6f525053442b31722f49366131315a3842733633504e6a666b586d6d75414a696f323358712f54654c454835507555394139623762502f414b413047494e645049504130685a2f4d4e6751763773317078586a543839432f774253586278742b45587a30392b47596579752b51686d416c7a63424a722f414e674a42687a53586b7964686f67316476693045433942516375694a55383663746f54307a5563534e434b4c6b77744944503571666d542b6759366c6754455450514f727775666f4d5057456c50743077357a4f6751775471664a4a4a6d667861467632476a2f4143424e59544971526f344e436161502b6c3278514c47416766633771564f56466f4f6e69747a30314651765655536b446f4877544a36492f7744456c54683732682f7a5479524d684144622f746a4747557a716b4c703042673258752b2f545135566766486d79716e7a7233315a51684b564863654b5a4b782b3278547a396e337a4144355159422f5142516b6c6f375450557762537a7a5a70756e6e546650667173556a2b4f3033426d307a50463166432b6a38525144774a78735938302f774341653448335a7379787176674e4a4b7430474e586e3661732b666a554c554a733137622f327274564158456e7467304e4751514e354954536e69577a412f77443469554e5049654e6a4f7852325a6c396a4d55574d6f667442505234346371692b785331695263532f63704c78465838776359757036347a57434b46647873726e5831544c68326272305a4b346461745761763559744b7074456a5a4c4a30705938524a545263676851354c4f434966554a7041506b576d7673616f2b2b336c74375849726c6c66315565394b6c632b506674697a4e6d5a5652316c513855345065485059344641446b6d35594731763454775a6e6359705966623434516c546c564d71682b3970364f6263396a6c2f5639746c79535277474b48695473563856504b3268534242726b367247366f4e58484c412b6d61363349786c43356b3063333853696e356578395a64556d57466657714947725237327256596f666b536c30474b4d396678676e476c7a46503076736f796e49304e43556753585648474c49336b68316e52722b5471306e30464771592f306c717936584147736f484f4b65435231316337566d6d356c3955354e536f676c706655765135784838736d6d57555a6c7663545434576b63362f6d536b682f6f433747614673506a4f614d52737161524f4a387464346d3173646a706a7a2b664256785761746558596b51636d3768635837414e536c44536b41486275747a6c2f5358554e527a77793536503358333644594d37633172436f4a4d586a6f546a63714f476a35464e4836716f3747754874686c544d774256623831366d4466584e33744f4f63334b7a57726d5852452f527567526f704271317271534d7566563159326e78546d5571536b2f6b425452436a7656543170772f546a78327a55383372646a64714a6b57556749666b314e54647a6c73716d785a38305a795a556c6677354932557a39354d49665a4c6f3365304b797653737a4d5441355a2b73507131357636337759794d794737777230366c38675858346e34424b3132452f79564f5147626d307438695a5048395356632b6872752b63627a6334465a703068375855664e6e394e617857597a7a584773314e434d46547138514d666e59717343624f706c6e613778334b30764863796938547a7332584a6d36745a36553748483178574a2b4f6d75645444396c635a364375595042612f4d4e56657a6b4f7258794e32426f624e506c6347766d5932526c6f31466c584a52674d5a51452b6639653778316f7359704a65327736414374704352504c7645383862546d7832343858687172664d504e3969794a636c454f58675a6330624e6e6f6b784f426962726b72314e426d786451636d3352507066556b416c7439394b48632f714a7a33396b626c2b686e345961323973654f65652b73304d732b6a397761493832764963595a704c6852624e52586133374e4d2b74384c6e63397a2b496343584d5865476e633337436337366d32764b4f794f4a34763431693274796376504f50496e316a7a63374e7a3546496a644f374f474563374c6a67734a4d71514667697a737a4a586c784c715069497a39372b5762544d596d65414d567a7a6d6b51474c7565646852554d70556a4e2b5667637a306c39724173656e723669356f5a7042374443636a6f4e536c474a75502b6f446a364c2f764b586c4b4a53564f3631384c70434b716d636f484177503437506478332f576e6a6f36676a525838546250676e4a67544a3934434a6b736f6b756d646d625030317372322b6f6e71584c314646463469762b4c516d342b4a6f636b546e69515165376e764e6f5555385a387639423835624d5369455730586e73506e6275426c3171623376613467793062704e6f6f43696a4e4c57304671616c524d35374b57423939333167366f4a5249625a47737945366b57657044537575684d71364c4c3068586c6e46466945775a4f50657a534b69552b6457492f50597a327041512b4a51424a3070733563414f6a3054666f4a34496371345361496b7249485663304b4b41624b773536446d656756756c42326238795866384154393877506d7431476a52533130694b655a657355334768584f79624e42504e52456e47716f65413648324a4d636f3166626135794a754253624335527a2b67637a6851453443636263327335496f6b74756b5a4e433655515966324a4430616e636744737364434f526d5247447457595234534b6d6b59494e6e664a574c66676b5954367175554159506a72787037756947544d6e6b69785a43626c36792f634c4656733938464166365236517042476c6d6552785656314d7259645161414a7a4a44586257334f686c5736553344342f787a4d38374b4d74636e37524966324b584a34496f51424e44484c6952535566477a5a47714f6e79393641314c667168524455395a6a58515555662b37485a6e35612f77445551455468702b5a332b6b534141655132496c7a654d472b33763257396d56304b3438644343614262446d4c70584b72756777786e636f53547769433479516b4767494173424f70746f71617564764868707876313755785843324f6d646933517756486e3255554c37565659356433666e6e654b796f796d436f302f38482f5148492b4d696170582f57636d556f6e564b566e7946716f6f6e36783831756a58784e4b5979434677784577484a7363304a6a48695165505036414a645a484d7635337431446e4757326348356a7a584c56796e505a545335552b69785043354f326a2f75456e363557637343696e7450736f396f5a426836424637487542534e6b70464e6d5444656330744e74746d303678744b6c7541597971574d61654753356772672f77424b32636f4e7067426552747a394b686a747a635a5a4630467254777244526c5531454d554a4c56396a6a50324d64416c564f71543375736d346267706d44336737646f5a4d352b54477074515a636b5652763656623278307a303066576b62316e64623346386247723430656b51546d592b38357569357767466f4b736d64446168307a4e623379585939425a62476243356b4f66467a6b30756c71425447474648304b5674624e5430557a66376d755344465433387551446673527a6430325a636d536654475542663244536432323750526f66656a347250644b7a505a79786e386b6b702b6531582f494a49687261517a7374344376394c794f75504a37704d6d444f2f6e522f68354d754e4d352b533670614e4f686f385a464630716d304a5a5a5a4b306c39586f4561307a32676b366a353962545a5877454a6d543544354a6e3161684b716b3856327236732b4b586d744e65717a45685953333667615a786c7a373038637574493658366e73634948377a4d586851796545596a6f4a48692b4954654d527a356357543278732b567136364e366930782f6d7037485937362b364a564531655863593159362b6c554c6f67544e33327034594c3671737a466f6d496e4d794a59596a4e6a756f6c7a31575939652f634b632f6e65676e51426961767271726d3173327634624b63717066656f673666732b3458732f564b2b6c794f333559447a6d4a51316b626337526c4e577358495035426c456a5249645a6a4a6e54444e54484e4a2f3164416c694e497363333962774d6d4c354849416e7650494849323953626e5561622b377271533171757a69656946414c733050356a4e625848517a7338344b542b305341487a646e636b4575627a3255535a677446506c5341566c476a57754f71526a6c6231795a487a4a6671366d314f55466246555469736937514a53726a6f43564c584d6151693534664e626e382f75484f653038314479554b696431554330746f67356e6b3241634e4959736a49766c3754714c574f74505a516c44766937533953436f564e387a6e31444b5453454851717171674b44735553465857525a4f3933685779776f426d524d43657858574e6f4a505059787047457a6d74366f45442f414e634466554750746e7a5a3548774c70506a64424d57786e52642f694b33775a566772735856784c496d66544432763674526e482f677746702b7a4f447359666334486a452b6e4b66455630676e4d6c7666735263306f3279305a2b7259334e314c6e4a713041584d6c784c414263726e2b636a61544279636557774e53536c6953484f7361716e4c61476d31314c4a4a38304f74663253452b766f35444b4a646d4436356e373644623158774d372f5146477774303536357965366a7145702b7777766e325a324e674c50526d71762b4e664852704b772b4d587731384d4f6666365938574a456f4657746e636879563077355249706978705a5565376b39612f707333484a3532616c67746c625a55514e4d4a5538644854304244324c636e2b67575a6b49653269613337484f364c4d38584e7a615a4365464258726b6255322f596e2f55756c50517a3676616741435972362f562b3736774a494846456264696d4f6e6b2b774975626b735662546150462f6267463038512f7169645a7331472b376e782f5a446a71663234506d6e554878663044734b654f72664b6f435974746c553767414e463939746c466c7a4d366d6e693435326f5453756c5a452f334f53594a567849716137394d444a61666971786d6e664c6d6b55797443774866784f6c4a38305a76746a6a31574a78566458636246697371474e6d4d5a49456770704d4a7a6636426e304c45757556413649354667443942386d6d75667456762f593549783337316d636f6f706f6868496a6c4f675a50395878706f4a5a71454d615a3647307a574b54654d30394c3152544b4255695a5454706c584f47567961552b574c54557a32495878724264774f734e4c774c702f3043747373615550624936334f4d68717648525a53434e7857692f6935744f52736a6c396d586366334e416e6a7a3264453655724d416f6f652b594651647164755a51496a44326f56427857712b684847312f535a6c74355055687175566342715a52536f564830484a41674252696d786f4a327972615155532f7131326e3964615a6f373534756a38644f504f4a4c675a43494c686c50503043455542375345774233476b326b2f77436765544c74547151735a52434952775a584f756b785a43794a784832715963564e59697462767557574d6c3968704d50706e5030474f494739427a326652456539456450744d585454474e4a7a616e792f5142314d36776d6a7a2f625255654f744a64637a744b6e426d386d42564a636f63594931396a302b6a7543504b35746a566f622b676e6c6d7a58677748334a6262546255716636624a374b4f6a37586659392f744735716a61365a51665a2f6e3149353535527a5575765348367a6e466e58642b546f6644564d634b4271376a79304c785955794678726c45775a45644d4f4e366777657079354664567050766e4451645970445a6979374b576c4d55354450517853474f464b317a72464d376c546e39666b42706d6e2b59615843424c454d6d556159307a63306b5464625a77344850304c6b4d70576e6c506252633457463837462b77476b74502f5a6a614c4346514745594d5a75672f4d6c58324d6e52335439736a376e49736b6c4f796e34744159434e70645731503156726e4c722f6d59426e7849644e587a564a42636d7a74537372305578354156545268577350636557376753754c4c612b6c7744646379646b62712b427a6f66597a54425271716a5335774f7634786b527a746d51694e6555644d2f7743337670613176386b78637467416c52527449754a4571756e3863375163416437333352754f67507942715a596d737a3532537a5035705047566166384170534d654c4654436a71666d5a51464642433367472f38413745774d6a557578662f41445645594c7159646d68384f6a523139796e546368437a675370544c434c3575636158737531486441794b5977643750684550726361494767714d7a726649767066412f76386b5539392f4c423563373764734c32534362796f37555574536d646c36502b6b78426f797439346779735332786b695a6e43756f5a4c4c5633573934796873387368506c2b79453634364a6c2f444c45304b47437668426d3844346a616f537242744e533649737146714f4d6641374e684c745851614461394f57713968315731635068584643366f786558744e74415346385476657676394137444f54336b78456d61536a6c58584550446a35513471324a7079303532777a5148724c4f2f77416150415942306a31795a617748762b70383466586169657346616a4c6d6c384c4c6d6662517a53664d5a697770334d4e6b7143472b4767644276443739736870642f6f55624844306762576657696f5832746261714b2b504f42583265615550372b4f754f6838554664542b326158493579625231764b66656e2f7254553834482b495056796f4c723365315447456d6a2f75546c50476963766964554139536d677541763543716148587637305535716279594842494142684a44564c46414d432b5550562b364d764d30355261334d4535336163636648424b6b52304f7079357a34664437314c5149434d4137383651796d6130516a6f764c6836524d4575484e5156445845334e59464270734f592f7233644c4c53417a4c4c71306463535a7749525631776645367a3646734a444633793531386f646c4e6c6344513475657a5355464d55726d66584961467653667371375132664541616e4a5a507862674c54474d5a57546673775a505a3763394d334935786f4b37592f55637630725a61446350494a5530742b554141485747716c547175434942433953445669426c4a78645a6e435444626e6850627a4c69723163394c3356385369506a5866586a734166326b706a49344f4374536d6c5153416f62315349337930466a49356f783061364f7a39674e6331584b6f38595735386262476144696c466432504d4b56644f4e7166593733696176734375314d5a346a556e5a6d6b7a635a55616e362b66723136433868734c6b4a414371726e64494747726a6d6447456b35636f30524c6f6a596d6e376955673669684966573245306857493574315a736d74314c4b525a723276436b5646307558645a744a4337554d744b68654a6e343954424a76316f4f377971676f555949613448586b4b39616d30372b6868765a7178357a6f565463464d314c584947366852334c454b6443696e4c47346d4c596d5a625676396e7653313030795149364971306673497651735374427171637a502b5342374a55763746616d76504b3444636743795a6565356b4c4a4b2f707537374f4d73367163444f6a326c345a6d723962794b37527a5859796e3033726f3861536566323679684e567638677453717056556169322b316a5139676d4e395a49583964494148734c77756e50687366644e4a4e6e506b72724b536d5636744d5533374656755531713650326b6c446e352f55754958484b764e536e6c446d3043585172717a4a753952463665446a31624f54673151342b7a73582b544e6a54647034462f7a4c746b6c7576593943645a4c76686f62614b7078363937424869526f45474a6e484752622f414b6365472b4b2b4565505479654f547a702b756662656553766650527372317145376e5a553664307637666f543963757076794f7056636c50376253307a41684850556d666f4a442b39437164726e5550717a73332f37495a65636a4b70462f6a7a3443557834386e6a57356d616b4a616c69796b484136324e774a454c334d61476761556e6f492b6c724a6d534f624e6f532f774161694e6d5651534c364d6a6179666742436c6f6244567a6557376f382b77587559366648502f5a7a34537a2f4a392f75486548666e305a434e4857486c4a77397939735a644f6943674535617258454c3834557257656b4b766d5759466579576c694b547064305775494f4a724d5479394a455774387767785a744c4d30613238324635646a4b63754c562f6c44706b304c6442625a3377444b7869382b66615843706f676c37567270392b63372f496e637473723443766635447a487a48586e793734385645794e6d5a4f5a48414f6c4b315168314d453435317161506b597a6f37445867786258484d4756726463326f36532b616545655543313848787057506d5a564952366445326c53766e5731394f476e35665a2b3161497556715566784a664c3964443252634272335a7042332f6f756e55754e334e74452f774473426b437a4c79692b3164534249697634456b4c506d724f696e456a6743784e7643464f684c6448376765794d49306e7876777554386963357a4f6243465536334d794c4d314e636a65725779624f2f395a53364c2f494d367455513161764174787852506c736a544753587353397a71592f5a575441345168655a69305457736a374268372b72334f4b36676a4b566e562f786d66782b6d666571713070317939625972713755735975727631706f6b394759464c6a6453784c6b4f54614b78694f49747954306938386a7135655867742b542f4143646d71706332527978732f77426f376454504c72613678554f53505a2f6555394c7765796e683853524a545559305a357232642f44313568356d6569337158453334395078375656477a56436a4e4450674b4f75565959317a6974524449787131366e56325478636d397131556e67684f4b56664b546636746d6e68507236677a333039324d3955327a5034707330746645674675717974503775685543374e713979584c59426b774e426e792f7052716d6e736c412f594a44396d577563384a73497958686e714d325a5665546a33654e4e4e3570736565546531724454446d49444f6f3773354e5354616a344335376c6b387666316e42726150762f4148664e667879415350653754746964664e386b4c63334f506c787531466f56657a4c766b357a596d30462f447343372b51534e58442b4d516353666e2b517772546d43456b744c584d31337774644d32616a6d68542f4a5a6d75464252357a45634e7945335744716533556c30506a6e30464e4b632f307a73702b775a6d7a7837506d476d31715479307646307633322f4e53687850544d32784e7a6f744255664d2f2f77425556784d7235537574763441726e482b536371722f414574615a7a57753735514646634c56756a632f6d55325269356f6955786a4e516555446f2f38415a30426c35524f2b613066354b78514e6247356158522b38615068346c783144644d466a6d5a616e73787167646644724f7064544e6364504a2b4f6b7a75544d794531383752322b58505638534343636d55676964564e644e422f316266627844334d676f69726848544e724f7535644b533172565a4e50524a70556d6d466e5062396166515870777565676661376c4e44674d36444b5871327833387551596a7965357a363943576336585671593553372b79644647712b556d717a624d795a61426f6c6e7a37457a557a7242524e556b334438545a6a6449694a6d59674c547974696866706f682f55753530654b682f57664a466c7a766d6f31473059725a5931434e433072306b2f6f474e554372506455326568707047414954625575697256763145563857665735316a324a6d75436d5348366f563356424550526e546c7a6f5a527a374a632b537858334b4f4a5654516b454f31724253587a543177534c57437879344c305a3678324a4b5a366e4c577a6c54546238564262546c73357837577173563071785035633567507055456b74425466597a5442334655696c7566705064514e2b6b76324e6d6d593036506a71306e4c703731794a2f2b3461617741556e4e30447553764d736c6f454c7a677a6130364645724d397631424f43646b396343357a354b31315939486339306876506f65394e587a306e3855382b5945613163324a34492f534b7673357859704f585045716c47306c4a434b45756b6870346c4e6c4e7a732f3841524d5535386e77746d346c6261514c6f513746496979326a4461374f4f72717067684454706f5969744361556f6d78553034536e584d564736695833644d67465a2f7476764678527736616e634a45754b5243314f4c6d4451755a5557627256577449646830304b64795a4c6465566d58386c5242553268585071394d6a7151626e48636c52702f724d487331426338662b4a6e31555439496b7a364d33733245756a696f634d65773643785a6a3861526f6752514458443077634c452f36666c377962645a2b596d53484a746b71305853755174394645425774466a45316a5a646f44395962745a66666a752b5a4a4b61344b3178394e78463874664139685150766d444d387353744c423041304d6d555874347a755776552b697075666b3175686f6438664673635352536850424155717a2b7549544f644d6f4271357149756b6a61696a6c5879366d6a3074674e527a632b7432664c4b377552544a5a595865554d632b37445966795555436d534e6f46394d4b6147306255374d435951544e5774636a74444644505735637362583666627136366a53737674357a563549736e30696c6263747846383654435a556245465437466859506f387275696c757172576270775761323449793538673172633537766e7836376d5356653036516f5978674d396e7a45757a35484d34437176725963657a35672f4e7a4f6b6e69544e4e37417330765a655a6d557845616145485550444f56587479796f4c516e706f2f55774171394d2f76363168396241493534317772484b41767357686641394b7577716b706174644d64554d7a714f6b684642507a6632515555695a6d7a3375633170534e734d4b72386d6e586f655571576d724b743042644f344a597a44506c6f334558304f546251366e536133536e657362705470347234666d2b5a314b76305351703170306e356955654d30307a336952545a64417274716948507a447a377061456e536d724641663467544e4d66636535616d6a334e616e6f51657861305034423030763270457469706b532f48707841725a4b6f6a51316b5935556d594844715365684b3553614b714e686751304d34487a336658535270347735542f3841695645443952676a444e2b6e5a5074636870726743746c477a5a6b5251576957574d46565661374f2f4849647931324d6251535262325a62756d4656706733545437785757697a4e6a646d496b374b546e59624f5a4f4261594d78575952384a5a58374765764a443671654f317969514976366c676538564735674c2b48514935732f324e3457506e727075304b5277587330314c7a5250732b624d366d62782f77434c53563830373561724a77356d4372374252732b496845334973723848302f515448785a64634f762f41436f565646526d43326a51726a6d3675764f7a6446746948554d6d6d6835324551553453574c754b4377506a5a4b636870612f716357356538575a50384f6f75343054586a303636597972704b6d61635a2b582f74614d2f507a52637255792f77434c3747593856314c6e4453485263623630682f5749722f7969576562657a56415676546b61685934364d7a4747684645545075516f70744c55584a6c726448515157556d452f77426a367843416a79546e733170306e35694c7274517958506a2b78625339437647327a4e2b684d4d5a526f356f56316e6c6c7a4f525255783762574c414f725439353043426373324853505a352f4c3767356c2f773461746a2f4142362b6949737a73697062663358334f3654567037335a594c57382f774331514d7a6a36304f764c36774253586631536168722f483950554364654f704b4a595a31535643374f742f6171576f696b62724270515857384f6652534a45793433667942756351643934545576525976376a6a7072667453464c4733416a64736d47734a4b4a6a7a633265524768304b6231566b6c4647504c727a7a716f30444b726a6d6f6e57424832774f4b545151657856514579437230387569724f58426659576f6e2b4f6d596552634563666674557938333534566d72326d557243506855752b73557951534d7a464c4f7a6f45735155343058377453416536577942344f4d455176724f3243584c3048466b352b664b2f55716c6f6e4666474e664e4c30644b6a346b71594931305963657a356a38354773334d7a5070317666524f5461432f69436f364e6d62566e776b7a5368736f6f4c6a6d4d644f4b2b7453316f2f7237484136755436626b5479656632426a4f6d7a625771314b35466346644b774f4778415a3831433255726e446d756630506a586d2f58356e724d4441457a676b366548574c356964555a5543373676456f2b7a37714a35567863745568656e615843644d7372657a2f4143664d544e5a3035634e444c417273306735772b676e3575676f4d79546c706a6345644f626f5731665770396e4c576550634674445a32747764436f535443775a36507343435a577262704548364b6b2f722f414e423838575975445174566c6b2b6c695a4f5a31693137394646566b4b467554333475783644655a6f6f5a6d3149373043506f715374714875567841567a4d7a5055576d454e476a3161786273396b79354d6656425776396d7164726b6e556e4c766c506d68337364684d3976516c7041544d55644c526f53347a712f7141696e503770552f58586d3264564d39376d33754a466a70364f4e48346133364445724b4d51586b3644466346592b7873612f384163564476622f5145377235786151527052516a68544b70546e794a475674646b63706379324a314b75696e5043557145633976452b35744a786d617a37336f6731706a4e594f56796e4c525a4251743864544d74426377784c4f47655a2f6447354d374b482f636e6f59446852535150535a382f396b667344454a4c6157584c706e756b75516d357070434a376638417349686e566e387a4f416b463166464c562b6b685043356a5779415650316737395a6f4d7242546a6f6e52454a725659705a5555456454712f7744314b5855306233635650563853695447797268637058514c43316666384c7662504f514c76695a312b7568427546646a6154486c61626f50676a6b2f35617547715a30774a6f593750715a4d50784e4d3070617064483759484a675873746d6e4b416e717a7444726d4a7236312b676d325075704f72727075456a6d663863374f35347a3044593735654936735241774d47634d4257712f73396370352b74463965694a4c70737a6c6a724569775a7150483063375556516d34754a4c3468574a6441414d36586c542b75682f51526a794f5a4e45795a567565375030706d686f636a357855346a326569726379714f4f7a57314c5a31334a2b7342627955595755643936445032434666362b626175484c772b4a74686c716453754a4b4c6a70744b6553744f583156555658792f636a4b4769377244486c4b76335a47355450397868584f366337753842737a4a66724e714257684c44645555566c626546546754303632624435424b2b75594a49564472564a714b73674b4b324d47722b3366374b36302f4d4d333755695251493334736b546570584f35386d4c4e5953614c71337171376b6a466e7a513648336e4955525431615a6a3148546e6346676c59664b4b77542f5665476649527564714b347469716a7333626c35493048576e726572726972735a41344a3562616f7931702f6b6f306b2b326c342f646f73517467766b6d2f32394165537166795746576a494f59716247755a7979724d6a612b477251705447396c4a64306837506b6976655a7a7159687a5a784433756a2f414e416445634f2f6c7949446877395135443775364b636d66535438725331614b427164326c794a6452646f36565074536c6e7a55444e3277452b325a696b672b347a5a5072624f4f587144336e57425777796f62556356552b66572b677a445067486d61747054447871742f506e4c347879564f59564b3172694171584b4f2f6f544a343274623930794972426d566a6e72795756304e7a4b74367149633462367a376450526e57566f506d374973686c53764e6f6f45446f5977615a4568534470765977483334647279414f7963747a5934532b3056664c5034707064306c304d334d79364c423033523650325a526955464139304c4b477a2b3142706478503841394c4f366d787a6f374e6648414930534a357a7552506e5878797930567264546c357453447a426378396e4d3336475a72423963666d6f4546316d4d3635422b42616a596f454f4b7772767a754470745863396e6b622b716248684d746c6b71314b4a6a4e6d6a66557431434b497164536464576534554c4f31354b6459646e58414a672f6f514c7844786d4f77633949354851324f7a527a6b736176354f2f52797552375346544c4e314a706879654553654b4f75692f374d4d45344f716e41512b634d504e4d5048683853646e50555767466d6a6c6a7a546853756d725431656b7143587165753344712f6e767453702f346e342b5a4832545a457048734d67436773544d37706232317261734450354f64317474386d694f6f504a3473756b714f6161744c2b4e415633414f6775456b4135374a77306f3270536e52582b6f72545043496a6841672f72426c50386630633951447054577834726d38444f7255476f75666c616337524f7a755837517a364978477971586a324e46523373556c724c4f71764a53496d6550634a70364a65753371746949366e79373365635335766a724f4157374a544c354d72617a6246545a7568503542505077574553614c726d4150793175373544394e3357636e59564b30566e704d316b624e35587278343573637745612f6b30654e304d5047744748794f726d48444e744c346b5032556f4a6b6d6a4953644b747254576c4b7558764d57754156696452643256714c6d79386254596a4e55326a4d7a305a54637a5275324e4a666a3268307464423556552b303678644135374e4148422b6956484e2b2f6a714666364a74646c664153624438757a374e6d6a745664453834466b316e7a6b634451754f784b616c31483849316753654e58526354697342686c52314b765a796e2f4147316d764c79386367626e74476c5548642f506f5a7a5a7a31646364354a664f4e4e646131676b5a6573577a364d4b4b4b65414a4b6d4e41583944324a34436d3258377558414c654f3650733570513531765a555549434d713661724d7673467a34364e44756b533663426b324f4b762b354b49694346504250485667336f78714f6d703344356a3131627333337668504e69794851636c66487a4b6e7a382b4b61367070716e6f37697049714259796f2f70696b455a2f4d317a76642b6a6c4f786e5a77363547575137516a637a4e746374454d63495a59706f396b6c457658685664506c6266576148617635436e37487557706167352b7a2b394d417a634652507a2f62374156546363547974307775795973757a4a6e7171674f6552584636597a385662514e4442483634316679435979664f704979666148334777552b7a515444493031356569362f75626f6362484f614676717a6d655232696a694a5a754a63576378714a7a4372507472634e5a7a754d39575a782f38504262633763324e764841446b35714835694c70567a72776e35317443574256486e77784e476a39383049382b697237304c726873465147344f414637444c33436d63503630436d6d4d343242624b7557436f644b62746135696e525a5965635563484d37616d646e74636d556863505766594e3657426d6b366e7237436335745068352f38416e2f324353754d3135636b6b4855703255475a6c4d3445434f57545850705a4e57795771625136575047754b6a536a5432592f694d36576b626d542f4146546263464c73794f72546135544242632f4a5a726336486165426f716e6c73564261645647622b34312f79574f7272624a76736d41347a6e63637a7157416e486e382f7541382f7743366f382f65434b4b5a314f6575322b535463316c55532b7a3453525649334e68593239616e555a2f3132746c4e507836616a39326966492f334848732b59613255587a69552f77424a71507264756270706973733641496361645647687038566964735871575938754b54626c6f513152324e6145345574427174784b614b556a4b4763324346644e534a696734792f55326c7431616c2f4e66733575633665687777727547626e32694677636d39356831725878382f726e445352376359766d4e644648314131714d7455674a4c50322b562f496a426a6a64505149736c636c4d3572526e473961356b38436e4e506f304545386254356776525a544a4f6e547a4a4b654a6e657443667348646f323579574464415674366a643772435058575530764b41534d373978375a792b46425547787877453139526b356e416c364471495972733436676b78566b393338617a5267414937453056756c652f572b627243452f2b78396c6e31666b6438335a3756764449682b2f3474342b395a54374f4b6a52366b57464932615a6a63794e316c4f54557252744c4b494f6a5a3269583748484e59766a4b4139695571306e46307072613353497a6752615430617873695555793359516276435755633452795456543443502f4146564532703975796c6851704b71465176556a346b754144594b4f4947344c78614a6e414e342f704a34726e5a612b4f6b777a4c6d64725935526f6e4b324f48423054485031733661574c53506d7447664962754a6e466e487270645a51434c313066377154656537674e692f4450785933457a7338716e7a4a445a584e4f53776f6c3863653133456458637430617059415443734b426f6a587761424c73326c396a2f61457336614b7a7166444d346d527337672f6a566a6a2f414231744d4f4e4d6c4b5957396e5174665676626d642b5a5447716d483261446a4832384a6a66393439632f6e7a653971516e72756d30593365765872634d664a2f786f564f683773716d73342b7030484d6b2b535137564e5a55466330307a5938395970576e7043612f312b766959487541772f774467307332694d7a584835753734662f314737384f63547847714632524e68616c4648386a645a4d6968615071764761474646775a533250305a63746c5366346e5762646839396a4675396b34557541324e365a2f464969386137522b764f6d687252724c7577335267313379512f636a4b4f5a557a634876466454557a37456f6f36766e32546d70425a664d51462b7752356d7a6157666646544b533361695357525a3868747272374f6a514869313164306a4855752b356b696e34457257594830424d683934442f414536655147304b66594c4f766e7a4d436e346f56616b3150334673306a306d754336653351343658767534356d57612b715a2f396c616f544d5a4b66616639414b73757a6d55556a443058576437546d4b372f4143372b4441355645394c48495a6670443970696443794f746756746a5a3878682f6c4f36686d582f56746c76414b334c62375a787a7371686558554a7972335578454a4c63364f487078586430666175657876475849636250654c7535707855705070734d6467567043764f373775716d62546e78335773714350564b316b546b506f356d71716e386434764c306c5a2b78483335476b72697a3151753459744b677735776e6f694532652b5a4f446e537a536b55374f665464532b5771334d7562534178364b35793056384b4d564f70417761645076424a766f44324942564d35564f506b554e734d717257756c30366264476c54437636794f6245595637456a56517567574d5076506b435a422b792f67753977504272516c6b332f6f73412f6137394c643553766159326d2f706a45553134556e6f6b7771474f584b56795965726e48357a392f316e64564f61353439727a487a527969474765635951484e596862654f30363673323031314d795a46707a69624e784d59637a626e495579426c4530346f6f6d50356844362f77445530375542334b642f4a676a6446586f3531493642424f51417464664e456f62616f4c6a50726676537a527a2f414143547a61622b75343033665a514d35564453325353525558792b5450305a7256554a716536683937444e334b70653957456141564f614d45724b556f536f536a4b4233416d59727676432f4438452f6366516b6f5838386c30376e5a646931776172724f6f6f676a356f48526f716b645a5a474e4c716a734b7156717568386f3054464a3046752b4d583044464e2f4c4d364a7a746a5a6d6f6439373444783266714c4a6934547144436c55713274686f4c517a38315079556c4a4863464d2f7346354a2b754538617a356953733743626464544e6e4a57753266336a6e4e4641686e473579775132556d7a386d7559736148435458726d6d6b2b746e636379635568444e41456a504e57453872734e536561576d786c6e324c3943504c7a676a725456583541365a57385252733678302f7843376b7a5538636b76304164664a2f51594d574158694731666e59385a4b304a7049552f7744717339757556326b556b2b65356673355158484f6871637470725a37624a307152396578587942696276726471662f49706b656942764f4a41467930726e6134736d4a6d2f6f76596f6c734571716a637851706c5076303169417942524f73457a504b2f6c5a567672596d6a51723149374d33562b724278797376716446556c543657506f7a3071764f68517576396a4872735768386a676f4d69747a2b66334243545831386a3435797232614a6f3773695379666975396657345968344f5664726552546a586c7730377a4b446a3733355449633835754a6a6142417559725733536342627854795079547833797647324d4f716a43714a3957517646342b4d563675614e636130613759732b72374c736c635648794630677141473654334d426641365a556d496d4a6959346a6348787a7a2f41417655794f673268566c65516539452b6e6b554f565a774c4c3836792b65624b6f6551726f6834762f34625650492f636b422f786d6573696963316963523047654c35684c34646f42413565627459564652696a6f6e7a587467684b736c795635733676684a617a593467616843794c706e52302b4c6a6b2f7a544554314674386b377449545372463856354c315037457a375578783066376e54546a537765443833326e5645664f4b3935476b334e704434774971646a7a794b58386c3846727054596a6e6848703630675556712f75324f2b4d6d536a523856466a4835636e38504b6d684d5570393652645444396b4241327553423269307a3074622b763978726a35483655565456614a30654b6544756d646f53444a524c726337545172527971752f714f767041466d6b32763662566b7867786a52595469596b4644313934744d6442723773656d2b334c78464e574a34766e6e72492f3957304d31304757745653534c4d6776786578696e345766637475577168616a426b2b6c50384c5a36424643644e39666b4e65644877377943655934735843385268746e7553396c393155746d66646f4f2b4843637a4b5a48676b36646c70546c7a6a337253516d6d67796d346a376a4176474f2f6f4e54765066524a4d673672646630353857386738674146646d7632746a49687a536a36612f4865667a5646626f35717649453574556f4c5a33514966725254412f6b332b513874467548432f7237696c6448306f386a6b3869526d7339462f4255337a4858537a527538696977732f4e677364756437527a3632534e6c544f783655703862532f77437454516c49696e7268616272626f786a644f50415674712b6e4f7857566754656e336f4c736174646c6b433463335438632b776e514f6566783251736a65303363646b56446b755774544b4a44363268487764374278316e3776756e385676583045665a364d6559484a392f4d394d66517a536969346e3643562b58533563326e6c30636c6b586f52736f7a7a355647345a65574c6f5a6457306d706562712f39667a4a74756a385676355349697230393954314d6c696c3944767866316357653268566572702b6435564d31504f317179536d74454a6550307248543154744b7444614446446d4777336578513862367831745943367654547970476a74575a76347a666a5672554f7a4a382b4c2b51395338657946534c386d366c4e7450453633475430643071426146546c6530316d46533365795a4b4852752f50622b51536b394764674370717a50786a39435a58313031592f4e657631506671574d4b492f6b733051726c7167434f4d724f614b32497a32693735307674564d58324b6853335233366c6f2b6764362f68486c4b367171412f47623859413754485450724f3050504d4e54362f48372f486c3637635a382f77444d534e4a6b3141704a394d384b52354e4d6377555876396f663150483864767347392f706a3532737074495052583052545776522f69586a6e2b5a702f39326c58484c6d64565671623377773535357366755633706538433151534461502b33303533567a6a6462494557656e666d544b4a5a387a38632f527971766c4564364675387347576d635361766b584d374950514674474c4a70664962476a454c67536c6a5a757a79794a6661782f38732f7941345052767a544c5756476e2b4b666f4f516144386d44543073447a4f2b53644e52506a58482f454672564133515a4b4d744447753662676f4a30377563726d2b32524e30576e4d616b77486666522f7a3957677a4338662f46543061304e576d484e38776a7235366c787578355a355854376f614568616d656b734e627366556478696149334e2b786d38364353396e474445326a475a3162522f32685776304f3830666b5a6572482b4b506f706a65524d3070467a4c35366e2b4d384f4f762b50686e646f3532684272542f43347875582f414c5071706a6d62655876392f5a686d2f716438627638414d6e48385036417a7a38592f556931793166384131746e6f4e72644c4e34507734666d4766744d385333696f73783061446d54363076574f702b6a5931307a54657a6b6f4e6f2f58764e616d7837796e3472434f526567486d774d76764c384d2f774165375a64653749546d36324a366c654e315458646c38697a33306c342b7a4a6e6d4a6d4f7165654f616b3761666e59564b414c366b7a69454a33522f314c6636594251765273374b6c3657782b485870556b3833364e4476497066566a782f42513355306e4d304d7039724e59545779706d4c35513769437165364f62394433504f48324e4d493359345271576d5034662b41793066517a577a4e47612b7a384e2f54443761524c766a54552b6f7339313132706d7836476264796b335a395855385376466f647747557a38454171665743782b4945323935482f55742f4d597439446c5a78575a422f695a36426a71584b677a3057542b6f4e366350475037476876563565697a586e614f574e6b656642396c6248726a57523970532f6f2f494a316d387a3176622f53444d5867486e303038394c50785a39464d36545475315a61465265566c715832767a34394c53536c54594e4a39744761367872443750625241516a6b544f6366316a634563342f77446c6e2b516b56336857706b4b62566d2f6978364a4b4f6d3156692b4c39514a632f6530364e554e5275644e715934574850647839326b3055465162614f7a3038726b374f5470326631584d544f32645351337a505448314a306f4969742f4562307337424a466b783978382f7a33486b31756f6f31316555756c6e2b6a644f31613749355a334b2b73557367566f614d7366474b7652316139596d63616b7744735067586b3751652b66386250424b6874704331724d2f7a4d632f74476d3648483038724d7464567564423262504b7537327441662f684166336e4a615a3947323676384131522b58345a35335a5570702f6a5434464c50626233764b342f4d323539736f5456364235736c75595468737a38556b36654c39536846383836346161526f70454b446d476d61663957663566384254786a302b386d304f5644622b4f50696d6e6e4e7764476a53307276554452736832697a34355662545067303836312b54502f44736f46765a6b4d5a4f46696f63366b714f304363326d7566387a482f614270655065635535333869503474656d757a4e2f4b61764c61586559525a3773785a577079766d716a62515057622f4a3435513975684f4271565335534b572f447166556e6a2b4f33324444483946764a5839354e742f6937345a6f5262364f6a5a696e36695a304766693559617562647459336a3748366e36596e4f2b4d59554e355766567031546e5732686e773170547152505456782f77426f504c394b5049772f6b63452f7861394f66487039656136667837625a366d386d742f6d2b76775439326e4c563545674232705931796e3172754f434653324b736f6d5441365a396430597a377932506b45372f412f555a4e474a52702f696c344539302b677455453366552f785a4b2f473958556d66487653776367643841344975326c727536745875457076394d35636a30657a3233302f48482b6e2f674a51654d2b6650314d75747634752b6c5869564b3363322f5976314b34362b6a73756f71767246516178446f755a466832584b4e356a376575414f4c2b4b53684a54526d75332f4d7438746f4e362f69506d4d3635563766347a2b41754a654e4f4f567a4f38307874797135746c756b32686b7558496d6562323948586e70486c4e54765a576b464633345631317a706d4f375678362b6f68757636476553625764494d666f6a344575654a4459504942583671706c677974504b6b4a4646757a6f4b314d7a375765425172503454346e6b333332755a4776366a52476665566a347366396f2b5a667031726c702f444c2b504f4653343478774b4a6f76556e476a70385a795662677a56726d5a72527a6a35646b7a4d6e316e33384e774e315567756c6445383856546d323466696a2b51783076414c4a2b4b44472f47447876792f504e6b77765256366b597647706c676c715049696e6a6773576e6b38444e427a4f314f4267554f2f54723244384943635a6e763163782f43474d48706e432f77416a716f5a2b4f5044692b6a48586d665939576f624d61314645705a343059734f59755935796d4b2b6a3659705370664a342b4e72434f6168726b4e334c6e3376313268642f6f2f5a6c624d376f2f7741547647653478444e6b6f68523674655065545a63702f7741717a78594d6941464a5441766354342f71624856496f6b5073744c6d68534154585569707535632b392b7530487366307073753038634c50784a7a7377322f792f7a5a78657247523350474371582b5271376d73314b6e6a4a683577376b376f317a635254387534383163532b425a30316d3031694939352f74455670384a673145324148347334314f68516a436f37782f716c6a706854725a6c69354a35707a6f6e2b35327744586b6a455a544e4472457a6b61584b6466574673322f7743722f7443365054322f6d6d6d78663473654758514f58706c6f61652f367347794e46644f534f5a32573343314e5135724c457a536f55704847454e6e325936436f516c58336b7875346266653866345a45643266536e4a3566514a2f6a6269522f775a3856322f44395463376a4e6b64756972777a6a6456344f544c6e36435754316462506f436b432f7741506c344853376650624d2f3841556a2f542f774167716a776e2b4e63387150786577396e7954587a4f71386b3448714f6871507059386c47764532614b73364559745865696e376171442b35374930304f6e63644f654c7033666e2b7769466668566b577770365078574f4f6c524777335a486b654370544f56355633474d716f37726464692f594a30345454645437474e675537566a522b7147444759782f6d6341333861394c70504754305049764a7678467235626f6c4c467373563530364c4e437237464137655659457a4f6678634c382f51635a42587855422f7743364f65626741753445323352694e554e56654634336b775478662f576e50385a5a6b647a61706b654f656430763357336d354d78776a76362b7858497a48645a626f524f425356305475544e6d6761506b44376335785038416d63524b66422f512f413339615851663646582b4f5a4e484d6946614138326b314851734765716650512f4d4c57306773734164423267384f6f4c69494c3657556d6267476e2b7132766a34754137772b6c2f396d6e794b2f77415a7a4e576e3038777646347437493859386c6c5242366936756c355a6d32512b507a757949793172562b3577706f584f6c66576944542b6752553169547669377932396f694e3037754d6350565259412f3261396d325751652b412b4e53476d73576c505a3577765456516e73734f534b365a335a39487458394e5767727179345947366e6f423745566152476a587462733772664b4f506438507a6d4e766a626c37514a7766326237557a74525236662b4958614c577a2f414c6f5a356672797754647a6f70315a7677614d5a64734b63726b79314e507151396c2b55415365386666542f55652b6e745a6e62312b6d3747666c6e68752f467736444c6e396e3779455a36637a2f414d58385375496c41707a2f41434c665064646555394535354e57676e5a567854436a58444f7a6e6531564b363242612f77447369382b706d4e66645043332f414977485558396d32754844485064344e674b70494337372f48504a62386d6e4c5a7a6a6c4d546e432f653976316664504b77703138546e306d3776576a385a74642f53327261757062547475335637556266446a2f34383266773851476e2f414c4f5737316972397a7733453867354f3854594e2f6b73744c364a2f6c7734476948616f5a346d45632b6272644e355453302f55637561656c4c44436e2b6f392f50546a574f76542f742f38755835676766396e5454745768352b4759614e4c48752b7a6e67666c6e38746e78713749365347576853724a51326b795432565057676c677232752b476b376a4261546e33324e33504838362f683365765068326734692f744a2b59524e595576686e6a6730387a756679436d2b645552525765525a4462704d7661696f56696e7776724c59773477735170582f32766e37456764797676347a6962594175542b7a4763646c4335664656306e4f794a6d5356666c6c7769527a3964506f6e58576e3266612b5766557459747a4f414b435369663678684e5078452b2f747154696d3633796a63506e66374f506c336444767834666a76304263735a3039387931704946355765686d66504b425a5573335358395a6d6f37676d6f7638546d56397670636231794e66506a2f4c762b4b332b30467250375075766367735766486f56434f59475a3864486c504a7361696c5858563062765a45664c2f6b7a636c7a37754a554155717070614d77704235696d6136317262596a34757a2b6262384e667a666c37585479444d6637536e6c4c486f4a3369785671585a4d6c385a65547a72725175306275306b2f535a636e356b7845784e50546e516b33584a4e2f42562f796c305472576962566e74562f4c2b4547763841386b37354a4e51566d586a3035327470695261425a506e75766e59566c505a7541452b744d39664f6c416932574e7674515241376846396e6c41424d4c59392f777a5047767944675037534f394a325770456472365476572b31476835395a6f727053684b75787972306f71706e56554e396f384b6c7a48635945792f7742544b664e4e31534e655a6a4f33506432652b52496f5037615871466c756464466d736a326972506e795a322b2b635a4646326330464651653937637634335469707853476e37796e4746695755476461596e57694a32322b4553584b2f746c2b58785172562f486131446d5535364b32753951666333462b41357870316333696934683745746b6e2b54724642545a4d42797541754f65343533576e64456164763266586c6e682f463464344a642f74326559685671754c44644a47397678386e7a2f49422b4c626a3634573072644b2f515a30716a5775722f59385348347467792b464e674859466665786a50772b762b415a7a66774b38796f4b6547764772576359745075766f2b524f3064446f31714a564c4935474c5a4c4f52787973426631666a4433424b427972564d704a31393958312f77436766692f434c79326478576479742f506e547770536b77664b6e637559744277676d2f4c4a6c41727a566a506d7a67715434526e2f41462b312f476c3331795450764d7861592b4838762f6b4c4b7776786138346755313772504c3664426655572f5a54716e6b76452b475875347861574238377671314c4671793448764f4d48474a44795261715731496e7250515479583050386838657946794a703955315a76594f7574616e627a6e7279716f61667573713778376c4d75754a61794e6a6d4c4d774a4b6661376e316742736270764d347275742b677a7a534d70757162463677524e3451774337557348523164414936553045395174756342584f584b416441324c55445568302b6a4f42464e467537703952646559696a6d624a4e6d366e6c4d7a584c496141386b30564d46716d55445743454c65763332574e57353039486630496d35796844332f41416f55466454754643657032356b654135383649497164713357742b776f45664458446c4969624752712b75385574585936684d35635a315964486f4e4d456e516c6e543072457a6a687847766355663134702f7743615a556c576a506c4a6d4955586139756e396e55306e5a727055386f3936567673637331495938544b5a3079574d6d4c33542f30436b65637163362b46592f764555746c6531324c4f746b614e4e4d39436f4a4833314d504a6e5377695a795241423736706d31646d6e54524f59674e6d75613350513567555152505374394f64644d71703053577955424b67475445697936663637714a32564e3654413441554e615253542b304a424f555371506f64646977596b6d6575466b3272526b634b51614f4a56505a6f4376347551742f6b4d3531514850574874576b7664386a766335595a507379776f35652f6b74445a4f52733645656e6c7263497a5379733048614f7765622b2f3132675958536a796c5038416a2f6e31776434333242386c4d714a6a34557333632b392f7354723565736970476e56472b7261304f456b4a5a54542f414f704c75347459736b4a61724848383837334d2b594670575156774a354a7a74744d74466c44596176354465736378394365554c646f7a7539316c543830617055696c64617947655072706a6e6341694759544d36786d6778304335732f67764f4265504971323771716b7752712b7831797136592b4a47686a557357436c31787556383463346f2f3642496339354c6e7a6b43306379563262433934324f7a7278646c326b2f4a46396b4644536e58506d787730756478767558446d2f4d46487a75392f517857656e6f5666474c4473316c6452307136566c486b574d433569314d6b4a4550446a304877726e5a796351465855705571623370554b5841706f4e732f624c4a6141346c6a61316a4c6d456e526c63434679754771323876616e556365676c7933724e354e3934546d6849644476556770507071644b796c66787564587a514b4766432b6e73525a70766d62492f6c57755334795437584f54567a6a766a375145334c654e49434d4441596337702f356343436958527948357665535a6e4e54676b6937717334716b2f64734664695735492f63707070396867324d666d4577637a32672f7743704a33336d52543157765a38435a4a4b492f6a54566f526364334f412b79564a4c45396c4378656f65723641754153413442495434474c784f59754b4d4f526b70385251307237567830366853774e44724b5a69373268797964476149336b782f487063796b4a452b3771516531384e37317a57525464526f7472725456564c774b35374b47783239633174305a6778676151356677307464325a7a4e55506138522b514f4130354362395961746370573651456d695045726e526e5a6f5857736f6a30585a3539497872716c5948374a55394b56664437694a6a766934437778305a31584670684a316175612b53544e417265334d6e52524a5a507963645a584754444b7a68665837306c6a4e5950493661334a413530397164504959794e7544514f7633555473494e424b5a3676726b336956517372576c4f5a5451553959653249587a4f704c394f546d6a597a72484878547765624e4b4d31744c4d75733672537371647a7271705171584b6e4e674334364f6f3971364b502b78696a7872474578704a5278684b6372324a4258546f494a4a786e69617a354971565153666351456c4e42304c675171454b6e64665a395033537034544755725a547355444d44677153306772725838623868315276314d584a7130744f4e384330646f5a6f5a4e4341523279665376304c6e314a4e6a43596e4a4c765a6d6734476e79675a6b6d326a7262316d4969596d42714e356c2b476e6e472f546a655465592b56552b522b51397a6c66586876342b6a46386630502f5355303438544b71712b34704d6a54475873424d51685146744a31484737363339615271643054314656562f6a42353356613653614f63635a446b546c732f4c7a4c3158346453644b66763830754a4d7875616e59354c4c3752556c6a3348415943624c61537074766a77714972542b46337152533545505635712f46312b544f736c7a4d4e65784a3466626439684e6d76354c7158644b306437347034316f6b79314d70446e796953582f4f757a2b70393958312f36475966697036733134746556445434726c654934394a356661784c63315475626a366b4d563174734d4c3641717936645a64546c2f444838594e6d42316958526e5158593937547238583147342f6f6a2b4e6669337039686a726f79387664386a5a4f39756c3544537168316b7275325a5575676e4f484d6a5277686a4a65703761657341784c2f7349614d6276716e6e653973343778744778674a66646d3230736f6869615a7833512b316a7742626b382f686c484b5641547336517773726f3443334f484e7055665648376151796a687838412f706b44396f676c4f6856314369537441537852464e5558632f4e44394e676e2f37565131543143543239724436334141302b3831664d4451645255377236394652786a79655a2b6849756c72457176636d367252315a61453643796c6c6239504e6e517a764356386e3661316e777259777749756f324f756f2b46706337795864797a6c69706f5149484e5669344433515532526c7a376e5a666b374b594c642f75437a6f544f6c34517541623243696964354956564569324f575058426c3072667462654c7065376556654e6e78386f496b66772f566e37564a59744c6b4a39776b7064594d57535647566f4e3652726f7a4f5335576169626d7670434a553054536b786b53316a4b6c4e79705743395354596676563741703634503242524b49306b5437565a5a58726d4d665a4e564c624c652b6c455955745839755651363133305463785855754f4c6c41657959412f3841684148356f5235394e5170695561546c626d387257552b7135344b53586a2f55744b316a6c302f4c59535a354f64554b767275632f774345527073502b67567170794c6c466d7868306a346e566e6b374e6a4b34322f6e57727a35324378596764483668464e4e672f5038414c62514535786f6279685066364274526f4a734e56587a545670666d71682f6b70757857365768447a4d53326839436432705a575469564576756534312f49466e452b31585a6d67734839445a54567168556150354872626257537955712b4a467565556349542b366768565255596c47435064784644662b7566667073636b47683944715a4235447a6635513143362b33647576686e6c5375796574347a547173756f6c314b6d334d6f536c4a657a3972575a54754f5a41506f444e69356d7a7a7950362f6c546b4851704f686f326b45396932306451334d73635430537839686e714f64533074476d594747776b726e51766f4e6c324f725936566947317a7a5641375165513773306235313061695966725833616c764c6e4178456a45684f385a7a62533450736773307875434d753655616d496e56374653586c66656568466e77777a2f414d66776f35673365476d774573546b6b747a5864555a324f704f4d514772704a6a4174372f5957334c4865613631314f4f6c53654768316373725537413946333870615078384a4e787161305159346245704d6d7546304c677857742f4842436c444279433454457143696952416a7942506339633153333068596c3333737632634e4533444e7a4f6d6a332b31633452656e5174665044524766475a54315172726c2b357857446f4b6a57744a335a3655755972552b504f6448327356632b45485a514c452f706769656d334a352f59474b4e74644f6e32366248637771772b313358726f4b71506d646f54376a48632b7a48744c47714769504c6e6f415a5a334b634e6e4739634379482b716948637173643369315070755466477a727071574b444e56506a4f6c67726f43394e4244476e6f726e734669774761774e45536d4d766b4b77416756506b754a4e326d6169785674653557375756334a37547032615530535a5854564850526c475566742f377868537445772f6f776150433972415a7473723443453061476c3559356a497453734a4f3575586851784a796f4a623766757961444f4f4a46554972686e6f586d7a796f424c366e526c2b7153396e666d4162645049536a4f38556f6f747a6252624b335047507837345652315261636a62733636653039417357646a2b53597332533577702b704a7853672f587451696561687056333138524c35374f353453684f53474a6c547454364373797678766c4c554c5a70796f5a43774d755a733941365779736a46644c76724f39725569556773505273445579374962545255534b6d77353761503036724967782f673761746a33335a4a4b6a484c59623058554e715538356a504b2b3946535848433375486679354454364647516d4452587362576e39535853774868534f6764735936354a653674303879544f686a744851535042343736795143627075396f41626f44794d4f3355537132417a4d364872356c563556656355694b6c647264707437506632714e7a36484a547158536776346e666f466b5a556b4446587a33387552387a4a6e5559584e2f7330684e565a4d784f6c724d2b4b6a4b725577706c396c2f6c693538387632747935713030437368424e4a67536a2b77535732643230463765563647784a6746424247754d382b797156725555334f7650594b4e7632647250386759634e6e7846514b2b462b674d61657244744a6c4d31746f78474c5278386736495436717a5468357a52626e4f716d7a475553396e4a563843394938786b394d7178586c7a707064387652374f74544267413165785377706f6f4d79706a6f344762564b39694c713573394e416f632b415a61484d585336715a30735665666a4b543872434a4b756778726d56476c7175463851484947737a6666447051564256552f75744a666457554a794f51354b3675412f54715069366973584b6a706b487a69646e7636626874647748587a442f41443849527a3063305134706a4b706f4f7a4b3078635670516c7355754a6c6c48386134665a3772476b446b30652b33394e613570455856417158566f6d787872574f67444c2f2b692b71393843612b3057737a31544f41556363353035537050684b2b4e546863716750613436524143567367767933773531475464484c7869324d786536415068486f36464466663351316958444754682b75746838614b52644e314a74502f41465468384a593149545253715a4a5a554a686c366771584379617250724e71394531712b5571436258316876684d6f6664377a436b43554d315a416d50546c34754b6e4f626c5a2f7741724e785838727a2f31486a6d6c7049477348307052463871514b642f656a7877492b3438775362674d7636417753617a632b2f55376b435569474c64315a5230364d75734e424f444b44495a6c6d7358444456504b502b5836347a3451497a6f4d476d43724a4f79664e4d69654263544e614b6a6d3153357956546463394c5a4b4b306e724c5a4b737039464b6d522f73506d2b79644c69443947367345504b6170555a3554316b79782f506e334b2b317a31374a7161774c73746d5736747131734c2f7155444b766f745542644e366e47664f414e494d795850563876663431354b686e71375736622b5159564353346d79664c4b58506f3537663079484a74656e76765035446f42786e7a39425148325050494d2f72477235625342315846477a4a65716d61687a644758324b6d646c674758437165655432716533764a71644931304f396a6c4334465450356e33486d36634a7a4774394c2b4e6a6c636950533552396d6156376b666f70383272616a735730434b6a3344535051446755754967645468736679385136306b314244326d32623542426a445462504f4c6d625a31546a3862713452594a6b7474426b576b6372553844696b674370306b4b757a6153715771347a516d66416838713534723879664a4e3043644c6b3675584f355a48567a6f4c4a612f2f4145526e52427a6744535748353535476471652b78326a5847503242624a476f65366b635a735849556973386850527163393157656f757165506547356f614d356674767967355249716275556976375a39652b75534357524e55677476376252726c587a397361317933514378516953654f36587767364e5141483942674b35696871732b6276487a364172374c385a49556471536c3169445247636c736f534469732b723159556445746e70696f77457a63443372467a4e6e624a6e47446536523147716250724161707670696d6c6e4e696d796c5447554c716e34354c7a536f75482b304e47777662534832475170374f784532615a436c4f426f617937463052544d354b755a4c3244554a4f6e4778596d73666d2b5a697745654d424b78466766614e54506f69663044634e7441365445646c594e5a7231744e42547777636e3935394a504858664b516c5373534e4a706f575146774f676b747973335a4667386e66543174564d48314a57397272546f4957584872514574533547476d7548342b396353717536514e636f48556e31494b32424f4c716e693153335a4261566c2b66545375686f6f4b436855397948392b51762f736244523068554a6a556675503841346957777636423871456d536b497a68665038414d71647a33306c637467755936706b4d64595641635a64686c4a614773344b666d7344363443537a486759506a6e356247334c42637661414c69714f6a596a552b5a6c466c4663316159562f58584b5a584d70653548784b564e395652416952776b304572636c3054717531306d4464525254453271614c336477376b2f44536d48506b396732532f45372f414a37314d33554348416331674e58374155343639793943376856353531706432526c444933386a6a465778664a56772f65585979374f3332395934524f3568306636666b523831414d4a65367356466b4e4d6a626b6659624d6a61514c66355379744c46357a4a6e706558372b6152552b685231614f66375263532b664d6f3366304242595771426e6148483975756a75577968746c456374566b456e324379484142644f654e2f77416d6c3775723936784d443470663178396c415a5239326d5453305378572f7050784b4736594948423261575451544358755859376b5a4864797743344865544c5a71674c707567582b594c50693438356c6f6965396c737064726a71377a6a6c5373544f4e644676554f375535785170314f415a6337396c63332f44756b43754341334b58426e796f656c36776d6238553574726d79754f5a7055514f63794a6c347a384b676a6c2b6d306c586363346d6772714a7151562b6e422b2b434e32686e70632f514b71657968434a6b49636932657674667a5a797075476868796c784e5174527876746e593950532b4a725354386f4f6d52645651686b3779612f6b314c744b5a354f70433773547947506b6d6a55514444777035334c483245686a6e57705554754a36516944646f773132785a6b6777537063784242336b444c6b43576734786e424864424a6a6f4a61372b6370365139354b4b615a75642b7771666e5036423759466e786d754254327161786a653349666e784b366d5238737631656c65786f306c776b3656426436614a6e4c766c5a372f414a6548325948673077497334713668616a5772343968616c7452323078677a5a615751454c6c742b717864577333356659302f656b796349663447495272545854613472797a394779395158506c7862495866765162665450786c674462676b4f62397156695838345a685277636341443634704e2f516f2f314138635635484c586b646b622f414376625070553834566e4d62782f6c3774434c6b6c536c443862436c594c434c396b39566e38714e522f737a5566395445346e4931663836546e30356c39303734395350547135586d4b304372596c56317075624f76566264342f6f4863746e7962307747736a486f344d33316e54396e533244635a77724c5079386e47306432532b6e4c7750636e4d747030575a2b714f6133617a53652b2b3931494a7a3136785a37657446737a515a47646e314a372f716651694a6963534a5233753743756978524a4d5a3552536566546f554952584e6d4b7a50714f667a4c3937707843573579447250695a3150413344776a5a536b4935504c37434d3350723175456e4a796d6f793555374d6444587630493358426b783074733676374a48327963685a70644e58462f4f5364564c796e4267506132774931365438716c384d2b4c4a76617a4364583971777030525a6971727474617674344f59796b624464386e79787244342b706b64387952556178506f476648765474475a704b767130387a512f6b7a6e7130517562373055615733714931345a35735736494f2f77415231646c69557263316877465454387a456d444e494b326e6c7a34693444796c7a5a657450424969577859706b3049734f4c46416c6173383861713033665664504e66516558562f744a7251703463667a6759782f5a536566782f5839525863354d6a5731555051475a6234506c3075784c677352315251327a54374e4d774179466248575641497a744b512f35555755446e63436c4c4e674f6f7230303431697443742f755a7938517a7a525054547467706a656164457154307541356c45396d73336e376451356742565362306a59414a727937767a44502b556f30344e6a586169544c6458776c5a52535353526f6e3075537559356a586255383943334f784e4c515879516a704b636a555a416d7873726a6259787437674c386738346d7773656d444e6f4b312f4b666f4f674c63776e617a753130736971446366566a395048736e6a596a2f446965662f546e7a665a44344b512f714972695a6e753768444966426e655456387462323473773261687a2b50315a2b7741374f6a7a74532b5535743830435a4a52625939564579733133464f58414c3177455578796c615a694f6f757a776e78794c42645a69793577387a5a773070614e584b593876447278694b706469337a6f466e637635685a537233384955384f4e3447715434776a586e616430524d64777a3064444c666d6144383754574e4556476248557873734d7433646d74644763553930327a436664526c5756555876515a306373716743644e35454b2b633145483030554f2f7743726c4d30645a70367650756333594b5667447834346e526f6d6e6353732f50584450704d37796e6a424c744a5631482b6f534a6364334e67454c37733257495a773031306554364d716b4b70536562586c7a312f5746316c764745756c633771457a3355436f655472614e4c516d46795a2b4775506a2b6e3667686d65643755664d32624c757166724969466a56715271325553722f61382b2b567a71394c71316c327166515568793566384161325978635973366b364b78577364715264506a337154366878485a58702b562b656258556c52465978464a4e42504a4a4a74416d74704d452f49524c7547566231304a34434c464e636b4153462f395674576b66426a313951525436302b7034556871542b582b5131346a6b69576a316230665355767379616f677a483135764f45584d2f6c7a6568636b5a786d6d5733724b2b384d6b7869765a326366586b44566e72583672796133476835725a2f41436a4e53315838653271747056425038756c4644544b50326b386a72486a6d4e5948422b6234324a345a65774932317832507236675a582b7548715a6b736e3570374c6c72346b75545a37696b3757616e6646385672645743314c616d66464d50474343577938375141727036436b384a74703669503769704d375072707170356f4c636945537a35687a7164356d484944616f714e4c53584279756f6671796b582f58614a554e543967327a384436344744725774752b5543592f384133514c6f7a76686771765535694939574b4a3672467868537632367a567a735a317647422f77436f41626d3063364876397468415a6a374b6757556d6854395a374d333566715170304f734f79715436316a5a31794f484d7079557643654271574c616c43756d644e476d594b5838796674325735505037426b7a4e38697a3446387a4a7a5131794a4f54757230496a6d52454353397864554f613771644b6a577350724f6456786a41752f796c7359546e636e4e504366583148314864624e7463757237536453656f364a6f4d35695572716766517365785742494b314c735652646f4c4a33736f5243464955653437486372437647302b59626d364b324469466d7a575439414d303847566c553538666d4c7379677a4a5a695a5250665579723638303444795a61786a6438764a324c396e3951444d744d7a7378544a6976344231516b766b304f6c6e674345304a43686c383445766e30516377696e4c346b442f414e326d666e4f6b394d674133314935694f673135533456582b3539786a5a784e47423161575266446f4d6a6c624f736c6153324a6174536e42374d786679454568632f6f4779707379796b364d79664c6e74736c514f3847684c6e7434366e674f6f616b5139724f5a4e7a584f2b6250716449537870324f41424136676f6e57352f503768464b326451774b6c5a6132446a7534504e4e744d45684e6d614b4a30535274596632383944496c72642b766a53414838306853316f726f72714a4e3277394b4b753252564f61353156434e432b56636d717a5030706f62417a7a376f35627a5a505570695a76663876324150754f6f7750706d4c336774545666375a4f62506a765561576b566c65564b39334f3766536b53527150367537635a61525a3946317130537350337a7a58764d6c54653559584246744b376b746e4d37663675744b7a6175485374303570577270305253394674536e6b7431567730794d4b784e664a70776c6d4d5031585930676e6e7635636745366d4a457636304b4d364733557038644a446c36507673697158422b786e6a6b48363470633737544a6e314b5230342f77446b6963342f64376f424b52355959717961717574776f34752f587a4f38796772794b7674466d5973744e646c4c556977457a7872705036354363314d7a5865373557384f324e307a74675a413371614a715a63375671362b736e58554156416163534a677a776532586d544f492f63354456736f2b71737872576d72336e32697568644e6c5261655045316343786d304f78434e4958496252514c484f6b417965716f33636c4e53614b4633556442725653424f2f2f48354146674d41496a3555562f38414133497a4f5a66484b793071734452694d733151303175306447716b776e6f397135374449756370367968545072477a324c654333545872487a464a356c57696f4d664f4a69586f7575664e5a50684252474474654c557a7770436a514b4e6b697276745a2b676454656d31494e67703531687170447174784a795a7871736d2b6172635a564e4862744b796a307331457130616231386e575439487675456c2f656f6e6e34703069356e514e4f575359666d6f2f6f44554e4c755472563279764d666e5a58564c72736432354a7268577943795764476f6e6b6c444249595a4f6361353332773069702f6653716e2b626e427846567a7063732b534a576e5543756865544b46397a2b5631304c6e34567165574c742b3870456a6f6c676e6867674145367745545477514d36417a646d473037594566755a674d666e534f6137546747497574795230396353504e39673539695a7959373342387846776c456b5770436e4c647573396236686145306c47646f4239534f6e7839465447464a326c314c41516b6e485a48493669596633326c4e587972452f6541664331756d336c382b6f6b6b4e4f4e66516961543549316e427a555233446d736a2b374854574a6379594c336b434d324f6e536a5878594f364b5575674952463571514b61382f6e39784e2b437965614a75396c325a78704b5a33797a47794a44536a524f53317742744a5856517932676247696c625a3169694a6f2b77653965332b71694a655a574136616e6e757a733073356f766d634569583353585256456931493337596b746e427a593441514644566850516d5a52477164674779314f31416f627957466b4c4b4661452f785133364d3975796e4a6c54702f625165726e2b7a56712f693178703978754b3769324955774347592b2f6f45334f564a7245784d5a6759357a42533764596d587436594e44745033633445784835506d6b3051386a74785a6336565556326f396646722b4a69424d553571486b444339726e534c4c3866694b6170655472737530597755696175424e452f4555616b46592b5336393579435169796a2b4c6a7a6265644a67476e34484f69424c652f4d334f3364742b332f417455315477546f6f705368733731484854375a7673505a6861546f56327445754d5a50394a583868374f4d2f527061694e7a6a2b6d482b683949695a6e684168586c355554366b4f7058334f3655786f314b502b7873664f6d4533755870614f6e54464b522f566b6f53357270705844774a6f326463373437505975396354576169425a4759374f6b6974774e44516f6b6b343265545a737179594f5430436970584b4f39766430532b777a53574c6c796c2b7972764d4149442f544b4c5734387666494a78325a6e37587077795778564864434d3254416a6a49594b386f666c746a7a4f6f6857715833546c3743644d5a3253494f6c644e435a4a46682f5666342f7036675758444173436e4a4644734455367438356d7058612b49696735525a754e726e6c6e61437958724574784d51744b6c396d6b45684a302f52504d45504b4d354f6a4d497858676c43793065547336754e6e632f6c45463651766d6b3064546c63356454384e643077673457707041306e2f6c2b76366d4a784f524550484d656a5152507164386c565076437073363537382f4c744f53334d6b54637a375642516c30616a6d62704d704e7136524d3653586233765337332b723374317267536c45543662736251376f486c412b667641744b744d2b6d696d537563643864624d565a2b6d3562435847372f72544239666b33734d346f7758316d594c784b66784b55564961764a3469766b6731793350713763335049772f6a4f5333635651786d666465783141704e7755306d373443616c765144344257306135367647356b69544b70376f4663723541706b6b6b4b7575792f64634a6c5250473664374448356a637636347946374f7249774a35656156612f6f7253672b496f594d642b5858583770506170637664664c7a6d456e6e777856446b672f345570494b506b534346646d557a2b67796e534257333346472b4b59474a2f6a51753161704d3576384148714b6536345937467352457566556c684a466a68396b2f62506577332f4b3861416b506a3067673434354934326a596a5958736153464c6b68304a4c4b626a587a533471554a7979516e587a677655345679664156416738792b4a41544e462b6a44525a416e374c44533375716f4267684c3679712b4c6b496674486352457a7674792b6e4b4a2f4f5a7063306c6b45366c39427a5931677a683766342b7a363956774a69597a6d4b6b732f5136794d2b614c703531396269716d586f554b704c6744314d417441574a5966364155636c537035394d533749556557645757395074436c4548554d4e31536e4b5750575a3466706a4f6b7359666477774e667541436e55416c4d326459796c4e676c70395979747a56766c744c376e3163746166384162585552717939514d394d2f542f514e597a324a4778566976625130443933636d6878676455326877626a2b51547634342f632b596e5473723669507132546e525a2f3858322f4f51575572503568423035677a735175696343367838457a6c726f724b35452f334b4a2b6f6a7a2b56776939656839664a6472464358754143477475614a673043594847426755415473367453426f2b444f4a31543076357145633435304d64614335517a2f4b674a617a6138334a57315531732f736343316f42414d336f61362b6c4436632f3841534d322f5071463967667837474f716c71354d746b46565830624b4b4756457755744638694d726e2f44443939414155664244547735745147704570444b4a49496d64794a7a59766f6664462b527069756965526e324563344b66312b7666373169665335304b3333356b4f786135706d7570476c6b53497579792f52515a5567682f49477a6f594b63754e64504a35666b616f353566707a7361414f2f316630454e707074354e7a37664e427a703636632b766f36574f7a36633733433256443536474d2b3034716e5a37654e756553514b395677755771342f3244443646373557425471465a50586a3363564a46497250726d7a35555232716c356d364e51723751646d62517039667839396a593266734565796a704154566a30782f4e6b67724a6f516d47584d66796c5565644d795676436d63797636795471757a32334778694b46696b4a56652b744a43314c6749477556667435496134783154496a4a64454d36686a50716a573232726e5454445251784e4878766c6f57443048542f6e6c5047614a6958634b4b317069654d6451716a4b31797a4a41684c5857724c6c7356462f313134566b4c75534a5a62526f33744669462b783064524e2f614f316b564c6f66656f456b5855544539714d79492f6c5465525072553032524a784d2f575565346c327454507032575a32686f63584f3874466e2f414e6a61697357645246324f6569536e336670546965664674767767723577365a6156676d6d68464f794f544832723748516e304a766b2b7531497835395564554b3561707265496f61505a6d4d7661646a484a34663841536e6167524c782b4e394d5168326b4e4b316b32363133632b79666a456a4e6f3656504f34744c357862446b4b645950794f6b6f34596c6d304b54396b5434564e7454754242386443744f57585171756b6f31654d2f6b686e30746c394353376a4f6c376f2b54745250455a473656677a38372b707668435941356130474a655666672b7636434f515443714738676a74306c356b6d65783071395771732f754c4d6370376161756c50503861714633634e5971715378636262436f6a517879513245483831787736655255314f766a465758733135437a61324b55517856647157375732632f6b7272526c6c346b45394e4b76644e5a4f79773533443741486a6e3564713837503770386f7372592f4b556e787441386239433474433130324d633263484a644a544e44634a5662432b6f4d63786e5845583365664941336535463435346d576b6a41646c71537036727a784271306f6c78566b733676356145366c6b7651586a346242497666574b55522f4d414e6c662f48663147597a7438425366692b42687034323831364f416b6336765431744766497367786b64666c30554c5a6d5244696d72624d4b747a4e3676396c712f434a72483567347a33307949393672526f6e38597a6141444d37713148713641305447326649793876546e73766632446c4f784a546e3648426e486c6269642b73336f41482b4b327a4a6e6d7657506d4b6938427834592f473352364d2b6369436f4e69477a715158574b3235464762586c5a446f39473678727376682f58694d6e3941616a4e2f79534a6d51354c5a76504e386742395750436379616244425159656d47547935684f53704569543052347a59724f66636f4c393536354533324a645176355038416f526f53452f4f306f436d314a6e703351456643764e504c66545357444a786d566553347147706b3150482f41434744734178517675585a4f46756879367651586375716570515773416c7a35716247484859393176783274465a367a6762562b4a666b39346d577376787a3149334565496551654d6b65633262556e386872384c7430304d2b4c546f7939475348683565582f414e6f614a323373424c79734156664639427653786d6b7a4759345547786e386f36693655632b3243306173376a5338644d633536527069586255476476564b585246704a5437732b647075624b5a71426636636b576e39634a4c54304b596556466e64672f384164397674463057317a627a476e4c53576171675766746b64624933474e4a65384b50596f4574436175515a6748596265703064445a444f7654624c6f6d6839503134756469424275307454543539424b566146584c6c7353734f6a464e31474966316d385756633964647362646f6b6c4f6a545a704e54527871623773734d613333387331716d3061676c494e54744a466a6579752f32554b4f4d492b392b4977516f46447a394b624b2b414b366b323874755a7774585251524d4f2b68726443736257507a6247574265766d764f3265695074537937373535685370494f6559464e2f3031562f5a2b7368683239744968634e544d79584f70695256616a337531746745304a71386d75454d2f344f6c564e4f75476f456d712f374d3150484677584939696442382b646b746d704e6463672b396d5847707755542f486b61514c546d5a657238434c50385237755a4d6f6362314b58496e705654373043514e5944744856707a7a5953417a626f45672b715a6c472f30614d3937527a4b7238326a506c41616c2f494f6c7a715446706d464a4253526833722f3644486c41386f423378412f566b7a4f4832396650494b537562343832364d797a42537962365031714979373049752f4637506c6e4a6656635a326f4858644b61596f7648585a3063324a2f3671613944597130325859594f426b4d35766958726a79647830565a2f4171427968614b614b5556554a2b51417a2f5039767348744f4c49717972545a5a465670576f6446307034455035426d544a7a35566138736e6b46515573644d7948554961566b316a6e6647763347616f3575563332385169706d542b6e575a30477144704877425859617264796e6a677a4b735a6a4d3262756b536f64435348514c68634c764442587a684d43516b746e473337543167664675596e615666556d5572362b547a535632352f5631774478557455354d723435664e4348733479557141434365633745712f776e5367706e4739664f41724f63655a5357685457546536427346436575747162316c72643769457173517a76386c2b732b4649394a6c784b4d4d7178333255716244386d6756552b6d7a766442317338417379355a536e344d3538596877786169645339464e527575682b4632622f414e5262347a61466867494a5762524c6e487962516c72307a57792b4e376c3833614e505034552f4e4471745133666351646330723476497142716f6e4c6a795148375338302f49594e2b7149484f6658412f7377524d69794c2b314c4d6c716c6d7a4d70344e3065744a7567704b4b50656863302f793839394878456c344d6e475271615a70372b6249627a5a36624a75424c546b6a50703854776375682f4b4f4154596c737161314c37436355664856556436567770506958644e4b5a4767305777463537534a53564b2b734359386c4a554f684d4e4a6c4d7131363070734e6467704b665658477866734a71357047544f5737767770416a6b4339504476554c653849565a643430356f53566635446a2f41476b565136466d626e4a46316a387553567938635734365932487775683076654269464857714a6b54455431676256355035422b4f335a36624e524c704c4741614b5a444167686457694b696a3761696f5a796770535775587076574a4c396c6741526d6643396959744e74336135733863386648504e75357669456a5031393852563956545a6452536d416258473441354f6b55706f63492f4277685034656641344f6c31412b357966616b445034756e624e34727372613233384e70356362755776772f50642b4c70742b4931723957665050544c795447336238377837553864386961345679366751396c44535050672b503258356e794176596c6e3932614847722b6276575571396e746e4835564978325972742b75654835767a664675726a34755847324b6d7472754b6c78584a76676a55394d6c4b4c7443393669315352705977723170786c4e4b51796662424b6a3568556c4147324e4b6b6f63584f6631414663582f496a777535397768544537446c6e6b657557786c42426f5a633536656a43776e575a4a5a646850496c646361552f596f4b76342f627953654e5a38786a6d4332696d6272655a726769366e4f633232656d3757792b335355744f6153714b66376c55626e5752305a78752b47646732394d7a50326634546674534d3154523532484c576136637857704f6c326a54586f567174694b646d68523741587055477336674b5a59706c577a33416d393669613735766c612b50362f7141316d686c39304b44575768306570304a506d7155304e444d6b314a56386772356165683750625659747a34436e36672f6d6d2b586a5236786a516642396630425434625774715163733079555432533575655a5a386b377074484c5a31476f524a7a364a6673646e4b666f6434533277707336356a327a4731666168704e65383130396b626d6e323965514d66386e7335594f6332484b455731353663654d30533643356139425375746d7142696b384d5631526d356b676674484f5672726c5648727a7935756b67744f692f5472733153435370764a6f2f34655a684e5637527a566659464d6a2f5a4371616a6e734d3146374c5674742b556865764f794b4f7536743177715a6a2b2b4a546457376b7a6b6a5734614e6443566b2b716657376a3056552b3879443478696739356830366e43352f50376a34784e65725a46636a747a5854325854357a5879384c52586e49684c536941356444425839706e4c43482f496d2b795961657545534a6f552f314847732b594a667863316d653463365131667447685a55564d556c4d50526b3269525441314561364556436f4a5954534c7078535241526d316c4e4b476a50782f583951307a4b2b64594b366b636355553878546c61457269726b70755a4e6f566a4453366c6c51726c586e314f6639672f684d70702b2f4838727545763270417a5832356956486b30487837695a6e6430676a6a364c50704b33394a657168312b5a6f64576f67717a36412b576967525a2f753547755979454571384f6275674a354c6c3344646a4b79536870563071474c58397034725a5a707070546f6c48566c746d646433486f6e61717a394c4c337a4571376b3344454f787837586d466b616e4369564e387452582f617a3574477763512b77356d706e7075512f50312b5a726c6d346d746e734c7246675a436f4f79524553434d35702b50362f71456b5531744d4f3937703143764f2b69356b48317561764464485a6d4c722b4e713230315a716c30546c796c764254377a4359434e306e776a554f73374770525777616d7753586253307462735259764a46326c745530613675354f6c4176332b514f4c4e4a692f6d543772484d31652f483944334f4379322b3369436249526b64506e743566714d4b6763787466385431726f392f4f79563239306c6f5255777453693946437a35326671557a684d7449674476737458555243766c506165463349377038305a334c30554d61366157754c6d506d30564c36335545312f4e506b334c58375461626e4342707070625279623633514a47392f456e53356a33547a6758317a726c70793536485a666a7a317a6f5a6f61364f7a4d57786166356f316439382f45334141755a384a3957376e427a69366d4a55377149325a724d317757745a35444a6e514b4e6331456f617842525132437a715854797239704e4e76757a654737324f534b6e6749436e7966483172727055472f616758562b3646664a564b6930796c366b7a5733532b786b7968384e69554e465877752b7a4b5269734f4c502b7263732f6c6e3743395a2f4b472b5a63672b2f46506d3779382b70576e494c72325a623830737a616f4f424e6e4d3151453775616d6357664759764566596f2f595a6464796f6b2b4e6f2f2b4b322f57303847397557626f6d55534271555a7663696578624130363562366834556630426f39372f683659646e704a673067316c4331756f733633463865764a612f482f44594e334f6337726f2b52655166444b44654a6e554a7a30693566592f30354164732f536a64336e76634375386f4d4170783737783968552f6c6e6a43644376373066703170435953737a35624c7436636566493653776261624a4b6142565859496c55526b4642382b474253516f58377746746f6d4f3663794b41386e774c517a4b367a385067786259597a577a35393269697570626d7a30766e68666c3645716d423074434e664f706e63746a72352f5a4e77315471433054787875774e5a74503038596e5230615a63474a61356570746e52702b546647694f6a4d375657422b534a6a73635474564e4d38706d7033536a2f337263314a4776714f6137362b4970547a6a4a776d6d6a4a30714d3843597a635377673567314d7745614831716f4d7569576462766b6a37656a506363346b6e716c4a43506e2f77414867783247706e6d50704e34785a6f303652655038334e6a5964707763697673306c514a7430677a59644b6c6b743941397530432b4768625849707157493371592f686e597a705733322b5970455053444e30347159752b6a576c506f7132616c36464a65515a5756706156334b62464a314c4e5939346730433572616965645733692f31384d37476f2f626856335864456646362b676a4e666f357a4b2f6c2b356e6f54423278796173732b3365645635634764585857774b6e4f334c3630562f52354b5266726a684e79453947735574724d4f636a644d35784d6636513052364e356436397a633066787350525a74546e724e623472366747702f64524f6f364937464c3556386a74707371562f4d4b2b47623664744c5a35613657646c6a6d5a6d4a7847707767416150534c78775936737144385a714b52616576314372765579626b302b6447797a5030736a78387235426537656b314e5a7a78374f6f676d4c3255726e6f4d4246453735373958482f6149503554364b65542b5162494d79667874737679744a474c73497974447a5445514b5272744c4130365035574a364b563643394166385258776e5554706d64396d59594775354d58694934366e36672f5036485a504f5a30756a2b4d57685a3348745838456c766b55467a384e47687a517871492f676675537931564a304e44536e6553356543644d5a58304137365a476464302f7744556e2b63434f58656930525449375038416a4d385937733749733063706e714e724e58496f4b506c586f7757383048386c483647774b4434616757716e56645a78307363334c493765386a2f71782f706b5045656a7564417255485139424e6a426b6671793946786566497857366b4a5472444c4d366174676e7737457570484d307631502f494a636c33614b6d30506f6f43643054316d66725559662f4e6264617254387062364b334e30587971324d396f2b736339776c6c52426f53524d63764c7832513357453650355863637361425035576e384531676d31766a706d6366776772463642745866532f522f48545569367a532b6a32636657614e65627255374c5073326b7a44723939437648706e5651783971592f7450505a3842324f3547663159393548647166375a454d702f483378615442696a386d2f467633614d34794c476e6e713164436a4e79304f2b7871593973384a47724f616c656f6d726f5769366d576279514b78676a72576450384155372b4f49314f4d666c6b532b76384147544b43545366542b4a6e6b3147624b4f6e47444b765777574e7137464b79796d53534b7573656b744c4b7056532f4b317971485a73644a314d636e3372703779663841717a2f70674d5a50514743796a4f6d682f472b754459306337364d414e395539614b307972426a33544e697a3772704a59333570665a4c69714c4c417a6161546e6c45542b7a4a62336b6639575038415449775a2b4d7249636150506f2f474c5730355a333136646a423956463575564339737a76347a504f3950386c3957784f656d654b6731506b55307a2b775862796a6e662f54336b66395750394d68352f77444d59544a4a3666482f414d61397250524e6a3575586e4c5a3678356a4d69455a7331303453706c6831672f6e702f70722b4f567a4f7056516c507638412b70396b715165386a2f71782f706b416372304d4369585362702f6a66725630645a576c5a6233714b7654333867494e43716c57736f364c4464697358526f652f7743586e58732b6a474f6b30766a4361354c336b6432702f746b4a626e6f324f4b475a6e6c2b4c523349316f4b387654646c65715556743954704457786436636653316a6d6f2b6a64646f6434456e526c662f414444564146637378306631614c352f655a2f3751574430554a3073624c6678372f684c50666259716d6a314d7a572b522b3434767558574f6a6a64335354526d34347368344269414345523136556256495332754e302f39542f6249622f2f414458446879735271666a373564533373336a38385253656f4f6233794f66447564312f4a5071374473762f414e65586b6a384578537947662f633764506e4d4d54594562387a773166384161447a76524c597a744363502f6d4b314a624b4f7164664d33314b6f7a47376c47432f57307353754b31586b6e482f774d503063385242374a5033485a396d696570746b797134393554782f32774d6839444e4b33344f56666a6a35524e5a566d7371687a4e447a5550754b75317231352f384145364d6573366870442f4632543050724c736c7a554736747632466659706a622f7741333345784430417a4176736f7a2f774155504c7835546c615055727639524d506b743455627553322b3972645479332f31585561497a6c4e56517a6951544e4c2f414b394b68544a676a336b342f7741336a2f4349632f304d317169316b6c2b4a666e4559795130496352656f754e4f7666696238774f7349414c68655079737956314e53614b3658545861516f356136614d4f4a767638412f6b6a3139424f362f77416463744a5152442b4c666d61376159686b42352b73554a765442326947446632504a6b362b696f335a39566b6f7a4e3470566e32303571656b356b686741352b38742f3150734136507836504b69426176786e39535069376e79534a32556556773966724d685850514d6c557a2f4a464b676a706c5976715535335a7553555a7666666f786d4844646666502f41464b2f794554762f4858485135534e4838632f49556553756d71756f79736a7a7a4a7a38724c53476375657637374c334c42626d365645722b55647263376a6b7170554b557063372b6b616b642b722f7442546e34322b4b32365564492f6a6a35493748674d71625a362f565850746f4c52307237594d5a46324a6a4c4b665431716d4e65736a6d7170532f77436237496c55427a4e5658336b2f395766394d424b6238564a37536376572f4758796e4f6e6c6131746b48504f594e5254564e61766d3142674c79746b47442b74716a4c544a6f303643546e6f416731542f414e4974664d58373977783076782f6930613966636236416557352b6253575257306372314c336454576f7058574d31575476636a386d466c6d674c73394e4b52714f3368486f4f6f6d39705564486b2b386a70756e2f534845503436353164326164583438655938464f6950644f584c3835542f482f77742b526e6a76535479547071766c31473743632b67355969706d6d4c4e534e59674e724254472f383333416d6e3055777062386e537139435055466a5561556430345465583173696f756f79716f365856326e354a645536706a754a392f7974457161595070694e4a2f57476d5a314a3772774474666f626a794e74354c2b4e76715270756f6878535a597631476752574556486170686c66524c354d46576558566b354c716a6943415237375034794f6168314b6f33666e722f49527476704c6e342f4a6d536669663669795a64734461794b587a74556a614b46792f567a57303077376c6a4b592b73386447396c6c4861497a5453366b3949774f6c564537706e683779732f51536958304a3854386a6e616a572f486a31554764346464626d302b64614864536647556d4d704a467a5a724b487830437a2b5358782f594c493151786762572b354a304f694c54485455722f494e6f2f513330376e6933664839663046395236613870506443544e7950554d73742b3461692f6c5344685a4c41744c786c36374a3666326246506e464d7a6e476f3175616d5065583772514d39543063394f504738584e5a6f65672f724b556c756a616263502f77413678546a64746155524f743063635661544b49557168793747584f6152415a756153715643303749356939356d4f6175524546656c5742386b314b66525431666a385879527a5a6270646231527a555334306b65666d7037506d4f73324a2f644b79657a6c464877772b3150317066676e433261567854782f46582b5166332b6d486743706f4765532f6a373673555845334e5a35684c62356c4c72554a5a71617132677565327a797a6a704850676e4a36503841674866496d68382f7447744d4a742b4f6c346a36434750394c4d3937313969394876556d7038744b6163363756395139726b315445346b3764576d454b74377363715830533435722b4a53374a767069616671364365534b636678562f6b422b58364d3443426b78683944765576576c325938696e53703364765858544e7a536b59746d6139737a7069646e774a573953436955626638413168344f3754524d746f7a4e7037572b6f5364364435766b39364d332f7743613331564332586179676f376b2b704f7576506b7646444f466c2f656f6d576e326c533566614c7573704d72675550456936676b424f2f457a6264586a2b55546a784c774e6e674f6e5271552b686e715a354e454e3248664e572f7931476638414e4835466a797a3732686f6b7a79494a6954644e38687659786646775254574a734545752b56315a6e4f49693952303938492f75422f6c546a3475586c5a506a2f716c4c6d59666a754d3232572f7979426c474e6c357171427571786c746e625a35666e385753796a614f687771413249666c6437314d6e6d353761576c4d357a4176412f774334542b52694a702b4f3863395839585358324278706937395363707442554c4778624d30424d624451744758567969672f6c6d5334782b73644a306762612b35702b5541572f7742783738716673736b354c366a5334714f6c456879374d58633350627a6959776b706b6d68456c6a4c6f4d6c57546966374c75786e796c426d5a67632b3530764c31395249656633412f796a55656d51356671416a2b446a7650515355796b766a61684f616d78544861536154306d486a2b5552307a477668747237476d696c4d6275484935376e5338765831446d503841754f666c4270353138636542352f33536d786b61614e4b574e435746566279576d6e4e5665374865786d73477047756164584a6842767a4d4e764a69536f41526f30696378626943632f384163572f4a706b2b6965586c624e54467041685456725a77636a68686c2b3871375759357a565279305475797937396d6c7773534436452b7a76736a52487571566e41537966376a48354957624c5555383874487941457164755a46472f6c5a4d6d4f46585958727a4f5a6c457446576b7a6773314669324b7235434a794775465367556e6c703061645a4836442b342f2b524e7932556f6b38756c6d726f796f48537948465670514f307a2b73362f6a71664833793755703055586f4372674277547879664d51546857644c334e4f7a3976556a4c503841376a2f35487172637537503871386b665a6d4930355a346235364f51665a6c6c3470414444505937366568554c4a567163393746444d2b6f4b3143633765786253724d356d334d48712f376b6e35484b7a4666505635483356356e6b46594e7a38316b4d4f376a343436644c4c4e566a6d6e6a7066633950414c516a435434544a79545034614453746f557a6d5a783638426e4c2f63692f4931326845725178664b5a63314e65626e4c4630386f47544b733742377a3758644d6d7371324f447075594c4741656330417250726d4b3442663154334e504750583045706a2f7553666b4e56635847654d2b525a55422b347a3271326644343231794b3970535467306a6c5355516c6f66545375657650616731652b696b616e4e536e737a6f3663664632526e522f636a396642727a6f36636e79344b4e4c4b69306844432f684f54527a6c6f355a55417a6d674e62782b4f4f3656346334547a53727453334e496854564e5833476e342f312f734c456e2f507a3167303557544c547052616774716365664a6f2b4f786a48324e4f65385a4f32616e424166665256554b4856474851434f6e354667715278716536703466302f734447622b6550724a64533442625a6a7a7055485371317578567a735178383838724c697a4c6b3054732b7a735a367144614370556c4838516650772f73555064784763634a6b532b483837765653536654527154584f6f597542575a70707834705956365a302b78614c4e4a6e784c46632b68386e76645171465a41376f3857517a74642f534e4f496d746f375652492b666d62366b6466493857335549304d336c723547486b6a4e50504c71366b647177324d696632756432464c48694a4f4f62695a75476c6a68414763694e4f49693052792b74332f6b4a78422b566e714b77302f477a65307772467a38313638614a773674434d745a6e6d67386d6643582b36654d444d7a4e596e663858366e4e53715831747039386774442b543371444573704b75613933574d3444645a75656c534a61727a5a5a773152716a45566a3257646678632f625571596b356b2b3970476136624b2b417344503966764e4346485452764d375a774b31697a4568694b4f62546f7a5a383555784a3169594b35303351736f4e796944332f5a4162484d436a324a72576534543376715a752b5354766b55666c433471356a6d4a6b732f54426a4a76612b7971687a33636c5a432f3430724476656644532b6b35476439684f4e30346a4d7a3469792f427648446979452b5244742b537a694b6e7659586b64507a4d6e2b6430443679494a3167746c6e5a3550385234506666396b6c6977466837663670626d78743434414c314738775434316e4e3036766452544d786b2b566e4d506c616462517641656968536566736c6c796a362f46657a6a4355564c684a4a4b417666465933524d54334453485231644c584a4f7a734163394539716c3050624845796e4b6256437a5657555a79766239646161485a362f5a5150746f6653726c4e534170493539524737453835645546756d6a52307252506e555558553242335671374a3268633033526150384173795236795a35536b4b6c4a2b5a70735a4d7046495343385a4e4a45616d5a436f62465352624f5559392b75673544496c6356724a424c4f55334c7a636e4c2b476451665a56536379516144766238674e426a422b52536451316c41445836756970347836415474356c446f44663374587344525a546a726430334b56544f2f74496536645046422b776166473949734e556d6973714e4336716e697264415a753976376e33664d31735333422b78584f4a68376d6d6a36344148744e3568596b453735744a6353464959704d31395939306b5a7a56757136734c6b6f5a7255364e446f2b454c4e5570576c5837553949716575574641702b4941502f63695266536c7359776a373979764d7a615a55412f5763704a763632654f647a2b4d30707441556462775657462b726e4d5558457839482b67594b53486444555a514677774d7a2b53726f72504a624833525772506c7a714738372b79634c5937766c2b79744b5273543777414f6d484f45474e6a5a6172777630475272716b64374b364a416d6d74525a4a3165716d31466845744e67306c484c6f636d5754586b46507350336b7431503941385a4141716b786f5533545559394c42496a437976743154414c503739747a383373724e67754f6e6f65636e424e55395a6b6b6963357069474b766f552f583072374776363473332b50314a797179417943366e4c666f386153395072706150735a4e79445a503747676c4c6943756b67614b516264556a6b5571624e436a674d6c7975446d614d614e32643659342f70616566464c446d716155483330776a772b6b6f2f64704b506e3763357869426d31597a535a622f6c55665850696c713766794369695076452f7833612b57634662632b656965635538353369556d7938545950485674436f42515361504c6c7a7859344d6d6d6863437530492b7756467631725658353841536655625638694934576d62724f67466c5145416537336749455530617451326944737772706b7954545a64636e782b3036756639577669484c64384d53666d7a612b54674452616b2b4230334f6f643758547943765a614a6c386b316535382b672b66462f6a5062566f556d316c7349786444545754477a7263333674464439435834416350754c333945414a494d715961656833626c632b616a6b75317a53656f39426f4b704c546f6964784a756e3676465575574e334f7353704c6b6b464a396b464a38343447344c4a33797a3364376e7a386a4448666a70356a74366c57653335363876566255746b3862696e6f597366644a374464716d4b707753336a464172546a57736864546f38765545556e5137576e676b6d78634b7954584c626e304a366d6968395357567272634d68754f7a326d484f6b4b65737a48536341336c577a504e6476316b514a6b74343241494d713369355a6253793549496168697978583758747a326434416c387a41732b7958525549413447736a777a6b546f6e447035767a386d43314c727635423161566143334b4f615a786e5551776b786a2f414a5033544f667642496471647a2b676c666a2b612f56714757574e6c7138792f77426c7738586f504f4a624e41666956744b6f2f583133475172423347415361514e6e6672744d6b746e544f4f4d6a66507833303338596e68517858795546324b506a64465456693678375a6f567359437a46332b787935484750542f54672b353050337a39695152534e305774627331784831375552325a36784673637533646a63454e76303638556542646a537166562f5a3854647a70644f554b5a32554f615577695368497846667939396e656e4f48424c3370417636706e745769334c3937666d372f415079372b47346175656f2b4634523431666b35336a2f6c4f6c335668644f6a52546c4b6a356e7a434536544c342b444b30453642574447644833444d75384e684731534f394562786e2b4c312b6e5a2f774448634b63656d595643764c6a6f436566496f6246725a53594e494b6b5a3038374f39504f4250797564794f675444673046455258386e4e767a6f3977534d583942353279613541417036456d65585877705230334e39756375715354574264455a4c4b4d5239365363306e41316e454e5448522f51596f594b3638706b5633776a334c4f39567345325939635479354f62365a7558776a5354792b4d7144443348384975615073396f72702f6f4779756d52555938387350764b46664553554f52476e6948304f756f6c2b424f703863626e4c786175414c425071546361652f396377456778436c357470686432683063325a53796d466576526d396e676b716f49427a4d78772b37513938634e444b6a5877754b6534474f456e4e466f41796e443431424f4f624e632f344b4e574a2f596b692b6852764b535448366e6f73553763537461516f4c726e65786f4e4e6f664533724442704e5479484d727a4f636f686f3055495168446d33583255686e5754386b547a375243632b616157554d43593373442f732f7234696e426e4f7a6e6a6b4f6e6335584746446b6171683742666c724e6d632b5359555472464f66464c532b6f7830766d634b7a367051425a384b2f6752785247517a77485759757a4c6d564f3669676770585a51702f5236584a344f5354696f6a3249666a597a536f7a786852387279346179535138525930477036444e307a5a6d3531375a484e706c462b6c4e7761714335792f6c41745a6e3463536665353154692b4e64503356416170736f656838314a69307762415558387367716c3830722b4c6f684461506e79565130786246476b697331546b5970694568543036466f70464c666b6f46705051354a413548506d55744c64455a575178747a77564e64666b52506539754c6b78714632716a514c354b71317a7a463335656c3878774254373348502f51495349796d547a3952666d30784f4868315736693533693956327256526c33614a4b4c37654c6e767a32526361544f712f5472505a38514f36626941706f5657544b552f326c7838377046337978364a355964572b2f515a4f4f637a347148796a526f52746d37616f7078596631434f68354a2b6d49434e4451344e4754776e3334576363326251552f73583968557a64437a3939304e655a4275544b314e574b755a704e5358376d4e77787034766f67424336674a662b774a3931313644654d317047575a375937636e564f6a7367353164456656374650624d754d684c3431554e5548456b304f4a5353675939434c376c464c53703738364c5877414d7a4e4a6b504b4a3954756b2f5238617a6948327775645a6e757035325145753554302b4b4435312f734d593639426e764d36714e5536637232693154305637446770643742434448477669566a794d714465496937322f635437464754542b3241793573397a616561636652554f503346657665613159467a6d57544d514a2b58564239566a374a57754a664263482f7277664b70767a796e77425265554a7a2b69324b76537a7570595058784a306670714f6e2b5968624374714e536750634c58574d537a6933695a39534274443678745351523361386a793572657a7361776634724d324c74424c366444756534797962745475743250586a617638416b4b534631484674662f334a314a2b5033455172376174643379675275377957334b736e3755515436335a4870653076347a503132637a3558533747626e6f37633864704c585a2b5739766674646b662f695a67762f564f363233647a5a786b527546576c6f4765664c6635444135435a73374f596e783848366b304f687451314f7074576d4e4536523453592f6b4b6d4a5376752f4c2f414946317459305776325a4537796646664865314864564341366e316c7a56583577366c314d4c4d336d734d476c51747161616f364f756e536f3373642b6d2f513479656e337059332b713274614a384133566a6c6e3950516c44744d316b636d742f4d77784630624a674b714966346f554c512f5073593670532f5a3849646164387766632b49326442377a7944594b56684f706d664946722b646b37624f326a757055724d5372513078724f71787a4153523656555945706b365a796d6763436a4d45554765676b326442504a524b3465793172305679734f6152613376795832624d667930387a6b737a6134366b36576749573030632f626c7034564c556848375135786d57732f5165655538465867374d543976415a5065756c6271596b343279577633763131616c553637457237796468652b79386f7a45766d44326736526b614e414768515755416d69504a51517530744a576374696355476e6c77465570383655366c54676c585368512f56732b56564369634d79774b575a6867704d45346f347175304b61672b7134476d704e314768566e76415968353757726f2b7573484c574e4b32736d61786656696167624d6a512f4f516d5a7474634f74316e367a7866667177304d483432783679746d2f486279354c4b472f59614e6b344d554634473666732f76537133782f583951625a4a544f686638594d5577472b6a6b3054346e647965664e30566164495a733978766c53706a4c2f396951366f31416c786e3048457336683875782b745246662f4143566e553030774a566c475537345a4a304b4b67563746724b4f39484265765059662b354a757455667938574441462f7744557a45784d7743694b46387347546c45665a5676703451316d36564b586e4e354731314c5a51583876794e5a5a4e776e2b333433676d5071752b7a326f4741395933686759646d685231434739305a7a424d524e6d6f393259354e5479465a30547258384b626d6b6155384d7964772f72787370364752644a4935537236426a667975366531635565724e4a394e3259796d334b792f77422f49706349724b4e5a483844665a52422b2f77445539677359474a5255484f4e6269736e63524b7a3261504b47424a734e3064675955745479524b6a6e675a4c6d316356574b33473651476d7a6f4f2f3030422b46556d585772636f4c73543371696b586738546e5a663248324e6d7a323248594354344970596e55436834664b4d5947672f655047632b734231526e654452376e5573324f43484453555079725642577a4761374e7175476a3377357931773044527a2f7548505474384637774d4b46474131736d5975376b7430575838457244344856745a37587030324448714a2f6a3561472f3956656136696632415a2f386361347a3637345461433961506c78746274552f614b7142644f372b5348716e504d686f69664255364a592f64536c4d377052544d487842332f56395946684f6c6750557474736752486f53684b466d546e6e5455464e4b667648523146585839356378585952426c466e6632444b564f4947705977554e496a415051464675764f4c56785258727030454354357952395473304c6d5653536f6d315749586e6c6933584f46774137356d75476232657a76663641335a6e537a6b635a302f587a3635382b4761665a70577566507836464f7a354c42686f4473342b77644d6834696a34662f70527747665667373241677541364f2f44644d636e667255544435453253616f2b4b44746830486f37725a535954472f38415636377647476647324c2b383076614a7542647157526149707a4b346d725242585558416e346454644757656c6a6d3145564c5572735573726a4a6766392f6f48377147506e4c332f7742412f44355652685a4b5575754769633261717948366b41546f683678343231454c4f4a47356b72632f39423862752b796153666954424b6a2f414b415479726d7a4d6b374b5061694e3179754f7a7671557a4a30376c314c4f4e2b626e4c346b556c504c51612b55392b7941706e37593776666d34514f63796c565174626d55636159466c5053787568716469726148484c44324447557266734e584c37516f6537356a5a4d6f7a48367a52556f4d68496f61695a795a7961542b767331356b707849644b50375a79336c41357a6d63534c53515239443268787a706e653850323150325166356948755571586c4b6b38582b783050684b736b74727437525856574d6e666c42784e72586136512b2f444f494f6e622b6a397133504242334146314b2f705548656330694b5963757069416f4a7a54344a334c586d7259354e4331756d4c6f4b41505a4d77472b347a4869512f49693558696c713672644b4c75673643624d2b4231484a473570535431636e544f4e5273684645712f38506b655945642f524f6c33762b756b48566d5975634e6847696447653059634558757a74595771365059547969667071703976475a7645796a326e68733935686d704e58796d416b38487576644d737943334e346e4a2b7653326c515841726930576f486f7049782b71557350666a75345851476872466672697853544459414e4b435733372b6e384e576c554f572f77446b526e7a356a7a3649665a38306b794f665445495a547164714f2f324b2f77415163306d697a6e3233634450356b3249646d53664e63546b6344556b3136435962345a5557532f75712b6d63666863794f585037316f6732676750334a2f774134774763506d79445a6f4b356d434a3233714b74393435714b45614e464b352b5764555532622b7855524374676a316e376136443368387955436c514c5a796f38326c466d4d73627554756c745a32796e2b4d3973787758547662502b3556385446375a794c695875414a4b49786b4e715145306d4432784e4b59334d6f3670314e44304d3058506f4e434346366c756d694b644f5758593264534f53684e6e424d452f494530783836727673416433566368474e79367033465676493370305a355730713636704e44545772717a42535459796a6e55755a523870336e39644c457966522f6f4447666b3063706934687a754b366c42504f756d2f6f4d4e6274623469706f564f3065517157756466653962385245426d6c77754a77694565666c50664b3151305631577037573067506e7738694c546c34686a70615675724850704b556379635a6b304f3644556b426c774452422f514a4349646c542f4778305a557372344e6f6b326f5833764b30784a5578797567743333426250776a53786c62552b344449524c39416c495074596452764b77346d424553617953387542624d4666495732524d4f4f5143503366394d556b2f334d41434c336761652f345571416450646e364c50395a6e7a5452324f427036517157614e63383268656e6c3056614766535472414b4a4c61426367774f342b742f326b526b6b4363383739486b724b6a565652794f68524e6c6246796153364274434a644264764c4767507953542f56456a4165394c4c2f5642636c2b54334176316c6165554e564e6d7a7974725a6d6650776f32613451355654756b6773684536546c39395563765252483755735a6d67414172355a313942744a4f6c43746c6d717731754e2b70416970714f4a7366306445767475737175576b686a6c4a63334f6b5351465a3242776b752f616c6744647a49392b756a4d556d584e59446b652b6761446f746e666e5072716d59324a767457496c70584530334c467a564d3250684d306c3159673665514331567755783161304e3931543031386859557439634e4d784238726a726959687a75547a736a2b46504630634c326577506c4267414a38434a62546b7367525a513565746f386c7854726975764b62513678383436794f71545864336957544d625977464f455234414e6f6c3937506c6d654776486e57512f62442b49475956627463724a38376b466e63436a51652f556c766e664e6f6f30706b766f4a59377a757457676c4a49324377584331505a39596d4b7845544f4a67586a6c666a703630466c49793650484d50524146356d786d636832344a666f365a367162324a4f75465941784d692f6b4652434451487379512b4d434d4f4a7037796e68483245623276786e3966396d4474422b48344364484a5a4d4d614a66496c35315564495a424830357276716b54745265686f575249413170427948415954746d2b46503841566f7653506a2f6d436d642b5076715a6d707936357643425055692f6c6172704c6461577a4e664a7078446f615330686d366c51523246724a574c654f5954756678534754755362666b437333725078346a3134435038416a333432656f57646472374f6c3436327659732b315252636749656c52453754334763746e76715a4f4d7479386e533068496855355032337a473161314b494274377976534936443575595731696e2f414278736b436250634c584a564c453775524e49533166545655657753787369745977666c5a665173754a613573507636524845544e70694a6e4d5349646f747151707a753647686c352b793963757058724e6c6930566c627556646a6e65726c41716f6a48506c30756e59516c515338336c3375556271492f366e386e332b346a7574355a4c505250704869565436463163614e445330316a6e7a6a6e747a714e666c68637935797158557a57464c75384d675a535543576656543959676c74737234434a6149755a6256427244754c51497a4c534f7a35436e4f47744c7554727078626e4248543874464a3658775872643833764f722f685a2f44654257442b75786e32683864386179356f616a304b386e6e6c4663744d655768325830734b485142793537485a382f4e7158514b696d7564765845427a43424c613470713535596d3043615a3369456559383954597931372b7151367a654768632b7858435a7a4c6b75666e716d2b4535644c6c45573131724d374f57726f32706f5945796d364c66366a64453849355a2b514e5a6c58385a475931556430714e456331316c646a42684c503938656b4e4b6232582f4f6e506e546e35624358376864372f6f634f6b4f7a394f3155616e634172615a755562586b506b737338734c755932766e35716b3479616d364865786f746c314571636961356a61707934537959644254544f464c2f77444b6d5a64756e4c587241694d304869615837466438417a593745536147674e736558343954396d4733444e47563778497536476f587961334870363979524b6162334d5035503354594272394b4b424e2f38582f4f55616b336163376d66596e4e79466c62765661556c4f316245736f61324f3533374531644530343861374b4b6748455a6837416b6a7342727250737561486a396631354d70303044777a38324f717252537649645a737659516145774d6e32487a636e447448653553766c4e4b3349536464396645534b4f5448687570366477597a74447438357444506e6a694c4e306f76494b3643306133797652565569786479577539702f666e7a534954716348492b5745306c30677156544244517a4a7a454e6864575136672f666c3161565a726b444448755a2f7475477565687a7673492b525457704d353257554348757a3933356a436a69434245433355324847694f454a386a736448736c52577874374f33584c625439726a744262574e43734137326b6f7961436b685947594635576764307a3763746c51615a54547835716f396a53594d382b6864644b7a557372325069586c777a33456161445a4f312f65787966396d6a32685933544d31375535794a374e6c4b6b475772796148656b556d4d5578737a33385a5a2b39626f617443715245356b412f747733465143304b4e523856772f6b4531482f41466d424f654d48587373524b36496c72564b6f554f646a71426444324a306861312b67585745797a357550764b646c6751566662304b426e465263412f4238514c6a594d557336355a6f756d2f4f356e36484c494243755471712f6e39354c6c55356a507153304f624d783059695a4770706c53444461567a2b4d762b7a4a4e2b716e2f472b614e556f316462766643366c42755443594f4a65774f432b6239464d46453969754d6b5a4831667374547451475178554e634b465530785335394d6e5359786c417a734c4c556c4f4b6c7a44392f457237386d77377367696c7654672b7137745047685444554d717549736f6e655466356232632b6c525433376d5a784d362b5137704137506957564f4c4f6c63387047456e6143363079436871536a41465736563837663042584a5466457a6e615537395769656a564961647776336653634b724c5a787a32494a5157526f736f2b536b503841635a392b4c68787a4b425371562b314965784c7154697641483579755a3231564e5a6861534e5454582f485753734c5462546a6b367333574f6f30724a6571463145763145742b4a7a542f58527143744f59517a486548526e5352324f594e6b5557654d6e61774c6c62536c48506179686164424d4a7a4a57526966764c6d6f68566e54642f5152615573325a7577366f52794b55394b65614f68695170354969616357535535764865796a53344246495a396b4d707757515049497a6e5659424f6c6935486f5a334c695465464d433834506e585574394d35645846396c4c42413346783061515a4f504b456d4a7474436b58556e52774d7338623745786a31722f70636a6f7973736758706f734544656e4d7350744771504b63396746526939416b6b377464435a4b446543444d6e547872506d46483654786b6379702f633277633248376a4133465a38364a467a7167622b6d4e6e55354c75546a4b3734512b785639774a666d464d386157317749667677702b5a7579714851587039702b4c5065715348526763734b614d4c4e53762b556b6f4a5a414a625475394b786f69667a41424f6d43546c4e716471413879644f3439484f532f6d71716349344e4b767371526e36726b386275552f647772356566782b66565a6f4d3678796a3537496152705a536674704e625a627748334a6f546e736c7164625854572f47546c765270577374736e7a313152304c4e6d66487346334d756d30435367574f6c55395458453446412f6e774b583755695652304966795646457376783173735a4c57306f61655456665563612f705a2b32747661457a76594367486843507a65302b3850354f66425553614c576479664c704b5a566e4a744e4e4855746a625262435543693635544c315566616f49536e3175745462384c6750354750446e66636b416a6e6b65664c6d2b4e306f7068682b4c376b7779374f744e54627a7270363364684b73436b636b6b384b7571745375485a2b755766617066376b7a312f314d5469596b55416a5030374d396234757a62466f5351717a355a6b4579373637305a61584b7974444d486a5956396c54715a2f324748453661615932587942397856416133374d6954797a312b50644c706745517258463251767258672b636850343947556b71792b4c64474f6c4e58376c7638417668315761796c494a6a2b71364f7662387342376b5a36593954357332432b56636a4935704771397079344e31492f7054774654676c5851517a566d747166636f7659526766474d4c746567744c4c79566f4e4a6b533161743130755755785a5a734361355052306e33504e484666586e66594a64524e3775544a623731385071514e302b457a4d7a6d5130744257664e4b74306f4c33382f747135706e306163636431304d6b74554138676d305065784b50354b66683954784a6e2f482f5549532b657330514b373468784855533243632b726664535535756531484f52685a6f59467036484c6b6d36696e5058386a784c6f41717150674c6d643833316e684a736e3745432f3436756b394c54746e2f5a3054645970533878554c74547645634b686a6d4d3747376158386a54397a767673537267454c546d6e6a32764d53487133424464522f4b4c6d78376446316a76754d584b6745444c5139484a6c767473625051554e6830423255585845546a57357a61784868774944354f2f66566d736e6952734e4f66512b50514f6461376d61647761552f74552b476f5a617056686e735a386953614a732b63553044543969543332727434376858456f5a3739543741534e7a39465956423830677a2f7245567a4f5a4a335574386b3677443535452f774230496376704a54676e7054396d655439476d62543450702b6769444e4a7435544846464e527a4b71624c512b4855725a4a6f453432535a39423649324e6a47716e504b57704b4866457a37654f4b62765a49354e703246692b4e6551787375647a517a6e767a354b4a3331307172644c334d6769656c59596c554b4c695852705434374e52626e74366c376c4a564d347870344d383962396d52616b62465651524a4a465164526a676f76675552615a52307658544970724f564c5357746c725a4362756f4d48452b3334682f5475534557496a586b4b7269666e706c574d55376d79726d316178544a61695362735a466b2f566953674346756652354d564b41594467524135765464542b35673642486c5a4b396736772b7052576f4a56396937526f366f3335505578365757463477495a32654e61796c306963626c2f384146477239626a4866435a2f316e753238754d34446d697a4f69586d64515363396c6931557035787554713969533965664f2b62467a557336623458455446424e3966345a374d4d71445162756e584e6f4a564a6f7361374435306245717a78584278614d466f3150762b4a49333376552b575249797154566f432f6e65542b2f6c6a50634c754f2f36324f79336743477246536c55716f706464646a78686d2b67374f344534424f75474b367a572f6a476458524f75617a32764233777941426b43653862374b4574397645527678784a446d3636376a35472b65696735496f3878614f6769304b475777547755355955466d382b35516c52647072424c6449324730505a7778747164776e675a7a6c31574d7647574b6e552f685a6972783471366d527a4f73337130316a71573066414b2f7230657a2f4147502b57514a766d535456732b502b737756707456644c7146796951337142614932394f646232314f514b746e56497975447361687a2f414a4269635441576d59365a44396e3755686f497a2f496d3267726b7a596d667a5044476557594271435247626f586157766c5a456e534c6a486463354c50304a384a70786d3334327a657a3367747a723756746c44324d6746302b616259574c79516b506c3633664e6f766c6c37332b4e6b734c51346f67446a4b352f643862444e37423648302b5a71467257694e705a504439756a64586666465a316d69687a6b35356d32483945504b4c4b4435316774424c61574e5a664d7151326945683862506e487357696d716f6b554e4a4765396b36704a57674d666b4e724e6674335234793557737477316357714d2f59633572554d66556b6b4a68585242552b715144527941303577535567315646624e724f734d564a6d59366e7173335734737170775033745a574879754d61453864522f516664546d703235586330754d6d664d56706d77773757527541716f3465615a702b5161415965385a636e5035462f54455a752b39774a6147535a7466732b5a304c37307772366a55317039527a69306a746948506f702f5a7a776b784e6e5545744a635830356c782f7054564b722f41455039416b6d545053642f6161656c4f75746755586f65324c537871394e3333766b5565573455772f4b4c726c72542b6b6c38626b41376a477059426737705a477a534553547978585a51554758705351746c6c70622f4141626145676e4d2f774171456a6c2f36694834566745307a6c764d41534c4a77636e64396f4c77642f47553636732b7163454271484d6230575736466d627a4e58546f6b715768766268367379643172516d57662f5941506a41474b5539355870537971304c484573717849332f346435396c596c385045666f3534335844474970725438682f785667536348324a5453416254354e326f615931616b71382b516f614478316357525656732f564c6450545349392b5a61724e4a4a3939356e7a33387057616d41446d416f2b742f656a4579634f7163776638415535452f4a3536696a314c33727a45314d4d4844324953725a786a526e6f62582b7638415039463777456262316842526e63626551643156386d363155357830355564553844477a79523431445a336661315263596a484e38394c667338465a6a3778434865545a6372474a637055384b706f746b6e4d657445705a497a4e715972335475386656306852594d6f4b57624b7849724854444d4148385a414d695a6e2f4370594a4b6a744b4a73312b6e39654c7843755367356f7a7a38774a6f684131735334695858785a556643334b544f34416739376b41376b6d47624b6d31672b62517a455a444d746f36692f6353626835385a4e7a653431446e446f2f63576d72766543594c4c33437634484e564771636363426c6e654e76564f5a4b735a516d6a58736e792f3346564d6c4f664a7a61794d75774a73324f56354b637a6a4571393733546946344550792f4c387051466d5864546c357a48386d7351677442337964374b454b34495073536a437658514d6e32702f6831692b506f38535978754d7150736e595a4345642b70755536374c50685970325a42336830364c7274533457793661324a7252503841584d4a624f527046443241596a59334551332f536c537546626c322f6d48337a2f4c65314f5831455936506262685637753556315957326a48644c6a425470696c66636d582b57775a77594578634f5a5a736f555050325a7a4b323235345a794538544d50557a6e2b787a5a6f4e43612b6c746b48493264312f4a737a6f376e38764a6c737a506637553538346a2f306d4e6f34476158762b64726a664c55664e386c79513458524755554e79394b32676e4d324b6c63597234485a46566e4431446e4a676c715374355134684d2b5466443951454d6a5546716471413250457a684456762b4e4c37454e696963756655386159773449335439756651756a4961675a344761315154724476783954385536456b6170763033323852566d336e35774e7130574b6a5a6670344d554d65665243692b7156707a786f74666d763750324f4734595932765933764a6e366e5575397350793969622f5777527a2f45304d7958616e44786361746235377572666b765442322f497a457a7064703664397a797a39442b537a302b784d6151734f744d79543777474c616d6b32784f4f3776417a7a764175356a7362646f6138644135437a6a4c756c724c7930324379654d704c4a396d682f774162484d6f7955754578636c52306a327a3454474e4e73316d4a36634d43742f4459494648565433505244764d31597450354c32506d304e4564614c4a304a2b3631336b4e44487530506a2b46533157766d4d772f597a5042706d4c7243436576744b73727863456656386b5a797654624f714649516d686962682b6b795478374b544c437465547a362b6479592b634a5432356f52764a6e7951702f71314f3141692f674f556e4638475757686a4e336a3572744d3252617a304333505a424f6954514a3163635a56445a6c756f643278366b4f6b4a744e5076544d566f663155412f566c4d4f5a6a2b4d38796e364e4575694a7479596d7958744f362f6a4a62615835316c5679506b753655616132756b52647758527a74366c3146535a7a6d7657506d476e6a634744322b63616d7572732b62584a336b4a356631654248506d5336303745514f647962745661706667364a2f556a5776346b706a4b554c684f42726a35564e446e616650484e495a2f4a526d387031363875616f38692f6966726678394f5039765747342f72726d71306e65317175742b61652b74516839696b666832727835752b51354754314238433858543564346c35486f7859684641582f6a7371753665535758706f546e5a75676a504971666a314a5a30352f41495668384c45726b6f2b484c7358307138737a746d6f3245394a507936496d636839527647476550362b764830423868796170716646645a54796e6c3151652f4d5979784e4562557973633171306c4a54376b3834637266333274745050434f4d44626278507933782f79584f4f6a473066356f73704f5a725a6563643552515a34304b79303332543843376c46744334526f6372745059654f62704842774a6e4f637336546e7536695733554a5734527471553672374172474a7976342f34386e4a5a5159356d585a4c63462b65764f48555a4d7a76426f55674a6e6b4d2f30656c494d685a644f6b6e6f33795136527248495344337a5a3666346a5064323235517652687072645038417a484579754b676d39396e454a4c4b35384b58664741457a737174374d777066485175356e7a304944562b3971364b6a466b45395645712f6238586c526473306c6e782f386e4c37624c7a5577474d6f416e4165795a724e4a7637347a756338704e666d6947687133534d466a362f33395452546d6b6c32705a505173763062484a726d2b7a544134564a2b45424159374564426e7a6f61374e59714e4c3536396f3664656874734d79497462536c3063616f524557663958442b736c4245732b587467634c515936697650336e6b43536235367730557a6157564f4d764f496a616d706c317347692f61716f7047584c48334b686a554e30616e494949534e762b6a37496838497a61444d412f6a4a574d6161577a596a545063695250507051785177464f7a52764b4f4a53526c494a2f6a736d5a31427058392f71774e544a4441512b4e35585a5a70763070327975374c735a4f5672545031494a6d317a2f5470762b504c315a30392f6856665847553246587967524179414f6745667867767a6368324d73526730366446764d31634139752b646d76705a78354574476e6f5857794d627830632f32755730392b524d58334e4c3947482b4e4862632b783535444c54757a6c372f584e474651736d7a30514870712b3049646e356b38304f4b6e3257643437532b6e4f785845395837565678736134316f53346c323574763567532f6c6561776732673276546b7a2f4e456d7575664e6c565a4779374c4579305a636c302b786c6f716e71454b5159333746466c43506b664d376b38396739695252546e617556326a756271557775776d4e5075456f4466583235316c5838564c47336b45744d645761527549515632724e4c36774d544f734c772b4c75754e615271486d613442346177685a6e6153394b3273693747366568696e4b304571714c336e387270357866537a324a6d7257624667556d305a4c6d4f6b3562394e48637336487a726c4279636f68535050354175346242576d32534e33744352504f6e634e4b7744692b526b74334f4767624c3467652b56736d66377675314c69565644526e5068477a4652424878746336564338763865737134355a6e4f6e332b7a3453576f4f6750412b363236596a357861725654646c31305468506c5035733574536f70366135724a30446f6644724d464b70536437796d7144397453306e2f317a67687a6738706d6f696d424f664d46774a6d5a484a6e727975324f46544d7848365a79476775445055357352697758304f2b63506d644b615a516b73323957334a61624e5676497461733133615544714c387a5048346b307735503238794d6d52393534374f7a354f4a6368564e6476662b31496b4242514f6635742f4d6137576f7a6c47727178304238666e6a687a336976535a4d6152766a345238586f664d7879474375564a30397061496d4a45664f5469633437774a337461314e567463733856487a7030425a484e565535464f354e5958314a6d57432f72374750475832394470716e2b414b2f6b393038394a585147656c30377576597331665a6b304d793132337853477a2f4b69787a32664b636b674e557470586a474b4f4251766b76523673366668525377454e6371417451565a4479674d396c374c70614c4d39767955745871466d575a566271516c57363530617052706c50352f68346731746458316b77432f76574b367a6e6457716863797159453663714e75474e73547a632f2b526c734b673261306f366d573062567070736438645032567445312b783175547a2b77774150676f6b6c56717179335161715a637a5371764c6d68504f4655616d79506a646f48496b696e3050686d5161686158764175696e333055736a6a32764d5063567568754c304370427576646d396d5a424d634769696d685169673074667055776d663031477a39746e522f75375a484e775a7a563748716e6c6a38302f594c7074717a536e7a3452496447584a5371624b4e637a6f6c4d4469495756543272756f4b72516e4b474653542b63665a2f486b32483459316d686c514d62324368764f526a316c5175306e7949304a2b624d55456337393633716573676c55646e30686464396a684857547575537a6c4a7064313141496e66505644415542637746305738794f665a465a39793832616637704b315658592f564c6836513534782f726a67585567557339782f7459322b4c3865413374586e3970506a48777a71512f4d356d74304535314d4b6d2f64307165676358426d2b486e644261322f5a584f3333506358377a5369397a5132456f72786b6e52377539773438696b2b6355576a6c443175544b37452f6b3261515a3832744d72355062504a4f315074643762457036744877324e42584f5079335a58376f704372506b6d34456933376f5273707174317261423738386a575764374c5970596b30474a4e70666f2f6c65636946544d414747685a5376766574343750682b396f424a596e524f724f61384969746f726770516d6a6d57376d6c554c7a2b7633356a4a7234312f4b34774351425430766f4369334f666555586a716167554d6d6852505336716c6365336343327078563363456954347941316d30676b2b645042462f41705573435472616a72696b7a373770564d4557503579784e537035797a36724d334d675a475378594c7048704a5343616e2f4149392f2b5a7a4e62377753474f7132683131626263796e6c747364334c51787147614471353535575479515a55767852334773616c39696c3662717742494e3650462b78775a6146484c557570507430612b5473536e47514d74414a377146394e515a75682f4d54636a59744b4b4f304571684c356e61564472654a6a2f3047446a744249736d7277343467666f7a7a544f696f56546e6856585232556d716b6f6930686d736331302b4447546c4768314c2f414e633476347a2f414e6338657a3568746e75524139464b4e78396d705272762f6a2b54324364414a5441566e3170307754767035635245584b6f304f50326651723448566a71436b49447770624f396f4f4b4257676e75426e5453717a7355564f666c6d6971724b6f6b71716c6b524b784e52434d704d6d45674e7241367078704c6c59505670374c4c324d5a51344b6d6330375a7372354f6c6d5339746e654357324d686f7053796a357374672f475846556a2f6a306e5445763767664b58314232703865505a39353034766b4a564e584c5643704c677371716e7a6b6d6e486e474f36447650386a6452516e2f414b30316e32423641443971547563743467643361746e527a3155467576304a6254354b6e4734423941644e446d475a4d6836796747436b32355344424b685948324c55375541617031774a4c7376386843585a5a357372354c45364f74486f4c4f377954577a632b57785078532f3968626b3057736f61636171534237654e45446d714e6b5048764a347471663841386170484c546432756d6335783142612f5965646b354b64313173345664325034314a445150666c4d305877303944676d4352437a4d426d6c67326b71696447746d3662624a4179714f4d793631646d612b4f642b61784d7448536336455a30436b6a57784b71584451342b44542b6f6d4d784d52336956627239454a38702f497330423668717048452f2b466a57497843475a4865576855432f6b5336684a4b57414f636849653045392f5a30766975336a744775336c4b57506a4b51736143686448314a75563350706c6650785843797a724e6b3178646c2b5a704a6d486e4b572f704b666d5549422f754b77687475563439727936636163394e64476932644f547764423076574f37387836456b724a6f66636f5271324b6f5455533063492f654b3531723662557a457a4853634369743730737953504f4d76413942736a62736d4c4c7a2b427151636d626d5a4e6c464f7570314f61625675587161452f4461726e3379463355765934503935336933544e76734b4a312f78377a5a5732706a394f2b543548467a68312b6672464a786d334c505a4d766d5a7663386449486531656f7a6e6136506d6f726b5a57376b4e4d7a76665470762f4e3978572f6c2f343962484f4e367277544f334d7861704c577548724e5a5631664d2b6c44394a55316b506575306958554c487952775553704b39395073433562794f4b336a385749464c61766f48736a6263453370436d4e6d6549727948356d3152703055794a5a52546f3862665859344c746d574f474d67583835432b534f6c587968616b352f36744635365262395168662b4b576854526f506c394a654b725870586f722f6a2f494e2b3256453273685a5135466d6946534a745a5a5a6570506378362b434555634836626f6a77326851393550346f2b776950384139614636684e776b766f394c7674385668516c6363336e46614962383947674c745478712f4c61776558455631476e525a4b4c754e537a56426170615a5763534e7665563364726c2b6744332f687a355a54343971335039455049744f734b4a4d6c654b72797279522b6b664d7a7961796b7164532f5073456c323665593663626834434c5073472f7473333643624e4b3376613537583147422f6a5a353346705758572b69586b4e424c707a2f486c5244352f35446d354c632b474451346c4f69396d7952727931366c6d784e372f414b366159316732644a306675546e593339322f2f622b6f416f2f445879717650756e37364c36484c6647347575784c452b624f7530744347477958573231364b527359784c434b67703130447879537350684f656c78793964507661353758314151667849387075304b4d74506f46745261744e477535553272356e6f374742414539657068652b5a726e4453544b475a74427a3856315279316d752b4f72346b396e6250764b7838574162792f786a3830556d765435364766794f773558565076772f4f72384c6c615a324453516147656533546155564b3967654936556c445a336579322b6637595578745465766a675a65532f69526f6a63797050704135524c446949413176565856374c6e636d6e57795754486d7a647a3754714565514d6a56336a432b4662387152533141724e544e5a45616e447452507a714853667845386e30763544787448342f777253314f7343744354314b386b3866692b786f39327162736f657978304b6c73424f6c724f576c496b644a6d6335753539652b747a336e666d50384154503841514330666874357a7a4b665242364c50304c6c797a6f69784e62314d3868724c7163747178714e52736f4e316d703163756c5144535934442b5a7054554d704653457665636531482b6e6745394c384f504c386369625036457338764b2b65624a54636e7a667a63575464434f7771616333486262516e536c4a6d6c70574f6568744430726a644d414957677861393545523274736758482b4966714b684630627678385a464638716d4c754c7a54614e62377366526345304e666a466e6c4866765638736c476b654753564e3071366576426338394d374a393758386633424e50347465724754626d30522f6a314978442f42732f4b6f4e506c766e65316a5566616a73544d622f48354e68334d386d3044636a694f645748766458576379653934597837796e346f45636b2f47583167767a354e507634396e4848627058304d64762b55423266616871446143426e384d757a4f4368792f49702b31486c7259555a7a703459494e79674a732b39722b50376868762f41497a6575706841452f34395938765a39573953746e4f3837315a6b5657664d7a74633349493044536d64333868522b6e3266576e6e444b3637536d624d3570416a5572335746476562666a3136716550497a356c2b68466e6b5775396d35566462503562354f756552484877364b6f366554793138685a51512b5466782f756159642b323177645650326b6d57693854317667527a4339507655797774567866696a757959775857575679546570336c664c383030364d385569706448787265364a5472304d2b65696879482f43594a4c376b39424f437575303372306e557a39426e702b41656f756769577a642f4748796774416f7071346d2b506573506c2b5a73762b7a562f4d5a6c6b4e4647704f6d44516c634f344f624f774b6750332f617053354d3146645374712f446637435349394e50557279362f4f6b6e2f41424775626c35465263524d4872527653523136576e7031747467337267625751324f586b30636b366c546b71764e5273544d4353366d4976534f6c2f73437333672f71546147635a666958354d366c52756d53466671337944466166506b386e784c494e43667941364673546b346179716c7435384645396a4a2b66576d744d364b5a722f3166396f5550306b39524e66782f4d4b62384a7461746c47557842782b55657474366b34794c662f523051344b636a7961647341785744746344396f735a52527438346b71576d4a706e64544f666563504461496f50676672444d703657666868665479766552334e516a312f444e2f613957526c6d4e7a4e3069387457744b586c714d4b74756a6e446c67446a446f514f6f4c6a726236666a6a2f542f414d435134587050357a6f5a365a39583847664b6452646f79356d7374667264466e6353724e356f5636564f4a73322b51546c6e2b7770597a346e75696650725457486155333753436f33342f6638412b30475a2f534c7a6c7654726f2f44494b45385a32666171702f494c583261395a705a7a7357326d695232304d634c45455475396443324e334641456e574f582b6a5a584e663841712f3752396c39422f4a4335704e302f77797a364e53764c6e5667797639654b357437584b4674545a6e36444e7a797770732f78397a6f382b546945796e5239576e2f74742f667a544d74762f77446d2f77426f663766705375694b69654c384c643378384a59655477654f7a2f6b4a56546c5770324d78326a6131583139687558477474483873612b4c7237444f763451346b65742f367365386e2f717a2f414b5944664b394e664c776a4643667851382f677450713836642b4e363261524a746a3174417649632b6652306e6233554c596d787568793751347559454c734150305230784b2f715a7445664857662b304358656d487143797a53596a38565056584c62577570452f6b562f72746f4e4e2b50426c716f326d46342b33516e7a35356670734c73385a783934636a6f43544d367454696f6e4d663953763841702f35423558703536687936466d586b2f6839366f537a384e504e50346657576c48337266484c4978706f38636c5656324a6568784d646b783233502b4851544d496d414d714d696a4d642b70582b516a666b667070756b6276346a3856665574326b6e544b4f797276726b7a54642f49305a37504870555556526a382f32733653346a57584565377450364a7a71666937776d593739537638674876384c38306e446a5950784a3958334239753375686c7239656452654b47426c624172702b396d5570695536696f70304d6131756e455a4e54505333556336394d715a7a482f55722f702f354568787642664a6f507479362f77434b2f774351324b6c336b74384f666f2f2f4144325663704852534f4f6c534d6f554677543864464e4669653248317a6e5761553572414b3576636d4a6d4f3755722f494f52384233755853692f38562f5746746e793172386f6c4431793268586e64745046762f6d56506c4c5369545832686568306b7a4f454c305738716f374d5a3534444f592f366c663841542f7950326a36652b597a55426d2b502f6a52367374506150725931586571766b4a5151312f502f414f50637961635754554f316445685a39555a39466266396469357a704257624d4b5759373953763868446250547a314256764c6d443863505659496479694d746c766679437a3354614770516139414454524935686939684f4a774d70625a584e462f32612f68496a4f5a6d50384171562f302f774449475a6e67644d3265317466342b2b707568446e42534e506a6d543630532b5062533964616c51364b48526c5556667539307337562b37355844384e43303864564d372b6b322f38416b725030442f6e7035754a367a73336f443668594f6e2b68444f376f2b75462b564933757848746139546b35374e41744379506c4679564c716e517455644f773159726161784932592f366c6639502f41434568394b6462546c33583939492f5658796a5052354c6e3679386256395663545766503435546f706244477a483056306473726e442b553738376e4f6a393969614579307542714a6f33666e722f4143446653394848386f6f377365692f7135342f704d3235787a4b6350315a69707a726a376d6663304535326a73664e2b69554f304b6e2b7a71706e302f38415a736e5677783749695a6e7065732f51424b7654727966755a48667465694871625a79546e4172736b38307a4a6f325a314f3339484a5534395a65556f6339303865535047504d536e5638746a444e46372b353974305a345771436d4236652b544747685572306b3961306257726b61624e444252367335742b6470355a525a4f6e4c50546d7364537a4d6c4c564c515a79336e59356d662b4e76636c33666e537038544d6431362f774167346e3843386e6969344e48706a36765a6b78522b3745367a31567a3233765835424a746e6f57654f5731376a5a3832364e79386647592f34462f412b44397a63592b6c7a7032592f366c6639502f494c6a346e366837573537656569667253396178327354756444367752736e2b59472f77417433614277523850517754715474645558616c4733336b30656b6d6b62487331694f46347a3868464a6642664c4544444e6c2b6b50716a7036797069704c2b57395a63353962736d72626658666a7a364b53524c692b5456636f63576d6c72615445356e4330343067784b5a7a45647138523941586f776650723753742f77446d5439576372794853717a326c644c367149547a4b51364f6f317a3832386a5136716f71614853306d384359424f6d7058504d366756715847592f366c6639502f41434d63664a38736b646b635836566574316b7a65614b356446767166343639796f64444a58504654486f72314f38616c6b65587055766e532b792b554135452b7a6f3032554e546a4847316672555354503841462f4a343654636a302b39565364703572494135752b712b567035383067617a71437a6b486f304d47796759397a7942362b73352f7564594b68417563455578752f50582b516a724d6258324b644850444139556c4f526e356b45304766366f42354776525a75515a2f644a4869365a4e4934794875614c76735048344f4e446470452f6a6d544e497563786e64792f792f55464665506551527558704e395076557253356f754d337262366c3148796a7552666e776c4949664d2f6d66445452562b677a57717a703055306b304b2f636d526e57592f366c663841542f79474f6c33314246724a452b4c2b6f2b364b6855725230636e792f6d6736414e7448386568414537537a33346268547058436d524d34664c626d2f57464d346b7233786d763434447652526f654f36656c4664344c367357385646334335354852353176614f746b30554a58476e504b4e75315736624a4e65775530366162466370477a6e432f6a516a2b78504f4d7877745546385a576844703156562b4b65723764536d6a646e6d32312b6f4a6130563874523576616d74304d78796d54354e4252767044396946494e797530416833736e6a74675868346f2f77417752504a4a6267656f764f4565752f5347376567566e53743871303944795862716a314c497770304a2b5a6f31666562565545726e424e3177734d315354556e48647445326d30664d73634561742f7039366a786f723871444f3172762f496d3873386a583544615650464b31624c496d79324a6456744c2b7649557a452f787030743936516d49493454307650722b517362784f76556e6459772f4364666a567747465643642f344b4d5a36625071324c304c4e4e6c776154422f6b4c4358314a7142745a2f4a6639675163434b3337556930346b456858557a34586b734b30364552364451386e7544527a7135496959316b6a4c616e4635497859706f366330465447475a67495678484e4d71616f7358474f2b784c352f6f6551614d4537537233716f3236535930535a2f4e4246474866627153786659636d563039756373666c4d2b36566c4643714a6570482b676d51655932797935544771314a6c553654766d36646c5152647a446b6856726a6c706e314f44394d70394d69515533324463715a6c7953503364735346345a6c576a656b64436a49336b6662746d5034336c32556f704f3642536a6c7854684932584e306b37533770754a426f6c53466e4b56383445772f434637593948416d7039755a3569494f315858547776377a6e4a5273706a4e5046527357707a7333374336474348462f544e6b777256616c30682f317a6a644c30767864666374792b564d386d786b7943366c73536e35796334467a6e50533370304b6e2b525a73304b6d646e5762474638337a4f365873534a4d6a687534396e2b58307a7832353863597248586c46322b5955545a6565323279714b444f79496876615641714a533559556b39494e5451513859376a766d597a6e444167555875486e4f6537705a787a5477356657503841643634446e623554356c52357071366568632b764779496479366249375241346c397a7979695a4452487a37544f783244394f686a5a51716e2f3067456641466f6c79725542774b666b30674c7a4b7a4a4f78612f5067354670465056764134625943556d4f5867756e47494e51674a4534716248596f766541464d783443737a5038417279746c616c6373306139615975784f616f442b4f677456456f3963585545557a4961726a36786e766572514c37585a4f744133415339796e316436775337392f774374626e6c4e48506e385963744d72636476664652534e573050773536586c59336f39393877436c503168354d77423255697634364e525567533671495a316e7976737379626339597075692b65664e4a415755645377302f4342514a53637a754156456e787a71416f364d6f615a6c396e4e672f49786375784b615372706250324e6a62494d73616b7258387931324e542b6c42387962464450547a3241524141656c2b673733615254784c79592b7951307a6f66505173364a33505376504956324d30466f57743352576f535a664a704430684a69757336424a6c6b2b666e4c4345354c3545535730523675685444504b324c515975694e476459626c72464b7930425a5558756d55705a7a4751437270443047633972565a5275737366546e3246384974523835314b764d71726444567474556c6c43562f77416737504d5a514a7673616b5979396a546438774e793657613653544d5862546e72666c73376d4e585832795a506b48386754564d7576715a516c4c474c456543416434366c30596d33336d487767377a653670305246774e6c4150576a57624f6d577332766447447674726b4b71446f4c684b476a575936646747426a70536c3978774c35444944355563742b6b366e6e62363771755a484762427a74556162486e5a3855304548786455786e63754f4e69756a33397549352f6b57596b4877682b306c696d466b4b6f6a78496563686649567a52525743465a656c787267717537774572426e31514131716538352f6c644e6c4b2b465847416b394233524254544f714f75394d42303157544c594c7034567a375370354a4a42582f41424f68506f66596b696130314777775551643644474f594247583663746b76334a4673622b73396a6b42725a584770766d516b4962346d5a2b62777668416e49517635317747746765315832414e595141783437366c4758486f543230572f454e4e4437774b79435a734c6f666c6e7a65787371373070496f53696f6368706a39674263795976337a7141635371667a725761484e7a5262456961576957526b534d62374c337763497a6e79716a364c36622f414a684a3373494c507631392b6837334b2b594d704c2b55366c484436465364617a516f7249635a7236594677542b4d764b7a514d72364735717a5a484748514b5a71656854796b6546376145704162374f5436302f7a7a5a73614f367956567a73736e36704a7966494466746a4e596c704566557776364a6b6d6232473041632b732f5951453549382b4d34796f472b375167544f67566c334b7574314a30646c734753436e6b38303077396456706337316a44344d35752b657a39642f53676453585a7141366b325a2f466b3351465273496d364231354642487064444e6e6553366b7031733335666e4a667563562f57756e2f78364a682b4c59596a3952427055534a705a4d6e355a6e30396663365a3061596f314a793531386f2b794a57657866506b50345a68555369704130704379504866554c796a777a4c354a3439614d7545336f6b796738527a53534963527739306a694653322f6f52536b467a63615644665a3849704b684b356d4f4f6363776e2b6436772b627461663868766f705a784577726e7938364a55797136674b717557524c5932633043474f58514d666b4d2b44395a787549467049655632563842453966314e327249627a667637333858706f34577575764c625058795a312b626d326e457944366c416c776e55422f77414a5334485442776672734544374f4938494658614a445743376b487974726e5079713876444f4b6d4c516e6c687558387a6e7264387a4d742f31526e3730767068436161486d6f4f462b2f366b447764465073464e5454446d6a4f444d6d574f4f586877316d364b587353707450754f59702b4e50466a78524f426e55673450304875366241486a6d327844534568565a7631696c6770736b7a33563231446176492b5743615671654e7a302b36576f2f6b5a316a6c462f74434d615134496756565a623337304437535a434851784c30544a727573306a6761357038623079705a6f61445264582b706c646e6337767663302f6c352f514b6832544f70795a6f7070714b49654d35617168534546374b4672792f35546a37584948536e3475726e73497079593037506945784935714241496d702f622b47537451367333344a637a5344644973575451594d75736d76524856594a664976506e734d336e31494f47777755734850637767784d50356833634346447156326a47734c4a6d3678797a3545376d6f35326a527971696e5a6a6e566e72367a706b594371394c6672677950326f427575586f4d6e364a5553615379747a71346242375a306d6259755a495677322f43367a5036756761684f65563770687878426e6632414751464162536c554d30717056614d495638375332506d6b725076584a6c7961594d2f6c645942547038734845436237594b3474594a4556424e377836434f58584e356435413343773235556a74584f4a6e38765a56467a507a6d756d4a534e48516d5a6c6f6349793054754654515a373168623966355a30756d366165455a6e6f4e6a482b6a544d4b5072764b66554c77724f4f5a58574c59694e4f665a476e4d6b48712b4a7354724e616e34703133664b612f596e6e50596a3939345066616d5a6a502f36693372746573534e63476d335251715378584a37356237524f5657675443614c453748453830506d7a5671783364732b46342f34584963354c776373414a44686d4a6d4a34534d37766b6a374d687339326e6e66783152747a4f59316b54635655325a6d30536841566c4845707956324a7a793779373679524c534e54522f314a534542686c6864374f3564646a7633714a3638517468746e7a42744b624e446e56765451774932634b455356786e452b394b30753474516e7873674d4f737a495a3062532f713862327a4d76715556383771437158306f6d75783635316b78314a706c636b4351524a413936644b644d2f642b307a7a646b45456e486e69786b394b575863716359332f38417062787669367a4e51484b36446e58786c514d6f363770743450364f6c5a4f6a635045694d42766d496c74312b58464e5a4a44566e6c327943546d597056334d39527a3175444e3673436f7343686e79756d2f58657a4141644362336e37663664504959326455424658797143657a4f31657258665a4335744e4b352b69656d4255634a617172654c3045713470702f4431546c2f4d6f54496579417973322b6e69496e637a347a7a6551773538774a564c7246636943714c49392b6462374a3833344a386468694c48756d37576c366e4a446b64557a70784f6364346a7a3749305a48307049776f6b566b39773645616a57613251634c745833646d30464559717837416c6c6c4f7638413457446a2b736158415876672f71666a2b763669722f38417974506b562f59632b61657a446f6c564a5446665a6b374f7a6c792b51504c736132566d35377374646a475a376c727245784131736b527833764e56326b56694f67427530572b59327a5876304e6678334a575865546e6e354c69313634455a624d316c36736c7566514d626c6c2f494c5774354e4145782f4348324c48536e2f55384b7835514a6c343134706e5030487a2f776e45316679655639466f586736792b766b56694f38567572306a39744831593668663841395036446b7a4a4d2f6d7435374b36577445312b596d34387a6a74672b4730567a5737457a4d636c3957764c43724a48367437554b3161434646457159785070754e4a754148456b7873514b6556352f50376a4f75523536364c714a6e644e6274422b346a50384174796b556c577375566d645a6678777473595575514e3036474b34536a2b4133716f3533706b2b44362f6f45686d76332b4f584e51364f364333363656766630303845714a356d72556f386e363836526c6e6a5944442b596f7a2b4636706c7a7050354934316e7a426d75466a596331622b396450737a543575726935444c76314873664a37657458546f2f36492f314846394f41316355347a30673448542f414f7542774237427a6443504e752b71356231492b72324d394e4e6b637956367347616965534e795576754556696e767639306a44566d2f735363706247706e6a32664d664c4148723236476262444e706d515a417a6154596c536a326d5772376c746c65657a3637737352596d733270536f41476c5230642f535a2f77436f447962717779647331697861507332647a4a5962765a6b3830362b7838746e4e2b694971386f6f52526b7a7863725938672f7762314b454f424a7344504f77623743446c4b4d7637427a4137557a38744b3963565236467662307369534b78664b4b324a4638333177374d656e416e2f414b6f41366d6c313830384a39665553534c714b724b314f30304e64747643504430387162632b6d78326657374a6b726f4c512f3631732f43474d6d665859386279392f4872364b656f4b6e54794467464e6a31446e55734e4b6655524c524a7166432f472b683171714f612b616c456f2f5a7a782f69315a5056496632596734616b6b33336c4f7041454f7a4c376d72756238543879707463726a7a36316173366d2f79496e7954743757536b32466336316d782f57414b593872356e70554a7542774a47664b38584f4c34736e532f614c596874695a466a396f374a7a55614d6a424169636e52444e5a4856337646713644342b73454f6837575741316378675a75694556616b54324d754a6559523352537475316b533563614a303657536c67787064526d79544f4a617179436c34554d2b755850594568366f463636324271754858597276516c78615a684a4a5a564549396e6558633376614262593561542b645664626d72643333736c634455412b6679637034394b545279364b37374a657554555057766166656a7175526e4f37464a386c6a4b68593661706e4563707173645a3969613030422f51664a6255515754496b456d4d332f764b676273746a6373425571685179327547557846496c524b3447484d5a4b7030694a7a6567564534412f634a437a725a774c6b4b2b6164526a444c5a47756a494e3830452b516d794c5135376441427a334c4c6a486644327977694c6e73457a4950737661682b6d71664b2b7a53733670624764616d6b6c484a464d7a376e4768527853644a4b2f62376547546661557a4443737953706a67614d715862317236537a356e6966314f3646514566444f646c6d6a5a544f704b54377879377061675937697963414a4b6a356764524d31494e58766b73537a517454566f53397a6a304d313176315a4f78557948376c2f5750516378587739457132442b2b735370305a473553356a544f5945424c6b646d66324b38475763576f38366a5255796d585237786f6e4853366c3948374874555033496b4c657745717377567a634d43344270425175456462597a6c616378616f48622f4c4a64623775782f5656496d6d614439744b65664e6e752f77667a6b33567a475365384648316e6839696e2b73504954503767636e54485172754a594362674b636f6b7434504a5443724e374c63584f4b524c3852716a70363678692f6335774e713448584f6632723541436672595a4731586146792b6661692b7342754f6253703453776a546e3865514d4a644c63314c4246492b313339413530436d4859476f706e4f634d456438756879697553475154374b524b6c433634353363424b2f6e4c6c5332673530622f6530546166444253704e6a497161374f6957653144427a30566b3157684c4d62632f696f6a54584735643262397932376f4e2f62423470496937397555627067643853457935586a556834486e7a795177446e7a684a732f59784345447330554567376b38544c59494b597858446e73506c4e4c5a763971775a4c484f7a2f724b7862497a69707945686c567a7253794f61373474544f6a4f356649513579582b4c30434e5231472f76796e3837672b43467875435271316a617a3678662f5a4736764f396c76792b3266526d6b6d58517a71374b5343495352425152306742415a6e53366b317036484f47412b4c7373373536492f683664366e55486e54546769394e4e314333717635697a574e51753055352b7033337349506834665154385a47333941774547364673344a796553636f6f726c70677a394b7158336374745a6d7a68596e5567475974416f33615a4e563166515a383034754f647744786f48486474792f592b4a6f674a3671486934597563613470485545794853726d4c766250646f50634c525952634b6942786b31616a496f5178524d4c707673777a6d684730624248546c564e4c4e506a5466612b707a53642f4964616c6e66342f336d593936347770367234355134704c515a53326150544b6c4536732f502b764e4a6e466e4241466372724679675a4f536b6d396351454c6f2b634e6830534d39797633527871656342644b75566a50684f5a792b6d6b6d74304f35316a56335432732b6e66477168544d72762f71585a3358653167554e443570695942636349532f3043307161434d5a74526f645a47786d505a4e78686a41344b556644377974706862526d6f3744486d38614b6c395541302f4d376b786b6e2b676145634430316f375861625031326b33746e476473633477444d364d7574492f72777347676e3043316a6a5543617a34376c4851396f4b782b3675343179716f36664a5a4e6e42426a553045716952444f786372363566666a6f4a4d61534e46423946662b31485444672b77515334504f475358747052705738763452537161616b2f444d373744314c667076663841634266795343336f7a2b785639427556305a79357743645655364c3271316f333556704e564e474a63316d526932304663765a4f58782f436b587a614170702b5473674c2b7249594b5838333758486477474f68376c6a644d7978594e437251766d71313070797035625755304b7a7278576c49644b5653624d7761756d6a2f41425a37364239796c5038415a494557564955593576595a4235517561674864585a4c38744e614336796b354363506373656c387a435238414e4b6237445337387165462f51504f59774f3748556630334d634f59644c65426d326f4e593575683768464d3153766b73437a536e537833477a67756c4955714a76766250774634587a3236375751536d33765a364b36424b2b4b74485230644f72556f70576c317a676e754476784368343941564c35387448772b37346b673055473379355036505051314450666238616e4b774e4765536d687870686f4346624e42494a6e576c6f4477334f475a72766864373636424256617a6a7067645161306c306d774e595643335175793744586433586e5050715a37666b5238526c3376774278546a634a2f4d6644704231665264325335597a7635492b314b5a53725a56426e4e6b6c5758594267684558384b785652542f77434c79523842792f4b6655752f3570424b504c6d4a62474e6164444b5a34613648535548564332427a4571653572633466732f43687931694454374d3332423769587775664b6b45367259644d4c755969454a6e3743366a686d5447334c56787a6d316c3243426875576e756652316b6965704833673571524177535444436a394c3663325564394e2f4b69356d7675584e5a795a6a644b524d3471644c4262534b516a57534e724d70424b316e51494734345070726438627770507a445573386f7a43726d736a774653515a6e30557a566741675666456f502b50755452396a4a6c593751537566744b584335327544506e4a4a7a6b3361746475654f63674234743542357671517a38527465594c79394f4f656f454d38703048565a42366d734d7454566b6839432f6d4a4c6d4e35527839585a2f593573764670375350496d7449363842494d7279767952634b4f35653375354f75756c4f306a4b58356a756470766a627a6c46662b37535768694e4c6d74596e67436270426149455141784a546c5245567248616b546a787a553952426e6b72713877386b6b317173353631547a316154323544557373624b48306f313075304847535a564a64372f753041465a6d2b634c57676d4a6d763451567633764f356e51715a3550354470536a7057614579463648336e55585139334a356735494c482f484437723457475658796341535a4d594c412f6c2f70696e6a507236435061476f7a755972715156734b6d343241565277335957515032346d633445306d61745a5431464b79723766506b347a2f6f634934774249385450752f4d524a75646f563061346450543753476736566d6f75716932775a6c42556632343139735379676f7452656e55415061482b45644e4e79516f41715761422f3435346a6c4d67312f494e53615135714c6c2b52717371766a625358644f754f2b47625a7354517737735868616b63314942786466315a6d4a2b7a54376b71504f3176686751445331394465386930702f433454795046636c4f6c506f75624b46504775544a6f5253497849504a567943776d7a315976416f6e364d4a2f772f736d4155304e722f414b744843735a3768614744343476416c3753363152614f504547586f6f6973757554566250454d754d2f536842684f31466c525950616d546b3162684e77763968722f414d3632763352495233716934714a564272553771362b756c76624b3058415270474b7441614d764372574c426a4d75716237666247316c453664594250384170703934676e6b2f47797a575a6e55307a593966473056575436744754702b3673484e573552477861425357705648544c4f584c314b476b71505a2f6f51774c563438336649414f3038565345574c5a565273595544636657675a5969626e575041705a5a7a30426c446d54347541314a366e3744754e4e6e774135466339436a66594759504d46492f6b357451313168586e6f77705870373738397955785747477446664c76414539526153575356476a677336334270442f545163303677645a626f616f44714e4b6f4f356d756e526e48512b76335976687a61745449796e796432366d4b544852524847366b557163564b6b6966503977683777727a794c7a4f323356706738646e304479645370655857474e44313972555a70354e4e5961414d2f7743766b314773736b4441696f2b4f5837447a464851437579497a6a6a4f5a4570774e6c33587a73726a7259657279542b487a4a776877715a7a7936557130346d55426f5579783753697159597261735059475545774d2b7a3250395348325675735462546a3868365577474538367a6546484c4652567834434c5551637a532b54424e647a46652f70635432672b4176376369543934547278587866573354784c644549366174435a7776454a2f7175524c2b3359536e426e4f543371516d6c646f556150324b6a6e5935792b706533704b702f724f31717a48694c74386538627938694f4c4b6747714f646b4d30397568332b542b3031674d7a352f33396a37514b39784a7568365051414239786c653442424b54645362545057524d4e53657135424c37526a394a565176565866452b316c4371306449754368393351486f4c56497670725a3050624f484f4c577a3576644171444f7a34737667514b51367531384a365849374930756d56736c72506f596d6c4e454b2b6c724e59576543313851482b56504641624576396f547874506d4a48494650386b69702b584e4a574e703538694f647144526e5757794f6a6f3656535a352b75715378704167564c6c5a3749544f6b3354665873416f474e6164457038747a7034542b74586e4f30704d2b696c36793149327736725979422b6152537337453670347866455a673032316c50797a393341414c506e456e5236626b7a352f313448775a626b357a766f333253323362644f6b453962695a5071424c54647a344235597478485138452b776e66315048732b59786e304d796c6a33646442666e50624f50364756456d7a7a3667554930514335576b614e4b4f5350535a377937383665706432746955396e643969646c76414f2f3144787678756c6b637a4f70703859385a3257614c5a71465455743044713730434c6b374567517a70466363365142426c654361657043654b6f6b624c6669736250496f3247695a2b554847765542385839577868304d5662384b3074416d75594c65382f375032584b4338326b6b7841522b366b3536466a396a57363068707a6f304d586455477732693561714d323548752f376a45314f5966766b4f635279694e774a357862763641424b526f2f6a73316d45365a464d314438395a77664c485541716a744c5473683653795731744339436239413044702b6d624871703677374f547837586d44794e515a4d2b47714b4b6f454256544b734d2b6d506d703371342f6e4235757053377445714e4b5832646f59704c78375a3861526649422f77425145344b386e6970713473364b444c7a70584d526f4e6d725a58786e753173354c55684a51674a796e6448556c594d65345738306e3842787557303651665679712b7271676b715a4d6f32636b7368716170724d7a6c6468597030727072686437707748536e6f4a38756a317266736d345764573155356858316a7263374e4155573566497069367166794536496335524c646e564f45707077584c4d37516e335952655078734f7476493350346761656c53726f416e78324e67615355396f6e56705a30382f514a3871704e386d416f5972733870306a4d6e516c5a454c6d42536643416e5576366b414172676c7a314f3453637a6c582b6931585872544e3947334e6a646b7a5a3269696a516b46724f35714a35533552384a417358685576342f3042487830775044742b594c5a61474d7a704e556139416d766368485a7738677474742b49474a45305231353266474647654e4574674c51485a685033746f63564a4159644365387a5035654b4250534e386e47517636694247733375632b7a4f74726c797a74434d316648485a3866777236723467434e787457696f7745776a336b6a4b6266456446706a7054742b446e445a7067614a70637a4a58506f334e6652584b4c584f70712b6e53346c736d48712f306f6d7a2b3736625a72316a356970796930396a6256446e384f61534f474c4e6f6b35446d64304a466c5750466466505a4f6656777377796f6857726b786c4d755662624739396767712f476c664f5165374f37724d71475434516f72616a736975626765515a74576e66506a766d30575872466a4752786145685053756462545565724f414b4e4c68396d592b7a7576705231517763315a35314d6679305445756e4a6e5155564c656d65694d565379746f6c2f532b794e2f3056675030312f757058364353682f67466b433048492b3350444a6f7a6e316f5a746650624e4b584a36476431474b314931444c2b67583043684562324a5373762f7051516432304d48504b6b614f3451424546656779746b4d7935316f6b6c664652592b6f5a6d356e416f464b5152316f42384e7141447048503779434373625757716d573161726b4c6a617471452f4c4e33506578615a4f626b78617a67573663323653316464337279597061577347546f63442b744f477a3131396659534e533465304539583334457447766778707137613934735a4c76433351547968704577375073514e462f756355344d4363546d6e3779624d53334f722b5a4673445a6d306441575676784c346930506957314e6d63424e64334f3671655776366f7a544e4239504b5144335430704130684d4556386a6f757a6d5a2b614f492b7367386a526c584479475156767259354a383271617274493134764c4f4a795754394a53756a395a77497037517871313272746a6a4d3859477556744d63314466486970477170616668304b5a4a5a7a683277586c4f67565a30732b506b537a2b76526b7772577a757631776535636b7a654b2f77426d7644746551546c70314a443636526143445361714e374e7a35594f4f6244734f627a4f3550424c3950345650304b4f4e5150432b456a595650316c4279637046715a4a7658706e506c7336656868493055544b37536873657632746958355038714d55496f63542f414c6e6d7874716d6e5335307359437878436466447a314f34574e316d666b57545841796a375a614979566a616b3437366d796f554136387a33786f6150325a6675645378724150346b44394d77446e77686e313878586e6d507a563651566e2f4e39645767565a4f6a624e592f6964626e556c6e6e6e4b68324b47307534746c416b684c6f2f614e4d365a4a67476c79513170306e3567622f4878334d30744a356f37796250366a794378686552684c546e576f763841476f5a2f486c5358666454342b626b756f6f6d63342b664d372f4a58536c454658446d4a31637271617a7335436d6448595963684f644f724e69796f6c7a7958387a5830324830766a5a6f45775764735771787a30706137714a47415157646955324d6f4a4537724b5a4b4d766f4c744c767a304e4a743479516b784f367449527a69366862314e507070644e4d43754733733167686a667453492f6f7976646c655278336533364b34654c5139326139386d6647314b5946554439696a725a5a522f7857617a563771565539486977554b526255595a4d347077324d2b762f4143667a5254624f45706c394e356d787631383464684e4c306c56315a51324c734f672b4a2b48743879656434526761625837556956397954546d4c6b6445787363394a75354f76717174496c6f305a666d6a31526a6e415844316332683854556d4b2f2b35496c66446e6330677144307768647875586c7535537734714c4d6b356443756f4e696a6c496f66537864783937594c46464b3271646e50624966783934566b39464c41416a4544426d652f536c314b6475623675626b5630553136564e6d642b3036453068386b4c3547453977377673364457705a7744424e48436e425377594c6a576479696d52735a55714d35617556663961797a4e44516a6371585371357935775854675874363158734471506c2b6b5231422b786a444f62454662375a626634657578375a3558364d2f386a382f596c795763583542316a3743653534465a714d3679662f706a31507969465038417a54304a4c6a4b4a6a744b7a53624e47335042534a33446f625572456a516b76336f737136366c6475683070732f6f38353746726654515a2f7744736f396753536f4c73576e69637454444c3674626443494a61705a677a3050495a77556b3874314379397675544f716a76366e643730756f2f62514e514d394e6b332f513756597057692b536b5231594c4f534358566f6438725435372b6e5a43476b6b76685a333579393731554330786d4e6f672f71414a62413553686965385a332f7236463347526d6c37394a67364b644b4b64765a3565307349483959737a34326b47664e326d54744a4167775a35786479553552657542787a32524d6b75474f5a32626d6f6f49576f6d56385579312f2f41416b4b476c674c44326b494c4e763941365a506e79364b4d2b485231506f67616c644755704b4d616e696d69694f574e58794758782f58576c782f4b786a6a364836486a723270502b6752306e7a667759704b5457704871423469696d7162744e67353662707168745232726a55703475797858786f647a36617563664f5a4a555a7a68686e61625141304f6e7070582b73317a704b4f36777a673146454f6855694e626f30386f31546e70533548432b352b75674b5446776877444164774a4572656c534c394768504b5853642b355136644a4e3436536a4f52626f35704f314965366b56417a724e6656556678346e37774e424b6e424c734c55764b6164616b7a6441423330784264432f6a725679706b69465476326c3261644831654c6c6148613656367154536f6a56377636426e76736e726c7a3730387751316554696c6b4765456954564751464f457731386c3678306f7273686c55514a4a5a664730672f584459665168376f376954506256563048364f52317447706d4d6d745349494e6b56623156756a3634722f414a4e49535a2b6c746d706d67743459482b317a4d41436e73334d7248644b767377512b3263416d524b535251415662326c476d44374d3036636e767477796c37317a514b732f615938372b71414139504d66576143332f41463835326c7a5653796a6e485739503475575469624c425734553570517253444b574c427135766c63615449506d5744366c2f4963324c3252653854706d794b50342f4f32455079364968575a305a4b75552f3964596954416c56374f484b6d38533462445933736f43474e7676693544565367594a4d367a7257582f506e4b35564b61332f6279306f6e714b7149567a75702f7742464948555075364e4173496c6d474b4a5572323176455858554f546248624e5261364b316b4e2b355576635a4e4a444478734a544a6c7954737153585273373750317854484637775338357a644b6e496976564730554b3079675645307379682f78503841734e6f304a4b696a593531445678316a52374753554336424c693634414e664a69635445686a79522b73425142574569614c64562f73596e2b5a553946566567457475597559553055614170795763704b4c6f6c79656c665a774a71336443415332592f6d5242784862354f43796563726f632f4c6b6e784d374e706a6c7872637732527a76534b614d31674171516a3671634c33416b2f635267456172334a6558617566625a5831694a7157736439394554706d5a4473334b45756c4f524f46623662474b65516f4e5158324b584330653975502b72624c654167766c636238335a796c54356e614c5a356d44552f372b68596b452b504b7a394c5867624e62505079636d4d366b75716961715a72667241632f77447149503674586d7a753434444c2f7742524e7471312b5038415a61332f41426145374558764771624f6d304d324f66504f4c6c4444684c6c554f4b44352b385034614c4b7a5a524e664b333261434e656178777859374b586176517a394545426e4f586b324a4c4b79573668486d6a6f45486a39484d566e4c745437485032483179645a4d304a346b4f6d366461646d424438664c717a38614c577a325170306379612b57304b74456b53622b525456744c3045597851343649364d2f6e45363732643445794a6878456975506e7941796977675071664a6e393853775a786e354b366679444c556d6933766a454b6174683975664f7a7638664c632b66444a4f54704f746a69657569644e4f6b644b69516c4975364665654f77303851676f4c633662683756326a4258395671685336554b4a707065776b38514b6339416453746232687955432b4e4a383639375a6b684d505536664f336645734e4d6d584d75363838704f6f366764445337546b4d7453614b4e454d73703144734b54342f52376d75346c554e45444b774249307a6f43596e45356a754554384b796e325a374e4a394262643357316154754e6b58394a726e58576e6e4b6f38637a3838546e7163764238664c6c433677645a777a4d5a50334253616f4645656f6d49336e71417877616d5a387a74767837746c424b7650757473633676782f42357179783537506871576d6866796375392f44723069446a5547464d664c786245544866334356372b4850672b6e4453543938727465466d66793559354f6c4242347755732b46446c37545a69367a596e586f594d396a46665941584b535a78313042592b53364b7a6d30544970547766303664354835717832786e333035736d3156337953637337794a50314d2f47716e6e712f664d54363454615330724a726e766e50323155447a3638732b62326a6d6c7035632b496733712f6765622b487a5a71385939337866514b587839654835486d354470323566384148626d6f2b726130365869366f526f732b5a774a6d696e3969344a36784e7945304b7155744539653462442b432f6b7a3669684e445435354262354868314e2f6753444878504859664a35427575687836624a754e64463353342f4a5437755573576f54467a55684e783150316872616e6641334538543961764366553658613166442f4143764e587453315957665a434c4d7249386f56474f75756a52376f39465954564a6e57756f6a736e456949397430762b343164414d3973317845697a57615a5a34566550506d504c7759707156413671443961565330314d4f542b4f7156764a6f4552304f4c73364e7955694b38506c41755677552b3275324c596b4e556558556c504e5349316a48645a397a396f6d325076637a71344c6f5536527a4f6a564c48696d3671796b567035315270706954527771663841533263526e50654a436a5930426148577465617377493550705a325662424f6372466a3876313943624e7147686a495a3577446e2b72346c57517156374841644a794279394d4d5756386844633750756d5458376250736e6f54356468623362697a597479596f4b73744a6155617576392f43564e375262306638416e71674e37644b355a646a6663302b343238786a4d535a50563077324b465038677838597970454857644c506c346d633530306b6c772f4b354b2b5470356e5765745a4331776e624131527030636d612f6b504b6f2b366250745a37394b6e2b4a71324c63352f6b445a547a584355665a4f7259304b55617054756d5a39623769644172326d666c464b71663237726f70796d42694c2f4a493674706a7962536771753566774575756450366f56522f74645334434152636f7563443945567945533557614d4d2b564a43357379442b4f4c536d38642b2f4c70315261553452382b76475654696836784b3654436248503742437779372f41466e2b663766594c487151716c75696e4b4a4e546252314938324f2b6f755168444b585a644c4d484268554f6c51457657557256653471666c796f363561585745494c3042576f3448364532446e50586f4a474b64307177636f4f313363657a5231655130545473344e6c487833554a634b476464395a77724a764670396d4848746559477379347039443674525439723171364d6e5159714c73632f436a6b5a70617271766b3068375a704354717247463259774a53547067536d78764a576267776d384d79576d75653644724e4350696c52693734555451634d2b566a44705777766f4b5768304b313858667963352b7573702b7a56396e7230352b3738773852526a5347593146705857767070646f6b4544494b6d646d534c7036447a39716a7158474e4565627a356945703567765758365335693245314f345a707063656d726b7533533164495352794251694c69353463394e514d71676f3055386638417434324d56476a356c395639597a44337a48396f737759796278354b7075466452576847614966497936787374514a7364707a63566e4b6f5945623346705a2f79483144796346684b7045456e4d4e63392f4e6b4e426a446d6b384352465253565665626c555773653945425a763841706d576e375669587965775962436a34302b2f4358366a54302f6c63663951484b476a41345255564f492b5a564d724c4559555553704e4966764975756c724d706556517264594d76426f6247506566564e494e614a6579336638416a6a3668772f5a54456c56685670352b724e516553616932614e6c4c4a375961465331304239643874772f61754d2b7656326b6e7a664b48734d356d7171476c316467527a39303569544c6335633870386d4a6b6955416247634d317071537148535241785046394a31335a42536c494f4f62765a79426c574437785a572f475a326c2b69315761476e4b4e657658585a45733749484a6f5961766b63786a4b7333675547494e746f6e37385044545451424b6161364a66614f5a6b535034663261316262564e68357137697a6c6c65362b6a6e73666875363074595a676231334a6970507072584a7850624148596646417568383472566c356763746d7052734c6d4e553644734462792b7a767a326f6a494a30735a53433268316f526a37537653384f6e612f616b506d523131312b326857644e7858386b57313078536b5836384f616a5173724b354d4a556133787833514a48696e7449796d2f6458554a6d5350484a352f594276723642704c516e31485352477155513153672b4a515a514e587061435a4b416e372f7334354c7632515671396a77766b2b58336b747831446c484b49666c30496c4f324e4330333663466b76304f49723548546f4b6c61725250514a546e4e2b614835323079635a4f714e307a666856596a397a7837506d50304b757a4e6c763762784e504948506c353045794d2f374d7139723557324d32717771305772574d315047484c4e3050316e676b654a54524e4e75484c33514d4e593558516f30657a61706e73727079564e726e704b734c7079304d6a533743752b4f6e73747a714c71684d577334507848564d45772f4b2f67572f4a392f7548316554526e55534f55536748756e4f68576f7253617669426859535a714b3777634961444869784b6856326d62324a674b6a35706672724d3637376549637330636e3545313056526339374a685452703656306e5a526b5a39397471366f30667430737a72726a48356a576d635464414255673555384e51514a325845492b374e793579624e4b6a55434b4e4f5a43763974552f533777506a2f63796d787a6c786e4a582f4630506944366f44564351414c74494a714b476b36674c39466e59387873656444676832764f4e506a6b5a653671376e742f364b5a525750516f4352577254536731705a535a67756b45434d57633671655a394e456d6d33475654444e484771544f477250737352565530493670703536706d6a4b4b65552b79626a7248477431665a3439727a417067745654716c46424e6a30327530337a717a63333957535535585859744e4f6b464c50647061436871694e46456b2f7a7362535344617166377038674f744964466a514c515850506c796a6e49664571725658444858487072766d37576a6c303761467a5544522b6d7a67722b532b446c4878476f415541596d3449584b454f5a4c5874326d457678324762542b7572506254445471424f5254703559344f4d6f37654b6c474452502f77426f6d4d39445179304b4b6247445039614367333551554a742b764e6f615848696d716e4a796f45356b497458522f4833546c5279663742696f34535379435677317474547451485372494c4b68586d534474643970633073762b56643074466474365a2b55784d2f6955493557786c437a353843666a47506c427974453163375135712b57513255687a4e644648636e684c646e4b4337516d614936456a5158565339645955796b78637730597469346c646142416c737a715137396d6b54714d4d345a356d6167614b3253563156556a526d66536d6d516e6a7530436b724c4a4d382b6974624a51372f73726a36436e456d684d614775642f55392f4c6b4f4535624f465958657a364f553262694f465a44784d576339432f726f346358644a6a6e6e3766717355766e4647774e4a7a7668364b5a2b317a767434684e7258545646326e6b67354f706178656d343472526f71586f5535634c3770614f79504e6b706f513559457a6f4f4437507557424b457a2f414b71463461796831566368697777477032542f414f53397a6d374d43365876736e504b454b58324146465357514f424931642b333745754977634a447767324c3950504e70645349385464513539386c6c6753575575545649556c767568516d6269334d4e61324a6a2b494362784b2b55304f6c6d5a3079396e49784763774c794f4a4f2b623451767636696d6370356e316357763571376f70324a4c7163715a5341756252504566506c5a374645616a4a70695a7a6c4843736551314b395563627a58445a305a4379364d736c5377533055336463787174436967356163526730486f336645786d6832623341796a35552b7a674e6e36535857724d546a6a7747765068766b766b486a396b39624e58787652642b783175485231577649744b3936714b444d7a552f6166515754513468374f61686f5172737a4134487457532b367a465a35656b774e356376387450457433445335486a506939745037644a306b366d62544572517141657848774f3642322f43396865795637355a6a4a507463492b3674534f347a70346e485a6a2f753576586b465a7679613849306b61543365472b446a4e49754a314d53744b5a6c4459536f63524e6a533549417859324c57633541503150724762766e49775a503231367a61307a32657654733972315836665544772f4b6e77534f775863385938416e4f703943617563317045564d4647613231342b3445734b6a555a486e2b313679584e314a514f446e584f41754c54584f336c34562b66482b4c6d2f702f7045624c387466536c452b6c764e3854394c346550667a6f62566e6c6356513161317361584c7a2f414831517a42386e33787a774a76324251716232454448636149484875375a787a5a42724f2f4c6e3056757a4430325a48704a6d357969364c72476169503438456a7947664b7242306b7666754a642f3342412b64482f54384c6939712f642f56747378624f7a4f3734656262332f6d7a392f692b5155732f4c2f304b7a395052697069394d566e456444725a6d622b4375345667396e32445a4f324551714165787363776b504f64733666394e4e6e532f7a7037753078773342526e35646568526a4a522f482b6c595072524c58502f774376774c35544d2b5765756731564d6a346d78663841494c587a69694d756e516b52616a3576616172545763593239666e35666d2f4c622b632b5741715035526568597864435354303870794b34354b424f6679444a354a524a717778327137315569574e595434536f62336f6f647741536c7a5350394d374c585a66786e2b5159662f5858656744616670555a4870722f41445036554762457a7950783854706d71664368536f442b727847676e6856522b3477614c54392f2f77424c2f463854584e6b2b4e6731322f77416f76782f51585555344870626f6f6e647753374866342b37676a797169626961314c542f3153443647685433352f595a6f6d46696c664f6c67416a54745034706b59345035532f69666f48507a6d5834464575682f6577747a6d59644132324c42794f314b2f6a6147632b456b37484547444f453535624831793431704877707454556d32596a626e2b4c2f3742457679562f4576762f596f7950533545363649675231657034786f69796e59304855795467575577672b5a7446336275677472447037716b6334316d663764455576457838662b6f534f723868667867513073755449384d7564334f57464d6950496648766c353848334a37732b3671696f464652504c6e324568332b66773853306b7556316866316245356e465a323538654f50444f4d63333841782f2b754b2f4633574a784f7976433747477a6f577a66792f6a312f7744465739746f376f7032355972472f77416163397349745072414e7674396e3735776a61766a62626d356546766e772f68342b667862756b656554357065746e3471344548614b66462f4645515668556d714d7448417a46564e506e766169766c74792b4d486934367573416a4d77584e2b33715376323834704578657536753650444e712f37765830474a2b762f77434b433232412b66303361774646665a7a2b5579336d696e5752525744546c6f49446331362b3163357a6f4b46707a4153546437682b477579664777786b2f4948385a626e4d34474e34474c51585151793362476437744d744d7054745770494f4947356a5a38763841536d5039695730427951556750514d3738332f546a5038413365586e2b582f646279774d31666b442b4b70303831547966444a5532754b43656d627944465a4b32646a59394c715351757269787a7964562f6e7a76516d3459667344456d6a2b7134314d2f7744313963332f414e7534515333386f667862306b38517a3077774c525369546b73544e447870334368544e53576256456c6d6b617063304a367169452f6350576b5a7a7257303267427a37752b637862614f425035752b45654365736e7148716566656c767078694c782f49636d4c554c4c5436373034705a4a35536331696e5a65577663526d4c6b5a48356749726f6253435978336e42384239482f4872307254574d54622b55446e566f2b697041716a45776654644c706847622b53304d6e312f77426c4c594e447853334e6a4a6d4a71362f6b48385a435161306c51354a69786c50766c63494d2b5651664e76756a47366264504c69453550783974667862362f786c5666545663316644372b522b356a3252756a6a6a7a7746714d4c794b674d735a4962744b57314c4f642b4b6d78774e734b4e70544c6a336c662b703967612f2b746f32344d2b626e2f7742626c54466f567776536d55667955386e375568706163543078305542354a5650384d362f497358324f427468697161313377306e47553944336c66384171665966716678337a37484956562b4c2b38515438756f3070342f7957383369567179694c4856794b7a6635697847666d54663632584b2b4c727575414247664c62534230523779502b72482b6d512b692f4856574c6b5235442f7841306e6f4c4d492f485758666c5035666d627a654e626d2b51644b43755479725548595a4a506345493053714e7a707a2b725a784d616c494a463832784770772f684569662b5058696e6c4763733933384d535a53374d3064475a315035547836726d54503059616333545a5a52356479616557786457676f2f61733347663230442f325863584857627a4854567a2f414e6f2b58656a5068323134356f5a562f7743495733705535343178782b52552f6c696638664c6e5a7475706a354e2b6e6f70314c6b306141353742724b526e79556e50383146487941514d435a764d546964544f50796867486f2f34316b55527a5a5834677764784e4b766a75456a386b752b5447716932776c71624d6e46336d763564482f324b2f747055615544694d442b4e467677436c453274776e55782f32686c342f3653654b49797563692f464554737a48352f5a71597679684f692f7064316338736e5462504c3546536971375169623856746d584d366d733967457556544a326870576d30782b38782f77426f4c352f6f626b7a387878722f414232477275745569725558622b5855544c584a6f6a356b544c644842724d356e31547a6f683450452f63346d6f50593739734d4564703779663841717a2f70674f652f6a5542306e44503642305a6d4c33325a4f5a713576354a6e6a354e6a75513572715a6b34327a75436a50316f3953376c49693262363950334e4379774b61306f4c6c7665782b4f66354272642b4d6d636976556d48386464684c333639766c45616450386a5130466d597471735a6874584e724857753565534e52484f6b4f302f574e6a524a3069667556523733382f2b332f6b51716238656f45313647687a3041386a742f6c6d34587a74562b566e30396f4d6c2f4e4b504572796e506f6a4556395a636b794c6f4a53716236797856794a70672b3376504f6639492f5039412f4564727232542f69353561756c7773733042352b56476656645653724c4a636d5271616e5050435848382f7742566b55345063517879344e4a5567647966734645336d7658557a2f3267745a364165444978633547582b4a2f6d4c2b4a7a744335786e2b555667542b4f35756e64436c466139665738712b54467935744b50534541645078787a37485a2f77445a52386c4b572b643250656637665567334636445931434d30362f7845382b312b3671666b616e785438763841795075526c746c314b4b596e39687a2f41434a4e2b677a6b2b62347a33394d4d37506a3367534a6742394272336b663957503841544941612f77434b654d31374f422b482f6e54746571704c354c636a38784b64445354423059364c6b6275685a7355755a55385a396f43375350527356534b4a6847506e534e4770474f4f70782f684450582f4572784b365533614834666570666a57567858506e43623870676e6e4e4e73535a6f3758555565554b6a5a5238334d46584a6d6439774c6d676a6a564e5336675252715433616c66356633413466787338456a306b514a2f467a5233666357565051797238724d2b4574664969644768326a534b504e47735749376c30626a58496d552f314d52756d53442f59313779502b72482b6d51497a2f7741586654504b4451326d2f6a6a36734d32723539657a6379672f4b76507464504456474c4e44766136764b6c3954597a3674465164694c367950684e54672b4c507363366665576e3935582b516a476a365465486f672b534438626655463031644b394a6b6c6e35446c6c3972614570637961465864316b71782b4d6a7a61687330557463707935767635314d69572f4b69637a2f31492f302f386752562b4f766830377538642b506e714e614c6d5354557757666b337036687a64597a46724f4845766f3832344e4331626b5169443836696b66597752495539367476394e302f696e2b554438666f6e36665a73656a4c50364a656f766a475a6f386f686d496679516d2f6a714c6759746d6c5472557761797a736f43365679466c456f6b41314e49337779496f6d6e6d74766e3856663950384179424e6670723446736168397439472f49384c4b7a7831596f6263763871686a376442585647307a676d5977356875466963556b7a384e792b42543274583755537231524d32694a7a622f61474f6a36542b46736f4c4144306c38357a632b7a63664661462f35424d37354e564e6e554d644462546470366e425a6d7a75334264314e4b2f74706d413657353031463336705261635a3366594f4e5430586779317a396c394a4e465246765550572b62312f30615279353942744638576d7a794a4a636c757a78755937336b3576766c393635552f765370717a574e33352f73435038413878325650717861476436482b555153357575576a434350586b316859614c4a7858464d464c46477466315a614934365a44614c7561514d6b6e4d4b576f524f37686a6639674b3076525077646b65596954304438707941554f6e334d526f657346357835364d37556e6c7653375562714f374c5077477a39543841744e5441643974583350633939637a2f414e535039503841794358665337774c74385063373865644b46732b674734506b396e35455474646d72676d3867756339356550616a57315138326b34744141745564454132496b2b4a777144334d7a2f7742535039502f41434774337046343272756a5a4836545370355057375743716a38676c7438666a65426b375375304761396a6e366b616b36576f714f746661482f4b365a50654239656c527a752f5039673870394f3833534b4836336f74355a43614a716c6e54442b515758466c352b766c6156526369785833324178626e66482b31394f6d6e345a76684278417336775933666e2b774944364e2b6e356e6f306a3658625741525337466448635031766f72377a4a70646d75374c54627a576f2b786b6f6f4c614e6f2f755a6755377a7a5759416b39556f33542b4b663551466333303838615a7535554d487068366b5a794738566e4e2b39367a776379546e557250384135585831377246307359354657584b6964616873576b4d334f436c6932723979596d5a7845626f34666c475850524364757450516e3077395461644b6a516e525a5268657252647a6371746b6163785363686a4c687054636361316f6e724b644938584d754e7476796a77327a76354d62712f7934657631424b62306e61622f414f43322f545431623039695050687a38367166317a545456796166616a732b352f4257324d35473874545378577064784a69614a6c4b616c4c364b4b5362754f36746f2f7742492f512b4766646961566e7031366e5a3264304a315a64754a3667365775556b57566e55526830733749386f43706951375057647a544d674567544d706f3935386e39542f414b5259506976702f7743496c426c5273394c5055665475772f6a2b5845306655526f4a7a5762545369485558795465475835416730474252484278776e52475164576f775362715461654d7a61763868656e6a48694e467433304e5877377a6864393947695747372f35344857614472736d5053646b3649552f2b54526c63685a584a59584b432b74784a6d5433453131376b306d652b4c596a2b45535041384f39744e742f6a612f4e48486a6c4b483263623145636e5a585176576f5232727638414932564a716a517948516a343371577247616c58785378396e2b4661317378782f7744455476413950624c34546f32633731417a4e567466494b5974727a65353174666350534872734774374c696e3075385a516b57455a435362774a45352f354f6d437472343663525a506a33693359512f6d49652b57553476383878504b67383234326e6b4e3732504b6e58334472742b6a714a49574a35514c7763454f613475746d424a665769317574593452413252384e3845446e66342b62573372616b6c79685762355a71334c7a6162712b5a386c5655495373527a536b4b484d4c6e5272562f326b4130356c702f646167704d395a6b62455a4870357156315a6d6d72643372663367752b33586d364d614e725771304e69472b37482b7268437a6a452f794e6a45443169714443763631504143446956425331757459347a49326d3846394e4c4b4478573647313532504861453644664b784d764b356b444f6d357042686b314a754b7a4c57544f42307a416f67583876783957726d64725a347a776942303738457959764876484a4a43756f7255594c726671616c5032723245786a714771726336676d4f4662436f3476336d347638484f3433392b384f525773616c6237726264506458644f3370792f7863664b4e747074455461754d546b303739627655384e7654686952517954786a4872627a5161636a4b6c61756a4a526b2f63615355523148776c6a557a6b5a4e46714361354c31657a3243514b31373976722f6e3468514955356934653648376a30536e4e544c57573565504d5634764e504a614f4f6e4876386237585379746f5373782f7742494c6373334548337158486f4d79696d6d346b706273584852795666736f6b584b7a2b4a467930384b4875774d31445379653150714f456c396e54375172393633534c623741443056495937767a6a2f4977316f6f30305135314238376d6a685a2b5731656c6f3145373557724b725846537a366e3456682b716961437962397748507730364d4f7377485778385a6f3074435a5644376670544e56764270446e4a6f7a5a6575682f6c46753777474135722f655a3842695a2b4f4630386752366e704f6d693642393338396778533071737a657a726f6b5176536450423143326f684a366e724a5a485077784e6c767634496538663642413462475a6776673058472b4e59305a735076367a52792b713033616747554f647263375a49394c524435663048784a4148652f3949417636443748722f77416e6456666c61695a4d784164356e58304a64494d746b36596574316e72626c6a796650596d6572326930684834357659444f4d6f6148394131336c78314e76314e42646b624d70624e69666d515658565742732f54644d535a656148526f6478456374432b394150635a6877574279553341483276534f624d44496871746369376d6c4b6579714633414f334e50507a666f7069716a34435a305665353342616c6e79476d67652b785875754f63546e48654d4536413934532b652b755634434c39646c625156614c5a6c3674452b6978437769756f5a4d4c757072466a556a7a356966536b446b70434161714d5038415a54794a7a63704461654e686a54316959423057792b3257624d6a483278695378735a2b2b4d4271757a4837374a416d4150364350646c2b6878656532575332774a71365253634156313155366374594d7272376b357a6c38716b736a6a59725036482f41412b787772396f526c537343354d7a6c577a38584e4f69634b4734464e454c6335775655417849537a57645173554a6c504673715453747248476c43577868326b7a2b576342634d4f6349464b52634e6446425236644e7441412f4967715a6a6f7a2b4537507539326f77716e4c5750424e335a75544a566366772b776d7a4d7a4d356b4f7255736c4637325634305339484d3278552f794f476c645a596653537a6b373165367739516c324c454771366f6d45464b7744363741556e2b6f4468715930445544592b61694f7630757676493153436e5167517967692b737239304c3153304b4b75476e67662f4253766f31574438632f3941737651666c734472796865584163694b73376f67702f5653662b726b31396f47736661374c6c6f644e4d70632f4f75782f597549675437336768545541496f544e57585a63646d62317557335576646b7a74786e2f76676964444f696d67624a3839544f30725970483151374746494a455767706d3055554d4b6e724b316d2b4c4e51413074714a6a5a554d6a585979394469466c79524a6d67772f6a34356338376d2f642f7a61414142576a787959394674476c56426a5a4550655677704a70705850514d30636e46364d446962304334776c30675a484b30546d48334b2f34467641486f58314c35744131614530507956316d746867335452576f317a5a6a64426b6448534953537a2f4a55797a45517665625547414a63414e46585a46674a57365a734d6d64636c77786141783655697245745877535531646e3639764e4669535558574f476e757149644f77414a69774c716f527955756851536b693755686273564776526d367570566b6a766e6b4b6a35334574693179495a45616662385a4f3754326234534d50756e74624f73516b6c6e31307832325461576f624756555349616d584f456e55396a366d4e504b4a566e2b676447786751473530334f56477151474d7736466e782f473735515233514946536368716e6f6b35497545462f4f69456c524a536d796546364150512b4576657736526638414d62675930393244613657322f4c312b6659543258735771364b586c43317a78793930546b587a324a39714c4f43785a6c306c4a5438726749544e674c52364b45436a78326a45746e526e387a706e586c4a396d75786b3033304d396a70594d6b2b66476c6a4951517676506a34644b57712b313877682f547146744a6b336672347a7161324938655453594d46382f2b74574d4e696d58353652594172302b7367486b33442b5833754376364252385a372f3641685272454c626d424a4a5061696e59696d63365658324c564941346a6e6f354e55492b7734366e642f345741537579752f4831796b6b6e2b676a726d2f7872494f57506a6136557144682b4b41375a6f712b75682f6b633350624c37766b4a633861576f5148414356306373394246306a73634372744f4d2f7566446d7171314c337479353962475133705a4d4a766b3572555430767a523739656b6d61584f734b68335470734653535034686b6e42435257566e485265376c724a3564506d6c505469522f417568523661317a3545734b2f763873474a32567968493954493336644a7555494a6152484d524d7a45422b716e494f7866312b54566e444e3956664b6e576156427170325a35373373304c50724e4737697066636e674a64374e45794a542b306443716d416d7144494b522b6b7069343356384a656136624e4f6a3332334e713045355a697179686b2b7455566a4456377742304b36624a5571357831487a674f6c73584a4d6e366734446a746a645a79725a755241756952537364324c714d707962756f486b634f6f536c7a786448762b5931416b4a33785034426274314568562f49576537517a59646571314647335554486579696946454b706b565272783458324c48346c685551752f774143636a35424f675159503157563862614e77395a4f716c4f6b7459784e376e325062447962697169713632726f4d2f6c766539514b6238396e536f58584d592f314f4a7a6a48454e4e4b45354c6b396e3561434a39424664756858704a4b4c536e44724e7844705531357443685a39483575394b632f774271535a6d78774348764f4179477a5a303665544f6b5070684d30525673716f586c767a46544969786c6e5633553454697353786a757571522b6773766a5544766a5437684275462f57514f7072705848446d61427076564474785a68776f6a364c465877517a593635364a654d4c34667071744658663952633970745930515167306e467331797a716f52584a4f32435a57654845533548474c5a73737a43317a684c74476135785370363769352b2f592f77425456304d6d57365732336c3342714f6a5953595a4e4a345454646f43596872537a67444a63544e584f4b56704348382f63757a505341416349696d623346515536322b34366a48503039594f75654954574c706b65715767786d70545a6973734b72524d4e4b544e6175724e393375347755547559675a684152446a662b3361323334524337764a485464392b54706456707132626a43775a6d71712b6f796571574b756633777552715a354f6a635138644d6d636b427a536a56535974367933752f4d524c57585258526c74736579534266546764546c6b6e547a49487173577030326f396b4a5041532b614d35544a37514f656b77736e4d41365647676c6d52687949444d6b51685651785459792b50354e564c66324d725637464c3541706457497244512f32652f72622b474b516f506b684a6f6347647239305343704a4b4f53644f666854333339724c795a7057777a364b4166624d357867676f33416f556f4a726b3964436676622f6a31545850476e3336417150632b4b464d4d4e566c53453253674f614b34413353564b4a5532774e48516a47577a46644f4f785744784d7661764e2f664f6a53387a2f414b7835753136384172562b6f35623570356a316a484d35645842313361446e644e577950514f624f346c504e44334d6f706f6577666c44362b6b3769766a2f414d336e55505461764751396c56303062325753614d34323331626c384f6479474869777136373558554f566f53732f564355554543765a52556f4f78693441655334364876656b502f496c6c4d564c79682b76543149554f702b5051436e6b367a352f474e78374d314a67707162572f767054673878576e674e737a4a5a583736546f6c376c617255767467497255564c7669706f35536f6c477a6c4d4f3234632f4d59612b4448307970616176636c62335457333238526a314b5067646f783643695871506d6e4a733366695562644269616b4a6f546d2b336e303145546e79734d6d4d54476d6634556b6631326e5550677a615130363139615a673069476d7a33324f64424772537835417a37497155714631545248516f4e6a5a6e546d566a71544148447a68415a5765627959594d5a68713048396f672b78334231686b7a6d7961733759726d6a38774f466957536c56333254702f3841733466322b2f4a4f5a70444f68746a364a646970466a396e51474e4a4c594f514c6f78354e636e5456396d3350574e446c78305864345a6b75684d744c5264513154577141444a2f793469326850633647336d6e72636c7253706b634438686c6364534330334f632f77436f74756f367a724f56464d4879306b7668715930413643496f5846564670554c46535a61436d52426f364972303236466b3262676e616c6b6b5045324f545243504b4f502b55514d4b51396e2b6c7a444168386c4e4e4b6b6d72675046665a75616d6579794667326a4a7058395a517569644c453534704c504b52587a635573544256492f5961437077654b5252546f4f307855353856355561453352315779763676734e435a35326b6a50345345746a45557343786632776d63445842505178584144443646564d645572716c386f37326756626166697a574d5a313168397351695333696243416d6935696b4d4e6f74427958454662714a7077777454664a554f67696254687a63394e42724c527362535476334a4f365645364732443958346b796b30684a7279534b61522b554b657a4277484532644e6e66794264304a725a774778564e48386877396156366b787a5a467a487863592f375131527a724a4e52382b7157775a56546d456e7334447769564f4b37566956562f626e3135394e4a367570506f3247456f79524f5073346368596d56664f696b4f674e61597763496664636b3068382b5a6e632f734766566f2f42327a4d7a6f3670654d4a554c317861524e372b6b4558745364576852795a50466b675852746d705a4d667a2f58426a3941302f536f47716a577963776e2f41482f5a784154792b2f4a2f32523943346b7a54336458477375746f576f6b72704f63334f65346155676170616136336456676d6452646c7a657a715737356e7a4b366c46624e7256577634324c6b57754678634c6930636b324b5261743379633673464d2b38496a6f317930597173334e7356334d70686b6f41577a3072644956334d7650756e5775356273335942535741485663736e2b506976617062772f66547736657a5a4b5a625a62576a7a563147667876777143695277797a54567564592f352b6a7056456844433439447033574e50376769587642617152756444463179474c43636a6b6d676e537962566d6e6e6d78327a5443674c503159776c72534c6d30702b55306e30564a53414d4e344a6969473647586a4f496e637153536f336a783362584d545a4f5661654d547564624f787a506a48725436414c2b737565644c6c2b34503642725a4f2f37306c6e4a446e6264796750596a726f324e6e61593031544f6a686e4d4b6c2f52546b412f6e4163733357436e39752b54356c41625052794866446a33426d4f3048667962635758624532534e365978395165676d6a50616c626d4d595443476f6d753936654f6578784d5838594d555461377264486c73656a705a794551316b4e455765556e4155444b3675397a7a7334794f72726c70474e555852554c6e46776e484437522f6f4852792b367654376f646c4d3831344a47526376536b704f446f444e6f473553782f6a34616d56542f445278427a6d55784c4d656638417341473949646e62784678513234306b794a7255515778666f4c50734c4b343635332b31634e6732546a31767850544f7234785752744833305467364a6c534c65357379506d756e544c5a4b334f5763374b3650354b4f76736b676a5630726f35696f6c367a326a307844394f5a333436306c2f514c5430302f4a5470324d66616346625a4a6c636e7a51534b6b2b333753394f4e784b464e534b6f357a34547570347637625253615a79493141325a7a515775316b37526d3474334d317a316b6f696f5257746e38643351714b4e6643306c6145747654354f62573845503064464537464f2f6f4845307768553566774a624c6f4c3471364a7863414547756d6479725a354a714241574b63794c70687a706c4d6c786d6677502b5433426a5a4f75654f746b642f632b57326e72304c6455345a534469782f565356706c5753524371566e43346b6545516d55676b507947663942397967614556566261616d4e527a556f66383379564d416b396e75692b6f794e50524a5a306665493667645355626d4b6f476c4141437141576d6b30686f4b644a4f51346830346c4a4d614d4b52714f4a646f4d304368705437732b6731324a582b71477248684f6358754433396e5347656f4a4e4c6c596e325766356c4766327831337431467a32555543784e68574d524c47314f6c52536849394f774770536e3941673143414f5931677962744d5856645856306535785779304239556c5754366436584d48555a576b6b2b305344724453586639507341552b7877426c4b7550516138775242374730486458786c33656c396a4b6e64586e3644416f68447242476568526877322f7267302f4b66784563767767795a6447724d53693243616456536e4d73475751546d7a55543953394b6538426a506875366d4b455241654334524d4a76333158757451434f634433694c3053642b334e4e646d304659434b4b4158504c563134397039336548443168592f59774d6569633775726e47644e482f58426567423045314466526d39426c7966754d4353325434574c763841634c5630426f635773754d4b5659457459722b7837666b2f587537516b4578355361575070696b51425777723763765268677274632b385630647035715a2f476656556c31542b7657674f4c5a65414c53366635522f6f434d6a547048674c746d6b2b562f77426473515361436551357459526a2f7071305747754f6856687036617844347a536b2f7349543870416b4741393038397336396e6d68654c4b4a6c4b696f364b2b754453366c504a6c4d584b6774537a6c6c56786d4a6c4b61776f446a756d72686f45463373665877592b7631343757574943713931434b31315a333036467336356b38716779784b644f734b785437512b584e553770634867755744614458726b6f446b302f516e30536e2b6b3476693062573963686a72744967434e4a75453643735a383676683538462f4666763242374241616b6368586338696b30556f747a7744563633703530316b394759376742496337694853596f7339315852596f2b457068664f30445331663941576f3171356554427245336c72314a376e3073726c584648326d70636e44414b6d634b57645a537a733539636d6d302f77427456386278374f694d5248534d4166526d616b38564e4b415071676771694476497449482f4145625a6f4c56506a687539394b6e6463356e2b517273715577774d5039767563795254506d436450516e5465672b64555533386e32626f7a31387654513665725a375a554767307036466852512b552b736d4357616c4c7151486b6e74536a6a773852526e71546a61444d486569632b6e67443370317a7368696d54396671343972786d6463316d725244714456354a4c6e7371416d4a4f773949772b624e397442687257307a4d784962347a6e306f7a5a4f4d79435a7035456b31664f6554356c4232614738695052306e447937514e5057534f6c4a37516e6c4942644e566232616b334f493534566a7945756877353244396633474c386a6c5a56484e4e3957574c53526e383335732b623455676d6436426c6e523135522b316e77583257386a74536d5a4e666565516b5664574d73635750737156514f725335534135412b59706a306f557547772b4c616339584c71714f39706d616f7a5639656b6e33445358547a4556316c6b59636d6a6758584c684c7162376d767053706d7745566d7a4778394253387275554c4e675570346e2f7743327075506e744c70795036413378596d66656270554c696a626f646a7a537a72366876707a373536667137365a57525a2f782f4b5a54354c324e2b5977345a746f36524e2f2b6b4b33374d68336f2b662b4e654675654e643868766b704b4c547a7270567643335153483051347a56307736757259634a4d53584236774439683044776c727555464a7261657369745949394c31723037502f4143624d31452b44674474326d4773636f6635722f7255616d596d695337575a50566c31346178374f4b61772b75654f5a2b376a6c4b346d383232394f3149763378374f6b776330325955396e49756e704b39753653706334626743584941745939637550397a424b4d33632b59466352535a6f4e424c503747637a6d334e77454e7538686773363836686a636a744d726f4d784452566f5646397a356f5771423743352f73756a637347506638594f636e392f4d6c3141446233666d4b2f746268687337524b7a703331676e79414558615346615256304b6264396b316e703361496634365754555075596157444d36675a6d38346d6c773235747635674574326a32445a6c796230644b744b2b692f74436d4c434f584f4c755870654d584f706f6e4130324c484f5743532b616b5866514750374d366b456346675350446c325472566c4d3672646a5975784e6b6f6f7831546736756a4c7a7066763841644274446c764b69366e727550716d59314d66574f56794e357a426c3550586d59414d5a3474516c756c666c507a70374550535838646c7a746c716f6f6f6346537552702b30744e7943362f71624264596638417837476532746430784f3456336d3465684e466b61764a5049364d72363035616b617261616d75386b72694b394d3356302f505a5044426c346276386d304f46564271345a30684f664632456c666e57507250555856453461703876615253517a2f63356d5355326175615632344b57737a347873437150392f465337323651783865342b6936774a61474177672f6b6978485455544f517254742f694535314d6947684f555863717a506c3979782f683535314c3458666d39346658416e52395452794f485a3868595069586756474b59616c3631365736536271497a72484b6a6f576e7564663948505432756f54717370304a5957677869447048372f45317334356e752f716c723930534c4c67793138786e5664367352752b4c737a3432336c4b44766b535a5270746d2b78794f71696d37575352645932573566776a4e2b67573334637754623555636a37573858444b58333553303975474e6a46474c4b4c466b43477353767058426f4a6a6b5737677570375479644c56316d6f5a6d4245697566755a79334f386f58304f55452f32396256334c353273715351664250787a626f4c514b5a4964494346595463365366314d50784a5a66793242624e2f633665667433307675596334634e71613274725070703570354761794e43307a706c694b6566707876614c572b77706a417741516f435168384e4249715a396d2f4e6b79716242446c537974582f41436d67335563445a766b7164476934686a4e2f7a4630556e4b62665a30412b59426d6978693646386f6d626e31557139784c51725a307072526643794c4f5446584e557869626d4f797a72366c72522b4b59444c34502f414b6e674a32327a7a2f57534f68576e4f47367178756c4d6b6a524a4c5a4e4d2b6e78706b4e6b4c36626f655a4f622b2f6936784a472b5a704776735368426b38625435684a4b52716c3131705561586a5378557a492b554d6b4572555a6f574d7a706e6a37374c31314f7a53545978715847324d696d6f35456b316841783565696561536a75745358454a79346b7a55347464736a324c7a4e687a62644361723975734c715a39686c44454f4d41475a6c50542b78385376367473743443545435383472526d6b3962722b4a58504b2f6c4c5955736253686e74722b797a534b69363479594d6c7177424b3365384b4c663266784852556664706a35666a4b57534a4c702f7667497973374777654f656d614a3749334c6b356d79396f775467412f68765758736e4e33426d554471514352737a36475670707352646e7a4e6a344a472b6e596b753741667861756c79694f337278715365636e32734946475168514d3574464b566630447335373478734c4e70677a487530474458612f4f6f6936545a356d54496b4850354778456645357132724d6a6b2b7554723433424c5758512b45453066504e5233526e33464a70334c584c726c74577347434c48526b384a47764c37563267422f436d5235447a32464d344872596677392f7165505a38772f564230633871474d6a6f5143485031354456704671647161665959457868516e71734f46746b384b79533368712f2b4b45376a616d6a325149493173694f795a37454d5a48496a54664c64596a4e43665336714e59314a4b333666474a583354316b6b746e7373534d726d68576853524f3949446f667056353839676e7a3468757a586f592b466348464e2f634e384d6d52626e5655766a68596c7a75696c76512b7654414273476850464f506f456f7a5034473630463076564e783158375238676a4971334f6f456d30557162426b6766754c546f6e34336a6943777552304b6247707631326e6a7a2b6633456b656e4e355a394f653246685a7736507870657256566d556551675a476d5a6976717342326555344f66516e6a5064336d654d464a2f774164504f6761696665505471726937586e2f4148657650735275497269456e714c7361432b7a50477458776b556f3645676f554375385438583663333939723645433837757470784b374672744779523661305354515448336854794531655a715a5956416e4c6e727a364570576c684d61346b3968704d356c41547072316a35696f6b4f6a6d6f6c61305a4b4b706f45364d2b787a39746d356c4d4348572b474e36633877597a2b4c7a3530432f6e78635432596c75483637673647344f6d2f584f61656c42556a6f35612f637668514f70596c326649566147556c4b344772486b734f574242536f654765324e68665a483465446e2b7a395a42464f755038414b4b4b6161756e367131496f2b652f5a725a546e5168725333485454574c484c59564833474949467a7755465a47565074704a4b4f312b44362f6f4479496b6369533875767067704378687875324932374954534f7330796a4651666270536c3678393675694c6743732f5a3771506b6a4e565155656f3752546d6d41334a474b634b6d4f6d667030714a6c724d30346447682b68336d62386730516d745046506a6357714e6c50577a4f576d594b324e6654713259394b4e6278794a73373772565739686f62666a48596376645754576a657969454e4c375252574c4c6a512b2f3841742f526145412f3130435435433472346442544e50374d5246524242546250517437454652386b57774269356e444a6c576f51647047593155584f6d2b53672f334f3463623971524b58586257535046366557434864647a5350524f3755744851734d76664375685945682f36443747616c5a7464326c6e48434c534659542f41466f6e48634b7739534d6657596d6650794f4b35702f78576849344b34595676526c726379426b6431336443676c6e2f4a644b6637485263756b4e55707a4a716c396f4739623964306973396d774b444e3145687372362b476158533567614c5a7239447631616b745a4765724f557046706b35664f486f6337525a65716c357434374c2b545142717646713975332b554975385667305a7a726350647253464d6472713135383763316d6b7634307938484e64314b31382b51334f7554384c466654416f6d596a714c476d6d7043374e59794b57323768436b6a514476354f6a542b6b5751763751722b777578616a6a686a514e61336e3131383573646f31304759794c786c4b6d566a507455736155615966695a4569626274586e426d6a4c4d7972707372514e48794f734d52456e6d776a4c354a51543878383578526d302b716e54535a4d6e6769726b68796257427a4a63797a6d643075616d646731726f2f656c682f42394d30743475732f66564d357648426e732f656d6e33676b546b642f694a3657333154647044362f7654797a557a39625670534445565a623831503268482f41457a4d2b6d766a544f772f644934666f6e506f50755a6d5378465855724c6c5870547a2f57754873733344722f556d786c4b7a6b58785a4b6b65337479324150375964494559413153707942775a2b383868503857666a447130717843416f62507154366f7153714d736c6170627452384538314458722f644358664d4b674769622b563532634c70756d4539623971526a35426b51564c3275524f697833646e2b6637556235306e384d62726d736f546c69356f4d2b52557566774b4741485030745271555a64624e4c455a37674f784b56613749394b6e4e6b6c57696144506e4a61614d43546d66624f4a77555071343433617179756f7a5161667342494259526f6e366c774e70576a453445777a3863696e546b44627270375a4d452b6379505637596975505531346c505051356d366e5257746d4776424c68546d617045324e6f5176376c4c48424164787a363855394972777331764b47766c3457687746613154354d3569753178467873636c454b39526c36494436494b423775556773474f547877504d39556764586e327942704f686b304f6646486574357270524b6d463144714b35356d5475563773696270693154785a5330535a6f69594f45486462314c6d346f59344b714844334d6f59664c755572597a7455317338476a46502b384e336332636a61664c53535841455a57394e68392f6f4d565a44455276437850324a65716a4851476168385174314c4575705863624c702b454b5773577854506c4945754e494b63644357456e2b676b506a6372757575524e7a5566774d377334686a35597a735849757a37765977474b6f506d682b62557562503841475263656d7a6e316d726344752f30427654574d39504b3965542f6b366e70703563576c4b7249463979637a37477575616f5a644a664b457a3073496e41716c706c77444e582b665155566c4f706e4b66514e43777431587a667879496952534d7a4459385a714f5a347a4b2b787863756762324b357858663962474e41766841775a384b534e5664546262316f64632b305a4b657535533548577931302f6f66744c583978464c6c304f4672576d54503976754869556c774365736f3153336e5862332f77424c5872436e496643566f4e5870554d627a516c766f4541716f4a737064476b766335725435384c6c764e797a4435465a54324f59716270526e766e6e5778476b4b37503338714c676c664e4e496c5056357073464e58564e2b6165502b6256516e3241722f41444271376b307341423979543233466d4b706d49737a4e3732644e5649734a5a6f466f51366e552f7744414b436c2f4732653133742f587a663047417a6337727a63716e5537546f72632f394a31676f2f5169315954357a54565231653036545171396a506e616f76694e33784a57414d4a494d6a7a67354c567332476f554e7a2b7453664a6e496f51493254577a2f564a303732554437527a2f41477a6b747975455a7150322f4e3874414a71366975684c65562f47715872344a59497443763566717a6471363176585555437a506e57513642664f6757674466324845732b4a6f67414c796949786b367a5154553569395070733063316f3854392b674b6e35733154512b51474633327a693774786646332b5357435a662b51594159754a436b354b5a2f70773163594e2f3672624179556d3933383241586335656d52397a69465646423064443371733076642f3841424d6b74434957527949564e4e42797731634352715a552b5453723665576b42686730736b644a6e4a4757645a6e70594c6c7055536854386e2f41636b6430446b5a5a7257546442326c67795532446d4a32557a71376656516f2b4b3750507847657833302f616c50424471696a6d634446453978416c4c41664f585a504b2f3475747364777375354d4a5171672b7349784330313061746d7777574a2f6e4a5a666c4e727672714d33653436414150364146576e367a31636f5964426b376b30594d4246535633343959734b327946745846554c543832545174774837443934566b6d69412b7a69413245665a5869364b4d6239366e55734e6c78512b79627272384c55746544744663372b3353726f5953326446516648472b4e6362324f4d556d42375830364842475a5431315555646564694f327a384d637554343436346235594e6877394941304c4854735069652f794e374470465a64467741423853635538537867666176756e70445362615531554769582f414c306c6b55326b432f6d304258564737336959527561426e5359682b6a476b4839624c4b72356f4b375a4353554e5454362f57353372496f5772483532783266707354474f65544f2f704476766e652f774364496b485574415846466d78335641764d69554d64724c3056703670534855543878617049707553324573732b6b6b786d787679636c4d38326e346c754548586e4d35377846664b535376506e7466644164495161723945485a315541617347666f454f56335a4454756a4a4b5856565a4356483161305a724c78592f6867354b317a5474514938636f477a692f7337437a446a6a31386871534e7955386c5a33344a716468613179732f6a5a562f50573179443936304f54774461325174674e387734505045376d744373706375555a4e436c624e43617970667752775335794d7871552f44563351304d6e3750414d4461333547715437514a4b61523237664c2b776a574c673667766f7a32385145412f79444b4b7038316c4b5a633471702b4838655a33556e55374c4d5669705a5539354a524e70427963576c7745756d3038756645567236732b504a312f473875656c48547870644f352b574a765957566250745a4e58794b52726554755337555453346571377a724c506d56734f393749662b4a6d5445786e68504742482f414247484b6d7959463530446b6a3958456451344d6c4e366d727579503451624570357656506a594645654855746e764578356d6a6450386b79766b4b524a50554f484c626b37476e342f78513572646961594b34396d505847714f4a6349722b6971373634334f716c736a4c2f65305a4b4f6244514e377863644d7a3569442b442b5069457971736a6b586b4663577a703970724853586157524e324f71615154306531726336353638763372595430703636557638414c6966767a5442562f6c65616e5a386f6f733065625450763067566e6b4d656a79314e476e44734a5a78476e73486c317a6b6b475470544478644c6a3750676d487977534d563030545064496d6e6c4752592f784464386a726358564c533248566f6a415454576a62727a62785671357a474a57424d7a3555395754354850753554457967466c516b30756f702f30676c757a6f4c624b5959686a4c454c52736561744354695a722b797a4f6f46784c2f77433571494c506e42442b577147684f776631766e2f79556d312b31496a4872763433723135766a6e38684157596b61473579417a7a56426c544938646f6f336d5532774273417169705448637062566443417554663078634155682f477a5359695a385a47655a682f5738536a78615048547746335a64556d715635795774544864546d6c3439752f716c6d643268714c5046585656734d5568302f326d53636c39477455627562646755484e675761323971366371482b506d764e67692b344645413758633779543346544c674c684678564c737a574f374d576a4654516c726c7434364d484545327559786e75463452657433724a344e7a5075706f31764d504733546e39544c724f66795052392b6b6965714c507830565554716c714b57696463796b302b7a514b6b356a6d6f647a69707338556e68484c675876346e36382b5038416d58306f396e7958796e4a386b314a69773676483974586b45586b554c716d582f774147393162343270736f6a5a506f754a44322b77777967703967383751332b6f6d6c6f36514c6d376f4257374d6232435146577a442f4142714d774d72554338443132524d307344652b69434e5a662f32464165392b4778337a5a2f4a365a6e47464646524938673432797951726c68633964577a6e665675756936344d7550794e6d6e6930386d30566e4d496c4c72556334336f6d5658334345414575476e6f50635159716c534f74484b692b6832537a4c37624c4d755752476f64794e544b564d4e446e36304d6452554433332b31744e4955456c7a6a68584e304d474d6b4356514969566d3033303254315432615765794d2b7457365278534d696c3476363577726e51303344384c7163316f6948774b6578595352464d755775636c7a73357053636d7254314336654a58744d6d6f444b7074746775574a5170304d2b7a355564655044504e7576636378646150395634576a79416a53514e3272703447646443724c6876794a754c6971705a33536930354b4a4a31524a6b59524d6f5953592b6f63544f4852536b477162484f3142726d4f6b545043524c4d3779625155373535656f73306b5239324c2b545664574b634147793069475649356469364247585059687a2b6931374c5863627751516c6c4a7861753735774675624c4531515a5a6446534833747135526e54765a6d4f4f2b5a314e67525a4536697264504b6d646e567535377770644d2b74536b45507a53746c66414434394b533751794a752f456e53584f716a6c695947727166336d7a6e3361656e70315472535a45327064775a36324d615644595038414f4e7a452f634f4c524d394a42625836794b7a6269557574586230366746714e7958385a53754f515530514f6b62475337707a51794773525548776d743374615a666f615a702b4436666f43516553733975707456724b342b766f522f4e66416e5373646d5a56477844505632416d4b58445a584f467839364148386a6f4845514b2b554b5172742b48506d4d766b536c414e78477953364e664175367347787a3650477170787a6f634a475065754835726e72343832644f4b514f7a4a4d77764c343338663039514839316356442b50734b54724c364a655a465647656d524c5a4b2f2b766a724a5861715347796235767438685a4c326d706438787a4f3445674d356d466f366d313170735a625133734d4a36546673554a6e2b766f516b767432792f684a533751584969705a3959316f5a7a7a70656c4d5851392f5443514372346935417765574e4a31774c794d2b664a70585652304a655535325652666d2f4d763679364b75677270325567514744706e496d2b646b3865313568445434456f525658444c506e70617152576543684c57704272376d677233616d6b44624a6b4673787345724456316247744653682f594654415949707a726f37544d42456447337364513136504e41562f782b586e6b317856304c41617667752f6b4866757253576c644a6a4d7350736e4174514a71717959386e6a786b6b59686a3535394947634d592f74746a6a5a3877466f4f6f66527065367a35474d486f4767357a52484f7049364c325735743335686846584e46434b4b4d32704f6e445035426733396c46396c3331304a546b6f59686c35474655376e4c58434b32707253784d3353514954416e347168374f485a6f48322f472b4b6958524f755273304c4973352b684c45734a736d3839737031584d6a6958724c35564f372f6a373770474a436d594163445450366c475652704c6a7179727158537a7a4e663841644a7968694a4f4e4f6f616339616973756d745a48386e414266514b4d564678777634517a746e64744251637734374f36472b68784d3758723866463278567946726c4c78396c54637a6d584b6c636471353173704d5670515968694a6332635072664a4f372b5849527a45457a5062513355676e7570746535466c2b4e454d37763565765154426a384e6b6132735a39697158354457494743374a7a373842546931303337556876546f4a6b6a6f74486d566178684942636d514d57313243756c615a704877466c706175664e535266414a744d4464536e76536f616966326e554c57636a4d4b676471707246555569645450634774506e7379625961355473637649334a303656544635367764797059455148774a7668507166684437476473766669617548516f706250617a4f646e58544a4b3039444f2b5450305a30593676613772724c454b59365a7679386d4b623456644f634757355050374277476932477562704d4e364d39564c632f534237564c6d524a425a712f4c52424d6e69785739304e523956776d7463373254506e50767636366f5a4b6374764a797639726c6b766e47543178334a6b386654626f785130316671656461714a666b4a6a526f6e584d7846475077363650662f7070422f7741302b57566f5139763876785a577a774d365a7854547661694f616c78446e786c544376726e4c3551707161586454534c7a6f575457544f74737434424839637a41526b4e546f335030567a464f4939436d6a6c6d64695a624a614e42445852665a487043435a5143674730736a39303061444a2f7671473239705331346c67466c4e5239796674327041693664564f637a616b707234313830424578624743786165396154336e496c79516f556c494f4331593573654154586f6c44564e45663869752b7971756578394476654b487138696c2f6464674e4b7579723455786c79546a5a42426a6f506c4b59424f796c315166697a33704b514b315842512b79795058556e7130524231526636584e5263615857536d554c71506b55756e37567749563752392f7a4a43496d67506e4548315341577a626555694f614e636e6b435134696a5536564b58437954506f536e536c443570587a4f59522b7a745877432b746e514a4e4642637a7443753538504b7a5638454c5471705a555769645656564b362f2f554f396863554c707863395a3054484543796c4e4d712b4f2f726e4179664b3733527a6135717372576e34305975327366315639554a66593070744c4e576c66506f725a516d726e4c565649423441767176622b7a70586264793751337570547a642b7a7a73385172336456315759436d747a6f394c4f45707842304c556e4f786a52545558374d564e6e6d63664541557969453377665839412f7362706a7a527464705573646b543130394b6c4d424e7a5a45535047766b394d31553556554a734b7a72423443553964416f2b2f4d7845786e554b716930374d76504d4c33327a574f4e435a756153665939515a71663472363971702b694b756a614c61556a4878703879682f77436d45357450674d614a6d7256756a335543496a7a35396d6236542f3436474b656e5558524e473669326367397a702f744b5773694c2f41457056494846416c49455a4e6a755a566c326f414f726d6e6a4f4f4638747a63714c5756574a636e7874577a4c4b614f78523043755434515578685441786a666a2b4e527a7874506d4e742f534831497a396a4f523433354c736b4f74486d5a777475645039646c6562492f3841696c6c73786c5933732b73317958664f5048687a712f59665567445638586e61767856366a5a537a776e4938387a6a792f4b49706142425a4e6372516c55303057536f57743179317448324373782f35364c4f41487654786f395334782f716152615a74465a3571784d2f36654d2f624d2f54385749484754387274706e347937732f6a2f6b3370687462475275364c4b76462f4a2f445a4a354f363453334c664a6e714e57774863756f353739695a617959432b556645585a766b36507433705764534d7866694e46692f4a48773751766a564c34726f356d4670775479715a7a78546e6a3363646c6e3831484e5432354c6c42646844526f6151724a45772f774169326b6e79636f63783376313257786e414353666b44347a7142734a2b68723072494d754b71643369514f7a78303742723061417375536d762f7742596a304c4a7a4b73685337324b4435765a442b6746737434434a364871643435795733524878437a4f6451694655476e466d5368734b6e7a6e2f65774e567a516e64386965304a53756c735859767454757967703479767679684f4a2f48483878443976314238454a425a2b466a614c4c6131662b4f6b47663455796a49744e4d476c342f6f6159614d3265533170706e6e64585451344b4c477a342f317672482f7663467178665047654170342f5633302f324d3779616a7662705857353738753964766a572b6b6d51563535495746506145385974303654316e53396f6638796c4a6a34746c672f62736e62625634525038414d51392f71316a5a6b326a764f79686c35316b786d3976676534356545332b62735332436b6c30564e644b5030666b587963313849744a444f4a70576f364a723437736551576839552f5450724e533757586b2b50514a4a474a6b446e2b423632587134716f387a55715a64587839432b542f614b4f684c4a32703441486d7a6d66372f414f3273346d4c54484b4175583632656e4774546a5333614a68446e73354c4e74352f68746d4c59506466494b6b4f7855747455714853577a486f4672436c4a50787a4c70456d702b46733170704f4d544855454a765666776b6f4e4d73547a395754766e34703874736d52344357747a61766c795a57356e4d4e455658577a7930732f692b4568517a495a506b6762686e4d6639566474752b4d663977477439573532352f6939352b6f50386d4b477a77544272654d325a73724e33344e54495470464b4653536e43636865597467586370314951734d79503357535474343235663142573331716a6554614b2f4c4a57332f41475834374761506730466234714b6f5049684f745463386d736c5369346e6469543752343944677057303438367163577a387632456556363065445249676d35357a6b42466d322b39613576414b4e4c374652446b325a4b61344f6c334d495a714d2b36644b4b4c6136506d2b4c35322f716152744c5a2b583742504e2f4a623078305a7850613951734b33436e4f65526b473134703546334f706d62766a336976682b626a686a2f68584b766e6b70613461514f6d6b302b356254305530744853764766586341772f6b7034546f31353361764a2f44363839536830657868365563526d6332317033744b696237465878466d70415964436f55756c4946464d31514b73414548564d366378312f722f794d36767950394d744f33657762665576786a4e6a687a6d64636250537a7a6b423657584f5774324f72504c5158376b7a78304c54314c4854702b6f48766f3731533351424875373964762b344930657476705445316c6a647371346a50546e733178394d664c74764a54384e42654b316e5a496e5061517a7a7178624c636d4b6c59442f674c683473786f397a33642f442f64496b477836332b6c556b6d716858714a3438494e72592b324b373070304a6e7a504138665a747a4d754849316c446d6d7a4979356b6641376f4a4d71526e6963305147653137752f682f756b4271665750306a7375784f6a76716f66556d536956656a36646551346d355a4d37442b5056304a7a524b4c635851747a5a324d654c725a7776475a337a6b732f617438626265482b34432f4a5055503057726f6d765635546758315559353270347a307738714f46612b3070796855584733554f716f70596e7944516a47706466375470476445395a547a686d5769757048534f7635684871664f50787931323672394348304b75346131466c38703950504b372f7043673857746d6c756b6373672f77414c32794847444b346d594f55716d457a52624f5254564d58386265766f486669766b3334323750437a6c542b696b2f62454f54332b5239506655537a5538696d644c5256717564704b68633749316c664e6948312f55725a37492b4b7662372b38396b5447703337702f6b4a7a6765532f6a6866594e636e6c3334387735696f39744c4f4d3844395a4b4c5a6232537a7a726d6f4f6e53344f624c786a4262317472476d6b436c304754552f4f43706b7871642b3737433837504476525453757a73546765696d576a756c705431503066442f55476a35584b31632b5055686848572f5832456a775a58644d4f786a5133537a546c6e70624e4f49567a614f626d34696161324e2b502b65634752445836486331746847726e6e6a33346e6d467a593730564f5046736644726c664844484c6f44343331344c37547955452f4f6d6162346b464a4554666a61647743542b4c666a624b504c7074583863705859524e38647a6770384a39525a45393238772f683867317159397a535755654f6b576179514871763251544c42636e2b42492f7076762b623139424b4c66485052655746326475312f697a6e6b31656e54697752654165636d716c47383665454b4f72304a354b5934304a5a6b384a41796a4f5233674e7977596c5230526d30546d7537497a5a6b6569625a353541305078702b536565563833612f533331433864796e685235515576386477344a7758707a382b537856544a727166676238502f4146414b63414f63333862663668444f42364746506635466f5865674e4d554769375771313576446650494675376a2f41486a6837683359644349386e537a6d4f6a2b7a4c4b554e54674d2f727567624b59314f66736333726a363467446c2f2f5738612b4d6d6e2b582f486e5453694c57435543394f2f4b39544b52565a6c4d356e3831377838674f69465a7a3439544830493543707a485674616b4a356c4f63353436377639516b794950785364616a50433338656c766d7534324458792f43665568757051576d57666d767a4876703168726c7171783435552f4a5451484b71706a436c77476c543173366e586d2f31562f6f436e6833692f347a744f544f7a664b5078736d6f6f6c626e596d632f303933796a4452424748754d357a2b507342776b376330476343704447744d30383443574f555333706d2f53323459346e706a3643354976384149646e796638647471545071644d704d2f67766e75645a6a6c4d3666506e6d37394f6a504c446f6d6a5a506f6d564e517136324153556e2f414b6f396d5461383849336351665a366665676d463231533550783442477130612f6974386138313054376173632f76645376543044476d50795a4d657373656d5434417254384e42394364584668575a314a367a49696c587037364235306c4454335078644458627a43765775487858314c4875533647754d354d376c75464c4c2f4f53733074445136316e7638416a4e744b624a6b43373666737476762b62313941525a34482b4d336b77664176797a385578686d334e5273584f592f6e423563573036696679434364575a44754b34776a79632b56633769396a526564464d78674539644646596e556a704d67523552344c2b5062357671786148347561482b365939624f323866314253715551695a693031316e4a73535535396e526c53724b2b387a504e356176784c564d36414462614c3337357346746a302b3948666c674d6d2f69326a506e30614c537a362f472f56765a346d627153722f3373793967364c647861394b4d546e597236796a322f735a7250656e6e3255577433626f2f6b414b6354304f53544d3349522b48766b5656446f4a4e332b66792f4b4e48516670785233414431654e323055385a77735857712b554f6c596f4f752b66324f702b776f3533586a68626445694a613369586f395a4f6962787a4a2f464e766174314678732f38416d30382f544e3435343157786d43465763697a5934663841354a4f36794d6c496f363251416342526458523163366b54625048644d66784350316438456a7773586e472f694d335a69732b52677277375a557350516c304561562b53364c504c3547465a7559676c37505a62387a706c2f7432694667554f4f2f767a39765836696f644459394b736832744b76532f466c4445325a4d612f35544f3831797452462b6469594c7457356554384b33616d57327a4e5a5a795546514238556448564b643251536e76472f774178443937796230686d543133504d2f7852526547322b474b7432586f7936616f473663637375706658627066456248496a75704e626c674a63413948504a704d2b312f566f6a5537363239667a43592b51656a45747170492f4d6678683230726d7934386b7565502b5a7754614b714b697a657a34476e6e4d667934584f7a394c6c664b6b2b3578324447756e744949597563582f4141322b2f7744595254473868384552484c6f5265542b67574c6b732b336d4e577a46387431614d6375374a4b32457374313743526e7a3066785079586455454a684d6d6e767356394d75514a6a484364774d4e322f535a786d637671542b5063744a5835765948556432737a374e5573343331557a505870423348574f35705171617433656d5361564e61735769706a6f6d4c6646576658304564777150473462374634336c76343376466b534357643250725374416e7a34616c783148736c524b73517a5761424d63384b61434456464c4a766d397a76366d655058644f5248745864384f554b3749764f2f783130554f78664d5671704c493869387359304f3574576a73446d6b395978325a3748313576733638545438435739584e52394f65716d6354345842656c6e6777667957705236672f6a3556727431555a375a55772b5845395157793746564e74356750366c6e59793670386f457033413774755430372b4f64473250395165357333676d6865693666552f487172553139426d6b4d6266444e584c784458506769325545412b786b4246376847577464464d446b4348784f6b4c33786a782f71487a553338316c47495450564c3051753172483639732b56343934726f3053466c41372b47626b6147746d365566456a437771757a554a56796c4b7a535351454f396f564749384c416c4e7565473647416e656738302f4637503970612f53646e6f38706f3241796e3361677230474674464a62523761766e364d76587a6a616e5358515032325164346d63546e626977526e386c77394b71345238382f4861624633666e796b366166482f4a4f4f514d5343694b5572376c396c57354d746855736b62305a776a324b6f5a6e4134334f5a474a6a345a6a3138676a587635685579712f383339417649626372593064444b7154345a35696974616c5851783163386f6c74577a554661526a6a635832576d38452f7553386a424d4a305778506863506c58527868786531354a3641426f6d375270684c505435566c305a6b47474539315a7a55767966676a31466a4b516362524b6c725661712b414166574439522f71422f4b6f6f3744506e33332b6a75724e586d2f786d5a654c504a5a757a7159554f50695332566268504b7a785736664e2b44746e6672557670425038416d4b703571786636684f76454c3865545048354e5430722b76733267454f4b76583837773651675a6d30516e4e70425a6f49717a7930737653634b4f4a432f396e422b71537144356668724f376a31774a5a485a42304e477976797a7743476a367a726d64686a386a444b39306b306b4271316778696d497448354a5a4a4f56327339715a336d663744324c69375553544b3273625531353563642f674e506a4f573349706d694450386a79614a6c565a2b436b567036795161422b6375706e75644d65696b3576495530303149397a72503643776347666c4773375679355041366c67326e64716a784c764c623230637a496e574d3534387858324a387639697a3461432b63774271515355396a304b636f4a39345048565871765a6d34766a314747392b55644f6a6a4e62643542576851554a783433667a784b4d38564f654c70682b5a50772b2f37487a6538507276444f312b364a462b5a554c344e584d785579444864584f6f644d63786d6e2f6c754b7a382f6c436e5a5a306648564375794d544a514c5741307556796854514a4b7071544f5a794e7376463573364f574f37566c32555a31664a4f726c5a4f4636727a6a7a6f36496e794938686f574135715373637269424b78496678767777392b6a5079643843375a764e76546a303878636a6376386c6e77344a58686e51352b69562b596a537230776e6f476542534d6d663757773074433953666754396344702b58343147626e6e6c6938384a36514e2f66534f38645354472f692b4e42466d566d57716f54656c6f3745394363305a335738694a6f6649544c6d554e5738532f5876616678642f77412f666c6673794a56363065714532646c4c384977645a4579627555792b52576f567879355a703533557078705073796c50566259564f656e676c796b542b596b304135496d427a475a695038417837504e6d6635347a316e45386476534271426e5075586445576848504f6956434579426f694245367533486e6f2f374849625030346971374c2b36474a732f347975633670314175506b684c5251364f74723547717a6e536e31504c31304a7a31706172505a526e345473304246566c684f75537a6e7634496e4e694a6d47647a55754d777773616d52587361714c6a4251337637354e6354774d475236705a4f6a6c4d55333543624f4a46786c426d5154474b41592b62683031416e643136483946756775484e7a363377524a7574646e484e436d646b354955704246796945484d457166736c2b72442f6653436c3067762f6f4d637178382f79545076736959434c5570425674614a31567a4a7271476841736d2b5832724b65646c4478393548774357614f794b70706144766f705748324e46584f4f2b306c4862786b595849306850517653627835442f30312f616c2b45576d6a36792f733066575658395a526630436d44616a32495634394e784d2f4c714857356c61674f46624d6b423151626e6a4843503033766f3149566942386237703432473664396e4436637a6d654d393456714a6942794d36502b5431725750735532573467566132614666314a7545506b452f47554a7058466333357573446c4d796665524c4e50493534434b6d465059784431654f57774c39694761314d53454c3075797761476c306156674b6a4c324a6e7a7a73556867646d66387766485530464f6a427172694e465046576e597a7058555a636232535376546e327454506c7a30506d6655313633486f615757727646483966676f5638517a4d72363549664a3465544f686e584a6849307235315a2f44616c4c386b6c4a316376586a582b783252556a3275757134727645685964414f46505142494e6a42784768357a546173713073426475624e704a73466b792f7132314a71733758626f667330683350735430684a684e48686930322b3930667967724f4e584d793335486e6f754c362f76737450374f616f415038416e305a327a444f6c2f7741684973306f3531424f43365070674153664561752f4b42517354507a4a4d716b6f394932523168324f7034326f31564b57754f663753703131443968675372684d2b6b7236394d5546524b2b4a3350335141694b69596c736f7230506655754f48727372375746707a7331475766417150546f4876457057713565665330424262457532444b63314c6f4948413651796958744c4746504e7170584576787446465348625441516f704131336452556c574f75746574504a386e764f6d78312f79386174502b49674c364f6f6c6c4b5776793878544b4d6b78435464364b4b48545a39445436696658716c367469686b6361334374677535386464507942497864494f4d30694e557144766e703156746a786d6164337a45706b38474c73574c4b515532634b474d374c6f2b6e7939686d31313768584e3746706c454d4232476150633837632f69352b565263304a6d57716d6c304230694c546f7246565074364c70682b69306a57386d2f714d47476f76625037675455694971637779736c7a612b2f4a6348386d75427162754845737556616a59366157522f7657314c46314564535774452b39556b33434452417a6d724b69762b5162456362557966617a72514c4b583845716e546a504576526c533862737345715877366a415a765a387068396a3571445347514a577831637a7164435a624e4a3764624e686358492b7a5534726e325856306b75536d4d676e737a33753436547077754f6b78675562676f5541614356494f747a34786f5a704d64786475733830736f42696857614452546e704676336c644677722f5672572f77436d6869652f61435945673758722f6451684d73374c324972445030652f48536741585a524871554c6d6b2f6b48736455326d3750397a46386378774f2b526854504e4e5a686c6e396d6d6f716e55746165614d5a31766468796175724c4e52784c6b32446a306a4438747a46354f5735684f59632f2b3354593251547036644b774836466e322b354b6a6c5459764c634d74504b31376b6159614d2f6c466f4c7a4c516f4e7a4b6e7066376b6b73695071334a5534322b2f355641766576496a306b35326141576b6c4f684c4278316439375744707955514c343656435147375147723670634679772b744e3962324e457957585178726e79696c7165795a6d786f5730466e68585a6f46794b65584d2f6a304b4b6e437a535a2f703748487045464555314a47426e5359723751412f3041357675614d73534a463975304a633247374f47587353707536512f3776686f6a4a4936432f7543745156534530794a796c7a6a2f77426858414450564375584f597564465a4d6c6a6f4b65574f7a4f35335862546f4c2f4149337132396f6479797165517442335a323864372b427a337363535674414335577372752b434f6a6d64644e44666a36664e43584b516776672b71506374524e4756394331694f7332463365485438466a50633053503456414872635358584568414b657252644a595a774c737171696f6e6e61686c51546945304f574f67325256444f6d5873545961545346435342775a6137577a38485052566d647a53366c764a4d3336617447365537522b354f676c4f423678716a4a4c794b556d394e6f646d516675374f784944494c324f4265766f4f656565786e632b4f36744e446962705774723250473364484f7136686d58505664562b754d3473766b2b554a67584a783076395469633478784345396b7767704e5468552f5068486a436866464f65676b62706f626451363431324954427a61736e344535634a723365347a6d4e3142414542655155365765397a4537485a705939625135714c49682b69582b75766d64787174516c353476496f2f6b41464e5330413933372b3463365a51556b314974484e6b507246446e777351374a6459396b70567348496f656d69705374425370386c61574f4d562f415355685a4f524e4f6676756f6d596d4f6f5a576273627459745050776f7a7a35703343532b7970644e4d36685a366149527234506634647a70645254505a7833362b793433664e4b30757a4f6e5043617a4847417936515a373961716251645579624d58433555624e724a4265696d4c3253764b536a51663245557a7366784c4f4c41506134574177756e504b756f6330624f6c6f736a6f75656b6c4a5879764d6e6f694e34323241696234767064314d76685176374b7a592b78427765566457596951706370587a573257384177724f573658546b6951367636362b4930744851663230312f5230497a7a32374d637a484b5250504c6d6931664a772b7655457a794e376b714d71593439727a44665a3153687054425253373333394e71724130513678614a70632b67653764636e6b5856334f477a377251562b6b4d34502b54564e494f47366164714257476e3578504e706d6e55696652576d7467743865536563565935744e4d72354c48664f50365a54786a4d39637a4575417563765430763841707a2f6f4e4e6c6641494e4c63736d7a6675756575786b326d6c616564746776424434797a597833576f57316565544d306c746650385a4f3968706e5a33355158505735504c3741786e2b50534c677a6e5635314a35394f4c6f396f724f69335131575333794e415666784b58664778307939444a6f6539663135544a4c58444d6333503662362b497344787046452f63356c65744856547066586b7077446d746f6b796f356d45557247555365396363613173316e3942376b6a53457a47716238612b752f724b324d38765148526a6e6c4b64735533594532577946466f56764a726f6571676930696f306f364c46437458756c6c726e48677a69667a6533324b6f7044685141553850666c6f644e6d547a31705670793669614b5a7045742b336c6857316f534d4673724a2b7932524c343131444647744955664f43326b36634d79566569576b4d3065317a3977455a376f3448386d6e7a3073443750526a315751326471456c5a784f396846504d51307a7336624b47675865674f324c5739416e6e4132587946715a3864535a71595a6954774666392f344253566146776a484f353348733552305154527747424c775a6c34642f4e6b4f385261313275714b7971617a687a4d36436f522b675241744d576e3353644c354278737a4f5436532b6d4442514d2f332f414c6e515652373577674c6a4a72364438372f5369596b6a6144615658535035464d714d357165433037754b47666c454d5049564f3437397a42512b59754a53667a573550503743517977424e4e4c46334c352b3545535a32653671624d6d644f7968624a474c56474e79487a37484573736249617a584d42574a647a39433869436f44686d614b576f7034584b4e42327a647252736c34352b59306b647a5156324d74503250756f57764e6a4c72426141742f306857543341616c4176477879356e4a5635564c31534c744b4337576e6f6a57685936664c697a4a4959476b5a56543058565a6f3963747a614355427057667865333257785034503669554d5131382f45543866565975566e3334315374507164425031644354543557304f485a443936646e4a4f673259556a3731546f5a775541716f4766547a7634366a376d596d6831735049314a562b30634a5a4439466b48465964516f5a2f6b756971636b693875696c7a506173424268686d5952546e5a4451634c46716278796c61454b35692f6a6c374831594f537a387a79617448312f4832456c2f444f6745506d4f5932454b71486849624c38342b503458653135456f49526f55463353354e446e494c51456a664637667161556f4c577458666d6b42314d312f556d723941304b41796454783641614c7044466c68517a3257385872545056395051306e544d5765536e705a76417a52516638416d6674434d7554304f4c76734d4535704c34556f586b3175654175486c7562654f5175622b505a4a3952744a547a7566796a35724745706965535539564f61586353433165787759693955363035527168725a6f4f6b7366725651466c547436487835636f6155756a2b755a6d61715969426247642f3759364837574b5647786a674a4e52325034732f6732767a614a6c5139536d72543252613631315046545a4431536d436147776a47316a75314141324238695135395a4a704441572f787369392b6d4d376e5672335a4c444d31786a70704c4d7535576c456744336c416f3073385a4b4f424b3665674d38476d663055382f514c53317043517266665a484c387177344445766d726f755478676c2f6e56336f3369706c6956672f764872635877705033753661534159766b583653466b5875686d6a69746c734251574c697a2b6a503841424d326f3176586f45365455576d626c50544e58762f77543962326d414567386454314f672b6635596b5850616f573252564d6b476937716172576344746975436d3269474d41483457664d526a2f6734675749676c4d6839556f72576e3754533061546a717470595566787a464776363958506851764e6f5641544f2b2f76564f6e4759706e52392b53662b674a372b4741676c4c4d6d2b6c334772443453572f5853365970466a64637659706f343471464f2b45753963382b41566739506e4848384d6f4c50732b72374c4a6e51482f467a66554f637165716c6a73696c6c6e6d415a2b7536686848705373584d4c55722f414f74656c676649594e4e51595a53305832704a2b5678497a5475664a337565316864656d4f696b366b414a475331735a3867353866576b77456e3777344e4e4b6e3942526d7a5977614948485249484831634452616c6d664a53584a44645a58704b444c4a7139526b7161714a78556733556c66375072482f6a584d4879535a4f534571614f71695a7a522b46625a596d564a6d42624b4a79626f545335342f61426c4d4d344c5761544d4f6151474c566d557870416f3243773669707269635a46476f457454436c484f722b6e5575424153554f396939425656546d6c37572f4b446e41524f613846632f6f425431352f45706e2b7869545449665a4b596d49544e72565470305738474131724c6964423261763841532f3841572f3841513651706d5350486739344565514b2f6b6374796870634b35336652736970682b53586b384f6b6e4e733578576137676951747a55725a774b5842796c5239422f515175634d5a6b4d6846306e436f745151695a505076762b4b644a4c30443039575970775056355176356c7151303551647850474f51346d4b6f41484c616362584b774b61673441707157755733734a70796a6a4f666c614d2b5436764875425768562b3138594148384b515576716a623879676148704c3433496a6b7436692b6341556c72637563365173544e6b395759684973714636517733616e467359426d704c674f49564a623732686c4d336f6e4b435754735238327733577a3275646e6c4f72714b766e6e706f5156784d574d4c4e72765362516b51616e33394d5073787155424875687a556d4f2b4c674936594250336f6a71744d4266514c2f6b7a78743967753047706870584950467149677044324344442b46676656396c7a57354e43456e6f57525555436a4f6164636c744d30737a7333522b465641723678685a3435364a77364642383934632b5754702b31594d6662523946552b6452334e3079626e743437573051704a6432644573374d596c4e6f6d6c537a74565648796d77484b49666a63414733737a707763486e4d576330724237585335546b3668567435496443555a56536970714674487358787a485842396e374b4743465375302f4d302f6861446b736a7257734b6649435069583054556775546b30674a7371596c4b4a5655752b4f656a6b63745345713642796e38775565777959414b4262756a596455376d3148386f56584f756d733744474f6a3138533355355332526b5432635354737555503841412f3330306b51476e2f46494e706558315a622f41487931783075746d706138433538696e4c59734f55567975714871542b463036576672704a42523970634b66386143426849336a6e56564f6d51753231575a304b4236755371564338386165457a7335506d6c6f52504f584f6c5774716c542b7736584b634268774d73306764715831585663676d6a663334545554646e4d356d4d64666f68493158656532793571474a37374f63343668576c375a766d4543366746733465745a387665735147595a72373963336d3948786a383153626d694968475539544a5746316933674c70695559304f704f3477576e2b2f7744474e6c6c62474e4c6c39535856507339306f70476854464c6970577236734c484c5a5852787254375078772b3572414d58556839796d727466472b4e70384757573151305a497963377853426d2f6a776251732b6a744c4e6276673979574c4839564749676f482f30412f524c346669314c666c544d6b574a65545154554d44732f6e734d6770374b42513046504b50544d4745773355706331496954754b416d3052473371644b67754369486a6f5a5a6568585632694565557130506d566a3074306b6b6d5a6646732b6559696d655378536b6b6d483941782b72424e31544a54314761464a53676e5063742f7741354a667a513133697269493364544b616f2f66784c775a2f31374766435a6d34772f6f4853596e5831547873307037337a4a706e5776755263714c4f675774616b78756758387a334c584f6d7a6955742f7a593550412f7a5758522f6f4177486e73396b346167326c784b757a6d306d3834775a33485541543031454269746a43594b58683150666b704f6751544d722f414b344b486237724631616a70575337484c66617169736b5a35525a444c4b6b716537572b73646a444b717044655553694a66575438774e344b7564437664384d374f376e52555161646c39636256356138796c3361705a657a54316338657574614d49536b4b2f34325a58732b466f70676144582b39706e774b64386c523262786651717330313050363966486c7a73533066516d5855364a75516c5362494d466a364e4a66324359774a756b4469452f61772f713270326f456638517968747966473672514b435758506b5439572f6235507a4a797a307669624c664162754c6e5a33364d3837566a4f51734279525849594b2b3548625537684a6d61716d7169546e74736d586a2b5053565133434e6e512f77424d56456563636972744175305239684c555a4d52645438795569667571364878466d49727237525677567a6157476c2f617335746444616450566e34756863316d6a4d6d36667362547957614f56434b65646f6e63505a4d70715767667975482b7230367a38684763614f476a565154483079535a466e7a56706e7a2f414c576e4a4d584a527a4654534b792b416c644b3930476f62786133464a59413070536751556d392b7a495731396f5043356e55527957367861515a36365830614339455a61697a35546d69626935552f4b526454334854525548312f68586d5a7650597474626853355763786b515878507733794c3148306b655265515833654f5a504d78316d5a744e4675633843796f3557766c65344b722b58536e4c63377069734f4f39754a33367a5a5073502f63544d563452417671335055764e4c477949504756565a4c6f6f45775a6b325a797a766b552f4a5336724d70685a7763584a64526b36544578474c542f3841756537306b2f384163533145522b4f333044505a3039436c524c73444b756b6531476d35437635464b327a726c30724c7061454f436c6453314f366b576334594651476650386e514f756634576e3369726465696b4b39467348624f553359744b65752f554a646f6d37634d56525a4c49666672543143757971746246784453617370504270366c4173646f4745766b2b6e6565524e654674756a383843726530305a514c75354c507054766e332b4c6a2b336c33497a5855634653697036417a664d6644426f5145456e786b3152344d584a64726735495a38525a30564f4f4c4a36557835316a337a554672366e55735a3859436732456959303061766674415455755a2f5662396d52454b746675336264334e504f6b7a4a357256555754726c6e30714f633864304468326e4c6a2f7743426e656d555147637065742f39486437702f61446a5a4d7a4552786b4c6f775046664845726b6d30517469573930795979554162656a6e574f6172487552576451396c2b4a6a686e58557672667342413773776d4847544e524f597a34683572543475616a6e7864676a7175306f4d36757654376c566c6866596e64564a327556506a737564457957455365684a753663712f67626230516453453839664d57476a7738307a5166636e736f5a446e555a6b6e5a326a69665879364536564d46325059333768617a66346d55532b4b6970695a6b7875477565706f79537a5a2b3838685a336932506c342b5737356e555a32566c354267317a4f7872516730706a2b76646c424843424c7857537230506c576e7433416b315676537a3639476e50324c5774467034347748542f4143624538663532685a4a7548446b6d504c307249767157794c626c5853314c654c52453534522b6a70484e336a5261314b615769704b5649734b73524d394979506b756d506b444e4878796f5a3854467a62305a3033636d68736f4f4b3162675736344f5646574f3050576167756d4c394b68556e34574b366d6c583130544d544567706a674f6765624845554f6a6d7175794a5750357058652f732f3841697a545765797a345a3648485237656e77467a43796b2b7a7454396c725a354578696343665a336879364a6b5a4f63656a4e324d57736279533978632b5543574430386f4772393836736e4c2b546e474f55776e443866554e54524d714a347a4d2b497057714f36394d6e64526d6d6d556d52635a555472746f375668704f374d544e5559784378795964434d6e542b35557271506c614371334b3451547872506d433633706f2b58485a39716c317357684b356b396a3658544536484e302b746e714777566b756c6166616e376c4c6a6e366e3677494d314e5a2f546a32764d496c6d73666a4e66517168356f4c747259457979496d6c667a4e737a307871306b734d5a374f7a70687055684271347a74694b4a6d4c4434302f3141544b4b6369634f596e54524843576378736b435731547a6449475168566f315536455a5a644454544b7671574a6d39797330474f476c52396b5450667a5a444c4e7148735066722f587471424766384c6e6f6d376f3341613171476a79496d44556b645a56435a566b6775704c374351653568644252484158704b36775a364c723368727752464b4a773858775568506d6a643863722f414f4e486a5957707579336975565a382f774179537454666d535039424c4d71364b6b356c523458784772507a7170513038416f714a313538327957794673366837394e6766796c684239566b6a6836662f7539686539345930644b574f6251442b5457754b746b787048756a4452637832556e526a37387569542b7468625547624d346b4d4562414d4b323961435461415272374f6f2f69654c68787370626173355a5a314d50637165644250304b4e4749566d5537552f414d384a642b6479766e467766456b6b7454525343484a36496332716a625161636b2b385365646235464d6a6d6e5346512f4973617543742b6841786844374c76684676556e382f7744336d2f57642f55392f4c6b532b64432b374b5a4d7639767a73384939485030545a32734e4536553947504d3472535251554b695a4c396949356b67716c30416d316f6a5350455146726b6a616179626e6244587a512f715a5370776d396d70613856784c65794c506e6e5377432b6167766950346b79557439796166387a414b653331454647577875474f6870556146484e456758546e6e5176506e37526c2b4f45672f384e366331363861316c5537716d6c4d77722b4970587a2b744e507648334e6c71536b6576377a36734d6239494967796c39464936303776483753795751756f5a704a2b526155313864316f41683062754a372b306e2f57674f77767230707a4d72555070734b754864363139736c326a6e74735936744d466877386d73393838374a7842722b66585645376e7843514335484f442b656e782b646d6f394e7371375646697a546e506b6e6e53356557374d566f72524a303873535374365675694e4b6950345a6b75344b552f572f3741575972676a557459364a6f586d5247476f4e51396251516932786373595353664b327a593543784b78456b6774503841446752664d4147426842764c4352715a6a6b69672b774d666c493678736b596d55344a623334563039306d5635754c52556565726a2b4c465351703753545a754a4e785445346e496f7a756e7030646a6e496c304f79503468305767644b364a565a6e4a36442b524d5167506332466b346953436158313356346b794f312f4f6d4d55582f5a2b73682b6a4f6c6c776763776146557a4969674a31422b3572447a644f6a5737447957706e4c7462512b3950374b4465794836796a616a376f6b34464b6a6865336c416e78637864545364796557417165543552786330496548337661744a4c4653684b4549555a70666375306b585572412b715352746f585a5457317338633233386f6b417a366649717847614a424f547a2b4e505a70733636434963326458596c716d4557424b46453931456f53314b2b587555624f502b7430556c554b66532f77436b634f5779332b4e306b713148646d6e5259535a78695746656d4a337546735a417a737038353779492b6e577a3476732b354d632f467a665556446d6166644c5a7158705a4846624e595436654a7351756a515848794f5457546b386a735733507a51304b726e685251715a4a2f4e53726e2f5955646e4c323563626547524f70446e565546374a6f6550724d2b73705969474c6c7a41517a6473722b744f464436456b6f5a77567a717247764f78676539724f756f2f724d545669614a627a534f66532b6f463875617962537a4e4b6c5533574d3530546c58375a3942674c5a616d57315279474b6e476c6b347a4a5558394258766b7737494f517a782f4f53786b624c494a417075794c4c346d5a4f72516a535359747a794c545730525942664a777872346c466e7a304f446e6557727434376852656b534d7a61446f5374686e792b76757a79422b6869563950782f4e762b4750512b6e6d7a704837384f6a71455050694771676e4854385264576f4332443343706d7635413551506b67667634322f59656e50335137783666717a4a594b3649706c4f464253304543774579744433715544574251666133374d696654765a4b58767343374b64546d6a4e5349336b64385676454d356c49715230466f646f464c6f66594771733039436d6b68647748545457663159546d686e3361456436384938324f78334b7250355a536238385a3057526e59302b35764a744278616b387361754d573854372b694e316e4736497135784739356a6b6172696454354168745577636f374d2b4e635970677a364b6e443352676a523072557a72326b45734c326665347855356b53703655533661666543464f67744f644769545152314e43363074643839476c59686c4671594e647076626f6343376141745364704832626c5042306d394667543263414b2f48396631417073527035706143316c555379356e4968795a657a416e616f676c4f67674e5773774f2b32515a31736c4a66414f544270397a756b4a2f50734c497a53765a4a68766d596768526f7a6f4645366b5a37374b43475639526e59417561355948396f69674b6562327747616663784b5446664f4d62517937636d3674783057545a4772483965612b666e7733565a683563334a614e4a6337666a4b69706637553076694f6e3737452f413336736e77545872487a41504139684979676c4b58374d316a4545365231504f784c2b7a484e436b7a666d39642f48763046364536424e453956456e786d644931544f4371623971524b6f6c736232704a6e5442705a352f3453433736617032314b5a466a787a7a557357507a4c4b6a6a576647784b2b6837304b4562654f5946526970394d387a5a427051417a63672f6a6648776646527a71595a6449627152583235333862475537484f392f55634e387348786c786a683430674a386e47784f6c4a686f5670784d6e74374e78375a3668575856647a56314d6e31574b4f71466a4e44516e62374a7a6f59414e6e44357144595851635133323871755a516e4f5136696453377255575a395447315a63306f4f574d4e564475516b4c324c7663397951352f487555594b5a30306f2f6f506c32614c444145714553725848325674335755426c4d304a727331782b7965716670445243746a51374d706f4e4e667a413769666e542f515348426d656931394d436e64742b6b324a3747745a5374337958316e77587836626c66594559326d7a6e796672356b2b30456657506c4854435472357a4f71536d356f4b5953714472647354444e51694b6d6577325762485034636d546b2b4e4c6d7258336b3746645363376147636f48326839504c35695570706174616271564b6b7134735039354a71595455386b56424c776846466c6e554f624945362f3841732f38413273484a656f4273316c394a4f6e37322b635376574b475756646d6872734b58397136793547665332696f5970573849654e5751665a34705230752b55584156366a6258736c3771746b304f644c6d63624d70524135736c45716c615874705139623169355a6533326b6e3367627659324d6d6b7877442f414f56706d5972574674634d6e4d70484e47556c76726d614a7a4d4e4c59505a4c33355030365679543677685a5344692b46684e4834663644354b326a6b4a6376757035384645444e56746c56544352566d6d55564a4c59532b5566735766523466474b452b645549474653666d5a774833496e36486671486278485275344a38687272456e2f5a6b2b5a385964744556792b79584c704637326a3166472f37524b666f46504d487a6b706d354c575335576a4d615241323655667a7466336b747a744b69516b4430616d64574d7656643439764a774e69652b773143663841514e583867556a325561516e52326f437258613144386b324f742b576153536d6f51703057646a68536333616d456b76754a50705543376e7941433272614f39796c69684134722b706f713556496d6d7547686f546a7a52425470674a4972637a4a3455356a49526a2f75482f4942464951735a736b6c72415a594d62536b766f6c65324655534f6974546c6d62314b4b7152556f392f6b4b69465a69716271554739426c49445a2b68683173796b4d6169426c4a70675a6c767a75783748585239586e2f5945486a52595a5370347a6946742b4e786f3479436b684965476b35774e7a5237632b696d54596f425966497854444674556362732f695266614b46385937376c7761477059423943737068352b706a4d52622b2b6732692b44457a514d4c4e456e455363596b4c3038484b6f557569614773584e75576e6b78554175474e433241774a7a4943357964786534414270793646556739705a5733374778373171375a5446797a49437659426e36746b5a782b677736727171434176623871544b5a717734594f2f6f415355756d624665364a71452f446d31633764396742727a4c6b4c6e307a6c706b4c6e4861787961467930503449665751343646456c3471535145377355766a562f4e647431484e656956633343625a48596661644437713573374d576a33574b58376d634a51683750324b7665305261722b6d5a6a704f422b58576c4333776e486e544b6a684c5079797a464c3764543175674c70496d56554531624530352b57524c4d4571435961665a7a7641636258675776716b6a656776743930614676493943694e66366d36714450466b714e497238395236524c705a4550526d6a3653317868386e2f50317a4d416a644358614f756a5642656e466b526143657379382b6267684f793256374877632b6a326e53756473542b7761464d39702f376d47415469317441526a525171394d38764b35496b30713048776c626e6a3841614f53476658664d6c32676f464f6c475657676f534c73314a44534a46784b6a393441744b46464255384256685a77537030744f4357714851326e46334b63746349496c4c357242374c585159414c76714c4d2b7153644a6d763667527279544f73733856386a52727a7665636b47673337417351756833304e47576c7554496c75656c4c424279355a36432b4e53566e6c4e57633631544a582f41466576613464415079383458346c6a2b2b2b652f6351746465746249577632652b646854706a3242626879425a4279656566685550384172544571597638416578304833416e647a655851567036305a454f626c6f65616176342b37596853702b577a55573378796f50343963547347584c536c56465458537256302f6b36733330705259355466642b35706e452b417172423468437a4a636b6d736e4c356c3748645756696c79773344642f4b71697938305a3557534f6e6e4834763059744b4954707067574644415964775938305a5648346c545a6c5363306d744e382b7064575863575249727a59374a4f30557055746e366e4568492b7876554b54396c4d79334e5938324131784c4d4539536d744c4e506c79636552436f704f3151636d7a537a4e4b4d754b7a544a673575674d2b654c4769702f4f4854536b46334b4366326945463878773645656f577a5a7954784f575a7557717a53472b544773707a7478586b4d53354636365a50306c4f3069345a794d4764475a744762397751545a396c7567456a38686b5a6f2b4636656933627570666444544879505276592f5871693862725870324c4b784d49647a3943697866756349547a71464d5955324a6d6742744d595678366535434e4c476c7371686d424c62392f6b666375626d564f706d5346476c7357376e5a395a637567504d657934336c3179464f64594170392f4c53562f5532367a38776c366c2b50362b736a786339444a30652f44526d5a34447179515a4f6e4e4d644d395a366b7365647464706c6a2b6e6d324e2b7763706d6e33763739597a55354a6f6d5934774d733778464e766a6d646e687a32352f632b30457073567232646767355555396a3944497a4e71626a4a565a3942544e5a78396832446941376c7175482b6c774b3278736a356264724e7832766d697a646a6e4e54784e4b7275614c71736d665055742b65566d6e38375064395055715130305a326837776e4d307a454944484d7a4d7a6d5243665554492b37503474735a5575485776566347687a6d672b426d654d746c57664c724a685666647a5368587a44324a57554e4249363548384b59774a4243716161386558756b512b33773378487962486871302b3879353845734e732f64582b5131324a334544566e396f544e653558315965315643715239712f7744587a623979744a554243366130327457655045566e36576570586e2f707662626b594f3173364f467a557343584d3358536c346e6333482b5456766b695454724370667433714d4f5764314d50316b424d37326b75384b46547a61745a343237686576706c2b6248692f6b506b642f687671454b2f41764b49483555666b506c646636356e4f632f5875444d314976494c7469704e573465666c72736e6e725342752b5969435373707a2b4b4c61637847593571794e79635079374e6f536e54386330594e574b6a56362b6e58796d5354356f536c66343354716469364653554c6337555978544c484d4e436c634d34462f5662516e75596e55586b52785a53526d434f664e6d6d7a34737a657972655464514b705335664a58504c5a596c4f684f6d636a6341752b57675136354d4d446c67485159356c397465644a4f34755530576e5a726146376136624443707a35386e73743878537a685078326651376935676353522f686f7a587a6e65734177647a377369655455637574315959387762623941475a38354862776e5762456b6d683964416c70492b4770512b396745452b6c5a2f774442434378774136367a516e68633332614b39566a736f39476b504a62472b7a6166334c627143314c614f65364e755a6f584d5771732f692f306d333467477472663641736a572f6b395731715475627264564e6936502f6b4559576c7950596e7163772b78395069553655736f754d2b636f4d306a766657494f6a37506c413433534a555a4c30786c6b626a6f30705a62422f636273664f74687861717a6e74514b6c5230495a505a373551396a6a54413734754e5254387052336375426a7137653170516f2b3174315a445a436d5a707a49486d685047367359517a4a70463261447552336479366b416269486c2f44435476797a3055384630624b2b416c304f6962596f484650577931364c4664753746386d545354796a6c3234593645324f5046715a5648384c2b74594b715073743554384c57675361366e6347766458574f766d64572f5257375a58446d765363775530307172724c553750566e614b35694a79706242577332382b4767676156484134422b36327976674d5a39374e567079597a707335656e61456767335779527065523532776e57734339363942646966733678547234386770536c4b3139664c2b7548534b3164337a674732364c3363686f707872637467315539317175496a4a786775475a6a562b3351317a44356e79366d662f4149542f414444786b772b30466d6c4d7a62416a6d334a52513248376d61634f644f7764454e426c757475326878454f6c62486c3645355372316866662b355752395a30714767647064415434483941786b6c79394254355350534a646a496d716d31516d71504a6937317a663550465a316a766b714e3154425758457050376e6a796b7a54504b543366316c7a55383444726854756b62486375557a76763779674a326178496f735178646b306a7266497147714b6334626f326e3171772f53624334637a6d4148306451513234457738544a656e4e7932365a317258545548794e5732696359552f7939756e6f502f61335a73626d2f6170633535727a52496552335547357546633535656f622f414f374a4e4c63362b58554c694b4a627a4f7649794b477a74637a544c58554c72456c7461437333627a31703554436e694b4b58644a6e4a6e67706a6a61664d59574b75692f583850614d62517a573869566b374a364e4538684e546232504e73475568576b736b35337244326839303436474b6f6e4b3156456b437376496450503841747a6870573544622b336456717a356d376d546f52734f563546642f4248796d786e386851544b4c6b4c46615a363070633767415a4c6e4d2b67416e354b6f354a59737a7964636c65597951776c7a3157333447564e6e364f66706a464c7166787258574c642f4b615176626f7559355a4745314b356d4d4c7441574467376e6d6c476441472f5557382f4d38697735707469624f7a583572592b366b65592f6c41347679442f4a747330626a582b352b4251754a564e4a554a374b43633572457879395945346e386b766f4a6c4b65394854646f45744831446b30672b2f47746e4c61736a73324f62716f33543964306b7359596f704435416e554e4d315231325738413670324e3351474d484835424e32444f586f554e586d4d7169614b737568375a6e44424b6f567370756e6c346f516631337866344b2f5a744f7a2b6e4a352f594f5a4855795068642f495732575969356d55586f6a4f6e4d686a76717a36515449746c514e397a45325331796959324239524b75394f5a733753645566704a4134424e4355716c657a6b6149352b55754d7370334b6b39707048783458486e324c715838726666396b42627066484f6f365a6761414e6e3177562f6f6649644f507172394c51677a42366a4f61476361337548364e576859756c426650554d5a544569656b54524c4e6e6d53315053485a372b5849635a39524c6e7971356a546f784c58624a42496f70445a644d6943716577624f49734e6b34797a3646426948574b6e3455596c794e415a2f432f7162397151503841316e4671426e78522f5a71446334356c656d46743138565038706772704b46476e2b70374e616652324d2f6a6e4959482b31485530704c3264715535747635526a4b32474b437558526e32313142506f352b4a4853504c4a73764f30547358796d48456d713537756c375579705a37584c6239416b68536e324f2b4238584c362f6d48706f57517178616c7a54533433322b6a5271787877633444357830676d397572507856476d4e6d6855514e35785361624a76734b564d744d375036644f6176534145686a646d4649706d564938466e6d5a386645716b2b494b4d2f366f7a337356597a344630484232726b374f6766763448732b45426b58576d4f4e7038775662736e316e5841394d5369306b7361596b2b57547446327a2f414273495a334938314b64546155723669574f4a376a585253377451704d6c424e4f793367457058386b484e2b5752464e775341594334436f324d7865696431316d4c44777956505974307430714452325944424f3937544f594f6e51716f48787252642f4b37325457557735746a2b76664c643355766b767a47592b7136396261676254744d2f6a5a336337386f7036492f4348766379634b354a34396e7a4469465979506e75785067645238444a347a497151414d69576e5379634d6f74474e6730572f35505074496d48776d716c6e616a2b75325532332f6a2b6e714134366b57306a53386d70553754304643756d6e334c62714d3461364d576c42547337636c30634c6b30577257416b7653412b754151706f4376776658394161577459337a48557a6b3530642b53535747646c64724d2b33696e7458486561307a314353614d306d494a41415a42387970773935324855664f545a7a4a716b364e686f68734458666b706a617845623947326f62717161577a554c4a4d5055736e6638587a4f4853477a70666f394e527537626e382f754347486f4d37796475577a6a37557a7675327566754e6b6b68636c7a7a664f79756534364b7147564a6341723466794b45506a6433733754545a45357a4f656f6a735a71626e2f74747a4d506b394f675347354e6754664464486f54305a736439464a4e7a55722f376b66434957677468394977516654342b654275763649657567457848682f6e443252313075662f463754424565483848566b556d6c496d667630666857785a2f615a305a3239704f626a6c696a674e706575654d6452665872523655654e2b74507033732b442b577064303657475758705a68755270344f7a5679696162547a6d2f45664630424735692b4b353867476b7a53596b4a2b3437566d6355745776484f4f4666486d357634756b52584853317558346a79672f6c522b482f414f5348704a354d2f6d5a4636746554654d5a6d76574f5635374a35723459506a563072374d5a6e6a4e65356936795a7179737a705669446762396c7066434145446f4732736e374e505570654d347249304d386a642b53586a44427335347035786a755a59753657445a3836394c6d6c6b7833754a6572385475334639716965566334744f61654e785559394874644f314944507045556e342f366767377a4431616e456830634c79545a354251696a4f7a683871384264734d387078334c584577732b58536138747270654e75614d39485a476b69383544624e5159306e4965306556656f637a366e4b6a767047746c682b5142752b6f33686d6f4168376443544e763064617a7a454854734232626f4a6f46314a6c3247396d5655527a695a3152696e68502b6b4763333142314c59313950776b5a4637714949735a325071344e553966516b6e596773695a4f6b39454c68682f6d4d2b7565674566566b4f6c796d575167376e394e7362733776583868486a3951504a637a5454427277626d6c33556d597962475835483666796f527a4b6876393450357347484154546c7273796c4c716c2b4b784f556631724c46732b6f68694936526743382f794c795372736975376d714b614863355a56526434466e773164306b624556755a3244483269496f5731616d38544c61534a774f4e5574614b457a684d456a362f7946797465484c6b52354e742f5a315a3530534c7438577a664873537961325752424b51677165597478366b2b6f756471673161576c6b676b71782b36545036414b486c506b656435446e736b38543838666830727a597155567138586a52545864516e6d484a6c594e4e584b6d4d664f72334773637473395a61726d554c6d417672444f49786e6447506d506a6e655362567444452b4b2b61376754636b737258644e34504e6e594859452f77413456334d336475377948593055325a37462f5a37704d4a44745533386f542b314d695a694f38504e6666737276743363334239526155496b7a3270697a346646575a5754624e7a53686e736171696a7036427856575a4e487971346f71546a5457322b4f51493669597877786a416361734e6146554f2f3841452f4e6f4f36386b3071647943447737456c7256716735387472476976716173767373734c497175502b514a423154764d587a4f635143587530664e364836452f6a33716c634e3266524d6638594867504c657a6f75476a6933344c6f7745364753325853386d5a55345071782b774a334d6d6d3931757a3453467038727a524a3650555165716533722b514c61754b655078583037662f414351374532506471774764726952746470504c5a316e6564357a534379677a4b666a7069573465583346326567586a766c3371422b52487062346c2f77434f2b5535384778762b4d354d394e2f68487064596173747a6452456a7475346451326677374d574e69685948565741752b74504b4a4b443464326435694b576e2f415051764c38307644394c776a3870747a77543030676d782f547a7862427a52304d7678667837307371796f616d706454516c4262524b664844646f4c416252766f4d644b5a674f4f70587853382f71756e4f615a743272667844567166503164444d6a374c6965745061335a674a414e4c777230746a692b5352433232346647622b357a714a30724553354653615a6f34737870437833436334394f6238762b345a596669487148586f5770726c395463537a56756f6c7071683856394c747257516b61744a6475316e49697857364d72666d2b5165504832304a443332644e5352455a55327031355a6e3669544938623955735053625768487172554f64597345566148704e364c764e2b4e6f6f6477484d763147536f47556b654f786c4a455a307a6b65624257366d4d59512b7447612b4e663841565953487858776a7a5a6f46416f664d46526f5a725255307a2b6a587033416b6d496b397546564f5038765572507043367a5834327232554c73427a366e5473616c4c624b7a614f2f77443872534a376c5a5872495159696c36766e746355435568557558305a394c466866343952614e41776e6e5a396731374534474b2b735968686e7873594b664c486f56557a4f724d7850663937446254385350466c2b5265643547643630376e6b4d6e7079366258356474332b6d47496e5364354654534f6b6a4d314e52586a74583861586648595764456d72526573746375496f722b3150525254556e456376612f69486148782f30732f46326a6a7046627a625547633456513978386273326c6e366b4564745138494d4e796b703673666a632b63554e5553654c427943412f36357074712f4d4a322b6e5034704e464562764c2b4332637a6954793778794935723237725962477950384133694c6671554d5a3051374a38724a67436b774f4d51424a4a6d4c5878615a3966666c44706e70682b4a6e61777a322b52597761436e725132524f6268543656793470456b4a332f41476f7573716c554e437848396c30564d50366678394b6b356e49746646706e312f38416e3138776252364b2f6a6f7961744d666e427349366c2f5530633644446d72453331564e6c5846725459713136512f612b346a70422f7a39687a546278626c4d502b6b7a4d786d4f31387548786566792b477661387559446e364666693979584a686235426972626830686f52746c776f496e7373343666536b305a68584f4a6a55464356746e70547a336d523934426b5047724a757669302f463639646e2f414a4870656733347a74444a7a5737554e494575484f7a593576452f4833383750496d757957575763734e6a495353364e6e584b37375146337a4b3672374c5365457a6163326e6431396550346638416435633151564c2b4f503430534f627173747949644453734b664f2f575a6e6a6f2f636e5a52624c64437a515a786b3951366c326c582b7a372f6d3078654148377a6178573054572b36317433797a38752b7631384f587233424666342f666a4c6f6e61674e767878326775644b4b70366647664748317a5368574a78436a4d707a2f624f6d6479356150385241565666396e396a385378564662646d5a74626a312f3434383344787834666d446a593944767831426f3830664976454a712f727a796a3272467771474b534c4e4b6a366b50333532504668727370487141373744392f7443662f414770534d56767165485831356870662b4f333434564b54467a7962787833362b516d504c5038414839626b63646a58794574466f77705a4f4c3578736b4251393577584877464c4a77427a6b7a65315a3463302f774464743966536f657a65672f347972695444557a77757a4f5975666b636a664773414968436c7731457a503551524c715937574a664b43575165777937386f72555a4564643272366e2f414a475450514438625a7353695364766a41357755793746724665485a763053624230562f654d4635786f5954444b64596d49427a3254414b6570374f484f7a4e726431706a702f7a332f4450547836384f674731666a6e2b4e576a537936697677687a4f7a4f4768412b44654d76392b636f475536464654437a2b4e644b324768696e6335385054573549733643576d44375261305278743858722f6a36394f55506f76515838616f46665a4376784d7a72537071724b5042504866326b5a5a7a36304f722f695870576c73663242366b65714131504c3467454344707865324a354c5774587a6a622f397048302f5148386631644644764a4d7475644950765a687338537743696d366264494a7867696b53417071586d336641507546774450475a455041417746573265316d7638504839612f467439527a47535052443862465a584a503576783871485a67516c727959486a74476c3350566237654a4d32517647584e5a514650746c464b51392f654e4d544d4765364a746672385872313635534165612f692f2b4b2b6a4f46557366692b395832385964707a76464a624868492f354a7262717559384b2b5430465050717041332f436f364c444a6e756d3478445a6a553166442b6762376634762f4149586f784849525834586b516e3233733670385478384a71613665534f5762656e4f5061616b445043504f4d396e79386d4a4a6d5370782b744d58314f2f644e6f396576573434532b732f704b53664d4f54654f4c394e5534614e7865386875742b506b504454396d4f664f774f544b67476a37546853496949424e2f7151597a4575575a76372f72717265496a453773664d617a62766939613865705772354e3657333055667a485a595950786938667a633637513763525671727a73687a5861684e717a784e4d396a6a343173484f7a694276536272785048737a482f414843447477746a42646f552b4d562b6e48475a466836484a4d7238622f48734f6548554d687470503336507a54556156656f554d692b4c5a4c52577344366c724a43536e737a4d643857782f454976745a3737713836572b66774c56682b444b713268623648594f354d472f7742326467374c61596f3256506a68654f5a4b4c514b654f716d797878704666766451756178317a2f582b34457a3730594f324d506369394a34474251704e636a5078723052386546326a4775587837783941616c4a67585147794d5443685938515a74516165574e397a35783174782f31435052614f4737483070356e2b4d3530534f614a314964364a554264354256557461386f2f4978584f425666505a6e7876724c7567357344727a6261314c6c4f704e4f36656e483579414457343143793045463462484e6d303659376565583438347562675a312b686b352f6b7a33686c6a3742584b3658786c65655843424a6c4c48786743542b733752624d2b4d2f366f442f447031345a466d79374b386666496e715034326230437a6e4853324c2b596177636361467a4c735757506c37557645637a33572f582b6e7962732f376437596e4539332b36414e533379624e6b745431557375505270426d614b7a394334587a344d633168535a546e527a2f64524c4b754f7a486e4d7058524c494b562b2f32304579586a4565483367516772504d4b71537030466b6d626b6a354f37552f6f3334753148336d56586266416c304a736d7437702f637850617a59784e592f574f523745673757736462506c2f75485246586776702f4e2b426c5072532f7741623849623541507152702b4e44354a70656a5752543536636b32694f676e78537576507a77586d356149324630695558747034484a6333362b637072753437763276753933772b493074713872303149532f55494e31657a6862744752756638417a51356c433954426372503079727961615a55396a326f647964624f357644306739782b78556e654f4936394d52346665414d6a38676d4c4e6765692f5068392b375639505750305a69392b6c6f725a7272766b327468576c373830544a69356f4b77304933665a4f41464362784d41596a772b384352536375504b7352396a59723070655a756c6e4835462b504236764c63594c4c727376524d4d6a71484644337456415447736c5268545a4d566677744b2b6a2b6d4938507641475a31543678346362746a4e3172796f7a342f62364e523176724b62575867304a7a3162745856737a54304e4b71454a696f6d41377a7232412b796f476b35302f77446343794a4e2f4f776d323158713166307966625872324d3947387a4f704f4a47694d57616566416157756e73374b6c6c6b6279365a6d45624c6737375a322f757533504839662b51584c7a4b535675586f3672504c50384f6e52797a4f394d63444d3166484b75566a636e4b7a4d7a4d594e2b4b7475664f533758544d6d6d736d7073393670306978726b3138502f495437784c79714949334a5a4a3547506a6f5a75642f684c36615535573030384d4c4e4f5047783836574e6a4e4b466a4b7363334b63514e50374968396b32683867316d4a6a2f7744696b53484933734a644f6c706d337972525a7a6e5a4b696b384a316149633657656f46324b4c4e56342f7744376b6a39585534384a7161565575636a51766e4f6a3266714c524d394a466844762b485265517841752f77425274424f6e4a47396556546d317a33416768307552374c6f4c2f48595353756e507a535735644d7a446f55447a3637714a70674b4d546a4f4b34466f37586b666837577936395737366b69393835624c33592b544c62316e32637a5a6355644e5339546f6a6c6e6e3153395651546a66557179707a52414f44384e4d543453432f504b4b50493650465a504550577279727870307a6b725a6b375069374b66487967343353756c6b2b704a554d6a733863655650365450317336412b5768615464394d335474786d4a7075473958704c365156555549713955664f50482f55584f75726e3073364758412f6a38684b4a5a65614757624a3277386e734c6f75576236574f393754704a33564d6b3664783432763841686a614f6953764d386e773778362f6b72545657554c6e775235393553564c2b375a4b4a306656666e734e4f435255542f4958522f77416676685253726a756e374d7853334c6148737459796f7675733072374e4479444b6237655564724569787753306d5478666352486f54394c39666264306f4f4f6432695943616b4733386d796c6a50664b716455777352654b4b6f7835506b55363265415250627a51653132673454487046305a7a4962365771565332714f6b514d38574d6c6966746d2f50525259796b78376c366e56496e6a7368506d684d6e527561675a554c54686d50484b36395466672f2b695543707a434e73665461545137446e32793056536e384f65476779682b695a4f732f68314c45566a4450385537656d76392f4d54546d49506b627a6e56412f6c726753425341656e6d4e304a31684f4f7769626d5968544b4b31387a4f44466e674d38357068304766344a2b512b574853744d33616665384744536e4b517563363354586739793876727a78363635387a453749796b43506d6e384c516c504c53744475645973506159447a6c4e4a6c3777496a78504e524353655370415658386d68585247344d76744864476c6c5253775546794767325a71766b3630534f66376956415a72465254414e71747164795a456d597543647148456b61563077506a314f57315746556d652b64546670677469792f7772436b616a7070637379616653427368597a526d4549497156783071432b354878516a6f4f327030782f596b6378744e6d67525555632f5857557039787a55394668314d4f55484d32666e72663351593174486161757871497a52725a726b3664552b5a4b363457436971644b61436c704e335256536b357672506f2b7578494b444531356d564d706445446145554b6e64512b3353624b3271364b39693956715543586161466e647058633452425332786c676b77356e544c624d4454756639534e6f6731376f63314b44366a586c6e7262506e506a48594353424a756f706373427163314e6e4449756b2f6e50624f6377644d446b53522b42666372555479357a444753464d52677064644e43394b3657646464586156304b5a4c472f734c5867496c384d6867512f4c4934476d51397464695a36797a4a32466c7777583052304a6b5978476e5631745856315030436178335678704e547564545137367a765a514238443567657a30636c587167796c51512f464530496377306f79373136326b79344a737962537a7936565843584b32645353635649302f51393657696b6b41333931396d77766c6b38584e65503263784d3176386877715757596c6e575131566c516d52305a6148386b756a32392b46674137356b6c576e394b42685379554a5a5a4c676f57375059634363744a7a4d506e49685477492f74326349614d38326147657579564967536e65305a767239535931683831323736714a5267757a34475338665432714a4652517565507956364338654b6c505a6453456168452b687a726935536b4b5855556a3835444d5937786853466a4a5a7553304f584a525a4e4d563571566f305a656870346a6e4e4a3941614d3941304d3043397a6b45492b784d594e46645266726e395147442f414472782b4468674e647332376c566c524f366270616c7a696d717568436d79624e3045762b555a6248563178732b7437765a444d436a6d6f44357078506849716750562f77424f4e4c5867445475387678664a6e363459744f4a4e343335435446746d6a7a364f72354f715032756c65613454594a43444442334f492f61564e634674746f36534c7044566d326b7973795a6335554f554d2b757258393265695a7764684b66435a4c434447646f594b37464a634a2b2f674e6f7335484e51464a726c703038686e325851316d3563376c41316b4b4a5a5a2f6d376b67335036336a7535396f563533797545547a516a4a504e46494b467450666543525036793354794354554439627132307775624446633176595352524c6b685378334a64525365557562557959703941506d62772f72456b5a362f685350325142316577326651464b4e4a715575712b4f47504b61564d65766f636e314a776f632f4c6f754b65665053774f386a4d6d4f464a67304f706e73622f4145446651414e5751593179537649626e564b71674161712f714f76396c30673575426d39436e576e54517367353066635a574a3666736f70454c7765753047356e5a625a4e4855697072645462576e733749625a453578686e7a5a6d6d6c4766597955685a6f722b734a6966744d506859326b2b714a414d394d78584c52394754506764306f4b4b6b524c62495432305a62714a752f473270444752684c6d72594855674b51726d704d7065567a706349596a665070746c704b635856316a66452b4f683157632b566a4776652f4f72527a53567a5439795a574d375343546239644b772f634c76304839414e304d6c304f5a5678436e546978373637456e6e39746c692b38375172493349366f2b757169545a4e312f765558582b796a73596d61656c4f4378364155566141344c37477962362b4736626a4f7363703746732b364f54335145425774593657434351397869533071374c54337156494a69593678674e4c7133693465796c4c5a6d56314c376c536d5a424f6f3361743257424b6d737a2b63306d446e77734666654964325a37414469667372412b676e39724a6e515930624c666174374d78626d4a6c664937355463454d5141764e46615070793245624a6e4b456e4f2b46686763786637416a7a73344a58306d5079722b6f4337493343424e5a7339713059744b79616c5572456e35466e70306e54716a4a4e524c4e7038713476337a4854304a48522f485a544b714e44556756654e326843687947574458796237487a51694563395435707952646f61455254464c574b55665468616c795730506341523951544f6f64564c5043384f763049553550623536765a464f562b5064427251532f58694b71696a56556f77454665324e797964384d7a557242584f4c556c64714f527053614d44344d6d4674464531576539632f783653436946632b745452342b6d6c5038617866744d35663347796c7a41634643663642716a617a64446c6d576c37467159796463306c7a7775752b6e5950334a6330724950306d45666b715345352b3733384a4c414a6a4b4b57535532325738415054584d6a4664414f4e4d41324971707a62366e6f2b2b614169717a31744b704d6f6d6b4b4d2f77426f68303145683470636e6955545538636d32336d38756f525a5375616d7570524e725356546c5a2f62527074366779664f557145644e2b69626b727a796c714262434144746d705778764236487a6141447265515a644771786e48796643626335536f356b4c62422b7639303073435a3462714f564f6e5a38694b324f4b67414c78756771516a4d7859656461326966415259764c70593830637279517158756e4f72675a6e7839374f655832437966567a6138474e64695a6863533243797834536742333864786a696b5362726263646e6849447a69586b727935316d33432b6d457463597331736c773831446e6c324f7a626d6e587157456c306b746b36324d6f556c78756a6e4f50745470753055573665516c336a2f41494c4136586959383547526e61576755756c4e64527570357a536b7a786f637576507431566d6b537a6f794162304c2b574e326b4845653850752f794e6257322f4f524b636565594f7964674f483561626f2b4930672b63736e495a50504f6d635931535a494e4659753262705334784c6d522f576a4e7a51352b754a727164776b30727761325a4774646c315a374d3863692b78696836336d6b42735652547756697857544c3234714864726d75635448514a6f5a547a36697a484d66534158772f486e36366c4f576d684579575455477239636f6e572f7646727a5a733870652b3266346b38542b34652f592b467a6954482f514c6151644e66325a4f4b6d7244536652394e4d5564306e3272526f726b517a4b7573714153526e314f39394a7041506665706636344356484f426959516e73304c5678365030584c37384d786b6349614e6e427a65357a497a5177512b6e7a50577866325571594a6b444f75616d7a7067416675354b5934647a557173657443324f5554475272322b646e32676f627855533278396e752b464e4c766e634b72446146693656314573484b5944486b504e4c4d4969376e6a49724a7262764d4a6a514c694a4a377137666b686f2f66614c42714772733837785a4750386135332f41466a6450514e743976455a66452b696966597271732b77656c5573613539504e4e38354134706b384a4843475268545a3871684a423873446a6b2b786e524d6d6d6d4f505a3878495a5932575973775272713041354f715266324f354666616447545131546c6c666572594c33564b4c3353664974592f4c533441467953614a705a7a4f5a3468494b46585454354865686f554b355a4c654a444f48426e7530474a566a46433264694f584b725958797161736751614b444c37612f77424a4f416134307446544a4f73583334454a585536685565763772626f522b587877333377697a6147706d737a6e787548324a43503576394a6d6b774274384e71324a705651696d2b7969564d4e50464a796f4b59376e5351753551334f495650326675526a33764a756d58754d7a4650656c39722b674f42686d73394a5532614955734231557372303879565a36684f694f624b3550544b425a6567592f4238626d546455416158415638716a4958423875586f50716e6b65752b613939565475647935715757534e6a566d387a477247657a346c6b6e466a686f657375546676356e4d6159432b4d4c412b5a566a5a35646e567a73374b36365769756b374751583570457a74476857776444563933794d4936766a4b704e4264453170435a352f774332643341774b794d315a365574305352584461426964646e316c726b5153323155567a7163386f7a544f6c68455a672f344e4b634750366f6b69595a3164766e31744436564d4b757359694b5259716f7978627436626146783648474f6a4f79646a506f6b6b6e675a755658536d59444368535769475831327149734f6947794e55317776547a376b2b69634c503977746561614a2f6d717a353875463350634c427054544751755577464343774f774b6f6e544e7a707a3644342f6662314467364c7671396947624c56526465706a716b766c4855575465547a4e506f41316954634831774274436e6a62746c2f4c4a2b6c7164436b716e713559683238776c38446d6633374a75477272686f356350666a3539694e5a66574b6269532f6f4733423047502b70705155782f653667556f712b726f385473304d5a544a42467a5134524a4a76595639595330676161544876753939532f7267615a487857665964356844485367674f6a76613944482b71794951557467327361335048767653414574692b7a3268503853756651614839416e543777726b3757435a592f6954374855696a676e485568777145715a41457275386852555a2f61416659754f6876764e4b476d494c4f376d4e664f31305574552f75577953667147544930304d726c6f556c63486449692f78732f6a784d484d57343754615a79636438795442322f505a58566e30594c63366f58664e637168756b6d4b69663553756448466e31382b466970656b56305877735550745361584335784f664d594c5a49554659332b4b5158306f584d52374f364f625831306d6439666a7048426335314677715a6e6a787655564d50682f434846434368482b6778706c75493531525a2f614259582b4b54443634644f5630354d686b2f5570716e6f58776d514b4b675a2b7a6c70542f4142305464496d74443870576a64384e317a3055716e72746374726c565151314d74585070494965774f34396c6e77704956723658736332616c6e2f41474b4f463167455a774472705a584a30744a623033463355726a694a557a4a346e634a545253343072744976382f334d7733414b5745776a2b78522b774641796861366336596d7269503775586e315242646c7a704a485930533139616937394c397339427364507963652f627663506143352b352f3642626c303532564d35637537714c573057386f72354c6265354b4c46774e6f685864774531632b64633564343367694d77483952616d71455154476b70695374306470773036424c612b54426c3475353871486469617841786f5638592b36414f564566505a384e5a394a493175414150384c706a564946346167436c6e55616a37497971584374446b30424b62374a2b3043483249564b5946494c4b6c4c61656356375059414a584364424b74656446346a712b2f4752614c7072493130304671494e7159584a6f7a4d394a526a2b3364443558664d6e2f416e474e4851464e353278656349547275314f55676979712b572f67302f6534366c67545973326b31316a6b52736568524e6133345535726d2f356b58654748777146556b314e75566f53713539664c564c50646f6e584d6e356245316878724b6c2f4a5a795455576730442b31442f4a4238765158382f656753595753383878427a526d6c46707a72635935744e4967564b7a6d2b774c49324d4c57516e50503841544f546b53304f464a74417950354155366630462f6237636c70557954307a525a34756f6131734e44483030556a5a476a356b6c50386b38344d5070664735522f6f444565474356434a46387571533656307255495a6f6a4c5279626863516d48536d3578305a4c596c3338696d6b6d467a702b357a674e706777464e5541694b4f547276656c366f5172347558546c666c2f432b7638416b314a37662f473366542b754a64546a3638764639425643675333726d757036504f67626a6a6e7a555475684834707a48764f4f304b466958484c556c6d6f4b6450524837482b7a374245514c584f44456857532b722b5a774143634c506b6137567061654e33716b583172534b4c6f436b686354776f4a6f7a416242366b6d504155666f4345782f6368754565663043316c4671443551784c597a686b4970567248526c6b566d78495775686f714b68436d314177574b2b4e424b4e6a622b68535548374c67756f54517636796f42304b335a2f627079626f7853527432713642364c756c56734e646f646e5351546c59367a76464b42344d642b2f665773576444475a387472644b64716e4e61696c31434b5375706a63336c6c4c4e6d53685063316e7443674844772f6c34336b77634248564c5650495451416370694a465a3439306e4466644d512f4a4f774f45324e6650667762356f45394b79354c4a584458386e44366e2f6e3267667954304a41366a7631346b466b4c504a58524c5239597337366a757736704d474e627a56395670586635456c4264347a2f6b30696e7679684d30763642466171412b747030527a3966535554345666782f36307a4656626d4447663651644d696552304f342b6a72782f626f484f4f6d4d41616641444d7530577a7a53336a5a625153366e324d4c376366496533396a4343506b43364f63455147656f48667356554e50384155344542753677774e305171762f6a72557836786d6272676d517650365130707552476f4331645779506a705a434b5656416464302b304b71346b765a375743495a7a39463945704b7a6e4c42576c474c4b4e4372364244522f494a6b61784d4b6d483756396f715354435762666239494a69492f77426530415136784877395168306c6a71676e4c6e736d693070574f7148536950516c73346768716c5177726a702b58374144796b57736e554c6766304738613458643748326954696b74596d7841615462477a6b5a2b306d766a524c38677a6a4578786b63334162536361577563436937522f51596c577367365236485071566d576851784d30363238577653686b37547133324a6c344d2f795275577769596864422f4b67675831772f4d487857614c6533544d4e644f576d33594366744d4b3478363636574d70763841574b75532b35656f58443466434d2f7744436e336d33354243716444505242467043562f4f50664f71326a7339306f4f2b7050786a4557616d64316863763863366e33434a57665a534e4c715855657741553149556a754c4657706459415474624f543157473462755536394c6245325a64412b2b706768435334617531456c33734471665931695066577638417254543777366b4d737a777a4d6d792f687a46374d695a436a73355a6c4e56434b485a49585550484e6531634a717735374250687555503872315a755a6d7144763950336e727741544d5a6e56576362625854476644676e74316d636a55316b2b704450627a4e4357665934417650506c6c36757479784f5657724e79634f67336772746673794d396c6274784f4c58325a754d4650494635685535583336713748783039776f5a6837647a6b624f555939426778712b6b6734474530466b626c6472576354746b526a6d78704b6e676c7a655851366568467958527a73745346366a327330665a4931626376515633427a485557556456595976497a31663035687a7868574e746c6641664d377736494c2f3533794f7562743964493030564e304b476c4f424d71506d543038387675565553314a7546303656316c2f325a2f7742635851784e366d37505a34794a6b6444717878363831557148686c5a73756579566b34484d7965516831592b416a4e55703154306b525538644e576c5648464a2f356e50394973464c613439466b39647a4b6b5857767175554d747a4e74474971393055386239447568524b533648616e7a45744346396d57527a674e4a79653332352f7766583149716e58304c7437724d33635a6f5470696b71304d2f4d694c4c7a746d375731346c777570717078394871364358725a7955754e63744a315561704f476458774c35792b496a4d394d69545779543663364736504a307a756a57366b5157683266507372362f527a2b73666e37545253356c316c43514b4559336675394a4e7263594f426b6764426c32684e4c38697553704a57356350314e5458632f6973366450585770797445756f6f307174366a6a6758524b6442416d64695a526a496c6631586658784564544d4d6c41515853794b435738337a51784e584333453464437334473079747a707a7a52356e6a565a3065644e6971376d364c582f414c6647644667483862317552355a7a354f6147666c5179365850684d686466556e5872634e7a3431736450386e7a4a684874544465693846506c416e54682f67592b6177732f5979744c5656663461442f4d6448756b35564f7635505072513561387863576657796641354c6e6d747a79306f4539617367577076385651594f6e4d4a674f4f376d77446d506d515a2b64794f6c7143327661635a5a2f4e42393879657935667a45356c58324836586a62507361446d42317246665855612b42504859373951316d324a783364346e554f636e78787a646163565a457551353673323635376f38366c686371794c6b327a4e6459694e533135744a4e366c73376a396a463369716479307070756d3249414f736236644d70756b352b493755757852684f336b734d7357664e5079726d72714f6a7062725a4445776f56544c4c543367636a59705873457a565073483452536662515638584846657a6e7a6e6f66622f414d4f334c5450764e7530772b6f58336e4c2f35486768786166596c7958667949475039424c63727879506c492f46556b66306a3574617a39566145506b544f4944354a777938716a6777762b61707132547146514b424e44596a426b2f5444435a6d5a7a4973794443434c71354563532f34515a39374d70573654734b4141545a46705535466970584d424b614c794e49714975704837437632772f6b6754764b75702b66714c4e765178625838726651714f68566f7957542f782f7742324f66535255527153614c7374787a73365836373166424658776b4a427244454e465763357a616130736e715a727a2f706b5a496d6c347155325848544e6e6b4e56694b4c6462724b567a454357544b547065776d4e5038416f443875572b5946574a2b333367785a6e79625361382b69725273765a7a6c343341306554782f44734f6e525a78702b2f6c45786c38502f41437938772b3651665a366642514e302b34784b2b3647557250384174486f5a566a4d7065673778716c69565853764b374e45352f774272496e50476755307039726c67465a444250644e6949646f4a5578644b714f424d43674973647373397a7445427a2b72307365716a2b4e5a52386a6f35756b667a4f3977566538353439727a4831634964766a3558525059713534306263756c65316956654d57614e556f4a6c7165492f544b47704d70766132355139707a516566546f5678517a75783265454174554e6c41714b3275686d56477546564d362b4d2b2b515a4c325576584369756f6e6268564a535646444a75504558546534424a4d36576c55484d575353494f356d577965654441734a3941637a4b525252524e316d61346c364f6a436174536a716d562b376e7a4343766e64583873387936707a6d5a6d5a7a336857766b2f6148624954715246416c3353797036372b693164645a3178574b2b7047316d6c376454366444444a633447383655682f7742666a6964416a32626c6363656e412f49753057484f3456443244666b304c7530706f72544767364a5570304a33565a2f2b6c7a465341726d5053556e4664377776366e6a32764d4c50474b616c2b654b717239476d3666486c305a3645506a4855476239766b6f69706f6f48545948794c36593050397235766654333571564a432b41557a4d6e4b6576537976637974564e756a557048627443684e434c426331564b656844316b354d71736a2b744d487a4631332b726f652f71757a7a4e706e72492b573937446e63525a445141624d7078664e70707457352b696770624566445159392b5a4c726d314c3730794378494778496976532f536159362b59677061696461586b2b766148433156715264657449396e6d773261306f614f3050504a34376d57433351545232636a344948373361526f503634736c746e624d375a444f5242655038414e4a526a66733236792f34395343644b6a51316b5a353657703269714c57544f55506a644e676f6d4d507264563041347448374946546a55546a49314a78484a36704f684d4952735936354b37706f714d7252577651624f6a75705137336b453874516c3137324f4d4a767545442b642b4d4156555a56764353664f5938655a4461716164574c34786d45516a6b5655706e50686c3045396f477235314633722b685a374a5343683149544250736d686275395a4c656d366d357a306e7178677969444f757a795858456855634d362b6b4d6b63384b5a2b7558376e4f672f796348584a456772443153326e7379375835334d3268634271516139467376492b72586d30446d577569526e742b7250332b55716e377a69324d4c6c346d64704b63776c5772475a386f465833563231337833566b625035596239544d736638412b4f4c664a4c465575574c74476b675157676a615052365454655073764976306a366469443034566a7942612b576a6b632f3841474f666f42394a53786a52544a59307038625278325231585350736165485278656e554c3732735934442b4376366a5664643874645076456c524d6371712b35764d786367326a5431454f5955716a62526d324a30366375464a55557039676c51485946664c376e4f6f637854763059757a48354766745544374d616f55507145362b7063504c657866785177794d2f6b6c3070554a4a5654507265336e41344e44495065594f41586579334a352f5948627079726d6377624a70373072665a4574774b36687855614446765930394f6367456b564638484a557a7a6b4e4c6b4d736d734e48735a55514c44342b756c7367444c2b6f39544a736277615a395451505146554d6b444d744b4c6b486c6c3965796834647264386f4e735752754150394b394c52584737726b536b455a4b43653773477275374a35394e6b734f656e5275466c635a69352b57714f4961474d6a595655767945507a4947696b2f65553863733542586e382f754a6e5a6c784c6f573757304a4e4b4a536c2f5a6c346e3561724247316b3038462f79556d2f57465838665967474c396958476c5166614e2f443663526e4d5936696c764b4f694457544c6d7934566775616a4f5877624f646a733735524c667845716541494d5a7944536f2b73414e572b6c386631784141365a647670393468724e4a3443366759332f44434e563345353963374154734a2f6b42544d57343459325a6f31352f7443696e6f42316e584d543848334c506954625a5877426a4375594d66626f6469336d6d7a4c30667533547a686f58317977425644694e445061355057517054714a6173466c5052326e4e6a2f77637156524a72616e66454357654d7759584a66654250314d715a4a595468766470425a6f3670636f647a327a782b51552f4463615957475a6b6c4d3753706143306d3544306a57323734684d633566697445637573794b656476496f353077733072436a6b72516830624b597148714e615843784a4135354f59644a303144524d6d6557746f524f6538517a633976647a546d727a6264585043426877746d6d7a305a713941546f6466514b4b4f4d6651586347573769314c696238346241735741436c3168582f4148667278425a5a494450704749704a56766a6e2f6b7443414a644b7a764c69766b5542617831566b4c4658546b6637663968725153643061714b444f615776782f58395146562f4a304d367679415678522b325a2f493353557978446c3230362f47644f6a492f33797057636369422f77415038512f3345424c423356322f672b7671526157625854714870555a4d4d35485053326457634765506a373954362b556c30756e4a507859394b55586641786230544f70456b7a55712b476378442b73777a306b32766472627662564e627957577932786e4f53537a4632636169354d313151557149556c4b505745345775417a2f77416d7867336e51576c7a7276342b626e426c524b6963726f5a4561475449696e6b4768447335644676323364354b5831697a6d30766f4165476c307244484f3643556d4457325864756f6f7a39706551686c3734337a75637a4f2f63734d735768703645632f657a794651356a447a2b48396a33705a3879663869357a6c4c706e48634a42446d30485a5162673135663037526d634a554638793557334f6c306f334e6b643832624762457351766a696f71495848585364612f613145444c55574e4556626d4c564e6242646f506f5248546d53732f53474d46673935796a397a564c6a456862556f6c7561794d2b6e38713141494f672f61476d37546e6c4c2b5557697444466373722b2b3257714a4b617061616565782b48487a5371584f576c595130443853312b796a32415a694b515475343954727056715a4e6231544875356e4e6e68476c7a67736544663346547a726d4a6f756870416939774f722f54524130385542424f76454d31616f4d356b394c38346b6a65682f4b306c4c54436379314a564e577361426f3477795456784b654f2b7a4e792b556e456276654c77666e4b594155366d514b767046584c7961626c722b46503139503459346d5663347568546d53306655486e585050596f6361506b2b557567585557592b63426c417a4a4e663252313072314d3154644764676f764c6a5071703655596a4c557639393633366a70707a36644c693578414d354c69436d796e344f2f366d4b72703431616d754f686c2f6567794b52774571485358563935526647376f4f492f734d49506d4942416b31544a34704c3642466b73363665386148534d6e524f2b45726c3952486e394d69477030366a4764696858504d302b675164416a415136475a3942754c68556158366d612b6a39386c306b686c534a314b757a63634a6f6c48685554734e4d6646463736544b7353503841627a423748504571634b70614779525163674633656a70575a6c74504c50696d302b6e504830324d5978765a324f4f68644a54774a412f634456733644614f6d34425167436f533173733958616b6675397334686c44586f324c4a4e487a4c6f536b6c2b7866474a64374c666d53726f6a4e2f514e54476c7138393876487a4a73792f6750694a4f37447762396b6d3270435055583772495373735738506955726f4c4e6a586b546c6676674f4e414c4a31646e756f6250596b697230702b32334d5258314d73595757565438636f57593837777a66734c575a664e77334838537a542b2b4245744a445a4c636e334b55336f4e4a6f726c6a7075794870304d62365862555530615341316e4f2b7638664831636d396e796b4b7861416e305144616f756c5a51792b6f37676b6e59346b754b506b4f64333571416a7174766d4133445a33556c5437654e6f4d306e38785472467275384d456f326c455742427974756135705579575753413772337738636c7447677161676b4a793568546379615768592f44496877754d565473556e674d68454854577836304d31307135792f6a366d466d6c4454304962452f743854394276334a6a4b4d61516f46426762493346497232476275424b472f66524a51544b375265664241614e41677a64506a74544e6a2b723372745279776c714d6d4e6b4767474b4666444e66512b4835674549323267447a62776a495952483331347174645064435736697868614b58645563364f3539536c343933432b465073616b2b7139704a4c6755676f4768396a322f50445a3976572f6b693732314c4f3264564b39327a4e44733332697031452f4c564d61326462514d51764358366767644a3067783154506b766a593746387171713263726655724e544856504c77737474306e4c423045456c2f563473726d4761357a4e65613467662b6d54546c4d524d394942584d575a7a7551316d67316666306f6a564f715654704c3138514953334d35594c744467736e345055714178736d644e4e384a556f4630413172596770664e6253556274485a46515a726c703047684c575952376b38633163374f6c5975746373664863412f3841737a7a416a337061594341516e71773179374c3373557437436e376b4f6558767a50637853394e464436366c67497545614d30666b2b737335375a706c46796c5a476a2b67616557496b7974483776734354557a52713638724930636c76532f512b34795852656c4963734a6b6b2b6d6851706d613259334a436478474865444d526d634271326248544654324866547a6f3844526448554b39684e415a505864766e7a6f71374256556e354948504a66666c6373727a39764a54503344624d2f676a2b5146655477322f77666b63705961744c6f387663483235616c3161346a545073554e667051626b694b48636f53492f56663170556354534248517050317636696e616744734b47564d304234727378334d345a6877376d39746d32703253696c79306f58594c5a6d72376f5458465277422b496b5573346c72766d6371614c5a7a7a6452567671643936334b61656a342b484b706432514378486c70367944314a333575333353717855366a6d7057497059787a5945794e39376b706d2b3052416c326c4f6b2f4d56746b6330627337712b6373356e513061445638474a6d56576a6a74426d6b77755472687457517078666d654b7859644247344f7537513534526e63472f4f6e346a4d5858625451316259614f55307148573934464c312b545874387935786478634c676f7936712b664a4c2f6b365a553377324f67716a7a67632b50534f7a585a5553556b2b47504d7a676d6547396f57366663665a304d46635831716c36542f7351726f6c376452622f41494a3655315045666562515254784d5a6a41676e6c7946683530787138784d3266536e2b53716b73354f3753576a5478376c78555171474e5331377a702f61693657726e362f30712b567a545361355a424b6a6d644c34317052466f35316b2b564147686c793154304c324e3348317035744c52583439706870544e2b696a5138647145472f427870706a5564492b3732506c434f2b4272783065494f7a2b56346a79314f4f71374775644f68626a356b7738305264304579746d5a5156465447726431394b65545a7636544c3876506d5547387634792b45656a586c736e6d6574353364644c2f4678364435753657706e397a37306a6b785a2b70552b7a75685137515a7a36756f6f3537574772724c2f68396a43367235637262346d6b56476e7564674d7571386a7a42632f5738567231504a307a314a794a586a6c5a63477255334871476e4e6363425476717832646f4c334c537a735951746a346d506b38326f676e6e2f677976467248366448634e3165796e3756782b325a364b73726c6a6c70556d45382f7652476d36504a51543375654b32302f44523975647137657845356a4d6434725879337836576e78312f6338632f563242796a30375a635a3666343343316f555a634e6b316e66487857714659592b626343757a44664e78746b30662f41474970744571704558782f4756325a462b566d3733305a71466365784a3553706c5a5153323049303633426d354b4f4c6c4f576a506167514e564957666f7545477a5175674a7a4f6339347147627852552f646a4732327072794d6c31506177587142526b374e596f6a3244794861637a4f6d6e55564c46445369595a7662397030797549565232616965387a3864666c4970525870396e6c354235316233786f744c583878386b6d534a6265546f635a334b596d704a374732694d6669386679527554714e5a376963376b3250656c6c6b7a6a6f392b6b54776950776762566a655a515659336c5070375a702b486b335079733555586a622b3059462b6f334b7955654f71706c706f35505a517063365a696f515457384e58324f463745734a30544d644a377779387a2f75513939454f3669505758786d56666930322f6e4a487a76776578375a434e326a72426a64336646666d524c6778684f6d6a677a6b38792f6b71542b5038417842416b6a5233396a7444646230332f41436b394a2f57696649386c39472f4f76432f4e664656727a6e64434851307056343859642f6361394878544d7a795a6931487553334366526a664e3863306d69636e30645833466c62547654745632693939447952622f414135563765313630714730454e6b64464c5a3634527179632b36486e496659722f6968624d2b634a3345366b50734c2f77425052702b6e554659764c345a6b7961506b73656a6254695a656379613262593045317a3036453177467947374c304773517952634d4b626d6448347a472b616c334a35342f30514858376b353446566c442f49392f78664b30703943486b736f574e72746f306634424d4c36706e75734b4578545141476c533561792f7754537a6e78676b475038413554515a737433483155665a664e6d6b4e535a3876737074674c5730452f79594f487365677675686d7a327337516d5547536c3844457064784c674a3973334e43375078366b76747a4d6a4b79343670583767645034494d71456767716c626d30396c756e306d524e59635832715947752b524d4e6156663867537a764a364c465a6d544656775a63514c364b6e484a6e48795275584e4c6f52525a6c45634d3853325438315030307136446d427a6d75476e70317963724136507142624b65517065764c3958535a574431765262794c53324d6d536548765a317835372b45543539444c4a372b4970694259465037575355546d41506e375758792b3336786d536648324641796958584e56506272552b4e306e7a78664a7a6d553064307072485238596f4777436c482f414635667355556538776c574c57325856795947616761664970614e427a5064464e546d7a7231452f59364e56394347616a6d617a724757755637444436333644344b484a514662396d52384c3366796f52705462424b576732665046666b633156507a4375693379424d5761794d33756446517a34786b5a302f6770744e4a7a776778542b76672b6e3641766557666b35386871544c746f30315830782b5441754e32664c78466339305866303979333053304f756e423269446a6e537a322f474e4b6e4148395637666c674334504963502b55306d664d327a374753356855636e746c4b67524332613955355556576d75726a626d66592b61302b652b6d715471444f3550795469646d4f3847724e466a64476766324f4370716f4f4a7268784b59727539367039694a5932396c2f774376394347545058312f2f524e7a6245756a72533179533548752f4d4e4d367958562f6a74566847732f4949437a2b684a6861527038645852334c37666d784a556c6a724d316c552b583166514e725161665775424a4f716d7030456a756f6871322b387a35676a34784c65787956556830614a6c71314646542f774261632b5a4e55365857555059645148307a6f576b436f4c327a5570306e3569722f4143663057394f50556473642f6e4f4173746e4c704c796d4f746c7034326469387a664a4d32764f555330334533726c30533064577131793054744e774e557072776d4759746576646b524c4b394a7372786e5a6633786774627834746a7944766b4e4b4c65626a49747653616143712f635771795a2b474e71536438717538614f63372f5433716b4e52374c5a6d654d395265307a59687954796f47356f53442f457878364d4d745750705777736d2f6c317555655a4a3267525934702f6b6734504f4f62716c33367866342f597a2f6565764148704a5242325658773947486e5a697a37365134326f506c7a6e55385569636d356f6f6a59326558536144425739314e61553942586169416d356950784852526d47736c4a7a3174726a362f5070314557554833496b6a717a79517967766d715a6e43744a7a70534e53613648424e39596b4f546f383641624851374a5162683431362b355364576a4c314c38715475624a597636634f467535534d78505971674772397255564661517241417241357a6a366747664e67636554554d6158355838617a663265325670306e617933544b59627a487946483664715a6645756c555846434e4a6e554c3533386c2f396d6533647a5a786b4f633635653349676c534c314d74587a713156526e536c6a2f77424957415a6969657448592f336e31594c307646774f61326c3148744a4c6836464a724d64526b716d674d2b36707657684c393357526e503532504d726b736c625a553643476441547031706a755848716f374b626c6a524b377271506c613056774274554f6e2f4735375a35695a654767634d664f426c49477653677a475a6a4e6d2b6c4e536e66654b2b4834355a556b6e6a4c4137623731726f51722b7450326672492b7253646b564a4d48437a4668443263314261624f795356647573697a77716948324a73545975796c6a4b4a76654a337170452f6364484130444c52314e4570557936756c6d32716d573837637838445069456766706331675a7a5a314755727a56756a66306d4a364275704136644a4b55416631733976785a3877395977714b5a6f6675444c79553835736876553373764c704e43576d656854467a2b3678664e4b795571355059672f735465367967334b5454526f506a2f4e4a72422b754b426b6f6d7a392b696953336b4e666453496a6c5263433837517a2b66635776486c306a415a596936774b5139692f6f2f4f624d2f642b59776435423953714e464b6d35534c4f39504d306d556a507173654f366e6b30314f4b4d2f78366d3879314f657043534e4a4a6d53734361746c427463393335687a33517856502f5350687a6369314e54366b79362b56386d7962485331496c3731364764737a34525459615772463144516a37523849517a664d782b3039594462503138376c70356e747956396d656565306830486e6f624978704574503453507942444d334270664c5a524e5734692b514570415539426b6b6248752f4d666e4e4c744736396b426e58723765592b36565444716b56504d35646e5035596d5a344d6a4a4d376f62435a77756752696151466f7a414d2b6750533270736f45366d424b71634e444f302f354b586266302f74446f636131312b684c302f62784f395166456a314942314b4f4350505975576643617a48554f7536505330724a557961692b713532504f613642576d7658584a6550334d7970383944577358587044516e6a56382f37496d302b7258544a37356f4364584d2b524d6c386856527564316a7365504f673652566679355a38737752725974594d63466d6c7254305539616442722b4b6b796d346c494a6e6a32664d534766586e723165534d35314f737672554238633944737569764663543141776e2f7358513871316b35795342796d735036663753412f7669324a786e75424f4733767436736369646465686f525455617061627a762b5a4f6a714d736b7665656b5970643862506a2b586e796a52307a39706578777352413262394a6657335a6c4d76466650425155354a396d4c6f4f37504d57594b3944366b38585a704d31524f6855737376332b346a617358667034644950693753316338593667723632654859506d474e526c65555434312b65317330394439466c567655706e55542b386a6f4355685859315a3366483151664d776b6b4948502f414e596c78535a69635230476b47682b437634662b55507074353663394776694c2f67366a63316d745757364878513256792f653633516e2b5a303752746437377a576e674d2f397250337637792f3468534658397462385541707a3354656d3146537336755851574d6e6b31665779304a477735757776705948574c442b55756348444f6a6c4466684f774747446e7576372f4146667843475866327750777069466c4a2b41375374534251665a494c766241714742326e6f75666b353946466259355a313757664b444c752f4e307332644d704b71346652652f31667841415839736a385449736c69462b4736344a467164353276547239645364767354697a4c6c53646e31326b497836413171392f516179626879702b32436e7a76663676346846586632312f784e30377556483476756247694a466f75713457586b55754e632f7744466a6d58464c524e3861316b7577464d4e376a56394f4e61716a57717569366666366e34342b346659763974503857737942655648342f354c427066586952433254597463714e4f6261752f72306a66552f745467582f496579775846396764446e79424d49754130362b704d37673530763762503473737a6135396a77376333386975325159594c3939334b73734d2b54344d7a6a754e6f3476367373397a71666958306b7052597676734f5a5264435931727a777262487a424b762b32442b4b65786a76707a636e7950503071654b6d64594f745439624f5a6c4d7070504e686e74575261307230777a7a39496e636d3472366753673661623650612b2f314d3965417a752f746b2f6a54506d3649527a2b527a72366a713748347a644b62526130315135654f55576e6a54726d2b714e31444f67716b7a65704d30375a6a51766741326638414558385a2f6e2f774165762f4147712f78596f355863482f414a4f45743946583162733757626c73315731757a37516d6a626d6b61792f5266616134584e6232684c484b7357346d306b632f34692f683935474a2f774272583864366b34733261506e513034622b412f6c336c4556395837316a544137524d674774426256634b4a56736350554b37516b58636d56534a2f556a2f45582b663141376e397148386533654f7a795530656375756e4b36694f576e5442744a55587930316339716e4536474f536136724a7169496c57423873626b30415a324c36632f34693853482f6a763972623042794d2f5654545435433633536c6d70314a6450624a6d70396a514f503474474c5356724d6e7833564d2b47696f6c6363663145382b6367425579675437527154504158442b4c2f4150626c39446641767944394f7650664864727a46322f3464555772695a4f33354a70582b4b7179614d53783855315750524c39644e7a364c4d39377a346e7166735a5841452f6d614a4b706657766174367a3851573964503766487078362b2b742f71623669366456566d353552745479374b516276575353707a6d5252384c50364f70794d667079546c324d4570657776733170536e70334833716d74616c4b3147764f332f41476b505248572b50534c79547937504769667559736f6475626b4c492f31375874566c3555715a7875557651466333656743514b7966674a4d4154774e49396f74454356786632696652614e73386b2b70357158575a5666657574435332476833366f5a5135656245346c2f616b6e726e5a7a33452b70726e66466f67354e48505a482b49763466655137522f615a39472b30786173336b2f7144432f52354f504d75446231626c575747777245336158473752714a6a5332766d6e363476717870636e7243627956504850385266772b386955356e39726e307942512f4235703669726c4b77745a3876334c6d4c3770484e4c3758327279396858435345304b7a6f436e6c464e4568756e4d666c713441566e58745053734356346e397466774b4c743570383139535a3948363858596d5a4f795373725037304c416f57724a5a38675a4c7573304a614463485a51476d494b515376726d46544536317042347637616668627a466b766d487144564c526d4d4c53444f32696d6e6f4f48746c4e6456756367757071635472746f69456e4754627469696c553156436c733550767265763841304c5678767759797333732b64337a66314163686a4f2f2b3764715974334e5736675935744a755734454a72697357532f734a345a304a30754252386a522b38644a316366446b5a4c2f41334c3763756d667a6231446445366c657453697679666378414234565a7a356252626b436a735a4c4a33474336783168422f4b76706330796451624a393966384142583767376b66675a6e5a44467a532b622b542f41456442335656556e524f6d303433797a6f54636e75594b6d342b703247723544375233356d653830754f6b426e2b437676767953484e2f34455461694c346c656165635254734a454f62386d3955325a693072306f3374716146447536307872304d317675704c374c546d6e61772b674141623333354a426b7677626d63767177386c38354b70724b64454832627a4f614e4a32384b4e796b55342f7742666f7249616f32435844576f485463442f414545627148523736504c37676558344d575355306e4a36682b63366c746b3657366a74683952643564485a524d71694b4e2f3136457a72477132726a4f5573615a754a70476f307259696666666b6b5454532f48467671477278357a2f4a573048346c72486e4b4c4f5a657a3765665858524a387a715473446c6c42546f6a416b6a376a4d72774933664c37445858647437385a454d352b447a3656314c30765076554c554e3858633142626d6e5775524936443631665756464a5a4555734979732b75325a5666374d344a72472f592f33416d337676795343304834624e594964753835383775544e334c5772566d3271453163367047674136453963636f30442f41492f41344457386157444e517743536b327064487650696976555a562f684244506f304c507a547a424e6c4d5530476b63573171567173376c706e51776c6f4c5548366e362f532b72363871584c55594e5a3834664f31552b2b2f4a4946682b44732b576a5231413951765544756a585658515330655337544544486677717145747a716834475851386d664566317a547a346a414a6a4c37624147506666447434677435462b4647527551497967387a3836686e506e38707a2b503264534237502b34327a545573432b45425852486c724432483776682b48694a7a2b482f6e2b6b617339395073427866686935347a716f39512f554375586a515a45694c573231446e706f31704c32716a747530506b39763178792b6a4f645a38502b4e6d452f6d2b4e716e543737386b68745a2b4636724a483179656f506d7931727161507935585853454e68304d31677461735742523862584d5432695a52484e79744c506d457a7063687352725a2b475a41334a2f4443494a62314e38713877374d76514470555a6576546d74303434694a38534e67506a63375175534f6c5633336648397744414845387a6338577a4f726a7942316e346b49704f305865582b55737a314c796f77525459335962506c3831486642706373715a7a72466e4b36556a582b304c2f414f676e762b756a6f6d647665655151792f783772384777394847733875386776447a4f71624747436a6f4b736d7a364637576e6659726d7335696166625255747063344358665836746a6673332f4d6339642b5a7a743749703779762b3376693764765a793954664e383933386a48565848686b2b584f726c476e4a3043484c7948736f376c69626a583169356d4166796e78762f61536b416c6d7572503452582f6637592f6a4e75585467643954504d4d755052627061306932704b6957687076737347366c386772424f4f30586154424659724f69623448667442683173392f667a31324348663841354b6a786c7978676b395366554b315232467338767552612b612b4e453977693164326c565932576e6733546d6c5658612b7a6145776167653170324c2f7166667a2b47414532503755506754667556786573506d326464417670513865776457314573594a6c6a723072746a3256616b37624a78373964626e4d486b636155716e4f616a3376667a2b4742434e442b30743654647349642f7741373876436c7049725a4c6f6149784652514c376a66714935717839744b662f59787044396f6854502f414e423150497a3663302f346930526a4841432b66326876536d37513142386739542f4c4c3458756e65635a5a2b70506c734f626849787454576842717038396a766b55356952644c4f384d333970372f77424e5a46482b497448534d434a2f2f6b6650445035626b2b68363665653576645852634b756e32764c6e53746830305643556c573153316b64467a34666c41306a4b36624d2b426f752b6f5370645038565068503241366a2b7a4436655347754f58316a38354c6b2f6b644650646e6d68747765525133745a4b313655674f732b566a465a6456554a6877476e5251346d75352f724f7a2b712f34712f68415a6276396d72306973526f664c36312b6f6664523155476c66587233756239655755475235354c49644a54434c71786d37536e3969706465413970743631626d4d6d5061626431496750746e2b7a56344a4f6246332b75486e366a587136577475446f674d63586b586147706a53395330454165345a51793568634d6f536e374a6b697a744851732f715939716e766a4962562f77426e58307973694f54563958664d6e364a385a797654386f682b6a5a314c74537a517330386d69576744483564596b6a6163726d69495a53546d53594173777248744f703356477947562f6230384e7a66784b44385678383938696b7a502f4f724e30764e762b30323754304c6335706c343554434559436e48666f66376e6f5574715639735255594a43646775724f744d366e764e6f3171742f7331656c33585a634c665637314535536636706332464d75616a48654f4a6e737071797674786a383768633747624d386b674b75774a39366b6e4f732b572f78562f434155372f41476f50546c442b30493955504e75317a3475623141614c796f3047396445777371493943357275584a47656f6d43622b5541307a53626d65356d6e37332b4b76345143566638415a32394c6f71617452487133366a614e7271752b35724e5a326539384f563879366e7361716a714d635773397462586534444a51664c544d4331552f5a6a2f4533786a45594233452f7451654752746d376c2b756e6e46746b63656a6b42446e366c644e376e4d57526a52704972716373717068586e6b456846447a336436613353455165786232695a6e4d56476333396f7a772f763054792f586231437955736d51656b6d6932756b39796d65786d5259716a794b523357443844454638584863623144744b316b725436645946502b4a742b43425957662f61633846713057334636336565573354564c5a6b3632596c656659746c4f664b4f5850564f4e316638414a62422f782b654e6e74366a357634464d6872374d32705256392f503459456978663756667037504d54662f414a396656596e7674543267552b5530317337637a68636132644452354d4a7169465a42316971584a2f6a55676d7076734363346e586e76724831456d7866375533674d53704e42667266366c4b636965303131493153676f51464378545573704a444963356e4932536a7964334a2f6a4f7050732b793068396b5437526e75724d2b596b4e4839727a4273476968587252356f3255763447542b507a31767859546f7a33465662302b596c33526e4d6b314d6c39673859343051416962334773702b32392f503459456d7a7637616f3575754431666b4c36687169446934632f4c537a522b4e56666333324f356b33524479754d54575576755174376d38435834306a794d6e416466667a61765a4670503841784d78765133497a747958314c724b71622b574c782f487258325859716356732b724e6c5137705645344b4b506a59545436546863596339333661384b565a787154664d626658387758784a38444e38637a39455a7275716f6e70716d72757a3450356c45347a31575566715a765a754f3746585556536d6347676b4870664355786d533347746e4d3536684353787a2b364f7076426e4c6e7a566f4c35656370566f56325a37334b4f50465448487865586976477965523950312f593673425353412b4a494b6465456434644c656f7130325a7a394f58616871704e574e754a59504e4e7a472b4f706f324d7876574c553658715a31364e76754544343335467563734573344d426f7274544a39467a44434a4e3262644d4e783966793258356b4f513273496339664f6233746f686e634166367659367837576c536b302f574169653971744f2b6348503637675569372b48366137357549765347584832724e73365a6154796c39766564556f766e322b6b4969665847594f3258315a6637565175626356507a747876705567596443744f32374c6b506d6d785a6866524c4f4c476d77692b51657a414a4b49444f685152716a686643696f716336433357456271486c49646b7a6d664444506d547a78364563724b466e395750343063716532367831427455624255332b67654e53504579564c3665597a676335426f6f763841346151344a35557a7a497658724d4c6a484a3049637354436c59394d5576537a694153546141636c32726a4d3969554e6749353331624253355545504a6966574f554b2b57364b584b2b52625035426a554a6c64317739642f774251586a5148394174516a5050527a632b326b414f6e397679686b614e654e57727438733657756d537a764731756f5974712b3941424255412b77533631704e42724f6d4c4c32636a67353072624f717466746148584c75727a676b5765302b344147706e363143637461357150734e616c53544f37345339686341532f5a6737544656784637525465724f6e625457456c754e3750716f7a6f624f646c44715674474f68696b494d456d3477476b466659377767656e7057713034424b6f2b4a796d6c656f4c4e534e4b48525161336330485878543044394d6847684b52354d68523245485669672f3857634436717445466563376948636d46615a62774c455246427868614647626b6c5244503973686c597a484c763131696f416138324d6158667266474374646e57513579755553384136432b584834535661445a395147424b313831656b77496167537a485438664f7563585933633666776d7355674e633265464d764c654e666d5335696d4d5a707370616f4b7242727a493046516a4d30454a48746c51724d355367553833664877413450525347642b686e654f4e75324b66496c4c59473455684435496d74694e5332746557506a34454858533034726b78305367624f6762666b4167345a67382f5a4d524d7a45423546716f3655415373697036576e6f614c532f576639566d58446c466c34327a3237716e72543869787a31734c6e74515536446a2b4231452f7637485479432f32702f735a6b54553742364b324c656b6273364b39663147564d376261467a366d54705a39694f7a7256764a68797550344648374350704131306135632b6f657a466e614d593154483839366c737354644775564b316f74573032546a566e2f4e2b69436472576c38784373784d3347483669475664436931696e71734b5165586e7a4d6452686c616d5679595372794334723754436a585958616e30632b77646c442f616b31676f77314976383769394d74654257586d4d324e5647302f782b58474e7233333962702b5155446b464c6f754a695a3832476d794f5276766f706371616b457236587a436639625445576a356e564e2f48764d592f4c3776493849732f665a3542347857654f692f5438635a4e4575785767766d54733431465641734c4e626f5762774d667931777173796a2f7941585354673278584d6935345630424b745457646d586e6a7643476e3977394e4765537754436b446d534e48336d663965777a49522f5a75373035446349733975494a43784832755854522b354b4b74686e616c356c46732b766f71306975726f3555686b2f4c474d30484943543766414272344f6442536c564e41515a72644e62694646722f42633564457746554f6f46556b476449704f6a46384d316c4535537a6e48396973334c2b4a59796861436a55504a70787438584c362f6d48706146484d365665742f4853794979487245326c7a556271664337506f3261684471654a59534d754e697765354247446a61464b6a464b714f564361487071657a4d666e68704d6134644f444a4b764d512b4c71583569477376654c65642b6b784f656c692f657458782f4d432b4a645948424147645435645468643770463958464e7a6f5a4a65457935694d3257626f366168346e6a4d6e4a50354b75646e4a4169795037492f435267754e775a756d526b375771695a366f6539303463366f5a7834476f34454c687249353471444d61474d526e6b385068732b5531544d4e4d684248515351477948563078706b665a79376b6b6c4d77626374646d744e5478634d61324b744f6877705962785763637843787a5a39543969386e643441417062497069777437486f3831567738524e322f6d5a6d756d626e6d36664f666f61703475676d4d515837556637694c326a595033446d41444b674268627069757651457a6e307164475434626241624668387a6b5373755745777346632b6772532b4378385a393434433753494b66776b6b584c624c65416673746a746b624f79325a69346c57307a4f36765356796d7753686b727a5974446941577a354b7670382b4b7a722b2b774253336e776a7a3561676137537570484c594f34713265537346507043494755777a79485547654f724e6c304c48476c3574453067345a316c3959356c4d6335366a502b676158614f6f4962494a7a4f7436344e53576e745630577970383047487065797a734374366b437831614178726b627956787136594335585747536c3235505037427730376370646a72334d6a5a5169397851536f61322b725870526e746a624b3931746e5a6148637a58544e3436734a32737a5763396e7773342f546a7635636756526f79543644633278624d3073796a5566645763712b6332373139716f6b315434647946436b50645977414f7632334d716f2b495a3347446733413547786c7a69314155452b6d5854527231624764723343556d6b525238716658496d4668735943666368796956796366656f6144503545705a6c7a58386f4465507946793146777477474a49575452614e772f487974575a704d67304d36724843316a4278317a73734532645a4c3862456e3767543054545450752f4d4137664a455461484a5667476a6c545661737542626e3056624264706e306f6373536a6e687146656a71636e545535715741644b58754954543855594a54625a5877454b71386a6d78724b757955447536634c5971387455694a57567857396d54796561367a43714161467373683045653576476d33686d51653032634e7475766d506e5231396c69324832332b4f304f7268444138557937727555347368753252755961484c736e2f6456544a756443736b642b473466664d553862503641354c6e723856657775592f59342f346a673467485a7a35576d6a6a706e367632744367364d3871366878794e4a746437425072706a717355624933587a45385234343142356a576172334e6e5a312f65787a5555727972632b71643749727462514e452b683853396a446b525577565774555a6e2f77426b707552757a393535422b6834736b745a4b3352492b397431626c334e504f30646a36773535736430536e41563667554c386e4d30642b5752483341396c444554646a512f6a2b6e714165464d764e4e6c30315045614f7958386b4f6e473768385931577444783154485335726b2f4765686b7a317255464475456d5a6f2f745368353763774f36694c726c745935765a6f354a733448484c5675384343625446692b673163634b37317873537344344c532f315a7151354562674e3439416c38446c4e7a674a73626f6130635670746954783173484c314c317448497659356130416e54723146334c397356626b685666524b48587348342f774375634a535a47664a64707a5558445a79724b68354c6d786352546f694c586b543944683574412f4a6a4e714562654957357a54566d752b516e41354b33415774584c7972736b5278614a6367757a716132797454304237316457624172566e583068756f772f7545746245424d6f2f593769442b583255686c4c6e6f662f7742667074436864525544454d326854785074716f4f6f4c4964424c6d6169572b4e5a4d376a516f77597a36304d6a4644317a5875444b44746b755a42614f664c794c725752306f6a43634a72704a49446c7064316137686d6a5a314c6e663563355a326d61446953396f4379662b67552b37786f61592b5143656473317537397558566d736d6b685458397174564e4864564a447051737a4271414f75425a41794e4a334639675a6a36456946777a3661626444516d6963715947334a6e66552f3637787a4336644a31737876695864796a5158584a79726869337566772f712b38566d73423031594c6d39787661787446626731544451764247765045375068555256352b6b4a337a314a7961757071536778482b566f64385938555656414635354b47566a386c386c562b476c4279494b4b654f35696b7767425752705a5155384b415335674c66514e424a7a394c6e3750352b45326b4d625a4b4b6f4f5530556b3155497a6e587863694a6d615643484c474b774c6c663635655475773771684e55774e63716235434468746e6c2f6f476e2f4144596c43454a6c694d6c6b324f5a73697734782b74394f414a396a4d437a397831646b6c75595865546c4f76365a762b5967416659432b594f7258554d3074495a2b594976757167684c7171366d64344b2f73514d2b5354706c326f717667486f6b316448775330676f3171706b4253522b626c7932395431595076555663565a55515a462b6a5456584c61744f687752366c6b726c706d2b30594830694d2f6876515a756d542f51486b6a39686a4b623036444f4b2b687075746f516c5534324d675a3350346c335a2b4263777078584a5366736577557170503577636b324a4247574f644145486a7a74566443654471366c595570666e6e554a614537382f546d2b784b6d7261366d4f5571572f57475950304873506e61516f49426135724d663565736a624e4b7270334f2b5671594a73316b3955665948745a4178344d48736566517a695843526d48566635306977303943533141366237572f4935422f5472436250366f66355674466467617836536c3642792f38417178647357326d72346c7250396634564e667962693168384457586a4d61375135316e6331796672456c5a6e426c2f782b5238525561546332556959346441626c76595832503338774a5351682b7936432f78554c646c323430304a6f4974443634797877525a2b7233764c53546f55383070795a6f4b4432754c322f5964306d7061636f6b755a315659444f79304a625266396c7664424331635650526f30756b5a7063624c323669615353632b697a704a75497575597347436c48516e4f67754f34426c6331664578365a707949454965545441355650596770644f636b3142453569315a754c314c484e4a776d41464d7850776751756f4e4949496b626f6b3661346336646a586447504d5a717a745263744c55796863306374682f585839356c6e443474725865383047414b44324d454646483831464b4a4f465a396d575a2f547a56543959334e6e3563774933664c64654d733472535a4f347965627444444d6d2b3450306f67565649754f785355437139695a45517a53446f2b526f4b65494266536f5a38566a754575672f745843442b4e366c63344d4d5570412f7263443972353555516a786c486169573653696f6446615556385a4e564e506f7a516e4f58515936564c5033316f45314e495755635731317370324d444437584975574437333668304e735577736d506a61717331544752647a356d6e59767443515975685163582f7453353151703738337339344c4b6e7a5932397355516c4b71724d5171586b6f706e486e557730716f6d57374e37795054584b4e6843672b4b2b3264357541686548474742454c4d39776b7149614f4a3032496146627759772f667a767830555a396d6c4f546243646d7257526c3867393972766b62374572635a683968624c7061456d6a48457a715546326c67367a44376f2f45562f732b32756a2f4146386c6a374f36346d444d707749446b625666354d616167616754356f4b70466646564430364c7469684c6c665867473552535563696e445046663250625a656871656d54552f636f446e73396f437345324c6c735a4d3671515a71366f327030415a6e543952545471522f774462364a745767666136505071347239554838787048677454515457434248586c6f753461412b43476d5a656959307551696e4b584d743474466964536a394652477a46716a35384850644d48492b48543265637a6453417469725a5a31387355395342312b796d4c725934376c7739716a2b7565692b547379736c66663869567748643654484a4d586635493977476135456367417631516e6763535370474e526f2f4f4e6955496d412b55614768524f7a7469496661632f484f416b38396c4458304a2b455031762f5065786e4e32317a326f762b75753753302b726e344c523032554e4b636d554a637757447a33434877317a41777955596d332b6762384e6c6e78735a326932595947447369342b3536317935334c424a61687a307048363771672b667176663856505a6d664d597a392b7a2f51445578736f72697a6334422b74463876477566446a306e724e49616b575847576b54557a796e4f35684c7041693757375339394879742b58676869356276664d796636644763664473342f6c4c52356a736b65356f4c7a6b5a71524a4f673169524f6b657161584473467a306c374253414857574d6d715a4e2f47524478486165337a6a596f55364947783054376159374931436d4f61477257623253644a476673533663795130774d4d464573353673377369766a71625575627441324f366b573072424c5531736e46464646445a5a7855736d30712b4b594b4b2f72674c414d47614f73702b3035746c435172696d644c47526362624e30784a4a735866785a6c5950424c6557786e7457424744674546444f5155416a4c4b2b333370666f78665742337a5a5154616e325a6b334d676536613278424d35516d576a517571447052645743666d2f6678632f612f6e42365574793635384a764c70703266592f62456d36365a61594f5a345368336f736f355566744c50706f46794f79436469765a576165395677477a6443494a3269365a4e4b7767595931717359546f6e33734b7145654a6e3148386f63537868397a466748766253416634384d562f30443758353265714e72766e476471427a566154704b75665861786965484e57536853786e767a302b7a3579494f4c393743344c43616c4d77596a70547136694b6533506a6f784c774c34356c33644667645256334e75656d69564372492b3439692b4b614a69594f544e7a7161492f6944674f457a46644e78397738684a77614d7a44736b544638716964734631336553314132653572423047385032487a70643643666b6f34584442717064536c57306c2b714a33352f6134324139626f776444326f3562345470544e30566c4b79726f644476765778337536346848713167383432586a322f4c4d66475a3145524830537070315658305566746c74544e56682f4d774a574d36516e52377155673468425a6f454f67316e3979657863782f3439394472306e7831344d6150557a55487977414e6a4f442f774274553954356e48396478426c4f345a43516535675a464f6a5235303456313649494d32486e3066754d4a50616d66757a2f41436d584e4f53624b5071756a3731584639393766724b483964644e7a2b672f6364382f32682b77536c47316461424633516e6f79316e47587872304e6d6a716274547664426738593476307333644a546c49396f4f4162304c4a4c524e33777a706e356156724d2b62376c304f67304978364e675a6b4e4153697a695a5563352f3841474d5453614b2f6948695568543371456c7a7648584374655a49376262372b565636487964377a58586c78645448777175686f6b5a547a7056375239357971483367665853474e71647142527a583538576435424563436c544d6870774e334936627778303378387936615a477139767a5235665a6454515277364b564e76722b5a68673436666d5a734c797976452f523775466b30312b72316d4f39615978725852347368644f652f3841535a32394b7479654551765a52595a68524f42743553507a4c3939664f4f787a62646e6239675072384d394163524e657a752b767a634d36714b763138345a61464646667152785769794f6155412b455365537a5973342f3332394d356c2b7233664c455471644930756f567078505350793555624d7231722b654146326e4a54426b6d58474271364563734831752f5839756b6c6c6d626343506376356667324254376d703737555445327248515073443070394a5044754f43663149385932373573734b626172415a703639542f41474c31594573525055734b707a6a6e535a4e537030376a696c6150452b7950694a6d62576a7077455177736a787279613079336655547866785265545864466b35322f5a462f486161527a626557787079355841414c4b6a35754f6d657078437253722b79484e49774b424d7a485a7276384158694a6844364f2b473253304d50314f385230636a526f7a5664306f4b676b644f714763544377756657506a52352f4b564b706b3537754d4d41506e776d3272726f33666c6a2b51476266704434374f674d5566565877334a735755394d51303633555563527138306f6c355359714b4f307a79314d5a3964424659366f4a386b6c6c39694d47416d59745061326853763045774b3667336f2f584c41784b44457141524f65624c4271665157536268375a4a38564e6c4d316a4b413658796851514f3650666550576466472b656d33683638776b2f304f3850727a38357376716836596161494c6e575a4f77696d6c5630307938374e6f4b6463646d313074544c586e31513964372b732b6349314833696742417162725a37467635696f3766447443767161753656656d6762376d707438653933554d474769666d6c446c7535704f463270784979304b4e48592f7364734f52524c704b6757573935354371342f47383662533773564b6676577a302b5136734f616347652b314d4a7538587a356751452f37476a537130705843736b554d44727277476b307a4e4d4430426c2b5a3359422b547353345572554a7a2b72776f6c336d4d392b777937755a444566633952754a52342b6159454942302b324d576850744d515945327977377378716e79354f67364b31302f637432656c3742663967755a32587473303365386f58305a7a702f6c46626b4534502f414b586d64784c517a37486e6b544a7466384a4e616e54775330766c69796336727259676a48532b4b6a514f5a4d71555a707148594b597669556c6946696d5a3069514e4e344749753335594175553361544d614d71714a5a4465452f6b57713354697a2f6c74736d6a6b38616c7034563141696e2b4c7175627a67547236514843466b482f624e544b63617a356a4c424470374656645573634777306e5a4d454d464c465a612f342f4b7a4b516266714a684764565273716477567363346d444171524a47535866583076306a3569513461465a346f6469555835316e58633242574644347561694b615854496c656568734d47483468584f51394a4a7136483347536346724c2b4a7a746e504e314678785449364c66724c4e4d4c45565377355749334e3475326e51303455534f35325172484a5a386272484d6333686579626e2f41463578502f4d344355664e4837382b6b52763755756235374b4d2f506a6d5a637963424f6159415a5030435974492b51554d4543545961336642516a76794e642f514f3668436969646d626c74736233756b52466e6268574e2f544634683030316642423866376f713738362f6158522b4a6f4e4261463041766f553549625a394a7064725368626339616950674f6b4c6d52622f46346b744c59753742634c636d6f54554648574f2f31487279734f4a4c674568435a545a47494d3950625961592b52704179642b756c6e4247435534594e30355536784b4762364d756b6c7376544233302f65746b6e50684f6c55784d78306b413931754869732b30667a6175656653737a732b7354376c5570432f426578636969573276377978545261385434552f312f61424b415070302f30694a6e6f42584976354d712f7743533744536d7a4d61504c7450514d2b52726b6d757667716f627a3448305430574f304b4a2b4c4130664d3479562b69456a467872506d503170722b7768534f456c59513366426e6f5143586a6b35444c496f3832536269562f43516c495448415642634a75624f6b327a4231785277487455623950483651544c7351796651517a6a4d35763868785065325a7a346c366e58664652527830444b4b513473304b4152634967644a764f335a7434344261577372553073685a514c636a3669327a725a326450784b36366a4f4745366b3858565a79466d654c312f4958454f644b7a70486345496471446e4b654a56546c4b5134614b73713044546e38766233696a6e73746d6e477a516941714e6a684f306b476f57664342684e376d6961306d6f4b796d6b76354e50526b705631395553622b364b653662464e6f4c5171552f506f7a6a3042485157346a7a6953435646313874696b4a364d44663841574274497234576773497072627545544b4d77553952383157593656433542747154304354546e752b73317854437052343464576c446d484f51534e55545541715946317a5330355779413133773254357a36373669627847716969345061582f59735a7a716e7064434c54416c704e374a6b75766d476c4f49354b6e663841714c796648623248744f5957664d726d384c45786171757934665a563538597a464478335863486f4b503741756e4137423446624b6f2b66593935774c6964715264596a363552756956387a4766782b676e516a6c447035352f5249312f757636366f4c4f56715763776d6b4e5033667278444f6b47337836542b3350624e6e6552502f414a504b736362706147353638563159563636736e6e77594c4a2f4a74626839667a6f4e6d2b6f4d413067526765676b3250506f654c4136696d6b717155564b7251732b5a4171307235736f5663655031704137477558505859796a71503841714a543852394c2f4146742b766861637a6b534f486a334c7a48564c63764c4f4170455231424d2f5a4e626a576877564d4e2f55782f595837786554656d41543075483677574b35384d43773756794967436877543942382f77425575334e526e687841397365795455636449717a6d4c5a516c7a4771374d747266394c3155714d543646592b7143467a2b4f3864647846386a614c65766b4c5265305a6f616649633333636c392b6778435363757755394834465568476e346a5067675854745474514b396474783658487146692f724f374c5239394759714e714a614d36726a744a664a4c684a65346457444852507a7171567a7957665466503259656d4674742f7866655157475a7257616e666b6b305a645a3876333139694257355936672f6947744a68554d396a47316649365132635067687178697a764a4f4250486f435379337068304e4e3272444c45696253653958424a4d476b55553166614b614654352f624e4379596c3550576535585349365739544f6f676a4d3865547a2b776b6b744261612b6f656654444e346648515633723551466570654b386d776c6d7346614765396b61536b4a4a4a4c3332665a424a675a6631554b6e6f577551644f6132765457536c5549732b2b43584b6135656c744b72544e70625a2b32686c566b4c5875466f41714f7a70756e5735485036436f2b6466733073476c79765a33526c736d72634e66386450665a7259646a72737a6b6955746c68476768397977362f38415467645a39376f696d642f514c4f6a4b704f47726f7259696569742f51306a366d54506b587972576e304d35387664616b795769704b784b6f55676f665a7938576c4e387a6735784b6e79383739666f515a3262764c7a6d6c657045746c4643622f7170767235516e4e486e4e416c37553447564561682b482f46346d626d70542f51556e355a706c7a795452564572512b314634315266436869455a7a6b4e7269714a4f5458315263667161695a3953642f734e6246662b7041366f666c3579704f744f6b2f4d563679617464595154503466637857715575596239435862796f6e426c7a6b4f6b2f4b6f4a34792f596e68635636535438415148327771656634535476723469575a746d6250455846614d5547776c646d6c4d655772344f664137585438454979757a3071544f2f57544f774273506c57634b58585750503750316b32427678683255757164745457724c54635a57324659456438546b36447166346a6b624a2b7530724e4a67366839365475392b7a556367667068304a5050553768596656726171764f725a5648526a4d35796a6c492f42525848514f346e7835504b59334f59686e774c46356f373833774a4f5a7a58643730765a6d495854546e685a7764435a76497046512f746d314d6e4e4454304b625858545a6a70546a4b6c47737a365a382b5236356772574769302b6946494d6f6e76356367454d2b795a5739675a4c4730516f696c676672734a39384f62416d4a657a6f3571645a79696353797541656d342b6a5454387946574c55644b74784b467a464e42386e7566517873655535544f38693564777237395775344c49307337564c487972735954792f76686757776b414136702f59726e45314776726e35436a6c5a6f7770442b4874794c63616a55754637737958644e6c616f73387079497670584149546f47796a762b3251443634476748797872724d527872316d54313578575a6d6f622b766755576d2b2b2f513052717a4e504d57697050536f7a61333072476b495444324a6e75534a546b417a48304b61716335764e4e522b303755577a7131786e31704b686b314b6f376b7736387a324c2b784f6b546e465a2f467749477250744e5971654154686e334b59612b4e5a457a554e6b3056367161473659364e6564537a6e58357a5a644e706c45627150636a74675666415650316b74615941777763793130365a3657594e756a6a614d7942736633743842317853777a2f463070466d786659574c6f324d31714f556c2b6d424d4c484a556155676c304348315758687956432b397037664b2b6c4d6f4a7237525556417531754233735a506374634c453856525578357142507767616e524878494f4f35393751764d6d6f4b6f4f66466f4d757a356e7263454332536e66704b303942504a38313037484e49503276367962306b63332f4e445142684a6d71514e5530746453736b32686f66466c7833315663746a6a63415579426f5443316b6f2f547a334b367a2f6b33346953474e494f422f516e47516b615463365a456437586150765659436948393378682b6b4c717466517962536c354830536f6a344358666f4363315366656b54417131634233477863624744544774625179695849557932396a7a66626e71305738345247356562774f6e2f41496e3959666439506f43332b67595a7979645a5a3861715030756335786b6653696e4f725a512b794c566b736f4c51583864484855564e544b536b6d4849327550685566576330437136355738377875637434716e3679777264475a48516241704d66493548702f532f7650537a354234492f3647666248337064796572675944376a5832545a5252536a704c6c6c7231793738574b7331314e714a6e4675496c4d4e6e3065713537584b5150384167345568785342422f77446561517130554c346f513433695035434261526e725439574c535279366765737978366b574c357962346b382b743959534b6836772f6f47576750502b366c5a544f5366477673613036706e46577a5357747251517761487875546f433767396143656d712f6f752b7344506d4d42503078434332727031754f367734564c7452713072686256562b374a725461376755533033575a364f4831582f78744c36796b722b483939444d65396b30465653535a763236654e69436a36745977723672546e6e6d6a414d79463345325332664d58783841413532394873425873414841356f3066754c374730622b63494f4b474a55676434616d466e736e4e41364a45497930646c7142624a7763445648376632676a575a4245664a62554a2b6c54786970394b56576d365639554b4d3268394e44614938796d726f6a4571566937456c4c2b3245715a674a424945465a416c6f435772634874714351565361444f7a62564d2b6670386e58787659744c3353437644367966504c322f757276735931494753416142554a616b47785763552b4a64737a47766353365a314f314a555262537a70584e6f4353464a34704b55363941443854704b52353836424433714d7a41434a79716e35567063564664465359767436744a466a4e6d715648325a4e52766e50334954384f594a6b72326f2f53327157504c464132634355797931454a534e4d2f774155306a6b4e6a504f544154755478664a6d33664162444771634c696a556b56322b3666357663594a63516334454b757a565a3836373774566862416366596b47386c5346695175696f5a6c2b796978526b7356516b504f66554432433475725930535142737a485363422b636261576c6b63795971652f4b4f6663664a44516e54366d4450445337396b435770635a4f645167773664415555592f506e59636f4e6159504e466552316d53363945382b6a667131632b516237495556513643796141614d364e42532f734a656b5a3631705774786578627630557275726f426e422f7742756951506f7362444c52316f525564755162524b53463145627a2f6a7a47716a6e315253526a385142393339706e524c3067534262566b4a65736d67376c647936705a7758335041374650633931416a5a4e65432b544f2b4c48476a336b5a7a69427048695566576b347667524848704e73577a3353706e5850706165557935335731434154336e636d62686335714b5a4b784a736e422f4237474561365450347a4546562f7742544f4d7a6a6f422b78624c525a6a775351357657554f6e693731707467516d6959486363636f64306b72314243564b6957384853424d2f32674b5744534b696d74643379674a5370616646424d7a4e6a6d30354772366f4e68336b4e496358787565754632724e52336b4c4166567064636e763249774453396c5042556f506d71464b6b796f69593173384c3633777a4562555a69666f35576e6e30453845714f6e556a47476831326c4a336c68636e456c424d48576b4b474d49474f536847553530353349363933734b5739336666454b655a384c6b503352355173345a31725774615059665678756d4e55384875657333576d62573773694165534b64586d545a6c4b3944736c4e687671792b5a6c4b732f4c6f6d43662b54484b7a313042565254504335302f4c70366e4478327746566943536f48636d6e57666b4948677a5a36654559526156504f764367535353614f5876347a5073376f3232785a704d305952754b477044704a7a63614b58444f4e5367436b3733374d683972746b31382b6d313544376f7134744f506c7a744a714c6b464c4f6b434b46737374567a724c754c5658555a724d30536c7a534977753976394978586c3777587856622f4d736e376d7770347a3643476444755a7044474f573179385a2b56546938536c30576c4b4d35536758774f7167393548397871696a686e6963596e626a506b494c35506d4d70382b304b746a6a45683155364b5250426c7178696f733751444c5a73366f516f304b6d78797264517450574f4a6956546341774b446a37563652386744324d737450774c466f6b3362697a73314b4a7471485379547733346c49617332632f693636744a52512f4471454d644154384834704b5359686b79584b4d354244416f54483436717955654844504c692b52786e636462633161614733637833554c75386861533768746e773777544b5155756f33672f78534a306e55456a306a703863773732636f736e3171416f774c4f2f4a72543575704c584f504f7658454b65676d575a35566449465054544d705a77685a784a69664b316e4d5a4547776a72316645733756786533795a4a36565730754c7248754b656b2f494c737a4c6a6e386e31475463716e3245377861537a664f4c4a446d4c324a7050345a4757454c387a613247576d524b654d324d326738377837555a445a6f3056467039734e506a70585578694173424e43663557625246625171534a677378643735772b3335382b56685a534a4a6d3563694a6e5a564772327a457949576c663966586e7a54304d72572b56784b304e527a5362775850656b364234306e546b62777153496478654272423147334166307062544446565a2f4c657835465869726e4a476b61624c45776a383552473857776f323231787443394d6e586845382f45494e684762526332546b5732447a7674626a597971736656355250304534377459666d6f483464726957382b614e4d70304d72667030614e30527a6d63593768446c65466133596d5a77754b56647531726b6c63394d4f687571386637473550694838785868726f526b335357502b33516872525546756d645076634f674b67746d6e68507236694865572b485975666657706f3868743654706c6330354557496b68386753795041437a4975633072382b4b47375135307551424b48316c6e796964707672374d5774746d635a6d4279502f7548654536326a36422b584a786f6d587375387378464e746f6447336c4566693962712f494e4f504954505254565646446a74467a5575397368333041497a6e6f2f462f58546f7a4558346a686e34443658666b3734447335666c66707250356234766f67786779572b4662744b587270735869706e6433527a574b42654839587951657156537352373977525839695975735431544e4a6a453830794f6f5870352b576639797a447030702f4f2f4664547a6875504a6b352b6f61436d70386d7a3563474772506a766d7a3676756376314753305a4c356545304470762b706f4a357969486f6631686654304a366373446466787a386f2f796c314a4a6577654c3556416231425735506963655753647535317152653653476c31613639366a4f3975394c4743754130417053503670436c737735547061666677456c732f4a76387869776264562f6732502f41422f4832555742616c34616b4f5a6e4b6f5a6d5278775a4f626371466a575a374c3270597967353348554558313578755447323665647537674a334e2b544835675665506a742f2b4a6545352f634e336a7a6137797a6c7a6b6a61544664436562626e534f6632366873493654576f354d457056337555564a335754522f31545a705a786b536e492f4c6a386b394833723350435931592b6b69704e4645644c4977794d3762717a3862684a5147546e5561366667545a56524f412b314530416157684a544b3264665536656e3357782f4d624b2b4e2f6b4e3566612f5044623861716b3063544f70764534664932353265714765616c3871557a615767587953684c744357732f7743614150723367536e465039525a30325234794e6764667a7263316c57386e776446597a4b386c3165794b453741486d77724a6e6a5833795a62615343684f66384156437a524f576b506d323755364a504c3333686b44666966715452573562546d6f6c67543248335a6553754a656854597037493947546d5a4a47584c526d31686533397459757456414b5544656d58754b5a69596e4569322f482f4b664a4b7051624c68486d707a7134646132584a4d6b5a547151614a334c66794839696c6a73396e307865522f35422f322b725957684d7a2b717a4554316a496c6664727a4c6530663472787568584b356f6d547a6f386b38693473593372656d4875616c737a6d647a39594c62694e633937723374626d3269314e4c41396a6f78574f36412f7a37664f58703045464f6d477152646c7179377653586e4467325269684d4d467a4b5064646f3230547a394e3732506f645742557071624e5176683247664e66642f6a4f79584b7a73485376454665504b7530594a6c7343795a4c53514f666936587978376e5068792f6b37336c4c6d6d6c415671514446644b4d526e506542756a6f65515a39324d725062386a7633446c43774e6e5945644a68456d796c596b6a506334702f6b4b71634a727069624e476158547137536333594a4567384c32645230315753634c31614c4b6f78566e50585054716d3758756e75665854644978665a3354752f6b4137385076692b6d6b3141484f2f4e3957737858724d644157763334387a746e41774c6b365748314361397569695757666e65684e354f694e3832565238756c3864554b77363971666553394c6e31336539707830544d525055484364626b3253506669396d2b316f43714e552b62506e724b54586c38646966494e456c6a7a542b754f6e37314332526f41514e503841315569687753484f616e53545654625868492f6b423138393338303352776536466836424c76717a73556f5975544c4b54615a6d7a4168302f77414a394d6e2f41416d52782b3443575a6c5a42576174466b64576456716c7376644e535a7030702f73436d35436668504c2b523071644b785a3945447339696a397379724a334459466566792b342b567a30344a3379676f732f56324c76594632552b66725974414a7854726f6d7a364a71656c4b326374596d73537467705341392b57683034474e65333559436936554872744674764b354c4d71787a3071707950636e6170367577577570545944466a333546692b677638505a785231666f41705162393336385162474648787a726c777156517a4b4b415755576e6b7771453265502f414530527845584430426c5a6453786e76617a346f674a784758576d372b744243744c503057362f5370523879326c715254395a616148316b7947484c66726c545873417938755850483475476e686b6e566d59744e494e373959486d5666795073456b636836635766505352664272307630727670796e59534d375a6d7344354c6f645336344839437766303359424c774346686775742b7a495470592b6b4375797337765a422f6b2b3873317042656d4c76654a31734f6d6f5658544e6d6d702f56306a75726d5749394d7a726d6f49767375722b54372f6349505a7475306d48416c536b3571526d6b702b4b524e462b58506f4a7a59462f546f712f5448466d3261585656634f4e7772706d53626142366e393235504c374245473736634c4d524e4e49444a7866316a4b565a6b303346613050624938755a75746d6c4e39556c36704c2b614e674b436d597763724e44374e6958782f5439526e62467557567131547a457a3035316658685070616c645255697543576e506d792b796b30316158614c433477325742313341347866756d506f6363765a3965496832687a6270675841574d6636716e357134306c2b6f715939464d554e47686177666c5a3144703635636d646f394d3145595a7641436575674b322f315946306a35624b6f744b66503178374d726c32323148632f546a68584e4852544b47694f6472547a5758647a39647a3275656162503278786934357a55595635657a3638514f793764444f342f4a656e2b56624f6d74716772333466482b4d3234547a2b4461335343686852306379394a696e726e6553514e4c6c4a455065736d7a50446a34423071665a556c4d2f3841342f4d34746a57696f773242724d6e3061624f5879322f64596273305368736d6f6f486b2f7741487470726c416f317536354a694569584c68302b5a6f6f716a4e614a4a382f5a4c556a32463178353945792f4857426d4e67576b453643324c737375495844385873516a6e734a346d756576782f5439524773664f386f357a615833782b47516c7957467153547551314e4e546e667a647347727162644847466f514f305064563862685554567043683659356e755335504c37417333463870325649763541743643686f6c304744567a48333074647179326648544a30726d70635830342b76305a546249625455785879713054616c767234686b30664c386946554b764869386730776431304d4a752b354d384d3762734e7331465262446164697847737a726e7451724f453036543374635970596b584c627a77464758655256366b4c436a6d755a453673732f6138647579354b355756506336484b69546174433254735a705a767336696e6c4e33383234652f435167686a6c322f6c424e326c3554557374505a7838563068742b6651664338647071524f53484d6571576c64524c304e54363956476a78776d4c47522f766e7a4761617165316d745a374d6736717631426c484c3637417350557571544855374f64587279674f2f7046655935757064714f6e7839424253797a726e435567424e67764e545061434573662f4a362f6d436d4252356463446a74774c4d6469644b38317452546a3632596f546d6f434e394c2b793950576c626c6c396951462b317976397459434d337a4171747476776a5a62307332764d71474e38634c787279445579577732386c4a584d2b6b59474e30415371594e4c6965496e6c564f7564416943754f4d545038415334694a7969704d5231783042587966772f7932615a72634b5879486833307337594a5331587251687853736c6d596f69576577773256423967374f384935775966423969477a464d59372b674573772f504b656f6654343374525466504f79326954446f545031714c6e44476b456f576c61316a6e734965634c336849566a7a44704561546d42437a776e614f656646543433516a2f337a4f656d5857466b596750365649444a3243717166354b4c41364448306970494334702f696132766f4d7a38463347323569366f373836637071362b556a2f4f556e556b4b45302f787932716279317335695666796370622b77375437414945395967774e46342b536f72453378615545356c396f6d5352304a794a356931784f37355a644450516e5045335a396e79696f314965466866444f54576e78514a4e386665724c305a694952423348797243714778577a5572395467416e4c653558503841554644486c3135386d2b4633506d4a4c755765384a5846346c7671725a62334e73352f3243664c53784c4b63506a2b4d3938774d4955392b62346d575538535042424b576e336e36502f4d5342764e34394845497344486b374833323054442f41426449726a6f663070563852775547533579575447384c7242702b4530382b5a7673434141787138616e4b4f45637a504367614c5169363167414f636d514b714a33695169452f74643979705036556e74487a5441557841302b4f57415a7a59476a4a382f7a387534503176674637474e6b756470664178316446784c2b4138324630704c43626c4c584142684f4b2f682f345a2f5159466a6a6d39617075645063714c34456f4f79614132734b765168644861326c54435a5335627461342b6d78682b2f367a78366b564d54786f4f3550473533497261664c6b4b75736c31766c42367561613758546c5756564f6a33536d43645a705737334b4c336b504141503877426a5742384958634f755772697754695a73476652797458645a33384d744c6c665846594f6f2b3458645277695053643872434e59304553585670414c47395063324c2f77416d6e756a5a5252614750616433433672674f7169534e4571445a456b507070477a5130467144334837776d622b69397a692f7174733766366941584a2b64394e726249614743644b744e4c4d2b776c6b4f6b6c386f565036476566666a4c324f4e517241774d5463726e2b3476642f56686c5434354646514c732b3772624a794c5a6e35796a39396f74626e66575a66454b68465446734a6336616742773949356c7446684833706942714c435249624a3755476e71565730307a684a497739446c6b7353567742483350344e43666d58504e796435657873387930396f4d5a4b6c7241714f5570376c717359566e516c357073524a517a6c5443554767686a70426859784a56476d5755476777516e486741416d6c6966734342445038626c65646158714e5371314c792f3547594b61754f6958483864335a4b5654384a4969624a79617342514e416645526c38674638566439664553796278594349322f744d2f644a566a50644b4c2b464f352f79413230684165636f456c6a4f6e712b724a76737664785441554c693758336e6b4a616a78695836712b387a75306b63664a2b6c2b6e713738764a6d4c37455255434c5062387a4a6571412b41664775507676415345463133323852496b654d7a304c516c54394259725a315143743743732b4269767346574c51492b38715a554a4d59592f774350474f426e752b622b7252457a4f4935732b7567493838656b414a326646316b33765a53512f77445a525a5556504a79543056457a324f6479705973357a70657a2f774367705378582b316a58467362736a482b426b716e475a715065776c4546416b6c43467336514f2b516934535334786e323131454873454f4231336548772b65777a7144504d32424a6d616f344a32554e344a72487650756954425a77657262333973575061484f4c6864346b503266442b483973622b395a694970766a47323264736274317669343278346350773775364a6a492f486d4431624b3154712b5766727574367077546d79566f704a6158365043413072344b312b355939396e42443267593935377856695a7275323771366661346376613564307878342f7744385065487231556762684a2f51563072484d41672b542f677761766e506b5558466c37666438693175366643486841502b667649496d5a695064394b316e7937587a6a7235667857323952576670784433533864704e746974496a324c72686f5a786938345135735655797a635359494e3036324c2f513834414c4e494c4832475368344361784d347231322f69782f582b6e5557415755766a656755374b46695a644a332b5044634c6859314c6d38345876542b6e695042346f6945325443594149643967544f334f6137707258684672654d35384f6e44757a62706e707747515a636179576130646430794a2f584d4251396c665750786938553834766f6d72704c414f682b6a45444839467a34663861786e6d6d4f4d56723857332b4834762f72782b4c6c2b4554626a49436e70736c6d64637a6966666155692b4550566b734f394e597036524c4650532f326530486439352f7377352f3772576949746574756c65485448546830786e73396378576339655055564c465258787247385a384b6142717252786e42374f7a692b6537693272595853647866456e7a6e434167396e414551466a512f71613664726270365672574a6d334c7769662b3762752f444737647535666844616a4b6b4730435450337661452b34484c414f47707063536c524c2b506e474373534b56762b76677439794234763338567a716f72466254577362726275482f6432665064384d394e3364356a3457466c7172613953335730417356733978384658564c734b7775394d2f304e41722b616a39384e6e79476f7a39717a4551482b706d7362746c4c65397a576639766178317a58466576443544342f42696454383735326d522b31695755683372757652396472535549463035614f4d347a76477149506a2f5844397865302b2f7742566d4d38644f7474762f77435935763564723873646f4a55654f794564587771467a7659735566766a4f3957686c532b6e37434e5a457567682f7743562b7a7038567a32477632653075506a6c7a69496d3237702f2f4e3135764b766a32683850787458472b346c664a7a326877536e4f777165792f6558794951375552663563475038415450332b6736547564364e4248372f363039336149724d633236496e6c33573755327234664462682f46614e7552552f714a6b5a6b7a2f434250334237664b70333862326975572f51367a3550694262354a795655356c6a76613057434a653238514969486e2b366b66765058694a6270654d63644e5a38556e4663644c51424e666d4f454f4a7330716d434e52302f356659465a4d4950673643672b623456682b7741317a46625257747668742f462b61763850773238663974717752706e6a676a77796e6b4835766653396b51665453467975754b56376947526771634b7034666c2f5a72365357325468382f317a396a493935354349315a4230436b4a667443734b35326349766b6662324f574d5155713951794a61492f4e79666978357a736b36624336737848324771322b76694931742b4a4e6a586f4b696c4754505264783837675259313774586c71305549627956684375696d4837512f6f70482b387156683966336f34762b7069596d4d7742492b5058586c77624d364f414c305874344c614f4d62326d626e306c7356394b6745706239574f5833722b516761426d6f67397675574d694a366d5032747665514a34754f62736f713650587772374a396431686f6d7a704b42415a52697a34654d4236677035326e2f4c3242783353414a646d4a455a454a65735676736d6e6b625039627273364a49757162612b764f6c2b5570355a593432646e4536593169484259342b657735674571793843435a37675a79686b346d724e2f585566794764316b76567474733447654848664a6a67375165685369446e2b38484d4d487453344736737a73784335393071356d6b5377732f55696f384874397454796c6f6154546535666339544f3175534d5263622b772f66412b4d774272334d5a435658616957575770566b354d64596e744e584a6444332f667964466d674c466932784641476b7837374635527a55452b6b6743674d534a6e587449486f514c6754394a4f63696459567a4632454d6157366d394a6d51784d6f79772f326d6f314b41576534506d727041444d467472383336773666503431743658477474465538614d2b57644e6d6736385a3856584c683479665574486976695637545a372f414e44313375434830303563367554307a6a584e6c58717046364f37484442615761303937525a54517a6f2b32727444614f63345a384a79612b662b35436c675775556258386f7a632b36344a56517645566756455471696c4b50506d64476c30783043786957644d2f6c4e50316a466b3465382f7744612b59484256446f50566c55556b376d573678466b4d5645774d534b5373375042546f41356e746c3743776e6e7a71316c4a444e376c48372b512f6f4a426f747a3571554d46316a302f544b69474f3955764655782f46515a765a7a6d5831382f7845366471686e6575663841626c4a4946475944774d4f733064485036324769364e394b682b696c36573246714774366256637a684f6c664a556d3465436f35366a6239504e6e6341394e4e436567594656666158395a31334c314c4752746374726b386b30476363716f4157524539676a4b6e4e49754f64774f702f77414362396a34516545676c743052712f37535070474555663074492b736f595a7358584e337075307673644c39497a78416a51426c3853556d6b7742744465424a59396e734f624858622f67785076556e562f7742664d796762584d6d566c7879715943506d347a76744a54754c43555030435462376a6f5942354f37342f61505479725a336e556c69754e7a4b2f6930565a36464f78714155417234735a32584a716478704548765a4d523937372f675555526e76366769656e67594556447262676b46554c414c72332f587a2b676e705235314375645973797166595a436c4a634476434d4234436b66384174724e6257367a67615a2b622b5936666c393437314933555a586a76624238637843564936534a4e325a6f67354c334c6f4a3064685a73745273703451436e3674637a7251557470576159784d563643485a56562b67346d784250682f5a6f6e736c5a626e343551554231517579745146585a7232576154594b71336b6f7253636f54345a6a595354482b703550503742336a614a366861695772376d482f4a7661673662737252544635497a4c546c396650594549546c396432534e453355475365533652424734436b644f716f64557752786d6444354f4f78652f4b353859527a316958386a343553775268316c4d625256705535656b5836575376724536616844424d71584f5943664e745864336d6e4e4571526c4f564c79536b47634f68316a326e6b79312f5a2f6a66685838566373383441336e4b43707034436669516d556b5732387534433766496f716e6454646f5a2b65695053625a5a6563317a4d577844327a4c302f66327653763657654641354a38635875534d6c566d6544347a346e39746c764148774b7170435635766b59544c7a462f577379716376487431384268705a4b562b67614d31662b504b6953344956734833434357542f436b306d56513430513441707554665a652b48495a56325a396848564b6c6d5259447071697479304d6e554d6e4346484766444f775978425a70375451762b674363304a73313575692b3163364670514f536d63425a5437704861732f584e3437695570354c5a55505774494272684d75716143484735467574664f763841514c4274554f515679776979714a2b36415477735969307265506a6f6263635a3863506258474d6132794d4a2f74423374483933754e4c6d746c76415051316f322b525a6f67666a776a2f33514369394f6c396f71354d33513466496d75577a6a4d6462717145724a765a6b45707a65494a5336524e543450722b67544e644f584264583355666f4c43754f6a4e6a6f3054417a6a524f374d72356c71626c3958706142736a366c78657a76312f6d352f774135314a664d6d6f4a6152364b346273327236775a366f5a4642536b7161383474616c474c565433567a593075516e58646f4d36365635746e34726d7174687a734b51506d426d69756e2f51797146744d4753744d656937586f714c45584651305a30683471524c71426b384831577634553948374d4d30302f4659726a47674833343836716c38636241706d65476b7836354258444973546a2b4c5431487953564d546438566b2b6c336e464854396767536c4d7247734e7a6762654f2f625448586657557567542b3934584a364e6d30716241763071506b7431472f4f53644274454f54302b424f494f414264496e6a706e6d4e723971516e723632666d496c6233764562564130352b586a516936486d7279453676736c67416a4c4e6b354e6f364d3748566730446750715439354576345850352f63512b50773365527279655265655a7a576138565450493844417a71424b6250316d5a78496e314c4956594b565562304d5973347877766e6b576c7a6e716e6e5930327574756a47327364524d796b5257676c4c566e39675852325a38706330464850574e476f43704a59714b487a696e327a6a37316359624a686a436236627757427a5633323851533262506b314763726b6b56653043536570787566776d447074304c7539504f364e436268546e3570455a6462435a2f572b705361513939663956446d76633070714a6f4b575438476a4669536d636f316249523275674a5768514355734b4f4d6a6e59526b7050436e4a564b55702f524863372b675a473938304e39494b755174756a78316c436f75734365794961426f304f36636a616c756e5a34376d786f364b41615a663841613737356e55394b674757356a7833614453657462642b316c4c4b4f5a304142526d4a5679664e6e466f664446565134784b352f48392b7355764b52426655754658485770326f41484e35517067585373315a744a30546c4c7264636d4d386f6e6f2f6e63336e5872736b5a556e6b4c4847397a7750323976414b4a7a5978446d37417133794367544b362b5730365a6b417469594c346f32386c7a6b575257466b4d5374594a5330704639585359544c6343656f417848696e466a737434423354314176735879504d7a615754523254617568566d3658534368624b646e6b6d59346a6f75596d58427447637756386e733967715651336f30445542644458784e7557767559714370714e53383073705a4e6f377364482f59664248585179764f5a6c34495a737043747a4755424e304a6764385a522f4654616132727842524b70737832626e42714137547865785161766170686d527a4f2f5a517a673348477036364d74696670393442644963386a364a2f593751487a56444f7a76536a555552703035533067414a4c4630506c4c744d31775630786f6e476937505a52724d513446732b4c3956423957616441546c39774138336b447a6a366554566d386f673671706b4e6c5665464b726c503033736b6c69645a77696a5a483946516b487663514f56386b4e44514f683174754f3177674b583667485454506f39656e557a5950736b2f55544c7142497a4e6456575330304c796e48544f3750574841564d38706638484949314b634a5437444c6333387a4e6f6c7670442f75614464504e75386653436f54744978314a49733939302b6576376a763572504a37507373377a68546670616b68303166316a57753735514256757a4868536c64726b4d665632306b566443664a506a46334a4c715146566d6a38446f2f3351762f4146386f5532597935784371442b49717636744e596e6a554d6174464d7a70317a3978644467777179704d2b4b66724b6e76527934786d4c766a347570476766346c774c50356a42464a70485063347770633937767a41327253536f776b31414b4f5265424a56322f5050486a38676457576b75766a5a3935466e475852703269594844666348452f774366326146384c7136744179304e7547796e6b34626b4f724c43494f6633615858794f3346732b38327a743563735a3748466a6b35704f6162682b4f7937345a76652b542b71374b2b41625265522b50566a747047627558794f766930786839566a45306678705a395274742b69313979376c346248394c6e7a4146454831706a4d2f774247546e38767547657a356e446e5561494b77315a6259744171725231715855617154733865315069716a6a6d5343316b32724d6a6e4d314c455a576e545359574b4774457a5a5877474e33714b75664f437933557a383175396c707a55647a303175304e44534e6735394458313030547a33574a7a366b756351794173335447326775464b6c774b31322f4f524463447a48696e78384261383965585a46507678523152736146325670544d5870546b6e506d344b31614539676f6b5933684b5439663841317048684a644d784578695242504a505569646d706f792f55667636684c666233755559786e565a624b534c763142576d4c732f57616b4a464f5a544f624e473449536e454b37486e492f5a332f6b6e6b5531326a753649397841304e47375043764f385274707359776e665473474e45366a4c584d735079414f58677531786f4368524166464f3674694936526757664e68364d782f487039385a305a376443497762524a6d61564f61767365683349666e4646646c30584c642f4635725a6a454775755465482f7741592f7744686754484f782b364e586b48325571346a5457784443713641573338717054526d466f65504a735969645764514e68314f46695a4f634e446c66356d3667416b494f6c4847436c55656d345666396255556a4d6f3864346c7353705a43572f716e75363435335a4f6753754143556965627750735345615261424a756850774b71384c4a76696d6557676e673930523865324b6d362f77424f626e654175796b6b7235434f67676d55632b50356b6838545972675277382f342f7036674762373537543154454e6668576f7a706c4d6c62394f45766c6c7553616d57762b614f6955467a314b44326b5056685963594d34616a51564f4e5a387738557034727551744856744e45382b674545584f3230615752716154596c79616b7a6c68704a6e635877764a4b436d497155684d6c616549622f5533375568314d6f624a2f683071713635702f7549527351474771346b5770473768645678436c6b7750617957656e74447a4c33754365666e434949312b31496b64475a6e5579355a39356d38363961467556336d6866314f7179566d39666e71756c7541733179736b3265384f454847686638415a3650546b4d724b6a4f727446727155734647666d613963374a744d6253526d546c70636f62493269657251346e53725451695068557056485567485438486f542f43766a7035416a4b35386c3534364b4a4a696c574456544e7933574a6750566b344a664f6a5a32783678695a2f6d424d716d4b4a4b61564a4253666763514179366a5832484c2b35625254453758355454536f7033697036327733544c6e305a584d6a7163452f7742376e625771436433736331704a6231703841334c6f7874584c6e3276444874416144776e544b62566f394f566b4e6c50654b4f4658506f6974772f4f4a39346766343170704230365439674e4f54345842354e497a483675797874364b465a6b64654d7572687774576468437369582b7338533755736c67596f6d732b5761627038616f455561444975644a4f7470366d683075672f774333626450464452723377734b7970415474474573396937485447736a6f366f476e31597a70634267577546616573676f634f61344e2b674f516b4b4b5a48784b6e316564736c76375039694f686376334a762b57683744765759746e466f4f41456f7a64424b664b7553564b424d4b4c4b5a715a577a625343524c624f705648634d4a317a4647746943486a506d524f6d746968562f71597350697378466d694e39553572707578356d737a34365663744b642f6b43387a6b68727171537a595a517638417936347a3654487a47583244637562354163726b533350306f6f59317a2f707170366b38657a74484974466b63364a6d5a4a31632f69306a446d78304b367058654567776449377258474b58667847422b505453314e70674f6e6e4834727378596a6e5553565542332b4f6c58534e487a5430564f435631537a7258386f6d576c784d6a695a2b75694464554f75773664437866736f7a44654e4e344a4173324b686a717632776a6f73554d3438716a68704a72484b6f516438686b373638784d53423654534c572b507063305a53664641726b53334b6c69666e44634d584f797453796271584d6e6437754d6f4f785a68774841445846315041634f56584c2f4e684b4933386a63384f4a716a5a384a4930516e4730593541715559456965564b32664637415a387935306f45334f642f514e674764306433456c6e312f43565952684b374f536a7638414878797879735842575476736b632f6b416d5a3963507a4b502f7473343844614153412b66614a546f61465a2b655859794d666d465659644a554d3149713171626a537371492f6477414c69767348372f736539525561445148736f4b3647613652464f67354e36325361507771536a703646464630394e427248326b7851756f7041525033675533746363787638415a7750696772584c56426f327066384166434e364737457474735169432b696247564d685a38656c517569726a3173427933426d386e61667a634d32675663375631512f535663667a6857724d3256564742305071544a616e6c5a6b524e6366305365565065496d56327a327034446c4f4949345235514d45536c4c43345a74482b4c4f766f364d2b74713058325a757054437079474c4f754e687a6a6e2f483757732b54336935622f6d5749476f6947515a6a6c743546616d4f392f77444330304971537975673433385136576a4f53356c6c724f6658306a736a636b4350762f73634175536f512b42514979524b2b7255346851536137495a43706b466238386f302f77416679754f6f41594945675075547a55307539354141642b462f484e3968672f6367735770716f796170695461673835306b577478756b323175697669577146504a5574317079347a72554f41614841512f4638687657413133452f66507130334d427866582b7254424631615474664b69557871726e4c375643312b317665667574764733756d577466787a6941506a6c526e61554b6f795638795547644b4f2b775555735a635850704c6a76516a33454d7442646159304a6341664766506e4a7676494166316c556778745a6d6a522f33587a514f59687147486c536b6171792b564a7249556c4f6c66567a443756424d6858782f456c5143446c7059796d546c54416b4e4869543541624639757a6f434e57585537516b626f6577526c57747739416834496b59505a535a2b314a66304374566d623853706a4675765a6f3635634c4a46695566364442593968317044644f7851726472653467563057732b2b716568566743483941685478317a6873687366414254433348427a335654764b6d2b6761542f377951374f78517a6b54574c374f37344147524a415353442b67566630376c705a5535516344686941744d4a6e556a324f4567525a443833526334633131687a7037787458584f4d364363496e376757716856714b57354d526a4b787566725a526d6f4a4463786932566855624b575673583755366c507863633161522b7a554243366e39582f304746495832702f37333276742f4d6459534f4e58656a6e67324d4f3874365847396a7543566161566c336f2f4d6f4f676c5141414f364178307156746b375448564c514779734657555130644e4f6b3665465342374d356871367457685051424f5778503178544b587648334c424147717239445559304c78527a4e68556e6c484c6e46794d334832657834716b53783945726a685a6e71483744445851313344574c6d744576364245627967617155774370656e6f576641785635386a64564e314a587a5a4c6179372f725445794d46745a37446148794e6e573951425549507331365971394b4b474434352f71575548535431756c6d612b656f326b30382b6433427a797158384b652b786845326f48436644623767425779464472644772322f4339705936353534524a4b34414a4b7855414b6d6c414b724731547259587466384170594a3730586b4b754457444f484f6c645975694f317851725178556b5a7643374e727446444a56717356484e3370526b544a5749663841474165337945526e414461416743726b756d735165624c4a5452507076664a5470474768516c464366664a503969596b446f614856365841643753704d78733533374a436f506b4274326a506f714d422b4f4e514c71616178684d63376f396a67306167397368645639696557696f6d642b5551392b786f7064376a614c33426b542f3033534e79787a3675574f2f6a39445871465768305a5773686870545852385877754c37526334365558416b7a45557159744c464f44344d636a6577735573466755305837796770725452304e61587476367a374643504a79345768396b69466f6d66735651315073364964427a707a6355617866796e547a3058314b6561334e32382b312b344d63722b617738746835562f31646a53425a636f554b2f724f54384c6a702f6177796b693764436a3733365570375a514f764f543072583643376f3248426633327358525536467a5030706a522b41776144514e4965387762563564714d6550332f414d6c783430396d6b364d36626d7a7a4d457667694356532f646b722b45726669572f2f414f45755a3354346b686b55514650355353337136737972397a2f48486655616b564c7630497865743654793956676f576b5270436a67714d784a717661496648303238414250376d4d58776d694b6f354376505332576b4f6536496e634a4a7a697465582f6b735a334a36585863446959635434584b6d46422f6f487161793754486e30706757716c6f6d4538307a717553782f5947756a724a666376334d484e46777146674e37375a6b696f2b754e5964426d2f74544f735878545a53494e4565324f6e34664d3242746b7464697a30624c702b6658366c31334b71523044536f556e4f52794132623451626a326b35776a725253764e2f632b466e7a46596e696e74624d4c4a2b356c4f637357465631643257785a6e3167632b477963674679556734482f414c6b383672504f3550644931736a7a7230463369614b6c38344c4e68314764597a724c456c793571314e4266754c544d7067466f417a2b67522b6d79536f47535544586a79395943774a744e48633141525661424838762b58574f66506f444c372f65706863536e35576f4e796e454655655879504450716e6e6579336b397469427556506e715533764e456366677362424f4a434b73684c46546d4b2f306a746a7031394e70794c4645346e50674b4f2b70776b3331586e4d375144525a564c426f324e78644f625930455a63616c614c356e632b346c75785251683656726c4a6f736f4a48584e4f414864416a57486f4a7856783170624d3752616f7535614b736a47624d52616b6d66534f30527752792b336a35646a367a6d38374842777a464b5a663036543471326a4d594142766974506c5632506f2b5274796b696b614c4d334b51757335444b505a4c4a564e46445864484d6e357051647752396b354e49777a6b714d564c634554614b78694f4973624c7a49504450475651344972793836476471366f6c79703037574c6a316c386256796b574533517a317a61456f4b70377063346f3732742b574d46736146654637655542766e2f506e506e6e2b4f3959546b73637756775857576f774f55564f636e59324d756a733873705071783256714148664a38306b646e41372f414c7070747a59323863434e61754a3966664d61483563397564494b3437576d464768562b3175774a43376c376854386472645a4c4b4c78576f46664e6d73413431366e794f4332376c3343475639335766576b63787331335643744251302b5379546d37794c527756664c4c46466e4c5a4b6e6e3272726574617766615875596c63374c7154525947635878324e524c624831656c32796e4a7542354e7a37716d5a5849485a333870486839644d47624c3955352b2b783036416a66535952424b677076654562743871304e5057376e3457466c4c7a507177355675764d366a2b5071687a4e4434684a7638354a3147706e396e2b306c6e47414946593446704a502f414e4d524d5250574d69304535754b435a466d4e6570735967716c3064614630666a395449394274457233537868556d584466774b4c464a467a53396c4b3775467a4f2f2b70434e3750714271614e5a6947547941674837656a546d4a6f4c4c314664385a31694f506c594644586f584c6e38655a3747664d6e365a412b4d534f6a324a7072737234416a6b5a4e544c4673306c3279394265446b31352b547950506a5a336c4f61534f4a7359784c506f4d712f6b4a6e2b3267464a487876394e63733735777158374d686a534733794c4a662f414f6f4f3137346b63434752394537544a4e4b3367366a3559535a58444e6d36444f6334527932744f595071642b3444544679655832456970316d4a6e6e5a42476d4b665a386254595639626c77493152324a6e447430676f7a596375693253784c564f486e474a6b6a2b6f67446d4e58767349744e357a486d587a366b30734f7a3374476f7a79744252734b574b576856467466637254316846743155397830644e66666e635458554a70437635794a4e5a724539524e6354794a2b7a46506e4556324d67316c7a50746a5a4b454f664b7073626446326c6251796b626e4e634e464b7a425a544356363068373656706556625537346757463431686f69376a364f684f75506977686b734f62514c50312b4f51796566557461576c637a2b5357757169782f2b3142704d58665a754d697337774b3274752b5543307335354855755349736f6e4f30702b30767a347365674b74676d594a324f65414c446e38624c6f6678354c6f396f6b583170453364455353583956444f62523036654639564d7247546f636f4b36744766324134355346705073732b626c5836763841682b5234394c70657a716630357870343444636647597a6a4f665144556b766369416633743831475a386c55386459553648446c636f34566935695a5a774a6b376665616b4a476c347057433165636a5a524a306374336b4866686d486e467956334c42636566456b423463574f41766e577479795137354838364f677858442f774258574f436c79664c4a504f6b4b71354f4a6e4a3865756a70414762417a52736f5866486d374335334a534f686e346f4c4469304e39314a645a6f4e4e71546262342f722b6f6b374c4b633966742b327557666c6364646b6562512b36466e4e52685571534e4672436d375135327038706a3736506c2b4767675651306d702f7176587a446655563137314a3531307658524a2b756861584b416c3653636476755657786c417256317933542f74637a682f39387873564849524e4348543831756467613353717168756b5a71694a2f5a6452435455437a7361453672756e73665a5856517853754f5a663748433768676a2f5741537a755174655576503037514b4a6e30354e50536e36302b735a64573946706358467842727a5a2f34306d463836514b636a475971657a432b546b35784f593441536356416a54386c2b6c4d367a6d57616b52536f717067356f4f70794d654b616a767730304c474f58326675634348324158784b2f5a74396b43573469445478717038726c714c70316d65532b754b794e656c62316a55754668616c465a574a314c71683148796c4c77327a4f536d59506a4e70416932504d364b4a5a78655430384e64506167592b5a316866595a664c6f6145673934492f6558435264375966754e4d796e4f393332666e434d5937724f64426c556750682f6a346e30526368557953317052304470566b336d58317a474e304f4f667a34536b5068325747306e6435527851483837783544474a57465079535232546357722f3653737a562f656373753131785a374f4971544b75464378554a422f3255334766307761615a6d5a6d63794d6a59324a3733324b6b517271754736724e44566e6c4e627668617765526b4b7579334c2b77355a7351345a306c376665696e2f332f414e51484974377363476c4c717443577166696864484f4b4e54694f4a54506f6e526f4a73344b65704663346d6755562f4d4141397648664d35797768657155525157586244474e676a626b7a3073415442556564547370312b365a4f6a59504d7536534e73626c736d59466244416a5733346955485a372b58494355702f68463156684d7a5672344763365656314441666d363030647a4b47784d577476666d5a444e2f7742615a344e6d424f624d332f644d6b542f707837506d44655379585330363043364e7338325433632b5333365052342f54566333744149786249794a7767697a7455765a2b63645666596279365063316649456a79726b545733756e7937533131743453324b644d644d6731723556394850624334766859503868552f71374a446e6d6e41425a516b566b41544554505153794a346d7a4d53784c4e5776363661464a3162387357354174716a746262334e6871393572664b366668714e69543938546c476f6843796734454e383053684f4131574d74564e6e4e44715673686b34475871496e7a584a364f72467a54556e374262464642693050673779787863393836662b7a5346597670304f52575a517739444d4b5a75616972325864435865643831487979503170576530577073682b442f4553494d6c536837456f47304870385737346655427a6d7234764b6a687375775a6c686d74413153336a4c4c7056554d304a3432425a55356965754c4a6f317077425079703731314d33746d536b436a616e63463156543641797a74716d6459756164476b3472794e75503758554e7073793142484d306d533354546f6f5a77684e3332624675563335446f666d4a706873534d3355766f484d324c4537633173794a456f2f516f36784b4a3571363172424a6468686f6a6e535a4a6335494a6f6f6e34592b2f384171312b3149636d7271485668544165664c34374f4c594f6848565544356d4a4372354f7268754964545747574766374842556b584d44737a2b544e7055663841565257474e6c367456696b6b6a4e57343641422b6c6f59764d37525548617035347779703236426f4c334d4c534467796342744e416346496c4d37704d3074667569524c50647a5548504e3078357151756a496862686c51724c345a3539446561485756457956784557584c4b66336a4a487a444a49586662787a7378596b55584f4d306448536a53544e71756d5253324e377332412b345952794d79576d74584a2f764e6e537a674a39767967367269716638676b447235436d76493875566d3161565866624c64544f49534e43626c55674b7857626d566f3053616b4c654c4c37316c6956736d2f36684b70496955432f734147744f6b2f4d567a64324a567a4b33655051362f6271346f62394b7377644343546b6e5252386a4e50506c4765454938526154582b2b4a2b494b446d4e736f714f57344a654f5533736331453636676a6f444d514d62675a376d6a5945394a73524e4c56374958664a734a4252417a74506557434a6365457a37777262623851737241446943536d5646304c48764b383378483438644e634f70643734754b7131666a62702b3873386a4a7a71476d774445777050363148417a7632704571655562447654326b553072624555503254756a6d746d6834794c74466a6a6477763976773654506d5a51775741667341347a39723256454e31614a58762b6d324e454b36733654374f56797647736f31462b78505a676c30596e63704c4e6d3055733454535a37526c417749615164385839644156386c30305559776d6b472b31435a725a564b35707a5a6447506c32354f655251676833654a6a51357936666255536a345a7a6d627070733545773430375542484a75664f746d5853746357686a56454659543066453479314b48334771787554764a4b4f63355977657050444f7876593368514c6d6a39426c524b634e5046746b6843794a513154706e48334f7963787771304b35516e58333663383942533868424b2f726b4d352f5941777236364a61792f71312b31494a374f69785372307a5631726141333644577a4e5052476c6774747253377075487073597653587a324c373775396b6a56516b533446496631554463796d6d68575a70324e5a2f4955564b594575666531476e4846734c56723561494e5a705141496b516b316a5a51466155324d397162484163367034396e7a45326e584d4e457a4f4d6b3146724e624745764555444976346b6f374c47617656554c4965632b6d6e2f514e5a383550593036557441442b47422b39736d6c4d54416c30667555527977566a6530553937705a517a33394f4f6e6476475a507a53437731496c352f6c2f46634e7a6867547a3241364b697065516f7447654f72734c66744931587a4b7057413058564d466e46646e59314c654d6957594b44674579673275663746417744427438424777427071644b6c6a4a6c6976506b61796c4f574d34734b6d616c5366715131385a64484f61793435502f5a6d4d7a544f3561576838524f705331445a524b6862447972704f6443386755324e6959374c2b687352754d6d7a314c704642477341424e356a796b6b544548416e45367145342b79465a386a4736787666624a4d3570464c7870574f57755238382f7a517459755556434576576b522b373349576e736f676152525a503162465354775153496532486b2b784544705a753043414c70533278737632474f4b4f6b57384c696541487336584a754d4267466d2f61757076374232546e79336f612b643954366d6470374d50787a74464f67537246745838676e336f676c71592f6554442b455061444a433778427a6673555830717a7066317979714a507751795466545659365a4475726a6c664f4f58387074345041375352674a6833324e426a7a6b3469644a4c4f50434a54424d31692b66764a4a55437235355664392f484d58566e7a6d4a584e427658702b656f54492f774455443868544b6e395a537032396d6f35504f764f592f4d6d6470636a716f6b2b414638396b79486a5a5a4f534667596437382f506d2f77414241414876366d4e66334e526563755053656e37687856744752786a412f4c4a315832766554432b754c6d4637672b756148653454766f3977504251614b3531547754382f6a2b513072534139355a6b73306f4a4e4157317933667961796f5978365630554e4258586d796938772b7a31725134414c4543495a666b74526d51554b54573071546368516a2f494b6e6a6b464c4a4975392b646d736d77556976767778674164414353485a77414e5451784772787a4e476250357871456d356338446b445250566e6c546e56325658664c464f7568304a55645142456b413638415348753630414f6f6636313063636a69754f3466572b366979477758616a6855335a576e51585432794f5663656535706f55346b6a5457527546597a48594564624a56376a7678766b7a4b70737736315130577530334635457a3237624f514c625a52535572537330753972426e7a657a534a4b67436c4e54707754676a6b472b615a7a676f7a42466d78624e6b7a54574f3143545244644771796c63332b6e635545384e427a6838516c7a324c4b595144712b673443696c5532623850517376703779436d53614e505747334f486c694854614d432b2f784d2f4a34612b38616a6e506a4d456a314577385071516c56796c737a334d504a6e485454794230364f5373444556537477766a4c4f2f6b4935714b692b6d6d63524a50532b4655784b4d554b416c5541497971483135354364692b646969586f527361326964584638724a6a34615973765536516975365735684d5173464d346252524d6b45794851455a6c53504a3874464c36426a314e5732635a5962744c724a367561673645333853685378526374454d61776c2b4e66616a6a44324d5559664c47595039724f5631325671396f63564f704b4a6158312b70726c6a444f7a6c79464543666b712f68312f526c7a7a635a486f312f76332f444f4b4173436c4848683467726d6c43466f66487331646352783866466c307a742f616c614365346c722b4e2f616e4c50375264424c7a636c2f77426e324a393863344d2f6f42476d736c5657383749553879667249646f6838736e564e73354c6543546a2b7849466a6d725a51593972376e4350643559633738545a5730673836686c63756b784c656b7539375a59776e6d7a4b354d384c75456c44345947554a36576b72346b784f5a78716b68502f414b6b444a375065414350492b706c6e796f4552565472557a56667737717071533431385a4848494d7054744e6e7351364e557745695a496e4d316a68577234585867457a5a495458517a354a6c335777394c3661633370545774506c4275615532477559745a7a453571533976657047704b656449544b4e3342416474665a646d363364434b37516e75316f4d2f572b5751344a4f774e7135516842647a784f6876747a6f5a586b664766442b774e30492f4354766c74547451455778306133475a4e4d77456f456d343735615430616c7969744363586e386a56434d36394139445073616c69574c464d314c516d43574c6f2f7742527837586d496635657a4f76516c544e667338584b6e42414c50685a7a3536637147314d755871442b312f48795450704a50436d2b75706870635875616f4a763676703934686e4d5763343830483936597a315a4f6358454e6e2b74782b6431326179626e5a6665714e614c713352337237516c5051716f4c36357a575354486f44315637382b5046766d70304871374a464f6357724e58396c6b33645666526b73596e42664d736e2f7741686e6b796b46744a6878794d397a756d6378352f6b2b2f33483350496e413771416872626c79567374556146554953364f375038415a7341634c68566b72596d4a4d663178502f7249446741303570354b5761434b62745630766b613078563539456b7551374e577a506666426e3537342b5a38774357534b666d6a4757776c714a7845446e42796871754f63412f31576e5a674d33343843664772774148386c386c63704f705067356b414138386e51586d4d6e6a354562335a2f31562f65566f4c617330757532415772347530413572342f702b6f62344d7966664f4757576e545565677a456a6e565332724e74727a4d394c374e78434f70594f6851376b4b2f384155747277397a716141536448416f6d6e75357341663576652f4977646972376c65757970464e334a685858733574477337514c3743586c6e5a62786c796e4e2b72385475634d44504870636b44503746763953493334744b7a416852627046646c71313736574e2b6a63704437427a725a6e50764f4475624e576e7663464f6150435339414537366c49634a56494a434a6a4d594158616b35526f376d725143394454645745754c7162756c4e376674795963394f4b3266487573374f7a462f786e4d75723670796d6e6f55762f38417444494a43666d4863796678695a316c6558622f41424434614a3965636f5169705a6e384970387735382f7936634b744a6c524a34326672526162624830684f59716d374d4558794d73354f613658795757616468366a72453331345a30553746644f504e4a774e545132694c61324a6e66656269554e36352f79756c544e597156332f414741696b586a6d7a71756446666e6246744a324f307071374148466c7a7365572b50506e50714a644a6e626b3054364641523837553533773552794258464e384b347748572b50525a5a37664e324e57783548466c3561655861374f7a325378544b6f6f6169504f737930424c43624d6e69666f76644e4e6e524a4d32336f372f7363466637696b61434a435053786249506e7a364d654143626e5357317a366f314f7133693242644777625971734666762b7a7833386e533173774a5a497066384151614d2b73486a6d585636572b6544766850744b6b303664656a4c524d71634e4b6c30374b594c453669353644717a51304c714739574155776c7a62722b5544416751336f72504e584866362f5551583072796d35486b464d326e426d4b705436525a4e6d634b687a62666767545847577256506d55714f4c4a6a6f3679506b2f77425a6636427754546b4563696e70564e7034634f2b77746a7733786a424478694f734d2f47356a6553654b413358566859305747577870446e724c55336f6c6679446f526c4c2f7741662b3263354a467241322f3841767541682b7458416e65566a5564325044624d654f4b4c4f776644397254302f4a72775a706858797a54304b6970524f73615938333747586d6b774f703067454a6e4c7663412f5a43622b71326e45576d5a37587239424769347a596236585a334f5a302b587037336c4c575a46506b4c57426f7642695139756463756a6c5632665272756a5556426977786a4f6b48574e61326c787a307a49486563307934766776692b5a3433516c576e357a366e5a636c693159476b6d516956355a6f546130625a49537543374e4d68306e304e716f6449532f306168576d4e5a66306a4d7a786e73314630535a616f395831673548342b2f4d475771516f786b73386956784e74456b4e4d657353575471706b785a6662682f755a646f416e4f6a6f63424d4761723756652b6e792f51615165735730574b35693836645339566573536b577962577252466465796f72495a5938747538515377306a56693669656d7234765a54474241714e72675472574d7a35514e2b2f476164353370784c3558705a785a5652354f656a75557578554a3372386a7071785a4e57675a69466b454c49347370383966474d6353672b476a51722b454953786e453378496a56486e6d39347a722f774176465a7a485945384d3478376c4f6654484d354771553276416144386957476c527a53686c714f2b6a356b4d62594e674e2b34457838764d525043656f766a3075386f307655767733796972667a724676796e36736451342b6b586447326c57684c70786147686d303256754f726d776d63364839702f30664d3461356a397269707974473265416b71764957307678745344784f676f7575716b6458354539584b7449737a4e5373734d48766c6e6e6f30566141457836687030506639596e6635466e4a6d35554d6f2f552f796a472b344d79636a58526b6b326d7a6e6c566a362f4a3859565730536b74586b6657455575704e396a4c627a37436635436c326c7a6c4b66386753444736596a47525a2f69486b464871504c71655266784549444e526e74644f576372656d6a4566342f77436e4e6b786f583262504a74563273744c6575625335316e4b584f364e61584c54474a7834434931616c7641476d6658313044572b6e7132527371477275792f626a7a4d794e6648526a55444c695a682f653761684876596d67325330314a3933514d46367a582b4362755a545a6a367450694e75352f46356b4165507879366b47725870336f6d6f6962745273554e7939417065332f774459536463344e5465615a70503930375a7445384d774c453868386d5271354764524a3973704c317a4c6979395857386967524b63326e70646f354e76364b356a2b4543714a43756466396858546e523752536c567445423733796a54547a596956616e6e6173664576306331744d6c396862326a342b72503766755664644a796f557877315473415072513030646d4d354f42317857684b4d58386876483163625074654735336b546a7a71425473797979672f5730573750317944735857444c56514632704f57677a2f4d79644742476842424f7736625a2f4850723668486438654b796d482b445a5572566c7833535a382f32705157753861746133585177776c5979716f6f323536484c71564b707138304675735354656362664d52316e416972765554646d717a744c4c72504f4f444b7a4e544e6c6d6769386a565a50384832383358706c59494f737a316a6d75513051475373356b67357863537550373458484e36324b3839774c635633686e6a43764c4e7a4c6d44513868794e392f6936597a565a385a535a66614b7156364633627663453756632b756249457049704771647a2b715258453533636f716a795456386c6b787371744f316634377276344e62485277557931556739577462566e364e632b733630744238707a397659667634646a6853327350726e774c69547a2b74506d666a4f6a486273737a504c637853454b373435744e5859656c48736c50694448532b525a643066687379644a6150614d587a41347a73354537696d3056327850474f57515a387a3959386231467a5a5654654c6133694c5259753366386e38644375616a513146355257346d465232644e622f354a66324f494a4c6870576a34434c6f694e484a613469737830734b7a7235665a70342b766c5258654e785a505a5a75646e6f33646d7348614a7a736b5a53726a714a326b5a53794a62563041494a395765466a536d6d63722b726433454e6f50556e7944774879526664544a4b2f4b3031304d6f5057486c4f5136797364434c74464e2b6e714d2f697649676f68544b7978707564534b353546784a4d4272616d496d4d534a626c656536586d75396b5761666a4e2f6873376d4f304d2f77416379376a4f61306735486e614156554e734158546d503857775547556649302f56632f34654a54373478694a2b49526279464f6b6e7953752f4d305a4171666e3576324853314e6a787157766730453557472f47654d7976764b6e5a72653944686174764e75623349346e3435575741713331543871384f314559357866794f596d6c506a37614e6a506459354f68467830654c636475674a7275314837576857687655386d5036324a536c53512b466378784d524d356d4d69785a39686e6b646e504a493864766a4d39585970394b4f505670736f68505570757231766b594b7750443248414537336943715457334d54574b666570576a4d69496a4543412b5157364f417067593758557a575571303942644f5367555a6d52616139635532686e536e332b48487941682f6566514d4471707668414f306d6f782f71656f53776658444f52487134386e6a384d6d6c474a7742305939437970314d5244646b3078346952525848564f525a50764b68576572327044356b313848324d6a45544f636359467a356c656a5234316e4673334f74704a37764a6262353436327864797556334f7469644e5a4749526d4d4d7343672f374a4e64384b4b502b7377785a2f5552747a4f4f6f70767948796c3243367251385976313973776d4c56626e75326a546b55566678384f766d35626142696d61354c4b4e4b316f6b504f2f5a483669364461484f386d6e75346853583178324e662b4e6e7a2b5335746c6d356447394d4f305631636868704a6a586e7a48636e6971457054527348475476663374646e553850376a534d4a47786956573177756c703869304e433530533674536b594a4a733637693169696169797942344b626c395950794b66326e724f42704a59314b334257794d4b7330395372784f6d526d5247694e55325a7330477a3738566b6271464b334d76477942307577722b584c5773566e3178726335706752304250396c66326f3678786a71486546366c6a7478344f6c5a6c647a67752b52514b716f6c3134356333547852314b6330483258645849344979494f4937536d647a633057312f543479464c30784578695276723666654d4b71384d783764304b4c4b37313149586f6e52725956507a4d634d66574d557033484a2f544273596c5857744258386f3273796a36336f38786e475a78304566386e384735692b5036352b4f63303865323666725a5a35726e55444a565266505545615732714e4e556d696d654e553631542f414341704c6a344d307965705369637a6d7767337076356a727632394343665771794c59747a542b334e5855795749485361624d364379567a645932566537505856314331724a413351476b462b397279354e6f6e7250654f6b6c67386d7878735364385442464b714b4a2b657875637347756e746232726739474e59364646512b35544144675163574166454a4d35555558355a356c702b4865515a6b74586b336c393264713364574367585462387570553339704853644a6a687948462b6e6f46775334424b3448376d5354696e47596178455445634f4132443336624d7278673974646a4a3871444f70304863514d78316e6e354d3072552f62623977353131653163704b2f6651596234786b46774253545172584d576d6f472b6d666c682b61654942737130536f46314f6f6b586b696e6e59375a2f755469736f4c4a314d6a6e346c6c546669662f774330566e50787a65435a71726549724f4d59442b33523044773155527568642f7266584362356f3374486c456e31302f63456d49475650386774717a516656634c686d4165395973446c76796666376a57717638676362783351727a7443635933686f38436c35346e7a3937585038676e4e383150372f774377507a54396d6232626f6c317970787061427157563570757835446359714b322b5038736c374e526f397a3264426c5847516f6e4c695a306f4e633145596649384a65314372325438392f66594c4f6e7a392f316c38584e362f6b4b6137357235714462346b364f572b794e38694866627a784746537449566e6b506d4c35666a756e4f78797a4367656345654a4c336b723964482b744e6c66414e5565592b56614e4d307857654a50746f5570434a697a6551616c706853536b744a516a30366b2f614b7052456d4e66786a397670635358316c2f77424a78697635665872642f4348766d506d586c6667574f4739354e64684a6c4773485631496a68524a50304b324c74702b61365979494a43736f44707155344f7a6d786e2b4143516a574972626845596b57647361444d7943577a50484b6970596b4c31764f41327a6e49484530766d7155424e4e4c687a5754726348366f4a662b50412b476369502b706a4e62567a50394a2f342f376670497244786e7a4859386e72386f376a7578702f3841776932665061442f414278656649335156483978505a394377582f4a385662466b7a764f71542f334f4f3434773970416d4e73316e2f38416d2f3268376d62506c2b773930734a34634d30443354614a396d57755767515a5247444135546d383653536e58527a697570597272484548546345793164693161784867472b4e356870306554374869395a2b504b30636a6738706f54695055476571686673644974724750367a34316a64774349666d46446c73374b667a6966566f69593351432f6b2f6e482f696d76344c683666384146385476614b383543624955496c713633693742476566717843575661334d647a6e3734316f786b4878674130447961343763634e763841336638413851652b6f5773764268314e3979736d4665594a397062714a593247614f6b61555450357968334f456c4941587657436541527059414e3935434b6155694c546a4752433837314b48637875374d586647613454756e6b5264507a4f316b4930654c6e6875554d3043334d756f2b526b7865377653364b67496841506a36332b725254453851655265786d4547376d6c4c5554703173794143504e46304b3242523254744d746f72495235396a3938357731644f6a32396166784a452f77436e47626262635172695561752f6b30615930346d654d31614f425770765568537133536c5967565754304f4c334c564b4b6a582f6d49757039674c4141417a52747262414942384e44494958574c6575346d544f37794d35513664564658454d5839632f6175632f6b5972706758374149785637355848374130487a417254355a6f3763614e65774e4446715842316a685578423065776c31664d42504537765a523967572f76676c33326370366f4f47722b737256787867504c67624339366f7479706f2f734b6d4e3551394943342f76556e484a38454a722b345075497633302b66642f7741702f61736a4e5a7a2b7a395a4666626e6d4135586a61714e7a62314638445837693533555743704a555763587963495a464d5577756c4d776566716b57695050647a704e6c63612b7a7478614a6a674a5834316a703874772f3551664d64374952574b30424b356a352f6a4f66396f4a35564d714d43643264667334325a6e744e3653397076353765386e6845576965313365662f4142482f414f655872616f683547756a77363452353550354f3956372b30436f74416c6f517047624b637646754345766d49663463756334776663524837502f41496f3934327465624f376a675167504e39756e794c537947586c564c484e396950336256384a446f73624f533662465132664a564f55726d4a4e70464f734f6748452b3876656164416c4e356e4a6f2b5253654b4e3879386d67665575555459756972583553785a584b736e304766583447664d746a7175635a3332652f34662b4b302f5736544b59345a3243583675586b2b445a6b6c50504f64356d666459544f795a3530722f6b6456644d72613943693562314b54532f4e2b4a66786d615139732f5770456a2b6235336178504c752f353965746f5338673834766a335a637443724e424768724d57773332464579624e6c5162575030534157504b726b71554c2f52726d6d4a4d776b3075384952624f4e3159336451423836387862346547624f6533356b70687a35494d376d743758516c5371475a2f5349446834746364536170785a3144466339396730422b6752517856615248587645756d385a713052565a4a36712b56797958795579707a3730505431633037614f3256702f516d314c774b7178664f394d6c4e6e2f77446839346141506b3534346d6e4559727453476e35456e6e6b2f6b46616f566d6a69452f5a4e6132763759645278464d3770546c7966376e485538576641596c4856634d78617273542b37396541463938757865304d6972304e644644644f73663545394a56687165626148516451444b412b4f6770786f577755424f432b5465397766745376626246767866594649593850794f796a457876566a556d766a615631544666747442704f41706446414166365554474336466a442b486e77713444654a6d503266484d52484e6e6c724d664658726238504450663033592f462b554f37664472596f6d376e665737797453546965766e63746b6a6b6c2f6f6f4f6e6d666c396d4a626e4c6a3972566446524e365941667546585643784d7845563657693338586c327672772b6e68746d784273663150794b744e4f43767962583036545a70686d306454544e7a597461356451567861566151495a786d712f31463877664a33394d6e4b6745742b4774717a504876434866553046734c4f737630564b46314347362b6651746c4c66716f7373346c77783669795856474d4d7730436f424576596e3966455074396b374b2b414636586b76702f77435842446f36766e65336e4d6b7034364e2b724472674d46745a466f6a5442625a50775632646e567142385856694a2f4d44584d39344334347a664e70747a6275312b5954576678687568425a6f4a39626151586f6b6a394b432f4f664e6e39647936342b725237516577656b4245726a61673933776c5170706449524a756e38452b766f4b78386d5252343371797961507139354c3541327875675a53525274537453454a6c2b6163644f6178687a7258704578343958314b6638456b494b446b786c614f4d635977416a2f506e707741336b37766b646b374762446d2f5a566e6c545279506e7a54562f78376b6a32374865796135374f45373267527a67697453544d47534151656f766b6c7a645147544575536b76495a334c756c30456a7853434a317236387849745549694b6146645a3376324772414f4367464a4d5a67625a2b733362467438336b4d78505a63396d6e6d4e71726f576f655a346c4c4b366a4e634b3036554a5a38376c714c354136302b632b35535079554b43585035743655744e6b4f726a5638545255717a53522f4b736f736c414766576a32344a36474a4262464d397647756568482f57436c7450756e42524d7848576343733576554c65727072717538656c6e55696f2b783158687058693458756f6d6462314f4e4a33354a326a6f4f59775579556d7a324e486e41584d6643596a70416b764e696a4e64666c7a59486a5654796e70516e3253732b302b73444933733556466d6b7563536a584b6b362b6646333255796e7754534847663041445138337663327737384b41553859656830574f5473546357614567495578534b4e5a66586f746344474b375279622b51543035766a4d54534745586d4f743271645473504f7a475653523952497432784c37706768376e694e4c4d72505158385757677765544b574a66616148457a457a357a6d414d6c6564616a43585348696d533968544e6c584169766f555755545077625962476458396a3748764a644857303366436f6a42696c47616a4f7638416f5033504930333063717850432f48614b46507163624e436e6d52796d754a72727a2b666a524952416e665944707a46776a43415569496777757a54694d5a7a78443238463056665a37344a3438644e3879412f65504b58644652546f6f58624f71704b5538464a2f77416b4d664f4231796944396370393541433351472f647556664b4938503035674e6b6f466f387a63707068323174455032616778796f7a52495743364f6d666f6a3333754d774a504644775066505872496a4a312b4d426e78636b384a684138346c5668786d7568614a4e626759395763396d64432f356f325461566e51595641667233657a6e326c2b354b577a6d6678592f6d4837764949496f75545950674d64424d696f665248722b55705057526f39706133536f647864493054724f656570787a6f4e5a6b487536596f6a5577516a7231734a436e53427367546a3433496859666237626e7274306b76696e6e44526758702b39316e4f543244446358484d456e78394258484a634e4b654155416e6f61576468664a61506943573175474b703741716d7a3341616448393572505a3270383136536f2b777a324c702b47662b47595146302f67414563635a6b447a74544e514b4238556131576254584a585252766a314a2f5a597533517134396c30705a4a69356b6f4d5538314774626762514570696144426e5a735231543045574653706c576a466d6d576a575235727942646d655477305678384b5633536e736e367955556833374b6151644d484f456b48426231426e5231336a3359777347545352547a792f374e42796c782f4f57763670594e585678592f52597a6f5566574943493038535a55454563315049744a6b786471385079745752314a6a4768444f4e5531457567346f3031387675426a6f786854595832763151676d4132626773535a6d637847652f4169422b52654836504c30562b4877513057426c307a6f7532695136742f59556d70326f70304c4f536f6d6349675375433334714539544d7870754e7857785034342f6d494c71355869765a77717a4d445a666f2f64665844426e362f4a4c6a30474844723856466a52732b742f463033354c455655536a3733564a396774344875436d66326e7241643866794c374f6e70356d6d416c4b71566f646575797a37744549734d6b31387a56556130494a6f2b4d684d7152704f592f3152775745464f594b544d5439374555334f77394131492b7365616e707232706476583678765a3377614446387375356c31455a4d596333442b592b6b6b3570365830424a4e6b4b2b592b734c4d383942635864593462315a2f585a676f456d5573652b6c6d6e33763866384a57415238685935394955676d68584653752f716139592b59445762666975546f7a55304d7a4d734b7352626b61486570525168724e4b4d3836746e4271724a6e364b676c4e524f4966435972347672447555425446625734694f6638416e6d547152773170705054562f466664656734744f544f304e644c42304b4855555435364532752b3139395052564c384b537073416d47662f4b72653738773879764b6331623762715676725476614e655854587a2b4d784a63644e544a35793572445a6d2f42483546384c6f2b4f36344f45547761717765414b6b74727374344356326f4c536f59384176386b6b4f4b61514476666d724b587246657a563070706d65524a6136466633715145524e3549414a426d5a54376d65324f4d542b482b5961376c32666c726d68717a64614b64693373754e37704f71717572766a45476658306d31485039766158503841474274454f30342f5a364a6d714262307a54745150692f4a66454b4e435a6e494c6e70305776306a79763436705a56614349324b4b4f57315969744c455a36534178524d4a642b4531556b646644502b6f785068496370386d784e4c7078337836506248624e4f7a516f754f7a516c4c4b64464570614a3239652b464a4a54513335466637695362573147667a4c53784d5448554665524b736b2b534256545152423173727a536d306173716a51545a5843304a592b66617a5a3831792f69576b436e61326b796e50767554397141684c673979417354744f38635a50492b6a536f61356559414e61744e6d6f623147373547726c656c4a756e5a5079663575704a72682f77427755464f5a7a6e76414257333459713138697443432f5168584d4d36633644376f716638417932507246644d71474f7455476854485237514c344f55652b594b65474475752f71646c76414537764b3877585568684f4f66522b7179367569325452564b363337546a7457336c526353503663796f327864714946664d3259792b73624f57524d5448574244387047446f7164724c334f6147356f3571464c4632727156716f464c617263794b654476736e54497650474d7855366365502b4d43637a713054492f715a3352797a494c6a3478765a4c64653258617565677866396c746c74756562344b49382f39304b686352653332304d3149464c3047484d6f4459512f546a4d6d464d3272627247416c6f6533744f6f72537659657049686c5258626273796a4f69356f36644f706f336a6b6c50514448457635675550593576616d43715074506130475a7854745147706559655038416a6f62795637657663745a336a6c5478356d72544c744e4a2b7053347372505136696e51516f5353494f5534702b6f396b395269364d30556f7261334545752b643553596444706146774c757a394b69792b7a4f67565762335243724f33656139635a54684c572b6462304573546e63795a5831322f3636514a7435746f665a2b355a74763462715951314a7576654961453635394e715a35574c6677335a3475367766676f756e56537676364d70544e33514b66336469596d4f6f46626b66537a5635644651484f346a4b5a7356732b76524f364b73592b54514232784175576e4e69685543552f77445a656638413758477731644f6164714256506444485263386f4e466357526f334a57746e5871766d7a69344d74336a31453837334532644a32564c64376b582f586f54747061424f5a372f6e3034375a3341354e76516b746d4a4b7a7948664b696c44633765726a67727a6d55624b575830496a64546430632b6c544c4c4774596b4a6e66433548797a6a33682f75753334732b59506c7535464e4765512f635649462b766356584a6330304e3164626e33493366627453316a493251334c3972706965346c35534b7755514b4f526a62663858336b504d33536870304b347330746454555a61454e346f4d57626e4f7235564255537443646b365837524c2b756d6c76746e4d66736b633877634967646d4b376536436a4b544e334e386b4f45723758736a58424e4176566853796653636e2b563764784d747a4b735069316e525372332f4d514f2f596c384a394144577077394e6258374774354a5044335730616e5439484e6f716b553430364d4a614b62634e53714e524d72437a72506b59394a4454624152614c61457942586e387675446657354b2f59317531755a696a2b7a53484939724c566f6a39614c376171797131616e6b74314830364b6a654534477150456d4c334c6e392b582f546e38767546714a385356637a65326155307467737074787264474a77646448444874616a526c6631764576716a5a696735395650734177556b45684b367745324544312f496648666462453672587a4a4f7a2f794f6e566c30317763314d714f6c314d45786c5a6f6658455a4d397954316b302f763254754c7632666a6f367a2b67684564336747334d313270346c7152574f796549756d6f4b6e4c3571746e6474336e7078614270536d7571697678397a474637546d2b703861626e643537435345396675535a45766b564d556d2f5839444e66335045305134415453545a4f624135583868646838645a69305743547150594536324c676d7041762f55576d344b7639513933786c7455306d7266354a6e512b4e344f684c734d7a2f49306d6c726b306c5547315a4a6e615536767445545539726e643164362f724a55744e4255435367442b4f7834476e6e55323034656a73302f753269774b71576d6275564647655448525666497465706c6974624835792b48654d365137772b644d50763577536d7966786a47515574576471734b49346372505a525a5064506f79733256756e736b697a39376e5a307432475a37716c6f6e6d66384c715a6b7951706e55372b676f384e33774a3364644e55506b7562433530597a5a326c745535756e57704f6844446a76546e5a75624b79576176513243506a577364386939747271535437507369426a4b66347733536c35742b4e37423563755a6d6f3039784f6f32484531466130647246523235434b464956445464706168452b61592f7642472f34676a354f584a6761373773764c777064724b772f4f387944374262685a372f4947614758696a6f6f3247544c4375594a6a7178365047394778726835336e522b6d6b4c70704a32474c4a72313776714350682b626d386b786649786c7a4e5853324f703872792b304b75333947482b52666c6949754b566e5657584255375250674138454a4c356e2f464d72535639614f67752f782f786a544448717637325450696d4a6b7a39484c58342b7133525648546f515a6c477555387956364355726d5a38674173593250417a544d62676f766c6a4d5a78336957365042785a38343575362b687a577959564972716a57782b667751716f64726368616a324a6e4253666b704e546b747155355151657779704e736951635a592f52376e705a48487a6d3572557046476a4a517a2b576b56487a75715758396461687361583864476c416d35713662776f2b6a542b2b64554766464555686e4a6376575a70545438734b41656c57325a47524b706e59645061793158367a462f4b75626933716f71424a706d543159466651344a574878592f6149726c6871635a3978336b5665657955744154755775566a716b61564435724956726c4e624f4d4a744533633267672b6b6c344551535a30552f386746346e57712f516f796f5970564269316d6f777a726f4c59657563797232704f65585169563166416f655941534746396839506366672b7636417a6e4c544c77687a4d58637a39423274515076536946726d51637575564b7979486b4b794b68593747775a7649544e35544136554c4644386b39513354524c6d30646f4c6d73796c4b615664545a70744739763138706d6176716972684d46316578684238782b306c554a7249316463686747362b596b683578314e58644f38305054726758315031556e5573633779535768726238376c464a4c6f557232735252336e786736796c723174712f583177786c54425a7a4f557a4d4244465177696d7a556a4b65743941645775476a69577a6d6457534546487752496b665239344c2f654841367341634270666a3341655179617a62467162326849795469663371593674537a6b5136596f72356d736444714a65772b64503762452f4e4962484d3731594f65364b567532624a516f61776c732b4779674f7937564348327a5561597956524c57396b63653552507935442f387035766d5a786a464354364146476f5a2b3154516257584b78417531586c706e7130434679654f4f64716254556f346854486334672b31316967427a71474579594c6636417058372b687257394730382b68596779544f4b65524c755470685451563253776854596b736e2f414e76736f5a37682b615a4d337a464e516b484b53632f52567a4f4d354a6f557435564e2f7351364e57664c4831467172766a62334a79325643787979635637484a5039734e432f6b6373424c382f5571766e374253326463314e5453556e3354383064425a6a304b613267756561464c4d74336a366c79766e35777742693046372b7a67595a63462f3673566e2f6679757634467a374b51326f70317a357a784b546166484d737a4c4a574b2b6f74426a6d723538306c416c7a32755a2f515a54644f4a6f4979575a47696a747969707337584858736c58456a51705a646e3144534e435638755935684e5958796a31786d42755135786b44726e2f5759393671633847493557597362576757754f6b5a616d637a34633851714649305236584c5434545265644c4f674273346b4a6747466672352b66466e6f3061644b7754624c566c307a35756d706a354b666553367136666631306a474552394b6163685946347339795162786f416370624b5471416e36585855516646386e37424f576d7a4c62457a70324c64474c3374746c716a362b6a346961483343573949464d314351796e736e6e474c53303072713170626449653179557051643051714859567849746e594d62463065333454654b5263354c4b514c33302f4e594755715631717a4b557354313839325761356765696c624e4855354c5a497a4f6e3551545a64495247596142657558676d615466332f36722b674e746c5443787569324d6d506e316c5a507939564e524f31693750593156434f4f353969563145704278772f413137766638354f596c4b6744443951397a795051585664484654775030584a33502b7667716e504e35594f61735446617242634c6849694a58552f5839352b347659436851494a4f6c4932514a423643353344644e513531694c3531736d5841344b326b4e664b474d4b696a6a6a616c3048734d5864596f566739365653573058577630494a51707330517a4170346156315277357055432b78717575682f564536306e315475677078714467664d416455436c556f572f572f6c61554d4b6b56757a386d5a597746706d49786f6c544e4b30477373684b704b54447678755632695a4a72614465742f594f786e305158706831557755676658565770716f6836356e41793870772f55515046547359364e6e472f702f31466c533854483363535a68384e43793132717a6b756f486d5462544b2f73346d31366b442b7972512f5472634d4d716949694c7444434567415a686e4a2f38417063444c335663437177786c44334430543770753051314e427373734e79317a5556494d555a354d3047433452562f307764503844676f412f61426d61676538647950366469526947704e566a42686d756653487434532b706f63556156314f756432337450376e2b7a575051397730444d4754506e506966304457674975706a56316a4574304652614d3564304672396f6479316a73462b6e4b34484a326a53414d502f6c6c516750622f41422b6f6c4f565759424b75494f50746169624d6f4f7453376d5366586a347444444a677a777150764a3166344a2b417565384763344474334b4577526e484e70364c65613631356956754c366778495451696e4d585a38644261634d383557413171564f36592f346d355a416276364270334d697a365034715653344e575764345a392f7741366265665a57327178594f7a7863356631666a584f58666a6f6d3641332f47435741427a4a424d50306946744f7430695a2f49666f2f6b71552b577471775871664971374f4361646276717a436b684a48736f485357585436304845734d5530347277305a6e4967577168514641557730636a5139357a3279586d65687063555263644f58506852787257736d4e2f75465848504d48737a553573796d546b762b513171394947547a2f4d4659727535322b476b6461716670653065537250334f57487973643830372f7744345a30674f4a3850547057613078634d716d5271354f35654e63364c4e7171624b2f4f5451564446756452514a38516d5a58316e6446616b2f4b6448416b2f61724b4e414a6136657a4c2b57386d7154444958645169576c6b3158305749596c3473476469334878767356525933355644796a2f41426c7a78685a4855613762366b78755a5447517a6f5238375a457257694676562b35656c2f736f346c6741336f79536837444a4d6769594c394b5764337857523970645155796d70636f594f384277467a74396d62614c3172575975573875554e2f38416f2f356e3833734d466731723654592f342f34367a6437614c4f5a5441457572765869692b3967396936722b516d6c4b6f6c2f4b306638414f67316d52634e54536144354953662f41474c5a61676139454a3665524f6670323567503450326f6a5758614262616e362b585142467a7066635845516c78646261422f6f506e54692f697165717a644a2f4a67487361616f7145444b56636b64534579786c5153516e597971635846377665414a4f6e352b4542746d41684e49784d36316672514c4b4467742b612f6b30542b7667734b317675523350583334796c6c6c396e61766839314873415241666d456743483972574f7969724f314a2b76552f4d6131784a69625169646c584d2f6b50594a6a6f396f4c643733456c6e55302b77556b756a336e38414b726162344d2f7742327677705675624a3747364e346b746e376455676776736e446b724a644155754a33746550796577456b34552f63454548693230315475354e513037427153353736795a432b77716d73355a57716767536c544a593144786656665a5a59432f5a377a6f4b67486f715055374f50324936496a704e71356d4b6161725654796b7157364a33315243656a6a4b6b712f326437773069306e4f493570716141613831546f70595448303869645a6e52665752326d696169702f3172465a6b645046744763696a53364d6d546e37577073345476594569615841766d4f3632456e323663564b4873714f474e7a36696c6d76726c5a2b6f6770574a722f6a78634c486366306a4b677151396e46632f5a4f424a576b6a747a466a526431534c585358636d427957726a6c6b65544570644c2b7a464d6c7a686d6233712b65376c4c66674165384e51676d69566c53426e736d7159565153494e347572514434686354495a57503049786f5a516c615763576c2f7450695434356e79547049756770784e6e4a5650773043726e46705a5248564e3156654775794a597a653551664e3863353561306c386b3870674b76394b5348344151304d562b2b476d594b61756330727070536d624e4b69696e46656a4e547a37595a5771487a666261554b524a70495734456d524f44322b772f364442556b3737452f59525336782f4868545a49364361396f634f4e39434f356462466c4c6d676d4546675171577a324158762b7559645973506a575a304b705349696f455356524c4839506c2f4c59315a383964726c523861746456696b797352304f2b37396e4753546e56332f63516653366c534e36464938443653463063303567475851343768412f4f58536a6e7550517a51546f536c316e525949386d3635496d4a2f47734539473963525732736c6f47666c72334c54523778302f5a77335250595364596b42376570586e7537502b78466f36594838333653424a4373664d343456353948486e384d54356b747a33734f42687a39435347552b614a536c5979663841637a4a2b4378524a6e464d79362f6d4b72334f6547726e6d75755338375a316e5572564c65326565334a33546f306e6c42617a484736446d5672703552594c427856546a4f4270507677766d644d4949427a7471384f5876675376302f7744474d2f507854386a664e6d43374e4852393857537049794c59366e4c69424f586e716a4254426d634e6a654b4a786f7243676c4231765156524e57387a6e487151793351314e4872634449367a4e6b5369666458743031474348706c6d57796f4f3754744c6a39715769563158546e412b4a4d2f334d585268615468566a4562704357705043372b4e797342797572434b716d744166616b6c584870353262416a553271777151416c2f505375457068373956794e736757347a44695771392b37372f384149657953387a4839366c6458334b653665723264556d316b304d2f664d797964394b4535626e707158704f714254484f486d622f41496353667a71723674322f4c41696c4b6763656d504357773053396278334b4e43596f564856594d3454772f61355667753535426a7841393139464a6c326c734a2b396a6d71566f43336b6e63584e667a5175626d3757747a5961384d6e6b6f77507a554169646d316e69415a363259377570636e3350635970344952413335714153593531373976332f414f42584b5974355a6164465171525a6e7651575048785761566f765a797657756e6f422f77446e6d766c736d3046547558542f414c4a2f474b4d55514f704a67476766352f6a73314767697842785a6b6d4d4833733754466b6861304668776b4d624f6154646a76585a514a645a54337331502f634a695773393656434367645235457456314f4a4b6e6a427a4351685767345579376e322b6531303678646e564c434f4f5450774a556c5339566a5156536d4c67657a396763634f313543633557455362736c325576554e47544477707a6f6f323358567464725a624d7461593434567a7934504e444b6939735a4172356777576976374241774e476b5836376f42693275537351586e7234527a3372632b6e4b765856596a6c58574e6d4a665a625666526f35486b7035376e4a58336e6467546d6a766f46496c6d49705674324c4e7a3955306537483164444d4f733034706f6f66472b63714e4c4c2b515672686c556e33642b4b726f504e4f5a5078587670576255375672742b636759506a3964327a4e72573137433634717238694369785250354776576f314c6a79365a6f684f6642324f6a6378696c4953786b6954416e66436b6e714e7937667969346e5971496575757a664873504e474f695a71712b735a5657316e49536d6c7666396a444b5a4172686c71693538713648556a6566756362793474656537506134774a6975584f55373563754450717a792f374f306e5a74714856344b4536433165522f465848336b4c46546c4f706a306a2b6c4a397450375943426346523830334a59557450485866566a6f6d6b5771424d434b474d397136326e4c504b496652314f7952395a4b39796b752f7755747a4849396e3241786f424c497072517a3661484b6c74627131756f516c7a6c7550377264432b6752366e4e4a6c51356738347274687042504a6d394c34682b4d4a686d7872774d7354525876716c414f46566e30676e5263314454474d33736f5263745879637a33653266744164487657636f5751534a457741667a597a6f7752504c772b76654c7037736d44767576556863734a38617768574b2f73396e7878396a5134355a31302f77436e2f5578516630426577745854526e737346546b4d586253764c6d474b3935636265345a7142632b4b365945545468314866324832472f615577545576337136464f516c4449737141706b6e546e51686d69726735736d54716639746b576b4d66386e2b6c4d71376f57456b686f6c553274514751436d6a674746723971524a63376d6357534e546c3054536f6d46413672766e42507530444772723032493969335a49584d537067467959716e4f6f4e7a447361505472787a35674e6f42797a2b52797a6d446a61632f4c6e527077446e7442736161705737717136396e51537679445055794d6964387266662f376d30703442636171655061387777435879486d6b4b315a356a2b6c6d587554545239645579376c31795647784c56614e3274314e4767376f67673658447048496b56642b446c6b386e6e3967394448576970315647666d6a625650506931424761614b5635446a306f347450686243566a4c2f36684750425a306a35534d3351496c4162672f707674346a37457254583335663841782f6d665370735651467a764752633075646f41566474566e2b36796772724365305339337637387331626b544b6c4279323334516479484b702b35616d756933526f6e444a4f54515a4c6b363857314c323769464c50556e6239574f6964316e42375131782f744a6f42684a71725a326f4a61562b554b564b51705364624b5563794d3163496d61616d584c57786c7730796d564471495a334362526d46762b48662f414b54374e386a67687a382b72566a7a42676a345647733237746d726f74356c767a7253666d6a34367657484f467631644978714b552f71465437666d4276426f5631796c7a46706a6f4a584e534c796f6e767466467048564855464762493939644b45517837484537552f4f63522f49635466507747726f3448562f77436b76685035674b414c6d78413547726a4f57396c7171495a356f7244464f676f46726e7934645263564576556b465450723970574a415862484c5353612f59516758563774586d6750457571755a4e5936476d71435745386e35752f70714679412f77434d733268466a4a31397052382f5852334d4a7847726970777072564852374d2b6f61633367585554364b4d3270382b307179686458426c6f55664c6c54304d636d4855413244525478764b665a396b326b5a687070393465327836704b30644835354c694e30656a6e507259764e52454f565a2f74504a5056732b5a30544d3931672f496d58337a7947626739377077574f596c4751716848732b7a51376b566b4669554b767a304653494d32476144676152664c7a55577478564754317645432f6a54713738774e50376c72397151562f54383471786b7763336c6c6d624b7273734b55327755337976637879766e5134486c4931597061675769775335413433306e304447536f6c3075746e56523537496e54687857665978655943713641307861365659516968374f436c616f366c677341584d644242796635686d2f3074434c2b5530787879615a5771514d347a39665778417a62484877334e586846457564677a712b5336784a633530696c5166735039695a584f6d544d524d7a694257576375684c7143334d756a4c694f463139394e4f587a6d66717068756e756b6c4449367452314f354f6c5066313259514d4932702b4a3337417a3343385732567156765755396448614f2f557253774f616e654a747a78314f464230546e685a2f3675307746586166696f426932744e4e424a5050627435733577486b2b617a58484e673036714a4a734e445531732b5a326c54556b4f664239656e523033477650324457357141555a4e51503032755536336933434e63375a6e62496d79644e4f6e456a5a7a644d47524c7a484a4d4e696e5356575332365830754b3157796b5a57456b52324144704d375367596d6e4f664b50622f555445784f4a434f6f484e6977314f6b7946774b6256527166782b6c565a6e5a624b494b4d39532b376a2b66363346485668392f61592b7a694c694545477332477845346e4967735877574c56396f6d6b623734656f7832616a716e61444e476c65724b6a37536242372f41427663306d396d557a6f646e343737537147392f544a74784f6b52384c514753716a7375724a4f4830704a4c7071477a4d6f757131494f712b636d7875304a7953527849516364457666734b53766b7a6b71357a6833717373435a33516d6e6763756d6e7377356f646f33354b47364e41647a646e6d6d5243516e6d3643326766742f796f76533143692f5a6d3449586f4f3046336156663868442f4e793537676c54617a6c72346143556d642b576632766b4679306142453537796168314a6d5471444c3679462f3046616147726e5965546a7a5846342b7a49733036797a64542b523131776e6f363064704f2f6c4b3679514f682b6b3641386a592f346c4c2f6651663777634242744e596e714449495632364337785268714e3653505335546c4e75347650304d7650664e71524c51497a6c5639374c53505a45506e49412b71584a3138594a56562f6a2b6e71424b73724d6c79614a6252354364314537445466797557614562477870776d625861644f78617971714f355a684c53694f67584f55715a662f346c625733664b424a41526252714c354e70773249563865516654584a4777356b5139796d6d7543736a356e725237534a58774b36444a36572f432f674878503841565248327961556971696a5145746479314968476965746c437369554d32586b3131326f536c4d6e6a7a33666236594e65786a58617369682f77414b703639503266724949664c7146582f4358614b78707632623642314a4a644c4f30426c7176544a6a31304b713968795739586936774b53626e664a593736386e6567516b69764c312b33727544334f736a436c75645133346b3975576d7163417238664478366f5869654c56546f33324176536e614e6e32314632635741395a2f4c387875464c6c2b31494a356275736e34484c3461705a354330594a6b426e63556d5870706f4e76625968655652476d4e69536a54772f686d536b506d6d6438592f31555a317067354964754f515564646f6d64544c377548593968384b4b5836544b694d43644d6c784e54786674344c394978396961317152795a7a336850776f45356238725046784969587956326a396c307237554e6959374d7a75647558504d3165612b584f53395841364858466630752b33334f6679424f4d2b447048505a484e384d744c61777a3279524e5a577452524f46525352746e724e4a4f544c574a31716432487648425159384e5a396348326874444a7a67497273354c706c5066796a3745716a546a33466e634e4b645035466b53732b68667a6f55584541466846552f2f6c503941336837436445584373716c6e4d4a755a6a78444d6f46442f6c6e6f567a50346765385854522f724e696566704b7a4e494e36484539642f514c6f2b41484b4e4d7264434d74426b6d2b346c4b56526f33565a7a6f73707630786e554a554c455a784e503642316a6b2b78786936527334686a4457556c5858314d4f6563467a42335158566f444a645576746c4e4e5445683966323570726f75543048392b4d4267636d70684d6d4271416d766a304f634f61777878352b4f6a4769776d583255305743706442536472654d3478737a3363692b754d34454b513733392b36686a702f364354463962337049366c79722b4b59754c6e2f54474a37514e4231766d7a5a534469552f4456622f414a6f35385076443974506c6647687742684c586f5178785478704b6e71424f4d313353726a574941783039416337507a744646735658764a537953526c377866377a3658764136674b703358787964647a35785546706367636861614b4a484a37323235636e667077794c4a48556944524a6f664b34477563436c4f424a636236354d72756f796a3967552f77436f562f4a30597668545879536c4d414a5439644c506a5a55626947592f6841516e6f54374664454d4c4a6d614f63494d636d374a696a347a756c546e766975724f5661567073735a575050687a6d54796b48583146776a623776384442502b4143526c544d746b316e59394b766c5536627a4f4f3041536251304843307172492b4f496d5a6f725074435445532b6e50776564482f414470444a6e37644b31477a487871446247786b2f5149536e566e614f594d715a6c726c44363633526c7072644b7741416e574e50362f50593879424279644b47436b684b532f523466526f46644d57634d6b366f315578484252536e33574f6c4a77754b6e6e597849416e4e594a2f3369595a54534d525175507261614741316b30367153433376526e714655624e472b49767166783554306659392f656a55507645676135712f5951525479583755784657322f6a6c5554593869786d4277564364666257553846505747646b3759346143537469686439597757527044324e45493344707979643931793264676330362b7a53537a4c35516b557879494a7a30726d594e6e75624f332f564f5431476d6e39756e53503741427a52744f567a725035616a746b35646c584d6b6731546438733674656566707a732b78532f7742715664457541667868383149797a5444536f44577336476331426f66434b2f6a55594c645a62584459766b79774f765373684a4d3864544a36695973424a7976656458472f436f543649464759793179706c7a4736765a6a556a48782b71304a51625771615a7a706539624c502b6f782b753270335763512f356b41626a6d4e796f6b474174767354504c37317035396b2b7a624b3636693673437043636b466d3939316e4e433462474f2f334e4a7869394c65485a3253636c54414f7035626d4f755a4768426f785353664b676f6d4f465a4f31466c6e3576446e536d71474547487445704c4b55684b6d307754386e32417a456737302b6f63304e43524b6235585a656d7a35387157616e4b546f304d47586a555063544f78366a335a734b5769337154536b4f4e73635139656c494f557855464f58324a316a4d744c4c5a494466714c7a6c7975306f6170732b5955617a58357179714378666143536b5643416d482b7074416748323647597272332f64424c614a6c5779586748594a47337a52464646336a704b6b2f7944676439376e4f56733754395a5a554839677935516b477362326b457347642f446b6c55306b2b62597742616f44656c6339456e30584d4e6a676336786e5069616a39735a54306d6935616d3953456363513554362b364274356c7a5a6457745a4c4d684f59353671704d6d586a696a352b2f74753555784b6663584753646270714166735354752b75362b592f564f316339512b786a2b7835764a46513644564e6e30644b794e45726c4833355852305753733048555453684b5942336b6132306577682b63415a625139624e4c693556584c7a4e3156717964637669486462653551716d79446c366f5a424a4c5033496d46332b7a2f69616331414535413079314732704a5556636d576e4b592b553448647a66757a355977314e355057546b5043684379665552704d68495539556c3149415a394150352f6f4a7378705a69644d686b7a6e5735735a6770457858396b6a797778697a3154714f3562554c7370426e3753616d306353587454375354656e57666b4b78676d794c4d707653624f575161353177654f5a44485a4e4c3277722f6a385a3173755872646f3272696f6a45666a426a76304543546e3977674c4a4c2f483950314570534c504b4d32765657344b6142386831474f4e5a307a66716944505472534d567072634a4f7732797030685378375848777a53427a71534b35563137486e6b4f575a7575503841487a61435a2f65476d5769507830424e5a4b554f6f6c65637246636e394b6377732b505949684e7677382b464d306146712f7a613935354372396272642f58306459514b4c4a6c79304f61534e4e6b664b31736e734f58795674636b76666d716b5a636d663576396b365a37356e494a55676d41572b4436666f4474436466483862326f6f73594757344e65556556326d436a52626f357645737a5666533063667876767875566a704a6156714b634a2f6d595361615a702f6d2f707937767a415a6d4c2f6c736247594242543269695453304c345a6f6d55636271593142446e576f7a5842454e455472744b555334456948486d75614b666b346467506a2b6e36683135686e34576a3431564d61377367304f4d537a7050702f35704e3268584a6e705844516f486142304f6e654636757046783368787a416d436b41694e32655051516e417a7173796d6e4c356a6e4f456162646e786874702f7859527675526a7a7a3557774f645239575631626c6b31615869484a76767a676144536b4671744d5a6a4145376d546b68714870544b4f33546f38687132464f7a4a617659633053695a54703462354b6d4e6e5978733941645a507746634a786950615a335a776356365238686a7435316b6b65504d46464c2b4d6e367671493465593174534a4b7035444f6e466c6f6d482b4c6a73594a6a503159586d61796359526d7058516b526a466c6f6b4a6273326656524f394f66577a524351394c79544e79753051342f413575797a70615757554930563955796476736f6a4d5854697632684b2b5968476269346b766b61727271747937794a4f68732f774161314d544b314e705736646566506d75312f594738783171364251354b6c79554f4f6e3769712f63716c51666d79637a7242474c576139633862713839656a2f4a57436c6a6374486b636b336a6d4646696f6c5a76642f6d4d2b6f3831564975637330307a53696c6338724168613152626551794f686d636d6d6e69632b69624a4d37734d555a4c617445446a386d6f68454d397757533677353535373533756d5345636f4a6e6b52374a34316e7a6761696574754467356e7072356a342f715a30563031304d626164504f44503061634f554d3875344379726a3045387578573757584c3251416f56396d616c6675416147702b7872536254617339494666654f51594f757a6a4e3932556b4d373035586c5056792f4e646f55344e7361556333494c4b376c6c6e7a78304d324676514266794c75544f7a714b584f55364a557a4d78747850654a54343953476434686d364f7464715a6a737677377954796c32702b70372f4937396e4d7a736c336a386339476a4438745573766b5651795570616b48494379614935796b72372f5363384d54674b6548366963696a516e79632b676f63443034583546724c446a764a6e4c795a36783534325545306965423051455a3330386677624a774e6268557038644370717a457a6a504864594d5a397256664a365061704c3164334e315049645a754269775461734c745371475665594f576d462b4b4b302b2f2b4a5833352b7656317234326636704b51545a504d394c2b7536414b39524d3756367230566c734f4a2b48722b7176614a6458597570695870613256377174444c356a775830387168374c2f414270503562534266456c7673754a76315a4d75314a37552f6c2f754e6a2f455a7444613266566a54676d44507254756e343737664a4e423165667235644c714752313837586a7a50306e7a71324e52374772374566312f5932615a76774832664b65455538687a6839635963724e306432736e4a6d444e397339735650563658787a4a53772f755a6e2f6b326f3943666c6a6a686c6334775631553943624f5455614843396e5470393436555a415446364c2b44364c79626d692f787a506d6d507144456a79367379505375637152326b2b64304a554d756f524b704645646747317a6e4a6f6d5563664c6674534b5038777a744c4d782f495478344b724b5a2b356d726d56526f4766494e47695656785855596570484f38592b5a732f686c56784e557a36686f6c4571786250486f7961786e48474d534e6e66783778374d7a777a6246483269533862654c664f2b6d62616e686f3158506d475138334e4649787279463049694473696661374e4a6b3839687866446e35586e6d2b516e4c613049684a69644c75593278644775744961703456326c34797449717a426368632f56532b4d6d35776f494a714c4b6d70644745426830666454555637745a55566c2b52643241532b614d5650384172573647484b6c306d62446c61337971474d364d74736a4766752b69567445796670796535684b64516b51755830677736384c7879396d666f667a686f517661747a2b4a356a3532497842646c746632564361546f7a545863386547424a6350506754542b35766d6e644d7a6d5a6e78444b2f75625435433065443541756a4936714b6d6e53322f4845343338525571476d503439433659526c693750396f6c2b3455745965716f30736158756e5441693371486a5674307370435976346a7866373262517a717163334e354e65357375584131616f33506d5a6e3045517a766f634e674f525941544f475947527954457a453567624a5136626f7642463644706c53657a4439746a706466585870626f79797a333230356936366c3044565553367935336867726b734d782b7848324a352b514b306f734a65524669647a355939576855656c33616646567233553649615644306248617270653046643071766d624f3151476876332b4749755639433849487634466e32382f71532b6c6c383348563131594f61466465324572562f774149566d5233322f657939537069786a4d657a512f5a76493269757830797067327478357458597835497576303875334d6d6f7a424939444b2b68737a4c79644a423773704b5431644563374a364b59346d4d363145316e62456d6379666c5946422b536550762f6c6365374e4676632b74564766554b6378675a6b366771716d72637939536378746b2f4c705a6e394958516d454f616d676d4245384b53412f344e6754426b4c4c55666a57335461434c495871537270335a6e437a776b4f4b5a75574c6f56722b6a6f47435a65542b7762326b797750645251595852762b4e5236782b507578764848686c4b304f503254504a6d66556a35703036736d626931766f35556b6d457a556377654d2b567330314d5238344471774f497a6a6a474a4776506d4e6c73747974552f456f4d366d5752635331376e3879544e48497732335169693361723246395855417835362b6739426851366268567a67704d414f6b574434446c307a76796b74316547375653476345795a57624d75704f4d6958315a6756654c6b66386c6c726a634b4b475531676369446b735959476f50694131716851725a2b72504137504f64704d3937426a76782b75782f73484f682b78342f4c51314c55523058646368334a6b636e732b4d36627043587767682f6b5777345752354d6b645632524c6b315461425747465541786264476350634f5451743770646f4654526c4168724f58744a525442663871315745774a3136655444427864396c3757365648555162576a543173376f48397a553645727648346c324678305a73637a695a77624e775467466a70704b46424e614476527a496264667979626f366a4f30354d386f393248364c6a52415339704f6f3637787877716252704652342f647a6f2f7579526f5545784a78712b334c304b4b39514a3865742f4170324e506e41487947327559626366715566796279657562466b72597a6f76455669736575467a33665370435a49556850383457543657726d5a6934456e3862725a4f4f374f31356b756e74706c56323461644c4a36725a544c6d724c5263736d4371466448427435796d6c496635557a564f416e36306549785037547066413353626b7a6173672b7a50633835464d706e795567324f616668325554706c304a345a74696874483230673556496c57547636694a7a4752517667764d374d65322f536d307579774d3064356771444c5850467a57314c676d72756d6f30716c377856325354676e71464e2b4655632b593739304e6f2f636a6354306e364e337034714c48754b2f366342365656756a6b47585675414b4661575a6b54503171586552584174467957382f58744a4d616b706d6c6f584b664d37347a5850515666366e654530346a4e5871485a7271724630346159564a6e6f326f30615753365034627461466976355352546d55384d5a2f7557396c436430366770633574476771727865485667304b394a4b6261485a52484c494f565271344b334f687271785a716c563748796d4d7638444753444f79612f6e376d6d486c39337a476e6764437652374b5576786c722b4d6964476558436d6d582b4c7a6f7231556b5838666e36447331555130554d35725a71356b70735254385444397165576b4458466c6672487947726e71376e36647577724274565955585a563674665a4a54563165613276577169307750544e2f55306430426c466e522f774371744c76682f774146744e6833726a6247417738647a333637766b464f4f533373546d704355614d6a7365686d762b31536a326166326c65314555754c4b4f6379576b76755741757862722f2b3154626f4f6f486f6f4d2b6836615a353167446175647264496b536f792b755453376c556152782b537a73575863396c6a6a2f79733532744e503841324455356e324d4c3469302b594e2b58785939655057544b617071732f6c7368365831796f746175504a75524a617a764d2f6a48584251756f57643479622f532b6f314d4d5a684e554367664463634f62363349566247544f53554e565141516157323265684d37374c4b73647766783944632f5353524b48744c46635759395142316a4d637a4d7a455233514f67796573697835754f5837366f4a2f71703557314130634c73396e5a6e38373171796f4a374a3646644144412f2b73355850596265477a4c3935363842712f77436670346a792f7741644a7835556c7a744c4e666e7674366978382b7169356942352f476c505148386851524f4c72654f4946473444436d592b4a4e2b67326d312b4c6434626f6335504f6f4b4a4c6d386d4a6854536f43655435506b34754f6a7276617050794e57664b456d58615242514c2b62346d3555367a3868536e347274596a306e6c6b71772f714b78396e65526c634630314a757a77333263794e656c594430466b4d36534c7642593332442b776438725775446c745872395a477764585a3377546974586568785148617576717a584a57656655433149555379584950467969396a6d6d48472f512f7742684730656c2f575131357438643864334c2f77423163523158644d743259543761616f5768327355364d36324c4e2f7944565574594e5374676449784276544d324c50655a784766416247596c36472b4f746a6c6132774a6c4837362b4a66324f63674f4f7443564f43635744503964596b7850452f435832327a39352f6758503670303362716976784555576577446b512b703333307a645a57726b677a4d46456a4a4a416c617861666a742b51752f35542b365a664643416949466f4e5676547a78766e2f31775243576c566f757072386b43396b31576d69654a3855712b546c3146546a476a4f34525831734c6c544f4f63414f554a7239765a6c72636b774c6c2f4c4b4232783464584c564b6249714676793649374e4a3941314d5949384e56584f664a394d654a597a6f3837326365664e3833736559696b6136664c624569304c484a3050533748704e6b3957577678707643706d4d4b45565164455577395250435042426643736e4e692f317a7066546148784550502b4b2f76505867496c364e4c716e394e764b4c30652f7057366c334663466362616c4d626e6c3163514d77316b677672756554506b487043664b654a5033657a6a6957376466702f554d66787568526e35486e4336376e5053666c57316f53695a77757637487969366e6b463350726a79676c32486f667163534d45492b465966386a37796d33576e7a2f73497267734c4f39624e2b664d61517876476b6e5247417a50437035614649766e6f69754a7653552f363669466b2f752f566e506159484f6f3655396a36514358723676566c7766544879475975445644366865497542565641794f694857636e456f74665558786e6d30634b6a5142422f735463563449427257556e376c4f746f376f45723963474d623474504b716c4a746f304a74415a455072703043507246507a704f64665572743378664a37654934305673573579774e726d487873616665494a34426978737a565478786a486d54362f36356a7979414d58367157377675366a37453470734d666b467a76726a4b664c50304a2f35393939356d496a4d69374a544e6d49646c306176653969794639464d79303964543150796670332b7636596a38656b304f645a38776c37683730576c2f77426a503475542f6a2f304b6c33474b314d6b38504a52796d5056656954707239386338716c496f706b345a634a4b716d55647a55685877577353355038417142793041745a61644f4d39776e693731355869382b6a78516653514370456b79716467747859382b636b764d494a2f6e577a727032633976542f326a396e2f414236772f774246575969317354335149706c3638666a654e354c303173545835436158364c31693650375a61334d3335546c304e4a77744b6964305a4c4467764e782f574d774266424a6a4c673768436f796e347a76566531656949316341532b2b396d6b5378396b783243796f57546b6e2f41487042774f3434512b45765958374346364468325049562b4b75735971664853725a30756f54396248565966575773665650624b4b64427971463574497a4237505952696a76742f626b6e476547515168386e2b48455a346d3178554d6b747a35577a6871536157694f564f3667672b4b72515a376c7057785a4d2b576469334a6e635444594a714a58394d526d4a3734457766714e31387a50726972623873304c696b73474f75413641574e4b363950384154763242652b6768576c6e52507145574b2b497632747874694b346e4d644257473366334f75354973754f556d45794332555a587a6d532b4d375856526c386a46744249466b4d2f79542b2f76417a544668683768594668414a614a34385a4f726d554f6e31746c2b31534c5a3079784f6641594f71625651396462756b73546e51355848456b724444674f4e4b7553484f45742f65787259683533534e4e533736724d30613378534e5333696441763435764a3067656845633768353055436a71564f7058336e425657526758304c4874586932523247534a2b77387246637730756e476d64594967624e6d5367787a46364464442f6c3037503331507965354953556a2f514439524265522b51374f2f737571442f78756964486a63482f41476631584a3947556c32654f4b62505364416e556e515358796b4b577a36564a30475349314f4b497845596a7059454e48612b6152544a3655724e615374677049315a4e4d6a57497064784961434c706672706b466158635364416346565a413479353762535245524749444f747330586c475435592b7438374e58506e6e38725233543554377a76347568484a4a6d352f4b74533579307849457044497759344241424d4f754a4d5a6959385243646657546c486451324b784f59663757505a4b2b545979704c776e633532584e4a37763553687a4e4c5237304334616a476c767336796477384752494d53675047344c6e7870536d2f6169726a7a5a3430616458737931494b615931366253467242474662415972326e33325575716a663036666d6548376d72753575537a4472676e6f5a504b4c6632764d5a55636b665966354f7152644f5a5032706a467048507a2b4c377879566753656b597136617a6a455a7a6a69496e5267325838587059743442594d4e6d6a3074476856544936556f69525253714163307858564e2f47363336544a77416371626950384144397434456771797a52766c7571524a4e4f3931656850397759696670615052557836323963364650752b31692f4a4f763974426f504e587a653871524e6752633872514236575a33466e532b4a4c32702b35572b6c6c495978563079387a7161694e66364664516877656342337a6c395a5533417335774331504e4b4a383041314c7055696272355579635133546438306e2f414865527a533341786a6a677a5357744a2f3667444b39376b74594c3275416c524c337a5366512b393270487730616e4a444d51374e425158517a46583674656f583649757a6c77675a3368756254415056455a3861347769634f56524f44774f5378535732415330326f6871613931414f55756a6b6f574170304c59437a42567a2b4e2b5a5476635376656f695777444e6939757968326d56496a78382f31744b646569783143744766366359753435487358433565684c3844654e6d61316e506450325a796b3152694474554a455569632b754c7655325454467a726d4e6d56726472766c305a703253356730456c7045774f4b567a71524f6f68447039575241444362534c4e324b61464337546a30713250304d364d414b6254655332534a594d386b4d706145376662496a67684e78497342337a2f6f7853414248533854784b4866444d74594f717659633147546f7851784c754e77314b624d79445053537962394e6647394b696c7954734a5845556f366647424f734a584b6f3837536273746e5641584a35305553343578677251625a7a503749476651786349535a3968384871682b62344567356662415143326742767a7868732f6b4656704439664566573663363055313264425a547258534e4858626e526e6379684a5339424968532b644c6668643748414c783571744b655839614b6c5a326e37644f4661496471614c726379476649684246354a634d7372733463303263366d31664b59306777416f39344541304d4a55764b6c742b746f6c536d57643932635675626e544c616638414f6f785951626f39356b75372f466c4f766a56714e56644a384e6e556b31526849355974512b4b5645753254767746772b64612b4a58616462534769476a513046544c44557044342b724e54564a4a33544b6f424c35314451466d52356a457871467735774e6c6e5465715a4335426f76624f70784a6a346f31715949715349796d61304a6f4a316a54397261674c68684271386c3958312f77425239622f756e61304751767a44545a4c45352b556864624a2f61356336357a4c715a432b774e62366858377a6f443367425469356e384f6f32466b686e2f425053464d666338615969516b706578515071306c457168743262597a706345314f4a7a754f46522f495039426a7077544d4a544f4e2b7a5a5063564930585a7335364d716d7766586b6b6d706a4e45362f697149546762555a4a3642687a6c7765324e33416b6355633658796444507a394a527a4d646b7473554b5a655a2b6c523934506d7276306d737148374536316d437157792f6f4f4a4d794530734148506b4b3664415165494d45454c6f576e6e63705177416c556c58446d4e7a525753382f77435450346d4e5a68396c494f4d2f6c6f557a336d45636f6975627a36417a3038617673347949584a486f68444b7233396d6955445755435355776c3871567134716f3650722b355365676f2f36426e586a703770704c6436456654625938464479787370444f4a4f4d686932506c525973645231334258553852764c3731426533394f535953484e6b4757366f56614e45364d594674575261644d62576466334e4c3930766c4b6a35556c7154706d61484336594b6d4230777341523530412f6b38334d36427a52595642364336325477794a70755a7a2b55636c5765564b325847455550525a6e6f4e6379767338576c4d352b382f65706f564a4e6e366331716a30794f6f364b482f4147632b613751632f714c61636436333868344b48555371545a50794943424a5466663630474a707157663957333238512f73386535426f542f755a656e554d724671304963315064414a616a73366b64446e6441776e632b687a706b437a6b7a342f7250373058422b317171486f654b51776c51757170725a43526f77364d757a3272496e756b696e7a362b4b47697572686b3164526674674172695350534476654568497041497235356332545153366d7038682b505a373878774f312f4945794c4c5431663475646569685a476d68776532376a5841674f6d42674275424b322f4a616e6167556a547233566957484f326d36656f594739314764326f753646444a714f303252575a6d5a38764d2f71637535435a46744250362b62686c3154706970303565313638424b563432763542504c7a527261764e4449305866596b524c526f72375652484a4f3373385876595538533534463862776c75423135554f63684c7545364e3161786941643862386365784653585a547466484c4f6d6b6d5a4471737348734f6a506e324270714b35784b5a6452715a3873592b333679696f6734426853627a4473577457593851445767732f6f35555778724a312f59777448562b5044754650476e7042707a52547258377471696d68654c2b6c696c307943616e71564b2f7864586f42756b6a5762506e317a614d6b2b543745766a7137626132664d71553353713330356b6172716b585566614b35534f74513536326d4c6164467a756b4b36313238646f595a73417a364f6470756472337750795167624a716b696971492b6338646f726b4b6648486a714e51485a637261506f7441674f7766386568497855373450702b676b474a6d46636f745133496a5a6e523556534f74562b2b5a6b314b4841736d6430624a65454a574c4a55783836326a2f73733537326b32772f3658374d67324f62506f352f753073355a7864705859756c4b3833585a67304a546e6f44526e79777a2b7935646831667837754638464a544134516343416f42334b3774764c6a4f41476768597a5059334d47366a58474b6943724f6a314a59675a6f5a585576654f4348326c4b7379775872574c61427442687154497778452f6c2f567669342b48443966714147666b507070434d3833756f764d794972564f336b794c54413752637479325832356557714e30384d36626d7a65777a34546f7a4d7131646231694c4250786d316179314c394b3069724e61466b75534a2b6c4e59446e793479524d635839753555795750573972526e4a4333332f4d524748797047742b7a4973424b376671685065716165656d505a6779583979527a5a4f50373950546c557138614a5746514470617671394432416166633253616163703349734747336e5a724d75326d434a534672356e3534313841654d50542b304d714c6a4256686f586b302f486d4b6f4e745536327073636632352b3943774d3632744d2b4977304d3359314774436e6144462b414d4f6654774c764a7a5a45346b4173696a306c61467a422f6b46365969396f7a476f7a436c4948314e4a7566782f42396655694f654d3554355a4d3941304f5650577a4e3166474b572f774170516d5256457136766b3679754636537a31792f5653785a544f3442366f2f58506e4f75595672634f6276674756342f774b515447747a546230704b717769334f68673666554a626e636c6d73756d4c4446554a5431706a36694d50725730675465317a4d2f6467564e6a70555a4d703137774d2b484a306e7a354b5a616e327a38796c39655a5a694d4d32304f533736633379427870444c48457a37494f6357676f427a4d705766456567563866646d566d6b64416c716b72597a46357246784c4e7a364e67776e4a704c71746f487642534955682b6b777a6e53397756314c6a6f496164382b614a5561565a4a7a2b7056707776625841365556415464624e666e314f36754772767346763172336e39616c51643550434d5a6a4f4d3851555a67353073324c7762633274372b72684b382b56504f4e2b74334c76664648486b45486250707830365263347731714f79774755334161536e3549492b2f4c306d64616a2b4f6258445347614f5443696d45356a5369696769766f68316b4b7a634f53567966727254776d307670494b6150614c4754416875557879366c6a6836794c346b3674697745555647366a6c63657357705873366d6569724c6e756a51376f63454576357059386c76564b736f2f3755563652386844664c645063746a69676e6670426f6b696c2f4f393132342b694e6b584f4e5732334c484a65655450536b7172464c64544d327632474e337561634e365a414361526e4974412f6b6579316b5942736e2f4d77366c6c7462317836714e694161304d72304d70634b7966334e676158782f374a7a5353564762676c2f6977615536737a504d754d7a72645751736465375579474e354d6c584653682f645452636b5a59696f716d6b3472706659434e54666e4b5934776645384f506748766c646d38696a543778483851475044796d2b326938655a4e7657486d35736c386c6d5a637059724669592b2f556639656461514272324a2b795051526a75454a322b596c656250486c31325238526a68504e3541356e793565494f646f4a324a4b544d2f6a6557666f384a4b69572b74756b43727a6d647a354b2f5936514334474a3431546e5842646d426e4a46646b316d6e4e565a7133503138795862652f794458483453644c436d3456494136514e7054456b6e554f6e6e4567504a424b723536366f70637954626e2b7574324f755561564c546a7a70656f45575542537a634448386731412f327964724c6c342f39535a514239634944366c48354e4644794c7866594c4b747555324872593154716b7572334b6e5955656470576c524e5136503267584d3153352b4f467a6a2b73386a766e475a474d3865676f71486d786c364575356f386e79395056626232394f77677038424b61704d6d644f6c72426856492b6f50544b7064536b683334582f38414a553849467957426648696b563863543571724e584e38626a683374436765515a505937722b555236306a547a6e6533746b39476c563872576336616764384d39596658635032516f3779426e6b31326e6f3647362b392f6a50656734637a71624e517471665336782b526f393176497671306b77385078344f4a4376746e797653747770476f6b76564d5937774f386254457971314658497634484c69726a6e4e692b496d6c34447a6670796f5a5136644757786d4d763372644170616d4f76415449317646314d33375569375a737a6d4c33376b2f64636c66557a4b66494d33394b6b70706868313875545530427a5a7441577969724e2f316d504f74623251426d5344554e714a4e52654450444d507669653734706e516332635479566c6d6379535058796d512f7874657037735237486845683933316b3645763761316841626f796b6f3933334f7a663148484f633850314549796e7a5a7035735a634e4744444b464538336a71653539634d536d594941725873783363426d626f6143364a78596167483258756363636f4f637735466e527671685a765469765238683163374c58573372623653753167754a65317049716876304f4253556b3749656a377567325555326d7a363778556c49456f744b6259576d54556e42304d7770734b7a2b483147364b7a6c7163764c54424a715a7646325a4d7964374a654b3655756d42314c6956374a7a6d616d4f376c774a4e6e5a364b627450767761632b59324853595347766f41374861325978566c4574576870564c3036425a6f552f713368416e2f414b564a684d6e6e5667794e3966454738324c52364e2b65505a687a5a44633947706f4b476d5048444458636762745053546449476c5a7a53716f575046476e37645635304377457264783166326672494e323558316c7637567836577279305973343561724e446e4d6d424e68303573716763415a4e6e4d2b584e612b6a693048396253362f34766532687337336e6b4657434d5550517062616a6b3273384c666b6e664e6f4f6e6a6e5350796f6d34564c4964414e494a566b784d787353752b6d50374e34642b32764d535874637732636f7152374f785630533571567148534b6e51526179484765414e7143714e33613874636b764763547a67425445526779637a6a412f546b51327a746130786d7a337855307a66623148496c356f506f644c382b6a6e30706f366d7046546b6577435254535a6154527064384b71537242744d2b33517037376673716539694b3546567779497171653565645a4877565a6d574857543838677163784e712f6d6d537579696b43616f7141593665516b56775649624f336f775842526b314279593753544d437a4d636d56746b394b352b4f443550737243616453544f67424768427542443067434c6d6c4f2f71614a597742326e5a443855503078706664705231563536755551536f5a72546d7572456d4c6f4e2f366f677049544d48346a36424a307a55337457356d5a564861334c51337154544b6e37505a6444504f75726856456f2f5a6448644d796c557948562f78763841372f69416a6b423357536d4532486d796f35487730562b77353031435672526a7a554b58305a7a6f646c5574314b4f66496245786d466b303653414676455151714f65485854666d69794b4266633352617a35316f7a70514d507566586e3442664248594d2f302b69743632396233374d3646566c3741494354615a626c6d727270554e766a6639327275657a7277556d4f632f724861796754595371394b7868554375707272503048436f5944467a676e514d2f56365a4731726e335331506a737a377976526e79614b4e42396d6b76466b5a7769714365786f384d33487771597734505a67614c5a6761547764525557594b3942666133422b785658626e366a337430657778434f7a62385468756a63764e2f77446176363775676275417a6748317746316f7a7075533652444d54526a584d6d773039366f7061486155596e4a5053504159494c2b5a31615a5a675247415571567850796c38594a6a4a547845684c6b30656f2f58784d5231683434793567346f3266782b666d746368636242646e36544a326930306a4d36673274495848482f514d412b4c357432434f795069453532504367526548307a775252517a5645793538515453696e556f54534a30427a33556f64372b436e32474474325445506579482f4b48446f4a376f4a54707556444e6e664f646c6b2b7a396a49564b37356d555232543844723166434a755035615a307a46304a4b70356133743671742f7a4764483056636e4b7576736a31786a5043505a6d646c692b43643374396a666d5a79622f41442b6d6277615351594c6331346f34694c71556e434e6f72715a637a516c726e59566c4f6657704d4b546f6e59707875703439706a372f41474e5a7a746335482f51464932524b6d514865424f666149574e573858575879544d3750503841626f667a53344a5a70726e754258433658782f636e45786d3670774b44396d7a4375674657766c71424132756b48716334344651676e33364932394153596e50374748374a6e65716e2f5942316e56556b4a6743715958676d582b4f46355265384e4b6a67486b69494d614d7032484e50342b5376707253354c46395763377a4958657a684250377a494d3338706f46395a525a6f4b342f4d6a51762b506e30613055755247357a2b77644a6135334f6c583861334c5630506b545176347a56336a67425a2f5738556d6845337464317475764e32354b6571375246596c6c31777645334c2f32395a56576b5435772b676276386b30646b73494532425a6f50646f71426c43737a504132716354507561436c424c714d796f35305179547a69695763686230574e615a6b42696242516b4541542f7743677169584f4f66547962626b724c4e5a58504f616771594e5447702b47777056666139714569582f4a2f4f582b44752b77444b5950306b2f2f414b697165777035336c6f73446c385848384256553265374a5969446b6c414c434873363558456f6a6d576f706567726766366a63424b66506479576364536a6e653152574c436c316f75637071466a565259685a5a363354367a4d3071694976736c376c682f79307756304141504458583241626265504b4868726f5a545964476569796d72485865326345476c514455696b682f536b2f70505777423732442f6735515a555869303532525443437668753539683076644262714b796c524d6e4b6a4c53595a3843644b666b4166324337657144714f4447303541647a305276527846696c6468506330534e7a3953326a334b344e565539534f5a396863584b7547434e61466454496b76394e61525933763176364449752f73365035444d5738774d3561786f476847664f43744369565769766b31395458582b3667464c4832396141653432734235632b4d4731734f576555554d64587452565856485656334b6f74653962315656324d65376b68642b3939707769484f726e5148316e64366c6167523263423265684f594d704a707036784831726456636a324d554d6c546b6a5975564c382f725a383047555543336738397151632b6f654a5a37657543534b55544658316c4577356e543332755a4f4c2f62656e56696f675167512b4d77304d6c67334f37336e566837477a6672347a4b52514a42732f774277535648586f30563657627738314c624a376c5a31495677652f54634b66396e746e636d71685076597276506a53723341627570636b42594c4f7377544f544d3959797a332f77416279615655387a69716d614e7444475665776d666178656539726b7a6d5076373133366a2b456636427968636a4b566c71302f7073475144706c3155515136444c6261366f326b75684c523451756f545141646d35306d48534353424c4f4b6d4546574c6f3665627166514e777247782f74684f4b617333716b59783079493272492f6d5579354a39456c7545334a55347a425a6c2f514e6c5866795861475545786154586a52617056525539714c67334f4f384a7638522b62505855357a432b77667653384b53573152386550394151616f7071632f6d4f6e4c4274335454564e4a4764796b71363256523065397371685954517934314637434a2f37765a7a393063554851444e635547692b4d4749314c44564c4b6c6b6d64456863632f796a4579454a724e495a75646f426b617a4d56492f596c473877354d6e37613241677132724e36334d55684b536c6f644b4866744755774f6d64517246694d53576f6c3043786b50514d486b347557664c4f48786961564f6f7a5a566e492b75776c4a472b69394a4f302b33684332656553746f61566a71625062786334536a51727064346143443778536b7449554a59446b485764626e4d635378716b6e544b77684b68397148335661692b7464536877473749376f53444d37356671534a3537574c4434314e6b53445a76564b344957496a4269357763785564724d2f516962547878546d35316771346d6670593745643633332f766c346372704d41436d59457755314c7171497051576d423146584b4f7832304849326b486d7a756f504a30304f6c576d68677135386f4b412f6837374666366d41487965496554497365756d496c52725232704e695a69416574646e6f587149496d6635536977666d353179546e4a5079696b2f7267307756654b322f56636e5a65796a35714c4e4476537266704b544b443570536e5073504f534d2f5674526d7730754d334a364457716f2b65722b674b7258586f74714c4f737370514c6c4253757831765072537347345348344c4d2b394a4e45484f6d5772726e415a586d627956396750654447577270526f6d755a324e31465047724f716e5135704439354442565343456168396d594131436a6e324863536c674a3466752b503339444d4f64743770565231565858743077596856456173795272326c6239657559686f36784d2f77426856532f683978755566766f507676347164495976644f774855614542726d5348552f656d516d7038644a542f414435785738495449714535344d417757596436796c59696254614a6d416b4f67756d726b79756f764a45384c436c737a38303070584937522f53587a46387678756f61766f6d504f46375a696e4d2f3858415946614d4e712f64544f6262467846555042465531694f5373627146316c6d74546e67786738577535786d7269302b2f2f414f69373566615241793934396c686f3564536f355033705755453961304846546c75517830565154382b4d6857357746577a68394172424f516962386243426846524e384153754361494e4e644e6331444a46555a2b596c4d576b5138745075624769636c4c4633507272454663457748686f34664f663046612b646a564e682b535a55745653786d69716b5641377664564e746b7646786a714e5641612b4c2f666332786a4763616b6673484b41463964534455476b657651726d4c567a5833527571707974537a756179765052342b476e784a4d646354393272355449632b4a7a66754d6a5a786638327835673772512b2f74485873342f6b4a6834427662567548347a526f564e644e6d2f4e6f324c2b4377646c63315061756a4f32757866793354776a67336f50394d54377a6358446f427767464d54584d353775384f764a4153317a64664d7a55366546436c505831796857363465324652612b35632f5234656b4b786a6454567a696672454548766d544f7831704d6d76446c373444622b596d716d4736376f38484f2f6b77764b63346e36416e6b733864745256476d636d7359372b4e6a6e636c664f64414f664262545251524c622f5667302f6b336b3356743746577678724b5a51433877633955675663314a2b5544666e364c426e53775542434c5a366f71524f5a6d6b46526d54702b6d6f4746666b513136496a6a4346464a53777a3654354557554d7a75654c5453385570755a6f7778726871566f75496574614a6879576c2f766e4a63356630474d394d4376494a5a536e307649362b5171786e6a6b7543464b4971374d385a7a616861324c7a6255387a32664d6844557543576c522f7569616b2f5942706d6c704d30736c6167712b70705a6b7a315a6c48585a452f46793235766536795a6c6b4a7830637a39426e4e43345345796253492f5468502f5a4d45717a7647304e6b30645141376e334b736b6d477161375673784d713070566e6373706c4f36466c584936702b6e4c494a4e2b7a396e6932544a3937475a3374317267536962486c772b317a4b684c456763574f2f576e357067715263544655627561564e74576d776f374533564c3435374a54536f6e4478424f6d466849704e706e71427650664337577a7375504d6d6b7553616e62707961504c304f686e734644564966563162435965443969552f624439595567744b675946494a33454c746d624a6d455543624b4e48566435416d505242386e5062444969797261746c376e526d3561464a6f6f374b6a6874375058427853566534332f55723866302f55534478507873444c74336b777a61444d6c39675074314a2f6f71795a62476f376c4253546c7a3153734563325532762b30587647574e56436c434c766257312f77414d69796b386e316e4b56342f73496765552f77424a4b62666b4a2b4e513231656658524a4e6d517137564c394e4f673732674d387839642f776b7664596d584d53746b487976676a566f316e3371586b4f696632435979772f3432746a36785272444a397a6c30317a2f616732473034784a7135536e4f6a67445961586771325179627174526f777a634c4b464575616c4d78527972376e7a5436416c514a31616d30384436796174306875627a767a786779634430574a73376357637a566b4c41586f447454386f736644624e4b327a4d716b3044343078596e4e7835355748616b476341724675454b5564486b667867372b6c6e54516e456837797a38386b386d2f646972536b7a656447762b566c707a43496c6e4b6d644b714f724273785073543753644b4b3654434e54655333564246466d557571696d6763537450786e5055334e797a6c303642706e533569514f764e356336526a654f4c36306e592f6b596b51556e70735448574d416e446e736a665978616379684c585874544e524f562b67674563594d4f6653325965734a494d684c6f496c4550746d6d6354397767524742624e786e564d61752b7278746557755741516674306149543970475957544c7a3456396c5a4a7a697162514d6e45524f2b6f5056384a59434b4172444964444c323937714f536c71667a484971726d735474545a736567583249652f506356564169717867735654375a79584d6c4279504833744f312b31496c44632b6c444d3257574833706868526e6f55515553676b3549302f5a5a4c54504f73633133574c78567969584a7665574f7a67502b64307a52714957376c51354354706a6254557378566e684a676d69676f51747751364537382b4d2b667a543749574f56775464645169787844376574414b414d635175545566577963552f5130382f4e7a3375726531347a53556a4f313563477856533073596e504e62364243706270715144716a6d5230677a7344553967316b6c30337330516e5574306c4a4e732b47624c5a70767a614c484c5459376d6f7879307a53444e497738325a794774574d367636426e3146442f3343746a5a70345a64444c37546e79357a56427359773161755a484a4d396e467833434e78636354546f352f75396933413334663045717a4d7673664b5550414e4c35307a38445a307231335a386b32677156367232652b663746326533363651452b6b4a527a522b7a3456704a6867483679307846354a704c6d637432516d76642b7a5052336c75667151734c4d6f4366464247617a6b3969656337384947723254306d6f6b67547141425a325a694c5a4238734b6c484b444561747a565546586e756e6e573538374a706f7858376e3630644648464f6533704e415854664d6d634443322b336943664c67307a343861493056636e514c516f574a71694c4c763967523032644653484a624c716534566774546b665a41414e5155416c4e656e6b466d426c2f3965663761366b645131526e50775478754d797170716d5a4f384a46796537504b696565583458324e2b6e5048783676716634436f47656d587a78485859446671386e6e3732763639416e4d7330336436567638414b52735036507957574e555042544b6c4143626c53554a4d2f774367683532517861537a69756b774e42616e4d3476527279426b314866497a4b4364734a56647154594e55506a357450765a474e2f6a5965757073615945344d335364373264455a55736a6f686c7a382f2b504f39745373763439436c3259727070574656442f70497142493963414470424e384467686e743442332b513038654e5442324b744f57495a6f68573256676c573037436c7276654d54474b6a4a5774524f78524777436e66482b6d453170696e2b72624c65414d4a717479317333534a593671707546614a2f41764c68586e565a2f46514b34632f575a3872624c4866474837502f556b762f7768546154714a426d357348425848686737733130456e38796761587376484e2b37524e647846476974732f384145386c483748763677766c5377464b6e417668396f52727a326c7638584e57305a36702f736a484a5536326c5230707373712b30393879744a4d30362b664c37676552544953627665522f4d4b4a6d5770326f46514b7a5678496a6a58773573574c7449706663656c637864793449376a317755326f6979317a786e7145494f6e486a7551433533654352576631734a4f7a5274767a7332655a6167374b5a54617476432f77424459436c736c595434716256667838716c7363354b707546776672544b396b7a5155484d65547a2b776539316d4a2b4b5851795274593561757258384a7a725246372f35533250724635375670634c56526938702f593452346b513972546377477933674a594e76486661347764384b4d2f4a716259454e4d7336654b346d466137527a2b736e43794e7375537345716f344c682b4530736d422f733758554c626c55484d79793962387951563750615156656c415267774f36564a76556d3270415a4d376147352f4664584f667a75522f756d576632512f6f4b6e692b4f725258503231586b4b71744c52433743556a4a7a73695a627245387a71347469784d3562564379586d4b543154596b69314b615a2b673736344f36424a356e5567795658644a71703838422b497762747279644f46474c56557939707a4f6d447873666d7571366c4c6e4c64414d664f502b335038414535504f4a626f75304f774d4a2f666b6d6d363661784846387a343574435075613168672f704c374c51796368634568754176594654546f5734685359612f376e2f6b33327443587555707259367a3479546a6f38733646773537725a615a62316c414747366a52756a3577317a4f4759456851595273392f50363272743437517a5469356a4e524e4177636638464f63544b4f30726a4b5133554a58724c4f70613342524f5652614375396144796d6d6a50715a422b79587662362b496b2b444a56506c614f666b497572736b6b6d7032586369733559474f656c70585852446e305a2f617039697638416b4e4a3377306d6a692b633970754377426279757033435277727a416f736d6d304a36754a544550614a4a387a395a685461563267436363493364506a4f78304a657071566e7872456b5455714e50315676342f7036675743347a573865747a353158614175722b453836635a694737503173314b61365371614c4c6742314664446d6e6e782f356d6d66366c4a5538717a4666354773636d35624478354b37645a4755554e7a4b4b644f31703642437556624d6b535a582b697157686e5439774b2b614e33735478544575743848312f51664a2b4e5a5a395342435174703647697449792f366747525364444e674362474b6c6d656c74476c634476716b4a2b34336f496d2f376762734a6a49543672594e647245397a6d7572694e675a476779356f7873592b55704a317a735a6c735537447a7754796b4a7152616d75704846394d4548684d596e416c385049556f714a464f686b75432b6d533367684b4b57414c6f2b6774394b584e364f6f6b6b32716d7348366f72634366654e5051367030414c706f35714e4c51724b756b355a696c5630344a2b36543949636968374768554e5866674a5575614e61365334766f483746665a55305649644d784d544d44444f4c754c2f6b624868466b686b6c6532442b536c6d75726a595679464249695975334c6674575a67713678684f706b732b64794f6f636266366a723568336c4e52705a306755535a2f614b656656486c55616a6e69346c7a7146514e50692f316c787371736e4f5253305355386d6b41794d327149757a4d596d596a7544734555425370485a2b6d344858387a77783069466872796f6267524e4d796d6879364864397954533732634d7a5332525037343435706f44764d6e70584d746c4d446b50637467734d3964732b6a58637137365470704f52537136786e4c4f4d2f58415575735342445569312f76524d4330597749685256537341596d6c566c7a4f68584d417a317a704b33542b6c38666579314671642f5a58462b35665a3973303045686a6a59474d706d637a575851426e5553725432636e6179356b76645454514772656f5a382f6e584d6b546d6b6e67735a3335536d6e3479666a574c3972763443782f4869657a4e717a31705a6c773539326a70534856467247366350354e694f544c2f6a317250367136325439416c66734570536f2f724d4d7043574233506c5a4c5056556975684e59646e35784d617631777151716a7936724b5a3331495a5a2f77426755723578726b4a6376324e44374a642b4951642f36445a4c4b714f35384969766e55615a73624330485545464948525756417263656a5376344255775437325a5847754d61675830454346375872367730615062456b3961586c4d304f363269305a4853717165542b6b505863596637397839516c787350332b7833394239353838775a33612f7271516d52644a615349474a2b49672b354c57357344423466787230732b50342b7259594b4c2f326935545765304544485152457762783470565679315069526d35634c356734746336576578394244394c6f4d49656c56517350684d6d2f4b52476b774270435663374866475669554131563262546e6f57584b6a6f4b5763694c2f744d436a4c63345a6d70574264377a715159762f375253414578457159514c6b6c764a744c6d6f514e617a6e593432755a383044326b41384371715768507a4754466d376a41476e7441442b3347413770314e34685755396a4c4b706c55586e31316e556358596f6e6d686d665158577770613463744a6530502b734a6f42494b4a6a4b2f36414d77552f53705a4d6678636649715768397a426f6433704f5848486f4f67542f69356733664a51305237304746652b7350684a496d494233755a326843366e4679506d6a5478384461394d72506258397359714461356e325866595779706167563151632b736c58425a374766304548436955596b50356578764f74364e444974427943426f77734f32682b666d79386e736f525a4358732f587741517a4d396b34504e7977416e4b44413046746a417333527a356d3865722b516e6a362f676843464345784667634767667131543961396378384d33542f4d6155646139514570765a704f6a3174464c2b35466f3574527574667155473145495558544c3553626c7936677a4d6c6a4a6e65756f583733487a69514757656c674e4e48326f7963752b696952787938596b6836316a5852486e396364413748386373654c2b6b6c6c566731645837663243416158652b7833394247304c63353666336e50755966445055736e304164633636614c55356c7157576a527972573045527557446937326873374f4e4c354336466e65677172516f594a386650492f3664614d365577566f64434c325a465457564f7069467733444f4c70704f4170664b41472f77437748434f614f6d6743576a69614e2b6e5049784d6a705535637a7172616f75465132626b704e74787a316c705537334971316b6f2b6b6766304b5a6a53786f756430763641313470525652734452586e447053393065327272416c4a584949497a346d504d4264316a484b2b4e644c2b46376d2f7654616b7a45414a56414333354b6676577365353373504b6e354e574537447572626c485135796e73722b77637430636445344359653179666d2b475269564f702b4d47716c57636f73774f4f483255774e64487a34583154484c516c646d776f4f71304a317a3056436b6d702b5a436e65796b75744f4544706e70434a62725276345462586f53466b32745537506e30757133476e78476b424e4b74797a51763366795467577333427862414e584a586d54484d4179712b2b484a564d7672586671725746476464467968383258397179616f56665a5941777442776c796156564a2b354e6a524b6e2f7079684f45653277304a6f316a4c794f39355554726b366965576333746c5751465855644e36357462514e4e6b58536b754f74344859514f5a785658734f597833683368325545624f4c686b6f6b665736364d4651536f6d5036314d2f557a366f7649446e6e6a6f5472443770774c3458713544336f382b50744543732f55486554333549717444536d474c3454304752352b66434b63784935756253416c78665357744a4f7a426e36386d6a63373975614845756c6e4c53744f2b59456552436e326532765142456a4f3752737975435339476564384e326b7950337164787934596b30704c34306c2f67556653424d637766706d676c4235336574386c5754627235444e5848616a703852575a58507335732b6c7164693039476758342f7961746b39623670326463744d7a666d467a5a782f59474c53766179574e6f67374a3044442f414c4d38456263797967646958535247556953514f576e376d546f4a34644a674454427a667369306742484f4b363874717a71727a664e69517051317a66356e7572667178564c716f674c546f374139667341744b50713073436d7361657931367142393067664a536e616e5a674c2b535a54746e4e375443464a4553467166706856505034315238364952434f5468527454566a4e6c576b6c42336c4b4a7073704a67734841387a69736262544869422b626d5a304f5a5132796e516c52424a6f545a30764c354958797568726461464b716b724c3236456a6b37445645716841544c71644d74424e30476e4e6366664d7756394f544e6c7a73725235735072686c6d7a34646150496e79575a56312b5131674c4a774f6f3755576b6336757550674232756e6f304f61615756703259416a4e55724d685935694375492f6a62597449496c316456577035564733503247497a50497230584f62526d776b392f496141724b797833754e4d7a535a59437a4836646b692f2f564d392b706f577a724d6c56617557314b72724c764a72467758784f3743766b3862456a3766325248712f705951777653796b45664c315a2f38414474632b61496171744f4c334d684c523273736f36616f374b522b7432576964327955396e784d53787978725a71394c327a4a344e5252476538447354504f314553387a4861716d546b39657833624170393956664d334c692b6f4c4a385148554a4c4c2b5276524470334e2b4737336a326366593652436f632f6c6d6b6e5a652b577250324a314e356e7453392f6a4d54612f496275374d6b427954384b653679346c7268344d33457471397468645a37366b41446175716d79627161386e4c75697a354e537a554c4d484f304e4b42363764662b526735524c6f644b616735324d6233722b4a375343653835397737546b344663654e496e6c384456594e656c722b4e78316e5a50412b526c466c4c3837637a2b536369345a63704851623969464b6c496f5368425a74347963536e6f385747753371666a345066412f55545131506b5a56427146554b415a4d6d4d3972596d3478385133626c686d4d387432343677305744512b62374d7a35515652397950756c62546d73523344584877547875743032336472737949594b66427559394f625070567231726c6752563657694e4f2b4e46453835376c6b6462434b36594467512b4e342b357637546130386548544f41513950306c755a336b484e66557149492f486f755261456d71414b58346c666452693261374f715a7a727434794c51524976394133356351705a703677704d66366d5a78457a3441727a4172526a65634e6f6e6e505835365a74684e3075694e2b645137484564444f7a6872333961713254636d4b367274485352794b696159302f71734954463062754e5a384c434b59474e58626e2b6a63573674643965526d323672724d7a506a7a354948624b335a5858784d776f314f586d6d3461756535534230416e6a6d4c5154524f5667527a4d787a5937684f764a376649716e6569486a64692f7743545a73656f483273313265306139356a7934784f68734f6b65516a4c7356314f79304a46776f6f6d476d6b365a676336666f52474f6165345845634a596d74367242714272305762466b56484c5636462b335046396e49592b73764761637663557a504c6d66506e2f41412f47684b71517a542f376a766b524e4c587273396442707a356e6a5a47727372786c36527a32373332734272385051616a46315463795078364f745335732b6b30376e636d706675355a612b644c7673365764503841577170467567365033654a53522b6e5568536274717934756853346449303036374e364c786373743073766b5a4f453832776148496e587872756d304c7a4b6c315158766b506e4775336b486a754855536b52617a4e7831465459464a797233716f6c7a62353154737a3439696a502b545353375330732b36707a556d5230654e39373048414138587457323735774e312f546a4a6b4430346c7a785667394d6135583475313976426851556d6c51577a6c7265744c452f7839546d546b4c59535759304f4d66593072564857475675732f4d45472b4b35617550776a7a70342f7744747a364f316479462f326a7a69563269576d625450566e55345866587272755359326e386d6c4e7a39766f537071494542376a4e33356e6f70796477714d3352726843312b6b56764437712f78383362382f51725334626135644957794d4349584879524b70785833356e4359624e2b4c5a55666a5763724441345a44306136645379515864305047564a4d68315936476f715a492b79557674517342375464396577466a2f6e524f544269637a306e6949664170493642716e335a677354436d64694c6536656144696252706536334a6d2f6a724431744a6c79574a586f6465597370675a542b6834344b32794165566a34666d5a794b335a38697168666b474d695357662f7348526f4c334a364f61462b557a55392f5965314951586576463330752f2f436d4c7250722f414e426336593449383246503864464968737a495649315a73354f48564e65413677615656443973673867314852334c42636254474533664e535859334f35386f52626538556d636d616641684e3166437156446f35744665596e76304a5076596b3975446b547454524f33517178314d543958685571736d39347a6852383073524d544759416e6e6747586673594768624a7a4a4c4a3255775054744e4c4b627177373264646f395846666b7a69694e5058564c625077694f754f6b7a49474a4764366e534e716d344648384668533479594a3868434d664f74675a4c4832655455616c77645a7253544c7154703166637a786653522f4831706d45674f5239636b56343775614a74334373645478484c3062305663386253485a4c4775526f5965516f707162546c54466e57756a30716c49496931485a4a54554d345136536f3267543532714e4a3662362b496b5746365a5a2b4c343134393568596d57692f345973654f4c6f534c524b6831416f7a366a57326733574c63364b376a3170595a457653594b6e433065482f565a764d54694f6b43346457644e4b776c3931456c6b4d592f7852726b586938555935646b72535378706442507839715931676d6161654a4e6b6a657039764a2f367a4776666c4868474872622b4a2f4e5a6566446f50766d7a5a38535762737337452f416d693231464e3265335130453945666d6d426250596b2f6b4f706b3148477a723272504c6e7745313176546e7833786a597862734b2f774167764470564273515561776a304c4b55786e6f6155756f73304a53754c502f6a77704b68675a6f7a6152664143654c636c4e61337a4f4a4447724c6379697a5a45346e6f5478744e584b70676a6a6d4744375361356f326b774f732b4267364c48635771592f5a542f414a685430586e2f41452f4a392f7549397559734f6c6131764f567a4563756650396d58554a377979327871547766735155513033445064516e74483230723743326c553731645857354c6f72624843526868654c535a6b5a63524a6446343568704451316e766b6f645579714a7272434e4e434556486e304a6c737a4639522b75544f6963785a302f586e4e51587462623835447a49794b394c79367251324b7164366e346c6330613036476170474f71693064434d4d7965595a70357668597751414863714d472b384a47542f3932656c4e75575a7233426836682b6e6e694f6f2b5846306343533351457a67354170584231646e78794e476c4a324e6572646d6b3979657345546356464b56516d667356524f6678544f69737a50574150384b3852385779614138663863725a6e377944643170613130345566425650704c52564c4f6977584f534c69683549547664617276314259566b33764279307a4d52614147395159705939364f3751314a2f7157616566464c6b436e7136382b4b35424b353974656c51744970616e5573496c3837535955365471675a4f505a7a37617653506b4b766a3851793350786956626d5474584d6a6252356b2b66515a72516d6b6e544e2b6b6b524e6162473655397a4767356c4536724e696a5157464c706a4e6b6a626630673861326f2f4648354131516153752f794d75496549354c6336334a6870577650367535477358574c58386158636e6c486e317876642f7149312b774d727a475938684850557a78565156317a77515875556a6c6a4c2b5a4b55325732647256566f587953326c70443248325473716f446774556d67754433526a736e4a61546d746f69767945417a4d7a497a5538784b6f374e374378476b326a3944426269554e746964523032556c6c39736e594e576b43784d6b4f45416a49444243766b616d31743063596e6841327039495a30444e4f3472456e4a4d2f6d526e49645061656d772b313743717056784c2f59704c73714a66654b654a372b6b6847333677416d594d3739715257587137673450386c48514d6d58305552417a50647038674b6251592f7742746a732b5872456d4c4c4b625032366a6a4249422b67435670536450566474535a366430437363767744782b4e6762524c6c304379613438307568553234613335315879574f354a624c50784f78316e75636f515558304243507469614467732b4b64317337636366734f6c6e70446c53357667506a6b346648424e7a4a2f51734e4d2b5335336531546d55493537394a696c30632b467679733968474c5a6a636265734d6555347a3172382f306b66647248692b696e546f6b30752f52614e444f7968584c3975684a692f376343617141483637614a7957766a50614c68667742624f494e2b7369596d4d774b546e79497638417953656d674f42584e61384f3257306a52726943455844615855556948575a494d5773514439437454666c4b677545413030534e31714a6d4f3861696f676166544e694645484145306531614b6d496a536567524c6f2f643676304250582f6d58374e6c4975502f41497a2f41486e727747766d6b7174657468576d7377695a3262347032336f6a55703150482f484d51584d2f645633794655744643514b746962474630533538515536432b764a61757a2b446554464b723939376b6d3537476a7750732f4b4d347a38426f4f483432637358386774372b6a533631516937324b6f4a32564f732f4955332b4d384b302b6b4c587777366b2f38414962586c58544331794a446f504831575a4d4a4542703779655035456f46664f4d2f662b616a34674f2f3841584f3272312b736a59566f4a376a4b454b5a6f41566c4d4671525a6368626d736a646333704751734f6a2f72396f59777a5a2b7570663841732b442b2b682f56506a2b7636696c7648383036474a4434307357755a595332504872446253723575716d6f506b7156734835434f685a4371646f4c5437326e77684c6f617a4d52475a46345a384b6f35474233516535307364646e7a4a366f71306a39635163785650745578773953537665306c443733526a4f524b416a453842585868486441655556614e4a73516a5134644643567570396f506d6c73564841742f476d755169496a64377544316a6f2f38324278583664707164777076307531466150722b784b41643266505053746d53426a54426e4b6e43656274454647636c4a3141564668664d4c2f663367657858784a49653155586e4d5633523045362f4a76542b6e345650516c736e58633063316e574b4e34396c794f4c4632773336774d2f6135304f39705572373053596c77436657715563336136585836774332663268666f354d4f6d77455654654f324355346369617564536e4c534e6b55664a324c6f6c456668454863517344374748666855596d6e7366764f4831442f3076635066526e78674661505750307062744a7674562b75716d49585542787372466d61714354504f442b554578625350726a414f65305572647576302f714d765169475a5069586d47694c6c316a64356872766d4e4445574e755a6c476d5974462f73657049753479666a53344c66694435672b465954684f4a4e547546596364584c366f366232395a3963597164513755453047316162515848786a6558516f705736614669657039776a777773427846507a324747674b2f6b6c6c5858656e766a43523532742b6a366865427a55454d7a6d36496a5a35466a79543168396659555562695a384e597235396a33474861426e4c2f4550367253307a313677432f72434e62767043334f767054494b63754f4c3254642b3554455837596833323431726d486835354c593564582b726a6b6b48792f746750696e53666d497634355055374546686831383962377453634f6a59327831664b78565250784539335566593442436653466839585766542f66584d5a78317864757051454f4373656f63675163516d71716556524c73584b7964594d745a37754f397a756a307a2f5939466e764f674f667276757a2f65657641552b4d645038353137324b50555170764658504551362b6356325150714f6c6e65756a7a5246672b376b3573425a75655170345457392f72515476666a347a784c71624a6c774f70756d5067734c35744f662b553045307530707632382b4350744b634f6a33342f63305059736b74396764704862743876374370746a4f3073354a4b42375a705354436274434d36654e593871736c3275485a33693335692b6a4b746e542b515069435a71694e764b50617534735877334b746570756a7646336a363834474d374f75756a39534a6f4673464f62476c4a454b5a33664343546f4e707054377a6f34667334736157746a705045424a75566c35563562722f4a6532706e4f6472706e53796d4a343848504a636f42435269356e49703552417944336a7a3969516b7966324e74694d5978774549693571704c702f506e647a3942426b30573639624a44536134657064332f6437576143325a76426a7170735833704766576d343064662f55693250467350536d6a43665a746b37484c3966546d45386b616147797a41377378474c6d636f2b4d56734258474678445a673977665a41656b5039566d31666d496c354e6870736455716841744b717164624367544d726955526b737965363065762b6d502b56414c614d7950654a67533266497476736d4a69597a416a473734305a6a6a426a4d70696d54556f3238786f617130374141704a78593653585973714a514a6e36415444334c6b41673538587348343543796f746a676755544f645331785458587a4c6d4b7254354230716875586d766a50367441755651516334527448356d2f3761476b6646422b3273303836594b75553957626e776d796c58525a315178653054526256564b766769554f6f767232644270477a3248386643345a6b4264574b7063535467316c38495756614836516337684231715350534c6a772f304558316b787253736c41585a72334d6e39796c636f2f6f47682b4c6246576c62444459446339773642716d5264526d4857522f582b6e7958344c454e2f6a316a6f66415856733935386370706538514f662b675437676253314b35597a4e4f695653672f6a6b4779443242474f6c776e5a6f534558774d47676b50596f6c4854306736432b6657454766304455664537644a307a6d6a52465641667879307530343470534331684477636d6b736b31335757566652343832422f67715555382b6239646138447568343174725a6e35386e73463079346d773746437331495530795454724778596e6c764a43314c59356e65736133702b396e4571454f5545754d783477496e6d59476f33525937395177316f6b706f724b71694d6e61656a78304e306d68795652664534656a4d4c2f414a526c4d6a535941745333634e6a35434c504674685359447262387a6f6563577653694c34786e6e6e6e654e4579554f6f372f414b2f355336424c77464a7662526c556762484f6d542f5147465241625851396a4454536b2b426a304e6c6f5573685250384d327851726d6730645a334d2b4859642b30536c39626b59674878763841384a7766463470744e306e536e3854366c5855366650684e795a6161356753553869783062716d4d53557162506a6e5746437570357759795349644c735a6a47633841775a343170537030365659334264497a714f7235313945586551573745677259704333444330593531396c4979396e76712f77414639542b6e6631496863306246745857765448494a614b7634313930446f72796e6a474f6849386a596a6e626f654d485163675863503263486e6662394f4d4745456b4478685764536c735773367a504854463657576a56324e434b774a7853566b6d7067677a345a533679655a4b762f414950734368502f41434577457938584c574a62713164426d31534a316b4f7a32556f34765957565446547752345561577353376a4134387a4249554343552b397a6d41717678515546576e686e5a5459616670564a737066324e437336614b54697272686f585a49317955314e454f636d576f2b4638627857726f68484e50426e31624b6635536f6b4b5738315a3264617165314c4c486f71354c66462f7234417a68316454324262326b6c6f2f375079756631546842673643706c726e6e6f4b664c46326b776378644833524b79623938366659345679397a2b7563587766423335526465644c306676332b774a4a685a73796970346e5665365762504a476e50626d3250616e3365316c424a6d5a47485636426979397656735a333457325057664b4236616a4448527936665a6f584e6e576d5968724e6371416d6a30722f38414664564d746b505a55716c2b524b6964527a6967614d5358395a31546e4b39674f647943717272526c57776e4d6b70565442636a686f514e4f62504d78384371794e732f37585a4b4b2b64535a6e4d5a6d583761336e75434f396b643872566a3176334b307671515a52756d4851725450376a527a4a73643337454a3152736548373539677754542f754c3366737766626d4f79702f4a45493668317863646538757955396d476a5234453541707a4f2b305159787a2f6e425139426b7a6566552b7a38416945687469304b4a4d31413937464b42445769516158635a3255596e4d4666764c3966722f474e33576357366b6944394772762b66762f414b424a6e666c4e6a65417848366b4a43757839556c68542f6239366f616375393053766a4b48342f6c57444b52634b5448397a576533336778757864426448586d53523730394a795a78363276324d302b6962565373635042756e57786a4249314e575344533444375974596d3843646559525441743869787a78635648466f63596e48547a35726d576d4d7772506b725670562b2b6c59637046476f6746336672702f6f424f4c6a484c31756a5971436c6278565370664a3765386e716f3678562f4e4a44436237334871513941657234315a7544396e394e787334635a6a4f4f384564484a586174305846457559443936485850544f3773362f727938356e61467452494a793566723849317969503841705159634c67546d7151414f6579543339676b6d493352763747523936705a38376d735831644e6e75486d703865663255545777666130666c537a7047357064424f33497465536c5736505a7a5a653472374b76326c736b69616861643455642f52523055456c697a4a676b385a36525762334678353941675462375639706e5652386c636f634450436143756e36724e62363061536d7a374671717135526e72483373516154353046436168446f526846764e696d2f69785a2f6d4569716675334c7a3776616d5a5a39576b4e4f6f4b355546644f39784770715838574a39416773372f6839597768336a2b50705861557a4e6470703246726e53493575705179775a6a42534c574851786a6248616a4535756a31726e396163783075436b6d543079476d5a786d6364413931343667663841535a71575a344a462f563531304579336c54533864434e726a3866755a7a4e6e53574463316442744655345a7246744d5032317a494268476478453531645a6e3261504b5674455a71474d6433724231744a4d664a5532642b5a447071356543796a7243464a6c7a32303970617777726e314f722b616d622b522b4e31584a3777796f3648394f627461682b4871656e386675336937502f4142395569327435515952304c62396d6e2f5345317a6e6831464f5234786c4e5975675852685235444c5a4d53346e724c4a766a537476612b5a6b4931646e533344535158667061514b744e515875424c4a706a767535764c6f4a786b354374654c4e4b736e5a503869764a775a3875656565333948794836395179704f64707358564b4c415533326742555a712b73732b783762333069307830426f73476932567939586c38457954764470707a3946544d346d6e4c715476706c6e6e6f585137362b666b6d3150776578616a616e6a6d7a725376734348655159664b6c4c7264716e6d7a66637a3879554d69435a556464775a7930636f7064566b704b567a325757483161457a41714937453934634850734261747476796b5139483872543957476d5178357058335473744661767171745457732b437776495a653852517030524b54556d496d547a4f397a4b48484f747762435279343175716972476978733658783448465073704c2b4f7272664b7131776e516453493555794479664e596b4371735935736f5053616d7a63412b557857764e416c49654b3279354c4143314b394534754a707a614e485130715666666e64324f4848565651755269616172702b45484f652b4d49774f686855695a6c54647a6267686f2b46567250525a526e6355774c65757158412b4874535a61572f5a70504e4350367161714b634e4c6168664e305342514e6239586a772b525466627845583234745264586242583261714a644e665353444e2b36615772693976384167304c7a6e6654513657356458523778676b434d70304d6a546a53704a32726173523442616e4d727a587456347a6a2b55556f547871537a354e4b66676c54327253746e7a5859756a50783477305a6630706c3641752f595441613041437955366c2f4839505542546e67336c4645755858644a436e5666646a71327037612b4b574a703556384c4d3351566e4575664d542f506537322f46377a54414167356f5463637564386545695a6166697570343676496c79394848474971505942714b47664d48436679793077354c52643972362f5579705972764c4b2b64525977656f6b6e2b4557357a615a6e50664142396d586a74354947467432664a726a4a72486e7752326b457444614e4468746872577675744f546d4c56786e467167457751617030744263784f4e7038786e75525631356c797648387655476868387a38356455726f7872722f67526f342f34744777353073634c6e6e5630322f6f3573726a4c477544677a7656786e6d36424b5041387558717471646a616d6b577176545852664955715a4a6859394a6b38563669542b724f64474e594248376d4a583877716432726a48504765547a2b77644f384b337452736c3956574e4456713058767a31473972674744394671593769566c704e6370507652524f544f7a5a796130782f59366e37637063726e4e504366583142726e694f69433236387a736d3677304e6a512b584e7a423633565a583761455857744b4d36454b57657433365066656c53774346644e4966386e58644f4e766349566f59336b5057394c557974476e4c423272667135554f50664e78464d325a70523936672b6f55346c7333717338524536442b5a553152574531582f55472f77437a395a454e354656734d757532594e7a4878442f6562477a4f61784b4d346c637a7a7a6451705a31395435426f5566566437614a6b4f613533794a4469654444502f5767556d7965334f624c4f2b6137344d3055323970504b747a744c567569574b463963655451554f6170656e6c2f35724970672b68396355702f327345444758697074787a7a5a4b5a614e744374536a616d4765715452566f714b47646c544a36336a30366b4e324d3865394244514249544a5566766e456171546245343775384d6634676e365064576f595a597646743865744b7750695a5a7a75665a496c5766726b7a6f746a41663430694a665141776530476c795147442f41464f376c33434a6264726a4d584f6b31686c4a327070614b736950694832356a364266436b5a75382b417566794561795558516d713732436b6e416d6358434e67326b7a39336d394b5745567a687a45313530316f50655976683662706f704a465830544c324e496f61556a493334357247575a546e473953436d49612f447a665553582b4b31396965752b33462b7439766c4678555a50577a536b7137693136585a4453507a444c2f3541784249712b5a50506a53395472466b71517954617465416a666c4d6a50494849306951326430456f624e78552f7473333766434c454d512f46795a626249353036597446387651627944565a514a4f50674279596a455945583654366c4d716179764f3057372b3345576e47584f64686b506958665a726b54646369787a394c44315067346e736c4d7a6f42744a49395a517873684c4379714e4b65766f536245756a4c56594e6d7653714748572b73456a6b54345033546e6f6f314c4a32447150704d77636e33663841575655646a5a33534154773439334b6d4666306b55583874753651317675767254484e646f4976704138367732335554584c30484f414f4f645244316f55674e587a43364a694a36694c2b7148694c7068465171666f352b6c326a6c56484a6c7247322b567638414d2f4e3544547436484a5555545335715166327754443449314349704375594a55546d4d69692f496f7466433867794d6838304a743056686b615767637a644c54526f2f72576c6d6c786c6143576978612f646772647866476e496d662f4e33746f5534706a45786d4a46702b6c452b684a6e36795a4e4f362b5366516678697558667865644e51714e696c32444e744a626175784a593635546d3655396b314530372f414a557a396e6351564271342b77692f513259593630662b572b515270306b6d6a505877353048354638505a4a5735386b6e38673245666c34316f6a4247414b2f77436d376c387133674d7762335436655165536138334e6e3073756d7165312b5a2f50636f56424a66704f73716a2b492f70727a2f494d6c76556856504d54676f7a68564d3976362f6f4c32777347734f4e504e31317a5a4335723165334f577176366c6b394f676f5067675961445859544e616f726d4b36414b644252485a2b374b556d6f4c31642b327571674b3555327a6f5a6d696a513671616a5051344d345235652f503036563834786657467042487863745a556e475a394661716d7141495034786d76487561354852626a364533494a77437865352f485a6c3661743833764c54794f6a7043576b37575343577645523737594470367a346177437831532f7744335253584d7335634857754d4b3968644a396a757a7536453659475a57346e3951304d58376d725650336b682f376b752b7130454d4775324e75305a5a396a63354d4d6c30545047737931723878756d39655644474f67514a637171504f356e78557079516a6878756b2f6931693434774e78674b425a2f5668494f457831694b546a61354c4b4a732f516b652b4c53536c51642f6b744e537056315056566f6f5773615a793752396b71506e2b38484a50723364435476376b71455770786c4175396d56536a705a307371374b637359364d31386641304f68516c62436f436c524777524943443366376b51466a7a2b6633436b75636c7a4c5a6a6b664c657344584c536d7a4f4b6378565a5569514a4d56776a526e756f6c6e6a2b6f5a6b2f6c66762b757a3634464f386c2b31496d754d64624a4830437a34487970316f36695a5965637a636f7a4a4f794654387735726b33614172574b65562f4f526e52694b4d56746d35316f3147626f346e426d6b7236585554305a485a5a375a4e5233746a6f4b335272586d30726c52314f5444516b4739446e56797147434c33444b5831775942747a61315a38625a6165515a584d3253563663643263475a48723172324e466658752b6235525a306c2f4954654b2b77522b304844333752484d4757564e386e31485a75536c6c7857564d34386c3658734133534c4c754d793568414c6a4233797634447736722f634166436d514a7946387735303470786771376f6f5a77695470387249644f5374564d6b734472315a69633355306737446d716a56516c66312b732f374f61414d483947665641766b723053376e335030525a33502f41477872582f566f6251425a2f77444c614a4474304f585a6f4a3674776a4b5a4e427165674c6d4b753442765543374a4a347372694f396133687a38476c48523550557532756f69524a42663267752f46386c315435782b7639636d4a486e76525255737a41613562623748386f4335563536504a354f356e587a35714d775963316341797a71576c61614b5938396a774e54444c36767a6339674c63497141376e70697a686379726c74446d465048464b5667756273553861784a49726e6e6e3973384c632f6b61657649784b524b5156374f67592b38474d75646b674c344550626e31386c664575685864464d4d344b43667557367633792f566c597853534b6466513653554a45324a704156547342744d585a74326d653073374f4545456173394c5075545a795a2b736c5a583243456c682f484d2b4e6a462f77436d52587778714e726153704c375950444a49736b7a715937454e624e7557492b746c6e4b70466b76463058727a315a4767544b703033665650334f36536a5a4879656567674836797759544c72584851676d54356c675a566b3269366478754561395034394455524f3141474e42564f4c37465351593158787a424e5049376b30782f30424f744b496979757167304b41593046566b665a364e5278363257554d5470575a3152547a6b7462694555664d4966573933554543766b497753556e325a32646f4d58372f414f537474644f447a75592f3632755667336b6e516b6e59376157557269346e717831434f62625777316a4d48564344774d2f3673382b54716c6e2f41434a46413555314e3032513573545a30706a466945555566782f75476538414e35423872633841412f675548386542566b63624a4c576e4a6e75544e4453563356384f67713836616c626d4e77474e4a314573764c4c4c4f6d6e6a5061674b66326b4a7165394d676236546d456f30424e45394b7148395950306e6f7a72554c6c2b55615a4852547a6a4b7361766351456c5644673754772f692b4663787041697347436953653474536b624f5733706c6d54496c4166625535436e4671646c5a31596d7831517a755070304e4b564c52392f742f5167356f573575647767586e635239566b354655353956564851716d71564f756c4c4f6346585854723936774c336d6450414e71685a317041362b4e44306d4e36706741705a75565a794465396f6456523855386e454e6f486e7a57585173556f334b6130516d544f6144414f6773486e5a573076646f2f4172373770596639526344535356476856597275624861615435645a33782f6d743149454c2b382f6b6753716e676b73534276302b797a55634a613035376c575366704e68554d3751354f6c794c52626d325a5a4f68714c376454666a5451346a50394f4e7a656c3868672f64505a563872496277586633692b72686336656a51375a5962467a4f7035494866727534316d6f2f6e662b7777544434676d2f7742545436434b4a45564e414655756b595a7a56647a754b66384149776a62553751307756702f494c2f664b34512b5961544278675467456638413275417256534b5858766e6b6a6262706c456b2b6761653056576979644530385a5432416877423838375a663248784155306765385739536151645775764e45796e4d353258345272657867715a7a6932566b6d563378333044784d36526f715548786c38503841704a7074547a356545414474545a6a514a4b7036727175726f464e69356b3050304573574c5075315474466a6a6a6464387a56734e487353762f596b42585949503643544a54553977524f4338354d2f4c5530583238724b52704f626430494a5470366b316a2b67634964466b365a6c564a6f39347541473461484f33712b754161394d30312f5a306a634d30794f57755850634d383945374656526c4b6968712b4d575879632b45506d3753356e76426f655a4170364f3643732f713975364b564e4c644e5966526e72566a6b695931533936777147446b75396a7a464263414a564a65415574482b6762734966713746446149354654614562617a6d754a6e57514e577466774b617971663753767231544d567745714144536b456b667a556d6f477a793479684c62665a6f52646c564c4a4832436a73363364436f56716d59476b6e745876536b614f702b4b644a682f6774337a487741422f44586332427232726b305558457a70747a70645471347447736f3165362b4e622f66384156564458637858654d364144373167444765384144507268767870564c797535664f4c7a376c486d3555656e58494337374b557658506d69342f35426b2f76354d584a514433574d703677546171662b67633335764c3138363570764536766b345357785a3161482f46436951555a6162422b76724d5a636c6179344d3833366d576451745451437141446a586e4d5551747130714b6a4c524a71355671684269475345434568392f774431554d66445174726d456f6e474e4d6175687a7259316630427143624e5a6161766e6759783259314d37797469716f6e4f746d664c7a54624a3266767735767955433776652b38597939382f4b577a4f63435159633475495633786654545639647175694a57742f3951696f5a4e716d7252746a62316847356b76466b786673667a355539414f2b344142726b5664687256496665795374353869334a39316f61434236553657393669746730664576744c56382b5777432b4869754b46784742684970635237725a32725a70746c58716150416e542f324c556b6d65646e5732553045734b6d4d6f456a576e52583833796176506d5735727a4551646f5a62587a35435531747166396e4b3130486650305271575a7a5a382f574732686e514a62783443472b30675550774b2f77426267426e54476c44776e697a70374772577539566445713670754c584345624c48506f4966685a524f6e514c357569306d416c5451413073495036426f7553655872524a31316c534868614d7a39446c79555a6a356c30724f4c6c5873645231746b6b2f445954436479656b50627a347a4e52426b79764f5a54384b5a35676f5743714f50682b466c4d576755394774482f4a2f37444f717a335475466e755a2b774e4a63466a6e415143444b47414745386a57386e6533496d2b4c6f4965313843632f3750377a577943516c5953334a65503841706438762b6368752b58337041466136313054756f715853557a787473536a714656447a7176344d61374a666152424f6e34364b4b75722f414548744e437663705045395373477369727951746b362b7447466557416167393432596e555a30726e51797165377242572f6f3543674958644b6e727033675a6739704142446e7a6b36424c716a7a696d354f414f484d59456c317a55324f6b62456d54337248346e55492f774152424b6e6451434c4f7a697a716842563077566650557475684d43707854525242783144454d6f6a2b4c5232463141622b564a36546d653070326d336f552f584d674e494c6347546f34324d502b48574539744535744f43364b67304b6f7352715275643173776f5973574d6a2b506e516f48356139557950324f556176364275333952384f7465666c4d727a433247454456425751364e2f7643564a43736843683769755a375336397039467952367a32645637672f44325352554e6e484b6e36714262476e6f307a4d59446b684734522b56686358565157744f7469674572444e4b61683933734e4943412b696553374e53397163696f766445504a774b49446f7a43705a5832557442537956704c466e58664e584d772b2f444233336b4467396a674942543844544364626930715266596e6d674233496b584d676e633432574d564d79552f49354c4436524a5549556d6e326742676b41583675705061382b64317079527953615059646850633169463976466665632b6f734f5651787a303559553964557851422b2b4d4c6f42384c41714c31465733766a314b7873726151776d7965436d61764f344c674b716957544f71645976715863586e7256387367556d61516f66384c684e314c4a72316a356a6e6c355a5a733342716b374b334769554e396b64487856755735543833502f414a6d385876736c566e796c5a4c4b5866714d4f667331695841756a3378635a754c4139507647737a2b4878626466583047315965644e4155596553622f463745713433396a6e634245504c6b38527258566646317a576d4771454344475a7851485330327a455144314e6b65736e65346e504f434856545a31693532514a504c6f566c737a5644757342627045694e57533562474773484e37656c54774e63792f6663527855414a6c6f7274722b706d3935747176635146634d642b6c67757530364a325570416d4a353545355a5051613053647676344c763841734a6f734d49336f366274396955545a3338586e79316455575a5538304f51355a574f6c6a666c557a31716d637a36374c474d63684d4d77356c4e42794a41624857415443436b306c6a487746414765706f5a7a4b555143742b2f372f736e64525873427a2b537075546f4c5562326d587937436c634436666638414d4a734f512f57536937487a45594e4f774a5a4e765661685558615558474c6e753030464136626b375035417271446f6f4e354f6c51383666323450656d75647352756b54704664654639524f52342f3065486b3057653564413258737a70457932447a5273645a316c65574b567072414b7565383166574836597165355a5637666c6752392f6c726648317954795778786158465a7272596d4c3637545a4e4b387432746f6a4b784f6b4d7631355865366750727a65326c767933436c5855746537387730717130357335455661596f2f3478595754494763516c3039577a724a68796e57326241384f46546f6363575769706f6d48756253484a4470705a62624737634166683369754c7630617457393878717a713837714d2b6b6f3655737a494b52346933745a70644c6e2f63543872546f4651413471586f542b796335787257786a485557666d34575667323858317a7848353175517935464964546266484b69584c796830685969466b7164645054482f336e5839747674396e47546a5864753563597944632f4e4139696b55625a7052786d645365584e794f4b6a726b3579776d5a7963633155376f2b4a4a4d31585553556d706a6a555971426a4b455a67764e73545a576b464e666b5a785336782f50646f6f2b53555870636b66614a7744474a614648387839775a665a384e585652675a695245494f6e726e4666366730696f396f3835546d7772344f6f7972586661376e584a6c4545302f4b72574965742b50365a33416c7948444f4339494a334f6e494739474f6e6b4a47636377534f3446737567364d306f4c4e624e317565737147737a4932496d726c414b4b4263786c596d30794a6f47372f6562516344516a4f3535763270795534696f3236714b4574344e5644382b4a374642516f6f3866693668566f4f5a55524a4b7051684c544b342f33314a5469776231704d396545435070703564702f556143745861426a32387957506a4b644b613943575037556638414e796b6a2b5156376b2b365a50656343537778655a556b4a465153444f342b4945793530362f6a356e593677796d6471576d684256314d7a305657664d592f495a6532745a716561535654454351372b69714d4a526f3431626b304d7236792b59382b6872786d596233447a4d643741434665697a67446f646e6f584b35544771482f674235614c2b6a3777566d7a356e5a7354456f31637966674c552b6572554765494c676b6c622f72584a4c596a6c485a4b4563347a693047395368493167356278364657717a6336526c644d36465333766f6b30516b352b6a57795a796e312f57737351536a6f6e70596d67574b2b4567344b546e63526b33392f30436172356a7a7037356b71484f304f7964737a355661497171354c32374c2b797861584e6e476a733872712b69746e4f502b6d6c4e59416a6a71446e6a32664d5936624a346e61476a4f716c646c7139334e55314d7048736f4a616b7a4d6f4f625231412b45562f486350657053517a4a703446587342504855515075646d524f41483530366e467a2f6e374f42474e30706e6d4d6f554f646c364361766b645532646b625a75794c4e314b5a6d7350333853422f3162666278456d4e476c64384e544d35394c6237466931306d6c48516268706f2f6b326c53654a48303864775645787246704a746c453378676b7a564735493143534d6d3554654463796b624b3655726136764f4c6930396f54704d586738374e4f6f3536426e59376c435977656d52337337516c5561462f4b4765536f727145392f64484f412b6d4f7046467559416678307852796a5262314a45345254524c4f6d6b4743584b5a674276477a552f37763641706f6b6e506f57304b71564646504c4f4e5a506151784462424b6d78303054684d6142416364644b2b395a6144473254717263737a2b7a2f41454173776e716373694773717952796c7a42675337516a7a50722f41425a375852584d424e795163354e68385742674c673462552f384174582f5150594c4d386c485657315679616b5a2f56305746546e585a702f5963316c576742314b4775647a6853766f4c6237695a5966324144335554704434467345562f7864656c4772313169654e796e56767a4e444c794f4f717a77586e7463774c56716a537479317357364947496231706a5a7a704f42747456563747577059684664796e36756e6568723370354d6d4b69557158737a394e61776e577566536e583367384435757a4e6559554b556c504a696354457a3343414f525564616e4c365646666337516f306b744a71744a63617444397a706b6458434b484c2f7744543477625751412f7455353870636f6b664736413371744771537a6a336457346135354e58476e74716d3535434665694c37485a76536438755238363130454146784c776f6d5653564e4265316e39424c4f49564c3863304147785953364c6d475679716441474b4b5851565567374b67477a51646c737137535149556d65696f316d346a664d54676c6c4642352b76556c616e66786a494c33715a4f63464b4965497a6c72524e4262376566475443736e61417658473735706b2b38586673576441726c7268646c5a6b755a4b4d37564d4f666f39347165414d6d72552b76546c75715a596b70386c5334576635635a3762446a2b30686e325073727043442b654c6d504579736931396966724876775463566e4b374e543869467a3735614879736346482f30314f30452b3335502b7373662b433477475445346d4a46565a4f4c7338524b6b335878477a554e4754527035695753505456334b30426f34787954503778575a6676636c674134426d4b7430306a466751583935354257613463646d76492b6e4433737a6b35767a5975614d324b75744e5558304b4d79623276482b4c7173534d37446d74373070502b556f366b2f5a4f725153664e5a6c776468674246765a6233476a7574476472617971706d477432556868726278516b786965396533324a554b624575636c6175782f3168465a6e6f4a316a61457337644f554a5673686f7a70766a4f766a6e4a5847637a75316752613036776d54316b70416c66656d344a63714e716d646e4365593441326c574d4c4b6f366d356d51547065614653386b647172546f3776366137536659684e4549574f344a664f39677a4148302f685741694a4a4255383361465877724168324e537a543671643130337a794b38576f544c666c614b76483178567a4b4668554639624e496566707374765a7742692f595147413133314f345766446f306470716b6e315259714b6e4a61734f5278555a3670646e326a4d44484b306e3868714f45666e575a7059494454396c51475274354e6d4a5666577a3333614652314a4a53366d6f70644e3853454e306b5374355133376c427265763757586d6c544b76327437374f714a4841427775436e61645836573965627171766d6a3252534f56436c656459557856547169674a63736637597865307765734d65514f617177447076634879706c7474356477677468583759667978365771504c306a57716f69794c7364524b516c53645a6f3639737066595873526879305a6a5070714e763066627a3545447047497855504d685435417a5464543439644c394456386630564e43576652545253723742525754564d61714d655656616c30586449464d464c715532423771544869305a6a4173724c366e6f424e50444457334b6f6b356c667943776c31684b6c6d485750494e4349654377525951674571567339314b7858574b6167636958455358625831694a6b5476706257784b353559677370616c7563564c4d705570776f476b705642396a55682b59536b4d35716554764435652f4d3849526d4e705a766841385876737272562f7741325756364463796c4d4a617263764f793359365171483738497159482f4147784e5a39446a56444d2f325774742b45505763346f68794a6b523578307854636c2b445259453065376f4c5a5a6e577956644a6659794262434a484473363673557439355543705058314338637750327038732b652f756e6d4c6c514373787035796f6b614254767a6d307a7a2f414179706a49735652742f6443566e654a2b38567a49463176672b7636436339473275614e5450326d524d6d524b6f463648644d4e4e626f63665346584b4b50627937344577304e5969666a68397561323841344a41684e5145744a467075745841355458364b766258766157596e755949324c754a4c45715a306d61464d73724152462b6e41325548745948366e56502f515063734b6b6e707a795856637a4a644a447533447a562b7663796c4648465274765a477748457578304e4e4969547661712b6c3332652f75656667454e4a33797439384632655076797379534d39424956495a517568627a677a59494d656e69663545766350783864596678702b54353046386f73416c4c43465176564a62777133536142306d6178624b5670424b7252706c6f6a6f3455382f563434386c5230534e54674e5938476c5a684d47564b745a4157615033565a375948534f4d46555846434335304c673757644e74485a7676414b357a6a4a6f74535a703651733443583945484d32504e4545326d31386476573863564e7458786347364a705570736f6b524d686e4d3577565645544775496a4e6e376179673647745941506730546f466479704a2b734c4f51546e706a354f626f6c72573032587a32586d4253746c2f6b6c6f623841434c67567a357935774a6e684e66465739504d784858464d6f6d786a534344454757486f4e6337512b59383550312b783633536856785335306f2b666f653042466e4f64434c644a2b516c4147626e7474357768547953306552796c4c7732637047376e4a5a7a6b487675574f702f7234612f62377a73585031564c542b524d68754c6b2f616d4c6e364f4f6d78785330364d73616a3150717a47344a78616c33756e6c49566b6243563757744b66692f682b5276364d464a387774555a50756f6656474b353534457a534c2b7174636456487a737352496b6635496a64556259783666764e5a386f4c6a666d6358394f6e6b50677a66567a65673752685a2b6f567a486f7830635233503467617132714667522b7a347851786e6566737a3659544f39334848786650364439504b56447538704867506e67686b55304c484b4a424c6f336756414d4b714f732b3432505049565443695a356c5a7966337036416d414c5a77756e69305a6a637837645565577a32596a61462f642b30565767315335314455313650637a39633778544f6d6d5a765341774e4c4c415a6b73623834487666586f475a522f76727131542f4c6d6e2f36536a6b33313646697461302f377750717a49574777694d6e4677434238776f704b676a6761344b386952656b325162624a3554756c6151684e33695337784b537935645165392b512b422f71494a6a5637524941316a4354556a7646464933525670765a4a597957774f52784856464d6d6c6e75506c51697633653865386f642f33324c483247787874434a655242543357553370576842546b676458303943744561614958772b774a733332732f35464a596657384a677161564c6d4e706b534a682f5151653156434f4659325932557a32362f38706b6e617936516466526857364e30576e5135584b73304b7039492f6a37313765664362526368594c7355433063386d6375657958376962426461326a69554264554832675a79572f354a626e4a4852536e2f41474f3552785242797754643853532b52674f36637138344f6f6f41536b5a57664e736e697557424577467974694875375a39684c7634735262327172396455706832534741464e485748326157513874665349646c743933586c335445625a6f73314664442f59694c2f72632b502f414b6131444a77776b4f79394a6e515042654a41465a776f74484f414a756737567a314f2b4d35617634687135745437394d4e38716275744b36564d37756c5877714667527255397071467875444f64636c33555246546f32665272536c4d32756f374b2b574f35594e476a776443356a744b58726c7a676b464e2b5033684d315a384a79464742487965354d7475666679506756717a4a352b70594b457430314f4f6830305578585469546c2f5268587852417866317038774163483250726f2f703148337769616479464175784c334c7664646f456830736939756c626d4b6e644f356a2b4d644c616c66753476767353774e493650647748644967526f4c37394337594575363753423953473966464b396561696b7145763069364a4e544b6f534a44784148676b2f306c5a54502b55514233584c6f4e6866324f597173326d4f2b37375330514c5153616c3063706d4d6b5863513656624d6b665952396d536f6e6b3770684937346d6848664a50345a6a70714f45436337526f58784d5a4332696c436664526f304e5756314d2f536f656e3743756b7637694350336a4f344a7673674144325774476c73344d345673664f577731554f6e4e64367447534753396b6d5736367962354636544a314b6c2f625153326d68766565784b552f3044547a4f644c704d6d5539426d726e3651383932666e5678776d757a34557a3054647a357870614f613561316b773165376937744b63516e516c7863364476484b4530754b42515154355737514e45593074524973453173332f7743504175564347682b3745542b3948584158766330423934544f6b2f6f49783570734a596942746830702b2b712f52795a36536f7333394d3670646178417961796f7a6e53357935626c6a4d66744363584a5343617746556c4671647141476448657562786153664e4f2b4c6b5557624b364c474f625174596170394b496c546430756b7a36544a63746a6c456f6e4a56396e712f654a756e35504364383951336b30656e46736679484f544575476974755838484a746d6853374c45336c63646b3070427054726f6c71365164486e7a66352b376f564c65476f50346c4e30306a3671455152535a704e6a752b514b52717272544b793967345761467a784a6a6947723339662b314f4a4c665a51726f5574446e454c324d53696e616e7059446166346e4f7a30706652536d37356a52744c707a704469663758615656696149542f64495764392f6b507a6a54395279615130726149723867366d4a2b6c6e574a696d78587553692b3339486e736a634f58637a507a5343434472483074494a632b785842706966556454754c54507755694647676a4d57665871396e4a6d744e457850764349704b724254476d58536f6e47764c56387a616333714b4b495571465074564d566e53726a4d61674161384b7835423535567954555a306a6245626535344850327967497071544736797332745435484358335059496c316f746c35576c4e674b63464b714f4a565854377748384d6c6c5a6e534f5a37344b33743936697970706e50444c52624c5454445863784a4f3971353357653476734d5865366c5052393656796a32312b7a494d6b674c393352693752664e70644751366f5a523770783572644250797976717a5367416e5a5038414b4d4672714f506757364e4a676d6c6f7439744e6633667278454f387159372b4e38666566312b35726e4a612f77416a586a374b5a6d30387930795a36786a315847556e7a754c78382f72776d6638414a68387956556e4e644f733755374d41636d597a5a4b6b346f744558674f7270524c3053356e355777456d664e5a73356c6b32653253694f6935597a7636725155537773624f6153584e48513677685830612b524c6c50597a36327868724c6f6b715a632f567061335853697978475a47763333632f6c4754304b7137564164487a475a30586c387448414f76697a3962745a3751514d6a7251336772705952544250744e71657a54557a556e3465586d73765a5277716f44703930314954394b784563314d3052455248434256506a75536c586a614d652f5a58756e30682f6a7872527056614e6e737a3361436a7464515659366c783574476d4579785239535637726e506f4e6f454663696f392b6a6b3250546f705a66566c61613361737848673462786e703755377948546b2f564e3037396753502b4e5257337152535444416133514b2b437851616759666a44733654795a45686b6d2b4c772b56464e566241734b5a2b764471577469643379437850596c32726b6c707263784e4831706a4952545346367530377a4d52475a446a786334612f5431586a307768735133344d4936653476424757466247726a306364632b57694f6a6c56443770382b656563476c78382b78305570646a666f50366a484e452b414b655435316d503656656f7437786b73702f38566d795a4b714d6547656d6e545557706d464a526d6f644c6d4d6c4a59756a526f644d6b385638784e576379616f7636524d577654776b4d76456f4b737a76704e315571637a2b4938425a64343376665974436e4f584c6e527a56356d546639645262586a786151694c496c574944324a4355644a796267623150474c52344379664e36317a74394138476672504739477638416c57625136444a4a4b704c5277614a2f38394776504a727452456d653661336e432b516b32503742312f7463344b316e74324537484a484f78664a71656a6f444c44543546514b3057555842343366464c4c5072364b4c38556136745451375a7051386c625277564c4d4b5976667464526d394b76782f5839527039465070792b7066687566783251686e6b6e6b6b436b71662f41446c57577966507630427964726d51364768746b50562f476b487873597977615159325a4474446c4c4e68305139543833636e3552552f6e6b4657786d425441377166432f4a6d79706b566f555a794e474f71476f614a62755a2b6f5479706c6c446c447674303075636469766668474d786e6f4b6a38625a72673654782f4f6f3246616d6a746243757779356b576f483852525974636c6d5238566c6353346162475269303641424a3070745a544e526f5454554f6d3054316e76473855324a2f34726e594f6e553662523749796130776b6d677a653447626e6a3359736c586d5272434c6a76354a6c53795232685a7444562b32427462637437715445546d4141666c4971745a786b6b30396d786e30506f303858564f666844703036327551536f7a5a312b32654b664c716d614465423755592f453846314254465a4966362f6a325a624a6e7854636b76716a4232704b7a673756477a72594e5a7745792b6a6d506d6879566c464255637057763373643257497567446d2f77436f4a7a4e343165727852456c56777870304e4537694c44652f3261444b6466536c543233536d2b64646a3659353949517139726a4e695570346e69686459794d786e48654275642b386c4d4f686e4c57314f38336d626b626d5a5670766e574d476a7250627a506f6b4a375a353351365549382f66317a53714368545a3145367376366b4243486a6457586c57732b702b64416e4b7069454c39426a46776e73705375707131712b7151752f6977746644616c706c59644b4356377a482b6732463933617376484a685a3258423146634e6b496e6e614d2f334e6a64464d455858354c464c316d6d36636d464d6e36356e5159735a55744a755751514a4c3545782f77416e413974417a2f424e6e356a473432686e7a79716b314b322f766e31592b6f6c466361654c34596d7272467a4a527741396e794164796648706448646e6b634368524d5a787934497a305549556d683761377464583069367557632f626e7638415a4c51357956336c77326c553735585a327445312b59745475634e6e69314b6c727a6d4856505648446e30374538547446446a304e50795a4c42757352433539544b76635a4255317744474c763966426e442b712f4839663141534c4e7454547a524c493155706d50756b43623947455569592f79334d757a2b536f556b624b6635694a6469317464786336486838616e4f7034446169334c5045364d4c303178686a36445033584b354b31582b316e4b715669337052547a564d58714c35386a6d553953552f322b544d4e4a723430674b5a6d625438786e72357053506c434a437150717169364d2f77493157347261706e4d2f6b6d6b31784d4b55786e6376722f304e6b3030622b427747476b446756736a7874744f6d6f5538746d3579546f72354b7a4c6e4b2b7150597a3433553030417558757a6347744b7876626179585048374f42374b5a2f2b7879322b33694a763571414e30737464314239595a61434f6b2b57667566484f3657364e544b34646659533457486e7979734c70543934715445373968592f617053366f722b444f3673414f535375784d7a7843476532616963423171384e656a6a566a52536d5667354b436f2f62562f476c337a5372354e39796f446371322b3369476c73796e4b7a742b66782b6f5033584b4c58385a727a4b6c7a325138766c6d3678333247325764736f577272654c363158384945332b746637496f34396e7a48324c4c374a6f5a59307574674a2f7a76567a6b47616f326f304d3350733139444c706e494f615765786e787a4b306b6f5736663641514c516339424f54414642577a567037784d6b513548536d5a714c304b447a737164786c44725a3838743262696b746270734f53784a67532f59707754653664563030774343766b6176746551434b6a5769754646383858586738564b794d3066705035577652754f64694f304c6c54304b2f716e5939306248567a307a434862553755415867555a6c6d6a4f75546e38764d4e764e4f657a515336744e584963324f526d664e395266737a356535764b4f664f627a55483050725041364253453174547543487153344f353838734643503547696d54334c6d667a4d354457364d63474a636970574c546f4c48534737707236587939576d596b69344a775465302b385171685530574e64646b364f63786b6f625134524d6c5464557364735a79717256627a3479307078545167516f67596d42535a702f6a6f722f54512f72516244656d4671626366514e724a71585458305a4f7171466263316637375859757166766a306c44447a35523065522f5a347777702b77644a2f436c52454959333755694d2b7130715a396a5437496438377231396e6b636655357a62647871335a6d777a4a30522b74306935725a4b3672684b6e686a375073674a7048693662616665494433447a473231594d5975767a4931357239615075777958474472684a595969644b4c4f572f526c56485244513043366463564d48746d4d3744353372336e6b4e7276536e4e74646c636272684a77326f464a4b58576e54495a326c6d526461437635426c4656564536786554474762706c39362b65732b2b395361546a4d343643426570506a424457584653782f62454e425565584e7a756c774662684a797456663841437a722b545147646373344833724b55736e6d5830352f6d49786d6d73346e796b5658426e352b7856474550652b4e6858705a732b65306d6679394f6a4a524449376c5047326938474532727954353650716761416634384e72654d2f5a7356614c62617834794f6866707a4774666969307534787567457a4957776533505a65786f646c63376a686d6e494a59786c3973522f6f564c576d4e49724d557539692b6655376777386849483873514d3746726533376632337336484739543333446f4b556d50696f37544757556c6948797455704c6664536c6976622f57677165626c37752b7746707135384f5a324a79543476536e5757556d5536683730756c6d45626953676d6c54795a595448554d68674144304e724b74533557516242563143666f7a425477312f3671474b596b4247617072756354516c6c4566744a667541486d522b3065664e784f564f732f49555435472f74486b30336569735a42657546644b797043477770574f794b6a556c4633756c7537376c723731436e41487a4a553334654744503631467a6563632b6c346472665961306c56344e594e3539666a2f6735314e436271744272556d4c4638585643373938492f77444c3343526838514f566c5472507946562f6a33703864364c48567033736b647750494f58335239412b514450586344432b6c6e5a34386a584b37354a2b524b48346c4f6d39696171524e74314e39547478382f314639726136724a6766786847722b4a2b5258506168346c5377366b66567058465561796a344c4f4e5069756766562b7870722f61316c2f574967474e394676554d566f57566970797a6262386f384f554a4b436536794f4d316972326b63716630347761775470454f2f7342597a2b7472396d52593254574a51714245346d39733146697175392f56456e374a4f66643057792f38697a73492b37354a6d542f7355382b51452f73756e694e624d76796e5264465a68386f666e3873316e664a715577775937453054614b7a484d757832724c7135654a2b386f44562b763245314a696c71654d396d2b497a6e7642443058385a737a7655335a3139436d66526d6c784f7a2b4f5653546a383045657a79686a4a316c557767466a667170357848657664384f6c2f394d6d6b4f665469383875505872674876354556645434786d4c344e4838684835564830574d61334a656b6f3230614c2b2b3561324f6f5761453165776a425a31736746633545524550613666654a4c6639504d394648616b764b4f482f77434e39626e41524f304578706e79614b55703462632f35794836616544384b3139497867447666613376654250572f77416f3966314276303770426e6f35346f516c2b314434387430626c74654c6a5052343278626546594a64476669324f35772f617a357767492f2b775053482b713236322b55666f425034396437543452714f4e415a484b764a39465a4c746266793772556f2b5033493762595443594b566d58536433336d3050732f763565483735314f3451524c567239564f3255337a495239735a754b5943306163724467754d70746444566d646c585a786f6f41656b7568356f6b47663267736758664844416c6e726c4758384634596e69475430302b64654b5065425477715a3871644d584d685458584b774a364f665463396a2b2f4d3154706736496b34464745616661742f442f4147432f713844364c63694d687a2f67496574756258302f642f3134726d51533346455a74686a582f7236343073486e37796e462f6b72712f6370325945567a46364866487a4a6b72666b6a386e6e61645a4537395053394d595a396353312f572b4e6e584c4a777363504f442f68386b786b78774d734c5031762b63546b6b4b65305654794d5761383978386e6550755731563174705274485173616c50614663554955645033304d354d6f6153356c54725079454c653166336964537233333039524f527036773948736e457075586d4e48733446692f5a564f4a646334572f6f356e6c3765694a4f64714c45315755633865636c6656394b615a6a772b4a4b6e4374644d5668714e302b6b7a6f736332663676466b396741502f774274366c7038582f5766377a3134436a715832514c7a2b4b526e535857683163766552634473334e466158773157524d456e4d306d7970344167766a67536c4a4c594a2b7861614e42614f4f61366b664d547a3434317455415655467968612b7873436f36526e4c3365304c6f7857766e2b762f424a67723966462b6e5a366e634933664a513665387659636f2f656c637362514530756f6c4e634d6e656754476c435244626d2f35504e33744f4d3165305a6939343641617657427858754c492f537673554479536d73582f636f714746665a567251732b7370434750354a78457068622f414c44416d764a2f5a676d755a394c686653366c594e314a784b687338725a7073766872547956387438343854384b4c432b4e5a2f4772327a653768664d5968502f514d74595971335a383345572f56366965795032304a6c67546f5669785537554d4453454e42684c71314846785a664d517a632f783466324f4e43505a524c424175545575575966644b716a6a4e3368394a68637a6b756c4e45764a584e36754f68335738594875465049773470617638414544476441757a2f414a45796c34656a317169574f6d3470395a4c53545231396b342b30706d324c575065725853507948374f3854377841677731383455384b38517a31545542416c6d7335533230436a32794e45476a79566678702b6e4f786f455056634d3142502b7a39362f36725732373577476b5654744b5133517a30634a4356634434304b356143534f655a54766a4b706e4e616c61592f6a364c6b436e3562303039352f687851323665512b32366a422f616f6c537274342f3841664a35415772574f3958506438576575576844474e437a34576b54466f4671545478776d37677764424e665a6c63346e6952356e6e33746349697431556e4867744f764955756a6e6a3868664b684c466b66662b5436616d4a544e33396470416a61667668354a4e78537241366c4d7a574766484e533736767a484353434a6866477157376a65383666797341503272715a435745634f31354446767a636a6e5931796e6f54644972735954567153457a456a516b2b664f354e4643795a384a473176564837706d2b772f30494d56494630462f4947713976795a744467656f486a4742414c6e3655494c523836503258324a366f6630504459632f73396e52396a666d442b6759646b354f483232504d567a5a35334d634e7a654f59345a704b5236714a763275445a2f4731542f354c3730507647616661784b76636b43384b31637336356632524d7a7a702b7930546f6d75304e464b48556f534f65466674575332526c2b2f6c3937566735684c2f537665766f4731384674454c4b614c457a554d61505730502b647968364e4253454c4a492b68484c4b736d662f53394166444f66524c2f414843612b414f314d3550464e572b7748615a6950616b6d5139525343666a58544a6c693776416c2f56796c657743347877632f7739796a453542725473774b366230686d7948767937714f7945613330444b794a5243704d6330557a577164336b644337763177665a38712b4e513077534966485132774e3273707a776e66536e5842785472656a6c562f3759462f64484e36304a733278624b52574a444f66567a4c2f5836702b55352f3847696272356961393465676a6a474f63425238556230524d75637a506c6b6d58326a4e6638624a6b4f30503543723477486738446e302f6b37384954744651664f5a772b2b7874444c4b726859784774312f367a6972374f70543943427a35694946697356703976317948764a5063394a4d412f65495154794f4b64793242545573477a4e51796f5676527942357973795a4676304750636f366749684e6971434c716e4e6a616450784b623849674d624547753554636672754e644c533737397a36536f374e443255714841303643345a3058463541447572453245446e48385a48377a454a466a726a4658776c4b796d4e48386b644d6c397755674c7553366e386d6c72476b4276572b516e644d78616d4d6148664350544136506344356d637070382b68476d6d6c6e556e55323141304c6f4d7147644b6f32497162317932464859703949632b546944476a736a534d505943545a76636f3733385237644c6a3834715a5532364d723667466e496c4a79314f366a3350317173396e666d396e755447484738345a6673676a7153356d4a78614474412b326246543775505950474f2b3341784e375a3555793859526471715749724c3969667a65306a6e6d442b674f4a4a6e3179436c7a4f634a45307445375452525030315345446b4e5256385255554153574e4d614f3064372f38497144616e39704236336c65664e2b35696c484f2b314e53594f7141702b493036666f556e31393665734566734337726a6154557a6e4c516675705152714942307147574c35514d79364f442b6c755179716535762b71324e6b7239423877742b4e6445733736576948334f6a396e6f413153442b56514c6a4f743863344f393967505578314c6c7979706e363649556e53335053452f2f4147492f2b77524d4975416c744d6152344165777665436163774b612b313046523249447265647955313643417337614e424e5a584c6e2f414c5374716a58336f634532673050386a4a61676f414d63613539397039574b6a6736457955554e6c71613431424b7438574f6b5a374f4d5977796f6e737134526d626a41786f352f77433845784d346a496262734a4548516f585677666b765a466d2f52706c6b71346d616950496e374e4b4d372b49356d2f594b6d50346a6534543737784a4a69372b7043334f7151686a70616d775a2f7742647a53676a56394c515a444132716e4f566d636b6f2f524355346645785836366f78656676495644375668692b5162414d42504f736f727a707a43514b496d76574d724743775265394c4b42494746563372654a562f6e59303352722b4c322f3047457a454f6f6c5463313056417465466648365a3669536c58506d724a712b65366b6e4c5a4f547a494848332f6c5050634879734272414165596b77633966556d41556335624e536763354632714d707861332f4145327a5062396257577a4e5851617030474b6d6b6679385366524a4942473839575a66575a527a5673507335464a2f49544c743046727478766d6456625a6f304337525a31636f736f35387057415a3167424770376a6d4170664e51697142626675685170692f6b5a32684e42684f484f647471546f6b75634a71685947736c76656b6b306c4159307049424d33416e476c503875536567787a68455a362b6c4c2f327136377230716d706e5470574e424d6f305455634d4b58506370566c48372b464b6b754d4b6d395535624f444c7a746861794f72324f46426f4e5a715531412b5834434b5759626d506e4b48346a346c712b665453657233342f6342394a6c7164714148792f71577a614f5a3261646d6c42326d43306c4c6737444c5a474c4b4753704b68625630457361505a2b2f63736b756a397030396a2b73372b71695a466e4171565671753645497a6a5147596e4f75614a702b43434642502f6a644764334d3964567446516d784c4a2f32794253574d476a394741506f59644158314952325646745155336c397252524e4e55326c597a73546e746d4d686f456d51794c34522f5a70364c694d443463775643465a33797a6b2b77616d735138416a366f354b34594f6e4e567257356641716c757a7971584c79687270617150706b6d755a332b5a7a484e317941526c6876706974316b3158356b54467831646478496d75753955343050764a355a3945785476473533744d327434624c44477033424b6777743262654f424c733264415a386a7845477970314b7930615a38787963756a516f6e775a394c543336474c366d367838636c6e7a476b534c767a4d616b7749777066554f615a376648514c6975565a37644d5069584e7965433174534a7a304c56486f66786d4b4b35592b73644b78626c715036775875353055694b3030414f325a2b7148334d70546b4f5566324b463533594d305464726e5070764c4b644c593457452b796978667a424f705366682b77315451347270416a3438734d3278537670516f756a30516e2b3472537042306f324b7a2b4e502f70517938304863586f5470353336366d75633572512b55584f542f4145453979636a6a577830463250365665716a4f6e7679703231594f6a5870506d362f6c61316a78316c4255465033745061576b34416369627377742b626f497248515536514c6e725a7872554e50547a4f717a6a7137614239792f747a5369756e574d35636c2f77556d584b564e4f6476784346496673426a766c6e6c536a4d4d756c4846444e4f3132506e5a32685377314c772f72324964502f414a554c5a4f35375334436a556f336d79376f66464f30413259793343796f346464724e756e52307157397654524a5a556178354353326f4f6b5672524f61666a4b583475382f53556e6558377239365a4a694a6d6545433070557a667738307344366d725a414f656a3765744b39756e525859784e4967704e774579476c5933477a39736438713941586a384139555a51474b6e6e594e5466343037615a4b6f4569704c336639694b564b347a362b75704a676d5235536b436a614b684e702f43696e69766d6277492f4e783174614b6d774a3173393871615930417a744c447a58496c426c5653464f3973544f73315038414e6c4536572f583462766d2b7833686d475861454a6f616d683038757530443632707a477854746d36364e32646c4b4d697159532b574f63545579386145356659396c41695a72494d4f3535653942544d7a3236465761313054383165517235713550703930447a33795a4c5061564e62486348356553307471734a5a636d2f39676855326e6b38486a6e76754948705a4b3247556c616a7a6366736e3044664d7275737336706d35384f63726a4651756166766370544765384848616e616742615354386450547a4b714564703758774e5075527243356e486f676c484d2b6c6e7152504c384e5445554f5a306c4f5548557034524e54585a73482f6a4f4b312b65724c6464387a4b3943362f6f584971716c73457372575862396c6d644a30474f66554f69727255306c544e79774242787a653257544762544d353659446a51696d4a6a485553446f55353767356f7a61456c32685a7157565a53394764633266525a7866776a4775622f6c39762b745476613133444130387147464d65646b734774456b31315a6f467a474472574e6f4a4b7159427573652f6855634a64634d74426b45783936383955314e547a76457541496a447972686e514f48593636657042314f48455248497847655576787759747664443771334e7230744243776f61636f6c712f463259786c636175675951574550565736625a58715764564353752b537a4e6c644a656d7674756d585a7962486f4b793435564a4e33477563784c66612f354b557a756a68326649665a626e5461456d4d75462b3837342b70636756533872624250716a46412f356d38554761354471484d556b356d387348395765777a364455302b4864385871414a72577638416d4f32764738786d6e6a7330526d5862646a56707974617966512b582f774332584661586b5669774b524c36566e544d343044576c3756572b4436666f422b6e6c2f5764796d58365877535937437a356457544e4576657875704b78306c6e593644304245627150656e332b397a73483637536b41334a6e734d4d5a4548307953334e5a4f6e6e47595073667a78632b4b3032585378424b75414530456b68587655584e71676353497a2b4e5579366a4d5a70676a486e55714e56736952687565304a45712f687239466d4b6651546c7341344e4869394434626b3968757a49756645584864663744476c5a2b7761517171706568446f55396c6c6a56457455476f69544c474f58376b4e79744b57546c764158576d7a48747a593355744e674e6a6d5654543374534770347a2b676c6e6a4636622f47337a315561434c4a54554552333233366a4f4d37453546476d752f505a6f39545079787a694a715071445839597570452f6856385152505a5454576449446d7832414f49594e526e585243477a6f35457978704679454d623279376e38685238463346762b59442b784a774573626f3843754a382b74656f65496a4f546e36557735366d78535635764637325663394d564152686167574a6c354c3969684c4c7763594f38656141706b71706f3553477747626c70766e3865727667316d5a2b4466783943705671645263585468715739484b435a79374f35506f446336656159675331314246784947364e41577a666b37746366417a616d32525452315136417366734e447148353152506d44526e6e69356b79386a75575567497436617932432b4b635a364134466137654f30563869446e5a4f523552717a427a4b626333566a7156646c4d4c6c72686c7a34613839316a703668626a7238693936325065416679564651664f624f7669734a315a62417364655a335a6e4b7977476d30324972463363725558387231543570614178354a396374644a6d6c386f48334e4f6852432f6c4b47684a63646b4469315a30775961626f775974646d5a45365a50526f5264506d384170745956537559357a6e646d63726f6d667a66567061704536517a74752b6749443161324b432b366d317562524c547a63666e566f62557252644b3961756c4b4c4754777a4536666a76615847634d322f664f6e346e54466f444b62765a6333516d54616661517164487a564e5a7256504c647561574f686134317262376e624570304b48746847644548765855395449574a78325738415267706c4f71617a5044765a69683478696c424f35665a7835354662754a6e776f796f5375694d70334f374b6f5754503936662b77726a65554c714a53766c7946624170734f35773554612b5a61704d6843354c70787a3351364174707a2b6c396565563942524e2b304361506638417441673448422f515079662f4142366c61452b516a67533150356767754f70394754486c35346c46315763756437592f73704b57527468385a4e4853424639622f4366396839794b65465049513646723336684c35396539394178576a307674564852625a503841746b7266626d3865557a3349614530776944707a344839424a59546d56537a694d70476351786a396f4b73395534676735796367686d6d304361346b7239796576396e745430774947476f435367476652717a62595947525573466e46535030327169632b79697652686f4763685179736f65657a574c3442724f73756678716a63424770674b41685a4f2b566666494e4a7679395650786266724f5a4c3270314f6e71523670564e584a4f2b6756526c435a4d616e2f44357158442b773737564134734a33536e52584454664570354c6d646f56304161796e516e53736f42334d6e6c4b3669423376714a304c6a64545a384943587839502b676361324a5531596d39334e415a376542583359414b656d723657382f4e6b56704e4953473767787a6b2f6e46745a3966366466506939776777417271704e43507838366968532b4e4f66416a3770313670745a63716f426a44376c795758554c6e62597858324141373156674a6c53487659514b382b73716e576d5a544f42727a7a7a37565937457a616c7468507362592f474e5a4b466850304b6f32646e5942695a6d6b326d424a5142416a62336d6f4465496a2f6956693271486e45794d2b6f6e744c5352566f56374970456330756978507a646238492f4c534c76754e34345074673546635065354573744875544f6e5161496f76737a337059304e44626a3045352f77444b447950516e466451554f72353858797a4b457a4132675a412f6f347a726b64574e46722b796b45314b466163682f56636c667a58357a354539344d7066616e4e6e42712b464a706b39337455636f6630417473314b467a304c326e7a7a5252494a6a33303333756c5838316b344e2b54692b4d464c757a69695a537248547437716b376a5068557155414d36645a343833322b413265626b724f2b335736687442462b376e6c4f785336757357773670302b384a42536e3275503679514a33506b426e386c5757364930517a306f4d4f6b2b4e69526c30796e5277305675366c4b7944576c716e6e425037647867552f776775454f38426c5839416e46566d2f56685a583970396f50347046744a79785349532f6f677a337262396f702f736a505a396c593147594748732f5a6877464545786b654d365849654f58775832634f66765a7577486563674539624846326866552f4e5048386741536d49515143546e663754374d44444c74597a397a565466474f56553357494a6d4d6c6e6630614842645275472b4d4654724b646175786336705238503546706f492b4237512b43452f43346c43336b732f736d6b6648394252315643336a41464b4930357977596c563034742f59483133334a6d68336a61466e53384876324b75554e45614936644673396654414977584a6642497565767336652f772f5447674a535a524e4b5336576d4d5a6345715335775036417a4c454945626d393435355542545451394331734b4e4334316a4e466c35632f7741626e577730455042596b615134342f59446839763251576c58314c7a612b684a4e304f4e49755375314b35326b33726f515735344d4672703030555273617376656c4c66594b795366414f6b45366c31562f5038414375366e506e6452334e4c6a33547971746d704c7236732b464c6a46626745726e4c4a6a5a503337444c3532455a4877483376362b715a4c6e5a66532b6c6644324c722f41495a75313537556e4336715a3158416e7139746b592f56654c753958377079635a54477567484f316e6c2f394e4178466d6366616530774c5862534442687832464548376f713675684c50685777506b5977503061514547665755623469596d4d77454b6b396b2b6561666f4e35787853785542645a38456a4d3961317a682f4874536c646a4f7071473833556d785243596d426d424b63636a412b6849452f774446324d306e476d4c6c4d36693078766d356b6d6f4c535a64464b39692f724534536231597273396b30367659746e5038417542396f70756e6d5052726c705969614d4a613562564a30476b664c514c465670354e624449766764636c5a456279396f324c47646f6e33724164664d4b71364149466a4853557a614b746c3375726e696a45344b4f6b6735614c766a5566386b4175457547446f2b66344a6f416d2b7a39644441704f394353762b4b4c746347593670357959386c63326763585762435a477a2f443874546d546749683376514d542f4145662f414e45693634493279565358304f4364337854706f5770396d71696f57736d305635326639713374543641466631334a4a61452f5031644b304a5142635839674330656731437135694b734667524c59306c6670716550434e5546545a4b37484d4c50517757435171482f324a59416439346b56514d6375537378766a6b594b71616161645853616c6c79796437305541393255773043396c58425a555a6f5158742b5435666a4e5167706639415a7a35572f5464396d6a756845514f5372376177307555434c6147357a6a344139584c387158793074563077634d776530466a37314e36414b32644155306c6132554f526f376364464e46485a46756e6d39746245646663544b484374314837592f72756a7a32645542505a2f70426c61365165396c42644b6444677241314f6756796a586f2b716c7848383756383652556c4b4d7449382f636e7341695a32684b6b6d59453431527a5763776e4c4c7565557754544e7833726d6e614470796143354a4d7a50596372752b37357964336f4943554630394e69584f657746444a5255382b6770303259643762446b64385a54737071536d693969614649496c7a2f4146792f51475831334837416e58315a4a4e49426736345034616d57513961784658484a6f76675769757063566f66794c53725a615155517a4e4a664f4b6f5a7a6976725367774f6f41774a6f506c7a4d696f4169484c6d304b4745315a4958466e732f36646c44506b533676717761746334357a32644541366b514c35506e5032436b475671376d6a436d53524b5a33744469712b645841765771744566685579396f3937524f50752b4679357763715a396e474b50327045654176374b41716d647370656a5736342b4e354e4d76745650366176686f43565642644c6f434f61505446344b5745784e53512f485a2b6778374d78394e586669586645477470336f3647645272687a74494c37514766633058767a33636e79614b2b67594f4a684a5761566455596663426c566e304c2b522f7a4f7a474145763855514e5367514454536b4831397154726439776975534b68536964312f5473645352306459503841514f523550654e544a5130786f36507a56316533756a52567044504838553054654f6f4765795a754f5578725a38684957667847546775533067586d6e3467574d34726b69737076632f717039504e36673130754c5536636e58615450727939685a4c306d744d5667534f4545337a6364332b67586d436931723276542f47386d52736a4f6564566650506e315464564775666b6361526f4a66574452387335704f6351636f772f7a366c33417936336f575a6b45304c4f783049355746714d36676d58426d495759633758554c4f45745349324c6638414d336c44327a4f627a6e2f63343951493573736575356c46576d564f6a316270727a6d71576d57514630307a664d767171756e4d76767a5843685170344a72396e375631726177634452646c5a6447446f35616e493430324b6b537071754935454971707a6c67686658304551314c495a6638415478494758794e4e6265663042446b7a5a632b757165656d36626e7a3255733669744b48506d634b776e5264714f2b4b34532b6e374135787866444e6d714e782b366b6e434366454e4a724f317357617662544e4f6f4172654f6a623134324a302f7235684779696674457466424833556d4270423837562b2b667639416768556a4b4b52476574484f54744937615756704e2b59326169756b61624f526a314a4e47706e36597068413049314b622f414e686e2b494954727543686a6f6667726b36656d714c5069727a667264564c4b74704e303077755957684c2f446e6d38456b4b4c32764253477a744e6e744d486a6d4a52325534304464486f354b467037505866323262704b6b4d4475564a5552705a786b376d3837384176413074366676414b543646552b71613161486a57744d2b52564f6650417438325349554b61314b52735333514365645947546b30462b2f32564d3771614a76324144474876644e6573664d63797242657455357570625a58432b6a4c774969564f366e547058454d374c4a36626275736f2b574d535948374c71795459442b6649315761353234734c78744f4271654874592f32366d74657a61566e5a47336f36646151676c71304b412f6a36353069374e79557a30484d7867693673503574715a71464e4d506c6a6a6d5041454e33792f50385747526d343644456e5479784f67436d6f6c574e677830544e4c4a4f4c512f56557830555472416e6d4e6955344a634d486d596473526a7537776c39506138697675524e7976786a4c5266416830756c6b357854587479796e744a306457697a6a796847716678326d6a6a464d62396d6e6c4149476870304d6e7035427a4868364539756444426f4768654b766a65412f4b577253586e4c67534e656b4e74634e6648626e33724b6d72366f365262545478337730424e5651734a744234627138794b43735a474544615971622f637649776f786779474367675041373068456e58575a7456457867377679774677535535715a49616234384a4534644e474757783078726e617a6b4f542f49727063464766515538384230517562646f46477464417772417951647868534b7858563963772f716e4e752f4d482b79774f62467630797a35722f496a494732325a664b58576358317959312f487a32382b7177537a51433058552f4747774a68325a6869332b706a73572b663968576533734b636736356366523867325156594935694372732b6e6262786e545949356a6a356a33436e56755166376a57414d324f6d6644425a7566656e5a675a59554265517059326d58557a4d35333141736b5050504c68356e795266577a59754b4a3743584b334e475834445768494e705479644e5650466351396163526b58544d5749336b564e6b42517454396a526d6a6b583768746e2b523130436b747959526c6f71353972515150745032665954396756454a7549737562736858743832616e4f525270476465634b75542f4231376e774c6346466b452b626c6958456c5a4c566d6a4f76336e593337577759653842644f6159362b595154714a4f7147724c6e30547472357031324c68647039526f587255583362472f45744b6d454c4d39677a6437577a7469774566736d6b2f622f514a4c526f795572304d37526c596152584845306f616831644f5976644a69417a4d58435062692b6158515070383967382b684d537167346e346d3235505037417a75315a666a665a7566465844704c6d2b794231723864784f36427062393178564e69475743707739484e5a49766f6d316f427868744d51417552455a6e41615251362b3948436575624635575a564c62466e4b733750574e516678394f593752672b524d30655932684f6664785a44535a48536e2f77434c386c6a6d4a786e67483832506979435879326a457476384147742b53477637576c4678687a6f66632b353265786d3952515773736e4d616b4b544b55327039337769722b6d5a385a424a477855756446773966554e2f455463525432784f31734e6a7939463064464335474c2b6d4e4c4943634c32635952642f6154746637696a4f4249737a4642304d756a4f374f6a34704d33304d2b5262686c2f773053722b6f6d70385964544149746b352b6d732b50354c4a6e49344a6e2f6d45756b4f514e42386e78356b716b313168304739666d4f53632b6c50535836726e574348436173326f456455673665433332702f393971774239342f555576513070354c72573251546f376d63376e4f71792f72676c6c434342344c5741693534676656544b3658567263336e4f75446e51316b565548484368644d53585842473069666c2f4d48633753737a63795071564d2b5937436248527163555447636134445034545559413577536b55367474676345614c6e2f415071694d64336633574838626250576a5235496b6b4c5664634e467362544649536647464e6731714149553075434837456446476a5153376b4a5a617a4f7a5a4b7235784b44474b744f575768586e704a3341545a334a644f30525a336b774559686e4e495463676278324c66502b77497a74716747594457544c62325576716e3166763063304931315a734d715a366a6a36762b5136735a5876625935744c76355a3633384e636b6c4230426a545a474e4b35354f4b6e30616357675035677769696f2b446e365a513069375934717176326c4a43366a2b524d4f4a50552f587864416151464979366d4f6a766c722f6b55504b637053376f333264536369785768746866772f554f5a2f4878777a30474365544c346d63464b4c6f746f514577796550543976684774597a3548456d2f594f706565514d55632b6e6d5a6563374a6157666d746d6f412f68374e4e775076724d514748695a78426a5737543552427058796b76507469584d326d536d577363784b75367a757067537a512b4e6b732f76715638624f4a556955327149454b557758414f51514a41494449645849626d6677726a6b306f50766f7278706c2f5048393053537a4c7a2b4f644b485a656a305a696f2b776c674d4d5069416f76794345564d6f56516b2b777879306f5a33357073794972674b576e4c6c6c69396a456c517952614767785853362f324135594c4e4855686c5163524d4666616f383369524b53745365726a696e62704b567843755165337630386466585a706348376674446b782b2f77427a54437a2b675a3745547a772b716a504b7a77625056625377796e746e62557a4d682b6b36666e626b552f36526f6a366c41422f724f6e363378455076463031367838785748783042496f5649446c756c4e6564416e485478744b30706f66597236726d544f6853546f5a525638496d31422f6645724c70356c6c336353435263504b334a57316145596a7662516258566f76646a7a4251356e30426f4964476459353658525053382f7744727a75674f656f6b544d39334f4a4d716e76777459756e4b7a4b4b4e676f6c3954784f3279774e654b4e4d4d6b31466e316864725473476a74433642645252304843494761684d7757416143766970525271563571785239546a362f61613366596a666b6a42655a6676556c364f784b5065427777706e636b356b2f434b2b6b456d786858724f68646d643554486a362b65776c4b6861576e784d784c624238746e614670476477737150384134367442652f34507371535447304246765546756b744b334c4a3032777a585367373644444a6c3148785a6a536e626f6468734d744a4b4c6c6a4b773174503550354d466e2b7a4a5167465356304e3070626161376276737a766f565370317447536d4643347250354c4b6e66664b617173314f746f4a34617a3461467a4f412f656348506d2f726f447a677a58702b796b433761626355655574357030456e4743524b35503079544e416946307531617471615772702b434f67586648777a642f51484f3976706c6c7972494449356e64624247384c4b732f5370766137506a346261395a70702b50514975396f39344542675865695175544f47504c312b337275466934474f784841624c4f75616457745a545a6e386f6f4f41487654555636563368575979676376334b4463534354556571553077424f41464e55434e7169752b4a6561745830616a43715a564431536b58366978716c7468426b395579493565454f62786e3664507746684d3579582f4147523973784f4a794b6c793231445757613873734d39426f304c656351703865632f5178786a544e612f466a446f772f58636e32557354542b6b786e57323668306241446357386d47617461692b77655a5865766e56714e453358317030736433544e4d7a395166765a2f334f4c464a54662f4142682b6d48372f414e4e4c36656353475a6b433438724c704a576d395062415454454d31645156556f58486f4b6e767a54467250644c705554745937704b35397a6c4e4b6d6b444571436d6d74566e387137486e654943344c715851682f497a37557a37774b7873464e4336313964635130614168563265772b496a70516c7a682b4874583942484c5a395973377559595a746f336a786b7465484c6b6476637856535753764c4963557259574979786c73374d67424d5851544b376f7838644f315051486d467253587233704774467141717848613175574a6c4866654d754b354b3962756e6d2f7157366d6a515833727a4d783932556c52632b3459635050553768497330327a55514d2b53624f2b74705553565a64566a50734c2b7744454a4c5a51385649706356784d56522b6c3063554a7071706f42337664526d4a6d72527058397939656776696a4b4a64326f4b4b656143693057725a6530536151507158386c412f6f53706379593431544b34594f4650516a547138356c4e544f35333631744f6d6e6d6a39782b4b2f555a444d4c364258707837443170666b715378615876555830445a6d3970627a363031452f62632f6e3977333133366f30367949373777376b73626b7a443337794374536e7446396e424e6b62577a30465a78694236326f54573736465036636b4b566e55534f4b716a546f6646705a38646c31546568456d2b36366656544447675a354c382f512b526852735537327259314e4b667576542b304b426e44352f55784d785043524c386a4f34677236545a7a5135625a41516a717a6b376637483965585737474b4a2b4b657050535a44787461754776764a7071434469674e33395149746256656d435631456d7275644f336c6b554546564c4e6d56722f414b2b6651354c3432504b5850476f68467a33714476476d51453559633444414b65507a77646f306158674a44397457506a66794f5150503859387754684e4e55376e454e6e4a6273386a36345074384450415342716d4a70534269746f707a442b78513177584e364f5a47366d7552474f53706e752b3235733677664f6a6852304a73373866776756684d59326b545a3741646d67483275354d79544b4d75445a5433714b36613963496d7877476f5765795a624d507479497a577852415a4b366f785343492f6e4d4d6e524178686e54504571766a475266597447716371576d3679654c566d376c6b672f727279584a657a6c44666530357165676266686f6f4d507a774c587558704d37472b7a744d45736c574a464131656f584146765a334c5a5146436632364f666e5866496e73796e52734a5850623830377578334443516b74634c75515451705a5a4f79533653726d6c516c524d64526468384f4e676c35425a3153374f47494561774e3337614e48446d4e67584c6c674863364a36583069766a3455547939644d2f7233764a646f5a764c464c63466a46546b7368543265685a2f4d487559663135757242354d75594b5762434b556457717435335677303539583771624e73556c326a33696e6c546a5457582f304f70366b492f645450375061526772785061336770386a644a2b69714e6379425237675358745a7076597854617569745a6c5a4b6f6853585134464a752b4e36576c3751657a396f7a316d354d3036585751645a556d66336e4d57694d36556d69506e2b336d747a685646386661472f4b6b50595241422f3754424c713670313551566f625253324755564e624c593232375153316b36574455637637717a2f4147324358533737324171387a436c6766415a423964584c44455539595339662f4a616b6e4b444a54454f2b38545a354c4b33636e5831744859334a4c682f732f637544324e7041762b5441654931424359383732454c324c597736667255665457694a592f734f38462f626847556d6436306d664d6f6b2f6f544b627449663044765a58495032612b6a795a585a7133435a7a304f7a59565a314373752f71695579666a4346337739446f2f493466736d42642f774465707749765a5049704764534c56386c703478756439486874705a474e484673725736626736792f6f3878312f4e37414c346f3347756e674b2f5142385967526f706f3531725732423173485a33574d68423351536265356f31653154726d6f562f7553747269584f34462f357559522f304666626b623265514863317170346c527678367563613958624f764e5a5553585556326339362f2f6355587656387771732f58656d4173754549493658366c48324a35687256596a49474e617150633854785a523058797935716e6b68617a5a5a384f63582f63524f526662543830763639775a7846506e5761446159327a773666495866432b6e4e7369466153396b7936317030506a58305844516f6c73616c526a6d66585344692b4c6e394155557570576b39355748472b765076486e33704443756d574369484a566d673237356d75537935615566414279385a2f4a4e61454b654e556f7757324c2b4e78336653464667305574596e4b4a4a79386a6978696f5646666a4f49526f582f36307968436e6c326d623255676b306d6f314b624d597a47656745434e595a7857343862474a4b65755450636458574f6f66383638324a373975556148593473585a6f4c6e6278795341766e656f45705a32686b44436a465730306e5071523755575643433473784d677135476a4b6e6f5637577950537450302b6679417249693738337733703441476c6e79754168354d494c73424e6744526e5a593142714471446f625a796f4a77326368637a6e794e476753734642734d706a4658584c455865784c5667537a4f614c31306e43346c31796d5a637230763542714a4f64314b6a643955574a4974495a52533966474d6e2b41464a41434a4b5a30683041462f4b477172545456524f62364e4b7577565549766f545158334a615a472f4b514c6a7a577553536665624866367753594578507a422f51506c6e51796f374878535a6c556e5070736f53374f752b6e4f77307656705544546f636579733070304a3545476e6778683833764a6676634367725a6c7666744b70434b72556f6c62325739554e4f5141533048534d2f61352b4c64316135352b75304978556c677064774a334b4d5059304441316b7a6b3371777071746e71304b723058796f664b716959676d717343716d79646e422f6b4f53735a7779482f48736f63417a4251652b6b45395149364963372f30396e77722b485171676f4246466337494877793871302b6e59537a7a312f58716e6e53346c542f416d705266496f6a5641437549323936493153684c39316472556743663331777778395a422f4a575279366e4d354d622f41427670442b2f69345038416d6c6a477142763734454b38345a6d594f564a7a6c6b4d313057734f6c5630316f3867376f5661574e385149304b3869647236705273466a3246514a2f59616b657535596f4458544e597a4f41454d5853774732646c5053693139564e674345725636476a34345473664d5248305a75665855364f4e6131587252523761646a737755673732544a762b3839654166427a4f546c3375355362426c3761355432395453364258325254586b53726869486b7469714e71694147566b716e734f717851532f6f6734367650352f635344506f6e6c633964744c4772316d52314f626b516e7a6c7049546b364776586c4278504b7634656a516f4473354a5862314142375932392b5663314652424e436e446c6d316e4a30485678426130714866567a2b4b3738486147636e434a432b41735130506b6c6d6f745a3369557a64507265556f455a394e507642656156307a44356d51507347504f3046342b6b6e3264477a6c306a453030486c4d496c5865507263366853714f7246334a7a63587847556133757033383252584544382b766d706231384f587876592b744d716444504f654232545034357936436a6c7a65555a3543776d70597843675a49346c51384d32434b64784d764c4d704543564b78703077552b4f73647557554a314b383061737a4c42732b6a692f5164565661747a42314b486b6b564f4e464e4d644650316a6f427835317631335341554c4d5a46564b4850736d3566546666614d4639456259466a68366877457562672f4753322f4a39667449635a387373663774556c5076502b7442394779505a644c6c3136576e6a326949317a52337a726c415a497646382f49316a306a476c7170364653757636704836574b6c77556a51632f79764e395a78476242583144445673795a736d4e476250334c352f4435434e7850384c734e63724e7569365a49304c44645176746e336d437459302f59663841474878567052597855556a763735446473476835446b315a39716b4e46504170306f732b4874453171796f6c64755a336b564e44534231674d316f37574573514d5373574b714a6a6e622f553874664c49672b5a6e3674396452544e78366c4f6a682b432b74546c6f6336754a65336d70546e31655263426b374b734f5953346b306172417844502f746734532f713354794561337531592f6a6d34695754786b736a7546737672516f794e692f35516b314f326f34393457772f63557550534d69396c4b666265464b702f3066316e5245785051512f42546f5865444b737a34377048756c72484c374e354c396c544e695879424f3373502b7a4251624c74446c5753497838634b666d433978702b597070723747597a6a76465a4c7770746643336e686b62723031322b51716b544e712b4f7a683335785a512f4e796c396e4c3741725a5059543078366931477746743750536b5165456a567644312b726939575944714256656856534e74575668316d616c31357a6d393331797345665a4448525a5238726665342f69706578366247445562645a6a6a547944666c50543856544b784f716954784c5378575559696b5a647a74585a6269555635692b7568754f644a44442f49616b36786f4e376b37463668573077613954686e78692f7744594c2b724a356e6b766f58356858526e3858664c393661584f305a4b7137734b665a306145614569494968624f76362f6a5a5a4b5533544e5559544a54534862414f59356c5969757055507448426c33504b7644736e4f794d7a4e6c787645635a4e4d4f6c6254656a4769747735654a6176416f7165616c707857517437576869545a7959774566724631744d5a784638693064724338627a393377515a47374b6978745874636f7a546a6f7a53637469306f6c566a6a5a2b4537375830737461514a346d5a69526f353269436e375168574a6e4667367a42586d5a487162395364316a7366794c4c58464263476d6c6439655669665530664b35356661386274524a662b307574435833557353426b6d626a61585761783950754b4f394958443574363752565537397451537172634c3861693236585454464e506f4b672b6f5351597967387653316c7364512b66544d3075576c5031414b6a2b72323455787447322f716a712b516c396c552b2f71626b6c735363612f32446e7a54446351756a5a715675324d6d524e3967453577455578356f4e56414b7165714c736450395a786a4d5a36437576442f41424444322f49416e65444b346c62692b4b2b6b754e6e4c69557577624c71724b6a4637466f79306a7a50417566626c3934616867556951574b6254505752754a52466f5a6931464a785a3044516a787a493139454e4e5135704966465a775753725432636f546f5a4b6a336336452f306f2f6d43634c476f436d424736446c52724d7956707a614d773850364764645572795a3065524a2f483252515a657757674a446a4d4170557176544e7850514453374d4963343668526772342f43656376787053314a7363366570716d534169544d72307163374a70304e2f74316c6f48394b7a34334831306e51454f4f59614a67524f644649576b2f50736e4730727534505348736e656c66696148454e7163744f666c54304b64563248782b706130705349697a522f53706e574b525334326832764a3566594250346a4a5073717a58644a517a764f76314f5068513745614d656f4a33306f71326e4c64477a4e57413069687645312f6354385571584f676c5459486f6f38475771526e6a37653135795a4c755166557567377861575a704b5166744333693954502b5164536e516375653071585464556d59424c702f774256352f4c37693357514f7270793838325a57622f4733314e4c4f324c597171756d79616a533036457a30735531304c6452305537556a6544696f4e514f5831502b48395a6365313567624a4c54506c4272794c555a6665692f6b4e4a58786f762b766d5a715753504c52525850784c76346565663375656e3252484d372f49544671314e7337746f4c5a7342576a77706d4a2b38327253562b36615a59644c73376e6a6f6354473179316a5566435872636f53733547416f4575735742304d724b623971524f3052475349316370764876386c425a6f54333054766c742b66502b5a714b45302b30534837487a4c656e34332f44326c5667664e4e7862616169552b4f59576c55723749352f6558755953436f753157485343754576556479714673344b793566624b6e3947532f627a736158534e6d39344e5946782b6f754f39587031342f6d53566f694b78335038414b5a733661394755775a6f49707a79464e4a66795435302f356f573950373553416d7468454a46534f33623566324654336f37786161627673364769396b557277627966724c556f3035347149374a354571574e464f4f72472b5a44464231333031634267452f354f5841727854786532767943664e37504c6c4f356d51304c4b48506e545072446b364d71343033447a726958557030724f66454266384f6d70645a7a3270412f36435565716d566e35684a6e376648783765557366786b56745764537031334d6e56376177716c4e755a31302f774176474d5a77684f62324b417858534b6b544d63656b696d324c653475612b375259724c42576b59514d556c78646e72765369322f4b4e4a4c517478513646436e465573783976372b54356c3857336741714a455937492b55756d537276537037536e4b554d4c6d6252555a6a585453614971564f51304c7931797a4777462f4a6d744b70485455484174317235312f6f45716b4e6d737175767372304d6c56656632713752692f6b306d575a53374b71416d484f504d386a4835446a4b696531795766494451506e766f2f714f505a38782b6d79644246424d7a39436d64326653784b515847394d63467336794b614c67516b6f5a35573556416b7842715341475975636f6a55564d73377339726a41543874696737713838687a67716731395133624650616b31382b6f686366784a304c304b6c4e5573762b6133746e5774706b7141302b38304833346b627035596b49654e49305274366a4c5a6d4a71694b6d4c4a5a4b5975746d767a2b364371673169732b5072733145384f683061676b412b306154674366356c3374433175376439762b514a39562b545156796645454766306c54686f57614f4a4f3139505636454164354452307552426d677569674b564735587339354b42344a4f6b35476e3369456469524a6e383457666d577a514772556f526f624c6c795a475670632b6c43354b634b656f2b4d42635562337a79483172424e512f756c582b35567439664562552b6c4f5961555a6b3345574979463671426e7a766c4b7071342b5432582b50732b7850594b585439754857733752484f626c652f77436d67425373442f72455137314f344f6154356e436c58697a74507472676f6e3048746b446a78706161306f6c45797a2b434c42344255703936542b516e2f5841334e745474514b2b42455764415a617459704e6c463451355a382f6963354f6969646d6b72344c4d365542706e556c6e78635379663748426d475335774a39705437446250306b6f462f694763326c6350387a712f4670326f7a4e6d56734535396d4b68624d7a6c56427668534979304e46596b616759376a4a48474b6c6348433357666d4b7638415643682b685545355261746d6746627a584731696b565054526e6553424a794c71684e72766a4b4e585563544f3535447771714a322f3841594a45303755437073336e66697a704734475a647936792f475a577a543056745932574366696d333763444b454d476253684b4a74444f41465845696d51557148324f742b6637665964466642654e5634336c31745333732f7742566c306e7a324f376354346f5951376654382f766f6f304339314c326c33333845584e4c68744e58476a7a366e6342766b43714b5a572f5448514a50573935303771733833367633556577532b34364a3374703539674a454d5a78504b4648315351412f655a364371356a6e5a725276775a34486a567154452b5076536975305934357937342b485a7270327264563250342b6436355a47346e714661314776324b44592f514166345a424d71726a4d632b783574642b75784d5a494f62527a3963467847512f4e51796a6a6d6446525447726a763250743975564f732f49555a714b2b31355a6b424a6f705470685261464c45524f30492b7a727a5364644a387436772b696d6634574e4d52397a717a63457839366b43464f6f74547a786779656e6e6b464b59774454484b3038314b705a574e70366a534f704b67586f6d544f695333664a387253594874514876466e73555468704862743876374375765277394762304e2f555979445374486b643838494d4d34303055614f677344582b785936374e5a316374784e5438774f6e5437784e7a422b7955322f7a66352f714c77345370664752355a534d7a4167475557324c4f3369576937514a666539714c677567424c6b69336a50386a2b79464c686d4266764776377a31344343697830735276707437484a4c3834797149567a4d31477a56547851327557755a7046597567692f7742686361662f414c54506e7444744161433045456f6f48705a5253736b5663575367516c485275726973543132696c452f766447437754774f7236426e78503663332f5837313834306b4c627a6a64586e7630643269756658322b44524c506e555355737769716a6632552b326670616546437854654a483348326d6d5a3350734b48696567624a656a427231492f49394d2b42545762595539616a72567a705574525a777a31312f554e667872475558392f5942316676547741343768744b6d704d7877454e2f494145397766484f36637331664438326c6e494d314e784a4171594c4d364c534263446834775257546c69526645732b58744833482f414c68434e5076456738346f46666f3157336c546c3875792b6a37326c5232685047674c66747853526c396d6f57794d6c49694652764a745836366266386c663162342f702b6f734c774f5775543071385a6c71534b7669774d743145694c4639524f716e506a487373365038756a4b697a33543841684e68425430584e2f776437365834327450542f6b4e50414d6972783777625a6e782b534c6b6f304e6e55683672515a314c704c5675546e454b5a6248685176334372764b766a4176662b7665414d55426a6159744e74306477704471434c3150373150415a6c7a55545630567958356c3756313144564a65624f324f555353424c59357543525042586156556b61692b555036754a4e367636687844366572484e724e476c366a2b4b4c613171364f4178637446322b48375570504f653036462b317642364b592b553970657344582f6a476e574f627a71487671625359325a4163644d79656e567a2b474e4d767848536c4143334758767551424c6f576675574a69584f396238774d6c39776b726a59703259416a78366c6c4f66792b4e6e61653150577433584930576a577a5254504336566948646d4e4a2f437833444a51676b7753514a44726b677056685a32756856736b30717862535048532f54456c51744b72326e4f2b524163716f63502b723235366b674a696c796f2f31513767744c395a3666654b397a594642717a4a57553650326d66355739555256536b37726c7457735870486b3557334358754a5a5469617a643867394f696a3464425a744c4a6e51307979732b562f4159703839334763423943794b6f43735679656c7448755847766e4f417232667450544e58444c732f77445766377a3134436d47753758705761462f33754f7a7a476556774b6f4a49543043376c4c33514d39727052483453367868566c4f7a356b6d517361442b426f4c49386151703030555a32686f30494147552b2b5051737164706f58594c32724e36795153786a574b31764e4a47617a61596b5a7a4b396c62396d52484c506e65743758643752325a466655394d773731644d67704752624268455a61457337386e666544506431332b61514e2f2b413236655146504365756b57706f746567686a304965305a6145476f676d6a34725262323176735a2b716b70573371754c2f79765131774e4d75475154664666326872465644536d6d4a77534533554b37714a753250435a564a64563872506b397054396e2f32644633552f732f6d345175565732636376554a376c6657777a4b4b556d722b2f3373787566596b4839636f6b3156554c634b436f5779686b5a63397242702b757a3970443338393552486274387637434e6349704655496f357a3442354f495547707968347a553078354e6431797449506b5345637342664f41434445754f63794d47652f6c78396e58422b3339736541697930694d494e4b44586a4e373355706f7461773167633866324c5864352b795779594f702b762f7462376a42356f756d79582f487751583872416f4a7a7a5733334f427a6d765050792b423373636f757a2f4149334c4778585148326b58734654676258686150494d766c416c4571576b6e502f61464e6f3458526850746b347236525a784c4566682f307a7336702f734d514e4356476c496b4362444b63754c30326a4f73624e483768646270497a2b3044456b705334796a58506b344c544f5332696e68445237794d4f39393438495767437557336f76763551686a6e527336385567316a703757537264305253527838372f6b366b536372706b2f2f64314c484a3448362f6f43576d49736a446a6334354c326363702b6e4f7271694653425430585573424b76616b436a5758772f7235552b38425a2f675a2b326b647533792f735068423735437a74464c36624d324a6e5a4f4532426c5a385231674d6631504270373765315673364c6957532f6d442f51514a39354262753563414a7957696d6b5a786d56514641305370527a52717236757463736f68335765516a4d744b41716f5358456e3058467043526b70767775435238747a356a6a525a533261676c752b566955716c6f567a50613961525a594a516d48786a6f524d66306d6e2b714747372f36632f307a663147597a6a76424752303954336f6b564f3332534545394863386c493752795952474770693531392f7a4c534a6f2f726f474a6d43666d2b4b6b4572692f5a6b53566679533243695a665356513178735246483337497658326337426f70514856464b755a6c4244385166414233744871316442512f3158742b5741443149674e434f35784e55764f2f337a56497570706f363632706a513458666a4276386631646935696352634630346b4a434d366e482f41466175636333555169324e436133535768396a5257585355665a712f64436c50526f6c50746c4e51396f575450384168625768305766664a59664e373658707344452b64395871786c717a6c4c2b704a6e7967643166576a303356462b7177615332624566584f63685850692b596675423076386b704d776b77704263764457353838554946544d676e636f4261372b2f473943616e5549623867304f714d46647361344f4a6f487044372f59674d6a63633363636f334655687168593936564d59373769455671437956717759617943646154426f4b506a565569416d31566e766e4344616b6a7536487a3837634e684e4a613271377965556567487430646c3838576b496471586e324f5677573843616d622f6337704b427841447048545367676e612f6f50514d7a554c35503235434c49376c566e6c2b317a4f616c58794a4a4a72596b4848524770614142625a6c2f304365473264724757394a2b6e48697457795151484e49365a337144326b343578593264595a2b677866765176357176682b49476466786f4c4175704e43367154474469744b53623730494b2b57512b4f5a3948744c576a455847724b6c3338307767486f2f4d707a6939726a2b4932415263776d776b68596d376e7864437042503841656b547a334f4f6d69626b38765034302b7053744832477357446c48386241556e6f4f2f7176782f5439514930655175565733703530375671576d655237654b54594a35347a31524c6c47727276636a55534a633659455a6b737935772f3841414f57446d5a613339712b69364132435650365246497a363838557135582f432f77446246677950356c70344c564358324539636166384172723668674f4346686b374d37796447686d7259366d577078454b4a426334366d63745735615839636b7250324c434a52476b654450384144387a476867717861516357663273612b6f3075734433676b6b787574595858306b6246716e2f54502b666c4c716e694a6d3770415a556436474554467a6f373069552b6c6e4a43414850702b7979786330346f305547494d554e484b4b4667665461636a5647354e4143716c72656839656735353172706e744a72506c2f55635769316f7357696356496e7356434b53706c567143632f412b4250422b79484f754d652f77434166756f374b766e4969544677374f3557507837724236415576365833792b6469757568616d776d4b576f585364414567734137376544586658784133546e5739795454307569705362587670613966387252536a692f736c514e43434a6e4a302b786e44556b41347873776534693747646779564b6171444574446e6a6e7858566d66475467696a727776793570775371536559364d346c7a38506a5a6a596f2f59637a6b73424a41414f4b4a516e5978346e2f414354666b54424759684a70554a735777626a346277314a652f612b464e4459694471774a337350324b37547744427a45764e7a6856644d3871364f6953626a6e4a58584d6f304a5355316c45333243636c337a4d772b423051354e3051567756454169596846764b78554b7043366566586e56626b6b59412f4f7a366d3534726c71377067497a6c313664423967374831714a7574704e727638416b666c344451414a6c71452b4a666e4b74595a457535364f316474625039587075446a46736e70617041554d446f6a776836373338614a6d4970583044504e574a6242715a70453754366943325965796655746c71637635676258504e4831747a767236483246677466766a432f356c4f654e536d4148773437797665764d5a5579727039746b4e67715a7831745552652b576951436679585556524f53766b466e7a644d4a316673564a4876394256666c30334c3558504f766e763058764f745271572b386c46776f394450512b796f616a685a487058663757716f3936706d6970645a2b3539414e736b4c5034586a394b50686a6e78356f38324e43465075567a762f7148437074536b79536e676b5358734e6a766d4179653835786f622f51533143704e5756464463783171535743335141595a31677969482b356e43347a72424c6c44535279516a3777506d5a78762b41636f61426d4b756e35727a737058396178503366485a6c4373667346714c7a5933766c35462f396a5742764c6a2b496d39647a6f306d7671663841553232674b54386c527a544736467856416979392b614171316d3179326d7562374e4c732f507a434931706d4e3168696f6b6336353765496d392f525353356963546b476647705a32617438456d586a353738325648633538485a366a4e745342342b56326e722b397a4945305548384533556a4730494f475266437964644d422f4339314674676a65674752496a464e50657a5870666b5644524a716334536f6149343675316147615873434e337956754d6b544f345358663044394b6e493243562b375642794b706467445878334f464c473666754d4f7453535a6931434766384152395572356c382f587a6d565450653449654d62693262336d6855696371694264534a6e584a57783472717143506f515a7366506b5671616c535638412f3231326b5057413265304453426249505258733046722f636f6a6b3737484b2b4455744e6a787254484e4f2f7366364167423130362b4c4e4d315a475a396f4977622f6d4572676852505169615648482f7534353355544a2f6b346a486b7673374e77596958386275734c5249545336656b4f6536696b69354d4879413856784a4f574232324d51716846446c756973544d676c516b5647437165584c4d37424162624745787646657959306879512f38415954516a6530694a376c545772566e7a4c6b50363068536f6e49346f754355585866777131304451786a682f307a396d4971622b7a676f6d7155414145544d334e4367793541532f6377314c69514e54614c4a32527a4d6d377973754a7671646f4c4c2f414a2b4a6230706d4a6a4b6665584f7a6862552f45615534524c4346464474425065674c567367746650546c396638417267684f36776f7148564b36614741484b626633597a2f61446c674e737a752f48592f566d666b53614e53542f6b42376979727a71552b31545076302b354b394b5568714a76794c2f77417a536c49703674795139344d7a76486f5a71366b33553055486a4963706751786f6f573664656737516f72664a3745754365716779574954712f77412f59664344324d63444459617932654b4f44756c3966566d4a3637787372357143627153702b5267717a786b334d30427175554c314d4a6270592f63542f774461426b4135644e77566e792f6b784b735865397a555432565a747748306a70306f74545273704c4c2f414d763050514276486d6a2f41413537564b5832634966744778457a6b6f5a4978344e367252635273356c614351525647412f59314a554a6e596f575a37327355742f32474a6a4e78477a6f68304742453938644859595761616d3045476570497271362f52577467365334596f584f35386646352b6a375451416d31394a72534b57797559514a65505a64564f5a73337870586d44324f52774575354e46564b4c2f7553384c5757335564396b5a382f4e6f616448435463336b5a535478724432644b312b31496130783276584f32326d65756157534a4a39744e58494d72696e335536384d734f6e7654696e2f72735341636b2b6d48552f416e334a2b496a54555262524a64644f646c6f73354d584e53666835363575484b4a58576a3349366143616d316567756b66386d674e564451704233552b786f614372383362396638416f5963752b39723058647a74437846364f706f304f763841753935444c7179366473444b58334947325655367441356a37627959417a66653544767372414a323765624f63417050487475586f5738366d36575a30793858513566596a4f624d6c71473350706a637861456a7759616e38656e7266755030766647307a6454535665547a2b7744624f646e564f7a6669476d67344a6e56726b73726532755254613045746b4d5569584e4a314c72724666756e70544c5a5a2f47304a396e414e4e713337706b5272625333794747694a6a704c636d32375856425734695054624a6d2f5842644d30425a396a382b6455444c35693754396f32636450395a50784449464e7178694d423675313139304f324d2b79374e3472326f746a6c7a62726d5a7a66346d4632704b784c72663571556635436f556853624b66686a65667847422f454666796666376748683656476e2f316c7675527844617076725a4b4932367a6c376c6b76463630654b6a3476707036576f4968313148527048457064534c6a39335532744f4979506e6c2f6a7876686b72625235586a36726f2f34756253707a4455396c796443664d686d356e4b5948305931316552666f6545342f6b6b535576485154425278717474337a675555374d304f6d48692b69357563777573464e584d4859503979665050626b353266325370635679354d6637413949737a34665a6a6d716950716a63343743592b4954787a5a3639526d704c725652426b397a4963654e786952536174475a4a4c4d724c4c767563706465444f3774564436515642574e46644d6a566b59517a59796c772f794e692b525969765a7173647379467a5059684430342b68792b70344c48754f504964616366335252576646654e7a7a4133334a5730777144783134523359382f3867562b4e745030344d764e70782b614661317470775a555357726c716c354c4f6469344a6c4a6255313141355356554a6343584b414e714c307650782b7a637949504a4a4948625357434d6d786d45317331445a5941756f6b304b72524575706f72595377593250536b6751703378494749426a4d5a7834697a4f356d4853636c4f6362736237696f4f36434838306f394c487963627372736166346e616e736c4962696e2b4b6b656b373661546a4d53363736375a4555567355464c624b6e504a6d7a6f56334b636647794d77326f2f7744536b5043765268594474447839703535534e67623747684c4d4b334a36524b6d5a585a58774532374538437a3947576e4d365930314b57363830515a4b4c676a2b4336584f4143514647656d5850746b65386e562f416777364d7a6950354f563366446a794138575a744c4638755051355a51753165554e34613956597a386c714279637465617a726d527a57564f346f584c397766575351736f2f79533351546d79692f535677586e4f7a6936637a6b6d6735596377376c2f657a306473546d783644776c6e574b386e39724d3649446d4476415362694256474847732b595373686d753149355849423856634e6f555377365935394e442b304c2b4357334c704a7a7964796965774b7a6f476c5357307a70482f70756841352b44362f6f4a527774436e724b4d7852724e5a552f62762b4f71506d4f716d4e63394673684b5857564570532f7943534a6f2b2b59514576622b77366161682f53716f524e4b71697837644b5171507270364f674d75724c32682b62584d4476676c5456376b713667302f4548746d39794a6c754a5037413361755134307a63625649745862637071472f754b704164735859716e4f5a716971716a53476f4d31352b36536b7a6e7057426e55435441516b634d554b563533753675684b3176696846713542585739496b7873453639566e7a456b4c4c43556b4f6d356b5a556758515a7a6a6e4b4164486d616a666e6e30757a683145704f61323259335253536479457a5768426e776f58786b4b63306672644966694a66584f2b74387a674569413447664761496b7369584b306a6371525a63566c6a6d4c6a68686c357056557259524d49303254743755527a5543535a7170302b78586673416a6d5a457134565a525a4c58727266376762333658577978424d4e686c4e39776b4c68524f6b76685152457077657873776f4435434d4149577436694e444630384e73634f67724c6771557a74414452626e356175573245772f62556f766b2f314264375571536b7a492b6d4270423051645379657044484665693956686532704c78517873756e4f7a50636e4e30696336464474424b4a324b4a432f65376e7559632f786d594433504e4f6648597472614a3956745063794a7872304e45313656737248647271695437426c6e6f49763278597346546f7a5544586b61534945733843495072424d66323657476c457a6e5743774a65305a7369462f78396b72712f7743484c376739396e7550356659566a65456d72353667597141317a44566246416d564771656a302b76554c6565356b707a49795a4d765059326a55585263533531764d33494678422f31776438694157545253736a4b5674444e507436745a637657553061466d5144366c52446f76526358632b63745769506e474b5a5149386d35394a662b79655267506f4856795370763661484258544a79506f30417a5637592f732b656d2b364164446e5039646c31334f394a7632593037594c6376377645394146485a394b483231576645336c416b70477447717166513661616b337869354f53747449352f426e6e64316f734248766a392f512b554f473846732b5a387a594b2b39426a4c644743494a6d756a625178504f4473496f64796566683172415631436e39524f6250794e414c59734675442b674b794a6d2b3977687a6f345977677335327567464179634b7076306d6f626c364858454952734b674839554476616636467167555a6342727164586d2f446f30564c4c767a6c4b314a54583053794e7175726a3656476d67754576515a4f75704a754352546e5447487346584f703549436135497248574c7a68414b6e727230594e5662524e2b6e6f64594d627a66486f4d3739704a364646416636652f44387155463130376b734d674d4f56333962555a30545461715a593645704f66742b627a6a334f734c524730456e7862456c55512f4f4b67503254542f41476565315a453447796d7474734149394230375854735956482f5661375a6e6d6e6f506e4c644a76744249746c6f6a34726e426346442f414b354d616e69696d5944397434425567557163463156484645336d6a564d7639756f6f6f6177754174485672444c4f566847636179414a763377784e4c50614568533269657173337274735a58454b4f6462667363772b716b6e57476b396a58614c4f36532b55476c54464c6e41542b354c376842685647414d73334f6c3637475a466255467a684c734e616c6f664e32316772644e4b55334259554f65532f72716f62523844765961685335306a515067475677726449656a496b7031353756304a533269435a55374b34633974565361457350746b357563774f71574a73366157506e2f33567253594e724a706c7a6f4758376632317672353733644c34374f7344554652466e794c507373364b465469596458302f7744536c512b7a6b776d6b506f4175424664544b417072364e72375a656f564d61456838796275576c77557a3253716a6e486776647a674f656e676b435a564f4133587a43726b524b69706448432f4f633551383746334c676f696e73526c44526230617149654d3072307a35784d35304448374c512b49506843647a50364235333631616c66794b39467872665864624969634a686a7276724e76615758765749693735444869424278384a337a502f37422f734f42673162324e46774f466236303273375030547a4564727a3153744f696e4e2b626f584e617674426a52316b594a4d45745348434c6a4642475a7556565050744d3030454e6266325a4d6c566e4b664538723756396b51647a2b4e4c676a553172584438335370396e7a2b7866487042756647502b53492f6b346254444e6e6e5a6f696c6b7078566c2b7955556e7749586d38556b52422f734d79502f4145394e5169524f4239465a624454507a696f37304f50356c70686d6d554d6c4f7178713045766968702b5269353073506f72594a6d496646304434696c78682b2f38416959384331364a6748436d484c7470465879496d50534a664936666f78385a475075747931735072516d36326b51503554417836444a426f712f31506553756738564c754b392b2f4a525046797131394e386c6c5831616856396f2b727049316435304f47582b512f722b6765496665456f5962666737515553316474595a6c6d6d2f71334f66326e32772f39664e3979426e2b556a452f32615548496166333767545970484b47506d61756f503841637970625a62484d6d625a375777763551354e504c715339735970536b656b32657a715746387977506f446c637a3839684c43545046566e7a326f536d6b394655383839476b755849524179715a4a464c597955694e6e46734972435133324c56787639413653484b68304a55717a65726c35617453654f70536262584a6e48334c415864354c43316c582b58512b73494343544c7276305a4743593471616138393947653651614b6d69494456507549485130716d5357552f4f592f534a2f66614b3141432b6d517056387969374d37346766735730715a4a6c577979784e41706a3163396c4e39586441576c4f584c476c38665a50644f4e48363533712b6b636647427a32666f65674b4b337455616c4a6670753548336931614855476c514c61612f693975734b666e2b39795565444e5534763841337045472b7a33756d2f6f444836434e4c454d756163494962555433636f746b7143706448526c61397376426c2f334c6e564f3066615065703470516b594d415151536875644b454d34305478643053583250533752624d726e524f6e744c615754694f4a4b484e424949454f6d42684e7a336d51413479443979654e637a686b694b6c4d786145375675554b576a3151554a36396e5a4a33715937322f546d5638672b3454635456302b3848632f6f4d3248465a4d6e7649346a6557676836593048486d69706e442b48685a7362454c36366a7373713341597661373572306b663841704c706630435765782f4f706f675a6d325535724f3336645a6845564a353775634b794e376f3073354e6f6c517850434965422f696c67664d337378473047743345542f414433744646507a6a416d5356722b7a70537563714f7861484f7262336730486d7253714e6965664a4d372f414b37665a37442b7942327946666659774852326e462b3079387479464c5261754a4c47395576535a77574354334c533168435855715665663251592f6e7a6630475778564d2b6f412b65357055775478736456575850734c53487858785a7053702f6164547638542b6d4c2b586842564d744a746154564130422f6462696b55507a4638654c61332f72695752414d7035325247394149675a714736366f4b593775706e456565797433552b307a536a37414e364b4f57306442766671722b466975797a716a4d546e54324362575779584a6b57576c5558794a34722f62516b6b78742b73317a4f636541507844765a546b644f715136435848796569753775657337614c704c737579754152374c37466b5052347733517563762f6e6e652f4e5a774d414f6a393936394b314553425778386a6634314c6563595669666868352b696c465832486b545234627665644c67446e666a2f414b427136694c52704d67644d6965703750316f73616c64587738656c2b6c2b3175597a677a4b594f70314267796b532f52722f414561552f7744495a7a4e3752513251505a4c2f41423661554f6f6d4f446e4a777a3144384d4e41437731755a786b76516a594471446d2b7a574141766f4b636f506965396f6f6576336145736246554f466b6d6a325371557071692b6b7874522f494b556d513949717749797050326d354e617842784255666d4c32312b506552446b6e465a70517933394c3435546c2b4942595338765958496e344f5a39444630634b6670554c6f6c6e53736d30694c7243414f5a59566642675476346e58306351795536544b73794b456151387375644a6f36784a344e5946374a5a4c426c6e373866797333704244324d5443663964417576776e302b7a7444785478535652376d7370446e4b667837584857376d64714d6e5838554e304d525a7665736e32756578417042796a2b6c595467363531314a746963643365436b5070506d426e6a6672596e6b394f5a6b444d506a74565661436b65386331334d4f486b4d756638796869584c5031624a334a2b2b375955465966624253356b336d5a78574d67746e65505352586e626e497a4e4e7a6e4e4f51364f3268504770654b76345777364733704b50365a4f796442456c66557a535568536679475a39506e3954757832754569575a2f69314f48636a624241745a53756a4e744b7474443774366c62317475624a657a32466d325071716c576f546d483630307847305a76734a55797537647934786b5039585179595661524e316e61476c5073314f796f655a36644632316f736a47705366623438364a714b6749567436344b4a7744367a76744c4f535a526631586e382f75497a5235376f585a32645a586d63555059626e524d747a386a577453725336636d39354c4a6a5653704b796446383747547353704d64552f6c70484f49312b3649723749385a43664e4f50514856627037577071722b747077386e6e6a716f7a5a42672b75734d3575545267385a6a365661553651673634776330656639476b796a6d542f55545470746b4f4d6d52515636753035734c577430573132687039573359787078517a4d34616f614d73545870566248742f624f4a6f306d74582b323841324b427938394b774c463859794a32564e71336c5435396561476749324543732b2b666b5336493232664c41747256334e687a2f77446c3765754553706577796e74574534556e47654559674664532b767237475256533165387078794d35746276676b624f3670724b4e476237564a4451516c5974532b4c3464334c36444f796a3372633242452f3430524d61744956354e2f6b59476f496e45394650666f535542576766347050326d664e434f7349683854665930302f614961434d5036435873354a56507377615645364a6b7067447238356c4f5a306f6e43745632592b4a66744b64633477764e59326c2b317a7a584a4e4831654e7063454831504f4a5762622f484a7173504e735163736b577a4e56444e5843526f6f3578464b493666656c622f3536566932524638547566343139645371376e62626558646b503865414d38362b36724e587969784b4e506d6c73366c55364375524f6a4a7a4b6970716e737171687265794839554b4e55596366593554685743654e5374624d5247424a3967394c517a4c2b7153764f31316e56336c63786d71795a33315a394476644c5756633152554d6a495363414c4f66682f4b6256443766652b6f58687a744767766e76566f4d30715a736a5a4d4a55317278687a7079362b4e4c61496b6a3337545653797a75674c33753065307a75393630382b5641574468592b55644c5a634768424568694c4861504c5a784e533834306e372b364b425a79567a4b493650393036702f384144504e764f4b2b524c4a337a4479475a6566466f6855417074466e4d727078737165316d7851703679723464767358524b78685645784a41585a65574838715a326b5039426b36746436624a744b6d6c437259526657313072313039676f614c563035316c4333642f77415a5a64486a3255712b52336456686d6f476d667741433052646d4e55533932784d314369484b5634754f5933703543484e624a79786458457442696557657765644d75676c714263704c506277777153544f466c65627859374e4379683058573057793364304162524a6f714e732f583046796431546f312b39784543665a474448714d303841676d546537447337764835394331516775746c4674616b5a4b364f394b3232515563396935347a6f6c4c6e6247696678702f6452794253584f6d345a3868454f6d56524458426c42645a526d7146455547684f5a6c385a4f7a63494147466a515842374d32702f774159744871564a63597559646c476173506a67593448464c7152616e31416e7a39716f355731547a635a566f556e71717a4a4d7673382f5633634b514f7a704d766939774854473066656d652f6d79484b5a426c6a71646d526e316938534a7a48306e786c654536694c4e7269782b67694869534a645449566c5335787654773148382f7334372b6f44744555656e5362487646436f32686e32786435567965444e6a6452794c684f78394e2f504737766d36796f31383970782f4d6c58734469516d494375664b52494c516a617742305247614e7162617147446e754a303265484a35714f66786656487261524e6b6f4237765a593032734e30333241417666444d453250657932334e746e72556d69744b6b6e4278464d3776674c4a474434485473347462415034692b59565464363667306e396d674978476e57426734664c6173796d6c35567461504e54362b626f5531665456506c727130462f484f5832663256436e6d59556531667536755a725241726b49544d7071615955354b4d71574e797162615475556c49435478707a5a4e4c4f5a394f656168326230484777714444345848503755736e584d7a6d636a4869744f594a4f394f70694c472f6632336f44675830325456667879744e666b30316b314d745345726a4d666a3747482b307739737a2f41484163414c735845495070564f554f5a6f4c6b736b4c533057457634785873747671756546582f414631385a5255592b393079683547524e556c42716e55454e6b463174397061496739704e4b3353686778364b412b335265736372546e763571632b624e56554d483066307632396c543161506578425457417771794a632f77434533346c54706a735839696271352b58365767754c61416f744f5a57684e486c7035506b2f747a692b4d47787748794271572b3939476e765049545a4543366a597235323834356b33385a6e614f574d6b376251624f376d6851635079436d31456573493955485355636572454d78714e445a5635672b45333862493962442b476171326f474e526f6b7634327a74596865666f6a576e675a4f57454c694f72706d74676c386a43564934334a4a31387762524c6e3962565a546f3848714931314a6d4769724c4a71344d3350565a4d374f534b6e7373646d7559307169624e536b6b423963795542444d45513832324f5259544d3269614a4a576b532b7a61464b4d6b3130454c61474e76536e514b62502b7736365a53515067646347724d43675776356542617363325041566d315475353065655a747a4e415156506d7479732b74636b396d6555634a466f30336244423248552b3666696e3946633033456759707053706e75742b3839654163513671657534644d32716d7753444e717950724c625a41326a516f793142492f3742444c554b627053443762775556494f63726a47676f3548752f4d53334e6f72546d52316c4a4564426f6b55326e555a386c50494639594f726d6e516c674e73477636634c622f613979564e70544b457a7763553638784b2f487a736954375a58464936576a713279393068566d7a63646d5a63764c4b73687152646d3069356b3569505033396e706b31684a6238376a423975534a2f68714c5444703569686b4c516c704c4f646457546b554b6a3543764d594c6f2f6459757166687261365249586b365a5831454e465955333436714b575a395565496e34754b30306f446f3539663736717556656c39756d624e5a52395071795335352f375461566a6b734552704f686d6c74333046675938646761536f674b4c51484537725777796132672b68634244342f4f4e764852386e655877386f585150656a3130785332414b464d42697a58453969767a2f7544476a386d766e425a666d54717672354a70364e7465685058654e443836784469664a5773654f7a554b7175475a70722b4a41367041784a65392f6161784f4a695a3768554237744f6e633259495a5a3967395a63755a31614d31504b794333557035706f3855716e657971727558484f68504f74643854733849304d2b4a314c663676743238326334434277346c38684e44504f774568426f7857652f4f7272624b716c664d715236394b576b6c644f69786246444e304f72437a36664a5978554d333950336e7277443266523170416d34614c65506c64324c663246757870726d49334c303053664c6d6345562f366c2f774131787446484866554f622f58653666745a6d2f5a2b7367396e6f6c7938796532542b50374859546b4e526f414c2b4a4e3174476844573856585045716768536d594f4f50395342702f596f444c587877727061637a6b542b745761336754584d586a396e546d3832532b6d6844346334336a4a316779756f496e4f5a526e352f52652f3575414637414876324b65546631417263704d70565849536d783659387931584571666d322f4b4f63756b7239536b715562435744564b76366f3841676c482f7368316e3655373963426e524f4f7954364b477546586379544c5879724e37534554626a6e6d6a6c7a353143534630636e6c797a2b3441794e65633033784f427a67617654736565524b3236303845364254536d7141384d347532545161435a2f707a6163707878586662534b62692f69626b754e69545749642b56524e2f54676146646c76415452423631316945507a6c555a6c4e525a2f736779746a376e4b75387169496c365376326e4a7957772f55582b7632702f474a366c62356566486356516c354f31544d6c42744542586d615178696158776c506e3643584a3674737a73764b3530637755353632737148704e4e5a7449357a53786c6639414e6e74596657784f736441336c5645614f7849374d6f39576979354f747057364d792b6e6c35744f4f71566e5a69576f477653492f447a703949674f557a614c337948422b3255523332575457706f4852303961475479564b5946764770632f46384641464b43535178445065354e4877764e3150384151454a55476d686931664964494d684d6f30797138667061357878713474586463514c4e7a65355571794d5236346672557a63553156507a6959503174725a512b507455617568716a6e496449664a30584947374639675a77747534483862784b6c634876784838622f65424e514c4a35694436417050566b747877476b4855577551666549737553724e4645374379306143586b7578695357617056754e4b77764432724f6747702f6f41315657684936714f487367544b6f423063445778544c513757544f6134376c5553674d736647506e614939595878456e713063392f756e57463865505533525a34356e423632593157614d4b4c4470683971567a734b70585a696e2b463336594e675042336661592b7a76746d6e6437315250446a34416f4c327a4f707831526f6b636d66767930505a313150587462395132686e702b7637727530664a7a3354634d5139763143584d5879754f516d717039457a2f664f6a47713733687972536b70475744576f5a6f312b3139486674536956432b4362512f5355725630657641506141505072474a4b3434566a387a464168764a76735066434254724b79614e367a5750734552597330632b58324f595a792f4366743441366148556d506858746d6c636e6f4b6e5733756f6a35416336685179636c624b70517838397133383658756344567a7534414d4968344469534f387751726e536566507355467152633547556f6f72754e617335494f6e6558762b6d4955784f533056714d53507636617369444364594e2b6a656b41576c504777576c5452705156794d6c4e736f5373754b34534b4e6364337747314b442f7a44725439684a34722b6761435a326d33344b4a63356b387952734f6c6a59714d2f774378316d676e6b38585765394b57566a384b684e50794b4f7a342f5a5137722b41447455703276594764663372477a66504e3158776b79635965357163703877386e56385a2f564a33363579622f414f334a4e5876567852634152534373784f6e4b482b7872676b6b546f79527157575a4d7968614f704338715065754569736c4154367670544735684761726a2f774341712f7a52396356303778734d62715167424d4f694d376a676233327467744850644a2f30632f69366d4a6f577671667039736c36315650456837416a4d37355564424f7541396e4b585061765456486d48506c616f4c5736336c2b6e4e2b3175636d71485635796e6a48424f384764345873635371415a564f484e59554b3373364c4a42716e6d61484c33796f627a51712f62354e50536252477458316b664d6e6d6447416945792f745a3358416b41494d367437506c6771766a65536f3431596558305a7171414853593943794a66794250474f586e3576786f2f516c3859424f5a6f4b67565567533147426d386e376139784f47704e6b50532b30476371757a34375a61316b754e3649574c496b755159726f486e37464945616b2f4a2f5435427066544c4d2b4f49564f424b6175444c5050354239734a4e6e535978625a685a5433674a79663430586c3966396c4d70774e4f6e357168424e494a4c314f794f794e4a577452484850786266485a6c563576326c52794c757a3071727472715a794f696f70666173317255326c4a716d5651482b66414262796b6956564d64564b76316f7346694854354e4a724f394d31554875566f6f63667a5a50636d5a66482f4c3071464763784238564b766c414c446c7a323159504e476251743632344b4a61346f5a6c736341543236524172746a574f616e4e576632706c6d50472b386449766e6b64387a444d4b74414e4d4b722b476c2b64485231364534366b6e50395a343630763269676f526c696f6b6f6c6e49774a6643496a4156744c72505a37416b574d586548517531387679364e582b3446374c653361734e69317379725a365853766f546e6c5a4f546d6d6c733350384131496a53317a4b536d454b6c71664b6e5473306f593579314d324f7356304543724f4d346a6c4638323144784c46545472376d36553866486a513431506363484a365350374b516c636c54767167705a5a6e614e6e6932324a6679316b73692f4955304a7336775159494c644f5575657669773737322f442f746d427637396f41504a4b4849317633456d5572624d30343536672b535138784f587169745770702f5a7a2f63516a474b32763733356e4f477751416a4a30686b424c4d7a44476d6f6e5a365a6a393430465148793244524a49695233304d2f4f6f57776e614364442b4e2b6f6f6674634437346d6f512f5a2b3841666c79756b72786c33644f674268474e70794c34444a57727a38454764727176706a6e2b39374b716973554857787a634b6b7a503571415748395770326f454a726f6b6f6a436a7632475a726f7759626e4c5147666e49676d7955546a6b356e2b742b67676d614777675a2b5632634e656c3268395a4837774c59506f713870463869714e4b656c55584c3438796845396857355a364e5750544b756c746d6c4d7956665635535578736378416c54597a722f414c4b4854763841367a314f3453644547597a7530776175616b36373049697a4b5a644361544d6e55736f3837522b504963592f58523764415554504a4e503249425a786f633738703569434e626d397166502b70382b464d62744e576457396d7258536a507271784946527953765651374e3743356b5930692b6c4c70357037436e47442f476e5439703677436932535a47573242466378706e6b476c71724a527a383957626d7337586e35533479754e795262423842633631503750757152556b6450766344393536384246636a6b5773674a6f394c366e31736d4a305a73584866706150666e4b7841664d4658432b387a573257635832672f6e5a6c2f4d6631442f617144573563626547524c50494a724438636c52485264523031574b5365784c2f473973386a30534b75397467484c7847686e6c697a79796b622f41487357546a4944492f614a52547250794556385a356f3079514a4b44507a46637a4a784735553757773663616d354e622f35475879664e3730732b7a51574a6470597062667468376d4e653668512f314f703342506f4d527079354e4f66573676506a70305932485830612f7743525862567237486248426f4d526a787a366c6479557465464579565233632b614f6a36496e6f4870707a53782f6479504c75716f6f516863564d4f6a646c70552f3348504e73364353746550323175716d6c376169567a31414c61464a707550744142515337537a61736f58545a7565356a5234374f4b2f534c6c6a4e4853545a4a583230752f4e50326866316555303845506b6a2b2b414f417068437549695a746e6749724b496f4272394474467562776c3135396254396e692b6143686f6f6c61716a6a434874587955616a3475415a2f4c4142353454705450387172416e356866664e6c3670375059445a77325a7448515851646b775a342f796b57545474686e6c4f764e6b476f6a593441446b337a574750582f63426c4661646d42583055656c46675563644632477759624e4f506e6130725a7a7431447462366970423866343665687132664e7a6c44352b70626d7a482f6e5865343332466154526a334d7430644d71395239472f75364f425a4c654a49466561314f6871323878797878683550566e796c565169595842516d6d717479757230354849445375314f7772513959366e63572b51436b3861517370734434336155585861456d6543322b4d39572f376b6d666e76427638414c6f732b536d633532557042464b644f48494d6252305565474d4f3831367631572b4e4971706e37586d78396a2b6d506b444636564755746b78586a526e7874346e3743464c566638664a66664954687438584477342f7039516a36766d566e6f4b56483230314f66715a324856774b3541784b71473757535864536e376b5054306863356b2b6b4351636b54504f4364696e4a4e704845647533792f734c59334d39314f786d4c306d56772f77414634356f666f2b2b4e796a6f6362496e4a366d33794b7643684a65617a2b43475871526c592f774273577774733357764664415570326f42377953464a6555656e434c73374b556d75505a304d2f51423268354c4b63374c64493965422f4e3353464c46714b6a59594874556261655838473055387039686f6e455744744c71752b472b574367575330574f314e4c546f5a6e367a57564d68324e436a495438644766796b6d526133754c7064556b4832475a2f57396d68386c4e52572f77434b536537486e766b336d4d7770707a5a664634585555614e413375467347626f54655056343471594c563466334c4c435a325532445237456c32786953476a756c2b455241765879354f466d2b5951627369485351306e624769792f517862356b4e79632f32614e41796d4c3173534f6c6c724262327a744f697142695a674a49357331464d7a6a4864494c2b6d4f57452b356d5159306a4d7144692f4835382f6c4d2f486369726b364c6462783351694b77537a4a367242486c4470316e787a736d344977416b6444745a78696339427342356b3652766b583151386e6f7a3952787a586c31667a34382f4d334f66744d636859756e3042576444716d6439765a4570705534415772324e7442794a7a45534972397679544d517849335a2b546643413744544e6570724a527a6d5a6b355768464f3265726a4a635658663544524e2f5766376b30324750316d7a5649726b547a6c466f574d307245566a546a386c7778634e6e5274714c50316942685579467152397932574f6e6f53386f35672b4c324271744e4f616c3031595354536b797178386477355a7269644f7a54692b4b395847613472633469442b50556c31644353516a2b596c592f32543251464839732f77444e6e7337586e3876754d666d373439527156574a57636d70653365306162533149526c5234323264724e556b5666384f3244586d7838464664433347724b2b546e774d4d4a754f466f38686c6a5a7a75664271303256327a434e47666a776245384d63732b5a6f30334c3735532b525977506f7856355a4f6c54386e78476e2b56466e7646514f494c43346f6b70717a33707a74437558517139697338744732435962663433595347644f4f54713566445774533075463350304142395039443744634357592f467a657635427433782f50654c35354d345657484e626d6e2b6b5a306d626f7757574a4f5449514b3543363739783152395a514258644171566d6f6e6470425274397645542f414d4d6858524c354b6c515466504c67614e3037686b4c3446585151523530596a6e4b7171556c3377696e6b66795555302b342b79644f5a5643564c69656c666c2b7369776d536d39554b30735a2f726d683433374d443079364d61557350526d30477353625749706a466377663675453573415574562b33787362414a5a61334a71523269704b654b2b51613078773242664954446f634d3164374d76674c75514a416b5165512f47704a6c326232786b6c77577235334c525434744a45614b34304f3937537a30555430537a727a666a4e364e45686c48374566777258306b2b305370645361615573456c5666316e544d7a4e70377856756a3433515956766b6f654a4e6a45654470336f5a492b6c51787757666156706a305632416c326c784c474e49583839354e396b715574666f4a5234586e634c6136355864435a437158687a744a3432664d625a7453703758436e33634c4c5a57784a4278594c6d39345a2f5250336766666c726673794776727a433354727771484b556c72437658584b71555066596a755739656e4e2f4a694969796f335376522b6e664b58663866616c33552b38464f7a416f6e72474b6f35584f4f546e7a5536715535734f643170716e732b37476e54745038416a37475277324f6e756a426335546b33727a454f694a696f3357446575444d317a6e54436456536a652f536a5a7763654b7566364151775a7372346d554c55354a77733176694d6959376f7a4a3973332f574d5036414732655450386867576f5a4136506178686c6a7a6462565032585872437155383257734f5431642b7648796c6f384e78386a63436b454942533046427a63744f73754c2b54706f34394d79785248384d535131394a52544c312b4b72575538754b55726c7849617747746e353870492b47316765384966353268344d583136712f4962715a6c61316833726251557556413959466353587235332f726c4f4b34717954377a2f414a696c72506853747774745474514a6834314147593550655a525a79484b7879445058646456666a6a6f51734135746e4572736e354b6c61666239594749635947384153536545684d30544d7a4f5a4563395935483479386666466f474d346c6f3169524c656a35496f727236702b774e6e644e486a6c744f6e5838776773444e3357667635614b2f64616e484e5a36534971442b54775a543132616571505a5a78334f4b326569697a6c47697a35396a516d796e2f5846504a7a46394272494b476d6b4f4b50357566437a55586436594b6e7a38756a4b7836357457786656324e584f56464b6f446d63566c63576b6b71486b6c73383658664d5533516130302f766f632b5a48767774786d6367523671534c4e3873765673727230385a2f58797a70423658426e55783143467442356251734a6c6d733958476f4271577536626e4b65754d7a2f7161647142576e2f6a5563654a79664b79494f54364f714e4f6567363278554f6c706f7a4863557638416e766c71596c2f4174714652724b644a42545a4e536168706d62614c63334e77774e752f545747724f776f49374a475768775a5755636f6d666b6657514d56794f436b4b45643434565470537470482b3269667358585142682b3035697476557a4f487474455768594b4f4b7262386b3153522b463266326b62644f587569516a3161334c5238714a69655966496c77476a357961332b677133496a7a7445734f652b6c4776787a583472654d2f694671513150504879737569773272487178655643324e5775617861554230424d58666f44747a2b6633472b76694173444378713537492f3145796463776932744f657362714261684c6d463771436a4764326730415a317a464144434a736648476763703764666c2f6341664c6d4e356974475852574243775575536b394648547a3948746a4772355878663639786e4f6e67436a702f6f416168482b4451352f5678537552713963774b55303164626b6a705231313151646e3756386c517467744961587a755a656f646270396c61787131664d784c5667377043304e702f4a66665067315274344f624e6e3862384e4355436c702f794b7168397337525a7a365171736a7345652f4b7458555366462b675341442f57656e3369692f6c544e35526b78432b5373717671785a4a6b44725a65695a6a7059536e484f3558435741786b3467597a35364267635461425337364c64426148716655522b42367757636d54456a4c742b4a33446e436d49754353346c497065344f5a727569775552733439493849794d4448396a4a2f5764653362362f774252586e706b355965674950666a536f5a7a4d31766b6d59794d707978383867557952544531644d6c5546644f38766366474747714c6d704554364b62322f774179666c2b6f76664831726176467332325a56444b475a5138686935724d35537442744550726c5157682b7630556155487a354b6659537a4676577450696c6e6e66724879454d6d6350574a6177446c6c31483031556f72535a6c52315538366d504a5553666a626e6d4e68644a6e654a6f59626c4348652b78774c3145346b736c424e58386752445853632f6550566663766e574d57766e63796e34792f5658364a6151615239555836425164506c4938542f5163366357372b533867386f4f6e546c675a4670313973303653426d6b6848376a6d4c51584f745456697568636e2f576559635a4d723569536e6b2f545169383969767a2f754e3650526e37476434646c3665784a3964746c686161514c684b716b6e50512b4963703966467a64496b553166476175794b39366d474a4358666d617a445537736559696635455431446d357443716147324635417563754c5a305749426f543645705368796378644f73674c35474570682f354e5477434e7a524361644a2b59492b6f39706a364f30484470684a3250782f3531327a504a71614639534c6f545336542f65754e71584f56374f4a65305068396e78562f585a2f534f336235663246702b486d4476547a7832356e2f41416d33477864476433554d45344459553731306353502b497035376e4d2f7a4258744d44515452365a6a32747574766c483644424830386e7732345a47414449785073794471583332324b6f637a6a326b7671687a324e6c6e483274486f47504874442f44695031317776627967613132564b35366e4a7055593430644761714d4f2b795a7446584972744c2b4f4f4450515079787a6f6d646f63654d59455076655075542f6c31732b6f652b7461564376306f6b6d4d715a302b6f766977544b577a2b526e5a6d797473557961736e73563957674c426e4a5046474c7673684c7950356d6d552f77445454372f34524b50555261614b666b6638576c56304f365561767178467964552b6c6e35672f555a305663545637584f51444446587941356b7965454534476461646d417a774556717963467252706c564657726c454e3746586a4f2f355539624f7869716a4c74775279304c344837396e4a6b7349667265317677324672624e595a614f4c69586230555579705363557676645843756b6e4f6b476867695a45796545572f476e6e2f7741564a4b63436b72427639424870317464706c31426b304f744f345351316e494531504a7a5672705932587137763052527a384d2f5a2f6e6d6879637538704e4b61384b78354175366f652b4e55636a61344153736b4a4a4447664b542b3146644c504b617841714574574a63486e4f436e6f4a63766e7654396732562f65657641556d2f53366a524a372b664a3161315757496a632f51646d386f7a78514a6331454f482b506c4c336539724f492b4d484a523743537167577030466f6548646c4d4e4a596e7174485065645a444a4c4f31693033534338592f64486f475a4d4363584945446f49765a474b522b4565546532742b7a4945615666737366795744535848583876436a74795454394b4664646553445a7550653850754574316e5741496949473471584a352f734674674b616b2b3858534c78676871647a5050696c566853324a59726b6b4d4b416f426932555469534239764f6d6b70673933743448742f6f4a6e4d774a6c49616652794c625459344d3432643674575771526665414932734e55767a46384c576b66752b456b69626c746f343079427a747a3157306d36654e4461317a3952584f7854706b2b36567373663356727163597970534b616944674e2f354d46652f7038422f7672547377497858774b6b3250657847515139756565673031746f374a794d5758737a7036506a34764e456c6a32634f4a2b7a2f7742626933436b714461717753675270566170544e392f58316d6a50466e5979684371695371587052306847743752597062714262387244397a51457a5734444d76364356624b345038417166635947644c704f34686a6a59774e52367047546c506535775263654a4537366f696c7039424b77425a44397466735657754d637651525869456c304a6633584431736b363153766d4d5a2f6a7a31664a4b6d576e4f4a3379522f59753979702f615a6674793030735a527a6f53574362474b525a546e5656432f712b6c4e33523172305436447569775271555a6c4f7a68532b386b38595371435966772f583664503739774157585a79642f65534c6a5432656c6e4b4873342b714f5a4930664573484e565a575943656c7057442b326b523849413934494d724455424e765571584e55394d2f745a476d63763556714b324f2f6a7a5851566f52386a4a7339596b5566444e5165307a6a57426b7a6f4b36414e777a6e3054314c4167726a2b445345644242726f58776d67535756496763727055456c4a43423863776d494f59352b4f6431374545414a64597434485a4f7664474d6e666737326b307a735771306b6869457965646f2f4879566c416449706c4c4a64684233767a66374a77617143552f6a5a3268394d616c30554264466339556b4b61506d3431667a7a4f475971426f634b566d5448416b3830316744772f384168416277354b45526b6b65327a2f6f305750516c347832726b58316e37357a394573527161553765712f61506e34546d65345059486549416f4935535754396a7570304f53546d7756303945766554314d3047736f653162474245774a353244787658467731382b49695637674b76503566634e4b5546584e506e6a4c4f754f5a4674564f656757766f673978456c6356485a324d4a6a4475736e634b75493658666850327036595542797742625a30592f4f5649695336657072682f614d7739586876744b564e4857637045654451316e312b696a717a4d766637576751744835596d496e4d444b644f6f715a3851724d6b7067636c2b6479646b48587a68316c456336326449662b754e54716935796c786441724339352f4952716b6b487a354749396c61743670666d364b6f767664656c6a6e7852326778674a74495a2b4f496275663769634b6d7053546662783351454d35624f2f46785842306a734c2f6e514b4b696552784b726e2f535a30715a59426b50755855494d556b665a314a6751414b314c454157766e324471586370364e54724154384b4d774572616c4b7146326e453163567a4f2f435339425a2f726e2f44515348436f4e6869306f726a455936416561654c61486156444b464b72484c374139724772356231776a7969344f6d4c726b3141373375584c376d47376a506d4d506c482b7042474a2b6a335866455a4b702b5767746157767152717469424c426e34672b7878694d366555575664506e66657a3566594c5675417a3463634d65514d316f7a6a57375362637066415845686b4a7637314e51444d346335444d674d2f71334355663077574a632f59555141344a796350506134646e794749714f644a7949663761394b6673386e58653564333247724a2b59776d65316e77353779577a6e50642f74352b766b4e58374d306a495a577976735a4a325264616b4173694e5671676843526e57756b34774541675a3578487246726e3646487638416c6d51337675464c6c4147524c4f3250533932665135724b615474615847545666445077702f6a376e332f38744936426376764663487646336a385a726f426f4942436b4d336b7161446e59706f4372744c68344f55795a4a4b6f6b4e49756d6e366863306e746f4e504f4e4f55774132442f7455782f394136354742696b686174547246555a307a6672467745726e4b78674a2b336c32653737585a36684c684e584f585855714834752f4d34514276394c4b51737046564e73796b473376587556304541344f4b6f4641712b713371584f637753487644396a582f43585a772b414441466c7a6952784d7a3468302f774278316379714978496f5672556c676b39727150596a532b583453365a494f63364f704435545530476353424835467051567047697879613753325453384c3330672b723938686c364b312b77766d304a2b664e7758644d4b653936514a41666a434c4f54544c51716a6971547175416a706c2f6373492f45676c6d41416a7064645149532b336e79644871434d324e6e2b552b4331515a7750565379514a364d39327a51706c4d6c5066687562776e4630754a72584e734a4b716a72506958774542385843346e6e786c2f7542494a726442644d4c7966545879644f795a55394932314a466a69514b756d524679676d645a57306e423052414f456676503332552f7742416f707a474c3745716a70735a7a7453334a73354d6f353559334945625851304d56505279644b31542f582f66762b486e6130657776682f6f41336c6e787772566d5570514d7453574771616a566c59655a4c467756736a6130433456456f513246385138507131664e38674a36315243455278342b496a616c2f4d7867316d51523278676a3643426c566d39584f32464c4a323654342f735472566f435266767338774852384b612b724b5a7165534a5765544b74667855646b495535415a735a55537a766d6c61357a684d6e47763557752f31324f726d4868724e695441564c4873337967444767316e4b57785a526446487131312f4e4c4c6e647249696e6d4a58586858417438303933757a5a78615874483342475a395838617659595154795a5a365630435a4b78676c66795368786a705a69645758354b3555555a796d316634464f75704c6859522f4737375a2b345164654839417a773073767176565230555a4d79354d2f37306c71516753676b446f534a6b676d533156792b30566536744a66356b637a5a2b2f59442f41466343546d4c5356617942452f466f47626c346465464b3534706b7931307a4c4b6e5042746478755777674d6c4e2b52365775363663557239344e725a5756496d646f53464558554d46524c5a574d396563744d7263786a7a55787731796f2b5a52653972545076326669344577675a38437174325379586574686b6d6d6e704f304a574f4c783848352f5865396866765537315a3848356b324a6e6677526166384136674456657a36592f61423934336c5931796b366c3263726c66755a6a54635a66316a574e64314b4134557a43567a53436a51617a3634564a596f72445037414a5848384c55356a6850634a6e446c64566e756e2b476837704c5633615555546c2f4f5a4377714f5a692f73706c54384c6853504b586364327056762b524c4e34516658444c626b5643656458486f305568785847565577394f7871353541626f4d3572544d4a66422f36354d6433336b69615a754f637847413941486858674f314937666b715438632b6148323839314a424f716474536e4a4a394c64526b37526c374f4f624b756a3532664e574332554d345a41774150654b724c507330556d616c335263706c6537737a73504f3565726d537332544e625177692b4a792f69462f4b7543734b512f7853766f2b3531467035446b705a6250727864692f5634614854507452474a77746e614d6c6d70576e33454a7364537058442b4c3750594841594a2b4d7673414d75674e434b4561546f34346234567a615579366e5866787a4a446f465335786b594355726439587245395976326855662b3050692f77424967433055702f792b2b647158457748556e7747347a786d6e7a4b6e313368595a634f4f77366442784d41666c4a30325563644b31754e357341497049674779447152757337436f774a56476a61446e58736e64487a3450744570624f574178744a4762666537322f745357752b7559532f4851356657765a544456334d73435264446c4653514248702f36762b674e5358304c645a70586649386a73457967346136523968664d44564c56564f763841735a38545a6d41776e54616f71576b337a4f54537358706a652f712f7436473937754230675337362f7562555476656651776755452f3179354e4c6c30737a6a545148776d416b43333870646e74515943396c524a6e72596f766d70424a355446557044692b663041446270537151702b444647535a335466467247346256546a506e753750336a435233356b4554694a5a6a47736a4d4b4f6648476977544234533032304b4b52527761426e586a77305632537146785032524b6e6949376c736d5451637147452f77423665566c2f39416b6444322f4d4664612b41327a51672b7256785a674274364e483148343038485a7661794a6e467755457a57656c41744565704f4d48514f702b7451357153634835755449797562396f626c3663356956567454613173524a337632366f31396e734c7272434b695667716567484e425030525a31726964414753633256627634332b5959645139623953506e5152496c3832644f4b6c38724f787650686f756f6f6b576d686e2f304461737a6f4e333749436530664d705666367a45316a51746d574c7634356a2b363343716361705a77524d7269666b4561432b757567503841332f49485151344b78434a374550646e6b41547338656a7a2f77434d6c756b567a5459386246337667526f48565532587444484d68304d70434650375a6c314470514163665449334b6d73346e496948457637725842613453746956467935656832666c4b5967376e4f59694d766f2f637a70574d64393958317136506135315535522f4d4b314f33447236544c4d334e3932306d3147637248356d6473437a532b377845724d36586a6d663967562b2b49724f696b4b55396437434e33747043706c4f504a352f59664e6a32363944335a7331744250364b4c4c6265576f3058423949615a3174516e6e62766f2f7872716871554c4b5767687a54706e446b6f41647450764559315937733279754874576c484c5a6b4c6c363372396b4e644675712f48763467623871716357546956326639772f6b72456d6e4d6a6f6c37334e2f71315a7a47514a306156616b6c5648614c69683368505455784e636d4b7763646736487739564c62474c4c6e64314e516b76704234496145786e416b754c4e7172416e4c6d7970306a735732704850764957736f6e553355374447387334723561625049435455766b655935626a4d7730614b38486e325879316b67447a393535434d655936476c6c637a6f335a5678456736786b41382b45717135632f4f5a567254397246697a68306d3573727050315033366a316e542f414d4d747336447255374d4371726234714e627570342b7575534b71317561747776314e473561314f3249303569707a684e2b5334696c326b44563058645736772f6d4649702b7546684c66475332645564594a307467496c777a7670646a374275666c5531537a5a474e585844754e6d4e334961745a46483250716d427a632b766d7a5430474c346d596a714b31387266544c6f6d334b2b637331465a68427037586b31714c6f396d334b6c566e337638626e6f6c34796a34345243644478375142485454337637573536702b59465a6d586b7431524f676458466773316b4d376a6e524a502f4143336b5366495761724831797747746163384f5561484a6d716641704a6e77754176393937554668565a437030356d547161387a61714d4c376d634538562b576c4f6879757655526b795a79574956513543537855487773756e6c614c50617a36647359754d4c7930554e346c45346d76536d3754636e7173526c3463374a51632f4d335256626875554973583958534a7338366131682b6d2f4a494b57556959524b4e444c70487250506f6473773536332b4d473247654f656d325062314f2b4f61717133334d5a705a3852466e732b782f497341472f4942306453354d50516c634d6d614d4f624b6f514e4471362b39392b68546c3174664c6b30534f3138314b6f30396f59714f464d716a556b5574544d356e756f734536485a3233665154534447736f5a564d6d3774446648594a6b786a6357677671376c3557676b4b436249567266716839665034684c5845546d664f6c784a4f6c4b65356833464334503471654a4f6d755841336d31316f5663414f5a59326859304c3055637a6446796268756f7a2b4e48324b6f702b74326e34514d3039554479524f58612b714e35356c33314b59614f507964616d5a566d6f37517a485a52426d5569615843746269554a4d59644b45306855317a6a2f7a4d434b304d7a376e70794d654246534f644b5361612f6a446f69582f414f6d5a65647071664c326833454c79614349516f6651424a71556c61752f482f5675765733395135666f5a564e4b74544e61703958613969354c6d56384853354d7467384b7375664d7856693355444b6d63716f666c2f63357a69647474456c4d38546e48484f42495a494e4743584a6c4d4c597a6e30465856324a595a384f2b4b65646c6746313864514d47692f3742705a30652b36683149653367724f6a2b6f43674a58563262735845436d6569696650636b796f34764f55346e563930474c463658503679455465494341463048556b6c306c4e6376384151465a3255395a4c47646c507948526b4f727165543748502f6a527a697a356d4b5463382f61316d70522b7853733143527045513454536141506b6850664c31314973557448597a72427656385778692b58586c6768465534763841734a5a4c6a796778522b31762b4861452b305155595036474f643263414771546c454f645631675a2b63383745713650455a3945694b532b766d6e3937344b70476f615a6e704d344b793642744d4d436c52636d797a676f5a515459696b7039326d59313969724a2f77426d664d71575a4a714b663269395a734b6564706d41392f306d6c595074694e316b63365a56386b565a527773347967366c4b572f6271356e3036416b755170663339786653556c626b4734334459433141594e4154413245632b763771784b6a5335444666774e43325979566b484f63396a32477563776e59547373445630456d58333067733661666836594463333351485a2f71676c59563866384148446c2f514f6e6c32657468546a2f3950632b5a6a586c502f6b64536b2f4c534356476c7a783977465162544764326a6b3964666f705265496351754d6a4b676b463174394673724b52466e45526b31616632354938506931475967626c674f7a7a66496d3946746b705772736a42377259724c576770725948633572677179707272506a3977384c6848527766746a32685476305a67546b576f4e6673647334664b6858326735526c4d626c35337a4c473233717054643175625954426a3732507661443444752f4d59544a2b4e59594d55537667317963427a7156784372477a69786a6b744c2b52696255757246506a726d36517543723368383350592f3450684e776759466f59365251633435342f64757a435136563456364d4f6344546c367958613554644f544a2b584c75523837654e34614149307563416635674770747178394563745a3631644e43316f4f664977753536372f6c7246505a363433542b33346544376b64373061586657396769306a426e46756f6b58493372376f506a357139354d2b356f6578706b7453314644624e4e6f56544c63775a55737652556e2f4532753446424a5534564a5067595a675330766e524a2f467872414e464930527336476168397a633541364558416c2f626e45744a564d6178744a634b59506d594456703934665a77434c6a3132472f71616e71596c4642706d39695a4e4c614b5732364e45774a2b4e7a4a702f6e2b4c704c6f53364e6b59306d5538306f45686b425a6a495a69414177306e47456c433331584f5549527a79506d636c4c435850484b664741482f7653516a37754f4158423847796d59584444336a63797444327a664f77757546434a567a61442b6842554b37456663724a43424c6a56552f5a3531437571366b6e415452476276354a59332f424e322b72744331796b69536d645a7044506f6b555074475a6e5766777233695050594b5642777a6d56304f47424b6d48713462424f53627431425663614b75787751554f576c4b682b506e4a57644833314a6a3676686649384f7a5348534a5566374a6763564778663357546e586c534b2b3579734269424e4b796a2b7776524a676937344e4167725451586566364f732f6b6a6e6d5a514e67696b47594d544d79756e6a69556c7858744255714775645a4e4e78306e49652b394a4c30674f636c394876792b2f6f4831594e5930464a57446c777a615657666270336e3830336659504b5770505039765579786d2b69364d424833384a6b666563537a6e764f7a7039377a6a7665774d2f6d596a37696f4b42762b676c664669724f645962526b705367316858784e76484d346c78664d5a6a38337930385143354f384d35676664586d567536796d5558644158554a7272423556467854553157356c464d4a4d614476723575656644465a7437396b2b653372654339674d7572714665657558483057396b4d2b6a372b54755a2f466d5536334c6e6d50354775306c347467764d476f4532657a33696e392b3851423130587a705254494f594930453461636c2f41725333677a6c68756556452b655056724a5053534836534141446e54665856594c566d41463471653643764e556c5573664f79354442343566376e4c73364f544c5564784773417958657a6f4f2b49776e674575534877354f4343634b473132306e65304268577067304c665454566e544a712b692b63756c586e72416b446e6c3862794476454e2b5952346378306d70344e6d76436a684c414968636464387a4b546a2b6b755a366f2f6533695a313970474e505852704e6a656350376a4b66386d41426c38414b4b5741544d747a4f575a565572426243765166654f564f795938796a514f7857623968536d474d72572f736569464942372b447a33755a2f51596c575351616663354e636631584e626165486d38513274733553686d38466d616f6c725272462b326973584e61494f53664362377030673471694245376f58436d364474394b4f4451797153712b3146596b786e4b324a393769355562432f64424e39725141484f5534312f30434558484a645943386a514a2f437a4f2f6361695837624852636f6b376d4d69497168634e55384b785753692f66662f414949416e355543514b734f694f58524872474e6f5258774f636d30565556424833376a4a5a48553653653078365657665251504764352f6c38784f624d767658422f514e2b57787751684764576936622b5769572b527437537a4d3954784a5a7a4e43364d692b6971566c4b32724a76764a6b4873563879656b6c494b42776b666f57386e6767737a6e6937334e3773563231706a756163626c6678346661457638413064773949523937706d6e3732685142504152375a493546707a5a6f476535774853535a6c44576c796857315573423846737469517a556b5a6e7736672b51506d4e78542b35496752355148616b74476f477979787a794c543169457134546d6763613831567957796c647a42736a564d747a7549436c4a54746330715a5747443646734d79594b6e49484d6c6f764a5a396e6c546265726e7a6c7a5068666f77793074595074534a43637a32754d746163526370582b44512f575730742f36703671355a4f6f375532772b314b5779546c69656f75584c47495443534a3253725939347542353370642f6a38557764444f5a746e4a554d64496157436d7548763248554133713545536b55696975712b57676d4679567370454167304a6e4c704e77386e63345069545a4e717a35545061724a516a51575553655a2f4d2f356c326448376b7a453343356e2b784e5263577736666361656749734d68346f4761364d315a67786c44476f547a73707755306c53566a736d7251723539666f454b694c6c6b4e556b764f756e355a7750632f6f48385975427678586244686a32487168307565784765756d475a7857305266566e5838307363504f2f344a5a374f72366444506671704e482b4c65422f5146633449567254424b777069516847643036426e34704c357149785a6c566d2b566a552f756969483338575441344e4a4852385247413167794b5834342f4876357a6c715434637657554f7a4c4b36366a6f366b70705a41525958326963744b654e56772b476f48544d593050682f6f462b7a7557503143584b37724237494c4b6b7162395a7a59716a5a307173314b2b4d6a2f7742656237792f59752b7a5431494f565038414d722b676565362f70396f4253714a386c764c6e7662717536564845494972355746434e624c4538544447445271555a4377443578446a2f41476151776d6b4662663841314a4539326d686a367143344a396f42415659744555424c306d45555a442f4a54396f416e677750385870555944385839414f7258397743516a566a7469487048664171546a31555a6b7a666b423553716c636b7175732b30644851483555474877674466686166394175796b552b374f456972747a335058477361354674715147677a696f682b576a334a6e4e4f584f62464c396b366672664451376f6539583941443064426956627455314e6e45307a3132644e4d4a7a704c514e4e537157444c593734584a4652304a4e6e486a78777a444f5a646a5172704243664c565557654e3746655946725373696f665a61326156566b364f6a70505558305450394d5354516b63512b3977752b68396855703963416b694d7a4565493557613745362b646432472b4e2b6a72343671656158634c584f3779484b6f3178612b2b534556317254636968315642552f4578524f70506a573849766d6430445948306373657a77474c3538336a6f34367465726c344775664e6d5a6c614e45644d544d3645796e4b4f653666556438667775565342794e4d4f335764534765703343543464586b314936697536476f5377544770567464385a787a5a68632b5041516d4a306372427a6443695834374649515a436e394b2f77366f4f55726266714c547a4d654b624f67735a4a563756354235464963723861763274546f4c713035614a6d506f4b6167532f37646f63372b7a63514877775831506568573172644a434f3166546d4e7a5a4b4a3363584670416a6d6547666f32617961565a71394e58423045367a4257756a57546f416f4776396e2f41475779412f687743365a57496e685055562f3546583236544e31645756397a4571346c4d4d6b4b3976524e31595864613830645a307443684475796e796d684947646561433553447473797162525077312f6e49557a7648307856305657776a786e7a636b30744b6c53463537474e31616337514c74694b7973754979574b656d507458522f3439496e34343242474839506565516d4538474a796461633259666971676d7a564a5471723869712f6c51526f466c3478647670343057536f68702b777a6e7a47616e48375151346c6579752b33694a4f727365636c3079567a315a4b6b5a4f626d3135756e49355663314f756b632b2f53592b6563716c73582f494b633568664851334e6e486b347a47437531417a552b7232436c7754794c736f52456d782b7a564c67707a344748446b4d314d5977304266566e305561557679753553546b38435a446e4d464b34584239743756666f54565a556b36695a796366667a6e57672b4369396c726453375734546c697a335175466646564a2b77303344374a6a443433414b753135734e446f745932667a4855316b6962764635797a47796b644a6b76446656643350545264525650305a617a2f414f7038616d614d7741314a5769755a35656e6d47724c664c664b542b70644a7052534d466861755a43314d6c5556685466796d616c70522b394c6b7448536e557433754e6241762b734b716b6838503954474978614f506b476d4a693565636d786546532b554c49596f484f6e75626f585446556d6c3076334a4174464b324c6373754637327151416154766c64386639524e726649544b3275626278396176506370646e45485a4a64616735543045795731614266756332556366434f63507555772f6d6b2b6e716c7734667272535839527872506e415877637a7879306f6b4735565045575a3948496c3261764c4d3362684f7035364f6f466b71442b6d30584d575a556e2b2f5a54784a302f4e47346754457831467231507a5635593870434e6d5773534669304e61675a4f396270614e7659737573714a6b7070495a6553454c65676f74496b695076496b2f77425142302f6b4f796c6b79737038356d676e5631396f643774485255764f5a716e2b354a386c51617a3279364832565463483679676a45524d4866365443462b515773694658596c61644c43616a6c483856464f686d6b42506e7a72412f63544a4a66384d3761732b6232737341346a5574526e39616d77676b595a5552456c746457713556343575356f49696174434a4f4c6e6a673067793063482f5a6352466a71544b727451706142444f43364359663941762f4142536c4d37645a5070636b456e4c6d786371614d6a7a33616e55333239752b745631495563745453763247484871454f4b345841447145685754646149652f584e506574446b576f6f7141306f334e7265444a6a746c6b5864667a517534524f3551306543515758714c32465553776142355832456478364b78726a594d4f71524e6c59764c717463735a32535a69374f44782b545a3130374a6e7a4549463058562f4744584f357a6752473632425873676f626f4d7130363672374a4c6b577056323048664473314f6e376f636d684b6d644643324a577048792f636d5a54516a372f774451506d6972356d4f67354f68726f6d5a32374f764f5a50586e6662626a314e7864466c453948552b2b785a5273456c545569577237456c2f7a386e394171716b374f4679366a70453266683276526d4d3047446d326a516a6e5842717044715961754a5933724153317a754a2f37712b306974526770715556527a53497a72494131486e6f7a326379367171796a7367757a6248762b446d6c78736433437553414149653733684d336954553443414a56304b6575304b3868436e794c6b6547664b714f565462784b32376a62593838574a6e45516a79553067524a4d54646c524f3559777674706d416473644a7353506a556644537955653662334b627a56766c724c4d69356449334a57746776594c6d713635592b7a7073707145334348754161484e39723139632b695a30386243733574726c6b6134426f64316b6448577534464d4c716e4c656a735535384172474a6334506b2f594159684e7332552b6d6747626c6764503632645448314258647a465a38585555557457706446464e4631616d6336317a5064734e4b5971584a5150515762794a532b313236417735666a337654506f3531745931537661566a39454967374b5038705379784d714f4d3970394d386367344b707937596f4564685361304d2b354973703270667142474361536b55626d6c6d4c597364485773485559316638416b4a6a4d6e354b6233457177424e7766314d5a7a474f6f707a79425675565a625846644b615247353062484f4f33746568446b3574444471674c53344766507a3457533168553030782b784475714b6b6b747333427457545049396b4c585a2f3357395a427775424546504d787174444266544a6c5379724737355359512f6f302f4975537a3966434b536d2f664f4a646b55716444537a6d336c2b524448504932354e4c6267485170706b664d6271417a4e4a6f7030454a496c74454f6b644b615847372f7572636c7748417076546e44486e3536487a3335464f572f506337546a6d36314b364d4b7169544e63505846527771506b4a45306e7366396b4451303364596b5a7a7a5a3877646947466559326c3436546255573330315263545850624a396b574c664f2f346b70365633584c53386c4b3967454d5a6e31776b5955663141676e71445056546f534a69314963336d4a6f537a55554e646b4a6f444c64494d33545a624f4c2f414b4a3269324d754b4c70684f546b465250377564735146656f526c67734d304e44746b326662743255425931313955515754793151315364355173732f4c587a484a535263723662724455786254585a47443738336239662b6736453253624b4a6c76666f57482f5037616243434f3459373868792b49733075536b7443597a4772574d69353332664c734337674a706179554a2f642b764553454e526437624a6c6b74775a35364b78757175376f3156737a63316c4550536b626d745a594b36526e587975716f524d77547879373267786f556d73783145797a624252324f47756144717447765749374e62734a327838414b4756394e4379426c476b4f67795a506572715a4a3172686c6d426379435955444c576b646b7a2b527361734f2f426d36525a5156306c58466e696b6c78545a6c634e6a456c6f4d59773641575847496a39352f7174626751314d77552f6c4d4a68665430493952744e4e7474386d6749795a6b436132366c433538796e76492b7a676d69665364336a56476275706a393449577559336e304379636f4a58745779696837732b7056764f616d6a6f614a354e43394f68744c5a4e53524d6f41364e756250524e326e35696d4a564e50512b774941302b635366556a6e6367557a48657075674c37755355314a3752444732615a3033566a5644336b72756c5a6d72576a714b665a4a4858373069314a2f5644576a616244527136632f4b467a7749706250534d32636d2f764e7a5674586e3077355a685a4f4c6d585a634a484e564d756c316c4637442b6d6c78665454725470507a446e6971706f784f6657532f6b66565a697465617a4c7a766e675831317969306f4a316d356b6443632f6875453265346b78413478575878556e504a3566595348447a5a427a31304a6b78775253456b33386333325132636332785862616e56777036724a756b6e75596b615872453762485546544d2f7742675275727164776d576132782b684f7650547131365830717332666d4e546d665a7a6f4f676e755871447a3238566e78395a7a68634d55635a78632f47702b784f59635453326338335548413465666c722b7a386149443679322b39717566795574656d33506446644e4a4a497a334f5451507a646b654e50324537424a6438796d4a493445446f6c6d71724264427273493361636d756e4d763061726448517a726d4c4b4b2b3763724e715a4f4c6c585366584d6354763431514b36636770412b674a536174316744534a4d507149796e356d69784e6446646c69395a53583170445337394d536f6e6751394171624734556b6e6b4c466753475a2f732f57524b6f4d72396a6f334a7145633557704f7579686c4361494a4d34716d555531366f6e764254376556773533442f64587a545455734c347659786c4e475973334c664b334d7457353037585638325a4e664866384155613043524864532f4b6d716a6a563265516c2f594d4457744c433666666c37306a6e5a2f51525452302b716774525763374753313538324a4e444633733338675a2b31313331345a666b71683475794d7546316f422f317659644263644d41414c3866346a696361633953486c6c4552706870466375693075306c384e305552516550382f6b615a7a4a615a7a694d552f5a6765514278302f592b424c4753746b376d58396961626f716554614e5953664f686f5a7a4a30614b71615836696a2b76583977525a776c2f353354633758794d6b55742f6f43764d6e505446456a36394a50543765664e644678314e4c516e6c73353931564f57744c705253782f77446a3167482b37466959415654672f6f4d4b633045496f4d3233536f37543743637a517a6e7a4532576234615932384a6379335665316773366e2f554b6155386f634456675275416c5a71642b35517a716d4e703071356a72566f4a716d4437453252566e74545453765059527234492f704842502f414647376f716149706d4177552b7443576654507164554d6a5743476a6a30397a45794532506d615843347a6b37566659436f7052465857766633767875443948396963777337782f6b62555641535235797437464b6c6d65576573716a54486d564b494a6d47706c48452f44302b413831482f414d416b79346f5638416f5a3951326d6d75495978666a746c6f346151366c4c4a352f75473075502f5256534d5a55536934395275412f30505436446663514b2f5a615436457a414d642f506e6a52516d7234486c78394d6358466a61336a795451483371756831702b786a6a3452435a4c576251787a67706e346d495430315a373633336831732f436f5670704f68545a716245476b6668636c5a4e6d4c712f66373073446769333552415079564f5a3158334b3130614d63763168303556765a64617a7257534b576c764c674434666b4c363632395548566e597a6a682f7935545344656a49495a4f4f49414a677a6150573652395371554b66654a72732b2b64334f6535637049617466614265564141354c65714d574c44377956304c3542365341764c71754e6638544b51624b6677714c357149364257753556676a2b67347a6e4f44777a70494a3141665164546f69637751643049474e723558414e46616e386535744537576c2f77425a5477636c5a4a32456752653845685349443746713441686e515031776e353133524a2f4342775831396b445237506d694c65555469504f77397257354c514a71792f544146505647505470364133533056514477313636703648314c4648312b307251675a3657636f422f5a492b4c30506b63746748376e6d354b6c2f7562324b4d466946572b5479374e6c6c4130726a6e6b346f4c3030486f38726a6f302b466e74465178545139644f5359636d35765864352f6c307a6b506e316870544d4662747155584c714d2f564742476341534555444a417542474a6f4f6a472f5152777553564a2b50617436744b314f344a356e566e305a7673436748787a74523269706430336a6c566978347975745654453155364e37766e6171654f4672317a72576d69736631515568552f774457554144784a6441396b384c556f54444d75715a6644716f6c612b695a756b707238646d5958554b6b57504b484e754c352b4833342f68435a582f333246332b677a314b5676552f6e33744f67593277556f43587438756934577757513647497943786c4658313573735a337646503841397073364471654a2f77412f3641446f4b427542526e617a587753397a6475717a513976324d61534649536d735a337869456a6b2f4e51783071705a2b4b4e6f63456569437a5a5937387748655a50425a54466255485a4c6e4a614b6d33544550632f4a357076554e6256774f3554484f4e55722b6d525170396c50316a533944654a63494e72567963746b7a4a755733452f482f6c6974305753337955686d6457564751793174464861342b5556537544696e7172436c49474a682b35666545337a374b6136732b504b6a69706252494b356a63694c6b4b374a4f523661776c73795350693075596b662f41496e4462787351474a395a4a386b345678466f33577366546d39696c646c397447456b746f306a3750326158536a317551456b7131334448396a6a416f4d415451597042366a54384a4249456447796468767971744a316e4f4a447249575579517252566e3651356d654e566e522b714a585a2f65394650734d502f6f4b463373372f41454655373664486c576a424c42566c32726470766a6d396e4b7a314d79523261334d432f71616d43796a732b5337374b7a3430774633526f45426d437335726a504e3045347959706234704d30716f4b594c514436697731683132773054364c76666d794c396f2f494b302f4e7866426253304354482f414a4c4d326b4d41507670737a7a6a4e467435492b746f335a44455756527a7954307558316842667136665a52587a327a2f457067396371616b327536612b46544d443146674c6e686f30475235457139484c58516d427455383770382f6775573774434e4c672f45646b6337526e61782f472f346643387a463569454d382b35666639664a524547707a527a6e58454d3358756d556b4b452f55696b3137496244754c6d6f324f707975312f44786c4c53582f4149694a7276534f4f653641466e612b617135716468543831362f35323574765875314f56635036656e546e61756d7a37474c4f374e3276695563344d2b47637864376639506666714656787630457a44456258706b73354a514b514f58764838702b4a70676d764270496669372f4b4b58574c6d2b2f367a33485348325474634533346673743448514759653147745972357968627078796c6b332b436a303830325a6f6f534b364359494d443975425077416d5958546334686555365a61624f554b6139764451786556326a3650557a713532546e47315031706767457871574a4e39745a414a3255444f7a6a61342f3636422b486a7035612b694b76683059526e3759795a3644624d644f614149356c31726c436958757059585674475143634b2f59765056547868686a3866312f554238314c4c50733541524e3858564c585235457349374a61457853353875656a52695a32483435796f6574776d70697a35584f6e37446a54573047384f3270334262566a50537a6c4542477955394a6d5a713473483861544a4d5664546d6464446e5a33786a6e69624535644e597a6d6f787043635849624f5a6a2f57675a59566c436d5975626a723270414d46636f7a7444335a632f5a622b793056583048646e7a6439786245656545626c6a52396e3671412b49544645627132694f7339775359646239454c4a4d6c6a6d7073355742612b664e6e3856413831747069715048782f6745527a797a324e362f7744646f70766d6c70533459692b4b777a3064646676525a792f36383946656c6e4f664b6f335a7342554c75317454502f677a58336d39396569375137314b754734446d636e334f464c754b7a7254766d415473495069362b334d6e5a70716d354f6741787456614a6b31784c43536d5a4632584a62314954352b584e5573514f526f6e524e544d5a4e4a4b64424667774c55374d7574534c644e373952477550377475416f6b54756e4c50377a46624b36346963366f75306e7a684c425073654267616b3148586447647665493335506b4970384871587354507156796c5658757a65785038687a745a725532574c307566736c72634474584e61356e2b6d6e5235663367544367752f58694c5a6d593775344e63724f7a7a385050507464334c72506f554e6a6f504967524e564a4d4b745368562f4b4e4946375551353977646e34343154715375707275396c506758464f737a496c6e35464944632f58366a5a7271543437496e6b57717435554a573968616561536c4a7a536c7179615831315566347678786464795068754d67305038767277636e443966594c754d356f626d6a6b64452b35514c4b7a744f6a6f416e5543764a393358544264686974382f46334170754f51352f77436e582b792f574e307a5468346952746b5a563458346a4e58426357566f325a2f594730445a58726f6d6f38624b32684f314879637a6e596c724d314451457532397030356d47757467664345522b38396549532f497a4f444c39507643735962374d3749563533346b5459737361475357575261483874354a6e5a74656b76716b7779315a2b624c796268544b52374766436f622b6e79694b645a2b516e327a52577a7a596348566f7a6a743376546c5878722b4c5876636c656a625979625755304a795132463235526a6b7935663257544c535143494f2b5a3830593452614a34774c48386d79685a6f2b6d4d6b6931562b4f6a48723674484b4f5a75726e616441474a515474494c6c646854506f615566474d544f427456474568576665546f7a5649374e766f42657a6662503652376c6d72395a616f4e397446516e53306d49773456726f3246376b4f2f7342793754544c6f53742b4238784e502b4e706845423554634f6570326f46642f677172666f7876556a64335877577956366375626e685a6d4f766f6b794d52724635364a382b4b645833714e437969776672696b505a48473332726f5a50526d6e4f70696473534a723542644a34357037317169304d326b4b446b716e504f3149732f774163324673667253537237527066714836397858564e706b707346775a74426944464e375964596a4d784132563941337565506b64623736344f63414f643756506c687066486e68565a43364557654e716f3564786c4e337943435a534d386f364a6d696b50592b424e646537626a74565a506e374a724a504945747966616c56632f596168304b7161354d724b6e7a663933384a79315a36714b5458682b31587941366d6b77696173367a4f524e52424c6a78706c666f3071723655616f71353236476641683864764336716166354865354c2b67547669705233324a4a4c42454c4438626a4a56734f726f396d723553396576625a6c66567954565277646255616c5a543642302f4e4d7875687867473550316f3666686138444e6f55563278743269576266564d54465552665050686d457a645365544a63556463496a4e4e32544e664371654e7975665a7159707a6b7a706d736b354e38764a786e5658543778675750693178547a36476272505a4c6c4d6f707a384b2b574b4f3859563144535562496c6f4b3666677454557858744273596644387337657575653351536b633348683148493163662b567472303748702f5166754a4275315a576a612f536c45364359587965342f6a596233676c504841597147704f633336625945366c3865485979474c70773547636e6950583633502f6b7238363132516e51584643716d327a684a64395768684632726a6168483941595a2f424237715a6e4f653850677079632f7941356a71325656782f4d427a4b376f7a746c356e4c5447344e44366b62416f7953576e32642b666e3146644f654952564e57783145636365517548784c50584c6b366d684e4a38386f654f766650485a4e594947776e6a64316a78625a77694962466a79594f5471414144376675417a5334337a457831356e35307472536f4871596f4436784e6b6e56742b3079436572342b55735939417036435747783952664e3072422b555353307765366a4478366250575a3567356b6b35746d2b794762412b7172737761685765364c733059725550566c716158746e6278625155617663582f4146665a304c4e3876533465594f6330706c3937496d376b7066444b72395a6c4b577556786a2b476159654c68583368436c774e45444d6d4c5038413462576e5a675276567a6338497663714e37556a484a394f4a65684c4c6c6f635253612f79396252386a506d564b756f536161756e38535739656f466462332b6d6266682b34662b5071564c6279643572565643426e37774663776353556b626b544e7a6e564c2b724f6771706547396657662b38425537684e2f536c2b7a49685872534249302f485a50726674557a75732b2b414a6e5767327275647962724b4e44702f653457666f6d58376561784946695a4b364165315473774b667a73687a646b744a646b6758563439692f3230516963636944634c564a7a314a4e3555636e73643965694931756d6a6a635471554e61316c4e387a6949376f44477650574471724b6a7a38323348304f5766655644554535397930667875504c5265435449702b706e4977623751542f374c5065594766736743546d303162714d2f50627166755450624f434f31716c4e5346557a443063336a383152797055714f6a67395a58536b762b74326c6f6b664441427a4d32327a5135556d4933534d4d3149636c45386355397037464831706e35647247502b6d746370635a774135524743566534472f4c2b3242457438577932633045716464444d4d79784b6d6144756833342f6e7833706258496c3379653266636a576d64716e4a4a4f614d3331476b7553734c553755422f343152335237465171446c54354a56415a384272777643327a5757386f3562353363752b64592b3450326136666159324777704f436161677436724243722f787438754652654946473067796335586b446f6261524e617a4b32715976644c794f78612b69356453584c766f2b754c467a49426c71647142584b4d5a4733503841572b374e32626b2f386856422f494f7154485255694e6d6e5932534b6c43457a74797a58785970613571513068677549514e536a74377a79477876706175656a4f76662f4142464b4a306d3548432f544c554d475769367655716c3165786c7a6c445770533458725543444b506774544e543078444d512f314d6e597a566b7264464c533962645456524b3772565152686e413539316443442f52653671425377357a74482b41324d343253745346534a6d4f6c766c2b7343736f72313567484173757a3569777a5a394c36555676616d73756763637457536d5666436c6e5553592b39346c645065706d5a594174507448326478755034486f7350776f2b55516f353942445570352f76377a536d5571574c3765684f72376e3057464f4b2f63737a6534327553356e734e53766b35785566716233333643346b363163704d4a2b6a3776722f75633434674768733665523357696e55374b763565317450696c7a30693545664b476944677261574348376552326b427a46355330306a5233372f57737351313765364430646f517849736c537849306c77794e796148664e50336e784f743848312f51627a654e52387a2f4863396a2b364d596c6e71635838674b675a306c42556d6f75704a7a426848732b736d66332b7a7646664e38792b454376332f5755397576792f7541336c43786e6b726a35653261426a653961464b2f324b327353786567756e53456130554c3474626b764b6c5a6a373750657866586647493346597a477432314e5464555866752f454571585577564e6173616c375a4569487371784b454b6d4a416741414b6c5562584e36595563576f4c7938674a562f6a377175552f497031435a4f30646f486854306a5a483157636d6c424f664f783374534131705a373267613339615852542b36523237664c2b776f6d615368666c4645346b35385a616d70783075757147626c3377736f44366f75706e4245737055574c4e5969445353754d4b5a6e47326b433563575a367636596836652b59554846445444566a50545237412b694454592b34795659366c6c4356755a705369786232703476696e642b556565315873725775646e7271494a36666241443642466331534d393132546f4b35715049786c596c6b6f366938327848506152512f562b7549735576346e4a644f662b344f3964326254692b33753469364d76546e5834664c564730586a6f592b652f6a5a6c7a413849374468554a54562b3537614845786e5067574c443976584838784758744d617a584d35377538414a444a42765742514f4f6576504f7476466f6b6c572b705a31544c57436861706c534b6857496d5a6e37434435694c34694141754a706c457363353864557872365178464b7343627a737a48717334322b796f534c345672466563346c38577a6755664948534d2f622f57667862766839514e4c2f414157546b587154713464377a306c627474424a7368696d4a3562614f614445304b695774797339666366536e4e676977715464593433724c6c4a6c2f576c6f7858644858694e355047387075666752794e2f78716b5659316f676c4d426b5a6b736c3055643678696b704b64333177587a722f414a6763612f312b314677633758376f6b55442b515674693576462f7267537177386a2f41476c4b4f6b353661755337465647676c667a4b36346a597250537437326d53792b63584773694b684e71646d4134395772644f66306a52493979506d2f38415456494f4168536a573052765449512f614e69327a32762b61345351336976746e3871526151653875327232342b6e395a46392b4e7a2f50346834666d5743377265344f4c565151776f73547a51624c4e7a6e7778726f4d4935794548632f51727055775a754733336e2f3773375a69305742487a436c47664653485a72597154613171484b555a6355326c6a69492b685774705648383375417852772b42377848334e2f774253763670574d7a6761652b56456a6e717a34706a384e72444f687a6d726f73733070506646442f443079707968634a66453269355a6676326778797765354a6c30544876527732326e77456a3963786e462f704578335a6e3656336e6e6a5335705137667963317930723537706c4154555654712b44354a6b3041727032706e5a2b7564346a39317030763841503959453439547852653276533050754d4747755565677742654c43536e63437953364f6558684c2b6556776830506653507941464269616a622b6f72776a48664169666a354644675a2b6175324e6e3131564c72694338436f7a74535a374f56646f7935726c564d3048364442357876654c425461516366422b546b7962433074326e3745534a436c736c4a553732424d7355544c6d464578497247733343744266456d58352f33306c7150726a2b496545597a2f31576e5a675279565a6e544e562b33646d676e443763622f726c787078797a306678786e476674685956556448764e544b544e6f492f35615a48314e684b744943566c6a505a2b304f583773354b6258544e4950657161593372345264347a2f654b33395067414a63764e78745772764863723866302f5556506573484f4a53317172716b6f31617764623266504b5675704d575a7a565a4730534237514a7a327356556d67666963584435384167617243782f48744b724e5a6f426f734664616b2f49553146594e52787646584e6d64484b6b51524f5047533164643335763049624876466946302b2f774471746f7a474248372f4149714b6e646e7034466a78657556436d416f684e74325378556c6e313769664376376e64496c67527a70452f77424530503841556279734832665a515253424f367652476c335137574d3055335741726c6e54342b714b68526654522b376d4567503066517036377276616674494465537454585479544169464e633455565353764674587974644b374b62525851766e506b484e5934542f546661626e47485847516e2f5662396d51323364655768702f7036424f6341587a764a54666f706e685637365538304a7243576c5a574337392f7462466446336539503254664b70574d5267526d7a6f6661506e473579432b3838305573744a3345392b785535636b3150433662453963776e6648336742796b41446738553335563244325a442b3730553670526c5657326f303163483433386f6453353138764f722f786c6e45766c4253506d48347739344e6f594c474a43767738333145723268454235425746765a4b3051714a79416155716c437978444a4a584958376c2f4d7461356d7a394376706c704c6d5a316968573564645076456237504249616e58697136596a7359493142666452384531435259514b696a6343306a64313379442b7576596c777549543935427938544578776b4e50703654596872363679426f796b78724a6475755a545745346c5356554f644758525a333435674165574f482f326534364f4a563373685a4e7430394d64593345754f696c313359684267765a57693058367265634c4e4a6f4d416e4d423342492b48314b576837774a6142416a4a4978636b4d505a32636b6d4f65707878527866796e522f54425138416b64386f3576506379616671322b3177674c7736617666522f56643966454d32706d34342b5572663854574d4a35306952727571375a37466f477a6a4136796839425742386e766a642b77635272516f30386259426a5531696377364a453533746c66526457365a53335643684c4371704631464856524a6378507545476d7049453478346a32457076414f485231505573315954483746716d55746f766f4b5557457432652f726e7a79385a56384e544a2f647a2f366a375058664638516e396b46495754767a2b4b476a6a706b5441716a354f4c6b7064505958743551353764546e6247736e5a3747456a6f43376e796e7a346c63436b416b4a45414961447556754a4c61325a6f7951637154593649724c574956336c793066584e76786d6c6645696a6a512b4c71322b384648484474655161616c6a495a41717a646d626a6450764b32476b55342f79736936504c534f4f79704a52796b74376a3933524176326152706f2b767a3246574b346d5a37753452755a4e663356506369656c61324c6e6d71374c564e5077685954374236744456645a4c33515753694a2f434f6635682f5a2b30545932346235444a39576e394b45364c3646564e7a7a3532656331766f45357049334155344e6f393661462f4d4249502f4c367a47696f6e562f4b456f5935726931444770303265763744414b6833567941364f574d6d683073346a367a327a74577836314b4f6c4166354e6237782b565666672b6e36426250454f73454873684f6f7033337171617165664d6d353841706f4d706b4d397a4a7a6356487965316a5030667866474b5871417773422b6d61304f58414a677449726f2b4c6e426e6b6b794f4f514e4f6c6f5432795439574f6c387a694250512b4566596c77662f5145336e48447465512f41794c34563956624a70536e5650485163644c474f44327a4d4666747a3066766e754c374642564d6176762b662b547661516530354341506d4439696b4f7466526b2f4d5764796e7246786357634e6b365655774c6f37565568624b45745a7a32756f5334414a33374d4449467754556e7665577034774a61506e366d69746e5566594a6334514f6c4a5a463177304a6a4a676437316855652f355144724667535164446e7a547a2b38307144514e37654c69304f55546b5a35335642396956347551306949657061413845774834544d756e2b3130485866587844635a644474315a304e6f314a796759763672496f356a6259686b35794741485633686647524c706378596b50366334682f774176383232437a45315370443954704b6c505746393166614c526447356935656a69736651356632663859567357316f2f49422b7a3943314b5032417271776f30464c6d54394f4e384b4b7175364b5230736b5a5a4d7a36796543487a455256462b784669316d6b335468314a746f2f344651504931746a4a307a35584d47666e62713273484f4d487247324f656b484d725330454d4c5154383365434b67514143524d7063665764444366724a7054445053794e536b634f4c626541322f522b4c6757786b4b6c6c5173562f5248336d533166344742744e5a6d786e3041493164596b4b6d47646933536a6f76717164314b33326a2f77432f35615864357766726a43346c6d5a2f5856374c456c2f694c52624d44584664626f4c6f4961314371693043342b652f697565785970544d716b78715838516d35597350676b307666772b694c76397267726673794935705a58624363613445525275557062584c346f2b5443784d387364544f554a4237695a4f4c7674633532646e756a345239492b683864686d6c465830773075766b6f54397237414f41376f346d4656524b6d37344f5a776f534d2f526f5071324e57372f4c34545738476b50384151454f396d2b6572677249354a4b51715a4c5374686e6163624262336e65784c627752585954447336706a44372f4966386a533772544d4d7552395856474f533930714f4370484d2b6b5930634730314f4d617179325a656e4b344a5631546b6c51636552674451414463416b4547387a6c4f31536b726531646552565348732b317967376f7255527a6465376e575444566d38634e485361313464374f772f695534417036414e35557367516c694b735151515057586a4a324a52565379394a334c6c5455667273503673736a643152664148416a2b5472326d594f6e4354646d6a55356b30304e4a646a6975374a49507a6b69612b6c79784257753632727666726a4f535865796a72524c37436851612b2f346442704c524b463171534b326e566a544e5231445832637573567a504a656d334f43356e474f3973656174466675446f6d30434e77562f4b48316768766c517171746d6876506b70795a3557532b396c45416b5545444c7230495a6f4d4b66504f66576a7155304b547041654a574a2f4638535453456238566d546b523850745032644b4b327a73687a2f4146704d7436485a784d6632563473396d624b493643566f616b4673704a33372b5577446a45685a505573644d2b4a704a6946444f7a6c4b59636564496c30684c5059624570416146756e555841624e376c664330666135596341414646473078444d55554e477658433566754532646c726f70716e657a35473949434a6155736c4969425971726e7334487a47376f4e534663614663575530786c795861454a6e4b3059613670387946646973704d325571697175557530664c70667a69753957683341584d50763737566539514b654f795248492f506b6e705778564d785471566b6938305a71516c74344c2b726454447833334b48645a3076702f4955594759635a336e78425a503150396264457631577730437335394a6c484538516563576d625770725437744f586c3266542b753955644841704f6c334b50727a6c4f436a73385a4875374465624369675a3231722f7742675a524a5a397737625735792f727973534d4a4d582f7743307538733739672b6b382f654661622b66706e4b664e594e574e49746730354636685450654e79357171614e46487358536554444a474836377961524941446d632f774144425370772f654d496b717647586f2f596d7a4b6270726c364469736339742b6c514576376a365031325a4b5a57564c4432673674536e4f4650787049704443363178696e524d72614836457551677a616e7349424175766f444354514a6177344d66556a507a344339674b6e427448754e786731594365783031636e3743446a596e72753651553042506f55442b766770696c6174333176346f36696f4266433656432b4f396b614353516941525859574670354c667241786356764b724c4c3530734a454978354f776f6b5a6150654c6c715851786958667331544d6c616f4366376a6359426a304852616b636c4d2b564e624646306234354c50355147567755537446385751566a4b4b46754a594a494767465271674a5a743935443149476b304d356e6a57454b5a6c3153547a4e34344e52704233526c646e327752794e595435592b704a503130452f774374373569446c51676c5a6444375939592f794d6335744e73384e62373672342b61623549566f71716b7a4f38565952634836736e31325058306939776671596a2b4c686741614f645261357a6d4b2f643434796c446450586c6f5372353354452b686f357a79424f6632664e455237387767626a4d666d352b784b686f664c6b6e6e2f526f76572f4f69373274615a46486f494e7573796969683262614b68702f6b4a37552f4d6f53706f466651636f542b5933415a677a35586e30717a487036555a54567661347662424a324c756b306256446e365639544b49785a56564b496b466941415572462f735831717241683774665135714f4274387839517a576e6f637965575154466557356c6570644c4974776c4f4d2b624f2f744c2b742f64496636696d56505149672f5051794c776747716e79726a633174486670306c544f4f6f4172634559545a3265675751734836344d57422f574c325756706f534b2f74484d41634d646e334274767961706f6d32614e58535658386d623873394650766254623270566246305641796868457163532b7a44493533756e5a5a4f4248617958534b736d374b32666d706979485a6f6b33537631714b35346d634c3462704a546e68574c7453635a2b54694332416d6844505970715843455731576f536342366c44486f57334e565a5648627a52644e704b726e346a534f5852545377763037482b5975396d3474682f414476684f6b2f6d74547451497a506e55577a352b7964467a4a325958536c6e7a394947617576464f2b564672715855546a7966344937684834696d58513131487730492b556c474676796666376852734570732b59714d7a6b79366175726f626a644855445a656c6d644e30436b2b63526e50335756423142562f375464396b614a663841502b737779386b794f5a54704946514d757058457836737256425645794936624b48532b2f5352747a7347622b615774542b564e39695a71544c6a6b6f4e773036316e644d7a506350307a57374e45614e4e2b63754b3252746c4d785751794c526248544848484379334f5439656a484f58354f5438346f4f7463616c39705a556f4b4f524d545873786e4969726f74775a663378536f6335586353546d6946664f736b51374d304a3053692b354b5679704f665a635a7a79636e41416d4132745654396d634c636e6c396755797a31312f786a6f777a382f56305852305a78576172662b3844575861764c737536646a2f646e6d684930477672616e7556716944545a384c5a6772626239514538316c304a6365506b35674c614e52734e65555539374a3442754e6d5a6a4271317667573658466c715a6d3164554c656e47684966576334454359327032594645576f6b79486f7a354e43322b6674307a61346c3155426c7a553077536c633074586d7346447355633133376d2b5072676362767370495a36684e746862486a6b6f6b695631354a71336e39726e772f6c356e66485648564e7344474f526333555a39374850506f534d35724561564b30446f583235504c556a57326363765556647535392b4c79387143436647314a585030776c4251707a32334175664e32646455784954327a6b2f367141666536705073545978704b4a316137434a654a364336744c516c386744455a55613872764c477564387a76735666636a4545636e597535694b566a56644f7a6a6a4f374e61346d66574a6c4d59584b6c656e4a6e7252796551634847622f4d64374b723445566158335a614a4b717238704b6638415371696a4c354b32562f3841746d634875354f303650714261655a6b747a63377352473369715676707935354d66584d337647504c7a744348367759726561477450517571326175572b344f6e37436b6d556c713650367a39353541496b6f6e64733763516d6c746834387a714b72747a592b6b3130395831574d7a78467246694b384d65714278483176784e6c56326634665a6f4a5555324a6a54546a557068524971694b7a5354335966416576567832704f63397347583872706532793161564b766c6643734c432f773469696376367935722b55422f4c327a73724433706264794656656d6265584c5475614a71626f665a644a2f4464304f38517675694d4a7a72414671435243334b6151476c504a2f672b7671524b34574b59706c5439495950314b32774b36775a4c32576871724b44396b63564365454b4d6c656f364c7253663178342f556758325755462f5759573545746f567a354d30374c71545a4c6c62557248336a526c68664f6b55533531645842306662704c54316a5873704f6c63594e4a4c5163714d5150636d6c307451787a7147536f4f4c4e54425a3269625056434c766a4366756c6c717956694c4264506d67536d635946614e495348746b6a6843634573724e6c574e70737a3171526f53573965376d546d614578364950384133397031454d765a47436c4d71305445726765796b334e61504547487741655777684a7677797752726231454a6a6f56646f70694b706f336d324f47675766595a504b356a5546396e692f6753397259786d4d576b427554706c6f4d7a6e543231556653717a354a366a6b577831656e454d46744b6c574f486c30703973392f4b525379663470692b73427a437843675a7752683259565166767364597230797245512b6b62653165796f625339717759503242597746667048324a6b3954635341674d5a676b7337534970322f4367723835394d4569776a686d525a4f437731413351554a6455356c42533243505639534266436a6e656b77633732415a6b6e626c6f5336536b4c2b733569565676636c69327a725a313450754b344a5a526a6e596d697a76617631386f422f6d70422f4566754162516d79723666554558466776467057764e6e7274586c564d6e576e50574a5436414a4b4a4144483869656b526730796141676853653842623958436d3352564b4b654e62505a4861784c304d5233744c453730644c4c5a6e724a79565167507a735832616b7a34346a2b516a44674e6e39592b504e57705658797a356e6465694e664455316a6e6958574d505162503157686f5533554a4c674f7141656c5361586461437665414166764c59703733565779555353705744466a526459326250654c554662703565582b2f6a423146457731477959717a5a396c5366654535474245454374414c58324378504266702f4b6b745a7a6370623437756f36425a4d5a646c54315a414433646663355832534b6b6e64592b6751572b75556731444f3954516e6f62382b75786a6f59457a317a73397748476f54474a334a366c716f2b63564b4432473651766c46767842396a534c6541344d3354306c334a733752447a546f596c6b3675336335496135666d4e72686f4a6e444c6e745437442f59434b2f682f594d58636a53695852695831476870646835442b796f346d6274304d76324847383665556663434f704b4f537939492b424d37715150384137697741684f2f2b517a38394a784e716d36347170736e715356455241776551776e6659774354784e74684a5374337641796d57582b3163625767442f4e2b745532756d3775586d6d4e7a48544f4e4142575267765038416b6f766f6f6c357a6763586e693158776a77326e544d517a4b464a413047444b467261745077422f756962527750673566343046424a2f6a396d7178625a554a354b57674c463837336e45704b507169372f7a37774231464b786e554d51736e706e6670395736726a557770627771426f354e7a69364a6c786a51744b6a43427a2f384141793976506d596c78415554694d73343566584b484a676335345936347044413647577547354f6a336b374b4e4355556958652f48306b4f4f6e6e2b382f61336f4239785a4c57695861775a4c384d3444397656746b44487371706959354b4e4177534a30574b755934476c7a67746d516675353050722f414b4d4455797835576b615a31323030433065506e4a647649373675746d62537172575941716e466247455a6758534f64334f752b777a2f414c6c775a5449596449554261785a6d79705949304a5034334f52534464496e5145707666634d704a2b487275392b5a767775644f4941776b745544316a6f4f584134707575575533667141595477464e473139464551424d78665538564b4b5a2b3959582f5754396b58443133796a776757365a316e5a53326a72674934337942775a45457a35782b49776d6d7374442f4c32737a2b4d587966707339357a4a5a37436e442b672f4a734e74717130713931594f504a5739467a31795a3054754a4c37564c5454376c38545a394872756f4c68463868675a67513936414c6d56793643464c7841715745384d6f364c7271715157724d686d5854305a786373685a384b33717341784151622b76656765705741357366444c51705534567a4c694332576c6f576435616d6b69524e2b7835432f2f482f3144332b326276784d4633654b353751442b676633503750333445365772595461553836674c496c31414e58576339764f6f6c3938667554387275382b4544362f346749666c555267412f733148414b6d6c5a664d366d337038495447366a3441536a4a304933636437706d41512f496c72486b3734724f704670786b5854444c505348426b6d6c3664737430585749344d4d45367630717548505168725a436159306a52524f58364c2f694e4b434d6c71446841494a4c6645587a4c35625a4948565771584a5a6e4775325234653658717067797042526930545436695339797a5539494d4c6e797137312f734247696d4437476732336930684b746e65585644423142384c335a744d2f36714a33746a3577456770692b4a632f7271656d357a674b6267494b777372354f7a69646f4e7a7136654e6e70645356643744545a645155776f2b503479596b59792b7738577241356a2f38416433744d7a672b645338575a386d65504a6c516e52497553367274364151365a4171624a79735a32732f637058434238452b642b7a795943616267542f515a56704c4d66524a4d7569424d5a4c52535655336246544a7030665a496d582f3144327938563968676e30422f662b3739473179754a706b444f524d5267674a7049564c654a507371533564543147467264494b4774647065776857754e6a5838343568652f33384d6145384d7842736f36456437373267756567364b473041452f564d6e743037767175754a6d61355a65356c67382b506e2b4354503569594e4a476251556f654b7150326b594f424b6c63776164492f444d626336654f704e396f794a345461686e4a59714c6e32556a377a5450384b58664e2f514b466e525859306a676939696c6c3167397a583072715343432f55524850555476686a4a626935374f7139352f4d7467554b4935476b41365a546e516c5278325a3932776e4f763546397236364948764a2b696371612f6b6573536a5a587a69316b4b5570637273346350345465422f3248784b30446e506154486655596a37477133546c497530637a4655337a52385a43516b544339676941384f776a6d4f685a6d70594370366662504978552f653141354a665643726a6c4b43786c42427957464d2f2f583974693875674f4f4a684d556b2b6b5330724a69677a51365370374a724f49316332664c5750663132303263414d2f774239545071316d777570564b394c5349424d42594865453949742b49774861414a415830483762656457747145746d6e616530552f56304a754a717175485135444a666b3554507967416d6d4d4f675a6b76336753306d4e6c346d4947443847624756335a7a5847716365684134394a512b787a436c6e5848786a306d504b35686d53536837635a6d59414b42684a6d5375396455626170362b44312f584a5a7863714a32547843504e705a7833634661654231624439334c6a4e6e746477483842305473306c3870557a34674a43614a47317062706d4c4f416d6f7a69555169396a705475572f7650674150626c47526b315534716d426532784a30556e32456c3574612f716d6d70375a2b6634646e72375971623457636f7156784e436c6359505a7a414437517236332b3041654c6e543863697936776745613961534473304b65546a516b356d735830584d39724a352f6d53346d4c6342475a416d6c5053495142524471636b4738455a65704f76556a696a6f5a4a43324b4c6c483669547757706e2b7773705a364f3936786e762f7743676d5a7674702f774942534d7157335a58326b3659786f686e5176737039715944706d2f515363692b4a36437937384d763133644554374e2f775930492f587968677175324b7050516751726f49565548756f6f3676664f535757527235354b6d4574627664504a7841556355452f4d784a465570502f444149307a416a55434f695a73716b767a446d2b5a55694652324a356b79335549726e3935506e2b6d6d4e594548466748494838635a2f474365683841714f70564e4e4b75385670366e2b5764566277476d63303837317141316b323666334d347052434c6a64383375373776593176384151664e50764b30574f654471516331736f766d75465a52554c664f3354546668335650556d37726c70515433436b76637a3275554e6677756f416379576461464c7151716a736e316c2f76657542612f6765466445626152536b696e6f47644a41497548764f4b44706d445059526d454b33355774794e42715330424c6d65664a302f794e4838686172512b676e64413664416165436f696f5971646a572b30756f5778564c4b2f674d5135504a7643476a587a4a71593274785a3942546672787766565575504a546d616362686d336d533364725471525a36416c6c4d4172675331715841476f71666f477a2f6f5a695870394f3866752f6f5264304d756e516654556f6456424346424b4b34634d3965476563676f6f4b6a6f503935704d7467592b4d736171537865643754457845534a7a33597863336b627553724b70535a5a4e6f716c464c474b565a2b684872414e7937424356696c2b50364b30546d774a356f3575642b4a366d664f697579336747656c35454a39624971645776706c54654c4a664570495633326c2f466a6458634e48312f675735554a554d5253786775752f6a46386d623777736d5a61744f2b594132586347444b706977377770334a49306370444c612f533375574b7a636e7079535a614979464a4e6f6e537365725571645030426e2b44726b2f49542b5036656f48786657546a6e2b53444365326f69354932625070445078706b3651722f544a3551467935614b382b7557785578726631724c4262385648564d70532f4a392f754a4448656155544258796e36744c4d2b6d70504f7658524b3962567972796b2f7839414774687078593064343144694c2f49503977495542356951592f4a364f36646d74316d544f457461614757314261717a746c6a4664746b6f2b6d332b44636f6b7873616e676e37315163596f4c4a786139307a6a4d343642366a756e516e3545563354457856414f513142514c686c546f33636d6b703467683550436e4c6f7172413271704d4f57653179365866434977487149714639526f61655579584f3443653572686f6b46534f4a314b716e5474696d7546734b65305235766673645348756f4d376d6531725a3263434a36586c464f4b4e57626a32314c35616c6c6476576f4e65626f61367a6c314f75392b4e52782b4c5a775153303056587055533654456557422f734338526e6d74504151786e73303761616d785a6958524a4d73773075552f7743434c523131356c3268547a37315856724848732b7954433976734878365450345a7167355355396a7a794a526944486e364d4c452f57697a6a6b7a3342507a395336445a4f365572346f745037583152637676782f3956687a2b3858617073536c48572f6147742b31496b57514c74684848524438692b46703575666f64666f6743344e53566971436f304e464966526c4a685249574b47646358316e664e772f6230796930596e416d735765714145583355534e47794a4e72477a38587a6d597833384b7a53753635692f3232797558556c594d374f546349724a6b736b663862514741706e754c4b426236573663785a645055323653496f59333538745852537839304d4b2b70726c376d732b426678644e6b6870534873396b2f532f6f48455a65533637363335386d70314c7a643368412b6b7978316154475155667874676148563254386f6f6379633164564b354d6152364d62464f6e6542374e385038684a6253516f466f2b744b6f5251464762595332486d7254517a5a63774f6457694d6f5847434c456a326c5a75392f654e4f582b676375395065446f36355a6e45637676692b312f4a6c464d37553438324c67526e637273475a65656b32542f77444a646f50396e6550652f436b5236344a6667654e59666a634e2f77424a796f4176437651653635614e47766b2f43635a75443546474e52424b4a4c37777844696e653841593036474b6e424f6b4d7561627257645852624f314d54624c502f474d6a6a69506c62716958526f7a746a6173715638364b56676246474c654b6149664e7867616c3433387275446556496144524f53776e335756396b685251644b576a506c35566c414f7a345a364e4348676472576f4b675477786e6e726534313274742b45542f4c6f66494e464e4235794b4d354349377866524c33502b4664446c534a3772367932647a556d745075374f316641476849424f744b666d5346514464443352392b6e4f304b73364848764b5175542f632b73372b45736c6a344f6237756359347038324f527169442f674d705a6579646e735477472f7a68327a7876346c654f7169742f6a71705a686752333771396c456173395555682f38414469356f4b6f447145644f6d6361534e514a536e393067353559326a2b54456563686a7a7071484b502b473545532f33525a677454575639545a56726f326e665a55786650726949617334382b6276414150724b57646c6a3062716e6636575a35715556586557716b644a704d4c5a6c70346b782f696146725378536c7459344f2b3568386d4279676d435249614139794b4a4932554f636f717a4f6c7131396e546c5233506e6248316957734767796a7534376c445265306b6a4a562f38414445534272556d535a693773326a5573686a472f57625379694d305446466f517832705a725469484b705a626443305350506f46426d6253497739682b3045724d7a6c5662754770463755364272637875636c4769635058335549446247455a416a6e4f3643686e52486f4e622f3132474c53537a324139544f71536454786264704d6274667947587131745739326b48636d586c364a61426c2b667650316b31554c703459566b464c7a427a54476c4467635151746b316374734672552f4f4c593246614e2f47693578564f58457971714e775654694c6f31395a336866455352726f39395470357568472f4b344a733257783259644e6d6d6569445652446f416870535a6c554e646f30774e4b554d7972717873393641494a7035372f32684d78306b44375674742b55697045324e6870343570794658396a5147524d6a7230725a6c35695a564c7a6c655131563844465969786d616b334d6f6e3456687a306646772b6f4e3277736363394261474b6b573573795256314671585661534a4b3646535133793851644b32757a306e5252443143305555554c62395470687765725933483450722b67637a43517a7a753676355439394e3863637a7450576f375843314f664b4e35686d6b4c436f4a6c5347393969676e6b2f327450696541483956456a7a31486f55386737544f76536261636c376e547255367969764e644c6f63736b716e553165734c69637267524c2b4a714b542b745355334356304a4a4a3865526d6a38793947744f6a4c48573369354959626567385848326376763264355176733770592b7570396e474f306d55642b567a6c6731786d664f525850714e726b4d30733831706374317465357a6c38702b5a66454b6f584a4b3134767136656378663656447a2f67577a30574279644c46716e644a61735a6e796752535753764f6c46392b61684e335a38746c724f322f525a71386f44755a5564475831633530536a55553651344a554454334e61376a6b6753763671426b396474622f414a313163324b656f5a726e7a713736314f79776d71665334575a473430435938585a3833776d786e466e6767536d67714d5031702b7a395a45366b737032722f774236734d4f594a71526d684a4c54497839765835444947434b6a6a5946555a574578624a766c62496c6166593435766d6f6e30632b6e6b4a4a6b6b696834614651717a797a75356242656f4d784e6e4c7561457461704b475a62304456373839314355463879336634436673595a68514944504a37487a5a2b724f747373395468377052775a4b744e755a3374576374447443685751542b2b4e706f2b7872494a6377554b2b5362704d58533734796545426e30352f336c6a53466d6d6a6b307137454e685a6571363351375573723055552f5056444b32796a4a6e357a35415361442b763967334e50344e4e742f774158336b5761374a6a795a46766c5856665a49305633474d32676963626448556a734f4f36577570506245736e7a37456c4b53786d43632b45487550696c4e7a362b59626250777441364d6c555533557850712f57702f4639464a53464c4e6f647270617a347178586e75513065735932645a664c504d616b756d42495645415333782b5164314f63526f6a747575496158547132387064742b5767774e36767355456c6a684a66666c495a2f6d304a332f41426341506c56702f42396655674e7a4830547838726e6476466d55696d6d6e516e3039476937366f6f664c6f306368466b6f7564517971366c5845386d62575a3068472f715441786462647a62524a382f4e68325672376e374a493572486d6970434a464c48355655536146516679665a524851696e6c30486437505355344768695a616c2f4d536747765938386955654e542b5161373474537165695167374671424a5733695a3261476572594f62726578314c555263686a2b4e4c484a7039303859304c2b4a3548525457323334524b3350324a356275715051703666475334316d5a78695869687575356b453933794f424356736c476632306439367a2b3476332b2b3541644f6f696d6341507332485a2f36566e4c4a7934546f70463030325864343353796150465530564b4756646e74377748384a587353594a616368576532652f6d7947565639356e383635537a2b742b7a653665633361546c35474d73574337563476536f4b674f56574d623267534c674a743551715a31494c63633037554357356c4c574e46496a5a5546616157756e303357334b6d693073715672335a33616b54676b5a4c4939595250712f65774a6b7150706753666255536e2f70616b46436441344a78633232706a677a3465436444414a4c43727a3945766d45654f752b51326f6438626c7042796d384672556734785068496265555a75646e5955717167716d54575166396a567134466f38785753766d6d4f74734e707353696955556d42547a7a474e6f324164616a563035696354456a396e4e6d7061795072376d555461362b5138356e782f4c4e4e4f617a62506e6d6e57464b5654396c6a6f4f7332324b567a32664e3742544e496d41512b484b6f4f594a5139684f57587a63304d5151637a6a2b744e64772f587350734e6c3872702b6f3531496f49516b5961766e55424b426446576c4643664572613665445471536b394d6d49613644584262614e5350746948662f52733068555077754c6a692b76313353514a4a4143335a4f7631356d3274595450714a555156794b5753362b57444a3172626e5564655836577569656765634a2f44536b314237676b414145314c585158483837334943346f53544776547a6b6f302f59576c4851796a4b5979673670364c436c34357a75474e4941706f7a4d2b6d41536772417571564d6b6b6854576364504251726a6e58756d6b37622f414c704872344b4848557a2b515a7244377544384b51543765316b62435759585a343579722b4b676c664a516c5557524638433639466d5651366c737a4a69737644734b4a32614d33574d50716e2b314c5351494172764448367753354539464b3679626c6b755765712b6d594f494f79476e67676e36444a356a69594969546c38494f714630765770397a79705070682f5166483433792f456f6b7978633539644d39555446766c443434394a4f6e5331726144363666724c452f49514b5438316142393665664b44663672767234676335665a613941576461776161532b546f7454384d39426648394268314447624754747a30482b6856314b7077442f414961516533344c42353155647a6336536f6d3653314d7a356b3366536c637034534e64315a706b634a4574536a753731726936777a396e4f45507a474163426275537178434f54563049514155424a592b79563471367670492b574e5045384956764556714b6435433057752b49754f564f744a313331385130634f5758557931766167702b7a382b4e2f316a69667a3355636c4b306669396b365a38307150634d2f564d493741397863647a684659664b715a795969716c53657a4b792b36464371434c682f5948542f4145552f7a544f57696f66646d704658473851667941524f634b514d41414f4f617431476c6d4b7558516a5a37664d43613658436b2f384143636b4a5a51444437336e49353746714c3342374b5a696341314566766f6a4d597a6e6745657571634d38386e7645627261614653387a7746385376676f4c3639714a714f696d662f77425359596e78394e437a675853426b3665685335464e655431637a36366b574a537945786754645163362b4456566f386e6f6448777450324c2b586b636335712f5876663767446f6e3743417568476f6f30307a302f44526b4f34397356457a7461535836382f637776686c376536455566787451792f7744535a78484866577541366a5745796c4751465276757a5878794e6771706f47727336375774456a6c6971584c586a70717648716e546b516a564f446a6f4835514d687643696c43544d4d38684b75314a3070757a7653726d6e6247384d326865645934615632723136666e686e65366a2b51584b524e61716a326e4e505976356b69304344375839674a766e64547258324e3070645365372b532f6a6f7245757a4c68706f55724f674a517351794d536550733458436d54396a71444e7975674f567a4e7431574f304d623778744c355252324f2b437057733770524d4f565447646156527064306d4530552b304b68647a6e7a632b4e774363546c36743163422f745673585a36317664707845503658414d5572375a49334c53334c636d58346849583067304a69414b7a366c4b56415450585233616c4f65624d6172366942764256334b4e4450386573706f374f3752356f724a50584134767142336e47463962516433705441587638413641336933616a4d765252436c5854426472616b356f5364305466573578356c4446484a336c56424d46504a65743751445678744e30346a38617636434c736a4b7a67375672597a6255785755452b61534b72617a6e795a554c357061613138622f32624b462f5953754a4b2f774443645077556534506c42396e6467327574745964757347546f314a47476654432b65786e426474334d6a69757a2b64644373724c75547266336e336b704f5954544d7667304257324c4537526e636d3956716670795236417a646658506c324b2b356e717953317a756c34753452544c6b6f5a4a786a46476657306b447672683831723971524d7648596e364236466b384e76336536746e4b336f3268726673424f72355a4c55756b2b49452f57645a507a334b55746871417956376e414b54714966355463686e6c6d56447254306a735a7355756f556e50313763326c4c663249737a4d36704336766c2b53346569546e30553375396e7851386e514a336a4f3264765839424d2f48712f33505331724856614d7a6173344b565551706f366a4d4535737951573676324a467a6f755a5a304441577a6e3877416b3274537a6a6143472b544d6b6c32536c6d59316d765838316a6d394534554b62586c7350503537554d2b5855634f68637768636f694d67704a426c31725341725537554273565761655a4f786d30354b573571715379383175664f43772b465a4378592f5471626c3576776c6f4731483233636f6e6366656645414b55756f644837315330362b46574c6b4c7a6d7a3156485454506d53794b6e7931544d4c716e752b306b7071476656354f4e504f2b2b6b4f6f7170347a3764756e4c62704158625271646f56657651637063383875526f7a756c3039564f6a6d4c70536577656b436d4e434e4e524c726b58374b6568777638416b785447774b5575547a2b7741774f6e5071697a495965566430726568444c46507435654c6c33615365584b357430364455316154624c685973794666752b35587859645336526e395233383252493957554b5a677a524672463135365230637a5262306764437439415862355a30756b61425775637052355346482f503841477069464a755647796541437853302b7259704e4553616974503373743145564e5a4658703538736e416479786a787957664d6d6b2f65436837384a3041422f4d49757466745347506b482b6c3163415776304858517a5a5769323441636e676450597a666e30717773353271587455745844346e686a3759476a3048635459624c616665424268396b79746441714a3838575258645264484e35426f58346f4259724d30344e5837697562544f7a79706f6153656d6c7564397379364e387866316f48546f31416964637a3747366f70686b723556513336484c7330644c7663305661454b75554d2f6a6457666873627750306e4e4a7377542f59396c494d7171344d6b61494a7152547038657533565a5a6462376e5931503841482b772f354366324b544f686a6f654a506f4c5766317638567350707a724235714c6e6f784b4c4f72763841757432673636644c4f557a6149357a66745657637a35313852433561377443344f324f2b7963615568522b2b483851352f765058674147622f4b566f5a7873656979383941725a2b55493135593679697773766b7677352b374178525431667955664142596f374f754e5a46787679476d665151627a366461664774444442372b64666f5350357531637a37344b394b684e464e474654616b756937596d597550346d4d5654315571566d43535a37564647497a753851557a46352f4d533465394f3156426e6e31616d5a6d77797863457363634a3156476e6b79304e7a62693570556335414943585537625841494571747330664839503147766d6270534a5a654f66463770354c556142324e4d3533316b75646347756474515a717a682b516d667239725753616162302f5a627145663157574769337135704e794d663172567563574d566c7970664b50343775665a5344667646472b6d622b4f71547a4e69437253754b722f53704f6832442f414b3830634477392b7465744e766e362f6d4a666f5a766138767758785474725a426c71674b735770734c4e6835354367676f7057756c665736695a4e6a4c6f6c4177436441305054396466765355644d6439353850583641742b532b484c457630684c5963656e6a5565546547585753795436534e722b4534366a424b6c656f6d366364477a5163746c6a5071324c516f492f766f355172333263696b384c5934794a33354950386a353958646d794a756d797647637552644f4a527251636f476b37486231305436786b7363774f7071434873377442362b5a767a394a6e5263784e497878794a7435426f4f543574344a56726d363353543468716b7152564750506b5251544d75444e48574d50496564596c6e6b524a684d506c706e4a6d443944333654617a556d30644c6651515031463951717344305731374b686a7839514d50796c4e4e3749686b4c476a625452623750677971752f597a367672357677323536686364655a7853442f546e424646597a4d51436e347079757750782b3858726234386c57685a5474364639656c6c544e2b4c4d48634c5a69304b6c35326c394f773673396a416f592f337151314c56704131677a354c586e4e70434f337254366453476244766c7a52436944335255544f586f554f7763654d742f5a677a7231334349335972336b6958367a414b59414d354f482b69724763786a714e7266436f30497835595035395061666462426c313532665a6a30344645307273714555744a7a3553464f484c6d6a54305063634e6e734230353041755949422b322f54304c4c69325a633978555757302f51306f346378716c616f2f71717331504a6e38666446524c5277575753753733686d625847304f4f354552456449444878655852586a654e7836677662576e4c3044436c2b5444343470524735616e4d635630626a4b4e5a4c63715170475441444d71654f734a6b6e4e3373696534633765376d52474d464b4a38744b713863546a676b6b376a4b763867586d70584b6156746e6a633564424a2b5345615a64494a3633424f70587a4a7266737944753334316e484d55384c4c4d4762556a344858366e557972745a4c34386d4e4e48632b7163304c633242644b3271547a7450732f5649726367334a6a72572f644d6873574a57657349664b3649797379396e734d335632502f4146644c486e6c4939724d37687737517072537450622b32544e4453397a4364537a72503630456d48703539306276696f6c4f4b5874304d3867364f6747394e6644564e6a4b67614f68304d464a592b66725034596877543741465078316b545473357864717336334f644a634f5a536241565437347157366b2f637448495938744636744537534c50304846342f6e6e5337367a6d7965777a2f6261576e2b7778695455576749766f435a564131516e434d31646f4f704344506a357836335a637a3873653230364877793069675a7a6a56522b6a65782f5443362f434935574a6f596d656a51523979765072586f303962416832625256497967586348333571586f7a374576635a44397344414c503977305455424e664a4942707269707465416841637176394c496a445272712b764e39647047745264304247645a55554178494132732f594174543339567032594552795a776730564372506c6a7a7557444c2f4676726d7264585567703157457249486e654a30457975756577444a767a4162574479676748765a74306e354377764f483537396e446e64326d5875616a6b72796c476c4c657465524d467657797a71376e7345686c35376945434a682f58582f6e2f41496631464f7a4162587237775870353757527a54446e4278484774496d7a524d4349464c6c5830553648794c2b575a6e66384148392f2b38425a314a6770325943474458634e524c6d6c376d3272584a533961334e616762614a506d6a672b64362b4c2f6b4f544651382b547246544655384d334d5a7a706774742b495133316d716f526f654d474c6971715639732b6f475a6f3164706231636a4f70415a65645977595575374f46482f4141433654555170656c4b7955374d414a34316b4d7172437a33786b737174482b4f5970704f5761706e697a50637868462b2f6d56526c776c2b2b4a4161502f414c5a785a712f347430487a50794b4a2f765457497262636752634d686d6a51544d37566d4b6c624430696e36553962394230362b6d48626b6d6450535631702b777a4341655479524938696b62624d3633727055614f7a50776f7059774c544f585a3048616b6331513073753970546f5852326a69703067504239677a55685945596f393561656450327972525337694774477571505470737a7068326f617259347031385a526f64792b435966385743536a593441645571623577696d716c3664467134616441446b644e644a6e483970387a4848397770636c6c6f46786443594a796f3473586e5a4753724675425a3945774b314f314163654f3579486245553266386e5934536b6a67306b4b3754474e48632b35576a57714d744c6c4253794c7378564f4969503330593547367570314e4b2b56424831567a3535657746547670485330326b7062744574544d525771714a496f6e7539697a2b776c6c487a3961447135506c6b3071584b50324f396f5770326f4548424e566d5369654f75664e7a386b44376c64444f554d79574855783054552b4f327973483745363643537066384175467276617a6c634c457870476f324e394c334937346d37705a716c316e6f57634e43732f7557797550496f6145334839744b627558597a3436424e62652f4a4d577949665862787a515a4e75732f4d567436745363304b35705434576a477071514971582f6f4c3956737479334c5242456e39616c6a4b6e6c3139764754307a66634c3479676363503245546963697463796445444f6e6e4f6c785a6b465379636b317938766341355a766b543074583353546973386b58564e71624367576770617962536c4b68676266656d384d6176485a335338644f757876484c3532425536344a7579736569644d2f77425871614a5163414b347175663548645035546f364452397756523533537148615a5139733459345144513576656a37466675316b706f54505971684b5a2b763073394330746d424e4642676632464333355143497056664e725650747a4b6c364f684f68722b7158664c484b3355717369722f6c61707836723572367032483062464744684d766d42424a732b79473530506579354d73537a363670716b5a5164624d6f7259356f706d5a764a70354b614159544b67584f7670443169476e53666564442f414945362f483950314550387070524c4c38632f4e426a4530416d634b626b7863424f6f326861655a314b4e456c786a32776b74463565384a767039496d4e5432623957466659525a31577a38697030523345352f5a323242395a4b5269442b466c5a436d6e3576636b644a6b4a4a52333270627830524b6934326a6f4c43383961767159675974366e6674696b6654683031476b54495256336e582f77435a614476653648696d2f4339464861665a503961737951566131322f4f52726c6d6e78587144433548335a667574504f346d6a74334772564d2f4863734a31767153325a4c4c4a5955392b75704967554153664c306e41745532365438685a6635417370792f5444795033364b49362b7855716e752b694f6a6e52735967694639454a53306a4f3576336e644c6e5a784c347a366f3147616957794e50747a382f314556384a5a4a6e2f6a7376746c2f5961652b4b73462b7278334a78566e47396477413750376f4c64436c55647a44643770357a39764b425345334f7a72436266356b2f4c395265616445322b47654f563169684d7a34464566337072326c47717552696d414d335539616d7849756e49654d2b4958473769464e5838696b386a342f702b6f6a5569476b69695834534a66366a6345456b5952517474706651776179783261516f2f692b3539446859587663433252756238782f716476384156685073395875792f774264494f74585079686c6c31724c6f65705638784f436c71794833542f6336584f42376753662b5a382b496d3849632f336e72774772656434346c756e355071546b4a386d6976736c736950695a717035613242504143303859615a3056537a7838346c687259774459674574636e354e4d7a6a48634e6f2f452f4a4f583547505a414b32386374644847736b4c6f7975506847364e43576b5978714555315045756b7869775039672f68475476367a74575a743878726a2b516e4a7a69384a446b3773352f643661686439707334655379664e596d505763344339724158522b6c6c4b4a714c6c4c6a61422f4b48452f31656e532f7a2f5741703630313261487055705561367451427a5a574b6a346a676d615a4c7365557834454b30646a31477559587770457a48374a704653484a6e2b4537303755445972775066545034786e6679584b4b464a687a7271724c775950797157624668776b4c35317a6b3853496768766150706c2f7744696935532f336c615a7a46613842482f4f646f6477757152454663554849614f79556d376c744e43516f72463353745431613347786158696e6e4842773575397044674743317a456365484c36396638413147736e6d5555367657767861777676616b576e6953592f7835614a336f53416c6450565176563478484b505a4873666f2f32417639695a75636f544f5a7a48657638416c78382f30457039646e556679666f734234644e4177656f2b4b366953316e2b55534f395a6c3361456c556b372f6378626e4b597a6a766c427065345059347a553661744f6c2f6e2b734378764c615a463054696b6e4662302f64505a4838734e4c337469645170396158432f77433078363670514435474b496672664b62694a7738584978772b7657746e334846797a37364d782f374d352b39706d564e6e3557694a5a37453844397273593367382b7361522b5133395731615a41436661337a7a4d664d79785052577059385478424d4a5131394b5556726e5a54776c782f77437a394350654a61495369626d454a6c7979744f7a41673077307a554f626f45704a5664667957513164366e726f65305a3072766958513770464e3975455455532f597a356d633434765a3339324576705770556e4d39656d39616c775572496e4d616d505163333650477169594c6b4755343266357242682f376b752b5136444e4a476f4b6b617a75637a324433507737484e66507a72396252455362545047734748702f744a77354b354979373162306770764a684659646438695768622f697464623233524e57382b385a5a657a736d6c634a32716e6f6a6b367a5272733933756f564f4b666352644566613772512b7439646b2f38415662396d5144356f73417a646358557271704a764f7332526c744433306a507755796c4f347845467a2b3133663137772b733433416b466a374c42694a75347058655379726d4776704962496b47445270494e655a49675833703673766a2f31705953796f4e6f41414d4c712b76384165456d796f6d434555704d2b525930754a5130725535687a553669632b796355494c6e5754384b656368617776714e4b3332462f6970665036726673794574616e6957446e457564724f73597850574478726d307572634f6733347a6e4232656e365a65336f635133334b703933764278462f56684271342f645032563046582b6e6932766458304f433531724b4f6870574e4f6e68555347723431742f79555354583758666f666b6253427a4f47586957536f6154446a397064356f5338736253457369573053334c456c386e636271495a7a37514c6b6356386976635376633267447575324d545038415165357271542b37797053714d792f6e7a7a3136786658717149614d2f724a5a517042496730506d506774564f446548576e5a6743733163525a535a56644c4b425571614a714a666b58495878712b4f574e6231777665734f705450386f48772f66384137573963306e70393838632b516971334d4e50457850636b6c4b5a3139542f7555513869734b776b397043356e55433736566e365974356538426736756e76786b43613545717939446c4b62712b3253493531536135562f4c46576e344a2f676c566f55496b6d486d664f64483078446e632f2f4141586561544259664c4f73434a6d694636524f61586a2f414b6456566773526e394b61477a74774231394c79426a567363754d696477464361544f6a767767615874426a77496b5177694e61326c4a6432476852514d63342b4c544c772b7239372b72427a49484a51766a424359786438786d6c4875372f51667331616271477850677561545a4a69346b756a7a6c63743656722b427379626d637935564f7168454f3146302b6d663841674174515a66304432374a717a6748524e6f565332563572704f396b4873596150613070595245716e693354314f6f5931686837656672346b67376f6644376156743072504359474b6f337947716d6d5a3957676d627258534f726b6c685158376335507a6d49396d4a664756616a566e307661756538766150766e353737676d643330354f50456b384b452b6b322f67556355336863577942704e364a3945716c734a334444334f4e702f4d30796f5341554269756156335035486838704571304c2b45703475326c503970507a334e74687252786b3555353941633751774f664637323841326d6f436a6832664952363773396272625a7863444f32465849544f4e2b4352696b574f48732f7758634a63725a5853384c765345564e2b764a377665486566314963354574553874502b7650376c41494d71572b4d55445132324435656144436b4576624c306269347a6e576a333242332f45546438566462396d51554f6473524a675a31726d425053636a554a304655766c577065615854624f533270543335506631684c3633334f6f502f4d75684f56672f5478707347525572554376764259515449642b304c5a392f6c6a584f6e2f3744474c46594b44392b2f774268383739632f653445787737586b416d6b384655787a6d693371327457484a304179565831467a54744f4e5546676e384c6d4578494c3553624f6b754d50634b586e373179423645305264476841334b6a6156485a6147425666417239566671527750646e2b32584c4b696f6e544e55414d4e63784748796b58546a41764c5046537747567779646e5a6638416452324b4d58742b76596d6445794264794e69614a334541714a4c435958746d576f56752f7741675343756c466348785676377a6e5376522f494d6c52554d7451676d4d37463171525142646a7159535843423864376b7a635038413676365959412b4768665a753845534a6256396d464d38424b316456735a2f4542746a6c4a48484f503754754f456564564f58786d4b564f37385841412f5a6d443251745a5166747559756848474e59396367746372522b39326635426f714d524a43766b3969674a44673674522f75662b67665a6932642b49706578746e305a4a4f4d7665636a4a52594446357944536856545a4348726b36587541465055706f4750366150464749664e4d55646a354b525356755451313778716b65303266455767704531484a355568516e6c7a6d484d736c6749436d66696d657a6e432f6f46476b71524f7249494a4476456e42424a4c5134556a4438376f3942627050637771467373537a71334c596666326b7837785873465a673457434843455a4d355168504d7877394b674b4c334a6e6d47434e6b63394b5739757561556b7064557376596a72765959456141506744474f4372767938703447666e4c5252334b56526d3043324b6c726e614d6455424c39394267774b4f6e7776624e7a687134544539532f345164704b33707935795a586f30465466435244795474544f64426e42476c4372464c576e2f41484e50346c6b526b357a6e4c486738614a787737586b49745559716432635851746a564d357a31627a37564c6f486a4854494a4d726e4d39697a6f49474f41314c6230514d312b7962762b63683143646936474e5a376b4345585161542f6c5847566158444f346572544b497a782f596c596a34356d4630752f747873574534475945476d664f53636a4136536c4565312f592b61744c772b6d48544b506c48735863544363767256746372355454787275307062376c41466e366a7130676b6a4b723238314f73624e537857703976357062616c4477684b663471744b766f4c4555663741392f7743705434633034434e726b784a7a2b315263614f794966595a7a504363526f6b645231346661787337354a30304e3976466b337648423941615538547730676f476d5769567746707449467435414d7464314b4b48587a4b7a37727042625765665a527a34666b57746e79715a4e4f3558794f50672f7458374137796b3744354f4b4c6c4b5176744e4b6b756858455a6450373963314b6b5663594641386e583858582b7779626b6d537a346b6543414f36356d5248546378734b32304c65686d6b633174547a6136786e743670775a344d6a684f4369636746486566585374724f2b37716c47384b6f38756a4b687848505277436f2f676f334569574b7558505847516f446935627939796e4d712b457147482b2b453339456c797a425366364254487a31757a564d612f514873317338726774326c4f4853636a7338372b5065456f4d5952324c5733706733767638416d6343513434586c774a75776b7a69722f6b6e56356135304d546e3873566639564672416631456c424d5767787364524f52764e505766396862714f694c704767507a4933513163734b4c4b35444c4f79457175763752334f2b6f746a4c5768534e41746f5957617937336c396c68395548543977414267415636364c765736724c464d59792b724e614854612b5631584a71382b667057385a4b7a35484959452f654c6e617953762f6a326950542f4145495a596e4b467531616b426d545a5362426557676a4c6e677268304f393049585246526f546f55354951727439797a5335715463412b382b474c3368504663546152736f57536c7950357858386a4767626b5142444b58516f4175484d4a5431643938767564514b2b472b6172336959743643543039373241694e57686c7936465a616a614845344a2b703457524f337151344e44506c596d7a34782f33714f6162324f587a6955326b4666586d325455546a55636f726a4b3279724c6d30387562696f476c6135474d2f774353742f663438704673304f713670412b2b633348774655706335495362466d6e6254424c474e646377674c714636434875746958704872643757326d6a555033554e577879656434776c556b594e4d47744d667468624c4a7578616468736a5937596f3033615536716d524b2b5935467832764779573732382b503343786850442f556e2f414255444f47723567723848302f5152595a734f6469627065725856307270366c744e79733049767230527136314831654849747469552b777942704a5978494777766c6b704777696537336d66434256635136776c39564e786e556767714f6f4a3070395768774c5471414a4e58517459754978534e672f5750357067434a4e59794b6b3176303867365a557764316372762f41462b383062314f37465175703049487357554e7553384b57416744366c33732b4c68483149576571697250676c2b31567173477653544e6f6f733671677156307251766a744c5a6c6c3938724267467a7a4653766d3630464a6f616c59502f41474250536d52704f457737786946417a574c744e7441394f6c62484f6b43684e4a45497035516e357555394977557159557454337673662f547035434336355372666c2f764e35733655623263476471517074746c73722f6c676c4e4b7146395a6f462f75392f7642532b484d6376476c7a6f7049424f6e4c4d626c6957616a326e396536734e7a6c7444332f5045787344326c475477305259364e69324a39744c42656b6a524b707763617741534d31354d504e7a4957736f6d6452796d38317939496f65355a48524263716d646e7439756b3566654939686d704e4d79545a2f777a374141524e51325a37325236765864546c737a6252356b386b7a63384a2f6c477a507a786e61566c6a716b33636965535844314a2b7872513666424948534f72436e2b5267434b4f6c71307832737261714f474c596b6f4631634e666152496857612f72557648342f6944356857417573623748415353773030424c4c64704f7974696161426a65584f644f53732f4f2b457843684576764a50615038756d782f5a376a7672343148763533336741594e326c6d552f782f466a51624b7674696159542b335a4e473476677143796469782b584e5777574477415977516366776839647176364156755a31774f37594e4c6539564974476f327455656b664e737566626b5771584c4a4c59366c2b316a34784653314e4a3361754d42786b48394934385045524f6557664d63476c5a32366d6870707a63574644433066342b4f6738345761747655736f527153733869475776357675434875796b4c44396a5244477348756353732f744b7333734b3554795654765250545a5862566254504f7235324c702f58776b39316d77695262554e537032624f5455664942444c612f616b4e4b7258444c46585735387435766a32574c7a32314b6e636965614752766448786f4d2f39353836632f774273524f424a2f58444852374846336a456371492f5778712f765a47734869794258646f746b4364665a4f324e6c32485461446872324b4a5468306f6e66795547656a6f70547a6b5a472b59492b3963476b2f6a7239514b74532b56644f7270366335797a6366396463443565686c3173526b77534a375156522f77416877506d6f4e696941542f384156567a7a706341474565676c6d5954464f343233516e78494f48484264456d694c4f31732f7065396563396c6a6e5a765a395a5536616d4b4f67336d794d4366333246534d7967686e7157453254464c7252393241484755726e44314231693938307a45356c534d366a555068736a54486f584a54784877732b334e4d3234434473695172575a6d4a7a78465a366b554f6858586461754e6f3864336264334e72706f55797773566b42557976304e4b72736366634d703271486b4c6d7a4b78706e564c5438383838646764384a6b44557939793242446c55395a625648504e586b456a57702f517a385957574d362b77782f636e5a4b532b50466975324f654647644e54384c7133374d697464346c6a626f5349356e386651652f5979712f73525554742b70466e7a76713064485041396f71584a4a617538415667566e78554e705942455668435045467a6a5671596c45474f4556683539464d4766496273615a5a6150786d36714365772b366c3036574d504e54384a304165493661723252714959773244385a3047627276354b796d6c4956447874326c6842686e7948577a71732f496c4f765279382f346f394474692f734b345242325559313248374d33356e7172626a79393869322b5567626552354d4d317864767a75616a5175314155525a6f2f446e7a5133505437732b4f527a4a3165772b69727051646d6f65723375534f58667a5a41746231396e636e6b757731466b4a5a497155716178586a365a6d397455726b62346659356733536972744c706c4c636270674d6b4448375133456975676e6f56486a4e576c6b335a486e35464d53624e445165756d564b36435936386e796663636d585361384c5355346e544d6f575149447469384f50613877396e346d58536a6a6931655353455753727630367a707330484f4432693665686a3256722f3245366274447131666f4d7041696335706d5345424e614c4531386d6d62634e3266557165696d735a39464e6a2b326143326e6d3964517276484848553261506f436f4a6b776638415a624e3874544a676b555a5a3858616455336d2b64575271634355577a6d715368636464426e2f3666487853395a73304b546277692b783374504771483679522b30425a457134394373314e472b7769315a477247763633593066595a59396b36494b4f443866467a704a4c654a6d4e59674154646d2f305675443468334d6f3535744453726f7a4b4a585036317a38366d506e666f36555539625a38426275752f514a6c55784e484f47303536584373327154386a723569524a743051727273744f5243324a35786b304f76424f71736d6533756f4430387353326978532f706e4d316a5442696f2f737063357870555147383461756f4b375351744f5a4f5a4c6862546e544a58584e46386175767a593038446d6b6d6e364b323936796353464c42635877706f4a5167585643327375524f487243747466524c4e6d526f396a63387a756a575a494f706a4d2b78646c546c49535655356454396e7276684c2f562f51486f59766e3752563171615362656a624b553349426243497631795777666a5954435659346d7a39544f502b6a5654774666457858316763554d375942546355774c30614832714a356d2f744f6a79674944705549522b31525a67466f4a4f636b456442636a4178623877414467484b62626f643758734a6935394a7362626d735a536a37767443654934766c477676484a354c3866574561513448776f6f4e41716f2b373047462b62546e4e584c5458544a374e436445775142324b2b5762675349544a39667275707157316843664f4158762b4c2f414c4b544d327a493648786b37627447724e6632626e305a474a7366506c4f6e757437517965676e5363366d6455596f4b4552654975616f7a7a57416f79643761534435735951486e4735584a386a7331625649756837545757595042304a5774344b586648473855756f643376764d32384130682f6e51587444386b2f7135347374677141496c71616c51593055724d3946794a4d6b644563674363635a4a647867414c31444d4350664d536a556e727177616f536855394c4d6b4852674e50546a647154506270736f6e6f716e37313150794b556b6e564c3477512f53584f624653745139456734415953544f63684e612f6c702b5058712b6a5337505a474b6d7a545639796c495047647732483271707839703752306663597554372f414e717036487a4c636e7665735a58304d6270417456436d4459783635717250334d4573466c504271596c65676f7572492b6b704c763841346175746d704259496a565057304a6e72564556637a47412f7743736857555766636353566369393462684437716e4b4a7770397833396b365377562f73416d7067706568624b465655734b6839354c3174587468587a39584b6f335a7770357963614a36694241796f4f685266433944657a7134332b677a793836554561564e57736646386670566436394e306f4e2b45624f666265553261533645396e7542694b506b61546659546d4a635a74542f515953717653637866633562443850317442656a3954727771535549516679713269526a4b6662733177526c336e5a31414d7731546d594a34426d754a30446b33665772706c79666a6f42576851303141527158395151545256524a524c306b396178495038416d50384177346e347955587644456e6a667039517a6a61422b2b6c4c444f6b32687051516d32637530506237462b7a684d63594b417954375a702b676c77643731774f5059344b6d513756435739733532364a4b2b51463136325875392f4a6b306a2b31724837452f774256587a45772f5a504e37656853615036424d4b446a6a697a2b5355526f6b574c71506b3643707074455a70624c426b5257763345584632536b5041363043564d484344374a713934477674464f3470754a7142733072463959744c6e765a543334584f4d6e63732b456d54697a4e36532b44376c45356765397a685166514a6f676251746b416a425748574d2b7974736d595051685a386c436d5374435a7075686238493949503077675a384a4b6359657a357755596f5a565338374f4f6e557068456d696a355071507343523076384146306e565148787234497a6b76686c304b48576639634f6c37684d48584666415534544c4b4b38466c7a6b6b736c6b30764f31396367625a52367a702f652b7639314169503266714f703976375a77674267596d4c45304d794b4566794a5379567035564f727363564379616d6d4d71436b4a664a62426c7373365846454e4a68372b712f59736e575941776d7162396a50544b55516f637a715766796a5a5139384539437a71497144486b2b6c3278656632576c79334432694954554c5a693973775a4a756f557567654a7835614470494e4a4b57306e51476345784a2b656c7a556c37584b5956796d7434745650746a6452786842377a4150302b663253544e39784b537736596d3054395455635062566d3735563154706c6d5776384151734a6776377a326361344f6436616a2f774151576e677236596c32734735746b53325655647a6e7366546f6d444548387065325a582b533363446747766f2b7747664f5a666f6b6944544e6d2b56564c4f30313963783950443478696c71375249386f627149506e59446d5a2f5359377367644a68694b56395069654b4e6641664a6c6c2f692f6c6f503761544a3361376156357258762b566e77704670506f4d574d576d69675a784a546b73346d5979595a6d487541597941342f674751766e396b56792b7947666459654e4b497571624578464d35522f4a4c704e39684a4e667865394e4a6d336f483751697a4f72316442394d43456d787654367956725761474f43304f4f66376b34725a2f37696a3763424b426378642b3466366b2b3243524d446a577a353766744f664d63656164784a7a6b4f3577394c72706b7039726a315a30386f703750506e386c6e3533725a786a636b6d73644d3571416153794b5a4d386a4d476d52555564435a775571616362376e6857353655724e33777a305173363177664e375a70674e334645372b674830775242704c374856645647395939346130644e303332487135597151436c5438656b52464c4e3753555065714d44726141746d3977504836484a55586e386e5975734c5758796c4b7659723366614a7338396e56434c4f44383378385837577a436f6b6b6c76506b57422f3044367271472f5343584c5652386232364b2f6468712b367056646336376a706f626458307555564455336a434677415634634d47676b754544394b4864346e6b30744f614e6c616c4a6f36714447436d716165796d53422b634e527a33706f4357674f7a3048376b4b414159487a416c5534434a473130526152315a6331626b314568594e685374376635626848774b2f65355331725a6f58536a5437464f55527a4f4c2f726d496441454b61326e4f55624f51795830793842716b637a6e383550576f586c33395a3944714b4741785a4d34492b774f30366f4d535054467a6151574c522b566b7a59532b5249633551644654304e7254796e546830477a35374b316e305741754d5448336b337378324b5439656233707061436f7a464b61684730687a3263467a674b6470764b59495a33436a532f6a795756534463537a4266583849573247727074766e447251646b7a524c2b4d695548596555634b4d506a67734d586b3851744a54382b756a3558547557355076515249507250657672562f70494a4437326478646b4a614d353456357550304e423430554e66584d624236304a6b6f525a636e324f757055446d6d4378496e4c596a39673549665a3839656571627246334d7a6e6c32654b35724830457555364539504e514673375656575573737444394533334776384177396e58464f59416b6b755061794e764b4c62414a6632444b355a526334487a614f766f7874425a6c6d73597a516e4833755578496a4d4966476c354e564d4369476f4a43704a3667634c35375359726c73706c4b546f5a30364369725a5177697562563862477461785467412b4150786d4d6a55677a5154307677347161544871357566524f706c5052704a596a383137702f6a616957795855646f4f597276444676304f45435670415854676d38587a4e69686e6633506d4655453730714f716c556274487066716571553456635a56396f6e744a68417234314144762f4149545341777a586e67464650516e6e2b58504b785166787175546e532f51795a5543384b7245684935776b6d566e66655379397468682f743537653041567152506b76487139486f414646353536357a70726479566e753439334a4b554e37562f736c5a3834384d566766782b3856682b326630414a452f6376347134574a545a784845706d726e42585451744e547a707365444f39566f4f534f6677672f7836505a694c6e4f726e54522f51664b35496f382b6651746e74507350482f6278374f64636c3747744c353662477a2b3559753674772b336a304170564943592f6f4531453449643562514e6d6333356e416c483036796d3454666f4b5a3963686669635557614a792b30796a6f392f61414a494762682b5a52423861673545376d68744b3039444c71684c4f78705a3646396e5245516d794f473779542f534236457135786c354f4b59776d2b353752624d3336526b39627772364274743653614d325236657779316c5878642b767254424c6f794c342f4e6868386945612b50384134316e563161525a387448475571653450393134434e69516d53334f315a6d59774132726f3361653174642b4764352f446648554a735655696d7472702b4b4f3335714f7a5a383964466c584f4653594e6d6f6a584d3558784a5177625678742f714a504a4857644f714e345a6758527953746b737a51304144616e477077775963393957304c716c756e7a5753646d6b6253706851587561536766544f32776d4d47574b7255766248466f46464b39326f54644f63323535442f3670434d316132634f373935347745613648664632744c416b706d494747376e4255344d616e7464656b746b32646b41396d667350707a446f56506d366d537a50636e6b746c44725a2b31446d7439376147642f56344e5a7a335655677348336b2f4639304b4a5a3875674d577043497245386a65554a6330732f354539486d73726b7964446b3543537a5150564153652f6370564d34326630424f656a4555716148756c6c5450523246735633794974316164535241747a626e716245667a434179797157382b6e57316a6b5444376d636d366b494d337a56454a7a35714d7252474c43706b34785563577a64385258555a31474a336f614c7033454e6c566b794663544d625772674c6c4c6c5131666f4a327a6a643341505035467436326c63797262374d5a4a3070325777644a3133463332334e794c57746c397150723151794c6f555149434166354c5134733654615955336d7461787834676a6a65425672586470353175686f6f5170764a705379536650496d2b6e37346141546a573559394b57464e592f7361484c583870312b386c54546631573174337967574c6c52624a7a727a354d704b665979363961397131614e4475336e736f64522f4c4c4d33647a5951535761484c55727a75683959546e4c684d417971416b6e7056762f4a326a33526d6450463242536a512b6b7138574e354e6a7230704c4a78366d4e6d617450564b4166664d747a434232694a72506b356a776a372f414e7864476634526e6c4e39753337442b545a37574f694658416d732b6d6d36374d5933716c766b6a6c2b6d3475463369336539564c486e396f6a597a2b6f42767669436a544f7056756f54537a75775044373156484c37347869367557764b70596f424c727276694c6f413176777561664c456441506c4352535a4d77364851356e635552757a567452622b7a6f4f3658737355564448534532665351316a432b5635694c43396c423841572b7a3659486b5a396d69436c6e55644d365169513369584576675741663841706d6a357869757263453678447063634847666354336864442f59714f465938494342306855546d61755a7a6850564f414a564e574e46737a71364d366479657a61436c4d7a567931663564466a42637178725454784b2b6364496a4f6f2f52674659777435466e764758536d4d556a785848313034372b794173707a3676515a44555166566e5430766a393571344865744a6f434f536679624b3562744f70387a4b79792b4e396f4f4965502f366369344642512f6f6c7a514839635a2b6850674a46307a534c2f72663042482b55417638413039595a66446c54496248486b7671556f535237516e374a785230634932636f59733267494176767444762b7a6f3844576e4d75516f75767a346f2b7a39526b794570464c413051747a36744a48336f6752503874316e474f7a666d35787661515366362b79366b414e77464f312f425030626556356170706634377663616e5354536959484f4753774e535245793435427371734471566b75654e547158726248386e796b45595053347969454d706b307430703366434d52544b586671566c5a706f374f374d57744c624f4c4b5a62413667434d44614572707162304d64624732593351506d547577777a2b505930446b472f764d716a52744674717355613839317a36732b656b2b644e6948616c52526f2b527a6c4c4c37464b5146794578756d5974626d77435571754c745633505a4b4f7452326d624e6b5847502f414c48566256484e6756662b4d6d476c5237716d646f54307668545047623248785255556c514d656e6e4d7a4b38383753717a632b4c4d6f462b7a6450316a7141304b4f5a4b4566556f3456724852756a6e734c72716d6a4d6c43525a3270516643456a7a387a54623169724e47494d6b344d7675644167424a2f59597a633751625a4f6c637631556a566f443369334b443666445637516a506770494856383431327175752b6e533736374f4b70656a48704d4c3239583859397a71702f6931466c6e73466e567563703554306a516b4730676c6f5431345233675151635631436e646c7a4251716936524e55734c65556654514e4f654a6c4e43424437457a7143654764547135702f6d70476e7650632f2b6f456e376e7a785656787877757a37446e6f584b6336724a674c694e354f53767836644c4c7051306f3178335a3552433867565a3959314f35437235424b5a6d5a6e6a4961356b37536f69507334614e744f68797167422b4c355048746142324c6c4655546e733678624f2b30584c50676d43464a44374b693661365677422f6c6631394d4a5753783973645670446f7a726a637165555142785a6456385a54304432574d4a795a336f644f65732f354c7459716e736d47766756562f4b4b6a6e35585541637a5652525530544a534b68455a6b724f3568434c6a666e786a5954455543784535752b6d373972306166645358514a464b2f71675878343574594e51565538385530583636632b6555654f6a68785473644c524e6d7836684c50345356374b516f57312f4738536e6e457a544c4a5145476e49756e73576f466a6a476733426d35344648633256386f4c596f71766556476830754b2f514b6f4d436c4571474a4334464d41344946545a547671743075736862335164796a53647279487a53706d5856445055565256546a5037613030492b7051455a436b6c753648735478342b496b7564645361636f6b5336375a4b7059454a6c43336d7163565a79614536334e6442374f56614152365539432b6334344b3570674d2f5a576f416d43462b63543475694f616867716f46744e624c7961745a326454486c724e5a4d594c4a2b3377725a52492b5a444f556f2b73627630452f316b63544d5a3768584b35454637644a6f3339615768464b307635765774624a715a366c50554b6f4c434e5644754a533453576c51496f5761553272456154562f57346b6d453375597255794b6454374d7646626f557568316c617465647834616742557249702f5944444e6c7075634a457870667478713971585445536362397151597a386c76536638664d4a4c4a49677971554d70342f5357444b614a44586e787266374b475372716f365a46376e454568644936714459376c524a4d48517a6b39357a494f797155565879422f4875724a79364c305131556f796d2f774165755a6c48787a30436f50306674566d71514e437079556e2b70746e504871416569336d5a697635555756757932525a37746d716e6f7468734b624c7652594d756c554b5a4a4f6f53524d44336a396d696f3365355458455039514b376a6f53356d58664e6f794c364f5670366569376b6377503161644935326253495135524b5647732f4c676e59303944706b4a4f2b5876512f55782f3130433270577037304b3545364f68565a7354447a546f7a334a744a6d64624448354253772b304d584c4f4f62484230337363566a4554436f3633476a2f527a683535505763654d38432b777372783670494979316f6a487475676e516f4e594c547863396c4336476666347468642b5a3878744a42556458304e5a4b4433584b5a5a4d47526f4f4f3568792f76764d6c647a4f3537746a794f69624e72465066634a5a654c7954343752566f4267312b7975644a76392f514667567248426c593253693668733330596d6d3956476557534d6d717378786d5530696d6a4a7a776e574e61754d55302b484e4858496848574a35774a4a6c55416a35484f6d6e3756517a6846464e48325832745933547676317176396a6c70482b4d31504858334d6130653078706f4835526d2f774350367a314f3454337872733151616559722b4c6c7a6970706972706d4a2b5079694a304336744545584b636b4e4c515071646f6859596b6c582b4130756d645053716e4d54636b52696246546d4f44704f5a536a4c754c5069426175706a304766646f3234425a5a52434b364931634f5a6742314d61314a346e6f68375172614a4e465577707958534d4c4d76326d7733492f6a37477a55566e7459343951564f747a323249576c6665456e3248445048375065414e47744e726266684248556f644c6b5a3633304f6c596568566d7a797761692b52655542524d6d32343249354f6d7a506364567a676f46724f3271376c665053487942396c44342f722b6f6b6d5261642f77416d6654587450626e536675485268305a79437030312f7741446f5a5561717a6b4b6438497062772b7559612b4a497a41506c534a316e6a783851626e6c57444c39616b7479796a3653624c6d2f646731314256455362386c485561456142644f316a434b63544768582f573470334f56425437514565517a72646e352f4b663561665158536c30372b794679613938315a2f444b536b66374e7a50475669366e653278704a6166384139415139776b4433787a506b706a5a372b52454c4f4378666578537a4a30704a66726c4f36624f7a674835485451366a714a776e34616e66766971506c6333324b43554f536a6f664470465544756659736d624d2b436e64725449325232663373694952636b57456d78714f724a49386253614673397a337a544238692b69513031774d716e6e55674b65706f4b2f476e6f2b6c52566b4c5349653546424d5848517453334f6558627741413742382f472b3846376257787930465478434a6f785870567252703647302b6f726e4c7341624849307674546d6c30386679614c30384c354441564143314c6e6141374d5773592f5a334d464d326a4d39713339414c777a4d7a51452b543333725264323271716978642f52487071427445436a46534f797a5531675a7451786b684d553973436f6442346476664f77305333486e7a78784866774261725346482f5435536c514238547157705a4e32644c6a4d4c34784d3533384e6c76752b665055756a4d58324f6566546957527949464b6e4c7a7949546a71637571676c722f38416376356c6c2b6c38454855556d324a7833643463534b574b7a5657716844493559616d2b35377042356371566a31574c497243354b5847644833436b566d42706e726b554175613837683178566a574d34743448314e6445354a736c2b785a77714673704a6f416c4c4b68752b7a535047384d66396876643767364273642f514f55545346795035347342527034355530394c4f4a6e61366e6a6c74623158782f596c643053377a6875365873536637616c5036564e77465247696362615730773961444f30584d5a6d755a584d6b6e4c533959713451642b50762f41453369436c65396f4f443565395a304b4741326e685977754b676942794f55736b3550596339585650656a334f5771616250525355767a4c71416538594168395978583332732b48746439664566757a6142316f737242543643717a6673307a6f4c76325152776c66356e5573666d45567361587a4c39783846366a616b414432663158396e36794568526132314575694b752f465265505a7152654a5664707271396e61692b714a454c464a7a4f6a31544150676534566534474370326751705845693238414b6445713879677061567a7a316a6f63643758565763344c6a6656477a2b514476786877675032457a3949457a5877425653596d336e4847487a5a724245467878744b562f552f626c52466c7a7666514d374d6e6a485744773039446e4353336f653332753451554e354f71626e6b57764e59564459787079324d6c514b6132396448316775626b6e4d4e6450754f332b4e53423934732f6970425662766b4c356a434d456d5836344133744236486b4c4c4b4e54522b70505a4f353770474d4b4250314a2b304a78585a65705278724a505a3244345839506f4b636676425436487a66576765723349354671636e337571444f7130323277446e7a723667324b4a4c484c5777436e3933752b4277645568426d644b677a51585a6f4c7336516261707446557a5a315863566f78496539304c41626f624c744236584d4d5638597035456b31386432684432304f502b677833667573766e6e4b665467346d394146724f5a794e73634b5978356e304864435568315a5057555655307245766c4937307541797051464477525a53343078356a75577a53315361646d6c33525a6d41576748784a4f316d746a56584f426c31476856714e4a496b66466848307759585134585152385a6857463333706373587933725570313758616339564b724d75696a6c445938737542524f5038414369446659585366796c6a766b623746755742337942704e31756166554e41466f5454304a64465776715a364c3650324a6f5a4e4b612f625277366e744a744173714b4d766939715147647a7148716f7333486c72356331684c356349453372725a5162524a317a62647432615768386c487957444f6a765336452f7970562f31674a697a2f6f494376587376472b376a6555782f577637396457725a63345856614c697a706133426e764b695874544c7556484f5147662b6b5775555467514153796a766369485653753272716c494e706f4249435a444e504479717167442f77415a715732626e733778346b706e48476450742b45357a436e306d6d63624b7173744c724c5143644d7a55393164466e58783343796637625935755377794f7a3641374b6e2f41476c624555352f39616f694c542b44362b70466d2f586e70524b55443462442b3453714f4b2f6b41473956504a343363426f2f592b764f634d4c6d385a316a6c6d66735a4b51306b325a4f5972586475306831384e5544792b6a34394a4a6f36365a655236585555563771556c2f452f716a3549566a634f73396c4d342f7369705677484758316d6631654f7862352f7742684f31313653696d353254506c65566936506c632b7a684a367a6c55682f536168502f75356c6e6f63575855384746436575575459444d776f4950366a46397a576b786c38585848627a67337a6b516e6a776158614936632f6e4f6379322b32656330356d6654517859677a7067316278654c6b71307069496d3039776a756c5057756a517a3645686b76335239724e435657615945696d72517952314f736e6f6a546e7972793563586e36576d6c41724d377663585842386975333669534a66485644546465592f784f5a69354c6261464b62704e6f765a70694f67634669345a75325668445953713672506c424c646b44363558572f4d564f505a38775a6c6d5a2b374945747072576a2b51446a383354465a33352b564f7431576450343179356336786571474f547156432b5a3033754145796a3368706e6c362f623133434d5064586e5a38466b71497246686470647838673052614574562b732b562b312b724553706c46785573535546484b436d49595847544a45744f467363625435695148597142646572454e6236374c4b7230736c2b6936716a2b52716e544c73726e4a50735936394e5655504749355172325454444964446a426a6e48732b5972364e2b6f7255707279376157766e5870515a714a6a426c584b554d53656d504f36476f6632466c596631704457446b687a374143457849564e322f445a36362b767344486b314e4f544967784e6955366d6b6476626c3178727a49666e704b5a354d485058512b333765784758774c5766552f4348326d74734536506d69764e615a6b595a5076686e6c7a7476553362774848434365555a367175686f4a6b545848637465554c655277746c4561474343614a434343592b6c61666541765549716a5645486336524238684b6d3333374b334b6a35464c337946495758632f774375367a6e7674307146765a57535356384a7375704434584b49484e7a6b3930565a2b626771742b4c4d70374d5975616d4e4244525041464533417369637a5044447a584b74412f704a4836637449536b6e703066316a3850487834667239417a313263646c697434617246485472724d6e4d526c78763135714b6d2b39476a67613564683030756d48344f4e6f366b3077476b5437542f694e74507644544674555256324a4a6535524e472f42744f71345939526e4e58724b637071685a705566434a342b6b4b4150324337332f4c477451446330323643432b645164707a4e34746672653538624d32326f774770626c3131697947646a4c394b67514b563148334e496e4d55594747564d52714e71567137455445786d426842542f414358684777443272652b717a452b677a794c4859633152426735576c7531393549345a6f4a7a582f487658786c4c4a79483435416a4a2f734e30697038544330746a4f44786c746165624e58483235765a4f61704b6a68503355662b52493554504c386565347443646b4c56556655476f3052395776396530496d63526d6534637950564457794178505634356f46394452395563617247397738324a3956343632573234394654394951646f4d6f7372587731306f393376504b377a546447616f747139592f68466c524e6c7675394c73465850342f6569303375627276396a707a6f7770474d6a317644737a58716164302f66716a4e2b2f66654b5678706d624148622f6d644864656648312b6f4d2b722b336c7a6570506f7a6b3639324476304f3836376d57446a7667763771506d2b65374f7037542f46684263762b5968795134502b3337684a6a704d784f6561622b6f72484c6152612b71556d6a366f65585a387a5a382b656976505a7164614d34373065426a3658316e35646961536574784835426b7a704e555a67566c61666b6379394d7a312f31474f575a3842596e6b6264755879504537787550342b6933774b344c38764952544a524c2b337a2b4b506e5a725644564a516c3755754b6c67716c4d5a7671744779645073442b716a5572386c4e2f796d44304e2b6e5a522f4442557447664a6d6c48666c647a394f37597739432b4f61536969646c7a574d304a78637067306a4c4d37334f6362766c3637536b524e386477327977637253384139497358784e787752387a7672757a4d4a4a4a36394e2b6e56437571506b38554e5056325779755763432b4c6a5770316c4e4c6855704b4235535a7a4f525875416a512f6c2f4b4a5a65736e55506b446e573177646f6b46487a506c794c717063327a346c32343747664d78397a4a7a5743724b41536b424e506249473675446a5a764d4f537a37664f747a583567452f6366675378584c31645458684f31706a6b2f2b6f46715a39327378765649576e6870536c4b43556c546e556e74312b583978462f494656463967705732684258566e7830535a57684e475158615a7055494e6e7a4b76326d65566455725765304863613261567a7962577833583344624e7a45356567466c574e66544d4d4133526174754853716c72636d4a4d316446657a525a2b744c52626a70334f617152465533784f55314e4f6751666f77746e78584d3553556466434f6873316e3831675161516a4271544e6c315a433572625031745a6e572f46724f4a397378532f5a55716c6275534f706d39696339547545756a7877314e57476e794e537445753071362b646d4a6c5178674238734361692b4e4476335869765354655469644269424f53786f67476b5968583465486a782f5436426166493554487a6b385651676338504e56756c6d7346343637707034366153304a47575730435a464f7a3230524e6a64396b72424d32704a536d376d33436465505478567557334b565a627a54706532666a59663338444c306a314f7851386b716670536775784a7a697968674b55415448657634552f656963356e5055574a4c49396d4e3069735a47756f7258317a7a35375779716d556a3436366d4e662f725776756f676c706a345566506b397335492b4c696e64675a4b423256586e6b5333737051656433534b50584a386661557a554d6f71662f4a7877646a714f566e796d4e4b68574474357a4765313943557543302f414579397951535837374b46556b6e464b377046374c7a3038317a457a6866384157636c632f7742636a4d6e65317679302f4a2f6d61514d3633374d695657416d4c394d3554457176516f65333566744251552b6e32694f2b4975336f6c42632b66314d73344f4c6b796638414e796c7a66756b55702f7177415a386b7533564a5439633570745369625463325263444f79796c794e46756b465a4a71346459305a704149447951554534572b77314b57594f6e6b4c4833503564322b7171426b624f2f7236376d314c6638414761614b7934596370584f31624353525a76364a4a67376875712f61474759416a4f7533627847572b7a34355a4870354b46764766666677766c696533536d523868642b726e7a3857736a496e493662692f5163704f5833644d706e4b616665412b527761487434667767776e5249726a44556f304877534d716a6d69595255753779637573393463357a326532644a67745844507653746673794b39395639566e2f6c6d62463266514c3473742f6146516d7730636d553168497542636c7773636b356b30542b7835546578467044383465304f4f6d73596949447a4a546d64377865557a6f6853324674776b5936434c71547a6c7042726370745843455373537862525a7a34782b47524a6d76324b367551596e6b3733696d4452516a56306b4b63386d506a6d64584b683774504f4e775047684d37754d2f6c48447754535534423858744d515538517072796b74495049703072536b5733326c4d52386c614533657163735a33363961384373726145324c7549566d316845524e63536b7638416f2f434563716a7454653953394b4e31463269684756663361444c6c6e68314f32587777486d56617932554c7667715973557048762b6f7863514134466b6f49563544516475755863384f454b4934736b69685831784c44346d5357584d654b584c4b516672374350636d6e6f575467744a38706b53744c67787a3261556e6b496f367173313536416e5a68665a4853574d623955632b655a535171436e6e766e7159434f75542b7a6d6a2b46796d6e37695250444565496b76714a7a6f6e6848546c4f6641357a5a4a62697a5731683176627356557a4c796a7342693533783436324c6863535645667a4d2b79706f54705641726d68334d2f6f785a386f5772527a4b3459636c4e396d4c6f54594844587051356b6335444848384d713633445051546d744158683871534935773250394e41796d3566554f414f7571707a6f6d73674c534269646433787971436b39412b396c6f343650564b55665a2f7a4f5947514a5032396e437076556c4b4e576c614d7a4a2b7871545a6154695837516834776338705a3263573956427230493559575276384164636b543752384a7336373446396d6d754d386567673834672f636955312b5944666a59712f4e336c55373946417a4a715633476454524b6c4254716c3173316f43544b4a4864706e57757778414f6a50776658394275463471794c4d674352527459682f7741664d3555517670506e4d796c6b76616d56632b626c68416c63795769316a4f2b2b5a526a536d67472f3158714b75383630426473696c6462714852387a334c64544b444835383831466a487a354363394d34486352527257664f6b485030372f4f666b777472454b2f7870582f414749343634725a7331756a4645764e69386761395761745442754c6933324f59796479595a4d306e2b386669706670632f53343655673067334b547961615342774e534653706b6e664b6d586c544f4f583267374f465078774f716c594e416e377737376b7141584d43594246674241764b474c34796d4246707257544d706b622b3155336f4a6a364369544f59564d4e79352b664e31632f5a5a6e443051634457674354442b67675561617458557a64646159353330363035646e694f657346676c4f6b706d6846396867642b536731304a44684d554c6557443969543547764c2b6774377935716e2b5072517365535a667a526863485255364e7649366e4677564430566e5158326c532f4e7732415076324264537233444d6f4131373865766f5a354c4d4d2f48676d5a4a4934326876654b7a4858516a5979634c587938375639756558512b477a6b71556b6d6a695a6e4171686f744379767954422f774438314f6c55367153714b5a514b745038416b5678495151395976566f6a62455876537a6e327550536f6e67355a68305061716a36786c476c323766502b3441354654382f3862332f78656575632b2b504d6b374e334e6c4b33764f717931534f507836324d657a73374f6c66506f3857722f4e496e3746634b5950366e7457384d2f714c776b754a2f696e6939775646524a32584d4f56454856357749632f74456a564e5a5837534679796f57766e76464b6a4f7850546b4a6868374b2f4839503145526e756a666e674f6d5244532f722b49716a7a376b4a6e316d74396c38485556736576354264444b4a6b49437062665a7a2f41425558363759546a4e7462426836567a306b50656e53356e2f4a4b6f3678707073746f6a375a6438566773456c76522f774448542b7075395973512b524d31666a2b6e366a58507837765a3958793154394e48457933507a7a58524c395a7a4f646f4c4351504b426a6e344c4755537247703059646c4d63304b484a6e63746b2f3841563536562b5836794e6f2f477265387970786b5953552f7458516d372b754c5149614a464c384a6d34316245724b45724833704a532f61355a6d43754a2f59343336783868726c363574654b764659696e706f6f6e38746a306d4a6b3463504f63516d64464571784a4d36394233435a47672f6b623858593569632f684366466631725434666f416e7266726651394a31576944732b6875664439326d7356632b434f79627249716377342f6e565265746c5539416b436c6d7159794a69542b46626b7a5349335a386630477873632f65593072716c35784c756e4256434f4c6f51336c632f5757416569634475636f2f774269316d30754b4f5a5975392f566645582b46506a2b6e3667585375526b39595630615041474771646e74345a304c726a6f6e644d794f656635526f456a64386b362f77426c7a345a6a486c48365631544c4369764f327a4636796547703069616b6d7955484a66636e71427046466c42366c4b713573384669505978397953373043372f4a636f6342694b6d4f697653506b45767947567a6e6b506f7878732f77517239526377566158465a31584a4f354135745232734c34654f2b764d6b597a49754b6d49474a53486142496a636d6450763841345263666d7334314956573737436e4e67664f616e725833517a644271574d4b72505433346d5661415570684c324749482b7764384a4d4d2b4b2f71744f7a4169754164515a7143625047435a336d553631315a375a317738764c456972596a6c686863706675632f77437936666e2b744b512b4d2f684535374336764958557a64364132756b617857624b6130557a567a4c4e51574a616c642b6c5733703651436c7776424a4f2b4d76303479397248476e505437785830794e496174416b6678377566636a685976756b6d316c674a712f6a444f30432f58495a655373556e716d634f6a767655644a4d537451643045327661726d636235704a4636494a61587849675038412b4b724f455a433070306c3752577345704a78435a4b2f617858377669452f3670486274387637436f7131764764397a4a4f6e546d615941656b6a547375305551632b4e614f6b5a4531557657792f4a305458516e7255734a512f474269336c785948673771464b6f5443784c3557386f39765661732f4b654a557939494a4b6a69754f2f774131305472497a54376750334a2f34656e696636726673794737514c6e476d7a5966707337707a4b5a396d74505871376c424c4652536e4a375137673533336e516636785766764d2f38684764717a58594d596a65336873377a52626f766331782f4e4b494b6b6854594d747752564577522b71785a636c353747632b54686d6b6c664d617934457178536b66455170706a314b706c5231744a4172714c684b636d6b564358476c4d3469796957492b77566e3054576b6e4f4d505a2f5662396d5139307750516f6257394e534b717541754f6f31636a7565794173387673474e583152597347467a6f6439733667633435587261502b4157455443747456475954316f354662707a4334654f31453144774f726c43726b68564753584c756f54315467662b685655507653624139334159534f357032334f34764e53706c5831574443746c4e44556f6d544863634a7a6a3043726244566f4f344c52426e372f66372f3841686838495466794268305978637435785366332b306d51676c4c543750376a426e534c39304b553558754a54566972375577682f7777447037534f33623566324561647950554c3432632b5237426e375364635268627866412b6943344b3636757037376e4c594e4831685750456759633733693341562b6e6b426e654a4263347a796963306a54707662517a352b36555362382b61366a37424d4a59304f6a593553666d364369524e395252734a48532f6f48554e5367356f4c6d544c796e76444e616b56366370527731784370563747304d6e2f33484b4d4c75646153776d4e302f477555344f2f30425970724a4b4f5466444b6641512f6e32556b335652617a6b6f7a6a4a6f315a3151744a6965706e5934474637652f3446373174464e436e587a446f41374b7858537a35356563654e4863395544574b434d656930457358324f6637784a533670625a77396f2b78502b33327a4278525634576a794169524b31614638724f79544d374e5052503841416963364e486e474f59674754734c72614c68644d5058476132477a36414c61354c7a575932437567353470673555796e37706e524642524a3246496d6c4c475059326d6d6b584153792f365a3936735572364b665a7a336e377636416a6e4e636a51506c344a4469367032634557645a616868425163465953644558464d75477869754d55332f41462f7735642b49514d31434479524c61324e3673753045776b6f366557745535493469646e765a46306e4c2b52584e524d6656675a43662f63442f414f43526a374b326e455a474b68566d664b6f65685847784c4a3869756359616a4f6b56575a745666786e37532b4d666e5a30506d5735545463546851746650386e4330655146336f54545447495a36433935547471345048307779524d6f4f686e4262553450626e6c454e794256377848746f435267512f7743483957446e783633726d53577471665455317571552f46414b306b47646f30544f736c3675646f66474d71556766663841452f647748664d777741305676325a4233533438545a58503268624750367552685436597246584d314852454f39456c6933712f682b512b6577424a502b4a476646476c5473774d48703745364539446e53536f466b32717838666172756f39307964515549636649316644484b4e49487a33693162584e41763038446e7535634274707970453433684f3037544f575565554e48345a41464e435756386376347947506f2b3447684d766747566e326565386d6b4952547377497a4370454d387a4c3250617a3571486a702f64585856544f7455475a717a4c4e64337657376f756c447275725a384351724d47414866387241764e4f514e756a34306d63302f7376705232574a736b74386e38663171705569356a316b453872413972554743766d6c702f3841746b77484844746551645a5351447254436579715a316e584955356a2b54382f626e4b4c36712b66736b6a393063746141396846772f5a387043546a426358374d68776b416e416665685a6e61356a4b7631776578396665762f755577636574764263787854674c673537484f6d502f414e7165713939674c483254557a6f525a474b6d31546359534b2b71686654455a4d59317331696543706931754c6e43446870354a4d542f414e743739595444353839547156476f796e69516c557a4d6c6a2b476e6744787952576c7171464b3933466b49634e5a2f7638417a493145664f4e54774d64485272714a34547459655930656948307950727075554d6f2f6a78573936616857584b6e547161776c385972356e4748797545772f6f48553331367564455554514e6b4d4c573631453163796c664764517a4f6a59637678706f6c4555394542654c4b4f416f6d3845326d49675335485478384d362b6e7a34544b4e564e3967397134756a2b5135575475544a7046784d6c6f30536e36544f4a4d44346a39496252314b712f42395030444e32644e4d476d704c5a4630415244516874416f7170624e4f3550462f493265556c6b724c6e6e64303170456633545358756f6d563849574342554c6762796d6150394a795a6c7a70625878627675305632545050713250497037452f63636d6852396354544d506e58527a336345415231354a4733706d36366c557a356973454237776330626536492f4d51365572706c752b75744a38377a76532b49456b414762505a7a6f4e59536438354b6f6a584f5847734241675471433455394b63344130703052796d4b667131455441345271555145756751374d6c52672b304533653152516c54795642564b62492f764c79615362683048414b6b367a6a71755639636e646b4d614a7a6e4e6f2f36766450374b30374d424c686436716e374e5845364c55673048736f58544f6234776c634574334e446c4a756b51566b2f5766733641596c4969527470552f76395745483874584d744f4b58314f572f34706d56516a6a492b72544c554a61715361563379334d2b524c6d672b6b696a614877384d577434705a426a347a50773235416a39636b444c322b655563797430394877762f536c72792b393678676a2f4d4d2f667a504d70716739354851444153414865484d55516d495475524a41793143356c554948507148545253716e704e712b4f6958334f536644346f6663714e36456830666b396f4967445161784f6778704f3553715a5545516b304d6b465461484462424a786e52642f6c5179685079736154544d4148324d547768434865534c544c744f6e572b6c55504343714f43712f492b58372f422b6a656f4854787665532f716b7868554e4436797a5374762f414c6575456758386130536a7830336a456e6e5638687372663874613474572f346271744a6d644c596c5875527a35507548556f7844394f6237766d5a37506b4352304b6f614a4746674738667055356374495872545062567a55556f564a366e6a714d38686f7a2b6d73502b6632444236436c734832674d4f764c4c50716a666c725331744e66454939326b54496e7a753650477143647a422b39305978725678664574414a6d415875416d4b2f6f49677856655a5732616971697a6d6a6e794370576678553265786e5936497874725a597a6e4679756c53513870435a4a6d724b6f364b4354373147447a78654c4842705431316f6f6d36335a5a464d5a63665250487a72707450324b6f7933496c574255554c34306c6b302b47636a6e6d6b6a702f6f4c4434696c6439686e31365654497a43625031614b614f57707a306967534b4152485158784e4576656f4d78415a30383637346a62384a67424e6a71796d557752366267667a512b53744c666c6d6d7a4347644c53304864594d72347968634b564c3437696a41456d6f5856414151473262347137714566654f6b6235587558704c6d625231735373366133524e6c43522f32464f53656341424651416c33765036376e2f30456e3861573636374e6649506376696c6845396f5a314c4f33486c7a526d6e67735663386c4d654a4d706a3635516770422b777659396650652b5974513172474f70784c755850592b795a434c4c5a50682b4c324430754b5656503337512b31797946512f496f526d4e58666573413973634f7a35415058412b73506773366c69444a76386346554276504e423144776e4b595677395a4c55497a7036746e3735372f754f39346773576b45694765525435742f7953534774584d323839496d4c6d7a756f6158636c645361465a7a6b7556562f394b706b556b482b31774f6f7050336c376c74644258785a6735303845697064464b65503779796d5a54766e4642613167784f304f6a386e48664d553438655a6f5070633979314a2b776b2b67452f7a7976666a74364b346d7270657245344d2f487961484550726a536c486539733739374e2b52337a394a6135666c2f35547a332f4b5970423836793831794e6c63642f5064646e49706d67735a58517438315664314f47706f6e3058726a516b6a5a375739553546516a2b326d43674141442b787633644246565477626531394c766a31464f544a6c42476c476d77536f45697a522b3552376c3956795766365a694b67397067304232744b6e54436935306f2f6f457378716f5379352b6754394c354f764268486e702b52774d6648316948554c42314366333878636e537434516c7970354c6278575556424e66504b78434b6c536e42774c6c334f696d5670722b4c506e4b7255715833322f61443967446a4946475238424a636b774f584d776f475770526d767a64415749366562335575487278564a54642b6c70557972354c57644c343346416e393861426761675a6f544d44724575307866472f34735279706a74787461506b73374d30746137346f2b417850326e4a506f32724e3776596775303142376b41426b5a4a6c6e6e536f70304239384166783858586f766e326c33433541334d304a4e42456a6f2b4c6a4c6c4b794a334f4748764d41642f774334506e6b2b5a793150776c6d41716f4e4261656474343948465746564855414a746c39794b6b2b3569597078704146664c6d6e574b6d702b495675675a3658445a4c515633484b4e396c5479304d3238732b5a63412f444a5542613668676d6f6f3565763373637431427643615a72707659435063454e7737447269676c6f376b49535664456f64664377706e634a7a353371783248527734334d6a73596d5262584d362f326649485162523748577632704432544a504e5a5367343832792b6168704d6979754a576442303650535a534f586448386242464c7374745246777a59363169755063565a54465552765a7833723454645735757458304b6d38617a57585a48474e63476b6c386c50644e774b2b4a3330785963335855697079444a332f46344179316262666c496a656b2f6c4c45725a5a71354832615676556d766551326a6b354175623254325875594768484b5734716b7841542b4c36787239346d395a4b3241544c6d4f7050645279327a474f52312f4b78706b4839757131493135396637766c4f6f6373316b75487265304f6e564f774a2f6a2b436f7a644844732b516c2b644133506b716e6d634d7a566247616f566e6c6b452b537a6d6b36564532356f76636153464a4d7350724a70774e4966362f74476651642f57572b3369472f6d54337a34655a724242694b46543545304e74616550586343783249683468335a32396c39337732494664666567317a6e664c796b576e49363163786161696739655a494951774d6d494d6335506a666953466d4751756254396e517066794b5237374933537a63466b41384472714435333673334b53582f57674b2b4b56314d7a6d364b497164436e736874374f39714e4f675a75794c687a6c54667a6b66582f41444e5779686b7730706d63636833484d50567a685163546a76455338352b4e7568725a6e376c35446f5656664c4c503931304f6e744c6f46714d786250717a4870554e793648447a374e59504376484e4a4250457076624a46592b4c426d3354583551786a6a497a4c4f557272766c3732632b30507a387961366853366c6f586478316c436564486f2f4f44686e2f4145314850676a44614c47725345326178624f3578564b62692f786d683262513739535739324f485a4f6457346b354c37434541536b77415a35717950345a7771464e62396d525077625048416e76654e572b593872567934416f71724458355a6451464572342b4d45526a376d3645767664547968596f7465797a6f4b5a4d397549524f43506c716142645778476b552f3078564d47704e306c326a6d7850415a6d4655775552737a66395844626345526d6c42393538496631304356307170667471586e316471756f666d6f45383046527a386c2f6e497776386d6a6b73734c2f5734686c446a4f39486a4b4a6c476b7446305a70627a6843697461374532555a777358556a536e726345614c307371756e4a4e766253766a546e357371486979662f53733343324d473069376f3846345935377253436a434852794e46315644547a79377151563638336b556d706c6641375678724e5a37665974686643766f7165426c2f67683351745437703439727a422f7444387673385341303549337762413232557174546c72476d6c69364169552b55445853456337462f484c33376b357a54635a4d61302f6258414961674664705563513151726a747744583869704b62577730636f763138396b58617575324c686a6f57545645526945306636443367696476585479423056317a507a596e61453266666649344d2f4e656c2b646e513649737135714b476f633845755a54625a5935727a506e4342502f50794b664a37776b4c72675a6e307237553436517a32427a69654e62504a5a4d7345663452334a636b593272497567796a336d644b7a5a31536c454576516655747a357a34414e346637705a516e51515846726d5775476377583354723938396c7a56314553754b4555726e7073476378533949694271426248614a657a6b7445336553693171795a4653716e504736745032314b754874487943357071483267617541716c7967726133324165786c35326e4f746445646330454a633979362b547a396f626e78446b6a6d4e30426e2f656f5831306a38314a6a3973476d5050594335334c36424373576164765a364b77734d30692f75656167592b644764787a6b616c564641734d5a2f5975342f77426e327470476b4b416f616c692b64424a594145366a5853707a516e73352f48352f7a756f356e513235726b65376e2b3139536543356c44476b4247304442537950355159594d7577784c71452f68594a544d446955667071754b50485179576d6545487a6a5131613874616553703537336356386f554a4f6632716344454f75695454586f396e46362b384a4535796851386d6954554d306f34756c37524c734e482b4443622b6e49643750724e4d68442b67777579386946494a63675a2f6b6f2b516b64624631564561717065585335365434623943674b72424c686e315079643067556a6f664d73484147635357785a79496e386d4263325265434935546246552b5876322b306e323332502b6d6e4e5935496f454f475446396e425166436c52686937726f37444b373750466b364e6756464951527059556f794d705a4e524f44734558357453543578543665644c2f4168456543716346564f764246374a46624972624e4f75555a4e465255547252704f61746e583230644663716661736638415773312f465a786845436764305156577658512f56664779646e482f414336452b6255617632726b7456794d744d3065647a6932542f596f6c486e4b792b4a4b6b6b7033312f655079672f716f3163396247734d4f54614f7351496a31564f56417072613253786f6e6d4a5174392f502b7a394c326d592f6f414d307a6d59385343506b7745336a666e5a5231525a3036746167376d385a6e78584c5376326f6e314b7951746a312f52353176456963346d4b7761663175384d434a533074683778792b4e4932364c484d624b76732f756579593439515934633870314d2b6d544f493677706d74642b776344674e707442724a505050504e377a594f6b72513479526b4c6a726f6543334a726968544a386b777a7a6b7368715a5163772f454561564566444a4d2f7744514655306d305a715a53665355504e63475544396d77484b5579396b6c53454b314f47372f414f4255612f6a3645774d764e34667462702f614753574d4e717130734c5753366633613357677542484b4532504e745978726d714a6d65485866417a6e4a41364848662f544246374a7567586c67667a6965496f5a496e4e57726b3637475156713669617156774d3631342b34307a697a342f63484642495577674a554730702b416772712b5472524c4b467a305556366b61432b6f7a68745270706c744c352b35374f55526e474b656f4941452f653553532f77446a476c5953456e54564831395a4c626250312f366165677077646d427055564f3730707143645173586658614b32465238644b783533686d4a724276517475646374597656416f4a685971476466473863426a3846476d6d71526a47632b4434626c63347a76755766774e2f622b3956386272356a4b53614559446d4f5373345034786e4b61436b656a732f457a4454775a3366615961524d6e4537684b4867485346583654376d4548394136576e7231646c374a6e2b77394b67444d6f6e544d4f3639784c3755796c617a2b6d7378536e7647474a6d446e4b44336e377842515a6148533937696c503471725670764f69506b614f706c6f6b6a5578334c7148444e47746b7a706554734566327063784c36414238586636426a444b2f7743655873564b6d534f42452b5a7932536731674d73724672344334716d7357345a52686c59644c775959754e774f446e792f6f47637332676d757a5061316c4d37373653456532756d304a7a67574d7a4f7a38704c3961546a584f4a724f6f42397632566d5876476a353178756a4737754479504e344c4945585274725070335533652f424f715a3439736e57556e41565549715638354a49766b4f6741576c584848376a396e4a4166525865464a6638415776364855684c78684e4e6f645250636e6d6f423363576f6c2f4c5a633441397450783941352b4350484b2b4a4945594b3176465a55446f746c6b517037704f506d653630467459665746383168416e50446d6b7a683951524d486d615332652b684c3569443439383765667872542b43666a306d555846647832746c5571645170755853704334364f3039617234352b454874442f4e50462f496b67526d6a7159672f5a4249616c535069545331504f7670564f39664b4e626965722b6d4e5866646f4f39685575427666395038416c3964674741394a4d53555a54756c537572393357566c4e33507670495a6b35744e62665a6a6a795758357449615066377a50324f39776c377741503664664d5966463231314865534c466271337a4a376c58574332373763395133666364586d69454d495770637a6a567257523953437663557a2b6538486257633936354a37365a382b576d4b6b327545624570462f7547706239546c4641797a7668736170424d3737522f32702b7749394d78426b32644b755430616877745638767a5431747a4f736569304b334b552f77434d4b43456c6e513669674f6646384c4470624f6d78616542462f515067444b645237774c535571747135326c50505535537a467269565a51744b534a61666c2f6979582b6c70446e3330394e6c4c534c2b675175354766577958543647685848334c5a384d79526d43616a397363354a717a7143586d724a5a4331482b526d51416152457666785039414a6d74634f682f336c616146665a4276464c537565644b2f68715554314a30724838397854696b6c4e456a506770413363636e363441442b4e69316f574b443466576a38316c54724b4b786747447151646e445633355761446c7059345663537a324a34796671796f7061333268396948764b757a76624f6c4d724f7075366f426e5779776f357044486e2f656135676e486f53696b516163626a63485144345a7945415a6f5737356c4b6e4c6a4c7634706e785a6e52784830726b5179666e50723530386f4c57766e324b756435784a724c6e5742396b31443850394137656738536a50304152485865725135584c5038414257684d734c57736c374d3435386466484f4968306853766f69487736527657745148396758587a444b59652f622b53656964613263492b4b4250765932766b55353949484658315a4d565039775538587a33714e366751785964366f516b6c4d37476b357a3745396574334d2b5a38714e44767356394b4f763637336b786a523464793945786431663634357a614f435056416f516a306b37546d554b2b794a306563524b34433549634f5554563571575549796d7a6a4f31796b702f535248682b397435302f704b6672416f48714b4270555a35357a484d36346b35336331613561462f5534734272716d305235786c58786c704d66774255366e7468416e76796d516743435a587868566f4b5a52556263776e4c5a50586e524568714e50374f676e333747687a68463266504867734e5073447450474a4472674e594155706d305a3747757676426d6b6259477573755444304731636a455939544c7a62476457754d68635945512b357747626a44393958304752474f34596a7850416d5632696e52523963474f41572f637a354b4a435a39565776556866784550616d5766767279346b794e4a72536f547341354130725a73526150676c305846394a4e457855554e4f50496f6d56725456315432734a675566477366764c486e484131733376425832454566394f766d486c4b53314965464d7952767a5a716e38535631533676764c79574f576c534a59712b4f4c6b4d4d4c4f42785a2f77435658316a477a706750394f6e6b5078574771696e4d424f6c47763752313050616b562b37346b73754b57746961766c755a2f48792b35482b7766385866352f457a39526d43462b5431794b53475166654d42566a334d2b647632615a574f344e724a6d7557703941586141696e6e47695a42542f714e69424d756843504a51353262554b54362f585530624a7149722b3579705a477253586144727a556c327849464d6b6b455645772b796c796d677041652f38416f4f526c325530627465684162636e6362796e54704f472b3276335a2b773751753761637137724f635a6a735a7055634a3833334b6152503949544d61524f6e6f46782b6a355838384f7a4d54714c6751586b65394670305736644d36492b356c4e4755634c356759494c4a69527a577a746b72724d5176537959472f52423073543172382f306b583969354f556e4f37334b6d513762576875766f4c6f30786d6e3930744d653153722f7972726e55793652564d57355a716279663378326353696237644d76395a58375568315a70756b65746677426931776470485437546b6c336d4b68335954532b567a6e4c4a4f65786c53566b2b4c3457384f304b5568504f66772f3032573841776c6d4e4f704a6f5252572f45367458632b584f746f666e706b5835424d5538784155724c614a574d32723536776b3733367a633332433734316654355554503932646358644c4663366f6c525a6b4c614f6146464c5a79716f522b3269736f3648364e587a41314a6b6d6271352f6b61492f6f2b6a795a7833435152654e31716e363656666a4d55396c6562382f4a5654453974556a434c57626f4b484c6a576d4276386652772f315447762f73316e784a544f4977674f31654570364f522f49364862326f48326d7656524d51686e736866376d664561666d4a566c6c5874653254674b5073595272732f794250415850774d5674575655476575626f787939566f394748767977706f4e78636a324c7538734c724b744c6f66376a397262446f54554857676b516b554f4c342b483236343876782f7658614b674d55355476764d375a57505674754a6848524c6e3153706c594a6c6161356b3241416c303568393447526e72717a556e6e79544e572f714652753443366c78522b34707a4255366e564c7a2f4147434a4a4a676c373244536f7569304755544348324174714a696e33504c2b53356f50347a536158785143694a6a46587672512b336e5a383167787545666a57487462596b46554c5561334742476948396a632f6c42706137747a49347967724d72705a543041756174456f2b30574b5a553445664d763456465a772b43747267396f47516356776732724e316c506d644f306749592b36556e5a556b73574c615a4e4a6241586e704d68346730724f6233395878514e372f51666f6f65305a79755475682b6f4d72564c6a366d575471753654744f644475717a566c4e504f71574e6674396e762f645037496842774a5341474769443179432b4369754d4f426c67546c546471697a36672b4270444d5241756633335a646a2b553841756647632f784535665353595939354c6e5175616e724d70426d71684a73503671775163374464784849394132726a545171376e36347353587a2f6858654b6351454442756b7451322f5866776c32614361746d526a554a36396169576b676b6d6574625a334655487872655569665a7a34754e2b78504d4641674f6b6d52544c78376c45683675435879766d556b4d7474626c3576614d2b3261507150716c61357a656a6f635654376e4d4144397643636f444e7a4a6b645237754c7a37666c6f6539334e524c66737466492b59754d53744a30314a6b53546c395a7a2f4e707867612b4657504639414366682b4670614e7474584b6735337170554c7375512b71476564594e58436664476c33732f5646647653344342372b78457961536a6d4e77616d785a684a6d5445434a514b68763841673334786c6f726c6d6e4867675665584452324763595743445674367a3763786b7477702b6f5033416d454b7a6d6c72526e7635483358725756466b7165794a6f6f66494973677475304a594f44475a43596d4848437766724d6a44746a7666557749503946742b6a6662425079656a52705a586836473533527a4d667645347674375830563466574d314b566c6f4e6653306a5374587a64615533786d6b37664239663043612b685444516e4771624e545439726a6967576f6a7a73374d5963732b623748743931612b5a3951715934486537726e44424d6e347554442f5676342f703667454c305377646c3550545462325a747a776130367333756b6171526c7436504f4a473351664e415654794b5a71314a64396233382b6f3571315a6958536e546f653051305a6e344d756a58545071636c7254796e3639557437704f326a4f48536f344972367a7242702f3539686d76745559492f6f483241794937536779773938544b61787a2b527365314d2b6666545272786b4370784437434864544f4b552b2f322f4a6d6d5947315442506b327a6e6a314144514e696b745a47532f6c747052775a72632f71474a7a394c534b68487a65396656574a48516c326539714955683954324335786e514b7636675a7176716d644a715479584953754e38302f7a47735244724d77615069676e7a4a51734c4c4b347079724b464943486236446b39674342556849652f575a6f304b4b4a646a6d364471303577316e704e70796d2f56744a736f6f4a424c537464466a4f6e552f7250666537345a7a4d546f41487554542b3636512f61614a33325858542f41436155303974564e567155562f45683034454b7774476f50734a50674e616d7077544b6638644e415631355172354a706f5349756431714e4d465a663876505a31346341566a4e6d6461584b6c3641546c4751766f4252442f4970724c6f6b69667446716471424266486448782f515a50732b366d4971306b684b4e43344d7576506a6f58502b69796667716a4146714d526167523937614b6b73482f73665a6c633231743330446958724230555431797a53424f4c635678585658506e526d5067476933533865564c51734d316836552f37496a3974436e41626b6d4469427638415767732b56644346724a73717561336149616275716b326379434f684a4c57454c51376e7a6a476678756a597050736f553276596378492b397171543577515579614a377261485a493170652b58516b47436f7168376e57357537314547646c434152702f7743725974315841597033316f7a627a6c6c44757164664d4834465171304f55747a6f6f6d63305a6d58546445496e527430575552535669575a517073645862474b41565570436d59486b615239383754414b713953547a5749774d2b704336475a30547077315a6c325444506e6b33515a784e543478446938314c76702f6f79706d4a716a6a49526f6f53564d6c71384f62756756367775357a3468544f324c5230487a4d6f30653256436d464f79746e49707371614557466334666a756c37306a544748337a4a52416c33467232456a6e786b64757179614b5a32485a5239773274634c544548613064433538396c576b745575386442512f4f6a34513551704975623872306b42352b3838684f6f476a79657133546f304a3861724f4b436a722b336b6e535664476e73393538334c4f646c7161356b674e70357775782f5a634649665659712f6d596c36644d62493248505746576a524638534a346552554648316c4d665572576f68627a2b4c2f6c6b6a4a785a4f533650356d726d2b512b757036474f3371467a44306147323230432b584f726b71524b72502b576864655738632f53477859725a585158787a4553776b3733373566574d6a4d45796852574e6d6162557a4f64773971654b724e6f7a416b7a39545345542b706d7534575a646f4d52536c625a3748744a70736d557479614f784371554b4b443074742b6f75544d6d2b4b4b4e48764b3246454538615a736573534f7975367557365275644c715856633242464a5763353371654749514a54477456416353655958326b356e637255514f613333537136542b6d782b68784356396a583134327a55667252715574636f436b416f62503339415145426442496131737965577848467a7058565a5a7a56535233364d55585a6444546d4a4551616b32372b325a557445646d70385030586539706e7a3369667967716e6264474e3363486344427a5a75525a6d6371555070444d72696130767635664b6442426d77575261725761574f77645279474e37316a6a5938467251487a43745539334e6753724e544e6d387a66765678336336334a2b744e596b736d695841306236723056496f43677575647a35492b63706166317961613667397054742b7654742b574259365764303543324a396633533252714a314f615472704a7a6a745a567a587954617572715965736c55435763714e5079752b75525a6a4f7434696b784d544d4131472b564d6c432f6854494e316e30744c6b765269436b6852745a7a51703539343235396632466b4851513276726e4751637050356e66484170734f4536497045452f73464c624a394a56496a4179544d50685732677a4f49467933414136557145794776725a766563674830524d4236424b474a64566f7551366f49356c7963686e6d354d44637359644b6648693141514158566b4d664b696f48677159337155392f534c50725546336e4f4455344f7048737259706a64336c614876564b754c4f4e575839664f4f71704b7a503663346b372f477a6a477149373365344741394366364364356d664857334e594e496a4f6c7566414b683739752b6f6333505838545a644a6d624d6a35574d6f6f51446e69612f6d7039367a2b583964364444796a6b383930326c4d37704d4f6b2f765a6b6d656b78746b2f56317a763262456d797959706e564d354935794647635a4253645a713751734576343970515a625a5a57495036756d2f4e65714348534d72464c6c536c6c6c7a6275495a5547634e557a354772447266665373666563362b6742565554702b5a2f5773506358384371355130666731576d5768375879794b627934483562766b2b5271304838765a2f67412b6d3078523859506c636e754a303572505171626a6b61536e542f327a4a3261346f55356730536b46686659475868763473654d636b2b69485061735641744e51462b656443567476353036337334317a73326f535658524b56764c58367a6d4a6f46645653304d51737a39712f724d2f786f6f4e774e627332703163326537483261666363314f6c57715778335761545a4a3273304b3177496c4f67766a706f36585773424932494177397a57735377464772736f7a38513172315155355470416d513973667a4a58563974524b796730666a4778713355634278396d734d49337136354a6746583942732f6a793142444b64775a365335443742367255643877305556464f704b77434e6753725037584f6441434e54423459676675345a6858665878447773614d366c7634714d7674634b6c515273476c78736c7236616e76642f73534d6f53787537386e79556d7a37582b37326e38492f315864663841443970424a4c63304b75562f456c464d54444f4b6c6a4f30564d7065444b726c5667632f2f4b526f46615664364a674854614850594c6665446a733964505832412f6a48444f382b4456495a4348736f3746496c70683964624639517059676b524a6e7a6535774e2f7742595539446745546b6b6239353638412f5a6238696a354c6479594a4270415a2b642f644e6a71717250695734355a336c4c4f74594c5a396667423779734d556c306b6a78326745496b51744d55714f5878314a64785a72424446614568457850544835584c415745633757477746462f795a394d514272752f30446d3561364b624a5739574a4c6f4f7a71443071456b2b6564314435555a7a714d39716664327171727038347a6868394d53365a383939483956727835752b516c616d6276325579333848674e6445487355305739674c67744b4542736a2f41464b37726f53344a2f475366326c676b70596657503841717751657536726a756658637442424963633438706c366c2f774153364f502b64376b395a37586b7a676b597a2f4b546a6173515348317a7279313873686f5453702b6e78536f2b73626f4d6536315330724f3647523379633538466565587a61424536677543336f6a373366495a64486e456934566a7946442b646b715779793973616e58746447376b7937722b306f4b726c6c4b6b63684871312f77416b7773735672366b6758307668442f506e776e32776761677a48357972706f6e7a34345559362b306a304b3943476144616a617164564b4b7145592f7a32446d675a71575a66444e58634b512b3052694473784d5475374763733358757535566e355366322f545830644c5158526f49574d72732b784f6f3469466f72623036627a57754e732f4f664d474743536167595974666156695643712b334f36597a5230636e6a726b70536e334a5837353941526e544a78777636445a6555786578495467473364456c2b547831314d4b4f366e6a4c6b36505755686e30674865353173523135424b50396678656750735a5879774471393373584f3475687959695a695a376f444f68436c52593979464e2b6955356f793742644e5062525a4e70315650565a4e4d356b7a4d312f3866475a6c4b677a596f456d45343067484f5143586863713533747a336f30515a7858517673667275514c6d5574646d70544976726c4b64516e55645546504b303066344f6e2b6267423731663043573077777634617536584f766930447a424b6b6e6d765367347561424d676c63316e4a2f6e6c5375546e4863632f7267642b6a4e5452454a6a6562746947716164695a7a664c3165744564413974467631307158572b6f786f2f624d7a5a2f37444f6348336b30355253373541584f6749624472554d4b4f2b6635674f754f59672f6b476371304a344a6f34796e6858526377792b30556248554b5653766e76454f307462307742637750755168506d364c527030336f7a364f2f6f626d38376f46566e6954364b436b474e71732b786c5831544259395766565571614873455270554650356c48627a4d4b4e506c33636e536a664c53316e476531306c6d686f4347376174772f79695068736e374e3778682b7761616e537550332f414b35703250504974734e415a464e5230535036306f52417948537343715376476b64313535386b4b3568736e6c7a79793142517862473953436d46314a2b2b662b73785531334e4c54386b4e77564c44542b376e373959474e5251554d476c6a4a58524e6736687271466b7343706c4a735a7a4454535652776d6f4b6d3666752f58694c646b56464c544750464c3632654f564c42616564596e3274304a4e4157332b35626d44512b5530382f33632b4e50777064583833795430637a4544386e7a3631507a4f4c2b4f677572456d53555452637376684451545a3752306d6b5353714a3268385a505567726b436b47724c693271624e616e6167415143376c5653356d5538533179754959544d3863307539344b34465a744c5a5a524a7936426342684e566e575a78527544396d434b5771742b7a395a446e446d6e3435504f4f707977376f766a566c36635656574d73354e4b6a4c494c48446e4d2b466836466a692b5835426178795a6171654756564b797266745343687174634655363779724241734836734350346d65555564467450336e55456971687a74566978645232535a4b652b2b76733357724d5471496e697a564e52506f756946487a534f68744654654f686a31356673636c324e4a4f66484d55395349523936324a3537507270423142664d315168707164774c56466e73794c61555138727159623447717a6d7157704d6d5a4e4c644d6a55346a532b33715a613354314f3454364a7661514a36437a34785a2f3157756433395248383861317a396f5a4c58524f6a555877594a4c7366566e504f5676574b704e724a693461784f717278326b374236333453644d52734e79593368734a48747171354a4533706e6d6a6e566b4538576176544a614c4f727a63326431583870704b4379564e4655363071572f32476631546a5632736277587a67626b2b386c387270664a707371746c3866706433476d6450557253373976506631433646396c4663646b35723471762f642f476a555031674d6764304247654a32655672357a6c72326c4e6c7269564d5538394f693132597a55457456576d6c54377243314d746277673761464b7570536d7059422b72414437763153545478322f5a636c476147624d7a51554374436e5751702b50526e49354e422b3244492b68326f776c637173435a3772474166364b666a2b63434866776f5a684e6a72324769324c5335556d32794358347074535551315059794f733335496f2f675539476d78332f544437502f4146726735595136667650586748614b2b356c4f7556486630564475357a74593343656d747936744b6e7371417978513979304b6f6f543966687a56716449667966366e71557251566a366d4c784e5441763841484f6f73517a2b636d2b6b6b4b4c30356438556567366d45614761446c4b2b783257697071707849475675676f736b6f4d422b4761496d5a694a6e7645736a52736f385730564d61314538306a43486f763579726a4756367962367176744f6d2f774334563076317131357631785742752b32314c3432476363753738776f2f4e787a70356f7a3073356c614f5777756f7532664a31374b736e4e66504d525a6b6b31756c4d77736f6339624b582f5357716834754244422f7741784962446d743677542f77417a4c354e6d32652b504866367535306b53394e50475975686e5a75647251556a647237575852455645397534544137524d35725a55386a726b545556314439593454452f6c46717a52654e326570766a4f62436a47664a6d34756e7136394c47755549613269716a49706a583469684e4b4e554d324e6337574a637450796d6e696b767357517366586a7338732b76754433716d6b4e4c386d76525046716f795a5751362b696835465246706d2f513273374e304a32354674304b714843483355775472364b506b6c76364e44702f614673794f464c534a7a35716d42586c336b56613875796e4f35727272545a6c4e737a75733764646b37652f6255367a4e423143546c4a6a6b6659582f33542b3275697a366675493643652b554e7078746e4a514e716d584f3861354970376d584f4e325a71717839734a594d544f496747577572784c345970675132774959783937324b446f5268726236356f6d30504866536e4350547230344e5879667844526d5050674342396e656179335661705278614535727a53732f6b4566707172334b3662412b4172446e2b3370703934322b382b6d326c342b584968792b495a46616c41746f386c6b794d2f616a566e7468336e4147656d717956486b6d657a744230326b6b4532706f556b756a58777378727834664a4c752b525a664a4d6e49386b7954706b6c57654e6d5464666c5a733944746158724832516f666349655452736c42374e4b5232314e5378734b674e72586c4d784d6452764334307a416738716b6d776f7877653836676a4a794d674535713356773146726c5056482f4a3741734d563645365a674137474135307a447367527930417179732f4c34653053625669314b6a7a6f676d66714e7638697558582f4f723046733246485a44516c4353476771553068524f6b2b393935675a4a797033476d6a536273353736677a775857583031352f6a51797930547330745a3837714e7a783874696433506b7a2b70396f343942554b366b4b2b5442625869724b30392b534274497a737a4d46484a4e5a442b54696138585177794d46703050725479397147574f68644c45567a6d5a68514a487a3550367a74336276742f794a547948723467306e5430744b724c586f7778454c74465543673475566f2f4b517359374a585a71756439626a7a46697663516d6b5769484d776c6c3962546f5a624d663773637074646e727a515a5369784a665a6f6971706b6e713147506d63546b2b357648484f36616d597071514e507a652b383969767a2f754c6a686a4d39584c7a4a6b3145324b713355374f326d36613351433333625666467543796f3537695a5851784d307933664d4c4f3855492b2f77437975674c5653386d354c71426e63642f75684f6635747272424b5743436359355a6b396e2b416e437634312f64343332714d486934486b52706f42763759544b517a6d786a2b7252775970644a4b34573374525439714934576b566e742f55374336495056376a705362714a36414e716c685a324b7455552b62526e396e62326e534d6e57576f7963784f6b4f6164313847674e5662467a4e6f4e6a72666c66775a7a6f584837557a79677232454568386d494b614f7a53764f555a4e6470524346504a544f6f7863446f48794237687173595572754c46764f7a474a385857316f4f6e3434474543314d75784337707a2f4b2b73647568392f47794a5830514746567654657746445a7a3430677a376b2f76455059514a593776526345757635617a79624c583256362b38756e6b577a34615936394c715575596551386c4a576d4f6676794533342f6558752b4650452f77437379344e66672b6e3642587a4f333676512f774470726c6e7647755a4332725a2f726b43565656656546583634776d5a7458744d6d7139334a324b70414f6f6a4a503956302b384e734d7737556957685038537151657872716e59624f366c615a7669716f36303266486f522f586e54377563346f6946676877444d672b72612f5a6b517a314f635a2b515a536d2f6f65533874556a373770667053482f7742714b786171446c624f7369534a642b647a6741322f343952384d2f66724b646d415367596946417049485175725856787050513670795246427930317366504744714b467a2f5841516e645564446a495766455a30732f717758576a52506e574b2b344c576c4f7161504b2b794d4b6755476f664561464e3037436e4b61656f69536f317a4f4d4b514e36506d493270436f39326542586b365731726d6d756b6b6956795770596f4c516633374c6a683058756a506843536669346657722b4b55514152426a7033434143633173444858556362524d796c33534643565876706a7755637578682b2f776959636f6f704b583448746d342f35484839616366686f464152545542744c55545239624f41334b6a5975636d4b36754e45737446506c537375755277376c777078796d63504f6358387746774456316f48304250694f5944647976794a4d4a52684e4843752f4e7243684470336479486330516f6c6e73443751714b79365a5057716c58493048664837542b563836654844774433314b79395a666b636364627575374b4c632b49756d374b586f74424574556c655a444438717478667444332b7876525448304470706f346f4b542f71316262596d4f6f676c5649646e70757a6c61713475317a3641717746535a416f50566f2b683961444c6247424a712b2b764871654a39702f7873425078636e493368555839366571532f4e6c665964704c7537664764766462747477305a71716d6b506a7167645565685053565467353370442f6a54772b2f5a396a6c67466365716f684a57694b7a556770304e657044557871643265796153764c6e374d436f4d77567373754c537a506278497059387155675a66723554482b725634546e7567425a375a6b6242615777724b53794873636c565a5238756b56706a354459693144374b49556c5378655a472f77427044336e7963674766336d596b5956477a766877533359782f58514471755141776e494e4b6b326a705555665755444761417a2f5949616f756457487865776b6d494766412b555172447a72364662363877786d4365527464732f616e39484a696c36656f534c674f465051713866455a364f4d352b766d726f434e4e424a3539786e3942476f50613052704e566679326f7a777467353177524f726e504e644a77756f345445334d64644f5144554b336b507354522f732b526a6732316350437934565a6c324f787441516a51326559456336537068705032736b464c4b485435347a73476a3330753651467752542b2f77444f76782f54395257486d6c4f766b5173696f3550796b41567a7444786a70634d4e505579554b5844584731573478556165304b455258377a63587638415a315467354d5445786d42454d677336585479584f55623361637a7757686e456c6f6f516945566a37457a7a3156793364686a57626959786676434d347748334c596b3546772b61327a7a5a58476851676f2f674e2b665479784c6269796763584845716168797771644f357a413537696630676359414343476878685148685274713952474f44583475754a79354766412f7570594d525645395a553837696c4b4f656a505a37564e62385266384178706a4f59666b642f515454386e796b643657586f307a2b436c38733871345a7834356179656968446231533058734737566c2b5a315350623772487544767866474358474e644c472b6364502f5945357145712f485568324d4a6e574938486a42595168537368526c5443774a756461376e4a754d6c7a616c796851396e5666544147463333756d2f7133783876726a7746784a3557506a6555464e434373366a42512f7743756964496861766f7a4f5a533944674b4f64517a2f41434e465264614a6d4878454d367a55415237504e33624d7842425251784444524e59396a61706249416e64772f7233497345766343355a794d2b6964426d6e697963376f4730676c4d46326b4f467039347849567770625379326564593142593262374575744b497973396f72483575554d375033706e7341464143763477454e64635459376f35586e6b796179716e6c565a4461715561484d306168644b6a546f6672557234306954474d496c78416b373567742f66745034506a6d6138612b59324e384a614376487379656f6862384f5a386f4562484659356a6d536d5033566d544f3156632b71354c4f64354d413865667544686830686761392f6b57394c4a736a4c3062374f35326a72785676564c77466a4e4d6161463643307574713977722b314b6b506a41654d6f4a50512b44685230752f7057652b7344443150325756656c557377557279666e4c78734c6443625456534b32535852396b3655326d5444616e377845436d556f475a79662f4149587370494343314f314132596b70765044784d3939734650616f5a42734b44745643335267517335704158524c6a46717453346b73416746335a7567766e7339786e6e69756432514165332b486e69523233564a61627151585233492b5470564f702b744d675a6d43785333437651316564446841645232556e77756a4d37766264664d5552354b70542f576a30386458505a6e5831356c7830334b6366734f5744767a486a515a6e456d4e35477536696a2f4341707674356f556e52326f424a73787770666830774848354355646b4830676c72464c6c336564357941575935623447396d4779355662783048664c2f4671316e4f537073346d53686a5335626b714c346d52702f48395264666c384c5a5752765a574376726877487975714549796e4c35484c486e46516e577a333643736c5269664f3958397a6e562f4d5836436b49503463707375572f703530504a53324a3875422b642b6d35394e6155565a6a416e7755392f316675346b742f665274633733716f426a674c334a43336649616c7446435657534949753976436832624f784e576f343561555571537955545a2b3743426975434c684d3744614171596b55397254737749766d6370544f315a7a724d666e6b6f536b3747485555796d6b30532f684f324f4347586a426350654534784f644b573948337a39536d776c35353357774d5336547234654c7a354165376a6b744b4165736671783038597a6e326c66596f2f59695941796c337947412b386a393964396645557a47656e396e337956365850744d79352b696c3456346a2f706b6d63654d4b5a4a7649474a7a66302f67732b5258654e2b464a74466f4259542f786c76384149704b786b794b4f597a702f326c62436536436f6c7a794c4135785a5a384f627a366a476534306c38786d62324c554866696f42517151597172692b732b4839414e45717554304651716849317a66387158303249434757682f797348397a2f414f6b672b6162696b72415441364a7665576c464456325131783537555550365263467a454d377446476c644656792f68712b54725250336d445434496c776e4d435135746237487663356a4571764e526638417150556d414843364a4f544a7864446e382f796e6e4a2f614669596b323844396a543443315676325a4262616f51624d2f7744594a4d6e4d465138726d6a4677386a59786c464650644368677053507531416149766e61766e784f392f7346713071646d424455507a7a6f51764f366c73764632326c68444b344e4979613270614f4452316e575a6f6e50646e6a374a685a3335414c34774b622f576d774a495637396d612f4c6946756139724563706f5a7973573049665079497873624d61566c524c566e7156313677454534337549326d394a4c6a72776e76456a30766e5656374b754f70506b7633364a70446651436d3848536c35546e644f68796d66737150324a43444256396c59753976436175694b646d4144563063784a46514b357164506c536e6a55465478316f757a54764643484f79334c466e334670497546305144726d74543778506868594373796b3341694e365a362b36747337345a595550437469707056315675646f4d576f5a317453364553596a6767483343567a724441795342444e4646556f53554f544b5644416b565151554956567a3768765330353730794c634945766e51393948362b4f4e504255787931674146416e746e2b746b7a426d68644f4543484578366b472f544b4f6935665a4a756c33747a4f3166495a645067384d45395033754e676945634f31354436434a45777a7a61585253684b78645678712b6464734b6b5a386233554f2f6b4f665971657979696a7131394c682f2b304f6d6b7857703363754148436c6b6135395837476f494e6e577166556b6e4a7a66596c41734e656851762f6d35613670313839354348663848493977474c6566314949614a396b58336967533150765238756d67527a574f6e364a38556356765a794a792b7933512f382b33686a774148394b5534444943476362704f63414f794f47446b2b634e437a6374736e7939632b5547312f523661316f534c752f4a4f5865714a786e33686a2f6d5662396d526e615438364d757855383731746156646b446c4c4856643773564758484c44504d6b75426630312b39513961614a7145304366745332646a6445626f42426257305556516d6e4f5171714f6837757933774c4e64516d77484c6e6a53766846384e42456f6d6465594371784a743976782f474668474f50666263364e306f2f474e667971696b6764384e6a7159467676434b68417a6f6c64786a68617862334f533733687a396f39342f4d4373552b57446574476a376d65326d417138742f7358564e4654423731726f4851496a4976645043482b73506d684f44324b2b704d44414b765035666347584f62547735613167707058635552304e454f317a384b52365a6b78382b7354452f445a6e6b77782f526b487442615455615742594d75794f413665386377356c394970455743784878505147666f41336873712f565873304b6f564c4435474d50337436663656516c4a42383032523154564e62527a52414c2b42476d322b55557072617638416b3045786c482f4330453646696f6c68384945582b7472665a33683972574d52674d6d587269374948774b6e2b70566e4a716e487449636e54564a37424e6e4a7150637765792f782f774368596c7157657872414177397678746c664146454b34392f756b5944703449453935474d37424975702b4e57553176777255524564456372474e346b47385541712f7741757139685744756c3954727075766478524c652b71704454596144615a4f536a6c354957517a7556563869535831536c67302b2b31524737326630475a6d5764547742644e79594f533952556f75784f5239786c6e316f6855354b516437727036503270617665664142784f42336565375039333638514d4c3662457161734746517466736f44746334696b306f6e66695059367477476e392f523969326d3558776d587738563872766d376f465864425845714f567838436175724c714349355a766a3057666f6279487675586e772f49366779497844322b3877535163364878422b757a5a4463684569463033334e305866616c47574b635538576970624c32544a34787267726c6835376c6578346673412f7a44725436483144464831656d466739653548644756536861374d726638662b56442b7557496a6c39646455513861784c70795877303065382f5a2f55634f7a35444e6c43334631584a436e7237385356544d375a5863667a65306377512b575678797055494d487267466739655a4b4e7166624f6c4d6a367a727a46445a56723555614a775a4a4f68665848315474446b376262685844386a42636d7a7256385768526d344a33306d706742324f376d77476e4b75734c7653415a4a4a6c4c72516c692f6a6d634d796d4d43696469617959532b45795565424f7833556d6b514231587553303541545a6c49726d4e4c725a3331434358582f35694576436c6e664d3551667a4447574a2b536e4e4175495537394a443267544449774f744f7a4155677470524f744e794b6e49586e52533130455a715a5264707a7733644761336866756564597877793856316a6864516e69544d314a487272416b78537737387674424337596339625a6c66585169326836586146646c70386c702f32632b5a5a653335694278526e37794656485059474763484f393668502b716856437a5377317947554e576d6e36746e54682b51536e2b5437416752742f32664e386171585575506a473176325a415479646a586c426f745a507a4f714e476f78306d65625649616932576b4a612b386c547963536a48347a4b6e357834483656385879484f7762434d5a75556253792b4b7254454b314f73753932737761657179694a395533745a5a376945324f2b4f777a6f39767670542b75634a522f6f443657364641317530482f6263656f776976644d647135706d66435330542f4f51416d4d334a792b4c636e6e3644374a676f5142714774423578446c313962565879526b4e6674513667462f446d71466c555848784f576e767a4353566a304f4e4a662f4a70434e58772f574d5168506c2f63366b65535772666d642f6b756f726367366f4d6535515a564372376e64474e3635574c3050706f5933324b595a6758764e7631326759595932624a78307a4a4c6a364f694e2f517246665a576b6c5a2b377335436c6863637a7249366846524b41574639796d667654482f41444354426d356e7a306c5358536647354b2f5a372b644e53703555762b4b74386c4361754c4659776f34544f6764437354337868386e7549512f544a4e76597a596d6d4354324d6c63326974483077617276316d614b7957355455326363747253415667695a697a48326a3849384d495473567050572b793269644e53577a5073466875436d54345a66337058356f794c347a51396d6c44443376436e397a6d735637535878765136443778317756503674744e64747149756c423279575241716a734f6561576d53594a586d58364c5030434a6b364730475365427776712f4367416e6f2f44546f707658444f422b384a464f666d313869514a437733752b36424877566b797156337458307742634265336975442b31684836464d63475845714c4f575770384a5236584d78716c5063324f7a68303852584877703253574535597370587a392b2f6e432f514751754348756e4b6a5a71375755476a506564764b6b63636b7032555730352b584248394f64776b4f667a556f39374b66722f38413048642b51364f4d5351424b7643382b4f42307579426f744c4e6f703543756271377056635645504f5a62613263426b49386c536e672f4d7470633756786f664b59473137714c4f6c4f6165794e46425473585132566a7554646252594e726e7779673042517a6e2b6b32556f456c6a30572f6f2f65766f6535516d416635394e58302f6d67732b6f36596b4e57664b6b6c5470662f5338344e4a6c6f7157526c4838683851524c34763433494a4e446a4171386e6c3968412f4b2f6e7a5971375348365535492f3630726b4e653673315a4d4e4245504b4339713576636d656e7044554a68304a3348326a6f7a642f717768616133614f78476a517472555053423165504756532f77434f4f504f6a2f63767a4c6a4c36712b446f4f2f316e785175574a2f5a4f5945683851574c3437796a736c48795a73784d573435725a3944696c546e54716c7873646863634b75324a4c356f304d3733394f4231505668504d6e6e7932414331493645797a63393864554f46547a4b713544717034757267742f6b524f5a4b5567624447686d6f4431644251684d6c66464f36594d46514e63504f55533750734c4f74523338554c53694d44304f324a572b2b75794a477452794e5a6661462f42377966384163305973506c4b33475038415141644b655a6e386e7938666f4a3462464679383839376a6d6f48364e59792b79326a6d74374c536a436864584153343343482b7076766a614168374a563256716a365772577a33304e5153484c516a4f6f6c5866314e4c2b4f356438613563763231386b65795a6a2f69426e554a3675616341756d6c3755726c576b52566f4c6d477176516f65766f514d62436868576a6f4a4a69634834616d4452333267507770455253744e4d725a6779386a344b4a2f746f6d304539646f7a6e515656737350644f6e4f756a4a432b645555376d44584c476c72775233374e616a2f7945542b487251526357686c4945364e433376536a757a4c716d6871495971656d38624c4c30306c6b2b794e672f62686d577830347a456267616c6c68744434676537566d574d716f2f7350795a34382b36584d7330564e544e7041794f50514b6a2b552b6d36577970656b4d6242346631336e386673614d352f4d74794d356a48554251693679547461364a7a4535476467726b4a6237716d506c585849352b51724a53746b6b32667155644264457a66754d67414f6f4e6334544f41444a6779785a58664862733530502f4148556c386c4e537670685178486a76302f647961685332556634333045596452636b55704a4b6b52306a2b356d637a6b4a5435756e494236534a64614c745437665a506c505a7141757165717971617930574d6f524c48585a635078665a613047382b536b66744b702f59774d74506d544b434a467130676e6e54712f78387537544a3853374a2b7a496f646f6a704f474966664b54754577316e51344163733341614253414e4538767a3534314f393630316a3162556158645771646f35704969746c454a38556d6246692f643845764b567435387361714158523171544d41374f364e50632f52325a5870307064495a325466384172413943637634385a4b4532616147736c6e5838596b376f552b776e64503275436479506250667935434a46704e67465763374f31595a474f5379544e52576561616e543536326a6f4d4d6176642f313439497a62376964524e70504e494231615866314145655a4f59724b61786c537336763772654446596d566a6b35364935327a6b766930302f77446375457449356e6b783736577356384a6d4269584c30367a386851724e4c63304d30744538344e41624a70706b777a637862614d39396c554f554c6369534c576f514e4133564f36784d58305642524161477054517a6f42714a5a3656364555467a342b7a784c784f66774d2b3168445270387438583053634b4d504e43373363524b554631315853583057415a475646536c6148762b616c2b6b664d4150554c61386931646d7436716b78386a314858584b646f464d4f57506a6a7375536c5a736d4a6a714a654a593671396f537574756a7643595436465043476131696f71334b37795453697a4668722f414b2f6a69716b79777666504e6b3455677a30576275666e395a6e3970592b676f58556c313530754f7a3449334e4766336e59624472756b7648436e676d574646426f37412f5371346d3972352b4d67725174546668564c5537517347674a7934595630472b564c756b564a7a686232534b50336b684c786b49356d482b6a785a6f4956436e7643712b6e5772746e6a39504e614e516c5455747a4242727a7835776356625356396a472f616b4a5259763236386d7253487373755656704d7a374c5076717935704a7450503155554c62455845504b54536f3046503770536f4e7830754a677a6837452f31554b382b784f636a64724f43414971546e5253704b446e6b707a6d5559786154717142574e3330382f5955336f726b53326a34624575427730752b4f652f6c79464d393833467932556430636a74794a484a68506c7476614d314862474a595231714b655767795a7242327a34326742385548446853314e415148504553567a696845466c72546b7479623947594a344c6d786751304f6a342f506857746a507361444b505a383337624a70635665583345396d514266714b74747353303646584750586b4e6772466b72394b565944714a706f75373163726763616172457a6d2f6c4b6544706e314c6a622f77427451534a6d556e2b5055584d396d645471444162724b6f4e48505178467338306c306a35383133435a3864672b79674372424b697059457a703155676639426e56505433466e7243726c44754d6c69366e524f6e56692b6f623536584f644241546c6155664373464e44596c72595831686638774330706e684b4a6a47494730494b7054636747664f434d37346a7144342f6339386136694677723559356f7336494d5a3177635349794354506d423749704f4e4176524873523379464b674f49482f4a4556745a5a4c496e32484c2f73712b77746e2b733375524e516e346e542f4e37796345747a4962786c6d47766e564767783753484a564c413278543538526c524b2f77427165546953426d576e6a327559442f6a44333165306f776b6d624f42485568374b4f397145466c497757437a50684d592b44336d637172704d63503841317a5743654b49752f70774b616e67673043776766326c6b76744755787a2b4c664d566563715a576f755567595764724e6c3939677473477864447a39726964415a724c2f77437253445872674368484b66594365477634654f7358316648574a474266574f565561506d61396362424946706253754d672b4e49734e52674d7165377435684a6f544a61755167726e4b546f436d6957385754565342514b767272585177535a2b684a6e736c2b4535334830452f77424178666c6e567a4c304f305034446e50537461574962522f4a7a68374a4b4b575579483131414a6f7143672f682b373866794e495739442f70674930707334652f48736e326433376c58637a6e3133567a75356238743971613676634d4a4d6f2b34385731447a35766d4d6b7a2f474369652b51617a413931504e43305143536d6e526333757031762f5a5450435768784e4d3945334a6b2f4a7861576b436b746631514f2f527a4e536b43424c55476968376861536131455441676579764d3675646875576f5469584d51646a643234576661714642735558376252777a2f2b4742576f7048394c454f2b49756363557a56433446462b6c7a616c44364b5a7a456d2f583547516a5430794b786832434c766847512f634156684d5251495447613447716c616e74414c37566f6d32784d334638374f7a3553486d665134556e77506849744b666f574b457a2b73474c4a63795567477a4f6f54544e524f6e526a7052487a2b51674c3674507a4d6c7a774657706c7031567363772b422b2f732b396965702b42696c67524f6634625a796b3554597568503062744c4e73466b386b387a424b2b716370476466484768632f7a487a6e58636156494c6141714432434375367254657a62346b36314162336362564e4a78743161622f414772552f525334782f363472576b5a68574c6a72474367322b3831743651504f32645a3252556e4b4c506f7a2f537358314b303172766244704f5a4f312b684b54466c79556e4b2b49574a3968797257317153637050394131673538644765724f6f7a4775476e6f4e354d6e5a4a444b656850744f686b6b7a3364445568434f6f666c4d43587a326d4c6739375447646f47495a54364c503475533251465030506a52583045646c435836636c673164443566613573662f4c464a6e53377638617a392f7153774b763641684b59314f6b553663596c314e6239795a61487a71755a496a337a4e576c5453663850624c7376704a36685a70436b67367a71564237674d534138354f2f514b5867436c712f6c366f51506f7557736a63624a364f6f54573059644a71794a366c4a4b6c51646b4471757153435363383256316158785a38756a537930324131314c466f476956696e67523056546475583263614f64352b674165474c41503451634534534b48694b5a4f73375455397a43667751554c416f344554616e4e6243697467396e597251544b5a644e2f516d4834776553757344345147684b722f41495862525063592f626f5938552f5371456b2f5a4d35356e55706f70306338364368547a676c3853513976764565723777412b704c5376304b4434614959305555385749706a3433326d554d34667073444f444b796934724f744d466a33324732626a652f3841787071384b783542426b492f6f756d6d377661644e76416d57496c6e674b795473394432712b4249722b7756517a765333676d717a3457696e765434466770784432786e464e4c476a75636d646831447a4e6345397464616a724b6c583341435032304d6237462f735a6942772b377655677730417248467a6e7542692b79746f47476c4266536276493737777536484b4579564c34532b72716449596530523450364d337634306d72443668536b445943324e532b53755a696e64696d44466a417a4b7850666b6b2f5255792f497862434d2b653453702b494470392f3841674172506449754e38435a5547723455714d6c4844326d6c7970637565657037625a7a636c677371643769346c33564766666153772b417744345065304a6c686141317174364e5535303570467746352b6b4d48624873544b726735356532464a38576f702f6a53484754667033742f6f46426b56396b75444f38476244547a324438394b756437795a326d4e48654252776b6b75707a436a4653566b6b306c3732753673682f6f4179614d7861547546736b764b6c6c47386b6d50484a597070415a2b7874584f43756637442b6455337065356343675035766a372b774977317761505a714b6d69612b6449555136632f4b7032314d4e32635349513264446843782f336d473334536e363445713450733974452f3841514e674b664a6835502f31373045456c30307064304271666e2b2b64772b36434a505471594c4a574a51516b4d663841325342514a3444784148464951554c5537516d30466b584a326e315048327830573051754c3671796c71397431676536587133504434513936666358443972763644476c694c443058412b727362592b6656705168537a6433735a53736c6f552b5654567058517964517234316e4f646a446a41534559722f6f507144756a496161516c48704237316958324f614130705539302f596c464b42797872596c4249357a35414c6f417235654c2f5947444468755577616d2f424838555a506c6a75455539677a62437345346336594b4f68517a6c54686e36546e63534954475368475132682f5166655a74375831785651326955785468534b57724a2f56537130484454554b4a65396f583257786650695631337543397072396e776c3959483750746b6b4f64474e7376657730333055444e4e4c55785050723665655651564a58376a6e59785941417044693432756f4c6a4739442b674178517976585044644c71527a6f7a425339585a567a6f49625a427a633936596c4531784d4d70616759795a486673637044686d616b2b304166564d746755726d62546c53416c484a785a4e506e7a646c794952667a7265394264445250756b37552f582f455a2f4c38526e2b2f67597333587a48304543772f726e6179573553453539612f64314148566433396f56544a79672f7230642b7855516d664b453958595164416d4d426a67776a6837566166556e544e5052463074436449424c5332646f5745464d684750474d477430464172575043532f2f63346a342f384179474c644a2b514831563152364955507337524c5a386379347673525364584f4b78633268617556634665676969576966732f514d2f6639676763424730557946314b6e466267557a516f54384b324a51597a50472b76356d53507464574c684f663556726e4548306a373569397277446b616c2b77486967643879686f345433516e7837755843414359676d6a37432b52717a564b6353716b7343672f3041706d3936695a4973782f6f47496d454f593474416c4c2b314f67533036794c5045542b466e5a61684e5a4375463632565a66466d41487a68723976374c6e5136415a63354b54394d793439304f684e526f386f66624e596234784453706c3466653644467559746e786d5945664f6934303043637a6674756d424f7a6f4d6f764f7a553743734b327035705230716b7a71476d6b5730504e783044784c794a70434c75714d467470576b2f5973584a3444342f71557356386c484c4c6d534c48744c6a697259397a4a313965745654344638716a464a4d4471314750766c702b4567684d65422f51496472716450302b7a48397574634457383555425230796539665a374f492b4d715957645a5059516673414e5258396e59503644336b446747637254516e76763436657a546d7a725a5a35696f56735034373371594c4741476f744378735a302f6548797a617868785a41615261444836734d685449756562746c33654c6153375664304d37676f7048565a385672482b326a6b705a706d4a437332467a326577486634694555386d7a754e586f4a65784d68707974506e2f456c6638534649712f37464555674f426778766f46694643313465786b63504f4c464b5259344f50336b2b74745561506c704b75764d5048646a66746f443664673051687a79436679484d495a64555471756a35504c6d7448677a473449357538596e4e7a6b492b2f3044644438665041475565465a47735669754231766b797634693168576157565870612b3953794a546a532f3663356c6335636f73374c3735776b5949712b65655a2b643766434c306f384c77507248427479582f5976537539746364433445773648324b4a36587653712f6e626864524b5652695a71593973626834514a61373235356d4f6b3442382f45734762706e4e47727130646a5777756f6f36656c78526674586670576b584b6e4b585a6d6e2f414c754e2b4d383066596c7678427867456452715a544e6939575a7351334e4b6e47316a7a3545545731584d4a6a464249355643342b6136794e667a41342b416c58574567457046674c2b7a597a6d426e70716e6d68594672422b78786d6b70645537366c2f416a34566953336648504b546961704c334a4d2b38724c6f6753512b7434337244645048564c424e59355647665837536e554e44423771413373487a476c52634b48343249625433676d38426344426437775a6679436b67367a6c4f64626270307872474f7a716a3577476331716e33632b4b644b6e4362506363726742765a3530477375724d546f6d44393369624a304e596673516a515971616e717a7372754553544f4d7075584c316c5534614561547065315331546a41484161744a47426765556d645a753779536653646656725673627058314a6a6e444752644f3035314d4b5564622f47775667505643426f637049744e637a464b425367744c554a58756d436a6939643870624366344e536e49694f686444745a694e42507448724578314b392f51347a3530393466416e2f414b4139586f6c4f74792b4f302b4e545a51693373717136767250734835564b7834316755377a6e4c7156394143443241596e30772f53522f6f457073334f4b595544396e6c557a64474f7134567a4378624a732b7a505759746941425934786c2b51653069594a506e2f2b452f59424157546679444556565a566c4b4b442b50756252567934517832777a396a65554f6257324f5437796276617066736e4c392b306e4a3442712f71767738763041375931543752704168315568556532686a55523138356f386e59794f5a6c685346336c6b665073536a4b6257697a334166797270415a6a2f414b734177746576544451317a7a595463585654302f4d5374436968314e414e634a4a6b6f584f686c677a38487443312f774430742b326742384d70674775666233546b6971593441533752354d69564c4a62587a6c51356b553752554b506851722f515836517a6a46703448525573676352684d6d3563326e4d4b3463334f57775656336d6650724132686145736f53326d71743357352f774469554b42617671657247507230733648556745544d523143355a54754451776d314e75446d4b3461453138577969556c4950545a435461754c736f5248524c3765544c3930704f2f307a7245772b6151345478694e4d64415069344f656b796632374f712b5259636d47476c7974625149353671302b395a745068477076552f2b32666e5061594a337a3644717854522f4a6339796e55716c5442725630776f63304b4579316a32656f2b50426459724a6f744262655467507769355475396649616d5a33616b61525358396a676f50727962583837544e6331413054736239646c78496d64795859713652664777364f5579324c55397756394944456832746b2f6677435654555779703167786668572f747379555663695a42705238537467736b4c746e73533848516674746449413475424665645837677261566161595971744b71495930495a466d51493345564d6d5535677663734b43314f3972594351636d384c424e564650597a426268535a6b694f76613767354254544f304f47394532766136636a7057354d755776766243482f414942693356675474555771756f616e36787a7874506d4638344c6f35496631317a4f786b37734c4c324571537156426143717673556265676245782f77437536727659756775576250633158474d4353796942397a5a7243666959646374664b7952796b4d33512b496c52354d6b482f7269595a335563566c754f71785a66444b6f32435966474c70314d4966366e6a32764d5453416e586a334c59754f6b566b6c4d7163386c3879716d7a7a366b584a59564c67614f596f5a795944507445483175302f4d6f776e42782f77425149732f732f48444d7843783772354855767a744a566d696e3331506f70533946474a6b4d6e4a542f415072462b31784f47647346656a53464a5567326f483631634834306a5843674e4e6932525478744b334874746e2b616633704268467861656b6c6867756b4770623959464b4d414e6251443939593578422b6b464d38513057686f432f51792b41505a35593466354179542b6d66654859715978375671637272746a72666c70352f3175684a4171744951652f75626270635767437156326a6f3835304937717362714c46572f7879656a596c4837377966343577555643426b63426b454e38776453794e7451796331714c6c514d766e4f4b654f756d783769796535746e564d517a484942725a38716e382f63396c69765a53615170366f4b35694747336b2b684275626b69386e504f7973633474534d7a6a6855766f6c716a416e32356d2b65356f57414b556951696b414e33325a783446665144325732676d61564c4948396e31715a394637745a39636e64426b575a48512b704d63646a6a796175354e43655456476e714f6661544a37696a4555426a6674534a465935626144524b593247687336394f74344a4a4f7a4864484f31364e57476251576f62437a644166694666747254545a77556b6a2f5439656f50535748793347734238636c644b432b7935636e496e474b37463041674b31657a3561464d304d336f4e494b464a574143343348374c3341543679623468666f3863316d573568682f4a7454393466347158486f6f517a363253766b6d7365546c6c785a67354c675032496352673151434543395147732b7769796634444150676a5a794e6c703842564f7a2f4142765a39504c7833665a2f6a3353446b30744a765a7859637a7078622f6d6d662b72563438766449674d347030564931645a4d2f77413031684e6e357a4a6f5771676470337469796332734b506b733250626451795a4432726e6b4e4b68664d6d73544b62595059516938687a644333535774454364684e78726663646b793436614b4f355755536b6b553957597a4c586c72573035532b62375366315158444d34732b783535456f596a7236447a744f5452757a484579675a2b53714b41486a2b32386b67386b3031742b7531713430746677756d665076696e365a742f645471642f4c6b543378376932586359506671396746536e54437551547a2b5034496952306b6c2f78347a6670705831684d6d463454644b7a2f6336714e6b434e36726b6844706f467271644a62584d56486d74344a706a5746442f414970745a38762f414b664b554b31447a507153623275636165652f6f67376756786b4746572f6e386f6f546f61466463453270394850677a353761703536474d565a4647766a5572624c79493641366b7843734f71556e7673624262702b37396549746a47686c69665748586c4b31634578574c6c75624555594b3150354a637933667872695350632f506a556c616c6d395a5a744a4a5838684a614f596662644276385375645452486f63504b7352372b5a4f6b7648307054397a39566a436753426c386736553670766b696d62623333684d6d7a35766b5347746b57566731303156596f3538506b3039397447725332626b65705271307a565177665661776b484376716169396b346350337076574841535167332b747137766943363277323246623548425269485346554e792f4c614b737856364a744639766264566232644b686a4a644b4568352b6b6d5a3258776d706f322b364f65376c77446d576e546d7871655a634662324c626e58546957626f66716b474c5964556b2b687154724f373243504c5a2f34344349516437413642542f4144486e3858502f414d662b6859574e6d52792f424e7464314b4350714a74696c6650656a5644426f5a6d35374e71655851366d5650536c34516e77474878376b2f344e4570577569317433796757447055386843365764627165734d6f3061576b795a6a3132306b75676630387857717839575063505156785a474831766b4e30396839562f56656f71377656473357717a73396774745878325a5465692f6f72766d68324a7746726f79544c6b43706e31655447664234626b6d74786a616b4c6b7a33383251694b7356552b63332b535778756b4d544c704a684b75386775434f3178335456367a652f78364956324d4f6a336d7049514b4f79734a65457370352f503769545a6b464b31744d6672553834723261764e536a366162316766425163334669354e626d52347043726e5731634f647a724b5447772b2f46457a4d7a6d524e63795368344c6c535444744765736768644b576b54656a41366b33446e73465a56456566563370633454577036414a6d4e4475674a77475772716e6d46477336334f41656362796e4e566a424e7a506c4e696c702b64552f736e7a52795a2f5a3849744235735450475a6934484551594b7a576a4d44466b75746b7a3870356b78712f664850454c4c737830654c334659316c6972766d434c724a71532b6e7363506a753859644b676b49714f4a63624536676a477850376f7351777339645a784d314b6f7a466e462f744b57444d735631725574545463696c4c6a4e6f742f6f48554467586f4a736f6e303535374d5565766d71444a70614f5279446b305032707668366a4e714974434d546233362f5443787770346d66357a49507044796a36593952425a4a54636f6d454564686174314b5373735453716b703533682b6d46517a716549414f712b66717a6133674f414857696d74542b3839304f7253327650684e47743970744d71685374612b37486531634973354f704c556c7875364365436d616a6e766543766b42725639466a59636a375a773471494f544a70562f466b7970364a754a7155647734524d6f543255624f39436a34666d647045526b305234453462547a7a496c5241326879316a30554c70635566464c36366463625265516750755958614b4765336e576e7a7666645142744e4b2b45424d737a7256307a4f68654536572b356b5139702b34545653516c434847466b2f7477745973562b376864392f2f756237694e704b4233663352536c453374706b35373632457854692f6a674f6747542f414c50744972624753766b537a7067304239367a344243445738377a6875784c2b4b6552415163373272677357735a324f3635565464543254333648743755784b32423031434a396344506a56336739393351453242617365704d4a6d4b39304e6351704757744b48352f2b797571596544304758665839764f48785155395348506c393366663741616362564d6270364656496e4a6f5641534756694a554279707a2f414b676b524839687441324d443246516747306b3948755344442f6f48796b6659656f6d6d796f4b45497161532b70354453536c54772f7038517a2f4142693734324c49463861342b4f393755744473352f30445953544e45424f374b6a34474c6d4f7164686f47387255386e70746f6175496847663431324f5550312b6349464166522b583366587a2f6565764149514335463662567161754a724f51642b73617250393743644c6f5744524e4b504d326a2b57624f776b6758662f705a767558374f475038415767624947666d636c6e49654e525052794f6f6673424c48574149466148664b4b574463504a59513738587445586d66424d65435074566e2b383965413176387136786d303632686471676f593466666e747053466f305166726c34574330434a6377326153357956336f4a6144505962464653714c546f4b366e5876796648735364733034674b4571436d7067546e3042504f74326d4e6b43326644445552434b65447a346544585978587869737663594f3232767657634c4254793472387950527a714e486c436d356e6672386b544a54324e4c645a674a53596c504d79737673337642526932304766304332584461366d74744f6732515a344d3543366d52725574432f6c4765314534455846564c2b764f58566334497047544e3751524d48337a39434e2b5136562b6874547966627a6d36566c5575633247514f54324c303154305a6e6434656d78376d66744e7745774b44443274306e4639744c554e6430454d6b2b7136776536457364484a38353651314131446e347257537554522b412f6a436965352b657661627866376f396861584665396a6a5777514d2b4c504b7a724674714f4f32717856723373624c58466f63524f4b5254543269674b574d36786337323936786e2b6d6c627a5158542b647766726133563756674c5a6e4958652f4b425661364756334c34587a4d6d6c634e3836314d31477766396a36796e6462386966384146302f46672f6748396b69716730614538667257636862584949502b2b414f435a50624f514f417175434c696c71357864444b77456a563866596a464c43426b7151544f796436316f6f6155445832485742484d2b2b43367579536e525a71645652612f596c7358534d77684e377a2b4535715436512f30416e79537878346a32506d634f586e794e6f54394f364251546f6e59754d4732537058316e2b47617a4e645366474f2b637a5544506d53516f564d526d596756744e4a4c2f434e62496c565936465a4c7a373738716e376e462b524f48566f4b54726f6a5956483133584a6e4a585a357a436c33557058584f51756e342f722b6f74444f5642316e33692b3154322b6e6d6a5331524e4e4c4657614777784c34552f795444636f3941705544496c51412f7742687a324c70345a696452546a394e4e486d4c586a324e69752f4d6c4f4f39542f7265513239356f6458462f494e714b4f462f4c45314e547a764f55546473374e48476478756450702b37396549747678754b6e786a4f726572533058636d6e576b4b55386c7a4141477a546f695563546e4379566e434b686c4b796c6e7a7a704f672f6171786135364b544f5a794939355837576132466a4775376f5a77653931624c6871596f636c32684a37736a6e584e3752584d36346d2f4b444563354b626b6c38787a646279596a455462766751545a44752b334c68466b4d6a6f724470545a4e6e39302b71536c6a50316c794d6255686e7a636c4664432b79544a583738326b79436a7444416f74586c7a75345a457378757761754a50432b6e594546795a6c3259535671695a2b33417a496e6f505362565571576c377142702b523530644c2f4143507666764a4668567447323344674845564255343430356447685941484a6d6156435966496447686571434a3355352b5745795539586c324656477a352b2f74796145552f424f747630564b646d336a675939304b615954683434363755577a6e497a484b684d746c6b512f504a7a4964593773385a4f38656e30434c396d756b31374a66464d7163666d2f716f5a556e63334a72703645764c6e3052785a326d4d4b6f70704c394966354b334f2f55745561456e4c7a4f36616e413267332b772f65356e75344967486d69656e783436755577784e6a6b6e44347255457a2b4c716f4f6d476a454f6c6448654d785368536b3053734b6a3570744a6e7442704f6d442b7450336e72774448557a5936702f6a733038344b5a6b654f365574746b746b384f5364466455316230685335355469696646696e4b6e524d7842546c4b424a4f2b6e49375149717a7130557568316a727a574f356e444f7161322b335539325a7251633061694c4f597a724670577836316e31426464314c75743530582f41442f316e2f42396655676c656a684f35526e63504f576a35436943396d662b374636447444756c5538733549545332486d696c36445853792b6b593268396d555a584c4258763366663841354757704c70564d78632f4d7442584252643954456e504d564a56624d6c656d3272485371696768792f71365651696c6a7a4d477a45596b7330704136313238647759624f6c6b4b77733644577079447a6f75534b524851796536725956656934755444482f73577a65586d7338635358544a35704269584f4e7a4b445a48614b3269654145354f53563363636730714230637473633866536d626c642f6548505239524773694f582f487332617568524b346378483733394559775a772b364350655761474c6e4b7a356f786c5a6c485651746a51506942525548644b5766517a686c6f4e4e6c48324e5a67755a4b31507850734d54542f74346f3630374d41724f586a30754d4e2b6f6e4c624d695a7a6f3150533462427171436952614d4d694954594c31616b4e6a564d7075544d7539374b69396f757265352f4c37697250455a7158706470314e716f3035715a7239644c4a307752325677793361537447613257586a527a3052512f70625436796e6a73312f4765787a6d6b365a34385045636a6657646d4a4a6f774f35514571622f41463143536d5a47626d417a497a38374d31614c4169747a734f5a6d65752b7249494c52543264576a2f4a58706f55595468374e36357a4750434273503474444e7265756e6436762b555a7a4d38416e386b7479506f5678717176337042776d626d633033524353314c7a324a714b6c34397350356a56576b44396c744a6e476e4766586548666b413850387766425a4d374d3267745834645a5751364468746d4968646a6b326636316e7571644833536a4e7a542b71686966354c732f7a5130484246596a477932656e2f414b4672525069304e3761542f4879647937743050346d6276614b31344b4b4b356e3256625454386a69706e4a704d6f5a316e494a2f6c724435564f39725a6e485154627a61396447707055356c564f454d486a5333786553635563544861756d6d484836716c2b6f44553151396e633434366e4b6d544250377a63755744334e4d4b4f337647344339592f516a42794a3778783538624f386d666764645652342f3438324c4f6a697a626f71704e4a5258554f3238394b3647505230586d436578392b45302f5a74476474704675656f31387935395847586d4b644e585432747934376472517a393063365765756676386456644b70672f77446a6e386138666d373863447246386d726864533665656f47656d305861397a6e556c715578794a76626658552b58724d786f57364439764d304e4371666e324d766a7064486a6530503648766d70737049444d706a44625a6f4d31776b63534c4e4f615274466e56556139382b77302f6d68485775634568634a374a69644f35432b72503661674b5039726f4e557161384b7835434578793666504b497061453557646d55614d6377694c6c762b38795362544e6c45305269702b4a597a4e6a736339556b764239394a6f754d2f733841374352797a614b475a69576f6f72757835727465526b76632f6c4d36577a705870686b41735655342b34756f64482f44684f707935395550724237566d6b6775507835443551614675576a6c4767744f7064513046644a683646524b30745645576852532b6a4f4c4c6c6a3459665136664675706e2b38715a67736778763270456c715451585a6d546f537252626e544d593778376b4e5537724c47574c485562396949762b31557833732f524c716231435765396e566663414b68534f4c4d726e6d314f32676958622b4c6d6b7a57523276514d6f2b554d30627159487a6f484e724c2b4f486c725245662b74377a425579564c2f6f4a35424f4f6d6a49576a565577526e72452b354251583049497535655a5568626c66444a473565616e502f5a43734441546377334b42524e70435670307842515564473271436a4c6b35664a4a71614e68796d646b656b6c5055324366616a364a3343633678536c7376764c765868395947414f64546d69507552426f557a2f45416579473544657a667054432f774448383339614854545571566178475a4c75436e376648544a6d57346c6946782b4b395163506a4b4c346354573749765868652b6239457461556b756f4f2f5a702b4873575831597037386a4f6b4b756f4e694366337148307862705079442b356d676c38436c767159317a5839553275337274526232434e6c7a3053726c5a325767536e2b526f2f766e434341696e61644c57445249454a3163756e567a707a546d63397170674c6b7556596e76424b504c5438446b736348567039783155694b524951444e4a5a642b55446f36457266334e647439366c4b324e4d2f7255784e2b523830786532645579534b39674b71496a6f6e4169412f61426f636e37422b7a6a6b31357476356758324c65797472716157686f6458537056307165563937433179312f7743546c764a614a5763307531463850534658564f6e5074426950654d55374d434f524e6e7a3631566b6a3956705a4a31417a614571517a786e6e464236502f7144694e33746e6f6f6b59732b664762356a454441506a424e68432f4f5a57552b56746b6e31706d50504a354270343636536f6f716d4b6770587945722b6154324f702f77416a654238532b2f3441776a59546a2b7a2f414646656b6649484f4a7541796c2f657a456d614c687542644f69355154794d6854504150734c72666a4e4e496d382f653075457375634f63694d57534449776b5a7a63586e567241466c5843304a5a7074525244576d5274564e72666432696a7243714b6c524a2f6466627a34445339772f4546553655684938384d476d374f375868694d7a4756383755507949572b78376d794d62662f4a487a4c5437522b49316359594b2b4d6941436f42726c35365a5863542b33353064437150747536717477536c7852644a4c4d383038637646715034327a4b5a534e4d7a715771483566656f2b6745333258475662382f6a616162472f786b367577317a726452473159346363777a70344a32506f4b7275674a6c3744354d597171534c57642f6f414d383571386769514579502b4c4e56397932724d6444547152506f6466524b6b786e434c51704b72724a754c35324e785a70704476536d5548416165705858634764456a636a4b4a2b6a6f425070736f5a6e3156653659513131673457722f77433433486e683969696144675a4d707a76744b53797a2b67672b6d35773072554a386862545064796d53687375624a536d4c46786361535a2b62446e3163685658645758786f70557163596b2f4a502f326e43332b7255375544596e7737394e38623654655438635a794f706f664d72496e7271636e574646535668516c6134787a325a5a43777157444f6c504165366b426250384131555644366e70586e366e317166313356757257726b78566a6c36787a6456644750372f4149356167416e4c6f2b56434335384e667738366d6466754c7054485333792f5742486f644475662f4264647a4f7036744c4b47566e47457a41306e635747724e774b493376585176554b7854714a7a44713530634a557151722b7a2f5544626e7863494a38435245613253632b7057714a6c575a6c4c484f5645316564774f426e31664353516e6451505843767067783357384130677866394251336d4e3765744d344e5543624a706b4f6732514c4b4578555861487a6979552b734e70536f6f6a63307a534e50524d446171554f6e77763641484c54513677704556354e4176757a2b4455716a72707269632b646b2f314c6a7156797178444257676d636a4772334f55706367316b333968746d2b5358516730477a4c7457786554314e4b756f6c75494235715556437473315773664b4567356c48476f63667339387a4f755a78596977612f48395031465665646b36644f7262387649394f61656172566368724b57554a6a6c48545972474e66776d524e63797050506c647a3741473576784e6e61424b7349356d4439704d64613131434d383567314c433779725562496e574b3746744a554c4659737270593876695149563949706b6b46446154436b4174727a39732f504875524f725a6a7866564c394a5a4e7a4f6564455a526a4e5032656a535762474d6a736a414137785a556b6b36414a5a64492b784857337a2f5342724a34526e79316230327531546572357a517a62644e44714c55716d7030537456494d6b2b655465564a585039646a33634e492f77445a4678386f4d5a2f36764e7378455936437950796564507a30783150334f3353416f584350637870526146432b6e5a504e6d5573763041354773796f77775548584538446445366a33732b4978696e626e352f6f467174452b2b676564436c39515773773868737135593235383772714f394857566d665a5753797a55723551426d746a757a387a2f414a5355586665527874352b766c39786177744b2f7741596a46345639596a4d68574e51745a6e615858486e58434379594667646a495670426767776c4b39356e7a332b7a34424d4958595a424a44483971335236736e6d4769476335664c477563376f4d2b4457543864534775592b666f73496b442f374459627566462f51544847584c54673233537a73392f4f50664f61756b6c6936355a6c38694c72355930644b587630592b436e76736f3455596c374f657a6f4a445744485a577a7776314b6f326d7a497372304675783435493039613435503547694e573745556f445149725774546175434873476c765774534248476d30597a58486b4e71505475314f72344a6a616a2b6856796a487954585145395566584e354a39397a382b6a6776655471484d6e506b2f65436167396f744e7a6a2f5a556e7258352f7049312f3841587252575565545a46464c31562b6a73466e454539477062666f466e4457764f7a706b4a422f3348513565684a30752b355079414272436e6f754230302b4836414e363076713066542f485635417957654852703866456244396e305a6e577258725a7a4d6c72394867454c33516a7a6f64375131613350452f5a7a326755317a6d4d6452737a6d6f43444f6b71597330794850504e3146745138494b7578564d532b6e7631774e31335a58556359736542317166323065694e457954674e6561614832734b674b6c7a484b376c684b396b354d6530383376515258324567464a574c533841452f5a316b7766367672463335516f377971654a4835442b4b566839466134494e67725a584c6576726a644b31387331764630545466522f6a662b44427648675073574275634969695a5873523950365349702b544e6a763841796a304e43617172744b6655575367355561674251314d4f5651326d74587a64432b484a526c7371347778345172565a775072477053694339656c2f6c2f63624165544b34456a35654c612b5659566336715a5848713674436d4a6d7073514d61303051382f306959754e69506b446b315a6e503771526f4248696d6442705579414a7030577a617a6d7a6c39317047335a5542485438734a3341394b7964517756423372776d435966615a78384130784d78455a6b5758354f6339335670536f474e59646370705162632b4f67436f716f54546f4a6d53767365616d564a50542b6934663741576577682f645978547377415765484531314935386a4a68496a5179396c564a446f543343333751393752795a4f656e4e7a35334368565036352f69616638784c2b7243512f48316b646a5a354e47684d69615a70446e4b4171314f70346c504831484d3578456e7157584c48764361366855772f704c7a364267465a6e524c7a543459723052582f41434874557957647032442f414e31695553707342784a397970787348732f4350367865393678582b6754304a78344e7955566471533252387967626e4d7447656f4a484c35554c75637a6f552f502f414e644d6133502b4c74446632446e564e4a46527461714a3438504550724f357333622f41487a65357068484c51745a396e3070324e732b47414135482b3338654d342f366a3778337547592f623172484e55556867614f7774306146484f73755a6f41766b4d3974785a7776366b656a6d6b7a6e52452b724335715671396f2b79784a42576e336930414b596b2f5166524d4e78585a71776e6e6c50396369367876787374705a6d79646e363531334e4630494b456d6d664f7a763777452f44776b3176325a4837522b7a4974565877425337736e75354a6450516830667a41766f646e6d65774a5a6e4969744931712f6636373939583662317674486c67426e645463785232427a6f7272596332656e712b6c3131717270684c6f557a746e6450506b73596b47675a4b4159506a396f4a4a76424255753142315144566f614846503432696d3434697136664a662b796964305a657a3576707064785843563067357047565a7439337a45457031562f61536c436e4b6c514e43336f513567532f4a77776f666d683961644b2b546a384d4e4477357775394365594457795965414931703259414f4267712b46783152476c6e4b2f6e694c686363317a50744735317a4967656c3050375a51413853796564524145347a4e455463717762526974703257453461565570594d726a5974304c56437430446f58364b68346245754a792b69496c2f704d31422f3766307638416f484745747379376f313870344f623252515646594d52584b4b64334b477058524f46444d6e327379314150484543326d50666d46344b372f5145716531547a455370443631664b6748343962504a57614b46384c68584f6e4c32756a464e7739494f63614c427a2f694d41587a2f45426f73497032526746687553556d52376c456e544179436b554f4d4c496d434d64536e55705744675a372b63583376545034544177586e59367879446b544f376961307a41795756442b554e79325563326579687a514e73303569782f4f6d326341482f41464130774e4d79763642326b57726a75424c5853317273373036536e5032304f374d50465473564f414177666464563136476a4f526e396d6e2f4c34717a53447449506e7a4767357832722b7379666c32663032545354794a716a694c505353327058373172576c6e466c38352b775349756c2f56666a2b6e366873543267497463584a713369364930736b6c706178394b6a6e76746d346b446154667175464c326577783931504136553446387a7241676d56665541366f5569776d4a726c72497845584f57704d387838446e7a6c386942735a5231683857346a4175642b4676745959526352415871464b45384e707655734f504a384d315052495a3233526370344c432b4f4f6450526177412f7742496e38517a71414b4149775a735a61554a55552f484f706931394255624f6e7a5355332f566e4841452f536c2f644530346d444763625437432b59424151643044424230565075475641306b67556145524f627878306a30674d5871654a71596c444f7a6b35764f69424f6d594842453269783449476c58526e496558684f514b584d45314836464c483132425945696c324b634d3632554c2b4965477270694239476a356a556c73634f7a35444b72554e6d4f743266335079686b5759413933376e4474644e756f7745497a76654878434a414a6363774f46516f2b4370504f713979713763326d5a34686b64364f4f476e4a71466c5046784c6f6e74624b304b47306e5245645337583961502b7568773845466967413737316b626a4a53547433633241735054725a4e796578437069506855444367477061366b686f715a4e37685330702f6135494b483456664c313765743737656b72736a4853712f6b52544f4f687a764541624e414b39506e49444d687562594c61475563367879303046317445717566366e4c6f4556456167585868575049452b437064507a664578305575564c4e79596e51434d794b71334d36486570535173647a71346c4437756942456b584a635366314e2f5667304f7156316a51615a54633641306469537a344f6c32683146585a2b4245773172575378634a663538625166735551653477446c654659386755686f746e49616d7158437651746664785a486d30383631774d72496d74624f7a6e3250755a374f732b4a70735631594f4a3373345942594261744a7a716871576d764f694a6832505a4a39795731434c495861426656596a35766755363579783650574e58385078394a62572f58482b71374b2b41613957764d4f6370536c4d354a577536455a537363757572326a3137463975414b6939744562754e4d786237584f2f58756d63706158433065514e49585277365a366c542f4a4e5247512b77314e3630436663354662304d7a785a624b2b79676661617a3967457776593553472f475539334c67494e4e46626d66395a786950597855797864555831526d7a714465714c4e725430786a663841586a35314b302f495848416653396e743655684d4752444f4449356c45304f314e686e5a787768424b6a746a6c492f546d476765384a6a426f36417153512b34674e7977544d2b4f376d774976664d777152355770507939736862786b304858747135513267362b7772695837493566717a2f702f534e772b795a526539522f396e6b68796948324756794f4c6678546731796e752b6f71563350716c38794b316537324f46464648782b354b316b6b506a63467771644f726753744e6136464b61376b736e3267524f70796162737a395371433373317148786a2f414a4c36717970586632585235396c4c5569594750794248353164616b703358636f2b796e4f2b4a4d313167307350725539506c547334654b467a6169497576345468352f6e777a6e55522b774939726b75724f48707951505a485238624230472f3748315544386a6b71496d4b443542634e48525033475147487541506131616636434f52466e306963566b777a492b7777484e6b717935324c544e395558725779697835392f5470376c687852712b5837364153414b5351694534446b382f477a414139625045584148556936766b4b6230554b566e76556a2f4146787a6e6f527a726e5777674a5032524a764874373367426d6d6f624564546f532f766a6c6b62455a784b5242506372686c32626b5030652f4e4b66315931746531685567657173667338486b784c434f374e3155756e4e4a474d706b7272346552313539347a75524248396f557a384e7965422b303373574b58542f3841427a442f414c67502f4e735245524749444b4c4b496a6d7436544573303252504c76746e2b736f4c367866794a41474a646e535643374770654e48474f346b5455536c71467970457258536663366a7642464838664c32657450595a35372b763754557157696c2f4d2f7678736f456572614b79507266767537502f414a74425039562b50366671416230506e6d59356e4b7953756c3359617957436971396a37435776397a3166596e53754d556337795832744163336e747036796a6a763673496c527a32624a564a397562795966594e6a47723476337a756a5648464f64624f665968546b726f4c6e5073435274536e717a657052676f48586a63365a78423979324a7a31583867685a5a644d555343696651764a2f6b513477306851466979594b56744d4a77636f766b4d7741503643306c5a526e5077694474457a36656b4450596661536c5255554b6b4453323772576535633750594d366a416639773063514852455169666c554e552b6f796632383756706a707662575856796b755a566d57355346687970596964464655344c4c76457661364d696f6361456e374972306a35434261636c77446339615235796437584a696a4630315249796c52384a6d576470476f573072314849344b457a4a442b53454f6d7876785448496b6e697253546f724d3352504d41524d4d36744230736370477864757677714e41562f4979696376614963532f692b556d616e6579443466364334625866542b494b4931436831575a50384158636879364647716b574a6e6b31596957763743536a714a346d31717941464e37556f2b4633674930522f636f637574344c722b62684f5379576146493177396f34637a575370634631484575577852435a733967646f39716b677341727772486b495a354c6e6f6f7a644e71564a536a6c726d71573566755450787a45307a3238746a45653576765a2b6c6978677a434b7a54582f702f326d7977716176706337566d575a3058767a5454334f6f764f7a524a6372336b7076414a736661425478587774352f6a39646a544c2f3243537757452b3866764f6d64325979647461716d452b6e53397965384230545038467675655451546b696b633771326c396e6f2b7a37784f57544f5554756762616955385639634b4263594b625050507a69506b6e703438574271694b7333354c492f71304c61796c722f6153365170397a6d6930696451436e722f6a4b43712b5448505662625a5a71414472567a39754e6e48334a4f376d62332f744e6f484d46666542515079674533584e53314947445862306173656177616c54334f2f696c394b6830664f7a707a416353715a7762437849547a3848514a505745726f6d696d63766677476d483942477870314f5a38526d70326732546e476156656a6e2f77414a3839636c7375676e507268577345736c534450734b48726f3367446d744d454b373079416464534e6b6957304537376132306f46655a52437056334b766153707a4c5264777330782b624c2f414e7a6d634e6e733578507a57542f4b3444437071446a624a7367616e5835316a2f30776c4e6e304b516e2b30534a555972476b7964624c6b6c524f6f654f2b564a3367795433306645445175664f7a69716d5161612b766a4a517236724f5074467653573576595677667179726f304d2b4e5a75436878306a5173553344575a677579696a5053484e4b354c5a56706f52444c50505a6a6c6478533130456c744e5559686d7a6f686859552f7645526166766d45306e4a4638675236354f686f497237524c6f31585a76517130475074524b694f5a5542476d3177784f495a33453530374b6a34507658384b6e4c4d44457035676a456a546f723170465a5963524f686b375a733531544e434a4e424d4e64493930765967556e38617a4267734a784e675451662b44523967464649514c4f7534712b616f715a677063366a4576426e4a634d595149754c4965335666534c4c6f657353597638417a574a4c533733306d434f7a524b63536e7855396f646d58352b68544932612f374d47697237436d3675746b357674374f54474d7072636144496b6d66482b33514e2b697167496d7a4f62716c396f72436e4666412b4f69634b393752314657767a63696f75767969416f36324c7a2f41504169575454645936636e4b427a5143654e5a3878436530316f326e79526a3961536f566f716b71595653733852672f6a30554c304c4c756c445a7862695251504747435363426c542f2b4648663933363851564f64554e466a4b46366f7359373666546f646a57665435466b35763139422f324a47636f6949766d7176374c4d61783644576e543853365866316f47766e3166573533516f6e545755382f6555525a52337a324d62736f5a4c4e416b4f66595334674f484e704169467968424d5a485349582f4143747a302b38556672352b44463546312b626d344e3637426c7a734c4a316b766652707373762b4f642b6a71646c49792b766e705a2b3153324f545335494166784c537a7162356e47636352504d71706c57564a625469387944473361726d504c48363063394445366a3150544c4734776e6f36794752505575447256556f683739716e6c4e4c76366a342f702b6f686671526c624b374552764e393874434b632b306671457651484d6e546b397a58352f7a534f6d4b5641796c38776b54686d626c66594d48506172725a693054306b524649647a3976746d6a4d484d6a59584a435574683439396d6864584e5332392b3242627a2b2b3555625a30493042536f4362705566634150624e304a46346f72563378326b3630386d7a4f7330625a34677468726d377a684552516d4d3565335558395664484d786168646f6d5876357867716d70616d76782f5439525a49554e34536e314b704f4c2b6174544b3454636b3848362f526c7a342b705859595433555a3953774f6330434449394a48614f556636317a596a4e2b72774868716d546e5579325439356d766e4c576f5a4c477a2b566e6a685a72725a534d2f4b6979536d706638526c63434457416e302b6e4f32633765384c4e6c4b2b564c477257755667797a396c6177732f4d4474477470465870424a4b747234395473624c446a533050726d6a3354734b74706a374847732b596430395a4f55445a744e463959443064572b4d5a797a3036664e374a6d3070717831374f4c576c762f6b487a38595154754a4a7136644e612b6d546f456a444e31424d6c543661667478554b6378597642734c34753366376e2f55436f31745a3371716c705654777a34725361763576684474526839354f35554d302b4a544e3834335a2f7743732f72345778322f417763332b516d6a7a3952774c7a574f57306757386e41546331644c44737037526f663042642f57766d5837333745623471477a33747a5a6143625743677a59327a582f586863372f4147736e31484166522f3244704d4e4943507641775852486c4962596a76574e7537714c732b704f6e2f71314144744d6e3159334d736e76643549542f73567a666f774656644b464d4c72552f73416d4e66305630716c6532463353704e35647936596f75766450516448586d38684c33663776636775675a4541674873655451636b674d7a795644526368306b35614859474d6d35556d79693679593172666639634b50593258516451512f416b754c4e337a44534b50326b4f2f3045672b61574f354d6b637176636869366d55676c70685174434751306341324a464b36467835374355484839396776346b766b61507657456d6f3759704e6c4a414d497a526f58326e7564516c777a416d6f2b46464c53763377756456386a44344876495a766b6437662f414b496947616f775966577a464c38716f6d6c42492b6d66366a6447694355332f626b6250784b566d52554e4e50362f78355a303366586166456744326e744b76315175356b3732546c3761366137656b5136726f6156764a62474531666552673461462f49482f4144474964482f412b6d416568793379323044483031384b61672f2b304d61767538566d41623365367a3432453335682f585237317a6970396f2f4b5a47483942446c35513976317a346b776870374456304170716a304866764d4b7a7159554b6b4c3433544a3047664d596f2f61564a466f41422b387942493353386d7571474d4f6d6a52346d6c64476979446c334f384470554456323552664d496b4c36316674514a37395133447a3948395950786978466c55444256524e386c646b62714f35302f77425278645464396370676f657434756f7a36754a467945636e622f6b522f346c2f5146567462715a356e3232316936715a57445253662b6835394d726172527a366e454953307a72597756416f783936657072414571705330426e56557a636f6f6c3456526e70556f3471536c4c6b30493654695966614d71456c2f493355477765674b356a4a4a6778512f3841584633412b4d716a37326843744868386f76744f5933726b566f794e365258357959593652594445756f5351694a7045686f2b5954614a66394d672b6f495550746e7a754d354b32325a4d2f5a34356b762f3756727258314b445065444e416c3538612f6166524977584238724654435a2f49474e646a3839434b5637485074364e4b3252776b6d573147626d4563376d49646d4c6a5a316c41797a796737323963514b675a547a396d52473046496b49734762726e4e6f617055705139714d45617a37364e78725a543041714947705679706a42654163704a4b3831337a475376694367445376674b47705435754f7a4f4c627864437957775964434945314d35775373563242675a647a4351507534494762576777456e37794253716347383764517162726d575a33432b6d414b586f6a54395a6c644e4769356e66706955507738576b2f6d63416674302f384167796756416e4a6d7174476155487a646a554c66696f2b505a65496e4c577867307a4853306661524f2b3073324a4a352f77446637376763522b786f505764634d6358625772464b6865307130784e6a7a796e375534366771356374664a35667162476b412f4f4264596b7a416a3446424c634350656761617533514f4a6c78453836595630796647367063386a464f6a4e5a4b73494e542f6e766632414131784158375534523642614d304f6c4a72514f786a2b66476979586a4b3246616b744945324d6e654c41556d6861556442484355314b7638415638585a6a486e414c766c6374636e736d5958744957424e4e6f766b464c614663644c575a74486b777a6e5439785138393348505a656a765446726e4d4d50774e6255784f356249416f30496d6d35764b4b5556703730796b6e73545a504b2b696c6e456d507657376e734c376e2b7454765a2b7636723035613959426d75647455444f48327a67793830415231646c5855765732796f683553746739663841456d57574d6a5853326350684168412b38344476367270393445722b7261716c636e585444565a566c3863426f7a3376415966716878724647384b4a654c4b673245506663426748434272542f5957352f4c376864736f633471644468554e50666d6a6344574c56304c554c684d347a65366f36763059786d48576538425a4d78532f616f7a42566733594d3762454e797a51576d5653356b31575545744f6330694a5a644a5648762b777368586e6d6b4234664638315148375a4b49416448647a59444958425857303475476c6e4c53486e76746f446f63377850784c5a6575356e42752b47697276733470774f346b4775346333653956487766543942384e596a32627158635779767175645364465a475471684a705249374b512f4a2f755950444c6c4a41427a4278357a7135513472444c724c614536434b4d653931484a62317a7075577a704c62556c777464525261584163796863386241583050306678696c4b6659347a41486d646a3153742b62354a754f5863706a7674385a4a325370636d66516442305055766f456458744e3353456d644a795a334f3656485764415052307533337831766b2b43477734577a57444e304f6346435a33504556447a6a4265736f366d6336394a6d354c763851415235304263633146304d384c46634a33596c614a71715773352b4b3770527a303645435572344a66484d796f506b4a6f75442b53656653464837352f514547553134776c4a304137786b7a4f6d5268436d454f56742f616e777258517872506563756d3055732f7742626a506e7a4f537854466464664d436f34374a326c42576f2b534f646f544b6c647973615443657967364a59766f2f73474f4a6b7961435068682b2b68515370302b34486630424f683838457a6554387a766a59356b533431366a4c2b5471584d36676d6959732f79687046452f774153796e364c756d344b56557149456b48325777476130625a7535396679305869343231414857706d664f7577585041576a385a73646e307634585158395a58786777524679566730304f56694550306b4d374c56396276516a645a625a4969546c6b6b36334f2b4e76574a5431635a6976342f6866304b56442f774147723367346d4b544c6857314d6a70475158503841727274567a336a30514b47675945494a354d637833786a37324563367032475856657a76777564664d494b5052306e7557706b5a6674315045304e43704b5a31432b45703138686a5358756c714c32384c394e502f546d2b354a76516b784a3038674e623969455931386b6e70347a747030485246786132466e49536932616c4471324439586c417a2f455972466e54542f32546358484e654468735a496257366178624b43484a416956492f556f57364f684967457641634970595973496e504c7254547a3742657778414463362b595642626c4261682b63303145477131764b4679324855686f35373163676e393346726f47695432386677566335375066376a724f5958416a556d6652716d76487462544a7a6d76486a4b7336534e785867446e7347786e59306a316a6b796c77444a765163446a6e2f59634a674f36582f4b5958504f6e724a493675644a6c7268486a5456565a7a343179776a4e4b3070795a307569596c423879426d3635735073344344484f74697163304b474e6a756a534347565355766f656b355a35612f7539736e435553596d67536438734267446837316a6e653933517a6f6c4f696a39412b5a772f4d73376d50524e644962386d4e6e4e4d786751767656664a59536531635931492f716c78386370667866304466626e6239794e44533469694c3354794e47626c69676d5175356e6171557173374d796a345962677351445072436e324638622f41486750394159353972516c343146457450366d7645756f4e6a556d65644439546b6e6244464c466c796a557335536f7568377741443636663276414146316a4c37686c70597571394a6b423058452b57645a52542f5956625854654e526b4b3073306b6e31583175416b7a6366755069506b42784f4f7a666e71673661365a54677157464d3532466f646a48343351316a56326963614b6d53396e426257743470644756372b76667a336d414449364553554969734f36384254574863737056494f4a5038664f74734e453045724f2f56645238686b78736f66496561526461503755546764646f5832783566436d73616b2f787159796e36524a57356679563566534e4a504a597545656b66593241305039737039594a4c4d477367773336464d3162465436514f6f76497158304f7a75494a447161707031644a4e47664730792f32724f6c526743536d4c76414e714842464e647876773942494f544e32374e75744e734e4f646d4a6f316d736c74615664556f39374448794d694a33502b5442667470396e544e5368446b443543754b4863386d335a71633350543974316d5941594f65396d66547147796d5a4d4b2f764b7363746d356f5a72686f57324c3541764e55774a4359484830446f522b4e745258656d454c6e55667947524e2f4e696e51654842442b586f4e394c744f396c4c4471534b4e49614639423077503539436e336a39675453574e2b314974366273343133626a47586e4e6f396f756a64312b6f5953747a505a7938475a77547a675658493358503648776d4b585275732b4c326d78436168324c5a7851353145764f7875755055716e356d71556c55576c706b316e58547363523645497975594b5739702b532f336b53552f564254544437444b73473351613362695457444d6f30306f6b637065644e626d7931676964346d71484e54564c717a382f592f704b54376437334e555031675678324d6d6e4e37495a337932556672527a7130314a4753337267462f77414d624a314d795930546a376d2f736a516e706d2f70756349414152313343646649324361386b4b73364769704d43306c47465254303956334d564c384b2f6e687546366530392b75662f73616e6b686731514877784d32452f354452546748317462757a616945304b6535546b5241336b43714c6b702b623479637366303868354e4d547267424a30434950315a7a7161625456566d75462f516a3542326a35425646656a50656d6676452f476a334778326735615a52482f414c2b783332462b75635351666f4558573172504775736373696170765a43584f796471573342533538684c64787561584b467a6b61654c346b766d36583763616267422f4a484d6d537961695377716e352f5663756c7975546148464d53736e7871493345566566396861566344727845776b6148792f762f4e77474650754835346361656961596531537162577571566c4f67746a7531564743424c3430726356442b6950796636584238726c4b2b5034674b3642716f642f72626f79357455313374366741586f33494b652f51686a48725032425a36705a3170543056764f646c672b316e4250677241627058784a686f7479726c5a352f4759702b38786250386a36545661467568532f6770633255686630574f436f4a33476e674a357a6f6b4548334c37764a6165764e6d6e484355352f4a594e415a57744337366433614a3432307a74597a4a4750513934644a71506d62396b4f45436853332b676b4166566d69304969716a75654b382b48687a4a5650787a334c63774b75544a59704b5953684c34715872495772444c5a4a502b2f6c6d622f514a36654951497264386a564e636f59486e5a30666e31674d536f4631584c586639555866596e6551414832424e4b50655057386577774e63676c5241744c323854395472713658793646624450367564326176744d7a5142676a2f6b6d686a442b73306e61765241506c6f412b675934766e5a5a4f636e7236335038415975554641744e66654e556e516e367856394239397843564652734a5466734b4f7876754a584841514a4d2b4876587a3235716a67365359414867664c78697055465a4a6c4f6c315a334374334264473456494e674f39672f77435a4837772f6f4d736b755a394e50736d76714941475566704b732f3170574b69344b573058544b3550312f586d66563859546e7559776d74455261774e524d374d67716e76304b496f6e79357a563953454c752f35515a614e435a4652305370537a512b363735472b3150322b64565a7a355439744130425048732b596b50767435326c6d6b31672f79724773747a3157614f6b7131756a306445565a6b38417a5551304c307365656a34413458576d626a58333465316a3242467163396b66466446686e6e324966584e5a6b5a394b724e542b50645a5377696c555079554f466457734c5673343070322f4438417a416d67364157726a73372b346148332f55363042784b4d6a36364d2f4b6652506e775755477a3543716a686e37476c43324a715a39637665342b47726f734d4848782f61696870342f4f554d556d4d57664f756c4d4f75314c45526f7738393132646c6768303769397648314d63504654476b6b75424c666c4d50714d2f516b70476d784e5038616f6373497157744a5a4c323172543172676377674b7775554c45413478726c55476167366b54506e7464664d4b7763313932476b2b7a4a664852715452387a33325332614d307038532b43665362797a327970575677687a37446a742f6359724a765569644941572b72543835574d704647677433372b37586a75432f56696e685334356e56564630744c424364617746773842335a347a6d486e2f595650304d757634684e6f76646f4e6648456d697032555254794e687136535a496e2f42644f74515435377266593979757062536148653663476641304d354c7074475a33467a366b55326e394e636e61474a694f756e57683635384731456d46513643666831457a336e317145676e39636d417155734c6f496a5870684731514b6f7648684353773071677646394b6e796a5662574f706e794b75636131334d61465274563038333752716b66556d55776a6d317152646f376c61476571754b63336b767666486147303756567357655243756d70492f796d6c324e65657067702b4c35666531535257414c39345237506c455471666e77364d54622b3944535745595056585846786e4a6576726a45525a593530376a664f33504d364232784344324a59675142396e533564413243513970306549545a6f4c613445706651634b6f6f65547754724d6f3666617568626a4c5041476b5948584d31667949473350352f6353796c464d6c71437a5632386e75674450566f665050575150614c7063794256624e5336525147345a7866316a426d446e3032474e524130777144556358313669646b354d35566371437a32546a4f70666a2f41467566642b2f73495a72522f47766935366a4d71352b4a65367a35614b464f363663516361695654616c384374762b512b496e6e5243717a2f6641317133546f374a6e3847756b71694e6141663841474e42754f5a76792f77434642325568572f6e4d4d4a313533567a702b55456e326d426e416c7053314d65546266504e636e367870594658315879636d5741306538324748414b64766255375543764f725573722b5238396c31456d506e376e52766562415767644333545575757a48364f6a4c30506a4a3667536f4b656e384a5238574969375954574c346c5079366c4d35664b684a59307278515539637372323538332f417232713261456676463377694b577164545439774165485850587a69515370707030382f2b4a464f7071634266484b3032453561313938655863354b7a5579696a517766746c51434361636769364d34574735787a5554424a4a7161576c433149364f626d7159785a565879474f685a5057633352725573436e554c46446b734175674c6148542f4a2f774131474174654154795050732f3862766a3557423030483357452b41656b536e353143584943413553377955616c6c696d7369514e46507a41486141344130424d5469596b56746c723235763031456e30384f7250686a56383170634a4d304c6856394d3870746e4a3436565179366e5571506e32785a3837655543432f747276626239525a486a76615779556375706f69667933546647546e5a35315479575a756c71343461617130766470467957544e2f7742626854374154386e316631386275356735713058466a614c614e5a754d504d70466164476c446446655a6d326b34517036463666724c6557684f7852796a38337a4f70486c43327a456656545872487a4772667471422b624c7974314139797171667255336258733461675831592f783734576a444f334e57356a48472b597a702b6636632f774158755a7a635053366a54597a58306b56353645616558445a7336455463396a6b365250763165614456584a573646574b37724954744b6b693770416d4b6e336c784e4e65465938684d736e6c5a6f4969727a4352456f485a624a473350376c386b73756c7434724e75637a6a6956597a444233654c6e4272676d6e70516c71707255574567794a34706e647a6f3456634a7a436c59507972475a655a7946335a6f394d6f4e4271304c445464596c505343654d614b4b5a307059446836654e2b314973617770394c456f2b5238364c5963694c7474306a503571446e4370594b666a4b6c7a673049616c787a7434505830683869574d476674796a637976474a3834464c5236575455705632686c7a546a43692b66586157526f6c6e386d49693137466d69614576752b36696955586c54534a6d46696f37485475722f414e7651445452644b3542646a6e64624d70442b4e7934422b79452f314c6d66637a7062616b667a44426e73587a34353176436a2f7075426349383436626e45316b63722b536b6c687933794b63704e754a6a784b666b3830327a3659335a666239416f2b546639722b4e4a7652494643704d62696d50727a70442b676e57616a52725a506b50647977736b697a5a6b4a6b757171374d39626b7a385757735369575049784a582f41416676427331497548326a37564248664d4f4d3570594d774e75646d36326e663971474c542b6776724b57545473397a41467a376f536f3751395a635a3843507030765a6136674442774c52366e4d3849744b7275654e326a6e69627037597338482f4148453665646c6a5870614f725231636565456b65665530412f596d6d5664426b4b51536639424e5a6c4e6a585a6a647a34357452702b7a51597362457a684631684c373948725a56702b6d6e44544c4f4d2f503149317333776731314a2b38415a397a6c354643644570375a36707075557347716c55686e3131365a666f76544e387455384a7736555a556345337a7a4861784444567a337563446b71456f684e6b564b4974793930796234714a62755131644d4c6b38707a3454583336612b464f6c3742732f345830484f4d682f356f2f6f476c4b614756515755554d3751312f46425058596f6f315a30646c545a673454582f44395870537571476a6f4451425a6f43735257585353424e6b7838716b736b75624773644254644256793536414a744d79317a6e654b5a576e6d6c3277666b542b7853766e4c5065532f326b2f6b445a7158727553534b374a2f787a6b697673676c4c35496c55646e4f4c6754483859482f415068524b5542414a6363532f5973616659515056795663486e5330566a4973426e43487243365851584438685468314b57414b772f334d364a67494f2f32422f694469363043616d564c7272764230625a36546e7a2b385775476f4631754d61484e4434702b636f6c396f6b77304b5a53373336584436775062377844396e546f4b676b387143754b64352f5236437167736e4b723352664a77766166575541493164515a394435576b785a4a2b75494f5748354d464d7772544e3064486d684f414c5735544a5739625569705832474e596c546632794f64665141693651694243516a2f795238345a797873527a726b54584c693650734473695643786c6d6570633636457a6b736579676b52396e763841637a3266732f6a5350764a336567597a4f6d3632594a425a32527a554b6e64396e35327a6b7568337753505550324475397a50734c5742434b782b455038326f59412f30483239453365577a2b772b797042633543557658746c4a4568664d6e6c4a4c2f414779356e315a4341676359455563776672692f6d39674e2b56766b616c362b71553336314a642f54454652786a5968736d2b62345038414a59642b456a567744393373436e706837774e595a2b3738777a376d412b7635314a436a704f6a6f57584b6338614a3658302f494344692b626f3538765870456539374f34307463786841393378462f57673136386a32554c2f6e454431537846447539342b75503951727061547964593861356745576661494f385953786d6e6a58525a37416d2f774277552f493148463131636537466b2f587a4253334f544c6f743435727446593572486a5677714479553046455533442b334f38506d5578774438774638764c2b43347471304b5673464d38626e57714f702b59714676337556523173596c5273716f39744650374c6766346346676351333264416d354261525a7339772f774161374d637433563063304965792b353561542b584b4f6368483459784661576d61337559426b54672f594e6345473875566f4c30473653434f774a714f5743397438664f4a6c694b424c303656757769385830582f4146346548333547714c356c435a393441444d6a6a773851796465465763566970766752774a6f523672646f73505337473670452f624a67734a7061557a467a476f72784e33776d6338414e614a4751575a34716d7030712b614c66666530744148496d7a656969304d3954706d537a2f444f68396c4255564a587876656d4e5050384132673174503154664952445772375a565349664d74306c39564a46724d6c485064526e6b505176724279566d754e662f4145774a6a76314746477839723431653846754133734a6f58343251544a6366486347524c326f564b4b745470594f6932343261547638414669367673416e7641346b2f3433706d6b51557744434f3439656a32425531663050713138596365725435447969712f5a2b4a67304c3230647349485438584c642b754d5878787a77554677524a3341634172656161636136697a717235586246742b613269743946746b47637564314b716e734e54536e375050554e5057557a4250392f7743307a3267706952434b354454793547456230616b37744b7a4d477a37505a39426b41387a3962462b7478576659593066443866552f483268786d6b556e53434a53574d326e4d354535794e473070322f49476d76682f5473376e764d34447a2f63765072686f6c734a622f384175556648594b76634267587a5639705343327070474258576263634f6a64646c477257704c514353644b38347331695137485a7553707a395a39445035716872732b66765a564630336638414666665a4b4169576b66677439425a4f5a5832562b66336f384437416b777333794273713568565a775a5a4a337279307a4b6438736b3976425579527743314c524a502f414c576c6d42472f506f74316154706b307075492b59614e61714368307475676d4a6d58524d3556554b37307a3958324e6b7168583744494352396c58364832327274343768454d4a5273576842493550466c314d574932564f6c544a382f75545a6e2f414d686d36484f7a355973676c4d4434396c565048415271486864582f5674547545686c596a5174753739436759357068666e79336a70305a756a4565696e716b5645796747753969306b766773744f666f75366c7644542f70566d43306d7434374a4d4a38385862526e2b2b7047516d757543724b36757934644f5554355659755a63357931434b467a38367667425770786334496e2f41464f4a384a45646e6465334b67546e6e6c355456664932424a6274444b62644e4c343948504e6741333931554a31692f77437a776555717043776e64342b38432b474145386876376d2b4a697655626e5a3154634f71475256544749664d583872514e464275596c4b6e665953354a714235635771647a327456514666417074584f376c39664d4351307062636f64466e467773557969692b47374a48344b373456772b5233613354573466355a6e6451592b386632302f685a7348336a616c5368644e6233666d4a42576c7a797a6b4c3543706c79594d324f3266496c7237766f73594d42324563316e2f542f534a59784c345975642f634336796f2b626e732f724d454d35434a703442616259697269325a6f4c4d6c48334a6b4c7a6e3873376f646673554a3670796671734b6b44457032663570374e784456384d45706174486f4d523162613356437a43556d7971337168712b71436f74446a313474415270577a2b5542624234727338395077693579684166364164736e393430492b33566a7a7436353058633564356e59674830616257714f444e377965506d745a38724f305466362f6f646553676e65726b656c5936326b59625763706373394547596c37426c4e65646f654e2f493845756e6f58784c644366516e376e7a305032467a6f6d6f4236665943653079506d54504f5846652f64392f2b51797852663435536b49477068744b53464570305661457a48785a326a2f4952756768524c39776364455a4d2b554b4a5439726e444f544c46776b66394c63324e7648416747786b724f71622b4f305a5a546c644d6e544b7139637644546c50793649305758535650436a782b74732b70796a674e7635443833784734394c345a613762362b496e6f466656684f4e5739766b332b4f2b2b78564b646d5663566944566f30574c793642746f6e6f415752314a527a6a59667275436e34513737534776377a3134445866446f58703646714a39436844386364544b2f77444b4e446b624b73626278416c697a4c4e545a536d667455366674437066766f4b6e53525a6252533561706c664c6f4f5158715046545a702b4b5973444a5739672f49704f67755763465a466e5635526a57544e2b74525139477961722b566f3436356f664a7a5342514f4a7170756c306166663841776a647a3071623176727035562f497a2f557766465047617332676d38484656315769706d397051387a6264517a75644c724c7a5657726b652f4f2f516b383366635537374750776658394244504637592f492f7a4b696268686d364a356e692f6d75696c47612f536e5a4c725856354f564d2f6573644b633147536b4e4b6a3766766d62536e3570374a4f4e6450662f567034616648313369316f7648354562576a556b3664484b3166504d794f7a6d74707338634a383874632b527035575834314b6c37703856446f3038352f697234506858582f6b717864306d5974667a2b424c664a644371666b6572786d596e535947562f7a647454575666636e7352703957584278564f6e594b654c5453546c5934546832746258455956746c35314a65742f6a73476a43696533786a444b396656325a474e5a55644f716e2f4f4766505a312b6534325a6f724d4b4f755535637a52516b59796751594a2b73756a6f36336b2b61334c61687575307173374e304e654c496d7166753730474e58394244784b552f7130654f3355523865672f7332732b4a306b6e5142774d43302f51664978396a37506b34386b4454355866546c2f4f4f4b6d697046613972655673323172584f796a4e6c63353378687a6b5830472b2f3679516f6b614c34744d34346352644e353574647347674845396c706d7a4e416f6e58416c4855644a4e4d727031367a6c7a6c37763949697155512b6176366c4168496962717a6b6666343955386c4c394b6a4d3552335a74795a45716b7a2b6379483631597954335a71355a303832737370526f734a5a2f5934496531494b4c3641474150456e77353062437830594f71696f6975596574703179412b31425a79726c7a6444716f34786f71697065442f6d706a5343705856703466524b4f485a386863486763644d2f6a31655439695453524975424c324e67703473636e6d544d6c5a723632647751752b7243797270394d42582f704e377659314b335a58375567307958526444666f2f74784e616f577444526c314e504f3136394b616c2f77424e6d584c2f414b6b324b306c756e634e69714f38376d357176732b386c706455464d525457787a36634b5530554a477a6e697146796145454e2f4b7569657651656545706a6d36414f6a75452f6148534977645237424b6d45314a3463504157336d79746659686c783258766f5265386c53352f377951566f5a2b59356b62787253726c697a575250366372503137334e2f58576639594441647636634b712f6861567a46384c4e68526d566838794a73337338656e636d74545936564a54324e4b773666503870774f59362b6d34654151442b2f63694f744f63466d596c6c79365531564153703030705951744b544e62705064705a70444554497737785a4e43537039487972634336417437413746335552414641735555674f6939767a50584b4f724a3871785a7759544d5870477a374443496c4778744f6341476e36334f45426679474775696a59736d36726a4b703371475750326665346445615a74566a666749572f5835564c385a4c506e2b4a2b332f77427038456b526d4d7a4866414234537331506b636976635561436c694666486e616e5635465131786968616e31475a434b6638797353422f757159566c374350682f31496b4930664c3555617165556d766c76567235473149332f4a50375574506a44547a746b712f727973625770776a50396e394741467a334c43576271334e30616f4a3254667136567274526e5646456363784a75356253706956394e6a50316f514b416c6357355049422f58734d32696461646d4244344b754b75347a767559326d664a52524c37754f2f6a6f6a514a796b734b5744394f6438354c5437534d666153655547594e583733574557382b354f47396d53766d6b4c4b376a556a316e4b74446a4a65586e39637549653465686f6b783261545a774a6f64617a324576357a483558525870487942367a75724b755a7a55497359696357727a3233426f675865592f48564f6f7543726e3166396e30654773756c51336c762b62657a4c374d6368774f696175356e472f614e2f76464a563666456e5148413970796a4e5058637a67736536696a72545839706a5354375539452b43494257666b4c34616435394c4a61556e58685433733533696454714b704a632b593733736151632b31524463744d67414139642f494570346649345a2f364137342b32642f3251307a7a6d4b43694b2f3256527274553148784666796654477a495738624f5470717234763470432f774132766148792f46533447646b6e7a5268566c5363792b782b3935735558567772662f4736464e64494e7452796e617357796674414b49536433744d354e4b596d4e346f4b3551485565556334375a496f4a357563722b3646457a2f494b7a6958503770337361545670356f56564e71496c2b354d6348766c53762f56576f4d2f556154746d6e6e4c6b396a4d2f534e5654716c736e6f586e4e73545244715170733976436c302b35704c663841583473322f704a665846786d485542566e6b55614839376c386c726a4d7554426f756d6531705648514b636c30726451467a72597a6d355a6e2f4b4d687154564e4237543473356d652b314f31413263384675715268654e667564727166704750486b6d6a5a57743735584a5154616d734a46437a2b474e31506545483637507a35414b763367645255486e775175336e635139325a4f655a6f4e6c6f694b705a45366c79654a62524b4171444e71624a6d6c333579537269564f557035394e4d3751526e4839514a2b6e734e72792b7955546f536a4c6f343369706f507167476d6c3264714c656e6b796c51796a515467463433526c3770685637477241336630477a3253485a66475933616a4d364c3745626549654a66765265796d645a6a4862786c4a645a4b57703866425748666544557a414c6632336e754368764f633736766b566e65723036352f7742324c65594946647663366774686647394f53466c4754474d7961506d5a333266384a6231786535725a6e6f6d63634a3453497a44504650652f4650684d3456386a2b54326e72615655564161624d792f68386a587a376e764b6967444234476c71394b5a6a6b424f6b775147332f6164524a5a396e4f4a6b3557484a3131504453577635703130516f52704e6973574c4570644b7a2f4c6741706833696f66595832506546432b656b3030675650756e7348527153347673305679526f633062525a63452b66337165396356485234422f5a576f77544d546e47665a777778777a65364759514a6575454a314771584835774b577876616d5753546a4961672b5050355056516d59362b653153666541455848636d554673656f49777478354845745648656a58466d305862583356586a5077694f6b736f566a39373548526b6f3274644e78354a456247684e3332414776486830736d6635724e584e4e575236476a57395456694e55464e6277344c73364c39706366326857744c682f7741754f654469354632635032414249667976716f4c307872745244456d78544a6b4e4c5230546c3750504255737a6e54666e3066595450305a57642b6276736d64334e6c2b554668316868616e6167592b5731547a2f41493951537156493148385a34354f784e536832496876305a567236467356724346695359553876486b796b6c572f59436a3369423937466573664d58523937346645706441577a31332f7865667874315470422b576e39547a5458412b57487650764c4a395273364365744652763730444554453446666c5a31734f4a3342632b46614b584b556d6a36637376613545706373426e7373464a4f4b37512f61467353526d4163616b7a46716665452f38665a4c4c347a705378636d564a6e72745970526166616f79676b2f6b39473669627371783679346b38543166367059444730697a2f5551476e676178656e35647a2f5348315532464e576a516d32664b4962654b386654394a36636a4e596c51362b486944336a4b513939772f43782f734473412f70494f4f36662b72544f36612f516255656e5564306e7074343268646363633650487339464470556c6c54506f61424e597855503841477a6c6d70436f4a2b30794a366b4a2f5966317745412b454d703764666c2f636177666b4d30355534776764643943647a424b474a5075442f746674792b76616f474576506a584f79644c4f73706d7a756657416b75633259302f317454725079424831325a5a7a773778644a726c3551765779356b686f7130633662525450755a55625a7a646752702b7256545a525549383730414c2f414c4175347466762b35464f3141324c517470515574565239694e636955314e4e544c4766464f52567569453633642b73786a4e4177464c42614878574a4d5866584d5842554a664948646e7642456544336a54467430656d6d616c4e41734d4f51777a304543552f576c6836747646634944427766556e53416749556c356c5071752f495877787345694c59543866315838625a5066396561477473727239564671566a7958595a39455670466f6b30414432716e7034796e6f54582f4c6a352f6f41767275796a2f7a483062475331496454354656517968504f675254675565667873792b564a6f536c507875596f4353636a5851635651536c415830375636582b58397864766c2f483352544e553630354b4b784b306676484d685876777a66664c534b59306f736e4451464c503077374f564a4e715455786e2b6e7442477645657656736651302b5355577a74696e7a3561493770683657674350322b546a724f386e6f4571714a486d4330392b624e6e44332f41434c4d43433364783632665858794a46445673427a4b6b6e6f736e4a6561327951377247543242376d4d5a4f3133797141475042424152632b31385156703259414832497236676f3138593634435431644e466b765a324d5a597a6a534c763268636c64552f313167502b64484a7631304671575076734a5777454e7a624d30496b797970684b6a714f494b744c6c4d696c364e533761466c776143712f374366384133415077385548506b4e702f3046534870393554585047644651394e6b47706f79553933314b645570314665696d52676b4e4244504b3561756b53334d42435841783346664549547a77767658667a5150626e6a64623872762b557732473333325774352b716d73596c6656554c576f6c45735068447244634b756b496d447a327230454a5339476154682b506948485248705a617859776e4f6e4b52756c3375676e6f70576d66684737336651554578494432482f56666a2b6e366763714944315a5a704f523836537a516359457669797a7a356f70627736477973554c75575655664148734258766a345947626937304c43555a43463831766c61515479306c66796a3661562f4a6132715664354a4267554f5a526f4c534537656341546f46316c446d2b332f6c785676325a487a5466797330725639716d35714a2f74534c6e376e4c65372b4f304f393757796b583834354a44374a656334782f384132523537796f48397255374d414b6d672b36714b6d3079636c6957376a4b56716b64774a58545a544647763559574e525a3936646e743666666534514a77482f414c66654e68387a314f585544516e4c694758722b564b6b533868644f792b376f64745332736c794d537a5075623756382b46584c47725577552b773068495a5546314833416f715054464b32676765304d414a35486c39677549644477356146336659462f54343436512b782f37434f6634514855486f6e6d4e4f73727075646338434975643472354b4a32636b51365251794855495866374a693553723963733578764f474851355775333451476c714b486f364a3972614c5258463869512b73417135314938706967476744482f5756776b514d644f4a3047784e5853396e41734d4d696930724166304e46593049496663497a4d554a544f6e4162556d46692b444b4a4637657253326336326e374844396f2b436b4a44514546437a566163724f797a7839574d704a57796673714b7558665774347450772f7157676a64306e6a5166732f52434a4d4950364276424d584446625032304246536c31792b39503156516d7365756b6f694569636c4266432f6a516f6e36414f4e532b664d6f7a574459557872346a7456584334397a535032704637616d7562516c6c77783250575653302f50515050755470624f6e35754e6457732f6177432f5778496e6c5553716a64534858636f53355838787a36744e6c544b7a494a324b6a4962687a6539467233476a334a3553414f4d756d424f5661784e73706c2f67774854384571416f54726f4a6452686d6350514a6e43576459314b34726a79702b616b2f6637476e2f774446383947664b6d5342382b71716c3677755534436e6f4270496d43707a326d3432457870534f3577506d39334f6341704159494e4c2b71384c52354261735a71712b384d516b6f44744456704a496449526537516c507155326673553641533571564c367a337334314a715a51705a5467317772486b492b317a53456d3144796f6d574771646c7235783972365a693541796e74356446303873374b4f63465a476f447354372b664c37576859466757706958764833446144523973504b5335336739557830724936544868305367582b6b66627a33674b65724a48374d46674374614a787a5a6a3641494b6d61746b30504554737545714349512f625872424c434e633563347a6e4450682b372f414163664f653048302b704e4f4a6d723557696678314f67347776767242556453715370414a792f784d702f61427557663652656675446c5941415a2b3738782b70462f31784a4536703370477875645171526e7a76544f796462704145312b7a35674b7079303939767450374b6853775457585330416962334c565031456f632b342b6d62517162473337456a513047452b71353144707530536e386d6758566441514e59644250776d5938454635714b4645583170786134354261677568446c3676587457693462476b61524346664b467336787042386175484d4879645351714d506c6978565144705732554d644e636d414f672b6b3535784778776c4247335341366d644669304b2f59496161557334592b77477a43427a72552f65544e4744614770736f6b354e4e6e567847784f696164426a4656446e38637765464b2f6a65712f3173424b5355755a50753967597647786e596553706e486f6a7048524b626c304b6e582f73664c5456786b2f4754324856477a692b395970547668554476654b765a3350396e36794235513073744e726a715450516a69364a663472396855797048325a466b396167625a38596b536d38365458652f77422f2b39667561413641547738316a776c37505163387566325a68554569774b4b4e4c746e737a6e566a2f77415455636f5851444436333364503968772b2f414163727a2b58334453615756644b656672367730305a6673366d6f30736f544238626b724f39524d4f7a33564a7145557159376a474a6d4d442b4d4b44565953546c73746e463959775864746a346a4f46414b5433395569367549674358534b6950535852387967373869684e767655616836537672677762575254316d517262336f494c71766b2b326c4c343634374a517543747a4264635656307334642b554765354a6d4a6930306c2f514c4e72543931727454515337484e6b59766a6c63565247526a386b6b362f72334e4646542f4149522b542f6a396d5354396e753649482f5564334c67527651564f546a6e363672375075564f58556357556a56613679654e41506d3631326537356f316c3153675630773979675734766c4873685250312f34324a38356b682f4271536971437a513231393476512f6971754b3555746276647972342b41546e71562b343131442f375069594568536d394d494253494b3976477171723043557453766e674a532b47766953376d6a3269796633434244387970752f4359416f2f6a41594436757352534b2b4438334f646e63456c6453516e75735a543855713230635853376b6b76794748426e4e524a2b51506c706e3658416a57357a5253716e335878357a5a6554755039794a557676655652314e556d656566713356543666312f6478494d2f783969357a3448366345526a7544444a524a5649587a4778637647646c676538753852646f6b63396d6b6a765a4b702b61784d2b71795a6a445a5038674a397a666b416c4d464f653453655a775651386453444753646578374c4a316434415465786d6a2f77426334352b6f4554644f76684c446f6e2b6a6152745778584b436b4d5a32776a5857732b304c436b5a54425031574173562b2b7879624736435673565550777239365743494777365134306530683779415a6f57444c6d3942554c6c5672344a68714849705857504f456f486530507272586f54735a38774158544e79576531546c657a34754d41666735776f502f43466c54565a345475696b5462337136394b306d4c7430417457766a5067565255514f3434466e795a4948304572456636437862773744597442385a5968644d79315a304b5a7941795846395a4375462b314d483256635437766a3449636438582b6643364a4345574e6466656861466149436576346e36644f6a686d364d6d545752616d69644e6767496b583178643371466d544738494675514866384155454d314b426e3066676265794b6d614e49366a33635770304575336d66625a6b77386d594a6b774b45703474334f6b3550776761683737415730442f6a39626576696839314939324f5432726d70704374475a5344383268616c4d63346c694a556533744377417837325033523854376b6a2f4145466a3954576d61524b2b7a787459503036484e567066755450354a59387849464c2f41482f6f4b6f653836552f4f4e4f6c667a475a69773068483934446456474c6759626a6b744a33544474527856636578386a47624244785536565554314f4d3142332f504b5958446d654875494b6d303371437550322b2b4f6e50517464344851664267525a494b4b544343643879394352502b7552502f4143445153344768514c6a5766414b3458517031364b39477651626c463049455361625558554b4b6f663542744a766b6e2f53506e576c6e4f78644368585065424b454f4b4c364c35433634757975593938772f41344a6a624e583375654444476d637577333538306a4f746e6f4b46692f6378776d50754e6f444d723263352f514a556f6e4e4858572f56706d57774b477a554e7037442f477865326f7150696e39764b46725734553954385a682b37307045312b3368694557765956737235446e7171524d6d4947474b5576796e38302b726f4b644d393775646c6e6e4c3457474c444253324c70454f673369786f64504956566e456e517475696456467a6c446f5a6971673632684270616a4a6747535a4b53597050745a50436b75646f4e4e4130673336644330414839424b4d425050343932673539705347707433326146634b6c584665324f646d723266356a75306b704a6e7641456773652b34674e52764d784131385537717865722f414c4c3576754b592f717536557969364e54576f58504e37692b784f79796876557345666d41772b5034776e457743494f79307153447443525559636a545a53793676346f6f3863365a5330334a564a4f52324a706e4967554e50412b566b427049674243552f30413354423836394c514b52426f7945544f5763676f7064554b71597973736b5668706e3455663841486a443159317244767842474c6661414a3977434539476e71443478694c4f7a3264713149596b4145596d323554622b4c626d7364516d6b3245776b68394d4447386a377948397050674d4f6f6450537435675653474a756866626251326c7335526a4c517968464e31524d544f476b6e6136582b74583746497049676d4e432f774367775241763248535065374a5a714b6b38544b705961696e7261544f746930532b424f626f30574b684f5a334574372f6f413056774561316442394e4b3557664b695a69334a4b6a713839733864643078306f6d4c553044717a48396455346674304549476c66764151656f6c2f7743307674674e31394266457075664c6d79556e6e72572b344b3356426d51367475664e477974382f7846567051787954395439517a34306154556b655563567a6f44483263486c6338366d6f726b6e547957425a6e4a593173747674573169744c3556542f4d316b62656c5670712b56514f4836356f50373542483055415a2f626e3779626c4361496f346d6f7a544c556747497171704d336d5a4f7834366c684f59366b424c327975426b2f50686f3977414439643970335443656255647a7054397a716a7a51475279565556354d314c4e4153373862636e5173656236314870414b5979446e51416d76424456444e305677345a4a656e37505946574b6c532f4e447958494b6430376e325575304148575a7957724a70543852556a52596c524552516a555839424637383672667a36624e5230737935755549504c7273744332704d306e785539697a536b5536654d616f376e4a5366506e5775616d5839566d644a48624f32303765676a77487a6c73576d717a766a7855464f764b756e7a39564f63744938794d783174497659483867746c4654454e4e7a476458796c555a6f506e44357a594f31384e75563151726c6f70334d2b7546724d696636366566636d7179646e4e486c624f457956566a70654b4a55365a516534672f77425a2f556d4c6e4176792f543679646234326c2b364b4834523057504e31362f6d7a4c744f764f586e3833316f70634a5a63626b6f61672f7373734f4e59733749432b616166654b6d625574647455596864665a444e7471433563654c792f4d5456446e3430315038414a56614849667173736a6c72523775454a7073544e4f5a756b58397a51544877744d38476a324f6839476876534c664866794b724d4f79474d3173306c5938474c462b79754c354f435a4358784e5877485554302b78546764572f5a6b5637366d724f76566f4c65754e614a394e6678346e614271436973382f4a7a2b364e75636947704e554c6168316c763556414b5755705678492f6f7a4f64547377415050484330504933566f64432f506a7537463945356a534f724f375030585a375a4e59536546737a50472f494763467153576c782f5a6361644677536d566864306446543872655a58436d615053797070776c577a4a6836476448526c3446467450636b4c2f7744306b56736c366b6b6b61715a707566344d6f636b32425a793955657a784452304157504d616936356367715a54544a6a58556a6f3571462f39526153757148736f2f77434b5a585448574d37756d595563345a704f494f766d3973566b5a6e663148334b5973366f364a367035565454647276556e4a494257734f544b482f4f6346646a496c794b6b34474a5436456349354c354d324c377455456a707872702b4f64395a7a393267466b71364f45734573713969716d476666734a58314832412b61674a684b702b6d456c4d67324d4a744347586b7837744c5537496f32546363626e346252723047616a70656f3968394233446142717034497363436d692f5369716d5555576b6564596861487a713867307433515149513563616d4f7a7a4a334a534b6f577a755a52332f64394d31734541617a70416f2f6e4f63476c6a617375556b7a50596979665666423974556e7a6f6930396c564c79636c796270574d6f49452b3538514c6639636d4f442b6765716935696846596b7444737167795864783273586f7635655053766a6c2b6f4b656372495961692b6f77486b6c626a5354322b344f5530416570706942636a43306e5a2f487970686a4f7a6f5070372b2b4f3643526652553532676b466c43686c445566496b445a4b6d5a4a6d366638416f4a7a326c43444d464d376e6a31514d62564e66396851646e54396868644e656f306b7a736454386a544e36766e4777506e424e6e73486750493050583350597545614a655455523534554450734e6a54495554586144483954786f7a2f61646c6a7a6748776e547a414a722b5932556b45706c36504b45364656304f617a717541715833533038556b44573842396f365263573553574d367152537741576d41645068394e4a684d49454f557441384734364a37756f72516133782f6161394a314b59537566706e3866396f52363433635948747365482b706e4253516655352f3763365a514553496539686e65746f306b6c37506d642b6d4b58487832665a3979782f4135313834683938464e4b5968493341776d536430643943417a337459306c7a365061464363777051495a49766e4b66676f532b706c444f7439697a3933765743523434534f764373655144632b30344b356d30525344516c56553758686442547954356332666f6638415a73347879564f694c344743345a2f694476544c684536517241653051672f53757a773744302b365574533561786572324c4869436d704a334f704965664838707a6e54776f3071664b6b6d664a5051474858766132574274335449616c32795655384d3067555a3642564a7454513446305565336c5358723650535535774735536e4e634b676a3663305068716c7255394a794144456337385a6f436a37647778357a6a736e3463387133547656383645386f4d324f53707638416f4259686e5746504b506b396a53485335374830767137524c45452f592f307868794a76483238705753415362442b565a3043395a6e31485036427a6e3830524b6c4d49316b5756707a797236717459753441314a4f595a56514a66396956456f2f384176506c42454636654a5953693467776166456862592b79397a37697057344f5142464c386e4c517234464b57557953696c4d3536585932414b6d4353322b347050656e723542444e65697161565634466d543864786f38783267484630614375574d44396d4171554e79474b6a6c3463766565785238393336514b3456686a5134335a3468524b492f64537542466832636c586e5761512f463278707a636c59373433446e7150696d4e55377148662f414544446f7644394d7169765642367a7a38707257397470564839316a763266782f432b6c5576784e6a53394e303671564d3737702f754d2f77425170464a4d416f496144703077367a6d6e48535249367a726b3235303637525a464c66305039696e4f5a523964367759624434644b6e462f3168364b512f4d6e6f74446c61564b6f6b597045777559377458457970656d6e6c356342622b7a4f51497244394e6f63306a34386c642b4c354a6a41684c4d76734c365a65546c4b693768756b624a79715871494f5a72536f51756b6f2b694b356b7359544f7439356a536f43396838636f51634f7a49707035783554505678613753494c456a55592b39722f414a7141587761426f5968776a7a32743537442f414837684a5a7363646746324b456854527a55745242507130785a37306a475a5754566e2f7741394f72373374456635515864582b316e38524f48392f77436169414163773146513669496f4f2f4e4b386246556d4844584b7a36386f7a4c36337243643859304c4a4a69594b574c542f77417a49763841335676325a4471527a6e5a63314b6954326f65736e353372572f4a38667773486e78544b6f486d4b4c682b476a3938483541457954332f4a682f7177536e5754596255716e5646336941367869576c325833644667496f414f772f75355a45493934376e4f456b2f3331725270507069446d587438564c6335476e5378382b6753466a6f5a37577a743433364b6d726e5966792f616f57785a39416a35385a6d66764434786231335166736f7063757250522b786a6f6c715a7837786f6d70363951756f416d76716c7134377256305439595a4a457750326e4f42467a76785a2f6e2b3332434877502b587332597836712f69676e75634b564d706d6362574e6f436d704d3776714f4e2f7345576a7765714f623966482b78416a7633633241324d6d614b7870554d4d6e4434372b53613666746a6670652b6a6c4c67534a632b534876666a63553961694150736d42444552416270416c58466465766b376e792f4d706152545170496d4831796a3532546d676e3974466a644350356146467862614b4a765a396a2f364e4451572b71706c4e457a695976516f307067636145484c4c5263796b55746f36345a77426e2b704650666d3935653333306638414c65676e33416b6f426f34675171706e486b74502f505363756563315263524c596657752f624a3136637158546a523076396571443241507334332b6754743652494b6968614c5035446f5a494e7a6e6b56557a4651586a4743424346484d2b455a5a66595343366b774f6e394f2b7577466e304571442b4779643936744c68702f69784931682b6e3031587a6f6e4a5a72736b6237744c6772582b756759742f646c58516f42674a6230506c5155676d757772762f736b6c7849374f452f5a342b7165734d79464e7069674c49657178374f383448524e504c316e33326c3747636a68326649664f716d374278447272516a444f644c4f414b6e3578346644512b6b6c323332492f6b4a3645702b7754656d43707668345457437068642f7152396b61546c304c6633516b696352637a4979746d5764626256533631452f65335238397a6773634d686d6676412f3549796f4e692b435039416a50307a53697469716a41614679724e6d722b7a2b73436148424f7358376849595272704543354a387166635a6341414d424c2b675a536c6e5842315236667a7662545156534f4f3731426c56776c3371524e4b54544c634b4778314a7451766e58645351435a6a37774946356b4a36306d5a3034526348674d4f69786c504361584b6672767936752f494564467969736e5341476b5063576b507a46306146302f30433631796e315073626f6a504f316b6838702b484e6e51356a4b4a584b346b476f4574425470584c5033632b59536734435266316f4e2f6f464b5a6c6136554d4268517056476b5356394161786639424336484e7055582b4e30705543734f675a2b386c5446304f437876764a3038682b564771313050764c6f6f6332794e6e616d4762496954646c69304b71654a597651455751786f45776f562f6c4e78682b786957754d4171314e47767166317a6872634d2b684177587a4d616f4a7556722b3232656849564f58754d7a536149646d6253704a756130506c50695163387a58566879717461357179546f7459366f68355a584f796e53365036644575627136486a475274392f506e4671532f5a494a767a43444d6d305644796a513671625255755a2f516633677a4c64784f66515a42494e417075456e5937466353736b2f4638777139346b6e76754237304250526d4c364d764f63747a4b4673766658584d6c43544b70724b7165516b30534e634b336d387857596e3967544e6f75454f686a634646664d354831383674553463736d6c73464c2b617a5a534a612b632b52617a56556131736f65776c4f4e665a75712f342b61687a6764304b7072464254766e6a632f77435661314b4679454375622f733078557a6b744c7031314c7a383036474d5344672b5a706d66784a4d5144397831514f374f42653970573961457565324b4f6a4e4f4b5951715449566f72707371744c3758533658566d7a746a50387a4e502b594e64475a6c36326f706736797766727a7357464d2f553173726e4b686b795a654d487053722f5a45746a6d6748364d78417a36336e7a677935586c56544330306158463642733570334c6c41486c5132483633626b566f6f4a656773342f722f5a616b7a642f7742795471756c377a2f594b6e46476854554c6c7059756a4c55796862627072374764436c61754e3042646d695076357352554d6551467a6f414274496c74366331494d2f694252557a565335387561394c2f414e466f447356647a616c6b796a5135574b36692b59522b54326672397a30476e352f764b5772337061436e7a6336766c4d384c686d577175696976676376484c535179767a62475a556f70576d6671594b4f6b51646e367056507570506e7342585165737342707357634676784f5a516e6e644649712b595a646137746b39746c424154765941702f78662b68497a6231487664516b2b68444e5572693771784b6c446f4f794e494e427a5a33696f6143564b756c745272585354586b56716c4e466270784167623977506d447047484950795175356d74354932533757765a6e3336484e4c466c34395a367878446b707a476252357066584b70636246684a31546d754e304130775430492b33562f58523147372f34386e6e50394e5048382b36374c77707266724f4c6d667967466d38382b684456793068744f45754c794b7661624f306b744a724575674e4e587930593378754779305541495a72557247716f315131575164676f35305867796f356d567a546c4959786b4539432b5241776662374945706d50345258332b71686f386d5561644c4246554336656a7a68354e556f35617a30535971487431514c2f56374a70366934732f695350542f77424477706d2b4b5a51497a576a4d5774396c6564564b42744c5265383536394e593642436448795654336c565a43624257675451762f4148652b5977515965332b6752546e562f774175453854475034584347697a71656d354a7245676f6d6179514f49654c5a536f446a52595a6755622f41486770494f6f61426b687134714f6d76545673307a5a6f756366613056634b4a3536466a2b6e58455046436e69766b5558426d42626c756e7a32396e5654332b676455616e416f6e304b65326a57504f6e44375472367561314b6931716d4178794f41585855536b49752b5a7957657768374e2f6a307636426e524d715a3332306c585a70444f5443686c6d495367444c543864774a6c634b656b6c684c59774446585655555a702b34776e4576746753434b5972315854464a6e302f3661372f73335261554b6263394b656337386d663841766a724f4d6c3530753865487644594d566e38716572454873394a4e36684c303355444c4a4f4a634e476c70745a4c564d6c314c76744847304b484d4b41556d7043733866663841346d344455595367574f6864713030796855316b36366532454e6b5333766e47696655512b567452566e396f5535726e38367a32442b34324e6345786d4947414c7958797962783076657437793166342b4e75624d5766713261744b75496d7561694e52664630586e5a384e524f2f66666854387a6d71536c7276634555744c5a4e6664585a6737596e3470703531566e383055726d4774364e464f62484b495666446e31457a3557715a385031694d576b617753494c4478392b6f5874594f7577706743685272654b5a4b47765a4b4f612b396e465753357339795864627a716b38442f77423948505a38503743595a3831513553545339395635305a2b4f696458626d5a307775435674505135377665796a37457444334637694876316a53536e6533396d42376e63764a7055684b322f783836554e5533536e6f4c376166767366537964723176616d7771666861566e796347756d3846666f32725346627235684166684a317063696a474776765a2b7830436a6b79614a5835346c5178615952427a696e2b524a2f4334665a545a37666549455668426d4b7035656f6574594957483137434f555253734b382b596949706161717a584b564e5537505950374a557a50636f484d2f2b6967507a506739785a38453055394d4456716d5757534d3762457075466f30795646517274532b72596c33363556774f4e3933424833702f5267586e7443567a4b653439656e78764444687a54426f75582b33487777464c5842786b765352317932434239576d2b64544f705a30316b476b30317a34364863485465614142456b30636264624e3072544e6c79546e367162505945726a636c4d3679667a674565556b36454833744253424c7673413561616d48544239644c3375664e4b3661757067496e456556507552376e5757624b347a656f534f64347049515334456f7363414f684a5241715a2b56592f75624e5a32656463304479347372796a69494a2b69514255356b7a564a6a36344f68516c4d50522b6d625767362b59646f354f7439576d624a4b4f51496e733542564f6566536c70394b644d394e396c4a7171532f3666792f6f50624e796e396f5766552f474c51777a375752756a706e6d4e737a32724264714e4350534f7357304a6f545139714b6c2f545a4c44445a7a6e78467a6f414457314b4a506530714265363655705752337a336a7a2b542b6d464766686f4a6447673253633275537275517a724e62704d63532f67656b33304f4d2b2b325936512f6f4567754b70617935316b3063536669564a486e6a2b7073703033306d52794f793243705539475448503743624f32684e4f556b5061663231744d434a75796673556879616370463032396a4b624e6252524d6a53744b4362335264544d617947696a516e6e7063516659734d314b597973767467487875646d303935466c636736305464737a4d664374484b6c30776a534f68716f6c49666d576d57656a335552633667367a4b616c69556a7a6c41667379427a353539325367756e58666f47576e4c324a6d346d316464534f38534e43334c4a664c7444354b7666787875556b42366f65484d762b676b48555779774c574e36334d2b4a3963616f724848712f645a6e6153356c386c642b316c6d396a7366775a7955786847644b71666c396a326630454f3074454774797148767374367033765933553539797563674e567a2f774257747a56734c3979792f47716f696c456d346a576b664152395a49514450792b59627035474b6d745a5a547048626f38325a3154396b5044734b75432b7252583771457a73646f5548336f463850546e4e782f7061334d30393535416e504866376d4966546256616974374f6e4f50564d6f5054666f3544304d6b3543376b64353054366e577063714d4c48704c72564d625142707a426775737071626d6a4e4d4f666e6f31474d2b305570756a72744436306b6b764e58534161422b4e6565766e4854714d32732b6568507a4879785154484d5571664c68566d545779736a304754446e514e626f5263545a465a6f4a704a3039687231694f696a506f6373725170464c76734e4e6f4749554161716f614e71766b7a367137337a787658785443545231576c4855524f694b77672f69566b7547726e786b4944396d6b6b734f5948455a4256586d75644d33516b5776756e4c49552b5237774b61674d2f502b744273616830314972736c364d3663394e70716158794a427341752f324f4273316471647142476d306a6e4e38627a6e6e4f456b374c4e65434b686936575357454f6c6f5131563952513637335339574b79593032397064537635654a4777672f7259506c463272556d4c6a4a6c4b566247386235704961516f354c417974532f774466525a3277546c6f6c6e2f367231724b566b353145356c45767335784d62616d7a32303830356c397463666246793054443346624d795a7936724875464e58593565555551382b4c7145382b45352f6137392b78557a723569634c4c374d713759365530795464714f69785766305172372f47706f7173796c774578795a6552787566782b655241564e674237464f436c79516a336d6733706738674c4a4439726e577756724a63426368316e424c332b5430615559357a45734e42496a2b6d45424a4a7763344535676f526d4d643471664f354e6f7279706731683779715454766e766654787454632f51456532554f723557347635534765696766706c4f316e3033473176427343687a3446322b4a5631614e3975624f646c475650524c77363130306361316b6f69623838426d5a377554723543526f44744b41544e596158414946795941682f6c4e775159374a6e466d6832526372375a4e6479686663337137757a4e2b4963656e37487379686f6e347430712f6870796844324132615966366d7657506d4b447a4a72624b6462546c33426f567958597a45533833716448553971572f7937364d6e6c4b7564546e697a654b53646c35534c2b4e5042726e503967623962636558766b532b64576c3777796d47726b666a6177303534626c6d3459503166724f55305a766834544e4b684e53314c6f6d4a5141566b347a677676762f716c75484750696a2b774f534f6e7a3858506a7a6443594b64376d646d647065365275727a58737673756934322f4a6a3530636c53626d546c374a7a2b705670653444593443346366483966314266784f4864767054534d334b4d354c6c4d7448764e4c51637a57693572717a7a486a345746764d347469792b302f734c6d2b7a6e734a4c75696c69323334524b394666775131613858564972584c6b6659712b4f5352557a49365857795579586a6e2f763546776a517070307070576863664f746f3651304c62555672686c5179435452437147646a565857396f7a387854692f5861566a2b6b595536327961583263574d756d356e772f7031366c4f2b756158526a707164774d5a5a49704c524872374c47646c302b63476a5144523752436d79796550494d3766656950337a336148463164492b41314a507034627665774b333755695a4242484e373762513634375159757436626153526f73656c353868442f7345582f6b414d2b596e634b71597a61417779732b66345a353669523544614a4b737069314e75636436575972506b306f4f614d696a6f7a334f6d55795a435a52664e5637442b7779675a33483776716d3075642f6f422f6b3747364178634b615a48654d655848536d4d552f763033706e6c392b655a63346e50624c505379706e566d3447702b45304b4c713138444847344c6143544970795746514c38754a336b453944797a5930516f6e5456643335466a39675a644a364563574279637a574577684e43566d45706e593077552b4e375770756835394f6a507a35446a70546b766e556131507036336b637176616c677236326e6e444e76476636505946494b4176704b695a594e2b78585a49766c444a367167656c4762664c6b564d344a33554f6e576a5157742f476d7433372f41497272522b4d2f685a4f43444c7333736f5a36744546634f51626331537043624f4a577068447132527a4f3655755431773644756f4a36676e2b2f784c52537156536e41364b6d714f6c5359632f765370665438613749746f6b6d42364a4a5072352f693539676c6636536e536d56774143472f77436c4b58644649535048657571754f6e51704f353561436b79797156597432657130484569646231702b766437796e31466d3968746c4d4a7659424f4141457732635368333166707171736b7662484259674e486b355a356e435976476d64336176313850755a5a7a33396e39766670392f52694942332b7563506e6e4961566c4e323665486b693174493372486a2b47704c43346239543444596c596c373266736a353771532f38416277766870427574436d706b4e7648786c4f796552614f33435a4e52556b70314f34537836397a41344a47766f4c4e59665a364a673043455142323634354744593551477132793771426168622b6348726d424958544439633750376e6c78524b4c322b77327a6d51467a3267444f6e6f38636a34652f56307546526f5a76466448327539714b4f71654c436c57327172724b4370364c4149766b44704230774c2f53487763346e664550656664354c3742534a53742f6150634b6144447657724e7338766545315a65784c7638446c495448762b53674a63364e64716a474a344c7a536e456d4f4242764e715251756467457033412b6462686f367765383443694476413530442b5467444635376739356b55394143534a326e5135633856663171457a7a71354d77703170534874486a523537546164494e345a66352f46304271754c6a3242794f5a43446837514b3454304f63706a564f6632526e694764784c596e334670436a6e7a4750384170396a754478526b514d3241464335705554384c556c4f5a6b2f44692b547152652b6872536d57332f4e78646e456a617168587a4f49415933362f37452f3644574479557447563238634364576370652b315a577761466879394f614452426b35534e55493155735a5a37314e36416a6348665963774a2f52685766495a4e572b56745a61362b446246627866494e664f6e583067314c632b63517a542b4a5a707a666d464b796631785330744e496e377075544f6e6b44475a516a69354b4f72526f31314d2b4454366641736250784435565466424b396849576e6c6d50644f43695a372b506d3670544f4b7059437766667853374f5a567339696e4c37314b564d4546452f6b6746554754783637732b657235682b6a6f634d6934626b6b3579535861522b7a6756787036657533545968564f6255357834556b2b636e4d577044784c554c36416f7078693737556e6a796970624b2b3044326b446e576b4643382b54474f38455550586d496b6a7953752b6c464b4561614f576f4b6a657a6f5673474b5647642f70553568532f48794a7151346f3348333373446a67645336385a37784f2f464e68663147666676747252517350747370702b76316b6a5a584e4d4c4a702f69372f6c6c7a783063636f322b383761666d4a4b56706d564879454e73714a31372f693670556474755071547556334b6f6b714455775749344659696c4372717a6a6e69614263596e334b676239686b6641554851646552476e4d677a64585051335462625047347578745936595a3662632b61436164775a387073392f3841494567536e36626b306766796e513548766f6e6a7772504144704e5a2b544375696d37695a786b692b614c75544e325a42324452635474575849456d63467455342f496f79633533552f4b626a6437464841482b626535586a556365587a53687a36624b2b304e444d3347395446594e466d6a594f6e5375653644324c4c536173464779687a7241354a3876794f4c2b70726a4d5a36434b7a614d712b615153325a2f3375382f55624a4f525142782b57364f6b33636d66487a706979694e61324c46684e3554376c485142455331514c4279354b46774c352f6c39564955314c6b6c706f47687466454576364f587070636f4c324255744b55786b4446742f6a544d55552f554b637074316e35697066482b54386f702b47315865624f696d2b3262504668384f5a2b767a6879317030724a2b6c67685643542f69363133732b745449326a6e5471397439547545367a5a6c7248733556794a764a673136714d346635416335412f484a597444536a2f624c4f3574487841446575437345695333427852434759462b614d376a62304455397932526d694d4a744c4f5a646e723139646c512f45555357584a4e55352f4d346a59746a35307270656f41764872454e76485974382f774377624f2b4d784754536a62794e2b697a3767386e6f3047775a4e446e466e4d564a4f4c584f634169314553794e307a665962477a4f476451663151456c54327a755448504b3976594e4379466b6c66327a315033776b34505552446b735a4e5045384c7759305a754d353855316a503841465270424946746d72694a304b717a6f35354130557552526d547a4a346159692b71615a5a50754d375638666a38745376653945684337425370594f344a3843316137766c41697570704d66325748644c34684f69504f31336b4c44376e6a71636843726a4c363832314b367530585a7178616b4f70702b592f72324d4547544c56696573647763655351526157525246486e6f6e56713344747256383030476c334d3058616d537174616f687638416255757171636c6b332f553037786a43626e734a78785763546b413833757a6d553053742f6b724878354b70394b572b5257566e366c637a5a2b5a4644506d486a35614f4f314957382b72304f7a5633764d7a4e6c50417076322f4c414c613953733573492f4858535a5a2b6778367163392f382f7742716c5237455337467356436557542f7873746e5061527a30313078694266544e6466395534326e7a424f544e574a7838316f494c6f6c30717172373045654b696f2f487855552b653776326d4e6f554e3155704638766671494b4e704f6f2b76574367642f4c6b425661714d2b71764e7279657a63637047594771374a7a6b58526c3549482f6a2f4f7472536247756336704767742f554a4557396745474f4e51476d747837586d506c314666515854624167333335666a7366787855354d78426d4f36787a5438687a34463044506d305653334a51766769597573636859706e553370626a4b323661754334686e713563776258532f4d53617536575a6f732b667363766376554e4f664c564b75566462335577705a2f6d332f425050616f47306373326935525a65545a4c696457746f4d6c35336c446c4f644c6e7266636e4d635a66485038414e5559744f6c496c2f46464d487a454a552f316e2f4839505543752f4d4e506d6963777a3666384135426f6a4c7074516c2b6672442f4d5a72344e4469356d7a664336567948304f795557415058722b617a2f6a6933536a313171646d41557a714e6937452f524b6e7a416d5838632b71726d6432475364724d30555a692f306a7131356f7378574764366e57515a53597a6d414254384a44457a57733578786b5531346a4f3352547154636931326e7231374d6638694c716a5263734d75756a6974627572386f6148767135563835396233327a35557770396a696a7362666f4f5150715871667a667174364d512f4a745538733953504d645475336d74544a34376f667a47684e71575652796247772f366f39304d6b7161327831634231494b796a7645766b7344654a78533338493364394261687539515057445479732f625a526b616d4b7736614c74625779585658654f3536755a75385570504f7a515572796172356a6d5971644a414b714f764566316f353236552b583968462f526a7347722b5733714271707a454d544a34344649364771336d67317a4d3269664e6f6e44506e713057464942466b76373131522f4766334b5a674e77384d303969767a2f754a353433645050733567717a745632484c356e74553232766b7564386d6979424e4832746572516f5a66566377703879684e6f505255733865654d342f66516171614330664f3941724870354a5a4a7158655755497a6150322f545775374e2f6a7077745265704f53356938636c32547a706f496e4a426d55367562513755507a4e52773664772b654a654a647a764c764a4e6c7163724b654d63486a344a5a6e4a302b55786f4f69724a784d3978565563712b353437554b617046482f414e7947436c43662b756339457a50444863497a75365a37766c476c714d5647794c4d3747713276586f6f4b61574b755450556c7374515554743866736c7a5734504561614d3963334532562f47446446526e5147776e70744c33783341726b78637a426d726b486d5a586a3753745a2b706f785a614d5748745230617567316961724c706b68374878782f4351652b644832624b4739695969657645546d7443745649633138384670376b5655594c69315a39645876576d793265784d382f2b433242563945686362574b6f3774316658582b6953436e64793443793456752f6e46306f6d4f57697345303646306d525666347844524979727152726c4551583756797065617a6b533264547161517161745156484950545a6b476f2b643374427449596d66506c5a6e566866787a5a7a713130307a4c556d6b31725359697044656462326e35672b7958744a51686e377a79466c5a3879494a4e6b52694656734e476a3879544b59476337544b4d7a32754b357a46757a35684a676b48793861484942464348636431764d77764e42324a7a477736456e4d65352b5464466f67636c446d4b4b756c6c424556435a54455164647747642b7978782b7743425472436253595366786563416d78586373782b496c4b6e505270385575696866573879314a45374b633447367a683243582b366c49643736457a6c3730304e43686753714b50506f333943763730464e3856644b3736307a545a31724f746e6e6f746c67624c48783837754e6e5a37674c725854754d4a67702b6d44756d4764744348544d475055366c557072635564736c4d794955796e52394f343650643374535168464d797a73516276644e4d38526d3934742f6f412f77444b395270315166543032612b6672567a706d316268667a68364269554c79544a3844436c4d6c6978635344616f534f656d6c6e665a7858394264666a774575754b59624746385935395153543970634d6b2b5848596630587530484f485149307a7353787953393162584231715464377957437535597734666871393343377a354d7a6e5631744f69696d4a4c6c617247384a5143773136464333634954653732483872352f72652f674e384851637a566d2b456d4678536e556e62516a55526d4c345a4d6d714372397244734b364b43684951635a4638587a4e635879464f4a7862705079426a48644b473476554b6d46774a6a46386e7750534f6370304c574958665445432b38485165783038712b7a642f324b2f38416f7661466e7967787777444f762b35467a764b6d4e46484f556c49544e644f633532565659792b6d533277702b386c352f7742704b7858306569665a75644532705638483952547377424d744b704945753156646458306f304441327464386237356f5257442b547a764e626b6b50312f7742393733324279774f63486863397a7243432b56665975323839626e4e644e307063365a43717673647165645447515538716f67627755396a4a335063786b366d6d5973464c65476c66517357746663796b4b32693863395245796a4a6c63696a6f4349436b526d42326961526856505a456b442f33414a752b7358472f4770515233637541313065424b3141334d5879647134336f634f637566504c73596855464d7449676e6d4b7a767a54383448524a487957455451636b336579524164316631664a7257736179544b596c6e416631683943356c76666c37324b574b666e3865595478724b634155343330425134572f4a78786d4266434a507562706578655259736f74423633334f624b57684a426238787049614f734a4a56565937714b665a2f733553544459355173346c31474431736b5531302f4a4932463167665142585a79376d45704b5061494b68554f6150474c4d65762f414d6d677879542f414f552f544141716c75625071655230565a437377534a334654452f4a706b4e31664b574b5131427257763273597a51396c5837623176463072643750684e733741482b6f71345035506c664b6d57704a697439656c7a696e5676737a72584868366e734e33484577626d4c42544f7a506a4a566a6c6645524832674141617a36576165516a4d446a33684a716f304a706f6e5a6c2f6676774c684770436b705633432b764c4c51672b6b505462487a6e5173706477576946372b44766b5834396d396a436d72736933314364703153437352586f4f6c4535584a6b484a536d373455643630584d44356b443775383673414374504e41625075697966427365466971493664477048657a636974705333497473314a4d34614d34455171452b6b6d7350634e4a6e582f6b494a2f6f49485a3932476d72516c7a454d356f6347356e465a6b6c4c4f544f36344b477330366f35777a313873637a764170373771503843496a5853342b68732f416c75526741706655324b6d684b422f746e36677a7a48353432546f4b61387539483344437833536136706e66702b37724f7539733151555235453752357573676a2b7a6658326e746b483335462f466970695a37667154484f7357543249755934524f587254544e374a6b2f582b795a4c422f6d30395079335074567a3339614163502f45304f586379354d584536414a7350334c4455697169425851543174674f637872326e314942744a4d376f77685073614531716d396534726674564b52647a76585a36526f35396f756b775573483972594846395033674342367833756a7535634368664d6170614e5173336b7a41656b4f587776444e6f5769684e7161714872746c78616b666139344f6836352f4436464c6f7a6c426e41486f736b4952705772526a6a586444555846535352427a5561375a61726a3943654e3074416c572f72484d3976464c4c7039456e6655496947647249776d586e3155636d59755565504e6a71304d7a3255634546585644575735476d59464d3664582f656a6e34456e5341336430706a4f597067456d687239344c54542f41436562507838795935534a4b41677330387a72382f757051585a4963366935665a396f705a39517564716e44334a64395350764257347741782b55377a5234586e794b76586b4471616b466a2b7a72464663724171516a4b307a4568544b6d6635475a37506c6f565a47412f704a7a57644434753370316e3542583143464b7651504767706d5a4d37692f463853577637534679334d65395a6e6f36696a6f412f63364d706e723631382f754e376e4a7057436942385537554337644e56612f444a4552574f7252693554375655796a466b5331534b6b6c5533686764414a6c53776443723263393463446f6578333642704a4f6f4871634b49383455713530585a664b7335663155383546536c4a4533665069766b5a6d353635644a504457396e56394178616f41636b3030424e63494366342b37503549386e794a4c505169374f64454663664f79393970682f6b6338383145396b674358366d41666850326444726a454e584d444d346a305a56566f5556576f76327462636e4e48447243394b766b6e4a4461644c334d59732f71754c704c493030424151302f47726f314e746165615a6a754730666757596d54777278385a352f72524b78494b674d5756573264496648536e583265556661554a4a5335335a2f7744456c4677326d31344549756454504848654e5766586e73394e586a302b66537234364e4a4574564954714b6d4d423764325735704d6f554766437050457362377948355a31734435687a582f485270547250794837316e5563574634743163334f6648742b4d325a76655932613253543966357a733637556f6355395877792b3065663841624e765156795439477069353470326f47317558565666376e4a757a724b412f613375684e42665064516b706f654c36317a6a3653736c4b5739465050307268713937576e7a3363704d346a49485a43574e724631494639424c453172582f463943587066706b776950506a587a36764a306c37484678505655732b46674c41444c6b6a582f7969306739656654374c676f5731626643394e714d6f6958545963393975624f74774d6643316451386e786632794933673664686f4548657833777a576a73322b67482f6b6169663841383339457955705767556e6b4f6e724c665874756b70584464306b48487954525637666d544c565939674f53502b42755839684a5747384a7230763876376937664b6a36536e395570744130635a31304d56446d366147504279473175657451685535646b734c31665a36514f556170715154782f45706f4942345373562b536a7947783950776e39683348703742384774533579324d494c5a31646c4532617954514b76724a4d4442426936614f6849426465707964444658323030436c53556130645a4f577776695772506d7a36584f4a6c43356b7359745a67762f366a69666d5a38582f32324a694a7a41615979476f4275734e4c7058396b354a6f616e334f4b70496b2f397031644c465545703034704a695745524378544a6839684a50374254534a31792b5566482f67597930586c56434d4f63795671477954724d766f456f4c48457166384156454874587a6f4f3934676b4768384a6d59562b503666714b42433973394f685447714f4931716e34337553554e5369755859786b6a467a306d4b474a5833336446504847347a67476c59475a6935746861336838417a5a7843545864764a487a635137556e36677950354c4b4f67585a3239546e7a35384d78427a3748733445797a495073664942426e53684b32726573374a6f71445a6e6b36645477425231697367745369686941625a4f4f7856777666307a6150325451722f4141397041506d4f65666b334c4a532f52764e78456a5835704a4f37756c6f66432b5a6f73506a6e457462757349316752464e374a2b7144345449436b564131506c764273744144503374557452364876715a54776d6a55724e474e677a755a3765487843654b4f6855774d46692f306f7a4170736a78523050304f336b5065467932537467324a3532566b6f525374752b623957556c64563862414d524143642b6842717758396d744f7a4143384142444770347448543752614333705a4d61703544715743707934345674793531696b53347a6e4843445a6741756b7639434e686b3065387367635177317a35376c524c524b6e713346486d56307a2b7855794745314d597264787a412b595072435974564f3855675841506e4e643957556578706e6d4a4a307a4a6e6a34457641596a51534b325648516f4a5247706c482f7541544a707a715833346663376f42334a6b7a6c383934714a4e48655174354b67355a31716b714a556b3746644a5066355273767963353167664d6648473461532b51414142634d584d6d62536161673570534b6a63793256656c4f46616564576272422f656538705a31496e48696d434443536348533537524334556732773749473650585655326f56462b7a68486e735277674768326531625773735a7a2f59334e516e676778505159344441356835302b52624f4a783145764d646a4f43765170306d7641537363695364786a79697866665a5259584f4c464e516f314b4b4763577071525637774c326d304155754f466f38674d532b31767a78787732512f4c5037714b536f6279624c4b6e527355716c48324c486357745278752f35496c41343747702f774a7641525959576f4a394e49422f757a3256306c546573564e714c336f4a5368554d4b2b55554d3650796356777a7257527a4b554858433158394249474c415a6c4f6b354c53736f574e6f726c6e575a4e76736f735832784a534c3439316e466c724e465046712b756c6444535a4d3735694150716e496170466e6673476632457a766d36755342494c74754255535a7867577a6c6e746c6e594b3050543052636e2f482f46704b4d453664583973376663317a4852716c37473266514f5a49672b74692b734c375572426c48354546333576622f774167412f437159565566434372524f7462577251737759566a54557169434e6f477845616f6b55417945662b71476b467941413048337067496c2f774169664f677976495866445048616c7a466f4b76536459624b5931534f657753442b51574c4f6b763841397a69426e5337384942502b754950695344484a6b6e344b306370556330376f78756263784b5179656b2b6f696379633643564c714c594f655065715534476e37434e682f774444547266737948744b6958577a326671696769554878305374624d304a3535516f594254456f566950794d373862466b7a324f576133653948784b55374d424641474338376f6e396f4a45764b704c5a6570453531466478664e62334d3932575539337a4e352b316f41442f512b786e75667a6c6751666e74347458594a6c584b6e753746524d4d3946614a304851505a576b424a2f7744716e4e58336a493243424b704c6f38557052705a586658784146663767425939656c5a314d517453475230426d764e745767446246537349686a467677724d716c6d66446e64326341633770742f71776668494f5a543741517a54575359534d67426c516c5175686b6a50675a655963477a36365a5738414769423950326750374e6c493134576a79436b644377414b2f6d70354f756575656c74664c76394646426c5553696a6d53766f69634e332f584d6d43432b556a37452f4d704b7636734d726538354838497a495175556c3963704f695145795269533673366d6c4f734b6e6d7569635457723363416154486a51496d694e666a2b6e36685273626c4c3761496e524d5662486159382b61696c6942363541614c46474b506152547073594a45303653706d4c34546e2f5a66717763646f687054334e6e64796c2f774f7630644b426a564b4652502b3370454c334c2b4b694e5a6637452f4d59703737416e57304571366e73634f313541424a56324965394e3830597034484f73624b6c636133484d586150757a4f6479694f78613345596354776a425a674a393976464a4b5170596c764b587a6c6d4852724a6e5777554b6439457a557330754471335554722f7743774c4a36505a795633666166786645355a693332413836684c49765a4f2f6a4155622f727a767650487153784951787470636633506a347370786f41474f2f5a482f6d332f41434944426f664f4d4b69737151685855714d4c6f334e392b665a53315051464e536d6c5558324b574670457a76586b4c50684f4e71532b5a627154414d59306d7a707637524145724168353154367564725344454f645864597956672f73754a5850314e50374433684e384a4358364e704243324677374a716a464f697479342f30356a5a2b4c585642477970504849523776735469364f663841514237763862484d655447422f6d4375645347704f744c2b707869797959715233597031753455337954327539394e45347a6c3953645074344b32384e69544d5530394273796e5479456e397a4c2f72686c716d4e59752b656b6148635851386853796967626b4a4561484f6136675847667745504b514166734f642b694375647352756b4c545a306130684b6a6a6a584b346e66442b702f7345625672734f6c58316e45316a487a2f5853345848777158666f75416b503976572b76694935354c384d3554707a662b6b367043366b327362374f56306c4b56476b6c4b65433574457055574c613066384145456e2b684e344f346f56574558694436435166483177533074346c314b464971666d4d364e525a516a4f634a4b304b4f7531366e6b50586c5342474131304366666a414a564e3362532b6f51316d71546e6755314465424f776a6e704f7a5163596a785a2f4e5232474e4b66397276622f753474594237484c4d4530386f555853576f705a56644230674b6745554a512b424d37526478692f5a376943625359516d6f694c6f455266454651414942504b557a4e6f71306165335563374f326a2f6f5436485768336e52346f7059382b6a6936616c6c4f66584f2b5262666c4d50384153663654795a30442f4a4a436a7047467273646d645666445854506c752b505055436b675254545a795a766a6e352f7534727066732f6c4d544f6768633252515371757650544f4d73496f714732374e6a35645058653878356f79704d65467a7151347869526e596a676c53705048552b78764149365149493943425a6e49614c505a41636a4a32413256684b564b754d4e465154716c2b7a786c69534779667650683645786c4e3852544c5878545364664d51625974592f5947642f59725948746937556a4e493956534f634a7a4c32575a755a4f355a4569704c756b355a4c6f4a78746153576e2b6a53425478795770665236646464454c584f725a5931764f7542656e50505356626e312f6f76744b59533156632b744d5356574b63306b38614354437a696e433750506975476f494539725539334c7a6f497069587261424f685777566654347772454477444439752f343634434d754b434f3659715a61396b72476f6a37797063366737654d37695379656456696c51765750466348374574424f596c492b2f693364563756635546624278456730717978714f3579517354682f6f422b4f37712f6550465a4b7a5774564279793643425837656b7a6c2f3646674748734944486a486152374d75536c3259566852795a7372514d46444f366c4e56565372733269647336583538677a4c553577324f4e4c43367862656671634c5a4739783648735478486446307a6131704c7339635858703042616a6f4d36505475465a547241544a76415958797049754f2b452f36727372344274536d4f59354c72756443683358313955545a3533437552663030536c4c396a3637424868542f414171567831514c416a397847326a6e4c434b655171706b6c53483255637351714d554c6f5a3945614f3555672f4b356a617175385a4349726746724671436f456e535a7a467a2f41457543733974794a485549424632643966384166302b7966717a4c59707356553670686f304254524f77377274546f6b766e554b53346a44326755365443535272496e745379646242434e675268523845735a2f635a58394c527058776b67533351304350777a713969435a316666726a576f2f7743674d364d2b6d48584731344e41574d727634794f626d74593776585a7936464f5574536d46384b36506b516631306a514353365533327565304770535561566f394a4e6971652f413261367554337776444f43724e344b3942414c716c534e6a6f574d4c6f3265795377424469702b4f59494439535a5356556f713562707a4b6d3071716c7955502b6564384c49445532686464516a50714f6671554d6f52517a695148323964376662317267685455706f325436735674664c78583148566b71696e70664f5663755a3739583743566a4f6c4e687150706534786a57424f36587a6749427264445152565634785430362b6156464f654b534d2b676d41666e72586f434577632b6a4736502b514476734a4e48752f774250444570674d67597853586833767a4c5a474c716b5855736c793365394b39464f5a31642f6542487749724f705451755672426f554277632b49456e2b6c43456b526e58397a387172557957773047746a4849654b615570644a4c524a48724577536432577a71566b30444d75385346594a35776566767467434e444f51715a362b55463873794b4a37705456564a70464859704c6b4859654b5375335846516e5661636a756361314b577875706e61744a634165616b7847546e6637382b657a75526930546e794c495368596b636443446930464c577864553871506d5941714945706238412b37324a444451426a4c4c54304763792b787371312b70694e6d33586f7a732b724d6e756a784b7a3778314f6c6f4f57794f646771637830377544304666493050756653545754526f7348575478614a716d75714a6b39457655696155334463763446732b4f794e4a6879685378436c617632354b454a6336687035466e353047636755492f68686255794d526c716e6b54714753374b424a686141756f6c714147304f6e6138556d7a2f67356a412f595167435a4533366753583268304e42576e6e7545382f716b335a6a484a6c6b6b5572476c347a4e4a32614f615450616d49505a713075515050304d45775246434a707143717a70683446477368504d757969525a4f2f6a6a30477756547179616a47705a4c75576f7a4435672f39537154495861624a376c577632704256506b45304d3251765164717854787a6846627a4e59334f46565032626e662b503364697a584973634f66705664596b452f4c33726c65783348666339375a6277444479456e507a4866527a5533366441364b303848546a594e61464e6f57397258717932665953385952596d6d7166326746357336544c772f616c4f31417054536c4f504979597546717a557939484e564556436249712b574f5444543439386e3373796e512b4a4d667649306e4d6c4e4a69436633374b3068734a64346f3675303270564c42546f4d5777394e4a5a2f38414b3539513974314b464a794e4570304e756f36755835706c436f7959326b726750337054594662626669454339564f77546551344f35457a4673634538627332316f484b36317a4d2b3546712b736f2b52636376584a535054644737715a7165724d6b7036357a564f7a4172754b7733636d3646677a734f6944536e67374c6e7136697a7054793649597930705572516362714730726f3537303079523944505655514a464e687336745579735571646153644f6d694a327045576e755342484d516c4b2b697a3774496c4e47766d78645170456e574a4e625a766162547266386a516e655050707677635a6f5a47346a42386656532f342b5a6b4e786151757064504c3965466d7850457567382b6f534146705a4d674830504275642f67377650777a354268566f35394776796d54716e4c7143702f794a30356d622b513039556454754e4a46504d525a4c477a35354f427233506f545453336968523771364857325738413641636d474b7374435a3377565778735051474a3267715a7659552b2f6e4e4f636c396f465774484c4c7866616b7a58665a2b656141567a4b426a6e382f7550716a574e4c6830646d4c794454466f3253717a346c35783574665035444579346c5a78542f4147705748554f6677686d4c357035746776734b34427070436f63555564304b754b69586e56554c7873346e525050577a6456686a704662596f74425658766b2b5267706c34356146635343516e45426d573579774c5230506d7149625a74436f4b4a71714566363243715951304a394451562f4353465351786a4c642b3265785a47304c7a564d6e6a502b66364361786c70564c56632b5146727933495a544454716d786d656b3332437a58304a646c674e2f784a6a313965395147377679476c4a38457a2f6f4349337462622f46567437654537717a6c2f6d7864464f4c386f346535303131434a6a464d76743050676f4a695a77373045632f78754c324e4359726d4a57627861335677477076463073745444506f39572b324f736f52666e704935386e6b387246422b306d5a565447684a65316f4a36456b6b5074427a553644724c6b6b7270426247683068615765524a346e51316d4b41516f755a4c4f536c65376f4b4a4947532b7253336e7443577a4c585658446f50427156685037715031465259746135674b354b586665577861307058377538466f754d314838696e66594d44344478447a71576c63664b4a6c5375706f53354d646e4d2b69617342536a69536b45542f414976322f77436b51372b6e574f6335704c492b38425946484b427933446c494c726c50465076346132415571695767324159357866476e72686376692b744d6950702f386d707647757a2f41492f7036675a3076594d557448536c624a5361502b7a3863334156326b714f464657617147686f523845576a534b4767332f417543385032483248752f4d4d32395769645879527170354e336a7235344156325745477a304b4b466a493341414f536d663576617a72414e584663536c617a2b457442464b52712b31504679637550564e513965714b7034757252386c69473064304a347a45576339704e425169314c4f544f46666563627964495234356552527664444537396845342b63576d472b4f4556755a5638794f304d4637422b717357697371466752615274637453773643775a787754434c7939764c66314f54394961784e686250302b4a6836576a3779564f37346e563050702f54476d37326350713657755070686c7953334d5154654178307147532f4c3155613279705148756d4b36426844787359392b345a726c704e3344344266586e43636834414a69686e776c326572376b4e7957686e6c513542746162646a37556745427357704d765759734a72354f30414948642f66764a307131683836746c4c4165714c566a627872582f486e30312f502f774370726e71583254726f652f445571655975416f45447a6f474279746d556b6e4743615778715133525a4b6e73696c7a704636616e664a6e39723550484e6f4c674e68795858643031724a62656a3833506d4470306c3371663642394f74464c703838775556504c7147566c6476387431496b77564d6a6e626167334d4b71686455375064316337464e53435674724d472f48304678766132724a725575556e38796c4b693438356c7a4b4d6a2b6d2b5150674a6e4245563161426b354d36534270713452566a376b54672b6238516b35317377695765617538705a4d457a70783554384e516a654c6c2f615753614b33492f61312f4d6844666849506430534436763637424646584a33552f48556d6c755a796a67746e5171576c6a6e53716e4e4e6b704a6a595964372f67464d5a4f4a524b4b34414437785043757158795658633872786d6e65643355314936306e64363446637357357a7537444e4c35535a777a377a356638413338506a7567665251484a5972557558326b38794e386e4b62724c464f6a527a3967356d6a593476314b71676e396f446b37675852657342435977467867724d4e49474d536f7753696c585638704e452f4541686776562f446974476778576737744648366f4870642b5937413441674a66435966527161464943464d7a4b2f66536d6565466e52346b696f732b4650472f463167324335795359306b65784a416631775070694839412f367676413636746e5a752b316b37417558437568532b494c69337a763777674c394c534b65673776544c35756e4e776665624b5937755841786c7a2f734e353744664e58337674305a78537538666863794d5a556f4263387a4c71434a5065752f39376c55776439786e2f675839527672346857355838676a346e463144754b7273434d442b713658334e427147386d58522b33434677736f713972586577774250434535302f4c594f3336624f31754b564e4954587a70705377756b3444632b57687a6e43306c72483758452f5859722f44704f436e72454d4c6e786b36757976674134434d346a627a32794a52496633416d425645665a6d4c6e4e343638345a6a4f4376695752697a76324f435045673475664d307764594f3131556d5056333248326872617165577a4d43466e314b474a71346c6e4b4c6e5344634a456c6741504b524e63436741674b63544d41784d55495273756c675346494838314c4e4155456f35325a7a76302b5a692f6c4a713669307141446e66336359475a6b6647417777576f53546e784e396e554744543754554c467976544b303832576c517956324a555876596c5037554163613448653854442f454c415452782f7965344f6c6374744e48326a3571545548786839436865635054545354716962517459492b794c656a372b4b4233666638416f4d6275382f545a4f705a78744c594f39664f6b705668314f6a4b767467547541796c692b314c4c30663841587a356130677a767739366e3941757872772b6e7a357a67696835552b4f5251546a4734313143484763492f65786a4f434c6e4d45752f4d356869512f45794e7268727372344274705451456961726e48797a484d72694a51646f4e642b6e696c61307966794d6677444f467a47436e32385a37453067304145654358394b646d416a304253536a64624e4f7041785564626f50617445733331687172777031537a2f4452474f4f3176654d4251416c4e68664e37666153527347622f5a4a5652423368634370514a64556d6974734e4643756637362f6745766a6f6f537569465a734e6e2b78516337374f74392f78417446307163784437726572377749593354517a537a2f65617951756d3168514c57516931316a75456d68537a2f33414a2f43667363344d67596859733731585a37476f4e316e6572545134577648364b376870652f3471705773584c7862535533322f5a49652b3178732f6f4d594271475a6c4972554c5a5a6f6b61655a4d6b754e4e48574c652f50344d362b6b7775546c504f4a67667346504145486d4970615966675763353979477a645564626c744a334c686f45614d35732f624b7a464d36776c6e537464424e4a58742b506b3079676d3937542b63457049324a4357306d6b61595657584339644e656d7046784e6c4254616b4648514335526438664f382b6476474a577972355a772f5a4e424135304e766c41692f5534793054684c6f464e6f4a73587965663752416f357943566a45324c4c342b4e34664239332f505844384e414b336e536a674e68633243754e593537796a6e754a72766b63366d506a615449423042355154445977692b626e562f722f48356a4177564e7243586248503841596f3059796f7535476a346b78566367762b2f307944326e52513453715341467a35756645624f6b426a4e7752424b6c7a4b4f526358622f414b6b5a4d7974707a2b515030703647554c6a714f695a6a6d46482b6b7545684e516d4a4847776c6c383066456b437264427041725038417256576b705375416b37474e6c4342464d717a5478592f726f55476e33416f6b764c2f6e2f466a672f58506e425a7a7054722b7949764b74454f6b7053416e455a2b35795a30726c6b524e334b4a346955626966507a7673364a2f4d527041657155344258426f656e734d6949512b44365a5449376c61646647653432456d354a56554b35775164504c4b37696c434a4859507354384a2f584948376b6c7733495871525a68314a2b584c613978455474612f332f58726655714e702b344c6b77384471505a33324e2b795175562f7459444e347879305552576c457650704f6164644c6d726452554c4f6a457333502b71494c316b2f526859704366692f366f43783379312b3556496669686d4e596e5839516742527a5654477366664b6a396a394c36366e6b505670514c5349574f2b4d7a61676742362f74744151487754396a2b53684b34797977375535612b5554367a372f334735324732716a6932436d3734784c7069326c4c76623750325271396f7a67393577795631717659305a565475426e79386e6b5677306b69616d7638416a39415257746b7366753644484c3456414e4b6d6b464e616c4950616553752b4e706c634641707075475535616771434b6d5252763047366c376e6f6a3469657775544f3466546c565745344f4e52746d36475530664661454a4d716f547463794576705739532b49527772436458546132656a672f51485345752f4362534d50732b396a546278774a4346366633565258745a5453444a652b51665a3032614179767a795869464a474d3661566d4b617662527a334f5141725745776641615745704968786838797965355737356e48766a446d306a732b54386830675a33534769576635754b545334424a315764484c504f356b2f454f367371557149337154516b743436526764422f7868306a31765444457656532f514362756a503270652b69776d51557970595674505536447530554c2b5a637a697044706743557a4e417a6d636c57563435766d4e693768564131366737715a346362474432614a7971753668794a66653236767534494459525a3655722b5364667938534b6575704c354573714979792b7255625232535072364758774c3564396564726b575a37756e6e463957745a6856374d2f53514a6f4d2b6678356d61542f414e704d4e774e30354576784f644a4d7a6e487267524a704d5244795769666d5037596f3570633357416141376d6b4d766547336b3771365847777954383035424b556c586f5436623459454256396a4f485367796b517a554b6c34716561566839364c4459585746527757653538347a5a724a7744674779696b47714b5a2b524b422f624b4b6b50777931494f537a537458334d357157385932654e6e4f523063586e72366b542b446e76674373506d4e784d36432b5543467a2f41445a2f46303330354b6179695773356952663071496c307a2b7967563574516a70463151394c684a42786a7741544d333341367a744c366d614938714c596b4a2b6231743038385065716654376539364530776d4b7839314761547630427546476b79677946796c456f46456b2f346b757a4b707579566473704b5074637a694557764c3639506552725753784f4e6c5443346f77412f6d2b464b6638414c6f4659325654366f6178516d2b646b656571567a614f4e484a7159736f316336352f324f4c6e4257665537672f77436f536335387a6946782f77445941527a6d684d317366475747423175566b49524169476441646f3971563273304579464c63366a6863503239487252786d69662b4b562f4d41302f4838374d3272504c6849394331644774417a32495a70324e30433639774d446a57505a4b754f64626d493644512b763841785468414f2f4d6d67325a786a754766384d3334726b5831636c436a5146764d794e527a71574e524b7271642f4b5a3745305831425077752b796467302f58324847482b426d726750617a31616845616f636e4e7a30336c504b4d3872786c367274445070356673672b50326a776e4233346d6a387871534c546348365359415a64354449734b56696974437a3674645368707446314e417043764f345163577271794a4f663841763274364a4639554174374f3474455741306a314d7561656d4758566d66797234445a4f72526441317772752b716f614a4c51427056476c5a4c3532734a3148384939563077443364427865576854786b305431785079676d6c3430306c6d53645a48595054484d59646a694b6a6b624b552f6f524a716c77646d5975626a7a393447437a7136754f7572426e7a506f2f64464b70586e516f514e4b4653777a4f624f34726c486e77302b3031676f796d61546b41616e44324d786e476549637a65376b6959344666656b2b6748472f6169393547396c6c4768496942646a6b38304d3153535a7a3230696637562f6777424c3576366b4f7063572f34337265396e4b596d7a7a66633646316e484c6f6b433334316965466f476c6642636a7675583161586c337250595065427a6f61654562333275696f354f4774336d36764f562b7446585653716b466444327a736c5433343261544c503151584156386b333741696f37504a53457a682b5754354d78446c3143684c574e75577a4e6230784f476a5053714f794f6a36364978726f59624266376735784955643748532b636d424647577939696c6263557446454f645175504c3171654d7a35506a30697a6966557732646e54387a306b2b6a6a454f42506331787a66356f396a67667761484f2f4e6f675a586d62797a7543544e5476613176686a6e624c617849726d57342f63787231696b334536384a557547716a396342392b7048664f507a744b785531697230757643535036394830314f52502f414358516136354f4837766661452f46416b356d4d6b5374716c534247483537462f62434f6d546c43786c4852306248745970353174304b4d757049716736356e74634b2f6735774771345a6b384541306a2f5146384d2b73597032565478537446667931796d7559614a4230375230777059476e72644e326c5647593041746651556b5063316f4c6f556c77544f637a6e7144484675723067537748557777757337676f5663374c6c4a3230674d72543552564d4a4e6a426966354c326e317a6c635566532b48682f723745427679546279354835325a6d58724b5a6470496a6c6a6a6b56614e526e396a37306b30767a4d4867354d344e5572346148424d41476f616a2b4b6159786e6a7844333263706d70456b5557794d31617956504b2b6c677530565a71383559304e3476765259373275365865544f65626a7235374254514973674c4e5273485a59694645644432717a364c4c5a705978632f38417756644937486e6e63444d2b68384a4d4434484e2f536675555056324d426f476b494e3545394d7a484c6f6c6e356f6a56566e52383547376d6b3152534c664a6c30506378694b71422b47354e4e6a4564596b6b6748776b306751344b33696b52586554385534462f564c6c74716779304c2b71636c7633617a736a5848796a4c542f4b4c374c495331704532394a71766d39784d62723850503841382f38417354544d78632f4f31484f67676a5037436a5852336a374f625375306b36474c6b72437a306a504d6f5a366a435a3677417668704a526a33726c2f31546462416d714d3643336854764832665347395a485442336952374a386d6c5552677a506e597537344b462b79696b786e61707954446e7a462f6855506375326d6763383654444d7a6c767955545a59314c3743376874733131333569587947676f33706c6f43646b697a4a587334516353373230704356733159587a436b7769614d6c415045704f30575a6c4b7a62563337694b43314674594d3145646a6e4d363370724834542f7742797a44334253753248533872435241794b626b5a69745a6732364e7941366a5a73634d743276484837796f64386361784e4837364a7063612f6231782f4336386469337a2f414c41425470653437697a4b4e48514c4b596471786c613979364f496648672b31395767736e70732b6d6e53416676427861534d7945474a4f624e5271436e6a4b714751784f4955766f6761515a75676a506b61466c6e63375561773271553574466a4f6b50656c5368534f5557544b30714a4f683869777876327045336d67723779716c3375664c7a696e6a4851756d426c69342f6857656d7743537461632f7743763863617072474170716b6e5139526d436546555371656c673361434f366c31615448747a366f42703978476a7566525336677169344e3158554d7a7734612b416c72412b4a512f4f5a6b7741586d446a2f676e72303248555561423032445452584846464541664d64445a6c7879795358477a517153534f5451736f4f6e3670746138356e474654654c5a634d6a4336614743565478616a6a724b2f5a705069316c7a324c454a5a78637a55676f6c587747746233516332384a77562f77416b6b4c583755693263673352396e7a702f6c697a53305678647541517a7950677063577046444e505556626e4767527047786f4e3935306a4951483756664c5544664d75756b3855396b6c4b4869784762514a502b4e5630546448534749352f6d6145777944307242716d6631667670534148596b5a47744d3572316a35696b787a66684e4271626c547663693467625537507a787a7446564a4a326f6b6a50567a354a2f754c3047415862456748386b7164764354504e2b7477366f585356722f6a5861737763786835665048724e5a334b6149595136357a74565051687a65366a46732b414f67735536533658732b536c7a715155414d667663757a5073784d7a794232614b737a365744774f326a47334e6a556d54513037434b68685a4d71332f622b4c6e7551377041347a70392f7744515737347846574267733837596e644e636d316b364251574350316c4341773142524f6336526b757371656843693936354f4143567a6a38537538344c754a464d4c4f42324b73755a776e665a7a586f5132466e4f35632b5855772b32456d5050636d793969314e4d326637673473424e7651704372392b6174396b39473632474e56326665396c57726f353650345458634d76385155433668667a466f6b465074715967784b796635365544383378657a537666742b2f2f414144376a346a55794c4c49324f664c4a2b727073334d77614a315257545435664935737a52573574576f547659544335384a45727832465434314e54504f334d463553774247564654736c55685870355057374f716f5136794d7977763356316178576d66705746503176616b6d4a3572654a2b494b766c2f6f4c434455437a564c6c424179774b573643577a7a4d6972713068444c4f565769754a672f4751537a69666539345a396d6330327441514d484243664a4d6d4b35754842704f6f37646a7962633959777431364437613334796b6f4a5970366d70664a6d613161425637444c393841577a6d49634f596d596e4d42356b31414b356f5a2b464854374a3353684c6f793244336c576d7357734b5558456c4e414f6f57584f736d4b5948664e515a786b43702b77447877725453724a4e50736c6c61796a46356d76356470583776544e434a53576275646a5971584e73342f37485255437741444c3341464b67635a62766871486d68546252504a78356a646e74494636594a4c4e35505033694353762b51375264384b564a497549392f6541626771616c6f4777634b66695a6d71764d6e334a522b364d2b4876376c7a57353831427459592f495678666558376d30647043546c4d344c7053514e55594d6c4b544d4d2f7a3136744d374a516d62544c516d6a332f764868645179743630723674504a5669613139544f705973657973477966447741505a633046643061312f4a316a36365a73394e556a45444d394b6f657267796253775a6a7575522f412f737939314946394e4e424e34522f386873764a4e516d655851577333744b52314e4357315742513172416847746f394c394552643759356a4f64616e33546838776538424d66367976316a354178783045665a4239364f2f757061686577314d506a6c355441377958726949795979775a662b462f7234663841426f6533394b58796761547462624e396c6a474d6f574d36314c354d4c4c55736a2b592b55797465564269346136486350767639344d6a45474238334151656e377a313442626b71535654566f526e394544726256393176595a524962484c5331505268615a467a4e582f67745267514376716c66386d48763047464d7a4a307676655a39524c3042624d34415356585a4f536b41695a6d337674416849524d57392b737a2f5549653446724c6e4373302f476c79304b4572476452303869584b6b4f7a734e6b375a475a39464836367365664a4b31505359414f4e35664b494c4e522f3048327155573152476443316c494666654f4e6e4a6e48337334336d387945544a4e423048594877384177353150566c306c69504f686b48586f6c426244477164344b70595951664d74532b66344949612b653263717573352f6f396978617a703835784a3841452f7742414f2b6c316e7a4c4e4b574e6f61365565544d715172723536614b4644316c6166692b486c795843516c33356858375a76682b774c43506f47424b366d526c793138726a7249577a7a7262555842736253716f414d6c786b723271496b64364a4c2b5131487a336b3166734d6563616e62383447466c36576d3070754d43736332765459334e2b654558746f6c72364a663775517a7a4d2f537a542b776a524961526144512f726f4657545373452b4c52714b524e6c727963336d5362366531747a744a6554564b6f724b3372573533626932474e476c4e4453434d554333674a57376753434171386d78546336572f526b76736256622f486a544b312b697a6173306156447a5051565657634e43352f684b596568316675412f6a6d614c7233554836637a4c6563494258744456704d6f4e6961325a4332646d753076343958615655796731734c615249786b61545a79396e477a4e4b6b76595155646f4830664b7a646c63456a6f46736f797961636572395446594e44326f3532543469596b6d52776e544c7a535a333632715041483553664a32337766583941547230654a4e566170547162476d586949475548736f5679646a4372594f7264597a37544a666637506a3470483348537a3961525555464d6c737434437750484e41716c3858584b67755076794c6356536c44725a39483230464b76332f546b45637442376b635a456c33506b6e50635933726a5372672f315541666f6933562b456b444a6e473257575344725175476c642f474f7a737a6c6e78724779487452457066465539707459665763635a544f5630467451616d36444c4b33476972746a72615246676e6b7452494876464645367142526e3743786872726e5750412b4837494550754c37445441506d425a6e44315374745a41434d654e34766c6e707845364a5358636f375758787a433467646375716f456946424b6741774d444d307a414539517449706366436b7a2b6e675757615a4b5a392f4c6c746d6b374c3964576c334d77545a2b3553484c55566e6672696d67374b556866534164574e4671527a66495132723748656a50464f72726d7a36577678657054496c74505034694f343661374e44342b6a385132584e3667692f6c3570744a6a674d4f7458316c76342f703667576c6e504a7558634b4e444d546d4a69393077415856727053584754777833304c75714f583464684b666638632f65415467412b6578704b4f6c75732f4d567068366a4c4d365946716b727133704a5a4465324e63664130317a61783074675446377868644f794e6a7148527270614331646679514730642b57312b7366495466773961373055446e4e56544c4e6f52724a3855615a744b4a336365465670693250514e435246356150794f627766684b705459522b63582b2b67446552376c4f5a7156544c6c6a62734f534572322f586154614f4b7a58654e794b5a6252515a75353964676736697346436f7458734b6672714d3374745775373551424d464e65664a5657437461664c563777765a3147764f4c6f3643716e71304d7a5238675856397948724861442f41496e6f4e33332b63613835785942303743522f556b594d6970493832787a356d5335795266517a6c66377a6f3752747771726f554d713175352b7055505638493278315a6f2f437559653054487a68576d39674c716e43546b463757546367682b35324e743863744b565569586b456c445034347634316c56516535464b6a4b726b6745336c4c706d413253624a4a356c52615655756d373357535263376d4d49763478347a31366b7561685a4e5134736c3036514155676674416c306f636b2f614538625435684b375452666e507165485131493054325255516c5179565661324d314d79614a6638414b66485049786b393167395070312f593067443367373458484142514a54566b4b51704759712b38494b3448533964436c6945543364672b5a54334a45636c63454d66486e5362614533706d2b7741644f6161545439353638424d4c46457262456e3942316c623755396b6a5a6539342f57746a6d37504a3062707a68755648354575676a366d7833774838344c63524a4e7466672b76364437777333503841494d4a736f56757231376139485455614935446466506e54755661682f50307565656d7a365947734f74706e6378596f51626d54557572787835434e364e4c326163363771612b756276775a7358433275634f524d497254466155434353656844505a724d2f6443355a47334b2b536c774e4a667a50424b743956566b304655444635336553543979354c382f59584e5632396a786e6e6a6c574e575447724e717a576d43775831535471564d34414d6152302f672b76715139386836503373306770374b333248517a527a3234632b315644524f542f706f525655314d656c3168725a304c5a66594c34782b6d626554786c2f5552324c665038417347613239646a38537651567a4f6c716f54485963637965555746703575544279706b5356756455724c714874546c644c6f63306757707a6a644f4a542b383965416757724e4a50354f69517441767032443547765361696f6c734c557a624d333753317a466d6f4a6c5335374b6d6647746830746254393776546a573368577032594239496776783566636a4f743738675461634e726d747a3079617566314d5374455579354b3248376c726e357a6a4366485776354f68776544504e54543475662f41492f39436973526c6c6b6c6b6d664454524f326345334f625331484d536a565534666470676c5936446c3265345451384443685077356c6c78352f74623972556367715a6b5265713334386465716e416d4c523951642f483132352b74566d5a4933665449557a5359777a7638673142716c684270443952396a4e57774a4645594b2f72624761367550796a636a38614b3361654236745668467a526c312f4f504d4944302b3236315a61717a4b6f59487847624a6c62547033565a383656444b75744e63435444707a5573654764346d4a726d4f34513330482f414a6a582f4a583177334e475752484950484d5766486c5a4d6732394f744f70576a525055625050544375573464706f4838445a716158574c5a636d4f7a36646b7a694b5669426548706e6a49357068785439484f78683951624e43757765643870584965514e326c494556486b4a4431302f38614f50787771645a4e482f34383574695a6841674367744c7a2f32515753394a506938772f44795346435a77546e314c44536a6c305574626e574567616847457564702f3132636f547a2f676b30554159485048737461492f4b4370334f55466f624e374d384e5662635832785a326e5274636a793946394659574a5464737046726c473053376d696145744e306241436e38316a62714e43334a695a2f4b624177707361356e6b4c2b5a76386c70325763377536464748556c6530704a654d6f486b362b302f4b77506b375a504e326667626c59756f79615963764e545666395232674b4635747a59595668432f466f357079587658554d737658616b61334a6b344c6638715065716234756d63634f313541467230665276767838324a46627450466b7171796d7072716d566c4966613968307a5a57654b3261414f6e39677374414f634f6d636c306d6f366e7a4f486138684c637935433871366e5070616d793775746f4b6c74375a526632475556756130494146792f384138486c6c6d6149382b765265324e7356454567526469324d63335150386c565472473361465479616b477a79785236726d7a54314456504c6e396a6b35704b586f562b31624b2b38636f523778775546372f384141473246796f644c6b446d56513063726e3442532f7061754949744c376f7a4b30395a3465307146722b316e724366334e426f4a70705033416f45487a39664d5237514b72545a4a56554b684e76596769525955764238676978556244686e4f4b645a396451716971646854756f54387777664849535463626a43652b4d524935496171493953684f6170413875714f79596d6e4461375a3457577a4b5739376e56523643326f5730666d4645413030474a683777417879563965765771474b527642727a335564556d6964484c732b717a764f746a66376743775263786e45554c58785066596b2b4c34304f6d415079486e6442316369703953446b7934506934644c4571533474427967683548544c5177567268577a6f636c5531687a4766764762367a4f6464413264782f3841493539665a5a344b6e4a504c5751775a6a497556537a4e42576b477a514c4f7579314c576b4f7a645734576e4d39715655754f647a77765847427a336b38457574367031482b61464c30476c66484f344f31506350366e31644b4e4f655268314a4d2b77744b336636574748484139312b78746574376d3359334b6d396c624d55724f63653652466c4c4b4e52784d6e4d68427a352b393458572f574c356c4a446a75554f34412f787434466258386a3167736c306d71386746714c50327859796352564b6b464b7956567a70582b7835315274736373656356503277776d474b6258374e737a495a66626e57552f586e735955534e446a6d5744566149703075634b647454695a7a7270414a663841754233656966324272667379506d7a5979685a484f6237413756504d72534f526a4a572f79456445564175366636436a504332566e4f7a675047384e774331784c346679324174576952716b656650737a323774466c504563354f58566d677046547961496b7855616d4a4b772b74556648647063735574456a4f6e67416445593062506161476e4769675a344b536a6e757047364a72474d507430306154533550666a4556566f4531383461327336482b347a4356554c376e4b5238356f702f544f7578704a64523155617858776c51426e4e654b2b584564535355584f482f682f4a415a48415351562f514e485474564271502b594256304733457170367145396d716d736f737a52565578667463736c7a75576e67394c3635395067443835635847597a6a504551613579332b5461694e464b644570462f556c617761516a6f6a303572415771735a466f4262666d6a797575365066394a703979564159754d354266786a726c526163464e4853476873476c3262684a6b306f3377304339326c556e525966786975364e6a78367877742b785959324b363970546b36426871492b396f55744a64746e6571496b4b5539333872594e7262365a67357732554b30736e356f364f2f58436752466b61334a44684e636241677032676e7a45723649335666566f6d7230515130346b512f365858787a424953326b6c66474a4c2f3437534649516635756e447276594172314c47762f414d682b476c484c596d797861536c534563767749627636302f586473646e73376e7969363647726a316e385046413144516142702b774552387958504251774f5233624372644132783537593661692b623677746a703633532b583638706148336b4431436630466c4943336f2f3865304c2b3847726f5a347a6c47642b525453794f67674b577a586b2b306d70485971444a743933482f58613669586873346f322f4b6c4148516e33732b7346552b663841324a39484d346e5366315362362f736163645656595776757048593065477559672f6a2f414e35354c65565078305275646679616c673959536941632b5177386b627a56356e423265584d356b3756484a71577239694b6f6231646c7673655643353357645277434c692b2f5a2b6159302f5939303462465a6f662b6c72574e487a736e443646622b7953774b4b32704446726535434261755553584c4c47493043594c4f38352f394a6a3879676f507a55754f7441756f4e74584372586d466f6e4a4e4b524536524b353035714b4550537a6a7143595644574e52387957454666524b50394134785a386f39764259366157715a2f7a5452486c3667614d794546516d4769315a6164483671642f4731616e772f484d35483642662f636263365a485132412f66486a77617573516566544e4b376e66716b6d696b654c6d4e584a6d614479587244394f58397057504456516b6936395468564e4f46482b616b7a7448426f653265692b4b6f7a34544a5573724a7a4f2f517a4657314c574a4c2b774c6b3041584139687a4152435a69587542544a724c75674b4a324e3570722b33612f73755a526d3072354c584c4879556b3054683268774e31506e39334b707a724f4d65676335722f414e51574e366b56766a385735585537764b5664367276625657506b666d585a6d67544a5574624b50327665783050657a44384a7143415a672b76514972414e652f5343576f764b34394f4147557a73624f716946386d3553325a776c5650392b796f46722f6a35795a64734e6e5950544b644545365768317741314e72626362593434443338752b667933672b5258334f62634864574c67712f61304167477a3049365033756b4369466a506857544a3274364954664952633448776d302b575969415839513058792b6a506a5a52363964593930664555616b4256346236645759363534724b2b70756c2b52634c366b35343857755961307164376659502b373271647142654f7330447734706f5556724b6d567275567636314465386c44374a7070676f73476756387a32477368344941615a754a6e4f6469756746524665585a2f57466c4c5369792b5664436172526e706567712f7261484b53754f4a796672694f525a7053394e725a766b39694248697545487343574c4947654e61646d527739467a706e79796f6c74653074506b76435a4974486179364e6958315744336c49557a474166354166776d67663644582f78434e3264364d2b6e3038544a387077582b517930317067324e47476c31586b656c39385130704763515678325a726d554575784b582b78795a32476450764362645a2b5932647a5a6d4a38594655314578667873564d396a64474e4c582f734f734f717050435366574b59357957554c372b2b664a5342542f414b5958424f4270722b525975586e2b42365a443854662f41434b414362476d4f7066376b574f614a745465347555503476363736324d346f3535706e2f41446e6b7239587230763876376772367a56747277764557357879756a7a2f4b73715a52357151544b765264394f315063677a396836393364696e504d48543845762f676950794a397969697678664b52744a4e7a3756587a5452537a6a6d36776674484b655a716e6f6a474e73646b366b5a614f726f4b57566e75464939496870452f6d6e345a422f5651387842705a446c4d63713145705354584d72736b656234792b794e4347304764487664384e6778734e4368564f37332f36514366684b6546432b6531705a3633656e4f5630536e72723858304473737270596c35535a57676d7a4f35537971672f355a6661746a39415352653576334f4d364b316952444d5932326e77774b782f4b436c55766d486f5941766d517a75324865317774583164582b6b4b757a64535a4c58517475684d6f78426a47482f6d677541332f41467a7574587066356633477a336b58512f3841485578534d64395757574b4c68506b51734d2f6c51485557525734366859786662466b4431447a3339544d306e4b597a6e766251516e7749587936654431584a3630366a506a34794f68424154696475466d363943636d46335532444f786a5459757232424e4135524e6433324e494c5931374d324539524568456f567137714c37394e4772787768396d766867746247746c486b3431664c77682f3268417270436b7759336b526e7644584e6a524b35644356703071497474737a357633785432317a524d5179355252546837745255624b432f5265342b636a5069584d72634268494f306847674a617247527a306b43676c35486f57564f55696c5a576a4e59785a42386350506b49783531617566394e70675451464b7542564b682b436e6a3278624d6242614f66492f7743334c4d4d4671314f6d4139537446424c35523155396b2f5334625a464831797166722f4d594f436665473567533570307656426d556436554359637271657571556444775a336e466a7a6c7150644f346c652f6e522b5a4b7a2f774237696149424b4a616a53513332766f3779756a6d6d66624a70717551737134776870653646584261543839785471425247614239354177356e554477416b467a6c734476476f474b644e6136714f7a6964626a514432683373383548544f67484a63772b694c75424f357965437867554f4543634e476a55567a6c6a307674557954323045354539305a58564a5750656478724f693663307a6a5150653956515a7534437854376e55465732333467547447304654333053746d556a726d7a66476f717143427376736e476b5537516b3466614c6956783379666f4871443372447666335044732b514372725a5277576b556f31652b56667664483944685141444643716a75717635326649497030564d4976754c4546694c562f4c77714a44533950443577477072595837644559474a433275426d6b76506e5934454955776847685032576a7744455163552f774177435a6d4153786f7872564f34436f6d6f46324e625079355433536d6b3457666159547a57667448677a694649634c6771366b54613376384169526846363173644f36684965346b42584e4a32586d695153574f5656554354373334446e53544a4b436a4e6252454b627936416434312f52434f6f69574f593857496b54786171686d62564f743144636e7333792f7963724f542b3066615831616a375176674964387870633454443551505964545a31422b3671315a6b6368537a61424e6f4f4f6b39586c48312b705a484c314e6b7148517349784833714271572f45346f66614649465341364632746e2b7461383156305a3148436866485138774a62726e57524534462f4c597569626e79715074564a6b4451623776633046684e465264376562373052485957695a6934356b4b49714a612b51726f4832664e5059396e564c426449383442696a35573853663952336375417a7a4d316856777346614336714d61644d6b556f35445641644c503365527458307052477044506b357966706531786f6f4e4b2b4438735774742b6369516149513869567855382f655047616956632f4674724a72714576442b572b34732f386b757a70784439384d2b6453496446784f4d41632f6c39776b6b4953367564675274574a796f644c49592f496e726c7a31534b6d6453763459342f5a387a474247303267774f4e34345339354a632f6c3977774e68677a75737941454a3745716d4e456b386f554b2b57586e4a55517257526a373054705958466a7a765337534852396a6950337a7737506b4858316a76506a69686449446c76664f766e56566144723656777a6d476278684d354f482f465263556e39664c384a2b38334e39344b6a685750494e66494674476f48326c6d3152556b6930374655324465767371334a4c6d536a6e752b4575474e444669746864426e7346784e352b2f6570325942434248325830445062624b424e43546b69352b3852545539397756533138343737517a72497632587537386f4e57424c44336e3745324354364f352f32564f3578546a6578645138376344545a315757746458473275377956614f664b7348434c444a3373542f6d732f65594b4f455259584a38376a2b587663434a6335736344706132546c646c314f536e393955786b715845505457534673396e4441515838516868586d436f34352b3030637a58304f6e2b763265424d3730386c597374483639452f75755954584c50334c6230556d78594d426775393441506770556f4b42706e4363703233795a71612b467941795539664c4144686455736c63586e6c5344663337462f4e7770326c3741454157464e4545366e31664b693534694b776243735538366d7270735567464f4c334f2b4832422f795a696e374a4277517055537964664d4c32762b7439594d384b304376712b52582b33534c764c4f2f5659783963316e79464f5278725358754661334b4e7766384159446e4163414a526870305a796868666f5439506a46304e5a597a6d4a315a755a3862594149454f5a4979665041754738766c45456c3065696c674f4f764a3566594c4173327361537a736942516d55337a307953355953464f745471443435662b4e6e4a657337516a342f6d41665a7a6f556530785659664f716d4130356f50463867724e7a70704a5a65686e4a616e346a594c667575626e79645950764c7144364578676f6843732b6e37416275664b77575252744c6c39414b44505632583638387a597a543931435364516b682b56365845427535502f6d41437a3476594c6e527737586b42676a66494c36714679563241544f476c61614f7a6f6c5076334a364e4d45464f517357496c3273422b492b66786f64506971426178736774375843736d432b495864464643415a4d342b757368695341564737695a7a4b785352644d66776d446b3953716b544d43426b6f494c43672f6b627a6a6c6d5a45755a70733658446375474e67394e6559516a4b564266433171754e635175416553416248433051645176476a59467444654c63396755704c72576a474c526644597051717142664b70314838613266434163486a676178514f532f33562b4436666f493973634f7168696b633446764a5a306f6a75374f70562b65566767696457716977324c714f65474d576334763972656b4154374a676f7056594b2f45746a61546b6479506e644f772f77427564785054304b36526d6d715969796a6a52657251646637474b574972735437415039706f393453423955386d6431695a43734e4b327931417142316e5166524c4333564f616a6a7664524f516c517449483376544e4a394d2b702b554f312b50366671416b5844766f6a413353764a494f30475754527a5a394b3832573735713648584d2f7742596f2f6c436378665136526e3977584377774433717430386745336a714b64447730704e536c533669546f30314849357a4b5063632f466f2b59432b787877736e4476476d70504866344e346d5a706441666a464d49476962362f6538346c64353556457a75642b6a41366434705839632f742f6f69306c72615a644d6b702b79614155414f4d4a33504f5064486d622f414e6c4352556f5456724d59463476502f77434e647a6a6c75476a346e51786950515951474267386b317051507472756a6275434b7a4a3267454e4a7a4f34666331374e4d364c597937586e74485037592b7454756a51515469544237306c6d626b2f4759435375394b77696e6c56307055382b3370635a4d36574a6e49476e5558577057356e7866746f7559354f6b6f7635415644374f38534b5263584155766a54426e3479694f706e59556b753579356b6a394e4a54784d584f71656873516b6c496e38612b357567553473487637537667442f38414441772f7030457331524f6650484e425a563943766b333665456d66386230476b577872354d5155702b762f41422b675950574145446f2f75644d2f6d3630347847643369454a732b715948706f3554494b6c7a564b717157493158494f483646494736496a6c7a35794f465a6a383346755a3833415838704b5962704545536a764e63334a726339314e42335479766e4e715a324c66636b684a7a43416d56636443796850426e6143666f4f39726e664d7753413334746d726c716b575059754e3057485670492b5436756b536e506a376f5678763841727250363546522b6a654c32755378507a665a4a344f464d544d52475a452f36786f6b74545349757775523974763350746459544a426f66525571307631504839636147384969486763647962356e4a595a46484a35665952375331686c736f7a346232506c7a4258556450756857584449584b4d36465a37475561566e79476e765137457049444d5a6a37762f713052787a5057525639795853614c4a56715431756432777056546c4a6c6a6e73747253717657365a2b3069495578724942482f6374767561317874616d6b4c41746a5a7878364a6151564b70736f304c4c49722b71616439596b4e487a70457231714b4e6b737335735a3852762b6673644b6751326e72457243336c616b787155527a4d65416d76556566375344666c613070434836755438705a6c484a6843677a577450734777674e716a726438514462316f7654373079634958353174426b4d6c325a547830374755486c314f735758666d3759745a394662557239344541634576304e41414e5a397a45306b325930544b58302b537a547361646c4e4b4354395a4c5976614f6958667139583843444130757a533738762b70726743746d6f5944356c585a74632f62556b637953663166477542307574466f5a724276704165726e5661494b37787a5769377363664453566e7543635a744b5470717331755071624b315649716c5837437049516f6455613479637734345a6f522b45794e61326b562f362f31436d6375506b46724a65664f56464359524c71326872506d59706a6576694c5051456a6c5269762f744e764a4a4b344e4a754d336635714944396f414c6c5a663367494d30792f536e465648457a3145757943506b4b5a51696f6c61394e6b72506d464a4138557142744c77344a73436777414a7670375a4f6f6b313573366c5a6e7358576a693754646f4d715a77744e45325a394e6a46395a433376756a553337484d64616a536c5876416741304a4c746b7148584f59585065465949554763366158674f44555a553750704e47686d724664437a363154525567484d6e5334785949677a305638686c6b35542f414f7135373634324a51794f4f3956763657774254666453377136502f5452304a2b2f4630466d38327549364841786251594a476c30493562424c5a7452504e483968636c54356232386e715a57672b51352f77536d31624664594451614c65783243304439346e77432f796c53694a376d734c69564f6c4f366d70764b726d48615857314b43664670664c48546e6b6b466b70306f4e6659594a345858475a674938674a74477257746c2b596a696b7570716844555936536d612f4d6f445265316152494e71696d36786a315338533043396a5358317a446f53414253626e64557531514f35444a4c5657794b714d6a797170584c715a6f71304e75636568515135384a6a33374a48306970434f6e33724d316d4448337a746b6e56736c6c4a7031703943615851304e5447616575415466757a6d637855493867684b6378506e7353432b66516e6d35384361476e4944764d43656158374570614a64505034396c6c4357484a436364566d69797542664c35684c356443644c324b5878503079556f714f546969696d674574696164687a52463037355343374c41637835766c4b6c4278716e3668655a6d3039482f57355964582b766c2b7a372f774472735550484b41624b356b2b6348484c426f75435052512b7539563945314d464d76623548706173567a35367662726437774b586441412f39766659424b434732575554574d363947776c56416949614544725063365a716f623279726b6570624a63384a784b682f56445350312f616170415637772f71654e7038775252646d2b334b4b724f6f6e6e326876664e4154614a745131326678366161554c6263635559333045356131796952712b326168636c6870352f55382f6e397848746d4863764172614d313071387270424a6e4a7a6638416f6c7130484a6364622b336b684336477530456b6e71574d3578767364596143554273742b7a395a464d47594775704b66616a2b5a7a7264506d667658375765484632617248553052764b4f714b717778715a45585674494c78324a76634c5a2f6c56566f4a68346446503234633662356b4979326a6c6a6a616d654c7934697a4a79426e733156736c6f6e736f626779734e43464544524836374a6872435a50313633374d694f2b73562f384a73727568796e33586678624c374959623159343154385655303678337170667356546c6c335541505a4578676b3732545575636f66696b566e4e59386842735652703245364e735639664c7765366d535873795164483874562b6e504858707755393434536f69573230324b45323654666a6f2b76397174457a6e4534366a59374b76392f6955714c37613339415a5a35372b364d713175376343614f5a6d746c7675594474447564555273564f2f76486f61514b464e50313546302f65657641534c482b30764e7a37645879704c6c7a50584f64527654706e5547706c7a314d756d6d5a4b2b6861364d3874425a66613967744f5a7a42352f7a77516966344d667a433346586a75455465533862747a7755512f766b645566385a5a614f685078364b47664a72576678382b6b44567242784f53616d7a4f4f7a324f474f58622b594c52584d364d67366c57566e4a697657476578655861576c626a765375776e2f51574b782b354f78326c4d56536c4b524a5448596951706c42514a31784d39497943756178313559335552333032527757324d7437324a746d68446d364b31397a463941706d4f6f6f59776d49656c6e654630354b5875555458557142776c72526a547148546e327154774c31492f6d54632b4a656e6e3848526376507145666a30487247746b6c44774e4b4a6b2f41526530452f43456c686d5935484b4f713057704b65532b6c4b574a71716e59324a6474566b315a586649377262744c503764387948744d6b75536f6e4f5678333941522b4f6f303531527951554b785a51575772503343524f746b42353946433368444b30636d4f5a333156766c37634c6d69376f4a53482b484667532b4364495544314e2f64446b325849534d2b6d524654644f684d734d74576f73686c3544565179563347444637432b616234656a30422b4a6f535971506a684f577a2b4d30794871476179317a514b5035576f6f366e536638414f734f4a5953562f4767535370584a512b49476759414b516c754e564d3456766c6f626d51507154326d534f3037486f5334785a4e3134746a2f556334792f435876364147705765424d4e78732f5839424e7377583147692b3561472f594f59587974377864456e616c4372393079445677796164555031574230462f77433533794f502f4252707062384e656f6b456352696a4f6e516866526955514f52617379754e4e5038413251646d4e37597a345038414b576f68486a2b4154707668552b6870653462676a3041366d5a452b5a4f567454516d5450516e3279754a6e77496141574b49774363353748482f7930586531494b613158654838774a47696c4859436c6c364e48476c59564e443649497149654136626a4f32746e3436552f7079724a6847587339686e78457a693459474566634b425638424f704472794e696533394a3346486f304c524e6f506a65582b6c67547239337741302f305a69394b2f6233354f42484b656342306c4b4a6e43693671356c536c67595a7a566b372f6f4f67716238696c7254557868504a66764e4974345037616b6c4f5941443676546f4f643942766679656239646f4e66496b352f55554c714f78515475543263716f35614f73583732662b77414c39506e496755564e77544361584c3967664d446e447a70356f6e56645a59766b3149306d52304d4f796f52656b76725470344876496d64644f42417876346c5066703275644f78335679562b52566b3771776d616d5757682f7371576c4a43324962454f48687a556e396c6c58775039366a63426568596a54565239655954734e4573777266416d576a522b5737524d617152503966593674655730757334314c666d5335784e4d4a2f704142507470734f784b333279356d79314e4e6e2f4146614b676730564c4f696c375276564b6c4b344f5239596e6b2f73412f6853734b65745a577746334b6d686e564f6f6d5736466c7673357830794e535a6e4b6149396172756e316a4f39755979666a696e3471634250376a507266596149556b44577134726165796b6c6c2f6674643759396f7a78374431554e7a7a4e4538363264347358735a6e38347069776159325454417070754435772b7a6a37386a4d48746f6d5030352b50664a596d77756e4e715a72516f346e534e53326148574549396f3579646f6759482f4149714a504f41666758476735783653503338676f374b4278707674487449366c394b6d484b504870556b557a566935587355427658772f62385844424759484d6d6b39356c4a4d79577670555754705174736b3038344c304a4b684a524d4a71374a30664b6f6d755553556d3562506572347749635a64306947756e4f7a784a4f6d706830476135536e736e6e6d62544c3957767666734e2b4d76327a356e4d496b30456c702b2f7743616b444148584d6c64597a4d67594b4738353277716e6862584f71676d3873577632644a66436d534443623765662b303064355142712f6f4838434830766c6f6c5a5378326a4f4530326f544f495970772f655a514873636b324a53796a356d73457567302f72475a64614a41516777447132394d4c5a464f5738536d5966495069305273585578316a796f53796b6d4d644c5655623248515a636438767a414b654d5749486d30464e495854612b57743846496c66306573696e4f633354433368637a2f414e7357636135773663346837666638696d4d5337334344476c79506b637a36316331712b3843744e6b353058722b6f6c674752703552773243396b37442b58672b3078543743446e614139774f3236466966726a492f6d686f575a3145686d447179766e57793476704a476a3751724662766b583368467a76584e396874594b775a30672b4f6b474169662b7a6e6c5a6f475a503559596f6f4b585164704734714f2f73792f65584c4b676d742f785362684e494f36327634733932376c786a49613536714f666165306a6157775836737458372f6a6f70583256376a2b5a624437566d6c44626e7142672b346a4e786648305575635a3276325a434d664f4558445a7064565a41384159694a4a76542b7132457361696c596c62474f35546353324839666e5032355147414a45474b734671356162767176555669317253397578574643797a58382b4f5654756f547868726e596e4c7535305069503478544d4b576d617734332b71384b7835426a314d544b55514a353173733965635876546f6649703744304b50695736732f31306b7257784d61564f4933657a5634526634455073734561505a7a327163796e365a31697439434268564e55616d5558396d4e694a542b542f5a5358456c4d446168424a6d587a4161476d474a45784d36574e542b335543326a73585253456b3342746c71536b6275696b6d734764795738452b752b7946687536333544462f51616a5933336a4e4e7a6c4a4e36314b32653436484934366d6372457670584f70597234366968776a31696c4d354d594366666841484136354e4c5933736c6f645439545058704f6874736f71474e3946384b71422b7954466a326866326662555a6937694f755533334c56374f41474c6b734248657738514268494b733448644d663258785469394a305a6b49716e4653314d5877505a774674714a7a50634b2b6877475668327270354d556c4f656d37333976685a6e3030635539612f6e6e64457854754576322f4838344637474e4935695a77754d536c764165304a6f66564f7672567939592b67666336694a44794837663658594c596f324451733954516e46362b304a49546a6d5a4d487344676630444969374c556c63636979304842492b4b65695a59396b5771426c4c71705344397a72306843716a33733777302b3847744a6e764249414879634f50424d396b5544446f482f637252716950674c6655763557416d46504869746f727549652f476f45445948666a595a70564744707662656937716171435739445347673437455036314855327954725574796b77754f616356744a79466d6b5a6961347759336e7a4268323945545879614d64575771415068393045527a7a7236483155727052424c59527045656a52376846465367732f7a585a30795761412b58614579476b317a31694e4b614835613353367353324e3032584253384336494856487865683746722b735239503475633976574d647745344235516d5434673733757946782f5858777332716739434a4c357566656d466753714b574f70694f636638552f2b48735958545637775a747034466f58614b713545386d6162564e6651547156364552466e4a514d553471637635484655782f4664596b7671664e7743455453487a392f58667831454e4a5531356f48526f59366a2f77435445462f4370434d33532f655a37557046354877774c6875363368454a755959503275366331634c3047726b7a6c55524342737a315578537253576e32637447796b4b50645a59536d482b7a6237744d326e4d783666616b4258412f66666c7373584a574b5a6a6e536969394d68756e346d593039555170625263314d47587756695a47526e33704d4c7045336750576f596f4334316f4e523042347154706474305a526e68584e664c4e5576726943646a724a525a3370703650515432527a5150767342706d6744516359755136502b4d6a5144732f4b58564d552f46324e576d365a32714447536c516c50756e357a3964436c4a675878634d356778374f6e6739513334467051314831314f697a6148635945724651746c466158664a525531692b704e6666684135702f324644446f4d514b456b2b794e626e4d5a51696e6c444676344d6c2b634537464d526f785649696e50704a4a68664f432f64302f6b6b476a33416648682f514d6f572b2f514a4f636d7042544368737a6e314c3475422f3171466b75677a7157304575644e4b4c316741416b58476c6e742f5873654346696b324d624f61386a747231317a307456624977666b634d7376534b55574477533547537849783471674a34774476544f723575682b466b764a4f485a3373383772654a624b72493636523867475164756b6e306d642b774a664a433075705748744b596a54372b74396841704b4f586566456d315271557430684e6b344f653953667256517a686e676866316e44382b6b456f735573514871556d464c6630492f774242464c2b71566e644650546d46594136634b45444b755832492b32773663364f626e624d73544668673875392b6169446738623963682b7948476e792f50533366386d314c7558486e572b5a6256756a62584e735a78716f47722f4a4b7230614a5a38713671717031764571356d684c665352476b6b724a76514f6866343448714c394c737750704854544e4e6f395a4b2f70486f696a744c4a714c36684f373330616e614d2b5951436a354341304a2f37644a7557786d4e2b31497452754e626370484e7a513764396873744c495a524e514e6d355249326766723046774b4d2f6d7837766c4653674947424c384a764542352f565249666e7961724342694a7a57754d6c57546f5a4e5134786c6c43584d7036706c414578616c556a7a726b765032386d446a666962374738426871396a3062686a63796d56416d566f4c396d3554552f774338386c75566f534e494371637963645432475166546342683159763666425542486f313967433934574757535848645454525641587754786a4d4953684c507a3343646c6e37392f7a4f61677a556f4a2b304563774238594d394b63324e4649766369316a66716f625665316a2b755a6f66794b33566534714c674855393758384e774b61347a4e4648617745514676306a4771364e393771426e75364c6e397a48765176325556545366576d536833624b457a6a4751474859306f363548776d372f33474567355a334d7a676930416e704e494a6d30716566636d6b534c775a4a7867514c3777334d36762f414b3656393930342f745074396e37435941454f3278702b784a506c5072534c377a7a7267303662554c5271614e48487a4f6b4b7862485474577632504d68597741734248474c63745877682b592f51354b36434e306665562f53304b4864306f756c4a526279786e7936454d58365650375a5a6b74655054567a324278345474425a705344794c785055316d6e7355616f316f676e533336387a4c46393669463158784450525053485a364f61583342555a76712b764e2b79636b72676144497a476364344a5a47624f65694e4646655631582b77594b564c6d376b382b34737371634b45704a733955395366384167554159396f4f6268652f6e365541534d2b334a5344597535387161595455736b575a4a727563427972486e2f4b66313863354337503738694f473466655a2b366c493937304845334a68704b2b4d6f71657034694d32635733636c5976733471514a746c6c48715446784a377a6839452b7a41356e36366136444943485366524e6d79674e63347049707751547579392f667a31646d34316c4b332f774161376b36793972464e562b6b6e796d52596854304641306a355244525a6f503841484a2f6972315530417234696e575243566e49345a2f6a5a384653314e30685956432b46377970426e47482b2f6b574373597335394e6c5435314f3632326c3873796442304c712b6d78447134694558716a634e535a79373075456f454f642b6d48307a582f51477035564e4b5972426b66535674583334656d75772b396166316737537574624f6b7a72467a7135785a6d6170672b594370554368414336733546365968514b3571654b5a4f6778585175313661464e6c62592b61346c48796f686a7a526577464744457a4878744c52424954313331385145715769574a6d75394d2b627874633868665a3669506a6d4f2f6b72466a4a6633556d4f7549492f726444396d49393554777543306544396177316767626d667a653268456c6364485a5a2b7172737158724658336c4e474e4a6f633762516e357275313574314a664336644d77775472642b7a3938344f4f50494f75544b444554714c71647059394c4d67324d6c63782b66567841797a6f434e7569777773634c4572466e414c696a75304f54744439483849674b4c4b5a41624a695863757465596a787954616f4e4679744450622f686e43793264686f6a6f534a4538453942716762707373503841557958546742436562635a31636d67674b784b39563138756a7862367139794b70504e495a7148547347645966496d68712b53744b594d4d7a4b46636c43567a4132624339456354666f76633179687a724873794a384d64493059536442554f7a584d6c71666f397a714773516c706e39515569584a75657a69656773744e677355794b79753652594a5854504f35325762714a7942463071544b6750745766476c6243612f687243672b77302f664d4442494567366d6d694d714f616f6649596b6d5858473336584c2b417754302f357131315438304b6c366958644a4b663359714e5442346168555051614e4b76564771736558304a3544444d7472555639364768375742516a4a73466679733437345353545136347a736431416d6b4f726e423038684b305361415479317872702b547374624931514332334a32614454525575576b553264464f6f55704f2b5a786d4476384739344c574d3463774173722b506f6762374168796d616e31357a2f355666644a4569664a2f695a7a4b47467957664e5a59746c502b696b4148326d5a47777947674a4263316c4439504b7463476c49764f4a633048564e7a6c30496a2b7579777561632f364c347971516d49316336596c524d366a336954474d6b43426554664c5a6c54436d47686b566e566f41753638347954477258645277707535347450334a73585558565059536b766a2f7741476f35386b6a7072316a35694e38614a32762b52703839772f74715376556638414c53555a58744452795a374a324d6a6f46493643776c3679776675594c44556c784a416577482f4569715232546d7a5479486569473736664e4c5451745073663543624479497552694b5a655555504c726d4174715263524f45476f6230775069686e65544a6c374f496d6d706b537163327135704f44683259366246537039376c38306b4a74624b7444766337453530476d6231757141706a334455374b6b536c534c57795a317576333738646961686937502f4a426f36504c506656516d63626d72482f5638495a2f55676b5549535534534b64656c30726830346c45734c4f576e596e53616a67722b72517576536e4579436a3457553474545a307244355335374442613341355a6855336b382b65337948476b6e666d637551734b48785470544e454646466b5932427955324367626d782f43674549524e394b796b3665756e3662556c654f7862352f32454852446451394136505a73636e2f7a744e43744c4e7378747136796b5a5736326a5933706675717273656a505a4c786e7775436e2f7255643630424d4a34625058583139684e5632364550756450744862385038707032376774367179546c2f7461394d69314437424553574c61567a762f3366376f7a502b524366354d784c704c31326c5954453658796f532f346379316659724b65554e5470667457756e35687047717136506e4f4e5837453931656b34567549556942614e37314a5a45716a69774f4e6243636e54755462387455374d2b324f4758534575564f657a5073556c4c51495a7541485a7949334b3934526a794a4d612f473943447943745649754f7a4e724374657a596e496e62436c376a48767456537556466d674c68657a73772f4e5334506d657a6e77684e63356a48555276785a4f655656695a475332555437505a352f6e6b744f634c6d4248422f41386e614c4862724a6f4d317a515a3833564f7373544f2f336b6448557a6674534c4a516c7966346e33717162465732526351644b59394c71797a795a54644c48615852546d7257563345396f452b724f7959566b6b2f714b355544764f45585779456237656164534851514f4c4d57537233355772624848554373736e413236623549574d5752713531446449776d50356b68514155707261634e7559716f4e574e302b35626d354b7930382b307550684970625071575557537662637a2b597559594d357876624730735851366f416d7035656e57666b46486657564f4656326f7053336a32514a55646f2b6c717775466741376d5a466e6c32536675396e736c374d547a30612b586e4766736f62475a3669526e376c52704573632f68707675525a52646833366c676c4c654b687571367137333539456935584167467a71753539596f2b4441305263726e45723865783646464a5135467462503552675a42563054424763497752736d716d4a77766658726643587741384f473368664c4c33332f582b61755a6d5a6e4d67397474714846737557506351364b706a5739504c7157554e5a33513035712b7a3066474778575243767165492b41754e39695336487738516343714d7446304e4f74524f533169352b6f442b62374f5731635452486c39566f512f555a542f75577636594f454b72474f48324a2f7742544a704b5764414d54695354744f6d2b506964576e5566723848476b62466d4c5a7965624a52594a794c5a7054697771697a4a2b4342307042496838444b4f7766317a695434434f3536596b50707a7836555a3056795a52445336514c7136463574344d554c48746c344e42634a6b64522b7a2b533936776d55514f5546705a644c56767a56324f3547337242707a55356f4e7061562b3161564c79494a46697a556e6452597468746f7153447639787655356763636f49507657506b30386974717035554e5848624833714164524c466c614c6a7161786c444a6a304a615a2f3431706d61335366755a39662f5644702f546d496d5a7841667a6653673778316e59514235355a4b695244616f3943722b555441362f72535076614a554c6c58787161445070476c76434c67532b343444677442674d55736c466f575a744c6c355657553133622b644656537a56385252693452482b5179783450414e3148386c3868664e4d6b422f6f4a4e725164577169434e2b6c2f48366336535353644a43525254566f70624f35662f414e75466442444b42764d2f314e3177736c5837774f6563465530454e626a464659364e684a62656b6f465a7a444a79646976713344614b33437634596638416b6a6230666b325033396730724252674361504e556e497452667a2f414738746a487470706638417445784c6d463036334e5a436b71684d307a6e7a354f2f544e6f307536555049516b6e6a63734e65354e3734354a4c6e4768564c7055583970626e747a492b4c717a346e6645764e517469533453374a50644e536e374963364c6d6a2f5162593846435262785973553168636d4248526f4371726a76685a53734365524575663434352f6b56317166684b4d6d42384b7a41683577346d6c425053464c2f6432712f6c6750446a4361536c7a574f4530534949786c50704c6e4d486b7639714e777441464559546342727853526447716f65756c74557270494f616a367843783076614f6c4534694a792f686c4c6e4f634e6a444f4439754e676e774244354b704b347635425456677464476879736c5549456a7254396276536945452b37354359786e546230552f467a334e63504f2f774441686753794577464b6e564841732b754e5579457058504c784b7837496f6244503239734b5678393650522f63777446492b373941425141344831524b6e72534c6a5072565a354c624e526f50557335706871754c347662796e2f67444d686f2f61584430683537793441385a35596d4d34386e5052396c7171663239615846317a702f677257386d65356178716a2b515671396e51642b33464d48584b53594f575536775652303172536854577a45726b7a45733777774678427771334d353056735456534c574c2b4651416b52392f5239334f417a646f52477851724241786a316e36414a584f543139487956524e69465963366b52496c64617a35446e51645074365857436643426f51414c394f7078704a6369306d445073576a513631537638414e616b725433354a2b50474d6b38446f63344d79666845576c372f36364270393566636c33647766656e4c6a4b75686444697357444b366b504566756e4953552f5471526358374a513936535a6770397654553736334167724e624a30704272413736445156536f65725a54794453716d465054753034565843704f5839574f64303376656c58656e38517a4b5068794a6e452b45685563773772724831783530334853647a6e4d4b6a36387264745961576972343948552f516a4c7a3741765548313479625253546a4e537a6437494571734b494a394e6b2f624f356f554a3046564d376d537947574648474854654e326c4e7961727045344f687a76753479425268775153707842567379462f4e647054556248386831535661702f6232474f696a7659597744507651657776614536786d344153382b48762f414741712b7162484e4274524c5a596c3156677773764b41485937387934577a52794d58376b5678303179735a43773778586f4f52517a374c50594d307a6a542b307443786346396375554564656e504d7430363569577253696a70534b447a5936353754726c514b462b3664694a754a4d506c505359355345754166652b51693061626b3756534a417951716d32595a644b79574b5a304a3031782f54302b4b714955436a33547a734c71476950613230734c356674642b5a5941664a4e4b43774973505130714b5977636d383558793050584b61666b6f6a47576d685644724853434d37444d334b35376f2b7148336d343366316574656c7034524151786e6e4d4c566857466c6f64586f73576a4d42376b39526c786a3342566175677a2b717571786b344b49516330383372566e3747503436674765714b343570496f376c4c727a56754f6e5674763748557a526b6d52734b73535558326d6479626b3647646e38427161356c2f59544d6631684d416c6670703934612b445a324f2f6b584e4f7051614c6536433536475974746c7047475a4f6d70464632786a723737566b4c4351324557386a434230337661716531354e54754239324d452b526174644f6e38535855546c79574f576b306335585a4d334d30635937505a566e64534f655456734b6d6a6c446a524763376a582b7378572f684644585777624f6c54477a5172357255564f647049546d35647a4b374a4c654a4f6b654470556464444f2b59464d37304a6753644963427a48753276325a46715a44636579312b7462613355767a624a55646c374a6d6f43484851453974485a4b3832456b61576b544a63336c5971554153325a7336506145375769656650352f6342764974596d6555635850694c3272786155704970764331576d33566f304e61797433767951516e504b66516c594931734469763549466c5047525556706d4b35695a372b344d73355079755a79717a59705a456878652f345748526e61565252774a565257706377706f544b55366b4737714359704e696538417a2b7375657835354256314b7977632b7271366e477562524367614a723955614b4a3731333366426e4a4a79616e462f4b526d6f75316d2f77426743723555416d3771712f4839663144547964426e6c54543545386357716b732b446142787a536343646451766659456a47494d7468457561747a6b7557435a31617632486646523770314b647141716d7a63737763336d537652517156413577357a316d375a5a584930626b5673786f3750335638365364316c4470544155356c61652f716632685134627033444b36594b736b324e713532616b356562736579696c4e47476b304a386734792b646d4b366879535a66567a6a7148724f675459667a42595a39527349766d3431566c435878565541334830315a2b592f465a4d6474704d7a6373624b71687a2f726a6c73374e77766761766f566635734f7873663739785a7866727567542b37595639414539467a707074443633325573736c794b565661433579637574762b4f58436859705459704b69617a356a464453467337653132573841477845574b546e4c7059534b6b6444694172566f725a47354f76696964434e41497755757a73646d65664a416e6f427a74554646544d54576f2f706674534565323654504958782f76506953504f684f4f65312f6133554e745a6c325670336f656530557a574a48336a3154597a64473469534c707042633564763567344c5153586b47654270707578705864533552507473756b44324f45496b71557634324a5932664e466f76746f704d6f487571377a2f414c45335877665839422b564e48524872475a6c6d78306d6c56546272592f73364b4c7234584e3265305a71554c54432b66506d4c36387955714e6a675837365530752b4e7a2b66334171474872356271414862434d736d686a615859383830744e57572b486c65736e4a59552f5a78377052712f7743386b5979396766384158664d507846335956357263717a4e6f3235754843634e476869554854706853376e79644956314e3761754550736148467970503256454b2f73377a44573533505a384e596d747537494e664d7376484b4e4b5a34354d7430445657655866754b74644d6e667430732b7a58624c4d79344b7945586f4b773771356e48384d3667635a7a70664839503146425956614f654e744f584668634b4d4750423149763270767775526e324b684b756d326f78314d384b4a597a4342386175306c4164635850696a6d494c446c364f3167572b76487070554f466b39715434643669626456575a764a30396958746d36736b4f6f30644679376f334d795035356844394b503256704f774b5073554e2b48586a37753368796a63483051676a58364e655262654f6e4f6c35647662326e2f4839306e524a6e58717761466457386633682b6577757a34346f4b79757347546c6c64305156416e346e46532f616e7945502f45666749395876794c73626d7a47555366473847505474633242665a382f4c7138684759746847513273586d794e663250643262374a625967595166476b6d5462705435663246752b43344f34775044376247334c516d3637532f386647734c69734d5330736c7a4945367275634957356f782f55363650334e6f775933632b464a4252326b7a316d5259766c4a574435656e4f6f4f7a4e684158585557703031547a376a4c44736452686553706663344d396973736c38584e3954374a726d766d415778482f414941483231597a386a75416a79577633625373706149744e504d615643364d2b683835327a756a3552554e4653764854436370463253696b4a7966333630596745313846384d544c704b302b3332537a365459357476544c6637543958544758443569597147707a55792b36636c78315336504251487930304b5942685a3332526d4d343778656862445649537065675733536a5248696b6f7076565771574378394f4d71764330484238656b4d71314135636b346643376a36363147545a6c5653424b7556726c444b7a6c7a31726148645435636f366d38705143376f735341463962796a4a304f51352b664d74585a352f68436e68324334794d46424d386d327047664852704d666f505a536971562b762b35784f716c43394a7138715335792b34366530616b3747725970725a7a70594a716f556f426d435a59356c4b552b61326b4c41706c6a7a34317253457137613946585a4675577434384f6a4f50467a4749533133584b2b6e2b3276436765756d647a7a78342b496b64594d577745466f70417a6e6c314e4f64724c71484974532b467a335a6d6430656a5659463265732b6b3250334c43786955712b555472704268646e54563078714b4a7961367a4574487645547a4a71524e526e36786e32682b78787370394a61316d53477a7a4a5053396e552f494475706d4a6d4a7a4173544f643164532f7742434f6d4857414e7049354d6c636d72572f32356e595a46615441543855624e54354746537855387341436f68644d61307744395a3059764c4178574d63663750573470567631467a3266585841786a6b6638634965455176486f2f6357664c3044395a6f30542b3449387952434b5a69347637755a50334c7a73787a644369643074636d6d73303378496d68662f77425736694745755665357a57456b476e7a392b39795151514b3950566c7468707a4e596d773644354f4c57326d7a48565179686258533633753470663841326f394a5a6b584b466d37347144575a66376a43352f482b5475507371706e4a517433502b38695957527576716b2b4f5167306d6c3165665174646e4457786442546977433976326e3071427744645765716d5a3553796664766f5678365774526e78456449577331314f6c4e4c4f6c545033335374587a3433534638763671623966717636416667766c646258795663365372524d2b4e6b33752b642f47572f432f7133646f652b5750756c3866532b50324438305a4a706f574e4841614568384c746b64712b2f6a596e6d3250347566487942453766316f456a506f6247504f66787477434f6c39663635696c71514d2f6d34487653324c644a2b514c574e342b30724f43414a733474576256335469376e63512b4a793753494e41544a6770466654636f7a4d512f79596f436f63525579492f43326c39754d396842336d71704254524968675a70394e4e446f7163787a614768783269723744436f373845774a636179344a6b596b51443745682f4b72714855756d3755684938514b4a416478456c72507063594154724e4d592f61464b336472514247465441562f37674d4a5a6367714b5a43307558306e4f614b705543452f7a7a6c5535636753324f4e4a6a6452386d616b654b3474494a6254333968596169417757734546382b656f2f7271726f524a524975476a4862336b71766c47687338746e51464c63744f67464d6976593447576b524c3659664359564a4f6f6d2b613053637a7a4450346d47526c46447967716c4d47664347623061733959585767786c4852345379575377355154564364664b776e556872574e3864505736434f56447052756c6d2f5a71345166456d3256663268563878354c454d41765a31357551442f3841323367436743552f564c592b31323276694579566e39385773764b59597a4871387875684464326c77746e47333761784956463973564c414853483051694b377265655470537559537a613358586962733735446b36367a535262626479366676644231624b4570553368473771304654536b416330794166764c3733646d6b626e71703057777667364e4e48564f304c6e56516e596d6444357859763753316a77334342475041347837324a73346b77692b2f4f4a574273324932777366446f7167524f6571534a7a3271506f4e2b6845785a4e644774776b36662f5966766d506c62657767615a67645265766930354e385758536c4252657968704b2b796f4a5a394b3369356563305554337270427850455a61513438584f4d6a4e68324f615a4b414b5038796c5537516a5856644c51366f50356179536c4d3768434f717757664a544d447566527979314761564c716a61526f706a6d4d6570734b506f4179794e643165556a722b5362565431746f564664563978484b33374662476935316c532f712f705132485139744b57664e66786c4a4e4b744a55544d5445346b624f73724f65474646415a2f365169794253475556446e46444f7568346e5135384c6a6c536830637275503630462b795a546a4a5a6c304f774b4238706d525a7577354e383361506e71756c4e4232726a5732765567756f706f304d2b4a30783261416a59376a5a46505342715039416443544432412f77444872564c30636439433164592b375351792b65436f49706469486d586f5364646c4f545279576d7a5249534c6b2f7743714f2f5a55307a36304f30474637395a4d44455a3954564132696c636f4e6b526a684a786338636450614669786a7557436d78326a7a6f644a6f634e796939686e377a414b513838624b656d4155484f72515859734a76336376712f6e652b43572f50434a6a424b70596a50443046416b674a6154614d61576851736f72306a35426c694f6f4862666654506e4b71342b6b4e4248557a353554717a62396144445a52636f76334c4b576b6d684a4735716e6370573664444b7571414f534a7836754879374b7a72677034347743684932524344586d54494b7275736866326568524f63357a4f6335544b50464f4a2f424e7030704567705430786461644b6c3564704972564a4e4e426e465263716e5279463066574c51744e382f514a504c4d665171466f75544d6a2b5339315a462f726c4f625a7a4f656f532f4d616d52666875526346545145664d3861656d364245624c44713058592f4b5663627a3478737a2b6b6b65577036535156395033733977732f6a716255367a38684a765644546558705a34747a4e35633353703150436a31614761446d645651725a7a596d597378327063744a5433665859674236747a444e767a506d5551564846653141764864416f5047766e35525a327473556e493055526f6f7536637339534d6a6f533356492b5279782b46774c2f524e4a4d3469626e2f413734616974454b4f656542477a394b683971522f6d4b334b4b625354496f4e616f7255556e516f49592b7557373546675461506a70562b684835673977576d6d30744444734f5739656b3835374b59797073535544355a335644545061756968614a35794571684a523946765444705447734b412b754650497a744f48303938526c736b79313670476779664e5369336b3157596c6c7a745651675446317570686f4e622b3047614435376748336d494e634639516154777a44356d764571466a315530362b5874664a78646a415345557a474c43566645304d3936365336416738462f36674d4a7744545038685a69376434686d5153352f774e3836795072792f56315a792f33466f59696d7a6879703573496d557774525839656843685452537449665839796230367a386868363143476c4634556968344d7230504b6372372b626c494c7343716a2b317331327168346c35755757626c3633666c3930744451546437477263734a76366e54377875526e636f6139796b4449356a314470315145377261654970794265324b44713372586f556a556b7571506f2f7743426d356a6a4566633038776976567a705453427072536e3931614135772f475536692b6e556c567838367a6f4c5332555a2b47583663304464387a53426c4148304b423871305a37507956394e34484a6f6e70507748517330704a4f4e646b6165664545737443337778786d6457676c6d736b445555792b54715a53426577786e7364614f7a623643462f6b6b58373376526864632b586e7a6a7075364e546738643068692b4b454936303844584a76475a2f5368712b7a2b3366597036773354556a394d6c484e656c2f6c2f6362492b5648512b426f546b7548554e5538645977524f5364416f7a56687969416f4a52642f783955564567422f536567342f384358386e3955466565484d2b37355032694764534d785144426f506d4b5a56473350534c6f4c75396e50716a6e6a43364d6c6672695a715443626e4769366a39753446382b53546b7736726d3579574448315164596876624f5031454b576642472b373239534c303065336c4450693970702f33674a664550596a68773842485935564a68343061614e526a774b6962363844597076745278465955484a614e4945533553364933634476576e374854483850784b41684b524c75474135327046566d5566374f56557a4b71494755617443434276586831524767676250316654516f572f48396c49696d7776596639527737586b4b4e4a503870534557317255546f6a36696445742b686b414467717a72732f5153764a59494b5374646c784f5162544e6a56755438776b32594530534c57384773726669635973724a7765632f575468436a5036776141575a73715a44517a6f2b36356a79575a756a414f4f435a52657833732f6f5072706b365856456f70566730424961766b703968742f6b4579465038414a4c3854626847706e36425376395475306a5077544d4234494c527854426177695a79376d7a4b566c57694568632b2f7a5148514f4755596c663841466b6638654e7a4f71627833663949636d41484c4a58417935316936695758616539617442307a4a4e4631553531772f476b46664c59667a414d2f386b7872535831686b6b474837486644386f453630586b55557558772b692b6454666177776373365a536e644b2b6d596e4351314f6c57416c30524150335479632b6e2f796f6f37756241437a2f5664534846794a376e326b6374546a476f6d4c35556b5a52623238584362766b4b4f784b695770664f2f5078772f43662b66395348344254544e535a636d6f346f704761734a6e4a316a6e585436417244345755635334794b676a3659385564487776494f6d594b46775a42656d2f444b6f6e717a724a35324d4a6653596f5a484e716e2b61676c6a4b3974557630324e55564457454c51637743594837442b712f48395031444b756830732b36314a754a56694330754e6a2f65624b763666475678457a712f6430693474647048375336372f53306e64623750633677485a7570467a4e393632484f6d766a525870665430737650364d334856643633327564786b2f524c336c5677533651544f34776a355638726f78476339344c2b4c486b684c506b762f41473645772b63774b62576f727072664d547639705556467a366178596e7266684e2f752b5a58744e59413566394a6d59695a6a75425458594c7265567a71354d4337553870756934707234786c336149477a4e636158485a6f6e4878617569666563425073393569675434626832664944304171694e71786c62726a326c79376263706a546157684c6f4d6542783956554236453546564f48414d51414b523662766430324e2f71522b552b4d64475732734b762f676e323961595a357270685931334e5a376d44517a6f7a71645651666633384e4266434c6e75506a6b7370417a6454643052532f4b644e2b364b7544532b6e6b7861507a414c613551456d634369466f7575543153666d63482b6f35784a5450614661646d412f7743487074443566737a6d4c49355979436b755047326b31304b706f436d4b3476754630716b41676d6d4c4f665a3449652f324c42316779435871794f746c3038505674464432763175633539594d2f77436f6f4c4838487030467a374446415a7258374453416a4c30474e344e6439664545423531616b636b50395475713435795a2b4a627148547a724f78744f6d7a322f544a7361566b5865632b514575416545494b65366977696c556a59544b66706e33737a4555315639714e6c557150722b326866732f77445a584f4c4b506744684c396e44424b7a2f4148372b3957426470314a6a4a2f58554554563373436e6b71637a337466373745705032526b53563873664b304f4778507449414951623775442f515071614e524257664e4c6e46385164566e4f362b514b754f5932585358532b6c6673576d5536766b557a333063366632542b62696c467a3561384c5235426e5650375276477037756f2b7237377539664d6647564b46335653503841656b50647a695249424e58434a7a4f6e2b3354417a6e50367348746131746a4b4b6a335030437a3455396c7355687946754b786c562f4843557646756c466a68496d6345763139663375414252317639414c7437776152416b586d536b686e53676665614d767839715877677543436a357443506c5845673768304f4d4470563876614b6631376766704a6e794c5174637870552f7743784c334f6e66334f4470746564584f706e47706245755979476c664b444834676c5951736d393471364147754261374a556b416755355a68395164644a514457687376754d553949657a755a44517a6b69572f6f4b796d2b5a704758736e45443055546563396b6f7062514e444879734a374f6f624a42314c32387057716f757a30636f516c67444d457a5a5370616646474452482b674839666e4575686a66672b385139573576314a72495a4f4b3974494252656276315151304c54312f376237506343656638414947674b415552626f4c3759564b437270702b46794d306870415750314665314b446b637a6f574d47563050525851593941452b78626c702b5666395635504c374156382f77422b61356e584b426a6d6f466346453675444e50794e3153666c5938523551776e5a692b456c58666439614e50794378332b766c672f70306c6337583969696869334c4676493158757a6f2f7158396e6f6c667246497232523166744c76326b5261616a702b41695541652f384171757976674677716b536c792b474d543063354f345666624a3656386f4931553848715845524577686b393631423776682f53432b62336f466673794d37574971375252664f32316c434a3546304a6f5355744e3348756f6b6b56305a525a564752664358506154472b3332547a4d4a7337456e59506c5073726c61334b37545862387566523951794f746f557537593135635a5a5077766a4172496b664837694d41535a663641503749352f774166303951496c354a4f6f4e744c6d4c7a705358544f3936322f5368567950332f75756c616d43464d7161484c4176734148764133475143306b4d396c3639492b51595a5572757654526d2f4b396c4f624f475479316c516752716c75506b7a35434c33542f414c596d483465766277614a4a684142347a2f6a2b70456f7561565045657861654a736b51355448614d586573644a55796d6f46307a6c2b73326861353553593544542b4566726f414638397a444268572b644a457050506b632b59486956416850542f414254794a686353656168523057475470654c482f425332576578585134586669434e3661474e6e6b7065726a6149336f734f7a514c764f676a534a79616c384d4e436a69354f5a73346e2b706e47326567334a347166354f673041304b37466f6d5542797953552f4454475235306172464a644d733635704c6e4f536b616939792f5950472f4b56695648385642707071494c4b6d686c67793155793847455643536e647434624b5243786e78324b30616e6f54397137335776635450655967565150502f5743524f76782f54395178354d4a30664a48486548386f324368746e5a576a4769586e556f3446794c68644f4f723948363647462b70773979663976384139464d2f395745623868646174614c47736f4876492f68356d3572744f336a616935596c484a77456e7369734a6376762f6665636f6f625358505a2f31696130467644704553632f554c5766664d49456a496933707a534f4b4778444a32456849702b5a3261536566424d494342676b513635332f596345784f64617062656434463342697a3238636856597771714535526d3651395a77497864375236736844324161572f4e3853694d4f68462b48794f46556f316d35616667376e71364370534a382f7741664275653953654f46617943634b6b694a6d73774e423942686b4d7751545842317a30786151707a7032527931414d68306d31514c695a5338553278734a6a707a6f66502b7567796276756d51514b6f49422b4d486d5768534b4a6f36425a626b57384c536e665335485633304e30484d7a75303339397649694c3357734e5336432b455a524c332f4147434235426163334d796552797530766d5141704a5938536f7564556971584f6c686d37637a6e3156395774624b69595079635166786937322f365a71382f6c397748657437644266625536422f5a6d4e79614f4c4472654c703570303152424c79646f79304e5353534d70694e726d7a4a6e3466586533744e6858464e35506272303075357a4d654e796b52456a4a6c5a424a422f3335732b364a612b6d4e424c6f6e4565754552436c4c56644d4756706f4d43324a7050627233642b592b444a55705539547339664a3333714231674a554e446b7a793365366978343843634f645841736e4f36627a622f515745516e5944304f4e4b57434d78756a4a7a596b77322f57596d6e51564f2b777a686a3455644375314e36612f65483177364271374f34507a585933656d62332b376a43416e5235393931504c4b55555752515431316a5951584a6155387675346d542f4a7673495030435849477650356663527a65716f546c5467635446564d48355a58314c547873624f684738466879787673306d444c386744337244476235505a78617755487932465954763467366b77755247337031544c5161616a5652324371633363346957626f4f6e5979356e4f49425175415771542b334f345a7343655a5951714b5944702f6647534f2b6f576b4379746b4264452f4a724739714a5a58444f786143456742787170306c2b78587769722b675775673158774e61746e323277555849566f35614835373047356371506737524e473033455579312f496278414449773448765767777341544d63507a474d367a4e30392f6444506b6b7352387175783645494d6d59717a51366864433831597141493245614f6d7672425a387157754164714e373867793865417445496c7849464c474f725a4b566e56636a7676595a6a51715570656d4c54654963736d6554484c414649434c44384a5a696e4e6746457131554f547a4f324f68484345394631716c396f6f686345733830306969527858795341762f4c3975396e326568383030364e387a382f7149356d395461476c446b4c5841565534574a545a4f2f4f5777526e71576d505165766e4739616a3370482f4b6676666b415a7071646f47336c6b634373325272446c6231796d3855515552773139705856517a724c4363546c6461497a6442706d62412b45612b5041706e71676f537a51756a304b2b31746e62473876766162716d5453335972692b432b34766a754345524d546f424e4c4b6359376151556b785a4944636e476162366b526c596d3939515655562f4b585939566554506e4351525430556c71512b3666505431504f706d4e58784a70392f412b7751527a516934444b3941535445716166596b6f6c4f54363354366932374e306d42586e797a6a557a6e744c3546646f4543624d6d675353582f41424d444f647566417a346c664d343558753678594c687a37614b6157564c6665716e546e37794f69784b39526e506a4e3676686d634b6e737a5a79427745526e59644e453863626b50304763706f79314e6e536430675a72477156554574536b585a72522b35557a6871455666633976782b35796d76425059544b485a2b6e6d5741774c3442304a4d75586837452b674c4352494171663854574d3974576259585933414241626e2f63366c53557543754e62543973746a626e336168424a79534f78692b53324c6168654c384778572b697878517a2f41435841376e756f396e7663346a516f6a6b2b4731596d656e44416161453879632f4971324c4a4b6d6149636f544d794e44364941707a4653577078467178794964716530574e59774b573347704b6668634c6d4c54584866793544314b3133327a39696b2b4c5230645046706958657a456c716b302f67547136744536595a78633751664c506d2b356e524a48797a4b594643584a545332415633796969482b56323874357a544d514538774d576d6e494a3067773431583872306d2f3438637a334945432b735a75376137765146427a7a475a3452336a58696d586b45384e6d744b6e516f6f644337656d73666c4e7a596f68646e35594f4f7644466e4b7373644c447a56634530792f464e534530615570704b4e75346e58694d7a5359784c516e774a6c7076375171617866594956382f683956447331576c562b74445036764e553278307971464b2b5949593356647a7a4d4d39547546632b72326c537a694d3735724476665a50586930444b34444c6a4f72544f3173735831667233646879334a455a6d635376756b676a56503752596d314f7a41726e77355a5562376a746b4c4551556d6136477655627a563238472b62427a5638644e50516d53396931304d77323935312f7a4973536c337966573434575747794d3137747a4c6a3270343753514c714c4f6e4d7977394c50686d7a367249382b4f3966384172585578796171416b34616157674866636f30724971632b783535456f6b664b6e782b585178704748794b69482b4d30585353543642704d79536130527970533179537761355a4f63585131584a37334a7975634942647976782f5839524a4d744a334256506a396d30706e6176334a352b63544a533265694b3244375471387979644b4e435a6b35523852494155676d59656b70744b4b6668714742434c42676b586376756441734f3350546e7747715130314a6a306e317a445a5a524f4d517a34626a4270723674584a684d444e4d705441664e487a31717169745864706f505266705a3672547a616c4e5644706a566f352f65754a36316f665648376736526b5358546b485070674266304269556456634e655a3762346b41714e616d47344a713958506a792f6378726f79466f474d307250325851627968682f5a2b5a4e4a73635967586c737a726d7a575a31646c59306971715a4f65787146666469484a6c6e2b56462b577376684c3435547272343962754242796449702b776151427a4c32586a44455361746e6563736f36495531324d6175687872316f783068645044504b52437462554b6a374b696c70756438666673434270543075475a74627235657a4f7656537a74664d35504e48704a695a70337978314361567a4358754a3455756154497734414773443967537943564931305431577451454b755939524e2b796b57776a4f7a39424d346d63524c4f4d315855712b4f5969584e7174653044594a69734a686d52435363342f6637454d4f6d314433632b4a6c4446725972744e617030716d2b4e6e2b7559574e2b4a544a765948796d4d7771494a76466e776750414f68756951704b687459464f44583063345157445064534a4d6e596c566b724f734e356b34772b5932383644666253307a48534164396a517146557a42543858654d556a6844494d2f435a386b764a424370596b4b2f5a555939372b784c3633666b4d4f54694935444e41476c48666b556e373074696c4e6e6f6d625141396b7463704b4148724f454967786e4775344a4e2f594a5830584b616b66363641674c715a5339385650744133645768614234617744374877614a516e53533269786a4a533653674f644645392f2b6967434542526e2f48395055426a326c6b3166566e7852645034506f4b36746c7569584a473049744a74456179646149694d35454650666a506867626d66454a4d2f72514164455851324657644a6430546934464e504f6a7a6b72796f4773756e524a4e4c386769795778596a796c5166722f41484f46582b4a46576e5a67422b7a2b77353330595a715764554848546e786e54593553566f58544c57532b4f712b4b3561656452773130735361674a7a4f45315157417161536c512f553972394a38646932495670517464426d73366b57574c5239694f59615a567a367a6d41625156327a6870634376657268394277726764594c374930517363506255726f6c5459715473725275614c61414566735238534e3539535855746e4b2f6a48634e314a66434170376e52353150786d716d45306f5053756574684b2b683868593575396c4a382b6a71644a68416e3342775458384a313066384132726f496470797065463772463571327063615a706d4a306b416a6f643639727370383636532b65636b6a7a6a515334672b4e5850636f44502b67645246553841616958743342706c7a55614b394f304a6864784d325978314b457a6b73616c4f3434414876464e4c374a73622b6c4373694274794e504b652f665a31343333743755697839544234785372714b687579425a775854496e7571516f77576b4f6657492b4f482f72424d446c655a717770784a306d376d6e4d3258514f382f6a434e6f417756635955314c4647566a70596b2f4d6f47724c765a7148454b32676e356f69596e704f513963685859694c6a546e70304779353658526c326e32586b6f547158526e7a7a2b31305a567231464f50687562514768386675424d662b4d683354464c3045535831507674557038417a7a376656446d3231747a354a3451664d4c47724e564448462b7630514363783839676a30506d416f356f7559352f4e4452567a354a37353570353832333978486c6641726844536e724a306c2f7557444349754b4d41396a6c482f6a774872456e477735583837424f64564d345357476836686f725651584c3645555a2f563145547066326f546561663041474854543756434368554c50714d655973344159784c7061466b70614a30517163397935586f2b47636c746c46494b627758414a474b2b736237513655634f31354237434c412b306f3242504f746b51755a39686e4f305338713972466b6965365a77746f5450562f76363133763741537565386a482b7043357435326c62334d6255714e484f55484c78644331396d3050724f2f656a516b674735624679382f31743677757a416746724868392f6f484d6945554e55414b70664f3631337a5055735462574a78544a2f594e56385a4c486b497535314843704d586643492b336e6570554835464a6931615074757037527a72712b68476679554239526a686f7274666e396d6e6e376e777337385963417a2b2b49666f4f6d6252426f324435334a73576859364442656648396c7266515a7164517276746372337147633257667232415a67303241624f47616936415a467a565130715a6275764c6a6b2f70353031556f705330317135384c4d2b6871556c786966624d492f4d3368767046626855584a687a2f4147667249487a6b3130724f4c5169525148494c4a5075644362354450512b62322f42514936475a324d70774c2f4c3269565650414570324c36752f647a594468534a7955444c31304f4b6c3077735a544d3259666b4c6a4f6b4b3579576447666c444f63376574446864353133752f324541396e64334c674d4535526d6561733642476f7749672f6970366a5a43387858554d792b326531583065454b58385839636a63506659526838716633472b766947415a4f634172426350594f71624d7a696b766c36746e32625a78346a69345568306d6663687151763556484d7333463169543935484f333138513359797078535570645257676f7552645647793845464d4d7a74442b4f52314a6450727535384d71756a504b416d52384435692b415062596650612b7945327361794265633537464a6b64506430784471654a34333637456a4750326c6958414a422b38722f2b4435372f414741425a4d6b4c58646137546d63783266445a797074624f6c552b5a33733668544c6c6b7a2f426c455a4b36597561344c324b39774a4c697a41566e643579427453364f646c524b6c536a54535273367967493071597461334839374e363737487963594c75394d7a452f653968703558342f702b6f5a3539696b53544b755136464d7945716152554c6e3730453151304753444768596b496b4d346334507364313150734d484766732f717778694c76473244504579577970623670616d4178385a6c39756a5051624b446f58333272576c66484f4e496b6c626e504670392f7a494d2b306866707a3336302f61446b6172734c425073686f346e6c4e5534645678774c49766d58515866614a6b594a4e6a665a306c676c69493652674b2f5a6d6c2b3132505546644847476655766d35303530515a54416d557958363645732b49553248336f454c415534314b4d43556c68673255503767672f6b6e4b616c453877473238306a4d38745a6e76734b65745876574f654b616e4433697861303275534e50375a783077686c6471545a3478784a6447334f737a6a726b36334d5346456d616d354d5530544272397970785954474e5762462f44314d414c396a756c377864664d4f6b2f74556e4679646d524b70674431756c57354c7570563164386f7a795a644b32315467502b674f447a2f66784b6a59505a334c44674b6351747873544f3044486c31506377435773383569344531474b2b736b573050716f754565634a5a6c37796d6f5959554f345073414e547961566964456d63715748735a32326d6975356e796431467062784d784d4e316954465a532f3572396e55327a437a337342616b675930686f563935434b3731747330326533505952495a386738734a5a48556564304239746e3858396f7674482f724439744652742b586f432b42594e746955546d757165704f6a394947574c6c2b77696c7a6f5553726c576258546c446f4d6277542b74396b6f772b7943683751544164417651535335514a793132364c6952566e7553655a4755745831786f57636b5a44376a5356437945524279652f5953784c7547354b77516e7a624568544f366a6e453845704b7736372b537270347432682b32574a796b2f4958756f6a7157453633663441345344332f4150494a4255433973316f3848337a722b69637a3577536a58376f444e4c5071384c763166594d6647664831687a6c372f65376e5569625a48632f6f46667350705038416a6b334741793170443349676a7130784e7232477035774b2b486a466d517057766e4641726956727034452f61497a34444b46646f43684e456e516c3548486247336b376b614b5638316e517936464641704e4d6f63586e77393730414a3441357838344b6575554159636a5578414455392f5a3536666d4a586568475a6654465a744637576b7a72585430537070377a6b71553936372f41464748782f4767484b6d6a7a34557947744c53684a694466522f3173305273686c304f3031636d58334b685a4f4c425178624f3954374f50492b4451422f3041736c584c57705430703578632f3778383351674b6369363264715151757738304f304c466966627a72657a67517a4b39777236527641464e505a71427946796a6e7a4c2b3672595770346a783436503168765a4e5a3132656179414756494868384650544233754a7678664541414173746c2f51644d484c6d70524c45396a4f2f3841416a3152564d364559704e615a53485431434d55794e507137774d4b4f6958456b4848583164796756356a354261364c787a4a42326d47746c4f564e32665231686231304b49636f757a7037726151726a31445278776935437435555567385a59435762313652386876562b4d376f706642697561696c765a394b6c75694163737a7a342b6b636a55367a4f463030787259757251304b5541746e666e48346a3450756d5069637239715263626d3539794f3666632f697536566736415432442f476f6f53775853737a574e6b6f562f46315658664a3951546633336678376a63414d497756586a452b45695136476964325a6d716175617a6f57362f77432f754d514d6f7a64562f714633322f38416270564b79574a654866693976532b476f356a633553663641636a55324b426561665a786f3930345a496155514b51543837756871445a7a515350556659553672374b782b79414b2f77414643594744707941685452334b554e5767724c6e7434366948345546504a33337a5a394d6b6d6c46466c7550736e793646465874345973636b666941467461432b41415a354e764b6d77753049732b412b53797a794d71346c41784c6a446d7647354b584f5974662b66526a2f41455a41667730716f5577792f6f4659494467464f62444544366d546776546a572b69795672556f4b6573374d714f586e334b41534d746656734e67744f387a44336e7872514237307243716c505a746450483862416d426139474e4546756243396b797265726f5232583279783139423357423848557436785054593457426c4e6869696e5a6b747142367631715a674e43496c716b70566d532f37717a662b6930584d684a366c45766f2f4b3539414677334f393541643931456b3632544f71646f3966374a2f7553645239497669795932354d657656594830645550734c5552546950756f54543861565745485242434f633469584f2b38346d35696e314351506253714379616b65314175674c4f744b4a77724a516b5375396361662f625144574e6f41316f4e652b59523675646b7a547536347552317636336f4536616a4a664e6f6b784d4e513644702f5962566d72327756312f3841766f446a67636f6c3754624e796a3376482b4e726973716e613239764b73674b49454e485065304348354a32576437386f392f78436e68676f46755959456d5467366334363554533047386846553872524765676c732f644d737a506d415a2b4a6e67486e44367a32443879666d4d414f77772b71706c2f32386b374c467244306959704d67534d43534b37535335737456546c664a705438474f686766726e2b6f434c2f64386a6539426d7a464f73796f45714b6c6655544d3878362b7543644d737444584837365579726f712b5368644263372f384146624d31495448772b694150785859717965634b6a684d5845344b4a5a7372704a4654724b717864492f326851354d363255674846696e72644a3143782f5643473942797a70535a7371644d6b6a516d6e725874715a304752476d4f342b575444595274593541702f5a43757959466848516b763059463873524d544843514837336e5a73343238513642476336316b7a66316f7059554c3646713777714339396c53457a704638346e38516d66744836334170506b677467614269786756397231762b75736c725852574463336e5059444971706d676167732b515359372f414c6243343170644468415a6645476f2b4c43624656795564416d446d6979556f313955775a355a377674527337704c48327544506e6f43546c4a56325a363779554c566536755977635776734f476a4c43675550423133614e437554357a5571584e6e6937302b7965373358636c4b6f6d4d34616c4d4d46636d565161795163353435436134787a6a31416e6b4d454a636d6552597075554f7530567a6e6e39714d726d4c6a6e424c4a4a36464f4361615248744a616244725a4d324f766d4d6c315961737964515a33737772576b566e7471624e6e3053584a6c48557367627a555a79666f4d5851745079394471532b79613265787a546a63632b594e48506c4c5a6256662b754a79513473614b574968636a6d575833383938485730554e5a554d75676e3457434b6246645331734e5a4734314544475076374c4c475a796c5a3137787a4b6b44584a4e542f473934556b4d6b6b51614a68514e546878654d46662b304453345373397676357743545a755452307446754b4e6e323679306e58337262556b494b69644971454c4e4166342b644c4765354d7a456f6e2b7865422b376969367859666d754a7946636b55385954374a4b4b517447476768375256506a32302f4e6e6f444c65576c4d3431746b6e4f6d7a2b4b5856337245415878415358726357743078364c5a64484650536a695a3964352f4e617a6c67787a7954386e36576f6c354c49795538444d4a36577a4e6479735239344c3432726f5341356a4f705852626e586f6c6858526c68333777586a495a4f3679554f615447756f57592f3658416a3374597950706b6336512b7354334e5536717347564d7a777449663547484f2b334c6d3051724a30737372792b426d5776335439506c4848444f3241597745412f774330774952354c50315768476c4f6431326657626b496d644e7a4b767a366c794a36636d6736716563356e644b653733723537526f67503637675a4931547a4343346d636e474f2b6d7570534b66486f7a68726170484e4d4c7339326b534c4e725275687a5571466e7957433739745536772f68535455472f3467644e707a4f52595557646d6b776e5072353832564e4a32463061707a515457365876666834796579392b34434e535048533153314775574e414b547a33307541594762422f6665446e74615536344b4a716a58466132467a6a586b7953736e73656e677346444e367833654f3533684a36644b35797250332f3044374d546253655737346b564d6d6178303946696b5272623375595346664a54526e6f5365673967783858523866484a47426743314d2f446e414a467164717a724c6e7a3142577a5346515652737071612f774365797234516d6a5a725355454e784c34534a30646339624f6f644d3150735335354257336d4757644779334f6672325a76744f65726f384b78654d71626a4c70554c737a74636f666f7066564a524e78732f424e6847305363315a6c7859526d7464744d72736b75523370316167464747646835393731532b524f6b74466c4456743539725166637043715a7a36612f6f566d4848504233797a7837586d436e514e4c5a50764b433447523174726c306869716d6d52387a6d684d70436d634a695a5a50347375554c366f2f73782f7365754d6e4842416c32714372613665363636455361444d796567624a6b63486d30726d667865625243757059554342665961345764474248542f58617638652f556d4a784f52496b5a576b4c796f544642796653594b6551303166444f626d3531466b6a3435466133546e593844554b696c70704d6d54662f4145353248347668675266796c7477654d4f6a583357304d796c79356f36346261614643766f54394338386e446f61763570797a576364784947584a674d3138392f3841756f6d754d786e6f494e6930545479524f475679396d7568666444376b31527a507465686270787a35706e4d474671376d5438523757712f594259426f6137356d307a6674534c5778325456453073386531337935556c5a4d745a594e4f6565676c4e42307a5461454e516b74715a35775774684743667556745a5348316c45645248504e2f5a584861784e452b4b397a2b344d64434d2f7631323931666b414c636f454c4c7468747933616a50312b76315944756648555175536639425330364d76756b4a4c742b4f65664e486b345458552f633048615172706e756633546f4a374b6e535444373138575579796d61497a6b43564e6f302f642b76454a7752573050674466626b343035682f4c474d45794c596b743172557176526d2f437365777041644448516c6c542f674937326d6c4c51576b797633637542593030714d793768726770302b54594e4c694c4e4a6475633465366b4c4839587a57316c6349677959352b6d37764f6a4a3735714c4f564f54796e2b73416238616e314c55713475664465374d62444c307261446f4f596e36726e6d6a4f53696f584e674b6f61466a4c565a315850724a63707442657a6f41633338623473313955364475364d76386a6c314c366a524e6664623778556e334d4658327443565564474c30326c2b6844356a5439726a51355a304b2f6f5a795a556a495570744c644e564674447943504b35456f666d78553339366247706c434832306357587930687a2f6238434863536563437156667861494f30547a5156304a6c50554a444c724c6f4a485a3552732b764b5046736a6f2f7743786a6a7a35524576707042635a4e5038415457684b7333534371594555682f47413652374b625379474442616a67314b685a30464f36706133724f6567763970702b436c4a756130414c3368623069474b47427557553754785355786f7749687a57725132675a307961544b79367477384a4f6f3053366849483750742b33682f4b70515672356d6f39432b5a46306e743268344b4f6c7a3264616f4a57615a4a4b536b614f73456b542b3264767767507446337443643469756c594763335872746a374c6f5a6c784c68704850466652373966326e62395348744f6a794d4f44637a5339344c4a417450326659634a4b345a304742362f6c6c436f50343657324a7744574546663874425a50465779615658626c4d796934346b7a6c384b6d2f46772f5a794e64454b5863565370674f5076546a73554c584d764834396b6e4d354c706672646254387376615174696d73494b69554b616c647144744d597150336b516b636f4f424c6e656b364c4e706e4b75314e576c326c3656664b516f396b4e76505a5a38696d44436e4e6f57315475434841725175785a66375161415a4e4a4a63634c766b4c35756d744638417136694f6945316f5966456537725263476638414a336f7a4d4e69457a41426764524c50674576486246447535624f55324846625566526e37414c73763263436473737230774576366268534c6d384a68383678576764483751644a2f5844614e7458574e71765133392f53727a676a68644d38706e567972476c6c6832715a77536e3435792f6a4c6a584c5561515a37515430324c423947763764446c716e6c5a7735685072503163727452383476732b67744d37765a514a6a485a2f734d577450674e55684b765934543577352f366661454b537069563052735777724a446b6d71456a744558383555526b524b2b7758474c39347555626748672f38417357594a43336847784b6d7a537234664648317336766946584c4b487a43526d2f69652f73616c6f364969667a416b7a352f6c37566b446e6c306e446f4643766167337043646e42484d4532762b47647141367239696b567974594b5435386254452f634a6b5a6d332b67612f4d3667576366375258372b3370363138703972426a614f70755950317a4a56417a796b7a326837666b3642753777506172724158534a70614a647051397845786f726e2b5561505a6e6b4a6370524f416e313035542f5853484347623466724359443848586e2f4145474c784d756d2f6a584c6f4b63563836376f4e465377644f71796974693453504e49692f337a664d76354262536678714251424f77456c6d514853544c4b515249303255504a6b69656c49546e487a6c42726e36446b75497666333966575073365446507356384d784179477842732b46476c3158413570695078677a6a535356626c466f634b52696d635a7977574c5067684f5a65385538662f68387068714e35436a6a42314b6c386e58782b38706d65706246704739704d4836306f4d7175466738714e667638416a4f6343482f4c35754c6c616b4a2b6755354a524e5033535257575662644c562f48366a70757a536155674b52724b44684936534b7875584e7261583254424f63583035754350312b4e2f32424d663347696853374a796c435674734b5a44553362347966576d6a6a4f59557a51394e70645a3965646643347a5363414833326f372f374164747a396a74367a3277456e775554385a384c75794d6e4a6d7a4b7442734d397235584a646e306246446d54647034616a34592f44536b506346534e706d616e34574e3036396c556763304a7566544f68545a363577374e4c58496e5036753453577a767a396f6e2f3841734a547a36314963427638415153626d554c5a5a7058566141357345734d33666b54394352625942684b456d4f2b506f786f624f626b38527a6a4f71596c594631516d344741657a7a3074436471466a79655230742b516b5957793031356563336b6576495475392b4e62674a32682b702f30766a425334336c7a392f77437a2b674346526c2f2b7364665157697933366d67696c465769377476797a32595a35364d7832675a756e2f6b506d3473673559505857474a4b425874544f44487a4b726e495a6c38514645794533452f374f5a2f72633143737142747172396253397361663554597a3050614451305853477a6f635748412b4b314f31417778563061317354786479415a38797556795745303353716c6e536a746165536c574a595935366936716c357242362b42375172634469706959784f424366566f52356645744e746d2f62426b6f304467347a4b4f6452384d6536654c48316568372f414c7a46352b6166307871702b4b436c782b38687136336c36384d353566586d4a4c34726c32654f4d3047497130466d71695847714653787a426f686f6c5955476c657556616d4f307668306d45626859536b45626b7a7a69665242464c546d63676c356a57342f47645a616e57564e375a524662386a4c49733635394d374d576d533145632f377339725072725736646975706753497a414837515a7a5474514b6438546f423944474e4335784b5a4779504e785a6549696b2f6b4b79585a56334c6e793241783330394365454a6e385a396b725a484877714a79616e532f5a6b62415261554d356e6f5a68347347706f4b355174544b6744516d4455796d4d43724f70664b584852674d38667874704a514c464c6d47482b394d364d52584f7a6d3646506d676473644646743273685a6c303965646b2f632b5757544d6e6c6853756639546b724e30414a447a596732506d415059353350667a537533624f6671486d624d376e775276377a4f4c577530494d2b4f6a635572534f664d666e783337526152576d7a516f706354506358363470556b483241525359704a6d59633135515635452b7877757a6b6b47354b6239586652736147686376515153612b4c6e304f4456616d3539374a566a306569616971344d776648314e387a6e626e686e41615877302f52666f6c6a6b2f6d664d64644464654b647644614d3472726c6f6279503668576678364d35704d2b6f346c494f6e35412f5538625830456778464c74594d356e6f554264516c6e76307161376635414e525748795a37314d7936314459485363394b41634e337641714548374f53636a4376664d734e31474e6d44326956574d326965656934454b737679717277736d766a526d7a4a564e707a7a7737726c7445554f6f6f2b676f50394c666a34576c623930794d7643353848446d773379756a5a4254412b3158624b46647343575255386952426b647a417a5a567a36534b474a353761584e6a506f547a4e6e49564c5261336469424b2b6143707349713577577431505a3231383047574233345a4b4672676c46317738513562426f2b423162442f77704e5036564f596762612f483966314559386272325a5a32356363534c4b2b35347a4d706777382f4d7651706461564870546b42554b5a59576248465367304e464d432f656d5351434a50653274742b6f6b65614663376c5556467a7366666a304a46314f6e6f5a497661726c7a36484a6a3571557a61582f414e6b436350794d70714d724750615a71664e4a506d4761353953665274374369302f6e6e546f36464c2b38716c3548384e5761626f304f3042466c6932616e362b4470385a396632416c48736e556c3031323535686c5553374e693679634b3632616a794c5362554532753565626f495371554639566b7a682f476f7a5858642b5665683171576538457a2f43366d6b4a365638376630416678326b6358494c50376258314e6b34302f596a30545a5067657871355456496d4c514d7671392b5a4c46706d416d664c537368616e6e7847326239592b51697533593354386c2f774370726f707837335930646c4b73754a716a304d733669736b7968706f6e7064523351596c367848744964535a4f55777543637137316a45594278366c75777a6b2b6b793275557451507177424f624178564f534b567550755831756c5937533271453138396b776650386f4b436479592f645839353638427271792b2b76786a58746b46476f2f4e6a35426d3762643437343947687158497753637947583478326d45687a657145474f61327a35436e4e544a334a30484a58782f6b3166714a712f553733466c3536493664497a344f626f4b3572676a56314c3845344e514c74426a4b766b756f54476c78552f4437506c6f4547646d6d4c706e73663930446f683663325459506f5034506c766e345058597163754753764f664f4c66484e4b314f4d5574575a6f54796e67445456704378544676495071457554716d5271475250506163326b566e2b474f65354f722b523759776f597571792f46784777707257356c6b4d646c5251616d6a6f35383736492f707779385431796a483673475563484653306579612b7033433266547271724e4430706c7956796a524b33593078562f475a32546c77614f664b744f626a66566a54537555713831454b6d6c4b6172306853387a6d353956344a7a76385831453338712b4174626d62566a54506765656f33354f56364a767a714a516f734767586478353230527a614a6148454179314d4b6773436c6f4962705a3943514265567a484a4234376b5a4e724a395536756d6966366644677a55303574475563384c72427a617139446c3075675330714b446b6c6b78306346704b366f6775503039777a62726c5564446f72396873396b6d63623975574e734e615852353636655a36786c54514a59394861432b626e52586d304a584e4952554e2f714a6d496a4d69656552323175572b70712b3145457a6530594d4245715851794c34666c6b572b5239532b445652783164456f4c4f6c693357506f42674a4d3148464f7a4148614d62394a6b394841472f4e4e384b4942527563744b384a5732613177362b64334c496171484375646e655553394f7a2f787366744e582f4a6645395473774c4b7559664c3530356b6f5977314c733061654f6f475679492b436c6a383168547a6b483877396761312f31775166744c566f6e4876764d506e734a4c694a5370794e42373335394d7a2f665035416e75514c50613443723773586459546a734a6d582f414353654176384177575a6e496f7863422f316a6674534a4e6f573643637a76563246506d31726545374b58424764436a6e68664274396f5853333479726a467a423451506433354f2b32466249554b4b6f546e6c6f4f7a48354e6f33775346515047644b386a5671413271664f6f346a5958644f41616770746c4b556c44387644735541462b77595839424d6c79523051353039504b35476c525a7a4c687a4b5153396165645459327571317153356455784d75733533666e4c2f414b702b3776542b614e6f415a6a587859636c6c3162654f4233576f6f6a46593263666e72314e4145475335774e6b344a57553669593264774f76366448776d6c5939434d6d5368686d677a78544d326e546242506f6a2f41435059495366626f4c6b6c61757867386c6f6e6f594c765a39645a38713345726e6e6a2b645641415156624172513756536d4f6963666d52416338462f654f72517555557935577a4949696b6e58533063345966376834616d5454636e67373149584e6a3970485075376c5a6b507553797062436c616c532b644d2b746c6b4755334d57373559325764507073456566367669396838373849512b376e5643576570715a5776706450503858322f6170453736424c4f35714173787159723755764f4f45314e4d4163485a2f6131772f7742416c427a4b637254584d7848766c53395636354673525a6c3867756e61457a6375496772715a4949314838504f435a746d6e476b444a5875454a6c346b712b62522b4e4330327a3074705372554d714531304b6a3434542b2b77786f397a446e5a756a79536b506e5454333568636f326d744d57365438672f386e712f5336677473727459617448724a754e497a63594a6f2b745a314a314355764779324d55316f384468756d2f2b6f4f6635416b51686176316f7979436853383965666f42533732304b71696e666c54333937584d724e2f553658306c63784b337455412b7a37432b7a4e4367434170506f78616e6c734b4258314f6b4e6b36477231463055416445546d564d525050513772575339464e416c31417363527a506f6f36547a5530774f4e585630697a62676b6c4e46624b757a41436b36696b6f7a61426c37456c376e494b672f3541472b39694448396e316e3655596978514e372b584a4853793457534f3252426e742b49495a305071746f6431397843325871794937334a2f664f63544f7854672b3453766861545172395464464f685a454d6f6532504f2f6b314639716d3177535377466d5a383853657a763636674b48584677754b63592f5a456a374f446c416b4a42424c3043723141464e485032695873715448744c6554384c5154504f56513947685a33614366716c797164776e5430572f76336977415270525771317452612f57625756444e526e5842545251736e3873637653436545705738307449704d396b7a506e4d7638674373766970622f7143754c2f73312b557a58635871464568577646666f5648416a4f6a4a694337566d787553767630724f53797967782f5357616158664938794d6e556630426e644b43767a53452b78647034555a617444644a754f443531717a6377614f4d6c352b67644f66315257547736784d7a4579416b2f69635450364341655858684271316154706837506e6f494e486c686f746c37453751487568506f5739483331564d6f7373616e32744436394355677859465450536378475a774c7977435658466e4e70516264493567304f6c534e48564f6155624f304d302b677a724a59513049556c533030546e777054414f2b344442454372764a7070624e7332643069632f4e793355334b6c376c494d624b5a47506f4b5875493774656173786f6f4d3366716f45386d4a535745526b6639414c56586e4f322f6458717566546f6c6547546c6973704a6a6e54386c46585a4179503961774c6a7331686466774b78414867353036724f3041477776773972696a714f6d617039634578536f4e677a304b5a4570316b6445344550577a7562512f52636733425a384a475a646e506f696638415155713261596e544a5365586f6e382b553252784d526470737a3158756f6e7434455576784f396d67375361672b6962555533657a3379676b782f6f422b51452f77444e52553865304e4346714d6946644f554c426c316764474b6e39747231444e79572f445377466434417457342b652b6473356d49624f426271444677524638583859414355426e4a7063716144716d437156676c33745331685158796364775145356739725345656d6f4e652f4b43304e4c546c4361773472512b304758394a642f4b4f5266355754302f617153376a43557359774252685342742b5836352b2b6b312f304258493065703363314a72644c304b3435737a6a68544c464e4d714378383673792b4772764a62426a67734e776371344850593451424b6668372f514650554676386267763675766a5854495a6e4573713544544753416f752b6b3673352f644c6358782b7a327642702b36726765395050742f756139592b596f33306254497134576678764c3054714468752b797a536c7276592f5163484d307454452b4f48687a35734b7a647a6e772f757964527a4a543778707466724879436e3569306748685571526d32584d50797649356e67454e484b74644b79687656477465574d58317948535431453972326d7766706e795169502f6b464f732f494f2f5752334f656c766a6b594a7230666738753857702b2f39463531536f4e704c7a36362b514c2b764b53357959396e544a48734d2b4331426c303048464f3141324230704c4f35536b636b55372b527a47554c4c645a5932664f5555724f386a657561465853534d4e732f567249502b6d6e4d6348424d5370482b7169723335716b6469464365537a6b7654356c7230657a6c4f7147435037526d475a6f7938536d4e6b38644851625176336d3446552b35507a754277576a4e6d773938567169342f7443527a6f456c5a314a5563436153534e5766525a504352426e734f637065716c35396963314754503951664b6f416a4e61436b6938627a714e46552b53524b4376374833366852387a48546971546a324f505371397a766b3530666839695575414336307669494c4d7151634f6173717535736a365a2f2b4e583755383767475a7179722f614f56457850794c4568396946416f785638786c4a30776e34476f6e712f77796838506e766e6d484e673879686e516c7a386b394f70616f476679646f4c50536d35534d59336436502b564a2f395a484f4a447674594e7135357365415639524d716d445a3950374130346f7a6d386a79354f49357844614c4c382b45676653663265556d5075726a6e6e65766e4a6d7a534a756f3636654d7a34355763526235446248723156794d4a6c4b326f7a416f7351736f76685a665a316a4957436a694c4550476e767849483578414f6d66526e2b497863536d31476351384942726d4d6e325771354855732b546f57623575357272416f7170316a2b3450745951683843774278522f4c305441334b6147754f376364667278344c574136554b7337785052446c7a723039356f6e587179685a34794f584d544f2f43516653714f74597559307246704633526f6177375232626651416679487975322b59656c4766474c5a6b2f2b545a745932576b6e34715a4d2f537359317a4b6b2b7875456e7632484c45464a6b706375554a54492f734e553261394c2f4c2b347676797141594d43723948534a55476851774c36324a374f61394b77704935667238504d6c62484c4530675a372b4332394d2f65696648412b676966675059744459694c747372776f35326d44343675316e5361367634315a6a45656d6f4a592b5548484d7531537a456b70553436564a7049503643305049445a5478394667792b54353758644b6e2b4e486a71754c5477707145726b5a43424a7534706c58576e30763830677a686d5478393478485470744837787868386952396e6c4c46745647337176676253736d5344546d36484652422b3670334c77453536356d42384a39585a386f67484b54372f5569554c6b53334a3072436c716b374d5367425641736f35513653723631724a702b6c495563724239346968432f5958302b6d504f715759663046506a566f725862507a696e5071724f6274436a396d595659552f78374e47307859386f36757045513458576b494448613044353751542f414545393855344f5a68632b50394a6d4b554a625548453771715652455579745471356c6766322b3045776d664a316965735437484637793475694a694a366a3556326e396c4c504e32757274725a66735a5470455379526c316f324133525a397267384b47636e413536326a3166525a386e7a47372b70436b366b465074546b2b4d2f68705554545650583369712b64686175643567707a4c487a3536334c4279757234784d786d38614241684944584f4376706f554d545931554341786d6a2f744c5843704b717a724e776d513238533457645451376e3646684361714845453339413965313952735548456462304b705639504f4a36465476306b2f6156513154486a38594a4954427a567a416f343642642f7558536f415953652b72367a5565324e6d5a6e427a364e4d7a575a6a5a7632683759307265373434316e375a77535354416a2b682f753441462f694374565379724e494c49476f5975466339596e31615455683357506b2f53526c397a4b68715a3178645546424f2b4d756535786c77444e696c3152706c4b787a714a4c694f6e526a4264456f6946535a69534f524f4d2f746f343668664f723672336674784b39706877506a4349317a4d374878526f3479314b3748643165634131492b4f6d6866546f7444324f713537584350365939513863414e3737487a75482b67424a4673693056443774575837544879766a74792f70726c626b786f4e436f4a47473968636c4b5867483047664c374163784b526f2b7a2f5148504771686f687362374150352b5779314e2f665a4a71416d347a50704c6b6934467a7339316b74485366336744386f4e5437684250796d42367837686f42396d567a756e474c475357724b7037626f67463164414953686a655373374b797043584e3631684c70502f414c61682f62663642614b6954696c7a71716d4e4153645735706d677035382f7652675a464f536861576a515a4372397636736c736342576449302f36663641504d3733363270483374614a75536652396d73365936614b4a33706e742f622f4149794766504b4b697a394152474a4246396777535a4437514b684f7237427a5855424a3831764755315650554432387242372b327870366a6f723053477a33487776617731755532705559475357412b554b633264674f493076584c4c5456776d4b532b5955715a5359526c316933555442506d7036736e664a3746526a2b2b7a6770725242496c4144564570484a50744c5955386a4a626749366b5472647a3531644763714250535776733755702f5a476e34524258764467312b4436666f46766b61326d786b3436667363716a4e6168433075474f774f4334527a2b5446386d622b3954326b34665977444834326a37312f58502b72426e61715245744e553872644b39615368496c6b3632316a6579324c34447935482b696f4b57676959376745357a597a396874647a7131416e43624d2b4d474a4533536c505170672b31464f6f5576416e47576e6e4b7142375638304b5a7a70456c6945695170535a457758674665466f3867745631397443366d4f4a4461706b4955306555564b4e44733072757455484932444f345764706f5877503841503636457966766f4d43662b6e43736551635767686b734c4443656a68364b4664696b702b75545863532b504f734774523834373972542b75736152755371436676384168336e7848594c562f4b4b4f4f69736f794563686a344b576845702f3033534f73374b4531546847696a3350735937336339346a2f77416537726a4d78434d694d2f5641514b6a4a695030504f444e71547a394d6572597232727a614653736a434f73535376764159345a674d31754e42473444556d662b726b7a48395a393871337253766e56755348556774554d7a363656394b64692f63382b7137376b6c51376e7341656d3033674f6f6b4e7a6b314856376e563965685971657a722b63643062474e61336e746f7a784956746f4241734d7966706341306a4d766f41446c62564e6a67364d6c4b2b444c6e7a664a6c64537935494a554e6f6c53586661684d77554451302b386f2b4c6e4d30654e503249506e394157615a732b4e314e49506e597974444a666c6237416b42626e5769782f7742636d4f4c756777656532717866432b5a53656d54506a4d77517a3653344b4679664969364b7a735669536c7670647a6e44576d647966714d36676b707a794876656445783738507349794e6f6b38456e31544477526531684a712f6d6a686a6254422f464e376e66753154526a4a784a426a4c4d2b6f685548463944337453664449536177493754794b63374644524f71564873534e3666313743582b6953324c67694c4a364b436e634a754c764249465a2f44616657714535676b3635326b6b314b52396c2b69726b564c71535633725a577a4d57744c627059326a44563963682b58712f623078702f3547622f415767684378776c5a636d49495a715867476132712f374b654971664e326d6472776f637a4e5359756c4556456f6c63354d7235514d53454342346b71342b524a50724638584b58557567462f483958796b6e796a6e3973545631496972376864345245496e2f712f5a7a2b2f336749704e78306470496330757243662f414c4e33745a586d4c4a376d6e5054512b666e4d366667737a514a4139712b583247615a2f6350734149764f32494b4736517571735a45527a574e5a4f545a48396a434d644e516b555a3949584f704c32436f4f2f4f7632454c5a686f4f336746593577527868634641314e6a653678674e307a4c6768536c79517a6d64755775466777777a2f756e2f4e42424e7a6e5069413642494d46532f786c4c52624936723746636a307a4f6b6e6b366249706857317a5271637636612b73642b7854786a46676c4c706857665655416272356876734148774e744e4861415443504c59304272577130535333342f3479486e5766754e5932662f414575422f496f6d2b2f7448576744694d414f65326e50303441724467426f5a7a4667623649654a4b31546d66634d5635656571597449493343517a646e64326e69576e3068506f6c2f51574a6d306f35695a356d7062574446533266356d71714f436469616d7a56496c304334662f4142503967506330766d452f2b7958666a392f58562b5036667149364c70302f507a344a2f696d4e5a4550366e2b3965334a6859324b61632f77446759614363492f465077673477594738413346543047324144642b786f6b69596c66515950532b3079696334557537394e6c51644b5a376e634e4c557873343577564d7146494b4e532b2b347636423934612b49557a4b5a4c786e436b616d444754477a733968364b5a365a654d376e547247686e4a796857786e36563367582f414167336f2b795a51532b6879353656556975776a6d714e2f4142624a3769532b5169624f6365677a3435522b4e5979702b42593845556d412f4a3756482f5141356a6c5a434164744a457559353956544952554b577a4c624c6c7a4777464c61353332456b2f33642b4d464131504f4730702f594477727679464c4e4733505a7072544f7072633034374a487241776f67503532782f535a7042313078754932394a79466f2b7a3866745661596f2b4943574c545964437843662b526c526d7771557a4c557053512b53716a4f644c7a574d574536722f414c704b36746e523972672f78635270396742614e31737a4a3650734f716a2b4a70544e654a2f42645031696638324c705a4358322f6b59796c67395977414663767445307449584d434f5747355639367a3637334937524a53617072766766425a334c596674347545752f79585038532f3041373432324f50362f5249436446656b6649567263376a6e6379584a51584553703049714e42445458426e556c556f48485a5537684d45306146424c36704666732b59476348744d2f734352492f48372b703869707a2f35486c625072354d31616e665778776d59307446434a4a7a30556635547a7058572f6e4235514c7a6478644970364c58474576547a32497237564950463846454c6c75705631634e507954756479336948646438664b4765395669586436522b347a574264635a676361706268536f75314332546a426c563270693051334a596c33546c57794e4b30777654517472414d516130544c6a767272555a663045637356316b52357741456f41714b5157703630587537776331306845794f6850445a323565675264352f6a38767a6770494d416d4746626e396732537062492f6e564c36644c2b79455949675a70757567554a736f3476536c4630592f3841414f49774c36357455357864636f432f6a315658313239706e536d644975546e38352f7142777369524977654b42615a4271457036434a774c6550786250736f656d647265744139376f7633784d6a6c63464362627148507053465766526b67365a4f6c45466b37616446794a313143796a706e37323264424a67487830414170564d4c6c6d7457616931504b7a696e675846307033774c67592b584f73634265396c6e4c682b4d2b307334774431524c345261726f663045643335564a627a6d4c516e6f37443032574f6e502f55376d645264734a6c56492f384151584d59797a7168557034476444756b5a6d5930436b42516d6446726d333061476642334f5648386146396d644c6948436d6a6a477a7a4f46314254545336414e34492f726e6455694965394c33794139576d777567756970457030414666595949356f315873537979746c632f7371507455357a787767446970427152435a314c30706b4672676a3955386c302b633864614d6a49477830637a687a5755386432676c6678575a4c32784b6f4a66716c7149486c437764616d5a766673694168377749395459732f714c5a5a386d6b69702f5074752b47507347666e3348572f723075393871543171506c5450434453493433644d654a4d584d414e704b65306c4a54655570796d497a336f526f39745930745251646d354f6451754767705957415379427866444d58376b37774f6d6b42344e7572573373325666656b6c565a52326d397962394f6d4d334657346535456666707a757156595138393563536449305667726e534977624e63756f745232764e5a61454d6c434d7a524473696f6331466b7632436e566d577a39364e4275545155774e6d5035553071396c446b7447615944462b6c68466f4778576b384b4a336276483353554d714771696554486f62787677314c55346a2b53555639656c4b6a44346f41353961635539434862636e616b5a755a6f45584b32577830653570665937424e713654437a69676b623775744a622f764251735339365a334d63592f366d722f71596d596e4d414d577450446e513562556e6f4357573139564766615865734e556a684a4a54592b6b744a45547634396846385347704b59364b46467741556d41456b6c636a4c454c65346e38682f7742794c4f5a7478346761706f645855584a70676f48684d6c4e307235366735526f744a67653949752b73374e2f7133782f5839524b3853544d6d697066546c5432305072505730584d4337506874587936505a616d756571462f475272737a3642344859674c34506e396e7342546735453537776a64386a737a725939744e6a705a7231615365557a7930387a555775546c387a7257592f54793432364656426851542b2b357956722f415055416b57773447725a4b5831756755796b67334e6772666f35644d2b6a34356e4c6a5659563167444b474f71676f583654726f72496844694a75494a3961725063665a2b675437302b6c7a79314b4e726c56554e644c557431453431734648474d324c62477646626338615a4679447046412f77434d32752b34692f6e557a42522b715731747835652b514739596f4337576a334b796d7a555a753170364b6d6f664c312b594e5a565477645364776a645079706e787557787447634150443477446a782b35464f6b2f4d56583471626f615a6e4748314a67767070546f515a7a467a43676e7a727a3950344130666246715675304e424b564e34307667323545584d2b5a307756334779627648533037564f4357656a4c6a794c55614451752f6a7148315a72784e334e466430505154522f433654686f2b59515231674651775561495539546e753238754d3445717a75317a77357447633164534c686252496353493870396a61474f53796273305a66585451383461715675574533317161566c4d44702b744b6d6e667a5a437237644f4d59332f7073626d7a7a75345849617558334a766175334d744854695a315131646174674c46715265457231694171594a6975415a6f30325263354f3751694c516d304a4447687a633175314739417074737a36325254467761714c76717a564b7a676544767549413338516146663048796b4f4949696c6d30314b47507042477338394877364957557831306d6173456a2f414a425975534b714257336e7670424230492b50707243546a78522b52665a4f7a556f324a7452623756706b56556e4d6a794a3264764451477349763543372b50314c47397661485768384a646d3653326d336f4d7874644933552b596d365065357276696d69527952695a6c7733616b366579702b4d667038634c707a6e5278356c5437754a3635436d415154397550307751754c67644c375066644e6e41544e44756576343748506c6d702f795776356d4d596c6e5153346950374b6e665564524a77463030527530614f32726331494b72495542706b4d3373464c6b5636566c69474b55516e516e504175756d6141486b6e374f387050716743585a383642617166626c6853796c3836754b524c4a5574765369637669632b7a516e4c33653672695253465842396b3277664363332f6743437873646373793941334143477a71575470334f64515168794e7a5944476b68543334576637474c426a6e54652b6c337841734a2b732f71742b7a494d4c42736b4d624b474b6c45786c4733334b4337354a3266447038565132367a6e78306364555666763841622b3038547744392f774377574e67624b66726866386f4c616a366c632f4650753638676d5543356147726c5437435354535a316f2f437a345341313941577042487641664d345749594d50666b4243536b614c2f77446e68393644687064384a754c6e666c5a595447384c7656667550347547446865537763684d78544b524a344e515539636f473171437a584b55496c637a4f686e642b73392f446c506e7949426f43612b46522f7049756d487756395073356661697335316e51444f51536c39613162557a7a456133564478465833506451776e47537a2b364b582f2b3952754155316c7a51366844464d626e5579544b2f6a5275516b6552537357774b417a324d434f5072714b432b774d34546e2f683266684737356c6844717568476c6832483833666b5a796c59436158726e2f6b70342b386c4c466a44356c433679632b74417949725063446545434848534442744244375a355a3675504c516e515a56736d65456b76456535367633576e35435a394e684a362f71505a7a6a6e6e3376754c2f454d542b7247704c48593950326563374c557969774b2f384131474471666f586c2b35774f4f644d432f6b363159416676712b7553766d61526d44687774596152524d584735394d335934382b576463456b613545734741367749474c71465a4f446e65645972682f457344536678716c41553368504136545649587655746c4b35752f715a71376d522f5145716a58303532485a6438686641733347762f63496c775641414b764644324e43513344714e536f2b5345334f615463354252352f38665a45336e4354477650314257372f414f69626a415241564c42665142304d53365a6d4e30506b51705a4f506b374f464b587654514c373535325a72425552454e416f59494653626954384a73577732382f6f44337448737a75314f474b6d6e4d413276747a304b4d35777a6e4238793779533264644174544c315a644d4342564b676158542f414f77494363344c56754d484b73676d4f63337369636c45306b70324337504b56524d39346f6e3436357a446161696b614c682f616735374a4142314b4358703531513939783244506d56364c6b52362f77425947453452674e537764396c6c444a784664435739634f796d546a7638776f4146352f7272463331366544487879714273416264597258386c30706b747661705078674a6c71554b51785375703979566e516e396c77444134695a5853355175796b4a54735a7a7330646448617168573465565849374b526b7357664864315a473065394278442f77484f666f4d705153315a56664f6d746f546176574d613837324279616b62716a53354358664e396c507a4f4a6841344648556f513466654f542f514634726b4d377a697a4b3032743459353636433532653466754d594a68514154716f2b78384b2b6b6d6f5032754e72452f36766c57494973664a6f63594378344e6f32546f6e424b6e6d744e674e2f63596d423835333748482f61506e554344614f663841733537324342426c4e6d57716d55365166632b7966764741514f44764b6c755331317471436e48753449554577666552632b4d5144765059545038414c50336e6b4d515067413664534b4f3941724b48735a4d327a697147316a6b766e55686451636f396e746d34382b454138463148502b7548426e50514a764e5a4d397a3035346351716478524c6f62706d53657547664d34784659386d47666c4244376c642b74376750356a39692f7241494d654e62786e424f6c4d345050704c374e326e336f47396b316c434e6d584e6c48732b65624254376948762b756d416c2f632b492f306f467257567458504d4d71336c6354757345733754752b553050453451644a666f4c374b6e744879634c324e506f65386764374a564e36415944787247464b683447353147656e713445706750696676537336665266503052682b3551356145733754377a5937394a2b596a2b455075673264737878467930336742683971684675666650534b56764330656674704558773354694b573945773644766b396871534155694d7a4e75365131725459546c42394672574630516d6f553548456334376e4731384b683748392b3537614931704c7166325170393547756163543563596e4c6e7034794d42354b74394d6e31325048324d733639513130304a4c36352b365943725a3368674c41415074382b4943414748584e76772f634a506342636a5a336a326738567572706f66306575582f483055527134795558416b6c5330556457494f4141624d6b52634a71366b72424b78463068636a553733436f2b5663416c704372324b657a6970482f4443585a795a5a5a484f58534d534e4e684753536f2f5475787737586b4d48504371657070565274726f56794d52496e7158337253396e616c3279734a644248436c6a6e706e487073414846776b6958456e492b7a304c6f612b704433575854475653364f69744d384939696f304a326f51704a6e6251784c6f2b6e3779647a347a4e58506d556d62355153564c50455a317a4e6673786148524f6963585453484862534c4f54462f474c6a3472374273704a53322b34506a3937522f2b436f6a53413263364e414b4c4a54302f61664b4b464c4a564a6c396165507243725a734154752f58416b705976766541775768376c4e63776745414a56636e4f356463733866784d437869564c63585455416d42716233346b6f4e6a6c454d7250682f596637644a596c7a2f77434551683872583848746d7a576853484947756e553168426133514270544b737a587163527258396a36346647666669425a6d7a334c3467445544546e77636678596c4b3375674e5a704a7a72675131457065394c48384368546864786458576d67454143327156374357434a6a554835774b706e345878726e2f77414a4a36394d33746f7239716b36545864666f324c724b49766a6f643042364c452b7a4b45444d4f4f536c594f79435530455948386b39504a584441325a61573837386c58626946695849586e3164686e756333726b3963444e4941573958524d5244434833634d46754c34586653656e3672324f707036764868716d47624f5a6464777079665a556e6a6d54433458463851645637526330672b57336b686f56715535314c6c74576959567a6a786e666e686f516f4a723942792f644f4d73707445694d30756637313936465052434d526a474f4159764e37456a4c2f4142365a4f4951694251697a69714a756f30355372656935756c5367666a6e317639712b4455504470622b326d727450766b506d5439584b58796446795971474f7154416d65447648364172584a7a747377724171696e7263625748377a6130422f79594a7059514437306e6f77386b433171437159516a774e4c73364a7a7a6b44453264536c754a637246732f6b6d47784841466e61766e597a2f41456e2f4145424a52555239354a77704a59354b3566327649652b5663665866386b48582f583779716362474c3461774e6a4f6339702f2f414b6a67676f657769513653476c373231726c7a686d5630726b537a71597a7338504c4246716174415371597069714f382f7a3067644f416e336a5767506d5174504f7a314d47386638766b54504c334e7a3732792f583443633856694b7079495866705a4d57302b384d4f6b33334b414f41724563306458565676307057433770735a6e70513969697a674b63667134735930476c4a73656e76574e6d5a383037684d54446f792f45362b592b473171745154754e744f64534c457a673773343644394678436f3546797376396b5044314345666c5633366245754436354b36354a507238504c394239544f6162492f6a4359656a564c786453364371516d64533370534e42496e37317a685a515375383637726a2f68334c2f665170506a62444a46566f625056306f565576735878724f77756f6a6e374f5330733671494a7762505a78314355733442456e68556d6b41397a6946775254566b564b4b6c797058534556453551435935373558384b5668664f333446733979314447517545303942583265645433367063446f63616656724b43627a72796e615435434e6d6e58705531565477652f513758436943707568525a314d664e444f726f6e32462f78696f6b66574e30455475752f5845444e3056347857506b4e342f7741576c54743950434e5558575361336b4f76626c746c5661307174554577333830564950535746693254717a57635a48326544522b7966592b7a6f636e6f5a5836783868736a7a44544e32735a70564b6d716c5068536c392b436c43723179726c37522f3375753971796f4a4b6d725533765a544359486634746d37514b46466d547150516c624c6c736a5a484a6e36644d6e78574c6d634873364c4f4e46726c72345651394c396d5169494354654c6d397639417a30545a4f613538755232686f33387a68584347584c456d705174717074746f35314d354c537a7561776d4951706f445164426735307a79536b472f3136363834644779724c2b683162326a6e53367a563557546b7441614f756e30526437506433354c4863554a504e7631766c2b77744b66686d427662703555575871314c2b3544506c575a2f4f56506c4148636e472b46314838645767562b3058325a64526b58554777442f3977425341415943352b4e30725747394f6671615576476e312b485366656866377061464f44355246713675366c3066484437676478786c54384c51344873413045357a5349757470426c4e704d2b5364424a596f563675564d634b713570334d6238556c7a486e4f56504142695975704d3143665841424c6964414f467258545652764b3133304c493566656b70474450496a6a624d6d6962397a6d75566242357a726e6344347a426e48554f464953566564384769776d44466f4644782f5a36424958762b7937516433346447725158786b5032726e564558467a6d426d484566744b36614f4d416e44563334774b356e2b43793630383961394a68385a4478645a6469633376457a4a51763661562f494853435a786636515377432f6f456535576d5a396c524e456d4b355052584a625a4f6d5173354857566f6a7331654d575648443979563064366e7252366d51666c5638612f3044746149484e666a794d3756384964754b6b724958492b75796d69736551786d783761766a354776725072393634506857482b74786b52675744452b6a3749617561714f4f3577465a6c755342394d4f6753334d6e707053415743466c41726543486935716a647849705335526748376b7169302b7261696b6d556a535642474b704262596879336f4946512f74532f6638696b505564596b6f552f4e3871334631333941487031574a46637372476f3452477872456f6f584f4e464b6c6f4f6453334d534256545472466e545977756663647777412b63465367652f53617859576461534a6c7a6675566432743264674e4379346c66484e4f4e414f2b58515a503376506c4269614a7667623876376143414969316a474c4a54704b437041306e513339676a37636d6a416d424441525278563944614454312f78724254425359683754346843772f5643587352524f763841334f355750525a6137584653327770624963795153382f682b5a7958643658434c6b6b59436e674e424d79774136576f79476d6b6c525a6e4236636e776b3634464339445a654173754c5a7769344b3153494152523373346b546a3631784e44696f72306a3544577542624f507a656b715646746253463249336d4932646c61417a5a39487072616c496b50666b7a365749476b766970366e70734d5864455a44705564387563317a4a70754732326d6e362b7574443379736d31493875317937596442415a79752f434a39476336452f465934532b564c6751495231713431614772706c564259734b4b593654367a6d566b736468676771644d7372506c716378616e566c78505265706f6649337443695a2b766e4261584e6b31466e514b4c394c6c4b59754c6a346a50746d675433516a42376f71706f2b635558526574456a2f383074486a6541426f36705839412f6d794945485a6656386558783676706672733350302f7339795733357a64504f6a4772555776626c6e6f46696861584f4744424135446447786d5936546745572f636170743761754c58792f552b646946462b7872647243334f4e5877566354796446524d57466a6241366158454e483242534576414c4b5454554e6138786d68526f556a48312f52556c3641434d31334c4f393936775a54744b68735770414d524766306842535236722f5a2f51426e565332616b644e575a725458565836485a585663533773795a5a5879736a6c466548325a6b375938735450724f4e46796445796437317a4739495342636b394534556968306c71426c616a53766d316532767a353655326648754c6a563337784c50354f73516e676c5136383644704e624774654836434277577235787a666e424c74624e306a31325654726a4557555035504d786a4654736d2f6c506a6e3677772b5a6366764968352f6773484954494d52737453655756655a6e57316b35394b476448334e6a6c7a36567861504f6a55576b5576614f4d366c6e74796c772b77524a74494257666d6778626a73343474713461526e4f4a6c714c6c3531534b524836784b6d6c7549525469456c30596459544f41626b674d5a665a6f39764a6963546b5132665637726536383353506c2b6a544c727955306832564f4654544673485574484f4353574c6a6e6e54557066586642397753704e7330724f6631667365655250736f383556444a37636b42707a6b637a2b6b35453536484b2b704a6c666b624c7456532b43366a576a4259484f6e33755a5a635a477753392f395a69577848475a5a335a7068584f576d37513066696a6c6a69774a71353358706c6a644b49393035477a7a6b392f4f6a7a6f65356657706d5a33364e414d38784e4e5851544c4c62713852792f4b597458497930633433576643632f314773554e51387153785a746f5838684c6d2b79537737336e5144477050636579725168444f755179674c6448744d4f5a562f4e41375648374b4e4476595538304d2f6c444a512b616876796648644e5746426e4d78716730482f492f77444c2f7742502f7741617655664438643873394f504f665544503870366371325971615476612b72547934756a33524b564d376f3366793230784c4f764a5354693674306f58566a532f656d6e61394e30573237524663442b37422b41756c486c5765566568587272346e75616572394e73306e6a614c766d7374673979526947656841616e50734f6865796c534f752f7a57316e372b476637457a374e717a786959783638425a5050376e50397379573247702f6b4872706b613638754b31554c6654326a7944592b7a53347a5068735a6c32725a7173646e7246767747327635744a6c412b2f374a556a54335074486a582f554a45722b34582f624930416b75722f496665776444594b4b5a36764e5043764934516f314a7264346e592b686e366553484d2b326c6a7149326f4a69486b7433556c2b2b2f634a73653531762b6e39784f592f7a662f74703637386756666d5a3666714d387965794364724b7549484f6969713465316355582b6b684155546b6870683775396a42482f77424d71645378376e576a6a37763966304674763954507733387a624f724d2f4b72304c5075675462457748355a42422f49313644705a39486e386e2f4b645a4c562f4a4d4c6e576b372f414b5653564a49445a2f7447733131613849303751436e6a633368467971746a776e38692f5266595130546d5a2f4465595a7263344a3335446e4c63795a6d7755314a474b6148634f634547614b61413430416e3577596e4d64644f7774654877574b426e50702b5a2b6e72576c4a43564c73727957535a37736641556c4d4c4b733137693750376d564a633369584a63524f2b464a4535744c575633522b43337236434465592b6b766e506b2b635135533866612b563869627938633870795a3352592f774136653743593353653370574e6c4576636f544d6e4b73534c4436424f5371305772453877682b6a364a656f7130742f5867644e514c3043324c2b4a304d35335a71644e365530366773483741314a466b576b3135756d6e7062772f306d6c587439685475722f7742554372765333315644346d375067486b7a4669456768584e5a4e6248524a6b6c716b307a697a644166735a354945526d3677782b794f71734143543330743633562f774371477535344235376e6e6c70794d667a6155416c6f3551375a796448556d46424d48562b70536954363158303358576670764f4a58776c5a684e34342f2f706a2b707261496a45774a4e4269324170536450787a63355132564b4b4c4379543558446446786b7036445a61334b644f36686a567335776a34446b774a704131646b4c744e4d7a485363435137794e696242504e505743346e54506d624f7833425779466c6a476761365a5038414a7738686f396e476a3045696f3141625448333071526a4d5a36436e4773785a696e3074416d526d71616c476a75524b716632485148377379455841786a30706f624c566d71617036474a647a532f396979446848626e382f754a4e437157616978476471754f644859666c54437a6c6b646353334d53694e314435786265346c7249596854796556445070474456382b5557314239616c44786137644d39526d5346426f2f6b62632f494a6e4d66545839517141474f314f5573575755436d6a324f2b575a4a2f4e564e2f776b676e7743656d4538746e562b3965564e5178545a3571494b46766153754b30334c6b3661535735492f70616d544e56503841624b6355676f6b2f3045653868766b44794a43795673364e4771753153387a6b72686a4f2b506942306169714c4a534e54755545495343502b6f4f79664648386c5a492f514f5a55636f516d7071616379634f30586535674a5270316754724d553445566246424d6c744b643051384c765470616449413955735a694c514f464851564935377456374671356e582f42336f537a4e6c6b466a4c324d756f63366b55722b523373347a37465031442b4b6e34662b5771424d467a366e666c6958796468785a6b633648494f69586b7a3742734238583143435750514a5261532f342f682f73457a4a39344b2f7a4d7757706574792b653278445671344a5552647543562f4a7664705030575172485136694e784c4552497844354f716d3937766a53497a434335456f5858504239655941554257754471327941754f6a536e6175396169622b3172346c6632756539487a6f624748556734317341676b57456c74642b62544a4447784a36584939426d61695538736f667266593757434b6b6c3864445067596868454d6e7a492f5343705430454a55477a6e5266497745382b4a4e46374379477236436b496a6d63496d62337650336345566a6d75647a6e36396a4f42336a7673422b79486e43696a3739487656677a334f5976696d78665864512f6c6e666c2b4674767863366d7a6a4b316c317656482f7741544b364945496530675358336b736c674e6e593951564754467a70533374556b66566f2f376a4a69493343517057785938446f64447045346a6b634a4548355167785635747a457375726d62494b6c4b664a395a6b4b45797239707559745536524b3667672f774366326f6e42306d7558374f43425450384173696c55783030387172396a557537526f693952794b453274704c69654d535266595830535149673041392f514654414c6f4e4f31747a4f357872486a77374336587178572f76326a4e38344f37504f6754653270544b415830557255356e30692b793332427779424b5941454365696939633661622b444d746e5971556b58794378465032456d35664f4648443833506d3977704d2b6455434f70494c5837556876524d373276477867393452324e543142562f62523756457431464a4e5451776e6649366e34652f76686636547246764250764f564437366e363561555447653265666e4638426b6331494e4439397269735573752f477a7675494236736d2f47562f736143665977424246442b4c343677707863346c564b4c7572495436693532316e58564c366866436f6e352f74366e36335134306a496a3444665a2f51616b65533274717a392f74477247795673745a446e6a6331504f637032506a544b6b5a3675413559592f324146726c674c45762b742f777267645a304368646659547373434a386d68565745534a6376514946463161446f636c756c557445335074652b535556584c36394d344e417745667267747a5a694a6d63514a686c705157676c676b55636474624e43655875586e38727458646643686b527954513846446d6b375552305359703178522b3735684a376d506745394936356f786d506f4f6f74355936714f715653342b52774b2b724f627a5a6c6b4573626f632f512b4c39677858412f7a37376e4770503942556e547563757842544345664245765a705a6d6664416373524c725156485353756d56696f5368346464504863506f4a2b55546c57353339412b3675794c7332764b48555664426d5855503139587348314c367056307933786674314f4b4c626b695858396e2b5578703435662f5636354539755870392f58634c486c3758394f6c4655655930666464596e5130394633574d557a4e6a6f686a476a6b364175584f76526f49614f66704a465a785944774f384e3151433866536d726330446a7054686330706e7854537854734564424a61394770444e55695850496c36537061686d734b6876384170346442705778686a39634133714b5077362b4c6b503841696b355146445a706249614b7077355148316d7079523735424d466b66575856634b7a35706245706b543041374d4d2f51745870756a7547486a536453746e4b3947416d694a6f2b4639614b57326653676f7a2b38532b5451716239784674433530687a6a31473659412b425a6f42436e56455438366b706e38706f2b3970554168506a4b34363662313031543867505a732b36743943394b4e73593978525a392b6e765a33412b78503841762b4672536b76485974382f37417a34355239744d46595a6233457a746a4a527579373636336f697571316e47794c743350717135485974367547344539424a2b796a3575544d37462b31496665665a564b764558327a584b6a476e6c7a4f6659314e61616f61424e30635463774a32476d4f35685a646a6b645978706739793143674a6b67424b647142586543564472564c6f667259303739413667304c61756d78464439746858554e6f5775575337504e6d785131532b4b637743436a74786c396a71553376306a3569312f44336656304c335346645371374f6e42557570577250444e2f374e6b6d626d334866787a334d584c506e432f6741344b5a44507631754944326e6b4265397a4e6e33525a657550467158616979497066692b755177544c47307441655a74423258415766724c2b556c473249412f796f564b547735654d375a323966304357526355663055755768764f5842387a39494e4a4c63397258524c47584b733755663273306e56564c6e2f53675437334e62536d676e434b59763270426b5473675744364c6d53364e696445727a3663487342584d2b58557a6b793579645a6975414f61656b6a68496a4c6a5748324d756a375465366f4236366d5154546b4c696d623558626f356a6353474d4f44725572716f516e6d67657758577933465037672f61324b436a35763338503744767a58347a506c5439503143452b684c56723531586b4875766e7064387a7530397a6e342b6a56544d5376755250467a766b4a55746c5266375668395a4a736e5766797a63545847334e596d4f49482b6374687a734e3751757452544e334b7371356d684b7075437562516c706d2b4e6270526f735745726d544b584f7862686e734f517863464d33394b64714147786f5a61362b4d6248625239657a516e4e4b6e444d78704d676e43795a35775642797973736570692b6535417a476d776c6d357165505850734a6235626d573671584c4f51724b6a6462657453746763303531496157696d5851577546775934766c71653751447045546f773671466b30792b7148476e61674d565a316e555675346a756a574776643337634f5a735573736a526455306571494b4775643745754b56617a655467666871446a4234697a696167536162325876594c4f454543567a525530302f6274647a56756e30566f544e46572b6c66766b462f5656307163596c544976367a4b6e48415851486458594e4f72694968585376566b306a7257435a70313132557a54723032324e305866462f4d4f2f6b474b36357379674d48414d79765949524e7a2f6a2b6e7142477649562f446a576a7a587a6f31354e567a363239334e416e714764634e764d2b627469326e562b304d72355037756351424f4948523071595a6a464f732f49505046383233525454383870725979555a583564746147673253554d31614735696e727637564b315047546c5168536b436549546b753676676a2f5532763352496a757137744734566f304970725051686b796e643373375a656d374e39723875456c552f4336725134544e61734a4570594b6953564c535a4d762f693159356353446c58385a4169344b63374f714c553853564a6c3565654d37383632537851426e506e6666552b4b7155436e6935316b6966326167536e35587157546d324775634c4d557643504a6c6b546b5953637a647076677835646e7854505a4a2f34376e7a55336e6e393041597969624a6337363647735653357272714a79544e4e513577636e2f466e6275683568355875744737527169394853444c31323132696a6c44664b504953484d6432364d6b772f78784d5963394e536166752f576d46677269723978617a4552694938523072306c2b535a506f626d42597a554f7a4f386557766b78503174484e2f634764587a756a6f506f304a6b46516965565571303138712f327037383632324365624e6c474d3852726c2b444e384b2f422f585879574d4a38364f377a33517a4e74737542544e39486d564c7259593645646358792f522f37463073714c675437526344752f42504959476439575a696178493252394a4f445035483666706d6f6830354d534776593049557978516c45686245706e3867444f6472636c776369613732797749494f577a66377666536d7a6a31727a74306e3543552b626c2f4c626348374730645a33576a544a462f47726b7378506f54687045726d6b66565a3663316234563856636c4c556f3076726e4f737753583953474638315838776e556a31345a2b5a476e72554e3034353658784f45715676637176576c58564b78644d646b744163724d71514d4c31544a72416d2f62432f76455a594b7346506b3139656c553232446d56453548776176495673426544703646654a7a504836496d6c626a544d444e474d55356a466577364446663955744f5a69766449634850585957433169343836756c75556e44654331616376612b352b6b4f6537452b7a6c772f5148685269354d694b364c44576c4461774d37544a4e776e6f445444526b7a53532b2b625365332b54576b6a6e6455614e622b4d78343953547366436a577a3747702f45716d5944543442314754327a64616461646d42616f7371626c6f4977686d61686452517a53647a70624a386673513577793571324479646370796a4763365a754647637a6b7a674874397a713852494d414d32757834563250534c586935542b7a4a35504e56494b364b4b7454567673502f782b6361436f34726b6f2f454b587455637743664a5641376b576873507a44584f7a4f44546e65766d7169735a45544e626450597341657747554c433869483676535a4439324e66586a4d6b433477486b336a356156756158384f536e6d32596f363379316d7165655654763457524370666c444c2f41456c6e7870595270396a6f445761584f6176725a695a6a6f4a664679665334685657536746797a4f42627239792b655733527a54397039664b65534b532f3743357a4e7152636e2f547854544f647a2f6241636d796e4f717a314d69527841555831636376744b3363624c4a5057634562334637684a554c374150396539787563526e4d442f664541417770716b305259536b577876725a50576d5a39714567355a4c45516535354164787a4c4c50614861685566314864554165383141344d736e566c43754f4a646167546c4c71563354587a5969716534426c4359584f5a4d7235705a5946355976616f45696e33752b494931474b6c73546a50634c6178425776782f556b6c7455626b54446f493579576a6b7a72326b6f6949577145754a534a555a2f2b4c4f66596f6173542f5a316d346542484e54544b7957346b797a324a41624b46464f646839766632415647796d665553376d782f3250614c5773555846712f514d59796a2f55494a7932614d6e526a2b586c624b6d586878532b774b306c4d5a30454e67486e3335316a59424c595972655255736f6d367167552b3868454a313459506531716346584c70326d435864523870565876544a50456e3357797a694c49324c31467445754637422b34414b44326d665036444c6664556d6975574b2b68695a53732f58415877587245725237383657577a754768596c5a593576416a61663770567750623042465152563265475862723959327959645330554c4f46335531557a386a53694a733931362f616d3566387052306c7336626a4f4f51506c643158785467377930646f3178524545507944726e592b654e7a35336353716e4c375a424c597632394b67422f786c5772684130482b7a33392b454530783363524b57547047323368674b56764a305173616747754138374d4662455172703977335a4b4a374a66647a6e46454445324e4d35774e7334535032674d45736465704978683054774851564332533263374a4c33516b414a5575636f694a6674543052396970694c346b712b482f49514374387862426f706c37786d506231446334704a6f4a795a4461584746782b5652687850714b66736d7358423538737a684833725a386838352b676c6b644d6e61334f7a4670767168526e4c436c7a5a4c45496a624e33576d6f444f6c4957352f482f41434d35314578702b64522f7159665a77705141424561594c697a31516143484b497068525148736e7a78374b4b7057434f697346453556534842504f333466736f4f372f5069792b7030496a6e333635627a6145616e594a556455494b6a44744c707132522f747243677564307145327a7a2f4143422f7541702b664b6f6a36326b466744626173304a2f4a417a32735735764d2f38416a61656154363641612b78484a3231304462304559396e6443693457556530355442784a61617942796a4148354c5843476b2b6a336f69573843564e544a7962454e744e425a657232684b4b70564c43666b2f317a6d6e466e744d442b516e6538794677586a347563396e6a2b66554e45366d61434a517247596e3473765761435363453948564a4d5a666a713050384a7a58372f6c70617467744177564f4650366a437a47397262476973686b7057663862704132493744455764575768566f4b4e30355a633837435977426d43644b682f37774c3671634754493770363663754745774a55396147354d73326370436864556d664d736f756e6865364e7a68577770364c5453667732476b413936542f6f4c3151664654716f4b5634534a7a65756e6c4a554450624f35566455303646682b32465631645768796e336d557853557a6364582f414a2b787755566231794e6c6842567a352f702f4f6d575a6b756a6f7877354d453670564c362b4c72386c6e42346c61753064442f523872666849584d4867464d684c4f2b554c51646857535636626e52432b344a4b57597a47555574517a4b625038416373425642547059417054777a6d57394e50774f6531495871715234706f6d6f5975574a36676f6b416f75506e476564435149304d716252326563595349515978784957633332666237657534304b6b383661777a7a5a366d304c5857684d325a49614d3251725532547a32624759632b676b45754874535237514c684c716e57415a557236315378424842695a2f35536a6e3356636966336a5a636d4f6f7952526d4e677a394a6b7441304f2b46684b4e684f506e424c71697a652f716e346935476b434871726f566678427943776573744f5954582f414356702f4856656233517966595739663245716373574b59596d4c792b51464344484e446b313678387856487058326b2f4b5a683176316e51585a37363054626f565355664f326a51585a6567304a6e584c555a33592f337665546630667a4a476c4c5149484a36562b5836794266356d615666456544794c4d6c3772504f6c565a53617070625838362f537a63503664392b683169736c6c6a724a776d4c7636614350306e357844706b36644b4d62684b505763776634563470437a6d65564658715634302f354e4e6d5a6c5256357372574b54654c432b642f6b51734c4c6a50674d616442746a3450515648396c30735636332f682f754c75383947492f465068436634536f682f6373747a577336376c4e6d66387249647963674f4756704c5374706366796b6d64493365316766314172656d784d6d6d2b33586b6249665966754e6d704b7956725675536b36374a476152642f6b4c4a57446d7148336370694e4f616c41492b6152774b43796379616457586f36443479473642464b703256483152502f5848543153773034754b7737474f7a31722f665744387276702b345254387246414266723364444c5a556f653930685754644b557a35706f71484d6e6c304c4d32694b6b5157372f72705944512f342b773558574f4a66796449434b39564d7162654e347542557564416934463863392f5572553666506e53427a6b4130645a4c4b7966354f4d4678324c636b50675a376d686f332b513949614f6834584c6171726a71664e38466d6335504474544f50536e3774646e444c58787270426e6e58596c762b6674352f6a30496b5470725a70534d37684b764a656c76612f6859685258636d6679484e61397a7249546e686a67736a5630657a4c5939746c485855664554466359507a66355238554646644a3172777259624f5a6b484a58396f4b7445364261534d2f4f374f556a767075306b3256614769576e38597579304d6e6a456e645748576d5a526b51455a7164555352347a537a365772394f6475684a51326d6a735271722b586a3658496d684238326c7a2f414630352b656c787a6a4b667652667866764a674d4e6f613437326e4650362b2b494172746855625069666b56544f78736249706d5037552b322b6e507473655a564d33716f51684871487242756162544a536d4d2b4b612f774358487a2f51516a386a3776342f314d3945746f445533556873637051347971746256485073726c30744851683679356d646d70556d5566735539565339714c4245314334506c6f7458706635663346376558736d546a533351633445694b556b725334786f4f49324f70706a3557435672372f786e797157582f5a344a7a54552f436f5234416a5144504339542b52324d395930533053383166342b2b71735a4a4f67784b71466f6c61714c396d587479324a4764694f47503650706c2b6e48377067744c7955783433345a2b64425a2f4555503252706c416774376c664d56596e505078452f516f4b513238393771525358652b326b674177437055717a4c3552647775543958516d78707047576d696a4a7a364f5730716d4e7a6c4f45456b6b546477424569733777464a4d2b6751537463584e72436f574e56496b346a4f5a6445335a65636b584d4b4c372b3071643371334e34726b2f4f3936706e2b34416f5352422f3167724857736f6b7030382b465474446e6446314d63335747345063544d48356c726e56784a6143356b77696c696a483241756b684c34663841574a684d764336713563677335714d7157624f6d44334f6e726e624c4d63504a5667644c455175346c624a3249556f75684b756b4c4841536b6754515742502b524f7735327a754364417a55766578497474374933517073422f57726b7a65386374656b57534a69505739447073634471506478524f6e6b463032307a52574a5950537a794e363677545271554a584a4a31454d72546650444e536c35696b6b4b533566796539786d48794f4c706d4273666f6a7a37584638354f2b55345a6a4341617276675977704b6c3066783473357166592b47552f635476694b656e356565382f2b43727a2b583344693952796d687055555548506d3953527a45544644313646673158375a714b53755833464758426477414835444175416b6166677349314e4e637965547445396679645372394832684e644977327756324a6d6f4952486b4969517867422f5037326d414a393648482f75422b665151784c5764635662534e785a6e4c4166564f57697a504c4f6342754d5339764b507039456b384e33792f7743417655487967415030544378304855396574796b33386951326b51664c796e6c5844356f7a635772367270334573506c55667638415a2b31443833474748514438732f3131714a347170617834547a7a635461594d664d354762576c2f326b4c6e6f58556e3263622f414b2b435875663770674968574168546e66594e3842593656306b5335497063364e39476c50617a5267616775364875424d70754b55666341714b39564a714167344c7a41483261344b4850615a6450516456612b57397445617544784a72546d4d36333662415937326934564d2b622f4837695457505743505641576f63736b72707a6c774e58494659646e6f764f62526b3479574f624a4642534d4267754f527a6d4b6677774530754958754d534165527737506b4d75724e4541766e6d30316b744b615150765652476f4b30547870474e684450494a6353782f44556a3743675962584b2f7a2b5956794d5952346d2b7932574e72366e757457357454484d5972352b6b2f4c6278584b6956574a4f736c52503263757a4156504436667767777636423546565459333366502f41427a416c6377516f4c684c51734761424b65507873594c502b314b504f4f39696c4f392f7336735a6d6a2b71386e6c3967376d3737595738345a42784e7448557a475458417a3537614e4f5871366c4a534f643839633438486f4230436f542f68386675423339506a2b6e366a38564336666b3757554b7a5865706732644e39366d657965744f613867717932385974663179467a4f6463594a2b582f4e5876367a2b724254323658574d6579795847686e624d555663736c7a6a712b4d6c6749764332506a6149336c4451596e2b6d474d7745482b535666762b67464655323266366975514574746e77474b716158494a6746645961315a7a65392f6c702b542f78357259596a7a367a766961596830476d4832654a31554c754b71624857434f4f724a2f7931744d5a37766f4567757a733976666c476450792f434a38615a39442f4957714a5947566b687854543278317a53544b7035304763424d2f316a545647775257532b7257766b383564594c476345755747494f5a376e544d416558544959686d3533704d716853367866486d684171564f31616c64426a7a577866616834336f494161585441342f6238684f2f6f48575a5161592b2f3841546e356e7754504b783266534e505655444d34575454364e4450624b6b6f726b742f516a7a324b6d4a7a6a6d5355376e5676325a45556e366c307a346e386c377a72666a4b736a47434f6f4d78613472666c682b46697332676b796b633942392b5366336a384a6f6e5433763957456c525a4c565a7850385a50795851684b697365554278437a705a4f373475545473364378594e55376663616639784f4e6e4f4b446e41437677665439417a314c346141626e4a2f57666e50546677324b726e515449696731715645574e3161796c6e36332f41436e6372394b4d306d5837514238416e503566635038414f4f65436273634e586136593356526f7a4b5a4854463262714b487256504e66596a7162697a2f6231592b33392f737945793937524e7a686150494e65764b5672796450594c57356b61484468715a537542447662537443326d746f5469324f6862694c724f73366666596b774d65476d7766743754336855736d72767053476770445a516b6b69425445634e764731646f4932452b7234543979614141692b502f48696b2f7167495531713878764b5869636a58576e746b2b7956644d615a614f3349686e66517a4e45534c68542f414372537469654742756e4c6b356531537758577a4a543757614d34357863573261627370534b565448457968665a4756494670574c354f3550564d6330774d2b2b78514c50336751536d57634a6b727337395361336c554f6e5452556158446e54725a5a796639756b4a7663386171492f59346c304d2f354d44542f67526e2f56643966454454655534645855745a7a736a6379706a6170566e4a52546e6c2b334c593875673450624b6e32386c502f59364435682b775a474862417379537a6f2f58555a7050564a78736f524c6f4d705539485064386a4639514c53397131724e2f76377877696c612f387a4a537a7276723469476551564a35333543565776705a363672467a3236303741637a6b7638414853554c614c577a393657544f412f4a306835384e445141676d4a5a32417343555874647a68353775784e6758646139706642424b2f4c374f357371426f5a49354b2b4c466e4838427a7635586f463741643332424e706e54736c30716b566f4437633361554c72736b426e617336696f6d314d4e704233342b796a52307754777753344441475059744c50364164464e376567515335736a656c58304c514347556e575a356b3561355a73366f4f2f4831646e2b786e752b5278782b7731556e7850734158756c45764e623047737074532f73384a566e304e444d4a536b716d6567637866464d6e41506a6f6d3630663848474831675762306959425a4b573236504e65506b307a79573661373263524c7a366b714a356b434d634b53645a4b524d704c6f475466732f78587863634855677a2b6773497155716d34445a4f51542f714f79457578694d585a55396e5641757337425431614f7357376a7753726f54416c4941744c6c67483941454d365857424e50634874546f6f4a4564676a78675652507a58577773594c424a66784f71635a4a615145345854464f48764577494939755431746f68745851366d65526b5676484d59354554467a4137736b58527249766d6d37644737764246616e4f70414163774336766f41353854722b785a4a517938574a6f666f476f6b776d4343536c2b6b75654d474f583871352f6b7a57482b67614b756c59784b515544616c4745354f5472756b3462354a394254797055562f4a75526f646d4e6c6359425164482f326c6c5658534c3479374b41657a39417a34446145646f4b66352b5871506a6c79412b565556346f4236483069504f71316561447542525970374c3245524d41476e5955332b514f456a4345626a6e33326c484e544c4f774e44486d2b7058524855717272452f524643495a6146306655364a6158362b4d356d636b6330514f6958394a2f6f452f472b506f652f56364b68714c3637416b62397176356255653672344663702b4d5a535a4a41736847645879506d2b5a514934735574714336574e552f346665686e6446735152777a766c597337666e43696c433665417a702f615447786a484e57535072722f415074492f7743722b6768745044305359386b366c6d644e776e352b6678383138395971686f37775758767a794f4f582f475664414d4a6167506e432f774175714141437439376a566249665a6b704a6552625064632f6f352b623175645a5577465266437531534c74455a6173304538494f4752584d4c2f4e6f6b70594f3850767375636c686379556e33502f6b355639482f4147314a6a6e4b6b7250666c386c7a79722b4e62524e66666637666238526b4a683859574e4c4a4f6645422f492f564a6e4172664b31792b524f667a676879565367456573642f3161462f7434705630674e672f4b59416639412b2b524b6d4d57486162656b542f4148714d756a38584a564662505734435a337631557153766771354d484b695773452f4743542f6f49356f4d374e6e32324c516d686c6449444d776d6158324554547966614b506e30686630666e575644656b6e76503137472f454b5747716341727a5a70356975374a5a7879374b732f4d7a6965686a4e56743661497665764e326d4c5a306d564f3048644d695230784d666561576a31546d67366955535061706a5670696375536761493557365675757956452f384175676f6b5a4c79643635316a554e66364654546f54387a35766542646c476750307444416c535a31565465376a36654c51507a416867353338597a395545435a38676b30456c78544d63524b396967536b556d52734263474f7461395a3971704b333935362f3546665a6149796a65786a696d45574639646978736d635a7050357555705931737a6a5638694141724264362b482f77436e4d7a756f6171573466627969583744335850577a4f2b6761733961686858336775454a686e4e706b316e32765a774937396c796e397237386973327a326f30536656514c6b4a30573164356e6e312f32506a594d5a516f6c452b7a697a6e57665456376a36746f4c646f6c65696446456b4655337864306f64446e31503274737243584c6f4b58394e664d3256517259736a6f55446d74766f4554543067346f4d615a76727555384631395a79537174546e4a3035496f726432374e353375716772597133447838645878394d666d4c6f4e343479414574494730595754557a386f6c4d3074346d4534394b4a664730716b573736647551322f342b3931617053314f7154336a425a79786e79676c51634f6f41326733744b4a2f75334c64504375643638326c6b4961537758464753654a304134564d2f7936437955435157613633544534682b4d6a2f6f424470744561716a326a2b7a4b4359394f3968513858306b79686e3231785a4a66794366347066464d6e353879432f582f5a487248544964507a2b6764535454616c6a35784647634d72596550362f4d784b3954513153707535396559566b616f30734a6a45704d65416c7a5946644a7a52506f6d447a67476d6f755a3341625856436a516f487947366c57727241316b73466d66554370772b4734662b716f7553434879307057344b69614c6672674a316273354c5a4d3752354d7555796a5371766e475349587a2b4e4b474a61683551766777396a4b35797836763745314f6b717639386e494241496776616f5a65494247747936343330363156746c494a494e476e517336495a7a61674f77555a37716e437a51426450792f4b5158653167393644445376564b477548564d44554e716268366c6b47457251354d46456a65746271706c71466a4279326637462f61636d6a324a41544c332f4147375537554353347a51354f75576732527a564b6d594c547070716f6455726d6c732f725448545454314a4e74686f4a507557414f6d7056544b7866544f65716f547334576c686e496876777064466672533361564e795072737234746f4755536e437546613536724b4a792b77726b4e716673744d796a6f4a6b35343547744f6e6b30785a6f36584863796f6d35757a614e47425565757237476d614a5a726c586c6a694f786f4e576d5869716e706a6f6d6f4f644a4f4948757048577474337a67534877474762556a714a68383272654a6747753664384b744f32756c544b46614672447370424e522f5854317870666574583849362f70754967397358365238774239565a78794c38477a4d675a6a4b334267714d33515a6a634b577732787933365359644f6a357037447343687979706d37784b766861597a67427a50556e4d59384257586a76735171454759764f56796d356932615449374c5a3838744c4478634f766f546148433048776979364b6f494655484e2f714768716959465a3347316d657a72736863394158645a4752776965506c5a367270413745744b394a69597175726f6e6650596d656a76434a3575536e324d2f664b452f316a3866312f5566466148595a757a4c6c3631707530614566786b6d6b61776b74716c76693172654d58375035495635763253696b6d702b78324e70774c396e767569714a4c6b6f304b346f465064477955377a36553535394650624a31464933756e44617171746c5644614a584b6f374c78726673552f7348427869424f312b31494f777374723765702b4d30456642665a6f3266786373665a563049536b465453585473344d78617a4c476e796c6250656c50414c3373344d744651376a7037396d4f65617547777a49345a2b4450594769537975645446712f5843786e4e434663726d506b62505544722b55725250516250734f51456c61713244515a705a645a544d3062422f6b3538367064446f2b74354d72766165496a4e6b624679757a3245373964482f54775059344435386f4d50704f6a4b4f5637616b6f7a5253327676476330315a79715636575a56515449364774534a664a512b314955634e4977684d6e3971577139495349656375757a2f6862492b36744e4d2b5358563942347536356335715a725a76765977757a2b3171587549334d624e4f62652f4e376c4f4174485369506a74434e3471426b4c4b4a7758512b37366e78767552413735746366633670374a374246786446626d4f4e333043424239414a506e3267365a66473651797073354f6838464954653372796c5477773478693532334f4561506166744f5035572f4b58522f3165372b677462487a486c503261626977714b477745462f6d684d4854434a64664366424d7073726c726a6c456934344f734e7978497834667362572f5a6b45346b4e58435365396d2f6468794b53303575434444725050646f566b2f77436a30507466757a53506863373731642b6234684d46392f7176377a313443516e4d2f70495564435a757265736d2f7743796c383361562f474d676a387a474a535246396775724551412f7744346665632b5035755a68707a34334c654c3043736a6768664a333555555a54454c63795a79486a2f79532f6b2b77766e3735772f3262766d4c702f45763367303532715a704b584c634376685559677973774736514b2f6751326a746676507665532f6349587148347858475a42377566346e30444b77505a396637476f53514d5656497149304c6c45686e685375307030694a457a7336614f67506568375253536632486575542f4145416d6f4b512b79796a6d676642476671435970363434786430526f6b373863616b314c2b4f715a76372f414d6d793853505039526a7a355142323958702f5a622f4b5255554c5767756935337753367a45646a6650383632542f41474530634b4d56382f354141566c4c64374841733366315868575049416f5945365769484744514f5175484c304d7850514f594f444355726e3141344b75726e4a6335546c3862484d6342474b66722b7a33664c4d7a4564516e787837487635326d52625655496156516353326b6c5175467a436e312f6143696a4b64396a4f42316766482f31673971564e465954303868386b4e54306f4c71564d46656166327a367153764e355a4d4d384761786647364b676f734c3672754a493169304647592f343074595267303556486d714e624a706d66704976704a53322b796e7646466e5653534b6f4a424a7a5451326a69326a304a7a34354a2f542f66766e61362b59553471616c78755651316c624b47544f6e4f694f57676e4c616b364f795556586d4b6c302f4a53514f4e587a66453654354f694b5a314f44436b426265464272467a524a58336c2f5053726765354c4a6f616577336c3069595333554c48692b4d2f5866726c774865336767424d774361656b394b6c352f50314e505279314d56494b6d67784c4a464e4b66336b74566c51744e596744774b6c716d66497379455156486c422f5772717056456f4563377a375758564647337444536b7a4a36744763685954684b716346476a6f676b7a61596b51682f6f6a683266495974616f593052716e6a2b557851544f4949794145317a31424970366e4d6e436458463055455443344851464a744d6c46333749534a4638737779564e5170514535424d47655146325850724f4f543548705a477a684859716f616a4d685758796c37464e42427136372b676335335365772b395771787773347674483161655638712b584d5074744a51697753734e592f4d50312b443747754d754772333038586e65656c594755334f355242786f2f55495a6763785249706144313339716c576e6b2f497a364a634745753958384a636348376f6a494b44596662634c523542334c37545437614639617731384d42354771554a6a564c5534795244502f77413246306d565468304b78347235756f4d2b4772686631596670324e73743445386b3948485646394f672b547a312f51727145587a70536b6d3939764573493164535268386e794e446e5059787639413664643838362f724652637574675239552b756f5657425350755a456a2f414c414b5950666b643754582f676267412f30775252374151484f6f596d536d5a6b3635754d37554b2f64504330712b414d366e787a525664476563617148444c3376362b493731732b4c6f443047676a796234744151344874456d4a62336c3068306751314a57326642713578786637752b3133503841596c786763664a2b47484f6536674d7078372b38704c542b535241306373563332776470396b745338356c564b79426631574f49696d583853523466792f38417653732f36444a67387a3467666e317559697746533851354a2f38414f67354767594b576f683479663330554f5a7861754637715069563733487a356c567875694e3041596f35776178326952477964384950423178555453382b41617044564e4c48387075343461694a6c437a494b5245756d546545523244362f4e5a5159556f7059365155436c52762b704d5a71623776314679696954394f3468494d4867642f316538316c374866433471414475446c66436447364d46396c4b6a52744d713156734f6930572f4652647967567a4565742f6b3475683332442f74705068712b622b674a6f366e337a725a4b6746707252386e736242516f796d4f67515556396a4648516c2f7741307774576b54567855612b664c7a334f49774572344b7a4263706f7147533162567767363334616b766a576d6735544668674c4230574433712f5a3969637330576538694833706a753573423076566d317a4b6f5a7a494a5775346d336b31564c356554646a4d4350324f4d69582f4b562f615a304370412f5a33356c2f41342b6e495a6577717a6b64565452553962334a544b494d6163303168784f68346948345a66682f524d7343636a4e66414d794550634973486f6672426943744b4739664b3336626547524251303769446e2f414636684d33645453584c4b4e526a4847592f3766594c6855504441417a536831796a6a4350724b4f717346444f6d737061356871474556463167394561433042397a5a2b395a5477544633656d594a2b474f486138676a3370314f6864544d396442467a764f4e373074456d684b4b6d4a62495475386e735a4f4e52725944463264393443395057734c2b704135543548497a676b723649526455726964656d4d355a556d6e516251516442494c5744597a2f41455846384151354d70506567487339344b6d7a6c4b6b67324a636f46486f614d38394a4e565a774a572f5a652b59306a374363464874427246394e347144762f7661667969446769424448792b79395345386f6d355966414e6261425a705a77326653686678546b6a714f375170626c5466592b6838725459336f45514d324f4f6c4c59374c514f77486d73526338737976712f77434b48346b574e664c336b7246305369336e4a796b6e50356c7554314467635038415564654d6434545647334e6a363033744c674f524d676b396f3742567a67364444304f494d552f7953305a3635786237684d33657a727845516278545a437a75716d75627873394472476956477179664f34636255582f636b417530437a3549334643744b4f48336846316f4c5151674a676b515142745058696d306d6d617744712b61616a54394b4e6a79354e4a596876557439786b507636672f6352486c65344646316462503642424d71315649685536636c564a61333565554f67744658364a594a374a79726f6a51387247664e32596b695a4f5353514565436f77794e5436676135684b2f6a7141645966316158484a707a7369545a314e693138643967574e30486649615546377665426e513051486e394155725230337863412b4a6c306c30733645674e68495575514b75462b744f6a6e49342b6a557a394574594c583133506c372f77437a674130374e6f536d592f497a75637a692b64626946796c614a48424b4d793557787a2f584b77575433483876666b2b754b562f47662b6c4a6442662f41486e6d2b35554b35744d70324e6142516645794e716857766e775558542b32565a79734872775076752b496a622b6a61446549415a396e4d7263716b6862303733316a6b46525a3033554d515a54306361366567464a4a767a47517335573876667a6c444f416b436277465a5a3646336141694e444a394a667846305459624a52564e55364752794e4965735853757831526b76347638665a377a48336e4e565144542b4d4244446537356e6437324739437676496d592f6e50307a504872335546524c47786961753936497a3846453376412b422b707636423945334e6e325a4a566c615a444a4f676962773253736e733744552f50766a6f754e57537357615537756b4d7749563833456d4956382f5359746e453436675971733561614f7864554558786475744f6a5158395356375838364431356464592b3076754d5430577361667847346d6a2f414f364e4c70444c646646544c6e6931384d54556f687058514653672b793575646f4f464652544c3431786d4b3143445068355252473739664346445a772f6f4f4f48712f6f53713833395273766d5454654d506b314e644c2f4a5255486332716a413066346257676e5371623665777a4e53557a4f68302f774449356a343251715855352b39656b664962732f69707a5256365239316163724f69756f324b6243306d766e653269312f614f61734f764b6c68394976744f753653526f63426639697351415065344d3954686248674e6d704850444d6c376e4b37526d717a6446555657663841786648396a305372665261644a5752387a313872634c412b4e6936467150384132436b337542564245387a35475075513070673675382f6d36544a342f642b795a7a4d6c30776c5855327251656d476672794c334b4e4d77554178716d30436f434446794e714f763466625754382f3931307a707562747832443971714f566664427a53304761453567734f554a4a585a6e664d3968416677676f774a7165786c6d2f66433937442b5176343751524a6c3852436c646e6669666f68524850307249524e4c792f366a624f4e426b2f2b7a356768656870626d302f5378664738353338593279666d68726f62426448524c5264393068523961646236453035756b4b6c6a4a3858744f77412b7339414f63706d49347a3045317a635a3031765034392b6633636d5430545678374b724e4133784d367151724c566f455764736f2b7944414a702f564d41476341567878684957356964784d64587842557749702f6f3075464e6f306435784d4655763867706a46364172474e667634346a5778326c372f4150492f5931514f41352b31586479677055746772427144675776576270457a51306141376f4c6433362f31334c714f6a6f41726c505a76736f36705476384167486f396e66794137515a42385141327247345a71705459334c736f6d64393161314d5856517a2b483533725236787856746477794f543567426a326651736c557838774a6a564e792f486e58713039646f6d3275676d6f58797667395335333270656766426e397a64496b437063596534414977733641567752576f55485551775139304645314239306453755a7849305a6e712b503962444872517566725074415a7341435544765945754571346172453537524f5258463068496561743457672b6d69783933464f6c4871316c2f7741635970494773666a346165394954536c3138774f5655795a4e624e50516830785074424a524e3157696d4771763554574d3145793166362b4c7175516261506d574268376a4d464e396e394172566f684e6232755476654c51595a5553754e724f41364b73345a357a6f65517357744173644f48566436596434632f4f382b5a514f2f6f4548636b366d6371543667576932647a36666a2b59653366364152614c644166624c306f6661596634484e2f6953666562542b4148614a70484349614f6a5a4f6d3368574a5a4977467430515655747870643169326b546854446e395a2f6c326b484f3435502f304459594e614a595568453061394b596d5339717558333269585439736530667773372f777a6744384c756937765259347a2f77414f752b524c517735472b7847666f4e6b46664264575838647a6b43356a696a6177424975646f5939553656725a4d72686339346b356e433976663954674b3034555731375568316165723931456c347472716e726a4b696c4a4c2f7763414c4a58567a715741644d42585038414a2b6c4d65315841302f7955687138306d5a6957526e52796d6d534f4e6c56566f36574d4c73706e6b4139747a516c466c734b6454704957396e37584e2f6f4d36514469514b7a6f75586c73506e436e7a357674793064664766767274713748497037616556547a776c30575371536242576b506d2b78385076634873426c6b734775665255352b726b73717657545a4a31592b464c43394d38367a74556d756836766a4a32666e725332376b332b75616756392b78776c66304376575a6c35794e7a7a73697a4d357658584f727841574c4e496c334c546c4a7a74637156707353544c6569317658547064384a676257554e4277486243794b6a58515538714870717a484179596f632f547a705a4e4f526b733266574c49663841583154476462326f2f6854334548322f737742774158314a2b305a79796d7230354e4f42544b68556a624f542b4b44366c4554515a4844474e4877707a5557474c31724d434f5839394b7069666541447046367836584a4d3753496739385249666e4347372f47374263536c6d6464624838546c3066587a30735a552f67433833644663332f337744467a714b50315051796e7038354d74445365784f6f2b702f584d79726162426c4a2f312b354f67524731676761655a5457677a35753865494f6e5731526a44523969673756544d30314c31533462355a5775634e47667953365548796850514d2f734f336966754253617530304638767544504d4b376b3362315554686b4d5133364d304d44376532324e627830355a4a5a6d59464b3838716c3642304253727047344250337242726a5347657044724d664a4672616d59724d31574a477370387032734b2b667871666f395858585a786c46547846627550506a7166334150772b36655278663046532b514864446e4d344f6b7033387078693561594f2f52784c4843757969613676765671646d79496a715a337053564a7363327759317539762f414678745474514853454b56486632756152424b73684732324a546f6676614e4d79577536786d584359585a5a437a3938457a636d63546e6d596b50386754555a543946444b306c44444f4c35394862636f35312f484e7142784f37506e64344f6b686d436b61484f366c664b626a41706d676c584b7a5a4d4154484e69547a72626b5a624e65536e6e5835725a53477569354539425a36633841314d3268546c7263507a4b59356f68332b625034545677694c6f5073336c484e67684651696232546a6d352f797a482b74434f725048746b37567a724757634e44506a41584a4a69554f4d3152644f524a6e4947524b365639774f6c5232787a57642b6956576278454b353668703442764d766c6f396b374c574b415843595332476f777046684e2f6f4e4e2f79327a4d5451394c76553575766971636e2b4b37354231576e7071667070375075445257744e4d564175536d7157596f654b6e4775636639614b5841744e51703030733734774f4a73516f334857514a77597031557a77644e2b5a4c7a4f626733634c4a386262697854796b64506b57786e2f4e6d726e2b4e3835704d4e5650784d3059696b35326450494a562b4e3432746d57327a654a6550384163784f62716653427165446e536f54622f774350733338734d373431585a634766347667716d7664784a5050562f5841644c4e5a2b3469305238583343475a36632b434d752b702f452b49617642304a57685945466566636c4f653736326a544a436f334276564a6a5a3741552f716b6b557a4d735936614339334a6d5a347a316b4f5439477654356d67576c7065444d6e3231736956433363615a3536373232585271436569657036644c532b69366673724a6661716b61614b7831536134414e75377433334737506f542f6139384c395142627365572b4c522b4b656d39666a7371633272577558703657354a5670467036742b58797636624635396d6f744d626d3130302f59697a51364856734e61517774727a455969334f4e34422f48763841486e306a3853753857394a664473484c72376f50566f65516e6a316e706d6d74535a744a61446f6c3679576470463745644c6c43752f574542716b464d373255693937577a626a6b61316133704434733355396e6b736b73564d656453783278386c744e4c3250744666384148724850484d4369683039576c3048504e70436c7844397a6c63746a67746d593654675450433946384f4a5939446338673546594a472f714e376359614c426d2f5a4f4b764f79716c542f522b31517154336f4f536163306656452f6d6d717a777550787230543270786e5958714a357337756b736c4b524e35643552627453772f6459334d2f6a36647651344838674e45365a425a4d54754754775364565a6362522f5763326a76722f4d54356d4a366934626b384c31653875666c514e685062643379447941364c43377861597174477273397247444a5248516833573941435076316a4274426e31385a69666739667941726e6d66716a474c5137367a6554737154437359564c6b414b78684c75706630465657566b396e734678436c6754556d557741373274536971384a785838456874712b72333541352f426769395436623374445348714e504336447568466f53317a72644e66384152444c6e466b3668715150772f77436d61716c4e494e5777426e336450777749362f38414a5838686d704a5237474e354c424a6e77553255573457597a35696b764e476c6f797a66615746555a3643796f4e614871397075376c7a415a664b674a3256384144386d2f4d66313678463544443858394e747a61654648646e7447523263504761705935394c4d59794e477751446f56726c30692b756445617834676b714a54692f314930365433326e364448302f2f4c6e313839514e50503841454a665150302b386a4459304f4958504c4c56342f42566d787179777a61354d32326f686f5778776c386a436f5746435a71776176676744465437765472783337525a6e6e5035482b556543367153742f487a42386b30485835585035484374737768756c6d2b46397a744e316d485039555133686d46437554744c33706d6d536f71326b6b7152534a2b4f42486f667a62706c6d314d7a2f7743746338682b394c6653633861504a4b2b46725a7745747748464b394c57396f37386131744269324a2b696175546e5a30464a4b6664636638414d3966502f6b45492f77413276537253324b742f5939455056664a3036632f56676d426249633178774c4f4d6270684e46555a497561345355494b492f684d45684d43556d2f32783771324d52616f4c4a2f4f50304f4c53756258344e36316550314e304853544772786d427374594147612f55624464577574564650314345686e492f69633662675a6f43776b6e513931624861726e352b76366953392f4d48386462744c4c49717655484a75326a6e706b52526876657845622b454b5a56507a3366362f614d36364f73687065585239744930436f585443393166772f722f59456354386c66787530376e5a78656f656f76514452356d7a2b37776a6235567a6744566b3543494c546a59746c68696e4e536c44414f6b666d61453834474e66736a33642f77794c494c31463945464831342b716b65524d3652774652634e306679637274632b6f346c547265454d494868384c3576746658616154527a7656554b39314d582f442f582b772f503955665249714c417a76584478486e4a4241364d316c7a35366c2f506f736c586f4d4a727665372f414c32774b79397336326d3267695334776e556874746c76415454777a796e776e2f79504a652f314c384d76486f52374c4f70324d3062494f30564c7a383267784669754a39376e4d365155682b6e632f77416b6d5a6d3577566d4a78504c6b624e4a38333851324a6b61325a356e676e4e444e774766487579797a46474331365a3072746c5770307366772f594658364950333941444a7178344866367a694a6a684e4d7943696234645649726b324576424930745a5a3167305063786c38706b686f3255632b50334f4b35482b59663549706148734c6747435935716563422f4b38554f59355455443079576931624368635a2f65344c434763552f457876376375667147633676384152487a682f4e33347544514c78306f6237365a6e4d61556a484d3552784649316a37676b46677a444a38764935533655344e2f61524235683866735951635359664c4b48653031703450426b72414b4f566c58794c377075486f643674784232716c66746e4966634a65387a4837552f3734306842505058706b72764a67726c656f3372354a6646373057562f5957757031796d6b735357494d54547853326a2f746d36612b45536855376f44546a332f7048426f36616f366d556656573870544b6e3634324d6b735534663856382b75745a755968587642786b514e4a7154733577714146336b5152663563343130617770453530726b722b4836664a496179594b57646c2b50393939674b5033687a6e7730696e68676d2b39357a30416b356c6d726e51536f2f6153774e61595572536335653062492b695677644a6258653553532f66794e397678676e63334f6f5451785530746c41544f375562473166536f3578624472372f33562f45546c69366672436358477054562b76386a416b6c702b3039594771766d574b44386e56355450326c6775356d4b2f5a53426e544f303951575272513052755a4758644a6a507355747a71534a59554b4c337044716636304650394f563051667964497a54797830657a5370314f6142795336764a35365a7441325a50775a74444b70554c556f774537752f4b6c6171514d5036417a694656584a775777556a6262374e54376b47664c527745314d2b34656463527a6e315a66522f6b783452675953425343657a7270642b7568493964754d745553724d2b715758514b703657535477364a354b793672556f654d4f6b773662424633736f4d2b724433444d423853786e666359564578327549646d67696b797365687939473631485a71776c34534a365230464a356a722b4e675a71374344354566596143544d4a6b7966462f4732355050374439514f635079585a62475755334d47466c6d4b724f38646a797751335068587979394c4f38773676745135684d6e63333375375a5038684167793974525a4c2b66754e4f5530616e354e6957783236314e2f567271515053306b5172552b7234523979365033316a454c61464e682b33394638534f4246354e6945617a6f72375678536e7878616b39314348575a4e78756a3056713564617566354b3030527242524c34336f665763715072436d4576366e45347a33434e2b59785a6d72546c5553736d7a612f6f4c636854637a2b5169726b703676656d6b4e53397a6f732b364c6f7750324a4f666a546d58416c5432776d326137754f30473877704d744a59744e43654173496c55706b70315a344a5a3630744a543739486b763841737a2f35506336395172734a4941343030725776375079524d7a4d7a497250794a6c2b507535777331584b6a54724b616e6b745a6c465a5638453852717a3936576445735976766a735073396f4f4e335857664530574a5438563631696138524d4d6654386d67723859304d3557685979794e6b664f36573837524434324d73354c7369356156784573335633443748452b6f516a4e7a426a4d6a364665547a2b775538355a5a6d654a5451417a4f613664384e5064444b6d7a623133546a3265416d4f67654978464f4c426e6d63314a7a7153313361424f656a7271464b7a7a5a6b514877724c4663374d6d3351676e6b31476b64393531474e7172303146646547584a505055656743396f6141624f6245794131326966456455616b737461657a61505872694c707a714e3461492b356a3571313971626f364e55586a39565237623351326654444f37384b58367165353563624e336c557132712f3455424d2b4532306a4865497a765133717574737a5a57424d77374b506d6a4c564c69625a555746793773795a53372f70634e6a684a71626e4734467455415270563758667a5a43786173755037665a51646335493075326f6243647a5752794a546c4b75374a594a394c6a59636e51564d796b666359652f2f414f4e4947656d6c465a6e6f4a44442f41426f2b4f7774372f49324c624770325852697872457967365773703632554263616d5665327935747638417763366532485171666832447855414873466f496e6963746252582b342b616248346f6f72634f61374e795735484a4f4d6c66645231496c4e2b34685544763466367753386e503345487a467938305a7446656c4847313944496331415a3968774d62624b716a36303271324c5458386966707051336a47725a37447656484d54343645682f557a6e764458315144716f6f51517a75556c4e626e5556354f69717431427772304d334f72616d5167702b4636786f4e6e412f774379557941596c4a36545a7662616e57666b41655139777a6c6f502b725a7269536346766a496636316245636a343177383338665530462b2f65496143425475636f6353514769634b666941686f437573726e584a5a774e716c4b63324146356b736f5655565530324d4d737a76385a64784b317454376c6d2f6b342f434964555a414b515541463473524a5a6d596e79576c62307376526e71386569676b57304a564656552b61476a552b773964554e57734b2b6d445a4342487636526f64514a66314f63546d4f4145354d493333396e79614e5370694a746f5a38386d4d6d783078472b74794e446d513961325578314d7537384c4951425844796c79664a332f6c644332633833554444786834724f774e334f645449655573587a39706c7a7a30396a48356e7368783657774f44724e516d66476646316e654e43705a6a67417566734a32366337753841504a6c6a705455664138486f306f614d4c5869596567325370656e5637705676434f686662567538645974344d5250337131667276497774374f354e3950764570796a62543161422b44376f724735467332685571654e624b436e4a51384279334d7a5a3135756f78696964376b686d696f66736b6c6f647a464e3650574435583962566f31724b314b6e4c5436725356644b6561704857594a63524e6f4d616c64724b5032766e6556792f484159664d5032666537623450702b676d6c7163704d77476f5541644d6c66737a6a50534b742f654a71584d626676692f774330526167554b4e716548326b38707267456c6f4832312f6165734457484e66496e77766350764a58472b665376346e53747a2b412f433047546f6f346645567a384558305564593650343570584b5447464b76335453646567354f34787957582b585a4f49577a7a7a556450783957524f6956695a493345465473653334496c314977374b4a536e46723039457673754e69366e56384e61742b2b74703749366265732b543343394c62436979675a6c4d7849756e566c737a637143767564436c2f4d655a6b756751564f735470574e61687054312f4334346f2b7249457a707872316a35696b507756356f642f4876315a6f786a6b71566c61506c72597634673638726c7a71764559366f78793277764d7150713642626863696e74634432706233356a62383366366e562f7a4b3775762f7362422b6e334f6876654f49733864713363716277593954476932527552504d467a387667592b50713169784d704f635474427265633738687a6354396a71577a63645547504d4e79446e715a45695756564e646c48624b394c4a63372b5175526e5159647645346567566a4f31724449646d4f4e4c6578307563616c485a63435863434b7869496743436252693673384c4c796f307a706c374869643853793564486247626b4b416f544c796a7666706a677232457a4e48716661714f67556733374a724752744e6e2b4b5a715a704b474e61794b4957554a725662304b477166324f69664c43556335784a446a4e6a723363416c4c6d343559413533784e6e6258665878445872535979737a5931486b564a764f575339365a61702b635575625656615478706e6f7a566b5243324d51544f5a414c6758565979715074675348566764705370637a4c6c4275666132742f5570325756572f785770324243584a6a57786b79567836432b45784b542b56337a7172307a4f6c2f4d2f642b596e47456566702f76576e6d4844484762524c5a7136446f7574316f6d4d6a6c6c65547a534d326c3755752b44332f4148765a49505067414b2b6d4878566e64586c7a7746692b466b6956444a5a63746548584769536d6954746b4c4c6d6172614b6773713133766c59414a5650504c2b32766d45356a2f77425847474c516d2f716f6a446672557839694533316452706577322f65375a725a4843636c557331335a524b61464c35617953686850396e54764b63465545466e394165774f764762567073376a305a757176523059357931556f742f69744a5875722b6c4f552f466c43306c31546b397243396e55564e4266466d747639424e41514c363368787975304f4e4e625a395746736b73555830705136447174576368687148334a56336e51725751307a394e514f643964344c366461754e764b354d527230457a556f7933774a4b65703745666256637966794659503069364b3535557348707254394633456b50734e663942444c55716f30356543744e4b566e495643364c32694e4b6159767249664c6d5772587a4e48746a7079362f3571436143574c42547851373241706d5a68522f4c5858392f515557626d7731667962337135334c6250486f38796c74564776756c556c31535a6133703630575370632f36626c48544f304c387747706e7756317a746a494f464e724d6e6f4e7377535261303479546c53424337356f5669796a6a69575468596e3965786a6c4d43594167326a524d5a314549357a794f333256754b627941715a315359767a45715548784837696e6d6f5948786c3372415670556e4e795a53574159664d776d6e736b2b3869734c526a4a45537855594a7964453270733156642f56782f4952563248542f72633533756d466e792f3571482b676c7668665855553339415a636e37444f4769563471644d393145365a657a57744e776d76356e5269646178457a41324430766b4e6e416f427a75736f667a6f56524b4c32736f373268793147336c6247584c4b795a6d6859314d64522f542b515255786a52585a4f30666d3968682f5151483732632b764e48726e795338614c4c6f554a79703433723631692f6e36514d34354b7a586e7a704d4b506a396f75556b544c74424a4d4a446d614256624e6c7072523262545a52586f476a4e2b65564b4d67796d5779346e6931524a576c6178353169462b316d73437a5553776543676b39545872304b656c30344d354d2b626f496f392b54514372766b594648754d45763933754a6270666a46534263494f2b4d5774367851413173572b645a4d6565784c3035597971346231327a737547516b7a714b7438766561413963553538353051535a7a416233734d47414152654a6f383869426c4769656d5278357159536e7549587255347459325555502b6d43714a31754c575778524b65427164774434722f736973445758644f455073664a507a72654b6f4a3163716230734d7162703152644a5441375149334d6c62563076682b6a59487545547536594f42687055537a667963335673766e6c584d31387a477833456b6743554a766d56334e2b4b7a5063364f4d5136736e79665a2b796c66456453736636437666665858756935444f7a3651393551356c737578612f516633566c6f425532557135777a726c316947685873393331774e4c4f2f4766792f434476526455586c4e4f6c6b75396d55794f676d314131425154444c48555242305a70514a79796f2b3163532b646f424e6b6642365a55557153547578334375394e6e6561507a64756a374347703256335735623274794e4475634d437a6948566f61626c2f4e554d71303959306a484e2b684e5053337045596242346b707a654f7056773943626b584c564437494b4a43714b47675a66343869733047464374664a3253672f72516c35796b6673674c48464f49566c7259365433387a5336334c50764f756f666f4a6c556830303946656c79653535674c54464e6c6a394a5458564b4d305567704d6b30376d67663841514335634356326c6f55427a39776661357472626c6f42626b79396c7378357248486166376f6a566d7071584f49664c386f4a36517161504261384c76636967356b3258726245313869343732507230414a64484b692b50734c6e506250504b7861584a3933755250396158717957433263354d464a723146426f6146503136654f617a4569793079377048326a4c53773371617565555a583256476d6567556a304f4b396e5a676e5551556d56494c59377a48794e6330716458756336535a6c676153596f32315055626e6f7362496c516c4750303574616f6c735857684941665870633768797143397477367458507346594432776e4b2b7243394356523574792f6b6b6c7344707035333344375a7a587876474f4631536e4e5237464c35774b4e3873562b2b6f53332b4e342f366a593964656b4e475176714c4b4a38794871636c32662f414b355746376c666f486d66757a577a41425545704241353863525133516965567354514c734e4b4e546c74464939737a35322f78695863356c786e64503168324333354b766d4f394b506b624f62542f6f4848726654334e7a49416c6b6c447566564b643345334f34734a467179567459312b62524f2b663431756e414a69426a6a6c50703853644450652b314f3141722f306666666e30583361655070513254707a355a33365775706964453963394a4874794f4c59376d4b734570462f6569706f30484d42434457676448562b3149412f6d41646a58654635612b2b517a5a396e6d76696a6d6c6c616c4b62786f4c65464b6357326b5a3354565a7231365836346d38564a705a4772684e4a6b39436a747039346d487258546a3938573844484e2b7650336e6e76693976787730496e534a6a74753732714e2f5a65766c6c6b584a415369596b3079424d6678726d63314c2f36696d374e6863653441647a766b6658784f6143485075723969656c4a382f475a2f4a2f71364445707a57506c6c684469367750697668413247365a5a742f71677254562b725a4e4a545059766e79536c5a5851456e4f333655476e645a4d3155774250317331625a334f45305541612f394a4a596f4f44386639425a6d45326c2f6a4e79676d7368574d744b757470664d35736c585645736535376336666942564d6950554266773834496e4d504f4a6b647a367842506c3052614763755850544b78664d354b306a44527964617661424c43566d666e35616c464d746456532f6a2f3244317068795944645131786741324553305261613634312f52632b6d30695175617534666d653533796645364e58457042303876414531702b79664a67342b6e3264397761542f6b4258585a6f6541354576446b6258356869397a6a77325663353268765a547556564d31307a7457666a7338336c2f74696333326353326b456370577a536e434c5433437a64353864577234484a3970426f7a74335649427258636a376a34796f4e4c34334c7156305766396f5134496376503654457741354c54595039556a7062356672413243546655384c47307035644250542f41492f786979706c6e5650796652643270433244784e526537556f496d39613776616672664d6e68682f5543524376347541686c71584a544e5a524f564537536774425530725a706d716d6f5830594644544c31585030667874673437396b4b572b344e6664726c46487278685a4e445556577539504e69754e382f4a3255395658734a2b482b514a2f3841683336374a63306c496d49306d506b4c503048774f486f5448592b7369726679537334333146394a5a57354c74596b367657724c4343646e596f366a79573132396a7468712b50394c57747144457043567a56595877683161446b7458706635663347792f6c59686f5a62507144514c4b786b6e55483867557a363676737831647974576a733833535a5136575661454f5a4b7879576d646152506c494851516230346a4f4479567a4b6b544a4d737466784b61367556474568694c43524c586d4b47735a63396a4c696e6e2f5a6e5948477a4737674d6374503841515772354e5a70365436777a387863344f3752794a58454263505031524365364636645a4b70347855357956733753494a49307a7058384a70503458515071394b4f48486e71484e6c795838706f6a4270356b776a326a542b476432765a6f4f577361484e2b357850533659475850734853524151392f6f4347665631734a64367033496c634e7154664e385a4e4e505034332b4c51717a6e45462b3252326658614d305a2f6f2f63616c4f4d78454b64513264742b6f7671436f56456a58706959623445763579657a365754437a4c307571444b5432706f535445532b467a34557064314b5264386f576a346451727558316646716539326a2f4a465367466a5a4a45626d4d375a734f6477666376704d68647a6a543970637a534a58657439776342362b4e746458583374306441576f54336b7236455a6d4f626e61724f6b794874416b56435566616c345846757056494e354a42676c4d6c54774a4542554f707242457a62574f712b7a4d5149704e4e55667a54757067664d7854616c30554148454853494d64796c516637522b4e66512b72306b325361514b30516b6b37316a327271744147777235526d2f5347556e7a3835513546684f34534f394255782f722f496e4b5477414a7443554b5935303079495a3148616a63345066796b70316c6b6d50506c71702b6a47734a326649723433663654367a3341484f7553416c5457614b78554a4c6e423450597566515a477332643931485851777439787349536f5373486a7741366e6747664f467761544d487245664b3672346d75676b696f6b4d3434416b72525238557378304e686379644c6d54746f59505a5437302f64337166596c5a674b6c67546771547078324575567a44716f5632645a4f6350586f524f4a7976547064487642486e786c3373332f774246496d48535941475a6b4556304c725934612b746e66496f423756504e7149646e44702f616b6c6b706f545677564e4766725879704243766d392f796a7a2f5773474f6d4270464f39476643524a534b31776c4b7375652b376e58676130576d4b383776615a45752b53555038462b2f34706c385637414d6a344748693867443148553174466346745368486957524e4e4376384143565970626e6c7a334d4b63714f4f53356e6570427047435068712b454a566f77722b616348687959684f4e76555174347a6839643279516b76345767773172423071466d614768785a2f7267674642667341517a6b41325a766535556a4f4a5736383477556c41746f346f656937376c6242596d65653453493348795a36775372716f775038417762572f5a6b665547533336687455334a7155354833306a4a586c2b39366d2f593754326c6d6b6e6a6d507271527a6a316a78776d5a6d5a4d4d6e4764682b357041376a59715a6d7374634163696c6d6e4a6c5446304a4a763256417a333853376b5930566337376b6e37514131687742625359666c415168536d7342746a6a552f72612b4d71573032726e4a32614d2f536e712b53786e45696f53377a725a774d795552714d663641766579513572303944553751425755386b3471794b2b3531536c2f77444c65752f58366c374b4c4434386541496d5a6e4b6b614a6d422f514e7546624d787665726e594646724a5774597269694e59722b79466a5a704855642f516a384b2f633553566d58734e796b667632757279655832445a6e4f526470433830544b466e3175396e3461473851504749676e757a654a5231647a667239554a4c353861532b515161516c7a3957424761764f4d2f65785046476f4663426831397a71716e6e4334784b6c4935356533515a556b57454d3071544e314b6566455946785256352f4c376754563143344d77427374527a71352f6a393152774d39726e527359424d51343144527a354f724a6e426d61774539456666386e2b64676f7571466b696f5a614c55713532716c31646c457431425a364766497035784e6e592b374e6250395876506a623731664349676b4236665036416a6d3146394b616e3956306f702f6b554d5a663258377154716e48546a69657a6a6845752f44386e663852536f696a4d2f65423942703176325a444b6d5a2f336b526871352f5070557a393633367359524e7074624c6571725063333476702f484f6e3370435a6c48424c4b2f7a2b5a70664d46683951544459674a6e4562395648434c3941317358567a55566f624c424d76334e4a612b324c57504f644d2b45346a3670564b665a2f514e745163325374784c53757a6873474e72616f6955676e4e6f363737584c316a307049792b366b6935396e2f5231334136414a4a687141744d46665a757556504855746a7257506e5569656d5a3254516e2b4c626a776f744876596e484f552f792f4776764b66702f4e786a515679517777664d4b784959614a57564852552f33552f452f67577858706f35376d56694c5a566c37706d442b79396975586749703452715a2f51445a6f6d726e2b35557271363661476b6145524c2b6c4b487458524e5651447146722b7744713073554c36464d6652373365776d70446f414d6d6459716274784776554a4c4b546a367a5236784d73362b31556d726f664934556b6d69644b32382b555241414250365a79662f674542304e5050706f304d7963532b7a6d4a4e7974616267716f47717850796637486138367339686c5051387a4b556a453665653739735941424578453951586c34346e3966515831506e4b496e4f7371645952716148734d2b7675595264534c617175766e4468667234562b38784c34756631494b744531314e36464541706a4a58645a6778452b2b31425446576b564f625233756170587772516e2f414242596e2b2b6b5963466f4547576878536a35394d77577556536665587a4179314d6e556649365870414b696c467a4c45384a71766a4e5975554b2b467a7336584243644c7338314b79317a3550564c4b3275725049614b666b2b566d5169413652584a377662396752595a4630766e644762654c63346d6b414a7a75436e6c5558793164374a5a6e72506e583038714c4c664b746e77556532716b6b703763786747496538766639654f6a344246664a676b306d686f63556b47392b6354574c4246455a2b36316e65754f51357064576f312f5147706b706a59546638416e34774435543967724b7579766742504d3830356b67736650796543686a6c38664935684b454f6d55794a70556b786c516d786b35382f547a6430306b766e4258384b6a73426e6b446e5667554d736363624b66765373746b5a4e476e4f6e63452b58796c4d4472463953747053734d4136664b5655666349365679675842434f3531304e665666646f704e76765a476531536255726e3556375568466f576a517a3432424b557461462b37362f774877754e6f2f774477734c485555387771644c6b30547a43453530505331437836326e72454d36475a474973454f464f77506c4a6774486d62772b73373369674d47756b2f74674a636b797158577848757353393673687562396b3279336d41455048664c384f6550466643596635765361532b46674c434d2b51355a637a54746841696f6d457157362f475a446335444f324a756b72706c6177574f544f4b356549357a326645587969502b4c544767436e6a52584b314d64634c626f4a416d675550557175644a5357665a506e54447a726e4556793366596859523865514e4250764933456d6c597862705079456d5a6c73626c36444b2b73475834712f676e6e43614161454769687476464c4c7673537671563541664d52566e31564b576d54452b7a6e39524e6f6a7149394f336d56776a4e4b304f58536c514b58424e4a456d2b79305a716e446f7454596631794e632f506c4c6f2b395336446531727a53483957362b59686c4f663367546e314d456458614d795359733871756c54466f7058314832644a61584c644b6c6e576334644a6e2f3035672b45413531496d443778345838644c5551614253566a474579705a656a4f3774554e765648316b547276624379696a326f6f2b52363175426f6d376a5a6834515775694e33554e5a456a51364d664a695a78744331506d6e70536e355353662b784a4f5553524e6e483835372f684b67773970722b73455430473974305a5a70674f4232756d6565567157755a336970706c754b6e714a3533632b51624b6c694e416644787a51514a2f384e4435517233536e55476e5064796b57367776723050745449697435456361683754775a45664d4d35424c5151443156484248357538363735684c3467773865757165557771344a6f5749447a4a625a4d50522b772b72357258736d6f5432636a73583144515630684554346337656b6b4654426145396d6c5232562f61574b47316146505659354d4637313936365658465379463861364773514a704167506b3373635a41412f77436639416e2f41434538797156796f6a5a6d4b5339636c567042326f37426b2b4a6c4a2f476c6c417a757568316a575a4131667877483854424d67357749746f736453736377747168774d656c77762f6b53513962436b68613449366e46306c3164705976347a6f50355030597263376a556c503049537432537976724553537451594e314b706b4c304a5449524a504f306d722b506132706b7446793656453735515736626a68425878384f634a626c3576426c564638624a575369325662756476706336753243795a4849724e4f67766d39714935544177342f33425252304a696d585362417864613066754c6b6f502f77434c772b6659586461734a36797a596156787a546b767135785a476c30584465667767464b6c2b38564631674c55424c4a30656d7164644d3079394e766431555a353679547959564244706e724a5a526f72545644786a423731774d78794d61506b4d4c47674b453946386e767137414d7258713067666568624a334a4962334e562b35765a4b6e4f5a596b68365850722b38584766794a65414b454931485678333850704c3472715a637a6a4a6973732b7238346d78656633546b6d2b767879364f715a4f446553687750737039716c527461353467506162347449353374305034425047546879465653706a763559415a38395077366c46566a446b2b51706a36494d4551582f3731676d67674a78396e753176335670304d574b5a374e6a6d595171537153612b786c69714b4c3070474f5767526477756939716a5144526e48363570627748796242702b534450496e75796d464e586e74525572763359304654585a476965667655314356307636344c4b7737314a745847626567313443746571547663387a633252315037375a386231356978734a7632643954572f436c672f464b746a666a506b3036694d7746715259376a516a584a387673524b30594b37334c623756614571534f71366a55584c4c5070667a58474f6c7a4956706e63756c6f644566663775664a3137512b34444f4f6838664c3657372b577143336933425a6d734847746962564f55793566674d31447356435470323934796446485370585375576633675039412f54616c625572633856787070584c39533179495a6f78706c71793447504131706f7a34346d435574413147346d30367678396d483552426f43764e6a2b4e507a5655794a786b4f433558546c444e47335563632b73644666546f55786d654e553768634b556e37572f59516333376d61345145314a6d54325368556330316632714a6d5667384d472b336d6630575454557135524a39786a426f6e4233424f4c3930587970453433574a467742616f4f4a49526e58332b496b57334e633972666f744a6161726e5a32766862505363744e412f4d58416e6e6d70593565337757712b582f59514f364f305766782b63632f324d6e6d57414b2b68584b6833624b4745624a356a2f6a53374d77493563337150737134514363796e43496b457267574b73752b50613856327264534c4a477a5232614d387441395853626a7a56334639646b2f5a7831484d39787134414f4e3341647a34616b462f5535343547743075614d36657262524e516c744d6256334a7a70636d6e507a30354a567a54307a4247544e4c4c6f4a4f583871567a7a4e595873675455615a7634365463546a775a6c655471342b625853754b3557752b52655441324c4e5a685a396c62704d7968444b726d65344b474c45355631665a397466736f49654e6f625965647354574c434d2b716879596c6b54616f714b6e756e726e702b664a707a4531654c5a39794f4d352b766b4d357364544a3672795539544770556d73717742335242303036543878435045713564585269376e48713236392f654f4b69335852725a556b6c42555572665034707332635656504a514b5a616a483247624577746e42785051716d34325557724962505066673835706e6d3956466e7270304b494c39474c6e4638304a7753306d48384a61525230746d497739344a4e33464d415571737878746d4e3042544c343233505a4e6e54575a56685651304e7857706464387a57614758566d364b4e4a46503679324f59375155696f4f6e5450565939684e37576378485546717353694875786e7857794c4c6f5a7042444b732b31356e4f54465a486d552b50304c45534c7454425073366d664d5958304f4d6e4a2b4545672f7a5631577933543252794b76564d6d6d4a504a31537a44553265635172304b3258526d6442564a63396742334d2b455a6e4f415031373569417255377961556b534f6c7a514a6b717841754932446c5853595a366b4e7a75783049535645365a34776d4834505a5239787879475658652f59425a6566304e466a3974343075534f5447364d64617254534e35702f6d335a6e73326c694e6b626c30526c32685a494d50766d61714453677270676c65534e306468676d66614d3255496b6b704b75713147627338427566632b705249377a7566796874512f62635a7155734f6530412b4f634867526b476f52513071416430484f61796f4c374b71357a4d42692b764c566f574e4b646464454f6b6758714d4f6e7961677758384b66312f51454566772b686f4c32335145354337574168797173787379364c456e31366142736c3933776f755a4f5263342f6f6b45797949415548474546744a544431557a51464646434a55445a4e334a4b67676f3435622f647869312f7035477a4c5354534941414f68377a594b652f4b734a436961616a36764166546339594c584c734c5451664e4d6b457a712b532f542b52764746394f58676b534b4a7a367452476f314749764177737a5746516459632b676d70763071474d47646875633736797a625038414f77767230726c514a652f3239647a2f414e696b6d545234436b70554d474562754546552f4b544672316b4d4f676f76333955335a33574c364b514a6a424577582f726237674e526b744c6d5a2f732f57512b6c625062527151315736746b56434f6b7732423733474d354c624f7375736a41506a4b77695530765959454649752b5468732b5958352f74396869545639375158657850624e504945342f56634c55714a784f505463546b6d784a457761415a7849396438587946375139367a626f47317273383747634a7a676d593169584f6c74575a643976415977476e4f3558787945497239354c6e55616a6a636b534d5063743266752f4d4e4e723653317964427a5a73777834535965447970436b70463354627a3550692b53465a6654345a64595376643844534f635449446166654936543659744230307242696f4e615a6d5566457a4f474e6e41495355755663692f6459736b31447a3945453750724555774330584165674842464c476d455758503431676c5966324a6d6f6b56316936474d2b7a77712f6a544f5a455368557a7254454b6c457053652f45355166695a6f4d6f65523847787266596f4b5665316e2f4e55772f3841662f6b766e6e4b55475a365a6a3658654e446e596841316e7751372f414541674d68636f71636c344f5a6e776738494a4a786d52786357673675494a364a35366d537a4737506f363875715554476f48324f6d4a6978494864424968725438694334374a5a787472446351646d61794f68583361553975574562426f7879503634713442397a2b2f42314d78724a7a723567476c37796a75597232645533715954525652522f4e4d62667a51426a2b386f5452314f6c3334785638616c724f634c444d75566f614a74422f4e7a356868762b5976706a462b7673526658726655764f354f39526851333374712f53552b2f716934767678754e70386133696b2f3042414152544e6567426d436b45302f55453839797a5a453268622b477638415561466a5956446d6362376d746a556152415444332f6f414a53494f69655a347a5536456370486177795372336e58384571566e32656c464b5253557057643738514a537667642b506e31776438514b72445574766f57394a6841676a3450555645786b5146504c484d50615256784642424c397a6869357755474a6d7878665861707961386e6c39686c4e78392f32483166787a767539544f3573703074376f753473567253356c35643673666458784c6543507a41435745625033333344595049685738757933473132593234714c574a493038346e37533944676a4477533539666e7773593158435071417341412b50682f77424137596f464c42513272644a4853366b70466d71644c5863695a576876475279763478486672304e4e724152303275502f4148427a704a55436c52645a556f7532752b785130523779316775474a4852632f722f6f6953676b736375645058415848657878704967392f74636f483162517a6c38622f7459325631336461735970435a3144796a4b7676517261373639526b756d635069557a706f3737424d784439387a302b384e67724943424d664a56586d3669656d4a334756535544384c42375445716957554533464b6b6c6d7a69314e39696547522f376c63376f465553505570627453566f726d35657574614a4e4666656832647a6e78355566523577766e3976782f70512b39587345414367566730512b796f51694b6d69452b384f6872327750656f2b544d42744171506a36774931724c732b6652387653534c7a396a514a6665435a3942467a4a503132434c366a52457753417875366b6549706b4a4370334d6c306a4263765a3353704c716e6830674557385563774348394173364a46697165554f6b7172434945477a7135744a644e51526a326f61484e2f792b6361422f61776153306d565861526b344269536759635930575650534537562f496c507773524f50614676554d6455694b4657667157586e535a33326d5a4e497741766b35386f4f614759726c4532647468732f54423663767a4266556b4a4f744750707a4c4a4a486f454b37495668315139396a586877694550327761382f6c3977372f3751736f7046317069566d6b596646623969697159484d396e4868464d664357786e2b4b5745522b2f6f66476f503261334f73424863696450574a7157726c4d5a69766b775754504f68394d58337a4a6e526f633373354f2b3072326578522f4335774a492f6c494656333138515135413143427070725777433454676b55334f64464f6c707557615769615774356d716f4b6966704c4e764342334442334344334b734746475a44566d79303135716d4f6d6d654c77345a4370303944324962592f685174486c787479336645766875347633382b5931632b4548562b5036667147686c43774261794e3543727339635979317852306d684432506c644f4562756a5a5a77574c555a4b3738333650326941754467663159666b6f594c75614f69785a63617071306b704c4f7972565277546241466b305a41754662732b666f677852644537444a7a754e443342587079313677414570325530746b5731646d545a615370766b686d65534c617845566f3044744a7754496557617744575051442f6334464238416d722b7241784d32644873684d6271656c426e4d5535396976734e65702b7057766b69355667544b426a30752b3970632f54675437474c45304f2f51666970486962754a575338795a626d4849306568514a30386a766d556e2f314c396535677339684f495a2b2b316e755a2f6764446636424974614946686169483653506b54484e3137666f4f565264616d6c74413066582b70734548326a4c69753970364a6d446e435145397261374b2b417a2f414678523842597a70524e4d367538556f544b6457616c4f686e676956794f4d2b5a69366d66417850534151624d44506a48354f677977624871646c37544d72347431692f727a776773663445724a3749353752466b67705550334546642f79532b414170306a50324132645330677974374f7867794961444849516f37794764314661566656476a4a365a4c6f49575564477267434878433732664d412f4d48666577507265635641784d363943633559436a664557663269724f7358565a7a336d796466364b536c32705362572b3844655878632f5379532b622b67555332685865412b2f2b51696454334f704836467a42354f6a3279557a4e446e2b4a33434a734c72535a30572f4d4d78455844486a6765744474434b45775261447a3048384f374f597032684b6b444c516965516a4d552f616837584f4a4139394b52396f423850732f516a53444c69614f36763841673670567a7163674f2b3562714758383979324d4a32657946414d72596d5a59752f5858395374796845334b393378673579734371546b78636c323346317650742f4c526633356a54644f3454594e2b6830306961342b6e77512b765159544a393677555a2f31573174767a6b505878615a7a786856663761516e756b714b4f53616d537454516c5a6d4c634878394d614446616e3849484d3537762b4f482b6e47533164764861477946364e6942467665773069484a31444e546e70474e756b396e4c615a6c552b3968543931457246696c476b5063594c2b4a4b6e6d44484a3566595a5937717158473139765a376b44784461497573516770566c52704a624c6c305a6278796b67364f795076656e3747464e54306b6e336e762f70667379474d76633174424576526c36436c52517a70725a4936684b327a4f614e7971627053416e4534683658465438447276726d426944756e7977524e305761704c58624869514452784e5533486179483937712b364f5a4671695a4f4b302f48473550746178525039774a39716c4a50687364664d424650772b554b4762314c38473779305a79727a79314f3279564c46757332304d7079695678306f7970734176332f6837334e6d377a33416b44726d3334667542666b336d336f313478684f3867383839567642635078756453707450796e5738677a73664d6c6974594e7150754b6a64504a7a4e364e71366a6f61536666502b33494d497a49686d49744d34696f6f6d6a387776776d366741722f41444539417453717464757a506650356a6a304d374d4450674371504f79536375706e536c5941725230314f396767704c6663436d33393372663841536b63757679472f49722b337430762f414444412f4d4877547a37523161544c52384e384a347a4b344d4c62763356566673356557783638386173734a6c72744630547163424e4a5569325a6f6876536d747769644f61794e3966784a33737537306d323950786877647a4e5879424d6b473054305a593665595561585a5662374e4b687a4e4435686f633861547075416b7a6639756b4f4c6e424f4f70457862694e6f7072616d516961726536796e79712b61326f6336584c3056533333617446664171535a444b684c724f75647a6e584451347638415958577a385a5142344b70633937494b76745555534f3152794d724e4f2b59706d534f2b4375484d766e7170633461624673536654396f694141743379456f4a67426b33795a7451427a3765677167706d4b3753466761504d3832674f526e614b6b7075564f73704568724f616179466b786e7858666d655a76384136444b544e324e486e55765458505059696c313272483376386a6a734852546d554d442b655830334c646d33455046695078666f464a564d6675446f41587a3872517a6448363834756a38666d484d7a494f55754b7a5062727a457463346f58713145465352536c78682b334d4e6e736230707761582f495450697632492f78377979714a35786d696f476d746f785059634d504a3230366779392b6d3876647956684d49506241332f6172706e534947596f644b75384a71615071364b776e543063396573346e7230395161626142626f6b416a6f63585650543862577641516d4c2f41494d776653595a2f77414448517778516e4c5139494d4c4e3169736c765a6d684d6d464c445a535a65322b6a2f4b366867396f55514d6a3462525344472f7343455059785a5a4f786878355530527a6a5761496b3655367a475776355272634c474d6e35514b665974712b4437503131682f35694c774866703266705070362f6a624b7944374f64387164433579324f41335a636959785438686535612b675666564152703466657137387a444232504f716232632f69532b356b663630333572464b7357306f644931383550534448512b316165475461476d3335675548516437775544695a6a6e7a5363373170796c796f4d6a4d704b686f3649456d2f6854484d582b6132457861327970746f63306b2f6f6d4f55776d4f45434f586d4c347434616e484d2b4a643154335231552f546e61516539395a793235344d71482f5459484f3863376e764d7665537665352f4b37362b497a4d6533424339302b57766b612f35427a716c3964705a62346a6a46435a4e4b636e657950745641395238624a6a71396e7846385942304b4c443952584e6d357278376b7a3276486a6a55716c68794d62714a6b63484a5645366366745a59722b77535065777945356c6e776c467a764a6e587a414f706968314a5564546d74725933504267494a567151376248564b324d654a6f4d667364564f494953745946774c46676638417150704143363558316c597963527a356443314b7156397a75646d6e3666594b306f6d637a5145686d37434c46694b31416c676e37432f3075467a41776a7934656b6848624b6f4c4f392b36313771334f4e786d4935747079794c5833756848305758453067516e6f396834776741474f2b4546662f49634c457137793750766e7a724644547a68785354644b7a34496c6a787677734146474a7230666148505a37766b4d67554b754c37304e5a7a6b7945585569566e635a584b67676969774b6d4f674a54753353576b704e413852485a794f656f586b686c706533704736593354515539417975516e7a4e35526f30647056317252645266524e6c30636c72573252477872587a4d39726c506c78786e366b336d5255716f446a4a68596a67414c6270712b4c377a6f367443563571556169645a714e6f526979325a7936574a553573512f4e3865703746766366666d73397a544d416f4d5149726c35372b473769364b6d427a52624f38716e575a4551304c375a715758314a62536d46634d6f73352b3245667653594c2b4670386f4142556f5a75743157697948517354586e546678485951766d5671317137513769507376534a4c643968614f6b48486e4e2f31352f6c34626746494155714b6d624d5454774c365a6b4e7234586269344e4d3953386d37546d306e585841706b4c47614a4f653261646e632f37533072392f51577762414c4d78374933553151546f6152687a6463726b674a6d722f6b5a2f386d644f6d4e7073763931302f4766435969447250676f7059756b4653682b6f6c415977595879755776344e41633471497367706377376b67714f6d776638414f79785331304774793168302b4a465078665261664342726f4a5549614d306d584e4b47684976743034385449366a2b5335594842716b596d666a6835704e6e573969792b676a336b7850792f4d6b554154706c4a53633753424e4d33466b6c684e684d66326833474c5a4653545579714d73385258597751704269702b5747626836734f642f6f4562763547437734457247356c345531325a366a346c6a5430596c773749314f684e3330783750534b7a374f7343446b66774a495647707042454e3431547955566d376c4b5235486e316361494856425470724c783831796e6e4f70437978447673632b546773615275564f4351486e61467a455a6e416773624d2b42545a56636a506c73397131324e722b7243687a644c4c5a4442717a5a734d356c554d2b564c784e3878526b52324c5638337537396c546a61664d54484e4c695a324b2b626955627a744a5545636e55475746794c506e6c757168596e51416635456f3436544a58464a63313949456c4a6855787851446b516c32666d634e4d5059674a386450506b79347671764e31786b684977455478754c556c59672b6775594b3236535564656b7a3449424e4965677a5555504e44324455766f51366b68484a326d694c6f38655544435a395a6c5230614668454b4f665039684a544d2b6d6b77524945643652616c59385245695a374631315536534832427a707766586976344953736d354b3448457753653166785039686537717175585430686f762b635936656836432b72345956667973314d692b486c384864456756774f78675177735263483878724b584f735a46702b4177354d626a54475a6b6e75756a32347a304845764d3861706e6752524a6b367164464f527a6c6c6e49486f707a566845765430636c704c7139694c68334345477230684143393665316644374f544831676c2f4e66616f7a714231366f4f4862644a675a6568343056555467376e61564e7462634a634e56755753614d763254433871712b784b724f716c7736536d45466e2b6d6669667158366761755634663456345133653155356a7274724f687778586f4876756a6864763754797179557834754c6d3365544f3969763147696e76786e48584755665a3436576d73596d6259774f745070483641656e506f6c44683939546a7a7655487a7a506b664e6e2b4b787a71356b654e7835364b7553667738796e4a6c3069376f4f4c7133437458493255307a756d366650596e43313758345635616870366d6572766b2f7148526e707a323532504a4a7059387556675363717279586c546e3061476778656364696c6a4f704c766f4d5730506249414551416c7468715172574934395a464e6131586d4f626c55726e7a2f7356466f6c5539564e6239503655797038327743694f59434c4c7a31624e6b3646687961763477536e517257423844333245496f3874386d6e682b754d7539584463315963644e4f78347468316f35313155686e54772b305763545a445077554b70357a2b4b2f3444367a4871414a4a342f62356333524c6257744f6672775767506264485647635337325861572f4d7a467851415a554d6f78306f366e344a5355673349624d716468384e3147316d4636696551497a38743155314447636953313179474a625a6f5a73616f37536e69566d4f39394757524d71576c564c584b3553454130653162796432733172386776556567475866646c623253466952427346554653576d373556357137426d7263746856546c524b3350344138356532694d2f6d75583235796636664839503146623665314c6f386472667a4d6552577572733145433839625a666937683354694f5353624a31664d37506f71577761484632564f7171627630786f535839574566322f564357425530355a7979546e746c67546d4535765631582f41464a54726d43306e4338556d7535777a5472656e72347a705333392f4178484b7857493641566b656f377a7364544a34344f644862783275356a4d50524b766a5a6f3530555a3873364c69357043324e4f6d394c71446134365a333953614356314c624370764c6656646d76557667544d6f31632f517459532b7a663957747073465754794e584c4a6d4a6f476832543964537531502b493035724b78355277485445545053427666364e5259487072365950383430727132367532445739723038537776336c6e42516a6d706f78535171707955735852714531374b4b58644c33415458416c55386d4e737a62624131373366557641753262623764427a37624c47636f725a6e70696770646a56667136705769656f464e4d4b534d6d434b503841725454592f435566736a6551615257493452485554654f6e483149356f71382f6d684e6f4d35526d75564b613156794a6c4b577958336c6d7137474d3657457450576538676469416450316c6b6a697042646d426d79715659766d6563454c76494d32674a63376d326978302b704c517430326a514a2b3476634f5038637a43555a722b5649734951355345634f7a354144506b4c4c536e682f676336706461556a487142424f6e2b5a526f53636e70436e503674723871357361383368396b694c71514151644b454d5a6769524f50467372777650785a4c516c6a464d6d5a6e4d5563304f6e50637a324b5934686c317232396d6a6a6f634e533154385743575567364e733831666539566e62644d3765345a467465495a796c317a775a366455436c6448526b3555684d4b724f7a7442614961564b544f784e45347571534c536e597536624e396f474272614a32786238583241706d6e337a4a2f77432f4866474a2b7a75716c69784e4d47637a5a357a4d507471764742337434794d34552f38413075324b6b785653482b3664614f38577a74694e306974744c3073786b6671645765726a334679566473433237586334744736586d526d734b6c78384a4b69333363724671754237342b47527a6662535232456b38653946504846537638723956686c795045362f59554f4c54666e5330616a55566448524772322f5a646f61483867554c6762312f77412f6163704a72554e5941336d63326e4f4b385246764976565477663841655269654b59656444486b787a5a4976646471694f636559474f364f49793243523350396e4c68635a503841682f796a353751344d684b6661496e726165496c6e703952627552624b334454557a756d636372644e6d6669507247546d726658712f7873646b564d7157724662564e5a336a5a31556d30544a50442f414b734952366c6c352f343135425456343935463535697a327364354a55316e6b75715232614e7a685a697a5274304a312b364e72733264362f6c372b69474f6c774a6d6a443453694a69597a33534b6c5a367265736e6a6e614b46657258714e476236706d637048795457302b6b4c4d7579702f4d79784e41796a4b6247664b6258394a633359784769777736756862625765455645687a50796e2f4a4750586633767135613171696f56564a7a4e7a616a365263756e634f59465355646a647a537a626c76635a6675634863424866714c352b362b37702b4742735234422b574872337477346e645831507a6c72353548673578745a6871737a4e765058784a575452574b635331314f7168735973334c594351764f6276737039344b6537302f776a6266787231323962647a5052536531344670393050617556584d47653863692f657a58457569783031424a7178316141306676767557592f7741565230356c6b4a67764f314e50783665764954705871723635796f6a31747a4f394f4c775648504761364a554a6d6d64796d3652354b556f724f315766596e2b52737944584f4b5066784e2f4f675a2f3147324a35596a67464565756e714371716d642f705867767a524755587578646b51706b736679574b554f354b4d395a32554f746d6c5a3075642f533130684f516d626c724e37765438663667584e2b5465302b655a56486f7035493562775464512f50386a512b62504531703449304e70367769644d6c6267487153397075416a436b484b41426535702b502b675371396276453958756c4a354236646570664b4d374f6164536372586d4b4546646f304962444a6d6753436c3974524f4a566e78684959644467746e3452716245306d4934582f5556683576366a2f6a563662654f32656365584e395a73487872487a6561336b476d384b587979636e30455636656c6f3436357971526f53697766747337502f74352f67596d555041433856764d3469613447752b462f63452f746a614f5a6c51792f6c526e35723630357258786266692b704b36773942692b5a79366441736368306b3848706447706d69637a4a302f59547a32664552326e51312f384170346e35697a2f465079752f456a3158386c7039502f5233316662366e2b577679624e684532644c647966616d79475a73576f6e495a79454157354e785a704b616f477768377957482b48732f714a3039536b62725632686363692b4b63646d4d34384d556936705562335a6d635a733031537a72464e67336f513748576b6d444b72344854745441414f4b6c774f426c6430343239776d61466f552b655274465171614b4a714a3966645a645a48715768705941776831645832595470324a3532304e5958733938485066795a53585043424b4b46514e7a74764e71486d47697a4e6c5632546a2b49536f6668543274646164426231706c58637676446f486a6c4f2b614d45396e4a3465344931514a68705a477179556231574e734267774d71304b344b59334f4851674a7631656f57766952536176643845337a54452b4f65556946776848764c36563356444f4566584a4663326c6864724a347636304562545733634b7a3265365639583245306937375043436e355a79457a42675770326f422f446e55464544745647726d73366d71557161386152435636517468726d72686a4235703042573868345465762f7a37696851356f68796234596e475a783046597562714a387474305a73302f77434548554c4b794e4a7678306f7a6a6b6b4b5667317968704a586b33726f6a32414c6b71757464516c51434843396763767732657576723743633547574b48444e564e4355725048366e5231624d584d6479776b726e593175524c6f52392b7671536a39647969713476346575464b2b67497662334d4350554e6d68546d5235786d32656f755852685931564c34554a526e66436d3955434e5a73342f4753374649344263715071514e306a6b684e5175394f732f495244477a6d5a666b576f557665573331644c6d6932544a6e357a37306b4b39482b4a31684a6931364446352b616f325431752b4e7638323574482b4533766b74626d726d4261586a76766b3179344e2b6447646132304d657a48696a7664335374474876574130673454676f4a33562f477a71563047706434587061583038356d5a36687875506b353543626d3641796a6d7a56535a7649546b7274304f42334e466e6155715a78316442732b5a41732b663575657849484d4e434b456a415a486c51636d393463495672736856714c49684e76796c4733336146544736476579396e574d71486b6743542b2f7741615351584f2b6e6c69516c5270526c354f755857364e3332364b377075574f674368672b774854747a315457427759356d446b3953746f2b2b596e544277464a4e7047347a506e49726e654d52474c744f6a54504b6e32364d5435382b3751762f414a426b366673422b305a706a48512b686a7747717a7267424f62375a4a61666b41417454745144324768466b336a2f414454626e3138586171645a38317037454d72456b52766e516a5830476d735331714b6e4f645061637754774b396b5458544b542f56517939544443565a5330367a3230612b6f704573386e61462f792f45422b3433615638464858664c4c526b724a595448386b78653572584d4e7a7076367654725079434d6b6b654d344763665861436e55686f7363375734512f5a31705a355441323648427a574f4b684579686e346638416a47316f41542f656f59352f503767767264637a4e55386c34557a7862736141325530704d2b31364951746873304c6336366a6c5642706a596e7666623770774137766c446b5a66587150325872664d437638417349486a38376d5251717159465a2b61784b58444a59776671445052447861334330563857744a664c597235586e527a2b67594d777531645a717057456b754f77567758775554756b364c5537426379413059556838315332653256547a2b79304f576370397a47643676733770787437676c6d4a62706f48517849624b4470617932446c6156614e4361555355494e74486a724a584a6f4676736c3733324a5069547a666c546358784a554534327a47364178386d6774504e694935626332326651764e58585a47745039426e61563079367574495a4a46326b30634a4e50482f747156634e707448746e2b31716e6167525445644f54396e397a756f56706e61347a303471567a5430556f6c7258476d4b536449314d62595974712b416c7454395a34797639366753477772646c61752b5575687a4b74556668687a75777a79477952764c382f536f69696e77564e4d554c6c484e7978644b4430653851413745675a4a354d63597a474a346979754d536e77426d583269665270566d3056612b713351504e666f31715050632f624a623553624d6b536c4b4276323039726d636176385065774f6a54347433772b6f4646624470397678337a4f64326936592b5a506c2b4a6d58427235697761323963674d707a617048432f506f372f41414d6e366c6f412f7238545158787a5a774f69677450617239527950384768757438324a61776b6a3774656f5070357066757a504e6c6373716f4e5a643066386a794871597331697069416e565672576e346535333151636455316538394a2b5676366a653738716453794c30633374684e585230566375302f33444d575575626b656a71444b7a3655666c536d574638593642765a38773942466b317741514f706f4b6d6e484e45514b352f4654784458795077323871475669705861482f6b646d6d4f48587242666b6a393753795851645431674e48556e4853324643346668494a6b384d6b765437456e4f704d62356a784636656d5179312b654c717a3752525a42344e675a4b63747757727a30547567386664525875314f436c56337865326a33526e30484a55615450334b4f616565676b666e467964487a7258305633512b536e4c6d30786651784e436d6e7273796d58536f6a445570355651613249702b763071694d4f50372f3278667759414673526e455a36686a34392f4236586c7548525a746a6e2f4146396276615a756a66326330616f564b41614a6d4d5646645049305a6557417472704b466550646e734835676d6a64493259317a7a4c57496a716b6d574e556c446666424d70562f77414f62507553736b5a4f2b64627331505146616d54556436316630365a2b3942704a615944343563525753544b6130424844396d7a4f6c532f6b54754b746d7937616a6862624f4c6174674553726e6e592f6e755a4d616a652b656e6d6a3859465a52313336334e54536b72664c5848582f41432b63356130536841624d326454394d494c422b725169644b5a7a632b6e34503366584e396b5a4a5067646e2b373965496e3068574c5969526f55527a39727055356a4e4d446a3041656d69615a4563517767544e4a476b6c6377492b7454375a6f4f47556e7967743339553439727a45762f414f334a456a486e58724d58576e6c614276444f5a783267664a6f6c7138676d302f30764a4c692f744c576758664c332f4e526c775a79574541447771726e53556b7071327a6863355743533465573866313145656d2b4e37616a4e4971694a63774339645078684151306d4853644f304a594a75492f49414947513637644974417050666a432b545457763253564b376f4a4537467a374768494553506b4d506b734c326b616130704d4a38756d6c3264317238694f696557715570776a524e784a61493656554845776c394d4857546e6a376a75734c6b7072584f6638416773334179656b454c6e544174622b3073756e717a557331633839432b4f506b756a397864374b644f416a425a6e72783667643549664163747968584d6c51675051413835796456765a79644472314b3446414f5972755a6456342f7a536d2b544a3369364335556a6c6b7878304c3430775a4d76374c69635244514375496c6a4d6a61344f6c39716c435958546b2f6d62506b36576f4b6b66425a6151756433326966324a2f695633322f436b534e6f7572366b4175544e446a734855754e50785553356f4b715575317134644a56584b70754b737262555a542b79587442465148784e58396b7750706e77466630465833446e6f3070614f49375866554248534d412b554a486c41365632684c794a6e616b717a38674b4b466d733239503238654e4266583442764d47325965565867325a7a566f43396b387a725a707271732b4b384f65357a494b724e50556679566e5436532b766f54387746384b6e305554632f774177736e7746565438332f5355326534306c4b7a6c4559573269794b7172487562724d6d75482f464d6162416f59537566375444376e772b38702f7743672f65583854525179615a3376716650564c4c5032636d436f4d3563714d68744b5071734b577235767264375a51503841384b5071546d36484163495259703471744f5177374768555664544f73354d7a5361456e446f52574a39624778677a6937335563554d795a506562564134656c4d4c67655968306e35454b776d595270546e6f5a4f6c69327a6b2f707a4d4947796b7672475763736f7a324f2b4d532f666277553443506f4c4d4a5261382f3565594847786b386a4631425575595a7669376f614e552f463049622b32726a7049684e35634d4f45662f50784e2b4579574365342b752b564c6753323734382b37562f7a2b443645725a506e524a39376c564c55554631784d6339536b454535796f35333546664366394247707542424f614e7561464b3261387a344e4850356c737174675539665a4c455231555744396a724e42375669706768777152426e572b786e7967624c3562386d6f6e4c705a5056434669327676496674446e565471736338367373474a576447676e676f49766d4959793934527a2f57522f515269736b536e6e497a382b75326d65324271364e48546c6f63442b57335a6442514a615263546d677946794f4e492f3841422b777574673839356470435035686b7a514a526167525a714a436a706c3070644630314769327a514a302b66387a6a4e62454650385a7a3951457a5035414f3946714170457757624b2f2f414d71766c316338557a517134612f67704342793675614b77516e7169584b6458412b726d2f4f315767566a767241594f4958454351683579567769765755376a34714a6c5a6a4a4231716c5161646647334e6d5977644a66446c71514e6c62695339344237776e585a54436f505949585a6d4f67434450593658364d3373657a7678614f57444f632b31396366652b6449797057476c6e6b7a70683078453363352b303961775742585767797a74366147466d6d5677636d7146373571317030566d4b666e577271794837612b4d686e572f686c387644393667534c4a564e434d49685a4c3556484d79774762514666316b54614c71716b2f4f79646b6571536964516d644b4d314a454445554b2f336637795659316f2f594339744e494a7977755770746e477569646e63626d574d5945317678352f486e3947632f38417454733070322b3161544d7a6431502b707755682f51556755724f6256453356717061344756343162744f6f6e424a6e4774767a547043787a4d307578693056677376315077324d4d51413430414757624b69767977446c483979534b7879533062332f414b644e5373696657454b4a79475567713867483370593735424f3052556156664d5142734a75337230556d686b5a30557930374d78502f4149644d515376624a5238334c507570714b504c544a58434c694c6e612f6d642f68787a6d382b594e66764a4554335772372f775972616266617059492b6c5a4b686c476d3672536b6c6f727349696a693531533169667473443255726e465832416634614346366b4c346d7030314d61513553735548384f3154564d2b42513865584573352f487a6a79524c2b663442514476656e6f4b4943487270724f782f6e6a6d6e36784f4e7774687175747a596d4d6c505071615543545035787a352f63754d6e2f454d796a4f77584c72424a67593270326f46592b6b64453946435878304866316e4263644e545144516e74303535575132644c76576b544e4c4c47563567366e74686d357874704a5a4f45312b3149686e356536465764712b6b79724f76494c664f734e54516f566e686678576c664f7165434a477a4b6333332b33536969565659474c5842385356484b6c764657302f69467465756469417876425a35334448546235316c77524a3348446d4e7552744f3072614d73617a732b46645645733944554b3935746439786775424d36754b474b394c2f41432f754c6e324339324443434a435a42714232535833334a6d355a5855476c32626b706150755553316c376165673664337a492f77437158796a2f414e616d67727655693030667862484b7a576e45326c69716e56696d6c32646d707071727642732b7755383861614a79494a584d4d2f3841447653352b675034776b656130312b4b3650466472572f696e775379744177315748704850492b765137417451555631632f32463172424e7a62484c36594558536e436648325a336a385a52327531565771643733353349304d3167666b7879765230754c6d584f7335624d2f696a58477769443430734d77535453426a734a545949396d76535767716151706c6e5175636a53317441556b46584250356b6a4f365035756d445846375059487655784b6944536e386836337a376e6764452f3751437655444c6c306f4b705a70434e476a565a485857646a5672345778306f307159616d7564545271706f706a4473776448536e5a31506b4a62702b32727a5477464f7671567766786c756a62414234566e6333343735585a7450567459766e5939446d62555650556d7955314e425537516568336539694f6c384461767831664734533332356a5a55697346386e6e78686a552f51706c576449556650435063396a55707a5141322f346730794f68626a56396e6c41352b477562505a373374593542746679462f506b6b74455439317a554e76384164387844513772757a7461615741487658372b50634c516f7662313432666b4867354b345570757a665448626c4c3678684244567976537a78664245634a44383034766f6a354c507a684b4d544d58664b5844486c76672b7636434965766132733835394d3469736d44524b6263476d2b495479394273333873746335516f705a7735324444746b376f504e79574e537163784e7a6b697161394c2f41432f754c6d3870706d782f48677137543155636631374b4a38385964546d6a5630437174584b756d6956644446314a464d2f5550414f7a4f6250772b5543315061434d2b6b365a6f744e2f47695657697a443061617145484c4a5632476152676d6234652b3179556e6f3873524e79373430715337326d6742425874437a6443616f6253376f5431636c6c6e2f6450325466502b35596f635561626f797a6f535656507a2b554b594f6b73463063397a4361644b4139674f4d367a333530724c2b7a424a5452534d46566c632f4c3551654e43692b7a31646e747a596c496e4c6f4d617476566865587350337a63396f4738784f624644647a7471554c54326b497747572b5a6a51594f6d46373378647a563965766c79312f6f574377694b4d6b38634a4f5741425650537a323161315375356b79644c6e574579724e374b515a32596f7046554a575a4430567671577730414d71666c63665073632b623267734c46384c732b4f4a3149385265506147305030345236703357765174696d39676f65376930384666784c5579676b7a4341415a7867416649424c574b714e547071464c6c363679512f3567496a30522b7a596e574e72575343746a45702b4f6f576d6c62584149586e3332416e326751505655734e476c54773579616b7953676d6336696a6f4c34564b336b744e6e566b356a71433431625542787630436a61747251617859665a614b4a6835465066313234336b744d65736e713669716e74644d724c4a7453784837484f464455737538477276786e38505745627565344331346c58316d6a5970445a2b4f7a35316c574857357a7571636b72336673726c44704f6448387a654350435363385941304134414764656e4c5872415a77634731366e4846384a57467a35617a7a775564674837675a6f7354584f62335165356b76784d545653546b6e386830384c72506459444b506e712b515a7673496c68492f664f6c2f5266306e6145594f6c70304a714f737071623831547a486e5a673933736f41542b635249437237333655316d74316444324c4e3845314434783470624f72705768596958794f57785256574e496948362f764d33467a392b3877414654704431645051624f4f744d376d586e7a5a786c714a4a6c694a5a334651546d434879665a397a584b6558506e4d2b2f63396e754c34675931304e5a6b6579665270484e364967624b4b31363859426272724547306a42554d6f3247774848314b6b734d31586c51585253452f77424d434f4377735743464679506c72436138346a35556d73306346435853506658794654426e4f656a35652f594141554c7575347270304b2f5554475977436461362f626b73565979357a3670414b453354396d6c4377726b7a494f6c5245526658644f7a7038496d6b5454427a31663566455568724b4979353956656d707a4b683757355879577134697043724a3055323232585566363265356b49714565657a32616f4159714c39684e47654f415446413141346e41444265464169494d346b425563626e6a52645335717544597169646e656457583755644d334139674535794a446a723261777a544a7a546c5a49592f5a694962306f52516a696166592b6569705336434b5755574e533076317754554a2f4b33697755474d693573325648314753312f73674d424c34674b4e4f637a3630534f3057526e5334567a73304f4d4d56674941345a2f38414d42616b6e587a434c6e417673386136727936687968375070506c4f6e356e54734a744e3750384167484c2f4149305335332f5037426d4456472f6f4f44696777413536654f7a30564e59597153395332514f4b4f495a36797234354752785a6d555076576c46435779725944484c506e766e65496631484474655165364d314550554c54474152424f304f7a5439436153656b776a30357070464b587a746738533635767863647a6f4161752b33686d614752547377474f5742793862386943546d71723434374446433079766963494966616e695675716134576637666c5a2f384146705354434c6869433742576b35686a49323172782b327a534f44516e73756b594d61612f77424b6954793270382b6b624a62705646786279366658434c7662307a562f514f51704c6e457a79707070706463324f705057513169394a592b6c395561577a546b4c466c30586d6b6d714436366b714c3637424a764767734e4e504f61432f744d46464272583169666b524a48706a325651705a52624b5446697a35342b63587a6e65746b393144412f792f59674263622b334d704f6b4369613636454831357a394c5252472f6d5045445832636c7052386e3249355362396861546f366250595466597161634a41544e454f787a4c542f41426f2f646f6453447a4b59526d4355512f34414e4a484a574f5a4f4c4b4f676a336736772f384132653168647279655832444457633151387a564d41433057667554513438656a57646b38386f767037386a53714972676e614171536c592b79645a67732b74574376486d3735447152795a724661765349656d4b6d474e5667725a396b365a57746548574334666f392b3178665769432f685342664a514a6c2b786e683266494b76556a576c6e3446586452465346746a5a664a4c5a644b54356167476c664f462b6e4d594f5851766e503338764244356b69704874456f34566a79446347706f6c617551655a7265464f444555423971514d366d7466556a416a504e6e596247777a723673653859587730384153494241755745525958534d3276524c7563377a682f42464d3754625139744f6632546f64436b575a756162496456716c695a6336594b42702f37766a61424670564e324555323051772f72724f424e53716d30766c37314d33644268707563765073347a36342f72716b4366766f396746387a67514471577068726f6d427763644a6e326f50764650715a5039646179745a3748664f7864785272536c37674d362b4653507344706b594144707143344d61316762387461715572692b575147564567474b614b52393350682b426b746a4f4832626b3374634141612f2f697042346857586f446d334f6131553564704f6a4f367a6c576d796a39725336656d6430494d41574a6f642b774467306d37345344704e416743765035666351367a6a6770483548705662474c74464d3658722f56726b653539484a4d316a6c505863784b3646715830506841514f592b6d5970396c686944616f70666b584a3253654e62417164516a6c552f38414870726c6e677671376f4d61306e636e6c5a50516757734c67702b4839465878784a43614c50536c484a6a6c53476638335362384e6b30644b75456834776b56446d7a734c35766b6f57396e666c55644858437239386251484668486c617a4f696a6d684e3747395769316e3866777045304b73686c45323055443149435047565a2f3657703352555552384c347753665036414c763035307974486b79566f76302f6443796966564f5764383642705a545947784c4b7a6f70657557507070357a6f4c2f526e2f415053346735774370746d2b4a712b566d6452366c6d54796357516e336b734646566c50506d46446c704337737679472f6f5547336f66574a796d6941382f6f4c456c475970546d57397745325374696f7a5832614f7a3358536c5453774158773436755479786949755352434c6a464b6e2f455163414e58467971723453374d353365787635525738487a49565078633646796150305564734568734968365948373247514b495059705649526a632f53454d705568544c5a416364416e5462336d724f7a4b7555664763355370564677792f562b5a46437a564374727748345241506a427a347763616c754645785571717a30527276657978694c36355159733532676c61676e39374a727032633473572f482f79317666656e3451737257445234587770436f584248564b67632f4a4e696b2f63715776356a586377486c51675758456f5649636679736553656d66543967526c664a6e73426e5a41312b44576d784471463646665337336a435736587649576a704c2b50514c6b33484c6e6c536177392f776c7a7055756e6b4b383344396c4e6e79745163334a2f71726e6856534e42717361365571745366692b4c5a6f4b48506166742b56417a73426c4e5055635653426737385550574c585470653448684738686646417745544a663841526e6c56445350584d4f662f414b376e636b446a414548556e4f624f44577342437a3131712b6e6f4a6f744b437866573269457a5773304f6e48524b4d7651593166376e6f3550775644784d695766365139687053594a2f6f49792b4d373258463736644c394e4b615273466650724e706f556c5830505a4b507765344a566b344f73494234734155414c2b515234466431385854655545394e75666f3157777a4f6f576361624f6442424a78556c6e5677384f54485a444b782f44365468577938512b4c6867625567536c554936534f74466c6953556f775930303566416839346f4b7143486f39585751592f7a41774f383478554d62506537346a2b7949545356367a4b543979794b6c426439633348756b6c6f2b374c575032424e7775543946436f2f6c57485679394166732b354d33505a385967344331484633544952796c377764336d55616c396e57537661636b50426a456c7171666c6b53454d6e4650744c71313955667a667059434e4378626a2f6b6536545354586d7537315436327a5752424e3963422b706e2f58377772447a312f4e776853784c47664c38725063556a3268413348426e6f485962586e72646332784e43327a6f4f694f695762362f4835334f526d71696966487a35566b42694b45435a6d52382f783441534c477147546c57696f4c75394534524a583330584e45432f7a6f4c76513043344b57386373574b53333556306f45336c7a3536444d5074466f4e46337846577638415547326a6e55785271557471364a77516d7a55794b306954472f376d6d484f45424d6a37574b505966796b445936453063437669763549594e42503233746162584a464768547869685a4e6f4363746e3171724f4c5966413639706d336f4b4c326b30454b72575854332f474d2f64424c4651726b5672746a68705777724a4930737467497859376a6f7855456e787063732f65524437424269776a4b6d304c756139556b6c6c345274376e497070314c4d6a4e6959714f6a2b557157367466425950324b717834796c5153724d7a36497550706f416f4d6348787a3154616e626d314c30714a51714267743437726c6a47703636466d346f6e57555864377a70474c754a537232753461534145387553324663476933557571576d7545564e577569714672766b486b79493057584130557446784c454c4f2b7a6c454367533047746f352f514441464c4b2b616d552b322f3674693742583265706b647a5235526e443550585a7950337357454266716f4a352f7744724e41754175515449456731335746394371676946354a5579796b6d50436b464d6f6c576c6c625736736f6e3966732b5063796c6e45554a7054544c51377631486b5a4150527864716a694e4e64476e74534e313832422b466b54756c34686b646a666d3739562f647a5037514e6e434363656634557539676a4f394c67426f35372b4e665072557945754e564c56575a63387a4b57305a697669797766476336307554525936726e653845314b50326d6d73424f7452672f6655436958566e497175686456336e76625059376c39453044694c354e6556302f7744336a534c466e456c5a385837772b4c376767536c41333164587654523335444a4979702f6a4678586362666e53736647566136745556394770334570686e34346d6c5341676e33424e3968644467456e6e466f5364506b362b75747a2f414a6a4e577945566c62485054546f3552746456773961667161484c4944654d446d4a49514764664f384d4b2b584a303756385579576b4678306c44735176427849737231714a7634316a477058486f56434e582b73572f433446346e77394570714773704361774b57694f4a6b63386245716f74376e557a4a697a33586452325643614e58527a2b754169704b3733395571623475743068452f69616c3332416357474e794c4a71534e4c636f3946364364784a31646c6d6c6c542f77436c35334a666759354e45734b4f7557594e6f65437574624a30526d61477247395a37614a63575a4f5466587253675770335156413661584f526a56515555614765715876644c63646d6b7a76535931765868475475495366776b726f45733950664738646d744d2b66345358564251584c7247516d36753258566c632b326e497a317166646e707a5a32413962413537682f557461464a57427672613233357947667244536b702f45624e4949724c4f4e31746b613770474a56466e707363366a53427169352b3356352b6564364a33692f774336374b3648753541583133525470507a464a2b4c62562b4e6447746c7768517679463330796f584f6b4b732f6957477653546c73577452457a65736e43516d4e4d76734a2b464e3859702b6d467875585054574750534a707a48524e7a5a4b6d58554c696371316c37632b5a6c70614b737356646f42326c5146484b5354796e3735436256675a55466a3866312f554d3164626f347a4a386651386d6f4170477663616b614c4c6e647a70366935705a6d5866502f414e6461325a71614236705a64625166766d57725136707a6e786333722b514a6e454e7456535831583572476b476c5a44526a7859384a515457797a6e446e3036476758314e4a7a4c686358552f4e6e554e63434b6b6774673942467352694f6f644454715a2f594a3676736a624e3073334e306c6470687a7a79567a79764d43377136482b566e58555552544a4976616c70705a376c7550342f36714a45715637424549597573576d4850754658666e5672425837716a476968644648416d597a50547058726f50345a69346c494b6449494f5559485039584d2f736e545a7364306a2b72546f755977554c35382f744e4630546147795661452b6f55664839524c786448457139344e346d644c67492f77632b6b4939714c72614f3936394b657249354a7573386873333270565258527772715034396c5341597741547a2b4e554139415248354150354573697244686c765168492f4c396d7236537142617a4c3455793058564a4730364f7a754b7232782b2f3565636a417a62386136522f6f4a4e796e4b727234763436586d734d3376782f4230537a2f3549374462534831552f576c5a386c58364154576b584f6d5545354f416f2f6d4358396a70714272657263456262706946446f5a4f767135616c3337476e6d764b33374175544f6c594d4476776f492b6a2f7744445150384151533836374e4e364162586d454b7a736233685631506d6a73594651304b6c664779566a435443505776357861752b347a49717a392f7a54673653746469353346654b6572623353716554553057434e416a58637634663868536b50616b5336624336735a6b3944684362424c50736565515a723970527a4c366d6d64526474653350655a76617271564d6e70645048397a394d6c39732f7650766673394550332b76326666654f67614971547957694a63366f757a304e6b4f4b66694b52574861567156556352324d2b4e6a46305449567a76765069442f77425a756d4d2b41434e7047664a6c6a47674a6861707379657536504a41584137684f61312b572f716b386a2b78315947584f4c396e666844337244326778437a735432476334444d6b4a6e386d3478784a5178354339645154564f37384b78614c4f646f2b58342b2f5a37386f666f304d4776433065517a65506232647456783859325a79314465384b30763530672b616b692b736c767a554535316a6a45567241556f44326b4b69506857417a57492b53645a777664317833384a345a78384132453533554a526664594c6974657861776c49666d3652526b616c4777766b4d492b78487571355263632b6d6742715245583265644b5258564e4e7961667478752b45526a2b5a6e37506830552f7744427a554748514251595579307570702b5872486449744a4a30614b6e2f414379634e4539436b772f42555061716c537239702b34466e30615642333566714762517a2b7a5248664c797777706243507a38706f6343666836676243736e35794f506f43355570444e375353762f41442b45462b307a4e6f68386e46746c314f656739467147426f76644c39316445464274616b447957734f6f3170535562474f346666305a42384a306966574a2b534a6d497a49786f6e305176644e56796c74726b55456a67634378655841355873566e32722b7748574c464e565847664d34766b2b52446633372b382b43522b3436435a3355486f4b64396c74736e77706c35483954456c7a46304a4b6b666837335157704173424d2f75412f654476615476307967775561704f57634b716c6f5153773936383265663756372b76476556716574574b562f5537504b6746384d334f45774165417049457077594b71695133506433367a586d62662b7373756c6f68516c43536c5338584f592f502b737369486738593734663330544a5052454143534f64544d6c7a6a364c524c6d6d73773544532f6e5a6a5a4c777a5335466e784e2f5259667448394837476e775059726f47545036424663374335716f6b596c467662724577794a55306f4547706d534c675967616d2b363538644475546f4d783933512f536d7343645a41433048425777324d6679486c3951754b695a715161716a6b376e456e717948684b4c6c386144574145494745627a425533753673677a6e634150615656487a6b53316357564c47574b5074445a7862564e31365863732f3742447a7379752b7770365359345038414178554371614e436573446869746e3678395254642f31496c6b41624a2b4a2b6274504f43357956726f44392f497750644d70503661696a324d7279655832474d35567265356a38362b702f516641447452446669727a5a3375356e632b5a6b375a3175636c6636426677385973763962694d50653156675a644e70565670516a707851644c70306c3864395066384171524756556d69326c5877304c35596c686456796a324f5343772f58464637656838564d6c4e4e5a6b70616c42385847453069735872714874543239566455373975545039577155512b41412f55776a336e7855682b67624c6148473864564b6657724a2f5761667a773855737a70756d3135786b304b43416630785a4c625158365366316a535a6577326d494c6d624647694f636f5141623657765134705a56304c5853503841464e7042432b55735355734a6455524c4d442b744f5a304830665951444f30636b63754d7472466a6261594e355658737749654176687339706770676964517264565577532b592f596e4b55507434483734514e4765512b50316b6d6533795843633251765a4939756c4247783850536c516f79487042784a4d2b543433392b734851635a437731667332663157596d4f7a4f49417a53383438456c577337664f504335752f4c6c2f774167346455502b6d47664a5a597a514f636b674f584c334c4b7639413376777654387765394a724944566963396e414164395850523653664f6f6e3954764452314e7032663348646e5752396455396a5758523079493976536f6e6534695851373274377a3677673676684877484e74762b6b4937752b742f6f54674b7a6a6636742b495a39455a4175482b5176613768727a365238664748737476776471534c744b465a75507638416d656c4f6f50692b487150366e626566686a3667696e31393944647969724c58366a3832624d455a684c4b7a3461614c5635384c342f6a732b6f754f69676c746550384138465139346f456b4466686335532f36624c787832784f664151666e35572f6a78315a7537366b61585452787374615a4d7a596e54416245305a6659667533546764566e334e434e58454b5a374a7a6343376a6b4e792b42626266384d667a41702f35662f6a744d68714837766e4e744c71487364372f4736324a6132666d666368633975676c4b3245747a786561324f577348456673446c42436f6f393371655038415166572f6c6638416a6e30655776643668766d766c53364f53484976545054327964315046557a453732755761383865637056304f4f377065306a2b516d2b393776553866364172502b56766f6d7830796372775831436c612b3137323850434449584e5a454655347243516d4d4f7252594d3958422f5379344877744835675930552f30397a6638663841554e71667972394f73612b36504e394a76554b33674c5865396c476c4432576c595330635252306d7439726f656c5037486c5531726c4f41706151537634324d6d613536646658356648502b304348666c6234374a4a4a737039477441766c74744853717332366c5778786f764b47472b4f56554a4d61756967567a6f5337736449475a722b416d4453453065367430333851332f77447274787050354d5830597869436673503232553748454c6e6b304853746730777a30384b6e53685870564d537276445a37657a67515470644d5535326e547a4f64323350772f77443851696d642b57586e486441382f44394850444e493736624977624a7433436c683577375375555861593437466c6b496868592f356e634e514253592b33337a4f4d6f39314878584668562b74766e574a34367a513366462f545847715647666553525a75702f4d3935567266523676557a6b4f71483635726e6f3537456e535247417a4362533444585273695a78576243744d54386d50552f77416873536851346937306257634e674e696c4931713262644255684b33704b4f6e646f2f7763386644643054475835672f7737477576325774537356412f797a312b39615556784c78644c476939777a55366744342f484231435736637273697a537530696361585655566658362f7167353734506e4d66306137464b30704d5a6e4566794653582f6b4a2b56457451637331633179573774614e426d64685a6f493651376f794d6e6b306d324b3676506178695a4a4f6b36783357556a383373644e38415473302f47507345394831782f496c2f4c757538347066586c36644d656a2f475a5970476758642f306e51536c715a505a4a4c2b676f6e3538786d466975695370486663433375366668675179373170395a61455352616e7150354776515468335761783534594e45436735527a674456662f4648576c492f79306f6372366d67506d6d567748504b62374563374b2b416c55587158366a305530654e622f6c586d6c325643433444726b3374597132585466782f615974553153677a51476a555773682b464149517079416e75366b6a53635253765749477833684f356d655565303766495871717138626c3045514275367a74564e372b78706e516c7166683739556d5a31452f514a6a4b6545452f33666d712b47634d35695936774c707a76482f474f3538614d375330456a6c524e6f7a693772332f414b617235335656777352786e433970746f6e5935596446703041707864622f41493144415a302b4b3465684f2b4c71364e52584a574e756830624f664d44324f2f69345a775a5a51734d326861394377763258444d424250732b446f445a304b5a312f424d4b3431366954597556614e5469644474724f74546e755033486e7948517441314a6f71715230487656336e73536f4a7753354c6a4359744d644a4543386b384e394b38754c6d6854342f4a6f597a5637656d325555762b62677774545232594d7432675455726e6c63356a66647a3367324e44766a623158464c7446727a303467546c5a3369766b4467566a2b4f737a5358566e394f587a764a4b5a7a315a33624678315a34396e2b6d764446626b2f74795538352f70373945676f5748324a6d4a6a723038684f765772306d394f7656623042395466474e50443864646d3776696c4e452b626f795a79596367592f35485568316c54586a3177456e506e68495030483745356b6442524b616e2b7130744e62566d4235422f5066524830557954324950477644764676456a7836474a756a6b6e73783557364a37384e386d6e4d2b6a4c3932706c79532b4a36315766796d70723730582f414146774146586f317666704d3768703535312b4d5070327678362f557a76384178624b34786442795031352f48583647586b794f7a374d5955395a52326b634e4175527953635255796a73774a39744b714b55723072655a744f4f413970503445614c472f6a7234586f542f414533387a796d6a3453717873797339575245766b6f787a7931476a2b486e68797939783865797676615445754536644a4235757432352b5544626d627972786a795052656e786c76386b78594c6830786b6f4d7648702b6f51686237683057536d78596a2f303074374b30542b73377631474237324f504f596d4f73426e74654f44354e614774552b6f766250656e756572617043617a59624b34535851315768554d735954364244316e7966356e5a384b66685734766e524d784f594573787332644f47647659723030795058424b6f7261713075632b6c597656543132657a756c647a33646d4654316d4b777a546a574b754a58535541684935587a5542592f3653703950796e512f6c30735931535748624b6a7376776c4b73666b34705a476f6c6b5850596d6e324143307037534462566a6b75316f7a2b6d39756564464f77764f79474a7a6d3866326250626c7a61314d302f7a43784647617455767a4f5230544d6a6148777044336849467034554e38346f447563676d46316477737a32304d734b6f4a6f30524a6f5769663438314d4d66484168706734365a784271654a345950356731412b6e474b6b7449584a7366314c58544455476b6448752b593538667630306d6e3550637169516d2f4e6d6c387a6c424742304176464d2b464263705544494f6c5a316c4b63746450536c2b7a6f646d6d57436f5451747a456a476f4b414a334f7043676638503841334143796131352f5a71574870474b707943654f68644a614b2f3841694a6e4b2b454d727a57523252754253766944346a6d3971763877452b67506a3570307a54506e6f3756523268797a2b3350384179434b6d4d62504b686b734331696f58545279593778355372393850394f456672772b372b676b75646e7658654d32634c526c5855614a34584b3031355056766b35487a6a4f474b75336535733742345644366c744d334137346d3957372b674f4d2f696b64424a716943564b5a6965333470374730684b4a47704355386f617146314330694b6b72515148384971363866656f2b56352f4c376a4b765679382b74634d6d766e67616759614a74563069485369457133432b647a70656937514233744e532f3841366f7068427a6b6b306c6630352f4c37694e55614b357043696b6431647a74446b376a6e5578306f614f6c5a5a664a324d4e4667737159624a795069692b4a585748554b66614165344c42724d6e74504146446a314f4278503773412f482f63775456484f2b75554a424c34324c6a6859704c366a2b7948317538636e3566337a2b674d794277354f6a3351577565782f4a35754e376256317466526c6f59755361556c747a3676684957456b5464317867516d4b5141674d507375687a6961793778774f6f37335146462b6362396e716945585472392f4b47636e644d58317737475873412f3433356b396d5068734375797667456c58317a46782f73465a6d4e582b632f4c645751364778466f53395379684a4d47673832584e507679422b314539766141347a324d665945556b6e505839715755644369336f666270677461746c42676854774b6e68793038613845317134776a496948726845506a353777364772754c43787a4151574d6f616368564c76714c596f354d766b743969547a63773563316e783364582f457a32395830447455414c5443597563786f50727130614763507955315130325571736c4469306837616964704d6e756d6a5a4b6b3254746f4961442b776b5446626a6e614668394565754d54357749525777496e7855645069376f704b6d4e6d4c4e4f75322b61756d574a45685a796247793576465a6f704a2f2b637845712b5a5359586b7a3653514d6e4966416b55697a4a736e4a6a706444365131496e5146717063723658632f4a306d4e547141507a65775542796755754a4a636f4971765943355461726d77424d43706231307346456f69355a537a4c4d747170564e484359752f794a566b635a632b45707865483246436c616b2f43514f676e4a476a513657456e444f7a506e4855733435502b544f737937707336795a796c772f716a2f6569585058504f6e36774a656e334a474e6f45704c35675649676b634476656d62314d665572325161584d396a6a6b2b6b5042715830325566483174514e633356576b58423272692f3642776a50626b33587954576144567152646e4575365731714c3356424f374f366974513964397a69345755634a5334514a363650695a37412b6f414d4f64486d7173565a76306671504e304d6d5361414b694e6f466b5135384c5a54517967754a716e487646544e543059442b353775384c695165544f796a424f645961374f61514d6575613538644d45725931697a52617a6c46416447673249306c4839554b435854537059652f346c4f594469754c586d3054747270767662795531737259422b7862554d574d366f3230776f6135496c4b6b702f3131437a724e62696f41663979517272624f4473396d544c7154557a53554e6943486e4b6f48534c6a3061446958546f507a6144546a77722b6371775a2b35306d592b31306965434d344d72414e2b336e38655756705a464537636a6864316d72704e46494d5631584f615475502b3475364666574158316b396270436e682f5a744b7a674c356933766852394f6152764d397a5532306f66645450416c78305436744b76733143576c4f777331432f61333255536d6d626b707147526a66364353356c784d2b6164767a387a6930384f506c5643652f705a563058456d6c6b656731697167565736376e5739656c4c6634302b2f4e533736346d456a794f42395759506d2f6b534471354c69416b532f706d596b64625158556247635a526f4c6c7a624b68442f42763673534a546c4f4d3445444d6a6c68676f5a4e4e4e66587154785a69486d304a785857354c48515166796c667336496a6c352f37664f524334326d6641364c41536f77304a2f4c3755756939492f564c55685733364f546b694e646c567a63694e6376756c7a73764e6f6c3045705650512b69576f576b684a756f436f6f31307a54502b576262546a6d72486c6e372f415041347162573956486c6265626a3868687a3663617654386a687975625047647672466c2b75794f756635364b5030797a4c463633716241343742674b5a33785a736a656e455a7a336748346a7461566d35346c505156656c4a55335071306453377151354d334c6e75646f554c4632684f73574947584e665430552f584f6a34342b756b6f2b47634a6d4f73534f33314872446d2b6c58677564692b6d754c446c4675525476387a70464b31576146666648686c6258505735314c4b4f464850567a7046396c684d5330364159644a6f486c32356e4e7549316432764c396e5731554e703366354862626f667a6d61766e5a6f484e414a536d7063334d78617032614641305545755836705567616f7a6b6370494c416b324151664a363358686d626354622f414b374946364f6b7a57624773696a354f2f59795739616c67706a2b727346373075367366626c47726f32632f61534355512b704f70475179334e5457366d6568326e413750565342585755665053676d697a2f414f786f376b78664278665a3370704f6d6b43676a36616842393331594c68745a62325364754e7236676f4c53374365584c714d614d742b612b61475767626f2b6471744e64485977574a2f436c54656346594f6e45347a6a674a47586e37396e2b47516c764b434137574374714b705069374b68765144734762507a6a726e7775476b796b61333272322f6851594d46486149467554326e487a522f6e4d356d6249564a3657785451766d714f6e42314d663868704d30554d576832664f79683544495054636b306b32627271584f2b734533353551736e5a58503339436653566e54613836395779502b563064565a556c4e31736569596973575a4f6b385845784b4654526e4d44617734726b6c646c664147724d755051385a6a533359737975384d646c765779574771764834314f684f2f694a374254504f5631306763615443497177556c4e456a3069332b6e782f54395256666c4763687a70577544565432616337506e6d643272614c526b7475566452775379793564516c79556e30566f544e316d6b59314a4e745a554259617a656665567071354c69462f4864727a574f706e7169757931517357366f6265554e6342464a6c796f76636e37466353366d43756e334f535050686f374d524d7a69424976526230702f7744502f4f30554f4343507871506a62764a2b386f793942554f5a51716f3943597667314f4756447057537059536d70436452324247342f73794c4b4a7469754a36514c6c395a2f56432b37617a66467372504666696d4e384553786858584373686b6739326452492b757267717363357a6563636a34526461414857516e333668316973526d59477548664b7376524b65704239746470585a377458766141686f665a496b67586c65504c4c5171393261334f5956564857384e51544d625136684b6d69336c685a6e706c35666f2b506e6e73584f4577783475792b686f624f6f7a4f7a6f4a6f52576c3554722b566d6853656637766b4649392f7743796c6266686d4e64795469596959784932583866383448522b79795364692f71315071586c74374750447956364d2f7a5a72766e4576343339326533684e3559704a657a356c4a482f414e355261753735774972337a44494331445a786d683132556e56584e4a37646747784e6f5a446f532f616b30483938677148427a334f436368535a724f3446696468382b657768757236673355576b6d434f505932645566347763675964625561476e446452794b79733275483643776e73756f50684e6b6450384946527a6c4a417841572f346e3652375730484e2f7742517249314379664c30572b4b3868305a6e4c57747673545a6f6e545a796579553433554b704b5a50774478494d562b3641534c4b577648534f6f746f4d7a6461722f774241787057487077735235426779353749562b793770326638415971374b3555762f4146324e4f5a4f6d5238487030386d562f7741694538526173397142516e716435623439365563447475777a553877712b72334757726a426a68554f6a5671363851766b6d57424546557567492f59417a34465365427a34716a562f5671784e356e6879794e4e66556a316a383239512b5a79725664707a3346593538386d7679334c7a33574d6a7573537862357963756d4f56632f4772543777494f4d4d77636675442b727857496e4538496745385a7a4e666d596958555a77412b3771664c456d7032626d304d5038416d497167706d797947644a457148712b384634544548324b566434797332774e7550525333587866497770762f6e4f513361794170712b766e36644261325a64706137574a594c436171634d3969657254794d66734c2b4a7150696d57597672654d316e7947346e6e6734336c336a37344e57542b5266646f78764f7532546e32487948307249744b68503861597743416b7468382b42695535762b48503158314c763679695a72506e413166582b4f32373564546f306a616e507a4632546a4d46672f39393630556b316d5a6c4b675a7773325761654f4e376a5632773246476c724a334a54544f2f546655524b2f386177795658466d7a786f754e425551314933324f68696278693637334955366833475564796671704472756355484d723274634241416b337834534b36733853307362734131654b37505a557a396e534e38345455437651324d6e4f4a334a705a5a4f617853554f4a55374b546d3935306e4d537959356e7958477848677a394c787952785236742b576e4b3868346a516c7a464c7379684b576b68396c45707336785a63533770304e61564141554379424948775068724d56743335462f5a506c77686a5057304b77624178722b36484e4a41306f4c4c3069576d5637656154696177656c584d6a763251574642736d576179392f575a596e4f4f384f4a4e6a4e6e76304971446a66704c73666450506d32767573647850794a30733543516f506938354a5936654d6b59626b6c392b66506633375a68304945557238797a632f734258686c38727973353253374b3058534a71374a4531316575752f4d63353378304d6e636f4364315a4a493653344b434967654578457a30675934666e65687155426c5273794f774a4e637648397a744e714568314632656c667a737a2f726155675a3566706165734667554173524a72766b4172624a385942547a374c7a764f6652767a6e7850793161537a4e6a49326f5458354333574c546d6d5a59366b57646d2f6c4655316b544a3837337052784b3671356c7a414943617a4f4b7a6930544138742f6d486733705a54626c5376784d4b64574232796257442b4831636a50546d637a69787a3331616e385852504f78715279366e5377384f642f326c536361526538433734744d644a472f333444376e346f2f6a6c72657175333578356c3664656a38336b3369632f687554354a742b56497a736d7872395437376f4638333556715a35534e444e4b6b437161656b6a6d7178466264426970365036783135314c78474f596441665433387366785839544f4d4430752f49583032326c4942655873346b4645452f7530684f6f6366526f30432b446e7453544c503439436c6456776b642b506a2f41483844754e7450557232367a362f6d4c4c6d395350417939775a2f71423473532b70396e5a353670503533544b643666687a637a577075612b55704a78752f58336c416236356e556d4c756d343436375a2f444872366762722f6b762b5063653950346a354636342b6c4f663556484c6b4e312f42452b6234475a5a49775a666247623153584b34595662453834306b78582b736159554f5069666a54524d55314d5a697369792f45746566566256354a6b616d54664b32536e71626354664c53304b6f576777636e363731615444585979667530436750394330494a30712f553077454662634f587567414e7137494a314a4a516e4a6c424f5a596e4d543952326c55784d6c56697173324f37366a366f533055357666656d51465574647734506c70634274714c4b7778426c4b6c51327a463857506a717a506c544c56415935756547645a7233715051597961646c435672663841594f3776364d47476e677a64634155712f77416679624e436253666331564f44614447334d6842754a7153342b2f566444564e47433432736d575336706a574b4a776f5238494239726c45526a706e762f4839753457646e55306379614455704f302f482b61534f77566d5231797a4b7a39444d4d795155764958464c646f4e2f51764a686d464966352f4335796378465050666c7a3773786c4f396f50315678677537476f414f6c703156496f636e756233536f6d562f4872324a3642515553334c494a6b7a7a6346796a5571314f31414765505a39462b5132306e51616b6e386a513438364f5474544d6b4b2f355353356e6b4e6b397a544b63553548784d426232634d633148562f4f5a6b4c317035732b417458435a6357705858624c6d787072706c636e6e576b7a56375270423953576968315770374a546e6c6358546178545743583250315879682f456845347a4f4f676a7453727172394a633277712b646b6a73787646573579776263704b785568583264466278683655726e2f45587548366d324c35324d514a422f55443836414b74466638326c4e6158646b755a4a2f4950666c5a333658326e787a457272585153366d306144725a2f397739706f54386a6b6c4d30775575652f6c794a514f664e6c3552364d39365a34482f703033387347676733554452564c726174526a55557979454e5976716936633148324363415433353272584168506b6b5a3644584d57476a656958674d3445314759306570417938633070586f547245306f327730456752715438546c3143436b7a634132333270326f436b4f62622f4d6859385a76316f6d31503268626e7939744357792f56726a6879382b6e3461702b57464c392f70684b4942396e37526d446b382f707535646f592b7075635278545a6f345676796d6330376c547542756a6d2f53686e595435306f6e653052357051776c4c554d7156702b464974664c4f784b365a70316e354235346a714e6f306950336334437a5a53464531764a414f3133336c7a6749704b2f6963316b79387855624b75705448326b70314136354b75425730596e416b57745852452f74484c3053667170697664394c6d747234736b6f754c4e354c466e6b665857474e69514a3448524f31464c425537704a424b34362b59544c534358722b77756e6f36796e4d6162316c33744d3038592f79473644654963706c6d782f5061583739795642505a556b67644f305574516b4256576a6c7459747454426e4737536d754f693965667964745a5366564236396f457070756f4d7634336e584570503165673251714f6e4b58503642314a664f4c715a4b707153533679525874706666304662435244592b382b5a6151375a4e776b797952733666784f6a67522f324334426767495a3566564b3348505a32494c325a6e645737556a4352364337614538363466614f6c5438516a6d396a6c2b536448576d735170575370766e396e4f57695a695a6976455350784f3579636d5a5643736841424a57694467596f4a344e4d37526c504e53756f653154554451784e4c6c45734f7035734f4f765334517339692f616b55567554614c646d334b6b73766f414e33746361347071732b7a51746631326e4c6f324d314d6c4d4c467631463539424963514c653650354f475a6831634f74656b6649536d564e57643478714b72354979535843736a627250643471346a4c587a30316533732b654a4c6f454e426c43702b756a443475664852304b5a6e50572f506865336c41316c33454f62346c35435032577876544f3668737a57506c314c746a32703150747a64636b57585138307443786a6630466c6b352f5a71496c30653941616a6e703656597533354a366b65495a486a37706e5a756c354273572b546a38705035576357653443744c49764648552b507231694b6273674e7055353053356b7a316b4c522f72572b49724d7a3344593738344e58503862384232727376515332326b2b56314c6f584f6375357578324c537a416c7973543550734f746e704976594c6c7135373130665755705a746b7270786d305248634a482b4f69746e4f2f4543504f7a4b455332324a56326436716c313572697a4958487a556d6f6f6865324f4663615337457452416d716332676c672f4f6d686358784f706d6658694c59384b585776314c38765a6e342b746f4f546b654f466c74316432754c4d2f6b616e35322b32504e7a763076502b787965797848624544386951676530786f5562766870627050794148314967504c386f314d39775857305a63666a30563673485335554f5572343943686a6d535a7455796b7454724c685971732b7064376a49714743464271306c656b66494566516a4f6a3043302f494e493732334e2f78477454483331614e537774325a49586f63536c41786566706c325a7145756c71494f702f2b49422f4c4e343678456a5944796b5635785053725433346d5a2f6b6b6e7731756e4251317a6f59366f453641535a4c68316669546972424b5570574d445569435552776a546575745a7a47515344512b746e6e4a56703639565a7965505a363861436a346c4a314479666e334f55352b664b74634939585a2b2f75725370727754316379675744782f70746a4f3776457238656c614e2b7a6f41504c476d30706f3734535a304d742f5a5047744847483351704d76703977394b46694f7537384b754a39787043733364645855376862374d69667858782b542f7a444c795048683372362f7743447773357a336557626a547a2b6f467138327970373743576a53637044694f59464d5373572f577070564779737a4d327a4857526e726539634b624b6f7371436b493149646e7a6b4d5078696e49593273727252537065686e6a646f5230644c32542f57425073614873633671696f696b6d726c742f656a50795751375459375873586d51786138383432614e3064386355626a526443794d726b302f455046732f696e72712b59474a393975667a2b346d49614e745065722b34465470535a447a6b30634d484e6433657930366b324e61413954553376794a42694f484b5650507166756270702b493669612b4f7870676e7a676456374a7669633771613258664976366b743262786e544b666e784c3743786256715761672f334744576d7233695142395871355845537553616e593472366b61542f7177395a57332f4a6e77317179796e637871767457566434592f624761654a30335444676d41716d4a754b70466b3934497a724e7939756f386b742f61556d76537a584c3574696d6861745145315a49385a3274614774427a7136445564507442587876707936454d6e74346e2b5652336134756d61574662715a47526b2f7365676d6a765255524f2f617853616665717767354e302b6e482f5158736c74456a4c4e414b4b36503032634b4933576267716959543647464b476a545a5145684a642f372b4561556831503179614d676f43674b7832787a3036577a516c682f462f4c4f565142566d58314738726e6b303832554a6e4b4d64416c2b307a52784a6b7a69567253716d34574f494d30784b6c6c4c4e687a3662336d443947786a71517554796957676350527a303053543065327746695843577a34317a4355676d51415271414a3736667a484a6c747a49573263735a564e4f6a714f646143757a547065454e594735487731664a43537a53522f414941302f6c563333454142764a513778763878306e73796c5572584d68705335693642666d3266476530366239445954764969393356642f66772f362f682f78494568455269496a77466530574e6c663941354f546662577273424852464a79533164432f774456514c47644a4d79536e64536f674a6e776e6550797a4f44366a416b537277746450664a6c3648774a6d375852636355694c4a314b55752f356e4f736b2b4b6a674648786d546b69524d4d4237396b656339387771482b6e55536e54664947676233585339696758543942367175547363316866373474486f2b786b4c44754636654a6c4e33787a664e5348442f5a756144485252485238774654564a334e6f44376656712b4f6c314e412f4e6e357a6552754d7146712b4e33614f4f6350754a774f64796b526c536f474f534a363733714f4a575672652b4f304f35305532665859737a684366705539536646704f576f586346696744677a4c45302b7747674147484f5a7454316d7668597a37316a4e61683154714e4152724a633974334d69716341314f6949755855667941585570503576663743482b6769573635446c2f774456717970596f7339716e2b2b4b54526c47544c747368346657424a507969356c6c5836367064512f343539414166564b2b55774371346f3962374139586133513636774a694b67475550334b4a5173313631396277782f574c6e796c31564876396e33314959427461447151593972486e6b6853616c73552f4e5050587054387037526e5a7231545a394848334b64466b70444d7335594e4138344c71512f66456d4a657a367a514348752b6c56524a4e5a4a6e4d6e37645332676443327055446166625956756262553664535a5a2b353743426a51452f645241515746387632554b445a535a6b732b424b665a506a6e563741413041304b446b3035344a56386d644a6b4c367568697a2f664a7a62496c496772676d4166704b67714c59304d796a64784b74764c4f646b35544c2b58367a5167706a344a456f4138577571595768527979706e5a2b716750767a48374a7a5a774150384171597a335a4150374c6e61686d317465723949484c6c3064466e42376d2f4f367a7633516f367736427635644b51434d3538556830667a30703971594570675868714b696567446c6e75756a6c3466764e6d697073796d2b30554648794c35456e38494c584b514a2f7741544d726c3941506366763446514c4a72722b636367704874575230325a756d755256684f496552575569462f52646f646e355559734931712b616d6c2f784772366e394131384570716476324f2f77425573466e774750496958782f54324e5279766836335049542b4e326f6d58676e316e66323478624a50332f496c68643278633943717a702b32686c627a63356e4b5455546d46335075622b376d3241754e7a666e6e576d63586939496d2f7744544139703074436c4f6a434f76795a577748766d6b7558526c6a46325763786d7258706346452b523071467655546842354f2b54337531656736497957705967553849715470624c4c632f6b6e496443716d5134744241706d7a4370755a5677326d314b4132746a724578737274545263314a514759384d652f4e7741337269445437784c4f6131576a592f2f414b536e636f596f41583246576f534242692b436e76323075565130426b6d633554426a4e777a7564616e616751333069656e6e795451464e4c6e4f685550376c6642694d37704b7479394e65684c394f7a71724a567674464d33576e5137335456464958316737336b3336783868455079383765586e6e6f36336f5a584356356f55364c746531735767714c57364b6159786f766c553248612b477a514d61566e4f436c4a577751634371364a70302b3854663179716b56463656775055566a42395173574c396e656e4a6f414d76367567786e62752f48335345312f3841445654694655466d6d66364233432b626b557a7a5946322b5a756a7a387554334d58432f34656a56724b616d622b535a77335157484e4a714c596d69645538725648377176702f74696141656677545058515666574b6135474c6a693669695774646b364c70512b744e6f556b7879314d497051424b7947326d666e5442514c6f3165716e415032424c435a466f4a7950536e5a6e7a324869363638656c726d6e6e4453446954505037615475584c7742455363526b756a3637314742754a6b2f484253384354504c543250474a636a546d614650767471716d7a796c2b4771596d465a537132553561456b785a5079326c376c47632f7a42374251346638414f4d526e50654a516968614d37526f6b447258716c2b2b7051537152333643707955464f6647745831724d6c516a4f592f61424b70686d2f7a5a776735396152706c2b53556e324e50306a35415430516a356e4a39577a4f75776261654f58724558765969794e702f43346e5653394b33744d69662b79316e3248443270326d6e336958372f58463578346f6f6b574d5149694d47677a5155564645773555594730594f463833374f6653755a794e6e472b372b48704f794e633365674d5636582b58397874626e552f42506d78534b6b725a4f4658416c52374a6c5474345537447a6b33547259756a556a716c3933414936434e356c503744555079716f482b6851623565443052726e6f59696464424f422f4649732b486878544c615852637455756b4a4c4670544850395954644e2f74542f5155627170662f41505847654b32426e53316a3377506f5255726a2b66546c5972794f7271373943356c42707558506c31615579587a6a33767673615a6645464f654663312f79342b6636437550794f5a7954314539487a434a73536d56686e7a794a35304e586c2f494b39436a6b722b616856543149306f3243366636494c436738333468417a4e7a4c5636582b583978656e714a417962497a5876517855716a6e6545584f796b6b625a312b38355939487443325a43663466554c6856526b30785a2b6a4648325144333172316a35674a364d616a344433434773703253444251567338616e5632496178656937765a5a3243744c436a524f4142336a41345053596652416665454379626a6250326158736139474637474d7a657955633935364a736f683668364f4376364d732f38416b6c694a685a515466674a6130302f4b722b6764777a65316354556768717936485879576431476e4c785332554b6f43365955726c3075787a72343668596b414335684e544d424d4a6f46386c415079667563645a6535536671307575422f616f4a35587576554b5a5a47427a6e366c7363763970416c734d48392f54513649663046474f30596a6f4470664744497450694e444d314a6d75484f4653352b546d63316e586373783674424c472f5a5350797a4362572b344f476277437a66457077305a434e64425a4475675658784b7a6a30426e68766550566153573642455468356936516739436e4e544f6366574c2b7837534d674c3031735a644e2f3378436f4c54736c70686d62577448765a6f4e5864483872463879552f526a7a31754d3575754f632f622f67703376414457585638664850426a6576564f504e4971616379696a52344349354e4653445558563050366d4e4c4745763239464e6b337a4b642f6a4f414c707054505038414e306c364132542f41444d7a65572b30343230662f547954576d4e7677777253746153372f71506e543444532f62775651446a53444d3739766c75592b6c4b352b794649727333574e6e306e4c673933595a47494a692b4a735948374476764c324b4361597a35386377592f4d6759395150697a32465571755a2f6538446a487336746661365357454a722b546b4e7932382f516b5a49425843542f414a67545142646f58797171746c6166707439362b544a55374d643336557a6e4a553165644c31565874676e58306b6d50545451486669506f4153524139314650777a54765350774e6d594555314b4a7569734b42532f765552436c355a76523143306c634869326d52514a56775159386a4d41666b73366d666555625853714c5443663779334842314e6c48626e41584c4f5473704a6178686e34484f4c5430457241784e50502b4f4150544b5272537569654f71755771336d672b797077466d7053654c4559565876463671725063464375477a332f414f743677454668385832514e786775566d6d6975637639306755384565632f615237316b3366693746512f7338367668573339645638536b35346d7076384139427a67496166786b3465564e636966366e31574d7a56307354476f6c4d467646795a342f7744704b536f6f68623148762b7433324d416950324548515a635a526e67786a624846625550655872306972497a7659737569357457645255746154574c76663768346e2f754d45516230456b7348306342396379566c4a4e4779707a48753544386b716e67546c6759764a782f7836567a6b4d66576e2b774d4a675555375436557977547234744f673753374f7053737554674c5a523244366f7636356a574b3466644269307557796f7564373754493275353065474b6d6e4f4334456d643073425a384c4337396e584b6f585a302f48534b3431693131634e59737a326446624b4f6353546851366c514e44326c2f67445266314c785948785054396271763841526d614d6b43436a59314c335532734370374b6e437570774f396e584759416b76307831444355454c386c3952764176443243586d506c4565526e30366b3047626f2b5236656643625241714747536b6b79547136674a33762b587047736a436d5956494d512f53497a307267614e2b662f3354767859394e72645753667a74666d6e4965475862736b37337a513637755667637a477744796357744b57794468527634633667637a7636443266507048732b7062344e7632487a30742f755a2f6a68366a583138385830626e69552f7a4f6663743832684c57763752613839554f356b67306d533539302f58714e50372b47443371396a77704570746f33726e4d44657a78443151384639514d70576a346276342f6c75654c6d6d743263616b5853324a7a507331534c6a39334368446b7269366e714f41464c7a2b4161552b78744c7335695936774a53696c30314d78506e59534a4c4d3044734c4f3731494e53695870645356437870575156456b424644586643324e6a674a495465354d427a48505572676e59354d54484f75346d326a5072564b3444544d3048552f596f456b753539714d4f665559594439382b4a704d574e39774a437a6b793561737a57692b72336b66424336546b7a5455414d3031784d6f30503377544c536f6f4a72557346667a7a6673326659496b6b44312f73676b72617735546c664c315274347565705964344874646e706f2b76386159795a5576725139782b3971577161344638377a7272356a37553030787a4e41632b2f50643831463357306437796f7070526561457755723674644832697a306d44654743556741664144656d3051637948576c5031715564465170354a59333254696256306d516f3042526e69726e3250684b69626a41635a4a374e3776623879533659493650774d5579644348565430553055536e506f6142735143564a5767787235376d6b3736735a464d585163315a6d456965664d616d6631586e387675424f3575772b505a6d7673364f7775436678374c57476c586f5035685a63532b4250786957396149454969735a7a5949395231674743425034614346567576547648475031792f764a666978365a2b5a6c346669633867383838674e5774526e42675334314570735265706a4a3161624a2f595472474c30754b3976655432526877466634455a4b3372374e71576a4d386f706279722f414f55482f6948347a67356c466d42366b6133714a56513557526a5434316a70583063756e7a30427432335552736a5354697365484b31416b704d317970754f3659556c61505939575a6d4978744655772f384179675751664b455a2f6b486f4e71424b6f63414656654e655735476a3553304b305339664652465535527633424650786357416a772f733954655a4f424b48326a325045544d57786b64586678552f7565666a4c2b58766d4965462b463742654b65704e475a6f6a6e2b456561535865503675746e35573555725330736152656f726c6b4b3646306b44467461644877427854654a2b3251632b706f616d6c473665616f36494c74726d7a2f414c4c465463396e32367670564c412b55764a433241696c355a36554450326154355159676841665a3335556a30584e3751524b36394b3967467646637854674e7256614c694173356d6572506c4b6e2b516b6f372f47796a51374e3533744b654839645073396a666d6130675a7162386649782b4653733446505057567077777170344e334857317244544c763673576270624a2b476656694c707548305063315a39435a516b4b704655706e43563143784c50522b327351366e377932615768524e4f7978795354523967322b78516833672b36673244386869455a73377a745273663246525766636454326a33505a4b445744314930794d79302f46516c497561485141576e4f5a4731776a39616351563874663968596435314d414a47413952316b33326a2b477a756779314346316537373247763478565131764a2f7742743977664a3267464b4d4b6c38763876385a3950504874587a6a7a6279434c78487850775850505a386c38316f4e44736e507a59564f7331477573725a79684f625071547058543050636c62566a39576c48784e442b70694a74797838513877763553662f41436c313373386879507765394e38586a4d70727647637631463955704c5142315532547042487359325468564d6853762f3464613131732b6e385a716654396568337875373950324c2f71322f6b4f545871422f66772f75633847657a6e722f6d534a47425330515a50706e34334e5a7831702f4565616e646d6c74637a58584f7061314e446f6355522f5a4d537252543258616e736d686e5075386655644a5077482f77446c48336e6e7164742b6d336f6a2b557668474a355471655133562b4c6176717a67616e2f694c304854476c55577071593974524c73594d4969564c5666445238744b6a502f41434176733436767355566931394f3233386f3964667039713575314e6757342b6a6c62475853483334755a5156634257576145304e6c75716d64385266706d7737324f354e2b32522b7836566742674265654c69705a536d51336358514a6f466348783970714c354564584a52565046716661556443563645377664772f384a75414c75674c577653304964494b4536443169796f442f41486542712f5256734736643039464531485349566c706f6c456c4c584b597053342f312f6f4367674149547564475159482b7855704a3479714749326e566d7a4e536843672b42363453636e3564443672536645507766456d756f66694e59324d4266493047694b32737a386943586d73725173506d6e41396a4a546e57303355482f414b3533454b535a587858486c2f6b43525a4f45376b2f3046734c74566642776c4a7170594444765948562f447a6f7a4f57717a32726e59413365395379366f316b6c674b506a6a61464c50312f566546593868474b6c7a796f52327041646e3670643145764c34774e634d72792b43743264787863656c7a4b624f457a67666f4a766d496c663865336c6841584c576d6d7771505a47333766546661576272794e50394b57382b632b4b6756444f45715a7836427345426f6d416b6764416767512b53766d4238795647672b546464716c6f416645616a614a46305a355458386b58304a48486d72597a767a4770503176722f414b34494e6237516e4968444a426f7843564437456359527765387541745257752b4b304e47534e5456702f2f4353446f6d3736783961683331702f6341552f36372b76506f2f2b4f33674a2b6f66724e35586c6549654935386d5a47653572746d7958616c527a6658687a636e50653772653130484f35347a494132694a6e516b6a3635674261744c586e625775365235732f79432f2b5573654959766b336b57663643656a36764c4d4c786a51305a39587a76314c7574385778764a526d645135376f737a436c62556559656255524c4d383576463255714c72513757707864645059706d4a33322f306a556a762f7741704f39656a6c31367839476653584d436847435754747233655561475444754f3470314c4a4a632b6b72464d4b457666796e76485549643778583753346639612f34476e2f41464a2f6c416e33705038412f4b51764f63667a504b7876582f7744774464385a313253556f3867394f744573616a78664f743135565a7878342b6a7a3957517a355768386a577450764f7963543255516e63424857337355544761574870552f4554387776524838792f42386231483946665064445753366e472b783478656b4d50597946514b6e373262626a4f58722b6b743158324f396a724a61353969593365776a584f5846716164744f647434473036396d637057714a3864413842563857773265786e4a7149307a734f552b704b35593266394e744468534b574f5a4e514a66457732736a6f4847754e594f6e37395758533971456e466b694e6b564d774a72736e725769394a46376d496b6f537076566761567143517672734d4569415241357133325a383572457166736f6c726b6d6c6876486c7a352b6e57326b4c686165584f624c725067454463624d36646a676f50392f716b4d72417453726c443358465776716b32727a797836616e414f6c396873647230644a4b644150384145615764455161576b6c6c644a68574b6b674c6f746f53446c4f5368444d2b46396d624a41706a71426d74676f52564e5851444441796d354f77464563334548383379434b322f4b53412b79417a7455676d736c70355661335479616c726e6169355664637764532b62573778772f615930535a4e33326350356a51336e54704867612f657150716c6765436459725471686869342b475772742f614f7a737965334f7a65444468746e59654f525a754337696e4d46514f5561446e6f645447625176576b322b5130733952667a63384f787372523546762b4e78773872356a61743157356d5a666b4b4e445044542b4174534343746a66496b735356797a6451624574546a764c6b706e3878687058526d664d637a422f76482b6c382f6e72504776487655667a4c5553464c37745635752f386f6d524f712b6678652f787a482b78482b3439716978314847317a716e4c733168755135545568477a6f2f7731735a7455625965682f38416434394b764c66556a782f30373636755455387a4f4f6e78364c55313074637278516b315a4c4f564f73775954305a326a484f38556c524e543261784d335672703645495a33396e7446632f6848543778483133394a5055304a65664d7154794e6c4d73697379445538664851434f326730647a73377375676e34534b42632f4f6f584f6d775a302f77435a6362336f39776d7436534c435433342b37473359456d6466424c747a4e6e367343306a4f694c4c6b3153564d66376447376c6c6c444f645977562b397a334f53524736766c4f505a38784631426a793351484b4b33585a564f69325a685649745a6e356b576638415a6a436736456c32656b34384d686e624d397744596c59786a536c503035622f414c763134697a354554384e656c53465762487761517633364764696f73757269494866714b385856752b48517a303063532b6e716e424838535a367a5779674d77786b67525a4a624563764e4e722b53544e347a6c4a48304b584f4f336e4d2f566e355a342b6b347676434446464e476c31587a6535514a42344271766267333665705971694c74654457535663767544795a4e4d79386a64594956735874334b59764a356d77727a3641556f41624d633150315935766a5076514a7a342f526f52547264633355767169582f4b7a61394d2b646b7a6141617a593743593558787251794763744b647448736e3968746d624b4965346c55747a314f34427656366e44614750644c5378334f6e6264326a4c2f41466b4931536f666e364735472f37386448506d4f584847777a6677706a616b6c557242764f416d615a7850674b65385757366a537a4b474e7a764a51533553724b737a5665764c52554768476933467a394f717055496c484432707678653476724a5458514536786b6130726a61394d3642486c4768466e526f315a5379394f55616371396c3346486d36325a6653767053716f6e5775694544476f4c6c427a367a506755376e54547a682b766a346b47566456696c354b55497663676c3830314e534c4b616b5178723169344b2b315a39444f6c3969645143644a7534584b2f6c53425754535649565856585175354c6a516f7a4f466a7a6c397862366f58463877426f48303647444b58584a654c69503576624a39777847574b327933674a4d444a55367553746a7043716f35566d62544c4962633631674b306f5373795a6b4850316b50554f6f7366587838335164396c492f4371576e6866315553706364506170654c6e4851696b57716166567541426971627150577037437169714251306679506451566c38376c7065347a56787a61564134477453516f577133504273673571366d7370745246475553787171762b4c537a704e4434685a4e476c6e566766362b6e395071544650534147417668523537644e51387a7267415970633252394c56314b544f756e6a695262374c464137514e6730634871794764366e5471615a75363579676d795a314e306b757130584969374e564f6d562f5a786e423162574930576778727669706c466b4d4b2b683139695a2f65376c504a6a6548514253484e7a6d77357a7136724149526c7054784d686d673363697a376f4c2b305953314f45686e6a755a7a6e4f4942627161574649485364316f57526e7134684c4b2b716e6734723930736e554d72777a346d453646343341465432536b72363547734f4b4d456e2b30414d2f4743722b676b35723042616d6c6b6e73684c322f374f63643370304a64504c33527667765878454d6f6644555a6457522f582b6d7872663338704d4f764a356659473537446e41703942726671316d34706d45377076495a4970543751543645675a4f397932636437763846646a366f7744334f5879772b702b6a795076745a524f6861387a393652644270587163667a555650756f4c34567a6b3564514d572f744b57734e52547536376966364437796c496f36425257647466513874502f72636d44522b6f306336636c7738304f446f533857497257664f2f476b7a39354837766341676a514e6e414670313955713531736142432f733969784547385250782f7741797a63535a2f6d55775869487871396a44372f696e355164484b5877614c467234384730564c754f47733647735a79616732636c43696667756a463179653846786676684a4d6c4d463342482b67473171573752354f36644d70586e78615877326455564470514778675363692f774130694a4f36482b306e642f526d6156485030794147466f39314739664b716736475050696e504f705851446b7676696f376f4958784175574c4b46382b313067494c41396e753449652b764373655147314b43737846433571657265556f384e6f6d4a7a386c753557674666565534566d5378344a496e44716e653179566d4644534f775a4d684e436e386a616b31495552742b316e444d74527a764b72395473543836357859576176347078595a68307844396348725a336731613971666e7362624a594e4d5435787451746c796e63524b377257784d456c4e6c6f434e3077435171623751545148366e4d2f65304d6757357945706c30367635536b6a4636412f536c566d7a534a78614239614b304a6f4d70376b6464376b6d437166737a4839515567594f756447426e535530303154554a487338345a6c594c446d61752b4178364649424b58567348396457773147623373455351387755444950726f595132777a53433146477551316b2f4a5a485645794771634f4170776d5467476639715a786872396c696e653951644571514d5a36586f634431306356597843616d524e63614b4f6e436c316f50755a307564354b58745374776e3757653179656634677348663048367730396d4732654a6c584f31794d4c707a3562663254356f5a303063547135774f4a4b6b53776f2b5553455162376a5376767341357130374d4174497847655052342f75664f6839626d735a5742646c374837616d6538776e6f4b6549685758374262442b754268316674362b52584c426c5974792f6d74536a69356c4d7030776d6f586b4b576c6f492b596b396a73635266782f467879744a516c502b2b4f45687044324277514b3937455539663245504b644a436d6d6559623132575147387551675874466647632b6a5247734a435762766a4251416b412f526748464c2b35373636666e462b48506a486658503045386c3846523435543552343534767a782f7741316e5862703564466b6f352b686f6f6a3738735849547247726850506869684e3550584d525453755a746f56307457646c2b493467616e3933482b382f72563777772b562b6965496d54486a6f46576267655050646f5a3764423076386c68625143785476494c507236514b53786e4f30742b4a3265705457663966706a51396d6a784563672f75506633712f49387978302f72783452686143706a347947483039584f41434f44526f792f534c7371704d32776c796532333436715842536330786b6c7a666f3976376e32574a37507236414a4a2b635039306a666f67305049667a6d733038377962514c4a385a6d384c39504d676541765755785449354577354d7764306c546c6b2b78744355744d5933437468577a6453614e4c516a6a476a49366d666a583661666d4c347a3468696574503554666e4436732b562b504f6d7432637630386737337737533870303678705131577771504f57394f65414d5a624c507761654a45446d51366145464b547a337670544f33543059714d2f49644c315a7259364c54395a765672745779375765754f6279586558504f633150744363766a6f6d3479786b513246613944756a2f414e786266723045536576694e76616974524963587737543870304a7830765562314d323737625a61583930504a39466d744347786e36465a6f6d696b754a6d70527864556c566a4a2b6641347247677471675a2b7a5a787769745273623377534b764b5649797575366853745775575a506b586b32674e45454b556f6b5a703576484e58557a6f346376506d754b704d2f48392f59554d4f61576d4244642f4478715a31525478747074573250793263374c3953584e6c6c497149753937786e7a586658366e516d2b51316f533334356f3648664459326d6a674265706e614e43625a73586d2f747258397857756a4a2b4f58657070304b6a546239544c5956554c506b576747636f623275754d76657368547a67416842346a4864493632734b753773556c66587756592b697470574d6f58787262724d64596c5275645a522b766c6b464c54544750784f544f6f2b4a417a4e6934386c65536a5338666872346f3541504f794d62473073784444627558546a325139416e6d75714d55714e7a4a6a64774155414e4f6c5079714462484d773858307a394f485a6d6234704c4c356e354a494c394b574b4363624866797462486a6a6352494e672f4879717937726d6f71536c6c795a7545314c6a2f5a35356d31754675416931486955567a56534d306f7169736835486c542b7968365653386136704b7570346e76666c634770556f4b412b4d78374841676e324a6566624c62362b4973484a394d34706375766e7a56784f524c414c767166516b707372374f586b4e5643632b53646f4a6f35333452524457583257534a4c2f414f454c61414b6d2b664342383534697156335a765a4f362b4470356d645a515672594972684b792f6d6c48796d7079632b36664a6b5a386a43523734364e496744707a4b517030623765494a6c6e3445783146703964354b357379754c31374f5a7a563573396b6430705045652f434b5572546d5a62484e61564467556e725666586432646a6d36336942336b5773686561383950482f414a42436d36663056587644476c664f79756669744372555736644a556d73674d474951556e65485a77614b66307458394b64714246652f2b5562666b5a5538677a357648356f347261353077506155726c3277745135386d6d355438656c61374359434f4f4662557534644579442b552f367679317234352b344c344374536174586a2b4f764b56724d676c5a483351386174585038415a6e57744b6932613032554c475550354a4579757a7a436b68735943503048792f774252654f6c6f456b6671782b6e656258785a6f30764b4b3056747230746856434a2f475a5870735175326b74416c746e6d646f565350742b64644530367a59636a43396767324f332f414b67302f4976492f49613777666f7a4d3330655275756232617573557367454a314b6b58516674564f6b525a704a6f57676d702b574e503170324b2b734a3369746138516c6d307656566d5877567978524e7150762b7734776b6d75796b3648454d706d78394168304c7673416c6e582f4a32614f55436a34665649724b65773353773975487a44786e52537a706370504f41317265476a4d4b453254356f533572387330383748637064776b6245635772322b357a532b4c7073444359784f4a376872393562346266446f7478594f39326c50744d6b5478674d59775536303270473257375336754d736c6248584d71623876764649687876456f5877795a614a6d3078457a6d4a456b6739426458506d64496a653865565945514b2f6356453061635571726b314e797a31565276346441697765432f72514a79635a594d6d372f3945572b6643416c72656c6d376d4b3047426b53366a545a6449556e4358787633356a7435534b72703561474f3270366e457668477376616b4161357843305146573052474a6756536a77485a78394b61312b634f436e6a4d33786f46776e716f6f697a7731324b7a2f67613143614b6e4a5356434a6e38366b6d685a524f3261446e493075767572626c3852592b506e7851553431656f774d7071624c54304a70644452306c526d637241756d62646e2f7744575537376c453677596c524e536d622f744e4b6e6975446e6674534c337a4e412b5a6662396e586e664e51392f475566566f706f796f716e574d4e3439526e6c38646873307570414a564d5354754a6f6d4367434c354b685a666b4d7374624b2b41566b7a4b4c4f53653334315750747931793655506147746e5a2f4c57635437707a585372336853487539356d336a44437366504e5452434e30513853715257667256355473386d5030652f6362635445317073597766384c4e424b696154577a4f3548326c50476e306a6e44582b504c7239524d335658443038624f3243737252546535367443453650347a4c6e2f414a745a2b347675667a69644951353136546f50336d747869372f64747772486b4e694d6e78484d7a657a79425a53533831534e4764346147785032744741717161524c36486f62797a5042634f5a30653073635146595269774b42412b346930366f3835506a4657424e4747694b6c454b4b64513530456c635630436245414f6a4d3071525262324d534b64687036414b46526e7a746233423436507976564c343336686570756d69435647646e2b5a466c6f622f3555654c6e4f566d4a30704a4b49736135314570555049576434737a6d3464544f5853336c7870324a394454356f72587548497638414a6e31643868736f677a357458552b4b795a4463424b65535a70614a61576a6b397546372f774478335166395774336331646648557a4d536b774a6a56383672375856537363664342375366776534392f6f563439343372625647486c5a2b64342b353073323968726f33497534575838727444616a456c6e704d68582b6d55706564564c627a706459566276663379396268626441364a6f776f61596c4b7a344f3053646c6c4f466151315435787265737a36304d2b556834535673356e704532316a384957555539726f6374526378456d702b317833637845386d725454614e3265696b31526e6142664932526e33466b7468734f555a7746614f38495a3365357a4f793953356f4755506333714b596f48446e794d73463733776770307279592f526f37634f6c53527453354e53794562674c324772355a684f6879542f6f477131686f4a343244367a4f38506a595671725961383561686f6d5439526446436c4f6179466932395631626b306b6b2b4a6378596a7a2b674b3230476765675238445062567a71365353686c5272564d746344564d712b586b74677257356165487877642b4c35446b56384b576d444b5a2f4f4250584e72395658527a6a763841426a6a7257626b304d72497255704f5265672f68533063396873556f334d64307153455856412f7530614b614779544c6647417a36592f656131624e41534d726d766e725438613378702b6d766773587879762f4148304637767254674839426e4d345757633757644d4d63357a3951446e547672536e2f4142726a6f6564446c722b4634395839595038414e5056392b4b6c5a54492b526f4c39654f62504d32426a30566d694a79706e6463676232354a2f496c616c706e2b515a314a304a2b44387a4b543659645938484f2b7754774f526e454f724a4b414b61786d59505a65716b586e446e4970696e6c6f527742483551643958516a2b51666d4177414a2f6a2f4150674e396f4530487862336167754d356d55676647766e4253754f5647526d61744a397773735a5574632f774741663750596c682b302f33332b672b6661563173584648564a5648385378415930484a4e53664a612f393143327258636b784765686a5574556b715452387442714944574565593650506f63375754384b316b6444523450364c363255476b676e4a30684a616f38384a5631444a304730554c354e37454b4270664e2f514b397a5676702b35796a6c684741456b6f4653586c77364353785a5352776647546a6e5775455059355267356d6b592f74706e794c6f5946665850612f7743506f692b51424b53366738376f5a2f38414a4d4b62354657684f706f6c327a554631495672704a50446c3977675466612b4d526a48634a45676c664853396334392b65784366677a3264656b2f336f334269464b7846424d6a2b636b7a734a674e2f6650684c6c536a5035543549576e794c55635a3371357a5777456442585a36776d2b355a2f312b7261436c69367a4e6d4834795144444e6841485063504f7050325633313852394c5255633041397171634e46306e5462383955376664326c3331767241544f39582b356149314e37777a4d674472464d63517a4d565941764831366c594864506e4658475861457655375430705774304273634a3036497468742f576f4b3145444f4e62326a6e4765786e51396e774944583562503145774a65684f76324337756546457536463944455a2b506d766d5a576d706245752f784651706e4f5a314b5153424e46582b41455441446c6b767164396966507470314864683753744f485457536145463257644e48305345614e43687041614666454263344c5a6a4e6f6745617a36307642546a395a376b70663965734d36666d6971764b7a36797535706c4f3371617577353954533467425032752f354a644268325146566e656343492b63647a6a3239334761332f7053354e47325239545a71506955734b66685a6e3536556978503643636e69726f75516d6849675357715951306e7748566b6c54556938373657766850737234732b694455727a50496e5351517355394d34467854562f77434d792b436f4f6c4f355166745757506a352b744d4f2f587453376d627a2b48524e65532b4f584d765059416d686e486c55582b306b474d674f4c7175685153326944795762737152634d737751733131733561783639462b62537a4e567832654433584c5055544c704c6f4c6e776c3851386c706438664c466670774b636e2b5669705a366a6a2b2f4c30446935633573656962756b4b7939743630384c5158474d3631742f6170766b4d466772346c55546747584e5856726c5362374b54557a55716f52566c57756e7a45534253527a71524b433164485163576c4f5032616c684f6e34544c7078636e41476775694e37336c6632657a364d4847705372616554724735364a616b5276624e416c585866763744506b6e595164564f6b76686e34484f754947646330584f5a764f4a7272536d2b4b564e43786e37527173663134486a685773686e6e6a56524f6e393953583734716e3276634b7a70366b4b2b386a5451485175536972566e626c313569776f6d6b494b6569756934746b555a3948527153326f534c6f72667a337758743577456e2f6e5541577338354e556e472f64697a7a632f472b457952554848366445644d564b2b676877304c6d2b796d587146735a4e54506d70716177692f644d3175667a2b346c326472446652325852376470556965613269536247664b4e61354d32477a4c374738685530556e4d576958366f54387774543833316b3844396e55454a51486e74724f79657739424d45377a6f6b76686e5a537962344a772f54526433516f6d5451342b6f4e356d3045754d756456774b524352797a50516e62444b3745466d56394e73546d4a6e4d5259334f5934585476716f5779433530374c5075554f6c2b5a6e307763492b7830767642357a726d7a6c536f487245326b6a756d7848492b734649726f7a2b5654364633412b754931564c536f6b72346e336d6f584233745a2f30484e503835573538336f443670543642356b74427878527176703255545559315978307679763251512f736376746b7136766e36326450374f514a442b58346956766f66356c506c2b6f34504c374661342f464a52334c49644c78714c517a4d34394a4d613947335479436a64626e66446b3569746a425a4c513449783671516d5050362b6c536b765a4e503068736d3258766b6f4450546457694256652b326d5a314c562b512f5a6d325535476e72575361335662544f5a612f6e6232526a45436e334f37546e4a58326c4164564f63436a782f777442795230312b51655054484c39472f714b394f4f61505058715867792f554265654e647953656855614655704341686237364c43596e4448612f4b494b4d6d64617a3758362b6c636c563874363636705150346e517071386376355975726e635670665639777159626b2b2b6e352b4e50363379484179717a647172526f567a5646384e5378546c414c4b565345664a644e6c72596b646335557677625359304552394d55696c526d3971425638317558622b594332596a614171554361333547644d2b5a4c50716a6a30706e434f5837316d7065724a4641777a7a35376836705971623373335336726f6658426c51664e4e78334a674c37493136312b6a70657a32394f703355426d7956726b6f797834517839466c4877396e454b583850324a41542f5554516b4f4f39383174306b644d6c6630686e6232764c6a6c444f3969526f794a316245672f7430363531704c676459464b6165416b6d684e53395643676b36764c4e42694e724d6d6830747232426456656f2b646e49795a6f694a4b5747666d735776782f36616339317674635145646a54645259356e732f6f486c477132334f6a626a6d364652614e6c756e646e4c344164316b304a5a4b7131595472546e734372515453706a33664b4830364978702b795050654670512b6f4f717247737a4b6c4866637954456f2b314e306234694b4f2f597a36755558646c353864505578306649384c4866594b414b50724566474b454933357035644e5234382f627354533762684b67664852476c70314f30715a3556354f696a566e6e3671375052504871487a32566e59495568522f7076714476384151617752592b6a3554703052634a32686659384970523471796d736264566374536b32694b54536e4458704f7541353356653552306e796b4b6631333472644b2b647636447152696569352b6b6e70466e39727a6866746555592f4b64556d53314c726950577a66326d636d4b6c4b6d66544854306f2b4e6633347a71622f6d4c656f41564c78693236384458794430433374326f64547a4d475277457538462b525a63506275466e636f4a586b6c6a5a5a3245763751792f54514b4851474879303141366158342b41476b586a737850554c2b5165676c6e455a4f353433486679504f5332323237724d664f7a713946424d586253595736307a456976424c34442f532f77445251346574397a6963367173587a797a77416c4867586b766a744f7177303066476e4f6c623741444e4e3146504a5a2b394b567743494f715841354d71717a42715566546431617a616e6954744535347742315739486b64527138596e48714837453046562b62745a6b444b753641366d78467272536e744f54704c696a7046786b705044436c31553950756d665149444d2f4f38713879317935347654396c514858386974696d374a6773316f434732724835496c6e785478726a5a4f35516e57382b6a48395948745143577968743536663841672f6a50703551697a504c4e75386d2f697138335130566f626f7a76626e734a34452b5a6f6a7a48576d4269563643672f526c56542f6d6b442b41475a576d5a342f434e74504776546d5079435871645854646d394f4c713479576e4d5538645258386b30487a513845676d4a452b746d6a51372f4b5a3565776630494b5535644270583679657076726c36457930654b61586a576241725537507a4b38387a7170627374325932764e6d47522f736c39302b73366b6c6d5a2f587039692f722b3550732b775936317270337849356e553634612b6f6e527643713168365963765a587957726c696f4a4a594476316165564b56594b534b465a424f617951414e5851426b624435707872506d486336394a6c525a6b3153377153302b5172356f39692b733035345539654e43305543796c314e45475431694152305a79573572656c595956663141735478726e4e54457170723150704471324631767464573666716d74685a6670446b66584b6b6d4c6e4669495541775a4f3870476d656a37394947304e722f414566766a523832725169324f3641733948374730347130396c5753394e714855704d732f4e6e5456446539614a7a6f56562b30685978617632646263597833794c36386b395a64444865712b664c3065356f7a352f3143737a4269576e6a596550575a457563584f6430646172693530564f346445792f33516e6c444648534b54505867497a3437362b2b59616b32326d56574e326d367475656572505a64786243795a316778546c57352f4f7a75616b714a7849452b3142626154366c5066735646625a486a4a304d6f5055727936567a6e366576675a6e4e514554396c693549384b555a457a473068304d7567525455787935524835523679466166667a6a762b79385a325638426a66353367626b576f693565556d304d634957574c64444a794e3538544e446362354d2f6e632f79434a78636d492b4f4a59476d5a3034695130797a78574a6a72492f5a577269352b747a4e7855487162714c4f736a756f744d65312f584158304b53457246797a75366e4c57316c4c754b4d4866766a68436c6361547433633241637038316b6d796f2f316f4b55356c372f30656c32462b346f3948514b4f4f6e55473361344e6c6a6f626d55527235775a6a356574386e772f706639553238336c31415a2f6d755a6e5a586b4f656d614c696f3051782f794c36614d70476f6c495372716e726c543863592f5a4c48734436334f7a4839513677374d333966492b327976674e65395772785879665564454f70725754317a375a6e49715654382f4b71736e6f2b52776b79566737496e67724975706d6f51325a645075726d575076374659576234336f656c66683265794f6d694d4c78705a7838374c4e43562f4876717566327a6e5a4e372f30375744594c32383639696b7546496e3870476d6b48566d4c54306e41326a3857387838593276454b31416d6759344d545753766f79426e6472505179796a4d704664712b49682b6e6f5a4e665667613555545741354b2f684e592f316e4d5457656f386d5071426f775a4f2f754e445035546f6a356273536a6e7963713073636832504b3261432b4a7537514c3876336b2b657158507159675843326d6370627669344b4f2b496d596d65364279672f755a65453531766f2f343535387264745a6d522b6f764a7364326c553467314537413063354e794732456555537178526a3476327246564b63566c504f4a4d6d7966313036467562473375484a2f4d38713870384d6345324a3550664e47615973366a2b4b6c524d4d6f397a4a796248555875514644472f5059436a4d6b413557776651613552506b5065636433515348593955664f4b3839304e586d766b716336473351737a363674565a72437653617448473377307a676b5575534e446c6342667a3956474c43366f4f4c464e64735430726e3643486c732b55367577657871627a644c5974646e4e73313764616865706d51775a3065782f4a5537542f6d576b67597861763158555a676a3265326351623367327847334f6549753330392f4c44386d2f5178756254365565746e7150346639595a343048682b61363834647a3633615638712b7778614335663446533030742b525167505777646f4d694149796257616156753155645a2f52332f77435553666d6c36655654356e713546344c2b516e696a565045612f55504362343135335448707a326659777a3877386638412f704659726e3673304a694e5a702b476b67706251627a7774374870573571387638493950333976372b37622b4e3335755a75686c34632b6e36546566356841756e302b32744c47316b426d6e794c4974322f484c4d696955624d6c5630386269576d487631317352523742464e507a63477237506653784d383959485278617257433532566169746d3737337670767352534a332f6668596c655071553648663552665558574c5752536962706a57564174393862585a66732f57524f4d32696b33516649694b62584e7a4d39543830636b63685451375a6469434d4646466979594e7931676b51596e336c545748324f69594a484d51767a334e3132553555645765682f657237733279356574707838695a30703458364c597a6a486959313641756f366f655479662b6e7444686830487a4c745474514d5045706d3555395254464d326e6b61376557506c646e7a304c32584a6f6b7330706d75596e2b51595772596871436b5638796a53355659475a4145576e4d354672354d732b56656a562b746f6462566f4e72526d775a5362455349456c303579716336537750626e2f586c685433684c5677782b733734554d2f5a2f31485543375a465a5737354159514442517a482b65416246535a6b476a666f4963656e713444575639464c35525a4d6a34715032594a732b4d3678437562374143354f4f5866433550506f6374726c4767584263323575797572506e6e69715a615453585169477a79324f72336a4b6b4a6b6b664f7045533649544342694f4b2f6b5069453361624b4c6e5a51644a5042314535796553356b394135764b76482f306d786333537049485555574351456b323845776a6e6b53355762476150655772625a6d6743654e6f534e4a4e5656626b7058666b3073707072732b4f636b7445525570507739397176654b654143555476696f6464725631357970355a7546526f5a3871485233503437586b5938716d482f4836416c5a4f6e3469555a714e4c71416c42786d7877526a31466d4f75664c453543386e6d3074624b4a305566305a4e6d49574e68796a766a7a395a6463354257736e4a344652784a42656b6e377a6175642f77426471395a3437514b6b504b5831455861745274744a4f7353624870314d656e344e436851726f75676e3475725171635335564a57415047624e486e783167334c6b6655576a71456e497a713833566e62783972492f6b6c3869356e396c33476938583030506b787057485550794534442b5867716b4150737a746d59373266315057654564516c6c36624e424538654c6d6171732f59693444717552716d7a32444d76384165684f56315356734c59666b35376b494a717665374e446e434e4c464e596c4d54485544707535396e485a5574475a7962557476516c575579776747496d554e745566516f45786e545979783039412b2b6237494348326c4a7650397747774d6c3074645861744d476f46645361466778554a5a2b6f696a58646a7a5a736159584176534631796d6977586a59487775577a2f716c336c494350497669484d2f6a5033696e444a5135457a3641726f552f70616b747450416c54376d7978386a2b6e52795765666f3673396a7672423958346d486176446d376f4448783838342f4662436e593559506e5535314f6c70754648582f6168704a4b676e7a7751764e586e797a6d786a6571456c4d6e6d4e796673765431624f372b67715935545052316b577061394f62546e5376365647376d5a674c6930583352333363645559667a6832442f766f6572346254714e31636e73567a356450672b6e364358617264484538583869753771352f303559723153734f647347637450644b692b4c5070737856712b7776693037484b57715853582f66644f373677683177562f6565764161346555304b7a765450794f4f4a2b595530336a666b446b5a7561752f517169526e722b466465772b4f6e39707a586652574c552b78636e544354367a446e5a55696a5161416669664270355871786c6a5a5168797648596e6a6d542b50524f4463757563395038706d73555830754c79364e6a394b59744943435432474b594371456e39585855694a727845372f4e37623635694d54794a30375a614a327a335877555a4e41523557707a506e317455394b2f4837324f646b39466e666937576c50443936357064457742586136574d546a6f4c703950733351787678567768693149714e436c486a2b7a3271343361727a3254303056772b52614b4346382b57354e577050386872585342657874464634734453633274357a71576e3566714c4b394f63364c5639542f4f4179365376716779764738445a564a5531624f62454762704a545170694a6152793964313074447749476e783161584c557578526a4e3162473275656e482b6f72337a677450796e3159334d50775448386832764b745056335a483465424372576f304d364b4231696d33713972314c58797158575843664b564b746674754e795a442b4d6d566a4556343977366b2b676634624c386238503865772f5654795a6d4270485255765277736a5a6a705a7a5176363761464c64426e794b736f2b396f554f714f61623369594b636e367774616b3872616d62636e487a473157622b4e766f73466362313468364f782f4956445452547072492f72373146484c7a564a4334304d6430685831512f422f69784b364f47426c7a335a65396e7a2f6d4a4733306a394c492f6e572f49796b706d6b6c76454b554d4d7054536362494755485a487776684371644967305434306a6d3754387050365a756a64663850326b55346e3176394d386f64524f4e683579753564333730376b4250793543632f70545445453943314f685a525a382f454b59766c494a69714e69666e533854763775397546687136666d7634722b552b6f4965612f2f4f39354c62356d3579704d32667a445730362f47634a744136733635354d785a547253397675494a6c4f45324a6d53546b6a2f414e78526a70743149726a62796932645077433357797061504439434c794c504c4f46734f68347a767931767656664f765479314a745134766f6f4e794b466778335251435434487a556c374464586469596d5a454a783064786e31537653677252726f38673053596e6c2b556f59686e746f4a624e437779782f3255637063625152417056494158666231687267597231412f6a484a6f724b493735703579766f6b5a5564797453676d6a4762686b365830536a7459314a55396d70702b74303143466a6a634d346e4f4f38575850512f4f7a57397a6356647a6e5672696d6c6e624a4c4d48656e3855557339445a316c76546b74502b75672b2f7466384147714c396d43484555415658525137523972574270536150793563567375595353365a5375562f4e675466747231716b4d574c456a3041443562357842687566774c516a75726a4f303946386f79524d4e554f6252394e614f3963744c395a6c6157646a4d314c45677539735450693435497044344257513862375a695a696377446b6d786b61436265386b6c544c666d4e755a4c33477055694a47774b54526c4c47566e534c2f414b38346d4b566d427556736659536b2b75366b494679364638733258736646436f31465677385a6a7036505a796e35553053546b445673374b4b56773633472f6f474a42576155776a786b5a2f6f4b73322b555872653567573968353268445761626f4b394a55665866793931324b384d732b4c2f367152507042556c716d7a483855373353564e5944367050414f6a344b4b733169434c6b475a576436702f76384163687a636b492b5a744878353750342b3732552f744e504f547a4f62307853342f7743677344786557327945324e73532b5a3656553079587154497746646356303736382b5a3347574349314f34664770426875734e6f5455456c616743496551315869644d643966437a376575656f644b56747a4c333537573676546c576b616859414a716f4b687743436d7463763332664d667976434233557169652b37575a48426e6e66397576575a74354764496d39595231313571394453334a696c68586c7571636f446153656f7a32395373766b6d4a41472f426447506432373678322f4764504a6d306d70705a34767134313079626330527364485a666e734a544a7a7a376c393543532f63353077475a386439706a5174505330426f627339596b756735694d3568383049422f5767424d6d67356f505459464a66714b686f632f33664b5a65354a41774b5241776a4c58476648642b434d456f525137713830724d34374575565a4a6d6f71554467354b6c624c425678684d447648586c30337a744d4b66364448787175612f517442345754636252532f4e52736b614e4278495839616164716d2f497a506e4f4e687258387132382f306a2b767564363734776e48764a6a6230756f7268704e44563874425645745954303070624632786647664c4f7771462f6f6c6455416d523834446a373030474662567549524d452f636b44697634776b746c6c747a3535757439304e4e6f5a62472f61685136506157484f506341722b64334f7161617a49506e6a30796448527a2b5630614e4342756746564d33623665313537526e74526a475633376e4b4d37426c6576716c4a5a4f446954536d566e376134493172324f7a7649575a316134374b73714f58704a6f6c5063446d58572b6f4855676862415337512b5a4c564f533773697841476342427a306f4f5941577177313650304732464e3856503867744b72736a504b6a556d565a547137574f2b744b6533526d587446726d2f5a36306b6a396b50636b4b5444575031752f75716668542b4e7431666a6e6e5071577533566c55542f4a355048494c393756776f67765a465033657a55352f736857746c432b2b306e652f69706a4e5852556f67647254513162786d4b6a6d72354c2f386f622f74324938675572787a5239582f4143764a693543756e597a764674654c4b74317974584736584d6d71636f796c356d33554e344b56704d783661534d55687a727434396931735974694a47392f343766335050776a2f4a6679653650306a39585a6b62326a7833772b5065595a392f68573570557866586b6954564e654b5475397a7663767038723968723076594f6279676763574e3944567032713448547264354970524b2b304b71655a74494a74564c3959615a697948524b376f4e5a51494a4871324a486a574172696c4257582b482b625859697471553259355775596b5664325a46766d645163334a676a543165564f457439524d59763430326154584b354342742f783537477164576251793856795577374d4e7069452f6b6b6868586b3053453758593057524f6d664c6375327775772f4a554968487765467a70774564416d5842354f4675566c564c627a694f384b632b534a6b642b71474d64314d4831307a50742b6750632f744e5879667476772b32644b65443744635873634652364c672f6c445a5a4a78756a57737237757654724a3034745050463373586e35467452474a4f3535416b41663769464a7a4730357152723677672f654b74356f5678743071776337517368707546595a6e307774707175756e70682f553350755a76484d4e5a5041506d63305073413772752f4e774766725478513471754b55576446484e71614c714e4a79595635704b55364b4e576b61566336554c2f77434c6a35522b2b764c76316a41586d644e4164745474514f586b5039796a306b394c6479757279547a7677764b7870744f6c5a71386c387466465274366b485271484c30474d7a4b76354451697354374a6c48777744745038416763356f4f776435306254484367315839632f37746634746572336d48674f76463576704a50775831415652355038412b49796e766f6a79346c4e6e6e3039485672495a556a394e4c4f544c4b686e4675644e4e314c716e4c39756c665a745373576a6277734e716276376b2f774350767231354a3650654d656d506c736568484e35586d65366e5275386748585658336d6868775a6345396b737453745a6a73756f695578414f367950396d77367573482b732f63616c4b326d3152316833764a46626562515374575732524c332b324932344b7448756c7a54437349334c4e623073636d374e6e5837564c3978744d486359414c754e584d496658735a47657539444a557067532b694239435439307a315a356c32627177536352734656464264352b75316743544473376a70442b70694a6e7047524a4e5773562b412b534f4c6c6a57793962514e5250554d6f544d795a3749674a3144486f586f41686c53674b734b534473314956756f61664575674b654a353575787358527063364b545178634a636b78556c316a4c646e4a43765452324753554f4f6f6248484777567637306a4378783149574d314a45466d43344d31564850634b326f6a706b564630586b732f71334a6348763570434b49364f5545336e55314f4e6f4143614b4f725452396d634e485079432f6c673166546d484a615567332b6f6d6354366579754f496f596c6479565673586b4f375063516661575874704c3363583771426e72496c755470544733557a34437774686c6a664d50547869412f6a4434464c2b75734565775a646a6535377374316c717442736a72445851507942557852736e636439503763316b7a6f7230763876376a617046505a5a32795331424d713666744d53376b477953657533673136464b627339684b6e785159367069545a7a6f42784a4d2b492f65732f366f507a507673356e4c7152384c4c655441627443594c705674724f57594142306e796b444f70476c493959355969344b556d314a6d522f30464c6d79707672655758797a50726f4430377a7466756533496565677636506b6636443746556b4b7a6a6a58394d75697367645550373551326348476b6137664239663045412f494f7937767168364d706c69625441633461716b535361597256516932474a73637975763678626c704c347a2b42496d4a2b355667635363744b5a72307638414c2b3475337a7a556e7a504738536a564970366b36456e304f74597852792f7151582f727648726f6644437069694834324e54784d77495677586e78774e72455a6d49385179394c31735164644c45515a424e56456f357671585241756d527270757a7770305339767a464c557a767545563043315076712f58554b2b47424d39354e61366233726a7655566e415573524e622f414a55756f39333053307245725a4c524b784b586878662b5a2f366e744546396378494571382b564d3869654a5737692b614b754c5530552b316665734c5378323141506572464a4d4975316f547a6e7641302f4a78686a2f5147453645763865756d35344a544d476f7174763762504e4d6e6b2b6735612b66592b7345342f576e683537474173666b796d6837576a33703844544c633955634762747365466d32616830617977587856336a304d306562617361326a797666457143585a485063434f72496d5545424a4e4d2f7a74754338556e76344366656e33727234656d636376796e4d3050454b75416e556c66576e534c4f7158706f4b39536c6256362b79737a7168714c324d542f733754386954346f652b784d54536573637776694f3648724f426b573973676e7a2b4433576b5a6d726973706367577975747a4163512f654e4b69446f2f7054676d4e2f73452f38464c7143456c4b6c7571716d377a4a52615877653079354e7a6b5470307447706347313866746f464f7044784b6d41366564667941416336497459424e4e65783135502b383669615242576d786d71665a754d37564f356e7950345852483969496d7276776d30552b3335533933514977495575614c6f4a3030417a37596e512b7a68336d346e364a2f456d35774659424b59645657613769716555476673636c784b53537a3441676d2f35496f6a6b56534b596d466f544d6b3751725863716a4e6d7052783361476534657a787259685a396150774f2f774146473263507267753871694f6c594f42377057535778486e6975727470782f56583264566d6f366272474d482b4e597053584c4175427876512b78516d73774c7a566f7a414e6f79495231556b6662547153786e37355865787638614b33665a364d2f5530536b434f6464554c44416d7134343370454931354b6247526e31317564506278437441317a394d4a35654d51356b67554a354b5175576c4e556a425233695270564e2f75706d49696277426b58367959454a345267795a4c5364334d71706866502b786e595448493451653550616c7a382b562f4435514873364b6a396e732f7031487a45386767386235796a62624e34784e775750684b3355716958494c4b74493755315070594c534a4c46734e71766b49422f774133394d6a53446c5250487047346166344835322f6937766572666d336f362f3164384b68386c3857576c377152386a7a30786171747a6b61506d6e3071304b6d2b71646a4f4c46516d645036414875456659586636306e533159725732337444644c4b736d335965362b6671786157453057555975396a4d592b47764e6c656c636631715970532b77733772673452425170775477544b6359726638416f4b426153704c3435435a564d50617079346245576a6c314c675456564741767a3269546873586e6c524f66763672767453516d5058416b67435163676d56334f7a58694849364f49705a4f31664a4639366835554e4a2f455a504459376c56446d467a6e4441676d4946664f4a6b6658587a44644451626c4e516a3333324d5a65517830576b44744267392b71645075375052332b534f78615638627754543269565174427843484143687679522f4962777a385876525431443965505550526c6d38423950384e2b38785357413575725666517554507a633251456f62563546565655745561356c7562386a6d47545841667a646d6c5a766174593756683463667a5a2f7573656f33357962324c692b4635584d6a785645724b5a63444350526a526b384c5553364b567373477032657a57664c6b2f706f4579654f6b2b4f524d4d34584e4d2f55307443756c475a476763766c5072726b2b47342f504950414e6a794878665233646d366a617a426146634b713566722b50547a5a326238444c73316d664a6f63454358397a6c444c4a6c50414f4f392b754b543075435376552b6d6b737a797278772f49636e79544d706379334630516b77364d4c577964426d574d3145446f357572716f334e4b695839493435557a74574e792f6b5170522f3147325a6e6250444933702f4850384175512b636569506c4d76716c6a6554613931582f414a4870517a2b6e6431614565485834396a364e485869646e794d6d524f4c43456c79366631616b39366f762f68436661565a333049764733376a322f77443478666b6434482b566e70506c657133704e72523151506638577a343959654a396e785454346b584c777a374863794964446c6a556b3161797055354e4a2f443178667272764d7657644f323233435273566e754c714e6a3455714b366933354c426f792b76374c315772644c417a52397647492b525256576446712f69736373314f3537765a375271423530364837504f6c36702f77412f33386f516e585751384765394c6b5330676267375271424c6d316436662b3050313849396f534c52726142666c543136585a4773374631542b66735a556e4d6c717a762b2b5770533232672b4b6f6238616b63582b7961726c3666313750306e32312b4436666f424471464455317646712f3535786976354d4f746f5448326c3179496c6f4853594d4a64594d5377614b786372332f63412f6850332f77425744754971474f436a50396f4c494e6f612b77707453592b31715971716d79766b4e51314c634d7131743737656d354a2f37452f376d45483533655075352f4952765955394846507237494a636456525779356869767072646d32644b4d6e2b774f41755a786d546a5530514373504a522f65612f75472b52656f48716635462b4b6e704872767766537630333256352f724a666c785a7446666b486d755057705566676376616d646b745438695a655449345074566f6e49544f4946684a71372f5a7447497237793357335a4841377954314238466f3850386b4478354d55506d5139706a616e5335342b4c457531644b624575737a6c7377364e425939716c57665430452f464c377774506978624e535056465a6d637a77714e48352f4376794a3954664f31772b4f654b2b636566614f616e54305656356d545864713259794b53305a36583064476774437761476131514d486a724a2b5830566e537078734d6463317248486c48337a487954386d66527a596e7876502b2b5259486b453647612f7733784f693042666f7673494851412b554678726e594d356b6e6853776d36424a6744665a387934694b57343134676834642b52337146365a655a352f7158346c3542702b6e2f715434705650354a346a355a347232776b5a75316d75596b2b484657535572797a7a3943575871584c54776c57442f72487334544a6d6152614e7338305738522f544a2f416e38744d7a383150784a39462f77416c4d4e4b4d725639524d33536e3832784d6658696e444d3868787139444f386b78356b4b587971557039526657382f635875414b557634735a33382f5869616d6e4f6c71577050536f327230506d306f5a335856413562614373473333352b645a6456515a4c475367356275635a5a3149736c536677644f57732f6b2b55476762473044534b354d303331706f56744146535138516d74624d6c51382f6b6c79716266537462464f365645496674524e702b4d326d3556417a7a75494a766e76362f4a5277755255724637614f484976716f367036436f2b4a6b542f354c35675946487a6637536277756663364a633462556c4f4171643937364e434f6850773164494a6e307535706d315330645658774f742b317a744562424a732f5336774f435342427a4153524c45424f2f774171366c64632b68524e3263717a7a383842623849665951576e484f6f4b4451696467752b30744879385453447a4d2b676e6f415a756738636e392f6e38752f566e316d3953752f32362f774159737a5238736269346d58726576486a3367304474552b614f7555746b6e68336c495a30744c38394945557458554e3448316a315a77544f746f4253586f657836646131393966384137647735322f6a662f5a4239582f4e2f47637a79663143337362775770334a7263764d4656396c4b5a6156637a34486e783654426c464b5679425047566d6a6f30666337476150732f433575392f6171784f496e634e754d6e2b78353448345867717239537655765a7255674a376634666c536d36435731614332364f3454437a5164635a536952547251583077563432306761327633424e6c507456706e6c714b3239542f374d2f6f316339574c34743558354a36586558787a357159744c466e784e50486e75305a50306e366934366f32754c7338614255786c5062424c324b6237306d505a357237546250476d366f3666663246767a64395563767a627a7a2b33642b53666e574c712b55656e4547717a306532624b4c33366e6b2b66342f7238376245624b386b44326f5935592f314f4c523478716741416c43674150755074656c57597272557232756f395639764a2b71504f576935553067546b434b2b324c6136383642346f7739376a3737317335375136314a43314b4359706f7a6e786e654941486733684e726e356f4369626856564c7434744c426248396f6f6d4d655352577452464b4c425877502b43534275396745386843483263617a7463304543527035634a316f596456644f6c3732456c6b325a6541794e6a6e352f6b452f774167396e4d36514e37654d41412f6f4b41395876536e5938706d7a664a66446436315071313446426333426a555a683478357266542f414a426c61694f4a6150584f73576c4b753054423050732f4e4e2f3241566f6861746f6a685053524b505266313777664d344f59576932664a38357a4c364d4c5a683042626d3646756a6c726c687579316f3055724571444369356b763745564b4776324878386645313078616b786e3849324d7475555a79554e4f47616b2b6a32626c6c536130666355304f396a6a30626143663768306952776c69624a444744324f4e49474a6472694d593768576276614e7a765a6b707265647445716d69395662722b707359307037487371344c6f36476b705875596c796d384165744d4146504a70433261686c55694f63645278484f5732307263686d616837366c543967497a43666746477966537447516c417a6e4f67723930453576474e4258314138323855394a7642664b5055507a5051707a66462f45737a54322f4b6446386d64642f7743685a6b305a736a77516753395032474c53342b797a746130517039787262776758314554613052486550357950397a5038362f557a2b344436792b542b5236766b447337305a38536274512b4465416f33644c6d50346e6d3550463470374661346b726c31764d716f6634716f2f6d5630356f3433634b6c615a6c3164396e5130713656635232687a5a756f536a786d7a5632666d666a382b74687868507035306664364c4b314e62506f30783049474d4a6156506456543851476178375944756c374767336d34666438597a4e5047536e4d53376a5a3561555931797458543037535a42734a3034426a584777654e2b617259726b4e4c46442f6d75527a654b6d6d575a4241665076472f4966456462546c686e44526d61655a6572616d784365314335755a7373575a32657970335271364e7361313935384e49663466622b3234306e494739663447666e44756669463537672b576549345453317648366f73326b47485830504e4d46703471646a78696c6e32754c3073716a376d6732566a684e306249316e4961752b79354757727052717869522f524b2f4566387050546e38792f517242396166545454632f48386c79594e47364c366b2b59334438686b73546c37506976616c5555746c2b6b6b6d4d6f57672b2f77437033432b5a7055734e6e6a366d6e6253764e62445a36716a654e495a342f62426f524e6d55716c6e5130554575354c594c592b526b31384534724b633349357953673278744155752b45415a5152796c5a536f4a4b744c51586f4e6e7230484472396b486c466d614e6b576e303532705777583862384a68514264456c2f57706e2b326255676f475646476a554b4d7a6c4b366339454e516342634c394c73316d58544e6e7a44657469324d5851563779347166676b33335466574435666c6f396f59767a6b4e75684636706b4f6d61746a4f35784a726a655447322f796b7a3650494931694c4a56314a73347a39414453306c6d6c376e6357545131622f496a38682f465052727879514e72794878667879523162706b575052466c4e302b556e30446a7a6c752b5033584d3363747872636962336f39697746797a3778516155704e706a484d50487a2f64422f755162337156357638412b50656c4638564b494738342f58672b472b3779752f6e62416875707a6377757a6a3843386651545238644a41626a6f703471674a456c4e364f686f37597a59637870725044764c346448523958742f797a79642f6b4f484a522f4335577a7366633863304331574641366a546e7363466a426875754f64583265704467473454704d5155472b323054796969592b3433705a35426e574b54727955773631515a557957684c757a4f656136733753354d6837357057644c557358316257712f363354546138456d6a32333678345a675846345a345a35387a7a504b387238683857565446597068346238466b42386c3735467064323470712f344f376c4f536c744658374b4469536f52795948304f554b714571706131647549473652666b623667656a486b2f682b6c342b7a4f783563706b473935304f784f6d78303735664a46366e6a534a64584c4b796137536e557a61464179634a6870644d72767a43594a44503364625262493961763466666d6c34622b5333676e69596147376c512b5a483437686153734a56317164565a6f756a7a3548555034762f414f6c2b53786941392b3642554b41444f6d672f6336627a3954526d6b39635647386e4a70683533476d616b425a54587770344b65355557736d542f414e4e7461327a4e755a54564356446f6952783079666b2b49445a6332386b7a757733546e64336a5833386b767a642f4762385050466c65536575507142685141356e4a5a4f5a4545336c477a754f476e3775766d5235654376336154487a334f494b4b56546647614a7161774d762f414b5630706f33315a785775427a61386b2f76792b674a654a61766c6e70543654657348714e7173422b4c6752626d617a4e4371784b435671574b6f71314e4e386566383062685a49624b2f3956494172674c34596e7648736438346d38514e462f4476377450726c70376c65313670656b76673262365a614d326671426b2b4f75335a664c4956426f706f637877612b3850616c2f7870436d6f4f7a4144552f774341714c346c6947732b7a313656767a534a6236582f415079676a303552366d52516265465a6865472b5131662b50624f34644f726f6e6b786c57795a47684467365879386f496f3366744b422b684d6a346669424271365148462f5a4c5448446d734f376e6b6e6d6e676e7133366659766e58672f6b4e766c76676577776b7a62656472654f356562506f637838386549306375746e65522f567a59366d4b622b707250666c4a346441666f6e4479316a5a6262504c5951584464754932705544663856736572524d63617443625046763631746a46313377393634563153766a7a5846543145716955582f714a6838535a676259625759565539574a316c7361614b4a617777307a535a396b46517931383247534b33303574424f5a47636f684e78526454475a6e38333271554e583962472f616b5a4e7a30366c555a6462544d367445304837594831653032696c77484b4e486271556a37394265572b69586b694a7332644269346e476c424b3242374d32632f563131323171583979614b757761346245337141473743565448513156694656526757684b4253574955704b35756837307250356a78745845524f524a4d6358396e3669797463356d302b30546f794f7a35306a62494636506450724f4f482b4c6e706e7a2f627770794a3379332f4144456c707054307169513865575a4f6d546e38617477424e557056756b6c6533532b76426f7a78794e61566b4a647375566d69583657306a464a682b75745067716341454f307a76717a547068306b39373862474d64375a706e315373707a5a486642556b2f7169704c42594a65326c73365863564d487455705039415a6a6c555a2f47704c324c7159375272625a72304e3555384b614c6d4e4530327343706e7836584747527a66436c30337975623171516c41445179486f364a675a706547666f4b5965636f6c355666573747716e52302b4d697158476d7963334a71367676784f42696b304e61644c70762b304265437a756a6f644a77756179375161533762496941766c6e6e4d4a492b396c5773614a584a5a37515a3154654c4a50532b4565384b5a515453455730447a4f6c5359566436696e5446374855424f6c544c6e555a482b736c6658577178446863582b34526e41456a302f5a4f5839424d58636d414a716c494e6e2b6d6c614b66305574354d48704e4a734848796b6c6467764772396334306b674272396e76614b6a54586e3876754345674e4c74444563595331766d667869716c745a617451706379756e737a5a775776736338593945572b78796b70635a735933725857436b39723576677355456b4b6a696f39326f7a3231554b4e6235387748754f755076743972462f735672365a2b774f662f6545534146704b6a523968564347664f6a70632b41657035795871584a51304c76714352513839776b4c6d4178707a71672f66744d4539456778415843693142424b774249567a424f75644f664941716a564b523243532b72587964626a55594d2b45522b623948333543346f45685a505049544b64594764705663766e4766585779715a6846376a3738396a653245783134677a6f39554a473466326255385130383764323337663842693253545134704930433878574d30785463483635494c51576d5a7376535a774c4a542b4f6b562b387a5035725242706a4a377a4c514d34354c6b4252784465495330496e2f586e49373736714b587a776d345359746f706e48334e4c706f466652434e7679724439434a41675235624833763472735459776f373961646136733974534f7a4b62704334716843716f357845556348324d393833764c706744674f76503566634a38672b4c492f6a382f3841364b6b7343686d67435647392b72796b54367378542b766871466135657a63507175645548486d37326b42726e68327649436f5938394577536145683874704d75302f4a613949304367666c42696b72486f756c39704c4439634250745653496a7877436c7a34352f4c376a37547770506d327674753552474c564b6f6f6a706170786a786350574e6b427847355953357175394d452b2f68687868306c3741393168384e5354597968446e66714e56527853324c4e5142523873745a507435775679522f45504c4f6b585655424f556175713933744258416376706e30755a4e416a326d4a786d354837362b65524b3136417a6c79745576784550794a5a374454785938346166383265326a686d44764b6c7337556e74426a52617747732f62626147765a4c485264325050512f337a45516779366f422f51644d4363736e394c3270614e62396d5169524531684778362f7348485a51716358397a61523667452f477132376b33546c59784a554b2b5a4842562b77754d54425832415659506a6b41514d7873716678336442644c6142353373366c304337733331756b75744b5730664a37776e372b2b4d6a4e6c4175633477495071353839537058746d4d4c326459357831742b526b7135616d4d6536416e4f6d474e3543786a4763563861536237654550735431584b382f6c397776326d6c62796249316a6742534b474a3739626b6148385a504a47394c652f735a534c5071535a4350536f352f6b50364870724572446a4c2f6657386d7338632f425275776c69584f583673656d32594d316263306a59476e7246485335532f6b5133516f615038683336712f736439307a55694166707a45376579526e5678317a55655454453951633759433179394751397658784b62355a4e414d74756c752f2b51376d5767325361477875504b5734626f376e2f70517a7941546c615241444f36734a6568737248634c557a50487433795753487854787774576c326875632f672f4563384c747035565939596d37766368576579646d663355584a5149534a716576367a5a435861446742565a6d49744d794f35583476666968346236467879657133724a6c35336c6e71594c366e2b46654b37756f463250343162555572566e6f516d78795761537634356a47632b347054666f434465392b42616f4f572b7061334c586c72417350597a5049504f394d717139397474306d5651764f776358546d72736d64714b795a714a327a764968795a564371676b744f3332667653536e35782f314b645552732f484f547a695a4d5849424644743435777876526f61485a62733262737363695639437a57353771432b36382b696d756b6c314d2b762f41504743652b4a2b445a6d4b4e4d4767324263457868567a6c644149547a4e7564486b6955316c454c335a76795178725973314770585463342f714f542b307044594c4d385779376e2f79544a2f63586c436464395768796252636e555979315a777a73417442712f77435558387a4f4c5531344a5a37474c4e377763345531333138515962346f485a366d784c72633257766237447831722b3667535532706d5368694d2b366f37452f526f636c616c38502f414c414f6b4e3475374d70626658784543386e7a4130464e685451637447397954714e5771723244526b646a792b6f4d745542503757743950537a5a317955427a324734767265356f53716f734d372f4150776d67305756617056737452313636347045584a48675668484d744c632b4e747053756e6f4a38796b43615871704752784f5132644b514d2b6b57546b322b533469786a304e4e364971724e5054354e786e4d703474684e764e4b642b436976342f70353865694b58495344507630664e787755506f2f716c3578487a456f3833382f4865386b79753151646b717736624d4b576659636148794f665867356b6a6d38557846453653594d4a71673473374642786a3038753739734a565932784d7a3145646d30777a64566b69514f6d364b76546c72754c4d30575034456646786352333747543257724f64324d3264706f747351663030703477356d5679726e3450702b677475547930564a5533556c32326d4b6c55574f33354f565a537530365361615a455875497873597461324a5979646136533937505963776e315a5a3763396e6a41556f33453245694b6e5045644c505772685439525a51444d4f7a72632f765831633042485153372b505975582f7347715867473258336d6c5970624c654170587a6e7a4c656f6372424450547054353636655a47585162377a5a565a5a37675671325a32386a354c6e2f523167563051396832544b706d2f77426c4465775872577657424a76455042744275677a563054793577567374664b43474f4a6958624d616450517a6235545a615759777950505935504a2f686a2f36346d464b7a4a366c356a457833794c4f796370666c45716a6e76786c772b4f64647762706e737451334c6372516e4d45796e302b4a64796f695548474a50674c2b666a6751714a55794d34744d644251667256366d5948693046336950687677563132784d50794c656e51796c756e342f31756b4a716f314b5072325757476c667a6b5a3936726c414c367850614170765665745a7a7573495a674774656c4c71646731656c2b35346b53736b614f696d703950382f684976524439386b3238525a6370344b346d72354c5065776a2b79524930467576757838326d526a63614f7946317269647734594a333655515a454e425174717969584f766936717373316e30517a616172314361307439375036727774486b41336a775455335032354b4d3972383268374f4562796d716e5654546d316650664d444f4f6e482b53306d4d6167715671482f41474b7273536c796a4a626a7939386a597a50386b447837786b375870692b2f727a4e4c6175314e4468795466446d4f5a7854507279675766556456592f632f584f4a502f7742534d31694a3155315a52457a4f4947596573474c4e5a6d304a78497259344d3675746878304539334c38744f664671486f43596f5a51553636766b5a316f5276416663306c71647838333954737434444c7a48314e33724f353132664c2b2b7343786e4a776d6a7070306e566f737255773473394a47354e4f67374c6c577a6768705446704f6654376a4e5954713133642b4d4350483673655135696f523074315a6966374f694e634477545579584d6e5a32714f696134584d63744b31394648752b7051656b48486c5150444d62653738772f74387338576a6259736f383668475a452b377333794a2f64644f4b575439376e4b615065544b6b325854716e344b6742504575493343626a4e314d5434534732497169394b717563713053375252505a33533633724d2b376b75564f36587647782f774463542f4772713636682f584f42466875524d344170624c4169473574305a7a614d346b624f6956394133314a7a70455979503549343430306f5a39746c354f73352f6b6647467a74456e3865367632444d664c35744b56365779506c766e4f68573268614b717274576164662b7263736d4270667832674d694a6c7642504271612b677035424f7333484f367a32504a7646554b4b757933674b366435337658566e6e41755267384852386676444c6b35566e755735685a73414d7530574d4b657a68334655796a67506e634e365743476933374454306974613851786d32446d5855374f316b684e5038447474535035437a795450526b3864705a4f59464e3742355a44387a70567255433175583745787163504f6b5a57413550714e35466e7562484a3546524c6e5658563155636f6c6d6371444e794e474636526a4753676d665852436c79546b5a37516e5534672b435a413255757273723443376645765657754b4c6130744d377173765859664666794576794d654b73757a746a693149376e2f4147495a634f6833666a4c3944305164476f544c696b4b7a6d6b784d52484849387148356b6157596e7a3731686e6e6365616a55387a3070704539566f5166756a477632503439434531616a6f394a62766b73624e503841396d65386f4c6c6a7968687a736d394c53374565753642772b3966644b506c4d6a74525961587733634d626331316d63725a466d344f5a6b6736574b57523637757530724f444e4c5433686c742f797276727a68496c5054534f457a485752373666774a786530656a3249796a657a653530766a666a4b4664776b554a7730646f794f5a5173524435425153335638305349434c69684d3273443750564a4a45306e6b613361396551364b534f72624c526c4b505034327953666c777a48436c2f7741314368575564484830456b6947574666324743433942487355597049452f4376455938326e58576d53365a2b396771716e597576515a50322b69397934354f413636666770582f48357458657075507042793832634a30667551414567736f2b744e486f4d5a65627870456334645672456f6f666f56546a2f41436c38383548396a2b4d7132574558362b4a546e42393450714b2b79414f55555a597a50354f2f2b516c4276442b316e5769624a324f6b754173736a56384b317245536834546661424b492f65644c6e5564556f44334f736e4257617268336a4171585241796f34373937712f6f67305a364f4c554d383750764c396a69372b675035435a7a3479414442675650653935597533623475666b784b584c587a324230422b4f464d794c786d355255485264772f68365a2f4d37767a4d4d52495036424539436c634c7162726b7657764e5637564c4d2b79755a4e524243792b614c522b7541724a6d574a537244354245744c3461484678332b4145737941446f47306b61535135575335435864566e7153594a68306e67505163484f4d58384c674869567246796b6e3869533642437348364f7a3356544e684775564a6b35717543444b6136714c334c686631467661694a6c483868476c6e4f766f41574e5332796b52443238614356624a595235486f6435444762304653716636326a52526b7831664458424953484d4f657743694a665346667a45456666596f43593865676a7a58557a6f756953304b75414d4457742b464858393563585a533672356c6b6d72324d4e684b53736853646a707a57616e536530483457644a6a37632f7647576f65626e47456d6779326f455553393755685170436470664d57537634445637693553486661495063332b6764684153694e5931466e64354639474765585273717a366c73666e396b56304c3347624766546e3978416e6e76657939706e384964497a424f687159317735754e6d4e3432557163386137497135356e5446483772414d6e79386456442f4835382f667349562b766d2b49486443616a355567626d51713252472f705272546238367256395379796953617446476b3631695167584d6632445a5578505748376e472b2f7150614b542b4936394f577657414a75746e792f634b45733750677a31304f59356457503772703075614c2f7638486a364257756a6845597236315831766d634a4335546c32362b595a786231752f524f35554336696e66393978486d51384d77753754666f305454727146715a57704770585a2f326250306b766c2f524f4e517845524851465134736834467a4a327356336e316f6555783079694c424b625252706b5536326a6e676b5854533958336e787563372f4f672b65344a456e376437477a633159347669474a616570304a316f3549785954746e5372764538706f37374b4b784a6e514652636e44763644704c393461736b474b3571576733577a6f546e51476c593146497773664c776d507a50713035356a384c43544b326d616934514d544d4f7a4a39357136447971724d572b4d70394865546f62456e317756416c55505970387935644b4966322b636c6c4b6a514b5565306435324769466c426d722f684c75674c30614f305a32704a315053505058554b5a71734e6c62766a5a576e4c5138316f37537572514f35644831773731537846496949387146686630474e6f54444c705846524e6c6938446e58396b6f525a6c367541333563704d4d542b4f4e7a45664a64384c51416a374e5a775454787337514d4a577567644664557333644873755a7750656c6236326b396c4d5252664e4e2f324f67746b784d4677724e4277734c72657a476837543441435853484e7a32516a5a526d2f5051587a6267556a484b34637a6b385648514663343166496d5777656342497563566e766351753432795943554c655355522f53714f384a396558354b4672793279644432752b656c3053474c4b585562376c684f7570624b51503678744c3451494f416f796d734971705179326530455654742b7a484870746b464757756a725755735333746b4c7859536a665142642f5562684969424b7a61445a31496f6f67617271716d707a4b752f65363945434364326f636b2b6f3744516f6d54396f5a63694a5a43356e506f4b6c64377a4e7a54444a6a7a4b7171764c6642784d6d63537244304c305253464e637550364b52706c532f36733877736333346a555a72626d675855744e6b774e42446e765533553173345a55797a36413075497135566350716c7768576a525444714852395873615668554579303839674746644c6753616e4258486c54516672564d687151797a714e4b537a376d6248784b77316f314f68686d766e304f4f304d6671644356585a68516466464d3539684b5676344b675a6e636736376156706e6c705939707a7031326c304f4c313233546454506d56547a417555484a71513173442f30394a303971583963765977434b6357345636564d494f577668624764706e6a6c7163797165546a4b637277724a4b32615355797a4f57464465665a41306d416d346736395148394352334c2f2b38336a74504b482b53726d6b35585433585a69756c505235597453567268474b51556f377757394a4b624a5666593452746d59456f6c41473879364e656175645765516f5271646f3547756b37497338544e54565a2f4a334d376d32616e543778516748666b577365384832704438347a4d61364b7257353167634e456c42524150536342575471422f61595458505a33366c795a2b2f45336e6659546669537066762f414b446d7a2b666d6e5869666a6236712f433144315a576a6c32302f49786564565a4b4770484e705a446f634e73334e5378554d4d66314461437a6f4e494d576c50324f586631746f386453736557427742386c7430554f4c507475727a5a6a38637258494f697a744d746b7463306561626b417861755a2f7743726668733479654e50756450534831364a4455334e366731506573696e5a627575564d6c2b5747584a506a6d57794c633031664a646844524235465057754e4f4c4e6c7030472f42596d595075696e4f6230427261784d3949794f6b76707a35584e71654934462b6a586f62576c2f4743697172446e7976705a777a4e6359716c6a72584279566633412f374b2f59744c48476b4f6d6162357a666a654d5435534a2b646e4b4545436556777942526d566342586a636b6c4d3355485a6e49466b34334f434e77576371486e54524833733831484754396945786455534878377754533363666a7564375a61796248376e74445271732f6b344f5a656e44586171476e51344e452f794a4561757a2f4d4d357048745561557a6d30414d586569586d6d5041357064796b53783951416d7162734b34797265353844704b6c2b3166636c376d2b3447733437374b72337875536145385949445a50434e7078575a3145314647576559584c7647644e4b707266676c524f4e4f77705337446f5758324a586450393876364e46507a6f2b5a34644649664d7678652b73314d3170484e454c70595378465a376a4d7634756c31565347367070702b484a437a4a6e2f5555664b684549474c554d6e2b6871516e7a6654704537515447364876797a567a37444761656a332b64647153352f563330316c2f3138314c666b5457756676444c6f552b3855556950772f30466433654a65515150626f71706c3558567844714f7838574d7578714b52556b713332506343724e4c74457558514b55453578317049302f4d746e7a4e44376b63564b514d366f38772f7241796b48555373707075386c6d463949305530574e596c4a456c68445037692b51673553633666734a56304b67327649356972624c796235575a6a746254527a4f316a314a6d584639644c647a586d4b4e7a5531416c4b574f34512f37446336576a3641756c6a6f7457753735514e30667774394f34396a79442f357a664d4d73322b4c654b6f43754b46537a354e70617a72507653314f46794a6f4b7149312f4d4a664b30315a62306d4876556f50386161747352736a6f4c2f38415648386d3062666c377069786a322b3573354e794c7a557a755a4c51436143733553377158304f424f654d72587a5472364a55787a4a70486e763841594e49303478786e694a356a364d323550474c625a6146614b5452476c562f4c45354a436d4854355444484e4b316a70567247376763364b52736a42674833366e76345662563234343579414e6c7638466b62364e464f58385550547653556e4c7453624e36362b672b36422f577a36797573584355626a49577157704c6a464b307a386336713165624f376a6755353537357467396b5a79316c517833352f3834372f41413035575362474e4776556d3738505863717548357176683435726a3754316a614361536552756c76455248534255534d4457386a4f4858324f324c3475714a6c4647626f6446476e4773626c31642f774368433635666a3430664a374f2f47395a6643516444356764394f52754a34483666614452356c77536c466c64726e58322b66533532442f4251315431306a477367614e32625a2b717245653077454136612f66543261665066343147314f5036612b4c65504d5838756668323153715843564e6778426e5a50495873422f7742434e51636f756f363236722f4d2b307457716c4e46544547306958535a6d65736953626e69307577784f74347a614762355a6e7a4e544c586d6f75544e65385a68766c6a737947536c3969515a593566692f774332332f44334e6a4a5369353071784f4f765a67446275654e2b5935756a36622b72336a32567263324d392b4d302f684b664e714775566651356e4972684d32722b48515730414476372b58323945656530506650474a7a485563695079632f4537572f4834647262794a747a5a394b4e4c5461764772473269765a7a47486238584d36384b6c2f4644476376386f6b6d4f6e456b7036734b79493342386d39645466776d4f635574346e736542612f4a704e513663326962557234493566372b6f575a5172552f6a6538354f75526f6a7a3354707a766b6f516c79633149664545394c6862497676786e463950397a566b386b576b4a33386a70745646633656775753486a4a3349412b31724e544c566f4c68732b7a316767497a545747426f6c446739613478774633776173456d47334b6e7179382b4f7674734848706e7a65615447316b6e6b38364c7376765632663662616e66382f45686b2b3841444e4b6673536975336d3342767a557a74544a7a47664d4a4253477054553335586a4d6a6a2f73537257765176716b58423875626c694939396b664143424d303948794c61523245513338665a364258797879593573552f6b37516d4e65342b504e7a6b715a784f586b66594757714b6347456e765253396676694a6f642b70547873526a7545643861777555757668646f5533304e3346736f62506e5043315a47784f6c502b704e456848634b50327255684b56752b5362562b51444d422b6d4d6737732b6d766839756a4d4675545a6f5a786330744564624b577839434a78687753714b6d6171674f52794e6e4a776b396f75446866494530387966634152575a6d496d656f5332764d4d4c78736156352b5154745238386d76646f716e35506f616b566970613747426e30756c55374e7031422b7531526d35344a396e54392f30692b6f6d4d786a7846446233714c565a74305463726b30474b4c51526b5a72484b4436476c5259326565674c3058496b716f5452445631564b2b75726f4148702b5135357a563252437266504f36374c346379575a52692b664f4e7a74585a375654567238793173414d314e41316c6e392b75494d397257544a556c537669705174505951696b766d7432454f6c6c324f706d726f59484a7877706d50384134785038676d764c3973375639566f616a4b4957444f716a74536746376c4c366b55317a6862624e7379476f2b525632304a596d754451736f357333557761516b71396e454e2b386b35645473784f5735566c7131667670437635644967563848734170327933674e6d504150552b6a5738593138366d6c486a745569724b35557674716b4533324b7a78476c6e576b39712f66377333357553744e2f77417632717837574858683273786965505742775838726b48553833386a58497131796e626579676375786d69784133366b363532533532786335543936695769686f2f4a7a503935706a6a644e65687934337a64635469732b4d794f652f397a6864432f545077504a587879437338375256714b6962384f5a726e5077674a5064487468544a316a304e437a325139372f716a6a485162386966703242726f544f36316877352f6869765936534a7059353952504c777451357a2b487051776d334f5936646a6661533875684a2f4b6151503541574c534e33473948716930786e486550687976686372554b567857533966324f7a6b2f566f72702b52773941355a33412b45656b7537346c72483566696d34626b3842507a4b6a6a32664d466a78547275714675767758746247464c65533342486c536e7866424630316679674d4a462f4a4a5a313665546946544b432b776c702f754151354a785a613057673769415569476e3230706a55314174594a2f4b4c752f7469595637436c3855596d6177434e69336d734f6936774d6461585866327a4d726b6f4b4f4c68304d5633353656414d5a724b75643452696742537431692b455857385633352b4c596267522b70706a4f5978314676666a4e3570762b456572336a52654d37476a6b36575a637953507950496f707a415a544f64533578376241744c575a4b4e43556d75575658732b464a4b6d6d3658776b646453496d6b5a372f2f41464139555034512b76507262702b75666f7a36645038414f764b6476782f7a667a476e59644a3554354369396835516e55684f686e5a694f556475734d55615a50584137504b462f77426d79342f32527a6f3464576c646c72626337665872366a316235375865375142737970304b674445666d4e7566564f2b64575a504c3874476f6d7a35444b616f6844322f6f327a747334544b666439595a764f454439524f4971324e46506173574275544a2b2f31542f4558335358353465506e464a5367726b66587352384c2b70347053564c636c7276614b6c483972545437773277644868534f65717a4a324a5658484e755357333538544141454f78317851707a62442b75534b50354a524d2b414476624169696358415943717475484c33514c576c69784a5847544254477a563069416a61753152737158466e6f704a38394b7743656957575731777a48376844374970393365752f3131416d2f4773505566794736724f7a796446704d7a517236576a4d797170534269686d6e2f617972436f50667869322f76332f414c4e76797252503830356e474f344946493544694170552f75474a7a72376179736c4b61336742492b6a4e32382b4d306a7a75554c7146386f53377333773052384a456165652b41635a42464a6c5264515a356e6a355a3046764b6d465447464b4c4744424563756d7164674a6c3656552f57764254676e6238496648557568626b7a6d6647514b76466971432b715232755a61394c4b6e42485964364f4b714c51306e36466a4c796f474d6f53392f53463376507946554267673064396b444f4e6b7436506551703674556a304c636a756d68614531645737364a58442f414d727a76626e784a6f373273792b545663414e41434e5351432b66526f707279726f775241584b5646715753364f50596d534265616b744b6e4d617a336a4c2b2b546c494b46685253346161666652784c666c4d467335624d39574d3445336a6c4a7a5a7172656869492b302f3570453872306553746c2b53466a4c726c6c5556504265665942616f766242545051424b3974765a4965304e373248347150736e3946376444535a6e4b71624e4f6d526931726a2b583459544d535731694f576644517a69416e42494f354c554e5a717a5a69786a6e566c617155686d7674784677695755744e4674364147766e5256517569655a71584370445931685051636268506f44757a305779716f304d656a53397a6774584a506b444b4e764d32564974743977737247474e7861563078464d5a7462383067544448384c4647445034464c3261744669565a75766c4a47587832692f5571366151376d466e327a31665559584b42577451303956333247504c50596e35486b412f30416a587947732f6a6b5046746d676e4d6c4456672f363433542b5535764a5a567a45414f722b716c6161716d455563347253514f3630486649452f3841567132322f4b526c70353735414878356b63774f6e6c495370674b44507a2b5a3673396a4b395255752f38414a393133453357636d556b445770587549416f4d4f45794f5061387855644b4b745051646f793869693866726d5a4d4448614e4a7559352f6272576f334c415344593535707847684b43714671556d3278344130777a6d6269612b5161334966443662644e584a354b734676645255327039546e4943784f5351356d5a6d783249536d575073362f65504b44554e646e42417156465457764f745a693379476b33714266714e394c505046504759734976484830587879374c76484948363073386f5a3844664954364951696c6272697057726f4a503654476334382b66496e534d627135366a5576384a55714c796176565264472b5257547363626f5a566c4346614764495645314d764e4c4c306a4c55595331697a693067784b6c6d70797632316443707236765436534358356f3632657a796a4878354b65354e6c71537a614e4342484368583157614f706f346b656133794a476a6d7a6e765655577171415472413430707a3355742b7730576c302b6b4461714a562b563642535a62624d6e2f414d71636e772f5273686c3866557962566d352f476e6f7035414f585165695049574638664f2f5a43377156665763766b616e545547376e342f6669527533332b5565662b64723534626e65593638743857506431314f31542f457a36556431536f6d4c56384f665a5255546d6f70522b2b6e4171763674496b532f367976715248434f6f334f754c30562f48584c3374374c7834494e75734e4f6e5431327a724b7a57566b5a4332777275705847346c7a396b2b697449745a2f6d6833503337566355515a63312b304f4558354966334a357276556a7837413859384d3879324e762b516a3534466e2b4d5955656a58763161576c73547968695749713653334e64506d38346c484249423157673435472f4a4b6658545235643032477830503571657275506c3539306e7064366e2b4662325a6c4d31504b4d706b4c4e764f705a4f444c4e484f304b305269686a6d4b314a644766366f6370635a3842497041506864534e4b73396256744167466e39772f314139667643504b38374f334d766d7a685a327532697a4e597a45317330386656626c2b517a61642b68386759365a6b69346661754f6e672f4e46372f6664513163452b35696b376f425430353956714e50797a797a4a30372b3658682b2b4f5a4378756869454b5048394e523438743551446c2f7743552b4c6371776d4e5a4d2b4c71616f47714d5170565654516d765a6b627a3455486865316d3051577765456132616e6a53425a2b4f355a636c475962714c6d2b51733069632b476f762f4a6963626d7056795679515931585463494f786d5a6930343444573731353954505466385776444c2f566a633872315043382b6c5537714d4c493869566a50324e44547a526d794d2f4b386651776d3062544b4d7650625338674a414654316f566c504a5937756c4b32764f324f5963426656622b2f3935446b37657a4236636569782b58614c4d6d6569473779375655743258564570773255362b6765614955564d4c342b39614279543172736d6e43594b6f4655463156396a72385673446d52756633432f7a6e38373164447a377a587a6e796c2b62746245656957643468354e564a672b493951613330587a52746334616d4b586f5939524732517a7337544e4e616e6b694f447a6f6a52305978574b3942666e704a2f65652f4b72306b306c5571395438767a69444430324c71394f764d6350706e7565354e6b3234747536365537476156476c6d7061524936344334476351736d576d794a314c657a61646f6e6c32515052642b422f39315030442f4f724448787563347653443172356c7258752b6a666d49506b334b5350377a7a3050466867464b4e36646950716d62596c445970644963624e38546a4a5048712b7a3330707a32712b4936536d695a7362306c2f485a51795a37707a626e674d316d62336a4a66496d5451717453396c416b76364b352f317a37664453632f314a65792b386563463535442b386941584c6f4975707070696e6f6837465a417a3656503354714233416a6a707955705a4f32704e4e706d356b784851734f742f6f4c574c4b637247446a5630643149376f3231365a38677131474657733779746d58442f6c4778337548685464424c6a52594d7755634d5463384b6f3869544841365743756d4b433750664b5954467938754554616c364f6c386b3152564e716c355a38792f32514a355048716e37506d4c725453446e582f6a797863384c32506463704764592f5935556d33515a2f48702b7a6632654e4b774e564a79702b6954656673576e6d744c51346a6f664e2f51536d6e7a3777337858776b64767a37567950427648353865633257364f72426a7a59736471336171666d3563514a574d7365685162584e6358456870542f4d7a33462f74625a6d3249356f476d6671522f63452f457745614d57583636656c576a564e534b6e5a2b68355a347a58644870767a4c4c6551476e2f774169486f73707a57434a6446612f6c4d33445735537a656264613647724d524d3148686a2f50332b354270666b583671655467666e2f414a4d666f766a7330543850787376795a4b6d2b52464e377036573652595655347a315030457a677431484f38704a4c766e70766c4650572b7070614f797465586d4772486f392b596e7258364b2b662b4e656f6e6f6a366a376e69317542774b496b397a4a6156317a52507370586737634e346b753750725032304f56304a5a4f6a3970547853447638415465326e533859745565366e2b316c2f646238512f4f2f4558346635713666777a386d4d5844585074344b4f754f505a582f476c597a593857782f634c6f56314d5843356f382b656e6b395a71446e656d30352f4d396f396e6e536e4d527530783176335643314462704f50396a4a623353326f5256486479664f7a53544d6974794d38566f59536f786364436858774a6f7852582b6c427839504d463548744f3639544a67617076304b47427a72394b5655544978565656536e646e486d6c476b5a64516c394952466a416c4e70745579515742494b4a6c7a5a527a696f58506e7a6e7935314848564252625556756c786932753155684e4c47797239723972785070685361524241724143434131566d357a732b5936506d585859366d52447a6d6d6e7a3054787a6a37315735594a697070304271464b4f455466625a7833735a622b7757442f4e537158795358353254396f6e567269697269345a497836724b2b73425843342b7663347572306746784d4676776d6e725135372b477349544832327279697248566d302f7949642f5a664956466a4a4263632b517a51536d6a514a7061412f774157745061754445587a422b795753514d544479472f3371663779486e58686e6c6e6b76347366696635524e3466504466725a6671683669596e574b6f3058324b5a6b5659336a2b6c6e2b384d76464b502b536b2b31413461585437455954302f436f43663658737673305448764e546e384b6a796a622f716836696151364f4e4c3544593174566e644b696a54317132366c6d6b35634e532b362b7178677632726d35396c3376592f76666d4c355136626c733931486f525776616d63427a6b6230324c52503939387436555463623279644849744b6b376e322f4856526f4e6f4970584a6574665774346b715a78306e475648784f535a56477a6e707035626933555a364d547941714c4954525a4c726a665268387a39573657504c53656c72785368376339556369657442664a6e54466c562b39725a796f703546717a4d593654413948503447663372665566305879737a774c31706a33665658303978444766542f41504e48596f2b5659537135694e624d6a5a4d622b564648375864356e634258526e7a61715a694e3376442b754455396e72627338746836735042504c7648764e385878377a767869334e386c384f38697949712f474866455555696f396278724a6f64316a4e6673333245307a3055477a7658304c2b51506c4b677a397046777a45784f4a366957654e72744c596f48525454476767757a6b66474b373055632b314a51687a6e523044334e4a636443306c2b2b756b712f696b705162544c695a3669304e36316771716c5571754a59524b614b65303371706c53766c514e4b6b64564b654f6e2b517033483150796c794d4742396353703666394251506c56624b4e32326552552b646e4854504b6a71686d66547061495a4d2f44437a6d5a704b716c4a474f4e51673866306b514e6e75393661464f6b412f446241757a5864704f586a5965566e627a66494e69366c4f594b73715562717131525753304f4e32664d53374f5563614a41415569552f76547a767644776966336466377848714c36312b71586e2f7056364f2b6f506b69765237786a513063667876576d76696c56744e3862305a386d665456586b314c5a56343659706e706761706e2b5a33745934374375396b6e72657a2b7a5257746232727a447a332b51656165573762786931504d4e5732415a62356c446635412f71414c745265366565666a6a364c7634387845766e39704d2f774347456f686c48346579496a47647566714a643468366961556d522f4735476d63556c4a65357359564d585a384d3945646e614a334c59304a6c717a384e4b316a583067496b792b772b6c5459774b7a45784f4a47796d52367363774a736e794d3953392b74666457747162624779576f3243726930323568766f5133737365622f414e713750506a50616c3332696277713249446b54574a69494862662b33582f41487976555430757468394a6679462f3877395150544739324e6c654d656f4d545663386f384a324e546d546835756435444e6e5a6f6c75654e633168644f58313666635a5569796e3575787349755457396c72626d7079324873693174444630344a516e5846526d5554686f4e4f4231695145473434747a3734724b556c7a516a72712b4e72754958382f37442f384c64515a2f7742655a457a485153727a527955656c666b766441644a30696648794337596952767163564e7677716c7255334d685878684c574b375072544551456f44443556646377477139592b59442b6d477731336a766754394e6a3242713465444f6d6566767939646c726b5633536a6b314d706e755935596c4f4b43476f2f7547414b454b522b48763954614f615170362b2b76586f392b50487074712b7048725835556e777678694a33332b4d657855326a7061343679325179594f624e634a37576851737364696d65314c5341777150697050394978536c72323231356835682f576e3877507a6a2f7573532b56772f6744364861506a506f663664612f6b79764b665754643038544a386f31344d7348415766487333706d546f45314e68564e6c6d737461336958436d706a72475468333130394c32662f4f747a5737684f76524838475037336e6f34766533764266585477447954794877705869395532543578366b62506e79504a592f497351746649796368666d4470553057647a3772697434464b5a757573625734784d2f6e434c6176737475466f3758355274742b4a483937667833792f7a6137305a2f4d727754473944505565547942336773766d57645a64354a3666552b595a37425a354c686558666246447648375a39426a6b76647a325355304831306c43515a51624d74543257596a64705833562f33443041357446616947694451565a4b377357684a354f702f4235705a576f6f623572577547357632432b6d762f574471442b794b544930714d46632f726c464a6479715865766455396c612b35392f67634c5654317a4858506369625a31733169354567734a35324a62705a394b7945663841636c4d594f3631582b3173376f3264662f517244386935592f774435346652662b514c4e354c78576c5047796c6c325741466a446e5072544d7444475049516e2f6b47396e575650434c5941536d6d2b7566737458706635663347772f714b74582f6a63726d505a487a37367052504b322b54537258313467536e6f4b52362f72544d713969357870622f6b37767450333030652b746573664d523730756f7a7735712f776d5851424f664a56384e4e65516f686c303832666e49314f36516b7937737373394a43786b2f566679536a50324c71416a577a6e6a314536725452425458624d6f35667261534a4c43537a516f79686f7936786259366838663841324a35654d4b4e36336b4b756b566a51556f7078614c6f4757377677356b726457386c72564f646446746b4336545574303530556c5377317a302f632b5569576e6b2f7a50573434474f642b682b7741496a504342347276377166392b7a794c48383538793943507852303152553565726634783550366c6a314774666a66787454735275663479797761304d76536c6c4444715a4d484865784a4b55306b72417654396d396a69597266556e6a344479306556666b31363365622b5231376e6e48713736712b5561317a69566672302b6465533266667574474e316158644335514c6e396f546b79626965522f484d507551445039512b68476e5349785774612f3841614f685834522f33692f79652f462f64386478504f664a396231732f48387a7a4a664a5041504b64617679702b6645697635777638555a756b79334a326f786e2b644d346c324368716e6373416e435a713539583262547630356455653262386576792b384a382b384b384b3961664276494f57656d486c53465779353847656637466d766f7037426d61754a526b35712b6173454e532b6c4e393178756d5035364a71652f4e38766d58303569646b39716f374f54624f5264343950707a43436b362f4f62475a55326a52587975577055744b37444b354b697563617a587a394c36587547503967507459445563346559525435646b78566662746d6d304e6c586168626657436f382b6478396c5a4b5968783632542f4142702f337035377a2f32633442417878784d5a6a414c554d30536d4d65304a6742693063416e6e6f57317973475a796c5356724755456671686c4765484149317137387a566838587938502b704439446149356d306644724c5a7a34696372547a79706d42674c572b6235715a553075644b387668342b686e612b7a3963372f63594f6f426f444c574336322b39306630506b374c5339387955334550467a554f617a566936356f522f4b35635a6d6c6e466766627841327548682f49442f4144657663544f6e51756d65456c647a4b4873426e656946424a4365564874346772675774664145683970476b306673544e595442433930796f58796c727031315374437256525532457577343634666158612b506a457246766f564e37786f4566694e794f6a2b706936484130752f4d62383450512f38482f5237795031623957392b4b536f46784f384e385a6374744f74353575657752775959633253353536474c3849304d4b6e69544c6a6e652f6a7154466333396161576c665674747233663752346e66583338327679362f754337486b753257783670615070784a7056393861385038467133636148426b636d694875627a52584c32426738712f6b75394255396e325a4e49366659746b70386f394f6d6c70364559346276583952716a366966686c2b556d2f345256356e6e2b6a486c4f356b654835746c6237624a6472434a4266416e734e6d6a6f737357372b57444a79786e5541564167364e4a5a7170413274564a7047707035786e746a6f642f61632f756f2b744834662b62592f706a3673655a65562b592b682f6b756b39666c65523572545474582b456b7a756246543378585a656b765a6b717573766f626d38355348792f443142645677434c44326a5170715275725462616f39346e702f3669654f65662b457a2b616541372b54732b4e65565a3075726a3758486c66496335554d2b756a6851615642556534523057482f724b64502f414c794975756478586d5445784f4a466d676a6c2f46796a5643556e514c364c6e706e3175547637444b50615359656f73376d4e736e6f63617844327635704f623077466f47366e4373655177707044536b614b6c724e4b526b584e4a596e67477462304f6f674f69456e443861552f4a557062666a6f54385269302f6d6e49306859654f332f35525836362b556576333550666a542f626c384f50566b777461794879663152445066564270615739356673646d385a3632557031395a6b5353787370554a7a684d30744a645038414b506f6e55374f372f5936785454314e615a2b5175333859765437385876784c78504b2f5166302b5234313542366a2f41455439505a452b4e3479472b5370306c34564137336b506c756e4f4a5030686d58714a4979374b39303534357536627a6f55734b366c72366b5461335a36697a6d2f6954365438385a7776434d6e303133764a764f375633526554332b4e5566784f427a416d6a38626b73792b7737447143314a382f772b66536a3677377a706d636c382f50397852706e7237793263377555632f66796a2f737161766b4748702b55656a4d336d48706a366a342b57436f5046664b4e42462f69506c4a304c584a4b7250314d582f4164546b7152576f6c73704f4f577841636b4b6172707a62303970784f4c633142352f5056583032395466546a796e792f306e39545045644c774c314a394e3951394879447835632f30342f4a6c5679517a786551353937735a69746a414c4c6f7a33726158586e536f2b6d6c6f47344a6b395662317446625635713248637638412b54662f414a52655965452f6c7235522b5072703357654165746e686b577265334e6f67766f38653879386467463057692b6d434554545056342b746b7a5357594b646575644d7966396e4a7735666261524f6e762b4b6f39786b614959327047712b6a743839546d73514249414b5a5776384163305a6a4b396853354c6b357267576c6e7930633935456b43497734666d6744645366476c70386b5537547a6e5554567163674b5957747268544d4270732b54724b6d557058443371703577636b33504176384132394759436557633378546146366f70372b7a6f5470314f724b6e4e4f506b6c546742644b457a786b7a704f6f63546b396f55414831436e43492f35416c613056446f5333794e52796d424c654a3436353671526f5850414c6e6965663863384a43452f4134632f4f4d3636685a394671545177487a5a4b67676b53303163674e4d2b6b316562796b6e525a54417a3432385934524a4536774669326a78674f345954456b334e3450426541703959662b6f76535855614758342f55557a4c334652383165644e51756372654b76377a5157473056564a4a39356b4a4830513442753641682f4b2f39595056587966614c31633872386d6f716f38783870382f3951647a53334e334f79646532382b334f354b4f78326239565a363463615555706d4651542b382f662f79356b2f4f653557736373523242712f36532b59562b552b7050696667473731336b47663562765963395a6145624e4f353672364a354c73365a4f566458532b7739416d41704c5655753666744d552f4e50375276614a697559483943763850384138594d6a3034394d732b354f46426c324f6c68753035467a655058446d774a56526b4b4454697335493457633862646e3149397a4b57752b345a6b464b6e4278506a366d724e7264427a612f7536666a445058366236652f6e444868727a3831725a67376e36626459764946614565484671534f696f687549684a6166654e50582b354f502f702b4c726b6642763750654e3249486951387274626c2b53507a64746b372f7743473256635a32364c5372626f6670432b455442326f795a5751465a522b68466178595553656f6b35374765333034695a6a4d647739722f3841386b6838783874332f533738746654612b765274385838633835384e326354457443547332413379654b795777633155644171634c5279524e354b4c704c35384c544e58587a732f727a662f414f3452466261632f455057766f4c6a7150736c726134714a44696d72586f6b75786566306671712b6b763370364b74414a3078384a6954627870306c4d77456742645877424e7679783658512f6966615031706e31342f5932494f50515a4c37556767636c616f3941655a7a4669726f746e4d767071397a6e5565784a4166694c6d626b5055733133516c4f76682b78413649394b716f526a4a4654766962536e6a686e4a345042672b31774b2b5751666c4649665538714e6e5638616d656e4c614d5a545738696d37385a77734476746f594a6e6f43587a564161356a5358747a57664d51714a584143762f5533655078667848796a5a2b5674682b4d342f6b4f6f2b61616a68314c666a5939577038432f6d543737762f535630664f306a2f38416f7a4142554b45534f744578626f50412f7744327450797a5670666b5a2b5566714c357864506636712b72666c6574765737347936657a2f414261647a79316d6d72563239614a597275783836797a4a2b667452424e39564a70564e797968696636395857303855303631374e52364b764658315a2b6c7a553877337738567746364543324f75386b6f5858657437382b475878344d3665696c387376327462506333714f4f6e6639614f726a35586c554b654f592f447a436662587162365a5a6f4a507954596c4c567a6d3236324259714b4b795151385a68316139345132614c4f4c5463335130693446746c44514a6c34674441507337556f695a36446c5636672f6b52364175336c3650696e35446548612b335839796379786132697565574c6b7456464564364873347a595936654532734f6a33536d436c6a514361506233656c4c34784e635948496a3067395a504d50532f2b386e2b4d66716b3456364b664a2f5676786a4c7a394f314e564a363369506c784b78727145325a7a6d48734f575767753767304d30522b55434f70646e45506f4c6f74534c657a616c66773148394a71754d736d73786532526f7a685077616b4e576b7070327965787a4351534f2f43786c524f62513332796577584c2f3541663178666a39664d51336a6b396176746e424b534f42347a543934706c57633662504a632f4756433773705663534b656a316e525a336b594a4a6e4139346d4544383879614e794f704f56754e38573372614b5735766e553435626778365a4a6c775532484665756668554577556437302f38414e30352b776d746a416c663069636359476b5265732f72502b4d69513076586e78726e6b486858307a7a592f55767835323171354f6654525a6f4f5a5a354434305535557875566b6950624c7058456b5675575058633636666b2b7532742b78504e3443542b73486854665579482f3536767838386e6b6c39526447484e35752b4e317a346835486d32625a334e793872574c59676e5773746e6d625238733949553953786346696a57514166526973375a323337497058316b3959764c594d72306e3176576e505639724d7739615479754f47735a2b562b54425652586b717a5950766334346b5a6567584b4672616e715678734537436d54556d753161784f364b39653856742b4a5835797139562f57377a4d41563574666b4235414f63724b3176627a4e6c79726369524f505252392f556e5557667833326c396350764d79543754412f595968625530597253765a485971626451304f332b50667577336f6d762f59444238314c723835747a3347786b2f574650386259795a31674238527a482f77416d72374a2f317a6a6b372f66557538317a50376148726f2f4c4b744576582b4377374973644f79702b4565316d733067386930653661754d7852542f486c577330487a6f664b5a704167634b642f5a7354725667667a6e764a4b65565a55356d455a4d544d4645746567727943756c464e493564354a2f6b304c556b557254515045503653556454594535754251494e5873676c35436a7a6e527a4d54536a7739582f78724e6a6650342f636e4c3374764f637356314a7558756f5735696c7a706f47786c6a4f67564b4f377952623871523934423838773878733861792f48716b6676573861386c793856363155616b736f7a31786935375a54393778344b327248506559506d573535676c59475a2f3454496a4d7877346932665366386676792f38415748774852383839496654507a4451394f383358326648683951637a4f4d504872664962315a3957764232316d5753394a355a5643794d32555464393033415359663841416e5331394f747357747a666846516554656d6e6c6e704c35652f3077382f79562b45655866446c576245644a5a645630584e426139453355555a7a75556c516d5854397631675a386a6c754943362f714a6d39745730576a64484e556533762f774354645765593676346a2b59316250634766784c76712f516669314c6d67796279424c55536f313659483646426756684d5a554e4679525254574f4f61666857314d626636387632374876497a307750524f6b5073724a744f6c46316b6c534a5256384f745775566d666f4c756c377972684d483477634c7133732b4832725a41453447436c2f722b75514346565575736578383531333258716b305677777368796175664256634b70352b564f7354386b6567492f4c30444d556d70764f706f43674641586f4a7468305279544f4e4d3276474c6b31797a4a57585643735532774837757064384468637775693254716e2b3855706d5a47594f434d4748373471724e5875737a77705652444a58524d564a5555766a31707a755451345732617a436e6e4c326978776e50474c4576436a674a70447a452f2f41436b6a7a767972303638412f46772f48394275505a356c354a35526a484e5772364630536a5579655a46326e5a526356416b7a57304237474c6945357659516a316d656f4a2b2f324b496d645450776a786e333755324a79574a6f786b6a6b627337676e5a61764d6e71432b537a4d30767351304d736f71433757304b57395a336e50682b57662f4f6f434e666f6963654e655276447962737a5a337338646a546252476a52315368706d657a67714475734772766453744c78584731346d55772f44704767654a625135696f6d4d784d6549592b5a7466574f6e35486f646458716a584a4a4d3364354d6657415673373837596275564d6f4e677479792f542b614274554a38616f31477869515450515965502b74586c7668766a476e6a655061743068376663764e3161736d336f5a6b2b4f7844477874434b694d77576c68506f582b7169636638416e387770754259544a6a62457a45794a76345636582b73322b65443576766e2f414158707a585a712b52426235367636434e70636e6b7a68645a34754e78507032475032686142464637752f4a387a484a6638414231527074574f487844306c66325250494e502f414f75743957764774684f4a354c346e73654330376139612f496d74356e555445757246516d364678684c516546634d38767674723556584e52304b65442f6c7a6939716d5064316e7062314132622f414c76333931332f414f74567a612f7830394462796236752b54772b33796e79374330512b683665654f3666566a6f337a674475647533723838344a317066326b702b35584b66394e4c7150745a657a3648765a33333750726f504c44355a2b532f6858714c35424a752b66343276354e504b6a754f65417a54326133734c4d59732b366a48757149484f7259787831384d51412b47496749462f376651696b784552325a377841504950796233384b717544306a5950696d4c745657466d53356b546f74475264772f575a5065326d6f77597a345744316872357a2f595a6c2b2f5a332b70725350696e714b6f337657487a5854335675386c33742b74777a646b4631567673594352347872315368376941706d734c2f414337333938497a4576384138582b7069496a68417258376474623167465263595a6e32516c4237364447527066416747676e3266594a6679443376652b372f414139332b50372f41462f556a73462f62472f4f3352394376564f4430763841554879445a2f38416d6f3951646a49793963714770375067625256547935323132554744775237594b5a622b633650797a75392f7439383653357a362b6c4636376f375652375166484a326c354d6b644b444b624c636d5861653350496f666255716e65314b57786159546970336a6631316c4c554c4242314b50714862325277726d487a78746c503862706c384b436f3374306550796e36624a6c7a4b2f6a2b2f624763637234534a696562425746375748554c45705a3164546d664374584f427347334272567749657a526f70796d4c7a674c5136646c786e30585539736f367a485067766c6f584c386f72506932696c6c6a76643742612f5433666d4a564e316e4872465449386252737a68564a5279612f744f666c466a6c6e6a42544e6d6a384b7853786c58655676497538504b6c4a7641545233675a6966352f38334f683347667736354a5a65496f7442767a52564f6a51747a46715a326f307368356f566535704b353031507976627747474b68654476745772706f47714c7658615673575853784f646a35394972794672477038746845747057615348554a34707665556f4d4b576c7862444e716a4261786152446e574f75346f4b626c3559665a4476656a72775647705254326167434b2b4a53582f4141614137377a612f7743577872682b45434d322f50476c6c666c4f6f764e7a6c7a4c315730612f5535525a5373755a6d70706551616a71306a4e3836467058622b7746734b6a535148375568542f51637550557a2b38442b4f38572f77413866394e76482f4c66574436657835423437354e3564675535556e695571706b364b71466f3274764a45764a784853517463526f6d474858424b3741736f52474138364b2b7a576e746373445766522f764665766e462b536565542b6e487066346a34566e2b4f344f76463471334c3834387638414d4e4857526179722b4c36655a3556416d464d6e7a4d4f3670613170396b434449792b59534b332b46703033327459614a302f33612f7a4e38323374505958366e36336a45696d7373673853386677495a2f453445323863784d6c51334a6233564a687068466a744c724351336c6a2b4f64554a6f54762f4149665372484376434231642f42332b39313456366e736e394850797079552b696e6c6d5a6d66647a66564f534f777654727a7a55697959394556573077324e5078507962516a4a644d784e647a4e31434f663461506e64496d7a6d31665a5a3457302b623876784474333652666b4c364c2b76475271626e6f2f366d346e6e6b4f4c707a2b5062657034397154365a592b76644b56623037734f694b724d573471457a395a326d52524e3935676f4841435435793270616b3474585a486a2f414d69367547624a6972517367765241742f435678436835796d45666e5648475566535343484334665a2f70506f6d6e6c4e50762b4950367348344d70577443367768374c3748386f6b656b7143735342753674797136503852487248667357644557416678474a74563777414733506238646b6c53356953676f2b57664f76546e4c76327771475547695446636f6e5432637545706738456631396c337a4d4d654a7a2f672b7671516f357641755a4d753335464f72563843616a586e74366466474b34677a4a66792f4372345668336e794e44334a6d2f6177397a557530434b2b4b2b537064546c7a303858313933426d6e7a6a6e6a7179552f632b4a6e4345466c2f6a634a436643494f2f727641397764582f514a49684a4e557969517978747a4f307054656d54702f49537948513778342b344b574e6c594c6d2b2f32636230327161315356474c41444f7970347530776334564e456b4b4a364a6b467271365a4a585032534c6a6f6d415470526a5950363578352f45372f44727a455059414e5679336a786a326762394f7473552f65314d2b325573644832454b645a62306c304c46503152506e4f42372b657a3938535a6c30787279655832483773696f324a6132586a614b556a544d527248374c46736b6c6c6b7a4a6149553847576a6c546d463332433052702f526830752f346c5949664865624850756e51322b392b576630513150726f4675657a337334316b6a765a4c2b307573426745585065366b486537744b665930456d30317a634a457a5a71483558596e6d7576324f6f5a5772715a44663276717a416d4c53667358316c4241447a6253626a397a557a67366f6e4c56665244534d314346546a537152326b514237706a546e6e4f7353454a796c4f4e6d67302b3957424a35375a79346b76617a6b634f31354237517a556f4e6e5565326168786a474b524c6a4b5a2f35476c6a494d37514a6739464c312f7955353953616e5366586a63537748392f38794d5335576e5037446e4930586463485630745678484f544f48677a614253352f77426f6e4c49376b726f48672f5855446e4578775468315155312b4c6a346350312b6f525773425a527955546d567a357248584d52497876746937514a745a51432f646378693245664f6577324a586a2f4d5147426b584c4230374e6d4a4b2f774274346f484b4d484f727273567978457657744f747a4f30455655494a2b486e7741302b6d344f657a6e505a37325633313851744841754645374e58534d4b4265666136365731474b2f596d69766a7149714441696e3658324f427a6e66655947332f417141616638415668787a2f76785239322f37622f714b4e6e4e4650592f4e66546837315255424b767263377a504250393348797955526a696e2f414e3373507654466a766a6e6174334f49446232542f50702f774233395234687355592f49786b706f61424646567739377957465566692b38464b54584b7655516c4550506d7938364745707a3478314a6d314b2f663841392b45342f77437653486f312f742b5039505054333056796657573934656265704e7848692b487a3679506a353430506a7936714a7170376442386e4b47466e377a722f414a373569424c4d314c5245772b586f636d746d62624a35616a5a332f77417132764b3966613374766447336f6176614c744c4b50755376587a424853315a585754444b512b524a4b464c6c42395270454471666b416a63536b2f316b4c453749374d354d4e517a324a733753666b4d55562b5178736473734b32743576416843786e5071703263615156442f7742357a754a4b5a50666530464837313337524d76756871507a4e4362733038636e2f414a4a6f36467655516a427361327453362f362b6b3744697359446f2b4e57304c5063536c486e754d41464c3874542f414f5745713261627175366a4254342b704e64756c715a6b4f6c645935743870537157503753396c66445837364335416f466a2b753066454676703876556f344a3474574451734a44476f4357454d6e5850353570324d415130746e3546673378396849716d4644546d3454536f467450784e6146696550617554657834577458426e777330303171304b71716e436a6e4e514b743374723070457444696b6970565331416673536e326e5376374248573164337a6742764d4b5954445148517047795a5654734333635a536a4a5179522f46365a5263536a355a726b2f636f77785a545345314b374156396b68534c436d55374d4344333738622f414a696e362b377834496b476d75707a45547a4e416f58486a343172716737474a6f46674a47647041372f5438522f5a6b2b4c746864766a4f52766548656e364e4766446c5273623961356435644d63733635387270324b5a4d75434e5051633670776b6e69322b353174414c562b31434e45595a7a696278416a6d64346835547031562f454363785373737634354d7141626f73726e725872365649337a4936556356685171616f4b6143412b553937776953414d2f71322b7669486c50707474517a692f62774633766d4b66724b4c4e632f346b4b6b5430555169705770596c6b38747274534f6379555659413177423756494774485933316e7241475a6936596b552b53366a3775387a5a5468726b727655377364383269566c5858725247755664556b36524a50794837796447464878396f634b6a747737506b497a506f5761564c6c554a797279356f716a4934476c734a6e7161476637594e4c4e526f653165665335726d435a4d76624b5154487a707967487a534d38504a305636636e4e3663327732756a4e4d4d65664668517a4d6c76685376327a5a726c396e496f352f7744516d6f6770624d3549412b307043372f516256656d57484646446b2b572b5753655250794d6756562b4f53647a617539696d6e61376c4c703332304578796570716c70363370414c494c79427967624f435635576e6a4d64304378665572306b7a2f50356d3750706e7266774f765a6c6e4464687a6c3961586344343547522b326b4843796a583655354375737054634645597a6878786a30485672625a77765055635a504b664464447837797178506b413647427331547458715a326c413657724d7169555575524d6e616f453146476e4e64515230384b4d516e537235712f30376a6e62784f5934644a477a586955636f654e333078313142526d4a7a46436a756e526f4a7944675135664a632b6d57697157574f63584c466f494d784c324a643946696e54712f6f4a62556468553930614d2f714d79314374446379564439585041382f492f61334e397566306d5a2f5a345a304c42596c534458476e707552385042427234396e3958496e5a70304c38754151464e4e7a51495076754b692b7133756e33586a6d61775651335553797635376a53695037587867767454707133374d693546545a45307a6b63305836644230366e5275716b687a6c49696278617038355064426a776f5a326a465a32636c53636a45674b4868532f4166767a352f5037694855514f5270347a5a4d32666f70536c737576556833384a535736397933314e354e70564c4771694875537058444676752b2b7637414a6d4d6a5673497a616a3930727a4872756a706a3533536e58524e34386d50532b68455651796e446f334e4e6956434b6e45756a3554542f7054625942684f6863634f31354357352b524a762f566a43486b57416a51375444394c3764306d6e7a456958697337624a65766830554f574b30412b67486e534f6b6733545547376f4d70753238754d3445376f386238616b4c55655339493943694365366b776b304b505952424c4b78585970386c626b754268456750732b2b6f4f5752395455546c6a37363737654968576c71352f6a2b42484e79695130616b4e56755832334f662f414279526837525479526338366550752b564c62686f596b506d56505a33686f7a6e2f634d5a34587435514b4b33396a4f7152427435396c6d66565a4f314d6c7a6e354463303374593755696f2b712b4c374131474c6f36536279655255344f7a2b306772697a442b7465676a3639667470305153746166384f3855646d7774557450746734392f6a76465a374d6f476474334b3559334e5a31764154776d3555795555787a7a6d43414e685474795a716265446243424c386755316b32764f384e4c70365939502b4867634c6d706f635766704a55616c6636465454764e7a545631535934543577474e364c5469625a6a6a6b4a512b5a6b7943546e6b686a646141614f35612f743631674c475034537166316f73614d556345412f5853414678386a3957344750416635444b7561747a61344c4b484e72504c6d3038367a73644c4f364a63347a4e566d354e6678394f507154473858483864582f572f6f496c6b2b55614342324d2f58776e3379794c526f56513142436d2b6e50576971304d652b696d4e42363273372f476d682f5830674d2b32366468664a302b67486e492f4c54795a764e6e796a5838776f4b79756e796a7978766b38717474793574494a586c42634f70624643694f50516e634d3679465368704f66564334612b314b7444765a705231694948466e7a6f615a646e47385654545134733758786b3179566e307661616449636c52325a65526f6648504c77525a7761444d466464704c447450782f564362726a6a7838522f514e2f74335859655236482b504951776b71767a504635367438673163796f576c3472347565552f5535534b7562447532477a6f7548396a436a3246397478557a556e342b747876357a2f414d446f356c484e343473592f6e42724f513045356c67664150506a614a5a3143666b2b737858573158584f2b5a5a4b4248542b5a48744658754441506835784879636b662f4c57574e6959752b79597135375830636e5367714b5a394c6c4c682b694e46413963507670444e704242482b6c3167447966733932544b6d51454d316f306c4e775962627a7a48444d32486b545a30357130704b65636e5a6c34434e4175554b576a6e4a4279356853443647666b68653066735069506b776d504a4a7870512b30575a3759515650553367456a4a646e3865594d4e4a57644170754758665a47444a3144657932664854312b6f4d515533424e30334a2f61585658353846534a5a754b47704a527a724a2f742b54393275426e66724e536241496470524d755a413075393747707169476d57624d5678656d372f5542465037576c38754f736c31303842594a4b39564c67595653754f4273676e4d734e3158546d4a374f416d4535714c5039566a4a366742393079304c45567869726e4774496a464e686968724741547a42484e766e6c42354f66324e4d5675544c4258584f444a5a534a6a2b31517a30357954554d4a61456f2b36304f4942376c50496661432f634148436f475756703048556a516a547742446a6e4241717952692b647a78726971533532747962514a5173596b4847485453414837474e41477a72724e48587664644a6e6d62592f34656159595a55454d314832726c52474a314736706e4259505446494a4e4832513537564838777142336c517157525043474a7747366d6c56517573554950533858327571494b6d6439703645646847613230707164652f676d4c5a5059514575777835384c4a6c632b534b6a393146584a79756b4558722b53712b637759766f464f45615863392f6555454a2b3832463030422f514b386532684831644271422b76324f6d4f5736656c6d7369384e464b5550644d3255536f543165587146375242782b77415070664b705147446f6d4c583866537a4b384630545a704f6f3759746143686e704a7a41706f794953526e72624c39354a742b79482b714b63506d447048314943744c62715679565954424c6d4c3559503671704851737130564874492b4843356f66353336547035574b574a633430446d41306963786746414a5a4743656f334e6133556c584d67577a71574c6c35326a50327439536e412f6e326736587a4c6e574c6c664b385170635172414771534839524d78455a6b54376b4d73756238534b516b6b57695a646a614f7a725a48463836536e364c79575066736358553767483765664d4e4b512b5434552f77435569493644465a2b62704e3533355a6d564b6a364d4351596178526f653038766a5636564866383550635970363332642b72384d33766d346f6133587a424c5638786a38546364597137586f476a4c7a6161454964707634503032615451564743422b4f587431565a6d7752446e444d5639345375546c304e66315a7171433262304853386d5263355059584a696b67366d6255664d7a4e523278744d394278757a5444362f42636b452b3441392f7336594c786f3659647a694c354f72513665536770356c6b4b6c464763373943755756664533666531506572326364776d344a687849664c7851676f7234324736683358416e506f556d424c4d706e555256712b4f493233703064447648456566564f496d457872522f4a4b4f6b556f516d6b77515748647457666e3342327a55742b4171617061754d4d5a33726a34712b7651724a2f657354386e36575370694767306b45784a543332746441515a464457503135334e7142704342504d726149574272434955504b36316154314d6e2b482b303853374c78526f6d3937614c314f457a41576338614c70336a3057756e7a334668414859444c4c625247525a3076587239797150316c732b5a524d393547704b676d39684c4e58516d476472414c73476d736c32704130737a3270706a415730387a796c725737576b7153456371684c79416b6c3166452f486c41584f3961416877444443725137486e46436c546b46534878313362432f6e6f355978313163745648767079317a6a3877643531726b4f3437346b2b7876665a51455a445633744546746350615873734a4b4a3279495a6d337930782f4258416e6d665252514b7a546f54735178672f4339564d37544d6a6c486741556d7a6d766e4b636c36786e4d31593068415466714c657033314773573859756d796565656966336b43356639426d336e2b537572414d3662375a7155306e504a314c4b635a5a78554e6836363933774c59664f537a75447550524f776268712b35774647585a46704d714345756855577231626d5352327452714f6b693649554c30566b4f58525256504f434f797a4f4835714a786f54326844502b4b53675a2f696d774c7a414773692b5436616f6867716c39333043766e6d79377179506f4d6f664e5266334f452b79304f2b6235696a44356179484b36736d64636c426d43354168797555506c414b546e6b35724d665149426f384f693453514b5a59772f316e4936317657733531335a58505378762b70625642495a474a57334c6472386d467a6373557a5456614530714c5638467854694249536c307a4f544d6e46616575584d6f307134536c30687a35516d6339575632355a562f773731555a4e333064562f4d2b374f4c71307879726f6d695a6c6b57682b6f365031534a482f746d2b597863313079756630416e534e565472546f52556f6a47545257444b453648494e4672624c3264716e63774746525643524f354958416e59714a587a55684454375036446d6c2b642b6971483041395245327761364a61593570626230314c4f3348307373556d7443364e65376e5843687a434654766a392f424147552f4969696270394f6c323950356632486e457635526b6552523856734931412b5a325a724f656b6b6450464c6333744f6d38736573717059624f53786f544b4d386e777a797a4b4f4a775052374f646c4f6b2f4d48787939445567704e725a664863665769755a61476d6d724b30556a62496d54586c51343874436c36664971475374757075644c79512f61514f416d694659745776534d6a657638656479615878753378504c737a6e31346a3537714a2f354b614b357369654f5069397251536b46765734575a50742f774165676d623471306b70517034654634372f414147776d4b687a733137755565367049395279574a526769574632684e71416756624f57743666396d6b7367735168554b6a644d546a35784e4c687a467a2b4761425974476379715a61426879634b31744a55426d7671425537586e71325a3265534a62676b3068593036714439737a49676d36507773614a684b504a665845384663755634375a7a596531574644544b36524434724554303835516d5637707a52444b47656c5a716e4e51424a37506c36455a5471553259695a3642705a3676335671783235364a5a78525a536d365447305a6e35336c696173316c4f6b69696b38336f597739586c6a2b2b74483366464d51657a6a4b514d59436b506e4d3276644e4a71703063315947632b64794c596e6b626f54434467366d754b3271574e4e4644724b4f4b4e774f6e5347327164764134665355447279447943632f744767706e545362374e57744a792b31754a526d647153775657356a6b4f486134762f414c4447745a7858737a5864427843744b54434565532b545a7763364a36455651386b6855313065374e65654b347a2b2f77417a6f70714e715a4b386d5a6135654a61726e432b4650366e4a4c6155314146552b543672615a38794e674b6f4d2f4b62786c6e5a616d44727573765a30657a5131546e56504f5331352f446c4e72484a54534a47514a4d456630454e783858633364444b7838474f6936712b714b424a746e3632385636464446776a70684d58735932716a514a41444f5a4a55344f4a39314c6c4330396432336850475948512f7a6a7a6a4239467654574c307a78696f687148746a6938675a517a4530386d7479376e585a6354767448526c6b71704d703245345146694161507a556639594863386272573357477032527a3562644370584b796b375473564f414d3870525a517a2b50616d6471324d4c71382b71353746434b716c43356a703070537574523039754c2b384d3959734478544b69787a374e6e6f6c722b655a3363335a4f49394c4e33374e506b695877334d5a734c4b71764e58594a424d6d515544517232312b7a39784d5250554a65552b746865597147664856565a7136324e4e5652684c3862745a6879637231714b363750674d754f4767364e4b716f6549494252324e4c6158476250312f534b37654865472b544f564e6f6f397a5872694c4e5570417079624d732b3657744c6d787839524f526847734c4845425548774654736a2b57575a762f6650736a634c30772f482f53314a55332b5279393865385466696f616e507542564e564c4a43304f55386558386b5135636130726e36396b68392f52485478514d6f726b6f444f312b364274334a6c592b457865586c75677a496f5633517979743135594c64463254324f56345666436c71452f7571697972762f593978304837312f58463158767a7a4d385a367945445842384d2b7754527475513342626a4657505570676a537078524143382b6755776d56587768396b3245734273396744316f4f446f4f4b58567035796c797956625257433574435754504f704b5730776978556547396a447a4d7637446855316e4264534275475a36334f37377841624e2f43317a31786555684452554e692b5461477176734c7336745850755846505778596e6f6143693046396279546e7641484573442f52682f515a707264347a2f415063373563757279484832337679496a6f6d35544b3438396e7a55383046496f416f324263667455342b6879594a754f636c48544d78524f654d446d7638416b702b444e6e6a7a646631453945594e4b6e785146325568344e475256573471632f34624d796e457a75734e3267766c4357483843666d2b622f47794d557a39374e52745456696330734e4a2f427462517a3268525070387a3549644767624e646b56616a4a6e4458542f4837444a4572634b53756e6a6e6c2b6c3869356f774439436f356d2f5a764f637a6e714c7971395278736a2b6c3352506d547348644a384174526346566664537055394d6471574b36364531324e35304776544a47796235686d4a665a543541445a337158707861444e5835514551624b376c4c33536d396c6e4b4c615a677364474c42645532786362766d49784e4d2b4f5355674e4e505530685956586e336a3673564c533159374844565a6d2f546f486c38334a456e526f4f6b54717671695470726678616564616e71436e6b762b6d33673067416b44616e794b444f476d58782b6f5a367a6b49507175715a66625a4a656e374e7933364a2f4d6e57486c467855645842314a525555336a475a554d4c3541722f7976316267785676596d504a3668623456303533476f6a734337583547767278687a6b70586d62464d385a4b53745644416b43396a7759345073704359695a36514b76322f557176585850506655324c2f3070564b394b69574f505a6f7267756f34685968724d6331613332615255304e4c355747646e446e4567467167526e753768476f776d57334e782b4655672f764d7535556a4e52664e6b45507a4d756e4f5670653679586d585173716d4d4a7771396e4e43596d4330476463653135677448696471526d5251547938546f4d7a6b5630314e30564247783157652b56343666663073616a314a5346584f642f58796b487555706f556e52416a34352b58334a333764442b5535664e64557965796c7379456758794a3147314f796f64437570302f4a653345313651542b354f4b624f73766465537262376549695a5851637433597539377845432b7664516c566c5a346d6736694f476e53477079524f67557259782f62466537374952707058374b4a33413759506264753743384e31517a7a35426d30456e37384d6f574b645248525a6b7a68565a79623536526c2b7558766171656f7a6d6a73644d6e335353476b733572757450684135594c38687548613153666248486c3179656137504453756b6f704958464b714b4749636968786c4f483269575244424c316f4f2b70786c4b5867426447336c382b6f352b2f33504e6c4e586750674533626b366c2f504e6e58365935642b614f6f6435796d6a43714b78666a383672685669384c6f6d55553031763170715a766a506f3864706f566e646149395948484e48487a4d652b6e4e35567a517432556a787457636e3545544f64442b692f384154536238536a643758786c505247594251664569345779733642676970765458532b5862455730536a3352466a31477775564d4262465755336637706c314f576f5a33632f7744625a7a345068393567515a636144474a70756b65565850314e376f63322b625a5a574671555670637031417164637a506a6c517054535038413147624a466838482f5942383536786277575a73797a5578556e74347771304e707a6c4c706649344661697a2b346c3379476f544f6163796734377064497a2b4541315762336c58482b77674d65385339764f4f6f6b65414f72715a54394e7730396e53486a383473616a70394e71624b515373454573476859766f6d4e6e66576677476b416e565a33665631794e476d5a537441324a5773306164544a58416a4e34795575386c4a44564c583735317564302b70596e73573964306a31536668764e4b72386e7653726b33416c484b65785655747833303162415153522b5142393175497348664e794e656256556e6c4878396d796970623131687551664671646d337a2f51657567685461323939665064564863784645304d764a67616a4d7164433447306a484e376c66564575646370596976372f414c654367654773664d4656656473314e3235544a397a6655564f5a70414842362b5350736f7a6c7074474c7431774d574a63554b58383532716345774732674f307964562f576c5a7258767a496c766946716c2b4d313747647063714b426d617070303353614e6e56357a4e443630673174784f7654386b64475345394c6839346470553548457a70573671746f3573514a646a6f5578526679694b507554767475307331363448717058577959396958557a354839356f616e436e6a587a35534363766d3971666936464c755643443837376a617538727946666264617566716e7832544e5852387a4867683063504f726c355652517173306f6e4a546e5050334e5548452f30444d2b6a7a673142567979776130366d504830454a69512b70435547314a4b4c6851754b4e336b4537503075686251536b7950767855663042397363547132546e456d6e34725964656c55672f5355356357635a7a31324e4c356e5235356a4f382b415378706a4d3154542f7743723465304146756f2b4e6c64442f682b555573697830436c7631376f5874684f37536c7a4d394b3135767478364531765a2b76615a32434a4a615566422f6f486233432f3753346a6d75666233644c6a553079504c566c704f3559635459706e7a726c43504c48733632434d2f5a7363515430616667522f5141504f736a437a64496452754b363671374b70477169486c31436c52366b6f776e4d4e537442525434363072596b326d39524c2b67302b304a6d6d3673356a644d596a6f452f5a4b753958667561444774706368576479786132707434746b2f58686e795744797869353253397561723264523835636a6b68764e7951674837633965566b3834364279346a4575646a6f6b7a34586a4c48725a4e33763731704b5a6e32544c726c4d3554722f546c617442704577535166315047302b6368434f6e37724f683546334f746d6e7174486b4e5a3975426e442b386e6946334c2f41473250614b684d6646634e69514d41636f2f61354c6d4c674b6d56316c7132365037434753686558536475626f70626e3968664b36542b53396d4c3161382b70644b62516431594437624a754d39334143627270354161714173622b512f6a3943445a3068376e7a68486f7a775132486e544474544f4846694a794b33554354766d457543524a424b3079303171702b626a72356a52373872767a792f454838596474654a36746571486a75463546656a6b4d666a766a6c74506e507142574f5431316d672b33786a78327a6e6647687379793070355075396e4e544a6a6e53432f65707974395053314e534d31722f77446b61356542663370667752386a6a3032772b706d6c506469313261644e6572344835526d55617a34716c7856356431533456685a527a6e326a6a364b334768476b304747416e374f3374374e7139394f6e3568737a36632f6b3936412b736a4f4836512b652b476559374953616b742b626c37574234395279323557693537625046717247587a4c4d4e516d496574684838756b4131784a70576f313132587232713752736a73785a625048744e567a726731317130536363364a3574443561477a352b51306b6479324e4c2f414b37497765627764797239586442445a486b44732f336e7277476b767162444633306a383866754557446a7538544461766f2f38717a6e5a58472f614f484e79737a52703866396d7074646c596c5558374566682f6c5a6b6a376151544c2f4146725872474272352f623767346e77322f5331664959646c724b61394a75524c58795a55723250716e414649307759653331724c7248464f43654a63774a324d506770346e6c7462724f3056702b51744f2f3550366f53654d42526a4f3439484d6a50594f5033573868634f6e7433536e6b6b44737049793253354b376f317a6c2b715854485136686445686f4972567846636a6f66562b586670442b4d6d506e654c77654a302b7233724e426b356a2f4763474c325a2f6a586a746c476178624c364b5a45716c3174614a38394174765238314a39316e52544163376a6b546a3775327078374e5279712f4a482b2b352b556e707259632b72732b4e2b5036657a5268614f466831654e54357163664b52514d3057566f726f6f653363314c645358556c6f6f534c4f706b73397156716e45713439395032576c756e41632b2f55722b347a2b626e355361486a57503474576c714d5454357054617561644766446f3534755472365642756b68575836666e7978664335307a5255476238565a6c57626a71336a523064506a4d2f79473948702f3674654e656c487263646e682f4d37796a315448785a483878322f49685861754865304b69304d3941366b717534507956446c70616e39445463526e796754453448426c6173327278374936306568503564656d33354a723873796646504e737475746c7a51316266696d39705a6d42664458546c4657322b584c30744f312b2f2b396771456a38424a6b2b5130394278416d6b6a3572616471625a6d6f71627a7a385776547a7a4c793754387377624e66777655386f374e7a587866476f7447504838686c38722b314a663548506e6156547a63546332474644424541556b302b30302f38692f38417130587445596e6d47772f696634312b6d506950706e356c6e35666b2f6b6d356f622f68777857306551583636344b49764851466d596437397a5365326556306f797950617066505a39774871587a32392b4b6b33744e385942483852764d6b62767074745335594b6b546d39544d68703664374b4a39616a58306b46616234747077695470345850347272564b4d7456706d7458372b6d5561745a6a476534654b582b38702f634a38712f4a4c383166556a784c303731646e51394c7653717776545877624e6d714753546538696757455739354b394961514d636e753555736b63506f66524e494c48674f4437447655396d30597070316e347243656669422f5a722f4b4431773942504d50794e3869386b2f7744453077342b72355834333470566e626e383135657063417371763666466b6146475646687241616f796f6a30692b4f6b7337555253566454326e5472665a484d4f4e562f6b766c3245796644386166354a6e594c4e666b656a6a4c32577833323366637157396632464c3655366535385037516c7a2b4d4551577066745a7a3479366352317878456562356b392f65664739626866504e4f73725a627573304259546f644359636837486d4e41546f6478582f426533374d7073366b4a5061774a44346c366e2b562b472b53356e716a34563568762b4f65662b41616d5435503476356c6a36316475336d614f5a624c7277326b63553747334f6c4b68624867333264396c4a7553483754545a516d73544732613874682f51732f744f2f6e78542b646634375a336d32336a737a2f564c3078334d76776e314f70722f4146433366754447737571312f6a2b46525170595531687557796453682b795a4f42714a6a6f74386a326a526e53766a484c62736a71786b534d58566e6764437a552b58535a473279417649437a4671625052334d565a424c2f3841533770724a616b54544158777154325a522b3979532f726d467962694447444f577864475978394566512f6a7746504e4163396a4f305251742b526156386f4663357659494f366f58553970503454415443673148676f693557353772475a4f6a7049557972755a49495231663775313539646350527370367a65355376326b516d344a7146665737396a6867587475566c2b4b7946446d447079524955483848576a485448552b44466a30536437546451635a454c574934317444445575787847664671534458475a3835483838582b364c2f41484e50584c3867667948322f474e2f5a3876782f4376426432724f6d384a377975444f7a37386a6c4757484635634a4c3756714a6f505162305439784438707053535471396f657a6f61464e4f6d593751306d7739767a66315430672f384145386a5335712b51525279752f7744445972717731436e585644594537536a4e6558623971646e4a6252583878435a54556a385876712f72575972587241326a394b5037496635766573506a30336c476e346f6a786c586b5a38624a68362b73762b5330704b4d347041736244433466716d6c7a6c675656765a77656e375045382b596767646c663272537262683343766658542b30542b625834332b4e7338792f69586559493632427838384c6d38673050342f6c47594e3456746a7257522f43326f3865667041437a5577342f2f414b7369442b7231396f307453596a736a5744307a395a2f5754304839525047764e6b4d38353950765050414c57616d48386a3958473059794b544e6b4a4e694c487250364a7978696f4a4842546d396d643846415050767a426531613369613971736a2b6c372b4150356f65432f6e502b4f6e67337266346635486c374f69554f486b2b70336a2f654b5733503841557950497a37664977506a2f4147725751584f6e624431372f712f446d2f4d41657a707171385456307030727a5366702f434e354d426b77314d6d364130766b2b7353436737566e736143494d3256516f5a4e556b426a43567845336956415a6a5353597a2f616e2f4c6d43514c353961314b534f53647256747475532b326639467933577a702b78756d4666525a39784b574e53674542374d30414376726946483942584631544a39375134754d66662b3954374853302f683538337a353531796266574d36705a3953735873544c5032592b3676376b46552f79307344487871576a50506a4358616c5533657771623078694f6147794a6a47727271702b5663736f364654695878613238396b79514432384e7156687a382f75542f6b5a622b4c2f414f495872723633594d666354793341386562343534355a4b6762594d2f543872616a4a794b616753584b2f48364268537341702b74656d766a6c702f774332776c416e625270763161306b667a47374765622b736e714c30625076655165572b6537737753735763703639326835426f304b5137744e54484d73373162694c695235376d4e70554375413875382f72334f5773656466586d4f797634702f324b2f563731727258762b58623157486a35302b645658705a717773504b6137476a59764930453352705448594c6e4a5638334b364150682f706738624b2f7063327037585773596a313543532b752f39674838782f54797978486f746c7a65716d5349533755734a39386277764a5a7065305479446e7058554c75374a4d717171366c76736e57344e412f656f412b32433630397130707846353269756d2f32492f376a412b6e4778366d73394f50422f47573573613950766943504d764737664b7a5255624b4f6c7a4d793356537773354f4e78636b6f50374873393655435a6e2f73762f69744864746d2b346377366655583158394a504c74727733314d7a3638587a434c576e56616e7946524a30735367757358714b6f63376f6b78626c6a436e6a7632663648455376706e7963435276747261756178796a333666324450564c7a58314f2f743059753173573265556a3472366a2b62344868557a70612b4e6a7950475a7345354d6141554368496c4d4f7459766a6c664d6f696a2b702f704e505568354874645972717a45447374346e6330716b716e5a442b31453257684c454b3548783831724a666e396c69545a527047326f75457076522f524a3971666d3979702f77437555572f74306a7a6b69676349353150314f5378584b2f6c30762b4372344b694b7a4746333867785561345a31724868423173437a3936516d58536f4b6536783766494b79736554537968736e597463374b6b386c6944517a774a32533263327a704771657268547a643934687744446e767135387763582f414f2b37363165532b68583450656f637668567a38757a314e336f2f5457576f44724357624f71307062747838627372346634396c552f3250325247324e346e384d5974514466723966736c597471317a485a346a77612f6a4c36462b572f6b7036382b452b422b4d5a4a616b464f6e5258703134324d65677164636b70636431364e4254757833477a3974446c7666396e76344d667950424b652b7061385570615a4859543878763764626648664338486538616c7a62744441385469774a344d624b676e794674792f436676553250716b684e7446543265306d4e536c4a535757557a5571344d764c71634b61325a7859635048727138563037634771436d48536c706f7a6e386b6f6442354a51444b5262664f54324f466b626949595768396850324a6854784a2b2f696b442f4146306451346235716d786b3865646d4e733474625a46713979654c6f5656566d364e694f64597633544a5439476f755639377a356b2f45482f595358784145673861386768574c4759756b7a786d6c633431315a3954772f6a2f49427a657a362b544e62514b324c557a2b536a457749653839725845536d6d716b7051442b6d582b4e666c422b6f2f347a666a62354f6638414b624f6c76656a33674e495652337a315052656832584f2f5a6934656b6e766b47654d6b61763841653976754659453158426e75353954784c78464c366b592b4962666563787144303438326f3754476e466269613849614c37666e675478624a614676666d354648482f594b37376951506a6673394b56516d736c68396b383639592b59726e304c55692f3064394e572f7976386a3166694f4a6e74714b587261635949744f79724f49726f77436235686c64395a74496b5177664d4e6676736d644d366532703237664d6547502b39582b59506d4872582b6150717a34726f55736d384439494e6476676667506956785a6c736d48526e315938336b65356f78372b543269683175686c2f5550334833765677665a4132705653437655396c30347270566e347243322f78472f75322b58656850346b656e663438656a6e34797965512b576544625071495850574c63383731754b6954366c7371714b6d6a7848425432573756696c4350366c6d6a5336535a456151372b77377a6c4e645432654c366c3732314f5732336c2b51756277722b37642f63613864386c33504a63337772304a386c3158522b41366c4b4e6e786a503148354f7036663430716346325a56497a4a36766337342b532b6968504a6d413077515659464d59425733732b6c4d5933534f556e7248366d2b716e7152366f2b666571336b2f6a4c73487948314c31645879766178636e4371373474675757633172376e2b4c574d6f2b444c7753375a6d6a4e5973752f636a396a66746f706f56547a7070537459725750674874792f73756576336d5872332b413369582f6e6c35582b562b6b586b316670673646735735316b6d46674a7a3954784957554c6f6b50362f4d2f537930727459496c544d43765a4438793148543558745649707257783262635276684d453948354f364e72486450546d39506643326b7661693737493175356f61436c733747585263746c326855385a614f7a392f64332b6a674f476b52792b44362f6f495436354b5a4436722b41595448396d654d6c46612b4f7256447a524f6e7948464237656141706439676e5a3839583170526d533659735435477470446b30375a723262534c6639552b38373468466654656363325964566d657959736b4b354754356b4a466c52524b6f46333179687a666c4c67744a314d6b7a766972554a66632f71746573664d4576537a5775676b313173526e78506c314756545a3033746a426b6f4c4e694e483944525131724f54726e643275346555715534763130477064376f423356736d5274744551324f72374d2b566b71706254746b30457257784634714857396f30414d71436d5558796b4c633065645432687846304f643339336a386a365078682f41763867665658733158664b4c634e66682f6a722b7a4244796e53386e64566968624e5131335854334f684e376b4b656b774a575934357a39782f7339765a36623957745234486677672f43665839665644366765704f4473614f647430477a4e313352617a6e36476d36784d3175725464587054746331396e33756c54336e4f41394c2f384150327661336e72617570465a78583136396552336d395050374d48347761363953376338553874362b7a6d6f4373416b536953505a4a6d6f47375050566f536152645157382b536d69696669714d426b38775a3876794a446c74375471784f4b323444553731322f7353654c2b4e6c58354c34566275352b575764397863644f74327a2b4a63682b4c4956584f366561664a574c4f71676170754d4a4d79597a63686e76636d5937303972744843525250343065715872332f61353870316645764b356458315a2f452f793364776b655a7278733736392f67327072646870304e66776b4e6c74424a75435a3151564354706b756e3968304c5776344b41767156703752584d63756f5064442b4150724e67666b562b4a767058366f654b61594d774e7146385465706e6f647053617646725462342f6f7730542b314f734a4d466f5373453665395a3776694a6f7442336c36314a70715772493344783443616d5a734d52786d79326c2f5933757635546e7637384e44616b706e4c67754a416a4b38326e776a5a2f7744436d2b7632674b2b35695256444e65785078572f59427470506e61416b4b31664f51314c7357343746476c536c706c71596f4644374f4d557044686e4e696c67764d58335a65657731356b787147784b4532726b6f36714450506c415246585139535a766450384c70794d2f682b4870483079446c4267436449763437575570434b4f6479366571736c652f2b50524939644c574f5247784a3378683770584771637749662f6f677449704c6a6764523055325a485631557046787470424c486c4b7478524c2b7145637053496f636e4e2f7743764352694c4f6d3971775a5a33326a3877474553386b303833457950494c31785a38552b5042666f48786655676e4e796336576659304b564c5a5033756753452f5853542f414a77427443536342496f55437a4478522b4d2b46302f336976376d506d47372b51666e3770505258304830714a49504559444c496e334d5478796d706d526c5374354354343855787a3255616469674d3742645775644d776c2b2f36394b5a2f7741507056696c656177396666704c2b4e503438654c2b47795a6668486f7236622b4d5a6b304f585a6e4a787647384c4f6c7a73316375314a4c63756a476c3465686e6850384179436b7a43596445547339682b386d4a5835317453387a7a5774595354314b394563727a48786e647839534c496642354c452f782b2b4273596f785a4d696c746d66716d697568434b4c364f776b4d6a41396f76614668756638776a477564572b4a34546b6346767a552f7370654a2b6f336a47616a30787144777279484678305a477a664c6b53385a7633486b77304b3869314e76566f4b65704961524d2b33784d727667476c33597770535a417671302f615a724f62385272392f77444a347679783877395066574431772f7471657447395674615070587237757036574c707a705275706a78396c32527371363979565773544e4553376c526f4b67654a5437556d735236503961653261635457757658347576727848726454573939455572785370692b544772332f636f344b6c464431696b794e5743506a504e496a536f7a36536944356638414944496b634163383171565274736367356c314a357856436a65757276653661614f5642496b6836346c4c736e555330465564585538635336457236762b67385933397a5430553875482b2b58366136766c4e333350482f414643394e37747278547a464577343975546a654a2b4d373252704258704d7932397133464d7135546e66746f6579726239714244336b632f666f576a2f433269493431734f6a663467346d47694f615676346f4e39475043477734766c6e6a4871547562714e727a483147336457444a755664354f6a7456443858356d5a3156436b4832385572796c436c6f4f3635506374535a6e393575734f69767174364262477a346c6b5a58706a7158654c62376358477776756e3979514a4939486e3862526b59315862445a6a3641353631394250424669584a53303648316e30353859764878437576524c38594b76544b48466a316655337a337a37487848612b677558314f386b4c794d63364a7530507467566f304a5a522f6a6e706e56396c6e584b45552b36356242682f307a62556965746476794845442b2f39364c35476a365a65452b745752695a574e35563433765a7667576a7546567130655261325672466e325a434d734b744a335536534a307a304c5845626e70625370724f6e4a375252316578326e4e712b4130522f2b54557755722f756265577a655454376d596b50514c7a7a543861676862395845713247466a614a4c34656550493578546b304d36756a704e34594a3970413570644b445432332f41434b2f785648766d68796c724745472b34366b76637a3745464b2f314e305073566d724d6d6d4c6e526e397562482f415055483376586d78794f6d77577a655944442b505472736945714153684c54533643716542554a4f4b694c34556933396975727163394b52494f6d355a2b34577453625065514d476932556d5772764b70316a4b355134506145746239553670347671394d684a78464b6a505776355038584c3068636c4a414c682f6f4d4a356142617869554d597a744c5a3070704e4b6143545654496f48714e326a376859663179425344587858426d39782f767166596b482f48796a533933614b70337567597472576f582b7a76564b6d34753230574c373072507153382f58413666372b73492f774449666f7567684f694f5774784453736e6f374457344853636b624445626b725736644d3652366e50344e4e42394152412f6253556651436c3447416679392f376f586f50356e36582f414e785031732f486e785477317974763142395575362f67506a30476f2f6d58354c6965587458712b4d7436397270666a6e6f47717a337073465a724f59684677734d332f774265316f5869326a5738384e73637733413941503757587137364c2b6f486a7578702b4d2b6b43764a50443633567438373837302f4934505433773362356d5a65346d797647375050397165614365686a457452305455483230475371654a6a7a7637525730576a6d7a622b5939496e343665754835466232342f7741573164583033386d77364d7265306647644c30777a3948483865793972487757616d6c4a562f4a487a6c48742f796638416f6765687a63516b46554c695a786e46657449784d52502f4148445162386c3766576a3158355234623679666b66353736512b4e2b62485242626a2b6d76706c54355448717a704844785a6337546657364c4f393130704f354a2b7a6e3730444679545363366b68745462586a585333525838773554666b2f774432694b637638562f49665672774879532f7a337a5030373231616141325048744c425a354c3453765771527064627638414c41567662416f736a7165795a566a536546516759425131724f6a54396f78715457316474624476352f38414a6b2f7878325078722f476a312b5a3566733573337150356e35706865523658687557656b37523851675668537378466239644332534d6f766c366c3472357a6a68427942627a6868372f36342f627262373178777251656b5862725a6d5a7a6e7877756e70573432336a4f702f77526775504e796a7330476a557165372f4e4f6f71595454516f6a3537477057587968336a6a50484d5941714437644f6849337450774e797a625965696456476b425a79737a6763426e786b6a364d76614259433163372b7659446c675a4b456c44496c6b74704a7a6a5a315574636e4b6e48497952396e55735249517468716f696f63384e4176745477382b3333684b4670712f545244336973424f66386d756c744c5155303575355a7a7353563930544c5a4f4d46362b4b365074636b5855306353705866385072636f647752347454674165615a30577976527736464b4c4e76794b7374726756784c3759446a79594c534d564a346a555347586f467a325059415472635a4b42624650446f667a79765450385a712f78752f4d7238312f517630316e75334b66537a79594d663038304e6a576c78796f326b4e6f305377666563705031435175786e654373415a714a7a6145536e4b46464c6a396531347670615637664632687276356a2b4d3335736570666b6b6e50506a3370623330535679726d387033537a345649686f56796e54546e32644b504c525056517778617272356e7a614345653976574a4338583036786d6f3651656e58397354313538772f467231434c7962316d38685079374d68313365493459616365316656486e46705a2b6d743973525576314648506b6a4b456564664d344131586f7061763275576e4764656b616c635635665742705234392f5a3539584e5a63586d4d2b6e4c6e65503136794a744a384b4b56364d6938702b544a5533636d656d7475505544716c782f70764670414a76392f7a4f4e3036644a3970724844484558503550364f46347a2b5276346b35435049504b7372796a30663841565878584758354572782f437432353969546430744b6732343048756f637837426c6e6576544f7138574a61736b685133374c4b78626470336a75745566305077592b35636a374b7145652b544c6f7034334f506b50416176326e62633963354358374832393745767167635874396a6e48377a4c795248554e6f4d522b2f543145364f615555525a344e694c7330754c644942525a4c567235507747305668337257746254334b56374b656d4366634563324f754461474f546a4756364e7556524b6b6b563264317168565652545942792f572f6a566d7547704361535036362b7a476169556b61534149356b5878625a486e336143644e44475068744a6d5a564250626d61447675364647746d505a776e54396279356650314963615164384b2f616f6d4351616a65713334672b52656e663366556a38493953487862584773747a632f484c64706772394b664b71616447505732677755556b34664639426f75534530354f43595070706b366d4258614f6a70585569334c717a7578332f454f5a506e2f355735666c583366482f5064767862307439546644693163587948776e7958597a3476494d7a523866334b41306375614c6b4d375755546b5561697652304d657a6c5065387153484b4571336a5478475935716931667874394f76524479377950766c4870424235544235715755757a314132764835384879444f376b6175724c545a577a615852564868324264527264347957636573707173624e654d2f3841494371743757694d5734314856504c39582f434a2b48396679365459787442445972463258585a535a5369744c50737559622b6345666a4d5569794f4a43577a554a2b6f336e364d57757732573842586e35362b6a644872332b4758354f656e4d682f536235503651655132654e53646b366b36664c7365642b746c6b4f6c797069467544517a663943754a565375617873386f6f392f484c6e52747331644f33356834762f37655039707a45382b2f48354872682b51766b6a386e77727975396b624d7a4e797442666b65504634373542626c2b535a31475653376f6a577a53792f614b5554667150384168797651597a6b357150543139664635705474534e2f38417876384148483851667859383238663847394250557a31692f77444c527a6f3050394e2f556278625132636279476d2b6d2f6e2f414938335a7a4d30464778662f6c6d6b3046723433692b324f2f772b6b5147654d33314e534d366c61385069417a3872763754586f2f3552692b6b6e6b4f746d56656b586838377174577a773777752b5376343576355859652f567154564450384f4447363751496b4459716454767647743036654a51366450326930626f7875734a5a3642656958707236652b415a2f704e364c666c582b52486a436644764b4a726176535858385a472f774232376f5a387444664838547944557951514976565a4f395442614b70472f4133527056594b7a6d726539725475747031352b386149663330667732324d4c4a39506679647852373944577766462f533362676f5164673830394a32785a4974474b454b663465716d6f644a435a70336345584a3670306f4257735232396c314d7a62546e356a30736632592f51727958386476774f394166442f41446e504447386f386a6a7038743346304c674a5476384179716a374f64316c4c3173525a45395a326447667067774f6764502f414c4f5469766939707646395730774f737435515430554b61566d645a37494938626b7561326635537a37714866464d755a776c4c2b682b48764f39364d6130724870462f6935764f635278326d395572593271684e386a6a43424b796c565657304f4f2f6a484652515341715756316e2b6d4d434a776539794f7a557557526630424b346e36645054306e432b414c3832707969714f45686c326d684f52633557342f6a2b657a5071456667706e435650752f662b373243674279786261465762516c5277354f627954744b6147784b6f7a6e566c7574346f3375495a3243436667396e306a7063644c544d6a544b346a447a4c663841796e76786a486f2f4662306438734c624a6d74346a3678706d6968546a73635439505a7764437950574b716134794b666e64625561742f477a504b7138364a5141493676623365777a6a5576486a4138752f34542f77427576316f2f4d6a45387a386a395046706f7950444e6d584b6f3274444c545446634f656c2b6c70486e617a34666853496f545142665a4176337878416750696156633364713631644b635430743667644f38622b30643673654b36532f4a594d5a362f43574479725658537133503349315a484e6a4f4c5a7a39474c534e6443584d524962757563424f5143666a4a314d346965452b305574697678446f37346a2f622f2f414156386838456b3870383539434777365869324d376c72396656386b376b4a324d367234487a513463456662717374374d6650572f6947495a4f47776f6f7a536f694c2b735a3174574a6d49734c56394b2f786a38533869386a78664b5a7637656e6f72702b6d2f69445438653866314e57395762354b67594b6d794c31717372574634616d6b4f6f58325373347478316c5a3861452f4d326b5a7132314c52475066547642442b38522b443148356c666a6268656f48343735714d6a796e304a505a386b5a366251334f6869594b795846356644477543775a3439684c3172564678504c506b6f6362412b4e786752505a3962336438582b4c764850542b78786c3776672b6a36392b7539454e6568443655656b577462766e334e52526c715a5a4e6151356b4e724d6a697648796b6e6d6f70496e73636275766a4f6b696d6e556d54663271596e33656e2b4b7738302f712f7743702b7a36326572506e6e6e336d6331396d7235783556354a74573635316b77325331587466424d484a31682f6b704b5a77442f36414341632f51633450742f7273724556725749363147337670622b442b393533366552656254704b62787a7643687132714f503436616e76745454336866474a6b6e6a4364372b462f39483465467a33662b7a2b733761735262456a5562314f39487472776a7965334672463837737555306461592f744a48396b782b41485454714c692b793052764476523933745032392f3841786636764535675562747a6e33532b665155373368583154685561302f497861784d782f5a2f38414170372f414a632f6650384139534837372b2f3674584f65587143636c56504a66334c4d7858457561334e2b73786c444448682b306c70614b792b4e68697766662f6a2f414d44372f77426345663657367a3877546b2b332f4a5264513431614e656968326432554f4e66392f6a4a515348566a2b7a557771436e2f414637562b2f384133663841314a6631412f6f322b6861377166487644773364534b4b6c48692f6a566d7172765570646473353259586137656764795254634d342f4f644146386957787a736a584f7761302f31354675732f4d62365551547978705870577079575261626b4a6f3541656f634b6c7645644e486465664b4665616b43686e435a4969444a55774a6135762b546b6c412f5a2f475a4931304a5a49576151357676466d6a33544b597554324e6d374c6c36692b6a4f5574446f54574b3750725764676e66796a3231766147666238734359654e563879616f4a74434a656871636e5a547042526c72587931465730365a7356362b3571564c5a527245373470426c42774e63444a2f6a48376b5235672f43466b6a2b52784b4d39414935474a5a4175746e49324a7a6c63755071314c347a532b5357366370574877312f4447494944326b7462516b72574245484d30667270576c71446f564f54696b566d584e59344a712f3553726f4c7a62485857476d476268632b4d50683738354b6d6d59436146334c65776f493636657a716539684e4c4e7a35637a516e626b6d733254535272566850374c706676346243704941416d386e422f7351344f48503936583830572b695869666a2f414b496548586a4a7265574e77504d2f4d6648384b2f757133795877766374304d504a385a596c4c4a6d42397171486570302f64624a7a6d646d7a4d413741625142396673326a4635337a384938336376355570385238563350537a42644a35546c627a4272386e3867554f44692f647074386c64354c705067305a383866755431325a2b48306c562f767253797068426a6f317175487439316d6430676e36652f6c6673782b4c2b71506a464b454966367065562b4e2b474a324e5856566537777241386a767256356273354f4e685a615a32627a73486f77737055325a706871766d544d596b4a31524f6e78724d7832514c3857386d7962667953314d6e7742655a4c685033646a61385038666b626f61754c755a654f4e533850497548547930752b613247484e6338356743734c506d2b334e38762b345a6d764a6d33654466715436612b71506c336a2b4c354930523155623770666c7a4d624e5a506d455a3873317379444750506f2b794d6f6a6e306648775a2f77446c307a57644a7652464b61377178777a6a41364b6632572f796d352b4e503556654965502b73336d3435766876716a36646564654265516e3546705535586a2f69666a574841506c667062354e356a51757169644f344450482f4b73764d62587a372f31504a37784965794d6e62546c37567037744f3031727a566e642f6365357249305761715636754d30744a4e53417235743539714b344c753956526250325773334d48566a346c6e754267467851414a436a72466435493379737a5874546e494d2f4370637a6d715a384c45794b4c346d456d5766343631304e70396b724f6c3169564a6e4c6842336a7663464a6b30514c337450514a424d38522b75747046534a7372346271556363756d716e537931444c6f55694c4c467557356650596244594a4d633664783957484f676b69566c764f726e725533356558696e563669776151592b4d6c4572686d584f7051446d513945766b70492f6542414a64415855686d69535a376b7931554b43326b334c7135796d374f706d575970616956733961684b78664a566a7a76744e416c3334766c3934385a533445756e3268796b486d6d7669674c704e363045683739417036477a7967375137796f2b614e4d5a6b766e536349682f6b5a6e2f773045644b645139595146795975574b4348744e7243516d45476e4b6b2b54555468375a52586f442b79377a33473578714966622f6965656e336870556a6b6f797166496859753435626c712b684d6f5a6764475a54385a425150453533304b4b6e38535a4830654f486c4466312f75646f4549324a504c617439567177487637532b7951465272585038594f576e67384e7272437a562f494274466e66726e377961785a4a34375055376741633443564f6765334d61777132745735306c4d3474374637514a4d4d76754a6d7038626d63486a324437486d306b6837486643656766634975546f3733745535766f47655357622b56732b6c38682f56543150766369735a2f634d36693731766659426741652b623263414d557a46556c7236474131434955736d75525650454346644b366b363133302b3439426850756f567844574e424a7036777a2b4a6f552f774252336375416b37685731733676376f46704452534e5344706f5179564c70346e4d733458733635592f4550796439676d6677706566576e4d4866366a68575049476b544846475a3969564c4d7a356e4b6b6d556f5656455350754a71563179576a4f6b6e4f6e4d65693551713434432f354e587842596662696755774f64563369467a387a785a326a39386f706e6c6f4835693632636579523971704a417436667a48314a2f57534e41667336382f6c39775075347268504f533242557175385732436a5063674a4770705a4f326d6173467146634a72715733676b7877477850456b4874424b79734662472f5434727678735951506a716b6d6447394d3569796757775453315a7a444e6c48313943343246387269366366464751537048336879622f76625a4c622f774333563636387a794e6c75646d654e3670796334313474566a2b535a65694343594b7755795869316d4b3167585262573432746d4943497732396c744536315a6a7041384b55366c707179745752435a387652727a6b5853583436704d774f486e526e506d65523230554e573763576c31772f6262702f4d62644c356f78656338396e5053486144384e39797450704b7a4478325331497a647056547556574d3148343871534b4e4d2b574f63366b5a3457342b6c376b434268384c627a4670544f6e6f347a6e316178757a5043427633346e547a7555744d362b4d70374f384a73624b644c7246596d355a4b302b566369304f64326f796f71584a305a2f665278566e374250513937797774316e356936637931495a2b5464517a3571767536583233542f41462b4b4a4b636c6a545570586b54695269706c683074563744724867334f61696850515451644d30437871516c354c6b586531655472576466704c557463367a6c6966694f6b6e584648464830626f79573468374f4d6f766333394b3778366d673534515762333568544a78386f75674f55697347355348374e7a68703166767255794b5663664a79595473646f49585038414d55312f484b59395533774742587869476675576d34397375315357475374566a676866637370644a4e7369395337465a5149664d3753593471464c6f3970386d55502f414f447141336e616131517a6c4b6b71484b725a346870546e687a6336394b7450504f5254666f324d42646e616d526a38484439756c396d6164337549416f36456c50794f3435744e6c6664464a5155456e4a39766b5633496874566c526a77593762326c5059354d4b334f2f54564e4736514463706339306e5063426230536c733952505031524f37644a6758796471323670725a4151357658777a747164555767336b4e597835732f52476862576d317a71526d6f6a3433374e6254746a674e782f50504f2f44647a795934702f686e796c444a433930376f522b437a4f6e424e615330565866466d696957577239474b472f55584e5366317156542f734d34724d784f41734f326748466d3350342f714f4d6368517a4d4f71784c4b364f645539576d7a32756f39314762785658542b46696a2b764f365a6955384b754a6e70475145386b33386d61424c68693071594a6c4a6458516d4b664d566e784f6a482b5256526f5756546f596c6a6c3576526e377a374d5a55746f446f557a6a396d59695a6e454457727962513074344d586e535a624a5666583265796157724c397657556b565761364a4b31506e2f546f612b475531645170502f636d657a32754d396f6a4559412f4241394869357063794c58386c2b31705a55534d7979704645553673786e3679457478686c5855366e556c6373434869515971616c4b6d712b7878663952506e6a62336a6544302b39416f7346325835463571392f6b486d5532666d30496831617071385441456635616a764661454570664e5170656b7570544b4136514561526166784878593554624d596a736a594b534674484b54736e5531536278576d4e7063664a6c736c6e5a5369644655417539726561446c7a6a51707074536d5a4d612f68452b4179737a45645258576a3448663435582f354a344c74555a756a4e636c725044743870395a466b314c7a714b534a51457a2b4e6f4f776865437068425155586d587a416c77663034644247664a764450432f584c4f3544357a343461504b38674f514c33374a427a616f4d71647a4a6c6e5a6b5869317735616c696c677266503154573253554a5366384177624a724d31345277714e4c504d50523379623056386f436e79656a2b56784f6653646a32436e4c717a47702b774f466d7263333570507662485962766155376734746272614b66655074393147316252626f47653135436c6d786d554b306776783170314f4d31427a4b6a2b4b6c7a6c37575a79746243494b737669575a66667375656171575a71556d6b6964396c7a5a5877455578504e58356736704f6c516f636d52736c506b4b687657716d614f4f48636c4d386776597030594f3073314963637a3756414f5770553672467441356d496d4d534a71727a53374c33416174544f354532676579384c642b367152707573735a53354d315a504d7078317670687a6c4a706455342b667831457a515a7a73624b2b416c336a666e504631785132636e564c39692b664a5832657a4559694e335a49547a4a486162464a577669796c4d6e2b3737446e4853536a6148576c54573965747367444a7434656e6e386a6b74724638754e53357473443968595174697a2b3565547a326375393656706e64473339464f2f7458624b59506b62384c6c4f747a2b583342714c5a6778376e6d6f624e4c4b724c6365757a755a797469595a62703443617a516c345032342b434d5856716e4d4241584754762b754b356a72322f4c415962586e5842314552776146505067695343653655562b6d68664f4973687a325773375659444c774562476f5145686e57774b676d4d77595966314d55694f7645515052766d69546d36433269315663536d4b32492b78767a417370574f79334c6e787a716e64725a717535347257556b376e4f6a55724d346c6c496649753469314865465331636f36784e54544a694d7071325a67645331372f64656a5a737536616d6643797450766c6a52382f77422f4e4d765a524d667a58424563696535645a6b45726a706a787a4b64577647664b6374574d757a6e656875534c524e6a786f6f2f6876304b43582f6a386646487a374876414a39444b6b70736d766f32584b747a486e6e78533536372f414b4c394c4f5964304a713057702b6e524e714638504a334d6174584f547034326e522b673041683932796554664c705a557252496e374d577635416b2f75577058436a4c6e6d2f5675546575596f35352f684d44635041765a3873624a7961567a61774557326a5878623437737937396c4a6e316445652f7744726e65466d72594632376d2f4361394255764d366f72566761706a54384465662f41416a6f4373664f625965703356364f6532566564346450727a5a705370396c6475566d78365a6f6a6b6f6864394747653530596d4b2b7155784e37654277316f35386a35447a51666b4a354256742f7a744c715a68672f6e4e5364366454466e7a3438336d5a544b4850354a57686c69727952697035636c4c41585a30376b36582b5058557a47342b2b6c5a69496a766b6373664955574272784f664f504761477343365a724b46636b7a382f4573786c5a33435347663872466d37535774786f5935784e534b51354e504f494d36522f516f2f7432356d49586f736c2f334663685a34763443304b65614c6c2f7839447648766d695032747830684851697a327949664732724f2f5a67314a68386c6e772b4e713975666e596442555a655858476e556b4b6876434c6e4e4e367237614555766279566a3438776a30423638534b6f5a5a6a3636454743594e5a514d414a396d415077476d733259696d383934347a4f667863655a546c35684c4153414664585a553053416c76637750722f4853722f61716b2b4f503570514c72694e71307270623258716d392b585373356e5330796a776f5130434e626b73374c4563704d3439596c7752502f6451626b763841694d46383969366c7a7a7755544a4d575a316b717762716f2b784453724e6d653143686f64397147335048354f4a364d2f4a31487850795039765345464654737073534671443048506b4937493733535372584b442f7363616e4f624532316c69364254785a4b587848756a346154423966742f6f4d614b6f3064435453656f396c384f75394c30496d6c58424f38376b382f6a4d73694174424c72436372674830436f4e376b39614275674151587054626f6146452f31696a6b6c6f59614e6c303038733836727a6c2b654369586e7572707335396833413731552f65447056705966764577494d79366a46612b4638337749516c414a5162366264477a33766a734f4a346f49364b6c2f597173476a6f2f47796c626d2f573533347a457756642f494e6c6775334a7974782b6d4841796e76666e4b695954702b644a396c6a4f2f4934597852552f337570364c724b6570724e587a666f4a516d6169327437464d73572f75536c46694f55425758506c4969514f674e45625070786d512f704b5a53452b4e7659503841712f79662f514e506246496275544a4e7a684b4e744a394f47342b75433072556f3545612b55787050555a5038794641626a7073506f634d7a35535150733566476c62513663527a35724a6c4c68694f536a4f2b302b7150746363455831576d4b796b595066324b4334394b5336495039337a644145337958737a554b79543562707a77396d5a3853626c645a50326b6e496f71484c6e562f486a393530596776326a31706530556a79626a5739424f6242386a30633965706f4f64697a6c664958595069647a56766e36316d69635654375a66664c4359352f7a45454e5a7054314b6a5341392b5947526d4d347a78457a484779637952636565676b78537566316b58617037454c39382f784d346349556448532b5a62466b49724153436d7879444d3245386a6b4e7a747a7161645836394c555635312f73566d4a6b476a694279334639596d534a6f3531597559796450412b77302f2b796d774770446b35414561312b36792f7068436a757072543569517a73566b66386c4c5652473550516e324774494f445130744a782f50302f6b59447a556c524e542b69426b337731636c53322b5131743069747a342b746c304d78386b4d624653746d594b6f3671675839342f6d307563443557554a5a49447632453332574b412f6a314a55644c737a455673797363314d7a5074303563334a70676c42485a363556745336667378544d5743657a6a77612b382b44324c58385956524e384f676a4e703668696737546131656c4b4750506231674e6e4a537671756e3555366a7133665033726d664d78644a4b2f5643542b626f4978793075724e56736d6658786d525a6f394b6368324f7a6149386f6c654d5052577a74567a46694e556e4738505045514e695538642f384151426972715761517159744e627178504f71454f496c616e354b35364c48364c446c2f3952567a486a3864556d6361412f58543972522b5276546342454550564959434e3666734e73643542416c31554e632f61304a30576a382f5363424d6c30695959726342644f674f545472393939433068696954516c795262704666782b677233756d4a773645635645613662394b636d7a754837556f6b3645754574344d34446a39782f6553442b70786e683047646c334c364f516d32577a6946504c2f552b745641335161556858364a30734a504e42664a632f676e7966513934497648345a6f7946512f304436584e42716f6a54506b617866437154706537356255485736576b472f4a696b4b6d554c5a3934693643674e544149464e372b6e5430416b78575753675a456165767a4e454530726b6d6d2f544b67476567596c63597a713749657873734965382f594a61366a6f74625038787344386e6d6d3935775054324243695563396d546c4d5a464b3754706e353954516a34314456734555696c7a6a4976625161324d5374364b2f65423933454d4f4945707270486e4d666e7a393930444d2b71797234484d377151324b716379684e6467314f4a5a6f44695a45716f645150746541653877534f547a53745a4568637a4a7849714b504954506b533343796c495332636270494f50334c4876773041502f41484b7157415a457741676c644f5539373879714d77586f702b342f6b615a6871584e7073556957684e632f745057547a33564a53786f7a4f414e4a4c6d4c4c2f6c676844757a3973746c433754525a504c6d394c655439766c4d44575844505231464d6b7a682b7549312f49484f2f485437614a5a314f577876657870435966724a306b506f4242797459557a476c626e6d7a7179307773477a5151322b586753724b656a3936434c442b463449573477417a7341335479425448746c6d7036504d72744d63754a783873362b374b624675614754492f75673944446f6e4a424337676e394e5669327a4b4966656b2b442f51536b4e464e4e5569774e6933614f64524f6770542b467a5568536c355a532f59365a544d634569516f3664416b6e35766348364c3744444272703277303375346568787241696d356f7a7470434e39636d6941366d32312b6530766558366c5a4a527732716d2b54762b58525a33324c55484c332b346c62737a2f6a683539464e46655458565346426d6443624e2b3752726277324f687a7862764b374b775a32664e4d6676594d727071532b7438536b732f7266517837797669504f586f7139752f71304533626957784d57676d44533472544a696951515776314b6e417045647a4b50626370644c71424b5238796b2f583737365a7533393336385142525833486f795a7073324a48785641334a7274424d3337306e6f715473324d35566c6e456c62652b50304b55306443365946425238725635315a5531326d7354314632656e486d506b654a746c51477145794c437a756268364154655041505144597a3743364d4353666f6647514533342b6535527070792b735958762b663841724b2b4a6d6363596b6448764871594e3551614d374a666771716d4e415354385a6a6d6a566e73315a6a324e4c4964304744506f43342b63416e544155792b2f43435253313245786176666748374e4d362b746c7050466c307139504f726f71374c334649344a5a325a682f53304c7269565237616839673850764f742b4533754179555943325738416d436c79785155554431504b3546533662782b6b71716d4f3268664775473169324c633468566b74584e58796b4a656d3372574c4e7a644654342f722b6f654b546c4f682b352b774c5669574b6c66786c4d486334413561782b56714e4d2f594c7331715171655275732b50332f41447163415570596c6a6e382f75434d476a32577130645662483161336576646c643758542b706e576a715677774a54567a7454566e6f4c656c34794d6a565649787743392f73424e515758356a4e6878315072527463424262476a52557a37364b5732305a4831535846705669487956504a3037554f5763316e7936512b354d2f324a52534162633039725537577a6a6f35776d736e7a5973344a2f7347646170417a714c38645a56557467696d2b69312f4f4d6d2f6333302f6161687049766b6d49695a347a6942582f414859374c77564d4e714b63303148585561353132425179716378676a6f43647a4b6c396d304b506f7341457442332f41422b6c652f6b3339583933356a626a38635a6f734762553953664a6579793038722f39445433364851683137457076545a47713552325843464335327867544163564e2f464649435646536e4f305a69613536436d664d664962764c39363754302b4866773467666b394f37377a4e43615a374551683256516f2b536965704d74485158583169575766575878333253506b34345a37674776666e55644630523756753357585654364b705835756a5453355036726d4f6c6a4a2f707939476d66326a3032502f414f723750656c50772f5041516c4a3978523667766158327168666e35376e5a515333366379796365425830485a7766525a64376a346e686d5a30326642374434304f6d46352b6c76702f35523533714372774442386a2b526753352b6e714a654443696770704a4331316a4659704571564354695362542b62357a4d44583759623173695a6949346a71443659666a4a343934486a52322b566a523566356c2f49504e35336373526a615a624c627272447a4d615472506d6e47554b61666b5356424e714f7636697a37315164787471544d34676245374532582b376b547a306f555465556a546e5a4f7336696c5838684863595a58446c3435624f4a6a542f734165684d6443544233516e3459514139776c783854465634366232717052634c54316979646d536348474e4859366c74355a6938573670614845314b6d2b38752f3567734f38444739714b4d306b51543339412f71495530437a4666595a6f73717a6d2b333973442f6763736331504b75657868546e375161492b2f7067472b39326d6161555536566c4d65643248707a746b6f4f69566b644658527a7a4a4c756649464278382b776b5068634562545342642b75414258486b6d6c624f6a4e644e42504a3956465474545254717a44794e316c5174494f5a2f4865314e453661463859746e50715454302f70395043643877424e66466e33655352794c325048387569644d7570782b66556b4e50687a6832574e6459455448416d576c6b3953314f35547a336a533850393563736f4d442b4a676276703838796b377a7948786a522f6a3668516a6a57365535324c684a71716c30614435686c397374442f656f6b683877416b6b6d7566334245544538596e49317a396350786838583952456248714c365353354754354b3065322b52596d576b4a705049763078307453616a57355a6a55367165566a714f45307a436c797564496e644e3136336d4d5259637971637a4f7833617365746761475a72433530505a61363745364e486331564a616d50466d533143794f74326b77614a6f356d684d5a636d536b505a38795a4e684772634f65432b692f686e51566f32394a4e6a69306b7867464d736c7370797835764b71452b796a36796d41324d434e4c6a576b4f634737737a4d7a31474e766c5339487638414a5a722b42474151744854504f7235527a54312f6f6a5646653952645a5a5278612f59733063545337324549706f49463173544578316741643379506d6f6b545533364d65684d744e3479316145664875646f4373726b334c304f56546b705031545549383664637450792b39375666736b524d7a69425365356f52596c45734d3453324e504f7a6f353766695a6f55614e2b62536a56696f4164424836484a7173304847446c6c774346584930435331682b39617a6d4d687a4c48634a703470527371755a534d436c642b72386b2f7734372b446b55737162545177614d316a52526373356e437635416d3968676b4c41376c626d3447786c352f3344693555682b656a707876306b7967324b6535737161374c6d7a554d66384149347963664b587534366771515a7a6e73445046647537414d53616a7144663359304a2f343941624567416e684d58485a6f586b32484e353431626f4e6378775657554c344842563869592f7264547745675471642f4c6b4a56565561517957364e57744c536373755a51686d6254317963357568514d546c4c74736556454d374a5344767939595a2f376d644773466770734344556a7a5764497876764c4f55766a616d5341327041736471324e6d487865546b536c41776672544a37575a637349342b41515375416b6c30437550573779434b44784b484673536266356a556c6d30387a364e6b6f51654d784a716f62527073746b5176506478467a47536961414e564e3878676b584238724d3652332b493144656457576a6b732b666e3277555555517072646a6b6c316b5932657a4e7865373846414158376448553137714b39497a757a30386d536d4a7738703134326e7a484e762b364c4f6a6e707834554b3862485568667146704b39755556444c303764474b6d6d396136393761593650685a4d2b61692b723266352f39536732474e664162766f39752f727648467558363839514e50733564354a7936656c6c785574466b6c633433543973582f784455364d626a46374b442b425165314e66772f4c545431632f6e39772f527854517066556a6945386c5a337268717a305274393076326e4c3244356d50344f623970646e73594b766c6453617a39733441514255594a54586444465239756c3843656f537062336a53624f55357156646a65444567535234365679367574583756707156536b765a2f7663434b5536336151615a4c4342314d392f5265766d6459667a364358412b3143732f71316b316d6251376e574b4c6e756a2f77396c616d6a2f55384d6559536c412f75544573444b7167376d647970763979744b7072567a4174644a4c3675676c564d587867416a324a2b49763177456b414c67574a364f5563483163384a4274545a782f38414b4d4b42545a54716734384e4575524c546f746d6f2b74566c7330426e62384875503741474b514942643964696578623133535055782f6235687a682f4b66306b62354e4e3354767538733132576e5576547a7236596b517731346d722f495a2b777674542b30625734744d5858702b62373441764e615559566c77362f38416c5748722f6c56505032757648656e4c762f6b63366f5853444a643277362f722f65714b6370772b6a7363634f6f4c4f4d6f503477443242385174424a2b644d7a4d385a46526253586c586f61656e2b39464c32305a4b5947384c5157334f7236766775652b5035702f70696d556659736a50763171514e51782f354d64416d654a4e3865633135366236354d5a444f5a453253796d574662385251707261752b694664493053315556386353752f7059544f5033664558742f6f4c4c38644e355554536b4a39376b7a736370385045796f6c537a4f732b764b447242496859796579557861707657453569765946347839724d496735614d2f5a4834623458746e4b695556396f3778484d2f516f75365644706863302f6a2b34744a705573576670494b2b48686463302b677658615231396e5a3743645a54496970424a7257664430637650714e6e56684f35734c43626d4d665247392f412b567832382b73413971614530306b7835386a70597854492f49737872376e6b704c546f30375a48554d572b4a36654778772f4a4f394f656666656e324e55684c6a4b6344434863717654336579474a676a73584d676931456675464b4c487468506b6c594e6a463168644c3639507a76594b674f6c736a4244674e2b4150734f6579616d48546f5a715375306566796b532b5a3552355964575632766a7932665659767454754f646f43766f4e4d327153452f4f6b4356706e43482b58577a47796436494f45433439624b665a77456c31384f667143366a4b6a4f762f41466c4b566d506e72345831334c57374b544e4d464d394879747457753735514666416f433031774e56464775392b6a5366783674454d755268365a624c755430556658594e577735396e733730584851344239382f7769535668424e2b7366495750725a31486a327a714c706b6d316a69725878637566526c75457830706f657a564c425a6579784a2b354b6d502f414e61544f7872662b717235624b4b41634530396437574a6a714c4b6a47695141686d3035367379427363394e507330784a664e68794b484c47644c654278544c464b63597541503044447666705033626e4d726f696c796171587a6253672b366c7a4b4e4b47716178454e48566655544b6a4a525a55787a536163637a4a3143427a4d2f6f5049332f63772f76532b5965566e355a364d2f6833357148684868476671614b4e37315538614936764976554b315557626d3665523472527868464469746f477043394c3450355336663973372b78396a2f414f765330665a6f6a6d316137376668486e336d3834386873703264507957506d6872574366327475704f6c543544713644714d75665132617247314773645973396b62506c71535074586677432f7737307a374e746641536e50487950797a4c31637643526d704d6f522b356d5a4e3338576e7874584c506731726461544f6e6f54397a322b30323139596c38337a435a6b63674a346d735257765871455946655665442b51654f58654d73315042764a33396772722f41504361614e507953477a786c737158583439746479684662615a56764e69674c2f544158534a66754e58394a784e65504f5054522f62622f756265522b6476795078732f4a486378764b746c754d2b6a777a314e7a57586f314e4c52672b4f6150787679334f697a2b6e5a5143567a7a70702b7a326e3332447730714b677a4c69313943493536636f33332f4a53305a5051447a4865304b386c663769623541553146727233625155324f4857504e68686378485539753276682b304d2f767a755575372b7870524779584b6e6167537a2b3376366365562b572b6a772b4f654d66617a4f6744616250494e484e344d736c414d665a3877702b45452f656e7a30787a6a38375350325a736262465648593055787133694c5a6e313679504f50366c2f6e6e4a582b612f71783665312b55627a504276427656447950457a6d2b4f3636475865556175666f5741656753572f7171685a37576537536361792f30686c476b52467145702f7273726f353071332b4b6169452b6b5035676544592f714c3667707962746e2f7957576a59797646644f31702b5265562b58366c62575175306c3035756f536436695974415a5171426f653838542f614145306d663161326e616131774e725054582b7939356a363862576c35783672374e2f664a76495a6a3338706e6c4a76725238736843584e6e646b3139487457574e5766467144544551386d354e53747454506857373335323970696b59723147794835412f675436686668476a776231453942615035522f702f68525a2b766b38782f487645704e7364484b6f6f753766566e36455337504a7537563265715653562f644a4d7a6d71727072624e65724f6d7247727572667059636d2f5650386b50457655746e68667233366670314d4831643849316b79372b46506e716a732f69357a71713041744f725559367935637350324a583973746c647938706a2f414573715a6b6446615458645365465270486e666b58366b2b6e487276422b5150705635643546343136676c356678304e737232637a645646747a4757347579715778637570485574592f736157423839344d4f706a534d486631724e4b32727374584652376276786a39654d6e386d2f5172302f7744502b4c556475706d736b387136377464325a682b53684f55476c4c4b6445726661746d665a52544a7a6e666d6b564b5a396f356d702f774335356d70545a613859346a6f4869354650494930463173302f38646248724a78563847766d664c504c4e71476e536f41663364334e677141364f56506342552f4a4d6f6661412f3168613237355149353663656d48682f6f6a644a5034464979474861386c7432447751356a54525a71664a46733772555a4a303550663544505452504f632f7741692f77444e656d51455230556578557a613135694a48674a6a2f44627a7279332b354c36775a4450546a7a44794c306c395066796330332b704675526d75736c7a387a51316f39506b6a4f6d6b5430474d6b7554324e612b7a6732514855714545766d492f583334306138656131523745562f6e5a3650656c65663435347a35332b507672446b2b6d3451794c793959316b7a7757627238334e783663612f63335a314e51514a2b6d643037657070506c6c487557534639567a7a76645874787261753465566a2b34502f624639522f4650576a314339572f786338536c39517651727a7a527238397a5a79313441325046663546785737304857766247735a30315544644b7667454b706a5962765a377a622f58666f36395a7257757279327277484d54642f446a386d6671556164486f3136674d79334c7663746d466c4e747a4f5a6a30367876413755522f44386b364c6e633458654a5943594b4336414a7042783731314b63656176314653656f5834302f6b4c36573469392f792f306b38313853774648797865373544342b7433483646354664783144536e4e5945334c685a7a69443473542f316a775458396e323272656c707846353875493959482f77416c71385338755434522b54666d4e2f646a4e3853332f496645384f585363454e346554374f646f527a614b6b365253393548556b4c6f30455a54443056673372774d327a63447a7662356a4f6e454431732b5065396772766975495a3333314c306c766b42364f6f556f5a675a49722f486858632b346253554a4c644973792f324a5852545454353474626537327278326a4f3754316b6c3869633432767146793572376f352b734750765766625430552f43484f2b3178687879316b4b2b74594a6854312b7657576e69364b6f787a756e5657765363744f66544c4c4666705755704853702b30517a4d344654486964645051436b784a667548723069436e6e6c6163624a33744c506b503466486f4c76656f744e636e624a4b63784b2f742f666253746b4e587a56644961564b706f704f594b5456387958644f596a4d78486950355066354c2b6f563371762b523372483570586856717238733954504d4e693165566232673154733139424a7a4b585558455645535a302f507848546c63756e324143794832443942536d326c61786273775061422f5a6a2f426a49395050532f302b3953617347545238743872385858665235525a6e352f7a795261474e6e6c2b715438696844756577537930714a4e796c4c583833584e584762336631356e744f724e37576a38493949795046392f4e42526466777044575251366f7a78376a725873766e714f737371706b3643306b754765706455786948326330794b6562332b3158434970742b6d6d7072555a36394b5a576938552f41343239687431486f3049364473354e37326357493971686a61502f4141366333796a5050374f652f774361597474343448434c2b37462f62443949765733304939542f41464c68784a76456655667762786a79447a4c7837794c4a6b4450706a726b4b58546969386856457433552b5076384174626a524f562f742f5a30453737417a39636a72396e3137557657756439624456622f354c5835536a484c38712f5262796259334b2f493535764839334f38666f75356234744e34334d36374e3157616552456c6134516f31796b573170642f3764422f416b6b306637693039766a643775385150587a67517738696f47504c6b736f6a516d6d574d76354e664a3256557276594e694b7257506e464173744e6a6d504834546d61493953427542586e676f71775a595741726b7a7033744e55334f666153766c4e6846743858772b6938484432654b507371654b2b4543734e50326f542f66764373616f77704541622b2b553941686f4852305838636c6f7163682b6656624a53557935575939436638356c76563830785630694b566634686c3433794d74425846614c5a4557535a6e59514c50666f64534d7a645359716a79766a6f2b61586778755334306b446d6c4d6e39712b76384c4144543738302f51546e356c65673372682b505647714755377a6e77677066477649467a79327859756c38617a7a4e485175702b7364437a684765723475554a63354a32664b6d484e4868643030622b37314b3338422f4f58394350532f6639452f7952337337314e78763554796230693832353472644e464c7968794e70467854302b565a6e643149392f693532533652645a3964686839382b2f542b4a6e4f7a2b31715769314f587332487034394d50556b2f502f4141694c43327657503147782f4a7554325265502b4e2b6c63626d2b4778396358304a72714431765a586f45333438736759536e434a394f6e69564f2b4a30504262684f647366397775374239632f7a4c59796a4165586a336b2f683369666d7358706a742b734e6c6677716e6c38327936447a4e38704b4a34374675567354726c4c726261574a4d2f675a784275495469616158583472633241763437366a3065416551576b366e386c4e4431473039455254664b716e633856316b65577752737a4469303958655132705933552b4e6b762f41474d6f4e62366d6145326e4d685a4e69597a474d5274486e392f756c656c507174366b58654d2b6f6e6d2f675953656337586b476c3454366537486a5763334266354e68654f58592b43477a35484933514b65464b4b6b3042326f6964776c522f5a56522f472b784b657a326531613873573566694873342f746a6669736a38507677503947505259714f6679377648322b582b654f52374e69472f77413238706f6a386c3344774e4f716a52546f51716f6f6e42564b4575556135714f69414733346f2f4d396f315065617472446f5a346d626e5544577433794b7a45743055494f6d61684266794f6137342f6b6a4664534757566c6f665a393475392f506544663235532f63334557626f54392b5730614c6c38397a6555756d367a51354b4e44506d5852704964315966616842643066486c774352314c784337394e557967516f6c4e5844322b4c7035626f61444931516a4c715368514f5a4f2f707a684f735a433737523551516f5a396e6f476361547034355037343877344b662f4b4e4d796c2f39757770554d745254347a366c2b456231697a5a61766d30567365774457444a475855304c44375566516f346f56742f697661412b2b723456396e73582b625079486e322f7454344f543658656c6e6b2f717a6f35304774756570653962346834764131524e747459475a5a342f77416655687374504d335349644b5368744d4a4f6e53747a2b504a487a4b6448322b30577a626245634b6a75763662522f6b44586d59336b323736362f6a5472577254707438793942764a7366597a64784b376c5a61574a3174654f6c75677a6561364f465432766a6d5247684966594654615130683437624f4d5253666d4e5750574430442f4141722f41434d324a4f65666669687155656f56506b65563470446a2b47315665463556506b664863737148523875386355376c30724d6467394369464264766e4d4e5070665a4d512f72537439576e4375707747706d542f5a4b394c744b6d6e62563675656974434a4d2f2b655436652b4f2b5162612f4963564b36394b537244587036766c38746d354c457a504c76434d6c6d6151734f663841376b5a7148542f4658384c446b332f63432f477a30313947765644777651394550442f492f4866422f4d527378637a50386a2f6c767336506c4761544131463533663438524b656d585577357538537777437831676d6c4b3378382f726f30623274573236334e5566305466787538445a365a2f6a7638416a33346a497256376434683652656e6e69617a443270646e2f774156343644745538563944506c7458796457663031555465784e6467746d524b49636d6c3865383772326e3855324730766b452f41394c664a38644d79325438677162376561306f4936626f325064794b626b717a4b4673374b487034595567585941563748642b4b6763346e6a45696a76784d324c4e7a306839503674466a79634d74574b34716e3030386f705432345855325335736168585a32504e6861436673646d654e6c596f3539646750356255784637442b64542b594f74346e5a2b5a2f774359586e586c656b6e2f414d645836792b6457667863757555584e692f2f414d6a57506362456a563864632b536365307459765a7a344f7a76345a674666754f6e32644f4a6a5330346a7767612f2b4c4e395676566a794b3342384f6c386e385238565774616f636277304f6f30446a5a4b3938374b50763841784f6f4976614a394b672f695766384138547677686f4e6a306e62574d7a7a6930647238462f79494c6c392b46752b51757a6d2f4b776b624f707079313568766d493163654a2f2f4145786a39716733475530395745494248534a65345a3239625833744a6a45376658386839386638302f4c4c306c4b667866314438597439534d4b6b444454384a38757a66347258544c716d786d73554f704c4b74325a3546784a54745379674c6c534739464a70373776687369306164754e65556572442b777a3668582b466572766e766f427535766c6e6a2b58363765436a36702b4e2b4b375933645a342f722b4b485079704b3939724136565673745668733433722b657a787676764930756b486e423758584e61586a70586c486f6a595a4e3965395332556d724c2f414d467a51707146396e4845712f5459697a4f4a38655779542f4666786b5248555643654f4f6a336b71326f4a2b503450722b6767333542755866366d656c6d586e4969735651716d706c6a613244526a74576c6c543455746a7a614f44592b4650566d3371674761464c6b382b52526978633136582b5839786433714f2f6c58694f62512f6e57545456523156724c6f35623072416c376a2b2f784d2b70337632715675396c4842635878726d416d467a726c4a6b725872487a4448306763695750642f6d713552497453524e6c557363724a3132637a59382b36535637534d717247356f704a59587042687454797073614166495a70786d6364424e6a59726f6179443556314e76506e534e2b614b353536712b724d416574744139425042544f746b345141596a54302f7744636275456d4277322f2b5553654436666e503441352f696b2b78324f6a59396366534f4b69666c306932587837666b4f6c6e7044534858454f7a357653644831724b46653170355832486577535735585637484f4e62506c503942793630765344307a394b482b4865502b54656f572f3662654e654e5a2f6a486974656834684261673761315a2b6654746179632b57506a4b766456596c376b557a30532f4873642b796e7136536e2f72614c57747a5258634f6e503430374346647863667744314c387238393854386754743649376e6e513044795557354b796d626e72566d726a6f57347272685433536f636e365365724251544b372f41466a666850477530514431753376544861382f64483672322b747476714564774f6c795043744238486a3675554e646f797330466d68456d6c47575375787a375a6a6454417a504a4b61666a36536a6d6b576a733432683935502b4d48706e36342f6a50752b5036506a6d6747486f59586c562b4662736550495235746b6551527a756c7958614f754f6e564f4a43784c68487261516e364e49465453636e3376596a556d6c346e76422f2f77435478376570347638416942354c36542b654e784d6a7a7576316b3953683850384145614c447676314d6a43504c6931747647485059376938464e4169763370746142567a657746492b5967374874635a314e3052793467656732466e4b646542753071614b36323574493843324958567a505370374a4c4e4a5534706c2b5a6d665037525530536350796531784c41766679643341477234716c307336705167784c3145476d6b30796b32746a4461624c32636a2b6e4f76737441396230466c38587a48784c665a396c697044764c6d4e2f56754c56557474725a69454f75414b4b367634524c4b35766c5447766c6e326847637a53734461415442333476684542414773374b336b594c3979706d6d7563614f647136682f66686d56566d68454e6e546a7236786a6c673272686d33762b6d6a2f41495a502f5151377a6e61504b4c43687958466672614f714e66777670706a3579507150736475532b477766744d5a6f526c4558515333334159416d6a6743726f424250565055386854364c6565615a76645070782b412b53366e4d325038416b4b5836656b5364546d5a6c5a37756d6b5536352b31796b5464623751632f324573684d474a6d754e305a486d6e2f73562b6c445042667837395a765858533852332f48764d2f5558314c3873594772663476715a426677336a506b333663756a4b7179783657732f655734773673774c3572795449495578696448623756624e3470384e612b73446f50752b752b7a357435687a77764b394f6679783851386a684c44645036765a3369636e682f6f666e4d30667363583438363359465374426c4a44476c464a7857634d3664475a31333176656e2b73597045526d4c566a792b49624c65562b58657630767058344f77664e6447484b38676f71774e7a557a554a6671356d54474a537a75706233576b6e4b6f7673546b76767651733771542b53644d59675955694b6272636f3179394b2f7973384f3953354e76785078373179383439567433786e7a4a2f6a586c754c3576365a3648706e3554672b53726f307165354f55486b3873685654387a374d6e724641505a51736754444973766b564d5637365531347a58622f7548484c385266534454394e762f414a52654d32626d6c71343166707035353670327566706a4e626c59336b75617a546774745048675677702f754f59457353786b6a534e4b6a48696d68387639645770666437486d6550486150614d3356677341593838423065552f50417a2b51742b65786f54435774516234526e4957615230664935444f3861496656706d55484245652f31356f2b647344506e7367374a39696c374b6e646a65682f3841314b57782f4b6356464563363166344d6f4958653133544a756647414b506977415135752f6d3534483665356e714a36416574766b586a4d75377134582f6b2f6852617a38397570477646324a6c327a5a33386d6c4a55536c2f4b464339443350474f6745702f30723533347a3130356e466f6a76416231743955504450517a306e2f2b6358473856314e7a58797944526e385a3853794438686f376d7a5370356c774d7a3445304d4846766f4b58764455492b386f307a2f71737051735a466132314c375a4647654666334576567231683865723831302f51523370543655662b4d4e75316655447a7a65626b65555532426d433949796545527a70367a4a43724f5a4f3335652f596d586a6f6c516d3564696e44704f6a5773343362722b766946552b656633585759586a3471385538506270724b62627a732f55327457687355616f7454596b73687a3845707a4e6a6a78797a2f694d75554d2b57795a6f49723650665a61505a387a6763635079622f75753065724c6d2b6e766d6668666a766b2f4d33794a4f392f3833336a336b377835557961657973394f6438694f7a62464848445130512b4c7079557a473733394f66346636364b657a37654d57326a72502f614b2f4a58384b66587a317638414b4e663062773450537231465636516e342f35523458355a6d5a586a4f303758445a6f6f6a583467334a544f6e537957795a3946626844375851553737424a6e51695364585037525456705846756173795052436d7673564256557079466a7070307574545575566b464a5272585148457355766866583752504c4f532b4b4f6746754e77724a726d734c6c4433564e5174303530614266794c474b61673645734735547549634e5964346c50656949697a2f455336747a4454536c6f5467766a314130564a4f706935757931305a3464696c315532324e7471576a69317476465661702b2f4a2f735a2b6d4a5550436137534e71327144324f41454e4b76504b4c506f6178744f6d75645877566b63473070355764587951763841634658386651325a4d77742f5a696334544c396977567965656b4875586668654f36636b666b4f7a6e5a756665766b6d4d62754179672b7a63576975576346615369546e394764666576465254705a543754595146373078316a6833694f2b572b6f667054365571512f7a6a7975544b3775486179506c6d59685776626145394767365935464c56397479702f4837482f474b782b704d62757a4e4f67442b47647472646d6344677a2b562f6f7634422b5166355a656d5835556f783944794466394b664970347a3165533547776a4f3862374b583862444f2f542b6d75646c64586c6567377063377042502f4776483379557a4c63665670326d6d6e6254377244642b583036394566556e786b4c664b634257317144386a35394935313873706730544c62717569354e564a4c3965356d536c737063464d3374676a6d6b4e394b792b7a6c4e37567477445478547976304739412f4a5a65366e6d766766702b674b4a4a5a6f764b3944457745573645324a4f7876307932334b49636364617550746256734365652f566b45432f7942626b7871616b634b62736744483675666a78702b5462476e6e622f41496435356d78624c4337523476384154322b2b4c74334263717a5632516d2b794b345531537335336e58477a36767a6a4477673662744b63586d4f504b4748354565642b6e47393472334f794e4e4774347437595971494a70744f4e5a53366e7462713962507136432b36476d68653864452f576651584c384d5a32574d374f36636f70466f6b62436667373666353368336a753973356d7171692f54792f4750475a727353445058472f4c38646873784d353046434539645a704a6e7a6664624b66362b49366632424f6a53737a727154756e452b736a6344636553484b6f7279714c30414e72612b396e365638716e4e2f6c72436752316869564c4e4f5748714f417563422b6d5a6d633742493255417477706c6d467949313132794846665254714d6e734f316d694c47467475584b376875634a4d71367951425942642f775161523977454573794e427250486d41706334326f5a497445765871633264372b4f62794f6c58317a596e346554726341667453756e5a4d6f48434878682f514458737437322b5a43554d7a36563866705a7a71744e44413664487a7674647a6d66776b30487561424d34432b4c4876566978677963576c494244764a6d4c5555316633417037643057334b3538506674534f6e545368716570792f6e6373626f31384556717337386d5a3836553963354e4577655662382f4d46506f702b5658714436696263467445506c622f48664968436364652f6a6f32367455572f7a51745664783332715a6e4f6e706d6645796353734361706c344150312b37526e6470317258764647502f756d597a38664e786350462f672f47504a4b746245304e3063694b57544a56342f517652592b58503173766a352f49312f54326c38554b7665794770795566463851646d306a32656573395058794775766e763978663838613966637a2f547466703350345531383252344e586e5478655a5852726f30527669314535452b3434392b716e48717a2b7371584c63776772363561595063395957726f36574b35336270454238492f4d5431707a744e506a2f6d666e6d58352f35686f795a62664a572b4a567775386674624867707959443238357241586a3344505a4f434f7a542f3756596a4b6b4e2b422f774378744f6e5472466473446433384866533331432f4b7a386a504470384f62772f31413536572b562b502b6f7671667a5471716a696c6c6d314b7646507159344f31416656516d72782b66715a545853307741487a54725451516a6c71327270306a504c4675673972485947636a42747371442f53497532412b306c4966317a6b77774e4a443643634e4857463833514f5867415079383972574c5354504f4149484d3755325648526d505452396c38474e7756707a574645717a337759362f5934666b516d78524c4d4b666b414f6b37336931617a434c65537a466e616a4b2b58335073557a737a426958424c373878534c4e47614a722b53394b6459314c58384878683273426d4a59676c5047307a68476335434b645a5059353734365a6e72533276436b75713754446f49637033614548647a6b756652504731624463516a38376b55736237414b576b4a3031687a5754312f42396165505437706b394d77706e304a6c69344b7541504763346c334b4d2b626a56396477654741425054375073422f51632b2f7a582f74362f6a422b6230394f62367665435442366d7777526f3864395a2f412f6d386539513856464a726b7a77356f5a62432f6d49316154766c564e5a52544b457a686b556d6564344e505853317454536e4e62637634525a2f397633384e2f4866376476343738394d4a664e37664c4b6b375737354a35583669655972646c374c3056365648664870564144474b6d546e3574432f69562b6b784f4f4d6e544a556b56474e6462556e57767537506b415871542b4876346e2f6c476e792f796230363954462b6e6e6c72714e66477439525053377968714d4372796654564737722f414350467a326367314e62676a4c535a6943313941336b522b302b50564e645855707469314e2f3562446158307157374e384d7766464e587968586e316e6873697648746263585272384c79576a782b5834394f7133692f6c4f706c52653076634644526d5161424e792b4b70536564735a7a326477352f6569336a58693368393371723663624756696a6d633830386d76384148637a37746c3075646e655936476730342f354661325872427933527565616532636e5034543475547070703574615a6d61326a6a495456365038417054692b6f6d44725665583236666b6e6c7357706a5a766a6d31715a4b353072344d773874366965704b565a384754672f6f45714d516d5968504f72583976397a4e313976543644595031376636522b592b4a59316e585a2b6a6d654e546931365a4f517a4c314d4f554935323061656d32456a4649566158764c71466e596a34572f4238722b7a434e4b5a6933674b6a394c2f41457439415a654e386d38657532664b705a61616173374744574b2b61696d2b56777975374c7157474f73325a307573553736304a4252337a5532544b4666442f71317258365479774e51667968384f2f774472707250412f42504866464133636e7766314838663873386d78585864795762614d3753783853724d6e3142756c5731304334396168564c4a314478314b786c4f6c4e5643614e61544f6e756d6264756f3753354f546d354f626d35523575706c6c6e2b5053683953576d4633745569616453716a307233786b3968727a79364b6b4b6c34684c327163685077696b75575a7a4d7a34684f702b6945427a744f6456764b5268576f69703147394e6351786f76476e7674464b3531615836346e733144757442427049326a336f4142456b486c747a6c515856555a4d31304d6b6758313274476876666f78304654396347512b2b67484831666554664536615a4a384354346a2f6f4d2b45786a6a6b7473367965642f4777535a35333155795a5738704a6536634d716458666479794d69467a4f4f35496b4f424e796f6b463934507337756450674d48506933347672796659677947733676526774684575384a684f424d644257537557386d4f2b586e736138445a384c42446b702f654e39474a66582f414e45664376513976703472796c76714c35637a5868386b6d6e664f2f7741583066474d433533644747664f782b39426e756e5774716c6b594e5a48416b496166685a372b6e325733753732767532375272422f6258394e4d667748385a76482f53746d486636564a52702b623565315a47304131645455723868334b49396c584e6c612b727a3759794a725a4745512f74303670792b334e4d437236397432707537513278395366784d336649304f78592f566d754d6333356649355668354e747a6175664c466d7a3565456564707363796437474c58734c36326e7463674e4e516755704c41663679727152455a3235463665694870506c6836562b72654848697937326355556f352f6b77547861577a762b5371707569377059756e486c7931366a446e4b452f736854396a7234796e5959414d7a755261303771543369504b2f74726546655661666a2f6d486b58712f6355307a664637575a324a354670313839716330522b745631666b46454f734966587a316f37536e73426b35314e504c336f46533061307847497241326e3867394d2f5437303538463870385838584a455a3658674f786e2f64565671526f696a644e6c2b4d4a667a5a2f627a4c35736b7446633161322f47416e54513166474f50766152656254575a6b655a504a39462f5654386376525031762f4142557a2f494c4b36504e50547a315573386a385238533546354262584e356c34344c756558733066734b625974586a3663324d4f72443769563552314f5036426c7850624e713374585636376256486c77785053724378765576787a48386b6f687077732f7a444b7939646c6a366b6e6e7978615a52327a2f4334663058666248555a634d67353335766152663133377032386f39645834372b67506a666a2f6757763439684846734b337030626e6a526f3542516c476c6e51464b50436d355a385030652b32566a53373776635a6e3043372f7744522f727a72336e4d544d44513738326677564c316b763862312f41637a4878394b6b76702b6462563346694763764d55785038334f74315332557a2f79436c67526c2b6c3844763737777848686631726f3675336c734e655078782f7441656b6e6c766d2f6a71665562386f66547259723571534b7a2f48764664755453324e45496b4c317468446b664778596b556f30416f4f7336772b2b372f5630533450396158396f7445634e4d64682f54482b796a2b4c336938766c787879586554654f2b5778366c65644235653538372f4464617a4f5971536b78415a58555238704a6e50325841344167504f663866386c7a573970766262356a6e76384168742f617038436839522f575a767164344c6b61766e586f6e3636486b654a654f6553624e71736a6d4c6732594f314e76646c7a39455432693049374a3243707a4354796566322b7a6e54492f77437474543269324b78576557304430412b46376d6636665073743364426669754e6a737570446c7a6950447a732f49556a4c73525a6b70386f466b4f6131726e436e767a6e2f414e597a2b4552494c43446a372b416f6279372b384a364959486b756e3664654a2b4d62667246503763664a6f3867384e35464c6b6238643862704162566a367678636b6858384f7742396b5a645934716674776a31524a373230657a336d4974504c2f414243702f55542b384c4c4a755a574448365056466a46684a4e4f74354c6f53354746585670636e73356e305462307157706a667252522f36536e6d51483037414b67744b617452336a32615934376873563647663356664476554866795048764e2f442f4b634c596c522f342f66766548442f414f515a7a72477a52304f6d56466f355048576447346e4a476869752f4531626765434469546e333031505a357278714f76506957373476356a685a506b486a6d6c6a3379655149677055354771366e724758782b796b53686f316a4455756d644b35792f594c6669545a3873667a424f617a357069617a69524a6331533051565570735979303833533639764b65546a634e4d7566654d2f7742326478646c717230366e6365772b2b306767567a324238787137416b4b4a54344c6f36305a4b6471334e4f66725368716b48725a654c597947776a596a6a4a37536c4c6e61336439357550384177354d5a746e415045522f66616b386b7a507a39726472616164614453394a76547a7944464966646337786c4547573745756b4b2b5a694f4a305331346148643650544f684d78453048455a394831505a73653534644e317636534f54575436632b6f486b36386e6e66435478703636693247366e6c5571504865315542764d69485267304e326745756a466d316c6974546156546642547a684251353530683052617364623942304f2f487a2b33393576366e657132686c626b6b50636230347a632f5938792b584f74756748796a61303833503866384a4e3161304c7538716f5875513356722f7743794d732b623174664463615a3573623630567275694f32486e3574666a31622b4d587262344a3539343768777951346d764a6f557a7a53777779513073564c644c6e496d537a6974706c59306b7369456a455072464b4538674b637872527637797471794b427a2f7965336646665076484c6e33586a34724c32526a5a72627444323534376d50715a576a2f46396e4a4d3169454d3146386d5a336f7a7443615a7a2b4d427a6d63744f6e45317a6750504d665654543874386371387038553864795045504850453962524479587a6974692b655661336b46655966692b5233494732547235386446484d6e6c427661366870414444372b7a53527a465a6964733877393250396d7679753779722b32312b4c37396f63696e597766443666473339784e70326b6d6537786e66334d6567745a3153334e7a6468667a433668662b30454665435a682b6e374571386e326d496a573166496450557054444d5330546e58795a496d383747485573324568672f504a463071506d6c477064543264344c654d3738684a53497537332b71425a6f584e47614b446a6b6b6b444a4a6f57395a3949334e61774f614b30392b47356339512f493465657a674851446a37387869414b4847704e504271426a6c574b5a326d4d45316462665764553573597030513966384c553143426e7848444d456c505a376a66515839414a3478466a6a553578757a544576716b7a4f5452386e596c565539533437463963526e704e542b306d746f66384176563874496339684135664f784e58476c796e73784549394a585a552f47366346523853756451386450716b4c666230756b52414e76456b735065346944466971556f304f694b6b54644e684f55347843554b437a6874554377722b4d3169502f59582b314354474c53597234616a2f414e674471577746797051647143772b7771396c317466593479743634716c7057756f6a6e4c69462f7466576648385155705366576533392f774241672f67716e454a37323046566e57546b664f357946516d7043595872583374776e4b58476647444766434b68412f73634a704c4150364439517a6770634c7a645558477a724b314c32664b6f6c506d636c6e45336b66636c7072576d6775644e7a6548537335512f772f6f473745436c464361484258394b6c785738467045462f5854706c722b3866535a7866367a586535704c4467476d502f4c324a492f6544385a486b464858733456515372455a71455a384e6b334843733635544b5151614f71554631524238717a6e55326e2f414665785a302f4744535a4d78497564666f4279302b653676527a7032564532494b56755a50782f5a316c525052396877735a386a2f65494a364c577534632f514d496d36452b6459335170354e386769674c5a2f70325a6a35613658635430524969617a36624246533657306d514251584f6643366e3267306f6a6c342b75667148735a584b3553535a7779656230737a732b5a30646355354d4836784d594a4c5731764437543743396f394d677a302b385a616e45394a6b2f5975545a6f6851346a47705a764f594a2b33487758334c6f4832724a6e656d6f2b42387a762f6f4173582b2b6c70393453614a553165355471474a2b776443447255346e636b463957757746736d687157753466744a59432b7a434b2b4277684e78664d4b39427a452f753370542f38416b386679694a4976555376412b36624b4a75445536344f386c74717973705235726c4d6e735259536d687870665a2b6d616761416e7872744e482f4f302f7150353833676c637464556e5631663965374c5a4337526a7a4a7a784b786c64486e5536614452597a7447654f486e7a7a56714c506c514d4f725450565376396b345057763270485462384b504e6170374e33784c523043566e65525a4f5435426d392f6b633254505435464d68627238367a50657a326c725365336c59526f6e4e73346578694361337642566a7152777a48556462504264626a715147736b48467a49564656495751466d6863566a614469686e66306e48532f77427371663075357150386f2f6163676647734135375537346762392b462b457a374236486b556e6b5272543253574f4278305a4c70724a6b5a39466a4b4a6d52576648444458644c70645a57612b55394e7a44396b6c48444675557a45597a50554550497645354a645a39656e716a52464d64506a3251393771325441366d39797056564476512b38466f6a39794363494f63376b5a65347a53662b3545784d5a674a71386579706e544f66463979614475644b334b797758586f6f5a3375665842484b56456e53597556315174426b7a44756d54665238314458464f715351784b45506c5a55526e6f51664a6f75375a6c3862577131415a7a44376c613332435a544248316979554231467a76432b51324e41357a665344656f566f6e62627775667146304c313069694255632b4e6f5a54775036704d306c4c536c4f6652444e7a4f3676726e66513434426d6251626b6843396f6e55514b42464462363835565941397a7366647544326164456b7a596365386c494b55394b79685641734658772f576f5344556d38354f68735a344a4a2f347a36623365537376687031664b59527a3874617864684e63453338557859555a522f487763397a726f55736d4d77354e5037526d614a67507a5a7a7876456430434752705471306146656842307162494b616f4c6b484a7968475a43316e5a5651694e69416a556a2b65576b57664d304b6c4237505a4f6c49776c70303868642b643667654d4e78616b61622b317270566470544c30353337445965336141614c4e6b565a446942324f62644b5036303641597367582b78616c70505537506262646b564a356662666f4e7a754c6b71375255364b4c49702b50736c4e452b6c4b4d594665326b6a4557486336705077564546554c725069552b663841624b4661426c344c34443554356872743854385a2b6679485731494a6a7343734f59324b776d6e504f7a6d6c5376596b61796353597969672b7a4f506f78444b51637559386e784d78574d794f697670663448692b6b32466d4a694a2b70756451696576566e2b476f783042375245636b636a766b4763754d537166334b4c3541556b586538666856503347307a6163794c427a314c37444b63306957726b465530662b6e36304b6a4f514a7454595857785a4a63506443785a677a716e44775530504f6a347a42534948352b68797a4d522b7251705454554275367964445235503259703354306f6f396f4d45317271372b35692f356447706e3248664b3733677a2b394f446136546258524e4c5569795a50466d696c6a644147657a692b6c6c38374c433179716d447a6e66654830306e784c6b43736e673336575a762f414d593552424675534c6e6f485266394472422f615858304f37775a657570686e616e697841666168343370346c6967647a35675278395459446a7647764f66485661334e46386c633134717370776e53454e5167713168793956485a326a3350596f653038346d6b452b39617a554268714e3635666a72753559336554656d43614e6e42676c314b61664746672b6e796d487353377245454d743070393150685a5250386141706b6f6175424b78534d2f79675636336a7332476d65616375645776444857464e73396c63434961696d6b597072752b5653504c6d52515057546b4a4638496c567742616330765774494a696d377148345435674572556637567938354b724b52526a5356576a517a6e38524c4c514f68434765497168485055782f464f524f30314c2b5a70586e546f6733315337417764472b6f494c6e4a7542533432302f7a575a317a6d6173665a6f6771482b596a47706566794a43352b6d482f4147304e424a5443456f4244313950736931654b53624156493657655261616f3474444d316b4a586e3642537a3473733764444a516e7943376c6932542f745a757061726e73454845424f4c625644715a316f39326e30596d53762b466670676e5276366d7a4c6e4a5269636443632b656361766b426a477559356f582f5a6f576b6d6e616f4a6c49356a483656315151437847646e7870796a56705a474a634b766d4a6c646b30726859796f486244673634716c4d67436c7156496f454570454d3664615a47666d794e796f716e492f55756253413356556173763630482b525a386c33575544526f6975504b5a776b75636f5a745633742f53334d4255596a4f6538517a6c6d7736656d5a53745050794b357a713269764171533642307066585850445542446f49657968783263624e574246485a7731673451676449474e7037486d51306c585374575433372b65787757707673796f30354e67435477304c4f6a4b4f39736535314b51734f775430436b4e4279713441467648536a70565751574d3456484b2f66486c5561526a6f722f414a4b74537058364d5753376b6c78564451395073487074352f3249327a524e2b756f5074665a38366c56642b356e54744c7034726255673137446b585450335673726f5a38696a53696f6f5a6d7a7351794d6c556b646f324a5574625169534c6d35316c4d4548447378716a713239736d52756679616559424676616d58355048467862714a32326f584e5477452b3334692b74536150364456543869764b39627872306a3264435376354e44794856444e784a5947737376646d3547747277364638535a46383570664870575548485038414759554c735748544f6e35534b2b6e4762447a4d2b7465735962764a3562704e544838724a6a382b5134644c5834716234636e45512f78733944556575396e657657746a39426f4a5a486d67566b2f556768686439593465564270703545386a30737a52794d396c4c714e6b34734f5a493261747738574d4f76593064436c4e465136715a3537652b31494e6e2b5779633533302b786764324839417a2b336459694c306238657833366d62502f433576686a49595531737273707a713034314251554a47682f4d334e687961492f59397a54525a796d68333869324e42395078396674572b5933557638414b364b6d4f6e6d4978792b4966577a73736f6f686f426c6d3865636d615a31546c4f497443794670696f715236724e6f426f6d383650367832387534576834324f716d4d4f7439366f4f71714e65565a7042656459325a325465395579537a6c684b7446524d427632783537707449372f72714d7a594e524a6a6a3164494b4d7973575a2f43346f4f2f5835734d34336e33355a35314c6e714a4e676352386c482f7776736f49493643372f414f383239444d4c632b515a65587068586645546155526c786363596a794c2b535368784c45766d6f343144674133643738303272515a2f4b54765973486e6b6c5643715836594c4850354d627a7070727462594e45796e52796878566638414a544439726f696e682f4c3154334465353077706437414942336a2f41423269595363554c4e43784e48556979486d6570725a3143464b374c6573494a61436f716d456d4376694b3334374144346e2f4143385742702f62486666375370557973346e795479365a54555641696961584a6c6657696d796b355235554d426c33346a50322f6f774e414f625230464251357038343655527a514d44516d3157666f6b396c466b4943546d304c36657059724f6c647754513067543863332b74497a3849774c4c4e6d64507732756c525142652b72684f546642536876503546765a524353635a306531637248694831532f77432b7748664350424d77443538467638784d724f705a4f796d5a6c56745078426d326531566132572f57745377544a6a7672703732685167596e2f68796e324d346b416b467a63347579703468393353414a426e356f58557770706a484c617353444d6c4a4f6a6e30566656396e464a49415a54305a316f6f62336841696c46657a396c6d666d382f64776b366973744d6f44664458504c66522b72672b646e7a476c497136773364636a352b6d5a425173797141376d3545475030653356715a576636507472464e706f6e5535326b71613539464c48727153686852704e4e416a3850414432643976755658457a45526d514e2f6e6f314c53594163565252395a384d6b687171447347636e4e453448706e64787a675a4851546e395637685853357747414a535153424c7153356e4b702b53686e4a6271454a6f6e7671367152374d2f375a6d4c58786d366f694765776d64414255366232732b4f594863584f4269504930366e755539564f54453941794f4e4d38496d51307a7258377271644b4e7838466c69796156444f4542462f6c387830306b42786d5047426c7a65693855376c7a5443797577334c353872415272616f6c516b724557504b37335048346859347142425269427a65396a542b76384a4a694a3667645933537064645762354a2b4f4769704d3036386163724d3736724f354667736d31506959365a6155724c6e54555831592f6e3979654d642f55695535595a4f695030373679544f7853374656614b6f496b38374c306f776b4c357175736f712f54484e35307630494b61504136776a59307731367a454c36644e62654f584f6e7331416a39716d5573314c4c616d786e5279536f65354e487453784b66312f6d6d656b2b56663666735057447a6a3152796f724f61746b3654764a656a6550766c5448303062736d2f616864436871596863507942386b71514a594770787036355058414579516e6f70345755323538326449773067556c6d785a4a6f4f37597a4c742b6d4b317a6b376d664f35617a553177414165796b56664c786c414534614e4747396646514b3444554c76342f6d5a5572516f376e334d414a3569644b6a33584b7a38327a69682b592f6c45472b342b6948462f3048354b445536335137314976524d4e467a72336148576f6e563070744c6c6d57686e58755372505734704f7039344741554e5852773567583048446250494b6d7a57486f4479657a484e5333745a5248584c524946786331723830745a513262517a35765767716d6f31493435614a686c6e39377177494b485068502b527469706852503046715a507a686e59615645587368716e7a57425251716a70644242436d4e776770554b41584f514344594b6b583075476c62354167616f30563258686e6971694c4f592b7061706a5478533144396765794c552f6e776c533566446368707465424871476c4353634531564641515a306e334a71556f4e333170624f5a3336634973636e715253526878307958453458413444424a47446375383555356c382b4f793052573269775554335035653752372f41434f52544f6e5757764e6341755744484a4d4f2f4a53587335387658435166725a754d34633861454262507975693337457773576135494a5a75532f506e365171576b796e465a3842365270705431337638416143546d437150496b745a6f4d6469796e7967617039506f5a58785a37364a4a6d44465743652f4a33675a6164426f71426a5065646a766d6e503364363663672b7574696830593164316244746e6b5a7354366e467336575057355765546176677657677242565039486c5167352f41474d71545564545139726a6a79426961655074534b62447a35645752557064736f6c2b76575332385848304d2b767837595456754d4d6d4d45324e5035444d4b50727154776d6d3044764f72536250725147515766504d6d6a732b554b43716457764d7767745935334f69744e6b6c4846726f576275667a616762785078713651533349307272656f366c7a6d4e59664b77734764437a496c7757554d4254644b5578685373724d6b68644d59706479536a6e414931475649436577776533696f364c67574150504d69725477324c5a70645a417969754c3544553569575179385438702b776c4a36514163354d34774f516e39792b756c333436655a306d4265374f3038385a594b6e75354165714f346e4468306f366238343245632b486f6659614856746478554466696c53434c503636744c74552b67382b7462632f5344617738724b6e794a3153313059456c327862506b574b595332332f414d5a464f784d546e634450584f6c7651474f6736545a522f756c4141366562742b762f41454143356649704e6b4e616b593555387a33586552316442623665367a73707a4e667352614874597765466e2b4f6970542b545565394c464c752f534c44472f4c742f4b44794e76744159755a4a4a4634754d4e434851385634733378364c4f6a7638704735586469596c6c58346a594a53314e4a3630716b6534306d396267705a717a562f503976734f67586f68725465532b4c4b38632f6b4e437a2b4c6f766a367a6c4f6a4a4c5231465757375a715262506c74685a782b685669766e6f2b65695a782f454b6e634e507a6478744f4d572b67766a7357704a32304c4c6c6c497966516e777555584a6c6d4b4656464146586d6f30694e455939534c476654592f2f4a46357a7336414f34315756747565554b385575656455716a53795555736b717a747658523262466e48356b736c5777644364302f474f4c33665a2f5353364144564e5a77415653376347676f68664d794c374b4650644a467259394c613255763667455168394771482b5165524f56513458536851746e542b48326645775143637563445738794d2f54643243796350696f55796966627a3372796d5a365746556f4d6c5930677757647164442b2f6c6e6e644f6d4435476e37572b3277486e64637553746e5971664a66626e736d55625a43505230617448713535395a39634b7a546c782f446f314761554756524a4271663972513938495257712f56686e6938656b476e517064585a39764d7a36546c2b7570414a576c61797039726f3746724b6876567655686b2f77426d6b752f37446a764454382f322b772b6546654839382b38765669496f6c553358626e58574c536a467169756b564c51322f6a2b4a7a3653647176736f637159436e7064384476703267536d2f582f7131725972452b4932623957646d587832436277375057733538624e4d3953446d685933374c4d33547a307638416870554e4336686e534c45673934665a442f4e7070536b2b7a335a566a643036436b5445737344792b4e2b36365854765755504d37726e7952796678386c305474476c79324439664c2b4f6f7a455647414f4a4956725344785a4d356e4e67635175616975656c4676506371624a4b6435547933726d2b6a624f586339755930614759704778666a39585838396b34732b66384136694b51647a2b716a6372304c2f456a7a6231526e6b333238623458345858664c332b56744d347448516736632f78585a4d4539684864475648794e575a732b7334676d6e2b5679412b79564c616b562f4e493658346e6a4868766f373433486c65475a34633232476c4575672b655a7570476661632b4d53313254723671775756616830645a53664148373547386d47516c7a4c4e706e6a3142502b623471577958496872724e4638745a4f3630467a57694f7639724f7051494657326f6d6144324c654974647a6f59376e494433683866394144506442314673493574515652712b67683945694832352f454f6f4a4e45787145655845786b2f794364726a754e4c506c6e36366b324149545a50592b734474444b45546a3234782b364363536561704d72416e37445265534b456b3476636b784d7a557073564b71654d617874414141704436326b676b307975694a35574b53565562574f765a62526a6f4f6b7a714a33313258537a74535444414b616a4e6a516f4650733445443064724e69775736563945455a7a7a303673726d322b3435375853353875316452416e3366786b4a6169724b436f353050397951424a6d484147734b6335356e46626f624865476d4c4f6a756c7a573161466a6d7355386e5131577a78614652665a6335354a644b4b51567732306d564a716f396965637473743442764c36317579724d646d54564d33503558486136544a4b74537536507979784b3551464f6545693557726c62395950717a466f4f6d2b797534653142502f41465075356e714e6d505472316a3776775a6c4437357058556f55595279336d614e576f457251676334506362527a364756324531683863667735716a635970426f72724d596b664e6e425078345a4e5830352b4e475777756f6f386643636b716257337136475553365a4d5775466a3944506e6e4c692b4f4e5a75495572443743314445546e453246632b71766f6c345038416b7641796a765a4d4431486e6e5a454f35695a3961644d64432f6c534e3253675a5a7759356132542f4a77724f38365166433776787a385774633174732f6867635950557278447a6a38662f4143542f414d5638786b4c44715179326e4d3333355062635451445467715247754c4d6b4c6f63537774494f73476459635368792f594c585874636656457871527572314658522b63596d6653782b564a396b687a34656b7a4b627255586255625a7968415a667566535657355a564277552b775064384e4a705033456f567a37767a416258326d71705668354a7946536c635879364a4c5669665a6256646e7a704e386e534d57524e64436d5a61304c564f464a67742f4464314e424e7678586b433457303878303239467a61653931574446516658535639615539656d2f755452563743536e5359505a6a557058734e5036596b515076413044324f7a513552626e736d58655535786f702b4b546969303665494b54597a6e4c564b74737650626e31653578644e54446c42784758796f5157663750316b4a4369686b676e6c796b5336304f704c6c5356566d6953352f436a6f41543976757a75316142636167564352636d70426a36513551313267567a756145713667517574614d2b75416f6e552f4d585567332b4c6c76314b61416e6c455358444f5873633054466f5239427a484b565177674a7857727a78586d3738686f68674176354b36616d6c795473376d6a6b4c74554369446b735469734a67743750384b4a77424c466b6c414f356e5034362f554e39436a344a586e4453447975676658332f414e56796f425830756b70505948456e34356355637359656643736d68772f2f41476d41642b616e5161686574586e384e6d7059696e6e6b656a682b4b4e7875615253364b76344b62796954514c614c2b6570617a3548516a71592b534574546e54476b4a6d7a6e5a4a6d2f44482f53496e48434f4543737375764171356e754b4a30334d69655366636c2f69555a7935335177616c716146737a76724a6e30496930613648667835794d414c79545477347a416e687a702f756b5a75706c2b6e58706c4e2f784a78506c72575732534256784f713254487a596a695579614832497368642f4a414c72714a4163566a2b67456a6c48774f6a516e4d32385278543541694d6b317a6a52324b7558514450524a33765a63714a4e476661613030554d5537577165743035637045553966397a6b344d39686d5164414b687a4f2b7a694952336c555544352b684c77685932656c656862336e54613668684d5478626b74414150362f784d6e6b50744141424f41627877746a375431537264567a655333616254305075324d44546a43366164697836386269566378425471496547796e72306d4a2b7a71516161624561484c79524a4b62734668564f536467744434636c795069796c6c6f2b37763841736f455666386346765034316e50627a324c42396f7a303662676e6d6357386b4e454d3046795854365851486a776c474d5a3648736c5170497a2f417a7448786852796c48734f6c4a4f4a79516d2f564e525a487046556b5055377842756a3966477152355a6d3146667a576b695a493734574e363339334d4546324c306e4430526352693569525537355a2f68534d7a32597831346a31512f3233646e79467635612b6a2b5a507061326e51765a5a51714d554c656f4d43334c7357566d6850796350727a6870584c5570664b5770576b48476b6b756b2f6a5a7544582f797244317976473544526e705854504974337966656b7977556d697036774775716d4e59396c6e2b75466e4b68377877703430772f516361626c753830612f62714d46336b57737258574676312b5a476971676c305a363338316333346b764e4c3742546c6c322f44717a5a553971542b2f7744574a32794159454f314f7a41737678467061534a7247524c632b6d4d7573466138326350494745364e45533370746f6e464c655436552f484d2b6337304742385548366153777a763270467a7954544a64545769586d6b314750514d314a79354f65443177796674536339794a5a42756f6c757935316a376c664370494f424e504f67365a31524536776c56652f5a314f4c434269757a5a53496853497835394c3246796c574756584337387131734a4375382b744d42396451485470436a674c57564d35614f507061684a7a2b52745a316a394c3447496d7659556c596170396e514b436c6f634c35472f4158444f5a584f48377042654947684656434a647258374e5451325a664a4a673632656a6d334d7a713839462f59702b646a2b52316a6d73616d6d637155783039346f5a79436638416f49366c766a6c39642b6b6d6b6b5250455943475a564831435a69726f2f374178704867756a495a59562f7444676e5937455153576d61515371334e456545534373452f48543574416b727176664c694c7a64564a4d6e6f5662437652525431766649306c6e79694930434379353732393153476f46755966367141472b4f6c33526e6e3636544b4561796e5a332b656a7272646854774f666f3130544f685179636c5470304f75595a634d6a7034394b58434a6f63454838737331664666476b315a4b714939312f7742626a734f2f7572525546724b39614b6d794e524c2b5061324f353969624545726e32526f536b2b544743535371305275747834697876532f782f774252504a764463627958516d6a7a69366c66784a306d5174676d386670686a586a7a3142626e6f6358372b78633934755847524f4266526530655266314670724673524f423839522f4f7653483062546b582b632b6f456b6474445651686b654a78446f73757676663870674d4b38743736707a584876487878746f564a2b7a726f50326752755669316f34564844542b386a2b633248365a6669437649394c4d5479503037386f39612f4b6d656d32507361744f726a65534938456d38615271656236632b56754f4c734d4c6375706d5958412f625575324a6856372f4147417775763262536d32726d30377476456549727762785a2f714e354e6d7839553742386177316458646a41457444656132376f2f7938304561456a3034666b576c6b72752b2f3365354b6945693778696c2b6c4d346a7a4a6e48475739654e3665667971622f41426d444c307369484779313138314e4e687734756676523432626e6f5862544c48547a517364646b2b343534766d2b757150326831624134354f557a4d7a6e764730503475656942624f324274394f5438337a4d667839682b592b517a343771766f6c703146615942724f486f554a54645070634d48666f68412f64395a674a36627133764f4f4e7473432f4e44385939443150385052354e623450597a7933772f794c782b55644b37433170492f4c3870397630536a4e65562b75444b6268546f54464d716b69564d5930683751345038415650655257324e3259734e4d74477a302b394666556c7667486b2b48564235483664624e384e74616a30776e6e354658676f304c4d4f724e616438746e624b6c316958582b387864534a66454148384f6b544e71376f2b49656d4430626930507a672f4844302f6777664c4a614439556b71386533747875674f626a2b492b5259314b2f45664b39584e6d67466c4b39782f736f585055443163392f6b4e504a2f77424e4e5430634e763256375450776a7158366a2b6f6e704c2b456e34716248686e675a50356d656e2f70317077344c4e4a4573757635487059654736526a45634b4a694b432b786d7349686b6e63487a3653797255546a624d7a4373573164544d783272442b563952357635423437366737336d577137523574376d3770615a446f444978396365395271466f396c6f4c4e543757564d4a672f4f4266745157455a42396b50736339365969597845635230392f74412b50656a666e6e35597a2b582b75486b7564346e366665454e4c796d6d2f796d7565544d322f4a72336b304d2b716d36726e626e444c79555a4f646348666d6d3434772b34456e55596530376f30346976617350364433342f65572f6a6c354a6a4b7038443839386638707233625a6d48644e727936384573584c79545245716945654f79367142464d335673346e34675368556e426d3967423546347648476139416339664a2f534c7972303132385879547a505047657a472b78457576636b7a4136336b5079325454616254506d6579695575476c796c4c544150756f543146684f502b6f70756933437651667a56767a74723853394b2f7963395673663030387277664d7646395879586c5764355a34377242354a34383531674a7948754b39354b48356d533256546e4f6b4b5072653933765370663653723274475a6d6c637878476d76664e34664935697a2b785074444d726c6c466f4f6534382b435971676367597674483976505a634a5574342f6742384b56663563704d434457596d4f734431542f7744796544315538673876385439572f535631756e766339503841647a50496332324d306a46644473356a6f4c34343236576b7271394b6868556654374c32612f324f6f65447076734536666739727245545730783275413959654b6c424b7a6a35796d652b714e35716c37446471486f796a4b5258337364463876623676386c6d2f692f617376656b453843347a46586d67677a79456250347a4d3133646871504e48534f7866416c714979356e73357a374c49544e4c6577753050616853365a3270732f375a764a617047545043654535774e4576516e385976343331722f4d4c5a7a35347645306574506d5069506b3262794a636c306375674c316833792f5732546b63482b525379634c6a754a624b36424e4944706d3931433962337a54536a38496f7a31632f454c3834764b504f38507736627a6a5656365168414679736e51386738496f776446346142642f6b6f6e3465684c646a6b7278746258444a7962357154704548576d615064466575707052575a32387732443266774c772f544c38544d2f78772f49382f6238395a6f6551397038366246477144345837554e5062555a7a5073717a5a6c695245435336786a33306730435358457452574e5731745450776a536e302f394d507a51774e312f702f583544342b2f3030304e6274783575526d4f3238797a783375686f655468704c3871735748425a5271463848482b304b476e6258386f7a57444b41613274707a485846685a6e35652f6a727065612f68483675656c425a6d42702b532b5234596551676d5844313130352f6c4f6a35434f716733456e342b6c504a6d6c38717563396f67685031532f3768685346644f3830317132794c4a2f74692f6a6c34312b4a2f77434d766a2f3439785a6d67586b475a5972795079765761344e57586430764d4c3865376c2f3349745a6956354b716d70556378756452596b4445557a7a554a4d71363937616d7076485776787a2b4c7a66736a6e526d31444e744b7047524c69526f556176616171315456795558664537534c39783266487850736e5441703169535a514b7075635450794e4c59637a4f4f663565484e533145556b454769756c4863726d73442b46634435426a5a55546d43734f657778423036576c77445342425264576b58616b50355562787971434776516b6f703070627449614d764d536e62734b463776744d5a70542b34524a6a56702b56556f41426934776b486b556b2f41792b316b327146632b6e6c765769514c4873546678316f4f6f3670444a59562f5672643067594b786578337733683262672f304838303779503853346f2f37766c6e3437337374353476356c2b524f737a4e64626e672f77442b35587944637338672b77417a3165775961552f4d7042543075364c6a4b59506577463148376b616b57396d332f6871506139362f2b4c627670313437344c6b5958682f6e33697670726a5a654469564a394e4a7367764a4e4c4667346d6e56784b3947646b5279355a52705550576e54387a6c47613049356368767a655853596d6337733238786f3736516564656176395850474d6238652f4d6658335578785a6c70386e79664d54763366474e477634503841746846712b524c71376f625135664e7152727631317041466436362b6e6e42774e725247334e36774e6e507932395676583330515a342b3176715a762b6e33686c505635392f6d506a75537a633263764e72707a347976584e6e4a54526e614547352f6b6c6268494c2f7566515371536b50724d7a3036307677323772534968346e35307a3163385a3874394d4d62317839542f414634683839394f4754362b3135686f7835574e68763234504a74656b515a56677979793257574638633365527045553676384139424c703230426159327a5730317258614e45662f6b3058704276654565742f397762626450764e3076454c5966536f74537936687551367857356f5637436873363576386c72462f486954334e5439734558393448524d75542f31723764614c5630613965386576667835747a5a786e3558386f386e662f4a366c6b47536e4f4c68477433447a375a6f3247756a724b7659484255376838392f7a534c51667a663135776338485053464e67494b622b53507261696c5053475a54336d7878694468536c593041794f6761467457587354484e2b356a2f414d305542574d6e61706a315a2b5479686e797a3354387362794e6261587a59337431536b51366565694e334a366f2b64424b67456665482f654d752f4c2f515362444876646a522b7251682f5a4b4f61585652314b6b5a4a486e3258532f444e31396a48726f657946342f5865684d3771413644715a7a71724a7741363576483672626835306669616c45616171714f6f6b2b6c70307364492f56526c544378734a4550795448537355645a3833416f2f636e7645504d64354a2b49766a33705a2b63336c766b587164467a7954777656776163664a7638687a5258627461336b47775735625470305049304a754d74693661666a6f526449455a3953354a6a4e302b2b4e536261574b646f6267512b4f5465434b71736d33504870344d55356c5142672b4f44706553637a70566950375a59794f6732556e6a68564a505354794b754e314c6f483650666d4e574d7a4d395133394e507a4f2f466e423950646a3065387a4831433871324e72794b6e66647677656e666c6a6155736b304e626f5663796b3461506a2b676a446a2f4145436e6674305a392b4a4a5463496c577470617332335279664f52615069757834646a352b54623548732b5358352b74647a7837786a5131495734586454786f636d366649623352386c75577a4e6a717a3948506f644c56563748614f785452795a6874413671347a5043424566794c39497344386d78394d55516d5759487031584c74654f61326a425a7361644654354753365361343650306275336c566e386a734471377a626d79652b646f5a344f544e4c5454646a6a754854373071773837786630367950474d5671483550692b566a2b505252706b65704f49475a4768562b774879754a384a6679692f324e736a374b30676172673936466638415735377a4d326d5a4672656e307a6a7551796b7a5a436d6b4a325663304a616b32614d382b7372354d72454f666e593578307169614b5855726e49394c3353685650374773714c5338675a777a3572324a397a6f316336516a7a4b6d7052317563736a797859532b7463686274533666686c516f702b67504b61444c702b3530464a556c636537704453313638614a53437a706c6f753045642b756f754b686b6d4364714d6e59646f4c6e34746a564a73553531453868393636577777306c2f75435958692f6c2f34652b71766f6c356436654f38726a3957523734526b525a31636d4b7645386773304c71384862686f73532f37626f39366572367162612b632f33436254534e676648746f544d616c6252626274486e4e2f416e3073796645765250522f484c314d6f537251384c382f30356c374f446b427772755a316e79655037586c47766f7a7a4a6a2b396e36444752726f596d355159514258334f467a517a753358744d3233312b4964682f527a7854774c306c7a6433547776546d316d2f354e685534473171362b64694e6670496a7953696d7837664965574c7a3647665163355369625251346c70594d4e5a6d74584c755731725736794c6738642f48774139424e79563665562b746b767153666d715a366c3453704931317a315279543562686e68546d706f7835394948415379635a5750507673595a506245333575485a326942743945765362643169713176544842733953613869446e325a4f4f38593568393165727a494831366b716550536b3261316e566d73714a7241675366384146755563777a7a7674455933597241302b2f4a2f3864505354622f4a443857764c2f492f4375656f766a5834387a3575754869515846426e61314f3135446e3473506b54456c71565555597375376e2b5030324949426c466155414257496154763630303732696d72455274334430476333666b317a664e6d353975745247356b4a637a583557537870756c3043504d543337536830485555554737762b7878462f31454c2b4f576c7763516c7574697a352f67326b794f665a646f6f3865742f686f706e6b6b4e4e436375583277354d693577434f72334c68424c715259303136514f636a3556417a694a784f6641633976536a3133385539442f414d5966492f55487a3864522f6a76707835663562693276777a663546704b314b2f4c616f4a34556f6d7a2b66594a4e446f306c376b7145416d58513339665859314f397154665578543468347a50586638657654696a7a6a3163383831725a646e63395150502f41465138726e794b736a566c5434396e616463577a6d2b4e686c33442f485a4c6730724c755474633057657a596d436e344532703058656c53387a746a384f41392f4754796d723072385262566b545472386f6b7a636569794a324764442f3452657838425a6d54714e792b456e5763356547314641493434506d673978574c4e5a73617362707830774e3630666d4636772b59654d6165466b656c4f6b4e74746d68366635652b467134335232654a76592b3062636447624d64574f6d4e4d3770314755334c47706e2b347843366c5479592b367245784f37707a436e504576782b386b395439536572795048325a4e7a4a386861577035717175646e6b4f31627a51715863547333456354452f71725038416c6e557331677179795a763744376d6144377a654936635a486f4a2f48366a31623862753946504a39354f426e2b70685473384c385330504a76453952576958676937504679576f6e63716f43577a734c5038417632576e4d34447444696d3044375a49654b2b32643052325a4857334a64565a362f6552794c6d6a726766345a346b6c6345776e3274617341744c70707a5767564d2f562f774432502b597672646353514d7a4a5572457464686a6b7a3569492b74794c645831663950567339336535344b717a3535724a4845794b58527a34475052512b7079676e4b713553614f6f2b45676239417836527061774a723262433766556970342b4739585478304d61335435456e4b5a5148394d616b70756c6e3161367531706f35514c464c6457745171624e386a7a5372333071725872487a444430713676755a572b427247565a39374a3532496c37572b775a663550683847576d7a3548546a5256574c76744677753168384c526e6438306e394a7a6d6339524a7a613965317a6c4c4b72586536734154504b4e4646545670307446397345314d70767a383139444d2b72672f382f486f774a4d4530637041503667636e66373058704c355836682b69337074355034707574447933303538796a305949565071585063764d654f71684d786649766866585a6d796d35335741616567485073693550316a36505a725257316f6e346748394e504876536a31587866484c4e475078366b38764438664c5a3558424c694d42466d5a394b6a436d7a42646139446c756f685832514830307070736b564e504948567a76576e5a31423777545139506e656f55326634397278356d52695161486a326470573666324974665a387143716e525a43362f514136426c6f58687a637135396e6766546d6d6334545a7851425a4f74354c36646338676d386638414d342f473950413372525a6e366152436a432f6c532b31546f6163586153653164444b755a6458467a6e78386f6532533030735742716963347a41462b76506e586a375042463433685978735a6a3555546649724d7349714e504f566b774d6c634b2b50755976614836756b7746413837503841646d4632527a7548456e73556932635433694c66327950514856394d4d2b6a6174766b387442336a4771574e755975524852795a506c2f6b69646962786c7473324445353977533648742b456b664a494365416477425975457031375262386f37477a5151686148495732537076416761786a41715337736e553836326a4c434575442b345571654b6d45594b6e6345346b6b4f415a344278716a517042465a6e557552594d33596c726d716b30693558664b336e7662774258524b7651597177412b5a66764d4f635677456b594143765768396478764c6e4635727379697854536c7a3250354937395863744867384b72534b657757733470695355514d35776853304a76364439546f61734c32324c5841694d475652713662316456534341545a597437427359447458364b3656714f6c7643656f434f686e7a6b784b515330664c2f472f484935394c797439494e596a75633534534b706a7a6b58614179676464704651763452463151753578707a3936344f7557492f585678695a3452316b5554356a357a3630356b564f6c343548346f58694d6a35615555546c704f336a7942466c6a6635504956474b4d6e396b7a2f5935644e62503048472f4478503250686d73566d635477734e524d2f77444944796975694c4c33643349384c7a56564e6b4b7678727832332b586e616e52586d36657a6b3076785a4f5a3741455965437171416568396b464438384e4d306164646c666b4c423836396366422f4762543239544c38773867303339676832664b354f5a7572526a5a6d457253386966524f7466362b6a5153585a72615362435239535a4f41615a412b47697361637a4f42534550397772385576493566452f482f484e37583161596236636254787454784c7941764c744f6a526c4854574f646d476c457964344e4c616e2b5773306b61534362706b4a45426866334f7047365a47797a4d6a306a39517647452b65523532613834464258426c65545a4d2b66354a34332b7443643775414739556c32444f75686270446b70464a45557a706639303543627339316f6e456a516238626654544f7a50377166714a2b52646d4a573744387a394645656c66682b307254334e4935397a7869764c3575554349735942523335646e6a353958564d684c58477271434e4d6269506138783769756e45396d323464777172515169674a726c35794f7451367961767135754c536445765a724a5553643732503356614768503075436267644e79626e79475057713567704e645050576853666763396e46324c3746464f307051696e614857432b7351494241636c505742776663483266683969466d6c545131382f4a76773672314b394650554f4a4b30793775564e337a4c777a62614b33457a623855594f6c4852553963664f536a3979654e4e70544f457554427830583755704c537453647471794f4176724a367165714868586f6e64366953535a572f4a34746d763841352f4633764b41794d7475444c35466d752b31775264326e2b597469717152457163517451574a3879353775556675667172577472625948465031412f75452b642b744f7a33623064654848673857564b6c5373595a6d654c6c4332466c64524d7a457730537a366c4b31725a516d6450454254427254484f6661576766565852694a327848516155655465747a4e4731663841356d336238706c6d7a7a6e683857304e665179733838414939437167727051574532543479424a6c6c36795674564139796c786d3133316763577355786d65784872354341362f6c2f6e667166444a6765462b49342b6262554b634d676a5669356c577274635374784a7266735a686142444c485272652b70566461554b6a42737a666c365a636d4b78586a4d68543038386d395450782b395a7333794c7a644e575862566b7a34325a733575394b755974544e6c3066307339594c4b4a5578693679716f65794e4f72727067524e54304c4a452f77424a697436346a6f5058662f61502f75395a2f713171654c2f6a6436392b51353437656c6b304b3845383870326161647263314a497441797850494b4c4b4b574a31487931646248385054417a704f52767931552f47586e6530657a37593330377836536d756e69734c6e51506a596c5638745a69544a6f4c6e7a4f537037654d564f7752596f52594c58454147417535336742373249446b47416664766d6d6b5955744a3533787a614e5838526f3279385255755662583564583867545754746c704c32504b4f74795671456762332f43686f4f624a735761536d795a7979393544453130487863715950765736794c5237776e443754596d34477448764248396838516539494b2f6f4e572f796c785a50492f53485038414c686d4c722f45395a4f6d71745950314b705a624c307a3371674a564365706f48634b4535315439582f754d672f584b6e632b4b314a786248694e58667962394f7276582f7742427447627876314b6a384938367a3259656a3666372f7742694854325045456e6e5635586b5755586649535a4e4b75764e7330706c463878736c72704473766251435a644e36573254787276714a33502b4b7535663656654b2b4e5947706e3830342f42386a50324a62614e6d4c505672686d53374e4f6c545667576336746439456f6c394b526135594442545a7941436d534b64534d7a4d6a6d6c366636314c37517a35764c733343796659384c5a664a5835386b73756a6e3379343173506b69637659453435322b51446e7346344e4e5135304832665a6f306e516b39623971525166354d2f6b72364e34486b3650543331643943734357343859617648664c504a764a384c694d424644422b6c705965644435494347595052686e74304b37572b77354574463455757030674454547061597a573242715038412f6c526653583062386e50785830723844394963547735586b4e50664a504a73546e504b746a5a644c446b364c396651386f78566337636c6c3332467a2b347a676e59456f2b3173714f43476e754c576a4e7254497633385a2f79432f48443132396150472f435a5055375852585a35513253506d785a7942654e6d7a5a383948387576443477753575543234464638432f38413663377468473530346f6a627974363370575a69754236795048504673547748475a486b79492b44685339702b65664d5a4e706e524b696443555379356666746577617330682f7a53503130716d373158515753665036672f65444b666a39327355726d463351737a37654c6c615836577a515a584b414d4b6c63772f5849336b42675641417276797149445759526c6a6a545066327a704f636659786e617275625774446638417361386c4e52554a64396a5144552b76774f6577454e6d5447726e776d6b3230424e6365656d7643367042667467392b4b6c61797755464f73714a77753464474847512b30456662397866496d6e682b3558656e3134414141536462623856777364616e7334793874627a5935505a6f306d4954386b465351344e5347653475746568354233334a506e312b4b636f49317242522f435230326e6e6f6e6c6b71302b38567870764f556252304771393047677046432b2f4f7a515a30564b364e502f77715a69534c6d427a612f5038412f45444a2f4a4c386576565358784c776678366a3867395878536659385038414e724a3361477870322b4c6e527035324c793256335775716679796f6c69762f414357703770434d4a5036323064585a65756259715045372b4c6e2f41494c367365526e36522b714d7350694f686e72746b7771504a3250536d3757796f4e4446307647485736465564587a642f68664632726e345275536c726e6d5078706d2f72314c357047366f376f656e767074354836513457626b5762506f4236617a7a2b4f543549356669673932642f4e2b354463326d6e64723263316a433145434c6c534c423143765a6a706b54516c582b7833486130576e4f6257476933355065512b452b6c766a745731366e2b71586a666b3276356a4a797a44717a73754475772f797a596b3074727871766670666d7137504357577a4e496e49503363666a5347324e774f682b62616b546159694b396b64652f3841354f4634646976394466564831774d64792f6639562f4d4238567a58617557746a3844787a4143695050706c6b624f49756e724a32573958756f4b62393067744876384169536f2b6632795a3331702b45656c55614e3943312f75636c4e6a616858316f454e552b57674a5363795570633562576b6e755051763341332f55626f675067417871315034777a7375664256576b564858786e46665a55754b57614a417663377139755661746269614b71534b7450372f7a4e4c765a2b2f637053524d4e617656373172394e50532f694565725871623476344a714e343175664475364d456337385a774d77394a7a354b746952705178526a6a2f4b6d6e67415a7054303554637a6e3958725331757a58634e4e6655482b37462b42487031616b764a66794c3850334c5930352f4c344d424f6a354d35617475646e6664343152482f3841544654324a2b4d36566b38314e6d624d3265772f2f706e53505a396133536d424a66477637745034482b586f384e69786658484d7854304f5279596b6c715963715361797174306334624f6c5555374a3366596a753678622f624f71754e7a7136597a54374a496e5131597a4d31472f337037353734703531696166714669655735766b486a777065655a3243754c65785a706c46497777696e697134582b4563663841784d34507367774b442f5264543373654e6f6d4f4531484e3738397679683873302f54667976776e30306d46506c4f746b4a7866475a73582b473244386772305861436b506e7a7163307079446d586f536b50765a3153597a4d4b4f6d5a6d63652b6c70786d5a73504f7a366b2f6b4a3636656d2f675868654a723533674870416e4b314e486538733266462b36325058355149497a5756326c6e614c4c4b4a626746614a7630506575797a766d5a38334854476e2b7579744b576d5a6a6e48566e2b7a422b57654c356c2b512f3542656b75437176453950505571547837316b395076467a35325a632f6c5573613566554b53504a336e71595631433554725a3145553868324851596d4c506c7252683752707a464e4f3039717641627a666c784874656e487157586b574a5050714f386f692f6d6e39645468546437644832694a4862424f4f6b39524c716f3436696a364e5461713242374135634b552f31685445317834446d5635723554345050354c354e346e36332b4f65667638414b66554d6d5957483564466635446c7a364e6f51665370436257362b6c474c34332f473647645a5632684b71656e4f70576b6733527832483052457a4554543442522b5236452b4d6569506b592b6f766d756a36712b5a35486a755a65654d327a7a62795735454f4b674e42736964576d5633386c635879554d4f766b63792b55757030774e7a796d343872623576474b3763433866536a51387238674f48794c454859394f664339796a756e34503439715936383755656d5856645a54723359476e6178796345726e4d373142764e61624d333367304c6d644f6d746f694f45383168312b2f457277374c30374e58314f466c6e7953614866457357745431757a362b565a6d665661494f554a5472547a596b3145732b6269652f586370447036585367726e4e655a36446379796c63504a6f334e70704a6c64642f4a4e4a3930725363625062562f4a7061496665637178656877307a392b4531754233325258524f595a67494f6a5134574d304a4c4c39486a56537745322f52756d4d70426d72766a3175794c596e345468574c2b69532f6d6345597a437a68682b77414e7a4f5650706c6e4d57655a47784d307a7976756f664f56697059362b3964545a644f77684c4b6f6a4c322b785a4e514453622f414c6f3067594a777057784d366d54702b73646d5963697033524f7476505152383578555755617730435047547938657967566d46394351436d645865752f6f48365a556363316f7578365a75543079553361542b31617261446d6355556370354562797a2b416e554757755a66516358484b71517638415175565145443953764773505338612f6a4e64576a6653686139574b663664473372797567767a2f41496d726a7547676f385632685047352f574578334f5974556e584c4254532f71315a7849356565624c3076412f49746e64792f494d69764f6c7863756b337a31445062436e4d2b5362556a5a6f466b2b354a74334d2b355a4e5a37796d766d55786e777a382b734f33646a75477348716e2b546e714c5a6b4c793464546e6873766b365549353544705a6a644479464c64433857362f6a65664b61326f6c59465838544d4e446d3841624e754f625636444b724c4b4e61306950506148477a2b622f35792b69384f6b575275666a35722b4751592f655461535a5759444c4f646d314c4d2b33794443466c7751304f2b386647716d355478744f62704d702b6e374f4a346a53307264597475466357666e642b53766b5071683437355a52366f596e6a6d7873534234316f2b4a2b45592b565a34765357586e58492f6b744e734778384931667a44466a556f36453067362b4d443553665a354f76645569735274774f6a336f4a36732b592b7241416e7943325662634c564e32686f4d57337567316d6a55754c50777876676f5833517a3573477a4e577639314164485539533735696d4a33395a7a574b7a6942766a73352f70547070686e38633841542f4144362f444542354c354876593963666b326a6c6b4574476b7837736968446673567a39642f73577352735a5a376d556e395a6154786a644861746a3134447a41656f6e396f487777765848386e2f4c7657412f49486549615761377a373036384f394c63745732556c3165724d4159577454797a7448383837517559735254456c632f414d335539396e512f72756a326d5a7070785874655932382f476a794e48504d4e6a307344304676394a504866547a4a5169414438727a74795079366d69365758372f326c7968546d7a397a782b6671574f2f66444d314e2f582f752f72473863497675336268736c2b522f6f424c367149385a7a4d6e773132424c714356464d324a6f4d3438733957684e58377441313346776f6143397847677861732b4a4d5030582b492f31576c39764e4851416678742f455877503070442b49385238663866794b4747727942756a6f5a636b6336754f6d71344e647469364a2b4f736451524150466b494a536636377a6e74397638415533764e75765164445973524b4937646e54726c58302f6d716d4937346d5a73795a2b547953636d6853376f4d476753594a644a6e512f7739772b30752f316a4e2b6d32427237732b4a6546772b5736506e4d4f65504e3357647a6836694d32683361714a31564a6d34356b7433512b506f7246526b594d393651446f65333966316f504f522f63302f4a2b66633965747a3061693363452f4563476c2b7235726e5a653633787a53714f484f6a315a4a46366a4a79356b57666457564e426b6e6871563439503043346b726e4f3639436d4b62687a76583678516553547138623944504266423878444d766e50442f41425a634b66487655424635564d314b626b6552663463314a58757a2f774473632b596165553654666a6b557356424e3054584847317343412b52502f49545a7966356a7a72636372783268725a74466459323858377033667839396c4d6e587355556970584d764a793130766e4b6b4569464230567a484d65376a703344663330572f496e777a38652f783878664d6344782f78547a5063716673594f7234386e7a67657130683630683861737138532f6e6e507a3245534d30745266644b614e4d65666c78697a366644583343394a766662504c6e312b6f32542f47482b35566c2b646571457a724f662f4e37722b56654f57322b50497974377173437776484b6444546d687430364533794d68576d76512b535a382f5730664342637039706d366d6d706f626166694870352f4758312f792f586e306a7a504e4d4e766a2b6a3164326868624d2f2f414e6a7662526c795970324f3057614c6b387a614c4e475035443438706c692b6b306e516e3966366543394a7062456a6154476b5630357163756c632f464a7a506b5a7456524c4d47716d75304e445a6e346179646e7939585735584769384f675274347271302f375270387835397637736634722b6d486e2f727836622b7450724635502f38414e2f366539394c78394d346938625a343630376655415055634831584e32337047764a68646c3745765539416531317664394f5434715841682f5a3750715772536156357262743332484e3330693863487762546d69394b2f5735587233364f526e70542f77415a74342b58356f7a78576c77653955666a6d754d6f575a4f63656c715a5248785543526e64424759665758386c483962544d7a484e58625962366551666c373330536d6d73385677452b533271434a6138755439333744383646624836444937496339637454476537366e65696267516e4761336a7858517879636f30392f61366a6c502b5a503533562f6d5a67593370326a305338693845386e3061736e4e3164337a4e6f506a7a49677053384e584f4c4f796a4631445861315579784666542b74377a63706a487545756a5330766454753362366a6e6c2b564f496a3036383872384a6e5a6e4a5a34744e6d594242697358536d5851782b6a52614a485776706b526a505238587a4d6238596152752f77416c45543262616335695a6a764646654e2b646553596e6972734f54676344573030356a496a4933726d6f59706a4b7146636d48346c38716c63342b2f4f672b4a53625155306864374a377a574a6e492f6f586632482f413650466677507a505548537373566e2b73666b6d7a3570342f6a54775577414f423435504c3661352b6c452f522f334f73307150433944522b586e66695a485a6d635548446e4633664739726e647137504164712b5564526c3238447649334b4e724642523930515942694b676c46667963367878436d6342347a326966764d412b4c7644414f54342f722b6f77656d6479364f4d58784b48424e784c7055726d466a50617055646a574c53745356676b6e415a394d31742b736f42415061766837443943752b6d525832354a52464d797735473751724b6a3272556b59695339645847776b4c463570632f663639366b732b50324f5534797a34622f5858313977784b5a6455644d5a484658624d556775374d3771786f6e66484b4e4845764366344a343145497139676f4142354d346e4c2f54763848352f7439686b34665a313354726d662f48382b32706a366b7146765a35536d6d7273586e657833756f474a6e7441324766362b4d6839374f474b4e415461345575314b685a7a6b626c73564a55384f4964494b4c4352784658546a344f664f6243452b442f71545137334433332f4150784141537142546841304542747a373363567a3575584b574d693772302f4e617a33706c4970576670376b3849774d43702f66764d5036426f78387a6e554a54782f324b6e696a6a4f66794342374c544f34424e4877724e4b534d68397653486f6444374c524650503041663043395557644d556644554e45525a396648756e5252585644796168316a7a5955396e366f54545144695762656530327a4f48682f3467766d66375431674354343974723131796466486e704c50346b335339362f346d693138375730304748386551735a2f695057756e4d43346f53492b792f316f4655676d65354448465254794f694a4e69426d734f4f43577453546d35504c497a69525a38734b56464c38744850596674397875454f2f31583450702b672b63573969307872374b313752454f675677634b57726b633557754366676d493166497433506e43593169714d7936504b424a66384155384f313542616d494f3173306f796f74374447532b6d2b63426e59587954726d5a396658364b662f71574e4d5445562f4c417078427a767966586b4f336948544b6438386e62494a2f714c3670583257564a5a2f766f4a306b56426c387a465269333268384970364368487654396f426e2b663766594a7558524c31394a6953712b64515931752b744b785643333051746261394d62417a364f4a5a795a67644e6871474e2f374d4f4c364a61443435534c4f54384a2f794e483973583735794672444e2b654b75574e36587a4b75425a4e36317070417939344d2b5038417a62796b4f665039324b4a6a5037655035586f6375326e726651335764716c5169314376716f6d64523131564d396e79473155387076637366736d38484e6d554a2f4a54336c2f5a7638366e38592f6e48654b5361586c7555696654314c632f5264384c46533375524a456c627365716b644f39504c7066354b6432444c52797a71564254387a6a453269703141522b7a626c7874345a47342f6f5235705a3466356c6a324e6a6c2f6b423146364e45384f6a77625a30425179394f76706554627553355979455762343356434831794433306e38334449367a4447305a6a7a4862587850794d764a4b4a524f6c79596e4b2b756678554e6562655a39733731713146712b454d3959527973494247675567667a2b78764a32557a733570694b784d78474a6762696550384171465a6a5a3145736a387650423839726c6330394e457337676448386d7a6e7a6b6341386959574b36674c586c3067397958706e70414775364f516b464733466f6336433253746975646e396d7a6b30446331524e356e305555486f6d6b6c6146694b6c3461754376767a47446851556e4f756639344a784a35586f574930494a444b2f5978694a2f584956564c616c794b7850576f4379676c3978352b73737555775441584776455a4c5638703961634950747656686d7330394677773762576f2f376863714249396c37735173645a2f456654454c467144364941775843615535715a6d6d504f4f522f5152494e6c3252576c656c6d5478536148526a626d4f54334b67564a61446b55617069366672617373496443566a4a714f685438767363622b4c436c4941633864776562506b6b586a3748726153532b74456e536532656a507a4a714a644452787251665531685a6f616376776930766d495075546f4150684f74796f6d63524d2b4174507a6e63786462524b7a4752636a41386372484d6c797972706f37396a414750353133786471614362415443735854746c6d617839557956312f547650676f7a6a6a4f5a46556f756e424d395374684d714933706f5a51696477396c53756f5835564536616f5a2b6f7a2f617a65364b303052707554483752506a476d453067696e65576c656b4458704d554e3770767730637561456833646c6e433938357977554f6f484a30495538595356557a476c4a706d5532796b4243316653583066387939594c7338774459776646332f5835756235646246557257662f4143513757704e497867726f6339687a793079792f42577055597361385059414d7261385648527a784c7754782f307a38636a7873664f6e6d6e6b6d5330396358524872365475737a7a6157765a59733653456c7a78316d306d4c623741635a70503841666636786d307a504741356e6b6f42744e74695a4d357867497563366455644d3862552f524f6d6c4f6a6f4b44362f467268353166513967647a766d49766b2f77614468444b4a3768397a57756f76377a6962555a61492f6530792b5746716e646239656a534b67567134527641462b38554277425a305841554d5a6e4974304b4b78476276786f6e7370366750734c6464566456715566625a77343130704b68587442494e49484d2b49584a55316a51714c792f612b4336684558746332625037596d716d30653166572b2b7759526a707563624a58396c5438684530334941776a4146685366794141377743784e5139326455496b3754366f336d484a695a6e2f5a4c2f66726d466c646c6135556a384537482b7755304f58536c4e59487a6f6b6c3047304b7977745253504874526d667363304164496c627245326c4e7a6c795763653946715243716730457a68653841447047557a4161665249387562742b762f51724c6331743378685158526431764963436e535372547478457745556132304c6e585537504d684b7958757a504b5865676f434a61524d3141666659656b7845395946492b70766f5434683674646c387338463053795050366f3464436b706c727a503555516c4641543179315a4d38646a76342f573933663251653979533531636e4b6567466f764e5a78505a4769506b5744354634792f58386438747a4777316e6f7159344e7074626d6d33527479315848694a475839736f573462756434336f5548333558644e6a71584a587445785051553973364371447a3131525479766253724d3868684c6e4161716148505331516f7949536d37675333614645346473354e4f4c584166364361582f51325256577470434a38356a39454a6a68376666475062713555746b51566736464d303146465643542b52432f747a6e496674427469314d53316e61324a6a724741557739616b744267634b644e72614c36312b4f673575574653766864796c6c376f64496c796c39484a6f417673303566325244693361426c50524e4d46355a7252314e65686b6c6b7657524d706d32435574334d765270316f6f53687564684b4b6e6b715164706179795a336c546673337a794e6151306156484851464e53554c6b3070317a48484b6248314854554c706a7a395a583277746e524f736e78382f6b4a32315333636358474e6f762f38414a787039695265535642474e435a4766524265646678562f5a2b6f32354f5731776c61436852326e3658644a75677977744a6453446e45534950736a3762464744756745656a646c463150332b7777497347626b3661465356505535656b566559476276383144667052484c385a4a5a3966767a5442517766724736452b424c456147512b7447394f79702b72794f684d79344d7a4d67683779674e42713663665961795665484c327a50373953397466444577554a6849507778673642707935326e31767354706f2b6d44463575612f5a4e31464e466f69374c72356e37374f4252696850565646514a706f5564415467623778622f6f4349624730717a4d796f63335a686c685254506c70304a445879504e3039535a682f785574717434614844386b35537334594f4279494a35706b4179666c50513563666e5836686474764e4c64724c713855774d364f4a74747157376861643257624e2f66347554735a314d35316e7534357567754a344a7a553177473776557568364e4749342b493839666d392b62712b624e5a6d6c5159614e4c4731516755755946466e655478337a425870556776503350734a54595874624f5156676678543871736e347a747279316d5a47726d2f56482f4a525a754c4369706f36632b70577038494a334d7a6c46704d7a645353776144684a4d79557768386a382b4f687770704b7455704f4167744535694a38522f51763841775838736d4430357a73774d6a6167433778584e34627164657175626d697a4c78656e7232312f5635546935746e386b4a63364a41342f754e436150336647366e794e61737a62674e786d585979776e77325a2f386f35364a634b52484f446f36466170695365644c5142424d5832457568306e4e367037536e4b4433726d557977307378357531363842654758717a4b515538584e4f79483361545a556b322f77446376615348735343355055412f4431627477754b543964716635554f4572356d2f462f565161346444477172617a76794e6c67666f6f442f716c7a684a7354536979756250554753516c5a4b30763139644c706d4d456a44674334776371612f53545a494b2b39583961674c4a6b323161546d6f2b6d6d4d7332576947356979396e774a41756a377a6e6d762b514848386e576342794b786453756c32637761796d4c344f5157424b522f5667717a786f68793836616c645075686f47645451346c674e6a397679675a41444149693265763673716c444d47685531382b585465542b4f6f57636f61377375654c4c45364b47554f49507272346158387070393346714c332f7742415143416c775230574e4a756936514f5371636d586a6b39362f5135304b6443724b714533663736422b5961656a306156317334354c6c66304749366770793468564e584f6e3732616e53657846724531706e537950325470556b58306661674658506e397654494e58396e4f784c6a2b45474e4c364e476d375351553845504632523666436e6f4630336370576162776c366d6853782f54796f366b6e4e2b7437496e6b5a6d7453684d446b54744b776d646d52536d47306c4b54614a39644d6656697669446f4c756b5663712f73464b6a69576941714e772f4d5a6761666d41377a546e69545241644b585668786775324c464230696278304b3654593976546c68306d4f6e6f2b586e37635146394f64762f414676676f2f6f456c36656861345a6b7639306a4c5654575470706a5a53706e76543276506630566d3054706f6f4772343662322b31637a66734733394c575559694d7947703637466350757973377944372f61486c38717147304171646b325a5966552f7246495a57562f726f39426f727035553773783075397334694f6b594461747175562b786d63434c33782f52496b696e6b4d6337356f354b56423334566471637536697a324d366f2f596150312f384a422f4142427a63614c4f7a382f73452b753735356b704b55357361616d6e736267714b63507545597436553747676f766a71366166635578422b326d4150535057736f6944744c4a35552f716c4538795a41637a6936696b5a4466385967754d663561655038415a63573732764f667674576d61685351636e33345a6337503664396b31793257502b79754d754277636a376e7342756350452f5944357030673437584658777a513372672f6466416b4d3046655450374e4f6c64744d386a47476c66317a5338465a4e78437361712f6d4b68502f706565716e39632b466f55716333324a3538435147303673355558314c6565534e7077636830635a65613131614950354f5332634e48644a613378635a39466e5148716d38617a70645437652f73517031794f6c4c4f4e657672562f6153435854365878773942686c556e6c4d56556c535a733876686f596c4a4a54784967355a744d7a4d5571416a4e6c5747724e6d626d394e61576d676635556d6336626768687268514e364b35696a482b4e6c536c48487a416f314a4667396e616f2f6841656e69596d57467056534c71665079505436364742344f644250565a554e65574b2b733635626848342b742b3264697759667336306d6d6b48554c72394572546e6d666e645650632b467a47322f56755a507145384b46394368544c4d557052486748555845694467434f734453466e39422b516353307a5672616d684b5672635434383668766532766a4a30484a714f306649765347507248436179366b6d487751344a416441416e4c6e6458464f62316143334652795a63644e364c716e506b364d51554368453750735a496c4f6c4e4d3632657735716d73372f414938343177476f64544b4935474d2f57703334575a7855726c51476878464d466c4f6644452b394968522b70586645594b2b676e6e7a427a6e50726c37503641566a57303049507145693577666430467457717551725954666451632b69367158326a594c76703839786a375a6f35674d6e4c63794d794167377478696e6c4a73747a45706a51706e3752327765674830644970584a456b4d546251555047546f2f7a4d51654b3646546c4d446761535a2f544256586245636f613668795a6f487a35764b6e54304d51367a4c79575a3476397a705932462b6d7249506944682f72684d366c414c67485564454a4f5355643057302f4a3036756c4c4e4e46456b436e634545383352467363395174476f4a2b3954476e336c474a6358304944716c484272506a757a3171345764746271434e3179594e4d696d5a42534e31316d6b6646746d464e41304d5153362b6b61793672715a33653042645755756a666958427a69347630634f706b542b38543458545456586a75717051424c53364545684d56665a322f5a5337717150384f5157546d6359376761565369536d57352f4b4636577053706566314d36772b576a52664375392f536f6e36326d47556c314335676768776343655469452f44313577487a305a74706f506b394e634f42396b4c323969413348313032684c5077674c552b7850644d736665616e7642794f556d6b435550564759544c50343654745833426d397033576a586b39494a6f564f3647665842524b32576f666f6b704c4f4d6d623054483561556e377a4a51635543666c57714d554e66595358797369486c476a43634c566139484744484c58736d4245346b7331457941736e54735337375941584b434150324849662b342b67615078613952763561755a6563335a794d2b4a54386a594b7a456d54767a716762564e38796d367a753262566e7931646f44726a2f41506652304f6c782f5270663574506c41383630474e79386f3933703538464d6d6459773958743330382b33426b7776354e55446462455a31724a5a4e416c7a505970736a684c7075725950794e6b6e37625736316a6a4d674842626c6248647a57694c6230343770323544353876356e4b6d37583271665830646e794f6c492f7569664a73793757766f7148712f7364467757664f705645384b7835413370465a6952553131622b3946556e506b766346755a7633786f334a6e57487070363679794b6a794a6c38546b3861767455385a46393236746a35763841636c4531695a724175543073383072792f4d6376513349375857313330515a6d6d6d6a63304a3538765044516c7a5a48726a38626c44557a365744553735354f7a70704f776d54737a416a3754546e61754969596e4d534e2b50482f4144474c79576336732f6269306133776d74756a584a6b66437248314c50664f72597830594d704b53637373762b4e4b687255595541305072394d4535544556695a694d54416b4750716472356d52544e6d462f784e7168565038417876595561327039785a4c774e756c33514765686c446763684d77684b365a7879434b66616e2b6f314f34475a643450685450704d62714153654833694c386c7a35714c6d794345495938784c51704d3838362b30644f4f48767730324e3934434878767273743444487579326e564b2b48513555697a4d653653476c2b6736504e6658464e466f35756a7a5a5233355033557555484d3531522b34313231657745726546514b6d3048524e6d743233473939624578754e6447633650536d4f3663354a306f2b6273476c4b78627167582f783731444d542f77445a384371556166776658314957385938617631502f41434479335849577a586e45746a576e6d62436e38535678795a37583152437948514875577634574d42522b772f66543733386c3936307845626343394964484e39506646472b58714b4b3366386f6f69543433504633496c71564458487153736f30574c5755533466717a2f4d786a6f3046384a395a376663594c5a6e455a6e48694b6a7633476d742b68527974756e76417a525a58446f7130645377644e363948504753476d58737963586c316931765255365a546c5a557957685341657864746c76414576482f48396e7a54637a2f4466464d47322f514f334b7a6a4451583832592b35476d4c755857777173437a574a5673396e4c554f645479633269306c41497163314d544562706e6a49366f2f6a312b48474c36647839383039592b51622b39514d545976466d31582f414d466a6b704d724948366171354639717344354669316467554e4941364476395377562f574639534c5a3234472b3175395056782b4e6b6e5a4e52786b6f77436c552f312b4959754f32483769614c752f466f4e6c6e714a674e49435955594a4d515653705a357a455a7a50634b7a717a465343712b78585a706d3042653539444b703632414b79795a6b4250327a354b454963517459757a7679753439354d2f62683637736775485a4d37686a4850564e584b3662506868476d6a746d50516c3979757343796450732b536f5a3250636f6e316d353373492b64375278763941647a536c74474e536b696954374e69364b6949712b6e4f3163776d646f61634e4333554164524c6548572f434c5a6e71443354636437516a6d3572737a555453792f4961394e4e396b2b644c4d7a7465534c555277543663387a364f70644c4f4a4f4a7641366b724476647871574479676b68586d7235534a504a61792b6d6d70663055754c587964486d6a536f38634c58556f734b7a7135312f774461625351306d373433474c76393375396f61462b70766b6e6b4e6d38486b4d3264624652523164335730693063786c4c3335735650432f5a39356f5371393148562f4c315141426b4c4f6e4e2f3245625669496a4858497248786279727a72797a647a7150663375586d485574334d30376971484e734e655979536d6d68314474435871593255437564526c533661616469524c3557727343336c6b586b474a7072707761374267574c30386f6e30704831364364656d717858426f6259425a36542f3841566b39585257687a686a2b4b536f58416c35424b505350314d314532716c7331416e746651614a34394643526d78625367592f4869694a4f6c2b6c334149724c7048516c5267342f6e454b4a4161364a7245395276506e2b71756e6e4c5971746c453057687961524e624878316a6d4c4f7164563178557a62585475454670686574566f4b6561544a4964544d6b76733478575a364365573775665a6b4e386738456f3632737043616b6d3854316e316c2f786e4c536d672b4e543577536d6a4e55705454584b315467643850737139366d4a69635477415079367630732f49544d70394e66564b494b487a52352b796c6c4c5a46335939577447656e6d31784c475970786f556c62756f58786c4b71352f73306c396163585545694c556a4e59774f4b6635562f6a643668666a65364e4d714f322b6d4f74464a46672b6251573074574e557a556d575a594877385a6e37726f6673485030796c53614a6c39702f782b4d7736644f38586e6a484d4e516c6165657957647647685443316e794f436c36447167725877696e524b446b7a7772792b5543686f6e7a3637582f57736f4e49544a6f442b7467667a686a5a4e6d304b41714a4c4f664f364b6d52373872396e7058636b6d2f54317436776b6a49594d4952413655474d355466756b68414d43736d744247684d333564437430725a67564f437233364155787748334f7a49345452507247576576674c363465547a61726856372f6a4a7a4936384a37784c732b5857434e366d677869314e4b6d6f304e4853396e624f305a7949636d557363537a52353936376f43386d6837492b496f5034416332474c396d52676978747658616a65307a5671746e75306452456a4961706d326f795766574a30776b4d4c6d6678635031432b4979414d32592f65307a6534724138517a55723036744e2b72447853446270664e4c526b4a526c4b726f4e75613132525651464d6f4973466e30782f314f5535482b705a704e4c4d2f774344362b70455238307354682b4833583079783475674b65654f784f74357055484c71655136417a706355626b6b314b3578305354537771546332577854695038417753385a724f36307a34446e747276304c596649372f75595773312b4666486e493059626e3242712f55307258366e566f3862576f74595a5573566f4b4b7535527a4f575850384172394b55395a7a47616964343635386245584e42546936746b576249696f477431706c4972316f5a63697851556430454e6f33684955724d6c547036612f667872674d4262324a6e4d7a4d6434357466334e57526f394f2f5442484c757936536649724772525072634c534159664635306c316c56476777624c6c614a6552636f61526d6966324766366a4d366744625136322b51347336514b7a657a38546539717336586a5872306d3253587558796f596f624849646f423877754b357a566e57536d706d7046695341464e492b6e72356a466d57497a557458564f735a353245395a54644f3549392b78425536554c566a314c467a3679527172354f61436f634455667358554b63446655354b62484b514d4b326d63694948714d58554a67665355722b5455456b53577a37432f3270767948596b6e4574496634462f514d644c6c4f65313548702f56554e5a636f6256446f503539466249776652482f414368385053576b6b7871647770796158735358786f344b6d2f314d526d63426c42714170633344585a6f496c58616f572f55584e5775697447654a7365385930756e4637534f704c55394a6956544b446f4e4a7648464f7933674a74366574462f6d3369763365387056523552472f56425a493750414b446d54557a2b524d433456444a34785773475466434a752b75356653415555314872412f7468796a482b5966707753636a46356378766c4f56706b547a763748597562553864305a73363567676970384256456c51524a516975454c324c39795849533368312f38717739645a323679356f42356e385659366a6c633636732f526a584e7168497a694a7452363775556656484876486b697a6b53784d4e505767552f784f6e6e383061352b56557631617535736473326259797857667061585751783566785335546f6f394254757a73742b503270543961644a67775530726f7342725a71323932703259467365503554485141556c724130427368675a47323254484b523862566c35524e2f46386f4f62506c536c3133472f7268703750665173615357336f6e6e61323735514c4f38586c6132526d513772354f354e4635464a57766735336446764464712f504964582f414237374a55736e4a712f5a4f4469653577647555413136674c77342b366461736d6e49743758316c6a67624e784e2b644953617235426643377876696f2f71522f544c704c5a316975634b37336450374c71414a773469662f49336b3547374574453875596a4b3044726f5679345a494d743944534b70306857554c717163467167665238746c42754c702b382b416258593773524c6652414e446d542f64356b48444f71427237356130365674425a4b6c54305074476459644d53536b7a456e416b2b423851512f50795378616e616e324f3573787735784b3558745a474d3753326172614731527973346b65564f65354b334349394f6a2f724e2b7a5366542b7344723567336c4166774952545877587571566f48586b6a536d71564650576465796e6e42707275737164704c55584b5a3241436247384d432b567944425042384d523570357730393152782b4b5a6b30627265506f514535396261776e714b59566d58456831622b65346d6441525453482f4b2f6150384155784d78776963432f6166536a787a57752f6d735848783330684e6e53352b7137554269686e7a6557506e524770314856383046694b51416c4c366f676d63726e36562b327a5533544552467541303439567654583878664d2f4a4559556447436e7848745a357a47493868737a63374c792b434b76705a336a38466a506b5452444936586841705475476e356937333430396f30726254694d2f45413370352b4c506950707a7244644434537679337a586e384e526f6132725650354b51565344394f6e56386278644e79527a38554a7971544c33723532443238707673483959553957764d357a624e523546762f414a5168366a56616635505a57415930625869337035365177354e53394136447477747679765373726f7152634576542f6c724a5a562f4f4b6b754d427a55682b6c67503644306659343236576364717730752f486a386176465041665457543143387171307337792f575a52354d7043493351585a4f4243633534654468324851433944556252586b2f41306e5438594a754c326e2f75543357393754624563616a5a33304c2f414237385039616655682b532f774265637243386c30376c3766384145782b565a4e7569656e526b69724d304e544c52517953367269364b766c4b635454312f337669547a6f6b344b58764e6135326a666a38642f5576314e3851395250502f41456e38792b54503875384a335a6e79446d786948692f6b6e6a6332436c79393451774a6672726c352f4c52553942772b3054734e7739456d6d50636231724e61326a685752745434483568366a4a38796f796647764a664252736c69726e663474646c4c30352f3473584f307145746e5377797957647a305376617267444b52332b30334438786a334f6178747a4d385a477358393266385163547a503045312f7944693857794a76575077717a5032504b394c783153374d2f3152394c6d5735693355626d4a5937696332374a3533376e3345756d4f6e504167506863397665612b7a366b31767369334c622f625961672f323976794a386e384a2f435031453861787471444d322f5458314273386479444c506564545a664e6f7366577a5a6e775a4f7774326754786c316b72396c444f2f4842516e324f4278546c6657704876617a5078446362313139515050647230373833394e2f4f4c64585a3869325043643953636e72426666566e717a4c704d78456d6c4e58796168644e6c47544754685462414c30325274726b7570726f646c536b5261746f486d792f413338463776796d39612f494d66316277505576794c3039384679646d447666417442455770483556766471487832625770386e393955666a714b48574f7450672f4f535979515252665a5851486471367336646557497261773769592f6f3533384d5046652b6d727677577a664b67566936466b2b70357a6e5235477533506b71644f7a66344d6d4b7131777347667952684d6d625931584d336a6c474156394f6e6c3354717a753939746b6251656c476271376e7131365565422b47656e372f5458796a314264705154656e337051364e65485834676f59777438743339474167586e62456b65446e31647367544b326576717333336a373275566e6245567461626271313737417a36374c32387231413831384838356838723952472b4f62666a3369635870686f34303957784c715531516a3456326e6c3148644b5766525a4e524f6d354c505a6e66436676706370373767556d4d524d6376356877352f4a443849504566574c563259505472386550557230613836386539526a386138767230575856594346636659695350396e524b7366676f6a6e36542b68555a50704e4b577539733072756d6d72743757705734354a666b6a2b4c2f414b6a66697835576a4b3871552f7a4442766d786d35336c6f5a4e6a2f44394f37524a6274584a7a3748544d44513149533971366c54443367456c76514d4f632b452b6d6c36616b526a6c775053722f41504a68764148316550666b56367050792b61456572644c34684c7061756368326439325647627258644274797a2b317349595876354c5549526c4d436a353066592f69754c322b654e6178336a3139592f4a4a3432535a677a3057546a53776273654672633742665a4c37763478576d78594f4a503178714a6c64505a6a48376c4e46792b734d513535676a6c34416a697331315652324472484a516c3739486a714b6d53466c717a6531424f3435644a6163306d543856773231746a55356631454a636e6c71647142717a2b546e7262722b6b586b63652f36652b4f312b533232595374547979444f6f6256305659704c79744f6e4f63704e4a7330426c754c6f77527974363558765a5355464b6673663170703133524554304770766f6a2b526e715038416b6a3556355254396e4e526b2b45543954347a3433355a6b4e6e52366f2b62336c5a50342b4734335430673733426e636c4f634c5673554337484e39687779394355394c55696b54336276396f41722f4144512f4e627a36697a30623166784f385539504a2f476d30443567757631477a747647747030666b74793773786338352f52594e446b644f4245394c6e536e37503841414a4257457a70615665614e5464752f4b437433354a2b72336f7a5844517a4c7939624b4c6c45632f6950387259566b436c612b3545457552387477306a6b79305132463842437177696a4a5643514a4b7074474e6c62392f5163532f7741316637346e6c642f6d657a344634626e4f666871462b5876375439536d662f795636794c4e727a632f45754a5276537a55466e4f6b44466538665935546c6d36597736744c32574d5a6b5633365166335a2f77416e2f535844785a765476314838546d3861303430642f774445713862513036386430326a647054347446657979396d6c634a5a384d532b30764a316b6b453541434930554935613373394c524f2b7550754f6c6e34312f384179677a6464355a4c672f6b37344a6834705237464e632f6d506947664e4c4c772f6a4b726b465553376c4d4f35546f796d73563261723555365143684c767146304d4c2b79526a647032364430766542666b4a3656666b583666516566656b506c4f583572346a6249757a52646b3044474d56764832664e34767559374b6c2f58736b736f2f324a344a4a6143447239716b6b6747385671545364746f32684f655a5657766c716c70597856394e4c704930536f696c466c513539484a6f62346c39564c644c39617a76474549456c376a4f6d5a5453487031436d6d6d4f6e45706e313474475a4768487145644a6143716e506d755837493561554e6f574754387866567036786a2f635a396334716b744254584235397679512f4337657a50795a394176557a7866773647412f51377a4b76484456687967733350505048504b355a59504b624e2f514f6f567a365763756f6968355a5a306b2b394e594e2f5944774f326d724779315a3478596458385431623862782f437634377a445638617a54386c466a526e4f62723674576d7a6c564436575a44694e5777372b517a616d6472443576727a514830522b53782f733537557a4f59344371302f6b392b4f50706e7371713274724d386338637a6d6a4157766d2b497232636c57687161452f484b4750782f3541644c7873625a5533304e627879492b55664c4f6c5564595739336538634f497838372f4e37384e50564c652f684d44314b77765032796550364b744477755048304b61642b662f755a4b30754b4c46616d47706272694a37456b726952397947456f31306a2f41456a53314b784d7a473337696638416a476836412b4f654f3336486755486a654c6c6238367145465045722b484237672f38415538756c7370566a6a3847654d673571395769655655436c714e783942775250764a6e6a4931322f744c2b6c7466673848355865666e6d3335506a48727a367937666b2b53476d39586c64464344586448627166795536777558715552304d48684d34492b317764533476694c763841562f61625a6d6b6668676472634d757a76596b6c794c6e554a756b363849695a5a78564b6c774f7a5a73395a6b754834537555716c6967707244324567486341666835673370486c424f7061766a395a345452567058713871375a6362366f3958394c61776a6350454a65756635414352764c434c6f67414b6149567549797a6b2f6c5063774179756f616e736648362f77417470357568476f4e476e484a7a7079437169496b7361515672704d2b4b2f774258424d516b766a304f5a32312b7358776e6337356c61617161564f5559387071644771766c59384e6166624c7064556d5545702b335330526f4e7930474156315157584a74362f4f5367477576756e6d7554573268377872422f55684a45724d6e6f37386a31334c5762506a41333936447a5342396e4d4135772f6e7636586663384c387a39644d7a75526950384237487350445279644b31326a6952335a4f55465574374e596c4d626e6a6d743938464930475076344171542f6c6158526f323431722b4961526545655942354e346471312b6b6d6c3466357035586a584f51337837533338374d7664666f547a305855336153324572447a7a584c7a39634e45783854423766724f4d334e445359784f62636f412b5065572f6e44446f5659756a4a364c656e4a317a5877393848767871616f6b4d494a61344d5847326138315864725536776d53307a4a6f50683873645444545364764b77746a53784d3831687441666b667248706549746c2f4b6e7837302f77444639474e6d7653765338493138765a77624a5a63697150542b7174592f39586c564a4a5548444f5a5a36423841464c6a5574447338567a7964507a4330667732784d4c314c667638416d6d524c616e786e3037714448432b4c6478382f42386833754733523063462f78576435724d7a30303573316e585365796c746e51624b6953424c6555314a6d75596e6a75485270777550456568476c7a526666586f70304b64426453656f6b734d5933745465536554704c6e6a705275716e4c76422b745942714a4c686e4c2b73424c2f41417246306c3764466e74304a3175776133784e6a6d642b7a637650624b3579326f6f7a6554756d4e514d5a2f696348732b4e58752b5a345476797143687957723538657a62465172357954504f31376d42537942356a50316657615772574d6f6d3659674f51687337377a397256422f5156706d5567476b376a6c5847445539736f314e446c6d616f4130624937427057397a484f3235614b4c456e6138705a6b754d30724541636b457a424466505045783837384b39515046635769317731594e6465613044324a4b4b7238746c6e4d726b685461535836476b793559726f6d61705448757343507042537771547445375a72493839767154364f5365482b57527934472b574d572f5757667072612b2b4c56527651616f613764505544512b5476484d544c6e715a7765386c2b632f38784f53783552396462524d6365456a5a6c7065512b4e344374445838786e784d2f5447787457375a564e6c5a703671354d577651745a64576d6276316c33592b71795a4d344944345066503337736330774f706d4a6e736a6d6a353136772f694c345a73614565722b5433355165654642704f365050546a543074614c5a444c326c306c3437506f2b526b504e7a794a4f686456564d6c344a397a4a36327070397878665936496a556d4d5253744d6a562f7a6a2b38566565716e4a394b76517a61792f45387878344a796570756e662f77435437304f51686c5766702b556677384246445a585663745a457575336e5575436d317a767147466c34396d6a45377263306541326c394350377333342b37666c76694f542b556e7058354e366665565951346d504835626c31522b63344c437551543556624b4779485667352f45787a72456b4961796879545a4e4e4f4e4a306c6e66326538522b7a7475486f31394d50576e3075395a6645312b57656e666e506833716a343979664e7037712b4d3078536831514856774636756256434b692b646159556a524d794f6a696339522b7a327a433776486174346e4733624932336639485538474b5265653462354d7655356832393358735a714d7051367a4d706766502f414d4d7a576956326962524f7a707039354b63304b2b433349632b6678363844792f556e30493835394d2f4c63655459787a334e4d5754566155463849362b356d73304d692f73535a2f6275536c74564d72762f414853342b5430666236592f74535233764d5676466f342b762b52784339632f4156656c6671723542346c355972566f6f3272744a3774717251792b71626e7832667871434c62315a594c4a364752777a2b355563366e4e544e47744e4c76764857336f724f2b4e3064414d6739505047384b4c5231776737354b745a61576b72756b374a4c43547656732f547436706a503841584835496958652b623443424b71556e6b45436d7241457474756d6366434e6d50526e38575054472f77424e37734c6138763841486b2b553665702f38367638707355356c6d62427462464364444a73536d69646946734564424c327a6f722b71796a79483268385061534a3264745332376c6a6c3643542b4b6553354f623544356c68656463794c7472787573487933593039735746354c6c3572317354745957694f4b2f69626c4a543465533276573477756d6d2b5962706c55752f714c562b4b4275332b4f4f7834723670656f5069396d476c6d6b334d737a61764462344d67484c58666a547a776e4c6f55767a553144386a6b7371446e62593566707872474e6a472b795138375a72457a4d446f486e3161792f794d383361576f53382f6e67586a5a387962414c6b366a6b76304b43587055445638555a6a5a4b35335461694e726773435977464b5a6a48475038414b7036385242505765486a50566a77396e7a73586f5835436a5877733576632b695167754c56464e424d5563376b6a4c467a6f4b6d416b2b795970484f5536723572566e465a386862767162705863385761564958636a5a50794a632b4d6d4d4b2f6c475558356c4334624b4f75576b334d49365039533650665a383443585a754e5653754d786e6f4a4a365752554234376f4f6369634f326555374363786c4d2f526b305749675855786a7336797a724b505a737871506e782f5742725a766c4f5950656e2b6c75732f4d5a30324b5472644a623055516c666f564572724966616748364b666d552b39644171545a376c72556657502f41463162675439467a7a6377344564395350547954314a3862763841464b4443546c5554744b4c617a6e466675654f36307a3532535777757167595879433567636534574766734e336664547766315a4d5469596b65625831487966567230573963504a63716e514f3749786d72386364446a736a3554665a6e756a6a6b39736a597748552b372f414345376a4a504c2f7275645a6b41555a4a306e6832784e62317a334374664d396e4b39632f506777736e3856504a6d37324b374f30632f794c63382f6c384479705a515248695137303032796e35374c30724d654c4c71723570732b6a39424945556f307174484a6d6665645079692f77443078386f48784b484c39485047507850316361636e52364d6e6d6c766d792f557a417555765963334f7a374b4561693950376d63354e58585470642b356876306e4f2b45444f5851704d5a3570314f4834647530576c3439342f7741386c3835386638544c644b72573951724d6a4f7939457475533652565772417874653369712b71346f61355a3036452f57544f2b454132786a53644b534433316e685850344a48654c306839487344306d385a6a385878783566454d764e476a79485a30587564713358626c314d52536d4170517567707a7a316a7775544943553477617777352b3238747254615a6d52504d66587a47396c6a634e484a374156796162355a7046564b7472657064716e304c61574c47326464514f594c686f59494e64384945594d5a41496656645378585a4b585a7952366661653866717a3363466a327a784e4653364134565372474c422f2b7767542f414e63696c64377a616f416a646d524d7865517a52547747436171474c4b42305972355832694d71517247633474527a5a4a33416f5a766b4d66656f535a54784451414b6a332f553778702f5a7a2f6b354d764f6c325034712b2b2f72466143325472314c754c5245746e41544f57666d4a44696546396b7763312f76424954324f6d4b7a50534242504f2f4b7457667858527776454e377848314533746c673972384b6d436e72714d725553767469324f514a3978397a713944517152396866784d6448384b633933556837375248484d387344585877587931614e4c51385a394a5055317669644e54474835483444352f716c64687572475568307357697a7577622f486443305758436e354f646f66504d61314451314b744a656b784843625633416a3556762b6d57787351654765637144307739534e4e79503450796158797a45302f464e48354b4d33787649386b71316b62394470376d614768444f734c5a4a6a3564354364556e4b4642545964596930526d4f616f69506b76696e71636a5479702f41664f66467134386d546b336d766b794d424c74485251354f565432624963356a525a7461385936437935547a673942337661353743363374367a457878714b647a702f4b664c4e2f615030306b6434743578713831624f2b542b5a2b41594f376b7a317732537a6d53575a6f32476e4871634d597a304d437767624d364f4e6f4844396c73384934326a6c432f716c567065497a466b52314b72386b546c6b76794c5138636d73623434657474354f626e36302b7969714e2f30426177624b564971596d5966707a786b733579645a4a455445347850416253666839347a365959666a71664e58656f33706f2f544357316547766e6c2f6a4a4d79744c543079473631566a4c42656e63626f304d6c364a54704d324a46582b5a555531486e7154615a78746e674e31482b6465415364673762366c65446659625133683138382f3841482f665334716d433565644848514c716956515578467a7275657a2b5347593042776e45564d54345348342b592b4c3644364d622f77412b3845345147724d727a4f6562595254392b5a626f5a6531697977714c466d7969486a7a627743557833735371662f45436a453963415333314339504a32464f586e76706e335035646650564c6d2b562b4b6d414d73363654576a6c6b6c3047425656386c7a706a54772f3841446e734776324b545362474c66676b6546542b2f33366565626569587154365a656b666a507170507665686671676e7937314e564a692b546550364e6d4d6f626e4e3066472f4b667033466f585a7562705566596c4b76366b3347367078537257366235612f56396b6d746f746161383165413449366671784434394f2f4d38452b656e4831355a50482b4168646e3253576d7165396f716c3654526e6f5a55346d38596754442f414e53492f726347663257396d325a34593669302f542f78666473676c504b795a4e472b6e514732494c5636314d5770564e4d5766454c3768464a737854645a5562414235673332474c6863524c54505762524857527542365835586d506a7239447a377a4737416b386177737169797a5a39736355746238584956524a6a7a317a786d46466734355938764353723578634145394b6a436674575672524d62593644556a7a66796a43382f3373534662584a6a706431646c4644653650634b5048585571764e424d37442b352b6d4f31462b387a5176696435446735496b574f505773596a4569632b6d336d5533706635543468742b6e6d6e6e71476a79704e775739756d7a646d50555a7a4c454a34654e4b755446686e53746368417573366b2f63625a496277373256635772756a456a2b6e6a36652b636550612f703536646262504a4d3464616e7758773761324d354c347a374a58663431434153506d304e4b687364686a5779706830564736616a4e4c67646358506e447772524d58746e76452b3863386c38634a4d765565526544616c43706d794e726b335a374775524551756a687a744772575879565a3830733867374e3168677a51543263714442763772617339655039417333794c78304d696871664c7648624356737935355552626e6a7631354c534f50782b492b7130376d38752b616c615a61572f4a316f48414d794a693577353173547578742b76654966356f2f7876573841386b38654c797277696c4e655542316d4f396966646e746c43567939484e466d6b48644d6c6252574d4d41507335704d6c2b386c6357466b317a6e4f306162655a4c384d394a386554557435354b7870513148434b6f48615379725569647a575a306a595a2f7743597130436c71397076705239412f7742642b4b55652f457a574a6d2b596b587a2b50506e44644430346b3831387838743862577a7a5834626358456e3138504b586e3537686c4a4b4c46783942395767686568557a6f4f5439324b643373624b726f4d442b7157727a596a76486c722f75302b744f642b486635553763337031354e6e627966556d6b764f39476d4b314e364d335338706d5a67483267735677464c55544d57472b4c67312f706332534f72306c65394b65392f73386538303533644b2b7630484c48432f74736633467637692f6b5376552b2f77414138727950463374687a4a504b2f504f3139587359306b4263543554334d736e6f4f504c5050305261434a32794c582f4a455332302f595a643365646251305932377562386f326e322f7744354f462b583850696d5850344a35356e336553305a61736e567939424d6562695a554e4d7676356e64744f684a61444f314c576a33314b515644743154777070556231757a6a3233547a78714f656635662f7742755038377678566e6933664e5054544b387179737861306f3831394e474d7130633271523065676d2b58614d55743931466c2b6d63386b3079666e464a665a48722f62374e744c5830745763526262387831682f74456638417968377a503037322f4776516a3833664c48626670645454443437342f774374576739686554654236584a2f6f6c4c35344e7951507947426b4b5a794f32744a5034714d4f743753523130487a2b306578784d62744b764e2b483141397154764b5961636e4738677a4b5661324a3552424e6f3532786c3052315a6d7976527a69656e5179364a467655715678566531704c59487554706e516858756d6f4e586d346e4f4f384d516d5a5334702b3679717442525a7241636d65634b567334566a687677745648746d594b3032664d59645a387131514e6d4d57467a6a6943622b4f7a424771367138337932557a305a314c41753577366975344e526a44314679757563787a32644a6a4463662f7761506b496c41615142374e707a75714a3958576c512b537551772b3471674b4c4a35335479677863716b797258596c676f393636585564396f4f4b5956474839416c6457535965765a6b586c4b43686d737069374c397176647a725853727171626d363072436c6d5459787a5439706d43592f7347304b694d4143763837526a374f375538696f7a346361424339625233366238544c52446c79712b39585767446358303670553631484b44557033772f7851436c3332663841442b626a2f63553941742b4c386c505737316e394873714f44784c553959747a623859327648613773786f30612b705955657245586472396b7a6c6c624550627a674b6156387266764b397437513976517647327462527a62526f5a70666b622b5347746d76385530765544793668665457725446394e6e3276732f72343755316147642f6a724d636d52616d4e436f3658443777372b67492f3630325569307a74794150692b4c35313675624d43504a746a58386d486e655973632f6b46565774704b625a395055546e5a7962595844396f33466378494a6e4c336c4d44472b35334355325a6d73526d4f474237632f37506e35706669782b4c50342f35486f42367a65716542365965616555655437666b3874666c6166346e415a342b3544474e34467a7332536555704a56435455386c706c4d372f774454397a682f65487a66614e4c55314c3736313356715054567a7a2f774c6e67325436714c3877385369394d74334a79747649386e3058525a654c7135656f2b64694b736f374c412b71366d4e6d58395035686e373761546150666638414b304f4445377475336e48507a38792f7a2b39452f7741657652587a587a48776e314238523951664e36354b4d7630333865384b735235776662633533307570306357437876526a52517963474b713644656e41424d6352682f743230744731373169613752345166577a56395876587a7976613876384158507a666432504d664b504a4e72613062395454306c59574e4b3974302f384143315453315674786648354c4b47466e706b58786b775748464d6b776f5679623171376178696c4d6a554c79487776756835596d50787a7943584f3858444f6e7a67746b572f5356326e51702b705671766e52374a79544f497a2f73766638414c78314a705839736934413369656b54504542734c7a2f59384c3877303965584871646e75504c5a5a74525356325a394e4d46374a43445152747a2f414461574f51727557487463704c5770454363614a6746457a4554474a48544c30632f4e7a31792f485864683875394476555059796648374d3344676434396f4f75325048645a5055325572524a34586e465165624e56506c337356593442665039445436777339726f65543457306f314978616f3764666744353735722f637072386b386f70396566466645647a3034302b34336d50675763697a63387a62343832797a6d46366939705235416f644c4e722b76744b57766972535361662b3738684b53302b58577254523462643057372f2f414b6a6b422f637039503841795830672f4d6e314339464e587a6e58386c3853796e775039506c3634555a6e4c6372797169647343326155476665796a7162746279426e796634615074705370375866477635656e326538573036326d7530462f7741477657782f6f5038416c6c36416566714669386474336a4f5074614c4e47737572386638414e4b5a3439466c3657734f6d57686561544839347165623970716f6b2b467866556a56477254667033723378362f5165307638415050785247742b4f6476714234366355757836665a396e6e2b5366636a4f7453374a7247694b73614e4d2f723035363070316946644a2f6163376f7539344833356a5635756c4d6238547833446c683652656f4d6e724e3662613866703735526e332b5632353878592b72354c577a584d596b38736f35493266795a73364e4c503658755a7750317768546d78755145665a674a4f39717a57334e586c46672b452b4a666b56354e735a326e36353658704b7630796862693272484138636d5a7465547679713838306d4236374a4531664e2b744378597a7a4e57366a53366d676675476d2b714a6d6b5247336475476f2f3553666b4834686c2b64352f70313662587338703878314e665878764761637168326c6c766f4375506c4c4b6466512f7973576a50356f424f6630464a563830395078752f794f375454704f4e3038745233592f475a2f695750364b656c506a506b6d33687962506645656b794875764770303233577653746156616c5230526a4830614e495258527a2f714a2b7776765730676c6e39636c387a613034477959372b48556d64566e386d773030616b4875594562796f306f7a56504a6d4d61746a573641454c727056726569697437707078554233666f436f4637476663677265696b303131464d552b647075564e6e4b33494c4e7954516754735354735738757039732f477046616e452f677a6535772f75634974624a5879765470727a7145452f4f464b3875582f6a505a63462b586f51787a56676c71374f2f4e43747a5339704f5744682b6b594b6d4e5a676f2b66744b5936426d56496857706f444e6e794a7a36614574444c644935597a7a4c554e452f4b4b766849754a4547675a6838704b456e4f4436456e65666268476966782f34626a5644506d4e68555865797a726b70347151492b634a3363644e674731306e7967677861723548494d47424937657a38686c72474c5350744f6e725a72786c615764582f766f4c4539737570454a696c4d3145646866572b5637442b5a312f4a524a537632476d58356c65474e5236546338787768696f302f5447592f4b713865496138734e7a777861717161494f5435576c37426448704a6457302f6c4e33736353416237794579313035357354385135652b522b6d586750723334752f6d74674d386b78645042725a76562b4130507a575555507a76746a70546d2f464963315056314f6f596f6d76726f35375a59774363334d3774457a70323441447465562b6b33706c6874384c772f537030314a57725668736434697a59376d374758694c43624e30394b6c7a44326f65617462716970726e6e2f6332625334364f4743436c6e4672385a734e5863503047384e3853387239522f564b7a41305048664c764c704e4f6d716457564c6d762f683438664e7a516b7a734c4d326e466668392b354c4b5431537870732b6e4e53755571444370476b336d5972587255644c6677797971364c664b64367a6153666a6f7a55592b486b59794b39545443756e6e4a33612b6a464e4b48636e517a383351596876476d546a6a6d536b2f6d58473555754f704f4a386f48512f504a4f6870554f476d6f644c4a37552b69393854536e367a6d42567135516e52516e6a732b4d662b30743751544b59667971564b5649784b4649782f642b764550495046362f4c572b526243362b5a394f42347453425a306c69616648394f706a7376617533596b56635978646e4a5535346457644249534649465038415a53354c7972756d75594771786553656d58682f71526c556246336873484e375532526274367a6c4b566c6d4f58646f58765939394244523768537a346c2b31582b6636486e523450396254457a4578485552547a7238322f77416259324d54487136486d6d73757275526e596e702f6e73386f304e574c4e665976376878544b627a692f6b5751645233762b48733733672f2f41454f2f306a5376347a582b49554a736158727841322f79325044444e394b39615139626e6a735733556e7a4b624a633950776f3252765737712f326d706e58516f4d545677773443694965682f56346973384a3751764c303939577565653457566854793279506c2f697a61796938324778667a66716d43654671317347636b70583075643448784566754d522f5266315361346e4d787845652f4d2f7a72776630662f48667a7a633133305a30754e6837646638746c5666547369713550595749435852304b63524631615149766b34412f4a2b2f662f77445644616b5461395938522f4f733954504f742f31483835324e6c4a5748647661756b356b7962683242322b57524c7a6e62746f3058664b39316b303655322b316966695534554752706e42592b7854625741314344314e394f7150346d6d4454384f3867514f5946694b6f325a3167484e6e6679455769476c433451614a2f596c706b706a4a786941542b356935794471596e624d35375544614c4e2f4b7a314638733852795054683654305049772b31426c706e53693648796a4f716d6f52664a53656a3131466c447973732b6f53375574426a6d6e39542f65664b4d3470574a794b7138303862322f546e6179367443437a487244506f753038712f4b38687a366175364a797a50697a303369686d6c6a38796447784b484a3463316b3059554b4835412b4b65305445394a464f77372b3676557974694b697462346d4c346d6963352b756d465279734e624853434b786e59764c766e5778526b6255476b65645a6162535a6276775059372f38414a3766796438353953665066582f306a745a746c343857563435356e34564250316d5a342f6a32527a7a7861574f764f43686746796d7a36396254712f77414a676a4d6e4638505731526564375a534972575236764d3933777634746a4a77736a6b752f546671327079714d7873696247514f44506339747a6b7559772b394d5a3068393056542f414f3569585465654e4866797a394f6376315830332b4c74726a6c646776384148715a394c5a566b626a504839674c462b52314e536a61685969704a314f783531646d536968704170394c357a5038416274744b32324d2b59355165686634562b6e75523668566549654d5a5134642b3837512f38336f7a697366567354797a2b7a4a75386851314d7652386b54527a592b3759517873513272504374504b50696c54766257744d5a6b422f7a53394c74772f4966506838496f7873782f696a59383378542f79456552654f343045756557676d766a4a7372376335486d733869476e73433348326d4f424c5068482f41452f31625374474b352b49615a656c2f714836715a2b68702b6c2f714e2b4f66504d5045473039373442366c656e433137486e755471774c6e4f5a6c5870693779536762697a65754a477557663841445a4a2f4438724c7448776b5a36576976616a55322f78645039516866356e2f414956745a365235487166745a68516552654e4930646a7a3671643950327442314b4674777a6f69315970526853417053747869756235474d49663832416d4f53644c56343759346a6d312b435834476572503535666b7a34623645656e4d75396d59695175386a39555055463049446865432b4159566b69664a5049546549386e30764b4154704d6979345a75712b336f36553357465049464667376175725853303758742f326a2b6e3736552b6d76682f6f353662656e6e7056345a42626c2b4b656e48685744346634596d6d7237726f737677337835506a65644837644c326471756c546d7a7061336978593554752b3867615075447737576d31725774504333654c4d56475a7a724c74715a2b6d532b386c3470626d4a5439643965696e716b6a7a6b362f774457517256326a6e796354373175563778556d776445385a6955593144525249507659384235576a564e52574962524c4e326a67694a56305845417035384d2f5944412b483030742f6f484953636c6e4d3269756d706969516871613661526f4870726e4e6d685131344750426f6f5751395761574f5748556949475073446e4350484e48355a5a7a6f4771644e694a574e714c3676506841587657707677724b3739722b7878716b3936784d35703979577555515439417961357977414f385956416852454b2b4c3752387170383579364f6452395039365243396a4538416d667375756353424947423849446a594b2f596448523757754d2b4b374d6f766e34776d665458612b5871654d6374516b4a4654333972463357476f2b653057663043464a42413577734b6c2f4a724235396355556951645962426f564f6c446758555643394a5053593672744352703648734678414839426b3830735165692f3536426d76564458544f735538733669574f564536654c416a6e6c4f3657452b667347423877644472434d782b45486e58783851535351494e70454b574c346c644c58555573573643687066594d727065726e4c68633753626a476e36365144336d70495239634853503634517a414831354f317255694664796b4a63346a6e3456422f4e3765536c387031644965644d783930776d775059446d59614b4b5a542f534442375572516b58745633673338706e736f6c4968366e513066685a507776657a392b304f7053336f756e37774855504354704f6d6a2b616a4756584d5a3145686873545a4f317244706d73617a687557564561577163736d682b736f69393465785465676a4e78484e416b4a476c784177414a4e4b5a4f7061783146464255553961546663776f2f684267397055596d484439676450326d432f4b79685a57507a4d616f6957564c6f323937786469656c59586142734d53584c78784d3730306c4f6c6f6d494b346f656b5841617a55667068726b436835646c4951427077397a2b744d574d30577a6e545948536f57554c432f7962396e33675075436b3139596b43476f62704a3577566f744a51386b554453733642744a4d31776b796374497563594c714a2f647a692f734576374b47714d4f7445777a2f6565764161542f414e794b56476e2b435035586f7a6c4f6231666f7235345878702b47312b692f4977485641784f59462f74316b744644442f3169584f4c537743597a3369504e4e43647572703438616a2b5a6a342b56656a486c35635356766e687a64547831427043664a50384156634b2f743565754639674a47644e45576f7574764547533362546166694372396362373174767844594477756e4e717a344844576d3155314e6b326a4965522b733230613735394c556d6f5651792b68782f377646514a3350737a724777355a703239612b51385232612f457a79756a57384f65485861417038616c4c426e7259786b7662677a6c2b4f304a7672302b52723049614f45775a2f3055336156466178744d6d57696b6a506e314978503858366a64394e2b68525a4b36586158496b6d49747952316d6a45313152646c79364a6b54326645786b34756e3046644b653170742b452f66583061425a547a6936584a373547466e326c56356c6159624b4b5163715454625645726c3071314e316b7852324f73704a7a6a4f627256534f2b61565256706d4d4545426c6947513437507173356b7a75375861755776377a4f53735a4656796c4353517a68665961566e6a303871786f734268307434436674302f4549664b5a7158674d6e6256544d5a3376506d2b4a477a4c784f524871646a7258644c704f41685272513571706962374b526665616b384e53546c6d4152754a73314b305a394b504675795572644159635335736e4d78456b73596c43786763544b4c4675576b7554546a3264567937716b705333726e425a66703465796e78485338723173784f4c4c7155484a34376f7054374c77566e796a7937556a6d69574d3874335978393776692b3138513557696158794b6f39354248573834346a6d3050484a7453716659737338685a52392f356b3055544c2b424878585a383566564f35306c5533666654386f586d696853536f65616766366c4d744632586e352f5049754d66613351794f5845475a484246534e564e42636979637365304a5979674539585449564d483048653336314957396d44625830612f48335738756f693874386b7130635048397a756e4f2b6f43386a30344f726e66546e634a664a614a6373716f7946765062396b532b3351342b544739636d64723434514e353979334138526b4c4d3855776f59496c4242424e4850494d5a50524850444b6454577a5566445064503841656834526e3075474964453168504e37335a526e48474d534b7932664a2f49703738317358694c4e4f704a33586c4c544f7635767053334a61323935756f3663444253707a46536f6e4d754c4e6a4a32635335774f744552337a675366782f6e6b316659714e54485a4e63494965553950363062567a4b346c5932326d6b6b6a6336333638664244356b6f5837412b77357855394473664953766d6f724e47724953352f7a526e564653736f7132546a506c4135796b736a372b674777716e51394a612b454447324134673937772b494b733868382b44485670655130334c5849676f563669706b4d625a6b763435737a3557496b6f4e6d665678667a66454c5a45657a682f46516b6744376754455a6e456434314f386739663562646c7976493232547854544264486d42773649626a6e31475466786a4939464c795a71544a6c4a72506e6e52527a76476b4c6b2f73423772464969596d4f3466736231615a41376c4833506969666953665142566d74472f4464414832555a6e30434a72537a6c51773562377546386b344c41716d556d7431786847795047526366696e71376e4f666131572b34587662494a7a6165364a346774377a7263725070636246756e5455744e552f57554f5546687034355837374d42707a6d737831462b342f71686e504a6b666b453151654d4c526e713071744e55564b4f4a533750566d4f372b76736661705a5651786665453552724d4b414a4c47734434717a6e48436353426d384e506a316e504a764164523857662f414345316576486e502b766d6442766c6339504a3570496b743969786e3061686f346c4c5470444e344b472b32576c5470694d3433422f6468656e767276427a786a7a764d44463876692b554d3763783153514f7a394a422f4f31386d6e4d4a6b346b335475563750663841756139494e6237365072752f714d7a54457877714f58337276364b2b6f3370415654537733332b455655665046354644486d646a736f696c2f667a626376424f6956334e435833695857554b4d4c4263325a744a364457623174467567306533744776747963695836515864544d366d6d5156497a586f356e73674b4f62534358684d6e3475665a624f53752f76384152752b543348304572307277357536424976464e6337773074747a6c6a576567754762632b3532314d4e67777a7a396c57654d6c5a623836724c7630587853714b716a53536b7673704d535645784d546a7646332b4f6e544672563445794f6f316c496b7970494a79724248495064687130572f6132364c4658513058616c48654d656e67414d5a64614b792b765279425a4d31465a374e756b575847746d376e3674392b58486333394e7257656f6d4356665861306757314f5369684c774f56745550762b50334963437572434b626d376d5a6d685056374d2b664b363677382b79724e70657556632b667642546c347739734258312f7366442b6c306b4d6a707152564c51443579506f516a535273664e513034472b513532653569632b7542563476533367366a4870306c4c41545958645a6b6c623279752f37444864716e7137536c767543546246476e524b757a4f5a6d31612f4e65657831365857736c47464b595652355038413544677a47544a58353659313859337562397459475845727165393941424e6b2b517a464777547330366a754e394d6a4b4a61316277766c51635561354d31696e4a537633574134726a59747166613151726d494642586e6e6e6c4f56347034583558357466485a512f786c475435566c35704356317550742f794f6650526d54792b302b3245764f4c3448706d7958415a7055564c326b2b62366378457a4f42357a2f41463539534e666332647a573870306264317764753166726c5250586e4a504a4f68685a3262566b55444e6b7a79615648304a4b4b4631736a547347496b6b6561633464316134694b774f61766d5770744a73334a687541456b7a4b50466168793478715648384c3461364d4d74372b526e79352f62704f6253616557534f36557039566e636f6e56765473774b53644861326a4171305a322b314e625a3558615931637776384178745459386e7147596b2b6c373563384a7973656446502b6f41317076637a343631392f7177392b50344b74474430796a7675352f4935302f6933702f6b59313547324f7a55784c764838665436746d4e62436f34592b3647582f31724f6e3334613657387039742f77426c496552667478382f30485237496d716f30593674716b4d732b386d53706a394f724f69566978474f6c524c7a6a57507259756556637637663334754e613455752b79354c4f467a32786e6c3644596c61636d4546644b6e50393267696f357a7a734577625a4452335136356c534b48666f6330626d55554552306b50666d6355337841677837415368736a756963324f395a454c785355525571374b39704f6a7266527a542f6a3043796f68573559714c6a767250674578637869564d634373755a5a417a565a524a5948443030364332746433676971413261456e4c526534766a71514c4c75393750655147626a35535943317a6b41396d4e45304c597a4f744e48317673386d61734f5761714d31544f684a703063636157522f486c6953754e656b4843372f41415748514c376766487561363069374c39493355395437356d6f61784c77556c2f79507373537a69366d62544a4270636e395039695462333371457a6147566c6e5a5074767a616c4f7346416c545a397a542f414934394a6872766c497a5a47535a2b632b5a502b37707535396633424e3334336577674c3952504e4e4b72507a30746a7242715636534a313037476d7051564334712f342b6f77765453756f66615642683951347765315854396839416441696a5675324b382b6562646c676f702b7a524559786c744e4675616651354e566b306e642b74426451396631352f7667413135694a454841585379616e5263344b6956314d3731396a652b756c714c5a34646576504c2b516e68355037654c544c592f726c764542534a482f414968336c495a3371584c44794e546556327974722b7a7953576c6d71797a2f414b636d684b7136624c4a30732f66754d347834726638414d3559506d475a337355514d69616c6232576975775a61316372485173766e4e746368717a4c4f4f586f556b776d4630714749564f33682f5a562f6d736a456e536d47567457626d486e396e3467786d446a4b4a6d6c7152357756544d7175552b6374516c303355487a3633734a6a51553050622f746d457961514c56616576704b364e6870674b462b72425970506539574355594e584c32556f37637463382f774449646e3473573936373745784d343735566d5a676a4f2b32523630767650737147364b493834632f72364735625570664f7463326b506574735252477667664a4f61515561506a367a707034344337546c702b4a71776c6e4167707a53547846552b653571717444476d6e686f5a4f3150574d2b6a636642372b694d484837304f2b31395a41474a5a7a7a5568423748696449316d346d4466795572726c526f416d53536b7356685252505566765736686e734d614774573552303864664d4e4c72674f6633304f65384c6b6f4b61614b4875736e5636554b316161536b6456584c6d794b7566524d532b3835384b6e455054597a324d6e417a56445048626f63576d774b4b3771615247736139536451636f6564533051444d664a534971596e4578663748766165705a3754555043694d346a5055556a47682b664c6f61467654306c6e394771504e3673782f6a2b357a70315254774a794864426c79636d635572614477615a75617a67646e2f546553485761687146392b6e31687955545750566f4a4c4d483748506b4a6c665134365868756c4855576c4c7573424a5466634d2f6678544239344435614b736150756e6638737666396c47314a4f333231572b3234625471376f35535262525974685554704c6c35676c716673422b6c4e496d41756963676f6b70696665684e667563366b744b4c67766c59433164444c72694a4c61474c5777564542724367503430793670676d4b56415a5a6544556a634f5a78476771765a37652f6d59337270776b3169617a4c68496846544b6c6b52416c6a52364a2f707a6d4a374d35736651594a474664453633434a324e46703052565a37516f4c392f64634673775355473074535a6c30764f74627737426455465048447a69684948797272553143795050314a67526d57534d7a516d564f3753557038494f55543642615539424b716c6d363772794869514d3363392f36576b46702b616371636d69744f713167624768792f76493967727269594334573865655a6c737071364a4f397154556f576d7944726d6e372f5955774b463258347049394e4d4c4b5a6d616368465059594c62566c7a73623855544b57556e4350324273483963457a732b3531682f4e384a6d7347396b6b717830484d6d6e354f6965647456457566586b364b784e6133497030577a53304f5373596168347437434d6a643771476942704145674f302b305771645a794f444c4b33504b6b474146632b314a3231655049324e696b4a5070464f79584e3974417a4e4f6c6156716e4177706361777254796b4a69312b314b566e304f306579736d7353325442626b766b6f6c43316b644f6b4b327a79726a6e715144674e3654416d4c702b6233674142684e644a7834527936735346565a695749303161526c5145596b576a6f7769775a7a65516f646449794e354b2b774866654a334b63616d7942496c6165646650555647727055354f753469687372652f7649314a4a6563412f504c71534155613750696a425a4e6d43656d5a792f6d6179786f45436f386a7356576a346b354662486e516c793253353867636d594b464e597873363070537a4e686d5377584759576357464b7a664f342b663045725779676459713552435074495a797668476b64426164447232757877556d4d3272475645596b5466642f7741702b7a3861612b7a6c2b31426e35534d7332545a50466e56564c645134302f566c75614f742f476856666f5a74453847547847662f414c70574b492b394d76384170707041367748324348487a2b346641522f6a6a35494536516d4c51387238513171496172756a537a2b51314d4272785167645a5345734c4c504c692b436d736c734c3453354e536253542f414630364e733334395058396835395252394763636d65513874575a504273695861614c754c3074523864383166784b306b2f616147706b367a3042783870384f4f4f537350707a54315a2f6541574e6e2b4753335752373348354e467136617a6f72517066317843504c71386b596a4c597a6946366e7a6a35553541414670716f6739396b63386b48516f72624f4f414a5254756835482f4a745a646e5a6779646430304b38686a726a676c484f70354a6b6e6f4c44505a4536566655684f63646a6a73374f57662f72367a2b7241766c735a61695a31466c62595838524e3746324e727a384e31566e6b434b367435476e647a71626b55315a76436249737a375471316c505231706a315766593838692f5054727a59504662364c4643586b5470706b2b4c5a5565576c763862544a6b535a74384f466e346468564264487a4c2b4873337955757054534147594e47492b6c6e50484f6538626b354f7248726459364e576658347470737a69505537567a557a6b2f79446c7a79502b76534b7979326b6d4f6d4256514637462f5449696d507065344d356a622f41426955664170544b6538636d666a79426b47676c5750484f4566546f78456253786e324f48376c613267377166324b53495a6b7a2f4e533334585436426e49324c6a4f585a316e484b4370565a75624f323164746c2f7a5254664c4a79706a7a39715a2f727434775157366e33743763333242544e6e2b54372f63424a676b30447179622f626773725a636a576d6354596f6337557a2f414b6330796a2b4f6367304d324b3353575175456c385a4a59307870376370484a7442626e6b336e57446934636d44796165375941324f30703831484b6d32446e352f3769686e6450473062493232446d4c5259394d62754b664f61526f437079537972457a4d534b645a3536586b424c3064696e71394f5157544d617a5737636a496e546b7a7a4b697a703277762b72636979564b41533663796e483575485346426b774e497245526a756b62462b693334362b66384172666f614e4c4335692b4a525a326c6f4675367648545a7a6d6534664968364532544773486b58596b706f6c6e544d6b457a474475636439646a6372616b5637756364506647627652763841473778733854786d334d3873387a576a572f6c76493942697773466c765951665245314f62305a637347584352544c6376765059387669724d67627a47643170347874724872313679556e36692f6b2f354c6f37734c6e576e6d5a7a6a30674f35756e736a507a345a466f2b33397455504f3245366635757a6648317678476c6f4d2b616b4553547a464b7848694c4338533953394d593457746f2f6972366c3149354a546d4d4b6a6d6c6a35376e3677636246714b6b524b626f2f32706b33654e6f4e314a4b5743665a5a644530384a467830657145384d4d336b6c707266385772335347327271416a494267393251686a705a77357062487a574a4c764a6c394a4c41346c7875536e704454624f647665427574366f3557585256657a534f4d3665676961334f58792b625261394d4d36334f304a39644b4c684e32646c7a6e33765456797a5663645a2f7743784c5a3532573842574e2f727957654449716f6649335347656c6d2f50505656796a6c4376734d6953704e2b5a3059574b4c6f7a664664575641423747476e6949756648614b654d674d7231746b314b5857787632614a71517070364d6465584a53376252554c4d616b6742494c4e6a50626e30462b347a50326e494e506672307a774d6537387732312f4c3664684349457479337458375948564a68795933707147685966555a547230544b716c357054756c7a2b4a583030387a5246787a7556326c4e713132353435794b7a3139565a386e706c7538634261687472664450325376514a514e715761584c6c73654762577461624a675361472f44566566734b6c3141636a7341486b6e724667654c526b69576e4c664c59614e697a4b4e76535a52614a73645852316d6e72642b5370376b77724950384c587531654c664f6c4b3166596d496d65454456683371425a7632556a647479477938715678544a4f476e76384d765235646648457056544f73734d6b7a7665726853575064473179334c36524f346d4a6a714a7a343735412f53306830556853766c7158555874487174715454563074524b557a65364e6964523144474631544a77614367674d2b2f5957783379514c756838766b6c367152505571304d754653645049684655504e434573366467687a4c7a386d65696a51637a53536566516b4a774a67477a707044704167487366717874346575517066427a506c776f655454545866475845715a59556c5232586b592f786939315970364b754f4276316a6239787930795456784e596e72417669443149384a395355646672635077587950503750564465396351743149457075764e53382f546e6d63794532565763574578534f56314c334638464877652b6d4c5636636367746a6576666a7549765a3949505754456b6634707452464d4374434a6c4f59324f4f536a7438316d6c776c78314c526c5135702b314c374b45303658776b366b5567795a4e4a6e6e72484e676142666c5a2b46656c3658346f2b722f414b527373386c394c394b6d576533477930556875654e7a564b4836572f6362686564304b4e42576f376a43417953446c55316741417053746450563354747432687a367737362f4a724a716e784c6847714a6b744644336e6e614656454f71736e5559343656423964714e54476b6d47734865796d6c72544942353878375245527767504b39516f482f796253746b304a7157526448765152787a6f314637546570552f54324256376f2b4c366f524958527463342b6730484d6b53666d6e514f56664c6f7978706b34396a357a65327147535a397761684653712f4a637763334e5870575643677573366c4a7059716e6e764b7a34774d692b4835656a616d343249757074425457305062632b5971495373314b4a696330575373366c4a2f587a3174396c6e364d56664b4e69514d7a5a3069347549506e514c576262716c70674633384a564e42386d6a73556f717a364f742b435a6b74692f3377516f2f7743794a6e385668557a6444537231673957763569364f624430427a597379336b574569514b32557330335a6d75454757587a6a536e5968657776324e414c517a76767154594d3770514b3957735678467567726443656e71593277335631526d436570394b4f30507a5153655a71536c546e2b4d7972596261737a4c397356303658486f74374e725766414471787356484f36647530575a6d787868687248736c756933566e354f475450516c75685264666668326c534438704f625752747a61436b703473624a684d444e737a76703049644135622f774232464e6a6646665475687369325177626d30764c525a646f745539736b654b656a322f6170304b755a656c3239784d374b396154424e50744c32554e2f303736474d794f4b4e69314f4150756c4463773762704965566f57626d4f6232685349566b69582f414b3143493672766531372f414e55557a4d36637a776e553776564763786a714c736f395a4d3375584c7258656c766a6d68536e4b48425858736f787670334a3545704e4c355a345a555071306c554e615833563063366d694d5935436c2b486c42317850347636663246436f4958585064395a61552f4361733367336f6970724e62503541554c2b5a623535794f70612b65336f546941676258394f75666e785347414a6d36715a6b593658767070727044736648726f2f52445171354336512f5a305856433250346c69772b4531784638546b74344232352f50376a493536302f4c6646557963567a6439304e4e6c736271436e3654534f7049574877792b6d66732b6235535433364475474d71514d5036636e6e39684e6644716a69387a3854756e5074444765532b4f505445767450322f714e714b786c4859713349425a4a596c4a4c437467396166323364654d596637596d7378475a4872652f74673563492f6d48344e584e4e6c35673458693267764e724a6b6d79744f674f45374d304f7936455761724e71627a48306c6949687a67632b6c374f55707151394d3342722f7743565965733256374e5a74792b354b5a48446d6f3161644d6f727869334e44527a614e47673238416c6e384c49714b41416d7a384a6651637274446e4131663965614b4e303446586261686d7733545537556f61465830744736486a6c4b614938303748502b636c6b45732b61356a47562f4b664a694941616d597a505464792b66515752346e4d675a33546c477a6956516f717257507356513046356736705a7a75426f7352524d634e487456774655444d3734357148477775427a4d5758343771584248746656724d5856794d64386b6371754d6b304f78435a684d347143554e6e474d63755a38334341424d42635a6539547a4147694734582f796a696a653674596779356c544330596558636e56525631704a4d754d57366a505574694b56566c5146426b6c784b70536f46637636656a78467849613261774f5135736237555a79484a5350334b2b4b422b6b4b6b304a513656617630557a6a2f7741424b7450535353514c365a7a486c505061597556525236595547786b3956614c416f6e59307178524f5847463173713150416667424c724b412b556a2b7a376e794165524645733164504f304d5437356b4e76634b6172717971376e335633525266514e3252554d5048495551764e4c2b66444e3169374f644e595462776a473877386d30394f504d376c795a364b692f6b62416e58616c7a53367a36645656314c7575356f386c64385273635973654836565175647644534d544d52786b47665066553378623077385672366e6d64724d6e4833797a5163564e565672646b6a6e64502b2f6b4c704d2b773578733638665a5356494e3648506b58307069737a493533626e7154356835566f2b534b58356e70555333746a30465259374a6647497355437271727a68732b65673275703773552b317633754b2f583849377338314b6665537474745937687245333144395a6646642f4f657a314f706f384d487373577974486b53637663695470526c6f56365a397077794a62417a566f2b526333766d714b7a393255766d6a306c4262465a6a7338773263394a66464e7a797649317476776238692f4b56746f572b48576e4173484e327046306e7066427a637534746c524d6e734f736d67314e50444e4c51524d6b466d6d6d7470694a78616f38624839334a676158355565742b544174766d4f3944753530506e666d6c6551384e6e79774d7678764a7558786d4464514c427a3572485541326a6e2f7634396e7a556b316650313650732f4454723849325a386566684e394650537149706b4652356a34544d486556347569534e4d63584d7a387a55714b53717a324c2f6a2f72754c6c4b756b354c6f306b41434138622f564a6959766166776a65767733384b765162786a7852336e6b746f366a6b7a5365566233504a7645664539536273446339626d346d4c743334364c383355354c39726e4b5a434432754e44506637794d68796e55764d37524966376532454466796239522f4f4e65682b6c5a742b4e73305a545771384c355849374449704932677854394b6356325a2f57383448786534503059457a7674474e662f4c7274366972665076784239614a665834764d7166556a7a374f777738747075777266545031423050547a7944505272365669624939472b7a782b7a6c693345764b4e6951436347456c337662374846784e6f314b374d6265486e784855583159386233737238522f566b2f4e764e4f6563366333704c36675a586a2f6b657157546c37382b4a6e2b4876464e336b625048384f646578642f41792f7358547a4a6333332b7a6e42367a3342685763366c6356323859486c532f4474336b697066576451686c3254657057582b4d7430656a695a7432627867643838386d4b777263357458774c797163582b6552575163542f414b544e3539396f4d427666717845376679356a3744314b65752f6f6c347874512b422b54674c664964767841384f4a3775584171586638526c727335755a576c78693171714b6172446a5970724330752f6f33546e50416f72456e775261596930666946732f692f77446a6e462b486a7657547a6932484e7866507650664d472b597a36533464476e496c592f4d2b32644655374b686964514336732b4e7241396e314170634c437a70786e594662333935746a34616831366d666b506f65525931336b6e6c4633685650682f6953635a554e2b316b696a556d786d31756f52664936715068556644737934716c71573844632b38484d73354e534d2f4555694a7848614665656d483533666a4836452b59582b632b6f727164503158782f7534506a384f56346e597958786e77374f7262567a566135576846424477493952664b5070437071566d726e4a675374786e4e744c557647496a6c465a6562666d442b4e5835416563626e7162365a54352b35352b5863764e386b38425a694a6c6962675a744e52552b5a2b4d626d316c78386c49452b5363667835643056634e784f624d3159702f715970656c5a69335a6b624c2b6e743370696e4c6f32386e4858447536497659713751347a546f6b314a616f5536653378446d5655734a584c45397236776165696f7a6e5953326e3367524f6338656f352f2f414e794830496e2f4143493846384b39505a73734b66477050555478743268715444512f563858794c673069386e386a514e553747727a3470324a656e6871416b2b2b6e674f53776c6454706f5832546e79473576397554386476462f7741647653427667506a6f5a56343448714235497659746b786376507631506e72324f53647a7a7a52442f414e55577831547541313677347a562b6d50663970706a7931377a6532365230686c6f51742f5a5a313655525a334632414f5a2f367341542f7744584f366150376965706c524d346f2b6b4a6344354b33414d38356f4a637834434e476933564b4f3347374b4f6c4c7773306d75683355783135374d77512f774256736b342f5653327179684576764f634b5a37444b6737586d3069746a624d626f47673339786a6e6e324e36423748715a34526b7132482b6c3468722b52654d757a3656556c34776c74476c70763552707537396f5530647a364773374a4e797453576e536658424e4947756a746d3878507844546230732f486230352f4f6238654d2f3162763039376e6e47697175632f465052587a366a774b4c65714331326e7a6e6c6a4e676a6e72306e6957587a747449482f48456b2b557a6e594c44506131376156397338663475596141666b72344234702b4f6d4c5a3556366e656a763548656c6d534f396b5047766539544f495873357a594a3659707333523137696f7577524665674249574c614c316853644142537453693170616235725731626651637a76554838763574727770612f4850563379764478627039444c7673646f302b54586f7a6e6d74435a5a366d7a7243555a64446d63333749467a36703652734c6861514e532f654e4c4538616a6b37346a3645657333354b65652b516c36562b4465532b6436646474466a716f4d4e74596d7068726238394e764d3041576e3731446b6d627a576b6d4a457659316f6b332b743576576b597462614c6139516678652f4a3730646b786e6276706e6f2b4e5a5156554e545a50624e585438335a79527054575635612b6a6a314b54393562786337394137376651555877675039566a5530352b4c7149456a316238687847794c387838654856377763642f4162497250624672793630564d653237675976336b3049484a2b4c6a6b635a7a392f726a672b4432704b303169324d5834667948524c3851667a683955767735383377764b765366794c54305046646254637a7972777254627062666a666c6d4478646a364a6c704b39664d6e534a6568597746756c6253346f41716153666d2b65664c553071366b59735065542b4b503548656b6e355a2b6d3050724a3659367167386438683578742b457a535a2f3552346e745774304f2b562b50366d5a6c5750484e64446f7547566131533973426a6e64556649772b3352354770532b6e62625962576a58452f79444c67344c697a61465465326d666c6a47664e58624c704771726b31584f5172426a496541505263556f4775747870443633555a69762f414d6c2f5476543875384830664a7648744f332f414d6938627941335a7347446f77523646654c416e5550594b665132486d6e55374d7a346b2f762f414c784641705032704464525232394a784f50456352535a3439367757786551534e7839725379724d35456b3252646d5a574c56512b4b4650456157316c3247446d41525a38794644456c496b5972425a756f62516a664e7138427246343136732f6b506765522b5a6568486e586f3536566552707a6453533742307454566d73784e3330336369793845552b50746f6b5673304a48556f4a6674653070332b386a6e6e72704a7a3964744a69743474502f492b7638303958665250627a4a765476384148483066387a386c383731347056542b4561572f342b69766c7a687a4e5461324f6e756143317256645437536e706f6841356e4f48526e4f4e694768474b366b6332706175305878682b456571412b65654a2b503756335a765038415631622b366d5234656e546f384f3050494f2b524d4637736b5a3838314f58466d304f45724f73343642667a4e36577259313331617a4e647644732b70486f66384f386472385467772f4839476d5762516e34706c4c4d7335637278636234467a73757a5966342f683858564f366970584f30684f56664a69466a7952513867354a6e4d35466a6550546d6d6e722b30785650686c6a7a4b4d3750654b46364537545a437a7257694d334248367855635a3151392f514a7036482b43654371414b31304d564e73537a6846485468784732504c506b58506277334335476a777a59537566714f35592f7435475a7042587554376a345641564f413330305856396568696970597432665837654f5a4458516d3966746c6c71464257536f5a5031514d6b2f535951645438545436422f3045327a576457367852426b4f732b57514675707a6c3858594c55314746484364396e726a36774134524c5552765366794250544d7752494f4b66384163742f7575656c6634467a616e6869427638302f4a66536764586d2b476745384f54466638383971622f4b33797337464c482f45736e6242497572374e6b37765a37354a65693376566f657a323165505a3078354366794c2f507a38712f7a4532393133713536342b5251346e6b4e362b302b6c76707a7a51384f394e736565653967775a6f4a465036386b306b78756f4a4c497a3635726f354b57445766743067394454307450546a6c723962646f6169775a48714c6b6161627642396e7a7a4832594753353674504270306344556b546e76717650366b434b4f75304a56326a4853616a4950706759552f77446244374e67617a4554316764452f7741566637766e35472f6a5235512f433963737366794e385078373449744a506d66515a36712b4574673056737035344e35556e5136363733554c4f774a71536a4333375075436e3561534e4f4770374e53385a72507537663752766c35682f63376e2f4e44794b444639417654712b536e5635506b2b2f5a68774a4c66463072644b7a574c52717a38732b4377732f4e716d34555155312f4862424d464e617a637447556148756f7a6577394b2f34462b4935666833346a6544655077304a33744274756d343762516b6f3335746d6875313547585858484f6c72485644747542504c474f75352f6b514857582f4143726831707a715449326c725a5078466d734e55724c6f55685032746c476e57734e782b4f566c6a7039475a504463785470324e366b3141633441416f39337a444e466b4a78365a675857454b614b755a71584f6c47562b6737594669676c6e664d43387550455367666e6871637a35654e4e496c5a38784577666a64574661682b5458696432334634382f46386a666739323773367a793163656e564e50745a44364d6f63706454474a703070543146666f46547448374c7244616c687241627a763775324d6933546a384233426d516e6333594e4c626e304c7a794e33526478457a73664f39714868384c435a525a4a555570644b58346563534841475a7045587372786a79447a434c49586f38795a764a63396a35636d424f6c586d366379746d4c715a5a33357977675378464d4b52716a7053736630626e6a7045546b6a383653644135532f33512f345841394e63337a364b4f476176786e593535466f374b652f376173626e5a30325655386270413337306b376e756e766a596f51565350444571546c70563061475a74696669486b612f4f6e2b3465727a7a506d3841394c4636694d766d63796265337462517a644475307570566a4b4a73734730584b51756173696e52314a382b72585a57674b546a61416c36476c6f37597a62694f544e767246726f2b72343568366c4d45304f6e76652f486e454d4b4a373744485059777073694e59325375464f58504c7a6f504e5849415341416e6c494a364e6e785939644245706139492f494230564b72343165624c56612f524c52506f664649756875744d714e6a43314c6e727972716934522f5a63656b6f767243345435774a73765478725a696e5145737a33464f6839693574436e53585a504c5272747a723373397730434135715257614143687a6a2f5341616d6570526875542b4e2f356665762f414f46506e79504b66546679426679312f7741446f31654b746565356c2b534b6e6f58797a504e537665483866533245594158326c78416d554570734d2f6343737454547071786965492f6f4d2f68462b566670762b595834752b446574766942633865507972444f5479727831504b713265492b615443754c517a4a716e4f4a6455664e5455547753624d366b314f344966703141416e7964585474703232543849677634626e4e69792b66727147644865656661454b4a345a38303567564e53526f7068686f556678704b4f4f506e3636457a2f35472b61686738436b4570616b35322f79476c5839326e78434478582f7848315a526e61554f35354e5a663454354655636577334f66716c69352f5a4e4b6c634561587736484b7454323852375149656d62476a71714e534132396d6e4f61794f4f335a74624b384f304e7a4c683350556e473763734c73394b66315a6d5a394f684f36485179313165524b484d577033386c384970354d713333764c36376d4c6159622f467835422b39442f51536e7a6e464c79757678665730357276753665726e2b522b6f666b6d654339475050546f547a4b78646a552b66355035426633496d4478554a304a6b596c595550536b35746647597a6762552b432b6a2f6e646e3878356a72344868336876672f69576f72477a38744650334e4245794b6c366a7333795861304a556f71675575574f556e2f504f2b6e3371536c5032426b47584f6252306a74574858722b322f6c6f304439533734383973754c3470522f425a63326d596d7578667a51306330632f7942576638437a6c64493570746e5859736d755437366d4c4f44712b665836312b5133363865745254367a656f74446b646f2b706d5a30514674564c68586c314b676f585273792f4c50786f6b455a5a507a46795671423644765a53543074554755396d763146556572656c692f77447a7865437a774a3739766d626d35635352647a6942645a6f57426c786374314b7566446d744b53776d7a7054372b4d6a704f354b552f42326961394c693066567a637254346247656562313954734f37506238716d716c356c6679436b535776587a72506175797a4e49784837492f384130353041653447694d566a4e6f38673439472b7a3065456b53612b57544c70376d4855476d434f5a6e743743363441736f6c4a7964412f70386f4d5032536c4f44677a4a704c7050637632704567397739717676644b74576a4572367447654152792f6f71447363484c6f4a396a395a6f392b4d7141426155385438772b306a703648655642765459696f357a74376e572b783663363941367046783058336f624d6d71507359714e795a3578734955544d5652512f384159456f5062395167383933393546386e6f313566364f65752b59674635766e636d3367656f5746667a55484e755a6c50334f4235425252422f48397a5a356b36692b484f7634422f39564c35756d61593370362f5a7357693150776a35365965572f6a2f414f702f673256752b562b565a69724b63484b776f435139474a6f514654786b6e5939442b4f386970746f6f526f4671494d6147754363306f6f4e734e4a64664e4e6f765868466352362b596e7671483678666a74364a656d75356f59506c506a6730534e307870774175694b6d7656785a616f4b75616d524d6d5579386b6e46724b345a55713651563249506b665a3374764b7356766577685039714c79433731762f414347382f774458493447352f69362f4470342f4359614f5562656456342f54586955364f676a506d6d6e6f6a6f4963324f594b464a442f414a2f635452707353367a74766149325570544851656a61577442597a32614c717a5237366f556b69556136326244657546333756775641544f4d7a2f7345664f714147756e6638594b2b4d55385978672b3970724f4747304b426632693674614a337931734771744d55666b4673376d642b7864503841786157462b6d4d373736684e776b4e4230454450543461346e757653564a33717a786e7a7a647a6a6d68537a50426b747469796c372f477573796f7a446a2b664f4b5848374675563876424452483831507977395076782f796f73545738307430504d7531753371664366486969312f4a584e7a4b34644c7174476a522b77506a7333627173307a613853414b4a76696e44344439346136576e4e2b4d56355235305079522f7656656e486c6d314e46365a6543656335766c33757277753365653557586e7942347a446f6a622f4c67334d304845755536475430752b7638414d4c79737035463747744c6e39646c505a35694f613152707876384135612f6b56702b52365071523652656f336a506a743845415a327634337a435841682b6c546e55447362612b4577615373574d2b787a727668436330704c46593133522b522b6c644f6b5269316430446d422b597672562b59766d337150355a366a6573326c705137572b716245753076447058782b4c76354664526455694b2f4d684d4a376e62444c4b58643433373657306b4242316e506a50665472703172574b4459622b79643556356c74666b423631656c4b374e7179545a3943764b6649565a3150554f6b37354a345835526a757a4e6562513364685838533546756f7472616947696a76732b454a6959556e553139716949705733356836507654722b35666a666a766a55654a2b743367766d4f46526835487636696a47445546744a712f6a6e4c545753364f5a305066342b726b357330532b7a2b6e556e394a4d61766478546f623854467343787150377a2f7042747a61655a6a544e44633075684c6d3453313064686b525879586b5334504a304650507051735a7451392b592f676d72516449735a314370656469505a7252786d427a352f503338302f4a75666937366d65704870317938764863764c2f696d2b514b4e38733461666b32782f346e6c57356d63704f65745a6454726156624255746a7050384179454a326b424d655961364f6c472b746253504870682b616553476462704e79384561514b58624e4b2f557068314b696152427a6e666b63325678745855376f436b334355633336416a47626e39656861754a7831794a6642357435467536464d76664e7474454c4a5466533574536e634e696853675a3647722f30705a56504a37334877356e4d616165736248387a432f706a45646e47513362355635526e6f37706f386a744c516f764a714f2f65327a32465857485943514852746e5a306d46476765673567434842377a35557641566536412b733956504f35417a35496650764a67354e4571656e4c44623179524a59674a54686d5841796956695754746c593134493530452f444f726f4e6548734a732f4c39684c764166543731782f49484a5a6f5279362f6c66696b666e2f67767072623544592f515442682b53655a32756e384f79712b642f594a6c6336483552624f507a75546d676e6741626d674b30307050344f58635058642b506e39706e30672f47756e787263386c394e7646767964395856443354664e35356f646b394e593159302b4f45625551466a78637159756a2b513551732b41613649313961442f6d6f7a6e6562663269312b4557393158376a666a777630342f466e5133687a2f574c38512f43664350507337576363422b6e2b715737344c7579347a695a7857646e654f536c3768376a324f736c6a636b6d7a2f787276303431754b58756332316574645464556676585078583852664b76464e6e307a394c2f414d597376314e70386967447874692f486d35586a705a566475746f5a38343055647a2b2f543053566c363355735a505333332f414836434c3637666863704f70453772616d334930366c2f745266694c7a775879587736623864504b664476557636664b59617362593376494b4b436e7a5a306a5a4b2f753952432b6a764a2f6544617571616266672b393148486363656b2b30616d632b383351504c2f462b503841367136763544372f414b4449385a54337a37782f794479326e754275534d697a352f472f463079327931565451564b2b7156704d30464c4e56482b696a764134524a366b69377439646d2f7057777344592f4e48386a732b5a2b4d507176755a352b4d615863466b4f624e646d4b5372477935496d7137446f51787a435664575373466f5a50374b5854416676467a652b2b5063307a6e4845555273666b7a36706559364575563548366861685977515557456d2b2b726b63693475586c717330637159667178324d75635878554373317236432f635a6355483958696c59365641667966386b2f5647324f654c53382f764c6a4b45747a6d7572734954476a746c4d575574567567534a736e697453786950744a466443627a4176326f456578464b393152616e34472b64656f336c333977543850637a54334e5a75632f3136386675313870643772734d7572337831327a7268626f4f55794e61386566696b693153556d6c67546675677a735a4772465930645435442b6937367543765a384e3870304e444d67756e7a38576a5961714e6955436f55345338354e2b64795a3171387443395a4b786d4e50474946365853664a584d4c427338576e4330775035626d6c367a656f577436696552364d2f6c2f6e7663327a7a44794d703878486b566d6c56504975367256726b5156566c4161446a306d70637635652f4152786b596d4263555a65394e61785776444137756632647677796a2f4c443869722f5776314a6764356836622b6a6c474b35754c355274467361586c7671654766444e3433724e70304a334e32777a686c6f59394a50634b366672333266576b49544c6b396f316664303231375676384178487677394e37697a5a736e46777356336a2f6a486a5538614d6d505079346b52306d365278466d6e46413468544f754e5169387545526536592b796d4c542b5a766b32723354416d6944656b453843667448514e663841494770617173616b516a473051592b6d6476334b75797059583350303734762b797633383976474a43725055444d7a504b76357242386a67512b635a6c42705361576b6955454278784758476345676f2f77416f616e644e6165396e6143666b446c376a4943524f4f6e444138486639377638414358776238665079477766552f77424b4d65544b776655624c307166555078444c3037627071764b6c30305357626b6e4e396176342f5374576c786d502b5643524f5a38337855304e66384131363373757261394e74754730656e762b796236772b5565706e397450304731743835582b54654b393878394e592b39736f7134586a766a577052424a524c6e39754e39533135386373767565507845784466726d365a53775068397072466465596a7232683172764a51647466317a373336644b5957394834644c694a74484f2b593077694768314d6f422f4a4a2f5a4767432b4a77657769514b33467a6954715a2f487a733539724e632f6a6168476d664f2b3261476e5647615a786c58386c43666c3045733472396b7878384d47664950773047674974753745454537743356316366783349526f4b742b39355666463433414b7051306269314636744a6644376f492f3542337850457955724e365a704f6c7646636649636566795a2f76702f323550524c5173384e743954322b6f666b55616d4b746739507647374e44496e726b367831306a504d704f66582b75525330533858782f2b453066776c4e7a736e54713661657936312b4f3361504b622b647639377a387076793938693877772f54377965763054394164455a45355068486948514453335a667472366a6e715a354862534e2b3156334c474d5a6f705578774e562f70617235506c3658666f2b7936656e465a6e6d74363749704878763830764450555053692f2b6368412b4f374c37323261657673615142683233532b4c734344596b4f2b46697365703638596c646f4833464d4d53537a53414b582b79303663316a6c3469366f507835394e6650556330504262504361652b567954304d307350636d6a6e7a4651516146624e572b716d74536c706c6c755251787a65762b6f732f71464f4e36542b3558664e497a33443650347965642b422b54793257466e654d2b485a714853364f68736163456a6c78496d59584c74516832676a5648485a47773759792b495273533732425548556b31767261507a534e44507a4739586643764d6a384c3842384b32356432587734394b7261306359564b79354e32753135616e73753070794631677a6b6b74696f5450353378734d57306364514c4e71566d4e30794b506636782b70506c2b5a6b2b4b627671623667616e6758696b415a32666b36486b336b7035486a387341463262734d746f706968796c7a69754d704f6e31667331514d424c326e39533232497a4f33467243317176556548306a775047764763713071525847657a3558794d7935724f3074626e3653416e574c75325644714c734e7038366c6a547a532f667a56792f51375761784d356e694b3978764c76502f564454324e44777241387632377779366264425069325662586f56356a314476635055626d6b5059317039746a657442564b776d6d652b7671672b3246457a697658674f6f2f34442f695635542b554c39457778754a38613856736a683179347a5079546262586d36306c7457617152624f565a736c55392f7534446a374949466f6f752b69567a7978316453756e4f59375139414870582f6278395061636e5638433366454d35574435506c7750422f6d50386976454b524e383752744f4a444a4974684a794358323878712b43797743343750513264786c783231725a7a46756738365839786238482f4c2f414d57664b4f2b66656c7446786542626d6c525035546d35744d613570596e4c586c6f6462504455384c4d316c6b5a455379704e6657574d6f424d36565045757a523166655269336146522f326476794c38693947663769586f376f34326c5a6c356e714435496e3038383379574d75794a644f54792b79662b506a7069796b725857764f644b6a5141436b59307577556457514f43656b4c65303072665274452f447a564861722f7743555165696d7a442b52766f4a36753566465337666c2f703472784e33546251684c4e507858586942505a6368762b6445437064625759376f496f53476c476d6b6750683175547a2b783278533166777a2f4146484758593064473252327858626e59312b6c38396e576a3847596466314e4379714867617551353479736b4c45684f567a2b5471344d77544f702b4661592f77437475505a387837592f52332b344636422b6f6e3459656b48664f505633775042395566566e307844302b3853394f6930655562322f356a6e79367555365a654671454f674c6d56584d647771567755746f6d597163766853356e39656462527458557469764c576335486e6a2f4143562f457a3165394c2f4a7150556630493830623431567578646944423863304c394a642b58786b5935464935475a714d643977476552616c5149484e436e6f734a33666a536e343575796d72573062623137493144306458382b6655534879544e38313964664e6c2b6e75476f6b324452727669722b3171647a58626c50655830523336574347706f5a64446d455874446d495938536d6574615330694e4b4d34727a427434795768365452563636504f557670706677702f502b30365665796566386b706d552b6270477465587075306b3255464e7a2f534833766a6432654f50724354455734594554522f63322f4b65546533452b4165573850784878726e48434771715859743952426a746e392b6a517553486c4632674130435147486573542f464e436b77483470436d4e4454323861383176734f734834302f336f66566a62395073312f6d2b66342f357635636976653034724e4c5230664872623759777a2f354c726646306550384e73364e4b4746453763746741304b564a742f51664e496e6e76374e574a6a484359466c52663364765746586b69452b51654b78765859314d2b5a466b6173327a534e6b344538725372716f4d552f39696361496a4551614b3832675873735359326e452b7a786a45534e375078642f757759507254357a692b6b587168343573654b2b532b51755a4a34337461355975666773333666636a6e69666b505a4e492f67734a4f347976354a2b636c4d7a6a6d50356146713437432f7338316a64576477374e5053764b4c7344616a7563366c56366e56483858304965636e724d6843656871394c394c6c6a61687279616b6a386570587a356569354163774e7050322f443233345857564c376e636f73456d3552794a746a61304b7055777a66547a33617a684468394e7658647a546161314837307441686c554f4631736f4a6c617038725a475850325576364951694972316c777266326655414c744a672f4732686271334f476d6b74416b2f634149643667334844345a3546487053723135664976454e53666d4e5662397847706a7a777559507a6c506c6f61716a6b7370642b73704b793737412b4c727666513773313678387834762f502f41466f2f493338472f5648553250454d6866714236562b5361706c6c34756f2f6e4e6c7156794a596f2f48494d71644338334e45764b486e496d787958464a37317a67464c373264394b74616174667757714c3838522f7658654f61436f4c5049507854324a4e7a526c376d2b4d7762574552646c4b76546d6d3532626b493577625331616c6c4655375344332f3841514e435573706371694f74765a7037745350734b2b6638416c643635666b58644c52712b4d423478345a626d2b4976557646434c74325a6e49546f5561666476737938382f6a54433678384c7151616e334f6a375465594b5359326e54725450645964337677793266476372307430302b54366d5434357470325561673262766b5038414538335130382f5075452b637a744c68533355787538646836706944596a3455424d466e665a386e4a716274334b4e79666e6643423877635a794d72527a39473156476c616a487a364a64434a6e5a48726c766c2b745847332b555758736a58304a49766a53314b7a37333759445231476437354c46796a5044376e615933555a6659626d61667a4174363943366d4e2f446a577969686e66672f37436c4334784277456b2b56687a4d396376536a7a6e79665545504c76466d3665504d3555584a596634693164614e4a64537576694758346670324e5452514b793777502b56675a6b58754c6e39577261496a684855566a366461336a58687a623766522f304a796651537a6d6e5a6b5a486c2f71743474354537792f79316957726b76726e794d53633033523143796f70505a534366664d522f7344393339576d4a6e4f36322f2b455867506750713536316157527a58396174694478444b726e3874446e6a486a754e343573374b38336c6c6e6358546d4379683262685039304a48773366614e6b58744c6743526631574a724877594639614b64447835744f3043347a526d6c7057317a71354c50617165625035615249305a3644617a336d565873447066346d426a336e3956366a69662f41486a6655765938752f46547937533853573179386a794478782f6c4c4d2b6e6e36376e6f305a344a4f6b5450304d6f2f65736e49756b6f5038775a3335545837782f7270396d7847707a647734456632782f785138772f4b50316c4858676b66584a34466b586556625a2f7862615a5a4b653531556d4c4a657442456242477830375a55475156683844765a37304a614964657671527052694a7a75487151386a2f467676354d77665035642b4e506a666c43636f4d714b5479666531475337564a424c4c52575339366a4c71426363363438743074434861544f30324e556d4f673535542f72676a553933504455414c30672f74732f6a4e3549666b4762354e36474c353555797137512f6a4b4556563771334b5a485a6d315a577374647962506853346a377750625057317a586352534c565255327472336a6a467541685835462f67326e38692f473848774c3149395266435052723072384b35503439694f31764663507a483153324c6774466a4d69726434355363484c712b71507964355958506459434153344a305554716175796378586461332b6b6332664d663746487156483478355a33304b39544976562f7769664b523552705a752f6734336a2b376c64717264666a613847332f494f6c316c30734c34656d696a374a6d6d6d616f4839474e7737783756575a35363762534f672f2f77416d6939484a6647664476793038783951387a56774e50503841555478723037623472354a506f516a6c52596b30392b652f685673595976584f77694a79512f7953365a77305056384b6a783975744d7a70524566435056716b46494b326c2b5355394d6c3365614779325a496f533246762b44675677584c6a306e457958674d52333372436c6e796e37766238766e6a5158316a3264624939524e334b6973674b627163497559375074316b62335a5a5a6651724f755a36632b564731476c6376735373585747706676704a335256745473774e5072667a517776783132504c30366e707a7365555139346d76766e336a5179364c50496c797870386a305047363437467a4f6c5a48445256524b7670663975513671414e642f77417339476e753758374e67686b2b743370462b556e5042665648774853306458483874525a4932487966786d6e453878774e6249304b6a6f77397646764c6a732b72705175736a2b626f6b6f383174656378337a63436c4e626165617a33693766467644664550546e4a593342386638666c6332644a747252446e71316e4c54777446476136487371574c464d3861542b767879316f616679642b4a346c39654a6d5a34794e462f7a4d386948314338493066532f78646c61612f4a34364d50526e6c6e566f72484c4f623566636830394648506a6f6c754b667047596c2f774334326c61665a6a5054536a6a756d4f794f496d7a2b644835642f7742726a7a5453395076786d313866302f38414c643730763950616656536657385479664e615043352f31354273654a654b5335336d6d57556e6a4836783967727452664a43645452747a4534796f554a683165363039654d3335717a613242367a7637464839326a796a2b3558365a2b6f6e696e725a342f3439342f38416b64364c3059645768736547784d797646665544777a546f6446682b58352f6a4a36464234656c446643754c656d562b34424b2b5a30507738764b43507a2f612f5a343062566d762b58622f41472b76684865796d70564d5876476c6e7842784376314e573954457155546d534c534643524a4b7a58502b322f47766f2b34354671582f414d4f5547412f49685a39634b69524d7a39396e557531357a4947756c33746e6d5532442f68624444704d6358563959427354377a2b514461665149524d6554615952515a303170583264685a3833657969514e46546e30684c5572502b4f4a776a313439647a3351416f6c6f55416751666c446279743378456a356b4e6c365451354f6f4a6f2b547237432b5a62463846634b36682b4d46725a786747664f395759732b46584f457566444b3732567256317a514e4a636e68726d7256616e72754b443559474f41317664386a4f734636663976752b45753863487436416c306d43743330703271514c49726170434d79364144453572696d593159645951554d6836503656374a36543530707a2f4145774f352f782f54314148615055564f5a6f72696d6639304c5466393433732b5933506c5175435368646738585136716f656d6b4a2b6d5849662b50383141372b744238342f5362454569677a366750504d7a3431716e487a724f726b6f2b596a6a37786b37562f476665645558794847445241464e4d777a2f5a2b73684149614266524d5a49576b506a6b55484f5a334437796b524961356e735a3869552f44443877744d5457512f732b632f536a5a2f5767644c42656a6f777a386d34355a635a5936547230524f495363615831456850743636646f2f492f7673353879536d6148564e392f7741494131487348446d73797965432b7a4f46527a69314b70346e3069677441797652386c796c32454c6b2b2f6a50313732752b454666734635383378646e313442384557544c546f387932743675526644705957785a2f494c6338574d6e6e7072625230355a2f664354423737784a537a49693738544f304a30447444464b706b72616c46332b3339726c596f487a4f6b59315056364a4c6f6e393039524f5335693349442f414a354d49754439695a4141797946544e414c485356493545326430626d58593554737071634b476335663752637869724a3553463353496739674a397951446e395a316e725751564e4261374545716453485673704a695a32736a7461664b6e567a304f6e624766776a79786a6d683862474e5a3745683858375a2b3036426f384f57554e73452b6832654e7a4b467263694a4b7277393265315370394370375979616f55725958753674533654442f59336e79387a2f41436666376a5437382b342b552f68682b5571455341366b7652547a797063317961376a764163432f555573756752563255634c344f64366e32494676756143676e466a543030663837542f41497048387972783757717a4f592b62687a364f684d7a4e467a7937505561616e59316a454a346e4d657534784c3742654a766a624b422b35494a4259744d4f32532b354e652b31684d6646624c7833736e50565471743232363745462f4766657a784b5450564976374d59446f4f59566e64623279636f50676864506c4843677a4561516e72626a7a64306a6f4836412b716c2f6965356b73306c514b6e6568554e343754515a6e366b57637978533974744f565168374846506f593730754f4f4144734147474a55706163325636784d54694232697871342f34334442447841725979505062497565797659647166786364536c7042334e41694a784f6142714c7676433956667963643858413468624d46787a545663726d6e7a5068524755325644557248754d6d303035433634313237524e6c59385a36464e465350734774777047705155306d734a725059585a4632494e6e6c41505449365358364b573264636d3872633764315a4d2f6336624b6c45754d756f4e55767a7a3741536a38514462795541654e723177396e73786e364c704656583531664672422f4f5a73323674654e79464d552b57587945525a636e44562b7a59375654477267756d4659417133467330386676544f5052303972736d46525637444b797a52754957583655616d367a6c7a2f4150702b5459715633626956546f34394b55496336663749424b764d764c6e58533978664833764a486a57666e677a346c526e2b6c55745a6757364864666a494a7171714a31536b58746651314a502b71435a693977663045615a54414e64486a6f5574752f6c6447505a476458647654445a7671356930787267677a45384b57685471457052425258307a53456e4f6d51492b4d3348714f682f3479666a4a627768395166584b50616670506d79697950434c6558556f58645255784b3650496d727931464454396969656e6b686d676b6c5977335146395656504d72333771385a4739473571536335516e4d2b73636f4e4b5a584258774c705467577850546a527958684f6e34794f516e6b447565774d3069347a6f676e76614370396d4a647a3650755638715136325652554e6d6c72484f7a6d667946616d62624a5069513466686f5535497a6b55387972306a2f67426630436f61616f436f656649484e30357072633752534c4371577157785041496c66376572734a6a425656537866786b554456744f6c786d6951464862535770495839794c33524c37526d73707169435051527241314451706e567076557355585435727a4e54477361763633546e2f414738324d436b372f4a4773652b366335644369436c2b5655503272344c76655447562f7456494d34654b4a76785a357a5a31414f2f566c35696f355254515961672b724733722b6f4f454551746f79785574756757566e6142396333523934747779726c71683669686652536c44725135324e52572b386a2b592f7235323161376338633547766b7545377a4879734a6c625733666b576d314e7445656c646a73526e756f2b705652576a50304549597532706d587a5157706957392b2b625866436637636d7732722f384877764535736e766b57696e726f6249474c757a706d4b47354d627166737154566e69396e306174426a702f386d54546762766345344f534377726e4d636f47466f4d7a637433314e61522b6d7157615341306843722b4f644e7051673835322f774168587a376c44716d635a64515230712b734c6d726e2b52505532426645387132636c757932353239546f5a6a632b684657576a516439522f3353727935597339692f6173666b594964585277452f75686e7a4d5a2f47543142474938494569693962645047386a527152324f747847457843594d32574a78314650527176355974587943446d4e376e7034357a6c2f474d337844554b686e4f6d6175794d52486641766d50576939514a726466772f556648735336317a31554670313335737a3544565535736b7154596c4e54666b4551556f57527955703553616768754a66637069596e4569562b4b65714d7170482b6e2f71782f4361574c7078756b715464776a6e66687169677866354469372f6f46726473616d45426f5a7835474f74377a574d7a68634e7072333134774e4b507950384177776f7a4f3750714836463054366e694a6142627574347478664e7275465974304e4e736d586d686d72346e4c376f706c3651645a3170754e496e51314c327547394e534f7a6674534f616d49574469765457366157697a7258774f67703647686f2f2b55426237475a6a7271794566354562492f59346d7a576a4f6c4a7436464c6275422f5739756247336a6758333435576f394c6a3944705454613162633937714f33637a4470544d79477074646d736e6971485653736374636336516e534165785975736253394f5975504138677a7066346d55552b3957787131717053694a3876785133424c79646c736945746370314565654a684e3161424a7632456e37307a6853415261394a3272494a69754c52444d564e5a7236737a4f544967645434337856575456644c4f6a665a5734745439664c7a2f624744654e4364504336414d75397a2b78495536654b4b4433313634364f6c63466e62344a4f7937765a43706c34626c304755653446484f6f5366752b494a334f2f6a6b49654461585332714e497446637961347333505250557a51593155594a654f646638414f70556e324f754350467359412b7959317634444b4163426c4f6877443835344239756437395371457a6f76677a5774334f65504371526a74785968394c4b4353716b7472505a4f6b6c30484d6763657836765a39655a5039427a4c2f4a33316d7a7655587942666a2b43465a654179627a387649344a31304f71325a7156766f317247354c6a656550666b736c514b614b4b4a3038426c6d63346c7355766e52705669497a5062484644317931387a6862666a77677655462b6a50586c637858466d5a544d694c62644a6d47354445667374514a56364570774b6d4467746a53416d752f6e766431566963356a75476c2f6c6e6b4b66705a636c374f4c35646144753659374d7464677a2f414d614c596c5066386e775236795939435679353535324852556444703374647777743169496a7041704e312f774261754257766d51535a2f755a5853706a6b496c652f6d4e484332706d5a307177686e37514d347a72345941627154634879427878795350364548344f4931783857792b59664c36737033684868475543663571617a4d6d547a483443456e7a3756447052726c7a616a695451446c796e4763794a5034323974412b5271347a7a6442304e7864696e3573692b32336d706f526a6f4d6b363256356e546d3646705846636e56707135336d68326a4f792f6b6c616e3266577342684a644c37506c79314f3458746c324c386b584a63744e38307234336b566c314e2f526c4e57646f5a736a666a36533061354e6a5979677053525039634864543958345149565a39424d48524b6b7a715a31465271364f70315636574a484f4f50735877302f574366766241346b6569797871446178782f454267332f4262304d426566697170375536434b626e54746d69425a50566f536f70592f3771676c697a346d66444f46695248392f4561457076353756444d6c76424257484e6f70624362323370586e545255487230726c365563712b5331525251766637564f4874687a6c78346b6f3068542f414c556539774f41446c48644f52527569456d41346e4e2b75655a514f592f68494a744c484d4737343269796571345766494b7a3973446d4730334b464451443235454b326d39536e6c5143324c5648646f67464f584237594363354b2b54476e514b707935352f653133514163314a4e4b67676f5038416f42394774584a31566a533977717a546e703756434c57784e37396843477671625238693256663636756336706b317a48534145333656616639416a6c2b53346d59434d7a766b4f46546175546c736b61622b32733071656c566239705a645a783566743331543474365363767567352f7743786545592f30445265767657423351664f7443454e41613061475861626c724b316c744e53704b32653162766b4b5076754a374a695454787865796b4848304d7834563136556674756570616e7179327350584f3539664f7356574771384f39424f6b3269326a733341352f6d5471516e3466324864454746472f6c614c57646b7047595a6f65356a496c30304e362b37475251315466312f7a79704c626d57427a363668617a6f50495664564f7868674b663841776932786a4f513563796d4f6947786b63387172354c416f3779656e573255734b655774326777474277334d43695a677541542b775941617a43703753796e354b4e4b5644725735395768552f6e6162502f494d6d70367a70596d626f386b6a754a6a53423438466e324a43704d484b49416b6d4c42456748636f5a576e6a766773584641786d745832647a6f614f70614645496649627250354254573952307735654275344a4856336f4f55324931786f51357436657938524a50396e597a4c6b66444f3959386e757a33304e596d78712f624b7a327a662f474f4e524e5936687a6567386b6e526e38736e71702b7551783861397348323467716c45614353694d30455838624f55746d676e7066362f652b596d6770426d342f36435149696948515551554b45347170705a6e6b325245565241736d6c4147556f702b6a38315364617058786636334d44347764304f6b39495075574e6f3778694c387370323841572f647230796b476d4e45382f417a38354a45384a5061544f72593453506e444944496632767251316d567138516e37794f472f524f316365687154464e615271477063316e4e53644e335730527273463331324a3479314b6753516b7155446a4f63546e474f496b314e505970706765716161544e62505a4d56787a72563874587a5535614e477632796347777150632f6a454130425a70425366456e4a393434444f534a6c6a5a7758553149366a4b394873632f54577730556b6d705645577457527530432f6b71442f41464734524f6c78705566766b6e34376f4a3248634b73745778485061615a6b35393866793573626f75646e4c6e4b577a7a792f497756386c4c76657061675135474c512f774155635430446369364e41733846366e77393136375155424279674774706e304135566333767776572b55584c2b4d2b554c7134394b704b5773416f6734416930342b61454f6878736e7343443475587147642f45685376534f57436e4c6637766451566d655036615350663051417a59483744717765526f79345156616a6b744f58573869507638414d79614646714c755a7337346731446d6154316d35645333485977686244656b5576545339524542396c565178426166773069624d357231542f7762474e596467737a49575855546d436250342b6f6c7048715242764a6a436e6e734e6a6d417a375056546d4e377a546d6e6e76544b465470476456724c7375366d4c75636a6e4b464c304b67466c5458457778702b58324a44346e4a4545426d7a58487158684b584c43634541364e30337a6f6e59374b354f466f383170624f797558794e66376167333844762b42554a3631464141413754704a343967594832574c687a73633136464c72783579703944453238585a4558326f614a4b70304e527751655a4a396a4f4f51314e79677244576c5452755a56645154524b534d593241746d6a444e574d74624536755174525174364e54484c73685067714b6138456d70484a30546b663941674474534733754c646b476c55534c435051342b65574742763172722f414f5474646f797434796f38334f633871776e5a5251333243364d476d70616263765837657534534e54366b316c4a724d5a5349314d6b746f62304b6d5276643072557a2f774165307669792f6c7a382f504f68584236552f765541676c545a525a554f3945324f567166794b496b4c6e4a464e366a517a4f477934355864314b68593753565134614670306c67315a6774737a6d6c593478507039435a515179464f6c532b6f4e73377369636f516e4f5a3933586f3639555847715974446e646f536e3355657731666f4670514956456c6e41543249316e4b3758702f625236656e6f766e6b6d36367a70496f54546f67706b4171625a5a316965715831667a4b45776d45413438352b66304846722b356765394a2b4e57356e456e727157655a654c4d47666e4e6646627058356e6b4336737a57314761465370644e5a364131636177656779646f63357975526f4b593771304e7474535a6942353145386c447948523975533868646c36415a576679544e6f526530583150303439724d347a6f37354e6a716a5a6339434b535654743953446c665664377534502f484b5049625955365677565930396d71335271316c5251792b4a73446c7769636c4971752b535834645a632f65546d77344a782b6a57795953483749524f4a3454336874662f414e3472696e42376a6b70706835496a657a4f554d3233576f6453376b556d6738676c70314c4961314e53706f2f4e6d6877357242674f6d79656e6b4a66693156354c5a5a5a394b6b59326a47742b78304d6e6d4f4d55695748304b514e6b6c486974376243636369355434596642504372687a4e52386462526d4d437938546461664d7271746a4171346c66457464536567716d39302f4e48644f53664d626f4b6f685a586b304f4f313958666848365361516f6e3054506a4d3756322f4b52656667766d462f6a6273724f326372526543346c78573547352f42714673615a31362b7943796852786339534b6f59545a4e786158652f374b50704e49357a5253596959784932507874474736574372452f376b323035756a6a5439793263306d797031463162693376354830384f354f5779634c4f635735727061506861494e664d425262474f626f4a5670614d6c63462f657a417466336b667730435679375448745a594f35577855334257576a4b5361436f51594c4936456e58704b635947367a6c65783535454535566d53356b394439616a6a724f4a32582f784d6c4b6d4149613651444f696f686f66306e635871644170423469776e574172714a35706a624e626d33666c41584b786d2b6261763156592b723558713665356f7a3643547a6930666d704a39452b716e44433670306568637653796675476f3548536b5678484344577a6d5273346a6a796a737a2b4e583441347669677a2b616575326a49587466704a68386239754f4f55324c713352352b747233496e482b514650326d664a38663168436d42426d786741786c504e66573352696732783952664f5041384c4d5634333466646b5a6465622f41436e4d72427a6d46476a364b595a3437454b4c343139756f746353794f6d6d6c6e79476b7a554445704e5061566a645039526f7038776862525132795768466272492b7032566a704d6b4d59397977744c526462374131714b4963746a534d7664495a544b6d2f78544f4850363244584d794d4c5a6258707530696e566c464438456f4b7570746a34525544426e364d4f5a5956557157564a796146676c726a5879774336355377425967766676555976314a37566332594c4f6a6f35554f4a413357697a6d5a3038432f725a354d73416948733977712b303467556c4c6a4f42514c36364f63486d6635336f49442b593046534a566f74737444713471563074304545583045345076535a354d76554f5374484b67623052707151394e4273427649784868414574383866715a745235497a4c78636a65424c64464d6848527a366e4c4b68614d6c6d534b6f34324672526b544f44454375514a346d647a542b467369754832765737736d6432714b2b48547a67585977574d66715573756358426a79516e4a6631526e4c692b73483577624a6638415863366633734177722b616f6f586c506d61656e30786c6b6956704d306f4a5a6a783866586c72577647444775595a554c6e5a53624847644a6c5071746370334464795a6f526a543878704f6d34514e6b2b616964552b644e44626b513873647155533132352b65386c6f4661585a502b3669546f32514f50337241756769564e41514451383155625a3174347854556146456f305632626b674477484d7956617156686f45636250624643596b7232736c6d73536d61517a4c337274737434434362647972716b4e354d564e3636465174357168727a7a734b5867766178534e43676b78736f533237724a326735715866384174556a67556a2f576c6137666e49634e426443706c324d324a3647494a3831756a6d515a32544e43723430334451744b537264514d2f772b326433523446476b4466662f414e7a765036734c416a706b6755764d5856642f4835646c773958563141616d654b462f647571393578716f497551702b5146696151413866706741417235573834756244644357466c5834756e627975437832747858585a766a31576c4b595449656379733655565a4e2f7a4d6c537731314d6334674e64332b564c432f715a7a6d633951593878386a6f78563131614f707a5464586268464e6f6a32554f79565a7a4a564d796137704257736d63585063302f6355362b41414538426e396745694a6d63514b51753237522b623472676f356b76494462444f616c3655363275716f5a4c4d7546594d735a714650516334493438357a6c56773945365a4b4f774c427776556a47386d3863566865665752567279796c75782f4a62636130776c627a36344c625a58636d6f4d7367574b31475a714e42754677646a70644a32644d7a474a783444596630752f494c7a6a3053386b646a6558347562722b6e6e6c50316135456c4933526c6f5472744b31724c6b552f416f50643831556a754d3434696265496530512f304a726173576a68327169432f6b542b4876696671626b6166724c2b4d466d652b44545642722b59656e49386d4f6e734f6c6f31596c6e6b6548586358426e544b346b736f7a2b6c2b77644e396a6e4d2b6766684f61616b316e6263637235563653364c49334145382b524559327943484b724b7249654c76307675384848617248543978793567436c4b30704641702b5839456254364250736d51315456665266717330617a7557354d4e756e3146446e364d34386f7a475135627071796e6f4a6e4a4f70365031477249416b65537665344a6130624b61624e574c4a70477777446b4646696d4c4d61554a6376546e5a797635475279757a324a516a3577556b7a6d4e797934355172374844732b513135395350566c4570366e69336872753662714a3631655363314c6c444e4f6d542b50574c5a624b7674564f537562484e536b41526f6f757a6579444b453379716d6d746574702b732b7658694e6162756b30636c4770466f374a7a734e6d767877366d72562b33515866617a793370553853764e7638414a475842536b7a393568665a545639556a712b66542b44362b70456c505371316f75364476466d5970647a366f644e36497332684363317875375a566f767a69354e6b456a4e716e376e696446686d7a456348316f30696766366a682b4f66754a37446f7433706831362b53364d466578505a4c76356c65687a50314e544a547352354a7a2b3959314f72623479496b6262343167777a63326b6a504f534336644279712f7574444a6e2b4c2b6e69623538326273766d6638586e4d69766471325a55362b567a74696f37557a716f5742566b7873523139644650774766446f446f556e3370396e69307a62413431706f73444f736f7a306371544777394d36355469666e4f35396d36596a61746b596e704a41754d584c77567648345470595267444441656a70776e7541306a6132716859503046494947554c4f4a64634e6b36757a4563427968626f4f49535036747a4f6672336d5a7a423966392b344f464145676d36705335354e426f7a383973704963546d494b39575a594169477158374a54442b77376f44775a782b4e7a665941306645664c63617a356768386d6a57676c78586f653156446d30523941784b544c3544614b706d4b5773446a4c67793041596e30652b773075393149552f45796f6167356e4a7261326c514d715a30723532664b6453385a4b4a307973482f5a71453567382b4770744e4c534142704433653076664a37676b506775654c504e66443136545a654d64725172736c35387a4541476d786434312f4b79457673554f6f574c46676b714a6a4b7454422b443265774534376837482f774331514758622b586e6a4c53314d57786a66452f4a6b6d6c4a59326b6366564239444a6963746d6a333272576e48753532386d2f5a4f7a4a7039732f786c4d78586e2b30646950722f51656f756956695a576b79793636683446544b7a6a6d716c306469444e6f7559335055717736613558547531486b313837704a677053704c76384263586e696b7239476d67536f7966342f4e6773725a397050624d68564c79544b4d4d6a4b4236354d734f57565631777254324c715977734e307962506c4251366537387859755933466d6c666f324e564c716c69646a59475a6c6678785a38504f6c632f6c4361586658544630744366323231644c70647042374f704e33736d727a646e313469334d674e466a755a3357542f486f357a32565667744275727451476f615a62442b622f414e50736c5572397a4174597155615141433936464e375552364a306637386b4d4a6443507458643670575a6e644b545572616d437237744b2b736e48326b43703646536e376a424e45335a44376e3841766544694b576e4d31456f3038726f68715836616a436b3157536e61386270706d3945696b44346158454944796c662b7a364231776e507a68385945354c33316f4e524451534766396f6c31636b764a446b704a68485a714e636b3878675378725431712f7243676152516c507a382f77437945615a6e3639777457663061674e50655a4954575070353837786a4b6a346c4c795545345744315054584f336f79456e6f7444374c67553449743546363935507036727941314e666f61706442562f386259796c34515441486232545247745843476a50477877537430506c47513357394b5176727164614b576e79476e586b5871354e6f2b51493172483337612f7336457a4f782f6251735974435562344c38575a37696337615837616b645071446363466e526d623970644a6e7046593237526f31354436776e3564584a68352b523554354a72307a6f51795446353548734a387030394f7a594c2b4279705772744f7935634e6c627554664a504d713832703459414371583756724d6330384d437a4e48304a3962394b5a655233386567317442392b3371356c71504b387a783356424f646644745a446456446b6979556d6157664f587365524446384b5147675a53707a565a31764834735236385230482f466230426b39417654656645726e6333796a7972516f32664d72487554754e62746164396e65596d6472534f7036554d506a4e3071465a32663259665a4d667763476a33704450557676746b655176384175674b75394e6679722f4935586c4f5a6d4e385a30764a4f58614f3973654c75503631486b45454c5a5a5636434d7a6e59775a6d2b514d35336f41484461664f69436a2b62332b6a6f38394b3444547a375654344834746859415a4b6d73523472346a446c73747a6b756f69566d35772f77417737457334786e383474304d74447a34316f427733414b6c742b5833663146656130323842527671422b5976724a353134373437364f59506b586c2b4e346a3439584c6c3636585a3259697265646e6d78664e445131714d64332b6b592f745047526d68543766594b6630665139763841562f6456724f365a356830482f74792b7347746a656351655151656c766b306d4f7a782b4c445045695556666649536f56486c6d794b2b5a67527a7a763246704d2b744d4f4b2f69714763366b484731654f74574d596d7732523961667a4a386a394f2f7a4f3839394b7655487844567850422f4e50485043396a784465386f736c4330504b39724c6a6a30555a566b424c526f59704d6f3167515131364c6b6c6d6753534d76634955727052625470617475616f326d2f4c333147316444384d2f57634d7931746568354e6e5a50687668575175556e396e447a76517a385955342f7770656366377a303678735237666238455a734a33783948335a366366744b6a6d3536592f6a706f2b6a76706a34443454355246446c65522b542b756e7070524c7451353864756675772b49372b4c6f5a755271304464384361566146486b54776a4b63317056734b3936596b674e66643758726131706a73317259646c76563276497963445031626f6255386c386d385637657076555853717a35776e6f4c51304d484a6f6b5a35496d6548536a705a795145646344685348614554464f4850455a6d493851643962667958384739654c4d2f786162783272487876547a447a73615065326850504f335355736247337048414764302f774c7579587a6f45556958334161676d744e426a57744a724766784453627a334a386b3862384f332f41435878384c764c504948344e653367346a30363077504759374f6f30387172574c506e6e7a2f343334326368667777585441707654726e4a72627459786d6b5479344776506f426f657076354379483564333039395066447868756e56732b452b71652f646a627039536a5778635632677a4f6a71745779334466434c65732b656c6b33374d4a307248716876657461546a646151643951664c66574c30507377504830666a31344e36683565386a4b6d2b7a36592b54512f795869656d334579667548327434772f597959585965665943595356786f4158762f414f7379636a69735676783935742f6947782f696668652f5434336d4f6f386831736c685a505758346372644850524b2f617a7536687678587646592f575842744c6e4569756a6175764e3061526d547948715535326d4a746d4f4d42783673666d4a2b5058346761587031354236342b59506e3950384166324f654f364458784c305668597443546f324735556978617a484f6a78753661637257672f6a6668414a706f5239787a5853767154614b5635687a46394e662f6c442b46346e357a366c65412b6f6670617a7962306a7876506649582b43655a2b6e565a5356374f456365346d58656646707057646a4449766c574d664346634b52553559334c45366437657835694a69334d4e7173662f7743556a66697a78634756354236542b717563477a746869314e6d643476525650477a71364f363267684b2b3831467a4f48464a644d665476706e2b594f4449436b63484f665974547246717a363842335a384e38673856383238597766502f4458357576345035316b35336b75413742334e72526c306352754c5753597335347334575577632f546a57432b6b7236782f4c776d67416657446c6d4a7a746e686167694c765558306b703951394430484c795478716a314844472f6b4e4c30384468302b544e774e586f7a515761733875303965624b3930743573653051634235694b6a632b64334f6e4f4c34332f44363965734478362b762f41497a2b577638416232396476564430323945664a7462427974547a4b7a51693856774e6e533141315964464f65374637453674646678314d7554434f614178427a6c4f61733072415539507670556e5431715674636331767a332f4144502f4143743965613850302f384179423877386f46506a7a364e6c486a656e6f435374613354566e792f7a4a4b79567a6f6859644936544253705174353032485562482f48332b74744c5370586a53755945542f42543862372f414d6d664f316550575336554f4a6a6a4c3365707a6d704c56746c587a516c4f52534e6963324e4d70633335562f746f657857565150776d723630687871583256795063312b4866343965412b6d3370566a2b4c654b654b512b4575794b66653362626e6f6458554554732b664a7044326a4b32656f4e482b506a5348434d76646a7554796f3630307458356d706531725a3751757a31582f484846387838653867506438646e31736d664c316b32734353694f2f5368704f716268393433796f773275667a322f5255726c412f4e50585a4d53545362416f375774347a77486c50384179742f73302f6b7150713176656f48706a3452663539672b545735724c5a2b53655034355974656c70724277354f627173524f4a5070577572732f4741632f316a442f55744a7356336166744f6e74694c636f35472f6b4e2b4e6e35466669336f716636692b4e65532b495969394f6e4a7a4e354161525a456a57444f5369653263554b6c7051754a592b36716a70797a474131794238774650305576585537504d4f79332f79616e386c3950786238747649767877386b703766347436392b435636476364424b4a4f54352f774349547a3052362b656970335a57454f6557335a376b537061304a467573352f6b5467352f6261524f6e766a34423767486939327179312b58556d724e58316b7a3552756252554c364c4754736a62314d627062757355524c715068436445796c435534502b5a336c43662b514478754664683131326152716c3475324b65516d614275557172764758673337507a5470637572767874495a2b2f7744594276316c454269364478642f6b6e35306e38496655476e7a577a79616e4656722b53374e4e33674256522b51706879355049686e54464a6877796f704e613830717075547a552f64476978576c5a376d3869442b76537048766134362f6d47716e35592f33663841306f3964664450482f43664276517a663853767a63724f302f49504b3776495a707a6e504b69324a4b61495950486f38393169787878792f614255535473642f316a6e4a5073727030302f5a35704f5a7675794e5a50546e2b3452366f656c486c4c397763695879585255534144493132586e52526569597330645a527353744b5a5634624c4f7965397679634b4d4c41417664375230766f317441366d6668392f654d3942505462314133505662386845377664764d6e374c3652654f654a654d5755537838435a646e6b6d72706d31786e4876745848476c584a4f2f4a544c665851333455386e47626e31665a7254586254362b765855656d583853767a713944767a4f7975372f7052536d57696e4d766b4c7872796875426d65526c394142685a4b4d7a5064784c4239774e63482f585a3737497a392f414d3555384f7070583070786142766e6a6e6d7a634f4e4e484533494f6b6d4c6e3155642f52684f7979735a792f68416e566d386a6842713263544e4f594a39693176644e3850395a67527037575372323634537a50725378684e51656b526b3164436c6f2b36614a4a574d6450564852706461356b623363556c2f5769772b464f674b616b6449657a466f6f614a5064524b45665371463841486c58756355356331616a703076644c506e7137496b492b7249774a484f5274503541642b726671316a2b6950705236782b75486b45796b6a36562b6e2f6d6e6c615a5231654a35703978493136575849755778494c68304b4c5034377648416c7276596c504f4431674a414c56724e3756704857772f6e336668662b4b2f6e6e3930543873504c50554c3164387131342f48504c6436337a37314e387375695148546b745071712f4549624c6374624677686a33786a4a514d737330515754576d48334f527a38396655314b36476e5374612b565236377678632f417a384f5051334256342f36652b695869473755656f6b664b764d664f6f592f49664b4e48526c7a796a563262597464596a46533958302b794e685841447674634351552f436d67504f31645856764f366264427542342f3643666a6e6a574f30386e3067394d73336a34386b4f417a784f446c37463545586a66546f572f476a486d6f6c6d666f456e69446f6d4533664350665932623576367a6d2b703856706a49302f774479302f74466668722b557557777166547249394f2f5558334d306f2f4a2f474a69686f324b632b656a53316348794d5a6b316464676d6c4e67766f4565434e4238756a5944656a304e4e50326a56302f693356486d572f42333054732f44482b356a354c2b4e3232766d333450357a58566b34742b7a4772593070722f414165756a587a374a745037453865627a516a54384c616b2b304452475a6f36396b36563039327261645451693864716f394c57332b596e6f332b456e70486c626635445054346e36616566656235384e666b696f71664c315a7258512f6577376c596775666f33654a71586a582f4f31416436413070547a6e473962372b474e4b327262464f3155627a2b6e337242366165726670666b6570507048357a672b592b6d562b5a4a556e792b4d63666634325646554b4774315a356d4839557031315476707a72426e716a59615679752f536a534f563632726262617532777648776d6d753778776138702b4b6567334b314677544543514f57586f314a687a486258566f39705531537a39433161707a3936566339767a69772f36724d596e453977342f77446f4c39746e6a336d2b4e5a477944583851312f4c76466270526a746b304a76345479477255386977716635424968526f634833646e6a3968726d6361416e74636c6e4638364a36352f454e6f647364544a7852386f6c76536d754b5359365a6d616b654e32576e44334c4775676a695447774e71345247717169554b6b4f37517a324c7654396d63437247493452334459443865736e2f70576561707a4e4f6a79587937486d304e323941326d46796b3661345635796e4e6e55316b365a55724d52562b7047305450416150396936427065654d514f4e6e39397a386f764550526638634e50786a782f77416c38667339544e58544c774a2b4b7655414c73514c35425a5447504957476b334c2f774454326c4c326c507434367059726a4c346c4e36505a744f62587a505a366a774a376d7a56766b486264466a4a324d4a6c35304d657a345572636d7062467636727274426a57524c4c396337377a6c36536c546948316e48366e51516e51707a324e396e506653373442526d325331695341454e506d777750617a35484c752f374c466a305746307a6d396869367472774c5375373643652b4e2b4a6559612b632f657a2f412f4a2f4a3835724a513174474f537768494e5263617638415778632f506a6c616966384161515758524a4c6e476c72467a4758613532384c573268366d6879644356327a734643735a7865753562745673727141313479436d47717a394c6c6e565a394e4a7257302f6c4433414a547a7342513144795462707044714a61305430757259726d6559686659777a6450513772362f68345450394f61545145306d53653552416f3568543370683674502f414a4c702b54326a4d2f3841496e385366494e4d7737725a636e7248366444636e52664539334c493833796c4c666e2f414769503747625a67746b6c2f7742587370536654462f506a6e4c683975302f3876556a68485a7350514e2b4c5a496b332f575348396974477a6f5a566d504e6e736e624c3858504a66496a64544a61685138575866716a774c586b507970796c764d2f59416862796176536c764157522b655070524a2b516e34762b716e6965673167336a6868355a34354b444859784435626853466f4a6830644968346638616250635045476b57436e53353131414277776254537473314b7950494e2b4e6e354549394d764c4d3730313954742b61627876554f66782f58387a584e572f6a2b362b7a50485434373551334e636c376861786b6270724b78354d3236596d6b4a517a454764365636626f3356676441664f4b507837394163302f4f397631526c6f305766716d5477663037324f7030504d394673326f56474c5a312f6c6e57527a75793458505733722b7a736a6a2b30616d30335450356a472f556e6246663841554f545872682f643439616261394c772f7741476b385778664547754b2f72636463336b57395857784c4d7a50315049374153782b68385930537a48307669442f724a6e377a7378714e33525832656b546d5259666f6e2f41484f76376b766a77532f2f4144586568486d32776f5a2f6b31452b4778376d31503349326d46705a444e694d4d66672b50325630434e4a7659667459564e667a6847446c75676932686f54787449333539442f414f2f46366e2b6d486c6b73483556666a76354c36656e4e6e7564702b58364f49632b526f3968737a633756567a446d785a6c6974566162557a646e43524d334d30506c35376753523432396c69386673376268314679667a33395066566a3143394e7430456b6542702f59484838313857386a72386e4a6544704c68504f575749356733306a316365674a4b2f632f793565386361514e6871486e504f6c617462514f726e714c74314e38516a763866793136557567552b6c6232327a53637057645a52444e31312f303741565272466e7564786b677a6766377969515842343336394f4659695a6a494f656a436b6c3454447954354a6835567151326b357a4356775a7152464656483659516a632f7743387a6f2f4b763733743158584853726a68642f532f616b474878533577462f5033773447644f726c2f624e622b5051566f564f7a623968545074462f724a5a45356f476677676c377541436846436e44556373667a712f76492f68742b4833697568516e3151386439622f56696d30344d72305438433259396e514579615750657a7a44626c5779664e79315134712f384f63476a33687a2f414c43576e396b756a53396d316453633432316a76484c5030392f4e66642f76432b4b656f486b50715634706a2b6e6e675870467636475634523462342f587473745a7a51385830394b4372794c5437544e316c58782f565334663232514f7a65797a34492b442f41463054705237504e64764e6177356a65756634596561656e506c484966532f314938697138623272334f566c33313647536a78536975697a376a754b6650332b636e597a6354377a6b35474d38626f7a2b527075514d322b6e7152614f61754250384130672f4144314339542f4a44543574356e722b58654a51366c6579695443336c30563035574f6c4f63705557633875737a3536744c4c735349576b644d596670535a4e4136614f425732765773634b38773949583474366e6f332b4a653132507a587a667758774849333848493862772b614346356a54475761475a4d7a50497a6e6d546e7970324b4d38544f383531386d7070554d383341397a65505533616b634f59646e63545978747278356c6d567035326a6e756d377a4f71786471703665713864654b68522f492f614a4b312f484c5556424b4971515638587a544139676f357a54474f45675a32394c383167304d376e55534d726e34754a526f727130686978584e4368526c4877566956465164616642415646503256765775427441635a50377358393250772f774442374e503042394d626f664b66796b386f792b61376c734c736d5a3653597a78685a2f4c37396c6d6b7038506b56386361313555504a4f304f4d5031514d30342f4d5854375037504f727a322f79362f63654a2f314b2f4a2f7937796e7936765873386f386c3838386a71715a722b526554624135653373647261796968454c7457526644716e64734f754c6b67312b7a3248774d705267584848366355694b2f686b593658724d2b384d77385a2b4c614b50737a4f5642516e45746a7335354350593568516866787970746f6a7a75425278394e4c652f6f707a6a6f756f637837767a446a30313837304d344469386a6e706f7073616147564f6e6e574e4f484d4836626f7961577847596b682b6a59376f3955762f75734451616157476c773857723378414165652b70515973554f2f74787a655459624c382b7a543865724c51654f70337559796a6938354b624668646e396c5a5a4b4a6f6b5145796a6131346d6b412b7a614b526a6231794e34503747586a65426d66334862504c5047777454344c5836416570666c47726772546d614b383578335a38504d5a5a30305473666a6f6f4b6755566d5939396867426b626d64582f575074557a4f6a45543274315236422f583338592f546a7a48573544725a476c6c567175557a4332536a44467a6249697264544a50597a4973534646584d75713649475469745458614331364e6631336655506a7265305434696e36767851394f2f464f3838706c68587333386c7a61424e6578664a484b434b71746e576f646f356b773979364a33664e4e4b565152767372736255734472412f6d7437323175474271392f6453384d6a38482f746c6571636d6350517a4e4c314f394a2b2f50526f5664317a63464f43394a62455134716a6f49696e795671634470706c45346b71636876766d647037504d32313634373632486a337a4e6e51585777796d6b715439686a457864756f3643587034774f69737971396a4346337a6436745967504450354361625059545052744552306e69456f7661454831684e4c35345a6c396135447379494471374c5a53714d72416c6156532f6a59774763364a45787a6c30636541714433366a4539576f3745746671303253456e715879566154473035794a6d2f49492f766954373849756f6c36685945516d43525431507a436c51352b3738775179735463314a2b546a4c723152395a6c3649433665684a4f4673745254562f424a6f4c59784b6176684650424d534c374a4877424c3241754a6d73646d4f49394348396b7a78586638414c6644667961394b734f426d396e342b6c36632b71394e7a344854774e2f3841483932664e6268636f5859726b646c755851766a4f2f44597a32483961466267446f3138667455784d365670383448724b39562f54547866316c79325a647451486f4d696f46317174555046395862574d3036776a346b4e794a2b4f73484f796c54793073446e57614e7a684e623269565042544e596a784776583438666933682b4e2b722f70586970386f33504b4b76482f4a45616d7834316f6156766c554f5634716a4e7964366b3355614a5638793744317443456f6a61457a574a7971506d2b465450754b7466556d61322b455476316d2f462f4c336657767a664d3064695877786e6b57376d6158687562487430797763793050572f645470775462695752754773616e6762752f51585653482b414677464446645359702b4b5273563659656a2f70443663775a474c6a573639586b562b6f335333594e6a596235504634386f454c6a6e3173396c38376c774f4a4b6357565969536e4c2f774448676a364861544e334b58766676484968583434512b54666e522b5a767233762b474b70774439484b35306e354a65556a62747a43385564647034654a424d3669482b4e3535414b564e342f6e744a7a2f414a6f2b30476f77446f692b4e4c5430347477334478646558573631756e354470364e4d566b742f6c4f725a2f48547569552f4f7173333675487a34737048783046327a57496e696d592f732b77424435307363675053454672334c707166326e6b6b624b556a5141483130384e5644704a58722b6f67366c7253746475665031507466374f504e516f2b3937674e77446448622b322b4d58483339752b7432764f54393159636a49523570506c4d61424a49734961456773766d4a686d436a4c32664d495732573842316d2f736a2b6d312f71642f6372394a716c516b6c50706634353576366d334b516d375a6d2f55654536637566555459676169666f2b52524b6174416e537879654a4832667341486e3970764e665a372f6d3444337365702f58612f703535356a6c31315a616e69506c766a3264584a5935455038414c733856592b5849612b624b597a48645a644d7a6971754d4f6e33675167757967713348355663357062772f51667a49634830397838727a58796d505371626f56543838684b724768736a5a32684d74665658754c5164514a4f495658526c7a72454232647161476c38715159692f32346e4d64654139575039696e316838473948665354795851387638414b4d7a78326e79507a474447774d4b57445231664b2f4d5049553631376c5a464334474e576e4c6270565a636367652b6c507a2b506131436b724768303775443275733274694b377836536e2b727635445038414838377946455867386d57436a61586a6365385647746645773864303943732b62444d7946732f336d677346712f626b3146386c36432b77584674706e486634434a616635795a396e6a493775593757587273766e384f6f6d7a2f47724669506e4f6a6c64325963432f517461784e47572b7a546e59564b5a367077583949302b78726b72645075754f4243394c3143324e46625836333549654454656536417835692f455a4838306a43356e5955624d544d7a342b4e7630436876684a487838636b4b38315032452f507969645537654750643876304842663841764d50387939612f785064366765596541562b4a61666f39366853544b386c79664966482f49702f4a2f6d582b3533616d486d75572b664a3733556a706d4868556f3436563735676d7039396c5056374e4d563149694c64616a6a722b485839333338305077793949382f302b394b392f7742507266544b50794139504f38623838384e74725a6e76326451745a4f6a6c6273395841314d747a6d334331536e4a53734b5449306978726e753639543266523162357475794f6d3370372f38414b6166585a5679395431452f472f3071387079476e5254743650683233722b473741533645433675637976354369706443315a5332417454506d494f35503241454a474b476a442f41415649345265616a645031532f38416c505870566c2b41794636476568766e573336713761686d2f6671532f487776462f4850493331776d6d35576c505064547035366c3863514f435351412b34333931724a66515a6a583247307a693971375a2f43504d4e2b55503539666b582b566e6d4e6e6c667258366a2b512b6354374f696f387278704c50346678484978354358314f6467655079796a49793449364933483970776d624849665a3877556b352f6654537070526974646f3034314e7664633565646d30636f7a62506e574576457763747350505a4450626c4e31492f6350312b70456d5647774a674d4d337269476e357a4b7534696d7353744379327173304d342b6f67532b597446534d3039577850654d536c6d6771526567454f6f496648387158645a597478542f41434e4952434d2b526f6b5a4a504b532f77427a703577716e316434365972556d797836307674744d5762436c753068617472564f636f506343576a77454a6d4d78786a75416c53746e4c64594f5937546a5852306e456d612b7a344a47697067756a76746b45697570626d324d5633717659774b4c42454f4552754274743057375559423756334e58644a6c336b486b6e6b323730614766414f72745830736255576f344c50334b3465437537356c6b7833764b5931486554524e30344759786a48434b34414a435a58756e69534136585a6e6641794254655257306764576c504c45532b72645251376e3276384166376b65346c653854424a6d337446525063474e515a4d7a39384e434b695a3746697466386c7a755479646279727142465075423374577351346a7650384570554367634a54422f5532786d63644236437653722b315a366d655965696e6858354733322b4f65647439577444452f6b765444557a582b502b58346e7039355671436e7872794354794453577748526e646478485a56763655457839706d4f68774741636c7465735874536558623858356836747678362f467a3864767855394332656e754e364677654e6132783466707765652b6637325a6e624c504a2f4a50494f35394e394f72536e5063633456465a7255496e5a7963564a433461417a66634939344c366c3953323764754773336b506b33716e36476265516e306a38613946664c66476d37477456712b6e4758355a697a335653575555552b7a786e4f414f556c6f4b4b69465047745538694f6c6f306345356c796476455674484e6161353778735a3654666b4a36612b72332f335462586a2b743663567a567344585a62396b315a576a347367714a38796866436551706d5a596d675356545a45345a6c6e77584f645244796c71577277727a5a476e5038416349394d765158386f5052377a7a30313863383338507538337a70374b4f5946743349504a4b4e66782b4b652b5a36556976706b4c5364504c5168782b35454c6761424f6348777530307258706574375635522f502b7a4e667a5430333951634c5838624c5738653830394f664f55374f4f3664526f356e626e6a656b79324c3763726834566931304a4c76666c6e396a564838424e413345763841723249694a724f376a577733373965507a583962507a78563434763134395839692f796a77584972484a724e6b45707a394353654d4c63312b646c7970304e437958362f46706d364c66335a4d613455657775303455307136585972694c445272782f79727a58783375737a4833362f2b7a652b416873716c582f4b7a546f734451546170704d43714d4766596d567a6a775966325769485566703757586d496e714a483458353971656d6e714e343336732b50555655375068666c4d586b41774458785161664d6e63337164444c73746354575a7374576252704c597a39482b2f6337323570712b763841713031693164732f455061762b4e5035622b6d6635702b6c55336d486971733138454f5a6d7638414e7648374c6477395478337947724e324e3761583552714d4a5052783365525a7654476c58564853442f6352316773307538752b6e6252744554314769503841636c7938763068394735746e786e5044493868383538712f6870596b7152454f665a4350753361394853386d30414e61353747553946557a4a7068645930776c596e33665732304a6d397550776a685375587932312f38414c2b5565515534694d47797636635645766153347475686d36314774706469316835434b714c4a324c507343706d307a43423942734c686e363432386178496a6542564c71372b6b7a5a33373676473177614f687133596c376775422b666e586554592b506a676a594a56654f647a716b45326e71716672666f2f6e5753414664686275486f654850386478712f48362b77584e376d69455861677a56616939724149766a644a79796c63393052574b592f384153445879616b654f59372f6438755673376f3364412b3950765566792f77415539567176462f464e6135536a6d3066496a686f6466466c7a7a354f6a524868446c36456c58616c43657336704a6e553434306e734b436331726a2f7a6d59693164303952747436552b75507070367a375737737a54753857387731304b78664b4d6650334d742b787465535a567430324c35786b396e785a7a30376b6b353148576b2f356c475048476453494a30315a32704e5932394237476677472f49492f58663074326f74656b763841793330796c3852386438713173335a7a617161736e537a57636a3161367038644b646e536f6a686a2b527157484d53394c7135532b735238447a64576d3230592b496268593371623456354e5874356e67766b474236692b592b47357a364e5041384b38747774505a77594b454a4d59626e52784d46444453535354796e3954697050747061314c41427563784d635a356179504e5038416d5a2f386f633150462b362f69583433656a4f764275364f68743555587133352f6c39726e3855305a4b572b4f336356347a4a4b54717461617879614145333667546e59306d65347855796e74307659346e6a65333044662b30562b5975352b553369503550654965726e6e39487166363464387a447976465276486c6f7666365862574a724e7268384b386576464d4b717536685373374879583353326d796873744d616b7a43396f306f704f6e4e61376166714c6839665053724538386730794c4f7a3731306172334931344d674c364d576750765342784f584135507a564d327331627a715556467751557134646b6f6b4b6c5630375448434f346172782b486f4679706b656c6b5575586d354674324435765963736e6a57706d39756649764631637363337638414558543066796e463138626c504d715a335445346c4a547a544d2b4d697a2f523730302f6d66557a43784b4e5363636655706c732b544a6c302f354a424b626f4e6c553575336c72717153706a726b714d473076542f4a634a497543633349726163524d6a734c36696561666a542b4f2f77434b6e72742b524872313442347435503663593370354177636279425654656555366650755a3367666a486a574f716462714e7a2b656f536633444757784d435a6e6c776c534e732f726e694c33314b3070666d33447a396668562f65503952664572472b4f666c4c6f2b512b702f706734573675567579756d67386e394e49756b366d584970525a6e6a4e715a4373743050436f714a50363548795347687930396d2f727231505a717a4f61637476384179486472304c2f4a37305539655a596150545831466d387663754c566d3173625862576978444f61437747634a545a5174784b7952537961325148782f4e38744b554f59503169356255314b634a7274396649624f6638417a57703870455836564f6a6a316f6244724a54634f564b536e5a7650755a797532496f34327a6f4e63583665536661315a685433674b36304a382f656551712f314a39462f4d2f4b344c59673869305046777a614776356f54736d66307373543467797a377871614a443867314e4a6e7867594742712f592f7744305036747672346e52432f54543067384a3842794471302f554459616675347875767161613338314b71305330746d4472434131783848355061483650322b3879357a33462f5532744d38647672376a6e462b62483578654f346a62765362306b736a332f414371706566326d374c6c64552f4a7571393073307444466c30785363724864506e5236662f7549766152632f7266533070375675794b483956386a303138522f4272314279507959307341764c505848782f4d38577a76334e63576a4a35466f6462646a624e4f664b5037316e42744375734f68372b4b5848375441566459503957706d64577330343752567638415a353944664976516a2f3532504561764d57485475566549624d72664842377933593847386b6e6c4c436f4663384d744848557231462b304b554644396d6c7954596e6768537533744e34314e7334774f722f6d2f774345766e486d452f6d766b546679453869394f467757705a345a344745536c6f696e6c324e626331474a644c48496a4653447478777172635644792b5a48374250732b663841726e6a56694e736537336566394275392f627a2f4142346f7a4e447a582f796e797679507944786157504b38573848326e3072565a565a67782b514b314e3744356e6948454d6556576677567a4d4c73595441526e3736434d3874652f674b4b38752f742f7744682f6d6e3545624f5036375a5770357a6b4f627158647a3761617378486d766a7267306e446f5a75336d436f783241733050645766376c6f46326e2b314750782f593072787254464d3135523055394e76784e394b507839385175385838576b6b507839384e77573446564237714970754375754c724c74776858514b696f7a5654746230674d5a30544837337a3963474e3732764f62534f612f344b6f3867385039535057333077776a6c3166487649664c2f50664f737a792b706a6466642b66583871713862697a3354573570646e574f66486c7a79396d6155344148734d6c7042446a3231635446627838503841774e706650667a462f4848306e3859302f4974337a35506b3638644d7a5a2f486643362f2f4d58323731756d4d2b5a686e61446b5359756f33576c7a352f32576d457673705379674a55704c395a5270336d635258694f622f50793038312f4a7230386c39577643736647782f4d6e2b555730626e676475726f5a764d4350785a756c5574586b464f4242586f6a3472583466735a63314f6b754f5a51584a34417a6e425a54536e6f3933464c625a6b61376a36312b7457616a56302f4e665154773331517950482b6676516a384e38317479504a6c4d35486a365778626f7a61466861476c734b78786e6a6c73516f4c4a71594457634f7049705076764661666a326935472f6c682b50476a6757656e6e672f6a5768345835467a506d387454347071346b666a586b73326f78575856737138756e685969652b7268564f54573539316b31375a474e6e7559424755396664337a6d59335a4645377672552f564c4c44756f6c6b576839793239382b6850563355624c6e75562b7034356e4a2b694a2f783431636430544674387a5a466531484f6b4e713169504f525150716a2b62486f682b4b587168344c4436685a506c487158724a587638416d4e6552346c544271364f4c3543686a472b444b32653261694a6b79383149364658394c7448592b754935415a3841796e65756c665572626247334138332f6c336d4f6e366765592b59655a6556366c7578752b63487165562b52615457313374314865535075314b3537484d64783743463133745777754749636a5358513472327550747245524749376874422f62322f4f5431612f74362b714f35366d2b686e5048644376793341507733657a2f4144444a6c31735461385731746e4e386b4e4f684e6c5652614d4f777253385953306e51615354447675467653577375507a317447757458625965332f774474722f337a6652723836664a332b6a2f71506d7a2b68333544304b3637782f78666e6b4e486b50676e715736535074564850547257766a6b666c2b53796a4c525133447653366e3658764c4c30744b6b6d4c7a764c312f5a4c614d6271383166366576456431436f36336c637076564e772b66507968354c6735326c464c2f6c583746324159734c35726c744e674362766a4d75735158734d4d51377434786654506e454a366f3566354a6c6361316e55413957396c58377049436f596f6c784358756437784b66355a7667392f4574444d49374b317a4a36706a464956625278775654774c62704d3473556354582f6c37724f6639524165317638416c39622f414666463771506a4242744672476f3667477a47685653317a4f5833344f787a676c7072757654596179587a534f7050566a77444d50306b2f6278516d594f4a446f57756154695557534a50694f38596c78494e30733942555843556a756777522f58373448654a3973774b4d5033307755664f426337415331644574395573346f6558316c2f4969544e5371616968674a376c4237552f704979387051746243583850745071545750783941562b496331386b366b33665a55424332766772624d6e6f646f36316f5273684a343576474c685a52376945532b7950374d50684550367a37666c674351516c6a315a373030755a665a6f547448676a4f33714764624858643336692f6a2b515533704c6e65442b756d6e67454c484438334e426e387559716a6c50616147386746783943514676704630307632754e4a4b3363373169786c5a3134434356694a7139366848342b686e2b3039594256444839577861656a4c544f324e787442302b594e775552733656425630536a396471716b7549756978717662385174344a66474864416f556351534638302f46393644774e616c7366707354396f71434b6f4a36464f6f374b55724f45332f4a724f483973766c61397255426d704c515837436c62377577324e6f5779716376646e546b74717539626d304a496464516974354e353876744e4537466334422b2b554536706a56796d57596965316c533948336370735a2f3236766d6f6370793245546c584a6f59536b6641596b2f372f754941392f4767445258656e42524c4d754e4e6b51554d4e486541644768616c62755054516e7337516c574e796144353032495a3850766358362b4532394232644365544863552b65326f50654b30352f332b3033724b48765769395a4b6e3972416d6e732f527158385450386d67496a372b6747756e35597766793334332b766b69616c3539782b6b33714353364b596333686e567a7832796a76536e3169597168615679796b616e6649487363667941714d77654561664339664463503561506a47367365765247356a4966744937666e6f65764b6d3632364378562b4d6e4b4b5531366c39704574696b63486e586776374d597a5466744d3375366e634c446b485a71497730337942516c36614a615a732f6c4b386854685a6446556d7135664f753247584c6e48685436584a325537446b47342f687a312f77425a6a5a727848793650734e6264696d434d575459735961345a306b6970742f4d6774686e38676f734452576d555271304a314e636a6b664d3576377270744233506d594856763042382f77427664436678476e794f6f387a4e557176374b6e6245447930592b31486d35685462365547372f4a6553766b557a6b464b56676676345246587535373072586a5045627a597353636e4969324653366e77513641354c42784d2f3230394f4d4b4b777647717169694c5749624a37464c5943714b5570735372334e53484144473264324a6e6f4a55375441482b344a48364f5257766a4f4f4276366c7a716e306c56426241586a65725a3131364b686f6f4e7633415554615a2f5a39656d5a6b675641686d776e523039564f4e6f4c5a3475754a4357667870316176477738766e57626e30554948734f68566e707358386a4141416a4e596372624a4755774259657a356769526b756143546654464c6d3152767a3869767262613565555552655266796d665051757a516f496c304e4d756e38724c457245677654384b67724c4e7a746679746b2b62676f445632396473383330734f643676612b334e46687475642f6a5670542f56583864464c7555724e7561743077443169464a6d596d4a34774f6a6670333664654a656a4f4e42366d656f5856655265645a6758746e77704d374f307332536c76795a6e4f6f59416878316e52543758395459516d43666d4143686e46794d706d62544d52504b44506d5035432b546c796d374b2b566d51762b506f766f6a745278324d746574625856532b4a2b5077714b4f73786d425133716b304b436d6858753474522f43696b643838522b384d3952394f694e333672626b35656679653577554c76304f5a7261326a532f72725a4930746e7158557a373337393539636277576e6b36357a542f536165456953326572316d5969697457634276706870623937534c4c6c7067726d734c50306555396f3057495456786d68485155533438376c6641365a2f41507a3835574b7a4d5a4773586c3335433779644e702b50336679617635516f3536376b485934304b696448505a6a5a336a79612b6a4f7362434e356e385051452b634662584f41443169735230675664523678624a363137725337797a74584e2f38416c6270366b5156535a3475596368536534796c582f493154734a3943566a38763673705a2b68483973526a474f4150662f4f4b753136573559303562304e52715174624e566f774c736155376474557855706f6273724455686c34516d6a2f323846786830756a6f6849486558656234623565394e7236432b2b4279732b725470686d71484e59553146716e506d36363644552b3132566b5a4145786d35546c4a3441714d4b3538672f494b624b7067563131756d2b6a2b526641705253546a597239574c6e73707057376979656a514b4543437a6a76686e63614434617638546d4b5450534d514d4a6655342f4975614d7571724b304a4750566b3875466549785362426f494d2f7743536d797751712b4b656a4a34625975643648556b6255647053385670695936774c52796649623573734d43797176714d30496f48516f35524e51475733495966467430473436772b4f655852596a674e68534d784764447156396f417a6752727958796e41552f38416c316a436d52536930426e4e494a48486b304e44556d6169303233393676656f586b2b507a4651564241696c4d2f516b414f4d6175596a4d346a7641696e66377a37656e64715535706b684c7465485330547372475a475a7036453363316d7054307131766771536c517a69304a3042784e4866754775684d4170676557364564385049716c3548554d48527062347a324b6c6d686d4f53354d4843594f6c384f6c476e506a47476436704f4533372f41414541337452726e44596c767231347036684a763858383764797a76326d527a4f7a616c52757a3965707a75394f78624749636c5a52756c5778414c2b62396d77322f55724968586e736d4a7a575156385a3957664d7652572b56686161664a2f44767477523065514930614c463535506c642b374e4362534a48427a614e4a677a713552557362542f7a6e6e5438416646616178627032684f504f66527a30792f4c6a78466e6b7667463262347a36724c5a613651636a694a38445976444c736c2f6535694a58774c6c756335624b675743666934343244333742755564597462546e48776a6e5835563468752b6c766b422b476564594c5a4b5a4c5764314b5965333549366d665a4d7454616c4e796f4f76304d653665464b54364c666c6136697957637a64373642317a466f7a484157586c36315879636b6575756a523571637948716f666b503331394c4a6c3571564e7433524c3569354f4c6b762b5a3735336f6a4d4c7156736c613130413147302b786e75745a616747337a473167704c4c464f6f59616c7a476a6d446a39476f6e584a6e6b377a2f4141644f305a364a787366516b763643414f304a687462466f5055346e7353574f7867307979335466496d6150794854726f6c6f597a5175505078656974592f522f615858443837687041415932396b67722b4852317256566d336d664c3269747446585a4b746565687565696d3246785a6a4a4c747a3450736535702f5973377a76306541564d59616c666c46363434766a2b4950686e6a666c6c2f77443571376c586a766b714f61754a786d4f6f656153644c4d716d6f6a4e4b5644584778713256496e424277644231774d3537466136644e30356d4f5563722f56362b4b2b2b66584878747264633545585a7538636b315833742b4c4f6a4343743654647a6a696e63706e4c4a313934346c652b774f2f4746346830556e753734484e6a7a6e61314d7935714b4234705932483266464e54527a6f6a303953364e4b79305a6f48534c5375694637346e47685655335a33724d654637505a7658623952726e354a355061333570704a2b34625a495535673236564c6e3662364b4c74546b556c457a43427242356f4d59756f32705076364d33664c30442b7165677272736a353962486e6255794b493363656e39564e35426d32516e6a364663383867614c346b6a50384159396c686f6130334b6e42767763366f774150364148344e77716468383273733049705a34463657783655564e75426f4f58626e6550357562705076687a2f4c44574e5368646f5263446b6f567258654457556d487a67486b61764359724d6669485150556f694879444d4a6b76632f552b654d6d363161546e355a6f335536537549736e583854475763375573327a66414b56567044702f586b424d345a303654387873586d377774677834575469357265446e3175707062496d646e49716968304f665671377a6863646c3163342f7743724f6b70302b315376724d647857516c6739757a4355464f3747386754443775566466565171736c303637366b794555766253466961506757776e726142706452307a4a636867386d624e6f4d762f7a3579775130686d6651555362776e645575475631676644385476672b6a47776b7546682b366e357a7057487a664542624f5432685436693043626c53526650325365376b63456c45795573526e72357a2f414347684b6f61672f614f38436459453469355a3750364158646368305773714a4f6e374563515a737564332b51657469624b7532354d4b576447373930563666424e663055714677646331335146503942484338707273396b3350622f384154637855354c616f4a556f4239444647636367667359584a48322f41465051456a51354c654837306d6f4738433332437a7647316437637a59547a7238367673644779522f5176747a574350324c4c4a7845674e746a676449626c65796272652f4573425758775974487432573864455738625331316377667945386c4d6961596b4a637566325a712b2f567043634f45504443775767316653724d674f5a3361724670476932654c756e5a6f7330465255777a6857306f3030306e44497241456269584b7866364d6d6c53592b77414a5273515a67317056426d747a69304738306245646f7579754e5658714231427173546f4f2b46797a585953306c6349494a5956304b705770704159716e63444f4c527273576d373632566c67686b726a57335255746e376e72453647364e4a70456c7a6f544b5876615a552f592f6a5139673965484b5a6763774a6a325355504f7736432b5662542b357a51584478543372584554655a64727937596b463539484764696549644e33755331366c5053384c4977754e4e56637338376d77326361336b4a783952517874535262444f47647a342b6a6c74373977674872676e3448544270776743784947452f69304c4b6161625179704b4e414a44366a72376c5230745936674b5673437a3478644762714b476c776943743341354b58512b502b676b5a486e544b346a764751757a416431656f624773766a4d3355474a47446d454154685647354139714c324b48326749714a5241414c4571744332694b684468614e6f41527a66656b64396b53376e667a46664b2f696a5a32676b38556b5038416e3466707a6c30765942474477436466396f4b792b4f4c34374f614442577969757756712b46414b443569415673684a625136307664503334774e5963396a51422b634a4f6c52324e4e4d7665456275486d66704e494255494678564c6d676a33436156534837526141383676392f57482f67684458315078717a32686253746c4b53644a7078776c2b2b614c6e56537845616c3745744e4c474c475846514e715655386d443270415665346d6744344d644f59717336644576765461626f712b323661313538586a612b70722f5848374a547443506c446b71713473584a4e46372f686e534451556b464751386d5a472f497a3230465a595534646e4f6165716543684e466631416e594a386c6f614f624d616e76384139435a3967324159542f4e513842597a324e6468412b6d356c4674557a3067356368527275327a5a796d656c64444f736d684a507772347451456837744c686945306f42374179644145495539766a677a6b6a5171564d7963793554633647506c343145756e6956423869307079526c703461515035706739332b72356a41687a336c4b4475564b6c6451356b68315a45785a465041722f414f7a5639784f645968656a63743042476b41465033447037524e5177336c4e2f514f387a6e4c6a6d4461714373354436364766703351575544586c69796b46735643746b537946507a64506c427463546a7049566a384b6636425965544e41614c483539717a57717547686c484c4b4a72567a664c7850386c38786f6463317937474549504a50734e676c3777577174774c387147644d74453971364f30386e30335758564d532b526f646e36374a6f62536b436e3939444931385554676d4e535742395278663047636876645446323553314e48516f4f6d66353154614673613647434e464f625a374f614654566c4c7a39455947314c766b615a4b56326477437244636474716e72696874304f526d575935495036686b4d302b673855716b6f542f4a45377259546e6d2b4e4a6b744a726e4b5a78645749514c53686d472b5235465575566d54452f5152505656597041785774452b2f5a6c716c625243516a4b387957304866764e6d5553704a79396a51624e70315550356e764678386e424a722f6b4e4b2b34563476626f3250747a38754f4f6a3674587a6535497437332f41424f5a71584c2b33536f68413950715a6763354d70717a6d7a43737a6454486c4776694839667a5a6b6a6e6d51354a466f61533477574e4852416a4a33577a674d714457594131362f61724273456b376a55446d2f713170356c476b724f5978636745766a4e4a56466b5a62684131596a58375435535878716d534b4365457a7a7256643763694e48737a5a55526b694255423672564d3631774a536d73717232546968654f767169357954356e663567513941694147336d755938354b506b737237796850516b7a452f573538596d385a6f336c6d534d5748306676566577536376336a787863554d2f3167497734362f334f34387a2f7743747331387568556347665235466a357276656e4830333973377670543156423250346c68456d354e4854567853754c6d6d353879465475567a6f396e7a767a346a7a6a366c4371454f347a4465797154553049364d32673872617971747661385869653142736e636a6c6c314f664c74636f36544b77722b79566265544c644766652b497847424c624334636375355470556f356b69304d3637364d6a35372f67304a313352624472397161536469714963317a2f414e41636a3132642f77432b5066624a46496763673872526f307a317a346e4c55756b466c64464568724e617454516a336465664872497863746c524c4f58676d693565784f30366247704e43416c55616d704446306455504a67776e7836466971346271524a2b5850582b6a7948354d46487669582f482b4d6a637969427865797049444c4a52383538434f376c774a703477336a6448516a302f6a557a6d6e704f324d2f5458354a565044713173536d4c61686b61732b72795479337875595030457165507634326f55716f4d36616e63444f4b576e2f505849783543476b314d317a727069506f5039394a545a352f7a6f704156324c2b6a342b31627062477954667851636e34697671614c496e73562b6639786548686e6b2f6b66695a4e6c4b4c7353394379616a796872736133763870347162717468682f7741587435716b7735664d467a4a594a6570613647737a414b485356695371437a6450317262354e7634754e6d6171596e545153614650644f6d585232485a4f6274532f4e586e754d5a3279755a5a433452533537756453453365666135396f2f36694b5245524f4261336f442b50766d6e72767073386a7a35616333786e6235515236656a62556e782f37484e78326c6d5a6a2b5077324a5a6878756a6c616f6635446c48583031392b41445a78515676654b634a366a73703662654a656850346d346e3038694c4938713874714533563671394c6b3132705470332f4c544e6e54785550522f4648394a7a6c5363346c52526d326b4641437934336d6d62366b2b49316a39576679383951504c62697a356e58346668354f30484c746731696a304258627966516d624a324a667468537050302b3935554662756d6c7039574941776776585472483851316b30764c4e2b6c5137766b666b3237552b79334f634e684f7256656f6c304d5a4d7a736632484a483430795765384571685353543678626e4d7357316435694a6d49724f5259486a766c6f355758666e7062754a342f49537479576c6e5453366a2b374d362b5a4261644f644f7a35452f61393872574530715657556c386b3762506164654d38524f452b565a633758305544384c613564486b50656665707a3033452f6a7a54586c79523049596f62627074486f4e734f5a4d383375435a4471364a30414f31742f394f4b61436d6c703669725a74364f724f576435647a4a72426c76524530464f2b33334e39334f323149442f72756162413936354341432b4333485252664577563571416a6861344a35485a635a6655576b3876566b6e3042635a6642734f7134564c4f4f7a364630706a63723241716567493958722f7a616e44495a30364433364e6e4b6f79796d4e32414a4c47566f4353523144593242434d7770477868306d646c6b2f7742594f436e336777355848436170492b7254584c6e5a55476e5142785139726b7a6c6e7658676d2b505546566a476a56555147776d794a6d3936695633696e4f6e4372645852756268334a7a3842575673766d3530535a70735656564e454d63394d4e4f707935594d57765054482b7079564d41772f7633547a6c4a7833395770326f46624f726574614759325646785338356444455a6b4d5a30354c774b37506e476a51725952304e585950764e6a652f4e563736414d535537764474464f7536514f6f37755a724a552f4c6b715932786e6339732f477172577a6f7831424767566a4450643971686d663841417676755638594754514d424269726374765041456e66304536466c51533253383461724d3736366c4d4c714c4531566a556c52644778665578736651674f324830413737584c4937366636624b2b417a6d4e52356949545251586b4c477a3353307861692b587835425570675170386f43714f665535442f463852784a4c375370504a6a4a44675437342f6c7378362b7672714a79686343423656466d474f554e383435323235557971666439754e736f55385173776d7a774f67615451326234666d304574644f734b4a7a4334767a787a747a36343941654957616a3041434b5337672f4769704c7356585a367930477a547043563343706e6a5370594e55447a2b49506f55487a683535446d6f6c7a397a434b59315339376d797871614d55727154546c537369726579796c363070557463656c513251514d51616f617a5535524b42304776766b3165486f313138655668766458395854426775376a5652384358744e434f386a713930424c79785a38765764495a3832667444544b58346e3656693165374d43753944346b6c4a546d6f6574446956424e727a46377a706f62394d524b736d4d5963656a54436b654d656b584751774852415a54634d437633633242502f45665532704f622f482b5453556147596277794b79717476763636506946542f49584c2f6e34357a317a754c7677634542392f79726247616a6f4f6c716668477a6e672f71353544365062575a352f36656173486b58706a7436504e432f787657303965682b45372b4a4c526650703638737233555663316f525a39316774686d59624f642b6570787a70704e5974474a37516c2f356959586f723669656b35666b4c3463764d3849386f7a6439475a3572446e55785979764b645453316f5a39716a54707a76636562714b326f532b7a63556f4a354d3478593048396e63694e4f625674736e694f587564736f6a41766272544a686c6f586f73747366316131785566486e544f513152386f6c314153325534364f736e6d624f37686b6f52636f323941702f31443956634f5265723478346c722b304659322f434730574d715857565a6c637172386d7a70744c5a59726e74544f544252577267786b326c48784f4f6d616c727256724d34794b4c4369797a562b736c2b666d585a376f5251695235426f71305475714b685438665030755035616f646e5056535a716178414843424a7a657364724a766670487a446e57316179616e553855372f4a736b33653663475a484f356d5a68532f484c725648424e50697443686865534d547868386e2b456e5441426c4d77366e57782f48395055416e6c7a57316f7a5076332f666230714a707a334168562f4739523435516d34764a357374644c732f486238797061655556704b65614175547a51417956334b333755697a413663345631636c7a71712b4b4f32326d6e56654859316146387556703748446e6f6d6e464d6d616d584e6f555a7952444d2b6c72656f6a546630366a6c312f644473636a7754307071666c6f51654c356d6950506f6d69737835587979654d7930703742445446476d65506956516739637a6c5765784d4c76712b7a686d336f30496d4a7450304846707139414f6b4a6e4c2b6b4c4f6c684539446e3854654d354437327a5754734a594a6c2b747a69715038414a50776b5077496f2b4a335142443765583858396c45616f6f31324c7553765a4454614b30385936616236326f5457614c71537a316e4b53442b582f41414c6a67495150763957325738414e79592f4a6561544a4563616956417a636f66514368625479306d5755463168436e6c424e7153776953545647507334492b37396b427a4f334844714d733262736b44467037325a4e6443782b6f356a44544b33713252384135787336634c76744f73342f6e4f4438307450733779567242494974504e7a6477644173364f363078724e6a6d367430696c306537526a6d7554786c48503241754a624b6959397a6950384155354a3668507865774846374b677836654f44503836386271496e4c4a57766e4432624d62446e7439714b47527a55786e38496d4475664773326370372b6a44326e774f392b4a49586e73562b663841636578662b304a686e622b574774585a724f2f2b3572786a7971576a6b576e7a517a6e3575764f503864736c4e6d52742f6d6d7a6e5958464264774b58524a675655616757484f2b5a375462476e506d50556e5450416562384b76496154577a4a58707361374f747272724e656447656462794f2b6468737a3354783148534c556d305059456764574878514a344d783452392f376969306a706c6f465250544c334d6f324b6736456b75733653475074584b64487279756e6a576c694b6f793674443453543846495544796274445a357478623256786a3638396e47633733546c7130716672726c6c4834654f7835357033576656632b47507566476d6c3473363031476e3379754e676773386239715261666a3346725271752b31326655564b304a474e67526d694b316b584b766d6b646f6d6166335047354875374a38424269544b506e546d4c3231455145455656617841695559584131746433545a4370486541355355643546372b6f3862366c4e77705278576852386870724c76783039436b43764b667361734e46513155616d4b36595761672f79526f2b436853616f5655775737693258584d4b665064302b4b392f73704f6c34757070442b676e3271776442306132747a58764a56504d6b6f44636c7a4657702f35706c3533337166514c474d59704a75503339642b33435571694a495235566949527a31303455734851364f75656979644653594636335a756334365765726a733875737a6244554a476f79624e53766e6567525645484e5879344e505232504d454a30624b3871765a303050657a50596d58782f774369576b7473664a50727a317175704269585058516b424f48536d6b6a65343568722f726f4770586c6e7045337937386b665464642b7a35417a4a6b32493948797249526f79707a4378636d316139535856485371554778554d745648783834494839637a5a574c7662486e6631654a7853773758654565496550654f7a634c786a77667872436132315632657248675244576f4d4f57563061494b672f64417a46386770363554426d565037316c3376514e5475576254337a77466f2b535a757870364358574c43564a786a58524e4a30655578716c534c744855354e5949706e4a4f67374750696e386350783536684a7965476d596f455a7a47386a746e6f59446542504b35576a78656a464f43364961714d39744f527346636f364d316c31684c5569676f75744f6c4c7544314b795249486b692f7638785a6b2f6c57707559386b6661647246794d337a6a52674b7046384f7a4b497357326d69686441756a5170656556665345473857484f6731686c3048656a374a307862682b45637476533331767950586e30495a35672b78474a354e345834704a3472357a4c7135522f4e66546e3531554e576b4e536959314d4e746938757568635370657a664d32654f7633653850363374574b577833324648366546584e764e39514e766433636d62737545562b4c3479794b53657a49314d6a364c727648653237692b427553366952364145302f6c4546437a346950726d57336373566765674c3843765137306f7876543633794c513961667954784b764b7365624e7863487962634e584d335456526f58567538556d4b78344a6575502b4c6e58776c2f43346278536157663550506b3172323359323146642b6f586f6c2b5376354a2f6b6c3452702b76766c325a357268656e43664c4a764332567a5a4d766d305870315074527a2b42512b61376d644b6c576835466179706a51584c774f70374d437a5750506d617931625570533279766148566162547a332b552b4c2b6963413566472b43354f39366736372f3466782f53374764506a4f6669346d58516e5870564f75654c513347304e41724a334e6d4d464155366a56304f667245572f454b7a33732f5038733952764243396e4b6d5957314e74374b5258316a72537578632f3562337a74334b31653146685644314168665231756179754c6e325576704f596e4662794c6a2f4965484d3034734e476f6455576e7a50376b3161684e684f6a6d69374c546f30647252644b38385855307143475363553959626a674f58726c76392f766975633876556170555a744e637232304e766c584c34766f52364c55553270505954524c4a38537244314a657a4d7a56664a4c4f646e41376144707670794f616333365866336e6b462f5433314b5944557861586c56636375336836304551767a64472f7948497a554e544c6e5a3273726c69334f304a374846517562717a6a367141662b7a38672f37453136347239785977656e466b434f58654d37656c342f496569724b33332f4141566a68366d686a5256565179647a7274694d4b4845763743795567413566526a70373979723241372b7137706e72786762422b6d5870486f54596c477a352f733833693554505248354270742f6b644236644f4850777431555575726d38646e452b71696a71716638414a454c7070565268504f4a554f6930356e50694e645057587a724139506c36374d65623633426b48453754566e677a543039573957666e7a4b4e7a4e41303646464d37457a6532506a6b70615a5439554b7554557a7a5775373551504a4e2f646b39562f49664976565478443073324b365957654734302f6c657a6d386b546d48466f2b5474713073356b6b687a387271534a456c335a5063365361692f33716c44724f755030665a363472653334762f5135685a5a7a397a656b4a3072596f484d7a4f6c4d36396337733530716a6f6c7a786a6e4771685a444376336e785963622f6b4b522f7755573175732f4d574673366b443850437a2b6848393943365171666d4f5a4a54647037734b354c633635717168573466626a755770524f355773453941516544424e4d437776436679312f492f77424e622f484e50776e31763956764767386234374a38646a78504e764d414878504c73746a624d767871464c4f2f4a6d2f3963536f5361302b3530784c57496578516c4536644c39617841366566326a2f7a427776516e38374a504f2f572f7741305a667a316841386a523953764e647057724c6862657a3350717a704e375a325243566d657a536c644b4e5a6e39645655306e776c484d7453613850614e4f6236574b66443850304871362f7564666a6e583673654e2b4d2b706668687a6a356436663475783365424c75556c3554347470704a576649756c79363279746239654e6661704544307062435374456858546657344e432b326473396d7738615039325077337a6a57387a394e6657375a38577579387a54385552344e545a574a55783261654b39647446304c2b78713972366176494b682b412b2f4569655a66314b6a6c345970394c326559694c56692f395276682f624f38567638415262306b7739617a78725658357035745a322b7a4538687a302b49364530317a4b752b4f3631456e386f797063622f48396a354a586d5365444c534c763032646a554e7931357a627079314861337750387876796a386162626c2b61656a336a58696670732b7a4b774d2b365479523233665a4a6d4e6e53735a687a38333366655839795a5876514e436665356a75566c413772586374744c546e7062645958333671666b42762b5a65472b4f68347874366e6838506b455847364643676e7362486d7372585471506666466d6933783179366a4d676f625135314e476242304c415752567070576d4c636559557436537a582b4d73312f4c55666b31706566614d744f6569374d31764f386d712f4b72337572646e2b4a34324850483154617171435a725555694d44772b2b566a6b5235736b337576626a6d50643751422f496e7862792f38414976774b6e776a6e68666a666e57346a5770386538697339545a58535253417a476e30483236745875564a6e366f474e6a486b56426456374a2f6d43784c726a70556d4b577a7532782b556372663754503456376e6f542b574f4a2b5750717271654a2b6d57483665655565552b4234486948584e31447574324f317a6264366d7935726b456b735770676d4642492b4a576c48513372597158454f2f74477246395033646562635055782b575835796669352b4847527a62395a50564e4d476a7367644f4234336d4f4b2f7948566857747856353832443972523455365633465630544666326668596c5353724f6b617548543062366b34724134426574762f7741705738423266537631795836632b4c542b50366e6b4a73385139443869532b372f414f635643546d6a30752b70666d4c45456d48786e4c41726e634348723636672b6d522f454a664352646c6659725265733274382f77415079486b5a6e30747a7a54517538673833386e75386a3339576c6f312b526553392b7974476d504a6450594768374e4a764e42444d393274333441443268773067785856697159665134527769655543786f334d31394f744147642f4b4f7a2f2b384845614f68527a746c584e4941444f6e46552f312f72704c6978596b444f732b4d4f7a327559664934642f515379487a6642707a52625a6b7952587a55554a4463354c316b4a524e672b524f66557965576276754c592b642f736c6155356470624d61515164626842784a5a6b2b62585356365177704451305748707072727063686376473053575871435a6843374f4e7a45716f346d4b63674d306945707249544d4c7939466679583836394266554e766d33342f65652b59656e2f6c57524571722b6677644b6c53656a616f68654334795374476c706a393569456b776e4544715344726d706237473074534c52693964337236442b694c2f4147722f414d77492f774138507843384339587239444b5a366a5a33482b4465716e63784a354b4d4c79727839316b74566a496562422f786961435962305041557a55676d5966594533564a6b3866326a546e53314c56377534644164445468696e6449454332737949636f415367675935676f6e6b6837584f514d507630353564477836356a61492f436b79563149695a426b4b4275387478764761764a6649664f557a5234386b6664533763354e50466e59457970494e4f2f51647432547070732b33517a354f6d66445345674a2b4e314145426e4d524d3942355076376e6e39397a30733959664450556a385276786f38497238333854395135352f47664f66577679545264695a52446d627864726d384a774b55386635464f6443614a6b3664334d35333742787148716565382f5230505a4c566d757065323231666846746632307653536a38652f5235666e477455634c39395533642f796476493941494d2f77422f6a347264487361457056597453732f2b51486f5679722f3563475053414b6c366d617576626666454473624c2b596e692f6a4231616d316c6273336a644e57704d686e6646397a4d7972705a396e485965677844486447796634574454514b5141425471324637556e77614135666462757a77466d752f4c4c30773853385a44314930653168343773613843433077716d64493951664e574e5063394b57314535676f634536624f4c3432616d59542b4a5648505a583356706e4563513178507a4f394d7656614733476c69387178732f5766626e533756766a3938756137624e75684851475076303576417167627346756370627a6841382f68624a5278337663647664327278794f4a763978544a384d394350794b38492f49727a683270423662654a4652733675394a4c3975364766594b666a6e52775030756e335535517978363536554837652f55637845507778332f414e644f6a4d3370616b527a447a492f6e442b66766e5835702b704d6534723766685070466874546d2b422b6d7935494c4e4b58472b524d4557743555326459687165525551334a537330392b4658766e2b7550754d614739326c6f786f31783272666946552f6a2f77446d332b545034725236352b676e7246366a2b445a7056642f6b73654b726c76696e6b4b5a56437831476e3479776a68587250786376367464676337576339504249506a63545036747161564e5474317259657076384a50384135544a346d696247384a2f4d7a30396434586f71752f67332b7466706c456a7944414363676a77383352386c38525872447a782b52464643585756443075427942527a79554247536a344e58324b3358537476387244734e3664655a65694872583548357236712f6a37705a586c4870543670364f4e354a6e2b6465506a74707a6475724e3752547236554f50334c532f774462797663686b71517a5a6e58783045667a47466958633878656b626238747143472f6d5036332b6c766f39672b464d3832386d74792f44664b504a5a76464e7171624868303937615435464859736348413862776d57335756617453797a3535695970354f324b5038665a37614b5a303632744f5937565277532f50722b2f6a2b5475584c356a2b50586f6e3641375834744179564d4f6a357a35744f474a363035666a4135384b4d693347775a66726a6a314e5779573057752b31653476702f4277686a4e5964656a374a70387437616e76504c34523576664b6658623150387a3843327654507a793353386d373544366f6233717458354e7657743276554c513833386d675372654c62336457686c57355063493648797165526b62766d6437326b494e543252537354756a384f425a763458666a5a366e2f6b42366a624d76707a34523472357033784c78736a314d37795334382f4e716c6f65352f36564a4a724c743074526934535a7863425438412b6c5135794a45734d4931623170586d763278336438422f447a38635976536a777a31512f4a4838615659666c506e3361736c586a766a634f3935724c6b52344e547647327a542b5335365838537732722b775648614471614d59645736714e7944446a6e55764e72567071637452753336612f6b4a364765674869487a342b586861336f383165523475757a49394c7633426933622f77414b356c637a6a786532305a5a36456373647868576b707a533668716c554a396c4f647158764d66696a387730732f4d6630502f45723874644c5338763941705a2f5450614479646e2f414a3535376b65506158695068727468527a5631594c4a2f4c6339557a4c5072786144486652684a726e5239427772486e7456727033314e5068666d2f4c362f6f50505036772b6770656d486b394f4475542f7a776a777579565a757933724851506e634332546d535768443370456e68386f5a3745425a4774774b7359364d4f797438786d73395230412f7359656f6a76526e2b356c36426172744f664c3851395763727972303130543076496768614b2f4a4d4f7a547949543072464b53576b33617a356f342b69532f6a2b73645046536d6c44547839716a66375071643971385237642f7835426b6e6e5871762f4a61444d6e4f7a644c79693358304e4865474c675a2f4e4a5a31376e327136757a53786e6d35377550614a554b4150314f6d772f747a67506c58365238787a2b39665037317634306571483549356e3452656b6e6e306c33686e6c722b654e655965724a7a63305043742f62304737703938473866734b344c6d522b327a4e3757613041703447553866526437584e3370374c71567037326135745875484d7638782f7748385656335938386d50364f4e463436326b37646c586453584c53764f485459377948553034542b6e4c645535694a334d436d615158642b71354d6379545676703638394f6738394c66474e7a315438733859394c73744f6e72562f645a6c2b4863596d325047306355397558506938686f546e334b5a7966756f6d4e6c564c45694142676b522f7744496e336e584d78574a7350576e2f626b2f74472b696670566b562b636564654d34486d486c666b4655576e62732b56346c47336e3457657953696d6d7650784e664c4850737a78765437677544356c4c2b794c45317055644832654457396f766268484c575058726f4f2f48695870463456346d57644e684c7a4a4545374f6c37424634544658484d742b6c63456361466f6f66566f4a5032756f6d517a334b6a6d5453496e31334a36656355336d326339346c486e336f6436542b70754e702b462b622b6e2f69506d4758624853676f744f624a30307747532f7061367575735750436c5a4f4b32334d41666371524a6f353776637478544672526d59746952356376796f2f462f7948386666586e2f414d576e3956742b503058386b776d332b6b6b33635139447866786a794c41746e304e50784853546e7979614a593635366c3135314f525130597730704b444266665a50543361643476544f336d2b49624a7766335076467677372f4142516f67395276474e627a727975627a3657587848473864324d654e57576d70776e417279546172544976467a31466d7071614a39375438666b5043615353706b595650635471616d597474714f4e6e716e2f41504b412f7743344a3546567a787230313876384739466648586331637645772f456367396e622b6e636f632b697652312f497169356f66446f66352f4b6b4a50686f7a662f7061482f4a51644e665a644b4f4e713768796c39535079723966665663587239572f5776315a3839726972717336666b336c766b707a394c5131724b48577779334d6e3737756a5574722b653659416d536254553138676b7a65756e534f7a455647756274416e4a35487066545870614e647268303745652b79345a5459777042684e672f485338716f366748374c445036307868776d67464232472b33397372387673443853665847374d38342f6b472b6d667178782f6a506d566177592b507837516f4b75484b38344645326562696f514e4653426c39774f48707146337730653870733966546e55706d7661715059647a7778336d766a383371484c7954796a782b37456e32735051795531303055654836576736714c367a5a324f664b6a2f7741646e7a3267325977474e2b77644478306e716439627a496d617a4f424d66537a507479662f4143674d7277796a44377270375a536a7831435169716e2b7a7553514d79646a4530757230716c3655616244457a4a6f657a5149666d324c4642476d637a6b42665742586863486f4a2b5858716c3634654d654f6176684850525865786e352b7668734a396d6b506a2b70745a3946464c6476725a584f386d6e3930317771355247324d434e43584c6f4e55317a7530713034576d77386a6e344a66334b2f79692f423236796a30713877373546347a35486c3036666e2f414b506559366d786f2b4d3661684d554b3144437252502b44314b46304c6f4b394b5a374f475973612b7769656b2f523164476d723276356a3033666a2f38412f4b5176785738363950764b4b665750302f38414e665348314f7850462f4a66494d783250677638773846312f4938764939324364737565376c506a394646527045424e33736a437779364c42585457484466324c556961376262716a784d65726e725a3668657576727836682b747671686f5636586c2f71483552583548734e577074552b613336466347666c79795572534657576b62702b6e4f514238733455664e39756a2f414e33703172576d6e576c66684530385930373639663359306550716552624c75356b6646794c65484b465651304856495657584e784d3646732f5171705939526856336870393748526630456b4c7733772f754672624b374e576273346d746c452b5071614d2f6446333064437261664232654a7956392f6b644c734c666a6d564d6a484f656a3576754737735a6e4f4d634142312f4b2b553532676a4e4a4554396c4e6d68324d6672727a36355a7053304a3156586c51716f70357647334a6566756231564c4c2f727550357671765a49313632664c394643366f7375365a6372714570766c366c3037624c6670437075355677334478547634395a4d37336e6150726364396f4a6b396663497a45524d385a7841366e663253665833774838632f7a4e773666556e795a586850692f7156693633707473655154475357685871736452342f4e3375552f7743664c6a5a6469787773377a32416c7a413637335447526478397270612b6c773574764d505a48712b4d772f51386b78744350337558326a4c66702f7830314b2b4b766e6c596442316f637576516f544c554d394348336e4d6f50473533546d78636966722b59492f5a345a7a4470706f2b6477625531473477644a78654f706c52646f7877333076547154592b4f454e436b2f434466664d4a2f76546f4f6d754e37704a6e4154395776787a384b2f496e306a3872394e2f552f77414d517a7858523848386a3139444f65476139536634664a32482b4f394e423064624c745456797559752f774466316c4e572b673164392f574a6d743570666457324c442b6476357a34336d34766c506b666931694b7858686556366d524f356b665546616b4e65714f794e704d303266446f66486e6833676e376d4a624d2f374859774e54452b7645394a67463950305064704d497647664c3439544c437058574f765846437a467a4c5973387179346932356171463951796469535131646c4b2f746a386648545055646f76343069416279764266443155573364313365516147414d3977706b6e2b485063755247686f7445427453507553693564514f57387753536f4434316f42376a7071496c703678356a4162504f70634a387357744f6f7075672b5832766f37707a785a7a66685555764866565344434a4c6a4e78394175646d662b70694a6d63514f6976397550384150393339762f31743832386a6634432f314138573962764341384b7579333644737251775031554c76487436572b564a70326d7a653470794b6a6f653850684a66794f576262634e6252393953736274753065356277472f46303839575a733544647242314a6a3173347462644c637a495a73555958647431383957623265642f77414d2b624c4771637a6f2b476235452b7966674935356b35787736694b2b71506d33715236522b645965703650656b2f696e6d6a647a53774f763562354a58494f4b786a7278747538697170397a64693969356376344630736a62532f34516358515561715a7245586a6d7473695151792f554c3138395a3257612f715236535a7668635474577679504d7358354a412b7a5630696f62466d356d7558434e6d54485155365843716b6b6b76526d345672524e48334b596974496e6c7475424a336d486466553250476f50463051527630664966352f33536c41787a6f46647471726b6e44506d627154482f43696c4975724d316966766e65566f4f70537847633934344c66334a6637706e6b33346931656f583475656d32486b37486c66717a3666745235443570596a52793776473037736d6e6e2f764d6a666f504b6a597138635a4f783951425078464e50666142703476326466732b68477073314c646d6f386b6d647161326d46564e4346497a354b35416247354e6730326f7335526671457177786e5173532b765637783658316a56483335787046424e62334138595a766b4d304f505577476774726d4c31446d2b6d2b6250716d5a584539537672746d6e4c706b445069635533584f436a35795759542f5463596e776b437333776e5273337a6e77657752597159334e6771755a4a4d6a6f6f6c6f57576d315244307945585a764b436f396a4f6d705054426f766f4e41544e706d4d5449395038412f77444a7966475a39767a76316f38314c787677334658345667356667562f6b75514d7261745a766c6c686152766a76783366486d31444c6a4d2b6567435364587a4a4d416d596b7758772b32576e45526e6a5965756e796e6b55767a3974536c2b58334537506a76347a577568304a6c6f5842786438445a3750635661792b5634304d596b5072443030384839304c38366e6167667a572f7741722f456b656d763559657133674a523978584b383738676b7972747847476f427238756a634f4d656c6f3154392f6d457978364475505a79593143324d50686e544b35616e6533707a4e744f6b7a34515056782f5a4f2f47397667763474656159666d6373782b586f39543333374f6a424864653750666e50505071484f75766c6c5a39687566446c4f3930487463556c6e4c4a754c483545556348744e38366c5a6a73344853376e6f643654654a3764657a7536766c2b356f2b505a65727066583074626171304e4a6b453036677a57352f31565a57484f796155766a56306b2f41752b5835414d2b6654546a75744e6354774669654b656a45766c5034372b6470726f3170764b3976793376714a6d584f753869697a76452f494b6f6850783530396576657a347858342f4c49444f4a346d514857662f414532716365485457626262312f434635634c7737557337356d2f776a4f6d387467462f4c6c352f596f3947545730315747586b4432303354507179666b6e7a365346632f7741494a704a51546f3745787a5848707646562f6c6c343334396f666a6636736542495a67365a65552b482b542f547832534f79387043746d6c6b3865536358624766594b57576c62564b7048396c3078426939464c71676d74707a4e62316e485a4868592f507630643844394237505150772f48385a795048504a744430716f383138305434397137756c6d647532364330734b375276326d467772753153554e7563736543514a564d4b7048544b39337161557a666650684f426f5146764d626e79353543634d7665786c623963637565732b446e76584136794f65526f356f4578644c702b4e72543054393652366b774a2b67554879537564724c3659356e71556e52472b56713741744171572f4a486f736930474b4c4e574e326174334135564f72337a44314b5644515a6441696a587431383858395431535a394643696b735633566e4f484e7a744b4f5266796d58514a4a6537515564706c3862584a594c4f5443776668644f6f59582b5168556d4c3430365a387064497252377955703566704254552b69624e4a667956686d695363757168664b41426e2b63774d446e4141412b53726c55443253492b312f46514135644950566e546c3737793564504e725a466c587a574e6853672b4e3430366a536c5a7a6d703332426f444733783645574b526146432b554e2b3078534c6332436972456a707571744f3945743566524765416d49377a6f38456d2b3865576439796e4b6d4a6d4a7a41454e79376f377a786d4a5464774f49794176585266384152716571316d6e4a4d464f645a323353456e5379395978445465736b684d5942385145444d357a6e6942733931744c59705961744f3352314f547a6a6b3545636d6a597a692b454b55492b694c526f756f646c7a6b4b535a30666a396a5a763978386d6e6750537774474c647a70724a623872795266586f6f6b304f6e6d313176686c6f58336b62715842535047564377577449514d5865386b7a75352b776d6e4d59786a694c4e39504d6f4e727954777278555648544c3566355234746836416677736a555a796454596e67755472396259314b566c50324e37467939534d496e785537564164664269596d4e3039646f2f703733654d5a324d7278374b7a38375330664376546e77627837777677447750476c374d6c4d6e6a7a4d754b2f54307648562f586e4b506e3866342f776b69314b55716d397658386f4d3745654a6e50474f335958513673664d665433794c4235696f5a6c39794e594661464b5a2b766c7679456c6569716659444a4d5a2f6b304978466e5576503466654a784e706f46586636706e46706e7a484a6631572f48503866664c664d7a324e33786a796e3031395173616179544a444c5835426c5733423477746d6a504e4c70594f6f6c473543384b50616e6c4b4451346a36497a4d753632594f69743778474e323673416836372f41497171384e3943634c7a413832372b523870395173324c4f444232794c796858686578413775546f2b547554437a6b343061574451542b786b45386b6d71563179546c6d64497854557a6648665563392f4950485046764576496c5a32392b4b63586b66466b7a527866566e30733872334b5049384f6f3473736c332b64355532777073507473716a3048366168416b2f636d4271465a7158554a31695a6d4d5271644f365235572f37693369647669583559656f645a6b6a4a743870645035726f597756364e7533342f6635414e6c505537364b5967524c70615564434e675a683430584930706a542b7a7049443944526e4e4b316a694e4f59337675746f706a7176416f70382b704c3434307230566c6d5773524e4d743737415937334f6e4872476964437631387a327545554f442b744f7a57596e72505148467467316552546141326f4b766c6a324732784f637451633972737370766b6a2b757a566f63582f77424d6c5578706f76384173476253622b776a4f325a327945555177317a73653649736b4a565649637575577046437a716f4c6f546e646f2b786c726c4f4667765753665a377a582b694c354b564245784d645265663432666c4236752f69663676592f716e3650377a63665152706456354a6736564c2f774478337a44476e6f5a54486837476f70792b6652737a357943643347435a65777633536d5a7063434c55707155323348537a3831663768506766355a656c3368766b3368336732393665655135474e723566714e6e33585139786f4e7167364b4d36504b5a506b304c3249537963716744652b6637465449307a7348355841797a4453306261647252504e6b63682f4c5056377972546f706c305832306b30427858666443367633684e6f30425169576a6f2f4a47746b744172346636593144724f7051452f2f4649645661524d526963432b66445078323963396a467a2f497358307039512f6d6d6633566d32573447337a4569565939636b7437745630516b354e634d74434263372f77434b4158666f3155724d465a54654f6d3457563664666a702b542f6b50463658692f7070353341783561746b66334f3654736b5034544c4371724d697531682b595a79773833515a386f57663634365745536668703461347466546a74576751333172394c5079453856444f33504d6643504e4d74336d6b734f526a43552f6b6576706f6b446f374b383548616c7973537a6b633871374a716b66732b5142396a3238486f4f6d7471547769335155313649654c657266717036702b4b656c66705a346c74743959664c6649363833417a4d614a636c66644d5978532f505249552f425447695762513553424b4f51786a4a6a66594b445364377a5774625774626c714f3058717a2b47663934543064775a2f5475583046395a6372466e37323363523448716a75643874336379502b58755872387937727274784942646d2f35664b6154484255672b6b62704f6e793131505a356e647572395230762f414c47506d33712f366230666b58364e2b75487042356234623669326557782b54372b7835353478355242354c355a4872785551323576454f496d655433567979596f306d4e5977417539594845624867447366616f724d567457323675306566722b346c2b4f7671462b484835592b70506a547a666c2b4d656f656c752b716667653135444351346572347a74753869666e665152424b755737536e30425a4d535141506252377548442f414a69342b765276585530363236626555616a2b692f72313670656733724a696574587070354a4c6b65652b473253587231496d33636d387051427337543476705a2b6b7a705659394f626a7a78317259706771474175477235654159587457743432573749395633342b6633652f77392f49337872447a66577a56483045395965326747726865524d65727858633064426245383138767a43714f57664a3047543031652f696a6e6f642f4a424b79696f2f7241766974374e71556e4e4f616f324f76386e2f47424f6c6f302b50666b7a366362616f356e6e56724938793843314e616352584c5445433132772f424b73632f4c5845715a534669446666307a477055703135347648585474397841664866376758397658386535647a6639512f56366231477279356568682b42656c755a6f614e31326b77376e7635586a773251357044625a39683564355170554c744b6e2f4e78702b79637a6f363270694972742f4e5963562f7a352f75596570503538655a346d523550465236652f6a3534597831337076365535656e7a56656d2f52726f7a51386939524b51454939377a6a67307061662b4b70736762313530337850476e7433546f3646644b4f484e6133577735365665662b52626d726e35666b766c502f4149583466586e7a534a6d706654723679705963794a524e513253636b78364649763276304e48516252377a416b2f41376855373759694d787a58467a6550666b42346e3448665a6f656d6b486e476c714d666f5435312f6270734f734b426b7378704b71493864615631615244526b6f4d754362654665796433584a4979436b30745043306a73782b476e3936623178394d4f347669337152697a2b7650673674705756745a7576724a66355868396b3049646948546e76522b6c2b514d4747505350376c6154454b2b6f48686f492b4b627a616e737462596d764c62356a30782b6d4835752f69542b54667062722b65654d65722f69522b483563617565572b4a2b543758384435483441464d31314d794c703844346e4358794f467632556e774c462f375548545079466a7547326c7161647354586d48417631393835796679713266552f422f4476316e3878766a394e36346f7466787a79766e6a355a336b42684578477a2f346a71506a5865374c69455a30757171576c704f30673970667058794d374b523776624f705874446e35365a596e676e343659766c50712f363765575a32647534355858356e6a6e4e695851387332744c4c625544594d6e4c4b73574656397069666166656647494f417a5a3766332f5731706d38376156484c4c387350792f3841556e38746656664b38393236713550466645576f6a384838515639556b34636f64424b614b566b37767a61546661586143397673393336344874442f41422f72625430363664646b646f656c5038462f792f38414466557137303938697966494a632f7a497654714c7754314d38647746346b2b70542f346e4c477a4c306362466e535047512f545134394f6f68536b45586e37443731527a6c7836756e4d626f6a73357a556474744c7a46666d346c455768456e563553454d4e6954386878712b5476795a395a576867676c4a396e633962426138575666345470544639575a6e31356636356851666e767144363935456b475836612f6b3334563666384167754268585a586a766a2b68342f4a6a3574314d53382f4f304675717a4a2b554a4c2f48794a7a55784553667077566c435563484e49417445556e6a6654333246574a39635050392f4c33486571663548516557626d6638795045365766773865663479476a744b367a78495a6447566475687167566d61597062495247464d3644344645306e3170697352504454346939384c31313837386938576b6e386871356d497a4d354d4f3772527544586f363470424b6a4b7a6451364f6844576365657a6f435148397161772f6c4a31353961565a72465a78416a58353161662f414d30763450657275443472356c6d654e2b73586e5a34694a74746536552f6b65794f683556347576796c355975505253744f57337770666b6953436f576932493645306735704e35524f6c473757726e7331486d497a34544878532f7741673871382b66702b4c79396e66764e2f6c5a5a2f42394f6b31354e6b3838436166494670334e526d735361754e556b2f73556e523974536a50706c33545048455635763841634c412f487638414e4c7872386638417a7251717761664b764a736e5a513658526d5a703547526e32446c69762b4b624a6c356433514b704d375072437843444a6e324f4f354e4d633661353633307665523048565830352f495430433961664665616862486a45336b575a6e584c3235504b4c737958626857715244504a5048714f594f5038414e5752704b573471426971713449424d354967314c47633971616c4a786b5674357635316e545a4c2f4a4b6454783756527170703276476e4d54627679357930335474784a4e2b5a467a713032587961326c704a665178376a5269482b2b686438337674455a6e48694f616671582b556d646b4c30575a4a77366474574b356736356f687a2b344d3263444578474679353073314361776e4b454f78636e46414b6d62396b4571712f72656c4f364f4d6a6d4e36692b5168354635526e36377036476257646b386d387264774b3230366e6d566457707157324c4c6978664c484f6d71574c68546b3044626a6c316e444c33756230566a4559465057614348393033796975626e4745596c4b326853666d34524d466131726e48324c4a3748427a2f6e6f2f7743487445444969634567592f5472573466653271634a69454f4631696766785a66544532664a306539476634382b506e5234776568314a2b37326b66444d4a6a3448357273654f2b55493875385938703350484e6a4830387a795846325048744333503176483937445a52566e366d5674523141324f354e69566e50516869756961666c4a684f41544b4a694a6a4578774839596a38452f7959672f4c4c384f765150386a4932775331656f5870316c366d396e78526d655a6e2b62342f6176462f554e47594d712f6a4b565871426a2b54794939686530677a66385435786e794a3844567037765574544764732f774438503047317130423863524a5148776355517473726c5750386b4d612f6961496d355a5658724a66794954786f437849475874344173536639412f65324f596f3732332f787a6c512b7871506b744767577171464935336573487246752b64496a374f733653766d44327262306b6b6e50386e332b3459646d5a564f664d6757632b704b504756574375496d576b6d6565534f626c302f534951594c4236336841514b73414f7434763939592f6a2b6e714169356241707a383665686d59786677547764573061756f37394a4e785038417264577876745839776d635878552f7550534d48483766597333352f7439686c5a784b3148314b566e4632496b664650455a72644f766b344c5533516e4669362f625251736631317a6850746a6c657a70752f664e41684c63376b306f732b3331356b6632496d39414f456a73666555463155776e7971586c4335356850322b386d302f47617936617a34437567584a6b707259394c704c464d4b704b7757796133765566382f4567562f454c6a6e53544c4f4f6d425053412b7334582b6f4f42686b5553353038357a4f57786844502f4864747241444a48303176705a4734666b4a5a4c5750532f58666d34417053446b437a76734850553767354c54692f6c6c514a696863756733526155363765554f62325a4c6d736b5a4741386f317564597a393949754e39347549326d58744658396142496d5635763265534f6c373134704562413977474361316c314530417531425452597957566254486e656c5363413850374242376d41352b2b3171694267707a346449586464564f32614f576d747337684f747947436a376932725970706b7755674841615a6b74784438494b6944662b744d5a744261775a624e326e5451323155507353344f31304c466e4a5a2b724a33566a7a2f6d7733642b5941542f4149454368705631734c654263454d79785a456a367275714f703265546f36784d336341626b2b31366c692f72544836797630626e6d48503642684b4e4e4d7a5263376968617a7444506b6179676b6e4d34556b4e44716849685a314b7836336841317654547a3273426c447a5050553768535072316e2f41472f5137317038657239684a4c30723875466e64565650736f36666a784148644e6d583870547770575559484c777a447454757546786c33327476546861732f6d48387254786975376c64307447526b386e5a393835356435386347572b656e2f5a6f77383549775872304b74534f58394c63496c374c424a345346637041652f6673794a5a34326c597462412f5176375042343844313578314d675051476465666f304f33757479654b2f69574f6c6a47643942476b5866413335653658597a43757033445958786a62376e5035736f7475596f664a73716e556e7a57747658766f6c3258466b5a323366654e44436f75584f6e6b527a385364686833334a44747030727a36446333303175333950656a546c7566713464556d5a6f747a56537a5635393267625356576c74796b3364714642554f6c6355314832304d323130485a796568795856766a4845645566527a7a545838727a7031366a4f5a6e6b6547387563767959635479502f79447257796c72686a37393859386a307156335961444b68366c4a4453373153754a6c44726553385245526a714c683350494e52395767794f537a512b7a2f4676596e374b4e425575706e7870306276486c564c3439626e68554d3834505a4f45382f77426e6e7942796879726b31694a6d635141534c71632b775856746b697663394b2b4f7375436654424e706642505747584c773131615470394a7731754f517067626a683968482f624d503667537a3075384a382b395a664e662f41414c7735453942754f4f3779445754503352563477466c65656556744d4d567a6654306d792f4459726f66456d662b48576149776e41524731396c6135794f7276695870703654666a4e3433565a4c586b572b576378692b333549464552585a79373569556e7555777152376c355a585a2f754c737069596e4d3576784764503737684e72586a796761332b5365576f386a305335507a473068487133482b344b4e50557977303172324b32366263334a575861714b6c342f765372354b50737042507449506856527045524851526f71636553696f4b654b7073546c425062544e3161396a49746a6e45773173614f7a53543971666b2f756f6f59715a413948346132665a3442422f55694736486b4f56346f6a4e4b527839666b72313770517230424d7962686247316f636a36795659736c7a526f5464336f6b622f634f4477564a63445538304167586c507166733352366b444b62565a6578506c717471756e54624774646270584e715775636e6f59534533555638467a674d2b552f4d62714b5866585969493452306755614f725242565a6163773866557647426d64536d62503132554e6b4b6f52304b614d3162766b35755235744c763254614c4f61587561512f43612f36747374344435335565555055664f45783666574c6a7a71333837716c7a5152394b706c4b463164444c6a4677314e6f62303643617735716148483178396d3241727578566c7a74436a6e5a6c367455746e454a716a6d55627a535655623958547a3643376e33652b665548343071594475664c4d6b363374346163646c764156587061326c70323775692b764f32724d7035346d5671577957616c4d462f6239616462414a3547396244496f7a46786b662b6346426f35616c4c5036323665516a7067734a5a4e6c623957425a4231744851347a755a5769664a4b364a36744c366f756448334c2b5658576b49696859475877676f4b515346366545355032735a585773587a554655723475616b4d476e5145565a4a66576c484c6e5539587863396976303630694262574748584a6d44706a6e6130786235445965624664394671787959383351376c31553166627a564b423168395367364f35757778433535654d6f532f6866474d4138576a334a6138306f6b7a45624f466b7143792b36475571716e4a454e526174466b55695946366273725147356e484f46656f4d4f7850336a5454565152774772324f4350715867327947396b753033326d6a42487836796855566b305768717162474e4d384d6b4e5932355453755747585a442f415052495652704346715638534e684f43525a634d7979306d514e3553756d644e7446543043755658386c533749304d6d3575636d6c2f794c547a4d37315653714f4c626c413732317944537a2b677248796e5a766a6e72664d673773374c7056707150396f72356d766f724a397164476e4b3048644b6f73503650446551544a6f4f6c6a4843352f554c646175336a754476772f7742653650484e57504d334c30327a4c636c4c384c5255796d4255543951637950374b4b7331686975524f7735706d6442552f484764484b466e573451625a786d4a794c7a385833644c41386b7a764950544c5766487774794236453062453837715a6a344d3038316d564c4c4d746b6a434b36587657724433665741707a4d7a442b7154476545774e354d6a796a306d2f4b6e4f5a3464352f4f6d33796641486e4b74764a54725230356b4f6947614b467a30307772502b5071596e3257452f326531305a38497736307a6e7a6d4c61633567613465716e34376557656b6e4e58556a69507972302f726d37566b65582f7a7453704d314a737a2f5a6e6165657a572f77436d6c4d73477331684d4a76794f7355796778563867775872614c63506946596f7969304d2b762b556e6878395343756d442b4f31616e46552f4f314578757a38374e755270443269683632584d6632467839625148313265376a75394377714c61386775796e4d565a6e326f5a6c63455a664959786f7a4f70544e6f5a4b73716a497a31517a783631457444744a5579675a78626634704b666d4d2b2f5a6d6d496d5a784130352f4b54386b387a3071426e707268655354316570326a43475871465662534d50696f79397963782b706861642b58436d50795a644631542b454163624f68504f755953674d494e6450536d334e505a67637a4e66796d6a645063336270694c587a5748714f32446d324a56682f47766e6f7a6246785854394e4e6e38706e324852525653445778556a5433356c66444c4e30784749774b49382f38386f324f7350514e394a562f77416e6d334c3346534c6c736d7156504b7069302f4b5038654a3153723468614448355453487654574b76614578474f454454587a5451707672706e49517a37354e6c5443304273462f61657062444f2b6a376d30775a536f544b553862574e5651536a415766374f5556556e745473774e63664b396c6853547452626e63745946534b6d56716c71726e7a6f57494b5361653650536d4b476c514f414b51567859684f427457396a43704e6c67483542776b35665a632b71554964446e384b6d6d616466575a63466a766963617150496c7a736431644755716750674a733557664577512b594f54422f51462f42656c6432524c54574e7a732b7a3072384c626e55616d68697630367047346b335973694f504859434a377551335855574f6576324a305a754957444439756858354f7432762b372b77364e385a4d726638593070737738322f746c665653387a6a586a5436565343465674386b326630437a51305938556c764962474f306f4a762b494864596c764e756e62744677785a6d53576d7970646b775a6b5055557654665171785053747556467147556f724f6a364c3254356f765558432b794d7945695a6c306d437a4f4d5a3443773537324f6c477058482f414b304a7337744664636b5a49743672494c5668367a376e375737376a6e4b42637650715464354d507565623268387341624530382b69543630456c696c6f4758706b5a785755304e4b56374357416b79706b4d2b617867384d6673382b474e55765137574257414762626d7866795a5a554d37616558756d4f4a644c59715974574b444272524b3553514e51306661304764466e66384138475376744c4459507641425555676153724758564247656a44456e516b70585a6632484f737938382b79545a7770392b6f506462745468454f6d48516c42303454704379506f476a716c6c2b6e2f48537630744e3330335a4e46746c4563382f644755737a4d5446414a4e4767666d4851467242576e325430766178716e74366d67493754706661546270364f69744c67725538495535646b2b3348463155724e3945395550532b45587931436d5a4d346d6f314154484530324e5877416c766b456d48624e79466468446d4b702f37514e7938616a4e5a3749612b794f39734b35382b7869356452426f50765765333239413064366651415850354266564248693152636c7a4a58415079665a6556566c4c6f3532547142765a37796e73597a4d6a5a78784e5638507a4c644d4858746d34706a686b535a47554e69382b626e7773674b616c4253302f3964564371496f77644a3969556f70746878665931716e4a416d474376665838514f4e4145424333784e726b546c303176753749687450756b6e7336356f52554d564c556d6c30356c50384161556c6975644548664a56796d5a457a765a37774f69685545536c4a467447545370445a69696b71504c693672486f79394347596f53597556624a6143636c594c6b2f36706c2f3846314165344a4a474f684e596331686c51705833594b47794e6b594a426f717a3655534c7037524e324d754d75542f31616c6b3468534153664e2f707055412b5a5534437270467a345548383836303235636c554842474e564472724948417430707a706351393530752f4c4e302b482f683742416833695a70513466743554395230415470354d36696a6a474357493141576a5439716452564f5730684a687047594f4b2f5a6d494e423551742f48386d366c7a6f7543633747767a3245666533566b55697748506c583755684b4f574b313039455038456b67464f36722b674d564d76344a66515559697a367356744d456d62785975696c64514b7762386a4f757a2f63744a6a384c6a48357a584e5830614244354141624777364975746e6136526e7963476d6d3045773074375277364a4f4b355a6f4b57326334426d4c7038344a6d5138373161323870352f51566c373348374f714f696151796b716b5369715a4877536e775469456d323653584c585651343139466445332b716b76654d3379645449436b7442364d4c4b47535062564d695745414d2b724a3636704d31646f5a714a7035786e6c7046636379614f4d39366878466b4147304b615741683371557a776b634c6e3967637a74556d6e4e4d7153654a344d707376314a644f6872714632574b64514e43556d507770367370674f645a39444e567457787846373332696e4f584a633456727a2b4e6c55435a516f764361354b766d452f7230454e424f52596f484e3670767967414a42764232617a4f52796d4a7756486f7971546575576959477a6465353263756d564f6f682b6773684b4d466877416330424f6378466977703443317256307a6e32783530574f4b58394b746d612b6e6f57707373726e4372575153685754714530457a67634d2f34304a6c67346c70426f4b35796171523741646275716949454d3751354d387a6f6c7264444b4f6a516a3963636d67616c6d4469556448756377424f5258316e41456d5a58493336773151747571565377476e315a4447433753597569476651536b2f64375a61714a796c4276544d516c5333394b555458416c444e5142327970796b6f6e51306c454f683073794437556630594b4a3246476b6535396c4b6332706a41616636506e2f41416d6f2b4e48324178684850706b4e4e74794b564b7a5070446e636a61396235706f69626e552f7276315471797a5956697857614b46557a30384e427a74363553514650716a66504850715142724a6137596954795a69594c6e5675716c6e6b69676170354d6873623878665a2b52302f3151396a48476677683777722b357a77702b39316466506b4755633371376e35322b4b4c7553775535316b4a79676b66727678306a305864596f4777665863445443615a514e73326b632b716d78585a7853395254757a7662587730556e6437556736684b6871476a672f585a37766170333134506541636459356f424c704b6a4f785159695736352f4a64416b644c6b72476678724f6b75487071367341737851716c6e36304b6e4438676456527a326e382f48414c2b766876583232486c49495337516b614d2b5a6f33306f6f5071756f74755a536c6f4f3241713070514c7030475a4f41464f48746446674a43306f4b6e55465334464c6645567555367a516d675a49756f4b71702b4f5a7978524975706a4c4c6e486e423474764641452f5032786644494145655774392b637a594c7656326f69565768464275696c494b5063746b307a5a2b553875792b463775755966375034724b482f346b4a4b55366a6a562f6332367750785a626f364579346a75386f384a64736f62517a59314a30614f6a704d67727166464c77394279706a532b69555538536d6d6c50732b774d3572447030503879597230486e67426830545558357a517a384c4f6a6b5846587a4e35382b5479685a3663576c567453465178626b377468637263343131357270674663632f574a492b385236554b46677a595157364f5a6d684876305a315a7652442f4a7859316d73366a4372694b684a4f566d3647663178385255662b6c5a6a78386e48552f7742424c635a4859744f61647a382f5075795175696f57394361512f77445463736a6a6b357461766c7a716b314e6c7a33635a4e396d64797a744a31494a504c70414b33374d6870666e6152465032484372386b756a374b4a316f7062422f494c32636548555152555a476f71645a6f304e4b347131526d524a71306a63507a47796d734c43527a62574c6e7a59717a7852646f6678505938794f42336454525446414766504a6b374766565055764c314562452b347a732f7342786e713847666a2b56746242586e3876754a5a7a623245573557725a686156326e524e586e46354a476a52737a424b76787657703534765938312f726553364f696f515338667477584c544f70483649474f6a62587033696374703073386c50506543577a79415347716c2b6d315971687469686b5444586d71304f793747724c4f37794133426f38744b2b647752787245343352717942444f547a66482f787a516973314a6373445272354464696d344835686f6a70376b4f615973444e30463356565332435a697274476251594e4565334e43596d596d4a463365472b746671443656574c386577724f782b4b5a32634b755a326674753864356d61506332694648484e696f6a344e38384d37656b7454696348762b4b6c4970656845645a7057325a6e7443396647765557587a364f476e4a386d414e485455316c6d5a744c586d78573061365368633946744f6139704a7054724f594b32706b4141503669526c34366a7639566d6b567a7542697962547246627a3072716c7935344b4e775a79685652476176334e515a416c4874516273575a4c464431674345594e613673324c4149302b384f58367137474c464345774b646d7075656a6f6a4c6f48445550307237736d32716a67454935734b355763342f7050436c76302f327058732f7037767a446941315030595070317775712b6255374d335337543156396b357a764a4c79435a763841496535684377454c6263496a533369522b335037476143636865342f354d797873693939753159714b656e3430465a705571727874577237764c6d71637571796c63705654385651756959702b6e37752f4d504f4843555a70357649644457774d7653626537506e31714b564b57364f73316c4c55644d56543155584e68634a7845415275595274596b546e2b592b676c50716f795836484c394354566a6f742f77433156717a593664437156716f3571575638307834783033305a66674e704b413230657a76307a656b317064664d4835336d2b65624e6f30716143665253636c736a75396f375774624b7376714a706e5555783633554a30436c6d642f794c766d4f4d674a52782f3044494b5a58677969644933307574755a316f5173732b6f6c3255697673685379783835397a6b2b5847424e695a37794250506f494773577a4d434a62784a6c464b5a2b4e6c7a7368565756577869374b6c613154686473787a7a745937706635784d6f4133477365674f71345a755672702b4537632f6e3978414b6a49622f6a4b585372584a385248704b476e352f6767314e412b74624a437332304535676b78532b675a4c6535726b693564525349324133627530774f583766334f6f5866727a737a703752306b3031647a6d4d736a637438784d6e545244646e73564b4b434a2f38416c51456f726430453170325945616d36327570376f637569736b5a7236654e7130666764596176616c39484935524436667a537a704132464b66552b7a346e6d616e70506c673671367a4c47586e3047323458417034464f5131714f5636755a786c5a31644c6f2f4b7a5057794e784166514d4a68574c70464f344c7530684a7372756e71614978642b30625468716c727a56737867576339475a2b727553324b71462b4f746d6c4b6b314168525354684d4a68774b523476756659383869387646525633567a724e446731556a586e76573747784b3568516d68756b65334e6f79304f59756f61716b694d2f5a7a4f6d676b6b37326b58772b7a4d50664a3757365957664e74383062716b32567562302b5655555a545257756d6550507a7052344b53687149724f38726b57302b6b3350384165345848514776336b777373746b47674f30736c77354b6b2f7741574c466158624a4d662b536c57526346726f5763744a665a57723667556a4d626d724e4d352b3354543778437a2b304553676b73437163744556304d633035313230506d4b3169714638466761563158506a3549502f5a796b7063345a6a702b54346f74414c3451614a53787933347839684b53574e6b6a35744255697249444e47556332626d384d57632f696661436c386e49557a55677833564e37332b6765654b65596158696e616a374d353056332f576f6b7562464a4665696936374f594b73346e4571664a554e56776f59663255694668457049452b6f6b784d52505543765854386850546d6e305233505467654a30727649315579486c353866537858614753764a584850726173734d33666a3750445052324b64794b5a46726451676253396738696d6e62667537366a6d65586c396b4630774d31646c387736414a38667865356a627163326178567a616e43334e64326e506a726c6f7965546a7a33396b4d4b516c70416e74564c30624b2b41595a506b754d755256472f793566614c694a4a352b473157504a6f557463546370452b726f4d5459795a67517057397666727a4e63464f5943756d304c4a6e4f4f45346b456c47726274526b42343145476b4a5a384a556170346d6656504b335970714d4175302f4a446f7763337631345670636333325173734d45304537704f5448437365517369626146374e3756304974657564642b525a504e4d2b68635738486b45425939794b622b3576306364553034326b4666774b4a3065616c48317546386d642f565a703032794c4c3862454b5873386b696132544f6d646a614e65707062754f7a4a7169586b4a62546b444e317a475372556e6147316c68746a763448516c4d79543133455a7a7734654173584c6b68586c6554354774695378787730354a53766a726d6a6a3056684470435338734a616861764652506b78745035526637694476326336675141324278372f756f39586e6541656c2b5a6d367239366466714163466f38526f503570474f48527846334c48346b3874454c4371716f44727a4f72726161584a63794d52587a70304f6131764b42786142334170594c6538375879494f45694b7471555652324f30484b594c4a72796e537236374a53454f38396e42426b354766516e523363664c5263755271355a315065766b69364b7031335463642f365a38334878384677447058444c394f62686b6c7266736578726666326e35503641612b3236754251382b757063593538706971364548364133353431535551784553536c486955304438592b3456665a4c76514130553862616e61674c7a305565795a545761433347726f64364b624655664b73567a68534b7a6374416a7a327361587359482b30774d556e5438536b5647464b6c4b6a4258615a56473734696c7a6b5a3675315673475357723561795a47515a34754a3050364c6e663339644877744d2f6d6334416b6e706f6e732f6d47416f5a33452f6d3741773431565338507676636e6f6a7a52703146476e3749754e5a2f564c33677a33502b626845484f7a505376792f5752376566374b66686e387036756573666d6456645774666a654c57654d63722b7965684a6e79612b6774614a6c77424c387a45736e2b486f533570526a4d714e30346e5061747643387a3271334c576f394946694f3563794c495947713155594e685a7a3179506651476f794f34366b35386630316432506443775641346a4a53684d4f4c4e697a50326349317670514b6457664e4f6e4336326472636a482b39624c4e666e313336724973354f59713648376a4b6b543346547946384e623338424641503841686f2b734f3377665439426357436c733742315a4f31746d30532b6e4c6e4c686a61713262494d4a36315530644b546b396e502f414943754d2f5a704e4963722f77437964457a7337634f5875675768346f6769676265544d36697957643142727167636c7866616b2f5244556932784a732b624b2b71507965776a2b784c37477234502b34616942317a706d5731486450374e4c7370397472616442637378646e4562614b4e45666a657133506f73314538643159304a72613531527a6d37374a39435434345879767a6b5545786b6b516e4c3248764c5371436c6a355842506b38356b42314f4b7563624f52756453366a6a5950304350636852674573633857565750584a62496f4a5a4a62474b2b594636633269656a6f494c51545047746d6136686a6b677671706632487a4152734947657951492f77435456426a5136466345337a75356947314f68377957476e786745353856394d6b49496757394f664376704a2b594443427250636f516264783148504747673746394e386541486a4f6e72614f37354c6c7875305462716c7361365a76717556467246396f51314b6d537459524d4a396e76356d386372356d6631304348364f687059336d2b427135327443756e4a31635a75686556466b6e6a6369645037686c4564486649756a596d4e4e657353575062396d796d382f63663131453756447076467255366f6145453749457a51354e76597373766a50537a737275586e77517a54353755746e6a6146564e436572482f41464a4537432b5834506a6d506e47752f774352503575666a722b50586a71664a505050562f4d775a6334625247475544386a737239394d75716566444e343970646f2f6b7555513667527a6e7a32535555382b7a314b61654258705453766563566765527638414e722b2b682b5148715635745634763654366250543777426e7a6a4f684b6b7132717370366e6550503074437067313878366b3747613476716b6f76736e4d5a4e5450336b6e41394453396c7057496d334e596369504d50795a39616655684e755235447457656152744457577a42386d6a6670645332744b2b57716f706d6366387470436e53786b504637565656554752736477753862336f6a5472546a48634b33384439572f4d2f43594c2f43664864326250385774307631757068674b32746b48657247673249504a4a6a46396a4a537545412f37485271545237686f366e6c7072457a6d5273312b5066354c5a6e6b5735556a314a394f647a7a4c784845504e30645443385a4f5849386963433439444f58723150546c795261696b714c50354b70487864495570565233334131333955765445547474747441394a5034615a7634784e7a4d487a37305339554e4b74477a4c565246686552614a5358594e47746e57614f70547359396d70796250734f6a3662675778416674786d784e4c774a76763474576454707151422f77436333354f61666f766865452b4b2b6838324c5836772b72586c316d44347435707544414d336a6348697a755761336c47646d332f4d767a37514c59386b6a366a6e54346c4e4676614b65713750377961576e756d30333456714a2f384168583655655153656e766e58716c356a62764f624e6d3755564866494d472f2b5633764a2f4a707039327253323354783873304d5a65706d703777754971434d45765566416e4579474e5730544d78413242394d59496250566278782b726d2b2f4b6f6d796f376a7a6971304d3358722f77444866394e30687a695658326b4f4c6e625a3058564b4d5469424d376970416e566e73562b663978636e72704e442f4e535a34355770524759385271552f4e7351614248412b55594e576a64795a3650707037647833414a44702b476d4467664a5477414e5764656b6649556c6c6678486832707062766c657868355069666a2b6635445058752b514f376d354e50556471555564577062707a7a50304b4e4c4858574c6a4a3374665a4e37786166735652614d7a77676337504f5665525a515836476259666b476171744875316e626e6932525a3762464f33717466536333482b654f70662f63427a71365a6b3350504945694547694c4e785557332b592f35532b696b39656537497a4e504e7a48454f5a6d2b5a52433750566e586363334d7a6e5a7132456457657832666345663157744e383878704336614e6b6a55576a5330376477316238782f754f2f6c4a366b37702b506f303450485931335a386d6a67654b59783057757430536b54705533376c44695652342b535a2f3933786743552f57537876334a6d66377449304e4f735a375752734e36533065706e715235503461727a665a5435466e625463334c6a7a4a414f2f783378756d4970536b314c4d32693538656773714962506d70364879302f5139346d426e50306157323169324f6f344f2f33512b61412f6e423630594e4f70464a544d50693249704f6431726375574f48783750704766504d56385a4c4c796a4e2b5876652b30513437324734685a38696576326245614e4c5433445233476b696d6b62624f796c4e4165336f4430465671636f2b4c4653336b324e7642537a556354584c446931484c4f4a2b3877424c5761573366454a4e6b3154352b514e3839656b6b654a4561343239364657564b6965712f58516c62766b546f4c43694d6834356b347445724865383345514179496a4d34675756347a67352f384838745842376f37486b4537784665626b326c6d5756706456684e6c6e46664b66706e5044527a7652766c4e6646743530506659516f6752593156736a4c44664c4e787345664467713136416d303134735a52322f424f75526871732b456c786d446b396d4d566538545431546b6d344f345034516633342f566e3043394f38723863767953385544386866524c4d7a356366783353625a4456366a594f41532f6a7a386d5057742f6264724869597757494b704a36496539617050596b7a39334e712b7956766266533232332b30624565612f6e422f626f2f4d504c312f5148755a3669717a2f4146492b323647585a6b7148766a486b387332664e34325932706e4545726a6f4a6b372b517a5a4358776d616b6753306b30365270612b6a4f2f68696f33692f4744307a39615055623075386f7950564c5a6a38393952504768792f412f4876555031507a313365545265496549364c76346363465563794278553536733237506254707830752b4c6f636f6e3452546e4e6e71577057314e764c576641542f4146665344313164724b74383439512f4c747a71704d32644f466f397a636630796f646d7a59766a53383930634738786c5377674757727464437846325742472b3963386972753169314f6b5636663668753136512f6977656e2b4f766a6365783568625a623439764e3171377056302b4a79655a4938687969783536394c7869663545793534792f77415838434a347a75645237442f394d532b674f3557766938636f6f4830712f45443068384e395347374d324a6f52622b52356879762b5439334c583158654f6a4e6f7331465a4372684c50755851646a2b4b6e5877672b7a334e736a56533737466c37616c725269523057386a4775504a31644a507565566e6b6374506b47363263374b397255626845727570712f77437a7249577a304d682f536d66574a51653334542f37633676367a476d666c2b443458364f595072543670366d31466d2b6d702b4136666b2f6d3369793135765930617669506876577530382b66556a706536366a37452f534734486d6337673746656c746e5531576930326d745937554477556558655565562b6f6e6b64336e506c6d68722b59362f6b477253316e664a72626649705835326e7154363936582f41476d653745535757555057396b51723661552b7a7251345356792b724552455967557635543769316c574a706b4b6e4e344a452b576c6973746a6e463743637939367a49766b7171686e5a306d7155624137786930673767646b516e6c316b4d344262504f7354374f7056427a47385a2f384141715363766a462b79796a6e324e42496d726f4148772f38657755704e656b3036625a46342b69507046366f2f6b7035764c3663656d574e7162336b4f67336c465830496379742b6647326e73616432326846332f615956446f356a636252494f417355665a73364537615874576b6272395233313949502f6b377671683558424c73657158726a44347132726c586166472f47384f6258335a72484c6a57784d6c6357346c57704733334c4171564d4e594a53395366655a2f4c4a7957397372326131366a5a76622f38416b3350706e58343552624236322b5454396e7856736b4e6b6b4e54747a366330717a532f366337556951367a724f722b717669702b57456837774e58796e535062626270354d44694636356632796679302f486e7962646d74384d6435583478686861422b59654b4f355179724571305579707074616e5134775373494d306a35316e62452f38414e504f7a6648495a644e64665476486132324863442f354c563639715236302f6b64364d37666d65666b5565552b6a2f41497275345742355074346c63486b6d37672b522f4a4654343672635370396d31384e41706573662f712b67464b43733539676558322b6e4a703269765a6b657a447a432b635269796157614f626364585062305a564e303241704b7931697979556d6869633946466b39514b4c6e7763424c6e474245496a7a7a52354b502f414a52682f6343623665654a654f666872346672365764523668726c386a39617877365135582f3462497179624238506151554565636d2f53584f2b71656363333377345077715a536c7445376652396a30497450764a3631374934456669352b414f2f36772b6a342f6b666a656f2b426c4c7743386b586c2b6e336b6d567044702b56792b4d305a48305959764b656c4e394f703944732f6864584b3451375373414e726d30525464577071317261615458715057482b4a4f44354e35542b4c6e6a666a75426c5a4758356864464b72475371326d664b68306956646f4c4a6379644a6f69735a3971473734675154682b736674636f524c585877366b7847706b624a2b575a58726c52732b6d4c4d6176643852384b48302f7a7648505544776a796a7833443338377a4c314478587768355835677a5a317331622f483257724850736842556448484e536f327948514331387a696134743851324f7a66544c456436584a68797644636a576e7a3966326c5670384b384a716638594132725a6b555438304e6d637443306e7461336a554d734e59474147644d314d38305233534e6355656a2f414f5965726f485a4236352b4d3838626e6e707a725044396e306a777372507530556736702b566965515a6d6733564b6455737553636f4c35386870574c707a41452f48706162394c38502b372f67615666335566785431507949384d394950513658315238573948736d4b36756e7a6e314338367a74647a354f6f317358343962447776466c324f304e426d744c596f2b794d547a3669624f476c33657a75586651314e6b326d4b37764b6f38556e35492b6b4666347a2b74667146365550313466554344786d7164456e6d576648586d7a372b5072524a37467461655261584458597374596c38512f367039616c4c2f634146776636394f6c76655670616558674b69523553483139434f7555567335454b416d4c2b4e6e5a3844754661356d61385673467441756f6c464467536b2b716a5542393462564c4543665871746d317135734e67615030494873584d72676662577561506873697267657a74444844526330572f423866503865456f5245414d5066502f4147346642552b442f693536415a6d566347485a6d2b4759477a7070646c4e713748732b54515a2b6877786c3058645a4c50502f41446854682b6942696638416231616b70542f6f3876576e647157794e692f577238557150572f31473944622f49764b5a462b496568506e332f7a6e59574478476b7772646a4a526935336853744c537a33636c4836446d5a71654d6b392f7a737756716a5935333636756c4e534b3174456646796a796c2f7744796844314c384139532f7741335958654a2f77414a703750695070746a2b4c65666e6c555a544e665a38696b725a616d5461707a59784e6c6934396165556c566a396e6f5a5269582f414d634b44372f5936576a53342f4659634d5a50467649764e64764b386538557a61374c39422f417a73616165526c4e646f43505a3869536359316937575a5a66554b557335317745422f37574b41322f7742644d5457497a50475948702f2f414c44487048354c366465472b66384172505646715679626d753643574475627a634d662f484d7353386e2f414a434a6247647a436f4b66576a34326a686b63774f536c58765070503476624c526161317830486f6f6831552b422b6e574e4e355a2f34623542365a395a7063386663476e42342f77436453543361582f6b325a3470705a4e43754947576d794f63526e6936706c4e4b6141684e496d7547586a367a7737517058302f3841537a7876386950574c3061326b59735869336f4e3659567a65524b7a394371502f77416b39542f5544424b79377431732b6659314f5869797a366e326861723751302b354c584f4f6d66336e6131707057326531595664354636482b6a6e69586d766d6e703736352b4865506c342f3535366b37336b2f7064356133414a7161386a7a6a564c58766452544e4745362f4970394358536d486c48302f6d58374a672b7044564c51646f746161316d6c757858694e52667a4d2f4237386366574c30587438573946597238767972787a48332f4c4c576a6a4d75356b7959636c566f753058304d533933377966737a444c503136687270524e787750534436744e4c56314b327a59655a372b3262367965682f34362f6d50346a363165764d2f6b7448686e70666b2b512b59654b2b4f654977327a62656e357a67707062344a4d767641413172433665686e53587748702b6e37667344556a334833613962333074744f316231497572387566376c5835422f6c526f62435a392f51394950522f796a5a73756e384b77664a575754374d5772592b36553976656d794271386b30424b7a36726b314e445047707952435355474b446d656e6f5530702f46616f35537a555754647a2b396d30386a617a395a64454c356162495836476969707963566b50456b44383177464f35436e7156336e66702b3879476b43502b756a5a6277486f6839417637722b6a36372f6a70756668392b5173576f76314d37347452346a346636343539644d64766c637362382b6a4d38513875354847697242386b697a30775378566f71452f30663172625a6e48372b386c2f5a3570654e536e5a2f434a582f6264394b2f454d5438672f4e6475504e6a3248656d306d62692b4f374f6e48703359316c65752f4a7172647557393350646d2b50794c6f6f732f63387947676850734e70475074624774615a30362f6e48725438535a3465473448462b553454723631646662384f746e4b4475706d44755273355164493963497a554a797836675234514d3244756f6a634c55664477577a6963645263382f7146672b4e43335632626f492f464b4d724f676f304a44355877706c5a6a727236565279365356366d584b797751614d702f346d354c5962444b656c44365974504c485342546e687635702b6876714e3568702b472b4734586b666c412b496e58342f5a722f414d643348774d376b7a7332574b68506b6a726762534d7431476544445573446d6337552b716b50324d59544f6a65735a6d4d534e5a663769506f5672666b56365730312b4b584f6a3250443462746a39446b4736327045574b2b2f5a6956326653685a4c696a446935457678696f41656e48615a54324336774a4e4e472b79324c64773863503547656f4b6f7678713873384844794f573351507a4c4e6e6f797335334e47586c6a7063577452665871455359634865614b773042732f7a4f6c48452f496c4d7a75656a534f6249356554482f414e566730315656564d724c3549624f5a2b6456546e5355324c6b704d5234535271427430504336303041492f435048636d6d50323744754c2f595638623852335079683837386a3839394e2f46665562302b70394e6433786652447a3274465069586a38653256644c37783058542f4146527547784d6a5849417a354a323959696b4444332f317a2b317a6a54724557323233446b352b5276686e6a506a58723536752b452b432f48742b4b342f714435526a3547716d552b4f5a6977624654614f706e6c5478746d65624a54525059546d7143666e2b49556536592f36364b546161566d306332333139685556792b366d57793971507250702b4a4d32676449433937684b565539632b664c7050534d354651755874494a37786f544778667649334832654e5a3834473876346c2f77427a7a38722f414d506f6938473842386979504c66545232757a3365432b665255324a78706974304b4c4e4c413156756d7051533261476c5343682b7a4d4862312f504e523777534764394454314f61334c61664164615048762f6c4a2f6c523447457a632f4558784c584762506c7a74427558366933784c3662653678722b757251684a69554d4b6a6357723454522f487941416e2f676675547a7a374647626674503841614e4c507a772f765165757635772b6e6b50706c523464343936512b6c61647a6d7474347668462f334e6e7a54526e7a3353706671614855706d73772b48476f76324538366e4f6759484b784c6b6f2f3172702b7a5530703362743168796978394a6d546e612f7a645a526470696a4f6e744a7a4e6e72333152464e59617952527855446764594643567a73352b6a2b457638413264542b39673874737a382f4a5a4c6f564b48734f66544556527a45712f516c644575796d75567347774a30652b6e557a65304a45506864387a53624e5a3861327152457a4f4946573156646b2b303432324a375738435a6c2f5055484a346f3878334a52616e3432644a35436d587279344a6577503841585545354759414854442b33622b4b6e354a2b7548716a6b65636548656c576c762b6d764e7063753175372b505242346662667a4e592f526773657445784f476e4e6f492b304a354c507838305076766d396b6e437a3174536c617a45327a6552316239462f776238327766576e386a737638414958784843386239502f4b2f474e5576455047637a623533626a386f754758347a774d6650527a347275304a63627557395a52383261307836796b6179444332724531303570484e51615452663262664d6c622b742f38414f42363865472b6a50704c6b65535652546564655a70444b5454342f7069764a38637376794c796a483756663273736e2b784a7867504f2b3176534e6a4861663469496a68586462384f524b7657762b794a56646b74316677312f4944782f387233484d70442f48386d435841715a7333495971547563312f766c716c623972394c345470682b525054617053574d416f7237584837335339324f4a4e4869766c474e7036766a65786c615746354242726163314e6d6f584a65487053334e794e43444f497848756c6f496f2b6a30515133334478776a3166764d524c7034596959366a30552f3238503732575636652b4f772b6876356e34766b75393452675a2b4c6b2b482b717668583731764976486f636a746b554f563568342b6a4e2b4c797a4c50503268486a704546576b766d425a6b716b6c42796133737536642b6a3276776a75786b6633655037552b70684a33746e386b4a4d664e306f6546713449655065565a2b386c54515853515a65666d564f4b67516471536f4f634a4f6b644f4f357a4a6e304f705458792f3466326a70476d4c66394c50376b6e3471666e525436702b6a336f42366a614c633350384143363846336e6b2b426f354e575454354f7832626c7759507959355636476f317457624b707a486646704f397a77397455742f5535323064545132337655667a3976794c384a6f394d76577a316939473774454c642f302f38393876384e62726e5a6f5a6c666b48632f795855694e7844384b306e4b78585067532f6b584f76645a376b712b4a765350324b546d744c3930694c656d3369337242366b655859586876704c3454356a366c6557624c6b5234755234356b4635487058304f62706431346f773865597a6a4d33367058633757396956436a4836316a68434568564d7a57735a74626255622b2f6b782f62582f4f623861505133482f49333173394a4d623034384d386a33664876466946666e766a576a354e427336377270764859395042473531532f74547a30635831662f5942307a5564435038413639504d74505630723332567675762f41416a6d7979777554303873504f35574c744d6c5654386b525a71536f634c7a5776535574624b6e4d577862417062307749715447674f7234774f364141554b52704161373779706a6e675173616c7659326c7a2f6b4d4a6e455a47784d72714b71756d4a7253376a3568374f3776524177747674346a32322f3236507a4f385539662f414d5a50532f4f3874333754386d79344a764636306368797171555577615a424e794562504a43615537696469774a35583332442f77434e714b684c46317a6e2f586d612b6e4e4c3278784737336d474636362b4e556338694c7a2f414576346a79487063524e347434624c736555654e4c72336a31725835756a587a36376e48475566527236686b335578742b4b74715539642f5763545765477a714350676e686e716236304c75737a5056503155792f47703470615862506e2b526839385274396d76527255315a457a4d75747a4e4170317972716f57716964727246707a58416d4f785039524d3172505a7241773961507958384f3946664539796e796e796451623847626679526b2f63724776324b33715448427653355848646647354f384e79715161707a506a50704c6135734d315553744a764f494867722f4a37317231767955395a504c6655716971327831336b714d4c7833354458566f542b4f5a706153702b5648394143304234564f616b686173427358482f414d7a414c552b373161566a54727367556850705a7a466b6b6c477a325173645233367a6b46424b69686d697030696d3562307039786147663044594a6f366d4d4f47487968515472625a3841467a367158614442586c75476347556647756546692f316361506a4d584a697551753635306230794f2b63476e53626e66706863455143303969767a2f75444c6133756b727052796a374376765474632f52732b765859705037436d4957756854387a4b43596a68664b3335686351416b6d422b786f5058522f386e6e6c3276462f7878395766504a49307871387539527545724c546f6d2b2f75503476556d42326e504444676d554a5462477463766c5164436770624f4e486f7539724b4f48327a4672316a72694948704e3874325a317739715a384565626c4d767654334f5257723361333055356568466e524a736d50794b3573713345346a64796b7841307244367152374e783172742b636a77592f336c2f44332b47666c35766150636b535a366f344f50355a4e6f7a617546504c5a354335316b31544b4a59346555516b76536e6c717246676f37376f4a316531536c664d48702b7a546e542f41495233622f74772b75336c4e333466656c506e6d423475656c715574386d7a7650644d496437446270655a2b4b4c494f5878354c74535a47376f464447762f414f68516e7449544c4a786759484f484e72566a336c6f6d33516445393331633871757a352b612b686b343847356b61445662724b4c67676672354d4c70555564304c385a68754a4b614d5742445952354d5833786a37785533662b377a7845634936514b52386c386f396139337947726c58356646426b445533553070732f772b58343839314d65686f667847625a5250504e5a6d79777a3536724f57436d784c6e4a614c69412f622f576b5257496d593038433350546a7a713379334a586b656e6671312f38352f6e3043624d7937646e376f49774e58653064783034543657792b7933364b7748782f446e4c4c4136514f4f38566658483553475774713765746473416a366d31656f4e305570656237593079617a5961742b575238775335384e65333843637a643532564278642f37582f575076654368695a692b6e5144434365736432507350444e2f634839624765767635666570766e4373544e7a386e44726d395038564f66564c7379767a2f434a37734f54565a704d6f2b47715634355777354e4573702f456845796965412b307a39625170743071786e6a3268706c6132653170692b364a456159694264635357527a4e6d5933512b4a4b736e6951476a333366594a377739712f67705033786958772f44594e65325570342b663743554c646f4d6159747a675a584f6231753641644a316e376e6847654f546e363733696c383450516f42524638674f43636771654a64714d6d46706b44754a666b646c4b5855436863367a6a733076617550693657417a704b3538596e3070782f7742686e7744574a576c71566d35547566527155686f4f64313269684849366e33396e656638417475434b67614f674878544a556679644768593845516d596d4a774c65384f394f765550314b5262483464344e356c3564446a305a444c6b2b4d5a7535725a556c476f2f2b503841486d305746377634746c5673767842396c7870716534535359684c377636724e6f72316e614e764d442b32442b6131754c754e335042352f54354869326a34583478354c5035626f387a616378586d57744c7739453869306e4b2b46545743566a2f644e795050783363736d4c3949476e4f6466537a77746e496f7a386a2f776e2f4954386339454f2b66654c61752f67535861454e506d57434c647a7853614e31476c316b756875727a512f6a5a584c7a2f6544724a3579714b5a444538596d674437656d725339654855432f777a38393844394b2f562b50794879544579572b5230753742344c726247684e6f354869766b4f6d6e535347316f522f47376a724f7a334f3549397a5774555a6832762f623757424f726d3959694f34624b2f6d2f356e347636742b6234732b4a34664957366a36736d7235746b77757970664f63456c6a394457646c70314b464c324a394457464c4b526e42326a4e54393533415550776a6e70566d73596e31314778333446656e586f522b50754e34392b572f727435623464627372584e64365a6547553439506b56754a6e36546e467335586d4d63795a2f62355979583431352f36645375553730306e4d624262314765724e372f7336562f6948703138472f7642666a702b5176496647764b5056627862786b315863696e5739412b5065552b562b504b4c654b54665a4e6f4335474b3532396d367978346d796731416d61674b526f736b47626a2f77317163596f4e77562b66622b72685565652b6d2f6e5869336c384f546f5863525444715164784b7173796c632b55576f375473532f4e4a5631452f32364665796b6f4a756643502b5174376c694d3432694e3558692b3735486d376e6e4869336c4868336d6e716f746c6b32526c65563335657a3446676b323755326374564a496471456d6c446b6a45622b4638695578796644336a687366444f596a7279313964776f66592f4b33386b764b664f637a3073395a76537a342f45764a5555356f2b5a5964474635463478564f334e4c69465955315970727349303475676e2f414f6c524755356f6d4d4e556c7a6131573255694e315a456f333939336a2b5533425064772b524c7a64534675396f52356d5676693675754f507852786555734c675964533553754e4941715958486d302f4850377955417750353976357665707765735835582b75337170486f63317350523953764c386277335837456b702b2b442b4d326c6b654d464a4830525650503841786371566346765134496d5037642f682b7a396a5372743036313876754e624965714d2b756b6b7a4c4b4648505a6f4a5947644d484f494e615a364630576647767443376e4d547765682b32394d436148666b4a4d344c75374b4c6558356b6169634965386b6f4a70692b4c6872726d6955615a6568476b6a4a6e5873652b6c512b776665787730414839572f4c6270414a576657623876496e3950694a655a744d314d48744d6e706f2b4b7671744c73714464504e525a4f504134684239584744674a7a666c576451476273746657732b3266594b6d647365647939547235612b586357376f674b2f6336506b7a714336746679646d4e4b654b4d514872536f747474344377504774472f6e6a6d3934624662514c2f49745247663845365a354b70484f2b6d736143726c7a556661657169327753486a77475a4c6e47596b4e427a64695a7a4d79505831364b66684a2b4f6e7056364d2b6b586b722f537a78516433587a66464c393379485a7762504d333037432f3553364a325a53586a3943592f485757555a314b2b2f71744d355444796c5336567263666e57316453317252753444632f4c3839394559764b563566706e363461587141334b664462722b446150695642536532364453547a36345a45716c5a613649644b677758796d57524b4d6f3035762b59473132573232334e7137426433717035446143634856544e4e346a4e5a342f6336625138667a4b7446714a7161745a4e5645726476483554597667366e536b6b2b4f6e3347346e47726866644161316a70474e773137394937767838447a636b356e6e58726a3668657047643554356458507a314a3857736738497a536f3174427a354939544d7571623437627a63776b686c645a543843364c4235325352316a72503630744638646d74612f6c476f76393354385861764576436647667a6a3945735a2f6f2f36362b6d506b78312b5548344a4270654d56355162633872553274326333486b4174626e6c456466787a662f4753576b363770304c6f65797a5432652b5a7470576e64573372694f644870442f64312f4e66303438346337597138743963397454596133654f35636d6856567679533536645853725a705a67316a4875516458556e6c566755416161645837493943696b7733743750707a48446c48724f2f415831572f4944386d76446644664f746678627937302b3849564e5a58566765744f4e55727944756b2f507933746e796d305431474b31376c316a4a7742594d5376453977454c7574486e6e61746161633235743176796a634c38717678562f4762387550546f765466386a76416647505550782b6575334768616e4e57765638467070556d7654322f475049356d4737464a576850396853684834535a694b4679654e625437633950557670327a533230667a6d76376d7638416135395a503765587178725a5768672b582b572f6a3971764857394e6657724f6770546b625747613774534b4466737a38385535766c454643306f4a56663032384b6d6869706739356d66733647765857722f386e7856484d352f78567a61414e6a6d31474a6f58316a663937684f6931726e4a44395869434a784b64777335336b34754267444e30432f7a4475676a644149364e66794b53424d736b665179565a78764e44522b634d734457532b73583966392b33704b64304179694d512b457a645230436335684f7a4f546f5368454530363231585559566b7147554c73714c6c457576657468506c6759755575542f76706578767a56723679592f59664f43576631764a6f574d31553057636b674238536f6d304b616d676136364a33394965714a6e3865576c30694c725578444d5244787041626a41335a6b543375725461325775495a554e3175486d7042637241657535314375666161555173737a74446869787276727a42514c765939535a436d4a6d4f4d43596f626b7230736541636b776f30526f356f73716d376c7447754656565665613558484a6c7a316a4d797071322f355571483332554a41546a4b4b4155792f55545a68646a77364336335a55625072475648493539623755386d535646773830366a514e47307968507948787243613442764d76594a6d2b4a694a6a456962763957764d385849316348786b4c386d7259556e7834536c304a3874564854736f6b375a666a3436566f62557579476f6c636d507175653978564f63617566484531695a7a49674f50367165724870567072373450356476654f305a6b6d68485671354f7a7856463957683832666558574a6f3738684d393374364a2b2f33436e2f384147442b706d496e7241725879585638713868314e445a3872386e32643351366f7973304e58527565344f306f454b4550626152394b674342662f4b792f52436637487666366d4f45596a6f49336e4e73774a4b6231394e4e426f6f716e4d2b5474634a68786636366a36367a34526b306d644c3346777a41506150742f77446f2f774242627634362b72323536492b70336858717067325073314d4c636c72734d71324a586f41745836646e39576c682f77437335522f52634977397866722f414a2f714c31335261733934393458704a366c2b4c2f6b5636572b4e2b572b493656444d58796e786a567364717a6146306e6e4762742b5171316f4e3173314d6d66796937505576637a31385a4d77546155337931634e764f542f313556717a53324a367741767035342f365a2b6747516f3738726238383174547972725665546562594b764b3962727446796441594d62435a6e30466735347977316434303335306866436b462b336b6145307a6530336e38497262794830777850572f797a44386b3176413550475a765476523869386e566b5a2b636a77476758493544504a767235732b507a7432505a4c716551494643356b6732783346326d7767612b65305732786a6432674839635079575a364d557138617850464e716e663841492f473937557749634757644e586a55475133577148794c79444671316b352f6a506a762f6b304e305556316b697073763333304f617030792f59707037754f34634b5057483834504d66557a547275386d39522b6556535a6572596e79627872774c724f2b6c38317432756e5752437a7a4c597a323265744667466c3571712b46504e342f4a705a67564537595736622b75756d6e4659784664762f6c2f2f41436a6c2f774354656637486d6539724d31725230536957394d634e746a705a497546556c2f587970436463712f684557633455346a4e2b724b44352b6a4d4655627845523067455047637a4e37335337536b6f625956653554382f3745576272353261557457722f4d393143486b326f75616671506d52377a4471526158612f77426d3271526648674f7a3531344476786554533333364e416c4e6e31514c625463783064565456564c494657764e647848386a7a34676b32536935316933467a6c4939704e5974306e694e7a2f49357647302b4c7a315a6a76557a7a4850387a763867516b4e585366705957646642342f7164717976474f7975634a45646c467a333065354e492f574e6977506e5748334b4d353438736a56487a3377612f7742522f45396e63385a324b4e47337733783761387732736e7568437a49384e38597762614d3756703867716a584d764a316731647a44686767346a68305536516647445446505733724f3259696669476b443375586e304d3737684567613664563034395749746d2b4253676d3972443976507550367769454f735759687a686e7a324a3141395465756e4542456d74653174716b2f4c375a3630464e37474d456a6348776b36357a6735333941582f772f692b4d7739716766594868766d586c54457a35506a65697a3432456b725a3838797a7a3635592f5a5748536376686536685a4a466e452b387a635171397a51456a695a694f4d6a65507766386376527678724450563957394c7a4f37795637704a4d377854776f4959595a36685351385a646f6145625536576b44714253535a544a30682b2b6c5833443659446e4e3754504164737677652f7659356e34612b6e2f70502b4f666a6d4256732b696670334276746d56716550794e38303353386a3839386d3951716b6453586b4373396d582f4a65515748782f3266655a52716b436151416564504e712b7a65387461383971333876416575373863507a762f4142322f4b48303978764f2f54503142386671472b5256646e6a65703336486b65427038646e71306333547771766563715645736f557141306b31724b55714c324a73596a7a37364e715469314d446262423872783979576d6e4e3045646c6842713055646f59743548795a4c316970615a535433335330566350676439744c58635551453739712f724b30576a737a7742614a3138746445623058383552524b74523174643875686578444f6f48366d696c50526c502f4142507067546954332f6c696c4238687a3344766a33444b2b5636356c41325936302f4a57786258327a386c6337566b6b594b7a4755506a4671316b58666e2f414f4136414a442f414841324272304a45482f6162517669334b2b322b6e4f3432766835626d746d4f6b79344c684c37514d63512f4b5247535261617a56386f664b5553546f704e6f3030464c58373031536f376149635452313444592f76365a52517a515934587a397046704638717548306c38516b5072666c68596a334d614a79526a475a5247435242465278764f6a476d36586555574c6f59746e36596b6e30644143465073496b686e322f4c412f535a516461417337576e6e516e6238335832584b525253624f76596755352f73466a475530666f2f384150334a50324f6e6e48347a48514a36433637614a35307445356d504d5a626b6b5a634836765a78765451664b6c3070577a506a542b6c41337637536c5a65397a676f2f6f48437336657375454d38763242447479476a7a6a426d573868587a764e447674436635334d45695974596738674c2f4650466538675558507837452f543474756252396c723535337347315847536b78674b2b71746642594c6e324173676f4433702b525a39412f62377753436952664f646b5973475177574167344f453579754b682f696a6262536d3772557034536d4d562f7748784a4d665a306e6434663942395a5241756a35374f543163374b684d7773633669687339587a4870687839684e344b51656d682f7766374b564a42712f6a357779482b67515535744d63564d2b6e51784c6c7356476d7239726c62532b6f7169645333724764636e6c517a395033436e6f647037336a446e4d433646642b7155726454775879326650716137573266422f4b30526f692b524b335872784456783055316e31686c30506a59512f4e585637556e38507639676d5a6370574d544d543148386d33362b506b36573368552f505774316d3779536169566c46484c552b5853386f68626e5766502f347a454c4a567864396f7470436b324a6f4e665565796a364773356a4974444b79744d4d3350484c696631756431353652736b52713943625931644371774c744b6d70383265503874683657537843505a4e516436766c6a617076515657312b364a46695972326f4a2b6a427356507a7635446d664e4d57505430594e4759696442796d437570763250472f745279316642385033412b2f5538774266446f6f7a473248707a35646f353337576b633034374d3439596c54766d786b53305a333373314f6a4264705a2f3854593569786858374b63344141394a6f716b4f78796862457845786952764a364f74306a6234727059326c5179575677512f774666643173734c5a50717a59546e6a6c78304b2b6e614e47577978516e535078642b4761766f76546c6631674e722f462f566a554f6d35755a444339377a6d54664244646d577a5879535069725a71636f55747946726e544855357041546a486d616c58453947704e70306d6c666b4c39394a6653547a37316175705272662b6c35334c67486239527457445234715a72754f764263755a487063546439346f36574a2b7278733035756d4a7947714f56746c4c5769765a34514e2f69382b394c2f787438556236612b6b7a48542b55464b6356336b46426431394861324f5579325658466663346d724c375337414e66492f724b627042534b654438594e7878613835734e47504c504e5050504d56354f6c74613163624b42696e7a2b7634753653794c4d776b68446f6b4d647839314e49784269535a3261784a7a30756e6366506141703036644f344e5a744d736869626c32765242724b6e696843464e4b5a4c7371567963736d7367324d74584d2f61644f6c4e7a6145724a72666b416b68386a7a2b594c432f6e73313256705254315a35504736436d7542586b6643683161464d7a363161723136636678706c4e65665277375873625164682f4459516d447671424162504c36744e5450753979714677464e393271673459744339724e524b71496a374a772b575a354471463131704e7053364f6b7939797a56376e6856327270747a486a6e454f647a49537255444e4e6852724855756b306f593139636b6148645a775a5a61506b2b596a615062323863364e62727a6e414b397974695550724c6f54354659356353306b384c5642714f6b63544f76773656705161336532716332487965706e4c6158496d61445a6c5736662f3841503139656f4b586e455058544c706668366b32446d54766432542b535639724e5447374d6e4a6a584d542f7a38384a6c4f552f56484d73324942537661357a39703677495a74326330484f2b7871624133464653787376486f7a5864302b76372f4d50747a6857426678597064303670464566665a476c506633314d62473270325946582b52477635755a4765765043506f305a6c6a4a314b79484d304f74537a7146504958396f734765676d63705a2f7742594c46382b6369624e434337424f59346245736473702b5679655456507a4e6250727a536e736254644f345778794c5a3248394a3864636c532f67373047376232726c48322f77434957783474546e6430716d5643335848526d454b566f4352644831564c6e4c745447737933726f71544844385847724768564d3033516c45652f487a6c62396d5273764b2f716f706f376f2b367743336342304364664a7832444f6a4c54334d3255542f656d3478443366654a644436756d527a4f494164374538626941387576586e31614d7a74694d6b6f5a705a4556463852547754396c6c4b536a4a52516d4e397a45722b485065494c2f414e52744451575a66796f4b656d59695a36426948747a335879715a314773733055556461786c2f6b326a55704c4d7a36737573703153744451614e78636a5877666c6b6f3971446b443741633548587a48356c58444a575a3246775639615131323053536864585343394265647059547158574d6c396d6c6d365661756f39767a467048774539476b4839434c367456555a5771594f316e53745055763074526d64666d566f5852503432794f65777136652f4373705635626a457749485579723937696d2b575937553755436d644b71734c3239346132343331324c793251417047664f515735396b326130706265492b626b3838614a4336333467503455742b5a7a56665732457538653879386b384b3335646c57704c796263626d306f765257344d31683331302b524d55776d4c55452b62384d2b53746a443479796c575558732f6276395839566d49744855626a2b46657158696e6c474c6e527071624e354e486e5a7a383157597a4c666f615653724a586731634d564447594e6e55305a61437059383750754f437341656d50392f77425a5445783167623965476571766b75563476356267622b6176556a64432f4f54506e3079372b72705258615771674b4f42524446314e5859484e6e6e41766c3531546a624a51376c4d704d786d7464314a6763783766576a78654c5a6f6f316155312b4b356431302f386d33524b614b795075315a7077616f7a527a3961346d79357553484e4439754f76365a787a7a75366d783664396c7641616e2f414a49666c426c626948512b6a6a644878787552507a4d3150497058375135334d696a5658624c3946754b785031644934787a626f687266423744306d43686f557a6d354f6c4e4b63383059484637796e566a6562374964454c4a38362b72623164477a46736e6f7a4861736557366f3064756c3675644a6c7156554c646e312f4a33374b71444b615a62656c316441495a35566a645245616b5157376c61733451634e4f6d755a326749304a54722f41454c4a534370624a3452304253333243414f46344e7172583279594b5675334470703062394d786b594766557a6f48505431553856744f664e6f3275796d4b6f625a6f554459494b6b4d4439782f376b6a4a4d6745424d524d7a6942717671365a364e67704e466c7333656d696670746e7a31776a4852646271655346557059544a6450724a78337257717568505a6659684c4672397744725473774b5a32495430376b352f73676d6e65784d637138394b47575757776a486c764f69684674725a3168624839646a477a45416453347955536e4a6c3559526e4a6d4455747866696c73664d7a767852646b476d6f6b4f32506f304f597330706e346b32486444782f484743484f7061427555684a65305066522b42757a462f3470492f735a773649656c4f4d63584a68325a68306864343948506f56466c3674315264783152706e624b3061426d6f2b6e504944685566736a386e5737582f642f5964466b65574f6a324d4b71754a4d6a3667634761427a64783761744f2b50507530567a4451547661763741782f4f6c5a45306c5141487955665a5532624862792b66555864676134445a48675177315154555254535432583846687273304b374b704b305130434436707a5755726a487150304e464b654e345a4a53663955784f496e756b53535479477a56734a4434774f6235436958586c67707a35633871726952654e5479584d6d4a6d6c6377514d57306837592b684d6a346a4e7a6f4264504653776b6239747264437a6454703968434b78576671615a4556655a6a7854577034393257367770326b53763076363878704278664f6f65424b385a6a386964345a754b7162747a4e42746d67336b7564705630766f734e756b426a56395a30354c31506b3738597a63453830324762694f5144426939514331744675676d2b6d366a2b5246397256652b4b58356b2f52354e517068746f573455695a4a5a38332b6a4e53723678424d6d73516a7a47506e7472703974732b7339756e61336c46667873436438304f644839546d54517a74526468304271584d53757a7a2f4d52467a34762b484244714d452b76545a5534554632717164523653394a4e457136455457352f494a4a376b55726678634b5244736a356c4c64536b5a767347316e3744386d516d78334c2b6a74445535456d746c58616c6c47686f4e646e65316f5a4a4d41574f2f3256597458464a344a412f746866422b36522f56775038414379666a7a46447a6d61763675675a3054324e2b4f4c7165445a6838337674712b79716775556531624f696f312f4935314c68345653307043313549554678396373307a4b714f6c536a512b62515839654f6b52463456646d4956735775504c6e6e5537347a647871597a596f4f57664f38486a6b5a727768474a336a386b635441706a466d662b70547a65534c36582f64735858394e334d76364a6c2b33413533412f58565175453345436454435939533552476951584c6770714c6b765856726a6c6c31677234755355526e54794f7165744b757146665530394e72763231737a4163644657645549714b702b666d56506e356c78504a48386461344a544f61717250396b7566557556777454554c5a76684f5a4379506a522b41674a756c544a31545a65705678476a4c52517566764872496e36634d776852342f4b30714a326e396a334541744f6c507a41593862386a4a2f36426c4245494c355439724f5232536842553071514c7a6d6e4476387777546e72714c754b6b4d2f466e556c49496e5a4f6343574638332f30654258767146356e583433752b48535a736d77365858736a5758766d6b533650345834713044576855667a56447a4c6c6455306d396b436234452f4630666238425445544d34674d3833593873314c655662727457667331764965525250586e71596877356337534d6e4c4c72474139795930666f324f706232672b6a7872454345634f376f4c4b5a544d78585a745478375063516d7578314f716d586a4758583971736574765845786e4f542f592b6d674361336f4a792f332f723459682f515652496d70434173346738326158347235655553675854476a7157326f6764444b796755504a756751664d52765071614f6a5172684e642f5153523364696e463470787469766c74477953594b4a426144596269792f6f316b69583433632f6e4b6d6831387961424f77776161776343665944503539546b336634765a377754706e39714857787534566437714a39644c73366572696b7968376f6547484673417a34435571576c79544950325a32344d6d5456703571324355305a38686f7461796554572b75785641307258635470534b4f7867422b7563575a2f4d5149513531487342684f4f69345a6858485245344449596d54465134575041575430646d517066584a464c4851395830527a554a713157693336744371514d43456d4e54484b6b576e41716e4e4a633048526f704d4e4f742f66757558496935797531477758723648374e59693259302f5847594f755344766e434c75563937535a7a5035336c574c545775636c5764746e6e5939316a777337335058333756776944436d36734a6844345a4155676d67346b49425632786139462b5862496957476a735641316879504a6371755034446e635758386e30364463664a65674e5836363733706f2b4d77556e596a52495733686d4b4673757858335252556c4d2f4e497944714b2f6c324b61444b7063384e48514a696b6772767772422f36456663436a45326b4e4d63504d32716275664d69464f6b7178723546616b59714171314b63497571663970792b635144765a2f705a313355682f32774361425a354f5642705746546c51764165726f386643667648554f742b6c2f4651752b586c6a6a30426f466a50325a67635a69644b79613149424371733845324a35474531552b69484b41746c2b7662524b365949635934614937374a31354d7649584f527a36502b6333556742396d55452f74424e564f53334e6c6d4c6d6c6c6f396d6174616f75534e553357746e48506d3151696a32436e68306b565651734f684c55744d7a706f396b5966746e514d72374a6d55586d6171724c4f4d6e54557956623173792f774442484a49353236347447786a5257507659385656755459664b5568772b65384841384b62522b347557626c4f6d4e5a72517961566f365832356f586d4d7a674e49353948534a6a5976615874645266536b44545751704944766a3332386e3636656f5a79674f616854384f57315675695a424c574d4c61332f41426773675555793066564d6c4d6d42722f684a4a66493447506d6c795852376358794e346a714731543974645041532b743749344a705549306c4a6c594752505653366d676666524f6e737947384f6b304748477a2b3668552f7876385a6e6b5173485454356e69512b4e3757686b71626e3747666f6163712f4a55672f504b6e7566512f5068736568616a44357673756571476567584f56302b7a63627a6e356a7a6d4d566e36452b6a394c556453564c504962492f324f50767a43337a5a55387663766c694c41426d6c326956644a30584f6a54547831454865582f57647950764667784138617430356b4d6d3868334b65333539376a5833476c6c6573585a5654315a635975324e68326c7236435a57444e2b6a6b506e766d596b61454b702f4c5a6a31396658554e4e4e5376484e5a6531693856734f3678464734682b4e31306971702b2f56636c576278696d3343586b47476d757833526d2b796e596a2b754979534f6c6d6e473649335145346c4c657653477a4c314c4644712b364d7769363258566d7a2f41422f513076355879484e5975674a574a795938597564675742663942507367523978796162416e7461706146613250706f716862322b5745476555756f2b786c655230704e647457703249666a6c6d71596c6a46734148496a765a306c6d6f452b79744f7a416e41766c503574576a754856794b2b4868447446355651637a386f7246347974435450585131656775566a75665a6d6c664c3165326651557947355050367842724c3238617256696c5a505039537275616e6966336f5a4b41792b39304b78526761736b4c554a5853356643714868414953596e4a2f72736d524f49586d75497a3339344d37486d6453394e5061323151534a75325448736d644b56307a45765a6a4f32732b2f553538384a464a437443474b6e6332656e66436b4a6f564348334b78457a4f494178642b56725155543959325a32706d7a79556154582b4e64582b3969622b555866727551535949352b6b6b5847486541505253314b356c4c6b47616141387a506a586e675759332b4b5638435179582b507874676b712b466451395758504b75735258525351353438585a377162495a70676d55424f75364957643454363665554878452f6b6c7a37382b6d56764c643072707a743257587866486b53777857782f416b79476546716d4d2b6d5a70503677634f6f50676f6961313775503247774d486e75447657325a6d655235652f43705832732b7943374b6a5258664c446b786a6e497146614a3565554a4a4c66693448734e797050726d56584568574b3272306e496d57544e704365724573337974584f796a6e474e6d707141577671347154363873616c6d3932677a5353774f485a7878756e4a437a6d486a53754a686c6154597763744c614c75642f77423454354e4e47543143776b4b326f4f71557a6877786a376968366f77434d4b50305a6d34324145484f4d4d6569474474465a61584f48494274466a6b35644a4d30624b64546c37593874676c3833316e4f713458434d566c516c7154392f77426e325457763270466e4671736c66714f546f722f2b6e62357a7069526e744758744d4a4630657a4239656c656c3966376e766f4d326d7759306e474c693658747142327a4a6f6e4f7675704c6f53736952506c4e5442334f7a6e75677246512f544c563353512f554a672f613530524575494c39435450684f6e72706a4f5978314465702f50693035387252717175583353354758754e4857716a425048417a696379687a4554304d30454b5a5338574837442b427075364252774b78387562506444547769714f576b48637a5777767033675655636c463343635449324f6c6c706f4a6b37496c456b316b594550322f383348707039346734314c584c5872492f614d2b56756d7961325a784c396a714f70716559566f69615175623436517537386e4f5548387755453577664945312b485a38674d6f7342554c6532746d434b2b34637a2f6c4b386c476833345a77344e5538444738595449345763724650534932586b4b77576333764b5175726764366e756c322f764f564b5239544e6b7a6a7537662b6b6f735a4b6c4d5075476667695a385774786d75326b4a6a523755696b3437755841627679424851304a6532536f6f4664774f654365746f4746363178314f687a6b4c367171506b2b61536b636e556f312b38316a51546963464d672f6931514a356d4371456d557261716667707068476e734b71796a6568656d454947357a6c7936533347482b783971564678546a49666b726673794c343859435437504b414878334178444a4233547a324a2f77414b492b4a6b703664793039566873616c6c67393478767769724e436c52725531746a635161386f716d78317344514d6b38707161655a6179785565652b65585139357469476d70334a525a6d2f486f6336745a4c442b4e34625570344b77704369664a6b364d4d464e6c4d6c56504b5657486f7a464e506d74324e4a556b374b2b37454d7156735a6f543342597037326b6b766c6a36365532796b704b744e507647766c326c3948356f4a354832665052632b65797864334857794a3977746c615a4174647376424b5637566e797a3461544e332b66566e336d6745622f7144685a4b333647786164446a6d6842374a304a4652634132583772386d6947634f7563364f5053377779576e72554a4566634a75486f687266352f77437539652f4e7449385631736a78662b517a344470734d4a4e76725a5a305230684b476a5270437461614d6d776d30496f6344426c4e6651662b6b2f45476c61593638324271313546357252726c396d507966596f7176452f6c35733647506e64304830517a36584951414b446f54635773576b3266337a55464e30454f51435a3330574f764552485341476e3159645378637070666b315a542b687963644b4b4932767951533253434c61696e36335047656a484835522b4f75302f3853427951502b5335494e346932736e505a72316b35396455722b71526a4a485a353952616b6a44464d34724866783862645a655378514143585a314f775270644169494a446452625752745261584a6d3464556b746b6576744646584a4c6273557a75306174625776526e5064736a544f34697a7842504772725159482f752f6a684b397271326e455a46673443594a2f632f66316558616d514f426d4a3263316638414b4368304c466a6a524b6b7a366f3151357159624b7846423166384143556a37654a393676354b7475376239762b4250696b47747136745a336c6430756e6e627053726f2f6a73433672465a6a2b4e3536562b7832535a4f785744726158624f794b44334f6479756a6b43556b34387862474e3954525870313565566679456b7a3536364b46626271546d56642f342f7a75644e706d546d61584565507838374c6337504673615841375739674e6f73446b312f64353437782f307139466c58354e45316c506e657775506d6a7061386b75706b354f4b367859723865646a7a6f6e5758337077373965546e66335a2f6f374d31684a547637507874614934794f4748557243307a556c4c7378674d7557336e3863674446655447622b50707871586a5043716443367632782f774368535a7055704947522f77426449476e4c4b43374535326445697a366c485771746b6934642f4e4273356847693141463162436a347866564744684d5442774d397a506b2f71303773387764464878696d5a333335445073793538793137564c745447613571696d71656451442b682f2b492f71577553593373704a674a4d506a7147434755393762375870576766313878565750464578396e59674a325254536c536c76742b5a533365314a6737394d4d5150716a65474b703671786b666d5048514a79434278303931586a6e794b62454179382f6a4a3250716e427966634c413738567a6a4b76347736584f474579394c416d58353334544b7755584f70335a315673696972756251553936304d72712b3078487a4c6d4174426e43455a3366544e6f6e772f672f774231726275664872774875782f73652b4f506e7a50794a38736f787767452f4a4d72474a565578544e626f4b6754707a5a6b6577524b72584b714630724571363177394e69666870575933784a386e327234523333334d325138652f4e6449615231326b776f66324d63504e447170382f515a79727678757761436c4a66732f626e6d6c4e4a42387845624773354b39592b593134774c732b717a7539516e4d71716f30652f4f2f6b2f644451767a664946363075566b32344c4a6f3130574b7a633253524e686b4c574f307665436d675a4f62747737506b4c326b724f48476d584975513572554d6f484e6b696369476e56353350617033534e4b44633776786b61663241526e38307a62756c5334484f78784f6364347544465364574c584a6f636478396b6c4643557a7a63564d747259666c46794a387569676663326568786437796a672f376c547455514b70466b66495674354372356d54426b5a376b30523968795a76696249536d6e30526c6b6a5865706a76684c37564e584e44344b7664547978307844547a6e546c664d534850557556656659735750363352346879474f2b72593771433539766c7433592f685951722b4633753637366a7853326b365774346c6e39416332332f7134317a716852504b365a53564f356f563254505569642f4c616566786a7543546b7353632f462f754d472b397a6a7041656d41566c367a3731656436663678536349483433697a784768306d7a5a54776149696e7a6452444d354c6d304a2f6a336531684e4d766a4b7730456c616c6758625637554453434257774f63727238654e2b6b456a73396c55443649387776487446584e5149325a3761446e684a59786d585a394147484e54374f4c6d6149424f477768673545656c7378346b6b47334e2f412f78744d5532726d546c6254544f334e64417a646e66477958477a51304e5848594e4552474a6c742b2f356d2f574c2b6e51616e66335266376c466634322b6d6d523657656b586b486a7765724768414c6462756865417977785a616b3354534e4b50394b6a58395053643858572f4e58536c4353425a534e6a49744e4452333333323749386a4872662b575265722f6e4868506b586d586c46506d6e6b30744c6371523067466c65482b4c6468355a6c714a766a6e7a3670754a6d677371536f513153696c644b6133357845726b336658543278614935616970764d2f4d384737796255387058733056724c556c69527a69396259415a416e58524c70716930306b397a677868466a3130453036563658566d7233784a4350534978474a4545645a6663725a6d526758543971654f566a35355474306a777338584c6130366c33554e355059722f443664517a5566473538367541702f315364496a706163574e46624a597474753347595a4153767a6c785448315161456e5074436e4a6e4b724835633552484d315378667977464d4b6275554c3567462b6d2f6c412b4765513746726f73725330486e4b324456314a66494e4e4276594b626257507a4b74416763744d3744537861754738304c393344396b2f557569597a474a377875422b4f763550683652656f38666c572f50457a6b656655656c4a342b4355616c37746e744b455a7463344d544c3964644b53596379704b4b6151536f6d6b5276653036616c4e3164734471622f63413875394f76586e386350786b2f4b72386566557057483668666a31352f6a3056654d6250446d386a7a68386a6f7a5737506b48494b73336f586f5275592f6a6647745973302f545035514a78642f3359614554532b7070337277734e793566373150684e48343154596e6c486f357a7972317150783349693150346e7a48783742394f7458716c706e313753316c7a7466683644682b53734a7a7a7669525338654c73597272672f72502f414130372b4675582f634e4b7646763735507135346c354147334a3645656e576d6e39687a4a79722f4c647a756b45347a362b5456655134756f6638506c735457764f593530302f445561506579666849396d6c765a4b7a474d6a587631762f414c792f356f6570506d67626e68766d506733706a343561736a3259664576464a353337453356756d6c6258752b544c416e36597a3646546d41327163595758715331333153645250656e73326c574d5458634e5050582f41504e6638677679617a382f6e716a357a3357786646746248386a6c79357336504b38643161735253616a4a6b75497961657979625054336a477057502f786b74584e3876467572307070557032597750557a364c656f66676e35462b6e76703736702b423765466f596d7a3476343946355a4a695a575363754a755a666874486a766c4f5473376146744c4c7335764f6e456e55725344703752706d49564f7342336e327a5362566e76463061666f52366161387a4b6649386e415a5766692b586b314474343663742f3043685475367a6e624545596a744c58325452374761357a4e55333757776c49563061346a55744142512f69782b50586763392b6b666a4d574668352f74334e4453306456574c34746c56686e72797771306870304664752b742f4378524c6841536264626d7143594a51536c314d2b38765044722f4d527a512f4e6a2b3346364d5654347333726c6766796b566c4545462b42416e56584a6b725178643948587157663066645551746b56523265595a6e53457162687a71685462335772626a4e525358724e366f2f77426b4c38792f424e48796238684e33775863307643656175377165562b4d2b513065492b724b386d654a4e4d575034376e53334c7538697a334c6e584a4b464a2f43706d564f4a386d51444b786d746661744b324b66462f70486a6138736a39502b2b6638416b792f544d64336e70792f6333693843713871326344766c326c34684e5979694a75374c6b7342536449633863384f54723537692b343155797939782b7a30597a6a6d375179394e7644725050664c4d6e7746586d6e68336a36745a3146502f414a443558756e6b65495a4c466e74534f35726230613239464b566b5852446b3776634e5650524d67424a756d30784562753652656e72422b4d66354b65677a6b5a506d7667313237686146633268343535763477382f4d66427448786c7a4a635675686e62486a793755737736536a2b464b414e73782f7958316b4362654837715576532b4d5747744b62657a4f34733136613730615153314631366e636e63443255615575704e6f7353324649575433636f464b68425361516c65626b696a3746673147644f6a7856466441557a664f366e6b73504774617072336b70382f45314f4a6132465039562f7870343574437279397631794133646450494e7352742f696430586b755a664b6e51676f78645444767a31546c487a557972306c6e614154646e614442445179352b30645231667353346661414a61416865307a61647364773970483455666c33346a36796568617657624e304563386c692b495056484e656f6369584f31465a57657a7a6253756c6e4f5754642f6b467a6a704c635a71374e396c53506c424d6638417438725530357266622f704731486b507264643554797933456a38596a68332b564b43335759537039564f6276666153467a717856796a554455516f6e574850656662516a55582b414851565970347a7746652b4c2f6d4c2f63423079487833302b775053483074777354657a45795536784e7178382f4937624470616b6b6e37304f68396463355548616f356a615537342b544e6d6237584e6d645052367a75734c4d32764e4b65596558355456366e2b4535767174354e6a79616d6e4a34514f5250343558354a747a3062524f7a7376705476526f5755615757734f564d47362b4d462f487147793944366137654f4e764c36372f304573384c3953664a7433794c546d382b4a4e504f2b4e46714d484b3274415045334672704b62456a687a4d7a4e2b317052722b4f69683742596c795453722f55676d4d4a73544659694d546b634b5037796e3978712f6379652f686236574e637678354d39462f7264355a2b79744c653579644e2b4a34786a7150713335733649466979326c6e465633302f5739376f35766a693531657a614f50326c76384174486e5a6932374633494e776357744d794b5a59307a6e7452396b733655344934715a6742564b2b7176342b314b3563446d574a4a4a414453686432434a397a55377655536650493974627568464c41726b2f444547464c4e4f6a4e6c634b666b3477714669684e594b57642f7741505246762b484854794866332b30782f626f38423953394d505654317039504d2f314938627943726f78384465717870504874467a325138793879356b792f647461437469682f5863674a48422b34446b30702b4679693576614e616163746262523643765458442f4141322f486265537a42332f414569394964505570784f64526c2b575372665336462b6c316272396558536176657a61384e30374b30687862542b6744784150616247386470314c7878335748533777337976784479544469623464366934336b636c6e64616875684272475665326b573565487158616432577a6c6b756f447061356d7153436f2f6c2b5a4a766d4a6152356a4d546e6a546f43336c4350422f42737761504f504a6358786e50424f53386e614a636a676c596968336256733164545172344c425452597a6f6c78715272736d577474494166576f6d31754d52454458505838762f476631543865336644636a7a6e78547a75627946644d4f6c496f38794c64474c4c78374f3969732b336f4e656e57566d616d53447067556c61547342716b4e554c444b385265733532624d447748666c4836553266696c2b55486d76676d642f7743563547373470352f6d51594f6a6e366c637533486956506f717757506f7839685a4a47374273637166695753445477456d45707a3038366e31744f337664504f63386f374f66322b50372b336e2f6f356469656c48355a74386a39626678382f6a7a42486c62565464395176416544596c61646c5a6658366a6178654d6e6f463671424e5334302f3966334f46744839637572374a466f3336664c62374469642f63763841794d787679632f4d373174395876482f41435737613847386d3873716d384666553636527865447a54707a2f414278564d7870397961567972536e6f54534c5948592b425439722f4144643372304b5454527257653349336b2f73362f6b58344e704e3951767731395a45525a2b5836716363333074304e646c365167386c6f6e70686f78565735732f53545a596d686e59617035756b4e43584143774b784a79592b303655787431612f423148704b2f47766433765336512f444e655a63626344794a6d58507a4c4a754d562b4c7966556f5659334358484b6c654f3250517551726c6d67356b6a514d6b7258545264396a6974475933514e6c664a2f56583151386d3862583439346a7059664b477a4c737a59657578595049396b7375786a7578775764714d4d477233446d72704b7459745a37416a396e5073675863367858646d5947706e685871522f6338682b726c51512b686d74346c66354d376d6f725432764a382f755a6d3771457238615268363067796e2b705a31356f664d615253343967613531663841577047665759304f764864413654654b6556656f6e6a694b387a314730386d68537353485636334b78484c73712b76566f57795a5965526b534f4a70537877537a30494c2b5257324f68383655386f625365453172624f3063362f79342f4d663064394b4e566e6d50716435486c625466445048746c6e696e70503832563542355a356a7336474f797a4d487349334833446a654c457073637a33493648786d4e4e4a4550513230394f31754666692b4965462f3148386b3871395750557a7a72314238726b784c504b664f66497466794b79454b4a70732b576536716c79706953736c384a63736f797057436d6830786d44336961682f66396572584661317245637452556457585845393658534f684c6c45764a794f566d5a473166515466394359315546325666364a79314d4832455a4f36317654357750676e66627846752b6e6d54503544356834373450347a314444383132664838777567744334766b75314d39356f74374e473169353230542f706764634d5a4348364e796b7a6f396c5a74694d7a505a48394c4c38595053436678767772302f777246573448692b483439346c6c57323177624d545730545a36386d454d3039486362533561436e73696e6371336b6b2f623533665145486c58337872327a763841585562592b746e676e6c4c66533379335a2f48334f3859302f554f50786679657a77444b38714d4a5964627a614c4f4a4f4d693357712b4e432b7338696c63416d4c485141487a63416b7546625a7336544737462b79504537344a2f386e712f754d2b76767144752b6f333559372f67766f4c6e65592b59362f6b6e6e2f6e2b377265506559624e656c7431452b79624a784d536f524a4b575656414847766b536a7359444f545539553158707a375a6f556a476e7a625058723942304838422f74742f3271663765597965726e7252366c72395676492f454f3362325870657068795a5563752f673055497558347834664d5347617a6c61476f6e6e7874457572707a56697a367a4a7150336a6258396f3175576c646d37384933452f484c38372f5433386c5047664e4a50783858344a6b656e6d786f625068564868654c6a707748337865506164534d696e5869374f7865462f4f44714574544b41436a692f70307159366d6746446c6653745365654f59562f367a6139666f7a4d586c32703458742b706e70396d2f41444a38444f3869706a38483539646b54744e574673794e4f7a4c5a7152355a585554696b694f424e45334a4f6b4c76366d6b6275574c62624372736e77337733316773623572347a34332b534870316f6132634f6a58354234534b64655457427543554733666c35305777733565476b70307235776f656b546c7448534f38784639356d61356964743867743665616e70706736382f7033672b706e7162366d6570377043666a343371507237732b746e523178366e61576a4430655a6d546e767839445355453349562f57626f614447486739354b52784f36654f7a625750415848353756366e7179764a64587a66547a4d6277754845333162437063657646527351594a7a365161655a3544457a374f507247797a5734436e2f516f73706d5963784964666330363132357245646f65475031667850547a47395676504d623076386f64357034574675332f452b546143455a306c2b362f477354716a6e5151732b47624e48536f4d6f7751736c5572765353753951526448314b3774745a74586259514630695850576352596b37653854503841787a52713738546b385749364645597255596a7973666237794a33444c394d4169542b796f414a5164743348734768314a5275637a6b6e5a7336596a7a33746f6768726143736e76447443695668756438596f365a7137387278576b434258507430384c566b3867775a7237436e313856306748596f356c6253475a76786a384c38304f72397a445877324a4c394537762f48733979765a4d7a4d384a376833742f744c324d383044313530704f794d3868736c6c657a4f2f6a3755726472464871545162457063633136626f7a73314b445a77584a6a484c2b7936755a712f61664c7239616a6f446d74723872304c582b4d66696a2b534871483574694f7a387257383338713876306654727465776a51546b5557435776764c4879445165586a3476466e665a6437354b4f2f7164786e7a2b7335356545366b56722f4d646e764276534c7a443167384c3163767962575634335766685137477079444a7850495755596c67665131695a5776446c345735496d4f4e432b3951384b4532306d34436d63507a636b326973384a4771436677712f4b4479663173386f6a796658447a5830753950707452364d35586832766873414a7343394e577856583032445a65426552574d6341496a6e4f62374b43676d2f6a67706b547037326b567079373744716e70654353656d4867656834792f553872386c302f4a417634727a6a7a4454546666546c6e6c75674b6c377551796e43527777753530464b70562b6e66432f345656674a59524d326e505349486b382f75632f682f345434542b4a766e33716a3458366634334b502f6e4f31394c6238366b386862647173755a35507057686d37766a326746532f474d766b36614635736a545859613448475475542f47584f2f51314a6e557257626643504c6a4a5a6d3866716f3159707275364b676c6a4f46535430437472574e615a49714b434d58723764564b51394a67742f77424a477267714c67683352573078776e684939776e396c4c38484d587766386153567361555558724236343556336c56366e50522b38444432382b724638577937636f7066316f5937735834394678453877703741482b2f672f416976792f6164575a76343171504b6e36322f682f77446b723665657466717636626176342b2b724b664e7648764d2f4a5a4635754834503552354e507054366e6c42543447374a755a69724233504637484d4549695279686436306e37766c4a494f5236466458547457743531493243782f53372b31702f634a39586e645a344c2b4848724f55724e51687a583766696c76672b54434a486d555a477451506e4c68642b36466c632f343171366d393567787748384a41464c6530614d647256714e7a2b2f38417964762b347654344c3548366a655275394550476462786e4130504b7472774c5539584d35766d52356d4a4c50516354537855766a37734a795a3536786b2b2b39704637552f34712b4a566450385a6f784f324d3233666c484378783657657a67557a39597772574b7466506170456262587030704f697951584d3738784c6f7364516a76744e6a666e397a46382b50326448587a42714f5474324a56704d724731576a6c3245415a774b6342555430547555706c4532584b324777333578664b766755382b7465372f46594830536e4848414944426f74704b63744f42566d556e663452425174476d6735493053324b66445251332b4c73463375595037366d6e3370427678756d51484467656c622b32762b4133706c3672663277667934395576577630347a4c4c76556c4733354a364d2b706c76474b386f386671394e70717334396a4871545558567732616c3374375079697864396a692b594a7a514e46504872367436362b6e57747578316a356a6a762b4c50344f2b52657332682b50384136706553307a623368666e4872592f7733795078506a6e7430714d6a786d356e6454536f306b7a6e4c4b6d77633855635559534135637839453365384f66313033315972377974666871506248663841677a6b655254493864394e764d764976536278505165694c7550344e54347034586d614859584a61302f3561504e5a636b716d5a6b6c4e7932384763674e4c794a5a477831506d65396e72617536306669466765697634732b452b6857396734766b4f33357875616e75693061394c7a6a643037585430546e50337264426164496c5a36455179584c7235514e48735647384a4f7a4e4379596f7471577647656f324639515078372f487a7a32687668336e366647504c636876632f36452b3350692b537754667a56304e47646f3134707a696e34754668706e5177677259373538354a45432b657a744976654d7a484c38785933686634342b68766f2f6c61463368754867596d7652436357302f4e53694b7738333973374b576e7a4d543071425a6c756e5379567444467442507a304d42522b2f744c616c72645a486a372f76622b6b666858676634355a666e766a2b584b6c5666356561722f4142746b456e6a714a4f4d386877646a65304975497a636d5a49357447675773326b37564252326e364e6748374c6a6e6c394c32573032764e66436f38792b68784b3649724965566c4c787649754150516d35336a565a37466e54454f6737736362575436416d49437365664330422b5548425172747278356536516c467965346e36544547756c33574c625249614e5073787147577731316c524f53315469533363347672666c6355665061464b6156455363786d6f3956763841386e732f466e51386f394a76584c3161304e5446385a4f33314d386338553861505a566e5a73487538556a75306165706f7471644f524a4c546c492b79776d6c586630756c7676506a702b4832792b4c566a386f337839656637446e34732b62666b3135662b545872722b515a7538573874624a356f37307438427730357332377177577a39387771312f494d65696f2f486347704e454c665a416d56773236544565796c742f76646a54327655696c4b557232652b776a48714a2f64582f41722b33623663616634332f675436544b332f5551584668336548656d2f684f6a7237656a747a47334f66523556356e61746a4e4451354335667a4433747a2f7537487373436b364b507254583266573172623957334c2b5965635438716679572f75502f414a64397a612f586e3037396451384338664e3176682f6773767037353346347776527264506f54306f54526c69586b6c4877736a34703767704e55786f4e6a61484e4b6b2b33543039485478464c5633534f636e6b5754354e6b4d753855386c784e44787a5a6b37556d7a4f38696d7577743253755136305348636a64396a33666f6c33396677707a4966382f6531746666662f576b54787a4169334a4355484d72363048796343656c784a4b5557632f5569354f3644733735766136357679646e54336e662f414b5a306d437a69543737335478375139486e3975583051387138352f424c2f414d323950394258504f50472f5658796373697044394376534f4c497a386575743165652f4e347134674a6336496d4d59663675415a77454a6e4d2b3179612b704561754a37366a617230342f75732b70667067585043764f2f434e47375138614a5370646e7964576a3354385a70756954754956354237306b58794d534f6f796342363647635a41416c537554392b6a5033466263305746702b703339366e7a50527a6b654e6545656d614e786838664c7072737366497932794a75664e6f55366e4a7435315762517156315156544b6a7639356e3979646f7a664b354d56396d6a6a4d32346a522b5a6e714e36323165706e7139366a30374a654d2b6d474436672b5961384f30792b4e66387779476a4d564743644e33475a5569307377325263714935476a41514f5970315078467279303231727833447a574f726a486a627256717362723266656156337a466c424f33585a2f49496d65374c357a392f59706f4c67796f6230356d6450384166784f5a4f485638686d524b5564544638746d55432b6779397a5a4f4c5771467057695446702b4f697869437568592f343375615877703933753979694365505a38774a55756d5557722b39563077302b334f6a624b53707161593646313049374d5773484e4b686e506b36786150742f766b7978347a336d5451695239364c595258586f64513133785664506e754d4b314c56554c4336756f4b554f6e6f4833442f6a386f49414847307a6175686b364c524d7a69734432702f3261345338462f472f3064673044774d5a2b7034667065514b61334e6b652f5032644c7966656f71506159735136746859747953726e567a356c43624463414c7064596e7a5061654f72613364493761377532325449526f484f2b6946745355756c6631546b707369766a7961554a6155743161374f73574b2b6f6d4969557a4b6f2f644d6433754354416561582b37462b4e32582b542f716436593566676e6d4d792f4d6654616d72443867505237342f77447855666a4c7a4a75706461694a7a78593666596e30506a71596155325555324a397039622f4146312b7a336e5472615a726d746852333437666b6e6f2f323550543758394c647a4f6d382f6e56724c323645366a4c484f7953334d335750367a382f4e4c6b2b65344e44596f57336a442b69705548316a5746396c6e395876534e616432646f322f785037327634786566387a2f5433314f2f484c613869477838764e64496e6b316e424b786b4b394c61632b45582f445a39354f56553367764141366b4f4b5630334f6f504f665a6278787262674e2b2f4876795939424e322b483031395050492f5233436c427876784636506a6e38624f394a584f6b6f6e306437566c35594d5832746678756574335745314a48543935307764506c65507537787876466876724765583654654d646f7a4a3850784664655578334438626a5054655a73646a694f6d4b2b6b75566e7853792b32346c55415a6e544d576c5743714a6d387a37552f696e2b5935502f414a5a2f6b2f6f3758645430353950382b6e792f79765448526a6a3047555a7a6a527056773536353531655a354e31415636426b4c4a7630396e4555516153346a544f4e644e496236576e337a7931486c38386c2f414c387a4e43765974302f534f6c576151372f414a62667972563438425647394e6573513064642b79644647364547457566324159556674333656372b397361756e50532f51632f774254416a36324e715a2b756f3048636354413636743048412b533261376e794d52524f4f674a4a4e494748796442762f46464a67786567617a36716534384b566f6d72484d363437352b50766b72545755544237335055717a6e2b373773745642694342446a5a6c75623052654b326162656279366768497634566349364b7070584452524c524d68482f54307a2b35776d553851795a43667279315676364332723733694b45386e4a58753931626471517a7a4c54436b4878717163332f545671776363316a506a59644c2b474b362f2b484d497663545038484a56374845314331736341576d7666617737532f7742704838682f54333065682f4b48776a316b38376a394d76476650505370666b7562742b51643339444a723867385243584d6c574d486a79584f30744b6d7172394d6c474d6b66582b4f59776f4e504a50363566614b54625a4e61376f72596444504976373150343865473633692b6e68597671443670374f4e5054745a303174565135324e35424f3672746e69656f76545431392f69393561476663744c4c37365a787a52675253513267593452374c6559746d6467314639576637342f71443537355a35452b4c304238506f6e38695466443558463570534657465651552f776551424e6a6f7a33492b466a45394d33732b77594f53376b35494e534f4272583257496a4f2f694b48384739515950576e78337a74336c666f372b502f7056366536756d4772506965452b4a426937447238782b626a61792f4739445733714c4d2b6843325375655874424f6a504e5342414c57544f6e744d625a706931725747586b482f67336c47696a4d38657a64504f536d7052553564764d7669664a622b2f544d4f59617555614b614977562f342b5641684f2b5645365a6b706e4e425553736d4a74574f4d634270636a44583562354671353061644b494d4a67527a362b6e753579594a376d30467836677570494a2f354a6b61627145684a786a3653787861684a6734364536544f497a50634c796d384c626e517338663078517a5838643273584f585a624844396f2b56717a62384a44443743767448794c537347675272567745326446772f5753464554626c7a484562422b692f35612b76486f6861586c6e7078366e616e6a4572387a4f566f592b5a613757385a316b3361773438636455756a4c79577169665173734f682f77314162483041755a675055397564744f6c2b573150587a4865723857667a4c3947767a5438505a5a36662b6e592b6c58725434566835326e3564345234783531566b63386d305a6c44472f79587871664c7352546f4d4e312b78526f796336546c484e377144463377304479616d6e62536e6a62645777734a506b2f723570656f354954354936337746325a34346579667158534e6d786b4f527861744f544634466c437148574c7879476d58556f657963506d576b523935755458464e76357649614d2f334a2f77416f6839492f523363314d4c3146325a2f4a646a4a2f38657873624e74694738744a302f3841464e305a736a4b5958475479794e4a37766c46557466302f6b706f6f2b59454b32304e5064624531486a362b6165734567663248686f47664c4c4f76515a386651505a6e4e356f506c4169714b786b704630756535344f51312f574d45486a366f572b6c5441535a394f637661715564466b5335356e305756475a4a537569635a756b4c415a396f474f446e58483050396a6836616538706d62646e686745722f696c374c6e4d636137686d6b377a37645057556766477874464e4c493646394a66536c456d384166656f7333686731704f5067556e4d35734d554f7973346332336c32566349554d676a674f4f2b65514a786f6c396a334d52386e3342624e39635764364e48776c33686443687636594e7561335868416c464363756c306f3438345a3264523968463172463230767663316852504f6c483853784339514570714a763178486a68427a477554304a772f716b35377873482b47666a327235702b5233695068793441323774323236466638414978632b6c2f49734c4e317672636c7156337675344f576e67452f6f7058377a645238583659726c64576178534a48764f2f47667a4d724d484b394f646553512f6c444a796454616346575a44457678356441716c6c536c4a7a5558716a58525058444d326359454a6e5955422f445237664c76474a7a346934377654373075673869784a4d547365623937655a53525577344f645a703156456c7a485758317036763742564a7a35322f424e2f3841446751673355467974783046362b555950706e35766859746548762b48612f6c324e6961554c384f5a6f3059693833515a70426241394e326b75566531394f4f68505567323054726754374a526f3666547047364a32353552474d7766537243307638413577494d6e4c373533707332616a595063656f4a3863484a3737622f414234584a423039704638614f5045452f59543267674771674470747a544d783849543877332f5376314a5872532b7076685265723369587959313957486e6d6b386e5638696b76316c54513879376e2f56305048314d5778617a623035486579384f68774864573545576a733232774f4f5871682f65702f477a3852504c764d66522f30322f47334a3845382f6733372f44764a66446f5043633374306d7846586f56786a76366f596f726470614678527266384156394c6c4b6631572b67464f563056396d7671525762616d366f32663841546638414b54387576572f6e67573136686e6b2b69767070644a4271782b6e2b39744e6f3951747a4c6e364f717a53322f48416c616e506f766a477131792f76677877355254657a3258702b356e66543036626f6a6d734e3966442f41466b6b566e6662775a41387374556e4d356a6555554374742f6356686146664e4d644d79504d306e4337615838414a595579666d56326f352f72744d4d3572453952624e6e6d7667667170366565536547657558677542354c346e356c79504d312f426469624c316333577a745759582b785756653668513063755a37317668456d6f6f6a61587a523641567a4b706961326d615737493857663936442b79755034644272666c6a2b4c36622f4a507832334e5553383738492b6b5731722b67753158396531635a68395556532b4c2f614c65344c33724a305952745579675074705958702b7a65316539694e50556e6d2f3868353363565475766d746248633934337a6a6d4b796c3534504b7463456463374a6c463877516a3350577a7674436378492f6c442f42716d415858313561394a466c6c72495479424c31357870714350717a744778444c442b3156423967316d4e444b4b507273304261756f526841542b7158375457615656442f7878574a4f4b395656666567685568366442323948536964526653717545576f4c6f77304c6c596e345874634a4e4b6c587730634876546e43517a6131564d38755732317665424d4537564e5a4d79476f33654e6143332f784f676956664764613665634a364370663255556778496638664173496e7665544b2f68586f677a3631516f7a716b77457857744f71655455363252672b3752732b574d5a55774b577375476e722b5238494f2f665366797a455a6d4d434d786144555a63776367667333576e664f6c436e39576c424f674a636351464a50783154754a545853785939424b3168382f44502f53326542734236552b6a664e796a766e506e6e6d4f4434586e30784f3052584e4f584e4e392f6471776d774c7a363643584b534c4b4a54702b4d3166416d6b4866736744322f314672597a4556334152712b4b38355a536a457435705a4b6b494631523572436a3051516831644f6a6d314e5877395a4a4d574a4c5a4e30314d4979346f33634c392f31496a5633674f75356a356c79686f36686b682b6171656a6c4b612b71496c5338554d54434b685a443754373075454a422f77433076304a642f6f49686667767238677a38716e4f706b48465171537854754a5174564d4b6946375744513453476a33462b754c366636352f514441334d3534795a586a783947383665716f667a6f4e513576474c6e6c4762394a506f72597633664c2b6d653853507675352b76366d596e475a3778365966536e583961507846394a2f517a7a54785845386838323857386a395050487649764c5045423064477a46612b6a2b55445a717a766a6f58384c6768397a6c444771314b477a415643534d4b35364f4b327a5574614a6e626762376a2f656d2f4868384766426f35586b6d427132304a79504a5a664a6648306b6e497751566970765a54617648634254396a71465968617054707a425469346271426d586e2f68372b50326b4f39502b37786a65725764463659656b7670686c6a3733396870395163584f7330752f7959493864626f65516964632f4371334445616d6a4b2b317a327965377673543077456f2f772b336d7462684938356e3573666c42366865652b5365612b4a72383238675376513873386f38563875386577786b7a3858553852785a687a634b496a374f6c693452597536796d566e65357272745143366c59644476657a53704556724f33694e58744f4a6d6b2f77414b394e5046664657556551555a6372624d50487a43314e7a51312f4a414a4a7a7374594c4f366c695a3434654c4b646e416e62326d663748414577547030347a3344617630582f412f3139383373526e79656e3274342f793933786176664971797a57654f425431597566666455583161765934737561685847382f374267736961785971444b3272534f6c754936662b6866384161423872324f4a5435373535463450486957766d7a636645736a30664b4b70307268334b644b6862592f714a664f6b716a5677536e736237442f7a54326b2f7159333971694f6c4e77326b442b324e3656655035372b6f304939464e47686d795431376455514d794e4c42586d6e3354733648755458487a50537868436c62466c38785149306244636b57355472326e754848503144386a713857395a50505053653973456e696b58504973697676746d54696c7867794b6f7379544e496f7961483570554d56325a73386165664f486630494a396e566a4e61323852415079627a664566786e3846542b4c3370317336322f752b6365482b6d487148363336587679686930764d7450372b39346c34737338576a764b50466376786e53793735737a6c50785537642f624c6849346f776e6d6b7a656439766833594850616d54746e465a6e422b42744e453448386256554e47706a4a3535652f4c4a456e35715866354f506e73452b6838617a506f2b7750363248526647673950667874394e4d2f66775a76482f50764f2f4b30537a6a6d3775576a523056486e416633737650526261525278726f6f53757276784253704f334f5969424a4b656e486a65324f6c594732666f562f5a352f4e72386c4d714c314d78747a7872306e385733495a39487854453049716f45613564706e74385a6b6f6e7870654c6c6f6f733170305538304d344c31416e345464497073376d35323970307163733832424e372f774435502f384133482f547a4a6f38713850383138507048506e704f77362f4b6443744c394d37454d396e5555594c676f6f622f48314d6b46793656652b6c44665a4d66462b2b4939723062634a714e5350573338482f414d332f4145336f37355236682b67387375706a5835755a613330357a536e6c7668563265726a394f3347536e6d65533838584b36777070783936526d5035714a756e546575726f326a455746482b4c666b48676543557734573954752b6e666c414b566d61795836666b754e45315761526463675a5371574a574d742b774a2f5a716a636979623678737042675853586d6b7a2b5964562f7741426637306e6d76346a656f666a4752354235736a316d3943504a614d4d5055624d76306437794879544168386c615563765048656255355638484e31384d6c7656443130675461524f662b366c4d4a324776374c4770573052586261765a48767a3855386f77664b4d48473873384b3030624869336c6b47645868624d4c417268726731596e61654c586a3149637a345a2b35646953483368774f382b51682f626949793869597445346e7431426d526a487a672b306b326364386361682f54436957663331705533534d4672477232714531764832644a70427a706b496349416a393536384157585a57487973456b75574b716b4c6f71654a4d644d4570512f4939464171626e7253365659653068623033556d49433041415661426a32464d346d4c66696232695a712b424576672f7533744a63724b726f2f7274452f7a646345764f74397745344f45716a35444541552b7279674f795445326c6f54396e686c6f636a6a486349534a58614264316245702f6a796c4c354f504c3244594a455052522f5766377a3134424f656443615032716165734c586849687235457a77574b62537a36396a5842477a68554839724e454f7039784734352f38566758577530446c795847445a6578393750796d5676752b716a33723448533778394c30724835495063737834786a464a2b597a45585542374134442b6a6e524676566f5a583831444f726e65466966305170536a6c4b4b5673446f556661543751456e467a343346385875454741726e487a545a52564e4d696d4f5636442b70772b54736c6b5a597978677559457a424871366e63495a54373745384f596e653047487a39677a5454377771636d596d556856644d6853576f4834557a6b41723070714745376975585845424b4379785a66564c684a397674364a2f346a32625143336e786a76676c4b3461574e6d3639617a3759565075516d4b703741367676456a7a4d6f71352f726e37372f4150466f44305a2f36444f7671327a384b49756c33335269665434734a5a5845696854585238647066484c596b5a654753514c3551366b45382f34634a64434865573852623456355a6e485841764d71386338716c306a534a30554c66636978633731457479547354327a336435375070716d49484152696b766b4f6e665435666f50354e6d7a73757a6650664c4c6a7a6f314f64353136676b625275736252486f302b5461537456696f4d39564b6332634b68597769396a3230702f77417a42326433767866512f423950304668346c5333334f42757a453567346d627154665275376f565a6574504f6d474f79575962465556357259636464346770644c7a672f36784d522f673036366e634c4b7a4a336a5042704b5858324c2b657a4d3257564374795369384e564f544f636d4a51754f4534394a69696f36396241354c57656b7a35576d6c4c354b6154474a6d426450684f78355a6d646d705136734b733346783950477a6e716a3068376c5069326d4c4c556d53373755384b645a6b394a66622f62654f4d2f66472b504e706f7267626b2b43376a3574475767693566647352515a3639617251336c3650472f45365a4573644733557669366d314f687247366e3755326638416355784b666d752f39567874586238704734336a5674453948337536305766755045615572674f5974526f51436c79382b36586439745a517953315a2b685a6d77694566483673357249667033424e55532f4939595049737a795457626f625a795a6d6a564d4533696d397264315a36434f6a7943372b477770756c394c485a3758444c372b67316d6347774148715050374953553256774c43357554503138304f37525a316a3649493763665530545876327456704c54714a353056756c546d73466b644a554c5a2b775736645a31673732465248752f4d5363743775714d4e56396a2b4e6b5770744467664c4e46786c454668696a4870525975644c767359365970435754552f4831524970513455706453617a4855593350314b3554374a737057764e5157316173744f755a39566975715648526b304c576978724e48482b4936564b6c35795a4e494c555032426d57546a57664d41647059363159543146715650555379304e674b5443546e64484a546d4f716e717a6b6b425474375334334568496d5a6533322f6f52584d712b6e336941465250724e61444743476759635056583962464d326f6e65533278624d4f65376b77776837726c7539716d39593177677055774f644d3351434c725579317968612f5274496155554f626f54325335307374464c76764937325a6956575766437634346c546f545741752b7478494f36417841356a315168344e34305347782f36666f544b6e6e586448497957584b44756a33512b30714f437559694c76574d5967542b4934337547516943757976674a7a613147624b5a4e7335734b6250476839715261755a32585258504d4e79787736443756505444526e6b504a75696166666e42324d65544a346d7662387343742f4a3957375530336346394a423064424a59305a533148596b685976526b6f5649744e4470315a4e4243636f4237434c515348612b7557705462784552304549502b4354324f775753725a7939546561324b52685a79546b583766563247667339493571394b69465166422f722f594e4c684451535542496379545779436c4e646a7a4e535730437141712f32367271324a735854795a4b317a79746f71544a37775452796a33684c336f64506e796861586a6b6268727a7566646c617138356538697a6d6e4f2b46736d724c6b356479744e37434e59323679306b3571676438494a6e5366777965333231746262383546763333776c6a2f414d556435614e7a3665313133796f545852705a2f44714c5831334b4d7544515654374b6a6c49482f7744586b76696d46564e594b622f57573664323441716f31424966436978394f6e51617579756956476c434d454f4d48317764494f6c6f5349316d2f487044786b6f6a395a372f4149695558543976436747387a6a6b324e634675577471337a323536394f754b765061527446476d6c4233525574347837703949662f706b62456c47484b6145502b456b673843796966413675436d6571774b485075766c6568374a5a4366647035336b654e46716a386b61334f7345436277523976552f4966773847686f42424c626257643867665a394b3666366f5755696868596e74717031705854547273546c6d576c5257764e756e2f5a4d6362554f5355332f62595533396441674e583353656a336432666f546163543546335379535276514e3473585761597a6a45766c733976794b462f317672617365694c30696c4b2f36434975746f5a5962654158632f47667075523336746443363954743839576c775154563737496d5754357763487046325a742f56556d53423970684d7644764b395048714f724d5a4832764c7a35524b7037363546344b63687a75743433543079487155444f79694a63696543626a73564f6448755577364b32727578787867576635422b572f66542f437277313664756e7170514b6f796b7a6d757058486f3647664c4878327263363265794e74466a6d76555769674a3754764f7377713448767237754d35484e727a6a314f7638683363654b712b697a4b6e5270706f7a566a38655a4e6d6e73336344364a517739725379316c68516f3731425058646a786a615a4f5a4831323056694b35366541704c796a565471356e775a2f4f4f354c6b56637a6f4c394c4e5a512f755155627848455a4a6b324c537a71596472764f52684f6f66725442784e625a75576631705473774e54742f54783061574a4a7149716d73424f525446444e52796c5638504b5a5669707757752b504879795a6f3264414f6b50762b5a704566374f68626278457a306a4971364336364e3556614139364f546d424f467064666367624836615474632f447473622f41434873716d2b656a736935772b534e4e5842702b5a5367674e504b373858547a796d58775539436257306363732b554b433146613842576654486e38623333454d3956544f4e554d594a35536f7a36393735316a614a745875774e646e74626e7836306e412f68373033306263304b7a36325a334858367a55657876574e6d30456e4b7a4f414b56493466516a2f774a7042377537436f624d79472f573555596255634c4856757132357365695279624a527a33744f4e45726d4f6c393872495070676645306f2b59324a367852682f5152444c2b434451454d352f65477169434854547972525459797150704b566f4d446771587356446f4f2f5851524e5134545a7a7647752f594a6f4433482f41494e6275546e5a2b4c4b597936336266544c784a4e2f4a45324c4c4f304a737546636a3559333349484f5851346c396d5251597a424870524653357642544f506d617352782b5936722b4e49307458536c4e50683948452f586b35705230464b39453945776a506c555154646c51314f783245766b535a542b3865587a48326273396a4b4a4d4c62666946375a494950362b62334e4b62516e7a6a2f66337371544e51327332796f7a4a3557544c377a5061346d542f346c777942566e7a4734317a664854694a314a69627137616447554771794f6c2f787053737244524f3355367a5066704c4c782f7158446e2f414c6c557366596b5159716c376e4f415a6d704d487463326249333931746e576d75795451706142375079333152777a424b69322b2f6a4179334239465a7059444a702f6265756c6f554a46696942794f35335130585230566855434935585136627371726d6b6c45364e425453756d2b5666493130737935532f52722b4c6a54457a47646a4a4153415a576a56326a4e51464572613770656f37724d76723049543572357365663045614c34573078724e4d382f656462617731714e43766d2b5667484741577a6266592b4f654f6a554e536a3752643244692b53555444783663784f6b714f6635533070786a30476636676b4d324a34504447626b2b682f51574c4969316758715a4d68634f6e33566b4e414f70386b746d4c7556504d637352414a4575566b38627639424370436b705159504d47547259476244455a78464b3942373659625954526f4d3938567068634f61396f30715346496c5a636d656c69524965476d5a795772585038414c7a67453435494339334a4c4c36482f4145714c46726c595345547571742b553661636e3548464f3553316961674d6a364462347663426b51556b4468456647344e4b626331694f3254714331724f7a7a4f632f373836576f75376177516c685073387063365243505176542b3067344647595a6e5945702f765961726c344f54795936596f38766c5661656f305a353265366563614a5354495330454e4d77556877754767446d5572674f776f655847557a317a2f432f2f75416a2b50653262343338686d367434716e59644562726f7856385956756f4d4849633479464e514e4264707a38374f396c77496961796f346170564a444d5771675345744c37445a355a726e45524a2b425031793730347976344274647a3367516d685a4741464333747153687073666c665a67466c4e6c464b784c744e33557932554f4f4a5a4c6b5931516436627544786e464736582b67596354337468664b75734f556f455436794355356f3761772b334e6f4177324a34363772697a324b587a2f616f767341442b6e544a393449792f774164546f577a584a68347971616f5a307442784e6f6375456a694f546c55552f5553356a502b723852636f4d46386d2f3066342f4c7a67536e48797730466f6e5349517a773573454b644b537970394b6a62786b7267766d52516e6c417a52735770616949316964523078675a6749414530326f4c4d6d34584958666679726c4854373774525a394c3278642b5a74634e4b774276652b344f725748784d42537a58785972346f5969637845696a427a714c56646c6567586a4e704f6c54496a753269365a636e557a64717a373333417a5053424d7858494666566e517162374241534f41425345376163754231447a74524c4a53336c475779424767376f4c66645671396e2b746e43664d2b64785a39524c716e36333454636f534d7a613170426e4e504e705834345232546855716a4d365554463935544f4d456361414f346c4d364e682f615a384170624d5a3937712f4a786153397047474c56464d4b476b7544346c35303837362b55496769343661436964654e466b5346316674577537677a746e4b64497554396b6a5577307349434f677655732b6b326634417556516a565a784d47665a4a6e6f43696e72654e3674496b4879465778737370636f2f52574b4a6a50727a747061414a54514c6a3264757170734c6a486b30722b4a6e4c68487a507a624f5479426137506c495267704651427776303469542f774250397359456e2b5934687142624a2b4c7368794c45566c784b614272635873776f61356e367872324e4a53436f39797a617850732b4f6e32657841665842484b4d7868574e45566e5a4d395646443636584330306e44584f6d772b2b786153687157784e58654b486a6d664b42652f38413541576b45686d536c5261454173696a5a32504d6c4d4e546a754b793230514d6d734230397445744435316a595073346152496675667476736d2f543267776545694d744e4b3854536b35424b6b57556f6a74564a79487646314c64525a556e764e52493754534e3332586675663576732f4566317741416843432b375a65765536784c5a79415652753930445344546e6c6f78587231595a4668515832523342494345573046656f2f6c582f7741312f774241424f4e6b6141624c6e646670584e757a4b5671585758626131617138786a4757486e3837566e716f3046754e58476a3878414e683248536a327044504a694f42323861705273314d336a766a6964626e4c6e7a4d394b593368514f654138416d664374502f77414763786163435747316451745359466c5861504b6576766270336935306267356b714d6f444f33517858417074335072564c392f7954384645306676397152704d5364336e3742344a38566f4c717939576a755a326161466c41486b7a4a59564d77575233724757776b44443961725371357842746237506c4a4c35786e53453447492f73742b634358476232544431485067502b492b4e44563539483356356953376a796f464a4a2f774341455854657742374e376a7072415474754d636a74754a7a55584f30666241337361746778754259396c61716977756658543947765145756336594550766238667a64366e6763556637743270306678677a7231586a4232547a50787871364b623837484f5052712f6c6a4a4b4b55433532774b767169315954327036636b48412b3278314a4148563750384135746835385a61583679736161486639766a302b30312b4c72522f75317a692b36796452592b5a30586e433557506d2f4a4975676569617458746f744c6a7033543976544f4b2f30432f6a2b6850506b357161363950506f55584170527648303253616259733956564a517a307171733754446b365172694d557a44784a4b42566c50473030534d47623230374c6d3554464830745837506b6571704737314f7a6d6d717377614772565079784b302b324633507270486e47704e6c5a30786e38774345766b324d69644f64424e4e6e36414c7a674d75594f586d62713651354d4c3052367a4a6b7037766551494855454830644762706b62714f7a4265714f6d6d6c6f6d656b683342354c6d3263386859654c4e654f62526a42466f5857557830564d6744502f414a615455774f565363544b72556e6f6f645841756c584532664d4447306363564565373877796d2f566d4f6d68566d7048694f7a3135586231617552436c5a61506a302b5839453836426632533047352b62485351796474417237364654396f39334a46322b5036667148675a6e797a6a6b303538476e6c486e59696f4649716556627078684c542b48787148763276635450354b6745564733324f466148786d5832486346756a473775443746584c68665930664a73742f3841486a3437386d646b31557954317a4c3066485a38782f4e484c6a714b657251466e7a663473522f32667032534232663638437972626d787434344576696f38656c6e7147694f4e464e6b4b70574d376e336d576e342f70487a3246677373466c447059425a4a4950522b466f484d46446d35695163534b38317650414d2f477774484a36335a536d625668444a4f7a3463655a5674476c51766a772b696241626f5a647246374447506b35544854506d2f4a4d6b4a56423771686b3353566e5a6965357a4b614d614754354b614a495431687839426669715779565a3954382b7059787232693067594a726455414f657a323373755453414870776a43336574314256354a50736d796e48773354567a6f436139727364316453714d3958303650356a445a31714f327335634e6e434643686d2b6367736a78763141334d58575332626274666e55737a394b3953312f656a74794a38724a7a386977657a325563304d2b6b6e4a726572354b5945706d70736e6638693075536d4d384a4671355071747037447544506a5a6a7374454d3754724375655139747a33443943364a6b37724966735631543641424c78553061557a6a536268476e367831325638426645486c65587167664a394837566d5749754a4f6b31534b347577635378594b50542b576b702f6b684b3170676b457a476376755655517557644a724e656b38424e71377843724a737876496b305a5772426c623155534f747176586e795435354e49616f574375756a376775525934477a68384c5539636f7a344858566a724554776753544f7a30365338712f5267334f367a4677535546503175665650656778324b2f7667724e446845337565766b744475723438623577554873654a535145624e544e6d79324741426d36737a53586f42395445716d4a755a6137496e5a713852384375505053642f496b445370517048414e4e466868395977705479585368347a646e54466b72306377596b63363662756a705072706b59665536624752715441766e7458523372556f536f7331493842784b4975365670337a41714771753653744364716171553536696d675768483866544277786372612b69737348397353796564684b55706f4c4161514e3348665a496636307845644977506e2f6b6c74773065373642612f61524135362b6434637856532f416934485230424f566836446864317772535848527036622b46304f45435762725a52567044532f6b2b306a5866394f446d4f66422b6d4e612f6653412b5157503979666d6b3043466a7750384177735572686b31507a5452624f4a7831456b74586b36334d6f49717162626d302b3969382b492f63355971537958526a686b3075735847576a4d78787558336b6e7a54632b795876443436455a37775838596e597654356a6f744f6668534a304d715668547973715a525355734349427368635a4f5779706a785766466d512b30414e584a7a2f5558374d6a5a547871786b694379456c484672364c557768582f4d614f723744736a58594b3149676834507a4444566b38487644374f7372357a5533745943564f55784d5469513138346d7a61386b35385559387735344b4e4e4d6c6568705443364a6964673951555555537a6e6e782f56576d632b5372344c754a354f5a4d6b53796745597a47656731623953664a385846305761326a70513534365543416456343072554c5469732b6f6e515472477a4d756353357a4b6d586e4730503436706e314641713479705452665469666f4e44504b2f567679444b304f5a324a41506a562f3869373657777057504f33716b466f5631707a6862714c485071565579664d413647556356387a4b446e2f5a6d6165694b654931783874386848795053447a63744c5173704467716a6169756e787a72596564314f314b7270306e4d55797650693150656f4f7a55657745354864463569556e324c784749774b64506652475544343130546e51742f6b6b2b426d58612b674e2b51674a647657307531557a6f4c53665048446b706e59337168436159776d6d4932644e6367796c62796f5a505a5733576e79324d6f6651322b4c4b5244726f4b4455724f2b34796445746a624d6f76657269744b59485746653769396463734c514c594f7662715945503841487a35584b37366f6b774334516b64724431533574314f37526574504579387932444b502b4a3855474479756b70314a30577663425a32634f4d325848564850655a5562554f316f753064756872696b5a48725a6d745a5066355a4c4f68624a727061767638535031484259434b55752b543561516e4d5474434c45304d334e306d2b4d364b6472524b504f476a504b3679427a7036702b4168633474755a466e757a325831762b514a73397747344b54436e34612f483950314668592b663545384b2b737a6f47457252356f6371434230772f54316873584e35426c357935567979796c486732546b6f4f4a464d4f506363646b5a492b5a4f664a352f5958504b36447861654b664435594f6c717a434d32773234747a6b36752f5971336c5145476f714f52337956516b374f4f344b4f2f7951586e476e34524c6c526665566e374655515a4475322b517159785556636c73794e3849374d35795378305833554a345172573746754d7a707a6c7441394a507a4e732b7449684d5a6a786763617637794d4d6a66472f534850747a43414b664e4852684648754a664e4a34364869726f44706a35416c63325774656c4863795353646865304b7961385a77633372756a326674576d4277682b615453376f675158343632684d433633756334316a7a74774b55706b53545a5a4745376c6a305843615a6c6530445072452b2b6a70416276414b696f446b7853456a6c59376f4b63565a76544637313655534257744d6359365767745971425a6645466a6a454448716a4d4748464134716a736242685459743759582f54632b626e6538642f31382f347553734c34564a754c764848382f372f414f6566443149636f4146432f774249446151637953483658376b666e2f515730626d48544e556a517069585652636252334a786572686e38436665326a71524e4a672b6e3778596d45304a696f574d65716d554b5a356d3053632f303863325976656d45506857726f63556f7a2f32382b4d41464b2b424976544a496439515046575332677173747148355a58716b727a36484d55552f7730355943774b6f6155752b446e6630534357446d2b387078596639422f52432f73342b4d352b582b4a486b486d6d646754446f2b6f766e62396b664a64612b6e7570724631677851554931302b514f6f795753705a6f4f6d5a4a4b6c647758683946535a3341327a795061702f61626335326a72414d3067786551665772623257474e71356a7273664c4c69784c47572b6b6f4d373550596e51586772304434786a513936635179636857657a32467a445848787150522b445771342b61682b6a516636794d487368706b6a3064643551614256516647442f336b537a3642493636616e733662774d464b594b323758374d6a59447867633246314a726b74356f55664670304a6e5a4d7a6a61367a68537a7363566f71657a51474d6275533934777a53324d6c6636556f6d464f5535377862506838726173786c51744561585436677a5873664b314358753475684d514f34492f59596558564c52376150306f7a53564452506a61553967516c494c7a4b454b30416e6a5a43365762436d574c6e527830667a337769786f7a66476a4a58387931714872772b795a475a4359484d6757675878516c646347747232307274505971474f6d3576526c537669714c68656a67314e566f57444852476458574e6e6b43673761784a36666934344a7a71726f584c58507a513669326562515a57646d683269634b56485536457a6f59412f794263596d6347443849474b5155546e46507a364a42722f41506b5a507276394e764d39654e7958784a6b527175573332667767673952796e6174433831334c765952614533756f6b3939502b42702b4a537a502b7255375544526a4f704c6d5448732f476f6339717638414f30416d595430757446327a6b634c75686d6f4b67674a6e52534c4f744e47564f315032562f4446487345504a44757750484e6a636d7a44472f457a355861305449364e664879734c74656e4c50666a597153613751636c6566724a657a732f76443258752b54363478704e484763523148686d2f4e6a316c72336679463951342f4c69524b2f4338725a315163374c4e2f497836326a5270726876626e366336644170744232722b6a5945345670306c557a7a535554444e2f587161555970574937787069765066366e2b66786a366534656c73316558365767574e6b357559685561685735334f554b353958764d743366617a354235774547796c587647424e505a68763259342f434f33766f4c2f5a3339526c3654646a7a37496e66486e5434316441736a514e444942725a3437324733736b34464859586b677049674a44586850536c3751555467622f585062326d754d514f6f754a2f624238466a386431636d6a77575243676b7a7438745175475846546555686e36456153376e5a7247623036744c33465554365038416453622f41505632776765376e7472327a6d4a344373664f2f77433037365a65512b4858727966484a4673507876546d6b30354964646f597452714b7a6a7353784d696d6b6e2b516a304d30626a597a7038783672332b2f394f6e473065305769654934522f6c4e2b41506e6e6f5a6b6e35486c597a396278664675305a636679764f7974796142417a54797a775a784271546f617665714630346658656d5a4a6e786e3865357038416d64656e7252664d6669484c53674c4b7a366e6d6973487a7856443876475664624d6c71705a7857445a7065706e59756f574477667376396e50654a50456c6b664e71376538474d6e6432683059354c62724a5963722b544a4570364b33496a6d576c6a4a4b6b614c74426933527064444b4468415441315747536b75462f566d744552306b62445957394c5a6d3665564e544f784862637a765a753041396a37366e365757376b6645706c5778692f6d6f642f316b685771655a724a306d4a304c54554f36385448316d546f476d6455595a394539656257537a4747792f733636756f736a634a7573485159376e314b536d42423835376a4355477434426e55564866546d35567474613343506273376d465a47376241696e716e307131736b644a784e552f7742565a7334304a7151444e4a544f304838374443482b51654f2b52654b486246765531616e686934744646576b6d45454968764a58386161416c325967626c4a3673722f313055684e4b4366637a7458464550395245784d384f4d6831347435683677666a4a3547337a6e3065387031355a76745030624d4b6165757a457666536337435672596c4e5a68525278795235306959302f59594a35314a556579684e61366e4c61654136742b432f3333647158437069395a2f52724f3869324a754d734c7948784879445478714b39376959305a3932336d64326d4e46614b6668706f46626b66634f5a4b53364c5a6166646850736354504a623136384279682f4a5838317679442f4937633064507a62793379584f38536532366a7872776a4c324e4f6278334d7a6746504a706551366431665075474b795a56776e6e333354505068392b32356c50527036564b524d523268716e334b7576575252473130744c444e55744d3569356e436e2f324e756639666f5866493562474c36747644364141636176614c457836627476444763426e564931356c51504a6a34737157694d786d424e6c6a4e7064634c6c4a4933664b5534754e375765376a6630485062375449587650494f666548366c6559644b637051695370466155444e4e54614e4d3765636a5958497a50363750647a702f496b346663416439774c4851537630366c312f494e446b486947447365543762496236485a6d466c30366570504b71646f556d534a6865386f6b4c57546e76595954384a4b7a2f38416838624d2f472f43654d625236592f37435869766d2f704c3464367a2f6c33353166754a394f6644354e7a3038394e66546a7943752b7677506431714f654f36657a743035572f432f77434f664b682b753058635578706b6b765a4e5a784a68507865317a46725630343457747a57734e44664a2f416655442b36312b6458715a6f656d50707a3456365359664e2f565a366965627777486c2b475a506a766a2b733564766e4e302b622b6d4676505a586a39456f30382b31524d736e6b414734513169612b7a3656597462646e3174414c3874507741642b5066726e4436582b6a6e6d47312b535069612f4335504a74547a337866787a53787534476a523353485678664b482b35794a61465834396453326f704535567a63657459646e414a353074586670377266732f796a6d6c624c6c355642795838564a2f48554b55755954706d303865374f6355394166784b6d53437858644b693442516e6e572b3241766d2b6632694a3752457a7767623766323350795738642f4662315a302f4666556d64477236586572415938336b4d4c58533366384169723471614c7372534f6f35776573786c7363306b494a4e42764e59795567344b6e446c72307471567a587456486f387966432f526e31757970504774585a4b6a504f53305047664b664639792b674e7636434c713858584e35456f3943465678664c5a49395848417a78366b6e2f465650705232635762524f616971727652364c785862726750786a31653831563541356e575a6d50354870497964494d764c306c524a306433734d76504866724a474e344c636b5a35323572677a2f714162555332335a726e6c714e7a505476384d76522b44774e6e6d315870316c776554484745775765555536666b342b4e5a7374686267352b5a4e5a5a4f63744279796b6c4b52424a6b4d6b776a315653654f707a7471327a4d525961712b572f6b4873654a3738506f543656557962586d586c486b755a6b70784a2b7656747759634d793857446848715370546b56464c4f5331325a6b7a3645302f4e522b36586e317a644e6b54472b335a71504b392b587562353934562b5650713768656f58732f38414b637a7a4f334e31487262372b3139546e6935624d52394e516a456c384a53382b46536e464e37773459526b484a3039314e73365662564775713670574f70664f326656706c626c7442312f75313762714b62535a53325a4e3849386e5a335163582b5053456c4a7065446b702b5532716b64336566327976542f4a2f4637773731717a36764b43395273784f4835503572736330386646386230635058324d6e7650474d4b4232733171764a6d70464c7865445255356b476b695a786c494d37756233397665625068487058394750447648322b6a3367326634626e446c51654d654735746b57356d577a4b7a7270624d704a4c675a6e667848324a6532574c732b306e716a6d4f6248756d446f433574386646664d326d5a366a584c7a627a663064394a4e3779444f32767858387839554e667872765537666b336a6d645273376e6c573979364c7248495a6d57526f3249324578764f536b513066587a615274647a36716579615669316f34617530586e364b5946766d4646326e36532b6e7576365949566c6f34365864716469353046453572453055364e75503165706f633161716c74366d5435472f4a58394c5354544c4e38314c7a69633274753852425079423859395550453876583150572f78545a3965382b53624e7a6d656e65467636656458354769626164485478765a64434f616833593030476e68382b462f616e4a614a664b3533395453617a4d52533230546e775053487a59634a6d50384169646f2b6946376c36477a6a36655676654f366f595535366779612b52586f4c6f7a4e4c4775732b54576e61727170516d666566584f4f63727132784d6266336d3465664c2b2f70346c6c596e72503665657061463530586e326e4e4e34723545384e79675365764d6b64497a6e464963364d5a784575537364386b35394b413948394d436d675a757a3253625457316668377835384b6d31383444626e724a72564850485655356c6e5863594254496b647955614669504b4877732f534b51576f59314233726a4d663636752f6c79494b4336422f6a716f766c574a722b4d6b794b6e70364856456175324e464b327247636e664830794a48764d66304963503364396d764a3566594f304e7467756a75682b615775467375683978626a6871426a4b4a4746526e7356594a5430632b7243584157547567546d73373050667851574872572f74762f6b39756553656933692b6c367165564e38363836583545714c78337972567072467a4b55575653327030394c5453314f304a727358647869314f4142437874377753624137354f74705246755775326f364565582b6b766b336c7a2b655765412b6636336947664d6a62566d2b4b35673675676c4f4f716364704d564e394336412b393939424d4f66354270665a4231302f776c2f7a486c57305279327275774c5479423245357a2f543778547a48386b3854636a7a5466417a5978486147496b467a614672362b76767845706b6c37504c51614b4270656443597861704a75612f7639524f596a4d78413458666e4e2f646d382b38516f325051503042383950797a51787172513376565455696c4e6d4e756163436c65513548694d52724c6f334a746f3070364c487473563876794d692b4c6a46636d36744c32654a353731322f6c48444c2b6438787530394865334e62796a79666638414a4f3238303732313872627050706e2f4147383256614c69635263482f487250312f77496530663866622f5856455934514b78746f7a733672367a3439504e73366b6576616d39542b643453656533723166447a2f4c762f41422b2f30582b5839424839716e5255704e4a3164656d69555568374744772f714749676374694f2f7744446837376564372b2b642f342f7131647648634f375839672f30332f417a31572f4b2f78444e2f4a4c7954792f4d396273766679646e30493856706f7735505358793379484b354f374d6870494d3174732f6d45326f464e636b2f57445055332f41492f7a61516a2f4146792b317a71313037624f7a332f6948394473736d4c6b76776f6958424b726e767079776b6774706870414e436150506c593270594439576336412f594c4c346547524e4d44553339654f4774506b596375356d36686f623738766b444a787079304f4c72376148432b734e4f695a4d71527a2f7743504566595139454e4a524143696563786854666c766a655835786e336550654e36334a725a53505179714f624c743567614f68387a38773534772f664a2f6a316c792f47794d44424d744c4f664337333255773369316f6e6a30483836372b3458364d666e37343336766557732f4c6e30703958474c7a3937566d38445a4a6b2b516551656e30766a326635465a6f774d776466786c7270483470777053616e63363772653039703968476c795a2f593062614d312f5a576a3951702f6259383539637652362f31503830385a68386e52366578526f506354334c6f7930573632712b645542727849745274544e6832614f6b4f653051354d757579667271513658766a6e58696c7473543268363066787439622f4145642f4a44776972784452304935504f2b48506a3176362b484c3771356c3866307a67474630354472574c4a634b2b52684f33344a3779704a5654427161586e5870616b352b45534358307739662f414243582b42394b50556278444e38472b386d6931666b55504c39446b3270644c2f4d775a742f6947773934307563797269704f4b5976346a71412f615833657a4e314a37566559665a764166542f305978397a316c3961372f446436715239554f66356b4f646c39386e6b6c4b6b59387a4d775737524a2b315a5473512f714d312f592b525849426f564d54485761457a4d326e62586f504f2f2f41484476376d33665644786679333052394a62765a4a72545859506c766d71574b546b2b462b4c44697078745445386430635778367674562f774166317a4f512b794e797467774b68352f365a2b7252304e7337726452774e7a644478484b4c4b6e5844354871335554417362675574417670726f682b31526e392b542f45696f584851737a2b5a337a48787766453569675631386254347950336655416375644f4b72472b6a335054372f4150726d715371416665523654794c2f41476e5137684c36716c726d4552642b794275416c675954465a6d4d774a5435544c587a426d38766b706d30636d726c65666f2b4f2b55635850763536337a542f774462392b6535624b6f2f687154336c6e743450376d50726c645749554d72455a6d49385257645470644b59323548574a656c67734f4e7456684d6b4b3253635159747559344f564a52524f34503072712b703435624245415548766e457850474236675037562b5268656d2f67666f6636312b4432786f67386d3535463433357933786c2b725a7354655854736c434c4d386b58725472424b37484a53785061493641414852633547755a3441484637524e727a616b3842364f647638414a50303138503841546e4f35504a337a72596f346566347634746d7939727048506c5a3952716a6171567434676a4a634c4f4a364b30467a70746e4a7a6b7964506a3257744d596e6267617634663841644738433865386970584436566570336c2f6b6d3574734c5979732f7771544b30336173326469344a507a5237593539692b374a4444307057704a582b544f7a6c784b706a764f6a6159343372416b5658355165743233544e36762b4e2b69766c50695849375a4a472b4362462f4e57336166432f44794e44556144534a55476553374a364f6f465a393538796a6c4b7752306c4b6a5a534f5762626f47755871782f64363848776367385a4d54664f647a3664624565506a5450506a6c426c775554554a626f3854457865674e4179722b704f646b79654a353975575644717059394b657a326d4d34326a685038416d562f633731505658777a66384238676a465868336d326f566d70344469596d626935443838447957773654647463745343594f6134754265746448335034714f687a6953674f7236744c51327a6d4f33556365702f557a7732767948426f35346e342f6c356d507379364e57464179792f6e6b46307530506b5563317137552f58546e3033665953787946714f61656f46435251385039394f32635a78774871342f44722b372f414f69666b37384c41395178382f384154625570586269546551766e75717a43466865507a514968304d746a5a6332506b666a75306d59334d482f7232574a4266666d66332b765031505a377878727a5a486658786a7a763168386c394f745864384e39533848656f48363948703657766f65483342717030466a724b696c30704d7568774a566334726e632b656d69676b71513576325065666553615669635441346f666b4236772f33344b7437796e4a394a2f534b4d76446c654e4e5a4c35484835336950355a6e49626e6b756a4263476c41584e656948504a4b306b316841457a35514e714a586364315570374a455a744f6266776a7a6f666b6436362f77427a2f4130504d50482f41467952362f384170376c37766b534d2f657a7176466166432f47614979343557626c33364d32584b76634573735a45496e4f6c79477a6578512b39547852523255706f54746d753277313538472f465038682f56764738733836394f6641746e61384d3865675a50396d5a34777858497a53686b74783846564d712f7744795377536e5450784d437171326b414a372f6a4f3068764e36527774626d464c5a6a6879336e465131386e5a4b6f36646c4c4b75706c79317a3279714646756462583033574f5a5a6e6d3146436b696b4461732b6439674a4f5230302f424c2b336a33386739434831362f4b487a2f784838612f7772386538677a452b552b73486e2f6c6558346264366b647a36474b56345a36645a2b78796c336b57303963643836536d6c494d7344722b54334b48346534367574736a33656e58336d7048772b487a4858663841754e2f33515078423266785938692f477a384a505562536d4c5577764666416c624f543456356a34333466443661596b50634c5967587137586a716164616832626d317946582b6863354f6c536e2f4276566766506f364770377a6671312f2f41496870662f62612f4b37386576533738592f4c66524831493952385878337a724538316a3870385a306450783672766a75376754553155794b30645063385058334a316871716e454339303956484c794f6b446e5730773031394f397278654b386f39527634352b7131506d75646e614b6472786e627a6444787554537a712f4547697950527a4a36496661365857705a316c424856487546387339494a5737514f6d6d735a7a2b622b75473965735a366943666c42623664655579344f74352f3670626146494d745a3250347333594c79377972716f595a4a38572f477a5679326a4450714d63726a766b35457544522b51333962514a2f31616b5448436c5252667046766669723454736e354b764739625a725346576a42354470552b5963793943493154786f7633764864485763352b6b6b35616f2b30726e476a4f4c5663357350762b442b72576a556e684750754e2f77444c30396a667a504752563578534d326b6c6376412f6e4c3035506b47654a3431577a6d4c6c757463676e4f6235467041767256304c73355966732b464b35355278785749366349486c462f764a656f5835422b764f6236512f6a76347a36463754505350774c63386939534d2f314c782b552b5737766d327a7a467337704d667a6d70774a632f4f7a584c427967494258513457522b77794f642f6f657978536b32764e7561334461504e72514e4d494c64317a487156714e6e2f6a4a6563546e7a463956436c6979453138556c6a444b72712f61487534794d5866735033496c765a7874506d4c5278505450314c395135664a4e3330303950664b664a732f446154744f7a784877396e6b5a3535504146442f4976635476726b4d63386f3939347063446e66583473506c4d453133567a693168375a503761666f64712f692f2b452f70566c2b53667250312f4d59683954764d5a7257325630533732744e6e3630476a745a354c37334d716b484f584c544f2b6336462f2b517562656155684a39507a646538616d726248776a724a663633654e376670706e79654a2b676d743673596355484d4372584c4f784c4a7461622b466d5a6f767953614a637173596d576635574138464a502f414155625437336e4f665a4d576e4e74767249704248713967656a487037355a366d2b6d2f77434b66706636634c784a3933796c6d454f50342f693732696e4f7a6b6b2f4b306230517a6a6a2f586a5238347330576a5047574f30452f464d6d617056397472573232314a734f415871662f38414b6950566a523037632f30363946386a4c797530477361764d50496f3136465075575531737a4d6a4b583753715577524c3373722f7741427336342f657964416631313139687246643032794f5576354c666b542b562f3936543869665266787a782f304369312f566b5044636a306a38547966424d7273352b55767850384131625332504d764c33546a4c504f6c792f6c4d372f5a39474a4c6530587251514d5070705454396d70615a746973637730673953767868395676783538373376547631303863306653727a7278445155586c5069477765625271554156735a5a7a38536e6c6754585a37387554537352664739692b72396843524b6144756152713176584e4f61673979663975377954305838322f424c305279765348782f50693852447738664664547839647448485265646757347679582f7971322f542b59484d386b517a52576d6c447571534541522f4b466970472b567252614e573234537a31522f4772302f384150714c76497448787a787256324e71664c536c31666a3050385844447635533764563251326a55797552735147734c46554f595855467476413169647261446974356963627343696444305979504463572f49386339486648734c537a31364d7566596a47305338666a7836745a3275486a5659337a72577a59576e35436b68722b5a4278706d43436f547351317439325a7a4e3867333672656e575846364c2b722f673676346c66472b6a753932614b63466c726164794a712f4a63666d6168554e43335a5a32543242326b6b663564306b4f5337514f73416d69747561737a2b4965452f4939502f4f64504330366f2f44504e744b4c4c7a5836756c59575672557734574556314b39585171744d5151764a4436665439786b756637502b7470394967346671377562472f7742664956783138614e4b7169686b772b34536168626e7373597849576a57307a4c4e647746694a536c7a6969496e663939687346682f3563302b4436666f43304d387a334a304d35432f69584f4a427862545839646661666c6e55716b7275304a6f2b3579425941546f772b4b7746417866764e727132377433322f354748325662312b5243497454486453762f414b2f484a556e6a4b487056316250314f356773477a3575653533796445715a7a623150362f5a6f6a472f7748742f2f41414943452f455042734e74365a6e654e2b44654e5a4b30366b794b4e3349502b517a717539387368686a557863352b51543677574f6d6633364c622b70397176724478586c3673636254333841622f4144552f4e646e682b2f74656848704a354d4e562b4e6e364265582b563252674f6b6a52625262772f4376464a617355565a4e6c4d4f7550457a5272452b556e79364d4657664c4b754e4c537a4557734f475071423634483556546f2b4c6c734d504e38653165336a6d5a62486a54713638614e445073387531504965444b3637486e736e49416144564e634634425457766c44572f3131625a786e48435141775045377655322f786d31336a6174504f767431633749314e6a505675366d52416a506e2f626b6243614f686f65507a37427230464f644c3965376954346e6a567a706b544d7a74335233446f5234422f613631504c5044644c314e794631776561584a7071386555374f6c77614c7a456f644c376c656e4659632b484f464874796c754a6e7a307a6e396f7068536c795834323134696476574270636e57385972693873394d76552f467138583868394f6731572b4c2b776b4a61307553756a634f416263313074666a6f30564a58383375554470735366676e39536e347074635432362f474e7366547238712f4b565a5764366638417162355233587438665658483437767472675a685774566a514b2f395044504b6f462f5a7657767165554a35514e6c364e43644874534155355470783271313665756f476a2b5558675834703630666c337275717a516a38305235557a776c4d48686d5475616c6d6d4c61343948796c534b7059555a65784a5a6434375546625578766e694d533448747654496d5a30353149785434524774722b35702b50336e66692f6d6b56336e666b7563617646664d352f43614c5047646f376e61586c3258705354654f585552732b4630363244347a41613641636d726e3654397458316a4238786f58724e65556561767255417536314c36775652335a73597962713833347963524e702b4d744250653152756e702b4e584f6949744679514c71584b446a756f594b4b656b4833392b78523931542b674a757153744273356e734368744e6166594e515330522b2b7a3476684d513778765068457766504873677553597a597347534d56445770597354586253672b524f62396c6b6e2b304542503851332b7a394572334837774948493968504341425a38796c54645578565176635a3057516e4946337664444c42594761744d5969736d457757633458574b4833652f6e4162786a714f6750584f304f4b3538494b344e43526e59782f594c6c7036644a767259564874454a324251615165617864396c6e4f6b356f75372f70783550503742796a554d696f63663272426c567859313871626f7a4f7a6659634e655938694c7170794b50554c2f46686539337347514f7163414564516d716a69356e4c565376346e4a6375577157656d515a38786a684674542b385230436f2f53786f426f43306a34414541475170562f51626a2b452b704d2f6875526a2b4a35614470757758564262556c32376e50567269765559787555764c734271306f57506a665a54425354346e4562516e716c647251327331695a794c4f7764586439566438664850532b58533250565879757a764d694e7744705a6d5853375174706f686176794735687732527a3733324c32536c52785530736a765a4d78424d5a457a46654e757834447235365666324f376e656c2f6b644731366d3165592b6f466e67302f6b70524d7a66687957366c4d4f747638414271324f305678625174304377616c556659506b2f4530712b79706c44754f3572653163335a323148464c31643535543650655a2b612b6d2f6b3876632f7954473061364e7a4b6f7143612b3663754a677a32635a6a4d6239676535756b54454f6972656b44797030787053626167507172693056734b656d382f6d6f7a6f5631517877616d6779746a3558736b4b424f6448614f6371532f74537a3969334f57672b67433165394b572b7a717748337074456430514a423642666b583667666a6e366e6550657050676539586862486a477a47322f4e37502b38323252307a6b374f6270396859366657793272465570773939704a5a4745633570706135523176534c316d74756c683363312f376b2f71482b514e586976672f7037346e755665593673436365717a655a6d5a2b58347862714e757a6b506a316e6675367050557832486f667564506270344f544e457a2b746e467a526f56707874626c6b63615037696e6c6d4c356e3670654b346669486e486b50715a52347834314a4a354c70386f74717a4c2f4933414c39545777386e5172702f38625833506c583274427257664b32473272727046685a5431657a786975366137527a39544255746a56725532777065326645306b39482f41466a77612b4b594c5030776c6d7a6e36342f7665653830384d5134496931765350716b516770485a324e643851476755547a3044326a3431726776354a586c46776e5476545161793458414e7075366c6a71533933517a2f6165734473682b437634752b6876354365682b44355236712b6b71502f755438383878385a332f41446678587a757a787a57387a776b5a7566765a2b58546c644a76435a416e5775463151684f66306f30304c375a596f41357a6175706254746974686675352f614a2f48335a77724e5078507a6a31687a4b6645353935766d76334a76447442394e424b535068314d554d317a5866396b6e55544f57316e54436e32696e3458567067585376744f70457a4531727a446b4236332b69506d5034342b6361767031356e314d77614a793159486b6d6346544d2f7a44786c7378486e622b4e6f514d37336f4c2f6d4b754f46622f66373878546e41376e4b44723370614c5275725051624b66675a3454345450363035337178357a3552626b2b4e654175652b5347487645362b7a64354233517a736a506f6f34583276713073756e4c3349583862593432676b5739594c517071544f33624878443155656d32644c3668585a666b2f7066366a7638613066465665513070757556354449686d625369706576685837564f356f426d61666174464c454750574b59707a315a356659633733384e7078777455576a3679617544345a36632b517239616274714852386f77437a2f41422f7a4c787533617a664a6378555849573276576565756e6934666d7545466b6d51303068414c7741414f66724b56695a6e6b2b34357a2b4a65422b6758687865442b585a2f7148366f61746f506553364b497655786e6b4d7257646f47686361474f69732f6a697578394242505a3953626f4a346f3146314e6e73336d627a756a62583765766d4f716e6a2b3771657333674f484e34355369374d6f627073312b585a4c31524b6b5a7a2b613335796e624b6a2b576f5a734c4952326d63656975724b4f77616570637942334e4d596e4569795332355052387971784b34546469782b562b565062554647747a4d546b35656235492b5770637a6b584d7a3639536f6d2f4238662b6c43526e6c577070306d5447366354787950352b6635582b7332392b556e3550384172563637586f677a4e4879377a642b73714f4f684c4d624e6b53797865586e2b31777a39546d2f63792f635842344b784e4974644e3766662f587361645930394f744a34774f756e34422f334b4e692f55663655666b353668585077455a6d5a6b2b413445306a76347659356279504b374e6f56797054526d464c4c386131636e654a696e486639744e4e6863752f726d316444687630363852312b38722f4e7a567a2b617476707074375069336648654645574b6a502b6c4d4c62317070626c654d354c312f48765a5a3236476f7672732b6d6135535a6943663575555275587a65356e6a756a63506e706e2b66506c6e716435544a6d622f6c64694e62367442762f4149756e57522f45445054516a6d6c694b374b705643362f6d7761374f423777456372326c58784c6968426252697352695230693851396470664d386259394d2f5750487a504e2f53373155787444776a6177615a374a547a2f454c346b31372b52765a4a55424f6c4b355632496b656d707a71416d39694f4d4e2f2b334761385a76586c745565596a2b35392f6152385038417846384730665648307a33504974587852766b5a62554675397a3351612f6a2b705648734938565a4563424978537a4754724d6c714d784e5163497a624b6358733774443269645764742b314134526f704b7846364b4b30423863777a53783062454d70636e6b306d4f636a6e4d4635477878337a3344386f72414b517055316830437066753652734834762b4f507233353534354c357834503656656f322f34773350636d50523865786f4e494b483444574662616f57314d626f44475875426e4a7a535175636f4a6d736338452f31576230696473336a69492f6636592b6354786144764b6643764b38796d704b73434f356e69656e6e413734467374524f466b6b2f5546397250737979414a2b563861693949744d455643615a33522b4c376a58797250306c5a6263656d485a58624a5662536f626871465a306f4356767774794e424850726a3970326b786e414f5a5043446f475a735279644e7338633446382b6d5868712f47664676736554727158733667797569677a373449394a62597235663435525a6e4d75357378484f4d4e5353644b314a2f66366b775857355272576e4d7a4973325445676b302b6239364b492b6142646d792b315a47726f7a58364d454f6c714a6263495a492f77445454553634716b742b783741425062464c706d4f6169425955666b6e6a57446d7934314f452f7741684a54336e742f776932696c6d61746c584f3665566a5a384c7938676362686e4d48706b4361626b644172583154365a6d306a4d3474484479464470395976532f2f774175734c5478664a4d347875734a754434314270496b376f735155622b624d394e674e712f64466a41584d44654a34784a6948522f6b337052624674766e34695061437775762f6e5a6358794c553857703474366f4c6162554d2b4f747578516b6335387057734c4c476369534c48704d7a4848587a345163386c4b6b54483039774d7a774d38304e6a4378326c35426e513134314e3670746a4970314e4a5339474c78366368616769316d72644b734648564e387a2f73702f316e4d4531496537623068394d2f462f492f7833384a637a777350475a4e587754782b77386c4e457a6444785052304b382f65564e4b704d2f554c4a6339453539376e673044374d674530435662775a3546725446376333784453487a622b335a3657616e6b45302b5a34646b535353617263725132755177526f79396a76334f505956344d6a372f77435036457567345a6b4171514a3638663841362f4159444a7458534e613043696655443049683946505348314c3831395051776b65512b482b6d766d6e6c766a31666b577a4e58685a326a347a34415664576a35447055787a636e7a30363075537137346d70514a6154563966396564306736526562577246767844796335434c646a626c7a676c304e7652386771352f6d3551393139725230474550785773316d6358387a534c32314139767a4f2b59326e536f414d753934394f2f34496568552f6850692b6635667259373972314139555a31376d3770552b4a7733366e6a475931544d3248454171702f6b67536636376e6d544841502f414e4c444b4b484f70582f584871327a4f49374e523279385a7779737455374d7777743062714c6553757566625536765a544a51356b44417a6150692f6c6c59497354513170633668546c55632b7970557a6d635974722f414d5032714a47616b6e644950357432642b332f4147496872546c7132492b4e736f70555270306e4c597a484d657563784b58616f50636d3335556b4952616d487754734665584275513665386d7571643850323047574650485650397a4f586b346557552f4978545a4b4a4c56484e3849514143766d6f6e424268356f76376d663439622f705836736a36734f57786e6875782f77434f59472f666b69347a3853387537456e5379356f6c544f464b6536554b646730504a3377523052735855632f58546766646f5869315a70385134332b73336c74336d76716c366a2b5555364f6e6f44722b612b533744614e382b393070585457444d744f713974424c57354754446e7a70483553554b2f5950453844347a5630566a46596756445a6179656846675241466164614b52584b5a46316f446c677234376e56646b534c462f434c4842377835377a542f414a4a4d4f66473677394933396e7a2b3364622b54506e634835452b766d50626f2b46654e61697372302b6a3138344638336e536338697a72516f34452f305577547a4351394732516c74582f7741744630414e6d6b342f6164665a47796e61487437385843624a686c2b3130304b6b315031446655696131395758304b47304f55334654336c457659787a774e5572584b622f41426f394434762f4149512b574c6866356b4533783550386132623644435a53755756316e4b785177574b6c497530384e6c58386b49673376496e424f5166576e372f6855332b6770627a2f414e502f4142547944436130764670616376717a6c595048593054556a504e51684a69695a3078664a37714d30506239343272584d732f596e68765a2f55784d7878676351507a4a2f745a2b677635557737475a3554366553654f623879586473382f3853645a467034783277516a4c70334b3573456e794c484c4b2b6e377557726b6367666b4a622b646e454f644f6e72333037634c636f38592f35712f696435722b4158716e3546366171755a3562673354476e4e386b2b6e4859757278366a75662f457a386f4a505648724c75455362514564666161492b49415436487356364f6c715271313344334d2f3841796376386a2f4c5058372b335467654e655a4b69697039432f554857394b5939525769466d68646a545135657469517459322f68756f7a382f77416b68694833633972544362346a4e594e4a766d653255696d746d5069726b6567546a2b56695667544c76367967466a4d6846452f756d543163367a2b38706177465a724b655a584263416b526c3154657044347538342f4b706d6e692f63696339496134664e4d386c527738634b475756554774466e53347859314c6a3969316d4b2f59416d526339362b4548775675416171584930717672476d633156737563787370747534464173372b6e7a754837516b426758734c73784d446e373538333942396a4d58452b327271353174616330704c706c4262612b4a4a62484c73705754464c466a4e427665642f59487a346842512f4a2f514a30666351664a556d3568787838376169696f6d5478394b51676f3577334c365874476c4b78426764417a63626d695846742b6f65663750316b486566393455534c4f64524e37794b5936515330575a36326643534530646e3538695271477a324c3478487464373270454570465374414a7362524e4d35476679776942616c76413172705772676c5053487831726e62776d63544136674f675a69704c6e46385a7036762b732b333559424a365a6b3942594e2f6a33514e71414f766f3750504850566f725738356668456c706c354c4d5141336f3841794e5a41514174692b3642724e37454d6f64596961363961786a366f6b4d4e79786c4b5650516b2b5a6e796b5462705346504f38576c425748785641414443574370327a634258476b4a66596a4e71713635476355787a65773535644a576a5176346176354261334b585152644d6b63467038542b6e2f30416b5a576d6f6169486a3369394b5656364c48337a4569666e7650346f36456a537639457869313936722f5631496f4c324759682f514d2f495069337647764935563364396c324c7039546e64475a4b6e7a30533363467a4730542f4b6d763452453338615076494a584e4944457a582f4146537362625448695035502f6d4f6c3150713336722f55596a6e652b6f336c4f616c794a305a63726d7132335a69633351567170366972574b62522b77344b4a69564c4a5343444e7065366d6233346a46612f772f32427a7837795041686b587042494a35637661584d444d7a4e62524379755878374e4f6e57426c66366e304572304b683778646b7a4a354342716c696176324e4b314f2b49466a654e2b5457563743472b4d4179566f4e714c5475646b547631337870444a75742b4c53755a2f493161325a6f4a307159794e444b6542345a4d68522b77756d4e4a724d526d5264336875304e2b585234356f44705a36506b5172756579516c6971504f313539653851376b3139566448474e303942704f674530793658746950717a3671654273394272792b475a4d334b5a34476a734c705a3736766b30355a50474c305a712f4a644c53766d456d2f774167547164534f70714a312f4b7659615a487074727a6f547a323775624f4d693532655a4e3867386453712f53796f4c63794e3056664e4f3575526a776375757a4a697a7149495434496b3357786336597067467a6633544242714c534b613170704d5445346b4874503141546f684b6a514b58617a305878536e54507a2b564275574d32736468593272714f707675716f7964546a4f6d4154536c6f2f5849576657633170774a32566570726564646a31736a35344d6f4e42487a686b717a48575156522b506a632b75475450497649614f6b6e33706e6c6d437a4e49486c525230436f7353694d6349426a4438306469545a426b4f675537744c4468306561476f6c754a626879343771644b326251716e6a536c4877315743613255643548784e4c5059435655524a6959695978496c6b666d476635466a557a744e325862314661584a5562704a734475625149575a47784e755a363236544a31706a507177474f6c6e735974494e6f61355949694936425a6e6c77617130392b5a653873776c7069554e73452b55364e71575a326531732b66637369336a7a78736150797358376b5935542f4c5366484a706b45626469716971536a476d79345663715176346d7730624a716a4d423255537a57444f4f6573506d54634572593270415a7a2b616671616d504c6c64756531786b512f4531576b6d4a55304572624b4a33397a317774467256614d3863506331494c7a364644485a316c576f68764f682f6d45446b4138663841733864594863374d3061596e3237564c7670394871353235384f5644795a7447636e374c615847744a654e73644b524c70357a7132796637524d2b79392f7942366c4e613174366b3256747765612b6e31317651676a6f7861574a4231725a74574e2f2f4146317a78774d5974376c3956327a696f3166442f752f6f49507a5862616e563165316a6e53506d315549326333485a6e4342396439536c646132695a4d6a5949676f5354523833785a5476636f47717034774134314b717172696a643373356b5357665264574e4e724f397161784c45536144525a55324f564b774f6c53503871666a547a6978486e417977524b52765763644a7036613763754c7261353055496d4b726d6854376931485a386650703164715977477135536b476f416a61436532633646753568673633466d7a42566f632b354e774b6d3336546161382f376d6252566175696537334d7a566a4e56376e474a7155354e4d714570616b50367262474f626f4c4530775667316e5a734b537758362b7550306c353062573278625571594c31544f71596f6332677879663841573335472f6f3777396e42584f304b633862706e624159465a524c73735a62716b72336431556e67376645746e3065474c716e7966794b4259686a4630517a385a5631567653536b2f663841344d39727266752f586943617232516b366e55596a4b6f79697a336279685452544c6579642f4e4e444f3252443739527a567969395337754a59584b5a33504d794c673035684f76597a736f4a696c486a344b4b6d397a716d58614b415576526c644376616c44585778615a6535377456616b732b774b614c506c6b4468414958616264334e6e475142334b6c716f7162726637353071565a537474696450424b6a52714a676d70362f692b76704c2f414976515132696a356244467a7a5a382f6638416659302b38564a70722b2b6d6151594852692b72566c364370744c554c6b7657686f564c676659584777706251756671525a304a6a4339494b50764842532f51554e36692b7466692f674f67666a743558626e43316e7961304752434d754e474e306c6d5833724e7157723278324d5a72532b7858564173333039754238774b6478466f724d38525433665866523867356e4f4c7964654a426d736b4f69544738653167304e72357372564862784b2f355165675a50306f317a32456147415463696f574c457056416d327a62773266662f304b2b32765074665664586b2b5436624d793351717270412f35444e7a7478504b736969585032663841782f38416b445a4b67797a62572f4b6d68795a69324f4a517839684c616d5a706963316e456a377137577270536b7a794973797a4d66315a614f787a4f3174534c732b744d366a543142586b3576464d2b57784b554b4136676451353149324865376a474f6d4b346a6c362b5967666d4e6a744b704e4c756f613644794c794871336e3147753251465959386c655178596f663636507079745344474134306b77536d2f6368553132476f586d466a4e626e4272774b3036507a6e50314d74453061467836504e4436436d744b4d467a314e545a4b6b2f66314a4b54346c2f6e4b48776e4f75617a4d5477474d35664c6555753765766879705a55696c6b3035535a784f7a4966355944304d316a6930467a7775792b4c5a536f45422f464164445a767275653533387552572b7a6273364d48463834684c4771524b516a533550645352735a4a35324a61334b5a4777497979795438694b6d676562437848376f2b46703372742b6f716a794262624e466e5a6270534c4a2f77444935657a6f30383043374171567a744d6a6f72544b744c754f7a38555769705947726a674e33474d343551614375504a4b474b71612f556b756d3534305064344e5052794b322f4e53524c5a6f4e626a7353444a78725a4c6d755941762b492f67642b6d4e4d78644d45506d57336d72693971763362754d343263715a6e5238496c46596d4241626b6c62715742524f57536c6e5243684e665670714d4f7a5644376a44334a2f322b737552486a305a4f7338666b304b66536e426c72644a56397371566c6c5a756e7a63676b785755307275626c2f594678456e374469435142376d706375482b764c31703434386244727434376e6450576b6b3074572b626e6462587a55625044346d444d3075336b7961654356724a704757547a6c714e347a363758477159676b4870522b336e507164773242785059695138484a5448665472647058497575584b7a70705956356d755079437a46497146772f4e6e7341545838714a476d7131546e487a76767a366a4f57676f6f614c4e7456465539757a65724d6c6b6a7a70653031364e4b35312f722b536c556c6e5857485572355236317275366f6a553164494e482b674544342f61584e4563694b7470575132364e5831335a6964486b31644e78447a523770554e6d5a59796472692b67325551397954426a2f595073637a4d395a794438436c6b66317272334f37334f72696b36505a30625178754d6b775438374a31386e56387a5746316c496d357137486336344874563766364276466d786f767a7532386c7a4c5836553349465466666a6d4e414a483354715a43504a32543854325555437069766f72733539663469456d39435475694b694e626f7378425779676e724359796e5068746c644f36546a3434617270315a70506e5a6576334579662f36666354564130304b6d417579586c433875537156563556303963787338747a4a724a6b312b392f384130614a775379696a6e313245356e654e662f4d574a506b77754267413579654c73564e53497942467066456d68314630354f58485a6b564c4c52343462412b72504d6e506455766f2f575943615452774a7a527745674d5347737653746b6332674a463078352b566f543249426278626e2f71624b734b6e4f625059354c686a454649396f6659734469514179357851534376516a7a584a79592f68533072692f774331545779666d6b4f6659796c6d624932473469646f494f714f5033392f6252566d47496c7869357a5545655778394467463138334e486e79496a6b4d7872665554657839484e6c4d6c693267547a5159746a69752f594b42793363494b41544f456957447070737169765a74613356354c4b62336178395853685757536573344445394f366e6c33324b374863454f66762f73305554712b4147674850794e73614679524961327336422b4b68305143744554515879496457736b694b5252475469594375554333675046617841464c414436636a61623974724c494a4c707336506e546b65647456665a4343656c596f72597967763276346550446942633173426e304b434d306341334e6e79776c78563733464c3372324a68315a414b6d456c754a6a65413068577978667955463859633644544d4457492f5a42492f30437633576c5054396353346e76584432695a436c30544a4b55717030446d5539547866377a2b43737a61512f377333336d53546e536e674f453965452b7649356c3162704c2b544f3072414c326f75566d71595a4a4642417a36713877595444716e47524a5334544531714a6c41534b4a4d4c612f2b79792f534a7961366b412f367363374648556f5473682f664f39434c764f492b44326c78526f63726e4672636c2f4f68522f494d33377379487370353133567a716f397648324a576a7245564d69454841724c6f5972592b4943396830685438335254333947354941377339514a6f76564d7054474e5544316f746752612b586e566f566f796f51512f52756f6e554c47645451537664393573356762323965445758684d57782f48534848785a48564a5431416e716f695639687a50347446704a7363686949545838764f2b315a6f6e734e62564b4b63486a4b4c435462616f71704143314e6a612b55393676364f62333545305449717536464e48476637553857366b753257667048733538342f7742412f7741655a374a3738366d354969394e7361614c4a30704f70696f3953587675676d59584b576f59714d7545786c687a7535395a48734d67436348664679584233376a77724b733143456f64444b504d67346b69645877487055686265667946566242634e487435595166396e34464e7044505343763457527157382b557a374843624f65556954526b4e65686e5379364c65447a3455705936785a41785874344562672f774278476b31426d3669524541566a5979566e372b5971787a65634f657447585172745650463070625056304263364468436e6e75645a39676a36356a4667532f53686e6d532b697274594a6e49524836746b70304a6247696872772b552b57664d366751415576373177754a5a392f625234414e33646730617a412f637568365251747135535850336c523044746e526347616263386c706a59424d2f62692f374c50333376474a4a514158544d6b37795a4c4e614d5778614e504a536644624b4d314b3832517a746c30484c5774536f614d336f41505a4f754c53554351544146686745553038314f776c4f652f51565237654f35307359386f4f5a6b75653278734d347a614b7843657a6c632b6c4e483369676374546c4c436b795371734144496d542f414e64316162516c5157597363756c4848386c2f6568437867366b4b6e574e7955677957644e6a6d48387a4a3959707768642f7777676d504c42434854473633727447372b5047617a35684d52487245776e5a527963754735445275714a3346384557554d4d4f4a42594d4148667744574e326270426b765a6f55675251636f592f76484c6f715934317337586645794e674c5a4d4f6773657459366f477476497151446f664e2f5153624f4f7457554447556a4d706f304b6d72754f37516d4e7961334e6e6c6d586a7a385855763659363337636b2b70636b502b656959782f5442743667637030344b72566f6d304e436e4d64784841716373577839624c5079352f4869756c63612f6a634e6e4866462b32564b416c384948326b4844582b37496e4b483863384a4770326a547662352f3439486e614961467550506a473546336447536e4f68304a724e596c5a6247492b5956752b634c46752f774468436e326466732f626a2b475031486e483174757936544e6c5152614d7968324b4e553563782f6a5a6142564576767870376b757165795837462b34355a35724f2f7167786a6f575046493055646f5755695a5463716e757270655365526c57634c7444464378656c416246754c5359314e2b38533135764c4e4376695741505a4a312f73714b5a57304a5173443038656f39633057647435744b64764d687757466657326649624130726d386d727038546c34553875657758477a6c66736f2f566c437a6d2b44393241452f7a5955765a6b565a566334576c656d6a4c2b5a4d4e6375334b5155633859544e71366b507930546e6c335a4b2b4f537433534c483044565250774b3777726673794273723361776473656e505a7a6c444c6f665a7176313363304d70466d4c4f344235564e45567057434a7a5473746f706e586a726e2f6a70416f6663787772486b464e6266796d7736482f414979324878395252315a584754794f4c69416d546c6c6f593957746b5469662f6a6131777539796c4156443254546657366f5153372b6f725848574f4963612b6a5a7a59713444504a6173756d5535625a38334d5a526248465242387568792f4d6655513575743766342f344750625245734e4971497563536c55396b316a6c783467356c67376335394c6d556e6a716b6a4e55776966336d6a5448744f536c4a7074464e6b37733156432b5466626e2f77644762676336376b7a7636576e455a466c635a7259716144784e4a595a6179756377533643613547577959385254323639717a682b6d73646a3274625732585072584250317257652f34677a7a756d4e306834554d4847594f72693832632f73394b4c455a2b70692f4a6448537447494e347a784a306d44446b707a78735970675477746a2b5a4e38717630433330314150585963673151507279354a4c4a754a5466616e583042665a484c3847686b383139334858386d4f71366c6c53654e686f635a7542302f492b7370306e3270326f44566e59725651757a7952396a5a37444452492f5130737041572f5263523541785261557946342f774441325a692f637a564769476c7a6554714d47714549372b62496c4868675836425461634545326c7679614f6a6e376c64327642526d4f584652432f4f7a3639534f7a3657796c57653759566f4f4b4d6943476c7934516a6f2b342b574a34635041575034683971686e6a6c47786d4d55744c764a325a7945342b6f3231306a59696d477a5a376e36534852357444645335542f6d366e6e57775232535561514a725931386865754443316861385851716d644c5933494162797344372b6d68634f726c312b56305974794f65535a383146583065395277714b2f6d42305079755a623149586e365a772b482b4e6c6d55367533725a6564426a327a53624c50744a53673963746275426f4e3068537042543953745078724666786675306f6a3939537030325a587a6e6a4841447058366d672f54566f3679363858416e3447657255346976514b72666a4c64376e3637473265356978304a4c766e2b6f51574a6259467050562b766a7031416e583954396147374535586b5134324a646a695774706933507a697a70394d644c755657542f49636439684c6c6863364b5977446e326a7a666c6d35384759355230696b642f45557a722b6f586a726d61743536575a6d564a613145574d56487961586442562b734b35694b5757304a7449732b45617a4f626e424d484c7155564c42392f3958466131614f5a7a7632394479434e49417a7339516162324b71793351684b746376302b52765a6e37415a36316f556369352b6a4d48762b3239512b324d496654366b3538462b57716a635336444d43564578554478696337446372362f304b555556435352514d4879714e4b6b6d505a6b6e2f7554516e707a465a6e6f43492b707668787874324d33597a2b2f623055534b345437444446575539426471575a564c66394632665a557959342b6d766f2f4b61584c72704545747335786a6a4962526570574c574b59706161327435586b3574516163763853576333566633584e4d6e6649744b6b576b4576384144756572706b66796e37314b752f547566314f7933674a3167656f5168486e3078795067624c6e64734d72322b4c356b4d6b6f4648516f6d53367a4a786f7137734d647975626f503631726956396b2f397956312b593235385a33745a75476d764230456f6f30645750516d7158466e75695a6c326b533138427550796f74377951492f6b425370766d466275473734674e31506535326975374d7a3141727a706a394e5649672f547a33336479344c674453534d314d4f675a635a314e77354e686c704d6f63534577687878744a7833676d3733726e6e6166654e447655656a5465734d784567796552356638585457796547714f7655733247365770422b3647324b576d3562666b55776d2f46395661657a697a4e6464444d47314f3141316732537a4f4e5a6f7979514e647457654f364f69326d42363763334657764c3065487358707570666c704f56505651637141584134456b6b694269614430703259464333584e716f386934354a5a7a39455a7233515a474150436f67677930362f655074707953644c484557544b37684d2f54756344715754546f4e583773422b6a41722b62626b324c48482b6f492f56707467304d7056797171335556416a6b47796c54666c3979624543676670707032466d716965784550315554337849524139314c626253733041307444587143374e7a732b75657032317a4b6b466132335a745645726d6438662b78307961665467542b36487063637445784161526a382f6d646d2b3351794d6a44745861726e59616d64713639326b366a576f42684c6b4a49304a7859335253457069434b6e4f4470314f593548517576783573343759536551634b466d766f534e7032544f6479615658662b5036444b705368396a705a2b7538526f6f6c35386a39503535766c53636676396a6f746e45343669777a796b43324879445232355061316d517a37627134375863787976723867674d6e35386264455a364a5963396e596d6e46326b2b312f4732597a4c6c565079666637697966414d4450624347692f726674496b6c2b4a78306c5741336552584b61397132676b4852723631655374727a545572685670536d6f674d41646d4c3269797463685775435334744c61376f4b6b76314e484b596e516c705053763932723433426e6c4274614759357852705843696d594b6a6133345539652f39686365666c583430714d73595a6b466d776758563679382f47303171386330632b516c386e785175555a6c70446e744f636c555064576d557672714f732b4a727672346a6a762f41487063714c4d395066783361476a43576e52366d2b5a7270784a2b4f56683566624d4d62367063795a7567354753524d4a66326757494f374e5a4b30552b366855736e54374c4f5a74783434486e7a3755747355523244336b6c4e57644c443052536866326c45784e593333785471345753526531764353616a4e3079756c78432b4c4d656b4d5379625a596f71424645507774435661705631334e2b466957636542784d49772b3539686955676b7541435a6a393342622f6d336b356e4f65386658485975426833792f7270766c434c68444432476a6d70786e336d4f363455686e69597a356f69356747553554433056724d78502b6f4133743156795874305631717a6d744d666a6533744a2f6f6e2f58746d42617065506472636f57356a476365776858595171397070636c30392f4c6b4f4b776e68343376654b7670366157587659464336714c455636452b6d786d542f7a784e43324b4a68664f48765770794f2b31724f2f4d4d435a656c787078764f764336354630756e767134673442377078752f7743684150384144706c42724f4557702f4a7969496f506f6854334e6d6f396e46392f52726364336d50365a6e344834664d54385166517943624439374e33786675764e473175666b58597551326b6b706f71616e4c34476b5279705a51366c5055356176754b73353332396e53666936334e71546a694e796a71666e59592f7741784c2f467750467461744f4267707156573252663054354c55524f4777614264555a495944564762656e5146436e544a792b4c6c2b673177584a566f57564f7278636c7564485355743150495035435a746936364f33523547734e6a31706f2f6d6e6143474b6e506e3343425a544c6e6159556631754e687364555579354837576a594b365a6958526f4c6c6574524f44674b392f61763563703130557a756f654451475a4d746b4641706d6c7331536e4c6e467a2b4f4c6c7238666f3475357a4a4b65714368726c5a31756f504a355a2b5a2b68717a7439334857492f6a33647343647155457750614b334f2b5a7742424c4f6457494b6a5a4f38496857564e714b6d546d755752626c7a536256427a694574793566744f2f626a6d34703063316869546d3843594a48417634575a6e496163345130364b614f4f613164494e4a7242355039484b544b4847524959492f704b6d432f3341744c56752b51506543646970657548696534696c2b2b5242544878396133646d545569462f46756f54784d35732b6276474d396744307a3634772b45682f6f497235376b5136766a766c6d43676d4f6d6f774e6957614b575a70396837586e696c7066715853574172355535794f706e4f64346467412b5652306f426f7a5872487a484d6e436e6268304371726975614c4b6d655069574c5657694e464d7370464651714f43784c79733679665563696e342b4d4e754d722f4e337a32484c75427638414b614d792b52384e743266714b62426b647835554e614e455863313248304d344b707662636a4a756859494f434636667248504964665a4d354c673847583979366a484c383176794f3930696e67377a5054586d397a565236454b71763138304844476563446f6c666e727a325441774847314d633933762b46684e483174445075744c31363444714a2f59782f426b664f7232666b2f355a66517248384f323372386179345a55447a55376e596a6b5861457769354f682f6957734d36714458374462396b334f427675597244327256694f53493751394775332b596634342b6b2f6b32706a6551596d355667594b70632b69334238552b66477836484c30796f2b4a4f56373033566659685a397071347545595a5648315855676b76683476643374584e527654365565765834336575655149656b33714234313544384e36623773626c585a4879673539447454694d7937786d57315a4a474e59664d31417554384a6c4766546b5a2b73625576576332726b5450623854514271314d45346f5a32636a64793668575a506e334f5832667954333132354e5535554f62504f6b364f772f454271556e324d6659387a7656763133534e48507945394a2f536e79487755705049664a2f47774d39625038696c774f3178314d6a6765777648496871314872476e65307635697a4d6d44683872657636483179363453562b3971327445387655654b3338796637633371423661656f63326836477934336e6667476a6f574b69317647426f66443435705236476959344f71366a33384e316550687270345a413154424d457948663777636670614f76573163583562534f576d354472592b33546c655370307037634f743865787a6f474a794e44375337707241634c506a64313265346834705876345037535a73492b456a70694b7a47617878466e2b4b6551374d4770436b65416567593864654352427a37496b477753355939432b504f7a69436a6a466179396e3767424965774137384f5175765a3061644c4e675a6a3531736c5062796658373138744e6d35545238536246797a4f59632b62306f6435332b446a564d4a6b6d536f7846334a77482b423678373856436c7a6d6c796f7378567230437550337857634b423975776d53666e756d763675373375565741462f474133367a712b4a73454a5a6c6147626f6551575a566d52704775323661476e543732756a517253726d687872766e6651355762554e6b574b7272542b793739314c5a31674d7070716f414675516f54347835463434454b77793231773170746a74303963735a704a576e505a6e555756476d3070462f795444622b32652b6674546b2f4c4d6444754252336f5836432b724835422b714f4836502b6c50696d6a3556357035426f7569352f4653567a397a6551667946643274553654336344362b6576534472574549677541306d596b52422f5674533961563357747965753865716a385a76374458704a34686a592b7a2b514e326a36692b513233654f4d306647754f485056343137466a64735a38334a376f6e6132703070626b385353465567784b33527a5541734e4e336e583972744d7a464f55646176477637566e34795a386e765236582b4b386e7a4e586d6c4e4b556b455432355547485250647453534e544b7a467572334b4a655364354f3034505a3765324f53342f66686658314f2b2b5a4573372f61762f465855304d344e663073384f314b5a6e416c4e32746d3955752f67636c6c7a38325447726e36704f6571457141716e3470726e5854435a4f4f7858624854372b39666a774e4b5079622f41506b3758347165727564326a3036645836472b53786f7a666572484c4e3373396a305a7a467142635469344450666e706d3461666e4e6d6a5a41344f756a6f37396c6c39503233557250486d724138756672392b4c6e3552663269667959384438316c70667937463156627668506e4f496c4b736a794b4343335152663433715057565049727259635768543074454846774341454359664e2f586f55316165303074587748702f77414431667a507a6638417769312f4c765348427850463972314938473867785976422f423864336a654c342f3667315a566e6a3273655558595a556c715531585a6474533562457331556d354c66384f794b623531717a6f36753233776a55587a7a58394850375466344c4a394c505448732b31366d365931503951504a7a62725a3166714235756552506e364f4771784d35486e3436585655464f50766278504d657873694362304e4665306276614e5864626a5742352f7678742f5066315339456655765638703868315049504f7366795459713869303866513058755a722b553150537a526f58512b576d66526f4d733866325a695a2f4c4e7a39476765474a396439437471634f574257506d6a745431303954664f2f4d765450303332664837645455543554722b4f59464261785a33386e585a6671374345314c6e614d2f4e536758447a35486d6c562f7743775951384b68396f694b317246726452733736522f32322f586a314a784e4f337a6533483944427a3563664f38586839534e43624a6c386a505a65736d497970736e35436f6c376d7033474261795949556d6d6f50736d30474a376e6257705765484e2f442b6774487758462f496e38586656426e70745a36772b6e6d355468382b3249654b6555566561654f34577851755757703777304345382b674b4d57466652425a74704b75616d6f334251464434744e4e53737a74774f68486a6638416379396650544364316d312b505a582b584447582f7147452b32694b785954615447337664725a394c30324a63355a4b42527a5565784a4c2b4a55786436374364436c757a63526679373832667a792f4b2b65627754785443562b4f2f6a6d7a456e723962613061374e666d526f7275736c4d6b2f432f6c446d465a3853486c794d576e65345450345475502b706a533074506d6e6d6b62356668622b494f5436523773586b4f772f5639522f5562794b764f5a726551614d7137506e7a7674334658334b79707077704846656d4554354f32416673512b327959723039736d484c57314c576a45637452735a2b643339744c384a50794539492f56483867765675696e3070395350462f424a3942587252342b45774c756f77456147646c34586d574f675368334d7031586a4a444e5170456c68306538774c36704a53326d6c7236744c5670586d722b4565446562396c5637737a4d66534e532b3650624458546d55307a47366a4c5553343471713177315666565777482f49336e2b5a675079392f334f394f654844774873692f745136536679612f427a506e386d59725a753943744f2f78507a534f6a65587045334d5a725a642b55334a68353541505a5544474d494b59763677557a54464f626a536f775a776530523776563466454f6c48342b6972786a5035582b3036497855545a646e4530354361354554783344327071364e426c4832526469395a486f63594358382f2b4e473335547a517776504e3868754d4f4c34467555594e3238553939706843484579364c654164736b45655874536171736d77676f4a46556573306b69387547664f3834706a7a5653716b3537673378447a387679664d7966457541506932472b524f7349496e783070727570796337582b686f764a5a7230454c58342f526e38364a6b6b584c724133504b676a54455448455433316d7a2f474d796f57315178366e696d6e324e486c32626d65574b356343754d2b70594d6b3338656a3354314f304864725a4d6247685364706c37436e4b6961745a6e6a2b4b414a386456344a346c694b4f43724c7a354b35567a36474d2b695348594b317a70353673375144547a7a6f4a49615767785247356254622f4d4f4a7978465879517252615a6a4843423471502f414a514e356e6e2b54666b5036505947625864714b6c394f6444636d552b655a75526f35326a74616b325355484d3250343145552b4b70502f4856645336592b73686d6251544b6654396a6a464a743362683539725262316a2f72767147515063726f6b4d6e31565449437170696e532f7741614b706250682b312b7548316e50616257442f704d442f727372793959786b4a456c41657970744c576f5a7763356856546a78665949656c3776693469376f4d4231487731382f7941503952394533652f326b2f4a392f754730303956664f6f67456c3930673973385336574730625255744b654958495865314a345443516c426461532f7554675a4d2f384159467337596a644939555034372f695635546e66672f36572b5065516f3534373534486c4e666e5742724252677831513833735079597767567430536e517a536f576e466c735737352b4149533241594d524d7a2b764f7671523732307832526c36632f6e37353936445665512b4a2b7366703574305a5764492f4f6d3836786f4863696a71426d4f554f4c6d326f6d474c637464394e4e77722f2b456a3739414e6b47346a2f70625269385a70594850792f2f414c744867362f78673952664850534f3276473951664f51782f48634731474e74352b706b793667664e3544595656656c79624e4163757935552f386278695a36542b77517a304f45465270657a7a46367a6165576f3872414d666f754248745638314c546336357841547836317047626d6e7a3939617a2f4975393733762f414e582b2f7743765137486e6b576c6c534b6a4b54734e39744447764946632b546e4139792b2b372f41752f766f2f7366643376503137534550367a36695461586775373568666f6b464d4e656f2f714f645548556934306a2f384141373367447a337336496a7a764f632f592f3069636359465765642b453666695630364b77446772506739556f7563357a6743504434522f3566706e534c39632f66502f414b6a2b72784d326d496d6378496a65506f6248682f6b6d52742b4f36756a6a6275486f53373252755a6c54494e484a7567702b3144666e31536b4a7a324a715173774d4f6a336e5134584f2f7742577457733169747048394a372b324e2b65485079322f45443055383238373064732f4d57466f2b6e2f414b6b36384f585357572f792f7741486a796b574f7469685431507836454770486f66735669456e3871514c6a6f5238335036385058307664366c7178503841434e38744c79794c65646c73546f73324b365671614e47526d5475524442486f6a32776142386851376c424455794d443661526f396b7977412b6d4a66764c6274357335774f5566722f38416d643658654b6563362f706469656f755a36666576634f646c79364743504147695762364774722f414d6a736b70794856513871316c6e55536c636f6e6d545657494f695444302b69756e6161377475366f3171662f6652384f394a74524870522b5447353464356a79445062445835463476335038303862584474636e75444f3378304d747858305759644643616156396e42506152564d5539484747642f384a612f4e546c477a324766344a666e5234686e4e38567a634c77592f555468353252355634506f642f68555865574d68472f4772784565774b7275314a71346675535066712f7053617a534a706b7a2f6136553865626150505a2b575034772b727634752b6f756833467630643662783379437162757036652b5243784778695a446d374d65716c6b6f6d632b6b474839727175556f437356702b50767659314270374e505572715269652f774166583968542b582f64422f4a54773335555a2f714e53634b376375576572667941647034534d54536e3279746b706a6e396c62432f38715830487457356b386e79632b564c6d6853562f6361583451764235622b51583578655a3561765558314638354c772f4531482b5565597434446344784c486c54456e6d70505279505158306e41346c76636f4f684a784d702f3842542f7464474b61555474726d7735682f6b6379526e714e356a6e2b4e52707866455a4e617655737a566e7a7052706263736759485a42534a4d562f6c78496455716858307a41454237513447314d34724d386243492f6a72366332656f76724434706b526a323256657a6a45523854444d73342b4837724a374550644f446c485031616c71506975554166364d352f6c2f523276626c693366482f41414c622f4937304e322f46505544794b6e7858446f7477627456756b6f6d4c6e6e2f3136412f7948476b7743456347704c6b3842796e4f4152454771353872766d57464b7a6d4f49702b72514b48446a79746464544d2b6a4f432f4266646e4f70484972304f4a52795139566a46536678767a4c685638765741796234534f636c6659643831752f674b6d616d357a3048554d69624a304c6d6372375848754658774f46694f635350574f416e4a48323939356a7a3750764a6838507636747965663248592f2b3142366f2b4d5932723558365137666b4f6e6c3648714e7052566544615375306e34666d2b5735792b7a565a784a7a726c7535714d5a5a6e304571633644646d6d594b2b4575562f4e7a363854614b322f414f36327236466576475a34355235353661613369586d666c66672b6a745a592b4f2b5365522b576f7a4736636b5042666d76726e7a784863464b306c39766f787a66572f68355856554c616a3476363564394d347479376873482b4b76692b7271346c6d352b52486e577836622b5557637a5175385a394d2f446647416a796542566f61316356586b7a4b466d797a693957486c6a6f656838314d63337339394b2f703055314a694a694b5633562f4d4f593339336638732f4666514c4d7776547630443876395858655965527a5455376b5733716437484c676130742b57357a55357a42534c4b456e3851787868314c357158726459696c30344d33396d3035767a58326a7a7356656f7572733172436e52645670624f55766c6a354a513431656873396a414b35616b352f794c722b4f57644a65345153513854306553414147505a6a484447424f50437678592f4a6e31734744523864394d504c7476484e366a3759784c444a35366e575573463357694c6f356158533050746655667867684c486442344a544f3673366c4b5478746a417448572f74792f6b3734706e79767976546c7433755957744a484e73546f7271314b72686b6f416b385a7a7362706d667836766a39704d55566b7a466454575a6c5048767132347a5951754454386938657575772f576e78665867513642687430706b3976763257564a7757456e496c625578535a572f7741626d2f496d51452f7236314536536b58336b625a345478723146392b673335677a654d656f4f6634384f6835564236622b526f704d4a736e7957764b6e384e3057794d624c524f312f733657612f595977745157445a4630453038446a48476961536c395064476574683176394b667a433942664d3855386d72386c673845325a39544c7a7448796e7a37794c79794c7966795a59517a7837746d666c4d6f564a506d75523751306d6b53666d6448326d496674754f5a664e625476453539337645673957507a462f4c6556766d586a4867555870312b657634322b7075596a4b624c3542355a34566f753863703869684a79384370476b346537576c6e6b76504775344f4e44724d666858456c7746303572703666435a7a6f366c527a50384178532f4e4c31533866444f394263584b3872336679446b307448302b394f2f544f544b512b54613133626571782f6969537a3172576d6f716b7035665a522b34514f562f79557a4b54386837616d6c5765663841647a7a6268623372642b446670442b4231754435352b62336b48682f71482b5850714c437a315238652f4572303975783862302f394f3837376861554f6a36792b575473356470706f2b47672b2b5035587775704361784a7334446d4f4f6c645732727730755854707937767866772f33484e7a386876567a7a503138387179764a746e59312f4b344a4d3352782f484964535a6d58346a34666d7a4564576434743661656c325a676c4c346a347a6e59624d39795952347276757a61544f696d38506d48656c5970474d65764f514c522b4d66354d655a2b51356e6a666a5870565634354c736f6d71356c327971477770524d6b4a6a306444546b564979675a79643853352b2b382b4a426141635a65304a6d39496a4d327745664f6678482f4a72303067645270594b475a365a315445417754734f674a732b7a62356d335774536677304a6c2b7833716e467a6b38353071633933772f416352715674306b62726667622f633139517677553274484a7a504256374847624e4b2f4a3944794465334a614d374f3177785a39565863414d306f64706b32625a2f69526b56446634656a696a536b6b6a2f41466e71364664574f4d3952366650523338676651663841754c2b445265736d6476654f2b462b585a6d6256682b627548782f4e78504e2f4737397632754f325478797a2f722f433649624b653165306b324271754b746f74436a67634e71583062545874564735487052342f774346654c6e75554836692b53656f506b6c307a6d32796551306f686b5757566e5150304e4b4e6b684b6b7a47424f4b61357050315130494570644b4a7546505a383754615a6e46646f3535666e6c2f6344394d66517a4633615048664e76466d36307939634a2b2b4d33366d6a715a476a6f766f6f32384a5a3475684f795055375264504b7a70696b5966356a6e4a7554757a6d4a6e3230744b31353431484a6e30702f75472f69643570695a6c2b7475446b2b5461556e6c544478764b6a747070385838323871387a546d364c74633766496f6b6145727353574734697a6e78635151473576424f716b783662614e346d636a6e502b5566342b65412b74506b4e76714a2b4d766c337031752b57626b2f79656f2f6f72343535646e6a58703752314f7a316557654b5366566955764e30632b71563773675931755134484a594356797a48527270337457754e53732f6c734566776f3964394c38645056627872304b39576c373370622f45656434544f35516f6734726a62466c4b396e6b545758442f4a44546a754672786338456a4c5a3150666c46344a4f64576d2b4c57727a44315a2b562b765064586a6e4a72415a6170706f752b514d643543724a737970624a7450496d6c644b552f3865734d2b3666724b67612b4e7333304b55314e2b4949366650696e6a49325939476657612f44394f6549332f586a775445704c79523871734662633354326555517773376659506a766a5a423947694c63594c574b6c725448544a734a476e6f6d4375717a74586e34563966722b6734612f3363767a672f4879503055382f394d66547a317832665050586a7a44557838725366344a35515466487376784e76665a7574303738697a764e366468556169446a6f7372724164754f6c384a7557313148583750705833566d316474616a79755a587039742b554c6d613562636e4d6a2b6c6e374739564f6f714c376d6b536b6b537252554e647a55736e2b6272364565315a69376a532f397639643032694a7a4559694231432f743035337233482b58486f5036596567327a354a48466c656f656a366d2b532b7a7832656331654b5a3863502f414a393545554d47625162563938557a307a4637796d6f4e4a2f437368703933737731746e753757742f434f6c503841386f37523452354635622b4a336e43714d342f557a65385a386f77504974327545635974484f78396648354a6e377437376d507a335a32733667426b377a354154712f3874465045777078396a7a45586a34526f662f61772f7549356634632b6265512b6c6672465471762f4142373956725943386c572f366b6c50706c3548786d584b6e7a624f774e504a355235426d6d4d65616d7454573844366b7876564a2b35676b6f31396f3066655275723271666365326a7837467a665672782b4479507739792f4d76444e32624e32387a65785777303447394278566d706e7a2f414d62734a663841567a3664595669364f626f742b577a39483262697736377a4a6d4b7a783562434862667054357a6b36316233593962494e55575a4f4e644c3542565453473456444d4f61725075666e72356873764a32546139785654752b597830436f64577468537a466f6e70496f503149394f2f4866542f3030395676554c315472562f34353478365a6564364e612f494c704d72427a5a4c4d6a537035744c782b6a39526161506a785671594c4977344d7a765a303241424265737a4d3169766950436c34422b557671443448344436682b46346e6b4365656e33717448646b5759745530635a2b4e654666794f7857726d41444e4c3954334776615568695643357a502b7638414b397a6570694c3162556962566d5935716a5652586a48516f586d346a693034366d752f6147556a556d72716f4854446f5439706e5037424d57364f6e355563454f6a2b35763338775471432b375061347741375a62634e32686c65526f756d7255643056314e3874736c532b50575636774e7a6c6764557444484d642f79514c366e2f41484d44684748766d596d307a617342376a634446646c37707a7a61566d5254426f3961615437484b73584a7545775a4337394c7155776d4751474b674f4d773970653933476f576d5a6e6241395850704e3636656c76682f706c3669655872386c385a66554870706a366668766a6347755436633358736b6c466f554b7a4b506a79795055304d467047665a696b704155714b7846495470382b315a6d3159322f454f4a506c5872707561475550386835436f6649664d4e6e794c66386d386d7a586938394464716157716d54484741715a624744755756482f394c394f655a33552f594d4568547a71696c5938785748682f6b3932747444683537336e336531755433436c5261614c5a457946737636532b6144314f7343794e5a544b4e76784e4e4b2f6373506c6c534e706a4d544139506e34662f4149512b56493950734f3779647a4761766e766b667a5a577a422f4970546b596b4c3832692b484d7469575855773142734f6c705036536d415950476e696a6e524d5044716173627545646b656a4477447759664766484a50486f737a48544f6d4c75644f663259335857736f6f6f334d6b744a47596d683156685a7159307661797570587630766b7059526d3467344c7a46707a6e4938362f384165432f435a3369366e666b5a3662795777522b47725a707362342f6e54304c314f36336b474b5679596d5a3846525432566131454e45345649657a2f414e564c324f596c4c452f31332b7a36756553306473656250787231727946656349307368304f5034364b6b32444a546757577652624c5176745557694d3772586f4a35555138534e4c54416d3558466648397568496c3254586c347a786a76485562542f476a662f7554666737355036732b486132704636742f694b2f7a57756e42314a786e6c3831384c7a3464546338687a78737079512f68394b4c4853797066474f2f5a2f736f6e4a3766575944684634304e58624d63756f504e2f6444654b627155685079546e54634643376f3368556d6735613241685a4a34676856704c6e345878674851465046332f707935784c747a547739667a47364e2f39732f3841506c487033345636324f2f45543150336642765038506e6b5069766b486a324a547330614758745652686c313134304448567253624b6c726b556178633370716d367451392b486d66763841527a616d2f736a54765178374d5455484a386c79744c7852326654484f5557316a364f647139356e454c2f61416c6e6a7861336b4e4471464d503479366b464b57523857376d7563786d4f663134416c646e35396b524d7a6169486a7165786a5559765572685456554c6b6d72444b2b5a4a536c5a63746644634a733655774e62386e506c482b71784d78624d395944532b31546f7a553638686566316174465874493032574d726e3050725341796634556971697146433163345065417433744c6e2b6650365672752b55434530456258554e35633544554b4c342b48557152624f5543436a346a37502b656c6e6e447968663749515558545772346a426e2b65776349446a4a6d4a5770486153715252395a632f3230716f393444304c5766474b462b786c4536794e33666955426958435a3768344147634f4d7437617973312f4a6d56565635755537366c787a775664347979684e394563382f58733972467a395a7850434b6a7267576e3461532f787a74776d4c514c61383879644f667a722b437a50483639534769696e4b787354487a744b694f353675464c786d4c774b6d53664a4e505758416238756b59664d524f70706237575435783069594866482b30642b484871393662666b6c6a522b74667074722b505a65313430304a7272786e79636961696c51386b62326846303561784f54506a7a417454484b4a764b464a433070715a31636d76657471527474314873776c394b777a4e36756d69664837516a4b73567a7337704c4c756b634449744a44646c31514e374c565047786e41647973774350366153416e554d5235322f6830346a786c6633362f786e387538482f49544d395a2f455043764b3972302b337646714339524e434f4c63374c6b315634773553646a616b795638564356736b6362794a6e786762514f5a5a4f44726152394c32533854545a4e2b623452775172386533762f463833794d63344b4d7656355a6a796b75422f5863736b2b54367636736f6f4c7478637a364d66717069745a3750354c3547474451466a756f5536326a7144565176714772367458572f5942784f4b4b4748392f56464e307038716c2f324477654b51436e67592f7744412b78726736423658505266384e66576a31523946667866394876527a795477543070386d39667654755879587933796a31473870504b334d507776456673506c73385a6b5931583874735744744f7357716171672f697a7554736f4f52484f532b62625572573270616562626234523354307677452f46662b31372f41472f66796d387738616c62354a367252666a78352f7a7954386976504d4c2b623868386d302f4b384c51784a5477794e66662f414265466a474541726d57743570705335377a6a4a334b2b574e58553139625469657a6e70412f6e5954565170354f44554541415a484b7a746c6f31493441727059784e4c56674b5357502b33394c486a694f6c5836536665664d6675422f45787a2f70436976374e483158696b325a783052633656544c2f69694e7562774a376857376e763537506a4d2f627a70666f7945777458305a39655056373049386852354236572b524d7a6241557946325457364f2f427267716b5742772b51654e305543463837665a59565079437854466d62782f77414139785a5770572f473344313637687664462f64582f4945717362766b58692f7072354c6d717a555a2b6e48446c3650694866494d7958594854346d76593634575937677347686866346d4c3162426370553441412b592f34656b6646616f563954667a7a394a66586678724c384839627678354e7138787533755a336b6667336d724d2f636b32646659327457582f315a324c4f6d664c694c53306b4c676e456f5063416e38564c466644324b364e36546d6c736a58337933314939472f4376506337552f46374a395753385a733851386344667776574e32522f4f34486e6f3258467146342f62347a63775a2f48307363497846314b62666a3035773979536f4d4f33725330782b30323866772f684856503855667a615041325034697a583856767a2f4c6648504835616c7a71436c754a645039586e6c474a4c4255766a6e334f47717a6e2b6247784f2f774362512b4658766d6268716157666b4f2b6670462b5158703536734766504b66492f467433664b5a506a5754463548566e6b3947676566725577507a72307246336a35506c6e7257746b36326c57477173376a734e564b663634375574576541763666305638447a4c6d2b57352f6e48703950424e4462306370366f4f712f77444a4532616a5755366350496538577348585547436e74576830307a66622b3155414b6137707874784131732f4954386d504166417443575344795843766f74696e6f732f6a7270464e5841316d393969614f4f5a337a34654f7945326739734d34554d424c6d304f42516d6f723130356e714f4f33722f38416c33355234723650656f6e6b4b5331486146754e446951397a303630314f496574493755537253396f2b3178456c4a65357a6c716d6144714b61446579386668367161635461735a486d6e794c624b476f6d6949467a4c35516e763342524d79743748726d6649357a692b5850417171484833347a6d2f5a4f2b583974644d494831327a6e6d3669592b505839386232636974526446754476354f79316a6868475072635071617941677a357959746b74302f566b314578416857614649384a4d2f5648457a4d3952324138522f75642b696e69434d38646277627a725638676d627052665949634a45547644396d654f4a75507443537a6f33495546503730554778566c4366697a6249365249694447665a3953656c7541326e2f41427739652f54333869537a76554430353735446b2b652b474e7a34764e39312b526e70316c78584f65796a7a476875565a4b7465503771714f66575767334f4b6b674d47302b37395a58704f6e7774326244714a36622b55342f6b412b4e54335a486442764e504d75366657336c4d58387261795a2b544c6f3266464c6f4f354757782b2b4a4f59772b376c676c6a4568524c647a33374d6a664f6a302f394f767a463943764c2f7741552f567971697677507a48783835735865626e3531766c7669506b61744461737a2f55444c334c6d665878364d746e2f5a706c2b4267384c4e6463437741794358474a6e54763779766171504c4e6a2f69482b456634686573506c5870722b5a2f71556a314239527641664e664b6348797a302f2b4f2f785877792f46444f6e356a3379716c393162716c7769735172476e322b3078614d78657849586568377a56314b317470563256734f346e6a48355866682b2f7741563848772f4550587a30777738664438503472516a3862336f4d593850784c66626c364869306a2b4e474e5648385776597334364e51393054754d5154797874562f41355a3039544e706d74766d4a724a3632654a6348782f4277742f784855386d37354470655961477a7a3141794e3777334d796245436e79652b5849374f376c327073346274535655664c374f54583038645136564e71705472476e347950464236716557324236396571336b3052737130356655667968612b34485a3335534f686651743274777163383179787955517a73565342416f2b4c6d75597041706d542f4146366b526d6c493634722f4148455558366865515765537433626461702b6e616c382f302f49574e646e6a457947567272325a464d50666854324a6b7064377a346e57634e51764d36666c4970784f4d34344438377a6d3668304e554f32746b4f537051476c5670654f5264754b6650417239475756614f7a725a6f466848336e657144334c6237535761516375414c4c7a337a794b704f36486c3074353673582b574a395539465178487351335368724935435333542f77417779667675497a4d7a4f66337a454a644c2b7078474e757a6a3637674b723166496468794e65764c474b6e73726863786f58356b565935383268456e6e7a4c4a58456837595763627841416f506d2b583466625851626f43327a357072686a767938326777576558374648393275757467574e4645455a467258426175704a4a7a324c4833636d4d35766d55762f71714e3031323535684c6654767a7a2b4c7a796a31636576536875527035535754335a6c7567473739694f30722b66797365696a3544457168613369415034515546565051412b4574786d63385237422f37482f774354323336302b6b76715036506556376172504a2f53346f63487833794675314d56666d50684f6f55757a49755670526b63354c2b762f77444635714b4c6c326d435845396f4c34337a76617152533162523851363665612b6a6b6a32727377396659794f4865706c315a66585a6c6551347a353342557a366a6d644b7968795a376c6d6170442b2f30453032544571656344356f6d4a36534e46507970384b3849503049395a4d6e7a54314d3861384338623870394b2f4c7654377a48613872782f484d2b33786e4c322f48647a4c50626d7a3336564464436958355a61527a3636554853744c6955373739502b4f756e4d37367a466432326477386233705a3470365579666c7869353370783575506d4870626c65615756596e6e477434387a7831646d546d5a58645038412b3650426f30726a38667a356e53324c573448364761664f7a672b6c5453636a6e70544e7664356d764e4939412f70392b5a48714a7a46727766786e2f4758563955387a30356239625239524e665a54463450593061317035496d306170486552616d65757a4a57484a363275482b456e63587756304e446e4a4f6e4763366d70743344745a2b4e48726a58357636655970612b506b654f2b714c373735764a50485131632f5653414d4250385a4a4f513063356e6a62596d647979532f33494f3935475650442b42334c6575326679696f667a7179386e7a6e4a4877377a727a447a7642394d34396246477566776a7933613853332f4c2f49797a635671566371687a56726352786c4f71615936644a4973503550692b4c3630374c3655346e4d634c446d4834706f2f6864344c724e317651653731425876654462552b4e354a755365542b717574354a4c7476377052515a766b37504c50462f6779664b48575230447a69457a4d54394f67472f542f334a627450765a6a462b7476345275582b556e67657036732f6858367a5265586e52626f2b4c5a75587352626533324f54794b76797646386f38646478723036435a42386d316c5336506b535830305463674174684a6d5a3952593838394f647572584138742f77436376347a322f6939366d654e51322b5832656372395466444a664f72473633697448692b6e6a625672336c3544342f586e38314b6b58526f6f46594a7554785032427353306f316344697a37744b2b2b76437533614e4d5a3537504a39504438657a31303358624f3334786e4c69584c6f567a3248627235655761507177697736466b566a552f435143506675456e322b2f726636306d63635a4839462f7744486e7a4877583849667863394a2f47746b6e6a506b654e654c4b686b796b556a657a586c5a647a59682b746e59724f5174564c5a4f7a73704b2b776d4d4a3653724d6b39556a7872784f7271576d426133684839336a38613875764a2f6b38623141384c5670764d4f3065566548566a675a6357573666506248527177664d476f78646b72456c305252596e73786a5377452b3952524f6865667a44645030372f41432f394c50566a5054354a6746676167563534556d6d553144336b42642b586838793947344a73356e2f77584a2b546e525072754f575537715072647a6e5474544554476344587231712f75792b6858704e764a3842444438343832382f314e5a65666e346e707a346466354a72574962474e537532367549737056714f684f6677784a385a71437a2f7378684e39676e5772375065305a374e525375762b66722f4a625479764b66783938683859786178444a314861474877396d6d2f5a4b5a74575a354e4e6c44795a612b6a74594a733662484251717961795434756470544265644b59356f74776763576637324834767339637678356d39574d794936746230654f58796e574b2f5a7630796f384d75782f5a6f74797130516a784e41736459775a76637149584838316a5170744434656e32612b792b32506947356e2f7955624830737a385350576d4f6b6f707648365057326d724d374f457131515038412f4738564155534847786e64536478467a6b3757384c326e39637845552b3150395a662f414e77742b306a506658413956585453507a7535334e704e7a6a3638372f686f55526654644d6a6b396b617a37396c7179574e4447482f7046774748743661442f726b47556e783656594851747130306336785550476459684970614a474d3378505a3130354c555265785356472f6b41744c6f64442b732b7835354478694348516d6e4371357244597546334a4f704664514b4767312f72356d653332756c596c674c515642547a6758584e464b68464f672f456c732f535a54317a58503531644a4a2b4635784e7161356a71505a38684178797134665961763072367633446348456448326d48354a796b786e79536347616d6c39485847764c416275535331542f4146316e637876324b6a636c5a6b5a384d3646516530576c51507845474a387a6f56714e714f5374304b624c4c46646d366c2f41373245574c374f7743466334457a2f5833764f696c5a6e30312f763554626c7a58386f43326432695639437566583055692b66337a706b664254584f4539694b3748675975465057484c4f7269756d336e5a7664372b645251526a503750316b666c4b524a71463766326d6f6564645361566b79615a5031697162417a35453835384b306c56772b4948687a455a4f4a6e5258376730487874625642584d39616d4e2f64744a476f786737307a34774a35686b59376779304d45665a7754452f5a39784a66737a63616d42692b784a536937356a5574796f7542494a4d625677666b51656d6b3757695074752f7744736c7776656e33736d2b5a704767486c375179423552664f3537587250374347304c64577a6a554d4779462f48306a4d49637345702f774357635878732f5837427178424e4442582f414541693875566c6f4532646f7a63674a504a6a4956706d4c576358556a6f662b704178532b69597263796c5a4d502b56414865345453784966796266572f4d747a2f576a386763566b625643667258356f746b7338347951497044795459562f4664672b616370662b7536646e37616c4d767344345570696842765565355873317434562f6f4d4d415937312f5643334f583544587436436c363031592f77707953636e717674336443746a5854735447447746414731777542507830726438346d74793432384d69334d2f556b326d586a56517930626e696566574e57676c4d47336c6f6e6c706871566771617a59792b314536736c6d4b6b7552536433666d4c2b5147484d586834764f74754f46313863746456567952693063794859376341576e70616d2f5244646964464676557a7936427a65313049443741396e46555146594162462b484c327439564a36492b5456486d2b4e567a317038676f797442644f302f447a384f67454a737157724653764a6f486a5a6261754a525a387055756332644441704f4b52776a6a49734c4a664a69622b656c5767335330464e574143766d646333476f574f317847446e4557357a2f4147447051327a49575845684f4577536a3153506b6e6f573571356753334f46586a2b31424173383379317049482b546272337831367959565361794e584e31555165514b4853546e446d697477304f645a394c4b327a7073564d444f387a6d5a6e714a7337695a397678646a504971376a78336476617a4c774c6e457656535257545761755a79715652526c6c3631694a4765382b73793866354b717149416c642f55416c354a337836686772667a4757716d4f335834756e59747530387a4c306249386d48334c6d6f65476c4f444d3256697851616145776550435a7848374f5a6f6858577064354874316b32684f464979624a585263465758745556495a6e39685665456657537441596578707958726c6859674254484933375942396456414b54655a3757654f68584a5a753166794c535042396878756a78412b704f3947616e56306f637735367570686841544d326659583934375068363261716b4a4333316e706935483738725938687a334d5776516779496932625a4364492b4f5962435650424a4868784d54647a746367304c39326b397a657570454464625a6277427858714834776d4c6b4e6c766b387673673435764e706c3874556e6a2b64556e6c75586f5432516d7032674a585864574a632f79366c51694573792f65565261596250436b517343634b473946314555443279754f6f4c7058614d354975736e62734535644758555275367164763862386c4436514f656d674533655374586d636c567354545a636a46355352647254766249367161617174633273316c4c4b6c6c517479355744326672526a34556e50616e363149516a58327769695a493378376c5759724f4e6632474964784b37462f446e4c646e712f69314b58557a695a796f556e334a76396e6667464a3075436b476a4c4d65694f627633703869587177324c583064366354657856564a53616266716e333479755631536d647342682f665941304f5553657443564d2b5053306569484c592b5057334f6e625649335957623472475a7a364372717a774a6250754d73353066647833756d636233706b49453943777366574e475a3748364467355632564a577753487432326b79423674484e356165583169614f5473304f6c4e532b6c684f417750345a447135324a694a6a456930382f536f72676d5432716d75323256624f324b6a713063362b57316448334476304e4b35696d6671474f63423671773172566c554731394533426d476c717a4e766d4267367456717a32632b6a4e354b75562b5a4c466e336d4d6c4c4e486d665579696e76624531314d6659764c577150352b314148316d644d3173636c7262384f664d5a346b4e6244546e6a7a497a656d4f74727a33492b79346a4f4b75676370442f48745168474850564c70436645306f396a6b70624a5176346e55554e616e63497a7230346e69556c4e766b4e7376334f3257354f663841536f6e714f786f76316b506e794f4930475057534a5a366d386c46487a4e353968333172584a616d4f316f6d63596e454458727a72314a6e686658734b304932364f622f41424e3635612f6e79736e34426d6f3065593634776f723570556379595a7a5158362b525267667a4a435a557331646f6a7045514e5576556e31477438676e73306e65473675596e4b73304a714d7552576a433947765a6f654e6c5052694f7a7356524a79317a36486b5536535567486671443638316e51397a79317058626b61344f305a4f3639377578706d7a3153426c7956536f386447724f5870614f65634d484a482f7334637554505350564a516e4e6465396158544b2b765932614f34663454636d505157392b4b7a51396b736a4a3449344a6c55747078574364314d7a584a436e364b425753446f6b7a6d7455724e6e4a337a702f33644176354471626d6e424a734c7a4c5636325a4e6a6c30654e675073354c7a3650356d704e56476b585a66645a553567485a3154714a594444762b48442b73427a46316a6257614f6175765243682b624259706b61506e327539303673335269524e7143704e52444c64387a682b46734b52634b614f414d774b5645784578695258666c576944503457694458756f325a34345a50647a527a4f7542756858553841586d4452373253646f736c65736a4653673936763872566a4664424971725378706442516175423272416b32507353326156575933524b704f616577545a3969305936526a76354c564b5654484b39726164555755706237763841744241714553644e756a343563656531396c58665a39536a572b79684c384b562b57564c33417179656b6f634653566d595347646a4b6675385479436473392f4e6b56313567614d52453037583266473231664c6576512b50497630386c49783843594d644b326b3450716f5a5253634855396b6a42346d3869345a36316e4d5a466174356f3252737a595651356455325157675434485666796345625a6b33787036635a54636853626e5550457870722b4c2f414f4a52534155744d37434865543263315a4b63455635754e6e7a6f385a664b4a374b51715a4c45696a4d7335375939625062466f495358774d58384271543743417672434533734350514b31587336716936354c3861334d706e7154726e4532584a65387069436b53735a4c4c5531637a304a4a5470776e482f3370446a5353675061762b4279462b3330366243436665333066794759486a2b5a2f4d5134335a5a63664a49466352656b58614535694f57796361694361744f69634d7038634c686635657238583855666f4f77766875563862585974666330485155555a5271587248464d497a4b6356703079646f2b6c5744744a7a42576135674b59646c314b49714146485335375432625236396352622b44563943586363697948737358324e466754705848557576556a5054315a626e6b76366b7362663865642b56702b7a356739354a4a6f4557597a72337733654e375039584d6f54324b696d32484e59394261486530647979436f616d63716e346b64447069436b6b7033776d43442b7152386d596d4f6f6d5869386666494a2b76704257726a78614c6d506c626d795a584a56736d642f497a7a4f36356e783561614c503933487041674e4c474e636f414258593641394c592f35486135763474693331557367735565632b3636565130726f746d436866484c41756b3168454b6b6f536b785437304c4d7567615a397634714b50706c706e4e72574f6457765135626164415932663841795661633158756a474e624b302f5935306638414e62676b593542483843515a61745561382f5137734f574c715a4b64546e476369686d636f5a49613549506c7136597030587563356e654a4f684c4379706c384d30676e3577776443536d2f59367141614b473074663036695855637568565a32456333663559494f683747564239704c324d577a3476593770533943514657714b556a526c3168626243363839743577736964444264473561516d477232736a643056724b696632734e2f7a6649304b6e52735741464a704c4d3470713557462f366c57546c7361336c6c524f59566d6a5255557a42373967792f64453346633778776b455a457566696d416b4235726d6463556568587a51706f7264504e6f505643744d6261535a31424c4d6f2b666171645644524d5a4c57736f2f68556f5362795a7a4f67514f6d483444735a4d33585956514952542f47745544416530644f5452755439715a6b662f6468734e793561534d564f542f36656f4b564a2f6f425230616d68524b74636c7735594f6d3070714463396166637076325a465a63483862374c432b6a4c6358795474583068766e64385461306949684b73734d374e75615577587954726f6651716d4655514a544f4c5972656a635a61784d543746776c4c557354396872736d536b6665333453443545787a5a4b744a427a424f46696f317152527839624771686c4e7339613947583277314756465175506e77394149454e4f61666872486f456a6741524765485473577578696f775671445a4f2f6e4e5262774b6864365a544772355a5a367a4432632b4b683375614855334744564179304f79795654674c484c354744524834563258616b744b4453704e4e4f724336733577584b6f53362f697662796e4b593135653735456d44694f62624262584e70694d74576e6c6e386358644357795a36563055474762526e547336524b47574e684d623052454154385969427039305a6a4f4d385239767a32315730542b512f41314548787a4e5a6f2f4c70353156493849495749596d5a3454584c51725134304f63456d6c51627946504446584a2b516745457a6b704b336a6337735336776d2f6b46376658735365784d3653647445375538626d5747372b484c397642546866374f6643344857632f6f455879496d4b3262334d77325053685a424a5a4c4d794272726f562f4c564e5455613954533744554c356d4358734c35766d494b4261722b6761447872467245444d626b4876464d30314b6f2f64543646747a366f4b676e3664774e59353350654b482f41412f4d5350334d4e4b766942426365667a4a5371555366474d6932483270647a77744f57466551673352756c556e53715464705a3767704e625a675a2b6a4d5a50643831415a71725a4e784e6a466245456679432f6a624a3350713575726b714a585450546378337768644839592b6d4943413347767637554230704167694c5459333978736f64564533694b6b7346624b575a3044636b65554b4a6b5a744770772b3554567354396e7068547a6951535a6a30465652564d7265456e653157334e355971633053466c3256353042486d684c5a526f477967324c794a576d644b2f67393877732f77422f7838647748462f572f414e7965747a55315573566d4b7949323664316255762b642f6146753051634b2b6b552f754649653067764d4a773466776b415a394f4f75704761326d6574544c556142524c7932355a71304779527a725139637676343655616d45444873582b6746795163322f7743555263483370572f71353345566a4938387a34516171536978594a556e447a3574634a324b54377575634b2f5a32726a6e5351476c6f7462304b54434f334f71734f63585a78743479684d36353562307a46465167724e53616c41636e63784d386364302f414b67512b71582b6e2f645058517163496b54733565516f4851726d702b64595574736f792b764161614a2b73736736333579686c6d543768443746503737326b4a6d556c3750312f51454d6c544f4e2b5346524e6d746d5a7a4966792f726c3947356b4979303270343631733958316536697758524f796668306937694163446b69443335586d7a6e4d69412b556f72517a5058704b63324f466861624247672f324c7565503748426f7164774235373378332f4b4579792b763777506c376b634c6f5a6b335a35414237677166534857474669636b56744b6f6538334742716636796535687544374c442b4171615065514745774b6a466267723532514e53536a75545049783349553971304f392b31317334685052333779564f4d66596c514a622f77414c4c33304e435065527935325a41346f58746f61586331637a356f34584536766a684f316e77364f74384c4e44323561336f703635707a465970767a703644486444682f2f41486174394d50347a654a63436d7250356436682b4d393634593633534c68314b364f3970386b6d734c51466d6e327079566a4e52797876412f53675a4b62674d2b7632654d582f414a6a7a706a71624772532b624f3247625857775a55794463564e3532596257584e6a793450467738624c35506d57756d5a557936414b6e4e704d614f52317057547530436e64584e786a2b533630376e44436a64482b656e567738377a417032614e6c7a6556546f5354705253717952716853656c4247343176436c566e41503553797231755939412b524962715575353432334a6a626d5864632b6e556e7a4a4e4f6175705952796c34366b657756504b47774a6a437a336f446e616151746d54706538325671616d664e504b6a774d2f2f414b30664443366e637246694539397176744a64745149746e5a4e6e30714130314a483638345441415a75666b714a6374634f6a547377364e47706f597963776331312b4a6d4b2f6859736a52644c637065477475344e6e465a304975345a2f35696659334130416b44592b716c50526c505252586564464f6f7a4e6f2b312f4a416a4c4c514f5636685a78367053737361496470622f6c516c3376374d7632666342314a6c37453230564f7061533950704c38646b4754464b4c41796e2f506e306d6f626e45464753746f7836375770556e2f4143626e794b4270384d3450367a34625058583139685a6d586b355741742f57565a306d694e5538394d6e6a656231624a51746c6a527351352b4c626d6f626838704a2b70376a6a6a4f68337a4f3471525a7870632b6e47302b4d69545338702b4b423433397a54367645726862706f304650334973393953367164335656394d4b5a366b706e2b4577453430306d7a353166447156317567442b3741507a637a4e7230454b71504e5a48334d67797231787953797a4a6873504d2b3570447a597366432b6f4f79396162464a327a56394548455271434d36755747796a51784e5239475a446d6442454f6a7466794766452f6359497557725564427554302f41576c384c5958317a3857486164464a47584f747343596d5936444f326d7243377a4936656368584a466b786a427430707273507137706135766d556c4b3035515963442b58737044355a365155314a312b3277357256696254756e7542334a44504a36364e664c66774c636d50344b39696a4a30394857316d61452b66546e4c517662725756526649366a50346f4b453837704d746f5345786c65645a786d636442594d3753696a6a5862316b643046744c6b3637583646367456744a39632b4770334e4369706b7059444e685534764238394649632b46505069424c594677654451334c7179327073544c593678327364545a3474476a6a6e6265583431426f795a6d6a50527a532b4c515750477459367458324a75756853716d6b626a4364353153757738445155726c637938772b6331746152744b446d77507462476c7a507952307839303952535753683148487a39306b693541657862305676325a466c317a49766e2b2f6e364532744c714e30305a6c7431645a397a717032666369696b717073626c2f57524c56506f387261725335527942796b2b7970316c4e4f493149383632623357556c72745a746b6e5a3676555333787a6b56666a2f414e725a797937796e2b4b6b636138337445666b426e795a5368616e2f73574561322f4766523868516e6b2f6c4f45544d4b6a4a3862727269464b63724e307a712f682f46614b6b7475554a597752776a50566a395a564b4b696f6b64387a6a4f626f7a653636716d30566d5a36594641655a2b6172484d7555462b625470594737543152495669616d6e464e6c4f3071485470707549565a6337364e4e5a55464b71592f7742306e337361766a4f4e4f6c6137666e49727251386839396e596448506f6e7973557266354935744536614a6e57315651726662626e35367451644158586554504472367a61304b5968353961637161583244524f6c6c366b4d636b7136626b534b7133485a4c743261576c6c516e50466c576169395032757a52546f4c7a576756316176695271746d6d5369656d666b7754584d386d2b326a544a3146534b314b37554567787335546e515331517464456d537a514b5971437853316d68525a54384e694b586d784c7659584b677676776653525a7051396c757a38355750704b4873656a38564f68326e436a7579634c445263364d5a3949614d765968354c49324a726b2f77416b77543552504d4a56343337556a6f64346e6f374e6566644b6c32356c513452536443473644782b7856575638306c6e4477382f477a7954504747612b726e5355776b307a5934564f4d54727257724b647565505554765631396a78576450334b353535562b4e5471624e557a4f796352467957756a6a6848714e446861692b7931564568364b5068704d4a6a4d32557644746c647357374d34484d37316637537a5962707973655664734766734c794a4c4b2b547863627a444f6647636e516b2b6c705a49787a304b39374461342b55685163667767733164464a3434377047715646316336703468302f33444e707757616474416356426d4c757031676d517a3254384e6570306777654639674730797a4f4c69516f6746787961596a7767526d492b38664c57762b4863336b5935664b6c6677414f486556766a38507a617930756a556b4d30714650764352715a6b52706e676465465079706b58622b4c586f78345436782b5133342f6d586c30766a48692b666e58354c744e4e55533465736a6b4c506d6333527263764f5a6357303150484374682f5a5a416c564b6445615443625055744e5934563343452b73337035676548656f4f316d34656a4a5a34724a6d616473646b633031536f4e78452b653674644f766d724f544e326f5935383061616a555576553368544d464832544162566d5a6a4d3952442f4850474d6c64476c4265693249744e314a565642446f61476c4133493636374f727a623574413153696450574f3935754f4b5933636b704d31754277324579785a56787678703130787a5957724c723572593567646e464f326a416f4f7a64386850544648625064444f794569544d64583679476e7859646d6d53344c576d75306f702f34317248626b326947725635524a684278386b74327074667963747566694f576d786b736c5576614f75724a3158747370367a3633756f73626e38573734665543377063314f4f6a45696a7975365a63304939675a387a555479625762786d66412b2b366e71656a7654466d756a544f704c4a6b4d6e53525674742f6a7a63475976764f78327468666f34632b33334d7668444e6b685479724d6c4d504b584f4c78702f6a65316e5a624e43685052312f4c47726d6c5a536135344535707543527842634779754434354474654f717a7362783332665974767351742b6261765042736a4e794c4c733147364e7a5561553738313167746b5678744d724c45776b394a3066592f724b5a78624d38634468782f665179575a7668486f74725a32717234643331433034594a716e4857533738744b59726d34726a7a32554c6a376336777665785938704533306838733143477037505a654f6364315235323655774d6a5568433131316b706a355a2b64513235755847786b6a45795a725a33634552594c506136557a616c654971594f413065687a7041752b31525471643146396c4f684a385648624f4a35616b5463355a464c7a4f6f483573763745746739346d62367a6d414269667a422f6b412b324d785139697871512b747248636f302b7a383441426f334a54395a5345385038416b2f3841496d45686b3464372f476d43692b4f592b4c444d6736324c6a4a545a32696d6d5a68514161776a665451633531487a4f72547761506771505134432f69537347357652347874426e37515643703272504e52496775634531464950575a7833556a53386e714472474c344930415879435a54714d335441666569707a52555957722b4f4d4c64763167384a537651706d7572387438663841342f5235452f6f78686e326c4547704a704f5430367667577375697a396948737877593367664438677a65324b523566334839524c38597334637a3063394759596f6b33525a58686d524e48334e7a3665356a6170546f396d6a4e54627145333570356f574b392f584d6454396b56644e434b467056344f703237664d58745a784c764761737a45466b373338696c69516638414b66586a754f6e39386b6368553631736a697a3357434c7a427a4732415366734a506b796a7033356b6131702b747971654e4e5a533651782b537650744d6849683075563230484c47684f6f755a7337474c6452387944706450504b66327a363533586b6e6f4636654f7874712b437949324b69716c592b493166796c59366b6755796c30665a504c396d356a5379352f6d7161587a4f47773378476f6a54536e6e4671526e4f41374833652f774470723467353253566a3331446e36475071637673536c5a4b4a69324f456b6e7a6a322f435a696b53547a344345494e375678617346326b71655663717366446b66776d664e6e5066314362516b664c51722b4b2f636f61536a544a4d487a666355345847354b5434424c433668544861745564383451356a3257533955326f72313051324d2f6b626a736e6238626f37495977736438682f59375a37484d423375427754446836584b55314139646646726f4c516e426a63335a524135316c6d6e44384b5a2b307a31646e47787666676b436d6a6e7843786f304a6846594a2b552f55357a516e4b46665750665376747a6b57525533735a6248777669765776367a714a76617a3966614d7a62796c4e68506334324c494f4f3267334738633339596b752f664d48794c6453744f6a317932586e62534462702b4d3756706333426472522f46485649526e485248476c2f586a5735546567517a766e5a674b744c70546143704e524d757174306431634471567a2f41487048646f6135423647434766516e347078354f452f416d39797156424d737738546639797a3866764a765472386f504f2b2b525536477a2f38414f563545697245314d33764e624c75652f53576f42706a5a525333356b55554f556d644c7a6e37396b4578632b4658732f72316448557a70317833443273666768364146364f2f69333652656b6d774d2b58547a78444c57646f614d6c475a7031625a5855655678523055437561584e4770316c425241613063725756452f413934537965627133693137576a75456639633650796539503848794d765376775830793871444530474e79387a6651762b5338702b486c576262324a724e55335178766f7a78397246306b686c50315666565344696f4e545a4d78767449707a38552f445055547936706d6a716568654c3656616b4a5249386c586864653778766a4d35613361475a46597163387537505856504456517848577a31734d43563934416d5346727a4552697439325276352b5147563677656e6e686d52436a3747684c61793539335267526f4861303075596555555551746a304e68576737504e6379682f774377546c545a2f7742536c74456f35556d74706942774e38724c305633665535736e716a3644657676717a3347665539336c666a6431312f6a2b664e70364d347961716b5a745449364c4732586158313562525748556733514a777a704a612b714e3056785730564738666f4236632b4d427136336b48694d75353377312b5239725779764c74486349384c6b70726e542f41417a732b57756c633657706e6b59312f5844574d6570564e54305942752f724b3970786965314938676639786a7764766f2f2b617672313435416d48536a7333763841795a716b6a41714e5a6554764a646e4b637a4a6857424a44586f30524e7333503155663136412b4f656b4a46656c6f7a7530744f5a3863445435557677676d5a6e474b45494832616843723762705638316875376d39474242735749465071634e5165356e2b68317655684f357a4f534c32384d38365a6d346f6f31766174724c7164516163354d6a4c4d6b453335394b5a4167482f56515a6a6d33417079476d316a706b754271665a2f70546a4d343641547661456d463564336378375970744e6a367831325231635270704345557271366a4c4d6556542f495a44567a374442396950674764764970694f5a336352506b2b565365704f466e7377644238486b57646b35554e4532664c546e7a5778774f75624c4233424b70723134725245562b784e445063794178575967324e6f4d596d65484556743542567330557577744c4643476e50484b5459794b6c334b335a6c73576f334d553978786b31634a4a33666b3976436e6d564d6e6e79485277446e552b513944763841386e393844386278765548314f38783550462f35426d357347445854354847715a45655378465768632f47742b6433385839706d6271552f6f5968393833754368356e524b4c4f5432715a78574f34657154794c3154394450546d33496838753955734c7768794c616f78786139435853326c304f475074566c466b484b4271732b35506f4d59316e327a732b744a4d63356a53744938456272394b626861586a6e6e7670356f4b2b37346a3537347a3542446b482f7a4c6961766a3645616b534f52786356704433595838465665665a517379374972324e79752f73434d7571625730582b4b6e722b59734c6e6c4869666a6342614774355a4a6879546132676376644e6e4456515572314a43395775717a6a62726d354c6e4942763639686a2f75482f4d4155796b524d3949466635337266364a656161546647664350554c302f33504b6454733449434479505031394851794c6f57655066794f652b6e55364e697a576d675641317a70415a6a30436f473070574b62525731654d314844763841763365452b6e2f6b6e3476374547696b4e6a794b5372453256476c3147562f48366b3078543132514e522b30762b6e6d32533073363665543379754e6c6c423852516b2b7632536252715a6d4f767142792b2f73412b6461506c506f6836372b67384f6b66382f6b2b6f66696d356d56314e67767a737150654b6a4b36552b614642504b5071683347394976717a52722b7a333744584e2b75652f746b597658552f4b4f794872702f61642f466e31397338433166793138363954354a76443565365050475043764b50483876457430644d4266705a6d39705134373668596a6a4d32586c794930564d6d6431767549356a414f616e744770703776647855655a582b37353657666856365165652b6d4f312b4575665a366650384145363034336c5069636532666b4f546270354c6d63385738347a6137324d2b76724f484f63627542797054756d64436e736352714c75396d747157693061764e7547682f6a4835582f6c526e536454487063577662546f5a6a6e374f516947363378627944522b2f765a4768727a464e533744704a316a576c77774e51615648757245327a3958724f6e702f4d586a71666c4c3635336550586c3550355834374a357273366563506c506d4556576a6f626c47546939756777734e30326859383152676c3266517073377848357370517134643450352f56646c4d3469764c493139394e765757587776317a775050647472646d644639672b5131773236464137475859364748622f6c664941466c656648795767532b4e43544a4831676337767a4348416d61387549486f4269385069395676487647664f38625454725a573174456d66794c7831617339797073326d634a6950467074502b505936786c77765566366f4278704944536c7869726c3354575a69654f4262507066345a6f4a6e41396d367569644d2b546c356d7a702b316c36394a47744f322f553151644b3539476133362b35536d7a4f496964546d756f6c6438703555333956744f5a386f48554843747a66545046322f4d2f557a797249384c384570376658354a3558766270725a4e785553416c4a4b7a674958664834376c546d35416d4c41766a6d62422f31786d37336e78756e466561337275486e4f2f75742f774232316e355051512f6a742b4f766c723265676b586b534e7a79767a756d46766a316e71356f68574b50715a5761334657316543476c63786e4776373967796d446e79714151392f626f657a2b376e6665764e2b483849344f42504735535745536172654b3151733479756274574f76535a2b3461354855522f424837696a752b486e476b77553068302b664d487948306a6158384e667a76396366773333747679503037504e3138507971644f543533346e755a6f31782b527a446d3061484e654d55474e42324843524574726839776f4368524e3442467749314e476d744742362b667844395766412f58767858784c79326634384e577a6a2b49614e6d486a36663364504f6f356879763134743358573772374369304d684b4b314d61767167675538656a31666671655a71556d6b37656b44637a4a38307a2f477075616e6b576f6c586a47614a507964485a4a2b38364b6164656c6d486f623350746b454e413358576b32576c6e624a754f44756259536b644f756b524d3849464a2b70486b76706236782f5a387938553955664d2f48722f476c4e552f796d44553059745669655a56693172302f754d4c34626b4a686470664939613577566a75634d3550356e754730526175596d75516e34346a3061394e7457727a7255387531664d2f4c2f4143764b5a6d357a4f2b573261562f63454d6a5568322f343651366a4e7362312f63376e786e6d415a75544e77514e706455714a33576961794e67364d724c38303862723878374c706a477872796c7a61323056346c5459467934746b5a56564e4875674a4d64516c374361677162456d537844334b7264586f5047542f6647326646372f774179706350454a46656e344836632b4f2b4f6551614b4e42484272716d303937583454455a32624b6f627747366332442b32392f30752f7741326453707639656e3748457a705450346878324246756f72532b6d6c5662506d65683871675363776d37545779535658445733715a512f3063374f6769345077384944562f69332b7572645776534f767276474b7359766955476658787374466f357373644d724f7673302f634c7671742b6f66653152735575632f3178686672374b662f414b6a32642f7149763169304431572b736634742b462b6833396c6942506d2f706a34396a657333707276656e767168343936756a4173664d382f6675386968316d344e4732557133616b70342b676c6168544652776c4a4e66334f51684a53666e31314a743756777479327a58614e396678783961665433386c7651667754314c3856522f4e6147766c654d7a656f2f69456731317577764c344d686357396e682f4c6655356f7248782f37584f4f6f58704859476c61623071746d5566395a3372616c37566e2f7447763335482f41492b34652b6e527532386879766f647865614f744e644133364f686b4c687a7931586748554d4b4671632b71496156356277363238776e6431394c54586174707250416349507a6e394476447642664350474e37776d794662336552335a6e6b50692b56337176344c53636456346a38536f56496f6e585532704c4f38425a4c36594438512b34752f31313664706d596965493531344868473976376b574a69356236744373686d5749543941526458775234546146724869312f7368353370644565442f3841662f72614a72574d2f454f336670442f41475a50794839542f54666338713853317642504c74764178343673767844787a79714f6a6271314e4766326353317775454a307a69526349656e2b795033447a2b755333744e4b3278614e75344b2b4a2f3262667a70394a4a2b2b7076715a344a4c34316b7174346c435762554e6c514b4d2b452b74345455467756685037756a7a764f6e2f536661644b334c57335555373638666931624e4465576646752b6262356434384f352f6a2b6e56424a4a77657461627a43666770396f2f4e33392f38414a666f503676532f6c74476a325a2b4f486c486c654e746555593368486d56474a343842643276496d354e434d4a585363492b78644c3138353766385335336e2f7743332f576b3378776d77336c2f742b666b352b5933674b692f485838565054796a7a336638414a392f65336c5a7330674c6447756a754469476572706a4c3373655479704f53593854516c6a582f414f722f414f722f414e754f745454747a366c746f39672f345a6668442b5a5a2b49342f6c4835532b6f2f3839355262664a504a344e344977736a7833784f764f35705a793242585749707130464d2b6f6331512f424f6e3374515470314f6e6f5477616d72705a78536f76696a2b792f774469503569646572354c2b4f5068477a35522f47686d556556376671446f36666b4e564c485657336a51376d6b746853754734564f654c434e70704364536a6e2b464a5a2f346e556a68453950792f7744736149666c482f38414a2f76775438364c557a632f7750314e3941504e5651306f67763841487478486b6e6834312b2b57434c516468377932562b52654968643775763538675865384436702f324c35754876702b326173636439625150504e736550666c4e2f5a4f395872664450562f78687671722b4c586e572b783248356e6d30714c7858536650786356323567555a362f64683743666b6f68706c393063394c416447546639582f5736346e5439716a4e4f5855714f33507062353534423677656d30586e76702f5467656f6e694f706e35613439574c694c513669507234716379764b32744c71356170395a30386c50666756395755412b7a633733795762584c614a726262626c76416f6e7a48386166786230726649397655384c6850597a39714c5954665253325745502b502f48716375666c444f4b4c536f6f77374f54754a464178684e306d5557546c7a7638415634767152317477477576354765532b4b656d66676e6a66702f36592b4d5a57466436693161634f792f4d705333514430387857324c3873746a334a57664a526f4f712f6a596b303346387a6e65376838496a4f643136524e756166684846727a6e3071757077764a546879714f2b596561656f73506a63346f355576756e4c62375a495a6672335172517a4d2b694f57316c437a534148534848745833345458303738576d4a345241394f663970502b336236512b6e76706333797a537a70664a664d2f4b2b576b46506b36714f2f79766a6a4d6d69615a7a31497a7a4369502b536e63553853315455744d302b2b74304c6e6852772b30613172327848476f333439636677432f476e79504d3055312b6e4569396236724258664c676e6753316146464f646b6c75747a3746676d6a5953744c6e5648654146587a565a483978342f36707371363134784f2b4d6a7a58666d4a2f6258772f54724433647a303770737a63706b5371623858635432334f7943706779573558306e387a614b56352f4b42755978682f36316c5974747a495845535237644c58337a695235317270527a4c625a4b5a3346334e71475a685861556e4b2b4c5257716272694c684638302f4b53466764582f6e372f637a6e372f3147767478763435783344654c38477655767772784431483063337a766e452b4f2b572b5032386b324b4b356c3838623877796775327648396e4d304b6f33313439696661346555794b3633684a576a33653469542f575772575a3666414f37586f782f6350384d78504e6450776679487a2f4e3877793330526e6f65557766794f6e4a7234336457584c61335974356e7152567155512b574638594d2f556b306a6d703939374169305a4f4f32684d317a46646f3638654e656d33342b2b57555a766b3246356e58546e61374b43626f7a6247577a71715235347658342f6874516e506577716c31585a594c4f663761766c715a51783330364c4d2f76504d336a68504165496e387a4e6e65395876797139536d5a39746d796c586c7a664276453879615a4e6a6c346548324c4d386637544f6b5a785752757778343369756d314c6a2b48746c445257645071614d785854704f4f49394d5034432f32332f54623037384938543870757a7647646a7a6a617477646e533869304b504871646e78476d61366a5456526779624254503135324f6f4e585a314e5878736b776353726874306b6e77367574615a783849377a2b6d506f2f347a6c654a2b4935734f57694e734557586f61574e6e5a656a4e5458316956356a34745a314c456a354a555030686c705a513732506c2b56512f50394d332f77426374377a6d4f475a6b5358583949734a5754715a74444a303639453265694b426d5a6d4c6441414f73524d576c544e68693069585055744c35357564503457646145757334327a663147376c3359476c4872763841323776542f77425163485978504f504738792f56326c74626d58355a3254325a6632414559744847716c78356c52696c695a592b7545506e6f2b74543854356a7341523170725445376f6e493851483557666a76732f6a31363165572b482f48552f782f4d306c4a796e74767470314d6d46706b6c46756a646e706c397679536a75436a7631314761592f382f6b424b754636656e654c30693366493143476745324c5533506871573437705851766f72514c4f63672f77616b58726d43644a5757736577756341434d772f334653306a2f72543450722b674d52725533506659736b44643178396957456f5244472f68725a6137397a574a4a64506332695678384363792b554842787743626756556570332b79642b4f58695834712b69666d763841636c395763596a38756f3849395150497652394669617570782f445046632b377568356843756f2b4c3172364e61476a6b2f54506c553059665a55626178746e446a3971314a314a726f563775304f45336e7672755835426573587148363865766e6b486b766e507166353735746635436e4b783374725976537236376d646d5a6d447257565658356d66477965655a532b4249632b61435846372b6941395556325672536e4c576f3752666a503841674e6d65412f6a72343736392b732b486e5a33714e36732b626546654e2b43356431717748785830783370396e5a7432466b3875464e357062497a795a586575573663307a545330714d2b664b664e665633583256374e66366a7635346e2b4c2f6a66705a69356e6b6d7a524e6c333747444a6266527746763162746650384134586d62705a61644e33524b79576548506f424536792f776a556b6c5647373568343576756e614e5950562f77726962742b66766a39445266343556426f5a744e71335766706b7548576a4f7231336c31724d75474e692b32396e6f732b5974554b61493532477735394b54792f4963442f796a2f44505038787654354c34316d356861584c326c4d2f5056584c7061482f6c4e3132776d6a6e336639446e4f6e636e39725432677961444a6d38436c507a4a36366175497849352b656c2f6c6e724e36532b6256743854386b707a64656a4f3769563864524e5458525536644e486a5647786a446d7569593737685a30354a2b5278425470555568387a61584a2f72575972654f5051587a7265716635653651662b4f622f6e766c6b716447574850484f727671544a6c525a2b7451365a446e355356637835566b6e4e3663346837365473494b5361506153585862707847597149683669666a78354a34642b4e487148367a2b595a2b68667131332b4e34364c33736c304f3533387531306d74516c6378503656423570725346594f6e55617a4d42636458316c36647158696231724135626a372f30494f6b5774586670514b5a54504d36575971776347686471414537487363676c2f6f6d664b6b77414f6a3367674b67507248796e707a63517a6c566e64425a2f4c54727a47696567656c53774656684d464861522b466c6b71306341415576324f3650763672702f30457470313950526c69737332366a334d2f6b46355661566d6c71363937556c466c793644616d66717077726e577469702f6a466f6d3561314438307a7574773454506b4f302b48367165592b7258706e6759486a5770695436432f43597a386d723865696930646c785979463361326d2b54504e45513270356f616b354a57435464396c78696f6543776a35397356746d5936697832666748722f6b703662356e692f6f6a756257522b526b326f4665714f393556586934507148346872527230304f756c64796c672b515a7052783072633871464c6e53547673304d374a49465a31746c73332f414d722f414d52776b386b38463376412f4d4e50485a586e6c3544347a354654346c7370696f43394f786f54756648592f434b477a724e544e59535763572b63772b6236796149502b577a64487269305458485877423778373151307a624c6746425252506561737278394533663841766a64326c307369687a785a7a744e4430324c55487347543544654248376c546d4839527434526278483941332b7a422f626f38492f476638556b65715071586e425036372f6b54446d36767144713271474c587966542b68395658685067474a70307559784f533647724b345a544d2b7964686772356847554766313548744f744e395462587058702f454c542f4c442b7a522b4b33356b6566656d766c33717a352f366d2b51463450682b512b4e5a506a50696d706d756e5a6b57375339654f4e7835746f4d7a3556664a72494a736f54477550693141595554786832756e375471616358697459356872786a6669542f5a762f43533752746f2f476e777662382b3848525a705665556574756c702b634e6a6f6a61644973306b376a437a6c353964317955716f2f6a5667423372347a32545464557a536454326e5636366e4c2b586c477033354a662f4b505054663076385966365a656766694f6435745a6b4e4547542b4c78707866474a526a4955483345313878436c554c464c6f584b6d6b6d5239594d64456248634142632b2b6e37466130357666614e572f536e2f3552683667654134523265712f34692b552b706e6e777a79356666496f2f4a6250482f48644b69536936544c7a6f764736492b6a34327a6d6579565a4d6d4e6c66444e71512b514a68414e4c657952505a7674714f634835382f33616679772f4e6a78376e706858344d763866665165557557362f6832626b3744646a7a7975572b66527759504d504a4e42437664504979655071317a635758453373502f754253336a64744c3266543070335262645963694b4b5a6f2f6b5534394177557152476a50565050395249487770394671394e6e7972642b702f307846444148334d2b495774514d667768754d4b614a6b70686b6e686e36396254737674727130454e4e334a766f6656315072392b3279373673633952547346536a437a6a61516d5359385744724b376e3139305a6448395568426e502b5868534a6b6773534d62465230544e4e696e79312f4d703357763644674e786d7632482b6b4a614855482b7a332b4d3334622f414a56666c5467656e7635634f386f6f38517177646279484f777646744b324744795733466647452b4e667659337a5854345056393348504b656a356d6e4d43572f586e704c7163666164545630365466543758794871642f76562b6b486f6e2b486e396e76314f38472f466a3042394d76534c78587972796e30313849316b3447664a3366444537354a6e31486658356a73666330504a57464c6e77753479797449414e4c6543326c337a436642374c61327037545364545574613345654676306639462f4e76794c395236737277336d515437756d484e757431447372507a6d732b316259366e5a4a427733726f576b307a712b7761666d6f6d6248514a553935367472567257636a31372f32352f774333582b416e3433315275395150567649396250794e6d75673058513136704b777644532b7958455a754a343379354448584d31467a383764597670706f3976506d4e2f456e4c3532747236742b6c64756d4f33336b4e58676669626646397a5530496f4d7a46572f4d77355a73714d4a2f6f765670585663427430706a6d3357614179726e4a536c4a4e4b51574a5557424f5a63305a744e6f6a7546414e2f4f44316d386d54354266345a2b4c666c2b6e34686830357a74447a5079647a384e6c75474f5a6d716a30347648664a703076326d445576374d2f4b306e4d5033506d62772f623748573931574a34366e4d4c4e7a62302b72586832356b2b565a2b634b64634e6643333843374f35576e4c54647a486c67774c6b7a35365653702b5a624b362b79394666556152302f77436848304f5252455245356a6849384876397a443854646e384d767962747738374e326f2f43764e71576552654675504d47575a4764736132672b72494c536638412f5a6a3679526d36346a474d412f6c51417673722b492b65726f616b61756c6d65315558372b4a663979715838582f77672f4d4c774d4e7350492f567a31327a4d4c3035394e38544d795771626a71386c38656f78504b665066766a7463356975547a794c532b717450752b7938435a536d5947394452707161472f5630702b47764e59586e2f59482f43623066384158503150386d39622f58504976387038552f48766e696c33703136617638646f4c46386d3835713042314d734e792b5a7a41734b4f346c6e784653665a51642f32684e4b7051523350327656745775327661314f386537754438696644732f4f7970746a53507836784b352b426c57744f6548782f50482f414354392b4b7365446e356f71794743346c4735366873592f77426c4d2f3649504d32327a6a414665532b6c586f722b52336975306e7a483046394950557277797843697a74547a72774841314a3268625052526f317856747731386c314a3944534a726146684f504858394f626f424e5370307861314a34576d74763468716c752f69782b4f506f6a3776466642505144305738496969794561626361487833786d544e6d632b6e4a6e585838326a69396e6c756356587846513268356c3945617165566b4e436e58393565654d327459654a502b2f4e36472b472b6b3335452b4265582b432b4a355068672b7048686a7a73796f7355736648505269704770573534386137536d537769664b37684b55494151434a4f4e33326b3939503253383270614a357476722b343450532f74597a316454503153785a527a3353506367347a2b3557527459424543374744477a6f453376373739542f43676754305036362f7966663739416577497462794b36664b7a307430513675336f464c4466386b383473536a3565534c59774a524b786349664772715337772f6a6433394d506878614a724f364f38646250375650346e6544657666354b6477764b2f4838377a474c78763039336e322b4a372b64533778343639444773794d734a394f505134724a306b754b716e7055634d31456b43616d6a33756c547a362b7061756e6d504564447637563334625a2f66376b5071466e656f6d5a5435786e666a5071586a466d49687a664c6f59765074466a6d355a324d316d3843676f523056766b6f2b4f6168743861756751463863794d66614e54396a58624f33336e2f695052353632342f674f46343939767a6677767a54796e78335a6a4769306654794858332f4d432b73555a73587742393479305679615a4851336a536d425231544a643730475a63645a7a504c59614e2b6d4d48706a6e2b5a5a666b2f3438657166354d2b48624b39432f774161386d394e2f5533643877646e627149706f63316b565750354b6d7651595364445353366235584245324f59426d6e4950734b35726162597865735738366a6f4c36302b522b616f38656f79504e50433476497448797565584e7866462f4b7073344e447943774e316570586c3135566e53534f4b4d6f7771345878754f6638416b6b2f7478475a787478724562743057774f4d76354d66686e2b5476717a3456712b4c562f6a442b4f6b50676b4d6c4f3534705434457944433877386572323271533274575a615355325a50755376692f76496e6c6a6336734b4968756e636b756d6d705373356e556e66356a796c657458346e65706e343265583447443672344c63374c3870746b7579667061436272393377376c2f31753642547273443435546b2f316750656b6778396e666358414231506f56316f76476169776679532f4a44796a317639552f48504b2f473137486758696e702f4e3437682b69766a32665252697438557a5044455a4b42326f51675a32625038677037672f612b366747385a7a4e57522f4d365474764b557058547269654f3774663841634e366655372b397a2b536672702b422f6d7634542b7566693048714a355235426765426550347672584e544a2f354e6d2b505a4655446c34766d384c696165357256446e726f44532b314e534c3342377763514b364f64665a6155316665307674722b45634e7a7a4b6339357774573663304c45657a4d4a755a326c596f493233756c2f6a2b482f7546335353796b6567512f70512b34534432645737647934786b595572416538582b6c442f6e7745546b665970444a6e2b4c4f6c45637661426432706349713738674d4950617877442b7939375437782b6379704b3063362f674556533354463859735377332b345a574432766e464c4668664e333347547a497067397074354d307766732f57517253634e556447736a6a69426f636462476f4a5143574654567a6a564e77783972422b3156514379345847682b6d7a42504f734470462b54372f63496b70636f6b77304b34746131532f436c2f794a466676657531737a4b72765a4f78684878767a66352b3374507341774d534a72742b57417644707451786e5647526839537270304a5655685236483179657964745838702b39416d6658634967785a726f2b6237485a6939782b31616e664544627a38526f62504d66566d58776a4671484a70386a6d4b50442b695271537a624d31304a547156332f723452626e6a553956504b426373444d5a6e693771553879766d744a734f6f6d6a365a6573586a3059347a78326f6a786253783250384145394770593539676f586e392b2f3554715a2f546a31474d594c3066794b6a5370514e4d506175616b612b654a69664f49465253365871697256314d2f57386c3959742f3975356e3246693030365a6551516a397a4e30733766356c5a50537933556c6f5971346d4e4279505a5a7a6a6a63485241723132386475305862364c6547655472794d36544c61704e2b584a63725433516b5a7543796d716a572f6a5a62466f7a58584c5479714a77764677774b557433577930462b356e44535a6a6a4d3934336e2f4c763067394e7678752f742f655a6e367661574b723170396276494a664766536e77516e35756c725535654c49383062554751744d787037417253754736716a6a2f59374e415a6e6b354843586c703274665735657a5871504c5372493856302f4a4d59534235366c6c72463250367479376e524c7a352f6466654462656e5936744e797857726f4a58553334654a5251696b714137387a6a476541637965427a7a326376386830776c785936707a614d335168377855636372474b717068594849336658596b4463386c46783658547564384a6737735a7a7838524e662f43664364764779322b4f514930394b6a394c307136587a70306234776a6e724f695449696a2b536d745956584d577330642b543466393344353941374a7a4f664f4276332f617a794e4c4a2f4a727a6e776856672f77586d33706e35617a4d78634879564f50444a626b75725a4d2b756c53574a346c59793050426c53352f645336503465754e763057382b76616664316e484e57773737532b5143693669672b5054526e322f77414e705668624f326c533578306d62302b6648456d466a5073555334745a72686b6a6f6f7070544541556e532b7a2b75595750344e353150346c35486c65516d754f76364e5858367a4f37477239665251464f664e704c766c306b6e326c644f476c4c564f4b66366159724a32484e4d344a7970726175597848634f586e2f77416f713947637a654438632f7a5138526d3866622f3531696150702f366e3034376f6e797a2b535a39713958786f6c6b374f4873616163743156536a66306942577158506d446a574f66763746624737536e2b4b6f3879383944655679746333733971584f5333685479586b7a566c66384152304f616d61546953747959355237386e5564503467345a2b387951372b75734651306471624e526f5971392f4e6575673479504b3139464363395658742b484d624953654b582b364b307245766a4e67425a2f7353662f41462f6c6d4d642f5144326172394837423076624f315456637274342b747161597963776e306176574f4673626c7930642b5952624b3033476a76736331674355416c3476696250714635506d654735454d423664326c4242386c62484e6a4c512f53353233736f54374f4341542f5863514d4544346176386668595443475a6d4b78466f6e694f3476343166327337664d3879452f4b2b553377366a4d366462637a506f477079735a6d627061534d5474476252794f4f6651314b45476d7879706d687049524a2f7434506636357236385230486350306e2f73372b676670376d755a4a6834576872716f7947576a76756e3249396a56683135727a537a5130394a4a79346638764c516c4b6231444f4830507241582f4147556e5a7a57396f765030436e71352f61773947504b3468385735344a343570336479784f50782f4f776479476433384e722f41425a393957314e6d304b6e33444c533049473966553453446e2b6732744e5874697674477048474c4468582b59503972324c30693864645634443478354c663542544a6d303563486a397a4e65573166377671766656784b434b56775778315455496b2f77437a385435656678744a4d4e31665670362b36654e754934526c6e79793338647078397a5a7074414f72723673554d544d6e586e44527147656a5535386c58506d30426e555974487155396158484f5a3833396455326d6344596a7854316c3956507877323837633947504f764976424e4c66794d545730724d6264587a5273546d567562697274664154767454726c596c7a6b306646536a2f41445073786730426f724e61336a46713776587946713658397a54382b4e2f506e6830507956382f746e747958794c4c693869745538646e61754d6c656e736a3248557a575a596c4c6569665a312b5131437055777547546c6663614e592f79367a3868713935373670657158724a712f663841565831543836382b30696a3757566e6c65743542712f4363534b68664430795930666b484e74634a6647776861564e422f77434a752b5962375970324b375275442f624739506646505548386b3559397a6372686f3861386131664b2f4566426e325a754e6c2b58555337506a63766b48682b726f37617168484d543468643552704f35795a6a6e42343845346536326750367072326d744d782f71486f447a2f51623135386a72315047765448793176706c344a347234686f512b6c642f682f692b5274355750356a34783164486b7166507350516b48746e69744f536e7a434a6c4f476e2b656a73766761526655366d5a66484e3652787458646234687678364565692b353458357436533938686a314c5049664576472f4873483148755a7336656a6c2b5a656f66523045556557526378693750346e47722f41426e2f41496c454c4a356b705839776e484f464b734c3269597445665162322b7333704a67364c512b3770366d647678636b7a7366566f6a6e6d6d5873517247396272572f61436e536a4753785976616b412b6d30412b4d774944546e5a30744d786e70496a6d502b4f7670724e705861377644307236397a504a504961304f475464387936434a30463546356c7068374c744c65707a565a624b33366e6675754f6d6b452b3953584f4730336e707578496265712f6a38653934703668595732324f4350553857336148667870643867546c672f496e45584a4c7433754b35646c544b5878696b6d386d506c494a4e76762b6a465a3653504a312f664e3873772f4966492f78477a3139354c74356e6f6a72566246536d61496f306f72504a3035475661684630737a4d317a6d6549376a423577414135623075567745754259642f733354552b5935382f6766344864366a666b4234726c5a75704a68767a545835466e61466a68476d6172413173665857715a637a75647175593664664a314478776e57664a69507676353764645759696c7338423770764f725049664b2f46773173723038327771774d664571376c3074596539766164554f6638417979457a7953302f2b4f6c7758416c7267436f624b6e664534714a76306f764d3452624737416f79767954387639444669385338682f487638636644736533476748786843764a4a4e335579336c6d6b7271504b4d6d697037476133664778585a39624e6a6477657a4e636648417a672f7742577870784f5974496e2f77434558707835767436486e666a473973356566586d2b4367576c506b2f4768575256744c304e6c452f476f7a3655445a313735545938674f717961307a6331394c55694561746f6a624d6352514f502f352f6c37486e6e6c6e6955422b4e65556548657065356937757635764c4d464930383332526d764f36722f666d7a387364485849515a356b476a59694f73535037487a61596a46596e346f462f34586a7635612b587854643878395376546a7a516152386b4f337836507863636a7548347744624e6e4f78344b666a66454e626365354d7745544e466e763146786d644b676b34334f5a303436566d75415539646642504d504b507836395176452f4b644c4f3059664d5042764d2f45313650456e6c3563656b68765677636e6e68324244513148533438764d35734c4f6c586f78764b635a76746f622f55556d4976573365442f396f2b2b6238552f546630502f4142383859786b4d384c383030396a51312f4a56776a6b367a764d624834395264514656697a686a3752514b5a71696e4e4a49734c3575495039676837542b306d313537593945724f7153536538426645306358504b5244394f636c4358316a51774b52623237692f617331394651636230314e2f5a55416b5838776542636251466464522f437456444838534d67736b39352f7942317848384c6d4f2f37316b4c456e383343486873372f414c5059667442374f787350586b6a7647522f656b6e2b4b7358303834557643627a704457376a5263334c75486e2b336e5846304442695767503841674466735a66493551526b784c2b543966556467384a63714b497770592b6d6c6e7a2b316448796449584b494443467842384a735034517a717059645055796354304234517a4a7234513057762b4e6c79706f64564c444f716a354a785a7a6a462f44376b696c5170636f52534752502b4c327065725053317441715154585866794c6749457a3076517167654e58594f6b5442574d332f41462b2f4d426e33764669624179597a4f58334f6e4669466436733556474b304d637379544b442b7366582b6d4653544e4356624639424c762b6d49456c6a6c674b732f326e72417770613550445a317335554d4433427967716b75637635732b7a72656c53537a7a2f7255564366535352662f41424f482f7744524d30743044384a716f45715438544b5a7666514c41584d393153544769486e7a5548785a4358745450503841473142384e724136774f6d31337a6741436a6e5854474361424c6f5545774774374a77774473646e4c6538695378335a57417978584b506677675067543955354a4d3441422b523352366165472b674f382f537837796757496d5762463239636e7436795379586855457271693976656442667641676f5237382f326672492b39396e594b6a445669732b59484b3668794a4c772f556b65686c4d4133394763432f59314c52377a4c3242395a706d5a54487a362b672f6c432f6c4a343370342f77435776354f2b4b61426866447a3172383937754a746c756b3142582f4b4f30394456307036695657794d624d4a4c5061445035423838337670704e33766350756163377450546e794665654a356b346a446f6175315a64393135503357306e6279484a6d5072462b5147394d62696c6c38646243375558302f2f41486d6675366270776f4a50395776325a47774751533236585a787748616c7463494831613661696e7350554b783139756e42545049797237494a31512b596d66484f6d59644b7a737761414147642b3149754477336137723666735a6e7930543347633874464f342b6e4b465373364655754848472f39723864785a314f793532496651467756574a4738314f705343716937384d392b47343535617257515478367339714730637a4d687077717a356d2b55546f34762f74444a2f436f4d6975346c337a544a6444536477546c4e453437785a666a4b64667944506c73314c493573695768476e6f2f6230744c4b54335831336157716535687a544c354a5039693463317371334963663242724e612f38413432634764706d73347277675876672b49357569324566724a375745714b7361586d584b6a456e697671307649334770342b554c32426e444c716464504b382f724148744931395454384130432f6a2f414a5176324e4a7375767855576c5a6b626e30455a6d6c3375633673764b34736f7a6f756c66716156646d344a73585338597566546f4b4a4d78755a49344b58335a346537726f73507966623045374e38722f4939587458436b30756e727a386a332b736c6471737a3432314d684a4156653855714c356d7830324b504e4c57765a343941794879565350343751486c585047394647466952324a58576a50314b6f4e322f52727963353737454f536e377a6d4c2b524e4c62414e487334705232464e4c47332f583145533871387132383232614f712b696a782b5a386c3164413661457865517753596c334e624c753863517871636e61364e6d65524170496b684e5032303953445a48637446612f4d41636d757a78593132624d733939477338345a4573504c446270796d51325777366d53663865766b4d5861504974524c66597a32474f4f715a4c492b6b6d5230784d54484352655869487175377844776a5967626c5a44694a4a6a6e783059326b4f316e574b426561746c4f325241447037734a4f685066386954534c72304f6f5133684459374f617a4e7078306b5231576a76354d30325670323664754d7547532b4a6c39346853714c59716c4d6f543071686c6d79632f6d3075366e767872545335666a6233397557326e6b787a2b7a395a445057386e3277367a683179356548506d2b5041673036585377575332707a3452747a72517930333166363265534e373858583830762f41487a4132663841344a576e664d43504e39534655324b6a315157365731554c4b5654677a4f3430394b582f414b514a6f6248473177393930704f4a365747357a756c4e58543131466b733749385a44374939615a53506d697645334a304c304664517566755a35416b744e386c46615176447872504772334c774371476c50544d6d4e2f7741416d464a69354d3749786754444839662f4142786d544a715239383559476c62414d58467235704555496c3074522f49577839593750586e3658365231494e44356158435a7a2b394d77556d6b784f426565643630507047544e68694b6a5443476d694e58644b72576f713049314f6f3352732f674d38777375467964625035563946674232443461484e6252327561754a786e4841475966577650705a526344527230627a71593456783159756c386f61535a64455173745449762b4a42624359354e3158737061354b6e7161667a414d4349302f6b5056624c4869727236716735657946712f4364566a3377633049733038724977435859764e664b4e67716f3046754661596c4e6f6e396f52664c4f7a3473424a486d62744c54324d323779626468663954627731554f61474c79796a6d4272445a583546464a73526a4c6771577232695037483453672b5033556c4575715341686d2b54594739324e6c4f75566e465570567171745865736e59375a65306555376e6a394954617136766d594e674b712b34756e3439676f4344374b3168664d784d645946432b562b584872325a624a7137697450506658354472623765746f546e61736162627a2f6e6335497238647a5a495a6175554879774f544a7a6255306335532b7842613172747a787a6b61312b524b6b6833382f4b6b5838383971465979657870635031355978304f5a74726f742f79707a305274477978593269436970434f6b5841514e4d4174314661613130324b46654f55474239357466595330475853364d4f66483863504e615062794e6169356630796e7a6250647867457862766565644734464639674c4a673074435932614f6c5262342f6f5841366e42716f6b7a623876516a7066744c7674666e71682b744779624e6c71506c6c55725a776b64536334304c634b54435738326468754d7837762f4142356333507036754c564d715a762f414975374d7733486f71617761756e502f774264615872354b62714f796861565058756b436b67616f676d6b7963796d4a32557431736566496e4e51754f473942556e7544612f57584c355a5658444a4b55756b74444f4a62597a374e522f4a3963584d6d417470725a6f447359393133337171366f4f30576366792b6557327162557a335371624e504659506a4b6e772b4e32716a5a3251754f674452457847583554436b696671324f6e69776b737935705636577158566a4776782f4c327a4a4f686f77686e32667636626f362b797637577961597a706d464e4b71544659644373392b4a6457334e4845613971724f6234396c4f7a5a374a3143363647577a543742335862677a6c465650554d4d2f4f6366575543516f522f37506b374f46616551533171342f744f4c6e746f63465979396c762b78466d7655687a5977496b45315878385a635955797a743556556377495a534b574a612f6f4655364b7138755a64425936324d7370536a4f736c5a66304b4b543161457a4c7a48324c532b616f4e4a4d63705775366b536e64376764313766736746615864546b7932545135503866544b34496d74797a6872625a776a587069366c3766664c6d316e326f717570635263486a766a4435496a507151615a334e41366f2b55396e43583376514762494d73794f464a314c6c3358347556524e43376a744a6a4838563339394c7377664e396459756359653148384159537a3576532f626f35536d463370334a52736151335a63476676635049743061662f4b497059706a5a56386b73736c674d57453652426b376f6b2f445053337a4e614f4e6f384c663048587277624c745052614d6e49493637354a4f54573545393955426d694a79376e5a54653254786c4f5657742b682b52765342656830426e563849547a345774742b636a61584d3859544a6d302f63436a4f582f77427a4d704a643668564f50746c576d5a55335075665879565a73616d6637652f376742797250674b66326478444e45664f4d326b562f4c6f4d7a34394e4155367448515a576e6d597865704a486f7153737064425a446e7a6f514b776132594a50643859447a71774e5674766b65316365764478356f3444765a6b4e722f41494b556c5841365972704d2f676b6c3231306670447963484237476b31524f6f4d33424e473352587658315335792b4c3667564b7a6f4772575352505057536f49625746327a50467962754b614b545941526d6c796a2b61646767703544493847614878415636314942664d76536d557635324d3168676657647a614f744a7a56736c344879685330772b4a787062315366684251447a45536b36334d6b4e70357946705659617066714c6b47694e4442364d2f666857694d726c7370446970656a6a722f33417033364142484c64454a6170756e586e4f6d536b53434e4e784e736c6b6f736b35727a4579696e354c4f6a4a4837486d6f50594d66424d776d412f364435587659326a765a755576584856304b6256546f6b326c45744d2f3039624f6271726b37327043726d66564966636a396b6679786d4167426b762b70784f4d343442774565785032636e39552b35466d61394154795550525a6f7a4d64486d4f2b584c2b774569534a4a63674e702f56392f2f4146556961434d58774447766b57424d536e4a35596e4d4b5a46456739362b79723434355a713250347135686f496f3530705067632f7955645061657353754d7a42734d73694731523532634d5a396e425851305541364b436e4f3036694c52424e442b46476c3359557037374a67516c4a384e6c4b3575666f416b626c65374e6c7a757368506a6374334b6c73545a57727354464f6542706a2b47663275364667384a5965326b3073355238446672664b6b47504a7a647a37745477426b35704f364a37333030554b524b4c6d4c7a6a4f4532532b354d6131714553634a30326674727a4e33364548387165744c524870574e544c334f7a3136434f556e6354456579543330667a6c432f63763630354b495a4738665143663331794264385141676d3669682f49705539346d70456e6536537449454979354e466c3355396a766e486e4731556c4f776566487869782f37426b6158754839676177386847646e4c70736c3045504a6d6a4e5152575372307668354d756d334d513448477166506e3061494f7256787250324964624f664b516e2b554a6c6b34655653736e364a732f6b65777730556c32546b4577767a6e4f705257436c6a333366736e564e57487470503841626a576e326355436c56744e6f365145744470774d645356716b6a537859435a3970663776693439665755364d677134357a42416669396864575330644566663142454e687272486375596b6473746d746e7675727256516c64746464694b6d43615754454441624c6d734b58514c7254514a385759384767322f5962774754426b3030717451725855456d684c5044617136576e3269744e436a6c37567132463234567034394b2f647a3341635a6e3743436e396d43374d68747a304257664a64564b65444c64326c48522b5a42574d6d6d6e4935654b5779655034534a33444b7879672b4556554a364839426c464a52595366724364613171564f6d62464a4d645759704f78502b6e31705735703351396e63767339414d4a505a6e47532f65385465734673726d6a2b686d36515a79435a6f6657484d6169744762427973694f463072702b653065564d6450504d4a42336e774a2b6b546c71617777554f64334b63616f456973784c4c3539675937367245566952497a4941355578506241354f746674594c546362776563344a49666d5745694c574b5a2f4979794778566a43536c6656504f547a71483146706e71494b5a69687a525a4a515642456b6a364a302b3979754e34376e3941324a59737351696d3163475756434a6f36453666544f4d315573685478736f5a362b7832634576716f5438337769714d43353970527649412b64783844726b54534a6f71583146436330514e6242626e355972374f644c706d4b344b774c6b706b507863715373314a3471672b69503841514e2f354f5135744854726c304f615461324d4f4e6c3545705857614e7a4f3049435154706e734450633450333876372f53514a4a68384837414973655a6562364e62333258722f41475664436a6f516a72325151396e7a2b44426e52304c68686375657270477061563849476744757a4d6f56304976536446567a4f7255796361436a68536b473578416441564d2b4f756838746a474d7a55726e53706339684c396a59776e46784e41652f7742422b6d684f4d5649567a4e30782f6b4b30757a752f786378746d795a35335544585757514e4831782b616367637876792b7a5653494a617566695341726e736e6b6237644f76506f493153364335656f4d5535786a4a747a556c586e77724d49377551696c5336576f5639416372374468357a35766a417a4f56772b385a4651496471534b4a76633535577a30544f2f68355a567066573562485475745a48542b6c6762524437684f656f7a62786f53444f735953714b4830544d52556d726c72782b7a6e4f6f4b69683167306f6449376a76716951304a6a556c796e73396744785366397074434f2b56316854347451794f784b6c4d565370693662526c786e433163593079454c342b554f6c344f6c77316e4b547150382b6531503253613163784f4a696641634f2f37744f4c7136666f5634364746647048327231487030373635395a442f62655338364b66516f783332524c686332574772696b2f4d59434f78392b5a77414530372b723266742f774462413446354364464b4d4c5a7a70345474783338354e38424d485232744479676454536f564e7a79426a4a73686e61734e56366e4479687779677162336b755948663132546a7647496f424675346a6946552f6259637a6d365768794f47464c4c6c72523437504372556d62705556354c5039416930454c2b6d4873613150364e556770344b7946715a4b4f4a7a49783079743674785833555159444d7a5630417a4e636e6f59776e5a6457487452724535436e5551416e4e6d397736515344572f5a6b53545778634f6548546632724b7a464a73796a7732583868356c797169306e547130704e4e4361474a4e677932423370632b72315672766530304859684e64312f772f6152686d6d4b56446f33744b68486333734d736c746276486d4c54644a74554b4b4778634d6f365537504836475657566e72536f4f6d6b2f6162776b3655642b376c774c4e6e7a752b4b4c6d4f706463766836417a3438696163716c56324e4e4c6f4e706d7264327161434f79574d566d4f6f55656230707157514b4b43666b326b476643592f4f426d70354a44562f446e527a5a32565563384f727353373353717a594c387a616d7a6e323977666e2b307a6d584b6c686b322b656b5a302b304b792f6244716d74625250674a5a626c57575a326a7a50753248593850367554355564644b2b44526c635757706f54645678367061677a45772f707a4256316365715542476c795163564d356e4d38516e6979344e6e6b633835377832446d6966336930366374624c2b5336362f4947593937652f584263716b31624367596a6e775450443469656c51706e4278784867506c39464a6d33535a62564e6b345449632f586e7a7453303036327a4a2f4f6174397454354573723145395a7145416f6f644f6e3463326775396f59744d6e39514a506b6a674b5a522f35436e46374a794b574c556f7a5069504371645a48647977465a376579387a5a535574484f437462614442494d5451387a685251455138743749614d38797a7332424e6855364442747a50483832564673756e6c784b6a6642704c6a757863394e476c514e55704b657053745548534e42686a37676b306e676e6a3342305a744869703756325667703879375a63487645446f52387a6c4d476154713465753273566a7135452f77445a3467306d6177477a69626237654975444b796370556556513175646e6551413258415a6f484f50386c7a58784b426e564f7872355a5a334f574b6b2f484f4b7a6d644f354d446d665a4e56423146305a6e6a756b706c626138744c3130774f797574742b2b334f6935456c56685253794e63426c4c66704c775a2b4c647a524231565032576c613578527272767234677a6d53356b75645a674f3732374d56547948782f6d716b4c613858516956636c4e4e646a4d385761486a724d47644e6474534a59327a416d7a346d696f766a42626448474a345143486c75684f754449766f4372347354782b417378663630553973717074636a68684631794970312f7a5773775775496770544d6e3447547a57444e5146613037356761762b594e753252716d6451724f736e5a7135494979587044525654326d47682b78596742627972504e696648303953366f656b476b532f735447427a63304776586c2f64624f6831553639454d7930737a322b51544d3635656a2f3670647055736b6834325565536c58396e57396c4b6a634932522f414163476855367256323864776f47785338326e7879356a4d546c4532636f644361696730342b64523831325676612f5739334b5a6e5756626e324f45345456464f6944374369535a456c6d77724b7a524b75592f6c375a464a46354262326d4f4c506a304c615572586e6f684d6f7a6e6f5863742b627055534d656d6f4a6c526d7078684962765a3042575a425065794b6b5a31366465666e494854316d49586448653253724a44524b4c69666b4b5879426f364563673942427a78416c7770524d44754934466a59664d4c5659626f6156374347625a6e334a4e46436f495a744c726d635371354b3149454f2f2b6e386250316a704e725350367a66736d36696e2b673266384a3064445132345a58352f6b506a4e726462496964337532356c7a746a2b4e54504c69616373704f643953334c544f4976435a42556a39656655693938387a755a54324b2f502b3433753843486c4b47325a324f67574c5a517651556d65526a61614a70452b503977726d716477744c726b2f79536d6456396c4e54494e474144564f6831394f562b7a49502b6636326d6b56726735705136633971757376664d79653237576b785956353362415063576479554d6f6e344a364d7458756d3554383352434433584b31322f4f527a3739616f73696666676a7a6d624b4f4a30465a4c4a764951773255612b786258505a6c7968713558326a31733163736c4535535647705543676c73436234503138476c647648634e594e576654304a4e3174556b6e616576736c4a4e6b63486b525a656b7069394c4d7368344d49496a6f5934646f4f77495068547063726c4d37376b4e6a44594139504a64676c2f494d4a42466a32742b47646b37745a45384466384174426d74324b59544b2b454e436964707436756e7244677057596f32516e6d4d4574435078346671614744597249386b385a7a466f7a344944393871394774456259736b67356b73716f6a426c5667557646664f70494f676d4e4936695769456a64347a4471574c30373551726f312b5a325634707078557144363270307461756a6d762f4b464d32646e41732b7133337a73726d58694a6439477a6a61552f31457a694d2b413239394b66786533505548302f7039527348646a6967444977764a59714b5a49543353646c554a7a6269424d7566303875774573384c4b4e366748674c336f62416e4e5a3074586e6256697473543047716357657a782f6478386a355935613553466656706d79566150693865467461784f7a7447467275725a6d5775706f4158732b594b54307154696e6f2b626c7a74496e4d5a6a76467634554a324b68476a2b4e64705651496e7a504a6c6142354d7866646b48512b74416263644c3857634b4632522f49566e5156545038584b5574436b704b616e634c7a38576b71594b4169794964654855656e4f396d75713064514e53434364464e75536d4a6e466b744a4c2f414f74566e4a634838654874466a6b74435a4f667a473058696e386930706f624f613952706b7958487a6b316651586137556f58316e69387570676d7a517a367479727739613347352b676273622f424e6255397576704f4d5474786e7946305a702b4e48426861696d634849756b70763073717a79456442627443584f7a52792f486374433675382f692b2f77416675642b66707561314f566449585652674238707a2b663348436a2b397a57457670332b505831324f3145312b6f336b3364434f6148665966386a695a6b666a6d6c706f4f33544e544b6d737a3643345074644a384d5974364c6e4346465862374c316e2b48394235396f57577253684d6b64767a705a524d673643356a34344b53576771726c4671616e68433572456a376755457966314f387668424b44507653493142487239794a6b704b515a7136654f466c4778704670746f4264434b62576953314b6e5963374d394b31636f682b5834515437444a782b344131426159316c787038467a6c5371466334564a57685276476570726d4d576f525753306c376c6b7634532b6d5973426f4b373844686a7a483677724c54494e485136364a333170506972307142522b682b484c685a516d7172733954767443782f6573583876414278755a3052374f55786e4d593668733072706149686c2b697a76644c73504255493074537455733636412f665a2b475344584b6b70526534656d7454503844615843544133482f434b4b716a31716a756e55304852686f6479557278346d41356e612f705a75636b4b716c68714632706b5079796d756e7078754a6f3855617a36644c39492b592f70696569654341656d2f70584b7765367a4a664350473663717733486b323847575564544b6d2b5747556d436b69715477514566724a5638526d4476726b5a2b4a61654e764d584c7049484d783156614c72676e516b78427371704a354735307551357a3978736457643062506c31423454546177452f39772f6c3550616350324b6a58484a314d337436485a53797a6130627037696244767968665a506f3932374b73636464354433555764466e5259395073352f47684f6b33536d75672f36307454766942664f51696f4472716644716a4b6f46632f55414c5278436b747a7a797762316771397155353466727076346466564c466c436b734e76747a466c35484a7534576a4755772b3133335a696a537a50726d58307056356554453277666834613166596331737271522b4e464b694c686d51644d4b78517a50304c7161526639754e6878314c5a335173565379762b502f6630695a526b3246516e684e2f58764e70716b3770504c3551616e2f55457738667a7a6e4e4d765366527175695579612b4f683661737a6f7a4567347770364b2b786b75715834795638417a4374416d6c722b38614b774963564b58766a6e486d65726d554c4f4b2b395336325a2b6349746c6e6167337350505773614d6f7572416737527877396f4c3771307a4742782b58616e5237533666506574546379757357414d45524632484a6d4b6452636358532f5a4c6f4b7054766e4170336658536c546a36705163502f587a5448777a3167387878482f63444c304244536c3862797064566e3138304d79784e66736a6c715a4f36656c336b6770627a76505a665a486541384f685533314f696e47744c523434464c6f3376496376517a632b3861746b6336563635344b5944413276727a342b325374424f614453594f7844523761666b6d5a4a51453659544d6a766d6f7646613236546761312b75506f6a34312b536e6d6d486b2b52794a7033736163504e50445049346833574a7a6433784e3131476c506470343977777175566c7345716546503841636e6e4f7a6b305a304b535236524d3664654539423270394d45665858774a4364624139554935744c614658506c664e6c52706571664e44513472794c394d544b313439635a56324f5941712b7733724738312b7a49765a7a50484e66785165626d6e6b32646d6b306e5566626d566f492b4946315a796b2f5248537243457159666a53524e56375335593569684d41614d2b6648644f304e38584d38524158332b4e313573305936744c35486f672b796a3764777773354e4b374c576b7446645253324b6f3937335457637039337775705239464d57335a356777395137504874506b70476d4734325373547034636f4f50415634766652484c706b36485171582f446b684e413955774f76685831314539427867367453623069597a6d4f4169506a766f2f36523632665273514c69752b666152717939646e2f4147343336764e596e4b7955782b5045596b6c3738304855642b4537425a59646a6839352f592f704e7252335267513331446b6b7a6d56354d546b7230485449363557627a4931617a736f307248525a57524e5252785a546c4f76554e362b4745713562395147306c50377a6d745473775042622f6559384b772f46667a42314e2f4453675048504976464d6d304e594d55736d4457314148596e3065544b79786279477157705078454448555575624e787a6e556d597462367673737a4f6e4e596a4135677967756d55704147796c6a5a2f75307945314932564e566f4c70727a38376b6f6e39583743785733716c384969595a314f447041585a645232502f73395a6669782b6f4835446555656f5867666a4871466759486f6965666a34486b2f6a38486c506a45336b506b57374a6c51444234394754486952782f7a58436d45314f70514666375a49412f5a4844326a4f3274597474346a304c6150345a2f6772354e692b4d33615034712b4b3930665371716e784c7a6e78476646356e50336f504c642b6a523863387a4456782f496633566c4b30737659564652557962327a6363684d3146646946687952716173542f6d6472312f36476b58354e66326c2f51436e7757507766304a38547976436657504f386676304d447a6e7733574f78486d642f4e4778692f54727a7944794479616a6d4c506643655963744b6d7a36507638412f54763249632b6c526654396f766e4e75616f3831336b4136586a336c4f70344a35743439732b4d65642b6e4a336c74794d6d747961305069646c366e55306330436f34687a4675584b4450724d44736b6158392b474e5837487572786a6448537739514839743738642f4b7641767769623566344e3541377854795831686f75307454642b76472f5378764773615265724147586d7a786765703972504b52667945543275543567594c2b4674677050683172784f72695a3561684b66315570394d2f467250475042767746386b396142746355542f55443130325178504b504e4e51646d713748664e463542744e376450534f3963664649715972333242794f5654434c3532334d356e5732592b476f33352f444858312f4c4e5247394c365761666f4a6d454e794e727859644851326b7a7a774f7a4d386e59657172782f6a59594a796a4b6a503474614f7436366b474a4d414f59387454684f4974756750384138794b452b504c386b33664a634c79507a7a505075652f4a3856676f6450467276627153326472675a6f523964744a6549352f6253423448386d4c4f2f545561614255625434634934534e432f4576795039464e7a2b48386238332f4141673875394e5544566b526e356a345a4649797a4b44556e58477130436b47554133536e73375a5372737732787a4f614c5059512f567a745a70614f4d612b3464412f55447854796e3867667879395676434e7256304e2b486d4a354f574675655938304e485876784d6d5853375051764a314d6b483641744d717571582f414236535761516b73623048484d6e4b4a696c367a485165617a2b79743576366e2b696e354c65744c7643417845313550696c6d5a754a637a6d52342b5952655579352b6b717a63326d44544e716459797053316d6f7939394a7637304b41544f337439716974715633647739586671742b5366344c6551656d4e6e6c587231354c4858342f68553661764f4d4a39666b4e4f6d6e63452f70444a4e69725758484a4c636a64337167436c4139674f326b526f2b31516a7a3630316f744d553432486b672f754a666b6c2b4766724636302b4a376e3434656d395350464d6a43584b6a52626756594e31657854316c393267374d6639344d2b715851737a7a4c34313859452f7a63715a63744b34352b2f52707156727a324850573731593861334c567269687a634e436567346c515a7a61386e6f35314d63334a6f723157717052524f544a2b4b613153466b63594b6e4d3239556b2b6a45394a464b2b586551633554786d614c5732364c526d5233356c702b4365646b397445724f54752f6361314d5a7069417336776b795766584435662f414b497a45524d786e6841723351526257754b4f5972625849506d664e45707154366267524f3373554d5a6462794d656579632f2b46483065714c334637506230373666654c78394a664a50577a30737458722b6d336c506c3368734f6e7a36757a56676257356969684c5746564e4863374c45576b522f48786e31752b3769324a2f5a4b4e76434c2b7157696c757562446137782f38417566666d44365354585a48664a38666657387a664e6435623475725638677a4866626c726d31494e796b704e43786e795279764665683268516837536f4435616b2b374f64445374786e312f55613065766e3550666b482b51756b72513959665644796666514d2f463432664e713079654f775a50797a6e2f77436e355361476375534d355372475a674e6f4c376e47743779677a2b58536c644f6e59707847754e7a3534565154644b41757838374d6f38326453796b594e624853664f564a6954422b78525949392b73716a6e446362576e77523664367a61336669416f44475570626171593665744b6d737a70344a4d584f376c564c6f354857692f7334676c596b6b794c6e7436613650615a4b71442b6e3550763978496c7a57506d6c4b6635476b353667717465354c497459456d57646d392b66587a6a2b354c33515578496978585253344565304a332f57522f5665547a2b7739477639737a7671682b502f414f50576274657148707636702b4e5a476835646f612f69576a35423430486a2b4c354e342f516c4579396a50703363736a6a5433596c636d696e69487153663030556758794f587a6a313974373472616f3763656e6e6e7276494b5044367a5846624c6f66786e61344e665038583057533078774639444c30723933344f55564c58612f5145716e6f2b574d436e4c6c64686d466e4a61754f4d4461366d7a785038413852745854344e34726a6e7356542f777652477752766a6c72736a736c2f6a632b6759636d506a76345649644e43454653592f35634d77634e4f4f6337676a4435463474446c5575386c395066415861642b6447375238742b76486f466d62396c576852444c4e75365753304d334a5273522b514a6b51766a307a6c42333568724c357742786963784f4278362f4d48382f6f665176772f794b795059796b436d79377876303077637a516e45397a6271562f4c51373956634f654866476673547934363658545055794f6e4b2f37446d2f4b664336645052337a2f414f51386f486e6e6b7466714e356c354e3668656561584e7a796e79625a6f5056743034617946764973336b614f3574545842437a4e484e584b7671464b6c7054396d6a3242373452367230497274725773434d7673576e362b686c362f463958566d556c45664b7262744379703835794b55594d4874435633443765694441665a4d665763396c504457324232702f73692f675a34682b532f7254355436302b632f745070763649327764386338634c375172386e3952395a54725046444f786c7a6c6147546b7a776a56324d424533754a4a495a4851514548503756717a5375327661742f346a31412b7458344c656c66354a5134586a5835472b5865616551654736666b64586e316e7039345a6f6247626e31364f544e43592b4d2b58636959584e37484b796f71467a79454c424132433533325755505a7731314c6166476e556259642f46373067395066536a513848394266512f7741503850784634394d3842546337346f76493159514e4339626c564b315761305a4f6853623264345a7650535742736352556e7a4c666131706d396879776e624c6f3532356e37724477764b50462b62382b6a49314f616e5838533231387a5a73764f3138415242755a4b773536486d354569756d6c77702f64545454522f58546a62453759476d66354d66694c6e2b70754235446e5377612b677459596d6c586f2b5148482f4966464273667a486b427655375966554f6132504e44346d6d326d754e686d6c726e4c704242616165706a6a4851417652373034394e2f534a54664a76556230317a496f646652484379664666422f46306165726f357966624e4a5654723661476d6d68303565342b38344967582f41442f55326d317078533242755436562b70587068342f34786f2b716634692b4b656f666956586972374a2f4c765433314678797a4a6444754e51784c485a75744d766e615038414a68667267384c2f414e342f342f316c614c544f4e53653133774e34664b6656723135386a7850482f48764f4d48785358787a7958772b6e7a594c73436a5730644c506d4269522f69767037556645466f4d5851502f50752f584f4158665a2f5755563034746d4f6e72313047756670582b536e702f3562356a35663658332b68587278346e6e3442783578656f5a4d79364d4851647073596d61737046592f5164482f414c5030774136587341502b52482f33663165314a72472f4d572f4b49422b53336a767135346c2b4a4872316d65525a4869486c6e686b714e32667777764576436c592b316c5973622f38416f582b5173683971727144577a6e76344143667544336672762f3050366e546d73366c63637467642f744865693370582b4a48342b5a3274356e346e6c6266354365712b584a353751796e4a703064623564665537706550655036307a38384f35754c6b34714a58646b555155336156343852376150342f376232693174532b496e6c72796a75567a386a2f4142666c536646585649514e32484e6672612b625464745a576b47576d56383650464e58526c2b755765356e2b6e6f46583158376d2b4c7177482f4e504c737342647635473036563276347a46675a32783435715a787778577a517168763744534a4c30365a702f6a6b6f4b684575665131677a6a376d756d2b704748327735774779664551425871483573764a4c78765133644455385851684466484e5879565061536c49644c53644372766b4f595645382b61656252396674513130544a5748776734716b3834322b32756477312b396576513777663871765144622f4848314977614e5047386d356e354d4f6c7078393169384f747479644b2f44383838626a72755a4b4f7849356e4f46584c4a4d33684a706f39704e593054765331744f2b2b733448382b7133795838697637637635492b7276706e3439356566692f6b6e68506c446358586e50575a712b502b56444d7137754c756f7a4978366a656e7177374a792b5250572f3436527034366b5336432f576d4b61326e5730317a7548567a30512f766a51367438502f414e63642b5038417a51664d4f677572797a3062736f6271306474595774436a64386533376a5a594b726b776a39546c484a4a792f66446d2b70385571656655396c34386c7635696776556a38702f5458314f39536655663177787376587966465a3463627872776a4c326b3074386a543434664b4e547961616f5171354a71626e50497247646631774c4935544834544658757a547458546d7356724962666a4a346a2f77445070366f2b6c506a6e3274544c6b6f564c3535796831456375516b704c307350476e4c446e2b6547642f5a3831446d2f4b36696f6a2f774373434f4f4d436d2f374f7470377048753439456236504650442b5a7544354234366d6e4f414d555677372b5a664b72517a744b6b33347a394450304742746552464b6b6555564e63667a2b7a734e59477671714f2b56626a614d7a77457638676a7964444a75386a4e65656949593534527a644372744c754c3976384146674532616c74535a382f68464b35542f7575622f6e7942497730573074474b3569303148464c386c39623064332f47664a34322b6f654a734f73666468506a7a32534e57757a5279394b76724b366b4c742f33444d3277357569314b6e365545507341486533514c70303474573264755234572f56374b6838643955664b733034322f39545770554d3644653566735175483954314c71587a747866615a37334e457668597778475668724d4444316138315a7838785845487779554261763631444547742f6171776d576e76313646726e584e45794e70765a3334316a3876742f79423366636c6638416d584b6a636638414437423850386f39644d7a78587976473579447954786255646e6d2b67734d597461544e6f6346744e73612b486c36676144714a45552f703149307a4b6144706e2b7779693970696d592b48395230752f77446d642f4a583030642b2f5262316b3867794d6966795561737950696446456566373953706a4d2b663747584e5059766d314a5243696d5472506c396b6774425077643637434c3076504e58694e4750527a30483350502f796d6e38583039476b6465377939326a353370612b61794853464d576e48663548736879745a3078547264524c574b516f6e4a7066437347524133324e31746549707536443262654d2b742f68483477655035476a35626a2b582b535a6d4c3439676479764876432f434b764d4c353377344b2f343539306e69385a453133315379354f64457771616d5a5a6b365a2f4b457138326154655a78336a622f4150482f41505048386666577a2b6348775861332b4a785a3135387564354a476a78563332357a6a2f6a4e5a443971614c34366c7736565455634f747a4a497333675554476637417339545276587453437671782b592f706836495a63586b47523466563531446e596465376e2b4b654476526272584937314e46734d45575873434a4375316b624c6d6b72394c5834386e374475394e616246644f397548594647346e356a4d39633871677462305a386c394d4d62517230687a746279704b7444527530633536344d666e747956314f7a7866434a6646525a565159544f3477755342503757576d6d7a3474325277572f76532b6e5069486837637631596c777a386235747770783770633532726a79325652347851356d6c44473677654f6f4f715778713073376e4e7244325441722f36646f70362f5a72544d3752355570476c312b56386b34715a54524f4f7070504a626575374c4b6b4c74456d532f7672707a582b6d666f3138366b456a533469367a6a5036374a473658344466692b6635552f6b52345436646c573748384c6a354c355035353562644c656a42777645387069394c553679474c4a2b4b657a5171584c456c587a41526e4e77514a5a6944565272616b36644c7a38556a324b2f6c644c67742f426e3130384938635433453859775052487a58786678764f4b61785766343445506a32784c396146336a3633794b6e4570566a6f4750442b577138337159706c4643673833546e4f72575a37573463446637516e3476656e6e71662b5351366671486c556551763842432f537a7354746b33305a5a705772792f686b6d517a3537744356792f3841514b7972392f506458316e7963344d665837546561366644725965766e7a426e342b366e6c58677a2f4a2f4c4a5045664850545879494e57584f3868754c4b38546f3879444354484d765a356f4d513967686c78786a4750586d32785a7554523854523473764f6a666a68385872366935504b665576774c314d38614b6a774c7a5358796e4d4f52563146755276774e70576d3065757a3767704267757372586e78736e343178422f77426d2f7743566f42534439476d74617a57654e646f3539666b6835703664654565447936652f356d48696338672f66325855757063394f31713357557a532f4644714b64754a42654b757165676e574535326135354f516c6445796461524d7a777275484658795038414c58304b38743868614f56752f50324c554e3674423248615132797833574a77625a365775556c6b7a4536457167706b71727059562b685a4c4e3969686c6c4856476e65493850356a5448386c2f78696c5038414a44306771394b65485a34723635612f693274486d5a5346746c794b4d69664831504d73377235737672457569345656564264536678646d2b753065474d784b313037386c743348614e37367678563951645058466531343037367369734a38376f496b793237557772594f496e492f6a3978306c536f74434565546c4b6f312b7a4e625a4337744c724a655a6538726a687848516678443861505337313679332b672f717634665476656e7533347972782f53626d4c4737587774757153644f64356f2b742b657871394c4f6a54524b6454474f39672b777a594446714d735a314c563536323568347950572f30564430783964505637304c59522f77416e366365632b542b4c48554e326171472f477762325a364c482f47373270476d556e4d35374239352f4f39784f636c51696e3061337a577438346d332f41414e65747641316f66716e7051365a7057717578316461707a376f524b6c48696d68784a6d576154526c59726a46645958652b2f7744354c6f2f49576b577258704751413554493244354f766c30627136694a72486779687179435a6a47664377644476562f4977766939335a476743332f4d342b74424a4650377a3134446f482b4d6671484954734f3934556a6f35644373577161796e536b4d49464c4a3658515a7362754664557648727149652f77434154702b7751546441422b4c4738544d59787869527556367a2f6b68366a656b6669666b7531346275386e6f3134746e427744775237584e327132777164756a4d5875706133552b576a567547763461714a4a697050692f7232664638475555726163574848625972324b644976496450744c475656306e3854516e7950354157395a52522b754f6734307669304746774a6d714975424e316b77732b5a6f7636496d4d54457878486f552f736866326e746a38672f4c3833387466576e504348386250547131657234586a376a4b62452b6f336e4d56374934363670546a37395878374f706c6f426a4351667a4f6a6e4e4b32754536663635666176614b306a336466387977397865656d6650363658487a5a554b7a3377543665444a39494d6c3772654f6d664576507a665937507a354263746e6566707a7157365847386d705745774435416472386a382b77453639666947426c4d7649367a2f41497a524e6b325a52765a3556665a31436f71736c356f4a715a506b6c377951483653596c4d4a6b7859484d5245395a344469502b5265392b4576354437506c2f6f392b59754652343375757838397373384f376f654d71327a37644b593978394c6c4358376d53786c692b64565348366d5a4e586d3063354f4265337270477254626253486d6639532f544c385366417657337a462f346f5975766f654559586b6e31633757314e315771726c4578646654566a5a6c4a64374c342b744b36457044724b36614a35316539337445512f72737262566d746665646f5461503877763841772f38416b71452b4735326e3559683459384f6533783432354a4b2b36584e4f6d353966753739696d55662b41554b534433695166763841342f5433653734732f582f67616f2b562f6b783556366d374477336377636961363138746d466d6f54444e4a43326e346e30632b33387658546a4f745a4d454f2f77443141393977662b332b744970577363654d5142656e364c346e6d456d68727959324c343373614c46327a4f785a45733771324935512b4b354b4a574c41522b4a6a506e59414c5033653368395972704b4a767877786e4130523249366d47764b3038646c5a4a716f6e31366c467743702b7658714a58546e484f4b757779386451414c584d3168307a7747624f6577694b6a534a6d4a7a4169656b3375644f7164423349553374485a6a72546972365335632b7150505831547663625a52634c7a6e43645874476d7477482b323067704e71786d634466622b324a3543334f2f4e76305263712b6745624b50497648714157764f307062536f6b7170342b6d42756a7a7430364e5a676c305773645865777843644c5775643738646550324e35783048734f2f4e33307538782f4958384476576a306563656c65576868782b5559304e3164545568702b4e564a314954796f6e4d4a4766477659756f5343557a39627776486b4a6432594a35304b38375374464e57747538635a2f3761586f6e672b5666686c5a71362b50355a6b30792b615771395352785830542b5130654a654c69554f6c4c4c6c72306a63554f684751724a6151764f596f412b77684361554f2f727031377a58566e482f41476a70663444356e364b6552372f696d4a345a2b4657683666753373763448657456713731616a62365a5235646b767a37374f6d78732b3075575271314a364150764e5a47363663472f316a4d5769497a71627679384231733843394a4a482b6c47587631634c524f2b4c2b4a3863704c7365786f52722b37387a625657327a2b3358736c6e467a4738614157755659784b304b4363554a3539334e74476b58714c36542f6d35732b625a6e6a33686e7264355a345436646c3362376d6545654c2b415a326c426f35464d44702f48417858615869593978717058566464773469726e662f476c5334466d6168547257326c455a6d752b773350394a7652487a50786e78484a30505533792f513176494d6b70747a506379594d727961644b4f44713677374164782b49715168303839514d46436d324b306b69665374535066367974654a6e6c72784845332b3854364a357672467366697a484c6d744853713869386b52585376456d52706a6a635451614c2b614e39434a33536872574c4e667a547265684d4648767034596d382b7232652b506544695038416e522f616e722f46483045384f2f496643386b567147586c6c5558714c6a6e31616a6d58354239722f7741503166467164426c4d766b4358726f4a6869744642676449733558564e544b74665670612f764c3270505365677466384174472f334a792f47507a76776e38627437777645373654656f5071486c307639555a315079765556586b576779476637476f2b31674c48454b7a50587a364970702b75566c4b5a7962312f362f717674476a766931367a7a563768363250516a7a4c3863765548386b504c6166565079624d753959504864434362784c302f66354673537a345741575a46332f7741746f68464d712f495035536d35772f48315a71476d5a792b645137356e4f382f55692b79757a732f6948576a7950314238657a42517031766a332f334e714762446756794538644d454d74557030357949313844743350626b796434514f483967662f784134494f77694a6e7041314939517634373152314c4a3454356f62346f6c6a666c6e4b3073756153447056736f6e56634a385a6c75306e5a36586b7a7253636d38506572356f334c433965584f37686b654d482f3552476e4f716236446e514e444b636657386b7a4b77703550785a49305a70335a6e4574556b582f58347956776434356632566442464649642b373859656c37466e4e7641655a6a735857325045506b30317a64686d686f66454c667031556e504d4d3155737766704a462f32676e37315875617964494158735833322b6b4e68344e6b7643632f4d7a38466b4d5473594c614b436f66536e50304e574f65576f587265796844457259757a354f302f7070746a536b472b383577542f41467a7a783639343758662f41436537576f322f7a51302f466933632b506538783945504959634a6a5337566666594b434b5a784f6672494974735a37422b4b774570643857556b436562675574334e375a7730382f686b657254304b394966545038414733316d3956643965534b74337a6b314835546f52374d32727a614e39493657466d5a6470617a6879335031475a34424632616b694f424c6c742b736655553846375776576b5a3431472f4e6c58707835703435536a59697a39695274614b706f66674a2f495a595478333039717252556c6b304c7332346e634276552f75616239304f39694f6833446a45384f6f7243483035394a56687365512b4b59304f356d55544c3039505277336f724b6d5944715571646262732b6742574d34744a5a386b58543750634e687058643766367476744843656f697635652b4b342f6b447653794b35613751314f626b4b4855524f5835454d6c4d4c35487568746d6a352f73373865655154554349547a6d3663307a786d6d4d4c616334336559304e6f2f424c7944787a757a355a36652b662b64654f5a62374f6e705a492b56552b525a4f746c3530686247786c796547373771353546396e6c7a617739744a6d332f724136666f7a382b4c58337354474a72776a313268357566372b574f6e784c314b39443866354c75396b386138767061435658422f483076326c30524a547a51597445376b6a446e385a5144416f2f3648667474447677707037665a5a7a535a3638527742524a4c7057616d745367336d522f504c514a54504754717377717a624c7957483433342f4c76347676562f43484670734a76776d763749383675505a4832674f793971304838704e6c4a504f69666c56797061496f716b31576a504c536f4f4f6f5777554e547776684d7a4d51364837525767493768736635352b4f50717a36582b4f2b506554657133704235563663654e2b5a2b4f383376476472796d4c666b782f4b637169357a2f41473431515a626b3045317a6c66703465307a3977544679582f673278585572616356747532696f4c6654744f3571646838582b37627037576b6e4f7a73724e79444e476a64737358496e78744c654f453045577335504f3266344b61366c3033777143635064654c7a48586a4163666b4a2b4f33725a2b492f715672656b6e726a346a5a344e35786a78342f6b6578343173642b516c35766b634b724d3937416a54332f77436a78302f2b6b61654e2f774373616a36487449457a545572713133566a6455557868744b57685537324735483759626a42616b55514431796331315a752b4833736b4835486359424d6e39786d59752f776230546e5537684f632f78304b44476d7a6b7130744b4251697956384a614a785678356d714e644c516f2b623365373543704839703472566159743438416d546e453436412f73535a3876312b775a6d6364554d356335457254704f2f726e61624c784c37496b726e3152714857446965664362514d6d765350514f744c35694c78365838566f4b73386530714d65794852546442654c667231534f61796f3879584c58494a6e636f6e457a334c2b5366327576656c76733458764332643078756b656b7a384c5037757670447577546543666c523435483448356157646a596b4871586959384c2f464e6a4e526b5a38576d2f794a504f38666d366778664a4f774666396233752b6464536145724d654c57396d74452f732b6248776a725048345a2b4d33724b70486c33704a702b6b743252715842564c643476745a47706658666f362b686f4b6c304148536d727a61755761467a4952517a35754b67427a6f77593451527a35314b384c54594d504e504c76785a2f456d542f414d70395750567a7737787876682b474635773155654f655265586554585244734572483863516771426e715a6f527247632f6d5335496242485a656b33554f2f71596a55314f4661396f6554373838667938762f4e543130386e3957374737654a345a34367a53384d39494531732b50527a4d484c63366a4d66744f3537767075306d4d6f704d5669524a6271306538314c41506d394453302f6455322f46327047704b6f3279426d32705778747a646e2b525a58417a70314e6c59566a6536462f4e754e41353044467839547a395044326b644b654d35377a496242323571394c375433376467735977596d6f5171595943484e656d53484d6a6533343352354571334d4132675055716f76475a37652f45505767457a743434636970654e416c6c576e4a3142577a796344696f366c33495a4c434666316c2f44314e57612b77434c6f68585331334668476b79616d4d4472702f614a39412f56663841494c386a723944303479756a6a656c2f692b6c3554367165625541645766483435513746642f346a4d6e76794a2f6d72475a3742752b55614a30726d7444336d72344f7077396f76576c4d3234377567374c2f7a75626f61774d6b78367174534f2f517955586a71364b39575a63486c746e783162334779736c7966767a75326e465176524476667074423141713052596e6d44664d33714e62695966494a70346d56725842424d6a4f6255686d64666d4d585548415941755a347632797a5270416d505837586e524d31736772522f557a474a786e49316e2f4f3250796a31462f746c65722b587161424644364e657148703935464e696a7336387157543077466a61597877642b2b544c756131502b48376561516d734147466d746a6f67737670597272317a385652355863796e7170366c6e5031354f7275346c4a454c75794c6f55545748466a385a3157684c794b776e6b34317a4161372b6b444f63494f4233583755677254714451457446326864665a336c70722b464455615842353835414865736f4947536953326357777a55365a53327a3043536a4e6e394e6c7641524f4f744c7a412b3864785a56467a744a4a5948376e5973667374436d5259746d4553736e352b2b72446a42503550634648534962616e634f336e34432f6850347848343534312b5648354865734f48344a3661733562705435396a55533030515256794e347a56516d6f4f466d33737a6275545553496358414d572f356d44452f7742637574717a6e33656e586d48724d2f4648315a2f45767949573839472f577a302b766d6f30704c615048303747626d3079365a304673514b4c7879357a4c416c53756a4e6331436b2b30374f3030303862395a333965667156314937564274317079365742726d746e6b6a2f4673504f79362b74556e4e78376c727a73475173372b596c473577766e7a3145756a6a754b7374543147386d4c68652b5a72427045356a49307a386d2f4d6e38557644664b4b354d4431303875395774746439594b38553841775a7263356c4765463064714b4e69484957444a2b575a7349385879695a5641664d316b37542b7a6f663170476e71543172675458303139542f426679436e30366350784c794f546d4e5a517a5638583838786f66463950503165366a492b55443432554e5832702b2b52617955707370443550626d6d50444469652b7974717a5434683555663777583974702f34382b714f42356a364552765a347236792b5175796b2b45773532666e48676554616d6e556e486a5653324e4b71504732546c6d75476a7641534c72444e546a593556484f2f32625733786a553462524666572f3841732f6574486750346d2f38417a7a75395376422f49665537776a423064373167394938624b754d50484d6a4f5a70614545516555353866304e6261464d3566656e4267646d4f787967734a68393938313970704f7074323874756b6a6830637165674966416257786e3071375242626d32664b6c4b756f2b4e44566b544163547669426e54357876744a5a6d6b6a412b3850537a2f723862547869564955645530726e463263346d4e505335504f376e4768786376592f736362535842412f76673066636441652f476254506c4132472f47447a366e3072395776436656584c637031766775374657355a6e57384e624b596d6e41386b386566654d62696f6a767737744b5971434b634f52373332434e66312f30644e534e3962316a7059652b2f38414548315238503841556e302f384138687941666d654e2b572b4f342f6e6b625539306f37494e4f33445a714f7762394c44684f6d6a536b50572b4b786e4f75374f317a4a2b414267722b764b314b7a573171794a2f7743554434356765735070355670367564346377565452565357444a42456a795062705a554e6c656f74494e6a3045706a712b616a3968787041324d6773646d754e4e63544e62643372674c303958505654307a3858786339586b586c47583545573176663841694f6565572f4238636c794e7565566d57724a31764a4e6a536e566a746c5a47756e69713255304f536b6135692b59766d436c61577a31366878526f446c2b50654f3948527a3974326c4a6b53323159314b644c6e5a467856646734397149335477794d5a56502f414b7a623866476d513064355361626b334770587270367435487031344e355273322f55626a595038367365547a302b5361336b2f42675a6c614f54424c6b78712f6b572f4d4d4d374571584e7961564d674f35596243614530724e70694f38654a48386c746e7a7238715057444f3064377a444b54443472345a34703661656e33326c574a6c79764476485a714e544f7a4c527a7363654d71505a334e526e75344650746254776c304d6b42523839536d335472792f78534c562f423346312f7741612f77416b76454b50565878794b37776231616970385779504a7134573657466c376d38615a7332787666637669366b61793431733437675554653944424e582f41435a31316358707938625648764a394864394466456f7635616c5574385657646e646452573462745675644c6d7476706c7a5830657a50576a3230524c59504c415743542b4e6f454149447972567a4d5445346d425733726c362b2b6b6e6735763841494d3330396a3876387630345279636e75747839456c46433678696256754a48486f6c7a63566d78327076584453496c49626a4b6237456e304a70705330384e334b4c512f464431712f476166415a71316574506a57373556707761657a6669376c453369742b61334e7a43426b57586e3859434e4357624f715a3142714570784f3953534e4b572f47466453743834323942546e35422b71766f44346464766564656b766d6668576835586f7a4f30352f544a32694f372f77435a617362395974772f6a79714f6e6a3651305a385964624f2f6e734b7965477a3476387631656c627a77745836677636592b75756235786957512f38416a475836644f305a6856746545363169595a745752464b386971614b6b37754c41543348536e4b6331546c476e592b5a695845723576366931496965317567482f55337933786c57664a34746a5a76666b376a534f666c713078667a6430694c5347325762526f59443536755a656a6f485931516f53776673544b596377556b754969654d7a504752625034622b6a6a502f507644646a6d5a4e4e6e2b4b34434e5744394c305a574a763167712b724e394a38497058734d716378784e59663250682f7845304174696d30314c52747448654f7476314e5074504a51745072325a794c56634932774d2b787a704775384f554a4978536371574b515076366c514131765a4f684f5839554442497a7a744b6d356e4578584b56464b6b4b5a48614271565279635235477868642b515a7864785a4a45414e72694666506c4c6c483941526d4633386f69696f36694b6d5652476b506a5253543256726a3470544e415a312f727674422f7636584675492f6a4d32304c443267333462655569755a6655636f6f36666576587a3561526650476a726c7755772f757751756a6e343771332b7a6f7a4776337244342f65432b724b46576677326f746b6f725847327072534d754b42412f4548653862637670662f53667355785a4766667375506a4f4b6333395a31744d322b59664d543039423133576642573937612b49726958552b614e58756c347174586166663850427357593963616c5468534b792f77425442656e514e653853542b306c5042486d784563393644373957663543455768465139746e666e596c677a6a33336f347a33422b33464b516b6e6f4931664971797650417a5539744844453042374f6658427a6a4a7a615a2f33386c694b474a34612b476c4b5854664d5036613553663642344253764873665849704b5a7a714d3935484b6f6c6352397868712b6a65766a706f56706e6d57483741786e2f384161507339727567436132436d324e49322f7741657a766152664e4e5a7a737a4b5362714b4d307539764f2f634978643853535a4f514b53432f6377766e535942644a344c5971446732386e41506b35504f4e48554958526578496371744a50732f774170355a31674c53496b50373776636132475039567032594472547a2b4574724d786f39706438733966624a48646f347a35566957662f77436e5175474c6930705a37695a37793976752f77446638507643756e336a2b552f2b65764b59767a6b2f4b2f4835444a6b7a5a4872703557676d5435444a48514f357356544b6e59374f6373736e375a43616247725970494d782f77446d6476797536587636575064556e776756353432535038655a4762453932726c3346506f6f4c6c5666623573307334636e7573466b3948336a4f79684b356a5151546e487a32492b53645876766673794c637a6e4e35342f574c362b7a33386f6a743766717935373958346139664c7334326142792f5a5070584536626b45725353617067747a585566745a4d566e3866312f55575a6b6c6475643758666f422f75626d794a3246724a68356466644a63677979526c646f303536616d4d793631385439564861344854554b2b4a6a6735556249656e49346c784d6c386a41626b3361476e3236725337425438476c6d525a715a493470586c30567a6b75474549344c4743526f314f634544424d39546f746e4844714c717a65792b50444f764e303237576676657a7059364b757a493349753531436d5576766f644d4d454653567042556f696968544b54354f53666b5775624c4f365933534c65784e686e63436b5950486b7539703030357432487666466846394845756c7a567362686a44314c4564336c6a5375614c6b383452735561427a54664b326f48773963576c62516d54496f7a7a42376c36374a497064524474484d6f544e5175657a4e6d6d714b6a51386478324b6734627030704e507362375649642f516645357058654b35764b716e366f75794b7874794d54486d31776f5852546e684161736a522f55316b353054324f6d73374b4b6c545575424c2b70464f636b4e66504a4e35493155347570695a754e71775155356c33666b6756705630543139563554505474736e5a32316c553773384f4c6c6f6d4933614c71587362387942357257765330385a6b56704c58702b517254506f3248484e7a4f5a484a6b356e54696e526c4b79335a6474554f6d394949586b2f546c68703437374e49474530314270513259613537694b49327753335068556e48705644396d63756174415863443661632b35324471775861424b586c716448374b6e664c65436e51562f6541556775766f53795a33317157592b39543232615530687159384d3738336a65617036565a4c646272354d377141626c726f6639684954685270526e54786f7444394b43774f6555643030775a6d6e714e4c4564426d4e586f2f78647554354169524b70634b394f696a455a7845793161476c6d3054714734666f7a6553506d4a784973436e2b7137597a753778574f70724d6f4779707876683437735256577669646d6f586e7976324b30613074665049757653562f32744c3679337a54712b6d6b5775616f41414b4c436e764b5a4a4d6e477938784f383355584c7a2f444530374b47316335725a4f6b41345773413646666376514a326b4d7a61316436526d5965317a4f6678794842425732553662396d7654754d344e317a33547879304a356e65516e774d384e5742756f694c74693451316e5664706866664a4f6730304168314b7666387757663470334f572b783738764f334e574b2f5035424a6e7166776336724d4c57747a33785a2f6a4b3173646d75304f7046765342565264635a2f574f792f34617732443851386a493878634d577a6f446d4450696770585a592f4b6d63795959467750795a4d564f62327a5030573575734d6e53675879534e6c6963302f306c73594b704e637a6e7537785a6b6e6c4272795a4a4a7862796b724f705858384a356c65527851626b714d69376f365258596c5531694d7431444f70796e424e38315077705541756f6a33666d477236747a2b533869626f526c6b5a4d382f476136734c576a707564562f4a7367767848363566366b723756426e6766416e4132545936784e30555a41356a68733964665832424759762f4837646d4b45666d696a576c564f436e5a48587a644450594f617038525a5756595a546c7135695a794e6c4f67414e5a656d6147415a33416c62453237555977424e4961664d35434d76446979744b6b74692f5754334c76666a5a316d567061434f7836694e5356314e6d6c5259576639663941786f32414431704759715a59333750316b565734322f715779653864757a596838566558314a75376273694f4e5a5232795a55583831584356424d386671466d6f4b303163524d3530783241482f7157676f667948554b683956797067314a755470544a52424338717147785535386a4d7a34354d3563705873793858556b452b644c504f594255435a696e5a783452544e466c3356622b426e324f32636d753371365935757870684f30436b64724e7a79545376517a7a5a5a396e32574c2b536d7a3579424c773930435a6e4d634a376873502b4e507035672b73766d506a6d423556767963482f30354f786446574e396d71353857584a534c74572f3239543164675a6f756a465458474e4c545756482f4145315655746161786d4f3462582f6b44364265482b6a2b62484e69364d65356a366e7a324c7946364c44553439542b59567539356f7a5a6170634f696a59544b6e6f7131354b66734f4e58364f5a6b483273394f38326e694e6648597a394f625a5639625168644f2b72726a6275445662694c6a6b6e50547379695271635235465557617568544f616e492f68444b3648444b78504f57624165324656485a6b446b4f3042717a75797331716634366a6a5a49495331504833452f6d35587a4b6e30505a3930314c7137372f706942302b2b317135416f33797969796e4d30394b6257703776614469414e767349555136685777664a526d5a4d4f666b757a463369363771534e354131727666497a704564687868426d724b665556496a2b526c546d6d576e45787971644f7254795a36737670645251706e323863515a56564f4d434b6b7a6b374b367236482f594c6b59564c74502b2b32446d6a39526a324e4535362f4879616e4c5a646b7a52786b304d31612f5a35523873734d733443503750356f50314c7a33795745656d6e33697364634a713937655054716f66597975774a70364b744954705832784f334d4667736a4745624761566d5743666b592b615a57627964672b35674f5051556a354e464736334f715a4c46747046393331396e726c6434316345576252556c644853657065305249496d7a544c583750724c58473153484f352f514d63753033557748397430475179764e5856705430492b766c6671367a6e30756435594b6270773866645a564b615a7638536a415448362f736f415061312b456e6b6d70693650694f566f553443516c394e4a4a4b634273673654487431737244356e5335766a57353551326642686c63735161484c574a2b5050644a4e624250564a302f4c315933635a36534f306e674779324a30645057353772646e4d576832505678416e514f644a444b6c3347644a583870414546542b694e4b41506f6534542f58535558656538644a4777555a614f724d79612b73494d38356a5a4f587572625a4169373639755933394d7a31305654386c6c4872654767506c35377856386563445830356870444f64576d726832556472355844624a6d61596c394768646f5436314645334b76652f3636684c506631582b316f6e6c6657454b5171537777734c6f54356a4c5379457a6648574b572b343678686c7a326e38694b4f726b764a44557035564c2f7742685a392f7a6e4471576e4f6d4e4d626761425638737957565572715361596e54506f504e6b7a5a6531516a4e5941556a515061484a45717665545542784a6b59536c7a346e4a5944696e5a676d6754705254304b5a633179387777654b786172506e53756b4b2b564c3643352b61587a54635973356e724b616276734359702b4345576f3035666648495662706d4a76614e4d6444633872716866524761326e384e793255555a365a624244367a4b534b784c314e2f774246414e6344617073395a574e3056304f54387a4e4334586478644a584b5457342f5a324a32534d7443792b685758334234732b4e4d30652f3374665949536278374e6b6c30524c6b586a7357704846304e4d2b5a756d564d33436e7a3739684c583539516b367075684f736d4f35306b71525178626c716e6e4f5a7754413944346b5a617554744768456c46635a36326670635944666d6e304842554852415a58494e6c514e455a6b744e6b447845654a476c6a415251765153703148517069555643364d2b6d5a372f67636b6830714a453155387a6144734c6b2f556b553373495530674943593069564a78773642727848316d5637576e5846544572434d70395076314a516d586c68504b4874366e7650712f7537516e2f774150306679706e52483267774a7848495570303051716a695752507a314d5851504c64447838467154326a394a7234647977345332575a71654753672f62513067397675623876734270566f4b654c44327249714d7a54684273386c45396d633530504f4d7645355a73703379756a3533343272343045394e70744a546a4868394d4a47702b746f476e7339444d714f47764e6c2b76556d656e6c7a656371356f6f6e6d4a6b6e453536345669315453345166716c507a636d63707a5243585a384f664766316f704a516c63352f74706a6571516139434f4d6f4742786b3958756c57786c50754d70523441556534425a3335446d4b742b7a494a454767315a7234336b647935684a31456b31494f36536170526d64437554396954556c55766f484d6253396d617a68445142683864672f66396f6e782f503745474c57415674513141592f59697a363255415842655651756f2b4d7662314b65666f2b415367372b784d4d6d464f54754e526e4a7158796448317a6f7a537a307156547a72332b39546b66704c6a72466f6748476958746b5a7730427741397461646d4272614764737a6e72716a2b7554414e4e624a724b6f776378387973372b4a52325639514a47344d745a4e44724a5630567341584439623541594667347071634b35656163654f4a4b6f3542484975506b4769305a467055684d5a4b6c3657573458547972416835504c375a7146395637506d5a2f51426675576d754c5252514f5779356a7870343669534e536a754e315333384b5a337a45344b73325038415230663959516459756236366c384e6f505a4d796d59485654444778316c393767565078496e56304d746c345a71486b78485765784c422f545871544d59417466594531653972512b753075307945635855415573756332673942374a7567376a366f5a4950676a533949304c7a355933484b705077742b73344f4578667a4a4d4d2f755563592b64354c796e4b45545438636174744e41535a6d5459704c6f6f302f47565859786f344c474c663770457055305645615455446d44376d6f6c626142313633766770733053584f4f53756761732b4c73756939736f3856376c52745a387936506a35774e5868745366766f41414b524b6c6570504a614c572f545538704330466c3261437a4f554d534c564f6d6433337967554e676b43323178744b5a332b664f2b7a34672b50484d5375466f4456526e7978686f777759717032753656326a55484b463650566d502b78614c793971326f54315966382f562b56524c4164734c4244754254424150596e4a63667a79775a2b656d6e2b4b476372647731357a567554786b73594a4e617a4d4f54475238366f422b4549303137356d464b326e75644c7a7279614953513865757568566d4a645662326978304e672f567a356631503171586a50384149596b5a6d37744152506a3056316354617a7556394d345a3961544f3066693748527a45446c5077564b4a6e33796c7363745947745a6b5976544f4c6a2f61545744324f524f6e4157685150624d35646d477136554e4761684f5077334c367a4f5373474f2f3778314e6356796e755450496e594d556b6b76307a2b676634794c4b6b7839596d436975564462654c79577562644769522b664b47425762796f416631645037425a53675767334837326a32574c355453423958426a4b6a507174664a416e506c6f30583873432f4d6c4e6c2b61715038416b726845436e6c506c69303850396370684f62376157316738326d446e4e30327a53636b6d6f314b4962364763315938796546736d584d4c6d353454786679307657727350394f4a77645278524c4e53422b49306d4968482f564852765169576c484a5034756a756a4a584c62327a5046667738584970492f503841756b436b7a652f756e367767344f704f5176384146616c684e6573664d635276377265672f4639476654697a51506f632f77444c4b4942386532624d4f686930356e45337a767a4d2f6d6b7769637648637946625a4f4537694e677a346c513054636431657a6362576e7a486e372b53786d7a4375764f786a513766373359784b5939464f6576744f6e395353712f576b543165394377796f63664f494255787549577a5569446954326962594f4572626a30616f76496b76646272736f64416d5a64736c7341445070615533375a38645678457650647870734d467457355055754544487261326e455a435272564a426f35644f6d716c65765371666a6e3156664a77715034312b65627333527057332b4c434557546958794a684e6875573173794b3070585946644d356370643875704261626d6c4f654773387a4e734c48564e506f647a4b4e567a55735176466e6c4c4c62527a3450654657564e2b6b314837784b7643306551645a656c514976366a4b613137325a334d6a515038416d65516e7344715861566f5a4f67505571304e4a326c6a70516d68497057644d63375073302b77567a324576626f5768516150343557304444582f476a396672473639486648664a746446473761586a4c3330555378576142507a616d31734676794f6a61494963787548487465594b7550486b6866577a4c71523132704e56486f765651454e47783132584774586b55774947614356547247633677507343626f35752b31514a346b70352f5037695335564632743433626e71767a72634b4761626c635443376c777a2f41417a4c70544667554f7a30646a6a4a4e6d616f46636935582b3955506c6f4f53724e464332597449485a575a4e546355347856746e6446793458446a517959784e7a6e386a71466a7458324852522f45315843794b723255696449413579672b4c36465153526d6f6d736f43517955724775665849682b51675442425135504c464f46632f4a5632736f3070586361524a427663644e4837636f516e7542784e43685979757276775a36397847586c726d624f2f4f7330647645706c673161494b344c6c6e4648616c307063396c4d796e4537373678424e504b556848635252356a334a6e694749343943682b63365a304e6c6b4b4c387a79414963545642655530386e616944552b3473702b692b4136526d73464950427a4c583755697a637a553171546b6f554c73714a6a74436b6c6f75386844795851697054526b354172704e4c796d4a746a6d4650326b796564644c475667326347734b6f756e784c43783036336a357a345441757176322f4859684452646f727a4f5151585361505a6f614a566c6e367974375559464b444f6155565143517875396b4a4f6963346e485558666a6a5049754a574b517a6468627a33714c655a536935716d7253506b6e6a7330377556554f45644b6979696339582f6e536d443734732b304e464f50667a5a426d64792b49514175794b37503461362b764c4b59567935437565524c37522f4953565a3653646246666d77714f525368696479503631565a7a416e6a594565334d39372f4674484c70705a695635557939484f5376564e50527441714938743045642b6b72724e544f79397046464c7530526c4b656c45756b666430326631702b3839654131523874305752745a746d694748546b633350424f596d4b7864587a4350486178737a782b327a504b6877636836766871573678344151696d51433046512b70737669756868776246643969504a6e6533595834316f595376494f34696f6b61634d2f6b614f3136534a39424e4470633955452f616151564f6c4e4255676b365135617563786a7647724732326d366b4375796f35364d415979632f4a666b5a616b53353361734f4c537a7557467a54736f61796a4a637a76754759303247597a6e5a564d537468566a7332785532786d315a3359733279447568526f6e50315774322b49395366495a4c38354e6a2b526b6638414965775141414a7361615163314a2f552f6f4857424b37544b504b484d69546961567550343472686e4175654e76767a336b39475658524b586b554c3532797268525a565237705470476e6a682b4e4a4f6775354f55374c6d763841754f626c364e646e436c31584555393033467a4d72756e3264416f7935474b376f796d52484c307a414855736b494f54567443752b76694c753948564b6c6d5a6f56362f6a3849366c325a544c4c4a506a306245385866686b6a784d5358564a6972432b7a504b515a2f786939396931416f5a666552686e65596d6548634e38664233436566472f4f586f346c5766334c71686b4f4276636a455848715361556876384167586e457646695864442f495430546e38467657536655644c7964355a33374d695861746b6f73386f742b54647a4832643134484f3238755848623873305747305a3235655455525a7130366733394e765271704d737161544b364a6a5037617a2b3739654130453953703771396f76704e4c54564e4470505673437979694f6b693162753545756e7335677950314a772b724e77635034706673542f57725632336f664433574f6c766c2b7344577931576675386270445332702f6b4d385750514b65614542304d796f4b6b556f6b557950677a726d397372486f53705534555142396b6d742b4b4b54534d78697363664d4437344c747a6e6939665766486f3542726b436e7467484c56726f4855325a4f352f7744503051714a69664a4e525051544f6778656e4b4936572b3732544b76303868462b4b4961724b65506271366f63516e536c4f485332667075467271725166594879586255386f70647862627745307032416d4f505259644941426c48493664332f414d672f6d367a4d32487a4f772f4956766e71553769616b307651386459532b312f737a795369597a6371504b6e53797548396f534559345946764a382b386d38616f566c2b4f36453265712b7556326e6f71302f77434e7974586a6153624873664e477a69394c536e732b314f6f6165546e54545352554a6e4d44413662596d4d7a5055566969716638416b64664c7a796f6a304c704a396c54747662744c526373585236426679613639414b593650746c4b724e2b6d314b4f6762312b367036774675676e2f4149765671784a38646b764f2f4e4275705a6e4a757a68446d585955756855682b68506859325779705970334d6a4e516d63707839686176544f614e4a55653350553768734c346e7566647a6552735453704769643033644a3266707a4a7a357648564c4157514f306d4a735a744f326f64784b754639617632575838664c57775a4a3738356a457a48674e737642564376794854465832625071353154724e5275342b724c32504858716e654f6e53302b444f57673669675271662b67706a2b5a7a756a785368616d742b7a49746a6254524931315842504f732f6b59484a325a7a78614f637a6254587a656a315a4b67734971777857597249342b7a5164755a484f3550624241706b5a303755436b664e76375973763979715342586b667262643666654a2b69323958354a574f4a3438716e55325a764c6352505a543045614d2f77772b5353783465572b6d6d6d6671532b357855334f66585338722b2b6e326670586661776850502f6b7776343971596449666b313633746543696e7a5264483432785a48495a54366f75684a786957615446454b30726542476d436b484a2b394b71773766342b2f77443036676e34372f38414a6550783475782f713666354c65754c5a755a655057696e50776644343832626c6178453243675a5746523861705a3569352b7241446a686d4131704a765a346e322b382f7534486a312f4c4430747a6678362f4a5831333942736e5975386d386439462f557a796e78544e6f754b42477662426c334d7a4f77314b585278696b6f735a4b6836424c3569576b6564347066784b4830394f322f54726675745564516652482b794c366c2f6c622b427670782b557634343639506d33716c354a353374654e58656a31744d766a6373474a6c58325a656e35434f79576f596c52313141456d412b4135733061694f6a326759487a5739716a54316261657079312f454e4b5050763757503531656a6e6a33715a366a2b5a6568336b57506a656b666b4a34486e644d62632f55566c333054353551304f6e7a61433575593967736f59566351765679617a3677752b623630783631396f30625457735737585a46332f327476526e3146396550572f51384d385877644b2f2b5774676b32715a764864726973574675734b584a6474785a35766462794772637258454c515358384d5054425a63446730317278537536653466305a7647733547584269356270396634496375505062326963707166696a586e38656c4766516b2f6d79656c2f483857766a7a2b34716e737645364d34666337346f6c2b34396b6d5671506e506c61306c56432f68472f5047474b4f4b642f77444436466e4c71414a6e75714951584e78517145444d3145304b5a7636445536524e2b75314d5865502b4b53702b30322b6e50626f35384c41616e54316f5736525a73344f4a555a616c4b632b696a6c4e59337a72476b306a3376647546593868744434357032517857702f6d56534b70664b464a426f30636652656e677931775236585365795154364c506749536c6f437833667369395053454d7069596e45696552575a31766a314b70776a3671486e435a2b385765634d35566b4f704735564c4870374d77527357376c5164415574454f64417563533537344661456c734d7276356c67576158324c5965484a796276473534364974712b71616449663431506668574975706d6d3967556d44654362512b2b45727732714d54527a3645525a777870584961347138696c5359355a546c35624d35584159764e2b517a695937336f5961564a454a6b6966394154594f614352745a4258336c37614b6b446c68587a713230784a6246567876466c32565a58536c773364344c714f6637456a4e377845775a366d6a4d624671357778434a6c3961442b636a36714c6f70506b7961666a536c5a746e48555a4d67324438546e4a4e33464549646346452b75486f646b6573464d6a31612b6a3431354e7a6d587a423273617a504156546e715a2b74324f746447504c2f4c516a2f4772393361444d31724d4259512f4b7564563632326a6e4a366e2f6878367a59766d473571654748347476714f5a79626d51645234786543364f37306868393271487149366e34766b4767585a70675651644876636d2b6b542b7064745855724d597433445676314738532f4e443043304d5831465836465a6671423472345947536e3142356d2b51535a775265444a2b437279547a4c37306c48312f354d666f5a4445384c71674149464a6767434f6a346561567470586a6275326275794f676e70543572346835763435682b51654e3755627064584a7974654b694f6c47644e3350725358587a5461504b67634f624e4c386a5a71486f564f6d6c50436361726e4e7a797a6d4d634a456f3952392f782f4c3676653831724e50697a467a30686648624c6c7a387a476c7059353430626f3976335772546d797a75684642476c7267665030715446335756694d526942706c2b51587142346835726e34576a3446366f5a5069532f4766316f5965526a2b5563386556656a4d665a715671636855725673642f3476646f4e3678796f7a565642387666303335304870534a69654e4e773152386552354256366c2b4e65556556666b78627956624e444d71796375374a696974785a706532445857575450784e7372574d2b7549574f446e576842462f72724775566d6b3432346a54472f77423437366a2b50364134702b4765545336455754646156585438677a453937445050564f6e686d756f706e57496f734575746a6d6c657161507157396348453056597a4578316766764a76555362477872593946533947536e6e4d70396265307566444333455859714f4f5070552f58637a4c79716d4f305a47464d3554435447397457616b6d515045352f6467396266543731582f41435279725054767a4e486d4f663431342b7a46386d55364a694659586c55745645576b744f7866735564337242356a786d624b466c2f374235314a6634473731505a367a576e4e79794f62724e4a4b5a68646c717a71354654444657767463394d4d375575503461786d6c48674f5a79656f68495339364f3963357a4639455461573233486134514e6a76527638414a62317639456f664a31656b487156355036584e38317735737a5358342f7a4a366d72464f4b564d4d37645733703170474c506c6f6d557a6844514d394c686166666c3666395574703174504e5864744678595839786a387a66455561414a3965642b66746d4a42346256546f5a2b635078654e6f52714e6e6946566166686a302f356972333934507373536439436c665342564d6271546f36647574524a3466377150356f546c524f6a314e68322b4d376b307652732b48346d7a3831766a71324d7837552f596a39384e4349793478665a786756396939546e6a2b794931563978706668472b663452655661663979547772386b7654723137777641646231423862384b503141394e742f77414938537a7648764d39507933586f71487946336b32776c667530736d676f3831526c5638717336616c744a4b44767336576572456145366331345636546b65712f384a6642662f6d37394250542f774163386d794a33614754674c797a37627138736369374b586e785249626e32736e4f5771697038722f2b34746f4761514a436a70726e574844713831375457654d445972314e38663841444e47692f52767a4d646556656a735655565a426d313639584d79596778354d36656c485866583135616b30646f36734575704e504f316c4a4e502f4146536d635434437250412f4f66527245327552582b6f2f696137346c686a352f696c4661344c664863327645586e7269526b58773537394278566143413478527a754d38332f754f5346357472764d576a34637747766b66714a2b50323170624758672b612b6e766e684d6c7a33615868495550324b52497a7a354d332b4e58467363513753354a59784b4f544e6b53332b4e674f756c7a6659536f694c52317274774a6e36592b696e6f31322f786a533863384977736c447731583530646754642b6b7257614b487a7448532f51535554453651306436417a746f54504d756458784364635774626d7a635272386d46594f56366665555a5067655a6d563757316937585a364d69796c6572576969626470757861417a524a576556455932416b59562f4a543779476c44356148683264504f65666f5050702b4a6e346f482b4e76704c366a2b7274475a7a4738703953764d2b3967746b39323550424e6f366478597337624e4c5846544e5341532b797a687a693850737562644d447a2f7742765871616d2b314b2f68484e62387866576630376e384b3834384f782b366c486b336d716c52366e5a37323673734b706649644434366b46506e386373575a366443704e4656464e43565454706a5653685050363330367a6d74733432446c4138383973325266506d5a6848624d55634f5730656d74384e48626b52544d6837757464527352445535692b7541766e6f4e726a4d476a336f3767426e5a426b6f6e564546744f6b7341515930386f684f7663634b3339726f556e6e4b6e415643654359754d4f704548383933784a4e59517663794b4e66796d356a466663676764484243644230684f48476d4b316f3732316a4f4d4c6a485564396e422f7742337a44314b68547a6e395772624554474230392f415438514e483134395370722f414f4c7264446c36634f64786263365471583848486e4669357531723537693673663354776e43535a715356386a67553334634e572b79767a48737a394c2f37656e342f655065486a6d383950704d7252335a6a72796443377862786c3770496239657a4e792b364a584c70376d7a7348557351686a615770314b594a714a5436457a752f774265626658764d3972714f616e39782f384174412b6d7671483442716248707834356b65442b6f57446b4a664835466d6d3171664a5852716f544e6c366d57784e4d354a705a4c4b51486e664b5355357378766a6d5544512f726652396f7446735735716a782f654f654671385833764c504666556a4f745875654961656e3439586c47364c726366596a5a6e7a69336f502b3462702f726a61704878652f774454512b79716c51657a322b6a4d356a4e5a34572f714c49412f42632b504d6c7a66462f486776314e487570514c6f357461784c497773666947354a6c5033364939716e465a675972704d4642325a62554d4f6d754a385a2b33396841746e596743776a385a5637573050746652705a7552657274764c4c525371596c563550666c6e4c32787371634377447464495554396d4655797a6b626e66327766537a4a2f495038415033386266547a7a6a5079394c776b504c2b2b53626e6a6c6b596c4e566b65487a58484e67707a7953344c754d6b434e374538653075682b795552417458326339653830306453593751396d4839786562795431417a73444e5a4932587876417857532b502b4b6a394c2f7264784a3646686d6e34766f3643514747537858763933764571657a492b756c776a624e5a35756a69737869636a694e70654b6571506832787565522b43724136356977616b38377150424e57386d466e38476d69617657586d5a757332666f752f58535251356d6b412f7635374d393675724e5a72455349357666334d765733772b655878487972306f7332747a75507863566d313833783642444a39476433632b6e5537797a6c66386b372f413154704238592f5853422f7478782f6836323478624141357635482f6c6236356242356e6950705a6b2b6c2b48766a6248702b5661384261753743476a4e4c34394f334f6b3137686d685747657650636c484f6778783836763333564362614c624e4f6c637a66634b7a2f754a2b5a65686e70312b4c38506f6876654e2b4f2b596576586c486b7638414f6550366d2f487242357034726c745975756a7a4e72486c375578384b58532f31716a584f2b6932734144337666796d326a46375833787956484237526e4e38723635624c3661565a556d68516d6e6a352f753959704b4c4f39372f414b436e63346863767131774334512b464854454854415853495259337250735430724c4f314b7a3733764e4d526c573739422f6b6d4e46412f466e6a386431797735772b74543831492b366a717934596577482b3054364c656f50685034652b4137654a69564d2f77446e68387033764c644462734a48502b6c46507179385776746242557862585a35477744584831716b7453686f4d462f5863507446717a71326e76714f336374744f6c6763787254763137446b46326235586f7779386670315a36624c6d5a65637144504f76504a546c70524333747957527270467874616166727335524973667a725a796448553866387348573173535469717676492f556b4375486e77397966747a554d5a56524b61517836464c55502b6e51647858784b53346e663147496d597448556551622b366236732b636669682f63436b39592f7874395576503841782f797a314b385a6938793874547562444e76785347724c3071705377544f7130793276483177787361613951614b456c7045515567352f79723948517247706f376231356169785051332b3839752f6b476e412f4833317539463835506b2f6d506b38754f58715a36616551707a45585533396c6c6f3773656e3165637a685936727538347363367551662b2b78314b53644f3433526632534b63394c634b393176376a30542b47656e2f41495835456d444c747957316173354c5146432b384f5a6676514a693950464c352f7439712f642f7833322b302f3634707661652f41747a797a776148776a7865664e48787864474270317a4a4b67424e646c5664544241783750316e2b432b4f466676373066312f77412f7633663155627265552b493443504766434f767936484e6a785a4d387066625078665555537041316c534b65392b506a68483966386a2b2f2b66367a695a7a66762f343641646b656b7669714441737678326162684c3462432f30636d5177672f7743584830434c35663234522f58656a37762b50366a66506841716e3869504159664a2f53327a30346b5970302f6b514f7a2b72714e61315836564c424c76364c6965642b74316e742f35373332382f712b6e626d745963796679652f496e306f2f447241386439512f584475796a61305759586a4f42345834703547466e6b336e586b655a6e4f6969385438617a753364546e783963575079717a6b365870535a4f55777667577832326e7033314a6d4b384279615a2f63582f414c6850726e715a756e365146365a666a4e34646470654d6f784d584b79736a523875746c486a503431757066663841507879554555362f725579663444544e5250474b614b3232644875644773632f4e59587434332b58483979623062646a375774366d2b422b71766a4f58784961506966714a36644834784c506f364f637950537771664a76446673386d6c6c6c47646255312f45454d594a63444f634d356d317470364e7545556d76384d6a70642b4d6639317a38632f7947635067507258343833304c3958565a65593866546a654c785a6e69757670654e614d2f6a79312b6e4f30757267616c4c59614c4a686c497770456a4e4358636277575434616d6866543430357144616a315939522f4b765358783379507a7a79534c782f7937306c38585058386e39515848715079664b383346794a55446635516836744b57667a3646434b4d31396d664d745466742f596533704134517270577357742b596552332b2b39692b6c586e666d5034392f6d6a364d374f523556346c3638654658654e2b512b5965504d7a6e3539586c486773386f2b4d36506c4c4a43576e4e3875445030732f4d766a656e6e376a38622b62694a7776366e6e6f6579546149746f7a7932714f486e69754c7a5132734e7675547846534366533335364a3473334e634e4274416b7745307441564175775669354d2f506b4253334851356f724c706d5a6d496a756754767a6254705847794136546d7a3167383535546964507744304b78694e4f6f72756548486154687171483543442f3458752f78344142386b4430472f327366524e6c65743533366f6834546b655336754358686e696d5434727361726f386d4c5579636863327035585a4a43376c765973334c48557536726b352f66724d4a517057446a476e6b3137634b31336a764c2b50442f414662713958505658483951507861384b39472f472f45504b344d5830323830394f64757574587166684c6b646c2b52626574686e2b3337374544506b726d5773666b7164716d6c414a443639663841584a666274724e645362572b4c643849327938376234376f3648687668336b52476d62792f46324e5a735673413556477a324c506f7170744e455767734338675a4c4735584643343577376548444a73307935517a6a4f627a4872413558666b4a34372b58672b596a682b6b325a2b505869486f3533303030394e766a575a36585070386d6739515a46446f352b416d62364a4263746b4f666c3166625974304c6830375069363239516a33656b36654d327a613237784869322f4a5477336139507658587958782f7741766c6a485156716e64527866524c713837522b6d506563734568426c434c32436d68524e6374546f2b6d706a4f43596c36644a7a544d65583669684b6c6379327353306c382b3443715a67444f483455644e4a4c4476554d57594558614b71412b45666b4d51635a6d42462f704b654e7038784c6645764f744878576a423873385930744f54796a7758647a62737a6a487a4f56627762536f6d684f644167476c6e6c6f5a726859756b6c664a7a535948374e72514269596d65452f462b6f39676e34422b722f6f312b572f70766f36666a6c6e6a732f6e5262574f7679663035643544544e356e695870636b46376878706a4a56486a5a78314a53752b655656526e37633336797a2b79366e7a396174744b2f48736973433941737a3066384137695742366e2b6b756667656f507076366a2b4e62575679782b6c446f446b6130584d75616e3742313743692b387572556a576c743079555848386442524d4d32685066664e744862626c7441364f364f7036302b45356e64767762775478485175564f756267374e2f7538637a5970536a54746553624b4b70335641357638622b70314e574b477a786d6d566f2f47394963324b7a31746e313569744e54316139636649664a632f4939582f4166546247386a7438746838626b7a2f526e78375472695a6b4f386b77653538423537746951427552737261336f726d62517161564c766f55644e774c764e61346e626132504d5852367a35486e76704e3636532b6e4870336e7a61577a356e34684a3548345133792f4d792b654954587761354c31722f4a686e396e756e6c7961753843694a564c566a474678316c5a65314361316d7436356e7544723078384f2f4d62314d7a364d503164395338487a425a655151364d53385830317976452b784b733032626933686d624754385735506d354f6c4737346d6d6c4c77796d754a4b5345373436326e546a4d3172736b56642b6376347765442b70577436523433716a5a7565722f6736642b7a526a38467a764d626731504b5a46546663444e315835467a4b69453962506f7a6d756c754869512f314a356d394d507558307453617861616374767844782f2f414a39666a4d72386666795133504650482f41397a7854782f77417a374435663665654372646276305955506b74423848776453724d53633943375038672f6b4a352f2b7334337a357038635a312f4d785870614e39394d7a6273396f656d6a2b33702b4f2b5a2b465034787a5a6a37386a543962505669667833797a3150305a6c54565535714a744c37574a3665686e4a7a3765336a6d356531724e5a5a4c396a362b6b594163303143666d647761312f66616d59345672325275766b2b493938357a646e306b476c75746b2b585931666a6d6c6855533645456a5047463555714e4275736474686f5a476368486d66734f78746f396c4a4f593530796a526e6e4850343933723544536e2b327a2b506e6d503476657466354b2b6e66716a4e59472f6e53594f586f6553657742673868385830616462754e754a794c6c39624c2b35353875704c314c6f716b6e2b764b785a4e4a5476363031727865744a72334334505554784c7972787262304f2b47666a5a3437366f32352b5256645436682b75486e4f696a78665875572f2b54516e4b785633644c5330726461694e7758366644624d464d30546f476f354d7031617a45786964546250345942502b3368676570336b486d55586d33716836656545656e2f6a3369464f76516562346c6d65513444595736756b74474a48787835725a364935706332633376643959502b7437544a2f3741584e61613478573237634b442f755a656b766b566e35523458694f56436531344638466c6266487279303556376d78666952772b4d5a58417232564c324d6e2b51736d58317a3533384b4f596b30553053532f4f322b6a614930387a504d4f643371663654666c627465527834326250365861766a3262642f384177313435365636574431374e46776c73362f77637a3650343339616e327751314d78415077694a6b4b5867464f31626163567a7833523569334c552b61656b6669336f42357635424c5a704939426650396a794454794d4f5a633931475050646d532b547044597a4a654a4b686d575654584c573178744d444b6d67317545447277744e6f6a7059646950544c31362f457a3163746e32505458386b66535136546369712f77416632764e6c596d376731526736476a447a38375733753848367550702f5956414d7378427745723444432b784f664e616d70586862547449717a38696637672f34742f6762346875567439532f452f56763173747a3464543031394a504148592f6c5673336c327a4c342b764f7431664950477452736d563432557267706d6a304239764a675970414a423063333957706f616d744d637532754f4e68346b2f4f7655727950314d383438383952764a71326f38743837386b643556354b62454e7979733153314c42305570647a346570682f3841564b763250462f756366724a547963422b734870784661785773646d6f62662b5865383530364c644673522f7831583271434b6d512b6c4d4a55545366594867723050394c434266312b634a4b54583370636a506c4d437949505156337165704f3134706a466b5356326c537a617273464747526f3034513065574d2f6952697a567154567056636e5777484553676d6a436c4a7a744a377a6277794c3738432f444c79767758616e763376562f302b69557853503565374c32762f414350426e4a756b554278624e665932387a51483755745976564d7a3270637471524d656e2b717a71317445626169552f6c4636502b61503863384331664776492f44664c38484a6732485062683645484b736d5961696b5a7062556f5745746451727153776d4f2b552f5a6f71542b6d4b696c542f56615447625a3552524834336569486b48354d65755868486f376c2b4c57725a35747166426656574f306c574834316c334c31664a6e4c712b346f7868354852523263574742726d39796961436e4b654e3732696c62576d6579503654506f776e78507762302f774448504166484f6458346c346848672b4e59474f74586a72595a73334a686e777647686f47434e6149775a3958467251456e5032705636552f5836545a796d3857325a74615a2b50384171507a2f41465538647964464b5a2f49706f7778315279667968624f666c357341383759684e4673377443566455762b796743467048436c7a754b413766694d2f77436b306d654d7a7845653953504f76454d6e784c756e6a2b75722f482b6261567a5a455565686d78374c527a70705976346642774c35762b6a442f4a44375436784457562b397a70577a664754715a7245356e6c774f44333977666346666773486a486e5762345035663542355273614f333446356834387037647a787a4857424b704450752b5279567930364170587863314661567041304653317933462f58546f787a626f343448427562303033635368504d394257564e6f6b7a736236394a4f4c6d6e727242796a4453634844495a34525a776734662f414d512f30506638752b33737a54776e313952316f5a2b48574e676567486a656e356544614e4c516b355a626354706771446c4c34652f474a67346e4d64386d65587337372f65587a642f792f663841585037324a7674676146332b69486863586e576a6e57592b6665386e36626b646f4a55546d5a6d6e4d78714451615066787a6745715061526e306846492b37394558742f7262664f3379454832667944386338496977384e6d63464373535538386c78675339574e72775a306d4866582b69475067696e6e41452f627769353076313776385a696b7a47527a72382b374675623231733466447a38586b6c2b6c425053584838557251352b6e644a5358667361416f304e4a5a635653426c39795a582b5a41416c72455969493842527a555a5931557a615161644a54794d2b75715771626b71684832716330714357644d4b52586d6b4865736153772f7742774173427137374a34343868747a2b434f6a396a38755078382f55696b54312b66342b49304d745a68544c4d506a374632554a6b445356524753374e436f4f76557276424e4a7a386f615a427771616e59743868376e647a792f6439504d447943585a3546506d335336324271333754615a39664f7a6738634b466a707052785965564e7338643047645377554331727330577341726d427a766c346962596a6f4e6176376138474234626f657466674b677a5a504639765976387338656b38647463364b727862314743362f736d31462f4a4765397044386441456651544f6830466c522f6f3671654a30315a6d64733942316c6839497654377843442f796e78624e6b6f5a6c353365597a6b7952616d766b502b6e6d374741534a4c503841734f765053506355644466676d356e30683158443631494b3534746d64737831454d7a66795439427348307437347262357668654a3772392f73575a525a5946353575337271307138393749547857684472424d757272515a31707154383962684e4d684c5532586d3264752f49756e30733953634c796d4f684f41326e652b6d32694264636c4c485a32677a4373687a37644b6f34744b68643332717035364f3954554163595a3876364a4b2b487462556d767942767a337a2b7551726d6e7357796f6e307137326d636d657942454a5666567a4f5366656853613647526a2b6d7262772b494f4d2b66346e31506636556a4d35384278672f4a334769395966587638615a372f4142322f626f6938793470564649456d4e574272396c75564670734568356f615532656e4a727a3072624735436b4d55484c4b4b552f4c3155746a547678784930352f2b55492b706e672f70562b4b586f312b4c6374654e712b702f6e486d32463573365158555271792f432f4553306f6754714f2b6a4f2b365569737354306a7072352f7743677445686166416f4c54324b7332314c616e7731486a3536344a4e6c4f6d7a6e4a642b567164575058646e4f54384838664f766144636b7a70317658516e747a506e34346146444b414f343155356952393778732f346638416d4e2b5148687671315436393533714f46586e673575664a5474616270394c753134336a6c6e7954654a337242782f637a6670345076543166776531494c6e6b4d6a4a5077306e54704e646b78796a30792f6a332b556d2f2b51476436642f6b68347835355a4435466836506a4742366c2b42732b4a777a544b5232576c643241783331512f6557794f7332662b2b68476142504f6471655148783330347046715448384939422f68666e476635566c5561673767362f6b47764c62325962304e7a5a4e4c33757a53586d44342b577736624e323157564a2b4c6949536f2b623243373966505159386533466f6d4f386564622f414f55692f6a66366c65522b692f705a362b2b4365476e74654265416246396671786f3436654b763843763245536f44594c4e6d7a304c7078624b6c4f593632666c4d63644d6157664f726a682b4874396976574e53314a747a5737493867506937467157687844524a6e4b6679493252646a7a426f66546d574a55443671495563765754424e62576c2b2f395a2f4558513631494939432f616b44745437564a63643148645037512f514f6670736a53394b444732716c31693646546a515646695350694357667363726a4741396a514e5474514c6d3941765833314f2f4733314838483961505333637338543839394f4e694c5178644f5433564c55782f52307779645454614e6b31435452565a3775506b6f5630444547546d777a4a64623070654c56767a56735064332b4a3335572b59666d522b4e2f703936322b53342b4e4a355035746c655242354c42346650762f414d506d32427161475a74585a455433753637514230666b6c465173734d4f78677854615848777850797454546a5376616b6449457239547350314538457963433379337a4744413851665a56736239783637644366437a4e4173714e715a3479372b366c74354f37344b717953354e4943342f2b73733657713763384b38346e306476713534743466342f357436422b716d50587062664c4b4c2f41422f79666e6a756a337a4e576d777248684a617a56635a46515a575470372b2f59684f435648654c436167446a6c7a693152526e6d763561666c4836672b637865476561656e336a766a50664830353939764c647655386e7a71634f426e387775664959736f5a624533555a4c706754385133464a5463707336316445557a476e70784759747847794f642b5138336a613276334b323072746d793136455731326a517a686271787a36325a62506f4f5762714a2f6d5956494a63414375616b6171614a774a667a30323775374f42342b66373033712f543672666b723435347873356d6248712b6e6e674d33575a665a586c55576a355a706a797a3473784c4a2b3256332f78634c4464795a5a324f764a337965796d59715052396d7074706d50696b636f2f435046505544797166657138633855387538762f41495a56642b7254347a342f56766478736d796c66327174584d792f396d52474979634e3574653266354a6736667453787a6636336d596965504c36387847696d354d545632565335395a79383056386d47764e6b37464b6958593673635233744f565a64686a576142576b505a4e7a6f4f483375346b5055582b412f7743595870502b61506f68706668662b62676c3574342f3433346e504e6a72314b6e42705a694d65396d577279507771797651354d586b556b4a5a6655304b6168787335317435307a747363726b31744f326c6233756b4e642f54373846764d5077512f75622f414936332b3658316a2f4858315038414b37725053623152746e4b794c5475726b6f7462682b56784a477562443838783439436a3468624e38353241444a676f616f4f4a7462576a56304e5475314b3971425733392b37303138694438702f4576586a585a71612f6850725a34646d565a752f704a342f4e447972782b524d336b506a717047462f6a3846517867414b55704a54415044413655364c516e32533065373252787455634f6b387a48664d36546e63715856343141546f4c36303630776d36356c4b2b437a3369346b70754d5032427a683353527a2f41456d644854624f6550554f6561507a4a34776862544d674a3276592f765074693776534c697155726e346443577972595272577050776961564c57583656315445357833675471583950574634634c4e55436f46573051675538644443712b7670543044445633724530437466365935664f384e494349384a524f66614f7862352f324478726b543679514a416448684b614c57544d6454786652364d305838724d6b422b75663659526342337a48774149477542514454514a61787a4963534c4d3776457563733336595845776f6f33527061314b61656532644b7a71307248432f71423738312f4f6d432f5958326255375541564856626939436e4f337450476a72722f6b644f484c30624d796c6b5968787143592f4e5a7861532b4e656b58424a594e413341484a336437374f3237553861657673485931322b51327737646664627970374f6b626b364f70586f3645612b6a56632b35744e777562385046793147726e444e76572b2b684e50765a37426a684844735947536b7341594d326c726462505830644c364e646c44707a7043746171563563384f6b3468574a4457676e456b6c4d58376c454a39547a724b3865304a4c52716257612b6d714b6732735449504e41726a37754f2b714b6271485070356e7850584751464b76703074545052337331482b7076766f3631574d7a6a4f412f776675303964436d67306344535a51745347777839544c456565775a632f7633413757766e3857346e4b4d54642b6a6d55707a666c615459454531644d35372f414b3039436d5a5933556654516972397252775a5230754a68524d777071506a485162786a44423376556d66676d426b4b7636764663784d392f6350617a2f594474394d665248384b73726154426b7a2b6465726e6b6e6d757235446f6a52704b30753557446270342b666e2b5339726452503768785a56305443676c7454326d6c79496661716d7a6e6d6532627236755068714e617679473869697766574c314a3842726d614f5833797a51314d484b7234476e2f356c427564463658792b514f7a62724636334d394e7752506d424b696d707a535732595345616236645932317433694448357a705a6e4e7a6169386a485463357555626b545652364b74444e50756575306647733757386571556c67735778795a7a30474a39376d7a7a42796b6673756d496d6546757341442b516e7137672b46666a422b52486a2f6c7447647442366765434f385756446b4c7a2f38417833573276756a544235415861616c44507151574d39366c5549704a7848506d382b736c674c4653737a71366378384e6835674d38507352636367362b756c494f455468674e76564b7a6c78743756437776634d493656554c66617a704158734c32475465632f586666723941364b4a2b6843616a5461532f6b4f583565425042455358544f41473865553544634a33564b3667666c5067415a2f4478522b356a6f3359744d6a61372b33307a78614c3876505132447a4a57546d34586b323437785a396531446639534c513370744b4c783676692b4c5771697072426e6c37306d7154773941365370427641503841717574783039535948735167394738544e394873536e593850385638777a6652716e793448777a594f5835484a49576a5856685a7373476232644b553354304c686f573154726a5432784c436e2b74564f6d6e7a643970747774326871337173316d372f414939744e2f436a61394a715130314e32505542612f487648382f4d38696333536f677a624d75584b5639374b63354b545575616b304e6d6d705437306e533152333773652b33666c48535478504d395276555038612f4f765551744a6853593056393270674372763273374e56735272685a686448794d6a6e6e676877556e5838426f532b5278486e5279676c4973786e45587248694e44764550536a38672f544c79312b4c366549394d7648397250313971664174386c7a4c73557530624d36395372566b7a34384e5a5277733046366153534530414147554e35714144414661327453305a6e6459645266517677543138386633744464382b3266454e6a783464702b544772784c4c62347058525157647a48466677303858395044356b35734c6b38732b5a7a75675252744f7a3455426865615447324f6f41666d7836442b4d2b7176675071466e2b5665576255666c6d46355a3472356e3476356470624858532b4a312b466678394f5a544b4d597254446e6e6b3744463147506150744a4e6658584b392f32517470586d73316d4939534f4e50353366334c765466774838577655503857316161665576315a386a38624877375338673861446a5047516e716e6d5671612b6e736f4a564a6144306c7142544d6b796d3664676b4c47682f713730614f68616453742b7a5565556a50537979514a313834696c376c736f427041504b71614b6e4f414b432b77502f414378672f77435266386e7a727638414c2f6a2b75363357666d496e7363414b2f6f615079427053755449616d7972534e4e51396e4e6e4b4f3959773254382b71746f6a776763304b52354d676d47527074584f4a78312f34467759656e683575426c3564737446576e6e3656476968494b5662584a3956537970623872352f6b4e6630566961752b77784a344f36494b554b7673566d637a6d653865684c2b30742b596e38484e562b4f586c486b624d4774625861337037647474785877737a397779763276484b74665548706a7042564b75695557554853584c37474477767367586550326a547a7a774b382f4d502b344a2b545035702b5462586f5a366178626e674870506c656156526e6a2b4654366e6b586d487158737758727a3868336c573238587679354f584c304b6c496c7152434e4f7853327651417a6e636d64505270705276747a582f41504562332b706634432f6b702b543334752b6b7558353736316570586c6e71543654654b374761586a4838586e654b65476275665474566232662f414f5936444e7074586c336e484e686678466f645479304a43514448754d436f504b7572536d70626257746132476c55486976356666322f4c2f442f414675312f49747350476476794e48696a73584c3837312f4d73324a49744b3073767a72783358635066703657564c4f684b6e4c39386e316763445155696e6a39596e543170745742452f7a302f4e764e39565479302b444b304d754a655a342f6f464e64552f4e7a2f4833314d7a6246347a384b6f72555432425a4f784651336d594d625975354a6c374f76624f6c6f376335484836447a2b5646314455575056796a332b33566b6e7265524a49503431637a48524c4673785433546b3776366339566e48644b7964762b4452365231552f466a3142394e50495a50482f4276567a442f77444a6350766b755337794c78485273314650646e387331476551767a6163586135526e377934634a626f4c30474b33647830754b5434725768336e31497448476f39462f706a3575506b6e68477a36672b6c57797a787678746535796a4e7a785a647131686c6d72617939504a544a4655756c72707662754d5546546736575135524b424c516437654f305976693351596557342f716e524a503667654d2b4d503956734b75427a502f4142684265507376304f4d4163746d316c6c45513032554643367830346671514c7551464e4d526964483249694b644a6a624972584538573150796279396253742f475447394f6454446f30374b75616d684f6a794437755a736e63334c4f755347507135374e724453524e367a332f4142557a796e3967615a4944746e5a4f493164776c45487031582b4b62576438582f456b505548796e587674697a504b70764b38377a4f6d6d545a6f6c6c6f3142566f6131444a2b6e73547a675848646a495373766c4e77324d2b62735a393531314e6f73664438463958773039727a7a31473849772f454e7033476c6d5a65646470617535396d327967636e2b55625247485a726a46324f3736614f313270464e54304b4833634b654a6d753346625a774c493850384154757a4e386d38653859436b3962553874317648664658556239433931783046714d4c546669366937684c51454c7373757555373561567a35542f65336e2b3664564a6e724d6a764836582b6c2b6836545349485374377262466e45797631357049494a2f745845772b5548464d6b446e59357a4848512f396b6c68545566476b41364268793274767a6a7249747333706162656647747a484d5548654a4e584a52445370454576734558635a525934584a37372f69532f685253664a7a397237776244373863306270776b55364e38315947787a6538592b586979614b5a5373357063426b5a65314966456267705530505a3736506149414468466e7a63624e47684b465172424a4e36537a506a7533722b58357743647a5a466974624a314e397142346b4439376c47585036424850594e494241484a31306b48784a72392f5a65636d6e73597949725542517a7666326e6c4435314e372f6750786b5878414a4f4f742b7a49675071703570623452695a546762556364666b73474e70574534316a4e55354c496c334f6937385066722f4973654f364c684c6f2b3335656a337030444e597a4d7a48484950654e57792b535a7947534d2f6b4b306879613569305666716834784c746b36672b797043696749557253633642426f4f307839354134544a316254614a6a4847424c4f56535a7459684b327579523167616443526c6e4f6a512b76573457697a70442b686f616b6b6d737632413934346d644536654c2b5334525543343235366c4a362f72702b58356b69302f495a6b7454706c646f516d58322f4e7867786b7239383643544432653966755951682b2b6d487a7a4e396c4c5a30716d63595a76324a2b736f34435630664a435073547775437768425163366666684151547a706f372f515a4f6c714363536834695554446e5546316935706568387134354a327742594c53647a36662b6e704478424a39784a435a667a6a2f41454155575237316655304d6370437745776e637873646a364d39566a357a397a5538496150677a424672574b4a6770416661357250627a74654659386756664f32546a776c37474c48715a5042384461466b6f515975356a6a54504f6c497056517466735837766141524237766c364c75685966797766376b3068702f75502f6c666b4c6e37523858723735704b7a71353679374a3736447a5943692b7558585a7448536c59564461655343614a756767715570635a65316f542b7830356e72465258336a717448554d5a3676706f6a574b6b4f71716f6c3861706a793567304f575a4831725932446c736137516a6d5570372f737143436d6a34656857316b31745475453038666f4836635a3245776d5a595664784b4a6c30506c3150634678465337726a306a5936786478536b706b2f785454617674374b6f5072736f726674534c6c7861396c62305366537a366e486d7853764a2f77417556544f782b663841705a36622b777650507a363255576f4a72554570466957665a397966696f35555858456b2f7349525279664d6a38625465632b5930705a335278747838562b6a4e5035436971766b31745a516b357a6a466265775831587930544a52316951767244592f426c386574445244714e4e4b655a305063746c39374d617a505969577452365837455766777452464b6863554b592b575277744e4b6e4e4f6e4f334e6a62787747456c475831335a584d576f39657254494577322f646d646b6d37506c36556447666d6d396d655838674c30796f4677544b6d70397770724e305a6143553235775163666f4572714b7166354a6d6c715838792f62717777392b33547953414c757a31555845764863373339305677475a30305042355267584f50766c2b7a6f53525a614d68624c6c567757742b79725367727a7444694e306231542b3657366d624e476f48574e2b6568697951672f5a4e2b724c56324a7457753735514e612f5546756c587339363230336f79325544376856335873686e4765504d476e7950714a556f4b786d316d78336d3579616672637a553165796d552b637030726a62474148784c634a54655579614263545537515a485256664e5a6f314c5254566e42666e366d41746945537a593933375645336b7a4a58545363396957716149322b5956306371564f68715277346e49585a4b31746d67616e596d42376f6b3155513077786d37344c4e705656574f35392f41725a49435445436438494855444d38536242754f4f4c7031334f6f7a644451566f5733514856494636646e66514b3861634475684e624a45694250374d2f7744694a2b5344556d6c33386645546d4d78336a456454794f796e536d6c4478555a4a6276494d3352632b6c565466354e636457567a7473735a4b726645612f4b73744b4434426843366e356b324a6d49313053497835464a6c39646f7475664a2f4c4d78684c546e324937364a636650746b683866386479677338636e4d614a366f557a673333323153746e6d4435322b356333584257666c4d2b664f393252547471324e4855513531633467576e46564a616678534e3077546f4a5349386d644c594d6641635161466b346e4a50704f556b51422b3236736e74312f482f4a6a414243716271387538584d51687530716e4c586b6f5953662b3572615646626753356f54384e337a6336594b2f595362436a307572793773386242774d765466506a36327479477147664a4c566f6c5964464a665964764432675962615a6f71792b744e675666436c737977556f4c7778644370466b316455712b7672585257355759623435637a4f4b686a473576465a713252365175756e6a50746f7a6c49746c4d5164476962397969466e3546544e754374332f6b4f4c55564e6d6c626b354f657544497a2f484f3335326b79563931506c4550434d656e5a47714e632f784a4c74374f7a30694c303064727772486b466833597454787843416a7330736a4f75724f5976494e704457746d3165366a495770376d366a5a3466756145746747716270336d45315a7a6b366879515369754a7a4851534e546f47396232484a696a5873515646506c5535776e6e71774e36717a6e323354756e537950513564484a4f44655650444c64717a314a55325a4b6a5a59522b304e65504c694c4230486a6c66465a734f79457a54364369376d5a7961436a644537506c67736f6e6c6c786175634b726b737848563369622f414e556a5448647a594546702b4e4f7071654f446233377176624a4133717147573669395159645959556c666b6d7a4e734a552f745358534d70724a6c64376f70506874715a345a47766b2b5a562b394b61426650496b6b386371494d3762563478424d79704d655862784f686e783643724a77594f584a316b3730556e374b7750376350765379515230736d365a69324650587448356c67706b65377262626459504874746b736c3943735448636b55336431364c48646258786363695a702b44383149304d49474f6367504773327a6b5762795775385962697873656e457158582b382b726949547148555a565534374e4c3372506e656e4e395a4268536e5653627a645274504c356d626c554673633370745757624978653857724c6272636f564848577461454d63782b784f3269394961744b59453073644e395436332b66763758626a73384a452f7744547a3038307656507965534847354435464563557961523364545569794d7a5331624e524f504e73305170657a4a63644356304d372f48557754444e4f43456838337a52786530566a77466d656f586f7937785879464f663554346d2b6576557a78725079425038414761444734302b76517257304732614643354e684e45756c56663134486637412b79304842544a5531576462546a46654f526f6c35316b7032384336306545394c4a7a326c6c6e564e59615a64514b353061656570576154704e59624e6a353378794b4d5a75544a6c6961644e6c546933464e376566472b6d6c7275464d66653746536164423932704764474e4c3542454f64486e545752646f316e543353755231696d6365644b766d5133346742495144597a6138334377664b4b644472367354457a374b4d566445343464774c6f69782b794769316e4f523643636c64454e42382f5648436a4f5a4b594f6a514254746e647446432b5a4d346e4e546e70413336486c7161565a596c6a4f7263756a567631745658517a79306d38716365626f5438446f4e5036696a52536674396a584f31727835752b52574678635762622b51395a4b6a7137476a48566b4c3754536d6a5742437834695633795132736a68346d516664385451426e50656f50725757436d506f4772577838506b4b2b4771335071715071355a4f6662666f56433276523048564454465079725051434b425651437a676e492b4e66784c503644324b2f67527377742f384147365552304b6c5636655a4d39506c57783857707a55762b6f4a5477783034517a663841727a37766b514b58486e6533696673306b317661666b3833566a4f666d4f31766764744d33574a51393751733036527a6d53506c74584947626d616c5350747931444933507732436d666830687841714e4b572f4b6f6158664a79366e634e67734454367478683851626d78505a324f2f5545713471657a4d4231484f505a41753134754f5746796c4a695a77775039456c46694a67436a4d484d784838776f567a7a6e7044376c395371637a7065334f396e7a305475717446644f66714d5776362f41663948704273636f466f6d346d69456e6461374865644474524c5a774e5874684745686f70716d7a5a36564f63312f507566476d57354b456d31782f4b5a384470676e76734d50314c70344f54777967686b3161526d5141326f304230556352474e6a486f59547670316364797855367755316e444f7635652b2f68556364664d4161477862565059457544547070344c597538684b56394377416f4a714f2f5957306b693353706d2b313162456b324f506e7838623862706741756e4566334a74334b4c4b3570593255693564694e547365736c6334303970484532714f66564a6b4b53424b6b724566734f454155726f48307745516a6b56615451795a394631424a746d683045786357646c4a39577174307a624e4d6c457355727731462f764a6f523071556f514171656d456873612b51416d49652f48536845394c464c625448577143556667306c3579524638316e745a4c4f727277596b6a6a366f556577506d4944685651636c55727453466a6f554c5a4e51566c5654585338706c7630484734355646704c2b47464b68614a4b4a697a4d774c35766c506f597652396d6b5a6c784f6d532f6a632b716c54554f7a376754626b6863316b64437a48715772455a6a4a50577846384330416650623176394177696c566f38345858616b2b6444316e797472376147706e304e5655474951717a614f7158594a4d514d6e3253624f536277556d4d4f63704251474a73475a6b68397364312b63757270306a31644f573630345a4a57567a6c3271646273386e446d6a38764f382f663136574d562f374663414a777649577748554c6f4731616750364e6243396c7471562f786f756e6f714b486f783537536c6d44345a78396e57684e2f7970524e2f6f4866516d6b595a74756f6e624b37696d736455626c4c6f5a522b784f623661316c4b49336936666e656c316c48506d4261772b597970727774486b4d3879575a6b37476f75424e594774544c75574f7666556c77704b67424e567656792f475348455332632b62767a4e2b4e5958476636734d6f75385463622b716b6c5243344b6673386670744f6d47593068526d6f2b616f6857344632546b357242613831664f4453426954482b6766777a66706e326d364a545558715368444f6e7a524568304b566f52314b586b584a334f393654345969354376386b2b30676e446e39424b567a4e446e52476d63724f43433332637436454a444b2b79516b79553175557866506c543376462f59506e564c5548514c36346b41616f543543564f6e71696c494d3538367669316a30597930666a58616c4f4b58515976674a595a4c59437841514c33544e4f7a6e76452f6e415a417548363252746f56445a7a7641396e776f742f6b477550724b506e374935505261545746474230496237654845625448332f4b4851534137506f36662b2f674c775977566d706f67497336754e554b364750586f395a3836357979616f656b6e70695075703577584a34594773432b534666633136614f4d7a523551584b5a455a4153385a4b64644339624a6e514a4b542f4b6346613163617466486364596f324a4432675a677054326f32566251726f3668524c5179352f4968354951444858703144726c43667475576963615a654c2b783065633434652f4c304f70427246385874363632745379766252486f4f58716c6a6932576161535a6f737948352f51556c6935534d2b4e3759774357354a6754754548394171505059773968536e56652b56387a506951426476684644426e74537557566b71667372304353484348396d314c6751546638414e7a514f4a37536f2b636e622b6c5730642f376431495979376574354b557779364650316e4f465079474369634458393967487a6e7a64483241355a4136694b6c6a657830646865315337757359686e334c5730457565317343774d5a784a7932383650784c4d3949782b4b6c795453774747784b59584a6c306b7830352b7470664a31694b49334a7161706f355161415479564c594c474d71577a394c53326e3737306d4c6b6d78497043493054763757716d7a2b4f3446494a75647a7458746f566447356338643347665235314d4b79515375665636482f526a4b6e345750436f3068456447784670533239506739474371764b366f39474e7655795569427152464f34546a3866365448657a76784e7039366146385638772b2b67445761656d56773074726d545a6f38687331756f2b6f715a4c4b484c524a6e50314b362b5573374d77566c775165587953534542674d6f2f4e78304268542b3030384f6636554d5761764b617a50457665614c325461694b7456736f664d547146574656332f414f704e6330487969644e49436b417a616c48366f4c456a7a677635514e53343832765058477848482f4172326b6a346e527a3971685a373074556f2b716d374e37564c426e656734546f52364e4d727a41514e506337535a6139746d4632705562536e71346e4c6b4b556d4a58513677676f4c726a35333945585848787078674b39514a45775a63516f573250546b3751413537624b6b357a5757394c366a4b4f793153396e57714757357a4a52446f4767412b455a316b5050366d7657506d4f4d4839324f6c585052583038726f7a2b502f41492f7a53553565544951797862644d4849444c6175754d77752f376b6336453349577436584174786366504b3668505437502f414a746835316645354852554b6c33506b787277656363352b5230614f496669732f5754444f634647685379476f6d592f64527a567a544937575a7151487662302b5464777475664e626a543641764c4f75686c665261706b6948367164584d354e646d354d4758566c6b68454c446a6a2f3166536166314b4d32696d41303042524f6566623873426f33655051597a4d7a70644b6248666e784a6b477a456b3279717733363947476b744878576f767235396a57464b62586a774f2f4a596b357057685432372b72624b2b4153677542637a6d7a52586b744738724e74377a6c44756c3136633252444c744c45736f58746662545056574435317a74354e2f3034334f554e503137417a705a6e696a636b4b383964304e576c466e36434d387173765456437a6775304d754d4f65556a557a4c6848514679727444732f5a337563665771705443376f5a563362707a395131794e6474525065795a6d4e39634c654971436976797137446244636b4d356179626b726e4b675756324f7055675130726c57464f2b5a3033552f75397137766e41507130742b6551716d56356c6346614a7563745449327a587a746257776633577a537674595353454752314e595a746a5348736b564f5163347671612f732f575165784e4b56765735324156584a394a4553305349794f53555651756d75794954393545386d35306c632f32575543766d704f4c6b4a49775847726e3956744578313435456e69666f535254667a6d364b5936722b5536646271786c5a2f355070555a7164586c744d3268563265775a796846557a673935353776647a3741746e6e2f714a783343786442646330554e75487255746d5943366e466f636b586670616b4673726170364d3146515475454e714d70335738572b776d52746e41793474557a4947506c5541515762554a30574a7371736536303955704d32532b762b526e3061732f5473796c4c705a4f3165485077456a79616d64376a6d5531514e443942467038653665796334446b706f6f706d55564c67335553795576724b774e7a4f547365524b5a64744d63784d697945616d756a6d6d35414841744d32424938664c632f5672434f617564714b446e3532794f6d6464737353316737566b4f3757354e714c3073775a52644c624f617035676477616b54746e6351586a3474343933794c736c4f7375472f51304a632b5878783430315a336b67324a32732f514a6d66583878556a73417a6965715373474142337a4e2b324d37572b794a6d4936692f73526d66546a3074714656575a4e6655723473364344534b6e5a713038644d55595a7a39616c61645578793944674c5777517057346c4858315650467a3563323738776d516850303665315357584a677338697368364d4e6875707a7264504f315244766c4f6454315a5542725a36324b6252504f487a52705459623445736f54555635356b6d4b624d2f682f723578514252342b4f654165507672726e6a32365467484d7a70394c666d73707139735a454c493364557152314c79645a4936597a745474514e4e76504d4d4964714c4b6e68713552546d6273476b587362374b76483850525a785657486f5261486671303159386f73494348764a52783143342b7769646c4777317a386f76643031356c756b57587470695455702b4d7a4d2b706c343836644b3248755870465230526e4b793577323047735059584b5a443438505a306231723074504349464c5872544f794f53655a744f674a706d6a6c7a366b36476277636e364f6479635a6b5579353632502b4f567251304f317a4571425a476655496e704c555137796250376571544d557532746165733246356d73704e72374f36304e395138304d794b456674667946412f58437072702b4b43314d36714747484f305245356a4d64344b65435963314f6e2f4c4f663343316f7948623869676e6774696c6955764e54454f587a2b516f63565666454c757553355058536b75783666393457476134764f4b7a35693073724e65322b754864626857787252734b76724b53676233706a4c65374639334e356c6d752f42596c31684a716278794772635970366f41756d2f7038504c362f6d4c73385267306f5a2b6550785436666b4448782b4f4f7a6d5843326b346675304c644a74303479683636367a3352704b6871625a70775a377748374b57663535544f4a7a6a614e732f452b756a725a7a4b6b7330744872704f314c6f4748376a6a39673046527079436c59565a38783879546c4e6b646678473665524e5975483356316e474a7a304533386c6f63474c584d57567061452f4565322f37645062535a5657396457396c3242342b4c4b695a33517a395271354a7161442b6e5358534b6d6137394e7a70316e354452767977723375767a3671614a624c775a426d506e68677456565244706a78566c654c5a3873324f5966772f746d6c476568424b4e354a59684c682b665555697a4e6b786d4f302b6267476c76795939724858664a4e38693372304f5a6457736c6e794a6367363561446e4c6a4e47616a532b616632664d597a37634c5235434d615331514755382b72374a666a3150656953584f69726a7864536e5570354e5862543432324e6458496332635847737935504e42476f4f434d63744a32454c7a326f6b3149766758757430744450314d546c5a55726769317771346e44587a4e7030396f36745a3330302f65527871657a306654423351414f6c544b4836666c4d6c75532f77434a2b4f504b634b614a324842456d7a6e6a4238585a416473667a4c466c4e4536324d4f59424d7854417142552f2b706c4549537055756852565345383957706e70386e6b623437546262334c72544c39694461445456354266632b5a787855564d6f57734a7a544d564c432b73314a7136734349767a75335365335333516245374e6659554d75562b7368564270334336712b564e6457483856333348752b5233503836666f443831585065595733344c324455592f756b2f4879326835446f48566b5a615379436b7a5a72717275365a766a7a2f414a4530747447676c2f43353073732b6372744e30386a62493335546e4d3763343868642b514258547a34514b6d30634f7370644f586a614a38374b314e6650752b7875346d5570336b427463773943566157644c6f4e53366b2b7551746e4c6d313047356670385564766a33646279544f63386b4763673061614a7959374f31454332534a32726d64577461313353352f736d56337448644d2b3355677171354c4a73723971425a6d74504c6d5955655254474569732f576d445074566451324b35545966494e5864786148356d634c6635695155363357696d697a6e784d6b624837334f527874654e703835473833344c4a4b5744314b744b6a33472f766a7342305761384670564448616d627572796d484e464d7336732f61796e664539765a3636496a616d5469545074475770334463477759777a36494d6e7562784b49322f464d4c644e7351736a4159566f744c467878566e6c636d4f463675534a4133555a54675076374532397a4573386130696845376e734272732b51394437496d2f6a2b61744f59552f5755537775377a4c6a734b4e676732626f38612f2f77427839506e764a4d64596b66797876376d4e4c362f7a332f4d71346b2f707666575479697577677a776d766e31416b6e6b6631736c4e6a437a394a31466c6e61514c2f77434d2f774359766d2b50354642372f732f2b546f66776a33582f415079655366506c2f74642b6a7149785238552b6835526672473247654d31374e616158675141765135633577615757735a43544f33334a6a4d51364577484650355074662f384155616e7a47367672624d66697074395a483568612f6a5562496646505650786d44766a4f666c3658684d2b6d7352383638676934733332565a552b6b7a517251465239465948322b6669557869654e65504c4830466865412b4a2b42654753783650686d56346a4a4e354e304e6351384c6b6a6b6938674c53374f3862773363794d6d36566c74566b4c344f7464386337736f694b6b707958522f55576d303965416c65444e584e62705731667966636e6a494567336f3263556137426a625949503435712f6b2b7237586b49764e507a5a585038767267615471446e6b644e53737261564d3036705752554b6f676d59386f4a2b5555666539395866724f2f6a394a637375687a76666744745038416d316f453735696d445854474170644163345555586a793536382f61564e6d5235726444517a7273665035626d517773573279693778394b535855366c3158776a782f456a524a6e4270654f6c6f4637654b364e334d4357746e4f4e397a6e445977574b545371624252564e72547456642f686e33665973596b6746553466416c696e416f45664d366c75732f4d574768304e48692b793464657139493930464d4a476a71514368374666664f4b572f373630386837396966715462314963434e5a306c30542f6639514b7572354a7a566d6e61335734716e4e6b627153666130314f2b30625a313954585033524638624a49763542684232516156462b676e4e6e4772456773676668565037726530634a54484d506e5636665a6f77346b3569347537537a65717a5a5744423877465941676e32504551417a352f514c515678447371343337614f574d34725172314f61446130612f565378306e5779366b6e543658386439633038455a792b743877314a41673979672b61374834726e746c51714a6b4675675370724a5470364b2b3532706f666f4c4e536668527a6e386c48587349484c4577367155765a325668673272655446716c5a6b5844393642705a716d746f7637544f39416f796b504d4754736c6f37566e753976616a623858386d6158394d54486868414752544c386f4b2b47724f646452487a63304e465935726f5a6e55635764434e446c56774d635231547a2f4c30452f5441497841506c625a524763356e474f3455622b62573358442b477635612b522b4e39584e76512f6a783676426c64705537716a324d7a776a7951787a614843503248564b6e7a3577584e786f653737696664326b592f6a4f2b6a48375854695a3734486b322f7335666d723158342b59507056356635486d5349394b393363676b6c4a39497652693631624e6a50647235363951575659724e6a552f326b694773414c4841486c4e396a6a7565683754705976756a70596436383779586e726c4c6c61506b63334b7356746431396b376b31323543687479734f59344b4531314e476a3256327979554a706f6d6171523379746a6834774171354d625a78484441592b642f6a5a68376c444e627848307679533073366a50392b4f33506b6c6d756b2b3771633742715a786c384930667947304d7233705734527163767250397679453546356a684e75493136542b494e766b6d764f337a76774878544667624c6c58656336503668793237506670792b4d325a4e4255336356425a586d755a384848302f6270645a7872724767346b6a66336d4934572b516436336b2f70562b4c456d786d706b56672b4936334a4e2f53793630793164676645624639757471376e566b3563756c48562b336674512b2b6e7067546675505361496e552f69486e522f4f372b3744746231396e68486f76646f51315466596b30396e6b3065666e592f44614362734c4f79796c5076786d4b6538704575723578786c2b3139617344447230765a367878734f42715a79304e4837316831553061744662583937384a4e4e36322f5a4b6d64315a45544b415735766563446f467777582f6c2f7a374864735732316a786b50566f545541613166493766384679763541355042366d7a35724b7538545033337a314d49714f736345344b57546a4c2f41444165752f70752b48486b48384e6256464b56425839523368416e35524b726870455a303053786f4f6f2b543347794d566341314d4561444c326f6f616e74436132726a48674374506b746c635172546463705939492b30512f6651584b6c357a75617941482f414a59567a4b474d48346945453065786c50744272666c4273743441526f6137506e6e5750536d517052387259777a66576e674335594d374f3567434f6f664d2b58396c30414d6665307663516739354b3133664b4231362f73742b732f706e364e666d4c484436742b52782b462b6e6e6d58694e336a56642b6864634d4f5858646c5a616b7757766155344f6a5a52573431724270694e626f2f69574332634e6d48744e62573075586d7450324872383852334e65426e4651555264784e7a4c6d7838787638414661464d31614d6e6d6c6137767a7154336e38557766744d466e445a6e33756d2b7a3856543571615438776134666b462b5a6668666758714e347436666561365547727348555956692f50593377314c71387032784c425a757436313074566675386635396233314a7139375a76745569363374476c644f316f33514b6a733845394a505649664b4e5a3666554d2f496649736b575342346e3468623347314d306c356561724f5a32646749324a36636d71644b786b62514b553071633669644a4e446c393171384d3167664e4c662f41427a2f414267587265626c6965516544616b726441482b516553654362584b726465535633636151744437536a4c6c6569764c5072444a306e796643615a70327354386247707152694a33435a66695a2b623766576a79546238595634322f2b4e38657a3072792f4a75794d6a68687866724a774e61682b6d63667a6154436e334c423455314d724853385465484572427a526a5530347247594778666c6e6e7a74547848794c78706a585565507368584554583556477635446e596854756e713076453035314435346338636b56675355754d356b36564466333765454a5a7845784e5a38527276363150394c7679696d39472f536230343873312b654a3457647236486b2b726e4b77535850356857324f693378724d324e5777793046386e716a6d51785a764b626a6b4b7a622b4957447a765864544e72646f654e2f387a636a5638482f4143673958504132753071495046504f47773553583547566d4f66785a664a6d755846454c2b7a73374c5578764f4d357a6f6d34334e56304775466670364f4c61645a6e346872767a6b3658724e47696d6a5354525633714b43677a3644584848593276354b467041696c6f6e30326352314c4139776d74332b4a70634839426447504343524965616d683269763841636945694b4770436750754c306d74452f7742396f7139726e4238613145306c5575622b67483364554447566b4f662f41434779697a36307554656c4c46382b76532b646365577356633577667343546a63763372457a41544377562b31714f6e2b773963503841386e3939507774394e63377a3357784e47796a7937797661316b652b3573636c45537462553556315637456933334f687964426e3762386563435531566d63625741337642375850506a76724139534f7234314356645362426b324e63504f4e4a3649475a4d746c654c34366567774d68586a327768796b4f6f345363566b6f675a7155573939632b65376966722b634e61665533782b4479624172776447574e4654537a68643279514e584f67674a50386a536d727a424b2b747571737378324e4d6f356152373850426a456673636137574a74467074574d7849384548393366306a3076513338314b3952754854674c395676465a2f4a724d30587a394852333879704f585135656850476c51754e6777735a30556b6a706e3732665a352b324f3958326532375436396b637666756c6d6e49774a4747537a6a4f74456c4c4a5a6e465044376c7869685a63416762536c494f4e616d7055435a323863584f633932775248515143686c5a4f64624e4158437963596e794c71725764554d756d7056622f6638644936695542373255534b3666374249735963715133422f7439666b2f682f6a662b5a666f643676655a6141654f2b4a5a766b724d66792f566e68646f5279654a2b5133387a37325067624f544c6b67756a594367675a65307753346a51464a702b474e62546d2b6e6173633168372b6658487873505644302f792f492f43646a5038414a504476496d6a3546443572347a5a4235486b3743494d644e4d37752b564c58304c48642b61714d3239614d61464d4e39547a42503169386573375a694c794f62507156364a616e6b656a59586a456c4d3874326874734538447855645879486d7832564b4e6457612f796279787933516b75355044593832706363616b6d796b3070424f316454484765734373385838523854425a6b36336c4f563544587035366466796635796a4e4c34574f36374f7a4632564d6677636d4b4d556b4a38343263784a4d30446e55384d656f6d64535a3452784772503553666e5a36412f69543476752b492b454b772f557a31683050486b3455324c345670737679346e755036382b35355474523644554c753935536837474838707a34354a724a7a6e4f6d6e3130394b32704f62637452356350556e7a2f774179395a7655627962314f38383036482b52375664646431765a594d795745795253336b47506d512f57584c6e727a5a66713934705a2b37324b6e4f564c505a7a2b752b75326c4e745138787976792b572f4132396a6f6f6930463858562f4a354957786639656c56333235564f5a512b507156434875634e5032553038393666736b756f6e586a6b58696c6e6b4f4250356a6d626e6c486a4d744f57335979387933466e5a584a5a577a58315a31567a6977436f732b776b6835537a683950562b50324750314850546d4d3436775065562b4650356166696c36786569586966686e34796379504673627772507963585439494c4e2f774150566434376c35536c685872724b566172666d356d7a325575705633687a4736567a71414c376379504b314e505572624f7038587843642b512b706d596770694e6834534635347936484d77357445585556567967684f5a694645795570546a77316f665a714545776b6d69616b48636d44683047716e72422b627669506f7a6c56487636666979427550557338667a4e6a585148587330382b46584837475869706f666c5a596b4a616e4f56714b6d6651705453706c624c714b41317270577430486b652f7553666e54722f414a772b72336a586b6a4a733947543664775665502b4e613863377335766b43364653757073376e4e543778533563645851655355735346696b395348316c6350306444523931572f667547682b4e6f61574e3548343935626d49536a567a6456546f4b6b64597967797948536842704a6b6b30452f63714b353059467a6a476d5a2f7673793646694942724578614e737a676630412f77502f496d4479373070394c665049744665336d65562b49353555614a4f34377062636e475a6d6f6b436f5837766376517a3646483068417632486632416c2b782f727839576d3239716a5a6e31366d38713959386e4f6738413953492f416435504f4156543659784f4b696967654e4e66487938465939442f774270642f3841766e2f78332b71366532733861376864486f2f364f65756d4272654e612f6e58354d39386c7738764f4c50312f427063764d7252707a662f414230324f305866703332656b4a663871373750312f6a2f41465731717a474930746f32766a383678365a33352b4a6f7930544e7150714b566950756e364a6c773576317a39394c67732b54392f3841482b506636796d74735461527a6e2f4d62387050476678367a384b37792f525131476c73684167365854527a72667a5075316e4c356f366246495350595a36522f77417a3537444d5038442f41506f66317670366332694e7344784e2b7366724e366c2f6e682b566e6d506e576c3431355835483969333450535878664a32795248345a34746d55746e76736859314a635447416a6d74307165464c316c4e6c4939715335684e5a3664613130744f736466784476702b47337033682b6d724d5846387a38453550356175484177624e4e723749713057616c4b7a6f3866384145622f4673304f30625370307976452b30793962392b51433967414252636d724d7a7869334c3639665562552f6b4c36612b4d57465844356b2f54385a3851447874336b656834746d6a4e343839626c44446173673337783737752f79695638663977426e647a7837374559557a386166395a306d654f4a35687954776462772f7742642f576279503063762f464b6145664774584d784d7a657776474378764e354e6e64796d536873505a466c393543376d784c67315667366e684b735139587a537a70415036364a6961563365384862476a2b31735071442b4a2f6e7670423539357436682b553674486a6472764670702f4d624c38695858676876316f2b55387466513678495643414847625a6b6e5a6f4b393539542b3956584c372f4142715674464e67387a506f392b47656a6f663234507a38386d3953523953797139432f55724b50772b4c4e706c54346c50354634355355336e753071536a444a7431447364647a48547a73694543596c7675483548442f41463232315032326a466473376f48485478384a2b747a5264543265335a7377636874386c4c66644a50717654724d342b656e684a585677632b6464436a4c2f4149343477397a476e37352b67574f37567a7649765556447874354834396e36554f35666544627a516e4c686e6e374b57634c466c7869614c506c52775752696b2f6551714a5861484e2f714f4552355150586c2f594b3831385938372f48727a374c6b6d46546c6574326a6e75314b4a4639765a52524a4b374d666a73376e2b2f534a76503841554d536b6d5a506437724931664a317738487455544671782b582f30505239596e4978367a52584a3352486e635274464345616a7634756c38746c4e453553565647724c4675717872567653777a6b64376942314b757a7072346562622b556333667a6d38306434496e3043387879764c637562514c627a453543377432796554514359492b376c4e42506c6c6f6f30475a65586e6e4f4d664f6f4a30796e476c365841456d2b6c47643054584132456e38793852395376546e78377a4c4262663250617736696c56704c65326f423073706c454d567a36644a58566b724830733163375855395653427a2f414b6432634f66756b566d73375a3644773066336b5048344d7a38767476637a646532764e32504663506e7754753443463663746151715169424566517a302f48776c676b6c6b61584f57703949754e58772b7237504f4e4c48694f5041324e2b565955395a32724f6a614272444f5148776a514c2f6d525158534c6a70526e4158416e702f3841743939426635383449645037763134696565465a306c38586b7136766e35564668666f346575655a5363797570592b70536b4d2b4b675379347953344f7262396c5a304c367635763832317632704233304439525439492f5662307a3951387178736558347235526a3036533030325a2f77444a356b32726e763159374f5265395633377936703679557a70702f363376634a63412b4b58726d74367a386651653450794b587852736e6f33366d2b4d785a336a2f6a323775316554796e6b7173586b577031637956546263395746564e393461624c703631302b34312b3778352f7a566a4b33333938714d38315a366a706434506e35742b4c5a713233344f61504d3563397556305532523235444d2f57717358627256334352517a4c6e636b65327663524a3036714165516c796a2b736858477158704e3435357034787258655665503546586a61302f2b4d7238696f686951393944636d3361784d767642426d3151304a2f48652f4653464645736e6b354535507a46782f5a696259783146732b725872442b50506b766b506a586a6a505544787250387977344b5966483546574f32394148644b674c7634534f47686453364b6b2f566175582f71706566796753772b77617772576c34723265677354782f796278486d525651477a7255566c68496b6b6a31797176746c312b4e54616a4b52647a4a4471635672696c4d4b7555476d75417836664453564a4657316254614a6952707835437876717836795a303832424c74322b6e2f4c796f76384132746c32517a667a584970597152526345696354766a693537724a4c476d356c5458494f5a642b6b6373635069486d47395739614831702f764c2b5564386f42452f6866347a624f6268344f4d61364566596d394e686e305863584e7a6e33644156616a4270564a7970647276724a4a333145734e736664574e767333434f613437437139526f3964505937742b43672f774363782f4942673254376d314d4a47587162475a5769695444465a53327a6a556c5851516c30434153692b466648634f506e69496a68417472303639593065452b632b5065583279384e4b4c2b72722b3157766c5235376f39444f5256706149617a6162462f5952634b316357423131302b313038316b305a636961784e636541336b757873617638415054783271506467644a742b6757427448386e4a6f7250482b6f386f4a7a6379726d497858324d384f464b7771652f70744b59365442497153485178335739316e76794e782f57435030367766422b37756c70782b5038414a565042326b59664a6976697a34575236744d6b4d7048507356645a4f772b726c3737776158665a3876524e50395a566d307a694a4658654d2b54782b56654a773234436176456647354970645a4f6e7253354f53624d3144335477614e506a69596d75736a3569325a4a7a66473733477a562b41426c6f4a506636744d524673323666714f536e39777a797a786a48396275336545377668766b586c75586f2b49646c6a7a764c752b4d6431736e4162636e5735474b664a4d34764861595a382b35303264507a35722f347072694d412b517a364e47747072783669312f782b2f4944307a395866416c65527130386259537a4d6d6c30632f5338717a61393262717174616269644c4b535969564369756378797948332f4f6c727944324839432b747157724f4a6a49356d666e2f414f572b4336666f4e35432f4a317334764c4d667a3633657a5169616b64637646764873367a595a34326c6c316a70374b426c6a71687356454c71486430702b716359475a4f33305974766e5034523541744263523846746b6b485135386979355053426f59422f61373337432f6b3633364c3645725762304c363446684e384c666b2b4658396568547451453134366a354b3955785a386f67746c7a466645364956384e787a4d6d30374d392f30356635424b31743677456334322f77426f44522b2b682f5466626a784437394c354d4e7948726142544b6835526e633759777634306147314c71586f51694e45494672543850764675416b7056387653393141684848732b593246394a505461545a316d61323434687a557061704b6f696454774e58343261306a2b305630536d755872426f537069682f5a574f52596e324775554f78615a32346a7547397a4e484f385438546271343752484a38667268773954724579345679545a6e7878587a55486d5846307338767078786854637074534b67574b516a45473844487457346776344634445272483476357a35646f36615046704e4449784f5533356e317142586c3958374d374c386370686b35556e7566354935614a7837536b48506c6e3939414a6e6b6a54504445644947344872662b48663266546a462f49663841477a78627a4879624f3853786a7339582f47324f3045626d62424d6a354b62736648516e6755655072576d4936464b2b5a56364979614a717a766b2b766e545535396d70394254483462657376695834316574734872686b524938313853386c386348302b38396e3038702f6a506d2f70726470484f65706646346c3435686c59366f6b35386f7434436d4748585539634b7134775a79646173337273374937742b6f2f726c354c586a6c46443546472f774143684a657a34647141476c4c56707362514f724a6b447447756671744b6c6e38633374544754396d667438562f484f56394c34755774596966477734462b707639315031622f487a3155302f416c352b4a727735736556486f5237496a4b3334796f6e3050346655717a4e51517178554c306945555267485336336867317363796d66313256396e726575525a4834722b747671742b66486b6e713548467255656d792f4738547852385776446e352f6c4f70486a624f774772772f714a68684d574d30636e6a6b4f6e49324458663841666f682b525166315855725851725765316756683638572b572b6c6671647a776e573958664b50562f553853686a794d6a31443167716a74742b366f744b4b63353954334f536746366e31752f5a396c416654344e494230505946715246363569753252736a2b486b4a65715871763458346472555138386338506c6e387438317231366b6b774c71454d656a497a364445654f6376334f595246372f77426966735637522f78376e715a725731752b773745666b723670656a32333657612b42346a35316d4f71794d32616d6b4a686e576c4c34326c773431306b5865736e56376b6e7a6e422f79365a66342f342f762b75665472614c5a3235774f4664666b6e692b33366e50693039435235657a48446d347461335a3053687a31736568356a384b2f77445350422f5a4758752f376e66642f5858746d4b35694f4130492f496a2f414d5833664b36443852666b3273624b757235596c327a4178425454766546717053643973526e397673506843524d4433442f6a2f774333576b544563653855782b507669766a6671643672656e507076355874366d6669656237682b4d567578442b705949377461704d3669657030727961784f6c4e6e6c7753352f7744454166333766313776366d387a5774706a724132502f75472f6848346a2b493076702f6f654d65632b5265574b386e2f6e4d50795055304d765134486a336c666a7a5863484977615a38556562586959343378304452306a7048374b58652b6f52574839563064576453625a703141332b31506842354c2b6558342b4b707a3574482f782f66312f4a4c73766c563466427a4e78714b73364b4f5574466e5a545a73426e6646386e66595a3245514e427177396a3269636157726765795831717a2f472f4c76437453704e72373262726e634356325252625a6d796e6e59656a72723863696d6c6246725170536e3448704230744f6a33346d575553556658625035745a6d4a6a48654f5758344d666b523478342f366d2b707634382b522b6178512b70506f76354e73357265364e314e74666d3368726d665048544576354a65616c6d49365a4e4661614656384f6350682b7759556679532b6a56704d31726574655777373334766d2b6e6f5953333657694e464c6372512b4f6e4479766c7863374c766f687444487158564b615853743864646370686f75396961592f5a47696f2f6564484b4e4a4e66306a2f435733314932664d4e4879444d71336e5654655536455631565431364e323733612b76506d7166386c61316b55746e3253426c48416d6a6e374a7a704a374f375464713763445a6e785031352f486e7854467876416642764976414d797242756862426756616565644745353366636b33627061516678646a6443645a4e63676839746341336837527547633835706533475a39667a4679572b5335692f4772657373733651742b72484d366f394e4f6a5750436265577345627567334c58585252434f6a506f2f75692b38394c357834435154474a7a6e50416362767a7139633976305539486655333168394939534b4c3169394b4b346458786666797374336b45586a4d6c6a5a38766672334b4e593339306c30752f53654b647a6f522f5a7930694166734a6e64476c5866617462646d77386c76724e76666b72362f6d72386c665731666e767161506d347a5a6250556e546b5763594e6934494a785878725a38586a2b4776552b3133712b4b536e3749473550536d4832393943746155354b38753061773834664379346e484d6f49754a6d6e47326162363365642f6b50685a56525a57784a7a39715a4e373353657753596666686d615a664163696465492b6e487131352f5a7a573845394e764b764d5a3831626b74713856385431582b786230324c644c51654a6d315430494661574d50712b743754397a35672f5a742b514a744e61384a746b6248656d4f5a2b622f414f4c6e642f314d384a3847395176546e784b436444504b3365555a5a493861334d796d576a7234664b413045382f6c4a516f547267676c494d53617871543459652b56564c2b36314f576262724431592f3230767a7538482f4e44567976484d4231762f6e336a47624c337a4877627a576a47697a767048335137583545746b4765756a513853354c715541386d5445314e58777070704a3151437667313947644c457a32624430543575666e2b526542322b422b57354d666b586a336d50682b68692b535a5674734c737a577a745447736b483755697142582f4141646b3154497556674c33476d616e326d442f414c48363437646378484375422f4e4d2f75562f6954766668542b56486e7670477a787966453847304b6d2b572b6e4e756c4b72732b6c3458355164744373615239314354315a3875316c475a3862424e704648306850706e305865316f616b61756e466f3759352b746b302b32666f316f585245356657786d49352f7347657235325279453272686953374b4a334d574865713675776d504a4a4c58374e65547a2b7749776e77585a724e4575726e68485435545662513846662b326d51795155797947796a766a61345136376739364c6752386a6a4a3376434f2f6c7950575a2f61383266557230472f4654304f3771566c38507244627237666a46326c6f304249724138674f7a736155324374394f586f5761574b782f5642773779376c645a4e4d523070512f683134726655746965794f396e686e6a76692f7139342f5a42765a66384150654e61364e31464868327848567a74746d67576c50324b6c3264714f43357a736d69635774374f35746b3841307a4656583339383435744e5a7a48614775506a586f5a36663841343836486b574a4c523456356c34572f4969565a365a2b7169535472654c4d386b48575336334e3955347077706e4763644457444e392f31486e4c535836532b6276615536546562375a2b503856662f414d6a557133774c7a33314c396574486e6879562b6a7564342f72545a2f6c456d5235432f774133784e7a786c36634f564d55556c506b48785a4e42756c6c36366b76754141674a67435a7661664e4d78576b353568652f71582f345234706c356c65746463727844302f34656c354a355235566954364f624137787175675a74514b49667132796b34706169583335557a584c705033544b34464c6530724d7a626a327244784f666b7836763466723536396571337242424b7047543554356870643863686533544f7a6d6438535934495a32497375634d4b387650695178696c47786b3061766a46594e5371503071566d6d6e5773394273372b4266384163763841562f384141722f7a3749394f732f78586438473951646958563831385332704a4352733643354e4c4a586e6a6f6b4c324c6f42626d63446a5741585533752b583345547666585630716132323175315564372f53482b34782f616d2f4e7a4f43583876667874394d384c314d316b547a4d3868386c7930654e33366d7a55306131555a756e34576d64744744796a79436a6b6f50765535507337374a4664576b2f77437553326a3752702f356570796958722f744b666750354c3546343536706669642b522f6c66705435446a33532b54625869532f4b632f7742546641746247306a53376b436f6b46483344685074552f374f38456b346a6f6f736a675639545243503852717847335572752b77374d6569486f52355434663464714a3838334d667a3730367836614e4538727a41737264315a647757365655714d756b50632b5479526550707a6b4b75794678755a795a4c524c36377530633172784d384f5777304a2f7644666931365a2b7376397537314731636678384d76796a304c6c543675654a7a39362b7659586d64725a4e355a4d6b5a6b71527135707869357a7165394e69585230756453507975494e765a723272725669335a747748382b336d685148425232305038415a45557a466679504c46385857756569654d615979496d4a594d374f745754506a6149644c346849415748722b373877646873444e4a57656155735937713530306c6537727736356e4545357730536b4b306d53355236504f474d33512f3338392f41542f564f4e7038772b4c564f3530495650685446796e5068744e4e4f67314d6135456a79345678744670395776376e3641516f447673425931544f543741354f7933674243353654576a744e452f4572496c4a5453505574377979463267314e4f732b45334d5746425a72415a547746704f4d7a55594776332f7742573935354437706f7537436a69564d61626c4238334a796d6e6e396a454f57696e2f77427046504c306e5553384c705446773666616676452b414e61647142386e7a666153577656544c646d2f456876366b564957687845375546324a784f45557a6a485237656d5264396f6578702f482f69414e397645534f48506977744263464b4f3074596d633577706d324b4549466133614661364f4b63677169536c30494c556150645347776c5a6c375062462f53637a6d303949444e5342717948467a39555432645847746363665153725079796e6e43523943426543794e7a506a393750682b5434576952706d567877506a2b76366858576d3274693151727a70573665694f636a4f52536755754776532b766d533532657336415552664a50516f753842676b6b68396976694d7a58465a694a7a4932332f41436d2f484e763478372f67506a6b6d7a7a7a58786e7954307a7950554c47386a316332624e6a766e33496e61586c4a6f5854354c527a4c715675536d695955694e34657a6961785433334b476d6e66336b576e73383230615037364855506b565449514f576a716d72344b6d6449357a64502b302f7078664e3850437344354769414879417a482f51684b2b37553778302b2f437638414b5062385139494b6653624c3366495a714d576a59306648382b4b6932624f725271554d37596833474d596d716747616d6b766f557251767171566b66472f474533395961756e453333544f49463165542f6b3776616d686d65532b6f6b564e506c303656746a31482f794145714d576156566261744e6370426d6c4a6f796967434363517a2f724e4975544a5370564e493034365637494f5365763370366e476c677072566d5a636147573956427755536e7542306333456452553961435a396c4e6d74537a6856566b775a6b5648516152426b625a6277476a5835542f6c582f38414f393876706a344847764d39505a72623966544757784e4d506b766b48304a75354f6b393032616b394364647a644c346556664d4243384b476c554b55744c58543070727a7a484d4e4c424d76645750666770504f486b344c5955394a364c375845302f385851382b4554466371326335306b6d4b7665624145674a6b67694770716a584873783968513561316c576137376575625751526e5655534e4c33644554545263584a2b6b6b515451624b75634153414c34726e626e6a34676d7255763852387a79764a385a2f565865492b58654e626544314e2f5a36683150483975576c4c4264464c3871364473534c774c686c314e4635674255694a4f47596a4d625a345948394637784c79552f464e6e483876784672334665716e7076345273374f5a45324f4c625a2f356a34396c317a61487751574a6435466f417a55716e4e546662524568494a54516c332b656c3473784853666874362f6f4c413873386439424d794a7572546732614734365856303473766b544678374236564563724e6d324f685a4c7a5a7a3136724a7530784f59703261346a47707056386f477354654f736a593738656653724437364b37306e6b4d2b62786e6e4c664b4b2f4d4661362b364130667a475a2f4339785a59644e585773796f36773936687442493964385a324174767653644c326e64475068476e4e33354236586f39366d59667046366c2b42533763655a425148672f714a346264693649362f694e4e7451546550624f64397961764e304531466e7a6f4e4c7567726b4354534b796e6e502b74597046713771322f6947314b764e6250494f4a716a7179384878334969512b6a486e5a4f3630573159644438335651684f57464d6d535336744c327664795664482b707a656b6b78706a714f51503572666a353676666c547662586977666b7a355634426e5159646338586a336a766a3247554b3875622f314a63396879626b646135595536544f326d62514e682f4c5877546e4551486252765854342b3733447a6d666c312f6130386e2f48474c78617230353959702f7970386c3874573365487844306d3853323950647a2f4142366d6c696562473374793357784d5839706250616c564c4b523968396f55674f42302b7a533134314e2b612b37722b5963734146445841746d714d3277546d4b677a7134366e364e47696b4670434a42716e62383149304a4a664f4d4a516b3043562f697775416577324a384e2f45443872665676314a69794d7a305539514937646a7976433844314e6263385864692b4c2b4e374f3133323564506b38374a7747564c6d533644446655484a6d2f4d6233566e7754365554716164613774306669486548384c2f376276703136482b61654d65582b766671426d65592b743369666b6e6d2f69714d587862623851322f54574478627869516b76395173545133497a647065545a6855574e4f6d6c414b6a6439536876744531756b354e585774654d55727472622f562f434e4676376e6668386e6958725a346c362b656c38336a4b632f793341504d31764950423763536150795063794a6e5a755a357849556a456c3432375338664c362b6d4c4a77396d703472625962547073416a31304a7a585a6234527264364b666c6a366a656b2f69656e346e366336552f67314f2f72522b6162506b65646d716e38326635466954315a32666c786554326f62537450463642653054514b535a5530334f34416b5337323034744f62546b62682b432b747635492b6f716439586b6e35582b522b4759306c5546573767683668372b5a334e78744c4670735a586c565a6d65614c504c6a6e6864395652674246314978752b6e4f307668704d5572303067433966767975382f384155623071394c2f536e7a65766d322f78642f6c47672f79625372767a373953614c542f6a38335332714f304e537679596f63746332672f696e494e737346334b54364d38613530394f746257744564526f666f2b6e2f6e58717a6f2b5a4234646e61643235672b422b6f336e56386a50693530735477587731336e486c75305446574d57582f334b352b6a59735073674266546371634f74367462744d785862456a522f4a306b636661774f33634765356a337066617a4f6f594b672b52466661355a7a4b4c52573734334e4c6f6463542f6a4435766176326e74616e664543352f5372316d66344e74355772624858566b73354d44594c373965524b666f53335263313130772b3276516e6c6a714667724d766c346366796b3143326838566261637a47493435486f592f487238724e62784c506e3066475435354c36582b5234374c6448476766514178594b6f566156644f457a52385a4e71574a6e795571566e7a6b644a7244724b335655416c61654b2b6e467573635231322f4750386e5054543154557a416b33555a6d6e5a657958794b4456495065777472417172355849682b3869664f5772536a705a6f544a4f674264453850597841304e506e7670576f4e70764b665162314c386b337448797a774431593150416830795266354d7278536d4c794356552b64744a666f6f50657453664a6168716f314b7330304c53354d30626a764c686359686d63587245544530336954656c2f6f5835666b6137764e66554c31542f38794d7649466a426b426265504d4a6e4d6e362b69766d64787a655a5a456e516e57305731547a2b39786a5772706c7876496d3064496f4b612f4933386866446f664c5934382f7947545933706450542b47542b54505a3057303569737343664f556130766a2b556f3353476b4775614e64687446337735795447314b54694d67482b45767174682b706635492b433659615276475065624e4a6e587372747949572b5253797973536b73664f6e7a394c6357696d4f516539636d63506844374c4c4b5064383036745a72533051505564397239413575684a336e4b486b5336365672364848736433682f36583166384161396e764575676c52734c6c505239767341506677667766583149524b473278504556525470464456735656313159414e44416c54336d675361754b2b31305853307a6450763841325a2b6a386e79474a3950514f76716f7a6566714d306a484d367951675657336a356a6168656c66374b632b6861795a2f70577a3939455353422f494377662f414b6844346e724f46665532743777466f4850596f5870536d68487a63745a6f585271377a35435379454445712f5a38333247302f7744734c6a67482f47545032677142366866496d495131774c424c45546b4d2f774172633867556d68524d5478665066374b6d2f58643879763841687977482b522b4d522b57593278346c6f5345314e366f495035463379653644522f6a78454c4a362f774436765252516b6d63392f774154696334542f66584c636e2b71524f4c5466756e6f4b51384d67387377744654744d3946566d504b47587168762f61374a514d69714c3671465135395272454652756c6233326d66734f62343238634c546d376362484a3448654e5773555331312f755a49556655696443786f31547a4f65695233536a2f53614d384f697637436e66433061464237474a3447637a656d7758734774555861466b6b716d316c544f5655354a3049346441506d5a554a30636f416b4e353176416d61587a47582b43775939567941757463706844665763714a57495534757459382f6968576b374363786857664433684d396741327a3433455273506e4b384c5235444f546c4b4678556665763643425564744c75324d576261425748484c304f6a306d51726f49766549644839382f51476b2f77446c69624248696c6f664f483764477a562b69787931646f4e6165537866494f6e6f536b77487345663451576578792f615a6e306a2b5759322f734730714957614d79473364583268715169686e6c366e744c4d376f696f31396e6f597570594c57496434414750794a4d6638416b6959762b672f6c2f66334b7363422f503338736c5159324a466f7a2b74486c4933335473334a5636434e43645431756e6646564d7134714e53585553354c68412b4453706257453044735032644363614f6e3868556e684b51717a735962356149736a6e64454c376f632b664f3770507762596a4d64546d6b507430486c5975744b356e43305134634c4848326849422f56395475453938634f3764763841722f523039504f34375a6f696e464f34752b594f6e4848586d61476a4e457943714e76453352472b643761586d41454e4866692b56314a6a4534466b3443474f38653274414e764735737332354456546b7464506a794931342f75356b376f64444a6573736d65615063752b78787846504e4b4866684a4d787853774a393476703165504f7a5172717a6a7a56335835636c6e6b57513356306f6a513675436b625866585a7776594f68597051634b723554636d7335683742572b674c6f7a2f414344546f564f705779546b7a3754513755752f5037706146534a4d5753616b70365a2b6f2b5a4a4f71367468754e746c6d736c716d4b4434614a36374b2b416e766a5063792b77644f692f6b6e30494e444b5974555766583434585930526e6e564a4a4f304943796947665536696b2f6d516162765a375a7235666e4f74707458767a417346486a716671662b5248425a4d76526c3867652f4f735a5141526f715179364c7871726663744357465859364759716c6b706c42416d77326b687a474e706d63597a7745443872327462525a466d5457315349666f797934726149673048347135624a7750527456663473535679307973544958416e436348556b346e4c7052584e5a4e596965736a56507950656930667261544d674c472b5344745455684d6d79696d76453143464657612b647956756c4c6d6b6c5953424d30314e6d4f6671466b48736147774135657064724e794f2f785a567237767162486f6f315a2f4b64434771576c4e6b3975506d77574e594e6c554f5845327731633444795439732f61516b64595333476f4a31732b72696c59326d4a4f6a6357564c4a6e536f5568665a616767357a4a38754e7854397a64536a4f343336386c44714b5a55306f636274484d71664d547550456d737961776e516f31384f497a6d324a6f583633616c364e6c48384f797972532b7475625858616b535a7a5637576a7a564c32766d367a715977682b746d3349387478593636582f4652335669466d7257787454763573534f692f796a6b426a776f7a316c33527637495666747a71515631306151426c41566263784b486f322f354f536965642f61525852426e37436f36706439664d7163485855534d476f39613670624f2f54564f723776584f2b7a2b355766304833314f3238667a585354356e672b4636486741733665577845766b5a4c782b6e34397a37784778756c55687777397578396f6c756530514b6d5a5973467a4f30427052455445596d3234566a6d6152412f433061746163704d516c726e47336170646274335a775972477772583179444b452f77434c2b7537354f382b32737a415a545a2f75644973374a30732f394c376e5336425433596a35396972516750705171326d6268547a7268767a337430726d6844647958337263344a724a4a687059537a494175664d4f2b4b375a52735555343976776869774b7a2f346f7358506e3732476d76555656506c792b356e30383959637257313574414a70366d534d2f6a6162416d74454a627966477456497376306e3279666238686a576e46504a455976355154566b6b4c47305a48644a69623164725877624a3450384173702b32457a65316a45597148327671776473534545395a36486c2f4d77457737487830624c776c524b4d33477a684b6d6a59494f4a6f366c7a30305742506d704d43414e576b484b646d426e6e5653662b51513545746d546836755a4f4f58546d4e48517a73727962476e72792b76546c4a3073462b6737636e30732b6a6a6c46416f356d52334e59376e55696c316772354b7a69344d767336494a594e796c726d524d4c46324d6a473045374d6378352b6c744868394370502f414636614f675853622b6748696a62504f43755a3666654b373244765632487578565a6c68574c4f735a5248673362395876685347396175585a6e645a6447766158486152504b636c7835726a56784e6f427950515672725a65346d67664765382b645366495257676e78342b786935693255585437316c306b4c46746c6432777442724755644d45644e4a4f2f5652776663434c5a32545041616d334c6661656e45623471527a776b2b6c70324b6f7a3143476a6957686e334c4f466b2f56335a36616a63666b506538375838767876415a466e3769363336316c6b5342793663794f6232637a48346d54456335513037656c6242374b36746a334a734a76435237624c475a7376576370584e4b59575a344c4e6c367466785a4378386a675a447253343262564d70732b49714e454b366d665250536a4457324d79584c6e44722f756d37744a3074487271474a645747322f6f3535317365456564426f517a717963326250613233506b794a4e42742b6235504f79367a376b2b5244324745687a526943726e305a6d645361426e4f6f707768504b385a724734577a36722b72322f366a497a6b65565533594c347648346536536f4b61727036344d7679655078717261336875386f582b3478647966743146414f447332504d336a766a35384e314b31376f6a714e56746d625531346f4a367165556550305376547a714a4e484e6d67725971786c30505861337a707a367072732b704d30796c7556594f38305a36566c3867427445567233344775373770465a2b66755169456568795972394235497056334c7a646c30374e426a382f5339774651764e47414f396e7567446e50636e33463744454c4370504d41784957757a364a37564e706e7054534d2b734f343339687452353675736e30733256424655764e386646776f344a614154666541774b4e334b4c52756a6d69427256354e476e566e3866624755494e2f6a3563336435593153746a66597171684c614a616e5648573658676a6d394c6a306f37577a48702b554b7a556e374f6c4f7a417071475a736f3530626c51753074395346615469664e4579704a7a346e5a466e5136675158643245714f7150727a6c5a3735696a41426f52373741766e3579572f38416a524a6c52424a625243446535793947564e31334c486177537a4e5050656e5463744a4a4e696a6e6334794e7a7574702b4977364873682f415867624f78346c4579506f614466544c483038764d70625a5a6641736a777769477171625038412b6d6c7963306b32313958523361476c646e32334e6c55706e6c3633434c54356a746c347a724a52586750634f7761657a35796264714e31597731554d642f46584e2b61696f6662376d59362b712b7a31626a2b574e516b676a50703839716438514e6838707a536e4a4b4742444e4e6e415358554964596c42385448524e51576b54472f77416c51694f566a2b64397056392b762f754b644a632b786d433768444e5248774a6d3076716e626e7361334c3479683164456a4f4e6e304a3462474d574849574438445655476d68795434482f583648474174546e4b544934416f5579784b795a524c302b76725454524a3759666e74757877664f7865645063302f664937724453544f7a4d456e7559433748786f52546f6145636d655077456c38433445727034546e366748327533334c51526936786e36584d6b556b426d69672f30666555423957364a4855323536525a335034762b49702b454c48327568754232646e794a69426261506a63736c65306d4b4956306d354e4536302b387745376856366c4d38313776396a67314d70555a4a303254496a374f37745261524a71435a72455435644177544937796850766d5335786b76674a416e4868306336517564794e4b2f7744307a7265444b46325972495444793431556977663542694a306b7858735238645350325a423759352f6544726e6b587a78344764645a666f4c4f354d74436c637079315272466b593072706f4f5262426e42347939554c4b464c49394175483745704e5242684a6652543954552f774330736e6f6432584e72626d5566776b594e6f5a7063767a46396d586d724e36347571364e6b684c536c4a74634a2b774b414f727748736576356462586239634e4665697a6c5042626f3953316e6156725654436a6a7242714a62614a6546374f7152536f2b6c2b6c744d4a586c38306d6f677568676a59624b414b7a69432b4a79697a5754753752536f5363633859554f453238426b2f77716a446e774177365141436b2f65666248335338486a6a35512b6473377037464664737337396d7856784e37386e4b74436f754e2f3672506144697039794a2f72714278505545366c343272663967354a56433542767051414e5379786454356e4c6353706b686e7371457a466a514e627663344249544e51444c3370484a35524e6e47664c4530756452524c6e37543047303256386174576b53692b5034367935317a334b4e63707a6935584355756751496b77352b645833374768776b796e77717a616d317a577a724f636269374f536c703442574f706d7437784271506742376672716530435439494b41344a7857652b6a76514b64794246676b7070553364346f474361562f77415152666f4f38567a2f41415a502f6d61676146646c66414b63635349336f697154314a397956636f477476762b715a554a64464f5478367370776e2b5a76574b41556d6b4f39614b316f57484c4275756e4c436442575235584f4e486f6e4e524e7545495753677165686447636a6e7a7a614b684658544e72414c6f584344452f7351364e666a2b6e36696c387432694f68666e30564b4a414346484577506259552b697349564e7a545a7879613033424b2f32714d782f53714b5530415a2f47537072416451454f6279752f4e30443058576851452f384149795830766a6e6a516b327841696a5936504b7663313153707a44324e4d2f61755950393669415866667a6968346f4952476569586d637272394266614f4f666e67417977774a36597774597963704f64343537724d704a6d504b46477777557a2b52737166553472756d63354b593038347541376b347a307637703078627a46737134774e526b5874352b322f636330447259337472672f4a5536646f58734965364457366a7257616a5a784f723453714d467861536169644f6b707847412f623179715532456132307641695347512f4c7078456d7a516438577261796b70756e47333658486656596e2f56624f482b52724756764250704f454848516f307450334941752b7150696c706553345a41426e4b65426f6e664a4b5a6354785a556166484b36612b7230474231674d61776770565161696d412f69425a69492b66514a546f4655785661425432457862732f4b6e6856595463614b6963564d5438626f52492b72417144624d35696d4a426f4d41465a74443350686f362b714d3557537861774b682b557952796831564e556a30554c4d5a654d3272515a31537a3937675755714337333530676d78633477574b35324666306c56575a6d707973614d2f77426e494a39576d4c763868556136484d6f645a78677337534b554168684b45415838675138556d563548466e2f50446e7274596938675935544b5868396747534b576b5672476a364c6b7a4e63796e325548387a6c4d6d534a6b4154586641524c355678475a314d2f542f5652723056554b677a74493278797930796f566d3363536d79516c734242392b2b786f492b5a783069444c496b7a3651756e723679627566527233706e696a6f714e6379585555565a39637a4a6661786878314a514e4c6e756d5952704b567775392f32516b553731677168694631513271646a736e2b6d6c684c5734473531594c6b68536b306a50384149564252652f67434b366673756d3456617665422b65563655356d6c392b39614e44714c4e435a734f526e797355326e506f7354553131533537616d757339794356576c366a762f414d3273374f4d66394153517a756a6d4b616e393658766f6653444645316a4b5a7376685670734b5a6e753752562b6b3063483930546838556336546d354d6e346636414635336e477a507a553955636b744f6734745a61754a7a4b4f70584c48555233505536583747435179786b622f622f67332f63315944385166304845542b36376d524b394250416d3665326a513059665073532b4f6f6868355270527143727256304e72324362524437646534716d6b45776e7a2f4637442b794c553957682f6d32783638527779697951576f48387a3435494e436a4a32715a554a4c2b5343574f786a2b3879644e795166484f7a5375304f6d395142502b7a49416438544b516433416c354c3733667a4f5a6e554d426f43754e2b6856494b7076497447342f77435466334a506e55436c374d584a5a52706a38536a5536436554365968325a33395a36666549394870433355512b65614f475538396b3345553878486a467a734d756638506a73314e4372546f5a734f7a356861354533316a6451547672664d4d4839614171575265764c5455786d323578794458385a5442312b6b5471746a732b507955584d6e644f463268716366384158695a4a386752307062416b4b55727275726b45346e2f4c666a577a3869545a6c5073696d736a6f3134767661565672697441354e7279444d2f6a614e434d556c372f2f414949685a4e5050517435794a2f71772b6338526c336335727a6c306c3662736b34685a50594d4c5049316c33536e4854676233437237484f3750793555796f6a6a635142537568794a485546614765376279347a674641547850332f77445642536f536776314d6a2b4e6730755a746d6a6c4a6b68506151394c3036532f6d304a337a39677a42736f3534384d7a6c63584d6d6b38784b5048796f7430366f374a6c7a386c5155645938665357354e5254524b614432305a6c794b49566c73435832416c7144322b77436d367550356c2f304670592f674c74725a562f4d62546b5a446931537a34706f446b4c655138632b2b30625763574831594f6b7a4a5073334144376734504c524e72696453594839432f4a386664334f613146326e6e5a4b78593871467a5664527034746c65747539574f736e6c547578464c326c765038417330684d3477517169557630414c58707070306b6e664a524e34396d50644e52665463332b41425666434833704673667a555650304e797869536344766c662b6f364561584f716f49444b73644e32716a462f6b52484c2f414936345836455730316d6739475a647061707956643868574b57575455523066492b69515463465442466b644833446147564f6f2b48556e7573355441305964532b684f6c41316761314450636b537a38756250567a545641525436434855396a6d436265706d6a443341644268736434304d45325043334b68717669784d386f33464c6a4d4864517252717949633548476378316f3473766a54585051316377706d6477482f414c4e6a422f716c73626f3364503146765a65526f344d65496743325a3432362b646e75785636614b6b61556d6551716a7955585272643867726a6c483346377835614d6a355a526f7351435370613237484447412b326e6a695a37504b6c49524e546a70366d434f7a4236323235554b666b59764b504f6a6d735a5247554b3765746257315859622b3043414773797069497a4d514b6d387662384f58447464587151686b50354d47686975313335774e666c3538723452796b35616d2f7865656531384d4843726d73565a712b3176744956763565733961794b72544e6b323147462f6d464d386b574d71796161746436497a627246396f4d344c4c4530766c71466c2b6651663075746e5a4d347a422f785153566631624566672f6f4e56504d6379747638782f4435756653334c36476333793932526d6f77566b67765a6b496e376535314b56742b346b52724e7632364d3639593175393657734738597a4765676f65764f527937545a3966573867536a53596232342b7846527857686d4c7258424b43576d4b334678326c435130676b58782f636c2f51525147436e62697564564f34737471706d505a78764b61716f4d3268556e425852495330557631714c4e41464a587865314f726e43373368534f65684c794d3532334259586875536e513865383262797a496b30427a664241625a52307a56514c6174415171646f655079562f544370685a35414e4b70656f6d724a775569556847326b384a6f4a5634586d53756b544b674d3350547857797178434f4b586b644e5862677557383666724c41576c55314b6937544e4851427a41566e57456d65694c58376f6b62333676347065562b4265432b6e586e2b7073654c36475835682f4832535a55444d694479484570783835314b71644d394f574f3550742b34786247396a2b65625064784930774b5342565a6538695a744752492f546c586376622f695a6930477a366a344c624a47575a694557426f6f4a4e486a5a74704e6a52456d542f484d6e6a506b49766d557a6f4939377578666a583543616145534736465579737a545233557a61567132765a727430594f3471575a3056754b433757706e7336346c6b755a6168396a417374486a70785a414e686f3335503549764e706443336e586a73456271705556396d6d746656386a587469793162543434784b7a506e71623758416a34556c3259442f3742305445544d3467613065526e354733517a506a37523835356d76394452315837436f4e52484d68656246724e5a4e704c4a576f756579355a503841684a684a7a61666e59637a456747746476486144564744727861776a2f496177513438753032724a4f31796163352b6b76376237544354786b2b5a75665978507970706c346151375962556b756455302f774454665878454e4333483573366a493433317659477246566e365662685659664a382f4b3155333131397235486c2f7744624c702f485232556f38324f6c616e6354396d57654f504d664c3179654f6c4648484c6c55496b71355a6d39525054566f354a6f586e755a6d39374a5a38393164624530646e34303068524a705563397a592b63436c45784f4a434e46475a6d4b372f342b7649644379732b306f6f7a50647177364a5a75365761325a4c526154632f354d7635674e4d375447614433306c2f3230754352502b3549324255326e4531707542482f425a336a382f4774797066354b3633537279374e444d453079797357767868677137516c4e6b4c766853546f4a714c55684c38664e3655316173746c7168354a34786f6844656d736a6830594c695876584c794a53486939616a4e646e395637695567783179544c59484678682f574e2b3149324479647a4a2f6b71664a4c3837794f717a546f625a536d585055324e694d72476c30632b57664e745453766f6378644f774a693655645563307450584f6a72393970563775484162362b442b5271315948544170634f72547055426f384446777135387158694b506f3536486e6d7275752b6e443879757554396c375a45674855674b796e4447316476796b4574426c47785258387466453844364f5137787a6d44466b636665352b705470634644522b7648744c793645746c51624f38742f68327969697743495831366551364966676f6b4c73443150614e724a456255666a756e716f796746557736395232615336706b577365544f307a773537656356326c79684f6c526b6d7a76774c7a314f346276767a6c335231394b65674a41646f417870784f6f467a655654716e554339426849306f6664493479412f727035396b754e55302b4f55374d664570707563593072794b66384131574a4c6e4c596955506b2b344b655a6b3864624b694953482f6c4e4856434451674b6a67564f414145503556663841634a4348542f4d663878756c49695951395a2f4b4c313645585636735648485836307a484d304a3365353158596f794c676955774779466872524d74714f7a2b396f7a6a5430353876376a33332f32464d77736e2b32562b4f544f4a6942547647394277786958564a57776442303658644e3170737939696c6b2b662b7a644d664f78324f483938346f336631355874633531376a6f547634474e35424870353274472b324464796962705356486e424b55756933516e3034644b6453336656515677745950324454397a356c467a722f7744434d4f654a6d4f673178394479322f45562b552b6832364c504a4e4c30726e4461394e61366259677a58656d2b6e52526634376c7844454d5946504243376b3350653848636842534f45464b7568335333486e2f4632766d4e6c354838697959526d4e58484455325750575a5662786378527a304c64567a73696157532b79696972736636493636704c484543412b34355363672f312f735377556141546b64466d5775735a7a574f64506a79583858625a4e784577687a7366462f586d726370784f396d62784b4f6a2b70352f77436731356e6a666d4f537049614970726b5873357939696e6b785339386754713364476e71714456445a31306271544277396e475a78456e32307a6b437475466f386866302f614f6e4e6d454c523063795a674c6f52585457634d6830547239302f5a3831504b47445a48375354395a5a7242674b4e5a7a43715938524e3842714565443644314c35716f4e366c515864726e436579434e315369646b53792f34792f4670547242517134306d646a34354b322b782f7343734a6b547a366b5a6142315445683737557572584e7a6f51436c4e534d6545453953744b2f6a2f6c3461754b6e6c623131496e796c776630466c59387955346968664b4b51766a46564b4750706f7a745a4658776a79674a6d4c61614d766755455445436151392f78394c6c5a67776f776553742b61787a4644733446534a61376c304d625763536742433548514238507a73545a30596376395338544f6e356f433646442b383537514831364f727a39716f57357133366646557849596c4f6a5575744a645477486f5a7872714245624a69476a39382b7247356a457249316d594a524f2b566b4c3468584a79684679713661786c6e43323153457a344c4f6e395a4e6249357638416f4d3478543366484975317a48554548796746592b5236346c5770656870636b317051524d7567635a784a36513443772b763841414767436e31664459736c384e4a38354966457973467741773756695a36634d4455442b356a366834586948344b2f6c4b4c4e584944794737304a33306549346449744865336e5679786d58384a41746278316b6b5773344142662b7742714f6c706748657464706f316d6458542b59386848397250384141723163753854395666582f414d333866322f542f774165387078453550702f796d47304e726144393165544d737a4d2b626f307257316562474537422f5876424e4c7638506a536639656a723631596d74493574673645596e71423634666a6876356537365a5956314762506e633866312b62477864445a6e75775a4c7567505a69486934714f73576d6d6c6b36657730792f38392b75644945334b4b3076474c6452622b702f6434386f79364956376e69336b65526f51714c4a6435472f4e2f6c427948322f41784c4e4f56795672575246525155497a30486f793247664b2f726d723244582f447845596977317a39565037312f6b643775707750476178744a616e59336a62394a6f737a585279423348756f667455534d636d79557367564c6167794a654a7841702f5534544d745832534f2b50583952797839572f55443874767962795049764b645733527a6645387a785856386835346a6947313047786e596d666f487a73736a356250755a76783652446f746f4b524e464d62766958396b4f663130316a547077694277386139704e65622f774273652f702f4d62756b78767649766352644d2f3333355063502f5065392f66384158614d702f6a446b7a4765386c48623061357751683557546974594d69414254386e794d58515263345a6b42424d77316752704c33416361374d49574f4b365931716c5439694d45687a35674f2f37457a4f4c6255447553746c30456c7776615a66723555304c65777a4b6a486e38786a6d72367476433430446c2f57677070396f34687a4554396a6a556c664572614e6b61666b6c4c764f696f2f66377564424c4f4e502b72616e63506b42582f4b3751425469364b37572f384156712f576679784b614f5062506e6535517073464c6144345467344c614b576b6e342f636e337254584733314165437433455571617149463958704f463561434c6b336644626c305471576d6d744b316a383154766e6543696361666b46596d594f352f5665547a2b7756574e61366e366b644e2f4c6f37686175535a2b3778794353516f69713730707837385a6b55767772557167314c3068397a412f784e4d6365795055762f414735767a383857382f3841546e47384639575049375a76564830383861747a6d57324b5a66572f4b67514f4c6d61487a55457275687957557034365a55735570365a6846335a7a674837504472614d78624e4f7a5964695047664766526a3130797649582b56517765557350786f597a696e565271577230317a4c79696631373254566132346c65354c4d70644576734e502b4856637243763841664e6d315a6e484b436d4e353570666a54444e34333458663668592b44614f6972504663552b776d646239427563762b4a31583534707a794b6a51796f703570657576704c4b3731724b4a6f4a35327a4659766d62416c762b5038416b6e354a747939337a7678642b6a69775a3264537544794f4946524665653071316d4476304968464f786d2f4d5a544e4b50716555302f585453425673627a2b6f69646d59723047726e714c367a6569507058547135655277504856354574367648766e772f6433487a34594752352b594f724864477370352f3561366a676f2b4b564b4e4a4a4f2b5546716f627046645333475a47723933726f487131623544343534487174666e527855586552424c385579453438552b48484a7a52377336725a38437262716c46497256473567504f304b776f4f643963326d334847332f49324f2f487a774a2f6a336c4e6d7a4579374e6d5a5a6a3844636f4e4b57353058502b7a7072716333532b33377030787570736e68715944526a3464715531545869374b38384d654938786e393166784e4f482b613372507059755676775362656b65354c7a795775433956324e7a4e57644238304656614572457058444c38767563397a5a3363506c522b317641372f5a357a7055696567353139306851767148716a756e5538633664385a74543965544e6b6a6d2b5a6177487156526b6b754f46544764346e357150657a6e614f683351454b504b43544570494e6d36316133614e796e727054336c746339306b7a2b304c64387271454632734f48772b673737344b49573841534d486c73576862347434396e416e392b522b616153776e2f317a7054304b4b654957304f4b6c4a6a456b5669795941474242396c66754433645341327847374f4f4652374b76786d395150522f385450516a307a3947504f763768672b675856594758697a2b6b66705234394d6e7944623261666454627236396b79627452502f414b377262304e52476c514e586a746b5973796366772b62715262557661306147377a734f3158342b2b7053504f50542b4c79667766316473395949634551705635784f75477261716b6249756431753447586341523654395231674d674c7665527150374a5567527164487a5770475a6961375270392b5a6e3542666a6236585a7948666c783673656659766a31757533783850442f547a6f4e38763239756e4173316e5236456559766a50614e5731597137705564354762762b4c3365397464476d6e53397638756f387833397a3362394450567a306877505562304b4c797a4a3150527a31496e79504c6646664b71647831512b4e2b625a444535486b4c562b556178304451396b4c4f6d4b7743475a4e6967643337622f647a76304976533856764f4e304469492b36316b444635337a3530624c6736312f7a74514e4664385a545736492b3166564a716f46684c5353654478536330306f616676636b2b6a5a6277426653486f35745059644d4b67305838304b5774463850654c5932637a51596978346b7a6854724a6931423733456b556e387848396359726a4d5a3643507a3066627263327350696e765439774b56496e58496a763050303265765259744843456b6a6f50416935775144394c534a4e6f4a535a2b44366a6376386450376a503568666a46342b2f787630673962504973377777712b61536643504c343833797278574e326a495858364f526962307450597859723431477041636b4554416945324b56784e4e545330377a6d314d58473366663738663539446b4f7735572b6a6d63656b425a394663506742665a70516e5554536f537154744d51345a326449756f51734a784631557a564f543873366366384c70597a7a59476e5072662f63572f4d6e386b4f446c657133725035584e3436396e334b384c78716450694761756c54303031686d78595a536c386a625068343663576b6e357638784835786f4f6e57756c6f30374e52706138573061644c717537447158737a324f6e4c54436d2f6a4e434956765852616d662f5a51507731482f414c43417a545176346c42377950384172663465582f6b664b41697a654d6353626b657a555964444c47704c375271525956777a694c75304d6f525537326e514850724e4f59754353534132756a742b57424a4d696a342b302f716a32314270396f624d455130744b352f563077773970526f4a574b33556663415a6b4d4154424c675a5057663179444d57786d374e4d64487a6f474933736d544646626d775a52354470303170726679314565617752554e6e31524e6335614451665953464c6739332b4157743446366c2b6165456559522b562b44616578347a354a6c2f4c7865736e553567574c74676c4a7136624c632b70507a5470326b314e5639666e2b432b4a61414963625069724e596d4969334841324b396450376f50354737586a324a6c2b4961306d4254334872773962517930697a577355724f79792f6b617072526576504c6e334c6d48775a772f77447176736b46507442464b61464d3865386379664f76556e7a3331446569723144386b3871386b637672657a4a30646b377861316564516d522f77632f582f592f526643523936644a6a64376d6d2f774236784c654b566a68535243682b4e6a6a6d575578705478496e516142635a796f466756306461697879306b552b6b3476325973595877382b586f664d306636742b663766594c61492f586e557870557347776630564d3950735573554b7165346d5539426857476b57704e487363537a624e535846685550506570336a304c6632682f797838616a3854742f4776797679534c50302f48764b4c4e6a303237615657644e7034576771485374776f7972535045564c75647055677672795034367661516350322b2f6a397030725a33783858614861667a5877334e38793077386c56647648304f5353302b4a7a2b53573563577643737873416c6e497a70665033332f723939372f6a2b2f3841322f317a52694d5647336e70703448682b576f6c6d48776e79507872466e584c49577476657065356f6178664351652b614a5531437a3976745958412f7743503866384132392f724b5a694f4f372b5652634e4234666f546c4f6d38595357663437476248452f57766f7574573077625251354e5674524d6237796337393849763865682f55635a6e786d52354150373158357a57657450716a34723650384169476c6f783448707254546f366d696c337842752b53372b57364f664f55794d6936786173646c4143444445762b2b6679715959684d3330505a644862573170346268613334482b496562656466694a346c35423656326550352f6b6537754f394f764d39755a65505235446c654c354f685338427a545773485a637250624f31784f706d43336d557739582f70722f41462f566461597271347430366a734a36472f6a703576366365452b6f3278366f6570656a36686679586b4c722f43744e466557475a6c5a696135616f4d7278335730707a633931394645386e79552f4b694576313066734b4e5574504e6538576d753275795230574c78545132744878725a314d39336b655035334c6e6e3352477172733141366a4d4f534c497a6b3262645647586f66774f47742f53496a6151544c6c55434b484768324f65364a374975663065394550424d4f764c504738636a7a345a696e31724b57665876326330704c646c38734c364c634768745753736d325449433159614b6639704a492b322b7a6c62326d4d6438794e6a2f4c664c6f3858786132504f324771785a34364d676d52324f717a49506174505172757a6b72715954724856666241563941356b706f6330545354564f7a72475a774f626e7133343536582b452f69442b59336d336d486a6d663437412f30553951736a615832504c526a6256586c4b4b573547547279513570424f756e51636b4b514e6775754456644b62444677305637317a4f7070784869503532626f705635494e42315756626a2b5430437a4642335a57536e6f35692b5366463247663841553977304c2f54414b636550595a722f414e5a2b33726658414a532f70654f36465a394646464d2f4a49325a3879766b6d6e466b59754961753246375a2b574d6a56375234416e327a34654a724e507355485a332b77642b537350704a2b54576c364f3732796e4938632f496678315758347978313346524d3954734c586a322f474d2f39736b556a4e5a5a4f6d3663576e7872464e64482f6b58654341382f74644a7454644837762b673979643270715a6b4464576e4e332f4a4b7073506e4c48555436426156437079663952394f444a714c665272635471413135674c796f564d4a4a537964492f6638336b3876734e4450794e3954505148794f58782f79507a62304c327655342f4763763733682b503542344b5353385a326b53366a496d2b507333715a732b7261666c6b37697155675a392b615a4b69643149714c576c625636547477496236656570486c587154696c75625742354e365659792b315a4b76466e30716c71737970724b6d5261656d6e50537150776b754a6a3547694d57552f467a4e2f77416f416656542b6b784662596a6d486c662f414c734f76346e4273545a4d564d62664c50497470314f7a482f68533070312f794567364f6c62516f446c5a30614257426d376e577570555648434355506c3739434a786d427832484c536a477a39646a71785054343076756c644c4a5372396d79504f725745356450366f4f584f48654f4c3476334d582b4238353871656e4d353235345a774c54394d632b7a37562f54616d324f6e2b516c3175796d314c5646334f647a4b45515578512b30536b6361754d364942394e5a664e37772b506c5a6e4d35465336596e7a3276445553316968705961786c66577367613858556d6a51704c686663596338717066623067634c692f545563446e766d6e616765717a384e50376750347665592f6964364c666a35756554332b43666b5434335a6a65414d6a2b6871725473565931524b7a4e624a386a7a5866476d7832666e6c3742596c77484f3530303261464a7a41584471364e34314c586a6e72626d4859664a31764e7646774b694f6d6c394c6d356c4b5a614d62333136656a4b6d586575672b394f6d6a6f3656633433685031504c4f726a70503375582f4a52364465586c6e38732f59553935482b522f34366565354d2f6a767251676646536d7a364632654d2b592b4462786776566d7679336f4a4b5963755a6a467663744a396e636e33446d6d3176793074346f4b62785338546d6f4665422b764834572b6c2b732f794c78784e7a64724e437430766b67656c4c786f794b567856574e783958615046345750735057535730506b434758332b524f6e54384c72422b394d366572627250332f734c723066562b483176527a5977646a6438587a4532557147326d4f3857616331576b3755693162344e37366e4b6e464b4c6a6e533270527a66434669314150384138624f315a7231476933355466334538722b3374354c5074654d2b4f2b4d2b71586e2b706c325a2b56446f636f7731654d65513530733550386732427178536f646b794d4c76614977354d665131516d54544e2b2b66317670364d36306365536f34522f673135703550367a666b502b516e724e35355a565835623537507137766b586b487935725235752b592b543056337a73574f4c516c4f632b6358643538414c447455434571556e6f456f656e56694b3030717878324473526965627677735479566c772b4e386b6c6c563831656673467155616c4e79453548524748525937673748794c4c34475376706b7366544d786c4c516166565957695a744d514b36332f55425255784b5679797a6e2f59786b76446143525758626451584e54547930354f686e53736b754a505a582b7a69652f45645456547943687650366d4b5a6a6a776d52323239487656413631666a5036735535647631746230683276545879667961334f68436b4c48622b74546c766378552f3268453650484e4a625575503374726d6e4262357050746d376b74582f4d69664552503835504c62687a5047597152386e305053377948314b78396e314d4b4b54555a6473593265656c745a324434355a4750737a5756625536355364784e4d7a542b3941354b56644c6c4e744b497a483474764b4c57712f495038507679426770384a386978504d2f4d6f3853634d72796e776e41394f504d4a7250343231387050796146326a42526f4a616e2f496f5932327954306d6f3653564d3845767274314b6330637635683537507a6f39432f783638523039547a75447876316e386466347a514f6b6f646646306333427a707366505a54546d7955655265564733506e526f5179705a41726b7a594533383732427950724a56323656377a797a6a41716a384c2f4d50503841797a7a7a4a3866394948655179656c6669586964766b6d78732b563545754976497a3847445770307379586b75705a32696575715666416b486f4f4d744a546b4f4c73357a4a6e5669496a4e70357046572f6b7836684e563648655662464e49324f383938693734764c6e717a4a386e6a6557664e665a626d77592f6b58417153374a736f344a45732f6361544c7674626f2f374c56694e2b4f2b67346c4d462f7742796a6a4969704d56502f6a6d4846382b695475534d5655516d756467706c476771686d3430524d2b4238712f6577326d6534326d2f4772384f2f7741682f7741736350316e3833394c2f466f61664366783038496e3953505548796262305a38504238637938324f72536d6a5856464c3146766b464b63335764466e5441464c70557442707441456e2f5558314b61633169653171636f317469793944583146554a61376f484a585a5134364f4b4b534d352f70744b5036726c39596c433365394d67715346485a6e2b7874487863637130576d49784132455a3543574b78525a32705045773839636b3043364932616148615a616e4d672f48373874674e466e62452f61366f4845507638412b434b556250306d426558707473535a5665546f2b51707974534364464e45574e486a535031394c516d356f584d685049684a6a46465a3761486a784e41752f374c517246616c3255425733486c37354870392f74352f3235472b767558682b762f35532b537538326f3147706a384c394e695254483468346a6951342b486f444e684c544b6f562b514e47584c72555a4e686963754252657968627157487761327673354e4c6c3878364a6362306b384a38477761386e48795a4d6e4957476a3838506a796f497556544e503642676a72382b66715539545a3855597a6a31526e396c616150737a716e50686d307a4f52354b2f774336352b45474a36456559365035532b68312b6467654a373268586e657057466f44717138626d4e714b4758616777513355715953486157657559656d645a49432f336e514b44352f586f2b7a3673336a33647638417447756e346f2f6b636d3730363876394574537535326c366474357a7775694854756770386a3845356e653666455662662b7749555652722b466b776447494d796e737a5a5a54415533314e506d72656669484148386c664c5139512f5837314f387636366a7653386c386b53716d57793031706a79477554484c444662382f777a732f3930342f736c642b483272616f7a46792b796b59303631385a46342f68722b56682f693172656658522b457338325235706a65505a6457567161444d576e4638707872355735576c54717378542b53566e314c414e50742f3342545437656d376e426d7a316450336d324a7473322f63575236322b6f2b72353736793758714a584e7a45487a4479526d32374c2f36625a73764e3036395333365539584239347a2f716f5a7745756e375667416749632f516a4e6134724564646f375866685a3666362f7052364b35506d2b62364d613371463574366c754853516f697a5931773551314a586e2f414d6871324c502b4e57764e6e6e396f71427a5434372f486e50332f4149386d724d577469626261564532384e387738713961747a5278504b76783775394e3733616e4d4b6a4a476954344c6f4f4e46553277553352572f3633755a2f7744462f52435a54644c39434a6631457846497a463932424b66563738427337306c38593854785044384e6d744a354c75386f3274492b727050397470485572524f564365684b7a3542454f6a2f694c566d4850312f55563170744e733852713367654d2b7265743578715a475836462b684869654c49552b5175537a585471655865535372664c474d6a71492f33794851484e614c66614352465873396e2f774244336631656473526d6257794f51663564656e6d372b4a66354f4e5643706554565254343136702b4849436b307a5a3353714c5864504c534243426972557933447a71765a2f77414750432f5a642f727030356a55702f7445532f4c623832664c767974386538583848386f3845384e78762f47764a6462576d386e38577233655837367254756d484f35445671646d47634a383966744e36544d4470706143672b543635547036556163326d4c635274542f5a413866626f2f6d7433794a63756d55586a337039723664332f41492b6d6852665976656d326667766f585079356854435076426a342b71464c6a53494e554b777037584d2b366d507a44316e61666a6e6a2b505071614939514f69476936504f47794e62504b34623639653649594b596f6674476f6854347a52784661426153724536536e7968396b41507a597a4f4b6a794b2f3341664d3962385850376d6d6a366e2b47577470646e3658682f6e336563704753625a7a5049736b5a7433507a71624d554751324f7a37724663616b51366d6477676b4f63536e2b765430596a55396e327a3878366350524c38672f53373867664242723950664a563259586e654e434f596d65566a61636874646d684e705a646376436f72544f644750567866783949334253346e547a544e35332b7543394c306e6d2b454f3872306f79505379356d563431347a6c4d75324b704f6554503876687533764b4e3355727a31362b76584e72786c38646731546247617273716c357830473752565032476d6379424e34746e634e7576534c304c794976484e472f6e6a2f41492b764d756f70315331755a615562475579684a6245553132644f7769637535785a4c2f642f33496c2f516368786d43364950367a6d5a6d525148354865754b2f544878322b614c7966557938316e64584f2b7950544f327150436d4679355178725856564c6864696b5852396766634f74615a71542b352f46707074537536656d59476b4b2f53752f386976536231367630664639564c764976414e4c6e684864784f50544e76315a34354f3134786f33585a2f61476145656b4f58554844427266724537354c336d4b3269577357323272493454632f4b6d5859394a664c664547793465704c70654a552b4936767042564656477148766a7266707763686e6f31485648734b63797a55714965634f6e72765954767345416c312b373574332b3461672b677634782b724872313559586a4d486a57746751785a3270356c7237336b4d42344756523437343332377466504850497448484351664b307773506b4d39464947333661336649487866585465316f70475a48715039463862304d2f465877504c39437644664e632b624e38653249344f3137506d666a3246354e35786b2b5a4d79646e6272304b4d6e5363586a2f6b486470784c6b7634334e43754845504c4d47556a4d70504462336d70614c7a586f4b4b2f4a2f774449623866504b7651373141394967396466546e536838713950394f7a5032702f4c6e61766b6572666a615767374e7861493853774f592b74332b4679527a696f534458694232652b6346684946395054764671323232355a486e2f3841376650354837583472666d4c364d657155573975355749666d6d5834373575366d53666e4e2f78485732506f367974483639772f4a4b55382f7741667946536255754e7a6c6b74676966657a577058553062566a7548395172786a794c4638717a4d4c79504c47545a58754a47354f684c4c54626e4d7971307738766d33737254647a76386c52446e5a7334705958735457597a707139346a597a775a695934534f4d76392b623843582f6d642b4f55666c48684f4f3672313739473373332f41423657584e5a317671466856353267472f347631763130735464664c6d724f413241644362494b4a7973454848536656374a72653676696578622f41476a2b662b76784c645936576572505a6a42387447585878314558367a554b6e7150586b666a784f632f727661696841724146304162684544537269573939556569332b796e2f414768765362387059504b6679412f492f53703877394a7654545764692b4e656e6d616a506752357a354469647730362f664b4e47595470757a66756177546654463837694f4d752f5a42585571506c3972396f7453327a543562572b49656754387266534c4630765350493849384d784d2f7747487757544f7750544744784c362b5a6d2b4f5a2f6a4d302b7467594d44636f587a527a3646453746716b302b674d7276593579456e524d453348533878624d3833694e576677692f4f4c4c394850494865672f354f5a3262343571346d39504c3439354856387473643333354164726872484638685a2b683132624b684d4a7935636250754b50676b594959375456307430623666454f6b336c336b6e347a2b73766a382b725a712b4e45396c4e6c4d5536757132456a615378783549466846516f7946746d537879314577612f653636685254737348363245526573385a476d2f726a36682b6958342f2b4f31426b61556b757a7536564b3950467a724553573967656330656c5635426e354351714755744172656950487a555352675047506a48346f423072573135486c572f7542666e5a742b7346475036512b4a74386b38633848564e564c3551316d6a6535666d757258306e5077374a66624b744d4b584a306b4d58336e457335615a4a5341455a4c3944533074764e6a6d484e6e3077394b6655543161386e76384a394d633276795064517357587a425357424e6e35344350624b5049394a3153776a5732784e58654578356b62516d6d415066524f767531375672584e6f326a5946333445666d4a6d7a5a317976525058545876652b32466d627559745656484e434f7157544c2b6f725547684f6d33536f667a34654e497a45443579596a4267445433756a6e62766b566235702b4f76723736582b48572b552b6f2f705235643462347a6d6248504564667962794b4e696373504957794a6537786d7571763841553931686f5344434a4a434c56625077745753564a61715974535a785332523668667744394b5048712f78652f48327a4d3944744c7871657a303376314b7655547858796d625a386d38327059476f576757776e4d306b50783569757a597a7a425661786b30782f4d797461755038417263577261593162633366325233486d386839505054547737416235466f2b53522b5a4d716a56586a2b556165666e715a55793351545256674c586e796e79786775326c555530536536756c4d33454b746c4b53582b755862615a34646b484c2f43664776506642504a2f536b7154756a3876385376796f325749354f6948463138655845637a557a3970505934384e6479784b4a5a54702f54494538536f676968517045375a6d32522f4e342f496e306638414950782f396550556a305a38793858666b373368586e57726b496d725776476f717a70743052776d52742b4d2b4a58566e737a652f49737939706645667a4b412b664c374e4c52656c6252595648704e2b724f58586141757167524a4e45716f42644b507a724f6e71325074537a326c33724a2b6b78776a37536a2b7564485854447735694e306a3731776f3055673154357735796e7436336c4b656a55774a5a584a704e48666737335363736b39357a67642b455449654e34487945756f6635554a5858646c79703279626c3142717a554c6f3174572b305253746e74516c5571754f54325756507535376d7263422b397967542b6d4b76624f324e335839426631336f4835446b5a4764722b5363677a4c7163765663764d357a75302f46586e4f2b397847784d4e48784c752b476a55344457695975536e394e6f4468696c3263583437596b56484a505050772b2f43427a38704e595161686d794f70307a57395a3879797a2f77424a7957537731304b374d66444a3455706e415334524b6b6256654d594870656a4f7373306c616570564a4a4679507675324d6e6b7268626d757532744a474a56517166444370624877706e4f6351346d6c6f3836616b2b2b4a7a334170752b6d2f7031755a6b332f692b624c6c33493036715861324d7846544e546c72344e6544547755543356726f30694c3575774138324e464c6d4b72624d452f74476d363064714f413331787654582b333936552b6c586b2f6c792f42746e7a4c31496738623854386d78552b662b546150326c58446d4c62705265414a5174552b6c6333516356634d645a4953354c756a6631445767436335747257746a64792b51306a2f4e50382b422f4d6e50384153374e5a365038416933707a5436585946734754355067503070393379542b5276386448714b4a6c6177726c797730503568365a7631305a2b582f704966584d317331303948334d576e667533446d655246705530387349773547626c76634b3154646e486c4644614538494257503151655358634542554166634956697276456b72707874696473417834373542736550624f58745a46476779364c32724d78657461487975716e35324c35536f3578792f694839634876557236304f65337267642f784578576558704d4336332b76397567622f7534692b73717a6937707a44743035616a647951562f396e73736637536b51756e2b5a59442b2b384261556d6e6b7a425a585a506a41676572366d2b622b5552707736646e47697736432b424d4f64464d4f654b47497a5237456877722b566359366d584c304563366130394d6e4c5572347566314f7949347a4f5967516b7063384f746a37394c4c52544b6b362b6155626c464753372f33384b694e6e47694a63544b6650384b66622f6b4876346b6666335146557853652b686a4b363552556e3269756c4658464a554c474e7236666159317245586b55372f6c2b5136766753526951642b496935775278366953326b314a7a342b4c796c5748522b2b554d52545735647779365445304a6e7a7077732b6d342f3958506141414832424d2f614672397151317371443672475858364c616c445a786e4264524e797448432f5346794555366b4c4b614f77614334714c72782b46516b4d2f732b493163353566587a486f462f74486633422f5844794c79724739452f56547a725138783866395076444b4d443076304c7443617a55772f484557445a33787131326c4d4a36475849552b6171592b3834536c7551423862476b5135792b30364e496a665775336431486f347439552f446466427971764a6271723850657a783036376a524a6d7a7a786e775644523373387a706e567157356748326868787854483070445359664454777a576334366968566548656e4e6c62746948386d486549344736755236634337797945357457552f49503841785a2f384b327354586769592b33764a54496132667738637a685477586b712b36667754362b6773505038414c50772f394f4d5058394e632f77416d683874314c5970585736766b56316d76354a766f327161416f7353726c4330594d7655353558544d4541644f6e4b39716963356b31383059314c5475787846772b4750333872426959725a6d30737971544a68644f314c63377966583778364a6c795a563355387a36745275674f4c327035664b37726f7847716f484232622b7157786d63644271782b5a6672356b2b6c4834336573506b36626f5a394c43384b666c357155797a4b30394c5733384f374b51754f714f7062426f667466597251316e65704145772f45626a707a7a6666527275314b775044724e36786573455046763736732b704d612b2f72736c612f4d50494d35503670503841375952657a616e375038737450374c6b78493977556b5077754d79554872624b2b4652424f76314d2b7147794656675057495539756735373945795567715073536b492b2b4f7a716146395637752f705a4162693976374a5175547a466e4b39592f5864784e5256366f2b7133554d7a4a6a706a71383238677a387a516f6b736a5263307858527a6c69785451664747424353624a6b39616241556f7a6e6254384e6635675254366d2b714e4d61526f39512f506b71712b786f7a6458355a736e50716471584b576d307a7133474d793553773879583367336e425557434876365a6748567874722f7742495444785878333149383578627264543141322b2b4e514e457052386938737273727530446c6446506b65482b4738316e2f774168705552737035577851706c7a3070564579784c6d7143704e71784f33627846776570487072354a364f34507074714b7535354a36662b712f6a542f4b2f532f7a6d5352434a7471365275666b36336a506b533576655758733565746d7344694f7639314366674e596d4467414b524d576d333471396f51444c39547045356c4f4172595050386632466f6e303861443576725430395a50326d37713674494f30574335735a6c5533676853344356494163582b7579484f6835706c7679375956337a366136715665502f63544d754f776730697a336f633948536e36576b516a7141773048503841596b704d5863365a7145513952763841596c2f41337872553948664e767948395a5a5476542b535870373564364165502b48614f50735a656c67656c75315576787656387279742f35302f4965355054536c535a35786f4550486d7a72663771794658423756713476576c6633664e2f33447a4f2f6c392b4333712f2b4950717a3570346e54426635563462346e366965582b485947336b314b6272614b384b7165502b5332735748574f337876553742516d6f7a374d754d6e756232476c796541376e66703631645775657a596161727964586432632f4c6979583158614435344d374f55665a395242445573755a386b33364a6979614d6244547a3239372f752f7753484f6d584e596d74613548706438612f46522f342f666a393655597964724c3837322f492f4634582b62356974562b5a6f2b49627472744c654c77334f426362333648785561483076312b706d2f4b663743636d6b5075344a314e393766442f63553735316862594f70386d394f756c346e36676549312b3573764749385a6f32737047682f46726e7469565665467738537879492b58722b5a507a4970617a6854642b4f30593452504e554876542f774475502f6c4c3663314b7a39445466625269526f576e4a6e79394146736a3448314d396d75324850572b68675a6f6c3750596a322f356362787a5273735a4e452b7a3663392f38763841324c36442b34662b522f6d6c4e6b4a65572b4e772b4f4f4a737650476336624e2b48487932664e6f7768725155533046646e6f596d7757733477725a7a6a6b4b5a2f563963504b6535704765384f504764727a337a48517169314d7a51304f76445a67416e6f34344f4b6438657264474f37535365335a61364a6276657069704a6b676d4d512b736e3742436d4b31365278485254302b39646678332f452f466c322f5576316c384138493833625a684f35692b52655462444e7943584b56434e4838666157596459306473637a3571686e536967622b6635704c6e2f5a776d6c395363567275714c6a38372f77446c496e70306a5a38665436622b7458343765534447314b764c73627a72453956385a753766783430737a4d6a792b58777436556b57505656454a7569656b4b6756796731534566574b2b78576d4f616b317a2f434f6f6e343366337750376348724634626c56612f354e656b50706e35625a795448316646764f664b4559694a664a45736a794f637a62376e41466d47546e4639613337485669435675596b487071506e50663254577050485474616f366e2b4b6557654e6553596b65353466735a766b2b447334397235362f48644a57376c626b5a6f463674504b75686f354e564b54697146546c394e52722b496c766b427073504b596d4a6d4a6a67452f49664f4d62772b56443976576d6b485872626c357236337a746f757237784e792f484855745a7a687539726d437458584b2f5a75344846704c7658545250474f4534794b50305079466a33664a693848394e59695a717365757531366f7576784d7553754e4a543758647a6c6b366d57462f4b5550534b6e67347778486449503337425a4d306d4969625946765975346e5179503479767a4c493268637467514955637976707a4d55533832616e714c42344e44766e486e2f41442b6e45382f2b776e346e41722b717a456464755a425175364d36534766515a59347331516e3144347847305345522b70336e6168616e515a394e354a35496b476761546437314830654735504c3741526c7674794f6d76676d7464734972724876797156546f45566d6479724663626b70484c346b733042367676514b6c4b46664d78726165684d784539525969715a6165644a44517a6a70476d666c736a666935576e766275664f6d516949507563744768773845446f4c67432f384158666370484a44576f4a766f636c7130654e6c715470526457756c552f545a796f66676945663841574d6e566c4778592f6f76672f6269457749542b527566384831395346615a2b4f4d6759316b333670494856564b735133374a6d7a3567496575347556504d2f505372326f59496d5947437945432b7a33514a725148584e4b6e74564c6339376b4a4c6b71616c7172455766742f3130536447797268564d5a303172615a2b775441552f72356a444356794b474a5851503661696d47317a2f6f55715a4a576c6b727846656565657765742f324f346a39442f6c7879753030693431462f51667a4976377047483435562f63662f4c524c377334487a2b74652b346e545a74695a716450542f6865387a4e495375446857567a334c6f6f615055463372667166576d4242673732644363614f6e2f434e582f47647154576f514762735a6d6974492f4c70626630593153614d755062634c4a6a70306842553954563353732b483734544f59796348733641665a472f752f4d58786e6436334b684f4b4c2b536935564e6f66434f6a6646446d64652b504d614c63766856505462486a6a43336a6762396b322b2b7a396a70665a5858533357666d43766a32613050725a51746a30343833516b496350783139306d7178756e306a6b566561584e45656f324e43466a707a435a4c4430674f6d6a2f4f333434424f2f7741572f6935556c4c79744e6638414878685347585a54716447597059524c4966562f343277683044317172686861466571452f624543626a424f66787758723459702b796848334d4e7056366165502f68517a473838647a3031647337537a54792b304b34357a62313466574e627a68642b2f4d34466a544f32762b6f6d63526b6241344372744e2b7046446f3161562f793256386d6b374e6e7a427138677a2b767a704c4e5835307a3643744a3267796d6d626e462f46387a6749797035624e6c6674534c47386f55666975426732702b437947764a6f51394d2b4c6d3544386c463939737938366d527a75636879314c643876616965514b636d54324830576f2b614935707435635254766d443243324a4531394646635253546c2f46337670376371616b644247484e6e56425638376d616477394278395763782f556f616f544e31464e39507647714737654e477079653058726e304e574238696f396237544b626b39304a716d5657426f664e444c5452524c6e314f4b53674575676d624d72397a7a77686f49786d57363561756c3547566d546c6645454f4f4449337231533150334b36515048354d3671325a692f744f644457796758756b647a362f75396e44594e5147432b506c7565506a7a35744a375732305a6b6436496f6f354734696858545147666a66596e474f69577a53447675497737513966464e4d7a6c63384a577679437064444c7163653644576b737a496d5661422b326b564c32507457577a595131537a6c63334d716f367953464875545471756a5534415a494677476234716e734f79714370726939777179794b624d5a506d486e2f536a4f6b35683557786a6462505a563252517a70564b5945596838744c5742472b654f746345394b4635674c7a4b79557a6d4b732b526a6f6e52646a795361796d4f517948536f5871546d3646504a54552b6d6d326853756731716768576a6b2f4e592b6b704d3053437a5172336450473054706d626671524d7a71745a6754365347726837566b773863795076425332786278345a6d6658425858504850472b6e4d3351737930622b70586d73584837614f6f30585336586b434d4c564269342f712b37755578307a4244334e565744552b325a7971467a68596b757a6e7376666c785946754c6f693378316d4b32774c492b41746d4656474f64496e4f6e572f347a594c752b7a34326e2f70306a496a536d677943354d546a2b654b4d6256734e693274544e2f55676c6f345768397037335656364452545271567a2f414d53586b47736d68427a4b532f72594a6452534848792f6951505a6d337156616c614c7061624c4e444e6843756c2b64687279744230315a614441746e763971537575576e506e6630657535374b66657479457a73634d596a7767547a5938614a7a6150464d2b334e586e3657626959323770717a76465934496f37453643644e4e734746443743326b59746c484a6c6e38795a4163596b5078643765644b7a327254363963416c6b304b6b567a354232737469796b584271616a50624861377563357952484a622f3070313330707a655669386e424a5a6649536a4c71666d2f72514e3761504848654f525a32524e504a693661433057366a7563374d3779412f4857617156506a32474c6e715452704c7a7761685062314566514d6e43365135517a7246706e6449726e796679554a7369477864546361576d324242395477437a4f3438583853366d664b50466f636e2b656e64524b41636432696862744c6a35752f525a6166627845524d7a33794b734c4c53764f75597a2f7741544852746c316a54596c326c5a4f324b5a3152644b437557683879374130724d6c365959596d7a714f2b512b66436c4b6258534975765159375432443862754c534546756d504769733871794e576c7332546431634d664d755a615a46305373576c6253486f66454658537055487445676136454b427973326d535343536e766b66334d2b715575327a3830533138576a4848616e7a684f696a576e54517542667451637a43656f766836485237514577386431733350314c4b455a374535312b37794b4c2b547a7a6e6d534a37566c6d5a6a4c306853624f46784f624c337136765974564c696c7261524a6d6e2f6f4e6b73526b38575657595448334b3569334f532b655a6c2b65756d4c4e7542755a30386c796d54725a485a7555514c70665061696d7732506e6a557a744e6c65466f38684c56317936575078754e643847502f4863674f662b4377367150494138507a71735371466e3032394a6b4a666664387339394371754b536c76554a7a6a4e49562f6565764156387a4a2f6d6f717074446d527339795a644a534d68742f77624731335a6644327278365a74574455413651756c4559316369613446774f6b7055386133387a3762362b4967472f34694c4c4d485142736d764c63586346712b79616d4c5a45364b5479444d526c6248584c63646d586e555a2b7369697168564c36616241535353556377485961732b5735394e314f6a6e5474786f4134576132644d3173554b464b765873666542316d7175306b7034316e4f66344f44345a49442f585a45544a41776f5459686e75446c345a302b766f736970595167317564626d3973426e3275335839756f567057576146484c754a61457839703161546b6170436e542f77426255374d436b71344d6f506778334f6f6d7273583031596d586b322f7251326d667a45665173655679677a6e47356e745934466f4b52612f7263564a3874674d734a4a6d5a38364757696f467a496d66652f6d645376372b374a4768637445744b6c39686b585670424f375049316b667a557a4f3539796c58786b707765794c2b332f6b3061473536633474586d4b6456655034724e4f6c5775514e304d6a39695647706974544c444c327a326a4a6b49366d6c5941503841324454304a6d705454356d7438553742326a386667476a59745936314d5336744333526c434e6853572f58646f6756753171565a7a672f673551594d6f476b7267425147302f38416533702b336e76306a356933594e4e6d644a6e4b6d6241346d58705932504d4c684a54633773732f632b6358533959566a4c5275464a4e7a3147696a32697745713933326375766d4a4f367a6e4e59513243305a786232782f565351737150536c3457317841565a592f4b6c43575a4f5852306b39396a766e77577364314c474a4a59534336796931564f586b797247632b364e6a6e4b374f784e7a586471644f7468374f63746a4b473045316e582f41434f5777497a63426643624870434c366b6c57677470384a77544e6d6b36746b6a5a3964504753784644332b5a7936666d58506e4c456f7a57744b6e4355333247546b342b797a6d45716f6b3549677577506447314f714d5376357072523074656b563153715264796253427769636f314766666c536b2b7a417a687a2b386741496a735875486e4d362b43764f69356e554f535a61396c2b424f48656a795372587453534f55542b32786e7434766c492f754e62715242626a71463867516a5271324778757369632f76785a6e58726279366e4e71683070724b623261486137767037424c6c47642f2f414f6e7075354f566e414d69454363766a386d4a3953656175647162633546486151477232467249525049686b786f71446c7a4673326e63345a74486e544d65554349394e7a416d3663772f6b687056574b3177546c43776369675a33743730574346375a7545444e4a78543252714d512b7a385851593152754554442b6766354d3859326e79476356365174342f73557678676843633547684e7836626c723648744a3146687a447a39744e365746386a666e4e6f41583571366e4463424a4e306c64617065506654464b4133716f537336396b585476592b6f685239615965475966376c4a59487974466752695043422b6830306c6d61503249484a53397447544d78534b34585531313161556249304378664f6647785246376a345533776a396b554e452b67777041787a4b4b4548396270796853696f56325749345765497448354b30385765536b2f68375a5a556868645453346b2b366f7659736d71614171464c693048554c3654585555703731465235664a6f7570375a7770735a6730453464596e56554d6f4e6279656a6b6255716e4a667843734a444f795964472b57533372324a72746e736b5171337072635465444c4f4d4f6949422f31345a7848352b564b647a767945416a77364345484d6957544976634d306a766845425a5a425365643245703661716e396b466f314b712b55766d554b4a3267336854664b796633632b514163483544324a78633055794579526e656f664d45566873375833516f5938797334747566487877352f79734d5571537234702b6d625a537236455a3264537130457846504473386a2b4d2b7a684e726152634e362b2f7536716d64546d716f50342f62785939346e39435238486745686a516843655570554e51756b554f4f4e36666e6d71397137744a52346450583642364767787055465a39354a31423335416359482f414c707841774162326d757654424e505a3141784957464442383363795033776f4261787536772b694c492f6b42354c57424837776f5437324b4d326777527735654b4e3648704e5359416d73664a6f5466454c6b4e746b6e634646686a59544c702f66786a522b4e784f6d55504f614d7a474a4254456a75577858756d513235302f45634f7872732b5662785a5a622f483931493066572b77724e4a7979346e744579714e567a766d42482b77676b476e2f31336d487944783033453075733552564e5644395a6637456f5633365156464f754f3238324c393144544c346e4d6a6e5544467444376c77544a584c643953325178417a687371717a626f732b57786565396d6a5153574a4a384a444c68736f5a37663841344e49673950444a5879423853795358737469506b47435471617a5761737a764a65577a633057527a4e57734736616572737363787a4263686b682f5a346d6b65714e594b43734f68494d30532b5669626f685543337571372b775530733671314e43322f4831692b4750576a4e3056782b7753413272435946306f6b3647656444464a705762506c764e627a367856556248334e58304c454f687952736a4967595a754f635061524c6d3448552f304456726f327943394473774a30364f6b34766d5a3734585433702b5556495171455068577468493435417434522b2f707539365766766752565a5a694a414e62623856375a78416f48356d5a574634424d53522f6b4a2b2f70556f2f563551616a567a367958332f414f664875414639414e5443485258775a71597034613257416c324c4333325a75706b5a79507146486d5a2f795473445579316a55717a363379757a5668775767737834475755566c4d39716c47704c477a733743725230456f4b6e3730524f4d4851557a6b69556555616e5664352b6959314b526170732f4a714b58684b54534b2b432f77446a70632b57644a5131574f5444324961394131335a64513979506863794c67304f345844424d7653635641652f324d43674d705166337234547056343270644b36547a4a35476f74526e7435394f4a4b5757704d346d54435335763841583750394e696c4e465847436f41665278396f6b6c6d303835642f5a6c57356b7a50676f346f7a794636464753435064477044394c684a714a2f32446d2b764e5158765944324f3449525431586e32446a68624a524b6b63617449766b585977395474343968767a6551566453536968346d7958686e336b78664a79592f6151684f6873786a4d5a364469542f6477356f6c364f2b6a344d797a584856367339346f7759616d33735a43534d564d706a417074437a6e6e71466b584a61452f466d476f6f314153307036665a2b31662b482b773463307a55505a3874637878427a704f7664736265634e6c644f6a68753135632f2b517a355761492b5141782b7030796c744836382f77437543587a5638537a7333313852454c664c42476575544e6c2b307562506866456a4f4b326d6c736d584e43444943516f506d53356c7a73314c4f64544e4d3977475348484d644974734458692b6a4f4954646d30435267505a516a4d436f36596d393867544d7864544c6d6f73442b556e72304a4d2f7743343142504c6a5a76684a30727659525676325a466c64796f68717838774b774f757a545a4a4d2f586235484b6b716337516f3067514455724a4d5938736e68706342726132454e4966626638414d74505372377a7944464d65724a6839716d626f6c6b5530364461455645646d6b35786a5454326e52696d304237562f36544c2f41434c754c43783176386143337652443337564c6876384158583139777067473233517047466b4f336e7130494276507962787174644545373952624639693138545136683257676444697153477a36664a3343645573793657326631572f616b454a633752385a52614f35705576426e555a584b57784f795530585a6e57566550377a71624e43464d634d2b5379727677723454654f4f652f5443685645394858617477427649387132636939504a55756f76674547596e4f3339344f736a53514e66436d2b7837306b5075324e497a397a3553644d487869344b614f7a7756463649386f6e324d61326b61316471553061456b31636f7872613037752b7844744b552b714661645a4c547055545059463661444f674843396f415a56496b7530364c553764477169717832346b614a6e4f56334f4849766d7a364761533636453753364e4d51623747664352774151482b307a4a574746656736566f7a31566c58626a364d55587939566b437056444d793456574f6a7a4b4437486d3938664679757044713535322b78767362534b5539424c7775625859335370736e65725270795a643674756471723532333934313063382b6a69385a4e79505163393265336e457469736b585a484d6b6e70446e784273626965496247586d4e6674597373655047684f6a7077364f6a4c4a79317a563153376b534f4a4875687262314a446c704e707a685930356d6d36777a4c6750724e717850487241744c78434f51732b4f646650476b4e7a34736839465069434535636f4537527a6c3569465631534a355a715657653773337a2f565563662b4e744e5a4a5a783164547546677a5a7966346e4e646f55557a2f7957684d6e6d6b6c76384149543532623541695735755757577373714e6339792b7634414437762f49614c6661457a50714a7a435471314f77692f6b4b6648394a5731396352444b5a544a70513654416f67526d396d4b582f7555436a625935494d42546568415a384a55337363415144596f68313871716b4b6444476d54626e3647505a44652b444738656762384e4f6f61436e6b4679316b7a50756537346c2f47646d61667864654145727436645a2b5171445a4a614d6e566d78396672445869587778553171437a584f57466c6c5756506c79664773616f7a7930366e614a65794b536c58316a6f6e4c686a38756b5a7847656f31636b386a5a56626e776130306464382f632f4c746d7153474d7063324c7061476d7269387a61324b4745367a5046796c4e4e48617a53384a6a624d422f554f5253336b336871724f6e66346c78367039764472765269507371737838316a345a356c36484d366b55746c464a4c633450656744646f32455966767335482f4146725732657338524355596b4e324f45696d2b5173756e5a414b5262516b62644934452f5456656b4e5272654d6c4b56646e54572b51412f7742504654474a534b2b4764334e7446702b49343756485a4e494f6931744f7679424e464850487366506f6f72714a6b6c595a4e736270724c4f666539307966616e37504d705862457161424b4b74723930534c52386678722b364a517961484c7956476367516c6e55365244636e42757278767139344932522f494e564330743058464b615865303656416f5170704d7a4d524864417666783244794b4853716a75583771364e4f4275665a476d674670342f424b696a347331666c442b713170572f7741777343537a76447253483343374f6b7a6b724d7848475264764d796642325634586a743463644a5a6b633175777135796d7556514f306330436b7a5671662f4371386e75736e36694c7645736e2f6245702f774158652b6e61726d33444867495635633573624b4a555076556d764f6e6a534e4d64586b46445464564c334d666e785430476d7659566b754c6e5461716637485a6e724d7937386e46364456727a64757446536c4543597461682b684b56374c3435366b33366e4d6650314f54736a30397949364e5a6e6a37484f61696178726e425a33322b372f47786f564d2f4a71757374766f5a634772394f53304e48733157637a4d6f69305539517a4d5652754c574a66775074565a4864787265506a6b6b725535697a565a702b54372f4148455630746a78656479486337796f6c5637756a334c664c6b445a42497a4c6371694b7658437930666a2b6e504b4d756750595472435a566631783473474e6d735448575245746a69706d634f615479504c78696934796174454e71733631316d635847346c575048593461424c6736796d2f6250687a426e6c2f76756856576b4c67546b5a4b504964473368533743516b4b355470744b5352746e6372417279774644526e6c727278366a2b5351584c503456764e777446725153594a695a694f6f6c63666a394e39396d583948596a68734f6e6d6d6d7a37534d366d656156324c6c73314630594c467a706269756e44356b39392f736d545537686d45775352767234695956346a5962624b4b636d686d4e3249394e3136744451746c7a594c503543593043523562506a7a654d6d476d5a6a5a61512b3635564566736d5531714b2b383867613865596c315764466d3038303954696c697169385a35465654567371646f305a6d3530766c6e6f3552765439704b4f73654c497969524e4d766e5a7261577a6e6d366a5a4c306f386579637a58697473792b61742b6a4470592b38553275364d614b6648562b327a6d6472446d73484c494d57646d68424a4d796c553434495055625730544f4a4d7a504562392b455a463658335876656e515871747a5a636e6a7177386a314a66717a41574f3239394561536457533674414c6b314c72454f37617145742f36364f427a7a4d7a4f5a483779695a556c74505276584c3956724969546e4c524a704c63693176565a486b314d643754686e36744d62426c374b3570676c794b78697a736b6b716762342f322f615a56654b6570726c615563724d2f4f38596b646e7073355a4574726a2b48527443517054505031477046694b46715653426c4e313672476b31796b5631753136386875377632646b3548563131484430717579392b4d4b364c622b30796974353958544e5371716c4a4d5a4a314b506534527062503861774b6b44784237734e466f585a39664c44514c766b71556d43514b507139364d45695855734d756c5678644a50426646386d4d45696f41443255382f6f5035523335764f54582b56333564616e527a4c417966582f3149686e677034384e4a7738383370694d5a77737a557363356166742f6258557736452f78712b6f624f6f4b505a37326e7830394b5079775036466638415a68786634442b31312b4b56664f546642583466566f444e424c46574f6c58527375717a636579535679584c7647466b363579423337613732476176384f31483548744e73362b7034774f6846716b625558624a546d7a7441456154793866306555555463505154706156644e505a3556553062436e574a543872413937536a623748694a752f5741314d2f4b4b485538416d39505079546c567455612f6f64707a62486b4f446c5a4b6458663276532f64442f414e667975795a6d684c307149317a31566737714f74576a4b3977464f6f7a542f57756e7a54616e347638417947782f6a6e6d2b58354c3431343135723666365750583437725a5746354a4f3334377737666a376658466e7476384134386e7259784c726e4c5948373462675073547659586669444f596d4a7849563338366832486f79735839446a49397455392f597162306e6a47634e446548706a5677724766535978674b6c704e71655a6f633662675341663069635445696c387a5646636f304f574d3775366d727056316144474c6256314d553745356a4a66495576372f4739304e4a596e5779674c47684d536e4771623454356633666d4c54386231456376565746476b2b58496b6c7551316c476932324c715171484a526e644664772f4735616338446c36776c2f384177694f6731534c6f2f724d5778466c386b786146516a53766a7a6c70774b622b684f6650704a2b774477476c646e33507236524d372b674870754833444d31526a55494257336a334872624e507132486e462f49374470527250504a4d3837394b6679542b4d41356b6a39637732474a3437336535527a676e33784b556244414c496e65642b66313673395967734143785439444f36336e486c725a7a5a7878585173367967684a69577a67763443644134567457305236595242434f565863464564417a4e354f6c6d6257463637653843524f6a4f534d3651337558724c6e6c596e724f7847306a5354512b4d584877516766716c362f6569766f3541573536306572766866686336596578363239742b557a52546537363637634a7553696e57346631327a706f557852536b6e704a4437424c3642704f31615774504c58634f62506e333937722b3348346337364265746a664a64473061724f7a2b42523747334e396950794b78324d4e6d314d4830376a705774792f664178352f4247535a3230432b4e496252374c725438493476666c312f66383837382f75366a385173764738477a4a5858594733356c354a6f48752b5656774f3042444c2f384148456663425757746952636449725177315157485243366176374451367450324f4b2f356e4d4f5a336f582f41486276567a30342f4b706672542b546569487264346a7334542f54547a616679584d797464666a76674f7a5439686a2f4263694e665963577748707a58733546374856676b6676572f704d356e766232657474505a546c743268374f2f526e796e306d39562f535478667a6230703871386238383853315970612f46364d2b6856374c6f63346b3661633238383744687278644a32684355375a2b72533150316145645333334237504e6d4c567474745862595558367265682b5736792f53655838505a46564e43564445506f3245572b537a33496456743659464b677037714b306a786a5536584744376c75616e4d2b634f32726248474f4d534e5550555438622f414535646e684e355034726774797449487479737747355236474e74517a6a6d79446e6c654d674c5a55775a7850515a537169617a4b2b776e542b452b586631705739383849476c4f312b492f6a69644b4c446c3841797646474a4f7364576849562b524f64774135446a6a666646705453575a615a566a64583061307563496365385061615732612b387450484f52735634483647654d654965493838563070647171727a4b7a44566f61794d7477376c724a356e4a344a6244536e6e5a63725168774635716a7570517a2f6961497a2b6f6270383576615a7a2b4565544c2b34682b4d7a5078532f49375939506e2b517a2b54686f654f34506e6e4e4e57624e6b74544e355368646878374f586e3150526e3653614b5234336948476e764b56462b6b6d5a4a3536576a62336d6e506d4e4a37733632554b712f6776686c5579366958704266424f357a57304b4764546a6c363159704b55684965744165395366754b62336978756c4f384741363678564c394b666c5351664d504b567a53477971552f6255315939346b6c3875434850464b674c33467758477a347850354f39703338755132637858734e54654250783636623532646f41597134554e63553266313149306b766e55395778702f5a663376544d7a596f7836366a63494336325869616d6337312f4b52723532666b783844534e4c6d716c6a4c4d30444a684d65796853683651476250663779442f4359382b58346530446931583366796b644f5364546947576a7279377135394863396a4335574e5a4f736156437a4a786442666638414e54674e50434867427761386e6e39686846706c4339656b49322b336b6f496b665430576b7235766b376445433256472f774354336b766f4a5433762b366e3678676b68452b52465a6d636434326e2f41416e38666f382b2f4a6e78587757765466457a795265744736364a6e534f62656778376a6c73684637442b78594b70557454775453484530696c6839576f434f75724d527078507a2f714f75486733354c2b7650344c6572486a6e504d504876494e587731666b74654c35617255674c436f2f69786e72357061326370346c795668726456376d4279696a6b727131746339394535427a7a703031617a4d547a447564346a2f64572f4772797a77334c32742f79715050304b2b36386c2f6a4e733549334c2f6e7966757752557638697a3131396e4f783332433539426459794a54643770474b2b52334e2f68377850436f304a2f4a622b38683439735a4f6e3456364f2b4c5650316d7a44477656684b547837787958497a414f6d53703145304d54744346573351544b44586f674948373741655254683937576e73303962446934725539612f586a7935486a2f4149712f656f38695577744371787531795735613974587a5537504a36342b2f4c504c6979364b50312b334453465032442f58317935523063746178613345646c76785739466333305238487a6f66494b63534853726b4f6a7a48794c566d6a6832717476534d746d446d7342586358526e6e55554c324a6c6e644e396434686361657932652f6e314c623534634230426a794d6d6d4a50624735532b63765739646c666b4d564e69713866486a347976456d42304a36435652792f4f48303535656675626e66594530494a4b67383466393762302f7876472f582f414d4739515a666d6242366b2b6e6170396e5334576136536e79624b6a77394c536644466d6b342f38352f497375343132642b5a30326c79644970576d676736505a6332706150776a694f52784a614e6169355470684a6f4d72704f69516c6962767549524e386a34782b394345762b5037567768643830334f48775457493941464a5a792f51486a4271624a4b516d3269492b412b6c4d6b2f38413068554e776a2f38464d3948512b506e534d7761663650332b304e4f4e4b2b636a74622f41477576776b642b574835452b4b733835353254302f3841467333463878316c544b527930356135593573544b695466524d706568537366323674676d6b4f653550512f5a456e6e4c7236767536634f30505a78462f61662f446278334a3842324a665348774d66494e69576a5671387a324d332f774175333672686759504f316556564f59364851593458502f55366b706a4e77716439785876446e6d32396f31633235756f334e394676524c3056394738716e787a777650774d62766b2b6c5575575630754d3133537a6b52773130636d6e7a564c416444573974676539507774487965685247447662314f56725776475a36436e3966306c39497655487a767954783779444278396e523866563272787263332f465044394c55776f644756797767646e3763756d756f45594f637a67723762473630374b654d536678774a356664614969305267633176376e483464656d4e583463666b64423431345a646c376d3334487462794e4b6a50783667567365454e30764b4933317079653579796c66476e327a4b69513736314a6e6e534b46456d6a47336251314c65383073323965765855667a3963765a744450676f2b2b354151766f49353556535635347441716d4e71624658615172637565786146504251652f77435476763841654d375036396a33666d4437366a4b526f7270357749715072516c4b3563692b6d6b38666c665a316c4f67705245693531774d57414b42776d357459544a372f41466d49374a6d6a532f6e58467261414b6155326843696a733634776262576e73376d2f47776f5a3171642b693533394d4a31707141324d35786f336d5a724d7848434942593044543350354c4b3736626c412b68624b494e364e5a2f7741622f7742736e4b4567352b754a6f58505a314b552f46395837482f3148792f31515954635241564a643472684a5877327063787a715778514237476749395a336c7241634f66386e473970442f414c37544f5a527a4541685933704434583464354e366b656e4868666e486b762f77413333684739356a685a486d4871462b7a72713858774e505271377265534b67306b725a5257334a686e713470486659305150696b4f61456766314e3754466254453574344430722f6b6c2f59463949664b764638337a542b326636763365714f68342f6e5a37394830303838756e304b7655794f5242533137667068354c6751676c656b38463651684738464b4c6a7a49724a2f306b4b4f4b6e74646f6e477658622f3841582b49655a377a66307638414b76523731433076545031563850335054377a6678656d736454784879794d636e527772535756437043773952507873714f56793049364c58693162697054374f6b422f313252614c3169305733514953455a79505456617a4f523268624a3371637530616455614b42566d557a55785650433475726f6c4e704b34624f4a2f524952302f595a672f7741797179792f4f7a6b6b626854546d6d764f6c5a594e4f74714d5a59376b30383331657353796e713242336b513841506a65504873706359646d596d4f6f3670312f3264767a777766786f38782f4c4c315138643853394a665466776a784a766c61764676505050732f4c3836386b78654d2b49744e4f4237327371762b72614c557831386d57304c456f454571655056342f77434a30642f7536383172446d417966415950556b663267304b5539646f516c665163794f6856534d364e6e5863766d6c55356365702b6a446e776539354d4d73356254506d6f32337850777377504b2f517a45395776422f49504a5238703072646b6f394c5a6a7a556547756779386559452b4e42566a5373706e38796272425971614952483763446c6b74546e6e51714f7474575974737449353931352b6e69585777374f5438656c6c58305161575a5a4e784177365139304a47394f59326347585147704b433650516e45672f66363537484c3975334c385061472b50347a423643346d5539336e58686c766c31656e4b6562356270534d4c5376793558646e76376e3461546f354e5152726c73446e31754e6e59446d6e303071534c6d34366d2b335377314f386a686879505631722f54765346754c69626961764436454d6f5a6f686e3062444b4d74564c6d69442f77435537377079704d5647617a704b66725464776d4870467331786671505a6e3437356a354c344a4234376f374d4f694d2f38446a46626b76374d367959546c6e426845632f763458362b51514c2f41442f7836482f76502f364a655a4d52626833534c72796637686d4234676f736a4d384b7371664e2b757a72634d785748517869782f77363333474b7849523733764f2f2f51642f55526f7a6270624148522b50666b502b592b73362f7741676252344236644a654a4f676b377a746d776b6d386279636d3958336f384f646e66317a2f41422f2b713976394d31302b6e4e5965636e2b39762b4841666a722b52506a57336941576e6865716e68455774486d477234724d65374775586b61614545582f4144556c7631316e307630426d4c6956316e2f506666322b79613058706965473062792f2f4a362f556e772b2f42395776512f7a4c566752626670592b6c347a69334d392b767253334c4b445244504669317154704a75626e6a316a4f6b3554557a6f5731684e44354d2f624b3831627750544e35797943504c6f7a66482f48356565523970377847433241354e6e4f52526c306f5347585471542f41435a5a42565250587a6e506a5531356776332f4146694c756e774375505258796638414a6e7a357547506b4b2f4150446f59486e6b396930633262547161764d79346138647779796b667a46307168357a32502b4531346e44642b366a6439536252534f794e6b7655463866704a346858355834792f7a4c553875312b35376f6d4f3050677837724b7477676472763154712b7555726671732b55452f4831693956726e4b59756e392f31534f615a724d635471726d487a77647961356d714f6c57574447786d794e574c4c592f537633734c5331526d6e572b47536a536e2b72734237456966546f6d3247704f43564274343277385976393048383176576a31552f4976316d2f483533714151666a76344c366a306c3433366234353858347458354c466b4c7a71797030595252547066466f5136453836364f414873534d36674d50392f39656c6f615661307266622b3074336a51575079333075657a777630375836575a474835424e7061736e6e587153477a70487a7a47585130453630537a69314e493872446f53787943343948564e4d66684b623565574778757378624e72627548345256486e6e6a2f414a54344473503850376e4b664672705a546e644b4b513857354b32736f58564978547a436f565475454765786e5346387865387661667342457850474272356d655355595630726b303657646f5939306c756670354e48637a587a62382f6f2f4732505167637331734669556b746e373678624f45775339784837393572452f4d66304c50374d763577656f5835642f694e443546366833782f2b622b452b6f452f7068354435726c5a37736e6e6c6e66486c2b44617556756247626d35363557656f5653664a7031455a702b74582f476d5832546f59355a2b4e37546f7870366d49374d387733743954665333302b626c614c724e4b646b45675450546b375764687a716c446d305758735a7035564b7a62594571636579557547732b6d6e32434361654a47524f4e4c7a6d65474a6763502f77413950797638432f486278432f467a616139627a58794f6d33555a342f7a54543354656844484e7a7139474547645571656a61304b68397952344845674a71454b30697a6e546f3663336e5077447949655a655165566571666e756c3570354431447437796139444a414a69724973654c6f4a374150336d55454b5978643751454670396a526366514d69373077394b4a69746473645a4564386a36313165624f337468535a47644d756272426f566153535333364457534b5950592f68594d4b665a3752425848636d5766794638684b6471427348366334666b3666546265333833786a7962515a6c5537554f78735a32446f36775a4545684d6b5866734f7a716a626c5a4b553733366148434d4f7a5838416145704c706e573078756d49464e5034714b54563464697175696a6e4e576e55792f724c2b62615a4f74584d73466c316a49366f49364f69302f334e304b657546514a59615443395078723942504e665762792f4d3050417144384a683850707a5765542b6f656e45773165493537577262445531756350445470496e4957414579576d49474967534f6b72355976654b786965626350584c36432b766d704c71654c654b6573336b2f6a376649346b35777a2b586161675244356538446366627366517a79706268366a474d576f77704f49413571396b397961765a306650314b644c56485164366739517648752f517950464a2f4b6b51486d34506b566b2b6258546a7279594d4e756e6c624f6b775842526f6d4b3070514b564762506853302f65786932486742512b6d486c57444a74572b654a385a68784d335a585972766a4f566d6e6862726347504c7356537a546f776257512f597347666e5664553970716a55464b2f74336b34356d596e7048416144666b582b574c66474e504b38573864664e71655536562b436a4a78577836514e51644e525152566f2f69596e4c6c6e37394e3072666b4b69666e642b4176635a676e694e716157597a4938696e356765662b652b71487272355a71656f576f796e794b5059586e4d6c58704b4f765075616a2b516f7937536968574d75674e374753555543483748686b58776a3267774430744b4970544d6352744c2f6261386a683866796658545570732b692b2f4638657a75455a462f49564a30375638786742714d76693830542f5445334f557668396b4e66544c35686b532f4c32694d7a574d38494732362f4e6562436e61394a44524e2f4d646157537279656132775733686976714f457173744b6e546e3971476451795676706346544a65563032464e4f764d484e627a55504a34664876474d4b6c78362f6d4e656b6965614d672b7a716e2f495a723445366c61484a587937766a3947705477474f687142644a397050392b387954474f4d2f434f742f35503841354a346e6f422b4b585048632f77416e794b36764376475048552b4b7978533432565a46354e346c6f446f7846704d692b7575375364524f37347759564276545a77373074704d44506e705362366743656858354a5a6e724236612b476c356c736e52342f774357545a53346649727a544c6e50703175465842626b664e6c3858555534793645374630664f332b566a635355714754764c6c3662623567645a50496c656f6a2f54667876315839423065496570486c474a6c3556584835375a382f627653767875775957526e6f5764624c6f6375496c6334716f792b4942676d6f6c2b73355839633059336262387452353750795439612f58503144304f2b6d5476526e63386238704f6d763764666b2b597364444630744732466632574b386931712f6b47625379466c4f6e71763543684833682b48746267423362536c4b3832345574354b2f774175384b783872305138596e754c7a5031453038472f7a392f69644f4756477870696863492b507633692f7743766d2f49507475714a36375566582b5835446e454b4b365a6a457a4e35374e5279482f4d6a65395655657036765444315a3865386a38485a36624a3073714450757a3638714455545465796a653159334b6c6958646a6b533144413255652f5a4448564a38682f345642316155563237713832346253663236763750763554666e727130655834664b505354386663757544473066572f7a48506454426f4f6a366c5776483665654b4c59696a7a4b6a6b756e64783570636377482f67326b464d4d565a3633744f6e705678504e7165482f77436831722f755865764834782f3279667857582f624e2f4464466535355835726b7566363262544864505a5165724e6b356c2b3535592b644e6b382b315a4c34394c3832617079676e6d70426f66436f706d383539436c2f614e58332b70312b4565565478336c755138375a30756e546e483752306c487a5354503844714a714c7173364a7872326a39776f53507351775069702b79376b395051622f58644d356e497344302f7741562f6d766b6561475a4c6e794d304773486a507343686d664c5331616d4378376563597868732b314f5371652f4d7868304838744a392b754e5a6e455450674e3150524c776656307679643847384a566a536f6b3535446e3837576b5a732b6c6972574662754e67794c6e4333536837395079425856776b4158397a66654345742b635036706159696c7067663044767831386f3845384d385238563849723956504472377337786a4d7767774a764a51627451756f78303557614d2b654c7554757a66345842754e5452556b762b34507a464b414838336b586962546d49463136506e586a6575626962745137792b71635350494a4b61587a5145794b6f6c78536a426178573053532f6a53537748664e58314975556b44345a6631545a6277484d6e38382f566a3864664c5053503152395037746250387a3873324d54526e3076482f4141324b6e66316e2b56364d747a344e50667a4634394d6557787735596645355a436b7743716779617033755476705631497457657a454478665a6456486f76323731507a7045654f5a655a693669713030646a4455726263466b6e314d356638675435637578633835664a56396e763644734142593654347739504f2f6830774f55476f70447139536b513650324c566145316f5563564947645466567961396f51776749314f576d66703936736666377a645038582b516437426c6c2f484939545a2f7272546f70524e77704664736663366e76315871344668667634574d466a52486745667a4a4d55304148756f504f336c384742746c70372b4862354c6d586261617454783039487841744e43586a544932586d704b796f6532542b7a326c394650744176655966352b2f32454a65372b7373634d65512f6f6e656c58686e706c752b6e57486e7a4b78302b4c5a2f694f6357616976384156423052737a4d2f39646e636f7541564856554431592f2f414c482f414437663638655a6e4d634d3536694552345870313663307a31775958692b6a70624e4171694b4e4b507438706f6438456b716668496d66494c4745584f4233324237502f77424839534d50576665773450544878612b6d3948664a633779485266486b556e4b66626e64597841694367426631535034656f4543372f7744696d5836372f5578457a4d524855446654487a2f307630733248796172786a785846305a475455756433782b674b48314b345339436234357859424f57776b447a76543666665a2f6b58422f70614a6a6c6977387766392b3674666b766c506f6a3568685a4771666a794a764c76487444796b637834354d75716461644c5077583651724953752b765071644362763841734661506437652f35653775396b6e455772614f41383847752f756c6f397a676f6c5a585975536f694d4b75664b766e75356e6f4254306b68692b4639634f6339697a2f4150687a49523876546133737279784e683659762f6b38586f375052442b536e712f745a316457646333787a30307a6d696733574b4852754c57317163305a4b4539536c4c4d2f5359513870365a476171442f58316e6659346662625939315565674b784e44704c706a4571736b633358314f696d342f6b32384a7567375158343679393951384b56612f354c6e796979623955774d79475853384d5846784479752f337866414e41665644307638415771544e7362696558654c4f386231575a3266554f666936336a7a3168685155337453733539622b446c6e6148666a57707666764c4f444f636d6d622b7652396c6e4e4c316e34527a742f4433387950553738572f50596f50464c64532f787a5931732b75377868764b334a5672384347666a38314e71794b50514c3479397a56416c644a7a66433458544151487471614e64536d5a396352366c2f4550376d506a736c474e3476366d59615046396e457a4b75305a745549482f346c6e61685461614e6d57713350593766756868734b5150624d5646454a383751434261464650424f6850576e4d44586e6e393068652f4e523462366163326c36576c78766a78443438324d4a38684e76772b2f74554e30715354536e51484e424d61563071417247446f6a4d787a69616a51373754363965596f663033394b505666384149447972493250554b4c6238686947764d33644c4575795a5935696c67796436756e4e6252724c6433596f554c4a78706151646f442b564573354c62676e5746725772534e73643437682b6c767069654e6d59327268424d762b462f6950487647503456636d586b7842426a72737974505075616a39344e514c30506659784d34692b485944744d36584a4e4b655731752b306a7a506633795052623859765150316d3945764b765358783254777638676655544a302f4f5050662f414a73317854594f66566a6551305634506e4b63494b337a77377854704637666a516c4668654f4e4d2f323737426e33657933314c3174466f3356722b49634f2f5554316b39657655656c382f6d6e724a366d655778423868396a32764e4e365448786c724962396b7a793876364f664472414b366a70366d466e3247544d6561324f65593936713170485a72577542517a54704b336c56767a304e31434b357431466c2b7935667a7756635376515255344f664975455353416731336564547a68554130775a304d723850566757757373767135757948327530497752614f76456f5a74413373564f6c316b764c492f6c4531644e4a6d6245746e4a78504e5635745733574d534838487052356c665a57576d374e77474f4e744667562f647a776c474c542b743269624e646d68797a3458537358776859306b7153626d67412b342b544e346a70412f704f66326f7679436636362f687a364537334e462b76747a65435a58696e6b6165307971596e613851556e423570374e675554304f6e707a6364326e4548474946585832556337375455722b7643396f7073314a6764462f49553563385a445a646e6e423876772f703476364a7a52715857664d3165623731527a7a73537737552f77447853464d344477452f34486750466e2f66712f74386e36482b704e7635672b6a47505a6d656a587162733544665544423866692b5850385339514b385364736d6e54466d36436a7738485673544f4b657245754a752b4f442f4145734154713954325457333139336274563643652f3841796476383566474a387631422f4258314531465a7574356638506e33704c596872685635556f70686e3874385357762b565743394248772f64584f79715764384f566542456665434a78375a70544733566a7534535051463669624b364d6252385a5a487134534462306f4a4d2f364d4f594f644a522f4951787473616c424663786b2b6573535553767279705638315258483731636d4f4f6538636d505858306d772f556a50374a352f684a746b746b6b6968703676753574715a5242384c582f7933593364793831302b6b535a7873616e6e31724a506e4a726b4a30732f6654744e59695947672f6e6e34715265442b523271394b50552f7a48786a46624a7068334479393365474e3145737836452b5254764e3048566658416172766d5a4a4c38387a724a70475751526173376c6178715a6a6d72786b546e30712f467169736f4736476753764c764b2f48712f446648664a2f4d4c722f4b4b49713663743075546f5a7843776b7a5a4a304476652b626b352f744d446e664a564e2f6b43312f396f382f2f6766706a36487a655a49722f494c3172623437623478366f2b523550715436574c385a386c302f4c61343878587a36392b56357467554f524864527251325170414f2f5a41456766446144694d2b79623278795637754676354471582b506e35642f322b505354784c7875667755572b4636506855766b462b376f304a307444663841503472747137533865384a71304c4d46415744424447613132552b78723233676250694950616e6e7670363170357562634e682f467679672f4637795346327333386973566d6a6e622b52732b5959645937654a58356e4c354b544f77486961477a524a32377972463275517550737a457a6e44626f6d6b565556646c444f6450556a6874476e503977663867664566554838592f486b2b482b6f76705435792f583952396c2b393474347a464f37523864756a78574964756442596b5470376f636376653667556647547250635841506e7331306154477078724e5271722b455839776a31662f41426432382f786c4735434867315a7166546b2b527472716a38516f6f5a526242643436556966664e44793734374b507245564b537877364e4d3377477374645852727152467534656e5030332f4e5748317777736e793276516a74386d7a632f4b78526f79635353794c7379742b71354f2f34784e636862616d4c6d5455597058473835584a70573574426643342b43326c7434543147326e34362b75342b62375a65466e62356834316d655052786a69617433493876787a363941664d666964756e6e4a51454a4e473875794c57385474494961545970545a7166367a314e50475a34534f4c2f774438704b394376455639394666795379632b534c314b31717444307439534e654c557a487a65544e79344b482b493353636e6a6d343753542f4637555861766d64396b2f474253487a3958387739587356753154346530504c4e5534655638555845484b704d306a47567458543169366d555445784d616d4348755659744e58666a34445473587a6e764961522b4c73676273663239764476545031502f4143643843384239592f485a2f4c6647664a42386c782b7962564a35326333646c79563135584552344630585744307061704f4d545366776e6564674f39706b784e646162567061314f6736652b75782b6b336f50346836612b6c57483654654f5a766c576674616d663542356e343734504e42764d7859746d6a6b58692f6c4b6335386c4d2b6747686d6a78725531386745383079445361587346335054646562576d77304f387838693868386e58464479544a794a636162506e6d636d61674170553837722f41477a74766e6457466a6444636454783539545a2f77426d6e346759786831687646596a6f4b4b38363857546e5a4e4466354c506a4b6d76375a4b7a2b646870793634756962614d7865526f57766f594a4d2b75306d2f476750684950736e636272463242752b66506a384a68386c77396d2b57686363475a354259664d764e2f6c6d5335553673674d505479336355754d312f784c2f3351715a74487a664c37545a416333597a7877497236552b572b6164537971615a30574c625649425879426672756e30594473756f3255336b56425a762f4a52695a66474d6a5166386a5767376e2f435969656f326f64745a57666d4b6c38727736617441426e3274585230374d326a7073326d4d5671502b31533372344c41487949566b4152756e59674f2f445753372f7354303576683750727847756e7152364a34763850583572344336756e4563484b713835417864624b2b563163705a302b6f6534783378387364476d65596a4254327830712f596b7053573269307a4d784d596d42704b3865494653565273654d6b524d6f6c52474375464b436e5567546e4e6f643055386f456a62386244457a426e2b517345683531416b5a744d5a524e45374b2b6b785239597a737749633268773364725832452b3043757759324163682f6f5342667348726632483941465154704570714970317a6670506255632f66483830414552343334755346387450452f4e336e534269774e503841755037426c37774f38532f4b633276374a7775746c4e45706b30344a6f3665634756424965744b69596c5a55556445534d41536e3247776a4f5a684b7a37666c675a4c54536858597231507a2b753463617a554650754c69657372696c6649784a68635336324c4f6b506154762b56304559462f3247767a2f6237423271786231716d62336a7852337370504158544a6479523954675a5252634a635949636e397a444976595a67487a482b6a4d426537387849384c48314b4e56326234376d5032644b70643268526c717a6b7265715568326c44387665354c66685a4d4b306e775136745a6539744c5451744e4e41316d5a6e7277774c776d2f4754314f314969324330386d444f7869734856625a7635394a35705a7053794e6832535735447339664c72422f2b6d65443158765735337a465847322b6e764b37646f324339446654667762304538703864395338723146327050556a784e72366343666b497079387975634d4e6c6572564478614845773439437a6e7857444f42682f682f77423733726b2f717437573149327a586c734f3958346c666e4c345636314b7238576f33734d35394a6d55486b6668696442475a3734614f526c514f546956706b34557650614b35513556302b75396b6261587a6b3163664a71615530356f366a64544f2f456e78416132336548305a58706d693130326e526c36486861546b2f6b6274482f79424e5032746c4e463264686f536d4543622b2f6f574e31656730315a774c4e3250764a372b62413352384c2f414268394e2f4870374e6a6e69766a486c4733354653475933566b7a6e59543049724b72626a3056794a79622b7545527330457241367a5331594149423838314a31556d39703462754d44542f774261765837785830637630315031704c36456658504b7938792f4f32764d4e4267374b344131453443387a532b7178465668456732452f774347594346544866384163557139644f62445862306b2f48566e397758777a7a54307139526649744c774266712f676176694f54354b6c374c7448784c3272385a386938587269686f7536476c52376b3559614576567059764c616343744561456d52365776376d6132727a6252355166586e38522f5672305839656655503866504b504763356e6e6e7031356864343963724e6668646c306a6873595744646d6a3970664938642b62726c5238784b414a306d6a3542364537785236476e713174536c34747932467a65436667467363517a79443156395150462f43386d524a677a4e3862527a797261706e435a4a746b5a50646367526c564873543850365833302f44656e6e422b452f68375732744578694b69636551666a482b48506a6d656f4e6631463952374e564b4e56454c4b63727838386254342b6539737265795979305079386b4a35302b347a4b74744841463033502f625156666536307a4761344676346634312b6b6e676f51374b66417644392f486668496f6d33614e5079547a7a4a75573369367973686b3137526a712b746d2f58574c4e56583032457671526e50716c392f71733374504362445250796a58792f4e6657547933622b5753584c7574707269783847584b6a79737245564f795358497838544e6a6b686c546d7a69354367576c4945656146484f6d493936577352694967656b6a2b32593730792f4a4438504b765458797a4e386138746f394d6450533950505066453958782f783763653378375530312b552b4c655163794e464e413539315656777954587073634d625047415034766d3558332b754c583355314d7831747a43383450374a48344a655a3653645856394e765537784d45354c645665666a2b63767a7644434f47534571667330745978785864717a36766b3070774f4f694944764e594c63693265762b4b316f6a7464427337364f663266503765767070725357592f6f75723142306631343335462f4f6551612f6b2f6d555555754a466f5a7079526456715764576d31302b625852554358546539777a706e4250444d365437547257347a62614f732f6d336b6e702f2b50487056357036742b717a38727762303438443864485232725a7339454456354f6278666a6556346f4f6566666873387030724a59736250795936666d6c645343704a41593476667a375a314c5672586d7449385a4835525465642f6b42356636752b7132546a6a34547337667168356436674c394f74474e713776342f7970367a77384379474d69644235444979583243496e484971326c6f4f637169676e552b6c544649705759335474326972504376556e3059396f556572666f48672b72666b506a4777447366556e79664f66486655672f4c6b586430475a35614d6d434373485567476979377142736e4d677054527048577755642f715a692f7732322f3045753958667a647777385032666c3855386d7a6a765051326c352b6835426c4b35473757316b732f346d39714832314664557a3453343533756b3979666b4f54676d63563075506136432f6637544d4d583566346635572b5365613056792b572b4565415a4b504546447a2f7351322b58383070746258304e46384b75325433517a364548554d34324e58332f414870576749684d6f396f6d644f326e4566474c54387439457654624e38716833664b384c41354a66504a52627376356c4979575a5339495a5735656a74576b5055797273793953655762685467484d63706d46374c703236564976615934445a48473948505135386f4e774a4675367a736c656a59644f64614e7a4e4b5835614d79535052554a3161435634733438454739706a6561703647575679664d476332314a3638594847372b34482b58432f52652b2f77424476515863792b2b564f6b6c487a627a6e4d45496d59754e62624c61474376507931384354576e736c73365a2f3454527050345667465230697a7130645064472f553748682f5963472f497472633875315331664a64656a6633616a6f6f3062743673713954525852624e5772356e31563963797332503674584b67396e4f556d596c37474a396e5a574d56356573675479586e7a2f47456873634b544a726e4d6e59796e36394a564d727a6d314b4d4a795a4d7a322f736e5036422f6f79365479496c3348354b464f362f68394251395935304a664d3475793934333557453334524d4a574841533073344c662f6a557a6464376b6d487344655838502f37686e356566672f35416e79503045395a2f4a6644733037316e71656e4f6956586b337039354768585a79526d37766831564278564c4f586a466463744b744a4a675a5231674269523832726f366572474c562f3768374676784c2f38416c4a6e6f4c2b59506a49656a6e35552b6b6542365a65702f6b534649547459336d7a737a302b32664a4d42307463786937534a566e683956546e453550655755674251484e4859587652332b764e31505972366337744f32366f366c5165536553656f75464e6e65695761666a5068534c41685635754e4762346e34726254705a6457752b2b535930395a6f5a72466b566d697676784f562f4955315269346a4e724d4d5245787537514b656974667058344835597756343276366c2b596d57666c6f38787a714f2f524c7947766c57693253756e6d682b6d5a7647555a63315666774162766d6137374c6f7a63525262644d646476314851766d327272487344413146736e715a4e6f4b496a6f596d77356d5a796259317857636e68656a364a635952792f436f77346632516d4a4a74794539523545644d314d6d524f77626c4a546445686c58312f6a74754f68707a313869452f684873497a30696f663978436e762b34584b452b4d5250574d67704475726657425a37323156553055427942734b7834497547666c6f7a386f476479574c715a2b676f2f5642674d334f4a4367766d347175797667467372796644334e766d577977673156316142466c75436a5066585079426c4765394c32796d7568594d4c2f5a337066722f774253426a6a4176694c2b6f6d4a72584564776b7874726e4a5371766f324a6e6f46362b306f4d6d5150533278507534527558796972715a2b7346722b724362374c424e7867485062634450727966656d6f345a4a6e4159786c74714f577061336f74475a6e4f38544b494c64786135316950514a7269544d4a395343514d7753725677477a61594371654e74646f7551375151305a53725a4c517a39567a4d58336b2f55722f414e4b6659594b6f73364c544c6a4672495035705839346474632f39796e3875384c34484d565a366b68717459397a6967356c3135474b66464d477770697a5a7830486168466478627659347a624d626954375a2f5a396d2f77443666532f686761475a65746a5161436d393348507a35484c6a697a3471413044426a4d374e7a33545456614658766e3862726c577a766564707059637a6b7043655a73627662754e6a6c4f30706e56387130646c6649494d584c504953476852634b354a786e5936337943394d796f597975682b776c41734e44766f4b6e7050726d674d504f4c45795048466146495a4244645a6c4c7a7947585256624e6b646a706a715a6f527358532f492b476557684c6c2f496f6d6d354a2f4e536f6b6a5a315649574e347a4564336465616164634173305635724d7a4f7174667a6c4257555879637947334536664a30714637412f47593052754f6d395077326365627449674e777a57346c65695647702f46794a31516a677a4836765a35732b4b78577947707032466f6b3145656b32566769546f5453357633444450706f4856417a64664d6258656b667166465a456c444a34306745646173756e4830374d5850766577744b71716a4f7a76483951654a6347574d3944534658316b6c6a6d45626d4d4f61616e47316363593641443557336531387254745458424f7a2f4142616332525a73745a705a394c4570434f537449395051304a467366386e364970715035673166576e5a52584a5061753336696c66554b384a71614c35355a58393566326e57576e343150794e48494b78697469726b4379666f4d566970716f5338465443316c4a5570554d62436454654969497841717a577a6649447a48792b3271692f782f3557773165503575564d637938786f777479622f41434749526157704d5134764b615a472f6f4173715637334a716856524969542b72673141326166734c6b546a44624774766a4e526674504a33486b636e37734d4c364d54394b75576f2f674d44373962676c525a595574494179773054356c362f493549567a5357504d71353755565a50325a45547951795439386b594e6259615061375734532f77422f357955714d36665a50542f515777634133696864704d6d4b78495a5768715a7a4e4e632b5147727161687977574f38687a7a6e775a772f6b6e394f4356416d512f4b756b752f5550686849352f434e533743666e2b4b3431547159644a46655a7a526f6c475a34306c48547175796e6538792b4e64316a47684e77793972394a50474151416f50366a4d5a7833794e68636666304d584e75576e436732313259716337357456394d6e6b434e6e533859696e476e782b76557037543978476f576777523551525357556b3133776764784a7a74465a374d385255486e48694e307255362f6931593376304e4f6d39797a2b6f63586b624b37364f3870506e4c4a2b324f66477a4c37786a6c4734322f75634e49584e6d534671326e4f32656f312f586a577775656d3145544d6e5550576f556a78714361477a715a69685379646c62736e374d394b736d6f313959596d487762796b6f63363659516d755075426d57317a4c3868586d647a4e4f392b6a55797947466d56702f6f713736646e6b466256677463382b665850506f4e2f51787a4f736d70732b454a766b634632783538656c34786e305436574e6d35345372773745307955474e576c4f395a36644b484e68556b4c6777624d6676457059374f5a2f47396d304173493479494a3334466e3065624e38623846792f49365044576247396c35712f49642f58675646506f376472474c33724538716462526f54725437474b574441363131447256463750384156535978786e6d6b584e36722b6a326c364c62317670316d65707668766d304f5333336c356a346863734f624d67543641717a6f78305a58784a705a47633650394e717056556e59317850736864625253747431643056327a36376872664d323233567957565a553834564d334e4c4b306b3663636b4a4b2b3375567a6335665247616673535a4d3266715469554172366e35574768317866583174684964433943497257386438444c2b567673376e37534838656e555670614879317179724b56564d5a766661625136597850344d516b69436b307a706c43423755753734396c4c7a3941746534795754384653745732724f6d70736738677632525a4c466d6779644e466a4f414b334d2f58505971616862706c6d7979496d4a364373664b475131484d336970737253786c36325a386b65596566646d626e4b7477786d716843366874304e44714c6755704365556854374f7461772b66526449446661507951717a5839586d637a6b2b5770336539455630546266385954502f48646650347450757a645a3365396f44363041787838702b62325149454965734d526461747969716f6d62675a7a624a577a787551756168776e6f5455364e597647476765737951657a6a706e5671735658524855416863626a30426a41524c3363526d7a747835477234303871644d3361316147776a492b6666314d79797a3570733857316146446f75696c4c5656324837506d4e536c74433950486a702b624d78494a59756b7054594a6e4b6d703863713046457457504d3354566e62517a7a7064524c3563396374495a617670655350765454326a746b6251744c7853364856706b7a70723866794874687962435a78346d5478693054754c515a2f69764a2b5233372f4149333450667a726d5271732b57314d5a66504d6564716438514a523548504e754f356b7a5148626f36453274704263593663376d366d72566b39666b527434744d79532b716b5a2b3050686f61445454464a4a656c4838632b735a727a64776f58796e782f6b716d6a506e616a457230354a547a7550796c515931554d327074337733552b515a4d44487248356e663567482b6754397a68702b76494a37445862793564644f2f6f396f31676f2f55585174716c6656412f7741757a6c742f654c656e562b626974636e616b7346432b4b344451636d6e4e6458777a6d6e634773766e434b35625454787833364b4862756b576a6d55354864584f7a4f387a546a64396e54596f2f6a71474f78376b6a543332485334486853695036793971646d42543055386c6a2b7a4c7155764d336144554c4b6c36564d5a56626646766b4b7a536e53413053386f376e424f46645062694b616343355144676b58594f447975397062426c726652616e633161463663556c3742796275614765416a48793161335566714e4d49746e59532f692b346c714b4b484e7a6671526d4d5a7a774873452f4262694b4e50306d677a644242325a2f6a552b696e797161646e4e43524d336a7565374938666c643753676a5a4d35695845726a796d2b3353644d77304246326c336d363353337a6e395233493863476d58554853796d3532757975636c55373031756b54767279614c43674b325732684c74423362457a39357a71364158785249502f557a336c7a616e634c526f6b3676434638756871766a5652647a366648643671656e4f75714b4645665a34316e6c352f50346d7077547253304148484a76786c554b6e66316d4a56526e344531523157704d5a6e4a63544959754b5144586a5250564662504f6d77584a4770644b2f5950732b73444a6a3937425438302f514c3831344a63697971716c6e4e42504e4a6c4a446c756c62796b657076732f39516a714d326c4e5677503177484f4256446b6b54566961445345516d38785a57664d3263777a72586149464641434a624552555166496939435664735946676b7947446a75543837303233334a6d5358773945774d2b506371324d39756a666e4e7a6a79366e70755952484b56756a4c5870495a546d78346c6c4d3864692f2b3930426b625949386335776a38676d48394f676c77353264545663786a684a4335325767786c6d53396a577273682b626e506d6e614d736f5a3836666a45706b44305a6a4c676635755038416f43554d673031704b755576676e346c4e5a794b73763479324c36346f4d50714d4a54707a74716e59686665414b767242382f2f41464f4d2f6f4431495a73576a7a4869646c67706376546b36497061435251325a446c5a387831554e4a7a7268595857444d526c2f6b4a564637534255526e48486745654e523179614b3073567372586d7a726a697655693658723135764434334e4669324d54794f6f584f51726e744c67476b79354f31796b79477447394b2f5a445051617554775446383859364565524a47484c644a552b656a497257485a334b6e48704c3577584c4f695a58782f77436c6679704239707766755a6d7a47784353544832746f642b4b686a61574c4b6f71693766385363316631394e6678556577615738762f7744743366656f5145744b356b68486b446c7a6c49567a3374717263324e6a6c726843714b674b705155354a2f59782f695555782f3475535371506c4f6669774a707a785a626f7955646e4131784d4b687665702b744c53767453726f2b456b54426665577564396c6f6961584d673749333269735541424b672b3535564659623878644654476337384c6553696e465755334a556434747361774a784544443530535a38684f58796668674941486435586e6650586e35547072666852526132706a3266776173684850637668637a4d766e762b54334f4957447731746f544f3444704d2f726741466c6e6b756e585a563434704a34707833395a586f46787171756f615656594e516e46497270666f737a51373879375061777a543868307139704d78485763422b476276667a5346614255444d705568326470645253724b726f545a48376b766c6f44736b2f474a585077673754317a6b30744e7a57683872497a474d353443653877386b324b53367a454e427968544e32683862317a42336f71435631527a63393148497869396e47434c4f6742633731704c593435464f5a734c4b56354e4e38376e515a377175764246316b493554545336767362794a5a4850375349526d486754653335675748486578504a674646764f6f546e394b636c554b4a445869644d4e7461354e4f577454614b4968664f7632437a54464853354c52534d68304562566e3339744437564e7834514b5170533538744e48646c5266622b427279677a2b6153436a51767638675656525a2f30526e6c62317a4b55382f58656a2f73427a32584d3048307971322f2f5555546b6759344a6d635233533578685a31624a3259765a705a2b4a6e536c764667663167446f665a2b59492b4343445556324131584c587558516974774a43695073307271786f74334352576f56395349783646794f6730776348763841623176766432622b674e33786b306130544e446e5456772b692f744b3376705677496670626275463046694b59556c317a506b563169514a70635558624b7753463473375544497a4a48796a4a47766a587a4b3471647338307443337253756967576a504f51755764483766535077304143545773486e4a41742f6b37582b796f676d7a4554644d32684b6675343776644b327747455170344a54314e5a78337556374a35785a3963414a674c4b6c3753795a6c302f63795369487079425259333743636a4d2b355a4139712b73353862684151486c4857386f55725948717a49766558415a4f4d63755848644d3769755138585933374c634e6f3661365672314c4c5557316b596a4839576653516f75304b536b416f39787a4f4a49674562557a504d4b7456325852396274646d523866627353626b3975594230314d7465643376543864553072312f62656c526e53763544594c6745416947672b794a646977446d63785877513057752b77324d4a455130614659427161444359554945794d37514d492f746639655a53754837782f6f4a51756c746e3267577a67643158766870433771306357552b52565655656c557566324439704d6a693666415a385a636373316b376953414877784f644737717066666f4b56393337484f7471374a56667a4c75376c647575537a677838686477754c65746f552f636a452b3055445837515244502b50547139317872564b756f7357682f30314369697047656d5a68553863356361566a5243617955437a706d416a36626943634a776b79655772374d374e5a4b2b466f316737354a7039426378374833484f6f476d326872686438325350786778616d4734503841596d6c332b4c6768486e6a776667453957743246766567364378376870306f327063736f6a6c6d2b31384c6d4b6875744671657349666a6d347858375033713648456e2b36356f79586547656a564b2b7062562f3577774a315353776b2b616c63315438527135623139645a507a4c58595853435678494f6d51387a746a61627277362f5a65732f503942777a32736c3338566f614f2f707558694e62713533557972766a6178394a6157526e3057356f66443267614a576158734e6942306c3963665470756639674b4f757378306a7541562b486e5953522b7049724e65353143324c7973696758336c456936696257783830736c4e4d656552465a504b7031522f59746374742f537063542f3652614a364152466d572f464a494f6651693152616959486e6e7049305256346374355758667843707546554f5064503153526534306e6c6449763235337a6473437156367541325658483052717a364f37782b78693771463036715a53755a5270507a2b386e7a66693738556a304b73374e625934594c674662542f71764c627a774c4178504f4e5563747330666c374574336144324934615a3338796b3661625a625575784c5049624f567a35714a5a3247686645707669487152594471334f545657592f4a362b676344723669666a626c765332307458716c416e567269767936746a504c486f6a386141536156634b6173317975726a7061517565334f656254426a67525472756b4848626b326d6b632f7942476a52715a70356d4f37586f634a3574464a77354e63395744464a576263327038724a6b69594941666b442f77424c49616a73746d72747a32654d426768506a75666132726c513564694a4f5636464d7a4f4d3066676f646f5a33386570326f4b4264553657505763726e4f4a624b52396c535275556154742b303959457838426b2f62505a6f6468324e526a796b37453375792b78532b647052697964356d6a6f536c7564714c68544d714c363867702b454b506d55796e2b737861326a6b5a63565137324b534935303534516330526e7842644f6d56724f5768464d366a35502b7a6d2f43616c5350704a6a744a49395573756578494e34706b302b513867696c315472317448697448594b4e3143306169303539766a73697259614774684b595746594d4471676b566e4a5941757534536247425a6e6a73476a4b692f774377326c716f4d366e4f7a596a66546f30667961536a75355a4c4c42444e313153682f6a327570594b78725a6d6c416c55796530482f414645784539525a6d505172786831694d654238476b7655767a575369484f35544c4849587355364d656379797269617079753043534a6e77716163333331576655427a6c78614d786758446a74307a5648734f7a2f346c6c2b4f59636f6954706c6d6478374d62516b546c63695a444e4a6a366b69786e344c6e304f6c482b5039796a6d393770714d37634f587567544f4c53627144725a656c6d757a34755251566e4d324848696d7a4f797a434e7a39576c7a45734c35495830556f5374726a6b4451722b33775a684f684e5177386b6a3336613179785a2b505a71545a7555316e567853386e4c6d556d796a502b38505746786b72714c70586f5a336f6b51665661354d6b787a4c2f414b6d4d5a343942725235534e315762503175567454497a356e5059464538634e52346d6e755a4c57564e6b72577464674f4b653433474a4b443455324b644f69424c766b306a626e6831464b61665973386b2f477a4171584d39745a7a39526d375a62674852514e744b78546d3055614753784e51676c58316b41662b313636506859734558464e2f777a4e5464377078784a456244376254706a376a5a39756f724f4f7a7a5238373057473378764c314c5068637537345766433275732f304d687a756e473375445479664e52343168775a394f6776795a494e4764685a744c744c506e4853347a6b53346b7557487a43566c6738555065742f6137507330437a2f4145715a4d546d6575305153596b3337462f5661724b776a306f307a61456c75525a4d5a53527372356e333437324f2f6a464d54376d64706379353466774c766c53747662456e6239333638525a766a2b443257566d6b7a557934786c647a5272736534766a6c2f6c5a7035346c4a2b6e4f4b644b666d686f4d496c43677956384c614c5149327a5268535a6d5a7a496d2b634e4766745a33316c6e77486343484e30334f31564b4b686646792b57596b437375454a39467650342f4c555a50396e76486972674e7848374f774c743865586d344f6a504f4c37487563782f58686f485174416c744e7a3155652f4c6a30506832724a7449762b4f30506e72442b48492b312f4c794249784d5a6a41743778764b68305a473263302b4e574432616e6b65486f7a41784758536b5a324e525365545a49573176434a564177705549634354414b353071476d476d6c725446766b49703564345a4679616d324c6e643754306d614c72675a327a4f56496574796953655752475a38664f43326e5245327771643976396673424e374f2b332b70726270576545774b583376466f306f33336f6f4736634d2f3438693674747a4b77664772343958505741366931576156487951726f35493335673766596b5463482f414635725250434a3735464f686b54774b796f4c5a573763656f716676584a2b47314b4d55375575594e344c7954484e47457232416d68564448664e4774597a386373314a744d356e497162794f694557336a6c5a72394d482f784f6a63326c396d665868333531645831353952554d61343742534d362b7436393833517239774f642f394a7452657666752b2f3841794961766a7444747375527a3773566e55752f7a646f396c677a3972635a4c7032543174712f38417564596b524c2f5777696e4230794b55554750735a526675357342436537786c7a53306e52617441486e76706d6e6e52506b4a367646774938632b31796659492f6862704c2b546e495867674739503556482f374c49352f4c376966557a787a696953466d797453586f5a4862524a6e4d666b77367239446d6c6d57334b6f652b6a4865546b6b73707659626a4f615161582f6159344c44616e7744316344772f774245504c2f537247394866437436723146784a714e62657231597362596c2b6a6f34755970655a324f665a485553722f4c72356d6148753454717a5342316b313950506175623074767a7445463876394f4b50472f452f472f497166554c7850646f334f624d2f5044382f77446b6372554d4e585130423756354d6a527a2f734c5773666a4432706142694b56306e6f6735784f374d577a5059466a2b45357279694561307178506e70314c75797a5131464b66632f2b46676444524d7164772f783774375531714f71742b4f76762b3036633832746e6b2f7142754e343032572f52584a564f77307953523077696e596c5a6f5a6e314d2b506f386c54626b4b4633736e334b725a58496c513639304866684e4b443738324e2b31494f582b4a3641723276494d79376b4a426d6157565270367a66632b4c65356a5653533858472f503647586c7a34644467734b3733733969542f41485a537569597a726d5a367a6b64416637645662472b482b707662615850686e70796c594a383779654b797032707333496d7a6c4f633536614665373558304c4270746f76363566364d55794972726472313544644e704c5175774e4d59312f716b554c596b3330476e517934686d38666b6c47794668314d6d466e7a4b532f77426951476b6a396c41657850384157496c305430686c4a71715439334e71416d685774544764304b5a75614751336c655a65766a47614179754e67394e2f55743537486d436659706f422f49392f4b2f726d6576663554737371793469523632656554555a7356554c56747256355039533854717a4363476f6c4b506d58326c4b5359786953613867627769563942547361663850365350365148396f434757582b31442b49384f6d6e4b747475384c6f756452546b325241626561477345664e75686554415270346d717a674f47576b4f6a4d7430353266494c543854326a2f2b6f31666e2f63644774477542617773324c6375515a6f346155636439544e316a6e65396b6e4a7532746f41484c6357534969727339667a676c50484f4c6e574c646b4b38386e563268483850656e724d79684e49626b47677253544835426a6253686c76524b4a523859367237465765383066572b735930395a51316a5245757a4759347833445566304935736568586e47723642364f6e735465462b593672504b2f517a795361575a57664a6b374961782b532b6d3666684a6b6531486c4c6e304c6331334c654d4b55314239593347376e4e62383166656646587444626e664d374a744a366257677a4869576d786f75436135326371706e374b652b637543746c4131587944784845684f4358495838307a412f7245612b596d6f6557725176305750556c575a69614e5854492f70356576573567665a3035682b30466d507865564b6f507575355449615a552f58506a76386472526d4d4459664a74304a787a2f414e5a4b506a6d2b59465335785230444d48582f414d6679413555325572586f4c4857536c6653483575486c4c306e485148656747496d334b6874385133726b2f454e43716e646d705275525641426f52454664334371576c4143686e466e38766566543754477070304e6353696f4367332b612b503841696b63657a357874355868766a736c636365317665556552593038334c454e49494a374c4b564c6a7939526b644669654b4b626748784b55716162457a755862624e756b37687a762f4c622b397a2b4c4834364c3250476641312b532b756671376d7268727866477644672b4878597a5658375031355235555a635334567557734b30535274354f33363455416f484551373666737437385a35616a7a6a657466392b4c387776794157374c78664c733330523865686d4e544d37307578396a2f7741744b3752336634586c622f5051453153386d4a6c5577646a4b51486a6e715068797237516d547472374c7030343764302f6d2f3841794f54586e5071683550366a3332582b6436666c2f717675446f6a7149563568705737314464355048427a536e2b746369495335643967784e30534b584a2f3637526a42522b37706973567a45527446532b515634326754386d4c722f4832306962714a6d525152397474515356596b346553424350426e514f652b706866396e746a6f482b7733427776664972327154532b786b61614237556665535263795a48724e7550512b72322f612b4f65682f5370715353334657766f735a39396e7742775364386752627962767a6178526139583373313679306d4d4245387a356b55356b36352b4b5075616f4b6a596a4e4671796c492b476d4472784931487a684275442b455039777a312b2f42667a7162633843367279447749716b782b612b6b506b4e64756a3435355447537170666768393037302b4e304a6c3136457a61434f67664f65786766496c6849645856306161746550612f46784872342f467a2b38442b472f3556784f7933373252364a2b55766e5446762b416573577a69654f736d3047306b6470654f65566176314d3779544d4a3155726f3569354d61614d723571475168336870383755396e314b522b4c2b4562652f536973476a563852323873352f34304b4d7a547739584e716b4c457962526252566c565a747978374b684936333234586342784a7a42694e4b446a51336d513145335662636d6e35452f632b32666a39457a38657164685238694f6e517a4d496d44587656626b725753307a757366786a6e382b5649527841536b6657792b613132393355612f774472312b664834302f6868347a70616e6c336b6c586b507134785553634430687947636f316736325379523437326852563833676d64514b62724a70584f636150354977444c4e504a57535454517671546d4f7a346a78302b7650727435332b53337242356236772b64734a766b506c64526f4549757258426c3561325177344f526e527a5a36317058476d6461706669544f62506f6944557a435375443663557270313278312f6f4733676e6d3763312f3858556a4a6d38667050556b3077317a6d4d5a3537447534335a4e39532f6c53373744466e316b356538316539554b56684f586170745759457831597652377943437636716e4c317261744c756c6f52674f5a6c2f77416c62786d6467554c7735717176344e59756c5361674354733143394a33764a615a67582f55524d7830344372397a302b32636e506b314d71724c7078364473624c7253304b503661446f6c6d6d3552384b7a54637637695747665a6762377a6d4e61524a55343843596d4a6e6d3469453075544b66615a6d787059384857395563446c4e6554666479783943692b58326a3879564e42514d634446415841534535413037346d33616a4742687a756b767367545473494156797168456772724b66366b4b626f616a524b73532f795a5a6e2f774337764134564577667271316b4331782b7a395a444d3054615447717170416e7246667973704b6634786f4f574f722f3661564744436c495a56715572697a4c33694841486e536362585938386a72582f61552f466e3177395666796438503954764363496f664466513233766d58715635396674506878764873736f324c666b6330496c2f4a64354e6f466f5271524e2b67457963387a647964543655382f744772534e4f31626471335a487041395a507861782f566e422f6e624d6c353035395557786d5a736856616962735379546f4c4f76366a6f715332486b507731395973434f2f48344c7841796e2b446970715769636434357a362f77446277394f664b6e36656a756175703470564464447431726e6e4b2f455572397a3273693168677a377150485a78324f4f7134614f49555850737564496a33555470326a5774483568432f482f376365487a59346c766b3264704f544b6c566d556866384e574d30614e616e6a5354776e7973632b4530324d63624933794c30683972684d4353715a317078356a724436432f673536632b6a3830396b43386a6b3750707a786955774875334d3262557647334d77346e787477384f693471436854396f665935774e53454e445a696f3537367332485066384176556573386e6f2f364a2b4c2b67486a39624f2b6f767153334d387038697a734b6a34777776487643506a76525a636a426f554f626f48354e484f51664c7737585175682b776c5859354f33612b793133616d2b657a55634c66516e383576794439454e70586b48686e6d32687335437a5a6757654a2b624b6635483435644e7a45686d4f38794b7a347354614d63314b2b574b706e2f392f774332434b666b487656665370614d57714f344834372f414e3037384676582f49302f546a2b3452364b5950707a5056466d4952764e7774447a4c78765363625536477255795762484f6a7850555a6e736a5779756c2b6c51644f6b6f3357516a504653585066326656704f375274756d5279752f7566666a2f2b455070683568343735642b43336e30336e5867486c7762756a705a6556354f37794f587852382b67745338746254457138394a515544384c4b572f7234594a7764387a6d397264746f583172786a5672737455637450474b4a7266493865647567785233614f624b56663159394b656369706f6e3739574b38665a3765694a427a706959674a2f73684a5146383356666f505a352f614433504873447958315331595735576a4a6e2b4c654b77523775486b6f304d377952703442496d6e54616a4a7156446e74752b763143366d48383162756831504647464839655a37544534724668334438372f4a36374c7849664866475a6b612f6b4e62632f4638554f576e6e46526c7166567939425762477655397a435032792f46497a506f43756d6b4b65506f5a4e5a53336b325a7a61597a2f5150504a6647767a54395076422f4668394a56656d646c7549725072386935353733526f31504a634f456d61642b543439334d33695a4835417a5846664d2b7a374d795a3464464a4e676a6c34306a524f6c4d3474466f47706d3735392b532b68367a32612f6d2f6a716f475a3857647a75442f422f7956666a54697272427431756c4e634455797538664e30366f71784249575a736e4f4e6d6f397a43764555787774304663666c58367755622f77434c6672666f656f746d6c4e6834336f5a366b323632704a3174366454797276707757584a54487a724d2b6a472b47797965506c4c4273547773706954556b663841654e744f754e536b522b4c502b34667a393436474c7a3239544c382f756f6f62526647625a6d4c6e72542b685351476e343669455536414a39784d4e4930304d55727076357a2b766342644c4c7364765775347634576a6f5644506251782f516a5349756a58495879547a536a30466a77505a307a4e626c434b2b664559703577682f4b5a6a6d484970326533326e4a4f664e4d716a4a394f69536561527554713243793549305a3635336436354b414c3966737668536b763674747434444e56777a4930486737685550564d69646b4f636d31556831506c61597a5564487171615071305a79317157545059447569674f6b5973633257384230412f746c65684834302f6b682b526d6436592f6c683670312b692f707a544b313056325a5447486b766c4f314e784e655634396d55746859714f6969614e692b73614c58456d7a7636476b6d7a642f724c5874656d6e46744f752b773768666b6c2f77444a7238767a6764727a50384276582f5038752b51684b2f30733962666a77724b706441563235382f6a3371564f6b6558664c485a4878554e4763426d2b72695855384e716a547930397432384e656e2f64582f384149352f666a722b5648357266326f66564e5070742b556670703675346e7071645254615869336d575a526f305a436730714d327665394f74353378446350636b466e474b4b686a4b644b57702b4b52712f77437472303076614b62744f30627039635236532f5572307a2f44332b3862364a34506c48715a334c30712f493851462b6e2f414b316548337844366b2b4661714d6d4347442b6463725169373559794778645a31354e624b4337314e4a71644f5571427034713231665a7234722f414b52342f5037694839737a386c2f37662f6e6c6a5055484631765544306530746d567670702b52666a6b746266447649733270744838426a6172463436322b462b5944485038414f656178303352482f435a7a554c4e772b6c6f36326e72527938747669714a622f614439504d7a31552f4f2f3055793666467354797a4f38437a747a3141727971736a6331736b4b6647737a2b623857753055665436432f626f4c795749365a6f482f7074492b6d7876316e56396f6d613656707a6a634f71763841386f473874395170634430593039507937637078764f504b7173682f697a396e51797378394d2f4a396f643637494b7970646d587969374c35374b58307a546d59484e3153364f70647a2b78784762566e3452356d593966394d6c68484c665a543961573146464b756849326d4b4f4e4630794d7463712b4578587a456b506b72454f4142557470614a4b577674784f4d3434445a4830392f4c3633306c38467a7643396e787972792f466b5065434a36764a724a4c4a6f4e365571757049692b305572673677586733697950714e49465038416343767249723776644f5935524550556e316c3942765666647038723876384154667a4c42386e766570486b7570343335446c4b6a30565349396e614a6b57592f414c616f71574c5776726f6f44337354574e48506431503954576c346a6246763666334775672b56727a71746e467a5a394d6645364e4c72345a7a5a584e706a674e72497768663166376c6a306e5232415646484f476b31756278536572637350363032392b656277344356387a2f414150766c50696f654261586c6c484c4e37447a475765557859384e735876616b32496d2b6b772b664d64482f7742543876784230472b787448432f36394a7a694d394237704f34434e7277547773326e7867302b4f5963374875374b4e4c474c6a6c4e764c477445756b7635424975657776622f586c35694a7639424f2f536e38527643712f494f62757032505172453039365139583162534d684e773845542f52447753582f414d3835332b6f747157366541366c51782b6e506f7a3466752b5a626d686b655065422b44596a745879505931474b6c6d7a494d796371446f736f65537845754b53516a2b2b2f7676763841305037497636352b4e707858705965482f774258746e31342f7656666e623570503645497a76497362776d4b386646497649664b38507733786e7848303579726a556a537070334b673552545a52554c2b6f6d42395452417a346b6c4a5a3050557246665a744b752b65466852586e48346a666c422f6237395376422f55583147385652346e4357784f31653346556e63385231456b6b6a737135722b4b365843477043577236736d726f5438307156554c35374f657938616c4e657471786263505468364b2b6d586e76724c36502b486574576c6b2b7057786a2b51596c4f666c656f766a456539756546367177626f336c354d764a4a306d75626d546a5a51665770474f576d506b414a3061425336666774654b3274574e7566415233786e472f4a66786253386b3864383366355035504b2b634d2b42493665743469315234386d5068777850725549635a3931656848625879443748337949472f5750736b6b6639576e5a4f4a6a6c2b6f374c2b6e7670563549373070636a796d625330613378587a562f6354737567676d626e4f343658786971396e3269692b646a707032554762694e78434874576b2b487a546164324948495438705079457866512f7866314e546d507a664a504f5534666c766c326e6a787a7a35612f454b4d66486a63586b2f6d5767324e52616b3032734f656d4a366c5654485936424b672b796339504e394f6d36596e3452346b494c647a79337a3759386b66585a7037486c486b473171453732557135574e7733585750355a5a724772333055667876554a41666c4a33316b6e585038507a6631366e51506431502f77436348764c4e437165544f31614b625a74632b554669503764484c5059326c73386136495666586c4e6831444a37506d622f415053346363615879466d666b4e3572364f655565692f697955655635352b6f63316731525434637a50664b687248543168654b42373965583663382f46394f696c7a432f7742686e3744446778534c526273386f3043384d3849387a3953504a387677377744785079627a76793765735644692b4c2b49596d6e354a35467333554e46534a6333467835585533554d59775245464c49756b66384158524e6f724762546973442b694a2f5a482f444831512f43373850492f4466585449373466357036682b57662f504e35566a4f58552b7678374d334b342f45735877753352386375667a596f6669344f625452502b754a6e64355561334b73354730357646397131613675726e54357156344465583166394c336553655056585a6d6a75654831305a6e6165614546557265526d464b64556a376f30564a567264377354695274584545794b44634274543877517a3431744554786e635049312b615834653235486b586d75397536577a755134766a3065747161506b4f354c64594f6e724e645a50786c4637464d7a5a5a335236697734524e4d7665667443685358663136476c71356973514f484f506a51463572703573546c4c56705a316f354832467167572b4e4a4c657471305330453357466a6b31664545706d6e3368382f37502f6a76396463353278344239355634776e6b47565850562f464b7a4d61586c7357684e616c72434c55737256556c74557250393379443775495978767847416361314b3172344652314d2f416e386873503049383450303633744478366630372f49484138577a633779447975624b3038504a386c51632b64354e696552782b52532f46526b582b50315741395447644e7a63337166615652716e444c56704e347a5874564258387566776c3851383965337a6a3855664b6642796473316555306564656a56586b58686d66483439583665364f67367a7948785778656b4c637a44747873475779664b446e4b41372f7146527a4e6a552b756e7254586871566d66777a336377314538486236332f414965332b5059766e6d465a4c343135792f4d387438637830612b4e355069363232334b717a5975696a4e327a4834616b323558564451736d69585a714a2f654c69573757647570787232716a30452b6d5834526564596e70426668657075742f4c6570476d7650395359306462563954774d504972352b352f696d66555244422f355537506c79573041624a6e424838383059664b6830382f4866566931733137505a4837776631432f4b6630777671795045393355387a7933553538316d6235485259614b73364b5778375a4d6261796e554f717a58464c4c546e30786c4f4361644a494b6d42465837616d756e614a6d65575136387139642f7a6532354b4c664b7461587861613249394f41306146546138357455593670344b5130532b4e4e51706f36594f4656505555476f7775564f7353347254536d65586d424c3863767844342f545235313531447037586e476c735436485737425532576a307671685a54687847784c4b7648306b706a706854385a6e526c497162644c39316a6d5266557869496a6c484d2f7744756f6632752f552f302f447950387366533259395830623870757a716656435052667a484c77725a7255644e3275533532427a57385830624744556b6c4c4e71757548347075514366503633396e31367a2b7a74327668484654307039514e4c30753875635878716b6e305a446732726563664861724d306b4f703733507256644a324f7236376d434242314938547968516934424e676456717a654d2b49334b2f7744726b504363703867352b686257674d304e48397352544e6d48324e386f4a5831516a475468626e7073675166312f6b53546b7554334f396a464c7839334d7a317a49442b6c487233692b6e336d4d2f71563549544c3659774675624c6c73504a4a5936742b6b446e6a2f4761546a7369596c5a4e6c34386b6e3730794839376b7755676472316d30596a7645413954767945395250794833397255386b334c787a303536382f4e676457716d616755712b57393359302b2f68664c7245353378645034502b2b6f77465873416e4b31696b596a6f5056332b435034772b4f2b725839732f38636a683654396148774c524f353949325231702f666b477466746a6d564b7a2b6d784d31773343722f476b43536e70724a4b466b7a2b754856764e646655476d5071543678666e4c2b4b48696a2f44386f7458795877426567767961536e44304a702f344b6f324c786f366f4f30597269794b41682b4c34466f72365847596a576670424d64574f6c61365770624f656231356a6d7635542b545835502f6b52354846346a6b342f6b4f78356a356a614869336a75524679792f7a4c794e375a4a5a30544e7945494a756b564679382b6c2f784e42546578714d70714149672f72614b55704763387452364c76776a2f414c47763547596c5070373670666b52366b347670723545366a4e304e5048752b54794c7a7554456e515543736f6c4252334f79624375586c773068535833415438305a2f564765596c3865723756536431615633523639654137563466384162552f43484d3869792f4a2f55763072775057507a62785850306535486c48724d44664c465a556f6872562f2b4d77346a456c416e5056514a4e4253304f4361554355704b675364503963302b3061754d5262625879416e38307050552f30612f47727a76663841786f394c352f4d4e447758783269483038394c76542f4a6b547a50676179656644487837787a7736637635706363744247536551726279652b316f31676f36567a4e506261395976625a753756682f4e323962504876794639595055613364386d395066564c573876386c336e364d666b486b6e697a49644c546d66764c6e3771366570573252557350583253683267426a6a616676593734536338513971733070586861753267616570336f64366b656a506d31506f2f356a43757231436e73694c6137696475314d714e65733574696f4c436c4a707266314f65537a6a65536668574844706b426965382f7057316252757277714c75384b78504766543378664e73725a755a37337a7175684d7a6d666f336a79372b4d706948762f6535387a534a4b4571354b4a6634652b687a546e556c4e5a6d32374544744e2f62492f456e6439512f4a764b6658376238526a72646e78796338433858364f726e554e624857366a6e6269747a6235492f73547230507267534234673576393166784654796e6d3139534969644f505872313548527a3167562b54486c322f77434b2b422b47666a6e36585a6e684d4e6453373954314831474b386b44782f774166703145317243336a704b4d7650736a737151466968576676715154665a477069573456325246706d303776796a6f332b4d6e676d37355836633733684d2b506d654e364e586a4f6a706377394f66615278545a30315967314f534573726147505472776e3269594a467739542b327869745141574e37597a4f4f736a6b2f363366684a2b5a6e6b586c6e6d4e486833716c702b41654765527a557a6c682b44654e44702b54655737577165504e5642356a703379744b68316c6a452f78306b5a6b633063476659636f66536b562f585254567045567a58634f4a2f35466669703537364868356436542b64517a61336b534d706479363332566a64524c6b5a6b374e33566559464c78784c46626747757271757454545a47424f34455955394e4e534c7a766a6f4f43463078352b6732476f4a44706a74703435614673375253637a432b79735766497a6950664c2f6d3367754f6c3330505a386745664350737266756d526d7830636a336150314a35507469477238507955645575794e43322f5734723556456b666335644166723571453973452f5a2b68594a73372b485441764b4148614f566c424a2b6c5432355230634a5337652f5858675558547143676e6d5a664946457041665063516c2b793650542f724d65307a2b3333363565586570663454656b477a6b794b70316646384f2f7750795049356637394c2b663850302f3457566a616e457a706b36635a332b7a765137374842332f41432f393339655a7230697572614f38577a3464355a682b4d2b58327965746465737679447a485031362f467366786e4b386c386930594d365a625976356875686e6659376d625371484530563845502b412f594233322f3145786d4f574f576f316a39635044765358554e655833314c39662b7179366a766779644c78587a6e523867327156762b32306d50626c72346d556e5545507a47775668372f38413650742f782f725373326a6a73722f7447752b35367436484e446648772b507a72433857794d6d6c653556733558304a744232614c41756a78476758744b70705478385070682b766b50326a37756c332b727854783443767637356d5256364f66686a2b4758706c537439586b666e666c6d7436726256356d797a71644b7a7837506568445745526a3931492b524e446e51352f676f434c3244377636657938645456742b486c486e46394b767832395976794f38386f385439487644712f4c64546b627272484a706b6d54504f71564f66566f2f486f456e74777a722f35494645772f597a3247672b4558763770314b30724d3274784874532f416e307838642f43583862504450516259686d386e3953323930764f7656547a667046464776563870426b66384c6c747a46396f4b574c48634d59477956784571426c435666382b7a2b764d31625471366c72783265346258656365535a324e6a39733952504a66482f447352486a5774323779756a5335487a4e696c516c3949626c594437394b6465623859796e41726e32306d4b654e4f3943356e5a78575a6e6c6a646765657a2b364a2b542f347165722f34393065677562356d377a66314e79764d6362637750495a63713856544f79506d773373317670554f4b664c742b354c544764467241506c4c56645641316f6a5a32657a30314b333935743231486d7a56485847304a70766d585a4f322b6253714c6c4e4d78556e524d342b7056533436766a575572765a51585239764a76696f5437763832396e4a352f5965756e6e347834336e506f5236524c5a4a4557316d656e48684634466b344c624b4d797972485345746653696354626e4f644c714b4a334f3072492f6d5a425370366d7070382b4c326931707a336934765250304e385674566777365068475a48666b3637593954505078756251697530556554585131496868717a416576653752526b3064346f59466655533751347959436962465731356a72624872794854723077394e387a467a4b4d7247774d32446c544d643153624b736e566a5878326a6e5a4f6c466d5a72747870593866305861465972736941335478307856665a6166766d77744f5a794a462b546e3551656a2f346a2b6d6e6c76717a366d624d2b5a342f343450555a2b495061495865513676384374755a6c2b492b4f61546836506b6c447055456849316447724f633071486453594771615574715732314867452f49503868764f2f7979396566566e31793953336156586b486c6d7652714c796e6147534b504666454d6a35475a655a4141344b56706e6938642b51546143753130636772416a64514e423839576c4b3070576c4272393548667869632f4838656f70742b587451565349593137384c4e716e4a59594f5a7831436a6f5a39566678423742616d6b506b4f64626b67414a74474d356e6a41596e4a4a67484f6b5a5661572b4c2f68304a53425475725654424b5939304f30614254326658354b33736e6547456e4f4a583178754554442b6f347a3569586856725a7648616555443966794852686d346444735071455459394563746f6b4d6357684e4f4f6b764a68583332746e6f5a534a6c4f376a2f306e674f452f494f2f476347793356477657747075636e6b314d386251477a5038416d3171364d74504544624f664c4a324a6873587869302f6359644a7556376b38706f43637a6949376f4871512f77446b3950725058346c5a36776567507145355532706e4f37356434787636666b4439444d61755674476635494535576975647534326651693672394f4649416b4b2f684d766963377a2f414779737a466231487344777150354639664e76554e4f63435658367169706b586b6a397154745a2b794136717a6e587a4f712f3364625453546e6538353641414f664c353379464365745870423450362f656d6e6e5870663673654a6c7565476565654b76776430664a5734756867335558794a43633444746c71504630766d6e6f596d78663061466e484f366567795768764c31764e4a7061733831522f4d7a2f4a62304739557677592f4a337a6a30786f38703376472f4a2f52627a50742f67666e6d45317556622f414166654c3176454e324c517a696c2b46315869346e524d414e446a6554505343557a3168645237744c31316156746e64753631486f712f43542b384834372b512b5669656d33354e372b5836622b722f5048453544504b4e7a764a664450553963734643456259304d347148786e7941636e356f69686530672f7a616e6a65746171644846712b7a545446716331662f4562642b65616d654673642b6a6d6f3045336c506565766b7830612b62636457663841567033304f6d5350636b62503549717036347034474e3742795748357077443463346a45593842555265502b4b2b516f4d4d5845494a6566626474372b566c7434766a504874415236795452375545633945306a4a66646131767768544d4332326775546c4b706d5a6e724f5251503545666d6a34462b47337033353266446c722f49485a67332f414272303038666d6a6864666a73386c676a68314e2f795a76632f7338645538613531314a48712f6d4f6c79795343364b5a36394e5054766531662b6e336a796c63303643646f3674425a396e4e4e76627137756c48436e6a48323361476a4f4263365831325761692b765830424d6753424b6a53756a7646423362625431674f624d77714a506d6e3048507a5974426344514a6b7a4b454a74722b3961567351306437557a6a4b50327869666e2f2b4358754e7675642b316262666c49435530364571615841754261574677542f5879414c4151346c38665368672f495a6371755630574c4c392b2b6b702f6842624f664662396e36794d53706465326d7a50614354656c44365a704a726d69317431533778364b4f66436964686c39677a2b5565414950494f4d4e6665474d356d76616e4f5132507342746f574432706d4876325134706f39585363746a756f746f6a316861464342673933533450576c2b316d526a2b756450747861587044367a6572507058642f2b627a7a586678473136655a6c507956556439725250657a7a586d4e6a343457726c49307a70367667635076415033417351554259577257336170362f6b50546c2b4b3372506634526d57562b6461612f4974666a59396a643872594636362b556169613943314f355038417a6e324e5335396c657850516c6f522f723631536155552f7551382f69314b7a50477655564e2f63573130666b4c2b4c507156355245523055654b364758357a44342f723954525841714e55576235446f4e7475467439587a53555855467a6a4d2b674a7070757551636b772f4c6251354e5373644973504d4d6d6b4569736b7a7a61422f57614a7149686748724139337963735543313971714a656577563839356b426d6f2b2f37652b783370432f2f53333142325042504a4f656359312b354235543439545a79586d49646272654b744d5a377564726f2b59467053447459506937457a676a4e2f7341757053442b65316335695947786e6b6e7252356c357930764d504d5055545a3867306d703237447874563357306e6f4647356c5674576975703338626d765a3979586b6644442f474d334f39772f4c396d73567248434b697035504c644c4b6b5a5a464c552b66586f34567633632b68624965555479777149364b7053344e31474c476b6950733563617944376176382f7744674c415676624161394131655175612b66714a4673716c7a73372f74752f6a59362b4a55715a6e5864714f662f414d6d55585576436f4654464d424e35376f2f3642544d3879646b35626f6b74784a4a38334e30704d69575159644f6c4138484a50526965587832464b6c536c36684c6e4a36446630774554544e396858585553486731707a683767784c545538744d4c4b4b75785556356c646c556469556a38372b2f787567724e7952396b7930696854544f6b327242736649674b37506c47654d755061466551656b71624e5a66386f696572432f44535136656672797959356c693255565565317a56722f645636534548436f6953344d4d587a52666a74726b5a3943696d31557352354531582b78786a4f314d37515a4a73395568656677562f37656670564a425a594e46674c37772f3644566a7a644f482f414f58627a706b5535756536765350504451696d69452f6a304b4b46644746496b704f6543786a5a7a363632682b6b69422f35664d4864615a7835434e7539314d2f4445366a34726950334f7a3343785853707134333952674b6c4f59533553346f6c4b373768506767587970597a2b7268767a6e3159786c63743375363453662f30766b51626e632f597144767a63374d74772b7a763649314830766b502f41456d5052437678665439512b64784b4f3179416f4648525639663653776f6a3749594d4a6641376b423866475746446f45444865306a2b4147443850374a33395744707469566f6f6d6277422b32754b633366612f7a6b6242436b70327830454b4f55456b6c324e2f545741675373576f43543854652f316e37767a46364c3853394c6344507a3948792b32726532727757367a5077314f5343616a316939386964436d70413754766f3255504e6b7a334170333151565161326a332b7135745066496c63766c794a7072664873444254342b64724a79706c77696431656a4b6d6b5435326837666d356f5543497551726e4f384f344933663572446871436f67666d506e2f6d7558733633387072305342707573626f7069334843773331786a49504e69484e7359756a5958715a61545a387876384168566c477343567841746f6e756e6a30447279377a725150784e336a6d767a6150584b717036645865314636495378314e6a6462325873367855552f787530756448765754742b34626b325475425148485363393432412f74722b4e38386d39643253617531523436553369396d6e495765622b3361506b486a64326176416a6e4f596d4e4b7a6c6a4841524561352f6637585566456b44653650614a6d4b3467646d66554c383750795a394746542b6d3272346d6e584f554d3648423952426f545042526e7376717a7556364c65796d7a57306c3679614b41585854397a337a7265524b65556167356136576e626d3341646d66334b2f79617151564d4178785a7a59316354356a567677617a4a50346b3346633632726a424c79445366484f58754c376e54482b4e764f594a2f7248564a4d36476e2b4c31394143394738485839512f5070764c504b54386a387a3839304e7a516730644b2b7547674f71386b54486539553661593364783357564a4b534545365a646f4c4b734d376748356e31703559784537616a74663647614768346e3552344e6a65504f6c432f78567a2b523538476171737378644c35777a664864432f536c6f7531735a653556722f72682f7741633845754f687956635847612b5733474c5449383476393744315372702f756465662b542b4d767a6e2b53346d50344f76794e2b64456c514a705a34784b6d764970564c55336a30396e2b527074564f6a70774230326a307970426e5a375058396a574a47754772357a3542354245586c702b5331556253375a354f7862795a4b706f5679785a613957574375366234537a2f74456d6a76464d645341314b56387a484f51354f305245634f2b5254327a7363304459306f655145596e6c444a566e6c336e4335704f704f696d6f342f616b5679746f2f3633586d305a552b386e4b63736847596949364356753957764d4d2f3035386a384679374d632b557a614d756271314a59656a446b6176386735553042643050684b5a644647674865736b45704f41772b4149554a372f5562596d325a47713264532b64494a396f6d2f37692f6c7a2b4d493944355068576d573457497359326477724a77316459396e7a456e2f414e6e543670504c43372f5133386a50566e30493839563671656b666b4a2b502b62717a394c46736f6f686e324d4c797645766c597a553862386f79542f614e624862706655667a6a754253706e573177753436666e4272616c6278693351643566534c2b2f5a3466444668512b7266343265594b3734316e76474b6a303139523869334c314b3257755a5558552b5579533035656665373569657567376a616e6149506d4c764654753562657954485a76384136712f386a5978582f77416f6e394476483853585038412f45377a625a3868656444724a7649764f2f454d66786473326261344a45485a4469366a35316d746d47545a493556476b386f3468596b306f7158542f414164356e6a716576734f662b372f63733955507a412f4937303139547679697a6565512b6b6e706a3544686565654c2f6a703462586f346e6750664b4d3536573466617557584b5079626363356152666f617a6a6f4b66535a464e4e504252374132397858547061756e3272642f7843492b716e39784c79347658333142395966473450475053627a62314e6d7a4c4e505738523861644e75594b45654c356159572b4c70386a63364c4233754d38666a565254436a3375665977656e385a4e4a303130593256724d3771314771725079746e326d36464a6556634b7971394c66494b6e7a304a3239312f38696e794161624e48756245653034536f4a6c41693847614a6771737a6437517250545a74346250762f3647762f35432b7166694f396b6e347634516c63727649487972386d70327133646f666e2b505a394b465a50493875655256695a353272475272336e2b325448384e445744586f736d6c5a69637a4f4d6a59372b30742b5a586a503462666b68394c314731506f2b6c507244677038473951744647787032522b4e5555536b756253705a314d505a52616d546b544a7a6141676868737462544d73563256396f704f72586c375665795054393634656a63477834336961474c5172796a43386e2b485a77504c4936396e7962476b68304e524c4634646c7a726764596d784e575038664666445178754a44326b5152384c6165477473634a35634457726e6f766d2b6c506a477a356f55576b75547876493871386d314f35317a6c5a37576c5059543558574e3862372f41427139483439496b4c63496d5a54546e4d796a374e77575833377078344479412b6332622f71523562742b5a655a4f4376623878334b6236572f59597039394e57367a4e657a5170755366467a737675595342576c594e536b684e6e732b5a4b50516a46635258345258477430493636457376543272474c546e705a6d41354c4c7375442f552f394d634a436c4a51753973674b4d3145566a532b54712f6550395770326f413569463153736e4b3671553355425037775375696271366b51763674674b46687a2f436d4d54372b6d66476f302b38524476764d4b6865364c6f645a4c51424454796b59775732514575766677356539393073624f69356652597a7636377754417a2f5947347863534146636c70564e5161464e486e50596954697047414e616e544f6c3731514b48724b50634b532f536b64495248396d346863617146644165537a4d53684f6a31714a716c564a6649454c4f7a555a69556a56552b5554544b5030334d5350753476332b33726a412f65422f4b43656365702f384142503841764d2b62302b4d656b6e3430656479596e4c4655595867453372414c6d6467676c512f364c39337957474a5a2f4e3545764a707956394e445532585551527a4652786f386d7434745832614d3276482b6b6476395038692f536a3050795138713847395576456865365365396e6c3235356447314f6d7a78334e4c736b415a71382b464f50477a516c4a6630757073345768656c4a66424f443057633279307a746d6f326338462f75435a336d75444a354a6f626e6a727844542f6b554e38615261754733506d644c486e4a766870586479677248782b33694337493535684d4d7968392f6146556e526d4f4132435a2b5650685a5a7362462b557267647976394b4e75766b506431626b4f5672426e476978425766475a69613432645238345a7252346b514167626e736e786756326635795a314770526d2b4d57512f5479344278744b47702f4d395a3231584c6c704746477455744c714a6b30546441306a794e6e4a6d43643454356243646633574f6f755878723869783954764949326352726550612b4a72633564527035756d323661547339454b5a4b35344b466e5537554768376f766b476b5745685a414436523970306d6d324d35364457767a372b347a366a656a58715a35667a796a4d6a382b394e2f48764d4564383358685a4461452b47654a624a657a7872795845756f7a556c64594a315a70304b574854352f6f65676d4338364761526f317457754f577737472b4b2b57592f6c586a75463558347a546e372b4a3556342f46566c7554505a4e4e5a4e634f6657726e6531547334667468635076397133754a5941482b6e76763458504d596a452f442b676c35324a304b6f766756305869786d613165694d55725767756e37704b6e535138614e51465573507367663133396433396748446d4f65522f4e512f765359456d5a2f64472f4b754263394a6462755a486b5a79542f4148542b3166716543344a4f7a583970392f4e6757575753676f454962333544396a71515743302f31362f73754a304e4f66714f6155306535482f436165686b59756c48764c6f71784b534766676a58566271482f6c6f556169507478684f544c42585166766d70706b452f5a53626e6436526458683830726e6a7a4132493464467674314967557a2b466c64626930523332554f335538627965582f595335366d6e5478704d73534e796d2f4c397250553768654d6d786f614631366f744a7056364156774455586b63533839535536305a76782f6762636b736d78452b33444f6e396c315248563779437347386f4c4d54334e736f79732f4a5256567169396d7052626e2f2b502b5337594c7530732b71714454596e2b5163775a335673583778396e4163796132687454505964446b684d61646933794b326a794f6e45796a732b2f6861436e39733433556332684c744567354d464e4975714f7963717955376830414d7a7670395839736e2f414e4d5934644d437976456b795a47746f54542f414d716e716b5a3944326771593439444f67756a716c78774a54682b3448636e6473364b324c584e79624b6b706b6970443737716133374d69313949707673793232567a5961624b644358376e454864762f4b504e423635577978586650436c4f6156796e314b5a327235584f636c45797668476e505a627746634f69537a554d4855366d666b394e5436632f4f7963742b337a616b4b36302f67652f576d665671543647664b6f557341654e536b316849617745693033637534413933786e4d68785837796174753038716e694c73366e50626d6c306141735a4d64536473535a526b645a3863637074622f7058596336754c535248324b3236566e684d43727649743779547a48625079725658573351725646683171514d4655373435705a37724b4242435250516f346c62754c2b735061576d3950764f5576692b473052694d523341666c49725874353865774154514a484a66684e755455793272465451773830614d77484e304d64633036644b66394c676d2f3631687445596f5a69542f55697a5542444b6c7447617a4767546d53746e7171655557644c6e684579676535383136426f545673506b75314563554b71584a4456706f55734f746651594c6432716c50304d3778706b2b706368632b634463336f5a6643726f524c42713239766c396e506d6e6f6f676e6c344a742b4e744953545354712b5a6a6d496e7247513379646a794a6d56526b4979777a366e5453616663317439576e517773764b5871546c4e396d46705861464e6e75377770576b38574f4d48535572396c5441593646624d6562534849794648556d53624a6f477076455146476d444c6257786c6a4a6c4f545169466b61324a59597a307a47613575677237637141543376482b37312f75797452755950623564434c3531387a6f36336135314b35514f6a6b33456f7031542b534a35784243596f2f374441644e383148436a753469777645504861513061784669635148394b6d6571524d55567a4d625a4b6e52724c52726d71617157706a7056756d374451667a704d4346497738412f77436f7462623835456c62343065354c79376d314c446f544e527149706d2b68626d714762746b4831394258753669683332726f35312b795a777a424d706e784f4c69715372377a7942374f774c41577a484a33776a6f335a305576386646526d576c5162324d435775394336325957702f49615536682b6f7a346e6636695253502b36622b6d37347365514e2b4f2b6e2b325966484c57426a6a5232653158327563356e7a54485a30786670446d745a5647374e7938756c504a36495538434d36506c3666323651704d784d384978416857702b745550492b72616a6b724e4137347339503868576d346c53787a79524c48504a636f2f7741686e693544546f3651754233764b687751742b70754965716544486d4862747532497056366b313762386e54763739537a4a57366a79534b776530546e515435526f54313158324f6769434a68564c55552f7742734b65307064796662456c31434f746f523161632f4e5a4a665353794f576979657a477950727364445575366a55464a3070714a7765796b50703043703341693650467274536c6f36714e544b6c6b79533165612f462f72754f366362744e787a3671736c4b686c70716e467a7673665150733243706c6c4637692f374943374d496e356e33655575526f535537515a7548796e6667504d736c6b6f714a766a6d644a7344336131416f664c3043352f736f4f446a5444727157714543576a38513362392f7734444a7176596c57664d397472646575544c38677a35594e517374476a4b6a5853764e7a657a687746586a546d7643616851473548394134786f796547647278534c6f445130357139782f53597a62386564524e682b545a534c714e4569464e6b343656456d6939303962644a656c396d6c676c57695a515454786d7176666b34655a4e58486f50702b3553644e3961376a70747a356a314c346f2b5238566e7a7a78787a767a36666e2b775a7a496d6b59322b6c665668654532626b7a6873342b6a70756a32646762335355773436752b51307631533854313535367332725357464779746d354c305935503353547072446d50342b4549352f6e2b333245734c5469716b356e617752522b5135657262734d7a6f387554795458726c7a74714f6d4c50304c6170516e66646f356535373466644e7a4f702b5a58743468774e6a6e72737434436c2f4b563438575472537259693765302b6c4f335473653350473564477853364c4e486b516a4e484f2f4c6e3049793469696b2f73536f417567526d4961786e764771586e756a4b354c794a4c49305173717278714130716464727552565a2f4d7a517866326b644153702b46596a5a33356f6276767864494e54337445354775506c57766439534d325a6566626d30566877732f4a6862517658687958523374725856544f63314167504c68415a715073646b706d6c412f6b50356c3755374d4372396d4e2b552f517935442b787035373664436e5355324a565830725455673864684f735931684b6c536d6f587a754e66584a5a4d4b7a4754726532362b596b79737a564c54546d466e73667254306d744f484563744e4d746574755a7138355538642f386d4d2b4c394f376764487479707033544342456c427a68514871772f42716862764e2f524b694e76562f6338486c73314d6e464457613870625042616f6d7836645572754e3059774d56714649746e46697076676f354b35714f55656271396d2f7742523354394f42335a4c3844673870734d4d69306338364a6261354972706b7a775475694b713461382b4835762f41434e7a55676c48752f35685479756e36314e584e6647504d58586f57505656622f4c55474d775253534c7a4631764b534e613756795a2b6b2f36393332714c4b5a30364874377974584b537a316f4a587a2f483832516a37324d314e4f62785265656a51796432675761506b37705939587869454152557174304b705742314c4358504c3076306f6a2b595065772f65786a76366e6a32764d57557277353067354769653155714e50566f664170725a3075716c466a65543872553732436f6c367675496c2f38542f384150666a532b63452f3141652b506547785a56576c52683454455a35465a31746a654d6d6c72555531315078686d697a72673979397831496f576842544871394e514b5167754746693035683538626e61423133494d5330626b6854646f435648756c6a674e76566a375861493166547034513935533371533532487666396b594d4a58357a4c627256314d424e5666464855456b36352b61557230704135577756463849702b5a667870655a4b36594b5a31644454544e2f514d55557161643145566f327a6746704d414b6b424939756565674e316c7659724f4d49657a6a37693555756b672b79582b7a6e376d2b4545616972356e2f5831494c3175716d307755504a33796c59514c73427256497059674d4a6e7a62464446646f643159426650796e696672702b454d50355372686d4568506f4b6c6a4a622b55584151584f6735396e74637a2f744e6f474e6c573074674344413933736a6237784568486f4a386d767a45546c47365356545a7a51376235484b36645a4d5355646a4b542b3137737577506b6a357776337a396e4838504345792b622b67503131683762595a3136445969524e4854644b4f686f47507a2b315079783876636c613239644b505261587334772f774444693666644b304150525a764d504934784566446e7a3835544f56484e6d64627764424b2f74716e644e7867465277686d4766696d4e62796f4f43336e414e7764694c524d34675166797631414b4f786d646c797330783737554d6c784571644e526251706f5671484f66573259624a766c6a6f357872347834456175455a4a2f367879474e4e486d656e6e5447314b2b31495135416e38424e664369584f7a622b396c304a69352f476b44485554464d66736137365932652b61616b4f663042507844417a707556706f446c4453364e4b5639693253484e30666b304e71656f6c5266496d564577754633616c4f575642664931587a65796167517370395a486d2f782f74584c5975614d4851557a3837713149373178747a536867397261502b304e534241424c725354396f706b384d366b6739492f6b7468354c394d6d72726b415271617746766a49366856597562354f4b3972475754394c76413978312f7033787a644556663041566c646678784e786444546a5479514673716d7a497a466e50617356494b427165716e667871624f483372654d41456f5749487a6a4739436f7673576b394c6f566678645639436576523148785a73746232547a7075694264442b4d48354c6d4f616a334a574a47426d79616869484747566b7367444d6a367473787430394e412f73614c7170327342623671644a484c477630717a6d637344556c7a666559422f77444145776c614133526d766e6d63557a6331396c464e696e765a57795346335a5a693075386b62512f3556385376374a4e574c66652f332f4f723248372f414867726a306143346336716b6c315a32644e6d72564356674346726339446e496258493664515370355a594b796458306e4432586a694d6b6748734352556d677361363973624167433767386169763558507a77317673434f6144574166313331516a5154444b6e76376a2b6f326a3466314b674d53717163646665695954353671654c6d6c36626d5a46792b5a7462655575416c49364a4447747075355030327230694a52797370424377523539674b31494f4a6336684e417559553134766b6d4662682b4978355a4f41704451635436435859512f44536179583961676771417a626b6f705674514c6d717a3864614f37564361596c776c72754d4b4361566a654c53393034736c2b776a76424d466e77794b67784d317a67324a3361715a73736a7a4b36467566625257724f355742795378382b61484e5575685861726e5a2f366638412f5171506e5a76396b68394d684d414a503561453943466b2b65443756677a7a775133533862446d5861485368357955656b36753757577670715649516e6c4f6438336663516441445a544d4c324d374e6f744e6c4e5032666456705331386d643064465853593166594a39515866447836327157514e306f5767552f50724b4941763131757572593575694d794e6537566d594f6a497166483577732f55504d316a363457523744686a5776322f475a676d596e415851574c71514b3546712b73746431734953755377656854724f555445496d466b54624b594d466373756b6573526d3335536c645a536d63444e6f715a7977437a51504b6f565032746e663543476942507952776a786461464c53766d647a6f392b76764852566e397248674c466251414a4434427a70554239522f57764b394b7265692f3643585555352f454d5348627935454532706e72653564584f665436494e55612b464d53666b51564a4e455031624f516a5a4b627a364b696145442b324b6d4d7447644b667139305a6b2b3170546c55756a7255444c33684f734d456b78537757494450555366506c7a6d564652723558435377473659574f65445149557a7a6a327739626a56742b77744e6931386d427a766844706d48543650384151634176377858334d377744304963387668736f383270504f374e705a78737a577845554456306339722b33554f5271536b354a43616b72647958336a485963612b3332627271664d63544d47366e51624b65767131514871496f314b786c7a33733347784134667277787331395a374c4d2f75646e7266783667644c376f4b477971534366657a7137755841646c34396e577a57647a4e715552586c747261736239584f464c4b504959706447394d6844315a4f3079775931712b716b4c5073756361572b2b65593278767234674f686d7a48683664757a43785a535649306c356e664657557767372b665a5658517954524a434c6e4777666654596d634453707a3651537a72377a706e4d54306e492f5a79526f55432f6d5779516455614b5370326443535733506b303462482f41435a396574617a5752386963666a794a516536625668467a543973796553442b726c4b546e5a53787a704b5462386353727861634d30384f37664f656a6f615032436f6d78356b564c31442b6570362b4b7051393466707a756e5542534f674d684c565135516f59792f624d35554c7a382b5a314e7036307337637244463353575849553054304d636d54324c43467874556b452f4c6e322f4c416630304f38596c677969656d6651625a7a75773672515a456350326c7970504e65305957386c71434f68506275664b50787a52684e5735692f77424a5537666c675837346c586b2b50346d625035496e5432633633453063665035484c6339736e596561474f476b5754325571432b4277355a4170504462307670735037456864414d77695357534c556d55744e6b7979637256576a75624e3541384f576648437a2b4f6c5a38732b31524f6d4d4a794535336455372f4150633665646f53476e78735734633437714e716871485378307172616c5764522f434f7178447468306f645a56425272597566354f47464e6156515438584e385366616f4358694f4a52697a6f356f42434e6e6b4f71686d7665767031554a47674c493731714759575042346c474b31544c454575486e736e71556461564747776d544d7179633570475278684c5a504f324d70343244697a3647466f4c71753137595573545043553932687950384159396e6d41334a6d6f61744a7a46572f5a6b57643475704f704d6a4e317559766a5a4e5a71723061566f75504e69687a536c306d387a4c6c75702b5342382b34532f6d51382f664e746c784454734655593532355a34534c53334d2b484f3071655666475843683069486d502f4a6551573563325832585a563543794854682b3965543839614a71762f55432f5133745559395546496855526c6f7a387458656a697232554978723573546162504875744743476430723233512f496a2b576e48366149314a576344354848545a49594a732f6f4972753256324e2b576679354563756a484465797263724e5047615472643564316566466f7973595654726d436952524c5279674936775574796e482f5671647142526d37347965725567717164693475625370304354786b614764426d4d636a354c773455313059614f70755a775864644f315832552b7a756d6c615a6d61784d5447594553315739586a54512f6668524d5547593965644579734f5a695836433355395831767a636c6e5a6d324d354f316151454f4a736d5459435a686e475257473771425a6c557a53357a5a7073716e517271712b484d2b476d2b715772364766645168613179706d526464396458474d6b4c2f6d5a33666370382f3942454e557376456e4b6571594e42574c78573675747a5947317a6e6b6d50494b39426b4445754b5072506f7a75304f6f5359316d3773345543304f4c41463435547a5a306c31554438554a75727a556152356f69504f54536a494833536f466646697359785762767143466739446f5064395a6e66366d59784f425a56314f4e41764c67484f4c7055393553766e65444f764a6b6a73464473782b56796a2f71354c5a59342b4b70557567324441616736524f476553424f7376416c6641666c727155375545576172756f524d7274614c4e7a52476c6b63357878397130506971306b6768505742396c7a6c48533533422f314264655067347474696c37574c73364a4e597a4f3764564d6c4f445431576e5a4a544571486c517a6537744878395877756c78774149645035513751645a6d5a374d5a6753374a7152483433386d625062317a4c496c56354f417447644d65766c5758614e536531614f4f6b4658647a61424e695250374b7541343652363043564c6e38584e362f6b45372f44374c313161622f6451375630582b4f32555a626b32446e54614d36315a2b646d726e71556c65772b776442724a4572706238553262386c416e3851757457324f5752535871586e7a5a65486d4e78653644426e6454393538737a387952354a4c5337446f79593268597a2b4e6e48557173354e7a6a534837376d7048354844504d71315a6d63356a4741553946504c2f414551384731504d736e31733858386f3872784f5a54563563766a464f67776370326f2b70324e444756546d4d746f4371686e457141334b70417a62384d703175565374467069746f36445476314f30664874375730315a324747644c7135796469612b627366766b7565794f343639695067756647795364793338576775432b73476c5731316b36707730695a6a4d784841527a48385872494e57533976644a613471637a547077352f6c6f666b4e784951684170324f64397250562f4c47556b344c5766485446397341347430314d32746e70504143383353676b386e4f33546e6e3349317a31466f66634138706e41626d3565674a364d6f357133786a4c5a504e59444749637233322f5a63773666595039547876587a6753716678786465316638576a6d5176783058426874646f726659764b4b6a53794a526a375752386f6f534d76334c7837564d4757724e73622b7867486e4856336375304435555a2b6a39575963774f6468355944365242486a66593764487838626956336b38706463433671686c575a5567516b634a4b5371676e765455546b6e525a472f586e3263305a7063366c5847427476616564506e6473586332544e79655a614248575036396a70692b386161654251366639554d2b454c6330783478413242384e6b315a72504777706652393751697a58356d5a3552794c546e443639397761484a4a4f4c6c6b6e6c7a382f5563774672666e4763377045677967514941714e774d5078706b6b65587250334b634e585a45684e4a714d7373626b56765452707a5239315439714b745a4d656671396a616a6964583747722f77416353745a6a526a613237355147336e65787458363148457246737664642b54545268785155397252396a4a586f3344464273636c7a36456661736f2f546a5037502b336a4f2f636a665171596975334d6a6f6e2f6233413576546a7a7875677655586f6872654d6c652f75594252705267592f334f554453314c443070334d5437695553307548365a716d694d41625a566c7264723135446456624e4b45756973476149726c6e316d52306c7939767363447062437a4364632b4b6a50434e63714667613577704f7961687849636b5337694a68597575584a316f6e6f66565150695a733756554a3261503273314654467364626954394c354630554d496745564f59522b7877476973564b442b52372b5450616c2b74663546346e324f66586a396266554e2b685052574c7835526c6566364d56424f544c7156725337747963306538342b6f67503767494f594774365830464a78576c757362612f656f2f70522f327a4979775037616e3468667954566a2b2f544b65726b796b78527365366e594376526d4b477366716f627972637134706e746f37534c70725a7a486a6a4b6e7864666a72366d5045625139304470765a414e634f617269446173636d4e676f6c74572b7064524654526f4c5a4c58505a6a304a2f546946685658754d707055384d7a7844772b5355643151644d6733706969726e4633612f2f414236326c596635584f356d3679654f54503841445631594f51522f4335546f7a47557934515631366c2b6d3058716c6e365869696e7a35486b2f6a476e33794c77667949646251507954783765796e7836486a794f63307870517a4670317672734b56795852436f444b6b476c4b315472784d313439647778384a387930504d6644346f71384b4c786a576c6c564e35666b593266576e6b31772b54315a393338556c6842554f5865356c4661624638493270734c34586354516c3030576a453447736e726a3452706561656c586e4f5842585a44354831554769787559434c4e436a57324447792f4f634e667546672f637a724763616c4e4a436d42733475744a717666725732335a356a6a642b4a6e3542666e66562b616d6a36432b55656662766b374a38397345586b323665684e6765502b6d326a624c4e54716144644b326c712f49677738306c392f642f32306b524a452f66473142394770545339314e3472742f2f414550544a6a2b54594265486554303557677863586a3039586a75396f56636370484e4f4a5766626f74726972636b74797a354b4b71526c44722f2f414977432b7a362f2b516355784d54584d385234482f37796e35312b52666c663634463462365a655162574836472b6937744444384e546857364a352f6d336c47625a6e34323935446f54543678636e6c6470516c48425037796374646a666e53514e66597631765a394b4e4f7562647177347749386e465530483874784a686c7a4e587035316d576c64576c506b357444505a7a4d637458574565673751654c32632b7943553858385a67616635446f783341465674744731716c6f6e696931757871595a676b674c36504e437461754965505a5436577437686e59726f754576645362556c3767554243326b61476b766c48734d6167437a70694d554e517871687a3946306744435845796c2f73557a724351667630766f67772f77423953344a6e6a656d666d76716476654e2b436544654d37336b506b2f6d4373764c3863385977344750753136613559586e42684c2f414a436e37547573555032477153727148476b57734d65386f636d32324e30394b69512b7266706436706567766d2b37365665732f696531365a65593479686264346a35646c2f47363935484f7457766a5a4666776734586c50472b522f774246376a375230584e456670785731627875727a56466a6233344a2f6d566a2b6a54667951322f783139543848306a794671314e6e7a5333786c4565504b69684d73522b515a305a565457626d4f3531677371576b482f483978532b456d5948642f717361756e4e746b616c6477306a3744793657657a337a7359647757514f6659716165684655412f4335304d3438635538387565524d543849395a375064386e5a77494f6163657945625a717153436d3432695044377142564d66453041665846516b5a61325a2f50614965356e7863556e37487a306b587846502b2f664e5a6d4f6e4849737a303939662f583330795932543039396266555878456d6b37502b7a6b2b6165523545434850313341376a4853576445685956444864344b774e7137326c2b67497a39796155743271344233794c386b767962336b6452354e367a6570753141336c456a47443546612b5a6f30386c7343527571706a6e4534395552576a67633751616f784432422f774b6f32616664577365766f4b45706f4b6a527271315a6b56763178632f705855366139472b6e68746f6f705862524978756c51547632723976426648476b6c414836467074302b486c2f3539656f426161753449797a4654324d616738784539694b4f544d543161474a6b5277757254775674304c6e667466474f396e3257443850744e526631544d3533416448575857567236484b39445747636865444372716b5651697056457168367868334d36743133524d4f73503370492f59726742777257703378416c594c47476d617a45486b317441557977396b4f6b544b56524458795235614e48752b755169564375695075556c335a6d7159333431637a457154357a2f445476377552553249304a633665696174794b7246356663746e49357775636c6e303531732b456d6a38426d336b426856784b58476c6b78457a7767522f52385667316443335538586970686364576c57457076526e6f7a6330494674726c436e354f6649344a3433455a4237442b4a7a2f41487a6d66752b4759746a684d634276522f62752f44444f2f4c4438712f534c306d305a644c653861506258354435314b4a43434438557a48523647366c49677876537a79783643397450577a664b724e53516c48396861315a6132724f6e7032734e31663730486f682b4b586f64362f7744707a346e2b4e5067625053366d37776a5a315049496364756745394e4d745252356d68443272534e767a46514e563176567a392f7a316544326d735161744f5873313957394c54653234577a2f41474d667a4e3848394e362f566e385376563933696b7546362b545a6448682f6c6e6b4a354f624b3379344c557a5659546458712f725a61374d30702b546b7a71307a566830314d2f7743795168583272546d32335572485a486f327a434a75665a342b476332474d375871643359517176463263734d526d7230556a73556644486146317730716d564754456b343650616f707273304f4551377a4877754f33616d4a63584a707074454b4c66733557307651755a3548553758766a3554707842496e7949355577713477666e4b73615a714856483737763432596d5969593770436d4c344a6c5a755234335242444c5369533763444d644e735266764f6f5a6e2b32696d5143732b78646c38716e6f70654e55782f46373247373535494954636d5a7a6e7049692f354b2f6b6e36502f694a3659362f6d2f726c715965324b4d575450384b3857436a43733830382f774276695048572f57792f45776f6d59364f6a536a34775548374567646a6b6c79396247756776536c7453324b447779666c502b5276716c2b576e7139356a36322b6f7568337568354c6168554f544d31446337786e78394f65452b4e3433435045765574495a3638394c652f756333474371616863644a6972314e4f6c644f744b774b4f6c6246516b54535679706c307375522f454942613170634d627446665778564231693173682b5a6b3644416c6e2f414a4c49682b54334168586f585563305650384174382b54365157444e494e63664446444c70586b6f593165316e5a584c556c5969497446335341467161504a62624c654166305552547a57727a4f325468744e59344a72474b556265577a304f4e714b2b63486b2b654e6956474b3643422f736477696d496d3936754f4d542f442f6356364758316c6631757237502b7250657a324d486f712f6358375034692f354e637661484574767947482b4874492f313866654a3133313852335a2f7369666c413330663952764966537a795458736c693870666a5a30484130476a4c6d664e6f4e48656438514f466f454b577a6d35557a304339487a546d314a736d4c2b755032716d2b4e306477396b6458674f64352f3461325878725867385838744e6d35672b4f2b5a343948686666494d4c53326c4c76784e787558445a504735334d5748616447306e4a6263374b5431494231535755655a6e45356e73774e474d72306c713842386e7a7372386d66575831313952742f425235435770356a6b2b6674386569316a514e57516b4b2f474e7164556d58515337733262744256555447564970552f77437a375742724673782b7a72576f3163386c3950652b702f72623452676569315072686b5a36664d5a4e377a447a4879487a7a4b386d322f504d3776657a6551596136434a6b4970313769304a57736562756d5a6972366b36327a796a704674745a6d3242542f774466472f4968583435666a4c2f39625a3439646c662f414468657558636a45386c2b7277382f5a3865384e3853746c763351737844303273566c31575279716a625367327353366b2b30326350687076374a7037395464505a714f526e6f6e2b4e58696e72582f62727632636a78754d5055667752336e586c486a506c634c465a2b69726378334a5675654d65567663524d3246302b4b6c6b305a6d664d687076644d6f597a436b714454766538313175505a734f53736c54344b4a436c2b48742b64307050754b6e6578793278386a373069643267684553787849795945342b3077593668783941512f726f2b44362f6f4f6d333476656b666f583377772f502f41436d5055382f38716c715337586931677454344a346834387566765369596850737073324736435764656771562f4767464f594b58475231596174723578484c49315a2f4b627854784444395a393158674849452b49614d70362b4e506b314c767945723073664c75314b6d4c54554b5a313931694a4a5255694850394b693644587341714c36637a74356f786275464265503531766b54676a77386f3968304b4276444c7967537930536b52516f3646736b4c685a3876424b583375344d78422f69486638414d7a4246356959366a666a385376376c2f774357663455374f646c512b522b5465526541306a6e383076542f414d326f754a43634654693571683474546f44316e6a4c7544564f376970756b306d6653642b7a465141696d706f6165724766692f45505a422b4e3335352f6a4c2f6347394341302f555030346e386e395062483938533867386339537645322b5271386133426d717174797a314d6d646f796d544b7358712b7a57712f30776d66315a3658457a766d583072364e2b4674747649544c306f2f746e666a6e364d2b70506d766e6e3431302b59654159766e65666d6167654449386b31394c303767314d4c514673506b506a4d313558386e2f6432655865316d7167307a62616b30684f6443755069327465396131767a6266356a62582b643059736e5a39492f554c772f483954504571726d352f6b574c755932543558346a57717546786f6e664c745273343761486d6574727252475663707866345441417a71444f59694a33526262595678364866675a2b47486f70643556356436482b6b586a33706235443576664772797549414b754c4b7a3871577254316647632b39724731344f476431454b366d53326b503173336f7055784e593970746656314c37613274766d6f3463662f4b5250444f4f394576523379486b795a5a66475056516346645935645972756c316f425a627044717932444c525a585a2f47317842396450596f7741522b4144346c76563746504e6150796a7946465131594b7058384e5375773548575271577264622b746157506e766176522b5469324a6c574b7630326e697567416530454838394239774137446d7669304f4d6a7035777257736a4f6f4957646e4550734554584e6558754a7a434a5a4c446e553953787a2f6149703936335770326f4564496f2b736c4d4153446248646e6262774b7261307653336a78624b557a4f386c5948584c2b486f4358574c414445542f5a4a4c546e387675464a376e434c424434786f4764357a78464a503841427748742b56793571567046624a574c6a6e577676652f7234556b42652f6766442f56646e6d476b6a2b794747674855797658544454415533503841717237504a5577484e69372b784b7a6c556f4b2b4c766567546a42524572692b652b2f446f50525a2b4948393633787a776e78587872302b2f4a50306130664c4966473857544b543535345a71787132625a7338667279614e3258716c31466a50385234665a6d443876762f414f422f6675352f58427165797a4d377157485662462f763966322f505372783751332f4142487737316138313879376e564c79764371634c4979597771614b4f707276386e74306a536e504d6e54383938366e742f7a2f414d462b30534965662f43613175453470556564722b34542f64792f4a4838393758654d623759505450304f6c6f485369394b66426435796f374c52347a75666f655556395a786e6c576973685a326347414d772f77435866684433664b50626f2b7a36656a695a35726669484e44776a55386f6938696c743852314e545031523651514e3863647135756d4d7231464a326250586e2f455251756c484e6e59773247414737396e786954392f77445731717845654d6a7331365065672f384165542f496677722b4e7850417657583145394a6649564d6d5050384156484e6a7866484c4672644c704e444b353557354c3079684c596c794b7857746e534d557a4f3656504666317a5776374e535a6e64577476796a314b663278664d76376f586971482b6a33726e364d6541656833707236635a386d483435646736575862647553347a4d3032306678504c4e6e72423738655063743538577167417664514b476d4c68344e654e436561747431374476314a3544565379584a386a646a366d76505570656454666853645a6f665471594e446f387465617065744f6c4c31714373464b686d644d582b444b5847337649446a6b68624b7a556a553737344f4e362b4d6a726d57796d6c62745069755359706644394e77697454766556426d6e3347645050307563773864502f79685030376b2f464c786a7964486a45393252522b574778743532765a374832334f7973335358736258694d7a526f4a612f4857526c3479504a6b6c4d763632615837704d364b4544365073647665546e723773655362306a6b3533797a475648624d7234325470366a334a4453677272762b6d75526a584f515536574d636b3342777666302f69722b79732f333962764166386f63445179664d4a615856756f37564a325334357035354957756d4a77547668544135674d7a32526976732f662f414b416f396952372f714c323330706a6245514e572f724d4c6f38562f7549756673684468463166656b7766615843486e372f516a2b2f642f7743336e2f36663631485a4c2b78392b5a30483461666e463443506d3271764c39495058436e47394b765579327a5448487a50484f612b33475069506e6c747a4b754954486b2b52463762714b4f45453250743672564231334665336c3972307031644b323374616647422f51572f49447a615430616234393670364d6d6f72443851386f6867382f6758684e2f66505444796a732b58712f79484b58527a53325154363074504f756233706c4e5a4948337a59515a336a556a647978772f7548667163642f31437934736a4f30743969723834724b58575038417377614b59376456596b5734416b357939695676457a56556c3952494b5458317a45302f3070306e356a694c2b613370392f4b344b2f434d754c584479483168533632366f6f2f34722b4f67622f486c744e4733745553614c497661736d4166744f666d595076355334612f6e36644b324a7a50776a79722f7742776678724e394a5058767766782f436c6f794c45656c2f673164523971684779767445567955504e45734d71732b6a6b5a4c34677839696c712f774150667732737050304e4764314c7a5044694b6d35357434376634314a645a66447a5377584d784c6536564b5a6536506974427a367778307a4953787575345746474247597236484d6637485542386f6579777157795639365a4d765034316d5244716b2f783236774f357a4935565a565474536d65656b7571717a65664d4a304537324363774b72414f7139346630444f6a4d7950656a37646d5455784d5448645a4565326961576e734e7a7248735a6e70597a5153317a4d396848774f752b6d48533537324e5032426e4a354a543472732b4865523474724c683862386c7937455a396d7650644f796278375454584a414d48782f532b51305a71566b747151542f30424d52396f667063347a756965364a4839416a7837316b38432f4a6a784c302b396676543754627465466566654a7862564374647638747a786a626246526d61766a4f6a713434314e6a4c4e734a4b6447435551564a54372f414e44534a75636a795a724e4a765765315555373631656c6d734630766b506a34663441712f50424f752f4c3671717169365554326c49775a5237513531436276754c52434f677146714669303350537030307433534b383861394e393363386b774a64742f6b4f6b5061737a6d4e664c4279355759712b505173566a302f545757694d51533154796c5253696d62733379494a712f633734377a61496a5055627a2b41654b466c7a5a6b723470594a513064456c75707a583534307757356d73554d32617a47585853364d726d5a6648414c69706763366a76574a4d6c4d6d774767582f77416f422f4a574830622f414178782f774164735457706435312b5232316d33542b4d356559415a7556366365476c6c3656653055727338577978763869634b3569716f6255594a374e3779544e58534f2f736c4e3272766e733148696e646f792b574f584e75306f5941556f537a636e355245337156722f5a574a6147624f6b692b706d314c506a7669506e76574559504e564176394b4a6d4a3453453958303462374d7572783278577048624f362b57464b2b7a3379636a343578426e304b5a30484c5773675a53376e65676c69665a2f714c33632f7130586e763468316c656e3344354b7a794634454b52616c427a74617a34784e46484f7a4f726c71614c6834794d6739717638534233576349666359424736593663494672747a594d2f2b49566e672b614b654e6f764c3954683162416334584742395a2b766353364a2b4233712b2b376a533978394d5257716f39555039696a387338577a307538692f46447944536d6a327646713958796a303436387551705a6d376c4664486b55727146724e4e6a704c69534b506d486f6b4e69765979684a6b722b7544326e54357665514f69763544654b6a3552766477396541633361724c505479654d3658705a56524a552f55697735307a71516d706b506a38594b6e5a522f317764496e39664a664e2f574e4a7845326a7947305834472f687236552f6a456537367a6147456e796a313230386664757438736e696c6a302f48632f646654586f3448694b365a2b795a2b70636948502b65334e59442b7143694e4c676b47626e3955316453392b58484b4f6b6650555072383262526878356d58733467556f4c626c58384e326b79535a53344d576744344c466a30556f54386165506d675033324b595173377a696f764a667944312f486358792b727a667842764d6e4678744b67622b75324f396c7955346c453762717448596c6171687a4a30704270722b4658455255632b452b7443593778534a6d6d4f4935382b767635762b76587044344448363566692f3659346e7231344e4a63476e36692b4a2b4956614c504c6f76447145614772354e73654e725256536c32314749352f416e5830362b7851504e70754f6c51663176585370613031766262623138786f70482f66382f412f3870737950784438682f526a79536e4c337354507a504b6565517a5a4f6d3647485630667258614f66354a6e6a4e5a48374b6f5933395a4d6644424b512b4833484f445a3950384c7136633570596168657166693339676e315977764b66557a303439552f556a3051383970774b6448416c385a3570655378582b55616e6a67355565532f4538307a364b69734851314d6e33554c4d5161427375615a4777525270576661367a69315974556562316558703741313675315461327162646e347857766f38376e7a484f717250352f487831542f4e2b754d6e6430716b4d534c37506d6b4958706438686430526a6841396a503841615a33773866384153483036324d7953442b4b3867794e717a7470616a465135576a6e364e5347576c45487a636a6a6e5a47545137514a476d63306879357a6f784d2f4d39706a4e37515052454f76366457654d76302f4b5a2f47356134384b742f4e432b7453322f556d7a6e7071747362596b6e66433266577334312f6261784a61654f4a30383942635478346e4f4f3856316e2b7548694a2b514b596f4f2b4d5a71683542487236344c79574733527830693959444d376a5569716650543066644e775a6e522b7a3677505941484f793242584476796238474c79377a4a4d4f75586b33682b525a43537462505a6d74784d3379756a506a7a394b587439656775536a576c594f657841722b5a66454f622b79702b754d6b74746b34722b4b4235772f77433952366e6547312b61656c666c3865726e6c5a4a5a7434666d476c4971725551374d73727234374f6b32776f6f347632792b4d726352546a5130716e4e64372b65796357647673745a327a486750485a3670716e487a4c66675648494541365777336c71416b435a6a654e6541326f426246716a6a4b7757484d4b69503555762f4146494a6761656e36656e33694947664c5a5a564c35397234706e6471712b675658564b3530556f637471326359496736675366336a472b342f6478302f532f633575464c65556a644430583854302f4a2f485941716f464d474870766a7259707a4f36494a31633350306c7a39726e52336c6c523631326c7a764f39396e73396865382f64372f414f7370744554314853442b32782b5875352b4c6e354962336f703554557766537a316e386b626a5852423036503841772f31476e58384f52735474594a46375872354f6d384136667638416d5558662f5a2f574774707871553352326f39594871743534354835446b4f7a737138386e5771635277323865354f68426f6f557676533552477668704c674c4a6738595074494b52396f6a2f586e6a56723157395466796b6d756267444c71626353344e47505076747473594249754869526b706143526536576636767650334e2f6652506766317257756e6e505563382f79303357656950692f706a6a6554327954622f6e33717034336c73782f31504c62564c722b517a325843455846697a71782b51656b44752f6f6c4233396d50752f7932303533546161386473433776384135534434746f625070462b4a447368494b642f3568713473707256415a726b6434696c4b685831482b53342b4a6849576a77762f414767412f7744752f71767355347471676e2f61772f442f414d582f4142672f476d54387166554c4b34587168366c654f6a48345a68386d4c354d2f50304b58426e396c533333744b3752754c5059532f6173754348506631773854384d612b704e372b376a73314f71432f6b352b664f4e2b4a30666b5746695a63766b6e72625a4e733336583374426150463876636f30556b452b30696558747772544b756562737333452f4d446d4e5a5279595a6e2f314e4e473272695a356177504e353638666c72362b65754f6e707239522f5558793779647438394244342f774131503469415a703945627a46506a754f6270353831442f6d4a446c386230696a3537584c4d7847627470536c656c646f3164446632474e74747070684853745057533673757a5a36724335704448704270743055677977426c6a6e4a345057414555636e476d51653867766a6a6a4952524370794e4365646a4231675a6e3567435862783246744678566c6f4d7a4c714f41556e62692f7836426c536f736378396848385458514f3766344f66335a76485048302b4e2b6d583547386d7764587837476f3865782f5553664f36724b32384f693562345a764c3235574b6c71584b6a314574526f3859507642494e50367276682b337a367673397035716433776a304c65436574666f4e703463766e506a2f726e364a5530312b4f352b6a4671362f6c2f676b576b374538686b3047565a6a722f4966764e6f732b5375784c304e614b696e6a70454771564f4a733472567645346d73346b566a2b5166393244384e665148786175437a3164483155386c7a4d574d6565492b6c6e5a7649724e3357765870623539763037366f493772763579583964722b4e776b336373534d306e756b635671657a33314a3430322f784479452f6d542b665071742b6348714c4a3542366a467a4638423866302f62345436655365513165535932596b6a2f3772483654484633573043644c4778702b78795845684a735330414e766653303947756c474b7a7a6a55783939455163697950686f627264376d76646c4e5052717a68633075643738512f6f45754f45714f4b4a4967587775623879556d4a38544f4d646541642b4f5963303064396c7a41632f673047636b4b533071414644437147696a6b597151746964536a6b37567049794171515839506745464a7a4d7a4d356b4d354a512b7a54585a544f696a506157673270644f6848644f2b334c58312f444c477a7a6e4b663569493338397954637a4e2f534141474f4f69412b30626c385137546453375663327a73373032716131626f596536424d55397438366e4a6d4959792b7935742f624f41596949674c6d382f7048486834672f774350655249686c6e347953323963464b64593547624c5a426f3675746b676c6d4e7a2b6670677454515478574a69667654384d78415945514231532f74632b74442f4145752f4d37306b31746a546d707a5055586b3368486b7447625949534e713236424a4c79434f464468304536425a2f62466d68544153596f3454676a396e3959363964326e614d63616a33342b4761326e70426a5242544276417a4e7353786d704735717768553333494b4b504f636f45366c37507646784231307a42644144556e496b796333783756322f4b524d504a646537536c6c546a634a31564b486864323676497a457a6733596f6d473269664f59685654564b6c46446745666a4c324f37536e525838596c4d56784f625277486c522f38416c436634755565562b41654a2f6c743450343355765a38425a5034723675757a736e6c724c2f4564624f2b54466378655550486678737772764e696d4957455a677a334f584e4c374f642f736438544f6e62347579504856594a336b7464703572794f6771674d3254306a4854717661304a2b4d4b706a3141717152502b6f423444557a4f2f32434a75643376724d785044694c2f77445437387576794d394c6f37387a7854316a38766b3861542f4745486a3236504e6e4e636954526c30307a3969323533665971366376316939786b4a676b506d4d657052375536656e614e30303643772f4e50376a7635672b59356a6f4e5831416979344c55556f705a682b4f6550596578526c7553504f796e644b746a2f7744455a785333676a773577344d332b436d7457754b2b7a36504862556163614e56656a7532612b3535457a79445632537274665470336c3978724b7668756e2b78505977433972756434786e50395147487641364f632f77415861524534323172744436363150446251585a4a4864524e6e323044646238524e614c4f49706a62557a69334d51564e69666633725061507a66453732414376367078374966793656314b364863435a4276583163584f464f4d793462315638544a62515139584f736b3437415130754c5071666b51667339716c646e5a627741476e464f6c69367166325a335034487a4b526c6b7037304e4a71574d5358376d2b753149367130715277576c775032594238546c4f74377a79416b6f6d7946704c703979334e4b597554424b70377951743458714543482f414a49686c574b76323150584139774a4c2f574a2b3576386779495547746a6b44636d65644a69703866774d6b58552b4d7638414e516f75443667436f4e44682f72336d50666a3430472f2f41454f57352f4c37697766445046764964587a5877634a7376546d565235566e4175395752624e6e5464466b7a6a4b67467a73483743306a2f6c775565376e2b396673393463502b71544e5972596572764b3350474a4a4b344e504e54346e70766f757a4a7052657a487a426b626a356662726a5a72334a415962432b544f2b5071694f7a6b43756d3865696b6e65664e5a7a6d4a3341503439346a44357258353936652b595a2f6c505966577a4833664339413043666b454d32675551785a6a6e66457a6a744b366655386b6f6b5a7735366d4c7563333257667178783854624732617a786765555065385876384146764b504a6644644e764a3944413336384737696c675968707836444a6a6335584770617868735353686f4d534d77595271446e532b555053335a704d394a48337839584972577952694d4e45344a354b7a7457636f53312f7245303273633058676d68504b5061507965315078522f507a2f365074476c75504e33534c6d3859676c787646423161764a58716e75482b5130594d79585a52337662557348586e63786b71795352736a4c7179397a564e354e2f32525334354f48457a6d5a6e78414e652b6f4e572b434937706b54797646573370714b616b4d30374e525446364b6e2b2f6d44385a5563465a683058422b6a62326b415372763841554241504b4375637075536b4d714a4e7368387a354f41356936624757335032366c3173597a536e57576b766e7358302f63423156703546384a6759666d38706a754d626835315679673050744b304a344e6859547031307658434d314566326b754d58416650595247546c473737507867446750522b514a71646b7a4235415370465a374947493257544a354c546f5a3078702b634a4841546f2b707957544e35787a6a3578782b316e5765355a67506f6f73527361476a6f333672757a555a76574f64717266626c4d584d786c4e4e725247674a70516f6c5a305357594f537379436c776d6b7a494832684b77636a5346684733625a5470685472576e444c493747526f4d6c4b4630693247524f344e566a6a41512b77683375734e6a456647703461345744547831547a4a66654c61376831494a51385832677842354c4a44324252774346794666472f76525677694434313839796471396d41342f692b456c315654444e536e496e484b4250464c447261436a6e63517a4d6158744552574a414b2f655a68326369417935376d364d3765384f2f737672537365695853562f48564d58383355582b786377763441456d685a6654364d386e43556e71652b2b5a725663443242374b396a7a79464b2f343855425079657637496d7564542b422f4830636d53364e7a4b752f71663978722b386d686e6573496a3738786d527134336e557162766f4c43776f732b6249314e366b41633664724a7032554a3565744e4f644131535443686d627a2f736346444f642b717575674f53544d6f48674d55503841564a696334367941636c644f686c486c2f4e383048784a6d4e72566e6131623770364b74414a654d536c6248417776674f6234773662706b756178544146775438663142664c304e4433396b59344a786e6f645130654659734c6a54417745356b6d596d70695a6248772f796e754943616c377451416f372f73517a2b6f6d496965453567522f6274566f337571643264396337474d6f69596c3752706633526e4d6b4a2b5a5061524671553045667435306b7a732f3553766e73344578756e6c7a694144745462514d5566566b71667642514a6b7272754a4a69535454776d576a376e457a37513845706571563776654d2f364d666379326e336a59503841454831657a2f512f317838453953645345395478374c6f4247314d2b5532705a6d33477466456476374f3373597a73654a664b516877506846704a4a626a53644e577333726576635051393636792b4f2b542b4e537071586c76634232366b6d2f774139326d71724a334c55787a46587030673272443973386546394676316f2f726c47514a5443354d377a343662717a5044416f2f302f7a4d2b5451304d2b74474c394f77654a376e5a4c6470766a314772626e376c543538505779646f75786956784464326954396b722f6644787076564d624c6a6572303632636e302b796c4d4878355664477a62706e463939484e504d50436763366c6374376c4f6458644c7a5044374a4341794e4f652b426a686e2b75423059323572544563636a59656e314d78665158306c39512f794339537178386569384f7a717461544c38676341327632396c674a6c38637963326e515a3350645874575371537365642b63736f67624a38693131313032327661744b396244785a2b71767170354836342b716e6c7672483573326a57386839512f4b37504b624650616a32386d4d3650715a43646733644f5555786c394e54666352674b70673659754a6c672b6e57735253617838494d2b4b2b5139794e614854736a6a474b633538685961742f554b7030426c30416f7237696c55316e38664575367037654c6f6a616758544e62376d6d667a524d596e453977765748314878664f33347057585834486b576d7877313136374a3463566e302b434b5a3571676e5679746a2f754b353050386546654147633377436241704664764449426557514d4449706a374c32432b794a484f38413576644f6e50724a3151424f68792f72336671724e506f7a745076734e6846774263354b37436e38796c4931315552424b73676a42485739353166523043616c395a7a73724c6e77733436467a56436179595a4a4c712f65766a457442484d6f304b6150727949745a39366579626b5a5377464f3146492f506e39655a314754705645557451646d4c332f7743483742337a6539763941567a4c376d514e6a6c2b464d6269374d2b6f47493565336e732b72584e5848796f6c70715a5979644b75476d6633462b76306647382b55677476304d763841412f4a664b61706655667a526e676e6a6b57505674566c6b5a6664506230755375584e6e654f5965636573676444596f646b2f584e6776366d5a52324f656a677264776f76466f6964746438434c376e716a4e4b754f5844734f614e362f35576c307137636b526c31734d55756b787453424a32334d3738776d51632b4230736a716133494d6e30456d513272757a6134387771654c386762534230334d71683467617536582f425541722b4a452f7046564755704f304f6e3741704b382b4e6a4f676a43475659754c307568473571744c3739584373396735767679557554584566666474503978474a4f574954745a51416634506f6432666e7942564f333977626270347766595332385361715731396f3679437872702f3841747171364d6678797547516b3862372f4148524c2f77446341756172537533624f66714d36482f444a5942706e53394c31664f6d6274505a4f7a6e794546756578686345692b39637472584c494f6d42395530762b572b334d626a2b6748397950387466786a38656a3849394e50574f6d7a307754652b7550307538777a652b53654a3563725739374c4641386663666a356663597a396678744533735466316f752f3748512f7066513039536332707a6669477932312f65552f4b377a54773763394c746e7876307868772f4a7355764764756e4d38533070436a7a36516f68306d526368334f6648396248704a434b4f556a52376b69685057546e306636796a3262536a6d3357794e4b7373387254302f4774444d4235303832626361544b374a426e4e72304b6b58556e534d674d6e352f4468525a73474451397a512b59424e4c6e444777394c644a2b517454592f482f41416348526e62742b564a6c6b696e2b2b55444e504a72305a563132706f2b674f6b56794f334c586d30532f437672755568704a2b5a522b35713075724e343775496a33692f3433616d6e70565069315047746d4e396c36387459363054676269306334364a38694b4c4c4f56592f3836653467474d6e5746464f616e2f615843634b375466465934356a754549663641655953616338536b7a6153336133487531714b34657047747331694e562b6655544a51624f624530634f565a746559396439636c456c4c69626f385944755430614a486a4c39472b334b727870396f3830374b484f6f6d7a78634d612b616f434e33446150436e305a48444532583333415535304d34434f386e50487278454d563456586a36494d78596e6551354d566b6c5456717961356930636f62533431334653513372574c707453655a665a2b67596e4e31494a4967374f4d7a4d7a786b574c422f3439346651476f7979477675614d317a6635775a307a32727a3548426d6a5538696f5664593031732f7770554c7a5a79594b6639626e4d474258332f6c56766b65332f77435165563337486c6d786d613075446a77626d7a5471654a5a6a7673705a2f7742376f736b56794e74466e7871525037786154684c35552b35514b64497848534265336a6671547334756944636e7944517074305365396c637572705976306e543235377371646256366978576a6d674b33474c50333765522f4c50503877554f66474d7878486f592f745a6633707050787a6b78765433386976537a776a3141394d486277356b336d325a6e5a6a504d2f445a7432747175327462704d4564374843473559635378616d386448556f774a704e372f414678362f7332376d70626259643250376b486c2f77434a6e6c663459346e357a666a39712b45626333692f6b7375447a31473851683679444f79576330357470586c6368346e66344f356269306761326c4562456e387665664e523965616a6b3049314931506457476a5070392f637a2f464c7737786e5038723839395450487332624b676652544d4e4d2f664b455261574b45793445352b597462536f2b3543516437473867733753596d48614a425572536444556d5a72744845723832763769766c4835512b724e4466516a4238363866384a6a31756a68654f5936396d6d6a794d50485832555a323975345273634f682f7743692f4e2f7a51614f443741665445326b422b333161576a476e586e6e6d4872532f736b65652b71372f414d5a6738653961387033694f7572794b69624178676239764a6b77576661796f7a3866354a38547036715357546a6c34326876756d367a6f414b77342f67397169752f4e65596470786b59726773372f485438344655674d7a364a31314d64573066636a52536565587730417637777657585063307a6353543971693932412f6e4c2f414e3962783755562f632f2f4143692f55796b5232343368562b665452556b454b6b6f3849386656707472534d594843356966594c70554b543046315258735074464531446657396b6e4768702b5935522b4d747a7957656a5778746c76546e35552b664b4b354531614e474a514c313833504d554a576e32786b49413163376a372f31684156396e713668625868624f36576c33443630637762723862564e657a33476c3165316b385a516c7a70786d4c346d4d5337782b7876654f61437a6330453942375445633778307441762f414d4e374133626b5370645064444c79577464764c4c5a505a4b67302f774166385449374e4c6e5278334a646e736b35796e3753776d5279576d6c6f7a544e7a4571755a646d567478657434585361556a4451786b317a436346537a6a73717a3561437a62752f526c576f703238442b5376653668644a4d6f2b733669785042684c2b517a534972357066486f7a7446383677344e4d615a632b4b5539577962422b49383968454a752f616d5063326d59796e3937486657433366356d567a4c744f78504f73594f316a57546333756c684251777647334b4f7748496f5a7351724b6f6959777037502b7736564e4a574a6451326d757976674331486a4f6f505a6339473947737133794f644e4a586f5262706337712b54536b507a42635270714b7930677445334363316d384b43555365514f56472b504351375668572b50614f525a6f347638617169704d4e4f636e545375715730746a507a6443576f724c7662516b752f524435694c6959476838506659485944474a74573063654164586239463258504d50614b387958743074457447623435394e576c5932692b704e47734d4d36307234754d5148394b73344e63592f5846716d742f6233666d483278364f2f503466342f3667545374794f2b574c305a6263745163303054747a7149797a4c587265746778756d64646e3048515454564b3447644167615549636974754d5646422b537856786163642b424432694c4a61716c302b6d695136774761697032665669356d6e6f64714b67614939623476727341613233684431445771645054704763526e7149764470614e755472634f7a4d4c2f7971704d794f616b79777a47636a6966316a5532787a396e307031772f3839717361552b6151555364533267705266496d6779386e72666979726f596a584b656a526d64504c4f707659624d3279765031453345795037446139474d436e517467544234394d67374f71752b346d4d384d69786a384e56715a7347763335344e446b6e30686a2f6a45536f584d746d5432653561366b2b785139783943705443465a697033796e77515070485047376d323442476e7858787a78754c484769567568506f305354397a4f736f332f4148412b76537a3636614879447a6d6c4f6a4a576b7a49526e4e79644931474b7763494c707574505342397155367a507330677863336d64303945754254387259366b774b39794a366445756b612f6747374c51736862773643704a62523662514f625559654f78464f324473314d50627065555332555a56632f3865445a633666504c55666e4a6e42724e4c6b64677875423465326162532f3341723357554b7a314f345876467961544d6a654e2b70485a43454b336f644a704d7a33777a7a6a6f422f4a352b485250517a696b3061426c306d674b684e51755253395032427a414c73396d6b444b5873346c43356f304a7179724a4b6a5a506a2f566f6f4c516e61366569372f5a524b6f6855787739636247694a634d776e42735a616d6447572b3233546670785236474a4b7472653548476f6b634f646f2f62306d584b466a6d786a6e5475634841347736704530546d346b6f2f6f4946712b49374773476c5038386b756653324a4e5553726451564639357a4155476e5a31684f544f5a5a384a64412f644f6f3957744938632f3841514b3072617352344341362b4e71396a3859665264586e7972304d376d6d4c555078334f626f5853523644696f355359336579576a3638775370497a536137457955705a786b38783237664c2b77425a6e6a665a75397150516e7137536e6e64476d536a6736537475504a2b53523861316b6f6d7a7364557736654948366956356e74656c6e4555704f34563568312b4b77763145616b754e384f6d56584d506d574f656476384148545a3478736d6a6e6f6165794953354d726d6f57316f52754e4667756362475642455445394258394f654f736648764973323038734e546e63686d6c5672774d664575696e72467430706b61755771334e2b314573554f4f6650536b357530644a4c50366b415049456c57416e3234746970566e6154626155592b54626272457a7a3479492f48486c38705a3636502b6c78664f4238335931657858754a564267444e56757a4e4f724c78703432627455314f6c5455584d2b614139616c4f63597952366a334855766d68386e734a5876615535716743672f644c556b4c6b78382b7241686d317456506557766a304749322b7a6b586a306b2b4964454249396b315475305746386b504542307761626f35477a2b316175756d69654d634a45396752736e717a6962664558374646555750504c62464e467052793362444d69475765692b563671343559324c4f65757969365434624936656b664a334c58497650314439437656763062384c5236672b54347a59504874537a4b7a494c513047357363556c32525a717458674a4e50416f6c46304f6f694751754141486649626734356f6d724b74363235596a674e5439444f526c73334a6e59336b4c71582f4b2b524d4f58714e5a6c54664e5a6e535a515730365663796f59704d6e6136596472366c6254346b706c52696648616a56337a7a446d5a6c526553516a7170315063334d334f5a6a55577a364e6b4f72705a674f537a787a3946724c5644744443526453396461584130417071476c725a7a4f4a6a756b5539735a575a5a546f555a637766505955306469536a47544a6b53546375553868567266473568317451506b712b5546463044553772654b72704d705658302b38516b4d654679522f52436c5546454e665a617076494b6144376f587a4b7348506a44374a6a5a542f494c345a41356e75625a583768476872516d3045374f474c4b366c434f69325a793449594b4135646a305a6a5848705753526243636e34364e5453695761657559356f2b387664536176744b2f58632b33355948705a2f423844786266534233552b555755662b4b356332726c3649393432764f386867765a4e72367764714a496a334e2b59325061334e6378776641304f4a704a6e654c5536572b66366a7470343856746d6f7a5169304a74326c66547a7768727a4a7a61696d73345170376f685155366f5a325a64333864336a56746378314d6254635a75434f626d747835652b5264324c347635425a547a6d3352496a48324a736b5a4d757a334b72796b72464f47306c616b792f63556f45793767735750523778776d44594771413135546a756a4175507875544738625972755a305230766c506d6837306f4d645238576b554c5632466358796b722f41486144433679696d74773075634c4f2b2f7335514a6130655647354e507a426e4b435a59535338717479307831614b5a7a3052305557634a61796f5a2f6f49523436656944697664372f74676f4a4a503269412b7269456566436b76703339554e645a6b4d43556470444f5535343147624845333541547868644e337864352f734e51424c37724b364b2f65787a6337574b4d357567494652454e2b5a7163357049726e2b3558476c544a556f4e776b41456276636c537565306d684673533354547347772b5a54412b6669387730383137374a757a4b36677930317a4c397a6945686d58385963426b66456d536b67424a4541417431517a705944544c4f6462363574436872366374616c636e746e55675a2b426d745a725174714c3430457a355643394d784f6348784263627147306c7a32375278446e523645535843786d676f5576356e33353867395961757a7034544a2b386f6e65726b79334d724144555579766c535941626c6c7561635572624b4d6e724f4d6b564a737a556735726b496f31737770766b42584c69536d505141715069516275754a7961444d32394d4a426e4b6b346c6c4461326f344361445963387976673554536f5635387a747a5058336b39696d51734550313167632b2b4456664c4b5965384966703747706e4d726e564f49474e50325661575a75646d4450626c4d464e4654317a46597066324b4675347478473376376a644a78494d4c322f3043764b664b664b553856326c57656e51712f3841674f376c57557a2f414255584b62524a465844597655462b566458326e39456c37456e384a724d65756e5545386738627a35304243437036594f3867486d6b7355357a564c656d574f6a74376e7839466a69533669644357483862456d74674a547a69462f7742424b744755637a4a4279374b4f7154326a516c4b6d466441506b6379646166742b78496a636b714d3950506239632f726d61576b4275554c6964664d4d5947392b716338644e52776e305a37593572476d4967787566444e375a356c6b71504e496f33546a784b684e513079643976442b5278417472624d30416b34614b73782f4b3346437a537a394e387141566e5547567646534d353833786c6e54706f346b566e4d772f77444e765631712b55414c4e5676467059624a724b4a497061464569723564686e53757852596a2b4e686f554830546c583848435773776153334f4a70544f397a51583849454230486a67387841476541754e6a6e723631764471624a312f7576676c556f756f716b616e764f6e37324a4b5576674146672b6b4b766e704b69534b71524d566e324a4a616579642b6c4a47427a5644494c577239767a5378636f706e3778504a67345a47667a3841424435515a6332715841705564433530316e4f724a615878637655452f4a354f636930494b536f6e64306e4d61336f646237305a6f44523855686c52774d6c326a5374633443325768376530354d796b79504b714a5155535537536a6e593771382b5970566c386950654832666c427143352f3251416c437756385055755652714f766855316471646a496c4e69454c716f6d7a356e3538707539794246686344764742374f382b56346f46492f304248746e645a656171484b5a47325a747a5263326a76303977752f3841556b5649444c4f387a3170584459432b55676964545a5a484b72555468365950315a486671524b58436f4d796857684d467a734756563670305a776c4e484d49352f5071796777626e6a38686d667a4a4c33794950336c4f4343752f4b2b655a2f4c477754717a5845585430575761655a5667616e4636435948794f706f574e79306a336a4b5453464e4e43336b34354163495045573379745432616d6c696c5031675656596279494d2f525a797232582f66587830356358394d574f42767355435462787763496d41434945797a7561736d4879774a613346512b6968636e386c584376325836422f38414c46726574507944304f704968763430574a704b634f676c744a354e50782f65306d4f76484f6c7230333035302f485752736c6c6b6c4753506a6c726335692b414847487a2f412b4344506a547877516e596e466f6e50625178514c4a74626566576a72376141645a4c50326f484f73344d72777a36763876694755796a706657505271416741565a4b723536707a5259325768736e366f474a3661364c4256485a3763374d4a4c4a37714764596c336554437959534d4a3171617050557141744e6e5530746c65364f677730733848736e7a334258514b77525a54794379657278736b355a4b6f6e6a6c4363756762705a717078447054392f6f43327646384b4b5a4b6d427054366a47692b666d3274396a6b6e6f2f4247556d665674526475596e3673346f635a38365961585149506331694b417a446a71616f47535242474e4e6462352b4c4a316832417467394736323657454f4a57354c72754477686a5763715854752f6650616c6f5031676e714b6f5a4b7466717a666f61582f44724170514d53364c3272524932663841374878564c30756a772f6d3974703846673850684f4d47336e6339433455304d356f714a43356538463761703832646b2f5539672b7733753178624a2f77444772347a6f34536e476a32536a3833584c4d4f4333393139476733772f30532b78457943725938747265696f7864424d72556d796775714b716734355673324779726337363750694c716a725439755a6f4e533372396c367a382f3048443168305a626c364f79725034714f357565504d536b5a6154756c597a4e62342f5a5846512b6c467844484b6b4f73304a35676b6a3971546334304d543264334c67494b312b61756847636b7566506961656f772b5530646a793661626b6154442b7955384a55563765733765737957394b6850586644676962766d654c5a325348356270627476507058334d316d3830573663725279475461734b6d6b544c6561566156642b50515450444b7353454261335a44764436504449367857493641583474714646573032797835394e6d6b435a5a737644776237443061647167724d7a70474b3253724e4f777448756f55355671727a4e6a6c416377304c5633664f424e68737438667552486d584479757855383375647454635870646b6e6a694644352b367a324c58522f4d4a367a374b36432b7454396e366c4a42565745527a56357534593538766b4c56712f6c4c6c63697a4877396e70316f474e717552796a536d544a334f53522f48387956365535542f47736a543866477a7157584164483750316b547248575a525657486e31784470305462475947636f64664c7464464a6a725842584d736a4957532f633933434e3074424f2b763965756a32426f497a457a6c6e517547616344624f44744352656d43444e4863342b384c51774a4b76755a50584f556c31575748554c44744b6d75706e417a5838784c437a79586d4d51327a78624d304d326f3241693269326176567a4b565665332b4a644c454559484c69686f55437166692b46545433354f6d452f536457304372735861376d6e725236636a6e5063315a7135585364614c6c726f50527a304442434a35632f57584f6571614b656e35446479663441653374503941716e56763436354f6256486f354774426d413650594c5147352f5a476c4456697748617a6931706f6c2b3751633379552b2f33733938792b6a7841424f634b64705a7242757a433052556b5538737374525a4e7136584a2f6e7637566d352f2b4e712f735a4e314643654f4b58352f696e3937656d307a44594c4f4a74666b4e647a4670454a6375566c4d476e5479786d59464f70526f6d696462557a743168464d343377634e5238466c4a423263467969447366672b7636432b45376b4a5a6346796c4a73794d324f476e4a7a326f69536e56735a636e5253357436586b6d35594f5a435a633978676e554e4142624c4732696c4e5243397a78306b334d336336646231506d7a785a31576333627a306350697735567a6f5471584c7356556643366a6c66577a676d5a7169764a4d2f4f55544d7a6a453977726576506f756f7831497634656c6e56785a3173573138454b6165776c445678765a56554a3764524a37782b762f7742547645662f4145412f63376755694251766d45746c576545653569652f4f68646a5576596557645679343462364b6c3546656a6263714f704d726f5670364e717a5453366d756b774b67484f4c66455a3365496a766b6b6e632b4756716453436e7943537250485877416830344b3468766d54446e5363476e5136765130463262303538612b6f4f43723267644c6b387a79576963786b5642366d65522b4f2b55363561587033345958694f594f486a2b504d77703944794856536d37506549773272743538665a32485179644b52346e6775664e50316c764236443354574a6a7259514d734934595142725347642f655455416e687a56314e474679716635584c6d3742375a32697866363751517450374b654b65522b7750366e4d357a3368624a6a55457230746e34726153556c4d7449775354384246312f305a59374e484c73424d365173576b77614b6c54634e78683878704677424165536551356a34724536386243703642346c73645a4e304f554e672b716d6858633074496b346153715849556a506c63772b4278724a4747414b4f5a786e684f594637356d34374f79394c4d696f544f797178486556392b4b4e3671383269634b777472427a532b72316a746e725a57704d316c53306b6c384348485458484849324178664651324d37782f4c7a79796876444e6c64412b332b4e4530783961766d6a56596256722f6b70362f646f4e2b6466756b515558454a374433374b356157763352497550497a526776355674756974414a6f375a4b7030654f79495336504d6a6c3043466c36334852437466386178564c417562374930724c6f307a494d4d357833414e75624f6c5268357054633868515865325a776165653475652f3773724d38395434495a2f774430334b70496834376f796d5a4d692b797267574f6f7a2f366d7657506d4e58396e47674758576f6d306e732f6b4639564d6f46783533586c6c6950616e634f3339713243352f4a654f6e4d7a337063717561427754752f32657a63552f566e583657685054724b6864373830476649327563633546566376774e53647846337178482b505771556a4e6c67314f3666624b446f5a383451394f5a6f492b386d444f6d6e4b58756f624f2f774163686b306739616a5156784d3143334b6f5a52715a73724c5570594873435752614a4f464e374f68454f5a31326c6e79315a716c5339646e55747a574272466c55794453355a664e51325168495371546c35725539366b4f4f626c474c6a63503266725438584e395137792f47464c7353464e335a384a643558756d79733563386c796141736c544b6d51576663473539424a4474662f665247594b5770765953476d7141547835664b4844382b4a4a4b3968776179366175586e6f6a716363786d787056654f525939744579524e4e3050666e656e37676430676f37386932584e6d423966346265725356725a32335a62426e4d31414874736d74696a4a784d47786a5a734d6f526b706d6135553078536b7848754e797249352f6a44325546577a4f4d64776b4533314e62516e7a2b5a50466479666e6d7a36494e5161624d6e36726f394e337537465263356d6565744f73656b43614848326c5147535154536e2b677658786d504a75584d2b79543432393239586c455a3574736465306f636372475265504e306f316e6d36616c734f68507461306b306d6c504864427a4877524d7a4563497a49327477706c62586a3874415848544e504a68566a667a5172356d7933726d786458506a386a7a72527a776256544b5537566b347863646e7a4c50392f3670364d654e5a3834444864466a4c4b73394e6d6656774675686e42744336516257366a444e58563458645272353073647261455458726452386c453264527043532b556945446f642b434d7369505476314d6b7141415258724c2b7666442f366a33526c4a643349754e6a44503555346534732b4b42495a77477930303855614a334a6a5546646274657649627964306a7a4d67342f723030555466577a415939475a78724f73466642643761366762444f62446f5550766f702b4e5577554e634b32693838517a31726568347a3546526a73736c714c78585745562f593479546d6a4c6d334b7a6d636e54386e575469497a6e4e37613043732f31503861542b6269587a48386b44313232716e65706e72533139736d686f556571336d6d6a3174315879764b36547933616470636b6e704965584b5a5651766a4f646e54395a6d644d33362f58744d302f515572793138716a2b6c622f62323231526632302f77767a6b747a464d64364f2b4755386b6f5132454b726e352f7742343635394e644243787a506853426436703754396e31784c33716546666936306674377834324730624f557139684d3042696759545454564330446e505a756c2b584e6e35335157332b517a304a6f5369696c66446f5a32623633782f3870647a454961476e5130365a69727a487a6471665353703749512b70536a6934493236556b6c6e784f314f574d642b75646d4436795a767543722f414e696c424c49624e664d6345304a416d594678576144524a374f497a797230756a58486f567257535a653538374679744e6754657730696a6e65683741436b665543706e702f356a4c353976446a4d38633870444938583871636c70364e303157552b4d7647644c536b62444e5751724b6a51637833326d2f576f435a7642435250786c70484e576178316a2b3446466d76386e61654c56716f67392b54586e6b35495668664b57686936457239504a723556332b4c6c2b6a50524f386b6f7a654552436b3255682b766b744f497a5963542f41446679547a54307839536b35507076553874337a6279735051686e71726c64363575586e65556163726674304a7a574a2f6b4e624e6845757a304c47536479516b424268394c3639485257496d764e485a3573416a2f64712f4d33422f4476384c76432f7741562f5266794d352f4d50565664637535366a4f30336e354a58347668466c31656561576864666a7061646c2f326a43632b6d6c413032706e515a5354746e63396e3037616d726255743850772f2b493853477a7650304549796d4f6c56516c7179795a7a377164423072474e424c644966655647586a726f7548764b756635386e39674c635469452b656e6a7637684764464b34716d747a64574e7143426d5a5332534b762f4d6d4e735a4b7967582f382f5943687a464f6432687839396a694d32664d3441694d6363694a2f7164445971645369625a466d67645a74437a3961446a5431684e35656b74416e7072564c3948765664593732664d48502b5066787754333875524b56473366304d7548437764566c664b5a6c5a324b45465774706156725071715a49454a5a4e4a4c2b5964425036496c3065345135373139552f345670695936775058682f59752f74472b766e6758724c34642b6176354865496133706c346e34766762756836626545366d617a48386b386f723871794a735539335a78724775666e703544646e712b467270374850384172712b4545396148665038416176614b544536564f6264326832752f492f30362f45477a316d38652f4950314b394866427655583166384148386d4955655765543570426a6547354b7248624b6e746a7446383054732f554956445a516733422f774354774d7063636a69396e4c7033314e75794c626179504c702f64622f76582b582b746e682f6c4834722b6944777976546e556d6f38533955504a6d7036714c627946767152526a5945486b554c696c597872716b4d753578466a696a495062375538506e663750374c455739356674647738336354557a78564a48686b484f72724e536a4d577a4c586f69785278506f636c6779752b6e2b2b73426a6734442b63426f634c6f4831427a593649506b56556265304c6f6f4b42512b35677656557536477251594c57652f7655324f46306e2b535863577a396455305030317471397141353432336c5674445743756f5a71716c61494c687039684d655858446d494b3571696346326c4358736b34774f2f3633663465355845314443747674343178424d42386244554559456d70644267745156327031656b51544353555338446a506941507069504245316b7a747139714131576c6e65794332775a356d46417066525339797531304a6a3538344c366c61355669524c3430705264784b774550665351714d4e676b2b52424f5737506a61734b5a6773354e4534686f446e4466322f37314d394465574d2b526e763733676e2f414e594f69457951597633352f77416630395146515878412f564a48545369715034626d38436879466b78684e6f435a7349695442444c5a2b6761414a6e3537692f79596150316f4e776678482f422f386a767a5a386b332f4550783738656b386c307648387275786f5537477448347843475a63556361507657566c4c4d2f374f6b745a38617a324b706f475536615439694f39356236744e4b4a39352f555144386866515031562f48627a2f7950307739645043396630353951664772544f2f41335a316a2f414450455a39786b79485a6c4a68305a624679786a7877566b6b65522b3732733430474b74545572654b7a5732366f432b4f38484a6c524853776833422b4832565139724d59305145543942533263684c6b374f756c744161656b66562f576d7353366330384d51396158396854385a72504650527a7a443876504e6f2f3562797a31743063333031394e4c4b4a6a4453782f4173307667386e324a54626f48514e576e525937502b747735432b574d765a386e54654b754432752b62563034345672326877652f75763841714f7231462f502f414e637465644f533548686c574c36654f2f6b42786e4b5866694136526d68784763746b335538664c38424678536166634335766d36726f694858375058626f317248577730533950765444314f39572f4d2f475044665358776a314538323954664a39534473506a2f6963544c4e57656c6631625961497134702b646a7a5668525238726d463745382b495574545050376561327457735a74614b3172362f6b5064442b422f6f502b5350342b6569542f4f66376e3372723475694c477750486250462f54766c756133593950632f506e5354707650764b49423470327845555758794f535a464a2f5a7835784b756a39437566797457394c32786f5678356a6d4835702f663539482f4176557a7a6e786e7833304b31665544786a41313933787a78447933463135353850797644664c387974315057626c684d71625a4c4b3976493245626844362f7a396d4e712b64456578326d745a6d32325a476c50717638412f4b4450794b324a4c595051373079384a39484d556a7154513753374e3564312b673172724968746b6f63504d75716362484a344b41647870706d5550786455487836523746703535376268784b395566562f3150395a504e71764e2f562f7a7679667a54795a3538767474334e746c69595144684e676c6e563937712f486668457030436c4b322f4145457870534169766975717355694d56706b514c35524b4673584b5a6559314c65306a6e3655394b65787463614f74496c4a2f5a4b307566482b314c44716c434a675163613176364f4f5061395a424b666f304c3756393145364a542b616c4a70554d314a54702b6d684c6b307755644b697536575557644a786a384877304f6f507179396b38617a3568437174702f787641577969614f4a64564662797163464f66796761614e476b354a784a634935597558784267514d43502f722b382b6e3131517244385475733549525452646e4f71675871436c6b724a2b555a704d6c5774684e635a443776654b4f646e4b634666386949667073392f4d506e6a394163387155422f566e466937492f6e4666754d4c4b4a3344425773355239724a77305071393777545a38724445505978582f414279303969767a2f754e6a50536863324e353134597a5553556a586143346e55552f7235354c417058434b4772416a2b5a4a304a574c666e46687a52753970477a6957434f6473346e4855657554384d66793738673948335a66693372576c33485a53437a6f504d5a3536504a396251696830364a6a303856316d77756563686e57775866435a55304b5337346751744c422f727a39585469305a714f36574e3576364b2b73754e48706130474e567037637479562b54486f7573693167496830426c38676c6a6e6854613570543669416542696638416d61466775685a6b6e6c6d4c316d652f313636446e6e2b594872482b4c6e34512b47655565714f6c2b73614c417a306e6751592b7634717a513868386732664872703035634538634c4b4354595449317154576879334a42326a7a736f6d4c6d3761646454566e615041582b546e35486564666c7a36352b5a657548714535433954795054712f6973615755455a766a766a7763596e4238627773334f5170616f5a387632712b5067675453416d6441756d58396576576b61576e7369654932622f466a383576556a38614d6a493858386138653862386c3862792b6147684f6d324679396a507631467a2f415071306d776269434e2f4c4d6d58396b587a4a4a646a3074464b616548506e713655576d5a7441452b622b71483462656f63766d31486b2f6f48357036632b63362f68376d2b49586546656f714e6e7871663148625452512f794c656b30583935526964476835736b6e522f77426a746a696253446565357378585672307475724835666846592b692f6e65315852672b6b4d336e486958702f44355656526b4e386938743164584c385238596f73306171462b552b546257415432534d6d36532b2f5a426632464a4e612f73732f66734e4e5a375733634e6c2f4350775662702b5737474835462b51586f2f752b48777232582b4d6554656a6e6e3369766e4774354273353272506c356d617a787a5a314d6d374c54705435732f7741627a63734959394a4955745a545478626154713875597262642b614232483947665166305a2f472b5479447944306e5a4f46444a4d5a57427365527765545463382f7742764c666d306562596e6a336d34664f722f414d642b454e546a4a44514639496156446a4a73713870727561317258785777324b386b307648764c76506f664766556833696c364d4878472f7a52586b573734463478354c34324748686f54525a346674363638767078654f7242323552335971575441526d31794b52797345732f71735a694e31656741666a722b515870682b4e39486a6e6f6a58342b7a6173395876567a5937686550654c5965666a65455475726b6f71527a4f3856756a36684739536b353247336a466d3430307a357630356d54744f62307465497431323148626a774b314762673571703954657a634c75686238634f6264577249772b6379616635324e4f676467484c71424e4c76505a30444942504856376a746e7458545a79546e5038415849744c45386c333957334e526f7a4d625632796861456644314f57425a744c585554565771754f636f487a72314f454b304164437076597a332b77794e455248534d4173724f30644c6d663476745a4d6444597a4341644643645071787178374b4e55636d326d45704f584c634a73396b2f5170712b6159426249444a774c2b704847502b2f4c347a42355a2f62323874386f73485830393377333168384132626a31686f546d35724b6e7538614a55705a704a6868733479363156484f667956594d42776673514e3149372b7957744774574f6d366f38524d644f5456544a6d323263446845366273696851745135642b5a38346a4a3759366c574531676934655547422f734239703942514737302b506141486256785339623656413954567053636e6c51787a714673554a533075633059424b64677a3045504f6b594f62372f415046545065546a553755434e392b4f30487a757a3655324c36773254644251386336686e7366305a5354304a6569744d527548704430446a4641456b694176363034566a7943344b552b6464455967324f5833417559474e613770644d547074526e7253445672345563724638577451664b62446366412f774464574a2b47335831336a426b4c6f452f3649754c5643416e55386b7936537765785365763630365a2f5974784d576e696a3577413448524c6a763259644730576965675a635a5152456c334b48636f41506d35537458734654354c445852316643466b6f6a56525253732b447757664d6452674a455942595a6a6f305566417a535a374f4c427a346d64514671366949524a7a5749352b2b73456e66595067395a785376662f774142376638414c2b7137612b41796559664d58592b38644f73416e49356c6d62313055702b55522b507069754667756e4832382b4e59415a735a376d6d6b2b4450647a5948666e2b325a2f634b2f4437384550782b7331582f6a6b50715a2b556578742b51304e383531756f304f5079517156426c596b6346535842394e30624c466457482b446a645279777a6e4362352b48326a523164572b4e32335446722b71482f796a54386f2f4b777a67384d394b2f4766476170465a694172304c744c53344d4c333539792f6f3835537463726c36635677765578544a69537454715a436172684c7258324c546a7266313638784e6637666639793338752f797a2f4d377750777a31783956696a394d355a6e374f34506a65547252763762342b7374444a3861673278594456387331456c582b767364467447565974527a4334543547746f61656e70577657764d505a66696559637a356c53742b564753752f7744697a59724b306f2f4a4a6f6130533842423664776c394f43566964524e4b4c50767246796154373732745539336d3270337841766e45386e6b3263303837757047572f43724d53334f592f6d567458526f6a4b566d656337362b465152325a346e37773643544e797770545833323166316d4b412f503338507651622b34642b4e2f6c6e6f66366d36464d444a677176394f6655695a676e6f2b4b2b63506a727a5a4e395a5775372f4144474b762f33577a43542b3941484a4d7633527a3961614f7266527676722f41434838795031473947764f7678623963665076516631575652676556656e586c4f5a6858313430625a7930502f4833636642745a5533315350575466377333324c4b685a74665a3150534d56393976743174585570585572484c59513731333868447a2f4e74662b6a6f30732b7966554e33303867706d5656565548703939396d6b647a346579335a6149476b744933464e374f4c396f532f314e49696b3547716638626247664273682b734a4b486a4756704a584542774f735231544f7249566953556b4b792f5a6336514f48762f50763733626c74353441365757596969554e436941306936687a7669396b7254657a3271506e4574352f384e612b3948393850704f2f583745656b5839544d7a4563497a49375566696e2f4148782f796a394266435950782b395842672f4a58386353384570394f562b446557307959766d2f692f694c386e577a5938627737314e35693130727a5a30335a677a7231354e596c772b50525a6d6165564143515879366e736d6e656665552f5a33362b6f473773582f796a727837447850472f486c666a7a357435784a34336959324d6a5333764f2f472f467461325447696f526e5a7261355045396c30614631733451304b655452513938795570342b6733342f344362546d4c5667614c2f6b7a2f664c2f4143653965504b3261767039345a3664656a47507a42312f47634a4d57644835763550416e794e62683867305837757a444e6e566246646d686f644b70654a4d532b582b785143516a2f57756e37487036636331747735534d6a38773879386830664b4e375a332f414333796655364f687565546174326c6f36582b3866725575737274466a64526a4630547057584872396e512b45584c4d31653366644552694f536f6e302f6a7548342b2f4a57752b5854716a5845443678506878673146444744305a4c4979426a6a37553773385a79317163716b2b6d4a6d6f306e575a6d6573354450543232664b6c4e4f772b325a4f4f7a687456334a366d4a31427a6853553266583859725838645876373154752f5934426b4a704e62466630694a6d63514139417654616732775355485631433349724f4e33556f797569625061723743756169322f61716e4e4c6c38426f4a49434e51483731514d567956536d4c553056397a7739744636515431783271464a553261446d31756439456d706d39706b736d6670514530666d4b66716a44665838417637672f6e6634512b5155514147583668656a2f6b2b696e633876384632727165785975697268544b386d3865526c39467562735435365a2b63367575553364672b48354241765a2f564e62526a56694d63746836316678382f4d2f77444662387363614476706a3670654c5a766b756946306d5a3664655a366c324835526a4c35454d4f6b6d664236785049782b3974362f65484d48313354664e7a715a436a5a6e39382b2b6a7161633831662b34626a31595867324c6d61486b4737355834557043555552476f2f4c735045777134394265586f56366e4c79306a5975574f664e79356d635536426f4e3243644e527878765a666c45544d3467614b666b422f64572f446a384f634b35654c356a6c2b75667243533970307670313657575337654a3279476a2b4f7244797a79624c6c64506872367557556e42476876656678564371654f536561436471657a366d703847327364396834377679532f4a6e31592f4d6e3165322f577a31623261644c6275637a6e6a33694d716d387850426343556246543547484e6651344d33506e644b6f69596c773045373373416d65775156364e4b563071374b2f3841385170484f6a544678714d724d796231317933386f653733477765664e484769664c34624739536c51304f34306b4d4a6e5657664e5351416f7937496642577963596d767675694b4e47546f314c416c7359366950474c575032523178386b397839476367556c686d4d7233673444454343594a446e3354364159456665534931584452416450657a54722b786e3372453649685a6f6435524b71525761685036466c487a665a4250764a597055427971344e484b454252564e524a6f57384a624f53746c6251686e32586c56586e6b61324d2b794a4478586567504363512b2f702f4e37414b65442b622b5a2b412b55592f6b2f684e4e7542355a34336172586a707a35426d5971683347745a7a6854664b663171424677392b4d543451556b535845494166596d496d4d543048736c2f7436666c4b333876764634665071386235322b6c506a5532723558704e7a6a51732f556b6247596e692f6a576733505839662b614e4f66586f384a4c7a534c646a4e4c6e31716245677a7a74625439334d782b4c2b6737424c386a386d38633865386a6f6c374d6a4c69683432377950534733766b48334c737a39346474656c5644504d3566636c4d764c334d5a2b6a41364f6f6f6579773375353572575a7a31486d633956503735336d58705035703669654d6545656e4f3771426965622b532b41354735753730736976494c7337542f41492b2f5575516a48723573554c716c336b532b38674d5a334b704e6e2f5a716e507372374c466f726162445466794c2b2f6c366e2b552b525265506566384170333435732b6e387161737679624f6831573647705372637970567a5575764f644345756d716e594c35653959707172474c50726d71496636316a325773527569334d4b6c39506637746e6d2f7048356e357469654f2b4b75322f78793869334e56384870747036784a31356b3677304d715a32744476342b6771564e715851736b684e3771574f35304847315a327437505730566d65312b4961496546656e782b63344e6532437372782f786d37527572532b74694b38374564373953766d4849733369657451754f77655a6b37322f5a4e7157645367356a464c745a7445544565496c63336f793778704e586c364d2f5168786f744e4e65522f4c2b782b66715a7966486e5559756664664c6430635736735854726f72643742414567354e44564253543469305734593668664c7a58655a424a345853642b4f79366e2f414b6d684b6831755674366568417a4e6f4a422b507869655047714c466350495339765435562f706e70584f63314d7a694d324862442b793136384d31665437552f484c7a49575a586c48676d316f3644724a2b746357724979624755706e6c557338377072435858483850506d36353077546539797855796d762b755432716e4e766a7332486566794f2f315938683866536e78505450523151657837504555394b663259304f6575484e666a32327a384b434e302f53576b6241504e583959365a3375643166486373597a7836436876554831756d3830385a427671522b4b506d5833702f6b69706673623248506c624f566e7a6e6c5536576a7146552b6d66516d6a344b5876636e326b6e7835314362584f503772625672746e6c314f497250305338753150564479662f7766777230733858394976536e78423364337a2f7965547966443872386b3239636f595a35636249726a7134736469766f3562486435476f4135374646517873366f6774614b31726d62623766434f452f39317a3131787655587a50787630313858376a5653656b513055613073396453394274565433535a2b63324c6c7a6137702b344e7a72576758654d6174376b4c45506c596639646673394a7245326e34687a7339592f41635056384b3847395538374c54566f2b5a5a575073784f544c723052613165693678653169396132486e59345a6450506f616d7233553939327736666f6a516d746264617a69625637686f49696c46423051693158576c5a324a756973744a4d4979555432526973756471496146684d3678767a4744506566755566445430442f7266382f322b773251394d6656616630683866357153746b31394c752b67315131647137433131574d50386c31307a5335787849304b71466a30756b66477846372b2f38413050666e61755a322b596e553372483450442b51766a666e3074377559702b612b5065564a306d542f4e566b563853746567667864396745736d462f37512f783538484349523976395274744e4c524d6a33642b4163743877394b2f4576566230736f784e366e61794d683971613364584635437a734d734a39577874544f357570306c6c2f38417042706676392f726e3965566245577446754d696f50502f414d31706654356533676233705a355848356e4846573776616f35306337376c72663841483268444434372f414763396f4e44684133692f2f6f662f41456636765853336359734f485835312b4f366e722f36706668743544355a48616a7a543143396376466f575a6a464b6c626a59666b4778696c334d415249657571557233644d75644d7663424433676a2f58527054464b616b52325967656e48382b50774e394b767a6d3847394c66544879627a4c643845386d3950764e4f65575a476a6b424c6337523546477649307369354e546c4c6e6c737a2f734437302f357150324750433976372f7269307457326c613171313362686f392b63766e6d6e3666583550704c715965723439345036532b6c39652b6b72445042784e646b65585a6e65507a353268553846564f672b6a50786337474546466871536133435a4157756c787a623437574869753957665572523836386c72386d3869334b647252314e4466703049796230666b465048585a6978695a5161475a374b736650506a4639354c7973524d766654383539394b746363496756477a397351475a546e7a386e5a4731616338714f576f6d3970465a4a3174365066586f5566613048646348365948766450536c4949636655794d4253732f684638747054644a3934383433756442703030496a716956587734545a5a597257375154484d6161412f3841635032422f77417568456c4458387361536f4875685a314f6977316f347971503665542f4142744c64496d2b796864426453377167494f65783848792b774149794d43645963752f6b4b696f354968386675613736366b614e4b33782f486b762b48354b474c685531793568527a7064624f3450594a4a4d2b72426c4a6e66633543376e386775787456644c666259474f4e5367354775586a415954414554466d5233334451587664656f4f556638417754414d475441356e7a525a467235487366453768665a6e594e663070667561444b45724e74455a75637777377a3266456679436e6a68366e675734316e7a483339325a4b474a76556c2b6777774f4471346d30314a724e4b3170682b35576c70722b4f6f566e4d772b6d594148466b424a65427163732f6c6e374279464e797971747367306b4e724f525950355a644c545a4a3055676730302f79536a2b76776836504f55673446433767386449414b53446b3877636f386a505235564c507171624546503841475354652b2f344c466c3268756648394b794575446f4447794d4f7551453365636a5039396f44676746514630727741707a70726e3934575550436f5a5554706d73724f646c476134473243714857344d74514d36494155364b5a326b35786578713756726e3542544c43646d644e464f354d6a715a68667871635652305056302b6664524a6f7a4e5851794e4b326538552f4d526439372f77426774504f66746674534d736d684d6c57585a3143546c6b642f486861336744706f76697657796f6b424d58544633426f53625153516d6650616c5242774334432f616b62442b432b593676676e6d6668766e71434b6e6e69472f77434865515338354d5767724b75792f726e61466d684a64505570314330693436456e374f6463314b58685159422f564a694a69596e6f50364f583433657065563570346c3444356e42666833786276672b5235557662715a527656763064303832776c5154356959776f34537233657a765552696162306b696a6b496d545049764578756762516247322f7365585976654b7a744c3130643058555265304450323648792b4f7656644b6f5a2b78737542387261486634424e4e784c322f356a6c696e6a507236445450312f384154334439595054627a7a3066387378304c385939565047504a384c626d31682b38754470734a6554717a436d56644761734b474a626e72714f6d6b56544f6d637775787a424a725364747132696337662b422f4e71395376414e44306b3951664b2f54337952645a3648686e6c586b5869476a53756c536b762f6a374e4135396149624763597555386d65562f77416f386d2f3151665764377572344a2b785730323478385172615544465132724f76557156396a6e73466171352b386a716f58774e7433786a31726d66493733734166657859644833447956726557747735653641334b5a384c49656357704b4b4b4f71704b507078547a743642772f384173596c6e59744433457470436c7267442b5634735a757149424b3362387342796a363745527a75596c593658377967566e3257527153427a5468504b66583141424d56525a37586a31444341456b487a4230662b4d786548342b2f6a6c3674666c66366d3550706c3646654474395276504e475771684f486c5566453932524167624e545a4f383349546a777a64596b4335517559422b453566734761464e564e3730303637375832564542386f394f764e5053727937653841387938583066442f4c5041364b4d587a484431704a46613262715a50535a72434758525a51544c4a61474b39763154424e4e4453656b78364451374d54466f69597475725962536568483459666b352b5450672f7131352f364a2b6d31336d5068487048696c6f656f666b4f6c753563466d5a4d714a65787170766c576b44736f49596247704e4d7a4f474e674e545a2b30755a4e6e6655705331597462626177302f77422b616a547a5a304d6c2b7432616d69654c4d69466f4d6d58555938325465494a6239636561376e642b595746376c4a62372f7744336d62744b7a696369493475684f6a5a6e643861482f486f784f52497068415865383235666150415049366b466d7861666a2f51463745326439363275372f686131596976794871512f475762307938393943322b712b744e34396e616d626b75385778714338507a423562577a4c536a4f317649584c386451786e786552533644434b567a50672b5a6a754c2b77755356504266644674734353654a2b556e5a2f4771304d644c724e4271554b3345596c6e373761346c337a31366d317533432f4c31436e4738544e37506d6e4d475656395162706e48467166686744683374545032643239326d68755a4e71386a69596e54646365716272336257626f635a734d5343632f366570553133746f4535346f354c416342676f69746a64574d3952776e2f414c686d5047723875765571686d516a4e6a386d4c4d3869636a4e53724c47656a51574c64576d444d7a644234536a7a595a577a6f47326e322b382f6946374f66313161582b585435696f66787839432f4d76794d39517462786a786a537866487938643849386d386e323962796976717351302b4d353165784e69544a557633793646756c444f6d4b63662b44634861532b5645353947313752536d5a2b494457746e686b546c3056497a5a3272712f6b375a76336c7a764a615852326a70365a31664f647a334473646d342f767a41704b2b725438594d7058574d39776971697a3264675570736e3161326e4735527a7363745a7969624a6577307638416d58482b6e44563868634e4a72586d2f43426b6b467545434d71527a3354496d3045463546624f457833646573776d66473569524a2b686f516a79456b547031506d6233694b552f584e76472b38556756706e50384962735a566c6d7a726b43336d477561347831722b7663584b4b6a2b7656503771754e544f2b372f72382b456a555a4750766f4143535956342f7a4270666a544e476d7371614c73356647704d7955524f5a3268665272644d6e4b35724c42692b433065703641704951396c414e4d353345414162504a446d56487353482b3356364e73623957696844712b775755547971665270495853635078756c6233346c634834427644325038416c50322f314f4a7a6a48454d4a664a4c705a6b733565626f704469616f616d6367463341726f657637636168654b2f6c57345771366f7661524a6164435149326d4d3272742b5569476164704561324c62307563466c42664c3251584b5651327873333236444c677a2f3841524b5658313239702f774176596e355648384a6a705775333579476e76587861535970727a7172653554565647772b3163364b2b4d366463764846387a68714d65646166502b7a336e765366765946686b30546f54327048532b58337676644b4b4b552f3442464d62756a78712b4a455573584c7757487a6f6d49644d316955356649446d636253635757325936485539596f36324a4e716d7649716b4c2f564243445753385a4a59594c4a6869343479567750686177526a683276496573582b3374364f2f68482b53763974487a44306539575052444d3855395735693835324d6631767a5a3941764b68386c38636b75646c62576635485639676634587268736a306b4e54504d6d5230305a6748314b6278387a577471303136577266645877486c73335048725a3944667a485873652b5879436e782f71346d5254324145315653477947784a4f364d726a2b596a5076576533332b382f6b4437413837713278336341416d6c396b5a64424c663347687235786e4c50344c4675576a7378714a6467697758463833794330434a51306d3558372b59357732445673682b386a6f62543977334f5a4b5371546655504b715a304e34747135564450503841433732392b52676937336745337556515066367a39353542704c315858706c666e4a4d48652b65586e426161366e4d702b794679366e6950324746523957646e46676b66333053483269414a44514f42732b7231764f2f547265546d384b70426b3277484b4a6a32733074655a4b6e4d6f2f303247587657774f2f434c78595041555268364276376376726c36592b765870394a2b4e2f724435466e2b4e2b73766a3259337837307a703870663248784479334c63775772786d306c6e7256447670525958564564536b6b4f556c6f54314f642f78352b7457314c623663316538644455666958752b4f61466e664c4d4b2f526c51747a2f414f5a73376d376b2b526e616d654b374f353264383344304f4973716c5739307844314b72464a63306e6a4644334c3375656b4178756542654d656b32536e7a2f774252504d31656d6e7070462f753233377569556c47736b306a2f414e624d7957625131737573793361447030745950544b61412f686f4f75616464596d625a694b3737447a71666e462b63766d6635576551342f696d4b6e657776517a775231542f41427278644b676c507976796a723579305050664a776c48764c644135366c706c5734532b6c4e4d69556144642f6e7a7430744b6d6e457a62745847675a585464706d5166516e56783155722b30517a4a535335617443724e51326a6a5061777539594939366754346f6662786a476b4b545431426d644e4e584572476959577a564c6e58525253306b7437463957584b537874432f306c597a7a6958516f35377539415039504766383843314d504f71626443786d69705645306e3047693448496d7a562f50597358716e616d6668443348645178416953694a6e7651662b3850737a59544d7a455234445a76303735335a38613249643353474d4d655a61513039706934394b4f6e4a794766625444577850514732676b78394752344a355238504a6e653138797671316e7258352f70497047374f64685856355a7a78725966524d4e43617464655071794b704b63336f346963552f6134716956334b4638634873443552453138396a5a377339774273476358304c65783657546c584a3736446759674a6c31495a2f485552794c4d614b444a4e426d6c7175746d352b674e706634383445633868736f6a675579434e594f306b7567736e4642643443304f57793269696151415574507a444b582f485449654751475166387547306331754d395246637173496d334f66714c6550384147554c532f77434364556c50324b324a6f657669682b78794d5256317674534c574d66476c6e754d444b666c7239776670307564513548746b6a73516339544c42527970617734696f2b56684e476b655133484c5573473935386a654d5151645437442b7450585a6277425078716870386f475648526f6d34517a4b7356484a31326d6c4266485377674a664631492b4e664f2f4b7458776853644142302b4332616f4f7a3252396a6e7a31434d356c4e4631462f774333703031506e746b6d675650556f6a522f7168755373467a723753384b666e366e322f585934497a6164442b7a305566426f4d6b36775648556d336e445770773068437671653857737578777459414731337448333870467651534b6743396f53487974436a67437861326c55417062526f304e4b657076596a4b55564c2b757970617a36445449696a443751634151536b463831484547734f4b6e3544326e7132556c596f7278427a78624831444b7631387a6859346a415458777541373975396e7545565461637a6b577636482b6c6e6b50712f7743612b4c2b442b47466e466f376632423564733264784d6d544d3858783639537431744d4879477546432f6f3073467638417563616d4343657249773476626246386a72352b4f48396d62386f6444794c777279652f4c386130764474727739506b656c33725873376d4b504e64716455376a3961587066714e6b3756316d67506c6a386e6d736e6d4b686769726e7637547038306646362b59707231782f74632f334a76434865572b57626e6f2f71552b4e654c375161444b4d73756c6d6e6b3439577778584d71656c7a756a6c78354a54724143397445383169307536333565742f7161612f73397378467559585a2f62442f4637796a316433665531506b506a2f6c4f44427053364d655564694e4843736e6f624835444a4f654163444f64305a35787a533777456977452f774150795a3166325436744d612b704649726761612b66655765725870645a752b44372b6e4648732b4c65542b53656e6d774630326a7933787a79544c705a39304f3174453234637647466b6d3367752f334653514e6a614c2b79427257497647596e3877316238353166494a754a324636316a63447969686c6a4a394c634f667447746b742b3966427052465231544f6e386553526d356e4a6d72732b7a383142744271725248474936425658715766566c4853315838747a41314d47446b387678304f7a2f414f647937635353693337424a2b7169716556764743677a4e356e4f4c48547a6d676d4f2f414365702f6c4856732f3866682b7364535a4b6448544e6b3357616a4e576e33664c527150766331746c3345786d6f673556644e796d7a33544f764d77614578453959376855614669786f42507a6e38566d4e696f47655351524835485472535539496371632b696e7371324c4c6a466d4143665764414f754a687a782f312f774277523571726e4970754f357966764641786b4641727351566b6a637952685a2b6a514c4b4749684955436f2b69785045714d4448696a6e2f70747434432f7648744a75566e4a334166467a716e4356616f754478746572496567506461715a6966717831632b784c39656173476578495650615345704e43713952314b2f455838772f4e76786c563542347834313474483668656858716669302b4465727670483569724b68385539564d66557a6d5a54616970304638646736684d793254515878543857643666314f5052436879384e585472666a32625636572f43493734392f625652357867654a2b7133342b666b523658325a586c753765506d766f48354d2f7568367a65692b485372346353545361724c644e356c6e4f5439636b36487967665a736361773730315042637a72346d316236632f5034624430662f67392b42336f563643654e53552f2b4a323633717851365052302f56487a654a5364467250736b7a5335342f6935724e46586a766935733933654a6e7359345951633654324b6e71635046713674727a783750674f792f7064344c6d6548654f73797648586330585a2b334e336c56524d7a4369325479796e6c6376655152727937686e4746724543597342745533376f70486b6b6e4f57383574784735666866716a2f49566834787630517a30587463575731717554772b5363544a51774d707341782b79796a744d4b524e2f422b452b2b39596d30654a436a4f596a4f653865422f3841762b554f522f644339625934557a79526f385a38413067597a754a4c6f79586438487a7776737472415848514b4d744a49536f5738596c615a4b2f5a5774796e463633736e2f3841542f575278526d436d5861494848486d31305475586d5653354f7a2b6e3355577a6a46586e4f665a3179357a715a4f79565831685133334b3933776d745953645843306555693866484d52366d344e4d3331744b30744843336364535a336e4e6d5571556c57796a4a66314b4a614b44574d765741465166582b6f76355841614a2f314932517a706e364d4a304f656850417a796a6c54312b566e6f52705677575a6b463762772f54645250614d624a4531634f66686e534a41716d6f476a5a7a6932437a62507139354c4662536774464c6768747a46307071584250724f577a51703232554239717a4c4439394e677a784f376a7a464f316e436e734d4a544678376351374e462f6561536b75583131586a57563961545675355a4d784c676957776673635335697a4f5868664c496c62675a316b393454427342346a716269494c3857426f726235436e6d684a70436764746a34613745706f62466f4a757149626d61554b56633050616b4f2b7a6e36704f356a71417874746e6a45385a442f7363324468366b39542f4147546f6167703153453357556638414a56357265367974305a68464f6b6164525a6e56316a666a4453584f44675a4361356e6174345a4552713637593042334d2f58303941557855584f5564767a2f414362445755535a63377330624f6364527a343979643144426430307a4a4676414d334536303874647665414d56586b4869314c7a386d526f6c48627a4e707a4c346d6a63466b4771763657566b793856445a566c6c5443553966566f49757558476c4c6b754e6673435a78654f45385946692b4a37456554737330396a4a7038687a3646647948585853524e4974757548756b6f62356d304d2f6b71706171765a38387932476b347a6d354d3551455152504e4562656b64774862754a6454342f6c56352f5678556e5170767832544f38586f6c734b6e5355553143674c70586656584b58486b54566e38616661366963466d733678626d7a496f554d5550496442586672364d386b756c624e4f3652323274332f726458366251715a30722f726a3267736d34546e42764855676b50685336774250575a694f6f6c64474c6d6a6e6a54487050677035385464664b31566f666b5a557332616b427830703074444f6c64384c42795967715536632f6d7967424e4e624472426c656270392f5865445838463550716175436a476b7346392b723378516b5a314b49414a316449696438377553734a4d61336c6d696e6c48662f414b575349396d635574522f3033524d63653854585374326c37642f676f5a316b2b313463746a4479575454784c69484d6556756e6e77367974794e6f786e2f414c752f36657037514d784633684348316b55346263393976376a4e4f3370384d49594e58507a7968522f48796f6843453778705a46565946586b5764646d3366795a63644b342b64694d68617a354b436d6e57687967636e6e396756695273706e55335152446f555633326743732b4a31556d33576a76324264306569366a503141484c5a306672563970466f6673615063354c71334a352f5954627950644674513533494d72737255646b5a62342f713342526e3942734b63736f70364b55527a38556c772f744b757a6d536f79645335436b6c4e7949695a6e454269654f72466b6a35384a5a2f7658646a53762b6e756e426f33396f2b314a4c526e445a336d5359466f5656427858545534744a6c4b6c6e3031393748587a4572334f5a44653163316b736b6b584a5347774b59303958497869307473474e786168716a754c556c7248346d442b362f59564649487756646e6d4d39775a715a4d69723935633875584c3154386139756852326a324d7151494c7a3539436166375773687166726e37327465784c4d634b455771414738544167336d45504855506f3866312b58575768623163314e476176504630636c3166336f626246704c486374785852706e42522f417a544d2f65487970397331786e6d364150596d654c476a67505a6c7341414e644a2f70746861715858757975527a5a2b5553444e67554a797a6a487055722b6c6d676b6e4e596651593439727a46346568483478332f6b44702b51497a2f564c784c78433744773948516c523566626c783662787a366732325535367971623971646d6b7a4e3470446d734e76444a337345432f565339363666536d34615a65642b48782b4d4d642f453436356176484e2f57683070315057783958785233416f35517075647a362f32426a636f6936552f2b6d6169797036572b7764496d4a362f454b6e7761666b6f366d4b6935504e514e4544476163734d43706c7961756655532f4b4b656632304d45416d4e457450796e376c725a77432b7746775438623756672f492f5179757a56742b524675644775566d6c73396b4262615970766f593945745534684c53504a564d34616b2f4b31497264304933756f6d4665333545354f465a652f5854342f7742617a7345477272322f77544f77666131614b444b6e4a4142596a79426b744a2b796353616b357256665853314c55313565794a4a795a4f7430494933374e46475671516f787649634e394e65784272626c34303558386670534f45626f353037577774533175366e764a6f4b6573582b7a596268575049544c63395466554858385a786642764b764c664e74587848787250577678487778476b4f315242322f7638636e4e79357138566f5a726c75304a5744396d634b49356b6f576c51554c616f3678576b577a484759453639592f486651436a7762774f4c302f6c383154354c2f347a6944356776664e46626c333661766672476e577930395272664a56765133444f5a5268544c38513867396f674538566d2b625a786b633879794936503548395a755a6244477057726c6964724e41346978545747756b2b79352f784c6e6f645a505152486e7a7754657a336e574769667a4c3146583165502b4e323968584f6e736b314d30335a63335676524a5a6f5a715a4a2b523957554c6f3162413873797846684651444a2f707439307270786f413752613165416a70654242645854724f597941494b655533544a6174785a37356b724a534e614f6a6366513677335134594b5334442b5630314e4c5655514a644954647937524b46344b2f46584e787751435935507454746b7a7a52506f5572627436537037632b747567702f37474e613531556c5530476d6b424363352b6a3873636254356a30522f685a3169764f50782f743370767335655a346c6f4e582f466a4e334b7238726878764a4d322f526933546858554e4a66786d507a504a6e4766574f7768496a4a462f7635645870664137392b413559797668504e5750594b4948796d326a712b5872736c2b776b6c4b726f63783678734768786766765a33356e523243566e2b6e363348667248794633342b6e413544654e366d7271726f74705a3153525530334c534d6369454148574c644c382b6843505344696e697635302f592b552f6b70706f4a67616872624b7656476575342b635247677741473946617452476a31474c7a53457056702b6a4c2f6d59754342626a2b6d4c434d4241486a547155457a6d4e57557053754e744368315a73342f6b5774547a6c2b30357661452f656a48716c72447665306a477736312b35514e414b4c68644f757054574b757a46726a6d516b3547635a6e396f57735a77464f6b425761444b4d394c4a545a77763841444f4e56414e4759562f3044533779446e74764c6a654e6d31596b645a4f4c6b593863354c544b6464717732426179624e37506e434c57414a4c39767470596168416a4949334b327064463759575557535a7958706e7a6b51546c6d664d366947707654553732444c51444d76535830714a432f6644367449506d37377941337336384d78586e546f366375744b386b62553042716578735534614c70434a385976626e693664466e534c674d447067524772324f5033674b50796e4e544c42376e5633556c6a4f51305269706d6c6f525379786b794772492b637a79614a4a59326e723268386b487664576d6a767947454b6d7438713371484c4765316632576454447067334851767564586e2b537a5536386a59736c64416e78306f50624953316847722f746c387a7a704d776d3262366661484346476c6179392f4f305731557337433463306f754b55726b307662767257574975534a5055596e373033676657644d4b56554262325a6b51524d726b6632787a364737453038394858304a75536a6f74363771714a54576d4e39576b6e764f63486e7637424b6c70306a38516341345369545449584651726e69624c326e6d6178685730695a4479596d55794d5a326f6d4a6e735a30564738572b384f66455a384132674a70366b626d63342b615554357861374f566d436c67744e50386261453478382f3366586353312f42305459374b4c33652f6f72582f5152326e513146334e304f4a7567396c4343732b6d716d3868752b786b2f494f672b675769796f6d554f347067394930717035372b3141745534426837584e347776334c4c4e6e64624f3752584d552b67734a583970463338583263652f4359334c3537432b4c346d676c79665a785875594453536a437537544c4d62716f7734685373344a616c6e3769354734723536415350746e457436376a6150676d377a6956704155712b776c675930736374576d6e73624d366476417034387159354b704f30314f427030724b346b6c5278637451744649424e2b6f36506154334e6f6b61417974557a6c795a6564447332424e4b6f3149684256796c544b4e335144334d306d4950693257732f544642336844527a6e57664b4e424e41566e6c4d77596d72714b504e76706d355654524978346b58535a443152304a6841666334595255527357487a55702b62363949676c583941767173424d7767343945626b387135514f5638413643615a536e4757653665434e79364863397371326b4d37756b704a423952774a2b5759426e5179366e52396b753670614d3636447473382f4769547a654f6a2b7054625677526e484e586e745973772f322f34684d4458413332676451395063772f327464707053314c7457464e4c47455374436969696d3857722f32536855746864367a3371366d6c356b396c41422b6759614e4568764a3670354a6e4a37304641636c4c53485475426c686f35486f554c484e716f2f6c4336432b504869665966735366412f6639412f38416c45315451666373542f497a356850727a6b5055723754364b4e4b68527a33457671317a464c567a35525839797a2f734b556c72434d4841586e66496636536f3361565672324b6d44736c50577755665559546c695771742f596672554d584f48523977673149632b7837343367414162383155317a6a706650646f5474674f4c4c732b36394f61392b685053686930422b75537a67687a42364e52383433332b33763251562f714135666b794551357446466147302f655944492f636a51346f2f6c427a78347866515a477459324e494a2b2b7876627a4469756365444a7747367161366c6332432b767951624f6a4653685847477377787149343169526a4f583132565330652f77426f6d4a4559476673642f706d434e726973795a4879574736316d7252664c5131546c52634975764a314674485a456852645a375a61414434693973454471546f6278514f542f514164446a486648566f4d6f7379385764563269496956626d55302b374b566a476b6f5330584c4b545773347833523971774f716d6b576a597632424b56524c542f31355753355532544d627a54786c44337732396e4574433751725a724a5778597030506737776859433066744d5a2b7843566342764f696b41644951514c7164786568504a4348484c736c6d7a5a313854504a784c694853354e6f61416b307a4a632f4153487a424f2b5669774c5561623636487868337562586e387369594a5875466c4c497858587a56532b7050777a70594449527261565055542f41466753596e2f71442b676b79654e5343724743327038714b70456671334c6a6258524c784d442f4149705855696753374f36656270674c6e704a795a3646555541737943755055493770554a2f676e493751727434657935396e78556459576b433572432b466f5a346f6f6a2b525644665a57786d56374c6a576e3453644d597a476567346966335639374373385a394d50484e68457a43302f4a746a522f6b5967794b4c6c36692f35444e43765752355561335a354c58556b4e4254753962536b3366396c77644e3076566f56746d303934346d32703778722b594d71333251356d656f4936596361796a6c63383268687835537466724b327a7534586b6d6748757270737049486355626e574b4f67656d7666752b2f774479484a4f796e767052707a4f757a39584a46756b75644d4371497377696c777171383359386439683745394356705a6458517a74476c4e4d596e4f733435772f72514f587a5a666b456345692b4f47376a41706e30522b7472303658306a3146526f786555626131794531624c4f31765a574965384b534832552f5a624a6e325050494635736b65627556316554507777506c6d5a616e515854426e3365524c4c53484c78447a6f303631444c732f3447565543314173353865564f46587a6762466630747a593238634439705a3978575052443375516b394369624e37506a784a6d727a64472f2b4e73697a396c31434f574f344f743761614f484f6e3333762f622f65313267656773764d7a4e537537575753744b3253754f58546f41456d36625231554d4c494d75547141314d637569646a6c53436a33716336386d4a594b6d54426a7674346977593865616438746537714336436e546c56572b736471664f71354f656a395a617052567845733455597568396c3445625435534d6936526e2f375931443739466b737a6b3530576846796e355a6b3531437144446a75394e45716c4f426e4f437366735a494178414831787872715477506e2b75774a7172526a354b6875486c4a37704657376c4c745a6a5935506b474962573532686f6f714e46552b6656396f6b3154726d614e7156477556727552746e425766667243425748354e646c5965494564734e373733576145354265687954343463377074746e5755736136416f4834766d5438715353372f616d4d526e50654a5234356b36557a39726d4973494a325070474f43757866385644792b50346c4e597252792f736b35447479466f4f57722f766e537443315547453677544d52786b624158346d4f6c4d7346506c713976612b706b336c6e7a5655614d7a4b656a3957754470356b4e4654736d7166636f555353442f4436786c584d66754b674d387a2b435035426350483748557244362f4a6f6c6f7a6e4c316f62486a6b7475374b747566324175617a58354b304f3150685779597250705558707056774554634c6b6237654976727844786f5556565473726b444a30796d526c673779545063733134326870534b737a2b565643547065723933364e6775554861694f6a3241782f5656456c564361776a7a2b6f4b47482b436e6f3864644a31386f397648732b526b4a45356f56486c7235477650692b78457a70714a334f4e635a6e53546768722f47494831634630773575766a5756787030565468546e6c546c63586e787a4d6b727a6171334c5663363664564649416f464230472f454666477442507934633752565963476669424a544f37526e396c6159646d6c636b4a574e627a722f414b352f594335684b4c73345061727675416a3559347a53476a2f6e76694238324d33556d6d6e30463866486a4b367939756f7a3639464653327a525a35334e2f7741615071464c38767945637741514b367a6b68752f7261733572486b496833775a3732492b46634b6447616f4c6d44586e67304944692b76497135594779747273756d48516e46667866594e78673479575842536262434d3034435254456a736d656873644874375a5058563248586b7a386c6d786d716a51596d433944737638414a6655483671762f4149337641464d4d3243454678382b746c6b4d5574443873665965616962572f636f755561726f785478764e416d57537659496b6d6b695a2f77445931363532564e544f77516d686541784f326763524c6c5472364d6168766d2b37506f46562b696451376a6a5a306f4842496e4d2f324e39674a53667642494a6361754d384f76415758347a365932342b626a704d754b5778356353466c35632b725a7a55567151637a614d70334a4247316b637a452f3553553241646748302f594c47316d3052314733667072702b4e775a6c4b74764654354c54574f61314354556d35564f6b6a48307675426b50576e354d57654b6a34306d2f764f397a5431554967434d6a4c3573375a7a7845624445646262704d613239503075544c596a6d4a6e4264506f7531566f6957764a68695a4d764a70712f6a577a384b2f32696d432f725a66706b7559472b3369474f632f3773444c3232364e656d71666367794e4550686f2b785438695364754a6d666e395a342f6e395a6f4d6d516b704847736475686b3141632b30366d4f4e5a387856586b57315374434b463742593772627047566f30733550616c614642616b374863676e6377667442516d67352b646e7251684d776d6d52644356523036374b2b417053636e51706e476443657562597948624c4f314f57734c2b5073594b704d2f6d6a59546e64584c7144504f6f7568387333374f6e324f52426e6373426d796a374349356572705536485167356444446d6245554768703034684e3047336a44637162354f73474d683450506a5370337968787944374d30492b76777338392b705874693373615965457161504635396a37647952694356366235526251782b616c772f58595a3069704b6c75427a71587241497a6c5335315771734a7136344442315375363352726c315a4d7632734f69434c794b596d726a6c2b395a39687a36456d696447623269627247435356756e6b4c3777635354302b7a39476862344e4b4f4a3364477a57426d5242546b4c2b745053374c6b6a6c6431636f742b347a7242392f31456b34754d4f6b54427267716a51386766746f736570456f566f684f544f325659696b78775a6361624e335362395a684d43505037596b6870347a76736e2b6270694c694d46663046672b4468797864556375666b6d7251324c54796e523064487431364d4c35352b44324745486678624e62363770576d587354794d452f463876736b6146743457486248764f7a636d317855775a6c642f6a4e75706f565163742b624c6a58485171314c6b54697465383563394a4f715570697a6d495a446238597a316d334c75675879436e5a506a34385872574e775251554f6b716652314d76695a7374656c393531464f7271632f6c386c62493645395877796c704f6d77692b583534666e7934326e7a6b4e4836427a79365654733858325a6d5464684a5477726b51395078364b4d30647a704a6f4b75757559444b4a30434668472b535a724343554771625041364e2f675647764e39506655365a6249654a7338676d6b4b645469396a4f555636317a396c684d587833334b2f75444d314b675943712b55386b6b6a446f7a707a314f346270303031356251625a53656c7977534474545a3555746c794b473535364b7a564e564f356a756144733847434c69364d626d48385166396357356a37354978556667486d464e785850795a736a642b3731434f547930646d7a3246627157385573766a464645394577394e485a7a44345757487963692f5531367838782f4a42396365736b3953505533364a6a31727656547a354830776378556f304835567353697759553146796f516f4734684871374b557176417a702b5071686d2b68704759726e7045442b6d522b456133392f426638514d573046775a2b4a364c654336612f6255756e47552f6d4a6c356c7a704c51636b4962754a53356b614357506630366e6e785349634a6a3457726a3375704d64316866396a344d3457696e516a706f6f464a6c507950516a7a4e464a4973705130506b633164536536526b34626175304a346d503751707064514530325134742f335176376b766e506f436f765350304468546236746557343575307649586263394c665376457a745453646d77354762584b426c7164715570504230564c534577454a4c43637a456576513049767a58374e66754e587637646e393158314f384f39442f4b35507973386539526655526776386c332f4141667979582b45693239446d7843377666484368686c57323747375576504f5776356554552f5a4e4b654c70656d4e32757437505762563933696f37595a2f354e65696e71722b4c3256366e6563784f384a38503951764862735737772f79726b4a2b51523157646e5a566e7069676c4f4e4f73354e51456a6b2f5a546d374d58666c6e4e4c6c48797a53316237596e736a5254385766795176623564355036592b5156624d7542365a7836576e365a364f6a6c5476302f4b2f54797a4630715a563374624a795463326f684e303767436a32576c70544e47512f2f54784c5855704d525730523275304e4b66376844342f544f2f794838682f546a7a6a6e6b76703335766e5155614f644c4b44352f46665550784a553776342f53524b3333537330303435453270664d3530372b6647464d6b6c4e4d7a74644b4e324b5737566636447a52666d482b544871462b5276714e716570486b626f394a3845636b5069716e326f31575a486a4b7152622f434f7a36576e3130645332516c5939664a48746348767041434e676832307058546a62413037766b556f544a2b6477527a2b762b4a45443343564e50325750355752794c5a305676536d557538532b63335458712f326d582f62433446324754524a537a4e73627572362b5a6444415938744b6461796c6232796a6e786979664c39795a32584d573734512b775054397642424c4b79743366324d6647385878614e7656386776796c344f586977743765686a4c6671547964464e684f4b71686b4f4f4c56736337346e5466414a675341534e35697465457a4d6a2b68642f61462f7478656e2f414f4466342b654f2b582b71666776694f782b537671317958794c7966797a567a4537472f77434359747a6b7a522b443576646e4c576d4e49694a5075486e556b483646645654695637336550375272547133785733374f7672714f7a6e6e634f54354468712b31356d632f6b726b5839796f6336334a30473257366e7a56423334706964524774417a4c367770426c36357955694c356b75506e3963305a696337636a6b462b636634552f6b4636316569666d2f6866343365744869324e366a655a583747554a2b594f766c515869796f49597469504c436c31763137714a38327a4d7a32696b42584d62662b784754767270364e4c567053315a76546c72354478362b7166396a6e2b34703659646b5a522b5031486e544c72477a497038483873792f4c762b575446566d4b434c6b7248565755385a6350526368724f4f7455426531784a53486f31397130625432747679484f3731473949665766307a3274487876314d394b765544776a794443304e4b6d76453870386538676762466e5364756c73737069303833724d394b4c7055704e7336526d496753486548376c4333574c567447613333434246584f4d31675135712b483872354f39524b314f674d7a4248673836794434755556484a4c386e37464174656b314e58304f4c446e3957323832305a726734353944304b476a4f56525838476933444769685079646f454a61507030644a53534b6861574e506e65552f636e467165634869584e3037646f4838666d614764787446463069696f55594d4e5a64525245612f6e7153387332726e2b49734d6666376d6e384b334a435a52306537713347732b594751704274355235396b7977346a37422f622b555744583155396467574b364a733976503461676538364c446e3559484f695a2f2f54462f68352f2b662f5945673679756a3363364a413566735830546f304b50664b6f7669574c43583869535551734c2f48692b652b626a65657769483378325050494d714b335172476869542b4b776557396e4d57716b2b4c6a6957684232306f2b4b6a354357763938662f67726873373861572b384f784e6131367a6b62352f3236765644794430562f4c7630513138523147524474372b66347235684d4f67365a433862616b79384c5670374739677a4d58326e566f634a417472653954384b6e4b5a2f6d575774574c36647074336a317966384179672f385a386e31692f43627672336d654a342b3336686567476a6a37646e6c306f5a744f366667396f325a656a6c3137436f342f774359782b756f466f706b6c596955615530416c495275537a7a7659373764585a4e755777385366704436562b622b745871503458364e2b6c4f552f7741703870383231594d32626f3664416f555847464271334d6d702b506b736663752b51524a7241482f424a6f414b66696366703274466158746234522f5233394e765375333059394a7652483042394d5a6544463665654c5a666a69364d734d6969567578466e732f5a5342564f76732b7054754d2b556d7a6b383266776c667a4a4b5a4a4a7238653974317258743851387a48706c2f59392f4b373874507972396166554438694d753330433949394431653831335050665558526e547337326c686858705878662b46525a566e786a52586a766a464c66627a6e52634355703972364244747437567036656e45556a6462623252335a31504f7677582f74432b69753167656b39506a50702f7238674c4f5435416c732f6c66717a3671622b664f79754f793379534837466d5778737445763178367a3253416b696734532b55534879343164653262635a2f32775048582f63452f754a2b746e35732b6530562b5336666b6e686e70512b716a547876544f58573148535538497035437638414a6d7475346a55306c786b6b70774941416969594648562f4c383339656a6f364e644b4f484e623851356c784970396c4356475174467a584f6548475a3443444530666245314d492b6852584f4e51423161772f78364841476b6d394d64723971522b6f7642726c50374b575771546e654732544b672b564c4f6657466e2f784a654373574b396f4c656e33394d6b3041515643314963624c65412f6463536d5350744d586b75733833697a6d4c71324c36583246517475534b2b77434f665a373641396870616b7a442f36722f6d4f2f6c7a354439536761675370314452594a4c624631455275344667787a68504c3969577a3266373559303046536f51636f59484b48724f43513967483172354e474f697156456649422b344c6d46306b684e6f2f526e5a646b6a475861503455316a555238642f3133652f33673448644633515a5749654e736b2f667232614c5a4933774a593465524d726a35384c70536a4b6e6e7474364a4f44347739386a33704b62326d5144533043656430584e5a477464746c63694466644138375235484263496a3966686357736854374b434c3269315367354e775641376e2b7a2b676a5a77305a39544e46554139665062386b616b644b315930795743796757546b766e7464324e6e37367a767645314c352b69354d61756e6264793763433162616c356e6b4d473544423958526c636a634b536e6766452f786973567a325339573255467a30636c41754c452b463743577a324748755438565237562f774150504250415079492f45727866793355736a733869536a4c794c50343632505054736164465079592f54745a347a537a486f3746746535684b486f66395872765948326b79302b6271544e4e533064636933715051334d394e564446343935567051514d4a4539504a394765485967706c5234335a44472f787073664a307234566d61726e476c487a736e6837552f445974514a6d72756d38346e76486e472f764e65513373394e66547a4e75386d3039316c6e6e2b31524a5053377155416d58484a6d687035454966766b6f5536326f7769482f414e2f7855716361774b68686e322b79787a5735654134492b4b4f364767367466484e6e6e506e79567246626566497a6a4f6359517548764b6d456e3343432b3850672f3538614852352b6a363778306b5350523632386c55352f467358516d663732572b74335064542b324956526d464e38693355645a5a563743367274502b5141674f473734663669763462514535532b735833484575644255647166424e5534483854786e38654a6a7972334534566652396775553445386f54384e4a4e4c2f33786674534763737a5264327063627075634155304c70657546644d2f5672706e76643070794356695763496e43612f3877542b2f315038413442796f642b306271666867354f6862586f472f71315338304d32316c5078446e4c633453594c754c68635168376d67624134355238373152726e76357369562b4e2b7276714c34656a3965422b7058714e34314a6e715577354d587948587849754b303569566f50526e727534725057786d765573765a38633571392f74342f774379592f314d316965315776314671542f6c622b514863544338666d3954744861777645766c5468487035586a7a4e704336626e585051586d73384b394b7164684c324766573565614b2b787337325a7a4747483956393354646e62694c4366617635332b74752f36712b686e724471782b4c6c73656839655835483439486944626b532f586a54395251567652704e646e7548507a6956386f38623879307a6955376d394f5a7352705672573163596d77396266345266334d505344387350426a776b7371782f4c354f7433504a3855797935394d76492b394c4f4b6d415a69627968314566306544785368544f452f76416b71625631506e61756a62546e79485477393750566162644c637a494d324644745647526a7731464a743541746c427a627370713264734a6b396853566362334e2f36584b4b654f706a455264694c6d546547786c5631596f7a7843532f715a5a794b35445a7047367544737339744d557636686e5051307339507a546f4d3363642f7254394434365a4b32786a6d36434a6571766858702f36782b6d6e6d506f663672416a55384b395466486d34766b424537536b6f7746336f2f6a79586b3447776c7a4d4f704f58564f3954614b4c50634354706337736e336c73524d317457316531542b772f6d2b2f6b48364e4e2f4844317a39545052326d327532627733586f77385852516e7243322f466e615038746e564478676f2b307a6b4b632f6c46496344344852394235697444526e396d6b2b387257336659612b366a4a3066464f6f612b3952566f3138696f767162336955765976336a5745764f61482b2b716a2f6d6348485370592b2f3271416c4e765474514959744154794542544e2b7a5a513853635077312f77437250692f5972344c306b6242344c69367866444150696d3737474f50336644734d4b463836524d2f30306a5163796a4c33636c7259414f5945364c424c3568397648536c31366d665a62332f567867675969332b67566330436373515a4a4a4e4e32462f5a554d37507833554a397a425577364f6b4a4663346c645630502b4242592b34545566514243646943595a684b3946484777635346544a30792b3654734a76466f54723656686638417850384167466a3030393634414a6e52446c62646d512f696873324f676e683939695961444f746e53344878432b5a51477a39752b59766379684b2b6344702b372f46776758734551693173634946694a39502f414861695864714255747872444d754f516f386d68774d6e684f5835666b2b4a64487a4c4a695237537058657a644c2f4141503666793033546a415466696d673364776c4d6f53366e545166654b4f546c57526b323353784e4a437338526d6a2b534e616d6e7a674e582f4a474a4b41552f474d5a7a316b5939526e5549307a70517237634d5661453843306a54734c547a4e4a46476e4f54444e4d344c63376c4666572b3533776763344373665a2f5564506d4e332f37644835587a2f695236717a2b71547642462b5a496931732f794d7249575936664c5a6f4d654c53566f7a5a6d626f4d397458786a37546362307446763169354761612b6f34757674465065563237746f3949556639387a306c395839486d35663634654b2b6d7678354656484d7a7a7a773363794e6e4c3143686878485a6b447331623548547a706a306e7142617571416b38654c57317043597547505a6256365633534e712f78562f75542b6848724e366c782b6e5756366b654c2b6661472f6a63713566675a31766a47686b4c5154524e6a48614973523979614e4a6f4c366261526344674e4e59464b344a36616d686574637a58626b64665044664f664b64716d437a513355624f46726e50334931504731566772616d6b3048596f48794b7251467a394564686d596f6d55436b51376c423959514e4e544135725672484878486e772f2b554b2f6772722b6f506a4869663572656e2b625271322b4a357150546a3165796f467643754344714e524f4835776e545772397a6a48736133775663613178416f5165485a6552302f4c3265796173566e33552f4f6f386c65386d50786e466b773053367572616a374833323959323632375267706a306f357879424a6b394765524c2f4145567371576a385a67464358555466382b6831416a4b7a387652643277376930496443445651375330356546505a515575546e55546a784833544651554652614a666f31664e3741556e6c5a734277554c3545724454745774783373373252525366574d7261414767536f4c68784e2b5a6e74534571535a77534d584a6654395a69543670704872584f4a33644243747076794848544e37666a415030624f633635437a48677135377633372b752f58466c376d6336592b3469454450323849725277346541444d2f38417068334f422b756436546736502b77754c6f2f342f524e582b2b64353854662b5335777565344f653066313376376b532b62494c4d49454f6f4b58524d3131447778416842796b6a514d76614f6638417779354c557a724f394567466f632f792b5a58776e574c52505157497257646b7755497a7170526e7662585473564852523969784b536e43647a333172346c69546248527a71314f4c7450663137784834666d6f796a6a5047635a48356d69772b51737a465630515a78794c454f7472644f4347456b4e57674f7259356b727a6d6f73516a71674e677a394e6643393469427a7478327545416e4e5a3861426b6e6a3455494a6b7147564e5131764c7147546c5348584639636f7957787a6742786446535439366c63567a3551476f4650476d5a41554f55314c6d6648796d545250717046396e736e574e3153566a38733942706e2b762f415068676441505a3168702b457a414d2b6d514856756e514555327364522b7870386e70667866567a6e524f744e56485a7841503545772b546a666137485034542b594f4a2f702b67646334737743364850486f6e3047555a6b6c4b31796b6a6c42505938364f4f45453571467279653962477350682b795371576c3154656c50667a6638684f53634b375174344d6b674b6a2f414546693946625436595346303530562b3734557547646d537633453533456b596b63356b34766967535051386a3871666b705872655865586c4d3175566e74697238723339574b6d4156505959466c6f6e617161464f67526530506361564d7a44374e787250387974776d4d567067436f4a6c6d52777838512f3478466e33614b395672324471756c516d34616b4a427131786b7a554d6c7534484f714e7975664b616147697632704472557174396a757a4f6f5458577458516d792b4335437a4773514d48325a4d344a5a45413439424c34536c487858734f687a6b2f494a31475061624c757851722b4a7a6c64646e4a4b7a2b542f414a476f786d6a4f6e4d51766a4f3958475a443861686633396c52473530357975466c50394f6e6b4835577272517456566d6e6f562f572b2f64475768652b615672777548506f6b73337664543866596270364459736b546f6d3967644d6e63625141665a4e77447351354f6a3068556951724f394a386d4c514336374a766c5a4d4332562f582b304e78304c553070785653346672416741537963546a506343374e7878556e524b7a50686a3247547365464d304a4765614e56696b565552614d62416c2b504b4b78724b6e39553054547835722b44704745416672582b563649565a2b52305069695744724e694d666a31564464316e537a3131416c5832425335626839796563446e32545758784f5437567a47337648754f2f737a2f6a666636432f673136573136386259664a66574e7266564c586e4e56334e44576938707a302f7744686233575461306a5a5653654e6a724d57314e484676444e4d32384542534839655a3754666671326d4f47336c48536e38796657795830713945664f4c71633269326e50384e324635683361322f735635696b5a314f6e70624874686a46524c6d6f576c6e7966496f2b6c4277796651704c4f637730363772556e36442b623736322b70484e547a44794c48385470356e7a6871476c756a6e6c7762584a3636705838664e516d666f6b343257664931697a4d756d6677695a4151705837576e53496a4e756b436d635078703438613939423970416d63465a754d2f5a394d53357a37485867497550343668377a76525076743977682f6d41382f7130336d656e41546e2f4144434252735459377379562f47797070447a71556c386248554d4975674c6957504239332f777668397741582f426c2f5642745634463774434b62786658766f385662343441307a48716f4c4f6c6177667461544b486f4e6b673177715a7249567757426539727669486a6d4a4e4d4c596e68783842756e366a614d577634576e4d38626d3075346b42522b494f585a6f385845323271747861436447783876795a4e54397a656f55785131304b6c53644a4c704a435a78484b4f466f7a3344566242636e473350466e545a30586450445a507273306f6f4b3734742f79456d777a6e456871644146726f64704c754556537a433465357258396f53446e462f576c2b7a496c4653664b7652663841492f787a314b3950663533466e38336f5835484c7a48746e6f58675552614676376b315a6451726b375536645a62676f4b39597070364832506139763266367245526575326534656e4c38527637694867746365446d2b734f4a4834337232307a41666b4d4d464466464b72737859364e7432592b764d5757446d2f653171466b5273373744777a766164456e61416d346454526e3442314d30664d50786d38316a7a644b2f797a782b3357705a6c6264586450794364574c624275646446706c6f552f4369645930335237556a66332f77444742796e6f2b4832476b2b6549315077446a542f63702f754e6568663475656d6e6c50706a2b507234664c2f56767a58504c507438586d6b795034377769585156503972796258526d4f553745322b465a4f6363376b4c4a542f6c496e52303070475071304e473270616258374e5235517136614b6641452b56365570313646756633794856334f38475a713933623347536157316f556139675557616961506a537474507642662f4147484953616b3173373335343437784f2f554c315a697239434d44772f476c6e7a2b79654e737a6131314d52377a463173737741634c665a3268366f36394a495864644d6d5a3244537050666855344778743570734e4b382f78736244476a57765176674b6d6f2b73536a2b3178693069446753337269344175455a7a3530666b2f306b432b6949653441316d324a78576541442b545373625a4c4e4f66576f6a5574614539614a417059415075347633462f6958542f414f65695073416666305641432b41417a574f747041454a364a6c436451674946336e7355524c2f414f4f3836523936584f462b7850326b502f3750396144746c2f624b2f757165562f69733666307938372f6b664f2f536d33526c356e525533474e33697269617a70767a657545762f542f6b5a376d4b4476502f414d5a662f5038415844722b7a7871633852737350546a56355636552f6b2f6c2b5038416d6d637a4f305830647a744758577a744e6474636946484f364b58535950375a384b6c7554376c2f2f5235372f7742642f66384158444f37546e41682b422b476e6c3372392b522f6f72366971386838667a50416678783837683832324b4c4971373944796e664b706e552b4f355847724d495a76726c4f31314a642f7741434d4145424c2f6e6b7a717854547458484e716a7156356e36742b4a656c666b4551363632366c57707574686a5344306e546d432f744576756c4d706546704f2b3853556a7a702b373975357a2f77433850395a625a764844764845722b2f74357a354634312b4d2f6a6c666e393659504e2f554c7935666a6e676e696b6c6555366e782f784e326663375730504a64462f744b4f32684d356337786676556c76764a7063397676486f396b694a31493239696f3859316365714d73553172492b31465232325742644a31313535316a5255584f67626a5547734c766d594853344c506d30684536364671426b336f427575676d73356e6e5a4e6e4b3748326a3239375478366d56756a4b316c74675647304b75454b7949663266666e764e4b707770622b68416f2b67705a703666734839646e7836457a5a6b797a76526f61536c366c42724e5579457a3144504a556f6c4d655461307a456e2f55584239344d536f576a4e6563314831783068657779703732646c364f793845576444506e52536d66734f30516f5370726764326c507553312f76352f514461364c516a39354d57633079326f7a7361736f5a694835584f5832707757666f6b6c377849434f6c7a484e4777766a415671446a72636e6d4667557674526643425273735578744d75644b745a574a6f2b51346f67737463707337457a735a376a4d7735307076635975506e50696a4d34783342354f2f5158523353584d674a2b6c306c513149626e4e755a48717036333636426c7034524b58596c666571426653454f69414c642f7472674f7a68364c4556364d2f55546c5579326966346c796c64424650504c4568664b6d752b776c6372424a5a6639696b447144716c742f635963435033327231644e30714b477267515861346871484f524c6574707556494362586a30666158746e352b6c4b4a582b6b7a3654446e4a68333234724d7a3368353966574369444f434274616e4e4d394631626d5053756f4755516334616c2b7768454a667275456e6534754437576c4d6f3065774b42684d586571464c51715442326a3456576850434a706e466631356e3849796d577433316b7a38306d65394a6d794e5964345239393339423930326b797754644e65314346644a4b707272772b7562545a4e4f3656626b316a4459656b7866744a48614f43354c4f394d5162377636745474514855694f5452567a554c354f64545961574b2b4f67727052736a5a4d5639464d38377561455a744a3346382b4a6651374e38514e44686c307167504c666e763553726e577147674a355761457a57545a69767477667872684a55644478537675575446384175435168376b6958794c366737624c6541392f77442f4147787466315538582f464c305a385039555939724f3871792f464d6e343550494e7237316f654f6552622f414e584a4d4d4e50366f324a614a56353061454d623848745438715847785a7148796462624f7261616a73433379706233376551323978533679704d31424f73685a4e577769465553557944374f43316a737653344e48765453665141345434797743627a3766697a35696f504d3269456d6545464e4e68556c6c72304754476d766b4b572b4f757956742f6a38664c57633838656853546c554e684a724b494b4b5a497743676674364477776633765052462f705a2b597531356879583657423678654b7965635a65645048755a714472674976486431765558797261444173682b3435332f626e2b5635416f424a41546e3658737474326e746e70556364436a342b626a454a46692b5062332f6742627966744b667273467955523842592b314e426c786f2b772f766d4b6d69585774373165383867524c68324a5a535a66706f78685850796636726b6364796d683768414b6632374c4c724e415137375235332f414e76514834484150637753747a307531653951326f625a744752576c58314c4b714266322b644c556b58496632544f55616b374f6c31594a665334484b57414948374e76672b763644596638522f7942386c2f48763179384a3956664774396669694a764973724b386e726a5a4e396b7648744338594c31396b6d7358576c59454d376d7035383378386a442f696a33476e6c6236635870657339594866442b385a2b494d2f7250364e7a2f6e723664655259476c354634353472342f6d65732b424c4946506b586c6e696437522f6a5056436a4a7854657251314d2f51324c77386771397a565454476f6a72724d335542782b7a616b317437712f774250723849632f77426c6d4479487972385066556c6542714834743766557a626d4b3173375764464e586a50424768644379427557504b746d5871776d74367252354e5175726e756f5067506170694e536d66776a7a586557786157583558355a342f70313648314d586633384b3574643038304b616c36644b4b6857334e59366547633648532f4a7a6e4239374a6e554134474346452f62474d567349506b654b2b547566335838583854386a313848476f37556a637a7350523056465047445156796f2b785554754548652f394344774c695847416c2f796673764d78306d2f4d4f752f34342b744758347a3650772b41576a6f534e31743532686f4571754b585262504535616f795172794456555a584d31484a426c724c702b67365a41706a70583855776339717a4d356a694e6d572b6f32576e46386a75783639616d393530716471654e615546376d3574715348557974564f656d6e4d5856506d31697a704a4d786366696f4d7a3341465073566d4b32386d38356233585165577174326650484f4f5a6f4e417a4f6258514b382b7732584c326f59634f6962367562317266686f2f32756670587a4536785238446b562b5358714c6236722b71756e355473305655484a48506965323679566b30306d6470753678536c5048333054684f542b6361336a6a46316748382f56416e2b7576537274724d514e382f374e746e69722f77416c664a504450506c4d30736e7a33306d38687933735047646f6c5a4e6d6f31744b6a476575754e374948554f4b48726d71396a6c636a643952784c2f78504832724d616354534f7a4936792b5466326e5043505654306638414450562f78364f2f4b38715041386976386c386478663432614b6e50666f54685658733354786f5250704975755733724743303072634946472f38415347687a5237524e4c5772505a4845627a373850502f48764c4d79547a4878443158384c794c36716f494e50796e777577344e476c7453307753356835772f45786e46722b4f685a56574e6f2b2b723435776433696b394561737830765742735636502f414e716a314b3835386d6c6250354e4a71656c364e566d7533597a737a664739384d476b7838784b346776672f77444a7673556141426e70665351396d706e4e7266686238644c65305669507a433166582f38417474654153585a4f6c423638443438505a383346757438787a38764e7a334b58325a664836476c4c354232664c6c48535a6453795535756c797158532b70382f2b37345970375250446c47753266384132765079456a333479395076556630343147594e542b71396d374e32504b4b475631734e737a59466a33576b4b714e4b6d41532f38442f527563633536557736547230694f6174674238702f7468666b2f774355645a6f6f38527835364a69306d36564a3775546d655076724237776779504836374b70576c6d737539795542513141665a54542f414a664f42796631482b497058347343616667562f626638532f4975587976796a3178386f3833384f384b38634a2f6a2b5a6e65443573744778587657586a3875767631614d76376e78306155632f535351754f67674d306c796f47682f545731357077727a57484f6638414a7a304d3250787739612f5548306970712f38414a6266427467596f504a356f4c4f4235486c665843796253544944766c6a6e374a6f786b3075392b755a4a2f617a706e616a2b756a5431497657747678436a4c2f77445a55495a394172574d766563574e442b424f4457736250513137484e4a596e386142594973492b6b5a63345a704e5a2f31657563633355494c537a335555494a7a68367a3969553777453047437866786364684a6439687970574d45694579357854674d535035536e47776d48695556486b477869654a5a55723944794c65314d2f42774d6953666c6732617570717970794d3965554d354c636e6d6c525038414777556d366b36663130542f414e7166367a7445566a4e65456a3344666a6e2b436e6d76705036472b4a2b6c4d2b6e5047307654346f76497633325754524479587a724f4c527a737866782f62653757574f70724a61396e46567a665754564d62773544456e7972367357744d6a78572b726e706474656a767139366c2b6e586e4759475035503454354635486c61304466324e564c6333545931786971345241684f46792b4a34355963495848397462756436732f547262645375506946564778713635325133554e6f54512b463731303049764b7463704d436f57554a343452355177694d4744306c696b507371416835385777653256314632534254547652415254636e665538426846624a77557043357855754e6e31374a30395a4a387842772f77426e372f33332b733678317450727a434c766d6f6c63327877436842555475727063346566616c59765130345569624245766659544157735348397176412b4b56376a482b706d4a7232597a6b4e4b7067716339765435315a364450664d3662716d73343333636e2b793971336c397861325645336e76456541482b52712f7741663655365346566f2f6a6670585355554c724676446a714d697a6d596c71372f61394b5541357a6859686e307936664f4750666e446764392f662b784737647934786b626d65472f3342507a4e38477a657734483548656f5541527352704843576e466356456b365a5675354832714e6e4a3167714a61316a30666939686d7068682f75392b5875644b65756e493137395376576a316e396337413266567a3148383039514c43574e412f38416c666b4e57686e734f574e4e506672517071357859677535337964494236684c763042663839542f4146704556302b464b3752585368745138705a382f6b7a685852503058556d557135327147686e782f774430484d377831417644767963623850774e393341392f756e396e367945535a5771655a56456a785778374453326c424a6c377878326f6e715978692b456c5a364b78506e37372b77443367436c2f6f4f3036422f4d7943656d4f6854456a4c386f644832716c304b327878395a38624158576e2f735468455469634a6434346b6e7a2f4a5966456b382f77427036774c4979504b4c544762473553667361565646576c4c57787a465a64365362596873684c35786b5a7732433051417a634848542b774156787979704d5445346b432f2f4144452b78727a4742576e4b68635a4c6d4356424a5051706a6a5a5a58716e79715a6c3267424c79326f4d6d4137706752544e363732674d374c65416c576c355048707878527731503676476a6d39312f77416561384d367478574c6d2b5836612f6831732f384168357861494b556b456f39684b5342714639465a69593678674c6a5844314d5877305738584d3661642f4239694c63704d704131453567736664396669506b4e6e365076742b6e385a4e417541496855573759697a574a627051626e5476634765532b69746c3166464364677276515065584f4277723733326436546d55703577314d5941663172574e73544d3951786f5832644c6f69585a4977544261305564434272714c6b44796d6b657a43723935764b714a5455686644443947372f32435461527548555642722b646456496b754a35526f55454950363978557030483859646e37346c70446d6951745a2f3752416a353744506e444443665457717156787563763547516936483555724e626764503834542f5a63306d4c654f61526d39682f2f627564543775682b335a375050312f4d5358506573706f446b6679785572632b4165717a594a334c37646e3130557367766f6e4e677058523869316533327a4c2b4554643059785238325942614d6359445557644f354b366742713174302b66424c4a5239354d79614847504447486b767966624233524e4a74455339762f414c4533693835343941684f67467430486774504b434267712f32652f77434e4d674d57533363525579684e522f38416150706a772b6e30352f384145796161676e386e332b344b664250664431714a7662664b6f5151352f624a6e4b70717530694e6b48586b7a677a74364b656b4b306e374173416d55423768622f5766482b5936626632682f4538447a3338784d6a4132517a447a746e3078395763326d5674556d646e6552497438483871444f6c5a7a52595153726673565a49756f5951434c574c46495456735362732f614a6d4e503631487643795045664e71665462786e4239507150484d337954467a636e4438667a714d32352b4a4a6b35687038574c4e3056354253304b393065576c4c5866624e6b796e547a6d5970644b6b764c6d59367a4971547962316c2f7542656d47373663654f366634702b452b76336a506d3037352f502f4f2f42764a4950436450307a324a4861432f4731706738786c7048593863736a2b697864593842332f5a644f637766434a545446644730576e336d3362303878615070483664376c6567377950463844327644583679633064584c717a3559374d66417137736155714b7541505a6f74616571784c65742b6455314a54646135675569666171326d765362626f484b7a387966376650672f726c3676656f415a2f672b686a572b6f3933622f4b46345955314e487a316d62506e532b61346d776d4f686b4f654f487256725543312f554a75553168677030444156767061303072586d3749314638392f2b546c6543305a6d714f7036712b522b6e71362b3930636c3462754c5a6e364e4641366d6268646f7a396a726d43776d4d5969376e764d32753968782f6f573050627254323263353237764d634f767a492f74346570763466433379447954794c45395266457738677138637a7163475834645931735035636862353757636f46693747546a656c673842564b584b35386956664333713064617570776a6c734f5a394a765451515569532b55334d59394c4863577a6c79376c724a374c616339706577612f726d2f6e784f456a4d7a61372f6437773677373751787a44704e787048727a4e4170626652524e4d36356c4d383479432f687872366b6247384176386761354c567441587261504f467a2b314f5077494a6678477479756f3638705838364e615465587a4e3667462f4778664f436f78396a4b31685453676c476b7843536338705a4a476c3532356f7a697159677a446e2b447436544e306c566d6e6d79512b315078564a30416f59746335396b734b66696a4b61525041746a47387a7453432b5837504f527a2b38717a6c7a387531776d3372466243305a2f7534386f6b69346576537458736f4f6c6f4a4a42306d54517433306c39664c7654447a48787a7a6e50376b55737839445372316c33475652555965746f73682b4b5367686e59614f537a314b5354577a772f346344682f756c496857316430594873652f484c31566d38376c77664d2b54364f646b2b5134682b52595a3751426d793259766b624e706c476462514678576644376443554564743644615870726362767267435138793964733448537a7744315535336f4c4d4d33526b30736a6d7a4254585072376676596442537776305545343570666e586d6a564e7849504d6878484f6f72454a77396d553169656f76425663336c4d78737a326a6e5735347874543248636c6e77656163323555714834354b6b6b7a326e73696e374e38704b704a6c69684839574a63533838625a6a644138712f393933385874792f7a422f3571655057616e6b4b4e465869666850716d6d6c444b5976475a4d6c45386e7066636d644b58544a7a362f645541742b616a326d61562b30617a57737651396c31497837716537702f3968353165304666327657347342735a576350793647696b546b66666b56556b68462b516b6c6a4c324e4d624667494830324f414b5068624d6f793768612f69614e6648426d624371577864726d4d35773235376f5965754854726d596546386e52465972544c516e6e564f41444147634e5859444e4e6262666947795869506b51362f32634a453059774c49636b394b7561335275793173696c47647644775a57546c63506174415a3179487a354b552b7a3366494c3661387354694a37704732336a66692b642f486f587135346e7036664335752f436b63573534596d6d575a477663705438774c59762f41415833727242635044574c423935764375737a45526d52594f646b35644754464c46707a4f705831644638737133326e7a4e7067313736762f546561484761667745744d584f6c327071474f6f2f3030482f374b62722f41496674496c4f4b2f527a686f504f47756a4f76364d34535149736e3436476e75304c4a47305030424448686f4b6970524c36592f6258536330352f59396c666133375567587276586a42793137654577796b31467375794b53797879527a714642506b31614d4e78774c443354476c3747684f5854643752465248374c647679774771626f64493569525670744874634f554434733658494c467a4b704e722f666d76717a792b4d6d5561427a5467776a2b616850446c74704d572f7742614254795050304d364771334e7469506958305642664a7063696f37797979656e5335647a51777539587155444b4c79663136666132623576733141704a2f316e586d7a753434455777302b51355776412b464677764a564d4b3869486d5376367a506a6e6e497057355249584376724a387571646f2f727637764263624668376870576d4a726e774669552b4e61366b3373592b575052436c7162716e6f4b515a315846387a3736576d776a7a2f6336474e445059484f7447417543427a2f4237597a54776e313951685a34676572586b5a754a586c76396b7339483874636f4f7a535652545338717479465a624738776c7166477375646d3934475a683844693937694f73576d4f6773523370704c676c4873666537486f635576756c63624d7656695859353036786b48506d596b46787435555a504651653845752b456568314a6f516d307a31456638727171666d34302b394c6b34365a4935686d7a61724842782f77423172776c69573934702f674b4653786952304939374f55704b7450764e507775526d4f4d64776730474775323051306337584f6a47376364317964527333336d516f5a484e776d4731764569624a55307a2b776d47417a4a64337157644277336d2f5462414c624750416e4c6b3046414659494e5847527664424c52336d654d65764f747a4d723354306141736f496a63726f48306b6b6b2f6b616b32457261307a3467784c5632375061475a566448416c7372744932526778504d31567630465a324c52712f4765624f796134794764625466387a75516977304775784e6239715248417579366e416a556b6f76682b7a5477685758572f4f526b76744e63374672414a61584d48533445342f4d5a504147712b414539534c5a627746692f7974756c6a77356f464652434e306c47306e6a6b6c4b7971535a61794a6665484f316b667879734956496e4c76574f58535a395a776f335245346e4d6477744f2f786d5479657a4c6679626e4c6b597679364370796b5a786b3946435970657a504a7846586f663841716a696e5a7956594650593767412b595446384248527a385352456a476c397467323043744372356448506a58526f6b326b797a65755652446d3169676e3958394a7a55502b70537a343244383141492b52616f5a4756784f587a5471546f5673526b3847464144636e5638646c79303277525569696c6145752f69524752624242795a7666536b7a57416e4d526d6352336a5837794b663973746e69653369792b62526a643952765a55776c43753175666d5579464d4f6b755334466d37726178596b4c45384a667454544d63303755434b4a35354b76396a6e5a576d7234304d6a6e376d68574e6c5168564855344b4c49666a367546785966786e38396170712b5a6f556b596d342f36742b7a395a454a386879365947557a6645794434344830756a596432726f4f58545158654e736e466c4b342f72352f3866642b356c385a3058554a3538494e53483957703259435a6c4557585347624e6c7234434a394b53674d522f2f6b57747a2f794157352b7656512b5557714a30363170572b786a6c496f732b5359686d71536b4c4434574969535a49324b6c48536f7a6532414457334a613556305172566f616a4a4d336a343341564655684a36705141645155735372696846594c356b4d68654c31307a35444b7672507a73624c3065526a4e624a496d754e537756427a51624871564a3975585477795364493850366e5a7a4d59324658342f702b6f73716c66696a49614e6d4f545677664a33755a696b6a6250585a636443495a39614f786c7430355530436f58554c57374f48352f6671714f6f3148575a6e58397036774939732b4d3165516156374a6d5131376d632b59386c6657515a4e2b6771503235306963357a4a374a70526e59355033445861414a755a4d3578353757314e736d4a697352457a69594545387578613052686f487063385a31382f55502b4f5873507264664f6a787831536177317270662b765a55796934566f5a794f743468664d6c624776706e6336346975684b2f596b74797968353435424e577a6d7a4e616734344572366a51674e58377736464d4664517832547a72672b4e4e62507670704d542f6b653943764c6654684b6476557a795733752b7a5147504d7378752f526a69646d614f446e376e376537555a77584a74455244347a4a4a31546349776c642f316e546d63597a77454364343350425a67427a4c6b73475761376d5a5032504730705755357a62675765636a69673739633831626c554f4b64546c73797062473055756479527162544d596b597a35704c713472354d786a4c325957534f6e707979667852387a65543457633839626b76577279564d2b7252313354536f4b5a674732424c4b6a624e413942503459686e36486d6e6f686c6275692b696a426b4e4a5a654e5869654f4976306559453871364a697a3533745379716c30726c66434b58552f5a2b7a4d6e6c4b354551387572504c65594866754b7a54625a7a4d677a6b6e48444c6a53523032615958642b62503266343931566e5a2f734d6a46746b5a566d4356755a64394d79476c396679437a6b7854786e313942593262354e4d6e6b617138753369555245525a756a3847664e7969624e6c2b306465696967522f6c4a49557973642b682b76507950376b686b305a57756f464a2f494857736d5a4a7348424f626c6a7471696d656e72644c4475546c6e4858792f574b71574661384e4a766e6f53644a4a704c342f77447466344e412f4c6263306d416f7252794833726955687356536457336b3658524e7537725a6952352f7a4c524f68497a4d3931413241526646523842754242373355376148555a6c444c4b614d737162334c7a4b394b66767745597a506748397637596445634e5037346e6977624e7871516b4236794d4d4e504f2f6a2b4e6f727130475a5662797a43486e5a78565a4f31475751364c752b7850663477796f75533372482f523752385046473677414a77512f5738773072705a536e6d624c7a6f4c4232633551655171756d476c4d326a4f79484c4c76575a37744a6c4865453571534970765a53537054706f584d524d7a694159795041647939314e473573737058704b79636e496e544a665a374a4d36664265324e792b726b474f4f6f686f76706b5861667769482f30794d2f4b522f704f4d384978416e575434566859734d486443695859503538774e494e5753354133733552327155632b6530574e4b68647a39514f70617636366a4d30706e2b514638576d5a6e6a496c476657556a376d4c69686175757a6e77533576386759327158496c6e5642375a584c5354347764313358436761665a396c527539684c4f416d6e593976772b2b65564979643636536c76437a4b464171616838767338623933584d2b75367a5539792b3861546a736e61464e4b53465267772f6d37354c4a6c6435416c6d6f6630325a3970756b6170314639466237665a51746258527a547552377630436743622f41654b454361414e32655132305a6648366e51653046313075704a646e5a45585152526c2b324f544c3257656a6b767a4c4a76526e34343654535643654f4631674c4d59322b6f35367447526e7a51784177394f584f356249756a6a485058547942692b2f78765a3070576e6e442f524f4250614a4731752b5177616162734c426655754f71585775465657696872717579715541746c37414554685a78624866345a2f32566439786b644a3174644f496930514836314e4a5a6638647039354e794b6b353638313278775a6956794f6633556b313750396a445731634938574c5572596d71543566692f54704164654c39766862524f6457655656535a494a6b6164544d2f552b45694a6570537465536d78655a6f4e64566d2f4a4f6e3477615541476336435351494175366c744877556334334f363336387a4b4e4f7650554172527a50594c4a4c6f307346784d6f6a7a364b4770497843734241564e4e7674414d6b30787146655a44314c704f41442f695632436a6b7a5a5a35592b632f566b626c66356f36726e37366c4e506554383634515070687741385a4f627973344b6d747a306439355a53507051746d70735855634d6342706c49567264594e44544a4b77636244624f61546f52772b414b35716e444c786b5553306b2f68672b2f77427a374d366972395557727a3657444c3046334744435553564c34373375557834306d457953426a437a765832755a514356515341354a6c4c444a6b52646d61773531572f5657372b5153466530376b6e532b5a4c464278626b746f59422f7742415765726d58636844304c473936715a35416c464f646e753730633974476744326b434678306672506f706d34507a41324d6a39716c6a37444442726b416c43596c2b33505268395a487155446d4a35476c6369566c59454e346c32787a34526a6e44692b653875786f2b41652b34476742713674663357494c3251766b34457a2b54496e4f3871364c58452f4f2b346d566a562b77595362312f4f4164667a4b393474635050614465724e64596c50386751736a35695a4c79506e4b43476e7649585177664f44334373667477752b4b6377364c55304a622b6b556349364f41754d637131635a496b36755836504c466f6c2b49542b386831445a39544961556f6b7557756770566b73426230616630324d7a4566325150754261744c766a5a6371745431436b357072303837397232724b656448614542434b6d43527a443374435446496d6c782f723452414a5453614f35307136365830614772622b2f644e524a527a4f5637625a7048787246336171453646534a7763436c454876584f70436666386f4247714b52766f726456326f684f526f3855546d324670716470755865756552776f585a3761716853524a4d33476e3942385648414e61516a43774f39306f614d637578327652314479336866512f68645571715352797547514c687a6158526f556a76522b32445a67423150772f414559534f4d6f4f552b51752b75794b39342b36525a4974736e4f6572356c503779696956724e7059304e304a4854636c6e54507a2f54302f6b574238416a31336450514f4276496a704b34736d64446671524a59636346314e4a4e4f566a56547537713539797141514169435a766839356d6e374167724356587a4b6b7a48424a6e4f7a5067586b444b577450384f76547349486a4f787730754969757a52446935326b4a636d6e44374a4e616c496765566432747947796e4c3369687162524c4b77706a6238665754387257504b6b70576c6c69786c63396e324a7a6e67415148354f6d42424266557874446c55514b706854664c5375536c4d6d5a653637576f686349777a6f526d546e514d49324d6f53716375676b4630394c706534416559634f663775757a6e3547743642757a5673644c4a706138797a4773616d5a32653261724d30364a364e534142796835594d426464772f333763716d634d31696a4d4b2b763265766169334441345a7675566e333037436866555557327165695857796b354c4b7069315858795534326a4e6b4c4b4f6f353456705964436a6343516e4b6a34684d6c4b374f485a3867353139484e746f306f46594661427475746f7a2f4a3242776257352b683269435346444a784c2f6f537775574837366744706c6d5972333056386d436151627776494a4d6569656b4570724f62366234484569445332637a4171716e6f334f4b5375647261574d587261305a304535457868415a6f61356e65425a585a5877483772706f745445716232764c4a4e575a6c6430704e59434a344b597975456577596d67735a5370736a525231506556767668664b4b452f62397a6636722b373965496d336a32706c307a584e2b34543230776139646a4f38567939767832614468756f6b5937764d6d746c4648776c4b4b762f68544934497a492f664c6133375569324d4973617649736b67585863575541547a75356279325236596339356c3437714c354c4d6c4e6b384b3941526f536e3748506d6e7661314a67617636714a4634503461767a66793056336555596e69484e744c63335072337570546734584e6e4f314e4e6d74555038414c46324f63367244564b5031357554635356674a34307041636d6352504c75444c794c783253625330764875376d446f3234562f4c3439504173356f344e755a44547045652f6e585a453470304b6e2f414366427779464e50736a675341793030456c4d784f4a7a48634866694f62564d697434784a324e4c56634b2b79724536584e754e6932566a536f382b4953316c5a39557a534b63556e386a7154396971503841525441744855384e3076334c2f7743552b376e4d354f56334c747a3565665a536c6a575351564f736245354645363530314553584f457737396e355774634f6132514a4e44347856434d62722f4a4e774d3569704b4a4f7835745339464765767376322f676f676e53325053554b566e5238357a4f52787a46552f65476b6b4d727672346978504763766b7855394b422b573879645154394d4d716d657969684c456177692f38416b3370316c7a457a42513273787359466743716141516f634436327633524932516e386331465a716667516e57624d2b76537630644337362b646c314273364c47417878566d756a50566975716354524a6c49664d7a36616e2f4b37344d784c76474d6e33396d64493744786c7748664a486d6146616237304f7933636f754e412f594a4f6c464c506e2f5553395456705336622f537052762b392f515744714d69624a5a506d746d43384c635a3933632b76756e3271466c57656b796377584d5439567736424e6e465a6b50737a59302b3172595173534775336d47726f67544f352b4f574f544e54684970475573724e636e57354f4e41346a3732437a506a6f5444633846564f39726d776577533970542b774e662f41444275684463514a6379555a4d37446a304757576370366d744b4753573055306248793879345364525168662b314a756239644a704f616e704f30727a5a3363634376633358386b6246395a6b57616e7563596361477a4d5166582b39454b474f62436c6a3076636c4d732f7743762f6730725548633175616c4c6c694e385234514a5371436675415659664c4e53444635756647626376556e5449557441743262554d336e492f77424339436f443538684a446d616e35307537306f416a342f702b6f727857464e784a6c6a3136657453567170797170647746523673383036794e4131554d5036716f53392f7a6878594a536b434d2b54417370725a694f7334427163636e4e794a397049756f43736d756755557278546b71754b552b61626a7163626f3466355350347241564f34442b2b6b4f664b48452f306e6a457834684c7759706e326b756953734f757a794a7574632f727036666e72574a306f6d712f53386c6752756f6f644f772f7239544d58333531456641614537526a552b5637476d7250564252336e5038416f504b436e73716668324d39325432796c444f4e6b454c74436450535578796a52374f574a6d6159474763576d4f46684c4d506c754635412b687855746a57752f4a69504769783574615356306139445976695562446f6a596a48304a655543446b2b78645045726e584d6b51513433723577483265756873302b6670745472442b724e4b5356635863644d6b4e7356544b534b6469513539647a6b3562624364503078756c5679736d30546c53326e667935453473784736534a3555713869367169743361695a3546426e312f53374e4c796a516e697179314f6a397a76644f746832705839424d374237556b48657942577859436e6656644b357445354d6d5a5a4f534a4f3175725330713864415535796569517a7a352f31414d70356b696b326a39686f7047597450656551702f57794a565642493654496d575041746f35706553614b346c74423266704962754d327442424d58793753334f386454326c33364e4b56544b5735546d6141727165684e5234362f4d473638746b6d4652775879597247786551365531756533525a636a397a31542f516175503541397743536a7063514e7363716c783033783444586d2f4d766657696a734c4e426c316b79737a67757a4e62547173534136724f4b73584c7875586e707a614c43634a744834546a583859664451483137697876547a784c7948797a53334d7a50547266773350766c6332724d5a7056565179752b354c31477870547270364f6a556d6a764f64377836545376324f73704d4777524d784855432f4d6337796f4d7a2b483236586f3568366a467a374a6b556b47644d68363267764971374f745a4c2f6c467237385949712f32307941344163356e76524d54786952454d536d72566c6972704c79437957504832717273764b6c7537326a4f37704f58433239537054646c724e5a59663749674a714f702b5a564a4d5338516b573334766b6150466168543063793948447a64414761364b66343353376d355049356d646168766b3348584a50575639583950554a7536634471415857736d684532694f73695761596261394e4d32786f4b71787444557576646f496a484b3866756650484c42303539527774566452314f544b436661356330345a3554477376656570324b34322f77425261474e394a6e6a2f41456c315435306f4a3048775764776f702b30354f746470416f38362b714d4b71763352536f3264533376366a4e53665a4f5a7162546e3866312f5541642f7a6279487879765468665976554a3471784749634d716b324635486456523941714a4e4468532f496e55585632586f6d714d544b68376f546e6d6f54614b3174782b77366666322b4e5942394a2f5544376c7441734f72505535644f50554347544b372b38505173765251336c5631446e366c4448713658787532442b4950736363386364627465764962306778714d2b6545686c747a4a454865754e62646471754d7272545a6e735a6f792f496d50342b7a3165396e744e4e48514e686c5451382b486941336e71375a5054547a634d6b5565397669506b5733776b5455544c62616a4e716d4b7533687a396f4c356664513372443459634834767554677058376f6d7657506d5035473371653242486b336e2b6579396c6c422b70486b616469682b6e7862553063386b7557755833636c416c6b5579716e667469314748544f5954476a6a67353944584d525766792b76304839463330743963664e7678382f447a38586b654a2b676d74366b2b505a586f6e6948354c62344a496d6d6a4846574c74634f766e6a364b6e314c757548374856697a324b6d3539662f76304e642f71386131497671616d6262654930792f4d722b3774343536582b486546656f5070523472563546354c72655a357950553777447a6644727a4e50493850774d7a4c3172487233442b70334c595169735749656b324a596367476b34546c4a6d6d6c37504e70744672646579504d462b586e35544b2f4d2f774264764b66564c4c7732654c5a6d3779524c70743575662f4b714a55544b4e7254344d792b6d355064614f704b725871555a4253662b34614f756a543336656e3771753062696568336f56366c616546692b57656b766e507072354e695234554937506a6d723668596d5635493744527455345474426c506b745266796d354e44695565376753716c367632653166526d2b634d625872484331624466507776553862387442666b3371783675572b46656c766f394a68654b2b4a703358375757554f44343530714468703863526a78436e5770393268487867464e7779774f4e7a7663354c51444f596d764c57753631686133715a366c4b38776b3735682b496d705864356a36572f467565445952773650582b567851524f7939667857396d3878756e6433517837504a6c5a436e2f476271542b3236517734596e57745a6a4d616e4774687a752f7546666e74344e3572365a3566685870685a343159586b33674e4b76552f782f487230705966432f4c664974522b373548343869546f672b72526c757939535633362f55794736437276696341414532326a7054757a6238584b505065733539626974476a3652464f31335a72537634312b486e6e6a646b6756627a716569507779726333697a5a332f503243315a384f59483958514d546262317a31576c397563706f3747725a5477656871425639765a716a675259417245303556584256377666553533732f7746504554424b2f54723075382b3954764d2f46764350535878585a382b3951764b72757851654f5a552f4b4e5a4653396a556a75553737755a524c4c6a3854514b2f653667464238507a4f2f77416632766b7a614b786d334c5165346e2b316a2f593338622f4453764a3964767969717966556a38693879585444787a77684c4d2f573866384154627473473036686b44366d433353324778752b754649714c36774a4a347145502f5a356674487455366e4a703874423365736f37714432656c4838664743466431353338366d584c6f796f396761363258504b6a3667663748635967317356513533577536555a6d5839636647732b595a65553838643866794b574434797235684852517137637530314b7459374f684e62616f74497155466d756a79364465796c446663655570686b3431437370694c5737386a6e4e363157666b66685a37504d2f78393870394f2f5546666a3834614c2f414578386e53374c66703935682f765079636275494a4e775532354d395572752f5763634d337a56474861727447716665757a342b58387735342b6d6639346e312f67317436447a76384166573833654465516a42354a71656c3741386b792f484b596b453977365266384130562f4644474e43546e2b4f7952454e686d2f676d35776257396d302b3757727a2f6946372b5566337050786c44776643387a2f41434f39453933786e7854656b376c654d6148716c3654352b2f6b623266644e6b74714b65725069344e42555136302f4867797048776f4f576e34306839502b7156396c76757853323633355a486d572f75382b754839767a3171386d394a504b66777a394d2f482f42504b70737972573958744c773341487844786e7968336b452b6535384850486a7977347a6357517a2f4a524f6f774164557746716a45666d37665a363631596d4e57323676776a6d4636472b6a323336302b57727842336c2b4c594d584e4b7661386d74526c353551347a7a6f6c735976506474544670366c4a46326669657436366978694a482f35675073364c32696b666a396477337a3965507764394b664850517652395350534c633133655465417677342f4d732f54315332482b51337153304e747753535845636d684e6d6c59534f7a4e424a5478752b4b632f63446879707132333762386132484b646451495971375353356f6e2f414a364130653370674938584b5079723476695676616b53446f3946492b354b7761343344372f36326d764e694f49627a52364957716778734a394e6e4c42465430724a7456547061535637757a39596e35464439677545726770415747706e79664559634b3344724e7776342f48737737617172352b6f3739314f553337523957556c556f4c52574b51306662396467575379715076533777536e4d532f5a6972675261305932314531394d74327a78543153394f642f497546437366796a7775395671512b71336a4974524e4a704f324e5a6b36632f2f6f6d66474630707231693442486f7356466f7a573853503677486938587056366c656b6d58344c35764f486c7542355234522f4365514b304d7961374f333036766a793474425674576a71464a5375776c37684a50374e50736f796a36527142726a4c774a7a573259476d2f6f6e2b436e345366686e356e3552642b4e4870486a654f2b58364b6e7833655237644e4f35354e56503334772f6a4d634b5a3645357679554c30754c52333468492f7166763742436361396261757271782b3076796a5a4a586b6a76474772746e7937587271357a375462357772445054486b4d3136333647587255652b58376469547055464431484361445262524f736a442b73385a3550447639664d6179666d48702f6b393531366361342b67476c50346c62486d61564d336c336e394f677a4e73302f745a756d724a5a3431514e3349366d4f6c7a56705a7a506d4b555845326d4d412f327a3330396b547a38772f6e552b75506e667248356c36712b52562b737570354a3550356234786f36475070767330716d4b6c557532754855376e4c30766d566e4a702b614e6935666679707254597879784c2f414542374659694b38765a4776327575634c563837457053375a35343670506653775a632f675236696858556c6444426a61787763425843396976724b483568583833475870326f48783166554e706b6e556f485566746b38626968436d58374e763232694e594d4c6b76786146532b4a366f5a7545712f74482b342f6e4d6168415a7a6972585949557754667553566b64797674585752666154536c672f636e53714c343253705a7858654838544b512b564c53492f6d6e6a3251397a4a386c4647642b697052717951432b4c762f414177506a5934612b776e524f49746f4a6d685577535970507a6645343244314b56667463382f6e397754766b7a712b3069536132314a6754635a31664c66783878706c513435334452337562494e772b3853496665775161427134544339315269452b516c7554465731503859784267595635347a724451304a525a796b2b5071493643374b54476462477050776a544b4e48736352673045626d515349766a70676f35376e437542385973684f6854304f6a342f7171633371744365684a50654369393745634e71544676742f3154333875526a52354b5756704d4b5a6b746c5a4e6c367930494358374a327242696f3044776a4a5a4150665a4a316e32476b45784e4d7a2b586f6769737a47594262483235714233614e4266526337377430326b716c48413739735a2f64784c6d2b38503953644f777638416a706d6673576c41415879442f53596d4a78494e58557839563433626b3163716d374f764973344d7864567846614c4b7572675134766b71535245356c48574c617a396748776e515965385948726e2f414c44766d4a312b6d327a346671356964536e782f5a484935337678646754334e495a5a6d3161634f7077374a666f6244506c51544a7761667a5063716c6677384867397134577a33447556362f5947516e453133545455574f706b62447a6b695a71616d2b534b6b793744306d74584c534d4561734b50394c57627a5838414a56476d6958374a4c35596d4d384a34775047422f66436b3162727652797232317479734139764e435570492b43566d75436150754e666e635a7a556f736e7953496133306b353331757457326e396d7a6e71657954453773446856347144446f365a5036496c38346b734f634c35526247354a2f4e634c4f43756634795833692b7245794d4f66342f7668645070314f3453426e566157617a6b54354f39574634304679497576516c2f326f65712b47626e66727043567932705748415949673550734c35674561396d336a674338716870314650596147386f6a5548494b653147466e313375415671624a4d524c6f5173715063507642524734316d5243356f6a625537686c3056537548342b7a636b55516c594b30574955342b6b354b4a624b4153736e476455504f67597443627133437778482f414e70364258756778387646465232716c536459314e66317454587a385a636a6f52364c4236307446554e444455746f63537062766d61512f7743487435774b4874464831702b56664730774f6163473936762f414e375074574c66316e36654e513045344461524437754f2b754c525552722f414b302f50397674314265526d58794b5a4b36574a44346c746f2f576a4e38664f79304c44764b4a394e496a4d34616c6c5433326534544f5a76652f736a3538613237366551415747763841327257722f567834677469416b73596d667479317968522f392f334c536c50415948545137767539762f7650354e424b6645764a397a772f556b3166462f4a764a504866494d362f72354e484a4e75625768786b61307979616961484f71457661345158333475463733642f352b6235437a6d496e7455366a713936482f336a2f586a307a35675a6e6d554752356e6c3570782f6338696b585050354938427a567a6e586335662b6d646b693356416863696f786d2b3439762b5969684e50506632576c754d637344306d2f69312f63463864395450547a44386b775761743875314c5870426d38686b4b76782f622b384e5470495a584f706c2f6c7159382f68734165324f6254716e7a33382f374d54654855305a724f4a2b34746a7a543833386c4347364d506b59376f6a685156747a493136315766396865717a523577465a6d44396d482f414e4a2b78377143576e2f623853416d544d336f55316a536e70344467682f6479394a70665672772f7741562f4c62302f774333302b567a5a63754435316e6a3436504f42342f444a507a4b3072654e68425937454f6e64324d50323533797930684d5a4761533552312b7a32327a377533476f382b6c387a732f4e55452b6f4b396235707561555366734b634c456b584f4632325651386f6e464c474839526a6b3071366c5861514d2f3867362b316277794970394e4b6946624f64552f7674716c6d34616d2f794346632f564b772f5879433235684438665031307870372b7664377a39776e734d46387557524d2f77446f715a795942346f3549707a3674517a6f6e5774516770316745747867496b482b4a69527559583636466554792b77636770527435314e452f4f6f6974657977416a34556152346b4f305152424b306d522f444f6b5139356359595743414d352b6d663159664a576d2b7478756e6c48393957697574624f6c43704a54725830363335316e2b345656466d6d33324750574b44334741393537455a3337686155453451774f677837373359784b62486f664b7a7677742b584e755a704534332b30574a37636850662b76326767396e534277644250795a7a78342b496c2b486b614457356658676f7a752b5263334a6164424e4b446f5462504c6a4d714d5866582b596b556445655341566673464d776c4f34315368454e6c6572733657725851484a6e53766632312b64506c5a68453138524c66484f71537a7162696f63356e656778776a33334142394d3178786e4d546963674c714d2b702b6c56796f48546679577430545772314a464b435a7a61365350576c494953577a2f6870674e43542b5a61586e302b4d537142462b313067584c6f78652f584b716e71614b4b4f685769744c453056467a6a624f384a50534633524147484d4972343879392f7445756762437338613843387039504e373165386830704d2f79484838737750474b2f5430625135627371434a625038417a565533794438666a374a59375633456e6f664c5951723532626e6574567a35744671306a674d66542f31733838384339512f543331523855536a4a325053725538643150433876462b39426b517777587131536962536c4b7a754b7a2f6c642f4b484659326c314876533732696b6b784578617378314839452f38572f574c777a3138394576432f577230776668596d52366d346a3062324d566a574c79504e68675a62734a616830616832364f36384f34336864514a4c55615364496f424255506b58724e4c577250776a6133646e77664f5045504976533379626c6c336a666d47452f777a517964673266554f6e5a78702f6e6e75416144665271446c2f6558667735783738315466734f424c697044506a467430644b666f50353576397a3338537472384d2f79485836586253726c65454a756e3050547a546b517656506538642f55326330666a35706579505a546e39786c5563634c6854576d59756635574576767236477047745464486148504455756372526b79306551573574485a4f75496a6f5369627161312f4b7456325a5130775978684f2b5978362f3975476b4b456b507839556a51424e4f61364d437649346d78644357424c69376162342b50566b73575041504e4936596530546c2f774150366c526679544f3943636e6337326178457a45534b77377156655036382b6845354e6e4435583051726d343665714b6747536b75364f6a39724c354a532f32427a70414a66722f4d694439383169496d7549364250783778323364386879494956674a5655792f74726569756564616954773671574837654a6e34502b524758505a2f7833764f6b502f5039544d78454464373059394d50543331562f4b6e30623950764f646d772f43764f76503841786a785856733474557248355a32592b59536c31316c78556176654d43526154452f705270482f7238495148433172567061596e6f4f776e39347a2b314636552f6964346c34762b525034752f7741385870776537503468366d65412b5756313639666a4739557770384879466a6d754e58384856396564624f434c6c634e71616b30304a76425375623262326932704f7a553758772f386a7a315675484d57505a30494e714b6762526332452b5046744a55585148453677522b47554d78487a4d51667339303833786e38507339764f6e72356a4f4d7548452b36426f32336536586f397966637251664c7a362f75467877334b586e314c6337397165594837506b61394350685554536d32637a6b4a774b6169445270476d4c3650454e6d576d685a4f6f305666516e4b35476335612b697453355745346a417032672b6b2f7346375445526d2f616b4a6464564c5651746f4d596a544f355a5a7a2b64594d6f30575556664e537a74684c6f682f63354934665366373148556e33675852442b7167724a7a723057664c4c38416f5173734f6669794f31784c2b7750545a424447585933456c626a627752364878324b41572f48302f65436557326f644c6a70333276612b31527a784a43636a34716e737439432b2f4d6b45724a46444a314551547a714666513444577a716438514e4d6c756d75734f4d564761465246473250525a51574d6d715648314a63384937666836757975725059536b6d6f334839776a614a416b33426132333451347a5533784a5838555654416d46534f7a6330786334726b3379616b6e2b3964776b366750326e764f72426951544d532f397855485155546a5041452b79424c5a336a68645175475a4e61754e4a4a4a30416e443576314639784a456b6730466538654541704158456b443642703645426f61715066386c3756664a70646e6f72676e564945756153314339432b314d2b6339444c6e58705a704545773961436e496d514941772b41483168716e64535653574b7a3774447372637a6d64787a6e486f45775a6570544e474b6d574d393046584747533267426777474f63395a4b64664d442b4c6c3171676379637230474e6674656d7049524547767061443454666f557a6d394e58616831486942704c2f77436b776f2b737050762f41485047732b592b3873702b7a58464e484e56645531585856646a2b77326731646c696c716b4338685a55766e7965325947546b66366d6438426455343433523952736e2b4c66706c742b7658724c344a365a654a2f4d76523952646e78334236394a55306356473573725476474b3967394556342f38414e5059583639782f516f507043544647364c7a737261302f4350364f486a6357474f617a786e447a45654e4938616847486e697a355a6f4d334b687a6530495931634f5856796832736a4e6a6835326e74546b2f445a56475650362b636938695a786d5a484b502b38483671302b5066696a367a317266516a57624d7247524652667654486d526551655a59617547513646544f624761794d633855764150672b57776d395371596a5452743750476457764449384e754a6741756c377a455856644f6a32732b753469426a565563702b77437944684c415746306d427a6f6e77503137514d4f2f4c365173527131535465324e7248442f414d716e615673594e58776b5454716d5a4b5a6336583759736a377a3245492b7a322b2f67642f354152596839454e614b67513455786b557154636c38616a4a487864636f472f73584c3972506334445730424d50386630582b483941343861386d677a5a37644c567031584832514f7852766f356e5144664d36597158304844314446792f582f414f5574366f6e50396e665932565a4638737a474a6d4f6f3255394f505878544e37497a4b645a4d2b4a7636423931585532302f4d724f4837574c71474a64575832456c6a3159396e76475248574248592b6a36484434624b577077345267536679727955736a795a3242564a4c343977504938642b4e73496e69634e494e6e4a735a4c71347a746e3030466c73624d78315041464a774d4545463849663072484c6a7846735a2b6c4c736e523431356470446d346c705a2b7a342f3571486a2b564e5a676261316c576e4d7856743342536e4a5a704d4b6e376655682b32526976674f492b517570623856656733742f4362316b6c6d39544950527231653545637579726b50684f356d724462792f4d4e61634d6b4b4771444e2b32714839353551392b4f574f75303659362f59394e31366f614d7457764c75714e787679412f486277384e6f633648474c4d626d436e5a38756c695a742b4d3472653453644964712f72555653352b62434970736f5732726775704342383077696b5170444b6c357841386d586c756e716e36702b5937435936475661756e35424e6e4639577872694c736965794c354f696d6c5255646c574942336847612b423750396a672b747a304d34727437684c382f5738596f4c4e384538746b586e70346235656552314e474c5367532f504845584f61584f513353634c72452b7a687536763459314b55507471377a2b6f7850674c4c77765141332b49533643764c494a4d71654a4a487131614d3032726b574172517535695835786148427a2f414c6138394e49704d77702b796b4a31763554556c546162347a6a75476d2b6c6d36494f64396c37495156776b794c4468386131497157436e67664339776f366b46384566313752353766622f774451482b746f6d625445544f596b5164734a457a363747755a542b79365876507038594a6448394d4870462f6c2f6a2f3841522f342f712b2b7669454f794c482f6e3339457834504f64352b69486f6a774f392f58656c2b692f5a66384148663841394839563935354233784a483054515377377a2f414a48765450336674596a3333384c2f414f675037595065632f352f2f763841316f4f7058344a2f3346744c38624a6a38453878774a643777716d70746e6449414d4e374974634938577761566638414e325878696b39616b2b4558734439382f6636456636354e585233635937636a7176366a66337a5041664776517250386339494d33657966562b7644566e61577070537a5565506332654d57363363396b39536a6f5754544834464637523973772b2f326952442f41467a78374c4d3233573749704430332f753265696669762f6a766e766e654a36732b745871336a2b4d6a6f31586552302b4f35654654366a534d635541547972766238486a347663783375557058523967653552733537763674507339356a6c3231714f5748354e666d723637666d6435726236676572486b72394875645964506a33683263392b62343134784b517431575435387754475172375a485030334e2f3263372b2f597a6a484b396e525853707052746f4e582b364e6343687544713555756c3045567a443832565451376a313177454633334f47537a75476461434a4b514554635041497873506b6a4f6a767a5338595a753974426b344f4c357037457a50342b6d4d754a6c54327a6b74566e787357664f632b79414c6a597344443238582f5142335679692b696d506b6a416148786f367065782f70546141794b31557a684f59794c6239696668666f7569497a4376674a654d692f36416a526a614e79614457395a304d706145314b532b36664d2b696a4e713537307271616c63625074546e31692b6530484f39687155386e45463830384a396655666f77666f45677334706f6c752b596545517379356a2b656d675a7175646c7159634879737a53483578622f6f452b4f364a474a6e2f565a69596e694a526e654637415a2b31536562536a78574e6f4c4879704d68736d52645a577653524346716949364c44734c4a3550316f6c4d7a6f506f396a757a65776d652f4f5a415632746b357a4f4a68554c4237734b756d5975654a62703477375058413650366655704b726d6b354a644d343532715838674a597a33576731455450534d6742647346624f4b50664e486c736c56486e7a4957716d755439574d4d707a62786e4b45304a4a79796f456945782b796e336b7a2f414770724d6451613856385a386c386776506e6a574473374779624a6e547a34634735654f584d6d52326579626e493446492b754d7453783738464b66686f446e514d4670494f33744e59375847664831496c6e6e7667486d5070396e59732f6d5069486c2f69622f4f3549747a4735715a5438617a546d58384a39727a35613166743059304f6d34585a6d474b45742b4d554e5964626530724d576e6862736946594a755845674a5674722b617a3761707447577276492b3955516d327173506a59756477364874535365724c36376d6e51734a666c5073323755674a7143707a7159583658466353665935536b467079446d49305735777334336b376e4f583279683366686530546d6e66374137333266442f5671783174495a71314b695a7769446b587a43744c324f70544d685536785a4e614d7a515776694667796566672b3776796d317845732b744d79653933356a6f502f41477876513672386d667a4e39475041744c504b3778584c386a6d383738736b52486c785a6b2f6a6e6a7a73383557424e2f4d7a6665533269504a2b414f505637537034437a2f7a45687831372b373037576e6a61423768767944324765482b572b4c2b626e58637678436932544b6678616f615679596631703944787a66664e6c706679717461317256782f484b735650354a37696d366333564235564b357847656b437766442f5554426a774c2b6e506d4e624a626a35756d2b7169553275776b49714c49475a4f626d7250534b7257716e353264767439737a6c44517942524a72346d4a6a68493246636c46766a506a6b6b307a4f72766a7a6b426451504a374e6d5876486c44666255784d72533270364c73336e46466141415230386a53564d34544c67655a482f414f554e65414b75384e2f475031537042565a2b4a2b63572b416139574c4f6952476e6c3647617a532b746d75324a516177666b775a3138346f3341525764636665736439616673396a6d4d366c66796a6c46346c352f365278656a6d7a3474355636635963506a57376b6c6e64626e34586a31586c4e4e78327930343233616c446c73634b3352305663576e334f346b4b4b53486e557263336f6d7439305446754135446d39537461332b50743147706c56394f636b4a5532696951684a4552477155656864555678566358372f314f3457435379536c76745a74385048366576584557683656656a6e715a36756157684e36532b4961666c6c6d546e7675336a6d48506a2f69632b6d6f5948715a625951445671477967557a543870593032754d6a543055316c2f555874465a6a647959485566384174792f32742f5050794c2f4b4c7837307a2f4a2f7844316139452f525051384832504a7458796a4e7a6e5a4348706d6c6c6f7a384f473358686f536e576f4b346169347841752b44424b675a48636e6249654774727854543361647132746b6570334c2f4141774438594d33552f47667a6679664739596651727958777279483037394e664948314c5676374867766b474e395950437436556b55532f77446c575a4b323950327736436e7576697653694f52585a2f36344a31742f5045626266462f45414f502b4948682f346b2b686e6a766f373654617570702b4835666a6c425a72764d4549314e5055332f4a3331576239336c4d57667142334c4851386e75792b4b6a58307841623867584d42634174666132704e37786177305139477637454834392b68666c766b76355266334676566678767961666138683250557a78443061384e466a6647676d62662f414333523868337162484d3869714a64304c335351536b6a716b6d66654d397049673074375a653865373061342b48506e362f6b4b4d2f4c332b2f64347636565a4f7436432f6856364e656b5558696e3864752b4f624e766b66686d6337777950463344326c39686e7a656a7857397054356270326a6652502f6b662b704955726e44374e3948325362632b72616477387a6e4e2f6333647a766b725653394c5438677270614271584e6d536554366b6c5672714d32664e682b4b563036615065684443426f665756377a542b6959485a6a484477473358674b4e37462b71706d7772597335414864522f64367658367176364f626c5a3833744b70534978545a567563506a5541546b73736a4e5676774d48745a6974752f497376314f383038645a34565a715872687366314f6a5047365475566e5279716371794c50585a394c35672b3456464333384152594c6c52704a53573030307656574b32696541354a57306a3276516e454876613270353954533048704b653277524e46644b617764513767694b6850674e597a3338523833514150363742766a2f62612f4a7678663841446a387966532f312f7744556e78507948633849384d723170764963434a6941334a3439756533466f4e67564f6a5870454646512b354c66684932574d51592b7a6f635a7a61314a316447314b323572442b67662b503841354836552b652b6c2b48355a343367364b2f48664f2f466333617a364e61305561497a76484c44473571576d744e6b73345a503347664e7a323578792f5038414d68674f436a6e6a33693057694a2b4548764d7678383861312b616d34376936764834657839596e5a72567451587761475a51466e5a7a716c537148502b7254375665376c4e4b52676a2b464938434d2f77436c627a4f6139424350422f53447848787a77727a7659774d7a486d69314a7068796d70776e6d554f586a73305061687678655038415068685752537439364f6f424434502b4a703071374d314e706d61784931673957767841394466794e6a7a7448314e384f49644779653745544449327a4b2b58782b7250595a6c5a34726b564f737a716848516870414f30674a676c4b667352424d54714e4b366c71646d63434c2b6a6e39744c30783948634b665978636d2f4a71384b6e46367a4c63386a2b437a782b697659646d6144703574496b66562b624c755939784c6d6f35505348506864424d557a7074723274624569552f6c426a5365482b6e766b666a2b5a446c6147722f4365515359446b31397a622f476e31355447594f4e46432f79426454476379733268374a6c4a595461556d314269317a7636696c73327250556170666a4c2b4e6d48365265694f62367266624c7850303938617a39337a767a357879486957306c38506b6d6e724a504b4b654a65626a792f6130507549656b7a516550486d7062544d35546a30314c377262653359654d4c3176384150673955665633314f382b737073726c386c383331616f533469594e5257536d2b70556648544d462f47664a4f3475434b36575253682f317566484d436c63394f6b5457744b7833696e624a714d73382b704b564678694d335470736d5178483643706e376f6b6b34784969366732554a3537773666432f774550694c37414461764e6e6478774d536f5749744c7167446a6d4755724c66743959316e37614a67696b4a2f647967485a3768456748326465412b366450364543304872572f73792f325a2f4a2f457448775838775079754733786f78444a387039456653567735746d6a5937576d324f59336d6e71516f646a6e3844556a6a6379765068702b4d66674e337a4148764d533876326e326d4a3361656e2f33572f735056783442555870727676302f4a53386531437930474f763554545a4c5463454e4c2f3841795164574c4c7563746f2b3334386e76477a544133374a704a344f6c45666677547a5634446d682b66483976372b30782b614872666436752b712b6c353568657132726d3573486d4f783654614959586a2f6c6d6669536a6d344e6d7a3237786c3867367a595955396c6633674d664a48317265684d704c663632306462326a5370747232664d614a632f74392f324a2f544e725865632b506e334a525a496b396e79763132314b504955746562766a38683073724664444e6d78383176706978383431634436314a4b537942772f4c7237373275335a6e50304774336c6e6f622f38414a752f4e42706778764a2f4b76414c616d614f6172517966576666306b7031624a746779306978523856636a5245616f3838657a4b36446b6a784b765a4d6652502b727871653278306e6450384938706e7172443462347a36692b595a587078764f386f385079764a764973667848796c6d647a4c307649764845616f6e6b366d6a6d6e6f4f2f6a745a6b3566352f746e654b624d61694b67665a375051724d7a5764346862314a2f6346514b61526d3732527271703655746275304e55317166644f34536a61777053454f4751642f3749384d68574a70303464415a644e6f6a506f5442456c616e58484b3666324e4436624655797773634d44566b716365576372416a59346a636c332b666565786644702b66376659493244513558414c357265716d344b6951424b57576232686344436239345353584f6c507a6e5038464c59754e5a395954512b51564f386661797236716d734c6c495862794d2f5974744d706e3975653553705a556a514b6d4c354f755634756141444d354946775435386a5356322f554e314d4e31484f6b56504c4f7a4b343551766a4c70752f51317848396876656464554e4470582b3558506277615439702b3441577a514e456436596a32626c6135506b4c397a7838454b47416d6651706e534c667363534c35576649786165675032533935384a72665952675466563750736e6b6f35336a7970636d7a544662686e564c6f61696c366b3576572f3569425074596251615a43644a2f4558532f7744666e2f48395055444f61616b474f624f78307a53596146533068794a305a446e756a52577a6b68476f4b67594e5146313943514e674a367766616e342f363043543732435655736b43343430736466654a38616f6c5556634c354b30713638534a61564a516678395544523644435438497459586334702b49456f755a2b6854525042564e3935334246656a56576346446f68635659557a43535162796a36644443367a6944427042303270456b38393963327231452f685477314f38685a3154725652562f75486968556c4645532f5953424361626e4a334b72594c2b743530442b4a3376624f43683935564656446e31367075355053314e4c4458523743705076616145396f7071664d7855667869314b526d45754a5a3156484843776567594574576d376269765841752f77425076517679377a5476383076506246347a34394b327258336c2f536e6a796c7855615462644239466338796d53724c464c6f72574a4d367743664f6d73514d6636706138526e77734a6268656e6670643439354555586c6e6d6c6d33504f6873684e73696e4450355857573479526e3070745161507079564e2b7a5852376e4764482b716557705075393054613078777277676461505172482f484c596b5078396e706a366461766a2b565456467062506b6b314b6350433938566d6b654a4f4e6931736c386d2b6e5a724c545172326f72742b67794777436d594b2b652b2f7275743639654941666b442b44506f6258756b7a777a51797646664a573976666e35324e355453326137744b714c6d31305a353573396a50343969352b7346623143453862685345626b495336616174386551355665724834352b582b6d4f377965666b336c3053797a394b316e6a374f61457a456243593762697a75394664597343564e314247626c476863426d6c784c6e764e58545738576a38496f61364f79446d766d625539694c7556792f665653696d4f374f73564c51356550544c56643179532b4e4c75635552635772365a385a38484f4f61715a6962546d49784162665a614b49356a6e566264425541745478366564397568434e3265544776576c704f456946665738597779434e2f794c39702f35542b3839654137592f32732f7741632f505048665848306c396564467a50462b61623673587836476c677736666b6562702b4f626e6a476b6934477a712f69636b763930667a75584e384c676b396a506b555938343965385457314948766439436a4a575336627370555a6d4d49795761666b4d6c4335724c3672716b472b4f4769474c75666c2f77436d47666e4f6e305639644d53424d714353486c366e634e6b395765504274303771355a46494b32483664436d543631522f784c7147485341563354715a624935337455526c374344356e4f487254477338784353387278305a336c486b654c4d68694d76785879537a33576b6c6d6e6453724d6862786e446254795a4263726f4655704b697055492b7766304b71512b334f4a7a6a484561775a507037344636772b49736a76324e625277624e6d7a574173532b6d475461685454544f39576c7051456733436b667074344b4f4a6b6d65615a446237307a4254724d337250434d6a6d2f752f7742765031563949764850496337306d2f496e313230374e447976782f644c58395166504338326c3861526e644b332b49783065565367564f4c79556e4d5279706165392f6a534a6c48507175736b316a577261633230346a41344e2f3373504d302b6e2f707a36552b6c6357746e796553626d6835523546352f75354155396f74664e5a7962396a4165584e5234325364597639632f4f6a50787957393939434679734472396c6a6461317635447a6163643168635a554b416f396b7265722b5370667930766c6f36327153366f69466566794a46786c7a6f4f344876396b3675724a50523776345072366b59725949586e787a5879414e69554d35624e4a64422f334b652f64534b4f67613166495074345a415846664b6c637a692f3446685033667278434b6f2b635a3267363339344d697161676f355a50516735303047303364347742596c6337796d575847695a41482f7752392f372f414b30483058755a643263754e4952634c4f64305247525468717059366464614a52346179415a79397073455245356748362f76364376367a2f642b7645454f61745334772b42444c6d554f75306c64352f7743654e5251693767305a7466464a73653735514177534166596a4151416a574a67393335676c7939677272485a706459323250384130304e7643754f6f7a614e74426f68577a374b32636f726338457247632b6b42794e36532b47722b71642f4c6b65706a2b326a36753548715a364535586a376c38526434487656354b39416d556f677178377262744e70494b785a734c4e34566d7849756b446e435a75627749365a4263732f363474614972665034783363395076552f5730496a38643874697a6d374e4c4d386a5538344965655238646b4c6c485675504e6a4b7a72466247625744694e61695a717a664375626e66744c35795445645936534e765045505544724a38636136637a545a716b42464c6e513469376356565235615a50337959652f4d4a615339494353755a665830514e64514370752f434e5a694a6a45697676574830317966562f306c3954764276554c4f54566765582b4d5734514b4d3032763074467179484d337165364446337231717a6a326a345536425033786e326e7165714255364c5457314a67667a385055763077332f4145683954764c7642646647656e52384a3870386c784d7a694a4a696b653350386973526c2b53514232646e5a595448516c4b644d33796837774231444547306e2f313631627861746266694530394b736364474652504a326532534b636c766970305a37746e507a365a526f6d6c546e6638414c6e4b5375694c326e795a7958582b38663035314843586e4559385231794c384d346d35506f74762b6a50724c36622b643766714c516a76664766477459737750464e42576576666b79504b6c456e333153746f7a536f4132436633465441794267673757352f58504772326f7457306252584f5733755a354e52347a70593949497a4b475a7a464c7246654a44665058374e4749475a717a51374c466b4f5775626e44466674537054615649595857576d63524d69394d507a6251794d44796e78544238637a66342f7a477650375a746552596637327648716f506b716b6d7a4c6c61444478592b36776939694b6c434a6e4839592f73652b74515a7a457a4f6263496b4479794e585031783146366174726d2f77414c354b49706d34756a4377746557795a6b33464c393948314c4670366f75645730457a476f314f4d6c4a2f71326132355946774834564a66426e4f6a316c5930727075694c74485030454d6e6a764c5158507a4f3158396c47506a5264596265394e54666d2b4f502f41415237564a794651614869326243694b537a58705a705336503234394e417a647061714e6f3658446e57327a6a46754e6d656b466148472f443374682b306d754d7a445374725477384153773870366e7a5a4f727a5975676645356a335072736f6243452b656d594c574e6e6f63372b57647355542f4935414161676366733458316e65786275322f622f4149483133686d677533757a3439716e704a31744f50536f6439394a2f774155374d6c5470486d7a787844474e315333616c67756533394370554c6a4355476830787275355a7249754c423852444f6130644a7368533050526d5a692b6a7238504872354e507752756c676c643966344b57537a6a4d4c7547716a34763337584b5959314133796e75644543464478676142386b5776364e4c474d6a534e646b514e687a496b547346717949545170536572424a67627a4e6a564c47597a334256766e4e6c4f4d742b6e3761566143585466525964434744314576777a327a51736a594c3838334a6f46704a517050736e4c342b2f774478576e414762562f6a766c4b4965616c34342b692b576c777a554b7a337a794e667061443631324e48533973395958304f354d54762f6630772b7743754e373961596d59364377716647455a2b65494a7a636d725053776458586f7a704a56416e5167696e6e6371657364496c2f476c613878687257444755484d6c5175427a694a6343414e796b7a393059475472796a6d5479575248477a566373444e6c5864514b517a6441676f5839574e7a576f424142336a6852315666772f462f55356e4f633852397a70374d317445624a4e43764e2b43646e4e51574d325979732b31484f68697a664b4254705448376e44785345734d7761616249656659372f5564664d4c4834644263475a7242315a793362442b742b672f564644356566484f66617553452f6d65315877735a4f695978412f6d39674561696a4655356e474d384249382f7776492b7154736478357a667033765968396d5a59696c6467725a777954707a6642636e377a646a394e37374b625068396b6e566355785530544d7a316e4932457774373033683861313561386f4e2f7a4b47574c6166636e57567746524f635058466d6d796b435a456554525a2b6843515066372b4b4b6a72752f614f764e752f4b4e59572f4470617237416e64494f6357717a48666b79527863794b73397349516f54506555624b737334523148462b75416f4a68647730755367686d7343657035433364396d6557747462794955713445556553304f63306d307a7a516c5578365a2f344f766a4a324f5a535249414b775032652f683054674546303847657033456f7872697a75574d434632695235364d764f334b4b4f56424c504e4b365734456b744a6d58525a38556d7738484b506a654b55454866646f344c4b6d4737516562317836506b724a75383570794b4f32715053794137563766755439714c6363624a2f6368717069366673476c667374797a2b576673507666474c475a76386d686453344a38696656366e54524c6445756d3966387478555358416b493643712b5a42434c347a64396d68696a6d4f72722f3674752b48486b49754e6274624d30584c77702b7a36776878556e48394d63314e756a6879766f486b636f756f6a3472506e477546786536683846437070672b6f5a756a6853336c496b754834586d712f59356e4556737a714f4a686c356c7663797154355a792b62666d726f6b3930342f594c6a55736970465038414a63426d6b414737395461316f6e774466457a6b637a737650574e42795a314b6443444e306a79305577517645724a36717175536f5a4b4f6a4c6877687a346a2b6f4236524f4d45307a7462324c39592b516d476434743557726e50494e767553657a43696541634d6e42644734633761584e65375675437037437a787a3166416c3747632b4e30774a615342556f394b4c544853736341776234544268733859724b684e71497a6e68302b574f304e374a7366426655503876636d66515574644231436b6f31684f524772327a4b525a775679574a746d4d543146622b51353871723538374966395074654867746f485570314b586143315a546d5274302f31635358354c73327a3469466a4a31764b7744424c4a754e6b3770584f4f627142485a424b4b71725271317331734579644c4e6e546c4e727a4c626e44577553546e546c4f526c58334a3647727352396b706a76364562612b54564a4f776a6c466c6a423674575a6b754a4c546379494d716a514737664c6c337a446e626a52635468736e6e732b4d4c47676d5937436c6e644c4b30786f416c4c364f4d30386865376f55636e2b303258504f65727956655a4e54696175794f6e386a427179715575476d576558715235325a7631394a4b67456c756a372f5664334e46635a4565703859717a4c554c586e5a2f65417a4e7a732f5a686a366a2b5872796337556a6934656f762f41495a724d7a3037412f48497433324f6e4e314a6657754e4b374470742b47394f6a6f2b713370466875626e6765557570712b39584462634677526247734a576174726b4b6e63444a58506b53364959667366556564424f61445a4f585669647435377549394476676d6c596e35376f6d616e5636334f395461486665386c762b78715835387630344456525979706a6a6d2f2b6c314b4f4e556c43552f74764663642b31496e5473346c6462354939374c62707a3539686b36507368564e77385774475370625068354f78512b33337357316e2b37794c726a4d785961706f7a4f4d5a34435a5a696a386252565079536c534b37577076426f2f4c665477516e37525777534a37382b6a74432f6a53395239613737494e4d523936394a3064524b4f4f386437506e6975625074386953724e69374358324668557867585139532f724a5442697730423147665a574a636437323836414f644a7a2b67626475364765686d5a42525a544a2b6b7a63577164554b364b4b6332587233645443726e372b7557673133797a63366b6b67594166514279772f662b505737644b544f785371443434394842544970646f314f75686f466e55794a4c6f324e4a506178665453596b5a2f4b553373632b67517a63474434744e6d467042333745622f496e4e5936647355724e52517a6b6f7148556158534671317a75597a2f41445a37715439784f4433645751454d7a794b6a544f7831434e544e6f5241305571485547794274664770477056726f654b43576a6a6b5844396e706f63367577574361715a51354542666c504535345a363762346a563961456c6c4c493876354473307170567349365061775158384c47796f5956586635687641536c6a667345415372797164557877793646576d6f56337a3136364b386f5776705261536e4362327a6b6d68665a79575378357750326679434a70524f443577626c533035494c5a32353734446e6170534235525257583851787a654a673455724f7a724968534e522b78715065596c33333852396b41592f77413345705048354a73747348576c76743258357173327164576c6f706c3055392f394c50737678444444787965716343585466396d6b4746376a443850582f4f676b73436d374f71364d414f7a62733576557636796d4b326d5a7275456c4b38306e384b736b41594f77442b464876456a6d41394a6d6f74347476776e4f4f6e446c4d50516765634953436c455978543379524f554e47684c465936672b4e6254476b63315a6a7a324237424253584b62646b3636707634364f774f70515661473335616535315768302b316d4c794469616b66596c5076786645716b3478596b7a455a6e67447274615251454b61633955793773732b496f59585139676e387a4d375143356942645179715737394e596f6743697a68432f725353784959374732684e484f565767444a49626876695446536c4435304439574d516c374d53324c4176652b67314c6f464b73314d397038616d5a333942584b363944534e504c78724b5734657950354d366f7369514c704c7550655349474c624f775a3462444d544e6e552b3872754b6f6f2b73706f537278735853636f76304a61784979616f7332584a586f4a2b322b756e7446445a4d713475637143534c4e48706d417155756c6159784266792f494435456b2f53306b494d6277582f41444e6144652b53734534362f616a355953736848763369397677385837514d2f77434857444f414878302f30446279416672717052313169564c666c385459656f6e746e5a6e77304a326572416330522b354a6a2f496f564c554a7a667a6a426e39777a682b7748584f6371596e7a484330383538756c4e7838375861464e53706f652f4f6968433166636f614c6d472f51365841446b7930384d306d3572416253576d755a77487a536f6734544b61716f5371744d5636444e52333863684c3578527768467965734a67652f352f637163546438725443574143772b6e313457534d736546736261533669685954464852564250586e3149526e4d437762486642784a4f41776d3431447a6432442b67486f5a43776f4f5a72556e79627436736d6e685741796676384146734674736442614165317a477339767a7363737a35375145695a7a6e7767536b63796934304b4a39775771726d4836546e4c6a6646326c4e62356c3366633930726a456143467674567a6a59466370503544614267536b44714546414569507332742f6b48706b7379724755484747665032787170375a754f4558615353392f526d39675455307a634e50316d43417a3778575030487136424b307a3436794230725032437663515454707271574244523164576278596f4533492f6b69656b752f736736444c61646e31794433536f7a4d36672f7472577a34753272666346795a4f724472475643736864525038594e5837675a4b436574364141332b676a756b694c744e4a33317a7a4b73307248464b35763372666c6a57736b354d4b48357337426f64517449664d596e63353379712b5a4662686e4d4974544a503439312b68384d2b7a394b71797562724b39444d4a6b6c543436566f6a574c6754516c4d69382f6f444b7350596556785952674e42736e6e6a6166475154667a537430484f6e656956495554324b44594a3264664f77536347546f4d6c6539465334657247704d774e50336839772b43487964344a51444f3242466c574e7461577948375870636e784a7a374c316c6b384f5a5872495578686471754365796676416d622f414e5a7a674d7a724d6c477743482b747353566e437466574d4c5464424c57486159327755732b66506f6779714f6e68797247636e6e4b6b54354f4b532b616a746252705744685961546c796d6b31303077505139483864776c55547235574b2b446d6e79667339432b5763756f4178614e4c6d7868302f327a6a4455454b39523765466d4a764f32454b354e46544d75786e4f4d624479776273702b756d735773372f414344685a5078527a38483370672b743855626734332b6734426633647562495039496c46514d5066733657745062514f5975622f54542f414272563433767a326f6f594d4566323266487052336f46487a3070636f2f686d37665a735a746a6f4f4e47667061562b554d384f61493275524e71575a3855797779365168335a34475a367078304842635137476c56524e4b414a6e464b457a636359437059644d7857656f7a56354471476d3158633676717461692f6c525462464e33624e6d6d62444747325a517773674a7961443167705538654739523038636f484c6a524e4f49384945706e445132625542334c305a50732f77415a727247704c2b346d524b6c517070337575756841734d617173305746326565737a2f7752443855547631794f46593868744a2b502f696e705856354a426d2b726d32337754787574756a4c71304c386674322f7055614c6d536f6d766a6a7535424d345a59316d304843796f42644a576f4571622f575635746a4d6334324666364565676e692f6c766d4d66695071723548543445764c6c305a665565767737756259462f774442746957362f456f572b6a557a53585168525864676e4546664654774b6a55706830393565597275727a6668476d5553376c4c58326d655a6c355575645855696e4a5a39327333574d66565030724b786c576d69466e36644f6d59544767446e59564e72763359585667654a61314d2f4850795a367a704b5a5939304254494f754e6353792f69626b4f7a554e7349696c482f71314654316277414842376c302f5741354b71303674484e6f7a756d312b6e46306850506248704c724654725652497a715032654f5061463744444957644a51776472706d4a74677554484471434869574646683666657950627871382f482b2b35756343382f7741624e5571565367774f75426b56524f6e575875746534476a556b694e7773452b5431466e65566553567464526e33475361477a75626678326976536b6a464f65584a47516b744c75357637716e5134757258397046426831773174616631713172742b6367444c765871615046574d6a4450634f7466734959616c36443568647a6d5a4471722f5236307a5375716c6e704244584252704756427236457967734c634f322b474f474d563530727461416977732b6a6d4f31395344782f767235544d4d764373595652655156646133767a702b4a502b356e4770346550782f583952304838433948504164587866783258596e2b7534556156556a633358623436796279633035346338627a746251642b6871357066504d32672b4e705369723642306732397367355774746d4f4149657148704a347234666b38387975387573774a4d65485a312b654b36346a5665567175615461484a302b45624c492f6156426f656f53644a566f4a43626f4b7037496378624d7a474d594776325871376371365a48706b6c692f77436763644a51422f315a4a63373970696336736a477a4f473536566d6c2f48306d4e4c72436a2b3350522f5668414e32792b445173453869542b50546271577075546f6159356832356d4e52714b7257315352624f5443307243564949475365664e463745314e6458504d524d7a69426a36582f6a6c366f2f6b574f6e68656d4f47576957617771724e4c56314d2b584f5257494336665056565063376c6b71695a37614b70693765394d774c4471526164427a6139615a6d306333726f4b77386838454c303331764a665433656e6b772f4a4d462b62343535466e5938374c4a4b7578534e7a614a573055734b793562426f4e435749702f337569435153446a32706d744673784e384375393752356a78506d686272794e645a51335150566b4f4833517152555a7a7a706757544745396b74774342744a6e7867665779433573342f314d52466f695a6a4d794e7166547a3842504f504e5078396f2f496137314e38627752774d6e53735634482f4237577369616278364678556c646447377642316b3044504b706674644e5166797244696d30312b7a4f327445616d7a614e49517a3647594b5763364534467858494f3979594b4e6377306931754f5a6652316e41484e374c5934703364714d2b73577a7257676b54493978625070784434686e4b50527236476433475a396d6d39714c5a73334d30483547666e63726c624e515579312b35496d706450444e585462477a76786534485a3274614a3842662f6a586b6545395464714450356f3638324478392f4a7373383937547a69754d35786a52386b307244304a4e4237662f41496f4d644d4e58662f6a636c70704d5445344137565434374f51457a785a3069453231637a374835614f51736254516e487a3455304c7a2b54326a3279576f6b417866577a42596d50356c41426b6d424e4d4877624b6b7970396a645764656b6c664a4b4a753663647a4f61544f376d7a4f2b4e5161446e66596670667838354c4e7237432b2f516d6472524d797043566276707835726a364b597376303038716970316e7a466a78334c507837533072317936472f6f596d664841496475583968676b504e41776942557869515630746452794e305230746a366a624b7238444b712f7741655a664e796c386c7139647559666a2f6b512b49373279796a4568386c7057774a38433172695959706a6c33714f4363792f5a374a6759357a7a4d572f31543376506a344f6f314b796678642f49652f553076547247394e736e4b382b4878444f33742f7572724f71676e7954485235486f2b4a46585178566d6b7578333145724b55415a524730474b6c5172674266336c4f73327a554d66476637645835642b62794658446e6550656d6f774c32737171377937576b41332f53315636366670356d545a51746b507649597a363167664d704a3265796f306f2b575a31394b496a3473445548386966783039592f782f38746b792f586278634d724832506c6f3858387138505862746541367659745448743079307147667037397a75474f776f6c324c457a413079794258387041656c4c307645374f502f6b4e6a5053333867664866525077447944785a2f686d4a326d6a36464750764454335165353961346d356564712b78625661564359662b6d4d726c676636446c4c5a3068616450395574707a6163786361652b542b502f41506d3164766b3771394d4a32377331536f4a6145712f6b626d3674426d4e5266656e47657a6d56506f53772f586e6d4a4e7073613161513752374e6f6a4552414f5a6e686f654f30343352306135596e63386a625369513176745a313443616f6d6156655631734e56634e6d4832674f4b392f5068533549784f45666445576965676e317131344673384f6c5a484446544e48784e5575624d4e6f34686164744d39714d337372655a756f6e52624f71723470682f326839705347333179334e722b373965496a75686979346e4e6d2b754e467151486c48386e49336635506171636f4758666434706334356f387a644a6270503046564a3077582f44374f2b37337432376c786a494c5735576f6c2b46626a387057325a436d586155624b6442764e4a4e556f424465527a714878386d62465175633467556374506c58756f6a51317a367039413430746648516d5079473034504d4e5a4e61594d7a72664671634645365678366965744e486a39672b356a7867476a3274367859636d416673304e4873685a593434374936652f6752354e672b5265442b70326e697057555665746b30504e714a2b49794f73704a4c70424369556250384b2f73664332783449615357492f51643752374d6457754a724538527644717168666a566b3179365a3866736b62613631686b4c73706c35564d796d526c564650556e525a3833524b6a6b3630752b567151643771535049512f314b304f52656d766e6147516957776a776279644c4d624e31455a73724a5778616b675a38746d504f6b5a597a497065722b527179682f6a66665735446a502b7072316a356a2b525235747354306147375433356577316563366d76777a616b457a6b4f722b3171455445572b3169366a6144524b59322f5149474b502f562f5830662f414f52376b4d66573959764d7076783338572f4758386c2f4b504276586e782f304f39503365552b6c61632f563066524c516d78343833526c7a5055444c43354c5048303354724563396e47745379483366374979544a6d70386e6c6a336b366d6e757275747a6434693335482b722f414a6a36692b6d766e5070562b61766f58344236642b72554548655932396a466e5765472b724e522f486d72332f44392b6e506c715248526f4c452b77653976734c4b6277766b4254666e5572577474326c6264582f78476b76694839736e38586c2b465a2b6e2b52766d7570364c42446d4b6f32645878776a75646f70764c51305a715337656443374b754f5452786b3443376e313833356e556d786a6f30375472336d65534e773147394d76776f394a76566e386c736a306838443963646a6e6a6d7035337179446e504b6a4638777976455956574d377470717a62416d795930366e746c575a3064374d42704e39516d48525053327261756e766d6f7637317a39442f446644767974384f2f46627762316358356c36507770384973512f77416f4c47305372386a2b51667270327448483076337042335948634f4d7265716154744b655367774a314c537053307a702b386d764e4742757a367633366e342b2b6c6d6a347a36504a547a3139383932655a654862616d6d4c523855784b484f747339515a357075547264444f73746f70424f5271554d31652f624e78552b79664b754c327a627331486b6c39555a4d507850792f5479734c537038723746647075312f4c74504f34704f6e754e6b716830396350704f724457576f535a2b326e537a73784a6f416a2f77412f6b4476695a6d496d5242436c695a452b315a4d343565705970594d4b745879356b2b6e585579506e57752b4f644b6b6c396c76666437564270754f307a4433496449735030573945764f66794239522f4576537a3069384b73382b382f774267692b6e454d585a7a79704f7951747232716e6d763251357379667456385a535332794f2b48684f4c3546653961396156746131747459483943542b31372f6177394b7637655070356d655354476e792f3867664d3875512f5562315030345579775a38555a6c7433654e594e4632632f6d526b2b3732792b387662395973636d55306e3778587a783966587472577832613136564852507a625668537255444b3264566c696539667850523462766451656c7477386d7030484c4e3179786e714e6258642b66324a2b4872784a3358543556726e72484155477a314e786b616e436f307335624b622f7743556647756c70375670345059397370624a726178564f755837546d753936454d596b335565784a7a4f6e4b2b324d59464a2b7258355265505966696576643535722b4e654b6547526c6f565436537471624559324c4c566e31746b34366a5358332f72584a715758526d7037624934484f5a494c50734d74576b7a4f493755696b362f586e307538344871734e75316735586c6d615334504c7577317766632f6b465a385a30547431492b6a485a496d576a725a75312f5a4c6c34486b737a6c4f707358625a617366776a55587a58776942586c31487166364f65533666725070346d5a526c656f7670316f363230337a44594852434843477a4d3864663833563757556b71474d6f2b634e45706742632f774278453836614e496e6874744f33384e6852397669336a7259756545346d4b3933674c7641664a756e4e3575542f4143444338755a3230616458303861477647336b4f34723744714a62427048324f4e4b356f516439697372356e723855654839527750384179572f74782b5a5a756c6b62483431593276356e366638416b5742337a6d6a772b5164746d35365935314e743073656274322b5845584e442f735231524a6f51382b465447726e79334331702f774264644e6149345837582f6b4e515a76546231512f4872523855332f566677767a50777a772f7a6d6d7a526e586f424a38486b4c50454f2f48717851686e36427a495448376a55436250634c50667866564a577a70687075693858697474327762482b572b622b73503541315a666748343535757a354a634f5a6b72626c2b4d6947666f446849696c463537624431467953776f754b67455672446e777276425037366c7361364b5669744f4e354650654566677436392b5465585a7552354e34745a3656594f7a5873396739512f4c4d75756e78354f766a4b6f4637716f703247576e3737686e41324b35536e4e4c56363533456b466e73744f725349346333355275583657666a7636592f6a354e345236694f386730664e504c39455055504b386e6f776234456379552b4f706f4c4f383338547a4c714a3657516b6d4f5546746230706d336f735337322b7730446e6139723771646d6f354b656136394f31355870374b3533484533543139586c4e65716c544c614f374a636a304c5976645167616e314d6c4a6e562b2f72445035566d4366615a6446597a5759365441593439435a4e2b65783870716f5657687a696e53416c2b76327461715749685a313154446376505944554d507075426e5244696d4748394a3746666e2f414848395233303268386d386839475053334e75336b4f635068506861746572574758566e66664e6778336d74627a797865555a464f504b79714b697a36376e3870616c5275452f436e68612f68415036724e6d7152756e5a7077613449314b70526a6652645a306f5a34313537716d584b5954636d3736726c54395932726f6d357a66726d487a4b696335504c374350362b767134304d4f5251546266495733536b454b554264784d49303935384f70506e554648434e6574626d7763746e2b58374c66654b5a6c4e6d494732466565547a626e716a345235646d362f6c4e5869426a6761475a3476724f374d633258304d436a516d3147347164685339356e7a3745596532336a55755534474230772b5361714b78465a7a4563522f4e6239574a504a7366315039536f64625a35354e725a58714e72356d6c736e63686b486b527961533057395174516b7563546f59736b6c30484e2f7741442f524c61732f6637646362612f4479674a72305a5675656c306332357831627635466372744d2f6936374f6e677a4575543070434a4d70444b35584f4f39797661424c4e73357a74425563617a34544176503841473338654e50313138765a6d61506c4f52346c346a675841757252765349316531597a32525234383963714149716c72494a6c6b587966394e6f44372f774450345976654b527735724334507a412f44507634355634336b4867656a62354636576555634f784c7458576d764c7865384e4765784f583548705335383635324650566c2f447872544437447547745469636f7535366572766e45387468704c4458524b4166473276514b6f4b6d30773644454e665850324d654d6d6b4e3062432b5a487548726746414341355650744e77716239725164452f774155667744387739646641664b505548314931742f302f77444433507a6f50453944786a78762f774167314c664b6c6173745352726c35704c6f77634e7338395434644a36546c6459762f4f6a343561522f72505531597061757a6d794e745055762b32702b4f66706b7a7976645676656f662f693369483844424a73656f586c336a5868792f4c7162656a54712b543449356137475865446338584767324c62396472755454314d726e567735475a3131373234593572666848495431303266783966352f35446d65682f6a75342f302f6c334b632f4f33664b764c48374778717849687a5930615757326a4654396458614673636f616b566b4b7a396a763841366c71756d6c6453596d623971425276552b45314d374e46736563616c6a314e36326158784447346b62573863536f2f334e3570373659655546374f5059436942546a494a312f2f4141325469333566583044696b4f344e73766a704478326e574f6870577a56554d537a4858384d65706d68542f77437a346168585070644b5a6f6837417357545671642b68576d4a6d4a74496c336a6e5873777348724756506d6d36697a32642b716f4f5538314d3155584870716437574e372f414c50594450324a4247422b3770657a32526272507a4874532f732b656b506b48707a36613455506c3369395869586b486b6d5656366d7830616d68586d54612b56704b4a6970314d53354e4366494573716e2b3442413479432b67625a416d57594835767446717a62686273386f37626562515a4776346e4e6e687552502b74354e714e306c61436b64787464466c456446347a567935315647355557626f5a2f565573613046386d634e567766467a3575654a695a6d4f2b4235756637676e345237667273666b324c3433376d55366d7a4c703571744e4a783073376b2b4d33667256706d714a6230356f4c535437763841476858367637534c754679634236744856696b596b655672314a394874723064383432664376494a4a2b2b52654d2f78592b575a5762547a2b526d59355758596972526d304a2f316c51736f5a4b315866614b7572734839385366365337304e3032694a3768486373354b33564c4a695a766772722b3274715a3149544f7233443337457176653335695a59776d38486c4467475a6153535075614a77416a705579736e703578334a7334715663354b63485a7568395763774d546459706931705939627a577867487a3567372b3531683877414748374648416d5a456661476f6b6c6c756b645773426d7251314a303255464b38534d657a2b7765634435523466734e315a722f414d7450326672492b43344a6b6d50455a3856437564346e76487a646a366c487451684633307936553978304a542b716664795763334e4c7251486e4f426f42726e396431316262774e534a31386b587a324d754e684b59716569655372342f71694448456678687746422f7966754575714a6f5a54323959787333566731464b616a4c6e59666b464d694f4a705358415137695a5a535a4f4c657a6a507a76796e77654b4d473849713272752b634165415555576c785154763561417435375a317345754c4c3338447366786762693977735739536c69412f4d304139674a2b49485a723434432f77426c527a387a426f366d626f494f35534641796862754b2f54366d50345264537a33763467795a2f376d3246337666636b4142746a4f3776446c594b495776347167766c66796c76666a447256636233333850523449695445726f4b69674f385950434a4a482b784e50436259643676374f586c42572b4a2b712f70652f554f435750567a664a4130522b39444e4d635764632f5a7330664b4573576e784869387636362b396638765768463336786949736b5a772b30787872627848542f61385a3851673374415576667032374e38654a466661696d7373694f7667315a477839383943676b304a38676c713454356d45372b53537762586653556742356f744d52694a344361766e3851314d7679723036383779504750492f4476492f472f4a46622b61773438456471444e7a2b525430652b504457456638645a64554534386e2b33784e387a6b677274507a4a6a3830646f632b507a632f74472b68666a507054712b7376347065572b5759694d58453064626177504a744c45386b787446735673646d6c42347a354a68517461786779726f6178625344356c2f43366d63464e4e302b326c375465626264576f3830546c76576175714e367247552b3572533061517167656c7a6c76506c682b33363747495a4d74582f4a4833336d52675375712f5870424a6e773145336a654e617a692f625056525552682b6d396e4946496477685850527863747a466b346848704a642f6e7a345149677a4c35564f6d4a6a6f7151363939414362333963376c644172342b62733750646f4c45526f5974686462372f32594f5358742f663941536c6d62304f76397a3750764e4b63667673544b547859633961786d715a6368696530574a5958435a7a6e78474843396875372f7741553378344353654c4e726a70793256352b585731433662476f717a59585230356c626d643976614271576441385a5958476b58552f494e6e503131712b6b39644c62654742644f6c5074717972303052366b645a724c4e757a6f616c527a41545264586d455475664b444e54732b654c4f4c354768384d5941426b3456436c3952443841645264475a35437169655542356a3839744d387a4c7554756378545a74734846336948646f4b646f384969452b4a442f36584976613530454d61306e503064616433425433587079632f764272646f3646617a72366355714f527064476e7062464854496d71702b616e6a574454314a744365505a417a367233714370526f644975614256632b6330756a64504a5430796865795772343647485a4f6e697638416d696b2b663443344563535039514661426d6f636773714f6c546a3550493031396448562f7744546b727835706f2b30336932645735335667412f5a4361594a79455074546769652f6d4239304f543857644d7836386f37566f566d47324b6c66372b657432536e743268316e4f5275644f75646c484141544c73412f7459657776365a6e786b6567722b78642b5831507064366e31666a2f77435361354a38593951714e43767735316a7449594c2f4144655047756a4c35546f324f537254555331776f595966622b345a314e6431745263446c397030393164386643505934656b6542484a6f52387a3831472b3648556163316831623555306f2b772b796e4e6738663652424c48504c535a495076444478696953705032544c392b64737234445776383276776d39492f774334582b502f414a483448766676785431477941733350544c314b583439796266385732734c7678354850494d2f3658474f3858746b755956556e5a2f39695568636b66654a4f2f71326c713230627850772f46412f6e79666b442b505871763841693136316556656a58724634394c6a2b7076686c6a704e42746169756733384e38647a636e796278646935535a6f654d3052736e714569575a4c53376f42536b6d4b55667230314b33726d765a734e663947664e524773394274556d7531767a774b6b585658542f414c56324c55484f395a46784d3941536a62512f70747039706766783961333342614d3977707a79497053307a374d35726c49593959646430553941565036532b644262694666755758763738587334524d365167426534423170325947777670586e5434336a756c3546727975425879397a5a62322f4f6a756161307a3271563373395346695a304d68482f63592b7748435a4f53484647796c357a4f5041436f50492f4a74667a487876597846573337584e33435869352b615074725876336130382b576d6457625134382f5359533465384947664b6645384a516738794e4e635245593654413969483977487a767a72662f747465632b4a6558354554664d64663033384d386939522f48632b2f77434d5a764a4f513471314e34306e657970797947485a536a37687662584166534d2f70726e37352b6a455272316d4f7a7534447858523656384a444a7a706d675739637461682b754c324b375639592f3541324959755671567237372b6d42754433754a70505541633954625733487842364f315a6d356a3432667831316a316a4858454f684878336551317a64486834356c2f4966594555463779595a716d4e4376387748325a416a784f516e7156577a72357838453450557a554c6b777871534e656e5a547064304361784936476b5865676b774e76302f59672f5950375a626d37516153394a4c612f384176527975374d6e725a57552b39514738786d6c6d7a314a43564c5030797946776a5230754571412f616676552f675643326470704975676f2f72706f4c35782b6a794e4c4a357031433956636d745735774a30517347586946705534424d3644516f4c4764582f51575a3662656a336e507258355a6a2b432b6d50692b6a354e62386337623449383257374d7a7339595a35366c333262486347544658514b54416c5676363044412f77424e426958684e725672586661776c5072662b4f5071682b4e336c4f4a34503578697739746647326a787a6338636e6d3038486271656d694d7559657258484d573773534c5a4f62564c5a376b2f666d4c394749783046574c317645545742517852736278536a536b3549456f6d52704a474e6b535a39414a61324e513261465a5369535a324f48724a7a393762334338556e3367663166666278426b72334e346a4b3653695a6e7954333973542f6b304b74504d6e44504a4b6d6658362b6c4f6b37515638514e54336f4f2f39376d422f6a554a74364578696946466678586e5252384c4f424c525032323663495a786c556175556a39375046624f6646537a70786d4847742b51307a41535a5257382f6a6e4748697a464f676e5068735968303778554c4d646437364349387535695a36496934716a356862487744634875375253414a73536c4c514e6e46784439545057517978353564686f6e5051714e51556a63746557766a4d326a6c41392b5074424131494f6173483138415949577a587242746261613643636d586a76627833474a536b3170742f564455324535694931395762666c562f77445143763841514a3732334c742f4d4f356e39685430732f38414c767957387939567a4859586a2b6b50673267714869324c676e30504a504a594a63544b6b5a59394c776a3176703369426342733036426d39373379632f5659633374647072536c6678443230654e533657564a525137522b4f646c4f6378614f5a396b6e3139614661646b666d656d363532307634563656417651386b6d45636a6c752b717841463577344466337a644f6a482f474b4c4b6a52334e6832764e63444c522b3963645369372b4d355a3547796533376469716b77712b48505067464576674f2b743973774e7557727652374c78766e79486a38776a344b32637252556b5866554d47423047746378733143666b5777666a3530667363497538486e7648332f6f522b636c394c30424c454a37556f576d4c66343261654d724c4b707a346848526f635955696e71324f55376f6e52332f36502b617666302b2f7452462f5152507976487a51586b767a4c6455644b41704b5849716d4f63302f4969585763764e5448523874526f54386e476d58313656664e3743454c4671557745566b6a547a70556964445752746937626d6f7579637334756e4e4c6f794e692b30746c6c53536f3048436f456f6d3977786f4439503658425345536e57764232657571652b432b5a3865743351644c4d46516d316243447243374c7a746d654f68525552487753417a637164774d374d41426672587a722f5162733465336d65702f68474d6d2b366179504f7a4f4a2b707031515530575135435a35387971444936534755554954446f4e62304d73546f4254692b7a396d6b546b7a6d4c52622b734355654e61794b4d6e4a672f687a387869385366654763556b3942632f7744476a78376b754f43614d552f793036766350625778676c632f51373051704976616d733433525058654e6a38727879584c3150487458787a49392b526d62474876592b732f68655430427077397a65374a2b4f30554c53764e334a337a78735968716f4556756d7050374a393747366250644f4e736a746c35502b516d74352f2b50326f7150782b5733314c69385a4c4d6a38736b484a6f6830466c6a5a694861594e50484646326c386372767378413850764b676551584367416d67356f7046623965556550587877494339527163476579416450543876316362756e63784761386d646652474b71494645676f614b457846385052346f707137432b62704e414248307072797850694e67767952394b7337785431537938754a2f53664634723437612b71482b4f3554643566586e3564477a6e585a3377394875357934355675512f726d6e31507856576e53616c397057307a58415a656e2f6c7973694677754577717971364f5a47745742304f6f726730727057542b5253304d4d4371426c487a4a446b77364874706f4b4e77313855384a465365734e54572b56303332756e6f6263533264663173374c68362f6a6e64357041444f65375336524f4979424b67494f4237666366762f55563652386854756a4f623531566f49547154336a42345a72487636373167735678594437693777562f38632f6639534236442b56535341462b3431392f6644365a657a69782f79392f2f414f4c2f4149722f41467a6e2f7743332f58514841436841644c76412f5a4c34416436593946524750365951724c392b376f394976332f782f7744562f774241427055494e4d754630794165653776763777502b522f526673675a336e752f792f77446f632f384178503642497572614947583761663659496c3370644953352b75687a322f3841486638416765662f414b662f414b48394269766e7945342f2b514832675a63486e744c332b37394d34504f6c336f6a3076642b75667638416f4a544530452b503369464430305432413435654763343077763841686e6f41613044387166734a4a676d3372564942635a38502f4d75433748342f722b6f4b70306f484f4b6e6b30692b52566335455759384a315872355a56313742766e6856306631507245646e423644464a6d6e2b553164497a427a2b6633477766347a666a2f712f6b6236706c3662654f65625a33684e4d48692b683561337948522f6c724935594d614a6432704f79504a7951497133736438672b396b48764f623265314b444633395674665a58644e64773651482f4147686d54793368752f6b5a6c32626b4b6646394878624b777654693675587a622b5772646e614d2f4752564e4c4c306f6470632f65423262744a51306e5530457542556432482b492f3841697a395271332b5758345265542f6966755a6d6b6e796a6e6e7670623668367445506a6e6e62637873443850587a59357738673863383578374e416b59616c554d71507252344933796155466e436d57356d657a54543159314b396e62616f3131394a2b2b47622f414a764c7a7a6b70497348764f5661395362316c5070767a737758364c703436506579583739793354304543564f6e467958425334476e53713035784f4f6f36332f6b6c3631656b6e6966343665562b6c6d646b34586850692f6c32564e7a7733503841486b4b6461656c476e557a6330646b3764496c736e71736a566f646f66314a6a396b4765372f64775036777053303333646f634b504650442f4b2f553366447833777a49302f49362b504b395a3561766e4f6341713664756874324a6e6147666c38716f4c356243536854572f4b66506638513950726d59704f365a7a49394a2f7743455834532b6a2f6f4c344235645a2b516670786a65652b64792f5530765579696e794c4b387078746e307959765031734748307a45457a2f4736656873746d7833337046495a532f68726f6d70644d76693174573135354c62612f442f4142666d485462463866384153507733314a7977726d774d672f5571447a507a66777a7a54303038416d7038473834632f774162304b732f4b376c396a6b566d7577736b696569656b53466f41365a6c4d4d3942364633504d7a4e663466784469392f646f7a74627a6230413945665558593866666d72385a39517448453856324c4d7a495256722b446552542f724d3161387a4c465a592b673672443733366b38362f754b736e704c337562533550563750694c3272586a796a673374414956635251716142737269556974663045314855664354566c686131686f59735850542b2f382b4542346a567a724e6f742b586f45614a61543641504766696b4851784e6e482f3841717461785a4f713134753737537559416b4b78415250336e48337154353177474941336a7958724a347765745048794438764b695a2b7772694b636666477756396f587a354863456c6d3467354877444d442f3348763363324231612f74502f414a446545666a662b5374336c586d666b345a55327434705a6b7831576432365a3471717235334d4e39324637524a6b302b664377466c30674c7333374130756e464c2b5058704e365245443162722f414448394e2f5658787a4b786d364d4674394a383231384e314f62713334744c644450456d50316b766b732b73345978647952386632586d686b345444374c44345064327250584577482f672b2f7a375a2b4d3037506b7a65787458614e2b51336a384f537453324c4f5268756c585070464a72625767514f624c507836365654677430796c7170587238513263384539663841775a5963775864786f4e6e734b3961714f64446375757a4e64426f5162334479697537384c3066656e377a6c6c6a67425476656e6f47417074724e625233447a5866336d667a44394f39394f662b4f4e6d6550714d6b4f4d38736c626d626159707641504b4b55717477645a6963787868354c634764713371367169785247565371762b616248566e32657a6163787a78792b76582f49344e2b6c336c586932376650347836792b616559654e2b6e7a4d75796e74766947444435487373327838666357667a5a5662634a2f2b506a37696e662b6e4d345152744d4a7545737848727457596a4e613877327139472f417637663247586e577636682b744772366b4c302f546253623472346d2f774159386e394c3950783731417130585170307730327a554b31732f4f53784c4f6f6333726277676f56385852374576527061646164735672732b2f4b4f79586f7235782b4c63575435446e2b6a6c3370423473302f5476776a78682b6c48702b506175423546363054543575615730785748487a52716f764a4b306a58643155423653615730593753574c58636c6f3166697a504e2f744866483843665548787662394b4e7a774455386d64716555583648386a714a3061372f41435771505a747a646a3779732f51374e4c784b31466c734f6c5763336f716b70584a47377655796661354e574c52614c514e6850565879583033385338476e623578357a69522b552b50335363687750483965494b2f496130594b653541325151565246725544704f5774774f4750726b2f74684630426f615659695a6e68542b673437666b482f6350386578637a647966453851734f5747534464796e364c476654626f563534785a6d6e34346d736b38794c4a74616f7135494665347148485178345568787452644e4e475a366a67702f63692f75622b732f72754f583442487652775135506a6d666d6268347576485473533936797a543042665644386963583330464b4853675935583030394e72486f636e6f6466732b685776474278425737726d35386131716b4d72714c7057735336353665412b6471682f353972552b2b557862336a4f2b31796e714169345052494f3462596569486a3367322f567a50382b4d7358496f4336724f3159745631564236765173725666524274626b765572695a2f76724262476e4d637a5773535a4c496d383035694f4847526257497644394e64446c6564736e35457464507a63314b5a5a5a4b5a7349384647692b37365762645850526164705a3943443637692f6b5430575175614a2b39614d784d5141586c314f4835444b3654577130325149314d5863657333353836625557537036326250542f414f506e3735772b786336566443782b4876316a48322f4c304456695969496b5644357276593046554550686d4a6a3930766b6c525156504556453938354e7079324237594f6648706654654b6d4570716739686b48566534446f54497278776f4e31392b31423850303179664d6b656e794a794555555072615436422f57676e6c44746a2f482f41444836386152344a67763633394237552f78492f49666258364b656b666c50694776657a433366546e77354b65354f41586d656e4c6c6f38585773387a7943305849415335566932664b707254706e2f68364d305059303356302b64715535375250585032477a46666d586e6e717635486b3139586e2f414d563464524276356342772b53682f35426d354b4b71646566506e6d4b6763326c726d53317154306662556d416a593538636e7a425446617850484f344c682b592f7237344e6e376e703535522b4f4f326d71615a6c665759464e42592b76684f6b73774a61593375324f7059537036644270706c61347a53644b557a4e375247784d653770504e4675494d6550656f3371414f697631537a2f5462794c777a77566c47625273342f6c6554564874304976784853366e6d65577349595275544c39704a3044484c79674144354575523733644a4d563431336272692b664d667963385530732b33794c5831637572784364744e736e6a77567062757a796b3359586662644537397368714c55304b444254692f6650724c2b30426e4354473069754a327847426f5836762b712b424c2f35683558764d7664346e34786b65572b5536586b4c6f5879305a634f66414c622b3442565743764e6f556c6b7661494f4b417171645634425348615564733270576557496a4f34656258387650377a6e72352b536e6f63663433686b654e654b6543466f76586673343364782b6e355268745936685162566269562b6b30574a4e74504f633456487869336f65346a352f5862702b7a61644c62356e466f484779515a476b44705452313066315639392f4f4b62594e4c324169636a354f53536f2b75356a50325a6d42636c2f5a673549463876546264394165386e66505233443056754b533532557562525a57685a5679503474532b3837634b7837637a7565786a5030662b382b4f4254685a30444556666967622f7744397248306178505854383066546948792b445074384f3847307150554c79584764554c5a744e666a79537168376f6855762f7075627059325741396237412b3279594867524f506e395a6530544e4e47324f316231363951503641636671465674592b5868773275636d2b4d70713634526e2b7a6b32664c6a30364d463037394a61425478634e364766614751572f5149357142366f666235416f5568627237367454797a7a446e48595a6f5270654f65514e793373736c6a766471374755325a63667953764969756569796a7632572f4f70614844374c4b6a6e484468586f487671622b5748344765504f2f67664c587638533579444d7742385438743856426d763542493141746f676e73626d305569733245756c726136464b47663255646d4c69677354466450567478694e32527a44395676774b2f7448666c4235355a3537337944314179764c64336d6a74625068325235713251656a6f702f69307144786976504c695454714e63494e7a4b41597879584c61683356477a2b7569757437527078695271743671662f4a782f5358792b6537542f4142702f4c524f4e757a6f6f75792f54723157797363744c39575675706f79752b545a586b5874714a4d626b6b6879564639686678302f4c3758413462313975744862302f7744534f432f354a2f67542b52583463656f32503661657476694f5733573155586554346458672f6b3244356c6c627551702b6c4674504f494763504e573561534970724670364d332b31516673786f6432303136617464314c422f6c666a4867654c5932645a3667363038485a327846486d754d7262486956497831555078344b756b5331735178333750734c76684d4a334a365a2f495554717a4d384f5032472f6c586f52544c365836487256354c3449657834617465504664725a74764179794f32566b435a2b583053386b3148474d55372b395a4f58324a745867634355486a6e737833382b33647a44536a3174394738624f366d6a50774a34736e527a61394654644a6a352b35396862396b39544d2f647959525a526c6c5659346e416f5775583831514a4d6b742b6172576c706e506467614a2b576550374f48623356594b4852563161434c4a496132556f57684e736b47674b4f64593137304d5a515874343768694b377734496b7379486d745a69596973774977512f566e7255786f45316e76615174664a5079336c627245752b536d737a41566d6c61534d31392b5267527063587645657452714838485344336978716d6d6f4576736f5a3172324f4271697a72486e6f774c36524c3679685850724e4c6e7645456e553550784764414e4755385a705a395574714753724e6c656641346d6b4153496f74436559313864386b346d36557563426679753434462f346533363468543465663841352f384159465656697754724547304f4c7165585767396f434a7363344a79612b6d67322f77444b614a2f63336f6950326b385070732f393558424a5658576955785558465839364e6f4b65544c333239527a37495065762f6b474f4a3142652f6e554e4a794a762b5141414e685a2f6e2b333236677162656535767356794f734b4f2f656c484f417741434f676275674f686548484f3932573875635a31585456545137334152457032596e475a7334783470716472365038706b3571636278574f4748495a6d366d41392b6c30707465393138707976534e6a41575878614c72506d2b73306b527534734a746e4d3536676a3663654a5465546556716e6175633556365536485a423937426e6e396b6f3461424d485a61683933506b30534b672b725341514e62336c67433733316d63526d52304833504564337a3777487850777678616e794f6e7875587038387730344f33783575772b6865672b5a4f6a6e67507a56464a484c73645251314a395a45636c4931306e79645863346e4673323778582f70546d545a506d5866462f4c6644495779516f3061744e6d714d364d393064646c576b74586a6a70737368314e5a724a766c6a39387764396b61766d2f794c326474626a584d636343344e6e79442b557153723066783576535a7036464d724759703651532b52387151567a6d362b4c743064546475647936706676384178546f7a377a536a6a7a503762575631322f696a64452f55537a786d6954303537756176714c706161664b4d5958727730736f2b4c77627962556539304645774e6656384f676d615851594e456a474a764e6b77764950714e6d43654a7861655742546e6c5835476f314c2f4142396d7634726e5947744a62437a4f386a786d5a633143625a757a757a4a745768323154527866634f6e596e6f5577502b7a396e352b6a777a5251466f3038644a786a7945673834386338472f4c656251564c71776549666b58347068765234333555673837413854395a38794265703557376338733034614f76335050724a66715a6d6439592b7470504b533537414b644b52694a39334d5a3574503841386638412b556153742f4637386e634c62757a4c667839396133364755537239686b50702f7743584e314938375a63765878394b7447646e4d48505a524c6d73374f33674e4678674a45426a38495537653830356a4f36755230362f7478666b706d6266724c364a5265646177566553562b6f336a2b47642b76515a6247704c746b7a49774573506d674c62716b36533239556b70773634336730512b594458547a36326e4d55746a774876483950616878573867476b6e642b57506c656c54387733384f6d6e50724b74745838634570645648725a79354f67633458415972446e325a70506a3871334e6a6278774c51395674485a6c384c3266496851377970336a6473666b576b616d4c4b796157455a66645047554e78462f4c494b6546686e7a6e736d616c6e2b397674624d466178457a695271312f774458592b6e33695070487375395559764c2f41457a7332666d442b4438336d3754715359694e57664b683048466e62564d7a497a5a562f6754573257425665557a4a7171544e523665376d6263764f4866346e62474c73562b61654c562b555265525a71633745334d36616c5930665237544c5263415535632f734958525a3663794575714158483878686577695438535931496d75325259487268366d2b50346e686d6c72672f4f50564b436958794f3734335471516f5a74435072396359375a37345a467279576644325757675a765a37496934524f6c434b316e4f5a483833332b3433362b683638666c68366c65566e624d374b3851657a784358364c644632524f6a474b4f65684f556d3065384555584c73567a2f635458426c4b503230392b476a2b76613061624e4f74656d34632f686a5679757a355652545478335545745655356a455648484d6d346736416c563376376f584c317a524868674c2b7034414e4565663131444839306f6e6f41556a3264566b7a4563564e597966374c55735730564c6d4a596a7876746f44713274446e2b62506d5a37532f7742674d50764178436e67393656635137676f556963302f66584b746d63644c676e3530684f6a2b4e42524877785631492f594d763841494f563256384154577a375456485570793742553462466b564f6a3275776c696d4e584f5531653335427549756357732b664c78784a70614875555a312f672b767151772b5575645162796d6350577a787074412b4579644a6856453772584f642b6b726450384159506e615450384162462f745875555a484e6f4c772f472f3865664e6679653954664776527a30347a5174322f494365797169555639586a775170644f476872314b73614b5a2f6b736a616276726d4c6d324b4143557776637a485576476c533172642f394237614b66515478763841462f304438433849394c49615a39667775784d586c486d474e75516376386a716f6b6e2f414a50633836644c54516936453978684b6d6a4266764f625973396852663751753876664f706530322b49575636576559546161494e4351744c4778756f5266745673764341764861714a724a76477961614d2f334e304359354b333951355361706e51336c6178366152355738644a477a486a316f655131786263747a3964306c2b68566c30745832323271444b7a696d6259393946306f31564b7a35366b7a676a374e4670324a59396954377970656651576c345a355644616b5048744a63554f6f45344d3175313364334761466f55787654553972435848637a377a457534667a41663841366250387937454e506a4134472f33717677354b5950442f414d7576546a41645979704d766a667248666a6b696f354d624e304c6238667933682b4c3535512f56654c616f363247744b7a485153662b6170446f56312b7a616d50326339335a486e6b7768374a56335179312f544e3661712f5a68303053424e7843782b4d71705953372f4a58436d637574486c67534844734e3048644e464c75383752663369586e6e6b2b5a63415a486b6475653432364c4e2f7638414a375375366339795679335a617a664f782b304934634e557a58762f414f62517a61663338616a7264546c61736667396663582f414f482b5a62335751364f572f63735a54702f476c58486e5a7263444f537972576b6449694d5061376a4b76303448635454556553635970576f75564b6f4e332f452f4b66482f4b63504c38623257546f74717a315065684132357077397a4f585237575556646c676d535a485170634a6b684c76727979716b6e654850662f41466e614a724f3673634158736a586935774f6f6d4c567948797941725166425779696a714f6b3161616c534f6d4e302f4b6e5274536a72416f5a4e5939715155507646316531627779444632725a775735694d576a6b6c497a6d6d66395a354c304c7572645a4a62525a4c4b3775782b6d55614878702f7739782f555561763351623231465872753874627159796f3946504c575663354846502b36724d375a707a726e74546f31507555333634324d6f3553427943626c556e4d4c545974464137637533386f744c77624a30743331597a6641393866354f5441344e586b355a33494c6337694f54615467685335553668752b436967654e6c5849412f717a3742706d4d6d6d6e5070584d66454e3737505254304738727162594e682b6d4d556b734d634e6d626f6c546e5a2f4c577871304e48547a61484f3555746a4573366b436378716536515541345571645157553276474d3877306b38695a695a58714235423470673763586d6669766a7a4f636f382b787172364d706b58752b674d647a70614554533046646d6f3533716c694241416b3333732b7742617832637a792f6c48796c756a7a67375372317a35315553432b6d3242724b6a2f6b516e6666527958715258504b644564484364376d69796d503264534866317a6c5146424c4e436655697a4974537a2f636e63735834376e74307336615453732b307a53304f5a76364c4e45364d76504756696d4f4c324759696676643959414b34486a596f6c3573625765306d554d6c6b78354d74735a614d56656550495a4a307231783974693369544f6f4d4f632b4a6f4f4a4d6a65476279744d384d52306758586678542f484b59364472432f50585837377032784e64706f624b35397339614f72425a542f7943316933696d4d2f7763484a5847665a464f714261664b4971466e4a51334a4a72496f38354448736b5a7345384873704665524850504f4179396c6438626b45777863754e4b52702b41672b4543506b4f7a343734336f7152526951745643754a4b5a376a35326878496a4b78656e5a386d61744d4b6d3064735732586a6842376e41412f4850517376366d496d654542507865723539796f5a61746d664e317035625963357946457462376d45504d6e6b624e4a595666625848594c42357a6e457576702b55412b554568414b5a2f6943373639704d544b6b555a526a564e63392b61335558795a476673746d6672466c7037525a4d374a6f4b6b68702b5a706172695133674c656f774154306158686c576e597a4a6572586d676f69794d545a57665265734f753244363554346d7043707a4c383972484b4533662f475935437065456e675638506b75745a467961573258553045365a51794a7a356b364f6c55725455534d7771596e79396d64644e56516b4a7576614c457a674167366c725a69614668364f467077352b515259725a394b54714f7a2b4b35586a4a63596d6e794433526c5a397158782f34574d2f6973394e786d775a76396e2b6b432f77446f383645475072697069333573314562727257506e4a31486c444b4b344b6d75583051356d31455476314c4f4b792b54726c4b552b666c7031642b4876416a75483456597a455139695936526e524c70514c6b53694b73303973736e6232674c784a4d763768476f7135754168702f4366425633354b55684d7a6d5a6b50363172724b3244436c5a6b575a3171633155326e4b54654b78356335314b4b645167573531444f55614479617a6e5a6c4a716a53784a4b4e3373474137386b784d6c2b6e477a786a516462566241716c5754637658645352325a646e51712b76316e737a644b6c6964416e4f6630456d7139673375536b6b6d34414b544879567a7379624e6c4245396d68342b3243467035304751744a546e6f6838656d6c4c696d2b355644557557656b3658463761674d786e5038417030386849504450537169667942636e6c4764712b4b58614c5630686d5667356c7466612b31486f4b745a425a45784d4c31334c5a596c512f7743783374473430746b66536d3032345969643473667a70336b4d476337782f423569736c37504e44724d7a4b4a76484d3531594b6b356e53517375547732454f617a4c4f61714e4354624a41776e494d666b2f7176444f6343696876654b34394257314c626f3261476832494673644b32324e44466e54636d5166686d71455a353671336d3736774f396a716266707245557a676d72454453537a4b5278505938314778343057772f5454426d653175584378476c4f503857644d4c417738632b4d7175636d6d635a674166755672686136596e4535454d386f3866697a7064654f664e6a3131737043594e485439302b3152626569376a5946357552734d5376486d59754636512f532f7366435a2f4c783670486376572f644d674434545148697a344972386d313376587a526d56373451532f4f72333650647050707248683162512f6357757634304579424a75464b7749334379316f7a47424c737a57664e584a343535487972755a75503565316c794b424478794e316d506d506a376a56564e5a46564e524f746f724e5263536c50506f3341464c625631322f46535138307642337a5a6b75316b396a6c3749646c6d7639713342727a39474c5830496930764b316465756c6631324c79686545696b482f414e6a35544d4f71417743746262666c49325a2f486347356e715a365936744f6b306b5a586b4d336a77612f61436f6a74736a437437485765525a354e6e316f514b474d694266313366476c4e3942756573575631764843306477394776703948714a545452526b55555164357254584d76733074784e66644a724936744432417439566a6a7852397932746d4250525a784e514e2b5a744865473174337967584c48546e7974697731347766395a32616a51546e6533554571486358573165646f6731624a63394932576334786a7156673447754d3039344432314538644f7651454c655530536e4e5a5665655a456c7643434b556d49624771784446476a35374c61505a31505a307643506e32564f2f33563942752b4448686e56787063744267516c6e4a676843777255352b5443726a6f39426c514c6f2b5a4c313139446f383435352f45704e46432f644f444c51326b715231664657507479614a35477135702b795339307945393752552b67344b45304c73354348424d31477a4e702b59506d53414b53454c302f4a4e6366697a62587a506e7639336577714652356839467638526d4174757044796c5a664a3267685831494779654f6b4a524955304d45492b4731526d72356973357158576262526e62397a74656c47774763736c4b746d6a4f4b474f59444d3246796c2f74532f6835504d54514579714363546a4f4f4149662b5a55574b657452795a727445457043502b5136752f763164425a413558797738634a684b70786d41564f70446749506e78724b78763951466f327836454b4739584c52336a4f4c30544c53644f75754b7362506a50485053492f6354717170683968384f5053563850772b77506378495935656678676f5732764e306c6f73547969624d5a62794d544a6b39576a52584b5653517157637370473048464f536f5a6b2f626c6f4f53743341483255755a717951497574357057456543326c5a3879335550657464674d67694778544273416b70706c643269637a414f5438536b424d794174687a5355397a70474435474d7a3942614a6a7a594378334c524f7675635133786f574c6b735a72526b76344f48776a554378396e7357536943645a434d3449675134594334756d444d59794b65655a577a326969796e4d30544c686343786e7773476f6c48372f414a46336d51473735684f63484d7a354a463830506c697a36366b5663636a703559584e7073725a4d6c7165327a6b4b53635753355837446e765532384f54457833666949496c666f647676663035304d68705a5575683274554d6b4b3548364574314a7a2f626a55546b496d2b4d6e4937772f636577534849506d57644841645a30555a4e466439644e6443353555555536432b2f4b72724d36684d4657704e4e6e75376e2b395a5a4a44316e413934394d6753592b3970676a6a5a6375586a5770716b5576507a386e4266323435797137704b4248362f77417150702b30766b6f7a3475712f594c373846684b5361544153475a6e4d7a506943714a7137654272537a4878724b712b366c414366334564644648794a736c585a5a555430664356314365307a39494a55384e786b6330704a674668305279666b70795535656b703366656d4e3755644c2f75326154623375392f65394b7044705a706a613172536430653857584f4b59414174553457547568316b4c46483246736252465245547634345174576e53574849324c5453356679664d7272506a4d36513977455057536341476f574a39334f7a756244436445723358587756565a483136474a304649362b507246776753556934582f4a38587a544f417a6c4d675544427a39456453764f706c557872595a4f6363784951452f7742763135526f71624a38374b464c2b765655326a324a4d7a7832534748477a4c446748347a4d6961664b365a5a514461726336326869784c396d587a776c4572514a79663079724d4c3330786b5270535275633335477a7967744653445676712b694d30714b3055505034324f397971416c6552794238667447677953782f77416951425130574764762b695a6f4944366e7244625a42526f7a754e705843754b7a514c74396c386c466556532f706c2b2f72314f4835693532766e7456374b66637959466a52304858655a666451724150696972702f7744494353326576526e73344b35627059304567574b6c4a5570654e7a394f555738375736644d34554b59342b6868574c724a583354307a31554d624b726e7642765a655656584d59336a44696c48326b41366e774374584b42654358637539784e2b4c2b6765706274485572357575526c426c6c78344c567a506333746b384c6d764e48566a387a4673756e6b4e4642653177415065752b3270774d434b575a32593751304b613366576570784a7a4b37465a35703747794b666d6c4a4936574e767a442f47726f556f5038416d6d4c2f712f46305144675a554c715a4d714f5357535357646e3765445776527a5046433430452f576c4e6e58304f7058636e326c30766637414e6e75364947424247637a2b47544e55646549444c6f776f62483853622b3030733570365632626d6e4e516b4f614a4d6e304d344f4333707041724665784b5643507767544d575851776f6444445a537146486275314c705745526a6137722f6f75664b786d53343836706e552f76705371396953535a766e4b59774a666f715757536a384656615a314e6b666e4b4359306f6d594e664a6965317933734956315842333677644677674443597676366a574464494b494a614a2f342b68366156727a59744d553856464a5662516c7a41617a35456a6f48396f796c6d2f2b4f532b6534666c64314878416534696235496b664649496a6d38594346716d7631624956693969466e5a526d384771563072716a4167436b43396a31696650656e32684166554451747a335a767876626d41564b6a2f38415473334f344e526736776b496d6471522f746c67736e6e57546a637844516736414d5453445065486e372f7533633370664b7652484a673063776f483456645a6461475a4c354a464e572b4e567348774e6e55356b75677a55684b632b664837797063444b356a535845396e73324d5838505836446b56416c736d376d6679476f394e794f346c6a6274486d4c342f7163386171736c664e63746b6b3876637566343345377631794c5334334e4e4c58474c5259767176325a44536671736444496b4965476b536c396f546c5679624b2f684743414a4a2f495143637a48323564316a32746d6361515a2f7553466a6c464d64684d703872365778427341795a755a6252524a4e4f476a742f39394e65782b396b676f526d2f565852796f63736a524e374670705447763364396e5a65353775587a364241394c56696e315a456f614b6b314b735232702f41775067742f6959763174444855614c4e593832753447736561364263593145304b4b4a496576642b5964322b5872696a72644c66582b694171686d4c54314f71565343426c304937703539716673746b704d45715247546b35707661387a61443755756264334e6e4752495a6649396c4b664630773336435242645650576373626b682f4a3564656a6e35625a4f76314f7a34362f6d6f645651694b4a76736b2b744b613651363869727374344459547876792f795343655856356937743056487747676234724a3834767352764b6870767a374b442b626e5753305263416e484946502f74537a76426c724d5a34534a3164757a613252445452467052737a56356e4732542b4f7878676c41736f512b747a6d31633973616d466e7a746c34514573774151536d594a2f7667417a6479314b35382b6a51445579716f535330744c33396b4b59667556582f414f37547930665431696e7a3265303239622f334c4b48476c522f4e37416e74783574667464312f334b5670676a79764641727877794e4f7a326a2f414f54425974316e464a4c6b2b764b4a387256776555496d61487a4c6d483467744477624c6b777045655165543375757a6f452b5074682b5a6a6a566f50524f3459342b4c75735050316f574b3171445375656e6c6e61552b304879444d6b4a73375475356138524e6653534d7655483144353570356c6454564a4d786c336957467a6c313861543773585a4e745479794242544675586f4535336632492f4d6e6e3178706a436f714675455257427476742b73615046653030526275486f37615853334c566b466f3646746578474b363659317164485574326c556c613063643169564b4435666348793857617152457a30417678507737563332782b576571335732613872616f637a787a34534f524e757a504976594c5230496c444c6451792b6370414a314b4c50664d304a48473662674845384d785765416b3371585042354634395075527852774a7733393635715639487831556572544b44484a3637504434705559363577364371694533546470534845794d622f51613262435a744c786930785a6c686252557a5a557550517a696f6245766b356e31477a6f2b50384131366d4c3273745342482f44394c543048665462385875446f582f616e6a737a6f765636373776746e376f534c714e32666c797556704c49695a567056413137724159544a3656725934326f52534d356a2f6a776d352b3166434f6650727068655465552f6d50366f65492b485162477a357058366d417a7876457a35636b74433278384d734e675158766c5879775a6f2f3841736b597234337334425336594439675032704f4e4f737a324e6f3348395676786c2f477a385450783935736574465676714c367464775a74444278433233722f414a432f74754f357a637a37624f787a3473633955364f4a2b5131554e5438686361667850586c573939532b4b386c5273332b4f61494a6637667537545250454f6a54347235344655335134706c5874705a6d6c335064386e763361412b4568537431484476644d53584850516f79436c382b2f3876582f41414e575078412f43663075543653392f492f38682b323135525a2f4e7246384d387931595a4d4878667872374b39446a4c696d754a56484b5a58537053357069592f577139356b44766954707161747432796e55574b763833667843527051654d356634394433774e6c72632f4b33704d2f7736556443506c63724b727366416b6f66556b686f2b4d56694268377a70446f43535a7845612b36314f4d7a716377334b39556645665457663856504b6466303038577a5549315044367450784d38624b5633667a4c6471426d7879724e4c5348744361464c304764377a7253647a766566434858417350367a724e76657a46677838566d7766796a2f4664666a6c3838426552312b4c417139736557683143664b63326361382f544f42777a66794f5461786b39432b5046526d4772784a4144566d73303570715a2b45616f6669543663786570767131663542725947786a4b3948654d6275346a32696f6d2b63565a65686c366e57744e692f682f3135622b456844714a6b735455755575483036586161747072584566454a4a2b552f35432b61355871627065572b6d7a73794348305568354976536248565451666b46702b2f526850466f684a587769686e783972663841464f62545439646b39495463706a547045557862346865586d337246366a642f424950574e4f716954314d312f547a5075683134466c664b7258754b424d756e444c615351717a6d485576676767476b7a6c4b6751506572346e6c5972574e6262485a47763339756e3147395266556e7a5831733250556e79757279335153724d2f68624b6b534b67526a56745972696f4973686e36646d732b766c487932746a43734a333668393159766e472b7457496949724930522f496e31753962504f66584431446f503157316647504866424e617047596a436f6a7838564b63766a7059634d4d706c6a583161523645476830476b63646f6d385a44614c684f5174615670464b784e65304e3750794f5733314e2f7474654f2b54657075446c61666b592b502b4a363974496364504772586a736e6e75304b6e494a6a324d6447786a4171346e394950336c4f5a71576b4b6371636e74474b6a6b484a344e354235466f5a474e666b446d753632494b7962764d7a534742476644586d6f6f79567261314e585a7853726a685638366e59795462396d52725158305a7048474f73693276482f41414859386f7a736e78667843385a73656637656e624766695574715337734863695764694d6d70636d534a436c30716c455441584e595a68307a73596856496e45356e6a6748612f43743778306357786e61696256476c54652b4f4d645a71654e356730445a4a7071304473642f3375557830497a306538784d2f6b6e56317741304267552f722b4c65522b51533657746c523136444e53584e717a70754336697755536a4c6d63427859566c624573586b324368586277524d6b5a714c2f4149576578334176573052776b456a3863336f35763544787a4569304c79624e462f4b35377876667255764c4c5a572b6253376e3164717a62592f6d393348476f626b702f7741324e5331764a6f69596e74526d524a55785a506a736b6266482f4861396651324d32576e4d765466534a4b31546738696b72693065707956386c6856504b376a6b676a6e44626d732b3031496d5472346d5a6d654d697276496654587932327655747849594268666a31654d555661396b544d536f4b4c6d58514a7a74483353506e532f2f414d674c4f3658777a4c6a67734d4f3069415a39683369386434367666676c69582b4f2b4365583831644468366e386e4c5132716a456b67524f364b4f4f656e66794e6d697572346443694c486c6f44356c745745687877704359334c595850717a6d77322b436e6c393879717530353943364f506c6763516b71666b37744a4b70677335455a35387073455a575545707a4a6b544379676c396e34452b597244386764584a79765150316a7672543952635870683539733874316f59614d7579446e69656c78375a3838633938564d665855664c496461795878514b2f34642b2b434e715a6d39664464412f6b682b536e7237486b4659323047733950795479437453366255577236796e5371733751756871356a64434a4a6a593339734c337a6e312f774151463850482f51316d73524f654d6a307866326a66584c317138302f4b42452f696c2f6a656648354e343334376e2b512b53624a445459486a324579354d57566a336146776a32786d6c5269396f563065483857324a6b545458485450772b305572464f4937716633436363664d2f5165473863584e332f4b636e314a3858566761534738675a6b313173786272335a74476674645a5a3168314c2b73416c5343686a4f647350364667663179614d37623865366f35392f6c424c3666654e654f346d747068346e74367568354c6633496c386c386c31337052724f677a63394b634251655254646e307579354e484764557175624e2b747873383570734734397450644d38527a4478366476304b38303956764c764552464f39712b6c35597669656872746d623556366638737063476850583044725a565655566b4e4b542b626c4e5055676374583646797a336e4639745a2f46362f6f4e41636e31573871543552547079487242355064762b4f305030702f356d505552744134547a37494e434b786441586373396f73347059704e4543356c47526d444a7470705848674f6a766e2f774354476558704e732b73667152726551626671765434426d654f53654c4a74647a477839506c616335586b397753316642527375646c6c724879644155685a6a70533673464d4c376d4d556e6674703252776e705757683053544d6a6a344e50556475583135366a462f66663841666f36454c705135506e3537486355766e77644f5a6166737a4d555142772b6b62642f68442f62362f49623835504f32654e2b6b336a35346e6a30323270666d6e714e734d3135734c7762785a55343063386c373541396e66356177474c71366d6356454e4653564b575973616f4730314e616d6c4762663666784433616668682b425034392f3235765470506a5070706936586c76716474426b552b652b714e616f64447944795452645459773034634b516d666a35493645705553536b6f3242476c6857744d2b6e38666c6175726657744d32374d66443369512b622b732f714a6f7937627537556b5869653072726b573034304d566d59444e624e6632734f557572657648416c36643655702f5a56483833786e5178536e555632316a7548472f383566376e6950786d7a5873756d302f4f5639704c4f7773544a38676f366938517a614959576c562f77435355396f797a316d3263706174584767636234654e495032302b7253305065642b3063675049503737767135526e753166447653764668386f306147795761756c7358616e6379465649304d6879736d486f42394e624e42792b653066664d6746424d3441374d544f6d505a4b35784e2b58356a6a7a36752b7666724e362f38416c5a2b542b71586c2b68766173786e502f47726b676c797647355576534d6973664752504d6e50547a34632f694f67744a723459754e332b76334c365970703072696f4b332f6b662b516d6c3439682b4f3748725a36686e67654f5a2b4d7278377858523875755a6b35536646676f796375614448347467704b5050306e4a51496a3070707a4e4b536176716847736164496e4e615a67515344314939567339326b334f39532f4c63696659304369756d54753757557664564e78546e7a73794f66715a692b725776674c4966304a5466384f2f77446a394972576574414d7338783833766432716e797679566a6578793142575737624d795648486b79593254564f5839686f5566653670514f4d7837704e49534c334d6f4f49694e7564756342776a31453951633936554a3951664e304d663163792f62354a724a43705065706144426f6e50766146735a2f712b49463850687a4a63316679635839564555743847514b337649664b64304654372f6c2f6c766b537648356b39793036656858517163545a4a39724e7a2f744339535568553245474f357a346d4831527134705174344d78455232614435672b5a6556654c74587265492b61622f692b74464f346d552b4d363270445330585361476c6f7a6e7535756950746e37394575715331354e372f6b315050595076644578453469614169487156366f6976675a2f71483577323257617434416e7972625a3754537a394b5a4853716a397263535a324d43684a6a397636332f414d4d466349796261663841542b775235356c3571757a756176792f7945787658646c366135746653586e736a59316e532b3637756f4b37387476326d664e4d52457635513630414d5457485a78474d3750366761706e4a6563725a654250556d64424b6d5a3842646c446b36704f382b372f3170366859516d7a324554524d486b3047467a70426d4e672f785939457444386950794b394966536645597854747679714874326c4b69792b4c4d79596b6a71326177757a597a624f767566485a3161794c396736616358484d5a4a41477061644f6c7254316b66303376484f71577950414f32394f4a4669655053654f3366506f4a6c324a4a463573767a7967416b34324b784d317a6545347872562f774252547739776f5337773778307441416e354e4a584c3342474e6d537251477a51487948625974456b6f4b306f796c785a4a6f78367566456f6e304d3953674a45664453735348726a2b6f6c6474735a3364346f5479487a664d68375871765963465166567964556f394f52324864776e533055317a33616568396c57663966442f414548736237492b7a554a4937317155726c6f6a7045446a2f774376483549627635465633656a76702f48766549656d2f6b374e2f4e3366567a55666b30534e386e6b38686f7a4a6b5a6c6c666b55614a6e447361435677457573485037536c4a393751726f46305570464d577478742b455642367466696a2b5033725a6a50394d764b38664b386666344947483659346e6d666a666a6e637a64394f664c646c31577172547577637a4c53486e6b647a4d6c6450666c5072733335446262577878774254617570656b376f372b62356a68622b532f3841626c2f4a663866505544796a446c394f7466314e384e385a307176462b655a2b6d2f6a6c6d686b6d46574e2f31344766425052334832366930434a45796e55666f656c39427468652f77427658545770657357336262666d455a2f486a79486e34362b70656e6a2b752f7033762b4a4f777067304a76452f4c50467173326d5a6532552b686e766d6c706a55334e7a335a366339496d5371536450726c316e4a6e6656635533694c317a532f5557583544365a2b742f3568423546353334683550345834702b4e474836675a6e6a7a504b664e2f4e504876434d504a314f314c685462733532356f4c71316f3576384172716e726e53667842543750634874534b7178616d6c776d75375546742b6e5870332b436e3479654765554836392b716e6858715a362b65452b703368717645572b6b6c5675706d353369434e475079566d76342f53365a755a7146334e7a33416265414253722b5a7831473267527372613272656632644e74625637787554354e2f654c2f463350326655766538543854387562712b64524634527a4f7a764373474877626138546b7932533233612b50703644484a306d704c55415a7a3632644a324959795966307a675a78374e715446596e345279342f4e62382f637a312b38527a76535830303866387138513949305759313853504c37355837624f5a53396f44527a7351726c37673036576f4e58744363674d456f4e763666796b5433307447326e4f36334e61427a524c716541493939344546504436504741776b386f37376d6b6b69547a6a76656f6631304f394c336464372b2b33323836337242654c66332f47452b2f46386d324d446e484d6568574c7536575950473859587756434f6534666d46776c5233355061482b4b652f722f414336512f77425a634a363045527a6448784e61394e323672595a71304d3532466d53745435654c66316861484c3357334b6379687065316653456a353859482f6b5a4e36663841567358377243796448796d62786d765031664747636f326f7634716a7832594b3136705a33766949306137455266366c314239723542553776742b576c537671676c5a675661307a6e5041657476384174412f33582f782b38763841526166304c2f4c76315a78505450316939504a7144384439536655752b4c487750506348466c6f356e4a743836386b6e626e792b6653533162456e5a396e6f426f485a322b656c3172487a703837326a326538576d326e5864573368334475396b2f6c442b4c662f4149356d2b5252666b48364b547a38314e4973364456395676546d464776516256386531733847783756356461707039476473585770624e71717062554164664a56792b37314d3432327a3872663348507638414d7a2b384e2b422f342f617174764a395276485058583143784665514a35344236524b3863386e71386e30612f466c3443497437314a77504a4c386a786c6139516e39737162666f7356505933736564525742794874702b7a617434784e64746647773849667131366e2b592b7550715a356636742b5a554a71383139532f4b504a504e64656d66354a7336536a59716f59654e6b3836346d5234614a32706c6b56317838584c4769622f45412f3539577459724733346169756b624972466f466b4c63676b487768363368393733356b6e7a71334b4a5446393737656535764f6b667a4831672f383834503957327a2b494f4f367542382f774270523149615873597054707858494239426158646638645443643869564c4a70393933574f4252463750616266366e4676786659455a74444962773066477049456c596b637a4b6836356c45374558734a4272714434784968643775506d59526d4b66642f6b564b6137626669443236496d7a4f6358324f4d664e31333232444c78704879386554495a30534c34316e5a3970346c786a696334414a644967345442547644434975717043626e52446a77524f3253597754794f516b6c6e727658565337682f495a4d63503841722f59703537514a706d5964362f5039767347677430703232496a467155724a58616e35395042664f7a735551556461504763466b76384131515950764a5943446a426a6762307951356669375872774456374f6c4d376b7665756a4254544e4847452f3643576b78626b6b74792b4e575958574c3538355447533241766e7939442f62526234766f467a636c315833567249656659563742506f7562785a6b6d71744c2b6d4b4f61416b7637524c42504234346a447043626142397a624733614735712f66413549303433716c2f3255393555723272506e5571613979506c577850557365432f31385a754e784c396f42304a32574859502b302f74397a2f4143623164384e793778527132342b427153617a6362543345642f385a304e646659575a306854434e6e783036687035307661344a54436750694d79446a39703478535a486235753275694f663664466d4237786f5456354437716d4e6752325a6432344373334f77556f7961532f6a513533514f6b334165615833674d326647336a45637571563433327648303132565568557a364758524f5269375a683039725a7371636d6e7969682f6b6c7a5254515365427a3576733651664c42596c3757396d4b7a504749344178354c3670655437487037366a2b4333574a386e79622f442f414462785450666b397a64775230583457703858626f5661585773534a52354c52564d66666d633546482b564d3839446b55694c566e734478703655314d314c6c6d6c3572797a374d7632765071613371756573686c3436486a6d45524d75496a4e616d45326e76432f7a3642393957765a674b6357427a54496c4c72416d6f515030415a4971766c496d7963367a595078434c6a36346757432b6c7768534e4451627a6f4679763866303951473641366d5a56436246796b52547145516e304358787a564d4d654c4b5944456e395438496e383352597858544d51463465304e41636e64596b6b4139736644546b3142797147706e57504230615654494e335847754d514568357a336f4942392f543972574c497559374a38503643646548764c356236366d69486162654e33767673354374636f4b71703538434856454b3746653168382f58584353515561514e7044386c525a6e6b4f714632527a6274725658526e75484f6748496b56446d3254786442694e5244394650535864795764675355636851307763436e554e35307a53454c7a382b76706156484232374c726d574a357a6e66354647697861535370575832714d6a597a73657070477462666439554841796c617a6f6237414d61486f313677614869722f4e312b6d486e57623666655036336362513147356c3957546b624a5255445046395773425a4f78744f6b7a32732b4d476736386e4c41794d422f707572453433633472676b7a64475a7654544e4e6f445238782f486d75647a4f74515562694b526a793933765a4c55395266746e2b466e58435874553570424c504650422f774358384b387239567454646b7a4f524e6a687950486d4c7a5865512b522b51486e4f567249687a39596d742b6a394d7556664a3368714677644145742f617764615a78796575345275365376583979317a646c5a567159546b314d52785463366b3748684c494243505171476563763333696c302f73414b6c6e777042667369737845356b575834667061755272654e374f47375358712b4e3676504a664836494f616354364e32657a343073355a6d6b4370307254513735754b7655716578376b7055756a2f55794f75596e764839413738512f7953796658763053384c38346c5748466275506a543747323352313933577a724a66473552386a52314762663736726853746b37414b6633754777564a2b5638783850796230325874413355677454674f316c686f3176783036736d4c334878374e5a552b63796d42656645754373647235663841456374644c5a554a6342686d6e516f566457337035384c5235446e662f63522f7432654d6633447644664363354f31692b6e2f35443457783435523435366c62736333454a78525367744c77507979415066545a6d6d354f676370484b66523935306531436b56544f31306461644762664654774f6a79612f6e722f4147742f79712f417579626139572f54324c79763032327457764952366f6549386e6634784862446e73446f6552575a4b54484c304b63396b6f4b613041456e6663426269732b623965687061326e71787932357644764846547943506b6d683264445668384662533737474c66374f4e6f4e7965723442633655764a66726b727656385966502b53456662374664645a35632b41754574486d50346e6c357376752b5639456c687839466175676647326444577a71637a35426f364c694c6e566a77306b716b5249444b412b6f79694a744d3448734f2f744f2f3279667739394b2f546230762f41434d2f4a4e574e367765722f6e2f6a61664f76474d6d3131412b482b6d632f63387170387a2b4e7a533539727a51456c637754764e4d3476636f6b6c515a74522f586e2b306139375774536e4a576e2b346478665554304a2f474c3177385a39513850795a697a703836394f4e3378425739725237744c4d4846386a386666494976356f584d4835464a66566f7876307047574f494f7355686f4957737557757071566d746f2b47772f6d6665736670395a36526572667164364f7950486256366365612b51654e30363841755846627a4c6f6371533437616b6f4e4d2f4b72456a315a39574a665a4d514c69656d4c66626a6e72572b65304e367637584869587054353336392b595a7671393456347636692b4a35486f31354e6f393864316576664e7a5279347275793173664e5247454f306d7a4a533036333956302b556d6742413777446d58744532696c64764c4f3464336647765144305338463856394c504a4d2f3048394650497a38612f68646e7933577139505438673030656e6d33335730764e504939504f6f336c794b6e797635364f4b703331564e793276626d7854413146594479546531707447365a33666d2b49472f56583851767865386f39507472306d386a7776534c48543567362f5954356a345034763470344871656d4f3935376f6c56344e5472616d56734b6f3176423568386d4c507079523765457964744e5366384172696664474b616d704674305a356639324f30504d522b535834322b6f33346a2b726572365038417156446c7562684d70504d32387930377648664a3839564c466a733870516e6f543141364633797964584e544f646765386b653876363761587271563356473233344c657477426a622f706c4f745869325265505438675a4b66416235766d5a794c6a6c6874726372323151352f5268346d586c413533363939427a2b3944484854557278693365495a2b6276354e4436745a766a587054767a592f6b476e366368446e59506e476870524e32595046627253756c796b54795a2f2f41484c45757371545358652f4e55542b6371454c6f36616974705532323352776d77704838663841384f6679532f4b322f416c394c765450796979666664714d3851382f6f784e54782f3033314e507857424e65764a337a662b5057734e684570464d31662b665930776364385357664c534672366c4e5074572f2f41454f35486f642f5a342f476a53394d2f5359665765727a6279767a667a582f414d7037732b512b44655453787935336d474d45724e4430797963526d54326a517379506a4c2f314753696c56505a6e632b644a45777935622b30337261327a7330395a4543387a2f737a2b6b643832785a36666573486e4f5957644e6d322b4e35336d6457663149376d672f50427669757a6f5a717a616e5758513455324942704f6d4c76516f48373644354c4d6531573734714f5050356b666a486f666839363231656a2b6c3539463566516e457939616258695555634a4273394a635441477947546b387633506b667852555439354854786f544f42684b2f727030722b39727532645270375470315773585638537673526e775732387a364f764a6b6c46464879494c55396e773667334f4b5a76665948793842507648392f4d544c374c65415352375769624b38734755335757493474362b6f66303535703355636b353866415034367673644661477137374c2b45705a6e37782f7132703344316e6632476646595a6678393364354d396d52583668656f36446a7642386c466250344b302f472b565836544b4f467a492b6d7568523837496c5242537a716b334d44345338333275656638416767656b684f6e6c57654d7335546f68723555475a3965612f593274484e58487a57746a304a5a36745675384d785666546876596376784d555650776f637a6f4b3161413552357a6637396e6e68556541656c38384e744f764466356b6a6a71724b6f61654c376b4b3349527535487955506f30465a6f57653476624d723955384d35694e766667362f5a5934326e76486d6a5634546e38715872763868783777733035383279444e72346568783176466a4e39545370455566782f484f6f5178387136567157624843626c66356337517a326649307a7665455831366f353363676e7879722b3236484a3172566a32744d546142586a677546617a4250584e4148544135706c2f6c576f4b364e6d73663248505a5037454e42466a565a7852395168767a4c6956546c71556e726d662b71492b543931554d41506a436c764745447636434a51366f74314c534578586e675a466f645a796937355a2b72584b397369364261336e2f77426b4b765951745072314f4d666b50327a72586565785831346951616a56767a4a30314a30753375674e6652516c344b35317235374b547674586f644b6950737044597563424152357a374a2f6f33665937577657506d4c4d39484b417a3648654e4e3345354e47622f41413773323933526961613347793446347149517158704f70574e4878386f36494f36662b515066583855365a7a4d7a34697a7462527138656b30585466504872354e6e42386b316f41515762747262566653554951587237533454666f4d6c2f7744554f4c46346d50333536586663346364664d584c366665712b726a2b4f2b4c59666c664749794e364b71724e32465a6170395478353570576750494a67564f667878714c4e4b4179374f684c42324339396a7631377a7a74544d3569656f375066676c36702f774174367665415a5564736173336433366f325338386b54775355332f786661316a666978464a796e55424b33436d4f4f55446f58716d5a384d703174446d31613874703778714c2b53663443512b6948393133773349784d505171394b2f55485a6f39564d4a75666d785a3763594a704a3666497a7a356d43613078356d7336576c43524a3836512b496a5a3850795038413630707262765a37593756655561702b70766b486858716c2b55506e6e496752716a66354c35483432626e2f41466c416b4d7a5157726c656862386a67586e7a72474d784a4854657449485a396e3750325544704761306a78465a2b716e705035443666512b54714669485a47676e4b6f6c70326c56494d664956644c62374576742b4430716847797135725a6d4f42666148566d33327a41524265746f6e68306b58422b465839747a7a482b345648366a3139387a503073386e384934694c78725570385a3274547754795879577036614c38666531594d2f692f47343044525037715a6b3071562f4a526e51416535783870716130614f4d31335a476c76355a2f68702b512f34512b702f66537a3867504336385336704a332b4d65565a777573384a3877796c653033615069586b5476304f3147446d2f462b673538774637676f536c774d416464505670725633307467616938446f307657502f4a474336456c2b75435073597354506e734966312f7a2f6c2f39442f38415a2f726f44357449444e785a442f6e333271514c41486e6565347936777959502f4a662f414c502f41422f39522f5144534150305875396e4f422b78506f3935333366342f73682f5a6a7a2f4143372b2f77446a76362f2f4147663641576c69776543782f587873446f6c376750763637376630504f38457631377565372f36505036416b432f674a367a3650433577476742697a7643397a424c6e2b416a337666325266726e2f41415266732f61496c2f515a3067726c6778423756734e737337616c56416f6b7a55416e765570655246386b3747304d3650744952344366392f793962772f36705470507a426e4d577536637072574d436f6c70593134644f727338542b304f6f62725664495873636c7950656c66574230472b342f65704a6e304974793432384d6a6f4a2b4148712f36632b6966716635583546367065627538463865307654667948427a664963396e6b66416f73744e504378644566456f374c4e47577757567259414755366673687a396b4832495277316133765446613768314a542f4148512f7856796379684846427a55386265576e3452626b654f2b6636477a5853315472664a4d577364464f643248476f6472664935614c715566666d634845575176345575482b48763841692f3841455646762f7742787a3861664e765437797677667a694c7a4479547858792f42374c35586b6638417a5365504e324f36387837432f48664c4d7a6448794b5535664f6d7275595646465073344248784d2f524133447966633369617a48612f69484e503157722f417554785479316e6f7a34742b5843665564336b456f654337506e316670394634754750463256656a4a355668355754312f7742766c5161487454465161456f6a6e465249594e4c52364b2b397a58667432344655656e66717634657a794e4e3372783442716572486945336a6c75664e34316b6553792b6e4b6635657247494131693338334c62302f70613071375153517a4135307a51705a774b4c472f3161314a6d4f533233376a592f7766383359765175625767394176782b394e2f54356e6b6669482f69666e3237742b566556655662586d4f6571694f7435397037564f71636e35732f76716d7a67583733483371574a6f6238564e4c6158764f3362642b45456e2f334c5079763057317378747677337857625a317337554c4f38653844677a68514f4975712b434b6255324264514f4f31797959334a2b616d597773636c6f6c317a70427237696e715946502b51666e522b572f6c4d75372f4b6572486b7365563576746f324e484f674f4c4f7a71376b3673756d777361486e654d773039715a48333638484f4941386f32703934544378476b61576c476356374971767954315039556433466d77504e2f55507a627a6a783944453034654e35583546666f2b4b5a646c5a353539666859374c467a6550366e48574f663161416f2b512f32524a396872665a4d52586846617851553370703053695a70504b6a70304e63313877553535787a4c6f373876574d3445344d53776f3742392f4358387643762f77426e2b62334232395a726a62317945646c54614b327637513950474d59366b30665950696b2f47766969573239792b547a6a376f56723439672f6f6a506972484e506f38616665474c6d542f48796358547a2b3057526c2b6a5976345361326f754a577a4f6f59444a782b496d6d786e5841544b5364375448324b5051665237575941555847637258316a6d47564651395737353557304b4b6971634f726e485047637a492b38347234653939362b633970523363525a57583633657132424e46443478352f35464e424c4f53686a50543676484561792b566145704f6a3679325433444b78592f70444574635a4c2f3549326631534e4f766651586c34372b6466354d5a4761535438324c51736f524a444e77344a555549374a513664434d366e465a4f794e633661717665703365495364482f5846517462386c4a306450762b34472b532f6d462b554734665861507176767775376370663173646a6358356c732f6c425050476d4f546c4446676c792b6d6833546e567a2f614a4350732f7058543073384b794e646174616e794856357062577a5979383670336142584f585653706e4f4438672f654c396357585a524666434c6e2f572b483375424a5547584c597877696e7239426b7274374f65344c334a355136646a526c5379564a6a796a35355136694a66526437687159522b3468555a572b366c692b657a39527965663244746f43746f534970554b724b4c3356564f766e69375831492f437849396c752b53503841375535476f572f4a785038413176594175596c586167526d7a4a4266484f4470716576374e50734b64616d544d4b676935474563764766484f75584d5a3770544d5a765958503137524e5a61616e634f322f384161692f496d4c776b7655503054753831743850322f49646e787a797a7866553936687068317866556a527047725630503148766378585844543158546130622b7643686f4c635a637674464d37627a58654f6d506c6c2f67644c645a4e2b457a7a44794f712b50556f32714846766133636f6e7a6762655861747979774e4b6e645844454a4331736338394f7033555652384c6a6468472f757a362b59316d39547647615478664c764a7471755a475634626e61462f6a336a32645a5a7a52744358467563575a31614e42447350784e354c5758446c4932755465644c767174616c53744e30627071504e37732b51572b5365576247395153573161326c7a793934365663386f7650513031364c30474a664b6f566e59533247585239332b6666734478496c384862455245592f375155384e384674332b426651362b664644732f7a6635333057744a4f6b4d76594a6c7053425546374845776852333369514a2f30742b47672b784e7364324c4459544e456b2b316f556f526e4c7a62464c517663654d542f65704f63724f356c7a5a494e6c585554706538647a3636675032505749492f514651523364746d484f37796d5657654572766144714841786152354156636d54444c3272697449573537466b6275734676457a664d526531782f41454a386f30394372534350787a5162477a456e526b73367436384f6c6b6c39424174724a4a4b4744524f53566b58476345614150324753686e354a395549742f316462692b35303757733770694b48395574794a6f71667138434d363630694b3768314f3963484f384254696a62305439727668545047732b59614e755966754b356175507a6e46396a352b4c797659364c326f2b56435371583269786156554e2b56717a374e3879657a7348717572726e626e733859486f342f74522b6f39336a333475654f2f38416c43423868774c50564c7944497936746a6a663433786657474747705347614331396c4b57723638706c39326b4449766153412f30447848483752584f7079394e6f374e65592b6d575235726a5a666e666972764b4d7a6278396a6a343944306d725050737a6647627039474c744d6d48436c3265745049644e66557a464f5448485638694b5a70707148487a5261617a6a482b6f52366664395531654e5376795079413863387964685a646c476452356c6738394d61564e3657544f47614a53597471553257517970704a3074517a7362747649724b55652b575a45567a7870746a2b596b666a32522b565872425453763158387338487976535752554f544a6d65425163314e6679577348786978766b33774f66486a6b624b76306444554659464b546b6d563172654a2f70507536646d764d4d504f76422f45504535744b697a794e7535446b53586f666f553530454f314c6d423235466c5265515865515356615334346459706b6d3255356f7a3868424c484f427a5059693032365245594841482b35722b61754c715a7a505176306b33376c767637572f7a6a73722b36736d5a6c586f2b2f6959755273716e37776b6c48395642385a474974435a4a6e7a332f77445a2f7273304e4b306339754f427763664a4d686961383469544336626e5870516a6c6a4d2f6a72714979673143353335525776346363653844336439686837564733343072362f342f58386846357a614861464736637549535475384e7257567257525132556b674f474975537151695950375550662f697239686638385051536931746c4938364c70446f706562437347736b3276593659555752552f567146305571325a4c42352f77416d4c666552384b6b6851523531322f5564682f3756574e54345868657466717a4273686a614767437644504461724e5a4135552f4246625857486d76636c4f6c6d3930724a354738616d6c557778552f756178667a66427a65307a6d314b7a31485172314638732f38757934446938743266462f55582b475273347830376c6576507031655077374457597574714a4a4c4e59756b52477053326774303043705a36777062373563596a4765504b4e59636e3830504e76412f502f4753395450556d7a77716651757a615431664a4f36562f677537546c4e6c67626e5362634f424750384148766c7a326349374754476c4f395744574b46667930333931466f3561376f47335071542b566e6f35363334324e6f657558726c365a2b50655052654f2f59723150533175523276555649533163707570306b31574d4a57687365317976342b2b784e464b5a4d304b35702f66334f4e4f314f785464486d4f4a483574666b5436466572336e76695266696e346e3535366635766a41555957333537354635505833794c7a36746a666e6975304d714a6931354253575861786d777a2b79504c4f47427450672f72713071616c592f616377322f6436786233704236455a4769666d666b392f6c393048696b2f68666b6358717058627a756a666a356437676544714c705634383565544c7354786933574964533446752b7051303573397357764d6266734e6138377a7a797a616837354a354c7537586c766c2b355a4179585431764a3735485a612b2f7943494d645a46516d726931735459663745314e704b7746483961755a564e4e35694a6a6248435230592f4762384250796f2f4c6131586c324834707235754578764d5a3965314a53455159696337356d5238646f5861647565623070722b312b33505a3857614375386b64536b5378314e625430347876487059582f414774446b2f4653483056727a4d724e645448486f2b53624d696c5a576a4c635762475063694b566d6658426f457a55584b35564b694d584838546663683377327a6350762f326d3865576638702f783239625078437571777655764779504d2f5432786c4d304e4e5764322f69583270484e73373979435874475778456155586932635a714f7977646f5654554150706e37394f394e54733874687a7139516652544730796d3376485835766b4e2b6e445631484f567857704a616c4c66484f2f5475705348386d684b62425758484479615a4d3834752b557843375774356e68346a533379444337695561474a5346614e474e55666578756a54596d566c6d6b78705633476c61754f59355a4a70357830383570545359422b2b7a38423230544e70694a6e4d53492f37366d33696c6e4a2f6a366e4f534d3658756f5179536d623965305130754e4873706b7a7248644532383934657a676b386a4d353462505858313967675a4b5850313745614d5158304539516e37337956795450396e574d6351724356796c5272397038483963454f7451344f2f7743484e414b6e6153666952776c6c4e38362b4c593135505279516d453158485a334a534e79526d634a6c7a6e2f75435a7673397675507041386d585a30656c30314c75347a744256503431494b486e4f6534766b44334c6455705030326530515a3741547867427a34444a6d64397631446e3737526f573953307261366d596b394362347965523052755943314c5a33335270584d6c6e463862507858584e4d584c49772b6437767a4434585554527a714e38372b4e5a4b465359563272704357566e783278676b316e797958724a35576f6f4554455767336e2f77434948483750316b58423474356e7a786c4e6e5a6b7a36616d53426d4f36396c59724e5836733556624d32576f325a36794b4f66686335784c7a57464c4157346b4f47724d64322f375a3370546b2b726d68355635623545435a4d72476c5a34763462342b323657586d35724e654c394b5855793664425a4d58784254725a396268794a5437556d5877444c7a2b756258764e6545647739425072482b4233705a3675656d3534316e6a57487a53504968504c386b4c4a7669707161314a51616251304b5572714763524b4f6774626e49356f335a74636175705759664a7956314c566e505565626231772f44337a72386142303774374a3868386a386677706e4c326256535a65446f654f7732624e48384a713575666f632b396f43352b746d324f544e796a32545a55792f5a326e71556c3255314b336a624853527a5a39525056445131666f654a373274733647486a307a5a2f6a666b36426d6e3156566f2b7a324332504d302f6e585038552b673871434567617336614b674d666d2b51746f7245544d774e66365746446645486261587431567851394f626b74733361577563396c4d31382f58712b76785a6577366b4570786c6e7539342f3547593242715374743849614649365956784d556130614b5979706d334c64502f414e506f4e6b2b61425a397966745a7073737145556d6c314a4344576a5051344a4c35462b5948355859736c326a542b525872547076334d6376454c36582b5836357a5834544a68375a6836376258504c51563879357947642f783835314a74366c67434141727061633873366359676132654e62336b6d5a354e6c655763345758666c374f56767a616335474e306d764c72447135646e5254514a49647a52456d4c364b2f6348364d774566386a4853305246635a48394b663841467638414a667862312f384152583077395850445837476c42356c34316c7a3077356e5736643065374433597a61386a674a6f3967736e3167326c5072736f4549585a70396d53644e456c422b4c71566e54746173396169387176794f64366574566e65512b456562615930502b542b5378493837794b55384765664e6c4a4c3035316954485036577874554c2b56646e6166712f774332666f4c4c3230325450532b4a41587a7238672f515066384148495a75656179354e6e6c425a7a6c7873306273585277553974576847486f354e2b65483036446f54387a6c7363442b57663768496e4e4566365254552f4432514838503868384439504865514a386554666a366574477a5638697631386532625230593564464d6d596258494a6f357646757539347144504250463654677a3231557a714f695a34357a78484b442b37582b62666a2f6f52364336486b33624d74336d2f71446e747776545449354e4975336375453465374c39654b57427162734f5a31464c364f75724e51756c43656267303538465039622b7a365674532b333461396f6543756a54314c4b4b3771624b58305755555632764a686535394662506b6f657a6e50312f6b624f2f767066726e2f50502b502f6f6631374749786a4841536a50306d36452f5374353339693879593657564c6d3064634b593651636a67382f7837473559634d44535a64594143662f3043437378694d316a694454364b495435387179466779764e375372425768326972334c4167745a376945535736487244354f704964673976362f774166654d56357337754f416b5a387072306258386355394d62772b5530756e37596874524d4d31576a516c61532b52302f37466e764433474b666a4d774c336144662f77424e6637586635362b726e343379666b2f36542f6a76356e3578364c33364e655642722b4e426d36486b46552b62424c625a747a654c4c6c2b2f506739464c4f723056712b76374b5738582b334a4d4435726530614e6454336439546259615665616543656f58686d6a334d39527646664d2f42745a6b42587279764b76486450786e554e6b77736d7343615079424d31535749646173654c41574d4566384441516f42583961784e656c59334472542f614c2f4c6238632f7861387238767339554e5550482f4e504a697a343065573135395768673532664a545254546b307035374549792b4d34544f324e486c436a44347548574a706d5a7a2b30365639546274374544303031657466682f725a34355a6f654b5835336b4f4e71654e614e614e6e4a7178576c5a6d547966547279714c7a2b4131324174374f6455734b4e4a494f426b646a2b6e4a6d54634779314a3570326a552f7844797537786a64677764526d6d556b53664b797a5049615366704132566c6363556d584147666d6d6a3272792f34316b636d626f396f472f486c4f7454426534663630784f4d39773368394f2f55764d33357045374f6b4a58624d717339374e4254354a584e79664b4a38504f524243776d44484c4d7479584161575632676d6f41656c6649714978786d6b783034692f79316e376b484970423150354d62786a543378694e544a732f6d6d36717744564c4f78415938766635485042677573553578596b333070714446524a6f422f714478336d6e706e357836652b572b5079655a35744870763578427079324f7971383754566d356d6c56703031516d396336584259795679326b4a646c50504e69314d4e4d5a706d7559745759356549384c6e6a726e6f32446b3652525a7964615846734b655761495665367a51784a797a626c69564572462b507870396f38704d356d6531582b79674f522f313634742f4d59476b6d6959672b696f3538306f6265413175384878746a484e4f7543646665367a6d6a2f436843594c2b564b706a4937492b4748464266586a71354549716d3862636235766271494e59507031354b5935494d2b5769726243624c565176343566355241714e69676e5363797750676e49304d4a7a6d633952736b6f6732426c30394c512b7a4c4a4e4b64486b44324b56617a5334704b46746f5262432b2f506c484f6a7a36486a4d59652f6d716c774839632f694f7352455277675777683864657069596f6e4563764b657454617a37724b593554613462506d71494746516c70554373585663396933634677636f476d5a7a61666e2b3332424b3358386b6c6c6234394e72353136655378573255327a315750544d6d564c37305549672b5150746a4f7958334c2b7150734e3347314d483556693264746576634a33507673394e3474505877614b354e4266627664654968593834495a535a324e5362716a555643306b3569315273393652704130676d626c595555694a745045492b6b44342f473036666c57785964642b76533756647056796c514e53595358617636566b4879305a7677526c4f494d354f7a3649374146373069314e6a5a744f5a694937684d502f5066554431493867563439343156583444344f694d562b513342434752525934693270395436396c4549732f77422b586e6a3334567453632f79674b66656b792f56635672475a35724459487754777a77535478432f776645385656795463682b625274624b67364e6131637a38786e37644b7a327a334f5a51565053344c756f727a5647516577484e70695a367a4931787870462b50316556654a79444c3165666f555361376435314232486e3063755838583070495249525036306f764945682b2b2f42315852422f58636d5a7a4d794f7433396c4c6e4c505633317758724a7a6444755a3439674e6d566f65504458534c6957553954754f4b4e496a2f707a792f52703634786f316544772b67453944735061757a54614e4c76793373773876387a7658504e4f4b447872426b73745a50426e564b43424953544f2b4b6c705a745476342b647159382b70414a45775334346141574d2f36372f576d6e48374b736958612f77434a2f7237543648336573742f70382f48384e3066475035717a79442b55356d585a576255724c2b4f6a34305654386f6f4f566558552f692b4a57504a69542f3841544c477a663148764b786262757861423147395866512f3044663841323254383458364f35452f6b622f433866795a576f45446c3350384149617552746775666f7831664c4b36747a42703730514c3971372f706e635073466e5057392f66524734635363724c322f506447444777734f6a7976795a58732b337a47705a74353866797935556c45476f59776c316b4c7871575a746576336e546c4c3666447255524231544d52475a3643384d50786e7944303178724e4c3147394d504e636a4d68306c354b4e6e54386673787335457171492b77717a484c2b52452b5339633258533479654d356838396e3759514b642f565a6e645043324a45676d324d4454797662692b476d4852676d6e4a374d495a7347796654636d4c75304a3572416f6259386f633536474c366b42534533464a4f63512b77327a2b4f66583146443675766b6156765a3370766961526348526d62693178376432684b4c6d32794b2f6d66662f45357633597962583837766c594e672f4e372b705535316f6a45524858414f52656b6e4d365a666b78376d6a6c704745626461586932794b7176706b7a35416b547171646f464b78304b31756358615163482f414e6b7639546d4d416f6930544f49456d78342b64725a426e374b742f55384e79383351343461587a365369564e7053304f706b6d317563467a632b656342476e6e2b6638622b2f61504b46682f54682f72466a3758346c2b74506a6e7074443638377667634b76445a6371485176386876336330693063326e554c524b36644333504e4d2f4b6b6a54555537774633666561657a616e31506972377973326d6b573568554d3367756475785a666c433530785a4d304e7279356f554c2f6b74445270375553382f51792b4d596b744a624966656f706c4d396870573150316e4f5450666650474978314531384b723843624e355a6d6265625635432f556e3035384f74654b794a4557316b2b33325649516e565776617a654c4a584b426231786a646d7163734748596b4b3474752b45557864485a5465796256795a6f30666170356e636d6768553038716e327270626571696357756f6f6a6a6f5539365773696a2b597a6d637843685346684652784f2b57614e5069586a5838723267616247352f5551586d2f6153754b79362f476b7a686e667978335a624f74707254777a4e787547567a766d634d435a78786b584a355a364d2b622b453465627036666a7a554e70586b57314d637a5537526d736759547a516c4767617064355a4651766f726a465a77726d436b433630506f3231693054304773506e4e572f6675667965746f753867705a675354736f3741695454445934697936686b53685a3162484d7a3874665a326951706f51633158432b32534b6a74586c786a75414a435a4e444b65686c313264527a2b4d626c62732b64646b664a6f7a6e726252364e4f653672714531667a4978676c7a5162387a416d4436646c4f654c6743785950486b7966794863696c506c476872616a4d75327a724234754e345a69363876744a6f644d6d785a526b5842597876422b4a316154756146496f73434d656546444369754479484877736c5632706e64377a51715644644b69544871376f304f716d636f382b6a6b4a45776633474c7a64593262714f5150424e30786e4d5936696b395054696d7a656266487932524f746976736c686e6d304f7836736d52526b63746a4257535a464b3246304e6c456c395a304f6f7355316632474d46314e39767735387764385538596a6b716b6f32314e78714c395758554f6d5238334e5479504763676b4c582b70475a37676c4c4977624c52506e55704f647a4b65445238796e5057763352496d31337078342f704b7330597649472f756154527775356a332f7871566171516c4b724c79374a6c69754f716165574e30557a766b645557596e342f684c397a6a574c576a6830774e6a6651742b667065632b6d6b533070462f6a586c654737546d3972744b4a5270794c496f4c585636587a76324c6f394f50556b702b6b2f4b356175794e76624b5072556f436d703074382f774252364e6642547962595a75746e6d55326b6f6532776b77732b464f6256466c346a4d75514e4261316c37437835322b356e4f39634a6c3152534f41676d3437357a48674c4256356f7651646e6f5657714b7253727a694949365a4e79755a615146537339726d6c395435686c4a62663338706644396e6866485544644a306441767a597531636476495336796b306d3569506b57696c6b6c445579796d78734661366f396f574354785975626a32683850734e566b2f414142534b676e35647532774661654d6f366d79554c2b32754d745644744f5071796c6f6b5638792f65747a6d5764457955394a544230327463514a62657a746e7277324b686c676e663543536675464d4778785475356e56304654614b79366d647630346a58525178514b516e357850342b51505343785a635463395833737036627178544d69505439366c547a484c6b304e6f59466863464b65326a6973397271456d6a36432b735972356c702f6f4565344d6d4c423872482f63364a61373154497058483350304d35646a75426c6d4c75736753412f5663482f4176414573616b6e4542542f3041674d334237736c55792f5156457a397751534d327435636f57444a636b736f6949756b6b65556157616c594c34507a41594a7342526c4b446e48486b434673744f6935615a48496e42374e45314b46652b6e49707030522b77654769524c6a48595a544444724e4d65546577322b3262697069634370774a4a77516e64625258644970336448345a3966516e4f4c3558433458746d304e41622f694a784c2b5a626b4b53304b6b706c396774792b386b2f6f4258614d5047307875787552327a76624a61372b4e4452725a56322b746a714b594632302b777442745643564961716c5965303174427677754c32544f65384537743379436c4b4a4d7a4a6b694e462b666c356a584a47506a6a54567a7433324e44704b36536c37452b6833696b6335397372434267302f384131614d643469396e6a766b6f4e47625132625430616871504a73664a6e3875304c6d68474773762b4b4b4668616246353861302f41346d682b766748736f4a49322f31416e307147686e357a4a2b71354b724e6c7a326d4d6c476c445653726d6250555859306a47737156512b31365638616653444b6437454b6d426449426e48466d347373784a324939534a33566b427738716a62646d6730724c6b516f3651386e54313146533265306736354b594f724e7a6a43662b674b55684f334b5a54644a446c3542544e795552417954677773513931656f484c616b393550636638626e67745a2b38754e544d49474641663967472f516c6f62314d4d49616c6a364f3562464d71697a454f70766a547055313544464d344e45377447694e3375536775653241576748746f4b6741506a67367a35416570306d70453736696c4d4b5475545979466332746431674a3063632b2f72684d6f3730693731775461353835386f50476c675358443849306d5755467064355a564f6f7770537843754c6d71724e4e644b6d6a6b5268774b65502b547650744e2b62716e44774643494d2f6f4959446b6c374a59484b6443637a576973364d3258505a4533374851354c71756c6b2b76454f6c5651414c4c356a703537362b4b3462506c4d462b383149754f524a773150746f65366f3535614c4b5a32466f516e374252787a5866593478686b6f31384a526b486663615038416161676a6155674b5934644763714b666b6f516a33512f582b4633474a736f6e7776304b4f5830486c36564432684b74762b354b314a34512b7858394157596d4965563859524c75306e464b6f564a47346162423342375037535841515756634b6e2f53444f716e63772f616b443558384d34506e7a44526a4b46325432486851795472424f525079614151534b7a543367752f627161452b344254565179644a70435a334b464a6f4177624b53754f5662617339495635547a61494b4d74475a394362427a7834352b515047533054304d2b58676f4249634a61666943737852513046314c6f6e3432764e6c76697a49444b5a4e467a65515464355065793232766f554a5a7a32735a7055445630424950727a416c4a636d446f2f3043664e50572f5266555575424563733950454d2b32334e6f5075684b6b32764c4d5a7a6b2f377a3333644e44423666767a556a37546f34387a426476795a6833322f70756f68616557475561584f72634e494e666b6b6c6f696b462b79577a3546424f487a684e396869566d527253344143314962385355625979396f66485133537a6a495755706e736f5a476b2b75663066744d544653304f73597378435a763841684e49617a4542467430484831476856447a6d524f3751636b6e5a37333844577837596b353950616e474c574f477269682f51706d6f6d2b734a644a63774e444a327754443673395179727861734a4e47673950436132656d34593634584c71797749662b49782b41326d7a3556526b78632f436355726756794c515052716c30575059674d333955547866702f49765a7348376c7875524b4c2f756478367176315572326e384e4b56482f414f2f6e474166565477346c366e6547584c67564a3363757a31305474543172486a52306c6b4b7873644a5237564d6173464552744e7a67503947495944595879496d2b4e554b737469566f414857796b685a584f6a616831656349497359636179483557702b59325267762f6455414b55456b5a3351485a68643045773970487149716a435369395a744b504c656f3436714f414d50463266594c356d382b52306168635648752b47774b6c387a70577a524358332f72576e417942516e6f5439354662323866756445795032345054464e476878445137372f614a324d5975464d49634c5037713875394e366b656a52616a3855766a7a504b37634a2b6469553537445550742b4d6e55712f30723069634f306c4a64476c4c50753171702f536250722f31312b7a3432333863446b6435783850516a374a684e77376c333563764753646d6b3273356b5464483432346459616b31627058797064316449484e4d77595063626e51634e635854703934674f566c77775271304c71614f57524d374a304873797a75374459457659396e4e4f61682f45367866796c37706c4e36326c78756567766b4a6b6247365a69656b354250504c43444c715a56374c394e714b4e684674423679536d6e58565a646e564b614c456a63492f2b4f33632b6d784876612b4d6154503649427771383237386f6c3239756473686f6f333762525a6f61576139396b6e584e4e6f5454354b35714d536f6f5a526463364f7a504b756270636e41616669656853693468565972333173417363693149356652794f56524e7a644f2b4a316453564c52565157724a6b30685350757a6443763452426e46735170772b4b724a777353434a503630426153507832755379726932546e70646e7370374b6f74444466426d3464484568467a6a6e6a5a4b6c79617053686d7452537459484343754839583331352f4c37696264303266784473594e4361484e682b462f4d70666b5a3035367a4746303364664b355a6e73594b796e304d7874366632564153514437464c3452706b7069633773634d3546714e5357574d764853642f6a377937496a366f5238665a6f676b68566f55307946643266516574304c665950365438626f314764536c4c2b4f674e3475746a59694a386d2b59726d59616c31784a676c59416679644c4a36786e62504e5a3373736136684a78725a794e4b6e5a526c33334d6b41454f5055574e34446f65493831645a2f5a4d725437547238697852423870505947684539374b4571304844794f6a6d6f6566777255776e30314151553871393744644535784f4f6f734c627430744448373438306e356c316c47624e524a48625639614c694f59364b47324859416f6a5330747a326754557a4a6b6238504f6650396e6f4c694b346d5a7a776b57706e732f384148492b5365506553693631597036776139654c573862707066594d6b5a5731766c57336164384b395a4b774d6b674a2f4c57697733706343733837706a64494a79655768344a5a4c77305030716c535a45576a56524f6f48317a4b6d7932476f6c382b766f73576c61525a4a316a7834736f48574c6451326c4c706f69737a30462b59666c39586d476673616e6975692f5272315857635a4852774556434f7a525633716d54366f4b664f6e75576e4842442b6e5344534e514148736d443251472f6d2b78797444495331304f66704b5645667739793530487950675965674f7a48646f5074584f7a50585972354f4b6b4952443368594a754d334257304d645748694e306461624b5a58727146386353394f6b6e687538475835364e634c613145346d444c2b75314279643148636f685935676d33357034326e7a6b644d5037596d6d757972313030567a6132565452626b57374d675559775a76445a49484d38705730726e6136556f61506c523268504f4c4177345044656450767731367a696b6549325277665362306d3941504f76566e31353954664a4d524739366b2b6f6b5830646a79675a57532b4b795646506b53353264714735665a30766e712b44712b4d523867676f424a334776662f566431727857746668714e4576376b666f5a356d7a796c5072386e6430664a7653797678684f426f356b6d53313465485339444c653279485077395a62437737315a4f47645077456b4646595a74376e66722b74644b3059393338584162452b6964334b2f376268306f7444574950544c792f585264536c6a30307a6e44705649302b32724957537772752f6a6736614b6d7341773973646166306e2b71582f77412b6658654876343462336933356266695a343936506553373577655978654b32654b6558777570574e4b6d7a366c6b63742b4f30794a6a6f3131773566535a77434276456a386f6e77514d6d7045366570756a736a5872432f746c655734764935504f50585877716277534b2b576a6c2b4e4b364854626c6d712b576671313672487378396834304a6d613251766359302b307033703671463134396f693353764d4f6766714a742b42382f48587950786e772f794c41736952346970486a6a6c362f61433063334a6f7a2f5a624646314c5655566864596b7566362f2f706b44493365377673484775642b36656731773941765066477652767a3163577779504f78764d6b7a536175765650584b67664a4d334b684366794a696e78386e2b6b3678596f71714f3674595632794535794774396a4c33696252694f477762692b6f6e6b666766342b656e587152366a636d7a38326a7944524b7570776141796e356635533253484d7a45706f7459706a714866517a56674841492f625a536c516b414a423264596d3831722b41636d2b356e6a6d703472703978352f75583359656a6235452f6a6e4c3657767546376458514e4e7567456b2b61746d57505a3341393263364d446132646e3377582f58546d59744844674a74354636392b4a3676346e6836453034486c2f504f663841786246794e2f7148357a6376745962556270446254545a38384e44366e4a55726a703171645438303959456c6631763672464a6a55692f77676a2b4e336d4a65694776354a73772b6d506b47376e2b55514d6979652b50457438376267564b6f39572f5830467967416e43575830753066465038314a554961694d4c4b7636693865383462687162732b45596c766c33715835586f654f36554d336e586c4772713648696865535336656135314c3463367a50342b53466765305076666f47673470766d53325132742b654d6c61524d347248345274396f65512b70322f364f2b50656a64486a3254692b422b50357558674d38726271524d3878436d4747576b46665a744a6b37727561556f6950487a54425342694c485569376f466e4d5572616266454b463266537167496b356d54342f48626f54305a754e66534b704a366b6c32574850486f524f7a545176502b534f4778465446676a37307a6c394d32436e3572784d54306b575046343371344f496357612f4538627a6163784e336b37614d754a64556a454b686b4b5779334a792b67584b376b4c4b732f7744686b38314c316636325570455554453942516e714d70576a68535a7837655a354a35536d746d6c466b356648543179612b7673373146703174755930432b4e6c4f736c6a2f41495271635566366b61466c4a6d63675a3456346c3552786e6b7a4a3943744f5641467967577851335531723059583657596779756e5262594b503542786a38535852396e6d4872416377473067463835667058732b51355444333847646d5a516335464b5463756f6d726f3031306141793576757046633536302b78397135726b2f434d6171533538546c7a6a586445394f4d687a563478347970466238766b55584571434c6b75726a6872393065394c34466678304763544f61535a62436a486a6771506c452b722b76686f62502f6e594d747a587a3070376f776e6446576e44464731343541625236585655325356364c567856424c664b36574f57687173757348552f54614a4f39375575454e6b767856306f377645664e4b324d36532b2b53394361544d5671746a645232436655577058324675574f6776507239314d39762b6e6a73716e7071503366624450553768633869724c4b346b3264626e726d7057746e572f45414e6f314a334b6b644a7764772f7231537047774f4531545575646d6b564b614c4f2f77436e4d556e2b574e52682b4c66727654784b6246723947504d716c526f656258493756675566566e636562473367755a4837703156683977334865414334306e375858302b3358356a2b5372734b6574674970704368713647426f5037524e4f7372576465536a356c70374f746151646334415a523266745a5573454571373758663137394f314137692f68644c356d6e61394e764566426d62506a76504f7472775441313134764e50782f586569336a504973637362556d4a5452476155707863505169684962796e59596e30334c357458474c54504e46523665667a49385579665450385a6654486569433877386338683849386f2b61447077746751655a554e4d75786d6446737a4b4a6c2b51554c597a6c69652f446563365867786444716548546e646531664839527a722f4558304d742f4a6a7a727948317239664e445338617a5046394a6666427648756c763479636a4e4343363750305653392b457454556e47694a556455357a3055326e396869317662795a3232706633636261514f582f414a7836372b5a2b6a6e35334e38356756343335425a34395256694267657265686c352f692b333466744a46664d7a583861314d7467357453496146614a6648523862446432774b6954394179336973573073522f744675656636483478666c4b70577036582f6a35346e36482f6b6a347276783775446f34666c654e752b6c50714444343146386570676369676e4b614f50512f7743384577676b526664454c50696f48324844577333302b316264702f37687a4c3961664e664c7657667a44783330317a534c7937795865704473486933684f64797a54376f62465656476e4e66342b6e4b56394f67644433477357433171512b635350324f644d33617352574a7432616a72622f62682f73462b7076716c646765732f77435a717649665433303170727350782f306f6677552b6f586c6a346c452f6d68714832672b2b4e344c52544d342b744662727a644e544d464b615368546872653130707936664e62385139645869666a487052364e656e2f6a7670703654654d2b502b6d76686d4d32794c4a786344755438484a315a733742727572456556616a4f4647756c674e2f52706473516f645359383750337a356d31726272573357464a65596570426c326c654c38636c6e6a2b737761554d476253516d3139642f48616375704238716d4547575876645375455a75557349654d724e69676663633376794d39616138574c79446530374e334f6d586e62572f715475666f7770715a6b4f6e2f6a4754367235326f797169646c353365495450796466597942564d6e3332786a7254547a776d4f4d6a7864666d7a2b514e48726c3670504758516e5077767867475a2b444b726f4d526462596756374731443273525033503149624f6b336951353368694335312f354a4430394b6d3276446a62312f63616a4737324b47795a737336715239712b495968433275663841484b6f693531784450564f52543850345250327244336e3077634168702b54372f634c7351766e4a6d536643644641664937694a533935314a75396f6a373055632b524970642b757659616a373136544869505937362b675362505431724f6336417673435a6c4c6b393577436255314d54554f61524479643576643834394e6e2f304b545566364c6e732f6f4872334d474b717a69657a714356695248765364563971767362454e6b686243706371516f4a626948686e377963356e7a4f6152482f5766377a3134443732744c313273366276624d637652447242366b366b38542b717549585a37484c5451576548472f6f2b696b4444334f4167442b74416e7a6e6544526f57764e6653673449736563314b682b4f3057394c6a307659612b6c2f2b433935337067305066377a2f414d772f724f6677562b6f536d6f67567745574a364d3636434e6449556a4e382f5743495474692b796b65453549786948473146787954704c327245684c6776326e724156664d51736f51433548645132755774314936556166636252656261426f2f52664753575648785a732b4954397846333965303674417a486f61664b4c614e4264465a4e57784658446d525438664b716e6468305772594a2f473255535072326d6f4f665a414465776741503642504f6e57466a5a6c6f4b5a67386776663841505563424351784c595452752b6e7a6b4b65453853373376732f38417038424d6a643850737266737944633342584e4d5364454b6d49346b2b4a426f495649636c724f665869645a4f585a5354514b544a6f6d37394b7341322b3333652f3841724f2f616b656d482b7850364166384168754e35702b54506b4f49344e50794d5976547a30327a77375832667565727444396a7958557648397147556443635a70434a7362715777476e6a6d4c705679626a3972766d646c652f6a59656a37782f7742546b2b504f7746306e624a34766f717a493572356a3063397553353649787a355a39657a504c3359372f7743537a58745666636156465343685a326451726477347a77786b55372b522f7743594d586f58345635507137315766526e34336a656e703632666e6e70357a5a4d7479335359576a3351315a754f2b4e6c5672714f647071377a3574796a3745366f33485a54656d6e4e35784138734872782f654b3964505576314c66354c34314a6751656c6b703233776542334b677a347431394d444d71502b64726847526c566e4d73362f6a4c76784f4d5454494146386a522f727670374e534b346d656361794e2f75502f6b327249386f3851384b792f5458302b384b31614a6e332b4c5a486857647235586a6d34455a597331586a47786179706e6a552f616e543072424658366d717063333364643878316165343038356e4e72437636507a302f4c6e52376f62756a367137375765513879546b724f48492f6a58662b4d70686a7a36314538524c4e5a786c437844706c30484d597a706a30323965755a307450684661385254336b5835442f6b4273726633513962765566547937396e4b314e49662f4b396d6a50737554504c5242705678554d364b5369482f4147392b77776e674269416e507a326c32386164496a7331697768766b766b766c506c2b6b76573839386f38703872303359716c4b3867387363322f59304a38794836384d4d64326774316630382b63685566515949386e702f346e6c494335324969496e6b45656e6962517250574b656a4f6d6c7249436d307046794c4f4161725a766b5265772f6871354f6d666e7939596e324b2f584145322f49327941367a49714a4c6a526e79416a336c4f6c4e4654706d63364c75704e4539736179397a68654535435a4e5958364d32697452744a6e546d5a6d656f7550493949664e664a4a5a395366492b7069486b7a766e4d554e637935395565617a37696c2f4d35466c6758316538515837654f583849436f322f5a522f566430524d6365496e2f5054544f38546e587472386274386b68737a584947756e34526854703571675852316c393677643869357a4676414d666b364e5332415a683866564974457a6a50515a35486a33682b6e446235427039384b6a666e564a647078422f495131396f61612b7879353654663336386f695031364f6e51505a7a2f7a4355584e4654596d5a345245635a4644743859385a3874306e756a6e6232683672584a683454707076737a544c713970423966346b6b78662b6f65434941662b526b582f414c476631654a6d4f6b6744712b6e4b6b4c3432636d4a416c4e716a2b356e396a48716934736c6b74713650682f3457416a372f414e6c33334a483967596436515476743469412f524644464e576c5949535457462f72506c4b7963534f2b3835782f5853634a45504f456666595876352f6e3753587a2b72653838682b716b4434725255524c486e4450712b2b3050593376435941454b68352b79363769312f6f2b2f35463751455341564231377a7945577034557a75383533677345306b61656c2b7935336e466949382b4a6e744c6f645750663258662f61662f422f2f41465862784f597946505a33356948676634713933364c2f41474d39765237316e4f635033653453365038413944692f6349662f4145506166532f584a423658704f475132685230567235304b4234424b45754954386a2b416638417a523766642b2f30504f63344966384150754168352f5166476730706b705678444339347a4c2b5076445a3042555242332f5a38585672346b6c382f5836446e2b626a39784b61516630474235695155524d4176615138652f77434c6e755741393651745558506d36424677582f3448336e75372f695a666f50324839563331385132564175557573563754513372752f4334786f5774795249424943436632735752554c4d6563442f366a6f6b664345666333313852494257656d507659334e476b79615945396b5431664854335151545454566553792f774274676e7a7678697267786c386e74636c514e72325050495a3859523862513278745653754c6450384154373172582f483132632b694472795563387255704670394654444d6a537270415174397a386e332b34515354572f70796e3367715071536764316c526b4d7a4e4e50477a794a367a7243713677666c555051634a71635a74567779392f3841576757396a625831676f536e46594c6f2b4a4e6755506f367557684c6d2b385031324e5050723238364951734166736b706f667071756e6e325050494839554643514264436e417348784f6b6e6c6447347571426e4d2f746e552b7a76744e5a4531333736336f385361674c763655674e41706478516e6e4c61704576774a486e7a646b706b50376132724e335366454c4345526a482f4839434a414c7664784376596e6e395672325947346634412b5a572b49666b72345555566c6b48386d466547626f5671586f6b68496663536e676c455232554e76785a524141494776354d63494b49616d635048576a4e4c543339423643312b64467962637778302b6c4a6b7570706c646e43784330616656354b712f7172763245442f35425834366b70565a6257303179334f566f6e384c562f5935783766697a35694132656f79382f54634634364d764d765131645478737a3246762b30335061326657554a6256374f547a76584467697458655447504c7a5450495a4230777473723441624a35716e527837446d7a677a2b33307850324d2f596f30364c4a68774464713647557168726d2f4c686f737a79346b6d3953553534464b546e4f4a33584b6d4b7845356765614c7a4e4c523875386c53424f3778666b4772316848505049756a714e4269506a30345a50325832445777754d584f6c584457412f70494b4470703771394b2f5839514d755343434a55684c3731702b35516f68614e4b3353396c59775437376c4c343478635476332b2b66416f7a393565376e54434b392b373768475a45354b4c565a51707568376d6d6f476b6e6f482f745a4f556b6b5335576430763252447a67644649724636574c2b4d57642b4a61625a32396368666e467954534d4634724e7a4a576d584f4c4e644b356c725855367059755945732f38416d4b3556384a4a474e4b56416c492b3770364459447871612f4c78614933542f414435694b6f6274636e643752546f63716b2b6543325743466651634b786c5958516377773738793570327938596f35384a6e4d356e76444b423265575876553867747a335a31452f75672f6a6e4d6a514e74633934352f4b596b304a67713756566d714e72702b2f50333943354a4f574c55774f702f344f666a2f414f526a72592f716e355256345a34627365535a65763550364f612f6b6d766b515a586b57333665346f723163637050497141546a314f397574386a3731796754514f68626d6a4d4d50384157477265496a62453776786655644d2f4c7679512f4748306f38306f7552367765436f74563476702b592b552b4c53364b646e786a795066327866686561656e57356e3544715a726f557031484e7a2b7245472f3959566d622b4c48744f455576614f7a78396377347a666c5a364e666964366a2b712f6b486b7634772f6b523653654d65483032593649765433795453703866724c654f45617176496645636f4975356558344b4f6952644d4b3755317a663979306b6f3679594336744f327053754e545474772b4961596563654236487054354a752b426f382f384239587a6e6c7a36433876394e764b4b4e4477352b6672565542794c4470656d55562f73744b4d6d4745357769363870775076735a38743474756962625a723878426646357336586651563032652f6d627a504769616d4d346e794252444f74744d613961583549377531554d595452347767484d4c337a7445772b6e495035396c4762516430625a334e785677586e6f5064327651736f2f683354364576787a463269584f2f5538596a796b506531494b476a67646166394f6f37312f3263767959686738716f2f467652714e71394f7a55386938452f6d62624e4444646f36454355387938325a4470364d39544e613637704a6b4276784c6a3434496c4558546e35666161627336673953474c366a342b304f4275495674507431733672552f585a464e386c624c50797a6f6976555953485176366d37596d533333546e49784e4648736370794b41345152314e5465723550687a35694e435a6665486a5736432f49647843456c45565a505632686a75616d734b354e61336e4a76655a4f6d54317958652b493352694d357878457738693878385539645051447a48302f38414a632f7879377853337858653858386a793965696e497a4e664331387657356b325463716e5a334a6e70715a56515456394d6741314a2b56747675543145545738336a7150356650716a68592b4e366e2b612b4d65504c7a31354f52356c354c6a34796d4f6d36687365583544526e78385a56796448524935302b7a39736d482f77434358745567652f6f5065724d7a57737a3637676d67633554776b576c3659374f68534648595848475043363656566c4e4e576f7165586b38762b38615134382f3850684e375741333463682f52412f46657a304d772f774151505248782f77414f78664e2f504c4a2f54627876757671704857505732645466774a3132335a56626665705a5543375474545250326d754f65786e4b544270637450796458336b3674706e6b463435506c48706f3646536176534e3972702f354c4d766a4c4f314130624d37794473712b4962705a315a4b7564566d7153325a547a714138644c767264656d63334f7150424a2f637873384130507a5839647448306d38573872384538504c617a3079654f622b6565627278616d58456c624b575a2b6a372f723572616e2b3950585547436763414a4d2b685078667261502b5858647a32464f2f69372b5275312b4b6e6d7a2f4146553853386577764b2f494e5446546957352b2f62717a7235342b36684e327741683437524c5145644338394d68635958307a4233514e543338436b4c366c666552736e6c47323850384164372f4b7a4e48466234686d656a2f683763535859516f6f66452f3569797244746e636f38505a683869326156374550632f323955464571772f52384e41726f59302b352f774347302b2f6461506b4b31702f7555666d4b4e5554533873384f69436c4565636c502f7741306670324e7468713363587934574f70302f47434e316b2b786d773934346e475248414366634845436c4d2b3430735a782f752f37515a582f414851667933373271356e714a3466713036666c58664e4c51763841522f306d4a4675314c79694b616d4834734d415a39677171715034307a2b7336324e5a48783145616a4f50385070394d63666e59617a2b752f716835743630656565572b736e6d4633695754357a3557744236383367486a754c3666654e313952476c714f346d5434744b454d365072716f5753687a356749774a76572b2f334d6270534b3169745937503878633370722b59386e705a36655958684f6c2b4c5834302b726666464837473876793331523859334e587a547963504a4254336b586b586b325835516f394c4c6775754a6f386c4f452f6439644c542f414d47664e53326c4e725a6e556d73572f434e7266427637762f725036656543654e2b4765442b6b33707a347834683444346c35486a2b48342f696d687479654f7861586d51644b376356466459314f6a7648506577546e4b493056456b6e4376334e70454b57396d72767a4e7561777554452f766a2b524c487762766c6e342f59657a6765494935745159756235645a316b336d342f79445439554573304d74712f3541584f71426965646d48346f77467071704a446a702f6859357357342b755562472b4d66336d505154794c52546e6552655038416b58706e4e3576646863383537794f5a586a4f6339723135336c6d546c342f6a575877736e50716e49624633536a392b656a4857667a416c38376f3654374e654f4d63323331362b6734396633447658623033396666795238683876394d64664a386738457950486f2f487647484c6a334d654f7269614b426954334f742b4e7633675437444166746d6e72552f4c4f346a4e4a443061564c3070574c646f61436f70596876736c6639674a48764c7476765877667171537a6e763750315a46436c4355725758317572412b70507042375664365857477333516168725455796e676d424a553430393975684f4a7471347a394d54327866776b344f384d6c304f656d626e756f627a324b44327866325350442b5a2f345565434d306a716e6f386838383868725a517975584e426d665273577a646d6a70645653647952757a6441717156436e6b37673648756b62533259504839716e4f746248516468504939664d674536476f752b2b68564d2b686e565a394c6d2f486c744b5a5657326a3663693876355a56335058385877726c766a495a6b7171545a4f664f4b622f48543048394676796d582b532f7037363465427a655365426553355a654d3574773462382f627755587571706b586745574f592b4d36554c7056756d5431737a574a364b3363626d7a70542f5672337454336330747a447735666d352b4e666d4834632f6c463670666a563537636572463444764f62344274645633755a354a3448653669337865687036654f4b6f335579314c363969352b6962386331424749643937505430377871307265767844555a6d6e473242564b6e6330375a57533038615354516c465452716e744d443750776e7363786e776533745a74467341307a47457a512f713477374f564b55707a2b6356527841696b71484a4f35487471716961696d495669324f555a424d322f7062766d6e4d757453516a566f674558335a327a6a387277543172357378442b42656452704f6c313069773538374b46704a4c5a586f3642734c6f6e386f47382b632b7937536e784353592b6e5931584a7064575a4e3157684644384e3767474958794a6c6c30435645544351736c697650367a69353645436d42497a4a61496538615445784f4a45376777565a306150354d65356b6d5a38446f396973577976366f2b51376439644d3064442f356b696a7836503357414a56776739724a766d623742544f5a7a506542657676325634324e456e7879374b385945514e3150576858316d2f53723672744b6c3157556c54484e7a593139576a677359336d6251414f496c4a4e53497a4d514c57507943792f785444715969725770566b57464d66447173676966427755412b36524e417a3155474d70636b594d76457545786d4365467966326344656a2b307636382b50656e6635542b444c3962504938377833784d393275536a5a756239304d43322f526f6e4a6e625a4b4548476e374175506e5347754d456e37794542574831737661496d644f2b7762772f336576376c7668426572644868483438723859334e547872776e75586f6571486a366d515a30323373794f76307a7874477179576c6c55382b6b7775732f61694a64384945584443724d4c4c3262516e5a6d3866396f3834506a4770665a3578426473624e6b565a616b6274485237377370704d667a32646f4770416f71355033556e7852377a6e666d6d4279684279534d314432546a6248694f67336b766b66726e7065473456375777656f33697356797333686365586b504435647358544d5051644b506258617865554471642b486c524730334a42616d4f427135385972544f33736a334a663232665262776e3861767841384a3855394e614e44794454334d3654314639522f482f414373592f47764d32656365514a6a52727a757a4a6f5730354d2f2b7568456b7772532b73385350737a6759376752655672326e55314c545044484557462b61763468656c7635352b6b2f6b6e6f56367a706a6d386332565a32743442366a63423364663074326b783251596d39477832654c412b52326a444e5570726c4a4e743451544a4a4648316d4e5055746f5733312f2f4149682f4d2b2f49483064386f2f486a316f39542f525079756d616e7958307138353869384c303735434230656e2f4236543478736d596b793577574c57737669372b6d72365a4b63436e634e51653153305870573064622b70465239593170634179492b657a6e3634512f726f384c6e373666532f38417166312b6937332b7477717848756e4a54663841466e44535066647765392f5a6d745166746a4f63486e754d6c2f384150652f2f414658362f6f476735594c3652386173577a303072614e5975536f416b344c4b652b31662f7741516c4c4a5a4f44704b5a77542b5946476e684e364438756446302f384172506c68766d4b68546c47676f7031396850744a6b315a414d2f4b4841506564503338364875372b6739702f3044723574444f613554796343566857345a50734d6a2b547242454f4c6232646c524a2f30754a61794d564366735034326b50764a464f573166444832445658587051364f7954735a78574e7031514f463033326631375241767466485355374f4f716b475975434948396b6659733273554258457a546d3178485a564f6f2f694474632f7742664e503469624f2b4a4c3068794a733346444b366f534176692f7742662b412f766f66443144634a6d5a36385150516f596d4a7656612f756c3173364a776448496c5074724c5161317a4a584530474f4d6e564d4266734f6861772f783935634362726a3266575130736432656a61623335697344536d3470482b3133362b3151553569676949474f6a2b395a514b5068375366797a646477442f644a684e65314155637045375171554450725075664d2b6c65594d2f4a4f4b36364c4f4e764b7659326639357445625541382b63636f427059587a64366e745131726c4631434771747930554c49342f384142724b4f4c7359394b5430632b576167776465777668496c6b766a662b7a377a2f77412b4361674e6d395847755a6a7a3478734b62356b50702b74576c48553072467247675038416f725a7a7675426236432b5566685541382f7a446e4a372b6249454d7143324645744a743435712b6c444c43345869726e486c715242504451586544437431424c43666f653450736853302f68563766366d6e61675038414c51793277757669477a4c565a5038417046734e526851683964484a2b5a6b687939346c7752735970612b4a634141464444544f736e64436f484f48374465593770775653665651794c39732f7742586e476d7069697a61383167716349364c4a3247767676537345673333735677474a6e6a326777534a44336d5168733679366d3573686d58306f6a37304a38377267694e78504c55443674532f38754758746a572f324734784c6c2f7a2f6237426831616c44496849473576376d577a514651394254685953595a576641766a34324763375074672f394d4542506e735a2b356d6a6f48476d395131456c485063485436375143655a5875363944302b314d3541514e59783155736f634a33746f417a4a70457a6f69436336642f7278417a704534665a78514c5742676b69537a32634c726d6b3266346a41684237694b3962754d4d77412f59436942505847544e416d6d7552715a51595a3951786741325566665554543673614f2b78524d2f5154394d666a345265343167772f38414c394b366b774b736c616c596b793169562f5a6d73543237394d6a656d2b5a68795433616b354c5a4f3449316b2f346d63392f456d494174335155446755347561652f6f787061302b6b7574745436506d55383666714e5035506b6e2b5767682b3452742f66424c6a55716344695148444548533255522f4c4e33764f394e484873636b6447717271372f634b703431467862584a35624b5963357a6951373150734a6779306d66632b33355241637776552b6e74726d5a376e4134462f746b6b3359427a35684c695a2f3546597145524158543961624f462b2f72454876396e43396a386e332b3477756348564a2f5264464d72696177424b55696d6b4a466c335967696c75344449312f6336546b6b734866446e4d37774667494171746433484152464b6c754d6b31545073364d7631394674414c346d78424c4768514a536666746539624742304645517a4d7359726e3741784f625950736d3363353554684e7958486b3768624d436377667464353943746a6768702b7a566573456b73574c6c512f684d544f435a70784d2b42307a356e7732385a3344325a65686e7042762b47344165416558746a386a306938637139766b6d744946766b566165522b4f6f5a41562f6b7141596e4c5a394d4f706e6b5735376a796d724f594565317a664d74614d356a6c476f76354661394449664e737a4c356b684e4e346c355a347a32755a30484a647a79622f78377954726c5a6b79653952514b6978644a6f6f3753464b2f39435153452f7744696a536b5a697669504d72346a6a354c584d6f7665334b636e514f616858306753452f5a4b4958565875563833785a3630783941484b5966503037327045424c33714c75764d356d4f345457756847555031386b6672663841706931536b79574532752b7a6d70767337544d6f75704c3566744b5a32656b54555a4837302b3942304146414d6235633838745950505566325a6d717a516953622b71516978785045626c57786772357566796c484f6350332f50314a7049484c595662674876314c39454b544d6c38636d4649723055776579585353325976644556465652665458797969452b3941654d4e4555366b3848324341544d596e4752456e614c545970466b7334746f61337146362f6251307a6136372f575a496b55525132425247786652366f4576563833794150764672703257385036413777316b737a4b4e343870494f5771675051584f714f523374716134364b35753370594c2f4148544555376739345666463158762f41476d6f6a5a304b636f326f663861722b4b4764316e51546f5454786b38416c64534264585177692b76775334756c7655723449634979486a6567656d332b31353450686566666754732b4e614d4d2f6b4844383638745165517037323935772f6a524274744b66514a713839643142524f45353838506b5370337a445134564e3833586d5931706d4275372b50483565442b4e586d7176546e3132304d612f302b4c6c6d526c657130612b555477784646464d486a57766d6a3134564d356f61307666384b4f446c426a67444b61484a542f575639506647366e612f434f743270367965674e754b76796a5271384a6434787155513052366c484d52476455616b5a757037622f4142733848686552454e6d3148617a6e6166636d717736552f734a3255487a37625a786a3138787a642f4c442b346836422b423765726b354f31427550664d41727776464e6a6c4f785054726e7455796d30382b7968624e424f6b6e5971564f684b5739477861613571576d357139745051764d6333582b51354f2b7333354d2b726e6e5068586c48715273352f6b58683367615a7271304d334c5179746e597157777063624e6b375852645a444f454f5447303457746d4e6335675a7563735354336f72537357784563773839656c533364304e6a58754d686f3072746d694b49566c56527a764972475375582b71672b3477365a71766c5a317177493570324b42335242552f5879782b6166734333694254364b71386d6957486a6f2f735578356c704e3555623556555044506d5879707852457672474b2f66416133357157644e6b67734e773144547a487757374a7131574251384b7872764375466c4a304d6a6c74536c56446a435659683775584c316b50534d78462f376b6b5a456c31504c3174455269594144704e752f5370654c6f6e7373704a554d794372586f746337327a56524c47645031616d677558724f5575466f67373569427a68643863396a7a79505131346636625a6e694834376544656d2b5264326259623464487636664c455a3064742b745768544d7a55677a3446446135687578324a61315a63644e50473977726451336742785462646539703868622f676d504b475a556a615a7559793953696c746a624a74476566663869397749353966555232745561596f6338575643344a6272755270533665465033712b566d303578586a49693372502b477433356965483365452b6e336b766a655036672b4e65585630556c35424369624c59532b4d7a764a4d78476b75434f7374462b6c7079632b524c334a7565685a7457675676734764505739314f5a37413430657276384162712f4d723059312b703874394a4e3762365878747a482b4c7050796154536c7357357971425a6e704d56774e5376396d5053563745786c534b7a52304b5436362b3061566f6a456a5367554642513957686e305466783131434c6b334b4d562f63673750784f64706f4b64505a312f612f3535397268394255773836482b58372f7262753563433676452f4a2f4b5734755a347a523546377654374d302b746f7837657171676e744e6b365663797767705633483978614656587362576e32394d3744467a4a79667a4b305245352b502b67377466326a7678526d2f4a37316a6b395266562f4733617654483035326e5a2f6a386d357847374474376e37347973376561654837715574684a62464d61354955324f3434676d506f7335782b30616e75363761647177393876705850344e346e34626a35586a6834734d3844744746646e6a4b64534b5a4566473438337364335375365173416853726f63506e566539314d3575373372472b564f637a6e714c6d67324470367775614b59322f5747714f747647714969734a78384e6f614365744f645a4551664b532f304e4b534e5265306a446b446e682b5a5834302b6c5035472b484f3853386b7766444c4e705845462f4c795a2b4f5239686f79724a306a6e376e545a78632f4d6c4c763970766c6f57334e6c64525438614161476d6e65314c5a715041662b574834352b714834642b747531343277726c2b4e7333644e6e6865776d54536c526f3456553378386f586e3575676d694664453558636a447155734655303150774f59547633362b6e657572585055616277312b4165592b6f2f686e2f6b30576c765a336c506b6b2b4a354e436e546b7971715a325335384b68683868305a2b35394c4a736661793144797232413173616d675877664554644f6b57784859485464483972483048386838596476655061586d716d54352b4a574c4d65365531364b624661542f414354615976546450795078324266754a4e4a74366b31346a6e554e634c5549646a2f694c784f4a6a39527a612f505438652f54333861665650782f786a303038673870386f79504950543778727a6c756e35686b357558743034322b4f673557684254445a564f7a4e706a2b49705339687653744b7964384c6b4f5347326a65313638334b4e456b636354317554795a4c2b7370576f3076346e6971436534754d414b714f66476e68735774797a3730505966544d534833394c70427870665757326d4b525073575056716d375366514b686a5071715631532f663833514a4b7948686345414532435269747177566e2f483950554447504d6151305549617574776766612f727463646b316674454a41573961545071572f4c5031374f4d37776741685038413365316646726430534355794b6d497a486143716262454e476c656257564e6b774d34536575705a78354746435753792f77433558516566364d4f3839375436726b52307667476357386c36475858786c6f46796f304d684655777630487943367159776973596c646e376f712f54326d582f5739676644542f38416a703746666e2f6365756e2b3268344e584a3478342b2b63616b4b6e356e367165624f74765162746d6a646e73715553736c766b452f38414c554c6e6459357657382b7a77715a42537a6a685067656437524f5a2b5939476e70697144794351646a556d73666266506e546d7a5874796e5a724e5645325856472f2b4c546d7a7046692f354a68392b784b3533465a6f7049624842524b7a6c41507a37304e385438366235746d62785a5551316b584d7531794d31536a44537a7175747a33636a54316d6c3475364b67752f39706b344f3741446861704c47742f71746254477a487241386f2f39776a2b334c347a42355852752f6a3169366e6b2f6c6e32374636336a666a384e6e38426f46704e6a304d7a6772314255784e5063396b7457696b3253646d6d426b706662544649766e666f36303478666a556347764c2f4176492f4572764966466649346e654e362b5053433976782f556c733570526470675a6679646b726c2f46396f4846396274417150714a674a696a594a67432b714a69654d534b6a6e76544853794258574e6e355974365a33357376387432496e49714874667a55457941767554782f356450354b79542f6b59304f57787473546a4f4f414665576b71517771646e56307a7a327936444b5852684339774535597352516d784c7659662f585877506c466f6645612f647a706b5a4d7453654f4f36515839506646746e314c7073745464682b4c594f653035394b6d6c6d6971736c615a55636f6647364f4d78635347584a4e676d6336654359652f6e77676673576d4b526e7457486f6c2f73542b752b31366465732f6b336f6c34463472702b5165696445496232723667367a6d3059755a35706d304a436a565838745530354a75466553416c4c2f77426f5735555077716f6e453264342f61365261752b62383439643957464a35526e4c70723867795a343736766a7a463178726b7379714e586c517a6171752f52466b4e684a31747170483132495a396d2b6564694b48544d43767a356d49366a5350316939496556314b6934727836354546766a6d74745875356d2b3932706f4f6f796e5261657855493254783165306d7156784d3745446f41732b714630504a723174742b556a553331503841585477723857637a5830367157525476796458557863725a545674624c61703858367842465479657a6777387766483577573232335365394955386132772b6e43576c6154714478732f6c352b542f71562b63667253666e586d6a55525932446e44343934316a5a302f517a735751535a6f61314c75664e3132747357376c465437627a3939442b47685967435652794c39505470585270694f4d3247747a66486f38794c6863556b6966542b676265717271446174737071556d6c492b35612f697339762b4843497958333274352b2f77426a654c627252345142694a56593033322b755067574d2b614b62682b2f6b777a6b784c7157754b666f73622f726348653856775236483650676e2f702f713057696567666343626a6c69346e48545478453864516f43766e56324c53464a6450732f774264796579754a6653596b476750763666506b547744734f362f2f77416e382f423330362f4f583832454c3962664831626e7042364c654f44357435563470546256324864317772696d38597a3736566b4336736454424c724933445239744d782f2b2f375079643466624e57326a7052464f3149396c6e71642b543368766f6c2b5376686e697670687277656c667050354636663765487032654f575a2f50474d4c58394e554a78492f7743477a4945386e7839594b647a692f7239514a4e546c566c3050664e30652b5a464a745330326e64625039527a7438342f467630582f414c304871704235703568543572523649656a6d42666c65642b71306134384b2f774251504a47354361664855654d62662f4c6b346354717467395a796b6b503770624d64436e544a7630646f314c657a567848617438493835763567663246507a413947665576566a39476645362f58663061326c364e33692f6e6e69326c414e75646c35355376484c387a6a712b71764830707970516877674643676f67654147357764442b75335239723070726d334c59647466375233396c587a7a3058522f35762b5748714873706f3876385a76373439364c6548624e6566466e4c3170382f4f54722b5a62415a784669754570376f7a6855766e477031515438782f5962472f6c396f3970693249303638613934336838342f745a2b6f666d554f7758706a3556682b582b4e7256596564692b634f526b65555a72324c31636356793357664a474f6b4b3749334877657063464d6330303776696f4e4b7371363852504e55616f322f6a622b61506f7456496a7a623055387658347a6d554536725479383743386937565946445a323666626645666d43564c454d2b4e532f332b702b6d6b4f4a584e525361644e2b6c5053334553652f31726d774c4d48777679316d52342b334a5470364f5a6e2b594e6a3865304c733844793473366a5578504b663362705a396c4337435543674f78497576414435374670474a3038394f41462b55666d2f3654656733707835382b6e7943476a557a6647664d55654a354d47744e726175786f625438764738656e7a4c486246444b6e4d30453156554f474a507874724f707154426f382f70476c61397135346a79722f774469333833723261654f51355965544e432b6c75666c5830727a4e536a612f6d493744326e537251564d75665173335059552f77437a4e7333752f7741315044304a74456452592f6a2b5a70654e6e4a5568365a4e612b384568506f3130484c382b6f656f6c31764432382f6e5751456567537661314b5866712b6a6e57752b58713156744e62642b4a4677594f4c6f613853397158496a532f5635584a46534c436f63343875797044615a724d55596d4a6e6c7a795478426d715a6f68414d7a4865796e686c544d34786e674e6c6654572f453559752f37366c664f4d73446d717552584d2f4d726644727a71713678506249535670614f6b6f766648372f7366707074636631532f717335784f4f6f76576a4f5a56675034714d73765a6c42476a5868624e316e2f414b77743963636b76475867732b464b2b4f455a4f554251487654704e2b785361365358796e377a313443504d2b316d376b625a353577347869562f58705835465a46667064652b53586e49365630727a7735564c5550557a70496856302b63615076636172664239503042593756566748504b48636e6b4e436e4c48766b677a347a486f304755776856443849396e7a682b4679316661597a332b77314638582b346b562f672b7671524c5232624e69354b70395050566d3053777a4c7a7152365059596f6378505a72623063643367365a536a5078346a4f66754f38323937386f664c2f57674879362b72347652493757392b6c6c6246533345634b6c424b487a6148334c6976306377716c4c2b496e66745477617a767872636f4654754f66384172506257656b69363844793546354258343755504a492f6e72425575304d7a49376b6145364f30586357536a47343534574c477272552b2f37674f497630357763704d544843526867487461766e473171553336543836696565546957476c4c644c6e42636c79654a2b387755736d6f6a6e365264663841596f4f412f655074593570514f7766396d4d386366576e31576867625451686667506a70793366586763584a4a4c4c48704e7133694165346d615545314b56392f77427878714d2b4c372b3658596530396d75376f4e702f4666774237366b666d563668666b463677466f38384477764b446d384f385a2b2b2b6e45383231354d2b5075723556516764673244347a465a33524e692b716d614f675a6b726a686f636736573139756c576c65304e6250376e6635462b71652f77435837663438356d4a35423450365a6545654f35666b6d6c53364b5759504d7a366c6c4c39624f35317748566770472b4d61513555424a4a503253686a6d4e4454746f616352472f4f363168756a3675564c502b315536724b585178336653484e73786e61455a646c6b586630593075335a49793578325763704562304477534e51476a34514d784362476d503852625058502f734850456f50437637666e3459772b6f336a5868654c3572354b666a6d44587365556c436c576e357635586f3430645547786f57616358334b4d5679366c6e32574d5030685577484c4d424230676d63363272746d2b3341302b38472f75792b62614f686865502b756e7044345056345a35322b584f322b654c562f79462b4f326a5a475958736732567a53756a6c6e47446a72486c474a30324e6d6b4a5a6955732b6b2b7a78776d6c75794f673335784747642b4c7a764b5045736958487138573871384c33734a55795a344f766f782f495a54504f7375504a6f735344457357507548334f2f316c33763756387339474f6c4f64584569742f587a307238452f4d5838562f4766503854784354766b65646c35336c47412b4b5938505579364d682b596574346276386c53674a58484c43795934324555615850424b6a2f55784e54616c703039544734616c2f686a364d592f72563668774e3073532f51395050536f5a6274586d6c4c3838486b2f7162786c7a6c7936624b6d576a5555784a57645336473043686a6e65377276596b303661747072545078572f3852492f5866632f432f7741552f4c562f6a666c2f6f6c695765452b6c666972647a7a7537773778374f2f6964727958637479464c3535314c6d617378367931726b447156645135394b57632b556a6a716e2b654b56315a303878626d734f6d486b6e6b336f53663430302b542b5834584a5078375a3462417a5478377365764a737966446a465a4643474c6a694a484b704c6b54754250773834447a647a39653476627a3476377a456472313638787a5439492f516a38457679653952504b635430643865386b2f2b626a78443038796e7a59655a726552597357667362482f41454f33524255777557616e3864697a7a544a63746e7968383158744e625663506f7466563071357432686e366d66696a2f62653947764e632f4f395a664f744c7877764939527a66442f434b66496a775a5a3672356457445a713047784a48356673704c3452456e72412b5238557365302b357849314e6133597275454539577637632f70393537365875395a5077343957582b6f2b4b556a4e4c4e385331764973766477664966715435656b7a4e6b313653522f47613357536941702b56507955756e483371544e4d6a6b3131707262627156326a5158304c386a3050434e71377a7158415045386d774e434b66794c4d74572f517a7561556b634e4d73656b504e616b3069796865577033413737474b44322f6f444e494676654e305947787672682b537765734557546955387338584f6a4e64784f75357643566f56432f35554b58772f7154706a6b6378505a2f73494e6a66593267695146456a303536644e7645615164394a3966794f6b644941715935476e66646e39704b68773575796a4c6f626b7833702b697445724b506f724655334b6a5376742f77426a6b31616d68396a57625245347a3143762f69375633776550376c7570484c69674f785a3875537648386a6f375271616e2f6a3379335a556f414f6b37737631666b61744c75754d574a724a763266696a504c6d4f495554715a73736677356d587268567451564c5854794c78743044454c61357735434b6a6a54334a7146524d51367a672b32394b616d76447151582f414659567635566d6159624a5a6b307454357447674871562f4e5432425557694b2b734673476f346d58626b2b784c51325956716a374252544b766f4879686a72673133386a7a3478504d38665472797238717a5a725661697535386139426d6b5576322f705454303535544c6332724a786639544a782b4e723171487456466e61427458687a64304172343154343575654e662b4b2b596265316b2b56727a37523856386d5a5365664e35582f4c726e6d644c71375661336445615766596d4c2f33557245357a34373441526569625a724f59345a4150443950505561392f6c4e75524e7236756446316d70766677432f69793471587030495a394f787369584258474b34535332583451756348386334474c564d5979544e717a335a6b626f65672b6868656e506c336830627263656e547a74766b61374a4a386c69334f6a7a667355335a7138706e7a5a376f6162716e7a6e316e4b47504e5041676d4a4d33496372784e3474356a74546a2b58776438712f5767526e3932625671544e744b2b4b30356a31316e72713065706c3675687a6f397a724754396956565443636c49556766456b336e78694d5277466a684e35413677344d306676777a44746e48724e6d6e626b35447a4370466d6c2b6e585630512b4d70544d3453503841564e414a4e61714b4a703950374c616376786472313443332f465045563249312b736d6b5244524b445a4b4d37492b6c55307458516a5a725873435a6a4b30745736476b69443454364851393867494170794f6b7a4d7a6d526d66696358435553644d744a637830534c704f35374b4561454b626f4c534b495a525036494f646f4e71366e6f3030424770783030646946796f45676a7067564669446e5a656470736e4f4b494b6b6b326c7a466f677566506f566350374a547346785643625741484569466c61415538705063456474763346624b6b70474274326f73783654714e54596e7972524763466464394a33467a693267644b557a2b4872537270443372366b303063634d6559464234746e716b5a7137467a4676454b7a484c715a516a4b63654b37333578685a5271645a55377336535433724b56704c6746304a75306b625854457a485351686f61336a324c666e7276584c452f7051716c6b7a744f514543766b384c713456554a443955635a4452554d387a31644271597a6e6b633447747256504e4d654d514936796e744e4f58395331746a6930726f38706156392b6537746b6d4761614956757a772b77396875542b324570763135414b6961536b5575396d776d4c6365796a2b50386664703057587a5345394d71506a52565878433643696a313565554c4b4d75705464304f70496e4a5462374b454e5554772f72444d357a6e694a42426e34304f6e6f5330517a73486b2b646f38564b78494c304a30363332574a446f796c37533457686c72512f6e56312f54306a48726d39365a417a506a496b6d744262566a78353337706e356656707052504b734e4d72754650636d35756769705a544c634a4e4a5a6c4e5575787972775432687a763866366741346365767437744d6d42447075393869456e592f6d704975656e37683577794f4a684b534364426151366c624847446b4f4b66744c706d4e416f694b465a4f6e557a56767561656652644e66787234644e666b66533555724b53666b417a366a75454e48586b4c524d783371624b586d4e50764d483859565a653472476b7a344a35754f363935555a6a745053313076686e6e6d6f51717979626c544171783379326538322f352f584e7679734d7857425765486c6c554b3761646e53612b4e6a6e3665684e4a546575576b5242464e62663841346479575a2b61772b39374d70335a77494241324439582b676c6d55495a2f4873724e7877746331694d367154684d2b395748327736325a6258636c4a55662f414751583067375337346a4d78556e2f414b675345544639382f43717a4b6d5754316474573657674d393956793166554b6a7130702b6f77766868597459752b62336d6a2f67444c326d48782b706e3536556b6a54677369706255416a667157796f6d4f497742594a4f573866686f4d61484e6544574d61317a32503971674951344655752b494362546e7474695a66657a7563615775564c735654394e306741774e447032547354724652304f706d487047664630476b514d4154304971416f797153342b6e4f7930513531617554517046783156665666544c2f41434c6e71756c73496961776d764e58573075367371546f396977595a30594a6c4c6b362f77434f564c517a2b545a463241375a6c645670546f6f7a682b72786a4b6e6b4b75435443547a33664b62754c534d307867567a4a314f706e6b4f5335456b32324b56552b78636375334e577956686331357052456f3951462f474174557a356e636a2f414e71515532684b51576535745559734f5268315630497074367456556c784153787a7236492b395a317132546638415857346b743537354c36615234414a644b49447779356556445a4c5039686c346a475a7a6e4c4d2f36724f703433506e7a4c5a576c555533616b6a4e3367306b3168382b5a6f392b765177486a394c73366b644a65594475564f4b766e2f5a56584f436f5364305638754638513648506358784c48704b4571553939696b50396f416c4375574b656154735358314c615364462f574b687a4539584d51625451716e733472536a6f646e36487557786971442b5a6f2b2b64532f326f43374e57626844577a6754677a726c794a70445434514b67346c44727775647155416e50555370786578695647716e3330642b5668453841696c444251335651753554634b59783146556658306c363271764d5250554376493033554b554a4373436148614a4863705447616a61317a615257414778347367413950693239574f717567704c6d576f4b6c357973694c53327034316e3956645641383652737146546156505a32514770616b497a784b352f665575475557735a61436145365563644257304336783173354d742b75796337616872353862444e452f78664863504a6b752f6f4a354d3167614c56725844585138716c50547066445933566c37645046324f393676594864476f575a4274357a325441326b6631386f327a736342625170302f6764333361586667367a546757705142534b553056794948526d65492f524a524450372f3274302f48684f424f42776641494b76373131526d536d31752b36327463774b5a61786a563647704650304e42743366717838556d5242433145365864446a54702b6567624f41763841796379767556536b5a566743674972396d666a5a3442654938584c4e52483372316e7353356f6649503742446b697446483255396d494b3739526d374a64547a41756b3671596234624c59374d61716e53307a5a5238587930717a5a33356637686f492f6d4437437a554167304b4847544654474d786e6f5050442f414856787154366b2b6e3556514854552f774150313964576a64673261374d7253686f484e784a38622b527879442b4e473066637851456e2f5673424f5457302f4e4e4a3365793969666d4f5a6f4875612f30546878773159497155614252457a3443664a4e6e6a46717966512f685839752f5343334a6e4e4e3376704133416f776f51444c4e6558347531363842474a4d326e56684862794e644961746b4563746d6b31587a55386d734659706f6649576a78554e4154772f6f574c3651453031465077415249796533586c74316b4f5a35305766507473766147643932572f50646f4b546e4a3632756d71594c394452306d56576a6e78774d4246663671496d41357a6f2f397a57763434566a7943326d67744a4a70314d696572554b73387847376d307a74726c314d367a7656794e755178425a3661527952422f79392f774261774e52454356424f756178455277446c4c6f2f6873683138384b712f765377707578796d4d4b6b3857553577685834374f5838655846797a3265396852676d723341382f6d6d584e78336375424a62716561516d765170646d307a4b464463367374545875534d36426930636f756d58534c4e6256503841634230704e41435034326f4f646e615a354332446d7846532b6e4d2f6a6e7470705068574a627453692f516c7348506265623870637263396c62503559464d61744443566c332f7634656770495a32377433322f3547306e696e747a30574d6c5765784d687148706666325367495939426432314e54764b54575a57526a7032465177577536433235553379553843772f6a7a433676486c54643258346d68342b6d585654316c4c77714f6a756c59742b685576505430306d796a37444253316454422f39393546385032444c3341546838566c79646c79564b3551423979313636714e533272374d6e692b542f47532f466e785a7443723176756e6e4a676967327a6539732f312b3959736636435146574d545a74444c2b575a5777633366736c45764d3747303736694331306c645366766671576a4e6e66316743746b396853744f657053562f7742524d525055584a6c616b4339424f7478386d6e6f616f633068366d6e48644c6f6243344a5455316b313471482b4c59347674505a30686532504b536b544c6a69576d6d322f347676496d6e4e6a466f3864646b38306f6d66654b547055567738716f717a44347a5131703576654e6a56314e336b725171706e6663425a76315348357073774b4b3765626147583358592b673576696b6938734e78533758354a44534f56316d66497578394d6e62567a55565369755956487a684d5438595455676d5a6e6665754f2f6d794a44343133744f626c61586c6455595334355557497a5436577644467075363673677975525961317263396c465833435655454967774541342b2f436156735a356567663265572b5139644c6e575a7373585a385450564f636b6b4954436a4a6358466a5856796f304a327a6a687965566449766b6e6e43594f506e6f2f6378774c433946507a4338322f48544e3350486643664473507950553867316d4d6638417977796e374f353670646147636376506e6b4c34577a32566879736d415453634a4b34384b56657932707078666d6b4166582f315239575079536f773750557a522b6e6c5a6a4d75684f50674a626a3435303549617a5862796554443770624756546a616b686d372f77425a4a73436a32464f4a567257756e6a62784248784831632f4b4c787a77742f705a722b725a46346b4f50732b48592f693975426d56614e6d50664c755a6550686438764965434b535a396f5a2b7a665a584e2f312f6252786f47597a4e644f5a3352546949563458354a36334a38566e394f2f487655586369394e7366524b4f4c78784b364e544f5570576b5064535639346948457a386f306b32454c43507452386f704d2b647146445a6d4b5a3354586d47344868506a4f444e6a5676706a746a44514c48697964624337644c71554844444f4d734f592b4c51554647745244383378464b6f496c396d6e564d5678653336394a6d596a68475a444f337750766b37736a2b65386a38675078744751364f7a78352f6c7a647a4c646e6f37764e5858504e645a2b2f684a497235595a644e763176637133363867633930693050462f412f454a6b71376d2b45365047482f7656716f752f6b75486e736c644b6f333431566e4f2f7a315a464b355a6971436e334f4a79666a6f543133395a7a4d78386343382f452f41384c5a66345a7156356c6e6b5742342f73342b6b456c316e664a33376a6367786d525356685747757466337668715149574f5a4355792b2f5649415543367a4d784e764d5344386a4d627a6a316b7238526e755a6d654e34486942703337734b797166556c314c50686c553239574532487465664f6a484c576b524d432f32326539725065304a774e63567858642b596175655071526c4e74586a596139477771493857674e575a72395935375a6931643139312f3242703137485a374b6e7053514e4e34544b46314c51393442726673794466703536466262382b2b33576b74476e4c4778304b474f5a6f79633055697975647a354d7775386e7a5578315a66732b4c69544158474877306d6e374c49337838786671764161387a466b38624c4c624a722f617a36716468665552537837483142747334724b2f6a444e63703356566436516e4d6255377868385351377754704e706d632b417266782f302f77416a7861796e572b41306a6e31507a4b385059596d616133504c7576784877753544774a51517165672f617a6e46635744503356784e4248576d307a7738524d74426b704a717a4331577949754e7363736c6c636f7378785657575a713030534d752b796d463262596d6f65306659537031495433792f4f342b7471494f475747536a757a6831793754636a344976745952754b3047684958586a427932684d78722b6a6f5233667472464c55494e52516f2f6d2f5a366276687641672b35705a557a633754706261715a6d6f764f67656832646e5a363531544f68736f796e317a394771682b6b76515a3867757052786e736238496d77614632703259466476504b665176666a67547137316b427231356f36626b794761732b3774436d396d735155396e7873416a46774a706c2b7359546c3170487846684b5045386c2f6c5463654855585a466b7a646c524a4a4b717565494a636a505a6f706a30617071686e57773173795675413549347852533537675548657a4f7261323348444f5265766136637a4e586c42546b61655a62444246583272514e64413352527771364473332f674d6d6a3758324346594c6f34714e79576e79623567594758487465596a67344f663266506b7a34754d54566d313656624f583153616a59676e485055594e70734434566c795654595773706f465832314f2b465845696e2b7478514737416d64657a6d65586f336f382f58516b7275384f617259786e3033693530306e666f3052726c7364642f3157365468483264414747417546664879477a333472342f6a75583431354e4a6d55457a4a69753450797659377451716c36744468526e665959374e79313439307767736d4f567966536d714a786a3831425a5836774c57464b6c776b2b4e7a353371306b39702b524e4777786a42684a38396776466638416a3962506e466e335061502f414e4d736d366f35696c55366731702f5050637a6f76772b2f4936725431714d797154305a3839506d70313330714e753547547163786c7a682f48753544704135684170623432797153376a752b2b4f636c42727066356d6e506d50355472545255575838575972736665394766334a485169614e5057544f6e2b725443503152364c67656f7032636d345273637a744c414969397362722b4a6572336e76676e6d3369316a72664c326e3471666a4e6176483062473769703039694f724e62646e4c5337514a4d644668537366786e787a7554525952306772336942316d735769667a443056654e666d78354a2b6166705a3570347036752b50592f7058354267374867486b58703850302f6f2f56395036623558376b75446465342b3646475a6c772b4f677a2f704f6d704d6e5555796653476b423435306f3072566d764e487844597a386b667943394e7350307038703843394e386973646e47385579342f432f504d76616e7876495a4e4b624c73334e5376795855564b7669624e416275642f615a326c4e4a474a43644567703457644b576d325a486d736d79643731733376576b66495041746e316e33702f534857387175386e69304f52613369486b552b757a5131664c4e504664553874687a682b5276465367682f7330717270584d617033324f37685462693233694e4f504232737a4f485469506d733166355a6a5143616d304a4c5544775537636f4568623256664f79723369587557582f632f5a3942596c396251657a6a2b79502b484867666f743654302f6c4a354846347a732b757671726d614772344c73566e7054322b462b425230755637697173714778757870734c59457444366f557567676f6b4d534436357338333272556d3976645248436f3758366e72426f6d795353304d713965596d6a51626d2f5a66427956374e76537a554c64666655397a384e4c3130535a3836306f39396d6b686e77684b514d506e3256384252336c666d316a787834374c555254784132623778324a586e352f5262377757704f75746c657376743075544778346c332f472f77435355542b43374f477731523831386f4f4c78713944764b75726d6865733831666a2b6a6b637a7755656471556f6c6b313976783249575439757179354b2b6b5142386b7a624a332f4a4d4d357a455a6d49486e672f75522b726f2b442b6a336c6b30477965725035746f466b594e634d72666d7a6b74304b7662396a526f4676334551724b795669666e4669615067555947785a4e733774436d36386434383369757357776a6678333132503636695a59553863797a714f74572b576e6b67646451554c484d447243446f6c535246376661616939454d4a7a702b554b2b6c557a706933354f7a734e564169517546567a416d4839777a44522f774139483374516f774d2b63482f464c6132322f45446179483975545679564c6962524b6c49533646544f3934444a4b6b5035527045633439683674335349536137374972426f653833663159414a4a754e633162453837584b3148364d2f343561354158624c333943795a66656c30463856386a6661616b4c635966463170682b3637712b494f416d46303344374e326466475442516d5a454c484f6f4f5a6a753145577251592f583548554a71364857434a663543596743566e583970367745314a61313879456f75597153684b374c4942704836616e4d714a6866556a6a353756724a724f38456d6d70764f436d646644367a2b74422b534b315a367755476a786338426931464167736242737557434c5a4f6c4f775754767371396e545430674250733968664d662b65562b7342342f743546644d71365a775566424e53586138354b7a46736270446e4f56656773652f70636370742b417a36427a41762f41476837572f314f6e33675531746f7a70666f4e43786f6c504f74376670474f61394c2f414e736e4d465563375351704767754e3438414954454864486e545879316476776a35592f73725a317134786e655373584f545643556a5a4f64317546786a307a677756382b5a596c376a37305073392b557a456d69536e5a675462776277447a6231453177792f415044504b504c50494f4f5a504e6b2b4f655061756945305a547851466334704a654353315555694875345535694944306e6b7341482b6f74614b317a61323064482f532f7744744a2f6d37355a353134483431356e364765552b42654d316c4e70556558655a4b546b777a59755161645058356e30364a48397a534c4a6a6e486b5578324d54396c4b7566456f6154446d7437527052467069323465733377587758767052366565492b6c6e686b434d587858303779613438443651575a7031796535326a564e5262517878752b505557744c414c32754d4e7634353232416f5774383665626d6d6332734630324a386e565863717a7431514d52524f454773765a314b4e7258573565536f744377672b4562732b706970477a6436564c4a76676f56574d7944706d30346a6241347966336a4e6e5838572f477432442f4d3430612f4f2f496c6462544e3541656c6f2b51793136512b514d6d75305a7078426951576c44574a45684933414b7673307a653737485637506964544f636252356a735464356e42484d50494f6a46622f4d41355858396165764f6b615a5a30724e49445047345368426739414249334d6134577355414a3772563734674745626c35396f4c4c704e4e41716f4a4d62336370314a4661456a4d6459423778446a462f566c6a49324a5a77792f77426444336441413463625972327079476b31454e6443304c626649683138744c553846514949724b4578665a53325131392b764e524f376931726d2f516d487638412b794d2f79636f4d346c78557a576e3264612f742f4a307175584b4e77587861524d2b357956767657373535522f51554541474a423153684267704d6e334452764a54734637776753743374463475664454507a555568622b556533733567587a732b506a55687a6f386346445452332f4175415953374c6c627762496b364b516d757a3630397a464d494c4a3633524c47504f6f456d4c7062544c5158485569526e332f61615259505334466f5a3246464c6177394e696336487156753031335a71355a374645385738357a52656c587a4f2b4f67566f4933412f6a6f334753564d396e7643307066566e4c7a4e484e5466644a7a46696c63673538624748496f6f564d396a484b68594d5a444b3776756c58382f6570647a727673434837454f4e6959695978496c66706635393554747531385447594f5a3662544e30664971312b514854706a6b70556b634f746b64617631526e335557617a4675524879666c66764d4234496b376a59744552786d4f49556838517a744c6166337858782f46316964532b6a6d6235486e554946596864646c6f6a71375872463866542b483547742b66334373774171782f5a2f7563346a4d3842572f6b50696a2f46503542656a626a494a4a645a705a65546652707a2f584e6554524578665a434e6c68437967567036626638414d50616171514e784763694c354f7a6e46717666584f2b64444b644e4b49465172755577574e537143535a623479577876644364664f6b302f6c4e783944324f352b6a2f414b4170352f36652b503064505177367779366b794e746446554e6b32656b7764506e75696b304b334f494e49485430635a3166667263636e3943304f2b7a3968724d36632b4134464d353859457a76534476463936596b745a683874482b4a70353757644c764f6c3766667769352f37425630415a6445757a6e484935336a41557861356b384c6933423775712b50764f46376939696b2f7379344163373050332b766637782f724f764c6e647779497a487a722b6850302f6a364c6b682f37324b49786159395039697775632f782f77426e433733762f774244396b526638652f2b74424b6b41705850396f7355664445554e36533371523371326437796376642f77505239706445652f73772f5167412f35742f6f46434e5948507751364164723433324c464b31644b663545393651732f526456377668352f6d59697354482f414448762f754448726c6c79704c476e4c772f387639504150722b395550466b326b48434874456c6b506565336865302f5951382f77446f434458697a61726a58434c777244764f2f73795237364741542f655043496663766c417a383648424c2f4d6a396e764c76754d484566666238796b715734484c6f567064507656665a68486767744a71366e397065507439795357513937387a754e456659512f30436f72352f77427374456c4d6f664949494c76493339735a2f6c776d636638414a3838347231464633706b42423334574a346b774d45727a2f672b767151316e42445a506b516f583958786b444b6742595051684a5a3441794e66474a4e6e75473567415a73486e7454775773614377377a514c75495643434566454c562f6675704e7a57514355364679386b6c34647a76636c77706e4566634b6750704d36484f454155642f6f417a42704e71656463664678703577756d315866647a70737247566370664633324754492b663841777661507644392b37394b2f6f46363066366e644b684e625258554c6d706550506a696c735832666e37705430304553785a31626a4566663777487254492f5941473848794a336a75766b373262644a4a5a683264303839307257664966496668345053656d6a693257484b34656d7232435a2b775159492f7365445731633169504164306644665678486c336948692f6c7352354432374d42727538526d56742f77673330793135576e704633497351454f6c52634c715459683074415a6555444b546e39763057635578696341766d65537230464f5962586c327739574f58794b622b4d7377352f49587571775744786568386c6e38623252307632526e63595454302b305139674b2b57416a354871533430336c586d47746f445a5a6753576157666b35527270594f337844465354364a4a576256754263624b4a71714570542f414c6e644839316b503135694d7a694f3863436e43757658756f6f65756c444e68724a337a66552b66716c3664536d644b4373652f49746f31666f657534536a364264597a6f6730653976776654394168377739337769323135694a4f30692b744c4c534a33544d2b64665a7573496e4c45767238495030664345506a49506150563973432f633336426d6c6172484d39366b746e447245746f34744a63516b7572583861357668345843634c793967302f354159634a5a5a3774334c6a4751346d52703273526d66542b4369687a655055436a35484a532f71577a644363474d45586373536b75394a6642536c50533933474e4d526e6c727a52304676624344686a4f4c4870625376794758495a714a344b4a4e4a6a4f3930704c34473079713642544d736e6f584b31335143684b6664535a71396866316c38773062714c586c6b456d586c754a75664e55384a414e6273796448316158547a5473576c7469563365366b713345772f6d6366535072516d4967672f316b76706f2b514b7239536f74427a515950795561443153614472616d794c733662732f746c4c4f6d4b572b345071382b782b6a6e486e512b736a6d685533554e5465717643696543366b6f5233575466794a414a6c3372472f77436b66724c3431376d645a39567a4a6a6161574b55453865794d72597557754664522f4232707641745858324b316e667238556e4f7a3030423963387477665648352b4b365467376d742b796245684f50555469636837426c7870756c6e5770564879746c526e30546467536258383170657067795676595170634256414433636553304e702b586e752b59337467574467596b796f394737794b71464754544f33504b4f76595a72364e456751555831683961614e4861716764477a694873762b583370594b567670554b774341612f6d6e484e444f7854746978527275746d314a627252733047304f59484362797167666a6454394e496336505a4650393567336e73537049365254783442333442366f37667033366b2b4a65706e6a50746e3366464e585033735a4a6978363658796c486f506876544f70667943635a4b53376755724531652f6b3579552b372b717a574a7261747658723952376666784b2f4972777631313950504776566249386a2b664d3872526e4b50416c725670466c65544c386b7a56575378356d68636273335758706157704f32796869584b6e4e6e476d744e53696235657053615474323852306c3858387577504c4672706e677a6277713543564e7461386251505170625a56566978573472714a7170535557586d3178492b774a6b6a486d7a77704e61317372796d4a6a684935352f3342507964692f487238637655587939313137504a745878362f42783774504a626c353946316374305747574e597a78317a3366556d756a47667131494158576733376b4a756d4e4f6d6a54336c346a7748676f37635772713061467a716d3075622f4a617065796832693768334a7376713552554945565644434c7043502f48666d497a2f41474a6b663965764e64745a385a453638533845332f4f764c73727766786965625332504b394c437873534b4d5934474d4f75755657724d6a50355a304f2b397a554c397643416e5770424d2f7741726a39357076574969383952373576784e5a3568347a2b4f6668336858692f6b32656a44394e66484a664634617448366d6672647a4d2f666e32624b39717a5969696c6a637251546f4b6f42347971597653426f464936787152386255784e37545078436465542b70586e767056347276362f6b58714a346a6b655352344f76734e324e44526f677959704d504d30504a5964572f4e2b614c336676346242614b61686254537a67683942445371544556693078455678486750352b667266366e62767256367765706e716835625a4e5a722b636555366c577a5a4148315575476e58494630536679496768772f444c336e50696d51487973494155496448692f586973616461566a7255566531306e522b42523958517052756c456c66423176614e4c394b634f6a584b5058536b77662b743055482f7734424e7148415444334435526a59485a4c5069374e4773535833737333326b5572476f3275496f5930644746504855663476396a4f6854316e66685978593878365a745868416379325473725650636b4a4175376c5368664f7063744667746a53344f6d6e36373152697865726c6c316e476742414431685339507843445a6277434a4e6a366a4b2b534e53696f36706452552f5a6169656d4837674e4a7a753366706b5a663633644876764a5241384a792b782f384c594f69706166386e6a574e7166503832554e435235655530554b5163317046654379504f6e4e68487a6a65433333417776306d6a71754137446a32764d4a74444e4164446e6668444e644a4d674f6962756f552b3157665231304e71574832786e754c504c2f414c66365039754e4e494b2b6d424a6e6e382f7548546f796f6e6d41526e656675744a736a4556756c6e343268493144796a74692b4b6a475851314b65682f702b4d324b3670594358582f3155505035424d4654615957364d37314e566e5464623262524a763159632f345631705a395966734e2f7744694c4a66563859587a455475723439597a465a6e6f4932793131647064374a32634f684f6c724f6b542b58696c6b3445545273735a384b542b524a3066716c6378745333707445484d4f652f752f5037443551366e6b79657a543530644b706d30796c516a744b657953726c616a4e74396e76534e4b785334566e53704b752f376638754a2b46684b6645474d7838753146726d6256336c49646d70345368576645556e39563259706e614a7a73365331314348422f7741506b4e696570364a2b385a6a6c727a6434664b506b67645378624b6b4e7a7a5477414a396e652f4e70325531394c4f582b686859554e4a64416b6745786d4264492b65353351755065642f61726c7a4d62384150782b335074366238334338485a74646f7a597a7736343730327355667a615468347246636d65716f57563966475a425a64307a56495461513858326a4d36327035534e7064767a794c6653372f4143593635457447536d5565342b7a6c74356b4f2b746f39794258786361364f354c6c2b317a4b6b4238646870736454457037714d385769656e474265506f50354e6e2b6e666a64507333636c56473865625463304934454578744e5a515855737a4e326f61736d372b4e4b65417a436342423331682f544f5846504e533052616379504e312f386f73583456366c616e6f64367934444d715479334962543457786447337a6d7272654e39306b3078736c4e5243333638566a6662565577527034577934446b436673594633657835727572505a486c373031726e616a53717065384843786e737a6c7971657259555535555350734b62346661794559572b3176754d436d435a774437794d2b3276486c377044685a7335547a6c4277535563716d6e6d4b6e6a714545737753567265324b57507459433170352b3347446b694a714435516150747142784746454343664e39727072684d61424b70744a75696e4a394d79626c3046784c4f464a444f537a3662514d4153496f53784e49572b50362f71475873744774543477717a714f314c2b5261715653646757706a485539464d626c474b52635633656647492b3371567a2f4a514a2b383766782f5431416c7347684d655452526f5564565139517a497a6953447a6d434e7a7372324e5664593943352b2f495048544576674d525377676d37484e384b617a474c544544596e41354835523663683658366f545261794f685844744b666f587a7133455a39476446447471347667523539502f716e506b4a545568795a37666d344441704f6b34696433674333693369634a514e384256596e507538664d4866596c47754c6d725a486f352f44303978644c6c327567464e47746e67412f366c6b612f63736b397365535a694f4d6970764f5054656a7858566d7045676b5671534532783964564630584f5a64717753464a58547156536e6b5a51694a396d53426d357935514e664839476335343579496f6e75396f36433137344f64564839716153714a7565684a6f676f6855724e543055676c7a7552383045477464424a44357673554a596b5870374d343768582b4c33416d3867636e79534852374279396b3039612b664878424d616d476c526e58784b76716b75566739466e436370626c645558794c4d3236577a694e76516237656e2f6e582f7a496550384168486c506847686e37336a755a747a65534b6a363477686f3061616357673237554632542b7270554c626d3857524a5637325278676c59386b2b7a7a43305a6e467530503643333473666c64346a2b516e34792b692f35446558774d395038417a6252384b7a7450556c305a6f38304938645246637753376f75396a66475248786c64457653414b5244566b7251713668782b37794e54546d6c3755694e315279552f755966336e4d4c3031384a38697976517857306a797a5347534c4f386e31553556506a38322f544a2f4849776b35315654576179585a7364774e656345696a566d733675736a564943656a51396d6d3038383867384d586c2f6b4772357a3544732b58374c6176496450795855304e37593250754b505175316236536f724f7077546b50752f77437776673936732b3934422b377675396f633953496d4978333045646c59484b556b62353269545254384976494163416f48356e54334c5366434872766d483266584d2f307239434a663547476f4c4973553966312b71645853786744784b5a7a72373056434c6a715139445069396f6b4d717748336d5a3873496a374f7633436566352f7439676d7367644e397957772b4a35795a75734c6c74694777753830477137306c4f63786e364a4c4f556933334d663745752b56356d4850363048314545326b5a4954306c6b4c563850516d6c3435712f65554d31665151424a357958747857475065457a76364d6a2b48713167617359744d64424c504f5042396e77335a707774764f6f697652316e3243504f72566e6145496a47537672673866634d4b37466b4b794e696b6d307a34503656306d646d6b39713355525873326c575232506d3058385733744c564e7a394677766c4b7a346d39716e6a542b30752b756d67753834755175476c703839797a50763841567558736576384132486757364f543836365555314b30432b36316a723770714b4c586354535456477566767673615559744259473948444e516e37576a2b325534326e7a412b62746c684d764964466171323038503273506c4471713735563166446d35733642582f326b7345756972392b2f5349532f7944704a74666278385151664b462f486b6c46437446646e3070724f3033303644654c36756b583051787339695a79482f4542417638537653626638534e703134316e7a41344744796573754b3437506148445155303735536d2f57747a725a30492b2f38765a2f6d633168634a682b79697756476b432b486e646778306a6d633131705563645364584b756d41694b613647415466324862694c72464c72584f587661744a6b756a674376326e2b2f367a302b3866697a3941354a306c6d55644a585164504f5655383538364b56674d364134776e56454355443743574a4e4a7333784742394d67343356335a456f794d497675444a5a5039733347756169612b30454b45716c4d6768357846784a62524f516371636c7246394f663679534c7048514b7a693173394a34416c73335a3666596d4f664f6d4d676d75697658624d344a3677725441335566644e5a332b534c6f7263664f4838426a38774b3676684548537245544d34444b4a327739656758502b454d454a763032727336716f5849464e41706f555856736f35514e69673435712b67796c4b7859485358375a35504d434b472f5a55457a3338695050524f70554964752b76545055304a61484f6d654a4534666a54786a4f644c324d624d4536524c2f414641364f5061395a444f6e697579764a61424f5a625a39415457684e4b353437545770744456392f624b6b7347707a506a4d6a502f3650764b59442b4e7534444e4a4a4f576a6e42536c69346a443751313172524c3968307a5a2b39536e7065777144594264506e764955722f52643652414d634f313544347a34577a75596a7653702b32336a5a42556d663241314c697652377758306b734a633776307350686e2b49784c6e362f33492f7151543446424e4f666e464b5149304c366f497136614f746a6e6e647952687052385659394575644533664b504370494f67416b66534435306e49564d43366277476c707a456e72464131787a736c6961325749724f2f78366532465576676b52642b552b4741427a6e7772444e784e76433144686e3971303936564347415678744f6851466d5032714b43416e45564e546e644c67682f7742594863497861315235396a7a7946685878714a5570305237546370334c457374594f59436561496b41696a68634a4d667945585466372b69595573516f522f34454e413535772b73765479656c71543463727a4252306d796a3559514272704b3349435565457355393466556c377a2f30444e37682f725039333638514b56784d745358664e39397257676c7277674d33394b566c4873474f31375032543375545052312f734c6e47422f376c714e6957364434446c7565507a743554563861353230386f455a3151785443766b36412b4d574a49584c344a45494f6f4c67664d49454475634f757976674e6a507841384772395566795939487646427a433267523559472f6f787235437361455a4b75363267314c6247684f73516f7a57644c727150694d2b4570772f423046637a317262644f303977396248715a2f42656134664c7461414d366a6d56466e6c41774a723948637a6a766e636b74783839542f7744794c3564534d7148766a55726c6673676a426b67432f4e6235305a69654134592f6b763635322b6d5664336a6d6367383758304d786a65705673536c546b72725672564e306c50766e52586e2b51485179644e4d744e6a547055376e386771705471362b39564b78626a4d38427938356f366c6f5561613536477663466249584279414b68357657454e6c666571313246525934767443427845427559424534457a474e4839625445784f4a45494e69506f6c4e64614e4b532b705451385774305a786a685a373566724f616b61614a514562674941364272353842677a324b6631302f46792b76356879786c4d39476a2f774442397646477a57727157312f55556f2b4674334f3837594c456b524d58787069372f74647653487765776c712f716f62323654613577574b656c4977722b703664536b4d375958756452705070397176744f61517261593846594737323857663662513437624c6541484178637165782b7946584b666a6d3436366467307234595438353261437850534c396a3766325174583754533367483866525933594567646f396a54514b594f675375555149364f656862564a516c6e5464454f655943775a317062336c422f4e776246444d536d2f46396a483476722b6f37506668332f5a7438322f4d33384b764d507955394b2f576a3039723957384e3237337876386635786f6e386738707a2f41426c47614c593539614a784250354254512b6a716c6d50554f73524741696b4337554850712b307870617675375262623469552f77426f6231777439482f4a2f566a306838726b386a3866307635626c697736466d647653655673706a54755a464d4a354a567874665a69726a76696430526370332f592b75326353354874476e4e713074456a715236342b4c654b657233684a4d43767374416f7938325848737175626b364863584d7347334f75504b7a3454557875625673304d63682f756d742b4c742f797972643875464c5457636a6d503542365165522b504f66346f63666e637338614d2f524657585173732f667635465a78735139664c4b6249364e6a4a306a6d4f354d62466651706d76492f6d486e396445576963396e67446e706e36475a675536506b653134356e49586936766966554a3038764a436c41554b5a4273592b686e5361443943464b31726f55344a6d4a702b494a77354e574e50584a7266552b4750356633464666334376575444772f46386a304a384f31314a3237315a6c586b6c6d43752b434b6a44537179706b572b31796145366c56677238664e72424a50777453784d77456b714a6d33304b544d37354847695153354849343561524e546e4d5578737a364a65396372323038597454474c2b683964325850782f47473334592f3043302b30692f7270314f34476d5455784b626f6430696b766870484e6c465954722f61353661457261704d7154594b4463356744772f6158787348336348704a597a4d58657a7974486c716c497269687372743730556871364a4b7373756b6d304b577a56754633367961432b4e664263516462375a315231676966764774434d2f2b4c6f445869735657575a4f766251756a756a524c727373445251345836444f3939796c30667930596e5373434366332f41416a2f415071567a683265543548347a64767759766931394b3563634d4f477a51336173374f7057754b4b7a4f577548374f674a58476c59797a76464334302f587341546f702b623344684d54316d4f6f326d394d4e33786236333847466c6b3274567034726c61666264335843757474467a62627647504876703834375668596d6455396c446e506b706d366e6d73614a316c2f5756346e7248634e7576534c7958722f4e73717a56353039484f31594e436e52522f46364766563236666358626d614d6c6533512f743156444a755339516879307a6d66796753456f6d6e797447637850414d2f37686671586c2b6a2f6f76353935646d6f4974545738656b7a7568427236425a3646356e327366484458527078796f4c534230394446754f4c764a75307951364d36536f62533232685762577245787748696d74306e36564257327134717931683039374e54544c4a55366b6b494a4c48504c763841324f4c4a6866384175506953547a766567416c372f5635612b5752614f646b746b73564a4b4132674f444862384b56723052306d634b4f6c6a4644577876466b434a32492b52387a6e664b6175436b532b7361735237322f374c58347a2f3841686e34772b4b51532b4c323236757634396a4871576438626d7a74686c666c4a75316a7939547438366e6145614d476d56596d69656b6a524d3432574a545777443876326d2b645331752b5233515469305a416a4e48544b644643717443624f632f353957627447677a377035453566414b466454486a3971534a7a3948376730393935796355726b6d5a6e714a4b7147322b666a39725a6e587879666950565933535831655a52433579744268386a6639706e3854485130476a7a674a64415947546575426f5143772b4d68324856524657727444784b6d6d58514c526b4a625a776e4f7a34733752754b6565676b7a713679417631522b7151633579783538314163495037747634654b395950546d786854655075386969637a2b4c36694f53464e2b685662725277527855524f54324e3331346372764a524b59532b67397761684b36373465763266566d4c644f493845766d666974766857797375726b56712b4e734c51574b6446576f30477a374f673561797671775171545279786b663841675379396f475a4f344d6c6e73373630544d38492b4962716e2f634a32635878782f6a437366793865366e63477a6630504764704747332b567932554f305467626d45347979326549694971684c7673636e35584f4a52303041374c334d544f635a476a7635472b71336a76725a35347a796e4252744b7965526f7849562b5166584f6f624f4d572b5a535a38306854464f326933555975666a4866544433386a636c505a30447670316d6b63335155586e4e35537169645631667848382f77554a396f453931656a516a2f414c4c6c4573703039554d70383478582b76763750342f6a3452637666737948686c3163637a71327a544e346858374546673179454c6f2b426b4b7664523055536a516e71302f4c37756a2f415061544252414a302b4c6c43343073464b53545239686a2b3931434662556443775854634534796c2b78776c304b6e6e5479667631772f77636f757a635437434f66642b5953374b3566377057442f4149714b4a2f72702f77426469767461736935534f6f4c454f372f776d63763962506438334b566a2b355350347a65383867746d756d56624d376b72714f4b356e4966475464415733467a534b685a534a6e576235782b35395661326830462f4737762b6b7a3938333954666f5062742b45656e3570672b6c76685754365734574672626d3539584b357265595877582b4e3665624b71787132525177306457375556384c756a5331454559305a545a6d4b446a6e42583565724554613234627236766966714d666c5961666b6e3577656c39486c477652537a523847384e6668526730516439706755522f4e797a506a6d78556c50516a76536255426d5051706a6d2b7337484e63526a546e4834687358346c742b6f327258515457624433755a626e75484c2f4149536e6f353263722f783963612b4668782f54583163384c6c55304371705351534d6b49464e37323046412b766d6a366e2b487374782f532f7854786d50314e5854356234307a6538373543695046493258616773566d3539796d5a6441376d67376942475769483336524f6470545270492f3676534b7a7a5737493451666b622f62532f49623178775a2f5061746278726439623361326972524478326d6258386238687736476144636d6e516b386239692f774471706f7755634d6158486536756d37367971534d6165716d76537337656c52357a2f56543035395250534c7a58563857395266456437773779444c756335655871794644446446625456327179666c63344c597338394c424e71715068642f6b4666666630303039746252614d7862643541457852376d4138614a796344352b7157756d376f35734e436365636c4d6c537564415331644a7346442f337a345361355143587445506d6a6a57664f424f665258307658366a6545612f69724e68755463766470726e4f62536b345864465049557555335038412b506e6a2f6a31697a70395a33706c37526b57302b482f55337474744e704864503858667a63395266786438453865394c352f7838394e504f76484d6b467931626670763537563450354d764f3862305858523531382b33347a647a656f6c71485571576c6d68514639626e47366d676e714a764a716156645364323631523067796637774870424e34784d364830702f49447850797a4a376d35717332664b384a3073363547517a6a4b4354544836744146564863335564797068393471674e737442632f51364b6636772f77414c4f6533477a352f38446c3336332f3371505676536c316647386630553874347451537068386f386b3341783645727a43756e385a31595047636a47744835754c456e676c746c4a393538694b4c4b566350683946665a61347a4e73544135622b6f48356d2b766e71685a396338587875573772466e4c665869625439496659646c583155697539636a49666b3172533468756563302f502b4a68514938534f394e505472313966595566685a556d626a397970374c6c3979326e646f6c516a68336857676c71714b42357a38503758386d786e4f7938397979622f712f644a38506f326d637a4d2b494733795a624b316357686666675657787131334649684c6c7247576236784f2b6473746e38682f694c6a3759426948566b3770463755774b72324e65656e3977356b374b5866477063615545686a45716e39794a7555554b48394f6f37375673347059437633572f44374765347636307258347044615a4c7670584f2b6f64495049337559434b30706a50394655426f714e625065496b373575433148514161785a3376576748777258376f6b6570662b7a4c342f3446676667642b52666e5867336b75476e386e664c50507332447865547872796c686564344870393434684a62575a354a34366d645a4a77363436394c69325471397a766d5073395a562f774455446739717461645773572f79362f3147325869486f6a357a2f636a395a637a306d395062365a66445042322b4e2b532f6b52366c54754a4a654a4c755555314868336a3647564433503875316671787a55565141456b7a55557a4c2b523074626e556d3861466430787a57374e5236662f45767839394e2f512f303979665272303377382f7741563846385838536634766959695a4f35302b68633546576b3676556f706f684d616d614364547638416b616e6679576b584a326878727a507a35766131743175617768734f523357394d624d6d5051733877302f466455374a644d39344a666e4c55576d39305650786a58465044576b746151614f31682b6a6a366d59414367332f774257365838496e312f554b656d5559637a764552334855584a63335348526f636c504b6c70725955367244664d6b46314d30692b714a645851345362483848507575397652616e634e6f2f475964546d62566e354a4d435a356256386d6852483841706c593867716b5575485057616250734d6337326577524d3955416b5437327049382f6d4c4b6a307155456c556444652f555354597545744a6d766b6b3948324364555046712f5865664375674f6d2b6e37617a5376325465316f423453662f414a544d4e645035712b6e55306568613656766f3145543251527a6947747937795079624836364a536b38377154684a506d7163786e32442b584e43516b75427933643954324c2f4143702b593839666866695a4d71526e5062337455386d66584f42647971485370457273397875476e534b646c44646a676773557353336e7a54642f7a48704b6d374273666934506232676956436b48656b6e614d6c464b446e657274307557323553494b7555357152582f41437a76596c4d30596c597458364547663542654f4a685a716c4e6a73777542437a356d79546c4c624d744a48702f7254656c3963594c546c6f54555353464c5a4f664641595531756132643365635756672b47526550737464486f715a575471487861443165526a594e576f6e516c5531506b61466d6c6469592f6430354a7a43673666747256325a6f6959544d7a5047524f464b56486f526b6d512f66556a517165765643396e4f435330647a432f6b61724436786176686f583273324f4767415a39582f706d4330514c7079366b36304438336473697a72454a5656487379452f5266326a516174435a6e542b3267737368393742536c496f5637552f4769756d5141373274733435656f6b6a74656e524367645873396a6a6f4c6768616d5a564c6b6153426974664462396f46352f48496e3048457a6a5950737830357a66636e35707667722f42396655694c364751316b6269794776572b5254377a30657a6330334f366d2f4e597838304175446d62634654426e46426645353332526630556b66742f7131633435756f59513172522f4b304d633838724a4c6b31756277623549666e4644704b5a654562474d6c637a484f567066462b6a57634873506f385a7a3462435354366174444832496d6d3751575552412f475648535957553636334133763675732b53664c526d7835706449662b75665845514d70467166646e2b383965414b354b64524d394935546c784e51796c546571703556504e47704b2b4856553544446e6e59646e783948717552383537425a51414e36616866782f54314176727352594f4e58696f2b335a4c6f4c57767444425477644c3633326e58774232655548554b437250534a414a727076562f674d6f4230526d7a347a506e49334e2f4358387063503851664b764e2f4d642f78765138773166505048736956324c342f63324f36446d6338717331426855503169634c74545170456b6a516a34494b6a6d644f2b616e374e4e58546e55726a384932442f4b442b3576363265742f6a586878666a2f414a6d393649342b56355033627546326c4b486c6e6b326e34364a52795a62366f78627a503862485130457230316e776d4f4b4435556e394a314b2f367a303943744a747635684d505737387876525838772f5147624938743857386b394f76586e4777356977764959384e4665456533796e724579323056794e3752342b3236677771482f555357754171543967546a52464e4b326e664e626271693165666c4a364965572f322f716678785a723673767152722b6d325234753778353832766d4a6d5961524475675739505278554b79586d3166384141564337682f4c7a365a4a37444a327675375272622f686d5265483436657258696e6e486f44443644666c4b3874724971775966466d37314a6f4a47355069386f786264452b716c4c755071445041757037653944736c5079423741442f567974365446392b6d4948686669742b426e69666c6b486c356576452b316b2b4b364b6432487756562b424a5563476f554d6d506e616b2b4949573755664c736e7249586e386c5066706d33744b766d41516e336d724d596d7672356a616e386f504f76543331482f48343473447a5846732b33752b47767a6d7830535939345a582f56624846476930666456527a3663765a5564492b38645a3058657842445a3274496d742b4e5241507730382b44776e797a7948307030374a7648382f665450354a6e7974362f42393278524d49587866544c50584e514f674b3431694b2b2f36755144496a716c484f494e574a6d4d774e6a4c504576547a385150537631473376464d364c4954713732393545744c6a566e746f38723165554e68355661714668766456396964587545766534365a756850514a7156326d62617471524934772b6f53644d385466332f4a6c6a5a752b514a304e4c2f79587563363351686f646f615779706d6b4f50704531544b4f56652f544b6f675537674744456d3772425a3078453849676458764f46335866323639716a436d417a317653584c376d6649724e42526b724654616a516c63305252504b4d6f352f666a4d2f5963795454414d7a4357484f655038414f342f696a2f6e4930562f74542b4e3034337139366f56364758504854722b46654f61662b394a3036462f4173686c7231644b796579713332766f586a5034566171657241783746553648683044743754504c4564382f2b685450356e656e71642f38414f50794e326a34335a6f35552f692b6539316d6842387a754b6f6b584e546c6f3037364f38586c386f59397a586355747871704551595a42376c3230706d756c486a4133502f744e78354f66344a3676343263756a6e6a30767154726e6e5457584e304a38714d7136755a575767755857454f756c6d7851786e516b4e4a39766e55414e414770546c3752475a69336a5563752f574847766b396150562b3136644379446239552f494e4b79504845365a586678527937576e7a626b6e7565324d6f56374e5243706e6543537477413936302f716b7471646d50345146385838427474636569316c30554666692b33753059394667506256504b68635a78746a6f644c7a43396a644c596d7137376c414c6d5147487966556d4e317258376f6b4861773871314b4a6d34546139487869456f347437433472756c796e484f32576166707a316b316b4b3230566e54516e6e614f7244544e786b61445a4d464b376338776b562b504c34377454336253645479596379514d634f6f5161776768314f4d746e7a685a326467705775684c6b55505930474a724145706173524432774b6239552f4a373448542f784b632f783638654a72316b426c5a4f7146557a3964647933374643425279794d7064437a33537055437a64376d2f627373536f43307258766d4256586c6861486c7453744f73754172577054664b716972564f2f586c764c506f67693073337364583248464b4a4e456e2f433776384147396d42464d517a4e2f713852694d52334374764a3866694e4b656e4b5646513357756f347a79544c7a31493656655737504e713438334a2b4c72694c2b55646439685256702b3371752b776166384173544f6b5164336a566d4a4c4552356f2b554f305a77304b61584d512b667969763473334c6f7a447a5a6b6c786350386c7456544e4b753335522b734b67436456482f584174337972793377667a432f6438454e336a4b4a4f53786c4136474a4751637a622f677478374f6146544f3256457977306373375a567139355355464b576d35552f557845784d534c72394e47572b61656f4870727a32503633794879544b38675a4e444f76536c48487a47533564656833552b354a4d67584d5864532b4a3867704c682b353072776f616f59747769636a7633347836542b3232644e446f755a31324f5565706458735a624f35716c434f61544b4d7346676e7443374b7030794c576b656663787a6e642b76307077636b33384946793554382f78695733734f4131676e656d6b5431597a2f68324e336b797454334b4b596668713973646c687534305749392f436659365a7176685a6d446d33744462505768697450506d5a49577052516b5142584c583536644767525357535833766158305a6a4d6c6e314a556a38527472442f5946577758763170767668513579484852416e4a46614c756f593173745461534e5264634e4866354f636b4e3652676b55736b724277542f4d4e725632343435794a426f372b5a6c36657a6f36686463715647553571754e314e6a39783373574b455836504863562f4373584c51747336684b5942397748784a554e4f3649724d394246646e79692f52386573706c79394f65317658626948696f6c5a6c6f764c5037584e446f386e53447247737331454137696663332f4a4877714c34553354574f624867497266336531436f58504252475042625673537367763773495835416d5051316f4730564a6336686a6436305253356b3566442f4142516743432b474d335735615434794c507a2f41426c6956564c733144755650506a534c77454c71656c4664706c44503150565546397a4a467938743745306b7479356b4e595a76436e763263784b774a65566d36537a62497972367252444e7678454b71586e755a4c6e72314b6d64306e63646873574c6b4c657a32716d474f5774715363524551436f4c335a3073644c36736e7875384c615a6e4872625166795646437531472b6379347455395648574c79656b784b6753733750756675694a2f595775766d45646662546251304d5562395a654d6a426f75355858526f4b4e7a354c4c47354539584b484d467a79316b6f2f3458385456614b75316d726e3637304a4268342b326235756256667a645a486233754e424f7751504e6569695631304131546973574c5a4f755435616b4141657a2f4144475932436639544f4d384978414e48483439465253576b7039476851644d5155364d4174477158376a36522f6b70374f496e5844797865583171576453596a6d6d74592f4531675067504f626e57614d4d6279646571744a55584a6c5a7a4b684c35617a364d434c4b457a54583148386c6742385a42544e38774b61324551372f51484273664b6363374a4739666e2f4e476c716f5a326a496359714369545056565958496147314659525058376568784a6f4e716b7a47426749377261726e7a452b32536d57324766516f5848786c726b555541533050644b76354a312f57424d39434555712b4d533041576e33676f766544742b7a6f414933636e6e715a3035595a362b4e53503245493637674e54506e7a32506374363646504871574c3662493352324b514b477170427858735775576e567a3775787a69434b446e7273684366684d6c6f4f753261474e4946504f73684b647a4547366b7a427a414a7a306d4e59516d7279446d4d48632b783230576d595a644e545642587a33447a4b516853467a63553369566f57414b4c6e59563944326772355539576333414a7375544e58626252524745736753686c356f446c7537527036685755657861514a67584c5844376549507248734f6979674f38486e526a6d424a316938354c442b5233454b795575544c5046494443584137506f52704245796f6b732f2b4852387254616870452b646a7669554a6d414d356b3153677a5059697056706642436936584a72316133754a39797237637a326b5273736d6a712b32497a73596f694169516b53416b3844434446767a39477149463057556f3444723166646f55413231552f794b6c5631684b314f533532666354316d30674d78702b7637556366786349475a3156795871564f3169614530636c597a6a6972527077692b5549777a3644584b6c69772b534f596d6d522b77736f456c4d38314756414f526c707a57704a37685a554c567075707170573259635a54574e6a4e716e54714a656b574b3169375676365a72396e2f546e6362562f6f4250387355387363785065656b576631754d7161664d47754c76786a7150665132332f414146662f5434676c6346366b4a70416a6d6e58776c634246476a465345386f4d3479354e592b3654765a72383865674b344336694974457147516a524b7839457650633539587344324b36552f7941567a567958583357527a614255574c7172617361616f4a6552724b48347a7235446d3073636d673643506e74414855634d6c30422f6a5373416954324452514f62797a5276426b53713774626c6e5a6e6f6c6239466f4e797731785762424b684e5843534857714a332b6c5847416c5536514279486164464c485150723436306c7642725a6571776a375852656a34644248734f5833556c4430656748514a6749412b5341726e76444d52733756524838724c6b396b30346e397937366f33737931323538566b5a64354743465765316d575a43434771624e4d5367476834732b594a543434453059564a7a30636454302b62634d744d2f59697a2b5a36733138544e48467a626c426f6650526b35314c654a6c53354e46346f3452696c537a4233717a493246496a714470365a66556d36675a36557656545279572f77423347764269593565706c59665a524654334a6a4364662b556a356a6441347838344d7076305a315763596b7a2f414a432f756a5a6f5767712b6c6539735a6e4d36655565442b3172596e74504765372f633477496631314a424937436c6e3654464f713063386b4a6d6c6e6b4835574e45307262386c4b6a7a3168384a6f7a793648372b45506c424e48765752657851564e3535664454704a5662705630724e68506d554e484e524f3349326c32724e4969356a4f425a705448704361474b5941436d44356961784b684f6b5050742f64665651506e4870516b75765464337772626b6e7079337031585646486e54376e6561326832707441364337766374686b71695a484e45466f6b70562b674874396c3654387631484b642b72646a49577843596a464e656a4f544b567934344c56586a5857527a477043574375715a796472346c73596d7959484b456f65416b5144706d735431444c744d794d7033506e742b6c6a6a64612b4b6655792b52554c587879395971555353746f64343739356739517972394d4c375256473448427779734a4c385131784f335a4168776442756f7668754f36544a58496a4b5639692b7051667752726e6f57374e65384c462b3930344250384158506a754a45382f7966663767375a4f6576444c7844644b5835774b6e6c4b44635a307a646c736b615632334b5047705973766b4e46414f74637130334f544d5a6b4a39707872506d474c664869314b7137717448506d5a76536151592b75327673326539427275743049353455512f4c6f4f58496d474a694456374b4a6a365659557355517a336d2f5462414c535931396b574a42464c6a63646e38545656715a674e6862664c536a353631364863356279637670574d4268316a46776c78306b665638396e58506565514d356e5678577a7957623662465135565648304a2b315036525a7a55317230555930564270356c2f7872707a6a45325375522f434c6e5651366d6e374955746a504c30466b2b4e2b554f7861624f4d536e5279772b392f4845396e6172567772474c7457757441696b422b4e4c7077367768396b386e7941617672457070774c4a7033687369372f41417474675158376658646f7031434a72416f564b35657370314e582b7635364b4a31496d5975784d77556a796a2f636b6e45466d5a6e656131546e612b57694f723237714b756268452b596e58614e524d70596a697a63526a2f4f5a76374b5a5533772f44377841694e712b425a732f706c6f58497a6d2f7741686e356b797a6139457a37367648784a32746e6b70476c4d62526c44356e7546687943714d4666756b2b704435316b525a2b3838684d68394c2f4a73566c326a466e4b3239624e6f794d655456667354414e734f52724f7434776d6a4c4d44684f6a512b476c4c4c77703641634439335570364a524e346e684d6342734236636669747162716d376d7832614e6735386f53307a3467513652684354495069354c4859774c436e4a307258766d70595a4c676371727450542b542b715776307a4f522b38713948735078627952423747486b61303979735643527149486a46314d2b686f31786471714366672b516d367166367246476379773157304348736e34526f6e7669656f686e6c47504c343176784d515a39366c704964726f586d617451624b6c4f766f6d31354f314558466a4c444735524c2b4f667155746d3635585576635151334f35703739665a454a4f6135756d435634596649784768533931566a35425955704a304965466459333257644955545a53795532656237446d756e6b424476442f4b384c5a72746967316441495a68695a4a51552b766454644a585941585875665954736c5951735354784c69677164387979426677682f5635745733574d413135443552354e3667347558342f68346d2f337453465755502b736c7966356f376c36556a6d6c6d356f4b6f6b5a6e364255687a326831534c5144356b394a76565672694a7a67506f50462f4b504449386a416f4c506137794673736f796146736957654c7861484b7668794a72726248562f58545243784d36424579436b2f656331646945554c544f5a7a34686278447966794c78727948566d763049554c7a5554754856432f50506d733438332b536e616d6d2f51466469535a3955327050352f62587963506c55637747794a7850547647367552487164464e652f483435714a6b756858727032387a7941564f35504a51617447576533504d624575426d4f63346c5177514650334a306b47685358417373457a757a3449465a3150644365554b436f6c704b53546f614c364c77707170736f344e45665a43584b326177467050677357757a3565632b75466d2b4465427072366d3130714d70475854506f5372354d35695a427a4f3654345763356f7248724b75357135656c31697a46314c67744c37667534503959544d7a4f5a467759666974474f4e6a6870503674616f4f5767465561586670362b314f4f656543623946687a3056614a7348674878423552744d5464392f774361426261634b58526b6f4b7450554a2b764a416b79465337394835754d527a34545856785353356e73304a55713978415a57453550364951554d544f497a34436d4c50424d544e714379504b7230554f49367469754168727242676b794c5634742f4c4a6b72574b5375506e436b3531786d7166726d4f37377062544d7a316b574c463432794f4e63417a662f414748696a7a744a694f30534b5a312f5675482b506d355543705745326f58735948524d4b44436a3634744d58663141444e38587a354d7a58743057754f42712b723071644e33574f316d616c77394171745755674d6442613533542b317a436e49334a45484b4932385346513076314e4636354d4a62733270526f434f79715657316b7a464c446f51614b57533572756c6c773973595045396c476850477037774f646f437777436c764e2f472f496647335165554e324a4b7338546953616e4b5335656e6f50722b4c526d7a5a336c774754395a4c4b31373263416a644d426846372b6f41394b7a457874774976344436596570322f707957353132674f5a374c574866715436464b75385278302f65535638336d645934734f556a5879636b42386a707a634b327a42474d7a65735277466c2b526568316d6c624165743239666a69475a376d70444f7a57365662413059394b326e765479316d45303957666874747249694f6c737a4a37456b776a363273586d4f7645427a394b63614753535967374f6957315757617a2b7673507038686f795a5172746e5870704e77554b3048456645394c5141787a546d6e36764e2b64553766506841312b386c3874354659374438656f4e4d2b4a6d756456637534585556774954484b5038414854325139535031355a5a52364d7032422f6e65612f6850765036764563637a316b5669586e506c36646844346458517a33367a3831394a746a5437633242624f775268325934666b537a6a4b4c41723669663673314543464d564772725a78734a316c65714f666c34466d6a355648666e336a546f5458575835383933416e57744d656a79724c7945797a757a5971503430774a4d314a6d6250595354354b783941503974382f6c4676455a565a615a4c315272747a6c336e45724969432b6a646c377735355766566e37633736715a484d522b2f6e51773170763430317845596a4132692f48713053385538707a77386873594e6c6d4a486b315667356f6550596e4946335a36646267305370343557684f786e4f447a35414e79303863354c6a724f6d703343304a2f685a3773395661435a504b754c6170372f6e6e417251505551517748376c4779646c51664b5578384e496f53616c5670642f6f504d61582f414a375576796677642f4a554a6775732f77447a4a2b634c474e416847693776634853736e4e547447357678752b534b2b632f693661584f674250792f45426e7a625335745854694f73322f735035594d446d5a396e6a395371696e586e374f665a784b667431524f34696d64696b73736c483330464f6d656a2f6b506651415642776953373371443375752f7742644236582f414d792f774c384c3961665362786e38702f78593238487932724e385338546d395a504666444b3866546847796e496a4c533334717648614b46703270744a52445249594c73706a4f677632487365585050303961613239336636446c4c6a656f473736595948384e6a3631314f724c544e4a666c76646232614637395251506d2f384148716f4b54735a313261385a313066575966316b45784c426e2b592b726257656165386449767a4338663076512f784c3048395a4d5079546274384b396366443850536f544839662b64677430636934664c50486b6d323670566e37792f59304e4a664a6a5771794239564676522b45384e4f643032724d38315253646c4871682b4d766f316b2b74746d626b4b38632f4d2f3067387a394950474e734d6979756678324a2b76342b47375a70744a6e467371717a566b766841307755656b3578454641416b4c63743754582f70323364527a463856323862424879527566534e564d646e796f6f546f7470335032682b5853433272596c2f4c47475765514731516734795767777044336d353238386335346a2b67742b4e486b5754442b4c6e6f7366485a6e6a2b664a36592b476678484c34424a2b534c6648335538364461666e616e787339495865774a2f633252307a6e676e6a49657544794c3774392f77434c3743546e704b46335574316c4c44374b6b49716d43567451376c4e5a424d32644a6b316a4957722b696b305368396b47736b534330302b775877495876656f396d51726162387462642f38416e564e673755782b52527a6b724b686239706779366a645969584235423951715747723378752b744d444f4374776339765844314944506d757a7635656969666d766234376b6845787641386434524c3352324d2b766a6956437443632b4f746e556d2b59546a6134545a5779653658656c4f37766b65564c382f50556a5238723839693861674e7a63587838727847733648535a3561756f394f72744d7a6c714a6163324656556275664736644c413442447a3749695a733944516a455a6e3136346a5151705466775663705439594772556b4b7132676c516e38372b7448715a5349566b5537476b73522b55412f34452f6554663330634b7835514870715a387975636d584774354957784e387a454b5334657555796a67414976576c48386f3476396177594170553167414e492f4e492b762b5659392b4b62344f413870366d787557537243616a67704645336632776d6359564243786839447244353736434a2f424b74657a4178367356664a3964546a35786e474d50704d6c676d3972744a5939576255724e3378653270612b642f32714277394835766834415433633241744d6d4f67754878646b73552f76497252624c7970614b4e43766f6f356f554d35786a48304c732f516e2f7548367a414d695752383549644f647850556970786b745270466a41656a2b566d354d774336333945787a2f62387131687a69754130794d316b373247494e42754d714252526f53704575477754506b79326b4b5773347970566f302f4d532f62506175663541364845674d783849566b345059447356733045495135442b4531585459486233364e67395641377474436b746f344d626157442f6a786e514d67796d4878716b2f50522f5766593838686d5a6357307252616c6f30784a355770566e4258785a45494c6f2f564e53682b783837486d6178537550346e454967677659332b6e3550763978492f4350444e37314438343861384738546b6d6f3868387232592f474d4b4c695866587070337134324349784237586a4d696567656e77462f746655393970752f5a6d704d7853756263646f2f6f6b66687a36432b6a48344c2b673367666758682f6a586a6d6a35563954464479487963504855532b656559656363595544396139797374564f66444a71554a587874494f6167556f556751764e5073386255314c617437576d4263506b587148357a36674c37566675775847486a666a655548596e7470484f7737707249354e59574e7349754579364d53547a76524374316a4744572b594b76687a69496a68417033617035715969354a364e4357725a677a6b44334c322f496361567146795a3936394163384e526c43334f7a522f6275707054333647716675564a5a37674f5258666d6851354f436972797031645146504a427a5276304d32314e586a302b437a3433467a73783530743034696b644638546a473973777657735533392f71396531773644797966336b7656626e6c587158344434446e3076683734596a617171782b646b366e417372655876523763746e7852706e6a6e2f625666706e796b6e6c4c5775702b657654394432577549764d66454f4e3756504650744f464366724c57776c756a4a394447383474346b4877566336544f4a4b4e692f6e2b483567642f676c596d587a646f6355766b7165766c6b594d6f36533532546b484b684a633954716d7552324b656474672f485064776d4159456248644566653047754c4b753734656e6d4443583539713955365932756e6a746f6c616831644d7041763570314d722b7232566c50754e6242635a554f2b644a673376576b667a45364f4e652f715067446e5654794c3579764e70477445674d687068585968776f542b3776596b754d59736c2f4d7779417941426a585433336d356e787561766c6b466151452f6d523031463044567a677261384971557347704a743537546d373753686f5439674f6d5a47364d46744e526c514b616831624d52756b4656554659784e34544677324c31376e5070644d4562306f702f597873534a52673173592f4c332f726e314a7139376c424b7649477a4a6a354432435372736a4f3076744731674b4f77312b383646572b7741574a436247542b3768385a31496a304f2b34522f6f4b314b697652637576715653716d523052527a6f46315a384667394436715344746275697a6e6543512f4a3767496a4541373376417664666d2b764a366634754d4e485751546e586345784b42483867353366705a694f306c4b48746e354754756a7a332f38417761656b596d524c506b596a4f63635141447a487957434b514b6e2f4150522b6c716f6576737a4764454e42316c6255653335426e2f34613664673849436149704276422f7741656631496c33706e366a374b396d4b624e6a7030453156354e6c4572302f65592b65575171484f736e304a7856644c38663244544e315845694b51372f415052483366302b596e4f337534336b436237637542634e696146364e7174614756316352726d63506169356d6148466c6f4c306c69666633776e6453664350374a714d2f77436779386d636961764c6c7a50343233455a4a453538793969653879304f712f69614833766d795655387a79304b4b71456f614a6d6b4848307a3459745559616637524b37735574442f41494d6d46374253733371396f574c364c314777754877522f7741566a7a3264503341582b52644d652f31654f7862352f7742674d4653654837775970666538465846394835434472534870434963487657463879313835336e434941446e36455445445a714d4143524a747134426b777065395973695478764f66722f59786e656635546a38592f763841392f38417a38503639776c2b78485039703677456834514555774572686b62523673434c6a5453527271643862474a373861666a3978722f41487779352f6d582b5264483261444a6e503178686b7a356845786e506e5348396e30656643787767734249662f7058322f384148784366452b3876623158744946446d4e38376b6b4942786838366f756f36414638674d366a6e61503876642b6c75397738574866623043396848307a2f6f4736584b374b706a65643631596d6a375332644876786349754838436c4a4176643757467a39382f78497a49762f663757663043436e4170792b733677576b50466d7a6957394e61326b53512f783977475264456c633731582b33715865304439356952422b456c6f5761506a49564d4a6a615a454c46665a2b794b79786d6348546f456c734c7046376d4d4e502b664b5066377a3979663642303452454f774941682b77457a716d44453739487951574d596e676530757a722f6b6849705441302b39667769662f414c76634f66352f7439676d7031544f4a4c394a716c757a326a507a524d61516f4c70445254376c6a4d497263497a6930312f722f6a7377664537396d3053304878356e46386a50305942514b426b554d3030714c56696339584a537a506a594a54734a797631337158653173617748712f66776636426e773050373867444e48505450536a3241384f5452682b316e537068416e70304c594a5764344332664e2f6d582b4a6533326631586e3876754d327141584572746a625a2b4677534c6e78334d436c774d59443657754c69514c72302f346d766743524837484d506f4d2f6468626e70623678332b6e593154506b4854784e494f2b334a6e506f6469725162725a58655036704534596d634a6c53656877754148734a772b396f72392b643950643952764a342f363735666c4b64485971767a44746b5376536f6d6f30337751354d68542f753155624635424856385471493566313052366e372f4f75706448387673786d6b5932394d44567631662f41434c3873387877322b4f746564575258575456576650595447726b4b58517045417053436e516d3733444d6f412b747961564a6a4f6c79534f65314e4f4d35384272456a2f536c58667353546d5151437361574e3552786f4c2f565975656e326638417747722b55685a2f384c707457524277754558514663347630527467345141675674704e3861484c4c696b65315836674d6a5977485430456657694147526e2b68346a6a2b43466259787a6441573751464b586b67355874306d30543930684755754a424369496c7155345a584655555a4a614c543538784e39766569424366427344766a6555326e596c5775616f67724256374a367837386f66584d626e5575566f43497a3956513467417a4a6e4145444d666542745a2f5755327a474f2f7645682f6d5a5733577445716f52667037424f354b6c326b45417a4a6f6b6b373237357662554a7a696c6665665736666633326639473570485051434e4a7556394d47356f6a316c71557931312f556c48346662496d3354587a32314c47465945785454344a2f4d6b334f46676d5a4c396f433864397a2f414878705a33524570452f626a576c64484b5761532f73472b2b713739495842397a535a77525166434d3344393057732f774466612f616b4e4e48516c653735343644414856706f30413468613835633445396e45474763787638413942544b4f2b3732475879302b777a634454372f414661744f2b59476661374461436d76634a75736c5a506e67384a6e36536e505a4d6968566a4667746f646452377054344c454c4278744470576635757273743443585a4d6b3955793159546f364f674a364f3275474b455572746c6e706b564c6b7a456b506b593562424472422b586e7331526348425a772f366963356e505552615055727036316152577637412b315753614a6b41316e474a507466493479557463596155756777552b7a3635483765484d307662775a6d7378314156376c3671714b4b654c5338586c4e576335307570583850475463615a66624a6846313378384148635344572f6f415366584c48747578353544526a496166324c657a493666464d65585730306470745239683779643941532b4d573948355773416664306b72396977396a412f72516445763766763571562f6a5a35622f7743476558624673767044356e734b62354439657033565974466d594f4e743763324a5176325755646c2b723836656f4242686c4d5550442b51674c6c3174474c786d4f315565774830582f4a37303438743950486553572b6f50685450436c506950503046365a366c487932704b62533570626f616a58786c4d575435467879547a704a65467046326c314b754d482b764e74707a457847336d486d462f7642666d33692f6b5436715a3368666747356f37754c345856714474625038414a76756b31664a4f363554466e353430664a786d656a48687932695a38614d6e33365a6a486e666142392f73326a4e497a62346878324e66584b507033567664504153714730396237675134557a534954504f7470554677574c2b426e2b594d54656d627641425a4750614f383339723738637472772b472f77444b727a2b46474264713439574a36536f6362387654375944356336377a79475761566a363039796272454a55746b3733382b2f7a374a2f52723650427233724d2b376a2f75477858714c3533367632655261376646764e647a50773563724f7963374c6d72304e50787a5364566a6a5242624a6e56463070614f5a7562734b4157324b624f6d59775069327a7a546631537461346a4e5278392f4e7a38676658727a587a495043504f665675765138612f6970395a475a42525442673253475357357a4c726f5357506b54507277344c52506a577a6462476c767657516a7850546f3070455a697651632f3264457166684652392b6a2f317030315373657172366632502b5671426e755a51747a47434174466f48372b66727168594b68332b4436666f506f384d7942524b525170356b64457a44552b6d67714854752b53464a54674973346d675342692f6837332f336a33694163506241356e6e39317a4a546c59355167774e4837736a4c58705370593154495a48316632536e34566e764472792f54475448527a32665845437a74793432384d6a4b6c6e65474b5a4a4f6c4e30506930567030306150515156746b64692b5463304f49593032464b2f345639347670456f50596e6868777131786e694866324b3646787572552f327075464e61564d6d2b45546458476a3378395758455a7157664d6c4c674c74426f64434a2f733146384a323566683758634850452f647a75437a6c7a436c427464546930536a5352536a4f6b414d725341716e7050516a45666a502f4437356772362f2f7741582b7163617a35684a71473536477571524e51397847756a73626c5443656a6e4b45614c4448326c4b6b6c623333426e2f4145734b66335a535a4c39696b4c564e725450794178755432476b6d567a6465644b566f2f63362f676f4734722f68714343686c514330754b6a6f35387930687a354c4f45537855587a4e744e706e68587148712b6e62446f31685052554c5864366134304c63445930724c446e63674643387032416c7774347a76316a63343364497a4b63576a587332386342416f2b636336586e477554627a6e58646f36435a71457273576e3771506f7a764e5031796c52306e695031753944356956314a6d6874523972515751494b506c662b726f4455766a46504a354e5553686a4366354a6e4437724349676572706d346a506766737555434671786d63435071553432774c362f694943504a574e4e484a71546d2b5869314c49476463716b5a3164576e764244392f346534534d51345273324431503662583032704872525034776158574a6f3978634836693665736633356d636a2b50323855494f4e5548444e616e7044396832582f44722b37623668666a6636476c2b50742b4b6e64386638633867713066547a796e4c6b6e30372f4746313244532b44534f2f347875783177737555706863353878306734575564515877385772374e57397434752b372b38526a61325a32463368766c553543526f50514d38693073336f665530366a38663071436f716c306d6c436c48654851457a6c754565527a663841426a542f414130566d653666586b497035422f654d38776d48587a2f41416677765a785762676c7a393647375438736b464f67576e794f6574596b2b724e3559794d57496348784d5662577134617934446d7a487330645a7669527a6439627679463951767945612f77416e382f3147366b5a5869326243366d6175544f5751554b54584c645a44317179584774794237783376486b435341542b764e784f746152546855617136466a6d64626f4d7a6c69336b2f566c3968584f76524f756232494d572f4d4a6b74552f794b357a676539665a6d4f4c7065776539734d685a52336b37657972466a754145366c505a327472676b7a7751377663354c6a73396a4b534476506b4577516b4f4b506a5163663841514759334f6f645136546a4d704b7847766d316f7a575451797a4b58516d6c732f5a317357356e7a4e4c6e79657a676b5366676b446c4a4b50674d64516379716a3448304c5837564b6c725a45756c557a37416e576f6b3276544f7a704a5953394c6e5867347973636c744850667a767343305461766467576e3646654937506d506d5535352b5a5a646b654f5368702b55365151735975614e367077696d746335612b667964476c566e705376746e7a574f4253684d53556c4b59764d316a4538647636693050555456387738435a6f5a577646705a462f6c695775696e3076486b35664e504b79736f5278394e4c6b66504975647966347573576463583131706b66386f64524e5132754974783637524e5052616a4e6e384d5a3553674772387738505736334c5150516e712b7570754f6c6d5053557a46687172635254307442676c58374e4b772f664a772b32567862726a3462657637435a2b612b7666672f714a34705a58343334386a497544467934664c76416446326b456b314538396d646235506e4432696969696339443437754944566348633642492b2b5667652b6d49704e5a3639425845586845642f7034507148345a346c76775a586a32716c476c583139577533456537354a496d50716c53755963643566476c4c44522f71575a796a304f424e492b326562614e50646243466d646d746a356f43786241396864505072393044716e4e7a324958484b4a694b32465a4d732b465742315166464b6f7a4d506665733832664554543039767a474966686267424c41777072616d38747730546a31576e5253706248323153644672615957463169326730674439714d48664144707645784f65365236777648764c387a314e394766446372307174454d59504750474d3961382b647377342b72524e7463304d6e51786d54384a3266335948554a69654d2b6e3258424e2f5153507773507a706a62613032346a686c2f6377776649664533656d48696d31566452474d46757858634f585449566c2b6a4a6c7274304a553644545052762f77416b725a53524154515344336b625254543372396e74453770376f484b7949685a32686c6b794867306e633577307452544a786253532b78336552386d49534a3743614e4352487631674978542f41494e4872424a587743707a554b4a625750373863733963756b30526d4e6930466f4975734d61462f4e49512b7a396436426d42704a706531663841514c6d696c6d627a72706c5143356f6e43775839356c503555746936347a506a674a6b2f4b7673634d574c622f6d373245524b506a677a2f41486e72774879554c66337a69564e4f65617844615a597946564972456e42396445303742642f78383379416658653962674c686d587642336441387a596a74316379476448616e335664426e614a396275676e6a724a6f304c6b396f755a5059667769547564363052415038467039762b6566377631346a2b675036546569506930586f3336647a2b512b6c2b586f76334d4c78597259642f7832474e6856542b504a6d4c547a366878337a757a374c4a39714230677a5569382f694e6c435471684d6648746564317357794b42395750466651444c56704b3858772f44664836522b316d3836654a67594c365a4e4f5a4e76687030792b512b4c6b63646b704f7a306365684147716f30325167315a6d584c784e353751387076397758446a38502f41435931396150334b5a35506b3431414c46452f4b6f394c717034317a4d5775703472656c30374257544e4a72756c48397235586534532f72304e4b4d36653376714e4864486f54547972706537687256553837523550396c386a72577a416a2f6e34694b51506f2f6f666736514155786e3750317a6838763866312f555a51356d6c6f386d577250646258783735736a70736f424b46794c587959756463346c2b376c453442376836354c6b754e416e77796c53643938426150444f627376336379714b4f7064585071303872575a4d68476633382f6350744f644a4a714870386350514c367a4764347070384d4b5774753773416776466b41317473525844494b676650533163534a3630563170304a346d44542b703246322b653768455a39506e4a6c63494a776e454362376549506e4c6d5871786f7445702b467a59734b694e53356d7059786a696c62494c6f5354336e2b6b6d434b6e2f41505957434571416b39413569694a6d4f6b687235445a796143505248546c4e7076384132536a4e5358336e4d7671364c7068764a6f664a77714638516f4a79366b625063422f707458663652457a4f4f38525371702b6c546630577a672b68746f734f52644650314335442b352b387359766979486872536f6a426745766766395a66796b496865764c6e6477794d796d4e62426c735376717663665030786f7a73614a4c476b445631692f77423244316b726a486e774c493132477833745566422f702f423966556870524e5754716535384537464a73452b3074476f306453705a56387256644b4b326a386442643976772f7033366353586577424650394f58347531363841745259684437666c624655735558784f7a526f52594a4c6b366378322f445437752f5936785973416632523939684e4469666579597441494f6f47666161435745367048654d6379615a5a4b59527a72706d35463332644633532b5a6657634a534f66433477542f67316e3942392b6f2f745a746f74584e524d766935757a6e313156307445744659444c2b6935396434543044375354774639423342412f5a30434d455a4a326351696747664f5078557249412b51554b3757612b744c6a685778656252797079663330562f3841305458774f2b342b72477475504c33794677355343794b4a67504e763348497579786f413365787131722b347436513455345758546e77652f756c4e4650412f52633976736e7535686d725342625670356c723761685138447278355332696161516161434a6878714a5a63664773513777766d536b7a397673494359326e752f4d4f36716a72532f774366764d39544771375879596d38675032796c42584837452f4a784d594f57745857632f38416a456b66396f66456e76384153764c6e647779422f615657425379644d2f546368764b4641686b6e454b73624f5848324451544163723666755a7833754e337941432f2f414c574c47364259774e7a5a7a4d6d6b6c414c494a36436c56456861484a4e51353145384a6778624a786e4662654a58384a32462f774446416a2f724f764c6e647779466a7a383075665a6a554c496b6b785865674e6c48522b4b6851484e38334d2f34695a386a6c733474534250334f4e7676352f3841454675762b4837534f6c48397268574f76315139517432336e614e5248676d7a4a6b4649696252706c4a6b70634653527a7950717633375a324f64372b456c454875574a38523867592b305a3231714f723335542b76384134642b4e66707a6578314533664e764b7648655a50695869314e5961656b64506347584a4c5331744f625251693378396d62484f355879724d674d2b714e58592f5a4c5a7936644a765035523573664c664b7649764e2f4f647a7944794879507447316f58753033324d70503457665651795765465578464f39365a3466686e574865684948786b4c6b4b39744375643852574b544543474d6278385031586c4c324f32326d734374476b7631774a43517745464e523051596f703575302f462f7157773069497153416b7566336e72774361614b352b4e4c356e69324b66765975505a39353331777943587948716d4566384130656a564b332f3477676e696547416d432f6d532f5a2b7368462b6a6f305438674d65454b5553634a4c586434424f566f45764f6772582f414d434f61476255346b7261452f58453776752b627673442b703231375765416656505131594d616c776b786652487343514269435a53775865336c6a587553545931334b3450656437776638326d30775a374c6a64722b33543642666a7a2b527635542b50384170442b536e716c70656c6e7064747a365a6f324d757a71746a7954656a6e6e6a3858784a61364f46466b36444e54394457356e742b47634b51476852457435382b7665394e4f4c307275734e3676376a66396b76314e2f45575065395876782f33625058763861325855634c5678656d7a3142395075716753534b664f6646736c4a394c485652317a4a644363484b475a79574f656b2b7539324f6a375658556e62666c742f354371763750483572614834792f6c4634683466354a354c6f59666f3736706130654e35446d412f587a6b34666b643155732b6671652f496f57794555304558424944494f64644b464a7a7a2f4359543754706538303757696431716a72662f65372f45785870683668654f2f334b665150487a6c7964327348502f4a44777a49435666623944656347626e2b57356343475549314d6e5579317777756375676c30464e4d52664e316a36466333737570756a33462f6f4e5550536631707a2f557678626e6c6668506b644e4c773139386c5030307672324d786b556d7478384e4d476f366a536877356f7a7a365470657850553052794b456d42374f6a7661754a32794a6833314138694372736e6b65657861732f4953334b686b6e797356312b6e4953596f71704d51795376577a5a786e6f367870584174695161747666333836537073723443744b3676796b396273547a2f7a5838646653725739554d443068793333656f47726e704d3872775777382b6a515a666f31626577344e445768544b71396b79684e55426d76674a5833693654742b7a724e5976626275486e7632646e57386e7570312f4a74437536303275426d3979766c77712b496b6779616367734f654b554a58564c6d577466365748445a375234763456647354574f6b385a444959474f724a676c54644e383172666e63504342485a54716a6c623751496d75535836547a706e50774136344f422f6f6d3654592f642b7645456d507335336a563058567471544f62585455735657753262733735706774616c624a556b6b766739795148375863306661587556786f3135504d53444a656562563234356f79466768526e2f5a45334d426a4f667077794749302f2b6f5454722b5034672b58326353762f41464159674c7169327665765754696a2f4b3530373564566f71356e694d3075532f756b6c714b592b775864376d79686f584f5950755739786b63624638702b32755a51576a344c366e55597451346d31624463525179773236386b324e3350354f4f676951632b46774d6b42315161487832735a4933352b48536230704a7a356e4257316338656b6a70563442356f5630506a47563379336f7a6150633462646a717358537959305a7a74615a4e393157662b724d76507379783176707a69457161624f74334470555537377978473466707435634f59725079744e32565874614f67796c5036426b6b4b557947362f514b584e7a31766656485a343637553553716e6e5a465461712f6d4239334c3571633731372f356a56442b373536305a702b6d666933684f647957477652314946333877666d5a6e316a426c4568632b54774e4a7a4d2b7250634e796835336865785164562b7a6d544d6a2b74505a716332656b447a70774936756c4b5353663061487a735338656d78687536396335554e5a776d4c636b3266624565687833652b7a33393934633442396d70334462335238457044315638504c78444e646d3531526547364d6b4f646346547241744a4e484b52563234336c4f397a50653573346f61316348386e4d6741424a507a7a694f49393433707a35756e306f394f344d50784431306a394b5a4d76784c786f2f4971634750424b667444734b796c525038674b51706b304932753678412b685356416c5031435a636e36357965526a644f5a727541334c2f4f424f72355a75654e4c2f4d4650714f486a633536642f334d7a4a31764a4a34732f506c5258594b77536a2b4663466a71493947644a7a396d3067756e6350765a44386470302b4766643752735a36692f6c704e7a302f6932312b6234474a676175656d545032354f6d65684466636d635a756d76675472737642306441726f7a6e7a6f53784e61677052547a67543531302b4d52747a61427a6d7a50797a3947637a7a7a2f77446551395366562f50386d33644476504663507a4c6a76482f48344b704d7242727a3835325834786d6f53786632687a58646d55723744543154466952373833317435303759354b31472f636e713736422b612b4d615a65476e357475656c3275394538586d736d66355456506e373065586974546e4e6b322f62383168465252506c745645343537776d41676e4b65344a737357695969653050466a2f41484550442f444d333868664c69394f35504a595338717a373331786257576e46697438676b474e6c4647457030715a536a70534a4d3746383758457a5671577754703666562b6c6f7a4f7a6d484f743369327434394e566e656f754270747a32773162306d7450312b59316d6b755436794e444933584d4a56304b6d446d304d563166327670436171535358754f62615a695a7a586f4b56386756424471615a774d356f78726f75637168777a77394259737a312f37706863524f3971316b502b74726a494b656b58364d6633323965624f376a674238306a3461696d585751316461522b37672f497164585a3648766a543751527866532b50687462384947414174524a2f58752f71312b7a492b566f577a5361526e4f423859424c35437a68535773585151394c6c795a324f55756c784d366e3576386d6b662b786f677058663666423950304431744e447574343752587a6e42714362696a34716d6c6c6e31324b547a6f79392b464c484f45707a59745052434e334f674448443772427a317a70387636724b34342b546e6f4e5a41744139614e2f5463487a4138584e594d354c715877784955704439634c394f45666a646e385737753866743043556a373574544973664c564f67644354717144506a374a54526168394c707664483874576750772f4a33682f4d612f59617539365865674c68733964665832487650384178342f46447a4c7a333856504276482f41426e314a6634566b3647626b3032614f49782b5a3541724d31634e6a7471584f72303874464d5a61457066584471414f41382b6c31315a42315270507962366b527157744e6477736a77502b313934423446356a6a65657339483876797a7a58676e6b2f77413735587565523563656d6765654f34326c586f5a6c6771686e306e446c3157466230366e4f6342712b6e5637783055316e58744d5933636f36426543466b6567766c5070394f56716558545a737a64614e5a37576b5657486e474f646c4a6e346970466c4264736e665479696e2f70692b627677714c354b7a484b65654c5947346e7264366459486c37582b595a6d586e7154767a3872346663314e394e6e45646c7069624b33767a6a50384139737442665577664c37472f482b356e4d374d686d64625445346e6f4b5238483276525a6d69324a71535870374d54772b686e773170316a735351695861327535774d2b4754556753614843494c53476b7232427a7075364e70692f644931372f4c2f38535077742f4c6644324d76315a3843776176494b764866346e47387836366a4d386b6956703539445a723550496e67704a556656737174365266464d76346539367a356e567564707033314e4f6557342f6e352f6c4a2b4d757a2b4833354765592b6832376f304d7a5361375a386631365a553075306646666d737078763571656477736e6e616d5850384164336e55735564495530696c5844412f577071527136646277426e6f313558732b4e33372f6a2b614838544662625458796f3068744b3036704b4c4d527a692b4c5158394e595a38676e30425336686f47333970613171516174455478734e6a452b5a366d6a476e49624a6b527964687a5934633276564344376651466a4b536a73696374624c4f2f592b57546a70763439796151374b6f75734b52394e75336d7a6e4154326446365962657a7456416e516c735a4c507166743955683079566477736454626f4f646f6359776c372f4148694876476b584e5a51427a4432314f7a416a5733744c3455766358507a7339715971786950726e4c795162596d574c6d6c4c65396158725957686e782f727454524d774172374677734a784a5672742b6369702f4d7346454742703369303748446248576432693975483268363072547079586d6a35416f536877725878696e484f4c542f393750635a2f774257464c747456574c325573546e7954715858666231354c6b537048457264653232616741705a3972516c5849744c514175306770716a50334c53465733624e336b37574e7a7261387a42796c4b56577a746f78614658542f36626b7954716f4a5a564d6c4a587a48774151426634632b4c686a7831386263666944484268634f727249796d44465743354d3853354d3233697061557539716159554430614764596d667247642f5873596f79397269627766366d5a3456794a6a6d737030426548514b67366a6456654d3043536531344b5479694f6b714d396e4a626b324d2b646a414d4158372f684d46642b494f5a687a344835423562366437692f4c2f5433794465385733496c7452323644512b6a3733457234696d644a3849677955686e595452503366484e4d66792b7a3343584c58694c52465a35782f51522f77446b326e354b2b695071782b476a50536e303038657850422f577a30723257302b736d5a496f5332764c4e5058706f6c786656476656665168756f4e45367868373743414a4f2b2b663264557a347636386e32326c36367536656174757a2f59647364797176523572436f4544784d43304e3475366d757651306f4a6270345a76746358534f6c2b702f75666f792b7751664e796a332f4d696c4163596f7630436a4d764d664a764861487469794b4d79726178736e572b576a502b4b32396b4659794a75306f4f6b77714a36364f68774c2f774263354734576b58317a50572f534a467661486a55586a534e584d793558516f72386d682b556e716c305767623153774175335759496a2f6c486e6b514330714f74646679684b71586350325a7a4d7a3146376550346b2b5a6c70695468466c76796c4574306c316564424e396a6e31645243565353553166634c732f2f414e7061596539494e3448665a774f6e416c4f6646425a4b70524c4a30307742715656416468526b66427a614b48533064734135456c516e55357768392f79746d61494d2f55705471447731662f4b627335492f6d4a364f5371467330325a364e4731546557784e3546392f55756e556f6f4f35744c6b75375a50777077364e46503643646f467a692b6b667165786635552f4d6565627854457a796670614b7333794852552b507646774b516a562b427a685453384e4451737537313076465a66366e5a4770426c496b4444682f4d6f7937427476344e6d61473575466f5556794b6d555a3139565a507449484e376a35717935626243356e36634c63784b33465353776334684c695563424c556868614d546762552b4c2b456969476c6c444871622b3372766d466b796e6f6b5a4249334e2b336642396b70386e74566d6b594f634c56482f4143523953787a6944325144544d6b63576863374b73365a597a392b67436f6f2b764f745a624253637053587553325068537547593374467745444f4d4432313372614470755634395a47576c6f6b6f7257736f6f59327253457972476561507133706f6a48375a546b535957736f5759746d486a36577a65316c48544358654c65484d7631796a51684f65367a56427774726a6d2f583839786f78526c5652705a372b756f63667831505a37535069592b4f4d535a51343231744f49794c4b447834784b4c47707965797630306b37324d583275594c516b4c336a396650596f6b6f4f623742394254435979594356516a34676d352f57652b33694c616535486965526d644f446d64583870674e453739416a664d49652b6b463261632f45527a73306a6c3550772b6a384b7236462f4e38676a2f56654d7a35794c43394a504176462f5650314738496d386e79347648384a396c426155387633786a38693637536f5837644e48385759546b566755445830726b7063764e644f4b6e6336446b78615a724673534f6b66354a2f6a5a36512b6c2f6844614d33786e432b6663754a574e6f784a6a733042624c7a536b67374e334f30466f597873374a355776347235752f5139394b456e38683977706531703758475270444a365a7254346635534d5a7751527061356e563534353864472b3642632b6f34417a61412f626e4c4c5375624f482f7741497666374767777a35795062644763437470764739466859304c3448766d5866306c567956774c30464d5955594d706c42354e6c737a577a36556130664d4d762f4146676638704f6162532f7177564c3038374b7958677973663269755a77355743566779747936466f58714f304a2f6a63624a794c5869544d2f6f6f366f4c4f4742434a6d5839426244504a73533743432f787244616e67576241495034644a7479703538614e466862334d346850326852705547346c72494f6e70444f625a7067636639553235744d7a7845753856316674347530563255614b62336c7845665673524259374e766c61466c6b6d74714178363236756847396e43536c6c667a4e4e4a633443424b4c566d62664d5744345434586d2b55446b6d3775444c72783656465568572b32477653335879553932526633535532625645374a2f61552f77416e794b61366e2f714566325170695a6d737a4554694947334d714e787562692f2b7251616c5769636338384e6f547a49626e6d334842613943754735394531545047645a7a544755484d354e5432656b7665524764414b4c7876457030502f4c4c6353417454743163376131557042673879775350457a51574a4e516947533470584638796a6d565a51346e4d4f5a6c4667547650563445344f3657526a5a656465794c6f32505130384e326d364345623030466e4c4948756f435736696157672b2f48374b564b414b50686e722f6f4c333848384f3859507972776e796e65775a6e7965504c357247795a4c646c732b316c5a3636564974355450306635436757574d3553694f736d717a54614168306575586e4d7a4d58694f34517a38362f4a664d6656374d384b385238417739684868385a4f307436576e4b624a656a79436568634d6d627949376b396c2b6f373345376a79344a6a4e536271506742646970306f7257625450614770486a3862645a476a4273655756304b6d44516e6a6c7254466f575a562b5a7479777a525a2b7071484e4f6d506c307063655649664a4d55595574436b63347735634d50466f66566e79504b30504463377a6e7a724e385847782b444a3449366e794e75666c73797235392b527a694a4c485134485a387658653966467a6f497a6e6d63366b6770414a6e5a484761446148776277763147385169523544343135627365412b5136325041796e526e7a6f374f3178534d304b57446172517a51577869746135335a69742b6358445a435667503841665335464c545733436562497137314938563139337a756e7a72792f7a652f79725662626e59756b2b6e497a6f7053774d7a62646d733471332b57616f634666386f74713558724c32636d6d2f5943303658446573346a4556366a5933305a3166575430347a664a4c7642387241783848624b796a54304e6e6b724a69757a59714e666e38624d657a306c726e2f303861686266684c6b31356b71696d3372687a7446626373794b6e763841544475302f663841492f4e64635271387738693174695756515a755a424d5355325671524e56505970476c6b7231475556744d577967663035767547615166784d35694a69736452462b2b6c627156656454596d64582f464958316f344f4d7656396a485a2f3261486a464d3337452b573463306142364b68636d78594e6a354d524735764a33646e7a45754a754a345a6759386d4e3453776f4f6e48465732634c4b4945646f32397052324c646d7a752b31484d4a6146533231456f53435070744a6745414134353868522f72466831377467367669754c5a6b3369722b534c58696a6b6263714c755a63764a64547a4f3557575859765530726d6b395a384178706d712f306d55314c4c566e45784d786e41716c2f69532f4968623474712f77415234644673302f596272376e6a30636c3937655a6e796479626b484b3165786557505a704739546d3953504a70306e4744665a554b4a784f524337665372777353444c3365327761586b744e734e6e3245396d737430796a7a334345464c4c70365a584c57486a667355664453675a6a35393678314b574c6d62322b517254793777546238546f624548614b46784e6f72585a5564386b344a5a4b4b7333546251715659367376493646704d4a36314b483442393468545958783656747534597749466f2b69666e4a5a45347467665a342f77435439527464386a6d58782f50484f497a4e49547a4935732b784e7979484e6e56516a695347684c306c53616d676b49776234696634514e682f47336665374c647453715932796e4f593274393332747a5a5670796551565463716977586336704a77757a337036736e465543616d706939372f7152743966455348776d415048665672773561656d737362597964535971566149337a555a74367378382b3871334737394d583345756e672f652b446b59484e53685530524c53747872504564357646396175376463566b4e4f6c49796575316b6c476244445249726b75666f48714b6665497055745378544f6f334d4e6a6c544d46746d683766727763312b6b664d5444786e57305876665a715871687179353650483168396355317a2f56536d76515663496671536879714b456d434a7a59672b326335374b556e37366157322f4350752f723230316a6d345758626652566f4f3458316c52746c5775726d546764366c6139446c4b325a396778646d507354706a4e49715933332b3969316137766c416b4b50474e6a7a61324857305137425477706558706b5972525339715a394c4f65636e595334424c4a4e7a4f394a6449705438337a744e7936365033475a6a4d43564c38626e572f77435765504a314b475357477a61644b7335737a5362495542575666484f6262753845716a4654466d414873644d773737307a7067507437395a484a544b594970346d6d742b6969526335715838464c4839632f5249474a6f445357357944353178646f43516b544c4d334a59366945796245673338574557672f622b346947314d75626e756131534a74443572796f756438576c555a613337476732746d722b793052396c444a6b6630416262386e7959476f646a31716c73304b51422b6b76525354616579727a31785045446e426f75597a445a30582b314b4249356a6f6f7062375454614b322b516b6d4f37796664792b3952754843726742516b74624f744f41465a675a4b55504b5a64784a6a6369665030794554466c52396a46356935762b4664516338613859796379716c3941563665764573754f706263356e49645a756250414d452b4838637058542f4e6e737057744e494c62374b2b48377a6349736d5a6d657369567938546c726a54425168777175554d3842556c467735565a6b2b5532584d766248784b524434544833324e5070706a41416f563978496e414a75762b584f414371727a466471303452737a33737469556c4766445a78454335692f636248434c4f436b5739456c4a364471654d4670724346654f53346b72446b70566e303178523430796e766b707a354a335264465030454e5173655444547151323870614a6d4273735348744e617a502b674e6a526e716c564e324c37594f4257677953615a5548526670392b754a66794630366c5633514f6e31446a6572686d4e41475a4e53306c4138417334617330557779514c533243326a69352f4a2f724f56665058424f67457550712f6e6a4b36666154796a6e454637766862396b444f767251416a713968695232356a4e4f326c704b57564b335478316450333157636555326536646778325565353632423370696e4e56302f614c6668593668334234756d6f374e4e4249524e7a6c3854434d7850357543444b487a77784b2f54556b7a517a39494a56307355624b447170612f2f4143534c77556f776464586133727433707067796f744f634e31714c596f6d4935656d5239514c4e62506b464b31314b43547658675a2f35483371312b34435463696d6d644b646e4e6b705948374f304a7237635a495738593771656d35577967336c795a703848396463746e2b786f3941657236344274465a6b6f76346e746a6e447a524a42747268744c506c655252304b795a65516c4c635846726f2b5763324d4e544c7759667a544f2f5839415062782f556f742b5a74432b5751502f414736784d33572b2b3265643961486473475755676a2b30784479482f5a2f4c4b396a5249505941416d766e37524e4c4b6665764f7957324e354f556f3238777443796948746d4f6d45464d304a5575712f36686a37775159696e6a436e5768594776473969696e70625539575363732b574470356f4d3356356d51527838715570514453565038623845376f617543536b726f4778494535774f61594a6a7245682f52303733783948375a63374e425332574658535453585851715563524c4c67436d5a6155732b4e7646667676797a6d503739676941432b6c5961624e4452453061445658356a4a684c72444372346e4668755073662b73663258324335313366724a644e2b684167506c41414c6679706c5139565a6d734b4262356b4a7a45734d36425a657a6b73365a75726c4b4f776967537335666b632f6e61656e30434f696239676e506c3975645075494650467a696455715941304a2b386d7947324c476e5071796c2f715547724b5834317046566658424d5445423959727a43526770534a447a35354d3078545a484254394743546755764a537246476e6d645150305a796e306b764666784f4f5536627a6d5154763137676a746658426f33635a484d6b36595a736e6935624e426438464e7a4c6c4b363158633954736e4c464e46447a2b452f7744523741543731554a73396f4937667a7873376461363752712b516f702b4e524b796170414d6b5a4a73665a2b756c78456f6d6a78314651664e386e7a4b6e35385a53324d6d4d356a4855495a6e4b48753450307577733035554b584b334f586f665869307443563757783958326359475573576c546a554144372f5a32537a35706d4f4b41635a4f514e526f4652474233614b5432714e5449714b317263656557434b6432616970737334693533536e5a777a6f4437354c543339396f5751466145753658386645685a776c6b33714b6b625a4e526d63755748512b4f484b4a677258516e686c55365965725a7a6e45316950384170536b5641757432666f5870614d6c4a4b4e3578496d71386844506f3754785038694e614531347069496f5a617351426a412f335745625644386258504235626f776e53484d383151506d724b31326f5736577039596247565a5753343557547345534e6133557a653369707a474254452b7751543751716e31413251724f57586d657a6c65302b364f664b5271394e3141445a394b4a6b66586c4d624932315a38346e5366564b4e706b5371464b3635777a45544d34676566442b37545648766573506f316e374849446d6234543546516a6b6533576d3964534c63326d7768634f6f445a616d72466232653159704a516578436c75627a6f6433732b497062627867636c704c4b6e705747577553465532657043687a504b747a5a645765564c5252647a5073363771356250685a6c4176672f5a54384763786966656745392f7270477758694c3876795272466273742b44594f7a534c614130613233614c75637139326a4a4a466346544d453646724b6448376d434c374c326759544b6431654e755765456945774a5842653748794d3753316d593952542f4147343878625a39534a6c5238524f65306869566677352f567933543946695163526c45333974495763744d6646622b55412b3352675733557a413663712b70752b5a616d5a365747696e7946326f324d703447745a4659656638415a61545064504f67316c65614f2f4c4d493567726e61643454636958754266726375792f3566634c4462644172346458354d6a486d414d4d616e65306b776d6258395034567a413046763841326f6d41646e7977614b7053314e5762553138753751626e6f79464c4a5333364a4d7158306a37336b7562544974493839772f4b68656233346b7a693477613665516b334d485a646e7a736d7a32744c504f587863336e486b6479786e704d614d795874353537575854704558552f4a31334854646d6d5936682f4136366745595046703579664b2f6b73386b744f666e58646d68514472676c3061436f35504642564e5a6e352f755a6345395849754761394a63795a564e54533167587a3433365933592b5062523352792f6e62696d425363474a467a6a4b7068446479456d41635a4a622f32353332745838536b704d76636e6a6e66315762316a76794c3938577a7556613265645277496c7a61724b537930486f52396d6d74386b4b797764576847705145663763454c52506f664d49615833423548384e5043727164774e624e354c61764a6830474e2b33735a676b7554636f51627934554c725165785031507336425a756844325a7776587a764b66594c6a594c412f71744f3141765077764e663841596870333834386443596a6a30703833474e43592f7546486132665a5a706b30527a51596d50327461682f4578533842536563476c61716a644f6a3875734b447869666c506958387071394e4955577138676a79353661326d7864316b4c4a62702f6d36444d684e5164354b617070457873614155664f3473396b785043527132476c3542572f5231624d5843744c4f586f543154577378387273656e513864696c6b6c424965327156656852375a3341525354707335314b6c32454358614162717a65543657484a744632576d2f3746466362496265496f543957477234382b7145426f47715768593535324d2b743851444e53307a5879744c4568454d62423165667a476f2b755664625669686e53665279705630337a6f464d2b785048783932702f72714f635664506e746d4a6a686a414b5a2b412b35755a626b2b4e355757464c4573637676636c3942706b343253464f334e6c44514643573146306e554f435953732b6e302b632b56394b505a5347776e67755436612b577861474246354864344e4f70684e6d756830484772743134736e37454b4b59576c484357664f564a6948744533616f6e533867583052724f596a385175547944786e7733526a7866434735326835634e636b756244705a452f6b392f437a3173456c6e72614343466c532b4a626b7a63354b46616549705a6535507356796f4b784d38625a32514b4b622b4a336d756435695864647a4e43664d6f643947334b52627234627757327a4944456f6a646e4935376d522f5855594370716a2b2b4a5350344451542f41464f2b75427574696542427072546a7a2b4f3636427044746b4d665067796575664557665a5464306e724b536f4f793366524a6978393430532f71685a316b7878357a615a6e505441744b583059693754467357626271656539456e65357643796d795a2b7164744277323537746f7759776f7854507a765a68456d7045716d552b78383339526e75794c6b6b784572374f79614f64396573746c727146756a54316b2b69535a4b744876536e2b47705a7a787239704a613171757559376c445436587443524445764d7a7553364436507247497749767a506a4f494a2b6b4d524b722b364a636c57756965666a476e3741466e512b526a6b675841726e6445375a446e6b696f4f66444d372f6654516646725a43385548583371357741614549596158414d35642b56544f4e426f6b4230465237794f775a564a4e6e4f744637445a724d6f376e4d367a6f436a563431696d6841635576543764516759665a61507a50416b744946796b37336341507251706e767049426d367841527a45307367487931463850794b714a6a4250343355445659584136347a2b5651546d445161426631576e5a67524452707a764a4a58646770544e5671534c6952776546464d74395130324532656648476e516c5837633133502b415a385a564f4d6941506b635668566a76537038323871334e33712b3474787173756a747350744f6c715461646e77767173665956525367553861754343656b6448784c4f56774e4e677a4e7078695a3451446e5044384d2f49346466586f6b624b764f515557513749695972527456524c47324f624e616e6c633948474f57763447416369544d4f6b6e70713649526d63544541395a3568506b6f4749646954324a5966526a557a545438506336557075384a464d667a7a34366c715974596739337436376b37676162766a2f6f4b4c32504d64427931584f6d6d5a4256626b7a6f6e6e6d735a6d364d7638723758306f71556c6e3138736b4a45466a53734137335751695a43724f47313078457a4f4945417a745644374e665875373550504443776a4e4e7941556e7873426a4a4657716d554a576532666961467535304c4b4c4847436b4f427a57424a4e41316d383638734247705674614361496b724f46636f4d792b7279383770564c574a45476e307634462f62475a64564b61477659643968307a664e524e33746652455934514e59746652476d39783647626b53787878575655716171754b48703451747a7153586e6c764f4746696e52754c7231754b6a393069494656534147774832723542343541616d6551547031744b68316b7a346578516e7954494f4b2f68585666636e506b6f5433314b5254336a4a6953374f732b476a347a343642695a36526b5154523953326f75393735594d465774706f4e55766a7832714c356d4a48507a374c76347279443678574a72736f6d56516e76796b343732544e466f584f52665a506a41366d6668377059722f4145367a644142727768304c6d415a64435450617344667154746f4c4f676a46457675714a5a7443636e684b7a483578556165755730734e544f59794c64663873312b355242625071396d304a563974696d653274314c5963332b532f77435a686f574972795669667a4e6f42712f684d44706374466a58356a54722b3550316450344e2f6c6779775a636d6933305138675335334b5a67475068592f7742444c354864505a314474596930705a45716f5370484b544435322f574c327432396e2f7a7450356a2b5868456c74506b506a4b35486a71667a65356e39574c6e4f304235617a51464c71596c7059426465317674486e4336305864446e2b545a31695866632b486a342f6f4f6f336b2f695035666668736a7937307979664b4e7278547758314f7950467466795166476d4772503234503459314b683352676e3665654a7a3654676f397a4f2f5038504250676848386f34524f6e7163337856396352715a6f522b612b5a59336b506c5a2b4f6147394a34327675723553475970446b597332687a51775331587062432f3638613961715659744165554f6b70536d3578464e3872744f45546a4861466b2b5165722f7168367a5a33706e3666377671446a68345a3654654836766876673875356b686b4f777a387249557a5256535677536873626a4b69784a4b32475a6d6c49476177556f6b384b497257753659727a5746732f6b562b566542366b2f687a36492f6a7372657633646e3078756d335a5679515975626e654c506a71736c43534c51716f45617057787564536d2f774335517871672b452b4a44356c48576c4a7271587633324850504b6a736672487a53644a6e4b416757576a4e4b415371526f4b5a4a55646a687a2f774430764e4b6a782b7a74494b2b59774533754550384151316a744237362f7851387444632f474c30486c385a314e58617a2f415077724c6c6f38743731417971686c3735426e4a756661477753345a314644774839356e786a3249442b717165583452733872553764684c397a7965634c4b38766e644d65326147493157474c2b4c62476a52574d32597a463179645050686b327146626836336b644d33446f7043704a794f34646354695a376f4776506d50713169654f4f30776c67305048483969516d6a547873467339327a517175724e6f7257317334797a736e545a5455325275664d595455713645314b51544d7938556d65736a695a2b5533354d3947667a76783378397447376f36754e4c787a36686d30765a4a6c7a3353352b707a487a39683957575154736c716537715144724944475a41567650347576547078724d7831484276316a6f5a44754e793179797a37454b625a3968614538544d7254514837305851522f7234353650355143372b6b6c3751436235484362473934505870385a7a34436f4b306d703946446d696f4c452f4c77305a7a705763476c6a4b4f665451772f396c4845725a3859304f55787661566638732b486e3962425a362b3848764a57716342752b54337a6f6f6d584f6b3570374275597539335a78583150786d53652b3068392f7650766631777a443531484a506d6e434e4a4c507233394c6c77736d6335794745584557496e5743552f5662563367735035422b74306567524b396a4b384c52354255536e452b30436c72532f51316d6972516b52636c7a4a70312b2f736b58773953302f6c597a6a5038414d2b664e30754a2f66324f6e594c4a685971667276654852714a7a6b7953397448684c486954304934546b6f59487766584e5a6f344c65664d325a50374567414f737a393535444a32622b6d64564a43747446455457766e69626132676d6335552b6750694851352f70373862763130533677674d42446e764a797576656551786b347434327259556e61436f5366556452557463346e534e50444570436e503676562f35694a2f59364832663976566c2b2b76616e63475653536d393677656f6d382b515461767064374d735832446f516436395041522b366d45784947667350356d494e37514d5262666861504741526133324c61756c344541477853784d4742786c4276586f42333553597a724574644c38332f485847422b38466336332f41616537387832782f73682b6973506c33717a36686575576f69693376705a346d746669507a5464316c3838743037614a34366b324a5148376f546e3532357843473068396c746b34634e764262372b623279324b31704878443157526556472f764873314e536e52355871496b6c7a38486c3745523933734e6a6d5076306d58454e6e48315069476531394b312b38766959754365734c2f4d417654386f717659696657334b4b344e444e2b344a7334335a6c586f486c4f4362503341786c75366d46777a31657776335466382b563953777177464a68617464337967476b5079644a71527a777a2b725a50566d796c4242523355624c6c375472495752723739684e6b70353838544a4844545043372b4e35425431776b5a795278725068493130395a504b6e74475444474851474834526c59756b37597578506654586e517333456d35744758704d7935666f6e5453424478656f4178554774704b4f3949372f45654e6e2b344e35672f796e38727655797972645a6f484965436b486c562b315a7631635746307566495459554d6455757869545a7a35462b3667486b58502b5745487136456673367a36396352714e6c75597271535541736c6b2f62706d436479356d73554255675a2f48556f706d4963746766763345624470396e584d567a6a6d58314f34466c506c4b574361467854504c7171454371504d6953326c59726e5949314f543157702b724464373238416565785470766a57546a3939625a3363772b644b66716e58716e564f733553716648426f6f5534754f624f456f555038416d4c343139714575476e394b4c33665a63492b3870362f367143794c54356e4c56455a7368564c5431636866545370794e4e6c4769555273685431626c307057557a4f6b6958676e483872464b34594d5462342f722b6f59304d754e737367687a4c713548446568396763396b6e77776647614a426a547a3748745175555839347670395946422f384838674f636e6d48693665364d307269624863315376696b437862454f736d55624a3245644f6e4b7967684f7967532b4752665a3030566533684b4e52742f716f6b72326a584b6746396c2b2b33327a4b4d78622b70454334666c54614e4847732b4d5a3130482b7a62332f5366375958414965394235344236656558656436656a6d595758566662502b395941584f366f587a4c59774667793176732f6a5538576c374265664a2b47506662372f41477055583957744e596a683364343647654666686a4835445634396e2b7076726c3665656d4e314f4939312b58774f3675342f53473746506d6332755a624a56736243355169366876503038304b417a5451547636776e557877725362794e39472f326750546e31437743302f41505775473753315048694b5043355238386b445835475853752b7836666d346d6a34302f4a6277466d7a3267316b594a35314b7636796e326d617a4761694d422f62587876524361757a794c3136395076473942326644706273766b6364673564634579324b537158534546396e446d774d623067705a48394b6e39734547644e663954372b62394b326a41313838742f48497a4c7a62787630377138423364767932714446784835657242586952745757532f794643394a737678445050384154576a76416638414a396b2f596c50506b6e562f576b586d4a7a504742706e366b666a6c3634656a57614f683539346871654a5937396b73374b31327648357253554847614c6f456b5255726c37376d456f545170684b734a776b5a437a32336939626349746b616261695863726f427a4461734b7a2b77624f74413174462f784556416d4b2b6c2f724a6e75506e4f4f49673933763737542f7177434566534b6872663034414276535376764f723666414b6f67496a2f4146306b695a4d4d6564353769372f3942663745503636422b4d4741775135372b43584f474357566354316656415264583372666277556a2f77445237337642497a35377541492b772f3642633166374235315a66475a385743526239623465467a39696c792b71442f5758754867664837474b452f317766663841367636424f6e6863536876375176696555495072503253754c457837314a4e5637515637762f6238586638414e582f424c2f38416f63502b67785a33344573517448466e4d74717564396e563934585038654f2b542f3266385569345066336e2b66763466656a2f414f7a2b67627a455073623334775566324755457346675a735333326e78507a4a48394a49424965724c323858376d435163486f6530775736666632417048324231697846623148776a49616853737a616f512b7237476c2b756e7a7065777a49506437665a37775444394c624d3133576443656765693161313071443432444f6450614b50634c7066354d6c7265493855494657332f49676437663644344b3175537a6e7a4e574c61456e7a765a79544b46457a4c76714c3937616b397a5743564e58532f5850616c5874614857482f6c304545384a6932304c75577433756d496d4638613054496c49534e556650754f3478496979646e66384167666637412f662b52462f51596539355432635a4d4368354e4a38335a6574767037535031356b49644d3272334c5a7a3533643738776959455a3955526e2f3777576b4759666d345a676b716c4c657572695864535a7a72344273353846524b577a6a4f4f2b66362f506543306d41657a7269374b444a50312b744169553261694a4a725439336a3372654943583636785569666b6c2f613266734f6950784173444966635a38495166446e677846495541664b66313052537044682b4c354a395a76454a6e4f662f774270314a2f666566467a2f7742672f58357a346566315866587843417a542f595854316a58444e4d675236416e7a71314c49564137744d352b366868614379487637346c76764d77443247535347777a374c2b6c73637376325064415839654978444a5775663568616130724968466656725333686b7345384977396f414a4b506f59716b4a4c7667447277644f74444a4b484e7256507a71654c55775a464a6e3933776c5178674a617a6f6e33336a385a652f336671753676694d77625a7766696e6f5959543842342f4a336a4b4451616957446c724377546f6c39795362375357482f786736532b6750734777576d736449753670394c536f5034366178623964366e4a34557651524f35303563597a6a43466839377a6e763936766330444158486e74336332635a477a65562b4f2f71675070395036692f77446946375044744f4c693576494a566f3732615530437a56703150704a363053484c636c426d33324a2b4b426c4a72396e45754c4b62317a6a646d777056454b6f46526252694f6b37755a517636354f6c55334e374537536d374561534a7875734834306b3068525137704a373758664e37774b2f47635641436d776a5250547a765553457469474f6c6c3750524b74614a316b384247506e746f2f6a366c3957507a632f31774b3968744a6e787474574f315766587267476c436e634c6979436730703739716464626e636c5552686d76535535396f2f52664933726936457651364166434c4766346a304e41706f6c6f65357a534f7078715863736c4762656c7833525371413131536976704d365379353750623170657a6e473934465170546e5862773852394a64557969624e584a5948786f6179395844392f6547416c524f48786c775a32664d7375753648532b516b7242767a422f77725150636a2b5359686a35353139554831414e46663357386f2b6574334a374639536e397a694e532f32786e542f78497a367a2f4832477647323334513770716a64506f6971626b756b50487374494162324756633932617556715a75554d3538786530614739412b4e4f6a3247747a50384167575641754d6e524e7a4b484a65356b694a2b7a684b63302f5a774635427a6a564f492b73593569374359516a3854762b41442f41476d51633037666c674d334a4957672f77446a33646a73357a692b4a346e397567614336754f36687175397a32476b7033476376423451703970455844362f6d675a584b345530356f376166326c7a314a6b65685375463862695354557251372f734d59373465384d31385743672f5850313851434e61646d41757537644d4b41794e5379594b2f6a3761724a4b694765676c464831625752492b4e66384169535765344f456650667a682b33354f4d36446258766766526e596c7936437a5a7168726e74426850364c7071656f37523979674f78724c354c75455139357a697a39676d544f7148336a2b7243392f787538623854387939656654374c386f544c503467586b4b62646e4f386861377564584c6a73587175673252685a50515176686c574e48772f71736854374a324b363050687876613055746a746a30692b5038417262347435375a71336165646b5a744f57542b35756650504c6e4f386143655163724c482b426e466b6276487a733171484b583278582f59767348767663737a58775453653769495a356c753959336565724f6934705970434b4b57725870632f565854505a6e4a7337324e3668325636486a71536853746b644a7a67435368564e5151467045524559676358667a523859314e3754385a3953347571664475654f3052647a596f6374437358766a6c5a66477235356e556463786d654a46796e745853732b5979557a3435674b6a6f306252484c304767792f65665a767356754253672b722b364f63494a4f4f637539553656756452316a425a315076464167617741502f633770682f5853444d66336a595863367742446f6448694f4c35376c53736f467a3348776f79353861366957664f4d5a316764534a6673466d48447a356669375872774262394568696e6e336b7866592b51496b5357736d375565626e6b70664f724e37343633665a7037315044514a4c6a61482f48422b466c66672b6f2b526b316f305672475a4e536e4e5974444a4143546779305358734e7a554d2b496c4b466276725542332f6b2f61346a516f61766a635935665765672b5438366d536e73674b2b4c512b7341537555336d597346414767444474376f4a634d594a465050595a47534f3243664f445377672f7133386630395144376e732f53426f4635697734474f2b31475176644a5731314a74306c2f61496958396461522f59754c3557703637355a544c35547a43626e2f584653375a2b737356524a5a42545055706d574676365a4859396443614b47564d6555376d6f2f587a4f6f4c334f53514f345879674a715251684636436447325231684a4254416d637635586a5038577950305770576d552f6f7a4d4c762f595948484f5034694d5a366e41774235746f5378386231736168616256417837615568624f796d496e3935514b78454d305359496e30666c4e337458503371542b506f44454f68302f327061796d6d6647784a4b69766e6d5465366564626b734d4242672f47517a382b5531733976326565333965786639412b613658706a79436d59774d65637057464a644f38317259587436394146333366443970676b78696d2f7744542f774270697735766a7a35766937507277473533346d2f67463678666d446d612b33346c6f2b423457486a36707a36766b6e6c65757a4d57686c385645724e4752584a774b70505336566e466b785a6b55624f4955665339693874545772705469647736503650396a727976772f483772372f7139672b566155386c4a4e5634356c523946677a3557656a6b503830466c534861585a792b30736b505a4f5933794b736f6d2f792b786a2f697132345255636b50574430796d394a665648796a303679513043583478514549426f386837652b337552503934334b6c39344a6d573935383733724f386a5566456d5264427742745730326974703778566d6d6c54754a6b6e613447494a522f723435766335776a38426344345a2f637a39304c5a2b783448734251633530765a37512f7151516b6d51577373587234423856527a342b4d575857746478505a434a71762b474a57775257663749762f414869494751696165415668706e4e573748644a4c2f6b78542f6a4d4876416631396f51596c58474237574e392f533450764d5061373963486e37365168547437684d536b36776a524e537353745a513868584b383665762b555a682f524c2b596b2f4b3376502b576e4d703336396e7650616e5a674f3056635975566f4f414b5631634d61326950657a3064346c645353746f713474615637444366376666774f4a7050392f5956302f625833666d434d656a4f5355386e6e5a716636454d4b52314478524d775a6b784433724d38652b3235762f582b5553357a2f61484241694668484f393335676b75757976466b7a70415679315431426e7a43764a6c34504b67732f5861454839687934656649766739365267772b6e4b5a4135782b2b7565624e6f774f6c3339744c42667351666c464c6f5a766b5647625236655a3254544268356e3833395157766e536d696a7879775366704e5575685330436e69314d722b46776a2f7742634b357364664837507648526655394a4a6454417a7444316f7272395376496654457358766c65567131797a655358656964325439627831324639567a46655856424d6c667a2f783031692b557a456d6e367a72426f6a78335a6e68793776384179484b79373030687866472f556e65386653335438462f386d2f6a4d57342f3439464758797653306878316e50644c56546873646d6a6f506b6e486855634a795a754135696f47643333524f336478734b4e39504d2f78373077326d6266714f6b78723062364d486377676e6e5254643435705a47704656565336367a6e4b41757a39544436437077483242543766722b383366753837725269736a71702b4a33715a692b6a2f7068354b6933786e77485738496865796e5638664b79536d793378666278614b3472483551536a7a516f36755565694e6a706c2f365a6f794676784a396e5071566d31767a446a423532586a6a6655487974336a6165582b4a64314c6c59354d6f36776d78314e644b74787643666c4b352b2f466372736e61516334486d79744a45645079395048486b41647667666b734d4746354274654d372f695936756c6d795a4f6c74593763754c5670626e7933697944374f63783169327a2f4145584c37315075656c7a5337384d3471536d6430544749747548724a2f41482f77416338643944664a616f764a6337637770622f446647344653334e62764b38765a34335232334c48576a6f514f506d6e52506c36512f45736d546834394f5247545261522b6672784e70384a4845482b365a766a722b7532666b394a687a6f394e734b786b4c36593638764d705964334b3542564d4d7934614f65346a4978615461656d317a35676f6f706366563750484c6e7a484c47663656626c6b522f4937697065485254785461663267645a45795658663765653561796a6d37316e506433365947436a2f6175423157336643484c4b2f65427a7a7979335467487a73486a353045304531523078696d326555445a4b496b784c65724545382b486a572f582f7743665a574b646430685161314245754c71616f786f366e564975783961744b5443723451374b54464c645556424d6168726845414b66396a7a362f7744384638573734665542796c545a526f2b795844702f5a392f6a687165326673363874503133634d514e7638674c716949656c772f724562656c33685544373362387343526541534d312f4b2f424d37357a615a65515957624a324a4c6b764a6d68584454774b5358706b5179395a557453756c4e777a2b736677687a6747722b6f746973582b6e39782f53584448386f74394a4a6f6364636d375348696d456e4546622b586157466c4a66483439547a4d67585046586d436c55382f434a524f6d626f5464533155345446796e784d786e41355065713864367461316576452f4d784f7a58524835444d5778416d32585335446953736a6451736e773058756d307250324c763856333543473330777a30725230523359486d6d2f754944436e315038577935714b47326c3432386f46316536344b73335270586243742f774435464f6c68554859363469517a6b344a396b334255412b3075392b6a6a6261326576366a512b5a6657524f365658777a777943612b4a706a6e4a68793846724a69374d69726f752b30797836574353784473337541302f49346b7944302f774147597633556f486a4572622f484838367236357173744b6e7871355168674a5a434767507a456a3365775170582f774254396730514262366c344864424a49763575495a4450516c6567774a5667314b686d544877674162754c6f3046633666764958303948336d54756e304858446c736b594c44615055513866436f61776e56374264704d377a736872455a5952304a36456e4d345841796731435056676b32663036655177624d304f4d6f526c39646b2f6f6d6f3061584255594c5a653568506c544e7053636f47693476736f34432b66356f4969366c54427245494931724755665666306f7a596845664f396e6f61744d4a746e4b63465a3431646c2f69792b616a342b41722f5034544c33442f414a4c2f414b42346e4e4a71442b4a42395959416e52525264514c77636d6f61357861616834314e42457570736f724e504b6e4f2f774142503433652b322b3369474c334678712b752f53624f4d6d6c6565644a5a4d6a69657253784434584d754a465a4247743766325846394e6166683733342b644d56653141556e546d4b424171537866436f69455755457450786f456c76343663546a44677a38423264376e4f34446a59592f4b31676531774e3976454e3659704a307a554f713056544d57545530554553546d4c325566586f76694b5076484a2f6b76736966666c2b596a4e4a643637392f77425733582f4439704176354e457854616f6d327a664c4a31553730573056307a434a744154535879416c6645324f483542494f4753662b4f6b58506532334a3566594e676c64786c3735576444716e50486c4c706b424f77453954567a332f664c2f4143732f66786d723556415a4654372f414e3837377a437764526358396f367465636e7272374a4e324a71436c366f337a30574c4c5061476837566944426e39354734506b54597a7041627a483256743265414d315053383146473670725a503256394b4f4e42514739483736707373457269582b6c30465077312b2f77434833385837445552653674652f64392f2b514e4d6b47624661507a414863394b35667075715567654c41524b5868434e48564c63796f6e743969765a7871512f516530544d4e4176597668752b7a7832593965647a6c4e4d794f792f456d6b7339772f4c4f4b507238456d36417a2f726e45414b7a636a2f3759522f4c6e2b3739654954346a71536256512b326c7a4f4331697a466b6b676a53346c6f34354243424a453366496a692b44385856482f73373850754964426d6d766e535a5964596e556e733775514a4d616161574571787276674764614f43787132434c68426e7a63396863345139555370732f642b59777a30324f5a30705575594d726b4839657052755742555545736d6b6d61633243516534324430585565344b56427a684758432f7062623952746e2b482f71484a34643667612f4b72555a7174724e56316c336167686b4c6b5336486e304f746e576153552b68646e76555a385038416a55696c5a66457673576572584d556d4f6f72503134395a747631763953747679613479417971707a7369503565736e6a7759512f5a66564d5632427775556a2b3550672b55772f61414961445638334c61646131704d5430465036376c313042583270493936772f6671496a414f47796876364e6e567554386371516a6f5333397a2f4144394554556f754a5962586631625437782b612b316e61566665653047304f593456746b6b43585150704e374d534f752f517a3976384135442f45552b3031306d6677384d4f6f5051495757766f354f567039446b39446a41567a78684851683453703655674a5962426c4a624a2b434b75476f672f2b4633696c46336f4d58646431625a3547735974794a33634a4650764b6474516a772f6e365939367766712f456c50766638504f41486573623741634d64334e676646735a493553526b3578303775744e53572f445438364446637a46736759336843745a63364c524150312f6f5a7a702b7a2f4b5158696753414f71796d43414e3746544c71434432386b6f557a35576579346f2b7368634c644a50506b4d42396870393353417844354d35743357715054462f5a312f764136487072356a5036422f6b353543323378487a4875566a654f655965533056737a36352b3532316c6a3472355339792b724c48706f3073397975765a4f5043787743772f6d615056635074587332593330463966334d76374b2b64367a7965612f6c4a2f623738486f77664b3874392f6d6e6e76342f596c555a6164516b722b6537355436533569474d63327274684c65634b6e4a347233706d796c4e4948537956305061747331303961334c5078662f6f62392f3234665772787a38372f414d4d4e44307539626647746d4c5930664666492f7741665057677453504e796e57757a6b464c7058776661534e3265376e3878683858336b33546d64653871716c744759303436315a30745864582b4b6f38635835722f4149792b72483447666b6435783648655157625753714735326a3458735a724f78772b626542364f356652347035446962332b614e4f462f315339337a4637786f79756344324d4c34552b6e6f337272557263565434393546363065712f6c6e672f70784c35703554355075655a6552352b4e6a5130363172644b656e5730614d685a437a342f3036647339334f4637576837506b2b71612f77444276756d5970574c576a6c326a32552f6e4a34676a2b33642f624c75394e2f78393074484b7a38764a3863384674324d365a43715049504b76494a7374753772376d6a646e7164724d766f2b3157786a7545694d4143574768524f6232547a4e4b6666612b362f3841455043314b7357444b2f7674704378704b535663374f67353733444f355a506459485a302f4856332f5a7a33683874502b526450702f42374965704e664831385732632f6d573657577850657a30456c334b70544355307a74397179756f535043495063424a4a7067736d4366414e38373974394851454a72676f4253486649393357764a597a77544658585159736866476b54593376476d6b3457485366764e58753577596a4f6c74726a6e5373374b4c574c346372506c596a764359786c4b59796e4661366e542f4d78617949416d4834444c396e386a58424b3947376e6963616178302f7233396c7a326a4a4d7776384131414d786d784e79625a6835576b4d2b4874446946346d79672f3841645233393872547776366d497a4d523467446b6553655244714b31627570725174325a785452344c4971615341766c424b6c4f4132664b4e7a6d66574e61514561657a68385875417a546a756e4933743947746e546961364b7a65667156423544545a416947733373344f6e784f6662637a446f6f4d4c4958663841597146344d342b52735132437036715677717a76306a356a61387655395869736d324f2f4c5634712b50505135316746566e367469566f6f7a567230754c6c71654a56542f566478434a587a65362f34334877622f5a6e5a62633932346373507953395a466574486d756a715a632f5a7353537436595a6d5646543154444e6846516a6c5453475758704638665a786277503841536e324c6d41673448545373566a4e756e395a47754f54494853577850784f644f36655649327158526e66616d696f655267376f3937375766497471784432634a337463777542337641766133644136646669313653332b7658717448342b6c4158376e68377644764b7a6d3067426331574c44752f4e586e7168363058695136566b6f4e367170507a66397443562f736b7779595874464b354875773949505166306d3874394b3476535a3369574435466a737973666d4f4476474a646c4f666e3955554d4d383772614f64303038646d693770416b314a646a6947697072484e506e6c5776614c5262714962582b41506f4e3649562b62657164586a4867336a64462b506642665a6834574a342f6c363474314c4f7279474e30647743644c544f507742433964433757787970597770687054545076373269746432527350692f6978342f356e2b45336a2f7068356c483478487676334338343862386e726d4d6a77764b4d6e517a2f414332617a5031467738584f54394261557466396f4f6643616a4c7467746454545332704d61752b4f34434d4438522f546a55354c7636324a6a56314c626e5565532b52542f77472f566f6132646d5546324e65683335447a636e6d6a6a526a4f3549393433374966356b4644717a547154584e6534624965547438486977387a306a78305a6c4a733063665331563059503762444c6a616d5739314e4f646d35386e4b6b6c594b6f6d3934346a65706a666835645979663536526e4f2b6567386a333939543030797a3959645063797369776f387678334b5a7656397348794c4d526d374e4a536c3543765a524f31714372573646553464396a65573576476f5652615a5446364873747558457a77484c622b355836762b4e2b6f646670563654654b727a347150782b394d4d66302f77444e5049327534685770355335662b32584f6f7a534c746b7139444630672b335166506d437848514f5156457676526f566d7536302f4662493477615a636a637964616153497a656a3458714a56494f41696d574572506d4a6c43574b6f4869784c6a4747464c5350762b49733532566e4d5a4674656e486f76366a2b706d4e7255656e48673231357369526b716441634a584c365a3074626e6e77574b6b5a3971685a636f59737538345036645837466d6866522b616c375245386237634351366e3432666b4c6d734c4b74394866564b6469782f6c567a7238497459776f596e4f685658503845762b6c67365361432b4158635a374a6d74397674372f5659765472757241547a66782b39664835697a7a66522f7a3532657976342b464e347a6f6b707642375a6375634e416b6f34356135773977383677506c436c6a65653857674847366d374f344d66554c306939536653434643665562302f3376433776494664645050755a58386654567943776a764e792b72443269746c45664462337379306c386e79383651714663567453387869323456546e6c2b6a6769622b6a6c313254682f797a32304e45322b774b57552f57503742647345584c2f594e2b51676f53537742782f7742587448784432522f32772f7a324b7a306b3858384f3872317571337646344a3879644b737831565778485a35484b723764364a583054454c34644c345a414c6c314a5070315065766c4d6c566c506d362b6c7a626f486f2f394d2f794a7874714450566f564973466d55674a4e5a686338646f306e6644645739777253756a2b53316c6c6c70346f6d64594d5851584d30706e4f6f6d5a78577034634a477148724c366a52344f38767a54796e4d7230343832697065626965507a7861577233592b6b544c4c473561534a63633837744f46375337396b6662314d33452b7930786f30725850434150384e2f4f7a31523238624f7876442f522b2f4d51633735386a52387231325259767a55343264502f414c7353775655554a667561583635326b522b48686f4363774e706e4374705669637a5956442b567a6437306d6c523539356435546a2b41656271547062666b722b62366f6648744e4e4d67783154362b6448644b56544b37436c55564442623872644c6967506a4146613761654c5a694f616f71503032395176564c7a5744473139354a54786274562b754832396e744d75704a70726e625a6f5161673667705a38326c596d71644e427a444e52747a5355703931487647627857497841346b2f3333472b433939627652585a79315a7574357a6e2b4931556273586b6e52432b7a4f2b2f48735146586d4356425373374c704d556f6d63492f6a4e50326d2f4968737764667375375a627748443778726130364e4b33756c64394f784b58324144374857464c617a4f366d7571645766487a74454b697a784f676973372f414e55486b354e447753593955347a776e4d4459364462612f5468712b757531396b2f64467638414251522f794b454e614d736c747055564c4f6965686568306e6b7a68646332786f55505155772b794165753258654a3256427579613259685676465052334f3533526e64427072303552756a554a7058472f3639542b6352375a7a653933776b6c61566b4e636271786e714b633874395672493330637873396567706a625a494b744a39564a3945315743326e55375852314379594a4c4471534156546e424c3066625544514359694936514b7a7030664a2f4e4e6d4842314b3944613176494e58457a637877647557704f685a6f5a384d746c716e6b38307872613533544a7738497a734c3542577a72766c746a686e4933672f75592f32752f576a2b332b2f77424a722f4d2f5554774c3161394f5055377837757a345a71656d664e30637a4d38686e584b32584338743535484f432f627966552f63373561487a7553422b3049324f642f576568375254563334724e625638526f76345a695159486a5a39364d31756b7966682f5a66496931425555756f487445586245393978646e34516f2f58464d5964496d50744b51322f31704d356e4972364a647765582b536170416e6946367959574456774a5a754e482f717a6938654f582f696b6d4c36333945437638434d53446e73596d30343231694162705632504f646e7a417850543046426e6459324e71516664796357445939692b4c6137724145756b6f7a6e39767a6442494f623752724d356e4d39342b4b68546c507a7a75557274335566706a566d43314f51584c666d4339537950704f366f76686148534168516b456d7a6e75417636544d7a3147796e39752f387a504b5077522f4b627776313438615a59486a7562747a5a58714e343950656141386a38493071495a504963796c4a4573617246532f4a584f4465664771795a4c76662f414969444931744f4e5854696b39522f55503841487649764550566230313859383938483256332b4c6570506745766d4f64734167305a626648646e782b54516c71736b6932705430507331364669532f665063715676556649584a317362344d7874766966686b5965674d4c2f4870714e3670716e767533353142375951644f37764a6d554d3042626f55643755744b7971574d3636516630706d57566456377a446a55347a6a774777506b634b597a4853312f7146627a5268705671554775523633665a583252746e5a6146646c50356d574f486e61463970536e324373477a702b4b765153472f4f6c705976534f52444965396e717176743634714741317045685653306455513566555653454b6c6d51456c78673769707a5335515365695758696a56564d437064526858635775506b4e494d6f6b6d376e49474e58327533642f77436d353038726d652f374b55704576596f4b5144784b662f4b6663686d702b556e6f427134302f6b64696b656b6d677555613962707836546f64353151474d61366863667a5745763841512f4a4f625768536b2b4a6c6a5538505239676a476e667733447a6c3448756a426149654b74567236555065445233557a614b624933704f555a4f35454c574c393558457a6c3353536b7154396a4a35776e587775386257656d322f5a477967787138694e50304b7449476f354e5473566c4e724d6a51736d64636e32306f6f314c427034483276643242664a54595167336d45784d54695274686b2b6f55314d54784d6635684f70664e6277444a79506e6c6b7058324f51365832474f664f4d3866784d3634666c463336424e52506e3531645a694a6d4a3734466d535a57565439363349584d6c73746c436c66617a45383044585a525543376663317875505038416438594352657745756d464c6d5057446662472b766945704d33363944386d61314368544a784b7a554c45566f6e665a572f4f7a4a306f6f7036684c5246787443636a412f6f54417450766d48374d384f313541357a4f4b63632b65714975504779426c747a4a316431456c50527042655761724c4571567a6850446d6d465576586658343475475a6e7933357045307932344f6d6c556141557662555933534b4e6a4735394630564832365a6e6666476e7372506a4551364d6a4f67546152555264466f752f72486e382f7543326834793675767447724e39485a54656d654d487839686439794e5656434a4543313331714e4a746d657559415878387931514f542f414f786f394b4d7a6a48634c34385333594d3464614c4f6a64654c734343474d30563559317758492b314f584a364c4471524b35724a52506779392b783830336633302f39763234416659386772726e6c5875655a6554397a6c37347a44445235412f69475255425575662f4141722b756f38306c75624b5452352f6758764a48576a53307a4336592f53485578315965725470585a47423551764b5a6a2b513239324a4f52757151436b305761344a3675477275686e79392b5553492b66414b41364c413737367861737a6a726b66702f544c576e43782b7873786e4452745166433666546f47744a6663684e746e6448684c6d6e6e4265616c616a496b385342752f374254683274305465767a457630394f48785938724777383656386b4b6173366c2f62432b754d547469376b3431734b714f584a6f66567967464c5377756d4166465155783935384d566a646d3175493256394b5054624d3875793647595473506d6d784d52787238696b7a307a7475504a59547337764d696b5a725a334a6e347a6a5864577a33706e6d564d4f633771437061307832703643334e5838654b4635544e624a3261652b572b4f70576875486d372b646f5a76636d504f543863454f6653687659316e484b69666e49666d635952724141373962367a71653837766847706564696e50354a4e41454647664839364e70786d2b56566b5973316237356f66356134632f713466617474596c384930704a6646674b6279544d4f6e7766583942752b723031526e654e353730706a526d62436b617678363873655755315044586f7a52676d584870583752713243597745704f516c5830716f536b5069454b5a6a4f4f3848555a6b573075584379664832515865507a6b724c7a6a727a70486551614f6f7a364d736b316a47653862487a7865534b61686253366c4b61476e31594f5366394f6e4765345770366265463044636832684c687230356b48706137654d474e4b726830437470692f384154533552384a6155497173374f6a6f4145314a4e6d4b5935774b6c3536514c6438477a37632f566a6d4c4b54586b616b2b6a424d33546f6b5879674a614c6d6c57453742423262525a564851422f4361676e644d366b4a7a565330697a46366258693165706d74793175744437454d51747059715158755774622b72796e726c304462595137517974534b5359584f664d6f314344512b344769467634306e4854706153613735596e56322b514c7273354e70563273646f533332494473396b4e475737334475666f305567305949376d67446a643878363734384262486a587046682b442b4b5634387470614e78313872745a76385871646f34556566506f78745261776c6c4f697246655967682f584c396c6441664345644c624b5774756e796746366f52626e42334a3163304a4f785a3355325a306b6b684c5252636e4b763531793479484e6d47374e6e4755694e53307852744433664b626e527838584e3952447076546b5a6b33556a6a315167686d32564f5a4e6a793676627331724d7379704b707242515a4e2b43442f4148314e414a6c7534356f483732752f712f76504954684f71446336544d7071797361584c484d58556d654a64464742505670735a46507236554e43517a6539456f65505779762f4141474d3067337676616c6c4d386369485665493565745a56636a636f7130666762576a5378344f303157736e664758555a32717145335a5a4e2b466e7637386166726c384c792b61645a46325974617641493765627149357a782f6356424d7153706432626e534d4758796b637a366b4b67716773624d58593347372b4b557a69757642522f614171782b71595752457a457a4d51494e705339647963595a4b6236623232546547787a583161717038796a6b65524472303161634c755a4f674d5a546969663244536a6b7a72476a547745682f57346f486e7035356c7056563065644d7a6b6b755737756a486d65514b524b634f694e55354f31565a67773261457272352f6e67556f757a644f773346774442784447596e704f514d7a66435041734c58657679477a79442b557455497a356170314b386671374376424c4a477275786d71545271504a50326142547870756c784f4a4674424c42334a45337950414d4c796659617a54702f78685a5271525a553479587059786c4c4c56566f685178493656524c476a6e65634132746a6a58317971546e725052693034695a42667944784e55313073506b636d664651376252644a734b72667957704f666f6c334c306e7a52447965783466616850746e566d4b5a506c427a70506d6e6255696338594655576e68425578476d346d49445470716c794d5a3432365248656955347274513055665a6c2b4d6358615a7a68476153516c544766646a6d2f376b694d376531686338686271373246464c4a624a313332724142344947706c6c74684b35394e6b307041753470336d39663157752b7972324f6344706b754f4a774e4a765647427a66577a307a5077693048745053386476547058454d47785251324b6944517465334b31466179396167736375634679665a3877484c496b50397a566156374e683174384848314b7131335a586b4e4e57616b63454c4b4f614d61565174434c587151334a316b4e466253304b4d7656695630566e58395639344162445950324b656564753263592f55587667656e49513747524e567636476d6f7171507453305748543051345a62576862786133632b734b724a33512f467a76556b6d4278676b2f737a4b5a4670335669664157726c7a5251525937736e4f49364a4b79534a364c2b744b5663434e47426b6e336f5672654d2f4b6c3264664b614f636f2f33484d763254557454543567382f65774357437030396f5a2f703438493064576d4e2f7a775261424172572f2b443756306533356a714571654c644d6b4c5030626941507436564135587a5062486c3937572b375630703155793356636e304670476a506d30707848516a484e6e6c6f6f4c6f4454797059415a3961722f6b4976355056354c7061563147586b35566371322b354e4e2b624e46644f6e786d6170384f35385576734b636d2f4848795971794f61695a3665396e5438344155786a50486f50685a647a4d30756552364c573676477936486b47556c6d6c41686a3177783373486d715648785349732b7839556c694a2f434548456a386443694a794a6d4a34534738754434696d49586d736e61442b7a36456e5559316778755a6e636a2f41466f3972646e6945343833732b656c346336545343502f414e3730384157774a5870364b4749355062533236584f584a4d6c6646716a466376454c554b37496f386c704f6c463072684c67457563334c374d7370672b477559506a62704d76733430585a4f484742756f4577566e7576724d614b447a703765644b686a6d4d5a526e7462544b74505350767768306841353067315a732f42745676376c77506e57614651577061593852646d7a796f376f5a705443627479666d682f482b337636576a6f5839367236592f4b332b676631716d664f595a45376f6a446b6933635776724e6b59472f4775566f78466c76633552353939435670655276414c2f41497a576b476e4f6749375048716359344d6a525576596b5a4f70796b427a536e65796e5057436239465a507253745a4c686a4e665154304f6e5a39654e76744c33434275337772566d797131352b684743356a30776c6d6439684c78506537506e6a5272394c53535038417975575646483231755072494774534a434941344461552b555a6a44314c4b323654732f716f535746334b6f345a5a724b694254617147744f654769656555536f34756366696d6f3673757542712b6739356c36653051627479356d7463314f63516862314763436c4b7163707a63357271473351686c2f544e4c474373674b387a373736653849485479457569614b756d326668315538524259644b64527953487571687a336351303342576e50587830497162386e3661557a4a6d464f3771462f30437471556f3759593866464b2f597531576b747656416a734e446c2b327350354a5859654c6e4b696b5356772b6a394e686e796e374a7839415851757574663343304e564d485839554459744c4f794774663841576d66776d41325979642b686335624f6b4875423070722b516c436f5243486f35526c67516e4e7935475266784f6a32745841673758326b627530736573582b3279566a6e6334397947754167424e4b6748716d6944613852766f4a467a656f6f694e7132395244567349532b4c555863674e41724932746f304554357565677a636b5365356b36786e6f6c574271424731386572616d4d497162484f62733537772b787a504832535a4a49724755555a725a32576471544c4d3167493757716a394a6f346769545230466b35796c69703771494136312f5978366d544c2b7a7a54696b4a726f33657a32665263634a4c536c4b30704f6c4e4d335767366b36476948786a4e4d3548796659564b79536c4b6c36484561715431477731617a633639724c3667374c516f736c4a636f61414637557445506d4d33436b416c47687167427a4c304454566f70736e5670586c5652644e4e486f773571344e4a4c62766e3172482f493433644432542b2f394f616a356d456151597366316b2f47304b4e5a736d303558506f324a365873545a4d6e32565a2b675479344b79536d6869624f695941704c4263662b305036426c7a5056413531566b756238617030426e747a366d7379704876304b6c506c7559685a6c31665264396b2b394558417348464577313954385953513570514c442b464577764534354363346f2b77685553495236476c566f536c32703964704333397a457234536d502f5653626a39345236356530476e50586f34476547784d45766a356f374e61434e47563176307735325a554e466138305070304d416e416b30727053354c6a64634b444158546e565754622f7741694631386b6f4f73764739507655532f666f464b77424645324e4d4655367573452b4e364a724550664d644c48454e45344e634f744f6648336d585573382b4c736656526c643048577269707a527437524b57674d2f63303671692b507030704d52535a4a2b785452387854624f6562714a6d6f7373667354506f2b52557363567254625979396f4d426e774e6c5131496e39565a55444b4843346c5875366b4b61304879676a5441666e6f643442756c59696f796a714a73627570486a313054665a62554d3033783871495a64366733424c517964726b76564e375a775638514a7975624d694d5463435a704e52345461627a6730666b625655755a2f46497131673577686e6e373172426b465166666e55744875476876394238725a4e7366786c755a4d35542b6448703547546d5451307a70366a2b50624c54624373752f565352564d594447643977704d5672544e2b6e41455038414b5a58486f4b7a694b74446c6f344d6246616b74444b55736d75504a3048517a6b69684669376d534678693667596d6e2f69526673426f385277342b413838763931646939723175394e614e5662656678337070717774694342327067495376634632363643385538344a6656544b74426e4e38517a664c772b436f37705a7537326668572b5078446d4f575537506f493853716e71523058712f6b455a704176536531387143797144374f6968695a56513566564d35526f7a2f49487a66586d6c4e4b53364e324f31776b5448427836793066487a75776f6c6143766b616d4b54516c30795255782b616b584b4b5a7a473366754e3257317a4f71635a6e672f77436d5a4844702b6174723930534c41792f482f6d7a4252303570363435382b576951344242376961444f63447447614a4d304572646d75456152655a734f7a6e735a533670414c7275357477734c41774d575766466b7649326f34696f5a36474c7555613251617374634f533265585171585a5533516a59496d333749436b562f7270746a4c6e3956453732636137515456656a6b2f79665a5a6c57327879386b6f7a7379576158546d766659524d634a44316c6b7a6e424d6a354a70694e4a72623035474257656a345252784761393267557a62586862456577417730536a4a315a715a5144333958705270716f5a597a71334e4d55324f6a706334505942684f4338593149636b694167335854735862635768456b676d305068484c326d464a7a6a30754f50345263526644307765342f59485a665a78495a6379436d434a4673326d5464564f4375677047354847366f387457744d4e6575566a5a2f4964435757795638784d5553523754776d6d594a396c515739674e38517947444d526139655858332b4e667a4c432b4b46534452564f79796e50586354303166484c386c63796d4237506a2b526a507166365a4974457a457841754842784d646e77575a646e456430686c422f624b627071354e524f5a446e30585a2f65394c526464796c785531493450797564596c4568304a48726c5574613054344135346e34664a4a35466e4845636d585a32656c6963336c556170367363534a515a6c6f74754c3741726c736c74497154634c4f7550345161742f425445327a474f2f76462f654334656a6d4a4c5534324845727a50342f4c366c65306c632b57374b334e4367794775726a535973614a33554e5738412b527a71686e42504b654f4f6b7a6e6a494d36474635787669366c614e4275457172532f7743552f705a48477679437a63677279612b4d4c376c52314c77525554672b7939706d6c767843795a33517454774c7835616546706150533039684b62766f6e6c327a554957694d4e62444e58385a46505142614c46307071706d2f663841694875634a41354a485941323756624c524e5372634c78664b71326156305331324a3270507572527146586d5a656558314935306d4c422f52534962773270535454476959584746643651565935664e746164666b49716c314d354b776d4574475359745663386b485630353657314c70536c497472344b6c6776532b763041616f763643534a77665448536a347268305a7046314d4864442f72364c343878434e684b6e35557344715159357a696f377a76586d6c337370516d634b455243304a443661656c4a6556317a475741374158396771356d7348574365756550536a6a4e5359724e594b57614258526c522b3139436b586d487534533353394f74726263634d3548564830727a38444938547a66483879516b356b554d3376486248322b3075797a302f7741594e4631464c6442495a6b65627969583742724433382b455341566a2f41466a624d7a45354576714e446d69494a716b6b66305a31476e4452336e644f3270335a474b426b7958564f356f4c6c34464a643650444d442b512f6c4876414959474c4e4f6f6d4b5a4c4a51317952376f366130545664735132354b5831364643545a6f45555031314c36786e424e4964554945446d762f71742b7a496c313957657031432b4e506a2b72617a53514d2f4b4b4853484c6d67626d725350526c4a4644457256786765776c582b38543472334e4f7743485758756f7938784b48734f5871674269613632416d79466c714632456246414b657045766b61317a44344a68384b6b6d745876723035726459416e5a32793863773639505a6c2b444453326d616a5753644f6a2f4142355646587a326145736866566e745535617962372f382f77444169425a6d35566a55525872554e397a573542546e633969486244314678306a2f414a41375245334f47664f355776515737767361744e484f7a4f583834475a2b77434839642f71776a39586d4536586563486f354c334e3850793564765651564d6772357a536e6c304b4f51634c53352f73392f31374f6958592f6c3634462b302b44796c4d666834636268744b3644617a734f7a6e3072364e6c3944324a6179646f537268624b4e314b783743787467386f5a6d687853696230693967714d782b62395349427661666a666a336a376457536a7946495737644d6938334c72356c4632306b72626e4a4e685a6256354d3663756a50577a3543366744535964614945546e496a5043414d71314f4d315044786a303943324431423236736658677368544d2f435a2f75717165696f364741576a326a48597754487443695470495349557241484d6e486134396b522f4538783863386d7850556f397a5254346e6234353673312b6c2f686d6d76536a335734756f6d7734354d70316f7337326a51665a70584c366b75463254686774724f4a4e726c70724d5458484e793768562f6b66676c6b506b333474654665594d6c6d386a6674655a2f38416c3532364b30552b596148692b466f616351523233463137467531485276553371575466703150305768386f6e32305477764d4372664166557a315839552f56627972307a6235486e2b6a396566354c66675a6e6768656d39563144385141686a5861657a354448774d57326a426a6339546539492b646d5638746b587a42777254577461317432736a564831543957396e4f332f4c76457376526e643435344e70767770624d3976324a744a6641582f774355612b726f797251325839475562757451667a4d4e4b52536e6b352b326a537463786d6547372b6f72665838383877764f65665a38685832546b4877736e663034323248774c6a544e467a6d624e794f503741722b6a7a765771487348465669326c6f64424f4f376f4b3776336174595a386e7049624a4e7965576670443956385573392b6642492f54694f7a746d4f354c48432f376c4842355a3946616b674263537a6a624f4e3363417779364f786f30633863517a6d6b744e6c69615534316437476c6e7a61466877496f4a4a4a6c6e2f624a2b7562597a345654754a61684965715233534f57764e33676674772b525a67337a4b626b34637832746b44704b6d6c757036704932635675634f7751314a3059626e564a4c71412b6e53616c74692b79344668483750316b644a7637664f63592b4165666f4239316d57653930392f51787364335a47535038667a4e4265746976716e584f4a50514b5538346f7a642f316765734155762f414b2b577631723868757766447a3947376b636439524456644747342b2f6b6b4175756c6a675075306f356572494248555758544a5954304c44695649446e77644c416147663355354d6d62384350797676475a6f386e3949764a796e513135777a65374c79366c6f5163394351636c6653544f536b537050744370706964372f7744516d6a6632656632756c486d50356a3368626f63667a6277725230564c6d526a65525a476c54775932755a584332744e632b4e4646477377637074526145366946706b485569626544774f4b58376b3859766a7948627a2b34582b57717656377a744550703376306133705664344a67654e30654e30615135533639374e7a574d664c586b316177426e75593765306a6a5a53686f455a2f705033324a6e503841726c3064506247626362436d50514479727a6638662f46664c66575479627859504a76534c79474454394a6e5555386f6c31385a4f784c6e4f304e573750762b58524c4c52394567596c7a566c39616e6c4947325a776832313469383759747a646f6336664b66477373633379472b6335396a4d6b302f766e765a746a7667344f7263787557735933532f48484b6d4e62666277456975723451374f426d6d63503632695a6a704f41516d394d5049322b4761666d4330356c4f473735624d6965673879375156596a6e78635a504f4a4f34374f485375623833564b63546939774133727763365375597a6a50454d765432616a6571392b383676754e6e7548376d6a31586136546c54644c495949355578344a536f693652477268642b534f5950687063464166314937412f694a2f634c7a6678354676704c35767136326c366431786e626c6e504f716e52385432495a5a624e7355564e752b6c59763478793150373753374b2b503841785151714e3339632b726f622b614f4668307239555037676634395a30634e562f7177725a546f3135776c3345324e44526e624a6f72317466685a395955487956676232704b3335654f2b575555715955456a6f2f61574e644738596a6269527a3439575058377a33314e385864354a6c766a39502f52377958794c56385a4c7a4b7158506779362f6a5579326d704338334f626f62547166346b326b30795a533163622f5936516b562b2f61744b316e45383168704a3352394f764a39623068626865562b544c76776645396a552f494464755877387548633576554f3866546b553361565a737337445463736c45682f44505953665a784b6e736b656d6256693332476e5835526564346e7146367437586b4742684938507a354d2f4338634a4d4d54713137576a67774c565a355935714b6d6d7761615038417466615531704f41306b3057734d6948625469597269655961367a65394148775a2b4a5158446e373877396949577a73637a6c763250734d5830754452395a763736787063642b77467267486f36384c523477485a4d6e537078634e6574652b31386e445171667666696736744b752b3576794f47677876347862707a634948384c766c5a38494c436e58386e366847654d6a44334b4157436b512b55695954422b334d6c7a6c755430783968536a6f7a504c6e6633376a436b774952377769376266587844774f6d46425864594674616e54493449394171312f546f686c5458383350305644484655745155714554536650305054372b686458346476786570435149565a3861726d316f65665141596572373253506e58725a4d6e3967513853544a2f6a562b7a4944442f77437239696a2f414e5675465938677639706c62704f4e4f715972577a514d6134753169376b4b426c73596d536f5641346530505942382b54326e37476b50754d6e462f566475336d7a6e412b464c4d566a46676e4e4d65644f78423961626f7836744a665a6533536d305237557872706b385376354f675a6d48736158734d2f36304836306563556636464c5538494653644c677030464b54665a524d6c4d33584a557850425a2f735130566d5175412b4b4176312b7754555534546f49536b4c4e6e4476316b39703471727049576676574430724837524e63564853567a726c6534503179717636337355486f592f73376553592b58365765714f6a56796a4e30386a7a4c6c737567697a714c30305834663230735a4d78644a574d4f7165354a54636c636e3663784e7554545049315039656637544537713537683246723958566138426f62792f517a7373697939446d6472716f5a6c7263795757524f486c464f4648384c64376848715150716e6f3054474d53584b44553832324b7a50444568356a2b596d5950355a52464970386555714a643358715438466d5a725a6f327a69357957585a7236453358334c446a38304852305a774b436c66524f51773166566e486b77565a366d7a4e7830342b6a6d3557504d522b4e6a596a513739534f706b324e63536454324f616d6a694f64706f2f774475684e346d4371614f636a45352f51614e656f487273657235526f5a572f725a736d796c477664394b4375336778614f544f742f504a7231684f6e366b733669393053424f2b423031502f574f5362702f6232696d324a784f4a486c703953664a4b664e7650504d764c64477a7464486b766b4735743047445a2b4451566c577453743671557249535351736a5637416558434c2f414755455946372b2b6857754972453961694b386c4e7647645a3137626c4538584248774f4163464b567a6e61624a666d4b58322f482b6a4871323839686c2f6a385165304c682f48545744723248664f45623132567a64517442725a3871766b4d534337334373652b317774344a4e4a4a47522f7743436541303839764c30346730526f4c516139446b6b3269634f6f45416c5539314c366c74704d45784c35544c517758457859652f356a4b4e33755a7a6f65376c66672b763642576d57786a4b594c6e736c2b5254705a567358786a33386e6c543771475468386f7a366854696b4f6b4944396463334669357665754b6d65587239754872412f506e44327a2f7337624a335047786976703669303961755837504778337657613169667954742f334b4271463254664e315878632b47676357706c794b654e6c2b435a6c494f2b4e4470744b4f73574d2f38416a6f4658474d44506f585654796a6e4f4838536b673339382f77434567567337706a64497450302b6858752b5765495a46764a2b53332b5834456d6945673955623461575a73756a56794a3036575472397a6d427a39385437794179364947423858535a78457a3444326f346634752b6d6e69336847683661315a382b596a56477637486b586830586a575662703978745a4c636a446164456643584b64315365726953706f67697a70756f5a2f6d78666d7a71576d6432426f587665442f322f7744784c7a372f414f6253725738637a74317578537565627943666a745378456d376e366650474c747848796f2f6c426f6a63686146586e3750684d474a6a6437794c624f744d5262764735506933676d4634667177522b4f376447626e395a586e637834666b727a324e304b6c7a5175644e326f65777064396a5464784b2b484e4975395878473048664e326b3237356b567236752b482b463165515136337141754c51436d47717a6169766e73797330426f31644f3555757037616d6c395037684456513866696f704c4d4c7151454361535a724d2f443369442b677672682b492f6d6a4e3378767850457a556559654c2f77446a7948377a4d5a54625937364b76494d624b6a306448596c58564f51706e2f5130484b677846776635554f494b4f7a66543149347a324c4353666e56366453656f5034732b643465543431506f3650692b492f537942795548637546634470396153714b706a432b7578574b76535150654d4e3361442f79503268333352705732366b5450786a7948656f66702f774361654363796462796e787254797337795a4464587879706e514757764b6f643371614a657235332f49503073792f584a2f614a683751496a3978656a57596e4e596e714b707163316a434a58464c5851704c464c34517157763363495638616f6e41414f2b7577522f6637492b39412f31777844322f77426244496a62387253535143487336346e43594b57446d6349566a30684c342f647a3345664763453266732b45502f582f3545506c493836306c6b584f2f4a3051452b475a39573335456e7870474b2f3276337259776538396f6d50762f414d7661302f63594c44376e41756e687550356d643666466458336f6b5a69424e5374676b4c434969454663377a676e372b652f6e2f7648674a503670344c39704d344d6f39705567792f537a6e557849753448574d45474d2f326538524658505a2f37694956384433416e6e7a5458756f47566873457a4f6831626571357854364a6c6c47686875582f326d45356c7975722b46585439344833336533324b79744e34367a776b57457244776b6b737161585064524d44496847434e796170323273436a35526f5970596b494d756e353372694678324566376d64785270726d664751582f6a6f3956396e5a705655636c6a564a513138306e61496d6a6e45783948574e6c53746c444e537775546530694d2b3264446955695036354141364f594256385a6b3250526b384435616d6c3139526368304b507155563072517066506b5856517776697059422f6f466a536c5941756e2b707a34385248645848374837532b666d6a476a54304944672b4e41326d536135323844367331676852333269345764577376386b664b52633659477539623930794148596b4657684a66754e59724a4a696c6b72366e714961476945687559585071736e2b526e57472f7743454439674b6237683935323356385167525578434654756d6c616b6c4b6a35464a2f77426c503331386f54377164443548533848673936665148334c547850666a454f6d4e683862302b324d4c736c664646786444326f4349676f617076764f68334a6f6538582f32717143372b7564396741412b7766597634362f4439426a4f627545784d69717861546754493733454c43644166754631784c4a69474a4b68395a6e37532f59474264363768435057324746487a4d5233733377736e61755a39413046317a6e745a62395764626545504875594b2f634c6563373046664d587439682f44776f37754964484537706b4b6b5a2f4f6434792f724977594c51547a3541354f5063386a373757314f6f557a35434d454534415334464c345839527672346a3638644d45396f7074503841344469716f4b506a563369697164413043682b63432f34594d376d6f367634762f77415a6f4677506335504c374241314d2b425457635852794e61455445707075575853654a4d6e4d522f667564535656424353653859706952556f772b4c704659664a3435793659312f58366a35457234496943785948514a54786b656f75646a6162684c70415143503742786c78663634733637362b4939586e6c756e36632f6a352f6230394f2f4274616678764d3878386e385154544c346d7278754b6a796e513833366d4f796157574b715037464346315a2b6579783345582f4b6271456d344a4a694a586e5275314e61302f445565637a523856315043622b5137713943664e524d6e51564650375a71426c7045612b7a7a36766632756870705976375972536f665a534955675a4559703678532b3238575778746a66703238715832787832473148765775502f75544f517449396455726c54756363726745616b73442f414c427434705774657a783641636935436c726a6c496b71626f73656c665a32766430654d45654e346f6167346d7066786c307574353168696674495069562f75694b6464306831485977466e6c4c41324d665630696535353139346e334431363758667354535369466846774f69527563616665315850306c2b66376659463973756379466458516f68422f532f53783968436a392f47434f4c396e503841456661493848392b336e50622f5661647141506d7371444b6f47467a5450684e5a706b6769506c4f6370597135453944433933794f49693442683859454d335249694d6566302b4c362f714d4d565a6f6f2b5a6657645a4e6263665144724f53755a5053494a45372b31416e706658476f526f55546566393958432f7957723957314f344e61615335545449796f546f6d4b5659757047306e536656476458565056784e48326f657239702f4758513935664a336931653066302f642b764559555479416a6e7770426b387a2f696e6f5a384c70426b70583854584d6568674c4d686e647a6f65372f50355149524b6e2f77434e2f57675266302b76634c2f6a3434434a7a36434367415856317679714a36364639423036536d352b2b6363662f447538535270583741444437613332696f6633385273556f444f6c4275553656596f36526b7a35444b66354b6e45504f744578413363345a30632b5571376558614a6a52574d36584a546e555454797052794e303350395061382b7563644170315730422f436950317632387662533450767559632f774f396973396c76415066424e79544d382f7744484e4e74314363722b5a7a32554d363145764a744359316935547532542b326961656757477466524d526d73555650442b536a675774474b7834774f2f2f67506b51654b623259356c474e6a4172417043335261455a73484632667557376a7272716e614a736f6f75755844306e31756f5943622f41486578687a744c696d4d784d65494565713371483354794a3879646c784b3056352b766f78426f614d7959756d78795350764a3741624f74757056557433543435395a774c582b68533235613572574d346a686b6337667938395363786669666a48694d693073324e75793237657a4d3530563871565a724d2b564832394f52784c756a442b4c452b786975626b36673974503670346c794e744f6b7a4e707830484f5552513162666c37396234574964493664646f442b2f714c61733174636c596f2f61666a655444436357675a6d48792b77513730632f6c397739464b6c4a34485741743667596e676f5137726669544e4b5448736450384170692f5a554e54576e7750326e6954416c653841464e6756696d414754646e584a782f487457356849616a327a4e456c6d7a5235483866532b525135374f70365043483454636b6669467066316e6133684963502b4155763477357a4373417552302b4e5931547670736f596e723243615a36482f5044547870675539483350636233666f79546d48326a6b33515a666a6d6c644d312b683547322b70442b794b6f625a4e3976754b37725461774544516f3865772b74412b6436716e6a713339373159426174736649596f3971612b445770746454724f4a624d514a56386e4430456c6e6f70574355394a6250354557467736506a396e37396e4b564f39333950682b763644354c566f4a396f715951472b53674c6566424f346c353030593539714b70506a574562754d5a6e723444657a43514a482f414665357069326355386658386769484f7235566f617161676c703065386d704662484c434b66354f38516a35685a33354f43496d702f414d54564d3554692f774d50367233387552385a324d6b2f4b3661684b43346d4e616a2b73315164397157574158526c4836394d39546e667459487853794f6a34514635462b34416637495566496b712f764d6b2b315830327636493854315853597a32736c527964496a4c4c38584f304c39344f43644a666f54452b674b7053564d2b72386a59572b776c366c374f714e507434784d746a5871346d6f772f2b32417a767554315a47446c682f69376e5768365166374e627a6b39484e3177495a4c556a7a73644a46664e796e4d30414b5363737a746135582f3656796f385a32452f4e656b54536b663056426830767342352f7448626a362f314864756179354f576a4364744235504c46426a4930546471552f4f7368376d342f587a52517739504e6e6a33496376693652656c70784257417337376f466a77636531356a796f2f33522f522b333071396573362b6a394f66356e683043772f34365a495533356268687563447064537061356143726e5039636f4c3263396a4638435935794c30644332366e6c556379414c3753414649476b45383974526942436247635135367a503965306e6637476538514575663567666638414c6f642f72666a57664f4166797076625169327468667033796f446e4f6e5174504c557361745355393648776b73703145413839785468377737332f414e7066314143784d57486b56306975633656436d675065696e68664b664370342b6e712f774264596e672b2f686973694c72544c34544552467068576c7256727035314b6d65346e754d45735747676c526838697a4f306e7a4152724b7237484f4550656749663538506a443666396441795a30663438774e787a4a487244573967322b35314641437a6a676f496b64483550716973424642724d484e373959484230447a2f656576414d4a467462634455637035534970397233746e42682f542b426f6748757134487966585a6d2f774377487a68384d7864397643377a6e64412b6d304879313937503779534b423436686c633836505a496246417163775477666b4f6c626d66443079343369684d456766415776506258626b532f4a3831387038667168332f43764d74487769782b6355656c64343973376e6a2b685247776c7273476832546362714638715a6477444f76334e49364f7055414a372f56635278696137706757783665666c483639656e586b4b2f4a664450556661792f4975536165644a6235504957785a6d7a736f2b31702f5862705a4c317048745476652b6b324b6f5362716e652b6672792f612b6e5365453035515879767965386d6c385432634c55687a732f51387370462f6b3272503468782b2f71337871705a6c756d3169713556342f59676d4c4c68536e4d42663750326c344f2b645565376a4d7a48776739345036392b6c326b334d6d39635078387a2f41466b702b313544646f6553733837386738633874386a6365557a5038637330626b7273596d65537063727739697a2b3246507470613476383352616c6f6959303954614b7939502f4f624d44567a5a326157316a656e756a745270383077736e56354a52742b4761466375726f2b4c35756d315a464c3869344354505831416756446a50764841436c424e6f7a6e5062473850696671642f6268384e395873377a4c4a39472f79413163504e6f304d6f5054443167312f46505066456d5136633378547a36674d795531376c7962732b696f48634b5a592b7858734278774659334b613630317875722f4655452f56583171394d767972772f4450435046374d3666314933504e73724d69384f68782f4d4d445059434d5166482f414267565877304f377061414d495a7061715253553466344b2b74503851437257314f4d396b625166327a637a315a38413876395a76543779584d323833786e78322f78374b753866324b745355395063646f4c436a5158434d7155314f664c346962614769546d6c4a4e51662b7a34334d445058784d56744135702f6e357135586b3335572b71374d36474e63557263664a6a566c476f6d797a5a30432b52396e71516e764b484d553456494e6f41665066395a2f367055517633305a745854726e6f4e4e55316358524d5333306d6d593648664d526830666564484873366e684c2f414f784c307153346f6d49446e65587434446638684d2b6b4a673937456c39644d3450552f6c526449614f6c523858666a52506a316850306373516a6871357a2f6637513968694c66384769575878633463692b594c6c536944563837503841544a7279357a714b45564d58313753566d64365761326862766277774c33702b51614239784e61632f752f58694270385254376a3430684f2b4a7832444971705a73476441314f6c724e7455363435652b367a76556a376b704f4e5165356f414476363046312b6775537a55396350526e506a42744a572b6f6e685533475354547a645136667944453555456931657a3649745a715a7267642f6e3833666a5951427a7043574e35354c54346a2b6b64344a744572447a6379554b5032706436624d37467a6d4f786a6f766d6a57396a776845305656525a70462f49697a3476665063324f66746145485366696a566638682f4539326b4e547035434c3861616a5056394c6b435161336270793138304b64436548446c726247764c6e773066595a3153684949322f5572366f366636765359695a385a4869572f50666a6d6576444630533253446c34435636714c467a71376130666d7231744637556144776c4a74576773484d347a2f6c70764143412b7553586f36585a6a313444547a44646e6f3930396255476c516337305a5034396248554e5137694166396769356e4d52524b76346e63483557685637422b31386e762f72612f616b536a6f4a737968644f433433635a76417a39386b7555645356543174756e753651394978737a564c49466c375764675a56376c416f77545543364d314d33536a6f433550596577736a6456535167704e6c70573058332f5a756d346d706856536c372b7841333555675a546d7479674b322b336948666334434a4474663378516736696d79774e4371696b3679522f72597064482b7178675268723958336e764c3342372b4838337a4a4f755a6a704f4144336431416e556e6a417635516c5830796254565363354936504a78766e7071595a4f467a46384c324762692b44684b543833324f66316174643379674e6551776c54382f56646d50354b7a484f6f636b327a755a4d4d3746746e306f2f714c705a63785066302b6a337148366a412b5a4850636452382b31647850443974613630797067722b494b5568796332735a4779474a2f666961544638597061757241675a704957594f6253355a336a62352f5944714b556962595154326c4b484f6f43672f6b375362456b6b2b4f76704e424755767a4655717053317a694a544531526e574a4b3771434c6d664d427157397175484a595146375a786d594653632f6f796742546e78596b7967702f6a643068663841576432686b697663304d36643444646d43325a36526c4237426f6143586e394f46546e6e5030796b397474545437524d524638764645664339346837766237484e646a7a79485730494736576561575a76616e30505831314d56484e4258566b72356b49675573657955554366566c38664436304f2b2f324f563169314f384467744a4b7530726f4471733254692b306439357370737259504146544f7a73484e4c684a5830574761675a3241763331332b66663630487a363757304c375450373454716670495358764561456444674d706f6f2b78776e5163464c757659727654345a6e37766c2b546e50366a753563427a475a4b2b7678376d4e52304b2b364476337866554b735953617055546b766753304857455a715a51667436555a644d445348744f51756177742b576a3771644476794a2b7a56794b4b56736e75584b41474e3561616e4f36796f72412f514e617a34342f5a7754346241566e325050492b70367a7249532b7a777074437171495a45414856395935346f35316f3971416a7149796c2f644c4336542f70384d694e76443932675261514c6e564b3553567149515a565257675639396f49536c3755724d2f63763975536c7a502f41484f2f3749664e2b68596e34677742544b693446715a442b7775656f31435442425a70365166483856706f615658756f64307539627a692f6e4c2f4149593370386f4273507559664639637361436e61674158454341492f6e54386358592f72734d562f473337436a506765384932734d4864506f2f304668656933707a355436712b71766848675070354554764c664c4e5850795048714a776f37476e5774416730645631335a32632b696f5074456675452f77445a4e31616745663841335a366c6f7257303237494a6570337078357036632b54364868666e586a74506a4f356a61446a725753354b6f3135556236706635444831437149644b55796c4c3432434c522b614278415a47592f757462524d54614f63565437774a2f41393761464838516d326c746c444668514831666944744b78366b584a3048503651392f6637507269396868384962424e6a6c4f36716e354647746930416c724b2b5061676f5a6843726a513971316b58593072373151434d2f772f437076474838583956352f4c376a42646a3578495247564e504f4f6a4752684d72617850315353316a55734543584b41755961784c3366706e444c69756c372b2f31594c644b644e436b324778365872487647416464466867304850556c3365554a47635853754955666f576d7859642f77396a505a32747433776838476a50466e7a717253517a302f616e62374e46366555526d325876744352374763644764452f7743774d4f41437a42332b50654b364a307a4e72544e516877785251587964756e62776573706d4f6276545934754666655378564f4d3167386c724867644d503378594137337044324776554f5169576d663545724455725950426330662b4c45642b3442383446484236576b4a65355076596666384132434b76722f38414c65466e612f64456a30656632582f376d2f7274345a366c65442f6a6c354e2f4a2b64654d444e454868666b4b70613764627775544d46314b5a6454696d444d37783155374764587731764c76316b634867424f5942772b3036464a726538636c68375653353478705a2b5a666e305a636476324765513338386577382f4272487945374a323639534a65424f596c53376162386a445777654f4e366b7a526d50777a2b6278332b756e7237696e50794a2f436230422f4e663031683950384138705042342f5035342b324d3848386c692f6a2f41422f7a587865696a705636622f4576496347483354304b576d50674b61425a57693334616d6f4e625442303031623656733664746f3566666a2f2f41504a332f7741557678742f4948462f495044396176554c7a425070743546732b562b4a2b432b615a2b475354666e772f7744533166494e4f566675513443754a665730542b2f373830706c39594b5436485466327a5576545a4e6531363669682f3841355368664e346c2b496e686e6a336a4d384e576271657255794b622b5354564d7a32787a6c506e34797466334f375672555a49756430712f6633707063496e77302f45567659597a71326d306477385273307a337549567a745151566839716430386347624d3376453835336e644953363177464f35664448686b61534833463777396c667166752f58694d70394b4475585657614f56644e4978443863776459644655626d755855665a7834535171483249367a7675476478675448642f5141745730327a41665241525755756e70584f5337365a6847656d33733366676b7a77353376414961526362766834625864634a456177364a4637442f414b72667453507174435036337956736c4f74334e645949746d6f393152584f4b506c524232686772594b4a36766b6431436672724178344c41637375572f672b7671526c43306450536e526f5364344642706d6f5a30795479644f393978333662556d686e49782b47777572343066306f36614f477466514d51727872506d48457673544e6a6e6f535a584f42515a36564c52684f64734a6a4b357632452f39674e4a5042544f3152395774593867536c4a475247415233387552655068586d33682b48684d3150497466593535666e6e3975664969306f4936716d54767a636f4561443065507352445157657635766c39707458314b7837536b795973496d4a6d63527871494836672b73656a356a4b714d4366496c6c786e4a396e366137594d367a6f69524e2b714b6d5654386374672f34456e73366b715366546d6e6c53713964504843656b436f337a7a5471745656326d7a373661686d5778337a736d4c4b6e476b6b50575365474b307353376e4241772f7763416c3747413050367447635274786a7a4373715072364562704b363873573969474b6d4f674873366f71456f3635597153766773363634584354756a7a3355384c6e41353066624877657645624135507146356636613159766b7668653566683633692b727a73326844634468544a564968717366794763484e565468304c6a63544a57314e6e65466c4d33306c664c326b383975376c6e704939776e344a666e56702b715834302b6c766d486d44796c6435416e4e7a5272776259557277463579614132494a6f564a7362504b4e536b2b3367306650786c4d4274434b7639334f387a553070706530514e334e5065383339564e4e4f726b6165687365507836724a352b3365546145697450542f41467054674b5161742f614a6256704a5a6859476b5375774b396c6b376764516e4c474f4854416b6433357665632b4f34566670685a2b4e336c4f6c704e6f5a436e4c6f626c624d45556f66566e67684f2f4d7a65416d69367143356b69684f515566635156426e63783378783771737a753935314654655a4b39564e786450715372787976775855327347433262466c317378336a4e6753675737705974376d61566b355a64453432414955482f47707938644e6767304f644c7378746a6c37595a654d2f6b78646d52736d3734356670743771634a6c456d526a6166646d4a4e326f316f52314859484b4d38695a6e766b6178507a6c37786e3750314c72486f6d615448475936447a5366337a2f41447a79756a3167394a5a4d7655626835766b6e68562b76355467595779744750713978745a6b5579375a4d354d6170352f6d6f7146694b4136527a307a4e6734315873554864374c45626254505563417166496d654f36634f6e586e5a314c702f5a5071795064432f547046624369357a595859787a57584464504f676d4d712f30702f77435030756b367a5071694a6e6841622b6f65393468354d39312b426a6c343154314841626d2f48397843372b3273706a547864632f50314b4d746e765779645175623938774e4a734266527457737831357831522f7378655962766a4872663556693474647656572f784e6573454d4b744b533249437378315a4a77776b757937526f5a556d5950726d582b6f366844704a4e7055632f74574c5258776b6576487842452b333934745845314536364536506b42313244527071306161433075717532622b63554e5662714b68556a72757656544d4679595a4453784e622f4d4262797263526c2f637971323559666662572f77436b724e362f6335586e63324f5272687958324934776e797179575a38365170396b7a7077416d33706f4f7559695a6e454479312f3331584952366e656b7554504c4f59532b4d5036687171497634617234647a556e796c476f736c442f4143445170644b4e42574e6135354c322b4e6153545a376636372f5a4d374c5948425a49704264464a496a64524c4d3958334f6a545779435666616c78397073563765364442597578414c3650374e5355704c6a5567527a395048732b597344304939583937306a39516f4e64477854466d707535446575616a73756a4b353839594f307661507334576b6861666b3458432b326f775567486364302f664f7053747135694d443165656a2f414b362b5862486a766a576d37797251444731735963615a334c4a6442746933536a514d635674454e53644233617030393476684a2b79757a6c687162643876772b66616b5a34562f55624b6553657466724436592b4d65503649654262487242342b383432664e3467666b556548674c6c2f6a566152317a5761774c314a2f35534d6e53454c365638596b505a5370783953326b56724d3433625256766a2f414f53396e71707136476a3556363634336f786d444459362f77424d664650477a30504b786872725a56583434767979754d35703951734d737670304e4d4f6658636b2b31705772363064707074365633666d396573436533656c666850726e352f34704e34325774712b6d337039757774445033764f482b5a622b766f5a765238687231373654584f2f63476c624e52764d7a676d7167344b326854384a423374643030693237745747795835526257722b502f6f747065706c69386954787a4d6f4c4e7a52744d65305252514b543438704d554f6735774d6a374b7754347165723445484d636873627968554d32656e574c33326a772b2b75667235366a666b44357733314439514e4f6e523869756a543156683173344b5a34336c4d6e6e434e337a4a39705435622b6534544e2f77426d6e343139345a5062366c4b3170457845436766484c5a554e53365768626d453250765159726e7877726a30714c36443630784773665a4f6d4e71586357344463422f5a412f7464352f5637397152304938487077644c4778476143735939684f564873356330516f776a3770356d66554f74702f47706965335a63544a386c505653326a6678767672657350736e474764743377694a4c3953664873766138654c7a48577931785a6c6d4e4b4f457458644f2f5356747333714b693061366e57737a58445048696b4a413577385341416d514442326544453763563459467635465067486c31374c7254355a524b7650703550726c6c39357466487a4c67376d486d69746a666252724f6c5a78674773472f38416b4941366c3153513550573032723335674c4a312f463876732b2f6d7934616a38506e6b3868386330654a7a5a354b375947306169483875726e486b74554e48426c7a5161715039756754524d70564a6f4b7048344c66516572333058395a7678482f756b6668756a304c2f41434238536f626a654f35553857396a776c79587a6e77547976497878706b386c3851386863787a4846586f5378736d4945755665792f697577744a78306c353971366d68716236577a5032734f4433356a662f41436437387476514e6865622f696e5a72666c46364f6c7943794e2f70376a59377655764351354471687a7649664355564c4c55756d6e582b3131782f6341685036786d4a6d522f31313666746d6e666c31503264763841614f42766b4869486c5867486b2f6c486a666e75463542346635524a73306c354c6862324c713565686c3367745964673138326c502f54634e326b6e6f4b4872566b326b54553075657a7175754a6930566d764d4850653464562b665374366a7a3256396f4e4d57656953644d58554a376d6c526e4b714c6a785552462b6c7339684d4433744170323934303638596e776b45536a4d4d713573637979346a6e78536d465032467959395050307050586d3739536c326a35426f4469334f57744b6942503661627743757a7742746458336f7a53465453464b36425438536c635744694a6a454c2f414d6e4d4a6b365239763841372f665354654e3976764e6c74397645652b6a2f414f545a666b6c5436702f683171666a6c706153747a7a4438652f4b6e4a474b7659535275384538327a4e4c557a4b6e4976616a3235387433383547776758543055355536533537445359655437625462716234374e68364876456f463438737135583052545666794f70525756354257544548485056632f55674b672f716a597a50706d35397567334166464b2b4645697067342b6f735667487430352f785139653138315763364a6e416530753953354454526e6a444774644361435a2b3254705a437676484e63504f504468413578575a6b354e686f55354f704535344b7247747061446c383544577652574a314337684d35557a34485446314b336e515350654c5141416b5539385a546e576f55366c553071326b6d7270396b41506d7a6131647a42584b74435931694b2b394d4675634d674530306f50346b6d486a4b2f2b55765a2b7733386b50515361586d6e3872765350794b49445a546d52492b564f75754a536c495a4b48386535624e534e2f7742674b4f2f66625478525430716c437750513969322b377662387738336d4e4845737162367531766d632f55504f4c6d397a4d70435851566f5253364844317078513757554d4e797754386e4a70353838766a3462514279765147776e684a4a7059556d644c625a3037632b5a4156396c51536f2b554b6737524459725146332f43593579552f7742717070327537775038722f696468624f6562714e68384539524e5a5639616b4d672f694f686a327754497a7a307674476c58457a733647705556562f744a596a54383338774c67664e2b32447942507337563162654731764c3341315346736f7a5a616b526e3061344757574f43704d36422f3151354e4c47645830544d794e4d693644366b5133547a66516e31383875385939476450786e77617a792f4f396658366b5867452b466537613039586d6649744e314f72626e4d66334e7a3157664452533976456f6d486f73714e616a55317545327045327a62627445583276534c315538666739514e2f64384b31662f41426e3069387369394e765544567a2b35442f476366796e72585478654d61393832735847615857446f49342b567a4f753478546c2f4d4e63794f5475704d31695069446e3039793969335638637938624532664b7148306e39624e38663841483950553161684e6d666f756d79493834667379304f7557536e664f6755677635444a583242556c30576d4d356d4e6f746248394e2f4b3672645a51654f376d666b2b47766f507a4a4f6a3434396c33695a2f73467258356d2f516577504853344c7030634b78505059314a41354c5a6a6d2f714a74486a3268734e34373431446b3438552f68336a50504d61703066484c524e54336546344f617863746d774335775252484f58744e416c4f41652f4e64705278505632684b4b546163346e6c2b3445654f5a3242354235737053664439504a65476c456263717a78796d444853545657583837736a6f703539644b546759384f4d64496879574c5944334b50374b6b376f6a4f37374330504f504f2b315865502b48317939307668514e71714b4f454574656d794f3344797561515a704d6e6d7a34394274534c4f586a383054706d2f43346735516d6974615a6a4f6541684d586c487039546c3752386e72543574686b3672514c7879736159574f44544869746a4d7764427a66734c36576448524f61686172347462324a53356f4631747473357838416c2f70706f65412b5a72376c58537137706346474c513575657a725854317970795a616f2b32786b6d786373304f58527a7178424e426d545a7749514f6734766d4a693043342f43765448534f316b2f68586b7432503345755a4852793645642f506a5736665443736f6c535230722b56626e43314d2f464f595248785366326f76734c724d38654e663048552f30753946664650495046764764337a652b3779727a4b57434a4864494b4e53627261354131426d51503358646e6f6e564a4b55432b50694e4c6c4c70583756433170486a6130784d784539415a38722f4142763850386d386f7a7463304c492f72303151486d3975346b614e5a6e364e6c43454f70676a6e3538324b50522b4c6f7347787a6b6d707a30714b73576d4978414c2b4f2b6d705274626c747a5171674e717031516d356a35636936655769664f6f6d5364466e484d4c4c735437567061665339344b39795038413375695a6d65736959772b6b2b5a4c6f2f715636347635535a4d644b755a3039475a78317833466f4a524f545065565334366f5a75744e494a6372336949455a3861544d2b4d697a5238516b35476d644759366d696577574d6f354130722b572f616f6f343950546a366f70524a674d576f514a76444272534b6e3342536d41707a4a6b6769365970612b4f7a76612b794450546b66477a746446557655314d6f543951655346774236726a6b6d6e334a6e2f397741734857583372476673314253505a6b6b3647656174644356664a372f6d706e41556d567971466b416d41724d556735774c42686973674230654a52616947334764465a7152536d666a386c396a5a777642314e66417471487631766638414a4f436f3170547a39356f65316a5065503941724467524e64796d6b754d685674395938485249363770786975546f576e545958754871636a2f6a73366c6b6248436366525a38726a41625a686f357875666b35324333744a745934704251304575596e53706a66474d612b5572596e4c733666372b4d7a486f4a616a6932735554676f6e663335313847495750437031732f5070717234756f6d786146445451576c4e38614c4c5062637632646f503565385478735967796a374335694a6d6351496a76654332325236444948723369333561624e474547384d567a522b344754553565575366394e6179594170494242716e4137334b2b7a57495457324d3536436a2f4a724e6a4f7a632f553045575156387a4936477456552f566a6d454e4261494d6e6b5875465772524c5a523853666d65424f614436586d6c3331653036524e6264325155776444794c7957566c336e75587167376c4474436a58667949583251766d32467852327130705a4673714a6d664778674e70434f332b4c6e61685a6d6a7379346d59694f5872503141336535355435495263775939464533464858462f49764a5866343354423252676b462b793446304334795452314679727659364f4c6c4d33326555304f52696b635a347949686f34586b45617a32746162453567567246642b79657054354757704736625170577a693536436f637464546c2b7956703054666363683461536638415034625a6a4f4d385157777730645853363759784f7a5969704a716d6c6f644a79697a37725a5a4545766d616c6f616a48446e31544750786761612f694d6b73396a7a736b574f3533692b5a4e64466c7279354e34377a35596e4e31736d434335584b45307137594e6b4b31726a6f7a53536b557a2f59427250724f702b615435506c7a2f61657341626f736d66644a3957436575796e6b756c4d2b66466e6c6d736536372f662f414172516f4874416d5179636a63344b56523157556342786a384b54743848302f51554a3555725366617656687a5a4b7672527850386d7658563263734a387136465a576e7356562f4455516a644b796e692b7967736a7a516c554832526d7975544749345233434d6557654d4a6434626c55564a5a4a51355566364778757a692b546d7069614b6142623965705a7a375155615335666d706f7070365471525032714d7150366b615137705a6d482b515870564b78315671343947505372596b305130795836476b78746d63576839566c4d424378302f786762334c54546a726c354d34446b4e656b6469324f413777656e724537486b6a624e506c3065687a70565a76774a4643594e43646338316135305379384f39686c72455939366b7673436d30334349794f53484e62455972416c54504a6b5a4e4f727466446d65505354795744394f324365625654585042504e546638764a7148616e7a30446e717a2f747356326b3346776576752b4c34613434346a6d4131486e6e6b5770715454356331766b546d796c7774704d4341614846332f7741574650585a37616c6c5a4c6c6e5245492f4a543944354f6f706f4a50795469496e6d6e414e3978504e62546b76646f7069706f66502f494c686b4e6c646c746f724e74636433774c4c376e574c6e35474c5075475648506a5331726f493777714a4b6668735948465a53656a704e68426657305745553738375a37307149394c46554441574c43754b69666867626c66586d5748754e49646451426b3035734f684a437a7166666e5375725350747172436650557a4c2b707a6b6b5247786d535570527a7334492f736a6d5432766b677250686778707950466f6e4a75386d564a587131526c6b5354517a5977755174796b304e7a77697559332f764b6a6662777963536545744952754e52557056554465587948434f5a324b4f58443869324c355850544b672f71476b46684a626f58496c47524c6e66634c674135334b4b303653524d33385637477a69635a787741364841733868344f6a4c454342727a6d56576d7733387a356b6f58446e6148384d753247423049766e6e4764727848374149506e5a78537a33752f71424156356d72636f4c4e584f6e536c78614b374c4962552f596f734c576a66714c2b785374332f41493273616b2f61464b54576a71763836542f313841356e48634574434c79715073637334353165626f654b375770484c70544d4f5a6a35796458526d4a7a46464630596534767a46316e2b6d6d59377858387678634a67774a545a337a4a427552486e52352b65383765756e7939476a2b4f7a2b437877566878765748324f7864564767376842787959356b7535307a554c5769456d3858554338784847396e7052504e6d36792b31314d31374a4e4b6a6c316c62486f617746786b37336230376573576733662f53776f2f584f75494c43375136474e4b5947304c5478583358324452664c776c4d70466c4b386748547a454e537247542f43686a6a4f71654a366663716e6a654e426f2b756b5963393842692f53636c7a585061504a53583336365a6d4a70505245512b6974657070643473532b74787454442b44337148334134355a56564a336c575379544f366d56326d4d61656674302b6c4d7633337a4c6b6c6156564369736f515a6f4e54682b45446f4e66753967426e65327a67667971545a4f704e63305a68384b716d754a6c69335555515375594a4a354e70663642552b6232742b6d2f334170587346494f76344f585671652b6d335537597162744a6b58487973637874457452766b5877706b5336483242584d5836397a6d73537769416953596d446d2f4d5178685a6e79515555492b4e74442b5a765670705749732b702f7741556357496457756c6e7346505763344e6665742b4d756877777136476173486f79394e714c4b4858705977575a7a756641364f555651667841706e3756476c4d4e62455446385836434f7a68724432453732414d632b65744c70487754506e4c47525858454555544c575a692b664e496243594e6e52304f4c535635687775657a2f54315333665837374148784f617857556b4d2b6f6449487a386f6d3046466b6c444d66427459754149716b4f47634c49313935516f5255364e7a4270557a765a33634355734d5662464579375664593163735831744c5744696246566a6f496c6a336c68724f494e7a69766b516b6c4353694e49422f6c33726c6d444968716a6d3545746d73396378555a394556457665466e7753756e374a5535794d48704a5439576461472f7233682f32543744777837316c4952586c4f774b744456414f5a6b6a4b733339526248774944744458324a58336b45626858396a34343174447246485359522f4778464a79632b4942716b797859715267646e756c4365744445354774645658527158502f685371664f795658503074316e742b5930556d4b55734131307966504e4f444743517070464569785372334774547937536d6f6d725a58556c396e6b484a336461525031696a39382f41544f66304541644c4f4f4a72414f76506b4e624d314672496f6f4d3762696f74777773666e735672702b514c6d53424f736f61476b5832443677644556707036784c574143546e41547355587a557866466b474843733034375270786c4466703943527a714a39476e67385779586e6269375159554a36504b5464784a6b735032455272686f4a6c536b61564b6e524d65304b4564556d6c46464c70317956574a5851464b3430555a38746f305552752b596345452f4c4f66445938476d5566563242587375597a52595171767164446c5a334c7539367a4f763042466d675061435a70667874497251304f635a6d787339737048535370372b5849736a6935757853766970764f6a5068754b754c4f307036365034395848575179754e626c42505571657577713075364c68593468544f482b505036674f6b395266747169304d7542636a436f5a324b596d576874566678304a56636d31394c356c4d577571476747414b357a4161554c63504f50417864326534414334697a73304d5374664e55757571694c5a5947644a334a696b736e7a3877335350596c65636d65556f624868316b796e752b323950453369616f776c634c6c3744654e5a4e4d734e446b2b6c6c7a5142556e2b4d4c4e5a566e426c424d71776661736c7248763646687273585962506c47626871624d786963434165596f7a45626b4b77342b62416d6d756e42674e474f595a5a327876476a4c6a6a7158794e7755584438764668776b68475858556735502b646f3746766e2f5963412f7743367072747850585877694b44756d6d4e2f682b68704b68783057426e7a326638416b6d4c446c3479613179394b753666506f7a2b552f415a66762b536d6559663466366576326149697332484e6150516c7130596e53636c7345444f346448667a354f787966726c775a714e4f556330454c314168793952622f623952687a7534444b6662434a743237486e6b5a365646455546643254646a56725671544e7157576f435558796a72555771423632765376526c4e6937456c4f663841696e7348514d36424a45302b67732f786679547950473034334641766a526d544b7a4a72666a4b676c727a6d4c5566474d6378627271594173466436753944333864387832413150732f724730524853524f5132504a4b7a61704342776c7830544c35327a522b786c3236657549694b596f6b574d556b695a376f53475a51653961546a414d76324b59465249636a3144624a644a6d503035726d353169382b755935575259665959546e74677172614d3473686a354b76536e3737656c39634a67614b5a506151472b5973662b5377396135726e655070712b3553354b626f6b4b727a53626648474d5a61497657463543313270436b6d634d36652f54393079666e486a42423356697478786f314d306f365a527a776b7634756935656e35445975647975716f707a316a5553307268397754634b5a4d36724a7662385466654e4d52786a6a474d67684a766153465a2f4753356a516a6b55335073565a78396a485a324c52576d6a596f7151596c432b7030494e613161546d484b556c522f76357549596a77674563415a786d6d70314945766f6863325243714e42744f61724d6538384c4f6449317931464b62686e53587a63556c6673533552454255676b45353768736a34376469366d6435422b764764333465494b36657a4e6e317459736e5051525a396247774e6a424d476145346d786b726e4e536d536e33514e63524744635a724d6459466a65432b422b5261434c664c4e49644d6643735137485636664575626b52707a447a7a34765868557557524d2f774166786f74414f7a4c36446d6f435144547a2b6b7a48543468736a3661356d68356c5066563666654d7033735344454333524c74574c4145324a624e643175785254594b5634667a4d47565648454b41467952787a716b2b4a4c492b566d596a714c69792f7831396564364750674e7a63785a636c46397664794241545169334e6e3064534b504f715034312b3132327a326a33324b34354a555267342f6650536230714845766f6a7636756d37307a38623951504349396d6e4e723232365748726d31347877364b317138653979702b6654324635392b5768366d6b6c677a67437664544d366b2f365466456270727767565034462b5038415435333542352f34427241374338743862532f5532663569417569613858553731675274526d77653453306f31716558794d556151414b5a3238374f435a6d2b49724d64344465462b472b6e4739797a786e31466435466d545a5437515875397a6633744e7a2b696b47344c3269646379375857574a6f4959332f534e646864355049447661695a6d306361774e71702f522f38652f544c782f78487a75584d383732383379726a4b52302b625470444275665850574a384e766b535a334c4f6a4a6e346665482b776d6a536f7a3778557a65303358744f507769324d334c566d2b4f2b4565612b462b6e39506e6d6a6461617a326b61795a382f4d6b7a49567a54765a52396276386f543531733538534a30544279776a4d5a794c2f6457635a74453232354534797650562b5162586c574848686e444e346a47646e6c41754943626d5672425059493572633559384b7a6b4c69616c707546674c534b79536f7151596d7356694a7a6a714637764c4f5038414776462f4e4f34702b4c5a6e6e5655736e4937706956727868796d64494455355539584c6d636c6a4a76466d68664f6a374f2f6f2b664d5249694d34375531427256323972647675386338646a67713837384a4c4b56536a5531776c78613064692f6b6e4d5756484f4e75644b4c6e636651766a50395650784159483968494f45527837494944354e7a655273716d3866536958777a55775a453674633365553731644b526f316132453258724a345673634b6c454876436c5542396d623044417a6a45526e50784248575942364459716b4451622f484e6e344d326d74676c537a762b7557595536496b765035786979466e36344c692b594f434444367a7137436d664a504575322b6a766c766a377646482b6d646d6e724c326f736a49386b6273615777784a4c3269702b51492f656e4e5a50573432544e34414f43386b334b4e547571644d5478695a35685064444c6f33395478767969477947555559336a794e52373839627133566f6f2b6d4f665357724f4c5a5564734a79452f437449732b2f77413778687448674a72455969493841445a68424c355a366f6279687655486c6e69627073496159753956773878654c7835554e494343484e37524f516f4179587a69544d4844524d55597a5433566a38492b354f542f414248692f6736644e6d314e354434726a31714563332f3659706b4f53452f76394c6c69704d39674d4a52634c70386477346a57344442314c66366d6574767a41583561575a6f654b515a57346e795851376c65514e3242504742624775433833537a7061725779346859314d7136684b514f383930344238514f4d34564645546a6a4172444f395238726d684a6b4a356d347333674e546238614b37647172357036393634775a7330466f304c62395656302f79334d3667774158474d3541315878636e625044387772627a334338644c7733314b38594c5842575a36682b5235506d5156774f37614b742f524e5063756e7657522f566f58375a38386563654b6d5451526a38435458494a717658644d316e474e6f3179395450492f55507a6e4838415a3563576b716a306e62567365456e50467556616962716f467468324c71736d77652f79454c4d615a543246786f72464a696c4456485437375669493354487844586a552f4b4c386f3766476b5a52657174547366576132617576497a73664e386b657a576f2f6969527261302f65314f6e626e776b357754476c784a644969494173655831722b37707578746e50723743684868705642566f4d35544b664f566936695664484c47556639517a7a4d39387339416a70684e506d674b2f746e6453336f4b496a6b593735744f587365763841324933326878466178736b576347725278464e7263745850747863616d3832785a597237786a32314443786731456150596b302f552b64502b79344a44565a51576b476d6e6a5252464579624b653665737461615535337a48577045614f2f56614a52765a33674a44355568786e7a483744414c5979624e6e4a31426f7a4d794f46555555566f61506b476d4e536334564a6c46334e4a44644143334a3635524a51736e4a4b6d2b2f774350737645794471426a61596e6a4855517a7a58794c61386f6e5a794b57626d326a516949776d7473586241684b58367a6443716f52366c6366386f6e5163553541484753684850384139626e597a707657754f4d6a66722b327852714d394f504d4d5958455362504a5a4b6c51434d54506f47344f52475a557a70363658324c2b773135395968772b386162464c62373275773175316b626e797a3955564b7159365a6c44747430564b6848486e646e716b754b2f515631713864564a4f52566d66483141703473516a656f335a6f7556336d4935672f336c4e5376432f4158386c3839464f2f6b773666686a5a79717857465545384f67654245394375396834454b7a54645973584a3654322f5a4f7a69546d50732f38415854374e7831745076775035756b625563386c38656842684a7a56617553697673747a6f614c796b6d7978753472364247636675687135385a4446376849474573667366366739727246353866376a3146612f347a656c6d5034783464344e2f3450346c6e4448677962666c7a436b37752b5639566252504f4b3639504d534a315a5a2f594b6c626c32715632475a726d7a6b664f705a77786530377046562b5a2b687671463439366265592b6c666f52742b472b70374e44526a382f76384152587964754c6c65524673525454302f653862324e4e79793168474a79346b5a4e5173705951646e696137347a614d7865733272612f4c356a6b6a6c2b6a4f5a756566654c596578353534373469506d7556716554616248645669532b4c324974386d794f2b4b3646633564646d3063546e736d354a315a564570502f576d5749436b2b6a64694c597275326a71465a3667656d4f5036647139427654334a394976474a632b3869587371306f77723873616a4b7935706b5a757452524d6d4e69574c304c7449436637524177596b46764d4f2f3168464c627439706d3868723646666a74365746712b53656465767a6344786e462f38414675303575356d3333596d572f75736e6b38444c5659555166787130324f547736575642503733636b2b6f4c695a5445314c3278696b5967633050794239426839477649647555646e41382f78625337564435486b5069766e646e6144766e6256482b334e4d692b766e3055527048715a4f7a302f43667a74594b54337062644854626761322b4a656c2f714435316961336c2b486b765434683473394c39335830532f69634850506b64576c6d2f41786c6e58312b36725054772b7a6d4a717039717a545238365539764e71316e626e6e4734486b33716652366a2f6a37364565686e68572f52354c366d4b38787662354a677a396b67687a46535a2f384148593174756a6b443263574a4463304b55562b356f772f63345a7541414d417a69753239727a325a4732483431656976676e6950344e6575337158355a34725636682b712f6e50714a6965682f704c6b6f314b304d7a664a4e49475a71664e4d343045783750746143647a72766146682f5779765a3334416f616e2b733953307a71317245626131357244695a35436f387a57386d797261766e376b3675726b56554257347375787344537a4f303949474d44514c715a576458384b4f745a7849743652652f71342b71506778313469504e48756631414f6c584f794e6d6b79636379576839484863366c73374b432b3050744a7371476f4554452b456e3947616a5433686631624d32374d347742796a4476613147525677676f6f55456c5574452f4b4b5a796d6c64307a754c345261735843494161654237416166514a516347346342505859566e5957736e6e7a44343537655830534e61584c593148513036425753566a3755384d6b69664166487870682f6d73534279733075665345646931414c57696f4f4f657562332f435848382b6e436b6d4549526c5378594c4e526731492b78422b7a763742395566456470354763786c495266645936443466664a5353457a644c6b76784b5a514a31587555705966495078734c68386349724c4f7666752b2f2f495930567053505a654b6b2f6a4b5a68705068643578707931476b536f2b6478434a614875495867544f705546486570623870645478546e3959436f50536f584b3739686444532b457566505279624d612f3534744d2b634554342b576c795741616a396e786b376e56484e372f6147675a6c53364a363741374d6937764f657937747155384d413763672b51707045503476336e56375763372f414c6c43424e486745772f5a6e2b54372f6359384c6e534a5a4d664f77584c73734e6b69334b527a704333363331702b3937557356464b4269512b7a326d516b674462774430472f3339757231484c7854313969384c6254707a35507147436376494c4e4d636963664b6845547771677072587a34343236464179664e3867414b3668463343545232522f4e7231696450503452364e504f4d35675a2f554c4478706d686d795861735338656a46436b706957327a2b526557616a326b58386235422b31774369336755597a6d7552526e4f64542f58414b53315056476a423038377944756a70646735466f797156432b6b5035374a7946324262444c5336456556455767786142446c79564a5a712f436d616e3741446472466558453952706436792b766a494e565643644256505a4a7972784e584e3174353249692f5167314d746e735453732f625538705a3363427a4575536b7945412f31544a6e30725363634f6b446d2f2b513372713779484f2f384145516f625462563850794c614f2f48707069706a38644d7076755766475a56445237754d45454542706a4251475075733433577464764876476a584f4b4a517237796349686478486151376e755778697859706c53466143774a6b764347686e743651657a374a6948513530654231413333726165644c3752574b707146504c4764344847565452527a72655454496a314a2f61764f2f664f7945414337677157776d5057596646534b5574487341714b4f30716b6c42414f4e2f584d525055715276784f36417455366a3939416574535467393742412f6c623350663566634c7948796c62793450474c35796635565772516a726c4d316c6e513979454f58386775587165305136427637783033566441466a777441734b7a416c4c61513358497562476954726e45544c4e443673736451636459532f643166753441697747742b45476b357642634d344b7871517276506d70732b354e317130446c6f6e5a4d773173495a56494a73346d34573178734956687a32697a35444261654837303433375568376d6b776256553155325a3647697559576e51704e534b6d6643334c4876366c4c6e314248354f6977546438344f64564d73416f63494c39715232732f4566385650416649667871772f56717278336554354e6d6559654d6238757873584d4850766e50796d65442f78334d79632f7743424b357979636d796e7256642b586c4c754a2b5571472b77756255314a7271376477394f6c374a6649526b4c5264576a4a324a64567a394b446a45614d6233655036476e6d55334943724f4a4c4f43375539793043672b2f6341484f4a676647377a2b4e5a38787146354a2b4b2f6f39357835523466713748707852713548693231416d65757a766b464f706e6256316c6d686451537370424e7564654c506b51663243536233504d2f7744537356633272715445636269366354786e78624b38777866475a3333734449306e3532455033527673577a36656b62382b697576464e76776f4a76746e355237616663482f41467854372f684f737a4f334d63427333362b2f6a31345a3566342f66586933577675344f4c314f59772b51716e43484d5a55614f7875734e6675426468482f414c364a2b424d6653575a4238676c53747072504161672b67766f4a70656c756a737472796c5a45753576563056625350484d754f7a6b383964696a5056304b686464385031325330716b2f3349615a703649704e78693239373776714c363956504546655265462b5877352b616234745348586d66496a72362b4c67324a71704b584b6d71596f50744c7a574548774b5548734278422b756636512f716c4a78614a486c322f754465502b4f6638417a4c3564514c742f2b35366a496a7a6168692f682b6c7679756c78486852774234416a2f41413566744138425a2f7159442b4c2f414e333965686f7a61625a7869663841304f487a7148723533744170343576506e347a7652373370694c4457524c6350374575657775383968483376764c68652f6e6539353344394b34466b4c5743505234427342524d5973566449682b4a505434763946386e5744772f32412b38666158754c39392f6f4d41723673484e2b5a582b617539427763352b6c2b7a354f64584b7769486e796461516d494c35372f77443363393443492b2f5033666d456e564c357a726a5367327434307538365652664a385a45745443453364367776682f35372f6a7751345a6a2f414965772f6930446759657670705831712b4b2b3453426b617035474c4363517a38552b73685373754d545150743677503961544c33667633634450336e6b4c4658793749716648393937696d6e6c5a71312f566f646b66656d47652f6a425745624f754c6a4b435877464a35332f732f4d6674443541484d546562783963693053504c5353452b7375724a516c62495a64315877364677795436434c43566b77387371577a72766e635831307a6d444a524c2f414442687a4930696e34534533544e77357056757454396672714d3268435a467430436251617639333271444662564a5433744b754f543751616a6f4e7230316f704b6c6632467946626571434a63632f4b4d32756e4b5a4c784b39786f735439566453624f444e2f6b304139375435377638414d77517473726b4e4e38636e31726d4f34317768447047736d6148315351724e35564f612f48352b7273584f6f666839382f3050312b3342305061465a6230696b61776663354a38626e44794a65636233666f7554396c2b79484c6c694b5262597862466a774145665a2f6e3750616e2b74496e6c34527867437a5654394c716c746a636236536162433643302f7370433531383758554c34786e3242547854466c77436134432f594159423233782f54395175587646564c564452543776337752396e38683967476a5171616435716142454a434c6e6a316e4345446d4476766633334571775a4447356f4b34336e477334457a454e6e3477314233693461476734445742725945705473495459745164702f532b4c364a742f71764c3566594d754b6d6d514c76754a564d37346b385561763239413863774b4b4543505645546b314a6e397744376a6142384e692f774241496631594f69467a336a77366f7541347957614a413979514361516d677443757950374f6b45305771367365642f785033657871766348394238555a4e597148713063493141784943723575786c543958726e31543069624c503841726a557a6f677a2f414f6f392f774149414b68454d2b6b68797554553853687466374d36474354424b65506c43525a396e766573535879664877586b414b3449423176752b486f4c6a683146392f6933365674395976582f414e487654434356725a764c2f4e6332467971492f6b557a482f6b437076356f2f584a49706e4a4b4570617a39435968662f37542f77415a517a314c62615774484849395050356c656c47666c2b542f414a452b5a61756e486f626e7062364c656b56666f2f34396d704768466b4c62616e655277654f355355644e4447334a7a564e2b30452f2f4145372f4147506d2b4144436e673072547430342f466132346564723167384839574c76543476566a793350747a4d767950594a57466e3054305a7a63686c785561416d6c483157392b5a70726a5766542f794939583375554e3333615136367a574c525561694a4a66765a524e7a394156494578317979616d6e6f3871375739714f65347a482f414f4a372f65747977584d41657a34756b66384158534531304f65767267756250526f43396135694550676b4161425a2b78564b76675636526b6c792b42314b69506867436632504136514663686d556e72757236796f4f6e38594e414f6f54374a7864795546696e2f6b6834447638434d694d6c7541544c2f6752356a62643851654456427163556f625a763378672f414c6e704142342f68454b75504d763078784550656750652f73765a2b754358663669617a48554375686f5459396135323365776d5037597650497a6a725777682b6e783356642b4d2f33594b566959384d33637349414d6667494f7a77335475456a646762704347696e4c324a7555526866554c63304e4d565a31443647777a44714e7a5449724f782f56574850656673562f6b516e376a58326431636263635075496239626d593078367170487a546b625a715756505a3876464b376e7552333546385958522b4e692b634c6e574b4439714e7674464c5a37666c67446c702b345876435a526b346543507a755753796b50676c5032566e5a56384553594a412f70644a76754d6d436f5349782f725150702b325838456b73474f644c4b487257503148644b5672466e57346b6b58372b502f754e4c76576649483737336a53576f50616462626669434955457637464573484639476c64674d414363795648414b395658434267445150755a4c3868467a336d494a392f7345652f596465573357526e4a72766d446a575a366d394a6b6b696f6b50556d64784b4e4e722b55536f4c6c465456734a596a3370644a4a7350393948342f674673723441684d59304a713868484b5a4171647338696d6b7854425456555939552f774270754674444672397a76622b6956776b682f7744433651433676355076397830453857395a516e3854386230315a393848587a5a7953653635306c363673584f6f767133464e4a49747a5a58434f66336f714a7975496a63455074556f5a6a7974574a34547777493535643634575a374f624d316c4853484f634530614e6168564261544a6b32665a434e42536a6f5a50324b3436353356392f77434a72314134456634776e456163545044694e482f4b64477a796252645a563844334f39364a5a34757243564877787a6f6f6e7a452b3076682f6443566c304f754d2f62376c744a7a444d6d3756356335345a444352644853512f77426e75425058734d32632f5a676f506a62374f75354877313045357844336866346a302f724b6370375059576765544975544c7759546e48765571536734754253626e2f45505162507853795a37544a6a462f4944414d32307a2f7744776a2b564c63376432373659446849314c694e692f6a522b7773436c4b454a492f3059453349546f425358544b6f72436f50326345334c562f674b76305041342f65657641457374584f53564a685549477062766a5974684a3469547255793275597464584454375a505976726e676f6c6d482b307945665a2f56625a336377756e31717956594f2f69654d54706f547a78627733487974475a4e7a34314a716f7a707434574769686e52735a3353324b6d64353848745638774a2b7958732b622b6f72616573643470676d4d6658703876533548622b324c6632596965595070754c6a2b43336a434f466e49336b532b554a6b6e5945426e772f59426963424f79666f366f5a6b35666263546230684974557a7550304961584d2b4b2f6e4b466b55744356723653695678507570397a43353048644733776655504a744b6b63734236757a726c30565564366c6444436531375975464b792b42586632734957457850656e386e31507268373171436332766a2b6f4731724d6735484f343272704c726965436d4e513968524238374b2b35646a54636c6b6f6a7862534547504a4c506237506d63357976446d376f43724f49502f77436d626e516c4d524178555078715a6f436844492b664564487437306757756333435857697635766c6d4439633532756f2f4c557173475179745a5348545954613648476c466259592b3667796d2b6b754d4a5a767a564a4276433434414143506a6850326b48652f2b7a5435356c757a664f76454e75534672347458757a3437545674507758757a4158587066783257527036565641304a31704970786b6f55302f774446594a4c2f414c534f6632694f7a4d5436377836456652374842473958676162512b706f4f72727864326f572f593471563877367641386a346d477250704b63306c65505761674a437a342b68376452734963643436534f472f77446538384731464a3947764a34744856656e4e763350455a4c475266587a716c557a6f2f6a4c634e724d304b6e5a747447485a384b3339414137477836513666617662302b797a7774413445446c37365570567a516b345052597a6f6b6a6832564d345a2f4b3735306b54574f36775538353370662f41416e6439337339767939367768713375546a566430624a654d2f5346547a67683539345330705377566676334574594578664f39345a384836792f614145347845493369316b76597a6a596e716d647343647a466c2b6c6b50524a4c422f6459394a50744c37414142644a6f47372f414e776877673565657858352f774278436454374c4e4a6e7a707546664c4b357a526f64653735324d485159494b55513936366634795877694c6e2b6733642f5441466f3954616e514a7a7157305875506b6a71462f7179674b536539544a4a2f6a36796d45686a486e3078576151465332434c544d4f6750784b2b45376a4e71584e36452f576758446179646b52757548504d526a6f374b53314f49675755376f7941684e6a5039786c2f3851766c4241493972374e6d6a38484d386d63736e37527a4e6161585034536c6c4e382f7453514550584f6f3530774e71666c6e4e48734a50452f3158627a6267556b7048342b4e4e4954545131524d7268626f38466c7039735344754c66554c2b2f654371676836596a5037564f5734756e2b6b6c2f56623977467259756f6673384e38523965433445543047714e5054367466426e41592f334f6b3578457a5961794233776b58523933796d712f44732b5165675442664a777142555a4e596565435172514b4a555431524a7253794975414a4e576c68724658435948666166762b49665955677353587337617831626564647a6b594848456979384b6d6e663841795763397448764e507853783147766e4f676c774754694c33487867382f304259376e477636692b39726d737a787a696d5331676166427a6d4f6b7979764e39684b4666666b6e493073377746726a4d36666677446177424f677a6d63445a565575467a556937324a737a564f4d6b786c6d73356143695a786c417a6a4779666f3836446672642b45506d7057316c71786d666b4e792f376633707850366a666c6c366151306853334e3858323876795056304c732b7252724b4c47726c307669716d7a3174347a3970495663365852427a7659412b3976364171613174756c62777550556c3539755a55472f647635636b4f4d77536d63475458695475745978576e6f593656616a614b484655376f2b534f4671704a4b442b6177446b47684156794f382b735469493778354a667a4372437a386c6656356e566c42433756533070703435635533432b644f323977356c487a4638594e6f496a555a7061785267442f414e6b73782f7230745073562b593172647a6f616246744e63686f6f4d506439525a7a733679316946393759316e417148363546302f6b3666734d2f6c48355864622b722f752f586946544f5a63764855364e444b4f55396257527a6a644c62714b6f2b75665a5a69715277707954474a465478522f435667702b626e742f583950326e72416575534c78495655494f4c4e633173376d41525a7a78626e7570524776685566416d632f6a585831587655494e6358434a544870536a4d664f63532f6755567a7a424a3873726c4c4255625763496d726f6e3731446638616b396a6e57497461502f414e76636c6e3665743336445a76384143464b58666c70364648374d394d51656f75565a6e56574252584a7968644b534873364579725a4b7a7479342b533859412f437a324d456b67414f46712f35647634592f72412f6f56656c7849322f45356e63307461542b4d4265304b706f684850717378343944506157546f5a616571716a366d6556394c6e73556d6d67445647705534396e2f414b386959784d783444574c386d637a534448316b737a6e42674b316c785a78386974644b4576384d4e6e4c3054654e2f414338303833366f416a2f41484b722f6b6a4b52593255484f75314f6f385433353855743066796539524878347a4a5a6d61453958305863697a796e5a57793556766564685479616a53355259486539506e76455459317637595a752f7230394c4732756567306f4354734f67676552543156664f42524f6579706d652b5a585a61754c4d39426e754a66584f4762726b2f35447941784d5346686c7a62647939654950673354376d7150684a4b6153344357324c57644d75653068716a70562b6a55307746342f484c4f4a463178424d726f4748444e423135643335512b547231556643665539544f32645336527434464d65676b67643233556d74304b6a5a6e75616d4e5a646c3649724275622f73594130476b366874354e532b565173764a56744c61646c7130632b797a4a6c4278705855453431636d2b46665855536770696b4d6d50356d7334565850387874455a7479384247673646424c476d32654274464264714873724830554d6552634a507857513959346942776a7a716c6e326e34544a784f6f50676474325050503643547a43796f357556466e727a2b31792f78784f7237634853564c4c724a6b6f2b63564d646c74536e336b4e44452f4c3261737861444b525075595a574b6e49584a483763534a726d65795565447853686f5744356d3135536e4d70637a326b7a3972396e37353133413648535639696d3165314146336463743070563963327a712f6b6350426f4662546f426e7a6f32455038416b2b46507a4f5a3166794c6277672f664451745173346474507647583648535a536d465165376b63343075566b4d39347a526654446f694a5566496d687456446862305073732b5943647767506e762f414b66782f543141527165553863575849704a736239745471376b517945484b5072796a7a76585673346d686a4230483936332f41432b4b7a7636457a344c465069336643454c2b554a367356716f43747a726b4b424865547732676476474d72357a3758766e6a2b623567506a6144353874686b48786334615771642f30446267464751506f6e7676357a7679414b6871632f6b2f794a366b766b344967786246725a336f4f583741454341674d6a4131327a75696473676b766b71637030714b72577257355a76536c6246765a79613458506e526e537a6a4d79632b734a79766c5a3776303732644550312f75722b383965416150736b696c43324141427961454e4e4a49575049366d72455a4b41576c5a386e30462f594c32675074396e316a4d502b662b485069322f43476e424670644a4b353671752b383238442f414b6a452f575574744e5878324f37394a79324a7159302b6e2b684f6b51464d772b302b61425364672f427a724b58384435306666426f43674b4643626d646179567177457668466e7a6b732b4f2f792f5a683858446362416331444a6d6530586f373031566b757a392f5a68574d786e384355456f7664326966716f58434939617a3342535467442f593768557a4e757a4f4d444e492f764e5035464b4d5a72314a4d4f4b47686c63425a744670634c527036594d4a39512f47585134766850425467446868385839522b383965415943505a666e5a4d796466316275554247674f794134703175704a41452b666e4b76636b617563596652352f3662316641615a674c6239334e67646f50374c666f6a712b582b74586b2f72534e30556a7653444a7068795a5879726a4a666c766c384e4869736a616e312f493456684864704d70455575364c506b4a717a44744163342f613778466476347658396831712f4e3738517354387666427239624c305966462f565078326c3133686d3766706f7446376b76642f7743545a576851557943646c2f79554f6c456b75484d6f446a4453516e69336a4965476c7132303578485a486b7239517641664a7653377a6255384d395350486e34336b336a4c5753366d666f692b41615549665531646b624f787064524f38714b766433696939334569592f4c5151675066466f74586c3632455758386645564a3663537070486a6e714e7a54476b796f4b35623168646359736a2b78396d6f6961766779725a386e7a4c396f4152366867563143625030784536546f57394c7a46307130742b30517334565330435468486e784c34534f48387863397166616f695748395632387530497259317a45487266416f4f6435536237656363783351302b41584b7744343339567761445237752b39516762506a39706638414154336375426148704834766e6565657076675067564e6d776e78377954647763376361576b5577543438744e54393178317239362f67444a46372f414e6f2b7737682f4d43466d4a66422f564c544d567649364c422b446e7056356c676571486b2f69586c6e6b475133444b4b3777614b64596255647667346c35426d6556626c4c593168306b39386d78645a6b494a52307270584a2b4a41644d375036352f65326a62456a5862314b2f436a7a6a773779724f7a50455049636e7a3745305042644831613774396c6e38534a33694b346e61564e725a7444534d63646c48316443655652754c7466732b4b5264502f496e654e574a6a6a546238493659662f4a384d50576e2f414444383838396f787a763866384f3842646a2b52366b2f79634d58334f614b49526650376d7932554f7a796f46624234424d7a66706d70764767674d50624c563933574d66462f364874303851336641664f4a4b614d4c5062543552485133527936452f593231386b6d6f30506a72636330713647547542552f79435a66346363786a6e56772b38673879596d4d37707a48686753794148367366756868306f363551762b7731644138366a4f723070717453734b576a4d326963395a52555564304b614843716177545a30694a3873646a7a794d764a4561754c6d794a74724f4b324c5a654e47317378616161304c6c547055765a486e5a72574a6f6c4363766c6a347174784f306158437a35445131724665624f376a676550332f355270367466764e39422f537a3370513759723868395439374a35434938657650542f41596868516e5173644a6e6a39366f356c394a3473473833562b796b5038415636507356597a4e7537736a7935424e59355057746e486e4c61453936684d66477041364c526332785347554d576a7132587235776955413944355039663841683777394d664a785a31695647354c706f6962565439645249526d6466316e7950724736586875304f706f6f5176686b494f494a33384d78442f4d4555333847647267426a574738426256706931726c6739503661684e4d79314e5a37566a4c3166316d7548324a612f342f6563796c5a2b3738782b363566516d73706d63797151692b47576e6b72357734594a59395a7054527868724f77766e5032394e3470704d7853304f644d483550763977544135367632785548314134693832386d766e6f45547933664d77714f6359667a4e476c59725534786342683849665735774a7662572f616b5a637559546f464e593557656e73777a4a6b736638774d546f664f79327454684d6c366a5061584766367a643336446e6437305a306756524736686662577059416132566339726f685452384c557a722b47656455695a6c66484f7566334d412f7742667458776e534a722b55414862685750494b5379452b74457830784b614c2f7064367272467636543345412f71347032474f65537963582b5036553333676c507646702f315839333638522b6438697a2b727849326353346c79756652517a6e794c2f79363368456c4b796e476a516e627756434a6e2f6a2b763853377748352f7439673877627671616d6361425543414a68634f5837434b2b68387570385963636c6e564353796c4a76754a4a66443837684868434142326263613577444b6453576764504f366263335066336a48766e364e77614c36666d666e7a506e4b6a7657526a565651336c5074655357483056456176655a35375a7875376832682f7444666c66343734487362663478656f6d672b4442383232466158674f6b594b67746e38677655374271386166594f6b4b2f63316450766d6a723645685741777962476135544844326e546d593935547055656c66315339486655667948783778337950304d38343266434e58787055326e5434624e424e50676238657031303268466f6a564b6735544b5479443766544c4c306f756577435439636c677033445731596d5a7658646b567034525772527078673955505566386a4d2f5178703434743645374951785a732b542b42477562504f66506256477653317454354a4b6c464a3750754e79674156726359576e6a3261774a525436417a657152786f5676384171744a346234647154687437546479306154546e393047446d5135384f61696565703278566a77614b4539716a34575656397573432b427831337a58687938777433627a4d44307a384d767466355458334d746a304354376b7a5530644452355664694f2f7744494e4b4f446e334a367173323268694c6248317467392f3841385a55487672473638784752346b667a662f4954592f4a54386a4e3379364b2f712f447358692f4650457552526a4d4b6f494858465270776f2b596e4f735a704f304b6c6649357a696e734d786351427a332b70705572536d5069476e653165466632792f774361666c56754b532b3537394735734e6c525577564e66396a7069336b3979656d584750384166394d7761414171623564713875643344496874535a51624c333230766e61507a545a3746707242414f4372672f5661557646756e4e63362b4478516a3769443345596530576c6175376a754854502b303636367238774d445053756b4a744878336168312b51324d56517678716e4d486c32757366764958383831464f533143506570712b30673553316c4d5238352f616365376a485165327a6d6947766c355753497a565a47546f386e356f706e735965484e6e4b2b6a50384147462b30762b505a506f5053735073664e78587a504369684e4b79597a7952412f4e50556241436a72707448487158725a79624561716572766254544a4250612b3375587336696d756f4e6d58724a524e59687a57527557545638366b5574747374386835622f3730586c4e65763673656c54397a6863674c784862717a714549586b6679565462595374306572304d7671495a58324c79656e4d464c546b41484d6375686a50385051396d6a6c76456342787a46565661585a3831714b4a732b66374b6336326c794b316e38624a625064477635517359554d7175435651696676764f656b693730357537434256454631583132692b51756b4c6b67356e3758544b796550694f6c316d65527975706f584358373730456b44675550764c396631745873774e742f77416250792b3951767832766b79716871326642615650593778782b7464484e6a3276534e4f647359735674484f6331454d6f7459766e78413333586a376242506738444b2b6c572b5a2b49656a5438642f376f337039352b32456f2f496c3564326c6c7a353166664a6f59754d3445714358644f444131467478385038413331386d344a74364e4e37496145716e733979754855304a6a356a6f74344c36652b69667248354858726143633358304a30563359637559543830587266524f784f75627578472f53507535386476456935495530704e6c47556d78763178786d3270574275566d302b69506f786b595a357a536e79396a505361366c4d5a5a7a4a3470656c4b792f744436724b64444c546d716a6b712b4a72627a4b5a46494e65453667646e7a576e78486e352f765a2f33432f41664966547a4a394176454e4f5066304e37526931664b39575a6e4c7241797356566d7a45776247782f45567a382b7965592f645a5431587a4f46716846536662312b79364e74322b59486c72375858536c646731644345573066575744487a304e2f2b6d464f754b727567332f5832464b2f5a7833656464395a764f6d43706f2b4832416a694f696d72502b50767363702f4f794f7a565456464c396e514a675071597831584a2f6a58526e796958457236663644356c65775142347a4f637a6e714c2f716c3338774a624d2f787a513776424d57553062632b58796251665778544b636c7552656d4e66626d5459353247585544523953654e787a2f54495a794776436378314663625034372b75574e487a5433765266316a7a68366a4f614f6c762b4265556e6e466d6f57794d366157305a49766f7a2b4a6b4755474c49514d51366b6a367234672f7138616c5a3452616f6b6e6a5548713134626c467a766f31356e626c45364c525a6376777279512f774244465059543434364d3750535978716e737a567242745a6e4e38503741786e623735596d61326d6357474f7836772b6579504b506478755968714e596e4670545554754c526d32663553726e46644654592f59354b2b4e5344584373356755326c6b73767868474936523047376e3976565035712b70503545654731666976365a2b592b6557354f686763386d676d68666865472f2b4f527254476c336d74326a374a4a637335382f394c34644873706143314742734a56464f577437717462653874746d6658722f414e6a2b6b74364265676e6b6e70483435697532665553314f316254437a547a38776c5a30482f78696d306f323352542b7a634c6d5774524752474c58657a2f414a2b45666c446e6933764670787345662f4a4c2b33762b4c3335636c7161487274364e654c6555374e63556e7862794d7738507a754c4e7a2b31504971396d475550354355467a7a705350474d562f325339784761544d4c5531723037467549383148355a2f2f4143566e5275375a752f694e363159483230546c7944773331532b50486e756d466c67356349622b4a4b3736647845496f3436704243303342396a73793069316e5a702b336432705870344479722f6b722b4858354e2f694235565234562b52486f2f356c36623344573155576871353556654b622f5a43495371386238747a53646d65515444386e2f766b715a3750662b6d69422b344f64314e536d704761577a41316f574b7937336a4764582f6a333239396e764839392f38416f635a33686673422f7743502f6f3835332f3841312f567832612f73492b73456670482f414848665367646265317366782f31426a336641646d57433470494e762b5868597a48683235755a31584e434d4e7966506549645550524e496c77774833392f726e3971724e7447307838492f6f374a6e73393945546671364d623575447775466e763566783944706f6d386f346f71575372466e787135384e2f36493264364c6a52795a506a68507875752b6e536e50676a6177724a6f4e4f35675652716c7531736466556c6e672b7270334d556c69656465754d4470426775532b6a7167636b4a53397373395469375574637a65652b6d5374693535336337523730665a732b596c4379596b4c377a334937495a322f44336771553171414c6772506e363035563648783561494a364b632b6d6a72466169624a35353174374c5a30437346684370784a4d5150346539556e33394253773864582f796b7153597679452f466d6a6d6a457938765476656f3074466b6c4b4f785468356864707034626f53343271507159312f762f6331524f796b73574a64594645766f65772f3565702f4648395277476a394d664b30654e36336b47586d4e73384969734c457632725358755a42614d4b3132707a44716d466678733559786b524b377851753936754b365168337265766447635935784c2f454a55783657664f464f62716d4642496e314b5a547a63552f725a74723645554d6e2b63685478645357304553754a71376d313030767336612b6631516441507831353647654a2b70656273666b62344635623668656d504d37577956595750517a4174685a7a4454424179796f74354852686b7378556e30313841444b50682b777a41674b6c34764d66733762624349375750695853362f4d56577a586d7430366878732f55513758566a3561644c2f414e4d5456576945522b47624e576c7448753730444f6b484c427a56584a637262505765493948336f6636362b6d2f6a663451666a64364f542b73324a364b657033712f346c732b6d66674871514177616c6e702f77435152626c7758654e65516372494f2b50352b31653671542b554a776538374b534a7954573737504661732b39314c3764316138316f4774486f742b4f503541512f67522b5a2f774350394f466d2b6f507178503637654757352f692f6a666e325a59586c4b36557a36657675356d7844705352304c4e73444b45394738796e75412f6c4351784b482b7232765433326c6673316950776966666756364a65612f6a6a5036712f6b7a363559755a3644362f70703477763034394c6333314a61433842666c32394c6d336a3544754f7778377a57455375575466726d344854623944434f59766d47654e5738583236566562647a57326934765866314a70394550554830322f4c623039743861395876536e3135693863384e39644d37784b535857394e2f4b2f4971354635766b4e73325a2f45386e71324f77324c584e317a7736346e456b654c2b4d667256705764534a3037637471396e7a45763841564f766e3478656459503479666a6e34666f2b436550655153356e7131355836684b446d333542354a623548665a6f5a486955763831342f6f4d6e793571475763465a2f70424456476c535263532f69696e5048764c32335a34433176565031522f495878763841466a3069386938585077547a483157337649664a4d337a7a5771384d773161373861755335654c35413957544841715769464f6c49716d68612b43587a5050342f754b2b594b3172533270614a375077694c2b71506f643439366a666a68364e654a65474c3865775079566a384c79664b5048706c7351745871724667645848356a3666655236626441683751444b73766968646f42587a36776353635041746f6e6d74706939706e2f4c2f414b666d45663841577230683848394f5079426a443038793159574d727776784c6638414a3847584e74396d644433464c547547314b4a656e5a43524c6e554b615663454733777059796850465a2f394b5774616b52595476775830332f4673765458314439567358305272394f744c786e79724b386371666865543543333651586e6b3862756c71734a6365544f624b4630582f565553766238664142727a6d6e366d327075725762626862486a3650482f4876417739536978504f375a61664c747a77797a7837772f4679504964494b6b57366d637266322b706552396f466164434a6a323957437a73566e45594e5743663670624d32326a5a7277666638616f6d6a7850484a7a796649613655305a67563534356d6c59515259354f3039736c796c576d566d6f43334e645374524631332b592f4e77512f71737a5057524c3361584a4b724f46546e616d646c356a646f4c303748626d5858694e516464437a4b30506d5a4f6d7a4e4f66344f542f4f584a684e782b38784c2b6f452f2f77444d4d4b64755a50634979446344304a6f63556f70664c795868637174744c5038412b4672686e4b5a7969563849473561554e2b4e50364948575235426a304d5a73393538696e364d3034566c4d6e3548305631465853446e73446843786e787353627539637235512b4e715148674532746f6d654564414e326a6f726136522f614b3357752f663070692f55776f533337625067706271635a5a43357052675065746b5349342f51506f544354553245657038695669727a30564974423270645a326e5430696572504a7a4f5335796c6f59426646397a712b3576464a53756c2f2b43356e705935704334447a483573357a5649706e41457878736b58726372564f35544d3737484b45484c4f5059663164644344506438424439622f414a45506d396c4144673259685759307646374b4b546c71693568584e6649796e76366b35314c6c766d304b47334d6c487665393473716659345466315273454d395455506f4a303458546d6330314b2f642b3878766a30674d4b564b356e504b704a464a577a32675365304e62376e45484f6766742b4d4b797a764a423867712f6937733938742f5672466d736138784d434c79357a75766232574c59617234546a546c695a64642f7070536c7a564a44696c4d54474f45686a3546364f35766b7a453744624b4d2f5668646f4f485365754362717a4b69684b7a314661487457353870554c2b467a656d663776416d6f345065513254457a485150722f456f746e4d4c78764d3872676e73315743443646536436783049716c4a6f55725a6d73567057494b636c677765386146644b71615066796c53776a50664d65766f4d7646505466787277355361394448694e364746326a57616872703550717363726a6d33552f4f663758637365546346767a4158784e634e4e43505a4e4d7a4d395a456932303566465764374c6a394c4b5069616131446e575a732b54314d2f4f794c632b45696858396f7442437a2f414d654a437765495433332b795342576d7871344d7658565077744963463670364d702f323450736c58426e54394238466d6c52796550767473596b46436b3069494a49576d673567544d524d3949794b75577a786a79526a4a6b725650504c454b30356565706d71596b4769742b766f554b526d736958794d5a35676f6d2b526f63576b696f46616d69535a35712b5752526e716c35443551725949394675536a4b5739356431746d5656436b5a305759744a5366772f4b4139734b4a563646464a4d42725575766b4c3239615a527a3370455969653861682b54303061464f504b3837324f6a70545a51614e41394a567662736c4f6e65384d37502b6979724a583834493971654d4f6a6d616c4d744b572f44374c675846357a74467351566264746479732f735768694d305a616f4b4b524a4b52566a30515977392b3151396b2b637637416434755a30795149772b736270677632627a4878522b6553735372344c455454332f78633147646c4c653538626b782f55685672445a5549616b4d344a6f447450755032716254387a7671714371724c3155472f4d314d7a6b4d3257786b6342717a75457a54756d6b7a55567349744f4e6b2f76542f4872426638416e387a674e704a7170616e707a426f76366e3138772f79413864566d50706336586377637a766a6e6564796c386f7138737a36635050792f482b35732f5631576a6d324c4b676c667876487051316464484f716d64745473774f3276706f506e395a7756304a7a504673767975667864654e506f6b392b6a4754354931447a5a6f64714175644935636444775544334d4d365a316830334f56382f4e4f4f373442736c69656d773538765a66494a62744f7854614f3651554d43392f495463326557785742585374796633386376756f58336e4f4434386b665959413335615774752b55437759735a5534414d434b7554352f6634796338344e534f53676a31355a71345361387157554c3643525179705a6838544f704c683859735036714446484d374854316b4e6a7038322f54424c564a6c52306c5548457978362b425950575379385a477367424941775a36557565496d536934455362356a6a33366631706f6f663547534b4f54517970457554334967496866376f6675797a6f75575a696e6a3145584355367843682b6343486868576e6b432f4a614578526a617248494e4c4530464c733577553072627279364f714b6e774f59524f3756477868736f6258316b64596445756646574538786a764559524c35474c55374759476a5936544956612b4b6874737470586b4f586f5a3453647245572b53665a6f55565a6d72674257666a61556d66586e544d55786a7062674866653750455554727a3634786a494f324d36794a77636e6f7856305a615a733961666878374a5a4a35316a31794f664c3133525451743376542f565152437679754d636d4c477a4f347847557a487973686d3471586d7537687562316b46483130725563717947666e6539353741446b6c48364b6e2b706a48654c43364f70504e747531714657585432794c547044546b6b31615757312f58696d4c50576e3548496f6873573771515653667775563066624d4839514538576e53644c6e36587974707466645a48386d54703361717a52585751762b7852544c2f334c4f366e5a567058316c6755696b7770424d3079567767536a2b527a6d66714c7564376d33705537727256553055506335307a475a6b36576d672b5856547356657a7648662b6c45414e554c672b594a416e4770546f5454717054334d756e5a4263436a48322f5466317950762f7743706975527775766f2f6678644a5130706a3435375755517563344234726656652b6d64354e7a58386279535834364c64465669626674694d34543574464e48734c53462f7434414359584c6f465247326c69676e437132383049613437503056503861453945394f557a6a7573375979743345507170363455314c712f59793939702f6648326533686e37677a6d44357442504576577a334251553735362b314b466b774a6e7a2b76353830746138766e2f774150336535617666594a4a4c346d5443494f5750344831314d6d4365572f556e5a4858795a6c564c707a6e6a6f7674374658555254756553324e6e524f615446627547612f6333674f4443526564386b7446556c7463736937585857636a762b33577962734c494b62666c39674c75534b61756f447335547a6b6677675241487441485162574f707a49304b6a6559383644314e3132795671474c76416853396d68704b506e4578574c44676a557a6e654d344a695a4a3445595652557a4f744835553870452b7772556e684c5130756e6f3336456c4e7456467a456c516d6d656c337a652f677541372f65496a517a35566733467551546b6e565251672b7a63737273305739436167796730444e466661364738685a2f4c533643586c4d684e49637848394a5856666f4568466e665257556648755a592b7154506f5632596c3531457376326f39707470417963316b4c6e466e73516f6a4e58755430554b437562686d456b6b5a44705a314768704463434a7153524137706330724d33452b516541794c2f496e4d5332683374365a696c4b347a464a643739596e47446a5254436d566e457a44524e592b585354426e6c597a715948385347576d5250556b744c442b38353351586448774b624b66304c6b702b56775250584770554539777a6e564c584b746e385a4255767261386e527a32553761386972684535432b554a543332456771505a2f6746492b396741412b6c3169506a726d6a7a4b654c45585557306c535855517779484d306b6c42525a4d75775a30347063344a307547666f4b6e41706d674851527a72574a35596838566c6e4563734f553530792f4678463876336c6d456e38667a7061445072344b766a35316f43732f656c69316c317a674b77383056677935792f347133487a39475375746565645a775630366162585839706f4c395636464443547859736e705638712f6552564f43654867512b6874527a327935733864647465714c7072714932446b4a50725a577634736873575646546d4463626756384a676c334b4f676e3567633041316a6f6a71616974504d65673875575733595771746d6c6e4f7a7033442b364a325547654f515a4f74375864567a71673444786d52384b785a2f514d7037527862706f6d745368506a6345336a764347635a6e556a69392b2b697a6a5936426e5470444856337169426133392b467645304c7349355861647679774a426a64626f7943736e4372325153532f52354a6b614c57615a61496762396d6a5169514b5a543657616a71795430713175533431324d50327a5574474a7744756a6f38685777343136316c6a6e2f556539304c5a705539645055793173334669516241697a5354326f4b46435a7a5232415a4e4d2b6755424f5a5943656571532b536144715964585066585679647736716d353478374f58444f576a33326a70445678696c6776354857496254386e2b704c67584b4273356d515275665038414c536c656a33376347585677462f347a4367524576707831315a37523730516d63415753733470382f77415441686536354e2b745a5264374b70496d74756e7a755072375669383674796443654d62344f3873487562596c7a6c716d5a5763314b562b78314c412b53386469337a2f734f4658397a2f544e5035412b4f5947566e54787739394e38576b6e4a7a353662716c6955375470562b714a46702b7452436c6a4f473150324568796f68636330717836744473524d2f69484e68766a565555733741466e335a754e2f6b6336516b726f38665a7078782f4f5238584c3832624f4761756f526c7445596e4d5144684f6d67414f7666336e6b4347574636364e4b4451564250333446725a796b5175357a6b7568637a667a58717a32544e59786f324d6a4a662f77424c41457a336c77792b4e62644138386573626b724f4e6153533937546930567263756832676d366978645a2f4d796f443071756b37506f3674416942756a42674644303172444f314f2b4945307a6e51687030695631637658614f5933512b7a71453436417a4c52524f576379476f65324d48504a6e2b43316579626748547837506936415a687937783647664578755a46576a754a767a776e303836366235637a7875593677435450537434753436786a724d393476373741424d3332552f76676577325a6e724f515079386173616d4c6d554562694f69586970376730445750522b57574a7a43714e6268354f7466374a717631384e4b51726f39705464564d7a4d7a6d52336a3950667763394e76556a3858504776564f35366644504936764937746e7a507a79545333724e6554302f3841464e33535a7035685330652b6179676b7a755577576b364e4141332f414c4b6763376a7561645759314e7661464c2b6b327036506574483530656a58692f70313650654f5a486f7834396f312b506a6e33654f7a48357a35336f356d4e52796a7966314144666a6e346768646e3539556b7a314562455754477959485441722b72587261756c6162577a61503949726631617a4a63543134395a4d4478584b546878596e7162354a6c5a6e682b5450494f637674344d53724a6b6f35477958502b627179563048434b2f5964626b5650486a412f71613859724d2f68486172385a2f427458304e39482f4239487668486a31766c2f71337335717655623739452f6a6c324434536457674e637a3037567a694a6b326257356a52513032692b6d6c6936484e50674879336d4c327458484c5556446f4a38362f46483132327878383248794830523837526d32597669326a5a625a6b503841463950556e6e38696c6d4377516e6c75562f49455559764d774f644a41447566474a6476474e536e487431466765736956656e4850466651333055784a2f466644764d3058656f336b6135395147563348586f30614b73707337484c4a4f4f756368616b6e4d6d5a49474f7a67384e58784c644665505066745635524a50545078484d7a2f43765876724e49306e702b6e39336a386e614e65716843637875614e50654932324f2b4a63744b535851355457452f763167594444365a4a58467263617a367949562b4a33694f46366258616e76324b50384144302b586b77637153446f787135627064364d6a412f7859774b4c734d654c2f414f754874373333416b37466963366b7a614a7a2b49584e36663841715868612b543548354a3536337358716a686544552b5036766b685576516a79664f54572b6d52626d4a6e536c6853637368344276576d6a3566325836557967666457617a576545636f6f624969797a784f5455352b5a526578304e664b36733248426d6a375a5456784e7558506e7559326f65756e304b5a657a3247302f737a69744b584b3936375733626f78394265545048702f4c664250547678546e624744345975705768784a68325633437a6e514d7a704e573664373069464643666c59552f58665a644c534d346537745039563657744d664544766d666a6e6931457544676558654f6565573065496430376372503855304e6d504d304a4666596e3579797a477569657172704d2b5651392f36334a674867696e68736a4f49745047596e71434f62344d364c78707548346846722b496a35586f7776713343756d6e386a7a356d636e73544878334e717864565665673636676145675279516d30415344557145457a787a504e7445347873594f48526958374c2f4a4f54614f4e51757568716d75796e7a4e654e6a5a524e672f39354d38507772452f6358734674626a6f54545172735450663266583145325234746a4536693972554e72707053446a582b36766d516161624f4e4763666176327359576b785963557341616b794e437856386e6137725a3234342f59505034354f543964417269476876506b66315049654d4e674f2b7173766b456b6b3533794c6e6337393842544f557339347259662b7165466f38676c626d785845534c344e4f686b356f584f7758646c636969586d585a4e53744a454245734a31702f5a414a744a6637344c673934682f56674c4c78544b593966416e4e687a7a7a546a553836574d747a65542f43315a79352f774153766d584b77313041614b4b54556e736f467a2f53786c63322f4439776c5772476b36346b4b6a5570414c576c31556f71474b2f51574b3145617443647264424971757556313378687a6b37715336482b74587732414b76796c796c2f4548633432394e7374534b36624f7137426f4b734850664d6b4571525a51756648686570686b6e6e7842387066574e2f782f3046502b552b552b515479754a4e47764c7865664b62307751332f4c41797146643175626254643959584a586b794c664c375746337644716e393443723733394244646e7a7576537a644c2b625a736352466e536b2b6c382b6939542f664b50336b4b2b7336646c547662564f4358306f2b536d5531416b43565239674a694a6e704168486953386e7948526670777a335453382f6a6c5768702b536d706a775138645a7468356d524738614e4361484446485065777a53724b494f554f55337666366d59745876774374614d6a42475735377037394666577a56343147343358784b4c35542b73717471696f4c37695268314a712b6f704a667767432b4a4d4930396449357265654270353530352b6a4c7578707a455a6b756c56446e726e66354c4c705a617561597431612b5553535a31534a39414a3357534b4f5a4b47756f4e6a4c445858504766647567302b33636e57774b5533716c7158426e58666457367459334935566f66787665766c4279524c55436c4f54724f462f4f6c38674f37567751552f6e577a574d7a6766456c3433725265544f2b77737366744769313147746a4e6250484a48725845452b66446b754161722b306a435a45734539563750384172694650367066626a477742777a2f45367444574448324b4c5a5553717a3334324f6f37314d6c71305034464d66527557695a6c4170682f556965652f70706d4d6e43707968542f41464850352f634831622f636e44386756347a465a555a64797a76564a4a4e6174776c78737445565864654e646679712b6c72664b336f754a6e317550656f7145567363694a6d324c64525843764f704b7674344f377654436943334a365a784d6a69556e373055756e7a53626f34322f496c4b527a566b3372314158586459344163464a5a30307470727435717a6e4172742b6d33666859506a32584a5576736270344d43614556446f7a4e792f3432577a596c51784c48543830457339796862535942542f7a2f77426876506d7648434f4d35774f77763976377837786250394b2f4b7332444c7a3449352f4a4654377171715736664562455a3534555a304d37506d42507679626a6f424a666f7538717041774f6b334f6e3539624f36766b4e6e6a6b7a5a744b72376d35413955644c3542344e6e633562475857664a645252616d646f6a483257704e414d4e4a564742715562674642756267504f662f77444b5150494e50412f4466477a344e4e4b5a66492f554c786d797a5069766f473473747758515351396a736b5233362f492f34386d73627a37434c6333347a2b783851384876396a724d3676443849384f5847387a38707230385a43707657357136365a4a46636168464c557056505a665131755437476c4f497063347663334a343170676244627a30754e70383548516638592f5762314369386f4248696b2f6e3371333675736946766a6e692b703875686734632b6271344e70364f586d367165686731736a4c76783043547071527653626861306b544f7976574a6a6a4f32734462727a44315177672f486e3171322f774167594d50775831773872386c7778394d646278585031775a6930654a2b51733066744939534b4e49754438795932444b796175696e5235657a3465664c4e30303072576439646e477678663841384935412b724f4636675a6c737539355a69376354764f4156733557706532524962617444327a48735a4e6652634e544730616e7358516f6e43662f41474f6837326336316e5254626e2b45536448716456342f346834394b41736671557a5a785a656d316f30447a485732364d4b49577930494f50532f30304d5630314f616630416f4233755759746a627874392f6f4976356836312b65655365477965494e3838766f4b7274312b396d30733779664d6650645967496331723174667072634f6638707a494c34506278534771436866384179696d4a7a734555386575544c346c35466e3970346e756a5a44792f723176314161366a4d7364496644514a477433437149466f412b63372f4d5571397076446a51744f633138653739414b2f77444c4e5a654852685a2b3776535a4e42472b6e4e7962564f6963393048743144624448384b526c347772416f4565443869456f3530452f456b50366e45353359345a794a7436552b52656d75446c2b704e506b39437838737138577a552b6d2b624832355571644e7263357a4f367441724e6a4b426b6c596c53334e4c6f4d63732b6e3849456c30576930374d646a347631473766344e2f6c68346e3652656638416a4b50794e31394e58706234506b655865582b4e3575546e6a73715a366b36766a447647385133514e684d5579694c6b6d6147394d682f2b6d657a6e52396c7a636462546d3052733457742f516330664a7147336232767548564d6c6d723542723644436d676d376c303036565472786d6a566c694a5378676d7937347a4a6e4639435579357a696a48396446635458614932395a4e4871616544376c6e3757465373697166534d684d375072314577516e6e355979666e65756150312b477a72446353666e3566753563422b376c55365730557441674f385a614b653963683950745a373253714f6c665765344f6b4a4c63594e36333242376a642f6d437166732f57513055485a6270766679575a585842565571626e506b4c545663766e4f653969663855392b4a764664547a6f434b58437a324678356862686176686b484f764a66666d6b436735516c6c553030434c4755537a304334355546495052474556736f44726c736359674248374f75436b3159686a415031666a5951315a66554a3752524d43726c54755749334a5074565832503841696a6b7969364c4f492b58765950644d33702b3579644c39775565746248706b6a43634b61523442634e67784a5737506f6c544678694b765a7967564c586f695456485237317550343142315a63462f483950554250687546535235614b6d484c6174456642344843714a2f364d523937756d6b766d6f4a6a663251394d5434617a4e7268576a514431786e51703066376e62336a6668487679704a624f424d784b65664773666c6e4170562b38324e2b4d50326d66384178417a2f41457575364d6275344c464742523239652f74636143552b6559506b6d665650787a35506361334f464356697562357639664344336538756649494359324669656a666e59656d50713736656570656a50596366686e6d47587531396a474a62573573476b7a6c71353130566455353947584852374766735261342b2f7076796774773557694c5674577648635056564c362b65412b73766a74766c337035726f3871796478574374537a4846717238647075675a3871394878477a57357832743353314b767247316b79706c705a6f2f72322b2f6d6c352b796132694c6434305839622f56445438543254346f4b4c6d4a667052323255566f37463433456a51317336304c744b6a4c4a6574444a444f2f3238366a6741795a4d7765796e6838547657756545634d4371765358385750556238786654547a37317167757a504866444d44752b374b6d7a72633672627538687835474c6c4c363872445867796e2f48706546426b715a6638477346664d72524d754c58725331617a33446a4a7151557a4d31473766386e54616a7950526865397133496655774b755438705934476337476b724b484c45556758456734774a59473962443670763069735a414a5a70565a3842527a2f58557a3239595537554f684e6e2b51394a5a467871366d732f34352b684941346e6a526d2b5a6242432b654751375a4e3148487237396271714870484f6539535631734358345a4a70365530542b776b3858504c386e657a3841532b48322f4432672f77427943454e54577171637375762f41456f4262484f75636444354157736b45696e765263785a58554d4833423854674f596c414b6665303035333767326f676e72344c3533416c51397252786933684e5153667274726554584e6d446c4d763253736166653953424a636f5336747a56694b742b365a4753324175536367565665366d6437304974396b36776352457330527a495837686e576b614461416b4850615a2f48385875656164413434496145765a5347566443443538746b2f5843524d55705a4c2b3677597639592f49544f7539346b6f546d4c3971396b3545374873323863426e7a674a4837427272445269486b366967486c4365735a4f54454e6b4e45795147556b6a5a774f39343772514d33544f2f7742626546735052352f626432664a50556e386458654559327579662f7733794a2f6a4d6b3252716d72362b4334646a646c736f684f4e704d716432376152442f3250595435766b44346a4a5168353274694c78613348635052484444696d2f77417148566448574d7544472b4f555430396347797579703465322f764e53496255364f4d4a5a646f4472506d516c796a5573666844674173387278754b58507a637564654f445430584c336a2b42616b78307347534f76506b70715431546e4a4a516e7a343430756f7a6564534e6453526546393035784d62685371764d5577626464787658342b6a4332616d5244736c6b5458366247315a587a556a79656746586167554f2b715a4b6d3053535a7139727070693539612b336c323547772f6b663549654262655635623450692b6234325a3575334c3876444453795532305a5575632f673238617a47684b75697034706353784279774d4a6b314b456c6672713836306e6c6e627969422b48657379317a783669704a5575495a344f7a3149356e7936463172696f5a5737526f6e6f5059326d4a712b486a7a377a76666d614e667441423974707034534c6578646e783779584d746a54326d726a42545a6456385479646f6a746330486c667a4c35736450356d4c485441657a6577792f30752f77415a756356796b784d54695279642f4a4c2b307a3671666d583462566a2b67666d6e676e674f52672b62612f6b477a6e2b5954377242314f4b7a2f77425a7175686854614661616c306143353530686e6d626d615266576d2f5371546e366165305530625a7658634f616d352f386d622f754634314e71302b662f6937517545616257665839526656496b6a4f2f6932796b666150526f506a6458377078577676365a396a2f41496438524c4951337237646f7a38452f77436d502f30455042502f414a4e722b61562f6e57506b657150714436532b466547305a757933583867384f304e623141386e77506879575068346667326c6c3452554a3766526d6a597a7469546d68632b79634b577a4b6b616e327a533238744a746238776b5868582f414d6d6d2f4b6a797a4b6d317a2f494830536867375a4343626365487a6a616c58485339304161546257344d4b703072544c5731767a7341754c6d4d76383130526e564d2b333069636537734f666639782f3841747662583975503146394e2f545054395a4d6a3165386939512f42482b626c526d65497338496b385a51506b646e6a6e3858534f3535425966766f5a6b36427263553834456b45745637464f4c68366147764776467262647530614b65412b504e322f4a4b546f6f66484574647a6b364251714e5146534c4f4b304a53476750396930314c506c43317447634155624a524c69652f774262586e455937763744714c36572f6a716a52304d63395243587a6341466e4a61576e32637139646f33593772633669465874537232304d377963594c36426d4d534b647147766f35375832353868735435502b416d2f77436f76697357763664785a2f6b6d706968624e64506d6e526f693435667545716e433073364545377956537371517844576732756d4261476d643455692f4f7572464a78666c476f7672582b4350726636532b4f35312f6b2f686a745078505853676c6176694f4f646e6b55696675584131534d7a566837554c4371785234386d706e424b63704d356d452f31447030727131744f496b5566342f77446a74366762434b4f596e697569754a726e327a365452415a615535533479725743527a774d4343573637724f6634437749412f7a764d507263744e7178316e4172627958306d3870386179737739746a5679365952316372464c733775727a4b32584a304f4d59334d58546d726e75537a3576327450516d7057344575374f30577a457850536369696478316c565654717755697476746e4e58746d684263386e744e61787a5a6c6d75576a32304c583858536539362f304164396a69352f57744f3852354d7771354c32644b56653831497058553467517333694a49662f79376a5067584b73754e492f38416b6673724177366250717130447046646a356b4a6f51683870456c4858566c56384e464d31424574597653762f594a4d5977512f5a4f50356669492f32722f6a2b732f336e72774741796a30693537786a6d39684c4f5163326736466a31736443414868786d49723678617a396e43392f47754a332b612b384c6d675a6a3133787265745844676f59426f42726c6e796e7330793066567062306a397679537456386f38373776596e69794435523659417237467a4a4c2f41446d4b5936425a575a41346f417234696f5a663868537a6f6963724c424876794e45666d55355a4c41316530507738487336305364346f65564b6f2b72513662684c2b436c5054593667566c3076614a4d5439632b2b776964372b724e34475a67346e374734786e663138733538706e6e66784943775434516776685575712f7742612b564f7157584f63453641393455475a2b3376394232732f7356656b4762352f2b584f763669317a30614558706834786f366b4b52796c6f38584c79445a6f697a63643139614e4467786a2b79642f7043567855702b79514373556b633348375a6159303976695054462b5866706a3431354d37783350587a746d2f636937784437595775314b726366526d2b766c785a4d4e63704b717859436e6a5a5358667642374150767957476b4571382f54744d544d51504f4c2f4148644e3248303777505448304c6b7a587a612b706266355473673669485456466e34795a664838334d725a32707a7033474d354759316f2b78556d4f617a6a75395a39494f3732574e3032763344687278614458776a2f41474e4b5735596e3967354459686f61417a416c7569787931726376326b5a2f49677962774c4437305647702f4f345a47424a45507646485255687256365950696e5a5045644a4d37546633356d65373566637958336d5351452f7541584f566d6f545544506e4b5a6b51646f705678703641706c34514c6967364e614936666a496178567755723739646e47454c707758596a356c434c41414b384c5235433150466654697279445837563350727a73715341366d735a47764b554d45674f575a446f3133474644464a6c4a70636359702b4c3938506c616663593537755862674774342f465a6b5a4d4f6667437a546943416c544b506b2b4344714958555a6a7a627859462f504d496e4949695148772b2b593242386965422f56666d4a3534645a35434d2b4b584a625744702f7a6c4c5a62506c6e69737a4e45585144314359705945352b583267553936376c616765356839714930396d36304a4235685a572f32643050436f643753596d6b45564f38657257552b72526e5368757168665437752f6155476856337247384f5a4c4c4f6675616234592f7078487a794e64397278794b313268712b4c4e6f6c6b35584731304c695171504c684159324b646e32506172356f30664d584b6d4f354d4a7473446e666950764f4870573059327a30465a7a72544f34542b644b364f736c564e31615766384b2b763853446d4b3076334f7a6a4251583735386e796a4d43792f5a2f4b6f3951666d64334977504b654e6c466632343879434e37567a6e30394f33547a3952544a56653732304f376e7731664b513934744b334b55596d37324d4c504f5a7078342b76374372754f4839392f2b4b73505949394a624f38377a3346376a414f653739455053357a6e2f4144333939396e764c76372f41487a2b7442644870785a5133786e7a544e544a39746b6330327a336e797446536c43524a705a4d74624f414e7872474661584d413241546a486e66597876757a76475a7234794673447a487a44492b624738653051526e366c637733525a7830546f715850565657734b484758546c2f77426c64686349536a4e58732f306c4e3752345554464c635a6e71486e2f692f6c6671506f55575a796931464d304c6a68516d3066734c53366f6a4930536c55505955677358635142423731684d336e7767706673424578575a78786b496f394d2f4e357077752f684b6273644e64424f356d6b5667733544454e4263637043782b6a527a4c63766f4c6238512f72744b695550754a4c5a393535434c323532686e31307736365a4a37554a6f6179536b474d4f69767648462f49324c4d657047662f41422b596a503558437a2f536e332f3756684f36736449476166694250476361305a356c794b64775a6b456d4f6a762b5461487a53546e39775349756d532b4541676366364f774f2b35664c68467a545432425279704e4b4a4f444b6362794a585754577335326e3374754a56445072706f5a316e56416254734a626c4142423847663750316b546a77504c54722b6165495a43324b6f6e733873784d2b69326e764f32542f596f584964366e7a735a78784c535444366851302f4548763841326c506542332b6f6d63527154363777663955764a562b522b652b62655243795771454c64425a4e6c67716f6e59724f6f536c466e4c477164784c325a7338704b4e2f4f475a7552386e432b4e526631465934556a31363443702f72646d6f57596d61457a4e57326e73382b6654557251565549396e6f4e764447716345304d347159574f6362684835423654457350594570486f6971526e5671353868766d6374632f5964617349536850726c562f546c65747a41366b694254765970766166382b674a553066316e2b663766594a6345524a73385457742b6c7978354b7a355a53756d4249324e616e7454317a394c4e415a59754c596f41363154766941505a77512f724d4c64305a58496e3561795365704e46524b47506f56476677704637545a4f6c69756a63735a2f774268776e7057626a703578774d2f3543327933675077756e553139436c4a5a5148313369394372636b334568624a695a7a6e2f4a6b35746479316e7a676739704a2f7a70365a4f576e594e766f66594368737a62355a4d356469483641556c58496868782f706a76303052596c4c4a61466a38587434317a6e46502f6737762b65667650496456663757444a6450794c7a33435762382f61646f2b50334c7650796d6a783863374d73727177374e57417634736e32626e4761576b4a642b54702b2f4e36494b3977476f7562326a68464a6a715058683656714663304f645068365a3757726b51484d784f736d49552b547a3275796d52732b4e765730386b5937506549366a7675744132486e3170367237442f5076316a354468582f66613270735849394a504732374e4772706f33716e366e614a3761732f506e6e7769526a614f556245684a4b75334c7159347857595036547564763841665838686a316579524d7a6149486e4c3775514574695a756d76377038362f6c48654e46483252454155492b7743644b4832425a337676366f512f59714d782f396e57474b49382f745a61464249642b6b736f36564475415a73553333644579515238562f726c4a7241397a5144326635435a392f52546d63597a774748586f79336d7a6a466e304b4f6d5047664b34505a313354464c76695a377055396d2b466e362f58796d7448506a4c7653502b6f362b596a6d7179656a5575705970584568767554505045354a6862537450366343655547587730662f53772b38512b4e3354416d4238593965463437452f502b7745644278725650554b62587470377871324c2b3555437a6f68475661554a57485a347858514a64392f36377a366156477050365570756f5a4e666f477471314f3533346665714b6c516d4879715a51747a4f71486a766a57484f3255664350584d495436594b56772f62385966576f2b546a31497546383539734d2b706b63484359384c736d644a6d41697232394766505a332f4d6564436e6e556966786577675158386e7a554b716d4658444a684953766a65777a307a4c6f6d624a325a6a766a48335145504f4d426f455077675358463069345666682b674c3957334f7252466176576d5a39762f414c6a7a534d31764a6156546977424261666c595a434d5a39345975366b5864364169594637713976797750694150516f376242524a4e3173624671525052504c394e337a702b486b7875493170516c4c6c6b496751483059783638554733355036524f336c74304278772f473139623179686c67753578464f6c796e365a552f4e6c614879717a4b3038756c2b35557451694c515a37556a37444439454a3568652f51354e4458516f4f2b34757035573574457a777a39475943557452527873373768614d346673586c3850446d4e7647704666506b74574f62486749706e7a52644a6c53732f516e52334e56333552595a6334346e4c4e625159615764466e5744434b2b39594874636b412f782b62337076615a374d645a485a482b31487961626e6e486b306d6d3947686d6232596e2f7258575a33594e464f66734642626535456b3637496150686f51364e3976512b7038724b552b3133584b35666166686a7734447070353136693446374c582b31486a376445727239664a425663734e61543170557671736e305a6275654e6b47653637694445597a514f33545373505a4e4e384f466132696641655a6e313832382f553964505074544b346a526a6f334e69655665585239664d47494d316136776830466b424d65583179367272512f5a6350384134536d6a672f727570484a5750475256532b495055657430765563663873335745453344366443526c7a4f4e36324d327259593055635a317738393570476b69503247484c66752f5869467578752f5a4f7a65364e6b366e315744386e4e4e795651383071522b62327163306c2b38705538595a415054424c544c322b384363393535445069706c4c7343732f72584a374578696c45723458527262476e716d6e7a3339655056745833674a56386f48396c376c70454334542b44362b7041666a586d766f535647645441477830357534306a5770583264426f7130534254756f2b75587767727047594f4d50382f6a4a3364426648343233486a2b76487062716649307447507a4c50564f7463485655614461456b4b714348534c33564c5577566b734f7136346a2b42707a4748654a44472f4e53385433442b684e2b5065355452346b6a4d4436796a6a6b68326f54797073753369344e6c2f444b4c76524869426c5055586f52322b314267342f59427a78444a51796e7837787a664d56462b5331642b58683643667666464d364f4f686b73574a70775a2b7653545846546d54727a3466705647796572345a312f774168786e74734e6377505a51564d6b30362f4965476e3870337a33657676715a535370585364334b484c6169437164454f5966334646566e72644b56695958334d58544f6d6e2f424a74343264727530425348716165375a58317847766c46694768633057674d343355687952626c676e346d554a616d754e6f6648316b34794a486f384546476444757055484f436f4579476e774b6d6f6c356d774c4237623565536a55534b553958544f356b33587a4d7635787952516b6c6445752b315954664d422f6f7a6136652f6d79466d6e72517954687750636f706c437864366a344467304c48636c5359645431396d65667446794349766b353750637271654d2f307a797a2b57667342466a43736f41754c566b5172576c4a7351674f5a684b56574b565468376f55306c37797a7837336e662b5741667a4d4a594a4c335737486e6b467554554c55795455536b58445542517439742f77424c7661564d6a534d334d7a3967496b6c61415353326e2f6e543765632b48765456547635636a486c504a653075614b58515170707a56397262536f366f34554d476355754766674c4633794c396768314a6e39616c6f7458776a5038417141775a474932765966516f4673386c4764384647676674572f716146386573766131646e457975555369344b546f7344702f344a486a4e4e334c35394135694156675a747261753376484f565078692f6c4a4d4b5a5571617878693372714f324d58785938426a574c2f79536643506e5430434d76324c5765336e775a4a7a746e4a6e316e396358476371734d686e74304e41676c5353574566744b675143694432687a6a542b48674c673841446b36624f30724a467754786457756a73316c30446e4a5a3056704d5670346c6e764a50464438587a733578595053355865634348676b334f506c5356635a336f7a4e66796a71435169613550554e2b525a4b5352542f49666541522f43656c372f4148677858466e3042474a33747164336a66654b4f4a65313054517046444b4264473030304d636f4257526c4f5855695941667345574f446966663274757a4964642b784d6a6a6c7142524479687245444a38366d764a51717a77574e67734a6e75584f6d6a2f6a722f335037756d59447a6f7373456672315453697755416c716d644256534b666c564f614163516f6f655441344a4549753661336a3755704151583852306638562b5036667145666b7a5565353836474c2b6d64613154466f4a37514973636c4d71364a694179576e7250324a384276764554595850623869766b632f6c39786b6241462f4b4a2f66476c53322f44514d364d33376f48376d6f446a6546314875347651344c4151677565382f77426645615342595743396c64487649316b71314d6a416d6759636176634d493964576e706f4d54437276794d46706a2f6b5a6666503468494767514152726963496f612f3841523055496f307573364d75544630466f6c73556e724f6c31424f375136567a422f594c4469552f76336c4f51446e5733644d6870515956746253546c4631494376396d7565785a3842446c54446e3856386176707137516c5a7244326648314a6d5a664e33394f646a7a795055352f616538517a50437678636c62715a57724a6f6565624f6e35657652687a62786255374e6c536a78355671736e4e5861556b365a6271706a426450424a4a2f487a6768544c7a6831357a71596a70556443504a3332547179654b7237327a5238684463584e705a336b4e757852346f335354587946565358632f684f7958513142464879677246504d33644d374b51392b4930642f4a543078394950794e794c73723153384b6c4c546447505046765545646a51794c5047346b68594c426259566c50644c4c6979666d6e4c6a307055344570744658644a6e4f4b3030375772624e5a7849347965754839732f3141384b70303962302b383477664e2f454961712b72487964466e69336b7363306d676c49547358754638564c45725a4f6c684b61427552417673592f7567356c394e4e657378787274734f65506c586a4f703456755765463659786c646847635668456f715933304655644a72595645616d73583052573161584b467a5076682f694243422f3130524e5a6a666a6a416a496a5a386c765549454f4d2b62674430307437414263715a6344776b2f3841615170645573434867663841302b5a2b344435522f5538766c39684c7645504c74503039386d583554346f656372627a6c3052786f30356a7051615754547848796a4c4e5379534c6866384173576649424b634454536f4567766f306d4d3169747576723644635830682f4d512f442f41422f46384a38747a33647734332b597332714d4c6a644f6a546c38786f47766256767971506c46677a7878354b70456c567a6b31795a36476e38544738436c74475a6e674e32665462386e50522f7944443857384f77746650356267323374697138366a597679434844394f692b783663535a76327148532b524f6d6c75326b7268744c33706f4e7a6b4333345a4472787457306362426638522f58507933385676796a305057782b4d332f77435a3331726c5a6a2b73666a3061304f772f48614e753751484e75623348596f4d2b576d696978306e63386b2f5a6d324b657a4a506b314b76366a55724770707a587261765a487254394e5056667873734c4a38747866492b4c545a4b567a6f544f646d5a7649334b49583664394c72644c563664444d657a46736e5637353435756259443065665a6e5452353971347a456a637a303138386c386f7a70444e5234724536625875755164414e3079566d6c556a527430467357684d2f4d32784a4c42667447454455796c6b6c435644334f596973544d5269594f6934726134746d55535863577a456f4d756152656e6657357050366c6c454276524a4b3336653937616f4a6c715a777765535162396b506a346e2b73683462662f6c48487064366d51666c6c34723547764138697138447a5054397363336c557352315238753262686565586f575a38365a553045746f6970514438626b55546c3046666535476a312f5937566a5474456476642b6f38356c4a554d656f666358573854625455635857642f5955716e57794e5a6663364c616c2f585830515972324f624d4968775249506636494850416b306579696476424f6c423171553977384a5a6958575a7452417876754c3466726b502b30654343572f2f53394248775155737055785652464a326964545142546a536d6469707a5a5055394c467a437a3369503137444c6865326a67483335692f7a2b4d732f642b592b307558774f445461396f445a323769484e6f59775933653969366143714a597349574f3531583734776d2f574870394a5873357931657a4158706b2b4d4b5462336c6a7157686354323050363773304642573167506577722b725958362f612b74654643556736662f46786e4f4666656551567a724643716673376734714d312b7867455a5378365a646d744d5933336949442b2f72306672334751644d505a314e416533377131652b494445346275466e657961356e667253765170556a65793178742b4e366e4734785879704a2b3550656c785073442f6a356a4576333772636e6c396757346f59586934572f41373634714262337036533446744b5250565444374679754969534c42375172682f44514943734f47415a386254356a756e2f386e3539487678633962667a4f386c38432f4b5830746b395738582f356f76492b2b4a654b36374b6a6c377052747a7831644b70416a3337517a35624e42306230754b76347a4f6c4d3746673558396333746c74536d6e4d3664747337686f782f63682f4571623856507a6539612f52663039473676302b78504b30366e7076534c61447348786279487558715a73634f68726c77374a347875485059356a58652b69592f62525877416333625231506561566254786e346871656e77544b6a3475742b786a397337486d6c496b594b765a714365525072465a484a513550577037505a422b70316b4c6e2b382f6746676c3851583332385138394c5042664a664e50556e433852385270746931394c794742676175664d523638534858434d4f6e6d3865344f3632775469456b6c49336e54622f414b68457032653543307846496d656f39793334382f6b48702b68766748694870743639582b542b5a654e70546978352f7150754d3750586a39774a614648546669736e576e59636d7a4e314873704e6331626f307441476844536a362f6c5870767465314f4835523053482f7743733739536b7865515a326a34726276515a6b46327a74654d3056542f4e49726b2f6a4663557934385678394753394f502b342f726647466a686f4f633267316663503274654872394179382f39542f517630347a5a416d726d6f646365336d354757303837544c5854416e556e66526d737a584a6b30484a504d594972496756337675645178547671643565746257377549355665574e387a2f494855386f723837366564345753345a35454f7a39537a4c7a344d7247634d49655355355735525474574b7955363375614c5173514f716d6b51396c636a656252696e5a366a78626558593776547a79377a4c784e2f65754b487943724b66634b367531547850722f6a426f376d38397a5757567836416b50584c422f4f786d7276425966444830347475696b2b7534512b6678695851306c35464f6a6e7931715a32573939446e6d454e4e466f356150384176783574667a55632b4f4d756c7a70474241316e5763482f41414f4e30353364342f4c384438776c6875596a736c4f614131797355644b564b7035787441794a574b6d6358553775696b6c6b6b316751485973663877494444546658774859542b796e365a773650723135703669364b6d70643468346a666b3557646f6c3154624e486367717a4a72656c6648776d65794e6a702b6f355249346873424a304a2b776650363550613766733467656c547a6279627947504d7679504736637a5530565a52536731636d744f636d716552394e4e396679584f636b58564a5438316c4854527932622b505477494c374f76346f72474e30395a454b3856394e4e505576743874387230764a4f6f4c52737a6b65505a654748464b6f65374a3074484c716f6d7a632f355033504f737861584f4f476a4e2b78565779596f544f6257787736794e6650376c7638416242792f797a2f4737763558666950353135483558353536437a376d5836682b692f6b6d58492f533249637a6b756e35477a4456343952557a6e6b6b482f56565448302b443962533472356875542f4775766f612f75372b37314b386c756c6834374d38682f5a68516d64744579354f716a634c4a5677707a6b75564d44686a7135794659706e76344c6d652b7a39682f7042507964642f58654971532b5576593446797970556f33466e704633794f526f4c392f482f4332506f4f346178452f77426c336743304648536c662f436b36646a7a7a2b67596359316e4b58766f2b6d395853702b78786e65384d757a4a6a4a4954324f575254383971775a37466e31592b3558756342416b74417532746e4879576f377a725a757a4e4e73725779392b535958544b6130794e4a6958574551396233765646372f6a443637692b4d673250394a667930396266522b764d5a682b706e6c382b65742f36454a2f494e6466466b357565727676577534467373586e6b7862564c4d5441544e7153426864647a43326e573377667a4854715838317679723956504666474d642f6e48473475796e4e784c365152527a557949452b52784c43377875764e6f6d4c4a6a36577064502f304351615a71585447414130347a352f6436564a6a6c484d7631367957592b356d576262645057303764527638414b3675316174787347685a6142426f326737706146335076324e357868547455772f71484d4855724e505254386f6f52515766435a6d742f66334973564e4f6c63396441456350573533666e396f2f36766b6e4f677a572f324e416755487748786a7477656d6175444f71754c7545794e4d32684e705a3531304d70614c654c2b4578726f6f355154766173616a4f5533415a4a346c62523634456a6a327265475230512f476e31723952507839387339432f797138667776477437796a3071386c6e566a772b6452304d77504934387870513532526652794d364e4c39554f31686e5a3968564d4c73756a6b774f534d767378314b78654c6155396d7737385a503841387156782f4a742b482f35777651326a4867477a4f686f7a6333786a783361586e54454e5565344c36676c6950514549374e51786b54474879684d61356e70616e7248636b2b7754455a7262674e6f50412f38413552562b49586d374d2b485744783778395036584e354547393459795a62386c4b6d5772362f536d792b437257717146614a482f41434d6b536e2f737539376d444d464a396931593749762f414250376e7634506573577650347a2f41504d582b4f587158737668547055326551355870324e4577785543666a757a2f466d69396a4d3246796c44537779366f657a48795a712b65785a556e326656726959764e52315439416656624b387578687339492f544c773330377a4e454a503258695868754e4171786678304c786b6c4e426e79486450496c4b2f774254735a4f43652b2f2f4149624f354a4d77765848617475794e6e652b706266476e7a4276614749456c39576851534b714670706e466b4d343150644d374c3973386f3643303256564c542b754e4e6970352b2f574d54704554504341316c39594e6f716e47624a4d71506c562f2f50487a796c645a44554f5962526f73594b4346744663765530664a5777674234675074476e363042332f3536552f4b744b67357535633945724b6e736331563875617142326c32646d636f2b466d796850517564362f5a2b31644271614145306f2f5952727a7a2f7743627a315378646a784c31437876472f5572777a616d5a6c3365472b57594d32766e4c4677445a4d4e3031635a78365633795278724c6c557a476d37324558362f5168644d546173356a684938375035632f32472f775839617174586639474a74763859664b366a6632482f77765258354c36613361662f5545346176432f4972434c50723752554a66486e36304538346735517a6d434263665a706531616c63786239704934616148396c76383976786b395866422f5572306e693849395a7348784c7a4f446477764c66442f41444c4577586e334373586f2f4671654f2b5636456c4d74685a79666d624b6a746e516e647a702f38487a39394d65303656363272626c6b6539663039387a713150467645764a7432682b42733748696d446274534c637576526c386d7a387147625479617234614453754875745656496e6745347a6334552f72336a394e506c586a6a4d514c6738587a3030516251735365615a5045464c58714d2b577273414c31564e45456779646a71486663656f33643472355134786e41476c50787744474c32326a48582f48523266715a3968554b726d43542f41432b556b784b6538352b733076656b525830326a4f3367664173774c68726e7143575638314c666e57785942796d67675a336b39314d57644e4f637359684c4f395944794e71654637474962776e6a642f704542455a697279655832486c4d2f76772f6a5035503634657276705035523435715a714d4c77443063383372315a764976495169362b664b6f79396d794443617861563644416c5a643143414c6e547037314b30726a5877573933736c347257315a2b4b33366a7a5277376e6d63766a6d70346c523548617a4954626464705a644e3774444572544b6b546e585a6d52734a656949736a6c2b4a2f4a69704e637856474d5a6d634e335a6a686b536e784f3454705970377172545871485368765a4b4e714851476c5935675a38764a366c314c583355544278666630722f7370594c663061776d414e6a50482f414643316f63657a7778677831655049326e4e715136544d4e4f646647335051676331684a4e71325075736f36796a6e752b79547673644e3375644f465a697661442f4538676d67574858366c6c374a702f6a582f6a6378733161616372716d446e6a38346a4f4d2b664b3733634a544666787257416a32417044724351374f356b36346c396e49683153374c7746496a6e6e7a4f7351704f65723644557531484b4c504172466b7069757561667771664e2f735771674b56724d5a7a4974664432727646722f4874534c56386d6c445166796a7566483544753966564d72516c566a3275522f4b4a46626b314d3175635369554f2f5054377151622b69596c614e30784564774b4c382f3833317334356454796a796e657a5555782f4a6b2b595875323052475161444e533945572f6d6e4e5059704e44466d336e426f3939394247304f6d5274724e6131367a6b58373664655765567038623865384c3436727944303138667455765a3853547161634f51765844726d4835442f4142382b68377338517147553241524a5359307439306372486532656b7847637a326830326e3952644431487a387a796a4f7131714f61664d6a4731397a5268433379447669486a736f73702b357164584f735a494b474d4571566c4f66766a443342787370334d35356a6277384262772b6f474c354269512b442b58656f65686e5957487253325a486a3241706836503332467149304f4738726937705571756e53734346696572717836436d4252755579694d5448474b5a676245626e68336c4f7467656c7938627954546d6a394f42686c394c677a33614d47356c334c7839654b697a656e564b6c7336575472304f424b46504f30436e68326339695847564e305a746e347530494a356e732b5565552b665865532b5854772f77446c486b475234764c494c365074747554506e2f4b456972427a352b356374474b4e3341373372654a6470473046534e486748654969735967576c344878567667336b4869614d78464f5435663552427478566146656e58506a3171594d7234554c685a4556587872484c59386c2f5744675766424b6467676d61716c7378614c4334764b2f47773861384a386438577a4e377a62785a522b56512b51614f6e3455554e32674e694d36786f654f365339314a31366b466c42664339615458577a32652f355a6e664a537173547a524e68462f423865627770666b6e6d4756337972797a794879422b506a596c666e492f52367046634f4f75776e3647656c664d50465a3946797532544e424b46786b484a506d416b484d383344734361335a4b504976443833425a67522b464e796d536479446b74445467727a4e585271626176746e4e52504b506a3970467a72586351526d48756451464c4c2f36726e45353757424e642f77416366356472504c58396a2f45692f7744455859312b54434a37574235486b527254526f51645354457a70746c755768697939695164554c444a33745341526e45384f6f77792b3632673779484f747a6c79353875706d44344a342b7546436149594a676e6c6e7557316e753552593737483348724a587738443278732b452b54456c4f4f376f4a66644a562f4b4d435141315731597571697863756941554f632b4269626b78302b34754574736f75486c504f4d4d32787a6d344f684f6e715131663149517039457655534478487866314e394a4e5366626873444e3870322b62444e5a746c7966666a2b4761317275747a78372f414c786b6e636e356f4857494473507a4d6d34712f774156633269776d33715674376c4f74344a703179316659327645315a73463262397465412f792f50666d73564c6c796b6b6d5236526c50747a704e7975645a39426b396a7a6372326d704554756a7842365452386a4838696656584765766d5834773330716e70676157664a78664e6636576833556e3552426f443866746c7a317241436d53427a5154555233415a30714b6b346d6b542b594d2f547a7937533867394c7647644859757a5736482f6b32396d38306266697a4756537857564b666e556c6e3656415a4f67457279437a71684d536134507554703454776d6d59784d78486343396e6d616f76486650646f354a4e4c546e526b387a4a4e44525446504a774457684d6264504d5a786c526359576a535a4f2b452b6a41507774366b4141555278694a3778486f664d74546238503837307362462f682f4c2f41426a4d667264546d576e2f41416c65484362756776466f742b77576153355a644c6844504e534a4c506c436b7330514d503662636263396d51334c7a4745644c30436b676c35423331656b5a5235446d555553352b784a6d6a394f322b4e4d7174416d4c57454d374f4d34494172347a4e745047694e414e6e4843336a41636559312b623550725236656545353975683377587932713537664f5a476f745a4b475234332f73784e337437484244316a715067496863707a676a6148375368514d4b49784e625448576f6f7a77727a37314939522f4b5055654c413867386438643845394e504f74444e33764a745a505a3449617646395163716349766a54384e6c5152354e7a4b313844374578523068336943616d6b4c57697461317a3272423954354a3449796576667750572f777679464a4d646f364d2b584c4e3931786656532f52587a4664702f505a6d726f316449564a524b6d6b463371417861534666576e6a306d674744355244394f335230614d314e4d366878385044447649506a436d4a504e4d395049734648746f6e6f5454774b6b386f6d36667a414b676439594162622f41497676496f547961726b652f4c7a4b30635a455161586b4f39316566476438697a737873385754456d416d44424c31785757566f476a534976346450444f64526453725161752b62655576333257614c65546173756a716c6d5956416e5859746377665872685067555544516b6671375446744476416e3930796147536f2b77314b70694a6d63514b706d70327550666a466f672b46726c684831454f5a4f694a7158617a62437267465065726f58524e643234464d702b514d33353536494357744a7a79656632426e79434c787a4738672f6e33314f433751464d6638414d356d6939532b33547a62476e6f526136746a3754355a31565a39536a49484a2b45484e47746f556579644b4e3078746a6f49685235396f472b6158782b5a65566b545535757039626d646e6178385231373978656e5673664477797a5679334750762b576c524e4d2f75442b36416e6b74464f7536514238386d677a50587a30666466657638416962624d767875745a545a6553476735314365316471306432473143796b71793436477442344532693978754e77506259534f4e4c5a346a3077654d597562323665686b456b7139624e6d4f754f614372506f4945454a3774464b3562714f546e2f33422f7741474d45766d6d2f66482f77436b5648786979704d44426e53675a3533715530356243367432667a4f6879347672305a6c625067716e496c67524f7057317a7842487a4878767a456c4b2f774367515234756f4a35435451704f62484b39664d784e4d6d646e32722f6a6d4f4a6637584b526976725065624f4438767464376d6e2b6c4d4d77434e5765465661724a325265517a48396952624a496d356e7763356f4479656e6d6b32544f576c5476634d3850772f62414461695935425758484f2f6f494b3377587a4e4473574c2b4777723172564a2f4f4d7a396d73375a63326275676372617455574a62566c384c51712b50744476387a53526731776753556742305048764b4776516d7a464949364c4a7246315047685645537a7130727067305467583150384146723074436759566b4c70326734476e50396358392f6f453052574f6c3469335030336657497a4f554a4e654e3973705a744669382b386b2f58375073496e4f503966756b6b7a6d6166663334425036774c544f576d4952436554553165543870716a6f686b725a73454f6a6a67764e52544a4758484a534e79303857777a63703331766d4d5a514476416b385a39656965576a4d393931544b616c466d527a4c4532304d757a4b2b30646f58326366334863373658474655527a7768326c7261477a79674178766a6d3572734c3464477070342b6f446e565636576638534c5a7339693742625371676165722b4851463768493666686447412f39503552534148636248557157585930644a726f596e7231615a357177796d7675644b6b70364668306c4379784653366734507a702b782f38576b6543415447442b577968326a78432b6c613058564c6b56574e733963524a746e36745031775a77716b306a51664f45587544355574456a4154494841437a7a6f736f4c677461312b584c52573554353146316a32357a47463858364872696d63776e4f5032786c3872356a55516365434769456d6271365a5062426f646d555330586a6f3970687568673934457946794864365163564331615a364f7548326e385a707039766145382f63596a4f5937776d4c617a2b6933397378333054434663576f4d306135325a334b4b48634c737a416137506c493675675379436c4952306448397263507753447432774e6961703456303039554570566663726e4750694a334d3748326b485035504b6c71562f2b78594533395567354b5a794d334c425371324f564c465a39636d612b716937506e627071414d35466a36394c6b4c45664b58666d6d374f7579666e4a6d462f712b6449634e7732462f51524e6a35322f486e5065342b424c795070314e55706c545a3175556573706464584f66494f6c524f7632454b515a6566325645674a69375144536264746b47693350643953786a516c546f30377753465a476c3179362b63612f4c4945463879495137497741664f4d69782b434d50326767447a6678445a5a394f3942684564555832772b55655a79324f30696a525a6973354837394366374c5a3347486569496457413852774b514a626a30434833454752775a55544b4b615a697444563148706e597a57507339373765312f6565797a46596c6c424759416b4f4d54333561584f706259734776426a30374558334f43695a656232466a492b353646646d6f716f42346d65665a786c326b7557564d6e774957367849657a3435514933544f41694e6e64336e4c446970756a76746f2b717168365655304a2b6a6e364c31552f6675532f2b50344f6237582b2b59762b70537632494d546438594d33526e7869717134366737634e6437516651446256312b2b696e4d366c314e50474c73466b74676e4d61597836414f4975755a38547077476d74314d5041757a7148356e65306659756576744861546b7447305670686e64787562596d35327737694f6b684d6766356b7377533773774d41443231336f30655345715a57723169756a5233554a614673667541756770564a6e393278734a365239354e374835767a4a54374f5447596674466d7462546f32736e2b6e4479582b4d612f6755494732676270614a4e47536e4e536c7156753066633770386451344b485141676a6a637a32415576585849484b434d6e4c4c4f5a517237487777756d584a6e537a4e5135764c757268456c70694d697a2b6d3161732f2f726b4b7a2b4d77675248376d61574977527a5a78334778366559384a4a63355331756b392f4730684f59702b5778784d375a38674566494146497871456b6e5048746559697578715a30374b53722f414a376936326474586e6f774a3374356c386f6c44526f71564c7653646e2b7a71667876516478787545552f396e346f2f6a614f342f4a6f3866374846486f55353743396f777631486d554371666f7a4f446e55682f342b58427a66616e786d68395041515561542b77646a59516237736562746576414f6a34414b546e61734530524d72656976714a394e7330655637476659726266516b5076654f7371636c494e424973627978333656307a634b6167316e76304d34374f4a707035554645394d567a64427155702b75796f7444456348632f6e4630467255566665556c6f7a424e38447539616c44414148754764457a35706e316979725170644e6e39536e4e4b75654f467158564743705032624766636c6b4f704467517076577656527a6749464a32763270457579557a4c516d746c5a70496c614f676378677162764b77346e374a4850734a50745757626d61437836446862522f477a4e344443534c7636714948717957342f6b4774376447724e3159352b326651696c6e597447526b626673736d56416d676d464d624e4b6967587346356f6e7063667a4f4e505158623450722b67344d66334a594a6444386a7379723676624f2b4e2b4573564c574a746f7073585655783937353453314447364e5768514e613131563963484b526f41302f2f4141753957682f6c7a36373447676e4d2f514b786c6663374b6747716c57696b306a6e6154364b61626c68436b4e47336534525a72796b51776c4d6942594e315a327a304a4e6f473751523272587038672f69333335396f396f524f5078356b6e4a5a644475696d682f4d7450474549304330626c676c664a7a624d446a68494f664b6c3664613178786b4f4d37444b7257716f306771564e6f4b7a6373596f6165796942367a4b6d754b6d644377574f575768505151304e51496d6b7a6363334575465178753566506f4a373478346769384d5644696663754a717930766a6b6b52566d322f552b723178446e334e64564f6f5a307446424b644e2b773467522b63696e2f716b7a4d7a6d52304c3831383939422b666a56345a344a346c3656782b5065716552725a325a742b65617a5573545372377a582b53393058302f585a566972644c4758567237375066455a72354e784c67484b4b3333356d334b4e556b31364768646d4d6a65786d6b784c63366246524c78584d37534a74434633544f4a4d7930704855546c6e3367676a2f697751464a304b2b7957673663542f6e6e355a364a2f697a365a656b6670666830683673654f612b6c706137363555612f6954634c764b4e436944577247686f4f7a6573706f6431733573543157557058413538764a57346534692b7061312b7949516635556542655265752f7074362b2b6d336f592f774143395466486436487671476e766b632b523442354e54586e4d6a76384167686f5973303633334e4c2b515734356c696f73706873706364626843593035696c71577475723365497454612f4b377750583039727958502f466a30317a664c664b7468336b476835567544744c46336b653331314d586b466372357837434e5a5648386872364879713936702b6c4d316d68485833633478377a73697466555031773833396576556643386938763261736c6d74446e2b506f6738633772397a5045737a786d384e4a513571357936697967324c59776e546d484b46514f75542f6d4b4243666478534d514c5156366e375871526859324c366f3674506c6d4a345a354a6b71384d6171476c314d727456334336723755342f756a5758644373314e665736662f774344787a48475330716a62695a6d764a7547366d64356d337a436969744f676e63324a5863346a52707a6958577a6b35737a704d6d4b6d306664666d6b74677437336a477541394b772b384251682f576533627a5a7a674e64485468784679637a66737630394c5556465a6c304b485147696971746659364b30696c4b426a704771476b556641596d4a716f6d637232554f36727a5a33636343347645505666786664324d2f4f3273715676564d6b646d5574434f375130467657575a4d395a545275596d6971474e507a74416b6a2b33456b2b66716a76324b7a53593834466d36324834726e697553374c687a3139616a71366c715a2f4a39793964396c39456b38554a63434644744a3265762f5452374f304173774e76376d49616968312b4f395a7036462b54676251755a535473774d6a4f443658385659566e763069523866554f3168477859454541696f65476256786731536b7276756e6a573354376a61583032793272675a7149797a695a377037352b6a6e703556372f38564e674a446243476636695a5a32636e634b7672755076654a6d497030686e4d5a6959385249395372346e53487a6874557a344f635232306a6c636f623257413171705a7747714a34366e7a434c4f4c642f6733326c38626661456950526f31694f355254506a7837495a4e437a53706356335a316e39696a6b727157752f646e77726e64304456386e766237314837307156513047547a7a734f55695657382f4975667873517271543374455146786a78722b75724e344e79305a726d434879675a384d2f69575943394b57424e73545132766148473152644c555367797a2b71637a50573458314779655671456939303454334f6f4a77636b417876486f4f3667315468453437784c4658364533777a78394772722f414761644e533144326541355a6d5a723672485579676861584d534a7355766f6b43347a5371634f7035375935504c37434f5033655a367568317a6c56546f61627a6670645258446f6351736d5764796c4f657866776b4c45702b4a424b7339674e4d434434666d6d5969656f672b7036692b4a77706258722b54356d55714a7447625162394e415344517a57306c56484d65315143645a33564a6e4762692b2f4e32674f7a66747441483855346e704171443142395a5053537939384762357434777a52595550384f754866445942342b776e6e4f34637a5134317846444e375647785642736271696e394e534a38624d5674506d4b325a352f7634517669385a647a5931394b6f5849347879633456504a65774d43526d6d6f625137506d46307066737568502f77436d6a57716676422b43613055695935753861356148723535686844587932624a556946747255776d503831705261434e4436344a596b45385a2f457358597336577257786a52766d6e51357367752b472b7976674970354236322b5a3058633773486c637a4f553073315544706c74547a49303731776d4a47316e4f7a375046304c6a2f646c4444623356475a7a666f2f56705a4d56694f6b434733657664304d446649455634303466457550554c4c3042714a4b37357673315935684637675a2f706e7a532b4a537759326d6c3378792f574d3368495a702f4a5842746250717132465562614e76536d2f6a714731726445684d7134474a7336624a7a47464f4b4c6d304c2f64582b546b2f4577364b507367327a57496952532f6d3371476e645536585036797169775249777a6e4451787338564873304f31767a375032566a724a39704b6d304c354c535a744c687a35307a476946596274476f47524946646d57746370477a583074624b5242545138565764325a6b7157493032546c32364d79714a3148797553445453357256575758727433546a36436e4e4c4f724837385679333636494c4f5a64322f34394a384c704d317973337134645076646272432b773264675472722b4a307857457337306a443052314538355842725634646e6a2b66586b616b383869586174324a6b7a7035565371354f64742f5437376c3366444c5955482f573930362b4a4250736135694831317a74694e30683172655661586a37492f477336324c4c316c5a30376f2f4a783048646c4c48676252546f4c3042747a7a6f5a4950324e5a302f5343694576346f61554934366c592f31577463383069752f4c4e476e5030573565323436733476484972626f732f6277446f666d632b307634357333436c5032704f72376e484b5134424e4c686b3777307057774c7845523067526c586c552b58765542346b64456d4574524454584e656d70642b68412f48707266545a51495455652f504b3452516f58542f365242487654377a6d544554484742324c2f414c616e6b6a504a66546631496f324e526241782f49786f58704f724f694a74307961474c71716543566e56786c69387357797562536f534254685966574141633274474a7267626868566e6372315073497a4c4b2f6c4a4e745a43756c716d64735956575a3947556a5644554630384a7465354b3354797839497a4175416c656650352f63655a7a2f3554546f5a6e50516e305a346d6c57696c487159544c6151644a5a6b36325653476f7843333864504a3336766634314c522b447453666842365a6b68773275447539687a76766e707434447857655355326730693436646f4a7541437a6b75724b686a346549357977754e306a625051704c73386e394869474431494b2b632f5a3370656c5474514e78765376386831656c337142345a3554692b44423542732b502b6a65723441724f6d39336a3073766c6e6b50614a554e582f6a77745370467a46304f6f3531366d6c37654b6f6e452b38444f394e3057696264346d4872522b64337239366e2b6d672b6c6570342f345a6a2b4e54686b4d4e614f4a5936653350372f6f4c72655841764a594d626c67665767766b38324f4d6a466942304b5a464e4b6c62626f74772b6f31424f6a314b62693438336b2b7271622f41496e6b514f7a386e48627153614d754f2f516672645442685358564b434f566a6c36445361674351307242425246786f42792f4c772f45497061564c736d4e44572f4d7650716f792b70344b2b6442457441302f7741666d305a78645a6f5138575571357a3530464542676e326350322b3449734f4e5a66334d587933695a486b326b775255622b5a7448576b457a367664515848532b31797a363066624f6177636370414876377a54336e6b4375646d396c6e3065334d696d484d516c796d467179735a323436776d4a694d35764f394a79467a304a573076644f5054644f42695450684774725a2b514a5a586943396d354832645538764b6f5654712f594e43654b584f484a32614434324971345047424e39564b55632b514f664e774463694d7a496d2b33694c485a34483662342b6a7138577a7950576d7a3145552b67454463724f7030496d50574236645334612f314439663453465971554855754e68676e362f763747363078786e714a6a64715a302b4a5366696b61736d6e52794a33525649524337616f687654436f4565524f367a3951724f664a4a764b6c64544345356a48386b7157464d554455684b4e483472576e31514a554b456f35534a5430392b753455483266764236356c4343304667665062376c48535965786e776d483962636e6c3968396438556e485456304f465451654b414a596456327131692f774351467a2f68396a6e4b594d7161564959436565307a416b7439697573376f6e62497853466a4663557a703961504c76314e3264507a66503841496d495242796f2f314f506148733633765336416b6638416d416b355946594756396e2b486d66326f753676474774484b2b7a726f616453434b594f38374b54425a786e31322b3776744e354f39767845416c37632f6933664436674f5554774a6e2b3255456945667268477456624c356d38377763393964546d55653945704a7459507335375844395944347058584c397567482b384a766f7a726d4a6e66736d7755727337565937522f30384770617a6e3450794850436c5a694379346f464577474754675351497339684e597450772f713271756472513577337065584b754b55796e34783933794c6a452f6e534939346366742f7a4169506f532f47395038415a31782b503763725a767141365a763869484a6a50367248726a6c486a44367768686e6f547a6e2f4147434a4c6c64414250326b6a4b31346d4d52417874394d6650384178353048644b476849614b365456564d6b36546432577069304f345a55443036684559324c36664743704c4f7361596948742f715a745333484766587a46655654756d2b776d32636673494b5a677170475a41635857454a39352f303343786b2f774264496d6e764b434531414239396e58657737384d63426a78696f324a375652394d7a69697134584a6c416643637478643671626f6a782f375754503841506743424a497839787463416d34576a796b545043383438723851614c734c796e537a5337734f316e546f5934455031454a47714f742b622f77417a326535744357455456416a6f41766c49414c5451564970486631426a7a44316939512f556842633873386c304e49615149537a706530647a5673767263546d6c4a4f52385a386c485a477448724f67346b6a376859306745556163524f593644303166326c76464e6d54384e796f33793868544c35423566726557592b646f5a614534396d4133362b54703336414d755833596a636d6f754e373735767252302b3733306a5a4f584f443269663275504565646e386f76424f656e767250367365447a5a6b65577278377a447946365a4666477147584a706f714a615950312b31434b5a32516336386c41342f68547a6745624f4a35326163357253336a2f774e667567464a4b2f53324d35786b332f41472b52326577684a712b5a36366b46376566562f6a655565336741376a50615144312f74547a7534493869686663612b3235306f54396e6169586c6f653648764f6a325a3764483465414a653569522f77434245466c5a2f6b704c50635851616a2f784d324f45476f56316e78744548522f6f3648766d524e3868726341754a59725830586b48522f53654f446e7536316c4763666a743941704d4e6262666a346c2f58673846743041526f43613170623964303653536c4c4b43437067487a7636452b6b48732f524e64784e4f67796d364f67696476734f644b725563736f37623851697979396a57386b75716c627770304f643067357870394c33704e52636f2f5a4d7a37486e6b4f5a48736f6462334d6e754c713475704a54655372703435644b5855535a5655676c3335546d6f6e59732f724f596f35766677423737715166782f543141647a6833356e4c35395269326851704d56447035654855726a695354554b4c6e436c2f2b6d754f39344542665a2f77345a3266462f575932742f456e38752f556e3855665570666d76676b3664535456373966796a4b6f37564e4a7554365769757a37436c722b4f5a4e794d386d4d6e503841522b34414d7a496748347a6a553036616c4d544f42374b50534c3132772f58667750306b3953734f47576d4c7a487776787279476e414c754e6274486f61516968387239765263544e595974723777554678303143782b63674570467134486d573035724e717a77326930764d647550465765625371314d64636c4e487939484d686671587175306d3362432f766243753830514c55466a6753755a4a65395335755356546877713172757a78786763312f4d66556a30626932487978562f7a47746e637665446c554f74716a314c6159364d6d344f597271755562307730593757326456515a306b7375436b49324b2f726f3232384163394d2f575430796d5a34397062336976715435417a4d37732f487452515230324979614c6970662b6747684e6469335a377630763457307a4d716d45674e512f502f55577261656b7857524b632f7a4c7850794c5630734c4d5a354e6c794b3742546e5237575250343549536e75305a453133694e776358522f46564d466a657347686a62476a38494153617769596d497a676256654b37702b4b5552596b6347306c74574e59465631616e4d6c2b30697469366b746d6a6c5330592f71434c6c4548662b5732416167364b69542f57647135356f473476343266334b76774c382b7749505376777a7a3730337638414f764869727a4e624b533038667a396d74487a5172386a596a7866592f6a37746a426c754f5652315354552f46394e4967546c6f6d32354d39545131596e644e626266396f7450796a383076537a5571356779656f5070747150676e764b784d6e6d796174486476705374626f4e724a7a7447656f6441576644324b52426d464c4a766639305a6b6d536f6a5374484e74734c49386339584939504b307931715045366e515a4b457a5354724376566b794c5a58514d78744452636b31464f7a697951746b44317a754b6e6f6971614376706a53616548414f2f54705750715a4736366176736730502f6d4a7265343075564172493145727a4b2f764e5443624e4b686f324c613657675061326c78482f77427752565279623578486750476a2f77444b58644c58386d2f4f6630676a71715a72634c38572f4338614a6e4a39574b6d47726e7170367058644b754371587650355a64424d343971624b5a7842337866666438622f41482b6a3746456535743437763067636266536277507a4c303238313338487a7a786e663862386838636c4452697a394f48726165752b5435755561534748786a42396a46724c3243435538643872686348764d7572556d4c784d7830774f71666a32706c5a3963334a6471503542794a6673614d6465466c5a374b5679616953356f59396372433147425676517a2f414f345a2f7554307444363134796b64504f4e3366525031464c47446b75624d767853424838586f3657734a374264556c756e6b365230524a303530467162436c33456450564f436c7755706372347245676c3256367a4f5a6e6a41325a336655574f2f50387278594270714135546a3047525063636a4d5852712b78784245686150684e46773353746d733670394f586e2b30516a616d6d586c4d642b427252366b2b6f48696e672b4c2f415063334f6a73344c6b712f684d5261653557426f374f66636f3232366a662b6941756c6f3142665336742f4158597332774f6b53446d587247365a7a3344697436362b6f654c763747674d456350656858396e616c71746d71335a4851586c396c484c6a642b324f35514c4673304f456e3352752b77314a6e516c4b65716b54476339343579656f56345637312f4a46554a44716f493531316652416d7963634d4b6866394a764f4b647a76796336776d4362414e79762f6867447564464f6b2f4d525039664f564a4948375076506b7a5774377969326c667a4c364b6e455642476d72726b752f66476645746e7738443558667667647477724155347466784a376138424754702b77322f636d61713735552b2b416952436a7373667569712f667336667768377a4471756339334a42486d61506162444d6a2f4145563745755378432b3861553345734e426763765677395974682f3754365465384e4c462f59446a532f72506635426d614a7a6a2b4a68563263433168586c304a6c6e6e5331415858746b6e5a4f48462b37397137387847437a4250542b4946702b5937632f6c3978676a4c2b5a6e5a2f7374353830376c3166502b3072506f645339416a4a323776532f334f415a2f7742467a68715035775035416343322b76694651796b56536c51435a6c4137355062536831517a7039366955376a774d6538574a4f4b4e52667449764d674d7744334c396a612b383867524c49353339304c4a634537316e645174342f41333455456c6c69364142786951385071317239354b41327545466a377a574276656551396448396762304f793850304a382f7744556d2f4d50757a366f2b53305a30464b345541316350693069624a5a4530444b3156437a334e6862352b64704432743967792b796b724a756566375871544e36782b456459667964795041385478545831504a6c464c34376c59393035655359765a75563436496176696e6c712b66342f682f533647546b71344b5a786d6a2f66554b557a333138314d7a4f494867322f4c503163712f49543132383738392b556a7958366c754a674731627443695078664a3079564b6f4c6c4c6d473533456643524d61483247753976506639677a412f5830362b37705742727a393138526c543757754258334b526b4f6861783758567769555a52716f507361655432554d357a672f4637542f4147432b2b796b3157786e6b7a30396671472f744d614a6c45796c45632f614f7a4f5549337356374c302f4450385169484b48663956496c7a6f4d582b77466f4136636661725146344f54726f6458412b545236684d33786e545051695a6176715549464445664d317443657561587870452b474873464855394d58526c6a625044505558625a356e342f6a5a656639632b387335325a4d7a713874564c5546653871644555304c3167352f486e485250337642544f464a57664f45366c48634978455450434258334e4850703047614e7a5453392f374c456c6e6945677149464678434779396f74367177714e4b4e6f38354d354247357a5455304865384946382b47655355536e6b6a58325a6b3157315132672f6865726d4a6f614a3152447274374c645a327950374643306364776b73397467694536652f534541737a7a44794c586d774d656278352b66656a4f566c5252615749724c594a696a75707038624250546e6c6f2f6563546f6556556d547736336a572f734f7163354e4970455434794e5774447a7179505435717753464c5052484442586a66363549396b5a57586643344a6f6e64516c4c79497035337a795442772f6d63616b30556d504e496a4d343643426563517a39303472384c4c4e3039554531465530665171564a6f75573753366659716835524f585530664d70726b5348304b6639796d4e4978626173784554467541717a613559706f34335a2b704f4d694b714e4b7662785668382f66566d73534c6f7557675641664349693453533978642f5839615278342b49456642554b436239632b702f5a45542b2f7744496449534a6653392f662b442f414d6d65332f6e392f7638412b702f35372f55697850544c6e32744c5a7965382f6475316861637547484b4f78412f79425971716a6b3555416c784a304c5531412f73506a4a6c514c5a31494838367158365a7a6a614c732f486e4a7a6e655a633869334945563465426c614e2f49744f67336f4c53664b36664d687a676b2b546c544736724d30416d715877444b59412b4c7666634338377a6d4d563768324439422f376558356865752f6a697166472f53724b39506641746e4e79727476796d2f5037424e725a64754665326d5174484f682b5a4a4d7a4e6a35325164703936556d49546366472b333475612b7470316e6a62666364542f4650374243504d735350473831386b3833327444563149594a69783439587836624c647976655a2b6866496f367331333039526452425845436c4b7a66594b525535436a35353972784f5946562b716e2f7961665476554e3369506e6a5274573131622b374178545a464d43737a374a777034563156724b714e434f6c676e4b6b70553953536668396870724f396662747657754a48427a38762f774333502b522f345965522f7744357776454e767948773353732b70682b65654d356d6d3244636b6251376c4c4c6130396f4a4d6467575a7167436d732f38727a374d507337385a39656e725531596a6266674e423770785645715947644135722b4c4251757037374853564a6451504f485a2f6a6d4e62557351364466324c6736663252442f41436f32302b3857503665314c38633361664a395342566e2f682b50757554304b30386254712f53304d334f526e73543335453154336247654e48536f4168475a7a6c2b382f663864625a6d4d6431762f51727159656c5a326f587341526259366961336c4e697a5455687a31507261365067564a366b66616f32682f7354597033764259642b4b6f654838304e6c6b4d35786f59336d6651564b3658465a43795475623876784d30495a2b667078527061723938363776316c2f734f4e366b6841614c752f57636e6c5536354f4f545336684f6372716f2b7a6c5250524b773645694c6f2b55446e6c384b4334436a73503456694974542f514c51365450382b306f51526e33733968426e725279727056435355317353735071793849552f756635765961712b41784a67617666625a6277444737356f5a784e494e2b77784878736679657675667a6d6a5447366c4b65744970716c394b6a326d5a45416d49443050615045644f3362387344504c6452314e724776626345733864456e2b5661316f49626753464879416e356b304376347a42684b343030673151714262654b6374742b6f664a497248792f62667a69684e495166595531364b314858644e7a4b62595963356f442f324542776d64574b516373424c6842384a356a70642f613462437231623832636b595761454f4250644b4951702f69353250324956774c316e57584248695a344b573554514e4267626e63424c4361616a4850326e73316e79487349394a724e447948783642715a4b416d376e465875554a75644c6c3035644a39354e4477504874424c4c45385438303650755776536c327154436d346b4e46522b62654969654134632f336c49552b622b4c654d2b54396d5a37636e5a7a746e4f736e3049626a6b7a72767665506c6b6250304b7672753248495a3433614877415a434150476867485038783966732f436364386a7a67364a6e4778616f356f7563452b457237525055775a2b477877634c76794431482f30762b79416848334d4d4f4577666359663132526a4d5a3642702f464d6e6232752b7355304e5a2b365a6d476f544e6a6e6c543339632b3177614a654d63766e53353753364d337336416c2f674d435038414b4746664749554c4b617331416f366539575052534b654278706d583645762f4149666570393374396839562b7665582b59416479784e64476b6c564f693959314162654c4a6265454d7033436235543555664b50307758644965382b495668383342457632516131726a6a50554a52715254306542554a38553070612f6d473959632b354f36743530756b5477766432654767533677445039704c396645785879485050356663452b784a41506c653465765a45712b71536c6e5a5561427a736e7272354a517a2f4b65686b726d474e494232634a2f6159684e3369665a594646496b54793271526e616e3655587971632b5a6c533275353133474c34766d577771466d4c4359592f3841446638414d656648584d6b7a37687837506d456f3175634c776a64497939494b753476694256646c576536693672346e733778376c69535742516b55735677484a506a506a4e31483951474c4a63377067325857716d5563307338392f65387239312f2b4e58306d716a6551797a6750794e4c6a53636247634a7657383577683572782f424832456d3859394b664f2f4e4d50794c792f4138616f327348496d565671625243505a3877424b6477665872705978557844565a6e712b4278427a323649384c3370496a434a744554736e6a4168744b474e552b6d61543431524f424f6a746e435253547471654c41626638676a4e426432687866454b6a4550664d66414a7a52353074413259766b765a7556516d366c695074543963625066384e4d374b736f6f653072357a346579755779586e66324a663466726a68365055673035585775566b76313130417956557772596e324437425979333278795443736c724d437148692b4278526e3831502f7741593365304f316634505a7570344636647a587951794d4c555a4a354933796136652b6d42413937514e3875696e4d6d55356b6163316a4f724470453566334b365675716e7155324c693163546165384350793039637444776a7846486964484d71716e657462704b6d7a4e657970366634375563724430744b397574376f3735386d4e67637356777043437866772f4d38622f6861644e31736a6a2b6d356e527530336d70776d5446477873494f71524465535554632b734a6462395546735430466d3466654a6c37656c7a2f41415070322f4439522b674f74664435497858324b574c63446275766c34314d4a79304b6232696530544648557461534738354d524c6a5071652f3754396b3232392f55475a2f3438456455324b6659667869357a5368346c4d324a616f387048473934786179643935307655693950543937754f34527535306a707a2b66334348476f503639556f2b3375597954766546544b31335a67557433324945716f4566686c6379674741496a373357434964436e674e434f2f6d2f3541314c554e42716a7a6e4b726a6b374f6734364f524444386c4b7a665651366d63657252396a5157514e4967374f73424579464a2f4b462f326e72417376304a3038374439562f5453346b31386b2f38414d4d51616d4877477a3041363052584b7165615759537147796233636438707256374345416f467651474c356d742f43422f51632f467a59796938486b796f4532364674705a393251682b78444d5153547353575a6c376a7331546d35347a654f78755744543453467a2f4d447a4f48374a30655066724879465a666e314c71707972766f4f666e72315238696c6158506d4376367a6f683378316362783769314a306e585279782b32687969417a545968597552555031376158583677504258356f35336b48714a3564666d6a4d796e5233394a456b783647617564614b61352b39526d5232734e6e414453476f654d47687a666d3672397561526d6266563656703477497272725a43366d554a76713079534f65486131645a4e6f6e5937356b30794f556e322f4d77666a6144444c3368374b42616673346d634972475a775069622f6c476449495a51397a48664c77667038616e364d4d73384b7337332f49424f63356930752f5141504454396f682b4d6a364d416272743654324c5679704571317265314c7161616c55645a59495468616c624f664974417a72643771657159317638413956375068352f576d6e336a366d30466c3863733767726d6262657a6a70455538664f456b724b793631305079542b3466726f343734672f61342b4748587459616a3043383747524a763841393572616f7853355a44797332683171587430486465736c6a2f6b6b7569526742657a4e4a6a6c4537332b384d4b4a374b466c4f7a506458796e35506e56385176596e323853672b447a724a51476758446e2b3475725358784d34344f682f6830383664342b564c4e3949554a473441565a65436d71576e70634f442f682f2f4145307259633679585a567a6979496547482f764250663278796e65506a6672446c4a31576c4756436c4573693448615349676151695475734668466370444b424c2f6a2f6863333739362f6c6b48744e7337746f52754a4e64534b2f6c456b716c726d5a7a676f363273592b466f4830782b62704d5374795a337339352b774f65387566346538456155365438776e4d7a6b66303364475938357158752b4a716564644c55686a4f4f63376e77756135507564326c4a644a627669542b2b6d4a652f354c6870553230567050324d5645432b65796c7850633566554c6e314b523672374c65444c793561663058734d5666497a6f4c4a33752b5547784b6d6e70446a71474e6c4d692b6667416d59317a683775314c6c2b5a7864576a713539446e6662372b4741436e334558562f71764e742f4d503078317a6645664768417a3639433255735648336e41543946697a6478776a2f6c32685938396e542b51466d4a687a7251364a4f54792b77657849667a356d394a45796b306f644a61526f45356b464b737a59436e437a6e3152482f4c7646384177497a446e317959612f774372417067594a624266424e563961503533354e4a7449436c3641784c363836564d6f64306331664556476443672f7743747a2f6433706d49645a53317363494732506a3370646a5a3032577279574d745448793567304730502b694f6d702b6e3542505071357963626a6a476862425463397050396a686d673930726b4570626e597a4d7a786a6a4968577867656c654635497a6b7568585649316b2f4b4a38727468792f5455306b366d6935336171424b4f6571563337615a71704b6267562f782f66656e744d784d7a455a4651315a48692b356f726d783156342f7955726c4e42647056472b61636835522b7032584d646f44796753486f663448374c2f6d48696b7149537675745763534a5a6b6568766b506b6e6c666a57504c71516a423550755973522b545857554a6a7877716f53576a6f586f66516e6f30706e4561446b45775076765570664f65784a3052377a6248474f6739597634382b462b4a6544782b492b4735305552542b4235447645573165504e77324f726d444a7a39477255756f5937704f71437a5158706e4b2b644e673077443856427952384f6e7a377a4e74303949754e696433756a6d4c5656627a4d527a513274714f624a4f4b776a71667568504d73733753774a556a624c6f756e317148543032735865314b663841714a424c6256306963786b61346559477a4a523561695872724b647653773832612f503372676456564e707166705a6d73783678584f7761716d636c653136655568706643424e63386b73764847617834446a782b552f354a74384b7a6877705049556c355835426b38574d755a334e77765a2f7a4a6f30373143737a4258314b5a6477646f6e72736e54383155773645795a36514d7836744f6d5a7a45644278646658774c4b61483271735732736d396333723266644b74314231567a75517462456c2f77417a6d5265337073366c66744d506573503637416f645969684a382f5169496d613267676751704b4b4671396a6c784552726a4c7137476b424430766b683738587657587a6630434d507a506855505a77662b3634356d39524b3259484a4e564377574e386a682f36704a53585448676634457672693538672b783166692b6e3668666a3355723670335347506b7645385976375631693749576977756c7731724b573570772f7744444457705053397839553077492f7743724251704b614a346d50573367445a7962727763343272632b53566b7678386d53487a4d4961474f424946386a76594851622b6a5678774f633755303461587a35577071444e633770766a5a7055537932393752595130454c714f4554417341653946676d58365074422f356e7a697132694a36384d446f722b492f39797a31542f47395766344c35492b727a6a3079687342556d5852715175626a4a6b4a646853524c305531645a68735a52514e63787236413863446a4e335931674f47703750572f47764c596574333855507a69394d66557a777a443879384f3872627279697a5030315132503034657a3151706d314e544d3871573668716c31536b75416338615757746f616e70736e7a32665649764e767057704f4d446f5267657658757976706a54624765625842667530366d726d49793471524659723179716f5734364962466c5a6239734a7a4e6e7a522f434c76397676786d496e724135652f335866516962317a39463666556c586a4f37355836736568617a334d74574c4e506f795865456175697662336d37754a6151535751387a33564f6d37524c2b30463877676b74466a692f726632652b793233646974683556673858394b3753386975322f5437453066486f2f476172303632414c2f4639484e726d4336764a30396845784c3671796a517a61563248545179502f414b417847744a3168616e304f6634626a6e475479645a305359365a52395779656d716270476e336e377a4470646c4536695a442f73457a45534651633777657644764f3766752f5869444d614f45756874644e686f597162363578364c705234364e41366c4c4b72626c6832654553654c3575634a6f433150424e5854452b72583767705958626c7755556462506d6d75574e53314f6f44367961335a342f47325a31797a644832576868474972396e47306d436e436b66384a784e657a476368486e7775582b7156543344784e55616a34365652775175563859687975795550724f485348686837674834657063482f7847482b363831504f42396b765a426f3575306e323130356c7964715752614249582b312b6653664e444d3434306c5134355846527a346e494d356941352f6945674b66796666376a33522b696e71442b4458393966385a384830653966665358776630723964665337773266473855386f395063457647764e6654546150487a53486279485279386e386d384864553667587758702b687976345744386c70475758354e6f31665a62627157335673504a352b6148344e657050345065756e6b586f74366e706261756e76335045664a63755a6859586e2f6a677a7930592f6c336a746c45355478735a39706e756d367633685848544237542b4575743944533159314b6271644230532f73447763782f376c58684c3265504b4f61763078395467363670535276696b68783670394b6a6f53334b57784c5249534e354c644f346756616379456774334d6661347a6f577834312f5558742f386f397a492f45767a4a394a504e563530304c764d2f52324f54516b7a574d67342f653843327173324e6d6b7270433334316c5979514f6b684b767242394576664d6f334848736648547647657a622b6f3831506b65742f4c615032554c656a4d69474971383655472f45756a76424e554d345053424f2b5432754c39482b2b4e457a4566726766765a325978575a385273562b46477070343335542b6c507673686c3637634d5969644e50324a39314d6e3031424971706448666354432b757033775036726b337541786d393652707137666457775058386e4f2b5478327647303271353378334145587a585a757a79574e754a7956673141335179596c4452393762596c66424759336a544e4d2b453641616e766e6a56666639445177664b396a597a72764c356d5636506b4e4c32346532334e6e6b3039472f4a3862445a6e564c3541505a39446c57656d633144456d616866794e613770742b5a3134314d7830794c31395063674d7144564b6679424c644b694d50352f51746b314e50637a446f5579714f574859595572636b564f7a7079653136663841456c546c384535564c6252575a6d5a7a49325a444f787a774d4c78334c372f342f66625a7a5052556362374e44515377505a554c786f6e6e67584f2f73335170714e70707a52675970756447514e564e6c4834376651654e502b346e6e5353666d7a363566786b6852495435486d4849325938326a355374796f7a7062303554354c554c462f635148542b4a3566773565354948386b776570705275306134476c324b7a6a2b7663757354374c7a5034434830547964624f753471544c72676f35386c53462f613934664748456331524967353861774854553768594f4a35464c34376d6e3161586f5a513038326c456c386c6e6336362f3742636b514d376a416b744959524e4a38593734357659446663703658556d4a6d307848584d69337362312f386b386631413868384d3830387238593179316838697664343562704a31666a7a7358506c5750654b6652375a7a646f55546b7343435a494176716a4767574b2f714e6d366473774f71506f562f6464396276414534324a366b6158672f7237346b4a79573958356d6d5a506b73553976742b7052693730524c48426f6d58565535414238783166437464417a4b6f4b552b652f733962646e6c48597972386c505272314839506166556638656476506d6435433358703066474e3350562f4f3465353368436a4c324d43736a3547766d3552486e6f645a51616b6853726e415a4a5134793574743632357830362f486e784c623942667875387974395173575345504d7644664a644431447872644f67655a583266484530532b4d38572f57574652546e6e36514f46505a48736a7a657471702f6276657a472f50656d30667a672f4c2b784d387738793138355575666a4e383031644c78364e45732b55715470614e6d6a4c4b48776b584d6e3558546b6a716b712b42784774535449674e5839657a48474b56384274462b4b663974543831767a64315a61665276306333745878706c47657651382f38746e663476346c6e6a53386d4d6f5052656c4c7455666b6836625652685743767541436b382f594d2f7175707236656c474c583479505274364b2f2f41436433386150783678492f50767a692f49507872315a38356947375a6f394b6643724e66777a302b544433732f54693873386d31733374644669724a374f50627a6b366a6e506e436a59412f62506874375a653834307137612f69484d372b3844363466327a664a665454775830552f446a38637654667862315438473877375a35543673656d65634750677a34713832724576386375324a7763337a516e2b79656c744c5848375354396b506a506841652f733164654c577471616b7853337732484156516c417463442f77422b333670755a52514d78474276426e6159762b3550316b546d526a617742574a487876786a2f77446a7444746a4534734c62394c2f41464366346861685641556678565334354c387553326d446e5644664c553848496d597342716270596244595a64364a4d6d4566694e767863707065756562724173623139387a7a2f4d387447394c6a4634375a64716362737754526f696d6e64516a485130447a44536b5a5a6153684a7a6839744a6746676670494a34774f31303678457841316b6b6545495754394c74567871616c7079443061575765397a4a6a4f5a496e32693554705261444675483479442f654876457669323457675454777a4972304d5079656d657553597055665831623969666766565275312f526e47484a2b75592f584b696f6c382b496a49484f2f30724666796e326c7034316e366a596e795431667571394e4d2f78324b6a2b50374a6d5a36522b6a6e79686c43504536532f694f63537062486f64356d3154633976654853715a5270534d6b4b6b6e6c4663327a33794e616e37763061355038415a506a644762737855765a39342f65796e356f71555a3350597359566d7854524367422b31396b4f7261326a33337258646e6a675472304f39422f5633386c504f6337303239487654727948314f383971633535523463383167497734346858322b7a552f517959766a61574f59383355554173514e612f31516637502b6d706574496962583231396576304871692f434c2b796836652f6a72354e6a657466354d2b7573666c6e6d766934796255487076366137326a6e2b4d54746b6b756c5a44716561756c6172655743345346684b344a724e4c56554a2f58507075344e58327162313230727448534c7a722b34763468346836692b4f656e6670483578682b45484a727a5a31336a326e643472326c4c4d7455386d6e627148462b78544c566d304f514d3966666644324f6351366b6d31766c776a526d61357458634f714870373562347558697552726438777a6476794863746e38693067376f53372b6e565a61596f3059463250686f436467354f6c4f6d56522f3675306657535a74704f6b325957726162524d5346622f4c2b34745275566c755078364c534e46736c705a316b3061783163395a4f6f70546366786b6b7058534632706f7a4a4d77464d66514e33395473723444564c7a6a38712f4748335858654f3030465549313752303564736665447074546e537a587979785332755a48506e4d3245742f30334c35544c484d44706a4257644a614e4b6338654d7a346a586a552f4d46594d6769643667446876486d566f6479612f4a454f4a65796e4d757666536b734835367052543433624733505738514435584851364e493835442f5676647a31326a4566566e79394e42612f69506d576a707a554947512f483737366e784e61585a6450554368577a776c7a7a744a6350615a35706b4c656d6f7a537567446d414a6973644c557a362f6b4c6e384e395a764f4e43653064724a4e6e474d3868514d2b744a71643534785470363037394447316f6d44376e4d4a773045727039706d6a4d2b546d6275337148745a69496e4665677554785031752b4568364e576b72546f62454152522f4a59363550415737427630396f4c4643745a5939446e39653776314c792f306766784b45594b7a4554316762495966723973772f554562735853596c4b447178732b374d6136563863726d3834613578554c4d396b64436566592b4e6366324e684b765a4d6249786a72736a786b62482b432b722b4e7055646a70584e497971687938736554564e6451635a32534b75564141704b56616f79457a344479435a4a384a725356543961664f617a485558646d585a4359695669315a3742397a356c573871455775584e614e33654f416754326354535654474e397a773979545954546f4a52795150496e2f38706e336450773731512f477158533065636c31634c7968566b304938676e64506931654f326a3971767467642b546857547a4a585a386335465337692b703974505036372f595a7a58556d4235753848314864506c71735a6a323339324b66342b63466e786c2b2f74374450677a49467a5a546c385a7366796c697a6c61685943532f702f4d795a7631706e6474716438514e3463483848767a347766454a665572582f41412b3957722f547971556443554d36536150656c77714a36733647322f446b7366384143732f347a3347716c58334b55314c636f4b616d6775664b6458527a694e537534564e4436745a4f71796d4b334338676b38693571466f55654635666a6f58656353364936444f6c6d332b5079334c73536b7635437750735544374f664d70306153576c7646794c667138757a594c4b5737512b55654a62647468426e6f3836775759634772434f6f4a61544563716c564c2f4d637a3773763966492f744c667072552b66672f474941616e387538487a7155427165545a7261474c706c475a2b70507a4f6d37594e4770526e3731774c46795673313255396374724f6a393638564b6e34436b6741576e346f4e486d694e44517764733976417870454c3264484d32564f54786d6d30755a3861674233772f7836456b6e71657134496b642f79385546426d6e2b733578474e334d4a6f58702f4c55384d716e795478597055546466782f6441486a325469475472516f6b694a6c56314a70506e7339683847763271536e355172434e382b454133346a673273646849697839626178395079526566534f575056532f616930317a635966446c655179704a326637304f3672366e73426f676b656b49566d5a6d63794f335070582b492f71626d59324472543348465253764f4e586a334f624b62732f756a4575467255725870635a4f3657697950326341466770743961666c4b416e457a6e7471566d63644d432b726654507731506b6d78347163495731387a7451746e36517879355752465a52445a50527064676c5832356b6b74676b6a7247415a4a6d533475453952632f716d5a3235774c503950384148623473626645704c704e394d4f542f414269614b30334430366f4c50715a79646a6b7931307872546373574c734f492b6c4f465046327967615570695a6a47364f344c6158684f78356a354465674d2f4f547a487031586e5246537a622f62374f7a6a6c49592f41732b64636f616935536170557865326d2f7651524b6d557958455732316a786b5872344834554868315654575659636f46587033706559314b313969396c70616b764730614d714657543931426368546e6833345a663851425539536a54535a6d656f7676612b6d6d626d5a574b325a375a684b68544f554d7256546f303051386e4a665676343751585a6464326448425830323676366a57663036474441726d70335a6f365a636c4e464f6e326d4377484f4f2b46757052586e6455526a55702f37756e36584a446e4a584731634b442f346246742f54674a5a68586a66707562786d656b704d326d58744b71674f756e7475304e4e6167356f487971644c6d6148657537326a764657433774416b4148304c54784e795851556377476c4e5a4c6c37517169726954637431446f34334a6f7a6b2f7170616e56532f763947594e2b7a4d59384167556e2b6f6d63526b4c72726d756d354e4c6f71616754536c4848424774386d696f3941786e396959585554702b306c4a7049505931706d48306d7059586568497a7652467172623268737a58417170354f556f4a6d30415353354b333742786a77717544633533657a4d2b4833753436616d6559444151674f6834644e6454555257763048576c664c4e4a64536d69584e345a36456b75584e5a5a4f4361474f2b314b5875616e32396e535a41667442503941736a4f6b6e357a4452793965617858436a356d4d56612b4b705a695053592b76516f714b686336525035536549436c5031326d5876443342432b655059575a70366d2f6d366b4f587436736357467971556d63645245354d636846545154756658543972516f7058777546316331367859735064424f444d394d38416968433862783244784e544d4c766a2f77413141352b6179614e6a78724778645857717061736c3154715a554c4f4350792b396b663246456c307246474547576b63412f4b6c74794d4c7a4445387a35432f5938632f6b5a4d69436f7150734a6f4a5772565256615576633668507970365a714d34324e51645054427172646473646e614b313150494b497648744c7762782f77536e784878326e78346e6265686b6e44572f5151394c4d6e5838647675316247382b656a504b78724b4f435149536b506a5638687a6a504d7847643032334361787834376e656a7576312f6b4a7a2b6c4c686a6d7a5536457933624a785a7a4564376f754843585850646d444773656f3531586638484e436167436e632b4c5a3571343751712f787a317066366365742f6b4e586c34366c33706e3542354c52356e6d7a686e76586f2b4765515056586e586a6e637071704b654e737638416b4d7146664379303166706e4b44515a7a7433557a486147756668586c7667453367583546656c767162646e2b6d33703136792b746e6d486e507064366b78494c636e307462637064716f6f737a697a78645535656f4d70674c2b484f45396e51644d365977512b396f6d4c6164713831717878456939506644765154307678746b2f57337a623865504e76434d71485932504766492f4854736d39583933633933645046433154644b6b574f564b574350656a5648374b59316e4f49506373454a6d3970354b7a57663841614e44746e314232476638416c6e6b55545851344c4e626b7175396b4564505138636f303532774a7430666b6563656f3053684d5573647733696677737170516c64733275327564756550324145764b394746736d544a7076787935717269705a42706139486a63394874716e3032365673622b4a4c534448586b39365a434a542f3543344f5049334250752f4d52625838725832796a5a662b394e7741794c342b3055703135714d3975536772516c4c504e6c446b696d5549564e365a65376270636441566c314b625672742b6369762f4a504e636e4b6232664e6f68706d7162737957584b6e304f585369566370564f355967696443763461696d2b6d612f64396a3430682f313750337977713637583570614c64415049624555364458633672526a54666f5a376e6838796e78463161797331436c396f4e523164445846534533375032465a774275463544544c636876546365726b6c624b3648515a4136586e44524f794b565758316f394e79456b746b3152766c56785141596b6b7742765173462f6b2b563574363165695771783435506b6e664c384a54706f4d76485076446b324b506c454858574e4e66614c4a3874634c66744d4f74755969514a41436b714a34784d56742b4565716a41523270507568686f444b58316b6d554b5a4f4c75586f4e6d535730756a75647154446d365832506d2b4d533551306e66762f41456977656766414c734637624c5451626e7a535538315259484a75385532766a53556b706d44473161773454694a776d62652f76322f494842564f625156495a65714c576e6968716c51316b6a757061695a5273754f703939636a7573506c48794651734f45594f6e636679682f6b6f506941487343655355483348736b4b4b6c43307436326970516765637566326f55305a796e4833706e6c503945504870476b326d50506a49686a753573425a5335726d677433442b332b33565168337645452f33705974464c57647535317843765171364475635a2f754d6d687a32632f5953414e334b363834306850563368752b796a5542546d2f426c51383976632b37756a522b766a36553872576f5a385167482b53766535676977472f545733326e5a4e47737447366941476a4e4e6d7976584d7178486270535a72487a6864664f4c32546d3475734c396e2f6a2b2b6d4943614d664f4c6a6f657a666467356f3571564d2b464d72704e4a346a4e32686178755768662b4c474b4c7132752f6270716567532f6a5035515248486b54476d7a4a75597a6e454a736f64786c45386b714f7373506f5449732b4e5449337a2f47336e61654553516a7061427073623854676273774c736a505a56493072672b4d7367624f706a6b732f77434f305270673031417a6f644a5131532f507a3971415070756e4867653844454d6263396e73734a4d70614e6a5a667035366b2f707a353455645a794b592b6c4f584a574e754a5a4d42456a766e4a3077416873394945734933596d68504c48533538784e3646476d4b757a3275396a6857346c715a3863612b7872437a362f4445622f7266476c78706e2b54343556674f75574d75474e48584d44515564442b7a496b76706937784d396b644f316669364243524d66504f7878394c7030566d61653941445a3964495259723636416d3078706446596c43614677416f74656b63696a626c714239614e46616b43767535372b766b6e2b62347a5343792f63786a2b67655165557a58774f7346547062755a386f71544b696d6c727671746e6265594963736f34617662715a6f66494939393631384359307a4d532b644d596d5938422b552f59346e75636f4d3769574d5253786d616d746a2f746976596e706358624845716d466570716b786c63497a6e37486636676a416a6449443742544e5a396c4954524c7153796c30712b4a4337513447684d6d57414a7a697153354d344f6373714f6877774e6b535769365a776645595378515a6b50776e58504f366648356b6457535a36586146502b4d3546326c4c63337445612f636967576b43312b357838344453716f583263492f71707847304371324e487638415a397156722f476f74443755394841487253304635334274347356546f44342f38312f585956663763384f39427458506c39343134754f4e4768797a534a4d464e45564375787775456d636d374f45733653665a505362656f656c55307745526d7331444d417063397a754f366b4461587936554e613242576b71653937336b787267794f7056486d6e7a35716b665762543032675a7359307a466e39417973673856744b7153654d4a305131547943553838323151327237326c474e76632f647a2f5949636e685852772b66465057674b314f2b5a53552f707869664351754555486333587657705679704c4b4c4a3532354e6b35575a79364f637a6d56494e59642b383332736d5231692f6d476d777959626d4a492b4f50514a66584856722b4a384a506c4e6566626f577462514f6e616d64643373517956717854395075354b4c4f7241307a6b4548432f51726b2b557744575a636472325a316c673179785166714c4e7436446b7a395632792f507a71457a4a45733933386157674e535754694851544f50656636676377444d37483654474f597863696f3875795a4375754c4e664b5a616e32495877494f66725666576e306d537a7564385268326c50325a6e634a5452415079375257327444732f4e342f53646e54546c504d716e52715a6f7271526e554d4e3148416e7932665957696d673451416a6d36717964585a6855594b333166572b326e356c58643445537369555932717a4e733438706955365631534931574a49714b73306d7939577a323067412f59613337417a68446d726b45766d627452305152715a43314d4536626c476c45624f4e554e45704a4a784f716e72427a785766446f63357a6563412f635959426d6e5064486f43335059696c6b737343456753632f5454325770625651476d357a38314c4b6d554b533161786f363950747043705a6c374143707a2f354858573236342b36764e4a6e31726b4955484c432f67746946727a30592b78727065654439666f6462326b316c7066577546764b506748543933363851524957476e76617766496d57502f7836616e3534614a704e44703243676d52685176695847676f616d642b77344f312f455578744b676a646d44453834324369774e453856724b4a39665253585a616f585a385130444e4d2f774465353867532f486c6b514b6376336851622f774455612b6b6c7747794f436f696a79714c49334b6b6478615679464346644769744d5346575645512f4a6e674e56695a58675476335a70645944436647596d424a737a35367979617445557a32352f4f364c34617049584c626e30456d4b6e59304f52736f577a6c413648317a4a4c6c65795a79662b57704d7542464e3350476174623070316553316c30714b4e45645153437a4b6e2b4230664f4e5766466a2f48793658757365626a70625a4f502b49474844447a356633424c5a4d7631757864596c4b5a546b2b495333556b44766f5474616a5559706e78614f786d395a4a6d6a567365353654764b4d484a2f556a6750356b7a64326a4537647565763644545847546c2b5437386b473748533179612b726e2b766f72413377374f7961327a355842797a6c3547544a6454716d386f4d6d636a4e54693764784e4d312b614934644a457839535054547754772f6167796641664f382f7a45657959395a32632b374e334b7444356c7279496470456f456e4c6c6375346570704a50754b6b3561352f7338463347365a6a4530326975596f6f54546334624d7250307350737a61673248646f317930356f6934376b7332777968424c34746b4d35736136647755557642507638416d4678774c68384739535865423858395434504b6674766d7068707079782f68364e42304f5430585a456a682b796c69644c783967356f39554b53412b4c54315368702f557a586450345073452f4b39784f6a58534c4d314f47717950503841482f342f4e41346671427156586142793574625673534a4e5450744459306543504b6136444c2f6c77663145526a684143654f57433271766a374b69306c71757a702b374d56576c5a707268625a5679556c5a6d747a716d4a6c6e6e424b696b55795949356a513176316a396f4636745461645476577474576c41614e48316f3535614c354f6c6e704776374f596e55574331696d464e556e576334484445793967546a2f676b4c6169714b4c474f757265794e57646363434551314e374e6f5835742b6e6d38376f306265734c78546e4c314b4d6c78416c4d744842544f58766b52376873416c677a3674756a4d75696a537a697a354a566f2b6b504b4c6d34386f5435576b4249564c796d6638413075547859384b5556684e3267522b3471687a6f6e48654a544e5271593845386d684779506b7078366a4f4257323647485464614b745457626d2f476c53324852644354564550766b7664386652616a364244484c627a774e694d7279753448592b584e7446693538374c57795965637478634a4b75543662687a7375476a35575555725a634e614f64364b3572456d4a7869664868694f6d6e7052364f2b714c3866786a79706d7235446e3432596c782f782b794c38385a2b6b76516d5a526d51566552536c6c2b78644669763139557552797061766748544f53447976657378675854722b5058654659347438714446507953654350504c694635584756395a48506c30397271732b44346966502f77426466564f42524f782f59457a692f77425a3169596d596d4f7a496561315741335468595753696e546c4b65596135796a676f6b4836546b354b48535475446e30333055556c315a43436b7243684a712b58704232424e63334e5672593266784e656e4a71315a7647732b4c536a374e775766586c6d54454b6f2f6c6c7a7a556d486e53695945365679542b782f2f594a6f4131583678656c7670744b62504c50554878724c5937346e565668546a6e707a4b30357959754e382f77446757664f7a2f592b70686a7961656b2f6a5366474d4832547474626846636975615079382f4853664c65324c314e3866302f673746456f63586d6e716164646576477a6b4b555a365532614b334264445166484b41556f4a48454b52396f334a546233642f77794d532f4b65485147694c7837305439592f4a48364d3970785655656d6574326251696d766c437334624b33414667766e645a547730463841387a3244413570636e423865376d6574712f36684671765858313938773047356e70762b4d506e56567553722b42386b31396871634c6933533478616f664b61484a457054304b4a316d7569706c4a536639675654502b615957796b6362616e722b6768323935442b623370376761336d656e36566569666a575a4b71657536766638305a71613930344232326171796a676b52496e745a4f4c45643750396a3467544b3249412b796d30527057345674496a58354c65766635632b68586f313454366f62576e364f584e3870723862795047735442385532386165545732462f2b68565773726f636675554c4b684f42792f72664d59722f374a484f4c6c4b61647257724751313964736238672f4850435052667a6e532f4a66794e2b703632622f6a4531336a7375586e2b4f344f446d6554544c66714769334d735530697a353565415876436f6d74545537397a5364633545306d6b7a6176752b794c42396150787739412f4378385a6c3955764976796d39536458546c6d76446e682f6b486d6f79305639676e6d2b57792f436f584c69726136354c554c6e354f4b6e65366d456a4e585452576c377a3263567a395272642b4a336f782b4e6e726c3670666b463437583452722b546547656c4545485047664566554c6438676e38716a34797a353639485a6e367849666152705a2b6b764f34432f727255454e587454306955712b70612b6e5773394c584636712f485438592f5544306f3953764d504c2f774153382f384148432f7735476e6d654a2b5a3676655136374a6f347452576276346441554e4a61543973356a44616f7a2f374d37714a6e477058565533366c6231694e54336d346370764776564c792b723032783261486e6e6b3338523439496e6b6d64584b36623549614730466f552f79654a4877432f384175643076682f53416a424b542b64526c4a2f6948524e5933396b4264485a304b6e787875746f722f414571746165307067692b4d78544b70547039434c4e39732b3952484c5632666e476a2f414c71666336356f636a4d34325738417775386e47504773786333597370792b755273564c577a6735415836474f4e4b4f7836476b357a72493177334c6c5035574b5335737a446f4e616d69484c5458646166434243365039326448594e464c352b55526c71655055426e73626478634d747475646439684275646f4663736c6461706a4f43354e46483178416965576770573039424653526b6454685a71366a6c6c355142694d487932575436576f6b545a316d734b6c7546564b2f68567a6e512b7742652f35544d4a44722b564b2f67584e4f6c78313537475455327979513036726e494f6675756d2b4c527a7a3563484d39633742656f7a6237374f463139662b4d6151695548715835446f74566b34564f68616878392f36796d33356372484c4b7771344a567857635479466335334f544d482b71674b57736237553853346f78457a6e484742444e4831437a3832513669387138647a2b4c733570585449314d7968737054704a3954436776306b792b30382b7037625843556c426c3961794d506a2f41506661496d656b41696e386963474a365575395150464e6562734f6b2f593070443274436b633148756d74464376684c6d684c4c5063793732733477412b5162317552396e35763665376e384d66595758364e656e486b7635752b712b7a3659656d7533346634586e7959342b5165522b7175767949713872462b39526662546a7a4c6e51767954642b3836686135674c6f632b616977474238505a4936326d4e4b7357742f4958582b612f7743464676344e30656d766b682b663165702f67766d32726e654f2b616553655157352b4c56343736676d4b3749335a6b6c796a576e50745a387a5469354f6c564538632f77306d6c4e4536713665724772766961374c56476d577a657162443570354c714f7977534f366c426156746c744661476c725a3664427a47636e6e4832365365386d414b4768796f71516855584554306159784f4a3444745a2f614b30366839465055384b624548706c356e6e694e7431766b46466e4d752b6572517877675943666a6a6c39704a4e453343492f7354554d4d456578514b3576614f3348312f714f6756306a382b6b61714538324a6f62555a754a485449795134395469364c6c573632642f473935434c744a6c774c456a41356b70515476594476692f726e486e4d2f38416c4a66684746662b4a4869506b6c57707054615870373669654c54654d694a77747a753675726c6f57645a567a3641544a454938327954374e566a37466657346f52724f754d46392f73557a4e37522b49654777776e33366373334d61503375636b5a512f77446a34454a713062435944325a364966327450794e706438786449674338446430784a76503639506a57664d42656e5a54646253787370745a623055314137676734765a326966736b64346f4d6e636e64372f66376b6d5848436650384162372f36747732657576723742575234556f7368637a396a78356636723645556445423678765942617a3976377768516b663337795748472f49444763446e76304879636f334c626167467a7a385579745564624a7765556f756e706573434748713645724a646766727054754c2f61587562315a6d734537492b6f344c7754614a742f363263746c50794b4a335678306a6377717631795168685a3758664a2b67554a39614a69532b482f4146586458784477555638736e542f6858797172687361705672507371346466745137322f4c796848596272506837332f63616a4e51753968712f5667626e5a33726c5a2f5a555535303944744e4468576469525242784d4a31757351504775713936324e59746739364333643530326b315a7077343972316b4866547a674f32652f634177342f5076346673566e6d366953586c6b5066736b552f2f59397633492f694975715537336d424e36767650596e70583566724973566e476c63446557525045724b325938354f5a4c47645066684875664a6c5656447a503974454c75544a554b762f414977664c386e5a67544c414d4e7967566e55457975335172346d734b45636433684e5466484f75316233532b515244704a4d6b7a75347634506c645437652f3567566449427252594d532b2f77446457432f7231683848506e712b784d6c5270474e78766f2b57687a69454e482f726d736c44384a657a674348666270586439414f6e73347568596637546c6631544b53634c7161566768303632636d523931685139347863494c36526a372f384144332b3041574b644138527a3679676b4b45566748554d6f6d646c504c354a3348455a632b446c6a554f2f6335442b7a4d766d4571522b4c6e7a6445334151614d37717178706e56302f6e47707746477568344632576435772b2b4439425766436e4966594b434e58734e33734e4b51396f46387648754c67747a52726f4264375a61486f49714754356b4c3030385051442f493266356644303173357a3254416f2b665949444973625445394945713376544f7a7854355a624d70444b666a357a51305637456677496b636f4c474177464c426938646e794d4d7165714d4f756e6144666853333446524e706e714b34306161735467386d697156585459343764643142455857664a2b314b6b6f6a6f567770795a494a6e377665516e37306937336e54303731357337754f41543857304e5675716b35553648583836715036774f364a6e6e723543427563664766704b2b6536507041616668543339487a357659514969316178574a6952743576616d696e50485056706156565766486b386869686c6c71366e4479557a35344e7a324b734c377a485172423758697a357666595077756f5331764a71445866646b42446c545635494d5a7a4e50542b59382b764e747a6b796d4e3963587a4537344e346a7159493066477741724d422b43734f6b436636437571633149384f4f657952394a33706d6f69632f4f6a4437594c2b3731636e576a2b2f71756f3654656b432f63594f536a3550667968584e4b3237706b5273697034684643312f39382f6b5954456972693163697059346b467a69663378594f554c533730765958454734793449644a32676e5870463446543669657033702f3454335967794b664d504b7358427a3739467443594d336d74576b5162634b31744f574d4755546c7a34356a542b2f59667641432f77413657766974706a3452376750546a77627837307579737a776241302f486f636e307a7a302b4635454f6e7231596d66504a6a566a4f6a6c4f704634794e4261447332665159785658417356396d78763841756a4d414479706e64786e3468355a2f3773654a4e6e2f6d703669756965796c47314c682b5156564637614b526f70376f636378797570423637473645665150767a4730534d666a63615071674864374e664f6e574a37787a67365054487330774c59705a396d6d44356d437761795352744c726158423068436b7052366f562f774333324b492f30625763643039334e67455548593938437043374e384c65636e6155466a70587466523848592f69702f516b67726d566336424e4e592f2f41415248332f766a7166732f5752694478447138734776464e71656f46375a766c4b3775666f45337258384b707649662b796c695334514753786d2b635349442b416e352b2f772b7765544b34616b4c6e5871683877357949714f6a634d376674392b483575574b6e56784e526a3966324558524468544c446866415a2b2f514e766246786f6735504a4a654d6478762b6b7a595332684b7267436d6a4f4a6e30774c35584f596b47643731496b5a726361512f6f487645314f613431724d61376c706f564c2b754c46587a3971584d774545494c2b454a343658664b524c41506853373366583477524444696c4e7a5655396f6f34686657314d39796f3669564a46384d3355314f70685564446e483958686635454c69443466304245432b352f765058674d33726631565978713930667932307361797150523479666e77304e533735356a2b7749564e73416e3835784c5849346450762b50684d304865622b30702b5833693055666678643953396a4b78496454524e3370586164456b674b73655a56366d4e536573746e59355761567a4b55724e6f6b545a68554169306a496544326a536e2f4d725038513948726f6f396a424a764d2b6364436e4f626c36486a4f6b5538566d52584632562b646f5442557949666232784f664852514c41436d574145734a496337515844777062796b55792f307739504f343171644c78374e7279326a4c52484567506a76785a5a4e466c615555317457784646425552453835614b2f77446b4948653451476b6e64767576753666555344306a394d592f357a49333566484a3437736d434c497a46544d705445446357686b726a7a3773396451305430527545486f61527434414431505749354d376b5874777833794a70352f3666772b4e3574693532443156456d5137447a6d792b51643130537574577650726f614f6735564352546f592f48653967476c76362f77446f6f584d4e555261307a6a454457623163395076566679623057395274373071786466613953302b4462314869586a654e617334626e32385a6d756641766a474b7531446c2b513170503367383863324b573369512b787057315974574c646b65637a2b316236476558622f39786630363862386b3858304d6137307348314638343839772f4d593663636b426e654d3657437647315a4b376f3275592f77416f33734f567941346f7955376f47485641332b757a326930526f576d506978576f396a336e50346c66694e726550426f376634392b6e6d6638614c63576e5a48454c4730376e464839694872697a4b4556666144482b50707134672b44384e6e6675465748777238364e54557a77744f52566e6b6e34542b4a356e6a656475656776715636752b6b376f5a736a796954477a376174685436556375326b55792b4f646a393678376f4c2b7373356e2f5854556f2b63706f4e6c3830387872545043396132426a4f38782f4a58305935705557555244346634326c64476d76794452325046396a4f6d6a31617274396e32562b4f314c326970644c6e6a305a314d634a594b6662397a6f726e6132307478377878492f756f65442b6f5072562b5333346e657156666a3270347a4c76654465536550594e45336c3065704272782b456354357249354f6a346b6e2f414f6e46352b746f4e434e63717145716d6a535149506c446b3958733831725455704135656575326c337a667a55506d6c6f774c4d32664d38515671763554777a78344d31744f425632796f61302f4f316b72456d7954347746644a4a574b497a2b4d6436634b7a49754830747a444b7a41485432305356496c6d36565a6a426855516a5032367038327157696b3764624c3750707a797a79647146307a67346748414c514273616e634e3250427139587861747348553647627a59524256574c556145624e47664f4832756b563979637858444668366b667359766c713570446257432f72714379724b5969656f6b4778752b50753562484270324c355632477374596164344a646468795553726379545430496f635269716a6e416148425051667a734635715535696e785864783344534c31547a764a6e7755517937464550465a2b687239646d416f70395051736e6f584b335132634b35706a4f7251682b7279354873536e6c6a472f4975623679614e4b347a78476a507145526f676c5a313079496b5358324c416f355a575a6d6b56444532386642395575707a5657584568646665784f4238444b546d4250784e4859556e3667356e677546685947643431676269764f4854316c3552354d342b6c4f5552765a50693455575a6d33484f75486b4d366c73735959577470574a38624d41653837566d6547654e525367643638516c3532645855746c58394c33713435706f71534a446f44557469574c2b52596c2f795841412f324a695947464c4e67356f5770524251525247676a6379543574417674304b354775695356644461506a6e48334353684d306948546d2f306748544a51675a6a795876426655796978745963643851357265524a51467a736f516f6a6350537a6843354d62466b33682f38415941314c594b4170377a4731732b55423669484e564f7178446c756a6e5631575354666478696e4d6638694c4c5153372f5758774438612f596f6970493542584d42715548484e326658694345486a724b48524f6e4361765048514b4e4a2f616a5536336b394e464d77516f4767313143686a6d6359776b75486a306b5a4b4d556837716878626e3054397a4c494e456934625034336e7530696f5a6d7656797a503841693748775647354a665857535755683061542b464a442f6b736e577a32764d5230617047513330636b5a42566e472b7146507961492f4e4b6255707a7a414b484b4a624f615570657a714f4150752b525a2f704938396a342f722b6f39357639724c30324c774c385176526e787549666566664861504e62746d3841475a492b57617762634b585a50567a384a3147624753506a70692b583554623943696234584b6f3872576d4a314a6d41702f64533862386c3276786139546f66546e53312b2b516e6c30444e4e57576c4856566e395673642f6b394c4154647773566a3069346545705530464366612f703855594a426f5445616c636a77692b632b6d2f7150365a3068503576343735426a4f706e67724f725669417336744831525a50516e577168494630634778616a57544f46307a4d6d4f39762b7866723174533353424156364273372b6a5172353179306454384b5a774a5641583155503436684a63372f414d54533837777666786e36426e734d43452b6465373877637a566c53765258565663633577453032722f536d5441615936547030712b796a4f4d596975564141526441326752664e3756695131746a4d625157785a76686b4e71776279755630383061594c572f6154764f6f455a4843355537474c66394d697148394e3971484f442f4141476a3264426674534c44384939492f4c664d64464d65586736506b4a336f2b7749727833666474535056705978622b2f434c4b5373733046675444535a66566431585142696d507261617835514e6e664e76776638415066436647736e536e7864396d44716f613778757a5278376f57333766455a73636342626e2b35574b7638416b416f41667430416e2f6f6577464838565469724772575a7a6e4d2b76416170614766354e695742343935426a322b503335733435645341696d632f4c46625636556d6477475375354f5065767a324c2b56637745354943796f67457754614a7a78675344785079367156525a2f6c69624e506e65313149306956635633592b7073736c31594e5a3632554a4a525a5a63362f6c436b30517a4b53366f45704d37776b78654b487a58304b485034723747547a5951434a305a755662506246544747685270542f5a4379474a62686546534b766a3579623941342f3337784375664e7369334a6f54725a48386e776c3437474d6c4d6a634d5149663944726f30533566794f5478633835766251722f37536f7177583171564a6d735a6d4942723077394976442f4d386f4e65377a477550543074774d2b332b517949615a3541665355646d6f64647452694971755a376a5161546334457049434561442b4a65396f346263354733336a2f3443356d7a4e6a4d6d3953547a7331674f62727a7638557342754b742f5a627670364d6b2b346c7152525671594b6a61797236414f4e48575547394c67545364655936562f6b494635332b476d42347a6f63523478366f58655258303056647970702f43426d686f745a745552424d7779336a504e396a6c36624a5247566f4a4678387572677059324e4b4e615a34545849395148396f442b30443474364b35324636762b73655a463542366c3335636e6b532f463330722f41494877424e46382f5979325a6142576e513076734558782f49396e31696d54385878566e584f3768397039706d2f4c58732f2b51394d2b46346448484c6b354f6532576543504d43786b59505955677a6c42444c4b374b6e4a4b3352304d57524e3530516a415741716c7745354b776b345a744d7a6e706757396d4234785a6e585279533355545764514f5a4773416e6753756a37524d516336733052577864565a63636e716c4c4e7378447747386d4f6b616a446c5762494952357a4f3930596859792f4f5551734b656c792f71585661656777686d736f4a3453384961486648786166634c58476b6c6d477448713736626546657250696570345a356c6c5a4739345276353535753967627646746d7561757651315a30626c553942545a72706e554c5251706a6b753455337534304848776a765730316d5a694f6365416a2b366a2f625a662b482f414b70366d78346c4473532b433730394e6b624e4f794b6d555731586a58424547537136696e4f49705357743056426657466165502b3333394d343331394458393553596e74534f4d466435384650324a355a563338576454706a506c444978744a7044563945534576676e536b564d346f6d2f3842774448712f6744594c70495265755770305861694a74486633497a526e41626864522f72706973655471422f384168687752506e43535879712b5569426e5142366c41797751434946436d36465a54684f744939416635486a383977747544685842506f46316953364164494f692f76414433486e2b303959436a716446563141456c4f6a302f765761427770345831755555307755305350636e7134302f495558654b4b62394d392f766374522f46306e4c73396466583244396c34527236516f3677614f744d2b524e4e526d563347516c526c67762f696859647059526c372b666f6a2f414d4f41594c616d7579336747326b2f4f716b4937655557613062566b3667706962323339746c36366a6f6430702f6763786b64432f6150447139334f2f35414a436662567a2f326366414e364a596a576c5a2f59636250724e55325a43506f3643336c506e3257777a717355624748773838482b3158484743793967712f334f362f61657342536d2f70714171726f6d71304d37724b43722f59724a676b78784a483461754d42784f397931697879666370505139342f396c4b327a704d534f6a48397233556c792f582b623979794f4d63642f77413466366561594a6334737538663332695a5630495561436c38414b5a586b71794a50754363584f444832695974576365756f3969336a764d366a777a4c305937554c2f6c354a334e753264434867547a4b45654671793257576975576f74544c6959382f3846676e5958304530444f6462504c7632704845582b37432f4c723854765679717653746d37436e4b7651656a4e6c707a394c7a464e3942357a584c357863785663577965566476546d4147474d36753972492b7632664f6550582f32504f6950316f516f64456c624b5848517478435a2f6f754b5952457441693477466e756358424c6a6a4154442f492f6d367776363678473962354b51572b716e3547385558734833634869514c69516c35507a733543416b5074377a763645514833434866387a482b6769476878434f4b554264353835417a71513972612b634a72464e564d4d79534154397132474175374e2b67575856642f524530644e5076412f325664624f66656e4574733633723439443565314b704b684e4e44484c49757248676b6b65645544562b38773967423766594e7554792b776b654c6c5836694e66587a4d7a5170484369527336446b394f6d495757304a47696d682f53344179686e3042333469396e564a3937756d6b524a334974624843425a4f763666313432417030586b306e6c4f31466e773675746c34654e3542584c67594e324f49704f3362516757435356696c56437a537354414763443264676e4474497445323364777a713948664b73696e306f70382f375236583550713645577634357362654a652b2f51384e31744265624c353457454571543173756f6c6e2f4741502b756a6a756d4e414a4d544e756a6d323832333167546631503841782f3841472f533338695a2f522f314738347544435275517a65582b62346e6a392b6c71594f5264454f68335656693031534a3141566e734a352f43304a4f4a53336f744d6569495257383270757254416b336d58676e696e704c34317a64394d664a2f442f587144794a2b704e354a6e61486a576864756543594d586b454a2b413362577445774634327071532b30716f3130484779656c535344722b64435373576d30386162427342355a3464366f666b54676264336f783546366659767066672b697667336d583544654d2b6c3658356e6933682b33344d55454c3943334e50354b7461346f34632f5365324e31485339393775706337744457316961303756656130387552552f5046394c31543848383039655a4a2f416652723052677239502f5337795077554e71374c7438706f5470444b486c582f6963776e54354161334a6a753078694933526e544e395a774143515a624f3261306e6d7431794b6a395176412f46626649664d734e66715233646b7939532b6e307738356f4b677645664e5044594d746d6d63654c6470463375557951636b5134776e2f372b52746d58494e504a775a614a6d4e764c2f454e6373717556646346724a7549554e41564c6d6a4b572b757632766c69374f32616b754b306e664b7633677467417366597476744d476c3739647359323977374b656e6e726834763466364677655436766b595a6f544a677a776b37782f5739564c564c71596a33784c6b446c6c446c304c556968366b3950374e3150652f78745a7871354a724d336d76664935626572586d653136722b59582b55574e75664853314b594471576c736f52794c6338433550424f344b4c4f2f58454456385a2b7766304165394b666c44656d327354417270535650704d3374516f444f61636b7a437157336a4841514d36336a425956437939763636726867447570482f366753447476345072366b4f38747931544965595545455878566f614b314f4c39307657324d5a512f336d6c7939424d3336587a3947614a666d2f5a71396e73576d5a7446594358476768434e4e6c4b4f633579305a4645797054306652444c46482b746243666c6e784d6130726e36622b63364642713463596e37333550763841666f46786a6e344b715a6e634c33695642387356507a6f54506e734c355864347a6f7063784c4a5867482b344b752b396f4b554975442b6e7650494a4c57795278587643594b58506135626c4d3052503762347a373862644f6c50735337354c5033304f47514d2b7976706b6631312b396e66773642356c31783574325a666e7655746b56754f35646453324c6a55782f74536b33526f582b757a39705859336738464a4569786f6539343941786930586e724843422f514a2f41507a654c797a306e394f66496f395376524462385638652f6a6c655078537238546c70795a427a5835777a727366586a35732b304f664b354e6f69302f73752b5966593561562b52713132336d42546e393048314f38446c3950396a78662b55627a57737a2b3557693337656d33447a39437454596f7a74716447637247484c4f4e596c5433767a4b2b494836633830722f6e766f5674757a41386b58686e706868572b59364d586c4d6e6b63755a38333351386a7a477858327337634b5a73366c766168556f5a6442327339525676522f745934446135504234432b2b62526a4d6352302f77445337306f2f457a53386450423864782f45764c37782b3150735a2f6c747438322f6e5575766c75794b557363766862532b61646d6c386677663754676c4e706a3772427444433174544f5a354d4459577630592f4533796c6c326435762b4f486a3045396e6b474c3438486b5747714878776f4a6e5a33793646336b4d31465356424852724f6131624a557a7348374b31454b2f7255544a6a647152786a5536445548312f2f74612b6e64666a477836672f6a5a354d7a4f6b3931476a48347235587252582b4f57795a6d696b2f7235317855584e584839647952576f71503841682b58564b7741522f77432f536e7446733764547648446e5858712b4d366d70683335525a31654d6d434771652f7463466b53736b6676546c5479346850354832463968506542776665744e49673044424a645538316339344238657139783139475a66312b6b39446e4a6c73625578564b7539397132554f464b6557304f2f597261487444674350544d6a4a6a4f7a6831794d65532f48317369694567375846322b766a6a717041433752386364494d2f617053424d726d47776a392f50685039384d474a482b74416c493043367771536f52617451387a3074675238363147736c4b534a6d30506857525663396e462b34462f77433031684c3851635544705a66615774367862315a6359424c435359724f566c53772b5270476c33515a4f7572356d6436513850705446374f4b3442324b423644474b555836753644706e4958546e6f61744e466b6b31333065744d6c66705879634a684e5a3871793655394a66734f72416e5035776f307a63317632416c5a5479353069714d6b6c6e4b31354b794a757243555979363665686448744d514968494136705331442f384947725676664d45793072494a344f4b6a63797a6a4c5a4c66314c51733379454b5357766f3973597452634d422b304a695837495164702b7a395a415a36702f6d35643037464c573042357974534a33726d436a363942554b36504f3873636e3744503949384c684a2f516e303267415834646e79424e6963726a566f5833686f56564b484d36316b535773374d53334756587772467a6b4f6a4d42364a45587847426751744d316631543970367745594a41343739395a497979696e715171367742367a6e7463325a4174597741585655517a7157496345515838767558372f66384145746275714c69793153596b57663261647a775a6c39666f50716f524c5049656d3072733964476e4f52427452664e714c2b4a3742706b56394157696c784e2b73644a6e4d7a50694c44524a75684b634c73765146726b53335237454e564662504942306f57524c324c47782f493857487443785230642b596b4455513349417067425543522b4a2f6a4e367265715065515a6e7031354d336c5473536b7649703553716c677a395852306f70337571746c4c735a4f765953516f6e4e3072694d7a567877542f592f7173366c612f466a496c2f6e48344c65757668466a4b6337496f5a5871314d6c56466c7130716174446d74306e5a6a306b4767774c5039306f763777532b46464e6b773067723555747056314b5431342b7649564470612f6d6e6737575a486c2b6471343135524e45716163326c4e4f6f70635647666c4e36767178505158376449703373657556436b2f436c55356d6f6666614a7a7867644c6637666e35615a2f69666e792f5437314554753664766c7a5a4f2b4e307769737379356e3764624c434b36436c55757a2f414f6b5135536d6b36766d5a374b5a6e797a6837636458547a536256346252336233642f71387a5a6975506a56453871396569534c5152426e4b597237506a2f41434353564e3845736f706e6577447445356f375a6736644b666966372b556370767a4b396638417837306e7874784d747648536132516a494343436e497149546d732b69664d477139636a6b786e4b6d5837505161787241674d794e54425346652b6c53625a78336a7a6e2b66655361766e6e6c4675396352556c577344584b696761506835776d642f326370486e7a652b696f685a3368664c33356e746f2f77427a542b62757046596a45434d646c72537856587359786b77744c6771694133397053437754783654492b2f356a435247376950384133754976656644364933483266517047632f6a6575683954652f636e567967776f2b5976683474342b33763058645838772f476f672b5a5a696e32455a383446646c66414a545358645a77757a6d78716a6f5143484b6277572f4b5832456442554b774a6136442b62712f39767334435434487634514362645878432f4f64745362416f5a4f3166427041715375577a6a322f4a4b664968556b4f3144383477382f664f4c2f56446d687858744d65647347715641524b4f6e7179656f766c6374795572466e2b77653958555137484f7262306b733577476352384966507a2f414139692f61424a726b436143366f78587961765249707668367836364457426a614d71656b53666650475a4751695168372b41485236426630436247645a534b2f326e6e785053363057487a6f46504c39457962587742507248433735476e2b76616e39653878453068384b51364d2f774274373130395366426655652f303338653237636647382f723635766a76436f357a51337a347a755531787a4c2b315561624268627a677455744b306b307a58386e47487a612b6e5761352f4350526836632b6f336b506a752f2f77426d725168624d2b324c677a4d3137394445676e38736e75386a7234463070384c5948616c466135655545345a715850643849444e4e5077544554484562632b4b2b7158645078345266557a617a3634716f355636656d506b2b586f2b4d587a4a356e344c4b33317052596d58506857546c6445356b3030384f644b46664735394e6d4c524d6349676553542b342f77446a6435642b49337233726e6b3830763841356f7657522b7035763666364d756d4774486f354461474a30634137484f4a4e544d7263533852557858324a70374a71575038412b2b422f31364768654e536b5a6e6d7231484f4a564d6e5978584f416c564a54555331396e6c2b5a4d39444c4b5462545763346b356f547978714a6657542f7372503841635052393366363677626e49564a4e70353256387371394a624170486e5a5674356e324b575979746349324f51356c426354315a414c48664d6f352f62515039633453765541335553796c4c53795256536f6b304f59545064495563426e372b5563435668737957556d66533448375069763841416a3967674b72594d7358306b49666e5656382b5638667a55726e72416b2f427142772b317357746e5146675046416349692f5836346f524b5574507a2b764150493045302b4e354c63747073616b6957756e51577469315431724f5a684d643149694d6451725a77782b557a4e6e36416c6643765162572b6b33723335372b4c486e33672f7244366137316d543556343572485736724e66316a74354f64707a39646b57574b494856474a4f396f6e316e41466166643143356d68782f4e62547271526174757950623135744a364a2f774237582b332f414a532b6563527a2b6f4a35384f72344e35685441466d35365a2b716553765056544c754979633337582f6a4c43586430772f655a387a6a5832564d7971564a7038754a76374c72646e682f5742784f2f73752f69442b55486f662f41484a504954395a76534479447736483068384d387579664a39396d4168486a624e6a7975456f6648722f48764b62795846646e304a45714f55524c733938786e7a694f67667a536458744f72703230655332376342582f414d70746833632f386e5051766e6b55645370513948375835653370494a4d6c6d6e4c3552397666566b30685136706779564f585178465a704c3337797166724a2b34665365773432546a7075486d6d3450762b7849766e3141744934654d6d354f326130474c2f41496c582b357567516c2b3432546b664f395958584f554873426e312b70374f50587236794a4434377637766832393431355a6c4d6d69763864766732316c37776231393263314a5654306d71726e58554b2f39763761514551475a4e456d674c7a744e596d4c78487231784875692f486e797a4b2f4b4c38622f472f5833777537417871664a73584c4c79694f484d364c4a504e516d6e6c716e3074714233472f594879495757532f5a57614c2b544f2b774a75434d7a38713865367673743045783879394e645163724e31397649724e7971575430546a42795a4e32696a6d6b6c6331476f57656e37316c6372386c687470366d5854546963427853306d45556c59743072574253483053385472686a796456374b6271386e51304367314d76446e35354c3476494b6d55486e537938505168722b766c32304d55354c552f445a394d4f334144703942592b6e7776532f77667966314f38386244682b4c656a33682b74764671312f5650732b62486b5a7163795848476b737a69746a3746734c6b4678514239716d4f5a57677471584f4b6b3830374b787a5748686839532f4f746e31583951764f2f556d30536256355a7665542b5155425261484e4d5757315633717a6a7354476a704f3547587638416d2b7544543459702f663257673533725669746131726a71494d796566744c47643479316e585430563969616b7070304f3458467553454c474b465938554c564477544d50655053426f4b3476756f667a4a426a4754444a47312b6c6459625a6565784a6d50436331446441346e644d5342786b78596336303174536a3263623876432f726e4369503431546e52794e6f6d49574d6b7a6e6a4a56597573617130384a687a686e725034536a63517252316a6d2b787966682b4a5a4453567562746576414c7847456750657555675a4332576b516b476a6731436c62457a63746b5a43496c6f4179686e5a4f68385375464d39625554434c707a715055622f59472f447665395676496250793639556371616a30773850302b5a5870354e70756a6c48794c7a5a61786d7533644e7774365774346a6a3632784375592b692f35422b583768663647652f6a3972314972487536647276487457386e3849394d765662785079764c382b794e4b474c79544c322f44397931565455376332627335326c2f4d4846546378633861567831544e6b34316b69676b4d4b446a454641372b764d6962566d73774f4f5870642f386e352f746a2b6a6e6b47683569486866717036326552516852626d35336e336b63326e342f44544456564f75536a447a386565646b4b3256436c6e796b7449416b76624e4d6256304f3662653261396f6d4f45566744667a6c2f7563656e33344d6544552b50362b4c44345034326c4e325434423444366459734f554669594e5a654e58486d3534554b36566953485761786e756e53595a6f46534d775748316b36576862566e4d6333385138523335612f334a2f77416a76792b313942653735727065462b6d5148544248344a342f6276356554563438762b556a6748797a696a4950494e4c6d62526f5374706531726d722b5966675072614462366d6e6f5530766833576b61417567534d5a645170412f754e6c6175672b6b4b54666158783846636c665039663657364d41495146335568307638416e33702f7258663542697862656a503748446f4a354f4a414a71576e682b2b744a4d644e5239686e4673376f4b46544b544a4a674164542f414c66654166316f43554e6c47566444757a6b7a3563356e48383661324b714a706f39376a5964673835386a416f4435414176615361523933546141392f7250386e332b347666793555666b50706c6b3732617834496c71707774524a50726a3676512b4a2f4a6457715775576a6a4855437970544b76596b33454368767344324f645457497861496b567a347431624e6950486f6b786879626e2f41436679476f713369536b37783342627243452f4f2f78354d53536c494c69542f535a77366131664330566f7a4557373545743071376c5957786e77485070346d6a4f787a5459637a416c4978756371773953324e722f35493838592b50384138794e7976306f5775364941465257696649483035326e4d3065753664456d6a3735303130796e5544506b66613467714476782b356b665345525032382b45766130774d7a303238336c3148612f384174312f3264504d667931384c7a7679543962504b572b6c6634785761656e4d4f6d6c476264356a35614f43757766494b38655472416d7a38744e456d62797251734768426e55412b2b64787139334c72653078705473707a61673774612f355266674a2f6251394f4e54307839473576462f54707877394f37783653326279333156387774647558416174625a616c375536784c78647a35704c486c2b704e554a76596b3367452f483772573137627252752f385235377679772f752b657348725256354269656b5662505476784f7a6c384f6a76613173376649504950487a537a6e4a6d747a467a546c4b5a4463756b41516271784e497545794d6852323666737461356d334e6235696f2f7741422f56623077384f58353952354e6871332f57667a487949583475727474457448485239436f33616354376b74485a2f64463152574b65332f414370434d41535948515462613962544e6352793148656230583966664c765177592f4e51387138634c2b4853666b446f2f4b4e486169386538534270325472377436456d77594a715536684e56637165475155586e43776a51686978354c30693344614b4a2f4c482b2b643454745977654a654b7965532b552b5635484672716d38533766347034644a724a314e726c71394463544f6e52316e634f704b2f744b364c7131324f4e3344662b6c7576702b79546e4d387452786439612f376e66354565724b7444477a50496276546e777a567456382f6a32465946644c517441525a396e5474483566342f34497851536a614c4f7a5454524e64304977642f58565432656c637a3272445369587a627979545a6e386b563562354a6b62326b783955657a4e74576a62335075585a4a79572f5254707a6d545070546b427146796c665770396e424d57674839613759786a594f703334302f7742313331543843646c2b502b6f4257362b4f6b6a73783948497855333163722f6a64534c346472453061436d464e46547258764e6135314762716153345843704b6a4455396d72504742364466525438752f4276566e78354f6c34313668654c62596a6a4378483174752b4c585362382b6445796670445950614b4a34366e50365438365930757a584e556f5675574b2b472b6e4e657450754e71634c7a445038414b48327557526e6d686f7a2b4f35762f414b6a4f786c46724a6441374e2b72695958394b676b75686e7a6b767448332f414169795a66794f6e50527a7458484742652b44745a30556731524f73554a576e5372527764444b30396278715a394d7a6d5252305a4c4f7454476e516f6f5a5169686f644e746e7841662b396754316d4a6a68497457487a533153356d364239586c356e6a394f786e7045375354466d6737336c535663613073476271617363702f6b527a715131666a35397348635a4e4175764639574c3837463637636c6157764d7a542f5433716c303770485542444e71364a5677695961476773714e6a2f4166636b6878447070396a68766e5453615233634270562f64452f44482f41504b452b472b4c6278656454596e6e33684b376f2f425a74696e577a633353733064435a49533750652b50716f6a5935654c564b6a76454c46674a35576338357a7473445451315a305a37504c63656254385135664750786d2f7541656732502b587548443439672b6e2f414a387a4b3868713869784f4c7a6333627354704b3851386d30364c505971696a7477516b565056506169554b514a4b542b592b6432707a364e70302b7468336f2f4b2b722b397834442b654f7035522b4b47317065662b67486d444931656c766831613474723065796f53773943436a4d3872797259344b47564b71594e69535135557864736e6d442f63427a74354e50384177317448477079322b4c784672663237635831463863384b2f4f4838715057483049774e332b34672f77412b38307a504c664547592b486e4668315932566753654935336a4f636b6155592b52534f58486142675a30336678626870596267506f313163544f6a7031742b78474834502f6b64356a2f6433386339652f514838362f785a384f79734c782f48314e74506e736669756e347242673639384e6e6a31666a4a33575a424d6235306e536c336d546c433178444647587a4c4a4254653972556a326161333074542f414c524a76782f385939455077772f74676570767146766568336f74362b36486f4e35723532646c486d47486b56332b53785a2f6e47672f4e626f2b516248506e75716f775579746d596a6f7a43364d6b68505037754631656454573136787574574c44564838747678312f4572386b50774d38452f7546666a683658632f48545268395276416376314e394c2f4732582b4c2b4d6565654f65522b7048692f6857396e374f576d4d7330716668736f4179524c377a2b5977725854386e41432b6e665570713230623239352b47332f41476a7068367666323566774e3843796648303533397658314b39585a6173685a5733656c486d6d375030503277653035534d352f6d304a3046317a72614f47636e55724d7a4565544a62785363613632724d2f3531612f78447a7034336c586f6e422b534772676554772b742f6a66345959766e4f706736767037673745725055377848497a4e757566536c302b6d4c37665969756566744b5532666161466a6f47755155383442317a462f64356a62377a37447572347a2b4d483459596e342b762f41433538472f4c3738782f534c304f38727838516c656f746e6e4f706f727a706d615a654f6f30662f4772562b33486e2f6c426f6c487068386a444f686f4144792f58396331745455332b376e54726133674b5639455078702f4c4838672b2b572b6f586a2f35724f38472f464c413164487866776631693839784939547a66314538586d315958614731642f4d61695973764a4f6147344636447946744947716864665158514b625776703032316e5433616b6477327466344a2b556e6f6c34425636692b6e667258365a666c3736535a45763868356336564762423538694e576e4c745038414a356247614c4f317a7a34654f5846783834424e64415a2f445166735633504f6e61323231626164777436432f6c6836392f6b6267542b536668352b4e4774354234584a74335a56586e2f715835505034333476746651367a4b38676a624e586d39634972584f51543841334438786a375146307a78426654705363617570772f4455533331452f4b48386f2f526d7562622f4b483865572b4e2b6e6c4d713745656f4870626572795441585341613062704e75656b6d7438526e5a5555705346554c70676d536244657a523933503672476e7032374675627a46715950356a65562b5259654e754c2f462f31356f385831386275706a6564424848742b4c6e46703665536834574a7a55675930506c7563616673514239524f62385a4a495a77342b4a3036783131494458522f4f54306b796135614e6544317278504a6365516d6132472f3074387737746470767a6148476655795a722f6d31466c50716369496b7046334a6e396e5145386e7a3965367434782f4d4a654c666d582b4e2f6e7659704e62314d494e4c58306e5a466b766c48692f6c57657554795056664c516c7964437964616f52445130436b626278426d723664433650322f674a37453664342b4849324e384639552f516e57745a483470367265442b53613835554262564a35526b5131664a743275544d425a6373342f586e3553746e65725550316a346c38364271465054355731623939633546727a2b646549617143766a3830384531456b492f77796b62554e304a574d3556704f61733279395a59337374524e3737317a4e6e522b6a352b77574c4f4d5434534846666d6d636f75545361474e387257396f616a4f31376573704a2b6f756446464e4553652f36795778697630487873583962322f4a7871475466314161552b5635364e58557435504f55754f664d796e4d704e46424c6b6d714c4d4735704d4c6e31556e485150656e53377135796a6d44764a70334a2f6f494c357a354663325669637931427179776e4b31796b6432636c63312b4b78694b362b4554567a2f77434d39447071506a452b3979514579614c512f6f4b3258356a693776616b6161354d58524e353532706e30323056665468415934714b5a6c6143782b4e7a3971787a2f77424d664e33365a2f4541546d78744437597448644961662b597865555a3459486a586c6e54666a58506a6f6d67335a4c4330436e4f476973726d5661416652686176555833717845696b46795a30674144547a2b7032376354626f493942652b49764a766f394f754f454f536a464a4e39595a4b4b41304a34324d55356a4756527354714d4d554d6534316d446c4d42497552494d39767977496a42354e42713738754f7564756351636830587a36573758426e7674696644706c5648524e354253544e4b6362733845577a6930546e42696844687967744c623857664d574b6a4133717370744f504a45544d3633585068566a4d32794e6c36636b52397573736d485a4f5339423355306f656b772f696c4a7237536c7448757245784e73326a714b743951636e48436b744e3268342f497744503333794f544e51476a354a58497236773635547437645032665171412b554d616b584a443566686145687833724d7a316761776572612f35595a4b4f3135362f4a73444859695041565055694450697379584c466572516361314d2f54485a396a654a4d434374777a7444354b5336647870645a3466306d2f62444630594b36494447366c45796337506f2f514d4e4255366337766c4a50386747744d766b3669657638416a52634838644762556870377a79426e744c5945372f6b5a5a35746a4f64597363673550303371335a366237365070736e6e695a59786362575038416b3442424d31707a4b467a483276796666376971664c64616f3943666b7561764537797547456d6c336d73522b7a52572b55784f2f77416759663079464c6d6b465a64465247496d4b5a326d6272784552474945435654546f564e793570366a724e6b634f556a5637626c754a634b72506b57795a412f486f652b50326f2b55334e6437557042644e49633551365168623435714a79482f414d70664e6e736b5771746638726f5444527279785456493130624f666e584e545a63654b354949366c714c50694e514a634649444d304c6c385a7776424e4477334c794a666732504a5130425a796d745363686f79354e48736b58335573353058526d776275755a2b672b4f6a4b6177515346434f663153317069593463425139444d544a73702f6a4b4f4b796c3146794856716c304b6462684f36564a4d312f744437714a2b7071754f686a484a49772b59304f6341552b793478794e535333315539465878745638312f6d654e6e566a56374e6a44586a7a464c567061756e64556d564f4f745136697a5369587055694f3233687542597a385846756b2f4965754c7736466159766c3669326c565563767836582f4146716f4c2b42505577533550625a37536366746f6178774d424a6e536b2f6d34424f644e77437770542b6f3065765778726d30314d704f6f33624c6f4d766c663257514e36676c475468456d6531696e4f564d37336e384172366c69674c653172754c352b6d4f4c32642b553436576a4962754a4c6f3836427a2f4144664e566f45736564702b596a3754377a647a3674537a423041636c354c517a505838647973377448657a693253535a353437744a726f6d4d5536695a6e2b746a6d4a2f77446177314a4e4a4766764d4662576b70755762644c6b3765562f4131452f55755534757951756647596e6d385a4b6d58334c45513658576751454854562b6b6b344978704833736152526d2f70734c455579637047586f484962466c39494c394668664e567a35496150614c4f5366352b7833754658442f6f464a6b337a4d71636c4650796b4572416d67706e585866484c536c4a53387a474c6c62786938316355346f47663970474d7a4e7074614354424a7170754847656a4776364e797449562b2b4e762b344d31596d357679695865456b4c425857774b536f42682b7869667248796a684173504b4a3838676f746d684d4558397272694d5a2f6e5279656358386f7663342b66594a43364b5134616c4f4d546f532f3250467873424d64484d4652546f65444c33465a6e73566b694454446a52537851324843736e3361484852723630515637316758777634372f41492b63463641623145724b4b626451366e385833727950362b6c504250636735382b574a4a636f6a346675616854474d4d4f53304e535433414a6d44767558452f767a3061556e483370653768785471354d686c34564831444e454b7669595279706352463078372f67346a423332543977492f5234314a687951307777556d5331646b34356355616f614f4d7143706a506b703936782b564c3265786e42346268506e584762516155346a61322f59706b6d4e73504c71497a2b724b2b6c73527a69367951624a556930726672706858377538434530774a3444784d4259594b58654f494d6148396e6e35424b5a324145536e396a6d716c4a4b4f744679566d3668774a6c734e6142617377582f414b7547522b774f68444c2f41412b4c6c6143476969594f41764c715a464e7957695835395a4d536f754e716433364e445a2b352f654b367330436e4e5330486e77774b594132316b58745a6c6b2f484f624f59543330746d506e365053726979324a594750317a476c532b684c4f4c45656d527063366635514a72557142332f77434e6e42477557424c394f6a537a77305a4a702b772b37742f4e476454576a6e364f7733695764306f66744166615033377338793753466a366a4d4958704b3952733034755958692b64573573314442647632553569474a4e716772634c365839535769776b5a7875464c45677a336534554d2b4d7a5547476c38456a6c42616c4d4554536f7264546d496d2f6a3352575238366970546152366161703832583758462f744b67556e6c41632f7a4c73344d4e4350703568574f576e6a6147385377374b55636a63524a2b6449576e4c56776333576f30686f55457a38346d70707057626d6d3666332f414e41505a49715458726a744248527536595661453268547730484c31645132767576647757444f6e556c34735a31637334755a696e444d46463362516b717243554b2f34714f4b4b695a546d4934417a7556334e37466d374e466c4666656e79536472724f4f35557365417030417a572b77586e5977426757384e6c437864796d346f4731786142766256665262334b576d4e7330764d316b2f4c452f774c464d4c67706638413538656f467a6e3834413344536e694d75304b51536a5a4a30366878565756524479622b514c7071534163572b6a57637833466636577146646c4d3351446e546c42453570326e6e4247306f4c624864325461355a57466f3271507833506b304d3359573572614a6d615241736142366f78556e7169554269504f41787a68626d76526c7a3947374e47652f5371717273525854473147727a4d756a6130783533676f614b33484e52336e51476e6c4176423379657850486a346a37733872664f2b54516c4b4f554972526d6253366931444857307779474762706e7341735748342f506362317969626d7a36546b39417a6e483968486444734d552f6444466e505368767363673946786375745342305332583645756e70546d3751456b334f71613176587043524c5358634d383647756d4d5a6a5051426e64766863317931674c737569704c334261746466632f4f7247417a4a526c7a73665656436c332b393631715535415142543133782f3141625a6361316e4654454749686c5957574a2f6a496e7a7570696a355147336d343762624b5633537a35302f794b6335344d2b4f78697a5343752f5156612f616b534b766c3035374f33523542642b3266783071524a657169624e304a74426a2f714238672f476c494c686f512f6842377744326e7850734241553143324b5078524e6e53704a534b5354386d7671727a4b67646b44716a35325a61576348575a524851635377516e33726d543748437568524b427668784d3770356b384e6f5a58446254586f7935764a56424c6151564e6b43536d326f65614572415872633730516d614c715779543265317230464e733535756f6c557a62554e704b336a4e47504c474a4a64304c454f79426c6b306f57535674617a596d37354978516a383463584b626e3973684d765a772b456343422b5230374752544e6c77346c49567a4a546f35324b6d524b74465037314a314b5a7a557a726b736e6c5a4e6463416935665164536d5a4b4567564365553270326f48467a386b76787038312f4a6e386f537a2f453539586633452b4b3439664e4a3652725372782b4f3735493747306330724831516a76784f69663841595962444147384d36374f6451485670366b61644a794e43765076536e66384152727a6366452f4a705a592f4c633156544c4a627166353774565979726c6e59415866496478386c6c5431724971364647564b54343431667159394e30576a4d646b565550697743396d6a547452326330544469792f645655737567374f7a36585853743551736454322f475842374f4a48515946513051554e7636303935354162696f33436f63752f4b7a316c736970696669526a544e596c622f414b333133632b3751624e59374674357963757244354b61424a58374432663074336266742f774c632f682f484d4b575a7061724e784d386447666f6f72543966786e4e73644a552b4e563876783934754f69504c7a656755707459782f7755416869765971616e47302b4d67315172416f6a357a52612f42386a71636572596d6c3262454c4a75786978374e716932746633704a3536716e667367594874706e61667a483750624848486b48536f2f48735772536e38662f6a365754354f4566386e4c48627154445a556965334e4b7334467664386c544a566c776a3654654f53625134737549352f544d7a316e49505a656e34544779713668564651354f52575733426d353278755135534f466e30325459394f58475579636b78646f45686367417a374761633839486661397334544d4c2f4871416e3236707476302b68704f4e3075707651612b6646622f4d5277727a386b62644844392f336557596f6e336e794251376f4a5448396b75716d4f4f4f4d64715273623662654f2b6f766e7375375a364e2b68336d5071546e384d704b74306f7a5667523775564f3634347a703174684f66514a7837432b6f5277327036366b41556676536b7a7261617832726252734235542b4c6e35552b4a2b4c6276717a356c364a35586a7542344c6a7673325232764c59794c6d584a342f63646b48496855584b4d63614966664f444643433662414a4542716433744f63616d6c4d3759743267772f483654662f4958315678664466522f523856384d767a59342f4c74547a4431457152754c546d4b7a7031457678727832526e4d32643347584f5a77654d704f646a676f6e64516f4f756a5878537562534f72502f7741772f7743556b47547a59386a2f414368384c772f47672f6a44766469594d7473474e6777566535655648665231772f632b46615353316b7a456a327a36684970706f6e7054686e5469334c7034774e58382f774246767941396566576265386138502f4a7264332f417645706365377a5431477834594f5a61644c6e49654e794d45426d364a6555446b785748387470557a716178796d43306c2f45712b366c4b784d36664d4c45384a394666773148797250384154492f7941395466502f55763737556c75616e6e4e46326e7a545454444e56506e46557a76526f6f594d6c4444466676396763644f2b64483655714c573163623974613148377933386276582f48387a3863394438483134386976394f664d5846727a65586a38532f4f734f4878707361744643484e5951462b764871683470682b2b743956507a4f6f2f3152484d72656b31393546656167575a74656b666f623672374834742f6a582b4d52657548717269654f4f3878395637664b64334e6f76773472724a784c61386b386a38373144626464624b75566b55344f643176386b396e654a4179487359746576764e545532312b45566636392b6a486d56506e2f702f3677462b4f6e68486f333435342f746550793765446755356d765a35547031374c454c577a507a6f356f30726f5038416a33646f6d6f347a6c4d63344a55616a42314636576a46712b3833446f5436366556312b4e68343873767945777651374d727a2b56767a726645737a7962623275394e6e7961656570327878734f6571722b4c4e3775497056304d3133374f6a375a694850534d2f75743379484633307639562f5748612f4a724b6d7a76582f414d7238673861733834796f395674745350477648505632454e76327330394d415a4f2b6964454968306f554b4d556e663732755647384953363572585a3263666f4c542f75753165533666725a36622b4e5a56336b632f6954635739656e4e427154354f4c706654727966696b33704271345032484f73782b4c6e6430424d49314f70525a3143707636703750455253307a326876442b543335472b4c2f6a3536472b69506d666b2f6f6c682b7173666d4750693432524755325a4e6b355674574271304b557475303162345a77686c30466b784d7867533345415165357956486c70306d39375246397651566a2b66486e766a5850533738624e716e5277385933656f2f706e706147546d585a375a6f306c727732797a33516130736e38664b717157476e6c56505a50623959454e4e4e42416b3736555476314a7877356873443675666b463442547a464c787a383076412f534a55475a45375a356d4b77504b6c333553675a784e4c5074543847504e5775724f414351596637365a442f7742667556373836316e7630375848507a304d2f4c443859767876395650796832664d66576e62322f472f4f752b4a5759486c6d6a6c61616444796259686c47536a617a344a307a386c6e5a734c7365624f4d4e526c476e324478524b2b66652b6e71616c645062586855513731492f504830362f4a7238612f4b2f412f502f45764d6c2b512b516c657a786257385330613563647a646f7479627878326e546c7545364d3947656c644e7943415a6c6c326a34515a4f7041496d756c4f6e664e527a546d31376f594e444d33633356386d764a474c50666c6543354f6c71364531586a76526a646679615444617578666143577a716563363533484e705552423148533332784535694f494262663544535a7341544f2f77444b4d627a555963434354786e5354666b364f387662794e4230302f7a70544c2f75664f714f76675576416d756d2b46514766587153696e58384974507854385a507a6839524b6f394478543861664c7578613532664c72655161654c6a7877592b684b544441383430393066345a397766504d397343754a7030754e346c7378683138547161556464543743635a503448663341765765767979587833513945765461373037313450483962787679667a3176476f734f5975486e4a4c7866465971696632453578496f6e634578416c637a754654537846666536464d62743139776a4872762f62782f4b6277544a3864563669666c4e36427038783869386f38623858673849674c795a327238653733507a36626256537a692b41525a4c714d447175665755752f33682f316973436d6161326e505a30353443762f4146652f747a2b642b6d50356f2f6a742b496c76724a366e6565656e4872426d48722b57656f3256346f6a746e682f38624c59366566352f486c6f686e6e5a6d7735615a5362514842615a4f6433334f43526471363054705776746974716a595430312f74722b67642f3841636f395a667859387a723951665566305139502f41455a385a3953387a47386d38746c787462766d3957387969584c314c4d636c614e32442f45306646304f6d50325654575441594c7063464e4c61392f7744447871527932746261435035772f6a582b4c2f6f6436462b53302b496632377476775355664e66482f41412f433959665550596e326d585331572f424c6f344f5a702b5158464f6b6b3569526d4c32517a70742b7647704b756b6632713656395339347a72627679314861446e70484a3466503650654e656c6e34316567682b444e7a383666316232664a7648734246766a47446b596b2b6c48566959306e6a73585035634e4c51575a653655426966386a654a396a6c476650756d643032314a335430484b6e3059394866514c7a442b373336682b582b684f6f4d506f7a36542b6d73486e586e732f673561386670653331446731696473535a396b51484a5a5254485a444c5575566b332b7346634a4a4854375233746138657a30692f627430385279373962665737622f41434a39637656547a58796279572f796a4132665074716a3077386562736b586a4869434a4b467a354632524e4f396973326f632f446a724c724a7576454d727632424e6648526c305672464b3169502b34564a3562516877546b7a52304b396d2f4e517a6930496b4f4b4c596d52536531436433386c4f47705a377457576a6e2b4d774c636651345845304f54584e4f3141376c663261746f644c305338346b586d444d4c764d3443735771723537656c6d61465475584f4435426574684f6c53785361516d366f6e4e636d512f746d506558326d4d58694948516a647253377a4f6c41707a6b5067417554664a41726c394b364c76494f35695a5a5865376d6b786d6b6d4d34766e6b635a2b7779396b626e676e75556469337a2f73504f4e2f38414b4d4470702f4650426b716c6f696971387277616c584b486f736f4f62507544736d674f7656376e5564656e542b6e4b2b59324744766c4851443330536337505975334e7048694353535637574e516b345634365334455a5352683876567a7a2f5051354b626956776b386452523368674458442f6736635063344848366e342f58654131424b2b3356595561564c63585550584d467771636b766438714462305347564c76315a777563596b75443335574151394832542b37396549796d6574764f3354564d617066655673703656786b6735467a714a6352584b446e66327778396f427a326941474a6676684c6e366a3846766f507079712b315748317045735378796c49497a52527837564d5a50455444654b6d64534e532f6c6d3577486e394d4253352f2b66384157676470556b324d73512b682f52364579434b696970747031506c6e536c43316b733063593461666159437635682f2b673433657761634f505a44645139444f67494b446a56336c433342516c4b4357497470536a707564563732554d2b46683855704141487a4438674878724b48332f656576414c762b4f6561617765726b625a796555477070416a6d355170763141375a3966716b357677696c70634543397055716277576d5a6c2f54386e332b34734c774b436c67644a75636d722b4d354e5778536e7468523067575346495141726e664c563138354c5733397147666743667a45622f6b4f6c75732f4d546e5370363046446a426d543332543856545755773064337354763038334a74716b6d2b495a5a7a712b307777547a2f7555527a63636e3575685032412f30644f5a4766512b48374e46464b394f6d377358302b3634366b3064457433363475656e74587a46394e7a656b695971514e4a4c554b2f5a384161316146736f3864477877764874717441584d61324e7a6d6d745a6d50556b37764d2b67766a6e45753934613238534c6c414971367a756c61326966414e71464d35796961526145476241516a6c44343665492b75306e4848396e345335596b716c7a6a2b68595877736d3935385574696572763363324176305743782f476f374d6d48355a617a71366f70596b553847426e654a2f336c4f4c6b70486764564f346939366d722f66363670394f3335592f554f784b6361494a4b73394178505a58377144365371454d544e4f793637727132566d4b785951304d412f6c5762413453666b4d656965673279394e38304b49314b467730707a6831396d6e744f655a5a523671325a36706f61315645626e546a4b373558705878763258615471424c344f74355a7a676a7536336b782b53387a49746254717a6a72303436615347764a5a5a6973314d6e514679317779726250744e476d706e79644f663255786a784b516344706869754d526a6f41772b426551656f657166676e684f534f68576968727533644434452f554366507a7862646f7a616e74735945643473365a4c59665778326464796c59646e536d596a6a4976447a5838492f4c6643764471744f6a6a7366535a5a58626b2f79336138326e633038616157797a4c6863712b666773692f6a5a326b617a50356750355a7950346a63757358695a4771543036656275767771426c6c6f545a544939447369563263782b6137713570644b6d78632f7a4d476a4e7147564c2f3258324a68744869364f64352f5677486d3143593954644c3433564b5974756a4a4f7146543746534d686b714379615969617635463345302b5571372f33672b4e72716a4467776844504c714679364668752f576761702b6866563746364a7258636271457a4c30314d366f614147694e714f63346d59552f362b646f34416631616e616756316f5343526b30654f2b78776d734f344b2b616e65425259356f7430474b5a3130612b7a7550336e332f6b69506f7344686a3065615674752b63427a6d364e2b4a717932595437344e7248636a536c717a61625957533278567a33796b445937466e4c55446b796e316f4d3537572b37344337774644784d5a6a6a314870452f46722b375a3439366c65522b50654765722f69442f4766552f77416e644e675a586e506a4f6b69547837513172572f774f6462534e544748342f6343786a5479726e32537344564a6449734a726177344e5432616178453174757255614e66336a594c596679336658585a6261706e67666a30387a5461394939687a4f4c544b43486153554e71617756353979524e4c466a797964303376345a474733737550647845393435576648317a6834394e58377170435637535a4a497038306a506b71702b393769426a675355715458777659514f2f2f5149657a72434c4743645635766e3637744d48575a37334e6f54504d4c35794c6e506b36785861707a6e6f536f546f5a2b2f6637666d416a492f5944316c546e31762b6346636b6e5948594b50764936775a5157616c50655571577245684757673264392f413478332b2f6a4246527241644e3172496e435a664354572f433352716633343235346952424d6964662b77644364777242584f734c76796e38662f37503941763174504758456c6e7a57316766492f684d6d416f317970365a436271692b6156667a61485250396c3852356f4d4c67653046637a2f41476672496445664a71576c31335a314a36535148394a716f3974455a5a2f7a314c4f37762f5453346b2f415066384134526d612b7243674450384172514d77366a6b376d7a745262316246566e4f596f644f684e3554706f736f34367062435839646b6f4e62314367496e657836766a41515143784c2b774e564b365571372b682f58485373586373597946663142453247446e64473276357573396b346b61434e6f4833674c4439505a6f70746b3769744f4f69412f334f317459397235545a7a35704c6b3272577330304a4530723934752b52535a76305852534a6e2f41466e2f41422f54314139466e39734c2b3650366836766e486958343565745359504a35504e7868385a384239534b4a327965577865587343376e692b486f576f6e486d367651304b4d2b59444c67765a54596c627148482f77433769312f5a34694e38634e76776a7535366d5a75376b535561536a386e72556e4f33507534636d466647323638555a73632f7741794b4e4c704c2b3049732b51366338366156516675784b66303734654f6d4a6d6541717166317038747a744b6f7053652f4a634e6972526a796c61457155537735723838366d36717a7046305774554c49786c55516d434a317063426c53495832562b516e3369506b5165536e6e6432503547426e315a2f486530315558575a616f6c2f784e6559534b47536d5364527550644f313473396943704277653846413370784d52574a6d49784d44626a3069784b5047312b356b633946784c59306b52317052446f7a72357056765750517a654e6e4a5655596b53476659636658434c666c50764c76367a6d637a6b535431572f464c306439596476766d486b666a384f48366b4d79315a3950716836564d6e385638326c5934766a4c49304e334a764837576168412f375a62506b6c4b695958746e6437456e2f5556314c56345232667732486e462f4b442b346e36312f32392f796c38332f4142313364436a316f384f38535a673359506d4f2f537647395570634461685459634632706a79726e6f325064725546567a34662b385077754c34684d67583236656a58573036336a6c6e2f4147682f366966337850787778504635652b492b4d2b72586b6e6c4f6c6a7448527a5a38444a384f7a6c366444484e43477a647438674e6b69554c2b722b7a6a677647756e37492b79525244513158325739706e733446472b506633367642664c664a336e363565684871515870334434382b324441385a395670664b504b664f765070627330637a5038414f66497649636e466d7a6642585a624e4e746e467861647a6e6774626c32636362357232396b6d49356252752b51745431592f76596668562b534870684c36652b572b6a587137364f62474a7335666c5069477268782b4b2b58594750354c3250663841483970647573727936613950693975447151716f6e2f6a62446163414d3443365156522f564b2b793674625a72657468796b336d576570766b4c677966497648392b4a756a517278767371644654583541323261456a4749524b486449656b36646e37704837687270374e556d6a356e554230384b5150727645645449386a6f3859326462533857747430714551717852642f39306a5666636f626462706a6f477a5532754a6358584346564467354d4255546a545837763654626c6d30434b59337137366f7858302b49352f6b31666c486a556e4e47634d336d624e6e5535624e4a51745232783262522f394f632b52792f724b3533767370624f4e725a31496f2f707472344358366e3544363368713572394c417831566536702b5a58566b4d633357506a786c744e566653584d7a78372b55307276726d7164587a6577696153766f4a744f5064783354784548762f4a72314b387158664434374a693565597372332f613232706f304b4a39324b72697333594e34667279436345374644652f763750754f395053366c50586d36597058764641552b646265356f695775326174523653527373473373714b33683066354f573678532f726b5453756330566b624b674d2f383269705247323052694f45634150395a7466776d58656c796643564f6c546879784475616c2f4a716d6165794a544c2b3836536f5668324e773966386676443372563333474c756839696d61566d305a747746474e6d52524c396a6e305970466839675a654b62564f7436334c7a6e777a304a2b6637784e5379656a336435336f6b3869352f6c787a6c612f48395031436a30735441384a6c3038427a4f77745439656358727134424b544b79615176325458444c2f796642454650636751466e4f433833786654395259506a705450354c4670695a3937616433666a7a3455564b7a31546b686c4b33564f455a324d73686e44362f364233796d426758365a32567555347a4f4f6758556958562b2f6130686837655a72306133694f584438513079444e776b3346536b556c5259735351514b634255385954765a374a6863617a345345536a42487359314b4d2f32726d4e476f797365386f615a73453655706153654f304f756c635a554f5878792b75454b2b6334677943424b745675594d6275466f564d6352434e47525833584c522b664f535232794f597355443775457977542f384168456c71486b75763456306c2f5151326957716d334f566a71726f486d6a6d706c5743724b2b39645663755935677947776b615a32433471774869575541756e71666e373775664e50667a442b6a662b496d484e4636642b6e325975423663726e682b426a30516a6f612b62613658782f77415a7979784c75595236514c47717249576d5069482f414254566a6d685051507941596e354770504e6165386139663344664b384b663078737962764d63374331744c7556446e2b52664e61543036473954586a30684c715361433346487054797938374f6265337a4f4f6a6b376b67435675746f524f374f334130737a2f52764638687a4a2f542f797277436a7933456a79523045356534724b504f30637770385848767a577671597750754b7a535a4b6e6f756f6f377a4c5033554d6a536372646438316e684f30616965737639755438526655485133744b4477375a394e744f455a434b377858573238584f6d356f6167315332374762737832795a786143554d4b5646426d61317a4d6e2f7743614d35303536563174537678626f486e5a395650444f656c766e586b2f70332f4a4835484634316f486a73324f78685049312b5a314c5a475930326b5853704c75617357746e3471732f6c2f52383737766359646c4f614e32646f36766632665078713848396136504b664f764d66484a6469584a756b69783876794764675a546935597574746a5074314b6e474b41596442717957322b3150616144576c50365766635061627a546c7150586e69656d50677667324c67356e6a6542346a436a522b6f6e71736a7871565439626b412f7a636c79614e5678315a342f396971554b5375396a46524a7043697862754b6b38365a6d30356b5739356836615a2f6c6668582f41496e715a506a2b6e4855456e4a38484d7a2f465a4a4e5a6d315843337273762f77416963723675482f4d446d2b776b41792f37366144373078364d4d385250484d546e41382b6635732f323773656c6d3573654f59736b2f4d64745474424e5330303638417331645461726b77373943554f4f397a7032546355716a67495a6c55567253774f685246316157744d634a486c7a39626654585a394a504f4c7343377833547a5a6d716d766a536d442b4467643970704e557548376335484b51324534567253344b666568364f4e2b7a796e7275366c733833584144594f30476c56306162594571796c4a7172486c576d333351783273475236794d7179717a346973753435697a457876746151504432304e2f6f472b355a686a7a65697a6b75396f506554394f726c36766a2b7939334631367031726735505579636c6d70614341314f3934665351732f384a3439524a50537957337862496b6f48516c626a6554687969696e4e30784a53796e66596f70646d75504e61364f6f6f32554277773671694e564b2f6a6153574f4d70744f5a6e7947335069506c2b68395a4f566e58626b4d6c783637717531586f7261574a7158356f6c4e72725952457550683753556c5031794b3164673969556b3476716a6e4e612f49644c5077703858353633666d48366159766c4c6164507858784361627a773947444e3170632f794b7143646b66683266546b724b6f3548564c6f2b327873692b752b5947304d713972502b6e7a6173374e47302f69487233394e644a4c59637276747a5a3458567a775a7a394a4c4a7162417a46697a4a3136727857532f6164302f784b556144346e6a6a43696c77726f4a506e33365238787478343079725a37617a6569433764625230594f577832386f3470644d3530356d644a5a4f59383970574f2f5275364e50417a5459376f78696651792b516638596638686e5266794b6c384243796b58474e3867313279327650713072706e46466b36667132664b4443417735564f48372b7378526941336d6a695a544a3772394836706f686f7a75417978616e5979546e6a4450715a52386e364b6a375536655036635a706e482f636362775a7833394258666d586b474149352b646e66506c6b71336a6f56764b78442f6d554c4f3438616149366a4e4b3539526453574f65336e496a43535946412f7744774338566e4f36656b4468722f414864665347443154394836304e43316c78595a61624c536b6969766f307378746e654978345a584f4a6950346b704f6e3279657850536372744d6875374e4750586f573232784138426c2b552f503264504b316444676479644f2b4e315263744a636a4d2b6f777230315778724a374255376a6c385833324833727748764f3939344c39616263764c7777474e585670436775776372354f4b32734f6c546e3957316637516d4e6c784d59307168686f4552576f784e52676b4b415745786833514f4b656b69662f71642b713266374b7071474d426c726b514d36497248344a51566c316637714349327239376d6d6679414c75736165663866303951477752547557786a786d6d4237465533384c516b51665855304d35384c4f575a2f446e5a3864686363584f4343412b55774367316e49546635444e35705a78527a7635317a4b6c3056465472635a51504b32724471536b5377484d487061527336315a4e372b35685348666d5964447441366178787234596e31736c71454750325249452f493776777a31794374587855554375706e73494566343979682f61316d6b7a4c6e43453941794f5150466d346f325a46632f77416b334a744543714e59486d646b6c65624846384c4865305563553158386237782f662b7a3336647679774756444f6c7a6a567374716d4b303253356e5a6e6e4a30426451685066624252314450324c69583745754432684e77425a3750395150342f703667626b66676676326549666b76344e32526b6466475738526e7354525648565637333536756f7932386a636d716a356c724259644767666441507a423946644266316c7163644f3034347a4939794870344932654f343738464f42382b6a34664c51374c7a4b4d536445776170727179696a526e6f797830416c38677a3838584c524c563050706b59703754613659764b746e647a447a632f3357512b544c733059506a376d7a65517a5a63765258646e366d6a61687431366d3673656735762b365a6470653554545465506277704763413449743774447a3964427752646556544642562b7a426665417a704b446f4a46725066384c47697a32457a69535a7a68455166342f34653068506e74365a724d64514b72754a557968496d4d57763273647a35675770667a316b4c4c324e4268674a39597a76772b34766b49674c324758374966367637767a416d3258764f5771466f696853467237523136326457723752666437304249577357316f304e4d4244682f7234682b50682f356c616e5a67577035483650656f586a6e70643448367a306f6537784831453174764577644a4d6c435a312b5159335663376c4733676a37534d6d4631426f4c33474d33376149434469484f4c556d39717a38506d4e3776783377664376547655394839443141526f2b542b696e6d5336672f4a484d782f496b354f79542f455a74545748787a7837617a3068546d78694e32536337772f374864644c515652326345397479314a6d32374861723046742b46366d746d4d386f395066532b4c797a30462f426a316f395a744f4c31523957504e6644683276496350306b3876646d305a4f4835423548446d39352f3546337876466f4b4c367252393674674263346b56304f6f72626a7a5835746173634b2b66722b346750634176492f79552f77446d697a4a4e6e3875616e6547356e70662b4d766e477835486d4c773837306e7a5854346d5075642f695a3750692b6e686a35467a71442b7536536e34367a725437532b57633470752f793838302f4d56546c2b71666f7636592b6a486e666f4a64344f2b503178543671584435742b527a6d7431506c3844776c335a395068434d773748554a546f61663156716e34505072426a7063523038733632653232317256764673313238494579395154787653767a76527866786a336645764d505476386c7654467638414b656c78374879342f69657253545a4f654d323935524b786e714a69754665684a30474b39686736426b3476692b7432497a614d366e4c62547431396643496f724e3868383838566c3050526a302b302f527a794c38612f5438322f6b7674655165597655486c516e73532f775a31654f614e693336413157664439684e516d502b376847666373522b4b65574a3572627665646b546631456e384a3350556a77503149394476434c50502f414d662f414144303539507337314671474c65753848394a2f4e2f50504745703868656d2f70507a7375354f78585238417558534276675544674a566676384136694e3052614c3232366c76397731313951664776475534327836666835487162456e676e6b5731736569322f727761504d667a6e307a31746d67662f4950487344755050305757737a3076446f645337326775506a48442f756c76457a786e3858612b593077455a55734b4552354f78346d70787445314433326d5055676c674c4c6f4c465079433770695145796e764449316754423641546d59615a61656b457a554838566e3165724834473971346f2f723942625031397a34666f2f6f304a48322b784c652b2f3369336c62396d523861416b68724b7552724d39454234736d4b68377853666b6b34452f4c2f41493353774e4b4f6a6a445069614134484149666233765854336375426a2f6d4e334a30724e6251597a707871584f31773067736d6c53675358386a46726c4a6677704d75753533332f726f64536253702b373965496555706f374b564c3074366c644947376774366a72616e4439654d416f3477536f6e375247532b45424a39715439342f6f4f435261423479616c63732f4452594968324e4976657168434f4f347a2b51653046577a68317864633735654b466177647a336b6b3273556e71732b472f7742646658334459324d704a316e38667a6c55732f415a31744c435439487630577239382f3841794b6858484f7768412b6e3748673772666161306a2f57675a496e6b4f663841624841346158382b334f7868556d4d51306459464376596b684b6a3547554550783936662b6443766377756b4336382f6c397774395359416a4a626538544a386e754d4b5a757a744d6d574c5651306a49766a713466474e576a70753666734e512f6f7a482b712b383868366a2f784e2f4a6e647750786d38447857327452755a586a6b3875624a432b653877784e43597545686b532f656c79463574546a4d46724249484d4e437a415748705238477270524f7062496e7446474836755a3279666e446366625247734e44787a46627a3561324975576b7444525a325264544e445356445574587878742b4761765666496b6e702b6b615978616e546a417169583050394f38652b65653250507a5232644b61644c4732736c304e5355684c51316454532f6b30696e335437556f6a54777275694377392f476b422f4e2f5673322f4439774f3867394866424f3235434b597648553767737945646f5a666f49304e43736d33426e565951784c62335746766a37466c434d7271306e5470474b666935775268567462777839684d54727177763568744e2f4e53545334787471647965414653616b316465616c4e6a4b4a6538316c6f78367350682f624157665a7353365a6f65392f7a4f466f386843332b7065563461766d4c6d31635834707075742b62784f656e5833344a473674466d6569316642543064796875624778417472706d44742b5577484439496b7542746d635430754f58663532654d596c396b766e2f693874506638336f304a7a474c396c6d4a575049744f534f6657635334546a63347632756541443968753967497055722b756a536e345a6e48722b34353135755a52536c7233547369446768373254705335776a496f4776413832492b6d3664756c5550656d532f5961356b2b77543666745061312b364a434c433931375875374c316847672b68316838516a6f4e5a387979567869526e63455335774b674f4c36422f354a2f77416a39347668322f46366b5954317658786a714b5a304777546f6232724e6b6c6f6f2b7679687330784c2b76316458796956306f754944352b6e456e355069364b76363044355531764a4b2f616f535631705663414b5245317071553736746c726b52394f6f6d3570434a385632595059614f4c2b4e6a2f312f57663750316b664b6a5576716144565971446a6d646f695363527738446a31746943596c72514b522b595a5543396644344965376e536e50336d6567563671766c5155353831486442415354487834447474363049365252504f7a362f742b715966496c342f434b51582f73377779584f352b66386630395147646c4144392f6b2f43353935765663523061327237476c5a6451413859777639685661507459547631502b302f6f2f6a622f41466f475832474b617a34383963776b487a724155685977474f6375476a76544d534f73445a3775642b517665626f2b462f37774e5141714a454c4f636f65424d397a4b63397350554b753662444c696a5776686643356e794f2b76374235384a2f4b3854506c41427a2b732f77423334663841735748344254324b6e3959694b5561576f3253364b307065574f37464432467567634b7555663841582b75782b73373565495a30314a414234594c4a6271327a6e694f35503976442b3337662b58656b337a54314672753859394e6f4b3052654975433254766b666c4874386a58684f304471652f67727a5577334f63637469762f6a484d446764424d5369356462576e5434563751394f33676e3972763841485877694c786436384264793866566d35487079665656704e32394d6c352b4265313776684455314f59395536726b786f397a754838745365724f64586547646538372f41433965764562675948347765687935386e737667766a4a484f7a50302f3841794a2b57362f566a7863705a4e54585539316874596c6d58696a503735705937717a38622b4e76374a6e4866316e613975362f7237672f35702b5058702f625a4e313369386e4d373647594762564e7332364b4d726c566d5974577839356a45316a77325278386c4c76506858536c4c706c55745330526974356a725961452f6e462f62472f476a3130384f5a34707559492b4a2b5134655878506a666b574d6e4c4f337837544f3131554b517571306a70634161566e79742f66654d7439676d34466c78645064744c5876576378334477342f6b782b506e6e7634682b72476e365762326a6f6348784730664b6643664b7159576f7130737565796447657a455230584c712b4231465535636d654c5538393342415073414a2b6e5338616b626f365748642f38582f56366a386c2f7875385833394852584c354a476d5841395174716d655858726e323865544e786f56376b323739697759656953616a3551465157556830566a4f7343715a793674646c385232666848476a2b347a3474742b5065645a6d6e56706e716c7246564b3071737264697a70616c5844633554644461633737784652556e68487a6f50543941704b51364a523944703070724d6365673567482b766d58326a504671444a72466d56526d6f6d4451456e37557843665953566d7375382f61756672332b772f6c4c324c5072426a764459576575615946664b5861415848315a38574461616f6c725072425a2f7744444b79723943436939366b2f4b492f46332f434f376d774766744a4448547952687a326748655356644e36573849534e722b4961494c2f785352564c37336f64396e36647a7677653050366b4b396335337945395967342b4837547a70446d567a67564d537436426d6f48356c3836756a706442662b6641373133584e2b50335233637542394e5570706e374166794a55442b30744c3470336c77316973442b66726959544b506a647866434e58522b794b6e634a50505978336332413568423358317a4d5566454a7057444576465130386c4873736e614845487a4b39776f58373267527244676e2f6a786b772f364b33365238786d54544d5670464c7a2b7a5a4f377665556d756237416a4f4a4532676f7847706f436c665341556355687679642b50396a374275423037535535545a3167784365786676724b454150752b324b6d64427649324d61544c766834527a3857592f6f7661487456386f42495044764a6448777a796e4e387277323072303844526d32772b6b4b443675706245325176354d5648564643535a2b4b7253594e537748744167644d304147733133526952366866536631657639514d66785431486b765a72633273724430504a4661463461424a33477477655349687a3262512f784e44796a4d51594c464f4e476b6c5955464d746f4835313634785476472f6e684f6c6b666352354e32343873354b63372b497839495971397a5176646e4c3045566331354b715735382b685a446e7752315647337674424a393645316b776f796d4f457830452f2f41436a2f41425938472f4e4438667458306738347a677750497375782f6b4869766d38506a39477254347662445536656a537a4b4a4b75645664704d2f6c6a666b5463474b663568492f636d61506e616165704f6c66644863504f482b512f396c62386e7652656a6d3336665275396176447748744a2f78454f566a2b5a524a552f76497666684a33756c72496f546c384f4f756348544d5638427058785270355433553972303763737874734f54666d6e692f6c5869326a584235503435354e346c73794d636432647451507a4c6866533436494b5454576b2f735a3730324c597669694c3569507256494a626b6d65395a69656b6276583141524d59756374746746547a32494e726a654e644456383474516339715746384e7252455254567a2f44324a34416d723466656d3033366259417778474c70706f62485a51533054724a46495478304b6c3979443975684a50374750496c31644472486336452f7641656a376745336238734459434c386666554c413948764150584c55784b4a66544c316633504b2f435046743264733950647666384148753873706976436b57636c7334645244337676502f70414848664a32745037704f70576257703856525a6e347965674548354f2f6b4a365165696d33353369656c732f714e354d475662366b36343055545a476d53784f36544d3532685937467a57777064384461694c37526770512f4651417472652f75365774466432333452376c2f77414266374e486e50344365714737356c36592f6c66354e36782f6a4a35626a4a503142394664624a56343335797a7962444357654866426b6476794c5376556a542b75786c50573245305457554f424a6733793962326d4e614d5730397570342b762f5936384e386e7a464d384e766b3074507836484f2b4e4f7570756272527a4c6d6e68545673647a6f763438706c704d7661426643346937796b31526962515a41485069656631356a68562f666b2f435031442f41444e2f4776782f7962302f677a3966315239454b4c764d737678656451352b353566346a4e6c736a386c566b5a627150676f31755a65624b30516e637138724d666951674e4a6659563165783630615638543262447746636e312f4871787a744a44386a573866645846646a3773562b62504e55336b386f7635797755387a574d6e4a677549684166384159705873377833532f72324f57663841762f514e49526844502f3139672b486c34434436564f577539534a335059425036584f73493670364f666f2b4351686637302f763451396b5733627548304852662b33782f636839572f37666e71482f4143766a4f53506d337048354d726b507154365761546b6a6e627348572f5648795078757a737268772f4a70614354795a7945714833704f66362f6566503841446872614664614a6d6262626644493965586f312f63722f414c665072743474343962346e367a65442b436168614e3677384439583647654a6563596d785a4a725736454f793553577a53347468564a694f6a50472b64564e5047433736786a4f486e7a6f61326e504773322b516d33714436712f69314a4a6b2b61655565754870666b2f517143312f6565592b4f5a737a5a3464476771706f6447533444324c33752f6a54412b507055446e4564356930597145316975706e45566b6564442b37702f636c395076583378444e394376787876636a307a7271505338353032536e4e736556727a394c53474b536d3374796d727755752b5270795552706d6f73675552732b5a31494f37505a3947615733336e6d486e7a7057365958484c31795376556c6a5357587874623072686348567a537536795a6a7146706348464c357a2f647751554146784c5052445661714563632f7641527864725750516638687a76326543497a393679496835523178664d6651436d6876652f70524d452f5a3777556c4f6534697153614b334163684a365a63486a444a6a6a474a51395374695638716c6f506e4644772b4439656b674e7247675665465938682b4c707936733473744358737935523646485651646e6e5445745763344362642b7546395975714a6a2b66496f6e63547a3263396e73722b3739654936486632356637643371312f63473959302b4c2b4970356a2b6b754a546c4f395976555471307835336a6e697576702f716e4e386537524d734b746936704f6b7045695236304b484a45763866684a6d4f7472563061356e746644556630625078713843394f665154306a3851394a50444d534845385a3950634f44467a76483865664a726e68696c464e7562524955736374444b4c644b57364e395644484837302f4d77436353714f654c7157746532365a7a4e68735254356c695a31744774596e48534b77536c71486a724a354e53704d66667246706976704a4c70466a54464e49706a506d706e6d2f2b47626c4970746e476363425864483541655365507451764238472f386938622b44553142386c6f716f6669346256554c356b66506b4c6f35517a46376a79304571696735557a4143334751756176333232782b4f505831484c62387264442b30372b5a6e6b4f5634642b5950696e695752352f34364f37446b4c38683835322f456e2b4c5032636f6b556f784c467a7039745864377839615357726c69535839616a692f736d41793736632b30556a4f6e624652706435682f59752f745265745470693948764d5055727777585635356352343935494f316c637962567a39746a634f67366b4a6268475068726661524c442b5658577844657442484e593971396f72504e74754e556655502f354d623653766e70713947667a727a5a31303577374f644e3574346c6e364d334f3874717a354d2b36374b304538596b4e52726b666635784d6145787a2b3857752f536636306a322b337861493559666e482f596a2f4144522f4337306b3166794332644c307339596652724d57535049664f66534c624b756a78536f627273554f376e6a56476650544f7674556f384f3046746e534a6b756e346179536b756a52397330745732794e3162666d48456b48743435664f4277506b2b5872413741774f56796f2f7743774436446b39334b69466978576b56384a50417046436d39577a704232676e473477584f727233647a794e6d6c3253625565737567497a752b71306a5a7a36396966343867585173424c763050325a2b77675038416f4a58765353326c5272416c3145535a584e4a733946414445776b77714b673152564f495a546f6f6f3450746f5a38764574392f2b33355354685763546b453564504d5a6e7a5033754d68666c6f62584545634759665049444b557332546d634f5a3851792f457841704c396a53436841334b42783075366d4d5450534d69486a4a505169646971464771766c3139433279526a326541616b744342744768385953722b44342b48376d65336f705973472f367a4562627265493269394e667a712f4c763065394d4e443050394f6657587948776e3030426462673850586e59314f626d30564534394451794b745a4a76773671334f465a6e4637445932594f66356d7441747262533035747574586663616b62576876372b6c6271376d706674364468516d3762757437525761784a4b41594e31347036552f5a666142643653576d582f4a657a336d5236784e493654786b43487642504865395643324b366450524277504e56435062495150656b562b356e666353435a30534d766e345447472f6f67713473763033382b302f53547931336d474f724e647435387159357a6f54445972343753556c315663326b6c69753045796862684d784476766a2b6353344a394f6a4f31666552474a456e395650586e315539594b7042387a31667635615635794659714458437451774a46612f6e5849346530554c4a316e5a54372b7935387a6844326366536b3472536c656b3546496739537057396f70453644517736476b30334e517856592b3733766144544a686c6d78676a7636443465552f384130666e447679332b503666715079755476657033562f35695245584f6c7876772f536154666131326752384367696e6e346653555a664566364e62433738505a3456674c2b783365706d70585938672f59496e5a4d756830346455754f644c497949782b5a4b79426764564d7a6f704476733933433738547534416a44523348716f3478383758634a6c4832334a367a6c5154755731565066736b595666473648324c56326351397a693970425277445853334e6a6278774a6636642b71336e6e705674773733692f6c565761314e6f6e634766643756316f584e6e734c4f34575578524c71495a3241667864346673373744494f384433786173576a4530346a76332b4b6638416363772f4d6f386e77337957475048387a696767685a527331795a6d785a314f4c50346d786a7441562f762b50556b754b6239666a58484935715a4a707a45796b343954516d76474f7a493744654665724f5264347a795441303942453175473250646f706f5163475a6f5a7a74614d417356686b6c4f684231326672494e796d4161552b5172767050356c6f636e6d74544e7550634e692f44665632534b6f57366176356568316e6b4331534f7947304b543974627648584a7a6e5477716a324e56746773357a36694258386f66744c43682b5979704e4a6a7078452b6d39522b736e5754744c51513243655736684e31557174566347636f6b4f7a6b764f5575446e56614432516578514a355162756b71572f77433675656567745078333152767959386a4d314c3862564f696d4351346f4c4a724e49637650664f4438792b586842797878554579646a456342515457557774343467416a44576638414f44384b6358387a6642644737474e574436792b6e716c4a38613268334d75492f4c6776706876737964464f614b47704874674a53757370724b46486d704d366e67662f41464e4e50556e546e6a32624468333661666d422b66766f5234373554364a654c2f6b4e366b654b54654639586c4e38473869524c74366544576e4c32737473302f4e7246736243756e514451705a7a35752f5a6665744a4331522f5a5a315730394738373530717a75447a30542f4a62386e66783539573676586a3033395939507944314c3878766d307655492f4e39563231692b7269637561572b65487a5044504e597259314a736c31456374796b6b4d307a686152664355776c46716164367a5361387466396f364965706e393372382b66554c784b37784c7854786a30543948394866796c6864353136637131744462792b5a61766f33494c4c61783039524e79522b70387a784c6766514c6a593079506b63474e665a394b4f4d3574414f6669542f63616739445078736d2f4637316c2f476b50794938516b33766e74386c6435464c436671466c326157657a6d7635584a717a38367a794259706a7262796a6c6a42437843374c50623179657454526d397439645462622f78455a2f4c6e2b344675657548705234332b5048342f666a666b2b68506f373472353934643552354234664466677130764c6350776e65543541486975524e695a646358694d4a515a385954583961327872492f682b4344756439356336656c46626237366d367736672b5266335650784b39587366786154647a767a64394d5a6648736d44493735483663354f37345856485155384c7954312b52714852715844516d78514e44682f5844354463483031336e4e6848732b70576259325734643434592b5152654d46363765755850522f2f77413462364e42706551332b44616671544a55337a6e7953576c704e336457765137503275763472506b414c4b316a5a2b34466439365770467a4f714d37613775313544716a73624758542f77444a382f4655317674687770467a35797a7a32326133455a44664f4e436478537270635a304369346d4c4645376d4c514a70583854472f766838316638412b752f6c2f57426148346f2b72586f2f36786668624c2b44667274353348366265655a736b366644664a744236706348793743737668303843316472376934562f6171467a4f6c74514175634331414a2f4b453478715674585639395375366f7672386666544877332b3246366365737671682b516e35562b416558306570586a75617148784c4843624f78625a4930366976484d377862785369786837576c586e6b6c444a63395157566b61586a784c6c7634756c3754727a57744e4f314e6f61654d6556382f4f4c2b33337a30302f44767a4e337058366765506556594d767148346a6e31616e692b2f675a457538342f496354476e6d755a526d7931516d775a336f6f6437666f424f6968774f6330706d5064613237557275714c4e38742f41667762532f473758386173395a667966385a38617766483262647554357a354a7162777a61336a4f62594d4c6979645848534e6a76357157666e51426f4a4d686e3466755358503345617476655a32785958643662727438642f436630676a4c3163332f516a75543433685956666e48692b437279516f546755784538694d2f516e71694f4b6a513649674b526d53502b4d614255417137796c7638414e747937687a723953507a4339666653483131317333772f31703865395a4d72552f38416d3438627470386939505a4a4364343366544c4c725461614a73644a72644a4475724f6d63754a42484c542f414e72726d79424874476e53394d7a5862314737483530666b452f30433854384c643431364d2b6c766c422b712b4435437a577275686e5853476332574769717245355a6b6e4d756f35645337326758546b4a706d4c674350726a2f414b7930715465625a74624e5257766e48346e4236352f6746344a6e666a353450346e4436756559346669756a4474395a682b4d364d617156707a71485031776d4a6e3661754e4b32725231595578594c4a6d69502b612f3674477273317262376374524566583738615044505154384c7642504961764163547866316e673366546a453951504b7373786f73645654635547353937626f46434c42636c5a54495a375854634c594642334c36613670314e536236746f3363736442646e72442b4c58346d2b6e48692f69336c46766976354d5574386f31387339422f7062712b63622f414a466c362b6a32656a73334d764431432b5a6e4866483767694c704f424b35412b77616b7a68577439535a7875726a387730742f4762772f77414d39665079612f4958305a39432f77416966586a78763076384238503863333051374d75396c656f56577435477a5978504a4d375756743473725a516971794679436838786d30774f6c5a7044356a6472655a70537472317275742f704637366e342f6574322f696558616634782f6e446236376566656e6d687053362f7052366a78654f30343264634d39384e7668476a6f7a542f617839427959366b7065716f5746796b36535a374b5576565466574a7237796d3274766967616c2b6d50356265452b70486a74327436683456766a76716434357556342b3368633170315a6d5a71356d2f715a4f546d552b52777272663555744b56782f72326c517870707a356c4f392f37442b744c6163316e6832594472533952764563722b52753859756256462f4c386f70525266335876666674744b4d514675696b76354377436337716154594b65702b7430586d6171513632576e753669615958725035536347527144366c55466b4e525363386f7852554437616364597a7a67724f635a366d676b53796a6b2f5a546b454c6b75373878685348496d73646e614c486b3955724d7a4a3133447578366d68705654367455324b326c64306d66753536524248596c464b4e69777166513371427170553441453541536c74424c6757426c2f6b727265536a6e314c4a31637837694f307a6355756a557563504b426d53744b726c396f6c6b4c51785a47396c506773556644636b6b394c703132562b5965616e6d666a766b6b2b7454576a6f5a722b353364304f6659674f4b366a69776b647958794c47553667547a525a3253646451665a2b2b456e77302b774f484d5245526942723370616e696755324a6b6f315a75616274445a6f306157364e6b48526b314d315362596b7846554e6d577a69666c497673696d39575a32435a6a314f62375a464362554f4c6762325472507530646c577878325a624f44594b4e506a333771552f5565557577686b75382b464c71624848574443436e7158716142474862784672526a5043424b7332724a2b4f547346657250582f497261434e5876567737314f653461457579342f6b61776346435968596e74696a47684a6b7449547256497056425457376e79506f76696b31596443527a396c73567363613034564e6f553052636e6e686a30756d7963626b3653657449334169664853664f4e53564c69302f503976734535385748583257556552364f706f5432446e69702f6a70555238527a556c736d6d31745035585035696c7a366674515845752b775270615644495a6e4f2f715a3561387665416c5752344c4c5234386a2b523062685853356364336b566273414938326c6d506e73307749466d724c6f4b4736565652714f745572447334636f454a66437a66776a313952467439586a65444e70596e6a2f6a3865614e43394a302f6b56576e6d335a526a59326f3074743265734b6565567055532f4850386e4f706242386c414e4c72573974457a4d5a6e724970547a634a746c6e5736545469544f466564447a4f537a4e726d446d69784d716159483652504850526e6a6b6b686678474a632f77424476594a754b69516e344630423869394c375148733848504d384d59624e6d6b592b54306c7456525a396f3672457552677256744c57546d46374570736d4b6c7179674b6a374b2f786655657672303830357443544d69314e5a4e4f723965564e785553726f31526d746a585543612f755a3754476e7573777041347633546b646e772b39352b784a656650666757706c554b716f6d3747745858305a6b72716f74416d574e5438524d4666326d7373396e3136343947655a666669617672336637597965626668417a4755557779356e5a725933386f5766426f526e54702f6b4d4e7275705575574f56622b457a517146706838422b33324148466d6f7a4c2b67544b6a3658426c59377370412b562f656c384c614573354f5571416131664f3076734630763662305038414d3241594b2b735a734a51504f6446796d6c51374c34784b794f78576e485574744831446e62786c425766756a4e6e44516378504a2b38506b67556948763841382f6341524b6a6a454856383733436665507a2b7a4e73764254477137564e6e6a306c6634725a794f657a327051355031464278516743584d2f6f455a766761694a5a2f4773326b716771366b4f4871767368636f6a4a4e71562b325639465444363057653032417a2f54317a6d4341455a7846434c53524e3373794464624f4e43653352437078516c6e7854737053744d374170716e48732f65682f6838767967436b304c6f41726964574f6631556133796b315437314e706471752f374b6e437a6b39765068446e776b364f7049394c767775642f78384939643743723866302f55664636736b4a4b6d436c72546b6f5363706853383431694333304e524a794a7a31706e345972556e74447555634a6e78474b7573346e2b72426c4d6b71756d327a5751555a4d6f2b4a6241564d76764168573561676d68583165685a37535773314f6377692b736b44585238786973447555697367737671613031396b6654524f6c594d4b44575731314a414d684530662b4b452f774444462f344148744c704d346254644844732b5151354f354d2f4f786a396f53617a55582b7166696a34797170333171577571635a69514b6930696638412f617075314748506c3531774f6b4469674b6f474e6b6b3674443534757a396e72355932583369552f7741733955626c6a794e436572416d752b4955676675365a6f39774e4265497530644552617078697050576d7667797a3238533531715a526a63516643726b32682f6a306d73534849346b392f54506143516161684b504b2b7a503871574d6a465473654750516f537430724864756f667a684f464442354f6e6e75573258397a755451332f624e50786f5a72714173354270436a52727a5a4543314e51695267786366457a5a736b30784451706b363671692b51684f347a63735455347a3969597847633934637a3962786d4f4235707147625364504679546a614946566c4b75795868724a6b7665547253524a35776b7a6658483269625250744466366b41747a52744f31705958613733382b487270634669445838427a7246566a6a6e73694f4d79366a6e4f4c345963636f31473651574a42374170537a4e68625650386b333262472f426f6665567a6d6f4e672f5830453055653261666c61626b2f53575a2f4158515372512b77422f596f4e565941334965636b6863305162586e686d316457314b724e424f6261667673346f4a62466852386a6c70724a357461354c66717a4341752f356f443872514f57724f71494f4f6e71524d326e37656c6f4b4a373046396d506c48413076696c2b4a5a45546632436b705465706a6b6e777a7053424a2b645062542f682f49442b377044624a4d3442642b766a2b732b31553674416770324f7a707a56384e377a393672356a47616a3575752f6f5075314d4754465852582f48326e616f474f61375465537866514f7832715a4a58754d45536c56505a516c6e516b4b69795a4d35734a7a36474136675571335071526d4a6962574e316b3772446956314a38356d7166564e5a446f6a46436c656f7864517365424d2b616c7a7248653248326538316768704d4b696c2f4654767162612f4b47643363724e476357664575544c532b697161663435334f73576242396955386274714a4b7a4c6f6b41495a6c59383672513975377a4d4d50342b74626674353431783955356e416f4545732b62514e6e7a4b706d354f48784a53482f5a39333645772b3633303961526b3946787a313356684f3662374649796662524f78427a7479626c31636f2b526b724b467136696c394877462f326166384173476f49306e525376755031713177645252794b504f6171713171737236757452436962494567626b7258714d6a523333796e2b6e544330593447674a6b414b654b3265757a6861446c644e707843696d76337a7435794a316c53556b44506a7a3670717339637049536b76686f54396a715739363677672b47777174625255502f6a63645641364d737455716752664b796d412b58752f6b6f53576e345473672f38416a473579653036582b7a34586a47457476672b763641786d44576647557670704e6e5634536e36475a5a6f7a5355736852525568337a6f6f59784d5a4a54556448794f2b564e4f323445554e634c6d6e554f69305757577764316b396d7a6e70686c302f72307470547856744866347970454d554a6d5576576253564c6162444a77556b594955664c5879573235375047416438646c6e5254446f6d76536e7468664c4e5a524677716e31684c48506d6133447161564955454f704c6f496a425475456d675061344f4b2b3537496d5a6d6379434178576458564c70626c37497331484656364855496d432b53706a70696c315532335569544a793068704c6e7441614652316638632b456e4241704c3149317145366f35554d564630435a7364796f61624a61733452355239367a6b634644484b735765486d70476369746b396c5562577a2b386e485537536b524d654934792f6c4636752b532b6c2f723333433853386b304d41503841784a7a647655794c434e73475153745a58427a3079664d4f664f78637577536f5a6a562f702b4669756d6e345a4664476e574c566d3038426f4835393530766633397a557433612f4a657072623968756a525a576c744e37716e512f794e444b717771636945574574426941683877453173637452507331325446633949674e2f4731657348726c3669654d656a6e342f7744687a7656667a4c65726d686d636c48523863386553654f71532f533279796f776c687a59302b31646178663257656253536f546b61326a765a6e6257753639747452316e7a663748336b497a2b4e4e3964507a79384e3841387832514577384c38653862796b6a48526f2f48594d67333647354b727942694b4c4a556966316b6b54543579486b776a2f6c682f695978616161573762363365702f3841734e62504e7637622f717a36622b756e70742b4e766876727a366365753278366d553746324472654f4e6c386238683950386365543274322f55764769757437624f666a71616d6b53307a71725033704d5a2f63464b3778723174533935726175333177472f65392b496e39724438474d6e7872502f4c4c5533665762312f32383152576b75377969327871376c725a39617243773668546e3468335a435a675a727462545974503750346b71496b3478716530617648543561695965736639756a38535079462f477a794431763841773631746a302f63474475655234552b487274793848795444686e737372773338386a6a652f506c345462684943664d637755742b4a6b626b2f43364b3632705338563175596259656857683470364166323576475056727866307a3859322f4b4d66774744616f507953474e5364652f4f51734273386933715061544e426336524b72765567416a41533138396956442f576438333174733235516c2b4566723734312f634f394a50504f2b736e6f7034506d50386444547a7530344f555a2b50624952463157656350386a43447374594c374f3446304f63326452386f61614b50595a74616b364e715257776b2f39744c50792f462f527a316638665262582f347a346a367665562b4a592b73706c4f6b2b62497a766f7a687277364649383570526844613476717a5367705359414f6d4d6144703454326a6a61732f6c476a76354837587050752b6d2f71566e656e763551666c6a367a3730756856645a683657527239394c776d6d4c514f3665354d33684d79433862707a374157494d70614967514376336e314d2f6461526264584f6e57762f414a446e783548546b552b4e4c767a776e7a395a41757762504b324a6f7a4a3738354d7055365148316a425871655038464c426e53796235442b45416f487065384a64593764766c2f59647a50557176352f375a436d564f64725675384138573061354f7a767a3366556f586d763841752f784b4b4b6d56546a445256316f45357a4b3148795a77483874494879312f2f71492b5170582b33623637656c33706434666236516570466b50684c504a555934526139466a343832792f7966482b35644c783167707377324e7a616e45672f7238547759716574624a3851414e39617472544e7138776d336a6e3469666a3536573662504f76507679677a504c765433786e5344794c4938587a4b66476f654a583868614f5a33633055304e73334844523266394f68624a797a75624d4a63634361456a576453397545616532777233314d2f4e4c314b3266586a773331563841384d386e7a6653503032512f50572f5548786947727a374638674747625574696b7631766a793874444579746d7153394c612b62464b574b57337271593756307178546261324c5746704f2f4b7a384c2f4143627a4451395939547858314838583957473565566b6272734b2f794c782f59526a70594b494a4e6e756179555378574d63544f63465248596b7a2b4b617458776b646664613052746a6274414c386c5057767a547a76786a78767a43615078723038394c2f41764b2f47647646386132764961384479333147766c747334714a4d677a7247496b66426b4d6b536c7050705937346c7458396b456a4f6e544534375672436f2f4e2f376f506e327a506133782f7744476278427564697373546a656265556c3544354a6e59564d456f76754c53624e34362f6d446e384b4d67545277514f77484b4a515453385652644d614552327451617a75387439667657547a7a7950317a394c66547a7a58794c3143797230623175783448343344443468346b72476c793830354577364e676330727534726d4350554b742b3578792f686e636349646776696c5932577479696f665558315a3150573378666638415576314668395850557a79724b7a71634459383338613852526b5958707073716a5a7071785761654e51676f795a6f614537367a5a325761696943555a686368794956337258624d316a6258502b34516e314b2f4733386e6b2f694e6b2f6c50366e666b4b392f70682f465137586876704e356e7333655762323479323271584338574b4f75513438316c5664475377774242684763796b314a722b7437353572665439353775756e7a666946716668622b4a2f6f582b542f67766a566e724c2b574f74343136722b565033632f443949734c2f414a386e7a4d3156446d5749795a764b674a756239724a5a6e2f7450364e5151494535752f54544f6330617570656b38756e7966694674666b4a2b4848344f65672f6c4f5a36412b4a65562b7275722b57486d5a5a746667586965733547677a392b53304d542f4d6434574f6d566d444c68442b326730715072466a704435566649784c713665707132694c7a74393158714c74382f3841522f3841416e384545654851666b6e345a35502b545035416563654b6679322f685a754c7a79435441686f6d79386e52315a2f46596149357366786b4c6f3455653469633033574a44693363425970704674625533624c653772555372314e2f44503841482f384149663044776679442f4472453266522f54337a6c4b764d6e5233472f6b736e65597278725454354a686e59504964495a313346396765687a6a512b73376845626554784770656c2f64366e4e6b574c36696132312b435758364565673334672b6933676d333678666b546f652f523959765565545a6c38476964437064642b357562554d74494d7565367867727a676570556967704a557867616c55785847724e723674755776645555462b665034352f6c6c36392b6d336a4871662b516e71742b4e2f703336642b69506b5868486b39304870726b2f5976382b386d6d386d7a354751562b5a655130494a4d6b355472564579517a63316e374e55762f4b7067746f333036576d744b7a613176784464373873562b442b52656e3370696a7a6679483875597351384c5072376a666932476a5a647679324c7830584a386e644467746f5468777773577854544a66656c5477706542624d6d6847576c6d4c57784e655069504f622b4d4a2b6f58683339334c7850307978392f3841494442792b2b6f65787274385039562f4b5333664e4b2f46364d416d4b316650736a54706f2f6c4b75593957616b64425268536342784163302f765032397438543750756e62302b483951512f75453152792f33312f5452336b31352b4e5a4d577236527a5764727371757854742f6b6331474e387a666a44734d41695667644b3771654a2b796e356d4f6d392f736e527a2f673762667a44725a2b5750384163386a3947667a702f486e3050787655443061353647656f71575665723371676b54386a30664762632b52314c68314e384f7367776375333675577462706e47374c4f78786b6f41616d68504e703647375376666262645873774e4e387a2b34352b492f706a2f64692f496e38677166566a6338683944664a6678333859384238663841502f413866794479664938783871385865523159513877736e32667969356444536f6873594954706e782b564c4a504b68633753644855743750576d336d7a75774e666679362f4d54384450576e303938676634526a2f6d6636732b714f7635447a796e776a533953647a7a4c2f77374b304a62522b786f4b38573039542b4b7a38546d6270635768664d776d706a732b4576395a7155692b6c70363054783256724861774c6c372f6532386937366b2b6a666b2b4e36436553654d656b2f70336b4b385339572f447239584c30744c792f4e666c495a6e622b66673561703476462f6f70687136503344412f6535507549706b715858582f4352747445327a61335a476671422f63462f43443034394e66796250384a2f536e7a334239552f796a2b7a6e2b634c666753596e6a474a6f7a592b686e6137792f6c43377a44466b2f742b425764776a497a6f726b4148644572466448567466543937626c3068796878477854517850314b6e323665586a767a456659726c7a6d637235666f523355736670723644684c327a76637462525a396962676b6d73692b4c2b75693364742b332f41416175342f724a3055374d587a54744e3064613752356c444d2b544f6b7644344c5a3544646547626e757145792f6842556d2f69524d6c6645503950642b59394250396d486d6a5036452b70734f62717531677438354b6d424e4f703134484363382f516d663272504c705a2f47664d394856754d3541466f6b6b795342487965316475506b4e2f384166305a6d655a46397168716d687030542f774168646d78554e567a4952506534617444556344474a655576313072446f665336777166616b6a6955654d6469337a2f73504f422f386f393770522f6a50346569484f45306148714c4c577a6a59376e646c7a3777326e5879465274523972304749734f55784547386f5337794738492b4a523761306476736533336b5a2f435045612b516562537864636e6a79627839447773524d61314c576d6d70497a54447a366f2f78743377666f78346650706f563859436c6842366d376c382b675431737075616c4e50574356585a4f61446b4d41713377757a515758445655315a3943557849657235772f624d4e49754c36773171414a72625043514c585943334231466975644371426e32426a61542b70696d4a334f6d58466a796f69637466532f544456375445756d4164415633446b6d41434b4c644832754f4a676343515a6b6d686230757a33307a425150584b46517a7246587449534a52487a33742f3841694f376e50344b2f554e4f2f4e33344f6a557753746244523872304e6657536e4b4b5a447857532b63574c474f4658413972412f554b76684d766a4133614278484b7270783056685335504b41364b67614a3936376f727a36556c545376334c59524c73346637556657456b6541504643677a4235776f75546d7956797533316d444361415348485442795363725173585578595130643654434248792b786f5a524453664842387035383378646e7639514c433950616170714b4a317253396e57662b6e4c4b335158457748396331686c53756f3166347049656f6172326532697a686434704a4a6479742b31496e6b6452566a6346507a71376f57497936394675626c306952747657323236697a6931557a726e7a55743554396c767871356d75345148524a303031444b6e354b6d70586d7435704a7579644f3335714937467475734e566d6a5934596949326a513657456b6f582f414e63466a484f31694f71424e6a67312f6135394f6837726662584e4b546f6c2f5a3935745a7a355062384e55385938577867723933794b377959792f774270394468675465617a58687939345548736b39442f414952766148486772374558484e53396a506a34755a6c66505a58565a396433765551653465474537505a3751492f367546366673794b4b614f6b6c54424554516c6f544e5230324637514152562f7354526364733767377a2f4171515254372b41452f53646e322f4c414d5948436f594c625059444a347236356a6c76676a575768636b7150733164315763427a4a584650376c39454576344573376a424a41344b333755697a623962546d7a7034706c5274765a526574773830342f61784249546e4a326232446f663734364a374b68345073594a414372586d6b48306e5845597a7836434a35354a526d5770454247432b6e4b7569613371426b57773675534c37333342372f7238586455612b48524f414f6d614d784a63594f4f42364276375266704b2f79644f68355471514b54664661774942756e47706b4b4e4f557537477531387a47674d50637132643471364d337855574a30715838542f464a446c396f766a68363966324852582b34643641643853394a6d2b6539783976527a4552493874727950473150696e7a7779724375546f6639536f59384f644443486b37416a4a6444593966353477644f5a7078307235744d53504a7836325a503632714e7869594d6e766b6443397030434b476e4f75765958704d70712b6a6f31416272542b71372f4b7159366558557045366672753664506f527769493842554e2b7a63536b4b54626448426e665865324d6c567959674e6d4b64794555722b3058557a2b316679715a3053506a4436485569535143653159696573697674553761574e3559735243657a724b4b50306a346c764d317559782f666173466a776e5a3439396743444f756134654544512f6471392b33376846683066546d4635556453744341652b56702f64453374576d5547664e487a712f63553776304247424f366e2f3343414477644239517559786f6f435a624a65524c65316c61376c4c34723433447868547a4a5076433759785a39635052412b7039366839684f536b482f6a657133456f794e785168382b4e62466f39342b703570353253324f7435413469425832756b4c445750576b7a2f334c494336492f4a53305a6d49384274352b6276354f594835562b652b442b6559634f6f757650384154334a6838763774456b394d2f4c6d54314d3867454e71466a7635425062474363784c4433665864377154422f4b665a6c706156744b4c353634476e725a724342584f532f71653665626a467545454a374d7454497555562f56534266444b507a50377779397745594f643750694e5939416c2b5a3452666549304c747a79633665634935576e396c714c5471475767414835766b573566315775506e657161787176385a6939332b476676504953587837302f566670795261764576796c61505330746851683244714c4171573536616856336b396a524b503841584839464b2b4a58372f594b53726d6931356e70776757732f7744483778377266495a7376794735627357664b644d70796754525957696c4b715a51553263332f59546f4f6479736546596c66386251546b2f43755a33395276743469723933304e3876776862664b51655352514937666168585956374548464e686535546a6e467a614e515a52344e43684a564b78344b782f7a4c3451527152504473534b35664651544b75397a32543168317855594e6a4c53353145394266496d394b64496954386c4172426f7542414a2f3146776962384966317345412b6b73687a3644344b346d644a356b716c6876364f6553454f614b36757235386c517241476c4c386f632b457a39797a392f395a63336239662b674e6c79303854304750496c38704d4a69636363386a2f69424954395975747a4f6c4b63704f373871303945446142462f6e77414f2b2b76694367517a63377a76566d6a6744537756456c5655763746726971732b31326466576a394d6c38364b7762376c6e777734494277503672377a7942623039387575384339516644664f387276543050462f4b7648764973316c622f6937565667616b75704d356a426342706f6263735341694c336532777a55775248355269305a72654f2f5038415566305754386e384539512f5266776e7a72787279525a532b58596e6a336c486a367263764e6e304b4a7474493255773353794d5364785670304a5a414a7a2f41504d33526b346c384e727636386245306d30547837687172722b5a6c7557723179586e524f4368794a5a754b6930394c4d6a3043793561784a667a4c42757438334965525666415379374f5a3975534443396d73524564424a4f5a57424e586f4d7638686a7172655a4676774e777451706577636f736f4a50455a4c474c58722f596f686f414730544437386f43365a7963437a73632f6c397874663657613346654f736d304a34707442617347584c533637524b2b753355364d4b684779747a774b564f6c445058314c6b6c384d2f75633570385033466c62475a7830463965562b615948686e704c663556366a3656586a486a2b4669616e6c666b336b756e515253525a75497067303356322f4a30493647356161793577352f694e74346538543651462f56597a4e6f724845667a68767a4c2f4976512f4a7a386d2f5744317831702b382f77444d504b484c776b365430395a4234396d437647385235535165356139526546486c6c555352465a556730765a37543977657a70553261566178786d673170526377797151736d65786a707a632f32436b6737547756645772726147632f7957777566763841783976782b37326758362f576e752f4d6671636d53696555584d51683943454754496f554b48347a54386f2f4e37586877695958566a7766386565342b66384130506558503670584f65587141544d6c6c664741767654482f5758772f43784c6c4551667067706e5758535958545973752f722f4141393374452b6837756631724e6f6a714e2f667843324c757669783743495866597a305a4e5657316f595859352f3545584d50373675643971317568306935304158305075564573794d4344764e6670487a4857507a4c304d394f50566678534a666b654142335a3749694c546966334b4c2b50454c31747757496871686b6473435750464f584965632f587a4851576b6f4b54556e4b4c544538494653366e346c654f2b4e58356e6a2f414b66323633646e5a646f706d627a507a73326e4c746272504f4b7043753748796232762f416a4f56616b54746543707071584277526e5932593162547a573643712f7a4a39423766467648665172374f4e6d4e746b7a62617457797659467274514e5454646e5a5a6172394636566a7550716831472f6f48766f52787a4a672f58734f662b703037627073496b3338436e6e6e7a6554344871466a77594e48492b7473463157787a4f6d375936427245546b35663369483664773834675136776e45784677632b55757a37336a6a614e542f55365878547776553734563437576e5a783879426d614f72755a767a58364638325a6354396a6c4855722f36777a6a596d4d62682b626e384f7235665a37426537537335694a476e745930737465353758664e57766f7a574a6f2f6467314e4b664f5448616268443546386e5452316e79465237795033417a7075343933534a44347434643544357673497a63504a71334e4931554c44466b356d75304e4451397a42664f4c753046396a394f47722f32495a376c4a396a79502f49687a6d59704749366978395038657656484961564f786c795a56616533786e6974735663354e674c462b316d396e526377574f4964497632664b44635a4f5772324358373938567654756a395248526848786e6734577442786468313051586e705071704f464f56375a7568643173357143564c453863744851373853566d376c584f44374172695a7a4d527742435370446d56696336357254687a55543030545a357a665a35396636442f6a6d5332707a6a45534b546e7a30734e77554f54372f6a4d5036674b5579547258424f364d586376484d3045714258416f367853632b672b47685a64434772724743504a563941782b67617565393959676f496f6e3958523872637943382b31677775526d3833492f6a567370345356304d57364d54635442454f7350696d2b2f764a7855384f754352656b454a582b704870386b47726d546f65612b4b5a364b555363434e78796152586f3552503775396f4a3864414c5677666a633732646f64507a34544d357430763638522f52782f48326a4c56365a4c316a59723248426e7173346a4f35516b554e563759593252583264793031466d6c554b6d7930687966367a76744a765162505a35462b314934622f414e32445838393953765076532f3048384e2f6a53383033504b34554b3672532f6447466b6f6651335a7033676f735a4b3467397a61716b4a706b6630342b2f5a686439666a5436665a38567261386a6f503662656933725836383138795042745464336f6c654c307736355658625770342f4f2f557a4238647a7a79664a6249572f4a56584b36696f3066526170536e4c354b333550682b786a613161635a36794b33383938627a50466f7433493839773549504f4d4b54556e38776d61324e6c326a4f7753304c7232545a38376561546a3830304744634d6775704c4f78354c3170343478744f596e50547041385950354e61714c76566631416f514a6f2b6659314445623653325643697176373171564d634b654651454c49526e4e41754271706c6a2f6730586b487036665776792f51656d372b7976687933666a514647565a56683657627061446932387a6c57632b5a4f5271585757364f68514e5163615347536b30775035666a6f4f68596c3876754b7a6739726e6e6e7a486f57772b74446d746877757373502b4f5632726e45636c79644d6455593532736e7535477778316a7956716d6b61312f59374a6675417a6c633966334235525a336a746a395a43324979383249614336614e696776714f70374556564d326462454f5749616d483968677a766131377555775753435866745547317761392f6b423456323345536b333557506654346f4e4e6569336d4a6b4e566f30384a2b446d596d3267556479667573646f4954783754366b6f312b34706d564c76544e5a784f52345a2f7743342f757749395a4b76463035743264374e75326e57346b555a62382b576a53575a7a4669544b2b66486c4f4f5746736e5866435031394b6b6c53547a644950363954517262626d4f6f357675305445663062714f454e45396d6f306556545464734a35444f2b376772517a2f664c5a33355454305456317747422f495a676e585a62774454553248316b76747261423738762f71756852657654446c763176724e7167624837426e5a324630383765672f6f302f574276662b50382b323266686b5772364d3938686f586f44426d4b304d6e6e64414c46484c50654558334a316f6e506954316c75577464693876347941786350786d3068452b675978664766507647326e6a2f736738756870314d33446d493948616377644b4b5036315376496f47524a673546564f6874484a5a7968506f5467743330373231436c2f656e50546c38504c3942334f2f74412b6e45657475657450714c7136616c387237426831305a4545724573303749456d3334744e75625947626f52736f463168384a726a5a70484c4c37526238773876744d34697463394236644d62327a547930686a61684a756d724165397a30544c566c646e685852795171597841435336694175506577766d4a4e67306b746151522f58446673794c57794b67754a4c3355585a4570354c4b723134386a696d5462496673563071615765306b7258446d7a7842576c58506970723458437044686859574852445854586f537175324554537a58694d6749704175316f363578757534776c4664385768485037464153674d706b7165777870396a4f6343643779727758786e467a6c3162486a324832527955413074624b79564f4b6c59336145453674722f622f414a376d57746f6f4e422f593934382f7865746f7832694a745055554a35423668656b7a302f7a4e2f717634536d616a6b61386949504b44346d756c4a4c67755050305470594767505656615341497573424d4c69553553576e326c393678627074794e5576794938663535643456356c317332625967734362693436737a61717335554462636a446347626644386a6c74755a5761512b7852656172314a4e58326c58697a536e43612b512f6e4d65712b636e493958665561425049335370386f323454475764616f4a3438577861596946695932536647647a4a78616d636543773641346c6f64647742396d73627130396559687a4f68317152355943496d4a416d38375136535a5031506a613661564b6d5572565534536478507a534159547537386f6345783464514c4e665a4e5346597a4651444375374f7839535752677952595a6a4770624f66426f6e4a69566b78665072675850597053302b7a334e302f642b76454c43557a474c4c354756642b543961416d7437364b5355684f65327476773365396b344d47506f45505063626e41373245615854686f4764396e526f7a334573567a67726f4a7143554b6861324b5a58426d37325777654373436e4a332b73773970553939337a422f74376e576e664d42557a727a35343654715a505143695847656b4d656878522f4655615664486e364b6367574d71326d7851657a69506b48324142713637666c67504b5152634c4a7538792b4e58532f774236553049624745333066686b34505163746c68456e336348767636332f4145744a684a64377746586c7a75345a43546c565239436f6b536b536d4f35594b4b354b4a3272653132636f353665752f77415763716263766f41583759594630532b4944507567733330427471787657483030306c2f6f6b6c76524b4e706e796d644b6b39583372546b422f57334b4b474d675352396a55587a4a4e5065644433446a65764c656658726a3968373876526677336164364f4662354157734838526e61486b53494d657a496e583976526f7a6575324d2b2b544c4e61522f6a45546b307a5731536c644e715a3038547a346648744d627377504e4e2f6434305851562b475a515353794f753878314b374b65654f7a6f324b6e71686c737a4b61395876324f6661736e31434b7563572b394e45334f4658394f686166363774434f73343965736a6862516a346d72694c6b365336377339544f47494c4e436d4d636e6f4b4551396f384558664966732f77446f683162502f622f585142426f4e4862576d633349304e6a39344c2b3648655454746f4a62304f4e50562f4d306570346b51615a6852304f4361443777543642624f56346c62472f46385738637736504b2f55447979394f5a6a654e435937446e583166547058424432437069663541716c2b7a6f556f616a69516144506a463547574f6338657a576f37682b694839726e38712f5733307538563862382f3334765472784478563146474a344972372f414a44354156656c7539724e39636c55597765506b2b7866762b794436774b796c61657435772f712f7742636c396654724d376561773356762f73442f52384635355464356c366855354f524c4c334f644b4c3666757465686a35555571354f58307945732f4c6f446c4538307a4666374876416d774f44482f4638636259774f6376354466674e2b62486f62344c762b4f594e6e6d50725236432b50416e59325047385a5651686a465a50432f547471795536566c4a665876483476617a37414c72704f6d7237504f584a58305531744b38356d6474686f563647767776564658706436442b42654f61766958724e712b643757767a315a777478325a3558355a6d7578536952366175766b716d6b38667a5a6875497555644554555a6b4e524b55734b5536323462723235712f682f556255654d6570575038416c68346c356e364b65636e36472f6a4a3439365536536649724e70766a557a765772643856394f4d4b786276455a72724b66673867383272317444506f6f424c356c734d4b7a364876452f3353617a707a57305262553366366559565036655a7566442b4f6c2f7156345242345836596a2b4e7672666d2b55483570366e374f62752b6f2f6e6d72354f7135666a2b466e65414f6e4f5465584c566b70364a76522f48642f6b715073475950636e2b725737653263326a556a753749523832386638776d395450536e3872667977387879504c2f41457a2f414342304d547a543144703948504b73302f4f64654b543741746832734256794f3265514b712b6e32684e5041412f6530426363636f396b566d4e747450547273745838514d4b3951364749395173483863504c312b515a6635795665572b42532b675339585667386d3950733746706a5a3476762b51636b537a4e324e6258684a494c446e442b747a3970615451522f6e474f7a4e3635397a7a5a465865515931662f414958347269656132582b5a65736668666a715045504730354536382f7741613949306542784d67317654487a56725a2f70616c333878584f33397a694c6f363575413131586150686d746e6a6248437476384164356a6e30744c796f2b475649412b4f6d78532f6b53715a3636762b7765634c48642f6156393751784a64346c6f41437a454235374f4f502b756f4c6c2b69433939434a446c71713677576449457869325a5671564e3731624f2f595764484b42483567396f6c2b6c73392f524836344d314567465755495067414e496c325956512f664b5a637443617035524262456f3973364249785076754c695261414e3449393647566a47745a5a49366d5a625848464c38623053394e58362f7743456d33344236512f754770773839764f38535a2f43416d307575565776486d373542616e4f484e357a6e486b58324f4552705437446f6e6f686f53326a6f4137342b337a3946632f2f41474451667875443268386a5675642f566432376c786a49786f536f554f564e4d39335259336c6a53536f6f306f69465955304d6b6353756a56326969382b6e302b66344a4d2f2f414b422b3666515a304d364533574150484964504a477667536465453936766d36516e7a2f7743476b692f306e7a6e47662b7959766631496d616636416677446e4a6977576e6e4d382b636653796a6a4c4c357555734762704d3466526a456c756c5731683945464b734178562f3841424a6f4876444a4331664a66476f6c797a2f42336467547331766e6f517531444c3164426c58536f3933794e2f6b6667635246304154596f6a503454634b615769497261523265723834646c65503433692b552b7958695045524444673041706d466e6a4f7473537a356b696b31797a506e30703645702b4e432b3868524d48666d3463684639766a3738326a714e7076786b50793331643830623664656e5043784b7341583236327a526e35514d7a4e4358734f6870324a78333654507178324835415354374f4c66742f787167762b454648574e64544649335848547a787a384f504866422f54786567576c64742b625765516555347531525847327337614d37375869753872527a39576e6f5331544d4c37496b496e4961335a363651516343564a3570315a6d6366434f632f7137692b57656e2b39725a374b664a745450524c4c7545357953314f73516d6a4c7a3879796a745479466d7248485558506c43634f4f6f2b7934444e6e7656336f724f59477661665562596971717454723371302f486155654e7a3154313258596b6552416630744375346c433574444476736c536f67664c4971623270645437486879757772583145725a755a3937746a5737704a4a6565432f3144496a556e5a646251716e655231566a696c327061686e7a42556f562f556f645344466b42794f626173346e4931613834306c37324455486b6b34773153784f434a7a45336c593256777279305a46756d7a554a36387464556f694369466a6a704e784a5453535a2f77437278455261596a7747676c7049736f596d66733969496154664b7a496b374e4678567a533454425a5351554a576f6569736772555a694145796876754c394876325050494364367138794653466f5656795679424d6c7a526c325a48787061536b4a44763151495a42622b324e4d756e33326944416238642b4659386f4468357261504a794273794745504d397864595a70554556514a55436e3063483575364378554c4f69723247426d5a41422b326551387a2b4c49557a564d377a37564b356c746c4c506753364761704c316638415a346b44316b385a4b74617669582f6b55667334745a454450367a742b4f732b7567534872704671735378457946314b674c342f686c30554a3754553930346766363436734853702f7741443674782b38524a55356d2f2b6e6238736671465337584e4e784d69573139537035304b6f423877756e71464b5033516a69654d6330724b462f7441734c2f4432704a5169727636637678647231344439533351645232714f7a726c7670594b5434493869366e3456714c3479746e6d5a4850776c6b73754b416c4f3541414549632b5072483750316b42752b37323257644241424961317435594c4f394f56504671464f7237524c7477394a61524c7169392f54704131734266784b44514c544d583168645561653846466b69576734565355632b71524b57484b694e5a552b35795362337177543051352f78375766743453624a6c2f6b64664378445343713671463574424d4d4354597170554f656569796d787337423779556c642f542b7144347a6170784c2f7743654f7974475969336950666c2f627679383730352f487a3072795046326e512b5447774c7776734a64465778503544314e77506b4f69576c6e326a6c6f7931337738354e31617255485a30435067302b5272547576624d447064347036695375414f6154455347377248523635746e796c3143596e6d55614467326c6a39354b614d6d58352b6762316d466e556e7a33705a32624b59695978493244784e57797046412f6134796d7a4955384e4173687373713661584c6e5368627a4c6c7730543266435946516f314732566a484943394d3835355772742b55686e76655357515135544a6f6f534d7469482b516f474d5a686b6a79364d6c31656245782f316d6e3851733146644d6e754d794248456b367473365274576e664d4368664a664e36745457386772736f4e685031726d4f59596266617954496f616874564e6c4d554d76785a366452464a6f6d6353724b2f6c6f427246306936395978474235727637365867556d33364e65486570547350447438783863333673766a5a454d6f6454342b4d693944646a3071596c4a65357a39794e612f63667a5575444f4a3161356c6d5266313265797a7a54474f575279622f41414339534b735877727a7641784f3852644c3064542f715a39647569334c434d756865766d58797331314d2b50504a525576624e2b394c6c68687734306b6e6f316138617a4971443879386a573954764c5350777a2b54336350414e46394d795035453971756877726e66622f42396e557357646a666d697637504266795a4d354a64516b48392f71326e4f324d2b41356f3272425a6d7067564c6278747379766b507677724c72692b744f56453544326375736c5831762f494732696b78365265772b633677774473366d63515264544d736d6d72724b47727967737145757155632f452b355a664e38697538615854424b6665596533682b77484330732b5545465649776c755948756477454366657a66735a684f745a6457645049456833716e385433356a5150743466514f4f48613868394b6858584c61616e49583174674d76364d6f2f4f6c51442b754c344969503868384b357845435766412b5965382f6337673445676d6d5a67324e47615666506d527a33536a46594c4a2b742b6269464e4361556a6c6356532f684d476b2b62336d356269452f6149556a6a586d3767494c34616d74494656764176686c6d6e4a667353672b4d574450396c6c546d6531316a2b6e3753417566356d41702f39676a634f61757774427a454e6b544f5837536c374f3174393753654b326e48787a4459786e562f2f624f646e2f587341525341665a4d772b63715767326341774d43364b5a7946755a3736315438353372546239632b4a466c48796530576b5a4a2b6271524270394658412b56384e52726630616961645843716d2b6f56557673354c4c55486541786a4f4a4a31565877393970443166456d482f414e4835544d4f3158397433314233764a2f5450795430786d376f5a6d746a62574c4a6e30464f6d50725a6649794f58496246717a4c6a64434b374a302f4d3376474f6e442f4f59695959424e7861385257323464632f54625467772b6d6e544a61626f6d722f68704f613742304179426f79354b4d584c4b6d3543705961526f49615673524e7963474a2b334e544f4267664c4d7a5055587035622b64587056365258557a4e387668383438757a386e72645444786a716357656e5a6d5869355754486f6f6c566e654f7553796a5054315066734755646c63695a6b305475545845614e727832646f4634663936543076793251792b6f5869576834314e67303748324e4c4471397a354d572b4a6d5a4c2f50304f5962374a32517279624f533957417966787078304a6c2b756d55352f77313536534776714c2f4148592f37586e7133675334486d333432682b52714e61316d627461766b766757665866504a74637938765a7a386e526c5a312b705a31654c4f6c566b53334e442f32682f7744446444516a326658724f5931506444564c797a2b337a2f61672f4d6f4f6a2b4f486d586c2f3436656f6e5661446738473867766263686b554f70506e676e4f78654c6370644153364d2f4a2b6663496a2b2f77444d734c6e48543350764774375270547a313355484f4c31752f733065704867586d4f426765436570326235444835443547767875505072673159504a55466363374f615767724e7a33526c4f794770685348396c7641444b7641334e6443786665696e7463544554614231642f764a2b67486866342f774439747a3852765233776b35374b50546279753378756e54774a413446476b764d6e3574724755566d2b6a536f636c394c563951447155702b6177314a39715435665a727a6657314c543851386e656a6f5851436e7638787831667979486c32687073533647574c517359716c4e7272422f334c725a4b6a332f41474f417850784a4d666d5837673734695a6e454432686632486679587a2f4f66782f7138573954767a44395138333155487958794f5a55766d506b6d4e64446a3443716f384446473357314c4f744b7076336f656851336f47432b464f426761706a2f414b383732756d4e5464585472744866667a4431623957767833394e673951764d734841395a66463853796a69664d2f532f38416a3758387a59734f6968506b467556736148386d73616f624a78353959624767426d4b7a4133456d7a6b696c62327857646e7a454739492f37683252367057716b373658372b452b4337502b335157526f537079374d786e32467844667a4c65566a6d66657a796e6c36614b446d4e427553746a432f7162614d313632486c482f77446c4d506f7834744c3677656d2f354f2b4c654d53344c2f564e592b4b2b7074586a794a35354e506178567273784e397763495851376a632b57715872334a49792f69676c4a7a6d634e53765139686d3232314a2b48736a793973584b5a7151517058587877396e532b756a6a4b577258515336733354637a6f4d537a53637742345246375638392f514b6e337464365164712b4b6d796572554347645833704a5a3555646772663332364f6567584e4a68454447484847706a5872577733702f326537715863396c4d54587338636869795735433675304c42616e703679657177535532674a786f4171654538756b6f51712b7577414d4344677a414948317675493535504c37433373373145386269384f626c612f6830666b33714164307952387a32516f666e512b4d4a7a693433466e77366c6c4e567148706151754f71685a3166397a32474b6541304b6335724f633176747249717537573139786c476a735758685a71574c5035584e656c662b6e70436d4b61623672426a7a35302b315377414f4c5650427a76412b506e772f317246596a70414645534261715a4b76734c585062785856572f74504f73766f6631674d45665935667439774830757449796c4c696d4477515a2f556642395030424d715a307344764349355a705a2b53337a506161343269507a735652317275716b5949324d2b4871774e502b59436b6a392f512f7177584d7a57333671446678612b726430487655366335396d706473794938743876522b5071313848767a2f734f6935726e4b396a43454d2f7a2f6237425368726d53745a3272684c6e577557655967597947322f5644324b6b596963515459376f787a39494f725638492f76354263354a414c543778374b2f3747337137347634372b4b65543462683979556f372f502b5365524b6979474a7572316e55445a7550334f50732f38415845726545363447746e4e73302b62372b554a6d4572572b6437584578715a6d4236414b66575845784d5657616e64773055637a394339797235755177316c6b52354f786b797757333633653653786438686648516b6d663661524e59334142633473544d63303543306e6c50686538363778346655722b4470483450626b354e6f42517a567a376b3931766a375a5657764c466b6156726373334137346b794f7146376e724f7162524e654f774c61316e6b2b64346373664550585752726e3570725a68666479632f57336458333039704c37756a5653366864444572557754587745716a51796c4c4f66574e4d526a50476734582f6e542b4c507070355434313531354e2b5866704e4a34666f6b3352314d4c7a7a4338706748556d46734176327065555a3439595032644a4a554a6d483569594c6b4f42476730304a5071307232696178703233447830572b72336e5752733673337031366e2b636a347868376d686468364b2f4a4e724e716648497976755057334f36493054304d57315a63373043442f414f47414144464a2b4c30397359357135456d7a6679622f41434c3863526f5a535057337a3456364b33426f53743869324b2b5062384d2f4f553537555575574e447032443753527862584b44335564556c344c665833656e62345a7839424e664b767a742f4c727a7a307a302f53447954316733743377625a58486e612b65394b4f2f7a4a514c79666a377174726e4b726a766d46544f384236703358644f6c776a55346e476a523059746d4b3830445471702f507068496f78654e46764838534370766d5238704e486a2b724834766a2f5658776b514741716f37385874596c5865492f72576e5a674b4936584730752b72457076326b434c5674346859433976326e3834336f74363533614257705a73507066344c4d313848684164676279513762565830464c474c4f53704e6d68336e766f46424b543842553076555330334d4a72686c42594d5451337170754158735437774933355863396636766c734b4f694e2f773931343367355a7a46524847386a743731727332567931705742463775544f62376836662b726d4d326d666f476b4a4b6b5663342b384c74434a34496c74466a376f2b397a4843362b626a702f6d2b514b714434485234434666634c7679632f665454554e724b59655a7368443255394a4d5648386b3773537530496a6e4549796a4e6f67704b6e48476d58697a542b71324f427337485467527144546e2b583867475837503354514456424977756d61353570796178756333396f52474265336f705a376630422b34534e67554230796130506d30437656664c596855624f455656556179717a716b7a55317a5034795839726a5176715571347a366f392f666664773567352b6a4e67482f5564334e6749534575677a6277506d416d695670782b777070356a3473584162695373687a2b706c4c396830765a377a3969312f495076475137754e33474a5654387a58685956594c5a3853426570696870616b4f304f344448642b46504672567a6755666355494a4167414f5a2f77665831496171372b686d4476774d36306b3961565865664b7970626e6355706f4b64774b5a2f7457456b576b6f78412b2f356b517a2b7a6d6754596c44794b6f42595157763559536864306758324a4658762f4146776834512f73526437534978424a4f54336a6d4c4d7a2f6f48436d4e4d506c745a5237756f696379774a716c6d76765063342b31475a4166326a6f6e6f2f5a42772b55384d67363952725951523363754174624d78555271653153795258314147736555524d3654666d754c764f456b6b79634c5649316d5048632f3633506366752f54517a70312b6752516f7538615646694969345659394749457a635230414a5976427237753834342f61354a6a77505a3041364c48634d7734656f734c307a385930764d66502f41427278624962594c61376b5754314a574b4e4e7455424374334f363162754c58776d66794965342b2b77414d2f5964422f6f575a326e46625462687848626a303338393956765266646c2f6d6933645078725a465151626d706233576f647039756c737974476f726673506c6e6f783742706278663261772f38415a3746676e7467386c363074455948514c30383964736e667a374a2f4c6431464c7659717251726455635442665132696561466a732b6a7035655078695a55683277426a6232595a714a36434a576c6e5932706a7078462f5a2f6e4d39486b6178795a74504f5a546e7549363255357242673541684f6269314e59696733726370506a576f3536796c634364436e34765a48543737485546355a2f6b2b4e6a52724c635171764937644c693674394c7174706c4261463657713139464d32664b2f57304a385665685551634230676b6d564243367567796d704e597447593444622f307838706b6a5a6178586c624a396a7171766d316472376d67315961564e7964517354494c4a476561635273596c61414b455866384174435a517448734f63784d64527a6a2f414c73507078347274363370742b51336a2b442f4142586c65687976453871746d7435516e7a424763366954773757414d35795271474b5074436b324f44375055306f6e4f4f62345457376651744f4c552b4563346352336842654d4a7277396a566236694e337449504938786b546f4d417375544a3074496c5a3279327963727269306e6538522b46416d7162674f447236665a50744f643335526c6b383064516c323568784c6735336b584d794175483161706c364437576b376a76316f444d57705531706d514c396e37574b6a50694f30574668426b6a7148566d56313639484a6e61457049596b4b452b36704e466553676136365063747843656f587963396b376141442f6c613546443350477a6a31794a336e2b624a7a4a366266484a64434e2b706e2f48796772463631386d623263626576343675666a466970316c33736438795775443630367659414c3432746f6d4f764849667532664c594d67314d386d4a4f5a386664712f45495235627273466a46304c6371327755357158442f414c6566456b414a63784438674831617636596a666a75456a385678704e717a794374657472536e66456e45586e66503870516755544d374e6966553656787075586471532f45704a7244706e37464f506947702f714a6a453447326d682b562f6f35482f5a4f732f4767764c636166386850466f4b7662365131687076765838486d7337394352423638334f36632f2f6a4a554a6b3442324c54396b4a45747139715a32303933622f466538322f732f7741587279443338622f376467666b4e2b5047442b5566356b6576316634382b6856667957342f694742446c51374f766d5a6d654f5844354875616c493079726e4d74496d516f57716d767338333673594376624b74665732583933703133576b513338672f7868394366513330747639636678622f4d66302b3966504235676a793966307a3961676c31664e4e4f3153495279332b4f614c37517232374f55353942733751696e356f456b3447764b5146636d6c37587473314e4f3162666967625565686e397672387a413841394f76794a395050795339466654625a382f774154783763795a656e752b45704b366a4e326c5a486a64666c454e4b763535664a64366858506d61587a456b524c34306743697a7472616536394c61633232694365736e724e36312b67586d635870763841334b6276567a7956486b546d58656c75663655367937504766554d516971786b5275727759315837517447715837553166316b6645596c38747071702b57613172654e326a743838692b2f534c31672f757265495947566634522b4d6c7266534c4e68794b66464d6e7a66416974337073685563386167305770467a31367a636e616e2b783746554e2b7a6a6370544a394d7a354a467136457a4f64586d47702f71782b52336e5835412b70474e3556366a654b797a6233672b5864487a7844307139492f4a6b623032356e62544834655635626b4873637277352b445271412f53564d546f30756f504f7353643143707231704649694934377678534c4d396666796d386c2f4f58786e45784b664276435041384c77356d6a6e4657666e64373854796257523432504c4c5034657648565a5a4f697a57537570644348453661446d6749665a6d56594e4b6163615535375830455139582f7743354c67345034663433346e59586a58716236572b754870762f414f4e4972387a2f414a72787a4e386372666c7a37414d306533352f6b7947456b745357684e58574c4873466e3035493275636172417458516d6454664f32314c43772f57622b36642b4d5871642b45666833704e66356c366a6166724834322f77424c647a7a4a2f6b7566636f6e367548626a36486b644d652f70527254354659417638672f31436462765973327a4c436a68702f714b2b7a366c64533174764c7a4470326a2b34663841683336782b4d59656236562f6e6e3470365265582b4f3575445274425a347a4b6232783551536f626e6138642b61453872464f58374f6b4a4c48715a71467a704750686c2f5850376e55724d6274486455613866695a35743646656e2f7743662f774353336c4f682b5576704c367258656465435964706570722f497648504273507a4a3264316559506a614b7830655136336b4156597244634b506a4256394e43467145524655656d745730364e596a546d753252752f54363865432b5365672f35452b592f68504e364a377672646e4d386c30764b50444f575945326a75362b586b3648616458544c446f594f785a534c474a58553570706233482b73757559706c4a546a736d4c366464586474486c5239462f4c2b6677506e476870326e742b572b56656f486b5731366959336c434f77747a504a57364c6c31532f784b6b67474753394a4f684c4d74435442636366316c6b686975332f3136466f374d59346477765850723873313435744f374d376c344e507779792f62555553336d7451732b674d5362423738664c4371556f6c722b543573706334453853534a3034644937684e4f2b62786550654f626e664667376f74544774564961514c6f52325473524d4e304b437148376a4f304d59686e463341484870352f3133645438585531695a7a49537a3948533869446d3334356f726a315a4545396a396d75564d705630614f587455307954483032727a31397a30696747395334776c492f386e4c2f414d6b52694d547877424c2f4143617245726758695762576a5562623946586a3065642f4470344d493363437670737159746c7a492f6d4259432f696a6f7346735a726f447038597a484e41747230362f492f796a61524a6e454f632f575a644935764e31636448312b38317332767171624b4239734e53373557634871522b4c32423833776c59482b4e4a703453487531705a57353259664d3839366255315a3838654f73475938443646317773757a3171514e45704a485130506847486e796c51724870364b766d4a41696d4c563664417836687459395258745831523639394f66456c7a616b5968396a30526a625a47696557304e426e644c3755695767436b6b4f71354d30303544785a36437550494432382b6c51425270587a496f6e50502b673768575a32672b6d69354f6754776c34783143366d33542f4439656a6c49664f6b46664637524f49783343513533432f69596166482f4b66315458666a75586d3157576f78657976554f65656249396c4836795667764e64316f44306e574144684d456755787a5262474f626f496c4d2b6a7958516d4f392b5a3433526b43316b326e6e496f66526f55786c5254505571476f7565376a424c4e55726f696b565a774c52326233676d5a56756e6b493335723550342f4e6e647849484a312f4a59434c5262574e645932684648526d352b667a4f4a3073704f6375354c752f582b4d75392f68326b4b6a2f41484d663942726a682b6f42543544344e6863656f746a465473353268304730466e5a3577626f54355663496a4f345956755838673266477269474f496b6b4145515733346c44702b617777304e724d56365573544f46562f4a766e55726d55584e5836716b45304b7249732b69644c753143734b5370596e704b50394c454a7547736a79547976774a64697451503450533474416c666f4c7746395a66554b68527a6c3343584b4f584b746c62786d6345632b4450373372456661797378694c65655236582f53655859356e776e35616c63766b4f567a3739756a3177516679456d6d33333131536375686f4b7978475775654d43633179766b70343772694e4a724869746a4d343644616134467a4d525a4935452b656e6865385a336b70325a464a50596231385a7757647a324a7156514a6357487641304f5638314a3843626b413341374e7369653148746175624a62785552567336485a31593155365876797076394537666a6438546567745842584b6f526d44726a5877474a5356695239756764393259757879335447772f6d653979774638633363645038685678644648745a336866344c48706a7a363446775030387931736b627078536365585471584d3941504168346d704f4f613239455a6e4f34746872623848652b7a69524565664d51433449763859786647534a614f4f6368396e7a31783533496d7571664f796d2b75383254727a35754f716e3651395152735453504847306b78464f4439536d4241726763467a4c35796c4c3431462f71377838594b57795a42474d4f6776362b6145764f66742f764e58445335712f38417241355971574e536f756c704d4b77616969737672634355565034377448596a52523034513434666e372b684536446d4e426742736c55414f507356534748744f4b743659714f58305231646e75534346664a3151787175623131674a71594d3658436636474e4b536237514c3941694a3139354451594f58316e653961706e323959596b6c795666326e5378722b4f69673261546a355077414231414342434b706739674f5a753053794c51316e425139347565314a75556265767258624f676376704c61306d3643353166436c367662322f324d4951496e64416c4e796c3866796d395048302b397444754d4751347079584c707534717a673837444b6b696c366665384e703867534441372f37674244744b625a394644584e48706e6178375666596c585935485a7a7251504f704c356f2b734a696d2f447a76764e4e494a497757437a424735545075467977457268587064506c6e3753644a5a334a4b464b457a6f75346d775a366f3577464850327775522f6f2b6943766b2f6f4773725a494b687a2f41484437336e464c6f31797a6434364636733663304b7a715268503731526154766b2f617834594437796e466642446b344d74392b6b544f41784579553679566e576d4650426d376f7638416d44512b5249663557514b4650754b6472772b457a4c706b3469635978474f34444b64503353386e314b387142532b53614a793873586f374e6e654b6a727336324b556b716c634a516c3837654743684433657a7167456b2f7742534d6966504f6b387646556d4b626d6b566f735857306b4e6d714367526e35556f65383255736e3972474c4179415977555a4e34532b714d464f354a506d52492f55354938317a3230664c6e6871682f6a4b70414b624568335335594e5a6166794f2b4d56634d6a465866307a6f434646312b542f4146495a64554e49436f2b6e39717948744462424e57716f4d31386b3177734c7339544353787279366c335464473569584d5631526630426a3464507132757a786258546b4f4b3074694c515758495777304c6e546c5252555a5a464773307a75375563795341364c2f6863565352722b45425657334c61484a722f414f4f36525630766e2b51534b59484773717330632f6b3037786d7979304a31734f72355033772f5a3851634359786d424f57675a637966526e54502b6c4f2b6d356a5835632f4b356a705a38306f694d617045732b61786a3172514e504a6c494666772f626377503644396f4a35704863524d6f6a666f684f5955466e55505a65786c30704f4243322f47685a457a3637424e6a79427a512b327050766d525949447239545168377a4f6643714a453044566f2b316678396e5a716a6d7a356331654f6f693439314c5063437a5558446b476b304d644f41473470694d7a6a78414e6e796e714f6c6c657155336b3647746c38395475705a53592f496a5668566f534b534a56436b55506f52384270346658664b4569784f42396f4f6c63792b526e4d724d6f6676537a30366b6a5a6b524e6b797830703647533557614d39784c2b6e4362586a51346a414842493774433341304546426d4478496b72783956795a326e577a513466596a7930304c4e6a6d77315a66317174414c436f4c6b6936316b617743686630327a71514675667a2b34775a755156553349644c6d4d69706f4759612f75395967354735613649632b694a37754a304d394d73734b4f2b376e425076533441456437712b5269664351416e5378743275446b3179324e7a394c4c504a584d73364f34366c44434f73364453316d4d736849577a7137785339492b4f6e55364d58657745317745597250742f63704f5749745839515179397a54506370304d2b6e367673645841765761624b6f4b57437375395037503670656f3066596e64542f51546a507839435941467331423057727a717a684e635a6a6f5a616d4b7a796c7978545a56776975736f706654327342415035694d3632423150302f36414c4a794b444f5869643163627479646d7a50552b37516e4e6436614e5a457451747545544836624a5a5a31395837564e56526d75357a73536954384d38653135695153716f464e39446a724e5664305831704371702b5651533539475655636f304d587752477a495359726f37594875636837457237465437344567504f6f686c36757034546b7a4c7a58686255396a6c6a5533556f7a37383132784c706363764e6f6c4b5654426c426b762f634f672f77424c49323944577a7a3266486f30614b32757475677146484536374e43714262626552757a754f6d62614d2f42645059786a59706546535a396a64383073447a6c464f6c643330486e5a2f4f314c492f796c3173357a6c397650457744354b4e656451794579303250675446507073535a462f4a5265366b366b46543036613747496d6e39353264326c2f6c543952724a6c73773573375238563073646a4f4b3562646b4f304e3059466a7661517530627870674934324c6e5935596f6e2b4a4c6d6f505665594c4234443839725a693237756764306637424f703664354b76586643324b732f4d395537374d724b785a506244467461666a306d4a4b564d4b6e304a55783143766b6b6d644b54727a597a78346d657859645741636e74635774746e3452576672702f5a2b2f7541657633354e65616558586571586a4f393456732b6f477835466865714f33354c71516258682f694e646c533566483833786d58694f3537345a5359524f54315358752b5034713038454a6c577037546f3070574e7562626579455054764d394f5037555835713465333554363577666b426d656f76686950482f4c797a6b55372f6d587062507a4b716a6456516b55306c755174734d58584e6153584a6b5437473971636276366d5a763752706259723776622f75472f483550666a562b4233357365656f2f493133356135766a4f2f58344c6b7836695046664b2f467a7130637a522b756d556472423271714c2f414233654f4f7570416a4b716232416665702b4d796142343664395853694b624272392b512f35352f6a6636442f6a777a384e66775730472b7156316e6a4770346e3562366e7a71304c505437786a483542394a2b785275345570542b5165544d5a56524d684f656e7245754c356a396c535643576c4e4b39372b39317558386f7450307a2f75576667316d2f6974344c2b506e71646d65725071622f47654a5a574a355034726a656c2b72546e7a765556456b3254546f554d354d784d784c4c3363545163632f7775353833752b4e763955746f6173366c723132312f3768552f6b333979456376307a316652763849667871742f4872784f2f4c4452337649664a56357669336b4d4c4b3443436a6e6a336a7549756e724e6f355a58457736715961536e6361556d424941317a47687a6274585533436e7678522f4e72386d507873394665656c324836522b6e586c4f67337944756d7679627968766b4f4e554f646f70547a56723259383250354e47373745626e6d362f716c393644766566536d614b37366d6c703274756d396f467965715035702f6d46366b654f365070353554752b6a48673369766b3865726a655438394e7648486663353478745253315678532b5231366d69636f385451504b61496d304e486e506c41355847587731727061645a7a473631767a44534d7047792b6d756c695957614f65515a3161504872575375686970715a7179715a45627330752f5573434e4d7666726961684d4e4a7754714246494b64706e6e7849376c6573386d7a482f616d785338676f3050356c507078346858704e597974566a4b644b7650595a4c4c75653176326a30714b482f4b336e76535a68374255356e55393561376638524f4f755279712f472f306139632f7741763356654b65465259754434486c314433797a31533830797172387a4f3136737571657073754a3965546c6e7a3474326c316e4b654f56555a7a394e66317257307a64463755302b4d39727747352b622b437634535975693778352f355a5a332f414d3550676b7959747430462b4b78544e4e52615645464c7061426654503771433049307a4b36376a2b6148776748414d77646a4f72717a7839337957464f2f69482b4e33697672482b52486e574c36736557372f717a34786d65475553654e2b524d7632664838627939394c2f5a7374444f5735456b4b796a6d7a65746e673645366a4d4a456e4e504d6c44744e5338317257617a74485472772f30632f47447a5431493833394a712f7872387778636230334a4946366a2b52775654654f32366156367a5a622f463975566e442f414a4a45393268396c79536d39705743365968615a7556684e7278577434314f313849316c2f4737385050527a42395166584c3170386f597a316d3851394c664936312b6a754635423175786d5a4b7648634a6e4877432f55324f7a76304a4b497947522f7556306a636b43346b4f43316c37366c735672484a653361456b39422f7a30383839645057627733302f3076526a776a4a394d2f4f61742f7741597138536947665a386e38564747545163336538736e7a53504f6c686637614a69692b666c53532b526c5075375449707358306f72576278626d714a5036612b65656e506f6c2f634839552f516e7737323550696e7152344669373278343346326966786a4138375852735762552b4e4c376661765374573544685231724f41566a30696130464f67566f6e553061336e74564731766a2f7072364f2b6e6d476634326b6d4f614c315056357a7075785a7a356f7573674d76354863355a33526f702b7845452b6778665545345461315a2b394837363774644c57744d373838616a6a6a2f41485050556a4d763954665366385366424f484e347a365a34622f4c504a387a4c356d775a4d6979676a7a764563656242734a34735a2f487936484a72544955514677464a4e797a45763633304b3874745365315961562f6872763548694835362b6b62504a64487833786a78764956356c7a636f716e447876437559724a6f646e4e333379554c45476e526b793078724d4764372f4d4e454b572b326851613673544f6a62346f39665957372b66667172626d66334a7648765758305930342f4e4950422f425045664b4c7448787655525844755579302b2f5438587a3944507371546f30575a4c507263596f706c396f76396731453264746161364e66324531744f33634e7576556a387650375a33356149385938762f4a2f782f7741327750554c477a3971624e766d7a504d634453546c51504639304c646a777572767a5a395654324d544534375073416e7379564d2f2b6c2f367a7070362b6e4d5270396b617a666c702b6433665550772f462f484c3856664653394c7652627848513546723236334c36504b504b4d2f466f574f524e48466e6145792f477355724672726f36313550627a397041442b594772767036574a33366c7431724352654a2f33537656365830347a664550583338562f47765739336a53356535486b7974585038653464754345736d566f506c6448535754706432507230707254374f54516d6c432b32552f7743664536465a746d6d7274476a483561666d582b52333561797638623877792f477653543068384f324f37655636552b487175314962745041315a39794c57387a312b36637239696a6c324c6f5571544c4a434c4861707159426e2b75326136656e5454356f34337438514965566633542f414f346a73386f7876462f586e773377444479636430324c6d654b2b6d75487a556e366338656633364e506b4565674770376a57786f41556f63344e376b67777a51432b49396e3065733665372f754850667a4f2f774251665558314971396166506656727a76593959395332636c2b704d327a725a6e6c655852554138546e5262435a556f775955755448325970656c516b4845727448657334444e496d4b7874697644774462647737504b39586c766c4439447a54794865537865353548357a7165526556625637364a6b787171306172796f4e6e316f316b73456e3741636e3354746170672f434e6f6e466548442b4551644f4634506e427a757069345935514f707152634e38755070575056494d67766b47716474464456736f4b33704f49784d494a506c6359646a3779303537756f6d7864786f38344d354f5a4c6d4d3464777a6a306334733278673875444c3239586956676b5569354a487765394e5a734d6e73427a514150366a6e387675446779624776544370327a434c4671645965764d555a54514c4c4e593666694a35692f525a71726c6b336e442f5a752b3474662f772f6c414b38744a385a44624358556d68344c3058363561592b7a5247634a47316e64325a67444a5650707739416f78316f3365332f414776396c50784438716d7a714147703343774d7171574e51765575655267307079593662436f30334b57756d7a446b706b376179706d786375643952572f416c692b51702f336c53612f2b7a57323734674a327377724c343072544f4966783133316d355357396a7546333136616a4f6c39314c475a36394b664c3649434862766d76373746436166642f5374747565476369496b586a2f77444974792b4e34352f4e42447a312f756a4f6961355a66426f617a336844433755492f625974696c72564c376372336b50325744332b723833583765753865672f2b304a4c644e36502b707647486f55636435316272564e69374364476346325243334f6e71566962427a30732b45766b542f7742644945466b4b47664b535463336a3971376366496442764974504c5835585638373664625a303575547170764775426a774f765178463267436443657061517175584e31677a2b384d2b77306b372f4470543478324c66502b773875662f77417063303759765254307747694a4f59466e6d6256316d65697a515271306f5656574c634d333154736f6e376c7a6c3833734c716c3970584b376c42754432393373502b5a6631337750476c50596171697052316a352b77642f6a62506544487a3046485967766b365a48775843424c417631333678684c307a4d5864616f76543238766e3147302f7164584f503467656763694d444567325049504d764f4e6253324238667a68386938685642522f4643323332442b7a6e6a57453656394e594b636d2f6c464b3055464d36796c592f6132384b6a547035557a52432f71566f6e594a754c714436734a3130492f77426379434f774f39486c452f472b7a39476267634b56744e58533665764c752f4d5033757a47546e524b65694648566d6e50633737336659556b6c426837655a7179397248437963656833717753644c42352b302f495a7566792b3456435a624c4870542f7365576851663130563038587848666a6438716934732f6839724f546b583664373366572f39356539664f57436677384e54714f683735337071487379302b7a53426f39634d362f657461754358755950534835502b6547662b4c6a4679576756575855382b767747446f64517273555943746e4b6265514c57712b4a3879795a64517868732b58676d7751375935762f414d4d76622f5766352f7439685a58685038662f414274536e43687a623270616d643073507a6f3063797168464d72655445486673556665534d3669613152746d42502b6f5038415365596c7633416937473533616153513275656d44612f6b30776f6e67717a3245336d64374a675448774741317143515032446d554941514554564150386d597650384147645263694751644f5073424c4c3348706f706e65756c4f5854497850794e2b4b47555261445845426734484a4e786d346743685a6c394662474e4263316f6f4a664644314b5a62534e6b7444382b755653774d6f6573716f6377783738506673676c496d7059634461335a6b4f2b384467574a4f6770714a2b4f7263676169717a58416c544b7444354b594d2f6772754a732f7869614f4a543332544638725843773232434b2b44395a484f796c39516d5843687a31544775746e3861514451784a70654445712b4f552b444f58506638786643426e7a324145713865707a335575396c5a4c6a7565707255646433712b5675574e385a4e55765061707842636b6c744170714f454650432f77424d784d55724732376875487a633178434439554e364d644b6371614158446f4f484f59416674365a5730616165443855387152446965544959326b7555667236673942577537355148666a6c5a3132353873563268576c483052726c696c4739694f686d39594c654a4e674c314b766d2b387356644d484536305458536b50634b31733535756f39527639712f7954773730355435706435726e65547a2b4d5534586a6b6c3666486f5a4e5036784b34763239466d786d706b6a4b576a556e2f664a32715343592b6f4756695159746e463754453232594862487a2f383650785a39554d5476707a685a573572723268356e585a6c2f6863626372514b396444374a664a44386a54785057574a485754784c366b2f4c71706c564852516b667548795270616c65615a486e6839612f7745395069386838376954547165502b4e2b5235577236685a586b7474645451524a7254584d774a4679636b696e4c4a5a7052756c42396e4b445565697168386266614450363761613034726b63422f4d2f53377a667754663176474e584d426f35476b5544743645362b6f72504c553661674363576f484657464439696a2f617668676c6f4142714839632f727269314a6a4d52782b6f44344867336b64514b637a4432484e557654366d4e7355534f53547864314b4c64474d486b2f6a5a5255492f384148554f573733696f756e2f68316b5461496e4d634967515851596b7261707272474c31564a6546436e437471653374566f6359686f4158506b2f346337686531616c43507865304f644876395834525864586741774d73635978544a5138666e6f4e7073582b366b724c6f2b7a2b51375a2f714c394c6378526b5a63426f422f734d5156386f32356531363841346d6c756f664973552f4438764f68326345492f62334a59633531536b30666177784a5a467a396942394434772f5a6a7a3363636e6c396765546d32424d746835383346326f6b6c4e2f59797a5a55665a6b4933574973462f5134744c474437754c354f66764e53784143506e44706d6e6850723669772f452f54323637756e4f6e4c39345a796c3056774a567872722b707a7077762b6a48486e6a585a6d6d50796455376a6567664e4b63432b46774e59465a744d3952734f6e30796a385438676466745a4778414765696e5273646f2f4469554849366251685670635a523761482b32714f66746648645a313358665836336e5770417152614a3643797464754a3243725a6b643433514f6a446e7779774a5775326a5471756a666f635a3947356376783053325841776d305674515059424151545877475073424249547235572f57364a6d6143733374614e486a33524d5454706c4c79392b74736e44383278563161614f535065703541724b3739686c465031434143586a7939494332394a57702f35453257684a775a47794a614877784f584c5050424e6d36715a667155645a5a524d486571424c55643531356e3031474662396d5251666d2f6839486b355548416f5a5049636576523065664a4c6d772f61546d486f496b68715433366f704c724673364c756a39552b557042503347433444734e5975517331323649675149704544665251757557646a4664367346665a544e4f436e4d4c35503130415948666d506842377067442b744e32336c786e41576d4471576372557672335439593576574e50374a4f497845475553636e4d4f2b3461444550595874447276324263396e78426f426c4462674542667a6e433531746b68554c664a5a33716b4c633533794577515751696c772b37762f503739704550796950377a2f5a2b73686561654e6a4f3030744b644c766e6f4e54515162576461333553482f6e3973545038693171487665733630663841486e2f3150787262766f50574e2f5a462f4d6278487a37307a3066786639532f4937637a7a767779566c487079376d4a6c705a5a3439423257324f4b6659716b704b6349767131417746726d6e536b45744c70554750772b64375670545733764b547932366a7037366c4a7836624d37527a64487a6a6271336f32482b396c314f426f78507a646150536d707a3770636c4e67304b73304a2b6539464e6b34676644584d612b4a2f57464d38664152767850795451794e4b765332594b4e56647467634c6366575338466f6169334a3977342f59554c6f7861533930713657326a3371635235675366686e2f41464e71353652784556395a76796c394a2f782f7970664f66552f79624438655665476a7531654b6e626c6e74374d2f593634594e444b7a4a7270425a744c354c456b4f6357683835377775392f7345424f613656727a7472493833503977482b36373675666c79696630753857364867666f424d552b6348686b74615557656254354f666e684a5a357059496435522f77426a50375a7951576b67474f576f7a63536b2f44336150733964506e6e6d734f55765253544732582f413734587345526231455033474c61776b2f582f31695332653550732f66656b48506552487a336533764e652f6c794556506e49514266556348355249706638415438362f59524e374f4c466b4849784f7a326b722f4d5437302f62374439356631415455696c3944686b6a61306a5037436b6976376f547a70455855743651543834786f6b7768396e65666f752f6f6839332b4a66313043546f38637237483271706a322f554364774b57687363737864347341665532695032653367706e412f693433396a594e507939576f782f726e456f774e656e4f726e6f7a3772704a5532436c4c4b7a37494e587950584865467a6d4c346e6b4b65527a74367167666d6237412b45506d6d477a67627365506570586d506c6d2f4c42762b6f6c336a6d564a4b383749382f5731714d2b75544b6a6c732f695071486e7364704a4e6a5a56664450786950673933796865546d4c476b78455232636a645877483872505344306b79582b4a2b587875386b36773537664666554344794e614579337a4f6f65687061316d537731702b34764f695577794233496372367743576a4d687a635a30357478675176312f2f414c6a507058357a35486e61575034442f7743544c6b78624338596a3059357446367274435663456f6e667152382b4d564d376d726f2b69316330304b656e4e4d5634475545303072566a6a5963394b66794e3373584e386e686a306a6b6a314e2f4b3867676b37526c76626a62734e72745369596b5545773254632b7578435261776b3943504f357a396672716e377a534c5430346a576e79627a4376796e75686f3272725652513270384a4e375365686e325643734c5543326b6a64554c624a306439362b2b37712f655047756554694453496d73784d78694945557a3666636b39426b494179526e30782b56765a3152684d432b636d4e676577666a3559785a39412b47366b7266634a696377744f627a3072414d34757a4e6d736b30636e57747a61387a4c476a4b7459367464714c59425a336c655863736a36786e4a795837674d6751444a68536744506e74434a693034695947776b6672543578714348647a513535464b66566f753054745972514e554153712f624c4e54534d76706f5758744c6c444b42584764422f455a39414555327848434f55567a35447159316d6f3757312b68486f5756584c4375664d594161507949716f686e346f7079366c79456a4c33712b4f4a72576579663241776a2b464554504349416f4c4b446f6b5a4b45766163766a314b7251336932716956566d3539423055647159704e483130326531724f2f456f2f3841615a393979584f422b3751794a746a535363732f563133424a476f344b456d5652445578623253543248567145316c6b7633525748316e4b6d65314b534f684a66314f4a786e484151545564744c63536e4849775a31353736616e7a56396f5a5238695a6f6e61584f6b51455847526b5939365052496639553747674967756137654f3462442f69743437716557666b5836432b4f2b50433164646671584139523531454936744c664861305879524b57366f2b5643354f663753493039352f7035333466727a383464645359696b7a5034522f5245394d736e4c3866385071366a514a4b457972304d4b51593355513871666e786e3157666a54593766733366474c4b305131537134376b33486c416b314e392f6b544f5a6d6645617066323466546a303939652f7741722f5872386c66564c4d673837723950504b332b682f7074696165683239456a7333506a6e334e50567a63724e3470307a4c746a4c596d6d68332b58316856394364714355643961327a547253764c7534794f382b6235486e33387a6369542b5938547978446b654469524c52486e533335386156574b666a35792b64583776744649755a6e5a6a576154436a35582b2b594f53596e726e64413561666d522b443231732b4d65536561654a4c6a386e38767a6c6a58544b627a5061762f576848397a4f6f3173724a476b526e6375687261784a62766a76554c6e41435579743330395845346e6c67667a6e76797877712f4376586231523866723854312f476c357539614234753347374c6f2f7743393157724e554b61534a674a2b467243517768506867344f4b454f4551713972546e4e4b7a763444765a2b42486b3335456568663439656b736544357a3657354f543552326a7a584b394f2f4e3670785275346c4c48534a766a376d5a7063676c7377316a4b756979356c4a2f4d37374d7944622f414b755058696c3953307a57634473703653666d4e6c65517578732f4568677964756d63753650696d7035426b372b4f477871576935623539584d68644c714a715243502f58736d427951733779687175527a7a427a54705448654476354d2f6b35366c656e4d4f704c346c683444642b6c6364564f7873615770463478696a4455534470727a336c6e31305a38684d6f61784e3771416479446a2f4149655853756c66464b567432687937386e39617377504c766f2f6c4a36312f6b54366b2b622b6135475654365a2b49654c7a2b566f39486b516162364944306648386e786c69563651762b2b485539585a54536d72783667365351716c5378364972772f5a317257736636686f642b59763468796574326652366d2b6c506b46653579447657314b334e526e386a4f5576525967776e4f675062396e33564a554e5850654463537a6935596d6d612f36313039545a473230446866337772594c356161344b4d364a377275586e31464847516c307755727259575238347079374a5031304b4436565073496b2f4535546e4a374e386545687338457563423576447330554c676c6f6d5569646a50716d722f725446616878414a4a584c4a4f336e364633526376684746504f71374838663039514e376678533949644c7a4c786a3157386c3668796b355069456d686c773477536f70715a6e555174376c3073427275547a76474e2f4f387146536c66354330573949306c6c71576d73316a7746634435434f53754b2f50485a4779565431614e4b43717a395175495a553661786f64466255396d305038306d6a2f41486b6c50766574317948536e49394c2f7744597338727874723075396638417954516b356b6554355871476e55393355742b4b54444c4a57304c784f71663637745139534663745856436b6b783371624f6b4f4777783466616f6e645350796a6f446f5765724f7844354a355835372b594850536a786574384b5042736c4f666e362b6c342f46524c2f49486d4f3132516f6e6f716f7a3850384134715958764a514a474d326c7a6947356373625972703768704b6635562b732f347a656f6a3958582f4e46507178344e5a32314f663437624673315434654442504472556157507158706a4f394b396a3456546f55734b51682b4f615270636a4249616537726576485432326a31362b67334c6b2f76642b6832566a4274542b557438686d7378546261334a77744c7249436177653543773869353436714e6d47624a556963596a575a68476176673738784b504c2f43587a6a5a78484f6a7a66317a38432f4b377a782f6e76716c732b734c66533662766a44354a67557278334930584d376e326e354a74356f584779724c4b4f664e712b2b435a6b722f696a5738653066642b4c614b7a7078697533634a5a35332b596e34625a7577333038394e50453876623852687148787648387a347537614c61544b5564717433784a74337730574a49646a36547243545271304970486f704a356f456c645056786d305a734e34634c38782f536e66384153554e723079305976556263697738334669385479344e4479447942322b33426f6b784d6f317975576155357630716c7330624651553534764f6977553845322f7742597a7032693078614e6f38377635672f326e4950515838562f492f795838712f49326679723174473344386e3872394f34635a6a76436978664c4b7059335a4b664936724b6e5765525a31302f464d353866415a395a69566e5050504b54753753396f33337253756e797a336a68694e434a71456474564a2b324a555a554d6d514b4b436552764f7073626146674b2b79314f587a68443333455a705766463841783676345072366b4b6a38507a716f537072776e72594d7175786e52455457474c3543375349687768344969677a6377584e2f324762694650412f72514d3436673530356d39627a716b6f62562b2b54383737464f59565036477635544e3348574d4d5741496341513434763976754d4d2f7a2f41472b777a6478686b4c4f6730526b5856324c7566782f744d54522f30547276574b6d2f5446685563346c504f30695a7544674148772b37514b41522f4c3256394a7250697673794e3635366d66532b66326d763257316538524a62497756317063435945764979503468497763786c43504f414d33336d36445157756452644730337134746331386232512b316a71475855434c76337876794162663250786d6b637562742b762f515545576c4a2f324258432b75356f7a304962774639632f7744616b69396a2b2b776f314535776461517150374c69462f4344356a6248782f5839524a5042306f673952505432747a75746f64354c67474970496d3278794970686d523146487544763242355037566436516d667a6448334a59507a663150646576642f79503642586f716a6e66526d553169386a302f47766b307a6176635039494b695850726e565a702b575642714679566d44554857685439413666624159484770586647763270486b382f7572655479364872684c6d6f716f6e626a6a726147686e4530767059716672592b62476e4937313549646e736a68634250464b574e624d30482f74794346666f364d636735462f61355279734250767a4c354b726c5832576e7868414c44354b48652b3334316a3854425076734d2f3878452b3939706750614466694f4f375233354d756474726448523041687a73784d79756663755a31644b706558307a6c3050617864587642665643662b41706366415a374d706a4d62752b5236332f414f32762b41766866704e686f39542f414642724c5239626649324f586f30374363363132506e4e79382f64687738692f77446e4f42443542506471522b306b6e525a377076684759516d50392b62723630326e62485a48706a394d66444d72784c787432723950516c30372b74583165686a7053796d454d7a4a50786d584e7a5254324f6766342b64595771545031553451565064536b31704d654f5a7475784176584c736f727972385858586d365557717273636d685147504d31456c66457358514d325a64786d6651796774686b6e654b682b7245664f734e70704a66613272474e30644251767276346f70654850756e6d71325535624e65474f396f53307170796244786238344e7537497548344b3031546a3066756b7559546d4e41544f5752766b6d6b3933675048722f414853663761796476623176587a385a4d306e372b526c5637766d2f703334766b544b7954385a6b51794b5462385970774c47537063517a36684d6e557550397a68396c6e7450335438394c3266586a477a552f6d4f4a656835745836712b4b6543656c74324c34396d363256734b6b38634c4f6e522f35463542722b5276785a584a38736671326f4d73314332366e524c37414a53303666627741704a78394d63733274413235304e373079523634656a5034332f6b68364553655565592b432b71476a6b6571766b506f763532456376715033794f69576678334c342b62356f72487972734b67374f4d623745324f53433656646e47616b52626261394c63746f356378325255586a75647659304353396663377933542f4644307a387a39524d66776e437a66592b65627965326659356d4c384f74366d5a544850756c7a79306530736d4c34584e396e2f617164787470783030352f615832693050482f5433386a6654727737302b706d3855743941664d2f54543069382b39635054587975374b794d652f774179384332702b41304a6236474a35357835453345594b4a41364a3172492f6a455532442f68584e4a335935713274746b4c582b63542b4e2b6c487068345a682b70587039354a365865522b48374a5659774a2f67765576777a314433787a3739664d39534a3972505250646c793669556f7a335a54375166503870764676485869356a4e7254743576396f354f3656535633337a7a5678554b6c766f634e49395233396850542b30554253537741616d49464b7a3676696a5a3849383537682f31683244355a557a554a72654c52376b635539314d342f474d335535346358565566777a386f4c68457a6e4f74492f6b39362f3841364a652f6c45634b774d75304d6f396e654f593554516857536731586365706e454a61675854554350472f7077722b6477494956474469417a36485033496342324b776b39373762612f38415768624f4230335441696f6e7249536f534b302b3931524a4557394e5a676e6e7a454843492b56352f4c37676b79766f6f4f6c2f444f536869313853785461372b713456427447683457454a55392b727a70634d754f506a6a554c69442f677244474852354b6c336145304c613433635851793371654135695631307376552b586e434d4a50342f3973374d5139392f764548394270397a39333568632b6534497853486572366a347145516936476446487a4c6155776d4e7a784a7752694a74365a463866516f483365386a2b484d522f724a316c7970694a48642b3073486d396e61564c6a4d574849796e6e4b6a57785242384b7a5039635959395a2b6935516154353043632b4931464a35483476705a6f78515a73323868797771736567526d433265586d6b776f5538766859524656786e5a656d372f4d5242596d58395a6363587a3134663148514b3359316431717333734d5654614b477938566e7931344b7038344c6d613965654e4756516c566e783645757758314864616132307a6d774b615747456d55567258695051722b456e6a6e67487062365965422b6f4f3135724a6759756c6d696662724e664a6e785a624f6d79327a6b7032316665716f4b77744a4b556d774856636d6f2b595076302b366269315a746131717855644d2f48647a77587a764738713853384b33387a6538696759727956495a397562565a566258676c6a6554486b69675a5737476f5647617371686152782f5576497a6e2b5153346e4330544847653861592f6d5a682b6c336a574f335038414b62706b33535758354d7257596e4e4d714a7649624d33545a6f48517965587533714b79307453416d582b626e4b575a706e63435a64644b627a50446950507a3532327678587965315166444b7a66656e59626d7948484d74753275754e3844366371704d3776682b6a4c6f6644396e72457456664f626d523071727275374b7875724d65413135387039584f344c564b624456426e5a774770644565636e35624c6c61507474355250734e704e6c584b346665446c55562f444d41522f5a4e69766d544d556a766b5533723761527a61476c386657655553614e65324765385838594562766d737a56614f65356a4758424852774b3264656f6d7a57476c7748314446486f4e53744c5237627042314e3464415a2b722b34726b6c4171517a6841336e74365a4d6e392f7779703678687a2b336e2f4c514154443936316a62457a505559733468716b454648587a2b2b55744b6a764a463046556a733954354632504a69766d344a5470562b2b696f7552705a37693976772f3163597853645671484e5254384c5838367778374f74727449663151622b4e6d766f643753644f6c6e506333704a4d584963384f65336e5036706670487a42527a4554427846516670767763377a34614c4f636b4a6257472f504263574f48534970312f76692b7342374139785555457232416551556e7a36762b66706b7058367a325072714531705535686b3661317933526b776267613656664f2f4d3376364b38524e464167745839422b2f5757796d694a2f535951766d746c62595478494c496758316f46494d7243716a64384c6c634e66413533337253504350396d4e2b62742b762f514755546b732b64693656503135684768542f414a6e365569574b476669506b7a5258376c72644f77533450362b44746e764d44503841374c4a39353566634e66645057582b732b55554e507055736a595456474c672b703273706a562b7033635a316839497748333863497534507a68374e423862785833512b4b6670474e5269665847707932734f59616e735831557a4f324d476965674f4d575075507275382b483544503342492f446d795a336b5557684c56706148304c343636306c4f3275704d79327042704532577050426f45536c3533326635392b7377442f414f663846557632597a314875542f465354557850787638412b4847484d74314d624e7a52645a48552b797065704e6c784648484435485642415653734f37654c376a466d737770435a726e4f4d7158655471633270623544715436615135766c574d6464586b6553714f533737453875335a7a6e4d375556797a763757334a6332624c47496e66714e76653651544c7342415554587a4b6954674e7663337857584a7a63694266385a714a344e4f593165662f41423757614d3832686c32547047335359684c6d4f726c766e3437354654392b453069436e417350367a39353542433778584975676c7030746e78794b6169796532744e41796678757143357150644e70542f7863505a3252755a7548794f6859673174494b5a2b79522b776538386856486b306e68733364525756354c6e4d76357275566b4262725964315a6166787079494d76447a685a6336694f4269794b547647536b6c7230417852716c536172563363647735546633427653432f316d2f472f7a4477394d30746e6c6b2b4257334e5833467a30596f2b52654f79325078737a7876636c58376c3746543479473047416151727370596b4a77374f5962364e7475705752354676784b384c382b582f382f486b6c574a705465432b445962566564374c65546d47526364314538654c714e766f4153636e2b4c63507535534c4f65395165382b307142766f616b7879783174595778364b2b726542682b5565564333777533575675564a52745565506675763658546c6a4c6e5a7a2b314f4e7a75726d576c41554e454148652b4d6144724472624b32726159347a6b55522b54586f644a76446f2b7150706c67335464703637553832384c716e69784b7351624b45304a32634b4b38575570795836553934416e764272424d7961573856796e6e7430303734354c514f6538362b746f4e712b4c53796a2f414c5055546d7a6870367a352b396c377a712b4f735a7a6c487969584f65384f6531617a2f58742f6653456e45345a5130554d347566684237654c623968737645544c4653796f4965382b456957516c7a69662b5754653576506231587a41532b776444686f614a2f653458667241716a705343583773623744354c55357a42353878494253306777314f392f754566614841527049754e6d6936416936634b5573583231314661666651303947494b76647a35566d75797a6e7541484d3933434565475968376778426b39424d69547753347074536b7566503035694367766b654252726e4a6b3869666158364d444577345a634433657776366a753573424c6b74665a6766494a4d573845796f3670536563703976556e776d536b5050636b6c78754a484455482b30503869397072453474742b49595045684e5145705963457a345a4c4935566d4875475a58415366753746596b614261767646666f50657a3938396e43416242596e53474c6d55687869753164637676424f7564314a6e37337071415764594c43543753574b2f72633969663130552b2f356c56352f4c376a6158385476556e52394d505758787176547070505038702b70347035454961464b58676e79445854544c6176724d2f7135364636737374557a6a573367664358566b596749426c715672617641644a507a4f2f4b5744302f715a36552b6a766b4f68692b574d7452586f374f626e36557273365855516d756a4551756c334275635a4d466b2f774130795a3066544d3172426c636c4b634e4c547a4f36383952716c344835555a2b44616d3164532b62635a6446566b734555384f6a667a6c614573386c2f4a4c4a36723952336a2b7438554b4775534a4b4279572f49646c794476614e316f6a77473566344366686e6b2f6b6c366d35492b756c4f6e6e2b45446c326553624279386f38662b3176703674634757334e4f644b49614f44526d396454304b457a2f7870676176327969622b716132704e4935653049642b572f705873666a3136352b635a506e667035342f774349346d6835466248346f6a784a5a6f696f786e3675545631417855532f466b364243746231634c336670706d6f334a644f38314e4f613370586d33445833493957737a78657954794449386b53784f56646b4a7a36733351596d724d3073337448632b744142476d36583670564334576a7a67696c48774e4e4a736c63476d334d52467034774f6a6e397638412f4b727a33316b2f4f54385a387679655041336b743869717330623975745a4b38636147446537453869696e7a7638414b36704647504451433541672b36365a6348464137707050445730347270616d4230652f2b55582b54637a2f41455039485048497464646454664f664c4e4c79526b6d6c426f5630387a686e7a306146384e4475532f5654734d63784d3752663753397a66636b336d552b487363544e725737765544787262444c4f364452506836434a74496e476c58314635713048574e49507a724a5855384967577163576446626c4b457737385361443936765146302f69722b516d7a2b50507149697a62676f3873394f7470785a766e4869476a4e644d6e516e374e476d54616d6e736e4d46374576302f73494175714e77477842676b4841344a314b52654f484c5965337a386166575830793957665372785079545038673735426937336a4b4e47624f306236664964374a5a4d65614571324c73334a68327441636d5851574c436d36667a54665070742b46767738387139625266486649727a315978362f547a79505939556654727966623063617547755452783879475961346471696d75693439686266494671584852724f496e6e63356f5544705471593454644e2f5373376f6d736a6a722f4148642f79444431632f466e30397972306672535836744d3170593575576138443361554e477671614c615268624e3970566469312f3841464578706d537966363466594a67646673314a7071576e7771504e756d336c6d6f424e5a2b3470564d59702f334664705179516e577172747246464c46324f6f593559394876794535786578676741482f58627870587a6b496469587167566f304c30442f5976492f5a62513432382b5165385879686359565666652b754c6573575074554248376d6837422f706e5a7736393479373335706671304e6b4f3656536f35656a7732564278504248723253786c37467839584b5041393374366c51475a68377a57315767783434377a396731384a70753730794d6861564a523153746c656c725235794e505a2b457a7644364169376e5063412b3976395a396a7a79507674564d37714b586f4f2f6f6b776550396a466f634c65545530474a554c574c6a2b4e50796534566363414a353758666f76633433723577483053414a72766d7070535a4a51636f64524e442b712b4958464d774f63467655754e5a4546526b48663953512b516142634164304349436946656d6b7a534533424e43696e712b4f524b6e4e57676b4d5a4e554c474d35376b74627a733375567970703834414637797a37666c674f4b6c6f4f6f656838424b2b5375732b525539354b316e657264396561736d6362625144574f517335316d2f3841645078664e384a382f724d43465054456a7458525a3863567268435161354b357a4a52453143625742374f547049536f4258434e76364c336949463769447437526d30514f6c6e3443666b5a354e365758616d6667366d705644434b6e64794d2f7742694837575671335a634c6337504f686e436e48724a666a34382f597141616d4f4d43525a3150395a363949746d5a486644432f4a796231467031386e77795857386257703847704e2f485a70506e73744b6c4b374a4b716331316f363143776c6e43655a507a6a6f6339383953584a724769546974576139526f4a2b5876725036342f6a665a34393575764c6d386d384c386b44574c5231762f4b3973625557486f74314b6f624756616e426f696252375735576779657a2b5368326c6c58387a552f7364744f744e544e657a596168617639776238767647504476472f4e354130632f78653479566d624768426f5078476a466e2f4345343161746a422b5a45746e36574b31702b494c445a4e376d71442b72786f61637a6a34685858726e2f4148516679522f494c307174394c504c64624e6269614b49704e4f374e307174445839382f4c6d665357344b69622f4876573332644a71484a56796d70494e42626c7254705432616c4c376f4850542f414c4d584a71336f6d364e6658506552444c4b68724541344a7576656c6c41696f66726a3851634c35763237356a455139674e317a7634644f3866685242656f6c6a4a78596f69486f306970492f38415675617871534b706f696b6d6659456630783150652f6f3364466265414a46484e547a67447247396e704a714b6c6f5a333250523056476d6d5767324374746c303634576353585353776c6973682f31332f507a34666d2f52545838333344585035333744555034786f505477766a706a366d6745455078795863374c2b7557435173397839415449786377314d4e71776232312b7a49564e3778476341565171626e364b486a2b695a417545767343684254353567354c437159416c7732396477795554434c676832777366467770373864456131646e3074796f6c4e6e743061637270382b305671692f6c5038415a306f354b49364b6e4d705766566b6e394837476b6643783363323450504d4f59314338654f4854753364784d636d5659314332795a685a7565756832584e6e7830357136716f567a73576c5a456170766169676e416b5253332b6f6a47597a304662757549315446416879567a6a4f7669773434546f58464e5933686b6b6c2b35676969697a6e7434626c2f6f79396a6b2b38532f726343462f5a345947333479594a6f6f68642b6c6d71672b544b4f57513642642b796f42333176325246386e457a4838703956337639413651464a4c5975515630694b4a714872466e4f4d35324b4c68306771614e69786f48334d6567435830766348545566312f6c542b674e65502b4d2b5565533131532b492b4f36336b35676c785754596d4c32302b44613536562f62586e75366d467259307a6a3031382f774f6c784b4c3344376a704d7848586b466e6571336f46366d2b6b754c342f7265632b50352f6a6e2f414a4b36386369662b556d72336f796b6c7a61464b334a357442314f577632363967715a5753695966374179366f414c2b7156314b32746d4c38425362434b452b4830584b37786f756c2b7231514c73426a4b75324f364b3364364b545451746678417a69656742455a6830306b65772b4e55484b43434e584f6b564973344878765941665a557a6e5061326458666438615246524f4469566b3042594166487a33394231554456725a326e6f72716f59684174667063423834714e7a36435575786a4f73492f6b514267585449327a482f6b662b4457416e32474a66535566314f4d346c7843534f643745416c5a37554b706f7063436b6b525368775345414d2b44384a6d5444426e3956352f4c376955707a386b326e4a3964734475632b5331425073653664467a614f564f414245565470584b396e7867392f73506e3246414c6a70456a7a3357385231562f424430582f414c612f72726961586f372b57486b336e58342b2b75657a744f72394d50586278337955717645396550547a312f786e69506d486a2b67523571556f31474c55742f417a6e55392f324857535648773864572b765364326e7a563734485748306e2f38416b7a50716e672f6b583446762b51666b74366637333433366d7176794a766e4743595365632b576545614979325a734f506b364e7a354936716f33564a70764851616d546f554b475a38314b776f3537653356325769644c396f4f727635442f414e6a79485778716276783639544e50507a6e5a4169667074357a562f4d773962584e6f4879584138697a336335477a6d6d796c6942746f475252685136307a636654486e703756696565762f64362f734f4b2f71503841672f38416c4e2b4d426f30396e306f3834504144597066704f784649387838527a772f6374717552614f424f64535538785a37457a41787450766e4d5a37446c4955687a70727130763073462f4176563746694f6278627966575a492f7567563345374f58524a713270726e73305a5635614552395335686a63374c5a336b33303653625766774f67712f7a57724d7a6d4f6f3238772f56767834787a6e654c6261462f466e563657672b415067644c6f36744b7a3054612b444c71717354324c57466373644d72484a2f6d4c2b304a37524f53697a6d73783167546e777a793470396c39326435466239473756537345485379656464566d685235446c48546a54593870733075574734576c4b384d33372b4f63626e6453325342315a6a4d54486942483575666b4d486c6e6f766d2b6e547a67322f4d717655466d354c73317a4d707379416b6a314d2f5250752b41755674594d38382b6930792b48715746535a3842767363706336564d577a384d446e4c48594541316e6b4a692f6a72484f6a7066705154724762715952575045544170443137453943556a3747386e367766306166694a79544c6f466834677a737a556a4d444e7061616c54576373667850494f766b716e6b6f507234327530574255794e344f6f36587346432b72533446304d2f7174743377695a57616c65574b732f4f747435316969625864724a4b754476616145727a39542b535243786937666b4b4f67654d6e35474e62752f584c342f7744567976352f74396755394e2f456d2b552b62526d712f6b6956465a33324d42396648766f614f66504d543743396c567866496c354945792f307a474a4e6f4d35692f706559694d64777536723063386f336d364c306d337838744a50515a3437566861643535387878304e616135695777796c71456c68774a316e514358476f69365965392b656473784f6344637630412f464c4667384a30756555614f7056356270723577636a577938335078382f5056504b367251727031724f6c3255503457345542467746436c6a7675416b4437373837366b7a50414f5a50525877764450796a7862314b394e4a4e442f774176693031596c444d6e4c716b6664596d6168445861635257506c766a31725a366b632b662f414852324b556c5a2f453573794c33367862736a62487737796a3078662b50332f77425a502b5a326a6c2b6e766644364a43394f2f566655782b78654165512f485a566f5971746457705a56484b74696f66625a4d44656e6f4a70396e324778767470646e4d57332b39306562386f7562317539522f37666e68766f76356533316f503855764d76494f5944764876464a505453666a58627774353948783754444c6773704b6f76353759576e743373414566636f6b485339796e4e4f744b367332724e63312b59746e30336c2f484831482f432f7744474878543138643476742b472b52743856623466336d7879442b4f38776770713868784a6a6f685935755457705a616b786750666f4c4550382b696c796a4f7337363675704e4f3149677672583638654959663841634e2f467a306239562f4435386e307338643862386e6f394a76556e79326948556b3066556966434a574c506c70354c3369574c544c55636f55394869584f513652697154614154576b323064533165315061722b55524838672f4c2f7743355434762b54444e6a303338613952664976457536336a456e706c42342f6d5a326a365a65572b493358354d766b4b764e5469714f374e304679753044575979384556774136646e506137327a574e436450467476357678433250794e3838384d2f48543875667855383430734c4d78664b66794668373658657457666b5a3862523977532f4e3470355271424a6c704632574f6f6e6153485863564d3531342f73307a554e456130724e39505569503366476f4b65552f3231667857395466502f5666796a3157384f78764b7250555456356f2b493248354f65627265463634356c446d612b64506a394173327a6c4e6e32425579684d78484d4a4e39394a4f66536a58314b78574b323749306d395666787739432f77442f7430657068657050676e6750713536792b55316132423466752b542b4f65502f77446b39666b57706f61412b454c7a2f6a69595366342b47794d4135784875417a62387a464f63342f363172652b74725678665a5563302f774142647238645964664e39427679682f466a55395a664976567a3141524a344c3667356d3768636b3842587539617453724954756c7079632b613679696d6b65685332676e4534777053496d6e6257337a472f54314e7530622f4150352b666a352f62562f4776506d394c3450522f774253504776576e314c775835586f626236664270363369686558365733314f4e6a4d306d4d4c364d394c6d663841464456476c7337766d624659774a756a6c6f3331373832364e744f304b2b782f3750763439656e4870623433355a2b6658354d352f676e6d766b703558565a6e6a375a7648504570746f633751526e456f717339643231706f7762766a494f6f45446237774e54443971546d66616232746a5230393152545835512f327735767879394d4a2f796339417655562f72642b4f73797565523275794e5769507a4c783344792b61573546742b4d62474d55792f4949666830722b4f6e73516b2f30767271512b75626b2f7742583039666662336436374e5159666a682f62742f4c3331353854723831394d3866302b2f487a303638675a5a712f77416836723062522b642b5574766e64522f354336662b4e2b7733504c58596c67324b6f396c45385a31702b7933366e5752665830365469333753333551322f497a38557679302f436a78726e71443674656d2f69767246365165503155743250556a306630645a64336a51773863486a764b2f457168656773576c6e4958394b63545a383336446976694b59715a70716165724f327474747643525476686e6f422b656e717434783431366b2b6e2f7743506d6c75656e506b30744630753746355a6c776551616e5450376b62744c4b32626c47496e44444b39596f64372f774473726d453750724c6f4b625830717a617332356f424456772f795739464a4d62786631452f452f3167787649394d36645078366a476a72383579392b2f41614d4e4a59302b48516966487a353559797162777166326b4b5a33394439476b317a6d6c754e4e53736972644c3162564164722f4f665354315138667556705361576a5466344c356a34377172467462684f52733735364f75633255695153533557432f75563975634831773663347a3074452f5552714c386d505436444f2b446e6c574d574e546f36484e4e6a4a4337546836496f5478647758753065674e6735665668376d39467a7071564e557154715373374f7933674a5852366b2b6e2b336d7a4b7776492b305a6b58326c75476a7675664c58792b523878327058517a6a4d3855387a66307058366238736676483551396a7a6a626149347746636a7a58526f74796e4b3061656678616c4b434b476c4c56797a536e71555736515a504b6d435633334164316642367232435a674335334b515059456c35356c35446e614e317339384e7136356f447979467366452f566f4f666157627836522f48487877302f384162563877714f633166346d345361474265522b4b7a5657582b5a535a55756c6472554e2f6c73596e37306231672b7056484e434a4c53574f61796864566872622f6c2f75372f375464507970455a34514c4238334c466f3864794a6646374d6e647a4c7378546174367251484371557062626a51356553325642316551556a394d2f594b58506e6f6d2b466e7a6462396969497a33344773656c366b656c613433782b70306e573730356f6e38584e4773674f324578766b55796530364c69596f6858386442646f497a55516343646e772f5653353139742b3768496a574236715859694f545a47646837755235436d6c37386252544a724d797976646f4d54336c31763257537968477833547246704f4d2f62396877416b4f464d306d6573357944336a3371492f6d6c62724856526670484e65586a385475774e552b617232713445584b69524f5570356162416638524d467134795159754249705857596d4a783369777654587a326d7a53384962703256747258733645634b323335766a6d646c543376397465684d3676512b57367078665258556f463072416770636b666374674f54474a775058483448424b75767868756576516c4f2f5064484464334f415467696158386c50497035703578644b5978644b7564435246466665664e386f386230664f46797269517a546b664c512b72356c42504c56513155674f4e713759577a444f4d4b792f6a35364b694c764864345a4f736558463065355641675a565570646b4b383252687770702f6244367568436d3357533057494b7348386b4f7955476663446869305a766d4d4153594e392f4342793638574e6d62383265366f616a3550564e7a7159766d306d55442b2f6b2b517561444358382f752f31734575526b4a2f723264506f42473031554944346675664854506d754871593646554947713648375362724552425631613556703737506637314b542f7741384b69564c6b676d2b35792b4a4b4c6b6e3246426f56397158627173534c6e3061535955727a75733779475072476657514c3365795a4d774733336851706267586d6a7a37477449487a4c30466f575978777a386c42594a6f2b514a5a7131766b423158324a3355703730353268372b75532f346c47544166546143536144364b65536642585431413430796446627a37316c4c4a2b764f4e68464b744b7849552f6f413658786950654c2b73644142457558496a566f6c4876536758474d7375587964566257364b5852717146436e5330455151694242782f7741582f4b614f44395a582b54516436783030474e56436d4164456f5453687955436d75632b6d644a7a5673464b57445038416245543934504c3553542b77536f5a7753494f4572614d4f6f476f434f3530483330544d47594b55774c696f396c484a56726a48356e465176394b63786673414863452f6b2b4c69763642486c61744369684c466f4c73366553364846307a79614434474e2f557953574642724746557675475157663841414e4d43486e79384f45512b56374575514f534a3033304e6873366a6d5479506a7568634767785461454f55376e4635375345657a6958554541546444336838787a6c457845395241312b522b54585851716a4f504f5179763544566f49697a7930383564466b695878436c337835354d6f2b4679424c7244466c507643596c4a37542f4146496b5230576d6842516a6d63706a51356b3145356d36633839765a5a35666238424a44484b6363584c496d6d58444832415a6b53576837514570775558314c7473314c6d647967516f45664f56434d2b37362f7742615643616145394767694c51676f543158464b6e396b684166784a53663941586b4645744e4455483070744279306a656c334a704e464c6f3770576a4d546836524c4169704650384175424170534845663665712f5159564364656d6d30317230757a394e6f766d78492f3332383173544f35576b305434744d7154543761572f3567325a767a483879484e414579673235474f2b726d6371353878697037634c6d30544a2b6342616d526a78762b576153557a2f41413949684a4b775748313039595857424172464279344b32784f56564f69686b4d6b71717550726e66786b39594c6e514c6b70634c792b775036525038675449374d69515933553841487a50357035496f586f5a5a3332684b2b586d6a2f324a6b55555a4e423256796a6241336e3178304a56384e66734d2f594445474c2b6d6754424b74616b7230366c68324a6f4d4147646b6d646231327976734f744c55557a355a2b5545633863505031332f414848374570644b6f46386e6d4257517a7079706f5847664e476a555a4e42524f76545a6372697a4b7045784e503841517259757136637744702b784d32386443654b57546f7a444479564b6578325364536b4b55385837567658473165736857635873726372524a42445373534935754a5341574f6a637877653057414943366b4d646c7978715450417a6b635973476168327253334f584456737255765162376c4c57414b45336457327235666839386846543963756751566f5a397a6258715775627078764a4565684e52313258615a6779492f67706b5131315465324b4b666b3944564779592b65312f5073574b43453947365935746c702f75714d4f795475427a626b7057414252566e6432463744696f664d4972555667636f45704a6b705074452f5865774d6e572f4a4d35616d484b576a527136427931576e6e556a37387956475270366e796941527a676e4c65625261586159316158756a4873616663514a676d3351374d367a503742566b7435784d6561624730614577726f5279695a315a4c6c4b4e5639615372716e3537544c32444f78594f635839424676766859755835764775337a2b516a71767a4932504774352b2f2b592b3939695759762f566d476d4e7a66637968494a54716e3736696a6e5770414573372b5071732f6b30746f303946536441354a37384c53704b314a614d504d622b4d6f7263727334686b7a30632b6272576c395547543247794a55344d6e6a32664d503136654a49747255693732335136486147506961624a5955446c32514f30732b79705346334c79593642362b506f476a2b48476a70316e7a343351507a5373374563755571682b68734239776d7461747657304d6e647a4c6f6c587937396a4f795664336566664a664a2b2f7031374153314b6b67526a6a6f71723459726f6d556d74694e4b6d2f77434d55466d4b705156492f7741626e56463947633568356f2f43435a7665414e483643464a3730776b32546d56554f304f7944706462644a4d6746554f726d7076545a476d616a5342423535305a75574a4a32766a483432644f7a562b6f37682b775a7a445762314b3564722b626f536e657a65776e6a35685637355450794b736c5a51554a6c3230364944326571634c4a376d7a55436f2f69615a7a336f4252706f6b3170484c387877332f4a583070382f774456503871764c4a664551526f325958697a43306f62714f426d5378424868723039326b41596d747965564c4b6a6a503331664b57544e6a414575456e64564c56727038654872394271786b7a654f3478745a70464a526444703042753252734836764c497a79546f69725251496a5570744266756c592f3442544d587641414e5454744d356e49693139544f656f46486d487033746551656e6c6556524665666b2f6a32766244734b30363661576e51645538587770494934367844725a366c4a6266516d6a37494637677445384a72626d4630572f6c582b58753134327a7854796a386866564d2f4662704a5a6b3547643549684c2f4a5a724a644b4a552f624d4f644c316a584c2b6e65333551447630776d41775534455431393170357a476e586349534f616a49567065325a75693532376d387452563771574e74316d72615261462b6b742f776b656c5659702f484c7253714b6e694a524a4877382f714f766d47336a6d42346452704c304338583855362f516a5a71306662392f55702b7a6f45756f3438367064496c71474e465445712f61774d4c37454348784e447272546133794670597a5074352f59726d5a47506b3641516a54394b4949386738374d566f5448594470456b754d71452f4777316645595448596c767335333546747238684b355536465235644855367564342f33526553365359633943735035614a4e554d326e58306a424e433136326c517571676f3172427a7659333467636b7773624c4657485147314c6d463549542b6679564e47685137534746516b4a4e575177777350502f6636792f653034356d67304b307144732f6539374578453567536e4a3039767965693536467537456a50484a7144545976477979556e4e6f56506d696d596c2b37347173394d307a4b505955696e56386366766d6570305972574a7a475147707433624d65625661716775306153557968336f36644664326d75696749797063566e5855434f614e5263576655352f77426e3955432b6b4459446c33666d467673385131392f775a376c7a6a444a337447585a55746a354a714354644f6f34456c41494b736a3551343047336a556968314a2f744d67505439756b544662546a6a417558787678373135395350535078373075322f584c6a504373584235507a7879544a7a632f4f6f7877717157744e74453177304447706e31766e4b42674e584c5361524253625449596d6156744e6f714e39503765586c487035732f6a7835742b4d55586c4b504266503841786f504b4d58546e544d72787a79496975694c4f5835544c436568555946597a517a544546614466686d32356a2f366a50306d544857726266585637645262766f7a36412b6d2f34392b443538337135672f6a33477a784d436f7139535a78796b37586b6675316462665a56525870703663632f4e436f31645770375343354953702f7a2b427856746531356d6137766b4b59384b2f4b583864692f4b4865336c622f6876685070676e784176416354556f444d794d3379507971564d72724345314550474d6c7a325541796a6c4a6f4e534a307a473336316657326e54315064343755794a56762f774277583050382b78505537303839517476797a4d78584f31637278723141394f5048504d526c327645337475756b7178365979586375774d716a5157783879566e574344474d6e6e3030663145614e346d74717a6e4834687a643944767a493951507737314e7249384e3851322f552f3062753054462f6a766b6c456e68336d4e45333269506e6b376b366b4d546b3758746f686c736d716e5a396d746e4b4373367867685a7666547271635a7473734c62307637714f31716332562f6a372b4a766a3370523552724535666b487152366b31342f6a325976337237314630766a57486a7471307444354c4b6c39565136597971724c6b6a5770397842542f4439313954642b576f3045767a504a723969763152302f4f4b6150567a6e6c4f6635652f77416c71494c6b6e35484b3256555a535a38377075537879464750305a306a396e5063626b4a636f4b5167567477374f7a6c364162356e367a666c52366865702b4c36702b53666b70562f354634376d362b443435762b4865506a3437486934322b7964485a4d6a444e6c4c4c446f5a394872517034644b66706764594e2b4c6b376b5630363132527069714c39445371386b73386c33664c4e7279665a3871714c56387638414f504d4e334e71386b72624e786d5a6b366d74626e7034717033386643587553796a7153524e38557043667847642b374733736974664c546d6f3871643165667048566270356e4d6d4c4a5a56796f41564751495a4c5375683664424a5a753073584a4a6337464e673730707565333254673038593342385970646d59665a787042384b487a2f5635583347616c377031364a4e637a374447466378664234336a6666396c484744332f6d51706e4d383039347457624f7053686c57684e576c68723778354768317958545532325a79586e2b2f724f645a396736726d4b5a55587637534a44377a35776636675a5253342b54577a2b52736730374f4b71666d6762387a6b6555637a5364444c796e556e62394d776e6d483551706937523758636149744c334373426a642b54465454496d4b49356b79326330563239526f70492f323665336a36756b696b6d4c6d70777745324c4c677941744b666551704e6f56443548724a7452787a686b504e35644c5858705331553030704c73396c564a364272587969694e5a45352f5a7155556a4e4d7732314837534136417273363875765367326146306a6e6f43424570525a395573383269494c4836566a70592f6a7833425237557273366450375470494867646b536f2f36302f642b76455276796a79484931726c565a324f4869484879386c5171634f614d307a756e526f64544e524978504368424e524f373972322f59585a522b3661524233546d746364593469506555444f70354a3061726e646d43633536425a4d317139536e4e6c516d5178767a3238644b30707a574c534a7642706d7048322f496167374e4f7a4167556d7539732f795a634c596b685773766d43314e437443657a74676f566135384a47794e59726c62784e644b50734b41446f416d712b622b7243552b4f2b5374784b346c56794c3054793947336c554e70783644736e2b4b756d446c6f5a2f43443638595a6334384370764f662f4142676e344d78762b663841714a694a36685057386d74715157516446623162585765784b6b6b45387955775431534b513271455332506775473559462b6b4b39384265315a634d314b6a624764336544474272795a314847746864786d686d482f48797170754f77637564534f38726f436f53347a4f6f54477377364b794434666154474b656f66617458643834452b706a50514a45756e7170734e6c537a6154644c5a7a7077346d73587379666f307334756964634e567941584b4b706c2b38327661424c4933562f672b767151436235446a7a61366d536f7249567367524a4f7931763130785352464673427845487746525a4f4e55314e43356961746933664e7a6f702b7758394e742f78666551485a7635326c4e7a7839625456744c423039696453683639536d6162565a52313661566151704a39655a526f4b6d58514e4e6a6744337967424b63344c525749364430512f32667444596b39472f5539477a49632b6d3779566d70376b4d7a4f6452506c356567704773784b6872584879555a5741346c2b39587a58752b52667447647638415846375632342b51337572524e6435465a2b754444316a71716c70374b794a47387433787a534a44416964525652444a644c484e56522b6d2b3979615739417a4a585036792f642b76456559582f355456542f48656d766f666973564c6554764a65566332655957584e716c46624d6b30327944326d766a766136636b765a4d386c6b576b5876514130677833623742504e65302b736a7831536f6b6f304f5574516165472b356b36353031704451593030337a504d486b53436a364b3347386b664438616c682b6a39356577653862442b70627050384136315838647057317a7a334435423675614f754845647a71352f6d333556544b34317451315554712b715046394f5a7a446362662b7a516d57644d30313764762b33394271776f2b664f74794d2b593132664d5a543165312f65763936487a4d6356565375694b2f6a5a77414c2f38413439706d2f6a53762b373965495850695172734f7442304e447354594a2b676d696176694b4261754f36696c67396e6e37514a63397739412f774257414243305771344f6764454941686951577676772f6f5a584e6f6c5258396876462b3852663052516b5669363771532b41476c396b684b663365307942744c656d7448734e31544f56696d4d3642524773352f397a6e4a4e7379303942776e3861304c353373762f414c2f6162654b464c537a326566722b59656e37716859766c50475454757a30642b77754e5a7a336344706463664978373263536e6f577066365a2f394e75372f74536f4f6747676e6e694f63666372596f6e716b562f47314b71312b4832684e747331546c3861376f4d2b4a4538594f6e62796c507648355453414e2b732f6b4b2b59544d7a4f5a45735639543677636a6c72374e44782f445556716135717952397459446e386c6c2f523648453539486555636535762b6c3379705a7963415a416a766e4f796d74457333537363796a4f565879626b6c565a634a43766863452f57702f646448746e6f426a616c54396d4d50693968794f465362566a4d2b5543703375472f73307136567a67704368696b63734e4e54684d6272672b4d4c457345576337386e476b4939396e33506737316e733448644b78694d444669506a676d7136585a327a575446333571337a7a38702b4764314e4861662b53597753427a5134422b387a635a71392f732b487264473761456662784a4b57644d393731734d6e554453524a4b524e776d766a616850394c59624349573865336e784b7053526d6b41492f36734c583947765454314339576431666976706e6831376e6b776550376d36366474556e50697a386b4230374b424b706739642b6839744b304939394471443539666f47494347657061745969625148566e704c3670532b6f5350537a79447854567a764d6462524f4450794e535632632b6c61584f536d7157367354624b347059394e5032652f496e674f416d7350334b4c2b713174574b376f34795055522b4566396d64666a5750337a48314c356c656365653335353657626b4c5851617648305a30365562713044574e43394455597a51474f5854593734593233744e71756d54476f344e54326e4d7a4665576f3341395663337962307a6c58692b43666a70354a2b51666c5750685450772f4839586b6d5a69352b30764d4752316b46314774505275575a363839383766656f715748653149304f2b6443427a724d5734327437756f6b586f446c65722f6b2f38656a7a4c304f38503855763149586554757a736c7552587a7842773634775a7552745436463332432b587830302f4b2b52377279423031424b52543051434c3759365848537a797a384c50452f57623037794a2f5550556b39504a345135765137757332356e6b32666a5831584e6d7633452f7a6764716c4b57355a715651662b6b4463326c3343634854786a57745765586d6b65652f31372f7472326571506e5331526562387539436f746c2b53684f58343334746d37586b6f654e6471376e7a732b424b6c2f477956327371586c36456d347a4552454b656e372b75767447324f7a7a6a624c386350375a587033365a2b486b7a51794e54636862757070796371383434754a684c78396351564866536d646a4d656374474653365a4748386951435a6f324854523832643965317034447959666e4c364f63394b767943395178586d555a655a732b65655373385843664e454d3434637a58716a6c644353694a623839307054697038342b32637a55444144706578506f364d7a616c6634527075744c49486e504a56316e314f4776712f6677527045465455644a307a525431305a72584341475a41597453585445412b4a503841572f647a594678656b654a396e794c764f7a4135644d664a315a7369317a484f5633585a68485266546d316369574336452f6359514232667449766d4a6a5139685a5774756949364339322b487776302f77434e6c57355373754c4b7733454974756b2f6c6b4b58567536444556564437767230542f4964416471364c49476d7633764a536e564156575478657054546a333632487149342b616d4547474a38665232664b495a66705330647a574e73636c697762304a4654706e4567414b5a2b6630456f68736a3079676e6f3867307648394f696431734d6247576d686261374b4b3869796571477a35457a4d585174796d394e497a4b7a5743644e44432b48675239366a4b6c305569307031517965554931484c724e664635654e4462514b576c2b6a304235646e557641784773415470476c77385655755a515a3161586c646c7657553472455330635651586a726262325a365555396f476d664d2f6a69664b6e48646c2b315045314e553030775443505368575365674f3351387353715a6d6c56536955467a4433567a6c375a54325578756f58386433475172445370366b714554715739566b7964566a663977304a556f4b7670386a3867585444354f2f7665614e6c6e78747a484b43757172526239633230636d4b63704a38656c4c5351664738466e444266755a3333306d4448484167657a6f43357a656f3475486a324e39763135364a4a79633450314d53356c4c496c705574692f774239492f384145652f467a2f4e662f46713133664b41496462384b71494a6c5468786135317470527a36796e4374784a4e33417159502b5047437775442b7934662b50764432663564742b663766594454593831704435656966774b6b4d5530547548764f457459383433362f742b542f4a6e7537316e36392f6564352b693652426f48497035336b344366475747676c4e4a55776b7a764579733979566434516e38692b696e6f4d48764439702f7743503639702f30457a384638363830394f504a6648764f76416479764638743857304636336a2b706d476e6a63752b5956304f357750694c6e7557356a464d357a68416648456f766d366666646c4d5261753233573345646e50476637336e715a337831342b656568666a586c506c3959525a32683542692b56366e694d6445555a4f7373736f7776347532622b516f6437654d374a524a375274636d55554a4c717563382b79316e684675515648367a66336a76586a31456766682b42355756365577766c672b3231656b506c6d30612f68544b745539656a44504a4776364b47433551524150734d512f38416f6d7732545832616c4f61656142793438323955664d505562794c52386f38383868325049746d3177305655622f7732474b6d423878787a4b496549536e2f5748466f56785168395a59422f72563159627853754d566e4d7741457234456b47657577574f6e6135676d53705365446672385638694b5361505932645949382f523835376936504f6d4a3935336b2f6e2b333244426444574b4d7568772b323043664538396a2b4a54573075456f314e643043583179662b654349674a6877653945674c6e64424c664666486d364e304e4f35557a44386342333637723853316a6661414d2b515a5653724557433579654b2f2b6759443849664b5066622f574e7262766c416c476a58346a41327248784a47544a4c726a71314b336c512b5433566a2f41423352745953506b5a2f36654a72637061506e425066616d4f623533553134395248744f364e5576477a66486c7570754f70507366706a774a694a4b614a7446793039483575574e59414e456b73365354583076724d54383078457a4f49427246385274326f4b764a59367570586e7454787063492f697a4d714d563135744336467444375644333561545677566e78664a762f71542f414f44546d4d3147796e703370554f6f693159684e4367304a35744f4c42475079477a714d364366694e5052644e6e30444f662b6b515632315a72427961416348557654383044703334482b4e5070503667654546722b5162566d586e397a33324b3350452f424d72796564486a567970697042766a4d307658513263326a305546553562412b2f2f774466597166536c547a2b38744578574f4931512f4b4438582f546e304879314b38663957694d6e5a64546d6c6f34726647764d7938696952566d33645634762f474d3145723565746b504b366c396d354f784e51754d336658666654764e2b74654135715739543257624e687a7a43786e46466458483969375665706949366b5856516b5853617835546b59753448764c67482f704e7a474c6b314664626e3668746e57785441724f5656445444345161647646727351796d654b5038415931636f617a6e735a776543482b66364633654d48576e53666d436b31527a736e62326237545a3133496f3532766775633131726b72397978345378464c4a6f654c46534134436661302b414b503841434c52326178363963516b6753573076756953625a6e525575655038656a2f6d64526a614c484f713476334d6f2b4d6669496a635841582b6b706e4565663076334354645965654650613233794a6b76684f51376d385a64544334694230424733554531304a725a4376687366384c77634c75434579794c2b71635a38356b4e5a39457075544579756d65702b6251556442764153734a4e77675a7659496c39466e4a386d507030642f59554f6a6f37376e644d54584149636d705579626773522b7077457379756c6962565342485057787176676a734f63633275786a4f7634745846457850784d4676487034494571346555716e494355766755716f6e6c376b725a4b4d764a5a617a2b5643617543365569634d6977635355742f6a515330766c6d2b486f52696a394d735664383074484f5841314e637a3655797a69755a66325549424c433739702f776b5442587877454e492b787a7a4a4c516e6a32664d645776374e50704652366f666d7034337575794a363848306f3850327655505762704e2b48417a4b386a4d474b505376706e63504a522f6d6e46387043314c5074706f393547307a436a48326d2b3353384a74796a32332b527a484636506555615358554d7179504872327959643753696d7a6f6b3447344a5a683064637a6f396f4b637541754c6947787031577173354d34466d666d31367838786f762f595356656634306571506c4f6e6c376136505548316e3952764963305a75624c3452566d58565a384474676d314e65684a4c78574c6231372f30697142553548377770524870375a457a657366687150515a6d717a3663374c66525450467764507631455a384f6d3776386d636d6547645743454f6479786b756e6e70424e632f65475059334b49474854542b2b49456b614f466d4b61542b667951727a39504f34646a77396c77496f6a765a79514157354245526146487a7148686d624e49674a452f77414b5146786d66475235485037793334662b6c50354c656f336a76724e45654c345836312b4b546a6a6565356a6970784d4466384d69546e772b4c6475507557673639615371576b5663684561574a53744c6e6370414f55656a374e7132705731653357777166385a665361664d384f4c78542f786a78767a315068643057546a3337575a34377165324f34526e795048736475704350385463645838623361616a70506d2b2b41752f6a7a4176646255747a5a78744735666f6e2b492f38663672654f366336736a5057376c557a6f3833565a78577468756d30746553504e6e304e5276747364396a6330596c683864696c6732492b683335356b3533314d317831794f6950726c3646654c2b572b5036474e3566394a43747346585a6130714c44797247356b6f337973755175773141366d30466f723644374449506a53303458665853334774706a45316b613334486f463670346c2b4f456e69506746456d4c44494c505053324662336b4532657976514c7375526d4a384f5957544f72532b7556343539662f41424c6e6731385931707045375461766a4d43746658504852346a424e54334662484248784a2f766b324850733962624c48544d72517177786a4c53386d757a3353673773326b6c7748716b704c6e642b6d785636544d787837683555667a4c3949664850425861336b31302b6e676a6f627162746a50586c356e554347336c5a35326a6e2b4f734a772f79445a38322b373955746d4e4d6449534d624e55416335333656356e6858694e50505276774878723151395976475045664845644c7873654d72747138685a5375363350784a48616c3935727a784657546d73544f585a654b4670723642482f334f7a4c543357317256726d523331394b4d7a466c75316350774c786965535350366971383750724878755078715448796f7a5a567147335374742b696972507553316a4b676c3461536e587a697a37505079576e455a363448474c314b385a626837486b6a3865637a7738506276376e714b355a7862307558704a5850526e61444571597963613462695652774a7763722f4e5365724d6c4a36496e4d5a4871587a36505772786e38552f787a395650784b7a2f4141374a7964663044686b6f6b386f77787973385a63326849363163483841564c48656352305a7446552b6a624d6d7a356e544e436b456d314c75446c6e55314b366e446d4366724e2b4c6e6c766b4648704435572f5654716568536b5636766b66707a34396737362b61766d336c574778756a7062576c54647976447362445638522f5761596a596c4d774732546b5a706d757046643066464878437050536a3847764e4d526e6444777336302b4d4b58586f366d6a352f77434c6478632f506e7051355866427073302f4a437a3734616c3362334470747a77542b675853734c7076694e733231597a695a366668476b3370332b4b337270354a2b492f35542b716e704835526f683647656b587178355a4c344a3653354f564b4e506d575034725a487935742b6a5a43367156495236577439737a562f7742477341417a6c6430474b316e56705855705733616d766148557630392f477630372f4a623071394f765844307179636469664f66414a3556344c4854555930624773586470654a7a7a7930494757374f306c75367a72506764396e4b703630674b5137714d4a76616c7256734e6e5053662b33373452676f77382f64394a76417366786678765268303069506a4555304b4e7648754c4665324c59306c6f2b316e364d39453742552b7138506b6736354b75717459314f6474613839625947655636512b442b6d336f56744e394f664266447645736d7666395439384c734b61614b7055327672354c66454e4f2b746f32574c476764525176537537366678302f344f6b44767946472b62586a6462646a614e4b50377755486a6e6a5039712b6e4f386b687079664d622f4c2f4141504863786274484f454c4a504a4e62545442316a4f45492f4f506a365755534f37536b4c6e4f7041334232576b39765a737a3752474f6e722f67654c356c373175712f7743326b4630396f364e44544254576c57764e2b70394756337445763276346569747666596f412b51334278686537317736514b767164492f673931484573664d4c70386635482f595a554648364b64764271466935666238612f31385238393754453533647a2f656576414e4a35474d4c725a336c495877396e4d4455796c5250714664697757566c41392b516758483370754c34534c324c4476752b45536538387675507a4c61475875343149786d735a3138634878697273796d4551646e706b6c343056673734523777462f4c51566e7a4f596e32382f70743566507236396451753970453448304c4e74427251517374724b62686336356a356d5a7136766a4c35444b7167683450445550386b6e3746424378763248384831395350784f4f496d50425445644141614b6e6d6958395a3553754764316c7445344c4c534d6b72366c6131697632683750615966442b6e623873444c696b7871646e41324b775971476d687a644b58503433746b4b334e4c7678306650514b6b386c61746763554c696735387047615a306d2f5038416237435a2b445a314658716234704d76366a334b38696a765372632b542b50514f6470704a3332746879663079465a5375414b484a656c624c503841576b2f593368524d386b5236396442362f7744304d2f756f2b69666c667037503472702b4765704f5862346c6b7079745854764f58532f6b677a4e4b70316a4d6959727250644c4a556d3650764961544267484c6148473844345a664e763750624d7a75676564662b357a33376672766958352b394e70542b52656d586a586d63303832364f366a787a4b3378746f7a6648617a617635563669567869547a39716b304759476947582f4259396d686e5a78363776376a6e503337676d4b6d70715544554362567a4b6f4f6968416f6f373334545576346c723678792b666f2b74396e32756c332f414139776a763841732f5752766638413236764473337958386b386e617542656c6e65455274386f7a34615853305346626d6f6638337a7a4f5974677547634b50597346566931344332754f6d453266724c586e6270375a377837462f52475370625532522f766b38724a36366674514c64647349784f325861724d33516e46557058494c557170362b796a36796837374f6756435843586d3336523878313938465a7675385379686f344e61314d7939326c326f504d322f72533048646e5a555a5a76574a6c5673464367334f4e3267706c4b58412f764c46706935353764666c2f63577a32576f6e4d30796b6d6b51575a6a4a634b365075385461517836477661554d7636504a2b4763545766566877435948484e7353507563656648732b596f6a31706e386848486f7a35626649595a4635644e634d495a61743157686c342b557830515a536830484a7964494c6c772f72727661756c6755473436656f34344c3078696645637066554c794e4f61666262726669305650304d6c6b304d46413871663239334b6d304247746a50722b317a6c4f584974554c4b4842496b584f345973364b52316b654f58386e7652796a7833386e74543036394d5a506c31664d664e374f654e795a6c6a324a797450627348492b736a5971464c5a364636764355316657714468754558484d73694576543035696162723851437239536333657776544c306839575047626362795030593953367646764b66557678786c4131383849334e4435642f766b565a564f50794479722f70367659375246616e4237766542714e4a6e62626962577277335637497337304c556a316833384c38637656667937556c39447654435031473874394164687357663474386f667a512f70325333795266563655756e745a2b584d39566c4e4534652b7746557161344b4470666c6a336c613831756f727a52383038333962504676554c7a4c79625a304e33314a39463359506d65484a3564354e38666a536654544f3245714c776e4d78394e494e304b4561705938384f616731504a59552b354c576d4e5039544556724e596a73332f384149574a35445634425a4e3576357635536b664950422f58504a7964724c386f7973415046764976462f572f5a6b6346654e6f535333454f5434764c704a386b575043657a375a666f6a6247626e4a6d7247657a48772f3047726e35452b4f2b4d2b4d3650674e654834376d2b503575783468507872632f55334e6d6256737a336a6b4674364d32704a7738796872732f3550724b5961792b683369366e4b63546a313070744f374d5947752f66705a6e4775716c3652474d74437665452f7a73355154436558792f4a30325175523833424a6e4f47617a4c332f375151586238302f6c6a3768394633374e466c543051646d584b43365567353352582b6a534c6d485a552f704c71347568615745766f392f3067432f5941456f49314f345a4f37784854503671474438677a6f4559675939376955485857706a634b3172494753725168414630692b486e744e70702b7a2f57674a7a6c57664c506b653369763138717749315a387a6147384641652b75556d4d6f4b7172346763414e46706370614a6c376839344179343255766237732b4b395138624a773570317244374a414c5a69414e54346d4d487455744353582b2f61333247522f77445a4c336747646e46534b6f36557136503273672b75564464463454667336466349574d41334c4e4e5658515032675a665a4d7a42667336513539767977472f585473614d37464837312f4a5a303946764356432f356242466e474752636e54326752426e506d4c68462b3373636246714c6a736565526b356c45354f5966515a78436d742b646a4c4768534e4c467a766a705556522f4e2b794c5055624b43443938642b7948702f386c6f4f6b2f77434f6e703736712b73575056732b6e7558733232354d432b4e514d4d655a66714b356c446c4169514d335843686d654c4b6e664c5439582f424a316d302f32667770354c7a577334735056522b4233397649504a2f546a7753503130385a7a4e724e3852556d7a78794479617a497138656b5a6f2f77756957697a446d53784c74626b3156456377677473615852684d315a5a417a3970344e585778612b776448736e302b384a394a746b73334f7750464d6648722b2b66684e586932496f46544a2b70524a43566d666e56505a484c2f4f4c57626339737a6c4e586d7a417743464f705347557a4d395a454e2f49543044394b7655447871544b6f5849652f72517a3952745349692b4f4a497366673557764c506b7967636177734b45752b2b6e3551483761796f2b4a74464271587457656d42793838712f7461532b756b506b677433764270646d4367716537452b7975636e6e6a69754b4d746953796a757050394b396e3134515847645449445154685730722f667647764e5a38526f422b546638415a653964387663796448306a38726938333863306e477439656264646a363248705a2f6a4144453351386632633857756e523861566c52505149634c35703666654b66742f774261303970704563334b4f503372542b4b663542656d48724a582b504d33684768366b6571566542445834376a2b495939586b6474556f30366e3264724c7973374a4930786e5039555843535a503263796a45543673656e3030314b5772763362616a532f6638623276484e626238553878773776464e7a4f744f4b2f47716934716d4f382f75434932485630575173516f6c39456e6962674835444c6f6439337630695936787a353965596a3936575150726d35394e36626e7234355679766934534c55756230797256557346754e6a74516b436f524d76397768385377446832727a64654f41324b63554b2f363959717a69726e6b4a6246444138434b622b514133703430782b426454716e6a387250684d7076655a3942494a4451666e64627a73366b6877614678755a31314b2b4e5954776b713669766a4f4c392f48444f785972583050384149306c3135434367622f516645634f4e6749484f707264587855374f68576c7a47366e516f2b446755484b304a592f6354757558316e506631334435384b5766346753456c634a70364943742f7743324d6d72364d7a69576c7757487a34744663596951722b725237674e68396f4d4450326649774a7636782f682f354443354a3273474242544d74696c374e4f6d3579714a5451317a6846614263585379334d4b6850572b39786635704a596e3849392b533165584f654751396a434c2f6375636f33736451745a4c3746524d6e6e56746e617650582f414f6f653855724b6a34415978665144762f4b666b34616631573263385148716e617476566f656c33556b4b46492b306f5a3141395536312f564a6f2f4839676d4f6f344b692f362f77415a2b3076622b69416468307638442f46584238772f743857666b586a52374165642b492b74555758736554514966524a6a343642547a507a726f41314f69364f686c68506f7046636e783177476b7a4d476953655364535931746c6f785731523662765444795446792f516677456a766e384d387a6838573857314e633745333958466a322b4f61434e634d4b624f6c4e49324d305a382b512b567948654957492b5664305a552f4e77326a4e3766454e61765576315639486e6e346e7465612b542b702f6957363538582f697568344d4778675553616d6c706679484d756a4f38666a6735314e55397331507733436c793348784e48493075636c64346930634932336d5265506f522b56506d6668766b3366472f4e6656625970356f39504e39506f664f7239584b31594b356537576b334f75334a663379375744424b574a63374f2f444d2b62355a775355393345567670784d5a725868494d2f6b742b54362f55625571384f7239554e6e496b6e547a49387538633848336b346a354a6167714c7970577a704e314a50346e4e5a7259384b6f776b624c2b2f66513150564b726a54794b556d497a744654656c486e4867656235543439692b433676716d476d6e556d3771733166462f4e7462784f725069626a6e2f41434d6d6a3245473757615536666762663367537a5135636a326d6c4d54557674614a6d4e317475665872714e334d6e314e332f4146613864322f545a64586c574f796d3561764c764f3879414d584c484e38672b6165696a48725358764c79412f6d30566658357833776666392b7530302f554a47654b316e6434445248384176786d38627864372b347436535054644c4e6c65542b537a2b4957767678394465376d2b55654f334c526f36434f526d7a635a43536358724f31675343734f6877486e6b3477485856744d786f326a7648492f304f394f56785a2f4d4b7a4c4333537638693038336372686a584c753535524536316a733667497a482b4c58705a384a4361447a514836333173376c4a715a2b3937546d5a6e7548597230443941736b3030766c586b74386b554d65547a546e4b7957574f6562786661314c6743687063697952565a2f4a43667a4a73456548783379397a674249633937783942547635462f326a665372386a6463764e76442f494c505448314e765656326736305a4b355049396f6e6145396539354e6a5448503266562b38344a3176536a3261507768547769397637717454326d326e473265656f3833483554666966367a66697235414f48366a5937457245586c6b65545a556a43777475614b706d665161624778382b4f727451316537337255512f794569766a443579482b752f53316158374d634272464d484872536f6b71654d734e53715471354d7167577472584f6b3071702f512f49747a76695830534930396430543968662f41454e676f54627153716d726763796b37314b53397747534a4b67465054345471312f476d6330706a3658424a6257414354345377454258546c2b4872363866714547436b6f326762773635526973454f3933742f564a7565316c4636614f684f336a4b484b4a58456a372b754476797362386763754d2b6c49316e572f4c38394c35584a575a4c724b76692b474b4631417850755778674373766430544d47682b783967746f503331352f4c37686f6e6e536d4d566a782f774174537555574e466a307356616b51365247396e782f48326863344430652f4d4a423776597077676f6c757a495764373173353267314a57376e5337496247533862786943557570684a6a6d4e516d615a5838347a7673703448764e712f684a6757456c3855782b30502f6b364655387a736f354857567143535959766d6d58704f4f5369706e794f732b756b69534b6b70456d2f477a336c372f63654e7262766c414931614f35352f35546235494433566552624f36444844782f4b4f7361446a5a774b4f70307541556a4337442b753859763339534874613178427830384b526a72535232302f4233384a764c504b3863396e7a545754506e786164642f6361456175612b4d7534666e6c31503439617a2b76714c3170595a70357a352b77756a6c39704b416742334c7136735230364430552f697a2b426638623571666c33692f6b57396b2b4c3561496a2f693453305150504a3338733164394765566e783655632b395671536830487235386165756b6d4a516d3558487161755978504342744c2b597638416242384f2f496677696d4c702f5538787a3533575a756a383854325a52374576736d6d65393156416155705a4d4d59557955425277383979654e4535524833356165764e4a4869682f4d7a3851505076786c3951764c2f47743643686e6a344967756d46756332495a65585a2f7742782f774247746b34537279364d737277564d6e37564230583054697732433476363954543149314b35676159656b767250355a36492b66654f2b6f33702f7638416c4f64355434767170324a74444f494f555556772f7741576b56554f66377a735343346141734636326f5a304f43455a713448763174534c5535753864312f37703335622b4f666c5a36492f6864366f59396649793076484e357671446d685a7a4b386a386138737861537a2f4a7930654d5761786e5a71466f576973757359355837614b2b2f396e344f5451302f6433314b393438382f6d6f5338386a364d73384365646d547a53644c78356c4f4b2b4f4e362f746f544b64476b3264646a6165674b685336594567497057443364326e3369764a57746e7a4f547134444f696f5830544e347667476c714b78704b676c64393475536d5576637268644d315a58586674523849503666765058674f6d2f38416259382b3832785055487a6d48786a7a4c577a4e685068732b353468672f79705368355074523154687077394e3261595169377853696f75383451386531302f736144445763324776574a6975616a302f774470662b532b7a36316550707963344f7a2b5132777564746e70414c6e5a665046657a2f72783271474b637a4b503547654f67754b72336966335076306c543850454b344c616675356962547767634b7637787553764b563646654a53546139514b64743637317870306d39437578654b33522b615469794c4d2b4a64452f454b367939516e70556674736f6770504f76326165457a4845634b4b4f33533061505752323574446a5a38354f572b767647643451756e5569716f502f616d756730632f624f4e446e372b506f75446739664947424c3432516673734358736e41474e6c6f6a3170543238645651393361432f626c382f6b46634a6e786c2b2f774454326333442b2b74304431794b44437431445a45724c325338615651736e42667855495767585038412b52595335614f74465a695875514947506539396e3942625070583649616671473756317444525a343734726b5a74643672367333554f657479554f716c624379705077716e4969547a6f4133357661594c446a462f4b332b733758694a78486147306550364134654a4b43504b4e6c5639306a3266446d797572523431525849713543594357637647706c483433417733643479774933545352754b636e4e77337a6d4e7645432f4f50436645452b515948692b66366652615961574b6356565762564e514455787a615465507a715173576d696778393162756458396a2b526d4a4d7a71567044685446703637382f595735343334502b4e2f7146326e7858573864353456743559736473302b4b3358324a6b70566e706138567664443130656730696a2f6b556d563745756d2f59752b36373342575a764848745a476f336e586f4e58503559506a5869336333517a625570763841484538386a77355a33544f51576a49624c3761506773497a4669415a53514a6534352f66593774413039316a556e473750416676566a38556657503063385038593835383668784d37786679706655594e336a2b35696554425137626d6c717a304b686871632b64784a6f7249785a774b2f6841776371626e506a4658557261627841716a3056386d6f38543951764861632f74725937362b3575697161735a4a3661717639695673624b7a764b5a65502b4867415168312f552f344d39344b34752b704761786e714f372f414b5a65634c6f3276464c432b38716f744b574c63706c31563348444c686e734d747873315a7838356b2f7970434c5a6c56307053633666354377453049375a33697447497448686b6468665476787a303939573834765433314f775765556547655278795a476a343335506e2b366b4a4b2b4f36316e465a654c58494f38566e6c5833584e366f4c444f443374366f446b57376e744d317a61764c59636f76377566687a50514c30686a2f4142557a66464c4e2f7744486a4138697a764d767867383669632b7448672b58704c30693872384e386f386772795a414d513176494e784d303153585664393467446f7a6d354d336f396e6e6662336b39714f30504f566e31796f466730477837727030532f4a51787a5675565356424d584833504c6a43712b3874692f6c2f33443863786f34582b583735323337672b476c76655754657872767569786b71533550463148576637494f3957324e61704b435a50336e425a4f49744679615245435534323044575932324365646f736d526f685135422f486355724b7a646f30646478656a2f75464b78714a3747683166766233336b6b7547703351765034362f555a364b353577547a3276544b3963507a564b6e73347050457557484f64625a4c314d726a4a617936384f6d6f7a714678462f77445145576e336749785a41397937484f6949457462314c45587a4f58647a713750675168704358744a71794876424e66666a64386e5747302b2b7a514c68776379706e4461445253426d684f672b38564a5a4b507a7051796f5a55712f354b7234685a2b68483550643753554878683350742b5741627a2f4a4f356c42746171686f4f445155354c4c465849706d6f43696975365752762f48663254436f3555514348452b2f3477396c414b4274336363347948756e655270716f696c4c69473955454e4b79536e33756a374f30705577527a39574939755935676c547744575577652f32732b482b6f725850574f416a6432652b5378525748786f7446376c7a726d63594750787869706956786c336e316d46514a443367732b506a7638524d68627864713861346a684959544d39335755753733715a7742792f6c6d5a4f397146422b3371486b342f474836726e4c676f3933784653422f4e3751496636747736446f762b505834342b42424c34663667656f58697a664d637532477752796a6e6b3150456172583564794d544e3150344c616d736c715a564c5176674f733637374a6f41564f464e4b3363313953334e4557322b76304851484a7a54384631683858335049572b492b5065526546753950384159384d7959737937782f543270546c4a3243392f70384471764b717062745455705a432b7730306a66574c725442657439504765626d6a7534384257487142345a355036336548656f666f586c624a302b5038416f335a6a542b41626e6c4d47443468356c712b537a5a775a6754364f666e564455574c514f6c484e4456577476474b6d52385a6c37726a707445784531744d396f6351396948516872707a5779382b3150566f4a7265675073485178644978732f6461695952526b53535a37425942694469456a5a7a68734871695069722f494e584f545039794e6373564865646477584d424c4f696b336a664f436b397136435247686a466d4138615a65786a54393470396761425a6a4c423677686c6d6352364353354f516878687370614a6b74676a563753466a4b4b4663353370674947583636686e763434484956633670515469726955786b7574777146536a486b677a69392f57442b766b4a64444f763431627a57302f664d5263595452444f46315636324d68614a484b71304a6c68444e585a5478615573623758505a2f7553634c474c367072674d69703731494d62333431557474372b6f4f713161507045465475437633306f464c4b4469314b763149354154714f697a32464e5333394c3630766d5067783872396874344b2b553238323064757637612f3841654e396376775475683846387032394c31712f484c7138744f6c36642b53556650702b493561786865577034545465774a35666853356147536958464d4541656b682b4e4b6563327637505456784d636c6f4876632f476238795052443879665431667178364265565a766c754e744b346d6d4c2b56476679727861705573736c6d50766f32792b58484a64637132447a732f37594476737a6c38544249664a31644f326c626266684932667a614459427879325461433762644d4e574c65674232613571666b47645a55636a474b6f7158565273424d36564a392f7a4c2b41684a532b55416d333036394f7443327252623450365a366575706442447056654f52766662336e46375832556f6f467a6c2b2b7a344450767348726d4f4d666134446d494762666a6b6556722f7743554b2b503576706835372b4e74767076347a6b654e542b5165472b52314d4c784b65584d4571494c5073386834455a4a5270554a7431452f5637526d4349303748733972556b6b443944324f5a744770756b65665478335638784e7a3441386930744f654d2b496e7156356e4d6f633148464c63756c2f44533966786f543869756e5550336b7171706f57446a50706436725245644a46352b6d6e6a3774326b3466494c343836355633636d6164376f6635477877534c6e316a4e7444457a6b4c4a574a706e61426d74717749324e595852393162596a4f4f4d43306e2b4c32546146476431737646357a64613359717a64306d50692b7769307a51344b556f356f533958436c6a584c4530652b62672b3576526e3649534e39656c3273457a42546e7974756358386d43375061484d316c4b35303351475172736f6f63746738615442555252675536755571363167546252385a386e6f7a4d753850464e58697a354c725a4648786d776f704f77786144574d435a6165662f446e6f2b4c3944374845796d59782b7934307a3033522b4b665830472b2f6f4a2b4c486b586b76687164445355724258716353334c533279645767375375372f4852612b6d39396a7134342b4a7a3676656d666f2b336830754777306e39794c473134335477485462306b394939483079385578616437734f77384b4d7943727977356f3430387533316c39346972785a5850467746506e72486c48306a63657033362f774471506958347a4f5a6d52755a346235666b2b5159343565566e2f774167786b76366f716a7870426b74554e6c556e61654a4f5670326341307548715a3142774470614e727569376a555a5458484e61636974746a786e7937563142304e724e6935646d7231644875304d455154496c5232696e375431723750305a58575761543266436f66737164537a6e324a776f6f4f323676694b473961764953623666546f6434726a3658644e4574797366573533592b7a544e6d7174703241787649463132367370586679697951736b6739754f697452675a2b7a2b7278475a69504563342b654c34386332623549727744787a6d73316d707178496e696d6a55724e316a3072666e704f325648636d686c7772457944332b2f6b3355735456787151703034357876342f49442f546a304d39502f4c73716c586b6d6235446e5242563164506a374e6e61596a2b54546b2f423236654b79355251555437584d74534a597130365361666d614c514544502b6c727a5759774d76576e3031784c6f764670764e764d76554c7a652f78782b702f38332b6c762b544e2b4449456d51792f616a6354696b6e7a2f414f567a5931726e4269484737336741476b4f644f61576e64793169734352656d663569666e4e3657594d336a5068763547487035536f52696b54366c654e7638723373564830376d31533557365073397043795734654e3652704a4331416965563948744662543072546d644c6a35436f764d707472317132316570337231366a62336d586e7437566a346835523339352b52344974724b4b5a497366457a563936554a4e5375697157656a37644e503278455a2f75664d2b597a574e756e5862582b6f326d38672f754e666c316f59766f586c61666758707a584c36566555355731702b54342f6b35707039574d6e484e6339336a514b3073326f2f48797054526e753556773265357379672b794c4b4b5064534e48543570693038332b3056312b6250355a6565666e523578366552552b433676704234483657327a62746e6a6d6c35567a5932664c7452355a387567433538315a4b583864784d6c6156726d6751757042494c2b556b387470616464474c633236316872486d2b542b50656e667254364c6565613272755178656d586e324c7537632f6a654f62484b6e7a354f3639386b303838484855544d7154595966414577434c69346c334a754941744d54616c3436376873542f64632f4b5830352f4b7631722f48337a4838572f4c662f4c394c303868586f5758575965376e4b527635724238673534767257612f316e3051315761425430424f756948363531316e772b7253696a5032656c744f7570585572743344662f77417238792f456e2b37723651656e7668336b2f72586e2f6a702b52507057745458654a2b65647a566452624c51374c70747a6358796867356574342f62726550724e4e49726258394d46724e69314a364a34784770375061307858336c4c4363332b6f6634792f7742722f77444366794430493350586944313538353245624838523437397966533062395066737952646c35554f4974616f637446316d6777506175466e736d617853654e55457852692b767262347274714a3735534b76376c3334492b6a305834342b653432552f774879487771763159394a2f48643633784852686b384e426556762b444f75797671332b4d3571536e537a4e6f4542482f4363432b633142516d492f59617474396531306b45665066376276704c3568364465635a6e714435332b5376704e365659574e7461657234643572367239504b377832445039743279786c53685834664c555641736a7163614870437272774b4d70796d694e573058726973577438684e507863737950486637622f6775682f3539357436636549593369746d64682b705068717973334a664863767943376d5a735a49593430437771636b66393635577436425830424d722f55424b6a557a4f74626c335248776a6a562b6248353965717634732b652b68766b2f6f642b584f312b536e386434545558513953764259465259627233757a4633616d634d3831724b6d3565665a38367834477564646e506852784d375148703074477570466f76702b372f6848597544387a504e6a2f414c5a2f6a6635726554594868336c6e6d3166686d5a3554354c4672654655352b44326d76527a773132364b45704a75616e745571776f37314a42385577636f5a4d6f6773506d393348762f414855646b615966326f504a50545838392f5558383176576e314a2f487630677839335638733861774f596b75446e6552667845314869544a33707a4b703949314d4b76514b4868386e4d542b6478755777547057774e66614974705630363174595244384850374f5532422b5248354d382f4c54304d7a74723068386c302f3548304d6137795549654a69596a61375846782f6a336b7a475a624f7932443834334a55626867415457307a4e4a54712b303570702b37767a563751675034696632312f786d396166562f38307647504f54383279764876534c316f322f4276423165482b56424a72346669335232427765616a5670616b694363614357424b564e316b7a667346776a636856745458314b3130356a347169715079552f462f2b32333666656e6e7244354c34642b573335432b4365735070706b626c506a6e6a6e7154526f7477752b5634754663785869302b616667597a737a763554637a56754a4a564d4361436638416632435430715a3037363970724536646256734a48364a66326b372f4146502f414279394c76583976356d6e3665522b6f506a6d52733755486c66703967562b4b654f61486b4a50306767376f6679556a66743858566f635935746a536e6f7355483744347836356232694b366c71653733525561392f6d372b425835492f6a4c36433658716a6b2b663841702f3679656d45723276772f556e78484931637a5138527a723178726838302b4264314d2b6c6d6b444958433953342f6962716463437a6d375330373657725455767432376266684854482b336638416a702f6132386a2f414255703961632f3035683951634450785a4d44314d396350574a6c323472796262586b363266662f4639386c4a454f544c50567056537a6c4c3850567439695362327051307577317454586a55327a62623456714f426e3547656b2b542b4f2f77435748717836482b6c2f6c6d4e3533364939566e2b6f4868323550626c36622f482f414236744f58626d654855574947686c4d366676722b463148444e794d326452384541744e2f5870326d2b6e573971375a346754764372507935796874357263305571734475524f66756c30625a346544452f69382b68793750646b43485638583777417a5036366f42516b4665624f376a67576a364d38713131654b3539384e4d66472b663466325553594a3136326c567336546f57555a4c4d79655647744741314f5743546f53373461627a34594f7a5a684f74707845542b5565776a30325a516e4938546d75666c35564376434f6e546c35374f41714a544a7331317a4479585274496e645a6e7a7261314c754e486838452b4f50682b337a72645a2b59324358304b56796f4b614e616e57545438585a7363755459726b69337430426d79395a5a7a4d424a54304a353876785338355038517341673750485479443544724a7959324931597565586541424c6451314b415932635678476647534c7a303963496b49314159444a59685857676f6841346e486542466179544576514b69534b6f34336b504c65534f735a5579436975583274366f6b50596f7573616a7366575566716b502f677139687a7950677a554e62452b524a706656525a7968362b44496647646e532f6a4f442f49644a5074474f6765693372522f373666694f6c6e365773472f65732b576a3275583161592b4970433456525a36616575752f6b6f32445651345a782b4f70333656336f4a2f30687748565572507167554769796d3536595a31615377306d49627a2b545951664f6c524278476c644c6e3075574d67304633394438302f74735076794c4946476b4631624f6130325a5363396c61366b70424d505a70673034676e4c5049626e5938554c587a6b4e65536e6a3148375073554a53537544307a63414979617333386c394a564b7a30767175756f50746b73544c4f47546d50576966475977334d2b544e536f523638554a412f5967614654664e2f5145616263534b75656d7162506a5a705855326370704e334a547169617539317a4a472f73784636306b5051456543663042634c6563344453436f7276584c7753393750462f483337666e64306e66627036474a4652656964505544524169345872476477685a584f5a423052573450634247596b564a747334695a35526c6d3265643772585533346e63694375686c77554a766a6b307134344e6969325771716d61796e6c5330737931732f584f547559304538365367537341435635755667346e656334447250645a4171473532527957795a4d314d31534334714f645832466852504478524d39677270674f7746444e31485a774f754935507172703673565073514f6e70756332464471573354773152636c4968644f6c2f746a41516e416c694366594873642b7a6e43505a2b3958464d4a396c65784b307750697251646e53314a33552b77373354444f536d667157716f766b636b2b734c3767744a6266625359484a4d6c2f52655638794a3457746679712f5a4573304f64363663616568536c632f5a592b4c686a3474504f3935796c3351486e36414a6c413562626b3870424b566b7564394b613351394f77776b375a323641334d634b525a4c5550324b44557744396745626e653162684363775a4a71305744796433667253516d5841304b736a64764c714f31756378557443796c5978637956702f516644384c6a76622f414a657878632f6f473832633551716e507965754c4f466446636f6432644a4c414f36366a72454d304a4c652f634a645539792f616f2b705831526535594e4c7248685656637a6c4a732b7658616255546a52314d67704a4f6e746f6f4b442b495852424b496146426b7450762b4f637a442f5772336b3163585a775a54775054675a6e57575275656c6d68463351484c614e4335383143376134496f6d6a7830756b7a51585150506430506d5051616e332f576343566774613433452b77545866524f456732534b535439427555703746552f77563257786f764a3131546d6a2b6c706334444e543671472f77424135536d33597a43534336367836373534644b6f4969744e695950755458364c62556b764a714e7a6d645479635061416d36646f633654697663596e7a67666d2f4a4d2f5755722b5153794c4f36647643374e6450576464475a61443033477a374f58512f5163526949383459394f533370776953586d44476730696944736c464c533175733068676d624864493145756a426f33486e6c62754e45575675714a786f56474850593434364b49675438306f4c4372494d304a4c6b5a33636a6d3675524d726e4834353337667558545136657746797a533255536f2b4250736f6e6e64625966774479687841784b6a354e436f343676747a66426f73624d425579395678314e776a6d7261612b6c50522f78553168496d5853507a457964774a435a356847654936744a31736c376f617933456d7a364d6b7245366e6336496173394656477059546364624c4d6b525979333437584654387977442f4a78417a7a596e307079774f6179436b6b52785136555772482b71307247766f556e6e78364172732b4b72656f574b6158752f59552b787270774a442b3276327044546d704e6f4d2b5236377a6e7030426c544633466c7134342f72555a75672b5774756b3973592f793066794d2b73354c76613441396c4d345445545a627747616b736f7670362b51736e515448634c72357362554d4f7447416f5572374678667a4f6756426334586b3076394262615865376a4c46422f543450722b676b31684b31387534646d5a6373306c2b6842627757304c5773706e6a4c46554e4f625038546b746c2b64702f4c3061514b7a674b6c54386e7730527872506e414761735038414d51304c472b6a557950354d705355667851356d61337364336b3738765336754f635578725a516e357855734b446e5449465268386676576963546b504a4738725057356e787464336b77513557674c77466d656f6b7254735257337a6670684437532b79325a4947507373497077396e52453445702b466d3538553859572f78684e47376f7356564d6a534a39354b4f34686b716d366b6d5554314531646333557154536f3657636162516f6450496131656f33366271612b62723541443953546a5974512b79596454364c31657770563135613567792b5566597a7a7067543733744b3877636b4a35685357314f7a41382f483538655961666a6e3547656f51792b563638433676476646594e67506b4a376d6870536b694b4c4d30714a66384d32714650313279736e4e4c61447034726b325561756c31614d5a70586c794e46633779455954456b30392b6e37463230385a54524857766230792b386b4a2f6e6c5944574e716e577870673776744d3154632b77436b743574737234416d44374e384d7951615a343161366f37646139394d6e47584a614a56302f4131332b7061326e6a30554f41503264616331704550466b6f41634b783543565a2f4e5a6253585565696d654d4a39486f616d6c395369364256746e7a737a446e7350704c516d5053642b756d6165686632592b6c30462f4c595878365770394d6f45656150383854355476614671496c654c2f57305379737161716c6567375370386d6b765458783253744e4762534f657a355355724b4546744553464d2f5066647962514252466d7a626d47734e494b7447746b37645769686275706f766d5537546662614e4e426e44396d4f7854512f512f5053302f68344466726d616773767548556979616e577a32484e772b57466163657339675349633661724f564a4d3145624b422b47726c6f70363550474c4d7665787936422f6f4a4a7544673455636b754c3278764b594b4777342b714e38384c7a314f324731424156524b6f715a69314f36746c446e4334486645356f4d5335503952476363597849475a6d68354c35586f496831736e6c76616f4d364870515a6e46493469726f78506b76625a636f5851684b743753343031755555436d2f5957487741444552306a4132305234664657384d4c4b79623834534335573831564f3570516a6f6b3635724730686d435a7732424737513742785975413355303842632f46506d707969334e6d65496d48703936422b612b5861586a6a4e4344516f7a384a374a3651446656463234394c356a546e2f5a51746f356676586f615836644d3032564b54587a3355742f362f7744557a7178486b4f71772b6a723750433550455a66475a2f487848436a6e5a55327248725133365972547a4c716e3073586e5a56686c6649397a6e4c614b674d314b3432677541726d337a75794b2b5636545565443769394c4d334431465670644345556653346d722b61774249776c537067636e7a333646436d4b3469635038414b6c507972412f3239313938596d652b415939515054583063386a51335938697a7443636c5939484b4e374137523437354a432f5072645856724c30737966743375373766673642384277636a644858777862565850574c326a6c476c6e6b50706c346b5464505173774e642f6a6d52677832775a75373548753659537a46464b714f39557a4e52736f366b7273314b5647662f414d4761614e55787a4753303137524d78306b414a6451646a3663542f45632b6648585949594a3234434862655a5565747079525732756d6c70444d657964502f48325a7965464e4a6f6a41556e2f776d4a6963534c6c3164584f7949696d7a4e4c497a6968794a643858356d5a6b587a36313045374843504b4a3266395a5a3576595764483637593075765847796b79544f6259476c2f6c57762f4144653771366b53465254304f61334c6e6a6f4f59367a33652f665a583254715157754769584e3046454b6e7336756b47687a3461426e507439754b7a4d39344665477752637264736c79496f4a50487872354371793055547070644478684466577376662b324334506a344a71643033636e623877562f444e35365667586c3646666a44712f6b33353535476e7832394f486b7854303872733263357a2f347431793473665555354d68546f314e416175434b5641366c5875576165652b74595475724e357048474f67314e2f4b373058306678323958376654717679506e6b46756434384776383245456853417a512b7761444b452f59356b3745324d516c58506c2b46426b722f67486336792b6e6266574c59477235624f6d526c4e6e3071593176336530714f6135767930414d734d632f62497061574748324a352f3962434e62696d576b32382b563471754a4a7051537a33717a6b615565304e63693672565178364b4a56764c364d37344d6b717442374b474d6d6f396e474a4f6a505076374668746d2f7a5545475131475873594f6e567164306871554d3666757876725338364b483970544f6d4b6a6c4e57654a4f5a3254334a34315833444a774a35386a6e424b39487a62747359664b686d7644703975773570484a714a694c6c304a6c43674439337430466b7370327a7655663254584d55302f7742627168365142714e62736d484c6f324751575779752b616e532b6750617539584f45414279644c7a524b3858726f365475676676676f41316a785038416f434936322f35586c6a587855326a4b65706f506b2b6b7366637536586d59525253537559373238735a4f6c7976712b3333712b6753666562506c653261786d635a77494c79323944366d4c362b56576d6872446c30346d3535577279757779786d50456a3876756b497057496f392f797552376b7441614439363978464b646a57613456574d5431467364556b32626f636d6d4e5861583255705556644b514f696669567248707a664c2f414a65396e524b595a7666585a58774553733674495a2f794639614b2f736c4570417454554f35337631564c615931442f47356f4c64383464506c6e782f625559765452384c4f32454e7348532f547a70475a3252536466385643624874665773422b463756547671486935522b4e6e4f6a38553362704439727669446e786b424b573753677a667453703667703554577931734c61437176694e4b7a5a7066647a455378696f574b4d794968653076654467366768542f4145444c59587a596c4676756d4b384f5843316c48446734456a79544972566a6c76435553487350795056785a70453366755767756d64524148377357506132393634764b52306e5a2f7669707a4772304764505a6b586e4a4454417a556b55674e432b456f6d6a4d3573444c4f306452304f4b434e327836587364316a6a304456703354664d716449366b564e6b6e787a6d344f4a34316336383966754a76666576356b70573477535434584262637536327a6b6930334845436d69446b706d53615a6c4f742b314662486b797a38564b4d2b584b346d6578356e5134317a304f2f3370593275797667494a73357a727465325771364e3874374c636c427950304b576437396a4c6a6c6f76374e475a4f6c58444c45526351637935716673647334784a32782f3159436966454a62476f6132625470394c4a4b343830434230657851624e414c364e474870534a30466c74456b76682b52736e594674633561684f5a51656c762b7a4a585a71656a6671687131646d567246356e446b6e703836324b6a57715a6d4f747130676758517854457935624d30412f3935476b4f554257795931467a67397137636649576c2b5366397750385276786874375436336573475972574c554f712f772f484b682f6c6b774d7573686e2f3948776672315558546a7048304b5067483264705654516135486335324b614f726576374f6e7a486c4c2f7536666e4634762f63553868394973503841484b6679722b4e38646475614e6633736f4537316e386b306535736563636c44336159797a736859414a5573776f6a7061776573724d5a2f51396e307030496e6678484e6a784c38466655587a765579635047364e2b7a5a584837716b5a756968466d6a56522b306c6e336e554c6c6976724b6d43342f3138617a45516b7061704948724f724554756b556c366b352f6a474c4d50694b6b6557647a7642764964587739763834794f43484f386c67726f6c38677151492f477965347167685374616c644764557a653859456b667652654f626a346a576576505848557a6a30646d64393031787456584c54775971486a544e545a556247413339723637767a6352386e5754415a48302b462b74506565515a714e706c3376614434775a434a656772686b71365953594e6153732b51766b2f6454423737412f3458314a2f454a6d51714b312b7a496643413537424f575947537a336d766f506f7336494a6e46682b7a53595272555836545a38704478522f4d6d78796c482f384146454b346d33616a4741356e714168306e6676542b355856547964432b4a366974597973655146504958654d5830637775632f7a2b50384134393543514f35784b2f643638416b3753556a724b5539726c6247636f2f58464d33486531636739634c6d7639704f464d4c502f41494841567a2f63306638415773653953322f446e7a453938593154793450496c52636e6479784e63376532757a3578474a3747444b4d7039715773666a58394d776d6130442b62424e667a417267544857597a4e49386f456c5533737563782f555a436c503841697379526a30364f66706c486669716c2b664a6a4a397a4f36484b71493264367a367a3478397a75544f2f563952584f727131647232554b512b4a72436c2f535a4c6248442f4b52724664524935497a35436e7073756e3530766348566539676450706e3732337245593354504342684834386f317369734a6d5a5142734c357179746a47646f354c69716e4a4c4a66614a636443783373536647396144452b39414164616f33546e64336857487858536455487938745661355271564a5734573974654e4e6e3233564d6e7259615956464f662f7741566f4f396f4133356661305470623765492b6c34643278457637704352784a583958357356414a71567862726155554e7a6e45714e596c4f4c4f38536a74516b342b7457422b373354766e7767646276374858737a767a32386638636f786f746f764f2f42664d6646356331692f73326a764979312b517a6a6d617a42454a556c5668516e52376d63393636532b75587a6a774f382f745848527a6a736a766e2b57663474572b636574586f762b52626348782b627954776631506a627074677a7332577650384f62516e7955614e444d703068424d38395643334a63665a334a706a43694b6731425251664870366e4c62546e346f48656630792f384a7138536b7930785a7430744c61614b49355a4d4e64385878555a6e553875326f3264737359326f703275595846324e75537a37436753594b446c766d4a693064777337593949636279434e37427a6370456a735a6e786d33537a5949496559494d5971736566346c445648594b5530496c576830646b79574b6364496b504b5674743459794b3858356236562b696b595950697669306e6c336e7666745352357344704e66546e5a4e4f576c532f7174717071636e51653646627a5438685130506d594970613770436d2b4c57347a7931454a464c764d59646a79333134387479736f624a72494d6e783350726f474c42776d36656846447336637031544d586f4a46763135524f515a474a2f596531646377516a624749785555463653372f67754f6e59384d4970744c787154553068794879335a7878446b5270546f396f37767633766459373541756f4a56566f44797a37446f38394a494259544f5a7a4f65766543487239363653654c2b4565527761394f686d5958384737476f726c6349534a6a6f68583356496634537a6b70616a4d2b48536f4b4741667371584d316c42582f4c375256726d3259366a77722f3358665637786631492f49504c3866776c5a39432f54337866754e355270356d534d62612f4c394b73747679427450437a5539736f2b53676a4e2f657439793349506968464c7666362f73314d556d3334687a682b6150676a6e5055517039795a6575373152563967724b65594f6f584e5966644c34324a2f772f51304c6163774f41703641424964493248384367637273676e4f375071536d4f37354936614f696f4530354b68325161686b6f716a357357782f76764845342b3241526f70393035687a6938763475572f446473737a356c7944397a467a6f6a4a624f54615232305439334a69666f4f4b375558754f6e436b2b38553044675936373575484954674c48586c446b2f7741727035535744507249356b396d2b44513364635854727068534b716d4455376c38394878634c7166335639435136674439464e2f5156594d64506b71336171724b4a6c5a3645536375374e4d78632b6e4c4e5648544e6c5430786970307138306f666b3656364a33505738766b39776d747766416832637149536d71794d2b584e377857686c4c6d30466638416b4646464f535430556f31633159616b714e542f414639537a746276656b552f6f4b47724f6f486b75785a7a50586f63324a3944504357706b4774464136756a787457712b7a364833756168537879735270436e6e795764495870636267427830666f417072794c645554716c54556c715a624f5839484f67713739436250505339344d4244744237575564464b3171533066647961596955432f596b516d4934347a7445436c6c646f5556694278436c415671435641384b6e67567175306d6f2b4f7866485475416b534c4a6a50314c522f702b4b6a3467547755784d544d43464f514d7678524574382f3756474848664d446b3250436c7a4f7451616d635652477479326436484f666f5072474836486741584c2f6e2b3332436c54574d4f63525775744c4f3837385450674d313836785966455271535077722b7651736935302f2b4164306d447a6e396142696f4155584666613731457242344a6b5331476f79393376517a6c48374259724668633531522f3445526672676d503645466743644279726255514c6e346e724741705a4777476f2b6343447150634b313958375436544765372f662b2b414a467a34675536774a35304f555533414c675576454b3249657a37667457377179347a334c5951722f5865435874483568502f6a32394c2b675657594c443565304f6c462f447236704b7a6f2b4d6d72576873626850336c7a674c5976396634653333754476543977427a2b672b71557848312f696f37773655683150466f7434457839353872705647784a64577635425748423533322b31662b665149652f7341764f653166526150614b66743837386c53786c635079417461532b513245786e654c5976334151653041642f6d5a4758742f6f5071324a55445165785264587a697571352f77414152685576396a7a71312f7639384837484f382f5a6e3858742f77435234726e4f6850635878597070593976596239502f4147787978517337615a487a52364d677570416632524533347a3645383366754370494e576a6e7545697974614d6259364176732b5157307a643656476757656d786a794b312b72647a50704f516443686c552b6750774a4c732b3853322f7051413579522f594778784f4773524d7a694146626261795a637753544f58796e33665a4537704a376e4f7a655a7446666670304a354b344a6b7a6b4836576f556d6e332f4141382f62794f65547a2b77417675514831675034677a7953676c6352666f546c776c64754f6d694e6c394478714642444d31584b5061303533495237476930444f33752f4d58643472444462345a4a6e3064716f355a744a742b6a44382f4b4f6c64337333732b37565a38615a666a315a507238514271636648634c394b36326d656c73356e50555a34486c4e587062356d362b314279357a58387074566b334e7a795652785653335a314b477847627056302f4a3843463847766958436c62567a6b726f784d5a69526174587135426733763176415056667a6a77395a365043756c6c346d526e59736674487978632f374530795863304556466d63473569304a76554d76737051444f784e5974776d4e7771767a7631465a71614d317736472f355a75732b30542f4a645a79586167794a65366532665056306e726f2b664e646e383631762f427a75523743454b4b41436131376f6756754762506735433772794937506b426470725343615a34366f394b6c4a534a73426655733478632f7773373867667239474a4b596f7a4333617477454f6e595639334c36752f7654376f47795a6175464b4b2b6932554c6a65355879702b59763841456d4a59667838423352352b6834434374504c47327655666c7261636274426e31366b46644a4647796d6876436e556968674b414c424a6678314c424d765339704e4d3033712f584f396135705069322f44366b4c786442663649666251335554493130524a6e436d75796b5849534141494170496b4c71505966784877666573615136505161445537676f4b5a55735535366b4854525567394b353261745370306c656c6a48542f5a44713436466b785a6537676d564141795577446e476363352f57426c726f566656323550464e655269344a61527a30412f6e486b4850747a455442575044712b454337786875396e755438416439726c5a784f32524931337a6a5030564d43646c6f4c4e6334747275514f645457784e437155724575334a4f7958506c51316770455075457331553054676273773046504a59726d46336863366e5372764258433745464454356e424554346c733973352f58637a67482b302b38322b7845594554555734326e7a44544c6e7070375972506e41614b47385245724f5a63632f4a3557694e6333786f53667a5544523964665434706933664d49644249434332725a7a7a645233592f73612b5237506958725236765941785635502f6c507039673870716e476c6c56486a755a71575661454d6949736a6f7253634c4e4a39586131725146435a4a37456d4874494f5432714b7a5773393439616e6d643235356636646556424c6e4133796e7950784379713132596d7063626d39526369662b4b67747a656a4c6f4d31486b34653072545a3763442b516c56792f7742346c77783167516a2b303936502b572b6a586f52692b4d6556704a546150492f494b557733686a584a304a652b523659364461462f484d6d354c61705a32427853666c567770793559344b6b384a3754614c587a4855646974485837705649474b473643396b53554f4d38677046545555556671647638524a7148626e75344b374b55746238596746693654705148536e647a434a7462465169796a525a564b69536a73784a657449354e4650557067524a626d587a395a585a7841704e444170344238446f753653317a564e447930663347636a45396476794e56337844316c67385838633950636a503841474f5a6d56506761336c6939664c733075555033645858644f79566677367966307978626c6b7079666d686d4f53594b665230706d6c4d7a587443746654625732505349726647396a79784f30506c5a703173767a697475797345613064433876586c437a4d392f5a38754c2b507932353365395a4a4b4157663569723544644e75626a7434445a4438527657446338782f4b3366392f6e4865654b654a34324f65436c656e666c7a65553331737a57622b68666f552f58434450376b735854475569796d396c675644776a6e696e565455724561665a357047355035512f6b4836554a306233362f71586c346d6c44794452797375587968314f39746557706b645646646a5251613269546e5770355250504e5a326d6c795a6c304e5336684b514c505470624f4b314651354835532b5837314a5a2f6d6d635262696a37704572486f3136737a372b464234376a733059666f47302f35437255713968524b36357764644f6d61542f4432787a37754936634272333670656f64666e464e326e394f657646695256725261745838546b34755a6e5565515657515361666c4770557a744379314d665055526d4c75442f4b3146576d637a5444506174646f383458397a547948426635566e5a5763654b62324b737376444b3037646872614c6c3476303051316d766934786e46725259524a53346c6e7755717042507a633739434c596a694b6a2f436a7737784452317974387a395476432f54374a7536786846354c7139585a73525a37785455574b507534714f68314e68536a57346a42616f7a3639695461424a6e566d5a374e643252333530652b6b754a3659356e6a336747423550357a343553394735484e4564387566354c435670624678627577524f58745a6f4d77636c554b653131706e4143503353682f312f36354f4d327a504b4f4f76357152342b5876597164704d506a6c4866477a72747a553650544e7746582f414257645a6163535743656b74636448326c56434c752f7a416e5a6339514f5976703038356e41376a6632632f4e452b706e3445733849306f6a4b54306c395a622f42546979613366657438573831617a796a677a644f48714a5a2b4c586438732f7a6658426678477267756f415a2b54326d4a72717a503434485848776a314b583650656e55486f2f357852566670654a4937346c6865524a7a4834457539682b3244523859324d34382f4a575565306f59667165326e6c4c6c55416d35795571456666684d54615a7445436b505858386d744c5a384a37345036665976617655727a6c4a59766a7939734f5a766a6e6a476c53476f39336c753132364e595a754c4834326e396f416a35534a3656535354373069415770546a6d3063745273372b495870763659666a542b4d4d666f4c356c71594e7138507868754e356c7347347335473572655161757365707076377032634e6261397771696f705036706a3336307a5361684147366d7061313737343444534430564d2f786a4966537a305858344c3638656e506b32703552354a34336c512b545159336c6e702f32697a53324e447876586b73634f644c346b6e54756e6b686e6e366469793635505567716f532f725733507a573562534e353466557a3159395176445452714c7a76546e4f336e535636724d767933756d2b7775654f5a6447726b59544d6637634d34315a39426357444753396e6a6a343259357672394f6e4761316932653049563568355434347244776375504e566f3447526a303171706652315363334354566936666b576c4c576a4c344a533043576b39724731706d6e6f6378307a4a31424b2b715969335749364467442f38414b43767959394b50565077503855664250534c315367383131746266312f55507a44453856386d505838623856454d724438647734617a346e324d4a516a647a374a2b37322f514e796a634a2b34657a3250537457645362563277504c6970314e4544672b6e4a5a6d4179685574536c394539514574367059667369617963674b72347834726f39425476326f4162784246332f414c79505863484b6e6f5453766f4f53664b4236326952643751494b662b765638554c7858386e78716c2b50334564432f5a77766d456c45437744514d456470576b7662796b6975556e6c5643346e4e3466567a2f5836447673724d6a6c474f7232694b6e414a38506a54456b384a76412b6336686f385230364436306d636e625238376446694f2f5870526261453948795472646e6942392f58464477544c726d39447166614758732f546c746336683961616e43334b536a2b51446955552f74724f67332f5a317970666b63675763482f4473346a2f4150537a444d4d7a6d6a4565664b624f6c45434f506e46696f4f7978307a6b62337469482f7269732b6534534a50462f4b4e4b546341302f4d3463392f6b48374d394666535a584b78457679753644493644344933424f4c306e4373456f374f766e7a457757636c503366443963336c376632646338655562626667722b506d392b545835562b6e487061717a576a794736327462355533485458716d6a78334b786d6e754d51334d6f44684d50786c6c67695169424c343445724c767a68374b61743430394f317037582f414350532f774373583445666a2f3663656b506b2b703651772b54656d7531486b2b51616f61513372727a2f41434c637976744250397842376a71436365344d7377336e6f324f4338503841633553566d70334458567661324c63773875663548656f6e6c33724c366f65516570336b48686e6a3367436579344867636e6a2f414935503157564a2f774346355363446e5a6b746e46712f732f586f757259336e534f2b6c332b774f45584f643159694b3172467477502f414938666a683431362f36652f6c2b512b6464385150453544572b574b5343696d2f782f6a6271624e4b4a756a596c553770584d7a2b554e4e687349644a50784b593333455533764f6e464d563366386a5a6e2b336e3461586733354c65512b4d76737469703855623731314e666d48455165794d32636f7a6e53337275594b3669583145795150374e69566758742f54655a613835706e4f6334487034385139627939492f45712f4b2f4650534c31613951504851546f365643664857364d6c4139356e354a57546833525a4e317a7265304d6f70744261352b3241774a7a43612b3935634d31335469316f7267624f2b6b6e39793779587947585254354a2b4e50714c36635a384f6e6b35342b542b56454f557876593153312b4f7274664c52795046785379585a76472f596e53487a4579512f68343551663157326c574f6d7057343357386a2f4d337758487a572b58555a39476e334f676e6f5770694561396a625859513733314d7a4c776375747273576156692f77424e45326d71573842494c4a47714e4f4d615535786b6334664d7637722f414a3944597642542b4d2f6c666b5068577539374d66624d2f6f4f35323143664a4974665579612f704250342f58434f775036376541482f414354412b7754704f304e336a32654f73366e4d4e612f56377a622f414d747a494b2f726232525a3547467432356861474866564834367657306647356b575350444c465038654b5633484542657a6b38736e74705a5250536767764659723037783551767a4d74386c702f4a507a664e485a45613862585a4454526e512f5572707643636d31554e6e355231303871747237414e58483067564d43776e424a712b744e36476c6a5a586c7a6e3139525a486b506a586a6670663569666f2f36573748692f7743586d2f362f656d5869766a656a2f77435259336b476472656d33712b68325a7a61777647506b75537a794c557a644b487674653043355a4f36414346526665486c496d625275742b7a3933502b716f687537366552347668337146366665746e72486965516564656c7670336a35586f44345434393355386968304c3954616e76304d66786e79534e6646525852706c4e46796e4a6637364c354442707779473062784f62567457764c6133455746742b662b71586c7166526e536d3946544431572f466a7865667a44313444792f786a4b4478632f41735a79393378442f796d4f644d374f354e474536726c6172305557442f4d666f4855653949485846493363334c716450346848474d384a39425554656565613446622f57447a366e513238763841487176377a764866467a38337a4d2f7944303239537649664778684f4b7a46646c3743377365535837446a4d38796b615545706e7a547a587a45646d7678664c74514e622f586b4c4c613850352f4a62664932614375316f736d5170354c59505752614d456a70306f6e6d6c6e705a5571655566634d71546e346b332f7743317861553755445838326656546f54636f55686c30716d7346364f7976416554476836325379703967304155374f477a7654365a2b2f77422f7847787957366646394137305563414f4c56547a34775342396d5171636e4750575471524f616d5467524c35636d666a2b4b5a374436414d4550384149433758543777736a34705667564842426864705a7a724b42645570556f36414f456c4850336f6c3277574b55776c67626e583935396a3264722f62742b5741596f6a583045727a6e6e506f71354d7a695348724b42436a3570484645774334467a4248354b434c355236615932422f6d594d4e644f2f6d794137757a6f547a2f6b7a483963597355315754636c346250636c686e5a476f584c6d2f37667839346c716c7473416b76506e56705666397036774d48725750654a4b4d374a70314e374c533169464c703555695071666b612f3841306d767268635a4c416e6444674e6f34585457546a304753596d78574647726b366e4b5631715866494c4872543269656a6d6d44564c44354f64464d3746736230486642543756764633424c674a31657a70487957727271562f4d64432b644545534251736b4e496e425078684878734c6566746f41372f414c68554749462b3366304873672f733855662b632b684870746f68443478516b2f44394877795a4b643955412b4c3766687265364e50527752306b4e5a5937534b643948472f387554537159506b6d41757a2b5437566974357248654f737671442b466b2f724357384f6e356a366a4e72745359486934666c63336852785a396178736a7277582b505a61333258547975596a343149597574594e6650536b5463302b654e57617a787258694a58364c666846355a36516159346c486c586b766b6e6a5746524e3378334a387538677538754b41556269395a65794f6870354a635a5155342f5736774a44435872712f616e345535384178625669335752736a2b532f6f48354235396f515a2b4b3532545435583478437654387477652f7655786c706a6a576b35566c727262502f414f6c30436b536a70443242706659642b7151523950505474574d5250634e592f4750375a7667432f55536a7a54314b385374386a3879706c7154336458354a354c6b726e35444e6b7256705a4869794c2f346c6e663841584f72346552534d53446a63527444724b4376623269324d556e6c47362b623661592f686545474d5a534d7a34386f4471784c4c65357454783866323645637972323647673666536b53756567566b396766664536484e645948796f546e377a79484a5443384f32412f7551366433676f564c66582b4d756a347452354c714c7a61374d3236507964326d7a4d7774577566362b507065304e45532f3539795270623045704a772b336f6d596a526a5064493865583930726239504e48382f76794144776e612f6d504854317353485265737375744b664a736a45696c38697a325835684d6c304369334532414c5663374d5a702b31333565644a7639656c3750462f63316a50556143732b6237526d58553539596d416f494a6570617273536c724a57683778345359657a3051386131696d6643514758744a6e334b3264512b2f5736686e7a4b477033766c557251627a373958587070466f6b646e4853394b684c584c4868422f77414e2f77414672352f722b4d7a4272512f686b4c35767271744b74663168356174625a6338312b316646664a635a445237657867487339744c6b2b7a34542f51433041634c465335665a3733737a3656566352594539746142595561322b3875677776613442593739652f7743586738715035705242494f41486c7631316749506c34545a5a624f557a4f3644722b3155587830505735584363524a577a6a2b4373424968566d74503965304f6c7a506d332b756e72376867556f7458333353445239726c665a6d336650494b6c4a52377563593030694b6669356d724954492b6d635a3948394b576b76316f466f414e6e43437574314a6b5432544f46303953666550444f536c787a726130532b53566a6a2b4e587550676a30666d57662b6b4867497a79506e57706b567142517872367061686f716e762b346d634a37666c5830794872694832433136442b512b46774f41484f446a7a2b66334870352f7379654b52657658397633387550516f6856726162764c38713666784c53326f4a55557a366d617445624a3063316f6152676c644b4e45354d616d4e31482b7075714469346b2b4c326d324e625476302f3447356e6f5a3465306643504566546e314c38496a30504b665236584d7873446271794e55626648646a46656c4c2f485169537569565037356b356657386e515a766737307746312f53454d727a78746174754e68764c6a666974586e2b4c61656444342f366457774556576c4f367342645862524d44744738353537466f2f68366a6a7353317448324b61557a705035714643786f486e4f704d7a3045593066786d774c664b2f5450786a544b4c52337644764d764450566a7944794e506a7457426c4e52426f6b63475a7362376b6a3272583271484556436e716d57363650525038415644706a5962664f4c542b4c6c477766714c2b4f666a32563631723966394c4a2b334c70654a532b4162304f622f435a5763753234325a4f623542634d4e6e4a5a644b48556f6e39345541663235416f4f6f444d2b2b796b586e62736a7635734139347a366334364b6f6c77655a74494e50546273794c776b52546162744d38664c63724536535962656b7a6a6f556647787a5a4c2b6a533436532b4e79306c41734c7954785a506a7562636a4366354a6d4769477a5737526d555273664f334f63333355362b625872476568704f58554c3665305853636163424f6f525161326150394271312b492f6f31346c682b562b732f71506c49376c38387564743237736a4a38675a32525a2b524c34306e5851657a714f35354e6d324238737933647042566b66312b394839384d4130314c544d5258505a48464830663950684f7a513436686e6d5868306e6b666d46485a383734595473686e386a5a4e486f5336657a6c383548303670585350584a61304b444e306976625a5364676446702f376244734634623479797a786a7875624c6e524d62327a5031496145775a3151576d6e797a6d724a6333782f374b534b4e4f6273483374432b55532f4f717333727365346c38747035732b416c753167343630514e6f34727338595a2b382f4a674276384c397144416a36764478396b6243623546482f463745372b6a4937395754522b7a33515574556c31527235367465422b4c656f45727645504c7644733731417839437479645444386a38667a712f494c38627a4c4e59354645417a7a30716e534561347a6f5755514a54547055744273785639494e617a4d6359354277522f49502b3076346675554c316651476a65384c386b31726549315054587a477274475a512f5476545044483439794f706c7362757a7530463039306d63584d344a4242616c55644e665a54326959345835712b493438657250343465736e6f665563336e58682b6c6d35493655514c33343676355878753665647a536c374658455269374c596d71626979373766596679714b5a6c412f7743727072657438347667556b3258702f746c42653772714346737247415655724f6f49337974577050546c575573762f784f447a35672b4b663467562b6e633244666e4f4c51526a39745a38375831464457745955787059585a7a424d387641582b2f77445477542f6166663742556c5875534a7442354f757837444d565352486e4d59732f72735144553534725a33324f55783374586d6b507549544944496a634938396f65302b686970723765636c72364538644254494d656665374b6f6c6e7856504246342b31767875483547724268436632657353336867347a727772486b433956715a49427a3042396c3157617170317132314e556a716d49453055515735343845517a3070515239446f662b704743557455514c2f7176752f4d6235666774364e76384155767a597867384c33664a697a4e484c4a38656267753173686e7839716f536263396b3735375855777263593862784b584c7a61473972397742522f574f72626248477739765034712f694872356b6f37336c43764676486f3851454d6b3863786b727a42346a783957317035394a357466372b7a3256624274474e6e325769304b4b536f4d717171582b5671616c656b44734a6734522b4d34534a6f6b6d764b734a6c6b594e5a39734c436f6451394a7a79783667756c684b7030357a305439454530643458572f47306b2f774263387a6d5a6d4f384739347032636c6e70374e6d646447645633504739664c56506f3474334b6b75634456754470513835473552684f3131464c4b576e374a436f4277774f472f3841633539462f46664b66464d4c314b38697976354f5078526e385a35652f556d30526e6434542f4a4c774f33596c634f44536c7a4f4a2f696d70634c6d304c6b6a442f4a43717154623136467072697366455043392b5a506f517a386550574372416b316f664b6641646b523868385071673551724d3138595531644a396e4f4a514937437078544b553467346a525a37474f4d2b734166563062373635374e68422f5433792b70364a2f45373962575a6a667947686649414d426a3136633865706c6f314b36477a73546c6949304d5831334162372b32664d633466356d63326a623136437174566c69647a5863352f4838463350317a6b5a6435444c6e314643763562684b59454f426a68703659462f70596c704f4433696f2f36744733627836694f4f53354a5249354f513842634a506a6453552f754433664e4c524972756f54306c786b2f5061745844594a4752683339566454335562312f323239436d6238772f536d754e57705265492b564b746a6b374f476c376c6550616a4b57556a62517156676f6a4a682f656149634a30774549473065442f585072306a33566f39657541395258342b65437a35486c666d574d755a70513674396a5477304a676666343863306275633756724b79654d6859645571354848433054625054446f552f556a534131656471577a464a2b5836697566376c574e5234763537366165562b476f7a367650616337613366532f58386762386d617679504759374930504639754f6d46694e4379724e6c2b444f51387a4b5548642b4a386179703051746f546d4c52505a6e74445554613845394d7657487854316739624d7566784c4f7a764a664476434d41505437794e7665625069622f466e5435586c6564424f37786d6c552f6c566d767458547a385175515a716a39387948545a3263366e584e6f6d756e49346b2f6c622b4b6d74364437452f6c4868654474336569586b316a67384532504c4c70645079707335772f66597279426561784b4675584c5177533971426c6230474230543646334664576e715271526933614770324e6d6c743169384b2f622b362b6f6d593243686373637a522b302b6b772f6678706e392f77444d435a41487967567875495064374f7031746248434275497a315a58346547466b66596a46656246477069324964504765502f477078344275347a53554b61704f43796c582f5863552f766934327070736f6c4c4759696573416c6865583137755a4936692f6b55582f4b6372786e6d67756278357361644c36646a686931534d567863793762425a4974446f33742f315541306d7137596d496e72475274762f4147386361546139553566565031642b772f306b3948386c666d4733734d5572527a6332792f325a6853564232643556616a6d697876567a3839356c667a327a674b6c63376c72646e62587457454339546b2b6e666c48716a357062366475777641764661743947716a4b6b4871644e7a575854305333615763554a4e6f456872316663486638416f6e53357144593455744f69315974464f626d734948367677556a342f4e33796432626f58346e586c67756f676a7836675845725363374871505131715532357630614d313146594e6f414c487661576b78696945464d5a746a6f4e61664e7657377a44795430796e39452f4a64454e504738613867473778795670583577784f6b6a6f537a4b6d6d485051424d5a4c633475556e374b58483742627866786a37394972696438445769586f49736e72696f424c4a6d7843564370356e4b43705379616a3673626538496c6738312b3961314d59546b6e316f744a6f442f572f647a5948594c305038732f38753862385231362f35652f6e5553577661392f312b63726a4e595852354e7157417545662f4831794c486a75304f6f64667a37596e32673638376b74474a764872714f77506f46357a5736447835656432524c56625046506b746f6f75326537556b45626d4b75706451727562394b793569476c49776e484a4e4e2f4a732b334f674b4f613863596e7846322f6c5a2b4f2b392b6150706236742b6d754a714a673270344d6e314938547951316c532f2b76654974756831637438504667616434303647504f5055474e6a51336a5549337a69615530303778705772615a343942355a2f4c66782f6e384538563832673875577a2f7741383862306d71716772695147376b77773855313775516f31444c5063332f5934766b5964446739702f4e78564d33373734766d6159343139534e515a6c7637527a4f364650567a534d37325572325473463631546b344335776958384c43474d316b4a75495038432b77624136306464337859386773704536303053796c544865394850354678705451536c6d776c574b4e5352562f6b4c6f792f617762307a4233764d4b4b766348395a673968362b646b3664632f6b6b454e30657452426e507a74794c6839516f444234765665556333567249584c2f5138366c5a483970782f437a363632336d7354455455625765464e6a7a3665364573766a6479664972742f78626b2f6d586a63626f64544b472b5a64624753446b75546d2b534b7371714439786c50384139616e684a55306673706254714b6239522f544a4136546444774158787a53746a7a4659576a7039325049646d36564e46757635446978696f50623472387a42706351734c3636334a5567334647546d3272626869384369616e536b4268785446507a74486a4739533647565953334355684b4e624b41585638576d585564372b75643537435931765239353974586477385058727744474269325751494c6f4b6f37524e562b6b7979546839746655745a56664d6964335a7846676f587a69562f726f703666734e6e76372f532f63437938797a6376374a695a4632376f616c6b4d717867456d47656a71645965526b4e624b7a704d4569583750692f582f414345664f6958374d442f71597474694e335564415078712f474c4d38637452366d2b76466333677266437656484d3861763841477650732f46356e624d48496c314d73334537712b6a5034373161364f747141476734594f306363416d417577314e535a6d6155357431666847306c6e35632b6933676e685872466a72386c772f5659664b764b6457584c3844526c50386e696f616a5179364a755a3271345a3549492b61324f56634e45507874544e59304a6c544c55467a4d2f64336d617a3252416b2f6b64366a65715a3065422b4c654951376e69447343506b574c3533715a63744f4c70346a39514a4e5747727869656473656b3658623175566b3739444f643946507663646856307a736976476263337231774775487268345235423474705377656f50716e526e5536666a4373713258427475646a6f79343473397938466730554d65374e5254526c6b48794f613475556d342b3853414e2f72536b78504e577632464d772b6b6e6a7363674e7631566e73367449767a466a6d334533567a47634c376a32615055756c6c30417148366f4c464d71782b4672686f2b502f414c4839576d307a316b476e66693735566f3430656c345674592f6d4768576c4e4665666d6e474e71516653596f42636448786b7477564459314b2b4c5838535979593153556e4e796c3779496e6a79783544582f517a64724c707656725a4665526644795972426f7a7869635457544645546b7a337a6b3267652f3438587a674d372b6a4567357744655a365674587045597949327067304b57742f586c5239757956347371375777755854735742534f624b51437634625038416c66754c2f5744476c77442f41457a6c77395232747265734a69666b346930796d4a78716566507373545255726946307253514348663841467a6d4a502f677744336a3765683964537839556c4d633753725a6f733742615273705465645a6a3354647a6c6b594d635376306c596646772b7a693562516237774268352f782b763543543472366c6d43644170344854544f594b784b7561696b35704b45465239745676536a634a4f57396f4a616f4673507443584754457a5556746a725562706669352b542f354166694a366d5a50716236452b58366e67506b4d4c4d7244314d786e78332b4d367156645a586b5a2f6c32457461354e544c2b4f7a32496479647a464d76634d5056475971666e7161644e534e7475616f3939483973542b374c365066334566476266464b73715830342f4a4c78434379767a2f414e4d584d592f78625946716e55624739346273664d746c6b767943534b34544a7878426637524d46756b3054386e58396e746f7a6e7461663468324f7237783064515172755733726d6442302b6244645855614373564d7a53486a423656672f66596f754c366d76394f3448532b776a333935783562502f6c442b756e787a7a2f384147694f69683034312b46655138496f584a2b7570576a703573626d363978304a596c593056554c534357382b463137694f6766624f5a393373635a6a556e77484137304f3949722f414461717278334c646d795069765368616e433363696e51312b6f366f4f4d546b6d5965306859626c6977436b3436674b654878726c2f3131337433343644615a6e707676656e596471324d7836596b364e70724a39566c7554714b4b6572576451346a7932686c353943382f57464341355464303354744b676a443275706d4c784d444a715464704266355045767978445a5753495176552b6774342f544c36642b68434d50314b4256725843685a6961766d43786e2b4846714d663659355a6973682f6b5536506939734e6e6a56635564416646626d4853727567374a3079585958302b58706a372f49616835737370754d4a6e706336506a546f70365a43314e63787a646649574834322f79586331524779757a595257576f2f4d7634396d546e7a766d716e53564552773366575a516d35636476314153436f7a6339714155684967724f305248434f6f3352792f587933797162503847325049732f78624e787767584432695737466a4a6e6a3264644f48614e484858775a324d68393834636f7261357a5a706b6c38596f46486335706a6a3268737236542b716e6b6e6e7973767737732b645234786e3355383035616c7a503578794d367a5478364c353642594b346173754d6a4565742b5135413972574b2f77434272706173527867626a2b492b6f562f6a74466a3853726c645978536a50697664466f4b737a76495a373559644a64582b774b4e41486645445a77347854486670776370393838345a7a4554314833314e3966504b343849387a78335a6856734b586c5532734452676834434e4c4f5446454f6b6e4d736e4c37553836335471517033316a5a70556935795164785038415374597a77345a484f7a6339662f4c74507463652f77416a79727261644f58576e667a71364d6c584a797a32756931475430552f52566e36477158477035784d2f7367726343524e5358626249385a4648356568526d62584c70456174366b3741754a39366b456137324b646b6b4e637473393546443859366e615743344a484f6d3738775470454b357269567438323045563333706b6b586f754256464d7a7769664258507831537775724b724f594e45625a336252744c73352f41756d674770353752644c4749384945475a35536e7933786f315648536e635270514b4664452b627a756c327055776b2f6856522f4974777a735878367957303366572b5833386f3978305341324d57597257552b6637656e6b4a6f6b6638414632464d73644e374f7836616b3157466f30634569436950326d614f443866736b367344346d63413242395050437266794638323863384e384c6f7a346d374e6b2f557a30585653706e6c5346467a483357352b6f707638677171694e2f73364b6b2f4b3576657a4a70635075704d374974615a3667742b5476346c657150346f5854612f6e6d376a616d4835506d4136665479614854517a565a7643544e506652705238665263474d555a5468516f46324238332b5866695a654555314b366b596a34527052703178337248767671527173757956574e6c715a31423436785a592b6c4e6c3861365268582f77436e38663334752b77666330766863716b413045535a7057626c65746e306762324e354c2b706d557a7938516e337a6f306e424d7a504a315668754c50486f755959473533762f77414b657239387a575936674246534f4c726c48476964434778687a746b4d31674d34636a4a657a36314b756356784f69424d4145732f5972357a32424f2f3371573872386231383444692f77415a79764d46664e7251654f36446c3956707976314a684a3978647a32523472754d6e344e45387678302f47746a6d7353314e494f50396e2b3146534c544851445966547a78715034344d5446696a65796473307a4b49312f596b45756c3174575a4f3562446a5952564d6b5230535637777970457039337a42332b703332794a35346a4d2f78446670386a38583839387a3841387567586d7537763841707a76585972395970793071594d3576426173713478576c67476f44364443416b327a2f4144664c536133474d5458646e38515639562f56333137395a664756654f65712f774354337264356e3467794e4d4f33347244354239504c743633326f6f69316f5936415870526c636c6658386f4d54644e2f705837453941654b3172573261366356743942626e6f682b645035732f6a58344e34333656656a2f71503472722b6b6e6836566677576236692b4e355644496354374937473745616c52705851345073584b54384a416c516d70446b487747453274395052314a3357727a43762f77417a507a542f4143422f4f4877547833306839512f4176527677334a7a4e614858663556344634335669366569536c5379647a7264315738412f4d326f7444362f464d5a4d626a346f3652577872313230394b6d6c4f3674707441736e4c2f503841395134667745622b436d743643596c47454f4f7678776655664f33594b67484b64565a5536712f78357354326b5461463538374f71414464485439687a6b6d37744b712b35694e62336b572f3751742f616e2f4e4c30392f743968367a2b4b65765869666b744b5056486d4c736a354634644b565059746147646562716f324a376231457077325653307a6e2b366d7a664d546b54796e5336345874476c6257327a5333476f32472f74742f33553476452f794939667166797239632f553150704e35446434787365694633714a507261766a654141316177756e6f56434e436339684c2f77444753475068704259594a4f4d672b5a6c4b366133732b61553933577537762b67326b2f7479666d4c2b4e4f642b56333578393871396266442f4142487837314c39574f2b512b6c6a6650396f73542f79664a376c756f7131736a573867316d2b3351554c763031516b6c7a4651482f31454a5245674d39625331506436654b377070484d4c6c2f4f505039632f586a386450587a786a7876386850774f3839384130764372664934744b786d527a314a79384c46716f314871794b7347775a4c4e70567958496c64314a69587771634b547061426858536d744c316d61337266502f614c752f4850766f4c7266327576526e473966356b366e6f76355434743439344a356b576c74684e4e6a545657466b2f5876314d7a552b37506a703867736c594c56554633687a44396167654250374d372b38392f665a326872352f646a39544e3338585077716a39422f5150304a4b76302f39526b592f707236642b516a4852355a347a687238752b316e785264786a6d636e50645656526e745354784f524b51413271373851477a54326549314e57623374693165617731732f506e487a5077312f7451666a4a2b46506a796145655265705742675a4f724d6d7a6c757179527a4d2f6138757664676150742b716b6957354c4a7a70596151636d647a712b4f63786c3948397237527161732f435050376a654c2b4a59437976586e6f307457396b31354c536a364f773735546f6c53646c39466b3771506954577634694c6e7a46774569424478796756327a6e7536695261616d7864676f6b6548314f676c3553764c6b672b506c49646d5371416562483150625278657756684e4d5445546233356c32417550765a4678656a484d7634664536556e2f4737477635586e344568746d314c4d6e4f34376b654e51464833763072597641476153564a366836766a784875412f384134314b63725a7a62773959487373394b324a356b655036724e47687376664838617131694d6d396a4e442b4d7a6c735a5479476d464b3134346b7574664638354d426a6d6d5a49634c6a2b487a4263634442704d724b4c6a644a5773766c6b3062374b786673496c6e6f36736c366849437965565a5a76506c4c672b2f774348714643716276362f6f43436556336341555353436d6466622b694e327163736442427063427a5a6b67686c426f54474a6e4d5242645278334775364a6b6c44514732575a38676f7175476234716e6371732b6e623145725a6f516a635a5764556c486444327a72684d4f674b546b6c6a46676952683061415a583153616234574c736e57454d356a546f4c68656b3057344e6d6278426d44716b4e68633658516b36617959594c52724c35787643544f31626f476c5174734f6e563566465a4f315766525757646257755666595363786a6c306361726854714a655758525633332f436d6341437a707246514b793561575567766c617a71397564566971696961754b317976347670797a72763146736f65635a51694a2f4d6870386a39374b5241706c4a42367a714d6f5838574b68392b672f4e674c4f56394c362b53686e794e427631716d396a4873354a4a6775354e78596774787445767071494973727a43455a7265396850517068523971464b577134313361655a61573269757958724a79664f55786e4f4d7a54375335592f77445665496d4151547a6a4132504d744a384c66496553346f3853744d534d344c49394130327a79572b787a79416b4a5a4e59557666335550576d37704f47547151544c4d5469596e726753487835576434586a6f576a4a6d6a6b4246583864627a6c376231396b6874716d6f737548345453484f783255766166754d464a48695539616f3178783142523274734c6b6e766d63394f676d73626a6c6d364d777452514f6b314b4d496b79696d786e5a5630424934694e522f4d75623442503241414c357235366255397453724e6d5035744c515474616469687455354c7235534764636f4c7a342b6b736c6b444f43394a62626c667668664f4967726f577179534a37364c6f4b59315a326a66534c67396c6a55564c4b746249535878456f395a686a3061313144786f726e2f587a4d34427041784f3270495476342b74386434567573376f542b797276366d2b73676b6c425038414d5643537175486a4f71375144414547715071522b4547534d6651354e7859685648336a597a46637750584a44795933534771654b696850536f375158786c38344162576d526353667366515153543977517250457a314d53564c3666644433347252755833357561505953304a334c59547062744435584c456745633266324a36703676684252724a75736254505551497945506d714a2f506739386b713069725168624f50456a4b6f56364163352b6a643857654166496e715547516648466f5a6e5a346b58637a62795336676253794e47706a3542614b615569586a706c32666e33682f5a706e3636525a4c45584e3551492f49464d6f6e513172437542314b73586a4e43345530307372346633716444487a46755863624b716145776b36736567787a486d6f334a59304b66304137626e6f7a576143766d7a7273694b78694a5551737a53325a3767314b687a317a572f476c54424f714d6570527866792b2f787331646344754f63734d53557464663164482f41467a717a357468733341374d716d61682b7176544e6658575041657458707a6d4b476f4a7066572b46482f4146665948516b4b62737372576b46646c637756546453564a2f626331714471346e7649587a384e4b2b735a59376931484b487448394150654f365039426c626335636836315749785038414831492b713166322f7339454b57793479657858504a63375074653776366d64616658764e4c6b63563862544162516c646b7936354b6f6d7558396c39577a4d344f7475553274384e37555875306a424d704c456a364265774162705057535774452f36434c357243706a73706d6c71303954673930454f704362476e6255756579365367526d6a635a62446b532f4d74765746596e355062516e34616e4b593665512b51537370745a7a6b7450624a6243626c5547694b436d69664d324e4b69784f65304e42796d615566777a746d4a674348426756524f59444e3871514844396250354445746d747253396f6c724b394535542f64552b2b7236452b6175786a696830705a5a35576f486c4a48313271682f7967494c53494e30473163345634386742304c4b733241626a763841753064647152764b6255426e7973535057516658354958436a6f664158506c4374687a6e50667a5a41686933324f6d676f6b57703963306336644c516f4f696b6f5a79644b755a59426f435170565256524d746e744f79683770305575346d675849674f4f7a3830736e50757a44397a65327456334d7a4f755a383464436851587976484f377a516f6e6857786655554e39717a2b48697141725369644d392f4e6b534b4c4f537a506b66494577306a6d593263706b7a695456586f5a657a5a4a5571576a78326879614958732f6b46386e2b482f596e4b4f6f68446f2f4b634161443056755a46414f6650474879744d555036356656706c4c37487370614b333656533457504f66744a2b7a724c42616b316443685a416479674a7463376a72566a79752f6a615a6f7955355859675574693961616d4678496f7157775754673949453954766f4439326a397a476639416230484f3770632f384154706b4d70676f53575a6e6473304469736f2b61586f48494d2f4f7a75344256454d6b774a4e7070705963776b6b79344774506e636b6f6555794d34756548345157415655624849724951666d446a69366c4657576c74306a757a79324374584a4b3574463039427a4f58777a6474547377504f542f63646e596a386f39337375696e72744c777278433166614d75616b515168417a2f4b70754c436c6d6554525a64535854376f634e5354306d6e396e7268563261505a396559314a544956575050687337504a57734e775a37372b585374784474754757596b685844514f676e745471486437316e4c50656d6566356c755162683032787533416c34397954504f487469744a6138545437716255723557397243626f2f48704131702f454a57474f62724350734d6c7044367a4449536e61444843306551756a796279616e795073434d755576467848437a674b56387333474d6b7a6b6c7a504b795343586e52637a475a6e6b6f6e70617a6e5155684a70636e32303069754a7a614f4178354d5672732b517072325238357145715643476a46544d2f5175537a676946486531574d7230732f77427636537966716d30706c2f3074455730467065484a4841316f6a3059356f4e437857672f4b314e475471506c6b6a3868597a6e4b38755a732f302f5a6d2f54366f756a33726e564a416866786e7363466b5854553655656e6458517a5772767a6c386f3468524f2b4b6349382b697633567a4c35376d446d71367064524b444e4d5449554d5343715063454a6f305a367566443831334a32466e447a615779676e5674315048522b6548516e712b467272796f6f773264486a552f5754564f5861566e53587543325053337837794b6d777249614a646a643045462f415659734b702b39666d366a4370575a3073557865624e4c4837705a316744466e535a702b735953733557307838367a366764432f5272307839534c50494e436a79464f74526764342b5a794b367754667361536c354b716e374b4a7836785878517236326c3644576444556d3332664573512f724731717845546a413657654261556551636d543865564755474a38363461784c4d4f574b2b754b6a72596266696e4b6639542f66396e74506a2f616653414a675378416338386550694c467954302f4c634f5a665257742b355374774b79716152566d73545a486e3835636a5556305a34654535544370344a6d6166685745793576693751364144712b442b4f65504b645271336c4e6e54557a7334424e2f6a4f4375726931723677512b7147664376373133516b494f4161666c4755347749534e786e7a4771486d6e7262365a306f353774714b726462417a5054496d6938594b706d586d576571534a52434434584f6e594851746c43543368372b69485236464f74617a45356d526f3135427465527761756f4d642b6a6e6a553665534b42634e4b49317a546430715a7754715a77745848384f3559346c643738516d6850787a2b78597a6736347a304c664c746e466c33633753444b794972324c596a4d7070304d334565312b6c4858334e4b576866666175506b4c4669733631682f47755a524e6e38476d6348536550634b6d386e32333350516c517047554e50516e546d355a304569796d6a715557386f6f424e4336425a436e4e596c6b376763667a4e5773412b73417932725864386f455838317154644e7364447159364f736c7453644d7564734c6d73736e6a434e73684b6e454b7373552b332f414c48586b6e333164707051496b7164647450764651372f414a44324c4f36764f586b32634e62394c7457596e4d6f6d35396d47714c7246546354333744695776534a615a2b43353766684f67414e394d6e6441503857395976556a307475507a48776a66322f464e4f2b4a5a75755766594b74506c5538764a506b656966716d51722b46717a42674548465570456669344579503669617862684d626856486e76714c7665582b5461586b624873314b74706c4e565737716f552f525658566d4a5975336a5a364743745a7245694d6e493467784d4a2f6678496e374a6949694d41612f6159374879664675395135554b6b514961785932376e54792b576e38302f5830443864466336666370667463414b73456b6a38673853514347364e345534396d506c36432f72726173334f704f394e55366561456a3350616972702f4d4445796b423055457667434a48796c4b524259445570304f36552b72542f4143504a5a307159622f5a39766c7353757569396f797668363355714e6979456a41682b6d4e4c306759544e446951647a717a54647a4f633879706a6e7a466366506f7254387551624b37625852784d467a4b4274735a4c3172754c2b4b6c6a766d4e744874614c6745617330757631764531434f713647755a633770546a5a6f7a31674c7149534a6977356a374c426f574376696633686657503551396a6e4f564e5a784f526a6c76307458547a347432762b5a7a35476f704f567442356873704557496d3156546c7779466e577831436d5644424c396878674738514e4d72763563696638416b2b4f6d374e6c6b30663454495639494c57424e64386a596d50657169542b4d354e642b396f4f526b53795748656b504a6a535a744153552b427258716f6e506e513865714a7970656357645671324e6735466e66526e62727a4e714a677939596d683351357a6e556d4d7741704a6e30545874584f4f62714b6b334755797665394e46376d6349464b6e69304d6969617974696275444c6d387046626f792f683944362f756d4765332f4439653146424f4c2b72416572596543303055335278514d66526e3354364b334d533443314b45304d377730384a4b37574a2f3536514f452f66372f734e2f58456b4379304e32454b6c35624e5335352f4a6c3949564d6e72694369694d657337535462714d743074736f74643146416671594b5459584f6e7a2b67476f507566716456735a316259306a41307a676c6a666d75744547636e4452537877396e7335644f684b5449763855634d5a54494b35365341637a553861766550386c6c48504c31306c656a4f54776d5450797237475933726e4d73515056387357735234715351473839374f6355455a756d42706e2f71773941386c46656975704f6c6d316157676934344f356a69475149716a71633133302b78786c317372616673452f7742376b752b4b6b4530424f736551584f504a30504a427a525535756a4c4b437447632b315646715948633957743351487469564377694966644d547557506a39376e70734d512f655561434f6131705975686d36624f616d56786e46677a6c46544d6b646845394e796b5431743866396b384a416e6c526d594a4f694f4d506a503441664d522b6a71327148516b6250565644616c454465662b6f574f6f74614f6c71384d6131724e65642f477733557259354b6b75483637675572704d562f51656b482b786f59512f6a76366e7637463266794737793751617a72786f522f4836476e34346e5958446470796b716833766f2b5953466745583757316c437a4f5a664f6350745862723876314868482f4b7a7a44766d76354c6574336b6d7071302b5464713953504936304f76707575564e6d6f3372737a764550742b515761454d384c6b394d6a4548556e386f786a4f6961632f563034785373525077696973667a4c796e786c314f6a3462647a41756d58544d523539302b6c314b5853754453424c574f6e34763246444f33764f71344878704f6c50762b452f735769496d654d384261323336322f6b6a7465475a434e6e31653835484530396d656f63666e6b4e7361486d633872556443325764544a5a512f6a6e416848327141534d7a67344b564631314d52576b54787277464f65636263646b76696166487444796d2f4b35464672625262674e616e2f7978795751377052715550456c436d6349512b64717a6f4e6e764c3273412b714339596a6d7a33414274756f334d334c376361335553543135546664494448305566616e374177744d4b6e43356e777a304e616674446f65387a36546970442b6f724f3265504152747256385767554e4a674b36706e736f53704877443158654e514433754c356b3866594b2b3865492b373749643937492f2b53324835417a43553354637855676a514b5375715277586d4f677468464678734a6e482b796e377a3238392f424e776534324b4e794342774972487165315373514f6f52392b744e6e4f4a5249586f6434694935754a2f3244776f684e596d76765241505a38672f45492f30436b524879344c62443647674e6b6e614730454b4b794d3666746878484e415141316b794e79684467474941336c4264492f5942302b486c396638414973667871584d566e4252392b6956313671353742537345497a3856586576702b3436625644746b2f7741775a505149756e50796f2f7276633368484f6a4f3357666d447131684b56797256356a6a39736d5645365a576b64307950747558702f4c6f6a5237462f4a514e307a766231336665624a357a4f6a342b2f31412b346e706b715450525a7063656762425053583070394975737a75306676474470557a392b7243386c375344724470696c6e76437858764c67444d323363653452786134645a764e6861557056686366624e313038673972584935447766564f356e2b58554664643769653067414a6b704e6679634a7658474d783044583654363030312b324d556179316e496c61754e59502f75586e30632f6c79343446736e73597235415251356f6d355078474b6a4a38645049534274334f484d7033592f65325263524f58714958546d49714851587a4f49516f396c31675171397675456c4733374970624d78794763494a372b502f7231356e2b507671393450367a2b4131717a64587758795446314f5354664c44463542504d57536834325a55736855694c4d585734726e564151537464783834305665774f526573616c62567438512f6f41666a35354e35782f636c394566447657574c30313276535265776b7061732f7a6e453150485a4c2f4a5a6e614a4e30664831442b6b3757487832684c2b6e4934774f47367566356c5652716e373556346a517661735733446f4636552b6a474a365478307338763764356a77367a76523436326a6f59343663566d4b69545632703663326567716c4c33694e62674759796e34707779736349765043317074303542462f79483176582f7741337a4c4d4878746b6e673468643135565973317441563445335635656e4c5848626b7473693972696f4d46736e4f5a73316e426a707336414a6a76534b524f5a356857445051505854345235644668542b5459486d6d356a626b4f6835686369746d767a5a477833593255524d715163452f644465785771624f48566964496854307a456673742f48453969427a30386d2f74666576666c55756c4c7365757534314779437448795850302f4d465550314c6f754a79316a4a37703664544e7a5938754662565379652b63454f624f6b6c6531587a6178375253503359763730382f45617a30693841386239492f47504b504438756a7854444f4737794c5a32367675364c704439376c5557714a41537a6932696a6d69484b4c6e4a6c5337695a7741374456467454644f2b612f51637776376a507170643654656d48724c3471796d74766c4868475451573176386778554c32632f535a646b2b4e6f31687a6746666b56686430724641672b514a6f6f67727a5978754f617a3262364d62375674316d7738557666647173376f5050395730304e704f37357570613972364a30785473627a4a647a6f38596b6d6647492f77443050616c494b4d2f682f723038374f485850455a72374f386e55453376514d614a6f564e344e74544531797559626c50474d75574c5753316830313857594d2f7753744a386e5554397036774e68384c583461333362593635684c43496a326562506d51784c4c666f4e564e5632634f3254725756524a61426b50764b6344654873396a38784e662f41433265665138667058564b4b4f7179365731467861703659573475476e75744a6e7a78576b736a57375363746a754163355273564d67416a5a4d51426d2b61513359556d5077696d5669686f614c534a384d306461716257657a4f6f43353158324251686c6843774f6b5050766d5370524837455968494f655335795a633150593271637657722b72484a6d4b316b587241632f57304b37772f6d4b466c70742b44504a4c796f374e30357151506b38435570344266792f7741674f613359473363697a77573856425a6b3261584f7465785a493069664c6c556c7844766b624342423145796b2f442f3175544e44332f304654654c346e6d486c394866487645704e54524c52756c44467934365336694e6850536e4f725857756f593439676c736a36494c6f537633476d63684f657855726f6d596a714f6b506a333970723867764c76433844574963772f4d4e75676864347172536830345045444375645372746e5a7a62574156424a735a7854434178587950373769624e377245347a723069527a6739535052337a48305838363176544c7a7a465a42354c6d55575331793671657978324d48744163746d4c516a6e4d6179595534715849644b2f314d414a70596b654347316252614e30534b62325a6d325459577a7a3557352b67316f4c5a53615039545a466a38733867732f66614f704f6769345851647a2f41457339725358785874306a68766a722f77414350526b503645474d443432556e7a336b6c5841344441495639556c544f4d5754422b487650304a4237556b52682f695875314830506963507559517872597276786f6f6578356b64484f635548415a386845484a33542f72336444706636682f5a6950732f6f466156415954467879415a5966524e594778712b72422f77436f6a4f686a54353766686f2f5938454339337a436f7939336638772f4154505a39636d70686f4362726b6970717a506c524a6f6578314b696e506863366d64692b6359516e77665a2f6752687a7641483141546d6b6271582f41456858524f706a52536f7a5967682f585571642b763841576452442b75675050615271353768506e2b594b647042674d545735616c4c426a412f51644c6c774561566d31376c2f766f75344a4637652f6f2f6143532f2b38424557663848313953456c7a524a5973775035305855444976765764345358635a2b302f734a4667735337385037392f7744795a42372f41506a7637397032352f4c376962344d576469653278386e3337425970633949714f6d575a6c44714b556454306d4c2b787163544754512f536e79476f5038413673444d2b5a7a4e726432517273616171376d3050534a746b66796c514e303575544d576f376f5749557972676c48336a4853762f5a38533033483754535241487671424e7871596449647247724a3436736b6b7132326e696475314c424d685371687a4c6953775a7a4c3964654a714150327a345437386c7164714150597446695565793632705579577355663665737550354e4b7a71636e334152727334553864584641524a4141496c4c366767494e6736305a5a6335645a327070367135636a6e674b43346372446839345456366a626d6b3733666145772f323861346b6837694d4642314e493435327a74457038433336463077597961506a6b39337a4569315336776437336b72574e4d4d784839796967526a34417a6a786c50316e436254557050747265754a7a33534c6c316364677479384a7051775157716a597a50566c386873687666586e6f5452786c5a674b2f6b6a712b31384c766437307871533133444b674530466437766833786637507155614b694b4d336367616772595a4849545a70766a566e7565633630366730435964344272353853702b752b774851414852693430556155332f4148696a5478455933356a3043544b4f6f2f3762497037586579616a685761447a366b75687a34513437354f454966314e5a6d4a34434656625230636d6e6e6e526c726b36457752713552316c3039424362744a6a506d704c334150777235515065463741373743392f5455563976785a38774f6d6368774c6d583173714f394731666555584359386130525a5575796775635456786374677a642b55674d336441694d442f665835352f6c39673864546e306f55636c79695762306f716b396d657476455547505a36515a63766e524643666a2f7742682b386a616b6d6d436753687074742f786665526e78516c6f4d4f5839632f6d4f70657237514e5a6f4950384159734a737a6142364d394536536374624f685277786f636f44373050395439333638516b34694e7936304c6a736c2f6b6a5841772b31424c2b32386452435a542b36643438597a566e446a42503367594d6438524d3531726e35507639776f76336f644e3252724b6d56544a735554346d302f58664e5379624e4742556c545a6c364845707542504b464376396f63487645472b31543933363851342f6a6e384772515941496c6f43685355395736684b6b524a46553772654c57524334366d542b786730653153414d326d59653735597a5847334844376a4f3337425a716f4270596970394431382b7065644b616159716d47557a317263564447635659502b78354350736d4c324633324e366356346333644161654e4431384647645158466b333266436f6e564a6a476a733155776c584e456b43582b34316a3335754b4d7638416352675a4f61675657766d4a695232342f73672b4a61336b58722f352f774352707572347278377870392b617a473059386855766b47685161435233525a387a59633830315563523076384161417a477a3555307334426376745578476e574d657048746e6a4742336a36302b5661666a3257326547526b325369375752704e66566e7934396f357561477478734a6346646e37576f713258476272315548784a4d5a356f3258394973374238573865512f78713530574431437a6a686868352f495169794d616c6a52743434726e534a32555438735070644650304a6c49636c387167566a655a6d5a794c77763539446d70354474495969545971585338655a355871596a36756852335352337339495a3635334a46696d633448746f306b544762552b7a2b716a6b722b625035683476707a6d374758676564593368326c6a2f55357665513775304d30506871485a7963696e4b58742f7743306e79706c32745a6e4151682f7732424d4e4648794135483964476c7062707874334477672b66666d4264346835313546752b68572f633352302f4b4e6e5a733876314b32364f5642743255613073586b4f443437544f7a73374c6f33536e31392f44753537415378505866434b66576a54695932336e416f727848386e76557537317a3859395350554c7a44533869702b78506d5761656e565379504e792b3666366136504a6e32704a6f63314c50754549463155774a595968772f39704e764f6e585a697465456a7472366f3773507058357834583537426d372f414a52672b535535464d3235347572783651496a63634d63586b4c627045575455536c7a59573574586564554362365a31382f664f736479316a6445526a714e7076437653663031794b5976567279795758316f386767342f64523554356e36675150444f67737358443543372b4d4b3552435579644b6c5657596d45706245683872554b504e4f456335744d386b54742f37526e364865745731363865582b64614f586e636b384a3374724a31356d64664c705063552b6e766854546c35383037656b77336147732b616b5155726754664439446b62584331616b55696e34674b2f4b33317167394e2f48504a637a4d6957506b74425344546b4e6f34556a374a624579336163686c6e705276564e49766d68584c634d38596d44736e34644a4966444f6e574c5478486e692f4a446d7235463433706554623175644c5365724a4b7565622b495644705146446d30516175484f4b314f464c73386f66304352374a5148734c6c52744c34714f7654345778484759366a542f3841623269312f424d714434674b4b5574575949367a6f726f576731564f36744b6e537463376a474a5451772f3248774a4432556449326c3942507939396350786930703948776e79537873576848496972786a797250506277746d4b4f7539664a4a35716574436568755752526755684b3930323261766b366b776e586a66547071395a4777663548666b3136482b75336f69464f64347a354e67657673666d52376576546f4450566d3773476f55793734387063385043686c5456436b304c6f625a516759507267344d774d3553737161643633342f3559334e2f7441666e5576306f44412f446664385a695634703676657176504b4b765641475753362f6a466966484e6244697a63794a656562507650304a2f48774e737176744a53373552597a336a50506e3754703776326b6362567232523668744c314e386a5234376e4a32464933585a384d4962464f704e505079537964744e4632706f2f63715a39484852314b594a32495a4c487a715a7672557973636e4e4c7a36786d63534e637638413579765330383976673235357834706a655158737a76686b43545264355072365754734c794c59733163483067544c45372b51594b35474a656e324a6d392f55552f467a5462664f596f487554365335336b454643384f443141723862386f482b636f6d6879664a4e5878344d35644c4d724b58677a614669522f6c78795a53514a47795652707a51536c6c4b334e6b424e356a684d63514338726636612f69663662565866384168766c58696d506e4f7832772b5739394f647063744e534d2f586137552b653344314553354a36584672464a5665386b2f4f4241675068692f704736397638412b594250516e31413873395456596e716c346473616e3842743764465253326e715238324a377366376d78767a4b676a6a4c75623770645955557a6f6d556b662b375838306255676962784659327a3967612f4b2f77413678505333386176574479747733555535337078757a5968507578653665614f7a6e2f784d3831354668687a2f414d544c656a736a587862727a4b50563968746d5447426f6a543574536b654d35486768517a6a34374b32456f4b71753976463345676e6b533669455847746338352f34735a3850526d3674507a2f7635683971694c6e396576384176505867483872674d4b676f2b3931794342445a353634304239794a6157547a4575616757754c726c72574c44345031326777506d702f7a465433666d42793652637375797256432f77445256445332674755734a363248376b646449732f706c387047484f447777556b46462f6d7a35653642506c2f4d2f77434d3255386f72364f5533767a744943633962306d5a46624f766f697a6e2b3448386f4944583150506c57786e76582f565a7245395151576967313969506a52564d6c69575235355539715355716f75564c6b6a6351684d584b584a4e686b51683758552b39706b3550417345576a483144486f6e36644b3164314335556232396d4253726a6e4b6749316770483671416739682b77784b6c4a66396a6f7543664f75373642317a4c4e492b3257466a424765656a3272744f7633734b5734706539726e464256516b55677434616d2b316854434357744d416853692f574c5146563971536c446d2f484462494b567a4c6b6c41595848636e34477534304c4f4b6c49535534424e6a6c4237334d61483132753652552b585165347a2b31722b442f4149722b4b2f6f563431355673592b62562b5158715634786c655162666b7444416e75787647764958555759506a4f4853716a6f6c6f646a586a7356376b393679732f6a476b77567839486d362b724f7061496a733147796e35626c34325067586b6735576a523433487a45714f2f2b4b31397a7053356a4a476338634d6e55352f4f3254396e6c30507076375149526654373150424535327a303038356e4138516e354370374a6f65564f61682f565565666c666e30734851354f38744e646d67776564756f704a69526c304d6458774d2b75796670687a676672334a6739536e772f51577a2f414733634f2f7a443876765454417a575350485158725031704e4e784a7864584c7934336231304f6b6675414753736c79616c6a3876665a3755675a4b396f384961612f4c532f684137552b61666a42347834762b624f50367965694b715045504866502f4557372b336a326a34357763767a6d547946492b545a2b646b326977644c4674584779364767446c6a424e6e4a7573416c754c2b7562664d365732334e744638794d7179637a7954784348315839546652497454793761793962663859384a7a74627831336a65594c6d396c7857776636732f7a526f3643325443766c4b5a5a45704761657635714f72704f4f75327476587275466378582b74734533672f6a56486b6e716c6d7a65466e636e314d382b6f6f30594f2b6f464e57337361382f64484e335539485731506f79314a4b6d65763667333069364f5154712b536532326e4e4d7a486b4f7533355048366f626634302b6a58717075624f643478356a354a4236592b4865516b337845356372486a777a4a755476305957486e646b324e6a35763972466878676e394f633032306e376c2f317a30323737566a6a586d484a652f513963504b32654438385639554c3862796641726679337954514c546c746e386558426f6170654c34762f414a48506e783575667a616a6c585831796b746a6b764a4a317a546f5432726f3559363177445867337144362f77415868336e486c4f3357703231343934527465467876797a6e792f44744c54466b766a336a3961364e4433784a78525a515430756e3739666963326741436b6b7755716961307a574d6a547a384e76376150706c73536558657433354832662f4f5a7531616d583472365a65454930636e49687033746a493273375638303868304e536444532f6a727379656d41693644587641464b623056732f7254553137527470534e732f454f5857786e2b56493376425077773854394f6c655065705069487239366c536a3556586b2f77486d576658354c713647446e654b5561395055685a6730547972614e426b7055367a396e5770544f303362786a467457625a72747150336b742b742b4f5a2b5466693968786542656f66716a4e3668654a65585a6e72723456565852356e34423667316f7a38796277484632574f6d526e304c3346752b7830336c396b356845615a5664732b6159786662717a79312f434a4267656a6e724e355058354e344e3656366e6c772b736b50504b752f6d566b6554376556344c34336f4c68703164716556477a73326f6d304d7447446b73436d58684341552f562b764d53786438305774574e7537732f414a783662655936666c566e67324a46356f766539562f795138645834627461336c6b772b582f41507a5535587035597a786a3034794d2b724a532b37503856665a6e464538754c52504d68334847796b49334c346d7549744f336c702f7533445462387266472f4a5044504a636a43386b33302b577a7a524671562b5359316948344c764b4c4b37752b51357369497669442f5471453734763978306e4a5a50516750343834775870707857336477477343336e3051682f637935316b6b6269573974352f70695a2b63367a6e6168565149736e703678537a415136482f414e45652f4a2f562f77412f322b772b32477650704178534974663851797036624f4c682b4a5877684e4f616836514f426a4234665032416d46492f762f4965642f71334330655165506d2f553856664f3030415333783056467a355953632f744d79584a4d586457534f4a6c642b68596b4f6762766d506f6d5a642f7176355076384163594e53327849547576556b6c4c585153763543762f497338684137436f726d5a316c424f2b45666b553854414a76682f7741674550724f7835352b67637a794e556c6378556b31784b65514d4b474c53377a7038636337554b73377a7335647a7959637a542b446a66767a73482f53416c4e6f4548554f713052304763374f505430556363366a725556307a793066744b6834356e746c2f667839367a39476c416e386e663258434a3263387464737a786b44436a2b366a4f346b61593645632b4c326a3135692b4e726e50637849482b754d454b4636694f447a767848385065395035656e386c754659386773326b4f393968443231436d3572477655754d4a5a6c632f59744246507874574a4777522b54686c774f75446e66594c56695957486f682f38416b2b767133626c65736e6e6e7044756175692f786a5778494e6d4849763750324450636a5946577645484b3536436c2b776d6a3238475a5577754c4b4d4b2f3044754b4c7a2f624969613173506354672b58776c45395363736c617a5646746f2f6d6234484f67706259764a67536d6d656669506f687454756a34696f505a4745624a76627a695a31586558616e66454346556574666a332f6d41596d6c752b4d592b646a3752346566683678367339336c576972626c736b306e73377147456547374c6f30754e392f52414b4a684e5046544776345779635a372f4146397849505066566e776a2b646b664236682b455a336c47704d5639486a666b657332505774504e7078364c3035326c4253345a557471756c486957646b53686d72372f70765034772f70455445646a49754441395838337a4f454e57336979704c716e4b795a4c31474e79725572695052676b4975384571567a335441564c70706a6a4d686c5934584c7070724e5a6a3543432b716d39693533692b6c6f547a737a6175596e73717436682b69656470775766666c663361484e4f5332576d714770535a3641396a2f2b6d6d302f684663504c5569596e77484758796a316a62344e365a666b6c3632654e35325a742b625664386f6b39427056643174422b316253476f4f6d576e347a4a69383734364d626e655261544873392f74644e777a41462f5856336f69756261644a37486550485a66384132387679553132322b59553265466165333548715736766b45334c5258644e5a5a335576612f5279373138716e714379457557433845684a7931524238786e2f414636507636343239777a6c2f746b2f6c54335374516e7862787970597a536355525874712b3939633552494a4d78663771714271614d552b6a4f6e322b322b5a5042437470782f315076395062302f762f63536678662b31642b61486b6c42426e654b594179516850557235664a554b553334594b72795251724d46672f3958507a54557876423466754d442f7955336c5039522f694e474a34774c467a50374c50357156737a7a35346a34354e50547a682b30746176525a6d3867765845664e4c50554d6e4f54386336376e786d54413753416f427258364b42716634725238426566696639672f38414b2f6473562f4f6563654c35634b414c6430474f433472737267746c6e3061354d336d66376b755778776a7766326e6a526a2b46536a625573517a6e32765478776f4c6838532f2b54732b6657614d662f6b5072524b3839424831387654794d687570694a3266315a65724a4d58326935553745777462304f504b744d77652b68592f4451675974375a474d52556266656d502f414d6e2f4150787a792f4a63372f7a33633867387441592b5757343231653747676b7142424c612f56374d73477a78324648476c434f39573974312f73507071355038414e6c6232752b4f586c774f4e5039343738584d4c38572f794e384c68384138647a737278727976302f565a6b354d574f5555594a7936556855447575594a324f6f2b4f6f2b69766b2f73463346744936574e542f4146302b79336e56706266384d6a6c4a51326848584572396f645070644967663855393079726238386638415a5348734336487646786b76724156776d67344134785a2b38744231702f7332666d66345a2b487635476552796570656b4f4436662b7348694e2f69327235445650516d664630707030364f48717459754d53476a334d6f6d71346851705535794b5764644a3769484c326e546e557047324f616f39416e705a2b51586f7036672b726e6d66714a364c2b645a766c506863766b633664625a546e33726c79764c64707638707a4a526f386c554f6c6d6e505a55313178304b2f64314b51574a42375a6a343755764661567458626142303444797a78762b43557a53505071474a7179564672376461393354366a66477245445264546f4d6a3050626f54324c58326e32476963784435444d584f62674b527a76577a7869435074486e666b756e344a564c746a5234756f7675727933517733454e4b744b35346d434e5436732b54315a4f4f6f2b5772355648485232747268764e4c526e466477324e39542f414d672f42635877667874336b2f6d6d646c6f51475a43595a61346649443262727444754b636d56427a48396936676c796146732f5139564f79437748632b4f70375172464a6e7331465a2b4d2b71766b4f4c72746242323276302b4454565a6b3547336d61655035465046706c3958782f5671745374624b4c70733357685870796a77424335505a444d6e4b6f64524d3169504f776b586e587255555152525a7850667073616e54342b7976352b466b756d6153384c44712b4f70762f56665a437079314c6544617a6f366d5a50316a574d52457a3067634f7679452f7573482b4b3666554c385a50456337786c506c2f6c6547396a50502f4a61744c6a2f41412b717a4a4b6652504a6642484b79665566497370314f4759796361582b3076693635496456505a34314a7265657a554f6677577379764950536e4f38327a664d737571504a68317579315861685a742f5370326e633669527563734f7736544c4a33653656393834336854376853457967653664534d57774f6e6558357a344e6d46315933494e6c474e3542597574554e3268444b334659556c2f63785a784c463065634e4361464d46716b31614b5532726238672f4350502b303959453579504a6d6554726b6e54715a57696c6b6446516f68706772466a4a54586179716e4e786e5356367a4a4c70536d5076324163584d4736684b6f43474d2f36704d54485541764d6151524b364f374648794c46314231695a763576626f50732b4e6153382f4a702f38586f6b6a577947694263744866684d2f5a487a59343662682f4c52303570326f464b656465483337756844683462346461473654507346573948454f6975664f334e427647316265534e4e67334a682b306c63535a61505a546d7a476a7171506d2b3370466f6d4d394d436c6655483036384c4d2f712b53656d2b6a664861396c63574e742b4a4e2b766e71673070356d5262486c32626f4a47394b4b732f5065453331434531582f5a585a4d7168587474467037703644524879722b33422b50336e6d64765562767058732b506d57667356793733703958687754783170525050693261474e66564e61764834544e42535654434e49462b7872543746634a3273613934345262694e5a2f4c2f374f4868573769613233364d657637417a776e6c5446692b5634386661475539672b4c545a725667365a6551384b30314739646379472b777a622f315a6d4a2b7a704874646f746931527137766632692f587648716d356d65532b48655264303453704379615a73626c4a4b42675766666c7048715a334b71304a30714c7064393949665349356e4a636f645939717233774d74622b32316f65697670703554367565726671446d327238657a35394c4c38643862386b6a685670366f4e304a4a38725362616b67576e756b365035432f66576e5072413549556d4e4d3749392f756e62577641637a4e764f6f6f62527254354f6a4449693133784f6450514d633173636f7258426551546878644334357946776731352f48475a734c324762366436573656775063702f61322f4750552f482f3858665376633852384e7a4e6a314d3879384a6b386c4e6d7452666a61485561614750316a7135777077304d64586b6c486a6c49316675646f4659536b3648444d446e3872326a5633366c6f6e733148566c50716e2b582f696c6b744a654565692b354b694c39364f646b625a512b547a537a587054744b30315736424d304b76636d50717965487a4c524d7a70394867454a632b335474787a6166354462487762316271386a58534f686e466c614547706f576e44494653717057572f4831326630393744415a6d4b4c5362786e50594242545a4d38334954536b663679745862787a6b524c7a54386b645078504576784d66777279587a54595136564d336a6d464e6d466454776533576e543430505765784d612f48347935306d473549307553414f446e464164347045385974746761302b7066724a6c65746667506b506a336d506f6a3533345a5875346d67506a6a764a6f4c6f4931673668735a4763377449354c7172537531474b6e59317765794e71513969522b62527457753232597475795049352f6348394c7466315a2f4870506e4762346435524c354636412b5437475835745a5a2b71466a6e30537a35475074486f73544a395756384f62397453376c4d4471546437477079306d42656a6f32696c38627638414d486e7a566f68664a702f735866655153334d4f68612b7973616d4b70432b4f5a546d6b4c374f54315654715137346b645638513842522f735036374f783535426c2b5652704d4c5a7a7875487661326b665a4c6c724b65766a4368374c4d376c41437a52644d516f52336f41766878307a7a6777416e45363770323765346674507833794647567a57707962416930595a6f386666624e326a4d715a457651436745576b503658554c733268614250676d73452f774330656b557a54566d4936774f676e3972624450795038725175446c7131345867666c6e6b576c703462526b2b745454334a6a52647a6c6c69704a795a6f366b76534e3332416d6e64326b3055437369545432696361653242366176474b4973784f646b4a6a3465666d55307469576c3555556b6b614a5a315652344b3830682b3077764c644433533937527845386636477453782f793442517639346e773174583451656e76724a3451364350794c305339535043395262386c756e306e42354c4e44706d38744e4c697a57486e7a36553765674c6447616c66324c4b41423438562f56765a702f6132724d3874683567772f4c333159546b2b51654f31356e6747706c6552535a55756a4d2f4169676e58524235484c354c4a736f544855483850354256735273586461336e3275675a6637307a642f31392f7536357a69776e72667a54314b66462f49734c533945765432732f4b39487876517459332b63664b4d45626b6e705a4b38586d74554e4d3961526c48763257755a50302b385032547546495639314765462b4833464665622b615165566d6e667a2f46504766414c6f4d7636444d6a784f4c5a6b78526a766651475978564c39536771442f67696a506e73363539446c6c536661612b4f39746f6a484474594662773646656f2f35577a46543072512b74494155576e5078692b396b7a574e736a635838656f7245393577756961776a45772f7749776e6d33616b625165686e674739357a66466a777a4e7231395075584634356a78534c4451304741627165342b556a6d655a63736552517a72664c376e665a764a4e445843794d4b365874455a6e4855657250384566376638413576346c34726a5a574e564e34316865574e657a79325076693058563356535972676a356248712f44525a6c2f447266437965566c6648555a746b316e5755754b6b65445631717a4f5a2b455550384133482f3753656c35526a302b766e70456e4f6d336c3830437177736944676a71436c3273443359384378624c6a6a7878436c4a4736727031486638414b2b6730715a486652396f784f79332f414b486d35386a38593832386435644c35534f6e69362f6a502f536634727430397a483536356570675a566b575839436f614f72684d4f634a3376636d592b714f6741366c505a45785053527266757559384a325165316674475569344e6e654d475468564d6f67564c6d2b30666b437152693368775065487a4b5372327a4c443357726a504e3041466d49564a534e527839706d4d6b544449374e466b7a326c314e6c4c5a57777558442f414b2b6670732f574e3650586535496e2b312f4466336e6b4e3650787a7776556a4b394c71504d37735857785053652f79526e6a57643562526836763852732b5153694e2b706d53364a454e4769346671355032354a6c4851444d6f5844376b7170462b4e3572757831743639643436502b6948714e744b2f7744466d61576c7441304b73374871616b453551517a3941686f5577704d2b50526e7337564c59413643685a39506b3161695853307a4f6a4731597a69654f4232382f476a3150696d3147707839505075506552432f57477a577871616e61734f392f48774e30723953657a6c45656c72665659355845685334762b71396c5275496b3874362b504441707a2b34482f622f38652f4a752f50384158447877354d36335055772f5050443832664b7942386d5059326c384479444a31735967437a566e46384b327366513652504b51346c50744230636c7448573254736b65557a386d767863383439426650483475356c62536372516b67626a37317130616d595970614b33457968795a2b445176335375373067416c4a732f5242786748372f5170715a6a4e65385678354a345679644f4276595957555a4657502b3954794346644b4a534b335331705a67797a6d75704d5a6c6c4c4b6f564c2b4c326d594e634375706141737a6a48634e355078432f746e7a666c643478742b577a65724b63786542535367774963347a387370764a4d2b67454f626853305764734546366a435a576f694a58736d374d4e6647482b36366e744561637a47334544584438712f45672f485031583050455054667a6e3155367a4b7a4a4d72636939524d417645504a3874324d646c43706b795258454d6556394f724f446a77483243644e496b7a3365384374707a76706d3161342f4b4e5a6e6570666c664e4f4f6865734a36387875636455343070664d584755552f54485568576d70772f745a4358654f5039652f6e744837416e2f5639736263354836667a322b71374a76327344784b377562597837573034736168706e506a45567171364c6c663970534854396e4c764f75425536584578517a73572b646b664449415831387373497073334e434b7733577a5435674e3542464758334d3647564c624c4f6b4d764e52786674667a64667a352b67426e307a347a515369443162383077764631654a346d3762343569793256766363432b2f6372706e36796d4f5a6534786e7a6c7858746b54302b4e3969674f62324948337353796b3069625a6b525879507954796e796e5970322f4a74336332746253563736712f494775726f63674f756955426a615263595874496c6f53502f77765950365952383676733132784f49366a596a307238457a496e4c336447476a695736446f454c644651794a4a634b6f364c6e75354b38484f6a58462b7a6b35395a332b376a754131504869764b62545055584e4266725a6d764672654d666367646c566f5a43544e4c49544b2f476a6f644c6e5a794e472b56783645667a4f5a496b625671686e6b4d7664376a486739724f4f38624e65706f56657466694f4c6e65462b504e545a343748557a585a566f616532694f746f30655158614564466772586f527264396439484567597a2f414546314c695170306a453531355a3575416e7a2f4649764b765158776e784879543034445532504335723538487958782b437554646b7a46645a716166766d58395964426a506b6c4938346b766342302f4d396e5365536447765339706965304e4e4b6654546438583049647a786e792f794b447832576e4c30684f506275676f786e56492f694b38636d4f4943525147735577716537695272556e356f2f67636c6f383069325a784e5249504f7653436e7a5077702f6c664a43386a38693865676a4374316938616c56506a382f4d2b476530744a56414c7571376a6a6d79735455584b77546d38614161516b446e5475694c62656d427a77386b79747247766f4236626d71745739664f4e4a702b78633555496836324f5259385334566c4b512f744836446c34423051615a39627645316d754a376839456b684b325266467a64516c685465397a594e46554970587a6a4b6a6f46594a6e35523753583065456256663671584b4d4f6c2f55666e2b333247626c7a66504e3976585279797a4f5771385a6e4f4a79674b6c305264746f686b4867694e482f3079645047734471654f48336c37654f7a43737348663965684a5432332b4d727054444e797177485738584f7778587771663834312f77433470766957585770427a61694f662f4b6e74743976456242654e3553724d765064666e47326f48635858492b4d4a426b58633246584c2f73784d6c4b6a4e614e45354a53746a71503950663841537049422f5652752f7744327650584c552f487a2b35442b4c486d4d47706f43656c366759667035355375356a4932616d4e366a4558693163476b75557143326f3046554e733354446965484247304f4a5336417879396f7076306453737836715036652b6a443965326f43635963486f4f345647565050314d7769744c49716f45755532736b3153314633682b7851694130676e69306b316e69447971662f414369544d33664c76562f304838666b7952726254344271497a476f4b694f56683938684b695a4b745530394a6d636a2b6254302f6a5034564e78327a554b2b6236795337765a4d3172664853654131542f7431656b7276532f3159772f4a2f575877724d387379755a394f546d35384f75452b65466535586e78323150617879516e5878776b726a4b4a32797a667953584a4b514c50622f576d74616256784668747236382b5034657a36713034304867506c3750536957764d586d3458385253394b74424f74516a64526679485964705a365259746a5a564b706d4e59527845466e4743414e7a704d3765317a4456337a58307670337478476436582b44507a38496d4f716a77553963316b506a434b6d7655666447644b584a7a324535333069535a6c32695a776444732f324538764673527a576b4e38443047386a77724f4d387038617749414f545a7835664339545246753969365532666f5a6d6c3030573965683378664a4f3054712f784d54436c5a6d6b4462524e7278614f485150725046664976435a4d363661715376416f4f723450466f2f38413158366b625a61496b3176576d70344f7a5936464f6d2b4f716563794f4e33325742395a584271506e676e34336570766d55383132546a7735766a5674717975323653357a5874414d6237633075455167432f6b3550443768667a346b32555748314a67437a367962337034596b62652b4836362f51316579747333507562684972707643776c59303258645855685633516d726437566b546b704e616d487832625a7871503030754e2f716c7137736363594250794c3176684753696e4a6c702b674357363071624d4b77596870487131493654494a6b664a314e32674c6b657a36344a63376c4d696a34494136735538654971585a334d66797058645853744a46315373567832374e6b7450424b6e345a37482f42426a4b56526d30547546597571556f573864396c676d6c5a6d4e346a45593842583147376d4931776a31526f5731384d50436f586f783078642b78594961534c6e6e4c336c6c6b305a5a767346714b3270355439672b554942564b5a42504b33455a515238466143654536706e73714259724a307a394b5931776839727356547531756f37476c516d30707a544e2b6741702b7042657279686e6b36344863716739755248457a4d3570753749675a2b754a633048553859766c566855466d6b4c423537667466485433674853585567476c327634724f736b632f586e71636c4d5437713754785a654f755744766c754837486557304a6451592b31526e4d7336665a377734664b654245326d547156366256384a374b4a666270775131525468426f49586f674433584c534e5878574d4c71763153733364704e3331674e507843414843386a332f41412f564c6479764b335a576e6e4e5755547368303846386c6e7a70567a71376f376c717358316178616458512b616c7166734a4a79684c7639576d496d4f46503146672b7448354165642b733638743371543562722b53616d6469364579475754526f4746487a753168436871505a78697873304a654b74364a7a4550766d533733492f664b567245634b774b56785535746564653756327552483471785463784d7665466f5642563952766365556b6f5034574a71396f7062327050464837673971757653444e4c666c6e746865767953636c344d3965646e513035576d6372374d4a712b41664b536e3471335a7575637851696458336935574a4d4d61444a7a6c664b594b2f714e6c7641522f577a313758585335624b336a793237536b6b56544d367151353653725076755456784f625953317a6d544f4d36303541346165382b5439663078746d4e304351713831415a4d6d47664142315966625851365664395475782f496d6e54625a6d6c5233762b5735386e56385068754548487a32456a6b6656564177395a686c792b5437554f566d4b37514d387861774c6e65752f37636a6d7663513963557957457a725547706f2f3968587462504e305741766e37477a56332f44567a4d76745a506432765175705a4551666245355658432f336a47504a5a3670773435435a702f7541537a36496532652b4b654d2b766f4145792b586e576f614f6e3947396f6e4d5a4a58433931426c33367764546f6f46662b7566724359442f414e3853416b594e2b47646b326f544b534c374c30517166446f5a623238754f69365054375a325a52497664304775556136466b6b754d6d455a2b4f54535832523978483849456d5259517264706431574c656d6c556a4f4c36734955737252596b6e73626c45527258786a4b41346e3242384c7158664d41675a2f587a2f6165734270696132424c6e306b5665676972733348304c66516f4f31327953435650476b4f65666163762f334b51482b46507541756645584341307256744d2b495458794f455a614d6d6c7776577a50736f6e3037457a304c53707248424e65716376636b66756656575a464e7a376772466e4a78636b6a5051427635504875536e4c317035616c567372494a443739795a567a36436c5952473065723737745364542f622f724d5075482f37616836376f46644f48777a6179583531336a2b524c79333963446d706b335137653677452f54715930346168725762567977384e5163424a6579597858337362772f724f6257725048694931337744306f74586c41333035546961344f6d6b6f6b3566714a5732522f77444c4a54465449514a34556f4a577862756b7347474e4c696e2b735a557a736d4c572b472f36414b666a6b4a346c76684f583548353734313472634c35712f415a504c746d66454343794663516a6442567442456b6d4a46504673346e3567354d74764f6a396b50695a6a4f3750444742306839422f37715035412f6a7436524a39467458306d38412f4937302f3861434f627731506d757837664b384c477a637761736647736f56477762682b4850693437375a4b2f58584e6f343477574b5178763750533974323733646871462b6176356d6571663534657233693371503554345a6d656e506876707a3468646865492b4a3432744674597a77756757786c757652703571546c5955637343694e536b2f747867384f4957594d2f7254533071364e64735733526231362f39436c4e707234576372657068324f7a30685878724f6d562f4776584c5459514137724f657a376d58514a4330466c78306655716e6f2b4e583958703259454c314e4c716f4c4d3153776663766a2b705a4f7474445467525975474e635757667a63576b724a614530416e6e746e4b6c6747684275616c4e68625070753352784d68527948425a54543556674f3336323132596f79716e73485737386c376f5a502f55676c58516c447573536f6a5a5a3978524c4276395676457a4844754873303843313146342f343953655677637166786d56714a6a7572613247413463314f5849354f526d7a6d4c6a7931753678704b4f6558377a4f6d6236324345766c333755693838365051716e71356e6850476e36584671594838643946564e52665164595446734d526c6d442b515a37665a477a343661416437517064384e5139706664386f573177496c704a37715655486e3258754d7663374b57466c456c58666d45626c765552695947495538644f675450766636443444736855534c4c34516433756f714b34617664306675674879724b4c6b555974545679466d6b7472774b6669545431332f414679576c4c514b6b71424569586662704a375143684669364b475a3841746f734f634b6e4f4c6f30653179394a622b4639687241674d6668636674396741717457563239426b354b347538566f78577470726a76626f51307373474771436e6a4c4f746a425a4a6f2f584436482b6d39505776556654345949356e6c734e48326f3872376451495a386a4f3278545a3257735a564f616b326e54487756776778616e653856664d704b5436516e4d6e683941546664527a717161656f6e51712f744f39624d4a544d41346c664847344e51474164576c303650317a764f663741636e3446652b6b76304374545973337874314c30364e7038735152557756716562626a354f765030445a524b6179636c77753643656a333243446d7472637833746f434b326174334e6d61714f314845336930657044743138615a61447a366d58382f5534726a594f633733692f686657656b7745776e4d7a6b2f6f50326832465536674e656e6f7a526170712b6f4945572b75535261536d63316a4978564f315852455a656647416d6d5076376f5559732f6f434c387578624d37724f5638506c693558614e47636b61715370714739796166734a49633231316a4c68576e677470594e672f344f596b4c6d413554394f335443463779314575654b2f71366873347138456a5a6f374d4c413034676c6437436f54774a657234526e48377a6d6e4d585466304576376d782b50705a69596353344c66624a4d6f3570732b696e56534d7271614e4556424376384137794c4a3368326775724279766553322b38756f6b544f654d6851624653474d317930756454536a4e784b43586f4d6a4b43384d7a4c71794274644d436d58635774663736315032476b373552344c432b787745564b6248795473376a3661697a65384174474e475a3172714e5a4c594d3168777536587a575333632b704f6f77414461517041314a6f49442b4e336b4b426131655a373941676c43486866355479575a69376b4b44443652463966726e554e35786a42535458413161794d7735313145617238714b4c596c454936314f526139425639365530417475645957676c6b6a6e652b78797471326672502f4147684a7a34526d634c682b62675362463262365a435856326667786b7052664f7965686362446d516f732b4a4e4b30726a557532545442692b6c3876475466384b446e764a675662516f654c55764f2f6b45527a39477842664b783432727561786e4b372b3272672b4f4f676c723659664a374139674d5535774c4e7638415152765358334e7a326852537a6d584f68466431444a3830395370665758515a7369526f6a4a4b78416269587861314a6e5438502f55576444692b6346616e5a756c4a6a48586e302f616a3550444f55747543304b47334d54552f50637031426e645946557275636d59396e65746350784b64575266304261487451314b35546c7a5a4d6c49554f6b645a6d7a6f7a68355330536b526f566349655a716565372f46524a4950732f4d644976554a7a744135664f70326c394c4f51736d43754e564751596e3872413562464d4f6b71543576664b75616357546364374a3651556c4d3464577638415138435077754a6a38393279744768444a5632304159725031614a2f6e3055716d6b545a485566754b71526b71672b4a51546e3862412f316659455a6752474475303769624a3233513051536c6f3179385342326e6179704374616b79306939362b4a686f586e672f7178396a76724a5341676b36416a5057614f6c4b2b6650687978507231324a6b7846556e567957784b357048573571357a4a6e38664f52694d6767796e2f636b78416530794b2f6f477832617272732f7337564d7954367165466566432b6d50445250376f797065636f634666377a667666436c48477970623736523642726d5759594f72305873705232393647764b6d4d463069744f5a792f51695a416a507562324d68647776723252674b66736771662f41474a4d56427848416a7237396e6d594e2b794d3677565771652b4c69412b506f6479324e6c747636626d6665316b7a30527434517039342f4f487951464f35505374773352744461724f306d5255586b36574b656236314571646d745a317468576c45766a377a58784b45696455394335684f6564776743566a78706e2f335036636e6e39672f563137494d784265517442646a506e354e4c526a756169436a6f7930374447614e5446614b61744c506f473663472b3332752b5a6e2b502f4143326f4a7a52645a5a6e4b6e4f655050744e576c42556a3764736e474953754b4450765a7969597846717a583041435532476e4e4d5532485a4e396e2b7262376549655a574c565a4441523252757a624d3368335a4d5432386d6237707035717236614e3239597530316c506e2f48557236792b436a3367346c4e702b656f6b77614a5449374d6c796161396d475456725633716b7a4d647a2b4e77354d49707454323973755a775a314572707a47305a6944684a636f33663047752f71426d4d4c7966344a476f3746765a65634f316e4d766c63754b714e704d64654b7365677a52515647674a47486170497547356e66734f4b3832503170306e356a7a6a666d724267482b532f6c7654664346584a4a39524b636d48506e2b3666775a6176717861525a2f5931356f30554d4a4a64357776394d412f634266744c6e62705a3254676178654f647978365a794b7367787a6e52506d6d2b527750304a6130702f6a7a374a384c32667951515a345046644a7451354c6632505032527a46625537686e6a7232644a53485a552b676e4e306d4335613670654d6d2b79543752664e4e506e66477462454c6c6e42535155624f6a426477572b7a336b4e7554792b776d324a4d71506157726c793944514a2f5a7146616f7655314957392b4a46484834767875793266566e6f597959364f7144374a3937514b545037476677665839424d4d3742386b713545747a714561712b454d7a6d4e6b53432f707a7a756e4d5959317337436c656244724141422f6d62586e37515478436d6f695a695a345269425953374b55574a6947327a62307264755137366172346255542f794f693556732b696a347550646a316a5a4766774d6b4e512f5a4b7a345437772b746753664a384c3832387771704b62783178425330573173325633524b475a694937737173666e6c656271426e5949734262565658737a6668366267423472695a694f76415750503657717a39434843506158354a7a61707742793638383569794a715735326c645979673632564b4b4e5667667343503374457a63613244316965746a6479377344704a36654d394f2f5366786562467a7331766b486c47784c6e31617a6a5a7a4c304e487266326a697462526f6c5533486a6e314d6c5a784d486f66366e63583839594f6e4a6d5535744f656f6e386635416c6c46347243326274312b706333556c6d77382b752f366b65587155616b7957732f69576e484f33354d736d6d766f4e42726734627a4469686c704e596e714c5077664f5a76494b646a54704a6b73753166524c7431366161714f3473774a49755236386e484d345036304c6544377558653659514b517047702b5a51784d52574a6d49784d43635765727273343152654e61613135326b327a4b7a4a755a714a52524634306969572b3133474a6d426a45366b2b612f6e46524c6376332f705362425678583956696b392f416131657276726e69745271654a5755766c4e6c65726c7a706b32724b632f51374a34334c44336b78575936356858332f74566434344c6a5337594869544d4464374e4b316d496d6576694e4c726a79313539646c52534b43682b6a50534e6c53453330707a5a5853774778535a5347706b7535564b306d4e573776772f576454316e556d3472382f6e3977724b2b4a47576c6c76554376553868755844483830387456755573732f70423350705a4d55593854504f786e516e41474246304f6449573866326f417833515a5575646c38727a76736e54397162677a4b4f6b46446e7a75794b716277735a776b304642517639463130333237315366443870485345386254356976723646616f6c712b4f3837395475315437587a546f7a4870576c4f7479425a7a3848714d6e4e366e334d4c32385552665763646e2f59414730613532784736524761764b30574b707435654646616d725a6f4831794b6c4973517871676d59645768317245464f6b6d56552f6135522b33476c33563850725532464c6551624557747075445053784c447a3079565473726a2b5170416f596d5a4d4972532f6b50766a5a5177316831355548657979634b54397a546949784749376847625451676b7a54314963645864525461343947763475646b622b6c56514f36547673554e587044554b2f6b39396e764e5874704366336c49693057565a504b4c4b63317368324e753738616f54664546764b4672556c7a7134532b53676e52797a694c475039763345693531666662527744736e68757435482f41637a767070684b526b3544585a622f4338646e556978716874434e72575639736f4a73354758484175583466384157716f307144344a76795853636e506d5a794139474a505a624f635a38444d6d57656f324b5034655068546366787a48396335545a542b3043343068377772335738697a477a79735a5a2f495552506b52782b69553549343969616856535664633567787935557039367761704c43423373523742443332725864386f43384f6c6765514d76645a61666a6970473154546a636c62597744744c70327a3861686157547a727153536b634a414b4a67435876464b3273427a5638736958354c2f4142584e7a4c305a57554e6d31626e6e504b3144677272635a6a4c53756d4b506932734b483343772b7354304f393774756e39376e2f726b63577a6e6a31444b465935484e4348514f485736614b514c4e6d4c4f35574b52755a316f31547a69533075624c51377379653847785168307a344275486c4564664d51727a2f79657165416d756b30476c33714a7164503751674d35636c64714a4755654573667444585237774565696e676577435170726c2b2b316137766c41707631413263735a447038625a5348614c51626f4d634b72465a366d317735765664776c35372b6169304c534c485446374b31432f336450356d754e32735a3735794b67356d4c3438682b624e32676865365a4b6e48334c564d423948516c2f6c6a7236783038355866795643326141666f7072666e6d2b346e39436d514f313530344f626552307973656269486c4578306a78704446472f744d3958326b3948764c6f6363314a377a67725447313373725544684d4a523379334e6b7a666c54385374355755354364394d2f61567a5835556b503275706e644349315a6f7345666b613370657a34563954787679385359567235563559395646664c3130714a7a37426878326666516f7255397972666b6f644c554c6d536f5a375a416a346d6e345535717a6d396c6e374a6f566c596458325a4c616e543176376e4f504b6e706d6e3454457950545471594e4e4d7935654a634c4c467557594c58396b6434306c386a5a314141574634673379445030526d48324b5a332b51476c6d33503737776444614e6262564e6d304639644479466247506955364d47726c61616c4f4c34763642786a73382b70742f6b624b4f575136424a5a4c5473364e51492b5148517570745975366872776f47376c452b6a4b74673930467053485a7576365073426e7a56326c3656725938616857706a5a6156736b573274466a4b52313531614832714536645366632b356c6b352f4a304b6957346e2b346d496b6530444b4e5879584e386950552f6837636954446c75356f7978367853536c712b50763270702b503139426265453375587066734f734e51316a3976334a4b68774a6348533330702f4d7a472f45502b31462b5448714e4a35456d4c31513837386c4830363950633350306c56376a4e727948486e566334595a71454b31733348573673336359494e6a4b43644b6735314943574e744c336e74476e5765785165576e38632f523331472f4b623176395076516e3039442b563879382b38767a76483664564a465048446e74746439337966562f64433079707a38625230714b32677033454a506f6d6c394a682f58666530616462616c757a50714231682f76506667682b505834572b53656b586a3334397a2b514e7a764e4a644f6265386b3366494661664e6a553863776f5561356b5573626b35715736545361433535314f3446375072706e6e636f2b632f733270716130576d2f7741493430335243506965632f4e6e572f5075616433576b7431547061565a636137482f50584f722f364762484b33324e3737414d456f4547554737673945597a783643716175625a7a7a726336376e3854567a35566d782f76413837334d714f5435556e2b6e4b364b3363345a48376665763466337778414c30322f55454d4e6c566d6337414e7337534954757a7444547430352f696673434d54672b776d7a32644b6c677739347667454239582b31762b6276744e504330534178766c553831716a6d582f4149415254646463464c6d4e344c7576757164634144594b567259734f763466755330534165735033614277583135376d755678536d494778594e44696b5179454b376d76346a74727662596e70522b7742373367745a37693462544a77426e2b37396549627a314778624553684950465354756b754e4f5964706d6843304c35594d6d657a704c397337502b656d544f66372f414e734d33447a6d67796f6e63612b6730564f2b576a6c44703044464731374a2f774472564e714e342f4a4f77714a522b5439384d4f4f5330425a77472f493350336e6b4c573851346e6d5a6f736464465a50574679712b6e393374576547334f4f655631532f2b575753674e4a4e5544425562557563355454702b4633395574316e3569517772592b656274736536324255786d37756e56717a58466f70584850724b51317366374836626c3666583854387265695a42382f584c2f7741594572382f30394466794d364a315052796b346e2f41455249716c48484f6e5164636553796e582f535765316c6d6f3031646c636d65537a363379734a703934364348636e47655a4842574271722b64312f4c772b643954622b44662f414b4767766b7a506e4a6d656a6e456c3743636b7a6478514a504e344165794f6d695270432b4f464f712f552b6b446443336b38733947512b7a50392f4558662b6f4c61355078436c30356d51632f7a6c35317161656731797644612f4b764a664850457645494e50794879485776487837786a4977736b3944794f37533053577544783659666348614c476143377672716e42356d4a3066705a38636b68744d3469387a35443266663270662f6b397966454e6a7872386c667a71797358797264564c6b614870392b4f584666667a387a6c6b7558666c62487162742b4d6c4850354664787a74436a6d4c4168794b614253327533764632526c356e7448746b547961584c352f2f6b65726e61306b3559426c5371634b6f326f783476346a6d664e4a2b70704572564a4643347868546c386c5648326462565454467942744141414748776341724372314467385431794b6c635664594e74707238626a546d33365672583939334e572b707930424c4f635564457636645130564d2f786562652f5a616d30566d59794f6676354b663346664e76534c61765864366333352b47586a315434764b446a5058756b504b30686646617a7846624754704869575564476b4e486e742b5a33732b4c7448372f72616d6a466f3757427054367166334950794c303759715054664638623874385946337938314d6e7962517a6a6433357039316a61704c2f6231646870707a3139577168687054596469557156496b3033726f307232755841305338702f4d2f3841496656386d30624b504c742f7862517058354d366e77724d66342f33783130756a49554f5a6b3775676e32682f4868702f77416f563735654851316561614f764d484a36726f6a54705775646f73626131665066482f53764e3250556a314b386e32504c6e61655639664f79744c6a6f6f70494d364673314662766c6f554f7957744c4c455672484177494d3368686c65324d5064534a72613878577649504f542b627635425a2b683431503647346c4e322b3756386a68386b3952764a585554576c526f523646347953304d346b2f5979564f68734c2f414e587357637a545939514e756f51767430715275332f36666f4f5a5073574a55766b44767a4a7157314849506a716e3465564d6c43536b6f682f524f4c326b4a6354336e2b6661543477772b453248762f48395055444e4b6443636c4c4643334a51417a746e6b52596b7157552b314361517362487778364b4b6c744e715742382f76353162752f4c3870364171666b68474b5a6d667978434d7853695971573369416d6e6f6a6d616f2b7357424a545a6247746e476b4a71354d416531545571396d577966474263586f373658655a666b4c35644c344c34472b6c316e786a703871733559722f7742514545742b616851574f347a32705a50786641585a38534f394d30755762694f6b32326330786a41337a3951503761426542654a655836362f4e61664a66492f42447a652b55596e6a5742755661475073376c736d62504e706d45665a4e4966346c5931456157445348385662796741613447686c4776756d764c6e4933712f44482b314e6756622f414935352f774371657061764c354646593377436e473142317558377358377a49547857787559786b7371744a2f53486c67644b615a49653833384e575772375250534a396576556a654431422f7441666a7033577135472f557a492f4949782b667572545474536147377a747a6c634b71565049614956434f615536696f415a76597a4f44356772642f485a52375465493642786b2f327650526e473350424e724c38503134764c76434c5a724c2b7832494d664c746d725268774d7075726c545a3854615071646f714a5763376e56464f47636c7a6b4c62384358763763334e7932486448304f2f48333038394850456838662f67387a783269694f7544732b763545367936777170614475353436624a51664b7950517473584a31705354677178775551664c387a5135645339706e64317950502f4150337576514c78447937306154356e68346f4d38753846386b352f41576173334230527a2f49644b4f657a776c6b655a5a31447347614d3831704d704c355441776d676d375052496165763257387861496b6362503770583472343334742b6c5834575a586a64723749504a50447650504974585530556c397a5a31746250394d643359724d4865394d4d34616e6b576c504d76324c4e6150595a7a492b59522f7270396e314e393954634f507644476365644978373151724a7653706679546e435752634262656c7743643861793648732f617665373963466a5664365861423365693455314d306e47786775593176755a375a32453065394e4a46555955667366386d4c35772f62384a39366636397678787737506b45674e4c6850714b535976674651336e4f456c33656c535075616e6f73496c2b306c6b5971507650387a2f41482b2b6e37532f714f4659386770542b686255616e38636e334738757436315955494e76743678545038414471784955732f5866635876372f38415139772f2f5273436a75304b59505932744237654358744258576f4871796e6174786e787a506a456661342f62336f6952657a33415837396e51614c533077706135664f4233696d484b59506d6233356c72364837563150656530782b5953357a32663741392f652b33686434427a47504c646e6e5745746861343649726e75417338565441754779685577523077306b79723434795954753944326657374f7354363475727874752b494570786e35707a725766666a7237485a545047635431773353797564524f5638314676507268644c4d726e4434504f4a73637476734533482f41452b48362f6f4134764b557448723238463731313254634874443257704e5a325843485445756c5677534c334f5a377659457847516a77702f697437767a4337715732526a6d3972437056584b6e4f357a4f64787830613735613052704b6235552b39743177392f774262656b6c77635734474d4250793034396f4e4657704e35477877306449656a714b6654775830734f6b654f6d52536f5541564453576e674b4c6a724f42386a5444326877517637767a434b4a73327346726f364b656c396d59435441537171564c573459457a6837526f2b7839684e43515833394358592f673466364a6641667450574132426171562b7a6e7871614d597a324856775151754c6a616d4f6231334670584c502b705352774256316b2f32526d3737584c574358592f4e7545326b38363149704953376371796a4f7a6755697572746f507965775a75684a473642592f76342f77426a73467849634a427a7551502b6f326e37585246496e70494749386c542f48695046636e56795873423244625174565271513376624f6f6a2b5469356575396f462b76622b67393373346f32392f714e6c7641527968374b6b7930734a6766716454706a62593579506b52314c4d594b413673794b6b69555343596254396e734a5057724177397471645a4763593934344b466a4739686c7a6e7a2f48517a74445767576d386c756e6a4a69574c593542683765644d676d415264536f43556133357670674a51556c6d76355857756274566e73367635766b564f5041537a68643934734468464d4c4538346e72666a59485250332b336867786164334c5548362b554a54544d435755456b55557a632b535a6130472f4e576b534f5671324f4c32567a56664c4c3057442f755a374239366e742f724d4251734c585639626a78355851343638344c45746f56336b6950393456704b46786b50466a515057465135335768386763344c6a502b744f78353543694a556b2f347147456f66617654726f7435394b5132797a366a5a6d3165317a6a6f5a3076615055682b2f72642b554f4750514e4b322f7741686d3671552b4d3935306e57504a704773342b4e303756636a2b4f6c4530582b62736c686b6e324a34584f663541767044377668534f676373704a3351393842765a5031504275655a45544f476d366b65786f397a42583866777a384c6b36772f37446e4f63372f494f67446f696252383365444a54784c656e5a77356c55394d5a41743474777a48316175526839763475477746694131447978695334596c6a78725067422b58636f6462327452565a525231387a56665763597134537143706a6a397a7539532f694f304a2f61512b5633444832443733644562323750446f50536c2f5a4438534776776a31723878765a4272577a33445663485878546247626a79706c636d30636e6f79444576363545484b6c503841654566792f45374f366f4763382f32724d37493852316c2f757a362f715035462b4e50685778344c4e355772784c783779544439512f4f372f54327367395676427647386a505a56682b66596e306d4e2f6d6f456c52463269566e763052435a395a2b384d35334a73505a38653874576531503475794876346966336b59764e332b4c656e62505466663841553778534877546a743731327a504950484c2f55742b373439577933555057394f536e532f4c6c69304b4a55677564705537464f616d735959324f4c2b6d70374e4d546d4c62664c3452754c366f2f33615077523876384152483142387a386339584d576a62776f647752385238687675385339517537754c434a5a4f526e7865517a6d6578567a5571735754557a684c7870336b536e53544f6f546e5832665669314b7a582b772f6e7765766e35492b725035482b6436666d2f714475553232367a71536879556c794c4a7863656472475a3266335058325a42586345745a444b654b4e74583344475a356e316739396e5470576b5970786b55746f2f624c673252557259484455624e42724f6c454e5355306350384154623268326f56732b594a79503345685a394e584630473335707233307341764b426d6d46364366786e56544833736e50724c35537534726e4a55505a51577a6f2b353337365975425a7a4772324c496b394b2f647a594865663841417a516b38783944736a43383372314c4a382b50527749356e38316a35735948324c76393735704e4c354a495964542b50514e4452346f7a3868616e346a6b4b305434646268654c554738682f695a34397a443350494e763178386b3853394f395852486338693950636e494a7446616f333539564d2b665655796e3464792b577957773657514d6f557636795a56514e57772f367939354f636264317645586236425a66706a342f77434c3573486747504e6c6544783376546b4a31395333503150494d356872524c7536537045397173314c6b71684a5256304e434875334c4f784c584e6278394c7a615a6d5a3751354965762f6d31767156366d322b412b6d4e51756c5065624e5a3544336e745868414e53355967307468646a4d776875722b756658792b7a37592f344a2f37696e416656707873726d5271702b582b4e663470345a6c5a515a6b4f58746c735a755a664d7a5a6774574f64342f4775475454364b4d744b34536f326d554f522f7651345151516f6b516c7a686462536a4d7a413537476b776d5749416a762b79373255425174552b676e6e66396b62654e2f667a6671644171486f394a545a6a6f425a6d4369622f572f377a313444484e4654536f5a566f50553479354d446a517574444f645979465843593868502f6a345a5359584f734a79542f53522b6356442f41466f444d3555505a386a506e644f59787073316c692b325a63396c5446676453464548324f696d66342b436956516441446f4c6e363537543578496376794c54384e38743857383038526368476e343573796273657a69554f6e75794e474779712b4c6a625966335174674a54564f73476735774a4955724a5a6a384b62347a46346b65343338592f796b384d2f4a7a3053384b39536537474f765874686f62356a6e6f376b6c6f654b74722b504e386f544e4a6d7a387568717248536631436d6361316b5873524a6f4456337361764b76703230375771473372762b4b48704e366e65512b4965716e6a65444234783533347a35626e6554654f2b645946456669752f6a4c7a792f6d4b6c613075646c354d32746575784d3465316f6c4f6e7342636578786e384971616c7178746e6d7241336538522f492f386c66475a7150484e4479337762433570565a625a3235486750664b4e6a794632306e57687a58463865672b53715555722b786530766451784f77526b4861412f35796d6d6e504850723743757658503039382f39666f7143382b70447954774853325a2f4c663841775a2b565050337a426b49664251796861744259366b66456c71574b514c35333154416d697161576735765a617434723037516c323534376a2b6e336a476b357035766a63714b36585a386a382b50737549434a636f584e58436e347033527a61326b36647870554637727742554b31752b7a7a2b6f6a4e70366a7a472f33637679693868327348782f306f38585475782b4965707a7074697279706b48794a314d326450644a336930645a534639786174757042384d616a2b6a396f4f7a7356387a673533657a3663566e645061723678363768353561634a6b644858443971696e71507363664c2f7151524e54386e566a4d535639714a6262492f7744575444595537672b7770494e3538505a377a792b345574724b524146396d6f6f744e716c64355430774f5a6559355a50664e47705045653770444f355965774434516339344e4d54486b55367a38676d584e49614452394d4b682b72787777534b664a786266646d6c616f55486e2f4c55777250726b5a635069756e37792f592f73654450445a36362b7673463465676c54484f664c4f7a7352424678784b6b435a5a697a733944486533394c2f7742684548513577665a2f6839512b6538316737666c675a64583252716736355a324d363367476e724c564e4335712f726656616b6d4b4c324839734544377563353339752f58656e33763961426651587965645954714a43436d666e73477a68534c6e36394878394837477349636e6f5976516e653166372b494241542b52334453796a4f6e6548584b466c55756938654951647257414451693159425a513964546a7a786b59433532633549376961457249542b557a2f597157496e547635632f714a483652545148366c656d6562597579755457383838596743645972524863682b356e324170426e376c45774b7152366168346e342b2b785079667344502b7258343174503552373476492f77417266537277796e78544a70336670643867316354486838666c4f69597067626e437537344a597649762b76503269556444764f7148714264777664503855316e66496a5474495a657547314c356c347a7477356966745a47686837476e4746575356694a463632615331563554736d5074476b534174393675544d48334954787a6d4736756c376f7077744f654138676e3562396e77664d504b5041307a54357270504a6f746338745a39357a4d72484f3170622b2f45694e43552f4c3979507269544f7637464145342f5a332f544e36564d54577368482b33563548726541666d6a36412b645a584a7245342f6d32657a526b4f6c452f4759756a4f6e4a30702f6653787638665955756b74534841733741663748512f4b37344645316f6d644f3952367850792b77386e7833317a394a352f4761594856573469745853566c585251484d596c6d3645386366746c344f536838624d38516d58486f31382f55306e3735392b506a7548546d5a72624d2b7541334739502f41437277377a4238374b2f4750483738764f4b747750756b587a526a61632b6745446331317a67376a7070795247562f484a4155746a53375361684b5a4770786d4a6a7241426276686e6732373562316a2f49496654334e773070356b594c666138664a7175664470782b4e356a512b564f66445175695663362b3965336a4e61646f5070573050727a467252474f304e3166572f77414b6e3951765172787277445574792f46394b756347522f796f4b38683077745137502f685a72576a565079636570537031624a2f68397a3570373536336762542f414b783035786649315a38583850384152312b4453486b7549742b6c6751582b4d79316472567079627475426e356432787279354446396e6c68306442646e616e2b794f4236573171736d7036616667316d307a4f633852724c2b572f6b6e69356550753849783848447a4f5a336a4d6d6651586a72494855345a364f707a4d6c55714e36665a446f486c78794c367674772f45756e763734366156364b4c3663546d5a464e65696d5234623662666a50357436342b726e6c7163724f394c36364e6d6a796e32554654436e4f765335623673704d2f79363147697761467748772f32376c696b38723638506346373576654b316e7444796c656f763542657458665066574a6e72587365552b50362f717469532b522b43626e6b486a453462725a573763757436615742724d51696e782f786e2b46732b61616a4f4a514f37542b766d6f6e41304d3736307069757a346656675362345a355436586144667856563539345274542b73384869666e6671563678344e496566654a2b4f3576566a3550463544346e35446d564451576c6e354a464c71783935372b4831302f7343677746624d576a336d3368547058736746703476696c506c57763658656d586e666e50725836334b396173544f384638307a5734336a4870543676656e57546b30356a664a64485a327452316d62386a736c58577372634f62484848505439744a6833695a784d527574586258482f414856467265472b66656e58596657552f5266307438393850386439542f4a66442f532f79714b69706e6e656236592b446176563938776f386531737163375964436a7a4358354a774d61523743663076754e5a39676e5574466f32377262747648384f34515831373855797a673877385538637a6361624839496d34486866664b73615132595871463565784e5144356c6d795673432b72795461634f657974625673475038416b6c4964534462412b7a616b7a786d5a3751304b356c33357a5255305a7a304654716f306978374c5775374a31776e32306e5a7066494b6575544e77796e5378494c4f636b6e2b774c683762743344474d6872796566712b3535434b322f463274624b4463767675534c6e524f63356c4b6c2b3163346c785a69397a7541422f354f36447067666e2b33324831386a6f4b77546172396a31595a552f5a366d416f43632b57726a59614f437339416662384c56454c4453446a2f7a2f414d5443636b333662594370784d4a2f666a567976506f3552797053474173336144666d6c6378487966744b307358553571505a2f7161615672494361482b54336e6b4543364c557234665774524b457955303936327030624d3267516c5832566b2f7334736b547767775144326d6362422b4d65634c6b2b67655a4d326e744579614b6332546f716c6e6e2f774165637169346c4c4a536f59644b3141546d4c2b6f306d456f694136657436706165476e2b7337525776646d51563734357068797453547a474763314341475851565a4c61786e78737059364f5a78645a5162705538497574416a4d317a476c786e37446a4e504366583144766138636851766c6a3937354f715769577535716e6a4f70504f43494d594e376d645752554a3075456b31653843306b705a4f416350343162573452417562385a2f566d6a386376584c77487a7647314b766e7964724b2f38414b6259307669724878375a347544584751495863617964554c61433977755a37436373312f443853666d7071563935533053503641506f31366d512b51654e77364e4b3757354f35674a38676c737645583569705934382f794165547835325453432f63356c5357445968515370324143533131504f7a326552614d5467527a3169732f4672795332622f357a2f4e73762b597942756f6f4f43614e666b5674704e736c526f3566497246425a64664a6c73616e3745394e446d70615a447879676d6f6d752b4f7949703477373855664457485a357435566e624e465755444d797a79476a517272682b784b79754b7970712f612f6d745067326144774a6a7557484e6c4e2b567a516745696d59314a6a674e3250472f4f2f536e79764f62702b4265534a386e784d6d6e434638654c617a5430457350376c747561304d33623464315530736469662f556639494f70746f5773526d7046326378614f764b4b2b3962764c6a6e384d3871525a6f596735366531646250416d63444964664575593459576979675a394231563254424f2b56487364525a38332b333568375661497a4d52346a7a62626e35522b70582f414e64415070373437356e6a776541654554654f7962466e6c654253752f38416b724d6b5862444a48737a512f77445351686f3147714b356d6b484f4a645937745a4879302b794e4f76753930313570485a543068394c7654547a7278362f54384354673559366b593932714e66362b4238757468737a2b37532b7951664f7a51772b352f77427a765a45307336704e6e5539765577766d527a5774614a3469343876306b39455a57792b4c37506b33707131306e4a73334e6964366c35317a4d2f584b62613930506a394766705231446f4e305a645353426f364b5847757934616c746546414f727674343446322b4c2b6d50705a66446a4e6832764662755731384b674d2f5979473061556a496930734b6249646c4f2b33482b793869595857636135424c6d2b3442306d43706c31744f4d7a4975767837306a697830684a6c655261656c6e496c756c7347693549654f3763306c363030785575576e52734c50707a3455705573754b36766c384a4762666a4e72717a61496e45774a6f614d644339425765764b6e466c2f473659513035394f364f6d36356145725a437663547966594b66534a30535a56554d6f74536976373039426746466841664b62764749364e432b7a79442b626a326531637137494f66726c67647963677251626d323179394a3268326a4a712b76373642424c34336a3036796e436b4b313363647767456e6d50707a346a2f4a2b534b395259387652316c356b59305561693658323458794471352b53346f584131633751376e73423830795364504257435459646f652b5a695a6e62747a362f6d504a782f386f67382b394c665566796a386464444a38705a712b7065566a2b57655061795a72506d793962787537535a31586b5a71464c65522f3841644a5a77705a56536677476f336354387247562b683748467178715a37493833795a6865716d3334714e424a383732766f5a6f6d33336a436d694f63474e5738695479563358384e4943427150676534512f78507134396e7a413753664a6e57366357563272575431443153392b6f365a4562696c6870616b352b56456f685374466e525566576e306f7739376638414a6e79587247633274784856442b31483669782b4e2b74657036623732676e4d6a39512f4736624d39504f646a6a72386f385a755276654e357258426c3066524b72517546674c2b4271672b4546762f414e58614530632f7445627135694f465236344d6e78544f70384458736b4f3152704b7a382b7a736642666a59326471714b69742f64536969484e37396f7469353158376679373576616b4f55766158765a35325a7a747a777a6761366e3669656d4f39357658364e3732627462766d6c6d5056707a51354764646c77364d51734846626d4a5872304258396958396f576d536d762f723830766d4366367a316679563857694e306469425a486a2f7065506a75714638506f4c366d45796a442b35506f6556516a69346e686d447162754c6d306245506b4e624358736168616b2b6b59674b36412b56315365795470616339635a7a48617249794431717a4765704a2b42374869486d57526f3557544f747139684e664f6e553564434a70623348377545734c7859536c4c3051545a5a6664514a45414a4148752b58506636344339664c69386268386638646f6768677a35655a7061464367564e664c576152716a565737537331684f72375256444b3044714e4a7a61582b6a5639315358486e455461664f52347176376d6e6e58692f71562b59337142765a516d37477a46356e69793679304b782b6a58424a386a34356e3853496e596e552b5156396478514878504b61484b6162666a3950517a5853694d3952722f7743696e7276367465672f6c4f6266344e355472544b5759435742747863386a385265747a54413236474e637634717141316f2f487963676c4d4548524a503547736e3443623270573965616567376f2b6c6e3932616a7a5348784f5064687866512f314c7162646c39313274624a36586d6449786f5671643975625a574b55564764494b34352f73413536567a55476c4536656133732b4f6e4e582f634f6f336975462b61576a7465432b563433686670457678782b756d692f7a6a777a79577663394f2f4b504874493876794f76534443793245586d6c464b53487157436e2f632f4e545946664b47794c2f72444f6c45576a6462634e734e54466d327335796b466e79782b5065515a2b72714c62423357696b71304e4a61616d542f414d6e6f4947724a356d705375645a4b6e7076576b65476b3436704f4a77444a324a6f4d7a38657968506b6b64554f6175664e3868546371394a30365331365a593363726b7953697a542b52494169766b646b306d436b6e44384e4c6d304247322b50656f6d465a7030727a6373594662756238452b78487a463764384a5a72653561703033554d7a64415a662b71532b676d51335a58623239396a677372764e713236786761362b613548696a6458467866496654547a50416d35526f5439386c384c647331346a2b6f706e767a43745a306d526169304578504870646c6f2f7743366c6166682f5932564870457a6a68504878464d3265576148707a572f516675352f6b6d6244424e6575447a47594d4c79474a36336a53734e54416c7a34542b4f5451586e766e39737368574736653468715339536c57787537396f733076554c79587a35325a5036653636384c4b64484a6f446f655365585665544962426e655570446d564f686d744c393434355931716e55384b6c665a2f66596a5755796245316e4878446d742f644c33664866462f52544e784d6e7a3342312f4b74756e4979764a485969382b6249614e584e376b7273324850544d786679787975506b443072345532332f414e663530416f4f3736475a747532386f316c2f442f3039394b6657503842724d337a626b395774344836394434703434724a4754746d70354836676c486f4c75764750694b566c4e687873354f614b795478394d5879743666494a61644e53625631754878562f385237622f542f304f384a3150524c783777444f3867312f546c3262344c6c2b475a326c34706f5262486b4d4d474c674a783875767537744d597056714d6c5534774f2f5438367675386f4a6839695451486c32764f364c6471426f50356e2f41473266484765702b46366c2b50656f5072336c2b592b4d5a6d6a343872567a5055427035586b6a38767174712b7a79715453386549714b4966355364596f4248416e53344f526b4470316344623330376475324a726279485533386350536e79526d64334f3877634733737179686c687064504657304a6375695a36664a4a366c2f5934695474325a342f5355376864796930484f6b4e6a4756677a6e76614a34514b4b3961764550564c4f324a38487844597178783274445a39336b6f7930336d457331376a72766d5a556c32597a79524c4b73644957383645623651306f576c79516673747657617a7a5430476c48704636542f334976486c614c665650315a38643964454d31346b5a6d4158696555476c4a34707a724b367532334d487262746948506c79567062545038414e52384c5441484132675131746252365672732f6b4b2b396476786c306c2b6c763550654b37336a506648636a3145394e504c2f4143397174484e70726a507a5878474d55626570416c37622f77434c71584c6c2b4c72473172792b6d63313549564955383835715835744f5936316e2b773842746162636655635878506e664e645772733950775530517a77314b39717449726e4c366e575852525954506b456763344139793069483644326533587a675350786d5a65706e6c6e67356b4d38747362454e5168722b5252564e6d2b53757634724638736a476e356c644e524379772f6278667537316774724f5974457a4752306f394f345a7457623036563546473752794c583576644f484f7277593650496157544a6d30455876684a705a6f6a5174613471564e41594b416258484f626241553743666a78354430752f2f4d64364b2b6b667076676558656d7670483452344836683663755a6e36666c614d526541327a46445058355464466e59566b347936454136547374306a727670544e646d78693264664a786a2f72693332766246726271696f76487470482f414a4b33426f75356e352f387a753237382f4e545975474e61493178685a4969564d34797070754c50563145503859357274747135786a636c484c4a477866716a342f4c363266695a36382b6a6c312b766f70305053337952713274757634436458786b476a6c35373030614475726c6b304d2b4d66716e78546a4b393377304a49594866316e5764757057336e362f7150417a564f47625557586f79766d3038366e516b5a31696f77504f4c4b2b57536c4648615038416833784f6e6f442f414743513861664643304155514e396a472f6a30774552475a796d4c706f36703756554d5950567335467a7265702b476c73787a723738334857467a6e6542774f6530794e697a45682f71335035666345747074466c6e5472487271712f683531514548497036444f794d6a4f666a4f685178612f706939523962774866496676594c50397464507646712f6a2f365a6148724435786c6544534b64647a586252535048614c702f6c6e685358754677386f575353644b52646d5071544e74516334502b31545336314c625969596e31774874742f44373842505437307a546c5531462f4f36506a6552794f684f4e342f586e4f583261637337535a514352585749725a3433347378546b732b515341302b32626c453946486b333172584861583075375234367557504c516a6f4e314a2b637a585a30744b572f417158685335326969346b73596e532b59705465684c544b4f7068704b7a2f452b6538524d635a786757353548466b4f79546b34574572543752373965582b576b7a4b43376f357a4435737833332b3569316e37685a33344254564f332f4a706f614c2b466e586478326a674e2f63592f742f656e767139344a71614869574a6a79617543506b585a4e33506a674b587270314c312f7743506e4e5263745a51663273675667786f2f523462337139706b4b57396d6c725772504e336a78472b716670333548364e2b70336b5868486c306a63696e4c362f4e6f4e452b65457277486c45536265753979564f67367864444664534c6b6d61754341723937462f313656625674584d64524750542f7741356f3844386752766f546e556e316455704b324d3061344e4a56734c4a306662356f4d4c6e7542544a33485174697145746d63594574786a522f576c715a72465934344875532f474c3851632f31352f74415565676556354439432f79742b78353134587279765a35426a356e6d6558714d736e4e4e47616e346f396252616d656861596d75464f636b426f53384b5039336b333159723752762f41504d4a343766354c34583574742b4862456c386e6e57462f50596e6c3244766a4d7273323542584c6d446d58654f667a5968445039687a67522b6d79416631696e53326f7a4d5439436354475a6e6c485462305538397a614e54343635694265626b6c6b3439626271646a667834636e5232744c56706a6a79766477624159706d58416e732f77436a624d326d6f414f6c7156633134345250674f30586f3136793864566a654f2b51794a714f3130543744717a633038544a69576d69454b64663461422f694e7969456f792f5a50556b4a72462f705077704d31633136393866555148386966514e506e76696574346670346b336d336772783456574a71454937506976536b54744466384163735a3130396c706148754b554c654956325a564334367763623354532b4a7a504c59655a542b344234463656666a563470583458344667304a663550354c664e46446f485963576145306d486f513765627965685574532b4b6a576866423430763841766e326833746c4c3766646f7a62556d5a6b632f6652543172386f394f74686734586e57763456727931566c4635564e7237697163397a47554d317753724d5852774b6e4639785943616a2b554b662b454362576d6531395050577538644773662b3752355a4470596666574430743945667954666c50795067386e3838384f79372f4d7549793358634c4b78504c4d5355674576713344787657664a3263715576414b6c4e63756a482f44394e747030787a712f4b6e7a6a304639515055782f6c3334362b6e5476537a786a634c6c567667594a37524a342f61744b7a724354544c53364473656c69484d397637692b6b4577677164614f6c7a2b74394b7439754c3233514e632b5430447767636d4e346970524a58565238372b6e4372354755664556484f386c363561552f733164613153534141352b33462f57772b5779646c345645536e4a347a6e5072766e373351662f717059746a706845766374772f414b69456d442b694d6e63377a706b4b512b49705477524b6479796232514c70546578624b47555448556a39473671552f61775a5673574a4838502f734476373649666f6137612b4163596e596b6b3559385238625a456979717268734955687849483155794234466a466a3166506353772b5650545950796638462f566454754777332f6c5a5a65516d4473374a4c4a77524b4161544e5454454b6e473759734f655367583875597a48305a3558677567772b542f414c4243763470442f725045347a3344626a385776544479373867504e3866487a32355664484b665a56652b4d73495564716453527732316369636d7867564d465878576f483966786967373964686e542f576572614b317a50655055702b4c6e397444774c796a6a397565656e4277636168464c64474d59617150492f49733455755957625a71764b374e38627974446274424a6f396b6c504e4a6a41654d78547830384f70727a4135636633437655723032394866584c7a58307539504e6e4b4f6678544c683865306d654d354663383647374e6b66325a614b754478476b49594b38384d2f6e79557563564c585464626e7a716b2f72665272613961326e674e6d50784e2f7469572f6c522b4f466671683675655a6171645a307973374e73385130384e486b506a7a7778386168635836304a5661566d6b6e4e684654467455626a4b73754f3759445161326d72722b377645567231484d373136394350577a38546362796a4270572f62394b4c724537303176534851532b5754755772503164564d6b6f7a39735143635035574d75452b756d725375512f6d6d4247394c30314a725078446a62356b6d4e57784479456b4f2b3152305a754c684b486a484f5a552f726c364c4d6d5a5973577872353565634e6f394a3366634d6e6636334654766169647136466d6d794c356e2b7853785662796d456447656c5448385a4f665357754e49385a7a3950494450696e65783344486e514553714a76306d7158336c43365a6d4b34766d6a505837796a6e5737692f30587a6649544931395377663137694e7956425230424541562b326d5a6c4e696e5638304237326b424a6b4f6b664a716b664b4e423142372b31457636394145726e44506a53467a573836723366316e322f4c41744f587a5239506a34794f557552425647434e43564249306a6d4a5a4e39746a754533376b716f5937505a374a702f387250734a2f7744746675706963343778627634706163476a2b575034764839565843372b523370546f5673304e646d622f4b796339522f483339357936654e51353775564f486e66676166616d2b77307136746f696d4e546c3072352f446237314839613073702f644a644e4757784d493363716f36484f6e6a6c636c53306f63764f6c6f4550634d61334e4b635a77624832716a704e647a332f4e382b4f4b6e397837384b664c767a472f4b72304b3851384c38743076542f30343859394e2f4a39583144386d6d796a657a736e5049734e4b4d2f4132456554444e52733268516e715a75787570567a454b6d6a69376d534e50703064574e5054744d383172534f653335686569336f742b44487156345a3456364b2b70767152356a354a3556477661386e39502f4c654b5a546a7971734a4f6454527546484d646d5851686336566f5a333471477064555a754e527350585476625572616256725773436432666d4a6e353363764278646d726b47544e34377a6264707a532f4252354245655470544533596251564e326777666232697a6e65754b663455396b6942533349723771635a794a3534462b552b6854564c6d5a30663163336b4766506a31636d6b476e76644b6e377973367a506f78544c4c5154726937485361442b61794e4a2f747870346c796450776b54786e6d76696c6542525a3548762b4468583431476c4d324c6f55734c5332365732756b304751434a5a307855757a325271636e356541663850526e574e446b33557a78746d4a346477716e2f357a63594e2f4d74546b5a554d3748585a637375744b6c44733350676e6539556e65586a786d6c5a53757766624f6264494142316870434e4c663974747337635a456a31665669727958507a736678395042766f6a30312b34676d376c6879615457596d6456456b63746a4e7971556e4c7146786a4f31566c4c6c704d4f4b436149724563625477676134657076715a424a3544396279737664544d504647454f6a5462546f5479752b766e384e4e546e38736f706f75736e64374f552b38334853626a66775a2b58725845596a69426d6836732b4d37713434537a6b52344d794b76343351737a2b49646e6f73646f5771363831783942726a736e476a7168353872542f367a476d6a76786861596d4f7343703944314866514a792f796b333251645458526d35507a527054507a4c5a797865626e364467344e7a4a584c54386774537745476144424b4a706c636e5a6277454f3735722f716d506356425a4a774171666f7a4c346955346c4b6d74717a6b74577353503841616256684f663642337a4f654c5568522f6b4e635450534d686a70376d6c7258304a4a644d655479617775722b414c716a7273324230716165736f57396d66634c4a3264467a476b365a5946316e2f78536b4738567a457a33397779316d4a587844673359346337704c55784c4c4f633546576d71716f4b725a6a492f77444c357472394e5878662b414a346c686e384a462f5641596f305965677165717a6a715a6f4e4d32496c714f356958395a4f366d6a6a7a6362575a374b7141374f66792f4a2f302b6730694253364a775971324b7864486c63377958334a6f72705966574b6139567a6d2f70446175554878692f6a6e6e5430464c6b53667a4f55662b3451466b375a7875376735596d41387562533449706a693259513470647356484b4c706553746a4c5742695570496a57354c6948354841736e463972706d6e347551492f7743524847336c3379487a4e715377777a637854422b6d39504275534d314b38344763754a2b684849426e2b6b435a674a2f455376306b375537554275684a705a4a54373436502b31384e5363324672416a6c736731416c70304d6472703255584a49644a5a546a304f494678704d4b546330503632446434396c457a516f4b6c41465348647a427069696c3647644c736e37796459336a6f655470396e46304a442f414c636252537052683153515175555874653938705779324f6b6954334f6e72537a516b456b393547627157664855745970642f7234314c766d502f414a6150655573415075686f784b686d73664374656a55526a6f797661366e73716e4f665368566941556f5261646b616542315342704c34544150393352482b732f326e724147676c6a584851714b53655556503479504a704d73745858732b3044513752476677725a4b4b5564344b6b2f35706145356d5a304c4c514d2f6d6a4a3332532b47706f7363687076736f634e64725773596d6c72474f6e464a5653353745725945357343733665462f32516237416677533746307374394b362f66505a5567514565644e354d6d476e6d6232356e77485a5551314c555036575874556647463176524a3535387677397231346a34335962313031314d6c3143687a6a6270675054344d4346385a72524e2b4a5761516c3831424c6652776d396f5068302b344f784a397658752f4d42745052342b31533155474b484a354d544a3471466f464d5462587a68797944504c6b2b656a706b72684934416d49485a544f6f2b6f582f5767586d3145726a376a446c7a362f774236474e794c7136455571794345476457654e4c4b74556c777556397066434b676d4b503841785076412b61674d3976785a387846704e486e533976475472557055765a51426f7473644a784c6d4a615477596468624353686f4c2f6c36314148734d776e7261734430447163614b2f6a5168634c306367474237364567372f47564f6770453471314e446e47567a3574776a38704c6e59616a416e5270515469494a446967766c38302f6b64354179654d6871497070363256486f6d37736f4841314e4944557657644c4878485763583869516166505a336a5a61327a6a6c366733396d42623243727558717135394d614f364d6b7a63526852495a58504a7053354b2b69582f786e642b636e792b32677a2f53534d2b714777612b51313439596a6c344f5a33504f4c7570786c637445374e43356335755850486f6645505074664a394f3735774242664b64497a2b775334373235317a78745067414b453648433079666354356d4d525457394f4d4c4164485566324b76343566666c47455a724a30702b4832484e5137362f5847597550325776325a4466794772513642356d6f6b586a56617855372b456b54546f794c32706c646f58622b6a6f5a5152554a51502b727657433569766f754158477274343752586c3953542f6d4631726f71534e6e565575525732656d344a784b7056484b63396e5a366e4c73586f454144496d766a586673694437446a5a5952646e6a3151326f4656385a4f716e7172344e476d366e35656164792b757258466b4376375445753061654d357a7178397675424a2b3549476f4c7139504930756859506b79784f55664b3858543769494a6645316132565a343074656231614243545373484257514170786e5551476d6e6e316b39427830766e4841657a2f3064516466692f6a7163714b6457422f34336e6a3953504b6662424459334f6c625565666f727a3072777845545a543370386d434e314a74544766745035664d766e644f52735a6e56435379665258564c70584e4252524e5963514b66304539736d36516b6c59724e504667747165712b5676764147714977562f565243396e7a3566673074644f3679396c354e5564506a2b616c6c2b38383464544c34696c6a6379556a6a6f47577a6e57644e7875436c4845706f447673414a694a6e6f496233797a315333726459732f786b504873644e2f477a366e6d4b6e36753573472b6a7330614a3847415144357055783366436d5a375a72744c32544b4c346668722f7163562f4639684d636e626d6e4c6c68375a2f5968736e6b55513556724c735372546834464573797031385754503071682f4234445162335372364a704667663145785066474944642b334456596f614a5a644453463459546830476c516d6b546f4b4b726e30702f64386c694e4444636b78513163394e4a7564487a337a635073416646666f7a6946586a756e426d4d306a2b446a72354d56765655316f6359316143414975584c2b5a6133704d7143554a6242556e4f4d68644b63475a34367232576a717530746a734e50445449766f6b435735302f4d2f546a435a444f2f79564977354c4541326d717336487544732f5152783067674a2f38536c6e4c734a705332574755732f556a2b322b5370335737455a67455a6348685551706c2f6b4f7257345a774177702b4d70347a656d594347566d317a51523855347444526d6e746e4e316b365a5458534f4e564478724b574f47703850614e536a764b6d7353756c55784e41564d34446e546272507a457879733872426d566d52756754723072735538644638693539733035656c4f6258346f2b78682f3556634e4b314f4a776d49306648304a774341522b506b6d4966564f54625374737a47617a307a736b6561757a796d6f66394a667a466a4a38324d474d63776b6d53666d467a442b49534276626e5330574d73705a6e514e5a6936627572675658447150524f4b58486e624b7949364c6d64713970732f58544f6c5357716343752f44385166534f374c58324e6c4f66557a5662564b7175725035727059782f4d732b364b34315a374f736e46452b733846702f30752b793177383641477841524b724c3171364c6d4931616e7a554b64336e6a684c72613545327672696c44723665334458396f6c2b3045726b4c76325a302f717759324d3578594659502f4143646e373637566f4e747a4d6633644471666c7932546e705461743039366739376d4d316848762b5a7a30483744436635706d4877416b48304e79506c515637506b4361456142386c4e4c3672666b344c6c307a715177306f47655159584f6c466e2b66794b6d393445412f4e3777506147634e6b61686678445a6f2f63504e53772b6743485432797159394d6861534239786147534e59693369465647376a5145796e4e545145363272695a463356304d585657755750764856546c71786d6a545633536331632b6368592f5a50524f33334f5a316839366b78412f62306c7243453054436732453275586f694d38646e4b46742f324e747236436d6d52416f633245367639504f54705a32633446396278337a5579704164566970436f315439634f73336d32707158673755416c4e51756557577865653733616c485a3358456f444b7671324c4568373859646f644f5a786a75424938567a45646b454b55555a38696b7135477651707074685936574574466b303472542f414d56542f427a73686d5361506c703650314f457430424c373234306e794971476c6b75624e70456d48586f6e624d747948764d514237435a6c75366a37414934542b6e30356b42515a70393761514f7652566c676b374c5a312f4e537a3471375578584b553558783054676d634346695256705130447862533967476b7954536f54466b6742355a305673746b312b7a6e79447367577a73582b366161324e4b465366745a37752f7741346e6a6e49364d79506c44724e4d6937384354424a673761464e396466307a6a354a6d786c5239367175737a6e3770642f324e466f6166475a646a556a596b7155763445717a62333548553975366b4954626f6e4a635356545846376130716d437062565135374e4f616f49716e7a4e5a38784d534c4b6863624b5072686e424d4a31484b34516a41553157336939385a7371753044364c71456f5245636a4646557a5a474b4b7766356e564f644d3772434b68722b4230326e65587662316131702f7138596e6649474438556e59556f344f6d534b4b4f567156326c476471544e31317975616c59314d6f6a476866386b664f6446306176702f34492b576754436765567168446c75673672755544457949682b66432b32453179464c4b75314d744a6448356c724b723347794f63544d7a5633725730717041476248354d69632b56626c4a697a6231557a544674472b35636a7170346a704b306e447764436a61633569626d4f42637162502b71747157483762632f6e397752436537622f414a4f7473556247786361364356663258303574762f7764324f64306e49536a48743257687176596b5031577337414c393969494934316e7a446a4e64465256674830576f347546547951315757427a776c5a6242576649707a6e344e527531467a49465a676b7067647a6f554d612b51494256532b4f7a556759314f7a76695457794546794a566b5938792b68516949396370446c7137724651726950643742554247514f2b483969422b6942427a3079556a3833566762776e5769486b7931795a5976584e556a2f5778784d5a52582b32386343766c6a4a726632746865774e585055794b7875714f636e2f71736f5a31716f2b704b376179726b314433724e416a73487578444e4b7546786852593155335150724a71316e4f7057744f6b2f4d6341507a532b6e562b51336e3376696f433765794d4738744f477548737661613470543758736355526a5038417479624a4f766e612b58355141476b6a3275705071307578702f502b77303577346b543830382f4c3054437a4c6f5075706e4239544d64464a38346c786e77446d7353532f6c5a5945785431473446334d6373416e6342546232786a6d3643773876776e79445957644632456d6d6e54653271514d6e54725757756567545556684466776c68562b33465a3075705730304a427275746e3935736f7046713136526b582f414f486550654c6544545178523564316c6461724f624f3974384b59354a473032494e4c56527a2f41466148493971516a4a54444d4b615a6d6646305a76612b737a4d385a456d38727a5677626d4c69354d6c64544636477937556f314e434357642f4f70736d6a306e354e4c6c4173524a3061414f6d586f392b34464a3135716665734b784f597a3467624e3468426c58304372797255306355462f477a54375570644862663576507a47783552495a31533750635174487648754361796d6673774b615038416c494c68354a705a514133756a537a5048586a2b394c503541636b565163724931445232526e5a615a57564a63537a6e345a7a665446592f4b7777366b4c5a38625574464d576e704778647778643045446756364955584f2b3347774e7054713657426e2b3561523472764a307a653753483274536c524f545733486c3735444b583148767a644e53306a61365a54753061532b48504d7a5274544c3846584d65714b35423363543966356d49715361573954396e356f367a634449325234794c617839752f59386e79764b74444f77473865555878684c6c35613654795561466866536d4248754f66597030435961657165627a374d4b324a6b63616b6a57334c455647323966716e3474755959773472443048596c66386169326d6d694364566446316d576154796339664f4d4a61377331595036715363696437366539736b41517a69496a70417166794c3147546f7479383375493061376f4644653137394b57357846656d706c3874732b454a72306a324a597a7330666c6577315163446a7237587a744f525857397134396379395057546450506c723157396a376e35796e7858556750624e4648783550454d712b784c2f74522b2b456c756b6645676c6f552b7965627369674c3958723630727a4a31774441773436302f4a724d6135583869343748584d624b4447533830427a79434d506661304c475034666574577a2b746131322f4f5151312f4d4f5973745759696c742f7766782b67397961705a66623848536f6d734a436245396c592f326b74767562376b2f4d726f505734726b464552466f695a6a4d79496e4c6f3167425175316c53364849713236694a4c6b46647164576375574e6a2b6f4a764d3339556b6a393934305343544b42335161744c2f41475841584144754e6e4438787a68504b536d35635155426f794b31394a5335684775655166384172697a3579565942657742733154556b657553496d4548337435774c31367a46493661653073707159784b4e50513433515a6d32736632584a476c306a424b737734505575556f4f2f706e466e42375172754879754c4f334b5a552b39756e42455a765a55575a33542b53637a585631434a2f756b357a4e4435706b38557a33385637414c33704c687443476551376455657a524f76536b635331777a31533068714948586d2b503459353347373366346b6b6f782f7a3537444c536e414f67452f786a654b35695a372b344d70664b30795a69414b6d4e4c3747383148644b6f6853695869457853777872544766536a4c537a78452b6d76354262476f456f3979534a4d624c654148772b55366761614d536539577078625571356c4e705369626d66467056564e7058717436484631645735644447396e6366796658397a696f39356c4f336c7a33695836586d4f6c6546515a6c4f68624e573657585371517271486f593351306c387a394662367661386d797a304d35336e5161663135772b416e496e4e31424771737275314f3575646f4748475a5443584b4465456f4a544171334f477559756d6d69682b3077312f594c6e772f5758377a367a2f4e326b5836376f487a4d7a6a6e63495661324e526b6e71694a715143717576763070313539446157486f42334e5439584e2b5069784c706943565045334b2b59697a44366663784d734b335173305442796c555046464e50612b68664d4f6154733545454a2f416673586c6c542f6b77564c53662b54513937653232573842454b4e57586e4d797a377a654c6d586270314d753231716737427a506834364141483748752b66335374366f574542396d5359396b426c4a727437767a455130764a7236592b71613775726c36566278506c42544b597a6b4e61344f74366d567a4f5136696c6b7866325161717a684d4e69314d642f326a74737234437339696d5656665556362f65353847625a304e416b42584a5363366c744e546f4f6a79696c6e557554516a34466f4764696a564d6675555272743868422b6b474c6e5430555272634949426c526842494573787941576c7335395a6851356d6534553266474844396a6770533441536b7a46536767646d677532534b444679646c57636965687356345378495a665251475232784f744b744c56726b616d786a4461504b65676d74617763494736666b2f467a665566437230715a724a2b5458366c54616f71453645744245343155506c6e7379545a514c364977654e6b66756a4566686f474d4a70577565662b3241756d664c712b4d727530424651352b614956783367304c5a496146726d6b4b5a5a4b2f6b4b4e41566a7845797a42523834684b755755384e6f434d786d436d50537055476248544f363569614371586d41776b616c3378337954552b34342b76795247566f7a6a78715a2b386d3443534839663042532f51647366794d30356644796e506c6963674b4754354d334e36686148753645497353745a546a6e2f746842524d7032623335374f663771584f6e6b486c2b6e496a7444564b696c354632644f6f435a716735714e737668364d7a622f49306d7a503142484e64396b4f4a2b314f646e316e6e516a2f67676b736964414a72355638726c6e485371526f6b6d6e4e306f4459324e4d303963556e55776f2b4d624b6b7954392b466d65536e31705956774e544d414a504f71684e6d66506a7443566f51364f67755364456b61536b313636454d37624b545a49396a76324638595356386f4e73632f61477668723931676335507a45386c324633654e2b4c362b3970756b7a62396e514f576c7632387a62312b44774438707a3838786e536f6e4d79316445756b325951704e4d644e446c4f367666526a6a6b642b762f6b3266347538666f2b7176356f2b545a6e54766a3666706c36523665697a6b56466c447049652b513632426d5444374e6179624c5734326d776e714b656e395543597a6d61755032362f5a30762b3677707a2f77435558326a4236702f6a766e4e63486453657a7a4434316e4a796869354d32706545657031334755413675786b507946504f4855782f4e4e44444d4451595258396a374f72394235344b75732f384f3861304a7856776d61466152532b5a7a632f37626443362b654370326b304f664d636446527446624449676a615a664a38314839646475732f4d564e4d355a37544a3942535549656a6b63767a616f6a4a414b577a79726e373169795a544f54457036396768337065776c394666454e2b4f38313565586a6b4d6c6e5a427067346a4e446f4b4a324d2f6a31673959664e5037657034673532385958666b71366f4f4c39696b755a7776385439707a79327234592b77656130615656467163642f6a594e3155505a4b7532653630756b3148734d4341566b714c6f7558376c7a72396f45665030446b38474b7a3172506345376b7646584848504d2b6555595253687271562f59617752716e373259474d4b35334b47665758514c6666774f68796c41546b485130475462427347704b422b4e4e4b622b4b6e3435716e677272316d4d694b43732b4f58504d654d365051365534657a7132416666627865653334732b5979466c4475642b56625a4548516f66713356723635744a64585a50415a755566446f2b77794e7846774f2b784943427a6354336f66316f4c4b776335355a71455352564f37564c7430483143706a4a3261332b5172364d645a78754e4932546b3651477a6b6f552f7744426649353365632f72444d357a33677374614563486f3657675532733479534e5042574e36556c7347525038416a2b5468463049624f75466a6a2b596e6b5a6a396c4b6d6367544c6338576e624a6b55716132657561763841544f3578752b66454c3430334e79345751533835597331697a396d6271564c707a5a5072734e35746a534139414c6e756e764639576b55694636694d794c323575756452784f61786630557a2f4c485135305a723979464f534a2b7a704144464b2f6f4e736678462f4266386e767a2f41504f4d3330323941764332373875535337664c665633663039724639503841777155535865326a6233536f39384e48457063664f6744327564386f2b787a324f47625055316450526962616c75483465386534662b32742f59312f4848384148776571506d357139657658753661656b2f4b76494d444f76385638422f6b76342b75505338487939464b2b34756b6941716b5063544f4e2b49464f4a596746484438765739717672563278793148596659386c54466b58574d45556975687763306443477568744c716561424e59795a75676d6d756831566a567a6a3371546d726341547559667966766e784f6364346f37795831517771644f662b4630764637626132306f59786957376e6467786f495a2f6d53576f30782b6469356179454a6b7a4b53412f4e614c58536356614b57372b41315a503141766d307a6f7750483937636f6e466f4b3868323661546e356c4c73593658623755475334524b69687935423745546e437662497566454846542f414e62596965735a47726e71526b2b4d656f3276653331683961384361444f6f38734478764e3848435059664e44454d497a78353974455975504c64485a697964694266736554715443696b67447137566d61396d42586d4c34462f622f384154584d583478354e357259534e4357614f6d2b7a5678583347445637564f6d376e6833426337507335354670635967677a366133566e4a483032634b6d6b706d646533474b68452f55542b336c3451392f693233366e344d5761682f564235484a66684c6f436e45306e364b6178343567754b6a334f636c366e4739564e6c3542413771752f783452743170784d56484266384175732f6d7434562f3438654a2b4b2f6d3565552b43592b6e6b2b4673387a31367335314b626d6f386b3039504d386178615a456e714d6a7a56344b6576593035766e346270706a556c625a757a5130725a7a65764d504d387a53324c4470756274444f567436614b622b746f646354576659625864627962342b75725a557833486459424731356d487539704a3533304f54792b7763645a3169616556505563364159716476577364787a4f476c536a6378622b536d4b6957345a6d6d30673664587841646771397732444f58746251556656764643655271643162493755357955634b5a624f7976534a546b424c684c6e2b54756b4879396154442f77445a586b3876734a5236666265486c655659326a707973324d35624169767a79464766512b4b78584d317a4f617136424c5073366d79676b433047702b5a487638416a6f3659703753315a694f485342364f7637495068476572316d396266445049704c31643176477645504d3858736e59302f7a2f41496a6f66656e52394a4336474173557a366d4c585a385a4d39674a616b423455357173342f615a78534a67656b782f34305a395a544e6c38656f7961396d68762f6b2f4e5750683832435a324c533030715136506a3770306c517966374571774e6951342b6e356f62465542786237654959596670356d2b454c792f44734b624f6c317472646871686b6b6f303658534e7343484d5a756e6830334c2b355a4c2f45616a2f6a57377674755478494e70435a4c56566d5a6d63794e344e50774878396348693270486a5472697a4d376e3078324c655a74627038394b384666542b6c434b4d2b7473757039745a53724e314649634c6c4d6c6377482f564e317337636366734b3779732f786b3135755272797a446f654f474564564f74486e3974373733453337755733594a4161454b795a396879327546775567716a4e49754146476a615a6d4934526d524b64767a587858477a4b59714e4d687a786c756c386748617a7837336d6546513645395857356d6578454f686c2b52616a484231484454314e2f7a75633431664f465969303971654134666575336b4f6236352b556e437953654c7850782f7943422b6c7a617a3675594b61564669746e547664305a2b6e646e6f347958527237394d6673456c67476e674d35496656534e7365466878772f4f48794c31412f752f2f414a42654965696634572b6e714f2b697634745a6e6b2b424e366b62756c6f5a2b446f322b5637486938336d506b656c6f61354e4f66784f64666a65616e477935563056746e6a6f30307972433336306e547062665a713274713235745475465165582f414e6b7631673854384f4f366631523847387038736b304b5458695a4f56652f782f79427362626c4365523545465454642b6f6331686b54597030684d626d664b5a4a6349576a3275737a32647466582f6f6379664c50784c39666645664a4c2f45642f307638414c5232737557707a4f35656572577a337252526f66752b50557853706b3178376c7a736f4c3457475172535065394266432f7270393753597a46734458684b426a4f704e552f56456f445830474637477a764635453061423552772f667a3432634966614247482f414e34524c394471452f384141654677544364624f6b70625452504f553341722f627a4a50786b3370435877714433415074452b2f6f52482f4c2b67572b58346c7a2f70503178486e754d356e4631764754736f65527a6a534b2f685a7a71357a5958373650506542644a582f484f4136376531674a2b494134522f575833764f7564307566757268303244316e754a505359776944396348686830662f6f447778422f502b6c724636534c366e574d3650756d463052464d4b4f74554c584c59636932444f7a706c31586661637747736c4e5759447a6767712b7869496a732b4f466a5a4130484b6b5963464e58476255737948307454476633724f54364241414d397674353777357a2f414866476470694a374d356b4e715a62436b7253757a724b45436d525644696b517a375732566c4c68734a77745a4b587453735573486952495846776e546b35494862687639646658334470484b6a665132345a2f64457547736a587868577450377a6b4c416662372b2f594b6a355061516446776865487775486e79653674747677675366375858536d436a6a306c797849304238485a314f716c47546956624b78506a47644a6b35477758657a394a492b48375144356266782f54314179375477434556674256465a4c6d6b793750624569576c49564b625572764f44524b5255787a2f48337070596e763266325073352b773043764d346c7967514a71375538627530797669552f713355394c6b33486852514e466966722b343274464b66614475636550364c3274424363366d4b4a73306445644550576839496d6b50553947717164367762395071685341585748307937375236424161433537532f6f456759367842634a524d3732645358642f58597748337071544362786137354c45394b6562356d64636f692b73516639685050595766593838684c6932725237337166464e616a73714a6c4e583246716554304358754a4c6c6345696250316e7642516961347a4e6654632f6e7630424146412b576274424854786e324a32386e4c526679466c66574e7a4f6d705a69745a73545149462f6c54374363482f7741516d384151787a706b2f4d42554e544f6759363556705a53643742613953544676507278394a332b58786a3751456a2b47594450696c4a4d697a314f3466724b5a5a352f6775486a572f6263336a6a6937515a436c5075756e69344e426a4f44584d6c366665734434686637412f5267584356357337754f4138637a6e2f4c6175393448797a315245354a7956634d45754941365273344b3644644f6e70504c326439366668657a7063457535694e4955565a6f4a394d706d684e7048772b3971574a457a3343313852664b56444f6b7866754251704a4a6d48753968722f5162634b783542522f4a6177695564744c5147686678634872503038435952484d307143424531432f754d37306d6342594337674d455139376d57446a3667665038314a6e467a6c6966763831487557494e7359307962314b6e633751317249573839677336487339687439336538346e4f62394972414c5654706d37462b6e313964505656795835467a53396d5535626c6675674a3073354374326c5670642f5a644e33526d41484c41522b622b737848496a377a53696d6a4f5530716f5742647544397a586e77566d326574714348695a6e494d766d492b4238584a766c4676444c3938322b48364471622b476e6d66713736592b5365592b466545655665582b4935486c2f676f562b5349794b736a6f365758306454365862356d71347439415a4a3658562f73704f48384b314a5134577057376c31613174475a715059722f622b774c4e7a304f38583868383038675275377536642b5642777377344a56654763666f5470766e2f336b57773579563761337161693951714251476b682b6f492b6471343332694f7636697166577a2b305036622b622b714f4e35353645656165522b676d45586c722f41447a797646394f4876786d376d3958343976417a794361703631446d6971655661796a4b4a61582f436442336c485038717072723269735265753775346a7a792f336550774739502f77307a38445838653954664c2f4e642f31473876357158792b57544b62796655314553366c757672554535376333795a737445354d4c717a344c544d76385033375137665a74616453654e64735648444a6c312f5779715a53586672444e41715768694d714c356d5353386f702b786134426e4c6c67693776656a30782b45766d536e67633466547374344267777a453461654937667145614b2f77434e5a77614c656956646c66476c4c317a4f6b73556b524d49665933356a4f696e6a756b465064677a6a477061786f65722b4e544f782f4b444a743746753661424f7050667276577a32697671327434747744386951377a347a392f6636446f542f4147395079486d394b505646486a506b6b634f37343172554c6e7367304b35704a4542514c7372795a534364516f596e757950684e66564f476e2f51344f6737356d712f726d3171627135727748593353796678673831323165513776714835416a483856446631502f454f36756c4a6b33316c695a7554486e2b5034752f39702b6f536c797061587a4e354c4e4c6d6870474365334b68486c724770574d525868595350386f2f7a6139472f457654713330582f4742532f4a664f504963382f4765372b546c51575a7669734e56535232614656523166416d6875384f577962345a75724f6e324a6a3641586a2f5561656c6562623954736a526a3053394d34505462785a31506b4f667a613272325861666b2b726a32686f732f6c616f4d304258573835333838666c54565a4c53686e4763415a6e484e795a6c344f2b707461637a77485066387a2b36532f556a4a6731466d736f7648736267397a4b6256466d3131495738677941664a4b7065584e52386b5541382f774348417a2f365a703641504462537a6a686a4931457069456d6c6651376933647a7a722b4976595650464f6b467a5063544b506a6c6a4b7030354158515358656b667842387a4245744e337730674e705a3762306a4c796c744b4a592b7579306f596858776639794e74364641624f6e4f6c437964787971524950616b3345507458303175783535457a624a4b517430523552636b4a5870424e314b49785568556b3464347459694c79637077736d637563584c4f6c3036353648324d63773663657a3568475a4878427175744c535a457159564756694a464f78654c344b46716372516e59624b446450714c6351734e6e315038415a395532746e442b6f4866722b7a70344435485a3446366e2b62493276346e6333664a4d764677704c307472385a47434b32772f4c7931386b35315335354e64765139366f716c2b384156434d7874615047383374457845316a78486544306b2f4a4b50573871776653667a504f6a7a644f3935352b4c7153777170697a584f582f4b6f3464644757532f736537635463566a58694b714d5467695a756d42727553314f47364f67336f6a386f395050542f486f7673305741784c31636b6d783253394479486b33495a37506d4d76637644684a6e794b6f4e4a3953337379753966384143756472637742395376572f30763841542f7854766d4c2f414f4e68674754744d4349777a77304e447566616c32664638374a59784a6e7448506c37776e702b45644c3953674a4450792b596962546942786a332f572f31642f4b623147715a52692b517a2b4546496856474868636f7a5736627776793466696f75566174553945756b526a31563743714a75436563426e4e30327964487536306a387730622f7652654c77595834392b6857686d7955645a67656f47726c6d4f394c4c4c7263477243584a35426a5a6a454f574f314b356d624b33726b784b6d6d584e434963545052775331396c6d4c5874752b4965647650762b656e4f747047575a534e466157394f57422f623148394753527a632b614d6d4d316763375365424576352f68704252307036507974374c634f587567456a774d7a576e7a6c736a5775326b70696671397a6e51466d3079526c49694a432b4c4765705047565976654b6377714b46414969344266373078457a485351597a66545048315264484e35424e3472626f557752484c35426a614d4f4f6f39465576386e656930536239654758354b6c6358774b58754b59443661512f5a716e666278473264663446335265503137482f414a39485a463948565233556778584f565139642b624e45716a5035574c4e537067584d72342b564a38424f55484463546e65344d2f65786e4f33683637684d76432f3764486c766c56326242672b56362b7039757159594c73365270756c696c76536f4e6f43624b4153347a425a55502b2b6b4f2b3736686e7a362f7741664169645776444f52306939502f77437852343975354f4c6f2b5765652b58647a2b724a476e476763494b704e662b47756334315663636146366e493143397352413677794e5164584d387a672f724333746338593238494735766866396750384f6f32624d766d586c507252737a5a546356544b7a31755a59454445325a6973377336636c663079595766734144714239332f576e5953696e4d78666e507432703354574a4537337637527634552b6b4d422b622b50384167666b476875654b317a5535336b4c764f39546e4561384e4a464a646c77356b387a59364b62705956632b3739724f396c3862444b4d434a67566a326a57744d524e754130642f4b6648543338677678386f7374317357584438715652666b30623875643436342f49647166484451546f62725464674a705838595546516f32646d676d2b45627445576a2f41467470396d337277472b5035492b7150696667474c3478345667316553512b6265614e563439584f684769335a6c7343614e4e4f773279684442684758507a353642494a516f5a79436f6a617073337650476c5a74786e73563965762f5138316e354c2b642b4a2b576576336e3738446b62504649764a503467726e5765365070357463616e574f3551734a64676a536c6665517565532f617333515547367a68703771524d55726b517a4b7274524b466a6331717432504268316352614f32465956714c4d5772744d7455724f7453736d5a39444f4c5a30476d304552703739723570335748706339516656664f3830394f5078593955443876385a31562b5a654b542b4f2b52426d49706e7679645848484e6d326b612f77704a746b50597266463432546843744b6d775a74526d7736654a35353856786255722b4557704a36353766672f6a503841396c614b31593937586553357976724859383437526c7179575254376b376c773153794366436e4d4738726d47695433476a394847794c54357942656836342b6b663558356d4e6e5a666b2b62346635464c734565552f34355a504a38736d5a69387156502f6a51794a6f306d5452375645613752347461517a56716a596451646f596974745038776a6d79727a33792f5737354236782b704c747a3037384d7a38335277737447746d654e556c2f41366f76593132335a516e6e3078756f58503846452f4c484e7935754963787151703750434978577562574632352f3564656c656a7876703136563641566477426e38655634706a64656e585a466a4e4c4e7256547743374e3964767951754d6578706b47774a424353622f64544857644f33577771443162386d326c6f3952537a615a57446b522b57634d724d4e7a382b65574b39504834342b5152664438656b374e2f6c4f42496766727a50436c51334d4170625036745749355937754131562f4d7a796642682f445478503057395266577a4f394f38483162386c3868545076466e31365234755234766851336e68644f4b565471732b697a4457484f6e4e4b32737a6c463573722f5859394e4b4a3935613161376f6f504f7a696557656f484d64506d586d754844367a6545656e2b5052366358356d78573532706835465568596d4a70313633556d334e6a585a39643251566971786c646d695a70366c624150737446596e46655731754973334a5836662f6a723470363165693371686f782b704f3136672b6b2f6935656c6e6e587038475675356668336d586c54593931486a39327466636e6b47537a443272677355707148352b71426753572f48543830546d383176574e7532656231394179386d39492f5562783158696634362b5a2b4b2b566f2f4954787875652f30506e3865386f385348772b6e7872796b503841794c5854545a46634c39545939315642715979783141705073784a5837464c4e4671544f2b5038414c74326730384e396166482f4142337962533838395075542b6c506c6d5036633566696e6e50676b38766b6d6f6a7a3779326a6c5868322f35486a593765684e4c634b7249394778644e51482f7742747a672b5a33766343315a6d4d547a5633435a2b6f66676e505459386e7748793379624f3873385938586379667844766937716d796256506e325450572f774175387330484f347158547843575244326c6a3338464a416b4f6f374b50496964305a6a6c6d34702f53394f394c556a326634614971644c6d663132776d6565664e3671575a56334a467a38726e61624b6662384f6b665650354c5038414d45774748794754353775493162745332673671744f6a4f4a38464c5a444e696d432b6b2f6971516449454366396c43334578762b7068386d4947456f6a2f516776582b44362b7047583052533734714871516e76332b42615a3672653078557a69316e416b765433766444717857373553344274553562654370557841622b44362b70476371657461484b47556c31363163574c48684a322f58597169645935544d6353506f6a6f45494148474e2b515947683850476d6f4230445a493331434153477871484e742b58726d6f4368765263496678624b49375031416b4b72424952366177494c484877673537702b352f732f57524e344f70784a557241774a39736c487977694b4b4c5465796972737a4b4a7668563079416149324d62594c5548374251376e324154374b544f5a6d52494b744c4d6242312f305978733446584f7a396e4f616b52434857364947597838597955585335717a437a71542b6253393948526334326c4172446266527046505031673847654a432b7257716471354154777052706e586d5139552b662f71733630434c716953665144706345525470586c7a75345a445638744470335772566535554d6f7a6e612b66516c6250396e35456d77574a54372f41505a6e7a7a6a387064425a4859414e4434794c726d376279347a676570722b30352b63486a766d50705a343336432b72462b784835483443642b593636337643304e727833794b6a5532387a7971576b6f66746e707935634c4975392b30414a454530415a5455766e6b345061644b59767672326244746c4c2b4d7670396875315050764373366655324e7030314f743542747764386a30484a30664a4d7679454e5051386c5a6c6733334444556b704a6845444f78614a496c6d744a76446c33324678512b6b336e58716268396b386a3859385762444673356b506b65524a343946556d5264666b476f70566c7969715977574d6c7a63514b71754f2b5372683079704f6634692b765864465a34542f4d5462493851394850526a7831756c346c3469666774316d75662f6b65726c4575434c66314c476c5664566f30697a747268354c4b3442475436362f6e3979666d704a796669544d3237584e4930682f4954316338683878762f41504776454b797531694e6a3578434a5863766a6b524a38693136706d76706d784c70655430445374547569496677675574494764444b35656c6363306a7a452b4a666c4e364a2b526572586d3264366d59666b50692f6b6d703552765931486b4e6d70525a69362b4c4156694c653647396154615a785a50376b4545334157414f5073337a48304a33643836566f72796a7342346e2b4f486747374a6b656262586976716f3778585338646d3038362b447962625469716d6f5545726d716e783973382b6a464b5a666a3576692b495653496d4f687461474a664d376d6d38784749744532477a6e6a58346e2b684452454e443066776649716552703749486c586b50714653797a595a545041366254367570615a567275737a38365633546439684b5950665054386655553557314c2f696a364464543034394976514c5053656c5a3647654c6543484845584637576273613661616a314a474e3067676a72382b4b61696852585a364b46736f496a365a6b676b4d4b556d566d3976785a39664962567138633943564e4b546e69586b5a5a3253696a6679786b3248583446515533446b315a6b554936504a536e4b3455726a584b6d655a76584f346b38704e4b686d7a352f78794a3865376b352b4f6e42385538653163796a5056447a505a6c6c6c7842795a6b514e6b396c70574e48507137697271576b2b305656664743702f5a59626b755a455a36323443686176465047427369546e654961766c46657859645768557653424271386e36703264626448445a4335665a792b786b7a545739553958577539746251396a665a596331667a6539555078482f477a456f335058796a5179764f4e52427368394f76425055586472383038786c61654c6779545535586a7566416e4c7951773538746e58756e35476b36564d4750334b2f552b326c5855744f4b663670396477386358354e2b706b587276367262586e755a6c3658696e692f6b4c694c7744787654386b70387537347a6c743045676f7635696a35434c37624a37503058414839665834445647774776503074504e4b346d4f7a32685539506a336b616559326c745365515a6565343667385775386a774e6a4e6b32374a30324932646e45746c684c6a49526f4a6a654d6b5831696e526f6e557233753555715a786e683041506b336a3446584b774e716f46776e50376b6f696f2b443456614879766d41536334567264396a732f56556d30484a42427546492f434d416634373545666a586c5869336b654f7830562b4c6f7a575475526d725a2f47766c31484b6b4d344c71756f645037616b714a432b445055483641794e6775642f56356a4e5972627150594c2b4c6e356a532b553557466c65515559336a6e6d756c6c5162515957785252663434574f77467979655671587554704e512b36566a614b526f59684838617077646d73363870764f31644c45384f46594738666c766a72764b386b4e2f46385a6c646f59736457724c79426353724e792f4f55764c6c71786e64782f747a30636331676f464d38682f797073467679746a61716e474a785047326675427554366a6c34387579536d5031616b6f454c6a4346486b75343348546f5535467739445071354e51486b47483149713471587453546a7053333644615a753931457a695a36525752625870334835485565313554355234347677624f314c6137702f744f303142356370585a374c764a664c77616b47454c666b563930754a6d6a36764e6c4747714d2b6339396259694d527a445172312b2f497a5533746e2f414d423842326164627931384e586945504d76586b6e586d686f5a4b31487670324a3941716e5a355a3555633548517442727364594255685758545a72536d496d6254796a7875656f46534d2f7742536655566450313762592f4e395674464d71616c2f5a624471754b696a4f302f735072594a57532b336a6530392b54374c656d6f484f2b592f556a73302b663841634d4d647647716e3057304d55684b5866557234766a5253644269686566313268644e30556b525373412b48306a5930484a534a2f58397462634f574f6b435735752f7137386e4d2f6963776a4f5855733042596e564a505679766c31376155747a6b6b4766475447547361326b6547624c506a506e7653424855623266696a2f63552f4b4438564e4f6647394f7650646a796677615663734e76704435527432377669785451644253632f706176326c34546a4c55476b65527453594d7967706f6d624e4743777a314e436d7032713762666948704a2f464c383876526638706f6272496f4c2f4141373153697964677649765375695537472b517954434b70312b4d76566f644d7333732b656b37707a636a36644d41557742484f6d634c4f4c5630726165666a722b4962667a2b516f7a4757387a515278462f456c37325a30387775697a6f532f6e622b5a7554704f464e543672493139704c7275504663774a644c77307566674b673176565479795054552b4c77442b58374c596e4e5256493465626c74483862564a5a6771746959703933793632735246706a4a4859347735664c382f436d54527046593772667946572b6165736e716c344e44523544366e36506f74366254444e66627a533951764b6149465279686f522b50376d526f2b50563563624e5a7264374e7558524f30356a6254475649307144756b5a5869746254697536384468742b537639786277444d30325a486a2b784c36704d687373653356792f46752b502b496c557a567176356935374e746e7a3647544b365a4b2b463947476c5a66617351344858766d4c71307447302f6c45423943507a53386d687248543176424a664a34587a496b357a583855507976464e4b7448497a636b6a6735566c4d314850324b6c6f726d4a4330305575467469696b4a527574665369656c7545435766334b764f5049505533302b395072334f795659755835446356555866455a505432624e314e6a492f642f43696d4679334d6575657775314d6237706c5745386670396f6332657568474a744d66384136452f2f414c4a48686e665654472f4c627777623768327350787247395273587870556c6c326676626e6948386f3659362b53754579456e3253694577796459333567373735566361597837564f32644b306434396e7634622b7471504d50536277536c444a766e6b38626c7837684c39496c64717058565032693764564b7650326b32366d6536447641536b33476b2b704b65556c546631357572544672543444622f414d6c38676a7a4d4b5332756d4c6470687a363637784b64576f3756596c4a306d48467568554179646f7939344359736e7636783332584a62535365305a52475a6950454e765266796d656d647837366e5a312b74522b697a6967636862484c65792f4b6f72795936694b575673615a655471374f6f766335764f506d642f6879625245547743756c355434354c3564646e62694d39415655734b2b367141616c71636e506f30624e4374736a424363666b534b77426a414d50682b7944633563695262473263627534544c5138627963316b3953545250466e79367a57722f414650444d48475578337a6c4a6e304573614a2b755453786a4a5766726734374570656745707047427a332f41432f387578376642664e613141466a786a6442546954727479362f4a7074484b306c495762353535776a63506a75786f4e6f4b667464514b7a65664f6a7658416b64744f4a7a30784d6a2b5a54367935746d4636756553347777496c372f4b7649356b64663264456c62506d67414f44436b53535a4f2b4e5842455149334543324b4472756631376c4c59706b4e4d47524a3539596641722b56762b4b74794c596e4d63616f426c7334784c774c6c47556a67736538306d4c684b5978544d336e43506e395648546d334356346a6b5a4f6a4c39506d733867746c54304d78766b464b364c632f79445464734b6e30466f57342f48556b394642644a67392f616e7651583045555954615a366a30656570473236373037394d5048344d2f4e58586d656d3265796d6434637038736f78626f374a4b382f773636697a352f63524a5878456479506b6e62667a34565670576c4839636c49786131764d616661506b3749664b6466794452613754756f64624c443472354c385074646f375853737671314b31767241562f522b6d4c4a2b746d306c5a314c464e62393663794457735a724e593444647230703073756a596d73583542587077315a545a6138752f556279334f6874777479756431476a7344394f6a50546c6b375073517a496251344d73532b49425677547976325a4869442f496678716e784c3132395a6644745a687930356e714c35484d5a56765a5359796c6f575853705a64587a6a6e4d434d556a3075696f4c476830766a2b586f4772314b544530724d6668455739507641664d7656487a724d394e50547a787252387a3870386b306c35506a2f6a734d4e64467576544c79507641594866722b3466726a70437a6a42416756543833557048394e584e7069746430386d424f5079482f41426539647678613873583474362b2b6d6d76366657366b614e62506a616e4a726c304d3734706143586d624f52714e577a346f56784d5a375342765073724b6746634e4c416d6d7054556a4e4c626833432f73302f677a75655873563633655870354e36627a7a2f7248526c7a365a62326c623953366a53646c36324953674e7278576b5030796879774c4b724141416f6e50486a3970316f6a6c6a74443261656b336a454f577954787953344931352b6668346661583350447374626a64787a4671663931395377717a597951624f72346c6f4f2b4e7a6c4c4149504e764d7845544855625168345446464f717a7833595a4249656d466c6149716545637162553632746f7253356b36672b6b706a684a336668455033386673665178706a546a6d5a367a6b427465496f2b41526a6c30577a382f6a744c736c544b48496a724c576a714f325a4e445861326f334e714667315339435a50506c59554a2f593937517061385331345851325a6d54704d766c4f505265756d65626b6761574d5762556d7a6e426b584c71507346635130725341755541425937332f447875334373655138747639337a2b3270706141562b7348705869614776354743336131613638327a4f304e482f787a3742334b5959616a326b6c6b785a717079374d453036774254512f3743784c74396d31756c623849486b6b705a5a493431334966507052574d5451754d7068764c534455545072516658666f3935536b365a566d6f6c4c2b51474a2f666547497262333066326672493935503967623870387a7a7a38463866306c75334a4d6631453947504b4e627856326a2f46345033506f58664a35416d686e5359422f5954477651396a546a396a6850674f34464964306448796661394f4931642f7732465a2f336c76375a3272755a6c2f3576666a6e6851312b5a736a796472312f3845783831345237336a6345685379656f2f682f46792f4a56746a50546c6738686d375136633653497a724f74445a396d312f33562b7a38503968353666787a395472726d4f4b657169746852706e304e5473656a452b45316638416a4b4d79744f634e466f54694243376e7447646f6e2f43664d715a33314b5a7636374c7869632b49366f656c5871436958325079723054627a3438737075664b69626c75617961657a7462386d544a424a43555a56477276506a576b3430685a78416579336d463639625a485576307439597348537a352f45664b646176656e6d6d743762326e626d3972744a7562516955467271724535525137787579794472446d5a3878704959315541424a3537567878676552502b3639366a51655a2f6c6c354e34746b36532b2b4e656c636c586930794d366c525a34573061377139784552776b734c6e506f7163446153414f55734d334838795161305054396e706a546d652b77356c6d6339424e63645131476c4b42466765377446536b4c543145307376786a79503446695a6a3053636f6758777668496c6c336e534776554b4d4146677a4b6e486c4b6b2b3576573939332b34786955676d4a34357643304f6531684750753538786d594e456b724234316a446e6e4170532b4e666543582b51384548512b343343746a616c396f53624747616934584148357638676f64376571424b6a6c524c49566e4950385939365144727065544c47616a35307258787979355051522f6359772b314750654f62375334593955594f566b56416e385176643758304c36364c33744f4868557a38584d7162362f78364265786154522b69417632487544334172336630436262434f5a314b61657a70364b614a55543836664f6459315a6369622b3264424e33742b45545a3750323554756d7758394d2f7743713172742b636a44712b4a6b2b4f675a705a323038573373672f4c4f54467955435855766a2b51694c71364336485350676e3744567a6872456b412b50366671436c39337a61707975724d6b706350384175494a4858394b4247657273356154312f4c593563374b2f637a354666723943385065616855566134697332377833312f7443656e586e562f716c3665557954486c36666c6b4f37797a56627a4b35666d2b48744e69664974674f50326d4e684c75506d62307565626f6f78412f7330677970713363506a396f6d7532336350575a2b586e354b2b6d6e34432f6952742b7156575a3266573052763847394f736f7337364f6c335673676f6f4d303965744c6c38686d47732f77446b65665948566f4677636f4e335a4f445470625831647667504b352b466e3439657066355365734f2f366d33596d78356e353735707a55386b79472b54506b7a6648664773375365755461334e7262304d39746274674d6575686b6176696233355571704255337662416e76314c553036346e6c725565357638667651484b394b76524c4c384578556e516963757171467147575a33644570394b6652326c395772706177314d6e645939544855317550594b673144616b7a6f3871397439736a522f38414c4838642f48664d50487655324f6d766c45336b57654575394c355976734b77545a34307a5054564c7364684b2f3270716c58516678503459737361354966735172647270336d4a72614f7030667a302f77416d2f537255394a665748796e30765a4461746d66754e347144697539476f4b2f7356633473413072786a354f4e55664754443171514c727a436c33764d5239656b3771376f3768716536664c42585a6e4a4d6d787a3149486b42417958716c676e6c4c326359526b74674c636c33574a353335687364305767665257656e4e3276582f6f66575a61656335396b362b746374505a6b434b564d6535372f41494a65696757437568594a647a74423857616c4637502b43613930363533394e73443659784465536c30675a57734e4c7a6d2b42556e5639567833653958324d7a4872626d4d57583649775032436b2f7742687a6f453437505854313967727976706774314e63664f6354304f6472346573703144466153324a41516b486f752b6e37676139683861626a4c396d625139776144633338435042746e7933386f2f545263644538456668506b4d506e4c723363542f473944787835617149724863674c6a4248543739632b394b5a564a4e635045386f5950486332764e5930372b4e755566303566773339643944312f774454453065633854702b632b4c41794f3145392b514d4735342f48704c314d2f56364d6b366d4c57396b62754768516b533650696b6179663367665044314b624c634f794876715635572b4c31456b7a305a6c446c4f7a59564664505a624c4172547a79544649656c416969736b782b30716c31584e4a49475a746c7363706955396e567245784d79504e722f6461394f76492f486679597a505532584e5862346a356634464e4a3437646b61554a4e683250475a787a335a6336415937754c556d457247744e544f46332b653637357a6f4136453975684d5470374a3755446d2f6e63626d776e3253657a4d36756e50353875612b32514f577279724f506771412f6a6e2b62736457744e38442b796c5466475378424358645550514c393856336d3563584f5964433775567a3261504c53625172536730626f526b716a6a7939574377684f676d614250506e534c3477503939417076702f316e616e664541486f624e7a623161563664466c3154364d3358754777356575476f70536e707933684e31564668792f59712b5165756d34456f6534326d50766d6266687a3569372f54374d33642f58696e6471697971423074744f6a62436a5051736a6e68446c4e4c79636c6268634f58524d4d704173797033757a7563662f7741557154746949343852633239357772784c794f656a47747367497078533471354a566e38565a466652704d346371464d71484e73354e4f776d705778337a66454b4242547249367835534b45382b382f6d32614964483663315454565850724d63743973423164744a5641774d692f512f2b3669347763324e2f577076627753594a6c2f56746c6f3768423058442f4e7072337572712b42365730474e334f35712f69746c34734a7a343475554d47785879495a2b306f5744675137326e3751566239333638514c31776d477a353134356c62304579396f43552f696b70374a524f6a53637867715644555a6647424c4b66334f4e716661772f636c6664417a3761316a4c2f754d6e4a676b364554656956786162564f633674434f314f5554522b716d63474b574a4330356c4237415678427041706d62664f744d42367275686f577a4f71746433764f557264796439646e38615879695263716b6e37384c663138592b776e4f55422f58504f314f2b4944616e5a6d7a794b68347767426778636935457475342f3231734e6b6744494d7a6f4b6b707145666a6f364c48667977634d3646413735394146667132426632572b48505955396761594d72354d4155425153353942433339736346576b53616b3849586341484a674933456c776762516658505453665162587a512f664776557169706f31712f6b595a2b4f3747676338656648786c5366686c354f59482f68516b4647544f474746756975336c446b756f7368737351645741446146307151507a6466336e566153685934682b48333953676757376871467377657a6867366972656b796d6132476c69562f5037574d62613751724a56545779327457744c6f365072693546614f2b314a48316765306e41763541665237546f4e474b706d644430796145576e452f6b656d4e584e4f55654f624c797166326b732f35516574346b3166355746376a2f6b6e4354632f642b596b4c645447316136744d4d343859754e634144486c3538684a58663339437636504a2f77444c33695535317236336e744f3858664e502f77426733556d73784f4f2b52466233336755567132496d42385a544a5a326159564e6f506e327576694a704c7055773578655155467848552f61414776342f334a626573396179496d317447734d6735386f6164584f54525a7442725a582f414e754b58374b674254457a544a52524c394543464c506948372f786c3065674858614359654f59336b486b6435795470346a516871304a716975704a4c53716d5459494b7a4c717944726c6b6e36625373587777535877742f55704946314e4a6d7356784865423869564a34696473746b39504a32353634354c2b646a52434c567035587a736c584247454b6b316349486447685642676a34616a6239666c78504d5a53437a732b484d38686c775035686469666f717430584b697530584a54644f45465078637a68374f4c4f4374502f574e30432b7363425368396a6e45427467672b55554d3275624d346347416948547536664536584a30437a6e4b3578365559736a4870666f2f2b75715a4c724f477669757336417831554154562f58623261326c444b61394368583045636f6d564f7152544d394e6966744f445358557755762f38417064303373544f78626b7163414961346a437544334d3454723357667075577235415a527a2b5572764f364f684d39416f6f3474565130645342422b6b7446517a673530634f3135427a32466e4f75544f4d4f59497a396d4374513647597a6a3948595a6d744b693049776269773859684a725277523936415134425343576f4f4e396645474a6c5077733554724d3374516e715264647161386b53464d7a78544c746c6d77457150724b6c2b34366e385331516d6b58414c6d38623138377139767977497a6f66795335575568316a4d3431554d71304a596a4d6b5737484755546f636c39584f533064587066436f503241436450734c2f496c64646f4d597446733361345153765843754d7a574172584c64547755307454545963667a4b6f6e374f796a7650744c615a7a4f3431714b442f414d4b515456727336485958636664504f6a506b314678572f7073617135574f5a776b5464574362453644714163637a2f774459626c697a6753636168674f322b5731577971686754544f325743555a4241344a4a34772f583038312f7743387958687571346b5a326459423849493138557239646e4d3536374b2b41696e6c637a6e41764f70742b37794e706c334f343961584f307a5a474e4b5534694b314e484c584b735462396c4b307139342f354f392f76355951705239714c347133584a6d31714d354f625666394a6c645031706a506d6975664c732f64433162487470375950654f63482b417a6973337553446b6e554c50507574727554435765544d6c7877496d61746177574763554b5565376c6c7930756c4166394b77567a4e2b6559754964534477747630397170737956797337574d76664c6f72644f4c6d366c553270424665536369537163575071307373595a383776416c3737356e332f50474c6c5566574f6c2b6b664d65784c3056386d322f4976432f417149465a6d524275654c79576f306d31426f473046717a616662597042645656596878652b627179656f47484959556c4259436e655a6247624330366c6c6f57795761464e54616d746230387772354d75696a55504c6c564e6c505261775147492f6248376a353030556e6d7559663755412f5a714378783076593542356a455858756448646656396c5a736d6e6d6e694f5a3162396a394c696356447858315a2f5a486a6749332f4c396a73774f396a4275477a4e6e69314e686c585a3465577131336a6e56616b466a303163445162326f47464b75647955746e2b4f74784345346b43466649526778444c76707669633235654d6a5165756b4d73457337706b4b4a2f617738756f385a49703975655a6462582f775a7339797a464e48314666304572786642356f49432b4c523230446f615a46506e4f70644d6c7a365672735a4e7a72395236786a4f694777434c7666736b6275384e7074584734706d5a6d637943536646763477422b5a4f642f4b4b6e61535664714534304e2f6d484d4e623741302b383049544748324b58384173536d62324530574a3978774d38544e6f3751725171566453346d4f4e476164756c556952346f53794f3446494a58794e4b62354576537377393551632b627644464c70774a326f7030774b4e365663702b455a556d6a51374a3169304c7a4a33614f7a4a3970494637716c574c5968592f49376e2f5734714e79777045492f70767731614c7472587045304b30632b595a356d352f61707157587233726d752f553441535651772f3631766d46356641344a6e7a6d373454434f5031457374353246314877307a3034314b6a7a753048386b3745737a6770723738724b707a6f736a6e486845774b575166576438597455372b674f77314b664b594e63394c7a526954704e41794533553132685a4448336c614763514d7662436c374b72726b4837386f2f77444e447668595947674669725158524e456759497154626f426c746e714f52533832336b2b6838667a554549575866396479574a6138556d4533784f41564f444c3434516a2b382f50514564533269756e2b4b433179316b6c314c506b6530513453532b4f7a764f4f6c2f774143416a6f6d2b74534c763641574f5a69724c363630647569756e723632633537355a6d6468574e56587941345458794e31487a64423731665963637a6e534d4d665962772b70765936306f4d2b5761756e36306c4367565975614e496c6e35357a527a53677357474c53752b4e36305541645538446b6b532f6d54786753707536754169726f37453156417a4b4b4d5a5970657951514a71735570424156504b4b6e793655725a31714e4c4772523034552f582f7936415474646f7779445054774256386651766b716b4b323774544b47304858782b5478616b2f484f4666363577514e50794c494a6a4e4b6d67485a344b376147536a5443566a715a32324f54393945714a65747159636631586648654d306659484a6e516f366b6b3157514a716c2f53584f4941664a705832563664537247665475396b514842472b6a372f414657572b5875672f6d6170754c2b2b4a5331365870545437444165794b6b616335414a6f756c646563694f30634a72565764657256717930614641437770546f434839747a5462705a497a4a4e3443326445434865326a3455696f48455648554e447556305830764e4172716e6334447a6b5231574d67554762545a7775506648594b305666436b506265516b41474a4d435a7a6d63395156302b715243795151335a5261722b4e6e5852635a797945427a2b79724e3779356e474d51512f4d777546396636365663495453346669674e71354b796934446c42564a4439664d4369356c556b396338702f586a645736796a713539586f737a666c456a5370723571506450374f552b77427a3132786a384667636c5271703552585a4550474e444e5a6e6b396b2b35612b6f4453787433777971465a74535a702f776346596d4c4177706c54464a326831364b65614c31506e61717454525a41547174486b36616c574b35525030525a37317a7a7a74706d73447676553574664241453676597a383545433630317a4f6650573957677458434242546c30373248786a716c694630726b646573464d42556266636b7a63465a675069723478416b374d56374a704861656e4c4a5a734d704f58694c76637153325451584b716f6b795a716c646d363054733245764a715163545441656c4b4a5631516a546d6d44357137426f4a50376952376b31634c4676693976426a554c437a563275362f367772796c6634726e397148414e67434e4f6d613176534c394b66532f36793635656f355039517362536954502f465473676a4d3531776b74532b637062473177584a50762f494c644771795345732b2f4e32654d66544e49386c59466b75395452585646496d6836724a484f5753616e4d57736e70372f753450774c616e324547452b5030303430756a372f414b7552497656767a4c56556e70564c546e6a4a4b5530444d6b4b43755a6c3144387876596b2b446c5547346175742f777476743469535a2b416c373952566e4f756e6f74304a324e325031643158666374465a45724b59526c63624d3267792b4a33326666583775544a506a4639623765494c5655524c646e30584e6c3754596a3672636e667a6b58337a564e4850554c36306e5172755847785a662f48596c55387a5a6f477553316e5855305645703170633751556c44476356704b564f6576715a53624870652b4e39445941747a3072493278736e2b774a4c2b494f50464e4c7542305a507354754d5434534e5176556651706235554f523259587a5a6e38505775425a31717068485574584e502b735451525764756b704f586e736f61623146796c79324b704f6b757664745765584d6a6a762b5758706834543550366c36666d75587435656149352f6957666f6335565a33506b504e797443624f7175776378594f6873524f5139506c5465465345414f63355146774539476e615969596a6867616c71385638656d3037386f57594232554d554546484a4d3750624c42614d3867315279314f703563372f4f65495671517061615a6132506343357a4f692b5a385a47302f6a50343965545a73387030647177457763354c68614e6347756456394f726443686c6c744e75656c32577465616c334f454648796c30774434476c33374438357658356735357a364a6551656e6b76324f446a373737636e4c6672325a765564335a7266727930784f7a396831545636565361426f6f5858385a45326a4e536151597079355152654a386847734c772f527a463856744e653557684f766679303033693751324d6c32634336564a797274354c5a5755735463425037784d376839394c4b6b2b2b5073387a61496a726b426166473171735a4a4d76384169344d2f556d656c2b704e6f36576e6239524d63727554706b57304a3747756343686f6d536d6354706a36464653616d6b6468634f5836663651654c6b6a4d6d524e644576357046764b7062746e5559576744447935634d5a4f54732b526d627757644c376169782f69633563365334564a7647656d59425466384154727948477070797644325561472f5547596a516b6d513679714d4e564758584d6a3678775270585141757a7a2f32634763772b6668413939366a4b497445787a645946772b45666a487768446238346e544d304e5048322f4749497141433357302f686c626b447539626f636d57516a37567042334f326e78493174424d34437a2b6f6d38393341573776654e654d5a655032504d61374d343565633656686e6b6e7138727a5a79675a616a4d485346376b752f6c696377772b77356261662f686b46505a7530464b7831597637506d6a70624e746d7169485967797577592b6464512b50374c5a37632b76726d706c71524e6f54723453512f5a546837516e624c522b3268432f492f554c7858527264546e535a5373706c794d746c6b7958466176526967586e5255533952504e7a5932493256417a6a53416b4751414c5a6c6b6b445a625a62354369764c66504b45536462326a5456396969646a6b50463551674559757a3131396669755574726d732b6d30754e4d716c6c4d4476736d4132487a5749694a6d652b52414a504a74756b73794a47664b7a4d3065712b4d515a65673363542f4a5572304f30422f6e493433586144667267304773616e396f2b474e37666b6b53454d2b616a526a357a4f6174765431633555532f734a69514c472b7a6c7747635a4d45354a377077456b76704d6b2b31697a2b676c4a4a434a614e78703552633577303173476d37505a43544a41316c6d42537665584f342f6542567966326d4c7955616e6354634c66657477462f5155393544366a742f6a312b4f34566a6c6f3064533261656d53686e6145793958444e49414e745339624b755754702b3339666f4a5032494352344166764f305634356d4d5241697a78586d4a6d5a75364c56553636565057754f6961696a715a4570564b3577696232726e3475686c4a4b2b4c7378664f614470374f4361416a76356369426e7439304530334c4365617549624a425a386973376e49624a766d546d737644695157747058666f774d7a416a635078483065386f703134566a7941714e61324a56542f3365496d72715a485049706358304a714870747443576a532f517772426179562b69582f376b39412b664354435859462b304579623543496e6c4548434b4266386a3776333770626b776d487738563765723643314e4676506333356857624361507441465074634c5269474545565744332b48657451555470592f724a304571734c6639303474594d733555384d453043615263704a4f417a727435596933634c4a3678765348376c58626c424157632f4f4f785473516457772f6d304a56555852675773503841486b5457543961305361746f4477464d2f664d524451766f72616473476a306473706e396432694361523157726e4e6e644f79364f3159413750373766696372684b2f62644239437841475064336f415a6362584f756f31754d72794b32352b63776139412b6474744c634e4574497a686e692b6357546b5358642f6133436e3433544f63703837516a75356344396153704a36306c47646f6a6c686c6770436178494b7555466238453442597274326757624c476b4b357a705a57422b773163367167786b4d566a2f354937496d30536f793130703554507a6f38587978382b6e7a6849304559576f522b7874446e454365676b43732b763263444d7a3552586857504952667946657572707274363569754f5356724f754f4d3938387667766f4f5353796a76475a726f57483754352f6d715341676d706f436b315532454b356b62756e534e6d47723547396a7354314e75652b355a56537a7a306a705864555465726f5046546e732f66364178463377675a434971347a45645a77496e7055544350466f5279524f7251696e4e5970435a4c566a484b6d2f52524a4852515472474f2f3841554a2b796d624f69564954534b41423654776778782b56546f38634b4e306f6a693552672f7468516e46386c543461644a6e6452384c436f572b543339616656302f43553361414d6a543849424a2f482f4c6150487050743064525256566b39685231795635794b2b4c79644a414556506376345273346d684a4e583136763939674b616d4e6933664b46633663657a514f68494e4339414a65497a2f715a374e55464f75636e694e476c43754353523638632b6c4333496a6d3461715364376b324e576c38786a764457764f7274695471786247495569304c614966616f6f366c54614e516e316a3233424262766d7a35376c55665038422b2f78676e75704c71696f4b643976454f6346454364746d7a6f2f5a6c6b426a556430374b6e4a3042706d7a6b7832786f76707a78556e6137464c374773714e4a7a47366b452f654f75555772634f58756753715866796561766542655233735533483752566d6f313254434e476239744e535556554644483149733467706e485059626b676151353336415269635a37684f7a324a637a556f5a342f486a554e79594563436b4e545359656f64484831532f396e4c7343503543707a6f53723761452f75426a76663766706c5132416a5665544a7a31626c3671492f6f5a33327177393265373539316f69365a6973516c766c716d735773334c34366e696f344575696f45394a494548506e38686654337937315a2f49443078394e2f484d766c2f6d487146426b5947626b4c41646a71647253762f414938325454794f4b464d7131786948656e79593274796945754237576d4f314a69744c57743261442b68762b4b486f6c6c666a3336412b6b666f2f34747a7154384a384f446d6a4248725369767948795450544b7a5957436f33634a6673334e47644e4450727036354c70774b6272684d352f47314c786655746152354a662f6c4476562b512b71763438526b4255756e7a2f41433554384c68504c4962573063643265356159695556597357375563797046526a565a70483870386d366b543948324f6356315a486e3630545366697131464e50334f436a544d6c356e302f5a6258705559374d4d59716d55554d47556b726f483530723967657a2f426f7435315039645848506d4b584b5a6e613147784452736e56572f3558716a6d51326c524c61755778686649696f75306533394b543732664d3475642f54652b314851482b68416d696e4e704742494a766b6e53704448484f5664663773364c703631704156754a777534664f2f4562432f66577a673772512f724f74757354494c7763477a486e5657356e77654d326c6f563078646d6656564e63704b616f556757674172594d6f7036417a6349414e33415334334f4a785250586c3437684f2f574362307152354a49586f6464354b377771727858425a63337a616e4a723259764b6167396e6b76303673476e67305a6139436f6b794e446e796335714f46696b6b73307072584f50326e61774b673979796569696b374f6c4e577054615370476d7a70414c6c544d414f36516665486c695258326766724b2f63596a3336786a2b6d3768393732485050502b394742584869756c39667a47354d31615648773338705830574361784c3565457855356358316f4c36667561304c587932524f3863684772325a744a5a395377334c464c62506e38314e4b463743484a2b696f702f2b7639347132633737424b3866615967345575357753746c35624574307a5856484e4b755239394f6647716165326a72676c71657333394867756f5a6f394a5366737653715033703448364a2f39424d3433496c6a7973516e30496a314b576c4c7978456641526f61415050356b5a52334c4355674a7a695a64503768393454676b656339375344664c2b336e2f627439572f37685071394634543659352f63587754783575585436672b74476f433159586a554f5a57536e303555625863645276474e476d6741466a33673270457067424b2f31343632745852726d336138422f5255394376786e39482f7849394376465051763042784f654d654c2b4e70664d464a306368332f414376526f723145457a54317035557133484e314e4363443755784a496d6451364d482f414b482b764876653270653139546d7a3343346d655333595838686e7953786c72364d362b5245414448697a707067797a524c4a49795552535a4f6262375864413238366c5847674454464d394f4855632f505758316b3852385975325736506c74336c626f626b727935382f5169435842303670386d6251637964734b307a374f61355a63634e5151396e585973702b462f6e777436316d6667476a6e6b5835372b6b746e6c4f58365777312b464c3953664c6a7a7779504656655a4a314b36646a2b5753646d576565552f657831485a334f45784c53346f4637424f5853367564427a626536766a6433426e36737038383163412f4a764c4e545a38546b773573367a43787332334b4f6e4c73724a4e62693033384868344c656c566d2f495855514654392b464a6d4673387a4f7854455778485161582b54656c4d4f7075615a312b56624f5a4c763178466d35436f4939652f526f7a4c68445831746b4d36634f7158484c6d30436974493049416f4f74747239357a694f6d63526e4f496b61352b707634705135486a65776d3165763549626367376273737561466d6e565345747a577a7761584a5175584b444e59594b2b574a7070644d38352b39674432304f307271627038596b637a2f4146702f48336e692f6b336a6670744a717445644a4e336b534f79397a796d6148695a77707a3574475275705178632f4a624b753971534c5a6b79333834794d644a6266627658557a7a64596b61452f6d766d486957656e336848696d5a6254344e69344c7452576f6f3561586556655661364a363730313035476f614b5072526b535570584c4b61514f6b50727545775a3362532b4b5a3751306941577831634e4c316a78394b694c564237432b516b4f6f6e5a3743374b56454b574c64524f504f4d2b4e686d5148386954344b2b6745304d72535077313175682b6d2f71536479524a2f426576376b79696650795276562b786632474753466350342b69444773393835387a2f5a2b7367625771623330537a364f6239657341736c63314b757559774c667172556b6f6c67535339713531422f374241624b5146704344534b334e354466722b33542b4544507a583952764a73594b6d593248344c69356e6b65675853717070314c646659687a63764c534f673548474c364e317a324d52773346374f437634536f57583959612b7237717566784474482b4c58714a346434442b6150726e3656524e776358314d39484e4a2b5436655667314f5862357a366653654b4576795077584d6645733061476c6e454e3272487a37523046795a50776d4a5a6f657a6c314b7a62537262346244306e2b6d767170693234336a32566d487a614b6245386472495649656c6f664363654d2b4b6e4c427854553667755a72557a684543514d39494847706746485166484d5445346b56463668576572556d5a6e366e70593155586b4769546535336b486b6b476e705a544d7a49756a32482b5059712b437069584f3046772b31726574533557326370556f396b796c545862783343425a2f6f3536376575445a7458312b3959764935504738545634364c7866776d72796677724f38725a4b546f363136746146304f305047334d4a6a6c77546b626a534442446e32533432796431613532563965766b4e6b4e7679487772306f676879622f41444f623639585a38754537757a4435436d5845774b4179354b657a727434656c526a2f41434a696a712f32477a362f2f4d4637536c2f716b524e766847742b3344354a357a47322b673767784d517559654c6e366a5a6f78756e69752b357a724d375058485a475845746459546d413533563552614a723539594c417457596a6a5055616c65666552654e4f386b7976546f73504a6d3857337373332b572b5164557457706a654d77536a5a444d5952442f6b5374753550426356625364504d5a413048435a74317247493366454c34384b352b4d487039346a666b2b4c5950672f70396b2b65556f3276493950467830353462616870314d5539793379743430542b526b53787a796e637477476b37506842733362485564704f2b30386562614e61504b665258567a6e37336e667046735974654e74356e6b625a596938777a7273725179682b5475584f356b65717a3665484d4c4c42377a684f41464732622f6a7250315670463838742b34636a2f79662f496e3172395066477437797665346f4e2f786a76633672496e7755354756624a584d764630646e766b5852597a59545471464b5559797656377076654a67546770502b756a5470575a784853773839657073583731396d2f6330626239476d6931776d4b45385a585a54517972715a7638676c4d324d486e56675074456e4550362f3967663133625978743767694c412f66567a6f4666374d486d5877543055383435616c50576c435766723247504234626546372b2f38443046394c396a59664645516d2b6448616c2f4b734f7561726a416e4e4c45696b545772684c2b465969502f4a39345a4477432f77415765376843475a4578446750676b494c4a6a657535554341705a337248457750672f597a754b6638415163373066386c724839456f762f6344694f6856422b38776253705577557036322f695234724f6e2f7743565763347368347a7447673452506f47667966423051367070754f74757a496643357946526e6e7570645439796a7339466c70503969654335396f302b30566535762f565a776c6e78587a642b506e2b58424e58395635666937517a4a7969544466374f425542516c537a51514b775238556b64426a4e3855374463787136425a37772f39366f522b552f384137557a514c39564d56565a4c73766f356d5655726d564e6d494b50366479306c4d365a34314b2b76456e532f7a34662f41437354536b69354c3076663348345071486a334856437076486334317649614730724c6e57474d2f48506650636658506f456c66542b34532f73644154396e374d52494242793776796846384d7871345a2f73367962543834734630636135374658564e726d6c6c6f62316d6163365573365051392f366d2f7958515948773668735757367569624836756955422b6350626349464b674f5a3558644662376948364e6a58502f414f5569316a6741793979694876786631614a6d4a6d66454471365946396944733744656a712b427a33664d76367257574d647a744a667453367533664f53792b452b47622b6d494b42514764713174452b41546e3670776a33694b4f4f5450787a534c6e5a31707037796b2b6434492f7273732f4b71694476796d726f6a37685477516451384e422b6a6c47745832484732634a33765a3334667663526d307a54735752305272535a444f705a5439594a734577556e76513778484766315733486c3735443267564d705977584f6548474843336a4755747a2b6c3168774c34356b4469554a65366478674a7653426b377267443668725364676c515855725851796b6e4e58584b6d785057396371694869303963794f77533659324a49584c4c344a676370526c7850416d41512f6f454f45353858456b31484f6b38757a416877696f2f6c59796474464a69373975534973575344343376506c7049566978774e41632f336e7277426a6d68536e74626751782f4a706c7748544e5253314536666d39366d6c706471634170347465674857696853682b48334c536e327053787472505351316a582b31382b7a784c494b526a6f3434376c7462784e503131756d3436646e4f3055456b57483150366d5a2f704e494d506f72413941384571464b4669586d39425453304442476b6950534b673456543844354a326648336c50326a55514a3737786d56375a7741672b767a6a4768662f576c5975314e4f6368794b47676d4a7875656d5543446a4f4c46507855464f78314143546e653158732b482f7743464e517772563755424667757a2f6b6f52664c5756535455556b63387969396a69633668333866384149786161435a485030413673673531496439383571495036747039344d2b6e2b5356336d57446b6b492f545a55706d68586e6c4f676f354b5669716f317456436a73354c51755035486d774f694b574f5358324339345465654858714e356c65446248664966445138576839766c7535646b5a6669304241303661724b2b34366b4d30456d5a7a614770396972334f5553426d2b6f3334726a5351645947457a77746e75483943543866664163763030394c66485044507344666b346e68336a754c4c457661784364373234586a70574430477a683269644e444e43515731754c675454534677756a774b503638652b363173774e68564f7938324479446536396b317a4d356d6c55766272526b6a52484f73707174692b754e6565587868485a6c39496169552b486a6c4d552b512b4238575848732b593856332f414d6f6e386b3035764b2f51543033627744586e5a506c666d5a4a716949503564657332474c76537a4f395a504f355571302f4379564a436b44393677414c442b583176596f6a46372b4138336a61586f694e764a725371376f75304e4f4450583841483031436e6f2f734a79426e78455468594b4b4f4348464f345877752f58773949464e396849712b506f524b2b50705438756b6d59326d315043392f566774545570593335474c416c4b2f7a494341557041472f4a3041563963596e393048324a633572415939414970715530474d4c7455626c566a776673756e755350563935772b65386a4d77483576366963546d75654d443642464931466b6636685a4b43487773576444524a385a66384f5971696368545a31494a42612b68396a712f65526751734468534f71333435582b472f6c4c684d77504d7551703955385a6b3032745a6f62636558337933777a49466563702f5a744c532f364c467359785662564f63426d59556d7161534d79446b7657644f5a6d4f794f6866706c2b492f325559575a6c5a6e6a6d5a61546e616a2b52505a4b6e5569496e515845656472706c72594e47616d62556a3778764574392f7741774a64772f72727774715a6e7846732b632b4e656d336f7634566c65572b766d37347434523448345859767932584d6c30783139483141314d6e6173444b776647764761626d4835465039375a4c73375a666f68596b365130516c4e494c43496d317078546d742f346a7a65666b6636784c2f494431743833395562634b6278576679547942466564676f72316464304f5445433563764f55367956644e4e427830696651667a35662b345a6457664f48372b36744e6d6e746942556d525070553537546a43794d556658726f764a6b7a57764a7369775141466534534832444752683372314b5036625344704847505469324e3339524e58636b6d304a35555a5a3055647a5556754e4673345073346f79706b4f4e374672346c50745469695a6b6e3554536450442b623546714f6f5a3656464341364c5772675a6f327938716d66336e43796a59327a73513953524b37564437762b652b315a7a38595a552f4f3448645677413146516c4e517273744d726c35714a546b6c6c5148324b786e397858664f7563757869645330707154315a41497a643439665348357744314e2f77426b6f4d33662f452f546b796b35704e7a2f414658305238763064625058567863316347506f5455334c71633462702b554c68344b4f7a66443973784432714e6e4462782b315a6a5535702b456442505548307a54354a505a4b334235526e61795a672b7a426e5a375556655174725a6c57546f3768386b37586b2f58756a62504f7a6765344d634b4c574341484937476c34694934346d42534770347a3574342f6e344a5a6e6c756a4e6c66514b534d613950782f6335552b436d464b67386674727559764854477557664c50672f3841574a73303964674b49516d4b776f6e7954303738793174374a58356e35466c656f562f4e6576346d30544f33445759304a33394354374464424f587052756f78644b3173726e43487463432b7a35744c676e2f71385769496d4935527533364d6548535a415261466961744679614e44754967447a61494b6b374e504b4830635143515357574f6b4f545a515266374c4537434b6c557a6773474b7876504448694f5058393862797a7548346a36462b6b6b6c76783764477476656f57356d4c70587a2b4d7a7056325477496670504c505a51354a616d6755714c343479554e504157704e7171674c70396b6a4d7a6166345235384964486776307375656167584e5972764c774243557a534654327575655a464b584d746c494752384c334c5037505445322b317a427062323272317448474a456b57566b726939694e537a2b5058527055392b3352337339575a62796b41665777676f2b3179727376312f6e43672b2f5a4d477055314e6966366f48714e566235676c652f474944567966755938786d6a533852304b56464c5745346643522f49514c2b4e7255434a674c56304a37797777324c394a2f794a39527651436c513432786d65535a766277303650456649575855654b61536759464e554b676c325a706f34322f3643705a31625a68636e7250613133466343743656766e34636a30526669522b617634366576666b4f503451486a326e692b655a4748457a6139506735312b3964577161796e5a666961447436524e474f744b55742b724531744c6a676a694867543947414f50553072306a50772b4937545a746e6a4e64374d37473036365949773866447550704a6f38626269343158632f624e6a73667a5436704d6e37745938624f7a787255373471535958654a6130727555576851714c784d70704d337968594a54566c4a7254527379364f4c464d3762755a6b6146597a37536d616c49366d6b6c396e78567047762b4b346479434a2f7571436850577648384b39527654335378395066586e654f582b55486e2b5237544d704752692f6459564631392b6e4d6e782f6b38656650477757364a71396b7a4567464143526e5a304a7261617a6d42795339515054667754797a38752f41664365656237473134545264694d76384149303661413867765a46465235584a53684972704d566b75477a6e4b6675684b716432575354724a715a494f6d4c54476e61646f7158386b665650785865387739635055462b706c6c3431364d2b4b4f7a66487169717a483646506c2f6b7a342b543744344249587431555976776953316e5931783553524f6e3471484579326e576178574d646f6561707853655665656552334c2f634f5472655436376f5a486c53346e4f2b5974425051596e677a554433517547757962684776356c71425050384150706c33633052345249323979747855506a556257344e524b304d78726c384363594b65775361317a354b526b32342b6c3934366863316c544f52384a57444854323476703339687a32383234562f347a3672362f70587534766c586a756b7a587054627a4f6c772b2f79733038305532696e4b6d526a746f6f343666396b355946514e4842466333456e303267783143315974474a486f483942665655746c574c65796d5655657a4f634e4e4935325679324a384178703663454e6633485372477a516a36316f324e2b6d3244346672306c516c4d764a654f4f6645627365542f693134766e303466725a346e34586b61486b386b56666443505468792b7a5a70555835654b4f70794c467a2b382b4e68594e67546450722b74414334715a626269555755616b38617a62496933694869586e50716c6a393848386d394f76485041382b576c736c2f6d4d63686a4a6234335a65396c734d6c384b614b636430756c74585355784c49703867493165775271545135695a7257637866634a443546364f65496568336a39316e6a7557722f7950746d3437594e66596a754a656763766b4f586d77533648796d4b3351736e424330556d734b59316d6d596d66642f6b6b586d387a4538636a6c462b5648726c5a36522b6c766b4f6a5849656a767577676d6a54546e5a394e4761766579367432506150586a7a593532566665304c6b5655394d674f6959412b4c3531546b6e703039504e7344674471656f2b6a35564631337145375a3870386d7a764b5a72494e58613869632f4a7a343030664c703545474c557a6b355332334433397346737935766d63594e63545843585874784761396b625a7736326436722b6f3239676f3962492f77416666466658584d38637a50585141384f3035505436454d4c4558626d49304d774e4572394c50447944496c5143557a2f39616743365642795555574e79374e6337666557723252582b5435463648654c59506b483478655839703146377671396b613158724634356b33326a6e6549596b7a355150503856356f4f703064342f32525441736b4349582f47544f38514535586d4c7a4876496e687437496e586e5068667139352f6837763544512b6448672b6b58343237445052727750797a664b6e78727a335238647939316c4f4242324d4a2b3156655972782f4947552f433159504e4d6c6e7768575539334a36784e61386d336d314f5035513638327a2f55663062447366707636542b577a354f4e356533314d38473962664a38325475793730733835786f66464f65516275476e5074586a2b4e7371577473397a6548497075725177505a5279496f45626254787435593877393567342b4834663548344747563439357a69656b323857786c656f7a4e625150463373666448786c53483439304d3473306d516258766d44706458303461584b536b763858646a4d7a4f657a75473150706a4c6e373255696b6d5336764c5459636b7562767871346e50737263566f73706d73616c62716847345445546c6d6d56654877702b7a54504a2f57646f784d774f5233724434336c6550656f336d574c6c373555527a6555373064563259516c6e735277703155397a727171464e2f32755a386a47754258755237327550674d4e624f6d6b7a4e617a7346624f43394652584d7075614d6c4a6a55516f6f4a69766e7a303357714137656b6d66334652582b68373833544b626e744d6a37372b33355a7855666841757169467a584f34796b756b4d3037516171796d656f596f38365a6e7337584f5878304a396979352f7a7066502b7a4367412f71344963517a71395544676e7365594c575030466b34716c78746168644d7275697a363545354b524e744c7861536c456367634c3239567a6a384e625443797a6d6e544b4c344851364b7261795a53786c504255326b313579794d682b3564495856642b512f68714e4d37684c2f414e3448676f61536c764668504b794e4e45584776516754614a6c707261744452344f6b4d777a793952386f7a66366573396f41734f6d344937566e713062356765656c512b5a7a356d6f3070657046525a53324d633067657a3566616135324d3670524168582b66764c6743336e39616331612b7658722b5177584736776b64696a42366d2f6352535372614c506d374f686c79753145684b52595133465a33706f424b6944324b446a5038674e377a79462f6669302f564c386a2f52796a496a666c553265595a737839354939644f6844646f7a35744548775478384757636959794876796d4b42492f6e36516645485530314e75792b664752367150517a3871664c2f534e4f333662655a535537642f6a446447534e6a797a38345a5659394773574e4f6c6952364f4c693831716f3038656f41464530776847773942457969382b2b6e4675614a472b666a6e356565632b4c7544536a3846756e386653646d5175524f5850712b54616371632b724b7262707643707037554b61697a357067707236566c327a37576649354d79555a54707850654b4e3963667941383239512f6c2f6d743762385638616c63633750475a4e4c734d73756631486b5644684b6868646e4b553865645a44504c63592b796e366e517341334e2f71314b52474d383469666f723664587a2b4a65622b702f6e47513374492b4b65522f555975616978525251674f4a7033356c554767483831714e424c4276716864474863375765773343416444486d31754e617750452f3547704f683556356658465630705a664b4e2f51456e3863796d6b41312f326c362f687a57453533745934794979396a474a702f31683742492f557a694b64324d6a72582b432f3537656f33702f6d5a586f587065557772386171386e7a41384a31504b746943334d385a596c65545a62347a6272576b4c58654d362b68444a78457867457964524a31542f414f44544e665071364e6254377949486f445a366e2f6d4d6c46766a4772366167456e63557858544a4258716c674a5671342b464c5933743874525a36585a4c4538396976766935516650316d7541544b547837644c386366663841754c323950364e75375a42666b4f35743237696376523374417462794b72756145642b4b7566577631574a597857624b725547503569556e3531424753536f2f54757a5555766a4559783147384f646f517a2b4d5a67783842647238724973444e79704555486e6f544e4f4b344e2f4f505557716a536f31485563545159554139307a7676424654776d446d4c4a6476727268354535736730342f49744d35394f7936744f62786a646166756d6d345a553854447a3762455556675a705052634b5848416f44364163527637366635702b65666a353653656c3370503649656f6d743472357236345836772b57376e672b315669565a506950696a2f41494b38314e544c714e444e2b62745854594b2b6734485530566d6b7a6f6152395073756c463757746575367452343639766664354c54337948795057304e54796a547a36732b716a794b6d7a62704b65693464504e6b5a64736343696461357059656831516c523875776b666237544e53652b4f45596a73676c36622b47376e717235623472364e2b495a4f683570356c366a62696358787a5067303651713062744534417a454b585851594d4c724d306865596d44414c355150324a4c34676d3078574c576e6c72556577372b345436472b503476396f76432f487631536c38593862395176786938423850327644642f506d6c4c623864383477563074327036397a6b386c4e465768706133314f4d486c507955324f6e55745a4b5539506e6146352f78472b764e58564869692f6b357047723146304a4e2b7135615070547770594a73624844306e516b3772314c2b4a684678504f4b2f3048653548512f3677687a3065505a3878476230304b363652714648714270734779624f5168734e4178445141386e45443470496a394f7a674c624d31334f4f4d3142304339683372742b6f394e2f6f7a3454442b512f34382b4262326568755035646b596e6969456e6b4c686654374d445044444a69644b676d6165425164453632666171736d72397348746b627a34706d50344c54747662505a4639656b48356462506f387649384738307a396e7966786648512f4f64735179772b5158716b6d4b463871395370356a39467a622f414f5165466c674f4e625173435359772b39437575707037754d646f62782b4a2f6d2f364a2b574537503771555a4b4e4f717067687056654f5139526d3571626b36424f446d56505a704d4265627456396e377a5079357250636f476c71724639574d364e6f45653952507a4a386f324a472b452b6d6d56674c386838684c782f4d304e4f68485754346562705361433770304c31424f4265556772344f4a41474e5569656b304252797a726142745853694f4e7871532f30326a394f6641765548317a324c4f61473934345776356a3550753631746d4e74753868427457776575554a73593346792b752f354e4a664a50644e695471346f306f6e482b7449746d61566a75486b553039626d68742b536551564c55742b3370372b37384c45756e6e42656c51357a353254534936635a4e5451584f45686865314d7872506e2b4c574b3948475970486449526865316c7055526f65336b395a4638556e3630644271352b45516148567458314c433444424d57722b524c78443247494158544630302f58694a7a6d615647567078364d6a564c5332636139507137786f7a4764435a46394957444e6b723677696f57356c52522f4b517952725559664d4842436b566d597a416c34326a5a396170394c4971416357763332703748425575512f774352565153464330566f7a4b52616c692f67374e784c76595376682b6f6338413334723576354634723554347a35373472355a7165462b5434327246765a3276693630674736334a5648566662524372554246533255463733437779436857716e6c4344506e2b5359724d57696137716a31472f685a2b66486b76355365442b5353615870566c62663544656d7a53543570444c746146655a35426c524c7a356f764b495045467a6a4c4c6c70307363677036446d4f344543704a707962772f6e344e5853696b39726c73495a36392f6c502b526a736279686f2b53654e656d30384c527976333658665a357237697038396e4b62486c6f35765a4d66616c73307451442b4248584a58704f44525562704b715558707036656678664d656137386f665644793379666335343935503550356a6f6d3171504950494d66794c79323779656d6655654e695875726a746f584c4859454b782f79446e584b3538584745496d704566647056694f4d445a7a30702f746365746e71622b434871622b6547587465483576673370316f62734e6e676e6b4c3763547a4c5a7766483135625049392f78797032654d6249554d6f476f666c63416d62683641653976364c4b33744e613674644c347244764a2f77444a7950536a46712f462f77444b7a7a447a7277374e38716b3957503566306d5137797649794b634f6e786e786278464f796b49473172345833503532375152326e326837572f55357a357638414765666b3974742b303034696475336d476c5872683659752f495077507958782f4b3250466a3063794a4466464964445079357476527a353646352b64713565766c73627963697a38764b54464e545733372f7a466f4a6573453961577462624a347a6b636e66786d2f4a6231732f74322b73766b2f6c2f70394e5050757a59647667336d506a486d57416b4a3966784239396a6e543159747674366f2b2f5646774561672f584161376f47385538486f76537574586250542f3744326b663238765764336b6e706c3666656165462b4746486b656235392f6b4d654e71557273706b7a37392b37757271354e4664585551554a31476248366b5071576b564b75304158516239667a4e61754c577250536f3675443532636564536a55796a7a34624d7556444e366c4c522b38715a7568587a4b586d5a3361313266586c2b3871726f6e384d2f4a6a3779636f4f34394934376562634e61504b76526e38674d547a6e6338303947505572447949504c6e78732f2b6250797a4c434476687878386368336b4758706863494e587865786354676155367a392f446c2b555641692b3057706a4671396e346765394b76526231456f4c667a2f41466c3953316558313739794b50453953594b706e354656466a36796b4479726b72366e58465251677857524e2f583872315361324f6d425436327645527930326a59422f6e647667656143572b793055544b726d625158414362506966725755366c444d396a50645136336f6a782f464b4f36654d7a54386a4a773566586275357334794f5576353665725a6e345675517a30655179344d3349722f4b504b62396a6f4b58346133547a314264526c68386e5678716a75304a3266456b2f726678765370393353496564476c584d384f413850503553622f68586b507272357a732b494c5670654d767553374831732f77446d717a31546e6d5332717453624f7648374279776a5334306d6d6454514e526a395a76564a395054724f796d65385266303077494e6446746978354461326a49474345615a597831504932617241777a59566c446130692f572f6b702f31317655382f3562536252396f30326e505365346445504d3355582b6d66505a6f4f32486f386538595177384d317a35777567367730352b74527162437a4f7832376e547651714c3664676f7670567a393045632f774457464f314136702b6e2f713372656f486f333443335831737a37504d544f564c526e58465358636e4d6d4a6a37587856544f62734f2f7743394c596a2b4f543962356b79694a43395a777a5957727a5738685647333577713357566f624764564455726b792b6c673578793136746d624a525575322f544d35314c316d3146706f73495554774737374b6739784a6d3656367845644f4f52735036612b6661396b4f66423543374c356f593538324578335a594e6d3061586e5678552b6c757954694f664452506f5238503273705877742b65684954474b71655a546a50436377504e582b666238657a38765057375468376d7352354a756871714f615a30556956373250445648304a68713669666854796930782b4c6a514f6c612f595138594b2f5130632b366a485562622f77426c7a7a37784c30782f4e2f786a4d38306b3457623674654c6555654559547544494778443550384b3738374d736f676d2b784a5657554a5a58514167573175715939576b666a70526a375645323075487766794854542b3939364d6f3046666a6e6a34656b7167734e327033646d342b4f2f5158527157523254342f626239543555594a35376e633547446630642b4f314c4530564849344d665a626266655a377833462f412f3039774d44385a505137785851544d78506950707845753751784c5676357542584f55463348636e5942777a327a7257734f74545142735373644e53414a6676356457643137545078432b764f64703368566b772b55317865483553747975636554443246616164536762446b4a4d51664e72512f7a6c416a584c4a78716170706d2b3048635966624b78457a7767555235642b5a483457655134554f462f77445853596e6a506e4f7a66334838636e7974576278482b55623356792b6469776635764448724f48567466746449744e4c655a5837456e6357696169593039574a696664386f7454305a387a3259355937326566376671466b6f55595a6d7a5a72596e386d626776304e43396c326b6a5562505042515572766231686b37337a4f67582f69464b71596d496a7058614c573831387038677846424f567143746e79516237324c36736572304d736f33317a5467374f6248714b3274346c544c657a3255492f6b4b4f712b756f2f3672455248534d4376494f363371425a326e31542f414356394c7645664774665171565a68466f443439735356553646317562423133644c744e452f316b6b4a64456b674849475765387a6f6465366557765a72617738646639354438513566546a3155763959765472755a71654f2b52543054624b6646664777737858746e46686c757262466d396d49363838553349364e4a41744561444e715855694839656e374e716271376264424e662f6b396e724b377848386c2f4f5053504d6570632f6e3368315877354c474f6a667262754d68785a374d6a33536d3165367376734d522b36457549484771654f696b6b6a4e5832324d3070615237682f48504a37595777367541714855757955357357644e5755745764543337543033304f376d44324f4e45384e326758506c61326563773938746a353167512b5a4e596d4d644d4479372f774231482b32526f654f2b622b53666c462b4b766a754776786a796a4e676436792b6a2b484f336d7034646f617330456578357434742f494d44363839303146557a304955504a673356306e317161314d2f7274396e312b487539546861765a734f6358702f733136584d6f736e55733174376a6f5a7932326a2f41434f787053393474442f757758316154797a62366e6647633341414f57663761536d495a6d6431474872682b634a65682f6a724d58786d353948714874594d32744c476354554c683262504745357a4e56755a4d77666a4765686a44515a72664865535264384d79302f416330307439754d386f346262757262354873612f6b4f2f5a6f58374f2b32725a313964704f3633563072716d544f37714e425458797a7459424d6142664c37766861416d4837492b39635469737858345149464b57536d4a45715a5042364d2f535969657563332f41465276537a763737385a477a2f73657a684e464b58666f66614a392b4c515973466446436d4b5553436430347a2f6646504a356461366b3647416267397071465a644c6e362f334d4e714449542b59424437544f316b303746416241714a7632486748456f594c342f6a7037774f554a4555716f4c326c3369702b67426d72334758794764613233664f4167544437784c4563614d3943422b776c4a702b775a434c6c4c6430363174373866584f596f7944357568383379734a724f674a5744706e5176473465735659685447364c61506864503333414c467a7041355539557a39307364316242563753494571487068317166367a37486e6b4e4a46495a4f6c6867766b6a656b766b30725065384f79636a44514c6a6748725a466d4b2f6230442b50394c73347a336b62684139412b6d396b4f645a5a3152392b6f45496e5341744e6e4b55386c6c34745648425878613145774149513738337970397a684d503044732b3162796a3136386874582b472f34652b712f77435a76716c4e3666384170376c61425945427a36586c322f786b2f4d3743684f7963525a553843563968334c6d6577514e683935384c6d433433725773716175705852706e6f50586e2b506e34636266347165526c3667654e2b65787859475a6763395063534c57314d544b6b7a757a58793665505a6b626e6b4f504d6d5850352f443344543970436d3170647973516f48682f31357439537570473261696d2f5837384e5056443871767958385a3955664d767952394d5057543078394d763448553859394e6c364731735a694d314c7078666b614d614273476a5151756f6a594b6665763242544e544d617864525a656d72585470746a546d7472643437612f6a39712b4e654561713052654e654f654c486759772b4a342f682f70396e38785644424871654f3361664d52574f77535a4c5664555154755935633470695355795165347a5679587a614a385a4675656f48356b656f4868757a4d72777230386f324d57555a30624d6c7567433870333134745955567a583035745536395345685a3970626449656f4a4b56756e4f394e4534525853724d636259464a522f6e50354a366d497279746e3067763855634b39486765534c6f70304d61712b51374a4b61736d4b335151624853613377796532705874392b6c484f5a382b7737566b7437714b383057486e492f75382f6733354235356c562f6b70344e343152452f77414d7a4630366d42486d3179386f6762734d4b545255364a7a5a714771686a3074423464304b334f4456536462507655443765333262566976374f62593344793455764b51557434512b36524459326b552f736e6d726d5455316450464b5766426f496e6532686e4f69736b2f49532f724763786833366665415479596c2f49676358322f6e5878594d4b764f5279726971766e373855706578627546597633384c34666a4a33446152394a3341767737586b4852443861766e377955442b585135502b357a48504e6165694c474e37433433664955333659584663392f4f756c4833715161666d6b537050696e6b745043716c3863756b68617252585a552b5671593049515a504d4761656758416455475337506348567534665066396c536d4f4362724d73303850583878326d2f746d656c32543474355544485a4e74506c5a52546139726c755865366f33354373384963394f476d757971527065527867316a46696b41505263723376657347387576625043656f3947763478657538506f6436316544626339336a5536646e526f7a3967704f576132636a43324566786d7456703953456c574d364b374e2b456d6d5045307479685a2f484a2f587a6334373133316d6f374f2b743958492f582f414d644d56622b6c447465476f4b5a69736c6c65645255756e395538534768485972354f723875636e366930676335706f41314a6f44707435343748306b56462b616e346a65522b762f34362b5730654c4a7366366b654863443141394f654f7a714a644c5931596572644c3438695a7932477757726a796669556c487a425470713939446a617347744855696c36353657486b702f38416e4176485576786453503574556c5559577a6931546f6e753862747836592f6d6c314a794262636d366253687270705731564843664e4d52394833764c767069516a35706f59744e4432356638692b6c496f304e6e615a6f646c4d4e484f6876667953356e78456d4e626e564b576b52397a536753746254466a4f485761785055534a382b6a4c48792f4d38697a627932473576385a443946756c5a6d43426642576d70596a38633776765557396f4e347145616a4267705453665844582b5036656f444c4938676532684f6f70725974336c565376687058427152364c596b5331367a34303143517a7237784b763952634e49394439653772546c4264746c66415343572b53396a7a7571314b413247765870575654646f544945796330356e6b55777244364c4347685048642f784272696e377a7679744e4e67454778714e4f7366394c52746e63457365664c4a616565744438755752692b6f49687a6662397955774941616e33546336487342624141475955766f5239434f4b334c2b714861524b6b373349634e664a564a7a6b77767163745974716f6f36414c5743782f36366e425366743459664e6c74766a69593478306c646f4436343063376b4b7a4745696c54796a6c364b4d396f3155665a304364372b4d414f39533768392b32526d4e61646d41457a7450764f3859644b726f2f354d47786a452b65575a50666a466d676c556469574c6f6e574b4a32384532665950324a39776c33324e5859496863397266687649353434457873624f78774649427530426c6f763841354a5173416242304253492b775571447676636b48414b7141444333545a466d2f53345055387075536c34526d31676e462f4835387464584b69636666656362486670692b6c385848546a38704a625164416663634e444f6b4f5631444f353038435a394e6973344c426642704a6e3471644671532f62584d4c5764584f44416438493672432b75502b4b48524f4f385a6135555363306d4c755771576853763069567a557a7456517356457461723641482b4a664b51752b452f7442394e4a6d53707668615645676a6e5432314e714c4f70586d6d2f5153354e594b634877645831335a307535486e79635477317348354250356e55642b454163346b6a373633374d677844565a6e792f5536656935513957386d336e54525a5a333447685169504f545037667269565457694c486538302f3845644b44396e4c426e326e4a67727162782f57365164304f442f325153533535576c4b376d6f425a3658436b624237772b487870476b79426f4742683177536e6d716e57794d564e546d714b4d6d7949544c6f303579467a766179656e5767563934654f39733963712b664b414e34704a2b3369327553664d75464c655567574e4b4e457a784b6b2f57506f4a59584e6c726572646b35637247384e4d386f72456c724970654a45685076427a2b39353168644a3536634f3135426e6f2b504e6973354e524933513278545776694668544a3039435959754f346c3051386377685a553447673770744f644d3355752f7742344a706a6658784471756b61515a4e5658705373745974324c5247744c6e4a6d2f6631744a3148637746645577456c525748776e33356b48496b657655633464734439476a484b476c4f3065336d62314d4f2f526e6c533171725a506f6c553565674865574d2b4e49664374372b50453743443942787a522f6f4d513036732f683035716237506d6b61325263452f476e504f6f6661597a7a642f32547a79713979363531316531504a6a6333346c554d396f522f5536386d616f4f5936587948733039556456564a71625443792b61753257626a574f4b5662506d647a7647734764526e3162424d3075362b744f7a417230326d6e6f4e736d5a7a6c4b7a47564448496a756e545572506c665a4c5059377657596f304d2b4658414231667947446b7049514e58624237506133597a4531727a7578746956384f6677616c4f5871554e646a3349756c736a6e7071575157465577754c415162794d2f6950674e4a4358547944704f7145564a753052796773486775347a51475a326e5768476c4f544148715755644c614c506173324e3635717870535a70392f756153774b4f74323651304d714979746b46347a64526e78677639356b6455737a657643687738304548386c52734a52644c6832644d30645530474c72793972313441496e514e7249716a4e584c546b6230573968732f6c433142306b35646966354c677976495a4b6d66444d34484f4169634b6e47773264436d7766526175376b5542584e654f66764a356f49507251696631685870393873744e576f742f432b2f6c726f4a4a4a2f3535665a787976594e4a4a37586b38767342394b3878656a53557431726378655938304b462f54762b4f747645717a344f644b303072686d6c54336b7679546a7a6d6b6c7176596b694572434436506b5955525a7753614461654e346a6c7656546d5852634f68386b62644a77794375795231773571464a2b4a4b6e42544f66374135782f5942504b4e674c4c6131387061724d586b794d64323253473774434d2f547149793433576a5569577272493833394c37313030505842487a726161326334466632323253777a4e486c794542787961727074534b5253364d6146665774396d677a71585a644573626a2b415a586a39663748794b2b644b656745617750494b376444782f476679577074566a4b6c4c727032737a53572b75697130613557794d4a5363655a3261532b63344356704e53525068674b71536d59694a34546d42744e365a3953724b334a347448553757757a782b6b6f733244327936766376656a323253575939646e5147776f795a654e4253694b5a6770495242334f6a4a532f5a6b65317a305361617644504762746e3456514c3859773051364751694a434f4c304d5742324771696b73736c315a362f61544f632b43594f4a7a516278546a6172672b5a66714e684a6b523936322b5473576c6e315578444d31736e4c4a70584c4e76796854585655586634337268486a6b6f6f344d7754416b2b4c663869436f4a437a4952504179576d4b774d394b464a5a4e5270524d4b4b4b39374a347a644a714e68367956564448695065556c536f414676652b3933656630475632426d32796e517355726656595172436c68646a503467735737327552717464566439636665613678702b4e4d3355316975626f7a69474f7144716773464e455174675766306a576767796b35734d374b715358644334304d6a2b76556c6967574e6c4a657a6b7461674a616672676f734e502f4145646851736c7057696b2f4848756966333935307739744353303967442b7839356334755a3862772b61594b442b463356734149766e55714b725658314d363950484f6954367a6148617271527a354856513178706f5950575a72364b355265447a396f5570436c4845702b483267556d324856334e75686342722b7a335555764a46435073795478707252796f6d4d34454c475555546b5a4d6561442b48334f4e706c385839417179715058363447443267454f376542432b4c74755a58376c3578776d4436466b34536f484c5371716c514734506562545335494c6d41454a48393664516172477a517a634d63384f4f6c35546e4a522f484d37785656792b737a35632f59452b735535546b67446545626a576c6f4153356a36426c4e397163655a5751764f6c716f2b66727839734e4d656a64317149313863566e385152557263303641373977316671663947332b672f61476270385075657a6c4e5165314844506b4471454643395979544336534f643545797145563845656f44683873637270797556784a67556d6a6c6e306d4c7a4b657a76366d4b6c6e57325030412f645472744c61597948512b5258614f3653346e6c315242395958473478577052386e44396652336e445878674974482b4c71653767576d6b31716456717363514b6c466a4a2b564c485142516e2f67663279583045755034776a56316b68474d4a2f4c78584a5a2b6b7079383941553072367a526f786467344e61543458636f756f5553553849452f76356e4b39674b6359667366596b554841477370623739624d692b4a4d383854526e6148775a2f632f526d6c364c705743736a564d537837396c507a2b3850723067344865505446397056505a6f53306936792b5a3746387a3079794d3476586d6f7268624b7575694e56424c4a492f746e514f7a35754f577179546e39412b37624b593136365a4335566c4f697062545930374a7673432b65676f56353945332b44452b7876373968696144306b742f517057706f415932357133536b546a30725a2b61444247754f766b394c482f4a63313474707a6b6977413551366e39492f77554843417564642b7747594b3036356c636b4948586f5563717a2b52382b73334c4447306771797168654d747a55385775686a47456f4f54746d6c4e30446a2f414e594a5530416a30756569546b3257362b5765625370793142706f6c5831504e4e696b64544e39656e7876765a614f6a6d797246722b744d6e706f4d76734756437842396c3074547a76434249367a5346537171613374496450504d64456c643661357a7a3454755a5951394f5931306b445470725068554b4144517152784a43746166714d435570454a716b657834495255343136457270784650375a4f795a387165736d4967544d756a346a357851496f6c626e64657554566d50357730777672533163707171704e6d7042716953705575685555396c48423558376b6d77356c73372f372b47474e73357358536d36544f4b6c37572f634379724d4a697a4c67785530644c35503959705a72506e39335158654c484e4d53723651496b434636465855746b52433663434e44484c2b726e573438776f674b63345073585354736f79566c6e32753438312f434d417537476f446e454a484d5448574d44355a6b7a73314b42594b506d514e487838747a346b5059575454786761796369397968645a53784f705055644663314a77417a2f7742697666384145435479306159494b6736324b656456624e757a715536486171576a5a6f3667444b78334c5a304c644f533141313474364771344b66667a392f304454556a696a35553966416b65664d6d7871567a766d6570475261636348313130424f5339413676624a454478742b443461706b7471366f70526e6a6166475149524d73715a7561693744356d49593441627449666f57446f306143356369344e6e4e6962525a325763763841536b6e4e61637a66767a5664344964642f4c6b4d704849743148774b792b565a6e446a743030576d68613236746157567232653952517369307530434b324f723473314c764a5a456d4e7766445077665839424c5a66763655386a2b36796d77366c654c7170724f5379706852352f5a65546b54614e535a424d6f5a4c5a3752515154715535316673576e74682f31587035426f6d4c2b586231414c30704237466e772f526d62334935394e72667667724f766264387134775957794c6e30704e4c6e5a4c6c4973655866652b654e5a38784b59466661765a526e6350374f6a5372535a565137373731342b5776517078323937526f65786b614b4a76676e597778583868676243553244332f774251464a31364455755a6e42664a6e687a36666635506a4f7374465757484f52545a2b676c704c48693557644641796353617a2b483570775a7a3942716c36725875507a446477733665526264644f566e4a6856617164656849332b512f6952567a6b4b7757583862517446766573616a6f314e39707748536c52363036543878352f77443875392f2b572f4954314679324d3072586a4834354c67366c6442717a615530702f647274354b343354355077354e4172454b5a776430304f4230332f41416c616572543746626559702f30717a7262504a432f6b355a37455346466f4a6f566f43786d58584b53556848656a6a65726c2b67354e796b6463584a67366a336c787a564c34576c37524d526a695055443657654d656d7976524b5855304e4f506438314877624a316554327a756b3647705a6a782f5657684445676e364e43526f5568686d4d795370633737414e59547636345a6d3236492b4561652b5035486e67444157476a62326446464f6a54445a795647746d794d4265356e6c4f7447623438414c3145513539484d3962717563486870594e69526d4433582b59497a6567506b6e71524b4774353154343534397361664d7a4d324c7237732b6d2b476351474e6d746c4b734e624d6d7a2b4f5949494534796545594f613662706d772f365a78783842636554364d656b58674338423266373937794837516a716552533171545137623058324d317a66795156497a5673314c6e4d4e31413070456b2f376e6f366358767246727a326f34434337506848676e694e64464e73466c694a747234487271336c383869356930746c466e5943517343566e756e2b763949794a7676437735675a494433445659522f4c382f6a385670525a6b52347552316a71364d76534c4b7a744855645771567a39643058326d47436450362b6243534f427863794b5755544b61703342343449305871643542726d2f7741637a68723731756f75586d6c6e3358716c56526b516b55732b74566f30665a496e735848556830795a2b727063356976306158665a6e623855774950367273717838755263556c444e4f4958526677396e324c2f644852497768672b437376333869377676736e684577344873624f6e326e394e4d6b316a4e6f3868715a52713270566272555539683769715775465876466f54717071546b647430417a71766b577742584c52372b454841534c4b7a6f6334466733594e316f6d6f7935715576552b6c4c3746344b702b556c5264656e794a6c3161352b58375478444a376f512f763558716d70366f41393655566355722b676f2f774130664e53516b2b6f4c49356c594d626c32347273754a566970574b503655774f6d6b4a6336767476576b716667576f4a356855596b483245546a707777456467556352774d5663684e3646525274345573502b5766656a335373376c306437386647447a394a533830474e4c32702b46706b3367526a64386f443752316c744b2b44744239492f73756d75545939657058556e6e79725536646830664930794a4b567a2f5a47644b582b35792b7a45544d34674357656f64355a51535161546f644b7152453772653664325a32552b4a58394c543136335664664d784252753537435373534b6e7676456a4975424171662b4e316e694e434b4b6549764978553934646c6d5a6e486d4a45324266506c7a2f656f482f532f696b644c2f41462b78505252777739757536765475446974426a6e6c307531702b3858324f364644342b6671734e4e30382f57733748303530726e2b3578394138352f6d5a6748753448544f346a66526251796f6375667375643175313874512f593558506f7a76494657452b79647657457970336673657963306e4c3867676f6e2f586e4543655670356659785745484172375179633951576933516b43676e4b65376c617735533875554c5938774d6e453436652f4d6b472f3841423174752b4543745854742f2b78796247777958717a7836357330356f552f6f793532676f4a6f3347435a424a4173365447635566777546745075367a76384156672f78744e5566483647372f475557785a392f49673738644c6539632f556e6a5a485639726e414c69324f7062377a4158476673486e484a396e3955745850534f49474d33364a6e567072415a357a306b4b3570786b697550596577737534536b6d636f32483768496e766f396a6d746e4259435a3172543873374b2b416461614e6e477263656c72497a62446569336b75575759396f7a735a4f51746c354c5570656b36677553697a3432664438776656726f5a2b69347069746f34417478735553593265527172686c586b7a5a754a32765163574e7235326d6c6b5533374c2f52795568664f7a71434e314c5354656b324a615357566c582b44362b7047474c39526e6b30746b74537332656b794f6846304457464e467a6c7336615a30365777707a70324352664767456e4f4b5a6e324176716a63776258374d685059756357745a6c3575562f4a58767570626956775138556c4561324f6c353236634d6b5530517931642b4f68765570417731544d586a2f6b59717a4f334d79496a64343762506241565663304f76646574725a77594148696e49717741547149585433354a5556584d4a73314274443254554d63706e4a326b62665878454331504e4e76496b314d37787578746d4e4c536c387757636d625336314841574e75664e3967484f4a63757056374749625039655942636f2f6e4c2f564d78453959794e57644457305049326c466f325730767230447562325635554f6e6e5778667675787130726f43686234537a564b347a6b3374584762435036696a2b7661617a4855504942665849784f31747a573155756d6258696a4d55672b7a576b392b6a586e784a2b53677461596e566968346b61525346546e71475a4e4b71594138397747413952385170632b453235614c5a6c497a5852517a5438546f793745536152672b31564f512b7a3966726a2f6454797a366a6c7a4b7473743441314f7a7971753456492f6b6b4758575264412f3141313773696a5172787132367338382f77424e6e6361684b7075724b6c706a37576d494251304731345938774b4f39387872676c6e7a614351706339394e756c53786b46394b50496b36794e4b7976357877334d47676f317a36416d4b7a545054386c2f7741526630474d6d714a744f4f644973674847505043642b6c6274546e72364f65765738656730724b4f49626d7a38665a5576716c4d4368674a6f6b4e784237633441635454526c386b737333495756364d6d674351454942797a4136736a43493662592b684e55346e5a7045704d66764e5a6b756b334948354f684d42315372576b71396e76326574527a3765465656537654616255777a6d575630754d687a5173533663795a55535841436851326a762f41463641537361333679636d32692f675552616c476532466c7869484679543564456e5a3971717a7246765a485256385464425065426566324257445a524d4f7133396e66384c633331452f49377635626551794b376a6569506a2b547a303479355a574646702b622b57546142794732787a6d422f314a526431736b772f584d445071782f587a4f6d783970314d55393345646f656d386b54756d733072724f753374356d6a33714d324c2b5a434f6d743553477a697278646e335a4b536c454f44536d696e3744494f6d62546f446e396363596a4652346f762f414a51486176763548656a6c3359744c376650474c73594c79305970346e56724c4a5448486d785078316c4b4b7064444e656e76794e4663314a4a55796d6563665a365873646632646f67634d30416f50443637706c544849525530346847756133322b3452616837476e6c676f58464c382f4b6d566c4f35796b6e3850534d4b6c4230642f45553975724536526238735a4c63775852756f66454a467a33465144476337594853545251512f4a313676305a6d624775497a555a616166654365656d70384e5037327736444c346e38437466473236425464396b6952476d6a693672506d2b3068764439337966636150744d524c76496e2b444838774b786564526548487949396a4a6e4a2b4b3665614649774d6c716b70627a7448532f374874735a7a357574554275547a6e7a462f77437737583652387767364f7a376e454f4a307a567463386c6e774f766e657532674f6465726e7358544f596c482b32632f5876396e753531667a4e346477354136576c4d326866457a304f6d6c62316243672b3332576d667167592f324f4434514a6b2f794c5959657777346e394230412b5542396132416d57663662702f7742636f6d2f5a734b77436d57696668635163732f425977556b6e39383933413455487663626565382b6866454b394e6e6a38543264316f796538614a5254567650324e4b7943456970676a584a437a6e58635a486e76692f774a5078674a677a2f34774e357845392b2f5a6a6776544a426c637a47526c5252504e394836724244344852732b486d6174684a6b6e6366794a616443696348476d422f4742547a57496d63544936582f32732f375a2f726c2f636c3957496644637a6c3367666f3534725a69586571337168626b68735a6554484c7861354a5047495643584c4e36794b65784d6754636d6e50366641712b58322f465268375272366568584f64317668676630692f782f2f487a306a2f4748306d3857394750514c784750784477727866497a7538696a3539335738676f5a4f75566d767661785845396d672f563049544b6c78766e506c5054556c7749622f586a366c375874613137626850664e647a47794d55476831363734352b30444658504f525231514a577851466c396e4f684d667779723973386f382f5a365343575a4f36786259694a6e6841354b666b62363231747a4e2b767a50314767384138426778716676585a586466443358735154732b4338396d704c485a3872344e44535850313844766452427a6a71452f5846732b394b6363567275735046782b646e357a32655a2b58624f5236412b573766695870626e30365144747a365a6333764a74794a7a6f6c65536c6455734b63346b79366d657166365154545368704137694158385570656e6f3657497a6575367730682f445431437a50532f38712f51377a76576331682b502b6f57542f4d367a712f6e76354b5630386a6233366630482f7741485a504c5977676174446d65784a2f4a2f6a3179336136745974705769736342377939627a48787a59336d365543507031766e6838706f706c717a382b2b2f4e386734356d64727966536e50334d62525638365755483368384d6b714679576d305049327a455a6d4f41315239544d7a56493837643859305a5a63654b4174646c656a50525832786a50473538624676725a755444644c697a33352f365878536a4f614f6c4b7a4b726e7554527258474e73395947716e715a2b52302b5034444336624e5054387479516f646d454d4133737a744241777230744661374236695649555a6f6e6d72553559664e6d69434e62362b6a592b4453744f4d356a413545582b5665555a4e6c2f6b7432396a37586d506e454459737250693173694c4947657673665578346d54734d373258324d304c75703742395970334f4363724444676d376f69755a3278325272782b5a336d75436e30763841532f303836787465676d32727971786e644565305a6e6a2b70797a2b4a4c50475370696b724b4a65624f2f7046573774487a47776e634f633361364d54756d652b427a546d4770585272556b6d7435374b4f4756716e306672693571514a37475863424a66566c6f4a3343574269422f4b587a4a39334236512f4b4a71346f7443583966396165703539584f414c4157314d63784d6f4c5974644445537932645a315a4c48355139767a644467682f5765377257345a51554279576853314b65794f6856517470637577316d43474c576b4b6552384e33746f475552486f6c4d6133657a72564558374f5a376366496574722b774636523257666a6a3677656f556e697a3944766e50714c50342f4a644e4a31683638324e6b4a5a71526c654d72576132666b554e7936692b4755665a585a376a51343164734c7a76624c59314b7875374e5277722f754c303265482f414a722b7672356a7477504a70664d2b62534c313061516a6c3148396a50306a6b477355305a73777659584a4a6c38396b366b7058372b695a705071304d3330612b49372b2f3230667931753964505250344a6476556c395566466f6b7962734161644d3268354450693461323564764a5a714f664e4f6161466b4964667851686775476830774f57686e4a7236654c2b46523055387139595057696559566548594752354f70534d76426868386779364d5a50647249554e42565136556955505a444c5536707a673937314279416d6e3049315463566a737248576369767643505558312f38414c5047762f7741367672566c65433576744375592f54714a7374313757482b676e756d2b7553736c4c3966534c2b48744a6e73556f4175534c6c4151557a4d556965576d37356977664450517a3079384967743870766c38773878332b75716f6c302f4d64642b725a667257534f38587633736a37306f4d62637a65756e6455747930744b5a33797a55394666462f315762327477374d43732f58333137772f522f786a437738336d792f7a72547a344d374c38635865374e6c613357702f6e4c4e5454465469747a63747430624763736651356e7363384b536a2b4834457a70366536654d636f717a3866505466796e5230764c50555479625578333657306c3875336871707479636c3255544b4a417a796b71686b374b787136716b50344b5059344441766744744e4a48653934356177504e392f644468385377767a50387a795047787a5a3839766a7548633754676d6e6e697576717a3262476c5452413152555a2b6776536451796a6e7a712b513073564f4b6b4f576c485a6f37703071326e6f4e62505344386f76794c394558635236552b74666e6e6a47596d457043794c376931504765472f6c304e6e363863316862486e6b412f4b506659507a646335795630633972772f7253314e4f3038314262483543666d46356c2b542f706e34783472354834703435682b545a467332725871354157515131534c48535239524b57564f364e72374e5a505066316a46395a41436f516a4d334b64576d6e476e613078666c48506d6d4b69554b4531443769377a2f72313856796d5779686c446c634d4b46667351506a456a7a7636392f77446d42725076372f5963364f764e587249775333326966415a3156432b4e4439664b3339424c3279656633732f6166324a65777168496a36582f414e562f2b50775036624b2b412b544c2f774459516d51634d2b6b49744c725263412f447a7646395032642b763876754566332f4150524c32382f782f7743415a595058745338432b5364663645564166576649305341584f42664f44784c506b5976322f6f2b383650753642442f782b68486f506c473552537a5255756b564f2f336b53657559667a396e306c71654b6d487a6952374f4a653567695143526d582b4878675267702f4b55726d7051596d346d305674634a7671535a322f78383666636e6943396b394172712b747866764d5437386175394d6669487566752f4d497230454d4a6f4b5643587656797876414130646d7258776574476c647a6e4c57356976625031713041373533633939436c6d525550642b5964383442573835556b50307a4f3549553644597458785432645761374946562b365a66316c392b5039396c492f7072494f4348584d4233636e722b59666e702f716c67534d7471654465634532506e35785a633479794f755a50474e514a4b456b38464c4771614c7663342b4b6337337a563257384177743638554773676f47697a366f4d34644353557056476170645446314f643173374f2f54576a32734d7855713831504c6c4a6b4864676e617064587453336b784d2b41555446464f715664702f62526231494e4261416c4873656b55343835777567784c676334666c4c683530377730746b2f7741542b52417036316f56633670646151546d6d446c756d5631695763492f616d465a6b7a2f6b787057726e764a78435671646d415a7850484e44796a626a7763664e6f31374e746333305a38387954336e577746523757726e683739695832304d35384b782b542f536b51454547705278616354457831466a2b6f336f723669656a75302f4d382f3841484e44786977632b786d6330326156755052433066736b6e503273763534624a2b7254386f63574431744f2f683939354b614b715631496d764156534b704a2b74426a5a2f7253465632576f556648545a4f67714f43743344752f362f774370786a426e73583861316172784e6275714467624464663841476a384a747a312b713858324e2f7939506766676d6d6536756a5365576e62766f6b7a5a613662374d2f7835382f3630454f2b466130653479377868683878484c3044587a5831597048436d367736702b67663442666a6c6a2b526557446f6544586571775a6d4235495a6276716c35585234395a343373515a6d666e34756a732b422b4d432b6a46587a6271715849313531774f4d2b45584455636e7335373631356a7437663452706e2b5765546f65512f697834743350797364475236562b566c6b4a3376454d44786a782f42386c38637130714d374d3868484a385a45476c59723754683754713869625a64705670346e6a4a51392b756e4d52715a2f454e4976526238597657443135666e79656d6e6936396c774e70705a5530317a5a386261696f34524d4e3933577345584d6c34326e6f3941545439623547436646633174713170474c786e4136692b6e48396d443169386c475a586e58716c3466343154597a756a31537a743364785966476e6b374e4a634b6d695a48437964784552474d33334a704776375352684a7a7a3754574d5a72674e6655622b7a326a7758443164696631676a3347536852386c57666870626d454b6b7a3748544374395347584d2b694e613435654f7136746b48737664374f2f70466f39707a4f4e75527042366a6669764234666e4f5a4a35376d55367a564856385645394d557367567a5a5a50314e4676782b7965786162506a4e53316830714d317945732b554749445375704d326d646f706e304a5147483669614a3646635231785a6578445865455a584b54547a4f3047307569704b7842564677732b554453546c752b4f2f354a76667777637131357a58706a715053482f614d2f43742f72542b527a505743764632504b6644505157514e4f6d4d4d7966564e6e6c2b2f424c6e77356a70514b7635463536782b4c6b5a614a7548374d692f6c4f6233756278653061324b626669735058417247324d664f534c7343694d2b395936493263534f6e56354e7137425455384c577659564c4b45705335436a4972506179615266734c34524e6e42766a776b52487a5851386552347966437462555547535a745a69334e6e6c5538696a354e6d7a616135654c5854434b636c73714373573737637a5649704e4a4735534e326550516549722b2b68345436302b7250354d65502b70336a2f707a366e65622b6e474e3651654c3446586c755634567132356d506f63307175614d2b67395033546e31417a786b5853585738397a72314f5639643148317739543253615670746d3056746b6342686d705a45376768786f53676e32496850357235654e43677a4a614e423374584f7a516a6844326348722b636a424a3841326c382f654535496d433161376f36534f6a6e4a763045674c4b776d30453158556f653767664d7168302f666678594b2b524a384d4b4362386f5a7a66707467442f67636964335358494263347479776f466962506b6163636c5534556d76342b382b526952597476782b345065585068396e364c514f356a36674153703659502b735947794a4358714e69493263372b6e7135336c46433365336e442b627045527459532f727534305157772f4a627646744348613863313738485a7944566f34657843386f742f4a76514b32396450727a334a4b4e76334f31745349644a7979732f7950703936664b7a574c597a3344645478372b34762b5857466e6b37463954455030542b4435664b5659486a7a2f4c4a343435475a5a385457636f6c437671616d457765385a78702f436b466c4e4f6e343870396e305a6e6a584d6a56627a4c31503841557631533031372f414b68655737336d2f6b4432773048716555612b70354266587a4c6d484b5772396148796353766b74432b494c68675356653079396e7a4b4c2b72317257764374646f7a796648574969376f4e507436476645637351744a6c74427846597736353865736c742b50376b3439637a2f68517557514a623851713930577431694f45514455334a38745642387357794a6856515a3079796c703750337471304b707936414c6e475a6336614b2f313771477a65366e6f306c374f6a7a74654e70385a444731664359374d594851364d5472426e4a566e4452457958345135524b6d777664734c5775645a4677316339674837466d582b6c6341625a5662567752544b6661355761435935666f4a475a632f666d734d65337a45537955445074474c4f55665861644a2b7766722f414f48394149762b5249772f4a44586c4d69486c625a547a5a4b57745944686e46707042796954336a4f554d396738396a714568373163576f43485454377832362f736b2f6b666c2b6e6e724e355036502b536249512b4e65725758626f65504e726d5a705a63506d4f4a4a30355039476551734b7830724362524d70504936475441366744556c4d7063667456496d737a48776a31522b57713176494a5a3837523332637933424650775530354f566b677270616d645070706137594e393746616d5451393770516452397a36317166655874564c77526e4d59366a574879487878654f7650696a52534676384b74505970574a30574b655a36484d73714b4f75747358514e6b4c75547a7a6955316e506c5a584f774a4b412f72614a6965676a6345476e5271484d75484979355469716a5a506e2f776c6e5671546a756f784b764a492b6a54522f47686e725a393767646248614155317a6d6e332f4e4e49324277326448455263656d4f6264347572536431444d6d336b4d2f5a554a72743250354b466448334a79576c69776c51306d43363875394e464e6e3158557477345238552f3248692f38417a332f494a663548666c74353335396975576e776e7772546d3846395042664355783134486a6c5954545855766b6c396939796967724c79517a2f4a592b777564424b51555070614e4e756c577339712f5561564e5176337730464a7051706d564a554e6241725a386665314d367975734c502b785038413965722f41474e37386e762f414e414a41314f514139496c536246585a345a79496e79715173516c696e71503677386451375a3144695742427779444f7a3746634954576d6861513974494170614a4d4d386368374b4365705247485a632b3670543530384b6d5268315250676f54396371455a2f7741676b3156326b485a784a76384169344677642b55426f43417a797532304b4a6b79617672356c6d537959374f4d356f2f79615a36445665726c704d4679656c526f5675617a6e47494a343139396b616662304a506b6438683857316358576c324e4844386e67646c4667766954727a62575a516b364e61786b6b794b4f484c56314f666c753431374273396a6a396f4838414b6e6452374b2f375933356f4d2f4c2f77424a6c2b4f2b5a3743633331743949667065452b553344675a374e5079504c35666f51426f6e4e6d526a467055505a517842534b56775074684d4579365141792f727a7466533933624d644c4470586b443434745262307836456b5a506c7730526d646a513050494c6166496b49686a304e3665746c466b656c6c644a594a454f32557a6454396267716a5376414e50574c786e443833384d31704e724f79642f426738635a57554245654e6f7350516a30485932564e30665a7a615a546f4463346a4166734331776e3850446f682f63784d784f59486e472f497a3175394a7678393862323944776c507a2b5161475a3542346a344a344933343058654d69463073523854324c39685653757a516e616c79622f696151546e526d433264766165326c62586d4d6a6c4c3672592f7174502b4e6a664e2f4c664d396430506b586d635038414e2b4f702b757254317257754963725430656c2b3643327555457869654f4e494b676354674832474b673372456235694f417144774c78504c4c4b7a62583766632f4d6a30494e54376c4e585747782b652f512b7850485336452f6552696c6a757247646e4c4263365958652f7743547033417a3141395a677368324d4c77716675706d61596c7969707a6675384c695631516274334b5545746568396a37435a35365145482f587349444e5047484e794b3178786e6a6e7646426a755577366d6670414a664c6e62324c7255505a533773505a326c5a59667a35544971417a796f5975456c7036703541744b444b596b2b7a683332387534646d2f49597655664e6f7966555430366e76364f766a34336c683479614f7978556c52476d4c5131736a4e6b43666d63744f666a36455549417450764433554f43582f414350764e474f3864556678702f756f656e666a32466a654e65723146586a2f414a72674f544c5239684772715a4e773448493734776a5057717a35724e5376536c57414a443371397830304e536b31516e7a432f7338357a58736a6443722b3568364135456666347a79724e716c7a2f4a502f4145705549375764487052784b6e355161514a665837737675485134636931586449484f704231506165544b7a3978712f6848467238682f7a36335057507a4f785067666a6d6e2f41424a78756638417a6d6458434f526f526e545967726b547159415a433061454f6a61694e704778584c487a754f644953685230366568746a6a2f63556236692b6a586c66715a364f65653762324d76386b30383637553645732b574a5a795a474f386830715237696b6972577071304d3354504f68704b6b6e544f43784341516d62357072614b3272485163517356373251484b69314b6266305968396e3230537a396970506a355a36486b6c61784a4b4246352b356f456e3567574466736d5038415856667453446a485753554e4c6f554e5a41443068705351547a68794f79427a6c2f5859612b4f7a61467a7361427a4d352f6d796c782f436b707a396c524a76482f4a4d334b3266473958414b584a386e38613234392f453133523343654e584f7464556a785466534257755470537a393578394a705354716630422f714e5839576d4a7a4f653454446238707a504a714a2f4a505558533872312b62337143586b6e714a345a4e7062714d3361654775556d2f356e4f2b6d66526b7a2f496a4c2b53527876324b564f2b4876574c436459492f71496a45597033514c69383939544d664b33664b646e787a31523350575048387278486569637669766d2b527135586b2f67766f356c42486c654b36477856506c785346644549726c6e4a4d36514570714f30676b626c652b6c61384d545862743576714c4630384c303457655836495a576d3342335041504634504b372f56487850346565456571506875396a662b51596f655a787253715446734455304a5a6c55704978756c70456d4c6f6f4d30396a6d3766347537774731486f3149304d2b4b6a756e50507441396662454870637a48544e2b455a4e58556b6a6a594e6a716d46646b706e4a304946795439554553772f6930717a6d637a6b6362505562433150476655487a444a317377353670744779586249554261466471575550666f63304f4c4a63374a5a314a617a34332b77796166364d524e6e513661327a576b5634534b365a4d44704b66643744657467414c474d58324b774b574f686866393853372f7234786674346277623876735451596f4132754332376d3868397061542b39645633725445424e794a35596854385967767458366b34584f6a595647736b2f6433712f5a374666723245704c42304569374a65716b7a586e5357646d45475050324354625a654d6379645753326167306c2b6b6b5857632b4658666231786c384a664c3375504a352f594b72354a2f47747545464e46706b4b724a652f5745524366452b3634354a524d6e4d347a364939377a6e502b354d54564f5068673554342f722b6f2b54364b2b657756536f374730564e446f6c7770704a6172703267644979796e77624f304651686e76366b2b4f397a4158332f46524e6c764141656d71674f4e4f716d6a526d4d7756396165345a665a44787a654a6f397050347467736854786e4235386846595a6635713470673742794767763471394764776c43346630376a5a6e764e592f50704b35527939724f632f77416d4f5877693579637a2f77415453487542767678327a6e62336a63502b337052492f77444c76305056725445726b2b395572492b724f7559703952634e4434445a4257524c2b6e39676b385954552f49433430304367776c366f3636762b56663579505462354834466d6555657157723432724171384e4e303147386d6950535550383055354c6b6e4c4e72644c4d64333866646937724a4f6b3034586c47625443654d78482b75434c34722b4c31344379362f53375a7a616e534e3833386c7766666c533156463375755438544b6e4e4e7448787273454773544d6b6f574b41563950716151702b6d387a554546643266686d50586e494c2b4f65686c6570733457654f6e72623752796148696446476e707a5630596d617a6c6c6c49386e346c6d6770613952594c2b4b694558514a703553513141674b7a654d5a6a694e6b765770766950704c2b5033714635426f6c4d3533696e672b68745a57356d2f666c7973686d583437566f59595772672b5350426c68714c55635046696b2b4146377056674d365a2b78544e72313774772f6e357374353542625579783676317036463271564b4267534e4b32564a725a47326d576868557255684c675278704e6f643733634d69543339723966705870696242615357754261625159365264505564697030463053332f59567945386936587172482b3373427371416664317a75536d3734674c7676396c596a5041646d2f78552f764e2f6b483658763865384c39594c4d54316638586e38666d3863683872766b516e796a7857495155696d533753504c5252766675657775647162554e6b79644e68693261637567485071657a557478727932486f7438582f49333077395151773165585a336c76702f6f2b583432726f65422b54354f55756e7866735030452f587a3650494d577133363955396c62702f6439595574553571674254762b73376a6d6c71394f62614e315976384177554d7277336b336c48696e6b6b486b556b4674564d6e6b7a476879584a546e387a64686b374b475769734a64544d467156742b45754143316d3037454a586c78346959426a3732683751766979644a6730775050516738306b537a4b616944555670325654524d736a7a64494e5479566c54386b616b397342783049536b44734177384b58393244386e625079622f4143383833386b5859712f782f77424e5979394c2f423335667770563348772b5336544e647268454730614675683831415038416b4e4d383449624e525a38502f5071657a36657a5472587075346a6e31457970736775626f6d6c36467353456458743144582f734a61314431304c474a347163533434306e37442f4149525357696e326362335164772f3745483472655a2b6f58722f642b576d72447377654265686b327a524872515a37426975382b614b594948495a7272716d456b7937444b3653555471493278714263686a2b752f317a2b31366b567037754f4e72662b4936482f77447967443161554834316550346e6a564c4a3450556e314578553745382b6e3236707a504775613156744e6e33663932505575716a4e34587a484e7a706e4e4d452f796a38664d665a4b2f744e30384e6f3869586a486a2b763533354e6e2b4e2b6e6d44355a3554354672746b79733378767871477a54317a304b733846545a69687a46314f4953594e7a477148686a33367a754f426749554c5052744d556a4e70322f4c2b7737632f695a2f386e6e2f4f373136726a3366574362452f46727843696e4a4b4c553954656a583567374e75513578335a66694d4c687163536f53393547386f79357a356a353858734835755855397330715269763753333552365876787a2f414c5850346e66676c34626b654c322b63373335432b5935594a704c52386b716b6838627a394f6931673665566935796c6c7757476d4865304670732f6132696d614e6e556970785563562f614e54566e6474393355557a2f6348503055383552346a356c36532b422b502b48362b586658346635416e466a625244546c54614a643179723563776f73757958576e64584665617a3938774130352f72794c5a5066527a472b4c573344584c786e41394669515753586857566e492f693158526c544a4c6e493531616a3156766474556b3153527075324a3263476668716d6b705366574a624b5859375461303934445945556c6d2f64546e5967785974475a77322b5164426c336a555750634a5767727568624f4c617331516c3854704a4a5766485a4e314e535579417273634452542b36683635542b6d666f756670426c376f542b5265575666553866386151594e3742347a4f42376c486b5947696a7638666d6c507461535059566c5452763158484348516b457833396e707574756e345235744d3870595a4f39706c2b46584c5266584a5149796342564445736737784c62433653666136666a65634271302f636e6f574a6578696e6474756247336a674f702b6f41695755354a344a56726947592f74487a6e436e4f6153777036705a6e6531314379635164396e4f6e773063446e79483351485272692b4d4f556d77676459444a30742b3031436774716f7550506c6c7a377554665744616e6a5748312b384575302b7969676568374f633464687056544535504b6d4c436b2b616c557471625a71464e5a556b337a564e724c703151705336666a5065524e4439546e39644c414d3651486a594b477056586d5245755671354b622f414f496d54397044326c4c2b6e66464f485a357837646c6d6e684f63302b547a5542394d4b2f616476683465504839506f4e6c76784d39643972386676573378447933554c5476774e46632b52355a6d34656a4c4776795078767969466d64795937474c57596b71353039583248317154787366505a304f544a4d36617461337274696576694f6a6e3530666c4a4834376d364b3848773250773253316f38394d664645567261666a5649707a74696655626d3661666b7a58524d2f6e7575465a736c64527044594e66796e4d3637485230383966714f4b58706834702f38414f4a36752b446550376257424e35763572674c336446797a616c63586b476d685731627961534e33434e576270575545684b33474854346c58766230462f31317a4f4b327838492f6f432f6e7434426a656a76397348316d3949665166774633504766482f5476785830396b384d776b32424c6b5737345a2f6867624768703064347966575264754c326e50702f546a726374314c756b327072764730706d3274573172392b3457312b4c506f4234332b4d6e34552b6e506f6634336f654c393869385739454b7264784e554e57656a56387038687a6647392f5a38673035394c50574b364338774855554832464e393767644a3376774a6f513675706532707132765064493831586e412b582b443331616d627062586a32684835432b6e4e4b494e684a654b3149304d765759766d6a462f49444c5150324a2b304b486e38636c636468645a474542774f37717a4534694279712f4f7a513838386738377a6458796e2b52475772436a79635451664845726d677546634b4b7846433669596d506a4a574d553376414135724665376f4161576c7670524749694f47636a714c2f5a772f4c4e754434787365692f6c306d6b79664642644750755635374878356d4e6461566a7159767466474f504b704e546e56644e6f44384a2f62393755685a4e56683754703770335150564e6f346b50715836644d35786c4f49324b654c544e7939546766623558524b2b377950734f45584b58576464633477704e6a71466651392f797070427a5134596e45356a75476d586c586f6c2b53304f784c6133386a504a71504663326e34636432326a48706f777730455336477a5071646f2b50376851546c4b34667139724439674d36666d5775354a61526654373950694a333450344a2b566552727a775966354b58582b4e346c446e6147547459396c6c446e6e57555a5532334f64773561766b6f454c766638636954734472453074483232524d3656735a303859473172393633517a7935746145484b7a303049625a41766475515768456958497376307871735965656b6171714574486c676a594d437a6633346f6154546d504f392f65372f4937786a776230567a6653544c306b4e387a382f52504e52444d75723775566b3532754e56656a6f5473734d66346a7051723470523972363830717170645651443348326579306d393930396d6f38715555596e4f35594577506b516a514d38336866796b6e487a457951676b4569554b2b7559746e36482f41477437535a6e3333386a647a734734666f2f343075484b6851324a464d4f6d624c72703145594c70537537506d6e6a796b52736d30687370496957686e45393437336b6d6371586663442b6f6d597a786e6a4932353952394d7647505472545264745069664668444a4a713236694d2b7446546b663841696473557930526852645632367968783870597735777a565468387945724b7a4b735a6e7947765834722f6c425a6a655557656c7a707850787a7943336a7356533350706868387279454c6d37624c6b6e5031316d625656502b327a704948324f736b653136567831414f6d70707a45627538644f4e656d625a546e65545948766b3264427554444d6d5456726e303539774844526f645364497a4a4d58757755704a616a414b44323435794b4d71485763784777666a316c7559666c7465636f57353064457569733837434f536e447a5a7072392b432f46317749677a5957537530414e66374f57744d62426836745457546e53323376366a7a536573486b4566715036316572506e4d315a3679744c7a50527255364e796d343175614e7a426a613769756e796963422b4d32714e66526230506d3450547044686463524e613169656b6950654962656836666558654c65612b4c39376a376e672b74692b56596e304154476662504636734f306d70613978554c2b536f61435978587a45527a5466352f45384f54576e466f7445383234652f7743385a782f536e2b34583645656c5035466550717a615a504a2f54445158543452627058756978504a75565a30766b6e6a4f7176537953687a627066504d33794439637245453045464633767142494e48794a6d326865314f7362684e2f784354732b472b42596d506f68723547646b576e49334936334c356e4f52693858624a6639444b792f6c546f667861625065706b6a666454484d6f7157664839534b4c346d63396344704f58703934463675346b3075316a2b4e616377727271626b3638306c55314d7436506b624e59315a4547613775484f342b394a58794f61656a3768634832652f316875745765765161722b582f3279505358792f613864386c7776546e3034675078796d4c533854333837784341744c786e56487363593057764e4d736d7071555a4e69526e66643172434b4e79516150546c7254704776614f45326d5a456a394a50784a7950546e5a76726b69747935643632323357586e557a78315433766e466575374e776d37557a4631635452742f4a504245684c50745467594b4b556f2f367262566d5a34783046362b717670566e6250596376507452485a794a766a386f77596c485a70727a756a7a394f314e51536b31304363333744696e4c674e2b4361785876635a6e5371746259345430484b315839727a42483159386d395a32654957655237587142695534346e5a7037476c686167464d734b61583531657438634f314a4c6e396c412b4d544451304a335062326b376e79644876376264753773696d6656372b326e34583456364e655458324c3877334865435535586d486366797237336d615a6355776357337a6b726550374f78586a396c505a303072704d4b592b5a3046776d644539743636387a61656e4d504c372b4a6d396c666a482f644f526965454870322b462b4e2b725776345768382b6e7a4e767038635462524e38374e7953706f73507559792b64683962384c5a6a502f4e7462422b7433616d4c2b7a784d397641393850692f6c53573837424757766f53787938546c432b6a4a3157524f74477a4c585965672b476457673479336c6f644e7971372f41484f72397446712f745764387357596d53444b6c723379637963316b794947726f7273306a674f6462716842666b7565357a7665544e306751775a4a365548326672426b765a79625038414a392f754e4c764a76376433346b2b552b6f2f50567a66394d4d435051554f50726132746856486b5a6e6b3147616b646d6a62327346326b4c6273746d6271636d63424e692b614f6c7247506333346142326a5731497074692b5a486d492f2b55722b6833696e68763548656a3372563456697759336a76716e3661483479774278437a38374f302f542f5354673857467551733539496e5a3839484a657270642f31706a7045786b594a7137665962544e4a70507757486d355a3731566d546c3658547a477363436d4c3732683439477042635037717856385053575865437766325a5455382b466855552f46364962725431334d31584f4b6461747654597a6c54564b503450612f6a336c53354b79754b566e4f6f464c513969675a37792f774350332f515a324f58497838414749436a37503151564b552f5538513461306a524f3475635a376c4f6f506f642f5842396e374c32492f774258395a316a7261522b34766e31706b58756a564d4e6970714579557a456c664a65554c4872755a31683959544b4e43662f414237372f62394d2b6b48466335306f2b4c6c2f342f38415162304e5749304f553058693268645053543742537251613770437a696a577863627570545158742b586e2b734b513450564a4556616761732b3047623066376e544c3466485037307849486f446f3859735234507446662b6f75477a6764393445342b3834514648437365454351525a663779364e436a3670506a494f6d6b554c4e2f506175487265436a2b4a4d795a7862684555394f636c646374786d662b596370615a7a746a686b583336452f6a5835332b53327035586965444a535770346a6e6430727271796d2b776563427a706f4f70507869565264754a49734d754853566449644d6542326751727161735569756669676573582b78663647796544656b336c2b2f58614b642f61387a6e5858424c5976697166483835555a716f6441744c315235644f67354a546b61752f45784b444150654a484c3533745675617364773754657676344e654965756669755861755a32727a4630593953444a71736d6e385469654e466b47467a79524d4358414b346247536d735871644f37356e66454a4f43796a2b75616d744e4a3478676146382f7447352f6947397364394d504561504461356e324a64752b4e2b56317431704a65684c585042324f4649474f47307963504a625242785470374d616750374c703966384145544d63316831302f465030453276464835326473596e363059527a715754576e4f36376b766a39535741744b42336e395734506a316a665537367a674f6d6b4434466c50786435395455693044563738302f5476317438413775366e70544176427a4e617a4d77356134702f4a3773474c4f7531744371637155523249586d786977586434523138536e3257644f59366272414c5453745765324f63586a5450376c47627672717a2f4e66526e797a77487261494b505437643854356936766b345365327533537432314546732b31473456306b7a704f4e4e5836435946777a305563326e33474f4e6256734f6f6e706e365937666d66682b696a7a62302b3050454565545a312f6875376956494c5138562b6d6158537979414f746f4d4c557a654a304854746c5852596b684e696b79484441423163383272576546682f4f6c2f4a543057325053623868505850307a30536952726548656665637763746c6a71434a38635736544a6f6f50736f2f584a2b5a62456b6a6e524e4c666d375148764e52385032744f2b36745a377032694b654a2b6b346556366b463751713052666361585a2b55394d633058584b6e524a484e72364352542f49424f53544756784c703443576c4d6257697268784e735235445a3777333037385678526e7a375046597443696473447375752b356e6457452b6d747242526d4f2f552b724b52527a4371525051417774634247364f52744a316d5a6d65462f314675654d534f575937656e53366156783132654b5431484c426d4c654f785a73577a48555773415337314f6554472f4a374638447070536b512f5a4c3758553768366c50376350397072616b384c7766563738696655577677334230737177386277724c37507165525835353747344578706b6e4c393573337a66566c574b4d394e704b2b5259664330546358427261385a6d744b376f486372307177507738384b336534474236552b4736486d4756316a5633616345653975717278316a546f3756636b776e3944632b54575878356a796b756943684c33716d414a755730366b786d62636f337352735130795a6a436d7a5136764f547053523761352f6d7a342f34346141536874736f2f5548345639657a2f7742335059424e51494c48336c5152392b313568546655566d443232654435494a7135394371616543704645706a516364575342534c63354d7676456d4e396f75554b6539576266686a456545447a656633555037596d2f774354374f762b532f34372b4b2f7964354b50563952764173326b354e436f7331542f414f51322f4845314f626e7571614b557430493173486a302f774366424130676b757a5131346950643374782b477738394f4c705561476c526a37504a68636c357174545174334e624b315674586d67446c55352f7678614773736a354f6b457a752f52757039766563457a375157686652516234543062315361543561304464664a617470756757306d7931746c57455a4f30686a2f356f4b6239664e79677841766d43514a34623948566c6a782f6b48564c4f49737a6764694d6d732b425652744e5038654b526c4a55723643662b6e66397669564a6e426f634e6f313561385133547652784f5034466c70546f51716d61663774576a6c384b756d57554d354e4a4f446e2b4e44702b394e2f576d3051447642366c79674b774a55766b73396a52712f54546b354a795068543834787161614d52467461374c50633353584f3549736f6248774b4150397244334a704177534e696b36444c4f385a6f6b55564d764b666556676e4545576b33697a524c53676e52385156526671552b744170756a2f75736e3466416275726a425a38675a4f39515370716d2b515a6245356b6a325757336330587975392f79646e496a4e776445476d373750484573306a30492f38636165365832614f7a74587835734f643936417456516e504b715a3753735732376e595a364161614548376e652f3244443850417043534b592b4c75643356673754736453695233436d70704648484c6e536d744b4a484d35596249526f4633365633672f5439716c664230666448647934416e5a322f705a696c5133545a31642f756b6f533570534b6c34766b4b5844624e5471496f6857776953666142466e666a2b7454396b6d6a37425245524d7a33794d73322b47576a376266764e6d792b412f724d6a2b4f716b4b68734d343970557175776759774b70566e5173474373426d61452f4f394c686b78474d593444355739427254575865615443712f6b6d5864505065396b38475864704d4244365850375078546c56634468632f794c336646537341396e39534377313576593964386a364e5765776a5a4a5145457a435547657557715a54776f7a525859736f624b4b2b4c3666462f723343524537324251426e346364437031734743636d547a6f7136537a79637651566e6c6433363358696b2b5836775a395766305846795a56494a42766569526b315142462f53316937695070624c6453396b45765033796471566f3052357467346a6a594442585a484b6645556e3744593533534644666573617a694d324577736e675355444d2b6d716452746e5a794e49487150497368673271714f4f6167592f75386a2f6a79494663634851632f77446251633465485951764e386a444f5a42784c32547a53773161476f62655372644e4f74553532614d65684a4b5a4d713475775a7a574a66376d3649443867676250684243726330573659726f6176536c6b695a497879546665396a45495a4c504730676f547971706e4579383650574f393361584c6f55356449453046476552584b304861374651557949534b6866556f46486e6c7953717467356e5034743146556f777358655a2b7876476a6561774d474b48676769722b57304c356554716a7757495377352b456c4331735a63377469355151784a395551797468367869533444467072576674496c554342536178437471725868424d4e4a4b7356566f726c616e4f4f47644a4d483658744c674d54306b3535423876514d707457615a58546f483375726a6c694c53506d2f78656e3948646f6e6c577078356d7a72783556494c6a6e745a6e6a78302b30493063646d7356776d57395550614b6e425959556b4a456b78563463766641695437437059484b644246474e476969666e41506a626b577075716f784d39756e334e58332b4c61776275633651392b796f4b51446e434955387348325a566d54505838697447734b5a2f7132333652614b38506a4c55366d6b48494654584f476a51584f745047733638425a7a2f556e6e46455130676a6d36436d4e5a6b38476c716a6b6d3552715174476d375349754c6534496939794753733673744241703653757443437051664e524c2f6c47497a6e4845575453586a544270666953726b326f4a6e7961374e47426f78794c7a6f714f2f71526a3647456b6b59597773363574667747624143515334446770707a6646326658674b3871536e447170664b766b31585a36575030326f6f5a39583243492f77416c5461797854726f6639634e4857383738662f4879302f483055744454723569474b3032486e73705a43576a693670444d3253585953556d5530614b466136496e506a533245562b314c32667466516335786e384c32444d63594f2b65575a3061556d724c377136784e537876576d6e677a72314e4e7a64484f6969337144726f396a6d57725a33355039386c377a4230356350763942463876512b31335268666c35536f46784f4245376c624c684743303261554d4577576744767274573549496e476850414a5042736e4135303945456c6a7136655a314c39444f32463965697a49676a526d5a64544d637a646c664e71597a68564e62513677766d6d5878626c5458422f32763958794b514659655771444a4a534c61442f584c2b72555646546550314f33776a4a62746d6855507441676f3070624779493448524e314d7434636f4b672f366d497a4f42426239576c73795756336c4d6c314e7465566f467255354638304d49334b315a49354c2f59374c636e505369684b6a362f334761512b45353741496f47302f343262562b6e6d2b63516b4b3269762b4f3479396945616a4d4b433962695372324e77325558505a56446e3039573066726d4c6c4a636279745038416b6f314f5862343952375a50516a62524c366665473474393157707068346172345230412b427a6d31546b7959584e6f2b3130584d6a686e454f4959316a6953694e4e5a2f586136377a4c3134326d4f673276766477635a62696e6f64634e64647466455366537933357648734c4f6f376d73632b6c30724c697a3238555851574e4d7a6e4d5076783837526d444b4b564d4b536c554c6448354d765042483349526965515a393261535779756d6e4e557568514f6f4e507449476768316b7870424a57556b51433355665a7a554e7a71354f736e62524357634c4372706a436a4a47614662617532664a2f794a5445716353643159324e5a52326c796664304d5a5736504666734e6344374e7a6e4d396e616c525443757059797a6d6b66683975645162705a566744466d6e70557264433172476d716341446830415a6e637a30565a7255746f654d4d5459702b32652f566f42637a6a686c3479503436682b2f38414437472b3849314c36436956547741665770626c6c53637433637961774e647a796d7a35366f716a53425a43656d54562b314c464d466476655036664866437a7378796770787242443630726248387a49684178726d46477575493171736f4f7557723236517046676155345a38363642636c3378635053574a4168765875634567634643694b52765572485055517936476a6d4c51325739714a755764546e6f573337784d686c5a7a766630376e5470656c663346474b33674731383142634e3751344c4953517a6b39667a505a4d732f35444e4f4874514d454b466c6e54722b775531786b5152794349384533394d444b647a364e50545246397734517655417a6f5a326f307a6a484564695a4f786e316b5a56706e436a7132664b355845635451366b4b546348344e325a6239466f71303678422f62756535614638482b51636e695a3572616570356f684f2b564644514f78516974494f712b48366a2b546868312b69366537506b5a56456f4835763155305465316a725539736b396c4b7072426e59366c6b50583168494b5357747a434c687634734641786d6c314232624b616443796e475a44554b33364c4e566a546f666b30636646505044724e4752677a79546964416361366e3568643872766250384130444a79637841703458624b31357070344a364861716157614c537a6573454d392f7334754f73724530715035677059644c5244355345317341326e51626c5857566138712f30786c53333036476a4179614230363741546a4a584a4f3459352b614448414d2f61326439695159356f42387745446b5577487175524c594b624a76342b614e51445a5554356f4d3451444c5378467956315239736a5162766b4143614c6b7336373341495368395333324c525364796c4d425572775a736d716856476b457366307a2f6a3734657630484a4b4d6f532b4d75392b475976306c4e483663344a423369483178385a7173716547665854393554416f63356568584f664f314f2f68364f4c6f4c366f66364454376b4a544f41764c767972414b4b71646f6679744b7a776f70374e5371665974534e71724b2f6573694b4a4c6a546e6949355a44386c4b556e513832396a64332f4d6c5442774d47383731465767706c566b366a686543594c485a7174454f517838737379476647313155685a77726c4f656d51655566437635574a5433704144704a2b4e78395a5379723243536b4e7a45734e6b386b7255386f69513931576a6b726f726c393266597375714a67672b6b7a733937686d6341472b585374794a516c4b654361726f4f676f494271304b42514a44703644736d5a626d6e4757395643507562306673386a443742304153412f6f486a56786c455936447144766a526f2f636d6130366b5a6f7766595859303756546a7a35714a5745706e2b784e72503564715843513834435143544163436e7a49696e527955745a452b582b3870674163444a5557564350646167453063756a6845546f583779663748664d7a7043796f476b517933386134476c335630744c63555a6948663548694d3232357270782f593964555438385670346d5942575030502f65546964385470354348746d346d7749744e58625835326664495047535336542b58717a4a32614446386c6350787975752f374b684d762b6d77334153314459547842307830467a78716579546b683663436d664152787a7a3136443857654a6c6f4c73577969703838767a2f744d51702b6d46464375493653694d47573632334c6869304b2f6a6b30377046493257704a45395567612f52646f70574e59385a592f374334785477754b346e3451374b4d34702b4a5578475a7747626b3279446e3148566d5a787531612f6770505437654e4e39716442784f7447577146477350456e48514c307a7a4d6c2b4b62676d345774634d42726e36444a4f596c7455675139594f666d68564b2f77437854544a416e51444c6b696256317363645171594e59513150705971624b623369692f64682f7742577632704378756a4474615553384a3164537771306649507370744f7963714a4e69627630434c7364524b637346676446544c76766a53746e546b6c5364524b636343364c716e5a2b34686275567a302b4f7054565a7035566531313057714b436f6358305844704c576f6e4f56376a6b64396a674348656b734573784770546f543848547531666a436d362b5368734452563144584b5a6958346b33796f49677a334a654c5065704a2f7a4861574a5542705359454e6e5a796e65307832522f6b6a4149306a7363304e494b73316e48563048704e585939727338312f774450774d64516b587064784b54567a2f634770586d473276543871354462684b6233782b67714137316b4d795632366e5273686e545a74564e74775864586c356656706b4d70776f4a535866736e714d643469496a45446a4e2b52486f316f656f667274356a743038784a2f4763764c7a327564633547564a6f78777a665a6f7168694448465a5a767a454a5364724837482f57465355316852376e64464c374b566758373662656e506f3136655a305655504637577769522b5333553867386c354e6c61327337697866624d456c52547753726e7a556b75552b663732683769483266572b7a533137576e41335a394b5055682b3557474e62543143576f5a33667430627145516c6b6832686d68326274574f30335937474638517342677270392f4c7941466777437974585043654577432f717a2b5465486a612f6379356e6a6e736f6c79343339445a30613946443156353677736d756e393746542b354e416773515934617750342f754a2b49663669744f45356a497056587279477638414b614b352f7742416e54303649703942773044436854676b53754d707843704954737648726452696e72544e57624c4163396a31586d4a6a724169462f774352435042396c584d6d37573867703038364d6e6b63654b762b4d367a7557727557686d6c38766171754a476635566c4b70744a4a56595379446975425075356d4a794b4338323966664e2f5072655a6d6a58496346786447584477346647304e6f625830366f4c6334516e52526d35374e416333686b5247496664722b51716e43752b6d385569504d4d664745622f6b7432724f626458665a48334d4d51374b357265492b584a704250747631672f6b50662f47334c6755533654614d77526737336442544a6d6131377343582b536564476e532b4576725a624b363153615053515765724f622f486b462b55303674775a717141773079395856336f7137516c4e4a73443565755657744f2b594651622f6c7275445a4c786b2f33465145686852313368544a6f4a567954694f4c686f6334786e64354136566c5837426466534c68384379635256654969497841714d6d5350357873624f51744a51754b2b4335303839725a64577a53664f6632553966516f785a4f6c362b67722f4141704272562f47726e587947504e614b614f7536314b2f6d4a57317950507067654b5531305435665859744473314a6d4f484e7a574c354c666c2f772b454148374845704f6b4b38323978594639714366554c4a794e447136704a6b36313946744648794c716279644e704a59716d7236717065416a6e3743384b654e3539786f706d496d5a78416956666d5375314478335a6e456c64735a63496368613761574470457669356532736f68734a3036304a42614a793777424d414872676155374c654159303438334e53664e565246666d4d397854626d506d4d2f6b7279355151305a7a364e417547736756523849457a702b7a356e5542376b6966553239353543575735775a632f5049624c42623131485a5a6a73736b5574536b30692f77436f76726c635a5647482b4b65716278777559426b5a5555416b4b4b5a6d63514b7472386d75396d614664485137462f3274423037655a374b4756324a594877784e2b483438644a565168317675534e674f377954764f675466367637767a415852336e4f7a4670556c71382f4f367a74686f5738475139747059704855642b46434e52595a2b6e6d6b53754433695a77514a382f786134375672742b6369473959586531524930474654554969746a365064316c585844512b4f4a58754270615370782f665630734f39632f364363666d344c5036734d5a4e6b77427963783836365a61484d6d7553756c44315a7a78396b55615572476b72467a6a4b493845362b7045512b63775a497433784d5250574d69433665746d6973336b78757367336c6271334c307337546b6d56334e3937356671532b3149334f736e734364526355645a3438713536524d6b306342386e626f5052706344703472342b58557835734452526e5748585176724d664d485459766775366b6339363641637233634d71465269786f4f594577507978487a52547153694c6d6a6e537839556d515034484e30456f4770554b4b4f537637596d76537a364f7a316364783144625063664434697066416772504a4551723049305266666c756a564e5a614e677a6550777136315374437347746e5a50726141546e567836552f37672b3648764c73796a6d2f6f4369664a657a6f465a4b3135364b6148365979574b4d2b6e4c79764e576f382b334e785838753075593639486a744561532f666659734137376b777a67793770614a327358715676546f78634b434e4b4532552f446349616c5830757a7873515765736d66524a684b63306e48657a2f41766b2b4a4945382f667a504739554e4731374e58517a4f75374e69354b756358497a73746c6a646e4d65756741566432482b4a59584744535155787a6a396962324c4f614a694a6a456a5837314539532b356c3239325858304e7252726f663438314e79476551456e7442526d7275513974794332744d632f77435a674e34514a4d4648396e6971505a386c6f695a36514b69763061646650727a445a75756337552b2f715a6b5277573154367267534f686a3830753241515a737a4577547a6f35314c654f427376666b4c715a6833455a712b5955324b346979684b2b7452374e503548314674376364444473724857684a6e33487173314f306b6c35742b686d7a645638772f416b6339507644754e756e6f74756b386676706d574e44753755624f712b586d39537947302f6b73776451307877746f6e68564a3058636331523048522f6b71623574424e4d32444b532f683765784a6e674437423071324e316165563130707a5853575379364f62336777396f537669365564594c4167525231704f70577a2b7365667a2b34626e75597679575a6b6b2f315144524e736a7338464e2f6c4c4b4e4854314632634369744530592f7836367544323576746c616445335672447131663032573842586d745975682f4c4b4c414d3436732b4b366867746a456474765a30337366324b4556765347615566503841476b424a426d3235547a393736644b646d4163753068565a326e2f307936326d617861713652475a6b31554f784e6e46565076782f52524c56797177314f576e325047686178524b722f42616243612b4f3155713074435671333547646e317961444e53704f796f4574654c65563130592f6c65313749347a5975686f506e2b526766572f517263316b7979787632704254706f766c744257764c783843792b747054364f6a4155644d5838666f75504f7a6c36746f4c6463544530386641317857756744677054642f755655454e33577a322b4e71625231427130716c63756d31744f634d36654c75654d3271314c73757234686e46795a76673044554654434e66474c4e70414e4d78475a694236612f37484e4a6150346f2b7158565774746e3050506c386d704850516574705764386267356f6f377031396579704b4a2f6d4839564131536c6862492f76306b4b556e6939712f7a612b75386465493266465054646e453236654b7a4e54465478553976312f76353132644f7645672b716161467a6956526f39364a34334e634941785a47646b65593850332f77416f46753658354e2b6b7558637a51494a765466546b6b7264723462654e632f54484b6c30686b35513675665050343647416d316774706d44324f57436566436e76396b783775324f75365035385277354d617266443035665955644a4768594e4f6a56594b39494b6e49636f766b6b307246746e614e454d364b326768774170337548334e30506358534b76597863646a416b557877494c37492f55617044453834686a55644236462f4a326b724a33462b696e555a6666614170482f41423676546a65766e412b78765247454f6975677535484f67476d676762642b79624f794a394c46424b49756e3449306335776d6734762b793158574a506f697a7634644d44445355324f73737574692b395870506238507466564c3268676c55706c444474597979727442536442542b7549554f5072575438365a4d563737534347326f796f67336335736f48707058382f512b4850724c526c4a503646765071694d6f3959517441464b455038416f2f416f5065502b436b39617942557462416478704e6c5538466f476b78584a426d75553961592f63755a4762305068364e44424b672b6a77432f396f2f72322b35616e6645423337624166394635487a3535776c5949722b42487855437a32677955784d68534c446c2f5376382f6a494f544b6b424e50732f702b6637665958676457566e2b5053383070574c762f4149314b714a7849577373453957696952464e524a533070374b686a73597a706f6f352f6b59683263684f764d647276375850396a3731632f4e376138633955765644504c306d2f4775665359376d7062587259336c6e7170474655634b3476446b614f703031346f7054563175702b2f614859446941776e5376344f6258397172707874727a616e394237357652443058394a767854394b2f482f414571394766446f764576543377365055794d65444f4a3872366143664b746d706f33713976783754714d755637752b30776336777a2b45434c2f54354e7257314c6272573572422f7743622b57486b515758523557664e584e456847626e7134764e326230514c5830426c52646f452b716463726c703676342f6a4e76752f61654879616b45526d635a774f6333354c666b333462366434336c766b2f6e586e3270346a6e2b4f5a34713361625674686a5a697a37714c413155374d7448515a6439657a3636786d556276754a5370664b6661354a625530356d6352586350444c2f63642f75622b622f6c6e3552712b50384169666b757a6b2b6d4f4e52627a454d7052585835544957327569656e54476257714f72345a353873566b446e6334755a333736664744543331765a2f5a3430347a4e6559636d693136716f55773957726a46477058546c42636b626157456d657356717a76306e34555270576179486f423876734e494550522f726f32383265345a7666584f58314f4b76452b6462394b654e4c4730725632337135506e55656c3061506c476233437331384b6736574e2f7a612f77445a526a667836594871552f415838307839522f5350784c7737314a656a643873385a4b544c6d386a6f37542f47545a43694a504a7458597266523979645761464573365a3053434a68556831674a5069364f4457307357744e654132523879396250465963426e5a504f736e7371783678305165527a316a5072704c51636e72706150456144304945707a3579354b34367155757050344f4f456d642f724f4b7a6e736a6d76367865742f665570586c2b58347649456561333632507437624b4e6974696d57366970375a4d2b6d2f445850473530474f6b454a524963626e33676f55417951686f32725862776b566c347434534f6634373548366e6559646e7a66485973494733347338355854654b773158544356656e53697a6a52594878796a6d696e6a503237565a4e45587342524b7661654f794f6e6836387879443952765550553954764f396a7a6d6d2f51306676614767475a33553056364c496f66746674535756336c7879616e7a3243624153766e50306c704c497946707a39566162615441676a53557174457178525a6359386f5761656f51356449744679455474504e44745837734d6d724c6969442f446f6b706f4130757667396549473957735a587054542f414e64594f59756b77344d354837574e4a6866574a66535431613171486e7775562b7a2f4147592b3369684f33782f543951752f6e306a414e4a7066596377707a6d37394678636d4578515a644a37466d6b756b6e322b7743455061416c4e33342b382b4b65376c77503645763461346670522b4733397562304b38373951764b7376774c776550306756353335747a6633705a5636573335656a6d35717936503150695a6476563064795a594579636638314359314c6b63436a7358346d747531646130563572626834772f77412f76572f30363965767977395550577a306c79372f415035743976616a6a38576e38736d4a486b6865503545626a58556157495747664f35456f677064496d314b66616b33574b414c6d2b6e6f3176545472703237516f6630743955764e2f523779664f39522f414e7254786472787971663669653955764733783973374b737662782f756447324d48664a78676538763259412b632f637854516d61356a62507844306a2f676e2f414850764666575673666976714234317a776a7937783455303646754c706246734e4c7466577576723130706c6f49655976644b70694c666d5a78686e70657736426d3752482f58487236453134786264413637352f712f36423569644c56356f4b314754575636714563475461783441386179574331544e446d35327a55643268306647436c6b30427a7a433572495952712b486e32332f46393547744871372b637a2f4c737a64384a395076452f49664a644a4f516a4d6474504c5976566c32484f363356744b534541375a6771385846697142464a363039667930676a357674693239644c4847335161582b47656d3278706563376e6c66715674585865543758563031616e3270642f426a717a4a394b694c67593855376d4c536c673538435a7372726b302f377632797a34727662724e6f78696f36626548344d3368586a39635a4e58726550757858616938476d354976616c4d74694b64422b636a514e6d4c342f544e39656c74434b475651563554426f2b4b65777141776d64383437756f3854483555656f476836672f6b50363065575857783155376e6d4f6e48467152314b6145383256553644737566564e642b71734e556265385a786f4e4a6e55386233676531516631366d6e5374615569653855333747446d754869587142554d736965517863636f71474d6463785650367161516c517a4e6a4d443578664647594a636a6a75766f544179793764435943656a3256712b53433659655037325571564a6a597847646e5a7451732f3064546e4c6163776753364a7a543863383456676472397151764c4c7a587a6d70746f58425672565576343263666c6b6d373952497572367043365754306656715730336670596d6e7673436a2f6a6f557845346e4d437239484972674e66474c506b396e54646c334e2f6361366f564d6f353176536f6f415a2f3352502b2b666f76384145774d5449792f352f72614a696567654c2f644c5a2b6a584d547555643730316459625571486e31312b30434c342b667461316d582f74365a4741462b692f7152394e5a68377575583078554847716f41484d5944454f58316839486e754666364c342f2b6567416577794c6e2f762f414b4278327448324f4e6f4c6e5364514142794d4563446764534d4e505a33565466716b682b5468714176306f48667639754d2b2f7267595263713046665257326c64465a723635777638416b42372b7a6d706d6b366e736f4577654637754373542f59476d67334d2f7a39724b7a69764e336774685477612b766b53324569544730747a4d676f3448497a36724e737664472b6d583737476a396f525358566649773138396e36363077414570695a78484874534f3848393054384d2f784d394966787339432f5066786838643150474e534b2f4138573830323764725231462b66333632465a566f3752637673596d47676458374971484d4165436d4a36576d5476623166486f6132704e3752654d6a684b7a4233625845754849386c5a5478557061767934745a5571462f313170744363456a3950394d393351614865633937766162434c347837326271313664346c655a36552b71486c4e48562b4b2b6d766e766b31746775356d3958346a73374c627a64467141587866517a6572744632662f74347a706e2f6c4d5475396433375056567a534f747476314150797a776e7a507844517938667a7a7866593857386764416970574e35466957346d682f47746b53324b684d4e712b4d717a58536b6c664f68774459307a4435666d53664f54575974776a7351424c3258573949704f3965447774716150446f71366b47536659576a6b6a33653256504334307665447a4131674a4f396e4f4e49333750316b623266685a35463435346262612f4d3861546f65642b51615533386675367a684233676b36472f4272557a61464e3058472f4e514b654b2b5633366f6348784774337a422b3874584d3962637451352f4d6e31317950564d6f2f473749552f796669724930733051793954436c58474e7a506e2f414f6e326668304a706179715773457a786d4467365142517731702f714e4b4a7278774b4c2f485430455031643838384431504c497154394d5049764d6f50432f4953787442552f6b316c56456f32413253503744616e5a6f75475a74312f552f57456a59347638327a6450532b704e61327832716a7668342f7a304f394676545479444c3875386d385a794d46666c69504476536e7a5362314e6d3861743857346f46342f6b48613575554b33644c4452727a43464535777a6663444b4b7938432b783234654f637a626848385131422f4b5838362f534c5654756f385138744372314c77703650455047746e306756356548697671567868363262623554354a742b6252353137734b67325a733535464b77397954715562576f6d686d2f712b6e6f572f44797834397735576556666b6a3631655765435a33705066356a547a30347a6e30505634706c517952344f672b35706166473764616b7270327668645773306e5933345a68547a346c4a2b454763366f3071787a626559644e7637652f714e6953655034384674445a704d32657a466c6545527a577030766d36577443546c734a566a74576a5a793163646f41366351306c784e4a7855696a523539614a7a4d64386a74743462366a356a38394378374979493847734b66357336443074626d6e34333856474d66474c4d726d5132782b314a54502b74474357687a6f4a2b795566494b782f4a58314e377061617647346944576b42767a6131633047612b6e2f4c4a75673062644f2f526f70565641356c6954346d684275637a484d4e4e4d3659716572765376664934682b736e6b37544b4770475a5a6a5651786d4e6d7054546e777a4a2b314a4444555766517a2f4b79575a576866794e5173536e2f7364346b6b757a56736430306a72493053394d4d7a79767944316e6b385738637739716e79627a625a487862427a70783657686f612b69324e57586d61466278712b6937376a5a2b504d58546b6f546154526d486e732f72613078476e6d6547306630735037566e70656634322b673370742b4f42596373336b476d6a79547976314a387679466c716d7a7a6a632f6a373759746a61536c734e532b71703146756479675365486a616663326d6e37317466683639743937582f306a73746c546c5130754f30475770412b3172562f696a6c6b307456687a61656e523333486b7931314c6366524150656b50636b6d65774f723769492f762b48654c3643644274666a6333556d3353663932614c6c6a7a46366b31555674415a6151536e334a705a30326f4e584875365076613537576948426a387a50376766692f7744627139552f422f4650576e30573868542b4e50714f7533536d3961764363534c65386479504b34465268543468355834506f59704450765536457335786d786b3143535362425837306d6c58567061553630576d742f774270587548382f6e387966566a785431362f4b663131395866546278717677723034383939514b39627848782b4c4a6e7a676a38656954506d5a597a594f5843756646577863764b2f7267756667665a4945386437542f7231394b7330307131767a577241312b6279655662666d704955396c34766768786565714d506354446b666a72547732416a346d4e4d2b4b4835657a4752722f66756b645050352f63442b4b6d32493143646171525253437871596a6947683731793965695a5047477579576547506e55384c6f696b44446e666941436e4b65617476485033457a384a3950746e7a337a54784c7776415342582b622b54342f6a4747766a2b4d7a4935396c376d2f486453797232684f414e492b642f5873396f4e2f64497a66744a7a4e34694c544d52796a756a2f64542f4850385776786b2f4733386566536230633947342b65716e702f594f72366d65743266565272586556773637616d61416275314f7a343749534a307249544f4a4d784c7653637a50663869614f5032652b707158314c58767932374d447a324167757563576c513555697a555477347872434b63304548732b4d762b526f4835434c7158422f74443243584f2f726e76372b376c774a666d7a6969565772702f52722b6f336a332f7979554e596644456d43495a6c762f4631315a5a624f7048322b303275456e46776d2b355757633874656b677469643739574e724f456e2f653144576a4b6b52374c41686241644e314358736e3150717572527a3264576275787a5065383170416a7148656d6c505778554943327131334a2b4f7872465666574c4b4158504f797a393154495934726f3941675a776b423370752f773648777a3943484b6f51356b39624266463961656f7853466a6e4c3455344a373264634b5674367964695a3648467775476c2f30466838702f77433578416e5164504e427135367045567a5530663841524b6d714f656a716e3934373333486f42384e48484d45785976674b2f7743736666384142587a422f576e377631346a476638415572465a7a2b3942382f4953554b47524d6d5175356336546e5858557668534d4f5756626861686c48546253763363372f752b526a66783659456a3852387038673849387178764d2f47352f6f61486946364e3556587877384362546d633457572b343173543768636c672f342f365443592b463767496a474a694a6a45385a755058482b493339793730662f4a7277544338573871762f4150415057654850304d505179624e626b75357031624573737a6e5143356361747833614577397a6c4d446741457a366154355a4d6271664e31505a376163356a6d714e7a764a47376357496e794336554c7561715a6633326e48356f347571476a71574e6656735a624b6a6330446e7a364836582f5748744639504b322b3535664a2f56496d73544e5945477a2f4a7336584c4c79487943754c486e576e32683544707a6550342b65716432564f7663303944353551686c7a766f584652386a79396a75512f7169645272375332305233514f4866384163472f75674c387178746e30492f485177796342386865502b646557746a79632b337136786870354634767065504c2f4150705867732b75426d5a6b4c544d7a5656597a7079644f6a6f596d6233484353456943505a5663685a56493550307a59755a41586b485856303871734832646f59734a2b384270697775416c786f6439672f5958582b4448727845695178746a6e38375046624c6561457a465332746e2f5655757a74476b4d6646684b776c772f644a586569426f62536e354b506150506d707872506d4569646b724e514d70625370623565386e5771727574577a445379524e50586661456b7a4e5838772f494b414d3347612b445351457073382f6e3977634264617162463341504663372f4a78334e7235384543706e664e306e6f67594154782f476f704f75594964443344484c37506c4d7971435372707336697168624f306a4d6b4b356163662f414e576450724a557a6f3052675445496c732b7175716d6370776b595a67345245456e314a424661613639427a466f73314f6e3042635857413048674a63534c62584b6e71346b666437716a36336b3556746d34707252633552665a6e76356875782b442f7233722f6a642b53587072366734653665646a36472f6b654961326b4c374a75582b45376533566e61394c372f48364a65454b705953475970322b372f53344b56755134425050567046365772493932584e696e796872394478656a7837563854566a756f3579375330764657537937554566774f314777305375483575526c7a74545a6246454743564957483850666938766a4858714b703951667136586a30785952393039573074585679714d7854637647432b326935535939484d4338752b366753327547687372754e65354955334338356863726a4d5a36447a2f41486e5834394a37354750715035466b7837564b346261382b52384e5a5a47657a2b556c357745393042715a6e6f515657613462324d355164313969323835536853783759764578746a674b552f4a756250443866504e2f442f49396875507536365a32356d4b725537646b58315357654e7952773363476633554f7a31755936313943314f393134746f625755346746395074317441346a37666b44744c4967794a712f703064426a444d4b464a30485633506e72365650577a384f6a6f4d53756a684d4932685a663841494468396b7770364936784d3942484f504a54632b716435586d326c36766a753443554d533055755a5a38327051535a376a597376655143726f685a3877393579674f71674d4c6f357049496c46776e614e6657614354556d647661693662752b30796f5344436f5643537a54776a62306a50394238664f664e7a537472544f50416570723058384156366865686667486b472f6b42526f3658676e6a756b486444694b2f7743546c304a6f3251783464626145706a6c37446a3745627031302f756a364446366c4a7447516636344c57323376454458532f774246384162393745386b3864566e55497a3874655a527430534153365a2f68366c6568764470424c7444384b4b4a4c61593571574f6f3871417756336b774732396254776d4177522b4c6668767a3236336b513878727130754965787368303438304e412f48384a5055614c63646a382b474b717137686f5864323564627662395554454f4b52716359724569782f45665179657a794b54784a586a7a4f6f386856314641594d6e33743538642b31394c784f5a39327263434858554648645a5739374a5a7a6a715452377672684f436f6d32497a31326a642f50384338543862394f66494a646565696250772f43504c504a4e45473474366f7455362f474c704c473175484a7a7570782f343167704850453757506b645135303143755430686a6d5a7477365a486a6370452f76366c36696d69554768654d64775338555a5339714a425053723576335277484d5753785758486363414c2f414534774a4839656e48344c6651463153544c5454616d30346c502b5766384136793239596c744443396b692f67596e6c424d646e796c3956365a6c476c496653397a6c696e2b71642f4e6b5a4263614a6638416e3641684a384c56513241714361796e58356b325731677a6866493456665037477663592f77434e4b6659776853494c67537158663270614c7935586e506c366c73326438706430554759636c6d59424b696e583269356c50782f2b3570706e582f706b2b4a4941616751763076735a5a56446b7969624e4365665651736e414d7461517a367759757659467066433667744272666c4a5a2f416b79497953445065477a66704275344735345671654c655862754c3435347a365335576c35647062564139315055627a7166554570733778545076656b7756342f4c7445525448785335694b6c50645669306c444775746f6d4a7a48786636616a65443037343671504b7746303271306446634b55536f3048614d3062784c4c4e6c62737a4f6a4d34426f35754f4c36724c6e644255307868497633684670597a78342b49306c2f4e7a78364c4c38303858706a624c375759374d68317565566c796e4b774b614854505a59356e5074753555353379487779544f3178492b5a6852467857326e4d7845593459476b596670776a396453335a6e45716c636b44616a686731726861752b6c596771624e6455786863627858433931514233707344722f7743756f50455463434a722b792f47306e545467684879425149774839544c6e347178774e63732b4c6c61486543446b5549396e7865357767664f45705150546377317954556d5056437567374a70466847757765546c37666b467431464654444c346c425333332b326365632b646e3961646a7a79427233645831674b6f617758554f6c567765383476356c4e494f32574b576c517637787a716d6877654f3674774837505a775063375148325354733058584770736b775155554d643770337655705a457044355a6c6943307a726f5a3746722b3066752b454a685552687a33592f423966304442566c43572f746849617161563751593973395348646d6b3732566f4a4e337673533067734b64587a666f305766447766385141327933674d5750595346565274596e67724b527147776d4f6656306954396f58582f41436a376b382b7758372b775569484b5373474c366b54522f5676342f7036675756365365565665472b6f667058357438795a386e78727a4c78386231364e444b632f6b6664504c6f38676e716a42737a7634397957574539532f5a5172333834703351614a6a57305a7265766849396e486c705a336e6e702f68656151436e7870476b6c586b4c2b353947524165653350687739796b47446c3476386e6c366e7951314f57355476594259366b3069617030716e38794f5759695a33445948785478306b354c747a58327072624f746c3748746c506d51513765577a7858362b676961504a7862534b585256704e46374c6e4a54544d4377636d66346668376e613035355a4673654b4e77315635576e4250667953544b336370704f3674586b56694c563563455773593631487a597570316d774c6b6e70576877772b4b6c6e2f4d782b2b73356a6850634f556639353331347a2f4866787a3872384e38592f6c7648396a7a33516938574230512b516e792f4a6e30766c324949746532626e6162437a324d6e61736c667353424a6e636f5162395070396d706e5572616668486b445331755a3367536153795369474f716877312f635431666573525430352b3238634b784a6e3735774765786631674d31652f744a493943303770442b6d68566a67626d4d6843716a6e4556794e695562716d785645745233706e2b632f62326464444f2f7345442b35685551442b67556c6a624d626f344438317678494a5179364e4831314d546d703444714a4944346c79566e33744357476f526c537a34514d50384142557a6c66734b514e5358782f58395232642f74622f334c644c385a4c346651623174554772364b3765376e5734336c6d674e624c50544b756b6d4736794963364379746e6a644e79325350584e32523038313546306a53504d392f50723650764f656e61676572767839575a35746d576552654830654575786649735737557a4343562f69464c3943363264364e76597a623363444c6c58486e6c5437516c2b5a77782b2b7878714d36302b644d596e4131372f4d5431613854394266785a39617650362b4f386133634c787571624a747a747152745937506d3273366d52307239525a7961575a553650376658484d326b377752384b666653632b627070316d2b705776614867334239757254705a6a744d645a6d6b3031646255337379395451724e59614948557757385a37506b7364513158764c6c476b447941576e7a3476566a4d59743341763444346e712b632b62654f2b6e7669736d766272655862576668654b6f354f366e5775314e69396343633553652f564735346133794c366b33653844635370765a595141714c544749744d385a48394a5038432f7879394d66786638417869384439464e476458613868442b2b63436878307937486d4d5a53687230364f6250555877796e526d37426f5231526c51764e51397a617a656232654c72587671616c72514e682f5554386550772b3834386578302b71666f64344e366d5a34474e50635079334750636c4772636c5a69413448563751686a70585a4c4b76392f447879613247394a6c3876412f7174645455696557323251533848385839422f78753851304d2f7744482f774246665458306a4d5754325255654c2b46593252495674476452496d5776516d386264525670537779787a505478626d6777306349434133684f6e666566326c74324279702f4e503841756c2b672f77434e7374486b586e2f6c5768762b6f543870396e6a6e705a6d4e54625635562f486b366a78683146456951546d3576506f30476335444975626a6d4956795a335a382f7744726f30394339346a485a385235516679562f7643666c682b52586d444857616f656e6e705a4e3547706b586957456a6e4e576a45565447364c48314c64786a443933536c6c7065635078635651357a6b2b35512b78586f616673326e534a34373744656e30563963764c376641386e57436b725043664d3879375152736374794b4c315a744731724976796649364d6251343564636631534e5a4752684f7a53516c3355706d376f77595872787a3856524a3954386b712f484d384d6e6338565850625a72515374634a326a734b767a72452b55506c746f6e7954366e356333594a4a2f46396b6556324a577232542f34306f30346e6847522b39517637684867507062346268375a5a576e54354e6f7870624e4f4249306239314c33356f7a57626461644245656358434a4a48513042415a7a6248537167766d6865726f7a6163447a312b75337131356a3638656f4f74366b2b6476572b7679566d68334e696344714973764e5a703332515a324d7550363073704a6a536c54446d465a664a2f6e315852627a6f646c4b78534e746667465a766f36327963426d6c6e59325935713532676b545247717061526d6e7a5249575545744f644937336d336742396e336838504f4f642f56763366727844315531487a536b6c71674c6f79726c65316e4f534d465a2b2f7742304c5552746379687230306436766e7355447148652f767339346a6d47617a37523762695a7a53375a784d715455783944344758755954627969503841374b5567794f7676584753694136665a4b4b3147445639412b51516f4f646a70525a536369704f54712f543164537251636e7655316b6c4b33496f5537377a2f4148475a3842615573513151695a486e612f64456853636a4e455a4d35323664704b627844477271527971366757464a5a58396a71692b56496b663634426452387a4b462f44337677686d484d327078744c4b356c79734f43694f6d5649306435313971592f624b4c36666d426e3178566e324b36504775642b6b4558734b626933535732574533395a765633593958764d49764c74384d704573666a2b5834336d7a4539622b6f6a6b39314861724743423873632b6c6d6b7a744856632b49395834654766654a5069745a724531724750587231416e3334522b466439522f79372f472f77414b7a633975682f50657148687352787a7274555a7a5361413336442b6f794b6770306f52797066335973424e765530754b63426133342b52717a733039533039342f7155552b4f656e46783655635543685a627a4f484a3855304f48664c447571566f52516362435331636443645533734136653141616233465163343170536e776333382f7743514857666a7472717233475862644d556e6c49555368587a52656f315a52556c6a775a656c632b7239665643665230484d62516978784970417a536c716a476446353734794e48504b76375876704c76596e6b766866724236702b63582b43314b504e7866482f416776782f4a4f314975717130745a77314d5947626d7a533679556851756833777a302f5a4152537a334a316a5874453572586d454b6e2f42332b314c2b456d667a31486d39475054675a3838566f70395376583379484b3876746867716e59704f786b4d38714769416454725866756156435038414e546e532f736c2f5952506233767447724f4e32506b4e522f7741687679412f454c387a50424e66786e3854664566444e323330793031362f6d2f71583657654665502b48792b4b6a794151676c7a2f4144684d6565506c336a4c397a595379356b307066576e6a39674b6c654b71543070545530707a715737587732454e2f4872386774333042386973384a38336e303944784c73665a71665039417162536d55435a5a375761744e3943677a2f47776a6a686d45324b34586575427839566f6f55665a76534c7875723276776a735636622b7166704c3559744e6d4175665743345a6c715a4365572b4f5458304d684d4f61467a5a74526149595443716454656d766a616c75503566734f5458444e7a7a5738646266595038417950797630577963725a3871307038664831504873576d33746431304d325a304d7771762f57386d4f745a506f68436a556f456b5543522f474761354b55306e4e316356692b635478794f4e6e354e2f6e5242684f32702f5433494c7a4f6f7a725133523531452f696559327a4f3073753578624a69677331646d614757457449712b5636584f55662b4e306c6165696d6a4d39726c486b5a39522f432f796e2f4e44314239632f79447976532f7a66314e7138577171386b395139547862787133563866384d796d7a304c6b79462b794650315a3570313064502f4145384276302b74366e374a6d486653726254303631704e747534517a7966386366565030363865394d2f4f2f55337836584e3862395a384e586c667035755a326a42556e79664e526e55726b56563262514d3864334c317056524939557a4f397967535351456c6b784636333352586a6176583138783064394a2f532f48312f4571504a555336756e4c44705665526451384b4d303161475a78325250687a42557a706f5a4f78306461787063314e306439587355594b2b524f5672577a4d5a47715835522b636550596e67682b4b774768577a76554c793470624d6f53396e69307a312f61753579704879753057615762504e3237342f704d6d537273337a4e4c6f545830367a4e6f6d6668476757506f36666a656c6c362f6a724771307369314c5a7151554e332f594b4f686f483349347436562b3335694c684730674c6a684e674d344a6337765047755a6a456a744e2b4e4835552b6c6c6e5945655436486a6542357332764c56446e6556667a4f546c3962646872446430316145666b484a64516a575631595331636e6d6652667a6a4b42742b4d486364365737754652746c36392f6c4e672b422b69666c754a6d624f6666357635524c643472675a474f574c7a51562f354d4468733064316b6456493353523566746f4a4e494d47332b634249464647376b31464b61633736326e3452353865787a594f6254384e624f55614c6e746f7361692b6f30386f565070316f59427938466469666232636970615847686178715453444f702f7271362f4d52506a715a5a4930766379556d7346656e30676d6a745563765345624f726b466a784871616d457850754d48502f4148376c4637586848626b387830432f43542b3548362f2f41494437506b6a665332714463394f504e51714879583073387a36742f6a464332524f6869315a4b362f33626731444337507048724766574e70725457446862776a793164476d76484e32712f463639535055312f62312f4c6c6e35696542614871356f347566344274582b514b523550346c346c744d50787a772f7941746e515a6c5854766a6f572f3841693943695664427969795a79573139634b58476e3746336e36756e377132334f523274384b39544d2f7741644247586f7561526f792b5a79656146764a4b4b4b4c6d7a35642b746b4f51366c74636237475a37306f6f4e64507a75734c34654b637a716565316433474a466f61767276446a34394a554a366833384e43634e765757433279506d567377516a513536314d575a396c3136526b5742564d48484d79514c503672736e5058674b4a39502f4146376c3951764d2f4a615338327a66486f2f4655356273684b4d735a6c33534f70314953376e562f4a372f414932664855767344314939394e6867576450596d66374e3570694f794c35386f39632f54587937786249696a386d6a6c614b455472324e5735755448497531476c7154367a50494c5258797a4635454a414c344342712b4f6559707342544a65307257305445343641483656666b444c61422b4c6273555776705978305638724541674d34312f78382b62626c3132366a6a43373747706f55307459594a4949364a6a6f64316e4b4c5a7454724d667942337a445878747678332b53756d6d332f48486c5331574c584e4f764f666a66594631387238322b6848553571326843316932536434305444374b566c5430704b78466f742b59667a502f41464f7238503841544c2b343536736c6b72654f4834702b54506c30475a6c37536f2f745a65517a796a7941704a564d63514447365268527a546e31696e2b2b42416d7a346a34762b766372756e52726e34716a32642b6e4f54743676687555785a655152692b4b586139384d2f644354436d772f4848557a6758646e4e6d6d6274665938696842707a6470635233302f5a707235592f35764c76484e38787466366665734633672f6b452b466f664c705a3466522b755959626b75785a5a392b584a6f7171497056726b5831613970644c314f5548577a5563536a6c492f574b6b786d4d44594e4f744435786d364f316a507a6875534e462f4d78467568334f55725159586b4f667a556f784b465431456f382f506f51585142645832533538716a705953305669497833534f4a762f77416f5839475765592f67507a7a53674476386a394a50555844387a6b314f7a3052374d5766726c6f654e61413248656c5a707736497270394c346c47686955357150644f59414a6a306578323236383138523451625153546d386d354d36464c56466e6f5143785a3847703166454f34754a6175465731617848344148686a2f6b53524c336b5265725434686d35797166354645724f454a48494370775464326555586b7a363556415566365766746f63546837304250324430512f774b622b7441326f544e39656f4b54574d7161795831786f66305a6574703577324172692f6b637a3637685754522f7744633734675a77674435655a383377396e31346a37514671756641584a35616c632f3779373632745a51744c616d4b41716e7a694b342b694c533672334e63516672334d39786d5161427768384b4144396a78636e63382b38366e354135384b61614b326d7a336758535478505a566673684c35756d43784d766638785a37622f692b3867746b342b64702f4779725235424d6d6c6a61616d4a58412f34304b3730774952352f7742705a4c5378664f4b4251666f2b3853424d4d7770726d31654851575a35484a6e597945347759584d57444e3036527a4c667078665a42676f6f34744e6439684d47682f31574f4662662f713277664b733369546e38726e504849327a2f414c5866715a6a656c483557654e5a336b31634f4a3466367235656836596552362b6f71636333495435554a53595a3651362f5137504c2f414f516648415a552b36634a7750684f3476384133387237525762616644745648727a394876443954304239514e4830394a6431506a393953647a433043524e41577368624d386f6a70386d6a684354785766684f2b4e525255543857475441336a2f306d5a6e664e744f2b4e33664136342b6b58712f6c356b4a6371315a382b50466d69424d46624657786f6e546d5335504643327949536f534d744876364b756d326c314e6a534f4f646f6957467135347831466f6558666b393446344c694175564b5861564c79784d4e6f4d52744d3165365470384e397166707534532f4831365131634b746a50657070754d756d366e736a617870326d634364656e586e6156316d6a5770386167763370564d59717a55786671634b764c6f566e706c4450306e79706d575156434b7066692b4e304851345a4c5531495261754f6e515448797a7a66455273586341747432422f6a7172626d6d6d32544e582b6d55685a2f424d73705a39567966726d564448694469735069506862385533395634686a3437354a364c612b6656354868342f697569464f566f55314f584c6d7838656f4f46427974655a5459307a712b61316e55644a726965732f38415430754e5237356d4a6a68494165642b5134645543364d536c61463946494969676e71494b55707a71646552724d3947534c4437513667656e494e5163364e684c574a4e65332b6b784d6459486a4b2f7657666a50344a4635482b5166726446674d6731646e413857316c613863306a7647397a516f562f36726d5461545844513150492f77434a65465847386d367a59663767397a614248302f5a627a6a54707577504f76364a335563706e7a2b7a665a6b2b436f4750694b3258656d4e61307a7a5437376b3045737850596f5744454e6c486c435570734e664441702f363742754e485045634f6b423749525530583565724a5033512b766b37464f6c67574954336c694d3233704f47797a353266585a4f584d38305755456654555a5a2f765058674e73667831394d737279437150794f61335338647766696f2b4c52755233543133537147463259576e3474324d483279307936476f39665a324c5959587a4f6453304c5366705a58747434646344317065686e724e52366e656c6d4e6c3261466e6a63654364754b6e543866356d61576d6f636d5269315336456e4a2b6a6975356a366a7672303053434179484f356f7361726f54634671626278497544787a316739492f525079696a7a5645586e653475664d77733779477655356339794c6d44713048783058426b4b7069646251712f5163554c69436d51516e2b755150436b31746245634276464c36382b4e6570574f626250444e77344f547554486f3234594d796d5a5a7a725a6e476a5863766e4249313152755576697a364b66727958653036512b58485a4d573433396576495842487353744b57504171704d62374c6a6a527063324b4642524374675864305150334c6f6a355136786a774166663746794f364a677059646b53646934744f64376176704a2b332b3130477749334d56323837536e2b644e4444533533327535664f72373752502b532b53684b71476b4471384b7835446e6a2b553339726a38622f796e5053386e736a72394c50567432652b6366557a7756787848585976756f365a2b6a695762484d386936746957483179666e49584d746d6146596c596e616d76665434647176345235712f7a482f74692f6c642b4a614b2f4a3958365071523661706374542f554877507272666f7259556b6c672b58342b6e2b7176442f755861786646524f4a2f454e4a6a772b47745130396d6c72366570776a6c734f6533324f6156654938733856664b694c3479485349612f2b594e43636136645365634164532f506c68497837776a61507638416d2f5267594b3641536b356a63756652306d4e6b736f6f4d415955624f756f73584c4b5647647874784178493735536877753941545a594b446b352b2f682f714a7a334249585a3532417651754e6f6833674c30424e354f6678696f51515a6d6e5057667a646f4c4a344535384635665a6e36594f5036334879466e4e58574c324b2b5947797636494b587838325a704b4777544562417a334e4f56334e694f4e41714578393345754e49456f6d6657434e7575476251486c4d35546762594753636b5a384c534a736d4470766a5051655058456e763243665655395a2b7741595a6a37654e56554761664b4d744432433574526150766b6f6a477368554b4b4c63366f48365246534c4b527134356a4f504e69652f70762b503841764f634161474265555755783579324d4f464a705569613656686354522f49565375696d2b717a6c666363304a48502b503766734143636f48464978704c34456264753864585775704b6d366a53673478784b757037522f365936367968714672363931483255786953576d667a4a4f516a524f37324e7341553757334b4f7a50386b6c764342663643743269626f596964693856446d3675654c632b6233523058624333643438666534505a4f594f346b5461426e786e7a68737373386b79756c6e7143784a33787a30357a46385a6243742b302b49667447746655724c677173536b7a41793474767643644a67625171762f414e4d74793970566b5848313867632f5066772b76726a7169346e4b517563485555465a4f6c2f777637376b684d64546750706a38774741326551516251704778764d3437706469617a4335565070757130714f354e466761785071546e6e595875544f4b6a46334574647850544f6b30686e4c712b2b2b692f4c616d6c6b665550706d6d66617968716164535657634d526652397a4538535679556c3876453254574c2b79616c474471776b31643643485231654d2f6a744d584b486c4c5648395358356a5a2f476c716e4f376f726a354363594e46534f4939726e38496c4371666c6742713755463959644766584470555163646e6f4b432b724e656b4e445735445369306141717a57574651384f463778536d5a4930415054556e2b674d546f54544378496657366b4c51724a6b504a7a6d3035355a426b6571326f307a5477314f546f65316743594b4d41377838352f595135774374446b4255746e557a502f414a555a70745a4d4e3964445671556939314d66386b505067554c68537968414a555455393637356156477a6f664d44744155756444426344376b30756e637064496f4648475435575532756c3163555a4c47477a51504c56784876443633652f743834676a3274427a7652322b4c396f6f58646252512b457a4f58764c4a5578316f51535253387a71496f36415a6e3039547a3545304e56476d64494b367152787845356a49682b6e726f6b36324d43305075494a5445356a454f5776564e6f4d51797942452b74515135585247676d4e6173766a2b59506d5437694868794873326856633264374a45716a70734f324a476c593677644e716d66612f52646d3161786a4b5a624667484137783366657453506d6153694947464f3247647a466b7835653233356561756d6e5058526e50486e63315171544f6a516f64774b6e424b505063726750344539526748464d5a5364414b574949374964614574483472546c7a645a36527a6d544833372b6354534b35772b3750716136716f756c3870386171583461654d54326877677a58593737484e422b4f62724938472f4d564a6c6b35694a313230792f44716458556b653078713972435a784537757a384d6d75642f77437a67424866496b31746e672f6a7161744c726c737938757a7549364d3253586d36702f484b326d47326945565473574b326958762b346641492f704e46344452707572596d2f6b7a6c327a3648616f503533506f4f6c2b6647394e575a6c347162613049596b5765784c43367336524b4d5463613241445542473434624a64794a38596d4f6334633143705676743971632b744e45397777314c71635255754c51596c6e7739556b4652382b5755794750704155322f4f4e4671515a7a4d6e6a586d614d364c6336696c5542647a31725432625330575a6562396c656f4e6d726c395534543475497543513955517364774b3630664f4e586c433632356d6c6b516171434c324c51796e516e575a4536616c546441676e5846332b6157696f657349544f59775970585979574578457a4f49466165532b5779626730364e6c5057322f384155505261786a6c36574c6b6a6f5a74437564303057636b533447434c56497257516534324a722f62686b392b6c61343479474265535a7a56797576314c30774c4372766a5238556534507843736c2f57636561546e2f364e51733870756336536e5677665a50726861414d6a33666d4e782f7859386a4847782f4c63724e735273667932666e5745484a744a6a4d73367534376d6f6f586c4d42666a395352306d433967696870714230667656373070445055726e5a386f4875452f48374530352f544c30396e727a4958612b6c344234374854653356696470396b586d75755858595170594f586c6e517769507053535447684b796377432b7038486c586d4e3173644a47335551557454585652635374534e3839746a394b676f43547a4f662f4e4a34674573544d6d4f6b59386676572f496f6a35374136755a726c30386f424e656a446c6e4b4c684a4e4a4d56516d49587a766f534a55707374377076476f79304631615932463171766a42526d4854516d6c63366e414e3064644a76644b394f644f6c72436d754364335132633958632b6672715265725044732b6735626f796174777470577670694163636b6c4f424f323434744451526a7a7a6c645179482b495536586e335a5a467154513354683550686933616855544c6d6c4f7a35696f2b5a4a4631464c4a2b70434d73334e4e635a3546453759596d333967703548504b695543393837734379526c6c4841796850536e5750365549484d77356e4c4133566977772b564579366430684c7669644e50625938344856616c4846324b744f6859543070613271567453353752433178534d564e383077456b2f7742674837467a686d66562f476250386a6c3150616247324e30516e79513052786336506d423351583376313278315065514749423936747656664d354c4a3367626c706b6f5a61675730636d795237424551774d2f536f69525a6d6e6d366238366842697a3550355a434865307a62374745366a35476d49413369746f71666175484e786d3546564f672f746e316c386e4f32466e373563324d6649686459746a335239346f5334615038594256634c654f414a445579766356594470686c35394d5730517a3879654b523952343548666d5432356b2b666f387a626f363356732f306e4161564f4364502b6267542f6a442b615745596937504a53707453725948726b727570314965316b47576b666d736437614765386c2b34505a72546b66424d6d4b4143624a7442696d6e77644934487866484b3565594973367565617168556455554d2f765a3850314d396246716d59735073676337516f4569514378782f7741686e726e437a73433439446c514d62615567364e53732b5664617a2b684762427a534a6244563058702b46557171782f31677236674a5a7a4f78484f6f78685642543175336e30566146584159716a68554d36645255416d7a344544396f79363179584d39687156375059316f5a7a52397a5856726f3669377658635678644648424a6b36706e61724452616d666f796961526a417841714b434948756d476a767359414e48517252703358724b634e457a7a6f706256487850317046703074524f6465546c754668414d7a42654853396966736931516d5841576f4350326b6c6e3050706d566e5661476637577057344c3161626f474a4a5465743747524f6c6e732f663265433374507a47414a7046332b436744614374624e6e446d54716e6a574e727044673061516e522f477846325a4d6a4c63645a6b33343263343339474c4f6c3351397a324252386e48424168737a6c2f58567157465a504d465a73736e7a6f715a7a586e5a3750634e4e61763355785a6c7350466e524a7755426d3939344f55546970596d656b5a4752516430737949382b334d5336464e47623765444978377334593552342f4e44334a6b587264466d74784879457570386f66762f5534326c7746787172314e4c556a427676425649514f7972535a31356446646d684456396a495431556676715845302b4e4e4a676352665a446b37444a77477972664c51745331394742354c722b3245714d765245504868756d584c75545046346b76345530435477584f7a347665347a543741645347564e78564d3665564448434f796b73346271313832555a2f4e44555932623565707958736c45425a4958436231692f6d53504f72535147304146334b586c564f714a453672582f414279646c516e69776c70616b6579327a6934796f304b4b367247502f774258514432702b73346d664e4e332b67596146596c6c366c726d485357704848496b325433637572577a514a756f313350754d6d7a316f6e6e6f4d777058373665704a4966447741442b7072316a35694950496d726d4b536a3574515650356c78613761575a764a6f4e47436148587674703076316e6d5556797a49756a4d355650762b41532f7742627a67664e456456756f322b6165663774732f45563534664d3532705567524c5271797053455666796974354e484f4a596d6a7378676e39476e6f42374c664239663043566c435a554f5579626e6b4c4938714e6b625971486554634a79714a364f525835307047784a48524f4c444f6e356d634a7a2b4139446c52702f716f5173796270744b59614a6d494256416446696d6161714e6e53465a4d706f562f3132545a4f6738616d4178616d6e6334776e49526232626f4b74767434675549755972756878744f6f6e506574324a7368647078434f736b3875654a62374f7a7345733264636f6c386569424372345172724e3351734c2b74676363423571654a354552636e2f5853657a4d6d4d367a63724c4c71565a7643532b63522b765a38596a776e4f525355496364595954387734326e7a4436566742546e563868446d5652526e397a473430737837476641305574516e516849716b3351712f68342f6a4c3246565768774f4d50737a2f4f45417a476c46654e4d726a333042656331456d7046395365466c614f454b4f515542556f3177706c48514c67464d5a71626d73412b787974644b41507649796c716e37625338646e5436636963323055365565717575666e79783867305a564d37705538596c49794c2b522f654a2b6271517239314e4c51307639526e616d563548717939544277305a6d666c77624859452f4478656a4a71562f4e5a2f7742644b6c554e6334552b387a452f32373533466148314755625678746a41346b2f6b72366830316574477a6c662b517a6141356d756d482b5770727a6f553577756c3132535638546e4f55433430464b7371433758544f4b51393766596c4a4b56303069646d66415672346235766f536f696d63654e6e3332756a4f32586e4c76486e734777795756725761695764716f5a6d737165747a61456b737a704433765237685a49324e38633952396644385166536c5764476d784f7041706e61683752664867567231323078472b76716869583832623058756439536c2f51642b755471344a784e5974674d4f6561323946432f7632776e66424854354139304d6c4766586f44434d574f736d525479716f3068664c5263707978477876624f526a3268546e2b32524f6930382f783345702f696a2b447965724e5a436954704e304e696236733133564847335472557562656c686f7562493334766130644b6e365979645447344b59744d3830634946624d7936626d374d633164786264444f30766974526d66766f58355a56385970476f6b2b5758456d5039744558465239536b2f6654535243687477496d6a756f7234643635793637516731475730566a2b304b6d79334d6e76465853496d56642f6c492f6b4c345357613436654453514a6477514f59586e4e57586a61386b39564b2b33784331635544624878305058654f744a705153416e713953454570583339416d656f314a6f467a756e307a664578453952443937796d6939716b573144564c566659776d5a426153554d376d36693639534e484567336a724a5634374169507458376f6d70465167416457766b686a713757486930306a6b784b7447547644414a323033345454306c4132706b595435764835624279783739715a50654c5230486434596e2b354f6844744c6671756f676c2b7674342b737838483874524f392f31762b6b36476d70695745766a70364f516b6c6648395958547163784a554e44336a59446561306a584b4e356651617949495a654d6a61314b4b704872356e706f6e4b4d7634664e416e43786a5031384a46462b6a2b58705568534555337378534c652f4e62395245343855797076446d6b3973424a736c5670484c51316c6c43784a5966456757416b3650685359386f524f4952795873573475577a4f756779714a4656593769592b7846366b766d58525671715a70334c427554786c30445071724b763274446e374554503433424974506b766a3173734d64556a347036457144454739524e706f7977757537464c444e4d336e7a4353366a643845776c5a326c5566787a476b79375047302b597258563867342b434471644f504b526e756a736453526769334e686d436d67304f2b5a7a2b72634b71506a446f6d3273673069624d6f5575354f712f752f4d5664614a5278495a7163784b6879386a57357846446959514e6d35775957333148307871712f68325641674f6963692b2f63614353456842576767573535372b307a774d486877785a2f7731664b6e377a4d717875675754714a53656c734d4a7847376b4b43487271424e4f6b3468442f58386e3952694d35377736567464304a476d3353614e5a4c6b6f6e464350764e456f4e63566f34763676626d7571566e363472595861534171515a326431483750337944756c4a6e7a63306f74484b52392b6d326d756c397a3531664d2b576477724e6142304a687a524159386e70415861497741444f68314d2f784f4d4b572f572b3035724b576657376e4a4370794c594744525150744637587975576b2b324a356b7673674b6564736e652f774161502b7858654b576b4758664b35563669704b4e354e4f7259597930374755725562486b574c6f54706379685a435375616d6677726f304b514c66684e72306b6176752f736a43556a734c4d324c4f426241726e4c6b6e6b455a646168693465575142525877324652716646342b4e7a39554a7a4144366b6d3863453139594142734572314f3156343856646263335362386f4f717834705a756762554a6e6a33367066644b79664a6c36583056747035544c6d6e4d3068426f2f5a426b5a61497676526e35394c73624c6b644450746439685878304a546f563647684a6e5235346b4d3572766869556d56374a507241424e36376854694144394675476d775a616461707a4874726c6e516e557175436e6b447970314a6c475132756e6d354374506631536d7777727a5443704b7667543967496666357470744b616b65587a793537304c696e524a565a6f584650576e476632794d45696d6469614e784b46565355424d734570584e414166435441706e7954645754744f564f696c69485432616777324e496d4f6e43694e6f4e36362f4e4e576f6e6d58506c786e33764a44615033342f6d61615038416470576e664d436e6a305a65364d48787a6f4261724f3562707779326f58417a50316b5530754754367046506439584a6f6e4f69556151623336387476742f52382f7251463662516a4158353235425a3143626d384a30544763564e3165624864466f56545439633756467a732b583761315530464e534b2f7742713547465577472f4773334f614f5071383049474846437233497a6e523158575363356e78353354727247747a346d324535493842546b722f41506f4133326a3959733758376f6b57564c354a6853716c6f6f4362764a49486864512b4b3373756a57524a5939647a494c6d4b304d397349526c38667553366759456745784c45426e72737434437337687176564e717a75674f66524b67364b47365646434f52356437466766653647684e385a5658304d6c3578724a2f3830382b4e6165546c374e67426f672b34684b3878556657786d4d664e624e363933485838684a476232486d4a48313131376a2b6e385065384436426436676943796d536a2b6f377562414f52374e6f61344f5a2f3172332f41416162705038417974457745354f6d544155692f774345516c396b75706f4f4a417a392f77445459412f5263416b30424950346d6a696348557a757a61726375516c306c4353646e714d5035724b69554f2f6d644d5659685577335649754764644d722b307563453341397a7a7a314f34477364617444782f325a66414243714b2f6d6c663841783978353147775130342b32336b56416d7761786f5877655638535361636458326c4c506e6447694c39592b51633665367a4854456c6b6556594f386e4e6b6e7030386e4979386375704b647035626577615866342b636f355648384c69426135706970417934537735516570622b773834702f785a39597a6d57386450513952636d696f677477546b64565a6d7061445a594d662f70532f595a734f2b372f414c7675424f36646e4b3066415341342f61763879763841442b67367831753156342b6b37563345342b6a6e315a374b653565625a416a6e5a2f346e5150557156626d38517a556f546d5641656659526a37306766457a556e38703564334c6765486a2b2b39354b757238732f4263574a364b6e65492b6d334c4b4c637a514d2f6d486133485732615652686d724f465935364a65453371424e7855396144507348512f2b7652396b6a476c62487857484764747a715045647133695a78526e315366782b6a46545a4274766f6f57736c4a7148712b747357374c2f414f4545373436557550766663372f6b4f6441676e6c4564654f2b5165444f754737457a575a3366346b426c62477a4b36377473484b782b505154386e4b4f64623077414463306e6d787674615671786d63434a453161676c4f70717151654369664375436a353459755372734d5a7169495439704a2b55503333706e7741593333664b4875567348545978664a4532576d6d77495a37515a3270594a4134357a6c425053735337704a6c4756616669367a6f675167735a306b585065656638663039514845457568516c794833794f63487a317849705644516b4f4c6e575a564a694b636848395a346b61326c38424152682b7837372f41504662627838664c39514c45536e5530757534786267467779793070534a444d687a354838574a46396f536d2b76774450334e41772f355944673933644263586f76364f2b7148354165615976707836532b47626e6e506d656d77345535754f6e52332f6a4a72773670484156554b4d6d50346e6c3335324f4f634163315453357a2f414f4a6c65316152757462625565356a2b32642f386e34394f76534248692f716a2b625a5a336e76716a782b626269656c3264393662772f775a6330325878446649704b4a4664386932693049357a617a346b6358504d4578667950533937664a312f6137327a585335617a3851394d794a4d7a786e786a41786643384e65644c6b4c7a2b5a6a2f414f4b735669716d4c3550674b664f71684e55507769365a53506b366d583348514454542f6d3666696d63385a46522b652b624c3866753146314f6871326659484b38314534547a6e6b63754546484b717471455844394b7250574139536666754a4d2f594d69754a2f7131613770386f476850726c3677595070333466746553622f6c3855664d754f72366e6b4f357051346b73736e494a655535654c6f31584b64384b644c3455794c5a78556a6930682b7350746143346461566d3034697542345066376c48397758794c3872504f3776445043724b6362304f3859386f4b364f4357765359767a4c542f77426a5a743779435a624156376c5372544b68517a2f36666f4f4d536f34342b443633732b6a46497a5047773569494870746570564a7a723936666b5344624b6a6c355a556c5a54735a4d7676566b446961514b704d4f48772b42326a724f2f732b734945304256616979515871466a5754556851326f4b716f5159612f6b52586378726a6459532b386148794a3671776d2f4630422f77702f42507a43616d756a734e644265365a387a56564d556f666d55686b6f3148493955794f634876334b6b44336e466b482f635a3866324150326863572f365365716535364c3774666b336a5953557841395062565035323269724f35784e436a705a39775779727147786362536e4b5a7870417759592b3876316a6173616b52457a78485272306a5158354b6551486f655065646f796b706d67562f34316f655435457574396a715849526f5a766a35723533615a4f7965676e392b4769685575535875556730665a6c777479524f366736632b6b503471596e504c57633257565a48672f69754246566d36666c6d57476358644f5064785652372b683151792f4357646e6e7466474e4435592f697a6530496f43462f4b614d4c616b7a48356879742f7557666d4434313672376e66512f3044566e542b6c507032624562586c4546424f79764d393251684f79664a703458423076483136444b4158623776665833363574464b6c4b502b756a5130396b62377a78734c712f7472663253622f37672f6f62356636344c2f497a7772306a626a36725045764876484b707264625674316f754d5038416c4e38634e66655a506a744175547a6a657236594248533577726e396a7531312f6176633339333776634f595035532f6a6236686669543632655265675871316c7a35766b3368756b3256576b6e4b306f637a5779782b6273766c475754556a797a4a70544f5a6839552b697477555476374d33355570364e4b39645373327231734e6663764830647178506a754a342f71374f68396f5a59494d644e2b705a58594c67586f4163305765316c44752f465030676e4833434533754d2f64386654744d306e457a475a45775a343135483474354f6d4c792f787651774e6278592b64306647664b31466862446e7739585a4a466f5a757250317362756650527a672f48787769346e4c347375416f597a4578773570734e6f5079682f4f6638414a6a387773507866782f316738726d5636642b6d38324e68654c656e66686e6a3270347834666a5a73535a5a4d7075684a5574764c6e4978382b476347325072636f5139776d6f3661536f7a30394c5430357a547457372f4146363842716d74556f766e3551465a7243744e4d522f6f4b57384b546b37727332704a35594176502b5a6a6e382b516c6578782b38464e34584748492b79357857356c4b5464516b73344e436476536c397337484e6378796c4e393253624b4a52314b6b39365847477066736d456d645a547770376648396631466e2f6a763668322b6c337262346e35672b31724d7874345a6e6b536e7256724c4b46374c6f39504f30383955795a74515766416b68462f5575555a70372b316635474b396430586a7648716a38596b772f45583835646e594e486a75705a72513971552b624f3535466855446d7570646b4159702b48505a59765072614273523739534d5a76684d6e4156486e544d326e4f4263336b657436665a6e69703763633871614858394c507a3078537a447932413361744d7a366c6b674744307172716174504f59696e72736f5a71522b467379565245546e4156394a4d6958794b624c58586d34754e50524a444565517653587a5a6761736d5259362b4a686a677172574e327070692b635275536e35714936514d3239582f4146457a45526d51612f49723148772f5276305739552f4f7374634d456556685861476269746e646e614e74312f4e436d54786947796a554b58554966756235664f59773254616b45524e59774a706659705362577045384d44772b7474376471643372517a325633374c62564463716869596b55324c30422b76504e6e6b7571356e66643963462f774363774f36444f64567a2f6a30393344417a6f767265517a52735a4b4e67644c6b744b5773742f77425061446d50746e5a2b727a342f6b753043486947414d356e787251595a4f426949694d37707849543558324d79636161616a457562444d6b304d59556462596b744a326b314475647a7947464a634c34674a6a4f413335536d39347255325738412b527038544e32776a365665507a364153614e526e3136614743704c705a6a304f756d4171744261474c34547668566d385a372f41482b3854625a7a74377751302f3471676667327970744d32736d4f614d4b4b4b5437324d6e776155726d4f353948356c732b31305068613168702b506f444e396479596a4f65485556545644784e6a507365797a6f4d662f6e7779466a51463943752f5a36686e6669732b5259384965384d684543496a2f774341372f57752b766948625869616b6b70524374633757636e4d2f7742436f7936494158514270653149694b6538377775482f675066623776627a72342f702b6f63724d706e45734670702b54737a7579746573536f6250797859383661784872466b4e546d3837382f506b584d4375645a37503179764739664f41356f4376343041556c4570314f4649333874344a5650556268653769572b34584351314c3730574d49326450704f2f5a6e386736437a665237785566492f4f5048387473327a626d3546324e62757a7a4a5938716b6a7170756a57555a44516f3144554d344677654f5034766e492b553941466e6e65635267646866376d4871336739385839427654436d626356726c722b47655462746e794d34724b6e385664596a4f6e2b4769643770645a325875664954526f562b75676673436f42416c63756857643137542b5958703556342b2f4b386a7a39323272786e5975795053377879664c6c71772f496f66474e566d705434797662573779664f38526c654e534a55737142434a693553476c4e536b3375375136656b576e4732497a7a43396678502f504e506f72354c354c3444364f2b6c477a714c386d385948786a786139766b6563373038394b6d4354366e315162462b58796e44685956414c573678332f414447436c574a70654a525455314e4c6647625737503347756671463439365365746e6d6e6d4c5057726138673877774e6a79764c6635572f527a6642764750572f78627a4c5a715a3541573567656f327247314f74364e38445363326c4b6e7065454f55464d59484d426e54654a74574b37656e2b332f41452f69484b37314a2f42767a5877665a3874356c65632b4262336766696330547454314a302f4f4d76786c57666f58554571487833506f7275567a794459566e304c6f6f6e7a553168314e4c69417a6437424c654e574a69756138317668326a747235394836522f69522f624f3076787838566f384533665876314a7770504a74507a664b6e4b6e797654387332394c464753547872584c47587079357052324c34714a77704a73305964372b68365873357137745458337a32616a7a2b345871683643654c2b4f2b4f6e71656844764f2f56724332387659386e326650664d475038453149635855717071785a2f427646366f6d6a6c30787057716e374e7a4364372f61494331715444726d7435365778575257577a36752b62624e4e633047727a78627836666366354e443435346332727854787a49317175564a6c62494b562f5a70735373684c6e7563346e54414943596d6f414f323273522b4b7768544b2b616a4e4b756f714b376a303176646471574e622f41434b3357314571716d756c5a6a565553616e4d48354f41524d7046712f332f414f7a2b725a32634f755147646e5650623761686c51386e6f516642594b4631386e576d643767637a392f4d685a4f466e476c2f7259446b2f45306944396631626458784752593950574e6b2f55794f75576179344e6f652b38324c63394c484f57512b354648746e4a665336306a396a6567492b38774775373473655132782f452f314d5078485132594c794e5a30717a316441494636436b6f7a6764383972315555557a5a724a695753676379596a5037354a5353756e30517071306d5a794f6a532f77416b654c744e4364453738573564437175794f7069774e52487545685a65674663544c72507a2f4678416a55736f364866626c53675137787834374a3859467859506c6c506c7446653135562f4a6f7572572b706b6b32784a6f765a4172786f754e716c4855597065704d6c79364245722f41485571742b483635754c327a5355786a6848634e46767948316d52494b4f624830634a63384676387279484a722b4f6b484f6e7368577962726c6d755166735655482b6739724b7a446948664653437830302b386276662f4a362f5272787a7a4c387a764d76576e31413859487950783330693862314e62736a637950662f4146354f2b6e4e526d2f476e51534848584b6a4865753430507275624847305a6c746b4a696b352b32586d4e4b744b2f4550364476672b663665614d76504f2f42554d3558734b2b486d70416874414d37636b64447638416f7961334c5735715a792f5963344230756d417a363454497a38655978776b57524f576773457469597a7031525132587631335235337a3930444c51435757493757394c514848786c6f64316847544554415a42374f7a3941496635623552707a546a486444566c3166497a4f59366569545570784774584f776857714b466c452b674170706568725544483054616c6e65726f4b356f63522f37696e67486a6e356365692f6c506f4e35594d565068564c736255566241324746654e35524753533851386b787253716573492b4d75456861437a2b63442b714d373069426a3036457a705872654f304f4275462f386d2f384142447a673535502b64486a45586c644552585a4f4a3476365a37576c4d6d50726d422b716550306c4d324e422b4850662b71523441555539564e2b784273314c2b7566626264326a79667843715055442f7743544f2f6c52675a55656c36512b73336f62363434396331746343576b4869745271367556644e5673656c653455565470714650784233357a2f414946684c2b4548487a2b72783764535a3571326f4f5a66726c2f61492f7546666a396e2f77416a35702b4e666d4f396931714e48383534676e2f7a614b53714e6c576755396b2b577431425568475247524d576f415366366f4249685941623139703064546846397542716e346e346a362f2b6b586d5069666e456e70743539443548346c356a34353564677173384c32324a4c5577584a756d6c6e532b4e5a4f6a644447762f41466773776447665570454664397736544e4a6a47364f5030487265384c785043667a4b545835623671656e5778712b4565726e6732586e2b6634666d666a464750733555537445615a5338533075616275354f386a6368304f543936307a6a503348514553516a6c6a38365a6e523456747a56486e322f75532f67526a66684636312b4f6550656e336e3958714236562b6f30384733685765626e46337a507732713436706b654e6559785937706b566155384d346d6448557a4a71596c6770497542316a657a51317665307a6175323165753063355866413770774b4e456b464a6d6263314e52576f6c694e74476b7274576a5a4d4a4553786c30445a58307a4e784172346d694147314f6e487465595a5855427a354a6f6c7a4f546f774a5979563146334f73366652724a566337795a30566f54506f556b7769397831574f492b4e506a682f70333832526e6a48412b6c2f59676a5764502f41465779686d744a704d722b4e6b6463693331417a3575584a657853684e69666942436842726a4d32546264773344456e7a335855496c7a30746e536966726e752b503447752f6a45334a71464d5073564c3770357941654a373851483866746374765573632b44366878576b53583067585146684846494e646e4b6a53343352333150442b5364396a6b37445a51376965475076413067584f6353356a51714250564b366951487a68395a4141376e4b456f396a484b466675554845796f4973316b34755878667868784e6830664d373338346775674b5638564b786638416b7872314538702b4570666138397350506967563862702b386c2f54707945324f34594637414d4151716a6e584167626e45376c62546f67716b4f6d616c2b624d3255513551374a426e56555475495952456863355a71344b6633535076347268394167324538542f4d44386d664173756250772f58507a614f42536e2f5657366c6d7a4a47704361754c68567a622b5a6c53656c5a704b58307573346b3658634b5a507a4e36374361615670374569492b63657658726c36735a3655656f487172357035504b7a327143432b3934523834777038373673733261766a626d456e342b6b7346396e2b796c427536353750387070576c5a3561696e757a454878455036346c534b4552786d32526a766764496e34304a5142457450377563496d7a39394a5471512b5a4c752b2f774472594f4d386e395736697464456e735364665345464d59486142314a6d463056455a5379305a3472412b733648374e6243442f562f6b4765703342335151336b4b726335776374586e71625443535566412b704973374170636e2f4a4c364d39514f37336e764a4d4264503263344c69727872506e414b5a39564b2b52564863352b5766474c6364616c4856794b65465850656b5772357a51595078694a6f577433364250586670336573642f565154665041343943727568326339425a7230316f757153356864575461507351795a704d3168614e564853506933546b354a704e50414870434139383931674d4756304e424f6d6e6e73504f466c557466754e795a4f49586e776c31624749752f515479674267714d5567587850497942304d376c4b736f6c36335362326f30703674706f6c3733696c677052647349754459533653373141664b5330544e492b6b5a735a5748312f657258587454355a514650333371492b396c716c725a6f31564c6a6a56426f643746706532635876594a6348767a43482f576d56387148314874792f414431516b39556678543947665036637a72725042734350777262322b617a5048477073386635446971646f30612b6732694e682f54717061444346464556696546376442494a643532745761366c712f69477a6e6d64563065544f7a563161666b77387950526e56505a6f59367735566d304f684456747a3954374e466c576650507853304e6d4f6d693831664b36526c787579726e64792b766d504f442b566e35302b6d506a656875656e76705047487152366e546c3542342f6f656f5832645762453859627a542b31792f483047456b647a595263563162745357626b7873635a49732b7033333164326e70576e6d7479314845587a547a4c6138357137732b582b55622b7536646e64444c376432335059617163364e5557684a3945654c6c6e5a6b777358777545392f416b53677a6f4152643371694a6a6846656f69466430647438552f4b47746735553148316c706748744b4671496c412b704c4754756f537634537136342f6952773339416e4c42596a55434f412b565a4d3571356c3479784a58394b7a34534b6272562f4b6f503277694e6b7662467a39347a332f4361312b39662b6c6b3568706e2f342f5838682b587964774c6e4a594b5a416a55613376526b4b64715a327a73344d56697946662b482b7a72754d5a7a2f6833754133634c2f4a2b66376659656e6e2b31763630713951507879782f4130485a75377670687361575061466247614b42386262534438347443474f6676624d766c4470613671444258464f5034517061627a62427765305632337a325a734e6c50566a302b63334d6d387a795a6c2b4b70767a36707a354a6b716f70314535656765657a4d6b717157487954426d356f2f4c557a327067445639376e50633434417057654f4a35684649764b74786b36664678676665503676576369585277366a43655754564e7a515a47344a303643382b6a6170466c4c412b7366364f344a364b49484e6e62584737504437692b2f5262786a4b585274513565547678345750676238456c5048655338707a725035584e47306f6d665847624e686c47656a37665265697861644b774a36524762356d306d5a6e6a316b56682f63663841795a3866394566786b386e2f41494270592f6d5871684271656d58672b656a574b7659392b6f585a646658317a715831673576635050644b4a6363495471762b4a7a766d70624d647448546d39357a32613852354150344e3661536c4256307930543577754930756d5659356c7648734f643956456e3156684f7861756453427345505a2b3143616a50384172304e3976482b67634973634e6c3374557978795a32397037534250644368497a7a79314f6c4f66764a58632b785562565463397957306a377839343958326f586f613541522f4a78452f4a47587930554b72443933726e6c6861376b30674a344d636f71686a567879702b667550593553354b4435375463506d503076302b333064644a70755176323875366b70485856794c5546483672373333755135724349506b486e422f374a657837584e5752674f6f705864515365533074626c434a4f5364434335426b7a765353334763704c455a6b65354a6951762f41456b41554166704a6d3437626558634c4d385531745078335879744369634f5a552f61445a497a495932665869584d5562386f7032745a37484e6c6c75364e4456762f4146335343672f614b6630465230733949643349734f3237437567716c424775374b5a34326465722f77436b5a5155327a77374774464437715062724c385a553370667346702b6d66324c7036343355355869596e6949522b63336771645878444538386b3655357765527a5939586179562f4c335a394569495a627a4b53655a6c45357377576465425279634a744c6c7065383243583954705732794f586a65423757554f564b2b78576b417130614a2f624b784d6e77715739726e324c656c784c6c2b4e5042344a4d443947366a396c326765774e574d6b6335717a376e65313263336b5232694468556a2b58754557706b6c6477766b35476c772b33324d49766d48392f365448673563336239662b676c486f75574a38714954654878716b2f54367161692f62683036674d6f64443973536151465a4d594a42374a75724d522f78454a32644a72496542666c3173354337716d723778637744494c6577634d32463332754d6c6878596b365666786530666a2b55473959774a326b7073626252306b4b516e4639696a37543831644e553755527655415679494a694849306c78796f5730435a7a3366422f73616676454239376b4a6344536e2b44362f7031446a4e6651704d6b344f4c71617165527a726d6c37423874466662506c55424b42547672734b4e787244324e41686359485031682b7831626471517934707447665a5942355558452b2f694f5a7a78393661757730506959393950762b59616c39576e684e6362514979426f423050656476336e7277483174756c7956345350742b764a52503256796b78436c6c454d4e59454858754c7232554652382f51702f7a4c76413462512f794c346442375650376648714350354166684c366461326f32476971584a4c7737796a55314e3665625162546a4e2b4b5769624f664b5936476864506e703476374b583147354e644c614b5365466e6647316f393371326a4132727866426e654243375a336f635743346452554d554759576250426d5555717178646e4f796f6d2b4e756f3268454475427270796f45466e475a747546465a72704e74334c574d5a456e6a32504a39705966557a364d3347484f664b6d68694b30796c4671795a64336257303661316662454d76364b617a73525342634f68776d4a3370426b545774657335486b752f75742f6b2f6965745835444436622b48726262366565692f4e7677646d58507a69594e547974586b477533564f4764724749646e685578497a4e39716661674149456d6c585766313650732b6c4e61623537646879726b6b6a754c76437076536d4f6267464c394e664d33695a6162684b6941396c7136442f39772b3453364c6849326d62653844362f4f6a736565666f4839794c3152454b362b4c63582f53756d695a544f3436316e396c6f7436365658752b7977795368494c57314c4b5679475a6d422b32764c752f4b486d66464f703462556f334d6231644e4873594566314f7159316a4c4179785643342b44377150672b4266413931466e4844515042443270746d7351464b3839374d4f714767532b2b50515159585364593573764c334e6661767339427042337a46376a3654653849453863514d6366744b4b39594871532f74452f6d2f3435357834676e385a2f564858776f2f5562784445666e2b44366d3576543474507152346b7374716d6a4a7a72716d652b66797250733042656a395430325047456f33506358666b2f7269396f30725250764b396e2f7846492f337776577279664e782f534c386349635348456a382f6a503155386c386d583030546561513539444d624c7a614854584e344d744730747863567a3242383256427a70717353344657396c70453772322b446c486e414235492b706d524e4a2f49314374434a616e307933746e6259775944686551674c695957675865702b5a4a4459785a4c3648546350555051442f59452f4472796a312f2f4143746f39664b50455175394966516e4a445572314b354e4563797231543261687a76484d724c34464264303951633250526f4e696e7548345a756a307a4d3071647a6531366c6161657a34722f30487453743842304d44533153794e4e4b48443236427657357a6443696c6935324e7538696b6f6b565453363457554d66495175714e3362784d2b4a4d57476e7a7337717a6a714874657a50347a646943364331384772492f436f6b30343233377362396546326e50485154714f69345536463267354e33536344776d704a78464d6b624454574a366739355a356c3658626e685766502f4d2b4d536145367378797374476d684b6575442b617a337a6e6d794c63797946486a724a654d51542f725744704a4470756b6f436c315969385438787a7839572f77492f74302f6c4c44742b51666b443656493874387155704f62563672654f6165706b62517274544f314555544f36336536484a3874624455413870414464396e36696145532b37617574726166436c747635527032372f3550742f6166387731394e384f2f77446b6e34374f696b49314c386138793858316b78305679314e554369314d467176754632364f6778542f414d65394a545271615275396d7638416a5061497233657658694772503745333468656d6e4b312b696635692b75754e6b362f65777679504b497647647a77634b645748557948554447684b4e44342b565437422b39386c456e2b4643757a7041447037502b4c314a787530366a6a7a2f637a385a3959663761766d2f6a4867452f6b58683372523472366d2b4e4635443458366b35737238486e4335756a6d715475597444542f414a54616b6e3977534e582b70416d7359424a6142416d446f304a727278616334696f382b6e6e586c2f6c6e7146354e702b5265613350324e6259725843685932736f3431546d555538677a4f724a7677755053734a34636366732b58356750355341675a3131694b784d55347941505657316c4542496331557261373373476531463669645579756d726e464376326b4c68396e3745684d6e476167416c422b31542b7a395a4468642b6a784c47364d76655464426644354e444f6e6f69313839457050616c78446d73374c514c5257336e2b437333394437666853536b3172505a6b4f5a334b726b6167554730632b306541772f354e6e7a714930756453765036507854734763763378526d787152732b76786a5137374f5676327043744f68516854356d4f446b7179705878626b686975614370732b6c4279742f7836314c46306537396359344569344864396b6f3861625a627743635448414c2f347667697879474b433263617075642b4b6e374a78557a637a31685077626c383930335237777973594a552f43595038413657335a3567695644415447536c4d657476747a32383170334c456e6f4371697977546d754d467561357166325939456d4b5351665a2f5a6c7a2b7266765058674d45735a332f55307a64614645306a4b446f506c566e32507666394d3372593077532b6f716745784e702f4c4d6f6d6d6b41493135694e30453262726e4b68576b6c6334716274443063724165484f74786e78583744367658554341385a2f724d5847587336436a2b4c62686150496472503745766f6a6236712f6e5434463557635638766a507072342f355a35543552644d4e6c4f5a556e73466b4f56472f567a52442b4646314658736e635450694d30386c42716e6644376554327532335376583851393161504b362f48742b424f544c6d354f787346524b76527172627354477250314f6648425242546f63624730382f7743776c6e567a6d6b356f4864572b6162504b51504c786d4f49334f3335664e79444d6f44596c6a713869684c734336653871346f2f7456445a314f426579594c71776c326f307053526d4164534769336a7763774277484d48386d7642503768336c2b4c55333858505754304b3853386b70587466724939555042364b59744b6e7865665031355957575543336d586439556f667676376e4a6b724233376c6b516b426b5a303663364d5450764b327a35447745666e4635662b594f70363065622b6d2f356b65616555582b705869666b6d6772647937646e7250476754496c316b2b6e6877354e584d2b71657a50614a72614536576e2f6735505159696a682b74705270567057326a3242306b2f73456575586a7667663541656f6e707835532f506b443162385255576432676a4b554e4478626d6f4c5a4a42683245726e4973752b77654f4c32464a4f3432543954394a496e683758535a7053592b4839523658664f2f53624c302b3565686e5a6171736c57686f364c6f485a3079313831454248744b6a4b646d6238654f7a7548394d3131447a4d48364d784c4439323353574b34613232384d5a477568666a30535435354a6e503135736d3347703262354d65363258506c7a31396e666972356d4251624a43624c6243584f7a6a517a35766d52336a324c4c6b6d6d2b4d347a772b77723779483078386776673173397572356e73583574414e5448726a4579352f636437686d6a732f6a4d6565567578425137544b64504f4f5375616b552f4d686f50616378614a3452492f5039442f41423742385932543874727973504a78425a666f525638682b68624b7a4f6c376e597163572f363554317379325a7679735958772b3446544f507250596437666d33442b5930442f414c4c663979627854306539662f79432f4762794157654a2b452b7433713164355634494f6572452b6a447153616447547065503338666e6b644f6652342f38664a365076696e7273726e2b6f436f3638747661644362553039574f6131612b76587a467a66336e5037616e6c50672f6865582b572f3434654d374778364c5255703150565838645776377364394c37394852713776655a2b4354593872446c77614b71422b77366367424e426a587850565457547931396d31346d6664333758645034686f502b50487148364b61586f5a527634506c453157786c3435525038563372736c6d394f2b6f364f565839577a486f4e64515a743071534f6472702b763841695342714e494537613858692b4a48504b6238546679472f4e6e386c643777333863665448623955396e593146316f4c474f356d4834706870726f7a704b2f4c664c616d646a385a6e5355366873613237697863445063536e75497731333030715a76666249375165636632492f78482f46373859664d50502f79352f4d6a6338563958732f77486c45776543655035316e686d52356c55697a57795043755a76533556354e387457617966725a5352307939375541306a454763306532616d7071593074506b486c59435256674345664f4b6d4c6c43492f6c514c506b6b39335664637a2b51753973394a2f6339792b66735239716546376a4d5059487054614936693173454a35386c4a713049644453306354536b5638766137676457584846314f666f364873546e324f71307144357964582f756a4d666b4e6a445333473357666d4564744d54412b7064726c335767476e4f4a6e307259666c745056576f506370453539684c6e597941656d74624347506955677876506679422b345042586e553958326a7275534e6e757a612b57304f62557969557133666545416b6b714736356e7873443338624277436f516b58736b426c646e4b7274534d7a4c6d66612b666b665a3757496e422b6a4e704f7a6634556f4b46444f37334a636a36354c6f3446457a796162672b582b706a4d52354474352f592f2f41436968394f5055727a33306238796478574635466d55362b445532797968676173497234474b6e6a4234396b722f646e304b2f524877446a50356943592b4d377a2b313663577257384431785456313665556f737471554f56715a794e57332b4d37704379306334735a4863334f666f56684f786e6a71374256523376384133313576774e722b474e544b504f417255563073665770386f306530773555747a5561487a685456584b6e3654684f304e62576a2b7777707a4b56424b67636d69557766493531375a75756d4d356a4855554c48367666686a366c594f58503562366a59555444666b575a59584a6d44556e7a3030364365753442786c546851323564467a5a6b684f6c5a464b54674767334743727858567250437551796a385a2f47507a36374f4b44316838513270744461767068706e38337933795a3957545870524b6f58673232664a486e724b366959667039434156544277456d704a73705a76586874466d654b3763654a75612b4a34373570342f77435450304d326e6a39334f6f6e324e7269373857376f534e3169386b7042784c686c5934674b6a6b793538714b386147752b5759367a48446a55496258716873524a332f497437613163724538457a392f557430634d4c4c7333557834715a6164446a6b6164513056574d47686930483963566772394a2f3777756b372f414532396e487844774165722f714c7a31413955665658314657396a652b652b6465573770314253314e306566766133334a625130456b6f714a512f356f5a4f6e6b3654396b614569555a664a7a316f345672583849394d33396e7238344e627976787554307339523166782b39342b78437648744d694d4e66526a6d546f527579456e4f767458755a4451774f5541345059587562784e4b554a4b6a693970306f6964316567373977654b306258464f795a46584463776461477969454f726e7959714c7561393263714d752f7866777a375645685239516d6e6f57444761657344354f3867674850447163586c366f4b4e46566343394a3761372b612f4755792f362f726f375437586e4b557674466f5034304951564f424b2b496b3962304b662f414374663564366966696e3636656a757a4456746a356e3658372b6f327257525452424c6f78717a3534624d353968637654645a4f476f707a6949575442416455417a4b4c6c3762307847705733574b795035337330436a76756b43666f76483531386a4e36656736726a4849476b2b755430717170786f6f5a2b6c6e37784d312f38415076567a6a765a3363766e3048796a346f41514e4332504c722b4e6a7037496379756c4f6b6a373951682f794734574a486866374437304b30462f67516b513334576a796b5a5172714867325173714a7755315571523876655471636d5a4c536c452b657756725736786a46734165383537432b525941727265553366446a7948376a6b6e7833585154395a4a4d66614f7a79516e565665394d6f44782f78642b517032585666766e754c357669535a4b465456644e5767527171704f6c50574c4178653336664568503045532b38325364654f657450663359696862754377584777696d4839482f774333395635504c3744635744302b526c59586a4b45396a6a6672586f626e636b745265483277435847556c31793669354b4b3953696342664c7050636d76392b3955344a54387547364c5450484d6735354c3469556b6964484f67484c767a3467634f644e625869786f517036336f617544586c41524a7851314d2b734c653835326272715a6a5343584a694c52505161392b552b4f75454b50342b785566304e46517a536979734b6270733936387357635173514f6a516d317531396f39353936343833744b67734476372f71385969654d5a67656c582b316c2f636439512f57767a6630392f474c3134544c7030654b2b475865462b6e486d79617a79764a647147786b504d584132636e354a345049496577722b763841492b365166697053487463733275703439665269497471553454385137305135392b54563932495233573568372f554a324d7953547455374e77484c30374d624a535473323674497738716456496f49516d357776717738414c7549424e6d414a50496c782b5737453338687163306d53785637436e4d48454a6f354f57394530574b6e713477733171616b5179716d43464f55772f6c495a766b644f4a786e77456438693943392f6d77586c76704c367736417a447771594d344456506b684c6432503455523436504b506b7862714e536650663171686b61726a6a4d6b6e41357748614c52306d6f4a596d4a2b5158664d736b3676557047706b6174527a61306b6646366b4f726c2f4a6d70316c4e6d615358533356772f7954434d566931495a5844393330356a6355544e507735453338546636672b6b462b68342f557a55386b7a496c4e71735356796366507a494c745a5a31617456687a6f71756a30744c536c4b77567975576f386f4666354a35377772626261633436697a572b73593667527138652f6c744b686965544670374d7a50354e58436b2b726e616676495530334b37506e6c785a715a383741732b4752564c343173464d6430774f442f384166612f49377844786a306c385039422f48744c4c327655623163596a796e79455353686d68342f6d59335a302f63507359703450386a5230757a66462f7050674f43714a546f354f42316579306d626270374e523573505350787758534833694b745469464d736768684666385842734b574f6e452f6b6572477273704856704c37524773584a636b33414a55456e3452375a6e455a473235332b4b783438724f2b557954336156484e6254446e324166505664563944457861655455584e37436d57577156596847306c2f542b553355676c46614b6674505742505a66794a385a385a38667a73724d707a317a78636c54706378676b6e44347374734e766a66535a4467386644704c7578316737363771556d74686d422b31522f4a4779307a783444614c384d763772486b6670543549767772637a5047764c6646764d4c305078644c53767a4662506a2b6e71696c6b334b4e47725037656d4e75673732556e516f72474a63427366786e484a626c716145576a4f4e74716a31446370385835346c6a2b563747756a7a62633871696730386d4f5a4a5235364e444c68463870555430725633595354624359496a4f51482f414e2b3835475543564938493277394c507956322f4d4a365048343876783359306336326a78335143376e566771714252515a56336a506379796b4e43576d6953646e526379766a6b2b78487a4e7039796a7a745749695a67625859666c3931364f566552354f393874446c4f396e6b47646c53767235717a6f63634d2b677867676c6966687a7766787038347a2f6850452f3436706e6d4a6e6c36344b71356e35476c397575643645797931553855754f4e626b7a5a705538517730784a5a5a4a5961702b2f36552b796869524d2f382b784d52316e7545327a745879566c6235524747614c715851456633496d56676c644179454c5a3653656e342f7446477568724f4e49312f49583645416b3930676e73785a32704271347537476a79444a3273356d6266693144782b66705a646e46707478724a55634e57686c742b72703962796c43552f462b336e38584472482b6f3638593778354f2f376850397233613943643533724c2b50366f3750524452323556302b4475436a4764366536335558573269562f4a516a3073463478356f6f44744d792f63354b77506f6f57382b375231357647322f612f774449635939334e71777061634f7a4b2b6e51367275594e622b55496d6a4e776d3138415a664b7147584d5a333744412b776f413445795464374b774e584f714a7a47593777506e645746756b723677597a586f5a58777930594635636f706d72354c614e7971757a304d5779794d484b354e533732475a73662f41497a4d644943643261417956734852724c45746f6d6c4d65576a4b2b645864472b6d724b393662672b51566663596e76766f3659645454536f436a366244434e4f3261592f48396d6a4f64557450613343705863664d35504774656243585a6d30533644304b535535536d3076624f4b75676f6d394d50636c775137766b413533323635726e7a6f5076336369726b4e6b6f664b324f4f55366f484850484255734b4a5933316f465a67354358487a72505953663644346d3270553743744a6f54364f72334e54444d716a5246546275464f78466c4b6632624b43756671646e57524830364849695a58375573352f514b73585a4c5432695a6d646950706d6e7471412f68573658343953644d44597668314b50346d4c342f6b5331726b55714b614e707634306d4f482b6753715a5373774e7264594b597676706761504f3748493377364b637250536346552f537539736445617a506a42496854524e515a2b2f717a427a592f6d5851686b2b5553356e517358595a6b7236326b304a357769696f7a416f704152694c4c4571432b41557153416e7a6f5469483248587a467546544b5531484c7370575262386349333361335430626959305376756a6d596c674735693558554d6177325478317a7a4c4666735371647868434e6c756c653042716d6f533548624f5a484c6b484a573546302f776153706c466f42526a7237477557706e57794f4c69557666496f6c556c37675938304e4e72586779437365364c7162744257693139456f6f6b7a59343649696d7747643636475a6a4754715956502b744f627842794543544467536d523770333438694e364b6a52626b53523148386a65364c4a465a7a6d79737a775a43742f78762f6a644c6937536d6f6f536d796851704245326156594c44356944726d5435387555476b6d45334852624d4473795763577936546558614f724f5645635a796a6f394f33356c38706e64534b6665624a6a6e425166506e70546e473455396a706d46775a744d7377492b5266314e3252475a4935646a784c34644337674533696b396d502f49434f565458415268387079707a317059614c784e657971754975307a5a306a3055567a3755793468754c684d6e374b4f473333394876512f666141615947594e435555655a4c314479566d7247773477684e54714c4e7852742b4e413571714c4a71524b72734a484c515146326b6b2b34747670744978364b5343624a38657470783947682b6c6b3538756a4a52444e6255307477567a6748537679365557334579564d6969373376554f6f6b542f6851704c786f453256333138514d6c7a7779332f4b33636b386a3544696976514e61626733646961716d46732f453651395677626d727347596a5a3750737a52386638763841696c6e3957416e66386a796e6f69566e354d6d6472307a4d4456314b5664716c52415273476a576f2f63335554326471634c57384d464b2b7a384c4f65314e2f743745524d52786e4d694a614e345075676e774e774e65634c386b555972526f3154616f6371646a356e33547939554c47697556596538622b6f2b6b592f4d44465670644956756832664538686568567253684471513046546e494742352f787948696c6e626a7a6c3971686f4b35307a467a744f6c4c76706b63376a4d306630422f78584d38666f5a75547a432b53656c504a556e726a526155734b4d317a4b6c747a3673312f79534451574b514d4e6251584f4466616250684e4b6f6d59694d7946394863524d64456c55384d394e4450334a37704a6e665245596e443837744b375344364d4a5a2b586477465538454768396b4a5439354a49305245526941485a35674e6c6f35656779666b7a35364f7857756d6f4f79316d6639784e425a74433946484d2b314d32666d39536c7a614c41556171545741473733534174647558484d76577854767a717a706d723176484a5846476c445971507277544f6d2b6d4b356244304635354447437146736658776b6d4d774f5541525452546f2b5765537a39556c3278416642724c36326950564354494d6c6a7536566959784f7767746a46626c74353172542b7a5278555a38436777724c796d7244705a5833546755776248495232327167573952616e75506e39356b5977456c71736b705a53576c70307045446a39334b654e576c79706a50634b6a305048703948535730796f484b2f672b6b45466e526f6c2b386a487371777062456136315361456f5377752f58317a53347a63352f6175434b666c76753238754d3445656e7859362b3539326b724f75304c51666b3245776e73343353705263664f547a7753725637672f54496e6356644c78584a6a55704d697035506462665878473533346f514f326839534435615568787a7935456d4d357354374e7a743265566b554437747358636f5466517a506d53346665786b707559726b387745616364546c322b57503148754a2f47555a36765362307471702f56655366675765354b315a7a50343575613936325330316758312f765a6f36452b65644e70696f725453564b5457435242586c616e627438787455432b73546f4c34796a526f6c716d397563797669383031366c61796d6e6d352f4970596d46726f2f6a57502f30724d5542306f425166564e4e422b657636354e71536d7039524b585433366c456c4c474b71705a706334685a30546937504b45383853524b304f5038416834674642306e703641374d4738577130616134306456525479565566325a3168442f49334e393273436855696239795277323030396c61716f63727666684267644d7762314c7a6270666c64513061436567537a465438664e3937367178796f43574b59694957786b346d4574364a67625a574b5839412f5967424d616f334c746e6f57676a3538614d314636626374333035786c767a59546f304355345a6142686a45524971766653446a4175554c70482b67692b6c4e48566d7a436135304c454738596a2f414b30653170552f5566784533323056543245523572506b353745385035306e31344f424e682f30456944496b7931424d6c72714c616f345733364e46335033694f37586d716e43694b6c36754e73716452483376474838507a61546b30464245307741444a7778646f533232436b3659373154526c494e774a57452f77416574476646357a684a65353345466a77594b783937766b45674d2f322f675059494e4643566a5570744854564732303743732b5339383634795a6559354e48773648737a3030716361314c503779654e4a7937576855674375566e6173713354775449525a5335497a584c34732b4c5a6b6f6f43575244376b452b71566d656c50776949704d755275542f6930756b414f4930535a38554c6d38304e626b38624d71626b667379466338677a337646637147537a72716e4a525270374b6f77416b32556d48663279673269425a73694750726176577372376e765846504a626c547a306c576a2b43557779437a3653336648376e524b62316a4f4e427a514a7047497553417a61704b364c524378556c5535426e5531324446644930615873642f484847302f665452597250646f4c65376741303175416a3538717a705941657a5a6d2f6e5068466a4c7850375964567a6f61475a466f54496a654a383548724833366263316557685533464770496536684e507a447871516452364a39645a572f49554579632b716b5a754d314f636d6b464d366779366b562f72367267304e596b576a7a2f48396d7564527154326c763941694b2b544c442b48675866433733324532384944466f354b5531782f79416b584f7a6f2b71554b4a7564522f6d6c4a4e426646552f4d6b486346304d756832552b397579357045776b4c587839417333734b35506b6c6e6c4a493668426c344f6969676a3464507670584a3877666f4241507a6257507173637962574e2f62487a30635a397478386447715258476c7a426e572b70625a696d4e52483756702f3263495848514654676a327757567a50674f574f706655714c4a547a6942736949753437687934314a31744c374c4a52636b48423376764957674572655575414a706743486d3643713361536b30754e6658554a6e68616c6a36335564702f5a68454f5769714d6b51315a357a4d4175394d6233646d436a6e553064443730655a7852426d7465716947366a506d73767354396652375966324b706a52707337786c695348375265342f595436537041584f36776f4a6d5a6d654d69527a684f50334f6f47654e5031447042622f6255354f67712b664c6b656b6e7534796253554e5358742b46594f6359414371436f5373325147746256534e6862536a727054593773366e5a48644736326e684c6d2b7052534767485a5979326f374754754763685961574e4533664d627141474e697938397a554542526b2f51586d4d5a585843753775384f6556516256556547777675442f414e5736592f613048652b7869776f44392b304a34326e786b4366494c70346e70696f356e3269746e654e70544671674d6e2f6b55793639413872694a61426c2b544e6f4c7336364144682f2f512b455069477755524d7a694246554d392b66626658306c746c5a72584975527333616937375970395a4d6c4767774b754c6c474c577357554c316977586c704c396e7a4f35306763657a356833473948613750715a6d6470614d74464a43637572506f3362366c416a344b5230426e4e79586331474c4a43454135644c6e4b6d446f69645a716e5a6277424e6c314337586f367079566f7157616d612b5a595a782f5438625954646954527268712b4b343435795774424643482f563649776e5a53416e555977347577747a426f455a5679786e4845357464354d3373306c5237566f4a706859756867384a63626b3941684570776f6b4d3343415036455348537a39456442716455376d4c6c74314f6475462f525076314570544a4852504f435979554f785245794e4b66635033776e65436c55484d576e752f4d4b472f516b3056615878327654527177346b6d76446e635a6b416361317a3156755a69566c537978634d4b325466706168487153397a4c414d4143764a352f59475936616a6d546232714a6a702b6750464e6e69687935446d6a594b357445455338444c583270656850314d72767365377661584a352f47304e6d7143555445304c7a33525a5176544e6d7a4c51754c426644433553767270656a5770762f54526d2b5169506a4f4343544e44414d66596d416e415530503841714d304f78615771756c61474e517157354b78557544466f537552545976684647624b6c7a7541776854594a4f6372724341506c3447726e6c756778586e646b6c6f61447664566b735668493668737439626f724d534c5979313365525471304965547a3535436e706e496b334f47555339386c4d4773646a36535050463636345647742b51653950346c6d7559714c794d727443664b544e6b4942474c6b4f697273524c6d30665757352b773430492b736e35584a2f5a3653573263355a5832556e62536253444f48365065706d6c736147506c2b4f3633566e383033794e577a6d6f7039503135786c34745379566d35342f4e5255726c4c6d75346b4f4a536c314d795538724e7178475a4675782b6b465a5a63666b4f3566586b4234336c396f71676c7243374d4e4762673355787469667a2f442b4e655078724b674f2b35587663466e564d492f686a64457a694f496b6476696e686b75654c59367754735a2f4d554631574c7a4d396c4d4e6d68524962463179456242536455716d4179716779734a4b587436684b5069426d33346675494c722b6371532b66576b526d616b3978773558597171716d4d6c644f723953587056637833475a376c70536652596c596742783962376e794f414a694d52694f344d5955342b777a756c56713532467063593764423838355432726e52516f59383356656978696b314c6f6d4a445570537350634369476c4c534434354549445638677230375a63394d503842554c6d53734f6765386437744330556c3930497a42656b47656b654c4975433336312f325a756f5966372f6f49367a6638666e7a456c5655552b64797462615044383174504a5a5172346d69587646364c75707149703944356a46784a2b582b5244726936662b6639546963347878414c50747a6f6448526c715431557a49744a6e795450576d7043575673584a4c576d65676b7032503549314f5161794b673039464954664348456a415a505765514e7949596379574135506a30484c727a542f6b75636766616d66694a534d6c324a73544c3758797539716739337361317a6570423138773531334977354d626d644f724e586f6d71796c742f7a474d70784b49575a6134754e3562386f462f4a5571464147464371572f5a352b704461457845326e47524764485a32627379527756617572495570743566316871597146304765785a5a634e376b4754474a57743343552f3343534539483465704c39545847372b67444b31564478326454704d6c72373336347a527a75517469383871496c4f66573663546f6e596b714f7237786a79594649664e45443070616e594b7965517654514f5a6e5374655846515a744631793567626c3579463354664c7032315239766c30425a5a706351536d67723679514130756e446b7a4d646c7641422f35504f3569392b50564a584b64425569526f746e56656b4f394679714446692b7a52693565664f5846743474644c6e65333542436e363339572f6565764156316661392b624655324b63427078485454355374484f49565a676c7139636e523052637a2b54686d582f482b3933796470446a76644d6d5967622f41466f4b713164753539586273356c4b526f6d4f3232462b46317132546d7172546c717a6b7875517536554d4f4772715457772f654d7853415045304a2b73455031644458716f796236703974314d53354534314638722b534a5a30495850386937657a55616b7630766c54323054434d3569632f77426b30702b4f556764356d686e314d6c6f6a68646d4c7074647079615151473641485975514c736974724c397748706e48356f2b3961614f752f642f316d4e2b6378636f426e664b39437651786147716470787a356b627146464f7a6f4d7a58762f414655325850654b674a502b3530354633767974562f6c4f34452b3443434d36656f72566e6d784d394e4e557a6f4a556464507865663253382b6c655831626e6a4737572f77436a43356e735936715a7a4141326b61346a34415a554f7a35364f637937387836494f6131796f5a61333748456c434e6b2b6d65736f5843776f2f6c4c4c346c4a7838413645706466397742692b63436a566f4f45704b7167726b646b4a66464a52572f4632626f68714c6b5038725047346668684669374b366663524d2f514d6f4b777a503634424d4e487a5836636d6468464c6c503038737057496c7a5353576535347a35364a6347797a6d70555856396d7258785441424d696676786e307659534b3268574462745767467946725963724d74307173347069354c64756161314b593037567a4c6c6e53504a5761675a702b78383949583043796736506d55384555544d7036776e707936732f6a45357a455a547035447a5a2b462f4f73546e583531414e316d4d544b3635587a634249614e4c43537674356b6c6f42644b4c724a4e586e312b4658317a394f365369663841554f37564e62484c6b793745437442456d58514e5767355577396c5438744b5243516f6d7a745a5345453230766333375634587749746e682f6a4e496368414f6d6d624e6937646c6d38714f55413047495376536135677369736f565a305a6934623139446f466363526e2b4d42372f414c7330642b59366969325a2b6c593633586e76646645326a71613478344a646a4c3368326462674f574d6276684a504c666658686150495163372b567936747070643764432b6b566d646b61516156675852493039373470364552316635584c56376752306e4a545a2b67754435697344506a767161514b6e55392b6c69507273376e336634364532704f4d2f466f74666c58334f4256517454486f635a533958576f4b4233654b542f676d65733169656f6a39506b4e302b6d644d5732587a336350356a4157317635686e7473615135364e4850345356646f734d3171377a33742b2b4e42544438612b727344654a355a75636948597974425530787874754669334f567958507a4d316a796c6d544135464c755274637a686778494232697750314737357555396959695978496450384149613952534936666e4432792b334d6d6f6c61747a2f747a2b5554525a7332654e7946347573684c6e6831524839626a544e307a5a6d6e78775273723444367438306c6a7078307a696d727968324d71717165344f713034455438484f6a37554e504754786a4c4b4b7530484b7a39783942344e534c546459536645624e7172366937484e4f56572f7743687a55645a64794a6a38396b63456b30544b4c702f396e3039424d545a6e4a2f784c596f4e514f34797a7271323366434a6b70713947714e6164436c3257453743565a2f367661783877547a31354f6657646d61684c4b4851356153547a6b4a6636644b4833716d57787a4173484f72706659786231363070364b484d386335397159593559713577486d6f475a4c5361534e657379686b6f524a4473582f592b5869624655585274504c3475542f6a2f414e44314566324237675a2b4b3372786e537a4a6f35333147697845334a30394c52686d3637783448366b4e46463158784443646c6c7a456b3933476d35774e65426535626b3850746e2b6248384d2f306b6469664a51594f46584b6d64326962344b793030334b6c6f6e6a54392b504f72324753756e4b6c355470736a6b6374704f466f54456c746632413431765048627438763744776766333749356f2f7a45784a356533732b7436655972625a44577932694e38326a704b642b6f4e5363547a383968482f414d6736716e32756431706b523070396e726579663558306e2b6f35454b7a395a4869486b6c4c62516b4e7a704f664b717a6a75564678744861714668315244537856463158456931675754473477544e796e35615a6475476649536a31783851566c5a507044726652494a764c2f543439624a344d4d326371796962546f547168785a3571422f78735851726e7847337678674c437050336c78536c6f7a6238734458397337652f43532f31304c4d34314650785475657879534561496a577676667456464f7342466e4235306b2f7232475a71392f396267746e714a335a4a4556794b4f6e354f42783476494b7170467a396c69354e7a4e554d61773553316b31485666476f2f7744596443522b582b732f7a2f6237424c4d76356e616b746a4353315a4773586759747052374b47756f36394b364c45395334766b75357a35525543514e786e31522b396c45326a6445544855644766376666397372386a503768507241586a7670486830592f672b5a6446702b5865716d6f546b65482b4d2b4f4d644f36364366546f544b6a62334f35626b74564a42306d6673314d366c4b4b466c2f574f7437525452727a647238492f6f7a6667482f62542f47662b336e345450343536552b45497538317253657a35783677655459452b353537717875792f717358566144506d7838746a71474838505a4a50686d4130424e373067365078646258314e61633374792f684737744c733176534371795075696e49447355756a3961502b535a536b6d4c3557345538544d35316e2b504f44536850565a51422b757151494a79464a656f2f71693165746e68433261593177556a4f38326b76505648546f517a7275554d74507a6338666e6f2b6e3144716b697234372f6d6352704a54313272544d634a7867615365722f71545a6a703064633963644736597231305a6444724d3864444246492f65623543624571707a6670464c4f7939357664523873456448446159556957306363593778346476376f2f39784b72386b2f5039543038394e6649646b665276444e534b394b67644b5853337470694635376a58544c6f7657764e654970456c64616d4d6b6d6f773977396d456654396d304e6b6237645948475368685238656b31793363375173706e7056515857784c637671364672502f4165734666444547483052584e374f422f37574b37515a4e366f376e4e4d68576c367055746f6a5448786a6d55317a323145424e4a593079674c57417779535a4278334f2b7742414f387a37666c674b47776a52516a3369756d756e724f5377685966426e6532486b767774476f4f463155724b7a522b78534c6a4d6a3648534433426f4242494946736d3470376e724b592b766534476f486f6e6f4d574458646f35386242584f6f67352f6c30472f774370703948336b594b532f4e506d4d53522f4678614b6d2f43756f795a3844676a6233343575304b4b63674a667a4d53416d31767963365939555054356c667241556c64546b763770353737733971314d7168314d4b676b74587854366a2b43646d596c59704c37554b663153524630477870642b7a53304663766a6445626f467031666b54363261336a372f43712f562f7a323778357144516e4b6f386a3179363650727a4d4736587a57664e38694a64437877687a356c4237326b6f77542b757270737032397648312f374655724d306536785057645853722f462f787063365a6e785432722b4a773066386b51706f657a76542b54767637785a41667463656f3952502f77416d6c382f666b657076725a366530645953624d544c386a6c5568387363326276345266536d6e6251716f6746314e7a733950474d443443544d594f373158516d2f727a7662497a466264306a654c2b36522f624e3952507a74396276527658385676776645354d767833735871543672655a616b666a336a2f41497834356e71714e73584b4b5a2b4d383238674736705471724557653876596c68546975526e7378304e654e4b746f6e6d6e3461695665412b502f41494266325a505434504a387a4938553951664b3836445a51587174352f4e6d626e6e506c486c6938385a632b66772b55496b64577464464b6265527a4b393454544335627531744a62717a4f72375462485a722b47765165532f387a76796d31767a4f2f4a6e31542f495866793573772f4c74435a6d644f686b456b364d4c7830536738655472585370346c6a6753745947317243343077443748796b5a6d666f36656c3772547057506847706b4b717556547057432f6a65314963586f4954783342464b6862336c446f2b2f4a3749587345773633706e78496959477058557430314f344b376563794e796c70536d6f7252613268514a633573557a6d432b5a744a6c3833795276574c446351694241453142712f774c32396974735a483458534449365a46504f55752b307036346d364c6d4a4575714f346a67656e2f4146726c6375565332676b52636d592b4348536b64326d667a2f6237434f4d70726c6f6d6f6c70664f314445746c724839396d552b65656552647936475547316c516a4f775738486e47493648445748656539593337756241394c6e34622f6b67723166394966475041664d64765379664f3550444f342b45366e565a6e7865524c44522f6a4f48586e616c43352b554b30736d65516b636e5550746d476a2b5337526f6e4d666e61756e73746d493552736a39572f503368304e6a4d316e535a434a30363262713374324b7876567053356e484a7930777846504f3872737637316468754630774f636c517967317a732f683465504839506f4e745046504c2f483854497a325a476968456350612f4b454e68725377463947725162745a54736d7068722b5a746b4a797335775a694762396c4c53314e546f6636703378783644687a2f64762f41437a44796f4d33305877797354586f3368354435706c2f624c52736b7563634365344f6f2b2b50374c744232684378795263306c4b434d576a4b784e437672395873756e45633839773464735a32525173796166347770464856314648765663694d4678706e532f6b5648435a5378596b346a556e3367723575632f7743516348396466386630395147514a653974644435744e66434f456258507961524b6635462f7166384153682f2b433663562b354c534c334839622f3642722b7a3074424952576730642b75744b4b4751797565585578664a504670716e3751395258333839314855787a7141654e4266754d306a2b6b75425238344851416251712b35516e7367334d645775707458317961314b5a57755a435550756c39314a543936786f2f7743457744376c69493846326e3848313953467139586d675130305773715a4f5547642b363266624f387035716d55735972717957367845706671746e582f41417436594f6350474f414550642b5961682f33314f51784e413643547a6b696967754c45794b5436612b39355177763877544770487348764434714e6a4f75353150784d646a7a79497630457a47735757306b346659667a547a7059357865355a38556e6746337045496a37756b544334665139332f507537332b74415a6b352b7a6331787234537572597634532b763966356e53677639736b2f786c3973346a7a326c373147522b336f39392f37484f2f64395169784964584e4d777734632f784a476e69704f4174346f4c7370794f6251425555644b666e506834594c4871666a3976764167356f4f754834712b6857426e2b4b2b6e2f6b73734374507954314630737154634e38537556785a34376c4458353055554f5852775639697a53492f6e3433727666384176324d4362744465505674624e6f2b476f4c2f6d502b4666727a3570366c65482b6566764a5a344235446e3553356e61667379762f4851794264526f303665594f6541697571464e56776e50787966683969772b4835437a70326c713069746f2b4957646b2b6f507176356e35626a2b6b50685546486e354b77357648636e3359707958372b426c79543456577274736d7a2b49796374644d362b72494668772f77434e596b4767646e416258465972756e6c7a36396351442f4c4c3863664576535830303374767754316b38686f3952437a79507933782f4d703365654a324b7a32615162506954362b516b3250366a7674564c5954356674384e756762484741644e70336d317354586c48486e563833387930736f6b36486c506b6449704c34786e713062517a6d306d72684c6359554e57684d49715367654170596f482b4e41316c303266722b756d4b7875786e4d5141703155564f533353645938354638374e796d765370646e7158594c4f4371707775484d6844724f4b42344c4150616c78443733663750366d61644e736a70426f2b767150587249384e547a5737347036682b6e2f41494c6b2b495559665a46574c3875794d7861556c755a5633316554446363384f6638414f6e764a5536707871705a775743323947477a5a2b617468742f443652666a7a36795264386b395866534a732f6d4d36714d6976623844386d5a342f6e7031306654696c5474356a587a2f483766754a4f363561594342786d35684f65667a486e757657635674796971664e2f774330556e6138666635462b4f3371786b6261507052715a347636672f5277764a624e44527a4933646b3576536172342b4f476a2b543458364c6b594e775161547570703969377837544f6358714f596671312b4f33724e364d7247667a6e307a387338615a38394d557535794851727850494b5836424a61656263436572577366616e692b72372f765a37774c3569482b74365870505a746e35696f755a4654652b397564553767483372694f4f78694f7448717a6144644556383552433335682b4d31392b5833764e52675832424a302b3838684939723077395373724f5635486f2b6d2f6d3258466f413971617266467454477a61496b635944322f616f49674a66475333636277652f34646a2f526448674d442b7033317a6a6478396549662b6d66664a41387869686c386671733039526a7369796147616e743969375357735a457a7051587a4f4d6c2b372f5354694e557866346759664b4662597832733448595030752f4678666b74745737354a7250773858587a644d4932556d6f3962646e376d68687831773031454c39444f5655357a6e6a57733268372f6d367430386c50733572616d4f6e416242362f682f6876706e6b796a6a65526e526c49644c627072514366355a4132566c6d356873564f4c322b5265546468586b39534e514e7a696a4475686c307a6855466961524d326d655847527a722f4143453148365a6146543968576c6f71434d577a4465697a2f77424f6b41616555565a4f50427a684f59366948342b5447536e41414a6f55305a6d704c65746475633934394e582f414d6e2f4150784e50512f412f77416b395a7372564d4e2f314f395174392f506b3471535245336a4a6c6d5451527054594845306665793771632f3742506e2b62532b62344b416d5237654832752f3762622b476f3955586f544873344870356e54616b6f52376d705455656a41355059484950554a6e4a326e53632f43535038654e31544153646a6b6e3836694e30776a3858446163326e4176534c554a454466764375504e346b456e5a624d72505653494c54546d67364a537741562f5663532b6b6872674d306c2b2f6451666668714b76387971676e5255787a7369416e544378637569334f6a735a6f736a5a5a4232367976504238734d4c423661355a6d665961645065704c6e584758394278332f494c79436275327a78664458557a423852757a3773354d43737958417371584d6e4f716d6a6576516f655331584f6e5569794f514f4f54384b524d4c45445376707047597a6275486a382f755a666b663677656a4872746c3550706e36672b532b416b506975586f57792b50616e4c38556c366c756c7539524e446470556f76785651315a386e78304a3976386135737a753042387858656a6f616462527a5633534e6a2f414d4a6637732f72333330333873386e39666e302b64355069637564347034357378617034586d486b46736152314834576454466e7362514d38615a324e2b496c4146464d73776d704c42534f657237505464455535594870503841535438395a764b4d66786162794b2f6141643346677579736e56347256745a6d624f65782b74703763546b7258693078667943357065726c6238334a754b55456448666d4c69746f346e674e67504f2f794439453476454962664c7250442f4f4c586e566939356e654e35656d3231552f774446313642735a6e704e47665a4a486e7873704d6963432b7334347158432b67714b7870327a79386f3072395476573730387258687a447a445148465a4753616344513035354e4757434f3753355273302b50636e6f6c77314c59524b64384e663148596b7839356367427a6776464c66496555762b37562b514733366b2b71506a48674575692b6e49384c7a4e4c52784a36497a576c6570742f48706a444c5a4c59386f394b66375773302b416654676f397350577a7067465a2b6a37505462546467637164576977726b68493769655a353656527879446533736a4b4f617956736f535847415264596e6f43304f2f473166736341682b2f65656f6a4275626e56436b714b4b593835334f5a6f73645643686e45463837714d2b2b6546544d2b68584b422f58457241552f543935714a58786734476e5a2f6f676f37614f567a4c574c55385432424e5761796831414e5a62504c386261474e4572474b534c57702f3841674963626668367066515074317058642b4f614735446e7a664f6a327344506c63327778586e424567756a3861697159776c6b482f4848615465436b524d6e4d7057754f4d68456b67367877316c507749655442515154364859596c386c4e764b486f557854474569356952492f67366b2f662b7943615876666663502f665131346f5772737250646258777a55394a392f626937515458784e6251635369735748783942337a4137336c376d6673614d65547a2b775970556b536652505772344163336738735251746750374a397268754356623650624f5359756c317a773972673666666638706e794f2f6d7950724a59674a796b554653773155494f466e46534a6a6c6a6f2b7655367049547639716c7049532b50374b784e5a2b384f666f6c4a4f2f76504959774b366c7444654e3730714270354577724533324b6d4767666e596f6c5a2f5755582f564a6a766344757553464c476c4d5963594a507966663739414e5759304d744763666562334b39314b41664b312f56304d722b56517353542f6835504c4b6643466678427a32646366796e2b6e50342f70366750717a4d4f635a5232353378516d74495655734b415161793470767364424c2f414a4a2b4c42624f4a3443525067475a6d6e76502b30302b384f537a7a6e59684b4f3271694f59596f616145504a78715956304e64645949596e32724a63376834726f2f4c385073392f42496b392f70753363754d5a475571674f353144546b5532526e534e305361436143776456395a49773131457062485643356167544730514c6e7a416b69636f2b78505972382f774334572b7846324d6e53544478764b444f4d4a74476e6c62476764536b7a5062326f414a772f4b735a2b7236796e67705035415376393837587635676f656c4e5378465046532f613446504b357047386b6266483253364e6b6c4e63725466386c484b6b6877656344353275506e78434167615a325738422b44556e634e38594e66776861773155426f7953547149772b765936644d587a63617a35366b6f346b43634855582f745073556e765774747362676c65395736497a755330536f4f64634e486563634d743962632b676b7a31764a4a4d304770545a315a4d63593858594357664574507952785763546b4b52584446447a5241774a587536436141516467485a705675705879394c47544b53546b6a55434f6b4946774136347a52574b6566314f336d326a314e663251664b503548386150554c787971577834782b7344754b4757736150486c50306643727061374663736a3748466f55334d6a46394a75346d4d5578336761327541486348745843395a377072362f714f682f35682b712f6a6e704e2b4c766d6671333572416c4d654834626a53593252734e6e5659666b2f6c575851475244543857654e5838785675664455636f6d4d7a5661584c4b4b792f622f3679303654625672574f4f4234782f5366304f3966767970395150493854304f394e764d76567a7a445a7433646279444a38506864715068485672334c644e2b70573278452b544c5955727856637833474837444133392b54324f394f317161635a74666249692f6e6e68666d487076354472656d767170346e7165466563654c49626c37486a506b57665434377435576c5733356c54577a4d4a5a735972516f536646633448765838464b763337774c714a69596939656167674d556d6d46763037466a444f34316969566f2f50576e514347696372714a42596339416d79723939533732665a46494766777346727a6e6b382f734537534a663144716257366476612b6366326b463958664a416c704f726e4e6165522f6f552f73512f5a4372726e6d4a38594865663070326f455465514c665146585546396b676a594a6e4a6138766c52504d6233646b68506957413656626c6459412f4d43536367574d3738783744597638642f794b38782f466e314f7a50556677772b374762512f557a2f4b384a446c6e6d2b58654f5664474f3657314334545150363751585a793642464e53436a583153334377734c307271566d7338673954486f7a36392b432b7538486a336e4868656d57714e3062726e2b4979335a757635484a52586244706a52357a4c49795367736d44794b6651723474736a6f6b4437416b2b54764b67587758704e4f466f46706158674e4231317a6f746770745736724d6c74656d694372694d7575554e4b64464f645a4754457a524d714e53506d643735335568306773627a52476f5a2b732f716c366366697a365636586c50715675446b34633256794845793737653037586d4f6f4d44456e6d5a7973547951574c78582f59314844537069353671393471447356536b7a617257327062625352354b6679632f4962796e386c66552f533953394c5130564a6e627850682f6a52324b5a546859446131795a306249652b385035626953554c542f414e7261324a61414c4a445a6a4430644b6c6156327a7747767648465446336b644b342f386c4d466a4d2b366d6a71544e68516b5238684e615335564c514369414f742b776176592f67695856332f65657641454a5857444c38622b646d755256524e6f64735254556f7a5770645147682f4c424a31694a32304d44366f42787861536c422f722b41315a68786f2f44786a685a3975514f4a584a3047643752534d397350777371573130704752636c633339494e36666b396e45492b4e527339676570622b30642b46763473356634562b703335503841354d2b6b2b6636732b582b6165492b617a654c596e6c5774705a38666a4869755a6c52795a32706d684c50376c37316d39644b384c56546c5548557a395153774646394848375471366e7671366462626131486c727556674f7230714a314d5764657258484d4f6c56436845532b4f663962377a71306d62366a6e2b596c304f4d51346b2f7744506e55705941643350352f6353476262726955336a325572314a53737a42706d583969436d495632546a375a506a43546769765149756673757557595055582b4266445245524d394f4932352f46587a514a5761586a534e756845636d62527178636b59717a6c6a4f4d795a6d4b794e42734a4e545a4f564f7033765254784b6c41355052434e7a692f724f38634d39384465587a4c473736692b4a62654e6f422b3261486a526b6d7a47794b3249647256364a4e6e30554c4c504651366e664a47523863306d4a352b6a583831507561556e395a784f4a69664163507471432b536d6e4976377a59305962327171647971796c6c6a49352f6947506a36705844704d495745763841535451687a66596b556d37342b663131784878562f6c4962566a6f74544b5173564e794c745a424b7748725969696e52752b7779726c6c6e7559776d6643504358316f456f2b4a4a337a665a622f566137654f345a51684f5971592f6a6250592b424c566656456f4f38526c7637387433764c34697541584f582b6e69536d2f4d5078692b5978536c667453463355554c696637323646695a2b6f452b3252726b672b744d4572414a63636c44305272352f486a33704a615376384133442b772f774366696648396631416f765a6d3275342f73665a2b5350565648396135545a554f5a6b2f5a55487463706371552f4e336f4c6158735a3962703841315554754b334739664f41356438563530584a654c506a5131617256526e78313948612f6b30356e5a3668366c3471536c6a6538392f2f414631336f576f432f616572646a7a7945576733534839644d7937786c36726b4f2b5a48474f6c4a564c7370664f725833356d324f4c6a6d462f384172707a4c67665755676e59383867646544337055745533654d5070797279595948785363537a6864546f72357849717149364331502f6f7441506241502b52713737663666782f5431413741663274767a316b2f4637583871394b765653364d505233314a326b374850493956494f733850334f786c396a736354636c733872714a3839497459536e45722f414247565076655468357466526a5569747164716f3949422f6d5a2b4c336c4f4b734e2f3132394945594e55677648615635766b795a3065464c737a334f796b614d4d4d72503841744652384f6344476f54486e7877706955327741393346377255695a78573242796638417a342f76416545782b6e7650782f38417767335877376d3439574c366b6573765a587864757a73746d7846324c775a363363596a376c6c56514f754757643570495a6b4c6a47687756644f6a374c6250764e582b5138315353564f325837635245783948425a5661336b505832674c4b366945463166454e5a66595742392f51317158785369372f414c50657a305152516d4b672b566f7a612b38374e4f6444446934755a6a6b6f583036584b635865566158362b563346442b756e5055427041522b52596334585948455530754d705850716f645577706556452b6773316c546f4b6c6a4e2f38526a537553584f72393566474264397a657236372b67562f304650526d31396e7a4f4a4f35556d68557673597373616b59394158756c6d4e73557159666d45464370526e3850784f614a4f54777753427564432b472b4f497630557164464847756361456e39654642446d4b6d7336517559777243364c4f6532667678484d73456579762b7263335a2b33334536385739514e333038386f384c3836386675706a7577646d48794f66647a4c356a3170726f396637742b656a35584e4e4b2b72752b4a5a664733324f307633306d48387a4454574c52654a3434485a762b3831762b4c656f2f6976344f6573486a744f3475377962307371784e724a304e5264314530592f46704442733279575755466f49715a724c7136355073634e4c7146736638414e7a6b334c37506d7676717a346a6d422b476634762b572f6c352b53766748342f77446a76795931506c6532756a797a7a664b766d317066432f45733969373966794b7168656d7355725844397a69333274527a376c4b306d3841364877394772654e4f6c745438502b346630752f786839457652663841453730657750787439484d56666a766848694f58556173774a55582b5462746645513930764e66496e4a732f5339793271563733303944394a7350355a6b75586f782f5738545574625574463764717775505977562f596364626a47593151585454464a6c7a6771664e434e427872737a786f624852514c4741357753492b723736544837464153424853747476796b613065706c6e6a7436644c2b52666e31526149437939794c3575686f44796d66574c69442b674e47546e30536c37562b345255715a4e426e397674556c636d735a37785648674f46364d5a704656357a702b504c6271314e59744c786b5853786c6d7a6e6a516e5332394b656e764d576571716e6a4a394130395337532b537741736345374a7a614f7a4f42357166377466356d2b704834752b6f512b47666a333676697253743064422b677a42734855354a6e366d624c4e6f4b376b3663362b59644266476e6b334a3154476e2f596c4847464f546a37665a744b75704554656f3432376e39306a383966496f2b6f3050795138777a382f4d676667494c4c5269355436633533786e316c66305572644f796e342b6d316a444656496e514e44544278456e706a32665369324e6f7245767a702f4e45347563662b512f716b5879764751727a3869645370776a54382f506f397148684a7135386a43594b50393378423878674b67555472653530662b6e582b597054315739612f57583170386b2f387539562f5566796e314e3867696b376c79326554614e5770784b4775716a664848486f3571314a59667457504f71542f41492f4e37334358662f6f58727030694a6974646f723458317336645538685a3549342f332f766c4533426c65757863315033455368386d67787a524157414a6e33767449656d38756c7a554975344a456b45747259756e2f42443238446b363131794f5736586f766c416572343646596f42767349774d665a77656b464839412b715a7768347973625264377754504e4e7a6a5965504c3635416a746c62476a444f6249317537315568644e4a705539686334302f364446344f36453778353065382b72317149337065557931536c703830696148365a4b6c3143667364466f6461617638312f357a714d77614134762f6f4d54775157536b6d785263346f557a50596d7253746f4a4a6e4b786638676e696e657a3345414b63494a446e2b6566752f4d4f774c6c6b76574d4e72623535505a5458796d56513663667866464776764c332f48456b47456c6e52344a2f4d627630344f70623767646a7a794d53717471543963717531766f51714d5668336c43796b506b624b61506c566f666f5748556c2f7436432b675a7539676d34775034583750316b4e31554c5771574b626f3154446f4854482f7161626c4e6574667a4e30456f2f66456950796a376c4553656e394d32696f4f75483961446333777a30623950764d76535150494e696d504d30327937747666494f793776644b527563456355302f636c657366436950532f7865663642337947776845464e39712b6162577262454431736632462f774156783942667845662b5174725652376e7131754235466e6531534f626150546a4b4851772f46712b6d6a42365a616c4162444e48343273725336445354567741416b2f46352f74657076314e6e3466384179485a7a5779596d324473525854523674644d6457516e747a6c614e72554f5a6c76556d2b753732517976686a324667632f55686e4f537a39755452775a7a353434635041576834447474792f466444503274765631716d51385257524134714a416e694c4e613352315543784e54706d4c71497547413067587a494f47534d36556f7061737a504342482f41466b38743852395066433962796a7a44316d50786958507a64585376487a505a6a687a5a6b35624370306e497974495a74545571697a3430746d59386d56662f67542f414c706b755a7331696254694b442b61702b5a58354e65552f6c702b52506e48726c356c71717a756551334a79494f4c79644f616457504451755846754a513358304c305353756f7a57326a32707166536337784d6a4d505a30744f4b55705342552f3434657156486f543633656c4872464452305338443877774e56396d6361364b7135586a506d505a6e5436756353434b55575642776d534630584b45502f6148477430314b5a72617658663841386a2b697834703554676564654e5a6d37586d5a366537336a6d425246624556525a6b73746d53486b474e4a56704c314667346b354d4f65584b493649615536576c7731435557696c6a76476d4a6963534156666a35786e7a6d50376b55756377565a497052424e622f4b3747616a4c716d6e6b6a6c365178696a48347452755231337a4f555038636f4f756641675071423466556a794b62794c675a3871316163614f39305678795a537176675434764c4769667165556330686e6e574e582f5457464877712b4d556a6d664e564f36635455633666376e507262503649666a5a35682f477667463559326e3446342b43543238614e577835417a344a37554e355971373765646e324550496b394f4f4b6f432b77316132534c506651704f706576663858722b513861666a435049302b54654e612f68676245336d4d6d376e61666a482f6a7658667964666b35614d503841466869715437546c314f6169533476367774615267425338443465714430357874327a4847422f52532f7467666d6e35422b562f6f6a6e597671596e76696671393665356366697635422b6c2f6e75446f446276535572794d7a4932302b502b543146642f46362b54557a674e4e4a4a46746a41536a6e38643876504731394b4e4f2b36764e57335331527a313964502f6b322b5235312b564f7636302b69337244672b6d2f3471366e6b456e6b506c2f682b4c4a7850717034706f737638417038384f3853793335764d39666a3758522f7456505878726e563834756d34726b7874327037624e645062617537552b7737512b4a3450705a2b4a6e676d6236486567337076672b6d754563364d763666694f624a6f656f58714270787a7056583542355235686c526d37553869724b706c54474348762b6632702f784834763635707a716331376276364479492f2f4143683731797974623167394d507830386532673270764166482f2f4144507a766e7a324d2b58796a794637456f5575586d315639577045536459336f4a677652322f69322f7469715670394c324f6b7a5731353462683535632f3270657865725155624f4c4b76723151474e4c656b7746384766744e584f4d63553866663078677341417036304236737a4d75753364742b332f416e4e50384d65517a564f3970374c677a36706f3831714735795663616c4b5661664c53643166785a4b53616d67674869546d2b7543756672716636707a646b4131636e5a50436b527248366a72464c6c49587a6679457a6b664c525346584358334e57627079397871496a64372b7466384147373637565143544c324b52596b3675547966444b3639646e326b455357746e79337471374e596135793747736c6762356a61414141725562474b556b4166752f6571664f31534c705748427a3650593077524a426a72354f314a4a5a50314c71426e534846735a3778544d592f70377630544c6642396630466e666a2f35725434523678654637655a5755614e50562f69354e47714b6e33386c41566d4e545a306b50787565366833424a5972564b324157677a7673643756347a5739665050387836392f786a2f4b5633676e6c634870763667705a654863374e374f36664f4e7465732b4273756c6d466458796554334c6a4b326a515632706775636d4e516e38504a4361377a623665593356346a7074346472512b55716c6f4e4d392b546e33355653737654306337506937424b7235363652664a4855677648584d6457795a544e44366f486d6b31314c584a6c424f457869634448796a30673864737671386e7850427648793877706e5a71667a70346e696d685a55726c2b426c3271737a4279476a2f41425a784c48535072546e6239715a714b58422f476a522f534c546a47376c454e302f522f77414f327366573154394b76544e79724f655177326148664373664568315556374f786444617032515055324c34596a3735337254436d2f5963393150312b4d633264307830744d65766d43336a48682f694870334c612f7741626a6f6d6b5a4774623568707a30754a4831386d6b697a732b6f613564445572586e31474a7262504f495a7678543070447258663145326d656f34486633642f376c506973766965372b4c666f623548443564353935532f4f4431513876784f7148477a706634756a6a634f6e5752714b2b547935476c39776442417a536850396c787664533037357539767375684e72653876586c376835726f655a53344f693546616146317157645972705350776871532f4b7466434e636f726176534c7152365a694a70645361584f346d6e7658787a35693050546a7a7a56384233736e7a72784768336a2f414a6c34766f2f796d5872346576334d2b777962522b5875546155383636324d376d786c4f63777a4f534a526d522f57535155716930524d5448776a31352f68422f63692f487a314638437950456650765679583068395478776c5a65396762444e6a477a5757536a6e727337473733496d6f3176765561314538796179347449644e4d634c775567765031644738577a5775367672312b6f365a78666b4e2b4e6b666b6b6d54562b53666f2f664a644b4a654d386938797738307271624859716c354d6e4d374a5179587934475a376d736c2f5858554f6d2f5278534a6b462b626873314d5a3933624879456b39514d7a78334b384e3834387162715458342b62343176624c6f7455733038315154597475716d5945355a456a442b323870313067757233396d423356427a2f53366c475a6d49483831487a6e566d71387a38723138356270732b2f796a79432b434e6b774e2f5131363741614d594550313536776a51494a4a5844502f41486445414d5031515074316a4e5a696538524e6c46375148397334436b4a6576672f4d6b354f434c59564c5136634749586e72427a692b622f4c334b37542f414d66726a45682f57672b7a6f6e6d494b5542527953686649796e4e5a7a6a4d31316b3648396f503373517a6e75695a2b31646150763841655965796346385a2f514e46386248476a3674435072663930414658506d41766b533172766e61686254574a4c536e674c397a51593150764d6661416e2f51573736662b4e55307276386c325a564d78595a32314371715057306f4c57614c524366696b5a3769415748384c6c72364c4457522f377659432b42575756702b474f6b44646c2f6a4661376566465265315772714c596a536a77624a4f53507137566a77614d48784c534d634958414b6b4a4a38774d2f78706d34432b453557572b7669462f49343758344664714c5049682b6869335766784f6c667431625463696446564b2f494e4c503841355244636c6735387371506b37374855797a44414d34646d5035596a74322b583968706c35423552424f2f374c49682b3832695679716e545456496d6f6536646c765a4978396755556374397957535767325a424f61744b365570576b7449695a36526b4f2f522f31353876394b66584c3036395a38572b6150523857386738663036342b704749395050793943477a592f6445556f4f7364616c7a756e2b794e6f744f684a392b4a5141553270467158704d6a2b67392b4d337137365a2f6b703659654665712b4b33503038337953476a566d712f6b4e4c485668324b6e6e71326648504a343278697556774a30446161344a564549482b3547454c4567486a3272616c72566b56442b54486f467a7a394748354e7a5832634458384132457a66724966336b753362466e4f3730627339667950334a537a345a65302f4331684243367757392f304f522f5671586d4d31377243352f517678653058654e373231347434567a4d525070594c352f46394371667a4a424b6e6f79425a305364316a733950754a5445392f63514a4f6d644e694f7470674f74706e70467378362f6d442f414b6b526548637a64725377504750564e6e6d555368374971446138586d31566139334c4b366462546c7a7352744a66622b7651315467467a715a374c446b664c3048494b4b357a78323766583146502b6b4b76564466324e335538333744586a566175677a78756132624e517a457a30612b7065754b75784d664a56787445732f6e4c4f4f6e6333733250517a6e78304550625769735277366a5954754a6e5a5252793177795952347553792b6252733146634f4d794a4e656d2b75565576536c5a4664443273507164424b787a564f6d544b4d2b6c4d644234492f774137505633786a31342f4f4c312b39516b7364466961586e65787a4b4e62756d36674d7268546f6a744851716f6652376e5178724b723245432f683455665777476b44396253724e4e4b736430696d6f2f4c36465a37384949306c783043387576362b70795a456563684d4f6e4c734f31587534706e796b4e564c5466377959466b302f7666385a6f6b734c4a6c38573838386f37314e5371732f506b6f30527362446d614e664d2b6154542b4e74414d5336766932496a6f6c712b47676544504f66416c6d4b516b7a6e457a45645a456f38642f4858792f795462526d654c517a2b553737397446463773375572486d665477714274462b6c333253354d4c33636c37447a70556d6c39366c67446e752b45496d31596a644d3842765a692f6778692b48654f5a7535363165664b79764b653569504a73624c6866416e585573534d3563375131654a57684a496c58447864536a6d6f54396b5a6c634957482f575536737a4f4b317a4933372f41414e2f4a763143322f4b6266462f4c36746a797a304178383368346b577971506174793549737465446a597573454f79724f32382f75434d36752f5949754d615a452b5a4a675a7078317156694d784f3355486458777a313739502f542f6b6e6642722f4576485973343577624e6f507a612f4a47354168436a5372754750515653793564497754723453324a4a4e357569692f5561624a2b57644f5a36774c593952507a73384d3073413262667164365a352b5945694f5a69322b535a62346171487a467863756743434173636579304a6d464e52726b614268787a6b6a434b6a7058526e647772774656382f50483068526361482b7658703143384b557a7052583568786f344b6a7937426b324c7530334d7379616d79706e4c715848375866436c725a5532542f5a433375722b4676762f595874344a2b555347723546347835586e2b6276462f5934636a78627971447947706d56693446546b61544a4555644a32747a576c7262554b593268785578385647785175446c5a706e72586249325238502f41434f387345323664586a42575135387a48324e447442684b467234547a57304b4f70537a4d632f3230554c347a32714f4d314f506f4b6d46315a302f43524b664b6649664350552f77424c6655666131512b393478762b4f374d6d72347a7655356d664f655a4f432f33736845367a346b7838574d66657345766c4171666c4176754a2b656d73566d747177504664363765507a615474366a7847702b72463465314e664a50466f4b5a616163464f70646b467436456936506c7a386e5058497a6e6143536135592f5a7870395a4d355a656c54786e346872356e5663377739437171596935463241394b4f685065707a71454c2f6a6a79497954374630486b695266703357415268326852534a34384330455152322f532b6d5a74586f316e554b34584b706e4a46636d544c6e6d367752763931547243546d7562556858443731617769502f41482b79662b6758374c45504f6d32486e61616e5959786b38507337684866466d364d7266756e6c7a386c714e4f6176695847354b6b396c2b5a7a7661593934414875492f736f756a6c717a632b35665a4a304c637147693251475a4a78646b7175534b306a31326855616d4a35773568426e41644f564d2f7542316c654e767062563155733662736e76516c5a31414258395766535944575238616c4a4c706d6a6a476d587175444a536b47396f6d2b306c7041423761774b5a327a767861625a5a34687557727167316f4a7a5437632f4e64524837783465665254797163666b7a6b6d6169506e3158304f54596d77492f54684f62633538394a2f4470516c714e377261454b6f6e3879314f6d6d7a2b4e7a3558444b78456f2f736a724e49557a78744271365641557a4157687653335165394f684d546d384348756a5067706458524f6838375a6379746c5138585072504b47647678423767354d59455a7a386e3934416e76583174726d783147664b756438644e70452f373839464d2b62516e53314b727138386e4a324f386c6a377963773467707662483743703661557567424b323969544f7065505a3436756174436f373436683339584f30705150626162386d6a57534e487a2b33524e45614136416854326c526634304e414970337131736450755335393971674f7253466472774e3064657249376972786d46545634346147353971542f56396d6e324b63414e6f4249386e7635636956717454446e614565445659374d435357616f374f66394b616271633969474c794457316a4c32314f324f6643786b6750564237794f646e475871544d7a50475162386432634c7949382b4e484f4b2b4c507356574544744241396854557a4d7256484c624374713832615552463141494932665736677151624e3353536d4a6a68495a4b6e3238692b735a7a69476762706b637a6c5a707a5a306146516965564e4c70394a67547562484b796f656c556c6771534a4438774a644e5841555a61335656666d574c756673664e736150584c70685352765570615853727a4a74537770484975757a2b514831744e4a396a6f4273344e41394a6b784d784d5344557734376143706c324631376274666272524b674e44456c7a334d7563766b462f38664f4c52303358614757305266325036626f506645494450376e5146322b6f4c2f3841753439614e4353376b3356376c7743395978664c43787361545a6c6b386d662b6e737a32652f6a4b4b485667664f6d615767357a486667516e5539624e755a70362f6441394474576f2b4e766a65564e65535a703835685a4552347a2b704952532b4d7253596b326f41464f503364582b70543762627a62636771666c556d766c457a537957396f7a30353942396e306578396f525032467a39514b4636795a7930683930764642663964587370462f73443646557a496d4a6a7147754c704d3870727568454d7a6e614f39615765782f56577746595361577075587a504e4c6c7935756c6e394e6158312f746f4953384770536b654d54474a365a462f5256552b4b5a32687334577969764a76637a6b576d32764774626479564a7a794b794f4e5451456f7173537634675374696e566b305068616f4f554b69597a776b6674767968714d7032314456437075664f2b463079492f6a5873704e4d38353930585673462f774273706649486350677164374b5a6762567750614e4c55783169516d3667714c6d4336327276585a456469767549523349617159496145686c50565255576852506b72454b47754c3341314a4556765a7145715545534a447a54516c4f6c6e52386f4775462b76384759684c4f4a6b68356f78325a6f5477746e71557830724641394153424d34483859726e6166654450797944564e4e55315865773275354b7a5571526f51524b636c476f644c744d6f4e746e766454526b6c704d374b686a5a696e49566d592f74554168462b744e5756645955536d374e75695a3971794f6f58576761314c3430366e5858455762396a69394a693344314e4b6d6d70494853303635763643744e5055387047615749666b644a4c725a2f3731546b72705255466e6147786e566e36624144506a646578556e4539563170494f4e5376615944386f515a562b68674b304d743361415a74776a664a4954527a7a55544d744d4c4533323644495a3673666e386859504b6f625575436950374852637331682f576e352f7439674d6d68717338676478327630325867716d486c6950494d365632685a4355777766465044516c6131356e4757546d774162376e4c622f3267476f4f4f4e4b2b636a627638616d5a3863586c4863367a754930475a61346d4f71514b33734c545851325134736e37492f565979575678676d6f53654274796148394e6e764450552b4436443272666977313256365165465a46756537486e302f466333715636336332635a475277414e6d6e6e646f6e595173593737484236783044574e6d2b7a7959322b386738752f62315058664132375169726c64354a50512f6934777a31645773536a6c6c69765844506d7935502f657047714769656466484b6137716b684d6e71754363354765594b3664476e562f326a4f715a4539726d53707a3834356c73627a4a6f7370637438564430444437724a7935305334432b615230384d77456e56414e62586e61435245713230786679554d682f654853617870432b453532526e724f6f62413435526f6166414a674b477778543333306e3741696a4c655764757156314d736e4939523532643044376c55483941513055794f4e7a466656455674374e316a666d6f565a597632724a6e7557424a654e5839664a58556170765962474c2b713974544430316e644a546448596f5a666a7a524c537a54594c454173506d583065664a374451424e45793945696e597636725a6170364b356373364f6e545a31383136365953514a554f6f4436612b75643169716e51365539487655445039515976694e79704f3969644e39466157706b54484566562f566a436d5a6d54536c4c4173393277366a76794e6279686f55383967496f59395a41684c396c6e454e6445756571544e4e375678446c43504f5a43355a5563797030342f74545077626b386d6f427261514e79706c6932622f502b676d6b6d6a3974694936676a5336646c556e457a364436494e4f7a524d6461747a483657652f6f302f596c5370494f57582b495553417a707966735164573679705a374a374a4d515a70616547427a4e4777526346726d4a6e47626a4a4148334d5974724f474a423751393377384d4341676952376f4466483241372f69716e7079556f563757567a667572696f6a524a4f3553325373474f6f6a5853756834737a5442764b4f74656641633875765573385646784f47614a4335577a4f746659736f74463355794a5237534172677374544f6c69416437476579554f504e4c53704446302f336d7443625635706c704b7a326d57726c3843616874384c476337663841657a652f61304f4537444e5075492b6e37416b4957676f756d434778576d344f75687036585538526c5377766b534464736e6471746155362b2f6f37457468733971357175716d6e2b62374a6d7a2f5237774532624637656e4e78485a527372524a6e5244486c354755566b69354e4f76556171354a6c6e73354c564b6963665a4e3850337a2b5677574e724d416e2b46354b4b584a6f4835695a6c67366d7147357763434d4970434f676c6f76596a73792f614c464c347634706a374d5a67622f654442426261314434706b6b414e6e6973424d61653555373254557464484c51734e577567706c4c5746656854336f554c59667377546d417750396c5144447871754b7566364e6b6c526c43797a377a737063724b4c4c574e52784e6a75396a372b314d534c6d4431496356336c496b7a674e4c764341465354324f5739303576556a4c72544e4374436546715162644f6678596a326d5768525a5053496d4e4c6f6a316347502f3346443746422f514272343263476f587047717844492b72584e324d3574524d76523478546566534a624b4c766b6f5453787a4b66634165384a44585161663641624569643156626153734b5341426a6d6e7a4d374c6c446e3379545264397364456a4a6133614d5a436745413335663432344a2f397a70576b453436763435744a6d5a4c725a38314d7456746245453973476f6c363642367972467a79446c48475557657a687a2f6f45725437572f4b6b666a63446433756632646b7a414f303434305a364538686e6f70546d5578725a457468304839716374445539776b6750386669616b4256314a422f5142394a7466547152793045793565513351726455757a4c7171374c7a53646f616b326c486e70536e5374757a724a364a2f6154572f77434a70613149462b67614f306d4d6f742f595a726d31646a3159744b342b504f7561704e48314c416e3136506858515565656d64416e516c7a45664b2b536f503279637767393255375458565064524f654c55706d6a7946554d44395a4b32366c685a7932646953466b7448505a70504d7a534475486c664332666f6d6d52774f384e4e6a6e4532716d61656432644830565532546f7a6d2b5077575a2f464c4d34424a6c413848356c764d6d754641514f533335525966367466745348436954696f4d62376247614f566e506e54532b5368734b3833516c7632336352464d4d2f4a64516b354c685a304c77643734424d6d704556685445524d7a77674a71436372614e7972636f62507342714b696e524e544563324e7a67746c75532b69705356776b375737777549354d736c704c704f6431522b36424559344a3878365737532b7552553345696d35524b366b6f6730395834566c436c303954746d6a2f5872632f584f41495031656738782b6c4d5a57335937504341374c33716d633269484d346c304e764752546f526d6644576e5158564e4c576d744d786a48463832675569354b4b4f6e796235487155386c6946524a6646462b50523174744c5634564b7142784a41757070732b4c737934516167536a2f31324a44512b4d66627a67544e6361562f424b58584764706d317537496b514c504e6d6c4b394d4c735a2f4a38376a766a7a4b3751653961364a68524e503376466d47697937717a446a56476e396635537170584f6949695a6e68414c544a71396d556d6774736a2f5752524c3343696779324d64562f4c67746d4c61445a3255492b50326e302b544e656d6235672b3232616b506d676167657033483065585a3459487964756b61454b38712b6a6437435663315476687a6a646f65397a705977712b43595a65756d4d4864366e706355344b4e61644a2b5934732b72587149334b395176556e4e594f666d385235657a364f6c566c394f6978716f2f34753874557759566373626c6142384632663754543259326e795978624b6e7072484c41676c587230535a6f4f563674704e6e70503657692f52713562534c347059702b336b76514d35365a575861514a5a3775307a57576461524344552b32327a38763243566e71506f374a7a7967586648307a6f7a62725a577363363355474763736e4d62334c4a49484c6c76644c387666314d647636672f5975443271506b5245523067527a4a386c3069304e656b6b55536c6f5a423068645572377935554d574d724f7230413778636f6f31726e55473673574f442b4b6259544463617566314968326e3559726d376f747a4a6d467473414b32555363516a4f676d737a6c3837394f42544243786e7a4d48706968492b796e32734262683937686e45347a33414169726c4a574375774a51304f63574e575a446e6e486e50564e4f47524e5052527272544b58426c3047744670704d71484f4a33795369507851443946385463436a4658725a466d74626b306a645856796553654e4c2f41486479344b43544b6b59353253736e536f3149414f3170415159496659574c6a6e7a4551326d36575a416a366446485844566e4b6e5277446b51636e53306f5470516c45765359744c614242452f4f6d33744e36796f585350503963316a4d34414c745a367075524f646255766a476d646231647059787270525a51357249592b304d304f4d545538307345534649463849653845396b3342446d31543954737961364556647a6d3175706d32372b6a5a45377135592b773055786d3663557a6a6a6942725353672f7a42784e595a73546a7374344443785a32324478614d755376516a4646384a4b7054796b4f396d6e746d72346f7566525862485135537165636c7236302f63564c464e615a5645646f32502f49424a6d58444769786b3855736677354d556454756d33506c75367557755835584c526251784b6d2f726b302f385a5431676e4c386270744e75336d7a6e415333485a57616a587263756534457572595959755375374f624445724e697335577335783552656d6466752f54434545742f5a73396b4d69334172752b67713679673335476c495763464f336245796647697939462b614f4f564243376e6571647148314b55752b714964517973727155745150765976744a61416454743155614656636d732f564763646d656a713156614757754456346e486f412b75316c42376958514f63757365704c3959684c4e707045424150314254334a357a4c79376b795a374b714a5337334c6573553154694c786e57467a7673527766493776564544466852656e33476d41506c6f434e5a3252703271706e4a396d646c54756e345152395239544a50504e304b4e71753354547964632f5679772f636e6c73427045356c49394e4c4249674835553333666f74342b73704a676e30654d7337484b39724c70627531485874756e76463873635a616770575448556e3241306e3267654578515233517439756643554d5573554c4f5451513155396f624646312f5a5951546e786a4c4b2b346a686c58534862474b457830714f4d2b575969706c434652545770736f65367a647567666f725739576d6d5a324b616447334e6f30646835555a626c53364833685a527866434d30577a553955417a4c63665149577a7a5a7175755a2f41544a57636b6f4d305231423049702f6c6e53544272663757756a377366473841373852544c426454532b76784c5a416932746f64536f4b465756325a2b726c37463957796776757a5a6c4d564f5854754532694c4b3474325a554e446942357472594c41564e394a42722f7a414c70625336787431736645304d3456563252315853434969514d31526c314e72756750766e4c514555724c396364393735334965686c6e7a54675948594f3779364a4f386831737446737a5a46486e2b38614f55326c4b6b2f6c54394c356646394179576b426e533578747463536d6c4d3265786b41426e76364475766470305237376174464e4638353557626d756f687a575a644d64313957764c4d656b7a49476876644c72503248736158776a704c663841734e6750507645765276787a3063384a322f4576552f583868396176493941635479483075536a2b51386538557738585133474958625a695172716475664e646c76616a764b5a425562715065774a784955546264654a70794369646e577972424733656433646d7a364564766a33336a6b555a7a73684d714b4d6d634d2f4e6144317359364f646a4259683665704b705175423662457a58646e6c465437434d314a793930547574786b667932664e494348545275436a50553679313667536c754c477637554d5a5678746e52304841714d445033555558302b38557235464458467173734963746b552f6375354d45364b724d4c756931663841434731363135734c61763144704a396a5a694a787a6d69687a6d6e31563947676954394c727851682b6a6d72617a6e6a4f777a56563038704b74534b2b575537685259774b4a3373686e6e612f774431723532695a6a6950356e474141423139697a64712f77445565394f346b614b41526b335670375a656d676e4445466b7a474f73733475685a38516c48656a4d622f6c443569466e3941316e386c766d64624c6f4b632b4c536c6e4b6477465648326d795a425a59304e6f71496b306c554e6a6e2b2f6a4263787a557a47317a76656a2b674a7a6138452b586f74486b36537a72524a5865633433552f6b4b704a356254304a33635966787268344e504f4a6d6334717a4e34746134436f5542585256506b443961386337587a354f4b5450663841662f6a33502b6d324f4b64576162616d544a57613073596147675535396a5039305664636c33516634684a74746c576a344e53444d6e6d7a706d63526d56767153354d3632355944424f39715a31304d6f4f61636e664c374c31673734786d644d41576a6c326f4534357772565a6e6e5235446b706d4c7141676639796a517a71474e566a564f4451736c783566313768596855387a6a4e795154575654416d2f664b717038364e63475a6e5a6473543749376e7230446746624f5154787169546f6d347332665066775668784c52564d3531686c2f72346c7569656533647a5a786b59573261756d2b6d6345633166496149374a4a493179793055387a30555435526231664e665971596c776f546f456b4f4e45346876344b347244436f6636304871762f734a7646763477657353672f6b5945376e71666f476d436a374d4b6b314269796c6c614d544a524653645331563362444d767150506c2f7743672b7a315a4452356e746e2b6248384d2f306b64634c72743750774a356e364f73454d75354d3176615a69647978727262724b3633484b44752f774154562f48554b6a7139782b30744b4d327a6768453373773564333568346450384135514664445a2b626546586c7362562f48656c75414f6465527948474d7557707a6e6678705a365a35736b55736e714a3879352f6b2b476d637964783744476631505a5038722f7548484472343159326e6c4c645951706432744d44492b35723369702b702f457a57307168377a48576757735941556444724b4a302b3850326d643364685a333541356e45656a663470627a5a6e5864325043664e63316256325850574b3876794b57354b65354e4e696853585273645231346741582f4d4a41545a306a7770706e647156794e56412b493163705678664f6b767168703578686d53524c32643553485978486a3270474d2f6b6150374d413431774e467a524463505957716776573767445545726775516a363635766871564f352f50636e686356396370534c686c7a6a6d4832513650657466763841367a2f642b764564545037577639736a7a763841754f65756b2b49766d76347a364a654b73505339552f4f6b534966796456373435347645352b706f4468622b72516b65546a774b47787263546d41394b666547477672786f55363833645566306b2f78332f487630572f474c306d3865394a66517a787166787a44384d7a547a484c3866516f583639436f32645664585a446f507130744a733874426a5578746c644c445a53435453704a7a654a65393953323633654c6e6a324c48393571614a7151724e51396a6930596171587254337677746b3047682b7156744a6a744a6e2b584153317870442f55727136653146502b552b5a76504e4e4b656c6679706c365a4949714b714850365855395977343943706675314830314c427655715543556839685336665959535445544d346761592b6f586d79736e6a566264763147355764613963656e6e477a5872526e6e4d4d622b78474b584c78364d746c42476367693264594e2b6235726843756a6149694f4544794966336666376b72664c2f4a393730413948716c59303452426b6564374865514a5a4e485a3265732f463448782f37533375335845713536684a6b7854544768737a5261612f51396e304d5276743365765833486e49696f584a533566552f4c5149584d6e35787a376b316774596d796365312b773143624a56634434783751502f74643154566c2f58667774486b46666e6c5859385a65546d6d696c7453574b4f344e4c70314a596e674a6f716c4a793069517366372f414e667076514433462f68385839562f642b76454b6a39662f704a36363151396e553167735477796148414b5575634b6e322b346c6b356e472f74367841544c336638414b2f617a514f78542b34314937795a4c2b6a386a5663516c42423046726c6955695368594f6f6f344c6c6b4b692f59396377662f414b6b53442b732f336e727743494a4e30663171774374722f72327062463178732b4e672f6646456b6450362b516a75633566656a7a3275504e4e505358306b30446f486e5570354a696e314a414a732b364a3064536a7465645155666550624f6d72693244385a663539534b2f59636e734d4774595a4541736d4249756c4e35436c4d7a506b7a59587155546a2b53755676474f56584c30795a314a554b2f5a2b372f41424c346663704938616364334c674c456d636b766f5256556d647372675230594f4f7445755549726d464b31764a6952443431676a3238464b54547862584b4c674e4f5139684c72654e4e4172497839723468644b6a7574557770466d5851516c6863466e4e43695546467850384176633734714261496d67733954754875302f74436632796150772f39474c6656723142626f2b52657466716a342f54647565494e6b61767850784b48516d577a787a786132744969765175646f4a793368316c385a724f4f62695a7672433278766c2b306530653976746a7331477976355a2f6b706d2b6a3367506c6e7256366d62592b502b4e2b45346e41793861556a303232366d72466e7268697773764f584a7a51585735797762654538386e744155796c51346b6b724854303574626258346834502f79622f492f31512f4c583154336655487a4c513174444744546572786278357a7444536a7773747073356e397a6c7a706d3432726f4d2f66574149753976656934757041506d395854725854704e5947766d684d36464335713064686f664534766965795667772f4c30702b3662614d684c4b4c50624c55734f736176726b6a2b6c414836616677363666655032644a58336e334b5a6d717a366d2b786a6d587938707156564e373575393646436545514a68396e736278712b436b7a2b49456a547831643976455a43464e4477564b31424853644b4c7233304738374a7572535930544b5a523871352b44376e735a303146375459424e2b4a6f4c4b6f5a7945444b45526f54457346304c663159682f6d7478674a2f50584b4479427965614561316c7778506951722b4d4647516339756b78385676355236396549424e5431794f68576156505a622f69304672524179596753506572622f414259384c33696e334a36542f7744506742376b73423547562b37674f7476344b4a394c76564c7848797a774c63386f7750432f5550484f727962774453324b3534464e73314b4d76354b5a6257616e425a754c757a34316b6b2b4b502f6346416e49684e4b65386d727572624f33645742316b5836652b71666b38696d2b6f30306d50526a2b487a542b58566f707a4a736a53597858386648326932686967306f3372586e38363066624535736661444335436c76627a3771524d3467616e2b75333557654366693567374f4c343135636a314238344a47754f4c6a654e5763304d61536a566670664f3363336f645a6a537a5a68792f6c53493656547150762f4e386f6a3045703030394b6453334775326f34496551655137336e57377265552b5561464f6c7037645937756739377144565a7973346332666f30386e59305a307a386f6b6e397976684832667348443751562f58624659694a724567433336662b3665566a7a4552393747304e366e324b2f77417543505335523869574447524c3674526962656d4b6d4277525437376a4e56503036467435337464645051597a6974666e4f4c3537705642305676347235496664377667497a372f38542f443272503553444b426957785756536c4e796b65703430585750543336665453504c6d70712f61532f587966476e7646682f6c5438762b505241797976316a3542636a436f6747692f374e56504344556370767a6462514b6865745047357178346d5a2f75367076654850387766356e2b6d6f41793143444a33747344343646325a625a7538576646337a41744367715345795066524d79796c4f64484f426539596750762f414742423031745a6e2b373965494949466a6d58797537547856576379777041517a3242544e4f41475768325a7955703676384136664538464964393567424b6d393575362f50397673497a6f78457852307a6a3130616c7257796e6f2f46557a2f714c6532707047766f4554452f473453345865663443414e4c3948337471327a313454414c2b4c534c667056524f2b666e78537563373232386d4350697570614c5757674a6459514d4557434944773275536e396538794a4c7132784e59734e6d5054503044385038414e74482b4d71386f6667755551793067784d51304265665742436d616a7676564c55323559394a37712f694d4e4a4a796b30314e6e646e61396f6a4f6630485a6a38634e7230332f4142383863314d484d656a6530765471735778366d6f4f5872356c373147756b487435446d6e7a506a716c505758772f32632f7767627a366256754b626d7657627a756d656f4f2f6c462b53336c7671546b65482b4f356464666c476c733579436c315a4e68732b66456a516d6a78356c4b7967733556394674457371356d6866475579615a6a595a4b4f745849707078576254325254486f622f4e2f6a6a6a2b512b6f666b4f505a447665523435386f666f4c2b766f654b5a53655a316559794a6c512f444852625670453537356a61723248596d684a4e35797550532f504f3242636e6a42736777342f575431486f7a727a52386c666966682f2f6a3265474c2f3435553353352f3564354c6b35382b6c46565956453969655a34574f6e624563446c5536534f6e37365431323139514f506e356d2b44656365502b65363371395a366361586966706c3533354872516549374e557a4d6d666330434474473152464f6b577655716c3074485647526c78676d6d6e356e69354e484f6e536d4a694b372b616f3030744a616851356b6f6b416b5a7a396f416c4265394c6f356b64716c6f2f61766a2b464d3750623032702f375036554843476a3261616665483247564f5435426a563436656a35446c37656664476371437164387632316a785a5467356e7a753756376c697365383452754a592b787745527264492f4235443141666a373658376c326533794c794c4e2f685974502b46324e444a32727a3264725632652f2b4c2f78727249303558454a6c4952715677584d4d394145674257675877554d382b396f3478413231644a6a2b53543643634a576c6e3377717a38764c3146386846586a7679522b525a614d746e736c514d5968725a3662474545745531777a4f55626b3951564a5a6a5a54483847626f5a764c504d37736679484a30436d716a693871796f504c6648716d4e543542556f6f63356c686f48514b4850636e704962374b57514a5349484f746e58557462485365495538747776534877547848627567782f42634c795956795757304f3861776347652f566c3679625152713575634a4376514230505756635a3176776735314c6e55386e4f31617472576b4276376239304835412f6c79666f2f35522f4c2b58656e382f686e6c336b666b336a586a6c654d2f7839636b72682f6a4e7a79526570734837736d7969725756444d6c72666156364b54416e4f6d397a586a5a54644861484b373877664c5078797a66796d3957765462306c39505a2f44644478335a33592b2b575a57506a344f627638415a4b4b7454556f7a334a78304844484779575876477a724d612f6843796e3567706f615054707865644f7472573469414b39584d6a6e386634356b634e69377668567363506c70534c326f343833516e726a6f2b4e4b4a78376a796c496448514f59654f6b5961584169627054742b4b59477066715436704f734c4b7032764c4656464b7a617562354d6d796e612b37643363483645724e476c797056786c34364d627a4671706d7a68535664445a2b47774276465a6d4d7849356e6570666c5961794b3452536c726c4f5a33514f57566d64795854684c546f2b616d5363584957756864465576516d6f2f514f39354f486a654a425852574d7a355150654e2f6146386b386b394466773039426d59446369356d31347448354c74352b3031467552667a583045313058426f544a7156485a50346a2f414c4e514f46782b395938533574424a6f3872326d497471327a7848656278483134394c74514d7645386e7761664461474c796b423236664b304f4246523177304f30394b4c35526c486c466b63356d70586530476b2b7a4530484b63484a4e4c6459356866566c4f466f55756844577a74466f35355463586e4e6a544b43786177616d316675677857366e2b55366e726659716c5448557043675150322f3155613465642b4d3632786761564d32726b746a7a6f365930732b4c483764567161626c754f776d484b585034383566624f726e7a6b6675427a653067427a4775596e45784934732b5a366d5a6835753354584673593033384466746b7a7942533563795a3771744378634f6c41727874765068424f78595a576849432f726f6b516165446678536569735a6e41384b2f356e2b73562f724e2b51766d336d49755a6f3475427430654d34564d424f374972463851725a6938305649437168553658444c4f77436d366d6368507049557233734c7673364e64744b78302f39534e72505248315238417a76445078303854394f764b596649505544413958302b572b522b44622b48395864307433796b632f4851724375626e6369335a556b517164317850654935716735372f596c78343272614a314a74484c744873393948335a506a3147683574366b65474f303450493438704e38656e646a792f2f4144646554785a2b3533794346382b2b4c52385a79362f727255507a765447366e455069715033394363504e747834566a2f6b6175666b42355834313558356c354c34396a3547664e3765784352352b6c564338425a6f58517071687a66354a6b5334653344562b705a4d33326a525a4e392b6e7247574b50536b54455a385251326a34463431753550692f69766b476c625759305a744f506e65485466796b664d5344522b506479674d6445614f55506a65533271724f554a63344776654c727664396538326d4a6d59366a79572b76336b536462312f396261516f3558436e7a66796c4d544c324a4968526a37425a6b536f3774416d6f2b526c624c462b344a306d52544d44744b316e3339393161343036794b4f744e62644777714e4f3335585568584f7a67726d6e476474565364476b2f7744587a3673347a3052687861433646487a4b4a4945492b774e493746766e2f594e3676684531645866544b59414c704a49526c415a374a4553342f55414d6838554e54427933713733762b446c4c50346a506e7930733141665764516f55765a70556d6257414a382b306c6c594532766a584e53703374637578633479725a772f397673643835734435657a686e703934657a6b59557052313758364d6c5a795036612b6b3735474e4b50764a555a7a4738633771615a4f6532635065343779555876347167364e42364650782f2f73635a65372b4a2f6d5872332b526e724a72656958714a7065484f3835394b5054325050527577654f524c7a31616d415871504c38334c304a3268716843554673514538396758756334752f456e7a372b3159314b30705864574f46766c2b5565666c38666141766e507158576331646f4b4f554a6c64503741345345567150734b692b346b38763338346e3344305445476d48586e30756a35414f467a703665644158546a6d6c794d65796b336c4a46396d4e6e4a344b436c45324d41593344315a395038417764333947356a422b625433666d4676717a714c51415875346e50466b4c70767257324e61446664473056544a4c71466f48536a37776a39362f6b346b6659594d6350733047454c7556712b343841544f313356506361624b6c6356626655584a6c4e6c61544b4b666b54574a6c3144672f374a39446e73365865353532634f756549467879755954703657416d6c6c4c68746362616763796d64354832676b30724972716c546a707248342b7a2b382f5942394e76665979312b7a496c4f546b36486b506b6c57566c593364505371576a4b7a4d724f375346566847373445537a4c536b2b56566c64394e52677752367771533533744375392b576d3746596a766e2b34656554654365612b6e2f6b642f6a586e32487565493765624d31442f472f4d55576550625465754a6931457650732b466a6d7558396a69662b46473876384159302b44515848496d4a6a6448504d675179773453706e5833352b4850415a4a6351766f5656456d6a73676a5a4d4b4f2b303567393941434c314e49794144393765304b314338394d7a30785a373053787935374641597455484441673049324570745531484f574a346c6337572f4e33716545355a6c516b656751593234383364492b6e57393431562f456b6668594c70323842346153707048706f347a6c444574565247716869506330654e555166382b35625450376a624f647665475844542b37716671755367346c4f4e50756f52504c4e3269576576674a61526b745a6634745837314f49462f4754766e2f414d4f637471647746735971566c5077702b43574d2f3841545038417450746539416c316a71326643664c4a5670456a4976672f3342305a32737036492f4e6268615049536758793256766e6f5a316c534a61574a5858384a36744e4149314d7445636c4d7a4542384b374256517867683732384d793934696a6e44793439727a486f7a2f735265585466776635432b6e72715868585270654f372f41416d4530724f6a6e35656c675262474a566844373361453764537079514d557156394171537037596d5a4b2b5032794f4e5a37703966714d66372f4150366b6c6d552b672f6f6669316f546936557533366e6553537074585a62726145533059636d72757a3431536c334770654b4c5159456f717166516277617879584f4b3373646531656550634e496637526e353637663449666b526b614e73384376457656352b4e345835692f37614a726b5261446c755331476c5a6d7552504c7935493866373245377139496a6e4f62392b2f77447258326a536a58302b4861714f2b48393948386250472f794b2f465a66354a773558386436372b6865536a57386e33566550387a2b65622b6e6f6b7a45326c327452385a5731536a5556516d30326d6d6d6254436637637a354771342f5a4c7a545532664259654c316f7649525931707764752f614d2b71745858704869354b676863697a37686d513939727563496e6e3831686d5149463376625436416339414f7166505a7372355a7975766957757a552f4c596d584f4666365543474f2f612f6a6f795466495967426a4d354b2b4a644e543877414f35647153464a317a3661573039744c69724b614b6953544b474c61532b4c2b61617a3758786b37763739676d6b506b412f6836493662763841732b675a755278466650724577596c7a547767317756496b6d474e6161577039706463667a4655776a365054393651633776736342482f54336e6c39784b2f46664f664d66547a55543546344435443546345a72714475645a666a6146575a617a4d4a756169787467523857525a64496d4a30542f76346a2b307451395a383158446959724d59747a534e77762f796c58356d2f4179646e71594f68717931304f44523138654454326571353776704d304e7139626e32635553336357486664307671723978744474507952376a532f434e53504c66554c7a7a314f386f2f386939512f4c7448796a536431363158374e722b6e2b702f736446736b336243597776684b6436654c516f3644667a7047426944686d4b78546c72515242746f6e482b7a696a44695a7750354b576679464b71563066486c73746c5937323052686e6c51504b4f7a6d54456d30317139375263656f79584932616a525165616673577838764b4b59757074415a6764596c76416748744536666a6f54336f3858374458476b5665376e652f486e66754264314a3146396153706a5235702f41396b6a2b53773573756c596e6e5a6b634e302f77436d4e483751506678436a44696c67524b392f77446e586a57664f41706664637344786b70584e7876586f6c6f7056424e3975704b52544732436c626c4d6c57786a6c6c77754e486e665a77754438614441316473635a6e6a4139672f397233794845382b2f74372b6e65584556596f385870326641664973324f6e3665623965344f3136634f694944615646566832554b36714761663759665756536c374c49422f727a39617378723238423558767954394b4e4c304d2f49663154394e366d6f496648664c366432575434324e7a72637a7961482b647862457833536f4b7156637574455044664f4b303841785364583637302b2b74742b6e5738647771477235536a746e2b4b664c6930563073625561343038345a4b644f2b7162686242722f6b4b5a584a6e654b65716e4d763841457837375a466e5078665839524c66422f49615046664c2f41422f557a364e4b5736632f4731483049686d2f5879746f73564e72364a73536c69657a796944326b6e34663338773937374463774978777a334473626762686f3866745a6e36784e7a314b564d7251783361446f6964746358636a6170444a3869755839357a47782f654f6a54346748664e39684c6b6f5732546d484b4c3867504471592f5533623368545a666b6246564767423530796d5450727634544b6a2f384154694978534f6b4e4269626a50354470366b685351324e487070614e6d4d64525238646146492b4646645644794759766b6a344c4a6f5346376d64667a6b764f7a75714662497744333939676a415a657a3974624f4d376265415a704a677265317a4e454b7169643958673652544f616846497a4a4b6f792f58326d636c5373652b2f76796949636233336d6154445946547a57526349356c587475734f654b615671455a746e30527059757476763737756c6f425954466a77653957727467714544464947764762544f42383852386574382b382b385338572b56506638417937656d7945324d6f3733506c6e7471716b585332733648686d797046354477432f30685037484f3730794e67336d59725730783849492b65654756656d506e6e6c586775315a6d4e663468717177327569527738716b36794b6a6a437668597a34717572756f3662657444725a7331712b642f612b4a2f71756438566d4f4734525039306c39537837466b5a4f596e4b6f764a4e534e4f4a4e4a416864642f456b316b2f77417a506934504f54723968724147713649657966796666376879383239466f4b677264456e546457726b3662567a474e6662763961566c55483242554a4f57736c657a33736366774f2b517666566f473555567070356c694e4273585a4e443961647a652b34616a4768667463444f67747a52642b776e6e352b752f352b3451443551356e2b663766595a56527969414d51684a76686f54513162713533786158654e5945584a655777382b46667a564c53333576635866384141506b61774b4739622b5051666e5179765a4b71526449315554394b2b524a4d6256495076706e447464546f3038582b7a5a3743466e4f4762552f72736a544544626f462b74634c7a377753576f54637943525a33506e665a2b6f387076316f5545664c4a6a6378334673363150735a4d365a6e525a2f6977444b4544496e50513842546e506549333852305a744a57653259737155337a36466e5264576f3050582b6945574f544e2f796a6e75503465634a32547271676e51376b636c494638726b64553264306970324f6e694d44315670584b30585437414638625a7548394249734267664e3831717a746e50634554706e56574c73794e767964454357664a58412b4f54717843324b7855307176722f47746a452f7669577559546f782f615139767a7833387749635a6954384c512b78794633317443436471306e4451536f6e32524b55383668366155716e6a2b5872474439767673344b6b306b48492b5474746e614274456567774434376a6147564d3674507a71762b467055565552756a4250324f6659736155717a50397a4a45545438626631775065707674346a596a31642f495454395876526a38637653467933716e2f487678667a504c486d67797970565a6553623332466477316b412b3665644b663330334431353075396f473450306b713170747671572f366f37352f774479645830312f6a504c50582f312b3059467a564a77632f303038555655334b504f6f7a6467724e4455626b6c3978587a56442f414a6e706f37514d723433574c643162625641664a375a6264476e535948726d38593165325a2f447a573539516150325648524d636d4f554b4e425a5a50737938534f6469546c584b4a39365a2f4c4f4c4d307664377665684c764f74336276742f794950352f7743546e3348315a747679623755694d37514244632b48705a33375a72667774317963334e68476c324e2f4d584c4e584f5071464b6638572b2b45357a6e764552457a506649315538763955723958547072626e70697a5556446b787736556d684e6a6f36706638686c7a75627a4f634d7448385864714f71465470703433557553524d523852637445545053427174366c2f6e582b4b2f673367586b2f716a3535712b4e373061756a552b664a314436336676424e456c47524e342f6e336534534f66374537516246596c69556a5854524d594b542f4146705854314a7457736452346176586e31506f396676575831493959484b742b547a5879756a79534448737144592b6a49396953526e56754f6365305866476b6575587a7333324153667642524f55492b7057757974613437502f41414b744e784d2b5263587a635936676b5450636d477549564b37384938476a324239646930304d5762654677332b38414d2f683935303767757976346d63366b527153354d7448576f614b3555694e2f61506e745136466e7878396e2b6e4f66616d43596837412f77427869517135774659513658454253334c355430554b426f756c71576c4c704c445967334c6f634b2f304c6c65305435336e2b4244535a6c77505a703250504958536c76624c65412b6d59556366776b316f5956724f534f4c5051715a5875516b7444326976693266344773543650732f582f447441776b4530537671664257724d734d566f304b46485030347a484c6e6f6b564776394a63373663374663483269526962666863624148354d2f6a39654156667a733356386363745846743751314e7358462f42514a4a55597a496f54306b2f7570517257766e46534e576c767a72547776694851492f6156783641716b576c79694b4d43495a70495159306970565130426a483570786c6330314c4e6e44533079345a38443241594b3667443237722b43625638466f6a3947676e63583873632f542f374c366a634c416a714c6e4f6833713274412b2b786a4163722b71553642756f564578446c396557684a4b50477a7874717376636e756334483074594846664852777671723477663841417763447069623158376f754861666a6a6135564e4671502b7233676768504d2f717761756854584139514b37436e354271372f414c564750764e58732b797347742f7250742b574132455358627a7269584d6e71365a44524b4b653170434a7a6c39374f7a2f5973352f74653734574a2f66506c634c4f6339774a535767322b394f49482b582b412b6e50707234396e65337a54314839534d6e7866454c74764471512f5a3168684c536c2b6c4c30355245643631495034395041376d67516530584f54507a5734577461657a5566306366517445487039342f346e364479757938507837784c30363864384e79384f6d774e507933696337436e385a704c53386f786f54443344566b796d717059316577446855704b6c69333965507152756d313541447a547a3350672f7744495138685a2f41426d45327a53327558767353632b545a7068354a5a64505a68724c50494d466c526f667834545574536837716575354f372b706a6a30343548444c3870663735766f4a364f67486a76342f5a6a505744316e6c58354a6b6f743866615758344a344e74616469525470615770536c7a504b467a624646696b51725955776d42735454324e715863367450325739737a65646c492f334479622b7458354465737672373668655265612b72766e336b336c3237355270306553567a6252676a78544e7531754c61784d47452b68593475587965576669757a634d676d6c41506a39776634643961567058466137646f71757758787a53696257306b534a54453236616568505a55714e707a645873736637665a4171376739396a4741704b562f774366742b542b702b50362f71424a42425a785a336d67454d5879687952347874733178387a305776763939416531505a7441663055786b7a354d31494e45766a502b72544671394f67397033396937386b5a5079482f41426f6b39442f4c4b38464871702b4f75653745794e52784a70743871394b7478786678646e6b4d35432b6971715158614366664d627630426b6871316663645a7a7a506136626454336b646a552f386833523138476a6179527a3942456b4535497266555332367030634b376931723470316562314f66496b3769762b67336a2f6b706d4876436e39376e7535685879664137726e5a612b54525a664e434c506f303879482b5838637230307a7271426d4c5670492b4f5232574f5778596462382f4f62546b7873752b6d4d68386b447873663373667a417a76562f7742627337304c3949744f4f6e303439452b496b314b632b694f2f503266554a2b64434768424c5a4a7557396f78633549444b3150445531326f64437a6a51545353487065793657326d2b3361742f34694466324a2f437649505066376c486f6e5469654f35336b722f4646374739707638414a694265646b596138373961486b594b75735768644569624b4f7a634e5972416b7061394a383936315437584d56304c5a35522f52733832384878504e664a4a7649624d4c4f7a5050346e696e443871386279594f372b61507a7a364b557861385758585235466c726e53766e654e516d5a7a4c48646d6c414f664e46347354614b346a736847544472394f2f473659646658767a4b6d776a5a33515761454250586670556657685258547154396e53575852734555362b493658776733397449312f4a4d7a4e70344468722f636f2f4d64583451656e2f414a3135333479354d2f7150355a7042344e36564d626431684f31583052782b513730454d6363387638624b4e6b706d2f7744617a6f6442456c4b36567235513371304e50337473543265315965446e7a38664b765038417a6279487a727932322f633876386e73327462797663317a4253744c59714f6431703659574f4e304d677a365171535378424e4354424b454a5837515031617a736a45646b5665314f5a4b5a7457364b337564705430314f37306b66795431732f6158652b656671364a304577566c7a396837574758755a374f67327263453574557150706b4b34573853796e5248376a6a683664664e4f7031393661456b7332665a6e584f4c53374b73506853695076364a59706f78745862387044664a676136734b466e53617667597950516d716a786741593270622b304d41682b75523169585143722f636e69782f782b6235452f314e726461783067467270465273573767427a5434736f745272415566614866525853442b6f7a6841353676384174435447553863787a673662452f704c665a5472356764633668554e55357a48784e5344554e69503963534b71436e74676f586f6837415a6d712b3254655058786f2f436c54574d34526b413272484e6a77414b41363167693661325a5278396b647854484955545730614d3549744d79482f6f2b386c382b59766b51436d7456542b2f6358754f333550763978366950786230672f4944304c394f664970623733622b484337782f58446c584e614c4e48517062685231733163364c74666a653041366e6c31532b6c5055754d55385958666551436642664f6e653065493271394750556e315839426d614f45696b664973624853306b774577572b5a5a386d66354a3744583542486f5753464c354a4c3948324d5a65305a675430506c2f6b4e49363663724f316133347a7934485344774838772f54335a7736637661316c61594b516e4670527476305777513236456c413072304c542b4247666a6e2f414265344a4b5a4d64516c424151544749384d635a3037524f4f6f6e573936386542516f624c33795878356d51334e313574547958757850564d4a726d5473342f6b4374706574377635706631345857396d714e7a696d644d4355464d667978464c5433594845442b34542b5a486e576e3659655a5a58704d5265506546352b637a4d75387a6d7a70472b516678386379307834304c5932646c38656c37704d57704e3263597635795a782f4342394a41644f6a7052467137754e68354c7557305556752b663562614e4968376254632b6c31513364324e4231547157304f466e79645a4f50767034416342762f5042363161534831524f574454526b6c7830726c2b3673652f372b51734d326344343336437a706e4e55647444495863625038514d663047694b7a534879447a6a4c6c63306c417a4169564b31434c5072554d5832726f6d2f5158544e57556e75615642325273633550422b5a33776b5367497a377a2b6773335438797777386638666c2f6a66764e707a7444743952777a783655367536792f34654a37513076644875466c653334366e4c4e5056332b79567a7570454a774d7836336a74385648636d736648577a647a725a56674f6a6e38512b6d6d5852744368444b4f6f644f6e4c7145534135464a5970494361514e58736548716d2f446a382b78395a50376448354c6164483167395376785839492f4a637a795270307a4e314e5044753852324d334538784a6752756e6c4a6a4c474b4f73566e535a7a642b7a6543654438504271614f3357302f77366c7658722b773856375763625852517a6e436451624c57454b6c4a69544f625462547830756a3861616c696442633533396339776b414c5a30424c70656e2b37396549577242564243696634706e792f4d6e6f30797179366538643369776f567876374a37424a4a43612b4d2b492b2f49526d735030773165584f37686b4f48777067444f65744a79314f4c7244592f6b69357a44745a4d6f5a387261506a53376b37714f43305638344b4a6e632f393466344e3237686a47526a6b654c61336b65336a654e34325933573274727564424c464c44633154666d564b43614f6c47542b6c41736b304562425837694231424e397131463863376f6d4e307878472f756a365054654a397a764133327475733853723865693331386c735454343535474b6b6a6257706551776e575430444f39424d346c7748394e7452394a594b574f47364a78503468736669533274307261584e36726b2b58506d515a6c75576937556d4c5579425651677a5a524a525238705473454655734f6d6b63316d626653627068356c5a3337556946773436497164594d6b44515273794561544c484c584a505a456d476e587a32356261376b4f7569304a3462454e5630666844534e4a4a51665944485961622b726e6757732f63567375653256506b335a624a34353545746d6c2f364f514f65533732532b335179716232522b2f3841644466694279774d544250506b524d5934644272544a6e367a7448736b7952572b526278306c45504b4b7854776b38647779745330666d4f7176332f4145794566303550562f726a544166363033524d6333475232692f7374666c37355636496573506b6e705473367570742b6c486c57547161352b4b5467725336506c65646e4c36767944467a57536d424d4a6152594b77364c47736d414450357659774f62327254693959744861487467394f665558303939614d624a584c586d63763550664e6f73372f342b6649497246597554624e5270713278464f736d4f46592b78385562714f70557042673644376c2f6d5457596e6a49736d6e38576358596132374b3071596837744b6c7230382b526b566e30386637546f4a6d617336586a6c304b58715478643443434252664a31494f70576e363964385a786e6839686e422b48586e3252702f77446c6966493843374a37316970436a386e32504833582b4e747678785844787566563867782f5a716f7044326b376f3067744c715473633737456234384a4378654553656d63596c57756161636b4b7a4d2b7764744c664763354b342f734459334d686a5a4d3470624d2b6747777969436d6643637342386e5351547a466f6e6f4f616e3559655336766c48686e6d3370353666367a7642743779624e73696f38727937614a6134594c6f6267364e6142316c2f447366635a755438746333376c6b73432f3468564667666f39744f4969617a504e412f6e382b525a4b2f47664f2f493869586554752f77666d486b65585675554c63696a625a486f2f547070623354685761576d346e5563392f764d5038334e3533346a346e324a34307a5055576e346235506e343278426635502b2b387a6755375468797034354a4a31726158657a356962525832577838465658542f4147596e4d747a4b4641496837417a784d784f427456346236322b68495473763954504b504b734f674b7332654841384f38666557706555316e4f446b32616c55364a7643737449746f716e364539547944532b73376870483452724e622f445845446333452f7563656850702f3465474a3665666a7670594e54473573316e7149666c584233764b5552537069304b7435635576313356554d6e6f466b7248646d56377a54305032485866316a4f6a655a7a4e75483451423066794e2f43373162386e643548366b373371396e376e6b436f76766a6f724f2b544e6a444c4746776f7469324f6c7270354535326768483634484a48746a524971597047756e5a72566a4664764b4f682f7052367766686a717950384738413874385a774d5942484f6776334b7454413278592b775470306667324d75502b553147314f6c52714b495348706173592f356e4f5538654e7136765765594f2f5366423754356670352f6a756f6a5667542f442b506a354449322f6941566e3679636b4a5536376c384b7757573243796f35337a4a4c3549464b396b366d547157744f496959785055636a2f77433562347a7a432f4a2b4879456e6d334b39546344784c65697932364264586d684c38324563794d2b4763706c6b7065664f6f2b2f6246695463326971556a41445430614d35706a38493077386164715870627a48586b3175686e6b2b685673537774313479757357766c69717136444346616c72637375642b73514f42532b6d6d6a345a68314638654565632b54654661476235543454355835623439355a4175314d37732b726d6b6e6c635448574a58543064436a7055544f306245725550312f6d6361654a4b74446a65714a694a6a456a306e6667482f41486750472f4b753466704a2b514c6f665466314a6e37316b6e6b6b6b537073377a3970532b5071794b5751324d6f5a6b366e7a54702f6334577a526b6f31676c59394a66304f4455396e6d4f4e4f616f326b2f4e6e387867387050786a3865667836667136487256366857654f6f304d7a7733795449782b36486a653157376165754374587a795a4f784b75647a725a5843585367787746507550327276707061654f612f5a714a482f623539482f414237777a386c5178517970764939314f487379655262564e4f4c74514842545978564869746d576f68703073464e7a72465a784f5570796676304654394e6e7a4f354774615a706e4964666e642f614a3061376472316d2f446e78396b30365a396933314c39456d62344d6b6f397a3350707639507376537250364b65554d307662456853667564783166476a6e4a3344593066614f7464542b6639783577716b6a683158353152554435416a664c413073725653575835463435544638794b6c376e585430307936557468437869666638414b66304b6241496e63392f4f774e4b504b4974346b356d657575554f57536a73574b73762b396f5732797067534a4d4b587261425655784e5a4d4a5a546d73387a327441364f726e41466235627233364b536d73686c4c623639457846646e4c4873727555614b3745757347666b656c3772747235445337327064536858557475456b7541645035494f616d7758616263344b4a73373761477a43574f79496f3531352f4e424e6567723753796a734b62707a6f7056304a67503477503265304a68486376536e7a726a6e355a72364a38564473354d6e466c6f796771656138326f724941756a4b6970644d697856317665314b4c72515754686c4152736173556d686d4a6b3676586168712b7a304256564c42484d7679426949534645567a6c36544a37704a316f396b2b6548614e4c7673424c7638413449516166796d614e33627364395278655358347755787076376e695574645544307675486f6f344c75306144452f593630766a56596a706d34512f66574a6a72474177376f53325433542b3544724b5a56364a6e2f3235394e756864437a3969646d43746f5535343257592f416348415639625936527145306643495a6656587159396a6864627257446f4256466e31747a754e43724f6a6a72486d78563264644d38594d4b465666426f3967416e2f77427a79453750364150354a737852615647537a35506744764c4f345a3834716c784b3052323864564855554f474e773155533859705571364861482b74637a49457a2f547457753735515074464766796a6f4f6e583357626f466a3764457a7369363957667962736974523672633272685138586e4d6f37584e30567364536c46705568496165314233453871304947624e2b6c44736f7651703772584c6d586e654e55577970736c696c52717a69366f72422b4f72694f64537733653856303074696f6252304158504e392f52747069304d2f586b783374346e365538664c68695470616d62626e4664566d697032665054645070432f6b6a6d5379744e6e413430577042743855385a3966515a30377a38765956346c4a7a562b7079783771617675633054306148326f6d3861544a4e6354565a3864436f596543544f4f4a6a7a5433362f7356587a2b71375a787537684462764a4e5058733669544c69716b2b562b6471366d5a67316c6643514f5852794b704b4c66727835614d6e34336437777a5432763841596d56633878553876576e664d414e5035422f4678796f6f745a584b36436c69614d48536e332b705664735a4f726f646e5258413171575545716a69454830662b784838693263752b77663950642b59626242613932546e4e626a546c646c684d337566393348686130443072475161584f645852313153736f636332475a4d5637366568515a7a4b736c376f44312b76707272686944724730326779466b6d6f7175777635446f70766d62675632736b71733076715552396a52316b455a30685238524f4d5a44414c4a385770782b704b4461564a452f62444f737a4c37636b494d326e325134756a79654c535a593166307532555a2f73564e52474353704d4a36796253784b38623971524e5043664b4b64584e74354a31697371534c6b733741476c39616f7379795749484d796d366e7944574d4933636d3466472f45463464633447665255324a6a457a416d6471586b714b4b3933575a574c5172507974756550507a437a457452336a66766157354458394e7935792b556d71616850367242532f32385a2f31416b3862377034364e6870316e6e4d434c2b5479643861343261506349666d3345794d7a31793954516d614f4d716d646a70482f43564d7a696e434a4c515963666a773159333033426d39743063716a4f434e534a726b4d5a6e6a424b6e4d757673346d58554633307949484770535836564d306c46513043444164662b514c4a4d54354c4d646c376e33776871627236635873376f354d58756359354b474c424b5247374c635865495076507332557a66546d442f4d4948354e72317262496c4d47666b715667364539795a36673041646469736e7a39624d30305358564d46534a355539575453372f685a794d48424f537547456650576856645379364b376447666c7954392b6139564a6246692f35444b56626d6f6b70464242446d5546375a5255796144563549326a6855706d63455176313233497a38774a644c506f6a55374d4556383068794a6f32777872726a6f3633336c4874387938645a414e6b72546c6366777261353641397471384f6275675249664b6253516e4e787866392f4662577a4c6d3064454b2b524e31662f7565705a312b5a72546c5a714f4a4c4f4549697155364b522f546b6e4f355646747678586b62422f6a5a6977562b56617a35662f4946366a386d657a394a58647a505a55746d6232544f716b626c6b4f664f7a4c6a2b797a323841466657466377524a543964644c78737a78795062562b495473334c39442f524b5050416e35585047355262712f79674b546d616b45546f6e52684d524c4556686d6b3970397643626e2b6631656768516f6c58355770787662792f762f794e326a744364326c4c6c56496f6650304d765146744b4f797a575353527772467a49347a2f415061332f58333479634b76767352533558364d453567306d6e4b7a354a56794437714b312f75506d596e6b614773302f774353646e665a393142384d77544855616c76456572452f59306d6c383377414a3157364d4d6a566e4e386b6b4e5a745239726a365a6133446f3550636441544a6f4d4a316a3955587345334173524231782f5a2b45484741507531422b71744631396b5858456252524d555638794b3539426b6131725970794931736150317847632f59483036556b63306a5a2b4759526254317452504773355a773063584b6735704473376d31702b2b4c72474a30394c346979624f6a4b776756326a703048533667774a487770644d524d7a69413268305736697251743063696f756c413667353633584f375a517a5035316c4b4f5a514c64484e6d75455a32566f635342396b7a6f7a6e6e536445426552414d636e6e46777a64793532564c4e55374d7a5243696b306f7a455366457a7645304b6c57524a706e4d657558374966714335465031674c52486f565431726f7435506c726a6d347945626e4e6356314759542f414a475a4e53515a6374685a343264557854414a5a4551394e4d39435767526775725a586647656c5a735041336c52704c724e614b414e30563649616d39574c57546c33507336716f7148644f5946756d34632f52594144645462796a6a427977375633366471324270337431637346525553396470522b317a473632696f36307655714c6b7a61507564576e71517353514149643961626b57576551756c4e44382f6e48317736434f5647382f72453974434c7544635154704c71612f33574d5a665a61437544544e796f4872326f52527962375a535a75636d2f737a626f366d67454e694a584738785734754f2b76714c593036536e42527a66497454436c46504f676578383670476137506e6f626e6d35314f62384466354f6c5377686448305a756859535758547279574130587553485335704f2f77416632346b746d5a7a4f5a377839444b6b4b686a35785a4e61503157557644714b364b5771314e59356e7877726f506a7472756c6979384a4333302f4a78304c556952677752674c4d72687a474d69686865364b74594578646e554b6a625944424e655861367163784b4e4d3146456b797a374f50754f73516c6159494b6f464b68436e66306556774865796c433777536a4e72755a70304e6c463864535a4d532f69484d522f4c4f4e6c493961445173344147422f437777633059546f7670457145716e7956746d3636657049314338386c616963645233692b5630394470584b486e4262384a7a4559427a34336d42396967696e5169707354535771594c497442733251534c50684a77505172765a4f657731505a376935786e7938414334456f68786241677365636462546c545650794f657a35614b4b53796e3178557a5156575631724371696c6c466e7a466433347a655649386d2f3434746744522f514d4d5642535066516273716f5a45747a6153796b706e524432443731464a66544b507675683675664446697755746c46634265345770587a6967567a4a4d2f3458365747755a73796d5a6d50775754545069467259683076676e686a4672745a6e507653303047377674396a6d6e387a6b4177416e70776e7545735571324d336a4c54486f726a716e6d5335356134736c79655a4a326c516a73776b6f707a4b79695951584a3966355a707572556f7668702f714267796d5756644e52492b65756e524d4f4873673930336456644b564e523275686379506c2f6c425777566b50786d754f6b67564f696c64503942476837514f6465634f792b3537616c4d6250554231464873614f6659637a593733442f6a39744b34567a7245584f63772f685951544e635241335573427462445a564e63724e4a306e30394c696e5a3753584e486431765067587977716c334d71456b7236514d546a7465355257642b662b6769467630436d6a506c3955334c54695937522b39716479757a497230744e4674476345367061432b724f345774614663786853536a4b7733576657443675326e4e374755694f63716e5a517a4f616e7342535774536d344f6c6f554b715372366332687062482b54572f7268704b6c64514f3752564b427763336b4a6c6e74714366736c38442b39446b4545526b336936746d4e554d6739526d36453635456e78334f69594a41486577572b7a53344171796c5758646e395175434f72724f6450747a432b3273454e582f4873735a3351523867484753615652794e4f6b7a4f6f356f62506d6f346f415844374b6258374753374f766e4f6958663349677971364a70633839695038416c5a777a6374525a72476b7938714242585061354c576850502b75762f6f465a6b514a716c676f717561475a415555797248573875353770474e2b34317235615a6b797a315a7268576f366d437077476176614538795732352f5037676b7548624b6d7a623133306f7a62474f5246383468526f466a7a4e584f724c50547876396938796d793655754c6849506848376337524f6e686b5537713432343466634665313256577a7034696d74424b4a443556555675565a6438656c4c7742747163366c4b2f6255776b66594e59514f7a5639464c5461597a554567543376594a614863347a783854474e364c467266586447383557446d746a37726448673965556252354b6b444a34644e615a6d44773342714e356b4f504a356835436e75625459524b7457316139717379526e4b435853465050486b37632f5a352b5237416a7956584b4a323052684d2b6746436c454739656b66496561623867374655657448713078584b34566e3667756844366d7233557130385470617971776a4f57786761483243536e3333664248515a663748483866744975756e5a6a2b455539556467766e53586178727a6f71307a78365151667a61526e3150626f464e457863795a5343596c75486a7a59706e31763835774a786a2f57777372783765664764617a7a71763469544c6a6b695931623875432f6b7332704b306c646b633831693737676f2f587a6847667348336d6c587771646a61753335534430587145746d78457250363876316646486f57553070665855717662536974314d7357573144766a6f79615072664a39622f546d7044686d48667254544e4a6a7078454f646f346d34794335764e544f4d4d664f30325a394f5568705838474b36666e594f3139556249616374314878746a2f53666b57482f414c2b306635733272797748326a6f34766a33315379592b74344f6561766a5574536335375778555a547143315973396e336d6c7774696a6e7a71427a6159442b54355570644b4539767977474d48564b36416d6c76597671357a7951474f357564396d4a566b6d6a71797a6f4c6a4a3565302b4e3163513772542b6361565044346c4b537162514a48736b74505430744c695866642f6b4d6c3256414e4d5157394e334b7558664e55787a4854366978536c564c6b516d342b4a396a4763434f544f61644e7368706e74304a3857625351346b7a30506f753045745a6f53756857784e435232486b7a4852326a333155523855723550634b4668484e2b356e4838723935363841646f706e3557754e6b526d747374465659357a4a64617945454451367a7259394b77416a73527246704b4e54784249467074436c646c6250686d30455a5871566f75484b594d3174792b7931545a7a6c585a70374d354b667830307363704e356f5a2f3164427747716c6747613744502f4b59307a7a42466933723435374f4169624f7173724d33613252313137314d2b7452316456536d352f417549365039714870476e767667567843716e6d626b56325638414b324d2f5571354358413271586e7054504d615a43792b364e6d6a4c484a57556b37715362444570565356706d544c58522f30445363727739394b4a693054306b525a356851326653347030746c6e5569624e4a327a6b6b4371634f36586d62453675506b736275354d74514c48707a4d71744d44454853683849794a54342f77434b66796c41503064472f507963563338664267684e6e474652356f70534f53622b4f49766a66566b32476f4b4574625237446c2b5a50744567695a694f6f6b757369486d5a6951464c342f3363686853733447567a646e66492f52464f50487a5930644c765a74494e43722f553371514a4c72464f4e5a4a5838564566483950314657655265513031565058725a6b4f4771686b7361355a70445448776e504a6c614d3259426e64645239663356664461565971547172443246435841544d5245634946643775727044334b716475614679487a4c5a4a6c353173492f796c795938647a396f436f7832446b745471665870574c57562b35786a376a4b643377386b52414e614f685864576c50316c624c42306271464d3762714b57694b7a2b5935335554517038756b53354a32675446714c744c696d4153597579645956313363703778656764563849386754464c45446352656642724938756a53324c4e664a56305957424f6f6a3537424e5874365949357a7657523976696e6a507236427a354470742f69516f304b475a41506d79554973556d7864392b647a724e793943546271652b474d5a50384162785241494e365a743939596e5a494d553755434256596f4e314b564b54524a474d61342b704347683536453068453355737a5a666251796a32354e596a47744451706e4a784f4f7a374d77703562336e6b432b454261425a5447576848765a544b6c54774f677a48505272766a3174475653356435633838374a35776c5a5a496d615630335470363332637363784e62397151525a745a6549366a56507136496376496b4b484c7a6d3457567256636b443256567151316e48615536667179315250704f6a36394e4d5a535239396f704b4f4e70387847504847647a71703375386b773958507069796755443966757642424c4f2b57616a4a4c4b346c7036326658567361466f6d4842396c4f65357a665a53487972767164776b7972396d652b77767555365063455130754d746a41775a6e79434f69656a62524b4c333261423438726c49494b4a556f6d63324f69384f38724563777056714e387171342f593163574b327279582b5269784b4d75695844314b584d63425546644834377a5339734f66734f42694f324249354f6b6c2f516e6e4e6f73764e635275695256656c624e7a4f305a3838364e4e4849737a4d647a4a7573797777335444572f6d6257716a4e47576943656c6b3648764d4a6a4133542f52694279586454714b547330666b716f68426b737468636e7a476c4f464c3543743770533955566378304f35706645796a596b575036532f2f414848306e473876636b494a5835424e53427a6578435a36796d79644272487871656e497050556c4c3539656d4d55396c3468315376324b78427a766f575450415038414141616b566551756a4b6e7151444a374a33746c7a366e4e6b43316d68476d65506e795845694850596a684b35336b487436345059617145687a6a514532324c3558424830636d2f36542f704c4c4f55547a6b525250436b5542553677516f6e456d65396e4b4667526e5a375a7937554c2b414350386e7966397a664c6f78706e6853796e4f6762484b6d596c66445251783759694e644566624b4d73766a58375357342f77426e316676564f4145636c6e38585059737750616d484d64387a3571496e39375457367a476a456e6a6f66597a432b72786156704b6a3743763879596d6a3241564c714c4b7a2f4f546a7a6d677030584c3373424b62737669516c726d712b3431734237486b4d342b366f49366d63715149584734744a6e7a4144442b645953514e714f3250394b5671357659385176474647396831734e742f4a7a6f624a4971556a6e6c504e5a6d32635658776c4f2b5a3378435a702f7743556835734f617147725268796550704869523144525256552b6d624471687232426d7a6e476456466f354b2b502f64646b7a4467706d4b636a507073727478326545676c34377034326a4a716e6f4f50553056675632484c686131576166466e517452426b774a30414b48516d73646f435367624d72332b7759306d596b62577976675057682f5953397266773739616f736858414f58315966766736656a49312b4d7a644b616573554d6e79717546376b5746497a3354392b742f7050716672567a4251767a66612f38414e72752f434f74766e455668525630556247585a66596a557a424a6a2f46706a674961627036307a785a31414d753867415a593271374d5832655678726a4d7754782f66367a4867752f764b315a352f6e50656a342b38697a66546a77686d687456323869506275736c645a714f646c515a77446e667534562f726978353831494c70466a61434e702b6a374c2f6b7a2f454f56715073302b5062637950743372684957412b646e7435456b47574f745a445174776359536c35624f6b48416d4d77704c3576307450757333473066724e6a7a762f432f38574e53646b2f623837792f31486a756d6976613157546c36657379767557484a45386f2b466a45457a322f4b6650734a6f2b4666742b79714e5330652b31494768456e655245782f774a6179644447577939585277692f536c76384163366e74432f384158772f6a494358313375467a5250356c697354326e4535714c5139452f522f314739662f414652384f394676544878375238733830395239534478374669793457556b2b6936726a367247396e6e704c6d504f6b6d5072614972464d2f774476656646546a37615874576c62587447336150366c50344866694834622b44763477656e666f563462697a743173667839756e352f35517965624c506538385465747539746146755a4c396d704d656b7653483468414261357747514a53355175384857314a316453312f4562774b693430364c3656564a3779666e6a63454e7a483935745341796f783473644169374b7456514c59443264613456596c48446254377568526b49423562357a6e345743794878786335732f6a6230523158756a6d3759537457774f506d696c6c4a695a666d54714e616f7669706f365a386d4670664d343572475a784930703832382f737a344e6a795a7961494d6e4d484f4a6a2b305547696830577378374e6337633739694f62614662483263596f486f43424b314970615037647445524559376877592f7557666e6c35463662656a7671452f30332b444a30627674596a4e2b6e4c7a345479336432617362366d4e322b63363674794e4d3933743937444d454534422b45512b7a2f414631614f6a46725633447855556c3232687a715a334f707347312f4b4b6d506f7430695958324f4f6d42693239597756314d50686349685935507550717744322f313674657a417a55756c79476c377a65336e65555343337256316941392b2b6443324377506a5a79687a6948324f34342b4a4f63684d2b44384e6866384136532b6b57623676364b7646593962794b587a4d72383337636d54345772656e5234756334793236796571324a6a58616d5a69337a71366d5274482b6c5974343373366534577446637a384942656f666f66762b4276384149615a694c66384146736255546e336553386b7379744352624b644a595650797248645949475336466851532b7a454a6d76334c714566696d7570452b64765872674b66534a475351724d6b636638414a5252617878546f616d746f756c65786e616c706f732f6b457235337675496a42494e347a2f5638673742784f784b35614841494f2b5a785865316e4531556a33676b7048565573594865732f6b4b426430786177307165496364372b63616566377a313442575851356e487a2f6438496839614c7168484b2b53496a2f30764b59785734366d3842645165317176324948306e4c4f6b75632f70322f4c487279435432664954492f7742456148452f5263584839616d6a35324d6f36346d4655416a2b792f35575a645741662b34514f6e2f4158352f7439686c3162707177544d304e4a6945306659533769374f636546777352323266327437384a5565376f4a416a466865772f6934777959622b5036656f4851622b31702b4f736635442f6d683656654c2b5151615648705a344e5a5636692b6f62564150364844384f37567535575537356249547a6e61506b695549516c376b6c54317a556878712b6b50384157577671624e4b302f46626750364f4f31367761476644343944463473654434566c4c706936302f74544b5a466b544a4c6e5a33384764465744324850496d725366734f6c566e73553551664d337861317850584e6872373638656c33346b2f6c58344e5036556573546648664c7642374a664857547763314b6366547076797036573932546f554d314875482b5359722f694e7a55736d454f456c44527043394c616d6e4f36764c63636a7655482f414f547a66677274484d5070703675656f3368647574453932474431543235685179466338363339304a6d723073786130697854506c576f77644962487263354275336a327a562b4f7537413549666b462f38414a31767a4c394b716975394a645077723130384e656b4a737450694f356269655a61736b7a4a5a324b2f6a394f66677a31422f3077496c4553766c5a516b33384d6150693661653261647531793348457a3144394976557a306b386f3150442f41465038443870394e764a704b2f69737874664c6241697073387a50755277374457485056642f6c64315055304f4d57306c50315877664d6639644f61327246713333437149654577673931417536792f4f6575795357655653472f4a384c50636d766e774430616c5a2f364e34663746422f6a38784e453162686451546e54776c782f787936346b4a4636446f52504f54426c374d35494430414a594c6f48686b526c326433436238672f416750363538686b3561696d686f4f65686665474671457a5a49496974567837616b396b6c66377935385a614c4f445251494153673970477a336b5236667650586747332b77446e3663334a31314370764e46683848395474675878503061465466735638464470774876436d4c6c6a694d4567514e55355057524d6739512f5531755533504c314738726f7a346e6f6b526c74386c306d492b7259794d2f68686b4c51396a684d58574553682f384169482b7a486e4449433747326e3450734962637330734e4e464537784c70467075574c363275695238504153524d7136524c49716b385530654b5837586634482b7841657a703934576a566f4939704f46544d77754b69462f5a766b7a564d3648752b785078746738396f6c617a39393459415138642f6a2f6d503666732f575133617964526f46584f5748504b4a726650554367634448726156505a337841544743786665665834496d4a3067514566362f5864417336666a6a5a2b2b4a71393879586f6d3470414a517671563072396b414c4a6e2b705943767673534a6b6e333834537a4c32757a3935354230527a52396d465174476f77533046794b41516c7052504f3937615563635469453578536b682f5a6742474c75477833414d39417a59396a695331366b3271366a347538726f6338524d30305035583845747a55796e316a4f6647726e44614a7039335144332f77435150554954514e64645a31412f672f63434f4a51554976706954316a37574541396d582f6a52507a7071465856724d4453736d437775352b383876754d535548782f4b73314b4251724439465055325568346c314d587665454e424133373148372b4f666e362f626d4762566356384d2b676b6e696d546e616e6c2f6a634f366a67594e657645767959594739517961644e43364b364f2f497a7662484448594c5066333550684b6e3476734c4f6a332f414e5a544f497678396434746631343950504676536a316135343334497254504c376a344e346a354335503351485a795673707a7257325372456c736452644f337154654b50653150364577364b36307a617536383849436d4e703136593478503061326a77387048535339756f7965575a31536d3256555236425636576b7869334d556b4f6b487379424b6270464d535167626159572f63464e6b4f6b783950504956353764716e6d744d7254725a6f593254546f6a6e306774314f6f73376b782b34524471577a7073494a34365a454d4b747137766e41325739502f55377833302f74783639754754794b5557616c57374450547a653044727343475449536b6d3534696c49352b744f4b6e44515342727a574c5332716b61327678786e686a49325538553839385139624c645079447a334a7a6648764250472b577648474a41705a354d716875656a5377593663656776646e7937456177374f79574e414e3247477964427a76544e57617a574a694f30486d2f35594774724a383338776c6b7a765337785846376b595870746f736446643554726a4b37497a4a64624b756a70633668634f4f73324331315a615536616a45506d716e533545596a4564723851354c2f6e482b565a2b7339792f435934786d6d6832553165527254575a35787479666f35697358502b78744f37484b735955382f61415438774f3554302f3841506b6f644f6870376559633565692f67783834505244684161587439364239724f7359443130784148474430654d34734764443974637777555065754a76534f722f34442f6875586c54644c317139526647394e32626e423858707069313862477a62613159707a504a4f5563457a734a455a47365935304d425838623973786148312b6a79612b726a6b723364523346386273387539536d447334654e5234325442724c6e6b57747561314f42735330357a6b687a4e6844782b49396261694c79415754536a78645456336a50316447635a75446a74474a786e49747a785a754436613672735051744f2b365073446e7042527936577a632b784f59704b6c737a2b50796338326269572f5a6d656e7070784b52673445777075434a6d5a6e4d696564383431653879787a72386a435a674250706c706f664c687a3834544358645452586a53713744596879364a62356e6e306c4136684b6232392f77415036445466386876584c5864684a78554d2f774475616f656a5064465a62586d65514d574c4a59745057767957774e4c5576556b6d437034304a6a36366b624750375135633637307278794333397650314b306641507a47386252474d456b336b7670393558334131745758557a386d4a77354c745145564e7a46733534316a6e6e787057363133326d4739332b394c466f4853544774574c556b63747679656f6236616571507172713277596d723570357435497a55794e4c6238615a6d624655656e7238316450527a396d7171353155504c4b76645239686b7458785a70732b4a4e53656e336f707a56722b476f30507339526e642b316e7076686a5a6d6255765237714b526375666344575458786d59376a6c4a7673526d777a7350704b6d5353644e796668554873567a595654354a76425931576870634a743336304953692f6c632b6f6171566b7965506c7934522b502f5179634437374f47522f516d4433634f62686b694d3849465147714c58306d496362577351546872366e71507347306e7372577a376c5169744971466e312f6a4a716638774e51476a6a464b37727872587a6b6538582b3231655650346c656b63465772504c4e44346c4e384f486a6174564d76575a564c4e4371796157724d63735a326c4f366768435a71666830767431574a516148483547762f6d32485a6447634a35536d69375168695a6e612b3172504e525675303850734762706e577569324e4c4852756f32465247676e4f647863337342792b6644534f49704c7a4a33384a6c36426a64546b38612b485556666e466d654e724f69466c416b5632797a79583266566671546a5643754e76464d2b735a7878303170725144714f5750725835663561666d6e70316c5a666d336b6d654b73374f386c306f59764b6e304e6b795048627244304f35774d634f63586a664761574f6c366c4a51727173327349565850724b6a2b747178474c636f30372f7537666c592f3061394e662f432f4674757a4a3951765864467377784a7732763534743436746338463274465659744369714e636569703148767250744b526f5a2b337a6d326e5432625433544672636131486b4f627746392f3474373146464455674c3366356f452f735564647751576c59706577794876574b2f7741444d766845433970663136774a594f397465482b5459666c6546744e7a39547866567a394447337333374b2b35756e67734b2b486f307a456e67724271306e374a6d6645597a64503241663841674e4a6d7378694a2b513934483435666c78582b5566343655657158702b3661502b635834786c2b70586a486b424b655742725371772f4876496e4d777a4c6e5068714c50334b65334a49506a433954674f616e35724f2b5266543933666266364371634b7278474230544379735662644f6e78504d6e3864386e796332757a576b6b74325a344738356c75696d6f75526b735732726e6556683332646e2f56546670725859485046745768313932746b4933773864314d797330754370475a504b325672732f37745464366344643541486a4f6455373771625a675232772f70744e61584f6c544765456a78642b6f54646a5239532f4c714c446f6f5a337a5079545149316733687a4c304e6d726d6b70457a47633679466a42543374504f43306a636c707a4c6f496a44306f78464a6a7648596238422f77437a7234482b626e347a4f3961782f4b7a48384b39514e48797a62385a792f54794478334c31372f48533861664e6a466235696864415670376f546c4f795469654c6c494c2f41484e64797066515a7a3633744e744b3856393379446d562b555034712b746e346365714f6a36546573486a79323657593176636e79614e782b51654e6555654f4678302f4c66484e547442703070785855587558306847623242396e3966732b4a3272715631596931494772626c5164666e6b685571654f6451396e734b703358796d33344148744a4c34396b4a755376676e2b3148386454652f70764f643676626e38767550515a2f5a4f2f74386f3962764b6f667977395a5a4b693946505458794e4550703567327a38376c2b7166716370325066715258496f6874355234626e5a3470637a6a516c625338414b64782f5873345044375472625939335874573758356169362f37326635582b5665475130656a4f4e76304b386a39534b4c62504c5959584a555066435a6e35396b4838307051794a64382f534663682f77416544703450382b756342706356665a644f4c63307a3252357070732b565846384a6a614f66733669524d324654613359715265536b3843707647526f4b6375385831522f6f4f657754627877755232623765494869555a4a6354466336427842572b6864644a636e66512b654f684c467a574b577376645a593776542b51666a645230502b545071746867557564314c47432b325a4e427351737a7a535751433971653379712b43386b324f522f6c534d36563837386e744d43393438622f576637543167576a3659656c666c58725435595869336a4d6f436a36744735354c63316568714a77636443694e327177775a3730702b48724f6838684a4261334372356a372b756c5466576b544d7878675852362b66696873656738576635564a354d767a4478713752353431354270737856644b50655368314f33334f434f357638706c38643133654e53504442305a41776a374e2f77426d4b616b616e43613763676c2b41503543654e2f69392b56337068363165513563586b755a347472557833356c53707139544e5735433272304d6b7957664a535865743341596f41636c4d6247716d48686e386b61314c61756e61736a315666334f6678527a2f376850342f566570766765506f3633354a65455a3750492f424859377378316e6e5068394a5a4c64544d326d5a3267796e59304b6f36446f6b70707171364858484e396a35457a7874344e44556e527669657a59654c686e6a487147326e553746346a35684870356c4f79464b6c5a326c54626c746c6f6a62715438346d64497a7041562f437a692f5a2f7741522f7744414831767435366d612f6a6b545a336f523635535337644f33364a6571624976463436727649644c6e6732306b66484d616a53544e4e6476432b632f347650375974712f6e7248346c7559616d4f4935334a43752b6e64617645553754577a6b696f57334b6e37316e596e716b612b73516a6a704c6966314b744a4d4c696c75735550534d584d5736666a2f622f74366476642b594b414d7838624639466f614856764776684d7559454759727137654b76716e6c36544a547a7032314a4e596b426c7833652f4b4468562f575957376c636a764b6436716a6d35567765574357686d716a745533725a3371567767544b58506b486947442f4149665936446568536778393174334c74445757686d57306b506b6d63675a505a32597635464145793369596d31673148794b6e575364436f6c46494b78344c6944343047372f6255647066374b57356b632f494431523856314a706f645065394d56426c59677776612f557369386979322f4b43523453616a484a5935684e664e5454396c30357a70515a444d374832714f53746f6e7249436633786378352f6d4c34726f614c434a766b76704c347a5951496d436274466d4e5132473261466a6e63372f4a584f5451776c674368514e716f30695172365048736b3430625448694f524570686d3271584b68583163362f4a31784632584958786447367a355577494a6632584a4a65676d6a394372326578667a4143302f3446306362543579503644506f583478462b52583456346e696572594f2b6a31583946456550556555315037537576543066444e496c446f5736524c617977527838737638416172713742706a4165527158712f4c354635393371356a687473504166366b65456276703136696564656d6e6b63744f4c354834447537486a5434394a7a463354327a366a6b353144703745735a514c3461736751663142485373452f4358786b4b6d657657596d4b576a6a7545494363656f535461372b69384358584b767369737a6e552f4e56454651496f5036382f774279657a71506574786b6b47434b66696c416161674b2b646f4e57757268494d6535335061754f365271632f69306f373061485a484349684c6f736151415a75574874416d427a324430416a546f5a334f56306351716251576f456459487a2f4d3553737651396a4654314c2b4566684b686147475948385077673154782f7741456e6e547643376b586371644e306f76666f5374556c48666a4876554b3064423376364442342f692f734a71545137676e33706e37784e4b666a6432764c742f4d4261365a42684b666e414335306a6c31335046436e796a32646246537358516f574c4a6c51304d39362f38414d6c644d6659307a392f62667450574238464c2f414a6e7251784c5a79636433486473417a57706666686261726d66384a6648317769723370367859424d77302b2b645050646f506d656c583675705979356b553343613569666e726c6c627736472b3939684c622f6b7863712f38414946726277775a774f723968744c4f2f63483144476539526d674f4f724f674a4f50714d454b6b61706246755330312f74453552746e61587863345a2f4d7233413367675936416e70476d5556434c5a6263656454486f6c5a6a78674475717831385a54522b36462f59613150794e3933614f4e344c6d454d794b422f58636139714145707537565470534c4f6272526b3059757257755a4955692b6e3737324d51634a396f754c6b365336544456534441414f73464b54634676642b59396f48396a4c3064386b522b472f696c33594a6b7965652b522b626147543352514e736b735644574a69316c745664536b4f317268304139714a522b4e6b61565654754e6b33772b5a3758614a3162666c476a6e392b72384d4b6647362f43667951384b77644c6d646e766b38433951374a4a49596c756f6a49677a764a36374d387854506c684d554d766162506962396a597a70314830436e665472374a7135336164683578786a6a2b72327164312f5430464b4c374472436f6f513857776f30466d347934786f6c4f6b546559736574504d337632346659593944717945717a3056756f6b694b7145663841727371676548586c5533764c484c2b733567386d6c6f49682b626a686c6d6e357777397067552f4137626b382f734f302f706a63486b336f7034666f4d5a6e38324c76474134753765454d355a4253396d667261476553644352526256493462705337654d6152374163674f424a4f2b626d74474c534e53325a6e6d667152362b3448694f5a6a3556795049623334326a6e795233654e4c626a76323538305258506e36694b502b7a686a6b73556c664876644d3767644a707a543937706d4b307a395236362f516e2b7a4c2b42625046305a766c6e34395a486b766b716f6b78655273302f494c6673334a70356e3057616a766534325a4d37506d2f774470305066474838627a2f63737935544e35397661645850445645743951502f6b396e39744c796c4f78666e2b4a656f6e7061576933514d4c7643504b724e724e6e72666179704449655878754834564c786170457144674161744b342f70534f616c523172375a7278385734632f774431632f38416b7858704769546d6a365a666c5035506d63434a466e492f496647753673545a4b53637a426e6b3076485538716e30445844505431416c514a6d6c37673477506850384172657674316f363651344a2f6c663841323966554c384450564c30566d5a366c654e656537766e766c57564a6a4f696e6448537652727379554b7a7a353057386c537752576f4b75393532785276664f6d6b4648374f7654316f3171323564757757392b656e39725831792f47485638414431612f7744487064727a6962516434726f354e796a7866554c54743161726b2b49643372695a7a4638385843754533666449464a6e7655344b6539397a53706f363962377476776a6d443679656966715036452b646250707436772b45322b4365622b4f686d57767a4c4b353232555a3938452b726737304e6136756f324d7569556b674e51306357594f583339724e4c765a76532b3649745732366f71526b2f4b5a46364768505553656337313679374b695774667a56564f5a4d433676634967783944436231796e4f5454386f4d2b4833394b3832784f327341557967585572354d372f414f6c536f434f4d464764792f6c416152493436433779346a6e6c6e523065676f534150593149712f77412b61413242544d722b4d6763397945724a36335173377879334132634a2f6c3436735a52657a37492f34394d44545a7a6e5845526b452b5077384f48454e3531716f66784b616f4f312f536d2f6a516a4c5146743377705a52477343686f50356146585a386644642f6837532f354e7176684c336242325a635573476b576c477845326a79586a6854383747307873474e70487157483334304a6c58304738425477412f6d2f77416c712f77352f6f484d794755543363714c75596f48756d6d5379383659776a47714f68735846695444304d394d4d7158763738667343644b5855646f3577424b652f6c7948646e32342b564e4364333263734753586371742f6b5063367034364d2f62396c54484a4b567270783653756355445174494164383034657941774a696c7a3871726d554b31564a6d6d476c4332664d717855765644624b6d735773713739683361476977544d7161506a2f61584e502b7034396b4e653649752b596d5338466641713756394b696a6b6f304c343533506959314c4f746f37564c514b783648445544766166794a4d7747646c7641452b2b333955484b6e72397869336d71796448567842536a6b746a615a7065786a3862477a4a496736687a55652b77412b496e7542766168706d30304a472b70306d6737684b5a78373333796851656d3143532b5533554a454535666158546e77314c517a762b6f756d596e2b2b327632704875702f746b65697666512f384e66444d4e364b52387238776d353669336257497536707356766b4c4a3836515a4d38536e347a532b517672516d31344650377a4b356e496773462f6c61397432726238764164434d2f7957764e5265454555374e58684e70736b746e31394342342f71777476576f693070617a58306b79756f4b695633416a544850315033343369415a445672383966572f63394350786a395a2f564c4d314a79387a50784b44523858386a306a734f573676516e6c703543314e38712f30784f683952764173353177714e3668397147754a4f6d6c546671567150466a36712f7742785038332f4146796d314d7631413965664e64484433475450304938756544466a305038414a4e584544446a356f562f78786678737038346b2f594330786f6f563843672b4c303636576a58705759476d4b6d4d744a534b624f75596862305570665a502b6d4b4e72714a705739712b4d423432683948794577506c2f2b6d434e6f693162533137486e6b4c304c792f686e625079666f3174583374453831345454797a4d453157426271526e32696862766b575857736f414a556d505066337632536674505741776f51772b4f4d79726b7a6c4957684a6d7344396d5a7a6f384765685347434d6a69715a503367733449494b7a73356d5a4838584e41742b355a2b382b6d4e533331706c366c6848796e327a765864336a714b4f4c506b633630575468776d384c6e785567665161767652546e2f4839505543797654373067387539562f4944386338507a45616273374e34576d77333956504a504b4878424d36683346496e5433322f49747679474b795071507473724e4964707572534a6d5934694937474e742b4a622b686962556430506b6d4a725652363044336d686f475954784d6b746c2b6e337370644a784d34505442535470534e41447879326c614a724d62703467464c6e67786d596648692f72356d47395038417334554d5537576673436d37473769535831496d436959525447596c374453514232666565516654596d316f73376d5a65527061484f32436c57646d693671392b72784b3766714a6d6b6e715956533875464875344b584e393844773737752f624935337834436659336f58367a2b515136586c6556366665574e77504678532f58336249626c34324f72525471555a323166517776637546552b66704c4676457553446f436e4d47734e6f6c5362306a4d54666a595144794478363778473373476a616e5134786930305551326372796461706a56364146465649584f2f5a467a466a33707139777444702b78696573562f5634744e7545514d4f744a716e436e3249453155307869796454526f5877717452537635462f4f464b6b32664751644d416278767970555a6d306a4734596f6f7a633548486936526b615764375033366c44564e6f72556b6e5539365875644b7770367632675866463743673659462f372f6d7a35726555424d567339374f4c4f646b315a50523861323937374b6576737258336764714f635841776b6b5051593768392f537638414d322f442f576736712f32725054334c3955767a552f4658784f33484e2b483456756133714435516a576d6e756d6a69796f363944417471477a33547579316556497731492b30355346557559426b61754758396366744e74744e536678636f39363663765873386d7472635a797a562b7a4e7431634b575446685775537866626c636779466e51744a7231732f32704a7a6a6b644e54372b464859706e3965574b462f4c44773644314d39482f5776777a4e496649745066394c504e4d475561565067707130744c4758324379754d384f59303574492b4c4b6f62316c797a4d4d536e556f6c6f3674445a6d6e4d307657667a442b62505647334e75717a716e766c4c6c7235614853716b3630572f7466565a74593064496a536d636f31544b4a70695850324856694945485064727a5678496363526e39706f614177646458432b776f69524a6e704f6f36666d7347586c4e41742b717450373969754b2f7a43623551503475304b4f6e50352f634450734542554e57546d3935796d422b6877632b63775a31457454692b4d4b4841516955715539366f76596c514f5953692f7a4539686b43525631326149765a42326270646f7a55306b4447764e7a705743736150694c4e36373963367331436f54636b752b3065696332654e2f48703344624438492f7974386f2f436638414a4c7858317a67697430386e48304469383977633776496b2b512b6e6536447369764c526d566b704c4866542b5935685a4b3262337a4b49774a537659375056303636744e6b663976385139346e704e2b66763453666b54345a48366965492b7533703334316a354d624e5879547872796e794f2f41386968546e6c43696f39764543694541306c357374524e6f45616b696c64414f2b764b716c676556625331615469316541343566334d6637336e707a34393666502f41427a2f41416f38684c5a3350494d352b5a36682b75754e6363754c6d454c39424f677677694c52735746316c68554a5958325336724f3575644e5a39622f3131394768374c615a6d2b723850776a79545575476e526f5254635a6d644439516a64465131373774766b3964444a6c3976453741716f45615063667545464a59545a50684c2f507636302b763644612f384d76797739547677703963634831793950616f377173784b38665979646f64516c2b51654e6252547a362b5851557854386a4a6d47784b45505976336e385033454b367673356c54563036617459724d5948394e663841457638414d6a30302f4c663057394b2f57627839573569356e6b75424c755a356559506c35732b494e36356d56626b664b676e4a6377324c577837324538574a6d5337345a65666f357645314e4b644f31717a4751792f4a763867347344787848685562475a336b5449362f4a4771704b63484f7958335a6b504e4f2b72732f785130636459785877564e7162372f6c537a39783835553570307a4f66456549662b3976366f36753136752b6a66686d3152305976472f47747a79625164546f486162746e794947615447562f7741666c792f59336d79694c43494f667369306a556445772b3067394c3257764c4d78786d52774f32664b6931566456564f30457a4d514345664e613261426271676d4b4550725641784c4a56794a624f33704b6d49466959527a487a3248327857617a457a306751754f2b39306a686e526e74364b4f4a6c50716c6a514a55334a3451484d316e506d4a692f734d486e374976636678462f6833326631666b3876734432645955635669754f72577954704c6f6d2f6b5754307730495656776c79554c63626e4d35386c514c4839414b654c453347416d7a34633739715166756f4173354e714b6c51714e3947636f434a53746a354947533861793631532b6c3756314d5838493943634146494a4d45382f7864474f4f41336e6a447251346e54756e70684473372b556e5255443253312f5a68366a746c6b2f4752304c4b636d43715a66744d444644766a6f4d30686d785348763066354e2b51514a7a46394a64694e6731445459696d5a4d764f312f594f483450744d63494167425a5359434e43694f5942642f4c6b517845712f75554b6647687348444e537a42544434306c756e5a39397a3776694e4f66315075353176784c6135566e5161417450726776656567364c2f32355079764c38663841317035692b533033662f4e78354a5433782f57436f324e5a6d615656533839586b325a6a6e6e2f476e53556d35792b67763631527a556d6e37507843775479313950665464486148717038647a7648744e4f66625066545278684c64426f3574715a7853514e37622f497a50366f616d4d347643304f70643161593068545351415955686252353835376754302f536a786e5a31674876384c4d6d664359646f36754e4e5751356c6551577347576a58727958544d59367a6a6f6179595956465a3735714b56576450726f69307858645055566e35443665654e794d55447555507a557734634b354e65726a395a39544e71356a444c516f324f3968734336747948766167756c2f4b304e414738706f4b7930545043656b6a6a482f4148552f574c4d386478737a30673853376d49643549513632714f4e424279515678613438432f5630437863387930324f7a36465767744d7a7550796a6f616b674a505539507339637a6d5277565a63494243564930753469675a302b3865736c6a72366c684e686130693738466874655250555053482f4145695169482f7348723933356965544a47694c464753455a383353594a696d6772474a52494e524e362f3437312f355a76793643512f36373341594a2b71316e656e2b6c5574316b414b7a716a7935492b6f2b6b74645a786863705975744a4a314e516e4e71726a732f5362443974446566706f63347079763041542f47353838625435672f7831497352472b5a2b626445766c43584a375638315477544c2b6d73747563346b305438306b6d7a3457695241346766794548417761672f2f414f594c67624f337445617044446d633736344432767647544c346d6252584e4878524d2b6e372b4352744531547a4d545149652f77435a67644566514c7a76386876786e394f7679497a2f41436630543954384430632f4d663078353664512b516166676d6c343967306570546635444a774e2b4c63614b4f72397577725156554b32637062394f675068645839672f7743737278533836637861753754742f74484b3366774e3378625864346e354a6e335a657869323837703475733435644762524468614266794556784c646e693564432b6e2f694a2f3464397741612f6d4c6f69617a5762566a45774146467455377257734762514e4b4f766b655536592f6739335330387a54486b314454634c422b5a3341482f414476393747634c3364472b324d5943464143716c78687a71666973594d364b412f5533777359786a44614d6f384b5666534a4a45746e506558484a397651483947443450702b67362b66674c2b4d6d78543464352f2b566e6b632b5a3439346c34686833792b42362f6b734f7172506272584c717330646e4130357934706432646d796b63375436376a366474715457373375582f584c72586a6458536a34765839524e33447a7a7a794237683133763143376262486f4d35534d6d6e336a4d32366e55596566597055384e4d704c55443349593771545952454a30766e6a7a4579334d57464771367256334d7a457734333656435761325041486a3844304d6a70307346577435517632664765742f42556c53723471666659453067536448327044586a3143396450415a5861455273313944562b6f6a4d72787333524e71593372642f396d42314e43503558665947363739425a304b4572675644542f70375167727853652f674e527437316b5a35454a444c6d773537654132467a38384d3745374343395a4d73585a64564b4b436a3979614d632b694579584c544d51476242542b7636306d6b563631464761447164413361615753736c72665437632b46564e5348707375756f616963716b384b6879436c6373672b4677706e634c4575393568384f6c5a6d73375a377832522f744f654465495761336e666d396655763871773830523862466d5452734d504c716a6f44616e5a5171686966343856315a394c3272515a6c7a4b6f42307a422b4e4c655832695a35596e7548596e517a50505052727946506e5068643130394f314d435877584737487761626b567a767a702b31447453644b70527249516f416b58797578365741414b42715663303859785053423042394a507a4739554d6278726d76356a6c7033394f574774587a34386d53344d2b72363230544d39475872537a6c5671636f66744f506a716a796a6b6d2b55514e61575577353230367a4f427342522b622f414a526e4a357355656e33714847344259786e4b6d5a6f7a6367316457684c4961325a336b4451686e6d4f7165676d6851594d6e53302f5970625263716e756f74777a574d6967664f50586631563959764a4f665656546a7a6f42725264686a313964394f37444b65566f5a6170634f5274464859614a7a61593855756458544f4d6863564b6b33696c617878454f386f394c39484d2f482f774137314a62797863592f4274367137637130653052786b47585a355932375576653436793249727668446957755358535035684f654d65555349746d395a3842344339495a306551627442424f33736d6e6f4c6c4e37526d4d516c6144482f62355450776146706e57365554364a477a367a654e44324d623766583771665039526a4b3656362b315354306a536279766f705778546c2b2f6a68435472494f7350746a75436b75416c54316341306b616b74344945794c3971513235517970715672644f4c2b444e4b36746a576e4a4f5533526b41446354695a385a3143736638416a6e2f4b62506c3530673777773245736a6b51767567436541734535342f7863397730523349664a4f4b57632b774247756366354b57663546554551474c6e4170764134376f59546e4d353668356f4c737630306d6a36615a32414779476d72705269746163526243374573666a724a78533153395549444f795a6f54323854504e576f503667485561742b423953796a547931535a2f476c6978526e53745455776552564b59524b696e72664f746c413957523064503371655a6353333477425162636668352b56326a364f6557655576312f4579387a385730355555743853527230716b683343574f614f684478554c46436b632b556761783078493930412f476f544b65745765705464475974746d4273782b6658717636642f6b4e366365686e7164347670717a2f4143714744796a4c3376466368707736506a32507a673636456b584d2b57696d6f53733477304c6e4255674248473072556e375936365662557461736a6c334a62524631595778356777783066446d6161656344514e3936703066796c7a79575061714f4d716e3663516d5045704d30395345777a644859586a6861313769666e76664a4e6a32614f6548386847374e574c793732466157307a564a2f77447071644c70353173474f6a32684e5445457768387869466e572b5079655764686275556438596e7a563035333877334d37445a7a54324d374c6e346763373364514d6373705173584d6d6833756750502b747a337876702f716b54614f314841645876784239564e587750536d38552f4762306d6133315338686b444d39536650642f6676324a73584232626364705552795877644f4e5a5a616166746a4d626b433678646331426838694c4f6655726d4d3674755834616a30306667482b4f2f665144787a5a3867382f6f673150557a31427332582b716e6b2f58354d4f776d6e536f6e4f694a36304a6f5663583376644f445136593275536b614b66717443616669317237357858733137493663533673374876374e394a58775a3239706f624a537a536431764b5a6146554b54576e7170324e30484c3673656773617a50354770345a6830756363306637676639736a30332f4d694c573952504159734830312f49544e78557754655233785349386238774d325245584e2f496d6a486b664b567833436e525a387a47397a514c714f6a37456e766f36383666435a336159386733716e365365552b6b337146354436622b6f5069656e347a3531694c626c377546633947566c557936397856467034364634364f61324b784d6f786a544c33684f374e464d6f45754d45663136565a69334e586d714e745052663850764450576a304e316655444f395a5a38447a66786847746d757a6248787752534a65394a304a70693074416b5a2b67396d627056724948442b6d726a7041776e6145306d567453613378747a57526f4c63794c5074484b746e587a5648765a4c2f414b69332f774471333146662b4a50516147616b3776355155485563346779615867664c2f6d676a4a794e596963626f376848452b52596b466a64444e7079626b6b75643577767a3833694337477874497735374a6d6353367755352b6b58324f5570507038637177586339334a4a6974726352484e33646330316d513537367a423062687630797a366d57746a6c6969524a4e4c714a686f59626c6c2f484f584d6153366d5a686c7a674b616c737434434c576555424c4354636577593637614d3249453045724f7a65544952646e7666512f4c48767a665475547154386f35384c7567376c674f423331744562525472756b43664c664c626548516c725878364d726e2b782b6e5862464a5a7a58794d7965342f727a356135716d646c4c5136532f2b7438435a6a6251705077317143316137666e497a6235423139624336396b50774e4e6f702f6d78586d713057706a7a382b6b30417038307366574f74615a4437754a354766614655634e4330746c66414c703878305a7676427157325a566e5447414a423465724e546d55513050567a376746774a5538542f4f63525335665358536c334b6d4344644152624b2b41576171362f7336316c6d305a576a46546439716251367759744379704b3953784c39575561474c2b306e654f58715a4b514e6c674f34745167757165777a6c723176475544416d7a5744753335477468396b626e42717a75624e44586f5261575a6e4d53615a5673646f4e414f4a543962676349674d6a2f414e326662387342427470353148752f6a684c4a687273754f33477a6b75304a55366b7131353955743956796b4851536137484f41794a71316e456b503867596e2b7442614870783654656f506c3368506c6d31346a346c64354a6e2b47354d476835565468526a5233484338443159723949376c326b37786b45726f7a654d6368306e3177643067343658716d5a3274574a78507843755033473165747372512b6531576553633653755451325a43586e7956654e4f4441334d375164564c5a54373941686f556f35695163376135615249694c51443659774b6f547835342b387376747a30515835356f3752664c6e66656665657251695774326852564c383756304b4f675570702f79726130515744574f43684658746f6e44506c304b5a6359484c68625635473269584b77386b77524e4e517a6b724f3576506b7649757050684a636e335849553178412f792b5537744e7a4a4c364158456e794f594472665257784f567032726263764d31393263317933466933733470485648376e554e3630786c544853476570334235724c736b58514d647734376d563634524d784b49585658647974417573446e564f3752545679656a3535307a4b2b57466158456850317a6b6447302b38624e2b412b4d5a48625755377a7a30732b31764a6a4b436f645455314b4577547a565a705551516a52485a4c3958573753315a4b4143796b396f6b537632672f4d57617948447a3257625831364d49474f6c31614e43625175545532326d526e53354b4d305a71594935736f7359437168564764505664614d6f3055674548312f4e6b54686b57337337732b5069624d32697a366c65643264444659764e446872304239674f2f6a66706b314e503749326d494a616b4b53352f515272513262664c6c79307851534f362f547462645a52613863326349546a6748516e2b35526679665136787632455052513178416b43725a2b7067717241636c327048707832486e6c795178715473456d6a433672794a4875786261374a7451484e3453532f6d4b4c45742b5839705854332f76664f737a34487830316c48326174627561697069697061564d483061394267636335307a3336734e663079512b58516d4467704a612b52746430552b774943437331364e74454e44517465447638346453727158572f4e39392b6b4c753366782b6c4d53336447664e724e534430506a4c363753536157696b6748624f4777435369545a35667962694e5052464f7647612b306a6e4b683779347450575a56486e506f6a57564a2f5a47647650716c483858414d67307266756d52462b637144686a6f7736473348614e6c457a366a6d5774615831553555384f624c4252384e6b355135722b6d396f684a302f77424f2b51457070652f51625166696c487a53713952356c7173524e6f5152704b577a456a7a305a44627a30614562475a56575263686c414e43565274556f6d686e704d6b6a5170534a6977316574666e48366a32742f6875334c37364e65412f5a2b7261786e6a383778574e6d59484c6566416c79675462694f4d4569696a536c6d57336f634f5a313455632b354d42682f586c36765836794e35593552686e6f622f46664275716c67706338796334414f792f38416a77746c5270547a75546d6f6439586f3063465048424759424f3659534e6d514d38584b483869695679656b2b6c3564485263706856584c41776f654830627151644c4f4c7667594b68354f6b484d623859704a5058684874352f7578364f31784f746d5135714b6f49334a7458645768557351577758685432794f6f78686f62325a6678684c31494b7373556d56774f43704e75394c564c354354353933516d4c54356b797075626e634b766c553472672f5478586f4336576956457379756d594335686b30582f45773755375544354c433679576c73794535396569714f314e6d476b3371683046304a6e7a5638706757504d57654d536e4662474533706a4d3666356d52796a4e326f664d6b62527143794b6c736d696b3130506d70344e31797148574d56373574464d7443457558714d5877464e467330376f466941417175452b5733323851666e334e7438586139785457584b70307753744d35536258526e6e793056564a466f72715855706d6255584171397651564e396a3945616751754a783364424a6c62554b4c386f714d356d66596d355a6a327a4547334b76586e6c5a4b567159467a71657062766a46355746786f38465078665a5831617673774446784c5530545848526d754c435a4e446e38564d68556a2f77435457734a716e6a4c307332462f3865786f4a4130306d5a734c3678644e536744456646654b5a4233544e444a2b614437775a5a4d625572764d64426d6b30347137757a79544a6a6c7a775877784e4b374b556d6f656c4d415541433063366a546b2f6e573832557a5a4b6746423651366a416335517a78565641393741616c3264644b5150597a51466f7054623335513631746c67486a696c6f4f577053454e346e684a5a5a6e624d6679695644316970306e55324d5a6c7838464b6b724d306a78534a76706c4e774b4f68534355426358736a584e4d6569702f4761726568566233535570656850414e437373724766476b624d375137776c696d6b506d5648395941366b48412b374f2b51744a545a78556132566c7069716a692f696d2b58336e79657a32702b4f5556374668314c343476304275524f552f6659665159334e6675412b3768786457566a553041733634374f554270355a4c3034695a6362506b565a47507562374245536a2f7a6d365a4b51774348614e417538493179762b73556e4435796d5546786a58704a4c6a656e6c705762424436643336567a683942506a546d2b785375496f36483039775975632b74526f536d6c66656f6d79566759684a634b577a66524e466a36456b64444e436c69435a536b77787a55596942664b594f64456e426c6c31447649485353616e304f79524f3032326a784932716750745750714945314b6c6d6144674c76506a61356175423056435841682f633332614c4d534d363247727431546b4d736a7a36304f7a316c4a4d76496d614c71697977684b5a676e4d524257796e76506c61503757384153786c317031476834486246666d4a584166595a353533732b4f5a58302b63583261696a2b50597876656346303677426e31506535703252756e6b43656530614f494370596441704e48596b747650534e496a6d4255444b6971545431543553306d4a73563966696f47636d2b51557470547a3267636762542b796d546f714e394c6c7446645045775461463373324b486f7a45444f6b526a64444b5138647777346161514d717545614f414436654e50324776735851726a307a3153333352454b59354879554e613978674c475857476d3566762f4145417455564948565130665945675275335579704a356f3355327949446c4537364f6a64324d63334d4a685973715973317333427a317a325a5a56664c336e756d6372767638416d397a7636426949364831564b6d36326e5074545244556166483063454a78376b6f6e736f6936786f7254795872484c497161724c437336326568482f774251455775316a6655696830476a796978456551714f654b37354a34766e30416650506c534479356b715a566c555a534e2f306e4775695a7171506957414f4d69767158556a48644c6c306e74415657542b776a554d534f5371514c70474f367555565566477435673150524e79563266377a6179634d613146433146434c65724b356130396162454b73796c4d56526c6c31306366755673437655476a3751667470476e62526430474e465078417366387a644e4c327672736251506b546d35386d776a72757179355570544b4849364f4c5937724b5947784a347234574734442b564f6c5150776848354864482b555477396c747a6941334c666961394f6e524b4a326352444a496d4656456362502f4145736d6745504766576a6362434e6d683144514d4c316f6b4b6b6f707a644138717673395255394349797168726e4a4b566f596b70327364516a57685570513849335737444c786a2f363775414336714d2b744765727271367674665670313647776e6f6c6d7a554d4757664d36564f6548452f4933532f587864524d68626f42544d6b444e302f774451484d3775394c626e574661776444684b76413761744f3567324a56516463674c46614c6142367148366a566370426c4a324961333366422f75426c714c305a31597069423730794f4a30704d69304a6b556634396f553232362b367365574c646c2f616531596a38584f47423936674a464a454e656655783161664b723131614d2b626d432b653958655378756d64713665715845492f6c37634e50663473662f554a67347570444866445038627033744f6475744f6b2f4d65584831786b386270396466574d555163556d6e7a44526f585739792f616e527a6358716c70585a66484b7956667a5a4f74796b7767706e4a4a6b6b30684f4b506233567a37756d4f6f725449312f44636464634e436f4e576e526a58554261304a4b726e724b753534496b36796442542b354e5762554c6a39356e5966794b6b6451504a7774614a6e70496378466d326d4f6a6d37476c506b6d766c47466e4a736972546c7376716836304b6b314d554f5844334e2f6a7a5a3851396370747666736c386c417868627535734358654c5a2b64716a4a332b617438667231636e476e6758472b6d322f6932722b616d524448664731624b3773726e506d463566375a6d6e57594b4a665170506e7a2f702f494e716a5a673159745a434d7a66713053586b744f7a5a4e6f79726b583174716146616a2b5054565076584f506e4453497467502f414936343070646f45336552396c6c72684f535363364c4778615436337347662b516c6c54786c504a72476353345a325470347059556d5175447172456c634963546e37767a444c4d324c395273696e637a6f796c6b566b4b757a305431315572573061687164566f36444f5a346b657443795a66557061797262542f77426c774e4b644e7262666944336164796a6931744835446e793449574d344b3573352b63744f5769724d7a712b4f374d7833476247654d2f4f3142386f7741596d3131627847756e336754316c2f374e6b4f586f2f536e74696d574b716e634b432f74547166733536687a2b543054714b70314e61536c426f386430776d6e39367750514f614b616e36734b5631374372446d704454454d742b6a5a797a535a63646e59717139616f394b6635714935545554615a334270492b454842436265673072304d396d7652354677364f63784c47633046553955674d3976462f44705636304b3343527049467a6f426c48315a5155436672706341484d45634f7a3541677a78702b6634354c71496a3644336661546d5a3452743558506d6e2f414373726e6373796331544532632f556651482f41456f37375032317276636275553363336c3044793159505a627232396b794b61713534316e4a6b31772f48704a65566c4e553963476c386d6f796c5a4554544158484e5070664961576d704963666b2b2f33454631334d43356366334d6e4d7550682f5331417a64586e786143436f6837514d65757732754c713971486f496a6d544d546a4e457766704a7147314f7a41614f387265302b7853576f794a4a4b58775a75724e694b56796d44457a663374535a7469324e4d4574733069564b5173656d5a7869617a61616d556c595141744b466d666c79673579714436576f717875326d756e473432475869617152565a4f544e726c45716136564b4a62795a54785073537a71653068472f4a726766446f33466e4a3049622b352f5a3862366e626c364b71376b39622f4142647568697335722b326d4f726c5a435268476b775972336e38704346525555725650714e7359646c32664659667a34326c706f6f61356b4c497a73304d714c4e613446386a306f545768314d2f6136412b4c72526d415445494a7a5835544e7156352b6e6d6154394c5353504d6d7074745a5a4f664c6f73356653386a6846713038314d74372b7346374b6567344f746d4476316e6f4144746173446d68465a2b685557683262526c7a706372762f6b4563746b3439374a4b67654e7079546e58436441554d375054784b5061354c6a42776441773138764c387371466f482f45515a6562583147532f79476244707935364d636f2b5438526e4a4e6363764a522b4f7166694134344e4b6b6c7051436d57565a396a7a7947544a38715372484d3131782b4e4966334f70707a46547468396a33662b6b495575526c4954692b6338646a4b75732b703863637872412b70537764414e51725a747a346648704d704678347170302f7332513073584d4f4a6b38326449565a65317a6a4e686454766d51756859706f536e32757062516b76723176325a476656332b4c69446c6f63314967354c567569566b596d76614f567346797a6f753247487035717053712f36794665772f774471646353727555786472322f4c416634734e62335859557331454470397a4d4b75715455506d525452626b5858737974624e6946544d664a44574833664f7a6a456e4e41544176352b674d6c34365767644750772f2f4b54777638514b664c764b2f4b66535478663151387932346333786236486d637a5864794c653562704e445450794368624a586141357441396b712b4d456f34366d61506f4d6364503841574770707a7152574974744850377a507a6a782f6331664d614f5159655933643377302f694246444d6e6c62575555354f436f39523748322f52574a564b5231646e787063744a717673656241364b7874695a6e714b6f386d317163346b4f696e6f2f6638576444436a783376526f7130746465665272615446307a4a752b636d5a612f69587838345435713242473447424d6d347148547552595335585a6f584e6e6c4e443230412b3150594a7070784f585a55676e737575524c725855546f6b3469635453326b69616f436549516d33733058323630555362446d3254715872767a4c55304b44576e64513944454e4c32722f5875506965393454776b734c2f424c6842544159553971575767634b2b326f5a714b6d4255795334736d4b7679773756535572676f69713555784b477a4c69464c7730766c35386e5a6d6e47434e4a38453657767479654e536a4f365459425a6f634356514f5477744b64465253334a522f4d55493578667a3961645038417462302f6b4577465a732b6831556f7a306f717a4854695a514f6f4763593136376c6a536d506b3154786f6c2f6a382f354a7667343041393469744b716c664d6b46616d74706a505235535364426b31556d6745793166376459686e39793256384763663949315443484f4d554861493154702f786437424135304f6f65732b4e724b3531677345616a54585061415a7161576c4f4b6b73356d543848367679546777774e3134715754703164752f6f4a5649356b484d654a5a314e456259516437507231544c6e6f64726663727a4a5a492b6b6b6d2f48516c585a532b6142635a4d446965744935416d45477054737831513630576c62596e6d73536f4a4739746b71397972696a6970736d306a66434b6443657838597053556339536b4f49756670612b684a73746d79415861552b574a746a6f6e716f5a526f7732617458315347344451766a6144477a734b567a4151634f7071736f3254752b576b726b6836385037425a312f3841316d76714a4a6f4d7a427a4b7657613966584a756c682b586b6e6a754e5356314e76534e76324544532f68645a4e594b48574e4e763745766c6b383332722f4f723868325232524658694f3732374579372f495a2f4779375837676632785575626e523336376453646562382b74503935315833754b34644831715571344e4a66456d6e6d6a74322b5839682f4e4e2f4e48315879765776386d764e504f597261646d4b587570347a4e526f5255727365506a39756749324e373161324c4673746a71574572706942704e5853396a78593732394b6b3130713047763678632f493247764451723539586e5472614a5530537150724a4a44476d36674f2f56366e356a4d43616e674a2b47673243596d5a4264486c2f6d2f6932722b4d48672f6748617673626546356336314f424575756d4e63564d692b36576777564c45484d4f3068547779353732676e35514658787a306630694c6538744d445574436548795a647031787a4a367870553045314d6335496e595949613563763671734261534a58733450444a497236447666386762577a6a6c366a3370662f414362482b335a344c34503643442b5a5871526a493250556e3166307950302b304e484e4768506758703244475177316f6f70426e366f3069317673327a46336f6b674d3544662b51654a2b50376272544e2f6452504c582f774168367161716333447a5973754365706956685454566657466c4a57486e6f2b4155564d2b6d424c5a78637773396c444669453866733474673841503634656f70337a6e31446777504737364f636a4a6d665459645849745074684851713752666f516f735a706a306d4c77584a6166654d41334f6a55396158564e6d4a7378475a774e412f49765063786856377166494d327673722f6d304275374c3957336154332b587a4d366b4241506b6e6b6a574e374158385876482f41485456582f424e4357343446666e682f6353394e2f5354505a6a56303361506b57334b7679584f6e7a725271324e4f545a364c685057586e357071484e706a3971314879637a49636564764e4b427a702b7964576a6f577478385235596679432f4a7231412f495464476e7942756e682b47596459325a3368696174476a4c673077732b765537704c2f30576154784a335874634a642f374c57715033314f555866536c644f4f486147752f75584b613652707665746a5a6c57383442445158584f53436a54304f306777574a487646394e662b355352583850756e503361384c52354278317676466933635931616a6f465077456c706d3133666b364e662f7635396f55797566787867372f584f2f7742706b7767424e685076544479662f774149382f38414666496d5831794c6732494b36327a713563484435525a4d3757566a4c314951737061546e4e55686a676e4d552b37357151506f686e65764a67626c6572635a5865715632317433577a512b51444a354e49666d735339482f774174582f4c2f414c722b3655544a58364753576c50556839493045434a4a476f374d36525466336c574969497878477548723134494c594d44315377704a41786439314f42753532446a48483439676232452f77434c344d35354f5771346173704c62773674764f6d4635483267303955624e4b572b47653861384c35516441395a58534b5747673465763631457165504279306b74514d5a306e464f7757417a6843336f4a4d31504d515070616936505450777278726258563544354e507038586e57496f5634374568534174794f367a6c61544b484e7a336c384b566a384c442f5648746d39354b365a702b502b7362544d5a7245384946782f6c6434563664347650422f4966423543674c794c4e5658354848503030356d56656b6f5a38524d614b68663862472f48716c51796b534a314a6d2f704d53325a6e39563035744f364a6a49314464524371616d56475979664f5a39646253343079355343762b69564d36715675345667364c306d4a72353333682b7a3648764e516c666d3758722f31363878374c50374c2f414f4c4466545438576344314a4850782b2b702f726c356a69617874666d67327144416c724c4d77664832626f75496f6647624935644c5276565432644a2f54584d6e6e615470367a7a766174546471596e733148705638797a2f4f2f49383257536d3947696e2b4c56684f38656b41354e7550516251585a307164426c6a38646c56457550775a4b6c66573437326b453636786b6f4468724e61392b5a48507231732f44373039386f7a332b573647443554345a35536a7832366b395045316649704a634f38675463652f6a42624736664e71534f6554577250672f57413154737052396b57313756763537683575507a662f4143732f4a5038417432657366682f70353446363661507174673748696e2f6b6d6a4235336d35576c74533174324e53535a4f6c75793132417a356f5a574d58524f5877324f76665348796e7a337839756c70366574467254586267577836572f774479694437664d32443867665448586c714736665837354234674e46627074426762584e7979504f726f3938726e732b78773458384f5a48734d66337844534a6462657839314c43542f414e30442b37662b4758354f2f6854623649656e2f693262356a36762b554d77744844387031384c526d71394f4b73507a424f70706276504b6462466e4a7846342f445631615a3657674c7478674f353339396f434e44326655707137726374662f496556764f71546c557446743550726e563243427356325878663639796e706146396a4f385a4b6337424c3452446e7a644e79316636756a775051314f344a66484d58574b6e4a5244506e7957764968437735326c456e6953516c6a674a6d68386c6a42443242336f66496b436166734e6876326e72412b5239796b746d7252522f774b34314f6f5a494649436559507a7570694f4b68517769593871494a794d6a2f635a4751742f314d2f70626439416a4578704e5364616972346e71503077754633736e5764754c74646e735750556639566847586548377a42337636716c6954503841702f42396655685a6e623255553154546c4631535033704935784335414b756b706e67686e6250615a646e36366872654359705a54375065523856316d67544d6d73453436792b4653526f5a423938756c786a4934357858396a766132482f784e38504642786656632b7a30352b4f396f66734d536538454c6863755a764672453548496c535a646c6d684c76794c63316657797939754a666638416c66654e66427a36366c75573075686943554561592f756a4e38334747565568584a6379706a614754316d6b633367456c41735366466761357a5366766e3937766c4977636672764a67545462506f44704f6353304771736d76766d644c7971596939347059744c766149476b334c4d6a4439665a466637356c38584c2f7742656a542b6a706f7244764f552f58366d2b56497a304d41493364475970467335316678304d45506c45657a742b4566395866333775545476435543304c35793339795242797a354a477558312f4f4c543963364b414a432b736f2b747765644e6e4f395930574e6148742b5032397677364261423156504a6c4c4f675347494a7567745332544d6e35654d3837455238465042712b5a6c426356542f414f2f6977344873563051565332336a346a397a356f30432b746c6b633743752b686e324e6f4347646a454d4133457559756465516b4a442b7563427875392f73412f68595a327a756a6c6b4f35356d5a3734796d585332395470317359706b715641795143474b6b564964386c42457467394259733458535437774c764f2f43566432376c786a49765831567333665562314f54515a67505a386d46584e4b7433526c2b736e374e314144384c6e2f41412f454654686338654566476e542f414d4b2b556d2f3153754b316d4f385831347a36612b46654934553235354a7431616c584f53365959386a4446386c7870736c536d576d396130614d376e4d57464b57394b7562367870622f414a74576c464a6d5a6e6248555854354a46354d7965526f676d785459596a676d6c475848537164326a43663265486f357336334d6e6a4b47506766433670644947356143397a6a4774647631436d6e4e45644436686e6e74304d2b4c654e566d7039493479584d32566b7a6c746e514e6557795a446d4c733939744b627a4d2b704274464c6c486f466738696f4664663871702f50436d616855757748664d766d5175504c5863477376377665637a66696c31766858325976636e73337a2b7a6b702f53546e37767a4651657633356731617174507850773157656856474e4a6e4f717a6e6346453564304a34644742515a4f7738546e616e363543444b41464966434b56545444395a31366157654d39427a337065707a555674447444654f714f756748393651396b64386c72754a2f794c50533265375056372b55423057416666663731693775744f3864516678522f43564575544a3633666b5256503470347148363376452f41627a3076355879364c4f5456545671617173334e657a4c7a5a6c7836784d6131464b7835376b30782b79766a6c34616d7278696c4f61306576587947337376354565512b523645336848706e6e6a2f475a577162315a3244784f6a342f6c34793348792f4e5545656f70632b666d4f58472f774456446b6d7553796572336b42506d546c4e4969633267626c6550655765726f5a644f58355a58477137556c35546f557351724f6b7a744c4938666f306e5453352f5a313871304f34634b526e63686d6155334161416936623638673557696d4f45385249504535342b36663841503374733344653242756235436664545378636d746f3632645a6f596b4c56756c376a386c387348335574534644624b5833665a49785a37597477356536424366554831656d7035727735744a46646671303930496238714f6f3646754f7032636d31325a4c2f3675533431366647464b4354593356466b38786b75543746715637352b67355665592f6c644e34333667637a4561616e62634967334959473158646a5173626e366b576850797a5573306153306d584d6a35594c366a63556333786539516c386639644561637a586343506b763530542b4f655a6339512f42504a6e576566562b4c4e3866596a784c4e544c343734396d5056705a4e632f624a61686f336e4b476a4c555846735849616333355a365a4435504d68476c6d4e73396b632f7649504f664c664b64312f6b586b666b64564c44365964315837737448554a7a6e536f5573697155545745737147416231746178716a576b4a2f3044425870455245596751585976346d5a445a6d645a48504574305435576d79735668574a527341753166384161486a47555439396f74344b5161514161657158504d524d7a6942484e50524f6979716e4e7576364c336a7877756e6555514c35776f5651502f62766a442f4e61414c357a6362577034785142302f696465745078514a50346a6a336c4a62646b7135394832755571366d79555155436a5853626e387146516c50324f4f3568706e5334696a415866415270463359764d35784d644237702f774331325742582b4c6670786f446e6179424442564c3544786f713134486132686e304b334e31664a383051322f3159375059734b477161614845534b32704276513872582f7a6244724c485a4f654c34356f4b5939666c554b536b2f6a61726f7739316139445779646c68386d5879653471575a73646454696438496a6941644e5a484f75744f49306839622f4b6534655a55562b384a4e516a6530577831486d2b5464623544584e5859477a4e4d7152774c3862634d35664f71734a6e4839434f6e55704f684b6c4c74534f6235446c6c682b5a5a326e35783550366c656137463256692b436c354275717330416e3476467971344672746f7064586c75553751665156566c4c6e704c336d614457384536505948394578474e746669396638417365594c383176794f332f796b3964764c505064547255345758797a4938515254634e444d7a78374c72595930396e4a7a414b716e322b346855492b372f51445434494e357a76307156307156694936384271714a643537416f34723370557156584136786c3031493054735141676776387666516b2f6b35303143664f304776346934484233436b7a65386e6143416f63466d66553561525759723654313142723057754b452b465741697851434973365866682f5a6c3752442b67736a30773962765672305031364e6a30703830386f384c314e46584636632b4a56657047737352464e7964484e74587a756c4f5a4a714a332b6677676b2b4b3666506377437974703176484e7a2f7948514430302f75782b7458696b5849664d5046664766554371484e4e575473742f654a72676d586c6e736f6250574c6c4d6f4437455a43485641444a514d666a34664a6a6e78743750535a3457326a71562b4a483979504c3951636a79335438673843772f43664873664b5a61724d385574674c61796967537565696e43506966734c6e737932696a576f36536a44706e4f6b75704c6b6f632b706f596d73526263504e783574746c726558655661584c59536a33664a664c74534a66562f5856537257386c7371525a52386c432b2f6361374e6a64306d69424230444869442b495a6a376f37467658674f6e6e396e48314f317647507a54772f415a74797766442f556a43386a79616c664d756439756b4550377a32495465494a753069646e304c34754c67645a394d65705a5335592f317a2b3056724f6c752b4b6f36352f77423854307a7866553338532f452f5666477763696a7944306238747869304e5536456e624c346e7551575a6463796b45784e495a5038346e4c2b574d5a32756b4b502f774276784970423350374c6161366b566e6875486c75394750517a31452f4950314e3844394950546e427031504c2f41446a79664a7941676c6a4263386b5138546673374e664c71474a6b7a5a597853393356394a5078774f4832462b776e48767465744b3274505971503644336a486f6434442b4e506f333653666a6e36545a5a456a7854483376473859716d72747a664c2f4a4e4b6c64472f3552757372483642554e38676456706d626165696e6d654147617057706b6e3865627a653172326a746a67392b6476397354787a7876384149583038395866585479377a6e794c7872316931764c712f50664d6f647950507750464a2f482f484536654668445873533236454f57794f4b6f5a7a72623856634941584f355a41316965765331356d6c71317274326a533233384250787677712f584878436c586e327435704a672b53656f666f33707a65514f55722b426779557077764632346d686d687a553877555266794e5254316e4d3350704e73767a63544e7a2b746666586e62504c736a68595574366f2f677834446f65423238394a377476503841566241385677504b53384c315a377649342f566d31335a39445a4c47767479597073502b4e6a306e4661423970396a7067674f414a7761344c56315a33357432662f45637337736a633864645a6e314a7168312f484b61382b334b645078377074525637596a535a644150734f48517a5866727043354148596f67456d476252337a46762b3731417544304a39513972787258646934326a394a506c79757a61484f324c565470526a313069384674306c69792b3065614c5072723642757056704e6d363769762f414b45586a644f667769372f41466f3959644e6e6a2b703438326f50494d37557a3461733348304a7250705a564d2f4c6f733753564c7a5162394e775430584e704a53772b4b2b4e774c62395035694f6b56724535476e755a34355a76746d777357477a5130586163554d65676f474c51312b6c597359656371565978574f58616e755a5037794c374832566b6c6f4358552f31654c544537706a4f52376266374f392f72316865694f6a364f65744f426f5a486e4870442f4935336a65756d7a4c386b532f785853424f744c6a5631355766536e516e415a7853437164492f732b38766370662b51703833326d4b7a656255374e674e2f756a6569544d58797a76716c6f53556e343535396e65506547614f35344a3471315476534d5a7453582f7a4338452f74456448692b3947364e57684463394a5558484f35522b314a5267304c5a6a622b482f642f2f434e6150556279447a4479425072557a4571387333433878394f764c764750554c583071764263766e69364f656e32355434642f4f4862704e6256592f783258335563664b72366e736438337a41353671373169496973322b4873397278486b6b35563736335a414e366c434f766d58414351467a584d495a364d35674e6e396b724f384b6462663858634c6f653875722f62574b394462793537787348542b4e58354234754b486d47782b50667278342f3469364366645435563542365965536a6e73575945787567503273464b6e5a684c5a4731484348324e50336d72324b2f58785633306d63527152752b596f58546e494a304d617a6e5a2b7375465336575666645a52524d6d2b77674c7441454e446545344f4551755977336537675063766a6876547643613275372b2b5a356434766750544544346b506552316772724c355068594a542b2b72342b4c457845444f38414474616661674838663039514f756638415a6a3845312f492f796d6f38307a4b4d72754c344a34443551773536714c7a6f72753869794e7944496c69356c786736466e4e677077352b3175396742514a7857664631616566326d596a546d732f465954622b2b6e347a7459663559656e763875385959622f5357544d7a51594f73356f46342f6f3042524f2b725146413744584f73585378696b2b382f732f5764304772374d6d76736c6f39316248645963547252656647557367596137453139625733347564667a767471643071714977372f4966522f3276416d4837694d7563654a67536c64772f6f596632724c737a652f44663864386e52526f505372306878364a747953434d74326949724c4a723149766f665a384a474d76736f4b4d3166344846373567436c53725043313578713238352f714e6576376e2f77445a44394f76793839624a7679442f482f316b3856394e7444794379664e3953386261787938676e743259713435387a79574d6b61676871442f414e796850536f555057645348736166524233396161487456744f4e6c3637673439437637492f345166697a4267622f414b776550712f4a6231637a652b4f5436772b56667a556e686464664c4d5864494d33786d5659534f6c496c703643336937357337565930464153544b4e66327257314f46663264526576354a6550656748717836462b6f66706c366c656c33706e682b4a53656e2f6c476234466d596e684b76462f4d344e69664233483574507079586a2b4c79746d624c6f4d79584d573255666d37664d76674f6f634f61644b577657395a72613250586148382f485778585a444e32466b756b464766645246334c32576e6d6145786937534a59325a3150784f792f69464c65556f5951476e3265387a4a7977396e72784d326d496e7049454c72376d50486a66306c387866636c377a545377576349724a477863304d305136363458564c39706a376759747a666d42337353774a323775624f4d6a4f513475387065706e374468723072346b2f4d68424b6659736634362f744e4139644b435a313064373067396a456e332f542f77412f7251593268657965584f724867463274756847556265786d77486f6f4e7466774f5762456b53557034512b302f64395a5141746c4256487a5034742f772b6f446161763530536e79696e4c55766a4874574c4c48417766712f52574156304c4d466a3053596f652f36773538314b756c333477442b6d33627a5a7a674643356256566d35375673373237536a56483749736f5856706f666c527868714a6b733779644b79576c6e66686e4e5248542b2f66303365372b744236702f77372f73672f6a42546c2b6d6f2f6b76367265532b526571486b677a323633693369727347507848784574534f7a526a385231397a4f3148646f306d324c6e732b31306b677744374c4b317631323366313565723756664e746c655564502f536a2b7a332f41473350514c4e73673076536d623172387574336b62626458314776324735586838304b2f77435671386248447a50672f6838767448386544613258567653792b6a7172416d54376d3839766166614c7832746f365134766e5868336a586a47506e5a6e696e68666a4869486a445935664663587770454762346f755043386754544246682b505a3448795770457153624c41616d6e38627065723668586136624d73544d397245534e4d6679683854384b2f496a78627962306b38766d2b484638746a62343971632b436c6c614c57705376786e75704262374651306433705530704536624b4b547a534e564b59312f4975394a6d6b317448776a77542b736e6f6a355a36442b712f6e48706a36677737386d763476634545597a7a794c527059686c63374c726e566f3559716c6e6f7a2f7176576645457270642b5a4c7942354550723176467131745556592f76333675682f4b59376f535849726c66637864432f5966425745716a566e75356f30474b562b345869596737375866304468392f394f4e5a387831522f436e79503748706866342b6c765175777235664658784547667a52744457365845737570757a5738584f615a56704a58656d744b6f45776655734a79655535617363387a6a78463366696667655635663977723068384338586e786469487a6e79646865524d6668356663392b582f3668706f644f76546a546e2b50303953777157427a767a55424851632b6a594877633554556d4a30625450536f393258707067305a3030305565503841576574453068444d42582f5844507a313531367557794d34624b752b32786f755a53716770735468364c674976686d387138396d594667337a3879593838714965552f41375054386777475064524d304d74446448514769686e795972435851786a47746f513367577441506d6d562f57596f2f3147303479574f61464d544e536d6463354c6c716466464a38633179614b555a4d5761483347647a5a58443162666c54374a76324647685332397761306a455a3852786b38742f46487844387676794d3859395a665631746c6e704c36533261505053504f304e36794c4738373951354b34553933503569562f482f414563334a77386656482b4f513956364b557261464c6a5033394d616b36644e74653162714f595039386638734d6e42395a6678443854462b62356a3546364e614d76715673654e612b6e6f61614579375863324f5444327647704b702b7873704c4e537a3967615444336d77436f46337344663258546d61616b2f44596152666d6436555a4871762b503264362b654c5a63773748703156693665766a5a4e7572356c5454344635666178336a4d336b486b444e357973307535374a653958504b58365135663257497054374b6461576974396b384e77354e2b6e6e68502f414a3535564c67572b574938667a39515a583062316a6f6f716b3538782f7252613751736f3444716c4a6c6359644672332f3662464a4b6869335473364c57784764673265395676784b67384a39504e37314f3845387675386a6c38654e6a4e4f496e794d4f43637152536d33356f3668397458745437556f44674f466436412f77412f726334326c64535a785731632f59614f727070344c436f51625646514c416458327a74434263307270657359372f57744a7a2b347565333247774d732b45596a53665036365157537969785076696e6230484169664b47743038383341644f4e5447565839306c4d6e2b4d736c626c734d58554e373742466f556534763677372b594a6e79765545476c475a55723972784a325a4e724142536d6c4c6b4a646b705763374758555338622f696b57395453594578787144733861794675547941507a6d4c6c705747716c58492b716f684b763742634d3242536b7a75695a3967674578397a7155683376776b333242326f2b66634b307a6e674e7241464b304f596a377a5a686c6958516d65565764566b2b3653566337474b617a726b504258792b3466692f594e65495930574e466a7572597771682b2f3771705a4a766d75506c61556b71736a5333695a577939686637717941452f543934504d7630705851454946385477692b5241397a6d396b5a2f3262596b4b346e516c6f65667938466e4f546b354e4146316e524932494267657776635a5a333776714874566c4661584341386158784f4366522b6f4865334d4b777376357a44695670702b4b47437a70667368452f662f7357317165653274613536394948726c2f7464663269767865322f77414d2f54373870667974384a7138713951504f744e6e6c50672f6a39753572654d3536633363756e7a5044386a6d486c3658324e596d7a5972394132326f4e4a7a75724d506d696d36663963487448744f703732326e70323231714f33474a6c596d666e684a6e525276666d557779793853317445734f68695a5259457a70734243773570462f4a59734c7a5253755a646a6f4b557163786966695a79546e7250654a6a695136506a732f6875667131646b6779625666783155504d6a46426d6e6f3055334c6f376f564f344e587553763562554778622f684d414e70432f7743662b6e55635876373675754e33346c37586a6e59645139535831417a6d3655474d356c4448343876746f7638414937345a6673632f6965616b756f786a6c5064304844394f762f543854663636765a4f476f50466e5a4f7845636f4d634b5764696f34666543784a4f2b617235484178644d6179577a37684548373730423450744157382f592f3136773942307670622b4e506c6d72364b34506e586f523454733458695870524276656f6c6e695762762b4665536554643868794d385047372f4143546138663148465643666b326a51467569544b4b50666d712f37546f32644f447a39313469324c6471334b4a4e6b2f67622b48336c507074366e596976547231437750567a7768306e6b506a6475543539645a6e6556654b3632344b733658787247744a564f31636d663636394531554166753161584447546b2f774345652b314974576432613247685035742f3238332b6773323336672b6b50664a2f4c66532f4730664876442f4973727a426348505554785479656e486c703062744478794b6969676654682b6c72436e4e7663434164387956664d5a7a637066747061322f6c767932396637687a587466395732682b584d6f304c2f6b755369366a6a4f4a374761373363637a3768636e51534c7664372f326c7638413258634c676941456e6638416a2b6e714274562b4f336c7458686b76795a4f6e466c615230566179746f575a68616c4655433465395648317a7638414e66534b6f2b6b5367626f6e4b416644576e6e776e6c6575366562714b763841574c314462366c2b64376e6c5179637a396e5a765169355232505539395270537a6e74756a447166344d4666545076786848386f5664446f664d726a7a6d73597269656f6b5034372f6a5435392b515770747765445a65566f3466694f65767976792b665a386e7a664662655945377554366c66696964786679614c76706b54306b6c52332f384178456974725032445a767178546a4d637739436d4b634870563437343370656e63336b766a2f6a76724634396865412b432b64596e6a6668702b612b6c4676684961764d72786e7a3349797330653657745a356f79706d686148735433674657687a326d6f4234357a61656268742f33445137383450575076686e686d3967786e6c7736506e6835336a7365723474637a5538556f786647396e4e635731466c5543416f3258696c4c763249396d577659425567713679355961364e63327050346344694d743670354f6e795944346c624a6d66634361674f47796d64354d7a6b507a775a483752517a764139704759663465354968315139774a694661644142496b632b512b41774751544e7a726d2f7062316a2b3364414b74416a5a3872484161785a3849633448652f346a6e7732657576723744456b524371373672306341505930776d6b702b5a4954665436434b32434b3130462f7742716848515637576361594b4e7a75666f52633378644f2f6f45376146394d51574c56794172334a5546704f72514b4f554f4c6e474e42716b33645358744e663744392b786e47663841763934614430576632445043464e395a6656627a385555584d3850394d70385243496548573546476777576b72584c32396e4250746f6a465a653135557443744b42526f665853666e6531323561783033535058623434505074774a565032656d4b7154506831686931567a3756566c7055665370427577706a4d6e764938302b2b35702f56682b7968774f54384b5863416c506b6549367875784c73307a706347415043734646636e64436539617872783739566c55644766676b4f704c316b5a4d55346e61527a6837317a5738664552694d442b61642b596e67477236552f6b313630654757356447616a7866314538727a6c6e667a6d5975344b4e7031616952486f584879645a694d70434d376d2b31535235495a67766a6d6531705446744f737831326a58767336714a4f5368527a3435626c4c342f3841553544454a49547a57596d666d682b6968435261792b45756453495763482f332f4c332b7235787a2b5064362b5156733075386b633573383036514c735a6459715966684b65436331357355305139584e4c786c56676833704e39346e2b327250322b3861346e646a76432b5774613833722b4b514139474e6462442b346c5a4b72355061376e644a346b75656373386959532b7241525341473144512b5035462b31506d4737737338395232437071567354396d576935794a6c6e5730706c437556626d476a36505a2f65582b4145524b7448324541474144473663626534446f49324c5774736f6b6c6c426f6b4667304f564b77676c5948376d6863755a7a6935634c4237777547525039332b514b6e49333376334447654c3466385578757a615154476f6c614b334c63664f674c657537326449674d70304f4a507a47512b3549447a767664776d2f30332b5833436b65585375536778366746553070575858492b52306965304d63626a367555676352756a6f367442413851412f61422f4966476465383867625861466a7443616d31633671733631612b4c5645316b696b533048457077324a6e6439554d3931762b6f6e4552632b764d3733667670747278724939367639724c7a64476e2b45506f6d2f786a79504d7078736a7842384c63534b4450432b447a435448386637564a53704d2f486a55444d76516538354c51636d77316e4d7453776f442b764c3134787132387874547234506d506b766d73534e4c4c6a31717339354d753869744f792b67614d4a552f4935355a6134775755343575676b56436b752f4570627742796a41304869504e422f38414b475052745870333632666a7a35446e5a5665663439352f3662376d526f67774e632f3472796677646557476c477a51706a347170764a64614e4c45653566363737665a49672b737074372f41474f307a585569337757486e326c786f65395a4a30436458554e74765952345a55364b515037443658553043664753534968754c6e307a492f3259557a7a556b6b6d393674302b496839426f57394d66624271524d71666e416d55627a354b364250466b30657236667a664a39666e4357667a414650515562506454304c3037775a4b41484a557356434767525a4a76587853574f726958776d4e4361576866566b6c57616d666873513856484f48506530792b597136373765494b61356466444e4f64693553736575687566644653364d4a5a35357853696c43347a416167716e2f414d684c717a70592f77442b497a6869314b6e616744374e4e6d663262324857755a37464568714f4156516b384a316e5857565333485644564c563758396a556c4a644d6665426661486a566137733863594877655436434e4e61656b544a4f6536436c6879414653756f4c72324965356e534649725a562f6d675741526645302b714c706e2f565130465673736c30434262545257346d4d466235326c5a4c593550455072576e51595a574d6f6c535065456f6e4164697952377a42514230444b4b636f2b756e34717969317979706e3747414d5a78695470704b316658556344327447705a6a4e774774554143482b4a30556e7a4730356e6f5054642f62433963764e665537307a7976452f4a71476237764365387853324c4c6d36564838626e37655837732f6b396e764551646a3252796c47457041306a54396b6d54465639446931717857643044724935326e4c507451706a2f4149775172736d616e55436533766b4961327150573335396b57544f675a3254354f4f30663072536765716d516d704e4d4b61655a44586e316e3832733846774e7a7961374f707870504638683230594e766b3165363845565a582f414646342b577876574c704a3249676e2f732f5945793771577a3066366554455a6d49385235422f79543953746e31533955504b7461726637755a766261596f4e4b704d4d7a796b6b756f356d63304f54516f483575724666414c33474138544f763544554c7574394854724661396b556f6d5a306a766d6e3751722f6c4230495067396c495a2f7271306a48744b6665355077696e3556697354515a6d706e4f487959473743665232573077715a485455356f574c4532357a582b336e56567a733671716d306667474767632b63666a55784d782f7873365743526b676735776e5a6d5350384171667771524265764b7444696e6576396d33394f585332674b5a653964396568616d63595846424c30456d446b50384175453230576d4a363541473533624e44375233482f684a313634574f664d66482f596e435a4375334c344e672b79632f634a41612b6643483763662b755a4d627032375232352f73652f6a6e36622b7650355a74383539614d43547a50775830557a34764c6d2b4b2b52637972634879447a4462365038414430366d51346c7a61303635334d636a76794342684742716d71514c78446e39717662543034697661734f324839392f2b34332f4142486f684c2b4b47546b6550615a6573312f4d78445a5a6332795878627833772b724c6c78693866305970572f48754873454c51656a696c4a5535716a2b5a37655853387673756a4f37336d6579504f7835313466462b582f3473542b64515635692f79572f474b61654c62676b3431482f6e766f76616d4e2f6a2f6c44584f355654702b58543366615a3047746d612b4d426f627869666e625032316e33657269663876552f3868795863676b54386437477851324374514f524b62766a5069554f4c536a36786b36394433546f7046684c44392f357336505059314a2f3132422f687a326274474e69516978326864556a4f6c5445683164584f3173304a47566936546e7a473772696c39763759537a2f4146376d4237554b2f717334727a64343732594f357570394c637230654156483474346a674e385330386e44443362506b65316b6246574e4674624d6d6256396d7745626d3850554c55484b33423953636871576a6c434f4730524e707441692f714e3676654765683847666e6c4c6a372f6c44595a62764876474d6d303761776b6a312f644c74617568624341696c6d65544f7450384134516379515639696276337762614b7a627230484e583154395539547a473532766f367a4768396179576148504661637a4e4f70553552705536566976686c2f6a733344375038414f326177776d583872686f413264316949694d514b48526e54305773704379665176347355503841724a42556a4f556771636b56683133545637356d663564556f51396a7a415639486e503366647937514c54333661673937756a57696c582b43463050454b47725a546d6f7269364c464c637147426863587878392b7a37356d7a467868314462742b5741714e585774523055746a726c34493049516f3179652b6d334e6b3478394b42576155722b52625069393445636a55634d75664637547a774e372f376533354e342f6f66367a516f383236743369586c4e556d4b32784d6858305273324b55353444614c703067364d35614d3176534669524d737058425578564264565457303574586832716a3146437a48395263323777626e637a4e53536b36324c35484159576f314d704b43374c61797148596b2b596c79365a4e446c484a2b524f39307a597753596468346378584e6862666f624a4d3754376e6247763543486b4742724e307669306c71356e305336465a466e54325a614b467a7930636a324b75555271536d6577542b464b357a49484c72667041765479334752354b6e565442697238746b7a745774716e7837714f766f3869417034325678697155455543367169696165702f5747414f4f45533538526a4253747475654763677a3658654e5a63525872476b303754543751564353304b6f652b4f614646564b4d34385032702f6b646a35714e4271484e2b4b644e4d45484b42525339782f30744f5a386f4768663933483833387238586652727976307878394b6254396366586a78562f6a574a6d395a496458686668637371637a52316449345262645048643433636d69567472464e2b51324f47623466597a7533732b6c4e37546234616a78446e4f3065746c705a4170784637377337676d72674d7042626e4f564e4e4f58433042534e48463861746e734634444e375241452f31374149366132496e6537677534537a6b756e66454a697a745273595a4748566b4944514252694852486a55664e39554664555066367870326f41365837544b4161364a7441766d65324c76796c376e6659354b62314850482f737146624b4a534954486f6b332f41472f4161544a493743554a354d62496861364f656e714148737a3054466e5442506e2f41427a7458797751654b315644636b754e3434506338416e703976667238357849447579704956634633586a32455636592f4170366a7076644438544d39452b6a2b2f68706a646e7a66487a674a5741465153654f6f447267412b526171584b6555344b655532663961472f6b36707a34796c4172304a6d4d596c545357744b522f6266664f6644643150764e4b5654444d524d7a694136784b366352637a6b323177443864774544645a597a556168494a6566326252516b7543354d64316a532b763879306c31587370536f3346496d637a4d697a4f656f493563744c4f5266585a6333614768464d3972614e436168524b4d6b395473496f2b5a624a61754266796b487141443461666631484367533558692f684f75557475467749696730726b2f784641646b466e475436437361563567364a4f52397464524c39724748384c544a38626c41566677424a346f67584c52386c454879645376736c4c4f5237445a463174772b30706a39756252524e50316731663464354e543761544156674950354345376a316535733437662f6b567666747a4f707a65763373374954566e746d456676696e62326d302b355a54436372545653464463705875533735436549626638416f702b55656c364c2b74586950716634763548756165547858312f4973637475764d6b334d4c546b6e6b346d46543961666c6e6b446f36495464517a3679776441395175616b424c7546394f4c5676575a4872302f482f386c664476576a30306a3878384272346a7833626e67716e3468674f346937457150525a685657323646334a646f7454576c57626e456f2b652f6b457975483836482b66656b784f323064423043384c386c642f4453696551687a4d664b756e697574542f41436936303464443877455a554c6468676a50515074634c464d2b79342b667669536c4a504a734c527a59385261504e6c6479713879796e6a4a2b496c73664643503841386671626c324863327a57714a6f304f7a3649564750414e7a332f2f4142765a2b7942745270742b665034582b4a666d503657362b65374c7a637231713858486c4870723574707779467035326e41364d55654e37723331495a74654b75732f6a774c6e4841414f4f63307a7359494737585331703072666c743148693738317976556638652f55487a4c3069382f6c38673858387a384c634f5a526e42326a3248567265504a504e30596d66643447356b32352b6838434f41446a6a6d2f667a4a496a64517630343233696c71385254666b7433646d45396b4c35457836627a70442f414e526d51454f6d68693437566c5579634265515934754a6a616e7a6950384178386f644c69614274586a7939306a58596168527133412f794b5469705842625a716670695a54556633426f4f4d6375626f61376b4c7331355263517a464f5434557a4d6e64386966363245495275584f634873745a79694368664d7a3255463832644173324c6c706b48516f4a694b435470754c692b6d6d754158652f33456c464846424b7074725156395a73632b6d455a7778545738716633517a44703379573974656667734254702f6456644f4964366e724b434e52715954614463414938304a6d713136465972494b7730506d7231354b3773784c6d566144687a4e57446c49306a5a3742736f76514b6f303946337866436e332b776941306a633064334a596d4f2b61523655587a4471387a703053612f384134346d77394b75334e4278717a39416b37467679677461665a4a704e73393444475873727372344348445a48556737364b347070755455776433325a556b7a2f414b777a58435454546e70465768524c4d53304b39366b386d375a45447633314b306e59536165654b414e65317a6c394f7969336d524539625972504955517371716d4250367857715455586b4768436853614667787631766d61314e4a44796346356471486832775558774e31414655704a722b336c7a58323647555764657971556c6a39356661686e35337179534e4e4e3873314e444242664142692f79444c716568795770564b3151794d463436576c4d534c6c733550634536644436396d6c79467a754841395371484a41307a63576973784b757976674c4e394f5057447950772f38416b6f6647664d764b504663727958782f5368304d4a666b505949664c38765630616c7a543747637535696d5a4d6c6d684b614f584963632f765839415645396f4972657354384f66587275414f32657a55716579683963612f774256682f4665555a4b352b766c6564477a6d736d34756879396a39613153575470735530457a5568504f69396b6b796b713875643344496477514c72652b5a3841664a307159656b6e51386b2b346476554f7279394f73423044476f6e36777a4254594b6d4e374d482b5a79382f36634b334c6a627779426b624147432f4f675971775072744a533079445048467575566f5653345762335659587961584e53684f67553135636f51446d4c42507a6635383045546f3868302f6c707556776a7a41306469747149756e71506d626d444c50383052536a4d36575572686f75743552597745722b4258577a575439627975797667482b7a626c31366d5a4b4b5930502f6a374654715568312b6458552f6778497a44587670517432776e636e2b48702f74676c394e762b45395842442b6c643348634c7138453955624d36757678586575757244554b74725a614a48634d66755657552f7038333858314b574a464f7865526c4946503653612f63672f63484b5770694d35344361443564792b696e366a364a567961513371546c3031556646646f2f56706d315279436e5977744a684a593172756b774f78575769553765304c2f6b4b4279577175754c4779466d4452434d63754664426362476d765361524e357a535855392b664f7534376b317864533450714a6d7046497a43315641525861773559416c456c506e64414f62534f4c4e4c43394e5474426a4a38624f767774657159364e6a3644716945555054383634415937332b3949737457323335534842322f77774c6b67304f34386a343874516136624c38496d6a39424b2b64716a48422b757761475653736f393171585a34515671543741566d696465766d42543678716c792b307757506a2f692f7743555137544e55764655717a396a36326756746b7648364331646f6a3976514e3052357348564f6b632f324277437a656c5248637171794e33476a5971526d707050517a585a30557a3539316b3773396955304d6f644b6e6b6a726b316442306b7755556d587838434156584e697638677830693177564a6a63716b50497932352b682f473871716e6936637453726d4a6a6f5852624a4b536b6d6b584232704a706b514851495055794a316d6f4e54344e33545971773665796861327a5671486859566d557a756a59535531636c6e5937353142477756514366734d7a423034626a66695652446c2b562b63643171614c374b4d616e4d533958626452615a6b6b5471474b7178535765623737355738624d6737655139316552546830327253505071394b59366a326c666841384b667838394b3661736f755450696c79355a3439486a714b4572365156523265534270497a3430633865795a382b5a4255474b75787342782f592b5645766d6133626e35514e394278544f615766527a6e74626e717458327358506d557437776f7239375a666d567a512b4370317a446171655a6e3037465363575972466a7368385a6758554f6f377153344b353168706838685249656e32687842736d4d586241663969526d5734757a6f4154542f42396b414156376571434f7549497568496b2f6a59704672356c4b484b5754644541462b7945675679675761512f7736516175346c636536616c526f366b475443412f73444d2b366d514262583833366b6d566a666f4b5a4c475556513774453361502b5857646f573435326b67445555662b61415431526d41543675546b7963623356522b346b313254515644784e4563742b666e703271714b416f45746758305a4f705144514c366233485833342f6c2b4b5133587a424b45484470736d35416e4f4e4b486c544d3665752f6a4b576a6f5770706e3142567971706e4964424d364f6a787232726d4e4b415354674f674832706c4d3436333257557a54444b58617869484530707451577253656e6350764951457155744a56527a422f764c37497163662b5966304472626c6879726531342b6c4c6d7471593373364f5264722f414d59324c626c614b30794f43636f3436506439666c434244346a39726939314d33784248715055624b6b317a73726938686d6d706472636e433752727a3463754b6e50796258767378595354536e514851736e39696b2b7777706a6e486a456d722f476473347a6a674773586c47787264584c696464676e586d4838736f3572617163615a375752676c38344a545a38316b4d6567624f477a7039633447786e387a6c532f306a486630442f5a30464e363265656c303166374f4769754234756d4b3771307931305754396f4e4d382f6332786675563164446b754e4a67487931544163417631386c445861453952616666715779745a6954774237376379706c302b674332516b564169764f30416f2b52446e664f6b4a6c664b626567594f363377356846636a51726854554e31484157684d4f666150656c4f396c67766e4a4c424e49314d48696c4a4370344370612f30416930484a33584d5438336271372f313263792b3671644f6568345766593051534a2f4b6756304a462f54637445767766536553765948776a4b43724964455531476f49496e4b6a3057315353305175554d6c36646969326c72692b717171786e3035332f412b59506566764a6f7034426977444866476243494b745763434347552b396659796c4b56706b496344372f7741685763576c614d6c315877745774514e5a4d5a65796f584134776b6f5a654943714f7a7a7a57314b544e584c4f47694c34756963566c4a586a474f62306f30396a585861497064386c6a71576a2f774165346e454343664b5a7049703953416f5a5736435a6c316165677952543267696365545366794370794568347a3768386d4a72577134504773502f6350503643766d5243614d78306356637330437337684d707371586b7668726354376575524756536c304a7a376e55647135595947743355382f786e46636f524e624a727070557a306f47416e5730506a524645674a356d3075656e744f666f4e366c6446636c456f4337374c4b534d435934792f663246675670697a31516f724e73357173304830784e5255384576374e4a63764d685870384a593872484e75596265485237674f622f616e36784d63414f4e4752584f4e6e5a6e55724a695944566e496d374e506c424d32564d335030724c495736484b48454939597873306651466e3250612b6a70675871716d6d706c4b3937302f663433356f5a4c7377594f6e6e4a47764f664a4d397a68715a77734e684a653535756333396539707a304238594461624671306445537479754d6d7a4b567346732b6456392f7446544e6b707234576648305576546378783836354b51467a51633430736f4d514456585779635871446f617531626d4f324a704a4f646d764e302b6a5755683039634b6673564656715278696b71654a4133665636485a6734437542444561433277416e624f5a74464c63756c644b6b72356e6975576d735869537061762b6e7464457168344c765a396334796d6e5953614170375066793542694f467447696950684e37706f487072556936775a7053713058527230595a51386956334f6a566a5a37413672704b50374d33477a4742744b6c726a57664d4b366655557a36385a72784d316e614f46734e6c675a796d536d6d4f794f5772355667584e7878776b6b7663766a6e4f486e735839303075516342426c544d66534f312b62797145796136724c72684b2b736163384c6f717a7a3331586645786e616b3247464c674666334b554c57306550635275766d4d343535694f7556536c3874736444646533547871445564566830376c7754645a4c303254765a6732456258436f7a624e4b72744231547454514555306a6b357869337876644372534343626d5a4c726c62536457586e7a4a746735643842564f566e797a6b58576b666152416141492b6e44436b4a4b4c6446717870524956732f2b5767484c644853425272304e4b58516371536a506e543138594c4c397256333266546131492f417a35584248626b382f734a4e4f32757a567a7a6d737a704f557358693153693072773037325a446d5a384d68365537416e4a5864537834385952704f616d6c556653464a682f5651685645696b49353679513235664d30576c3132567154614d615976715752524a6173554d4a6479324c66587a2f414156326232676c4b76616b413162395133315038793041716970746c6f47654e72614e2b754e756252695073456532616558593874444a717a394b4e6275434650626536525270635251384d6471646d423545765872794b5453395a2f562b4f33524f6a36506e666d36592b7a78337536576644514b382b74566e55385774667453797443344343646273704941422f636e2b7236464f46596752493079704245364a32636b7a73646869724d503670793936706c4a3046524f7a716479476171685a504d756a39696d424a2b38414f6849574568586f4c71364d584e4f706877646e342b357a6338412b49615a362b61576151626a32543642304a30477a6b30536c37396a696d2f4c77466530444565675631755171524330553555796563716a6a6f644253526f376d7330537179347a64476c4f626d355a7234564b574a704d666955624a6e4a4b4a694a6a456954352b6b32764e346a4f6e614d394e57744a715a6a2f73575738576750497562656534656977744b686b616147494954756f443441732b6d3457666f492b5036667142424c7062634f706e36476d71692b6d715a663667392b616e6c62675a4a51366a726c4c30706664504433672f6155372f414b595765796a3241717965485a386848497a586d5539304f75577a50534d564e566e644c4d314f7173354d773731537057772b5758416c6248424d785967736b2f61393633642f776b5071376950573045707453466837694a4e736b5a6c57645535746b6e3332537a4e67306d31437234394f7750685877426454416168494a4b46492f6f50325073466f7078696b6c4b6d6e2b4b566e334f625336594c62443547594a58637a3561644b467961456b78796b4f54424c373653363461524f654a694a6a456959526365714a56656650585955334c622b3643723651304d364655696375772b44545a5246562f32486143352b4a4b6c79715841483863514a70704751327a31356136674539664576703579756755793331324669784b54644736326367487250396a6b7a6f446a4f702f31754e414f4f546e7a68586e38767546764a6650455974456b4d6b324e6b4748323765543438716c7a4c54787441587070393745736e63656c44326c36654277674c454364413067596644574b523379494e7265563675356e746e5247556761675450637a4f56782b61766830335a3355787a4b6f34786c6e386c637862366e396d6f44357030736335504545363852456449774a6a6b656b587144354a6944745966682f6b6d75454c6c793665676d456b3457506f45327256307443486753395a6f4f5a486d365461467350355a776d4c6e796e4733336845337248436259454b6f385931707045614477732b36343135326650636d546e6c4b63796d474f57314631474b4b3275524d5352353254714f56683241356b2b777a346a6b356a7867565270362f6b6b79716531357273376b5049726a505a504c5643452f5a4e4f6e52657a2f414e465a32646e4274735335596d50414856584e5232714d7a36556975746a597775314548745451484d7a4872704c4a6737796d76617a4d3748497a306d794c2b6565343959352b6e39556e4f536c4c3150436b564e2f71635434534b7a6a386f7a4575794a5430364d6a6b6b76384179566d623173566348754532587a387a3275626a75376e75646f45596451616535735975414f725772526e5a627741696e7a437450776f7a536e3263764d3147632b2f327571334f733038363930387262306a6b75614f6f576b78432b697462555063776d2b796e2f5733746f7031335349526e612b67304e665062454e7964385554694a70546e3475314a7975793164364b6761726d566e6c48557a394733726e45334b6c3969704f6945353642396b2b5456675a5134376369375835524156576a4e56316a614c33414c715069664a6478383474645539596a49704c65665447445555315247323275797667507137426f6c715659534f314f4851797a755778452b7241435259716e6a434c533550394e487a593657505a3962723655714331494f61626f4a377558417633304939643858306c3865386c3867337654504c39544f364f46732b4e4b79504e736937516a38653153736a6f48797149354c50675737506c6c6f596f67716a6b5848473045787974396e5735616c5a7477692b3061394c5248654770527164337474464231446c615a333058584964526e58416d72487a677058565a4f424a682b496d3965673649486454786a58544f4854685750495956655237745a36584b42553874464543657a70676d71436d72536f59506b6d706130436d46663647646c416b4a6578706644496258456f4353325638413972324c327751354e62566c70556146476c4a7a534a644638786c4457656c486e73717a323574532b664351696b4a6a2f564563366d6c387445774b624b2b4169664e334e33365a615035444b525851334f586276735a7a764c744c3632744a53364b483767477a3373756f3641566748467a522b77784a502f41446662703543446552335a3176467870626e52707a57382b4e4d70384250505a556e74576e70796b77565553766c7a366d4e536e6e4f6b326b43477a327a753547454830546e4a59706e586e754c54634a742f66536c6e6c3546314c4b704f78386e636638734575616b6247636d46594561676e724e7a6e553042464b37673933327957694e637854446e317252374b676979685933704d6959756637776c437966334d54784c524b3853622b7569736b4169645430714359363164724f6173447339755454542f484c74477559693039556c7148516b6e6377503232656332316730534a44662b656869704537506c58565a715a706e48314d3772732f515a6f4c6c576864436c4d66565174634e516d49676c744d337a664c664150452b3970762f414b4269646b7a36632b464d383169376f3656397a70714e56363530437577496337374c614a48706c4b346d475537426d574c4a6d2f38414d725237542f51594655514961615962305a3979626b614a7057464369515865736a34364a6335726d4653616848326f4b6d7458544c6875486a6d4c2f6f4a4e6d6f4649354b324e566c4a664c57696a4d7a562f466534445574316973384c53534b3839576c37474c506c7774393767714233654c6b542f4145422b4974474c2b56737431567056745456555a564d7467716b746a5345394d796c776d6c544b6b64714b3430646d36366c716d4f51645037596b5443535a67664536334f64664c39394f41594b566b474662657a716b586d2b505a6a503561586936506177645269334e2b714c523076636276633445526764797058667878366f544a7579326b753537536d71536a5934467a352b4c7932376f2f594c6c4c4c4266785059612b756f5071774f6b776b4941396a662f414d6e33425a2f68393636364662382f52314765737a724e4b4e4a327961682b2f77416577506139386c566e464f36754e4f6f6864504a334e4f656c69353275544f5a68356e746e2b6248384d2f306b6456505662693872306e3951686a6e32325264385a38344d504639476b4f6f71524a457950486e6a6e737a644a3933785866484d796d576e336a5a7368536c7673563255656173377230382f2b522f4c7530306e712b533231625764564364586b577736364d71506d72644f65785a783359484c69466139594752732b774d6b536c484a37503841562f6e38583965397578474936695258356d51744f6a506a31576b6a345577593855375455596e73644c376944344b77554d67735a63706f567157744c54635341636f757a2f315763353439514652345662732b4b723266482f472f4b4b39704f76324d4e334d6773716b766b54436e327753544a7336356676576b6d696f6948345a766335792b43785a6e5053635430454b5234503565376c71673852386b4b706135365a346e2b50307265336c4b325766493253644a652f33455768384331694a694a6e2b752b7a35506a766d4d3976312f516630705037576e724e676e2b436e34705a506a315a426a3576704e672b505770364758343861394848477245314b644a45784338577a736c6f756b553136334f4577704c324e396a503638545870507674535a2f454f6e2b7635664c6c5a394246354c6b4c63633163555a64425857336f436e553256356e7830456a327364637375706e6231797855437763623579416e6338524d3942793139612f77416b4d79397a34335752687a4b445159334843784f616d5756707a35366779314c4947786c4b55374535725658776d6b37774b6c79584257483964464b64306349486d752f4e6a2b36354a34684e58344e364e6165523564745238717846317a5536562b4a34766f787431732b594d737a483536747a363074534741585453464e6c466b526a4f64456450626f2b7a5a3432486e413876386e386f3835387076332f41436257743374693367443877364e3977796459706935355a5532584e3539564c7149307151734f6f446e787a7049792f77414337367857496d745a7949663336435573435a674e3453566343713836574d4c332f542f616670636e4c68437635422b7559642b4c32414a6b5a4566452f7742547a655833442b686a6571564d536d797034593846707875654c474c6f397771492b702f5a4d634b3839596b5843357a3374567a682f723963734d474d5737344b5970357547535241614763346a6b7857716c6d553332744c76584e5553313855412f4b58532b55682b4d426e534665764c6272496238523935427641317475564d617a665039384748474b495a47726b665859763579347568774d42706673766e4d505a2b67396e395477724868416454612b39486f6450376c585754663841535439703556674852427a765a4d79744a44336e474378672f7058734271654f426f4743684b4e7463446372302b396376547a5a394c504b6653487a484b6f6a723953664c38786a66496a64543344384d7a57647a666b3870687935574a356f61414d715958565748377a51436c664d6f452b332b734c557446743066434b67312f51667a484e563546752b475634666e33693369664b67663548346e70356f63766d664549412f4e783653552f5330676e742b4a6e4a3571546d5948744a70674a63485466453469655863495a3470354a50343542784b716d63546575795a64507964366377624848516c79503841694747356e737a334e3731565266584d71546135587a47535369597a615967546e66384154503134305a4d4835765372314f6d792f49494b647a786a7450692b7245712f786e4a575153366135655139344d5031474a59356f66744a2f4d66374d5541585452616b66464132442f466a384e664a6657337a72304c6c3139724c78306559657055486a4b50434e786465643548626d5a2f4761723936586e2b6657512f58585a4d5457395453353833776f6773543769476d707178574c59376f4874346e316938416b7a777849383656735359303565546b7975526c77654e35683065436e4244526c52324537514766557a2b2b36586c66443535497352396861422f48354d7a4d7a786b56783668666d76357a3650337a2b5159665a664a30446a3176373975615243474d797070776a33644851676e43596f702b4a71584f39434d76544e4d7a51616c70704e5039586a536933436538615038416d5038416648394e39503071326255656f64666a336d5450486a6c73384a386a6970763061396d7142675335574a4d35494e38676376572f3866345a316b714e5569557743494b6736747574665a62377546655565517631443873386738323874386a38793878324e445432726d30576e755573693131444e73757134637a712f736443466646726c564345362f69562f7744626c477071774c306178456249675679394d666255736d7349584d5a30624f4251366a70492b44363151764b367a706b756a2f34534f6c316f46397849435a4d2b553237425a4345735a397448586a59745a4a664e395a52726377334a47707051697a67575276466a502b422f66544f596c682b7661732f367a2b486238587151583552596e6b2b657043356f54654842634d6e594b414d77464f5a535370656c394f7735575565357950692f646f646d635843555a6e546a32764d4a4e6f5861384c366b66486e7a506c462b664575544f6f7a615764636a67396d61494c483935383949644144414f4d37304f4a2b516a495a6e4d524e514a6d2b4e55667a5749544c326179657168417a706746467a796f4e68456c4443364d595356634871752f42772f6543543976545677375737747632436e5554675135343254785246637844584f636d70616e5648503959656f347876794f344b574c36786e542f79447047414b2b4a7148352f7439673270576b6b463741595656437068346d6c6c585a65773839767773343159763636567242533576765a302b73674e482b6f2f674174412f434774765750543976384169325650464672617a4a6631576f58523374647451694e792f6843555771575a67336f476e2f4e68722b546e4178767a50706f6e644f645a315061773368525044797356476d666e42353150786531704a714258577339344f4e6e74574e504136656e5938386a616230312f446e38676656646550583450344f726b4648696d70353146354a7462575667343133693661506972314d7a557430456f6e61786a70344651746438376161665a3850582b7a763841576474536c59327a66312f55576a34622f623239632f4c797935636a795430647a2f767755614e476c722b625a50384143705a4a557954546f7132782b7a7a322f77435877304d373753496a556a766241706342524f74534f7332346a5262797a4672786649393341726646707677397a587a4757544b552f4d753768465a4e396d4f7453314e6f6c4a337a4d4575636e2b62744c5464387a51615237524e59726d49412b496d4c373867434e542b39715159615567746a6277334d35373765305064386247704c32635949703538764342706b487549626a356244306c5a397765307062325755797164337568564b45544a31504a712f7345674f4f47575870385237482b3534416b50694e632f4b567430725057422b34626e6b74493864315a72556c517235465533396648394f687a6b5273596c79654d5976336f3676392b3332714876444c336e634f6a486a63377170585656746f73574b51567772574e5141325449466a484d50364e533173482f6878634d41702f3138487675534766377a313443585947727363306c71536c682f584f565644386a7441577251747931353872324174763166686c6f2b5147635151395a422f7741697a682f315359694a34546d4261303276766e476e747a627a534d3939636c714b47323131563256707062562f4d5a68634e31777835416c78724f67597170396e794b3969503141323639456a487a6275316e6172764847374f566c5846506b324d6a37646f526c42396a50797550636c745761413656544732636e71465073735076544a687154546e626c7874345a46592b6f486e4867474a7436506a5753546e3655727553314551496f7869626c555231746b526d7a5a356a59564f78506f4f6c463666727a682b327051427a752b61396334346a56727a54792f7954577a48784d3868593046716952543751742b47615774673766594648335057663841716f57587a6348685448314d774170496c4d704e3678457a78464e544a4d5038763848427a764f4f53315a5638364d7445725a42373841416f584e562b754d2b4e6e2b664435376d6531702f7259644c6678712f477a53384b39493650796c3837386448566d56755a5850543378447947715a4f5a6149364a4856354276596c6b774d3073506c6d62385365703539646e447246337942372b703564532b363375346a6f4a4435662b51666d58714a354635487a623366355538796f726453343772547a6d6678785478423350664f34315272546e70575964596a726b68655a4c2b63512b2b43744972304433303939634d2f30734e692f4531597a394c625a4f4564727452724e65624b36723236634e446f6f786f6c587979726553376a506250384147366964552f75434241316d6b323755774e365052627957507a4974667a4c7958795a656e7255633164624f3864794c696e6a54707834575374376565525561633557616a6c7a6b522f4f7472666d734435706a4b6c79547a74474d7848634e67617866355a557932366b6b52483942363645356d706f3555636347583279544f6c38677148335a362b786c4b4648472b314171644d77436d4832706a727772486b4f4f2f7743546e354e414237506a66694f774668756e68417a696d5935665963764e585a6c6330566d73413043517a512b4c7448665971527366556b4a63515163364e50547a786e674f6461637a7a50797a565963476473626d6b542f72314a5843327877386375667047326a716d436b6a635876514a4750525359437333652f6868747952486a6b576c3433364865566b615035696d6278766a4d39566778766d726f6339443766727a7a7452315443592b6b782f353674592f483950765738486e45664e4533384f416b2b783652614f526b4b592f5374722b4a4c645a526a78485730744d4d74475a79535053582f6b6d6965567a715675497a4e48464e6e3934386f55564d353435794b55336352475a533253304f424b6d573130473348614c313075724277774d3036366c7137524d5669557263536c47305a556a78667841537a37654a6d3078457a6d4a4564385755762f414d69786d4c54305a5556673670336159686f6e6755786154736f63342b63584f4331734d2f684871557a2f41436d6b78617235565874325a46394d3544447661456c30386771495763354d6a4d69552b563930544e54762b3374337946594574432f3236647a7673413772582f475579564e78486f4a2f74452f6e66346434504a4a2b4c2f6e425151624d4f737279487836323445424e76542b51524d355972492f6e58636e6e387135693254304f5562336b3071666a6a6964516f4358796530614d7a6e556765706948797a787675587376733232766e78312b5233513868783671315a62333673536b797873306d665333703131526b4b75394e4d61546a34367863394e4c68723468794a396476557245387831394348366d78483379493838646a5a6c72514d6a3349794c753970334965546f546e6c4e6f4a5863757448472b79694e5278416b4939464a3730724e5979504e522b6648355a357537487a304e394b4e77722f43736f3753386d3869786442705a336b4d6c584d73353849787271664e735273716e533972633533774e4d77553768424a79615075304e5048506274514f546f67396c6171506541746f61442b326a544c503753744a692f656442536b566a6e7a705952723650654638786d59482b6a347272446a334b454e44764b68426a78536871336b316453312f584b49523933626759356e5531663472373047462f7638416d575944376e41346638334f577234382f69377837584b56567164354f71546e484b3448414c6f6c4f6c6245736331532f774445373263347234503059677854516c386a423779703934494d306e616c625434625468616861714f304c4e33736f366e3267537a39394649482f774377334b4b767866514c555058527a6e48476862324b36326d4d302f6f4a3544705966375856386646526a37536c57532b6435784c674a2f4f6c542f5667376762737769756550563059486155334c482f444e5770624664524f6232317971595372714f7a6b767657483170456276595842642b2f5a584662636641477579565757537044574f6a73536948374543744567587150714c5243544a43685a66434a542f44507a72657a43687a682f2b3166763571526174656b5a6b6452503751486a45336b333531656945656c546973793478386731656f753265354656457938553676747856383047454f6f4136566e7844645532645838614e582b557a76734c352f615a78703334346a312f6142376649505148302b395166452f4a5046665536584d386d386338793857356b2b5754644557344f6e6d3665622f4a304c35566f463978656f4f356e314d41474b43534d50465a6c7a4238553575507a4e30316d5a72327169696677742f743566682f2b43336b2f71623667656a6e6a4c2f4a764a646e744b39507a6e7a43716a79625738633857704e7a2b2b4b654d636b6f35496e4a656157414658526a7536694b674b7673532f366237367574713673566931732f6c47314748366261506b48724f7a7a7253734d4938705156507a59794c57352f49365775536c5a337a717758727a6451614b6c71535572527035314b57702b43706a336c6e4e6f725848634a54356c36612b426571353737664e3843487976776a7872787759395047743458386273573656477068425a666c335a703537422b6e486f416a76794b5330514e71766d72304a766645586d754d547a6a792b3648692f692f717a2b526e72542b4f486f785a716233717a364e2b644a52342f424c356e36676552364f3336664d3771622f414b6965476552797a776e6e65492b4c792b534f79734e77554e6b664c526c535441455837545464335a6d744b33763262666c6a714f6765663641666a372b4b324c366c65703335533159336c2f71547032654f2b63322b4c62457450482b6d384f62674c4c577a504337545a77395a6c374e62514a3936366b48704b4e77676d6830626e446a7676715457756e7931486d4e2f4a76316e2f74352f6b42366c6573507144692b412b7058706a6e4376457950524c303539504d6e426b67387174357935486c766b586e6537327472525937576e3862356e726d57423839686b34665a316f4e39445372725572574a6d74764561512b657a656c2f6c6d39346667666a6c3666656f65446f3252426756592f6b32346a797279377a48793733474b556550357548434172466c354a6e686d5879756e6e6166712f4a6230434b6e537536497476734c553833394676577238514c5a3948386b2f774157624672386f77382b444b6e395676357244366e5272692b354e76346c55446b46487066394778664f75615147656253424b4e79576443746255314f464e582b5752745a2b49506e586a487133366e352f3439656a336f6f6e7850642f494354302f7744434e6853764a496649735452313844525a70614e65784235486b71736a783954556a797934457742526d706d596b6d765866555a5a36745a725362327675326a3277353370642f38414d763655552b4a342f774445383869384d31737a6238717379634b5548366d397034454d456d33393670696562456f4671546f6378726d4c5a2f486e3736755a7a6a596e7a4c576d30356b57423633656b4d7635442f6a6635523659433642576c712b4f64305046312b58654a6430504163377a654361466d5466666737583053716c6276663841785676375231534c474a582f414d41376a365674377655693438532f723734482f64512f446e797a66394f664e6652716c352b715741335077764c7646505275447a447833796a467949766748513844386c687961455330636e484a2b77755546476d4d7745422b673477503161543750716359746a62356a62372b31332f6276383239472f50582f6c6a2b616e6f3845482f6a32584c643656656e6671546d6173392b78357675376479462b6f4e324d74335358426d666559346b4e364c6e306d6d6a3631645531695036793139614c52377653743878314c2f4a2f774476535a2f347056332b486570336753504c3950793746386e5a6c34635437484a53367650716b7a4b4c357139566275346f304a7536615770357043427041314a2b66357777302f5a3761733572626750465635333556523531356a353535634750347667393951504964626174675458524a6c59452b6e734671746d7a786558474469712b304a437a696936314d62654a36706c4850732b6e5834613437416a55376161474b42504b6d5130636d4f3930415030587069696a6e4f722f414a68443966477957466377384243654a6d442f41434f6559713076714e7750776b2f4b76532f435831683250506454772f56383068337654712f777654384e7a4e756a7839396b3268524c7178425a7046473555596f7038646c39797563367a3639507659622b2b3852727136566457754b3232424c382b2f79343166793939546647504c4b50546e46394e302b493556574c6e594539386d306d4c4e30674a715a576b532b545754387358523154526e397764766164487561372b7030644f4e4b746f3362686f7a4c62504d73336d73696e4a765071463161794365646a522b635a7134653835704f2b4e4f7077542f53546e2b417945792b59306e7237767a2b77396d3334423237506a5834322b6d48682b647a39496d384467767647314d69485a4d307556516e715248726e63756e4b635a374f457a6b336555756e6f5459503641462b5a725245327649365a2b6e48714c353037795330626158492f6b38796a61636f684c4d76435859357364646d5a3138467a614e367a334571784a39626567387a54634c367953433744777457497245357a6b626c37487066716555654f635a627653393766415862664b3532535879352b64386d48476c4d65787964552b68517a484c504b5a775479736b724e4c796d70616c6645353734696576515646755a337035365a4f78504b2f4849764835725a543134627650764c6c71386a386763575835446f52364d666957676d7070525755564f4b33733063366d396a6d2b6e4b4355306a396130524d7a694234502f414f362f366f656b2f717a2b6650727636682b6a6b6e63377866533059632f59724d476a543548354e4248464635543541754938394a79706f31726837773345747277446875435a76577a4c396632616c6f30597261527a754d477137614a615651396a436f4b582b78786777362b70362f7073473079595038685055746a4650413168416b6a4179466951365137775048744c6232555a656248646f614f6d785575666d7951396f58524d3541746d514335707a5a506f43736e64466e365a7a333570703531704837427a74614a723878733136316669463674656732506b6556655759536b346d74673564644f7a6e5551587a51503046506f564a70782f4733693635716f35666b5354792b7a4865482f41425233354b5531613335596a674e59725076584e466f6a6478555a316d72704c374a4944424666426e715571583266596f52376c744a377742716d41772f312f38482b7035505037436165422b4e2b522b6f666e4869586966696942506274386d7a2b6f30657535446e52555a6a714b7a4e73376e4f576d4f53564767626b724876797067563333482f6730307a4562356b653476386250463450494b2f444850396176495056366e79504e6a52485874655061666a326a6d62574c7370473964486a6d36796e684a354c6d32475847735433324a483751506c714f366e79377a6a667937523056313650487646583430535834327432797a6a777a6471586f787846335170795863433956315472714f5a30696146572f5a476653346c7a76637171614d4a63512f774135766a5873726c586a637479364d2b7a4b526941374a76377072784832537a62535231377544526d70314e625770466b687470367a345448356b67347942584f785042732f4d30354a633744742f77436b4f486d57526c6e69397943314273567a59636433756c58332b4a696f43735a41434d59316b6873376a706e2f414b4451723838503762486f722b614f546b6c724b5a34543675445270655065472b6f586a535976654633644b674a4a664b4d52695679614d6c6b734b59756b353456517563745645337667664f47326c7257706a6a7571504574362b656848714c36472b66625869572f6838665834376f616d55767954434a685a336634375347464f6e4458503041714b7632336b42455876464d59385430615a6d4a5836564c5674575a46752f6865696a4a3953396246423363484f3338442b516b2f364b3562655334767461783859302f355433444b6567536a41565047744e6e752b506847503956314f626a6765672f3841746b2b692f664a667a5452357a71396f4f663055394f7a6656542f4b64316558614e4e73634d47776a54704b716d4f7057645230716c544a6f346c75553543315370574856636d7661593035722b4d657276497552454534364449736a2f735043544a656e4e6438374c48653578706f6e2f524d4a58386b35765576615850315334356a726543467138375a627744547a627972446e6e2b312f6872324e68302f4a506e73376d50486b35722b63735a6772466a734d5678736f6e56386b3770472f795855736d362b6c505252573379464a2b4e2b445a336e6d706f35506c594c62346f2f756832764f796746362f4a474b33306870356c4633506a30796c37524d53615065777a4559462b307770496c6430744f497a41716638414a4c506c386476386b386d66343962566d6547654b614e754e6c436d2b5a4f546d34634f6c72356e6a6d664f5542747a31316c6c6d675a7153443345357a3657544f5658384d306a4d667864522f4e4339542f5554663841567a3152382b3955504b6456746d33357435426675324d51307262656e705733667541463957665a77424d356645496c384d784173763841367233443774615257744b783849326a39432f7a4a70394f50422f4e505376314d385631504b505450314765724d387538673857386e62342f77436f76384b71775655343875785a426f7831544d6e6a6a4e55396d635a382b45505966507347372b73723655576e6457334e5555492f5a39507348797364587754377a76454b5873717a5939756d76766c574e564a702f64356c325754456638685148317850376b36526d4434665a384e6e656671712b4a6d4f50624571383039637462794c4b317644556c5353396a4d6b676573357867492b775279735838476a616c59547256516c796a6f596f5066384a63537671715845794970694e324f456a5873714a585a345a33732f5470555866644d4134674645504e4433674d56435a307068565154673730564348443154352b676f443742332f5038416237435255536436766c467679313957764c724b6f336357324c354a7054534c31727a2f4149785a78623558643933413659676f476935522b372b71642f4b47326a4b5830306c456838794d386d505a3163733753466a362f6f45783144524d4745742b6b75634457504f64396763536c6e662f414b45303755444175712b375939434d744b6673477271706e574e684664684f6b6e6d366864436c4d55636132534c4a50444a633378482f414e5a346a5356654956566650316a506a516a7241706d30474736615757636d4d503841584e4249636c63796a3269373966473569674575463866436570676a625a627741476e5465576f427a452f6a6d636e3578774c2b725451527663345a315642512f6953494873344856646f61592b77444c374165383766752f58694d686c645742444946566645764d6e697170756772534936353551446f4255494238734b662b445630506c415454337064352f3139424d665472776e5139545050664466412f464d68646d35355a356c343934706d495171722b5054587633777a726f37584c5061517a2f5954374f4d344975414c4f6e396633664b4235576e6246706d342f6f642b41637966482f48505476306838575468614f4436532b482b46654a7a545a45354477743348782f47614e696d6e5269732b50786e4a5a665a744c2b795838555454644532564a787843485046747a544e706a744336595436754c4a564c5a6b766a64497645306f4d724f70386b69577261516f2f62536d2b5032707a5267547466634768394f5a4a2f436e396a6c5468493077474750354e6f53553655566772466942304c494479594f763864736e354c7561415035796a595537573233536a51716f42483466696d507038625537347a44564c315138677861504d504a4b664c7341732f4c3862384c38717552317245555236716f315a6234355a5666596e4e31484d4e6c7a422b77516d4365723654616d4731356156696473346e47523453767961387068382f774479423954764c5048636d4850794b2f4d64546d504a6d6a4547667a4d7a614b704a327849564f5875593470352b394e615038476748472f737a44336574705678703169776c66706e2b57337176344537465258715038723863773862537948654b6272567a6e526b6132567154315a584e626966764e797a5a637878514a617166397053596764522b784b2b6e58486e493353394a66376b4f5a68463468752b513457766965522b424d306372456d516c4f313454354e347066334e6e6e7a2f4c356c3152367479736d484e5379446c786169462f573730774a5952396778746f5a3352453770734e7838762b346a36444f44796279445539534d5479505a3870383531386679746a66482f4e7358795479373046727978444f385635663542346571584c37503776747a7452514775484d644d5a3652786e37494d76635834524665782f55636c2f55334d2f46376139544e487954776e7a7255395076544879337965712f4f38457a386a7962314b387838527859564335506565524e475a4735396e54644838514745374643344b516177316a57665458336b56784e64313666396f316d3047353857786f51594772657278706d6c517a4a7573396957337a31664842466f336853373459624f46484454517272696d59414b63422f6f464f56654974614f7641624a353371722b484e352b4f533750347365616c6f353369713833796137463956375a4c2f50664f56447853764c4c593638666b324f74726d66636f7a5a42556f7a674a5044584f343642704e646150336c6639505162472b706e397934726f76455a665358307473384850776e305331765275625330664b5a4b4e5a6638414a7866742b7a474d474c796c326c7a32357636653351714a71456e77752f4a514c787058512f4662647574754773506c6e356e2f414a422b5655353236767a4258694663586a7250457332727848466b7756737744475733575a72746b39764e566c47704b4c6674312b2b672f682f785a30416d4f573861576e474b396f6131726b383138316f3339435366794479456335476a753766742f64637546776570586473554e6e64784d63343676776c7a6e666945514f637836532b6d493635725467475053537667566451327332502f414e56562f4a4a324b37624e316f7172534b54354f66484c6f62796e68683876564534774e33442b4f34566f58563337617232492b33377531464c526e2f4b4b564c6354356c35366f5a77466b3749654d4a70454b577456375059437554744a514972544d73694a3870337234745938613052755a2b336b37376b47596c626758523750334f6f584c34617659446639512b2f362f4d2f345072366b6648734947494e4b586d5041434e6945336462556443652f617074366569732b4a6e4a68546877586449576a376d67626563353748752f50374431662f7742676e783977666a723670377a4c6d414f6a35782f41716752574272736876775a55523056517a4f37384d5a62673839723343526c39443368384564464146352f747338395948705a774536632b6d716d634230696c763036686d5a6735657043475374325471473378367a4f6a6f756c58564c6f5a4b535735594b6e436c31786f636e6f645478546a76442f6c62503376304a6f316c463439716378395a576664314458396b626f4155306d6d626b6f3933326b6a5451766e4959326c6653364d6e4d6439644d6a77676633772f7741632f4f76527238315055337a54553865706e3844395964703231346435636f51356d2b5561474e6e3566664b654d56486f556a6c61632b316f5738644d4845644e5a6b61774c702b356e712b7933726254725834716a6b724f6b412b414c6170616b645750546c5778727672304246645564442b56714c695a695a64447736512b5150595930395076413976396459654632594a2b742f366666656e6e58554c59327a6b66456e56786a457151494a37596f796f3474774f4363796d42727668637a3555352f7450574172504d686477777357543232546e7a3953566f696d6663787447635466716d754d706243637775436b324b45772f314f633044502b737762717464384538514d66494641775353696261615a32386531685a7a7a6b6d6e59626f614a584d4241684d586666417234525438667645415a526679624371524e6f746a4a6279556736506e634c5a7566646f522b356d493552523138342b3566372f303953316968617a6a6d4b744f597a554555704343715a616b2f644a36716e4e6f6f345a53787a6f61587a644976723944366246725a316a6d4e2f66516d4434564f4357626c4c72587a722f514d4d2f357862464b6b4959656b516b7962334c4d4b516b4e4d684c6c6c627a374a50707a574566666d352b2b502f6244424a684a3953312b3466563179716e5774594d527a3745794f56385a303372662f6f37617a677a54714a792f72756c4835474d3666794d55314d2f74637757356a303866324666556277474c7748314438513176563947563668643951736a512f77446d36387873586e35586b4746615655654c7159326d375555396179737157566f6f4d444d506372716e55506a4a334a37585763316d4b387634683743764869774d54417338755133373064515658386e566e74506364595236456963374e6c58372b4f734d365a32646b6d6d46694678742b4c3452346e326564624e7262664163445038413552523659654d6150344f656e486e2f414a6f493466715a6d2b714d745869486854736844764c726f645a4e504e6653335838573179386b3838637477383437394f5a536e33706b71424d364f72324f302b397445646e413851774231656673794b74305a56796e526e484e2b67376b6f7a793548597355583339556b702b73474e78714e783074544d384f443748465172302b5061387845307a68305074464e4a524b726e796154586a77434266516f6e43596a2b304a352f75583866563859784b754535667448333839727477365838556e474a3565546c6b796567416966447868394e48376d6c5367584e7339764a593364365442392f764f647a754e4d464557666238734235545536787436724a317470376e7979746f2f614e49672b7a534d6945794f61787648392b6234513737784969352b7659732f5973787a387744733639716a636864685a59396f7550716f526d684c76416a6b5a78706a3966704551392f5a4f3936662b4f664548754834693530444b4b774831694230306366316a424b69797058464c5158795330562f37556879646e4a31724c765639482f67424542397958664b42546a6b697358307573624d6c632b6d7431364f5736416663514c6970426e4c4646516b57555745384363617a355972724f4f3538522f316e2b30395943646a7a59584775544e4e48496c4a724e505957415662727661523176722f4147502b746a4339704478784d2f78497973483347436e654f736e396f443145385a797658327a3030386e303833716650594549776c376c6e4a7648644c7961445263764c43713751306b385a6e4169716747495a3335666842797547357749372f574874565a696b576a705165746d492f493861686464364b386e513164536949587a35703049716a314b585465517a31464f773759636c65506b3654795a314c7674364f4f54614678694e496a356e4a352f596144666c3536652b5565732f707a752b4d65506551522b4e38376976307064536d3650753762632b4b303976787a6d626e454d3653347a342b72555453636c546f4773725238715a413330385574756e6a78486a34395650542f797230593830386a394b765551766c335048396d6e4832732f686b55667a395850325734326e38444e496c45596a336863452b716a5736662f414669716e6e6f316d4c52757033437341537058374b7037346c352f786e4e514a4e42682b386c394e2f55664d664a534a66754234646e502f497849772f594d446d7664793445733859336a55774d36596c4656514d6c4d69566b62574336615a707178702b7464376d54392b622f73735067714e304866396e4f674b575a3272317448474a46676338646b767a4975646445764d6570794a74467638684b2b687976713965713871307537744353316c5578557158416f69415243676c657a2b71437639543762376d785a61472f5370304c526b737a365a304c62476f6e635255514149444b7a36624335554e5a674c6a4e546b6b416e376874793966743637683662662f6b2b7564497a432f4b5079536e4b5456456475446c35576b716d6958733934396e56725a716b52353777324d31736273384f462f3741516b44392f754d614a2b4c3279657848682b6f722f77442b554c656c5632483537364365734d6975615746355a343373654a39324544517a4e6a5a6d7479624c3541314d5768715575586d324a6c5567487065615573736370767848625262324f305246712b487236446950364a6573653136512b5462506b506a6c4632652b6a78545877537931576772504f5852557548755a7566494953374542334c5964444b4a2f6562763867416a4368446569315974474a3644574f74646d71786d6f6236467675707661446d4a564e384c666a54796f4159706655722f5562684c6e4a766233346739764137384b422f725773346e624932692f457630362f77444e504f3739546b7237693853776e362b52576c476355736d697961576d63716931595779334f6443686966684f4e2f75427a71582f41424237365170713278475078447254346834394a4c4c532f77417654664a5979357447744e6e6f6d326163574b5a556a6f4a702f7743466e4b6a794452456d5a41386c6e484c41536d4b6d54676852534c755963656656667a4c4a383038323874734b71712b657a7948515575725264316c545a73366d665064653954394146344173736d685977572b382b664b686b7872543743543056704d5247497a45436b6635483768685a5662386a4335574e444a3757634664536c7979416a6e7563786646446c6c5150582f766a54573451464d776966376d617a453447624c32554c6e34364b35663646687a394433614662364d3478343269634a35306d54782b4e6a6543596777414178364d365248763954737434427246513633374c4c6659337130505a5839775a675431372b6d74644231334c597965636d7a7a6a787a75685430414e49386178796c72747432383263344350743977364d4e334b754e4c6a53346f4a4f694a396b615169495153547036346b305561514366775467432f77444e5873614166302f672b7671526d3655505a79554f4e434f516836616b2b336e667172557577375951456d456c4a4d6a54386e77744a34384467483069506e5a315a37567039657541362f3841345a666e334b7678475030522f4937794f6a477963646d504c36612b6f36733349613342564d4d465565583545716e36727170502f5434366d324e6365683145616f302f476d696b6165625730654f366e2f634f31506f2f3633654d424c6c65514c3276477465494d677a33764945756d3034755076526b763062516c33714b4f2f61366e59547a73387678746a2f6c534945704837464e2f4c616b3859385274346e386e2f524a6d45766538773250447648732f7743466566673250386c6d38656d33702b466e782b516b6776494e535970624c46304d6744516e655538365845312f666a555037793931624f49476858355466337676537a30646d307647767877524e36712b73465331565a6e6b5138565636666544545754526d6159364c52726f324e54733666674a71724b43634749507771546c30416e6d2b6e374a6133472f4c55655672314a3954664f66576a7a6a61395776566a79573779487a6a794851593633657662383073316c5a56614153717962574b644444306e512f4570436c392b4c332f72393936772b39324972473276593964347236786e526c4a726666514b5a376c337258527a6a595075537a307355353033656a3948364e476f45532f6b4d66662f6d58663059436d613971414975544b6d67364f634c6a666a63735937415562364848643968334b33324d3732705a6750764a6f2b317153416e416b434e5839576a4f7a31304270545a33365354726a556f463861766838555247496f4f797a5358786d5358653658756c2f6b45424c317673506c494137717a455066586d322f6c42436170756450585559564168452f7435507066556f2b333957566b6e5763596d5269307539744648447035315841473949664c3776614839527837506d4d61614b5a716a3049364e4b7139377670303957786a57732b4c6c43785852794b7158366350567a6a5a50316f6d39764142726a4e5a6d5039514964703138727155766b7379564b474d314179756c6e5749595534446e7a744779683945724a66684d2f77423963596e377a48394a3733764e71396d4135696f493453547961787459536a413173326d38784b564b78635a46544f6c7645725a6d3057546833322b7731553846507441472f77425576316a313467764c7068564838724c44706e7a2b4f70314a6a6b4b7930333365324f6b677472536e2f4b706c5561334b44326b66413451634d685941787435746f735449336b51745855704d785037776e72396e4661545271782f6b6b5a7a514b567a4b7032717a624c2f6c4a764f4e6546496e374a724f674d6c524e342f555336397a733772376d414637364f6f424d59735a6d524643545677754b46724a316a4b6e394e5832677075456745314e7057353378424f2f47764963495645717533536b2b36544c724c7170574537354e6543374e74796450506e31472f6154594d7151582f727142767639692f63536b712f6f4a6b326c423752306550376d78506f5549487950735861506a6e6648484a7170314d71664361525555614438314d4c6a616747756e4179656c6a2f7242522f5666683576714e3750777638417a67382b2f452f31547a66355455747539477649764c644477727a366459734a574c335776325a612f49567431564d67456c574f5a30683754396b31684f716c50764a4d374d6458537271316e48556579667762314477392b4c43322f485a3259732b68456e58794a2f766a64507a78713957484e4471726f374c79794f7a37466b2b6c33717339703837704a676f6b64585a4f6d767a356a7245774e735045664a6c516c6e43505a56387349415a787a49737a484f71726b2b53326b63366e347033527a4f586f634c6b706b366d665635785642414274356a61753335534c5478664d387a5456784c64534d4b6d7371544c4f6d61414a2b584c676c7070536a6e755745636939422b537a6e44722f414d46416f5148392b776869596d4f7359484a6a2b367a2f41472b682f4c4c303266366e656e4762446b2f6b4436634a646443444c38564648715a3473724e66656a7850647449526a645945646c564554452b39784a7a656a384e487771396e523750726537744e5a6e396e62374478442b5361572f6a354f68674f6a626c3661727259614936356163356e6a6c306d777644305555534b6c517a484652614e43486855522f706c4c44493357585675563673626263324f49312f5a764654716c4f614b64587075726e37704d696a7835727a4c7047585a6b54614477324965542f4a3737434a2f32485867464471417141616244436653305a64556973636e523561785647726e31556c4644395361444a304b4733387a7033724a69573145524831564b3531704a582b50514471674d743273677666626f774d6c55784a374c30675045796d3056614c62733278312f6a3556304f50515a504b66576d5a475579616a2b6155614f7a6868492b7852724f4776523055557079345978693533783543744b58696379386d756c7a7a637555616d527346796d7a714a495347394c6a414b56684976763537753157636b31614846444f6f6f6f374a625a5766454537614573517a34654e476d4d57473370554b4d6c5a7153702b496754376f78474d5934413144354c66414d2f55336d4b6f67462b6e733072726650694b5479344b50467339333059776c534c6f39446a43564b6d5368786f63524a46494e706b4850445a4b504d64654f4766795261494e72635668665a4c523252686d5079533057544f73666e7069376e304c3867716e456e72454a2b5376613469515938454b7a69764e3369522f6b4636562b552b6833714a643654655a612f68392b333437396b5435346c73654f6563356b325671795a7035707265735341677054503772657872346e334f43796d59326b36612b4b5869314e77704d38355772486e74784364624249665549796847756e51314e574f6a34753379563473725757623944426a57594f45464455596645683361506c473476503051394d4e5031553836384b3950562b572b4a2b6e74506e586c454747666b506e6c6a7235386e50666c5a5a5336666d304e6d6b734d4f666e2b5143612f687065475653744d6c4e4a4131326472525375366562614e72507a422f435831412f4472796276706a3668627668666d6a664b634539334338323849324c366f4e46434e706e6c577446516c376b323462756c4f4b2f5a4e553739696e374a5655726d635a5a36657247727a566e614e4456647a36364631573035476d762f414c375732625675596272715162514c4a4b4a574c35394735344a686c714a512b2f36394c617a67454934785630424e476c4576656c6d6e6258513277596b314b656b365855785662666a2f414e754e63615a7858387a4e4b665562305249424d35672b744970545159414d4a583830432f6474554e5437627079485962522f446164414b4b376b4f776f77795664745a79716771476d7651612f71307a714435663841457a423558733078524d5375326f346252516e55693278586e6550574e6432576f496872637868736c476a375163657471666a59592f4233346936665152786462533054477a7053727a36362b374d34636d6a47504834504a617245705a4d6c6655314444646c7537494e685274413164634b756e57635954582f7a6d7854686e5a2f46396e687a4d4a58793264364a6978556c562f4a2b4f636c6967587971425a794f754276772f77416b305675636c7a473256325638424973667a7433433668456b774d6b764a57687175583547634c6e75374f536232315a33767278644171714b4f575a7a65782b347242555174615a6b7974716438514a6e48355661565535507078612b46624775514d5a4a477465743171656358712f714d32614475694f66396c6f416e367a6b683849657839316236374c65414f6c6f7a75774b6456304179335337614b5a4f7a54317938696e7a633359305a4d395770375555574a697a6c7776346e73366f784c56366c7063503468706648396631416f6474584d597161575661444b705836387737434d6839353871316b36456c515630542f416d4f717171465078676d695a7766584435532b456d453238323052693379544e646f383255796871555552684d6d6a496b327676536475367a4c75734f694c4a556a4f38694f7966505178356b45342f4d35696b765754556c6262792b665552586c5650766355664e626a4d654256636b734a57667558436d517937506d64694f71596461792b76475a74477670783032555564636b466373646f47646237326a52496a51564e427230736e7168726963563269743553365a366c736c726c42506e3879797a534a5357527a664c71737146504a2f39784273372b4d646a7050497655324e554457367266414b4b59557a484e6e37576d4c5358426f5555564250396e59793561506f33742b30507566384179664e4f754258734131346176536e38552f314875452f416552467634322b6c693261446339327234316d675054723065676e76645050593268307a724b465753335a724372476778476e76547656316e45674370764c317533507967644649354a614d74666141716c6366363062394e4b47637a745231496c4e384d2f787a41534d336f696e2f414359435a2b4b6d5364696c673032426b4d78664632716831645a56726c494472304b516c666e417a496b646f4a61766d706f633930347a55517245354f645342423178652f376962456843644b72526c70544e50626f614b61595a5638757a3174734b7637464d624b4c333862372b55526c414e5149755362574737356d4d4e6b37676c53415a54307273304a677849474c51664e67363433643142616d32396c46597439786347614d383875396d574450737a4a6a3538796d69456270775661314d3672444a6b735253737371624746413861635041776f37442b54442f41474657353337773145396855436d6a34786b6f2b734c6e4144474f68383338764e71635251485a3950764b54456a525a472b6d72465a597453614848396f562f497a7045596453494958386f2f49644a42414e716e52776453324f646a6c5536425930326563634f673352535232614571766a767073416e664248516e6e524a6676374e374748484e4a3953686c717845384a36675646424f546d6e6579506c6330553832686e32565350304852775a6a474e794d2b694a4d7a396946676b584b4a6d4135582b6275665a4d566464545546344d4f505547397479755a3062425574665975624f5747685a703166424e584c73314c5362506e49345644307545646f4a614b6e637a2f384155467439764553374b3852516c32672b6a6c656d7a2b4c396d695a766853587873535766314b4f33796e6f4450326a3451535046474171306c4c644b667a4e502b7169614834666d2f526c3758702b37686c315062727532563061462f6b764c4c366554616373716b5378766473635954452f395947423844534b517a41675a39774f3954464d454d7a44593668536c2f4d56526f793071436835647266316e532b3036645939542f68774552704d584f414241772b374d4d76624e413665743463746b3533652f726b7975465337494a4b5434385749596c5469772b7a702b45666c3662352b664d2f706b6b436d6a7034554e655a796c4f544a56323537317337514c716f4a46506472624f6350386373794a49574c716c503841772b76534166707235696d2b75626a4d2b4d6a396f2b525332664e4a6b6431737575626b705452693653736d7568525138305464706f557a557a324c3046396963776a392f4843302b64442f414149506d5870616a38686c452b764f3872657672734b6c37436d6d715134564a4176714533684d5742513958306a4177435a3331334a49614f7541457a55337536503132687a762b4c677a3875754c523073634f3253396e79762b76544f3559724a7861674c456136505972324e354b3035366c49444c5a74334a34566158504964724f706f6f544d4d337a6846464774435879303569364a73714e37324b64416c6e50326677383763315138623148444149376f6a63732b727a4c2b5663374c517568756a5071467570536a53594f6c565979415265656c4a6357734b2b434244377673477732395772396775695863797a726f5671776831476f764e7a6a72674e6c4b47544e6c435050585175684e596c5455764c6c57786e43436866364a4b6578744d503642484f5a395a71786e375339394550653669657641666831645533444d34506d75487242624c562f733666502f59594955557a365a78454a6c2f316f64432f50616a5370704f502b5555354f6c7a4c697570304c702b396447756b6c444334462f36433971374145594f542f427a71316534507464734e645850334d2b766d6970695974714176396366493073596f447274682f774377704e6952354f365676576e4f5972574876476b4b414756555a3555616e36357056564248636d717435577565636d6270334a4576656d336a4a3838712f7273595447556b71655a6e6659616d416d67496c7136464b4b38526d69314f624a686f61716236693676634133386f7258394352385057332b33504e5976367743506a76386a43674363595445544d3467444d78746e374b4a31326261715a6e336e5a76366a70374f69356938734b5a4b7832754e51376f7053626c574f734f59556d50792f7346787667455670725a544f7a6d73356c74466274466839447454594550376e7a30706c566e4f6f377166477845624738357a34586e4d766c596d393651494d644437594b616a6d6c396b57766f6f73707172737048646c4c73744b4a546379616c575374376d55416334712f3256664b4c61657156512f2b72553755434b554d5656746162307161344c6f70376c6f6e796447686c5168673258456347665234325a4a5a54525136674b7045732b56303374593334652f354f6c664f33394157593679794d6752394a3857317166537a473673612b2f71615333364d39767570537966572b65504e324272573567462b344a696e6f486a6b745a554d463252785a302f55434d5652613179744b56696b6f2f5763384e53626b366337507a33474b7a58644339625a666941376a55373476305a43734d387879644e4e6b764d714b56636d6b6572725a4d3077664e3058353332335377746e5379515574736b4c68723738672f4d6e347954554354423137524e5a33523369784d325470553958664b4c61366b6e792f50364446383453363034316763736c7359583869344a636b704f4838306a43542b6e4a542f6d376c414a52724c55567a715a645655445857554c423031506379566a3559575a59754471324a4c4e425a53705230526d2b76522f77336f49375454304e4d6655562f632f3144754f6c4f6e48782f6a716432434b542f72665976626956487156774f6a7057335339324e2b334c416e793047655052504f49496166586255374d4478772b724f2b685072643676747a50494537444b7656337a706d64394f4b546d54707575386d66526f346b655a62714c2b484e37474a386b2f66654c704b6161626f473145396a665372576664316d6536736663525450316b78332f414d34317061426e50714e74694643303477366d6d704a766e70645350766f68615830775a774f5541703150423741544f384b674c436b66484d644e61545653794b2f744e57484670724c4a686d747a394c4858436a4c6b4b5a53394135533076597378363651735156457048533662516c6d5835437a73743348354b7268536d536667666563365447314b4c4a314658566b73306957786939496c4e614243372b532b3577666c537162396e457845786951644c79423545717931655038417939504f342f657056572b6d61793261704b72744763612f72725a375a534979452b4f73666c4c51705943317a686b436448794c5837446f33546b33325a39553333313747746146554d4c39374a56444d75754459617a37663858445251376f6d3550444d76687263737945512b73754d7271644462307159456e71584b6f57554f7731394c736966326b456f64304f3979366d73574e4e6e76512f35457057354e52304b37522f515257513645667947586168464d3073666242726f746d432f48623065644e366e574c36366647466c3930684c2b315338796d36774f7243786c4e49543641702b71562b324b3032774e4e4f57465231516f7575634f664d594b3974436a6a482f5377686941456d6c575a784c66593036626742316c62652f566c6f557961616d51654a784e44536d6454614753514a6a56643039616968706656504a6354312f4d5a436c4772324d7a2b714457756961785057416c5a695258513250316c7a5757446271557a737259375048394e65375668307032747a356b314f58504a596c44704b6d463749364853724c336d497a6d4a36546b5351345939774935587048507a473573453668452f6346624376484e54386d736a32726e75353943574d55644d3345366d536a6e7353745073727772486b4850636c6d655063306648707756343668386a6c4b2f6a71576f6b4c616e5137346b3166445357653071506d6d4468676b706b7261424d2b7450554c6861504964586644767a5a384f3848394b503841774844394d6f3872565234673749567a79415951784b6d797653444842484e6d7a6b346830317a5a33524e53573656476b6f2f75645a786641357030706d33472f4837446a4a366a336b3759583564317564547a615a7a544574664d4b5352757651636432335a6e645847396d61733537714576613333554950334d5350754773366571735969496b613365573656506a6e6564754464794276794f7647743274526c543539392b6270315a776154394b636b4378355666567146496f6331494859345a36656d303752457a304543324e4b50376e5a364a2b31325662526a6e7a784e306f487230614c66483350562f4a554a49632f38415575655a73584a6e442f784e39784e42536a47615a70326f4657616d64714e47767375376f727366342f546f364e533537475a744171716e6578697145546d2f4d714c5542334b4f796f2b48696e4a4d316e5341417a59516e583271446f5a675654737531563532377078714c5172634b4f68684f624e55326a4c306d6f4b687371796f492b396f536b34367665776d6d466971374b2b41614b546c6649397537572f514166486965534571386170712b2f7556445965676c684f3752386445737570306a3777534e4c7556707353564a6c7977656c567256653946537779716c507a564f5a696e446b3137716d3473656a624b5a534d4d476a33484d533468696e69703336704e66736f70626d6737312f4965694336614c4738716a305665326a4f72412f38414730374c44706a346b56766e6f656b633936314e596c4e6973663456334c6c6375673478474d593441614e7370684c327132544a536c466e5a7a5444484e4f6a4636457146356e4f4c597773396e4a4e6a507157376e506f6f5435614c5134703037722f414f704244736d655a315671566b59693831634e42716e35486f6f4571417a4e6253736b654a645a6f52382b3475796b5a3239377a3331675075535147514475646a6a6871706d6e54572b593746727a3273306456705a6c536b327839646a4d31757a4c74597a576a346f4a513978335538475a374630653467575a312f364530365774553354544b597757515a325472722b6838624c3763703161304a42456a724a57314b34736244555972354f445a4657663045596f504e6f616b7037374a655239504c674a6b504b7258495857366749632f6c4443707a316870646a506c444667564d6f442b706b67776c39434336316c755038414f6f396a733157673278775561582f55494e356d682b746d58526a557632645879694f634a37682b73523831534434522b556659414c2b546e4e6662714d33567667554171735a5449457a31724638644b766b4d306f4b7164516f466154616666696d305066776d2b304f4c415350624563304d315539676e6947485353796c6168516f63346f73366b7145796b6e35503465566a5a324861726f48543179516342382f5950354a71396a537856547555647454747a6f757670374c4c6a6f3562664f456c4436495141716b4c636d65662f6876314a3364702b784d6e70676f47666d754166682f6b4f6a34336e362b58715a65467133356d6870346c396c32565951762b4b616e2b547a6c6b757066756e2b526648644e76324c436d42633456464771496e4d5a6a7645647137553979596f523036567330376d7a4b686f427071354d776d58304b647854466978643169782f53714f384d6574615643572f756c3068414579525a55706469646e70647139752b38465346434179366573536c524747623757443866746e36493850396a5a77544a716b6e37516d44474a5a3965614957424f595176474968636f58793538546d5232797171684d5273343669686f7134716c77664354614b55384251724436757a4832616e595767456564317158712f6d633441596e535576557a6234346f6d31564770383430464c3752542f6c776f68534a724e4a6d3663544552505157466d6e79504e624e6d4f66514f7278325755306c4f4f6d3371526c7a4e475963325769796757616e6146316335787168737564705532536578782f5743424f66717673773574665930552f7844733353524a4a61434b473146704f575a34717450516431624d6c47346e355030336a6d476d4d4a35703366596c51364d38634432456632436465635078443957797275356d6e72656f6c6d6c71337334686d6854673977585431493078784e3677482f41476e5a613064627964427944473431794f51717634764e39732f7a592f686e2b6b6a63767a4831333947644c773766792f48764c637537345561486a6247593557547a553645566d54342b66504c522f6b6b727a35714e4461536a682f763452392f564e61507465326a4b4b57724e4d303966386a7749666d66672b4f52666c5436772b4f3461354d2f45384e30614b4d424d4b57797047424b322f615566312b392f6b702b706551744c7170766d6e6734726a4f6e384b76363966546d66647850346872466a486c575461394334493875566b6e61653935484b396e58794f2f58457a4f534b6553304243755678547344717a4d4239774f3641697530353778365166375447466e6248346a36737130356a3761765748794878345553356856337366446a4a3131546130312b67723463336d6c5247457767527070636443552f453937563338667445326a55342f6848564d2f54613356387a7a4772386135706172364d6a4a633132495770506c5657706c6d6e3737714d3143632b71684b2f3378465053525957496d6e524178544e374d5a6d496a4d6a57503856767a57386a31507a5838682f45583063394e73742f70463474674e7a764c4e44466e54527a787971657a64713164686974724a354f34756a71516f4a3863386c4662506c4c7046384d7966367671615565366a556d334d4f686e726436692f6b547a783050442f4366423978356343444950527a616730626266357950483133546e47337943595a326454565658497453446378767974396a353073344f464b306e6a6132427a562f4e72385976582f542f4458314d395138587a4731506e666835562b57767a7648664a644b7a566f384b71747a385051652b36596970734c713561684a4836444f2b4b39724276726d4e546a3330723039355773396d773867467a3658506f47536f2b6a4b6e7179514864475144722b7451393374586d64397862584854734d666330672b424948772f696e6437665170326f45646d5652577972716a346b345a6a34354b7158677876557664386a4f5370465975597a514e6e4356302b4e397a67443268772f642f56742f6b475877657837457a474e76456649536e744f745a677450436539666573534b3642367731735a3079377a357a396977506a50696f30476644306b43346c4e592b2f70725a775357424b3668712f7742416337644e507a463030554c3458744c39714f7a2f4144446e372f34727965583243664435456651576345745a73486e7337444e524d7033475379477756307a6b5078382b70642f78304464372f6548786439354f4f7763646f73464c55484d496e395771596144574b55536d6645715456797474482f526e4575754c686635642b6332447768563367414463775971387865646462486653576f5170736131772f744a677366616c66524869614564494341795838786a3158754d5443767766543942684f4b79366c613239587a5352794d75724a786934484f4b5659416358733636646149556d61693968636534476b6f3067663957447861542b51676f476977512b6a4951702b5643676a4355532b55323534722b50334f7564786643487244392f734d5436545345477168577a343649706d4a6d6d5341544d425475674a39653572794c69346574746e446935654e6233326530772f5a47723567453437756241754f5438672f577565584f466671393559696e47673476444f7a79476939634b2f6b37322f486b48526361382f7744556f7048344f47744c6564396867494d39764b624b666739667a47325039766a3168386b7a507a612f476e5338773876334e6649782f554f5362507a3944517167697954386c6c5a445136646276656e4f6375355248796861512b742f47385a31695153417a3561315939317159726a4139692f724a354f586b656e71305a746a4b79686f6d6a76377433536e6d52306e6e525631354274757979657449305746396343757a36394c333067444b6f337439336d30724d5a6d52794d2f506e787679752f385a765833792b61393832626d355069303262784b32576a6f654e6150385879752b692f6c445777325030504b4c6c35784c6f5034355a7234442f3756594148526f54487661785065504c6841686776525471734e763255384d3136696a374f5a4d5a4b3162706b6852785a4d375a5051502b52724876456a785173456b633532642f4c2f414d67735767795a554d3077632f6b4349654a686f7a617441715a646d566257784b58385a4c2b5147727545554a624d6d6a3369372f3476737347646c76415a367949426e47777659704d773865714e707a4539347069674c704970757454327966727150307233702f5a38397646643443706b67727835653652484f54755253456269552f334c6758474664374652364661675050424e43616f2f6c58445167584b2f316c4f6f2f6d4a3332574b396772742b663134446f46482f414775507a68623576345834726d656b6b39486c336c50696c766d47484c4c3554346c666c6a6d2b505238307434746e794a3274516e42304a2b3651725a4539675567464b5767527963653666482f4561574c7a4e75555233412f7477666e4635446737392b5436472b533059654e71655234506c56664e6a78354b656554654d776f73316c4e6a667344584b492f4a6c7339676f5146556c4376722f4d6f414f615a396f3059746e64695a4650656f5034352f6b443656656e66682f71703572366162486a2f707a3574763937346e356131654a5667366e6b5063357963396142797a6f39726a64305346366c69756a6b5a41482b7852744361337061397178666d714e6645554d36696938586647325a797753632f6331756538365246336556724b6a697171474573794e6655694d2f337a4e2f666d555272302f4a392f754c64394566416362314b39547344787a797a79575878377852564e6d68354635427a6f567a66784f4764503867457a6b704669306b6d676c77744d425536773154455a4d59707639526532326b5458704975443871664e2f464e7076682f68337037346c4c6d592f7070692f7741526b6e7a69706d5770704f716a7457775336676e306d4e714f53744c43534c47386d4d792b4c3465392f725054695a33544e7530435034592f69446f666b52354a35527337576a4634316a65424b79504a4652587931314e386a4c356f7a524c4c4a7978544f2b4e30437775764f666873355070382b69742f364a6b6b36757046497257506948612f46736738683842394e764e51777337772f58383679513861387a394d4934743038794758782f5075386678365047737557674c6f2f473177366957332f4630414f574f474246444a75457a2b75534f45326a74626538412f474d727864586c666963586a615a34504a3572397a51796649704d4851736d387338647a4d722b587579737537796d566f536b364f4e79554e463958374f7a374b694e4d30592f31615a78475a6a694f476e3577352b56692f6c4c3671464d636a49744c6448633455483863326a5366747a7968612b6373676d5272463168554d2b4d534a4b5a6a436632644e726764313647666431346a5776506e696175632b384e783959365475695939422f4f39692b75754648314f4376684c576241572b6a392f376662374a7934315a2f316132376a3442317a3646724f6473355378764354495356503751545555314f45732b697a74516647444b6d4b41574e2f2b4b2b616771562b775149363831664c4948634d42564d795068386e533978544b6575615a66735450386f4c594d6444756c376e6d414e595050633051397a652f5948356732483136702b5a375a6d4f503371623871566b76695652385639577978436e6773535a37475665784b78392f796c627a696d2f49772f626e78332b756e7237676a7a4e354e4d6e554f574249304d35784d4f69484151756830354a624b4b6b7258333545726337354f38643758647342726b67784b6b4e72756d3249466b344e6c4c47536d6344666d64396f6e545649527a6f696638545466544545624472755755424d594b48394d766437466434366e326d6d6f6b4e6531586d6131476a6c5661694e4b716a2f414b6e4a49754b366261325650535065355a653248395475536c58556c2b6d6c656e2f3642536e3741674568317a715230616633413956476c50496e53585846454d524a73706b304c4b79435669564d6c6f4175383648776c5958754c367071494168757451323646534743505354525978534f6641696d6b47647557504b4a33355a4f466e4578383967395749642b45694556554e36722b744b643433512f41373851764a667968395239544a79384851337646765436566e6d586d75586c6a386d3374785a713174795047595534613350717576316f5671574d706334616f717a4630527a6b3438746655696b63656c77512f4b72386e2f4b504966492f4c6654724d76526d2b4f5261376648356366494262655a324f754f374b50463552305254524478612f595538784b515445736e2b4c2b4e624f6d614e5054694b7a626f4e41356261534a4e73376d6f3479336a6b6a5066554856735949382b6d6c53352f32543155662f522f3559666555382f59556d34415a305972777250475156545a7235466a4b737a7259364b766a45324b4f367a517258554e78636958336f3861464178735554474b3470774c58776c2f455a4837343756664f424a66487655337a767861722b556d38683356614b446f724f6c573755695469714b6c393042354e7a32794f54615338736d3858386e6151674835442b49774d346d744a35633852754a442b574872623675354b2f532f42757a76484d4f736d6e5a6670766f477734686b7534374e712b7450504a5178696168556f2b6f36307a684867452f32632b786c4f6e5776505050416235486f563463693632336630394a394858536470713775356e316f3346544d6e357256484f706f71496e4c35784d77422b6c4a5035462f4b74674a724e2b6d4f49754354453864786f735647646b46484d6647304c46466b387a6f57636b4b6556327547616e35474f5753596573713630434250732b47645467397749746133534d4439524764697670783655664b462f4442586e526456517a2f41434e644133316472316d417655437063615a7a4a6f67762f45797036494f372f5678442f4a742b47512f74616c4f5a43356b6a7768637159567a716335374f3153694e5642704a4a7363532b704833636f3435535442672f4e784e6131322f4f52706236722b5459323553726d4d2b47396373383843374b493670486b546b2b796c49776b7356726e4f3664506567524e4c723571326952636f642f5731617a4538594658535533354a49732f667a706c6f7070446f7139694b525355647a667452554f44724a546f534865422b2b65385a766b576e7041706937384c5235445a3155696274715a4346304c7a746d4c786c77762b514f796162484d6a304e4244674c42416c706931693350737158795a702f462f7044336648314f4170326e79492b2b52372b744d366f4e4e31564e55382f55714c534e357457705153544c556a6d62527a515752384248444d5842385265376e3745627a48436b44647678622b36582b594868324e4e674e386b6b3869775638346f6376647a6443303942434563624e6e3362534b70364b75547a53797170554a714233494f4b4c347a5344706370396e305a6e4f63434565737639776e317339572f47727647594c4d76773778726351394f706a654c75736930396372587a323374376f564f6652482b37506d42764a36514e38795668516e7676623035726f31724f36654130696e5772724f7573544a5278612f64572b4f6c2f7973414d396a47746533673847556e4d715a304746374141554e57414d396847485233637541684f6d4c33643930445a364f4f5959754a7261756779656f52377733545139364c50636e724f46784a3837374f652f6f7150674448503566634b697565595069596d7458586335474c7150337933336a4e476379775a617a6e457353744938377a6770416a6d46664f3846584f6c594c6470624f313472764f49784c6b2f546a34325575696463357a6a6368426671526b6f6a3766615065436b2f3072324b594a75494d5a77592b78534b7964536e714456615936557a312f43457372724f706d6d6e61492f70507539724f447748634472464730514d7972627379477961467654317843717741367a733874484261487a4d56484c4a332f456d47366768456663767042333558415475682f6966395744364f5a4c727339663256307a4c664d716c6b695548535536724530574545714362796753585a5741724c717a364b5357507a657a692b424c364a33357a6c3970344d425a7574705178795778506c304a704d33544b33565a704b59735070733930393357634c6e4f73503545732b4d4a2f6b2f72486a615262766f4c36303648342f65742f705836772b486e32422f702f35426d2b5756775975725a6a56585a664b4366703579656a714e624f6c756251354e42382f586672306e516b534e6e43474c313336646f74307350656e345036363265616545346e71484a6f7a66543832385672386c79744b525668362f77444736756c486d594f6376527a74672f384131436f5969576a6e435746594f43597669564e326d54794a69596e622b45464c51324e50634c5966704f7747462f43304445354f646d7450486264526d524d6f794f6641727371493943514555756d6e4e4334426d6e4f526831712f714d384d433863543175385a7a385a3530617243687a634c565a6b6f7a706c3037455038615466704d7652795650384136677056476f4d4470757a4a58476b793470744c65712f704d54484352642f6937766a386454786d7a6d74747256713675664f72737063724f68795a382b3662694e5a674c71444e757978613172616136495a6f514c3475566d6f49484f4b764a2f47502b327a36482b71336c486a6a365044764a764e504a7462314b38303958744f42742f6d6e6c4e465042783466486537644f734c3072357155464775483763662b325933554f5144325648706a5531375669334862384938615035796633427656483834765563364e686c6e6a66674f6265505048664459715062787358476148473757722b366a574f356f703071447553542f70385a47665768515144772f53303947756a58387735397939664b6e6f4b7047636d5672446c4e633751476f6859787376732b6c2b75665845685a31617a3653654d2f585647722f4433395173623065383432665354314b3848395666433167586b3368752f6b2b545a746c2b61765458335879624359507a46724a374b365671524870384933484d4d783163414454383459327a4e62567448614873472f445838337651722b346c346a72656e6e7258347a3665374f7a725965626e2b5565412b716b4b394b62527155696439766c4869714b7461792b566e644461456a6f573339794441626e6945596e38766d366d6c6652747570773836675834622f6131775078442f75442f4149382f6b642b4c432b2b5a2b68766c2b3535506736754a753668614648676d7a7665483058526e6c4e4f6768747866645558454d4a746a3047354c434373314f6e374d2b305471614e71366e616f50512f666f74386b7a664c4e5074553837714e766c51387131573135756a72537a7a3444636d79544568634433477646764f38436e702b4c744e49433576532b554f534b7848515537762b76532f454836766a30436164374a7a6a677558617532694f625945492f3550485542594d4a49304a713942326859756d645166544f596b4a2b79722f4135325a6e646a4f426276686672684c5a3469756e7965766c44337a4349553153314e717833574e6f712f6a2b4b39784e5734456a4430656a4e396e347278612b616a3542344554586a6d4a78497148315a6634523530647a58686d336245573164722b51577530346361335838597a36624f307858444f54484353302b4f7063526e4c523852553936517535384c546d75617848486a413063394d6677532f4666313431394c314a396376523778666338676e3870736a78744879574c446f303776484d394d376559326a6e33584e6b4b5671557052474a4135484a4d3371784c6a754a7054746256314b52747062674e2b66452f376448344c2b496a57675078623944416f75476c386a4b386e463043794d7157503532636e6d726e6f6e2f516a375775616751534161767556503264364a2b3454726173385065576b66664e2f77415776786374783747345034382b6a6d646b6648616c6c4a2b6d75624664465a335144546e6d58716f6c6e6b6a7a536f4557644f7a726e6577506955546e4b59497a4639535a6e4e3569666e2b6738363339355838652f543342394263767a487833786a4e3859337366314879593953624f5269356d6c6f4357637a4f76513236426e574c53326648634d364235796d68756c796c7161355464385058374e653033785066413870506d2b667958795247624373535574745553586654354b6267373155433752354b4a726e6a4f65684b756d705a6e7a2b4e5a374370567a6e5036394c5437785a6e34302b6a2b6e362b2b733368487056343338727561323452374e794663496f736278317272396a5279766b6a2f414f723857575939555a6f34766a662f4149706f456d472b6d72625a5739703952367750623134703446346c3472347868532b4e49324a73767857504d38506d343262536f76707745552b50706a737774534779647568354141696e764254496448585a736b5955304c343146506c7a615a6e6d3657456b38557564692b57342f7742652f77436d76756a6f764f4b504e6972794e6e76614452535838545634325253776b34556a7771574132696e32787753567a4f55683630626f6959366a636279725239573932586e6c5778564f72507875546367687a4c325a5549477245774b32377361533369527061446673526f694c72486a436d4d4556394a74492f446a455248434f67302b395a6c4b38543847334e7a5632644852337648374d6e56677964464364764930506879312b515a366f386a536f6e5a646f63366d6633742f54744c6a4e55326339357363713358546d637a4138654835502b6e50714e36372b6f7671522b5376694f426e4d79764d742f63386d6f39502f4141312b3354357836642b455a64424b623554355846685a78513476696a6150644969774b6e436e2b4b4544556b5068573730744f31615672703236562f334451476d4d436638415761314e682f794a31385368746b3648415674522f47636b2f7334747a5035417563494241356a345350623837534a50554e7966773939514d543079386c33396c47446b3750714e75343650442f425a74566974544c38616e73746a79394c646d6e6e6a593274782f65583141544d54372b703578426a535351567a617562786e345275762b5648354459556e706473656e486e44652b706d5a764b546f3453454f46507a2b515a6e38684c6d612b3941394e43324f43694d61654e35585878493554555870374a7749374d744f6e4e466f3552787479594e44615a2f4335557936647575563173546271356f614d316d5646386c44314c5039444f3734782b4d312b37704d2b454146584239352f31305445524d57363148544438544a66514c304e315a7650765537315a3849794b4d62776a645537426f6f33374e336430366a6648506c77395175716548324f6e39676b5047745a476a2f69637866544e466a715265385972544137326567682b444938506a395376432f4f44474864566962573179597076484d484c4e3730716e7438667259797977526845717075723471744c6154615a415569356f78354c357a746d76416431582b51592b50682b5057703734373544354c743549315162634d6542596c6c71383244475a51335231376c736a6c3552714a6a514c466b7478754277544342386d6e356858346562354a544c6462347936716e43354d373470666f4a6a586646334f624356656b517436753251614c4b79706e6e676a523262724f546a444d6c6c6f446250555049686a4e53556130762f6a3833594851646e72366649546a6e386a386865707450744c5954797850566e7972357a614669586451665a5370494b6f322f7942375976587278382f52383339526646636e636a792f476646673867335275354e37726453756c5a564c504a79554d324951735462457434556e4d2b3266524f704a7176465078636c4c4467482b4b6e726e6d5a6e35712b592b7148714e34554872426e565a6c7446325258466e36735565786f4d6f337458594c2b53576865576369626f52584d506166724f67616f61554a4557383639536e374b7461323244764c2b5276707836462b74486f5462367165442b442b6d45666b3032563363786465587856666a6568315766703343574e71624f656d65784c4877356f78306a556c7932717a536c6f595466684c764a53317133327a61646f31752f744a543447397265726e6b65596d70564f7276526f716e4c3756375555354c69432f52752f6b7170474f596c7956714f744d644f6f53592f3841464b57757a79472f74475a694b39523644366d656e2b4b417231744763646a61653750316e5a32635237546a70476174387361382b636e78314d6a644f39767a6f6143666f43785365306e5a51584658646e6c47615053727838654e6a6f3064335665446236357047557375437a724a5a63307533334e5974576e476e59714642664d49544f4a4b314b55783054577574766e77675678667362586a656968666a506b4338385632547539796674544f31494a672b5754726f6672676a37444e4970335730733578332f5a596c71656b384f39747433635a345449732f77416776385938757a43386238677a4d336258717855355430503862667134744d494e4b50556a304d756f6a4b34567a5433645a43517a664e394132746344654a4e314933527a52484163646649662f6b2f483970327a7933796a62386b38553953633352356270617276462f48505657326678325130554d7331706b6f6b6a426772416443654f43536c7961546e704c39494a77757350706a327232694978485435437863622b31662f41477050534934762f4566786d3846386a755a314a77367671587559766e4664395850494c6f6c36362f48646e5373527249485164557367366f51372f4363436f69654357305237373269335855342b5159616a2f774330663652507a575a2f6f7a2b45766a486b7345326b544a4b76482f48786b34674b4b4c3364657179316a45755a6b6a396c733977307543732b694955552f4b55365038526234723348487a2b363135662f41476e50572f384148547a44546d54364d2b4d2b7662746d544f394d504d665272785a576675706378387631344e6a437a374a55556542684c64552b69687a4b6a6d3641657a396d4b5264302b7a78375253395934327233376835396f50776577336e354670342f725834747034666832313664354f336d5a376f397654334c504963784f7035497a7850546e4c362b736d6557705a39364d33506c464a7a74392f734536757a337339396531754636655a2f674236657973386c52486635663458355a34334c6a6e6a34303244732b5635586b614b644a6b706563625435316d2b5844306b6c683379426d39665148334845415341457a5a36563172667856734e5a4e44384a2f564878785374584538683855386c775a764f4a50546931385a743630504a39456b386a6c7a3031352f7741785a3457575a784936726e376e736459446841314a2b356633744a34542f454b50395866535831493941764e36765333314c38632f3865387378454b317466424466693079474c563475374b4f3563722b3846505a5572534b426f5766776d62542b734c47482f5636327071527636436d75317455756c695530797361615a3341797136726856674a4b4673375061726f2f4d3456743533672f4549632f7744655a6a375232483371754f495858484c336e5234337450315563752b4469576163787561465375385a785031662f67735549423368695845712f7741363432784f32413170613676725071766e3937477343746b35765137525950424d312f70513855705249456935307a50374873416e63393378414668316e2f74422b6c7347762b56542f557a52696671596e6f68345a73655a715474665443652f5733344b7366784c4d75645055594d6e645a724a5a53796b6c534a424a70702f5833512b586a397074487535723133574872733844657a5638676b30315078306e52756e75615531744e4a4c315838706f6971657a656773553930746c46456e5a7a7046664c4555674669544259507038323034694b393844614375366e346a3035384664366d6870556a5535715564316c77554b2b5452797162705265373461747167794c745a2f7372363143454b524c6e4b6868745856777236312b6f7a36314d36335a6c6c7277527055546c45756d584c70766c6a2f576b7634495757665536754a446d34494c5670353653506c4963782f77412b2f554c6138493943665633314e6c644c597a4c394d74726d58395346567a436f6e6b7668795249396357684c6d68526f5a4e587a706178335a2f754a7a757656782f5839476a584e36316e3851384b4273545576333246777032314c585651675756756567456877317073735130506232686b5a414963393833332f41504d542b503841343966685750494f65726437705a6552386f6541647152316f6c50514d7856464c773650724f704570794a4a453767676f50643858654548506574306a4c354134485a46536a6c6d687848564f50524e564654584d51427939416147653145367835333479397a51704947653149475a676e4e3369796632667361316d4450692b553256433964532f706a4d7473502b50782f4d6e394f35375434432b7242546563396e3642366c5974362b68464d41674e6c62474c6f6c434871657a5557446d31384741652f497a6a423730534e726c3936342b4d535166767251636c6c46395874575a32785a734d6b4d2b46665563576467664d446e436e356d43524f54456f3145737a39743553394a6e2b6c6a6334763133514739557835536a6c4c324e30717145316b79496b2f556c3670685a33594a7659376969634b566d66466d50534476784231526b6b326937666c676675314d467a587a73466a6566626177737533367049636278657473744230744f643366727237384837595451393767483568494465373877795738494b562b3656614b4148346d38793564416d52683968495276574a5666475076645a37652f467a352f77424f4d66326f32653037634c52354476622f41474850444d2f6238393962504a6272315a3342793854436d7a306f5a646d6259624b6467646d62546c356e6e37735669796a6a446930306c77395676506836734463766939736d4b7857496e694f2f7671562f614c2f415831763139727950623950394c302b386f7452516d6d7278436e5139506c31614d366b746b32426d484c4f59646871632b77714b365a5033575164705a31676d465a386c66614e616b5969323461522b562f384179623338637a6e357565482f414a412b712f6a2b6677556b796a63385279375579643256496f544c33394a6d615470624f7046594c7065624b744a55464a6f65663650582f47333662592b513151395866374666703336583554713750794d386d6b677930626576572b37784c4a673579584867314c4230704254744f5156514f7a4847664166317766436341543936706c6e39587237584e725a39324f4b48724236422b4d656d766b4766677731622f6c657271394875476e69454963325472695a5472557a387046685a6c4850643758735952384c394c3968635839796a7172655a6a776765756a2b3039344b7630352f456230377a614d7a78364371715376795057754e6a586f366a79704b344d742f593737762b31754b6c574d374f4d41732b614c2f616d52744e616f332b643752626471794f74586a6b5664636e644c577a392f54437877304e7a337179535a5074626c6d685059324b76354347574f5357712f3364667730334f6a3933585477492b694f41756e642f394f617a532b666b334c52706f7733634a396f756e3866675a5762364d76507a304959496c4b6e3242387830424d616e4c4364734659724479722f2f41436b6d345a66544838646364305569704665642b6f525361536b3534755a62446b5937726563374f533743634e31692b306436326b7941353661426c64375a763637665959357457652f67504e6e2b4e6e7074343136786574666866706c74542b5261486a2b36327275382f774150624c7a79304654356a61374e62414863756e67586250504b514c6e61315448476645417178765a35693762336d7462586a6f4e747650663764336b4f5a3462355435333659656f6667506e7564692b58343250354a36542b56304f384339626645332b5736727337784e47726b6552536a6d36444b2b516c302f7036725844506550484b506969346e4b4e626a455872617550693631476d76714e36492b706e6f5a357266345236776544376668586b6b6748754d78394170336e526e5847344972386d6e475a547a537961702f6e48354663657234666152463050394e477358724d524e4c377045455a4b4b4b4264372b644f4a6f567467744a6e36747a5549635155303868577a3364347970616a393346732b49432b54715663617a745154474239746764793547612b746b4e724f6f35563671307051746f486266704a577472466a7a5331467365434a754542544173442f7742674c534154714674365475386f53754c5069584b4e4e4841374e77474d675455352f544a61355239755358786d5854702b5931703659694b7541343071633436535a72536c6c58314d593572422f557a7335466179585448384643666954517843306970776a777079416b4563352f456e2b72563363646f5343726952577274626d6e434b6d684c7a6f4c6d3538377142574463396b49717a36467549542b4e6e542b78396f48725370335745445a62774858722b30562b44336a333570655a2b71336a586d766d666c7667332f6933687679654b6176686d62664a587a79657135694f6a54506d7235517a4947663841306c4d4b4f304e4b6b543968714b333259653061733655566d4b376f485a6a774438417637692f346f2b6f5069586b66705a2b522b5436672b6e53664c73764b75466e6b7334745634787431426a623266506965554f5761556c6d5756664479524469443367524947684f7175546c6e583064574d573039746832462f4d4430636a2f4a7a3054386d384a317647586147623542345a35422f774345315551336f312f46664a662f41427537575672304f6b3146647a34653356664952546534666d6d644f6f6b2f614e4134557473746d494838356e563857315048487638414864625058613378363758794e4b646c416e7959636736424f4c34464f5a796f654456716436496f4e385258734a4c446e3937462b764d356e4d634d6973613945754d36736f4f72576f334f704467554d4a6e576b4a4f726f5a5878584b4b424669766c6137347544396e6f506e4a78653564363136376f426831444b57707334376766415254684d766b794944375139314254724a66545a4459444763637a767434344a2f5a3776396a69442b7163657a34676154306f7a6d2f2f41453874726f6d7362476449383473364f314238517a72682b4a496935326f664f70574a6a38787874396a5775366d2f377a313442773265644f63784462467556785355444f6d6d52716e4a2b714e7371782b6234686c4a4c47456666337a6e2b53545778784e61413050336e7277414741534871775a4f4457306935366d7463747838596952656d4972347077634b506a474a4a672f722f59667537376c39353376395774325a446955526d4d4771354f30576661366e6a614f79646d6d3551514e2b6561717058314743737065427862444e7666654b7143396a442f71774e35736245384d5a316f6d725964466e5554396452305a4f494c376335786a4334347843736d427776613550515330424c3478592f7744724f312b364a44614b76517844526f5a34305a32766a31637067644c307074534767654d4a416c7842494d57506f6e5748512f6253352f6a375236516d43336238734474392b4d583936373155394c492f48504750586a78313371396e346d444a34716a7a4f5861726d387847584f4e7935466e52646d3948536f52485a596c7a50636c686331666c42796a537178584c71657931747a553552634871782f665a77504b38765331664350516e51353570336d712f43386b38743242757a4d61366b3775354c75346d54594c6e4a534e58326a37396f32644950724a596b4b506556612b795772504732494841487a547a54583951664b4e337a587947313239356235627262666b6d315772394a37703632767374316245306a7775653166486b7476774d45436d546558556942422b6c6463524659783170496861613243494a36746b53584c376b49414255316135334c6a625762554537704d483461766b3648746237774d7839346e7a766561634f3135432f2f77415450542f775431552f4a48304f384239544e587558365a65572b632b4e654f655a75774b6d49324534504c31744d6f7a366d6c693968394172347033556577434272585441723550336c71586d744c54484330442b6b5636636669722f414732342f424d66774d66786239434a342f473858476a55696a77334c5835412b4836497a7130374e7079773050756348507a75732b66346e44396c307a765a5954512f72784c616d76757a377930794e625055482f354f4e2f616d3959394c56386e385756366b656c4e6d33337657592f68506e4639506a3158542b457673784a386b47356d586d75634d2f75694871432b6e47784d7379666239644f6c666266614b384a323248514838612f772b2f4537384a2f526d5430612f486a4e6133784847332b2b55655261766c6d72673162766c2f6c5232446e58617535747a5278444c5839724e78666d644b7453652f576a6a564f6b453945384c366d70713269312b324e446637354834383448722f77446739366e597668554b746a7a37305a354c36722b426771434f33596979734f415665564978483575663962504269357964656858312f774443386a4d78452f68506232572b7a56724e6f356263422f4f324b6574716f62596d564b5579642b645464325258477373752b546e794141574e654e465832466b7a394a633579663841465038416e3031633959522f79484e6d546f664645476a626c4f6e6d5032364b674f71556d386e2b326d732f2b654d6f463553676252365a423850734a6f6d70674270572f644d6a73392b443370326542344c695532355838685a356e707172743772635a4d326736483054354e50386a70554a6a79352f63355a724230356e523961476b65554570496f3574546a615276582b576e6a2f41494e36562f694c366f2b6276717638653871677753794d64414339652f64563544565247683768436f6f744c3476354a6b7a7a3637704b6a4e4b5679537767304c73644f5a747156723071504b354b746a50724a6d576236476a33704c653279684d30546e7930436a68755a31546b63716e3044357775664349652f7743366666617a6976544241505a5077586371596a3743454a71372b32464e32507471655038416a58386e546f6e4f6637547a63593038556e365941333558687741634c723742616a7372353551526176715071726e4a4b6e75513152665770726c4439755a4b366757427766596d6c33762f414f757a706d4f664739664f423856553234674c74622b6e396b30546b6d6d6b5368547a343546645a4a62386852782f48386e4b51443565385735494c39684a346c6a33666d4d48587365774f6a38315a4b455171563952786d626b732f336f3644512b5a59726a6c4a2f36375144484637506477524c39693238766e31487747525a782f774452305673344b4f4c6956494c46453541736f59465a74655165356677757553664f464e38725570393441492f747a742b57426778664b756f664371566839373265715a552f4a435a7845524e5a576757725a4f79646b4d497639386f7564336f482f77416a787764422f48362f6b466f4e765a7970666a68386d62433161364134554e7a6568584b45713536474d7358382f75456c796c78736e36424c6668415745336e556962455450597848386752646f62323230594e486474366d6c6b2b574b723356494677726b58644b52764e612b647556636e396a3970502b3368394932456166662f556373666d6d50354145786e653835785169434666526571702f7a66595035457671585354656f574e5a434f6574696d63496a5a79427767522b2f7743456451597a7037347737556c726f545175647a44464b7859767173385546383745574b4b4e6a46736e635963393632644e66794b4d6b6c796a486b38776a532b6b4e6337737a76432f584649533533736e4153483464425762532b7651426b37506459586632526649307741774472673969622f447a2f3841502f736659346f55467964306c53366f704a316f4649794d6c467a314f53307444394d4e524432684c506562466b412f572f384165612b634e744a744d7a6d4f4742396c3650312f652b3950506b7439376a47564c46506c484f4b6a5436306a6a464e45762b58744270462b2f634263364c524d654d7148674f34742f77426d586774643166474973304f36644c556a6f564f3538636e385a4c315933444f2b67513458505a3337674c6a506c503841676338656e6d47314c484746457947554d4833495a2f30496b6d6838637935366d693279643636644c35532b54764741357741704b6545514333765133415a6e30624f7a42534c6c7a6a61705332305776736c64452f684951366a6d576c66524c373039585134762f6b502b65462b2b657833395635764c37687077484341495964746b763135394676494470506e793870536158444930674955742b4d65384d4442796a63376866442f6d6c6467355564487a705858633454793530476d7272572b2f674a617635676f427678752b4e646b39423842704a41477044332b356230385848647934425a2b6b7965707867366c756535527166786c6f57497642354f4b63544c552b5a626954564c50774343673265772b542f4d51644a333955326566722b592f45396873545977352b7936613275304a2f7435517071647a4d684f6a375a71467942467479306b7341465367412f682b4b636a5a3758354f6e6e39776454714a37656c42484b48506d4b516f2b314637513558324f326c45416b4a63716c5979723457704c767947615155597439377664585a6277424a586d504643726948354963744a6e747376363556544b446f76576c413879324e37436c4c4b702b423255506e41366669613575636e2f4144624c65417451664d71672b354546556b325256434c747961474b586c796363416b6c4c746644716c5651585936714347596d302b34344542372f414c5a6d53616a30376632652f7741736e65662b47322b6b2f6b395272387a39504b32777836632f4d32724e32637a706c53724d64714e4a54523170652f636e6c5433725a6d6c657147754b6a504b6c4d7642375470346e66485a735051373662656f5a3944472f6b61366c61336c56476b5858576c4c726f7a4a68465a30706d7653354c5877327836303732644a5641744b77314250315842362f6b6d735431463777624d6a32712b426943437455386452433378714c446e7a3632747370527a394f44367334445a6c703641722b616833762b513042523732324575386532395a36634a50324b614e426d666d463544596c6a3670303158726d3165674a7a5035322b35597373486957646548316b742f31506d4f614e75574b654d2b766f504b702f66512f743052654e364c767a55394263646a2f4142545632703750586641785956747873447636793551386f792f476b4a516f5a584b477839736e74374b74782f71644a6d487a44332b79362b593933667233447a473873304e48432b74794e464349506a47575556704c71774c6a676b6e437650486744734d7a4d2f336e785a43667841326742355358445a33416349613246325a656a69616836764d326849562f5631516f5a56524f6c6a546f714f3659746a5349614931732f516766784a4d474b6159664b6f484f4c415761395861795242577654357974762f5634726c5064616434553644426c5a785167795553396a65752b6d795a53523430766535594b723438394b7a355a2b3163747071376e4b35593236744b636a586a6c6c55515a314862536c424d624266574b5a654f4a4d3472457143563867534e6436436b665856563548796430434d794865737866636d654b794365717262716272722f632b536135366e543939797944375046415476684e7177477a61694873657637564c705035436265496671524b713239623734314d6a795a5632536d6469717442637a706b6767676e7a576850513668672f734a58467333562f544d677a4357434f5a75506e634a4548626d6174634e6c53763550362f50346d7958782b577050766e6d43594770536a393038534c4f414e794e7a48597a6a726949714c59616a5252586254584c376b36303538637a4f3636326d4e596679692f71447a763132645478547554436639417668564f6b342b6d64714d675973614848644c4a56545164302b4e544c704b7951744f7771343454756239687a6b423876742b6d6f62452f62735a514573796471794c52586b3056546f54536663374b6369422f56325a75517478486e554e78364f39746a3750636c335565314576774f624b6563505770686e7061497447364f346676384179487a6a5431785537534b6a4c357a724750665652396f737850584f6c57785a61444b66744c7a35376a367637414c6e6c54304a442b7852484e2f553874664c494254356c4b39564f6a793438324c516930463630717134683972314f714b66416d6c2b345078335474706348794e52374b46482f67555932484f46683976727a6a365763475a52592f6a7676374a572f586a376e4c306d796d4b5a512b71704e332b3751543858476d73447076536d7163474f4d4441652f57716d44714d6d726b6f3330616a4f7748512b7a564f3071374b356c706c6439543650366e2b7655696f695a5032744d79426a41506d39344e71377164515049682b723253717470636f434354595369735a337936544431546c796d637332325a493054324755712f38413369306e4279317a546a68486c41656e6e5454507871777a4230627462506e767049703550486c7a2b4d4d34796a506e7347475630306c6e4a524571355775435a30446756384273573159794630564f4242366b512f426169544a427054416559585a51687836323733573879323858726330467a6b744a4f5246633341534a6e7a3630616d424a50487435655a52486f544d316d56434f2f5038414c446e46502f474e43744e6a5232534b78783463364c7270666c5452596f41654861625071756f4148524d524d596b4839766231624963716e6b6c71382f4d5062624a513145714b4e54696248585462305961456f412f4c47656861617043536752576b46484a2b686c662f414647797667433263796f315a79323759617337304f505072674d4d57695357484b5432716f6448536a2f655870495379466767787151497742344e4f6730677479655832425a3835565a653037544646555758725a394d557574586e387473703772466f747a344a767170616e50616e4c6f6f6c534c50596e2b627655745454424a7173412b546b5653567a39614f786735722b66644a56396379794b62516f5944724a5034716f51676574766a7433754641675253424d4d7763544a314c41527161436635436244723258397a785a6f4e6f304a46516e315466354a314f547a42375a473635614e544a6e3538346455503367477053702f6279674b34335247364243656d796c664d61434752644d2f61717962725044764a42792b715a46524f56454846646f4350756c527954324f6b3750764f614246317267477732352f45433033655965555a384f4b736f4a383431337738307041552b4c4833732b375253384e4f35694b732f6a48537636617772576f6b2f532b7970745357426c7139507049397950344c647a37507872394e37637a5a6c314f4d7a4a61653669624d79574566664e71533363434b332f77436d694371565a745a77515175656e6b3048305930794a3735477232353964386a7050343347722b4134375833566a64743856305764474d68304b32542f41483537776e56473334694e6a727631386772442f53616156413867702f724d427a30354f35724c65564251314c5a38746c51304e356d7a47377373444c496c53304e566e2f49356c526b73524467544a53426f4d5036436f4b504973626b5236614c4e445a56517a4a6e443537342b355368344b6659687649726c4a7571516e505331587a67366d6345746345337963554638346e776b66637a7952744972592f50444a556430326e385a564f71314c4f47433665326f7868736e376e472f53734b6e717638414177636b7633772b574b39384144667467584961477753446d336770415936772f6a7634686b623153316b6d51534e316441574536694e6242543766347033736e6f5934326631617464337967594b7458493676676245655333734f616d6b6c364f6a6f614a755a4e72505a4439484e6f54334e636a51306f782b525046734656674d70575a756b372f5651773039464e4878324857584b6d51524931383049484d324a62655a394768796b4a71456e7769586f56526a336e656d3467675753685a61794f6741425631446d4a666f4b5a4a6a314c64304674636d53516170712b5a3941637672756c65457241326a4a7a50334b615977796d2f5457704c47442f515442486b326b34615a5939574845444d6f6e68707a745856327139616634714b4c4f3563476248373056645055517756436a70764a582f5041596e345842625a6277425a6e6c4749354f6e534444304757634f7463633272487147706356524e6c6a6555645648614952636557664f64616e726a4d766b58317a6958794d54345343386e6e6c5437387675646c6e795a782f796b78364d6a4d33616245326d627036436b35452f4f736c3636346942537863597954473950363738687a4a69593453455865666242324f444d79696e304c61644e575a6e7536616369663937613130332f78355763665176747a69612f693268385361576b4b78457047557a746d4f76434247737a794462574476357856454d33644f53736f5634306b2b614b353478355871325554342f765734654d7134675134417135416e367933794772737930566a7049632f767737514d744b724c47703164774b754b79484d70304f47627175706e6b4f6e3347684e446e4a72393835706d55754d6e4b54514b7245736a6d37494e5033346332304e554d304c456159534c6658445059715a564c2b4d597452486f53776a37767272754c35756b4271492f394c654d2b516967455a50744a4e4d7879596a457a766e636d754a726d556e547055517474635553737a71595866586c7335306d5036304a6f6754333270702b7734485638516161325661334268556e5a633034364253414c33633539557a54726133512f7742736f542b337657396142304242385954705776342b414d392f6a707437444738304f3531706b62324f30364243586b2f4443676f73505135375764765339485451376e453063366d304259616e4f50554d774173765158306c54714850613439427a4654517853665667684e546375625053535a3746315755742f37616a6d70536c5a4c3537486a306e587a412f51786a624b49773069397965764b666d6d626b3534685058512f735736785877756a684b6862426b6f344b5643646e76724965392b4b63482f6a6b5163545a646d534651364e7950306c61777a702f71717a48584c306f67366e764b724b557031466538776f46524a397744785877704d4a54553139444d6d514a5a62744f466830666f3239746b35445a636c48496b75416b736f57754d57435a2f45455966514e77766278716b3942657067334b6b47656651476b7575355046424f554763635241784c6537554f6e474537484a5378797541542b4b6e34632f41633176613263434c797a796c7a6c4d6c43754262585530744b4250517a6c54564c734e44376f6b366e48515170304a68617461725355776e644e744971534b705143367a556974387959557a396944463149465549376e365763374b747a545a4d46724664564b7a357170567641665977466659614a394d71766a434b3161657372586a78507535526c334f4354576930456e5639684845554466472f4e4a3967564d634d4f73314d674558666b6d464a382b7037615a723470347a362b676b47567a53306f6b5739374e7952393874443574454a2b61327173456b6b53306d34325378734f6b483138763974434f6a693433434a75587a6a474d724f4f34504f72744f3263496c7a5a3059544c55686b3654302b30536f30495a2b79364e4562486f6f682b69757843656b535578304c4f512f5964616c396744752f7945717355637a54514c6e2b79474b66574f5935454237724e6d6e6c6d6b70492f597a652f37434d45737039354a433769557a63704273392f4e6b6664433269596d5645465938704b447578716d43614d33324d44574a3253764a50513975613374583035426f46564c506c39733144626a724e505a32573841456e7663356b63725a536c6e434f696954622b69695a2b55475932633561525a6f73654f686b674c70324c64512f6e4c45367074467679477062366a48506e676d67713131423230746c677a47743948615a4a5034392b667174537959476637463054725a4f6a356665526a4e384a2b7839617334625734637664416e3066475539687558584b32327464674d5a5a70486c4d305169584845577258487a354173686579726e744970412b742f7742656834664552556c554f575a633158774a4a364a73336752305456777362396948363661473570726d70714a6b634b72736d666e55306d776770595066743949316661446e39357235626b36336b486c4f704a557951737759487168437652376337536d5635453641464a706a47657557717a58576b692b4b47596b753042707149575272377645596a4867504576367932506636762b714763343571334c395666556f49655a38655a567a47334b7163304b6e776f3364536e34394274457646735479313543374e4378645a544d476b76567232612f4b6f4c59506c64585a5543654e6f5279324e6961647556715a6e38786176472b31335463455235452f566c577a4a6f3478427255466945385748785444314d394a69596e4569585a576b39527835697533306849316c6d46515061492b6370376c70356c784d62703643416e637164307073743739567936624f696b4868596b6234456b505376374564466b3946723833427974645755483864456d2b4c472b304779666b54434c693366746272412b666f692f6e2b62615a6c4f6e514367556b6f7731483948757147526d564470785950626673616f464c6e664852734a2b78546c696e3663637135527061585775453865597a46365a50622f514d4b474e66594b61576b724c6471637a5a72777130527a6d544a477a595975466567796372686e7173314a7134365271354f37326442526a384d7a516c47555565684852516a37473579645349584a434c5030566f72314f5469434d785768476c5471675a393454583334686567506173412b352b71674e35434b4b555a6b3933442b576d642b6331455a6133763237616b437a6c7932574c486c58315a6b73374d79317067414f654361675a515277424c4c646a50687455744c496d597a536e71626f795a4d66367643645538306f4b715464795a62714b4375544a4a79667152704d2b66767158646367464d627943497445686a58636d4771784575784d76447374666f786e4a43366978756570685032732f6d73446854772b477a7677706b634470754f65794a694a6a45676b492f46565346534d646762646235553551565a31686358626470664d4d7455564b475549614a35394865715559443047786778337650713544616a54695a65453034534833366268434c2b4d6c726e667044397248766772657833426f6a6f2b354f35633755646f5136794e6842587868304d434f366d3654655a6369473568715057526f544e314c646a546a5854445a4e4d6e334f6a2b63395377486353746f714c7333446d63373965356679754254613832706579385674583353456d4971505161384273386954725a2f586735364935446e596c303870636f6f6555376e47494e4f672f6632574969496a454374764e376a484b7078392b72724c644357704c4c4c394779515a5a616c44714a567455564d70504c6e4453393355636237487051357a6c306967446c54505161342b53375674476879665567597936376b6e3348326353474c6e4a7330632b3531694b44636c54716138334a5366536e2b45772b5a4c59355a3145594b745474514b71754f584f7a4d4450626464726832454f2f71746b63563266666f6b75724a396d5646636445374679456d6a716e47494c35476b514e71352b477259524c355a4f363253593457754d2b5971414c714b334b6a6c666c7a4d736b3036644c4e6467384d705a3079753658362b3078637075434170307264514e6566792b3469776775516c4b346c5473576d6d365449532b3056356c2b396f746a7853716a304d5669515050477a4e73624d48474b2b4c33394266442b506c4b62424c486f39705a726e565a715a4364477849486171615161506d31754e376f2f45795a334c6b736a59514b55336e5443594a356d4838695441476c58584e2b5376794b32684d7231775456584e6a6d557962566e6f63374f544a6f7353564d5171737864726e5643596f6d6d2f58762f7761366c5146477267356f737a3264356f7a6f4c577a5a704d625761356871344f4437565454716e44715630546178545035527a2f7361767a4838552f32506151486f744f6f387837703869537346534769634534632f525169794b574b4c626d76547047575761352f6b56386f435a52754f594b716155463171774c555831797746435862726d5249445a5852324e6b613546496264526a364e333331725850314e546b726339626a363965664e51326d726b33412f71764a3566594d48797a576d57526e32584f4275444c6f6d50472f534f486b636d5870433839474737337a757a6858516b766d39726c4f702b50725570554476367342434472736d30714a732b48595a55684f317866595a7139352f556e433962644e61692f643267613258736c4b47635854386c622f414c69344e4c715162585a366b49526e316174556633317a6f30394f4c4c74626c44614c39697464365a33596f64755a3839575763683150396f6331584e4a35665a4f6a2b67725857375851796156434248694b707335326852777753756d4663733264703158797a673532682b3943576b6c49396e4f484d62524e633530632f6f457447657458376c34436e2f727679744273475739396a4d316c5151574f712f6a525647743348516f36766847594b5341662f5631416b49727168704a4f4f77717553764a73624b6f683046742b777150524848565257666444356465637079454f7436664854394e337637527a34545941755869715a56456e6b364a6d794c7a614c30775756665a736856385a6d3058547451364874315634633476732f774467597a463042446c514173703073667459714c70646e436d326443457035386b4f64796a4d70626e44376538613533786b5066384173423339593567424d486a456d4478504c637a527a3350704b7234724c496c726f7349394e5455314c652f57616f7936757a4c4b63694e42556461626c7041666a5362514a495a593958744232712f346c734454705353772b4550484b754d6f57537639626d72396d664a516d54347736763841582b4830532b46337359414c55517a387a574d55523131454e4b4d302b4441367a6b5764514c776e306234645a434a6f77305068575448713934704e62676366552f444f442b4a7642697a31792f355656712b666e61494766617a6368394c43504b786f704c6a365757626d4d71344c4544512b524a3934356f54417667544348753777495034736259586b375a3155726246396564487949314a646962536f5456326d703333426c3466556d357a6b7a43494c2b6159766943782f45396a6d614f58394e6b4e37394a755a466d6a70557430596d2b51426f4d585a70324b6f7a2b756e7a2f735435714f5338353732542f37383973393353496739576e3968367a4d6f2f4366313974632b64756a702b71464f596a496e72527258555a746d42506a544f442b5663644833477a61304c6b38645148742f334344506c476c712f4f39712f774136503452432f5233384b2f4b2f54543146386939516d2b5656562f38416c757673376a5043426d5a443139766b47687164313866796966527a667069725645705a3545644a7377397a526b3577744b76327157315974586273486d662f414c672b647a772f38772f79704b5764684444664a4a7a6d6e2f4b4c4d4932637734462b36466f6d776451736d35667a664b76687a304139776635702b496537526e647036666d4e486b72365a3064354b6b2b315365326b4f45442f414a43706b39306c486370532b4e30452f5964723948346a492f6b6d4279666945476a793439592f39676677482f796a3853764b74724f437573356657616d4745397549485a2b466457457643626e30746e4537726e4c6d4876755739674a2f6833467744702b75686e4837624d78715a6a384933503841376b58355265532f684e2b4f47705a3474715a7a2f562f315031472b432b6a7266486e526835467873756974627649385662506458566b70624c714e564d77362b7053437338544f583467646a37507078713334396d7655472f375758344b2b556669742b503841722b542b66655172307679473965644566554431537371564a7061666a756851396c574a6a794d50454f7637547039655672314d624d785232564d425247396969612b7247726646592f5a313749366461635a35732f4a397054436f4d7142627644707935764d2f3958576553793763696a7a54663755756f515232524e6f4f486d556b754c567a674f5869495835726234506e6547656562486c7457464a3666535a506b58504e2f774361306c624c757936654271467031324c37472b5434624d4e4c6a6f536c3067794e796e394175715433704b784d7a474935682f4d36383330384864383138734c785974662f414d455a355235464834612f6151676253385a75747156676870353076794a6a732f687878564e2b752f674c4f623367624349572f77426533455445552f454150485873364368537350334f70536a52424263336f645451787567796d647863496c2f436c66535a7744346c782b2f674c346650363141336831503751667876545049726a756d504a6f756b5366713845516d4671774a6e5a5a316e2f774455662b38415068436e3471416155446577354357444864366176684e435779492f62676e61427a6d70617554724c327a4c393374427a56674a395038415267413135504c37427a585a386f63597067675865384e4c56735348656e62332f56496136466b58744765694d6d72482f7148774f39536646676f78734d454d4655764c4b6c7373426a4a316d7775746e564b7634705336446a47586745507449756d4468397a665a2f7139346b5a3972385844362f6f5069522f63693167582f546f447454435430754b6530466d46306f6e396466746f596c6b5a467775663667496146422f697632324453307a585736634b43426a576e79783765314d572f7364592f76374b33447a6865776c722b516632616c436b75675a475a682f5664764c744879636d4a343130796d71466853703559414d51633359426a59747a67672f524a5a3131435646386674346676446f664b332f493742395654312f37744851702b7a2b312f77417730772f536c3168533664744241457168466e3247546b417342503841682f6a38786e372f414967555a395a762b46622b776d3936346f6d3973344f556d6b654c3431333158457a6b615258597670653475663447587650324e6150394273782b4857506235442b535870456a50794d362b74586c6b6c76316b614764464752546839396e626e6e59766959314f6e5a3874416d707935316c2f74495567415936317355747834782f5165333744717776723056587175552f7959384f79694d4d366e526a376c7a71586d47684d48624b536e68565a4b5030434368717a44566d475a6275706b4850386963393377434a2b702f706634783533346e356a36663670436a4c72385a756d31387a353632387a6e6a67355956334c5333506b67717a5a4f4f326e464d6f56554f374d766e756d6843744a32706164307a482f6f502f414d485037532f34522b6c5870393435732b532b4335667174352f5a6d544930647a314d624c354f6f4b37757a3235444d334b7030417a355a30784a6b656f6b456c782f7954474b3551435a71503661337447724d384c62612f6c4858377862386666787538526c504f792f7835394a4d705754476b50596e3032777361557778733473704f6a716d334e4a5447386c61767678694c722b6a655832306e2b306e2f58504e377a31765038417147763371682b4f66346f65584c32312b53666a6836566559576f58496c64745870786a593546532b5679754a75706979316338526e4b65757857663843484f344a67656454494b6d2f5730692b7045637572622b59383948397a66384150786638623851772f5572306a394876462f53577645383038577032755a466c2f694f586f654f36753475445578644477325a6c50747054386c41397067516b752f513756395a306469375236394457314a6e5a6132364133673876705a36796558466c4f384f5537773730337a5759562f6c646e676d68342f2f774346792f78317671483433414e486c5758563574354633364b5261754663357a64736238682f57594152736374632f46627a2f7743304862356645717655654637365054525867333548656e6276433051737a2f475a4c66544e744d365a4954386e685835512f774438446d584c446f666330615064567061643630684239516766644848623337744f663534455638783863394c2f41422f79476a477964504a70394f2f517230713864394b7655544e386c3266544c63743830385738775a5256523544365371386971344774366f547071324f733030536636665a4b6c7254634d59555445326d4e3378586e645874663776796a68622b5448346565532b6a766d6d535070506d31657076706276777a2b51595a6549326f383538697970477a4c30333938765834774b3159656b70425543586662325a4c3030522b2f77437a47357975756d70466f7a61646c7645555034583474353936633733696a2f492f453738577a7954507335342b486b6b312f6a796469567247635376446656564d337130315747696c76572f4550412b737a35352f654957744e62527767584a36782f6a68333070386f387179505837386a5053476664792f4876482f414370574e36592b55546574622f495a64595956512b4f46752b4875716b7839723630734a566e574942376757624f667234666657743930566d6d6e50313552464e7638752f5570554463507752422b4c345265425a767037526c6148632b3631754a4d304e4e6d6c4d61737352783952777972576463696f33416b4a676f6f6159632f713061565937552f63565a355636396573336b673430666b6e716a3570736f773830504863765067324f782b37454e667856357958534d4536493279777966644a7850422f54392f5364317647386d744e4f4f6c4a455770395476503946717a723951664d7a6634354c6e773579644c7966596f5a6c7770476448314d737759625a35357070522b557563396e362b4833652f684a2f713233386e3345422b6f2f733475373854616538585a536b51596b6e6b696c616170613250465a7363716771686251425545422f44375448702f367262712b494c71657a5451617a47466e45534837795877776631705639563244536f796d4c642f37627168574866395876384163356e534432634776593838684473665564726b356170444f645136624d595a4b2b5634336a38304f6838417334746e5253492b34775a4e77597747707748315853304756765a5848796870695a726f616d6975476a6a784a53327368624c4f4d7458574c516248664d76706d6b5767616572486a4b572b2f4f6e65477a75495661706f476f6e684d716f69424d38307276304b7871633877547a3345314b655050384179392f7978766e39714f2b7a2b6e377631346873756a516b6d41487636754c33634268653376786d4b4447634f746a397166613770543144302f6b452f77424d503547434b7850747137666844764a3378787a36504855766e56306e726a4d72705648773571422f374174304669583639716857592f76682b2f32384a4a39567a6b57726e6a41665762366e455044343666763153397a55423141536d4936453342536d396e2f586a367a53575947726e732b782b2f38415342657a327837767a43566d6d644b5945782f39486e315855764e66435870436168644731394a496e34496c787a44506f634165664d592f4354533666736537387848516131413952783345704c7666724b713635784e464b3355427956793173556c79714b444c2f42712b43366e33417347422f77413334647279462b656a58354a2b747634367a655852656b506e573136657038757a4734666c764d695756394f766e456b593254726e6576346c72495363665237332f476c77556359524c6d627a4b394b366d7a6458634b486f73714d534b316f30387061306269665368786d79682f384174506e4933443061673564376c414963506e2b596d50557244336244393376506e5962436277454d2b454f36644b6c45347153645038386a472b77427a56704678632b506e6539392f745966422b506f6734342f6a4767704e4c544666456e4f69587055554158756e36746376475273354c2f6b7765476f6661522f474a2f3465342f6b426b7730487858533644304d7146544745366c3573572f6a41557634546e4c767a66595735672f4958735032436674547876506546312b686d7459506e754f43685051526f306c48315057776d2b6771786e6b6e6a427237684e6a4a307239792b72374f332f754759742f5a43624d6231694f6e535230447075426230305a744a4e6b53456f4f793133715a6b7361326178436c7773525a386338636d736454774d7736494e6a476b536e54787a51714970356e36765a766a713261507963706b34336d354d755861614e6d745250586f4d4d4946795647735334367a5045484c4c676d6b2f597a334f4d5a6c5a78544e7364527150354a36316563625570397a6b5634586a77584a6d69305669432b497536784a57774b7457333252576373736e634530332b59726a6d393378687a725331696b563454792f63564358387a757352467264755852557a74436973742b727931544a666d315458316952426c5932434a555546372f59372f4142344837536241767931356f34353442317a447a534f633664616269526e6b4764417a2b2f717a2b3551306c6f506d6237692f334459432b6b314c2b665461306b69422f572f717537485a34514152355a6b4d7063344b7772366f6b5364746d6555387174416c69436e6a37796e496171463064654942786172444d2b4f4e786532337650495350483834386a3866736b31427376536376796a45376e447358313134734f7961667477735a4352726f304665345434457030394e53334559752f704e496d4f4865497065777a763757336a44756f726b4d75464e52496c563270384c6a624e524d34757254787962444476734d532b592b6744766630763674574f5845684a712f67626d746d53696a3368384a6d3247675961686f354c396b4f444c4f73754a4653794c326a33332f58635056635a7a2f61797765753537486a525359727036314b565056553533784f6571774f4238544a326348337363546c6c386e5153582b6b51364a64346f424e4d796f346c6730444b6d2f767a74354a5677757a69497550346d6b5264372f715a386250317a762f326b4437317135784a6c66692b6e366853305731302f4656315458454855755a4c3333696d796746693045786f634c5655473771316363376f4a4e686b6e697944337536724749774851736b39732f4b7a54314130645551526342576931525630465430685170765765787a6d4c4c764f4238767635385238345a503841367345486b4b52584f4b6a624d737543784b4261644c673765346764786732664a376b756f7145423672394b4d2f313054506e7a4748333448644e685072502f4143712b556c3268396232746a577857652b6c64416b552f764631515469766a765958424167396e7541672f464f7744665168564b2f704b377967766f5a3641516c436c4e4936754b2f514a46695844333272373732745a7a3350456570396f626966322b66426565622f6d46364a654f626e466379752b5a5a75706576535a6d456975614433614438385650572b627248756c597461657a304170334145302b2f33482f5747744d6536744e523734482f676c2b43337172527a54395176783039503962533566715a646b6f4b75385a316c74672b773353305948786a42574d45395838704f62334e554536666d636c5a2b324f582b764839377131786a557742547637526e3975596f4e4233507858384f377079396f53434d5879652f4c707a723871626c4c4d7953646d77722f414b7633495265776c6334585173457748675555466e542f41496a572f77437041716e31483947664350537665385439505054324d735441384c3864376834574852704874533465567879593835636e6b2f38414d4f4a64536d66653939376c6737325a55384b663248773866614c544f4c5430734155473257686a71305a463472344372796d52774a7234576c3262533176343737642b6730704c4a61306d2b552b495263734675386675642b364149546d57724d322b5961546471386d76687a5035444b502b556572586a786a797474382f473539444d734c647253365066723658432f6c695854385351682b6e492f3841376e576651624f4b31356f46694b39594e37782f6355765a306444636938666a52703654453554736e4237657634772f6c74346f55716e3866794a696c334351367831424e756a635055304b565152563278505a6b6556502b38442b6462767965395756656b2f702f774353303676706436634c504d33475261793734504a764f3833543165374a75504d7a5156745235413032496a4e4d375a574a6a3552467a342f69593730505a744c5a586466745839667948474a4a35532b76552b4e553571722b614763314d6f746438677248367a6757736663706c4538704331612f73415939574c756d3169313950375431675976566e725130707a2f78435a54326463544154532b62715a70304f45352f59354b6e4c63416650376a502f41656f5072444a3739703677487a2f4149713364734379482f72763744524f7272506b643259696e47775270486e4b32462f3666306c4c50327335374f4f466e5069542f54386e332b346b7668506d2f6c3370393556682b6f6e672b7a72654865585976434e5772477568644c3677673970433767306453354c76394b796e7039354535492f2f4142542b546e596d497865733831594876472f4150383266456679512f485830383953646f4b35516a7437347635686e5a396b54386278377a706f36436e35476246616b52484231637547357135336c53597073767a772b79594c45764a31744b644b39713434514c3230665676497a62537a664537646d796e79544b3565315a773930594e6962756b554f6a526f56426e30454f617a4e5a6f4f542f6a41426c6c4b6d39746156714e464e737831345149764a75376a575464303273356f76627976796d6c5750574f586f2f4b374e58626e6a322b77702f473566717a434c2f67353237526c63684f636754642f33457845396d63794d42737538587a4b6b354f7272587231732f4d6b7064706e4c4852337336634e6d664b485744544a39474b4e5a56556b4e4269366d78585030364a6e4c2f77436f34326e7a4657656f48715270654f59622f4b744454304a476a72707a6b42666f573543677038722b394b4b7343362f555534733965686f4d4e4e6c4b356b6652446a67593450684e6d6c617a4d596d4f736a6f66365252346b3368766a3053352b743073334c6c794d30365a436a5a66725135384c70724e533650557066566c7277347144574b792f7741676d4833714252675a597a6e5039636a5a6a786e666d72716d485779452f446d424a6d7750703163774536794b5935597452732f7675516534536d51364471652b342f674a3376436f452b35705574336266742f77486e6b6d50715567313744706e664a4144686d696b686f374b774a4a39616a4b64545250714a6a45766830416c4c6e4b514e6468776c7a6b78464b785731596a77486e322f764a5253752f4748796a4c476251737550667a6f38504d7576706f7034786c4f6c6f544c6a37566b746f747a65526a4f4d7773706972454444355a2b4178774a37505a2b3350302f7150495436762b6e4f72343534766d624c526f574163566f50656b4e584e77314f314930795a38355261457038593569306b754d30556c4d4175742b736d62764f3858364d5469596e77473176384161595a68302b7657685671632b2b762f414d57334635764b6f31567254444b6f56486545383862695863466c3061673658586a373342376b74365266724c326a5075385477775054506e364f31693578553651686d553253555435536145526e5a743177446f624f6777786e2b39323467706a5933376e366d366c576b616133307a68786c504645785053514e527158626d62456e44646b714450735a6f7179386676385671354b63722f78594b7930546a783342507051325769783751346476433970696d794f674a45706d496a6a49327052647265662b49353537666b585a382f5030356476794961545259725538677a7035365759656c4f4f4f2f6a7146732f6d6c726a62397a6c4b672f32754f745243724c73323444526a38306656763077394a2f526e547939543143394d2f452f55487a6a54706877664a50554c5a4e6d33686e6e396e30615a4d4c7854486e4b36474d733866696c59696564632f5135435358473871364e74477472577a4e625772583849382f75742b552f70596a7a44466f3854387238666a79737278442f7837667976487646646e4c7a2f4143717a4d37394e55766c6d726375352f6b6d44624c446e3166446f4b54396372615979647055674c5237493037386555556836762b68486f35366765556e3544364c657166705a34764c712b4948354435706e65552b58525a754a6c3355614a465a682b45775a586a34306a634b6664777378366d6b347a513659322f79416454656c37566a467132464a2b6365426550384170746a2b456558654c2b746e703336772b5650707364706546654735757a553377396832536c4c6454517956534e4367766d4d47424f2b6e766149334837365668535a57696432364a72617452476c2b70324835567454562b71352b512b55596d566b7a426e7a2b4d337835464d6d7544707777465452584d37794764555a5741517253333455324d66374755702f5154747445544e6555517a5738316e72543958787a7872503864783158336b452b584b6447746f7961646a7176347a795857433663726b705850774234785a4177413444674d2f3841446b347a3175496371706f4373674d6574514c314a5a325757645844375337744375756f59596b387058542b79646e75617030796d7341572b2f354e5236472f37524772672b7066682f6c5868506b2f725074596e6c734271683858384a4950316f78654e515a72735747725073744932726864714f6a79574143707a377a5363427550707039766e2b305a724f364b636f3945337050324f4442386c386431433741506a303164454d4d66475a69657757354d343575636e4630696a376d734750426f36396152765a47734768397779704a567646654f4f6645524c797a386966412f44353655777650794c79446c6369644737576e304d357532467564504968666a444666756d36566a6e444f70726574544f71787251424b716666704930356b616965572b622b5465583078387972614d7875763348333955787546574c4a6953646c797675532b50366c6d504e5954355752476d62706756464b5774702b4f7545386a6d6f37732b6c646e7044365a2b6865706b2f6a69696848716c36696548302b4f656f667156355456546e2b57677a79767872536a3976696d62566374325452546f3573453863796c63563873616d56665963732f7563737a66666d335a70362f7031486b3438792f4266542f4472314439525974337a537a796d4c7a4479554d4c773779366647715a6f466b574e6a30745974686d44706334753570616d6b58764837446a7067706a53564938393750516a566a55697542754a3649666c446434525955586c746653384133624a5665556c62556c38475056332f5a42794e6b306e614a34364431422f557a4a4641615a685450386a4364476556394c4d634a7a59482f776c7452365a666b3136372b4e70386c77724d33794c58563535366561464f2b764f6b31636e65304e696d686d66394b486c5833662f47324478663271567a44773047365777414e704e584e744f732f684854377837317a77746a3156385a6a56765a516336577957524662646d746f67755052464b6c564571476d6558536f714778707a506c72534151667945626665414b5468736d4b2f4962336e3677487076496b303550636a506c4e4e61717238725035526e726870794831646f5568517a325556456b324753462f612b344b4a2f6b544b59497932523479414f3536685547626f38665066675674552b4c4a30614f676d486d6a6778526d5557356d5a2f75666b7542643177533966376b49484246595438636e7064694b65504551364d747a7a6e796b5a706469546a785a466f527431716c635a624e71664337377959753346517a53613737464d737a6c70367354754270547063626e5834566a7769416339537651623146334d62564478767952475235546669782f2b4f655536735665686c487138546a757a64353043736b6c4a57353948365944524b79743079617a425066616c3056314b356a4d634235497658372b30662f664e38703164366252395158657245323371584d4d50437655762b4a5338724464446e6c6d6c725353747a66484866376b642f7741706f776466516c76423732676939436e7448736b5a34592b6735496576763974502b346636507437663676666a35367631544b67597652386c55765538346c6a67465572484b37646b315034507451795839494a6e503351464941516641354d6e5254583072646d3163445266547864584d707a352f4a5964484370664d77704561386a63375151764f565553534232704c77304c595332482b7a373775392f5879384a6275712f72626638416867502f414248314e3874394f4e615462386630394c78396339713947615971717234612f72564a4e7331476670732b4f77574f6e792f6b486e2b50554936524838696a41706d7358694d39343358394b503768506c48696533702b55656f486a7264767a4c5457764a71387567307163357276477444765275386571775a43474f69453555304d51337069344f704a516764487475356a62526959694b396b6252596e357a2b69566d4c672b6e4f6e762b53397854316c616d74356c6634305047346d584c4a6a74576a4b675672434336704b736c6b6b3936444851726247725273744f336771504f644b2b632b763644516a383066557246395276584c51386d3862386f74387777705046636a4577643139444b58577959586273326741613950577a7a38564e5252307151525431557738616f312f473775756c576136637850724131644633506957584c4b426d56787369475066336c424278476b78764a724a524c676a7a35703264352b67352f3776684d50696f53485148374a7662476836345230574b46536a446b344961397454667249355477633141456e6b6335414457434c674e314a2b356642452f7743675464386c484b506d657157556f466a415536652f445a7a704f3655735a7a584d397a766251354163355530536438782f706e742f304231462f744f6566686965712f714a34302f367175655565437530306533585a4451775047312f796576424b6f376c6679424e54396977412f533072356963595a726e6d4f526e483754586c725067505652365265564b306a7a6152325430766837682b38736e4e5147502f7743514d5a5a5a31424e676d34396e785a396d5758796c31637a62722f6b745441556770507a37784858764779756664675a39716750457875506c564e626234777473757775494d37506a4c62675365645633734d73383774622f414e33627954374b5575532f744b70697a424c796e7a6875726c53756d686b6f625a7a4d67443665585372795467335a68574d737a7a3865644a545a38384f6869726a55314c53486d56396c30796663435244696a2f6548314e57583043386d77764863796b764b2f4e4e724a784e6543514a2f757a4933445752774535566f467062417679736676426b2b57506f65542f4762624671496d64587333627a50477452354262386256686278477a4e32616f536d57384e4264484f534a6e42796b7163534a6544637347664948524c767639695255665253416d58703174587045597947667a4d364270714d7a503841534a317a3654464e39705463476b356e5530316a3759785773754b614969727645694c66614241773764334c6750554c3730682b4e35554a644c2b6b683876556d7472356835456453676a4c744353643056676f6e6b5a3850322f746f394c397945325649506b777a524a52624d7a7642545366616e6f496b314d536c674e392f4b685837566b6b6a51437962547a704838507642514a763548312f506c5145664766767074496e39343734593073556b71467159794a4b79636b533666413459552f4e37774946745743684f6f2b536969646e503137784e7175576a32534268684c4850545450556e344361746930673335506848717744354439686e3741636d614357694a37756455546539675a6e3231676f65642b5437542b79715930432b4a6a6849324577774d666b4d43622f67743266352f743968505044505250316f39543377542b6d7670783578356334316c4f732f4750472b37614d39534f6b6d75665166426d714661564c59743142734258454334484f4a6e506a4d45366c4b527a5847342f6a3339706a38387471424e346569364d764d305664304668736561654e5a4c6f596e702b75577157554f2b786b726b3155464c30534435666b7a5849424a416d6e6e4d70396f305937386651656b502b31742f623538362f47583035387258366b363846766d336c315133373047487166667a56343876794d6e364548384d4f7337535675446b6a56514c70707a494f696c7a67535155634f76725271576a6230714f334f4478766a6e31504850342b44546e5a464e3378394c4b75723234673341316375676e616a6f5062486d2f434f6172762b546c792f4430444e7a4f6d4163774e616d37674b5a6e58704f6151685976794268356163354930564834796356533066794d394d382b534773345a666e3631414453367271366a714572414469622f4148412f5675457654505a7853542f485957686e3131615038587035633165356e4a73716d4c4b79357867344b346561677a744238342b79662b532b74633256484b497733306154757a6765627a3039387930764a6650614e704f586d615474547275335774534a74696a304665515636347952366c515233614173797148497259333742306772712f69344970507574455257596765794430413339586e706a3662462f4c367239573330337774574f42446c6155355a5647496c4e6f4f6258382f4745776e584f52584f394a723565366c6a5a457a7458543574347861302b5932587a4e3672456b4859376b725a5a3236536d534b5346544b616133566677454158464b795664476164446b6a33377453654f644e6f313841526246557567734459645a35444479796e67546b4d64724938374f7a354b3454393154494e446e644257737461626e437558714a6b6c2f3170444230306d6b4e4e536a447a6c2f332f4148775452386f2f4644305a39567375755335486758717872344f686f5a494c4b2b5a506c38476c784b6271494e79676b5542735a736f73342f354a7058324a2b62694c626d4858312b787a6a5674583855447a506669503676654965682f72703470366e6562346576712b4d3434614f64527a4c78732f5a316334614a516c79394c496e32436b6b6f53707a4676574876565450794e7a6b4d436b45734876314b326d6d324f4f52364e66522f7933305439553676467173434e77656848714235566d2b5a524635376a6448784f7a7a4478786a436c3865787372794c52622f77426f6d365734703331623545722b74516d4a627a6359467857726173635a3431484f5438397652706e716634747365736e706c4a5074654b2b492b522b555835577755486b33504a504c76486b655744346266672b4e677056736556673439684a4145665a44345a776338697364575a64323062625a32336e74446a4a445448303070623164446949756b70457a796552746d483433476d4a354879566a7056386350545334472f6f772b50336b772b6e397036774f3376344d48364f654b7935476e682b4c7138753877613557743544336479493974574642556447692b55504876734e6f38674b623675727070375943567445472f7161666e5455584c7137725a7a333942565039782f3064394c764476557a45395576526f6c7438453953664736646171504a4b544a794c746a753552447139794d705643483549792b32452b6f61732b702f626a54372f4149326a2f55364e7254585a6565616f35534b7359354667557651592b366d6e6f646e52386e4349766846764f33357641584f4b78706277766b4e6a5341446334534252663176747a32654d446450304a2f42487a50316238555235727462636e706834725a65532b383238375664762b512b50777961566d74357434316a555a50472b5365487054446f63592b597a59644f5541424d626a2b5256623630566d49694e3168365866374848343862506f426f2b7665394c714e38787039555478737a4e33572b4e58523463754a34567075536a6368317274435979683079386b61306c4d4d4f7a2b77773937756931353850745634315064782b45656964664d62487a316f46394950727a626f6d72794d6d6d73744c7466574e6a7274347968716946444a5638367052484d366d593477663746734d65506e387675494e354c4f4d3472755256526e3236657a583232786e377074794d33637a367568454d61377247705965307a48346f356d6b595537784a67612b6d683375735035372f415063653950662f414a702f7a5839637645755a31634d64666c74506b2b49506c4377376163486b66466150626c4b6c54516e517571317442335a337976616c332b6677745035374258366d6a4f375372493533304533684e663043466d514b61457259345849636a69356447663568624f4a304d497672695163574a6658414f653979672f783741757274564368732b727879633466686d466b344b343970636c6b5174635332554f53524c73574b692b482f41426134666b397261463956546c37415845686c4a3858334b3563665458784d31584e53574a644570417a6c43784a3948466949663775632f77447454435566784c574c6b677134487a396b6a4f6d49754378535144762b6d587254644b396e335741776f7946615639474e5467457742704c2b5948657850372b5050382f322b77526176675062786656766d6e656e72676247576c4161445650386c6747746a416e643264692b6d494830364f677232473333384174416a38624f314c373071557336786271543778664f56554c4a4c577a472f76742f395134735873464442392f7a6539514149482f6e583450702b67656b753374673149614c31664a52384a664573347659456458376453756f6564584c39656751506e74363467543876732b586e786372793750585831396753304568784e6e79396b2b7953326532705470776c716a4a396a744a33573539585074526e64376d4b5838587a43616565327a342b643453742b365a414c34583064463350313747726d5831306e58553066424b507a387163764e2b4d6e463963566a336a412f776230423443754b4d6830442f414c513368324d694437537165755453435a45684250327747555246786a75724e5a66374b4a763062506e5362532f39376a3646476638414839505542487378684e396e556d454b6d476e737159346a6e6653626c2f6134386e726a344e48794a5a615878667341482f344a6d43306d7061667756474e505666642f58755455754c3758576d726e4f304449495230674178464f6b75663653396e43497a425037622f6e375069562f543933363852306b2f744f2b72337064364e2f6e4636502b566571506a306e6c324c56545834784c6239544d314f793775714d2f4d5866536d2b477455613437686c3454754c355743306b75482f6437503678396f72652b6c614b78744839436a5038703946664b317a796561654465482b55564f54424e6d376f6f373450655a364f6d6d4c57335a35472b382f483363735a6e2f5755357135366c6531454947795167507873576a705958583466344634524268616e6645726a7759354b35446f787458546674336a52694b63374b5038416c614b4f2f61492f624b44766836416b6d6d55457564336f30663153307a6e694933747a313256615333554e304a6e335352666556585a464654764c355968747935535954426c444a5575656b5a753963347166696c6653312f435473493167593072737a5a6770316d364f526543565734486b3273686d5a562f507877394e64624c38473562733175702f4b413546786354496f756856784c666d2f716b32784f4f37764869322f75346632675055333851764c504966587230686b7538702f46767a58794f6d7956595a613564483066324b72792b584633324b79306c506e3871304c687a364a3079794f51667a6955372f414e696e30765a2f6161366b5253332b62542f634f4e76703336633676717a356e34663448506d72737a3461624c68676d535565745647476e524a3135364653524e792b36536339497365716b2f31306a497248644c33394d323231744d6a31472f69583645656d486b62465468723361564f43304b4d6162562f6c57464b694845646f635a506f4b324a4b5751697a6a6e69385436347a4f6273744243732f6d346457397135774e486637344f35347a366465482b696e6f446b567169325049484f382b387977377272575769764d476a4b7a6458563656445553355a724b706b61454b4256504475346c455947454374665a59746162586a724938327565774472374e474846664c504f7268384e69753841352f706d646930733578696546385066384f6d3042412f2f41474f4d682f727676325a4475336a4b53457a434e6377644f6f6c7a684b4d4957665539706f346b49314d686d5936594f4d345865393936666a635a745477763673482f41416e6b672b7a65776d63512b50347a624c52514166584a4a4c6b5773785a314c533977676f666c39764148736f4542465157663750316b494f4b6566516639744c5034596848742f415149474570704c692f346b526f3675557569787866437a34522f3934416f2f6a396754787833622f706e31674b4b30424e76794f447164436f4757716f676e59645042713636674c4f6d6c6a577262386e777161505066306c6635474c652f7743343474547669413456382f48736e692b77345236444f395a3838307344364154385435673731484a30396f6f59726947487a7048736434707a75394e2f394f5834753136384267356e544e524a665736316f57484d7a327457723471456c4e496d6a68554c2b6e4b4445725552754a664244354441572f34682f57672f566371424879424f7071564b4753656a732b65485072524a5336696c58386456316632446e41684c684e4833436677383630514e79382f3266724962542f5648364a4f467a7971377734656d342b57394e7564504f4e454257722f6444696f49542f665766457471785748772f76707a6144462f56725746724f576c705330474433576c47766d664768314b7061353577483276396f78754870667452396f2f6678695076397a382f77416e332b346538722f336447647a613173693550557848334b424b6967644951627879506b5950774a642f6951745554314f416c4a4258506b44514f457330614c457336347444596d645355367959726a6578733477327034532f656b586661636e67632f2b68773066362f6337674776483450714844483952497638415266592b51445932384c4b5355305462566e6c717274446e73464c33507139776759302b394a544f4a7867524b664839663144706a4b704f5545797235366a6f647875687871327a4e5178567961527135314e49536d56452b65735730413176734d7939332b7459794f547a2b77786d574561394c5151766e61716c4279586a39434e396647317a7a646c376e39646c6937536a4f71647975447876576641412f4341394a78716a6a32664d526b575064513061554d525970526f6e624f74615671617435534b4b6a5349523650375a306b4d563859475a66382b344746374737685367433670637976736f5a7a39495350365a3876746c6d4a32637745504c72562f74627638416b474f4a417670702f667455416b4766377a3134444876467035302b585042674572355a6c7a7650326d484234726a4461505164375a5a78562b2b6762766c616269413274414736444b64314f65703937366c756d6646327063374b6b3039635147514b4d5a69483435364f304652386665643479587444506431786b6c5a5a3533384f6d41794762704b564d6f4b587145464d5536574e79365436585252526445717356644a6e66622f6e376d65775263502f414e443545726e666e2b33324478615358395a55637653714f6e716e4a622f6d766c532f6d5361706853774f44555874634d7775353149416e334158375067672f6a2b6e71414234522b395037456d506f36326a7337524d53374c2f414a387a7271534434675a375345532f5866627a765742304f634d794964424a71713470706b2f536f52387978686d4770505869314b30746e68645a583953786e5675574b352f69616f4f4f344b773937666b344b65352f74505741347030614354786e564f686d64462b32534a6871534c2b4c574d78586d4a5666746e7a5766396459385948514f2b6d66354f754d6b746266687a356a31352f3243303550696e346c657332787a4a687338743952764a74584a7a2f4a2b64546f747776487357496e7146613953354376712f4a2f4949706144776f456f77585377442b6d59656237586d6453736668485862303733797541504872382f5668313831386b6437666c7377766b326f4f357150484e2b504756433855316654686e516879437362534359597557485a617834345872696339306a637a4838746666314d384e7a5435656d343569697431593638343147514a66566d54786c39503572732b63707a46535575396c4b5a6c714e7a774c4f59695978496b38647446426935443356587a6d7a52564c4a546e64526c424a6972794577366b2b7a69746e6c7145714b6c6d784c435564494c47384f76616c7330672f3439662f414363323534587634556476672b394d2f5032764848756a306f4c384c632b777036646e552b4e433070344e5830557053775435536e333055532f396358556d4f2b4a356834572f377033344365556668522b534f396c347541697a30503841557969337958306c386f7464456e467a617930364561766956556d62504b3350756a4a32687849735331725a7246554b54384267354870364774477270356e7456366a6c67375779373667657a512b725a586c4b477a34716550644747526a7a535a2b6938364a56762f366b706144546e5451507a64766d524e50384e4b564c36424a5a5973776f4c656e6e7a4d617072457935347175414658325a3258412b65764b6670494263356b4f61446c642f375a556637484d6136767170415a61433568506b50383331327670535472554b724a547a323644494575412b2f622b7278496b717479484732307761342b3934483254495a7778627a746272786d742b4f73656374586f7a37626239693173794a32306551364f6733504d79396b66326e4c344c43725379594770624b6c4c536d44444e57366b5362734b47446868734b35677778744b5348376b2b6b663132707259466a692b524e694f65336e732b532b6c71414577616651666b6237463237554158637142785564554c6f5777374253327878643053536e426b5266314a3177724470696253726a4e7130716f4d436f44386d726e7a78614536647a68585a2b6a506d717865534a7a77717a52686f7a714a58506b41567a6a624b4b2b695046554b76543731416678555471444f506e666c4e2b6c4b6830764a3435557163567a4c2b5344544331704f464b784b6372435a4850796b654736626b43324735527046526770736162704d79485450533156324e5241702f734f74724b386d656b64616132706562643157675077376e32532f645567652b4c762b674f437830774e386d326c335775703045565a796c5831614f656153587748525666512f68766c544b39454e6a766a6a366b42635a312f576d4d3532504f5a795149316f737239364f7876526b4f3056364e46567744664f624d4f6e794135333379533150564f35384e6c413063706153674d4f6b43757a386741412b3556645365316939446a6f796e4d67433276744b59455a384a6659666a56393163393633664c4839704b4a556748745072454f497531666f515a79303243454a786e38734c344972516d54787132702f53703571367159596b6d70575837663432354b6e7141554e6341652f7744526f3559447a35375670684c78366c553164464f58754e716a67735869553570726a37506b446f536c336d663962533070794e44306534335846544e37544d3161514f4a4a395946353949497a324558476a6d544d3632637039366b6c774a48506a79616c6c6e33635648503742496b726b4b426a5345584c6f2b6d4765497a477469754a4f6a39455776344f664772577870345779794b6c7767465a3657656865503841474a324e5573657a7559354e667434503255444c453537686c69364b3074435a37364e707a56616c70545a696978696662707a3343716c744d45356373715a7136776f416c317062385a396f716e6453485751534a417536586b2b6f756862492b4b7a686b6c544f63396f32654f4a6f584a544a50484a4b537355796d62516963507266722f4f6a39683767764249536a446e317175496c79633771374f5a396b362b5a713648665967307379582b47736961775a5a4573397550504f723431307a675943644d38672b385036726673794c4c7959504a4d745646425a4859385245563879364679782b5071474f5a61416b717a616357685a70734f3559736e702b696d656a2f447331664566435839562f5a2b7367586439334b7256394b335252595754326c754b36336e4d62664b6c465768564a4d57713665524f573963704c46504747347769396e557a4d642b303643444b306a4749716c542f6170445471566932553349467a366c565570757431526c7a574b314d3878476f67444c724e79312f44516c704e544b35415279326d706d33526a6b486b4e6166486157585a7631306e43326a6176756e4666563048704c56446c7855664a4b7a716e6464312f2b356e736e6454774132562f45367a7839666d766b633948525a4e7a786d426e616674632b3355356d557a6d566e3563794e695762515771555354504d7632574b54773379545370434e48395a366d6363504d6534332b33696e4648385a2f54736236394c4d48516a307339676137424f6c464f612b794754715049626142597a4435735233636a3753744c72475153436e37494e6e537a79646638417a62446f376273344857485865314a657a70577739462f5a516a666f69316443593466734377632f69324a5a7a6e374e703842347a3851395848647847476b553667646244707371687365757874796172584c71304765316b6559664d574f686f72546e31457459502f7a346f7946507954544a536b4b526f70566d624e4d6e786244654a4758486a6a6b424865686f557671546e766a62425773615048666a736e4a41676c543430663841496456394e63383176672b76364161652f51436576512b57696e524f44574c4c657650576467326a5573464c6c4e7a6a46792f4973385647317265675442726d596f4a6758374c65373878576d3152354664714577344b4d7a4767564e784f484445327a6a7932394747764e4c7379714676324c716f5849476a323955794f544b71392f764d702f666175336a7444617251323574716b492b2b4f39747855584232364a564931337a353273544c6f4f5a436c7439304c5a31343170302f54704835514474422f6653775a3163626636695136543035734b6447514b59384b756f6d412b6e45305a6c30614c4e6178644c374e2f364c71484a366b6243362b666b31597041424d2f6a614477734150584d716f646c5552794c63724e30704730564c342f643867794c454a334f4c6b464d39486270557a733171474e724832667972766a2b7a47466e77746a68327649473449636271616e736f6a6c3753392b68545848666234356f7a632f693558567368354b763262486b41565a36587776426e4134582b6a67676f6e7a2f7742526264384965667932546e376b707a364766633164435a4575742b456272304d756871737537564c4d7436595a4245695a58503166322b39537078552f3541446d322f6d457777436b7155556b6c416c70686d7a74524b6d784b64524b787a7847743155624b714a364d3862457a7369556779482f414c5270574163612b582b7337397151766f4b75667a755a77302f566b64796464365a566354547975756749386f43613670476c4f72486e7a51584d7155337144337147623553524d4652684c7159684e444c66586b6d326d6c7163766873734a7674674b786b425555524c56316c6a79637a69414167616f495065312f502b656631625a6277442b6b73764c556454394d7261356b66645768387a473372566f615473556c745947537045496a50644d5a4b2b765449446b2f43414b414845787a5738384154623558524a6a685a6b7736306a4b4e5370655a4f6d5a6d692b57726a3667344d6a696431632f7741666a6138666745624a2f77424344766562714a706736325738424c735879507957564a345244324a4b42733539446c6b575a6279486c55382b5251535a724748625944714671377a3758746161652f70724445462f306d49345445384a487733617438376538736e716f7a644156742f6b744c614343796d6e7365566d5542626f4a413558477657636679714e342f4e4148326547526d5231345a38686a4e6b386e53764c664477714a796356613476493933437061514576714c4f3732505356444546326d6f4369595659634a5175343256664a6b754170775a4c37574b73494a4d62794733505a586e64657a6f62504f6373687459327574665a364b41306e4a6677334573793935307646786c7a512f6f47744d364f5030707a70546c2f367379597734634b39755a4b5770437a76324b5a317173665a5a4b53754c614a703537445348546e754d41417a6956797971587154534b452f4943582f414279566a39656e493548434f56666c424e375676455a302f6346372b6d5461532f557251565039616b30384f486744623765314679544b4f596b4e544e486a314977336a507073516b59367175516145496447715a56717a48324d57754d50664e33397059317951774f767078567457732b757066474b71453854526e334e59775965732b3435786435567868664a535155437079594f4e39764f754c33414d4e656e315767356d5a6a587a38644e646b6a494e31414e737a633558745245674c5a50342b67705a785678396e653955795977614467534451414672445a6466725373364c6454544e4578666f2b30554f4a644f7769632b57506e704851636c333352474d53576f314a69414845304b525141504f7a7a746b5139614d6c6a637675665745374c4c7555686f644b45637a556c56705a35636e705974632f7770596b356f7942706a317646683961312b3149504b35466656705a77654f554f6f75706b7876665453774d78744b48783263793674466476662b7832576f5672635a7544346761624a7a4a76316e3144545179716d6839394d6b367574586e6368614b63304b4d6d706d6b794541624f3876384172755a52526631483736347153734a7770436a6830414451683739716c6a4e46304a544774665a7261477071357138634d61756353544c472f774165446f592f693972586662644d6674415538486b3451346d6f61456c77524f726d546431616e46586f61387a5555766865752b647a4c766a7a632b757157425836714c686e774a6a56506e3074653475674f634f624b69686e564a3865324a64686c696d476943336d4c4e70425a6c614b3874693962394f6c595838732b736d6463426643366c33316b732b79475050352f63487339446e546b72747441376a656e6e4c385a6d53574c6e5a78317a4c2b48486872595468686f58475643692b58726d6458395a7a464a57344a4258375568786f646e7a7a447344712b4e304a54456e67633975567555634d633637344f7a61776b6d2f334d715961313047394a3249397a6b74486f4f7146496856796e516d4e644c4a572f48476a734773336d557a4d586c5a50545864625337324a597a4e57734457314648544f4e6a7741584c6f63516153656236576733797654656d776d4c746262334738657a4743626879646246314953484d78325a76746a792b693656793366756c41766d7055326c783843506d3852694d65413853487170383272366e65704e706c4f6d37523956504d504b69564d716930473561664b744b4a4e5a6165744f6f7471637461717831432f5958656e42525362694f6e6b362f54727769496e384956686f6143476879765848537151363565314342636b5130713865322b6c426d6b367448505855794a4c69377745324a4473356e5052462b703669785a4c304c35797278375971772b3230584b466f4356533531614e4d3832595a3545717a565556634c614b654d6a716f6e68347635657a6746435a41426e53325362544c5447716863657778643531366b73487876636d62487447316574315978754646304d37616841694556677567366e6865633568494e7651305a714661514576374b5756736f6f6239742b6e4c4c7a5a6c6f613751524c4b487a55787879324c357a362f4f7739397748396d69634b6567383866626f317970577650725639562f493670713166756b514f2b70394350356a5a6f712b6a7046716665497a4f595361414b43627638417772736748593271304d38585a757032492b7a4e78364a4d59686a78304a314b574f30305366524569733547746269577270703972544434676d506b3953776662656b7935452b6245744d3033524f5032313038304c456645374e766e714e3032776c5339425a5a4d6b70637a4541584a4842395971666e396841335a6175336a6f5a6f354d78397250486c57505644576e363957704b374c39396c675279667838314a4b30484a36365a4e457a6f7a4b50332b2f77423467704635472b505a38627571697377776b696d686454465032683667364137565237733674516e4a396c47684832716d6b466b537161614538496e2b2b6341764e6d7654666877556354326a6462504a516f57707a5a737933374572672b745652563146447061696159704a424e5650747543647952393771675a322b5332527350556f304f48706c5038414e44517956664b4e4f72715a64684d4f57695a3151532b37647154326877564159553030706b4a4d426c5230484157384b594c634a73564b34536b7173656c624e57587947324f4a6c5769516f714c6e4d656a334d79513639614d30704633384a6665544a3430776856566b30552b6c354c4c6b5a394f505839625230653270665a784e5339664c306955696a54493559534e6c31423942664c7548646554452f57792b78685946613261397a61594f5732507379646a4f7073466b737458586472794938583252717a4f724a374d317242772b314d58796c76446d4433706d7a6144572b334a352f59514f6e617937763550764173357276566e667947776b6448733734387557692b722b57343351503769774f724e35567941497746463775724679426a5965776a466d4c586c5a627332675937614a2f6d6e413150744f6f49744478334e30754d4f2b5a6473704d347557656c5335376e4f61546b70543857624f4c727178614a3643466232626b50552f75597a76616535376b354e7375634333547951654d5a7658396d47584c367a556d364e6d577a324a4e627a354d306c63643043343277595555314b4f5348556f7346754c6a366d6b76557a5971563671354d7a37442b66584b3868464e6e475254746f567a76533554742f55412b4a503459515a4c32646c36415a4146535a453646464c6f376e31614d4c724b335a4d3138397373792f6d4c4e437a5363306c72486a535837492b637341564d454d64544b5a6f774339477670756468636972747463636b796f56324e736b73725770387370757165363650765a6d702b527035726f654772337a4567445370324b6b6e3274446342515269756d79527072526f763439386f506c544c4e50787138336857587449436e2b5a61646835304b536b326734474d4f6f33527574412b51364b645075666f3931494c556e314557626b783050625a523361594830312f782f74584b366a39546679553454324942556a524244794671523059417a54546f696c33665a62704a7044526c6b30644857536b4b445349692b3553394a612f3841564e784d42355142372b4b55536636697653506b434b3633387a706863682b78326461583645556d72386731624d377147355468717353737a6c6f7a634e6c7864553335557031615442774c4e7746494130796f4a326338702b366437484849304154544c4c616951632b506e553554484d6650512b6956796d4b6370424d586679594355696866784159757273717868704b54423149557054616d4f68756f6573695256534e684d3836666f496e6c61452b76342b70413934307a50357545716b426546515233626c304b4c65524c512f536e4764724d667633383274594971714567624a627a55734a476754484d2b546a572f7744625a396b6f47574b435252684364714a716f52747251736162467a6b4f696d5a6c646c566b38636658325874667250717163387252623730642b7a4f4b587036414858374a414232456e356149334c626e6e4c4e51694451596c3352653978304d544e4252446e2b33505739633866444767484a584d3332536d316f6778674466334b7873584e4f557766314d6c6f2f413465503972574e43644655434a3239715a3161534e6236445951426d6e774b684d46476f474c4f4a6c68637a2b506c6e706f3149475a644a6d54444a4f69643262756c4e49793571374b5061356933736f456c713661657341524d444143306164646475375a6c7930736a32714d434579566f432b61336e4f43576b7449544d36745a4e5a477454334d6143707873597669794d51486f4a72376c737179415863396f32546a334c6d75304a686f7064477a507034723352546850486e6e59357a6d4137692b744b49584f63446b6c5334464a6e4a765a7039356a4d54517673646b464c72304b706e6d7a797339724c7259514e6c56566446555a4544755642325630774b4e71674e7842496647753550547a69317332687a7466346758327273514d36684970706d5653695a59726f7a77484a7a624b443530752b797872416754396d61786f484d615649704b464e59316762317a544237345952706a5173592f337032795a6665547262536d70656850534467346363616d2f395a51663045396d597168677a3569343647564d66566c47716d4566667735747135594d53435a4670792b6c6f4c636a6739636e324f3658746e4b76765344625438462f7a69325077392f4933465635534e476a3650656f32776564366777625361636f6f464d752b6a483558476a7679446d377933543057642f58796e785141446d2b78592f724c5630766530746a745648745138566e7a504c5a50483958777679782f6b2f6a336b66696c47686b2b5238303633353957445a6a305859577063373437766255367764774155726a2b416678667045544a2b38507a4a69596e456a77572f7742315353444c2f4f76386c475331616151543533436e366c3976427436793345496d636f4b57676c54342f55725433392b384449484b456b2b3456645a3633732b5a30744c79476b336974727172617248464e4f7553474936444a3564556c44714c4b66716f3645667854734854756f64315853594b2b7a6441784d66385036735059642f386e68756e38612f44443172336449704f352f693371515737653653467531666d5354596c6e64433373467a4568426a734763576e39646e776e5269554f39675571396b6e42375a4f645773666c454f2f474848335037716635362b512f6c2f366878523648346a666950754b77765354786e796e45564e347a355a356844646d314f2f6c346747644c4e4139536565366b6659676d42395762737072534d3339547159304e4b4e4f762b5a71646f656a577659426b6d6a5843335737717850304e3132586e625768434d5365676d705262496464774b372f414c4379597050372b62335349564d34567062332b75554137687a65477958546a30653853334b71646a36465a61437472554b6a53716430654945555a374f6555507a56744a5a6a394d4e56733569582b61314278412f7675666b4466364e6668706d656b4f4c666f542b562b7431474c34326146464e396243385238617a4d326e794f4d4e423071486a63513575536642696a4832485959537544356661336f396b30393274756e6a7439663348694d6d6a2b76464d7070462b7571366d546e654850493033496f6638414158532b586c532b304f704c7269576166656c497163507450332b70377a792b3455763452763435683073496e396c6b4272354c38384654495758474f6b3658375350506d576637446f2b3050306f464d614c65713044466c437131754e786f6d6f5a484d7046724852716e34756461594a314b34482b497339724848307750686335474a6a7776387834434b2b4a56536f6d74504d35786f39537968792b305a37696d35337257723548776953315a4f4e686358386650384f7150704677697238506a77475274464e514d6d5575766e42587962696c6a5632744b6150726936555a56642b4f687a6865446c39396976596e326539676b48766644394137617061356941784676425131587a5364643155396972424958664550753675686a49574e3738524148524d776d494748305373506c4d706f3452714c6a4563644b695a6f794951356e597858314c4a6e4856316e32754c596e76663841323834482f774148762f30545458665878474c54564d6c66314b686f4867664b786e736d5a456b316a4f6337484f5158444a492f47585031785a7145365354316675502f4144722f41422f54314159424d34657353505a3054302f7546534f565645722f414a414b41527a3561766b2b7564446d6676764335786841305062376749503630483339737070717557457150643259357545466c437865425339454461377265756f5737322b2f6e663841635a586b5a6670522b332b6f32786a6233422f325671337a4e53637358533737466b724d486a6d4d4f684974425a6a2f414d31434537303859457a444c2f733944336d5a65776f33593758435276352f6249797838692f4d7a302f4253314375414e6873797851785537767359326c496c4945705a646470463870634d312b3836522b62354163726a4639783134696d6a6276487369696d2b6933436d307369474b764c795438732b4b5072704976495469707a38703755305a4b32756a2f5a5a3232433535374139794e49614f6a5578495356656547323558716a532f516b577747306e516c6d745442737a7958756c3274574375655a546c72613678766b56663841366769686f474b6b386d733468726f394163395076473666345a2b70454b4d46766731646270744257706f582b4f535851616563692f506a356e72487947454756492b766b7a4a5a495054714d6c6c314c556c4733704a2b7a6e71316d5a7a456a5a6176792f49774f62664a7479703364463333706339564f313864665a7858644870496f6c6f6d415863306868453069305538363433502f6149357157563256384251766d2f6e554946536e54796175646e3063647834646b6e645369654f4f624e31304337714b5069474e3745774c6c447057424d3678513056724272486631596562582b38522b53352b4a656d50505436514e444838693831767a746a43716a3552433142536b7a635674747343684c527152554f684a3371334e4133306b6569796e35706a3532657a6157625a37366a7a79357635712f6c504c725a706836322b57576247666e616b6d585872575161776c6d5859306559535846664f664b6e446b78726d3456536a6348456e7a68414c57384474397a70597a74456f522b655835547138542f2b6250523955585a6e68587a37506534636e6958695978312f7a6c4f6852766d464959594e6a6c6f734b70624241694d6d557234336a70353170565833576c6e644665635a582f6e442b5731742f6b567572367536626e2b594c784662784b386238566d5671792b4a42566c654a316161715965732b624f7a57564a683577564d6e492f702b2f3477415265363073544e61396b4b356e35302f6d506e4e336a7a667944382b7a4b2f4f386f6647764b726f4d2f78324875743431526a466835455652637a5a76635059532b474e665153364d444a4b6d65776c69365a30744c2f414b6465555539367765722f414b6a657174554768366e656f336b506e5733343569686a5a4c4e7a737a4b73564d2b61365a475447794e50457a78706e586e705067394e4c7555705837714448767474536b566e6c727439665155703030544f50526d4b6f306b6d7274532b48376571656a713470757a6e577667437a684c6e5950566b56416b34566334304f382b6132642f4447412f7a31503841686f7a575053444f2f4335306c5077536430654a55504b353268507775722f794a42732b78786f4f6f6d4544353372444d31343657676651655a726f5232503637455564506e513469342b4c6d367838714a73796f584133325368556a725136616c74447632432f5263482b6e352f743967336243795a4d33534656716e634e665153326e684a5677456673526b5039394f67684565713777512b45306d4c57482b2b4e546f4254754437434d696834544579754d756758553848686b716f6b6a4b767179634e6c7953496547416d2b443945746e666148413738382f736f2b582b725070643476366b2f6a723669707279664b66465974522b5435524e6250714d3874364b33486a5a46793874585072386a356f45704874545954345030326367494b4838482b4b6974707271567a74444f762b776a2b575570747033664c664137496f507339747367316261716f776875636a586470696c692b5a395847772f364148725a374a6941343779536976367a2f4142656e33554232502b782f354d726d6654355636315242587279313055654f35766a47684a6f6f4c4c6f6f3479753272706e2f41424b56357262425366316e574b62477336556e376953755038565875726d66586c496f33312f2f41416139432f5144302b386f3071746a796d337954476d767a79757569696f673274437337447862574a627158397934796c536e6a2f6b563959626245675479354e373662303162336e77484771747169484970713577625257744e485574596b5a56653542544b367a396b6161474a6f714e6873372b3273426e7942332f4d78366f363377473353363075383448556d70395266453334666c506873637a733569786636625174697848764439776d587872595045734834376a49466f3431716a454955392b72305461386e66384170612b755366654153577455776939773841435633686e37423537762f65474448714d435a4e4558516d734a72375265326f42486a4b6a34432f6848327568354f6b65732f5a66767047424752462b2f66585a587743676950796b594c74736c6e73516f4a482b787a5a6f6e702b4e6e47396a4867736f4679552f414b7749424b5038415a6759663679734d356c635566436e5a2b75746c4676655554716a563269646b372b66572b7a2b2f6b54306c7a75397175415a6759663841507a64354f414c7146733848595743446e4135792b6a375641612f2b725169695773334348497857366e2f34706b5a4b3643544568537343355845544d577a77487730397036542b424662783766734c5678553635576452787a4b4a303951536d722f516b347941652b31337634597362777a2b657763564d4957755a796a6e326550596f6c6c564d787a4575545778363653345850642b69496d4d3477672b552f617470753936334a424e6e45556d35643766694f554a52556c6f50573671655a4b3666615a2f49494a30435756536e753644505930794833676f69506b64334c674c34326d2f4932496468636645444432656c66655472595a6e4173332f4141586344396c37714a5259732f38416b67464e61774c70435a2b2b4a72793759477a666c667279706b4e4a34764c6f3774475650645370504679705272664533547a6a6a7a6b7a353652634e424f61426454787679756437447042627636796974752f6a3968522b5551374737506f65564d30714950626e55367938323163646e6339386335554244657a4e624e2f4d4e466f2f57616654487378695351595a4c4172577845625946312b745072444435786c2b4d656e33682f674f5a36632b6b6e6750794434683431342b447733396439436c3539506b336c666b696c39507a4c79412f6e4a6c50366370596b4444536d52626d304f7257753264307a75745956475a537a4a766f6e68626f577a73354b7a557543756d7a4f474e5a4c65432b546579622b5357345855437476526e3737774c6a6a443338434143496c32427a362f5530436c52457468736f3461705a542b776846684336744e57676c374351412f763364436d645879676c4a682f55392f4e6b50517a35694854456a6e66544b7349366d61565a74614a314b757a54355873555666526a392f2f644d6c74535269365a50375a377836332b70352f5037676475797156772f6c726959356339455a614275652b6d486976644f734e45597673433455352f334a2b4a346269425579575047593342502f4146616e654a75667079564f48783369727562644e6a55745a4f4d7251523861355a6266596b56467848746f534c6a5366466970773642415a683861515a58644f364a6e7546596a6c557135486e44505779696834384b6457505866535846744c764b5566433065464b686631554d393631743537503841425843443268726d4d627534585834622b4c5835452b6f55694e6277503063382b38676d754c335276546d6d4d6a2b4d30556831724e5537754b72636272452f4b496770496d6e35544432543047724b64536c6546375634414635622b50587258366354705835583656655a34626442334553323938636f2b693335466b3165666d326d4a6859783330692b515139727668537870664b4c43562f534c317678692f443134436f6b7a73567731573330436c50666874695567775a4b3143505a5353707755503133434a56437239722f4147587336524d44356661657664793443444b4243676b726f427655394952397679765451426e524966523551703573397866585a374f71495059485748386c482f756b5a4a512f67664c52504f4c536630615059356441554230474e354f36556d6649355972352f6730766e2f38415a2b7836774435777137362b497a48694a5a46636e545830435139745866626e556d43545936477349414a7746442f2b4844306845792f7734346573345076434d5a74696537702f634b6b632f77416e757437585375676865555a4f4f5a624663477169636d784f6a615a434536357949773450412b662f414934372f77427639573775584136616632685a597454382b66523137723663334e79333055466649784a66394e63624a572f584c526e42526f456973393344416c4f50337a4d5739396e36506d39703564476139636a2b6739366335754478374630355776512b6d42584e4b706658797936304f537257393776486967534e504b50396a75557252542b2b456e6e4774412b66576f38696339774a2b57625576694f4464723357616447566b517a787a5545364e70554e307055724e575479624e4a6c444f517a734a5766464f594a6362654b596a37424f6e5a69637831774e424e78392f6b327073313746444a326d4f48797871696a3164566849566f62447648302f7741666f417650715464645151456c787655734f65366959462b39566f6e45354561474b5049494e5141324e685044323969727650494430494273756334696f63374e4b50734c4745525774523372525135774e567a356a66306e47302b5970337a33797a783330693848335055587a6e597a4d6e302f786d494b752f526a3864734c485652504c66647a77392b6e55785972346d4e686d324279674373776279487141704f58577562547369655965637a38395037716a6655526250536a38616c6133672f68552f54587465636366626937486d4c426a324a2f6434376d4b30424c785042625a75624347544652565232663634485a384b556a4e32364873387878767a4469656c446666794e717863777a46667456576977657a457a326832436350302f6e7846375763627a766663502b5a6d726f6d663841585a7737586b456b534238384b7861785061477a66586c5678665839554a4c544f554131454856314532576f2b745a7a347835542b772f5a4d2f6259336375344671514c52352b6e464c6c553047454d73504639532b687a6d4d7243467a614a51636c6178646e6833767536316e32514e6f4542384d4b396a7a7945654a7134794a666166686c5148743762476d72356d4c4b32776737397030724f7346625038524a764445536d2b496166594a742f72514f6e695571332f726e76555463756732796945745252706d736c72626d6d4d2f666c597a3452655642634434546d416e2f347450684276422b445835782b526669443572526c366e4865562b6a506d6c57417a792f78614767414743664d595a35766b336a79396d4e344d314d35656c724b4f5a3374375549484f626b394948427a61756c477058645874443153656d48724a3664666b5a345a443570365965625a323534746f6c666a5546706a49796e42796c335a71475932314464386a4a396f4e37556e576c7147635379444843766e794f4f774665666573306e4530463635576a6a3244736b4456362b42444f576e37304675507631322b5179626a386a4d6667366444316153516e79777253746a46476d77506d6d633579676c5849744f43617662386942766a3037517a63534f7442356932313830386d4b542b566e6e787174524155706f596d70644574503637314c4a676e5477306d624570796d4a69735250694847373448342f3574674634333551762b4e7a5939624f6f79616f395448784f4b3474713770686c5464396c57686e6b52462b6e45777758526a7472424b6d7a737137574a6d7335676241656c2b436a566778636638416c4b3943466132484c704e734b545a30354d713363536a4c5244666354584433575873554c53336b33444b4f643742397148634f737a45526d52632b63473950584a566e30616b7562564e6c7534336777386e2b6d7a4d6c47334c526c7a615250644b7a4a646c6f4874542f414a5061346752373346524754686a79453835354641616c2f667a7564304f6d546c53313749346a3176355259764636687356517a55334e6a79634764687549306b4f6279666c444b532b756d4d572f46396877742f76433564702f6a6e58626e522f4e412f57776f66355451716a2b736e4b6d4a3146756b534c36465379544d7a616f5872363531687a707a5370634669726a625a31657a7a692f7a486e693966384178614c56394949356379584f355641727567316b47526f702b484c356e664839686e465a314a46434470664a47544855564a506c413254737a47456f712b756b3474414166687036504436595976692f7173666d654546336e366e354d2f6a6d7132714779627858446c5a702b5748385755544439715538492b384c726d634c3431534a706255546b32317262726266776a754e347435763439353632587762526a5a56733062586466772b4b50566f615956577a342b7733656f646d364141497a3044484d6b3139424c5a4d30526d64576b3361632f484e5a6a72412b65724868336e486965647165507936656b486c7a73394c7779387442592b6839704d7a676f6e54526a36426875522f477236673852386873676a704f62374538364f75566d4a784d396b624c542b6c5871686b6569476a3544682b71763837794c784562634c4c526e356f352f62497331795678584b66696f455258522f497638416c4559545934304a6c614a5730746d70757275784e636a772b65726e6e766d58715235723544354836692b52572b532b533237563674485733476b53356b52554f3672506a6b374778544d57516b4d41426e3670526f6633676b6c66765950715572574978485556715533776d3656514c6f6b6e5438773275343958366e4c33554c5a7a694a5574765a326874453571495763496661612b65785a6e2f5777616a575066727938343269706b38536c6a6352564431564759376b2f59774a77634758322b376e4f2b3057712b2b5271414239382f61374b2b41613962517a706b787659716f506c743779694d41367a6f5470567a676d30566b58484577656d4169594f3433336d4141776c6a595a2f6f66643142636153567473503273596c6754664633356b3849522f524c4531732b4e6a4c4f463850444472552b774f442f41454763302f5545315a66706957676879704a77545768374a45756c4269725a71416c6f534b33564777754f2f536a535a467a2f414673482b7132374d6a4f6b6c6457435354504b544b6e634565382b5943347355726f47707744386f7045457973627867702f2b70412f6b35372f6172325945723857386f386f394e392b54796a78586532504464644772397646386877763348717245776e66776132724654536c596e3543706b61417a4f45443531514c494f484531693163547a44632f4a2f75622f6c766b4635466a62336e38666c305630444a695835506b79666569636c3177704a47772f7743462f77426766354a676d78784f367a7131482b30306531705a546f61646f34563269743944382f6679307638417431463678372b504d396476305a4d756650576d4c6e536c4d71384a647953706e58376859306e433033382f39342b33696c384733754e4c384933642f7438666e37712b422b7452623372787661586e2b2f3667303565482f7743613775762f4143465869476133627a624e7a516f69366e7136735533542f756d556c2f4d376f642b675833416845734e6252696162615274725565787933387350785975783858315838546a384e3272474d6b796f61637334394857773868554f62592f51596253636e36635536335456304f486b676e2f6b366d514f6d31766e65377645375a34794f435035512f6b42722f6b6a36365a6e715a71343574515138687838483438625a616d794e4b333336557751616779305a746266356b2b472f77427947754d6b2b2f4e58462f7436744f6e75366259454977794856646e53616e593039334a71506a79755a2b674b382f44782b3537566e6e514a6f736b49514a4a45544a6d724a707a4179416a593242536258374d69412b71587066752b6c373576556630617538707a78384c7875342b7a4b7a354b4c5a636656725a484b764958624f6764444e53747a67537535592f445a6f4f6374644b2f69482b7072614c634c6462415036632f6c7a7336486d3368666c6576636445666a586b6d48724c712b71646532334569704c4a716278574856395861646f30547037513544454b594275635332324f6a414a7670784552455350515a36552f6b586e65565a53744c777a7a464f2f432b4e6c6b4136756f3577595530556b737730624a687366576a49576679424d4d7764594e2f456930352f6d574a384e71576a72586849324738553955614e3778375032345730614776544862774770576874654c696c4f566b2b6e4132444c474e4f4f6b566177353059576455564e5367447261457070434a6a45343841526b38716d3868316e4d386138743142336e36415a4c6f466164335a4b64466e6b4730723749746e6f5969642f31532b326f455354664b466e4a59577638412b73665946512b7676354c2b726e6f50527a503877387838577a50486f556550396635587436595a2b5a6c616a72632f4c584248354d3778396f4f775a49334a63544f534f2b53684e412b77354c46734731644f743534527a446b322f77442b556865442b4f6557576545562b4a2b54374f586e6963582f414a72344c626e792b5061677a316663705a6e53474a4f6c6e655366674f3138744f68384c6848346565776a7336763846613163377343776642762f414a517a2b4d2f6a79386e72744831426f6f537a4b4c58653778537571514b78716e726f6f436162633973734a576647526850465637487a556344744c457871436b2b78366b394969666d4c5231663768503841625038417a685864345036317539436444774879642b58587663386b38666738583875796c4e6b7165476e3437354f6e5052706a725a31753163534c50686d4d4f685454536b5a67434d4b2b353139484d30336268347350574c4a384877505644314954365a37502f6b5070356a2b63624d766857716a6a6b31615069326272314a7861394850557a7138306d5a6270316d4666414f66746e654f3530334d346671557a4e6178614f62614b6e565551557146617a7141314a2b565048685361776e664f626151704d685863585343726e74343733443335756538513470716451532b4a31445356564d4b774143357833416e37774670644f7458616150637862682b34776563537766667a324d2b663938344a426e2b663766595a676b67695758774c616c72792b35597549477159776c5645712f367a69393169516e627a6e654c49666c5a654b7a496e2b7a3558377a3134426b6a33725034656e4f78434246664a52366e3634414c4a7a577356752f58754932666358776c306d587a65345062386e506c505150324c4e61346f30393669642f436441427943747a726247457844686149714433443863717563424b77593259312f2f454167344250764b426367473145682f42525232746661554d4e6c736277553353633559717a352f615332664550744e3358436654575a67483963346e666f6c36683666704c366e2b4565625a70466c38386530732f2b564a564d3642757a6e484f4e4b2f59704a506e4834355933646550657557324e597652396a347664653852657434384237582f5450513856362f48706d4d6269422b5a714b755a3545636b4f764a716d7936446b777261326147654f52707061357766746c4b546a6e6f583044533779725a787747793369506b744675672b414a614d756a4a637250794b413163344e5046536f6453544e6e5471502b6f722b4237745236584732794a556d684c6b697833456643523532727478787a6b4f3950794253493273673062717a69564a48323654744575666e2f7741566a5a627371524b74616f777a6469373569347974353070617931727a4a4669352b4532573842786c2f4d727a5a2f71503544346a3663517338615a70592b744e72734949394a715759303869353153335a5656533534506a755a2f494d58552b64304a3676457443703376596e71306f32526b61577966684267657165486254354a67466e79304a63764d594748384655614c644e637964697279526d39515a52794c3074414f67326a6743655932616734682b49683139394e5a3878524b2f375564442f4b4f593270366a624f646d754c72592b5077586e5667353149357134656154445935455a555730457276476c31594e54524d314b446e423339582f414d54694d785467436d782f61453174576a4c7a2f542f31615462586f6b69684e666b4f555a4c646c637254504c5a775a574b34786e78584d5a317a65706d6e346241747056326d6234346a3271493432726b5a742f7378657359536f504739515044396d5a6a4f4d2b796c6447666a7a54734b755835645372584557354a667a7936415037694671564b743150384132354a3348492f784d6667414566374d33354176566a32383836394e425472506c544d30614b72315432366b5a614d6157396b796564364b70355742617735564f6c634267496e30515852622f45302f44622b662f49746a774c2b79543667364e37492f4c76506156784e586e5059724438576466613871796a59794b395236433145534c45613350624c53522b333247354539436e41464c65315a6a685564482f78792f73362b6876672b376c3137534665712f6b79625a52664871555555593964496a6d357153355a41794f56713231564c61487930675467645277672b643061714f652f744e356a45524e523351394d2f782b3866384c7a5634766a47666835345163785a6330744c4a7a32456d2b795570317375396d66544e6f436c79386e50597872476b6466564454534c5a4667664e61307a6d62534c63772f44315343356c69735354694f35485a38746d49314768546e4661734278715a365741615a32555478544d6251796c786b592f4f71663434435641547258446b513062682f425a53696c4f4d7a4d64554e527a5677612b61584a687552576e6e3870537957552b4743374e424e6d664d46784250373269454376336159704b72637939764d3243526a752b51464c4c61583667366e79756c6c556b7565707a6c6c6e30516967526d59662b624c5a33657733543242725a3669657069636d4463546e5571707031316165317164736f624665554b77306e616d5a674a71584f6c496a42445144684835697343626b37717149597a6279316135347a30486e492f4e507a76513955764a6358776a5053614e37555a464c5278576d2b304a7337514b796a7948556a6b705968382b617971365873526e797479574a41463070596631707537536a6245326b59666a6a2b4f2f2f414937345a73506b466638414c7a71485631624b4c76714d374c5136717166794c4d49545a7a794c484750427837572f457076546d2f374d3661516437715672784e6f6764722f786f395335504c76464d7677536257732f6e50454c585932674f7978654670645651432b4a796935567250466d4f43395a784c62796449417278756d7639506947787175585772696433694e376644307a2b5355667432357a683475626d7a624d6a4a3335383145756a537464434a4f665463454749656b324e3379556c612b6c576548776a4d3036524c486f4c426c74304950466f462b524a793330486c677576354c557a7169546a66786164426446645646454e6c4331685541523649306d6e373478322f71647853716649636566377a757745663841626a39614d4762506a7a5a642f77425a765358794c506658444c62586f767030536678614835384a4b47487566477757416a76446e6f77576b3168744a5a42302b79522b33725068577738545462426b696431544c336e7833565555495a7a736f6b70374f4e4e4e42732f3030456c786b4c5069397768376c43596b445068396358783658666b70367a656b5473366277503141336f733342302f2f4143484d384d75756c386d384d6b33724a426c7232752b493771585a64315856546e79675753464d354c7146753538444f542f316a656b573630473250342f663344504e7653724d616c6e6730377448766a336b4f5868377667666b6476684632664a354473467133633869776b7a6e6b65595473307448575837657a53554b52534b416f4661594a7a7a766f78623478552b31742f68373576755a33472b6c7671783654333653614c504b39504938717a2f4d6c32616c5831787430302b5061576278693854756750486643736a465957555441734442624a726674596a6a614c4351666a442b51325a36422b58366b6e382b5633696e645874506a666b374d37717034725631546c6e65564a796135554e4a6e497930476c4c79632b704f7a2f6a7276334d32656d7054336b666d4366716e34642b53487243474c35682f383150724e5836642b5250646f656c3546344435416a48333436622f414c394d3368626d357459624175645a47704c55315543354c5059783332514d6162566d6c654736753734755958662b49333458595772762b6d472f36395a6e6b2b586e2b59552b5935312f706874654f2b577862476a466874754150493833555574513266477a46723779587055385a374b65664e4f43707a355855316259744650395136784e304e4d704d66782f7733302f38743838693858386e5a346e2b50556c506c32686d6c356436577a7a7875334d54776658563476392b684d6335554f4c74444c587a74324f536a506563344b7a656268484762625a2b4c2b49645476376565706e4f772f4c79394f3664784869666a57336c6547322b6d5769767a356d743442324b6e5371426230655536584b4a4e784c4c3254395479576a70304249544f6a5930484f3539624f61352b4c3475484d4f70654e35445854476972496e30714d756a735535526a66755749374a42525376547a35797059376b75574135374663534e596d616330676d6a50512b59447a455638706d58586d77542b51555a35445a6a4b545675562b4f6f7972364d794b49756978656f2b4f626d6135646d314371664c6d635537546d4d2b325447625538664965542f774476312f6a2f414c7458714a36652b7633676e69506b7572366563384d6f3861382b33636948627564343335616c6b326c6a6330754b4b6763465a4a316f2f72482b326e524d366a717a6f4a4d31466e64374a654969314a3758722b51387a764855306a3869355935715255685575657635574a446c4845386c4e726148632b4f7269567341757361626d464e51663634496531336f636e6c3967366544686b6d4c347574343559664655776b4259454b4b4765314e437972594d5963476572345446715574396e506d41424177375839353638422b304a626c44524b4978745447384b564d546d73597445346f6c726b6c6f366f542b5a4c4b474d413164576641396e54663166414152524e6337756b6873432b63517959422b7439617076475555686349777562563741766c624d6c6e386a554c6b364355474851663179532f354b63516e552f503976734d32646c4b54505370516b74774c6178616c337636313737766a454a5a714764344b324c753666476b54506c436e2f34594573707730436d624d79695370686c557830725a3554435851564d787431504b487938786955584a6f563858445038417350615a46317872542b324c536b4d395475483450655643633661706a4b4b7049362f6b6e53336d6768564566326c63716f6d2f6148454642664b6f7632426d4469497a457a2b4472382f322b7766685571754a716530496e70397279592f32534f7a2f4148703751637a2b6d4443367a397773582b6a65582b326a5634446a4d6d675956374e76484161756c42517a445748564954525a2b32714e3675754756724f537336714364494d453344375663627a74626a2f31427a34415559572f672b767151316d7242765564374f787054697a7165304231692b4f7361584b767448376e6441524b2b566677646c373758324e6148663177795051666b71367173572f43394f6776686e62705263447259333347303149433033415066326b76317a7646556d435436482b33394541352f752f586947386e7475564e496a377a7566384151704d424b6e32396b48713550613035366a6149684f4e6a476d7062566e38682b304546372f3037486e6e364338667875395173373050396376544c31684c78772f4e4b6644664e45504c784f4377494a4b6e713563706157616b4b576838664a374a666237564b4d506d4469685a384c302f31572b625574584f336750364c632f6d6e664b735078487962795477613242486d324a347a7635562f5a6f3546352f50493877584b6466712b5039655246305670374769583550334e5379354b682b4d54643473384a786b53374c796e6550347554712b432b54362b436e6a6372524c486d426d6c576447465a7453584c586e48396343634f3057664378314e48416d3934645a3372573853714a6e5057763841542b3469513761586554584e67306f4d5647642f476155386d62497a4a42756a6d356a58735579576556527a736c6c7650356b48542f7a52716c4a3877664d7733794c523861386b386e54466c364631632b54437057486e36413653795238684e766e6f736e6b6671786e4a4d376c546e564d4450436c30796f30682f6833347070417532335738503831385a336643764a2f477648664a7654377a4751636664773773485164683235576e56374e524a34397468537a334d7957546e78564a4a5731645539504f482f325750706a45356a745648676e2f4144542f41425138692f747666334348654b7976545a364f2b5758723366544c5866452f587a6f764576497849582b50614b646a51414364494c6d54646156674543414d6b552b342b754c31644c5572726147593764656f3732666a68526935336f6834703552685245374e336c5245363733513535792f736171487a7266725130457a464453535662612b4e6d2b6f794f6f36374d34314a564679616e4855694a3965734479712f7742796a316b3076573738792f565879612f5379396d667857786668474f3870627567724f78646879766e5a474f59492f48323754452b69514637533152616b6e474c6d6631364f684875394b735947694b6e744f544f346a5072654436466e326e2f414f6d506576704d53487658784a3971493532554438686b422f7347712f58797943774e50336e727744536b667272617633754b6d515549584e4f73754533745a64716f585a4b4a44314d354e47586e51366a702b2f32753653586639666d672b2f48384846755637757544714f57485351746e6d6f623268796176727436785a516754693462572f4c372f414c2f7a422b71666d4171384c523542385050314b69437370596d63736c734f4c366271656d53666a424d7a2b48372b732f374645353855417545786348414165653858562b4c64574d68464c45444e515151544b4e592b307150666361576b71796a6c4c3670394b63434f63786f54773139575844626c2f4d37322f4773663630433731554745675071363259365a327a756d5638376b7a7a5669726c3266544b72324d594b59562f766739346665475a6d594373766148784a35355570564b7652506b3446325a6a71534b526f6f6d503841334530376a397565645678634552366636463148786635502f61632f326e72416175376451533270344465504f617a35344b6668506f5474716d466179477a71466c316479772f582b5a6d324d7663587a43385036304474504170467a6d4a2b64437a4e6e61714b4f76552b693653635454436c4f6877685966746f4d79363450596c4274467648632b4e774d474b5465754c7131724171556470596379724f54796c4c3166567a6768376939772f342b775255763942314a6c2f79422b3941467077506f315543312f756f3539636d43447165753655744662712b583175575573726d4f583065744e6e73363776502b4b412f7a7a7633426e7972546361725645576975646233564f63356969617876584c58536e70554c49562b374c573050697044356767456661507344325479396a312f37446d563137466d41644536364336797573696c3650774d693669687a47564637544c7453534e5a7039344b536151446a657555762b72682b756a545632395a4d65354355766158626c41376b37362b43325142686f534c4579437463667a7451523861756c76524276334a76666e2b7a395a4442703057767a75535635702f444a5038367a3652556d77666259664b37726f2b726534584f5a32594463487363482f77672f77543132505049484a4a393872662b4b5170304841544b486d30506a5a2f3135754a736172323939344555314b2f634865694e464c5442697745333234566a7944734d6d6b692b46624a7a64514e494b574d465866326d61747646636278435843502b53533970634d5245334a596676503347757676504966726a416b6a4f37512b717146584270562f482f794537503233346b485151696f53583163394865463050387a2b4d6e4d363477642f54543777322b394d542b4778583169375950654a6e734357694e50514a4c46396368616745763841614a64554c45386152732f5942336e55693933352f596665505a376a557a73773957435a6f5872744c6b766550366c726a5655546d4c4e69557551786a4149562b342f6d7134625865303942697732304c763841726c55304631384547564a59706b6965664938614f63544b4b3676314838694f633673505a382f4f67507436485a776348795370765a6f353566734543324a6a5a4a4b76726162317a314e5a53755451617a34566b4d596949427a6a542f35456564482f4143426952664478676850556b586457386764516f705a365a373241796c644b324a4530432b656f6543377151596154595458476b7575444b345934703656752b5a2f4b5656464f6b6672394171334b6e44707272355230316c37677339346b48476c313377395348652f482f56617a4d385a36442b684a2f624e39495765686e344e656a506a4b6f4864387a307643793872306d53655248557937794479613744724e4455313561366e546d78336a615068355237667242796b536d684e4d78654a7257336174702b45586e366e2b6e4c7573663552346e2f474c6f33782f6935484c6b5a43797962656f4c5650444244574b736c6c526d5a3267734d72736a4e4137435a57682f5430553854465a6a705053524b6653663149505479394c4e6f2b447836764d7941704d484a30636d2b61635a4b7066476c395147543962356c456c387247673959787a306774723743397632617a48574a47774474694c51704c4a70716470342f5a714a5a7058554f6d545153496f795252547055504e7457435761374c353161754778776170454a6653393672676b475a4c6f354f4e5072457954454370683161466d674c316173675a534c6c5362576e4c7575376f3645666378626d4954574c6e46526d2b3562456d6a4c425472356a57442b34462b4d47562b616634542b6f336f2f68416b2f4b4d74522b6f50704c73627a547979707638627364624c504c66716b62552f6338585a35466b726c48737766352f57643371484a352f55364f70476c7131745038414459667a3739523278507a667739534555576f76527a616b324a33706e7839475775365a2f48615630644865792f4c4c5077656935564e4a7a484f5a414a796b5872694c7030332f4142445775702b744b625161484e4b6f6b6f536d6d555736544262317a4a3642436866796e3852383937506c5a6e6349674c7151495a3952416641532b346c754c5752584c70544f473269633059316e42477578504f55664a437050654e4a7178352f4a49545638414d4578427651326a345855616c3146446d3652625263687443506b33465172707153754d6d4a6e485145696e6e36552f7743714739733967436f416e2f6f4a6f4a4b7657397a354272474f73757267746e6971587952613178535743696c4b515442314e445554756f6d67644933534245487a4a2b3337516264664c6e6f695a52534f54335359364f754753624a304c4a7371356b746e334936306b7553684970464b6a4e43767341656d67454a4e4a7a6d7747732b753664355a376c5643734b63787a71726378447a6c6d434e793943554d6153646f7271655774444e796c76545931566970756e374f706b6f42612b6146303153646830334b4f315a4e52744c69364857767973657a755a794458696f72586f536a6e4f6f594c533537316d662b4c366579414467474e362f4e5971626c42796f632b64715152524854506e5335732f4f7961332b77707863766a6b70567852665239364a754c4a787273443367724f3336754d3672576c66303346502b78714e6a763475662b51596c6b2b57353374613334343941536f3936334c6139502f78536f6f544d6b4d6e626e334f526e6d48712f597337316c3435767a4332754e4b3868545a33756d3967325a5050342f515944434e724f4f414666596a4372396b44676e5977473266733031456a465144726d536334534e5531633947726f792f42395a55776f2f33496166452b787972456e39772f6150466735792f6b566f795159724f363974435754574b6e7152333636366236706c2f5737597951626d4d585a6c6e77784c32454e4c4864636c5050642f51456e727a7262386e424f43596243314556523575566e3665635533506a4a504a4f39707242767a476c4f4b51725a7a344b776336384f72615a4a41484a3973706a796444734d2b667a744d37724e746b374a5a776c54663841525670317459716470584a5a5577364f544f6f2f637330316470716f416a53443067472f36764c61553748626a626b396d7a394548717147393639484675694a636467532f706270513671496751356f437979683050792b3447564d434c704b744f664d7a6e707a355a2b2b2f753147374b61627674576a483971366f787a3344416e4c594842564e2f373164482f742f7743746f50346e58554d6a426f6a5061796d64584c4d366d786e326c5138636e2b4e4c7170782b6d4b55694c6573455a6c63706a616d6e3553724f59776c4f645a7a447a693545576a6a794a4673656a6b2f79426a61685261756f7771365a783437346649724b4535346f3557797633686c66366a6f6650337639424a662f414436366e527836376d587368527867324b45563754325533337564506b4972746c6c4b7850744461514d3655693444782b397059466168474f75797667436f2b58664678585a63615044474b664e6966723149577531664e6e4f2f68574a72563235364d396c4c467975343441503748776d7437302b357a53624b2b41416169492b71697a383753356c777478615a36477953467a6b722b54773253504c71382f73724d6c734d7565315255474c2f414a48664d704664566364423246615646586e375833746d32754f7845375a5853616b69645a6c6467667955634f6447484c6d6373304b506b304f443230334f6e2f7a4e686931767938445a62384f4e66484c315a546c725563614e487834382b585a34354c7476755652587254747935316a6d385136454e72447257484b56794e70656c56663346752f37785a36756476416533722b334a766164766f4e34573643367a546f59586c4d675079504b7a50516e646f5853397a4539477a50435a4e552b65754e51505175644a7073757358307070414f7a7939657562336e77485238304e4c47456e7a6c5a523944726e4d636d594946683137436d7a307a5a6b763771315075466e314558654a373871542b4577366b302f774263346a32394b754f366a52777449744b52363536716d71736766384c5a2f6f6378377542475845576579584a78616d47734f47413652386352744e4d64647668342b504439666f4b375863796e7947755853704369312b644e6278374a71454e6a632f5857695052305663637853616b32505a30484679754e507a6538692f334663647032374a7744553377737a353832636e30615430493074465356385075564c4c5239597a776e614a445671537673576e6a502b6938584c6a614446676267414b63653135694950785a61395737547153563165754459522b68626a7a38532b625354627637544776596b4a59564d6e3439777967767446396476796a544a51716e742f65655146736364465545336a5367386449564d6e6a7935616c45394268324e63457a613663784a5a4f677565536463375764614b655868376b31756d39733974756531786b43434466717066376d47616d647a6d7a58654c2b535a73743058586659355269504375676c4b336f632b6433463147304a666c772b6b4a3865366d5962427635477256484877623935466a795a595a6b6d6e3951582f414d646a2b5253614252727a5773613248506d6e79352b4336637861596749646d6278492f5470474e3037656e36695573736b7a566f58692b785431546a6b6145555649535a4c6d3162656c627963584f573869736f73753142536b4a6571446b6265674a636e3969592f6a2b6e7141437638414b736c3855564e594e7a465378357259376d7942784a61464a4f79394c41626b304d46556f744a664654324f5548434b6c4c7a49686230485446625636546b4f6f66492b7a3536334d7137517676452f4b6255317574734765794b6a685861443942745a4f6d4677307a6d4c464f376e4737392f57706d736132646c6641505a764b6471326643504971747a7232547a562b5154646174354a6a674e3332653663302b65304259323650342f6961597a416377423964706539503841545a5877432f6479616c6d617265376d412b3962356457774a6447466f685974326a6e7876442b50304754694d6b75676c63317a5144346f49394c3455442f685050647934416a683061526a7a4e355871445474353970617666704a624b4f6c505064717872586946773943777950505249316631516e48707137384c6a636c3069625a506379575a6b4e7036314f516559466561497064504778744346705a32575a3869766a4835686c4d572b343075436d5a673861423139356e654f6c6f466974647666416d782f7954774f57496f76326b3868704a61686a3039416b5856554e4f4f565571557a682f78524f77502f69726132732f735a69525a574856397152584a4f507a64416b6756746930365a4e4379515a46547871304d4d3365317365655056384e4837346e426d3645774831344c43584d315a4a75314652326d774555684d5177595747774a715863665932563661467044726c646231664335396b6541416d6c2f506e6f2b594b36616449686f523539334d5250314d6855507a61484b33585455545a667a53384450636d3645356b797559565843636b766631786771674439674274425556463071736a52625a6b772f43366d64625a766f4533676e797a36302b6269762b536675483966324b434e504668476170694432726371652f6d794a742f483645796b3235303656472f6e48575437457849305955537766494762707a52754e684d734b574a6644557934484a54372f6c4c3571334d67485a6c394472574b765858462b352f3557634f6b75654e616a754c6b353050314b55756e5664716535534a33662f51705430475741777636443556326950553779316961567a7876597966365669452f784f626c52754b4e2b33526e6979712f755356334137327273346c4d66754439474c4f417847764c4c514c3436612f726768444863694a7a517457794a31504d7a6a47334c4748326a48522f72345831584a6335676346535a3143454954384d5634685645674633797a614e4167557145777431314c6a6a7931364e747770374f6f6c364477364561526d43416b6976324f45424435784e564b752f48532f4e5a4b513662565a36304c54314f6648514e714f4c625939724c4a307772486a3163613544396a332b393378485959443057706251493345714a6b2b686f55345377304a614d355663673570675759346e49426c2f4d66616f645538366d544a4a50733463334b4f6e2f51454e53335279765a464e6d79444e796b47756e6c43327a5162334f4b7775413244526f5073667a3065396c6a6d634d553577517a68396a3375425578457a4f4945627a63395349364f6e54336b475a56313054744d47317a32657a4f7733636537712f625156424d314e4239593255756439644e693170624f776d766d2f616b4c57352f6a6d5451797178456e61453052334e4b5a71324f6e6356424d6d35727a7530506c324863636e5153316e654166784a7066304572535648394e3976454346764f454f466f5553796e6d485545677167386a724b5a535570626f3139535653314c756a334354796b6a35537756657946494848374977742f42396655687a6e356a3273556569305a593573784878353361724d7272396e45706a747a7046516f577832706a7a7557776e6b457732332b775463357a4247634d784e2b3879514f6c69744455665355536a536d712b4365587631464f3059674e736b4d342f4e4e522f447147326e71695350784f7365514232626f4d714c4576476170593552644c74633662704f537a7a38593644576b68542f414274767546303947702f35496f6b6f492b7a447171643833772f6f4f32325738427058366e784c386332664e2f48496c506278754a7032387a6e7a4141594d2b4c786c38453264505038415858526e6330766d6536523545384b776f575175342f3453316a6a4553504437354f7279484f387338306a66354671614d4658715235316f4c4c5759434b304c3857323953354659612b6e4f6276354c7361574f704f6450766a2b346243463333446250366b597847507768444a7171464c74446f613357466e6664666e5a4b36616b6854703656554547435462696164452f5a5754686e48457a6a6844374e56497355537964462b31496c3254544637555a6e7942612f5066572b304e44355a4d6a557974446c4f624a6d5171474f344375767a644a4b2f642b6a49665a524e4b7854714555485553484f4b4e38384e4238744f7a693236432b4f785958383866777a505735586f3678327969517051587444704d4b7170504b56665a42745a2f41494746626568506d426d674754754f4447304d305634306e4b3278425a664c496d4a73732f79727079367146797a307651616d537a544f34524238734a7a673153576a5666454662626c4f334b333642534d75717a716e5259724e725572693552515049782f544b50394e517239304859666161334d2b4663676673725a6c2b746d563538526137346e7775756d69336866304c507279356a6e6c713675685170635a36446150694c6a484a706d6d71556d62684d764a7746506571484e6465523131624d3976536e5569533735315877726a53524a5932576b526a424e6c6b2f556d522f3663647130485135704f4d4659664a696e6c2f6c585a6b4a51616e6a4978354471624a4f584a624e4a52304e50536f35354258504b365662485045786e6a4c344a6959314b4f4a4d6d6741626648492b53424f38574c4d54326f6b6e49305563706932594c4a356b6f5270504e6d4b504d34627564513550456751582f77416a655058636f55414b62794468716d7a4e4476376248774779507861667256453671696f4c4b4d746b764f706c6e646937325756764464516d594c4259754d2f3041636e45347a6a6742657235533962636d767132306d32354765424e66786e6649386c5647704479654b316b505130694a6c476b4b6e4742434b54355258372f414a516f68675064485a664d5256634b69466c4e476a666e6e6b6359367653792f4a776c73444f5470376543667459564761766f796948484f566d31554570366669416747556b68684e5732504c7a6c3250637975696968647a59584f696f46614e434f71364b69716d6432666c73524f56732f7a7a4f6651744e565a647272414e73536666726c71707447377879427446312f746c70537a4e5762575957656a586c315a2f38415a6e797a736b7059726a61552f4a4d317a50684d562b2b617a696369744b67526b546e694f6e475330324d7936364f45687455534e444f68666e36324e71396e367536684b3833355349442b61704566517471344a2b344e7548613868474b7165626d724f7a4c64703232536d563332586b706b7630677664566f306d6c55667761473457507059624b5256787045707a41635a7878417370465873557475627264737a305453566d4d7578736e51584d6d396b664678387a49356a6a59745077555a354a5744614530684e4e396c4a3934385457456664623542624b6c446562624774497538584d724a7a65366647614362617373382b7762506d43635a786566574135684c73467278506951567748504b6b7a366766446e3252626158362b6f32616e6c562b58426271686f6147634e5a43786a62756f456e4f2b616268744155766553556d70314a6764516d4b7431796170746f324a34694737547944534f452f364763733256753737616d314f4c536e6c4f716b6e745961414b6b30796e305645444154505443536e6a534857596d675a6e5a3837436637574d2b794e36646a537a61417a3644545a6b4e5651766a7441564a5a3161615247594767513754487046485441566663374f5a5a6c496530745a624f5835397243354d6932526a33364559735a593149797a6831334b4b546f2f5a7a705330464976347971484e7470306355714a617270366e4c666e66635a4938787143336d6a6f736e436f53537958684d657175684b6b70654b5a6b395362674c5435723278585a465775767475562f475252707053326a35732b714c4c55376f52587a31314a493953576270447945463067644a75552b5678665741496364692f6a556e765273736b61794c495369754e6b74676a647075305a4479694671374a6c702f774a484b5865324531434459766d39674f6537464339667056696c424f30335657575a787a396f30776a6d6c344d692b666151346665394d5a7a45314648744350353534564b4171615169327a764943396c59323879336c4e513256536b67746d617136463979717030524c6145507557342b39506b677a472f57554a4a476750394151436c4f674a5549546f3867345268324c50667972564871383774514563425456724f79355770477a72536d452b715a77322f4d3368695839414d4a7331376d5638793163583854492b5237656a63746954364b61446b517a7458654644784e424b4a5976345367536e32415877712b5147504b344d337453513452307a5664546f697044724c4b38667178436579455a5a2b527830506c2b57723555644f6b56664b304f6d347541734552614d583874377634704c6f343261696573703532514d2f6c474b41492b614e666572396866544471326355527367493274436b412b5a3138775443343967703759315a76317a6e6a2f4145663131737658476f6b78547a6a45316a2b30537258706638564e366e696773536653345a4f3644474f4854412f4769364f437a67502f414f4a65484c584e6652773039646d55773650462f7741305379435758335a38704f2b5a6c48784f6d496d764e5266433448635056614c69647048706c34394d7062596c524a71567230746c684947366875686e6159314e5a525577672b5034564f3937444f594463356f4759503430686d5a4d47656d6968504b5a614739302b424a62572b5857354c6d4648376a7149627953706a456c583750335057706a55714145424a6f4d7a746e563645756f564a5a6e657739767a2f73726b52316e57516e4e4c59704c41643862767364545130334773556466376e416b6f32685063716974786a7273304b445053706c757342566172496967316e304b5a4c74794d336b726f75796f57436d5a667866494e4c6a59446e66445437496e6a77385233572f41482b33393663666e662f62382f496278712f47444d3836447a4e4f3336612b7038656f444b7372794878624b7336724f375462384c4d337863744b684b616c31546e77546438516959635439446b316461326a7261647635774876396e5838314e7a3856765772797a2b32702b586c4b73586d4e356a6268656e2f6b576f4e31566544745350755a742b4a755a597a767a655036435253794e39484b706f335447482b614b4f417437546f787156392f707a6a3851346d663358632f522f3841796933354c4b7144576a5a4e35697838796550564e52796c6566476854484c41564b6e2b785a437669673466656a3179506a397763497736765a38653530382b4930707a4b66677462776d773837576963654f66664f7335713536716f744545304d63445a33474c464c5733704a41452b333270644b586669734f6b583474666b3936315766692f355a2f626339443879765739512f796f39594d7a4f2f6b786c6f7a39484a385957694d664a7346685233387145666b795a313172715257553833334458373165345036707161645065652f74324e4f4237596678622f48587848385376787538433941664145782f5338467739485038334f6148577056752b57567a6143764f7475616e517933674c6d62464550657030476673506d6e704f594a75714e506d616c72616c3758743851325266716831564d73454c374e45595a7671587530436d6e50523245526a587049614f614b4b6d433532615263466b2b6639673348784974424975715031715a6c2b50354e3067352b506e495a77702b627449636f525138767574586c7271544e7a46314f555752386e7359302b4556676d705266652b57515047582f386f733954737279723869505272776678652f76634c77487762667071636b6b717a755636327849775167717a787347715832356a7046384567396a2f4149524f4d487a4e3637305059713470615a2b4c3149382b5679313951594a6e364e7a4f2f7741537878543972516d4e6a42344c566d56626e664d4c754c4669486936776b3263367635654a4d6636374e2f6c39774b732b6e503841477a36686e332f423633754e647338382f774158325849344d795336537a2b5764513045356f66475971492f306e704e30444968554b6d7938584d30454150615159524b545052554b566c5777656e385379374f4d707256304768787766476f54364269514f6574577968326b7768372b314e6d372b6f633176516e3455394d395331314d4d7864315945594d39697563344879682b69367859787737506b456d6941386e534d764f49616c677339317454525a386152706d486c464356702f7754384a73555269487344674530665a2b6b794548752b595065355861474b6f6e61533245687131546e52525542724d42506b3444396f7a397250764c614e6e54486e42573333426a53533274496b722b6730566a66563178412f71414d5570354d6f32752f3346396f5a2b443267584e39352f4a777959482b594f2b6f2b777356544168624f736e4e306446487875356e464e3878453665716a682f47502b5043345642696632654550422f77445a77507330556e6556396131514539612b723549532f7638414c586f39382f4675364b4f4a456d444c7a2f6348734d71514a4a435a4d49515a395437552f4e524e31457a794876316d6441552f49504c4254394a4651385a45746334696248664b612f63485449576a774149486b68555379756f34395a385376356e5247766e36636b31314c596c59616153427a52537977332f7462652b315047693866386d647050626a31346a6f372f61643075597635595a6235364d3254744869666b30794e477470352f772f763231455531794d737a7a7843675a326c386a554b6f6d42715575573431724c44326e6d3034387836785562497a79346a6d486a3553394f656579797565615530794f6d6467376c4c635a61375069576c4d5645727a4b6435317256714a365a2b3170334c3451367678576551397a36725a374a35486f544256506d49324e57444f5a656b7153365777704b4f4f68577a61597951773054346161662b744b31385578553134566a7941624238723376546c336832376c4f7a396137467136394f694f592b7065552b715a4f7452525a716f713647704c384f505548472f594435736d626a506d4e4b6e71715445576961794e394d5431507a2f556a776e53386a4175616d7a3171714f3547516e63586f346d2b324f77426b6279334a5a79714e65314b7177676f363156686245587a6341766855334b59784f4254766e2f71486c7735576c6f613477466c5a7068585170336a6e47686d712b31637a553362386c3748504b505264396434716e353275526c4b71327756685059436b524f63644a486b592f4a54785079483878665744314f395161764d687850546e30394c6479664755304c784e47315953395a5139374a7461374f6e685854734f6837525148796f47652f3742676c687a422f5870306d4e4f745932357459636941556864625a4f66544c34744e5a4a6535794756724d56447975796543742f786141742b5233666349674b7a5752704c6869505236507a2b50643968683864417636316466756330706a736e4a7a6c6a71393472327244525477683450794d573733646351384e54763248753659475767637a6c576e69566f77316d313343436849315543786956303571792b7a773343452f487357734149656b34414d695072665958395a342f77446b39667a423143416d6a71617574334b2b483165534173664164557363726e3972652f734a2f4a3732456c374f6449665a4f6d6433754648374e65596a466d6a3264716d73703532746646384b6250376257786a6957356b746a4330506a4757336f2b376a474a57424f417a63503659597650545a352f594f426d4471616b6e793869447631416f6e594a4c524b6f79356f4e363057644b716a3549666341467746673133412f302f34395a6f4d56634a53547948465450777a49505a4f44704f6a786362706e6745394e41734b59485230413333392b4c726f2b6d626b694853586e2b66376659504864706a6e695173656d61737361686f6f6d596e2b543551497543634b62423461364f526c555876353332392b6270714e5a6c4f452b6761317359746e53644e396237726a5530467655715669312f56453276644c5a37662b52476a2f4c326676335572447665433339637a7033674f524f4649633752584753714f70664d7443454c72443766466a31492b39624530474931652f765136767241352f7741722f545068304876332f41632b512f69582b4f5a77713179777276464d382f6d3448326247686959535a39685536702f4a6e6a4b56705436527261434f70436c6755572f5469584731666961764855314d2b756b4462686d386c6e6a5064466665592f5570666e376b7a58573538564951555a766964707a64796b732b54535956776f724661365754545741414f634359453035436b765662795237654b61674b796d67547155612b742f4a5451503841486f47547a7952547657763570395a4e4e525130352b62794a3354546c63614d6e7856306d4e36526d632b413832663978727a2b3166707a3544452b2f6464526f337a5455486458796a4b302b4d2f695278744b696a6770624f663858387948722f3349442b535375592b4f3474556e646f3135755058312f63634546542f61355963354470496f5530716c796c5556446d422f7469344a4437774633786b772b4b4259662f474a4c525162654b52336955595067506c336b5461666d3859324f4c6b446a64576a546b646b5a38636654465047452b6c7935353531565547504437326451384d42582f7563494653627845636f413769595a53474b577674553041546f4777524b666e615a7a5744666e41683971783636706a456b516877666b6148322f5a2b77354665624f376a674a38714435476b79376e3031746c6632655a784a49686130532f532b4c5937696150644f7a6a4455664255464c51456b722f53326142713678506541756b486f70347a396866384148305434384754304578416448334d6231645648412f3441685a4e4f624f6877714f2f31585a58774879772b3974647a356a74483267744c654358576442626c3252675831306e32687a566a6478596d333366416673452f594368362b4836423356517671505a3075434a685a4878774b2b79767270726661413538767a4d2b5033444b772b6b4b6b2f35306a3333383633703956726a356a4b5361636c6643305a7942694b326f726f664a776b49486b374f2b342b3244384e526a4f74695846774150687548324c3937584b72623876322f34474d4d4c57493553336c4c35755432484f464e4a4e545575546e2f576b344332752b6233735a655a6647494551664b5377377778372f5532743850664958544a516b36485a2b655a734c6775536c424c6b58376f324c396d67596d734f517239777350324d574247546b696b7569526a2f556276687641785553654f59614f51537939346a712b3039426c616841376a454b30424c7a6c4658563048786e65467a6b343041707a5349444c6a386e332b345a7151716a5449466b782f74464c535a4e54337655635946426b535676562b6e4331626c6b4865435941326e3945524c2f512f316234666f4a766e36514d68302f466f6c5453492b7a4a626f744a4536476f524678786a4b793159754e792b74576c6f72465a67494752474336414979706176573063596b53344536656e50796170433962724935324739425358384b67314f576a4e353144435a4f4e51754c71316c4f336a2f414c686b487a6e37545651512f585a5932333244646f566c50397442722f634432587a387464533559424e6f4e5750364b664e4c716c664d594a5037667a4b43684944626a5752385442557071317144732f666c6239497130315a6b367a674a4c443477362f616b76686c72456c3836446953422f77436e33474a382f716f6e4e475032715a3257685066307275547a7565433050315a7175444955644e64596b6b31777663624770512f356a373877642b4a4a6c51456a4f4f505441695739302f7055775251574c496669694f59374a71466d7557625166487a33792f4f71786e324b6d4f636637584d376a6d6937324e6453726c7139724d6a5a54385676547631632f49503150796651623030324a2f4836644375535879486276614375596d47765246326b36697153706143584f75796f2b4c42767a47663748354f45662b796d704e644f76764c443176384134302f323666783939455054776646783848787655627a396579717137314f315a463764656762365337577a534b7862427a383074544e6a356d644471574f45316d6244506c5942352b707233764d547532314853767850306b62464b764c30513866426a4d7649646d30346d436d4674384252597173764e2b6c584779665379376336686e474f6e6e2b615a73314a41446b6e2f6a683878576e71562b4f666776632f32614f4c674f537a436c6d763064484b47393144525a4c7179556c4536364c35463361417a305548644a38594a3076387a4f436c615274767438783573507a2f415037625068476e312f6e2f414b65596f34327269414b2f4a503841787557316174616c306f397a69546e655169433172645a51547964377a4d4a70704666356e5a45717a74304e65656b6a6872367a2f6a6e366a656a546647397a62513361394f2f49316471385a39513475306c347076732b656372546d306758784d756b6b377665634458707035384964366c526670584f756c363333524861464274347a725a783939435a6c7355354b6e544d6137394e41713565642b4c69753044332f417659727636486f4158506a2f594c54734843374b362b496c633158666b5239644c366579726d6d4d2b4f616844772f6a566974507a442b7632584f724d62306b5a2f434a725a48447465515334516d55364b472b346c57715976362b634b6e396e733475786653574246395768363243526d7676366e37332f3673756a2f414649362b2f32537353613338334d6e52647952386950454e4679553351576a77394e73776b527254465153374c446c68706332546a43553850734d454435436674355061707a7044335259766d4f686c65502b4f4862396f71735a574471573766307a2f57736f4d375330362f306c74446d6141387956743553594f6d6f636e4e47574363436c663958796871582b51586e4f7436695271777443327a5275774a30684c44512f6d566b7173715658714c504f4b6570526231456e315956305173705951423837675579454b497a307048654b4b4859746b766c6b757570704a436132316f7330427a726e716d6a6f62765632465a7a5258705a4c6b3758787166384161597968326b4a7253774a6a4f6251584e6f62324a5034396c38712f38696676376b7259344d2f782f4f54483251686d79326c6678766b63636c6a73303562744272714b6d574844392f336c523845782b3348627a6252342b5037726e355365632f6b442b516e6b58674864723650703536566156336a6d48696550614e656c67316136757a7676324b3670334e43363736786b706e66654b46743477564559427a7448702b7a306a54706e3472446c786e79314e58327a72567a384b644a6a78543565456c4d7338725574555a69625a6175315469305136707864554269412f49426537652f63507961576b624b692b6d7578744b30764633316d756558314570583079573772383150312f7363574347653875475050386745772f72515a70342b52787472375657356268365147584e464470314e5a78626f366965505a366d5372715677543558377a4d4f6c7a2f6172324173545a465631564d4b513254665136487a46667a326373732b556a547758414d3837567639792b6f71344945596d4a7258336e395a2f7450574173584d35747258314f576e7452494738306370704d45304f54787a6674415866726c54444b7862337036582b6b43496c752b59524a2b303959475062627950347530644f5076326e744a48656e5a52784256634f5a584c46724a676a444f6e334348657041414c6f4637316b4a7a736a786b4d2f6d4451703443455749517638416a456a46785950534c4b68577a76774d35444f45746932547445446478726e4b442f44353165336e3952325050496e667035366d65652b6a666c45666e48706c3558732b4a65535948527667737739442f72554f36632f563069744c424b6758584a304239683950355668774f754f5975634a657462524558366a306a2f67332f646538653956714d7630362f49774d66786a31523139565234666e704a556668336b44593770744e65587142556b6738663171573539504f742b6434485865784d365565364d51344e623265617a76707a5648617a59387478504743306b52597936744c50747079647161784f73764666316d335a6f35394c7141314b422b6e375a396e7348736f4a4670574f4d4267533448633549724d3942512f6b486b694e46583269616b62463267793246462b73733954525853566b6971354f335a3577722b6a2f494478376f654f6e502b5753436d7a526a6e427245524559675472306739585254745976696b6c6d6c526b5435744d75744f68705678744b69616a51706a726f706c6e5a7052396a546b6d2f34566b614b6566707153554e4135646231345a3734472b6d443630352b4a6166632b396a732b366d6831306d507166555439457279573239384a5664345172327338585270486f4237494c7363457350356e486c6176644d437854387453452f3346614b344a384a4474483639485635692b614e515a2b66705a783354786957724b6774734841736e30706176322f445039596c726348444c2b3731367054655266694a36735a4f796a6c724e456e615750797a3231574a72703079376f396e357045625672346c6c7a5a6166634c69564d5561324f53784a52372b7a524d367463634d44796b656e50727a6f6f3950377653487a585254643437325a6a2f42396c683056556550314f2b76544a4f393158574f487858743132737770353254676444364475467730546e4e364d303437343644644438635050423150482f463870364d347649634a326937575635524e6c3644574c3363332b50693170614c56716b6e7a655561446d6c4566777344717a3434564b724f787556367a46726545662b6831663944504d736543614f573244355049736873453764694c32646e72786146592f31304d545863796e516c6c2f3751726d576a52442f54482b6b33547974522f574636377537493355386737595758667431347564557171733636582f4142726e6a6366384e57424668716136624f794137715a2f6c79766d59747a52625371524845665a5971664d445078583834302f4f66487650733667396a364869506b4d6d486d7a7935454e567433614d745530486a626648797372534d73762f6b4653766d564f79644e305a736c42354e70414b3674596961342b49654d72386c504643384b2f4944317438646d584f4d61505550796c49386a354c724c576972596f5a507a74482b596659564a71554c6437584a497a42787345682b52592b70707a6d6c5a2f4b4b685949537964627866462b3578536461794c6a4a4b61434f68425533452f352f6d597634576444766565386d66612b763777612f363176342f703667492f39596b4f366d4956302b7970546d4b5630707870373351695953305366766e49776e577a6f712b4132454a694454424a2b383348663636657675487771483374457563696f625059306a536d61666c514f4147737a56326d6c795a61506d535166507a6b367a55414837522f3366316f4777576b50306c322f774162646e6b565a7337797574334157316c442f70386b417574576e6858653970726e5072454f366143506e423975657a7a445a664463704e637261716a7274716f6250557453324b35714b4b64626d74576e2f744358324846315a6949662f475974626c47357662384f7a3542564c786a496135477a7a43663369724763506d4a6c33514c334b354b6d6a33456c41382b5266525549487a356e6a3850474c456139724e6264594743784e4956713533685a2f77436e5541494b47583674625159734e466b49752f5a54385175646e506433333856543076304b574f457268323337302f6633647a51366e726a73743479576d52452f6663365942506e2b505955394679795068462f754a77646352634d656c6e792f44327658694137756944575563712f56584b43397337334d586177482f596f346464714349794d317978676674496664307a4c684148745a546f4c44384a54423931736465574f6e666f794337446136356d6430486a5438546153667a35453252392b7773615249457350324e49323846516d4756346e723344764c2b4b766d374e337764655870762b5865795a6c2f796174665a374b366d666b4832304664737a707372644f6e333558467137325672452b504a767a71666e3437346554556a626e48634a7475784972314a355a3958516b7a4e4b3671436a556b544a47757736685850666d44487a355a5577785554723048554168744b62484d4d557139716c63426e69376b324d30513039615450312b555a636d506e6143486e5a48524b626f73526d507666384470593662744161467a7649334172374c45764f592b474d544759786e4175582f7a69624e777276735a78684a627a59675a774c61564e2b46666a6249727365766a644c332f4142725979454e436471426a587942576c31305366744345626562634f4468657454505458314438753863304a5a35387544553136636e53794f566f314947754e6f71566c336a4f6e6932636459387a4d47463771666d4a4e43415a5277756e336536745a676249492f4f5430743854385a716d385a772f4b374e4f723779446c566f4467486649326e535034442b6f636b615369642f464563303669456a7a55304b2b4d544e484b7870586d6550414b2b687639334c386966534c796a54346957586438557043596d344b63344f62556a59586579527a4e36687a584f4a655355375748302f6b704b4d545a544e3758454558396c704d542b49646e5053542b38442b47666d486a6d30333155304e2f77424c2f4f68794b484d326d5a6d67657a6f6965667057327547374f786155574d3635615a2b794c34496353344246446547564d6e4e623262566965586e714f4a6639792f384175423566356665514e3854394d5048746e41394c4d7a566a314b3944525631476835446f7145355655397a5661314135755a386c47685974526d66795537622f4150584f6442664c3161476a476c47362f4377355a76384130594c4673354839684d37334d644b70626c634e784c5a314861474c6c57686a567872344a675843372f7444674d446e7a6459495042696b2b3137544152454769336e56394644436651494e564d4e692b547239712f6e6f364b5059776a535a67723748512f6f413150784e5839426e656f6348432b6f366f6a6d4d506e664f397254475839705a372f6b2b5868383649414a724c2f5959394c67456f61356f35356a57333550726a4e786e55555377643671706631574e354d6376574d59494d53746a514c704a4b6d6751455139376e5a376433484f4d68516e5a39354250774a4a7a6e47687271412f3436733146395a6442546d49416b772b777a76743933515638785546396a2f5748394f78353544656b575538696f3549766f72722b504f6258397466524f64696665744d3844476d79662f345a4f4c342b642f306e7a6a68635856637454737750674c6262442b7a30456b426649535569325962766a54483834434b424c7178456b736e523333745032484e7852724676764a4d384b7834514e715077792f48646e35562b75574636496638416b7348696d7235586765524f6938683348636c796b6157546c3362457a4e525954766355724679724876656e5051456b3332454a66376554555936742f6430692f613269386657542b324a2b63336f4933586b386e39422f4d6649737333723744355a3442437a7948783752794f4e356f77612b632b447268584f51704666574767614a32752b6b53696152682f564b362b6c6270622f554e5174543061395a737a56306b2b52656b58714b6e52376e6c6532536a7733797958516c73527758716561475a484849713976787137333566337869535431337a664359366271543074586946735038666658627a4e38532f475053767a76615459525242566d654c374e6373566c44617135616c32766c4d557234755175384a58553856394f6a6e65714a4a434d2b3870586a4e386a31752f6a4f33652f2b5a72307769325130387a79487737786a78624f3836776432324777472b584e6b7963796a58376d564345354f476961646c5033524d307a344b766d636e374c6571383355694e3173634e77322b74302b676a4c664662446f3967547a323672366646795776536c6b645256724f6f3572743771512f77416c4c4861736c3849464b70456671674372456470746a47337546586573587172483659654b342b31355035447a756a704d434478307347664b5a5272317430614e50445657484d2f744575534b624e4243317335537064667a753741613641614636786d63514f647668507037337a50637138383833437252324c747654314a626c45614b7372466b387775795a704d525936536e786a547365304870725958317a734a79644133416c5961577474785773635275663442484b4e6a504a61507665525a67356858635a45726352446d324e3061704d444c69745a66425a444c4578507930467a6a65646b76354f3456444f57682f57517362787278444870334a72642f4f756a75626c5456315573596f6c304c4b2b666d624a4b4766484b796656354c6846314351532b632b70594b6c7877456e33784f63546a714e33492f5478356e34315143382f4744526655454e6d52304937567a386b644c3967366e46524d2f4b616c4e306779664a652b6373324d6550725438587a59424633706b684e564f666d4d6c694f557065756e7948583436504a3258334c6a58587244704a564e2f494b54637a745048765a795475564753724575704d6d57333238514735346a447631766a75356430646937493133466c5131553279714956364c6c76704e4d644e6e6c6c4644412f692f6654533373305954546e394f5a5175694a6d4f677346586873303941526947666a38736f68633930364d38696e6d7a3869726f5a4f747969567a49786b756c4b42596b612b445070495a796b456b7347514c43385a3865385a5654524c4e4e504c4e436e7547736b59645746314a47396f352b687179357349434e69394232677351733937515641447068703552545453466a79624177354a74443639726a6c746e30465734332f6b464f7a6f5a397269424f5039473739702b6f786c505769395a706a704d655441664a374f484578457a4539384349372b383876714450354879412b4d79755a797a6e713866747a314a4858517667592b757a724d6d377053314b6c45412f64525a526e38594f704f78556a5858792f774252644f4336595933563459367348783432526d2f576e302f6f6a3234582b37595a51786b6931615767564e542b4c70704a4764386a4a7663326b50366d496d5a7841724c796a63386773742f65644733344b4c4b505a31625375526c53433751564e69305a75717345575a734d506c6a356d31477a3677614e68665a59416f2b47653961316d504561412b71506e6b6e6766644e2b6a713035736d632b36327235714d646f4b683464476a394b6336595755356458324d75674779513171633172466774332b30476f32725864506c4138786672662b51477474657473336b336a6b2f4955654e36434a76486c304a472b614e314e546c6152634e4b356b5472466b70544b346f466670506a305a4a4e77434c5764314b52746d4a6e41366e65683335392b6b3246346d4d587144682b512b4b6236422b6e4835467a6a76496e75446a426c566f63316c723076745479564c4a7754424d4832796d7a6b7155384f302f317a583072545041626a2b6858717a364d623371464444347636333557547a5470676c796376796e794a4335394f7456644d2b52586172613939476f526643796e3976354937716b75554135306f632b33533962523172303842312b384d38786c326648644f526730366238506273566b465771686d4f6332587044745a31326e35426862417945796d4d5668316e5a6b2f414f78374b6638417463354e5479326a453446742b5a2b5938797648664b3375304f772b4c636c736d71314876306c3575517a4d2b3535426c6e557a6b66374b4d625063336a66745467764c43454f30667871356a58466573664d65512f384175392f6e496e317a38674c386266546a79544a7639505042664a4b4b742f6638623064597337792f792f4766564a504e54332b574b6168655a48444f7346674c775438337a54324877765a2f586f2b7a6157794e39715a7459635368584f746442546c7750747048715342534754464f6e6e79734b6d36786e653055464b4b2b487a71413648764a676d494535523977667a6b4b414a77483837704c564e57594e4c58306e56692b55796c525a7850552f45776c6945784c2f7741786f41464e555a69585244376e5679695038673150623256576342594954776d6e30784654786c2f612b2f4e31715753695a63426e755a6d7536427a4833354f5a326d307a7438526759424e4952495254634d3858522b49653272314d3957684e39526247716a49654a53444f316349422f77415441426e2b5a59754e5333377a313441664c776a564b6c744e63365a595335576f7272557a7751324d58374f646f542f72466e552f473369794270732b6d432b724167396736445a72492f4a7a386e636278334c3950764876586e3172782f422f4678726f77664773587a7a79374d38513854512b4d76723575586d4b306752416c52554f4870395553342b476b2b66747675494f65616163327a4e6137784533657450726f33556a2b373634657266564831727065423535356773785a52374b62526b6f4271755475664b49314d2b7544534e337868514d394442533664744e765a72363867313176575031706f48782b4a7672483672555a5869313278663435486236692b5354662b497330624b4832486c4e5a354a7a36647a525a57623279396e2b5868754c3966455a732f71597254455732313576796a316e663246746c4533346c2b552b534f3047622f6d4f37362b36756e7462666b6b69373664436e786247682f30365464584c4630347354735a33776448526136686a6753674a546d4f676650384161342f61597874344476587157303646454b31364f6235445063614b41565866487152794f646961474e506f755557654b365073585236427442592f4e47716232634e43304e4175554d664c4765503074754e4f704e335a444b305a623131664a585a43544d786d744f6d5a64666a74696462506556756c53456e73352b756d704c694476577964415a366142684d3868395150546279794748795478443141384a50783633757a6e712f6957356d676e5a30614d434b57636d777346767458314e383662542b33712b795a496657497636546e464c5232366a2b65622b652f6f3734762b506e356a2b74507058347748562b46342f6d57747a7866455a715575376e5476746f367a456f4e684b427a41457146736278587439344b42507348764775396a5274612b6a5730386244543847416b6748326e796c433570455a7a474c6443563943307a477564383958574d53457a685a3765633443576e3777542f68785065674c76567163706870586e5272644a4d4b797445737a34794d354b4e474d615364515456753656412f4d672f77445a3748414166384848374d2b543666554355676b6b67736c424f576a386872486e43722b422f75576e3578556d506970306d7a2f5762785035502b6d6647645a304f664c6f46612b524952594d366b6a576d34516f756f344c6d4b494b79732b483967766e5758645936465a6b396e5457772b722b3137425931494f514e5673367072696d42692b51726e5a46784832506d3658746958472b33346639664933667676564577774d306e77776e2b465338356931657a30446d62526558786749556c376d4d646d47375242595667344b4d34304d65396646542f75542b4f554369412f384141445952696678443137767a2b77516a513269304a6e706c3753593962632f39556b6b6e756d34326b4e6d4e464276573570703972574743683537502b4a506e364873586a70614f34477266677055686467304f466f6a554667634e6f672f374b2b7353744a7445584f346c6e7536624f55385430446e4258376f4d315672757a793951786a7864486171727a664863717a65666b526c72306c6851553155593873656a4362626178524f6850317070786e51525036336745592f2b304245763674456265613355447956544a30554f6e4a64637631547334774c6f7459715a2f6378557337355538364b2f744f2b703065674963716a5572725144362f5661423954316646526a4c6354454e61593974515950593663785a7851746a35376c6a6d397146786d6c6e66642f70494150324773763677372b624948747248345a7a7a766278697079416d7542732b6739564647684367452f4c55347146676b5344674e5978796757535137774664462b3439562f3973482b2f42347a36622b6d6e696e6f482b565657686e6f38526d683859772f4f4b7374757a6e36486a556835597852623865524c626f5436425a4f54504c3373636f716f6e50674f2b41456f667a792f61505a4a6d322f542b4964332f432f7a433943665666787a2f7a6a77487a6e775479434b3961627a314d507a535044646e2f41452b52504c6f2b4e626d50633748597648597a34444e73582f43535658477335766d2f726c6d6c715469315a457773395576544c555162423878774e30746f42464d413654397856454e4e34726e6c52773952595861794963354d6c50515456514e695451424e70544f35445a6277465a782b6151362b69503072753965642b6c6b446c61706674575357324e636b36636a363332364c4c6e5a4f624b396f544f64374841423953624a4574434a69596e456965655038416b44734e506a722b6165677334364a4b614e5749787a3835385632517a4f44354e4a4650753150726b4e5376614c446a4e7071536c345442536c3044584c2b35422b4c346633412f78332f3858385650503050576a303765506c2f6f3955374e79736663386a38676d476e4f44776e51743170327a5854746c7736672b7a4531732f3238306b2f4d695253577530306454334e387a476132366a6833355435392b5376345a2b6d586c75583678596c6667666e4867754a526d31654f37476a6b466b50304e794771667836647a494d6c4c664a737449707a356b4a45532f773156522f2f41456d6c4344366f696d726264586d725965617653757131394137644a69364c483375327171626b3056497371316d66797a2b3150726e4d6f57484f4b794a33486e37304934582b584639442b7653445a5044454f474f6453786b764e423647734f787a46745450376669492b6a37535955612b48786f702f526b616b414846434c56676e397851745071784965797a71554b2b2f422b326c2f69764e6f554b4b506a73483671564348436134655050355a7948396e336f4e3147656b6649704f7134314a722f616c725035474653796f567564565255766e756c6f5a2f384151416632487a755770337847516c5763526d774a537636667356784f69726f7634794e6b3943483072594537416f5568434a79364d612f694979446870377a323945326c7a394632742b344e327255397a6441424e6c68756736755039473144754b697a6c73496c5552384e776838746766354b5a786e2b516339786878685834646e7943742f764e72476334634e5a7271363931465846487149476965674a5676416c44515270483542596f4139377672724432395758503670547648776c636569626c62464a374e37706c3641714a78664f59304d615471415a33763841726f6c5a2f6b4457416f452b305356772f5a2f57674c7a43734c6e7750314c41356e6357456c6b3347472f6930445146334c5942754e6e79453979326534676173544d6b4f4d4f644e714d4f50613877504e6363365a71526d716b49334b2f374b6c6e4d35617957446b35362b4b30423753583255304f426650694a682f496e3266744945467562732b762f41454c7238492f48763165395176464e7279374138526f31384878334c47322b77723835456879556c644a394c49372f414379543150696e7a3648414b2b6639594538523870742b73446154657354746d2b596b556c6f357a706d396b546c31784b454b6d6f6e715966534874443565395a516a6d62306d4c456d56435230663856422f7034414c2b4a58644b3337706b50592b4d495a53633965664e497479444730463138764f5135366d526b585a5738346e364d6f75506975474939734a5074446e7534545537684c764850412f4d664c65626e66417644504b504e6f38504f7a4c74756a43786466646e787053564c796256336c5a7334466e6c793753487072704e61416254377849714f6d4839556e4765626c4778545077532f4a4478767858786a795879374b3865394e736279377972413864774e507a4c7937785843664c5a753177706d3132596a744231732b4f367171467a6d716934333632626158317a435a786c487636544f4935786266675034445a4430655656362f6e2b70356c6f2b6d2f6c54306571586850706e344a7556614558696e6a333369387170673952614f707a6336346f34534b547256554561394c7067566a6846624b547254773564753773352f2f4144362f6f4c352f4c4c385176786b38592f47504d39582f414d65473639644f5676356d706252355835394e3566366765523547355a725a2f6339586a486a3066306648536d646d6c7a674253426e394e3332566d7a71566a58543164536237622f7a2b45635561574438597050732f47534371686c58515968716e4376764a6b743645764f3146325955704954575052366e6a6d65384675494f304645516341745156304756307a4c70513430506b6f7365597977794a4a37365063684c616c6d494d51587663436563425534664c2b382b3335594451796a52644f4444592b5739696c384b635263727658735a4a4d586144583836714f72544f35797569424e2b592b703641674847503366727843346c5149735370356466507a67537a2f455032337a64367035724a485236747770576c674f625158776e31792f3841337534314a61424c764159534f755530434a6975386f59356c46444a6570347341365233467958334e435643774951364b663841495866353959414d57576966577a4c37523174624359367459632b5663796c4f51755170357031644d542b3138585336612b6b594b4c3270373731737246633862635a446f69567953627350477362566e756b7062316247705a5952516f41464b347a32334e5973763875484f66666d73497542396a2f45612f765058674a4e344e4c69582b5a2b46792b515754707936664e4d43626333726f6f75426e34326a664f74316c44573653662b6e39503543634650666935303238476a32677779546e463865764566305666415057543033524834394836642b72486947376759384f45475a6a34586c6e696b2b664c6f5a636d5347582f47774c716f53736c53785a2f626d2f736d696d6d514575576b36484c3857314c664658714c5a3735684c724b6f552b337833567a4e306f61573430486c5058307542643038594d79716b4f523830376635517065465331737148544d6e2f544270564a2f565257756c346a5875626e6a4471724e7143725070304a4d45734852632f4d3165376373386d46475a3979676e68686b5a2f77436e4f61494735675a394a63557239304b756d4c5445596757483663626d7456467a78335979346338753254794b4557344c66496359744a654c6b3262452b484a6f79386c7865305437524453756d672f3353795a704657717462496e476541736f623659512b376e52545455333657374e72786165626d594666617151776138396a74526c6c4d776a7a516832416530794e2f7a4737765a76596a374b5170627a333877765250384148504130664f504e76556e78544b54342f48374d767836585368623541726b6c4e5547506870666c374330454e65625a6c2f4a4f482b5042672b57342f6d4d644c2b72527032764f324b35486762395a764e733731493962504b66556b4a446852356a3670332b5766556156455759664e50794b7657794e48367464566e77735a47797a6a3170616b4643625153354b6659522b72574e74636668675633305649702f6a6d387a4c31577a7a5a4b732b35794c3277735a4c6b796d34627375507267736e4450656c70556a3951534177704d4f4f364c5a4265522b55786c586634786e4b64476b30374652304e38692b5758525639364c6a587478514851596d66592f5642764d4f70464c6575366458734c67476673614663746956486e6d355a44796165632f72784c7064706971786c7a496c6b786c5650306668467a6541704c57636f4233374f7375674d477476653370794c4c5258504b62655835736a4665514f314356526d724c513547355155564b2f394e6c575571763337505a372f59356b795767355662313577313253434e664e4e3259656a7830635361494756396c3471553778647a3666566c636b4c53716f366f414e4c5364624758484163442b5463375170546a70686f386653634d746332733769342f6c7164304f3631524c483278496f6f4a7165456e3241722f7269776a2b466e417779423744334571444d73446b2b6b6e4f6a7533702b4175354a506e47675a49374b35325976466d4e7a324b367757714a4c6c6a78786754694145763447705975685170746e6d7151375a6d6758396844625859382f4964466b6c433579682b717966704161584b576e5639687a706f4d365344464d4848573947757032307172374761504557506d6e6f526e382f77426b504e4c516c4c6d656c6d536c686b4264545931556e776d427154776b6759342f2b516c773735752f45332b426f4f4b3372574c6a665a504c424a4f70744e4649706c58324869567a666268506f4a4d6d7665354d674359664e57577731415a636d6e446d31555939387055327465704476554c444c6f59314d362b4f534630493165347941784f397a6e4b5933345463442f4930556a6e3253397a6265794d5835466d5a577252466449773330702b6146583064414851723036335971786c456c4e4f6b774d50734257424857476151524e797549636567396b6d56484f6f6d71736b7a34596e3338493776315568517931546c6b684e313853766b5870477159314d6d6f4651596c6e785a76437a5a36516e56584f5930377779733754634d5772666c5a2b666d6c70615450754f4c2f7741626e574e4567675074315a6a4f582f633046677a6a6d7935376c412b70734a38434d39476d7257546b777367706b45707554464430672b4f50555779763575716f575948307a45314732517763375765764e65445553694f4c5533536957717451545778302f7741646b337854307961476c53566e77466d2b34674678546b63796e4358324b456a4f427a366c4d4f37414b7035714c6979463577504b30356c4d703175357566736879364f4761716f6d542f793176484b5252574c37506d44687a4e2b776b44746b664b3431614a41716e546b4366564b4956506d676461762b51707651476c514c4566496f3949596d444a536d535174696e67434a6e7a32424778796f427638416b3550417252316365437773305165476e6e4f3671585362557650546e2b7776744d576d59535151672b4262774238776a3753416c742f56736b42385046564a54472f546d594b474c624d4a52793078333659364c4f717a32483771714848336f44374a753837395a676b797345747679636565523179425647434c59713559345654707151357432665066426d6a516b6a5a506a6a4a524f557637576d672b4830317941594d3579496a45524172636970705933495766497744566971516332766b357a714f68486e315a2f6447463944526e2f774454316b66414d685a4d6679683179307443662b7047357634555756562b736f5858727a676e5434646f7931734b686b796f4a39414d2b485532704a736858767a316e682b554a724e704f393632544b44704b6f2f7a504c577874342b7658416533442b324e4c6d3650343565434b32736a3754354c7167347a497933687032717a394755496454794e573274615245797a64436b695778564a7a557a464b54584e724a586d612b64397644762b773652362b7462636673703141626f71646e7135487a50393148322b74676c5a55526145594d396c785470564b504763453635754f456d76445347666e45567244714c64536a586470744f39565a6a58466d6436784b304c6b7450746a386d6c3755694f634c6854317741784b64565965784a3076495a372b58497254744d586c505a38744650416d6d316c526373677466536a54666f562f564233335572583936555573755949667053766d4143497952396e32367857493643595536412b5078573136566b734c6c3565585256743830616444764d36444e756e6d30744757696330555a624d6432616c33466c517062744b6c344746587a64484b4b7a5051617a36486c385370764930494e7335626a364c554d70687057476a565a4154655a37726b553954485866504c64504d4255557a7456726365386e475a2b7a635949386f3030612b6e55674d706e577038633071726f6a37527030785345696945562b57364f6741575172687a355539304841484f2f444e384c41734e326a4f44482f3578764d646d57576e6c65566d677a57696d32716e527158426e35654b7a53527135537347463332626b696b694261654338315637633143667071724d364969496a70414d37506b374e5a6564316e7353637348657133742f78673549344e6e5673554f6f5669584a6735566b315a7446432f677455422f485a3843714454387148794236664a4c395051723859744755546b65626d6a4c525a46342f74774930666a334b62784345326a514575624d71785a576b617162317250686578614c774a573768324e7a78757a366e586451632b493733363745365842464f625a5a6b57364476766a5a565071585166642b4a303962715a544271484154624145684b326d7853427051586562476378666466685a6365696c712f4636693047614b79754b79465a4936665a696f353173312f625073745843726e5173444678424f664b7a5575356c306f612b615a5331776d7261624337594a614c6c304c30454d396c56432b5572424b307a4e33426d72536b7665766b544d52475a4533353471412f594c564766646b61334f6c6e7a70705a2b4648517278396d7842526e7530427054556d6c6e3865597a65305741446e6441674548664e54336e6b4a37346a4363754b33552b43704e6a585631396c3059373558614771784b382b484f546c4d75654b64546d657548393967544e4f50736343466b75672f625730383266415353684549484377684837533049596e486858493979334937566e5a5767694f63567147676176354c3475567947354e30725a796e346443666a714a4c45475a414b77796f4b3153547434325a4178574a6953344b563979496336653342454b3768695a6a786d5a304b4679543749336b383665653043374d31314653367a62794d554b2f6c4d76756579443633614b694771316c31432f59686d6732475834364855462f6c5a54776e55726a416e4541786d316d4b6a35336266624979527951505a677a2f466e4b7472305a79593958386235426945455a39586e70367853456d636245484b35774b354944416a64623439436b656e574361753869315443646d646e707a657955324e446f78556a314f637673302f774e5a5578503661662b7a3271615578416e632f5a5a79614f5145726f355333723748565a3137516e314b556967305a56546d42704c617357543970654c707a6669652b5a3037543474595343425a636c6c6f2b4e7236632f567a5969364f6e6c547161694d35307063714d70534a6d53787866726e546f703442782f4d3466736675656b4a41584475375a4c32762b572f63434a394a6a6d4c5a392f5452646f575568304f5a36754e304f7778776a316f4e583770347a704a514f392f61674675666d395a3836713546796157786c506e45466871645262544b756d7430617579395670666664514b33645a784c76336c416367384951374f47484f52322f5158444f62444b486f5543453079716d5436565535726f794a3057454d70746556422f7743734b584a4e79756b5a7050724343436234766b6b65484a7064477a36355a7a7755665a71337a786f6e4b454e432b624e62786c416159355a427735716d47796c5861526b4d7a50384171314f3141593264706941307a50543345643261475250457572365332617136326355697156464c4b477835597166316843624752636d365a5065735269735a6e41632f5949744f4b67754a2b364e374e4b4b444c71386b6a314c753161413873644f766a757659526b35725668796848656c5575786f66516e465039543848312f514a56524f574f336433374d32666977547454375a36677a337876746f34366c5a7a5a74584d5076787a75575330386e56457169705243316c626666554e494644326866657835625351764f4169646e6158334d64325a5648643357374b686a4a62744266506a63516c376e424e5a306c554a454b666d76505972382f376874734369724b43676a7a34714956706f6f5270356a4365505a374c6c317579386665304f4a717a772f33636f436f357765354945307a6e63555a78547451474766717946776f79514e694b446850496f7672445766705838736c573748376c31756170795375386e6f4b676862387176732f2f41426d475a7547327033416d764a52504d623755725748513754744b337049644551375039642b72646e7a6a56537446544a5a5337386a46382b7a2f414e64694b54347079374b373765496b4d5a4e6778415257674a70734a4f564f37534a38394d564d49715a5252486c335743704e557155706e75524e3173354d2f7742594b425932523954554e5a7531636e63564e4d734a465737595859766b644e4357724779302b4374743356554233507148692b2f5a4c73376f35336536513655307044537238694c6d586f3162394a57792f533076473761662f497371334173716b71444d30422b75326155702f774351642f47787a77765262326352736a2f517a504d30384865754d527448673438677548752f354c446f695151743877386c6f31584a484e7a71383956576b374d376c4a36786a3275544c4b75636158543965556f4f35526f63572b52716d2b727039346b374e6638416b4a4c716a314a663546466146496d79376e426c30365572714755424f2f4e6a4a77324f304756643442506c5a30395a4c67442f41483968533933356978382f55686d714c456c6175673831796235337a76625876535878425176626b38694e54456b784e6a62716b4d4a7936464649645848446e4a4834303568685a354c5645716844585a6e7a735a477571474f6d4f4e5059492f6a6c5273416c54466c7158546b4e45664151625770424b2f6d435a6c786764746c76414c31615355485071334b746b766c6c71725859504d33724a7a504f54323659382b71726c4f347474537a3453694a644a4a6351496d4b6d64377034372b58495474305835354b7a42342b75724e5272545751544f6f7048535a334d785557307956497830645a6e6a327946465335506c64396e4e3969302f4f616954416430414a33537258456b35557850516e53525043706d64567552522f7a6b486b74675331482f414b6f64435867693067706c584c79516e554737333242476b314b54744c31657544546a6935466f527835593662426b31647061534861364f6b63665635747568434e564163764c363478794e6f703532776a4b337766583941327038676f3345547943702f473173736c766d314c466169575a2f7741552b61706e4431536f6136536d7a5459373579517271667249624f4a3859696c635457593668375254496864396c6e2f6b727071753076626c5635546b7a3676467a7572746f426b31365531585456547246726f5072464e4e424b6c797a4d484a4f41486f316c6677567568566933654d786350366b564c4163566a6d376b6f356d3453387753584a56524f6c6574655445684d4450767a4772366155787143647337746f4c6177767a45367336412f56787a4e707a38312f4275574d506536586931374969684a486376356f797936482f44525251525155392f3751302f49626a61664d455565714a55464d6f47767147326c465366496e7a3552774745562b73654842796656466f33614879554f632f71506863357a6e4e44372f414c316631625a506a416746326b3665726d686f6f4f6a4d6f6c69375946383073386d64705853362b645870584e6e6f4b62536f4669394c6e564e70613456586742664d49756d6b6e33666d4348664a2b3648336f3857716a5147377868386e4b744b524f654c457a4978354f5636686666632b7548673143772f6b2b76573667322b7969346671307950642b594831313654305a57704f337173786b656b72574e752f4e4479586e426a626f5a6379496c68314d4f64687a736f5354355355685a6d772b7150744c6536437639522f635452332f77434b386b3268774c656344526d38647445566139614d3563756f6b6731693474656463754b78505071674b432b7969644b376b69483061316e4d5a464d54727a33566e54416f525936686b46316b524b7056487933517935676c374972516e5a704d346c4d3441787641583736613575474649674132417a76644f63356149464e6130707974436956535962587855616b4e6a6b535575594266562b786f5339414f4a3645744e4958704b4d37476e41424475665662702f44507954484875337130583035594e747830763779564855523156526b566864754c4a5653785a304c52786a5147614e6367663042794f714732767334356d6264564364716d63706b444d6a2b785a58505054787333567230643647756655644f7237416945355765314d394147327638416f464777796637614a724f307479632b647330354b426e4f664866446f4f5256397050325a3372636e5051686a2b464e544f594a4633777139763841515a547a765576436a68557647316b7761466d6e4673496f314e694e6d527a33325134593172436c4c6e703075755771542f456a57316f7647795a7a55672b696f364752742f384161646169366f455635616145626a306458616e696b56396f78584b6e3048315230705a306d4f53544e4a50754948493970422b374f73546a43397359616f702b413639472b736743666c476c46354a656b36644278314c742b756c54766c58396476516336746e2f414751704d416136623537364576566c31325a394776304b61624e44547961313862664a484b56525a3566646f2b6234516d522b76596d6a35716144536e364d79415831516e46765a62615a7245585a364b63696a564b625a557474697932637a5a507469663150477432397349522b714573616d596e66436b6a53663941483274644c5a366d61656844714a7530722b50545531685564476166346b5855447946587557392b626c6f34615552694a41357a53436751616b4b332b3056317143714b7a5544715344516a73432b66502b2f4b374b7064576a3436472b32476967702f71392f316537706b5073583833764d415476716c482b2b554c715639704d49547163717932553758584e37447a37566a4f61466a4b5061507557333442442f34303443336a756869322b56504c546d54547954363542664f674f7961462f77416b695375666e7a69497168486a6d5a617547682f754d55764c322f47345743444a4e63726557526e59755273744f6c6d4758736d703558327039545a305864346b515950556c373065304f754b6e2f48336a2b2b6c30435546526f3436544b6b68514b6338582f7833657858564a5a4a3862324374726c64482f4f36326476424943536c5a6777774871486d514c4e4a615a46784f4b63426f30653158416378746a6a356e4a677265585854454c624855645a442b6d4e6341546a5a4f59484e51526b4947302b4a3755766a36504d732f4b4b484c6b30517968386b44504c566e3772503449557977585457554d5a764f2b6a37656a307a34332b534c6e66656a6a584b642b4a437676716e6b74554842724e6f584274537a54496c5567797a325a347a355435556c4f374c4f357a434266533537324f6152556d3972584345707a4935746e4b6136766b4843645a43764e706e505248736f34484e4433794a6375646e4a6663744d66574e34726f712f51546d30774b5271516c2b566b6a5a537943664d6e6c447341484d634a476e4e5a32464c48304f5451477030684a394656674e543043544c326c72724f474475557a423663503748506b4f347230673958384e486c6e504870744c794e2f585a466a49626538556976506b79375a36504a574c6255776c326247665131712f6834646e444e3066736c51664237564562717a74342b49696639334838457649667944776344386a7653375171306658337744436872337266465636465a2b56597137307a7a6869565945505371386f68585137344a312b3466725271494b784d77436d665a74574b544e4c646d77386d58724235643574356c35785435463669374770742b613676797a616d317658746f317066346a4b5842336c684e2f6659324c4a77695939623779616b772f304b4649643948546a465a69764351706764304a69506f495a507a4e68766d562f426169733667514f5554437936437833654961616669492b65386b3941776f393744416a6457636477376e2f324e6362487a5050505748313331644e466e6e2f69554d586a2f69644c385850737938656279473530506b756e59795345326c5136717250436c6b70722b4a4e42673554792b6d726e4e3758626858546a736a306b51666b6e366f6145636d4e636c6f49724a6343716376367035784b75524f7953476a4e6b6c4873734a3162304b65787652375a2f334d53776a414b555338633664652b6635676d6e316f3959575158397a72734b69654f766179373572614f364f6a504f322f4a61375031725544316d6f75474768684f52336e7555324d6a61485a6d53447052696e6a50723641624a722b66582b537a34766b486b6d6e357147657a542b434b4d70646144525646447348494f68446b4f36714b477237302f7a56647655664f66556a35385a446f3072724d526a4d4479412f3364767943786658543871674c786d734e4843394f6648352f46716471547632703948596b4d723975504c72545978316d5774517a7a42462b6b2f43564e592b302b41372b7653396e704e64506a78332f33484b4e344a683158386375736663357a41557165684b304e74576c4f6c572b4f6a34656974737337754d4e6646456a744b2b653333714e50656e6a65766e4148567a4c37524e577438714a776f47626d65787448574563366b38366c676a4b5245445578755550544569487676456a372b675479314f7a41634e73554d3449724f665247314c5a6a364b3746304453765659786e2b6e706e32645053637a3369436c7363767178414f64396f2f774256322f466e7a44467459722b4335664f3834325955646131584951493647724d4263385063746444457057544f63483265304f696665716159686262587743516b7735675a30304e36386d65314a6f5632666a6c4e3444434874517362502b70326c30535034567146337638416c41425748395748344a6d712b42437858614a714c706349795356536b4f61676c4b427a763076354357504844777663617538503268307739344b4d476e36705571486d6555725143626e4f4c6c5678374648323169536e6e39726c697878472f7744544739415a67457842584f664748354b79354f7346304a3474365469734f6c73354c353145376e2b3656686645662f77786a4c6f415876456a396846333431664348775075447768495771624f62686e584352314b48346d734f6e35566f44766661707a6d66736c4830434f77772f7a4958382f6f4d55684e3962727a5974676e3836694f67444276426d5154477051704b65394b6f32457a326c796a336533706d5036392f5234432f4f547a47384a7a34733652664c3167545642576f4545464456394656487872643850314f63396e545349417730682b6c4a5959626b66674a353237777638414b66307876456c786650536553326b744356362b387654394c35507165514132433564465471503944654162697341417054512f35447731342f5a326e3136344431795a6571453866766d76656e526e6d764d5a4e4c74564c6e536f4e4f5a3544547775584e5053462b614332414c2b75436634577a6d42387a61706b2b634c48796b5a576269637530513055792b4c305a2b7853633264465655334c356d7073535a30543563326350767a3647634b5a3338687861656b32684b66596e70562b5036667146625676584e71355a355038686f746c7963566c45694e5361773550354369616f7570775a5a5835735a574572506d55396a49377a2b426f324a705356504c4162346a766c344a354d3958644b4c556a315a744673775362704c31706246347767334f663755307a31532f54484a685a31615a426b6767346c78653571776c69305a6a4131312f4f6631486a385a2f472f7a447a32624f67324f626d4f553250623354737971717372576b477374586d666d36436d364562356274415a506c686e452b36746874636f4f444d71326c457a715448726f5048767465666275784c79537a796e523063714543716979713238576852324d59776d386c565161316a375258776d4d506f692b7766657a6a414a702b68736a38452b766f4b3837794c674d4d654f52517669352b4d6e5857756e756c333352394932413444755750424c6f47484747546a2b4942443369503962686d72746262464b6e514b4855567a456c485a75455630704b4c37726c4c712f52455055696e674177584759732b4c76514c334c3642356650334b4e6a625a644e61544961324a42485755304c54372b7a4b544a38626b796e3830717630514d417a4150384141442f63364f6349614e744f346832693948454c6e523850662b7774584854725a386468415a57453053364a4a6d496b396174682f4b594b55584f4a6f316959724f3350454963667a676d57684f713176474a616d687769336c6a7041585179446c7656384a597134547538494672426e7350346a3970475a522f4239665568775a683057476d6e726c675a585853756461732b7a56546c4c707938577067635855794d592b43506566736a5069775962564e2b746f4137757234676b45496647437961356e3757394b7a637a34546d4e2f506e2b45614348337a3147492f6f5843307939702b3451634a6d66544b366a7244643756515a69615239745964375a7747394d79456d2f545a77767464647a6773554a474172457638415a5373484c3347444f702f62704b577a6d34576a4f39362f67494b44624d61516c492f39727168367476432f3171364465395552682f5141324a6535684e2b4d4b716d4f4f5072364f5445487a63557351364c4f4d4c2f4c695a5244392f37512b644a6748734569397765307a2b316e354c41583459656b466761394335732f4c30737657596e55664f6375646e366f3832436a2b456c63714c704f496c6449733259502b353849657969793637782f61612f74723436514f6b684271757a386c756c6f32624733564e566e576a3067784d374a6d30617479717a51304e4b77655456736d6f6f793235717165713453675741727358554854357857767131334d59476859764e726971677230566831644654626862507a556c71323278643076734a756e6f7557313051766e454432413538684a70355a527054504877486b732f755265596169664b32654e4d7676706d312f6b337a7059382b70746b436e53696947455633554d6a464d662b49724a5875644e384a324a542f704e7670614d5a6e49356378645a6a755251464661364a6c53564a3578626935432b4e763246564546684b577466574c486f4d353339663567776e4438772f3130384c52354362362f714635313554486c5236473074694a3436636165487564324c376b6b5a5432474e6167667856302f4449666c2b55692b4c34522b7877666131716154576c652f48723543433934356244644e4f5074354d326c594e6947556d6647763355383431387043544f4b6e49503074594a5562762b4253347665647554792b77622f4b3158414d6d7049754b704e4c366a6d71417054455a61557939704c76506d59736b7248725464374f6534416152653469734d4b486365303164594f69425574583975564c2f6b53444f726f536866516d4c2f73666f584150663066362f7743514941467657394436527a677467416b6f79614e4950364c6b4f7a315048334463424f4f72336533327658315a39375130507372414461516345775365716f32664c33356d2f497079334c577366324b686b583136792b38522f582f377a474c4d2f774239396e486577512f6646542f3043774e6358456f6e4a52542f414138557859744f6a6c634c7248532f6f794e596c384b6566342f7344393441344439337548354f67356e4f6a516f71467453684a366c6f663152474a636b7242614a65416868443169774a634b794d2b2b78502b423834596646373838624f505850414c744a56476932315446496d35787156425568645669435764483757356a79377858784d457664307a5950754d5061756e33674950796666376a3955704c6a56785343633841746f62387171556f466252756e544c386c65734970535652467a6a4f482b795366472b38793578497164345642615a304a2f5a7041756b516f56496950737038714e5048317a2f423968667a444f4e43326d52394567705341476f53397750336e727745707a4a54494c796f6a4c7036796b77304e55797054655a326850504c4b6d6944545578667a5458517250334359556364422b79483670646f4b747262766c416c7a5a4c4558424c37394231656b357977584f464831677656616c6a574642625256783776716679456f7234517634707a445035766a4d6a7149317165507335433853687556566c723546394e44596165704b7a6d6e58654132785a78632b62697672392b54676a37766d55745861662f6a636d4a6d4a7a412f543534736a47327038357a75456d54524e756e5964466979497a593664717759587a7557785361424c76734c3542534459784432774a6c494972586d324a3654463147694b6962535a6f6441626b334a7175697a626c7a73645552364254795573377877442f754d65463335476941625255484c4c554d304a73393036744678354272314c65614e6e465644724e5271556f6e65366a6f304571446a4f482b7742615848535a6e513450526a2f4147492f53676f73587a663166597873466e6e6d6e4634376a64765377705a636643754767364a706f4c4a6e4c71587566556e466a485479674d6637583867494c32636e74647337612f68486f3638427761656553342b7241663841495a6d54717a30614e576e786d5668345637416f445273504e4f706c663151756e7977746e2f62614a7666387261766a62396450454e37633279494e32484e726443784f524f336c775a4768463438744470684c4e5574624a42593332386f5a38424c375344556a5a2f31304c2b7447353265336c382b6f6f62316e586d703354564c347a5237334d6f6e3177677143695a6363766442536767725468384851577571504c73304b584f41796665626141344a586631616e5a6763742f774168504c73696a4c6f784b65563059516a717a2b3643322b2f475a7a34706c6163556257723465506e75736e7574524f79386961416657624e556f6c524d32704866346a69726972394e7a3837382f77447879395a5931582b6a507131545a466a533773476b6a58394f504a4e57677339586d754d466c686f77396771377031616c416d3050735145524f733475524e66584f376258557232712f77433463612f79582f433331582f4872316b387a38447477747a796646385359337548356667654a366a2f414233794c786b55334f6a327338684677446c726a6d63626573496e6536616c332b66786638394e4e577436566d654f346172396c3163586f79616549324670496f4836326e4b324c686f73584f3265696a7472456d745978324478526437374334414e4d6541483737704d567430366a467869516833764f2b794f6342645250504e52517676666b2f5979725655344363394c7055475a434836443475732b59754237564f3864302f37432b432f7672523673655a716f7650766a6e70712f50624c48325a6c44683249394b75336b6447766d746a42667835746e586754684d6547667453366b302f447965317a7931722b4b7739614b4c5862342f77416539324f682f7744343553374e735872302b5236433548355575646a377374386567417042634979743751343532482f436661693648442b77486e436f2f4a2b544d4c54386152334a326b647372527152745a37305634693057612b6b765347664c36746864783948465856555375766e70784c484b6534666a39746f33527a5241674d2f6a36594e474a5752526e4a64786d61694b43536b4f317a3657566a5852362f6a73556a39795a4e57396f5a63344a6c375a304f5347664461354e552f763072546264576647425433726472625867767058356875592b624d376330504271664a7336584e7163532f75507930397974625177624b486674795577753978684d35384b5864425078443850473370316e356a7779586256576f2f613239317274446331644c6472754b3148557362725761566c46744e4c706f6571574965347632424237414f7a2f37556765382f72315a6a7053506e494871654b65553954327671466673633471456b396f64564c3049612f324467483777732b4a674b576f68576c4a2b2f7742776d426c6f484e626532557a733579675971486647427550366b626d41735a56536f373339676d4e59723968755071584b5350764832474433555a36666542346b683346637153544a35654b424c434f4a58576b452f737a5847305a782b6158334b4565715837316d66374a7275676b4f2f7742583775414e38524d455357386462624f704d6f6675634a61497a6d6578507a48524b6d502f414b61535850597a2f4979635357434c765977336c2f55683041542f414555636333515553494f79564339687051306a715968564b6156794e36357a666d392f464937372f774251663538497757384d66692b7636686b657343584f746479747779727a53592f2f414c6343472b3262716b72374f444f64597067645978496e396371426a5344514266656d79323334632b59555936782b647a67337a483877477168774c486a4775716358334675505058775a306b3564684351392f77416b7a475841343739482f5468763964665833444f7436556b4442557639456444506a37336f6e3951314d523048314f36787674456d4d6152456f794836616a2b644855695a364164584b43765978584b41366c7a48756361584f374c614c432f534f7553376a584d4e333032443765652f716c6937706e7a354f6b486f372f7475666e3368656f586961767835396664795a5871466e51667776707035765253514f38687a344d714f584e386532745275734c5a66494d706b59315a6444693636786e506f4e70672f324b703837583062566d4c30375072714f746e49764d37746568726d5057764e706b62426f55317a75532f6d6175792f5271755545614f614475304d764b4e6f38344d6a744b564e6e5647744d394850776950434942624241495a5a614659734753337339664c4c4d69507337597335393268545858564c4a644964476b64546648794532546b36417a6d6f4a59562f444e2f55693138767a7057484371786b7649755130743057474f743950627a726c30446f37466562583348636a57584632504e6e72742b78384877787a324d4d46562f58727a323775624f4d697576502f5878383338396e786e565755556f2b56613268557656725a6d5359714b4d4a4d6d6374465366745544556d486d67556453364341425754685a523758577254452b4d79504f762f41484476794933764d5054356d576d39462b4a742b52575a6c46316d637244756f5848426c7942574b4c705a3336436155694b4856394943416f4f662f442b576b616533527069666d4f4c6b65566459755762727033533848324d643065304c34424e4e5243743941675930477350676e6e36514758776d4875412b2f7744505861323348444f5230442f465054314d7933514b3558484c6b69355058334f746869624d736c5a344e6f64474e517353355572703239667966326d744a742b507136542b626d31496a75346a704e345035702f343735487a7943304e456d56346c456e6b755a46702f5159753769767245794c536d694a646d6555593052714e7a766c7347424b712f6d663777626a4d5a6a4539343369312f554c5739532f48347a6b74305a713649715536695a646a506933457a562f5850794b425364436a39626e794f5a7156643667782f774374666e69663241724b6b735a72465a783341482b49766c656c3439367936454e6c644f686c2b62346c794e2f4968627246626f42536e3459474d712b77355830553066784c52686569594472426553434c76737a307274717875726d42775a2f756d2b4444346c2b5a6e7158667a48757a332b566c6d65517454547957467974635a556f302f77426a775772576c47684c516b566a51787a446a49486c4d59736a4472396d746e5372452f414f65794b3656554b3458652b79506a4b6862594d37707759766a6b63707636476652306c6d676d4148474353684e50662f414b42734d4639512b722b50354a552f706c6a506b624f364e38624153333570355a53584979656a6a476b74704a452f647a3551457a35306a2b49434d434e6f2f4433392f42616d64314b4b36365a387054516f4e69456c38564a576c773345487531754c49654f42337659664774464a72546e547643723877484d634c6a396e452f39695350737a516e346c6373632b6a45587657393379416c6678633470662f76412f6a2f7739686b336265584763444a2f5373446a78352b364b32784a4763486771524e547166675576367a726d726c71455a35524e62506437464f345a6d545145773044542f736c7766696161554f3931452f58763537326778616672674264487136506e4a6c54526d48396b507738465a754e4c666e443445516c326d6934366c4e39746a446f347038713372437159564e5452655168522b797145516534794c763331442f706f396a537a2f672b7671514d5a657863444d747a6c724c7631364872456970647838357a725549444d584443666b7338346b4a6635394d2f6d2f784d44372f5674764e754334653053455134766e44352b2b754b3447303274657731643654356d4839636e464f50506341384d6a502f414e6a54393752734d6b4d435a2f3279356f652b494d396b78546345526e7a55454b7a446a513976574f346c6a7547445666344e44672b396f503841654f6475367344712f7744687870516649653364763564756a664b71572f4d326d57315736694a74423265686d674e6d573161595171306b7236766e5a7a7064544d332b51534e5351567a366b64496e7a4853544a78764b4c5048346457754f43734d2b4f614f574f35774d356d4d5658557539743143614f4b6f7731734c5036564930307459716b366551414d2f77717933526e4765495a542b4e305772744b68575976723964737135342f4a5a555530386e5856447541716c624f38475571457342524144627154682b357a5048695863564968586c31724d4c505446705947556d48567066476d485268374c3552546c53364e532b325866627a312f59326c735158556d38552f6f7771366e2f4145454666394f6f345265764f69473136726552476c744e422f63374d36697a3948575436426146445245654e364b574f466e65745333682b3734552b314c665935765870787470506a417149496874765169787275642b3345484b536a653553354b65742b527a7531657a76334f575469786e4b4f70575055753537326a774f4450384831395343714b7378747a79376f4d51514c6a424c325174716839727968615765447a63392b61787064705734714339333650332f496f46416c726a733964414a3978533273363249744f5a72324b35556c773264535046394e66385730716e4647302f7272345065722b626967643862672f526d4f6751712f622b636e2b4c6a6546304b577963634a4c725367324e704e4a6643756e345447646e3735776844684c557833744d2f61734d496736314c554a746c5069345249562b39595567494650552b6d535933434d376c7258567a704d4e596444396d584563436670426d36636a4266362b7535637a7573415a3568464c304937562b79716e6f6e42726c6978552f58384d6a635352343739395966663642766f48314a66463853657a394a464b2f77422f573668667362554b53363369654e736c37504f77766b48356638415068384d774177725473774d4a6c644e6e765849776e706e516b6b7a726b57644469556b5748387a4648316e2b35506630666638413263503566663057664143335a6b4c38514c30754e616c79416c4b515679346d4831746b31612b4d6a716f4233656c4b736c7345476e7744357849694a41482b4337424d7667374e2f754558704a5075653678665857424b38666c2b4e74667870373859304d6e595074343376506550735067673468727a6276796a36647a614450725071644a73616a464138456b546944525830567731442f72637650573453357a7068374b65673576414566303231384230372f744b37574c6c666d31344d3256733557686e36663841424a5547314837744a6a4a3470342b325447425453766c7164385a392f7744706167426f6e5570335674587a653056744f6c615a487677394e764a66496f31382b795954697478795733614a336f797466567a38464b3535444a463055676c2f43354a644e4c57704b623641433845322b7a332b544e596e7241754c5668385a646c5068662f34387a61354c4578786157424f55493042496a41374e70507557744159597870306e66594871654b2b6d6631464b45654b2f714f66792b34314739585275586d3371696d3534396434363058374758524d7a41433642476c4c6d63484c48462b72506b734850584a515031567a6976746847416650587a6a4c786a4d5a364479382f33462f7945382f2f41426d395276422f4c2f5452744b392f5731335a766d32423553726c575435766c5a57646a6c484272486a615877725832584e6a6c2b506a2f595170733659664130777037394454727152614c4371742f774476712b5a50384b6e3865782f51764237354d4c675a6675616e6b5864444b63663856635366705a2f504878466b69703944344f4351665a564e372f6a644a547a727155657878757a4e7555614a656e48356165736e72563635654c2b576573507158724b77456232787055786870736c386538657a625770595455344f5758412f695948527a2b31485647435654644a43326e7a717733767031705846616a304e654e354f6a79476279436658432f78704e4b3766486f6138696d646459374d55394554353649484d4b5659444d376c584f63583172302b7934325871504f5677547734654175694847706a392b396a647961637865645163533653444b386a7532494353706c5665517154736d58436d4e4f544e7a756b4b74442f63686e784d7534452f39424366576e38712f44665262786a453064756e4548416b31525a5638766a7070317a2b6b2f4c6a315953304f52783875756e78794a464b674c396e4d5a334a4761446961614a303654626c6952714a422f667a394c6f3941714a2f41764d6e517a577a3674565765336a3332587954304f6937396a524a6255343865674d61556e396347756e784f67594c3758384b3966384142573852637348393448385950555657644a343574585956536d615838696e796a4f546a7752784b785755387a38396a72672f6b73316736336b45305a324b6e44703957637751382f54315a2f774346314b395a774c7279763767506738666b6c744f4e762f645453456142666b65555a766b7a456a6730786a624e51506a6d68783039527979787a6d7732673036592b584b4530704379476e755a7835697773442b3448365952446f56612f6b63374e67356555665530392f43354b71546c4d714a4f52303154704879434e53632f4e4e542b77684f4d4d6675365667436b4169644730396d4261486a2f414f624f4438637563486c586966314e5750785763366c65515652334f44657044493165524a32684a6b71376668306e31756c5073354247367a72696f643733524f6c61412f38414b507a51394b653145725a3831384a7a377561386164624c794b59472f636c7a63646d66337666676f54566f5379787a796b3076736d507730784f2b594443666878476a667045436a504b66376e6e34742b4f74696666366b654d314b6a5330416f776e5561392f47597956684d2b71354d4c4762337a504a5073706d61436f3552593259506b636c4b6265343166776972504a2f774338482b496450786f5a443568725a37307a67576c34743468737431446e6d3556784e76655a6f525a38567a397169554c6b77564b636a726d2b3335413462503676487332704539333952452f4d503770583462365675314a712b58655579416669366e4b6f302f47764b4a3036546e6e6a776374704b587863365752716c6e6e2b46534f4e53395353506a303057552f576d4e44552f46362b6f347a666c7a2b636b48714a3452766548656e6e6b6d72702f77446b316d586f61785649355052484c67736c796f564a656e594f6a5361307079594b4b766c567a35756933744a6b52423036656c736e4e366a52583032394d4d6a7a33785a563964766b435378394b444e6f366855374a7031636a6f51644b39436a50636d7061364163424c45774e61557472454854722f3237587445576d5a6e414a2b63656b3231346c476b4d337957704971515435315876577561504f53324737367767503759754e624c495459457738357a6b784b633568467a33524671326e6a4f52434d38764b3133583655756a44706373453838357066746b2b6b7a6b68476842314f5a79744f66396a534965674c706d6534434d4f562f436f2f3644617230442f7548666b7638416968512f5638535042376d615650437078504a7333567577744a566a797054377337526f5a3335737979354c344f447a3570797a5a61564e663742502b6f766f365770776d656f6a3335502f414e796638725079696e717a764c664d572b49656e2b676745302b43654743724538554a4c3054704e47785138686635515050754f576b72616133544a50713255574d44336930394454302b6b62726a52716f412b46314d37364f7657585234686c4168454b686e482f5a6170567a656b78513155646138694a6e7a30724d476e3868744458386e332b2f51597430557938713468635642397461505a5844796357645771564941505572446c6d61627066694c725356337648635553326342703862504d665879354c66593852503544546f636159646a4a7657706e6a637a35786573654f685376342b69343238555954754d5336347668462b303959445334462f4d70716539466133735748556a5774456170454632685536436e35307841614639426e47632b5541414843524f35516567665461427a422f754638355059494f516c6376632b304c6569734873644f36626f75464a696f58463879666950765a77446e762f41486a465a74303767776579652b74354b533335574d7057756458316d52645a5078697a6f46556b3635627632524e343878366650693937533738496b5a5834317235782f63454561452f555a4c624567716e6d676f616e65314b35317a746641666247536d4b2b73634a54546a3837756636566e384c446162452f4845317447647338416e454d72703051756a6d437034436168553562724b4550564f6c635a4c6e48714b724f5846507a764b6545596538535a787443576e2f543935363842393050715073486c794f7171392f564d664773587a635177467163337255304f583968436f37756b48416f447644643852696848412f70703934396533396a4d68682f44722f6f366c4862394c316d31666b5346624a4b4f7738677a5572304d796555556a72434f707043487464636c5031593364595943484f6e3533746e2b6239503067646f793071616c386d30616331635075583052714b6a79444e656e5337637974504c61644a50315944524e4b795872546d484e2b47704b546c4b71675663676277612b776d74694b594f58704c4d694446736733697572444c79387a3646426974532b635856386e74734d5931574a35544e3750692b724e657341536d367a44747a3973764742315034326f355a36546b31527052383162363157616d6355637a6c7a71455234356242724c50626d31464b4c38317979554869502f753154774a2f4f7a313371696f512b4232336d6b63634465564c7a48444837476a474c6e50374a4b362f4864596657484f667573346c77644976332f5871657a377664567830484e63785930754d724a5a4b4b61565266586e656a6c4b46646f59306577736f45524c673963332f41466e4f6f51423656756d41306766594a484b754f6a34554b755857756c3076464c4b5a68364b6f347531506e375a5870494476316545786243413247433151636f344941427248486e382f7547356a4f5231736b374a3975536851704a456b716b766e7654593953317566764e454b4f4c6e6f59376e454433337a633654476b61672f716f46304a5939414f435a363432436c7a696f424e6a4f4a4c505a7963446e5749394a6643614a644d31744b634152303238615a413354336e6c39786566703936476176715834646f65575a506d336a634f6e343571346b454868336b46576e4c72364d312b636c67616d4c6f78523834764e6c582f46646f41324a3650732b353776326156737a76614b7a6a622f582b34323738722f74662b73666a47373656354f763674656c747865736d35426a5a2b3744722b51374f466c762f6b632b62356436797551663439614b672b4d30554c5837716b6d715435456a372b556a5872614c6373386f314e396266783138763943504964484838725848735259645573742f6e76694b3674587764577757625a6f5038587a664a48704b56666b73596c4346494777484a636b306c79732b454a3655764636346a7646444e306271442f6268515a52445953364a2b4a516b77564b4a63557a513933486d6c517a302f774370726c47444444737a56454947752f752f4d64495077623958764466547649386e56735a78667a476f32724f6f33614a4b614e796678794e4d6561376e65746c706d354c2f414264433166594c6e446d45444154534e2f4f4e773161544e7037776c2b6366705436614f33762f414a332f414570744c4b77664c455a2b6275654d307a7851305038414d7564756d5732524d314353584c6251524e654335765950776d50456d3454482b70307257784e6264427a75436168444539766f6f2b75376b366e735a53755577654c474b55766b706b3735422b724c43582b6c6e7a634c6e37467652555164763338762f4932472f464430697a2f5737317a38503841703173544c775473736f31302b66374e766a586a3272426b534f3039584a7a6649702b45475871566a6c3064553133554239786e523644566466304770616450546764684d76384d507833773858792f786e47394473725439512b62753341724838307039522f4976496642635a4f2b6e50782f4b467a43555766715a73347030694e2f325169506c6830436242637161666c6e56314a6e4d3235592f6847756e6e2f342b75317657623163394b6654566276433848787a7757624344415872312b44387138686d7a4a4a582b597a343155767a616b7266626d6a6f31504e726a6a423358416f4854664e704634325574626d774f6b58396d6770764b2f547a64385a386a7a386d6a7a37433878314d506230644739753962716a397a4c2b335871616d665539784a4b65584c6d577a3243707659306d435567667a303465303569637877714f742f706c676e443574354a67355632656e4a6e3867796e5a66796232466e363059352f5668335830496d5a4a49647466795654454e3439337a66436e7154585a6f32496f37684e7032784d634d6a61556d774b53764a4c37475035473964552f38414c647062756145636c69346b64304a74704c6d716e33496245694e765666464d446b704d4f55386f50325a4257436651795430636a4d57335a6f2b62726375716252474b5a396273684f57375967304c78434e4d68537338666d695847772b4f616c4a4f2b45554d414134372f774479682f3063386d395276786b384239622f4141303969335939477273727862316f6b51744b2b4c384d757a59777a2f4932536a734d34754754614a6971336f6c4a4e41324238682f416b6c68302b783269757061737a32757a2f7743683473423633746e76644a63394643464576697165385a5633354b41515155484f416b6e344539582b71674e6f2b2f6e2b4a382f522f7742657279376679687677536344626c70366f425345684b2b56626448344435504e4a5a30312b775956636e396f6c2b79497666372f63587463626c574759694e444f73754668792b3372484e4233735a784b4766496138314c514664544f704b7567784c6e536146505847626d47524f42616a684e464e4465416e764f66763676464479716c3373494b506b714678764c72436e48767a4e594336536d634379466651415132442f4672782f307a39517658483034384639562b2b55483661373272446e626b7542745a2b466f38625167575341462b7352496c674f68526534574b645341306b435372612f697a78314e3161576d76626b6469632f3841746f2f6935742b5865732f6a444e727a4c50713859784d76553845565a366965425739653362646f5a4b7365717232396235456c5735484b2b5769574662446b396f4166766376323876763954465a2f2b6f6a506c3339737a30556d394f5055696649386a38767876576a305977507665615436666e6e684f7a346d7279534c374771456d657a506a6e4863756f79313648654c6952514e6c6b445143704b566c53795931376271356e6c734b5839546637616d64526e596c503437655358656f476a702b6e4533717035503435356a733547486e72385730344b4830552b4832485a4965747144517a616e376e564a57394a787869446e736f417636745832695a7a76354d5474484a625139715134442b636a6f67665776535848316658527a49736f67354f5771516756537a4a5352347872544d754750514d327245503637516438597963422f6c506a4d6e6b6a487734466c32647a62737a7a364d54346846637a6b544c373765324d4f5771633039613149754738774a736168506f5a544d347667647350472f584841386e566f542b412b4a4e6c394d634772783750755967354d374d386a7077344d386e2f414249646b6a5735744644705141304973725035765a54372f6d56336e4c4e5a726a4d635a476e503568347668486d766b6b6671623431334e385572736a6d777458786847535a593057697a4e6c7136322f3636654d6c346757666f4136796b6a3548306d4170306444714e644b307845316e6d476b587872625a7a783541347a7162624d6c41757530436a454e646755492b49727957726959314f644f665462305059667561644a304f64774c4475372b4866343061666f444e5236652b7279727641764b667949565234766a2b722f7076362b736b78735350617770614d544f3366437644494e42766c475052394e313647666341517a54706237424d4b5a57382b70654c383165623366644e527434374138643950504e50486f66564478764b3846763841476454473166527a792f7737782f48394e2f4839432f785a463369336b4b764e2f4b2f55376532726b2f4c6d696d3865537854422b7a537a34654f4e776f704d7a614f586d38652f2b676a2b4e426d2b50655636326e6f2b49656e58712f3431356c70656137337142367a624d33724a363431654e545277706a586e3747623473374878664a734834596d4f6b614b6e4c39744c70667555684f7561694a7a4d59374f337058685831362b6732394e2f4476444e336239634a7657547a363730703076494d303854576a394e664d66536238575051627a5077355763564f4235692f7854436c4e793667786274686569555a4f36615071552f4d72324e7253764d7846597258642f46757449383048717034666c656e487176353334786e6553654b65586550654f2b58617548343575596530476a6858784c726e716a306358794354326a7259356938512b7774616a7053424f2b736b6a366c5864573236745a34314548512b6377547963756c376165564c54544935386c525163543048726d517866584d3549786e454e536e7048784d696d6d4273353737633378646b4e47574e39366c7a54517832386d586e4e4b6565613934486e7a4f3937356a573568396366753778492f4c7a76766d39702b3941394e54623857664d44326f4930705262315a643049644b71493239356333346c6d7438795459486542505154766d563179312f38414139397738397063634e2b376c774d36484b592f682f505533327a54706638414c4a3957707a52483566686e524d35624239335a795170663749522b34333273413164502b7043764a336e56314c307a557a334b446f7267546d794d6174414f44327a52724a59732f77446153672f5a634a495050332b3977643967593154564c6a5149496f664a614950624d7668525344784e626b4c2f414648505966422f7848334542385437452f356d5955487877312b503666714544366f575369735171617965337146503578552f6570416d6442513052384c3644324f5a305148324c3751444153453348666f4c42776d7263596e6e594e6139412f535543313537626c664a504e6f55464d4c2f414b37766a48342f6b48347948394a396f422f715a2b6e4f546e7965736930664750576631667a537a494d76314d395270546e6f365769486a766b322f6a486e5a636473625547424c6f574c456c6f4f6e73496664374262593170385330766d434a705750686949387864755a2b54333550484664486e666b4c3671795178785a556c3075683572757851304d6d355059437457736d437170776a487850426233345866783836543453775570576330703336646658796b4c596e354e666b526a5652622b5636786571552b346f75582f50337933795453446a66736b754437304d2b677762736b69645130317453315876533476627750382f3654536b384e6b6342594f2f38416d5038416c72356f534433667945395362383365476f477a5a336b583163354255645856466d456d54344661482b6c554a7a7234497a6c3736665945314646445578476e705230302f583868535733703675793939506c4e666b4f3370797969765072314e517165536d5646424639697975717a67314863786166317a70704375623766366f6f2f5268614f4854674142553251384f726955566e6f50455a376553646f6d76587a374375716b3674596e4d6b7730425775686c535454504758374e50422b4c6f48756b42445673307631714c484f7030596e50725074504a65713146333965644d4b2b667736787a597674537a4d2f306c504f484165396f6a304357624f48616d3652364d6341323272725337675756394236573050377055614b4e44394a4a565446734d714f7a644b6c5078434d6f7046616765573037455574374379327a746864624e4e594a4d6239373955616c57624e6f30353154535a654d4c70686d45564f5855576c37795068653655775a6f6547524e323636743751645270446d67757676314a6450376c7450316c4f3458747a5a6b456c776d726e736d686348626b7241434c34677a386857566e4b543130396a3637525a42564b7a5a5431657132396c6577466f6a4376335a2b615444547a67694d78704c53347a6a666a4f354d344f38794f624a5a335869314e5271743037693376496136516839674132507948555479587372766d46554f5450317169396e546f764262706a2f41483830414d2f32484c364f75536a57624f70326830314d2f7741646e48465766393949716e583337684957524b2b4e4b7a497a766d4b79656879314f6d427362713341544c4f5864342b6c7a48517a6c637a516932414f57526569384569316250594e754b552f777350684e2b5a3034476b67622f51466f7272334c3635646d66525a6c742f6a354c5430744d426c57363533386f6c7675594651725156445455314879552f7436564a6458387a542f6f4730356b766b55633257446d57556654556d4e613030353778576e4a714f50724a6544687a392b3537506966384157553734665a516b35505a2b774d4d7a52357a342b31496f6179356364796b394773536e31644436417935463147576b66647950596c6d343161733432755362706d423959767468697161674f4934707551696d3759304a61382f47766e4c374d466258795571305658314e62562f6a70532f4b79716a716842307954704834516f684265764668596474744d476a42565a64707637774a62614d7a34615630434d2f416f775356704d2b7670456e36716c71456b702f3032557a66574f594c55394b764f345045504c65616666414d447a70434966495a36736679753775706d364f6473746c764b6455316d62623074594a366865564b7665703364744d352f4e51774f51557447597a6e4543412b57575a506b4656314a5a75646d664670412f4c7a38656b36596f527a716673617a657846714954714f476431306c662b447a63565032564553507266577445596a41626c526d337a7635592b7a46586c385658586e4a78733568434b4861305538476968496f6d6b2b4f78315831356a7363674f336b6266313973357035446536394e4e595a4249527458566d344f4a524333527359314d5831536f4c623543522f373949574734684f4165382f3354384d5a304d63447554576d523873385769755679346d32634a754c727632397966537331496147535a5038417369474e35504159434979634569514f616a70575573344475486c6d644d782b686e4a7a4b446b71597661356f567932636e626b36436c6359706176636b6142306b73617672556d6676344131726f442f5547642b6c2b6c374b364e4f66564963664e703864714f67373750354a38446e64514c6531444575455636567a614933455a6d484539596f42483469434a466e5436556a7732544c4e41553942467568726a315065536b704536334d307245414c76643970716853355155752b42616d42386c2f7341506f4f577633487038527230364250306d42717a794b6e64537432626431343651436844714854364762786a666848343533635663333638303566304732583469354d656a3633357a4931474b6f386c6d53737766664431644356315859653778625766614c50363572464e524f756974783370616f4f76714d75353676596e31335350626a2f6276386a6d2f2b5a62447a707462356e4c314c7972373269457048574e4859757869723273364e364e526a795a65304b4f645745396c4d58467a3049556b4b664d316f6962586e764852564f716a737a644b72736a4f7656584d794b6b5979685779776443536544526e305a34334f703635666b5263524449722f6736515137724844476547793367474c475a4e4a3973306d5a396e79325355546d6d4c7663316e49353968666a4c35394e41704e4333775a7454757564517a764a665a542f7049536a544866793546626e6d587a55737a597439666a5a5276703557564345783261504d764b5a5158646e3953795546377532537572714f5a59386c324b7a4a58654b392f4e77477454354c426e314b79757a31797a4851336a675431757a715a36475551424a524c4f344b43577a3569346c76776535495539396f736e6431396c6137654f30514c5938533275322b7a5966745334567141324879505a51706c55746b376d3171567a4f3933666a696a4b797670704c6739645a32786a457557696b3569596e6848634d656549624f74717a4f3863586f353252595757336a47706d553439465758485a783572314d473736646b6b3544306d6641433271306b2f41455a6578704a6d4936794872504262745735657979724f2f6a52346835474d794f63774c38796376496d4245314770564a56522f4e4d4376324b6f34747171766455305772687054496b6e69767039346b794f6b353664443331486e53426d66366c6469734e6b765075413132574b316148324e53666750584772345a7665726d6173357672757061316f74455241526236642b4a5675356e2b52424e5350426553646f49704a304e356d537a3546473773676f7548715a4c4958532b7a3345415454665453617579754f4d356d5a69496d76514f33594c7648786c7773394f6f7772484b532f50326d4c6968696e6c674752585a59304f2b44783664633931334f4548577070624d3336346448366b365a6963786b5457795563336a4255477a6452702f446f736e4c4c754b37536d6132685a76307648382f34463051316a5a504e7a2f6831435163745443524e4d6b585537666c674a2f42616d6a4d74356d453767787a75375878644a4a756c536479513044576d7a694579696d65723349486d6a4e3962334748447a6a72506d676d655634316250584a74705432676f3565766c466b53374569736930715a465456586258325a4571534f664d785370353630397042616a63416b3073725736316a684544377a4c7059756a6c7565716f4654685237736e6a635347546c72585a31524d5769673647536b6d4a6772373141453433476d7848542b6e4d6d666565515a6848666a574b66545a5335786372472f46303152784b3230353732517a336936706e3268495371696251703771412f376e7435544b53714a68704e706e714c46787071646d6a5337736c6e446a6f5a5936364332483635384c556d592b4b3639756d746e2f57352f477061543630755534373275416b6748316854776e6849505a326a7a2b4f58444a63425655355554686c5a4b7a4b4631434778326f6b354b46696546554e53792f35347048615035557a66786a6b38424d416769686f6146756d75706e75714f6d656e6736644435464f6b746649436b7a2f787251637a3253645a3176774d37305867376c432b326d747756793573534656706555366f63465063396c4a58483171737973473174687939734a682f6934794c4a63513971366d56514a6a6b41695532645451586747334c6b696e4b694e552b6876335a6f526353456a4d7633627949746146743937424336556c324c415436356e43345a476c4e744a4358394f766d4465504f753335704c6e614376672b726e6b55794e766d6546442f717230576f5175476f46706f304956723547316a754350792b784c5a416d4c6f504c4c5774416e56474670566c4d4a4f446d6a4757527a6f7046414666714437374b4359524f714f4a3671554166505952664a533051654c3757755a69616e396d724771684536556165643965734e61716a696c554e587055667850364c5159786146554545346146616547372f57734141705974674c737071312f626e705969716c6a6b637165396f2f42795965615447664a504d78325362542b526961474733396f4250366173496c6f4b706a4b45493130443155725a624b4b314f354268794a466b6758696a37446558667646784e627658414652546b36586a6c724a44424141616566627931586c6f6163502f414934714b2b6e596f6a565271304750553565643130456c77676d57516b324d4c673946503373317a7565387661583941626a367149382f2b537a374c49353548724d4e6b64427953546c6658786c766c6535303030627557584f5a376c44384368446b38786c51584a3567474e4654316e58307554616a614541765165363061715a65712f686464546b335649716e58796e59683434327a4653342f774463614a30674851424f4f75676d566167614e4f6d6861334833597a7031356b7335624e63355630354b6f2f614565572f537a78536c726d4c754e4c6763756d6b572f77436b4d365838526934656c56786f50657837362b525a2b3437537234714c4e52736b634f55306d4c633178537a566f65383576326b506564593863356f4341303465736e7272754c4e552b34706c7a64706f6855347376556a33575a63743566465353544b7a4a52396b4b4642314b56756530514a637974507966663767366a6d656c6d52723855524e315a456272725a355179317549484a41496b7330766b514e58485a3746304b4b67516e4c56575842556c5145564f505a387736794574306f703336705a363962756c6e496339704947767245534d30645375594d2b6a345932634d7442764148764b47546d6d556546787a757457786e6c36424c6a6a4a6d763546774d2b72505343612b5a7877306367546c54764a503065636e792b6f5a7a6e772b7a6a446351652b3133424d4439334163657a356a536238704632797338773150357a4d53547646644372506c58354a2f4a616a4e43654c55756b6a6f6676666344517a2b73593771616c694b54346c53413633334c6b48616b634b775042726235476961763976565641566c666c6572745748586d4d6a666f56552b516638416a665064586d386f31747032776b6e74634275617038332b49443869356839665a5877446e4d71586c745a2b373832564767346135585630485858426f42745a2f4e54577a532b616c5a6133756e57435255503746327755317435584134574c396d524a49745472335454744f624f7047564f5975664b7362547258716c67734a6d5078564d4b714a644b4b657059782f4148734379414a544a7a4476613675336c382b6f4e6e4e6c357447504b69754a63305338544c726f6c435a6679582f414468544646707a6936373744324f7548364a4d4d615a7670726334505952325373546274526a4159617059324f5046376239545235576f6e34714d6d5179746c593175586d7a616b49544d584247626366507a2b464c4e4f6677433446702b79727043442b44362b70425475396f496a7a735372484a4d71506f7a794c4873764c6e754b42586b6a744645512f59415a356f3361545673426e2f586c536c5957544735354d6e5a486a494376314b737578675a2b6143304d3559655a6b526e414748646f614a61426871585431617970386b52714b4e6774516962765178353357516457615a77694b6464306842666b74793735632b7165757141457632474d644c664e4b32434451482b4a6b46716c386b685a4a4c6b6c2f6d30772f634467627a76546d583033752f4d4f4d5879744b473646554e75537162375745342b7464796a516e6c6e6d6a5776324c6a304a6c536b737348616265432b5747337444523671643375363574336332635a4134744c2b537235434d7776304a4a45564938687066354d327031344f542f443149344533564f706f4b4e4a762f585464704a4e617078555a67726a382f77427673452f35374f7a422b4949767349556464507875707a48374d63476134764837626f325443746b75674256442f7741766c496668536176766f564a787776642b59476c5931345a4b696c54626d7978736572507a54314572436f567a38587071706e5a3772745a394838685168647a6575706e32484f3637392f5a6d4451445579587379723979367836686f4d4436334e62732f6679447a4a6e387a4463626330614b73396b746d6170644c69705763743749786373754851595352756b73797a4266386a4d69374e4548526c7a6e596f394a622f74317936664c6b766c5737704c6e36726e2b4d352b795a53665a4e4f485941657a32687243537233315a5936466e774d346d2f5a52396a4f66556d43744d46522f4d317a42534d74696f775458537166563472724235487a6b774e2f4b7a564a6f4a546452486e56633233397459666a4f61706a4b6369544e7670374a7932465253787363316f646f4a3754616b3576722f376e4b4a5764652f62392f3841675572712f77446a7a484e6a30305a45674a7556496f35713944617a37347136364749556638586c765549396845696e6e6d374e4a51707a6e4f4f66686837744246763430616d6f615232517164476d32394b4c34394a58324b474f75474f6436383367664e2f4b5a2f326c30796e326a32726a373152674b47714435576d336871717a49736e51356d775a716148324c304e616a6768334d74697272304d2f6738636a3773347454786354552f4a794d7839366150596f46496c6152626c3457652f6c5571454d73436f39716b736d4a71703447576338663556396e59302f6f547a6d786e4770486a4a6e664d4c5a6c487a2b675868703135712f7247315331566c5175734b59736d726b656b4f6b5154705a4d717a702b5146494e4f663176766277776d5459353141397359485149335a4c6443716f3662394d754958704479643366386b714e4f6146326c3230394b6636733735506d424331716f6355356837577041454a2f6f45594c466474754859485564543353587a6832524a756f44525934625276556d5853534c727039366f53426451664e41696e3968372b7561747746644c52794c655170424765684936303667767661336a56497641616134546d6d3976567550384177377a35657a5a36374e677035506a572f706630435a73305956516934506e634f587349316c7a3637703130792b5431543145314b3155492b31375279646933347a5a3963477a484f6c6e50656b42444664354b5249574e6465684b6d4a7934673749364f31796e573053353075746d56552b7832616967644a3667656858314470536e2f4f684b324341784754625850653451366f71386a4f6444485a46524a6b6b695741537575733533514269614857654a69664b4b2b6c32684f616b4f696b6a494a67696a733962634b354b3570487a4f626e6174737a68314961437a4b75706c516d756969462f787a307957664d3553326d597442566e54706f364d376772726e52524e57786172345844627173474a6c33633269305a584c71696f344c6e4130654575707876414b4875725a38725239776a4838414e32546a6e73706d59755876586d764c4b58524f376a3350613247454661364248714644797251712b783332756b43693950752f32473868426d754f7348337a395337506c7a6b64367562347061716d644e685a364f36314343657936457934786a5547773147566e5064326f4f436e674a724a7a492b3438366d2f4c3274372b614d6b3668475a56587869342f5a466e74577a4a3564504c31695674614b52396e45736d6e6d4c76414a4470544c61773836614869614b2b735074387935594a506d70464b784e4355674d342f4651346e7134495046767a4a624d7a336e31494a514c44344f4b6c754b536d753279537864562f544c7343623255726e732b6137694533645a505376356d664c47344b547165616a49434d4a4f6a59324a4d74655a54706552305a5749797568655852354737506735704f62484c33556a68486547596271593168387a2b445839706a75532f38414b524433424755447a5a5862456b753674466147626c303749537554304639457332645a2f594c366f716247344444397041674142573030422f77457067303839507961585a6c376c4275625063756d486f6337595561334b7363417259764d714b725157786665556e377a53316766716b48536d466c7a314f446d5662596f4b73766c73394c4532493630797254696c5a50386233516c2f4e4a4556356661427a6554686f6c424b6c426e4d514e2f6f4f2f48396f4c7a464d2f675071344f745443444b504f73794f65526e61754442506f6c6d782b4f43656c342f6f4a355238566e756d664c5062383350395941416354523150483756457a7478784859337a4c7a37473842386232374c4e58517550787678506670735258714c6f6f307a2b3448624755355362724772576a4c585577695a4d6b344547723755646b564647657a6c694a745055667a37665554535a356636712b70506d51646c685473655865525839686a644b396653337472524e53314a5951694d6f4f59503650764643504f6c515245594d392f74566e62576b64386a487879664a7550326141764a75566e68395654326c39465847653534722f5a4d2f32542f594568574c58665734546e66384536634137573237346836445037434751353866354f33436a4f7156484a3473613248627843754d74386c7a64614e64733958792b32662b5579347147474b6844335449355a5a4f684966317965317a48374c79486f69723865384869735457316d476e4e6f62716174646465646c413936455432543963723235504b3343373571715436674b574c624e4d705a7a4a6479534c687a506a494f592f6745387a45336130343345466d704f3356572f6a4e4c5a737a416f78647345337339332f334e313668513945306a7969477a35486a4e37696f4669635a3452694279682f75392f6e5a34332b4d4867316e7058364b37553876726a366a2f41485a714e6961756233654865433051366b77312b506148492f6a4b717565357a4362514e56414470474d335a6c754e4a645073326a3779323633597150486e71554f586266593678326a58596d307731693578314444645135374b5245763338626d6a6d384c727157662b3178674b6c474a4f4430717a31724942746544316b486569597037494b454451466e45664d7050784a564e716b6f6946633144683733322f58426e534c682b783373356f47303143365763545761714270486e4434755a4b434c6a6c7866416d586c43512b4f55457a6931587a4343524150384149532f342b6176437365516271557551464c5a314c685358794833682f594e354134463078436c776a31662f41424c372b6457302f64784945482b4a48374c41694b353641543963476c785049795a2b7044554b5a2b6e4f76363550702f35367770334430653939696638414e53657561544253594e314e5577327854556348394f725970764a6d465950793953767130632b4565566535634a633976506841525350796c2b684d76364166786a694a6a33734f633275515a4a6e6e65507a644d55682f6b5378486f734a6c6e75345466593367703737476b5873482b6765755a617964733765504e34734267495a4e776834716b4678682b32544d39374a7745593264456638415344556759435a64373071386e6c39686b58437a452b3772456643745550754a59485630546249354d684535717a36552f77416b376e4d48696953584a674658533971753964626556663668514b7a6d6a6b4f6e746764416c544a345a644b4f7066412f566e2b484568776663497a2b786f65377636663775393538706d6c3858302f55595379476f6d644c67396e6f67727658584f795646665267515851544d66663255622b4a49756e333477396f306a3169674179352f54645878435948504f616e4f65512b3979673731536d2f453771355a7a5778784c6f2f324361624a533737515072694276374977365050367343336a666b4e7669757a672b555a626e5a373858596b3155584c52777a58644238477250523141753671685a4a545077774d6661373967522b2f6f6838644a724d31784d38523749505150314438593961505444784479614644756a62347842506f364533386e7436575952426c2f77416772362b6c4866526a6d2f356e48387a69397954736d2b515643716274506d57724e5a6d4a477a39486b4c754c7a6166705a2f613363723055655165506166564a34657632375136644277792f493667305a6530624b47476f53544e7965616d5770414f6a7149392f3544564c6e59555557367a53304c53747375752f696c566461476a6c32773744644e457731426a7a7163744c4f7a6f2b7439703169516839766633596b497835476164484f3633546c59764959306f356f6c61614670696571466b476444727a3061533839785652325a36452f416c30793066556d4875705955466c49635766376c6e726a7136336a2f68586f4268594e396c66337633666a78796939786163714d3871495334532f77424f6c70326a34325a5a5354546453426e39636132445748526f566a6461396732394176374e6671483537347656354436792b645a50705a754d61595a48706a474c3937646f6c376e465a3157792f4c73664a6b36686937502f41464d4b2b30725734474f6c2b482f46792f744e597a4661376f2f454b632f4a722b303136376568576a5a742b6e72387a316538475273535a79375048304e68387178566d5351343351676153573657533932736c6e614a336b6f6a4e78304f36675075563655396f70715269306262662b68797733636662774e42755474342b68673661485035735362755a54506f6f306b4f584a4d4c5a7452674d533556466e666c496554526d78482b7458732f317436496d733432384a3852476138366d5a6336683654467659737a6b3530567a392b42524d644378457637347a336973653959426b726e73417a4867475446577262643834433070736b554443533655695970446672752b51445575526b3777353736466b73766a736e3578516c373531662f414252497a417773454b6e4168414e614358336b2b68532b72375373772f546b2f512f664f442f33492b70576e32696c76733456494f39786c2f696465466f3867386e4b536c54614b54534c4257665575424e4d3177635a617779617673376e3954386978636644507642587a32657a2f5437672f71763754316748576c466556315a522f483848566a797a67505852474a755a395570694b506f4a2b4e6b347655524d56382f4c44557471322b302b566e4e633179424c355630367241587937704c666c635076653975644e786b456154765850554c50616b324b5351685151664d48464148572b785873742b3739654946716c427136476a554e554b4147597763447059536d5a4f756d562f4f2f65496c7556376948396b5836352f673333304838694330487a367649306c3771702f326a74514f2b6f70687157364a6c53566855743876574d48724b47504c6a544944563742634841622f6948716e2f414c4d486b4f767166695275345756333357654a2b59364e6c317a526d62494744624b4c753574446e5664747a30697a36366e45436b2f724f63424a4d32423169764c39706950657a75395a486250303347616f62736e52766b30397a6e4b7167652b3143354a4f7a58355a4a67565274716378667a314c686138612b455465664e6373362b4b346265612f57506b4676566e4130395364343648563330572f79304e545842674a79497047796252535552304a6a664e5669386a712b50384137436b39724f2b6d6530445977766c69747475633934385a48397a366f572f6b4d4c4a5870623738654f616f3372637152684f645a70557a56527678592b35517a4c625a4e30487a64456b6766796c7a737a515031505a757a2f4d63302f6b6438546e4561573957787975536d626d6a53673356663747683075395776677564336e543733336b666574573076594a64514c3266495166505544572f5054774b5a5272436844752b356a52474e73326c316c534f697866586b612f6834626a4e5a48386f4377424678733458566778664554747061345a30764a6658446464617467774f73466854427776333032632b482f3648372f5a632f77413631374d444f6e67464770663179366b357a544c78676b6759666a7247675671503465653333545645706e5339356b5a7437376a4e674175636332344c394a7744326f507271596e347555386d65614f506b3662695344706c70446a6c756361784c765342526a377949476d59645449612f4250386c494751432b6c624a6e6c50777752397335714f534b69354b5843636e712f62386e506166666a70396e444d6a424c4164776a3043554845546d61756a517073637a654b2b452b724470396c4e664f735a316a6b3934317666695838782b2f6a535361787262737945685a336f72476c706f6a345047434d796c6f4d7a6e793579586277355a6663786a30706f506874377745715962566e307936593243782f4c3337442f6b46587a714a30373064644f3251486643716347386e4a6a484637526f577357734c76544439463779483941475644722f6c63684443544f3556426d486165716358324a5858634f306153577769355254776939766541736244533454447652626e2b7a395a483668616e784e636c31624f6f55584a52716249314d30643849712b5a706b536753494651664539363479416e63507676365065672f656576414a717253766a455266714e4c52347964557979714f67776e5a786f38566f32664e384a6a634a415264554865415a434a6645526e62626e74635a45787839496f376675464e465a5963724f6358785368374651365a616b36644e446c6770636f3574426674616d483775683158754c3469344e4a3746666e2f6353724f4b71783869322f63424e4f4e4a6f54796a773758395a526e7253647152346c7757472f552b6a4d5054616f7a6d4363415033735750617a474a7745614931646345535836464d314674664c343768715854776f4745696e6f4b574a7a665966565264332f6747396d58596b5068393357456d41447078655974664366534b35313973364e79327a326e6433726c684e524a6e4c5742344b65564535667772372f6d5a6b482b6f50385036744e737869656f6b65596a6f715536306a4b6d346433756b79784f624c314e5772484c4d352f73736f6e6e746a41593158734c6e506e4e41542b3876333053436f492b514a62695965686e32746378595557477674566c4f673232696161506b33786a615050726946412f4e556f322b795a706b43574d2f326832596a4d78453934396a3339716e776d4744385266424d3349754d374b63703137646979506157463450646e374b7373635a4b334b316d636f65774b565551574a70576d4f413755734e6633764e396f6d5a314a794f783369626f636a4357715a4f357261724877706e704f485768334d326f593252635666524d6b30305239594f673942316c4d507975365332316943766877466e7a362f4e354755396861656e32724d504d75715965314d6770394d3774474e365852786d646a4f55486c70364d377564714d32774b464d332f7444576e3173386c6c38547a376170386b5451364c33706b644c6f365373367569526932352b75656d5539444d63632b5769576f5575486a6a6d70533448744338577a455a6d49385277752f4a723153776649744f6e416c304b364b763479584f716e6c753066495574366c444a377443562f385847435930706f68576b674a76446659427164396d78724539576e5862486b4e49764e50454e58542b6e417a746c7435686e6551535a45745733666234334e56486b31616a70745a692b4f4c5036756f6e4537335471466c6e5144737a78626d753148596238612f554266716e364c654837546a617a7a33303437523466767a6470447942527264445038764d586d70704b545632766573464b673636494139374f4f6d2f5578303038327058626533344c43336679462f74316567663568656e63654c35483434764b727064445a346c36686547344f5634377159563035565a476b4c6e35774a6f3138423837486532593471485a7271654f476235476a3969744e61394a33524934452b44663254504766585a657835372b4f58727a692f77447a51344f33736541552b572b6268385737355a356e673746556535523439546a3066546f38665a43626d7a76466b376e4944356a2b4c39414239632b317a586871567862744470623642663236365037656354643250314862354d763153742f6a72376c574b686b6c2f696f746a2b4c33707530616b365a534b68326879745956504b546b4349614244356157793458317666596961396b6271796551584359435a636c524e69767a66494a465232553451317959324e6c35616c6e70314f696a4a647843354f6750494b6672343661684d3432305571793933356959573668544d6d583351376d5835326a4b38437063303455587a56637630556145786248593566334b7967326e427835694268665371526459456e4d6659713557526166616d4c7764504d6b2f33392f6873794b753651707149492f2b30765334367a536336484e4d7871615455397975536539507a546e47477376727054426865567878467138385a784b2f47646e4e32477a7a51615462316a6b65787432705051364b33537a2b64336e636f36745664794f35587448696d54664947394f4d523851385233714c3462722b462b6565592b4e3631556446325835486f35396c4d76516a67754374744645656943644367316b6d714f646a682b64774e55342f3962484e6e396f2b7045784e6154356974302f4d784d376d72434d4b696f58316975724e4c6b636e4664696e5466352f637336544a6538373044642b31453568657a322f4671444d2b55306b4b2f6a7864302b703549624b6c6e455963644374364f447a72685374676c56553075734d2f594d62752b3736347034576676504944302b32772f715344796178524b397046544d7050422b5a4d613168776836786b76576637326350334a515577443741536b525051504a2f756c3879314e3448554b6179647a6e65316155444f54717047546463502f584d30755772354f6966512b6f48754f51766479764a35665966515761632f76584a4d6a6b6e545535616d5273446f706f39765630382b457a5a51333543654a392b492b42384b66384141654159506a2b6e366a4d6d72455639702f6459386f543151536635562f456c736241373131457a44536f534833386e39354759416f674d6b47756b7242574f5872337a787a4b7073645371527946384a51445564567a707851366a6b7646365351496756336738563775476677384568345851366b722f414164796653443859764e50565431767a4b5a764f714d37756b47644c6f4e7a6c2b48514e30496344785366536c355941376d74716256784b4f496b396345667365536a574e6871342f657a625572576e5a47705034756668763635666d58353858703536412b42326566655354514a304e752b356b6d54347a3450692f656e585a35443554766146536f6648344a313066496658642f3968696f464b4e4c4144585631613664633374736b656d6630622f74746668502b4b313248742b59493166797639643430707644795a31586b506a66704c346675574f7a344d6c65564d457372504a627061744b476e374452624d336a7175666f6b73427a7543327671366e4349393358376936722f586a777679337a6e79444738673546347074794c684758496c6e2b784235586934434e4c4b364f6635414642724b35493439434a69374b665a772b4f6c34417554764272736d496d5967574572796b527a6b35744d797457586c755771692f46706c447633504941716d424d4863657854703878634e512f59352b3231574a796e7a47427a6a526c4b6a455a7a33794b483871382b6a3035776e6c636a477a547438685763437366596277735548446a705968654e51316d5464786d70764151482b365a457a45437a47614b637557694a6e704131583837386a7a764c42564e6d546d575250465268337a543179776b3264633145474e4e626c6c4b3769364b786f4649674b78615978794a452f59346e33363172747a6e7648467a3878505073447a50795848384838664a394744344c6e54323130716f4f7974586b4e76467030356f61394e4a6f70576b63744b77503841616d43426e46555a4d5437756446496d73545034687142526f484a7a726f4b75506f6d354e78466b536f35336877644a5032585072376f443979366b584b463675434a6b706976664f456e7775432f667a6638414933532f4535756e6e646f736e72474670664a496c4536362b56575461736f796d332b5236744b386c6a63582b5159696c56524d45307a4f3638514c74334d39544833344466304d437251616e54544e59374e633234756d30427169526d302f5834764d70304330446f5a6b6e5634376c39354542443050724f557758472f33387947322f706234324373314f624a7345612b6555524d6a6258533668446d4f6a68303474653636542b4f496d414c683034506b727272712f77437937333654654e482b73377a306758704c34566b354e457535682b525a576e587358346d7254714273574859514c58564e4439744366487765764a6b58693752714d327a4431503055716f464a2f5a64535a6d65736a6b502f41486a706d655356656b48716e487a51737259465069657a72366b6d736456333742656c6c306c7a5755543352746f757137464f54696f53723567366c5879314f64302b79596a6453654d6a696e78314b327642576351782f5a4e797631494b5648386e302b556953767074426e2b535864377a70694243667541665a372b383767683771516e3670676e7839524d575443507161474b664e444a4d52644e6675537a36376c762f41474b775837592b2b2f3366346b72503935363841576d48337a6c2b786e347868546d4c58585349644578584b706f59577662644f52615442477049735a7868417350636c6871476766363044754a3172685637466c315046462b686b43426f444b694e685663514b33664975583549616c43776e2b345350396c304342795634386e6d47306e6336652f546451735a4347427754547a4e43736b57776b7963514d33334c577467703553583663665a79427841514e45786e5735747635523864736b784938555576735959562b376b376d35797a356d5563377971646f2f2b704638524d575175507071452b41777157705a374c6537387744496b7a3157494174416a70686f55776b474b2b2f53656b67356e3170524f7466796532556545512b3150786d4c41482f4476585834645134577437656a435457786a316c6d6170596335613471716c7a382b486f4c6a347a532f786f7135776564492f657a682f774333346665317737586b454b586772697a48716b754d452f734a562f41315a54794550317a7053587a663446776d735950742b55356a425a3074457a2f7151314645726b504e6c5055564e4e624f716d5a3268335672596d525877674e6e4f735972356175635076542b62704232634f71345876727a65583348514c3851504c636e7872794e554e2b6c465a4e6d71457361457966797674576a505a434d714f79796b784d352f77416f6e7231716763514f6430794535676f65376d764759385232504c79514b366162686e707959735673534b496347376e6d53484f545135336b476441654f564850473469734c4457446d476b357038654a4a526a5961424c48455978334254523837775034747a4c305a2b6756484772612f5479734a656a4f2f5674596f5049546579583562485859394537487a55712f5a54514e5a6f4b51627250366b566464437179474865302f3475764c4f6865546f7566424d2b44794a4579463841363842626e686778746d4c50596d6f35584e397559482f4953765851344f432f712f536e623955764b4e41756b6c367649476f4353784967326f495a346335712f3964482f703948475a6679754e665149544e68724650663841726a326166436c504d525a50456442434b45717558596d616a3946622b792b615970615154774b47634b6a685758554d5a3367382b4d6a2f414637566d77316e6d46326a304b4a626b554c54397330396a51756c435067375343342b725a4e445551787257354d7643486745716b506a41314f64774666315048732b59417265386f6133533030385537342b4f51494f517676556f2b566a53497672646f734d6c695930634c68414b654f636b42497571764f33664f5170796466464f4368307665536a41626863354455334e4d32646237485456642b757865693670354e364b6b7239686733725135372f414f74414237316e514c6870624d3177722b414336672b676a322f453569776c4a5a4573334f4930392b4d41623967702f77445076556e2f414548365051343076674f66705545535670367a354f54794c67594e4d713657422b696f353069366f752b786246634d7a50384132674a38423471725355547a3761336976627755714b663978713759596c38486544507848365952547349516f482f486a56645433336c374b624b68476965735738565a4d4447566d633346394671474b61384c444d61307339787a7555544b4f4e2f7934346c6647547a52337047323364793443516d4d6936562f733354704c69615a48684e7a3434316661644d732b314348576b51684f4379486a4669774745594758776b62686141336f73554b51365537657a38374f43564b726f364b326c326579384159303646736e36354b7a353733552f7269513730414c3542474e746641506c2f4771427267633774553835386f414156333633774e5754445438645971642b702f683933363968734b622f596b50623757506a2b6e366a622f4150417a7970586733356b65686572354670665667583668527762445863655a7369736e5a4e596f5a3536766b716153376e7248346848704d4d3265316c5073346e48577275307254452f4350667a2b50586d4d747470733332315a766b48334a3871532f77446a325a445853554c476166516b6c336e414261534a376354356b49416a562f4572346b46522f5841504976474a7858674e32343463754c48474769794e385a436844676f3552466f55466b7648376b674c732b46762f595a5950414b6e353775686c45704b2f736d6f31553574333552704236736f30394c782f54485869783862496a7336303470612b797566723831644b4a33736d70643730726f6f3979354c705a6b306e644e3755694e464b656f76584f597831486a382f764d37766a31486e2f707468355a353764724f52354454666248484d72367359364a4b7944305a56546b626b6c6e797537516452455a474877753477316e6f4d394c32534a78614a366a696c39766f6f64377970342b5a79584d613171775830794b712f73786b44444366336c4b497a644d666c455459414c4d474778486148655359704162736658707a5839566e2f736f702b672f72434a6e32423971434c713169507942316e3736426b37326337372f6d4563376432373744664430622f5037315439492f47673850666959336c754c43636878614e6a72616e3569595a614a5679734d31704a32576c7a5a3044317a552f5458417049506e5035434c472b6a57307a50594577382b2f75626570766b2b616b7350777a44783274522b6b5561533031486d4f4647506e64687a724f41723638534a6f78352f6878587932617248476337516d562f53767339617a78734e455056663168395450562f542f6d5055727a587944792f536b6757696364417a747a5a5641747a65356e5030496c377546384c6665305775492f3264667938393767317253735a694b37636434677743386c4a46714772514c476b755a4e517059366d5277382b4e413056657a326a3968334f45726c507436413963424148482f774261675a514a677770686239723450334b34306958786b542f62507876506d3737312f76377841544436664334484f657a6f2f77445051574e3578436863316d6748376f487048322b774259634655355474704c32697461786a544d582b7375756e4b592f6c414255417242666d31706f4b516d575841516446436149614f495a4c79586a516577482f41462b6a387a584b647a704d507676574239594941344356585a58774456577255376f395456715071354e61743775564e36514b7456514c52367a366f696c6657645977794a67463066384144704b48336353323138424e50476348796266337344782f492f6c392f523039595047344d625062627055563375306c783550494a684a6e62684a7a6b2f706652563176506376367a56723972496d31596a6445645237452f77414350374b506f683658655038416a586c6635515a756c36732b7357794e476f66705957784c44347a346f4f58414c4a7376632b46684f73593335484e2b302f67546a2f4a653971557652326d627a4e62326d39706d4b6374667844765634562b5066706e366468426e65482b6e3368666776322b48457a4a385638586b753674586a793258303647615669524b7a5750323439422f652b4839644e7031303870596d326a6b6d39706a6a62664d4133357236452b6b47796a62487950774c303132633664546d4e54354634704a546f653574616465766a3474583748753972733169795a7a356c316d3775644f37715a6d417949764d646235484358383750374f2f77434d506e3369666b657a36582b4e7239466655633651746e323876755a704a6271755269346173537a42566b676e2b4c4f7939793146495578715559577244764846302b72533970314b7a58644f366f3833507066366465536567667139355436462b71414c774e48556c534f6371797257356a2b5248506a4d536d6a4d752b4d6b6a52564c4f78637a6a444d3466442b4e682f4366735a3357744770586655582f414f662b6e7a39656d48336a2b364d2b684f5833453532564179506c72577a4c5376694d63796a79365578776a30576354527a6b464b554a4e6f306f646e573233686a49316a5436664972744a6f366c546239475a6168766d56545131634c333250523965664d2f5132664e64476e6f7975637976716250692f34756f6d3465776f58316e77593434637879422b3179613759656450484679533255796f52385765687448446e634d38706355665173542f6d763679564f2b346e7471576a4f65365251335962542b38345749663273756b7744523869342b715a524d35514e3555505845786c6843516339332b444b464e44762b514862336e6b47325a502b3551357a6f464f756c795474544b6c74435151565467497446432b724c67574a6a34523859395031366664305144337037462b76304372582f4e7871726a3976584d61507964343465303355703459705479786647732f30304b3448794454374f7548767444676446302f7766583149646c376546504b497764594b4e435a33783835454c7670765733712b55716f48356b6b79357763616a684f494a2f5950456b5241702b663766594e6d6a7736442b346448563653766b6e3437697759504a5a6e4b6d5a4c565749496f5839716a346b392f564c6c695847414a7555487876345072366b4d414957457041395932616c626c64737042496879687335426e38616645732b627142536b2f304a4562444d5749373162656a2f57674b6339696c636d523874564b366c7a7a556f4c734174584a4e4c4f434830734649787337456b75636e50706b707448762f59695841414235737450345548487a34613138546f7a546e326a724458544f35785671584f74633545744964536f574a414667426b5a662f525050396e367944564f7155386f766d57784371756e504c6f69397339723074657668703172655664455a2b38397776363339463751457633773355732f71757933674266623432306664564f726e61553046534c304c645133394154334f713436346d4c4935306b33322f4a336a6144507279456a436c74747438597a7748706e2f414c495072637a63394b5056583042316166476570385a38756b38356978316c6e3876313437754a6e725250626f793154737a56325478683962706f4434486535786b5a754a584437585462614c31486f4d7062612b44526a7266566b2b5256576e4137506e33696953646c546e63596467787a74722b69554a4b7674624d685079713068704b6c6a506a4b2f6844756969684f4c4a6241784f41756d302b7368545646644c715a6e4b632f4a6c64466b4e5a536d7a71366e552f71392f3261316859436736745445474151727a6a797244384d38567238313879736c38667438576e4a7576747a515a3855616659365657654e3972504a763547696337427a7771584953334e6163786a3852417042327245326d4b775047682b62736d74366f6571486d766c2b666e384f7679765a5a354469456a744e5768735971652f4e3130736b644831526e6a57584749373733653645772b45372b734a682b7070524661316a756763367758566e6e45375542716c4e6b5562466b6b704f55646e574d37653030316c79694f7273746d6551394565734d7a452f2f6863573074356d62646d635943624152376936385a54585733356f785a6f532f4a4462434e4166505a784633565646314b574c6134324533392b7776614247494d754d6b55506e643844614675524c665051746e666e71714a7a4f757259626337533778334b5239712b2b39684230484a50716c4f446a665944364c782f794c62762b7069354770713971592b4f4d6b596d6a397375465052744d6c4e454d37436f4a6b3872484e583166425548762f7741557a664772744e3161384947342f77434571737a78723867732f774146395466475655662b62654e57593266692b57764c78473258795379662b4f777273797136674f7a36484a666a6c544d336f4257464c707a6b457856336d57747870757277326a304c2b4b597366682f6647764650564c6d5a356a3664393048656334336d326a367836654c3439364f655a554576447578764b787a50463534502f4a4e5736365036565a634e553063626b722b784f6d41486355386354586c743875304b77386b3366542f322b71766a666c506f79377a663043543531343966355836432b562b755772566d573752765a70546575486a386d62687130452b5075324b69526f7972715334584a4e5a7a676156706e744765575974747434342f326a6d462b5450397354314e384b38793872302f516252385039586654764377652b5736643248534869486a58702f6d554b6f757a737535766e7567686d31484d7450746d7563354a32562f4959523845354756373031363472572f4c61427056356c3648657250342b5a6e6a506c486d763841346f7a42387a544a6f7763386238753862326871632b4a6d6e334974563438786a4d577869667464564f306666774143674566544d61543169396453635230722f515a35506a66712f77446b58766e692b6a66682f6b486e506b2b566d322b5462666a7668593973546879477775733046797a72614130506e6e6a575658574151644d31303854533442426974597a715473714c7039422f77533953664d505066534b7a316e394e2f505045765258314e73464b764c7370336a636d6a73514936585971764651736f4e645467716a45616b4d412b7a4e70464c463872624d756d6c39534972625a65633148574478445838552f482f306239592f526d54785a7a737230373833713865394f664b2f4b66556230705235583476347864744c326f423036344d633947796a6c39733768644734503439707459754f424c71584f35357a653962377362753179794a6c36332f6b6e364f34766b6e704e7565592b726e6f58345435743476344466506a656f2f6750715435462b52754e765a6a6356475654366565585966707667794d38647a2b6c51565555645866737a75796c4e7064394273746e3952536c706930525762562f4474322f31484466386d6679735636792b61596e6b66694657356d335a574a6f2b4a37666b55635a654f5465563458585a3832557246794a6d455761762b4a7a30784b6e663870494a4a6d4a4a35386377646d6e7054574d5477473476396c4431306e395050794e5236623637556c6b2b6f57585856342f6663344579342f6b6d5a6e735a50734a47475833306148636432777061676f41366151536d6c5079434949793973707570752f4350563775375455656f6d666f3466643666746e6a377379324f6a5275386f766364454447346d70736936634a632f576e634f584a4b7978533342413546494763337473487a73636d5a4637525451567a546552414362544e6966747839666b797774317554444e6b4c6d5776552b724441676171485564582b7279646c4b4c3277723979546f487361433633457a494f4e7a32346d3772534c58713253486b71546c58554c6777374b416865332f5850526d72696c555a386f634453633677477a4a6145623734526a65552b426554654165652b3356385039565044712f442f41443349724453386a567349316369377871724b5a6a6a6330766d6247794b7a6a42475177596d6f7548395a556f705a6d73356a7456483837373870505262572f475831743953505262584e564533694f35737759766b4d77756c4479664a5379722b45322b4359712b776c79567245444471685566764432475074583332394f30617461336755597272674b526631584e6650667a6a41346d692f2f4245624f7637786a4538594a454765763477397766744d66424d476742734c555955745537716c6d77306b6c5139352f7742683944546139793257496d53424b574e484b56722f414877462b307575493269512f4734512f4c554538555876572f3841596e396e72474a5931796e4b642f472f4655496c77786e42637458562f482f724d5567766e734d4b4f4f723866302f554f504837547a4e424f75766d616c30746b467155395a796d5a744763706e5a6f786b6c2f59564c5a5a4d766e566537334d482f4876362f594e36747835652b5236476678373963386a79435878377944513951664334355055747552354c524f666c75486b2b542b4b6571575049506a7174473278697863794e37763549794d5847726961563050672f63734931634e365448446232502f414247342f686e6d632f6e6d667a7a33487238443250566a303935543439367252302b522b423658676e6b506739313155652f7a50586e2f41434f326e5475314d736d643631623353586755644954556b6d2f4b65586c2b4733515739742b6f6e692f716a3564365838524c6b7378362f4139377a2f78585a536e30726937692b716668365962352f426e453363716c7a6357776f2f716e6d7a69514c7073573955546f7a684b6d49724e59743839767864426f7a2b5950346265472f6b373433345836682b6e307669766758726c734450347672656e7037767046343136636276384145366938314f725a584435314f6550645231634c423762475a6e31496f534a706e556264645055747038737875722b4c6d33662b4935536a2f6238396532592f6e5772625636563575663658785054355a445236762b4468536c677a66493271624867304655584c4b4765644847436b4a69644749483041374d52644876715a372b62387468487652763841496d5030783853324d7679435362597171494438654b336f646854664443584467386a6e722b4b6e2b50375a4b78307265633938644a2f3544557131795752616d3663774a58762b6b5867586e7544443677372f414f53766f39345a6c2b5561475a562f3457596147683556346c44707559437253384e385138663732784d746c6d6a3172656354513145413952397a2f72482f41456930784f324e4f317863336f4636762f69372b48326c3638654b6166716634352b516e6a2f6d506a325a6b35666b66696e6f67473344625171315a32592b5a52366737574a6f654f69324c53306b647062467a696d576c30505931587a5531765455314e737858622f3343615666334e50464f2b6e66704e3462712b6a666b586e5762366372304e44794c783379727a733848777631437a793674574c4e5448347979585a796e5a726f737676435a66314c6d553142795a494a4468782f683533576e6674336659566635582f645239636c6565582b562b6b766958674870576e792f774162543470722b5032354f6c36727a444b6e6a73734b4d7256395536726e6a744c6e707a31386f6d582f414e73356c746334782b7942576a51706a4675614b2f3841622f346a5844552f4d3738734e484b3867676e396666554e486a336d4c48366e6b76692f6a6d793378374b325236386a304c5378496339615a356e55446d6a3866776d42476a6e4b412f3553784e2f643665657a6e622b67316932394b753973623658553652527047696561707a3756395575646439455762587775745850313039464a6b7765682b3652364b523933395770326f4558464e48536d59706f45796b65397153453634787462375a325654653569774a795770706349394258466673422f5a4f4d666b357348626d644f4a6847517255485745646675426e483946734b454a6a3051536646695338387571613058416b772b79522b3371326d44376b342f5a3755744e433048525574344e2f314546506573416d4e6d56514831616c6b6b66382b2f74526e2b2b6e2f6d31624f6777706b45313946487a4b49644b6f7865436b4a6c4c69586c55485a5876462f47456c6678383473472f705a4f4d4f4e4e59756157646264307947436565354e48492b386d536b464655364c713176384169363732534d515474627647414c48725830436354412b7176336b4876396f6144362f74444d393678556c68634b646f5764353744435251736543444579345a4f4a7730454c7661582b4146372b6e38766568534f33507946672b4c517871543837753870374f52495532733263366659317938356e44794569492f7346646f4c3658566345754767754230334a702f716c2b31492b585963303441504f4f48357579524e6748324c624e4b576850543351314b4b6c393972753245354858415873354e395a5245513038594652484f6550694a305a7843766e476e6d7169365278683256364a774e5a31574b4667437a692f6170774962772f65422f4e7a6e3663372b7262707a7537775879594c736f37337873584c325a337939486e302f767179776c4f7747726e4a5a474c766b4661352b63624c547a324b354e376e554148394c5769635967534d52717253323668624a706c66566159352f574375573676732f7766384163734a724c46394b70334f6351445875616e6c414f6d57626d6471444638686364644b333336454c47703230545762545663374c35456c6b4d6a6c714b5653457046645243585643507848376750324141454146526f564638626c6147645735642f42353367486c54794c464f582b69523148796a51785a536971637737385165773145704c6a2b73594369375254524b466a2b686253393061763341466e4b307a7363346e393658316b44647955434d6d474d725a67763972364f544942637746524871697a68714755364c554e374378632b6248755173584856446d535070306f534250736f6d5a306d6a2f703442744d7a654643766542566171705a4355336b7264794645725a554b4b42666b4c4435645175554f796d6b4231476656714c396d62425032473556494137733149416556464445374e46344972546f614f636e2b5674755531464b6548624f6d30735658786e56316c56444f6d48752b75373330536638415a4b6c6f384231645a50516e4d746171645564445a43666f527033354b51636e4e314f3655376c486e6f5832686d676e545744356b73514c71614f39436233473451526f644771527565735943446d6c4444774e474475586e3263564f53684a3352643265504e586d46474b4a6a496a55656c62595a6d6830684e4263574972774e41613279614b6c6a5038726b364b632b45443049584f7a4d334d35325662374c6c4a54423748664238594a514a2b32754c6b667344466d4a396a4b664b6959324f7637784a4f65742b507a524f6e57356c6b323037306b4d4c65584c316d442f6733684a63707338337a664761674850553849317452643131444c5856774f797445336a4d366153454868724e795745637335555373377a346b6434452f7363376b314468366b4d3266706c673664314b36624e43694a4b3555353962554b4b546d50594d66546d584c65532b445150472b2f696b4d5377435a536c396951512b5166664c4f71796945746250616557764e6f71544c44506379562b64585169714c5044336435684a485964397a336f4f6163423976763753487770344833506c78372b454f6c70765a58537352365657617a4d62716d30706376684b6f7473446e75356d366b764d3551496e5638535773446b3076782b7748586b79746147657135386a4964476e6b50416c354e75565070706f546c7a30565a58386e2b36764857647348466d456d734b6c30394c54346b435a4d6449456d57517a36364c6331655942546337506f4f52636a4d5a7971505662794577736e71377a6932463861354f6c393734777a5a652f465372715a6b674b363758684e6b39746c5572716b5745353949616f4b4a6c696d6467566e386d634a33526d4e692f6a557077746f2b79667a63392f3642774c7153594e47544d6d306a396d4f432b6c6662444f7237724a395959575a78492f614a43624c6e7a6a532f6e467545415a4f324e72365a354541587a3459614879303834352b5672467a742b4c6c64616a33646a7466795451716e564c57457245366d6a374f4e66624a50522f3775756e76426f47424755497348515a4856696678314d41337649437231584c655063367a5134633150305769356c44766f696c625355376a34356d39436b2b413772723567496e5271797147436f6974435265504f3753716b2b5854354d745a5a764661746b662b35694b3649633976363158726b2b5249424d3566415743514d774c73672b546761584f55384c553258364a55716b7431743475354e736935636a4430624f4a68705758654d4b62336437594533744d516d6b2f514f4c374f5a326c34714f51796a556e74565a6f526145506b43782b736a6d6534374970354756412b576a71364b47562f4c5846514e6c347a2b2b6462755530674c716e7a326853667564746a785339496a677061786b4359584d587935346e4c5850724c2b5a4d664630477561656f4c41435a4c6a6150476742715956374a3446513970723478345339596e744332357361305461716f4a744b66736c45625073556453553030774b4f412f64493461324d6f434f6551636f6a6e646d536932684e4236745a554f5a4c707639306a4d2b4836683030664a4f756432537879336455514b7037595354457a2b4c356732772f43376b7a5057374a5858752b36316b2b797657696a727a4a70617054776c3935724a504b31752f7741654b58542b78566f683041716354562b2b48356b7a5a3676596e31335350624c2f4147395045594e5430597a7133727a35314e38693263724d7a3738306c642f695836676c513945304b65636238543674696c3357445146656b4247743145376a59727a4e61334e77362b76376a7152716542795a4d6b706175714672585738545141367169545464714b734f2b48756a75734d4a5a536c354b6c6175713642675a46332f41414f4e6665654a6d4a7a4165782b4a6a50304b484a634f5269346564654856495a3743796b4c6f61355766705346316336316a6f5543786652396f2f544236355464326b5751476d726a34396c5950356b51305542336c584868384e52493668456574544b45564e7a705937714b43644d4e504a536e4c2b56566e47624d39796e484f5a385a454c766b30594b6c464a322b424674467565503761746679325472485036552f53754e4d386173736662776d766134676a4b747a61496e70736b675030795147304e504b4f537878664c382b654855545644536c74697461766c6d665175366a504b717877676c7066437072706b70714f662f71386e6a32664d447669794230377131505677466a546f626c7a56553658447a6d6a6a75707a4b35576b6f702f733261524c4837437a49424279784b5642383455382f6e39776a713538315457354d364b38325275566e4f6a474b5730704a49624b47614544436c666b3836744b49324f52794e62657a397064456f35365a67533574517a526b352f304e617838636c6f416f4d39344f6d4c4e59506b7638636e4f7654566f7153332f4146504b65644a2b355a45667a63464e4d54516b545a30422f7742795a62335a2f4a3570374b55514f734e493747666f4a5a486166334d374a664f45354f537a69364e4a6b7072517a7166346f6d6c38557a766f4b783332385170304b52376e54307475452b584a4b755a756e506e3970756f6a63366f752b2b4d71496338527a78746e4945555555705756715672353835775644444f7a66342b7a516e692b487471446174394c3434317766616e35526e502b4c7166473731784a5a52524b6c34464c314d335a6d677a35484e37304c5774752b554272707948703034314c6b354b3433385158514b73383242744b7661724f7246765256316770316b6b4e61753854315038414c54544e51346b31396c32456d2b5a326472486e6d76695761466a69637430375679564f3779794b78685a71422b507339503158557a5645774f547a30324c462f77425236566a7a695435734e57595164346e50742b4b654132576f64323354377033534439746c79635957566a4c4f765365416a537836536a5373542b557638365178784e476f74526a364c4679465655636141516d7856744772423978355571476d503546352f4849344175556776653662354b456b6d6d58397a4d54455250644966523733367048673267326474474f5453664c6e645837357a47785457777273454964416830686c6e6a5a3771456d3652585235776a3463424d7154757064624e6e396d6f545a457471344a6c47395366642f4c7a426d5a636a75747539333270322f46374257366938543451423978774157434361765433727447783038484e4661676b794f3634587176706d4376706c32353378557037483141754a61563848695979483969377665674352703653564f627132316450356130706c4c4953336b3732545a646363756e56624f34303537584f6a366661666b2f7a674d48504d2f2b724f784d39497946722b534b51356b7969303764444f7637647a79417034735368437557484d655a6c77454b575a2f4e5966714778487866352b31676445364b4b566764453838557831445972504f6a4b5a506c56665a68722b397a72703336576e707a335545434b565754367a466f375749487a397164374b50324a4151347a69704542327978624c71536b5441764d6f67564a785755556150744d6b306d64716c47644b2b4773625263355655784f6173446d6349437041326941344c69766c66453467615675334d4c4f413773366a716572676d624846594b77555847444d30457a31514f56527a3956674f342b6430586659355975555657794d3045736b5a6169783036346b4b765a545838316c4b536b4668543953705468634167756138537349497663784f695737643245784a73492b39484637503871676235584d6d6f30356b755157746d72646e6b4d774b6563783573482b772f6d346745756e6b4145327a59764b69717a34463564316e384c534363327879696a79614a782b4758636638417a484b5a5764537935672f71643837762f774148656c314c7a7074737434424a6443645058317556574c7a343630584a52445139334b7466506c34482b7657646d72527a376c66334e707435714d6c55424567456d556b2f78706642396630424332716e576f65764e7646395148585554584b4f3932667553426e315034756565632b53734f683265746170766d59705874464b663351514f553755426d45614c706b5364364f4c7a2b5635516956567239773953577a4c68737430376c7646644e3179346d5a2f653045582b664c34316961556b35624b68696d577639574b6642715161737343574d6449657137394e304c527458324858677a7742506c6e787a76623259755670495854677a74674c76466651424d7554493757514545314850756e553668724a5067304b4c55384e43316e2f4c314d613646312b4f527254317876373850457a756f70516f7636703850502f77412f2b784b5265505853706c724c75706a474e756862504666304f7338667a6c7a3664455565676e3446314b6f2b5a6278654b6d394f6e6e792f53516e394f7945726650657542307650644639336e4a632b78556d5a506652786c556d646333532b5a795a3876396c2f385073357931735a47582b624a67492f364345487a6c39524c7a394850644f6b68556248736943335174366c4c4f2f585a5175553951713564794e66776c795a594e3556304a6c5230704e4e7164714270782b6256396d48347259513551666458346c354473434f78442b2b4e306f6a386b584c4e6e4c794d747239783364426d65624f6439337a4b706a704a67536a336736614f4a6e486d5041636d372b5373306447665830564b7a6276496543646558484a6e574f3764664e626d5454793350485059645641724c3350464c546a6e6d6d4a45335956552b304357663379436a566c68304d7569796a444253614f4d6f6e306532355439716652514646554e56504959565854726e45473075704261666c2f3449444d49377558416b6552464e695452743062587155694f4847577573386f3559394a326e6f5a785a7a327a7265773531707573435a6e2b39442b4f6137344f4e6b6c6a2f714c526d4d426554626e35644a424d764b58434e39625631465156694a5a587979346a35484e4b64736e324632453535584e6e6a3969725630317559366e346e746c66414e64616c4e31556f326873376d4f717374544c71446c3634594a74565244666f4f2f69366a6b6652466f614a79647152392b64536b58502b76385049356a72743566507147682b513661456379594a374934375778346558465035416a36633431445a506f4c6a70565155334668704a53794f6b2b56782f4847535161375245317a5834647279424f50314532492b6a617659677373704371657a593234394265594d694a48527a5a6d7a5531785457655142593558363632643365666339353963316a767678737234434a2f2b565a4f73547a53314b6638417952774b35776e66417157747a6244556c474e3757534f302b364261437550585553357530694b4f394c364b706d4c66692b77656e73395a387562485a38656c31383930666671565a37755a697675636c3041733045393550643968792b30456f754b6e2b477633386c424661615779766747466861544b4962363146537037736f356d5a4837643158484b6f30702b4c37556b6974392b6b765134787743372f544d4e426a594a6e54645966644a766a3771364a4a614e456f6b667565505a6a647863637a6d524c576c59365a32454f7451797143727568533066304958696d646f49412b485775376a754469744e7633552b3350305a3448644c4e5a31536e42434f427057465833744c2b3142336f2f7870376a2b534a4b686e784f564844536b69555a547737586b4d5a48417970656d452b5363364a574a442b5266495374504e6d307466596c66526372356c7564554d744851396b2f57697a503637687534785078534a527a6d684b3556306e6165317a697564734f6e33693947656a55695733503161614f70617a537a557572456e41706a5557555539556f7850687a325635657a36385246734f30792b676262394a79444f69387153486e45633331676c4548386b3164553475393073733967746438763354732b5a7176724463785667782b33526e4f31317970626c694d51646d68434c712b6b6a6c59767a79587734616a544b57686f54633738556a4f2b3554556b392f51536c49514f753367785348626f4b4f326c5031374c467a6f7a3663664a626a616d6645584e524c43683043616d676e4d4c6b37484252376f3647636158734d476458306b6d4d6d565848476b5458776a632f2f77424f6f302b72667051486f6b35307836534575353872313855667363596e77724f4b4472517a5a5779314b6c4964546654645444325366562f6c44423475674b6e64747148786a6c426254476a477848617554444e5363624642493457434b515179654d7a77705246734b7a2f7571767a686445784f6a5257346e78697a436e792b4c6f625253546f7953686749555375704d4f4e2b59443553426c6b56777735307a4a496d304861576e3359484d664d6a736b5a6938497332723479746e57797234552f55534357636f766f374936554550707241302f576964564e466b3647736a57356d375955513878383268767a5174574f7462743965356e62376b706c5a4a7a2b53482f645859366566346c30675141384c4b63744b71732b33366b38456c4530317374315363774f6368577949637a7944537a2b42396a6a7059716a346c6276697053377676426c696a2f6f4d7977356d454c6f383236742f3858644e39622b50625473647a2b546a45366c6238483556677968784a704467315050744274752b753044545a5541744f6e6e48426b3830566b39453870636f7a616a3657517745722b6d746f573066476f746445656b6e324154502b7366797570644e53366e334141592b5867446d5a794a49393573577641395436704b475a2f4c4a466b7a52795678304372574a68517a38516c7a617a5851616c69667a436658686a497856504a3253662f6450545a50797a7562797a445945705846446473364d693353337379334f71595263544d745370417a666135494179636d68417539643778544d2b715a45394c707035564e55477039494a506e6f4e307a4254544859547830424e494c5333393039546539764f65356751792f6e32786174745556483869364f713778784135764f774f584c3741594d483276332f4a63617946615059644d344853376a7542396b4a2b677078484d6d54536f4179712b4b6c613670784d7148324c534d7130316361536d747a616c755864433667654b61464375395259412f73484131725759646f4f656253696969587a4e5a4c5569465846736c6d4855727454786a47684378576859625671424878547a2f4147477a742f326b64414462654d623272723266436765547070616c53554e74686b52636a6b53716b78696e375236693265316e762b6274597a6736686a7763325943516e5571717939414f343272526f6d2f6b443074467375577570554d734d4646664c4a682b5870444b376f392f61416e7336444664374e7859426c4c2f41434c6c30464d6a742f554a6e444e61724b7437506458464a5142493759366a714769326e50686433767867373366737a5355337a653450685570516f696857413348776c2f794d74537554795453536973334b485279542b754e464330675a4d49507368686850372b4838594c4434535866715662352b4c65305a6b433653594f3035316263396258533853716367717144506c4d56635433355030357770547872786f574534786a704f4f6c656a55424536494c67756e56566e4f624d55383955377a324c7330653964537a376873576175384d6f506d6d4a76656d357754444d5a646f6435783976783866446e5a6a6b57302f78694e61316a39426a6172342b536b4f6b49715851532b52714d69376d704d772b4e6f4e2f6f4f2f66396e54493851386d394d6655576e7962346e5a64766d6d55504b7a414f4f716c31545478303751746f6454564b7a48685a78744e76376d6e444b61344a6e653266356550326e4d545759377831483966744c30573871394976554477462f6c6c48686535355634792f465835654135506b2f6b4b644969314c5662714a6b356164484c4950343335757448334a66484d51544e6d344e4a7177707569315a32376835687646663754486c6d7a73766b6f3958384230364270627838666a486b6c315a732b35496855564f4d38574f6c30516a6c6a727056575a6845716c6e76426c4d784c2f414b375a396f696667774e517679692f484550786739642f4a50526e553867623549334a7873616768303866362b676475786b4a5646386b467a4a2b7230772f6e4a37414355714866376a6a392f796853413661647439643863494856332f35502f67655a2b512b582b76754e34716d63564a3861794a645056756b74534f45782b2f3951744546552f4c4a38774c6d71617a352b6e547749446376395567445a4d76625a7245566d5236537176537948456b517a31473961646a6a73335831732b54786278616a4a5a354e5a776d432b474b2f48694c6e4d2f4c746a634a6c4e2b7166665465325a554930416e4f35773773394b436a66796b39572f537238506651727a6a38694e624830647a755a6b575465434c38312b444f5435663542355a4a484e487a4b782b5a4a66547a366441744c37424e5452616e397a3255305757746d5364744f6c74573961527848687039567656587a6631793951664c6655727a6d74396e6b666c4733326973427073716d6a6e31613242446851736e2b5166624b736c777a4c2b415a782f6831704146684a30462b725773556a5a546a4d69734e697051587578663049706a4f542f744f73766e54634d3836326657374973714f697758447a6e41515079544e42674e3530657441725669496a64496a626e6f58524d555549497148375577436f714979596f6b72396c70444c635077754e614357665141413642743434514541486c2b376d774569554972465a4d703974736e5161436e6f4c74547672777441536b705631713246594d2f656c30752b384f4b4952507666596368663242527866474d344e49417434364c356550577961686638673164613559543752645050372b633533336c776e4433334c2b4a594b422b71495141317570726b53435330506579586e796d3969666a554b65714641537a2f48524f736c2f4f6f484f64336747516a3747414d74693752513846442b313873624b354c536f396f395a5243536c4c5a776745584f63377072554a657a326d7a2f3648786538346d59675a434e3777434b74436d42316132755a316f6f6373324d392f532f594f454263786e666250376a414b4765307a3935653850366a6b3876734634722f6a372f384161666b3565704c4b2b384768485353445070645351792f476f756a6e2b314c4a33664a3169476b6b762b4139363163392b4a444e6a6165544f4d30385974746a48715979626f32635754785a47426a4f4b65653168517337336f4d393353426f4c415342676b3564333567373441385342384a6a6c5544523775542f414f376f63364c4b752f706b7931644c684f577466413972506364427439366a576e705748344a55745979302b6b70417459304a4242674763786f6e5363336177466e3159795a5570592b3154654149462b69446746384e643166454d3055522f447957377066497079574778632f3741566e4f63357a487850363967646358734c70474a454876392f777455436e54336375426a787246464979646e3674567a5056375a754e4a7646386b486e4141447150722f7742384a337450396531587645512b736b30663149376366326d667941303148642b4f2f6b506b576d474a2f77435234666b336847577532482b4d30397753494e6d66704d7152513154496b35676771646a3345564b5770464b6f3147484637545349357833625472476a564c4b6f586c6f51576775664e34684d4c2b36567677516f666d6550465872456a364979773575667952584c566c543850773861626144567943706649664a3833787857634f7255334c6b7147535a644d2b56704a30664973736c2b546435434e6f3678397a532b766c7a4c65746a4b5a414d453070706177564f6d6d4b7a505161752b732f7242443665594e746e57423546354c6f7252503431675535365a4e545a3261666c526a354f6c57563332366d486f5475714d577344546d4f6c774f61665575352f5636556e504742556e34396566657675423542663552347550686667666d75702f4b55655165596e346b6e5a3875656d6d796a504d7562666b685774785a574f545a4b7463704a5935314d304b57742b3452553376464a6a6a7a56485554776238685079643950384154786458794f72777a3164444c48596e79683874395073534f3633666f5269383037733233785a57635a43776f3554367370513454672b6e497167714f365934545454744d7845625a2f694858623042395250425079613862376a36485a2f437650527935744c62385875397554512f6b3269367a6d35344f7a52716533576a3173484c6f627858474f756c4338455665772b75544a7a3369314a2f4655556c2b5150344b656d464c50484d48316d39492f4666554c786d69646b5a467449716b7479373957716f326454705a37703361314554317365705539455831676a6c6b4274494f5a554e71617475744c625277642f4d722b785a34456e443050556638637649644c7871496f363966795077727939736e6b7973326d52746d6e734f52715a55386c47616c487873364d3177526d35442b2f45316a4b35707836394c327532647435486e352f494c38552f57543862376764366b2b4b57446773584f6a473873796d4337786a79474e366c364b4e4f50687938617a4a6443512f47306b2f37506763532f6563314c4f396d6e656c2b464c6366587231413131584f336a5363644371442f41456c363363356e5664623059495171393142744c6a3656727458336f76352f6c516e686e374439774275484e457467765a6145306a4f4a3664476f6f5743775930733539686b2f4630566a3776334f76357661766976326f44645837772f667855356579507458636e6f73734a62437252333369336e4a6d4a56496f6e4a6b4e64787337775676546f4d4c6e6661516d324d425730584b3777342f6165734434745254764c7030652b746a625642374f68334f616c4643615754547774643337432f7353734876514c70633967413443353833564f3335594464315052715375595838737a6c793066434a2f53306d2f56584c38696835794566637461584f3676384158476833346157385743544250564f3849734c6e7549624968584d743355724f6f5436557349734a3366665077652f59636c63364f7446532f663266392b777755482b462b376c775052462f596530396166442f4143535369476475656a6e696c6772545645696374536447786c4c6f6d594c48744c39662b5152736f493548796b6d4e306c50744276744c673973694d365139493370544651684c6349464a514776334a7a33726b6e645164675130347a712b5a2f4a7442535851726f7a536166637335514362626e2b4372707270624877336d4a6d4a6a6f4d50572f57526e776156756832325a524d3153724363346d556432554e306c4431516e6e384c376b6432576d4e49396e6c6c4c2b6242663254416672524b5a7a774868322f5058586e3867395278386e5136694e3954393938496e505567467154354a5644316476434545776b6d7237524b2b4e55367567385a3149486f2b30665630497847426f34505a46304f4155774a6b584f74674b5930685862517336754b583076384f2f6236372f4c764f7256376a6a2b4c2f41506237656b50334245315644654172716549737451763565306938562f474b335445786e47496e2b38796778365347667369415038416e326e4d6f42692f343161716b434c594344522b48724364505677525477654d413665435969774b48556446695242684c3430464854772b384376503566634f35322f586141712b5a5a7659497a715758576366494554754a6b545958782f4d53334d54306545512f4530503961523643522f71777a6448513451486a3264397755794f55714e516b6361524f737a57316c484f2f4d7a342b644e514d353150776b494161524178425935676c6b53706c4d6c5837685550363761684c5a546d59757239664258507a6e7a4b4871556339786342514f4a33744e682f36632b316279676672532f6c7155392b4d2b765946624f7347706946465376376e4764474a5444546e653459794a6e4450326a4d42666f2f65736a56504774664f5175366b6f7955337661714f48795a4e6b71587a4137565a47762f4145664b7942507a6654354f5172465a6361424362525330685437453343727553503633732b637476445430584d71756e53745339424d707159674a6c67684b2b504c327455667636526d6675634865645a774246306645433545582b54356d58794c6639632f2f414b554667724966334c517a6c437a536c69584778667838372b6c736534476b6639567232594452676d6b545153793763737975354e773050616c6b71352f647a73797845795a7963693730782f5138556e727631317154424e686e31357055433063356f7a65336949524c6953377a2f65772b48314657654a3156394a776e2f77437a7665657a68645361752b30414f49754472566c615657746f792f58374c4f3532684c6c517a4e674c6c505847696964784332637659584146507a444e2b6d306b772b4765657a7a45336c7445783539696649586c4a303947494939444d72374e612b3559756e765479646e7772534448634d4f4a584d4b654739667a475a6f3457594e7a6352494654355552332b386170616f37614b4a633134647a46302b514e6e61757850783146744a456d392f7837485143584a2b54324a374d43385a5474753179736f477938705374696d795a4654773637716a4a476c516458432f644643356442687235503264514a6a66304f7a746e614b67617230733256565645696f6f784e794e4650616e63686e7938394b716c547a566f7a4135505a5a7769543043516b4b502f414b56342f674f2b567638415151586630354b753155646d636d7639464d414b6e585372374d6e46734e3268452b454f6374615537476359746f394d6b69665574614448486175376a7448746f2f746a6b30667877394d38542b5737596b4d51504777626e357379684b72456535336b4d6d75356565444f617a57615333665934325a5639494164502f306f47696a7a4e6550326b7a33446f4a7465562b54345038565456456a42516e55746256677a4650533771307a595a7a726870347634534b614d536453395854732b464a4f5946682f46386d4d526d6365496e6e692f714c72305a6a374675706a3076734f31355736577a342f6658685430677a6c6a37366d516b706d573868634e524c39345043594d324f6959654778304452333873765876786277487841713937534b664c7a444366744e2f36647074457161466353334670314a624d6d6a704f6866394966697a5a794366687a704c3630644f756c5362534f516667457a4c594b50504f794f6f383438756255354e4c5a6d655256585271706c56624232746d676c546970716a536954375877702b4c7949343147716e324f6f365a7a6e474f554e664e7442445a66346651436148526f72534d31785551364764484a5164646551705769506b3377543561334c34644b675348574d33436f4167644f704e46756f32682f7438655736586a667166702b483637544366657a394f585864646f66533062756656644d6c795551305643754d4962685a4d7333486e474358416833612b754f764c576a4e636a726276654d2b6f6d3736552b582b6d667035356834763435356a354e6b4846346c3546356c6b5765526f6948626450686554614a497a467356734d624f564647663841584f65527a767339704f2f327a47484e47497457625636437850786d394c504176786a3945386678544e7a52322f462f546e4765546239564d64326a6f4242693531766c666b506b46425a644b624d33513273316165324d562b34556e544a38714a6a476669397076624f4d35484a584b5236302f6b74706563666d4a366e6562393859394a4d6e58312f452f5144784748567676774e7a416e645a567638416e32486d30616e61616a3171703944676e7952696a636d4872666c736e5035642b576d3354725864623476314631656e4f33324e486b57632f4f716f644770326c3933576f68386f544442717733624b6336716663684d6d584f636e4c54513332423770766a625a304b556f2b4773786d4d435a2b5038416b4436643033614278557a3154575535523245547351655a4b664971696a727a4b64414852704b79464e4841474769574e4b514f75646637734d6f74484c6a77453643364c74657336796c5758682b50714479655748796469614d6d57504d6850757178356654462f6b47543867706174726e7a7161774630665a2f3971614c447a642f6d542b624f7235482b52336a746e70506f7765552b41656d6d3065526c2b544b7a2b5a3465583648386a6f46354672784d75736c7558696d372b554e427545456976534d4439796669392f547036574b636531596338767a576f394b2f4b664e504650554477494f59756e35766e774c387738616d786b70696b30494a6b7a5761476638475a4d676c76756e6f37795036366d5a2f77414d68475a504e6b73322b6c4e6f69395a2b456156667458446d6f5659314b774531745975736a7139774b6f45584d6754504d62474e6c397766384742474e44442b58674f36596441786e7165437566744c5a506963434f765a593265314e54433043346a6c5a2f584d535a39356847745a2b77457534356f2b37706c797471352b63416c316f462b314b61744842696d6652337461706f4b6d53796a526370557567582b776d72542f4150514552466b36564b3466734d50645949495173686a51344e46726f31503032756c2b765777716157704b4851624f4c6955366f552f50316e65382b777758544a353376412b566563332f4141774d784f706c6c43775a635051416d2f7434474c774d472b37744167747054304d2b34786e534467677077674c694d6963316e395033667278487a69456a3141334e436b543073746257735034612f64584579727450796b50657a2f48594c472f477270394d7154534938635469342f672b76715231432f7468666a5442366a6571522b74666e6b424d39482f5270755272502b51417064752b5836316b4a34336a75666e48643031324f57354e487974374d41665735304f664d414f357a2b30616d4b3761397177366d666c392b4d5071312b6358354e656e6e34662f41492b2b4f39386438653779503159395766494a7536483846344c4c595632626a313862337649326143386e593176686c5133354463316c426337372f634f476c65756c573270667030714f73666a7670783664666a5a43583447666978537a7854786a772f70752f497a31597a33614d506e2f414b32656f69596f5a746432787439334f742f38586b54384d355a30444b416b42303654715333374b3138387a612f3758552b6c6677692f79394e50487358785366782b43636445534f64425733615567783565632f5275307246747863334a352f4a477a515a72456167543156495164665932684d7a4b7970756e4f652b427a6d2f493738614d72314d6a3867707278716532774f3164447834786d3073336279473556476833436b4b506d4846386a71734957417a74524132614b615a3672776e4e782f317654566976474a484f72797230692f49763032786d352b48366d614c5754496f6e7731376d4a4266652b5975315346394c654f666c6c59726f732b716a6a463836704f50554466686d59484b4e6f74533038616a572f7741672f4b58386966476574563576366335326a7a587a4a7355397773316d2f562f4766635666665a56727153664a31686937686658577856502f4146587a2f77443047484d4b725270556e705039663769432b726e713935526e6568766a5775374b736d7a504b4a567a525573355769664c797436393668306e7773306e566130623134745456643430674b7433325a6a6d41452f4e6174596d383136774f634f5a6c552b55366175433351714d624b613947694f3466746f564257644b47566c2f3768306d5856665535377a37374f496e4543555444352f576f4f6175646a466a7a47474d756850565664684473374c47664e7953376a49567669684e6f545331665853395032676432645076435932424b625174723049324535797466782b6a6d644f7979717561784c524373373853795771702f56364c685a7a4e6f665243376b6a2f414e47315a424f58317154576b4272654e325a377830613950764f6b5339566b61326a4f6e694159396d6d79503449364d686d74484e54524a645434363375537673624e52334c6e45517776324b4b45685341494e65574f2b4f6736442b6e666b75534f64784d4256514955423652534c4b436d376b392b715157376c765a794f6c314674476d4d347230663430456c47526350727165556e6a6174707450444f52592f6b436d70794b6b575377774e44327a496a5838537744634c53484b5a736f33364e70316552386c45646b4d2f51344e5554643555686c4b416a795367354566334e6c3131656c4d494f476834655038416d6f555333356433436a4958794632487649435a387248465a7345517646314a41324435552f6145336d6e70396e362b7649634a364c66315232634145506e563173357a6f44514c6e7545767243354a2f746c5450726c523753492b3939726c664e772b44372f363749694d526248487150736976613259577257433344796c4b56646544526b685a524b466e31337049557239796165642f54516558763841662f3841452f7a2f414b75484d386f6d35497244367757554a4d5146745048717a3343336f417350726c30617672756e49653836522b3846424d762f4147416c7749425458456356656457514e63396e5853665a396e763637363758453036502f636c69317042394865394433544744572f3841496e327561326a69436444314c364b6d524358652b356c7641346c6b61696e6c39764f493647657444766a6a4a49714834794569446f6350336a4b376c676a50564c3855426f4a514f557051735664313149547147503557532b315365646b2b577169632b636e587a68674172426e4b42464a42392b446b777a364f7078536c6975686e772f365a4e476b545953426f4944396e744948456f7566732f6a346377706e2b4a5167336d632f677241642b306c7839695630436d5a5479644d797a5879566e654b4c6e54304858556350374843637a32414a38497666775066785065483138572f346655416170427153696a7230693148556b68705779706b5a4b53683637355139683863735931696e767870574a6a2f38415646374355312b383965412b634c76476471667746383978442f48714e52556343684b75503451677a67726e643768503269732f663359396f477a33754964424e764361646c466e767778377a5265356e7739476d70444465353654586f74637a3263596e72705a796431624f505332506843494c5637475a587a6b646366517231777a504a734468366e6b6173757a45775979737a32426c6e6b5641746b65546475614942565638346b7a5139682f4a6d764b6e72756657534979664b376d745845384f6b6a615454546e366453632f4938747332376157655142457279436650694d6d5479377976492b6f4646335732526f64342b684d34636e6d576754422f43446953442b7169462b763371564836622b69506b666b37644b484d71526d746a3855586e35707a7631324a7a34664772496830554c6c43794e733932552b6a6b34506e57374e6b6d355a304845583954574e31746f382f54486a744f31624b4f724a397a4861427334564377553754726a70754b62365a6966474156434f6b494a61582b447963507a48384a6465646e447146315838373271687047677030725664457a5565672f6b58495762704d6c4d61694b6f526a5a59484f6637714f4c2f414d76736e772f5a2f542b44362b704765666b66616c7a4a5643494f616d75743172632b2f6c6b314d5079555542497a4e5737744644423933454f4e432b652f4c4d422b597638415631377a7944654b73326d303571694e676952642b63574b4471327771503630383956526b79497663742f454772334545426d732f7744496b75577233784149316c6a354a343745764e5249373048762f51765861333754696d357862553949596b6535686e7a6e446148444c68384a796c6832497a4d584169353651705a4d44483855726c5964613971496b77504e4370546e72653950754b774535765237787638416d6448753967316933356636314136712f6e4553545752554a4b5a302f545939596b68377579724432384650744171422b47552b6e786f2b3734574353533935676464754f7a776b66584c722f77416d6463354351443541623775304c4c6b6c42534d45362f722f41426a52376a45692b5435766a5337336b532f5a784a3243496345574b4146755a4e38532b744b33352b67756a55516b317638416d4d65683849463335525a30656958624f487a68664c3052423864764f5474557267494142353877396b465649634839414d79465a342f483848456a3835754a516c30326673666c53426d344d6c72576c3954314b4e6177544a3156455046476c4e53356e4d4a6e4f31526d6f556b6c4263365879417a677a66366d477478634d475943766e374238362b4c2b6638415652753979753963346839696f2b7a734c69302f615934663244432f52663743534b69644f515337785066305045504d7645664c634b787566733547356c737a616e3947714a4655334a364a7a57696d4633484b2b45316346616c2f4b514177444d485054332b715447597658722f7950636a2b496e715a352f73612b517a50384d6e356874696e387274386875346c5746422f4e52352b3758576e783633794a4874706d79614631715545744c7a6a434f773656535548482f586b616c59694f316b6473764636645362785a3672554f5036673638584f744e54727336724c374c4b386335553167305469517a32732f592f3747676d616c61795934522f726d6e74312b58397871392b517579714757397854617662555a4a666f73716c6b7a386a4f5a6f51314845576c6f35664b4d2b796e2b516e6e623956715843504430536e61382b54687254745150434a2f636330364c76794c3953424f786246594f6a506d4c50334c506e65734b663841517a61632b656e363665723453304a364e5648547a5763436b51544f5a65706f396d6735324c5174625555395575787242625231524a35596d7471564d712b7033684c667a37612f6a6e3662506e44324c4367505959482b3239517837515053364b324a366e324a6949345a6c7864705954792f525375644f53313049593734425038415a6743662b412f526e787867554f57786f66526d465539596c6f53734b6a73354f556f4f72563732434c586b537a574c434d6b70344e4b545032714c2f77434b47663750316b50467775634530723631506238554647657331457a4c5a654e647a414d323173346936747956442b692f393141765076754872444a7a647434597a67494b6b46303166776453545772734b326a716c314e4b7854473178664e5954754133324c584b612b68773255415a753537692f5836653838677a5a4d424a6f6456324e564a4f70577856446e42524f4347537a545276354f6c70532f706d674b327235785074366e6967353850792b392f42396655674e7775514a6f4a366e6c2b2b6457516c37342b755a516b756a61395468482f332f763338397a444d52647775414332384162634c5235423074496443356e2f62412b4252544b6f422b554f797a53652b543278636374797947663432635a2b2b6646784b6e4e2f5a474873734d2b6b6c706a323172477361594131594d5856395957632f3167616d3537442b775038413165754c396a37795067382b567873574d64334c674f516855773355652b356b7a4a524c6c4b554a30786b2b4e5079457a6a4a74412b2b34584c6d44394342705541475972372b6c6e2f556a75663841326150536b61665550652f4a6a643850386233636230336d3166476647382f6159665a30655558357566547a794b5571626b636e64426d7257617a4672477a46657069516e6e4435357544326d3344336357366a32452b6a2f6d6f616d676e705a786e58715470694b324233514b617451495053786648705a4671567465524475667a51786e524b594773357068494f67556e50506d4a6963534f68795a6d397a73697432643747544c6e4e4d32677a4d517647633736633150784d2b3862394a674d5a5a56317841737742687a69355a75486b764d4b63387734686773747a366a36324d4667674d6438374e4e4f6c6b2b4e6d52555a4574734a562f6364486e786f34555775487534706f2f504f7453617636327275343768522b394a3434754e57632f70614c64546b386934397165356b3847316f3375664b355774543874576c704d6a3172322b2b517a4e79766a396a77512f742f3957486d492f76452b6a466a2f45384c31363864434e50717a365637483265612b4374437a646972305a797866682b764b31784e7a6e4f576f4839504f396b636450577a695365752f7273396c743845384b32476f58696d372f355634543431355059415561656c6c343274733454395371694d4b575a2b58396251476a5255494c6439776c2b2f6e477a63373879794a62424d3174316d4d544d5147477636645830334933334b643279466f386e6c425866616132613050614e41425a553173617847724e6257694b6e724243787331687a476c686c4d5448474a6a68493559666b66726c66366831596c4435615559526a6e636a79445561474a577459454359586967565764574b6664384b4263663336524531705a48507a656b384e33682b6f6f43715a66766b6a58384e434136786b6263396e7a61585252494b684965716c2f5533756f6f4653662b512f3241446a443476326639583366463942694447422f3071654e6d5348544c4f6c52316458794b516f6d4d72524e5256772f6d37564d58557358787954643868733452384a7832363831657368456b7561346e4b7136624644544f62454e34306c6f6b353858315632694b516c363333657848744832762b74372b3858377a3532774c4371705a42386a467a504f67732f4e7673547a697758395a525430436464484654364244477466476334426d732f386a425270476e50396e36794d437047545666585552696f6b4142716f59733253384b534f6c644d545673373352304f2f655478596d483643697a334f627a6975504764764c6a7648357a4a4871456937502b35585354543661766c2b7853494b2b506b335953344877726c686f654836373043556b4f6538706e447a763958434d3331654f4531546c5233367066466f4e543075754e304e484a6c38426468646e494c4a357a533772466b6e6869366c337a4173784278537031424c59714b4e78716451436a5146764773355a4d756b5170715637565475353977424131423858586d5a6777514d65686e5733644d687a305256457131746a4274714450434e707256316a4c654c57327375716f59644831317258562b754e56384a4e39767341756b5857553439504d4d567375675839623956505332576c4c545551714d42773074636e6b364362306c7236366769442f6e3465386d6e656e2f32464d72546c74506849745430523964505050783439544d4c3154394f4e48537a76494a68565071544e3061547839374a6f544f4f6a6a6155344d567a794b5a6e3865376e754975712b7941552f4d4279692f6c64537462313233376837455077772f4f50776238327344565434337763667a75647570702b61656e6e6b4b376165544c57474c747538677837644337332b514368634d73552f7744724e71692b3377355031565530504d316447644b655059477750724c362f774467586f486836766d2f714e35444234726b5079616b7544517a6f4c6a3132513344354161374936534b697963364c4a777357675a7a4277424e46496c5943437336366333744d5636447a4b2f6d502b556671352b626d74543478346c6f6c3431364c344864446e6a2f4149745052564f57782f3270576e5476417969706e6b4455363074434f4b36545a67457a4d6e4839685a30392b6c53756a4762633968575070506d3747526756624236576276546542747178596c55316368786c43674761715062584a5038414c74664a70584438484b506478314471416f2f7a4a7a58577433522b4c2f6764612f7735394c2f515831313775654665716e675067766b375954576e5578596b7a68727738486269506d6c332b4868532b724a36786b64394538776b36757a35474e354d4154414850713276546a577736702b4466326b2f774a3867546e556a3643654356617a3253793644764674447957704c57706e617a515a57756a574f624d31757873535a4774706764707055632b657379432f6e6e326a563770794c34384f2f744c66322b4d7571686a50786a38586d4b53584b566f5a576c56765536587a6a66646f4a6c596567796e746e6a6665446e2f4d51462f6737376f477351533431316e326a576e39376b624f343334672f6a5a3656522b4e72384639432f435043565a3047564866337833782f5066714646584c5a52586e78366363744a37484f54307a70624f30506658773230522b79645534543532314c322b4c66362b59385a333938587751665237387476547a3154394f474f385273386f3861797138362b67706b335a2f6b474e71564d2f6e6f5049346f663350617634792b796f65384f466e375566746e4a452f5054396b6e66703272626d6763797476387566795a387544527a6448386766567a794c477349613335652f7630565333626876304b532f65577979695737513556565566734a4a6956502b386662516c58653752703663635064312b7753372b545035483662646d756e317538383533794357424f6c4d6a5650744777575041515934327a544c6e54525038415839354b5761766946534a775a78762f414c776a5a53506878362b51726e7a5431543957764d59306f3874395376556e79453438344d6f662f4a504b2f4a4c3435777a33564f586877774d4c6e595931444b503030635071516363776d77514c6e53765774596e685773657658634b3058434d793377324a5766515a4e562b32505a7831764b512b74375444676976336436526437307939784c365854616153543762627669783543552b432b70487142366331374f68366465582b55656e2f4144557958596c6572345075365067374b38713978556f69317447505134644d4a61437745315563595877682b2b4d54374141596d6c626471647753377465532b545138667462757a644c79726e4764733364477062366b43747977643979687956736e59357a316645504449507372396967613549524d78485a6b4d69556f614b2f764d507662514a647039736e712b587663324e7a4f5275317065747063735141544468436f786d35326776656f422f714f2f6c2f3545625279594163376b382f745a4179646f4e6d5878794448676e4939544f5a7677642b5a6979416c72413174442f36737a6f6237397868324364626b4c42675a62727a6554697557797172366572386e78733759617a4868464f74672f722f58306638414e62324b3662533758647937685a5870663531722b44656f48684871626b314e48533866386b776a586f637a6c7454304166514a636132716a6e574a4c71535277663061757a4838544a324c6f4f64744c526d4c316e6950627a3452357a4a366e59767064366f59766c6d6c78767142346c4c704e6a377041486a384f42732f543232357a39656546526b352b684b76396d34766d354869566a5a4657306136443875596d7332727437493336385766622f455269394f52306842414a735442673635346d4f7254546f4b7535515761637836795047746157516956484f696236626d31663866397a6d4165665973526f7a5a4f31442b6a64554766476f4b4e4972646a49556b4c4677527230714531437a766a624d5872666c6565556f6b2f58506b315a2f4530497471616c32545568324e4e66633174724a6444755a734549465a4d45316d7a70357137334a4f6657754c487a66693550516d4b7050666941516453325a5965652f384176672f6a376c65582b6c33673335536550526672797a784771547848314273444f31306330636a5631746a7346526d7234353977773071716a552f76584743494b565557554d4b666864767374356931744f6669486c75616a71474e6c5559394d75492f3370617836786a71712b616d6e6e5a544871316e396365564e39717659526741664837654b2f72307548555a314a2b526a4158642b6e4d6f6e6230587a644e394b3670576657614d2f566a32696a6f726f35376d64506f49704839676f2f63486155377839482f7672463471687136667a746633767853645948777054373147582b4b33664b7869673653785966307739674678626d2f3037486e6b4957436d4648512b79354c474a6a7043684c534e4939537233672f7145304b442f6135596b736845666b34594e443576647a7033724f59384a44795a6f5076514930726d42347451623250624574635a3074533236667569352f484c4b6461556649624865313033524c3553424c6b3176306a35684b4a5949634c5974576f4b31467956617539664857324c3631794b5033597077636f55755664533139487166627a2f414144336c785365334569683058712b43586d6a714b70623253687a732f537335626e56785373596f67594b2b6a386e3861784938635061503049664b50533464786e7a794255756c7051725a2b30744c744843343978366235567459717370777364583339686f4a36545033376d66344837506549634d306b476d3273394a436c4e39424d4d314c66786b6c534a30304f454b497962543332664c39576467646c486b3478696741555169426b74762b355836633933356a4e6b314e484a77467a46384e3549647979644c4a427456594b584a594c6e4f45703172374c7a6a5a6d663439503744572b372f41473930434d6b3842676f7753716d793367704146497043583267396171567a396c4c6a614a7a2f414d65762b7877414539497a4e66375551446e2b30395944464a7263786961732b563038792f7232765734342f634963464c516e735a43776c732b764b34466a3766726a31492b775039774b50515341716535634c49362b5a4856437a3941354b7966627770535a50796d5a564836635351755a5a385a394c32435a2b2b6a2f41443934426c7874624e514645726c554739633143337a43724a43663455754a53465643536165797a7037786a506a4a5078716177544d365173416e6345322f3150445a363668643836344571537272482f74724f5a74585635793659694d50597a706148754e7133445131786b492b37324d4d756d48442f5a38653838686778383361374c457a304649524a6f37497949476a4e453556414a305631746377794a587769616563582f68784c654d4141554c7636666b2b2f774277503538557932386d4b375558794e656a7a7268483470365336743753614e4876344a4749487a396749476649502b564e2f77446f386e7248344d657649496f7159594b6c357a6b3665676a714578706c36584336306f316b66566c7a67734952616f32554d443370636644427244345257346472794245454e2b61744a684b41676c567170644a6243615a38696438626747786647314c396f69726e4f6b502f41424d5a7436735668336c507a2f623742525a4f726f345044705a7a7247714e6f49414643675a694768464d796633326651397166632f6f38425354397a69596c6637493941504e625334426748426f446a6b42564f636465654f684549756a3541534a54367233673663656e376c474941446d4d4c2f33737279655832424c466d5779784a306f74533974744d6958394a4c4a66395676436f4c354b55644c36357a7075576678664d616554452f343267497a38726675466d2f49664a35553358543978486f6d6470443033644f52534b5656664851446d6a786773596e35364234345667656c4d4b7a452b386f504d5a4d344466674d5435314b56305176705067636850375853664b495a36556a386b2f5a3345664f382b464c5768514c61324278616636426c4a3946615961474b4a36546d6d4872574b4a4b304b39777a6d444d78613556616d62326937336b354a6e7a34544141726a42716673416b595a54575664304667334c516f58775a665866574e4c72532f636b3834542b396e2f755778727548557a36774237314c363334692f6f50684a44735330483767556655784b74517274556149315653795273436964796853775572304770486f4e6d52374864554b54393766364231477a6b774b6d6f624b48795350304b4f716a6339746c442b736f5572376b3431477867352f786b366c4e58784f54536b7a4d7a4a724b7763554e706e6b2b796a5a4c72586d31746135546f716b577564644650432b4d2f6148467a51705439376b777359722b6542524b6f3933506d41732b3532586d315a39774452485367383642754f416d54334f626153386f693434335a36324f73304a334d5763375064533048636141636c414a6132326d6166395471376f5654314f304b3446644e75566f7061544b6a5a4f6f4d306c4d2b744b7a35476437317866493578742b793958576d44536463317a4f66644453632b53576f346c53727a304d696271484f6a506c5044727536375058795979426b69752f5752495a32382b51434a784156676a6557615849473049626b707562544f69576e6c73566852576151775845704a443963466a71526d69524d775574426b777a754d44442b67567979584375616853736a4166705a753274384c6a61686a4a515573356f3673684d6f693751564c64735478394a76752f3341546d756335494b43526147657363663646487739306373483579325032734751555761424f6e646e7430724a567147722f723250637746416f512b5536666162654f344173585879637a46744d4d53637339676c45726b507949736f7254466c4c7971464c44375761576b564661306b49574c444b734432736f476674596656575832336470726d6e64574c2b417967536f645a6259376d6c546e724a726e634b4f6f6c61677a4b597454434a3378766361597672433044636f4a34563874476a324c686465476a6d706f667a744d383939656b6e5a2b786451683947674a64304b44713633737a302f39717973425131663942452b317a7351794e76666b7a4d376d674674394767535841363543487878653835362b305438536c7830644d5437386d6b5254745a436d684267366c54764631664d70556d63326a584a52523042385161456638594a792f7832686655316b7562786b73595475654942377a36354a6f7342796a4169382f73617144574f5345574c546d75566f34366a54315277726f43324b72576e7539303742786170525939515267615a76395a2b777033663042717555573669507630357351616b6b5366346a6b565154736c664133567341745732512b783653575335717934704e64427454484e397567624b4336475061343439504e6e727056306a683148365a785437314d4666796537536f704a4d476b67374750586c55786b6d636d472f34712f354a4b4865787941594a4a6132433852526c4d533276536d4e744a777455622b724e616747526935382b6374426d742b69525177666d79715561497a75433664344f4e716146477578552f4a644f6d6550544978305a392b364a62377367687053314f675264314530706e5a577167724866467831495051646330632f4178304e6d59346368353258315a48493953684d392b526d4b472b76396b735230524e3142324d726b6351435973453741672b6d48386b484f7041453636443266654535637571346337495a336d2f52304e5244744b654c584b4b634b453155664a6f56554d524c425161574f67353033433550594f67515a45696c49567a354858614d75574d625972563130636c68746b31506b59564e637379547347703148436173796c613238307163744d427061443973507a6f78614d544f58715554357856317a5368734a55696433787576664a3279342f7544327077386e344669774b76484c3975427063373042307149736a4f7a69727962384b7573453568366232745150666e304b48547434754f6671744c5046616d4a6562484d59484469614c4b53614c6277516a765a436d55355a716f366356337564635532656c546c317a314d526a4a675a5a395a79797a793250744b433061546f30766572357a355664514153316447666e3562376d764f715345785a3270366c50527051794c4b714a495659764458512b474e6165713551683077702b486f6d66776b4952726939356965566a704b30694e4d656e776b6f58727647694f715743486e75436a72714867492b313654574b6d5565773631385a376a634778763451635372317638666f657a4979304c7a72325461543936444c52584c44454f5a523258533737473579614b7079414a686c5332686e2f45356b446a4e4f6572324a3964306a3359663272644f764d394b4e695470724a30506e4770556473554e7368374a7630696838686c36634a4169713561382b77442f53662b72395a5169514b6a4378766c2b30647550722f5564563532584f61326568724873796334773555784d3056684a4a4d766232317954324b484e453449584b544f4c754e364941776e2f7744583973664f434846767978664f714c4f762f6b5478364e4774596678364a383546587767763531796a33534c3659334d4a70674a464d6e6c45786344366e7a4245766472565573735a4156433941477155314669327535592f4e6f30354e654c346d4b4f717168706659343543674c714b526e6143663845394342364e36707249415578583346667949776552785456795469594d473357796a3431632f49342f755a36324f347651542f316b6d3471416350663041576c376674783238344f567248735a47644f3277315a326670794d75727a777063695334337a7a6e6f446f5856792f4a4d354e4d66544e7633506a36505147587836683451782b505a68616d67464648574f3043354c4b4a31342b70546b38496f30495934553879636d306563557669307542703842676371586c3858502f414d662b6751482b596444774d364b33546e6278456b314c46464a644d705658324d7655375a5632784f6f4c4a632b6a6e7a646e5a392b69626a6759684c4253714f58642b554c5175305956537a736d3471727568554f6b334b667a51583372764a6444535a566f4e553852646f6d34702f6a715838453442546131792b417063306c5150787446387a4c70653657684a6f4963784d7336537258564d3350677534684f6e6b4a30584a6c456c7870667a3230753642586e6136555664435a576c7476314262596d713062396d4a70334f437633684d7634366d51742f685a736d74445a35475346334a483542326e705774666145324c6c547978524b3539656c5a784f52686e3561785a734e736a307561696a4243414a544a2f354f655256576a4853787647476d516a6c7936562f4a384a44383155683141617563686e674c367a364f6163585958353963307a585455797170706543344f6162436e7a386c4d482b553158777779396749452f476e723075496659727054586a73572b663967385268304d74306261666b376b303072504f5759723166685157744c6555704e7a6e646239686275444f7236716a66436c31426f4165473573386237654977314f697774424d453665354c2f677657796646792b534c57356d47346c7a4e5a55715a6c3466367837454b2f68705a664e33704a36376a5578584765626f4842654a4c724850534f6369434e3038705a746c4b542b706d3741564973643271585159753272392f47796d564c442b5130704d2b736f6c563976384171643976454538724d646b727437614d7858315a7a38394950586459575a502f41416d66644e3963416c61613249596e795957383938614337716d36756b7872557064524f31542f4150585a414c6e597279697162554c5833385a4265646565765038416c304569742f743744574d2f467a6b426c4d48734a335157414d42425373682b735766342f536f30646e746f2b6c5536345838475375644961637830494a535a714a6249754d53416534577a642f58456a7a3441434b4e365a6166443137455956673644425535394438685438364f3657686c46617030734a4b5673484a4432554d53333430772f3569343069734d34446856426d3075354e72386f6b6a525775595a62724c4a6e31325038656831394b324e48646a556c6f2f6a78544f32766830756d4a5038416758752b554a4f636e75484b644a6c714c704a362b3574305530776e4e6156434679323044482b70636b616830434e6678464d66584a3559627a352b2f7743672b61747245525772612f4e4d65304e577161434b687353702b5573583279614e6b6678735a3351576e36336143464c76724766477165596647444f384c583539623736586e337261356b69306353664e666e6c707a6f736a55356a754e5a51314c4632664631363032476c7976596c33756d6a416261726b6d4b7071596e73706b6e3655704d42335a67304d35576a3836356c614d66317062752f546c39727568314b3563656f7a6d2b6e4b7333424159626d7454495a3056744c6d627130784f48375a39644d6f69674e63636b30624c435353584c5938794a78653878704a73314b754c6d41664d34456f687256513062623039434e6849784e4459317237324a32556870554c364b733964587a59664771496b7a3048416c4a31644c3272713642494a5a376e31306f6b7846777358754b315332565330315a4d35555457562f76536b645a326d636e78325743357a4f2f6f7a734270422b774e632f4f414c6c536c5a4c316444776259374f7a737239585761394579304a6f5945346d4d376b796c7a4a3276734753656d5a685934412b5143745a2f5851473577394b6f567872626a7759614637466248353752554c5266647061334d305677714b796f4379573837317338764f72732b4355525737324f424f7a6d766d636f58566b664c6c395a544e64466f537a32324e2b4b376d6878756e64744a58556c64566e305a3166374a794c356a61684a31464e54506e79336e776b4f6d496a7a4b6d7966796d6f5047564a67753066317a52564f36756467584755317a673555515379344c716171766d725069656b4669312f422f576757665474497254736637426230732b77706e75706a736f55376253316a426a434653725672586d59714b446b2b627277734d2f3841726d4a384c504e647533496e64413537453246496b37632f6b326c33557566734a484c376e796f58717651677170666a314a616e7735385a4f306b47492f78763170412b435a71517a45585842455457304b6d726336632f705a6c3432616463384f657875706d3655636368755939326c3861515839546e756162587975726c5433346e57427a702f4e32326a503841542f314475506d455478384c3145344c556638416b4b706d6678384f704d6c4c5836746e55523264304e5032666141674d305278716f4f59782b4b6e7130753154364477534239793276765a7263316a6f3972614a3336375a784b376e614343736b726f7668466570494f637449324b614b6665324277384f66355a6f652b73445033703574452f71464c58784531626c756c6a7a567170415168796548397147706e5853384d6279613769327a6a5473456746416b2f6d49437554715a49496b69694a3069743574625157446d35714778356a377337527739646b4357756a48373932667771456e537a334f66516673486a35325676325a446e4e4b353946685372633876666d49706634354a476e794e2b7979644e4d355a347a35596330733163597242687a2f4346447764644f7a343255444859504c7358364b6d5979376e5079715a327a374538776c6f343961382b3933624a2f755454633436484e4765675169465866686447507349685a77414269613364675134506c3169303746365769686c65536e4e71304e6d366561596d706946745256507a343533304d4a734a6f4249547a6346725072634230686b646c4166484657353163385a757a5a756431616e7936354466546f456e6c58666c6e527457657855717a596c54716568395147552b39514d5a6c6471755649304956335a55796358556a4844466973706e4e424e326e6f377567726150726e447051726b6437687347734a766d556165752b502b674b7256566d4a4e346b3661717132626d6779715254732b4539442b4670717058673134354e57345a776e6f715a52335055594137334c73545433333134576a7941714458694c627a346166354e436f4b36724654466c5274304d466d706d73767a4274364c754d3246686176572b7a4b75704c62485839464a746c754f536d776638736b514575666e5458726e7a62494974395a37476939325a4f504e522f31394a3171576a6e6a48705330637264372f41505033724837424a48695342744e7055556470613058786b7a68315353324d306e5a6568506e734b347a4e6949325246484b7a514c6c4c556c7830353556617144634c765a49447333655061453151794d505354697870366c447a553871494d79646a744a63303174444371544550466f61737a6e4a5858494a732f45444c374b382f6c3977343457686d71792f7573677a7056783556457a6245644930636e586e736c5161636f526a7631412b396374676b5a664b47614b536b4e50456c4e59424c644937587735665a494c64526f4a6b4c666e38646e65356357564f355571334176514d74516566784b785231516e534e454646427a2f4b41414152455456326c69426d486d6a386d4952344e2f4d764a6445794f4e6457615a4774633770394145324c4634716a46303968383631527257593067463058364271794a6b3132542f5a7430696c7a59397153792f736f646a743550654e7041444a6635424938574e587768535a676631784352315a674469664d4f70714f4f767465697147664e79715a715646375650696e6d6131316938647257464c50703154642b547254596f7a4871715a5643484164646238556666356156354d536e4c366b6673713559676365635a70754a3061436d47794e615672616a3433632b62756b7852732b4a4a6a774836567130663476587575507161783676344a654e71676473614a3571484e64546a623366686363573853355865315857676c6f45766f4c554b776b47516e783875325846372f7154315a6b6c376d3655656c4662714148796d2f516b30785364475755374e6a346c437743725839366450434e7954364378353265394136636c694a50466f687137643250794754536368726f575256756e7135512b657a53646d777971367569746a6969734b355830666350364238354537486f37703251473146637a3074376c2b4e50716a47486b3435427a707a714f555476514c48665031383838744a306b636372546f2b646f4263696d2f484a466d64794b4b66545a484a556d53574c6b6363694c6b78305464483751734a6e58533245787852502b794238544833677a6b766f507a70716c416243726b6a5a6d7850624d784b6968656c6b317156322f786d667967547936416f73712b475467546b326a593559775a32753472674a6142557a746f2b5533364358384e373162434a526a71356f5048555972506c6c7a2b4e6f324339734e4b4130576371346743634878556d757051424e56644757744e32746f78554246715656385371657048522b7a79664e3150322f54517058614a35383357534a506f3931422f4d626942774b2b324552324e537930787a796d556c72675153706f4a67424758666452526e7a6e424b6335536a373670307261367a34674d542b564b752b38552f30454e712b78586d7875584b623745774d5166592b364c33797142715a745a4f6a32577874426c2f736c55612b4b2b4c69665a385a5442377035515a64436650627774435943704a4336496b3343302f686e6f5438514b41633739646e454b45324d4432444c774533715a327a70634d2f36426c32554f716c5877436e4b4e3031626f6a39354256704b5a2b394a566565437a59363055334659396e4f6b6f4a3174456c30484d356e3941376c4471382f4a462f4872544b35587a3849544e684c4a75652f7237334150746d7a65767a6d4b41752f43484648386f5467544f2f73422f774272735561583963456f76366d654b4a7559565570494d79416e755354462f586477726e50346e6a412f616e4b725530446d4e54674b716e7263504633564e7a714a6b3177494e2f3841494c636c4130444e46566670524f4a65677768476453334377666237462b38615031387241596d68796337395852384636624956463836386e6836466473524a5338783972754a6f346b342f337866615a56637039683864317a7a5650786376304244756132654b4758563570596a752f716a36396d6a577550715a6e636f5a3334364b4770577869334c5348556b526e33394c4e78482b2f7377447954446b7749704d354d47696b5038416251397a38386f305370707531593861466643466e666b5477766b6f3969667367524d516666693642334c5646536f6d3663367457425a7243436135346f374d6e6a744c594c782f3457324433727169596e3748756c4d6668503742476f464d446f64797637565753337972303539586f793261635874766c6d584e7673304e7251517a505a48694c3677707854764a39317a535377754a37396c5535556f39382f74376b4958792b3054696135485258593950465a5055324b302f4753626b2f4c71655237477255426165484f45316c7432726a6279434935764975466979726e4b54673036526f6f5033706b4d6670592f49572f36612b5a2b6a2f67666931394f6835486f4972306a38615435464a6835736e6d47716b615973315a6c6e53584f4559355a7454516374776b726976624751482b6e534f42744c31744d3952356f76377657393435354a2b64482f414a4634366e354a64503039384c76557936646f746670304b6f316a66306145746f6457567a382b366a375a6650307a644f7879462f4772766437504d7870596e764734582f79656a41324e763172396663356569365746506a766a742b6c79574a7a3738724958354b365872346d56615865712b4d6674524b705a48544e4e332f5037416951752f716e746c7137615150566868656d6e694759643235342b6a6d72737936664553364e504330675639704d544a3542626d5a4b6e353556693469705a78424a4c6c69534a646b6a6a7372344a6d656b7a30486a332f7630666c645836702f6b376b2f6a39345631352b6e33342b517868715a474e61326e4475395862636a50487954533731557666666f5a3468464a3730757434556b774c42705371486f6568374a703764506650616e2b673456735677554f593350626e38372f3145706f63532b38727275533961684e69316430765a6b7353706e44596e33767335316a5666474c663637774a726e2b3150336f646d5a384c4f2b37683957716750617879327a484e31347473396e2b624f69706c4941414e443941596a30676276544f417465674f6e54396f77374e556c5550656352516f716f4843524d2f79577a34326b5875346f4f70502f50767a4c542f51494b6d6238456e426d4d485366376c5574357848746f6579676c4c4a5a46316f7a384666365149435036502f414f3147526e376137712b497a39366c67773346544d6665636d7435543253646a6666623878542f414263583864524b53796632457a69512f594750535149702b53777a6e65432b797a6939417257786c4c4f715578302f32506b456c7542716376334450316770357a327259426d7377396a6861487442516e31523047706772706e5962433470552f4447784c434142524f346c644953556f684267732f5263645a375348392b3075416f515378306a326c4c675a77557a73374c61686a6f32712f356f574c6a487057454e584a322f74626c644468715a387747546663434b364a6c392b66736e575563366e322f7274624a6974506a6d66476a6979344d375071696c58524c67664774507348716661526c586e3876754d46694535724c7271477754646b414c71693936794a4a30554b597044556c7850364a6843617545526752393968392b56587473456b38754c35455331546f556f5554754661614f715854503065722b583566325358697366305a6877522f306a37506630544d6132322f45484d714f7161364b61695676474d6e443579574e613671612f6847634f30462f7741304362424a52393530422f7a2b5950594268374c42454f6a5542526c56784d6b354e5877716c6f62614c53727159346d6d4b7a464c7538714a6e6571366241415341544c762b4a787737586b435565586473316678324c4454723132756752446a5a2b64327969696839425242464b6e344f6b5469706c496668543750635365662f46456a2f714a78484e50556573542b33622f626d38583942664559664f2f56695239586d336c655071366d78536e36584b66452f476f6353616e59385a6a673035327a7533425969795a644a2f57425476333862584e504f67507a4e62587465324b64696f5965525a33725876656f32316e65462b6e2f414a66742b4c5962654e7a64337a656176593364522f326f6441614a4c6d4a5256564c39477044705672494b4a6139416d43366b672b302b5932784535746d4a462b556669333676507939444a564d4f5058713759646f30664a725a6d7670773148724c4e75486e753042466e7354502b7659557652625842597345693456566e58337465755075426e5077446738593871683872387038774879505a6667386c703333354d71456c4666494f58477045756e343358464f7a34394b637043627a39724b6e526b64325569396a58767378694b6a5a5878663074385a78394b4a64456d4c4e462f48354576622f6767525a492f4e5a6b73556a78375268685a4b524c576b5a654f585a2b304a6a624b336945736a554763326d61376f366767475072784c78687775364f6858313842475077654f2f77436e52786d61424b784e48364e436674655663537a536e4d786d547933675757762f41476c4b5654574154777a563874384f3873693869786c6a4c7565415635577972526a7a4c4a633577522f7a46445932517775554447564c4b684c415535496d627530756a58536962515245346d4d54336a3048656d486d66672f35542b6a325435767a413478757575644738336b792f69792f49764855716a737a3832696f676f7368554d3969355845326568544c4f334774524a6d4b666a74453664706756463669656d7163727832653641745758573857575979626475774b7450366e5a374d7a51546c6757674364426c6550566f645478375059726a676336333378674d6c3632335a3459774e4476796f2f424430732f4a503068767a394f5737527a396e48303037316d4c7153702f6739647a7634336e6b33312b2b4d2b786453466a6570437953314963532b33714f43303655613665706254746d6f38466635572f6a62366766696436326557656a6671427877616e6a3275562b4c7152513370373556347958327a6b3135706e3044384c4b5a313049506f4d39314275364b6d755638782f31362b6c656d7058645472363878725942494c6b78746e6c7151396e455369493859437659316c4a49466f6b545136374e635141444f435577427a394d343153792f72594c426d66726e474e342f7656484b4837577138564a36684c424a45694a422f774170795956544f2b2f733574417a2b4565457775717a3935354157665756382f6a47724c6f41667a73686d6e686d4b5261474d6e36767073483555304c4d52557a355456336b376c4d4c3271446866316163524d3247504363704847724b4b6559466470514e43324562474249566866747a5361776632786a425549634554585a386e794166776c2f56682b53787657674b4334624141576f54315a766e6a47685a52645372694c693930765745776a396f4f3979556a37662b5141663644306266324a386a746e6a6e72744e4742586a732b565932415a54384d4f58775159667a4e526f4b736f2b444e68344c58504f763369344a33556c377633376c44352f7466376b656d337862782b6a4438617859585a7a6a32514b7161626b457461344656364672716564716a32616c556a6f646d7a334663326a6a6770477963516b7239704f6c344a6e4d7a50694e4e2f7976386e436a783351516a527a3336742b37734664612f6159553930656a6f77794e656d47704c61493566683170382f6a75634d5071787076343845357753427070526d666d5046312b55476a527065707447545847736e7872596a39796c6e307a543936373365325775427a45753243716831696f615a3850686732647a75744768335055306f354e33674e623045326d686e754f6d3179303934676576375857524c2b475536473843726e31303939793147422b395044442f4a4c51346652312b48364436695648546c5a5a31366a583142765a79566b704b6e4e5467435a665061596a527a364c675677684976384133732f6641497a6e73506e7847534a324b46457754646c5459532f354b5a6a474a2b346968466a316b35332b5576533970384166394964397967425a65774836624350336f6d637043712f32676e4a2f542b5774587869784a624f52724942633739714a79556b4b683976363466374c6e395a333767306c46596f4558554c55776d554a732b6357706d5939414a7042344e6134426f59716a2f6c777449666343522b4c324359643676384143444865496f4c7035306a6e6659376c78705973765a572b6e704f36353439426865302f6b6c53504f6f393752417a44706f4f6a39663154763573676574344a3634436141734d6c6b336f384d30515539644b35517545334a5175774e444e367356725551676b43594b67564f6157626a4872334c5a4b4b71624b5351694b66715864353248323143383163373334534e306f7a7a70463358632f784d47494e624f6958437a32656632444d6e6f4252586335375847314a5169705057766f572f6a6c4774596d7a6930722b664e5742394472785372767864635469497a767737506b5070643679586e323154527647726f4a6a59747656484b2f6e3231786e7867385035754d584b6e39763459653159694a634d6d664937755841546f6e4d50325850727041316832667058542f6361336c48582f58667a327349716959735846336e44416a5067653478506e65534d4f2b376a465058467965317a6e385769666e75396a4673713056516a4f6d66334a5438626b687741346f4843482b76686742682f514c7972377a547042665652386e5731545a79374d7a6f546b7a72566f4e6b36654a636b535a51544435523765676e6e362b4867445032742b7a496c3947786376733665564a35563070376f593732413262526f423158426b752b616345564c6d5a596e6e567537377a6448514241347a5334383631336555514830745175566d2f42336c6e4d346256397a70726b5175746b7330524f49565851532f75697155595932664a5237424a774b50326b597541716737726d6135416146414c48536f6643484a6b56554a646f6f4e6d63555949697037397775786a386a2b394e693756625a4c584f67424e625142365a554b546f56745a444d664c6d323077557537373271517a595a6d2f47355356635a447772474a6e487276325a79436a696e4c59315841696244713869316f6c496e58326d393079556f414f477357305544504277426b65544c6c6b6d6449642b66672f4733332f37784c67732f72586c7258787a3978362b76775838393166425a76536a4c667336302f6a2f414a683474666e4a7a4d664966574e4f336e70457161386b476a786e38656268714a6a7632496e424d33767741594162764d31597a7638417944706e753738757579714b76786254485a4369543738504f4c304965364d624d7a4a72327157486b6a2f4f5961763439627633456657554270724f654e62766b2b74684838655035674a70656f7a50487a31716e3432396f6163306579706d7666384152716c6141495a56646d4e544c557a6737464e553063544f6a7757317354536d57437974782f4572544d5a6d5279383956377472386766566e4b3856644d627648346f45524d6d4f68766378464731354176344c2b4935436d6757547872754b5a4e35455330514a7076412f39796d394e64744b5a365149562b553030506f7657507144344d4166776d666c2f774164356c4a6e38553353666d3336656a6a2b4f334a32414a32626b70585256396c596b3164695648595153522b34733555303575575270704a3564523577384b6444577a796c7a55336d4f6a7030784f69765865777361716a73456a6e756456546a7a2b3563583776426c50734d4f70596c493033477a586f6e3668343369336c5069766b794e7062746d72617732517a774b365474344e53745062636a7661786e705438724a79547855313579332f54736d4d372b6e38453162316d59774f3769664f737647395146364f6669385a476d54506e6a53564d632b646a73326d4c6a566a563656684c6a5451756f3670767032695955486e5273343130716e302f317878584d5a6a7141766c2f714834356236622b544435566d706244357a346b2f4a7138554a757a68733035426d324d6165744e55452b616563786c553948364a50744233644a79593565544a734162524578626830714f655871547156626d4c685a2f58586f787645382b6e443866385779472b4f59475a67446b566155694d32444977366b4a634c3969724a36786f6d447136317442514e4835542f72616e43337a4833307739585044394f664d78504e4e4632565534626b616945374d72726d6463644762567159657472314664526b7345536a345842416d3964536b684f6b6d46324c5674476343302f4a765848302f384743375a387274696838526e68484f737a5768754f31396e545a6f615739342b6a447966485a61466a566e4c6a545246613979545543615855575468536b43694b7a50434f304f537635592f6d35366a6574366f664573497466773330353262636a50526e584f557261386f7a6948423163366265336d2f4b2b356b326c4c50475759366d4f6331782f4d51535574634964476e6f3170786e6d754f576c506b5866474a373953767368515470616b612b723646452b7430324959773461703048443437585a38665143686253454e49793448374e4a713642716435687637506c576d2f79436765305630665534393858756d6d6531307244584b5553364f7254796574667943496657627737673663674837467231694b7879395a6b526c69576678615466326a694530736a6d635a72374b543371646169596d537545536e366e3670646351462b67446f677866734556543858302f55506b57636d453038632f7335744d567455625a5a6e2f495830383452375134696e495a667348387a51363166666948346573452b6631594f6f3536416e304a36614e5a37364b476e4e624133546f51466a425a4b505667346836626e454c75386552454c5253414b37316f74587a4f2f776774446e5a2f593632466437533650644a2b665848664b70527643355948484c4c2b6c7230434662556a336e423644484143532b442f63465a74623542367542634a3857773433454576784c43524c51696b706b37563162526f75715364416e63544f4f37557450734b6b464c4b6c732f41585558642b507550366d655465706d663464364a2b427038383839386f476a78384d697a784f48794c2b506264306935706757737731352f78756f537a745467486b6173325176334d615249463572747a7157325671505a6e2b443339766a797a38627678333855385339532b654d6550656535586c75353679372f63706f342b4c2f3544666d354e6566465a67364d5a423865585052597a32395535335a6b38643946796a5771547a6462576939375458733942316539502f45542f41426f39446655723177386a357574386c333868476b33736365507a347138324633385a6959714a48724677382b524c4a696d5362695453564d637a6633314e58504d373755714f5766343965496246312f6b506b766d414e386c66764f743868734853626e386e3236647176504b7257335964544e6130696d735a5050525578792b66577a5a35794f5679744941364e535978694f38627935755479377831334834364a623948742f5a55614930445459767648455436496c61696a544c78616444696854664d31587641733458534e616e2b7351467338467a74486d544f4f55576b74457730556f5a5a6d445a7236462f4332704e4e6679523936575450507045433636312f4a5174684172362f786643384e5a2f577230513859326d2f7736734b4e46645936575346472f6f376e4c744a6a2b7558416958536c72706c7568456f33665a4358735a706e705848372f695457344c31764e666b4f6333727036465a75534f72347235524171616e547852546e79572b51596d6a647031313574463477706c6e465a592b70554b5a574533744b5a682b2f4f45346b6179502b75696c3574506a2b673132395450484d6e31542f74302b51693155466a6678303952764c50482f41422b6c326a624471496a31707347394f736d7655454f575a77535655424d304b61556850704c3972303834736876473675742f2f73714f41766a4d5174564e5245535a64446b4a306a644c5052324e2f4b70786d712b2b63436669664f504259644a44456f762b7935786e4e4f6d6f503636675538787552314c5a4a6c6e61697967663255444e565857524f59766b627156397337786c465169776673393479595a484163636b667a4a436742486938476e6c58713869694c6d664b797a5044574630622b6948306e5a657a6f2f58566d79755938654d7a59586a52775667512f4b49556e2f32545737687658365a657050747734587a54527a754b2f4e5050736e41646679497a745a50645a4d4f76416e6c6d6c5764574f77476746485532664d6c4a7a70796e5557497a6d6d5a3463496b627a2b442b73423446584f6264676143737a786f4f636c72586e54566b59344d737132557a7a574e44592b62575a37722b5250496576676d72724230656438742b557845395262465071444a354a4e6e613565543073344b4a4e75584f7164592f4f3036704346717533622b766c71736a5a2f4857654d382b623353553863437150682b456676663145566a4578346a6e742b65586e6b6e6b76694f356b53424554783263792f5562666157706f4b736b6930744e722f7669756831496c5256704d4a584935334a4942344b715a6a61784f756a58466f396434347838793765424d4e2f376d626656306b4e306f6556652f765a724b66303531496d7872756955596b58552f762f414f44333247734236585875723468526750596c2f5945467a6a6b5272637366592b70784b7068524f726c4e7932646a364143342f774453482b737a482f59774f675a562f6a2b6e363941326d704a6c43694368726d4253324652653150324a35754b397a486b4e6132662b396e77455263346e6b35675a4576684e49503630476275726e4f684a632f5537506c562b75676758693937584a6b4e4e4e494c4f67557553665038414c7676412f65372f414e69756671744f7a4156556e6c5275514b6555475379584c4f6c59786361716b79636858564c7049526a36746153556133415a4a63302b417a6866502f566867313639464851567758734835557a676458453954776d66583757726b3866756f4c37516c30657548354f2f5a414f4736676b394376437365514c672b395a71524c5a564f4d664f50515a636b346462362b6664354d734843386a674368695246686449572b2f324550656c372b562f5a2b73684a756b314344547a683946765275344c30386f2f51756d2b6f383038314264317965796b54426154654c614c75634542496b6d6233666d5033617a43626738464a742b4468524230475379665435395869416b506c54654d5a384f6349382b6476576f39356d41462b2f634767536e424e49396e616b6c4a5a7841544f584f536a564c79714d7a627a6d6651395154677467735033733934475941414f39706538482b5472637a47774a6f2f3757664f4c6c6c31594b36696c444166784a4a652b553069735346597550767a64597450564e6149744c6f55745850474f6f36472b6a666f355a366f3567376b6d6a6c5a57586f2f4e6d77783137627064447957704b4b717066476361765050325656644832714472673448474a4b653533513748396e6e746248434934674635702b514872722b4e336c382f6a7546703434506d354a646269614754587232592b7570726b554b434e784b4835484f716e4e696c386371683063396e7a646f6a446b396f705338544d384d6a5558315739615055623173336f39337a2f644c54474752556b75584941795479446f4c7359385534555164465a464f736761592f7276746d41334d63582b52363172534f4563525759395361326e58545734356f524f4f464d79776373366e4b5777695537394d58476c6268494f6c2f7336304575486f67726e4430483574636c3077505a457672707a545639356b564b474549722f585a67377a53454b4b414d684a594438704762436166652f354433506d723577486b4266616b37374f3861796435365066676e644d31554b4a3671364c754d595056704c33584e6576674158566c3041615267587558462b736649504e4b576d6d315441566e4f667852353168785667394c5736504b4738306e7a532f55347371462f482b31462f6c30514a682f4b7a676671616434784142464a2f463373374a4c3432797634324d324b2b7a5638706339774a57776175564d5a77694a704f41584f55664f2b7958374767464a706a516257644c6a5849377a3938444e62614b7844696b5057444b2b70503431735a39645a66747a6574643333744d543970352f745057416c624f4c57584955446c73577758736b73596c485a614366504b4a6c4f785066635270467a6e427868437858742b623374443552304831484235665277757a38343556696149713155725568624b4a557354313355754d6946684a667a76784a4d57664d66484c50672f4a6e2b3739654963446e4b654436665938412f5a4f6d6d6f6b4548414b7a6c347a3364704966686a71373967434569506e79735772357632356e37653838767545336f59772b396c48727148694c5853534b2f6a6d634a63343961507644676f46676b5576533538664f4350753738512f366566316f4d45674873514c57476d787562376c706b6953776156712b53787676354c7043314945555576666631664b47482b30382b492b4e4e595366774c303938303953664b736e77767758782f57386f332f41434b705335634f48746d7257397a58706e51756f304c344d736766634670732b556c476e53346a334e6f412b6a5362785773576e764872792f7433663248765437783244786e31542f4b54546739555050644f5344794350307879395232503431342b7438513679637a51637155463757314a7156786a53734b426d5751444d366b554f494f2b5a7265313274477a5435612b49394d586a76704e34766879313549654f3557664c4f74576d734d7a4b2b676570544a4e70464d6d6f4f5467356a457a6958526652533953434f5a48454f4263706f345a764d3949487a547337347a6e4d4b434f566d6a496a5562545833483146372f426d6747566e6a3031484d304a584c35526e35344961594d5a63684e6345386f547a42304c634c5235446d352b562f71505833782f614c48626a763165316c466e4d38576c35316a4e4a666b4b38654c547a37573631626b3752596558756647314a664e4a3959317a5169615a744665756e475a7a506350422f77446b663570423533367665725734476c4e59426558574c7a526b58533645776d6c7a5a436d456e4577703561584d4e416b34324e6143567a412f33705a3937317152694b655931626d464b2b4e58307757756e322f6f306b3652787a55653767726c565750425978302f7a49396e754a5031336458373165396e486269544c4a62744766323042786a75532f3841577431374b4a7157305166416d4653555a35634a78537a4c34347a4267754233452f4f4264426a382f774233363851377a5a363579465a6879766e4456702f7267324b64544f3478627042476a2f724a596e6f6a37487a4b4e787545416e536636617836363337556778516f5a755244624b764f476455696c4d346d715254776f4a31316870434677536b736c30564f58317271544d7338562f436b543466395648372b4d5373546e37476f4966634a6c6f3178734b32504f3469657957515a5048503078676b6c61464e5a372f32492b306d4e455439365143315a5a39534470782b2b30332f4b74625a46317336464661314a596958713532546938536c4a536742335844372b2b3042346c7a4c623765494656664239686e4530507061767171427061373354476f466c624c383061306a7764464b5a3654597672476d38754b2f5173392f556c656e514d53724e684e616b424239704b7156577a39674a73522f74715657517339697855532f333150776c316258414a75634a43644d6537387732665838797759354c61454e6e2f5273496c4d705974504572426a6d724a59304a46615a766c50684c63726a69442f5433324d2f7132327667447735584e4e2f50347036546262647a4d6a687a79535033614e54514f632b5773614a46384970642b31554e2b5834672b4e764f4d575850367246706a685965314838562f77416255656a7634622b6a2b574b76342b76577845655965566153497443537651304e366d65676531366b6550304a586446304d2f47502b4e744c58496f7a70317164584d337a645455333674703768747236422b712b7834366d655079744f766d2f39316b534a74327278725076656862714f7869696e4d6c4d7168624c37776465585342334e5650316b6a50317a593862316d654d44707a346c3571767966774e4772394b4e7079727a736b6566656265693154314c635a7447767839426c6a6c6c584573794e36327a47776c6d46764a356d426e306e474d417870646a30386a756d457566506c7531644b397464476a45635062314c6c6b5854316b744d7a726b76314c4364583261634f524d4e464b2f593252784e437476494a473747496457624e4c6c3654316230554e533748386c4e59585652484245476f7747705464565a57493053386a4d364c307a393658414d776442786c2f7556654b562b5365692f6d586778584b6a30744c78375867795552466b364e456d716d596f633742306461616350734f754771506a464c4f3467737054794f6233677636665237504f4c5449382f4834772b6f4575373657594547717a6f75796d393850664e4c6f49573831543871374a4c4e4c7a555171577a2f5a6a744d31396c643132504238436156706f2b627231497862674e6e563633696d78527a68626261654a512f6236445779382b6f50653244782f77416d576e6f61576d44334f523771774f6c522f59467073436d6348303478506849345a2b72496b76314538374d2f7430527333742b534e6843326a524f5a6866786e514870453833634d574c4e724f76496a366b2f6b41784e3455644e4f6c5058674b2b367170566a4a794368314b444a46706c4f78386e7830706a57517259397a435a5a33343565642b666e5257723975397a556d505537686f456f4f4e794f4770374752795671536244435937464a54326b4b6c45342b4f5a7a336457686650684d7554644266457a474a4547627272526632574d336e4d637157303951706e477546562f7536786843357235316f6655732b633453765a32626772366b69482b732b58347531332b75675a756c57756c4563544f79685562624d6e6a2b566b37706d5a545268444e383336467a62464542664b4b76614533503841416a494f4d767737586b44767351536571364e34315a38357243576f557830722b5243656f392f7755636255314c70616945667344514a4a65723245662f4463417a706678466a436a615445384a533039644b76376e5149424b564b53306d41775a2b727157524558663841442f4b76702f592b59543070336871347045766859485663365337574a6f447444564c6e4d307568514d72475566546e346d68626c4b48326d706e734d474134772b4e7a625058543139682b593272524b33756d5645326777615249334d624b4c6a4a512f557a59706d6958476671696478714143515a6470617067394c342f636d4a7232597a6b4c6577576f6f30614f4c544c2b757670616e3531366c4233504249716d72714c72484c2b6e6337344f6d497042505135547878683334333550763841635036542b4d4a6f4f4e6b566b394542682b5532746d7235554c42753041573865444a6d3839767a635a7742556a6f4451487a505477427a4559644e4b436b4e567a3435433737586350717142354a316b375763664f7077382b352b3345732f68365866383070415a7a5566763235764c3769512b4e2b516551654b37793937787262305047395943304f5137486a464647547168466370303177534846516f50614d726d4631614f46376741526151664770527861496d496d33415366643955505550314c386856732b652b6537586d6d724e4d324a6c666b476d563153632f7337456f586e384e7867736c706378683836414230354f4c5a77542b4c35617a537461384b375a477766705a3434586b486c4d476634767658526464566d5a7270413742326159323070796e6f62665047726e31515a396f796e3474504437536b50654465657773356d496a4d6a63743253486875654339796d59364a5a317a6346336b654e6e50324b72367854705453736d577636767966784738636f43796477305a5355753473506c54526a7874506d443334766574303370762b62666a4d64576368654a366a654c5079744237377a5253646263746c30384c504a52756b6d6f5964425551496f345a572f483866373974314c684b3272546470546e3463443256656b586d554359314d7a6b35594e426c534c347442336c584e4a3165566a5a4930633534733634516e6f555446726e50346b456d3548757355693259417238793165365947332b50386d757731315563792f7237624a7470655433356c7831305835306b567565325267466d6975586c6b6a524571576e32593066476d5a582b6d742b7a4966374a6758484d707635736a3335622b354e453173354c436c696379724d63356d577a726250645659616c49622b75757957705038415477346e6c683562762f6c463367614e7230553845395332586f485a384d3833524e654f66414756713035666b55553435314768466e7351546d4a544c59626e56742b56583270317247446e744f7a71396a345874456647504945656c53726b35666462526e7961485362432b557a664f306b70643337704a79532b77336a4b7441666b2b516c50475967414254377539394c33666d437252545548783852456d707a466955354d6868575a4b6a30414c3635754c33462f73597351345877735a784c50692b456761332b73773956393958327050687a517161396c6e6131574649694d4342775872625054796c66316663704c693754774870644d70722f396770487475547a2b776a374f63493352463936696d4b64452f656d33696f712b396e5437304e6b544f44563266566e644e2b75675175482f414a4d514d422b6133352f743967312b3463707055552f5066784b4b2f774249543035704f746d5478665a30766c3436482f70722f58434a44512f36332b5848545573496441587a396c306d59786646474e50335a666846664366375a666575756e4f57355264576a39304c6a6f4c766664304a35754b2b4b646241347a473063302b595434656131725856784c63716449306d325367513044514e6a506d6171476c61416c5838303776625078774e482f41684a706a3777632f6e3977506f3470524d56524b4b324d4a38764b35796e51743072562f50333743666d3475306c632b59766c2b456a457069582f6d514b494e6867393071564e4c354b5038415555784c3644306146354253795855586f6838795a2b7553726b724339784637434e30346e77564541486e4876505742386c58574e665364544a4d7234656c5253344b5059336755756c373372757a3861565144517638417959507a4777464b49522f33664735646e7272362b77395148396f7a317a503142394637505258636230764b66524b756973453064362f585a34635a55506c644c724c30697278563539464774372b3535484e456d626f4a6e61356b30664f4432716b7862336c6669486f63384a6f4d5a6465686b656a6d544c556f624c49342b365a352f694e54624c66484a4c4a59614f73644c7770526253434173576e374c796f5730512b615069424575593964684d5148747a577a5a2f4d7a503573706d5a6c584b6f4c566c59655a5336726c68486c30616e4a77486e7642394c5a2f73764e334867414473664879346a46646a38683431586b6361704354717530514b76697a2b39343770632b4a5539583862644b4b77424177507463646a71584936625036446d582f4148487061395838556658624b6c505331376e654c77352f564977304672497644546e5a4d4355777871565a4768336a64335461706250695763352f43624364525430614761366c6647655039523473614d6e7961614f49724d616e72456a78585337683870466a4e4e554f684b70784551434b796e46626c657a2f41444c76366e49666963496c36764c62796b474d5877443141326d696a443852387032754d63356a30783474566371424b4e774a3453652b3876754c79422b55666c5937356b702f58736348764d3474617634385344586c33704c35313439343754356c354a342f712b4d5373306d77535a47354c7077616c34474d7362435650644b723541517862445973695535506155675248786e765572654a74694934437361476d366439446d6b587a4f56302b64613656676c4c33337a63714f5a6636735a32555745444f63364836446970684472422f6471396d4134586f4d4839437572693264616a704a426337675a4d6756764c3750327631384a44564f7a322f5038417355382b78375254377841712b37387774507756726439517743767166706e30484135594b637a2b4f6b6e62336841754d5675596e394e5033752b476c6e76446e4139336441376d5651546c7a665874446e5775706b396a59315270704168614c685343654d3473794c3269772f6c4d79442f3450577434704959455976456b664a33394d505243675141772b4361616633517a2f454653654a534531436545664f6f446f673058475947526744705a752b4269586e6570736b78396a6c62336b78707551596c462f7742625073393679415159786e584c41506c67636648634d42446f5a4645715a717058784a55544a6676632b7977364f7266584f75673537654d2b4d79486a467258314c56744839544e4e33665966762f726e43616d5368466f79474946722f4f535773426e506a6d415a4b674669526a6f4253556d566c51636154774250302f6c72447638416a3739507a2f6237444272373144396b4f5035495351504e4545464643766a68716a354d514b456a636b456b586663524433324a4d694d506d42785032667249624e57556a6f714767504b2b4f556379484f4a56644a5658547a394d76385136746e42534b6d4478356950506b2f6266692b4a5136427162657a397a336f464e31637064665278716c3049365a6b6d7571666f7444764266387a4156514877704e4a67564264396a5359595a716a523142454a4c36596b49537954706136697438514d6c465845396373536f466b5a646237474831674f34584341794476515a49657538666c4c6b61654e59672f712f424b75696732702b70304568784942396274613565395952396341676269495461494d727772486b48556b667a696c5763344b6c316430456967706e6c583263584f636f794159793470667735384c4f63397a76593876636268497a414670694f764849634f656d69536a3778436a2f414b38443049585379615262733848416e364c50706d48754c37516e336e50306e7070594875454f7161717765706c2b367276564f4a374771752f5a70725a385837596d476156424761316b503659544863506f694a2b787a4445502b57497a3935354271764e354e4b3561554c3459314a3452583863644c5033784c693461692b4d446a5953514832384277443335765933323848356d37647934786b597464326570302f486e534c5436735936654e54303547576b343070587a34755479386e4a50556748436f35302b6878504161487836427841333437557365576379654b6f4f4a476c7331694664344c4772476a36546c636f6f2b773733504947414e43556d524f644d7172684264764f396a504e796d742b39335579706b306373783257306a5261753543426a467931385a485056645162554e64524f4b62774661584a4166647a6844716f68514d307a697a37306c3841614e3874307957726e6f4b70746b36317970464e426a5271436a6f6642576251657a6e73623153663642717a3555686d32756f34345172716d2b717076777742327673386c5a7572726f5a777449382b54574c706f6e4e7a675430484b2b33306d6d43723436732f5252517964694b4863627764572b3275526f7230696c51384f79387a503352425050442f69386c434267663278396f6e3879776a386c70642b4e306e4a58506f66457556432b5771694633335630463143754d6f363576786f306b7339342f4a514a2f34735032753441474777635755625679414e546a5a7073466b6a754958324254474f50516d43773676354e7362716a2f58782b776a41776e45534e774c4271795372516f5662635a522f582b3471314b7856526f53353044703558687a5461537957534d2f34306e78712f736b4965786f4a2b56544443536c332b526c427771706e6b676643436e55526a5a437569637373745533767974526a6447634853724d365061303671484e50697a4e2f446d4166714a6e6f34425430777941355353715835472b4b753757633932545465544b7a2b5535644474454e69547051596b344d6f414d667563623751504d6a514f63656131387174424a722f516b6d71726b7a5a66734451333568496d466c7a736e7a3271456c7564574f72593552553974624d41536c58536a6c422b5a634e5a4244546d4b696461754b6f35786b644e4f4370517a2b64716e6452705a6f70694977706c2b343734766f7974706c6b42423839727a4e455665666f716245576972365177514e7a625035714e302b6f636574557a6a4f2f4a5655752f706c396371707a4e3676644d5451417171486c61614b33486e305778583335565564576930773139546a422b7a32543631436579782f587154523046712b5a4a5441354a70593861633441356c6e42464c50566b7354496139714e6b4d50536e75457249794856587755703654686e49624f506338715855685a516e326e37443977535845564872374459744a57783431343734374f794b714869363155533550775a38383637426e74534d645038354754366638416b766353564b396a6b70534141785a6d52396e626a4d6a6570454d746839344b41476d69313375355157536a4b5952663747545547517a744c706934673756326233716a44444961654e4d7559397846643830313871475567435648544b687930616c7a69636248517a565555664a4f5765326b7a39684a6d51482b5039422b376e552f78584e465931636f566b756a30714a4c75784951464856766c374e6b2f4d4b666a4961676f6570684f665355774c44356a467a5767535a314f5a6c736c632b335370657937576652464a526e5866445a484c6f6a7a5571777175706a574456367946427a7267686d73736f70573572554430486b305046376239345573307a4a7474554c756c4e44777545776c34587a2f65644b6e462b6f3650354f763738584b66754b416f6d6a7a394c4272412b575738383971395237553230346b71386a325176712b74655371796245546739362b4450396c4d70664e3730365530782f4775524e4141496f4333523761344d6f3646445253756e50566b4741712b5a4e69386b3355565943437952376b7059316a475466726e73426a6d71722b5a774239586f797673524c706e303871773765732b444574735a7a6e666a7a5a59446f6f647872507269765163484957326437506d2f7273716965325977667457336656415543362f627456634472417a366d5a785657492f6c6d66426c5634715636697878357842395147766a6e54657938436b662f41436e3941342b624b47485035526f414343374c453833446c4139637430726b52444e6d573348566e6b57573673514a396333485370634267423043332b67787a4933535a6c6f4e6a616a476731624a4b4f4266526e7174485a4b4757723473596973542f6c4378787638416c7a766a48682f44396e35674351677764394b6e50716d65667a5538694f6c6d6a646f745270397466595263726f565843452f2f41426d73316c41584b533652325474506964437472754171704e30716b7851716e74304f556a504b4f65374e43636247416d4f6b542b4a4d387444652f6353414d2b76386b3948334361457a2b7a382f6f49624a45576d4e31537a727a4c2f6377753968706735486f56737a7879584b7034722f414a6c755a71353850776975646a654f765961356e6464396367666164714e4c4d61504271306674592b634d7a4b2f7255305a6b4b4f6a5a646f496d7a5676556550654c714f43376842536f6b6e37416254304141497258496a553044794f6974456a6d3969357038376d79553061774647704d4c714d7031496371704a306f384d72506e2b593271593568674175445a6e38512f66502b5166676d544369484b72436e52746b35586a3845374e426d4e5a6c385932656157345a6f555854724e71776b54314a6e386e43537968507955314f7862354433436632763947654830743076484c4e466a64522f6d59366d6230382f57454555545458574b4b7464565853314c4761693779595077416854506c6b3450305a6b64543566744563632b4136397a766b547a546d56546c7a4b76434f68487673695576513065716e6e7152336e6b7931384b566958546e37446e396e76734676367063422b2f6d44397a797a78392b656d665a6b7347764d374d6d5945353063355a6e31767157696250685859686b396a4c4755384d467a556c7861686544442f414b434a3647355a65785679732b73586e55356a3576612f50673445434a653579626e766e5166773257523579466f633179572f4d756d62363944784535694a6d6364344636656556727332375574734c7077614364614b68376a46756e59596f794c627375425055516b316a506d596e367151467a727a61713458456e6b5a6d4f6b3445637a78646f4d57312b5a76746d5a584244726c524a4d793673506c4353576658473665623457554d6e59783336596152625541664d7a326c4f6d6252696341597074624c57327373567057456d655763354b366450474f3859355a494f582b316958614646427832413735576c514b546d63365a51416b503633474e31394c49356b697152317370444e3031796f737430334734736b3474624c57502b34714772583137313972684f6b446d3437336b6655352b373877684b69615964652b6a783774537265726f70705232786753614d30576b384e4d7444782b64383034797057673247723338343332564c3477446158637756675a52543279714974616376643735667134386b6d554f72784570577a4d556f5154397032794f66497069355073717254386e7974393155594152626f7757326165682f4a37433371616655696b73336d684a523757557551366469796f4759424834476f4e42724632326171552f6f7a537965505a3877727031637330395255734b65466d72712b6e5665336830614e744d464664464f616b4571645776737678385a52577a36444f36582f5964536d5a615167526e49652f5a7a4f37495833324572324d346874643741684f6c645332543570786973313355565379704a2f4b532f366c70764155676d6563723235625a67544b5a3647446d54347147647a4437532b69396a6f73686d67663866556a4937556f6936314e35616e58447a703956537064494f4e347134596c514a78747056304d76724b6447486176516a4e5a5a563272646e6b6c4f67615872767049654f6438724265746275436d586e48474e6b626b2b7777496478487a5774362b79567858574c307671394e616555612f534a41726c7031626a61763563755565635352485742392b2f774163424f3441546d6359376732725147784c7273722b5076786e6d36497a44724d71596e527651366158732f6269622f467558525431544552454278425343556a78686741514d3563634732743142315348505256624c446b5a70353971623461307a7559683146646c504c69476a4e7758696d655a517a636a6d6a3466506a454a414b767a3866716e36663841494178747235425a3275564e6b33774c5455554b7a753252664c4731615459436f31395339582f5958375870514271426b2b7865765855644d614b4b6c616941692f695654567848416c612f6f362b752b6170714c4930444b3452614a43433235725666484437766a4b5a69593667657477713272554735742f4a365a3332386f4476474f58704a304a6b613761757730647a66676e57524c6e576e34654748764952542b776f6e3450722b676e6d546638312f476354517274334833725776507a58504271657a67747965714a695a592f73555539704f6474503266754335526a4c4b62517146704b344a366c4342567954794d57764b71564d35692b7172726f444d414e4a35554d732f632f3053625a4c2b754e6638334245453861332b67615838623965584d6a344d75726f7930326e6f73563853306a33323661757a4a573450676c464f6b53317534533363544758794239666775594562387161754e5539575065544f7a6346785a54686a697a5567365a65646f444b2b6e5153706c58614f4d62304a684a674f315a7961612b632b7653455762527946646e32374b5366704641372b51375a4e62705a303975533461512b4b786e4f786b78593641636d57505830686f4838644d632f7a4741666a37586f6d71326b453930584d67314d377951383375564979462b595136554170584b7732664a56474b7165724f6c587830664a5348302b667074755870392f58634564776e5857487a6d746f4d74354e62464e2b686c434c2f6670354b364a48466c735346577350385870444e376b6a4344586335556a3749614264553755424b78304c4a476362477770727873316f584271637a4b31495a31342f567465432f77425a4c5061367271304e4d434f6c494735737a556d49564559664a44304d675644394f695273303836754f53764c5544596d5144492b6d536673376f515a484f72744c42615955416b65424f7268637336416e705537714a704e57734a4a3948716248637a663366384156746d72734b42726450523771494e5a4f586f4a516f6c5644313145424f616456446e424e6e2b7a395a446d4a44357a7069792b587669564c5778347259654e4c444755355a2f784656565379536961544e536d6151466464504f66764f716c495271535767494a764c546e707a713531507a3750676b4765614a6942306e5830555a37416454596b567935624b6e644a616e554e64774942487276384771566e743238326334456f43585a713861747a335571357264713161326c30656d557a6e3069724c6a6f574b51584c51784d4a47484b6143654a704e33466b37674a4f755933353768443261434f516453596466335052694771424d654977355975725370376a7a39464e52303146714d306946424b7370417a427458456a4d6c49573933356a51372b34667353443652655961656a44446e352b5834467645462b2f48734473664a736244764874505566646e736e2b78384765795661316439356330457a4b6d6730657553762b746448725165424a4d5a43707951386659466933437578566558426479652b434b366d61717a753755774375477a577a5a32677a324b593259676e706d53776b6e3634636d61432b625174567a4d356d6f62537331645633705065364e444e3675517452612f47616a5a517350326e6b36656d5a536c484137722f414e684e6d315751464534575937525575444f3542632b614c36716a716c7a446f3168594a746c6a35637479455545702f736336636e64616372584e44444a766f48523550723672704555785439713235746a523770393461516c304c454535594b4165616e7a4a52336f716e6d5a713247433267504845436d787378335a326f76474f747567676450515a773953526a5173534f4b797879625a616b4656514b334d6b4943436e3456676f56456c4b714f42455a7847656f4a3556544e6a584b6a52753579595861495a4c6537576d436337533774564d6b50586a794e526a49364e4166744b494a456e4e6f4a732b55656c31532f75566d4972457a45596d4148572b73537a33716d722b32617157316759535a5765703274444b4832587a565a35446d324d32424c2f596758453169564e6e6d426631756e634235382f73373676336e4d4356383136492b2f7948386b7565796e73363366587179702b426e73524f765546444f636d357773547466364250582f734a494863374f6477363572627336664f553564306d572f4843594d3538705756387a2f706a79595752366d676f574b2b52784d58533478705652545a2f514370386f776d3461752f43736d412b494b614533765a386a4375324a67336b6a6e4657767565487a6f576848464e746a555857703446785541517261536d4a32384e4765336e794a7a44587a4f714b56454d485034696544586f6177563450464a73736f4a377954533664492f4e41715a2f732f6f4d583261736e6a624a714a6c794a716c2b76587a6b4c71575555354f6868715735394b644a524a30474e6f7a65304738774836324a783649796b413247416a554c6b4c39614143685a4b6a5455454d312f455833346c452f55787336667a6c4f544e477952746775517564667832544a712b62767a6436594b307362705a673671704e5a4831753830383759664748386a763164303864715566794b366e54352b7432673176344a396e476f5679743658376b4674514d596158364e4832755831696f32735147786f6e786d7570565777745743504c7871452f72686e3657653335456f4e447a38714e56692f6161434941694e584c7a713970656c2f4c5435364a63355079547a3663756c536d576430687a4456326a68532b3678795a7968702b3337412b7a78702b336863534461585552524e79542b4e77706734374e546f616d6b7671355854716d4b586954334f4d355137505a4c503836506166584261446a6f365a6c384c517a6433516f70375969474178584b624b4369794a76672b3655374d6f58484b686133724762504b7876577449674e746e796e77514d695743504c6448697a693068366830576f5848303175537a6d656931784577382b4c4d3462626e4952526d2f56616d6830356161554b4d7a616151414d364d593063356f79734d35442f3354327a55357146736b7368736b7a64427566434b47304a5a6337583654756b4874346d74314b5564496c704174486d706c6c7a2b7139675a4358547755752b626d4f2f532b6d546a5852385935376573487375503866657561372f3431524852523745744550686f4450534f592b5a474f6d2b2f476f562f4a4e79577853352f764b597752584f504f756f6b546d3659564d7561613656705746487a5268512b51464d75396a475a624d7056562b46666f3339565050446b6b326a2f41485a395575694961754b6e6f3055614e46612b6d6b3365305447786a68656b7861433770486f73367a5064713876777a4366506c763841474c556579616a554365793675754e68715a6c386f7a394a5a63502f41446f5034496a6c41767475434f48667733414d56734d624f364763314b554c31373844726b74692b6977394a6a744b614872726330714b766d756a754a58484858303147514250544735414b6b47664766496f38486c6a4f654d346964456f3079716e7050794137732b595a395a4f58484731326c2b7472573764396c49394d554b36464c6c43317870424b596e5063412b6a6a5a6e4b4d764d3532507257647a59594a3546736e5653326974306571765378704e673351304c354851445059395a4e44324a5453457766592f7151485864526c366c735766384177616e726d717a344a2b5930336d554f65322b646731706757396e31696a57787a784472466355597555304a3070676d664f46654848726f73766f6e376651626939385665754e696d767342444e4a4230497646766671386136726a78465a412f744a7664583263465745416b4a6973713559796f7578525a6e52544a537168736935676e537074614656367a574c6f4b36552b474d776d3076347234453072374d5963416b574272636d2b6f374c464a30506565634d2b444974762f5a544f38356459614a316479352b51366c6e61456352385267373241484f653447412f444971363756304d7633547a2f576b4c3555734854526a6b54496443695a715861414447584b506a57354969482f59705479663677664366394177624e796a6c6c6a662b416c44714630412f36565863317555584c31547a78786b76322f4756784d515a71614152676f57665761594e4231566d4f663841617a63784a38306970706f5a41664a796d42455362613332745870494b725164525550373561756d67694c51502f50324b58543047545a42566f686e5a646e614d364f463265493030684f66317146754a576a516d6e42624d6b66355249732b4e7a2f6e50356b7a302b395149436346467a72564a7857666b395339597833387261564c55786653596d50656d34707632436f366a35714673537a677236737a633148744f6b4a775579704c475756397a766d44534e39784477536c66546d70396e3136696648584c33693175645a4f524d486954372f4731743652676c364f424d59762b6b307245766e4465376369624f645253656b675350646e5a503345565a4362685832704c306b336f70412f736734546e7043632f774367376f66327076536a314439536651583175713950637656386a313065625a666949343847704c4e4d69324c78687230465a506d533843785050764d507177467769594f644a787a514f697a6c31375257394d7a304854506e342f6561465a6d622f715475364753456c484e43484350567530356f43487179545838746e6a5047437864306f7a544657516364387754682b70317968546875695a78453952754636573733704c7035324e3366384c7867313330616d5868616448595335714b786f317a554b644b784b415a6b46556e3239415242663664394679667379544565566f744578693438772f3841662f524d48357465464e364f68444252364d2b4b477164306638612f76473647747051746c37316e5063585536676e333543366f64474e774c4134567251506237482f6b332f6a6b58562f386e6265326e38687658587831675a6b31622f537432724f37516f774f777162446f5a713635625664755032704f7177356572542f4150536a6231434b7a4c68665772375a787057664730446f372f64772f757159333476654f36486f48364e617332312b544f2b646556354a74644d4156366653364130524f726157516c4b376459716c31644b49534c2b4e62533152675a4e53684f58732f7338366b37377a2b7a3965764d654c6861394c7943693364332f495247725871626f61564e746e3247365774594e6933556132703054344e48574a316939717939732f302f38414c32456b6d4836637a4e5a6d74514250567431514e6e4a62424248666b33314a35594d37717247564c6d4e6a75712f66744b64795a53346650692b784e2f6d4c556d41386e62743573357750762f696e6b3154546c356e324a534c516e735a323367517171413357467970482b624a5849564c4f743438364445696b473948697a56304a3331424a66696c57684f44717465594947304362656d2b697474566a7258535a7830515138364d70554f6e495764367a37437a3659417444663242556930786e48654756486957684a315a793370653173566a666c4c2b5155716673316e654c4c73422f4136663373575169517a2b7a335743424b466a656771633036625146304d2b6c64443532665a3551376e784d6c6e6d6278776a32646e3267627a2f4a51722f377371792f32415a692b59774d564e4175545765316166587267454f4a726b46504a315436426d3447574e58387a2f7241707933724d7178464842363162684d48714c35524b5a616c6e7a326a2f57675a3959432f7274447079564d4b4f7235674233546f4f6564694f7651716d72322f58366c6e53456d6344336a54374f417276362f6f43684f347555507176434b68684b48342f624f51634278667369414c6c724e6a71506a6a2b567749496a4e51415272537a6f4141305648317064622b6b2f43426462336946385a46325a555052455234786131754e6a5357526951482b2f38414d663259414c41794a4a302f6548395249716158774d63545a586439686c7761752f75576451726e2b7638413866346534464d457749316b5169414a714f756e7064705748535a3746726e567a6b364f7656542b2f72476d676c6470637466742f58364e7168483945526636752b32746476776a494b714b4738426e414852744e513046325a795139682f58436635776a5958574d344c6c69537a486e7348326c77443978634f77796d6c376e434c5775513148486a4a556d6954325364595943756f53704e664f642f384174505359414758734d4f6b6d6a6e74442b7154614a6a4554786b656c722b79462f625a772f4a364f666d6a363535386d783446347456725a666f743452714a4346666d336d4b556a6b6f38705a476f575662574c4f36367879754b56306550796d4544434e4a484e772b31612b4d61644f316274443136356e70583474666e4935737a53337a4855304c4d4a65512b4f53484e7356506932496b306131386e6e6f6d583964682f576e68524f6467502b735847732b627a356d596a68475a42727a7a3861357357637437437466734c324a5755756f314e4f363544517636794c4f566e6f79614a30776142735950366f346b716673704e6e5033596c4e4a31726650436545686a712b484a7a5a5a64476964452f4a33655032555762455372497265515461306c58314b394a6e535a6e6f3675634b5631424d7a6a76697561694872707964614a696567316e382f3841484e4c5269314f526142626832524a2f6b5633757463515a774a31496b545251762f5261446b726c64534a396d6d6454384b65617949554a70375a49313332725a64376b4a5a6d31574b705248694b455a4470353748643132342b487142566e575339304638756a696d55397a776c2b6478324f6f414c2f414754615635633775475169415a57786b6c6f7a4654792b366956656d676475554a6375612b6d4f70525a65543978702f5943646a4876615271304b315a7153536c4a48536e4e667450574256327a3663357a395457706d3171494d6c55395764716f62545175316b6a74566342773874514b56652f374656446d694c57416d5079373341452f51563969305769597a504162466668723672532b6d4871497642754d4d584639527244386138677054632f5267787439555158352f6b5731705a71356b354b55305a4f4731767975344b62647636626b706e537473394e5775367566776a74307648584c545233546c54557935664a464e314f7142797247614e585a5265324d656b736d523055645a2f74564e57675069366678644a724f5155374434446e2b6e67416649415a3472516448546753744f584575565a362b466f2f486a756f482f414b6e5354475a70396b346c5459505573346b75706f764d3775376d484e582b37392f624878507a352f4867523853784d62412f49483061675a732b6d6c73783851573134302b486c766c6667397975735177456e704a78462f507964382f6236544147694c432b7476374c727a6f33785038416c3237512f6e49622f6a586b2f68506b6d3134523562342f72594f3567557478764976474e6d64794e6148537a6a64424c4c514e455850616e715a792f66784c2b4577642f6b6e2f414154316e74784e5a6a6645415854524c4878693355556437385a392b5434473031753554655a792b7772624f43353347547a55664430414a675575426931476f584448752f4d49562f703161674f794e71366a6b556735644c722b79726238635533544a6a464443735a785344314e494573396e665a7966346849644267394d366970574956506b72342b796e6a6c4c4774437130752b4b64644d4e6a7749652f444f33394e4c3466312f6d7a692b72446f676954665a37654577304936696a3967617861547546387830664b37362f503841726d4d6f735033502b516873347a6e2b6650654165756e2b784434462f77444e352b4f5737366b575271436a7a547a5271364f7373426e3345365343786364665566793031476c4f6e63686566434a76316d73736f3449306b706673387232792b6454622b45643172625070346d67302b6f444f4f4876427970577962537a7a57317a30575035704650384176343036576850564b6e6863616f3450684232534254543063673576666c4835416b6372622f616b5a33645848314e56753956546a5a2f54306c54527258323366356d70504c5a4f6d784b37564c5737343437356a5259494342447470786d496a78486a432f496d726c3371373539786d527a4a6d6b3357774a6d54387471786d6b65376b72506d73582b6e45536c6951705833347a4f382f5934666c6e5572314e4f63567248694b61422f446e746e56544b534170354b41554f346c615a2f676f534a6363796379574a4d45512b4266566538456a37754877424e4f7766434c4449454e704b7837416e486a2b6c5259704878714771694c356d6b424f6e6f4b645a39447673454441766359676632444445676e4e4b2f312b6a563077414f7a2b7a693066634e776e48504b5648454f6e45683444513450444a69514e4a6c777961344d6e31646d6170415263496554386f6b506f3070447454485656676f4663597a35562f4d79636a465a422f6e3770514435442f58515847636852386e51347468374b5a506a736d664371456e477356646c47704a2b37394e496e4c2f41463776682f5650373461773931414d517247326e71436659736546384a644c71506c4554447648463339526832696f30756f34766a4f2b38472b77314677656c536e50393336385135366171464c6e365376747a3961392f774179705578396f37464f4d74744b6e6337375648384332392f596456385271467166326b5348514e556a316458666b4e5471466a394e39434f744d2f692f547031385548617571367a3354735071653842524e4e4a675967372f41497a2f414866727844454f646e396f69337055634e4c454351696a374b4869366e722b457776397361324d5766424644444a6f662f5541414147672b54396a587a3457703470344c6e3579706a534f6b4f302b324951576358364553424d346e2b6a4e6e53425a477050532f666636727a2b58334334676d776c3952524c6e495a4a373064354b594a396e336f50396c665a43495673576c6865396e542b4d65703968386d4c396e2f5668666e682f6f68354e7137346e387564476a4d7975366e443049452f4a423135616a6f653264536b3343763741786c38676f61703530396e46667650324f7874654e735a34437876552f4c386135344733682b49426c2b54325054632f5a565a5458564f764f6f39387a337a784359785976556b766f54543862772f35494f4c2b5134307252574a6e50686a6f4e57754f5053713454446f31497a6f454c7a6d5a525559552f705a5556676957502f4b70767368363767645833337a6334422f44372f363641717262497936565762594c7a574e61362b726c6a734b732b724c6a333041514e6e643164587655496b50794737696f7755625064335033666d467a756461717166485963544942736e476b6966772b4a36746e4b41702b65636556454a43492f77434a45776b3654586644772b386d2f71496a624d577441423139726f4f7161686a2b524e4653477549576d366d684d315178724a6867786e7738564b496a776e4e4541704277664d62512f71334c322f582f414c46752f6a6a675365542b723369654c5a476d74414f4c526b4634534d6e4866584b356d4c4c57327833784a637532644b2b70623158796e4e39644b792b55414f75724f4b784d65756739525034395939737669336a5436564d72444c64312f6a324a62336f474e4c4e437a78687a646a2b5a63515a384b4c6f394b5650434d546452742b7a69522b61644a2b6665655079473833692f6d6764752f6a4e3357314e37532b374e786c67757330715a726556314f474445524c744631684e687a73736a494b594847364f6a536a3979775163324e717a6e644855556c2b547671317a2f414d48325938305a496f6472506e6e2f414a6d5771634d6e4f5244746653546d5a764d333366796d6b6c33384b6e504664416d3665416f4154486258556b6236644d54313877422f4564576a6e342b7439753645767661394732566c676678656f377835314d38484250633259644246467a4e4c794263497645653043644a65786c46464354433272332f4c2b34702f38794e6433665437796c6b6c47784470637a62364456505736687444566157316834736d314d554e49734a39306d636861335643327a2b4e49445239755936516d6e57666b4f595867765a634f53572b6d336e68756a7549654632644f30663451594d656544563058795a326463736a6864556c79365a394f75617876644a587641685a7a7432307a6d636965616e6e4967633873394131316c70356d676d686d4d63334a72676f783077614e6b52584139634d5671632f73774d6c396838586630474c5073782f3141374e3633716a693037475572782f6252715a794d6972796d6965757253736772316f383266756e50727a78624474437254622f4a4a42623656774266536a3750376d5277565438346f7a3036395a664d765743626632766f4a6f7a616b303438764b4e656e55646d346134647a617a346535315264617335382b686830614b65505663515a34784149304a754f31717857635150743369757a753943317561353044366f69557a56387053334c6c573479374365396e7a357562786d47353153314e6e62387636663841344a44357447797879747475654763683935442b4e45486b4d387935516c6d47526a3661436b304a38563143346475794450716639507831305033434c3650652f416b3154636d58776a42354e63434c7a48586a413177386f2f442f414642684852736f706e4f526e554979583262426b78726b3058614d76655a63374a6436554575454b455a3659365069633279304a3154586149586a56345936514e4e505648303269385477747a7963705269374e7539526f366955356d6554704a506b664e4d4c616f577a574a4859544f4d776341784d383370706f6341557444576c754f3349355a657037594f437873454d7753307a79546975466976596c6655792f49397a7052494a535a5344692b414f38637637364a2f67583741634f776f74616b6f717154324e6748792b643759564a6d4e6e662b36566c475856533056444777465a7a503841575041392f7741334241514c35516f3641564957457a765563524e77754a59514531354e714557664849324d532f582f414565544550432b774855734737392f2b796a767435774c2b6e59705469514a5369447146785438577568446b763841644d70445a4b47643437535a565037653935302b733659653739544d416a32333138526b2f74536e3338374561337a546f62504857333230534e585638616763587954696c67435076424b673458506d2f774366396e48462f566762795a4e4c51306b5a4f4a676154645852584f764a7938614e656c73574335612b4b6b6e67694c35626e5545764e352f6b627a4567363376663351344f59326965733934376f2f32372f774377642b5666355062324a3546362b5a486c6634782b674655764c39447937666b6c64356a355a634e4b7a356c2b472b4c316c78732b68786b73376e7531306d6f464a4a7334506c642f6e7a612f74656e54685439705965345438592f77462f4858384c76546d48776a38642f476276486b575a626469725a57316c766c336c65334d57686f51616e6c576f32704e713965706455366b703977787a7a54646739767353674138792b7466557475744f52666c2f6a4b43644272617a62584c7a4854364538464a3535587444564771476253316d4d6f34592f424e6f537a4b496a732b4e743776593153515943636f744d52694270442b6232737a4e3848394f2f4234504b447030664939363379686b6d57794a395a35666a4e6644684c535a7255414b30745a644f373758786e41723457697a6b3858576d7262526a45326d593749353565454c30686a6a30705a73377836614e756d71526262753575437562527a6837566c566536644e464644624d316e4f756b35505345307a5145372f384157377530346d5078657649623534576a635564464d363035657536443741766a683056786e4834326c6567636e426f7953626e7770614c6c382f77516466766d565a4859634e53755a4132522b4e78535a303933655354363949535a562b5071565073714d3552644d69754257506571725066566e754d66754d5a7855394a73662b3270435141676c70772b527356727168786b734f6973736d626c7778477972476d4a38547139547157664a70414e31796667357a355630332f546632675266516f4f5a66357a647a2f482f485a4e4c497a3353765a70544b7a426e7a6a43315162584d75424e6773574a56467249305048595a376c696761543443576b646e5866535a746f346d6365593037394d4d6e4179505348386f66446d7a58514b336146375777546e52724b4c506467366a616f644f3176326e6b4e4f3173616b624772496659523968615531437a42327470744e744b65346566664338507a494857426d306e7a367236592f35535478756d746d6d36423864556b6d645a55756a73316b396a73734f42577276786c47314e6854714c6a37653056623543737649504c676d2b47644276416e35564f66655537473151517036625652556178732f7742494336566374692f656777465a4e573174564c585162474b39452f425652516f2f386737426a32557657727631356b774d6b526b772f77416c706d555139574b36644b5642765538695851446c684d3576784832674937767974394c71704d72327974676d6d552f506f31447a394372566f786b7a742b4148726a4957532f445a71635a79755233784b4f6f2b6535644a416d764330655174756e31414478506e4d72787968336b475675794e587034736b465768624654516a4a647137554d7632456a5451435a62483874466e4745456338686636514679613764334e6e47525a734872442f4546555577566165644775757736374f4b64526e573931354b3536744c6b64556c6557356e6a3943536133334a58396341464a6956427564477966474146332f546a797a3179484d3856384a697765352f6a646f56306972623855796a6e31757a6c667078576b2f535556466e325034576e6f704b6a3247626c394d4b7872736e567446596e49316d39542f5244796a30317432443868385033382b6d5051414b4b325a7352595958505a506c36474b70694b4873756f376f4d50396b413072427270766e6b2f774343442b7231765733535271683548346839784b467764726d622b3650666e333335696c6854444c4c4c56557055637679464a4f4b533934694968386f502b6f6e69524435744b3278777877454b51466a3253304e4a346535623256745758475a38784c305845333347446d4c2f414d79597671324b4565676275467732752b52793766732f5752386f6f6c596376756e377834716c554c4f4e61384a6b7147687334636e5750375a384a522b346c464f31503667556a2f416c664e512f616573427568724f745830653859366c674d7547663749754b52795774726479677a35384c566777752b31676b5272732b5038417a5437515a6f47624b474d534d68476a327366316c547a436f69596633696d392f45756c4e5a454d3743357a2f49785879627643506a41534141514e5437666666557a7146432f6e757064524c314e42744f3462502b5a312f4756785864412f3266442b55552f5936304665306a7a2f41436666376a4b6b50757a3941543537616d3835314d62616556304c3469455936586d30543657654446306d506638414d42392f4f6e3757733978327232594368726e34326474692b4a347852752f6a446c3731592f4537356e55444f3735657148343433416241373750686d352f6d6e2f55413247535a474f6b6c50327843756d523541353348473371766b53393943314437516f5343654c5578494531782f774478576638413433394178642b68657066616567507a7932685731715a365a7a583069584c4f785a5034732f7464396f6c332f416a6a4e7876455350696739526e6f782b4e2f342f512f696236536571726646397231617064692b4f2b532b477472322f4c6b7a4d38704c5157666c486a3456357241366e5348636a47634654645143357075453663376d306b486d327666336c7137746f35422f77427775765338383956492f5532334766342b767a6b6d7067786a34675a4d54766a76536735466e376379303931484256376b472f352b724e6961334f593570724e58526f7a7372742f44362f57526f42416e6a612b3863306d6351374f2b74616d59325655614337434e65664f617663507776644b357050373743412f6237794d5038533239353542744e396a35493943564c794f735942476d5955684b4e4361452f49726946702b5451497a6e454f6833704d4d624349766552483737384f7a35416c433958786645444766553075776f6576744d76474e34456a6c6b78534a356e653456723057462b6a2b58394742673370576a37446b5a7a684c6462537145425249746e7a554379686231754a77646d51696a7072344e564233455378347331485237424476734e49414f66593838674553306f57794e6449784e59325a7467456e394d5a775064556242355a372b316531792f77426c7868422f696e68422f695266506f4633556a59744c4f4a2b7563715935534a4c6d4d6a636c5364446c4b456959724631483346797341566c5341462f7441794147644f7356694f675734376a5161504b6a66377851764d414f7a443765764c3549727554694a7439717053733458443644692f773537766172354532474955473035715848534658753064494f715946434a682b5350374a6e4c534c524956734f3466683473656355414d4c32632b5532673344396951632b6b5978713737574e7063707871342b676a47466e516f53756945666350766e4978412b2f77435057385a77512f6f506f4c642b326d4d5939462f42657550712f6e55612b4c6e34625a42657570777334372f51426348717668494f7439365747524176554b7079514651632f61317542424f475a6f7434704967686c43436c4a646c78765a7a76792f59466637634c503177757436494c5a38656c617a4a434d4a7764727554464c49714a442f327978784a7a30714a672b306632552f796356316f422b2f642b31415a47644e626266694875532f73342f774273326238642f532b44315339516f386c6e354565714751765a6f634e477a786e6858702f7568526f5a6b76756f54795172674563746c5a4c6b596f503549417551424d5457486b6530362b2b32327638416c312f71505172692b45397a4d2f68524d783054417a677847457a394f47712f366c535949333474362b386f4935335a594a4a61356a534269484f76452f71447832746e6841647638674b4b7152394e6e79785a444e4c55765a477a55737371544339775a764e57566854706f6f2b4f674755395778786c544e373641436378704f66642b5931453835395339464d7a555a717530782f78627337552b3939436932523039464761764f573649516c7a784b704e31452f614f70636b357530324a4d48544d2f72516356767979382b683854384f383938707530437952626b655251356b4e6d577a56316b3239784a4e6a496b767a58334231644d53374d7466376b65427372396745744c3736576e3036635a6d6b664965546a316439504e3777624279664964543533493839307274584f6a756e6c686132524f6a4a33746a5a4654744f656f51755153675953335466795453636f434473352b6857307a4f49343752726b72676b58476a563071756d676d326443766e5876502f414f6750476f6c36433241745079413466663841726f415a6334426d48396267354532655435657949664e6e7a6a4938314d4e63684c3432686e54723458434b6a6f382b4f70682f494a48384b53535a2b3159416e4b654d636531414c78796e4e4f5a4c5368724a356a424435364b4f635a5369314d7665334f6f464330304e7a53305146797853613067306e4b365255542f315154654966687a4554354d6f544d746e707a4872556e374e705530797a4a695a4b3056393550435a364765517059386b6c39674161436e2b34426d63356e5055435a5a4e58684d6c6b6d2f55316b56597576746970614d5564756154484a4a49465156376d5a4b7934336e58306361374b457863522f4e2b34444f6948765354432f76443976456b37374335706535746d4a49714e777938353866434761526d5630316d34456d5877763552374165372b6768756e31464a46585a3333396678484b474f5857325050622b2f6d4e303130704f6373545a525531714250322b2b387a4d4f63392f4f61566e7257524833386452376e4f7a2f414e4b516c6a70756d73696358574b6f726d61614743766f70616d4839644d6563523166777053736565386a745873774d524e5a4d6f3973363176483758795455396e4e46542b6e384572454e3476394c3970644c7045424542744f5166635a6877777344324536724c313862596e6c5736584672545a3241675773765a453452304f666167574a693571353768506f704977414f48377538396a66367a74787269334352375776524c386c76472f4d2f4450412f492f4666493264665a34356c4c444f7776494f525a4c305a696f5a6257323554492f64524f78634d36614d695451542f7741673466384130753477593379376163784e6f6e76466b623072494e764a3370374c6e357475794f7664486e36335a313278325a73395a4a736f67386f2b474f686d73756839736f2f45544837646a576f583765544245634f48674f6a506f4e64585a67707a39426d5671636f687958596d63694f656d2f5377624a64775a4f352b592f4846715a6634756e4d524f326749456732594a6d7a67337268376a62724f30586c6456424c625352795a444c59656f6255616b534457496f514f68577a6d55504c6e662b54506f593476624f766b784a307556696b526b70634d4372664e7649703255486a6e506e4372725a4e57584d46554b395771584343505154526f56515a394e654d6b6f325a74335a756f4e7a56594e592f6537315046304279492f5062717242776654764e6a4c4c32764b664c4b626a6a304d744f6d6f4d6d546e4b64526d5846615255567a644b4f77774b57656f513570474e48443031526750526f642f7277486b7230396d312f7162366c365069666b547358447038303237696a6a635a7546334b714a4f5036475a5a4f4d6131556143757a4d56387975456c6e74436c6b5a636436474a3231696567746e66386439566f50547266384157344b664d4d3778665030462b4d713872304e4273792b37666b2b576867352b564853776e386b4748536f547a6b71474b4141627856587a544f396c5932377130476956533075464c6132534c523056716f4b586f554f6f75546377776e714b6f54564b6b34342f3076384154445330356a5a2f324f6b586636327262756d526c4d78594d6854556e6e367258545573376d4f73396c5a45376c627a536a545a394661624845304864397679386334694d442f772f702f42396630366a4b67466b36706766756377536e36395478524e7956316c4b2b47546270784c36524c61544769727156554e354d5857712f6653557a4d6670574c537a37585741415a37304832594b436b364c7a355631724738354d42585566464c56316678443264335453416a787a58422f576c2b3736686a524d304258325839714e65644533714c7972413873716e3061594d2b774e526535796e63392f43482f6b6c3676797444686539504c62712b496478632f5a4a42633872413475516b7258384d6379352b32517472416a705a313556444f3669623558457a347668486e53613133472f31572f6439516a786b6f55653666396a504e334f4a54676e347235564f722b6167535975566e554a41717638414c72445362434d4434776842516366782f5431412b395779724f7045774f537a72544a7a554e696948347031315063756d6676764959513477754b5a33332f3636666d3537776e6150585a7435534d6c4c6f6a6f6a5655344744336c2f42514e736f7865344a71766d4d6669636b732f576c3976462b3733443077396e7361494437757632667249477370524c46773577464e524b352b755053355a6f6c64525030696e66786a414a33434975474a632b45456d31526d49742b742f57676576727a435a31617856786b34705774334d30744c69662b4b6c56707252702f4b444b4f54724a3750614172502f414450697861582b7a50384161657341616d546a6b7273506f7236485a704a325039362b75596266596c3654582b2b55796a63507a423861336339694436596741676c312b485a386735692f624b54616136614f3264534b4f7a6f6d623053354d737630316249545651586674456c6975442b752f7377416a392f505a49493457505a354e354468654c5a4138706f314e6e4d7773655266484d73355870586931465847534a5377766a2b7778763637375334482b7635524a4b692f716b326d4b356d4f493948666f4e2f6254503079717a664e5057652f4b424553705953385a436d6f59456373577561375031615a72706d756346576f6d6e694443754f6d594f702b4835546f6a48687472784f59714e2f395438612f787a3953737259796c2b6a6e6847516f35383748643667545765516b2b76624e4d65576a47756e6e386d6a6958594c706331694857646a6f2b43414270542f312b7a50783332724d383249396434382f583979337858303339422f7967384c386639454b7339522b457934586c567a382f7744376177326f4a386d74496839694d763543774578734d5564363550456d685648325866592b5073304a6d2b6c656266455054392b43583543353372563656656c586b3272556d737433496d535731787a4231734b75364e6964504c6f6b786e64587a33362b50516157434458686144766939685063422b66713032327434514f7a4f44717a2b533561367669586846644e545556613263716e6a534144445a3258574f644b3670564f5a705367796f2b2f484e4d5a6653457639584d5a6e455a426255314b5a494e41742f4a707077514c51366861714d316a4a463976757a64584c74377862314d705a6f5a5a4574437a6d6d2f30382b596a353959616e6479344849762b385034537a31572f443331566c7450547031764750484b2f4b632b6648674d7670306550644766426e556d3566325757486f61496e4a77757042793571464378316f4774323373387858557078364477417a4f7149796b557a76747069365955734976734c657555326c53716f4766585437342f642f6967326e304f43737567587441505a35504c374130346f714f4e656c65714b533938795158584d79314461536c59685638374763366d566c446454716836386837387838454f47373248694d53654444756e554845304e366c53474150492b52496f477931564a4c57585275594b5a5766386950562f444f6e393958386a7a44545437786a5963733330763435744d5435443733344531726f65674731555a376676684f7375746f4c37487872367276556e39685147502b44663656373933332f354346425547416675757162375838684c386158746d63545a716b44394532616b367579724a6c45367a365939534c414955392f58545747676165335555686f7367735857436e4e577565657053755056376566505652797a39614441456e4b3537756c3158302b6966373631726d5a2f732f575175745331495838386f46457966334a467331763265303044336b39546e724c72515334673976754258776e39773143627569347536427430466371434a776361794f6a4e6f7653334e7250697549705944304570717954394955565338344a386f44334f446b33794330514850382f322b775a45456f4e72436958686e4e574b55567a4230653166583755564b4b77367866422f5a436c5379554b543678504f4334505a2b68304431664a756d58376f51436d6c783677596674434d75576b544f41507457346d4b3555356a522f363373443967316e7839556171382f6c397874462b4958727a662b4d5035452b4b2b70546662566d4272795a486c305a3233664a563439512b586a58304e686f554b376c304c4c6e6565396f7239354161514a58372f414b78314b52715569736477393576704c354834743548346e6d655159506b45586b586a6d314733557862586132336d68506e37476a39657a536a48767a685a714f6f495975636c583775557a56544a41714a2f6f7538693054457a4539524e394b79772f71444c66423347795670375137564f75743254796a5678332f787332784535767a416a517a6453635a654b3631582b35726e4838676b45416e6e366c63376b75764e33485264644a2f4b314a7a30386b6852693657532b63656c6c734b65565778564854503144446b4c3452567732676c68694849762b356235697958307132724a4262343970623271723956375374534d494f4d56705977397a6873716e5777596334745355696f2f6334304f41302f477672707736644474596e34665839787938394e2f426650747473586b474c6d5a7a56775332543575715547527659333868303456367a42676b32454c6e574f74444b66522f64505655324b6173486d745366363374506461656e41584664343536682b4a59326273556a48446b50795a63625867552b5a4e6134776f30333656326b644e7a58707147666138673469425066663841566a6e61464d39507a4e43756132345a794e482f414d31324f3376535454706f663543706d423564456571485472566d4e756f7471792b565577365646525a745850342f524565664c5253482b4266584432676b4e7450686250674f4f6a2b31307a6b686253577336324d474a7677756a686574416e7879787349662f6f7373486e4f38345a38355a2b7962512f34773731384f313542774e5a6f4c6e7849416c64584f6d5a2f5677326778416b4b5764374c7a672f78367a4f67572f77435a417272412f51455845676e736864527637336957394659553665624a326b59774b5a5939516c7a6c326d4e7a556a37666d49532f356361765959653041503476367a2f5a2b736a353141574a63376a456335477a704a374b686c4861767442535462477a386c634a4a433972416e63526578536b2b7a674e4d466e7a5143314f5630475468306b664b68487637314e4d5a464d75524b69495a496b6b4a2f6239354f353065393933462f495a732f7758304844536c695978334a2b636f676159502b7754542b496c6658574e41396f48724757636379672b642b4a4a673753392f515a385264376e7a57386f436146314e6f59585639557461494b573972547852567963345a6e3169497032436c667739443467415357722f674357772f384161467554792b7764444f535a772b566c79317a794432777547507a305056333346396554676b3159685051355a47776665436f3164396e505a2f566734456e73596c7030464a576132706e567050734679706e7371592b772b4b4c704f5431724b4445544c7153373836685033665834594a704d506e3531516a556b6a4b7855316176696579586e7456564d746865376e2b4c436e6f556a6a7565344b52495670492b6534475470334c53626d2f4678714931463854526f6c5a532b71525949374b595367326775635863482b777739672b31492f77437742496751625477365074552b33704c4c2f6b554d557632547561756d6673354e6c446b5a4d2b36787750345866654c765a3741397a653872746a47337544714c397459753275776b4758576f7a5a4644773647396d714e7a2f653850613465697769583768396c426453424c4d50695366395477364234746b3950657554316a584a75475072466853395171524151733538636f6d38666d424a467777654c68466243464a6d4a30663149497a5454755a3769656970536e4c722b50685355735361552f50666a7234734354597a7446457665734551587a7067342b38506a6b76357779354a575a4a54786d613961487a6361477032666d5374715a6c674534305059485464324651675358734268726d39362b504c3672663630332b51627143782f4955653944516d6b6d6e4a6b3356676168392f74742b492b7237316c6970324f34624f65306c65396e78653733634c2b74412f72455a6d4831557048394736436d542f6856636e7a3072532f6f4f6c42587665346971714c672f77434a6341306670524b534842426b754a62686e3469556a7250725564544b484738664e5333394f6c51625259484935562f44387638416d763841616449434d316676324c7a393535432f637a782b5135493944486b76306a7054534557664d51584e735843723742487849776b6b5364526b7539675472644f73307a4b4e726e69326b637739666b7435616249615655576353724f72306b4d5254387a3659374e5251512f4c552f6f7930706c7535304152387961556e37684a374f734549304f485241367a7173343768564b4558756d34576965646e6462384c3351386c6a532f58756d43465853574a75542b766d596b775359396e4237444c446f36445248515851387048484e3149316679623247314d7a57637471715231656b7134637436534e7176614c75304e2b48366e45714435566977382b31397a486f6d505078306a304a4b654f6b4f7730755070766b44327672644f79696f564f3456502b66764145747063376e39417a5078747a326e57383036436834716a696c7a6f6b4947725a6e755975727363626859734679334c6d54382f77414b547a557a414e50514250514d5a4f7979634d386f3063557772587a574c3055645a61786454714b3575792f477a33584f374737355163587938613644374a48384b6e6d6b465a58484b6872653844506a724f65616972374e7377754b69537166594c537137554c4c50665574595445584965747044334b45716e41355142755a2f4c7675754b52376131717933486b5a3536344255376e4838576362564a61323566753047636b50334f4a54516a41334158766373437550395375675874304b512f6c302f63617a51354839784d73307851386e504e656b2b36566736733657724d4641432b7a4230446153357934436738643971714e394a4b557476327335545a614852584c68726c314f515057386d6d776a63785977476b56456154446a75724b6e3476364359534e7a6c31496332732b613039535766496d7876656164624f5239324a50677675354e6d3146485574623568453066484e2b795a4d632f2f49446830684e74564d74545935745370476252503249335a4c637437614e4d6f70724933554644476f7033564e56384c6944726a6431545a696f4f674a48527564526d5352726c787339764f3571703146797a4d4f706b6a3539565462396f32516b6a356169494a2b394a3033547036304b50744e6a372f514a6e35443076337952684c696d47346846557150384179484b6759615443623675537634325a65644c4c4c7a72754f5677334d6479643178453035514639316f744c6e587a49686c667a482b6b4d366a73642f4b6f7258337874584a6a6e7039737372426f4876306158716e36466e4b45564f5930535142433555384d304b6e6c3978465531384b45614d54385a2f45633556515a4b2b564c6a637463743035423065756448784b70754c2b6341396f4f5a706336784a73715a313478795139434875586677744852307443554f394a3956677154744a716456314d342f416f322b776a4e532f737553442b4943722b61433077424d34737a366e79523569704579533537456c4a4c5074526d326a6e777975622f77776b66554d7761446665667767316d31596545784f77326c36744353527a4e47486e7849745a794f656c2b676a4776307538596d613566754a6a464761515362506c56536d7634517730742b654e4931337a4c536837784b6a4d58326a6f653334307775793558524a564e556e36764d325a4470514d68356a3048376638426141434676367871465533706e784174627433317134354b676c64517a6b5a30666445426f79796f7a31304b5572333030664453507a4f5a4d537942794950667a72783746717054704a727367786f6d70584c717761577059464e355a6d776e7242574d7565786a425730516b3071414d61484966542f51454f35756b696a6d56727173685978326177492b796d6e6a495651616e33475a772f4d4e476a56386553547147715a485341306b592b3179556a77476370646e58616e59723149617154626d75756c2b53306e5778614a5365314b32364355584d4957613162522b755a47355a3248592f3451556f4d6c5167766a7545644e546a657171725334744f5a686975437a5170342b7850754b526a443174534e58593041716c4a7562414c6a542f67595a4d334e4347664b59646d4944473575457064426d31657a635335394a4b4939467270356c7a7050356b7971623957746251412b30746f544f6f5036423639756d6f466e4e6f57396b754b2f514b796e4b7a4f30705851704f74727a562f63497032782f77416b36576843694f66337242334a506961726933416b716a505139746b73634731695a575a54433468526c61496c4b78644673547a64334b514d4d36325a624f53694c6a654536557136315274536f7769752f77446577446d316f496c4850584d4438386e766d5a466d77346d5374656f506164665059646b394d2f64443269424253617761705076702b4a375855527771367275536a6c3676455539304c6161475a6e3364567a47564d6338376830657a384f784e424c7a5738446867776e524f36685242373039432f50784c2f6b2b666b64365879796b71543332645a6d526a4d3836306a5844516e7839785a633665475441324c484f4d47635531784761536b2f545847716d70324c66496535542b3237506d2f774467766b435a633139463875336e76657435676b637736427a61655a7737646247547979747963717732477a34706a44443471616458784e6b507939627050796a2b6f366f7838314b327673362b646b34783975343746354e4235454a423850595831614d725069304e71575037444f73366b7a636d2b74514a2b4954352f584d4a5376536a526e614e595067734630423665565645375079394762516d6c6a5136674e436d6f6c6c6339503151456e63517a3564496e476d6c5a47774a784f63643445366c4855317043667657316e6f4c764a5266526456536e6b693637465166416b71685a524c557751634c326c52387a62444d656a51456b434e65527a314a793953537739356659703444686e6471527643464b73305a563656373756766971796c523148326e686b3541674848557050725a376a74547451495234377131612b74327932537675684872473130577833375655586373736672486f70563967334a353851387444717542504b34355a33522f76704865334c5845416a4c5439633948506a7a395057707159706a565458725569756c75785678504b61553667303648362f6a536d7057696a326e4a3870782f375a69442b7267546f3357797161583670664b6d6d34766a6e666359556a72797572663059567a7536576f557271684a623272656d652f6f473450696d49674c4c4e4d342f58484a30493561614c67536a335035536e4f4e635a5175577a466e2b64737447566a725546424756504136685357564859372b6751306e62494d736d7152646954516f306955453675793256765a41375179493831504e426e512f3957645162772b61763745326944714742376f2f70352f732f57526b3662545a5241464f536e4236325832646a71314a76357466616f4e492b7746424552463946393179524a433276634d3656484966764e4d716d6e3369635a79367668534448385750785a6354697a6b63544e546e6d7261564873332f41466d4c344e5255564f5552732f306c6241484f7741593847504d4a6e715a756c4249756c73576f5076384135484d61393132735a31524852524d2b4751567a3979324a5755364961675655487936514c43626e2b5141445453616b67674b54464466566f6a79624d75485042535757714c7942425552727945746f744c6d506a704e58794f2b50674f6b6f4d5a7639675267353155573072584f6a50706d6d624930663472654765524c545a6d626d6c6e524d7a3468424761345a3077304b614450734f5665556c4458554f3969412b355744354570733833486c39334779316b3154324c56636d352b383274452b586d434e436b304d64644b6f484e6b46432f684c35505a4d4558367461596e704157464f6c7357505666703956324f714f70464962796b303038664c56464a4847614c436335616673532b316a6e746f554a2f593537784549457557507a5439684a634c786a4535516739585a7430757a4b4b654b6d4c5234336730586d77577430355963386b57614244525030443974494f636268577559776144596e476545596745383762626e3641426a525a4f303175645152554c7652374c7056366a6c4c74546d335a773857726e5145766d557469534c5149564e562b6d4c4f42454e43796e6a435866396a517a366539426651396c6d66563851445a6a55306d63376c4f6e6f4c575830587634456275774d446b784f4d71663642396c314556724f4d6955566e433074614e7372626b57613363476a7248527a4e6e39303331574f534a2f2f5a42716941316e317a672b4759776c6d47305a512b2f5244314c4a36755a386f357952566f356e65425535366b4c2b486b3256642f474f4a76545378586566344d587a394878436e514f754e515048396e5270536e484e4678756444506f557a4d4b765359413538584b4d7369756c42795a7a584e57496a512f356f32695041364367455573576c643854616a57766c4c65394b506f52496c30676250466e58337a4c756e4e4f6c513665686f38622f6b7a36776439683848324942707363524439317565432b76504b743061352b447864714f54556b7065766f593871313154354b61484f6e46456e41616e33675a3846724847674b3970695458454f524b32444e56596b3442614e736e4971394a4c3356756a7a4c717374336247557975316e635a514a4d577a652b483476597738796f42484d52466b4c484d353274756e577175695236364746327256414e47427a7554314239576e2b507a37476434755a7a762b73447039415339354630423455775449524b756a6a4753726e6171666d63714e737679766a5668356b313947774b366851745a75464d344f48744e4e4b6d72536b5453726e417652566f3150565652626b73304e7036344a394c576e34704e757354364c66646d77745067726379573677426954796d6c4d36564f58537a357841394e5076444b6a726d554e69306e385771664e4b4938383950502b7354574356457a657a576b722b4e6f6f2b315a79622f414b48325a2b65314d67536647616b6141534f335050446d6448395a687431386a33386f68724b6d694b7533487370466139644b777a382b63724c47712b543266496e36374a365445525648585a5877422f4876795131457a7547554e71506d6174366b48374634384275717337546e317630474d7a614258486a457a6e50676a453459364263454d37446f727164776d636a72305067356a314136314e7a624a486c5870496c30446450484969684e576d3456567966542b784b416b784a6b6133644654616c457736642f4e6b46343364697842713541377659334b544c312b4c4531733873394d767a4a6d424f6c38663841487447576467506a346e335541546b6d784154394f42466e4d6e59745a54554a704248776138636c464352586f7167644d6b6a7253755567686e4757504e4f49656778794862424e4e6e317a355a4d484e4c2b346a596e4f39462f564c51317448582b376f2b6e486b66384146747374646c7974666b7736534e473347535354696f392b6264744d736f2f334d5379596e7554484d66666a36644847366d42345046522f6251716441316d5371465670526e5a395665645473766664576a374373797757736a6244596c765754496d6f70393533424e375a6e79683634574b54517a5937466f705466487058304e64493531536c356a624b37714b73672b4964543776724e7739497075704b67334265376e78742f77414b42413076497a6f6c414e725675315a637564465a5a3942476e75664975683874456f78353836374b672b456c423978733767544d795032464d79614d41624b37486e534b644e51784d4d32586d6371717a6d64326b6c65692f7743484d316c6e693748572f7743714d5334456b563636686334442b7a576a35714f6755524332544e6f30644e7547315163696a56455638335170526d3336464b5653436559376a6d477363394b653148534646535163445354313863674d4b327a556d7875507743647047356f544b666e36314a4d59636e5a3857664a553574693341546d463268596e79752f51396850524748547243552b4f3238626f326551364d6c774f4b5365584e58465069386f785a4b497332585565464473566f51696f5578384765766b353070346e32484e4d414b3061326a6c78416a5a3250324b71703671634f6358646b6c74444f3435486162704f665368712b6f7a51396b4f77576f6b763969755a774f2b4d336b3161766534724235707739587376576a6e4c4c386437706270527474537a736d7864526f635478387a727053316930677a52576d634745594f4e716e42384a756d414e6250567361504c4e3132584f734a72716378485a47664f753437585a7a565a584363417445666f6a30326b773242496b4f6a5336684a317469496949345143547674383156622b635556444d64564e4e485177577067644c5a5048323375646b6a7342783144776845476466374a577553526a6430574b6c6e6b4e6465665a4f4876644f5336646a743351526a62573635316973317a487a766d69683065436d565a445a4f667664316269753566305072682b6746674b4f62727854467153577931574965494f6f76304d69705759754648326f35335a496233487a2b2f516e6e34707076384169634f675854355653536c4a444d4a586479352f5a534373664f2b394b4c346e687155776d6d3245626e33655061507a6661732f336179484533746c507879752b4b6271694b4951485a3949774163387661546e2b707a6e324f707a6d7a78664f6e616157506377636b414b67346271474c412b7242726a456b794f494a4f33414a7649454f5631456b6f795069702b444d4b6d7a5248704e356e774e4343545453756d7a4e5365555842664c316c435141452f45675073712f6f422b55384a744b4c756430702f33716c4d6f517947794258597a473170303835464b6b7868734363593051726e71426f30327534614f754436796763566747643954477165796a7139644f7953785a4f7a50534e35364344663859792b2f4c623279622f6e34684558316944696247424e6c2f6f476d5a66745176673074534e63746e522b445271717a5a4c5758727456444e7452667878357358742f36684c6e4d3050415456662b68555a384161414c7871686c694f423645703138636d332f41484c6336744b6c52497a343031784c302b78314e646b684f6e50736d58494c334d646d722b492b4d2b793051494a79494a4a387a5330776e52705a78424a6363724d614c686e53466a766c4f6e79616556746a463464435750347778644b426d64523934487549486a764734496471686f356b6c306a45634b615162337a61723946574c4c5741696c54487430434c4e756a63734a415938505a7741577871776369496e4d5a385159504132714e626f4977654d716e6f5878516452745a39576d4548526772634f783547763435736e6f353476486b33557a704c486c6f6f61313378794334593868394c7732374b71564b6a784f6a7335534e756e3749613669306c546e52636f315a73416b7156597264555a7173367178535a75684a6353302f5a5849595635657a7179352f387a5249414c6e3037394e396f614d314e594b6879324b647578386477585566585a2f316a6d343649776a624f4c66696e454667646374324f6e694a30707a4e434442547a6f706950523033674832746547475856684a714b6e4f4a79617556526f2b514a44556d68704f69566f6858686150494e376647444e7875726c6f5454706a6f7474646a57535676736c75496c705369514e42412b32334c363573624773764577634c452f57363251473241642b546f3378716d30384446544c3975527a6d616a57574a72626c51335464743136573052304c68545270533171636c73346b3753576e333851373341456650774b386f42485054516e71495033517931463147546e4f56796e557a45366d64454c4f4c4935537933413735667377302b3836557a4a616a3663544d52316b457250444c394c596b7a7574426373555656707a4d50557157374d626f4c46636462466133757130484d546f476e343066433933316a69346b445a4e2f544d597a334274583655375246445771545446364b4e4b6f6f6c636b69624c4d6e4f7a364c4b575a6d76516e354d6c6a4a633261696e6c644a303850346d4f6d4d522b614e3966455968365a61784a34456b796f3639583434704f4a594b382b70666b5a796e703573336274427a79784a70795351476752446742386a75633530326d3331385157386f3852626a783555597a4f6c315456556a6d6578313037354b4e7052634156794f73575335776f6455542b6442386a566d6c6a5064523368797a45784d5a674948346855796b746d374b6d3752395344546d646d31315a344c39764a625945425457736c2f43316a4a586d426a304439366a4a4b56472f3457597a6a504552695077764a4b716e4d625a324f7465666f6b3635764b59387a4b7937517a363278736e766c55706431533672477a47704845396b7050342b50734f47644d676470654f783067732b64487167324e7234334c71547969584378465475746b6e6a464c47616c4455797a747035617558676d6661624669302f3959433576476f726e32706e5633575850666f2f3578386d667763392f632f356b496d586e6f4f4f7732624643686e4a61356158473533442f414755786b4338515a2f51504b796c366b65586638527a4e73775962714f38534e4155456c6162693547756547354d6a696f6d636a356b6771677a50346c4348724d2f7342586a4c36446576587a66446e55542b7032514e5a71534e4b74662b5545653563387a72614b544a4c6b30615354414547734b7a6d6e4273376b744d2b48327274312b58366a7276366a2b6e324a35356b436a6d74644c7038796a736a73644f644e3772644a61624d756137516f396f727a6466463975593879555375665734707136476954594f614a6d4f4d445254793777447a4c777175354f745165743478494230594f6e77396a516e4b3656374b7063685658692b4f47665a6b78723069466354565575545a42784e453830364666653072614a782b496559502b3666707a65512f6c504e487133522b51426b2b432b47534c7631485846726259616169624f7831304c464e734a454974547878382b5177556c767863654239353361475930346756462b4b76356d65616668523531752b716e70376a5a6e664b66497646646e784d5a394e326d4758494f744c334a4779796d4c51426c393035555a394534723730474d6f3537424d31394e317454536a566a6250654e45764b664d742f79337a58653877386e3171664b2f49504c4b5861666b573770476c6c65787061563268585578576d316e584644784c4a57644e344f4d4770346b4f6649706654326949694e7354736b524a6a4e665350686b73387442644b46584234684448584d634d2b757a6c4d35455379557655486a6a3473784d7a3454682b5979495a35615434794a666e4f6f795544426e776d59364b547259384b314d453458534d53756c6a346179615330664a704a4b6748754d416d6f46564b5a784945306d5a6d654d354536673064657a4f6a53713232763635784a45547634736a715a7a757331557a34374153357a364231507641507a635958364a6f6b6250734e675034355770775666546b51576447335244516e304d6b322f78383948456d6c71716c7362314f6b6d6d684c54454464786c4b666758373271347477516f4552326864654c4430576144703456782f427a6d676c52415538337457757a6e574d554c47494a616e71365a5447435569787279343439423967434b53647a71624c4d794653557a4f345a554c7247786c6b4b7147556c43526479394a79312f47545656653047756e587750684a58756e6a6e786b422b356931307a4b4674376c694f592b48546c696a737a556452555279712f644139376e7261576777314f59423959624142437a454f4c2f706d63357a784551626c503538546b504870697458324646795a4b6b69715575467a684278504a317159775135336e666a35387a67346e354573582f562f656551466f513162336b63316850622b6c74582f724869714f4e6332672f5a59766e656c795976314d736a5630784d4239783846765130435668703752336e435735354650774a707632526d664d3855392b637735786a6e66795031782f584345682b542f414b786837433779744f7a412f4e2b7968485a6737327574316641396767756a32307a584d41654f62333363533432664a77523658566534434d6c3839346630723259487a764f4d6f2b4f4e4164666e726d5231542f6e6e633768532f422b6b4b4b6731704c324c397a4f6b506631374339772b7a682f4a50647a5948373239633176577353564241755a724234695a557a57636c6d6e2b5762367064374c3336374f6537676434492b3333694166346c4937462f774271542b325835742b612f6e6e2f414a3535374866346e2b4d50674e4937586d586c315565706b792b5531485550632f7758786d784d4b6c73735a5a47534b6d6f71554d714c423978683879765a782b3061386155625935395334397833705234373435342f354267352f684756506d34506a69537963547864667777512b4e6546776347504c444e69676f636756387a39534f696862464a2b5a6d715232505567306d3779377a4e6f6e5045574c48354c4e6a5654476972506a6b62332f7272625336564c6562744a35306a2b4e7a4241556a4f6c6376503377327a4e564763464b766c3550776f78474d6477324635366b7835654b6558766a45536f3745637a307836677835307a35655a73455548587a52764c4a5a2b696e446a65304d6f2b65614271585063395275704e4a7a6d7338427076366f657665486c667943343272622b7133624d503635394e68516162567331613175474e482f70634a444962525a313636783041585a5762522b7448656c4a6a4f4f4d6a536a6239517339457430544e437664663356376e5754313061372f486e532f477637694b4965363069382b686c412f396c70704c69427757736e6d685438507331696e6a4966717a63752b65336632714c664c32667977396e52527a3966646d6e7939523872774c622b714647704e6c7a7a39554376656a6a37365a754a704f4637546a4d384b7847334950654c593750472b485541646f306f354a714b316551756b3348647436394c55654f7a307563746271416e4b67457168596d6637506a52436f4a316c516c745a6d5a3669702b486e644f50717579616d5444717632526c4a68376d7a7355744649537961415a3959717138675a71584a5638532f39394c6f6b7a5275734a31314374784339743338316f79747358504c704e516e732b6857765138667945716231623462714b56787a4c646c7a376b4d3731543057673661794d557a506b705135663942364576782f38355636772b684867753372317836336e6e6a712b7a2b53774d624e487444743553437a3565304d673176644b756b55726f65546d4b2b7738414568537634706c634e3432327445634b774a2f624a2f49645865314c4553304b6d54426d6e737563514c54385a43796d596e43744c5130726f324e4254756d4d3576534e416e5037553144444e6b58696679736c644a79567937563763792f5156536d494d38444c5862785538374838312f2b6d367a2b4f363048653836576447596c755a4d595670356c2b4e66347565735462664f50557a38665053487a66794a476568656c54712b6d794c74643955514f76304372735a682f4c527141314b712b736f2f5966704d4c65476b52654b744976657643743572507a45616f2f4333384c4c56646a712f46763046704e48376c7a305a6e706834785055476b5675657146596b654b383873655556634a546a643959715a76732f4c547a3635673937712f6a6e2b593137752f746f663277504a4a3732655166697236456a6f3061787275664a6b54776f463174306354777572385a2b6e2f48453872766d4e61674644676a536444457a63436e2b7252375272522b386b5574356c2f61432f744e2b514b597958386366422b616561323745703038376530387571356355713656396f6d6d6a4e4644707332367033484b36412f38417055664b545033664d4e34396f396f722b3878506d4b5238692f734a663274764c6c64714430713870384a6a57723747646f654b2b65314a39746c4e47544e4837454847775963746c7a6f5867756964334a7148463334546e72576f4c7837583752487862777a384a2f472f30312f454a682b67586f725a704c394f63445530745a31476c3543666b3272337568526b5444726d764e536d6561686457377163357a346e4e39376a715074634966484e576232314a333237582f73576235764a67654f2b4f366457742f4d56522b5131592b7776517a4e43624b6a706b746831516c69666176506f6e6c715659684c2b393737485873574a4541386e2b6f4556695a6e683148482f41504d3731487146464f66476938385536396a776866504877447037564f2f7151354376346579386c6b7950727443357a682f6255665a435834593570677a334b36644b75506f4f622f35572f77426a333151394976544b33386c4765756e707a35426c364f5533314138713862626e757a396e464f66465875363266504f546e425a354141304374636a76685a57457a6d7059624b436c5276702b3156744f7a6249344844596c584257625667796a343533504832502b456761516b587a646a372b316859744c523731686b5038416a37434c322f4d6e722f616573427755626c5664557841716d703639487a6358326f477250347a366f5172534a442b696f39674c555054497a575a392b496b2f492f642b76455a3173667057696a36696959706a4771344170553630364b50727a4751306c2b70654f2b315077666d343432394d654837424d2f6572793533634d6869786e5072715a57735763725a524561696e42505a716834537545445539594b5a2b564f684d6735776c5568462f7a37766331496142796f756e4d4330307a42386832664743696a54786a36374a546348486361305752417a702b33716d68374f5059686e4453777963483169475139366963436b376153466c3051437154716e6d6c6565307a2b5a62434a524f7544697a542f38414644695843435234495634576a794878414e5a4b347564346c4b6f51486930643532784d794a50726c474567304578626e4d735730694952414b512b5439662b315a312f656576415a6c2f476b54416a62577a4e2b66342b6d59314437336c3149674577492f327a382b52664350355667316a6734596b7235663044397036774170454c574d39716a5970314e676f61612b4f3635416b732b4a43646f704a592b3076623775674b512b7a38587434662b584e41742f49634a58564c57744462523441544b68367862484d5a515a72754f30752f6171423378385830506848357068502f414e34462f56647466414c7a63352f4b5265356a706d6f4e556337767169776e4f35634c6d31442f414a4c58387a53573769694a4a677a346d483775304b36332b6e776654394230426a30506a38526856735636302b6e35416a4830614a346249643235326330697a59787035555449716d63687a62314c3538494a554357394c3454464c6e59675236335a734762344e644c2b744854646247747564544d7a502f3148473671712f72312f4950632b6862644c514a6e45392b454f424f6d594f2b302f33464e2b65505875476b5a636d6a42305041447243735770314866597473374158396d66724442632f57516b5878437166702b3876683661682b5433704458382f774276734667652f77436730325743464e4a65386c584e706c546446704d4759576a52523867665439674537394177432b4e504744374f64506736425a793270306c3673645574637a663039484c65642f346f553457726479574d6a4a50762b4f68672f413077634b665a37425149695766773766693953426472615371625233324e393466612f6971562b33693051794477455472637a76586c786e37497736417464375066377659626a4b314f7a416d7670667275796655507848794b4d52592b6679504d7247616331516d5766623075614b4f7a644546765371483430306b4c663032616b307341776433323074484c657365736a316b65675071506e65536550357668476a6f72705a326d387473355179737a526d7936706b2f797751456a33476c697249646168714f504b4e672f57344b66726364332b764f745848474f6b6a624c547773776356636c6b766a326d41555a516c65755065504c454e65644d7465577171767665593661456c687a61554e46484a4447597a4e4d4275352b366a5272316a4c534a7552692b525038647a5a384d657849614f7478554e326c426d7a51524967547a5458464f376a7376574e3654663841396d6c4a6e49706f54716f6672534936774c3939442f50737a4f38456c6d78636e5578644c6d5451333938736370726374386d4833546b3574624d70314c5841656664597567752f54396d7134797168576b464e7a76574d7a6d4d6a55483869713065535631397a61374f4b72683873796461352f4d6952567570516e6f3041676f4d4e44302f756355747362532b7166724462545164736b4250723070457845353778796e384d38773259366d654f3136436c6c566f466a624c4c4b374e4a744d6a42307150343049314c6459552f46703936464b4e4535416e72326f535475304e364c5636326a684d4357654c7a62486c666b76682f6a2b6462704933504a50497a6e3271362b5046707468666d754e3837546d34776d35624d6d3541796f7434325376384136337945436545324a694b78655a372f4146362b51334e38343957306866355a4e3479334d7936702f53667975674b592b4e304c35354c354a3873527a325757647448517a73662b514f6a3436526370414a35374a78584e462f5763567a747a307a362f714e37665258302b54347a36656549344d2b6266425070545932787657353141555558565665503574382f7a32562b5664556c7978593543443759384146337634416f547a516e78764f62545055644f50542f30367a726c7a4c7a626444533136557630363775784d717961762f463357434d735831637672475755797a796753774c352f724a682f6379543938614f6562322b5176595053624a385844532b3468635373624f307a306443322b7974726c38555548797561486a2f414271616c5a57585a396376636b335262455050724e7030546d64584f654f636a58727a337748787a51304f6552726c32396c5a79556856783856334c5a2b426b4e6b76546d496a7a5a6b2f444f4f6550754e69357a5633374d6a6c56756470416930576e4732427a452f4a5430516f6c3861386b464c5464526d352f774134354732344e5a355a2f6b4f6c52735770314b357066712f7968334c6e74626f477476457579706e4831306a714a71656e5476783454772f55655a33777230453955667948396550472f512f307238645052387a38343061736a783248636c504d6e49463055626a65616c67554572465336636e5856482b7a53436e47632f6663356b703973337070316d3976684852724b2f7344666e35735777685434313661356361666d57464e666d4d3574514639626c774f746a526e3971756a376f5a5633506b4c6c4a79396d4b6c77423867436e482f47615666723566336b62545a6e2f77416d492f4c665a416c332b734870726d515a6f4b545671554f736c7933574e5958624b6544324e5878357138386c75363966764b614e507638416862515a70546e2f414937536a68732f58395261755a2f386c7a395875327973752f4a544472787169586330382f456f59794b5554787a2b7a3946576d5a6643776d57456e6a3041432f384157735074735a2f6e482b50702f77424f42754236512f384179566230787964794c55396150794e38383063575450547030654c2b50342b546e5661724b48754f71576d6d2f574a68436d723753754573593274615977745637796358395a573976744d5972707847523643507876384137646634616668353462794c30503841782b384e77504a2f34737576386d386b6e6e386f3838742f676e4d744c5231764b4e4b69703133362b426253454f462b2f656b6f464a6f536e323864396256315a78653348374462586c38565a3667717346733075664a332f6631722b653261686c617337765754384e6d656371533431692b6d42545a5861666d5343774d7377737a3774326969636263556558396e34704861512f692b5a764a7035717332554a6c6f665a4f417a354c477053737763354b326e37616665754d46644e4d783057353665793972476f4875726963795364546d4f74706d70793748726d45562f582b774b6c396f4b5a70302b2f3841796e366b4868792f2f4e535936504d7646356257304d626865476131443445636e6a794e6e4f30586b53562b4f58512f37586142647a3453723532454a51636c5a732b4a767665766652367838352f6f4e425751654e5430655134306d4b536a736e44545a62423247395557693679657557686c6b36535863377338662f5464306e6859325a4e66784d59623559656a683276496250356e6d66636c454e4b4d426d704e6d524c697370584e42532f364f73375972776343544a7a386e76594256624f7371484d564f39452b62474c3230744d6b6a674564727950667338667a5839706c5576766b455a5158625764545a72564d6f466b69326d743932573059616d52304c61575948564d566566384131426d636843674a654e665869777264787943652f4c79353667356f5a4e484b65315162453733556c79334664486f45637052314e4950696e5333393043582f414d4f6b4130582f414356325432764b75593438736e6a772f4a556147554e377a317372495a4e6f352b6c7451726d636b75543166546c7369573567546d347247675a516d54674c576e4342796139542f4a39447868337154466a4d6772763066546e50776c535a392f617331336b477a6455716a556c353278736b63494a71466358457a4a4f6a356e555455356368306c2f5852574a6e62467678446e4e6c654365662b4e56664270596e6c63506b4b637947675279385337623864767950343579674a6d6e427147316a4f36684c3551767030683749686c396769585570336d315a3677495a2b4d2f687a764f2f562f64567359464273784d436d7666537a49713672782b7a4e5955537447624d746e4e5135714d4f646965396378532f63663639356d626d684e357857523059386c38653853384b6f4c5672546b676c506a366e4f694c495a64735654525073634c737a4f5a697a7571306557314f4e553548396232516d31727169576c6759784f5969656d52793039586c62766e336b356559354f49556f4b4230766a734c6549636343636e706376484f37584b336e386176504b642f775538554842702f32417043377970364b78694d6434652b4665466573344e7579592f4553325065457264657473676f504c753469704d756b39326c4f522b3063736836325965487867615446714c3470775a4e453272337a6b624c656d7634532f6b4a36694f6b7655545044736a7954767835673632676447356e4a7a4b746d62782f674c30744c3556776b78612f30746e736f4e646c487768335069497a70625670483568324b394450776f384e394b2f476648493944476a556c6b746d79763145553275337a316736325a705368735964306156456d4766652b3463684e4358737a6a624e3854756a4d43656255315a744e7636437a764f76432f44585a2f5048665544786e4b3953765444516a713850544b7a59522f4c5a5655302f38585a746a754a58794d73324f58556e73724a43766c7a6f372f59724c736371787161784e6f347879794f454835322f673535423645535039575054705776356a364c36396f4266715a38793337586a4c4c72536972784c47352f75702b6d4c49314277364f71374d462f4a6a2b596668615058706173586d4b323562446b72744b66704c5251673633544878536373424242304f4e76584d6d4f714f53672b734963384357667445666c35556e336e3850384175507072793533634d67566468436c7754445a38314176702b63715248687451644d2f456653706e58556372474a6334754d6f55426e395a702f352b7750597266786b5754346436635262556d6f336331344a345a58676e76516f613261573358366a69327666396343756c347463707363747a6145727339765630394975484672666836514978354c36663648687478784d2b6e70756c7a314f4f36506e546c492b46396e72655550684869302f526e446a4f6359482b564a7a4749556d663774573857345936694c506d7058336c54706c435a736a39387741527a386d59667873615a4e4c6857454a45766e654e654b6a414f6c77683441636e6d75333451755a31397173714a63794f6a30717739713076365465796f747a6954465958654a734a6b362b4f65732b393931523845474e4c2f4b4f587368744f6d4b71382f6b6e3761526d5a746f6d59377270564c397a676b597049467771766879365257484236514233682f4f777659497a7a62667a417a584a7942744d7079314562775762495237786a75794a366c394239616132665963745a664937674d2f3841366b77412b4976736b71754e2f484f4d426e32476f4542326a7132514d58537037754e377a3462705357793056757063625073424f4d376573353332666f477150344f4e63515032632b704871332f737161506c586b48347a2f4a354873424e34783448354c354a4d4d4e49626451314a7573646f674630793038374b373756585765394a7a712b6e6a445038626d2b373265663756694c38767842312f64762f47504939512f786b332f5858784c4d44787a79503034304d7a666f6e7a4d78336a655a354c6b5252725a70365735347a6f666f5964536648754a7242424168392b783251695034466d7a7232665632367579656c6835504a65544b3658314c526d51383272497765366676774b43347530492b30356a666d3678496b7a70482b672f2b476f2f324a482f587144416855726a59585569505a75725339686e4b35564d544f55454c4f68394e5469454a56306439334239362f77444979416665486541515a38532b536c4f523830456c6f6350354a355a757a746a726f6e596472362b436c4c696f756e375550792f47496457306a39697564634832646d68596876617237484c4b4f7a4e613952574d5a38453635775934722b653072424c354a514e4167512f4265537664372f66374d2f345072366b43644a64524c476b50714375636e6e49777535715162796e727666384156683751427979696d67657a634d5344704a2b5076752f512f7531657a41786c48715032756c6e5155774f64614943532b682b786e7370554455776a2f753473666848324e48346d556e774437396c6f7157374d6859566a326c53757156597449794945535243773344397a4d414a776477422b50335a7242456c657a3576636256657756734439574752386d457843475a6461794872584132696969716b4631664252386144732f596f59497548336b7a34665962682f3536532f73413356796c6961654e35502b7555564779726f716371314b776a50346c5653324f2b7775595a7850764674506978442f4167502f622f56666a2b6e36683442564a4e31564331664138484238556a733979444a4f617a3368324b51544d71464d575076377a70665757357674506876466e395279396a312f774377704e44783176587a2f464c4c4b7371474c73477530303150424e7a54643843652f492f767966745076542f37772b49774432455a7871647737742f32587637654f6a2b51487133422b5250714e3450592f77424476547171545238596c746a64477a7a627a754f364573616c435a5071323065483575313850574650522b6c454141583641426a2f414b35506174614b563252626d6e2b6739314f44343962343952626b58665473586a73797275706d72524c51335a4f686c76316f446a4f562b656e6948467a67724a37704d313131626662532f67443556725a3456466933624446352f4d574857726a78342f6d6f6537364d6a7469706569776e44554c4f7938456275365564457a707531435a787a6363665153464a30525776533038496761326562626d50676331615835525a6a4470794c347274427a5a4e5734796a583541796463673164586a36692f702b3158547056386f7539362b714f696d762b74527a4e2f4b58386966437642734c5231664f2f4c485a57646b56624e2b676b5a303462745a7263716d65424e6969636d6d5837384e773837626d38506957336932667563717352547070556d5a785565526e387638413835395031763841494d76782f77424c79717876444d505a7a4e4f7839734c6f752b516265623271666b35536d74526c6e686b73545033744d696e3653514674494a64333264394c5430746c633237552b7658724a586e356c2f6b4a622b536e692f7048356c7a7879484430504770396a787a79542b4843354f505871587664723572777a624672616b7672756e55637246736d4138706e46754e5079696d326a545a4e6f476b79666d6a6a4747697330324d36646f6448514872442b694479476578354a3448794551434a4c4c702b336e7863483942316e4f366646752b4831416d655532783831344e6f663166516d51424878514f6161633353716c374a554c4355756843556b504f394c3457387641316b6c4a68376377563864386474386f3073664b385179764b664b4b36374d39382b62672b4e75304b3653586e6b43356559336a30765061357364437659735065303041644b675362702b6e4d35372b3462322b4e2f3230767a33382b796f3958783338547656546178624735696573387378312b4947467459454371516e756f67736a6c3556514a4a6251526f36667974347a766242654763362b6c536354656f726231462f447a3878765232523233366c666a5a366a654735436349474c337266462b3878656f7a37594f6f306a354c6c6d71584f3634536d657866444a7854424e7a3455702b475359314e4f33434e54644931576d7a746d644d7565746f4957765273374c6e6c30587658624e565538306b69544c2b785549755a4b70372f414a54374f56677237317650637a746746666d4d616d464d7130323651564e3643364e4475665238526e4c64445050665948527074616c784e644f316e784a4a4c414433556d76764c5674742b5569426455524c5a7863797136326336532f6a643334424259766e6139616d66734670344d7334632b59656c315048735a385044373865772b53313066583661456b43566e3730796979794a4e52653069462f61676f534875554e53786f4554497a4f7a6e73353747456136386e6c39676367526371374f786c644f697579694e4435416b4f6332324662567a3251684b736e68377957785a4d346f484e503241594e4932664457657a766a723667656e372b32312b446e696176546646753959504c764e5836335049455878654b526175356c4d7845364576326e34385378597432612f75683964627751482b3770324b4e546a6335756477612b724f376c714f34757836572b456338536f38643245304e6b6c7a6f325a7473624d3957567257534b6c374d7247746779775736706159584141476b446367366e476f50306e6c764c46375a385251336f6635643572344635643544346f47505634353731445771775a47647373783962525644503859353379466d366b534d6d4646714b754e664e596653516c4e535655686138524d6649622b782b545268346d67352b612f6546386d7a5032724f71304a7844594c594c4c6b3170727331373832777879666b2b317a70324b553850745533526e502f41466b4b37307649717262796266577565535079647654695450714950794d6a385a6f74486b464e6c4e625a4d325a7a307a6f6c626d33307152764d354733334a6f7334484944386a504f746a7a2f315a31564d38746e66343534356d616e306d614f2f507638413139444c695459675936504931684f6d58724e62344f6a317347763156725538624d6361525431306a5a535a46592f68682b4d503453655a2b41302b5661486950672f6c6e71652f7948794b2f6268386c3366356456747457734e4f5949655066626168793568314978627a6e436754515a70362b61676668746e573164574a787535525450384165745442344c36462b677670393436372b4738564c7942736d626c592b64544a465a34396a77326a6c536a466e30476e2b4c576b73386c4359744a6f574e4d442b4c336946765a656539706b65614d4630494e376d357a654a6d50347859354e4e32624e503263545954706573443452426361334f372f75492b556b6f68345a45583964333750316b454b4a3375346957595a584a51786843316a757462704a71576c70675a545472553732697a50412b467a35516237532b517666336a7131346333644159636163317a423745437a65336c544a4e44374c3431797a6c4f524c6658316647694b524e334f6358787768772b732f66544833466239333638516f6352734a45726d54556f5a4c32326858646c61756e312f467066664e50312f5038714a522b5a725a6664372b6d786265733976773954667074674a6a57313331374a33706f65436d4445356e784178544764486c4e44615666354430784d6d645766576d6b675a3867416c5944312b54372f634f6d44574b61313679766e444d51397443694775666a71336d7332564e36705074575431724d5348674b3935306d627575456861622b44362f70314754614d386c646a544746645343654a74556863567a7a64497468456e7243574e77696b66627742555a30684a2b79344875446e61382f6e39786938312f4e775855463967474f48526366515261786248544456506e7430612f59756a343069336e44642b6a5470436e346e657a3268735030372b6748656d63616c6e5361524e78644d48574f715356714c796d6e3973374161784a6930667366435559482f6b5a4730672b54492f66754770697157685735664c5a627547566444534c6e54523954684a57777268557a32644876764f4e5a635966466d4c63376432333766384157796c78794778584b3963316c52326e68473868534b5243726f6d77366950342b4f39786638415a534c432b45422b5a7654644d4f67646674424378777931564d47426b4c5366784a397059437338584f3641564832645a2b367a346c38392f77426e702f3466387239344133614e48386331497854327261627a39787a453571616f6a5770685446557754544b4130546d7750635143626c4a2f79483368335038416565764158522b4f57393452346a36342b6c336b486d6d68544c3433682b552b50655231614b4a58554d5250433861754d6f673049327248375435566b78676d784c53396a44414339672f315738586d6c717750613536362b7276686c5870453379446e6b304f6c347a7035376433787a75584e7a505251765279792b2f646b49346478464871697a6451372b55352b39674b66614455424d36326e79394f7474324e767277484c66784c2b34563662656b374e6e783666774479727a587875576a79652f77446c637832564e6b366c6932356e485a75754d655431436366734f4c6b2f4e78535a51612f4b6f42416b48567a6a3057306257347a6261504f4836766562622f714a366f2b6165612b536735336b506c65397336375a337350743033627158644b467453657237557845624c5643665642326449653055712f63366636376156694b56694f7a4936312f326a6679713050414c66495054545631766d375354646e77624f74377873655a372b5672316b4b48504d61326b6247572f536e58596c5458574759384b6c776e2f584e37567052504d50614c364b37566e6b36384f7a7661737558794a7a446e6a4d714561657535756a38306b483868726446593567546b6e326e386f2f476e687a4c2b753733417a7a5a345a7a77774c344471394747436737387a4d6e6d6664315678454f5574653551536148704f47794b6b4c4d76745646514b476a695463734141476b50476664446e782b57324648722b6b6e71543430355a4133796630303879707272506c56326a6f526a6c5a6a713743765843464b38764f59524975524d56412b7979796b4136744a533233302b46717a356a2b644a52774a75305a77527261556c3577535776362f6e6550572b4531306d747763544b524a5a476f666372336770494b4d4f2f76334a396e382f322b7762534d6578616c3866563256314d346c796c5537597a706c2b592b7252664b7775546b52436b4a334c412f59522f2f52446e763665674a74756d524679667039725462334b345061474d6f584978667963726f4b4a6f39587765384c51466739365a696f6b4c5032644c39466e7435764c71456c6d357076457165547932557a506d58396859632b38324d515a6f4743426f2b314d6c59316d5076616f423437354f6b432f332f57676171596f65664b756a69776e706a6a4533745131625a706c43505646524e6f634d574c6c4c5134424c556679657a324a5976684a5351665850392f4341597a446c7454626d5444776d55736e617469626e586f5a5942732f547675643643576a37516d61716b7a3648794b444b6830354130445359644243795a78664157336d71784c6b635431743158794f35314d396e52344239577a6a68396f4d72506a5344394d7576687a634775646c4461675944627a374f39584f4c6e59384f72726849536e443275466871503965304144767348395466304750416b7163616a5a61746f6346776a565250785955684f6e70505346613665797334736c6e776859494d417737376c41722f4141424b4d676145526a786631754e576c686a7969646e614b6570372b2b444951696361777257746e4f2b346848356934737a44707341724a424d2f4e6b3648633975696275635a4c384166654c6b7a4630685376346e64436472753050455250686a384d3343464972424230352f765058674f765839756a2b366c742f6a726e3550704e367a6431647a306e686b326f6645764b387251715a356436647a3677554b735176706158474d38562b30366a6f70596c335a697044363351637344446d396f396e692f4e58746631487150394d665844774831652f384146397a303038303863383679394662465761506a57673678793858794c74446378563043334a7479647a2b576e3246574e6d457a6133367972464f434d3035666e337261764331646f766264334a374d6a5130646f715a736e4c794f4776554b617a4a4235737a374c2f6a6870416e6b4b356245324c45543478516945777a48326d4f657456506b504e392b5a6e35472b5065734871666759666a74454c665437775757764e645267313531454e7a67324a524f7a43734f643774452f7075716e583166777139376d54544a476e69343139756c53613134786d624466483852505461666138577955627650356e4e6c546a33484a30394365583638756a7666794b644c51626e7164644848716550655164446f78687a6e62464e5367792b7567733957324a346352754a366d656934767763657641576c2b4770324e2f36667a50304e384675386b784d6d5a4c47376a7339504e5367352f754b595a66442f414b7230764374337a4f624c6e572b5a7850654f4e4835722b6a74532f54337a4853314c6e3139336354586375544f6a71716230557a5a74344e7679716e786b793464787a6b664d356f734f30776b396c6b48534a58547057784f4a486d5871617066476b33687368446f64746d65714a6a4539555536432b59767344376d43776b71364b2f66376b4c34416c787653622f58642f42362f6d454851467736536b4a53685479667049486957766173454d4a4b4857725838786977574d4a6a413730415761525a332f464a3866782f54314177547a7450463862427a71542f6567516f455a6b73473167746e7566384157506a584a4245746e533450424d5853682b76324865687a514f4b4a5679724a73344f713973795039464a6466387a47424b5038693255766c39797a7059342f3131662b426e2f7a373249426e4b78614a364244356c635238565478374f445863346b65796a52776b4e49543478727949535771476f5344697755524253662f414c5435386757427275656c515572557844726b6e6f755a4e4f42634c71454a644d64632f61584d4a644155663675724d776f4a7a75423133743934397a332b5147736d6f614c4c554a524332563953653072765033324376767942372b6d587953677947722f557752424a443766333151676f423043344e7a3046525058547756326e436c79506870465842465979725763465036367867653475726f3648324666572f774249435076562f57664e38505a396549627572746f7072424c484c70314a57444b4d7276617a764a5968365955634b704b5745586661587968317a53442f41434553487067626b395a4442745a4d345a61417a4f4546746f612f6e586471767235534c2f6c4d652f4b4a6530564f414f2f462f69755a67664b4376382b5772325947636f6d2b70302f533648496d6a7a67473269552b6c52375158324d4854735637754c6f596b514e2f7459423850672f4550533559455a2b67712f7474432b78546b56746876577330467864706a6f49706e4f53462f4b4567785075575046475966572b5167466171434850386e332b346361486571656c7676756a7143635857584f6e654144506377753050525770664b466e31314832564d656b505a31776365416539616855377734346876654344346f2b69596b646a515947646f4d3739615366355063584544484f67527137305441776e4339514e46772f723935675736775462536e6a577a394274666238796c584a30556a453659686a6f736d53444254305a366c4554765a33687867444439725039505150305a7451457a4f486f496e6e72354d35687a646c5a7861443936616775466676686c55797877652f336c376547736a442f414937777339547544745344647871364f633639544550516c4b32786e6e63633875384a66765361724e5931716a6e426676506e516d446e7648732f665a6f476676655765515133505a776d696978532b745837556641773061702f56587743634b374a5134524d4d2f696a347a706b4a39354e6c38584e2f7741662b6734354f456b34716b5a3771695148795869784856724a576e503142307a6750667173393554635437756e2b6d54482f7744525373512f72556275594f4256334b794534735439614c76384d46754a6e5637482f6b5376327769713138644d6c5354516d75723578627834302f476c786735626a34436d63307a4554456438676b76776e532f6c37726d6873614a4f6d58445249355664476256413266577a506c6d63486a704b68534a52693368663466582b5a4d786c79776858786d4d5a376772483659627a716d79566549655152544f44516b434e4765466b44632b73624b5030683955383346364262517063726e51544a37387232632f3642734a4c4d654d426873656b322b7977394265527079717467345132524d6835786c7a4a6875566c4d36366f7a2b694770535049424776374a734f6272473049646c582f414e527672346765587042355556665556593744357a545570325338306f76725539374b537a617a6e4a7273396a5633796f544e53395a4e727a5a6a3758786e4a5a584e3966454569394774574d703774484d6a5649547779335279362b5979796a69394e4e564447747a68454a39424766693044774f55307a71704f626f754f59666c4b64305a32393462332b6e4f6b69716d445377664b6c7a3539655134486c564c426f594d745052696d66494f63542f6d7a3443584f3148796b484b506d44512f393949417845785053516c70654678356d4a506e32796f74687a2b3530306842585956744a63626d56377755506b645632576364313073366b582b7a717a2b7677442b527256756b596379544a5654644a4d382b6c61774a4d7930737a553747666243772b354c395a6855765779566736455a54706d52786a6a644739706c4f446d5041544434393375505453764c427279717a752f5970434630755163327379396e52727a4639665048456d6a4c556256676d623437786335667966704e51664d7a483271675a4b75647778584a3648454c534648452f48546f54644f694b445053577864587957366b754d6d36596c7054742f7742557a714567425445687a67624e476a6c2b686c795471664b2f687059574d6c73624b50756148384f535933516848593958765a5238435841376e756b502f442b675a4469753867497a3044426a5248496e735958306f57306155306447324d5a6e706a37506d6f3048556f4c3343516579427a4f2b78496847494e73334b767a454d6d7068714f3171694f43314e4b6e4d736e6b6f31794d507033324733536f6b716f71424b5a584739726e524d4e494237417064517872774e614b4d36486f355545744e6971657a637146654a5879477a6e7879342f59784f644958626a6c4831556f78712b4e464a69662f41476154416a6f6f5a6d6e627946316a323666576e4c7a6f3931724d692f6a33514a646e50736e414c765a4b794f51574b364270354d6b7a5971644d63437769714f4e6b5852382b68704a6e397863374d4e4657626e576a715a6a344a6f707132754b444e6c444e316e544a6538772b344a2f59536f464a3462414d6d7552542f6b38537177555a75726f4f4c536c735045592b695a7643616c476b747a6f4773685a55765034614a6d484f6b4b6846796763723679412b395252616d467770484f586f456d574d6e664535687976673074456c51443768372f4e476b6c7634723966576a455457314c3348326377584d59415559315342454e5a43726c45495469636d587079706f69336e35787556524861357930386c536e337471636b6e584e414f43326b436564306734684b786d5545586230614772373335747056764f716c78542b327843516a2f4149566b625643416d366d4b614f735253394b5145416b7930707973334f6d653564666b475a37427672662b314c683063574273534b4f61466a3275667a354b69344d334a356b67592b38775a53723967357a536f6a727a3537387653576d75686c557a48647963366c69732b647862532f342b504c624647773832676d6a50532f363574796e646361572b33394175652f6d38715459612f686c6b4b47475339636f5541624e48455a5056447030544f556b6b6c4b795034462f572b543562374747644466713870427671615832577875716b6b632f4c6c517169674a542b3368557365725965624f35362b6c754f376f4c3967726456773342544e78334a33334e65344461745664665648713763326b394b41357068464c327276645872587561304558734564705a7332644a776a536744556a3566724639623666503641445969696948694f334d76533543477237654f596c4339564346325a394b5949357a4c5174372f41434652474377756e5a4842376b726d353261645953646b733636554d712f6d655265384e6c4978364750596f3474667673765841684e696b486e6e7654786a397357504f6734506e4d2f6c595a69444f724e556564565379656a736a636e4a75417448506e6a67706e57704b4f364276316b735337354353585456374f754f54366f683866384175416746555a2b69374e7a716b49707275426a5a715a6d6648704a754c744c4d2b6a515735745478716479794f58394162306539626d4a73576337567445494e71506163484b465171354b6d535a7854696a54623757773039654e484a50716b6443784f6968704f513978544b4e494a6350794f5a2f51586c2b4b62564b3966505464377175625239334b3352724d4b383164326a63786c6f4c7a53336b6365516a526173537563763268395a7446426773486d796d70324c66496534482b33625a70572b416145615934365479664f6555516651704f6d546d673151366d5964483034786237314a572f355472496b6f3969414d666b51316b486e6176626e3133794f73725a4b4c5a46555079744d6d63524c31334d356a496f393373734d6959395a3131303771593430694f676a69614f724d306e3869706f784d472f317868486178504f5473514e4555594a546f3375543069464c61774b68314448616266764b4b564b6c5861444a4743553668396c35302b796a346e424d544554786a4d426c4e347a50466e335664386d30346d7a3058363842642b706f484a484b6f5779364c50744f3738316e526f53415037524c37776a6d6e61372f414f693679643976455133513865386754506462647a6331586b67453149796f36754b305a494e647a6a6e6e304a7a3561366a74477844317265534f4a434e6872552f5a706a4a6172627137736a445079493737645161436d535757335a6164343644625976486b56556a524b575957706e766e6e6f6e46336b6b2f465047564c30786b7a697663416b2b4a74614f7344504c7966474631366c2b687a4f4a746e314365486a664842516c65717246362b6b464a6e667a50596c31544f632b4a4c7161427a584d515876352f706d323736425a62635757726a563565666e336c7251322f627271313745496e6f6e4a4b6b71665356614a624f3533593268316b776f4d2f39767a46537162344837543167474a3678626e5235334f4353306e6c6e50582b386c6b34665342303853477a3539584f564d47353378705935487964626d72624f6f5065342f367a4265654b6c6c41736456506776727a374f416a49576443394d436e2f4149366e6a4b756146423948326b68592f5861384a6c307a4b633251546277776636695832366b4d51554b4e6e4367727a3651305a4b484f68316d435769315543382b6e725062397971646654734b565345453367384c345639747535646f5178784c2b516c54714e7056586f4b594579436c523058452f69382b614769353544525549357678395a795871656b366b6a46664353435a6f746a504c30446c663332714e6a4976725433547766704647546930555633466c46374a336f70754b316b7444484a4d4a71424f736b336b354a646145375a3442664f5456507730794f79426c624d367472727a30547048434765776a366b754c556b6c38715859494e736f37784c51634b6c436f4a755441454754476c30567877765a7149617951787a2b393549694f666756563155492b5832544638764f4f515079674b686265424f5a3732634b61334e627a7742694970656469666f374f4a48546f6a507a697332344935566a786448764a6e317031397a36507233632f584c6c3253435365746e46587a44796d4f2f6c7950744c736565724e30706c706a52327864414f6d7930534f44514b4847524e624553636e6e4c49786463366a6e32454b5a796e532b5834654f2b454b5a6a64504c45676e44624a714c5a6b3037515861694a5932576e4f5079672f676a4254686552517a4935796a516e5053714c74464649684e372f714a516c51675a706a6a57664d412f4b3674463048546668614c7a4c595a38713870626149566442445241487468554644712b5539304f69587536763432384a2f37705a33764a35656e587a3964776359586552325250505471706e392b516c756a5174382b536e4d4e7631364d527a3144637555694c506a562b2b752b47696c772f43416f465578723971524a57767a456f3748545a334c72436555304d7a35366b6142546152756c543834767975426a796b5241626c39342b5934306d553365542b38366169535a61412b614c66786f2b63544b726e76752b4a6c63356f4e4134737135714630556346667a542b7a704d63464a6d4830316e2f476f396a4a36634a3767687264664c385770334e6e666f49456e646e754c7339767362544c44636d3652636a43536d67574d6251514a4175454336695343334148395148647a644e7936474d7537394351704f632b466459564d427a6c796453726b4f38513352797a3055423747386e5131346e397062672b4e7842483957374e393139614e4b5677524f6a7a4573667a5672346b5a394b464654584369786c6e466e486374546e30552f774341774b5454377a4744366f5637513352763172474e3061546a6a7867624d3779465751757a6d537870576d61394246334669796d4f796f695762703656774166457a4b6166772f315047732b5962614d38665663465778512b444c4a5061306371586c35624c342b2f76374c6151334f4d6b55435a5245566b6231792f544b6c536c6659355365347a31744e4c71717172484d6c7057794a764e426b5a614c74484f4c514872626f5535575739643265587457754b674f4e2b47715a516d376e614f30305a36666542396c52324a7443626b5655766532644766794b6c43725535366c726d5975542b50744d79716a6c5a505479735733336c773643702b4e79776b626f49743544626e4e306f335852654f5279306d736635732b4b366a6d5531784d706861477953456e4f36646d75326c4853556f496e45464370304f464d646131322f4f517a74304f614d306e61645050566a6f5a77585670636e536e744f6a794a664c305673766f5a55367150636f7a61466f45484e53336b682f744b652f77444c68575049544c78384e473669374d5831595434744e6e66612b624d3152784761364b484e69566d446c69354b3133445934333648616e4e346453577954554e446e3956744663627575526c477357626d4b2b79717052305a317a7170715a706446555241632b567a537a7434684764626577674e7648427833567571582f3066396e4a616e3776313469784b577a38386435444e4e35464c3866464b573130732b614130794e6f7a5755584b736f577937365930512f5a455144355178796f556778374f706c4d38637a78454652312b6673572f594b753533654f79775165667347394968584c476c793155357632624852704554597a6a70334b2b5a613530676269624c754f626e3931327a4d673941664c2b5734564446616e69766c4f524e776d4d4f58504457776c77364e59534856482f41414f73786d6f4d684c6f454150743677443451726d542f414662516a6d70356352345470346b43745855565a70556f744a6d5a376147796f6f6b5273454335646667334e472b344a34347147506f3634616541446d554e6a6770442b76574475544e513132634f645066336a767149356d4a69657545562f7741786b6b523748415a2b353838684b4755334b71506a553435725733706e39716b48714f3655373947466b303333574c765a643866614c343655544e7a3630644c4d4c4e466b62494c696c544a6f64527879767263596f3663314a456b487a75565a57485957623957585266446c72447333626b4a7a434f584e4a3945367a456c78346642794254386871414b53645451696b3339434d4149366b2b786252613266516a796d413357756c6972366e492b783438374a494a3539546d6a724955754639456565444b472f4d772b7a644e78544771544d6b434a5379303945354a39616158782f5a374f7653473870325661417978417a6f332b354c44792f315a594b50394332554b4f32583576672f77446451456b304c34354d32646e5242656e69564f725431437145594f7174466b3470355054644c37475376495a2b4d614642306e4d512b795a2f31412b6d41654e694e74616b453357756e6f543845576e3548786f386f375052395378696e4a6f71505064517776717334524a36494a53357458364e596d446e51517551587054624b327551614e4f6b69577365616d677a7166356865525675315238306d4945736d696f52555a6763417370367469686f5947564f784c43766b617a7a677877432b6153737a4f44536d6b436863597846567375357a69614e71473475735a4e52635650764f5a4248337255677a675867315a55756d452f6274664d313731636d37566b5636504c4b74534744344a44355a4c545537356e52726371736963704d784f622f414e5935307544367457686872536d5977717830485433696e3232442f4b537a437a4c6169572b684d764e535835686e43744b702b7a68396237523956596e73774f766d4d4c582f41427a6241784f7452335152565466564d3456664751614d623134454e386361425837716d75392f654a6279524f5574716a6352694c7752624e33737232396d375a556b364d766157326b73332b515358535262704e432b684437503871452f433577384d656d5666433635546745472b6868536244333938567257464b716b337776375371424b383957642b71744f6e45637837736d48713535584b435a563377684d72324f5253435a6e524d784857516c334f70586a6e503841543144735869664871393631544e57624f6c7a782f6d766734517a715a7246522f48385677756a30494463345a556b414c5249576f52555761655a6d3870486d56764c6b755a48726f3433374b74456c785256364b374f39716f6d2f6b70566f366b776e53656651426f464b693659493843734c673164504f506a54706a56494d63444f31702b3467637a6a3038374f584d656675676d55577036536e5463734250763979314f6d427565566f7359452b795847614956316f6c357164326a6b57765643745849383661684b564663367250306c4b4d414872675448425943525854475154664f78726c36536553324c426d686f515651754b527733557a3044714979633575794172666149574a5831765673636f4272396b4e4d507a4b4a6b546a764572386378664957497a6258726c324557557a57695367376f31775a375049644c714e4756425a6f4557777a5378395273333734396f6a4d314667642b494173692f5a6b537162774c5850565234356e5a38366e6679644c65364e70364e4b6b7771526c3643375651674b2b7530412b6a5130483939334458704a6e57783365444d646433785938684d385830304f6278336d626c50437439695a595a4c77593131625476746e56564c532b5853657a2f4142453650324844613564586a54654775663379434562357a6e753842634576346f2b71486b6b434b504750726b2f6b34366567504d694557716d697a374f676859497a58643070355952304b526a45557a4f4339487a66594935674b736173563454786b584a692f6850356a4a566d4a76794c764d696f746b7a724d6a4e34325a6b397649617551733863566e5a366832424b56796552744c696176686d6d2f7742676a4d4150724f7248384d437850472f3766336c4845366856346e2f71626136742b4b5a516f56744c346a56686f57376b30756f397a50487959756771513476374c485154702b515a456a476d7474614f2b6550386864732f344e4375505772737a4950476b2f78796b504367446f5531616d4a627051332f4143576344596e374f36575a4e4567477639616f665a4b6872514f765033336a7a534d35767779385936396a796a674e726a62506b342b4d68536c4e724655566e6263436337685a39466454426c6a6763775070686657677a483433536c626650684144442b476e674d755a4f6d4c37744e4c467670556c64366553625774774979627a3374735556444446772f45736c6c394f747a61652b305a693474766e776746782f456e302f52532f556f78574b36436159325772543946383155616d79446f634a53513767714a546847706e53435a77424f776c783967674d572b664341746a2b67507037426e557662346e545738356a6b6d6c4e4b622b7130637653714c74436446454169533149617746435045502f774476676f655745627137356e7645357866783539496d4572526d6a796e36583065636a2b34644b373254667a4231766d4f684c4f4c723047616a69375167755045777035784e414c4d30386e64627847537678663841534f3964623673374a4e6e4b4768426c436e4767422b367a512b6978756473514f51747a52536c6838435147636d2f6d486b6c715666476245337448484f63426c35442b436e7074627061487979596445703559304769324a5277743754306f446874544a5232724e5073377339445a564e2b5a335066535877744d364b4972717a49715879372b33333467476254747833756e705448464d756258765257684754634d72435250564c555a7a2f764e707358306248735a576e3465304a545335484f327272543354772f6b4e59392f3841764a7648733631474474784734424e645776705967625439413765585a56574e42747a66526f626f54772f566131465078306769564b68412f395148704772453972703638427239766667723531434e4c455a78647032484e68644334507233346c7675546b6f792b544f7337316d6371577959354b667570644f6b50726853364d564850654e615058415550732f6a763574342b69697251695a3843506a70707041313631364f386e5a6e614142536673364e4b31376d504f744c484a644c48385a2f346b333333336a556952365250374a73376358304a395a72447978336d302b7045454f6c64494f6b454b4c4d2f4a52454a337a335a5077556153353555387a6e67326e3677586e3870784a523870385874486172386833442b536e37793853334255354c52744b37503433794f6d6e5954432b585374626f50626a304251582f702b616e767a2f5436536b67596e436f3167664f42486c574658736331734667356931624e374d764979377566444a6a7a71436875564c7a503253466773626c325541323369656c4771384a47792f417a34546a45526d656d5278372f4a762b782f2b4f76726836683766726e36672b7133714c3464342f4e3436796a613866384147732f4a54694470515a753152744e6a76314236454e6e615745376a7a6d6d345830506841474963596e30553971765376753631334478502b744d66684744355635506e2b6c6a6261504168383132662f44366443734837564f4e4b3268474c7262346a4b7a6939413856792b73345078436c7070506f45496441765470756d4d3336344662592b43757038647444474247426f557443447554393070616953786f4f70533151774149304366654159715758506574514f582b7262766878355a456e4f68726e7a784c485a546d777a43734f5a52303634356c48415575306d5755733578673973484d4a67723537695544682f77503458446d4a356d515a6d542b724f556156316570535435685232634d364e75573072737256655061685979774673532f684531626d3177484b4e42714d352b675577463258555a583874555970614e725149526c73716b70576a3948372b2f5948692b466d75576245324c446e6673683748453172524e38684b727076474d765050765a6c4d6d594e442b4955544b4d346f38714d4954435731476f70724d6e3548455857557439303857776b766d2b3679706842576554697973656d593035746e426b576557324c5163716d31775531633671624f6953336d656b6452664159633670566e373557756e452b73424942694f4645576c6d73346663676e6455336f4750656343674e53687048582f77427a7370637a307250724f714a7665544e636c4c314b4e4b35357530425961423056787a6e503851536457766e6675684c4b697870574d2b6b747633476359345846524b6a3966497366383166362b4348467747766178304366465653786d5971615a45424a656257797a71654c50745a6e787242366370756579565051554c7630446c4a3737362f39673234316b512f71584f30656b6c64445a314744644237364c476c775576467176305173377a6863575038417035316e7635375064336e73396e76302b4436666f4536324b4d7a6579666f694375414b474f6644503334336b38566434556f4558767a574a583339474c466659412b642b48706e2f53765a674969457969494839366a3475304849786f473950794a34544a796a353861425437725038753834516958624f2b77662f654a32437a6c4d4f39436770393642426a4a2b667376332f73583970684f30452f4f5243776c2f4f486665346547596e2f77596441712f4439425a50707034314e71626542354235466d36506b6668552b6c6850386c7a6f694b4c523163524f31507a796a4e7a614a7036445778773641675435772b5356746e534468484d505731766247596a6862312f775057642b4c2f39366a306a395336764366773839422f7873386839497358587a6d65432b6e34692f6c6b575772366a4a5933557679456e524f54452f634a72626a6f5a47663764506f6e7973314235312f5a625633616c3954644137642b6d666e4c46636978395a5735466f50336535314e66494b3452704132525946644f5a506d2b50754861304a325430557163314d396968334a3532482b783636336b6e76774a426f2b52377246427070716b56644577502b6870352b6c56714f573356314d4c6c4d4f4d575079704f612f4c586f49557a71644f343536524d796e51703146415664354a352b484d48627237727272757078373545426e495a444f7839384777484d76496e7377324b3867304173646e6d316b3466396b4865383263706c434269497a4f504563317650764d504b664c5a4c62506932744c5232306b6c4a4e753163637a5979766b477178626d6c437a57584d6c6b6646393453714a6c66716877414b69545a7645524843425a5868766a306d7a784e737459647a4c73334d724d394d4d675638626c6174456a61565a6c66384148747532437a646964713274354931457155384f696c787555615a69497a497675337972506d7843342f53472b6a7677644c4b584c4d2b466c57627a50427569366c30764a366e574a716a396e543936654448534e5357302f647a79793257384254666b3372466a3930487a46356b462b676b6c5a7a766d4e4d325a2f47563244464a336679383753396b437978366d6539514d702b79722f676743707563707573556e76706a376950614871586d36646b4877742b477169625073307835506d504f3171464430413174646b334945754f464e41735155344f4e577151383453574162354671356e6c30556445354a796c58307530644644616e5835333832755361356159436a7a3838556678376c3564567038696a3670633833736e534433646e6346646c6641626c6667446e612b72357436672b56622b746f3533462b445a754c3347676a58466d374f6a70326b70777851616b4a4b75594d6364546e39585078675652557a7a4348453042546a72644b7848634f7265706e4d6d58445178386f61434e41674761376c434d674b712b564c6f4f6d6c6636445130484432465267745877394f6237696166734f53612b6356763669787874713848624a394e6d766e6554594e71725873696d5765676a62485030624b464c59336b4c4f5a5033467437553046454d616669514e4d7956315770326f463858346b647a7134496c426e334b64624b4c3839694548544764445636456a6b48443861303151726c573179312f35766443414541544b6f4f6f69316d5858505963562b62306b496e6255336d55694757573075505a4b437149514c347248423059666b4871307a642b344944523833754277454950484d54517248507931476e4967716533374c4857303937543371647175535a41734a3330614a624a334d5368334470505362386f664543576b44427670444a5153506e52524d617672472b7433467270637a4c504c6b644d743355675731484a4b4c6d4c426c44686152384434715a766d6c4141757036573638767731542b57636248772f72744b395770664a7051574f755472534659746965445a533930706e53454367635a39704f652b57595170746d763466754f51507244697538663841566e314d6a324770356642644e4d32354e76322b2f77415a41314f6758324874544c51747756546a7756644c75642b2f49512b5a793055652f753054757258784775506e6e6b4e6d68683672494f75714a73524b7a6f716775746b634b4d4f5850584c396d5a5061506b45664852755a45314e6676726a53587a55665a3456313652786e7948504c77624a5a2b526635692b6976685658313750483566504d627976793379684e4c4e476d767837774c79417171556246505070576431506d7934324d44367270713361546e5552795267326f7569593261647265754937722f414a4259506a46507035366a4a3273634e6d4f62302b38772f6a6b536e33795855386f545a34645a547535486b6750597933794c34736e5079367338356e676e364153685348744a584e506b704d377134363773442b5a5871464e6f57504b4f69644b6e306d45536852476d6639412f3470356e6849742f4a6846624745536865617633372f684d76635a4b393675636333554a3961585a716c7a414b7172506d2f38416f424a6331386e4654736c577361452f4d50326d4f6c346f503137752f7346467a324548747343626c537a6351532b39535764792b516b4e543231586277635436416c3970414358482f302b47414d62372f6d4b632f3041742f514f4a466d453863787a797974764d32495831634562584b596866795531526f715830693664435643416530477039702f384142742f6f47537a4d594a33766d75736d6177754a4d4e466e464838374741705853613739743930544254385847415a6578504257333963502b732f336e7277436c70484e50415545725631555470645251316768305269396f75364b2b6670626849614c756b426a2f6d30792f31393934422f564b347a7a6441784651424c7a74697955626d4d644764487849356f74665572686371346e535366753479656850534c76744432632f5a6878774c4c634969426f46694975386b6f5755664a315766556d6334684834352b71437049504833643435693241494742474c3342503777346364334e6766576a3966356169436f4b434d70314a6a354d69492f634865743643335467564b542b455349307237333954633658743967664934646e79416b35312f356f6e6d72437668434943767265643551565a416c41735a31524d4a7372762f6f39454439762f48732f312b7a2b6e64784678656d574531327a48354e566b45334a3865304d7538356a58514339634935624b354579664f504259484577763577454362766137717665514f39353533744d7a4d643044622f53306b597955507a71377669386b6f43366d61514c4736342f7656594b3434387538654b7a792f31653478344e3543556256484566796e47756e587a46502b72563175563461794b4a386b7139612b526467676a3661424b654a784d584a4641787148733750646e6f6f2b536744396e754f594b7675574e4258457a4866456a56795a466248685166763730754751714c767a644c73564a4c53584f6a2f696c61785852772b6a38496755772f43536b68303136616e635069554853564c76674e737236524250476d6a506652797877703671646e61492f394c4743504747526d582f634d67536f6e306c2f57676544584c6378784e686e5853766c4c4e4256416c5352797a794c4e6c68506c46524248784c6b6a3050616f415759657964705438396d664e587078674d62464e5771696c6c45506267503467416d2f494d337854436d62334343544a656b4e31592b396a576950432b4c396334675445464f3858372b4b33706a746572507256346a6872666e775165504d733872386e304e5679477859486a4f44702f5a764c5257424341724670447a3246772f61626961383079692f7134314c52576c70676431665372667a6645664c7466466433436b696a3233624d65673378623775766a765670314e3574706c6f6f7136782f77414b5a624b576a644933733572442f6f7a4c4834754b305a6a7a4853334b32743861555453613936516d71794c4e6d75697a6b58757a642f4e7763396b366c31536d716a51707178324c3632744166446638526456776c756d56694e4650586e79564943475156716c352b64384845615439585a316462503439355136466f622b494a6d764e692f62703149536658644b6c354d4e765576695670534f2f784656656d666e76384e6d36564a5676524c547561656e4e426f53596c4676494e544830744a427772722b59634d67773830756e4e663149752b5a704847745032416f764d5a6a417072386f5056324758774f384e494b416458437a4450474e55757457704b585a354e6f342f726d4f7837434c75656b58434d4645375a655466586155625343314b786e45644f6f35302b4f6554796a7555434448373853434f6275524c6e68582f492f544769654c714437716330435a7a3365304f69482b6c707555304843377074326d4d784d6549756e50592f30666c52627676376235513348466d583478746f683632584b6f7a386d68512f796c7a4b6534656c79786c314f636d68457771437873596d644c5066525763586a68505147735031547064356c467262384e743044664a754d387272665575634a55554f6a3852704c7431454e695a32637a574566444d6f3651393643465359356d2f7742524e4f4844715053722b4f736a742f7a7a7839533559646a466d7863354b4d693751517a4c534756426a7853685463655878564770554f785a2b313946704537592b4d4577665462596e6874325a48566e3038557948497039325a4c6c6f59756a6d633055574f5a727170702b4733684233504a56552f38416c6a6f7435324b69535657626e673572657974634f4954395150492f46325451446b4b692f686f466c5074484a624e626e3352496d484c74646a3632643757554a46586b444933392f61614b557755494a56444a36526d44564463306b656555574d6b7434575967396572556d3866513561757939634a5161417931564d6e6444574c462f747a4a447044763265357839536d35517a4e5a6a714e502f7741676e636c776d4c504478646b7534533833363454543054716a7544426b784c6b77396d5569787a4a4e4b685133542f616d53334e7437395177506c4c656d6e616761732f326d6654505032503769667146755a336971395966466643485050794c78334b362f7741663857627536486a364e5463303436715063753672495a522b767255382b466a6a73516e2b514351395766614a32364e5237466f66462f464f32353145324f4461677a354c43304b366164424b4d2f4f4e3064477a6d63745953374c6c7147746c4a2f5349714170363167724d4866767a637a34794a33426954497374623551644e442b3945446e5451744d7a705130377561623731723147642b53645a56665959747968576333614451533165394d43594b795a732b4c2b4b34716f6c4e6e7a51666e686163434553706f6e2b763841634f72502b54326b7650384173632b5469676a516c6a466e522f706e424d35342b496264672b5654705a4f746130545849337472726b503679623661375065513534437450525a43755270745450784c6a5361526e61336c59664a2f46615032725731445853376e794e356b3974744f504d427955726f316f434f79685636794a4537686c55487848496e39684d42694332426b65624c4b4a70516d6c456835316c7a7937584a6e67366b2f74413677306f7136724a54554632616e2f6973572f5573397766574a6a666b424d4c59354c55574c37576456576a61355774546e6c536a356570414b50754c2b35385576775655526b3041425938624d6e33544e364c585442427648744c58386e676b746e62662f414371647a794750375a35767a35534146777367647a6e61676239634a644f7a35567571342b56394c75423171554773356d4d544d6463446e4e2b63616464656c36652b5138484c6f794d752f516b2b617565546c682f78616364547664354a51345034372f7231464e5863446e4e6d4950695548734a5375376150783137787a48385633695871333575567170304d53486b6e47336550375a584e3735424c70796c4f41353064784e7979666f4455744d394242583966457171616849437a6e39644673596e5051624f2b4d3563694c575762436339574a6773736972783157304a766d664e697862526b764f68693653644b642f74735034723147584c3275542b76724a617647635a6e4851596b3531335732576167754c496f7872444d746568576c4d366273637566704f6f4778726c79527058715339726f46567a4c5a654438317477702b614155794e5444796446437337527557686d696c6e767a614a4336644a3569467265303947357171426a6f73536d7030364b526d525a3333384274366f686d617a48574272687559415665556470422b5872545a73574976394a59392f4c3561755a4f645835534e6d70554c733051424d2f784c6a71496673524e4578544e38724861316e6c7a34446a643635654f5137766d477872317935565538506d7563586b384d6f73624448394a4e57645147727957674e436a574a556153596e346e504176662b7130787173714c70726d4b34794f5a5871702b5a396865554e3865384238646b6e38653864355442626238316266356b70324c6756526d506c5933734f6741786b754e2f482f414b66784a6734616161437454725854345a6e3468592f34382b742f6746522b63373948654e6e6a384770763166457072733658792f514c50374c796d615675546d693351467939476377374d7a6e6166682b47766c594a59306c36326a62417258622f414348386d2f4a447a696e4b6c38597579736e52316f2b546f7a543270315a75665555754d6d76596c794b415053326269544b7239544b553739413555716563724d416e5a464934332f6b4f6d586f762b4b39327559345a5a7a6e2f41414a436a5765326339545856554b6d6438706e6b4764493973314536582b4d7a4b6c4a4f673831796d544f414b576c68612b4a34385a48557230332f452f4b776f637a704a6f7a64506f446d6e717a5a3664474854344e4761634954766a6348517964502b4a6e50342b68384356776657636d6c4f6e7a34734c366e316d425a73507042626d6265466d313675385765744d73762f6b38796138757a6469567162576c4d6e783358347a67716f625a39646b31466a584853364d794a7950323561613734784d39384334714b572b44505a6e456d6d4537734f79542b527a635744577a4959483235364873484e795957587a54396f6f4a616c76683972763333724343763679305a3862543569767376586a3772356d55682b52624e336d3271614563787a714b48616568594e6a5a5a45514e68304a774b6935484d79663436536447564d77736f4248796137597a753778536c7266472f54746b506775356d31582b6b50717a726147664e4635524c6e612b6a346e7361456d6c68353246596d50575337533859303536424b657a7450335a4b2f6a4d7146472f2f54504733474f4e716a796e2f6d7a2b4b656a2b4c50716e5a343946614f3336652b5630553750672b354a55756c4334525650557a78307446464365566232644f79645649732f7a6f6453332f7270535a736436476c716538726d493578706159735069565336736b62576474475a5051597a4f686d4b4f6635454b7346497568654c50734c486a444e724f2f737a554a394768306778347a355074346c6a44544c44797671645437345036376f744a6a2f6e6a30364336505452556c563954666438594f58374f2b34666c65616a76614b7a325a346831666f783243357647556c4e302b7a33542f45435932424e3866734a504f7341632b4d4754306446514c6348667354676b50616e714a36645049433679434a793433784c7a4632487a71347851504b7544307638413036664f6f766a5878624f734b72347a42375a316a2b75386358733641677154526e4e5458693564413063496b767155706638416f4b6430314e797849752f59637432583368635344752f5736417055346e4f3444724f326b5a686c6278635046723754784e41633450616b7757443756364858554c44576e4c4a63536b4b53507661445852677850764b4d4a694a6e6f48737863734c6d6e327545717077344c4a55777a5276343370736d726375755666436f466458666c53312f50724f4b5a615767316e533750414137636864634c685a3078696578506634687270542b4f61525a47767362763951792f4b7a3963425a4143773978706e4648745371316262666c4937732f324d66577a2b493875395866534564616a4a75386c7a59764e50426e3048316c56316553774d72636a677945752b4a6e7a3437435076374276366433726a4b7049736a6f35666136634b322f6d5057526d2b5a656c766d4562635772783845654b61386d356a37383333314650725a6d7a342b3641547a466f456b5a3658597447704e787165485237352f6854396f33614377344d5445525051667a39507a302f466e794c385150796739566653426b4e7558347a4874583766702f335558573275337758553058575a4d495047366f4b4c59694653544c745a74416f4f6d366f7942522f774265786f366b616d6e573064723468703032557735484e5a4c37307153774847437166684266557045316752462b695a7773386d393673424c39706172696c4748395839353541744c2b316d7a73724f2f63624b5a53314e716a484e2b506c64466e5848777567306e455032304e583850324245324a2f77435031786861444d2b4e6c4c4b30717146725753684a37656f51687935584f49576759384c7250717147685938616e336d4c652f43502b3559454f66476438657658414e4c77495975485334374f31496a5663756132516c396c6e614b704b346147786e32696a35535a7a765644523370662f566933334a6d616665472f436d6c56547a6a2b5546554a683256304c72314d374d306a424430644c684d4c3954735068384c6f67616563486e6541342f363043452f5275545a514d364a476538686e564b6e69526c53516c705446433531494b6e2f596b4c444c764647507768377638434a5a787772412b55635a4f67446f625174544f6a6161672f322b356f784d45335575373866574639643034632b4a5077393935696673506e754f51736c6c66467646624652653569796d6d6d76554c4f63346f51507455526a386c684650562f38415145506d35386673354d58666343676b574c3476763337632f6a32486873332f41434c5a316552785a4f517162633262644768676c4c324b4f647a536830486b7a3445394551496a44336770712b6b49556d6137643078314870542f414c662f41505950395176555754783331552f4b325856384f384c31466156737670504c3964766b757769464b4c61502f4d7577366932344750655453344b506a6e7242774e50376b66774a41754457397269764c70787574346a32442b6c2f70703466364c6543346e6948686e6a7365563464346e542f414233692b663430706c6b6d624a443132682b3531366c6a676a4765636150694e624436766b7a377a4a62366142353531707471546d6545436337336b54465a50427a396454494f7267326c365074584a716c447748476763766b684d4e32623766343861754e374e2f6e38505336686f4447556166654b4b38793839564f4b7969315177733233496e675432525231334c6377374b497162576e4b777846582f5670665731546249352f6b477969415739704f38524552694278552f4e482b353736512b6746463631614b2f4f2f4b434a5a3575624c7552614776343971426d73374174714157763670424c754c5779355138535142424a503263506c372f414630615768612f355235416679452f4b4831692f4a6e794e766b666e576c5975514b394663486a2b6142354f56506d66494a6358394b52613136546575306e485754322f77436641393570536b534550547070557047324a4648664847466c4b6f454e6f3670507535612f34786b664a435a526d555a4f6f365935713731735a306c385954574a4e6b7a674d666a625559734262763543427a56766a3543765157594e54387562534d66747458796669566d776b30722f414751734d50722f41505771415059776762702b663766594e4471623161544654365751365358676d3172357549597079554149736648336b3748694b2b6b42304277474a4568553334515a334d64462f7743336c2b4247782b59666e64656435587146344e364a2b4d555a326e366a3778507158525761362f6e7a2f474d5462764c73713970733475397a584e466378325268516b7a716a4561613274476e4759353766435065372b4d5034612f6a4a2b4f486a666a324c2b507670643474345161386f4a6e626c3831392f71447173717836637951462b57362f79303651767a63326872584b4f4f51314a6c64384c702f2f414b58387132706538326d3974332f694e32306432333863683262594f6c544d7675484e7a52347041793572736e4c7454334b544f4c70534a5534742b71443666683537772f334430512f72486b382f7347476b4639505a38665046645754795361366536576962516c75705737543436626756724a754b507945766a41372b676d62394641437157666e32366a7a702f7742776a2b303736542f6b4c6d37336b76672f6a47423654657263326675727766493872486f7738587a6d794f6b6c686a37574c30465472577a556355333266734a483572425069705a6a304b47392b6a37524e4a78504e55654f543154394c76564c3052395269384439542f47377362796d6537346b79364d73484a61382f506c637362737937426e644a5a6d6b73666177354c4f435167506543532f2b61505172617436784e524c6678792f4233386750793273387979765244774451386f7538487762504c504a6e75626c2b48356a5a732f3278522b4a795857554c6c62765736544a5a705a68496158744e7a754c424247332b707671307078746274657477314b315048392f786257304d6a793745706d32736d353839654c716f746a5a43354e44766e6c636968596b587466525a372f3841412f623849642f2b46307a58746d4a7a4e654d697a665154446e325057547748476c52555139386b68307945446d6d6f36764f725935486557557874516b7674437064446a58325a4c5149772b4e412f734d377a79336d4f455350617a2b4f577332544878714856597a41396d68526579624c5555753874496936786d6c4234387a69504a4256704f64584b376730574e6d64522f702f644f6358664d76575a6959373448516e78314232366d6871795634325279625a6d52335373746b6447796664706f4d7158323343757169666d6664516a4c74637741364e2f4854434230645850674e6150574c437338487537767075354b6f2f494d393233566c356b317236597530355975313061593564636c435247684b2b4e30577650746b71686d5431674b6b54705363784e5a3643666545625261452b62586a374c58487962503364484c6d5443554d754c6c4b6f44532b5745553057354e51326248734146445645726e736f6258576877334457305448586a6b5533366c2b653530576673512b5049386c304e506a63614f76464f46644e475854396570306a69687a3072624e6d6e3542724b58376c71705959596c43727a347a345443396159347a484563722f5846552f6933704e352f6a36525562586e633265473348747a5462612b59334b37646a487173356f596c776c6f547a4a4c3379765368512f5770625363687355526e3055343272694f5163322f5372774c7976797a4e62366a34537968637651727a35716c65514e774e5449757a6b5661586b6576566c59734c79546c5458315331532f4c396c50757451414f637035716a326d30547774485155682b66587258366f2b704e66703136512b6165574f386c6c394c56362b33686e666d79784d7a37504970635474634b585a4b313863585034576357733976794b2b6748506855396c39466c39474b5533576a34687a376b44766571584a5448506e3038342f71757059772f6b6d792f634a4e524f746a5032706a6c394556384e7254664f76704e61587942314158533174532b4d657375423169337a4a4359465a4b7957497349457259735468796b3863774a322f4c385a385330505a37444d2b556d4a7232597a6b4577594e44575a5842624d6c4e436c4c617039783038343679796954734b656c7a34716c3646424f503345482b305063745167667347507a2f41472b772b385a55792b666e56766d436a34773454666e6456574b61506b443232574a5a78636f6148744e306f67492f71596c4a4169632f674f477a313139665949504c70416f624c587930387151394a3873646f53777a316d3478665431424d4f6f65576b6b754e4a6c42732f3841637634756d667776345072366b5970714761643564376d33644746376e413569484c547a39443173535450392f4456306d57447a684c49577470557633477775674c627a6558555932554b586e567061396e653068386f7a326d463131496a397159446e755437414b70582b4a65332f41442f594f392f5865382f59623935363841356d66776d5057616a466965554b6630654558564973637438592f4457776c5475355077762b566434483639352b2f6f67587630446c6836464347684439674143696361466753576a504d2f676b2f6c50416e37325035506853524d4a6931386448777a4d50694637734b37633877534b3530584c5639532f354a722f655a554d34396e462f4863483658537632386c574d6a683674616c6e2b76396e46695469426e3954465a743037676b4c44595939584a4f732f5a4b776e724a46696c4c6e4e62472b356d6149644b64412f3447674250324a5366362b755066682f72594d5247683958336a4b5341776d2b346f4a5a6c2f726f6372596f792b76523855376b68504f35672f593448412b784d42463843784649664c317261556772307633772b2f74564154554c4c327163716b5649523256594c64395555695944382f7672542b684d515a37547258737742622b712b5070783954516c69586439375741733149424361656e5239747869366f436f6c35376632585766575350414177574157486262785830492f4a362f3863505476782f6e7133744e386276795a4c387a303848524653364a744f54516a4878396d766d366763316c304c6f5a6145644641456f6b7953416c4e482b4c4f47623033336e614e664a50423944787774424f746e563554664549336f2f6a6b5358596d6a58644d4534364364563876534c5556465a4e6d734579486b30303255797963796f625453476b57696567353357364237462b78543176567661326c6f2f474c786257664a6d53746d4671684a71535a6e706e2f774357696157732f774167446e522b507530526961654d35457a394866507166523331573855395163522f6536486a656a79716d656c43696a2b6e636a366455466d64586e392b66505037726c4f344376732b772b476a684759462f533862716377397758345465756e6462515834787448713154315335766b506a395778797976796662385738755a64752b4e356b76486b4d793177735a50337154613773326a532f76316c4847424f386e56706a6a4137587572777458414e6a37325754566b6455744d72567172536b4d6d487561326c576c4837395367794b586e2b7849557a445333326d51727170667a383237386f3568666b6c737a5346707a332b4f733035503841773364645661537453696168437346335a516c584934375a326535635a6456792b346f3448572f4d733354753647326e336a2b664835524f332f7944792b5a6f7a5a2f4f626d672b544e59776b726c5a38316e426d463964414e6e6f2b72386676345a2b382b522b37346a4c34514c3261394b2b76454e2b724f617a354959533654452f74426d7770706e7a6f4b7859742b43427a4f527a6e776d4542664b4b2f6d4d514469794833426344356e4d6a456c35377846797830575a3742443274546b735735684d512b7a32664350556c38334f394467744148657a324237444f6d4a74326f78674568656c6b36335064786e767170565370787071374e2b32665a564d44496c55476c4e54756c2f7143623263544d5267666669393558414e41564576324c512b55766a6b323446797570765a506e794a6368432b4b2b317869654832696a336a386e7638412f6351674366384133415455316f50452b334c6b4d3276596b68594c6248484f35697338535a31496d36786568385939597058743973786b37332b7742414771563074374a31633055394e5845312f4e77574f354e4b695a6949554e6e732f79556e716c326349754c61736a2b75494b2b56662f414344503748785475565279617570417a3939366c2f5936744b6c6c776b6f3659417a4e4a595470353166506549645430774166684c3256323138416c2f6971667646477a6e7770656f4b4f4c57785a74464a6d5856636177782b722f72594175372f37684d33462b756d58316e782f5439513956397436757a77645749697233536f574a434c6936424f4e344d6655667458384e482f5074635a4c61594277564838436d543363324162524d47564b685458725956617a3468786e38646e4a5a37325330645774413263584f51704c6e5a7a44765769376f476b5031376a70626d78743434434e536d5453716c622f414177734c714c55314c434d4a53537450746e4a427649503562765263377069494f6134445837484d4d67462b6732372f45373161383239476649644f37302b3838743853764332495a753546656b3648556e356c575063375438574a357a2b635a373369714d51364a634539674768383654414435745373576a6a5841364c2b736e3579666b52366d354d5869766b2f6d336648636b3950505a35446e2b50716c384866354271784a3350474974505638676558513158756839334b5a593365366362484f70304a6a5538527972705672624d5634436c6e79795765475a4e4d6c544e587943696b30317852557159686174523431454b496c6b6d69706e315a66482f414b79352b4e644a51434b5a7a6d66374755766a2b76366a72663841322b5057336b75525a6c366f5331364f644e6d5261337571324979644c466d5a6d5472693957584843326977624b766f712f644971747044363831434748494839632b74584d5a384236455042385045386f7a4a3638725a717a545930563575594f64635944786d623931686431466c524c7355642f3841556e396e6c344150705237497a726c416a486c484c372b346a36425871384c3174536233613256505662587172442f31496474635833764538635a764c5a48534d5a51455468534149375030776343524c346668476a62527469646f384e2f6d6d5372443834326338314a67626e6254704f79797a48554d395662497a51396c3363644b366c744a497455337645394c3939396f66462f6758725278704f6534526b73716c61584c6a705a55424f3539705263347761367962567967654c517868797357754f637632484f6e333242384a4352415a766565512b304f76347a33556d7a37724a706d3033306e33727936556c564c6c57755350526e4a56536242346e7045594148363738494a49673044574c326e396937365145584a516e4147386257786c37344864476c615a4335784a457a334577754572342f732f7459473441622f41464844732b5164304d646f6830557a7045576d6c3441336c696378635357554c2b73396a533477702b2b30334530794165382f615449762b735a3037486e6b4f4172594952645631545a33742b4c3550595061754c66305336316a7841754f48344a345161596b54756966776a51645050642f57676177465979576b55385567524836794a566a4b7843327839633372464c4d714f663748434a6d516350336d35793069497235374b32374d686f78774131387a455648326a72474a444e376d387163702f777554573173712b395a2f6c4c435944385942306e4535522b3769666650447465517835616868756a6b595179664f61334c455566436d486e42645453546d6b726f435074454f41487455582b7a70676f365059626247643365465754394270632b756d7a334d6d7249576977484751385768365936584c4d48574f63546b394c6f4830487a447a35506341664e494a386e54532f35374452574d7a5a77732b5867736f6c2f373332614749646c556636782b5961685742724a762f632f776e59582f737a7a73346463676c4573554e4b514945317035316c736b485a46566d74674f57745956755350503978677357722f414750372b51476f345966356d455432493965496a38784d36646a7079303175512f6a6f7851766846326268733473534f5035306c4b6e2f414359767652556b6a4c332f414f34544a697451354b5a4276357a73396458524d59304c52384c7056504d324b616c613469343736503266616f6c6f2b45574a642b6c6f466e41482b6751477156476f48466c393775647964515631664943506d48395357312f376d434c4538496c6e2b7a34337636443365395a7339367339764c3539522b4c68635549456f5074523872657455724674444e54396a725775663130346a5167614b474c46616a61766a70675759634c3264646f43596c4f68564a614e59642b58566b7a3138393555492b4b6479794a43304c39332b7443376b39446e2f764c2f414c44766e34353653546e2f4141665831495a7a3849426e645a4459794e767a644e687671474d4663517774424c696d5966422b564b61423452702b662f4e68477059674850366677665831496b2f70766e51503836384a6732553153356c586b486a3856647a50744b5a2b744771566b56505a4f6a7837474639655068687a726c6d614146504342674b644670747a34347750543768666a4e3430764f79357554726a545269654e7362334c5656375a3374587a694b6c3665616b5a673047317a2f6f364a794c39684148735934412b736e676e556e774573372b5065546a79506d46574d457a32326b2b377330566d66654e4530763139446b41352f48574c4a4a45726a506b50374c59316d54684e7065324e382b4542786e656a506938556741344f7a774c5265684a706b75646e32484f79373376727047784d365a566f4b647133744d324f70354d662b7335452b39766e7767532f423949386a626c6c364365693167353169747863344b7a69737936575a4d3257396a79575663767a5a7361336353582b50734272466a3748653673326d656f647339415a6368555362664764696e67506b744d6e686f41474e6e64374b6353585234763246706f61487a45766e79657966324a2b4a512f56616b4a337a4d63416269394666463338544661626375546a394b42644555387a705a6855356869714a6a624f786637436a6e62304b4441776334506c4e49417079322b33694d6d2f6a3336655944527a387a343356735773666f5073694b715231574d77746556515343493145444866463844584652304c424476782f384177676272654968666c4834706544623153654c7773574f5a30367055502b4f575a47502f414135513361502f41484f4c5957664c516c7a42647a6f4c7346376b30307043666e32477a4637514b2b30767732385155784f354a4a395358504a6f2f5355447249353946564564484c734f4e53795856704b4c50685032384e774b56704141413665614e466b2b39746a41696e2f316f486856394b63374d565a6a5555767a31647578727648357959546173472f724530496b4871314473616769785347434c506d456c632f7a3468302b396e7a2f414a6975394c38483458524f3059644c37567269696d6c7a4679525458356a737955633337664b46696176727a4c6135612b7971373866667148576c687a6d6b72652b6e7a2b7771627948384c664b614e534e4f566a30507939482b5552424a4c506e304d7974484a6e6a2f4148636950517169666d68594d6444787a554d66333748326132642f2b4331566f316f787834696f504c76516e79674a55585834586c5846525179652b444a53375a38692b5735382b6c342f50657834395957386d704d73354a61445a774b795a72766d59484578336a553859466476394f64724b347932312f4d78392f624a4c4674564f68757a794a38737835394370306d57626b6e4778507361786965714f614764633942305467704e717a3167517257384c38687a4a51524e6c614a67366f74334e7054467335684870306a7047696c6d72706a4d69726366394855734252494f5551705438376148414e696252614a36434a62486a79493830507279316531386744666e67645569754b314656646f6e79386862695a6e2b3271655664436c634e5274306946774d4165574659525538386c567a4a304c66704a6a6f6b7255367564736a734f6f3130626a4855466674495a47785a626c6e366d667851653850596d6e746243423466506962736f6d7274726c6b4e6c4f33776a356c4e50523234526d59724c36622b726153636b56315870562b7035766d366c7a702f6d637754554362357a52432b57704a34335970487234364475733665796d51506f68686d6d566a4b3552554c474c453156566b4d394b50597a362f313032424c43646a37543438755448504e303531774f30476e626e545353573252533071306f2b466a75726e7a514c44556e69333837396f4e66325566436330384a424439455455635556696f49363838685157353353564f7a375644624c63314c434461557933516e324a395942594c552f6f4c4843366c426647646750684a5a76717176564e506b65394f4e48532b2f44374e684979366e424e6e7849657669394369574e4d764f382b4a774b437977374f6a4e7a674544486d644f4447594e2b7070677562356f7552396c79364942784138636a632b6c7435664776684471484f5845544b4d564f734e5a4a653050695544685567307a364f394441475a39667444616f32354b7a6b44363266436263724d614f6f68615a5263504f66364f4f2f32676d6a3447632b74314966637777462b726249315632373164556a596e7977736a6d53376e3863416d2b4766674d73366763555068624f585576306c454d2f2b4b654148375764517479596c5941357679515a62783338644b4a5a70352b4b737652547062476a6e7a547a436b6f33632f5a384e497070614879653262765a416e6b4e715048747554796366455a2f49584a31457a58654b2b557a536f7972726464776a7178335a544c4a6e70306e73476461546f636f7a4f774742484763416852457845356743764d74544638703030626d586b596e702f6d376459615566696d57626452666a57736e714c4a343171326b39504c5a5663356e56666f782b767a79486e7973397362584445524d5250486342656a5a6f4c6b4a6b546c694d65656d634d66566d426a7773697a336647504b6b4173746a556e717a5a2b734e3355392b7a66314c51492f6b2b6159783341545364504a4f72586d4e4451354458355038763251525738632b4f65653038664a416c434d4e33556946424f655a722b3751526c665564696c7949507171354d3275656370427056505355344563615a4e6c6332614c4b4e4c6e4953436e3268484b446575466e2b536152724759655633674157762b4f45726d666b6236525a56504e476361664d4a4f4a7a64596163756332324e686b72374e62444b625a35525a6f55304f36756e356b41376a676a2b597936644e5473572b51397676397369717250384e3952704d3542767331504d38386f56304f6c4b4669493537727433547a35354f6a32364f6e7250723063414f66436a542f69326837467664337a6466725864346a736165355a32434c4a3570567a56577059335930714d344653364a31304a62486b394b65786b2f7741624b46732b4b6a362f7a47416536454b615845774f51595a377155665752613872796d396a4d2f536c566f4b2b6b6c4f553244626f585073664e3768554d656731726b4561752f72332f4d5a76374d495444794b4b51336149646856477866484f564d43624a72746e3769797a7451756d6665506c5133345334735945304f42774e36304b3533526e514663655349373261504e4f584e566d2b515a72456d544330386e553673596d466d6c386a4341702b4f752b352b6d6339776a6271542f354e2f52736f74547451496133786652674c32545666796e537354654d78396e346e56794f4b4658416735667555707a5748637651345a64574a676d2b5472442b5651465462336e6b464c59612f7452645935302f32676e4f695566747a3748625a70424f776e716757532f712f4d363445636d515577757044367a434d6a70566f4352594e4d616e39787374553267797054724e662b4771325737625230797447664c454f38474e566d6871434e502f414c345763756452483179794e7759377339726a41634f30666f4b4756535657467a6d677a4d396e4761305232763475656c644d656c714f4b4a7a74686c443344784c757a42306b306b586251582f56524a613057777571715a474a64784d374d53363157797956656b7652715a764c5265727451427146796774586e4b514942454b66664e5037765a4d69654e7038773235726f707a5a7261773065524a755a6d6658486b4f7177496c7a7555726c57656977714f4d5852597a336453796e2f7743382f6f38742f77437a4a414b5a62756e6c78716d506c4b2f72646d69442b56547564745259567856633046353653585243566d68704b4e7242486a676361462f54736f2b35564e75732f4d4e5772685374777173637a2b44444f7076696f585a34326c4438744978744b6e746454785a444b76656e537a35466b422b77472f4f2b6b626a4f4173376e7a766e67374a6d3235335070414e765a355158526e58784d6454505858414b6c554373696e4f67582f774352426a7542676e387a3375434a79667948584a7a4a4951753174442b4e695a4f6e6e4d584e546d706e5a7153315579543556444e616844744a6c62415744577a557a65772f727541506d31356533362f39674e6d2b4d364e6c4b45743071496f4852746b4357593177446e534a36363557577169526165754a4d396b61534a645031756342687a4a2f7a716d66487650495447627854782b52656670317730365378302f71735a4654613258516c7236796f7139576747492f624b6f3353364f536632524d5068534a7556394c2b71377259326959654b2b4b347558506c464e66447a454649364768537830566a73316e7744453154377136456a6d6b5762375664556f694867326635683267546452457a4d39524f615961512b77346b77736e4a7941372b74485179317337314c57544e6c354e6d764e4d2f75376f66734364374747665841413936514c67553672686a793139732b57746e552f7943666e6b5433476a727a396d4550356d696636664f66794166544633466a616c52723154467338376a47662b674b4339566a75534c6443756d6d7837536666512b4c6d344462396163317a5542517a334f5a456d647665415836563744457a2b4837432f3642664f506e46726c697a307964532f555242646f314b7358614a6449584332494b6745614c6f313758443746556b3636594b542f774462796d5a6753322b686c48366178794443674955773664585a732b514b56726d527837732f516e6f597966726e564e3634676d534841464c51627a34532f6f493354375a75576a584e6d69466f772b30512b704d3176464932493046666f325a6738534c463539532f63675a6a63482f55477a3466594839424764706c35304544323573757052626459742b694d53714c6f4a7a71306b307464635451716f375068326e51787678526c50376563466a414d544343315472664b7a54585169366e526b6574796361324a4f79756d4b663548564645565138583368446d69315a4c644f385446503131642b76422f576e3550763841634e656f3052755552437748574a72614d54415a71546e326e3662316430436d47616579656d6d4772527a6a6f7142482b445a327170352f316e6142366a3361644e6c626f58507a48784c35484b584a577a6e6b356139545a6a4b5273617937504839526a71462f585036344e416f446f5a534a70566e3250504969382f33382b47723759507031437234757948567678686177526a6456566378376e78436d46316c566a7936746a71653873645478786a48333574416a6557653276767838347543664e507456372b6857576a77596870577972334c694a3258396637544a7676384141482f75484d72366e65756e2f6f4973444b4f38726b43664b4731505049543176697a74484f32617343616c795a6f4a513161454e2b714e5361785253644a757a7a2f556879646d4f5931425965524f47566e567261444e49546b306453546a4642516e6b36745630326b2b4367503254716d5335654a2b77593332444e387249796437696d6d7a747a593238634366654a4f657469726b2f49412f46795855476f373848546f715a79786b5765764f766374784f42656c4f307158544e70642f752b6d446d464e7831623971512f33725936514357314369797231314b2b6d4a7975756470504d5576532f733059756c59435a68623072554c496867675859487555513071384f6275675149527946324b623839575278754b4f506f7874786f423551554b462f73427078356e2f654c756673564d6f476e6a71757053784130396330446462397036774f5766384165487941702f457279362b7253303161307554724d78725068646c6f6e7643796654326e336b35316a686f50486c71347235655670597a516f2b5a7874352f31756a32587430396434385145715443615455644a58506f7237756b436d3876706c74714636306b31636b7932674b3132496e6653582b3079452f7075715334502b505536695277747166556a3974786b736f7732354f54795a485265547075553254486f79364d697556664c55765972706e4269713644735a7939434b50696e4d4d4c553530325179786a6c717651716a453750384f59714b625355765174546f4f5a4e4f55613675304d6c556a7376317544794e4c6e4d6e706d4130675172306b72716874726b6a74306e52796f35374a3878736f55354342472b30554a6b6f346e507464486c72414f4a6f7353314951704d765a534b5147425a4864427333386f305267716d6262374438645970505853582f63663352766c71466a6b6774326f546d444b744362452b31527039696b3141612b6679434875514143796f4e423767724f576a4c34694f5a6d6e397957315135732f49534b556b3744584f54302f6657422f57424b54734c2b67433846442b704c576470556a6f6b3035436e7534367865564e4a5a576f647572564545367a7070383130746866586359543254325a76624b4344345178584e30427472507457777471335a54637a506b44755574732b684b655779786131546779643065685542336b30444d7a3636614e33464b4b594761706d2f534b564b394953725572504645716856334d6737426d79385974696f794c6d4c79584e6a346d72397446723343357736464579543443793539464e7076366b6675743249616378633877307a4a6f593072376150734d307065756e484a5a5a336961656d2b5a706d565465746133345153777175303676555452704a732f64643030314770386d505456542f463054534d5769452b5a635930584c695a30656b41416b5a2f386a4f514541577a7a78636b2f4778356d35384e52306433345a725a654e306f76756d7453575a79594e4c704d787a30714538343272686e2f41494554584e54497870674848734e57706a705549686170787a70325453725152516c593646585030464f6b4b334a5957734b33643466324253364f783566574e494e42316e6130587a4c3447765a4365565150445a6e314b316c5047545a646e524b6456704c4530723748436c445571344471513161484e39384c75636d422f4575446e6a5a53733931446c58563251664d5a496f74584d32656c664a3869426c507873375a484b54574570625731787459596657734935674c555a6d68715a65507854715a654f3734374c78532b4e735a6a4a3872557a482f6958646e7a554b5a6e6838686363587346772f6f4463464b766950557276723467524a342b764b7a6c76537074574a4a54705464317038364a6c575a4a6e614d764f5a523572435964413172306b31643634332f416e564e48416b5857373630784d543045704845767530335155796869655161437868717a675438745a6f36685038536d4335586d5447314c58486e736a6f6f5561526d2f676154712b49514c6a4a46782b503841706435446f73356e35456137375551352b356a5a67596c6f7866576147614b4930554f3171586e5639664e33674e6c6175316f30633268787171424e4272796d305a695936774c5438532f476e7a7537656d7a744e64434b4b4f35762b786b6d70527a5053734c4b315a6a61724a5a55325a4a555939696b4c4f4233317953504664613978764b7472306d4d34784d6a656e7766384176556e79536636315068656c71386d6d7a674f6d73594b41566e465a69703046507a6c3464504b684f556e31546a5370334f56586d504a457056316663703171562b4c2b5132337a2f3758335a6f59473165552f7963732b4d313338616362644f4456386c484f31733352302b3774537a4a6a492f75546672396f52504f454169663177444d436250332f6c362f6d4e337654503841416a774847727a3154445747706e514b7a2b5231747745307475796c437278315944704d596b5a5579334d55366b45485154307a30756d57674846506e6255745962722b472f6a7236652b465a4f53736f4d70664974574f75577366687266464b6d69656d3974536e53705a4c63335575725a5144675a3066732f44384c5842544d6545366b7a62706b57505a346e366666786a67566c59726d4f356b677071646d55314c744f2b4b676f497a67733665537446535572355374772f456d59702b393637396e524f6266682b34456147546e37555774586d54672f5a3165614c454a5648506e54555733774a6e3745476e58505141734a4d374e4a662b7164452f4d7a2f414f436f617a662f41464d7a4552786b557a3558345246722f4b496a4c5043317263746a2f7255464674756632472f714f39484e2b754e425664304671544e7737544e505247577365797137493150332f543751793942793856676d69756873536b51453045574a55454a7766636d355678654f4a533476734d7870682b7879775155504665346774576178316755686f35586b4447524a57304442555038414a4e6253756f35386f41756579742b6d326776324d2f61686c2b61346a59774c49794152467676637a534c562b517248794754795365664f5935434d7478614631677058717a4f544c6c6c566c71346f6165734e454b2f6d7559302b4f4561464f50336b464a4f364839574551546f7748484b304b4b6671506c71464e58654d5735416d6b6e4d6e314369486e7a65776c6a77653859616754473333734e54484e6e426a37326b785078324677324e32366b33634b4b6a51706161614d36727348754f644b666a37562f734957794e6161544970506278356d442f766b6a756b3047302f7867364f723373794b685537517a43684a6d69536a61694e6869746445733544332f72477362782b593650644f372b676534336e47742f4a7272306f56726e4c6b71586f716845666c5a42396355307070524b443366504757676e764b50312f77342b7539344c5933674f4b764c7442534b46366c31746e5335386b76645075664e704a47585431766a4a4476754533487541657443766e58685762666a456d4e41786e7541565a3667756d66644e324c4f4f4575793955665a3261436d4b427362715648485438624930702f6c7031384a6169464947326f466c396a695442476a56456f6e30565a2f366b64424a32366673534a456c6c73725851466c687078324d6f2b415a2f3379675a75476f4c506358546247357a67454a5a346d2b47786c6d6461697a2f41447363464e7232636c6f42337579467a772f582f64465435574f53697a74484671536c72514a4c6c2f7333474a384a48546a2b334f6a7854784830383952635078464d504d6a52386b324e66592b354e6e324f744d6b537042746d666f3653554650775a4570527849665472567643592b79774a70763679316f6d3136326e7548536d584e32675a6f7557444a4b484e62666b76747a567a7330326a7a524376543078676f51784c464f6f33464d4f5965575464644e59386a6e536b6a7739353543507331586f6c517a4f753558675a2b4a524d436d6430454a55634b424b636f716c616c547249516f6c777763785a6d5031484c6439676a4c32563643426566654b4b3831384a3830384862757238545235523478722b4d33585a6e3078356b71386c7930352f77444f544738614f314a377053356658424d774b54494857666f446f39785633596d6b2b5038417750357650356f2f685236372f684236716638417a5465745764446d3361655a5476654d62325062437a5038793852626f32707a7433397932483348466c7136454f53784b6e6763316a7665336966393374614f727036746439654872754773436d54526f68554571794d4967444e726652377136477453747a6d4c594b66672b4e5648783859707a5573475a4a6e77514c76615443562b4f5a37325a6c6d68585a446e727a4b58624230484c6d5132587a55712b714c65722b5236364a546375376a65476f33476d44352f6a647a6e786f6d30596d594250554c504453574859793061725368646f3859466b74764a7370672f4a572b6c4e53685877313571357a65732f72445374332b4169345135416534326d37517255764959366275713769536b34643078573658376c705a7a3638516e3257564d734e79486448676d6a37686d747742326c53676465522b544c695652685a2b4d4a755631306e324a6137306c62387a66316e6475663731384c39464b74786856304b506c306d55696c62314a4b6c69635a376845687652783162667063474a6a31716a436d4b506b744d36516c6e6e694c374b2f6243766c6d657434753653552f4c4b54434a7871557a2b707850684962555630746665794b73725730335350712b706d7a6f544c31774d63515572665977726a50353566397665635a2f796267714e332b356b434c556c396d6c5a3962512b55323239643249793751626c5475467443744a582b5066384174564f344a45527044394b543078454f4c55417968416468462f55306d376a41583873334f49582b754d6450664d723557633752706533346c2f47486141562f793050686d2f795a304164535130634c695a35786d42505355465a663572644f4b6666776d4452316a42424d6f71503976506f666f516433324348663672587041773930706636536f63734f646433712b5554745631535a46755948774c4c342f63582b5836622f414d3841506677452b7a692f32352f4c37687541393058726d6d4b79674f79386477657a314f656e3941687a4f496b466a535350794c54337064345963446e442f7742673834514f46593868334d2f744a663271746a383266564e766b5835415365562b4f656950693563324e72367675787462314b305a452f645a6c35646c6335434f5046697a6b306a516e7450526439646678632f3354636674487445615663566e6d742f7447302f3934763841416230662f422f7866784c796a385958622f696d6236696c705a656e347a52726131366f31545a7a4e544f38695672643247554c4c71777146496d58316b462f704359582f77436e74505a746532724d786565794f422f34786559792b6e50723336502b556168496a7a4d48797647324e4f70504154657552623135396b664b46554c37553468596e6f6e3333467a74504f477068422b31646d7247366c6f36593966715065566e2b635a745047522b50707a697a366156315031646a4a566c6b6b6c78533274595337556757486a68646f4a377a7265796159666630584744534e72744c7874754f3177675868742b6230352f694953487179726d584955373663327a734c354b4c484d792b6f5a6d35684855374a513750486b6a4f545375303575456e3635706253774b78475a78346a55763151336c4e79485939656a4f5178476c5959457a4c30335a3139756e6a334c69514539796a585a497773316a2f63312f61656d564d744a4f7a50384156705376654e65702f4867386b383574396f774462673062326c7456506d504c6c6c4851656d66666f5a4955343931706635614769687868494d6a7066684b61416a62373948546f4c4239512f422f5832544c7a57654130344830495378586655644673524d5438454253356c655472614365304c4c723072674437492f426f7270706e396a6b794b4c2b6f724e4c634a476c766d76696635354a6f56424c34543665676e6a5074523274337579536272614d744f70736157724d3636646c5730396334722f6b4f4a70353839346f2f582b3477567045365866623139687231354436502f6d64366435704e327642386279544d6a646c5551352f68766b77352b684959683469633331375464504659773256532b3544657a50706f4d71564175736541576d2f536e70594466462f7954386b38577137343736693456754c354c6d6168357149647936504b792f734b722b49513866317070654e314575537479766a3677354766662b4774314b5937577a524e496e694e3950547a79332f797a5a67384d666746736551626c6e6a39766a6d546b3757684862507062644c7145684b413964585a3541725031666b72516779524b72395648524e64376870796d4a69496d656b6a306a2f6a313665542b6c58674f4c3662396e65767a577054646a7a5736534779525776765853342b2f516a4732553064584c724b682b724d445471706450544d416763796c6c372b50556e644f373452733558765448724165625562564b46553073584b497a76795258496b2b7658534b36477970433666444c686e523071484f2f7a6d4d724f70646b4e662f556a547a4f4e7a697075644c70637338653256426d485837636a4d6a4e6c5130757a394f5644644c51702f696246413371467542746753454a54455a2f31707039343243303771494e566463756d66646b725258457132776449716d446f6b6e4a466938346e6a4d583136577838474a36334f4a50532f584b472f57504d574a34357259766b504c5974474e2b50716b35505935306c486f2b332b55564c55466c533172346b5672734c344f664b755a514b6d4d765959652f384159464e447737526b5858666b313573675470696a696968546446555761426d6d494577726a632b5756445a6244465379447651416e4f6d704d564a726a4d5a7833686c6e3336466231354f7a625a6e32784a4f336c37706d365653614a55706d356349712b64565263716e2f414f4364314e677442536d4946582b762b70427161657170714b58555a4d55592f48552b6746734369385a344c45794d593175623833312b2f77416b70457869505361667a734c6875614854447a7a624474432f31763841566679474b4f6e52766435376f7876635163626b4b6f2b555a6b2f4a56354c4733374563644d3144556b632b64516d62565038415462424e6632657165464b78334453373138386c70783872524c5564423071624d51436c3031614d6b7a744e575864705370426573746741546873594371356a566c5278756536675067546e716b31704554474b69772f37546e706a2f4c655a2b7448354c36564d396175397639504d66656c304a6e363242454f6e523554754e784e6e79576f447a79582f41436c635274624f446c6654496d4c3539656c54712b307a474b30485a5479337869445879475a6d786e6f7a387a6830634b6e5358457a7832573776776f564e657a767850596b306a516244644e37586537536f49372f337a3747465a69656e44412f6e4566334b507862317678572f4c6e315238487278567a654a6257396235543466765a734a486c50794e6c356172547a4863635336435464554b6a2f3365386c674b544c6b37514e6e73614772377a54724d646f61463935653475364a78754f69666e47745770362b382f584a35544f674568536b6659354f6a504f584f386f413139396e312b63494248666c3750722f414e67724c4a5133357674313278564d46393753515431314838504b487259494c4653657134795557744d6a4c6e737a52345274346f4348507635662b5178555766612b78696e67566f4a495a6f516936324b353345532f43385a794a4a7a564f4a4b6547496a3743644e786a5845435747322f3754316766534349586f62316c6f4c354f4e696e67513047774a697155554572615639456c3851747a43343041363436656b337042332f646f4d33446250305768523150787169446b6a2f6f314d6c6c2f5446645650302f61373637726e5339377848466a336a67595853443469444f75333667574c5670492b2f7575634a73347a35317145586a7a6a666d4f65676e6951476c3343544f504f733442644e7a422f535239377561424e37556d716478484e315953445a4d4a73647a6f70723933486d4375314543572f616452332f67574d4d346b2b39544239776d446235336458304b584832676873576f4f702b5650584f47794b6d52543165376c437a58597a3553483274352f7744696345416f414c41394f5047737a79336579637a555471574965532b312b78685a71724c566359434a69757249686a45302f49484b4134675a755463632f76372f4150666e655a7245524132386234376934325273535374356a3557626d466e784f66675353472b3068304e4e6e4761316c6e616b33545a72683433334c536269734e583241366f4b455a5a6d6254773443586165566f62314f585255444b56613157664f79646971764673624a6470347a6b5a6c7371304f6f4b65727538346934347864777a7634444b54543334517245785749695a784d41782f432b48555a6e324e357467354f66772b655364716f5a6e6b75624e3478777a7256734a4d4a366d51334f375a413465715362766378644c7a6d347162627668484f37796d6649547461305742667a586a2b5473734848432f6c32696e34693472584b6b6c742b776c3666744d59527464505033326637486348336876584f4a33644145423068746d63744461724579744d724c324d2f77434a774b69546a72487445315173534b452b777857436d64534b54392f42614258446547715a546c476e72626c485350314a6d4c37382f59314a536c3143486c4b533073346e334433762b4877746d5333336e776a506c6259787a644130615a55712b46786f4c7658554f51687a336b314853474d6b726d5154476b53666a6154505a7851653332643458794141442f56683275394550523778543865764150542f414d2f383733613839507135345a735265563456506b724a546653524a713851726a6d696a5932556764384c6b7976627956685a5243466c4b36515372697461627a6149363146635665764b2f4176555448386651366363323357756c537577653058574a334854654b36537465324853397a7145454e302f62485371643050592f6855433171307a743352757a695a485a623033387a6c4c467836796e52413779765276786374554f674549356a7a7a732f6d6e697a78717563374253744f6c55376f4f76535530615a676d627a6e77756c3562787a664d56682b516d5058624b4f584e5a6d7756774674554d7271796f6b5279366553705a564265764e71516c784d5a55376a654648524d35754f6f6a4d43536a6f587050435938426f4e627251526431513347516a6f30377338746e593753733076626234756c32577158473637333747716d646c4836346f4b30725079644d6f3133474c32546156335a3552393949765358442f494c314e4750796a53706e385a384e796450617147484d4573742f5a6535387344536630467064554c4b6b7656305572513465522b7a3562462f61557461644f75596e74446444552f475443384638664648687546344c76374f7a7062725048737a794343565a2b5566576639434c4f4653534650386c32566b37654d4a74636c4c723549766a42732f77446a54336d3665496a4f332b4f6531347836552b632b512b632b49654f6f67794d6c7a4b475233584f48786147657077345a6e4e543545702f6b454a6c74585571654230797655376c4c71506f4b70594537356d31497259637464723031324d444264355965336878346f3735524c767a395337516e6e336c7757636e396b3967702b39563759484d463958374b6b3443563775556d356c4f3162627545774f7358397650386c396a796e754e3473337537642f34685958694b396161586d64324a46636b4e3070786d5458752b53646b4a47364f4930782f554e7753546f556e76367731744f493439636a76687065714f76506c446c68334e4c556c5457315554386e5256495770354178314c33313179703550442f4966527a666c477676495568473775642b34514630504c7369654d54694a416137534c57305a3962346c3432567653387a4a766d5934432b6c555562797073514e6842626b7a4f7a58434b6a5a5542484e5a524b34776f6e6454546a32664d52617a4d727833544b5a38696f733666556b56727775646b5879755933366d72454c66726a79634a397170307a75724a4a7451613746386b68725555656d2b50435271762b586e6d6d42682b6d4f7272596d50734a62584a685353346e5a51576a646e324e2f4a5430632f4c7961434c37396c69705a2f614173436c31672f586e6b30763250623663576d324c6352324c2f74522f6850502b4d663438792b552b643553632f313439574d77664c6656584c6379315764346c6e545a33645078767736786276643247795664587530796277727a75707036703365545470587a2b30617333314a694a35613942316a7a4a686571383542314b455030423466326d4c6973534846316466567157564d366365667969354a6f453269777a4141704c336c79672b63466b352b7932664f366c6147797a4b4d48536a7a354270364d3550704f4e6f724e6b6334575469424438507a6439365234726a6639537777374e466e5750613045304136526d6545685536465a5539534879386d31574c52303053732b55666e594a6973547053456e7648374b754168546434374b315431507a6937796c3733494575582f414339647879632f4e526670724e435262484f775a75554e567968726e3166462b77523849415765516b326866787765524958426648547a6c506a6f6c4d3274393270383132564e5374744d63386952594855456e374a755441314d6c7864435a674b57587066307462705a35703432513757392f585948506d436750314a7957466e386855436a2b486f2f4e3952775570365170556d6e365956483556756e6f39717a324a65763430416a2b526755444576306b4b3058614d374b74422f36586f66485a4c4b5a554d6145672f45354844556253564d524d7a6942563368472f4e46796e4b2b4432756a612b7a5876316452734b357444583065744f504f7a51314764715a504c6b2f45416a66514268596c7930714549355276654f6c6f4458312f394e386e3166394c2f414448776b4261466573792f537a70387937517a72346432634862754133505579723463396b746b71774378417875537050762b4f73434e726f30376262784d44695a3659656e6d393466355036677931536269744265744e346235516c704a7a3958506d7a73786c476a562f4c4f75644e396435546d36626e48704a77414635553847674e61627176614a6976674c48445349647877447370564c38374e66587a354a6770586e4e344d656a6a7a3554644f4173786c534c4b48384d654648525343614f746d706f397854552b44362f6f41586d57376f375a616a737169547568557a4e316d75456535757a4d4536497947764c30646f6f6d7a6a4d7a755379564e48592b436c7a66684a4b7a6f556d3056697647774d2b6d48634d6234516b71466274484d3162654435526b36544c4a704d5865684b6f436d573772585a5a33543175724c35754e6d434f6b786e4a4a4d3551766e683441353631555957646c36584a3670356b375765324a572b47367375343977366c4b4c5561547871716c306f50342f536662386c4c43494132423147312f4c5a387649703148416e387073514d447776315778732b50534a757a343556716e6f6531437869753035727034796f71526d725a4a4239506132486a493736314650776837577656534c6e64756e78322b7567383248334772574e4b6e4f3432786a33505532787661515a53723671484f4572675976395745376f6e332f41493442695a6b48434250657a33666e39687358365a2b6833726235443450732b755070316b6c74654c654155646a38786f3858326f6565587839325558444e7068346d71344c4535764959374f437863344b2f553143352b66344f2b4b6c7261645a32543272646b62372f414947656b324b506c506b6d376e33324e52625a3958466c7a346e33766e6454376a7977314b592b735448644b564358725758424833757a7770637232746f6a7831625967656d72386638413039353435344c3437554f6a3857377534794e4a743759657a74756b2b32742b635338306b30726a724f55745853363149565670724f517753774274746277586e4e722b482f4933747a4d47504d6c557a4567552b6c63303174504d704c5a3758772b524f57324852723163656853702f6a314e52496f63723572444e7a6e4c636d325a767835695a795a394c494f63306f2b2b4d5130357278556633526c642f4b695538354a373470566d2f5758504e44744d2b323775576e6e30357573392f7742637946496337767949336f6351662f477274624d5a64434655585a6353683346596b57786555586b6164544f523965574e4b53646f49354e62324e4d7654544f774f6e51523061556a7638524666434f6c2f486254345661757931345652356c643152315a5445334c55656c4e4e7061475778555838665556594935557878677539523851594b6e2b50514c657433672b4e62365a575a576d4f577a57376c5754746b46666b4f6c74534b796f6d775a59364f696a4c37544b755857304d51584c4e455953632b524d375a757a7a567a5670613032484b4c3832533847395750774f567165557a52552b552b4f61666a797642764b4d6876486551782b6438554f5270556a666f587461574c654b3561326f6166542b575a316951572b384b4a756a537a585734656f486d646353614b617776712f69744544427a492b317a547054534e4c75736e59522f43326861717668372f77304245514a7157664a7a7068336677665831496c654e7079364d74714c5653437779472b63337932476b767678436249557166565575366a7135574b4251494c34446d2b61514f2f756731306d4a696353423163557970354563716c6f6b693639433355565a375a4b594f5655436c337a6a41786e3866396f4c484b51315a69772b662f41472f68676b49447967666a4e4d2f4b5779385036504d2b4a2f615a4f5361456b365654493141644f4969344e5156754e7a4f716261357a514d45463731454368344b4a4a2b51613038496430527162396b47524c6846534572756d576c30512b2b41682b354c77466d4356664d38505a49414f36384a7a4f6335346737466935394552796d46386464594e6a3141694a7435714d614b45764c5179525a4f794e674a2b7538566648386a667243306c316a396c6959415354493343716e4d61357937496f6d3039597a6b613871654b6c4979554c6a704a5357473256646e5135772b7154374264386e484b5345344367634130567830324e397442466b533331636659305772567843356131392b61714e694e426c68524d36704a43344f6e375065584457477866346265626f394f5079723944764d627451736d4e666e5a4656743577414661325733543575674832335654653256724e5a30366d38616e6e41442f4144536c776b4357705864705872317849396f50342b666b4c6b3336662f69336c4f4473583656586c4f685868567953417a4f6b4350547578645363433867576750465a374736466a79676377714370765339496533704e6a3879394d635947685038416539394e50422f7966394266435056487858786170507250364c7274306e443955753675333665506f7a344e694866436644554d757441366958707142564650513862645179674f38584f6e62325730366437566e7332486a387a46576362786f4b7271693649466e6b4d377270625766723653766735555854596c745643775a777659487a557453497163512f44364f703342454e4473376553746a58385a4244796f6e5338496e473736506170322f43744a3044316957474b2f6c45666c7a656e38537630777874746a4f377647626a6679744250686e36705533366e3558382f626a436a737936564d563272337048726e4f446a7668397a662b4f7157347a4e525238504c2f77412b7655437850526664793866314c394f482b56525a323334764a35766d46735a724c5342326e6d36577a6d7131685071533678592f564c396f365a436f334a393744343334512f71746f6961336d49356836506679672f73316567572f5258354c364c2b6f39766f33706262382f77446a66483948762f6d4868476e74616d667262634d7964484f616b4d73626c787a2f414678576b59515a704231332b67766d5678616674563434587275794f4f2f71562f624e2f4c6e303456713676665464666e75566e2f41686d7234467565502b5a7950466d4f366d47765054347a59344c48464379786931666f766b4b506f554a4278704575717576707a3337505879476f666b58706236672b4c7a364f74354436662b5a355547437a7364326a5448624a50486471745730537656584766495a574a735433327350336e39384b4144715772396c347457593278635866384168312b472f71742b6466712f69656a48704f724d797870687a4b764b504d66494e5365624a384d38666254424a64726236705033316a4f4a6f49355a68367237517a6341656f35796b50367271366c4e437536656f397a2f414f4558396f6638585077397a6348794c78484c58357236315a41734a76724835486c35396a333831694c504b37772f4d72715976506837473665696453506439542f75645a3864417a7035355774375671616e586c722b45645931507a38615a737a74645374425a3830395146756b6e7a346956697936584e464669306e50564832646d67616e694d6a6d4c64396959422b4b6e2b75546a61664d56423669657375566d783674724c4e4b696146665a73717a54627957326a66774d6763713163637762414d645a516e5158317049597453614f4f503554455851687457754f4563636a6b4a2b5a4839776a30392f4876427678764d664a45594c567752614f657041737130747765763858737635324b457575716e71736f73706578445a6873583969666a4a6a706b352f572b6c6f32314a6a4138335835502f414e336a313039656266346230796d44776e786d794b6d42477266493233593037307a7a7564646f7630576141304373636e504b6446523075685348787a30754433384c73302f5a36556a4e75614a484c4f7039766c566576354835687336586c477272506132757657454c624b57313551683161747a53713538676e525a4c4d4851455059723331792f435238447652306e45527367434e5033397a366674395249524e4b524a4c53682b66622f475244394c547a756f56386674373770586353484638396c5033523930512b784b6e6167433135745a3156496578726e7976414153556a61674c7567305a796c366b5a2f6754594c32564d396e52413265384f7a646231332f4141335937504341663865786b2b52464a6a395a7a366c64514d5847576a44427a6c5565526f504178703049464349737a3075544f58735069526d3777412f5a64576d755a3635346977384c3038583539367377656d6e6966776356725677342b6d6c74615a6e6f6f654d736e4566756c33754b35433346456a327555527567365465714233316a544d316a664d6a3236666a2f414f6d486976704236622b41656e6670566c616b50692f6a734d4f684b455176624871333655384f68712b55362b302b6564736d6c6f37483243447450542f7a644b754166724247592b5865303274616264523059385238797078736d572b61653272444e467172494a4130356c564c614757796d652f595779524759756d64676743444b632f734a443470706e4b366c325578457869527462346a366a522b54555078324d347a536b6f6a4f315848336c434c5a73354f68472b76546f6e516c524c7a523076322f71302f4966786d5571534774703532726a6a4164623669355a324b43706a6c74482b4d356c4e30725969727166712f537473772f624f333463375158466e7246307a2f41484a4150714d41444d6c646976446d376f476b66354565565a2b414f725352343132554f543933556473642b71726d74446f344b36592f493351706f39326b4d7065346557415877484d612f774246504a7a3337316a646a7a484e332b344c2b5058706c36392f694a36672b522b5542463439353736642b482b5365582b4e65554a6e774a39724632636e4b6f3164484b6b6d67486c70654a7279325a616a622b6a6359787672514576653071307464473830314b78485a7350506c364d2f6e5a4e365366697834583448345a766a34387642737676387a385669536e494856325a39426465503548645a797064586b41707a616b7a7a4570354278644a755a2f6d48494f396c744c6471577a7a44557279652f7741653958387a794c314e387368754b72796a556664545039394c3951314e426b53394378382b67746b6557576439706e77506143576e653334334744516d485375617a746a68744549394a634877377833316b394e504b5045767030524471544d4a576e3731527936757256705950444e65797a51357861614b4d38313145307568374739426a667248502f56727a4d316d4a6e7a487268394976346e7954785667525255334847795055304d72794848624e6f376245516a3137786a33616d6146574442436c4a4c6d53384b56765355394d725a516d6b447a72626f6e684752756b6a7a485538626c6e374e76356d6f752f50797764567348524a714b456c537a4d71654f306e72614e5934777753696c4a696638776e43666e53372f414c6359695a36436850554d38437a7568617254793157575946614836496c7038337055616b4f652f77416479704d76766b67784f754f7253314b7a6a4c6f6352566a336535356b696b3261557a696641556c506b6562654f677a365472473430585a4854426f75474a754c7a624e6e58533053543667736a32417a38306b4d4b77616b6e58717061637a636978733772524d54306b544f5477764c38517947366d6a493754627469625a34635958654d52767a5955754a74347a2b4f30554f334a574f5a534b4b594b7a736176596c413873416f6d442b6d597a4d6438446c6e2b587671506b356b4f79454b38677247716f69675a526d597857532b517374306d4b766f7336782f526c554b61725068344c446d73307031564f2b5a5078306236645a342b59722f774247462b43654d654378525536465675577a565a317337624b33756f58326b5167736c722b71534c47535133614139474a796632464d7a596a61336e56555462644d35695279632f503761693066796538702b6d45314b4d69584a7a3579596b4b757a484a496953474b676a3048637a36465a65656e724f38367a333052765577572b7777506f30592f5a5435782f51615739544e37316337644d4456726d71344b2b304f515944316e2b2b647952634e55767a4b7a326d6a6e666637334f35376b7544332f414e644962767a773444715a6a5a396444625a383553327939714c71325571354d524c452f68712b4c2f4d757435386e4439705466744a67526771675061745357364361484a4a4d326151766e2b78314d71794f52764a696c37384a425052385967776a396a30396142643450516344352f58444169715768686f667a7369565246386e486f6161785a49534f2f472b4c2f7277536c37424c3547476b7a36667544352f367a726d4c5455666c557a575538583371783050744170354d566f736158484c2b327131537166674e4d665354436f663852622f414a2f763967732b3859323765624f63416633685356465770675463422f3035484e66325774524c6b4651746b557672666a53582f59466665475a714350732f7a5564446950366e3867564271666a435a52487a532b4250315774437239684d4832476949547a416e7674706d4969373850576d5a32664f4844647a7270376869367150724b516e6f51425047644b3641427a544a4c5a4a5a6864513143654d6e5a785642633976656334626e483876666c3658514438487363426d53683673592b457366595a4945464f5944554e2b6f504f555564634d34386370676b51702f77434539483369514f547273467772346f46554f6b4d4f705335444a352f324d34643046634a7a466b73796e5373757045692b436267695a436f79707279655832437135303863787569494e425938625a6f534d636f4b5756633969717235616e4279723343355a6d61675950466d4a314a634a4577362f774148722b663144666b344b523766734f2b53746b7a32546f3632476b5a2b7843557a663339566746474b3245734437776a4d2f61667337374f2b7a514a5653304573324b2f62754d5173477336365671674d5146694c57545131504649674332475852617a324343534d5246717566304377524f636949574a34305668637a2f53505a6961435730414e4d70632b64583152554b65455534384e524f56542b6a397154634871452f443363683959507832384638773735722f4856346332353448733473656c562f4b344168446a797762686932703953526f7a386d636e76455857542f38415a6f5758786a4f796a7a4e577331766a614e6f2f505078393842395134386a487578556f74322f4736367354587a394c4753366457596c3065484a374e4176325049493968304a35793649614a3131556863366b6961706c4976614f3865517631573865563456366c656f58686f50633066462f4c504a63685077324a6f4453484e62544c78334567356a4f792f3841594e674d492f6638422b2f6a422b4d69563656597a576b69757167636b676a4c6c74466773354b50587257704a396d464a304e6b70363732714956707a7633376b3861496336626a353042446c2b4861386836642f7743312f7743613065522b6d587057336e3870716552595364487736346d7636366e596d67307062497647594b6f475575384c4a436469677a6f6446787a4176486e76544d6658663135337445597462757150584e3656314931634f48717058555a3950752b5849744b4774635574426e33446b7a594c6f77686c6e376e724b726f664f614f2f3867587a4730353265666163526b5a6570336f2f6b655859646576764e65705933316f37564e31564d65764a743563634658474a566c736e6f5a7937347953786e772f41466674703752324e59506d746f7a697644412f6e5866334e66786c732f4676387576565077564f65315868666b477458357034565a38305367763841484e75756775514a756e634a324a6e306b6145745443446875626d2b34314a634c4a67396a5131506561646252504e5561416b325947614877664a4b2f77426f39643848656673347943586c5130436d647853703779626e54594a664878686730514144346e2b756b4b743557766a70756646786e583050556d546965696c30375344745a743654447a78416b3859333547424f5a427a706c2f69304f352f732f57513462314571346b385830514569517239704b6e3671586f397242464d6f3939317a42582b316c336f476271666359415858635537666c6766696f716e36745851636131635931536c516b58312b544b44683043435a525a4376326b674f384432666f54416661507a73364f674b2b4d65482b54656461696350777a7837643872304c2f3841577548457a5837576e776a6b4765676858426e69763456725352737049656745332b66663177476f2f716b326974637a796a664c306b2f74582f6c3936745379614c2f43652b4b5939492f374c642b2b624e7343555948613736676d2b306271696d78796e7037776539467939554256317845307877743754705250474d35485a5030412f77446b34506b6e714a6d5361506c486c336b4e37574e597a55737279702f4573785938556d77623043366a726d53726c596b6d384676576d5145483131536535706332703762574f6c42622f6c762f414d6d526e3764705235486e6d353472626d772f594d58624c646a4c59373670566156516a62342f4d777056334b45454c5232774b6d553855706a54513770316a3237486d4e4b66585038412b54362b762f674c634c6e6f58356634703672315a38726f7450483039504c785738726a6a64427161617177446f736849694a4b6b6d4362506358794a39674564496130397372666861646f34732f6b4e36522b71666f4c6f512b6d50724a365a582b4862556836644b42326f7452624e4231644e444e464f62727464384a51682f473534765849583753522f77434148317a614b4f6d6c71336a64533237416f424e4a4b2b69754f66726c486e66707446515453764e795175575354706c4a764b49696f54372f4150486f6d772f663776635947663841573474333070766172794c344c2f714d70327a494f32574d35597861737271324a7a706b38754c73627553395a3866743937586463615442302f79304d7874303452776f4e2b50544c787251727a32687431756f775a75526c646a346a455579535573307a525248454f6a645533504a5766646e33384a4b45642f3536484a6d4d4e7a6c593276335249756d594f3532664c6d547a796c70746848566e787a6d6b624c6d4e6a6c3234396d7562436f7851586d2f48476e4d49356d7341462f48572b5633566634555a39664d505053693637772f79534f72493064444c304f544e6f6f7a4e6f3638614b424d54714753335953486a386332776f636d647a3650656d5547624341716b564371354d615a3364654939422f3470666b58453262476e386a30382b4f666b7558524d7253425474714b59664d345559614d653658574f62362f5a63316d6d6b3770486643615a6b6d356e655439506c314b636541365a624f524436702b4e2b527a2b593563326f4b364731396a6935323367507038666f77586e33677a7974314b73714e32554853652f6a43393576517236786e2f41466a484470774867322f753566693935422b4d6e354d3656454f55615054377a32666e6c586868384f335061547166755336302b6b733363354c556d77644a6f4477694d656777756d6266756c3331665a7278656e546d714f575341714c6e4b4f4c55524d4c6e516136526a47384a464a4351696f694957456675425a2b7a70674c41622f3769397675367772566f72743549744432644d4f6e5339634b75796657484b6c5a4f6d78457237433479587558505638676b39663841737049422b4d66622f5659724564416e784b6574616c747165544766514d3239644b4e7a5743756b6a6f4e454c76754f2f77427769705846416241704d766350754d69734d506677383271596854584f552f317037464a536b357851396e4f724a3378304549396c6c63517241457362336e6539412f3841497636723858302f554f565478554f6539636f447a69326e6e4777726630316f315846314b522b52505a666e6c39706e772b304e45514e303750324c765a583970367745526f695034315a3076426d65644539632f43725665436858564f4b7961306d64633076635479576b652f37663842436f7866373763336c39776d78526e7a6a4f6362374a3373417746465a524a457745576d7369633857454b30353374517676743972694165456b77642f56672b616f7166305534634837385031414b3267357865356c68453130674d63337049416f3366734f394c2f4b6c713366723268777755554d505843795774632f746379635452796435485353685a5031663350304c702b464f7a762f414d5631426635742b466a6d496337502b5036656f446654702b427a3534713744524c396d796472617668425062446c7236784e584c6a374d644334357538457669634236522b346d45496a2f5671646d417146505a57737357427473556679546734492f6f7953382b5236564f4a7267574e582b76356e394e51666f772f526639677a5a2f5663372b48544156346d727279527a4c70372b334e50354e425563556a4f547145347563742b55567254324d71482f4a516267352f6e3158434e667a66316f4848566855374f5a3152396c6574786e4b58524d4d3950732f54416536684b4672452f7258487777587a396859383170372f7349733932336c786e41547236534f5541357946644f6d5672524731566236654c645148614a364f6674333246434b543553387749302f4d61666c416934656747385137546a36626f564d396b464669666a6d30476a337333425651787666754a45715459746e2f48514e684f662f6b50744870486e325050503042576846736b646764554c454d53484f38554558416e496a2f575845614643506672644b34533936544d6a56534c785930574c494b387537386f7a68667852474c542b6c4c37756856324f6f3636457a4d476a6a632b6850503976306b736c59612b4373466935787448706d663154324372464c79376c7645365a6936325771617970636d673734593666757530666f484f73456a3968596a3335476d62505a37434d54533567553756664f4236797651547a6a443952665350774c7a747a6c644f3778584a533351726c61724e6e7668796c536149724b69645641736c7a334a59505638446c6e734a526e523755752f727a62784e62576757525262526b465964315644774b506c375970776c684e67367656784d6c6e4f636a5a6c6f416170654f3731786d442b746553654b42714f30362b596e34615038686d746131434d2b62364b485a2f4b366736764d65445935626e757a33533866504f74324e484d6131702f66774762324d582b6a6f2f6f4a443449306730635a443757354d4c4547364873594c3559767146564b4d6c7875585050554d30627467574957397a766c50354442526776394259336d666d5069775a4f754c58564f5648505331796e4f69376b73526f6f5751746b5655796b5572367232726d4367706e47764e556b5062575a72434969596a6a4f5a47732b7271567170546859724f68656a7262346b55416a3550594973577a7069693431524c5639454a6d7548332f4d667542775544484a374c5937353641686b623170304d636764487357554a496c704f3955626862797165436a3750735430484c54333344555045704d55682f6f346e34674e3043794d507a756d74356f766e46726f4d77494b6d4a6b6c4b2b742f43584c4750464e6e48694a43686f6c36514d6e393466384150744d4149356e414432764c73706e4764416568455538714846584d704e476943587271735a6e386649555a4c614d72422b70386e542b47623566684b7a396457454f30642b42436d5435375836326a707a5a4e51584e5431537564356c722b43443431314c5375646e7a4a4e6e4254316a6841425574517a78752f6f47325053742b684e564670644471733553516d47466a744a35546f6c7a6d4e616f35576356372f414979655079467a34714574625554426a543767755478623143324d4b527273305a4c5376366f6a345a4d726c55556c61787142453874484f536879647a6e6d786a794a706e5352725653516b4d54455431675433423871394f396d49386e5938646a376d555039394541554336654931544446532b583745636e3174513671716e6d6a35352b364b3654594b2b38645230617a466f374d38424b6e66697a2b4c7671702f477438517a6348782f522f656162623531534855366d53485751633232545863712b4a6d656c5433755370502b50545a5431782f545335377a5572314665366e39746e77327965325842494d304f4e665a72374f4e6d7357714c36474d35336462576f6c6c6c587046386e743065495a7a6e7647774a733548784f425839543736652f684830476a6e354566326e504a2f4638757a6138596d554e326e567a596c373378694e43737841774d347962715979477946673575686f572f756a765a306779592b696f78346b4e616530524f61794f645871722b506e6d7669714a496166474c4a755a3330373636646c4c517a4635493370796c6158595453746d6871455758705764487661784e30326a3375645251594c5674572b5a3759313038673854332f47766d713868786f7372497a71346e67476272636f726d5a39746c57436a55456f5532664a79636148544c58524961537339344a4d656b6b6449744e7545526751657278426f565a6a6e31635275513264584d484b4a346d427059666a6661634e5674586c4b3830632b637168544b302b4a6a542b6a4e4a796772363339584551484b747a36714d396f314a5a43686754614841737234374f507876552b6575374b636e676c3867733271424358334d41303858374579705034774e61766a56614a6a316364366d7574363337383667304a666b705343573566577079624c462f4d374e324b4b564b397a4865365678724c6f725439526d49367a675239634f70686253387664663841785342576d686d7457676e447855736d686f5a4f64517137394c2b524576794c582f71564a392b59596b7a71424a6e4e48435938704743766d6850693969394e696f3043552f5775594e6a4c4e43502b4f4f746d677868476d716a73756b6b567161744a706d36394e72336a4e595568766642656f3353624571597055577a2f414155693335584a304d48437a37514758616e576e374537557a70663861316e3737744a564148386c43536543453269454e6d4f4f6b6d61745569644849547775646a737a6265707570692f69625962442b724b46446d72596c4b484730484f4251555455545663435458684f556d704a70644c6e565451486f4e56536a2f78393777716a5844394b3061454b576b364b4c4b327a6977302f4e6c5853724470776661634764497275706f4e3550546e6d4761574a436d6e3636445979466a444d517a64437635717662683253745544554a53414f36356b337a4c2b4549303732756b6d77615a767448425153517a2f414b676e44526f57527031313532625378686359437a31684e7957772b2b2b624d4f656237444359707753584e782f6e6233517a75584b666c5364354137446d76576e4b716756477a5145636c4f57466138396d6b6d6a39417058564f7243674463664b43703747597a6a504543744d466659726e4f50695a65694857522f636471797a352f38414c72587973746d4c55624b79594a59745276614b4f415274397931646a5830614853497075747338626472715259765551325450686b31634d4649467338785648646b4d5652513332314f6f72716451664f6d544c72334343766d2f3633516d6e34313361532f583330312b44757058586965534974794d616d61587653326238314c4a5a323830355672574b7237744b645342514a4b483476724838774a476d742b7a4939306e39766d5541384d395646506c3464535049454269567850765534503534335a4555346e624f343979684a4f3050756c5630794c7039706954417761624138725636312b6366714f713348343667354946446458546c7237596a536d32323356444a52776f30563269444b62522b54506f4643324a51596e544d79616b414a6c5061734f667a2b344a2b4b2b51352f4f78446e7a614b776f434e7335573279665066534e4d7138384c357469635034316871584451624f30755230484534557447785058524d5445346b45744c666d6e7a6b7071532f77422f4842324a6a446c616d54366b4c4e6d43646649557649714479562b3143536e704144734f6e2f466e55774641726172794b4e414f72302b79734d694d337571793563316b6c30452f326442747a4b584679574834316f755a785877444d756b752f7743326c767a4862626e733859465a5765732f696b4c326c4a35566d76384149704d796d5674654d455375757049644331386449785a4c4b73387634766c6a356665625a477463356e37584a4e52774c65373877676e316f38616d32632f424b367747616854366174426b4c4d53664b4c4f6d37644b676c772b314357466c7232412b4b4a6a4b4143773074476d6c4e505036624a7a6e6478456e7a50584477657335733074574453386b7836457a497a4a394e4d2f63575261703947383678626d383677527a5963396c564b313230436333743733345853546f6a5a506a416b2b33762b4f753476734b3144316d4c592b6c684a30477678704835326b686750626e706f4e316749594274454344334a736f4f64366e4643517a57746f6e77426d6a657a5048366e6330446b65475a385665526f624857556c4b7569614f4638576c526e66582b4757496d4f494f394650425854534c6b796434596631574b356e6c366559776e386b38616a592b696658477066476e416345566e6c314254637a58346273325a6b45576c336c7a457348555973766c4b523332665a77572f7053334e6c7641484939396c43723375357075485354664f756159714b50315a3055705a6d5130394768476148557a2b5147727443324f6b2b79594b43436e374c7636624c65414963386a6c366c737565747471736e327742503548516a375231614c38767447363169522b4863466a744c39697a6c4a6b4b74556e4361567136627168796c3061684e57566b707a6c5a7446616d4f54576e506e62396a72714b753270746c724b4d564f573432495a374847342b39573250767352534259747a78795a7a4e4b79783553357474514f4d4f4c4b647752413773444a66384130317447545639373543467a757a54746453566b332f5a4c357035784f635934677449334a2b4366735533742f637a4f6e2b70382f56526471412b63724d69654a62756648574c4e53345a2f657062672f512f564249684f6b344761554f6b5a6632785456356a394c4f46476c4e464f7431745476385778513464532f77446f367261462f4437314a6d4768376c4344574b4662503641732f64695375424254547768342b6b754a5a572b65356339486a36785a593858524f554e31697056733670334f79653546685443704c666146495944545248586671305a6a4b73366730535a614639386b70554d67636553362b545a6e654e6c70623154506d4554644a7a346c484f7a696d71397755736a5675556267706e4e76512b70656e6745756761354d6434795035664c4a5258794f5673716c7171574c3676715161707978672f7632522f712b4b654d2b766f4375624b436146356f4c73344b436f517375766d665a6e787574314e545230717564715378626b30435379346c546c4a5534765a384c5252386c424f3276556b44516b71644171387161566c6658644a535a5a366135646a4f626c76596e72486639367061442b73426b4638335747444f7139674936484779547379394a38765a2f597a53464b7148546d6830644d4b2f735541736b395973492b2f3841445a6a4d666c534b545a3872566e3047693972763163326459506d3578445656394c4d2b612f4a346456676352794b5754684c79785955374c2f6a5438767970636b61626b6b79794d49427337384863473959435571354a7a35336a4d6d5a7a46614f637864626c4450484354342f597465684a31353166365836724b5738476b2b4a6462627a6252552f765277315a38444d3641615a725a576975536e44393254586f4179472b573674664a484d376f55546746464b6c6d46656b344b66595966464e7343386c432b5375717474717a3473397052614b612f724845476e35436f7274672b7a71585633573070302f65584e37474e41772b477730384547644d47434c416e646b616a503479536e49526a2f5369377048584645322f56737a6370553559444f66787638414731564d6a357a336d6e716467452f4d453357422f51434b4877505a38306b39476c2f456f62554f766e6c714d69747044536c7a75355a6b796742595569795a4f777a34723453323075736d506e574f477650356663437575314e5645563972362f74524466727452547339796442624a365276305972464a2f356a463261527661514e63615562436863772f6d6d6d4e7965583242586d6447702b6e3156754666706c4870613639576e516f6b7550555778675171434d556d3178535a395653564d575559327a65387957565a6c712f774257457967386351684d636e386444536d4476566474356648755676596c4f733955312f32376d426c34626f7339504b506c634e4c476d73572f2f4635796650336e6b4438575a5472794b6132682b5573644b697256307543704e31626236324c3566426f72712f62693547757a33796644325a497a4c4433332f4152485866627845713379484d7a636e66657653705339556e623157734c556c4e4e4e552b6d446b4863355057415649733444754c2b4e6332564e58487879516d515552475a69424239484137355a4e506557704a67446a486e32554f6c7a73657158684d7a5a454e377a4a436f484c6c356c756c487156684d712b715a4c5154485766596e6f744d644279503841377a47363648384f66554f72526f74313033526b4b38317a784859626d616c4d6249574d68376e6a564334552f7743304b5255424a66594a6662427867732b7632574939355759372b6f38543830774d5a6a2f4c65793776324d534c2b4856624b4537346874306a6b79327a354a664f386758774b677336564358465a32674a36666a3977656f4a4b637a5a37462f572f694f3565724246733275354647785775324b6d4f4b376f51614365674e58526b765558554d4f6c45746b6c553563754e733777557a525239714e4d33507562535a6377636d6838654f3238357a54704e69304f78304e61704d445a666a64552f77434b326b5a344b46422f31304a7451414574697454382b4a6b64445a78795a312f78314f6274454b486c6b4c6367636e476b4a54534a433873585376586148766466372b676a67394e4945334f79634757642b4c585572562b4a636865524348616856544c4f753563644c6d447a7258466a61444436556632467a696632342f767563465041645a3562306c5550367455655a6d386d4c44626a794c30565a78595855386e632f4b35354548557a305272714561766e535a4f427766584654566773416963356952747479644b6e526b2b704765553665764a66636e526878783261545a6f5872702b7574437930767271466a557452487a3749683866736d424656384d52537a45714f585155696a545859506638416a757877646652566c4874706c706f4b356468546a774e41446351356f5547532f73705653446d544a476a70706a31546662486e32376b43766c304459447578667050746f63733566716979627044387443546e543734537a756d33336744636671617a49534663714e467176467135354a463746412b50367a556b6c756545695a7a36366a733130707244725a4f6936385a3250427758666341704e6d4443696153696e3256615648653662327438694a534a637770715a6f55574b6e555969706e77726947456566582b2b55354239754e7870414c5248626c314a667a423035322b334f6e50576139396b5a794e69386470504b5650394e4536784e565470306f5a45346b736a7361743172684d6a43524234376d4a2b342f2b507330374d3373757773654332796377546d79304c51756d7861335430545479736c577353426e4736553670545a564c777541737a7837792b3661505035436a4c542f475348455a4f755856456a7666766b7475334f49645a4378687234796a7644436559447071724e484f564f43645a6e69734e39306b4f7a58687a487077425431314832424d5a66483871555677785933324434363569362f6b67636e354a67445062524d52396e376e52357a66707467537a4339497164325a425a4358766a644a4c342f585870786f6c6d4a30395031344b58523638726b5939444c36654b4e516c7952646e3178712b7a5a3869786d313854694947792f68766f52764e6d6b75743864304e43366a44307975396b785339573735326663737937595067533759353146673963624b61556e386e7774544d663146597a654d356d656f3348394d767859795537734770644c6f5630723644305732326f6b7a306a7845384d4d36417a4844336d775052466e587358374f6d594555457868504d326c7453496a68774733336948697670356850706444346a6d4948764a4c657055566c43745a583133665779322f49376c6363364a2f6870366448763553724e55427a6d6c617a4c504d7a31466e35766e6666463655352b4c43784636375437394f4f416339475856497a53646d42485346484a4238674f4f576a37627168506a54443434782f774142707433596d3355542f41456658446638417074546b38674f6173562f42586d346d5a6c7773706b783236546b38513277776f6e48486c544f312f576d7345306d44702f662f415054545a486a496a7176572f77417756634249307170595754575144714266546753774c7148755a664d3668365442625371736c5a5558764e7a716b6e4f5a644d573946736a786b45562f6b7a353968784d7846622f51665063644e6a4b494a484a6e4472763434473546303942716c2b54427557732f636c50506642374a573834594a2f70737250487847666b6635482b58304f63586d486b723342444f443531586469676238314d396935773636686636326955496a7858325165784e4f774d3642547833484e5270313775674265482f414a4f2f444c4f784f677936766f7a6457704f6e584a4f726568516e4f6f3670552f766d4a67705a475078666f706e426d70555533514a6a47784f6e48644974724f2f4d6e794375525232346339544b4a6a783575325a3167465055764e5332476865796d70464b374b48434e48433473704a6e57487855784e5350766537387743742f4c33544f63372b3972676d71763742666b64324e4275786d544b732b5370357a5a30504f4a7559786c536c396f5144514f705854624f7235687252702b4d694658666b42584d566b74474f6b733938394c416a5254436c64415861333872316b48652b4f786e4b5338664e577159756837506334765a5370704b426b3749385a48365431577872347935666e392b3374513152386b6c566c70304d2b3864424f6733324a746c634170564f792f6e4571537733463967542b45466d377365373877395063394e39634738746c7a4f6352306a676a586e7875356f395277726c704757466b78677a733973667955536b423850532b5579574836454932326a70492b52656d336a3233423937433055464a517844386e72703430556a4c4a3968524c4765716830302b3470656950763841333751682f6a5a6334503841732f443261323748616a4567466f2f6a766f794b4b74453633396a6a4e4573483873566f32634e51616b6a6d30304c556e65533351536e767951756141416673755548434f4d30586a766a41716e79503061386d553538505271306b66786b7866627a6b3945726251565239646b59565431726a4b6e354d786257546339686c704f5438707553536874466f6e704972494974614f6738765478394e414a42623541676c55787330666269446e31564b765161334a536d3569683731763165337535374462374644496947706f456f4b46533255334b694543306e72355563364a685439505156533042623068642f74634c57312f4b6b2b6d703365475a754f32793367422f3261504a76383471474a4b787437426e6c37524e572b475735684d55762f4148646252516374554e432b4b4d56685038532b7a6442774b4b4f4e5a3878386151717663785031754c7a5656632b43655241545369364e64582b496b564b343535306b355155463055636d6d6370444f48515a66314168505049514e76577a4b6a54336d65374b6d7a79533263703261536e4e4f534f69596d41796456446f2f686f377a336d4239346b7944324b547037767a4864542b3178347835427265692f715435546d534b7643587a3945327452566b7873453430654d734d4563307533634c366663386f3748506d58396a343366572b5036335767484c727a46645373647733636f3555455a66794e4f62447a36394f644e545747664b706b4475366866554a2f4854682f46557353792f725838435651527057344731786c314e5156707630453042486b5a312f77423051686b636c756c70754464766d436463564f5a386c6b785a792b56575a37366d4c2f34644638526733346d4f6d534161696545727270612b5533733748537736756136726d62444c483146794c557a5a63336b79366c772f3750616e2f77436d53536a3367624741355965426a2b2b5a36315165725839784c31446c2b4173376e7050342f77434f2b6c3547464971686d32387851585664434771664c6174674670443870435a475073366f506545696935366673744a726f307838584d4f52465362317932485370697531427934616a4b73715730524e544c30617157796e7a323058485053544448767a444e2b2f3271616b326f33355050374366794a6e444c6c5a51785838644a4f5636546b6f705935536258757571564c6b726c4631476b3734536f4a3652396b664866353836556e2b4652444e5051716f66566f4e65495466412b5130554e34327274744d762f32574a6a5a66326d6a6c6c4568645166522b596e4f464369574164646575326545395a4343396d6e4a6773686e6e5357737a566d37327366685a5642546c7a4c6a35436c386678396e4c354e4b506e5345536b2b554568376a414741455933576e776e694535653363703556327053774e543955796e714d324d533137454c637a6f6c33334f4d56724a794664483964506e5574417538514332324f45527867463471703748315469446c6e4e31465850744464585232725143634258386339334f426c2f78617a4146696673614c4667426b63383471636179496838724b4f4b733637344b716d496d3048386b2b48343565722b7135636c496f6e426a445758786c78426645587a65357a5445784d4e676d36717a354a304936536d6578493959786e575738524f6b676c2b31556b6d65316e5573503969416737672f435079653052446c6554792b774a2b4e2b492b526561363876673369506a6568716557376c5758444e4b6861566e663770584c53442b4b64774a523677506c454f73614c544476764d78346b45784d78484e4e7356472f76686e39746a3130306f46616e71416866674564712b6652786e555162486c464d4573763770707a4d44506f71624b5246444f73563138466e584a4f6b32467852462f574d36394d346a6d2b673750384170503841327a66784378496354787a6538565a3537574f583844504d6b586165784435467131353747345150673853306e66787046476d713333444f4d2f7a787549782f557339646e4a6258314a34787954363842766a34582b465034725a6270313458342f38416a2f6a3233374b6c34663273366a715a62635255392f6b44675835422f4963756f616d577836456747676632666a427a356a4179444b32727178776d636a72662b50766a666a3370766868466c525a336a63325a496145517a5352787079492f6a53756b757a464b70615a6d5269366b7538596b4b44306a4e682b30786750432b62524f527070367235486a66354b5165714e66715646753750704a35706a647966417343332b6377745144787369694e3274314c3453484a713763345849715242314d79356a3471707955764a31367a4e4d593758784477372f6d703651656a2f6f52367561766966704c35572f53524363726149777170365750574d3658307a517341534b644a536958462b3937695a396b7753626c664b34505630725776584e71384232782f7435666d7948716436595a6e68577934752b725067475755452b6765386949746278624a417337434c4d6d706f342b69346c334c537966704c57365a4c47457166333073506c31744c5a623874683036312f572f5a4b446e5a346a7836377077627042754a6a794d5a31767771666b46424c626b6f594f654f4c697042665a3670763471534d666c53336965304a35396c6641613365542b5a2b51374d6b646b6e6c453742487944457247757532665937546c36446648376f45362b6d5576616f5864304e706454474d516d64726b3953655851445153713852457a786e4543367654544b79356c35326a61714a756576546f464f684d476746735575646c4d5a4e58792f4673556b6373302f5946416731337357622f414b346648782b6452457a4d3865736a617165644f6a4a42536d6e542f6a34647651446567314d324e30306e583478585677726e75397266734e2b4763534f595a7944376e307052576f314e7442327679445067446e307274666b6270732b4c52742b53646571366972356c39796545746961632b4671384e37487a4e414c7a4c537048694a7734774734374c65414b5853353145363756594f664e724b75756f31384a36622b4e307331614e4a506a57726d614e554e687573434d556c313775424d576234305457674b686543716a567a31752f47663032395746354657396a4d5a57697139656466705a5164444c7963727a4174462b53764f6d583155337954776c3744534a522f786a6e4a43584f6c363832373665704d54474f6f7354303639547677563946764958532b6a766b486a652f77437064302f69766a486b506a342b5764336b2b447632707563337938644c574c71693248537a31522f4c394d33564f7366575139756d4158566d6d70614f66736a7135344236712b6d766d766a2b56623437763236467255497a5a71642f55616e657a6249417130437a4e4f62515a7a3430766c586f4a5a7a33664838456632596d534a41444c6e745332657651545879447a354f624e664e4e644c32486f4a4657394674347572453647666178617347586d4e3351434a66376a6c736545786334453850784b667871716d317a497045646549313132764d44763735484c6a2f5652734e68526450464e7a2b5262425a43316e314b4f3654534e3338665a6f4e5a4e3866564e6f34476c386633307a4c4f442b726a6654307630644c7962774878472f6c4b37314d78703850724747334f6a743134736557623531554e656f4856647146426a51707871422f32613565534254787059336a467038784a5a73767966503058302f62617143576a5131423048514d4a50413472515853714f614f7162356e4f6e6374693154455947723476332f38415161663956457138613953664a76472f343642307568506e565172317751306c30716e707035715a6559764d6362505a4f6e727373535a79746a51354a564f6b2b704c767637457845384a4667633951736162712f77447976782b715971456d756e51556c566d504d326d646730397655596775694d694c552b4e335239682f635335633375644f6e73625a3772542f414641665a31347a3571555861724d72466968704f6972597a733251556b694a59705a797843554f6e6342735349664d54412b62513933665944706b76734f457761586a4b4d702b345772685672304c646536447944466a6c514e6b32705a70734f32644c6e54736e326e3436595236626864437072715a58574174565056394f3263376538636676797038377332777179384f4c706a733235306d48342f6b7a6d327045336b54364a387a506179376f70716c63366d4e583146614f624a4672664d373750746247627572546a4830344430522f6874364f712f487638626654667757716e3746755834766b3647322f50794d567339666c327464724e31645142374b746c42637330716d70576f416a3739594f2f414e667a7a4e3474536665616c70453639646643664e752b4448722b462b57616566305a79357171754f46792b49765a7833637264645052532b584a50376d307a696c6658725451366b3747704b67536457746f6d655057522f506c2f7577657266716635332b513676546a7a795a6b6650536644707a496f57643069526b572b5136512b52616647696366756773377046517a6e732f7744593735666c63594a3443665a396e72576c4e3866454f6143657371494732764d6e7a67716d592b4e3739573543454d495546315633512b5432734b706e75534876434f6c6e7a415851587a7243796e75533569776f7a5576663864446a72647154506437445431466f3157667072475556756338765a2b2b7639344361666d5a2f707834326e7a4766436f73483367326b2f695a504e39694a4d374f4f6173316f52384c416b466f6a324e385967333444446f4a6153586531695568554d43424c714946306b754b6155577930766b45494644532b576c4b616b7a5a64544f724a784176702f734249752f7667634435444c2b75674955543172362f74565142394a6f6d6f6b4f54786b31546d31437676493270494a326678704c2f616b6b41417a32433477364878634162614a45766e505a64774f75554852752f66366753496b5238345257436d672f6d642b784a69414274484f4574676c33347636725473774648742b4839544a49582f41424e5431446a74354a786c435a36522b344b58536b5046394b68684d2b58676336516534522b59326b64677942453357324151632b56777356502b6c6d3776424c6a4435537566674638585631447a6843596435774b43466652493145734e6d66514c7872597445394a594f427247556f41625a4f4b497a4352315261764e744f5852386b4d733838394e484236446e6c484f61456d5643714a38627a475a6e49327650784b6650524e4270564f706c7536722f7741657a65597a47727958727a6f302b5146414e6451462f47394b68633551496a76396e4b69545677793934486e767234692b765333304c3266506437786a55743033426e50326d5975483947654c4d707558734670496c76645a6f616659374a32382f6b6d396c3631446130365874516476754835633757724663523047676e356a75707850566a79543034772b61434d6a784d4a45736a5341744b7258616b6e30304d76625631747952467336534b7371765958794d556f512b73593761574a7275745061476f4876573536443434794a5946527765736a3042595930736264326170302f564351724666506845754c377a322f3566356d5962664439413835484e5a58564e52575752316a374f38584c4d505a304832786243354b51653043576c4c4b674a517555665741304f6d43672b4c2b72427954447457727373716d364c557257354c54483457384f644b55734f496c384f6638415a504a4c574e63494e427a48634e79772b52494d704d347a6f50346d306c58475061346739314c31766d554a55436f5a75434c4a57422f483934302b76364354543766596f7a45787a7462776b62426265462b5158715a566d4d386b6b387331786a6a53764e646f58337143484c2b326d546879716a6f50326a33322f456b5641332f49426d44332f4748395669644f6e547235695635763472655438626e65512b616551344b4a4e594330394b337446566a2b64463143374f57705755366e4b356f4f7a35426a46674859643668452f7742746e41717a712f44394f482f49363266695636693656475670654e5852366274444a525830776c312b626c4e415a75566e774f6e756e73495358645975646b6a584b2b493568646e4e6d6548304f42567a3630645a47796e717a6d2f58377431366b3761335a766970447032427239486e61596e4c3064314f5a70794c6355745532616839464d615352524d373233424c596e3974707054474f413539616930507a7536367a69306579615756426f34302b5241456c52314d6c75725479626c6b6f5a396c576638415434684b6e4e71645a53304e4276512b75584e61386558756b6242663235736277335538383958394479656d4e5762692b4f727571746e78764a51332f77446f616164626e303749632f6854727030732b5161655772436f434e674b722b795a694561307a455678776942324d30764b66546e42783878486a506938422b514a795a522f6d664a38636838666838527a66497674674a61564e4448354f744e565642592f71323155464a5964784b614b6b69484a58646e694f666e6d48354b79362b767065505a4d73397542752f724c383730634f4a6548635069775a377565523058573036584b4d326561582b4a6374484b364c5463346e4b6161724f524876476e33794f4d667266356a685134576836512b50304876527038697a36613974716a44786e6c4976314a35596372522b75397a4d76756575576b4241592f63656146626f782f5146336f7245353357366a503852505737523947504e66725353727866452f4a367648413156726b797058352b6f702b65794c556e34367858737a35574d66612b6765695a2f515541574551735072557237794f50614872586e386c627455596d3144757a63663554463439755264532f43736f524242506836575a425a73383737357872715a6f503654554177673865732f556a70314239507a38524843657441585a35636f7647587a4864394b374b71664c34393261716d746761326533595356336a3144364f567978326b6d736671554b643336735a67317a58642b446b376562634b523831395a4d61436465466b62556b6d76343873714b446e6b6e50556c73563435516d537650304c507267524b4e6c6a4f644e74424454485a5a3831414f414f7a465a6a6a5047524776786f39504f2f6d6a2b626e70764a625a7074395050787573792f574431493361596f3846766b6c4559395a34566c5252736f6d4c536f66636d4d4c524a4b6c6b5767757a345a784a6b665a765075744b33347454675058356d35627564705a52487a506671327159366a6c69666f616648667952537755566a434b576657483543516e6a51393452384c33644976642f586e676e6a544a654d62795844474d7136314e5334613056543063483546644775644b5a61714f575431552b3739435a3864372b7541692b502b672f4e7939767631625631477948506a6934647a74414b63305a345a424a6b426c4376327364785a6151703632686952467a576b424f4c726a4234694643713078572f4c584a47756d4c6b61625a4e66674277724b4d2f567034744c3378704e3374574b796130472f4f73482f4f51415a414f4b76427a57665976546e4e3034496d524f356f5979624e4a326779646c6f4e2b72796276326d486f4d306c48785874635038673531484f50393675414f73386f38636e304f747a77686b4244474d70644b6f68596d4b542f41444e4f71684a664a516c6a732b466e4f76446f4a6e4f5874346f4236544d4b323339626a6177474b78556c4b732f675a3856436d3634714773353661383168387a5667786a3075792b7255546b2f346656534b4f5254476277316c39546655476250787364576c545a6b57744c53707564554f3279545030596566635a41784f6e524d6163634e6950534a3144327056577959357278595077745872534d526e784850474431523038483153386b76694632546d534e73697056355066666d6b4d4f4c6556673235654d43316a6d30575761626e46465257423068484d433944397364392f5862793768757a346236685165574a7571673047746f72373956707a5a7464475859656a6270526a6c3962546a756e636d73714c424f4f69777a6d727365756a36584a70483575557846596d596a45774b4439534e5056302f50634e435a4c46554b78702f4a5a5a744f702f4e437a4e677a6e4a74746b7a6454393533776a5a756578545674583938307550525654503731686361772b636769582b4f314a365538352f4836474d5256566557333656584b6973376b6a49497776636c334d4f69704e4c3166596f2b354e5366376d2b68624d75394f732f4951742f6b6150496552616c7642596a5157566e6a32664a4c6c497a636f6d6e5a6e554f7a37647653594c6e45784c492b71616338627967533150764346796e7a743238326334456a384e6b584c514f647254735856304d384d536d704c4735477455356d47757a484f2b6e5159706362375074653261506b662b363933365944456d4d6462636562756b41665675667950546c54725679313651797a534c56546e43635935765630352f7744324b67726e534254726f58714b5433506a4672653573675352794b513268397159342b493466666d72706467385238697a556c704f45593954436876616b464c4b356d4d4f7a72585655655a52396f473464526577754e7641543876624f2f456e7066575a2f58586f39592b632f774242353050304d354c67736c623968706e4c4c786c48746c634c4563304666574a4475642b3139776c6e7867392b5039704249483266716b7136755061485344384f6656544b3846394366564766794c49394c49664373627953545679664d70374e7276354e4b38713273564f463349394f6878394259655465467645766b6646707a2f784b5230326a553663723350505056726d39636274302f77436b644766375a7670334c7236764b764d71367141433774613050686b36774b62414859702b5a424763732f7a53777a324c66484c4d37684231306271556b4455346138384d7878782f794f2b644f67486a58334c35706f676a69576943584d4631564a6f624c574c496e574d6a716f565a386e693271505a32517139694353387134543548794650467874506d4c663841446655507733506757392b586f525870305a636164795839696e724c4f7a5854314b6c705247743474415075636a41464f5a317a5134526c6f50364970695936786753545538316d6775324c49437450454e436c66466635526c4365726b3852505743703952536155623071507461452f4361644d6e316a5a4f6e375174443663446c522b57506e7552547453554b3264475544324a4d72782b39586451706c65584b64444f5159505a6f685079614d7537697936535a37424d58587552474d67742f6a64394f7559694f673258394e664878784d444970763778386c306b393975613035774c513336753262632b7439697158746259797530726c7a306c323962674e494a636f4461453264357a4f5041567436362b6f532f4676444b6d6236634a2b64384c6e616b444d76584c6d485259335143574b4466774a79515052506a46384c7257653466726e457163302f634f394b784d387335486e327874334d30504a5056787671485a6f332b412b4135666c6d70677079636164797332397339542b624b434857444b645a4f516a3261656c66526c3737486952676c727636374a727772746a4e7048457834684a336f7571616e6e386c795a487964366a713830542b796d5648567353626e41546b2f73782b756f505a375136372f413139586238734174413974383871733964436e4b613533777a707a324a7065456f4b4b67614c61702f722f376b6d4a494e54452f566d2b5277416e672b367647732b416543385542484c5175697055567255524c30673649526479567075625062396765736c496963503648697772436159414233754e676e554638346d3842734f64517557685573785a692b4f5a424d636137506d737071362b552b7053644331674a39364b69664d70612b5573576e2b706e4d385a377739484b6b583255444a46436a37453538396a663050517a506d665a4141736e49424a6e79463368634e796f2b52694c2f414e64555039514c4278637732704f7550567970714d39564378524a545a532f5066453647626a62566a47536f31726d587047686a6d664e2b336673505974524751666457526b644a36685478362b6e713064626d69784e7433786975716658316e394145493679674a35345346716d4d49506545366e752f77425247454e64694d37444a6f326f737352462b6f70705475557153545a376e42396c76494b61754a6a54316c452f5063505841306e664370487a2f4430357a4f4a6a756b41707036793363487556336a33546d69624b376d4a6d2b5376626b504e714a4569724d62684d76595574426d483634346a44324b34436d414449486f33394766586a5138487973765a386c4858384e3952354a73626c564f716c452b463546725a7451354569506f77617a556a3776483949766959466d6451316d4f366a744a733530476374365a3452504b4a4235372b5a6a2f4874616e58302f56524e75487346725262636433384e6978565466594b5456686d434663634574533131536f656f4c4a77596354546c70536d46507a7858537a57496d76722b6738326e71373377657231483879503038755854346f7a5873717869344d304d626930692b2f584c6b77545544333454755a3070775742702b464b6c7137384c75643733567a743575333978575a306e33526f743639544f4d426a32326973775973477a79707270482b4f6142457448732f667535784c584833706d73542b50345a2f642b764559706d456b736f6d392f7669375030316f47597673726d4554596c7a5a75687947674a2f6d3651666f3268396b7744357541663630487772586459767344714d352f475554753673376c574377584a745333514e492f774461576861563849652f354a2b715066643367703676502b5036656f4873412f44373148672f4958385876545031427274586b655234755337777a3148646979444e6270463433446d524a3242682f6e316c687a6f6c772f47365850555567783265793950745449393339656471566d6d70617638417046662b652b562b552b6e6e6d477a6e656e6d3735547336336b462f4577703348626e637653687a536a774f4c487878553972666d70324d59726a4a3072744943702b54325a74695875354e5969596d5a484f50312b38572f4a2f3869664d752b447638546c5446355073716c78632f4a3363512f774355596436386f32367a4439375759504b4e4262532b3554536c53776e6362727942316e64744f61556a4f37715054312f62672f43727772384f6651776644715653542b6f2f6e484331764f504a71574d722b54596d6f4969386266573359424f4c6878574252505932627450614f2f48387056324a5630754c57315a314c352b47423265793155614d624961657a54746f7252504779784e574d2f3841386870364a5177614571592b55314f6d7179394435446251357a6b4f6158325575365a58386c2b314931352f49723868504850546e786d76514f694443686836717a582f414a696d65542b4138566c7064414d5a357339794c49614f4a59356978454f38366c4c762b36775532517576536b7a49386b2f3531663366394c4e565434463648614a4e31744b50527a32612b4e3544753666696d486e3069794f33507a71415a4b32516c735456542b75425a515845675238563849664c364f6c374e48617630486e573879383138303955764c4e4466387a386b324e2f794c536337376a4e665930444643754e716d376d713554372b7a35733969366e696b4341776e5838612b70627a2f487469497258734174675a724d2f543550314e5643304b7a394b56736965334d4b456133476854794f45335270516b61413751734647315548376e417a2b492b566d5a6d63794a567a4a3732656d314d734e6376744e2b666a6e70383969375555734a504b56317553626c396e48536e5a2b6c536f2b49414d44344d782f5a67517735644c337a636547624258783871344b77716754796b6b5161695a3258536b585a334c3531792f322f774279784a667845494a497143414750464e5456526e55554a58386e4f7151554452755378303857684c3964334879414538664744734778797541464a47786f6d59476f2b54746e6275456d394d614f7a656f486a465447794c6e7a6244572b316e6536426f694b763841646c524b6a73556467387a3642553376654951426d48786d306c4d532b30396976727847302f68412b4d702f4d7436636c7733654c36476975444b3257754f47754c572f69696b7939714b76327a7a73735734592b4b46687a6f65594c637239544944335a323365366a4939537634512b70352b6f546649505254647431737a636e5052752b7565713143504a676b7968646f386d5a5334356630786c32704e3945775144517061347664544b6269382f57726a6d4853696855574a6f382f6a567a776f565670726f4858717837643462495a616b5a5756686478744b6d6c4f6b576251377665554f55744d7145555472545171756c6d416c65627357354569695473587a364755544e46773261394e6e51524e5a39616e52586b6a655856326f573569536e624d456e506d6d6f4b722f70307a56424f3476563046654f565246334c7a654f6f316b334d32632b5949427870437375526578676c2b302b775379536935624f6a67776173794a5767536b74474d526e4f4f4935762f414a4f6570656c356c354e6d65504c70794c745854702f6d2f4932717a7379326961484e70714f39584b4d6d506e493942395539487772566233556f444e506779512f36525474534f4766456168666d72356c76572f6a76356c3665654b303672394c513852757a394c54665063332b41384c626e6c673676496337487836585a2b74553648363635547a3568364f444d6f584f4d5738445854694e2b5a486c662f452f303938513951505050493844796f4a75757a2f487530654d687336436c395055686337716332615a7a464c304b475a7374776f34526b5048474843367a6e514c2b7537557662626d4936446158317875386438503855772f4a7648634375326253544e50514c704f2f55484d755937764632366b6c79786a6a724b69376a6b4b34436e5554484e502b6a436c7835316d5a6d596e77476746486b4d6b486b754c752b5066653056547534366a4b74345638645a71305755637a5a4b556c5149772f595a516b6e69772f6e5032416d62684b59762b745a6a48435948706a2f456e386d5043764a5054334b746e446e7a545372314b4d316b4e71733565735a54756e776e79704b4e6b7674334c4e5570696b4956746d637068396d4359454278366c4a69336a6b626368363872716c7a38646c505867724b5653574c537071714d3676526e6f72745a6279584c705a6c3477737849794e62615154493435766c6b6361506557577a38763244715479724938715448584765506e6552447435754e744a6f6d3046564a557544577638693646506b63637a6b75354c2f4b4e7a3754553934487133396e4b2b7164563869596d4f6f756249395473484830673062356f57527563734e584b38647a307277726646634376537456315656306f773645374e44636853636f746d3471362f3461594b576d44594b32727578787867613565764872744242347071616e4e494f3074763841626b57356a50616930736c6d614470492b3056433735715a5335494e4254442f4149302f665439747943636d394b526e794846526c5778356435527162506b74384f6c4e6b7131382b53444a71713376626e583539684a4669363247314b5a744959536370616a2b4c376867454c47516d483964557a574b3761393473574c43794f756b346766494f75704b654d4a734f3932686f565a2f6174617251714b627057526f736d757863324c732f586d5a554a6f6f70715554434e314279622f49354e7348716a354771364e694430704d6768646e7248354350736b393377354b706442714e41526a624c4c377058555443684166425143666a53485454735439425176656e4f57655038664542437235436d4946433443797853326f4655746c594b35325543544f304f4c76744432713936524468383344386d70665449352f576f3664536259776f434b6759782b3255597a726842437868577361422b557a354e777672664c3745674d594343566c554e5831707a5a4e38434a7442684f64584d3533563935476d45557055665a6b2f496e354641437945457263414d4c343141423531726150494e7856514b4937325579702b38316a2b44464d6e726164512f623731387056517473396852754a696848716849336675634461422b335149696146467a6c4444302b51673774624b3568696532626c4d6652355479756a6f6c2b69644f77416638696d4f6e357852383976762f6f484976565232626c69572f535578356334696866654753305268396c546d6b776c7347655565664c775767416537346a61414566395a7a4531374d5a79507a336f584e4e54545661376a47645050356f6a4879657458755972677a46517346794c54476c7969452f3843497739332b726f71367a6264747a3043454f62667476794d33506d4862304e422f36434b584f7674744571666d742b7353684876794c62524b58523577442f41474469506e364c676c2f56356d49366a646a302b2f7439666b333670766d6e6d3844302f4649644e4e6c7861336c4d2b684d6d5661344b4b6b6d516638754756374a3943586f47736e4f504e50324941776f3650504f7470312b4c654f7a506f622f5a7939445a4d65537a3179663539722b51634b61527558497a6b2b44384864425362436d304d314d726179364d38694f38516e2f53354a4b61662f6569354a7a583970744535302b794c6538672f7452666850566c5a353448692f7146507767714a4530586b764b5a4244695a41525252666f344a4e4d656f4c3535514c6f4e364667472b4e583130783052487447746e6a7767556a356c2f62412f46444f7950727a4c386b777435474869326c735565594d314a4e76757572334a42396c556e774962535762596648506d5342686678522f584570717a6d4e66556a7634446c7036362f6754742b4c3664576a364d314f38383866626b336b6a7832792f6865525148486f35724f5a2f31454d6c496d635779483969535774615143306564393441485254576d5978614e6f35353745564f4c546f53575473793773726e5a613046457852356a42344d76466151386a36526672397054374f66436168763841685035754d39703756357337754f4231462f434f72516d394d4b5a754e5a446e576265356d6b543136566d6e587236386d586a353843637972596969752b616970504944754a637236453070446c6a63785535632b72323547366348713136682b6c724e435846386b31764a416768716c312f454b4e5234726e4f3378675447527964654f315570446e75737a364b58302f5a6f6c4361594f6e4e2f677250624670694d447a3365552b514d33504b643379436d6c6a7a31764972743531564f6b6c334e48756a5954752f634876553964503270592f4e2f6b73534650522f527539786a33525846646f4573396839466a3544436959536f614d4c2f41492b52304e637841396e4d56725447513645387a515a372b6a2f38636a61372f41473248612f2b7a6835384165566563656d506b42353453462f472b552b503062326f5764782b7445446a6f79344a354c425a63546d537261424c49552f344f34726a476b723338507463634b32694f4d6a32562f6a78356871725834764d6c553153644f74773664716b5a475565676942677166496958357156416965704e774e523946504f6b66325a6d6b4c2b4a373574713961354737474f7a4732733638347a2b6a6e577736425361674b71585443534e4451566a386d6d5578716b735864556c3076412f7744676d4148397178494c2b4c4f334c6a627779504c482f77444b4e665158766e486f743663666b78695954387a57394f764c352f46664a4b6959703542346435656a4e624257714d53454a342f2f41437063346b74537672786b646747716337476337332b78587865394a3437683433714669755472773461467463716966334c464b366e72546d745a77655657503755494f63546a466e444e764144346945506b2f7231513534676c7454784571356141456c2b36686a364843356e794a4a5653415750386b326e6e312b39486e434e524159462f384669787a393535444d3032643662692b50334c55686a4b476f58796a73716c7355537a4331784c6a3933742b45663041652f6a674c3245526d5039503266724933572f445838503937386e764b3579304936664866537a4c316b7962336d434578533163676f7249563557554f6d35444e4c515a644b434f64446c7a674f2f7657704d3342386d6574715630346a486148714e2f482f385476526a38633844437a66546278374c4859546b302f59387031342f6d332b352b715448416979376b4c36724a546a5a6d6d537147492f636577636c4d7930392b4e4842653937546d5948642f7742422f54767733785878584d66752b4d362f4b5965587a447254355130646f334863792f494c37726335582f41792f4e724d46664b57583970396a712f6c7067547a6e39636c72576d3249366a6650417a66497649594d7144626f30354773533369554d6f567a3758365337744364436d2b4f67394b747346487a4a3972413739656f6153596c73706b6e475a78786b4e744b523261676b7a76313950714a42506157744e3753616a504269714d644c7a456536362b32554c4261676437432f6c546a5478514f4c3441706c76704c3435336f3530383763786a6344524b72567a703151614852726e726f7375576c5555792f6b4e6a4e4a48742b513147526b58482f774366326e58337a34514e467637676e39726630672f507a302b6d78504e647a513865387738666d6f387038523830795034586e6b4f4578656664623957692f546c4c6b506a703671376c315475374d7330324f4c35546f53466e39626150744e74476378786b65503841395576374d666d2f34362b5679354872643562552f437248517238653879386578624b2f47504c63434161486e6f3831442f625932506a586a754650776c2b31307a4f453341396f7539436e744d586a464a46702b6e50346e2f683336562b4162493665514f76366c36306c486a324a732b572b53644b72782f617378574e6873785963484e705736634b48354a7659534b784544503767554a496c663157327071326e386f316f394d36386d4e6c2f4b6b516e46445163675573596633436e415231394e6e736e64306e546c577958354f432b6b5875637046375a48324f462b6c38356a7747773048697a62435a732f615654506e706c6930636f62744c53705932344b693137347173684a664d73476552614435314a6f5559683868562f4447726f646f42456d49764a39686a4a6e642b686c5235573939647937366c6144705964566963335055346b56554e31475a7146754d70706e583652642b72394a4e33484274763641656d337135354c72655462667068706b766e707479506538723858436653797647504b59716d7a514d35684c73795738734b613657566763624f646839766d4c6b314d3558734f6c37566a4f373468316c394550587257386a7a735873573056497a44746550616d54735a325067584a316f794a6d624f65496e426f587352316b756557744950702b34372f63565359316d797a6d76534b2b57424166376c33346854666d353641612f6a754a6b706e395650434a562b552b6c657664486e73627473426b755333457564466564444757335436796e506f4e694a4b62314e7553436a3539473268717870586d5a374e756f384e506c506f6636772b452b5665512b472b582b6c766d45586c47484c647a5a683050484e66354d584d4357653469577a686435504b7372685946722b634e714b68614266356a2f587178657378575974304661506e4b55474a4a3141316f7651317158784d3469646a61474a7336395a5643662f41416d574839383738784358783943684b75463064516b6e683030794c4e6a56437a6a516572695739347569646b67333949696f45474a51497337776a4e762f414f4b4139487636356e66704162714437587659797a35706f4b467455794f646e5a79366c7a4f4b5a3266736f2f47723466616f76325a394264674838546742725230487855756657365761582f7442523268557070365539482b317443306c78557932476c666661746636622f6776374a6c3159652f2f414a704f364d326d632b5166497a47715146524f7931754a376544396c6a30734f714d5676595555314330726f623968677248696d70454473496a4156704d3154767234687971575a5645696f7533544d467637357735756e435170352f4c4451396932504d706551732f397839366f784d5867435144686c574a2b4f6658722b346564766e72716d6c4874424454547969334b426a304d747469424c546d3772383934304c433457416241516b6c2b772b7043674439344e75336d7a6e41617a49524962346c4d34623078736c3578376c67612f7743524e6b6b79574a4650746f71367579482f414935316f476d59412b482f4141353733352f7439677654777146534f6f59726e7a7a547164772b396b555a4c2f3141536e6d505537424d472f3371364b584a2b4f6c762b6e676b625571643447565274704871775877696f4e68663765677058526d2b75505a563930522b6376314d5141422f6f533533504e7643352b367a6e563563377547517553314a51464263705771516235354f726f366974483775484f616743636e6e53482f636c4a38475a514b47777638414a70385542364277625351433645684b4e58316d6e52492f51574d716944744c6157777a416e3479596338717a457a5a3752594642734e7636353263506b316a436b52504d6f5064504f52494e45392f4152777544544a4b78793675395559696d3739664374334b6c6d72702b37396979665039353638416e4b546670547247546e51347a3439427a473753546252617637504933786a556e3453466a68574845645167763850397658487a325266724165384271784759596f674b543535544e716a2b63776c682b7570544f4437417a334d397841665255507649442b516a4c6f45576f5979685a4774443056396b374b74626c3937666c692f3467557462695535397745785055706e2f41456a6765796969386663564b672b5075642b37366835636271584e736d6a6d66644e78524c63504165495267687751564e2b65777875597966364a645833392b386a4a6a6d476a6e787072586a7939306a76462f626b39534537486f666f2b4d4e7336316e696c30665a4a3946454e314d30374a4a2b4a306736465347516a776964774572343935664d5857632b5663333963757648506e75734f6e65576c4f6b744c7147395a577632716f6170565669466b33344c6953766d686c74554b334e2b30616e4e64395a6742387a543659634d2b6354534c4c796a455538637a5237514573397955364d343961617142627174475563347569544949355943565343775451344f3858773730676f4a49667638416944736f427a517055686630455356437073615347454d342f7744634b316c3956613172476b4b4863556c342b3332676b2b68442f4a7447763752357a4b6a65566a765a564768542b4f2f5350684f66715434376e7a552f493735467370392f796a4d7673363175514a6d4665545a74656e61322b634f53633756525955796e667a587a70716b54563334554b466630303947655951467847734435527873383469744a417072384844374b6136667177732b71786851736f593734703358364768632f55724c7679432b796365726d4b6669582f57515569466959454578475a7743475851372b527979463868704834585579305576722f6a4a365a4a363470632f723465644666316572595141326463714a694633444870664e416176707069746e594c6371444d36534a36645837635769765634706a6b6349703069313374346d69436573757239332f4c684267394d54534835315543632b55352b383645545a313636536b6e6f6c5749535174586277422b464679365a345539597635456e4f48772f477635563964544d357a4f656f4e4c79517461312f5a65794a5a38686f397777486d58636c346c7656582f44754e3552436a2b4c68617836305649416b6e796e2f41476535716f4373373832576d57615858584b4c4b5666657162384e37656e506f4f6e55703266584972684f6e5452595878723456425063456e414d2f77427249457359556a66796c6d31444574636b69453531484753397545632f55664d76614365342b564f2f6a30304b6542423335684d5a756a7a6f746349536278667a625477474c64484e4c574d774f2b37714e676b70356d456b66694847734a724257786172434658466d71746a6c414e434f4e634239414e7a76442f79793869385a7364753733794d58617333515430555a7446633259746b4c5a3139627a535852505557705175567772436839486157326361564e41456e4f644f4a6a4752754834782b5276686e6e356a6f616138594b394a4764326f64664657797a74543353356e7835664e6c696c546a4f504a2b7a4e4f634a776d704948433446562f316c4e4a72776a6c7a3951373874394e2f533731497a5230555635756365685a6f4e556a4e794f72734e357a6b792f4a53764a7a3154732b77756a51494234626e575761564142387068616d36617a615049633576557a384a76444e4274516c6a53356a46797047384a453965734a754f386f52526d365561394b70746a7544526f776e6d394d6c7354704c574166435857687458566d4f6f353765737634454a6e7a7257654e6b2f42767a2f415075785356546d79344979545450714c3764614c5071726b54476e6a6b4c576441686d7456777836354444307272523136445454793738556649386d7251564e6c304d784a73322f7743324a7a68773548794c4f5750546b317436716971564c342f34456a5a4f4e41384f425a4b464a742f30375631496a705055616f626667666b6d667465515238587053563573477771524434386a6d2f335054715a3477735061565054574e783575316b7a694c31486f546d39786f3538334848587245316e6d365441726a766a31423449736873676c4e686c715748564e7a6c4b39516e315a54354b6170394b42575855372b4f6449616c4b704d7a4d663546742f32754d4f64396645444b384c4e334575485271685a6e474f66466e514e6a305a345a59737a6b623968744738305a315a62755670544f2b636d70585158776e304c715671556467316b55756d5435444c53705256464e665254734e632f476a305531797948723968354f5a4c6e4d624a7a654650563847663670447874596774414e4a557a7168716a746d30642b4a365569314b3671474f33584b374c6c496a6f353057466779784c737553746a41344c5a704d3335724571543765674b7451664d65572f50746b496c356d4932576d564e337359585555535a613948366366474c6363656b365a435671585a513679512b5577676f782f6f506f4b527a537566654661463130797a77784a635a6b6a37465757316e5446476279614d545937486e6e5431707a663466795267514e553877776b694a6b54686d644c666c6166577a3068696638416b6453547551496d5532304b314a443545357132646f4259434263417a41474f5633374150624f535a65657a3279593471644255772b53307752364f6653762b59596d325a696147726c3651364332635358412f51587439347a6641535364664d4a5648704955453639462f53766d3038724665454b7a78654d584a6e7269566d5a444a66644d74636246794a6a534a304b542b7a2b5a374f4438515672724e6f7435334e79535659704f75334f624e324c4b617871453931706d574e4c4d7a562f5431426f6f547a676854776e2f4d662b4352704a59425a506f6332582f353650546c4d796d747273386d6c6b6f6d2b474f356e334e4c3235347058487236562f6179704c617a3230714363365444504d57382f592b347133374d6a336266322f4f524b7950554c4b5369465776646f3542512f5830757172484d444e6a6876354e4d737638416d6331365253717a7a3641664e53487a65326c4e4335764b316f694a70506d4f702b66417946553748594459714c533974556a587a77354c744377705a3573334c512f514b54534b786a4e52712b644976676a5076796b4e6637506d462b31496b59357474696e4678506a744f6a6e50545a3269584e50736c6557574d6b704e4b6375797363786b796469632b67767074703759424837797158396d6f6357654e6767376443366464476c3371654d4454676e71757963646250686e44535365777237476c4d75676e7a4c585237506d6d7043546f4a486e3942476462776e787a79534f6739576562366b476432574c576d687a63636c32646b6e304b4f516478636f447a62502f41434a3168754965726d426f456e7161476b5a424d544e5a4666582b6b66702b6345452f66455a74656e487a7570784537564e3939705066316b6d7a3966756c523258566f443636314a6d36612b396d4148424d33725168433236667852362b677767395076486c305759323934626179355a616159475533745132794a704a347873326e4a55316b613775354d7335487a6e7a41446949767374634a7a4a6d6573587a363841336f38563854496d575a66695757664b306f566e75314d6d4b513746555a7638414835766164664f673465686e6e734a585546566b5243314d7251306d66704b2f686e64663850326b534f4478767832664e4c6e50424d362f4f7461655a6c5a3056764e4c6f5639324e5a72475564324d2f774432615571316b6731756571616755687a396b72695579567a4f37744448766955612b614d4e766a4d52646177464c4c6d6557664a545762326248665a547a76415437714332486a785032424c6b485731676e347a547876743467376d5166587a7872504373376d392b4f474a63724b37427a637069374a714e5049644349636e6c583248506e39344479733576305a767063744a304e334e75474b63726b6f317a743862332b2f794f6279342b706d30693454616d697255375972616a4b686d697a487a7a2b527679756e736d53656145797041424c4b686e6a553655546c3646586973315433374576644e6c426c6f7a36514d5a7254573855356c3359324f61565879436b6a42374b7666384d6867615075577477356536426d3975742f4e79616f6547334f6f484f6f41316971577964746e7751576678706364556c2b354f30683075395972706d3454503567762f414e63375a345978762b776b676554587a496a6e5a34785a665171682f5468663247687172593445307a39746e4679466157654431334c2b514f4d643267774c6f553046505364415737354f3355717a5a457774566e72746d78766f55556254612f7032434c722b716f346e3230546e4b5641724e342f4b6c4667684f6c6d676d57626f4574554864434d7a7a4e61376e555056626f48305a334c5774727168754f7159662f57694f7957354b456649417436667a4f4d43614174444378576f597a4955786f72757a3153614236316168692b684b557a6443654b64644164466a3073636e76375974764f415941342b4e355173507a592f4c4c5a5572476d764c756c374e504e794358645465436b35576147306f6433486252382b66393375616b6b6d705a6b374d2f62766135426a304b72557654742b47536a2b507570793664466a6952486e3035595756717353335759364e6e4a382b5557554f46695351625153436c54755562457164626b382f73434f57664f31544e724d616174666b74444839673665447a6973364256624552304c594132526c6c5a4c763030654a4b62392b38466359546758375569655a367073386f4e41424e5a7574514a39652f4f6547554150482b5354793557577a763841454e48576c436f766556596577426f426b79556a2f56517466462f483879566c437a5343664d63564c475654746c6d6f76615054676d2b556e434c6c3646557268714e6a692b41352b44317931652b6349395259315279365850704d66544b352b4c4131616b704c33543677563150556a2f656d64634e47656c6a754c4837437358394f70353741644f454a31475a3434326d6250646f707137594b5a6d5769445848717648396d626879715678366c575852704b6279635a715a592f72653166575638347933782f5839524136754833764e487275624a556c5638665152334d6b695244376b7752494b61552b7258506d6b6d2f77435a71416243717747384e74494335477749646e6f736c6b716d2f6b6e3136576a48704b347574597631565a694c32695a50386b7936786f45526a6f705677307137304b51506e76384133302f36415872323666647173447a5a6b7a793572704d7a55303837594d32626c32665a70647a5a4e4b5839466a304e46325743524d6b7252795a706d313179516b646e7435665071456132464345575a744b444b7a586149304877587a506e6c6d6f7748616b786b645668435351324a357955344771716b7470494a6e4d70715530625a33524f32513031754c637a4f35463230364d444e773852416c4e4d346c42354434787057476f365670354d4c466b4f6231503735583036582b2b4570716e302f77424b646d42382b3031576570757530437948364c66727a6a4f2b575a6d4936426d75476e6d794a3175637a533468476c5731594c6438625a7665664446552f614c43635a6a4a69524a6f362b7451397a6d51733937437a5a4b66485a37384b4e2f644f3976586877666a545051346f4d32737a55364d4353446a396c456f5a325369672b5252555372486c56427831593972422f6a494c714e6438534d6a6e33756353344a615a65755831587a45696c4b706c4a716d6253304a4a626c2b5456783779724e556f64726163706e326272624d616857693666445972566c6d6c4b61686c437374302f666b2b7374303551652b496c4e426a52783550503742686d654e656435353531576c56384d5a6c524563644d452f30556458507663772b4457757a7451755757685554473164464e704a4f5a707255664b324a6d49374d596b6356763732614c387a3854764b56326e62566f2f79564b454c78325352366a57664848396157764e4455476e55676c31462f5a574d2f57696f546f7253747a5461633354374c4f64546950474344633772346a2b6e342b4533766368424e79744c53664c4e6d326b414b6b6f746c4e38634c55366d6637482b30352f7441527057336f66566d395546307a3438503233616c306d7537504263456b73795756336f717a4b566a31766351574e53583775743241377861702b4b6c79442b76564d39616c3943553649616c425a55564f686d7167537a526b38696d6a5769653655436d5862466c327930616b35363148632b755a43516e43536d63394a7839354736594154576e5a674339654565612b6a7154567a5877776f6e485837304a364e66716b716e6b536d78544b474f33707a68685330374a32316648595956456b70684c7162426d444a527a375a6b54335653363872332f77414648464974476c55463849797556494a6536724666434d5965306f4a42633757506b6656734d4570444f3278756e52714c6c68706b737169466e452b2b46564f6733367677616e376a716d494c4b48564e2b517a6f3537716162426a427842544d5941695647724c546862486379774a6779306e734b702b5457727a4e4c59735a5854534b704d2b6a6930316a50375766745a7a4161566c336e783069766749465633526139355a326266526170756333353953356b4c72786f314162793953487963627155797262516c66566f65505059365958742f557a585479442b7a547973655a4f585a585843434768547a522f656e4d5a5a504f6c624b64433459326776576e6e6e54377236706e53304d436b4b772b5a5148324a694a3668786a59326532504e5a55374f794a7239414e445845513573445130563757584d334e705051635033577a70767a594f7a542b77766d64583032726e44715a45676c786b564b52636d4b656e4236544338673138745674532b654f4f6c644a53367a43704a33575a725364592b757869577042386253456c31476f4a3637362b494e346542614a742b70426577565651436b6b545854786f7676314c38716e4f2b4761486a387578624c69456564556269524247747876534d6e4472612f644569786f2f526e573238333337637274397441785661624e6e4f3578333149565a65546c3630656e564c2f754771456c2f56722f626964784e6847416d382b2f31574c544559462f384167766f4e354c74376e69635a7047626e33386b697a594836726335515a3955386c564547706a30636a304b464c6f2b7637724a6c4b506b7074597a693546542f414e556d30523147336e706c2b466c6d3832557468664b46763159744c496d43567365785365677572516f5769754335587a5254736f59533565734f6b307871636a346144657a2b733761735634774e3076452f786f384f78326f727579394e4161436a636144307a705653786c4d6631494651536141556658565650373367685a304f50594b77477642674f2f724f627a626a484e6a3643314865435976696e6a747563334b78355937485454513454416148436279572b53784a484451445075675443457a6d556d68796a4d5068634476596d73576d625978776756646f2b51356d6649766b7537544c6e6e6d4964786b30306e574a4a7a732b666b6b626e6b44394a6663386449663132675548534472674a33362f6339774a636a34727a2b786e59376a35664c6c3579465658634a54314b5730693533524a6c6d6d3772474d67506e484a594c66654b50384163496f53424e6b33386b364d4c51586e494b435331617130716e71725a31635032723948556e7334596b4e797769376e6650326a334a5879737136414434674242586c5a444c6f4e434f67715a5836336a6e7a31774453743036317a30424572524c34797145614a374135785a385638582b5953663778584b4542387139536379694f37693447505a7a6d685a4d756d64446e325a63386853484e4659696a34714936685a4f546d714c356151637879776f482f414c485a694a6e7041687666566c73385467324a70686f6e2f6a796738683066314f6c44357a6331765a44354f6c6f69413646514e4552443476726643427156377571744e4a37754967657836694d5933587062594a74657164465332503841306c556c76305556702f584b4336756a726c30723530536330784f63334c62504a396c383170337a417275373149546d7a54544230557166507a33563646684c706559794d354c556a6c466a6d7254797a55396a32692b6d4e5147356f746d427747633749385a44565072466f5a31627a5632697a456a7a6c3970626e4e73307030665547714f4b5375646b764464474a51715830354a6a424b733162576877506b2b764d31724f65485557316d657244486f346d716e4d6e3073736d71354d58667049694a5831575772364d454b7672324f6c515047422b6a716e502f4d48456a3264375833666d44716656484e36637a6852664b53587a614b336f357871754f6f2f6b493742756f736858776c75642f31463959585155646e5370426e77415252736e7867534c4d75795854715a46704a72567079766b684d5831774838476f6c5936567070584f5853486c53556c3262367a6e634f4e5173596376506d43676b434e706830327a71656c6454456b747a31327547454b6f5755425a53315a61436e665946564648754f307a45562b2b6a324878695654424b73625732733642386c4f76534848565836664949352b4439706854452f56744b656e4e46762b44484c6158434c334c6d64385038416d6c3037566862506966725835643433326d2f782f55364c47612b624662393130306365704e4f476243705172677a6e44443854474a4a50737051364e5878416e3371636c4b367a574a366979562f6b39787361476678746e59666579466e747535316474344439327a684e6d6438714e4472697a7a4f6c48745852795032652f774355692f5666642b59734f507a663070386a526e2f48464643376b7332597030584839316e476c6d74485578452b5a737a685271446439696754465a4f4d36556b5148375038363476484749454c387339453835796d614869636349737a474c5375695476426d6d355653364b617077622f414e68547065585661536a6f6130614f2b796d667179624b56505a6938392f45616e2b5a654b68344c71563173362b496170476d5657663131714f644d324c67624e706175317a6b4e427a6b566656662b32546838436d63584e4a583961784f654d43706334322b52392f682f44634e336b326c396545612f774347793337656c472b66695a30746e704d466359584b6e4d34394a694163622f6a3879675349543278746d4e30445a7a306a2f746d666c3136336c6a616e50444a2f5458785367736d78586b486e68706a6a5a796861354575626d457571744f3669676f317242677a38616b4161416d667334564c612b6e702f4675734f6e5070542f626b32507879583437726150357065555a69734b6c336c4e486f333446506d5a76682f6d56306b6d686f4e3863386770305049466c735935736f755a2b774759574a436c314c42575a3944433274462b50752b6e78445a727631744630496552526a6b74596d32436f576678457665596d65624158617161425a57352f4a6f794c342b427735446843596f2b694c71584b6a75356342753130577a4a39545a2f65624571597238794666732f6b5932706457775848596c4c6662517771745351694667646e424c6a39377a616b4a596e646d4d64417a6e452f4e745555773664336a553356536873563871537839556f4e314c39424b58564758593555616d573539522b31456151675279644e685571636268575049654a622f3551562b4f362f524c387a452b70666a724d2b624439614d4348796266474344673563573767306a42706a6e476d575a46412f566f6b593963774c547967506a4e782b38306f3950324f2f764e4c624d384b44673039376267493239594530376e314c44353178335558574d73654e4351696431593163713933554150532b50326637574e614b5638362b783535467233317a6e34376c5a6756386c62687830367735733056424b554f726e5641376d686d527773544b504552304f597635762b763931546a3673466c374d353635783145626a696371746850737237476e536f6b584b50666f564e546f4a756e5853485a7168426366452f61344850594e452f783041616568377636414a72797873765459694668365047524c414e452b454567636c2b4369487338376b7647483953753454472b7a347548786151344c51396c6f746275346749565475424f376f634c6f784f344473356e78734f6e6e66664a7a76766e5679524a51304f2f7742585663577a367a412b45654778786242796b515a5677636e375a382b434c35616e616649366c7555364f666b54532f794158434a54735878662f414a4d466d496e7a3430342f4478386548362f514447614a633061474c642b2f635a6f72645531376f357955326f4776416a464a75467256304e2f78594d774437782b4a596448733974764c353951774e2f376b6c6c725a386a4169556c4b2b6f44394f374b564253437731724d3652355239676663416b4a6a4e37774e5a2b2f3841556646792f774441745430693958486569486e4b764e4d624c6d326270637936575a576d4b455a3744764b4d616a6f2f6969425253396865376e752f626b6b662f48735a3776692f714c6163336a46687678364d2b753335552f6c723673592f685069484d6f2f33663351386d737938764a547a50385754634c7458753370426c3965576632566d6958564b59447158662f532f7941345a69797454543071356b657366306839426f66547a437a386f4a4d3354313638614f4873657662427030443154666d6f683179645a59416c494b3748764f61714e595a385a2f586f565837304a38323939386a5a724f7a6b654f564d7a2f4973746b63466a644c537a7049526c304c344d7a4943706d66343339672f685779364d532b4a4b57394761453778656b686d6350426f426e6c2f71516574696132485654564848764933492f4b5578497167705a424e70664b76617a75762b622b636c516e35493635566878564a6248373630465474544f6a684d534f4d2f3930582b3443506f4a694d3950734879424c76556e7644523478346f456c764f65466550374f556d6f752b58793669307374326c32616e534253514268534f37785078667952496e362f5a3948664f63386f38665437364e717a756c70314f73314e59674b375230614c62474e71645556492b3974416b5336487a75457665776d714d7950686a306a50322b704552455937685933704c366c375070523572343735646a57567a464c6368567371775345326e343554534d3738393666616b507232516c51747150635058632f77412f3178692f2b4b57704e6f694a6e69505437364f656f4869333542656e666957373450764c2f6843646f6f74386674664e5835463438703133386365656d66747a362f34644f595735536c4b5a3247456c6e766e633237335875382b30545331717a33697731654a787179594e4d334c6c6c326439736b486b434d703035794e536936674a2f48755362464d71744134364e44332f414246434648732b6e476d6e35416d2f714d7a6e626e686e416b3367766e5a2b4f51737855353932584c61354e5936715965364f4c2f44315a377647755072666b4a625048724247546f65554d563841657a5376725762654f3061617a6d633247314750366d59752f7744487a4d3866303942584a7041754d6530726c6d72745a556d696e496a623476316574505638507a334b63756732694231724f783354637573316d4f45634a674734764c4d4c4d6b437a4d357430582b4e7a664a4b6c3146585752596355302b58304664525032765449344e53726a657068425939534a78724266786153717a5731757334417652395236637a7936462f336f64536463646c46642b6a584e4c4b32675a4b4b6172312f5738675631676a6c32316672696149344448356c3273347563354a70697352474a34696d66555031775469596d6f5038356549587478614c705a5575677a776e314b7973594f47304e525a30532f63477866362b543677576243715730554f2f664757696b5a345278486b582f4a6a64386b7139622f5050494a6164444f7a397a53667051446d3367635830623172764f7a4c36725562385535547545673578352f42303275463465772b4436476e57753273657567642b47666d562b5476672f77425a2f692f724635686e4d6c58487a6e4b39692b7541677a71334f7a6f325a5a722b4a6b71724e4a6e53453039346f4e4968397165475073744f6a707a786d4276563450384133412f7a4f54345758714c3462366e7a65546232544849486b4d43384c4a63654e694757627774475658456c326a614d5632663752637070745455584f6855487356684f6a7035327a586f42657a2f656e2f4e2f6578754c6635483455626b7a4c55353876682b4f476762586d757175796c55617751544b70387946464348544d7a575378715353715776365839542f4149585269635a7849397248396b54386b50492f796c2f417a77447a2f77413633594e4431412f2b644c79377862647342504a5766616e3350646e535577543633476e4f374643496a2b3261756f6f704e777536384163377a506171527036747134355a67643454384567364f6279494c4f3172706e4a6e41636b304d727a36553054632f7744706e724c466f6c4a6c4846724541713636647077754e3353357a41515069755770656832354e73384c71483052535378726a2f3157684879714a63796f6538685a513679695a356d77773458744148475275642f514646654f546e44524c4e462f494e6e34535a315850617957656f66683135585053716a7150357a76745a32666975653958586f447448312f6630417272386c374d627737305339525049616f5a6e4a5234765a4575472b53596c7456716654664a5071535352687967656a37516f4233534956556b492f4e372f38415a476c4f3639612b5833486e4e39554e2b6a786230336a3754666b6a342b374b71305a36396c4b5761564764494e48636d56312f33756d793769644c5346553035495732725662544e5366666c582f585a534d7a6e7747682f77434a587070752b76483575656c2f6a466d547972776e774c2b5138343867303470363434394744786a5530747a477a50646b6b2b644f4a7a6373544f76726f792b2b7259393069704a694c586674715769756c6166697350574c6e2b4a684d505635325a33696a3041736e616e506c7a7564716f747a363945574f30707959786652576c377572536e39736d2b624f4d4f71414338374d7a316e49684b6f786979625047745a5439436a53433459554d347949484e2b333965315358525277736c71716e71716e544c7a76376c396e4f4437566362493630356e4e682f4f2f774437364f6e67562f334176556e4a6c5661712f7741617750487645764931736d646c4c66354e6e4e32757673676d4a79516a79335a447078635365476d6e726a4468456158556a3750736b57397a5359377658394279587a7157462b6b4278382b7143335647612f755738633556457369716863567754564d4b65564c656b7437766c372b68417a4a3141483057726a35444f796c4b2f6c73426951584c4c38625a71557944304149467654386336644c33547259356b64664f2f6361626e47616b39347a3371434e6c7644492f547a48525063487555587841673833347a6d52504d665730584c57742f77414b686f713977693137672b502f414630724d326c5037774b6f524b726f424f484c75392b334f78516462796a367673617546553665554a534c584f42626f66663162474e346d5a533643534b783432327933674772324b6e74734c71705554784e6f4358504b616c30386f302f476946565276384161546d4a5437695558654733324f3578436c2b39585036742b373965494470734c6b37494f74616a68392b466b3333545a476632546a354e654147336e4c43344b794e496d6f31646d6438684f4d2f65583958784763393478466631414248556a316c3838774a656f3354394b6365735454432f7374526643546e7658376c385961576c3747657a702f7358794a4c346a347258357276596d42464d4537617259714e4533394971425362614856433162422f626936794670644e66544e672b776a41413533395a7a4f7a4e70347a49373455656a6e692f704834477148784d4479646c6f596566506e75574861716c72694a476b57693254344854704f686a2b56667653706f61555a336a43303364544e79544d7a31476b486b766c3235706e512b6453317a6f6a3568356b58365a7972374f687a6543694c50594f62796d7979784f684c58377a396f4746346645715a6f4a41395972583569334a2f56763161526e35415362756a6d35483859663170636242634f614862584c314b7564627239577578315563396a725838716e42506449336362554c6c4a6258625438583367632b767956317076496655786c2f627172622b3447537132725264325734714470586f4c537a72633865555a343574452f4643636f716d47507146674b6c4c396d756e4f3273785055612f384177785567756c484b75667958736d466a57774b446c61304a556e7151624770507a477a684e5a3376556d4b7a346638416d527444753459766c4a776f5151754a35684b6d766e5a707a6f6e6361456931664b416f396936506d2f6a52466a56664c7761662b7a5142422b7636727572346835326c594d416c314232646441546d516b5a41615545344a732b576d3335317a714d6b4e34542b393450524154506e2b50552f31595050484b36533338595a6d472b74326e6d686e4c612f5135597a6b326c37633950327634384f3270456b6a4f4139555a2b38422b7543326d50737a745749723868314e794e43724e79373474396c6a575a59307237723334454776465052666b5a757963724263786a61357a717838566b35716e464d796e653476755655303071357546376555444c6331614f2b50304b7763686d64795a6a6f50354b3742667033534f476650734f79326e79434d345856466e7a6c57775a2b7a4e63326c334a6a4936442f41484e652f64392f2b5257654875503846382b6a38685465673569306f7a326243626f54334f6c314932464f54594b6b734f645a7a2f4355672b77584c6d533668587a41397452586d4d7869653864686653664d62366c5a386558587255396f3830677a6338385351526c7a4e67755454727a616a6c486547564c4c64526d5645786c424a67614e69557a55462f32616636354c5474744552316f4b7238783947504a66483937594c4e41426a7a5830614d6d67756c336b6d4d334a34347072366f4c337547566539335564704b5a563977343231307a4c6f2f6450614f717475726a4f6343677654444e6b796658337a474c5133764a63664e6e384266546e34793657486f5832345a2f63732b434c5a734e57746f41755633477a304d58787569414b63342b63464b644a6e4e612b456979765076502f41436d6a5148577252355576414c567352334957364e76614d32714f50517a563570395174724d66756c755a526e51306b2f6f394b6d663461654d72362b6b524563494769587274746250637964482f414a533247587953412b6554376d54552b744f666f777a537a70786b4e706e512b5a464f70384e5056415951574f70467775576e327435745470507a46492b4f6550654e54597a5a42436d472b5574494e41796b6c4367676c75486b3836666a45614b484475565338636c2f445535727669625368434b4753586d63385a45723035346d3055726f7a50346646795a66395878313874644656354a69735a626f6a57324555736f554f656e3670447a3454613732394a7967434567364d6668642b6275766e654a5a6e702f356c35496b4c4d7644303844453235474332616278326d7570326844664156794a5956386a4579573333644233506d53626a705a4a4f48507161555a335258694e30312b744f3970556165524b6e507a70374d366a4b6d6e77496355304d317032533151725a6f76757334756466385752645946496734334d6253795a43556d796d79504752556672742b51474e365954785573342b33644e6b72306b7131755a354e386956365864637554767a79565a3436586b476b5238545361715a316d734863366d4a587771553366556479502f414a50563462353135482b4e2f7162367765632b4e325a576e36732b72556c66684f3869306e5765532b48594d70543271797574577833384b4f737970637a697235396e6868535a48314d3944656232795969394b78384d44306535374166546f557674546f5a7a666e43515a7a346b7178654d73543655544b533337695543544767526e3954355461497065382b306a7869554a6d2b5a4b6530715770744c6d45706a417271676a6f6d6e5838697370505a77426a4b4d754e615342517536726f6356517a2f6b345036426e51384830754668563231416b55716575596335784a6e456b464961794c72684a41754a526363582f7743444561314278526d594e567a6268366b7a4a575a354a3745356d6445314e426e6e7972366c6b646939473264624970566643557265424d5052547174724d36616a6f4e4142572b4d7a6736717a526e7a515a3048546d377462376d74424f63766a30533851774831694b533245444f48564b4e4e6e2b4b714b2b46496f474e32746a353267534d697250303647306334366e686b7679467069556c7a63336c73546d53523064454546315263416e632f6654397855635544356975394368394763624f5630636e303056545574677a64664f67724c5537453170635864717a5757665868374b3574596d6d6e36314e6a5059377476316c427a662f4c5063583151756e647030397235734b72714c765953566233566e3261527a7368535435594a6c44523733456d6e356b3655793073545543552f31306156656e387835372f79512f754a2b6c66342b62326e536e63314c505066337133567979524a7a7476465a5a4535754c6c612b5445744b6f61687331506b2b555447567944424c6e567a6d6349396c4e4762313452796a515477622b2b683537343173626457623658554d38633035787a414e2b2b622f4a47526370324b7135466165347934364e4c6d58724574564866665961772b5769696e76792f4e726232534a2b4c6d486258384e5037696d482b617669586e462f6850682f6b65626234566b79356e6b6f65584e6a31644376506f6a3175706c52562f49453179655a33424d2b4b64386f4866394f4d432f527270356458516e536d755a34574779336b7572726551777630703941736175415a4748476449784b542f414275326b732f755259497252783947677673684750614f6d446f436354455a674f665373317233356b55526f622f3866627a783945744f5874567933666373432f5479644c49724459712b4f36693265446e3879343354305774637a6a70304f7664644a785878786d463469496a4544595365496d3537574e6d6b51325364586c555758714a5a685a7566704b5037464e474e514a4f2f6a2f68576e33422b2b7966496a595749652b6b424d63766a2b7636696d2f555455587a4c72732b7066505a4c436f385337526c7278317049415a546e466c32515a764754756a542f414f507052314c7958375443744d394b2b74424e3652694d2b4934532f6e632b6d44503053707079336f6e78477a644b6e4542624576545158793657784463366c3652355a4f6b79696431495154374a5754764b63476b665870664439663148415243356b52514b2b4870756f57796c507334785266346b6e327057355441426c42664e4833726547746152676e49506a35396233646e377a31344463583043395a2f5158774c4b737966492f774166642f7a4431542f386e67322f442f562f48383970386330504530414b306f3866563470566a2f41304253344b44766f4a744b665950314a3067626144797653387a6d4e54625838503148626a2b3267337943594e576e2b51784d2b2b312f6a3748485a514f4b7648565356476c526e76524e6c70346e575057304d6f796f544d35796a70414d35626f32394d65585878787a362f3548614c787666774949316375506f5a304d79746656632b4854327059706e54546a4233546e6f79317a7a74374b6e6c6b376d4b34496644316e317a63326964334e6174706e7846673964626d54727a3173794d57396b4d75566d6e725a6d7a477875706d36693644707846517269752b507367354b2b554c514d6b7954364b2b545348374b63787274366f655979594546614d7168306d683545357a354e4f2b67717261374a396e2b46784e75682b644845396c6e3872747134336e506339337a735734785a395a71644b52485876484d716a7a54792f31483958386a46346d64766a5867374d6a54646f525377364c565753712b356f6375545934475335375a61394a53364f4843396c494d4a394559746b5737707846615a2f454f6c47647635314f486d7934464632506c616d474c415a6e72357534466c64574e724c4c743257777673517a7153763677724933777a4e734b6768393767446d4f497a6e766763675037692f7743557564506932654b5474767a2f41434c794c73754f7972782f4d2b4a4e494e6674646a554b4e464c71593874624b4d3969676d37564d6f6237777a65474b56574a333061546e49356b36334c504366776d38685564666448543867324d7a3734633578385a533646453747726f7254483748334a646e7136324d53524f6676417a7575374732654c6f6a6a71356b633257556357504978496d766161617444766532424b77766a584c592b35455949575549653477417665444161487450322b3879373143774d504c422f384149576b4d2f4f724a796638415757687a6b64457a4576617a36593648516c6f6e4e797a456166694e6f2f72732f765070724847317334345967497068554d7955665466383773366376706d68496f4e3647445a7a3758784c4c6956713550786256703454674945723667322b3734366871754e6d55326574467a7757686c58544e4e534b4b575373517469316a4c4851345063716879364b6c7244326d49453450734f455354614d7a696f6d766a74744e6c714b334959747473394e71786e75557574733030697a467632314c3466567a4c57397a4b43396f744b62374d696a71543878784d544855575469533649364646656c374368526b5062534b473564624a51584f6e5136443762306b76355a2f6259776b73614c6c74704d702b6c33345838674574566465546849316f4256527868787a2b533852584d716f526e74736f6c50354f5376566d4f434e6a442b764f4a2b78535441565567625355455536553967744f6254464a502b30314d396f6e6e734f556670772f572b4a5572515a6d6a52504f7467475939366561523066747a5a32704376744a4d73372b6171784d4751482f4a725631663245386f7a75445a554579763549754d636d696a39634a6e516174742f6542505150456c77505335364465706d4e3635656d7670357349546e52374c737678334a616a576d667154553334363875467357666e54456d582f782b6e2b634c56344d777a703938327a4f6f556e6e665a37795869315a74345347667148347436502b53353264672b59656d666a2b4e6d3636744253644f585077327179587833795a71325174644b5269734b4a3745302f645548572f546d436c55786a5570794a74484774386a6b662f414841505350785841673950764d6642736338444d73342f782b71484f68366e4f3533362f77444a346d74476c667871736a5a4b744c433658514b5937364755664e78794f48316146706d62525963784633693865646f5247504a434e7666704769596b645648384b337a694c654633347a4b4d2f7744456a352b302b356256677375427674723441745150756a4b4b797267416a33664638614a684d6b7372635659474471503339644337503875635a49484244346a344271537a2b712f46752b48314161384d6f65724d4a6a4d36446b6f51726f6a66596f76596c56504357516773335552324a4c32667071784d2f684d6665516c2f576739422f77446151523431355036492b706e682f6b667131523471654e724664726544356e6b61633779485678356f534f37694d3639307761574c526b306148752b4876366a666d6a5979646e795474447a2f41476e4d58724d5275485644647a76516e38664d61574f547a6677334431647276386468356566703564586e465767314f786b7279384c52432f37426244714d2f6555376e78324265794f53426362544f4e722b654e3935375055626a6669542b4f6457567a5539547458476f683871546168654a6b5571545071654f354f6f6a4a5135476a755261425239324f4a467655393752776c75706a69642b707574552f5055767534523048533348695175634564756b36694850677a3034637433773658656e53566c49394b4f3950525856686c4b6a71374a3743453442423379716239646d59586a72706542367732484c4c507a326f303878304e7a3943795545725548534a544a4a783930374b466e4c384c6a4338512b73422f6f3368343450372b2f35622b66376e7137347a2b506d4a35485372772f47786f764c2f4a43773943714c2f3144546a54794849726c4266477a7554673539526b706e4f6d2f6c6c48784d7053484462332b7836635458666271504f4f766a54527834674b35334e667756496e4f786d6c336764553445455875446e366a6e49314550752f2b696673352f67386d64334c32516238585645765a6764576f58644f775761494937567a534966676c7034592f4a4b373435656b54477242636874413444574b506c5542395836523878647345766465475073556f734b476e6d584a4450526d766331333230327955444446527a72435041544f5878735733356b6d6850456d714d3654793644437776356d796a4f5a52566d666243566b384d45394d4e77396b6a58695444333674674463503055724e6e56702b6854373641517a3330477459517a567a715a526e576d324354516d4d345732553038796d31534a786375427666732f4d6b695a3947676d2f6f6c5455476e34757a6e302f653149526d6965656a37534b766a6e5a6d7a5332566b616236434f616c3473314f6a66505150536c3933614b76616b6a3930643633695241464b6941336b366b7552743431656e494b38624d7056526f51424d3266736b617663536a71493833347638414656656a386f546c475a745032526770614647637a69635967536e417256673772664a7371692f5a366e566a586d366b4a514d396f55417661645070524d462f4a376f6b6b5055506e6541732b47632f615a67735036696334785051643076534431617952386c394e50565843376870647139687774717a5a4a394a655861436e787a3236657635484b414c686c4f774c672b53532b6931433038633056704379646e4e657334745752364450546e627a642f4268335871526f4b52425139644e5734325a6c4972304e436c45744b464a5a4f6d6857664848556652617579674b5a6e3871446f434263566f327a67532f56314561584c6e7343395565756552626939616a37464e636c43737654707030626f4c696e58484f35634f635243366854506647597a546b492f794e524639365859386479664a664e5a6272326744786946685779305a576770476c626f746938684d626d756a68314b4e43635874364c61772f77446f45346a72424d6436346e6850556143656c555a365731355835685837394454717147374a353546582b3435764843567258723150356d4a4c6c334d55776734385a536d6354633033644439667343316e704d534e61507a64395866452f5476386450504d472f506d6d326e3161476e7478466d7058796f746975646b4d6e4e366257714263724673686278633033652f454248376659766a413030717a4e367a486350506e2b475069477035723630535a305673734e794d50794c646f623144565a3768686e6a326e35326839475553646d746e4834576c2b71572b3031694878723936783764615969754f6d50583644707a732f6a6c356e3667654b553550646e7856474b794765713750374246334e685a4b386e70795a63617635316c6e685038412b52425061507964446b79557a6538303953376e6938566e356a536e792f384174312b5552464f32447a664c6f375a52382b617a51456f763051564a6e473057566532706b714a31705663396b617630334e427a5563346244567447744d66444544593738517654376577636976474c51324a2b346a796e3238346d5168676f376e766e715770386971685851314e326130425677656649447148664e49424f71646c7157695a6d6534644a596643317a36457432685a6c37764b616239644f5a33747a644852707a732f2b66776c6e323264483157502b61655a697337324d476d614b592b7a42577a32342b383868626b4f61452b7537756a3378786163317556704a325330353673577970433461484f35373839504b456850677a39482f41497035477a566d536f4f676f58486d4b73387739596c594752556a515266526b4a307071616a50542b6b45494a72545a6d70686e71455453354d74435848377668495a7235353163623837586870464d5478347841353165726e715a58366c37376d5a6b6d7563736b3130764a33364b3257304f56784c586874665463617152586e2f4148492b6e4d625a367a4e43365435306b2b2f57764a47596a6830432f704a346f5864466633637047784473526163386c6f4c552b5074486b6473492f774158666e545138747a324f6a7a31726c6b6b4359457a4f464d33746332616735744f5a386f466f65545947664c7374783969653147676736616d3562715034583335764d6c6464496c4b426366715a71644c464d716d632b6d3841775a6c4b44363671527a716a5166386e50786e3951664b5554657366694f4852702b4b5775677a566f547a4b707158416462722b4b696e7a78506865506a6379364f5959524450347a487155704a4f5739537474505572586c6b6149443468355877556f2f38414764624e367757762f6b7045325353734a64714575643168724666386546463076466e7747715032487a334550474d35726d6e6850723668412f484e364364566e2f6a3233314139663137526b3144686b375478595a304945526444534b6b6e4a44686449362b696b774566656f534e4e713236786766727369375161583056574575704c43364c565674664c304a79396b6c4c4646776333344b2f6a512f674b426766347a6b546c435876694c544851415852474f66596c5a455475447a692b5642504d78773176685a39467333476636595358796634534a77442f77426d6c6f66344f44356266765058674636633352476766336b366a536f6d74716f6e6f583976736656716846745078494251455045746c44345743494c436368534375474143726173523443595a6670763576616c4e5533696c384c2f666d786475314a555467677259366b4e467857696d7633642b6937347a6230785761666630314b51546a69316f36372f58324730506f582b44336d2f7172354a567a61386b7a664476464a6d7a7430746d6a516a6535564753356c714d394c4c4c4a2b30556464306c2f7743756c76654d6a7237386676544e2b733954573278777275734f372f6f462b4a586f62364f3948754434754547396c5236587675386b6b6e3074363279736e4a7a444872632b68385a45776936666567546b78787061456c774e6e526f636c3953312b736a704d7678743254754c664658637747654e7754616135387253765a5a477655792b3232424c6a3449747962424b50632f7766574d37527a5453414e474e5354787a75724f4f6f744c787a7854512b72416832517a6963756d54795264416431526b616a546d6847715a32757579626b726730724c4e426b73707634776b75506e5a5355716b4d375733664b4166386e775a386973745677513932345034724c6147744a6f784a6e2f64716457312b6533577932445a56537947634b6e69306c76356d744f6444484f61354d784d326d496d63784930423964675376377a6e457273634d7831667865654749725850536b70304c504869743068594c4e6a4c522f48316665557067456f3568716f374e4752676e576e772f5161422b594f37523559375272686a695863746e5141697a38587274535263624b353068324839793667462f44765350615841747362707962384c68534f38526949676337507a46394c634c65385932764d744b43584a387478426b73517a49302f35476e65486f4c677256634458475646534b484d582b30564230565a512f5a544f353834467470576d4a783343737678513835367a43643456704545766a766a5a2f4b7a4e594750336c467539765a2f3346456c39694f3251385451367069475574577269666a45327a2f49637a566a6a4d2b456a6f4836654c64354c76704365504f6e62354e56464e316a2b2b5237555a524371664f5656707a3335376b6a6a39787332775358395a532b554a5530546d4352546e35544f497850536f7532372b336e2b4c506d35647a644c43305a504939554a553136754335336a304a5775345665645653434d782f38574e7a725033395a53304665655541494d4456386c635272616b636668465765512f326866534f7a377273447a5431477a68585255415673557655524e3233496a3552556c72576356566e7a57465a782f56687a72767667596148496a2b777159397074306d6c5a6b4a2b697634525a3334332b615a50714836622b58656536766b49674752666c2b545934305a6c324e6f72317366566a32465179386e795a357030376a413435394d37575a717530736a446a6b574c36752b4e742b4742365176783963466d46342f74592b74792b5476587a38487265665861756153344d374975524e7252677a55374774314255386a7a62445062753056756159307530754c557a757850634f6a2b4a5157704e354371796933577a723853576165576f736b5074554c5651353076546e685076334761334c4c6b744f656a3254544f486f7972623766367976325a477248353065696b7672642b4b76725a364e33314935523539346e65714c6a494f5254662b55356c695853326644796566693349324d764e4a3331317a754665394e6c69426e384b61373656746d7057336451654166763841626c2f4c572f4c3048772b6e30326a4a45484f6c6c536265587033717039376f6e325471696376375441597478634c68392b6235695370564e4a6d7458722b2f704675316d4a4666312f68762b536543716972523844306f7779577a48627a392f766d665639482b546644536157716f57774930727034746658522f39784e5044576b2f6546766661647547345254783330463951764b5055667858776c766a2b6a3438666c326a4e6d6a584e337569756371757268317172416c6f4d61705a387364717066736f2f7741307061704c53643741346d3959726e767150595236476567482f7741792f70523464364f2b47524e556e785348477233664b465335565079333646302b746f62506b754a33446a4e6b72614636514e6238394c6c6e69515a365947307044676564652b365a7462686b644150535830323861582f31563561454256394733514c457251484a3771774b65516f6f616b7361796568595a31517a4d6647365a53614a2f654873454a4d4c544d7a696534645650416d337170444f31344a65754450586e576a49332f5973544c4e704a6a632b495366553436456c78584a4f2f4367457336424a6d49474868654f6c6f36534c357976494d7a78395768623031763030676c48306c384d33634d4b69342b74733375596452496e30703064632f77447a397a32664638344d365a30786e686a4f52463857644f6c4e5556644b65365769452b696446744e4c714b6f3270334a70657a4d314978717a3348564451507459537741452f61423831587a4c2f70304532643431416774725430644170667354304936646851484c6e61616d54356444496b587a6b6864683245376c58754b6676733967384e58772f77435166746a4d6974504a6566567157723742555772703061624173566558644e45644d76787358555355463170506b364254324341416b435971634b4239596651547733314e3849317648504c66476f764e63432b6f394676617a68706e2f6b6d446f5068626d427866795a4f6c7a515337342f704c47736533684152396a6f55354636336d74733135636a7a666575486f76365266697a354a2f7743496559654e654b34756462704974385a436e436d7656715a314c33624c764a4a593876424764586c4d53316b70436d6f6b6d396b50323071635769716b6532747261735a676344744a3368706572766b662f693867575a477a7455555a57663542382b4852577848614c6579364977334d6f38625a4e556d7147615a2f55485054395535693047714d673665626278366576734e3876474d6946586a3831485164714a35526b73314a37394451544d30476233312f4b376134324f3938376e437a5946506148322f436e4b547771514b4263345a7a624534377538532b6546416e70654d476a514b616c735362384e66755461327a636273626a5357417879314f764863755930616d4a346b49365a6b4442396c4e58366a382f774276734e742f775a6634466d34336d6966492f496a3843386a71717a4e6e4e7a614649793335367146575a63456d4f364f6565636c7458437862484b36304f465970767537544f62697a316335726a6d714850717062702b452b7064466561624d6d567458597448507865536a6f6553336342327269623975785072664d76456c477867736f2b4f7a346578676254525659487a31727872413749666a3943506c586a45666b6d3979472f774164305a4d6e54386b73616c46574d6d4f444e306f2b3235434c70356e554d6d5850447a707374396e61584637666c6e4a346c687163733472786d52592b746834336d442f4e572b4f654d346d5669374665584b6a7976766a4f583564354a755a35665475736d54525038793666462f72555a636c6f6b52526b6d7770756437387a5a68724d343235484172383550374565422b544871427465717670393669352f6f393562586c6470386a796176444d374a38573047795566424e5a656e4b4a554f5056326972353658455a552b7833564b6b397469567964656c375a4f6c6d6b313344673936312f324e763767506f2b3354526865435958713734376870466a4b66532f5a6c73316d6c666b46715765334b7545487065694d71503338777a7036614253426373494a31646c66617447657474763851356a2b6638416f4c36772b6b512f4a366f656b666e5068796a5455426a742b4e62336a30792f706534327a30364e6b76426f57544b7338534d756758656e336f634c335566313052715676484c62417171616d575a437572496c7265774856424d624f4e5439527433554447336e4f50477371487549754d46512f723363583776333745364278413552396561334a51327472714f6459763636666170684e4d523539685169496a6361316b48666633375074454739363045682b62564a3849546878796a7373597936326f6b6661636c45647632514b3576784f58595133657a6f6b74494837794c2f414f45596775754c66692b77664b6b6c3147714c71466e7956665137497561706b79516a355169396f546e5977464a37555173536e6f6450396537674b2b4e53512f7175376277786e412b537a4d3651697061657637464b44356d4877536e552b783168564e30374672426334554d584e527852474c442f41454c654856376a4c51593070354b4c7545326c7a74476b442f54516979594b45384d364e4f646b37536239685056704669326b737735387679674c577461526839392f4f67776573624974383330587254586573514956705a52584f7973694f6f6a57552f792b7a674774514570344c6e4e6679413565586147754b72695830477a76374d626c797544725865336936536a643770626b3173486e2b315a4d57414c4a7953636c5a634162384155715569645a72506a555061623743584c616868726f2b74317936464c6a2b51766b424c6b724c6c4979653966787657346e5a2f782f54314164684754566a505655545a77544c6261637871587968717170316f635431532f476b66342b70506541346d66357041556d6674414a394269373743772f5a4a6e7666477356357863694738426c6c624e4e77554b736a53786a4f726353796366524e513572615574506e786577487656454767546d42705a4970566454336e5a7a5a4856564767694b587152576a7044524c77543643444d6a2b596d67314b544669632f3366727843476c38386b764a755a45736a5a447136796468504832715266527a764b592b6a4f50754d685342755977696f43425041536b5237385439353638412b614357544e636e36664263426e567756745135794836737653506d62643876745a324633545176716a4a5474495072482f7744525347593653663235664a49735479767a727834536c484f73784d732b4756773869714e644e665a7571354a47546150597431464247786e2b5a306d4b552b393756647072526d4b576e314d4473526a6553315a352f4e456245445561484f6266504d2f50376c2f4a6d6f55716e6c7637353769594c7673384763674e6c676b41417379372f584e4e652b31684938727a6a724b356431706d644b35796430614f425771594131633974494662537467564d586c6974767337536638416d6c58666142556d663955327a6e623369617a2b6f6c5539612b6434715542657673314c32485a32536a57524f6d3945742f47452b557545546e43775a69614137465446674c6c677a2b703257384135627435666b5465556354796d73584d3075384a53574b4f4f7466365932706f5a2f766f2b4755666c564f702f44357a532f77446f663967302f7742524d5448554b5757707974574b495a383069346d75716f796a766b4a613674502b5334796d506b6f396f5a392f51466170322f4b6b532f5155436e6a69446b4166743355614534547553532b702b6e7a6a455056547a73666442345574716e6273457a51545175386b756e7158774447772f734e53796a7639414b75304d353632737230797a5a5a4f6f637a4f444d76376178563865664c4b705531316c5a304a636c6b513047583664374d6f6670703976503353455669383479746e562b71586b42315a4d544a67756c50636f2b5254563576334531636c65504f32494d685973532b424b78393466583970664575655a724d64524d55504b5668535a4e38396e79495349465055527646596f4a4e5930587930416d4f6f335561544f394a456770576d6b694f6d6c7679424146332b5a437a515a556b2f69664e384b744753716a6c6f39764f36795235697a4b755774615451366a39645a304a7943425533666a4c324f3762627937684f75555a4f68464e5657727051765579587564585a38314b3533492b3355544b653677646e7a5556536c2b775152634a6763574445424e396e2b71356d4f6b3445473867687a357576304a686d52616d7351644f6f744d70373671486c47357564554243507a4838492f6f684763686f4d32675239587a2b723174307250474a454466354a6634357746573731625a6755435a7a316d5a375259505652756f36704b6f4875736342663631724c394e4f614d416e642b756b66395474336332635a456e673959516e7a362b4f55727445347865796c4e5638374364383677364572412f3459494f5734654d597a6a5a306735664e475947694334325434774a626865713766486e653556644571474e6f73545732326b546f48523552774f317a4f305365536a634c75664a306665366c4947432b4c4136426a5a616534623365696e35512f456735397a5952576e756147634562486745414e377a5776524e71556f495533453265667949425853796378415068537050766d4c6d4d30384f4133537a2f4a5045764f3853756962795a65686d4f5250703036534d5843624e30534f584c30417a77386779357552314d4267444c776c386d43534e4e507838426f474e4a695934534b303874394d7a672f515a3031744d4b477a35724e42476a4a703339573247684d32587a69634835614e4a756c3879484a6e55427964674c2f41494565535438524d784f594773577834786a364e6a774c44526f36636a515734596353546b61727255546d4534352b71796343554d726e4c3766543172694b2f6e2b6c767a46774e4b7a4d39594775766b3334342b482b57323643582b504c4b516d313659794c716f6e454a71345a3568592f4b61747a744a6c574a4b6e70664e4d34486370564f51674971622f576b576d4f673079395350772f7a4a395769727837734546564f58526e506979702f6b7567315866473750616e4b7a64434f50616d66524f433665415152756f704e58496543626166363072717a485561512b702f34322b622b49414f565a6c6e7a4a5a6673392b487862637a64464c636e2b472f6b6559695466704c4e4d7658627763655a45796a6a71514351334c4d695674585569657335464b572b4337475968756c5446506b707a382b497171587a324e30632f36373075314879394555496f4557615445416e6c78324e645457365950694e31697039353543766173656c394c4f664438344a50384177304a74797778482b47794b467755564a5755683632784f794f344f7461483135783156513167465141674e414e30634e556371546a616f644458505278592b7668616d7275696f54717846347765504d6431655776535830434a4d67555475705372374c6e304f5759417966506f4a6b35795957783573374d767138364b522b7057426f647a5465302f6b4e566a6b4d6f7a534b615a336548374c6763636f39536f77596a4455674e5451664e4859566171537a655839364b4b2b613352357131616e764872467055524d507638416d58516a4d455874496166674d486c6c5863325769714f5739683156525a7064302f59386752535750627a75687244597161696969326a4457776e797763482f414841426d67335347362b59666173516644547564706946714f354155363743377035354b78584f6f4b5158366d705773716c773430377165784b36326333394d456844636233684637493943664b31355a4b486135746f3753726c55394d724e43376f4f53316330564f73785a62444c4b4d4a33786f4951537078433555374f702b554358703876657976573377586374652f6b38486e4f616830475a626e34743061496e35484e5450564f736e49464c49796c563149724b632f6d414b50665153654b724f4e73783444337166674a7154466a2b705633385a5a57375a337757782f66494a504c734850304e61616254566c6f7a6f4e646b73736164536e505455333457764d4a7079392f77426d787159664c314f315831346a71654c6376714c5a6371366b6844714f315556307777552f79325453356b6f5172524477726c6a554b5547307a575533445577722b415975446c4572794e504a55303561304c7a704c6b30794832466d55676c396c6151574a67622f41423473304848483850535954412b597766376e44795a524b41786f6f50733977333145766e4f2f646e6557624a7053364e6d694654657773717557424f6e5035696b3651666f543641304f616f4145444343366d316165636a7061465161444f42546d53384d745176686b4c4e6d374a776b527665374e496d734a34547368414775536e33724b68644e4d78475a69413064615377715058556d4848564e56656874493339666e73645472464e546f313757577a7478417831452f58556c32524b54476c674e4e776c50415a5562456d6b69394b33566c37733857542f4c336b4e5854707666545a42704f65585a2f7171756f466a6d52307a6d4370683752387a425373706d4a6a71467856645a73796e783043382f3377573537496332336258724e5769696f787261314a4b6e637255732f7a396e7354565a6d7a705771632b4f4e55427047554c5869765051334d6459716f73326a37436358534f526d5a47364d5a56356f38524c6d706a783457722b5a2f7555332f774370734f6e324f43537a616a565556626d6a543336424a5337744c744c766170383250532b78524d3139556444434759584d4269572f58503841302f4b7a35722f734d6d52486441664a30654f2b7a506e5076743733556f5075626d5239525a2f48716670524465344948434e6a4731722f414830596d6f6e4e32614369392f785467495a50766b684361776f554c7542695738534d767a36527954797575372f485653786f475055363265686f4f4a53316f636d394d352b2b525a394439643542382f5a55584b797065746e376f384632646169424666324d6d627237533038714b7179372f76574c487674506f63443637757a6637306d456a694656484b655a626c53585a614c49464b5851336c67315671537168614e546e7742525949304e5350454c6368763342396f667237445343536c6f6533374c6a4b467339443659576838466b503167375438394c432f6469474c643972347a653163784b2f547244497744396877474c39502b4d7a3954515930314b74466442392f684f365756417054566b3055316b34654d6e4350516d4367506e4d795a6e734f59446e6d4578426a454d684754492b427971576564466d50326947694343632b3059326971754f6556494f6e5852383365495a2b306d5a704746777055324e514d31636931474d36536f69346f555577636b5a666f6d74307a795743417a65716e61554b72744b5764766632304b5073753978684f72345242354e53534a6f774b5a65785343584c72566e515a562b47766f4f344579703155546d7064453441332f4a424e36664e4d6a6231414d6d426f61387a4453516f4763584e75357831446c52424c505451735a59655673314c6d4c435778714c43587a76366e54506f334a506b6a5459626c4f435a2b504f30716f5545705038594765334e3049786b737a5735556a732f4d616d6e6b386c516f464e4b49644b636f336b78536849422b65644d6361342f3641304d7956475972544e4c7833736a6d64545056515046597a71354c6c61612b6144564c6850506c737234556659772b477850316d55434e514744755a664c754733446c306b58726f682f776e59315762492f4e57516431427563786f6c42326237482b342f59326c316e7a6444357a6233674264514f493067355a4b464f4a4250724c53324558715931797062464c654f595535716a573071726d66723546646279574f6d5a4a6b736771437276496375754d6b61576c31713941626b54507252417736312f5232467a7a3335624e75784463664e624b7957636b7343716c587a6445416c416b30663170703934423558583570797348746c6b354f547a48526b42696c535a5a6a7166476f3076706a5a4a784f306b61766638414a5566773858543133776734446a5737666c675a7371536d6e5030732b6a587a51376c75517135564f666972664a6b6643714364437a6e2f414f764c395771486e596b516a2f324134342f6c543041733044666a574d656532536d5272537562512f6c49655a724b587656584456696138305779564a6355655734704b4f4f367a7236633155786339694f6a4e4844732b5161524e796b5a2b6a6441476f66304d37745a70746b705853796e55765975647a4f54723447626d70436e596f354d5833412f364861532b4b6b4f793030314f3454644d4b6c55562f584350664965436a2b4962443877303052724757574c48353179473057646f47722f41446b6663446c79554d50334d4f6d5262722b5439663642425867464e6355664677537878555a7a724a50714b5536737443414d4e576a3059593245756d4f65484a46717564477a39425a30766d2b5a71766b6a665068416d4f5a347a6c6379383243366c463159543050474971617178486b3273366d6d575346366571544b2f4e7346555a546b427236342b456f712f596c6c637a34794a652f547a3247304a4d6e4e6257442b5657426b325475614e525445376836707a543861324668512f455144784a54425a394a5465664b3550395150797232617a494a7034787a533637506d722b7662586e3565614d79526d6c67374b79615a6a6e4869702b643631643752377a6e4b55314b34587441567232374c372f494d7379706a35435656632f5361505964456e42453563656f7a726b6c52554f66385042644a5238614f546351412f77436b4f484d59377877442f766d37522f384131726d5850544f366142486b2b5172394a646d356833533757597544747253474658655934554c596733717144366e556a4f674c4567326f2b7632622f4e2b736a78346374566a465936527154766f72456e62476f6f5a653869436b622b356d7a7939784239794d6d4431724564666166445638503241503671665544504d58634753694e5a7130463375576370497748665a354c59685261394761584a65386a7a5672644f6c2f37346675747a5241706e696b6c76416b67733339666652466c356e692f6563646e78336d476857724c4c465a58314f697337684a67697a53334855547a6a78632f52576c487a54744a5351526d72786a4c4d716d426a36744246664571424f78585479383330502b2b642f61562f6563755037466743412f3779736344756969634570444363695946776c735171663367712b65422f63682f6b486443576336626535435a4b4b4a3038462b6b4238614a7064516c4b786c7064387679672b6d75614d304758704b314a3372513054736f526c4f5965706c6447732f347251514a2f4935692f384171316f55495463565a575a68774f2b7751596b2b5a694d446d586b50744d73383769552b4b524d3173666336334f5570466c474c5233553472504b5556764d7a5737356b456d525075415441676d586c477572677274466e546c347a6b537534706f4848375646436d536153696b4c4e4c734d375065584f6476384161464d394d5a4a4f6e324249705044585062314f5a6f38715a6776696e736c743136362f6f3147667870314d66794962422b526953314b6c64392f416d4e3079656647735439796137362b496c474c346a4f6b62346b3830416f304e7a50352f4553563070327355735130313676466e4f7669736e344b335a71716c49416e4b6277314f6d4e656374523139353543356643765462796d3636326a486c76767a35324b794953466d7a633169714e4632565678476d69695570306e4f4c6c38724b65745076424d706764786a61334f5a6d5a7a49327338462f4869313639467570343048415053722f6c56303235625a4c6b6873432b4e454d3169516e58555833456b6450794e644e5a5a313475715a636379367a65764841334238462f486d5a62663472523862686b43354436394e39382b62646e787a6d36482b52624f334836707453775a6e72724765697877664e42386442506131446a7a74656573634967626a654d654d654f3453575561623531384c73517a546a327a516f6e564e4e44727637566261584a6c6e50525a2b6f306e38522b787a45706f50356763374b307a48534259672b562b4c47452f41304a59307453774b6f42484e6f595574664a3854527a55536c5065782f7742784b78617477657a71324f4536656d5042644e47322f77434c377941326a356f673258547461687630544e6b593867726147596373757238745a736377364d39302f7744326c4d515055536d514149463750725741393335696d39587972625a71356e3338354e47536d635244516954484f386331716a64586d4d56456a6e5257706a586a547a726d2b774441484743506252323852456349454d7a7047614e6d6c544b325155394a366171555a79716e616662357663777570624f733054726a64377737773343736456536c4a6d346f5542494f757a49634d394a6c39394647447854554d666b3836564a44716841584a50645a72566d4d724670714976736b507537475a71456e422b36774c6675616c4e57706e535a6f74686c633658715a58617462706330592b5538434255386b35574c6a734e53763039624336422f2f4145446d616c7756313563456a67634b656c313038756568637a33334f754b4852697164556246724a4459524165786e3069634a44584761566d3367676f51313632465662724753343661425a6f6257546e4b2b7173654d55726a32416f2f7172714f5834326678375747667773425967452f7549302b344e4b387564334449713366385138726568717153477636347a56334f706132742f573644424c5262314150353159725a4750453961482f4166732b642b456d644b305772386855306e704c3550543857694355634e6f56726a355a77477051476d2b70476a4f5032632f717245794c39704c3936685a7a374c303950716b544c625948637a38666431354e6f2b66644e3136344735376e317535796339486768315073425051517a334651674c7033416f3036446744767339353031333138525965502b4d302b646e7670735573756550614f5658587846304e6b7479485845466a6f33766834756878797a724473664153514d413745384942412f36724f70486441556f38494e693954562b6f4b754479756965786f73494a47367178433251705a62434d347a6c2f362f75686146632f6639784b357756427932364d376538493879746a6c7676584c5a47757566695a2b542b516733725a394654794f784e58326a64704553614d33344663623862424266742b767866526f62362b496b486a586947345636716238566562443278713770345631324e4468305a714a454f3750555066624f763542542f7341534435562b7a76773073556d31666d4c36687a39574c4b7a7339335a754d7a4b56784e762f414a59736b7148716a7a624531644271576b53532b466968362b524931683966394134586a39584c504e6e7a4359703747565550666e2f64496468314f6642797a566b6f6678504b35364f716b514866644b3867527850416e44376e50715539354f61786749767566314f507a536f6836326f5154544262537673736e41487645324a61596d4d6a754a485145477437516b5065667a4e516b776d4d4772764a4d38716c7959704d304b7379794c4f7a4d2b506a7457725553792b68306566525044567771714855554f5445535a2b6a4d61652f2f562b30676d596d4f7344615030322f4737387176556153626e692f6f7a354e6d533970544c52722b595a7a736a47537570714731616b7a647469536f57707a4b6d3041487a66442f7743366d647956554d4b6c7236646574783046394e507730395a7371764f6436712b632b45654848586a746a7a63544d77717272494e64704a4a7a4b4c36705254634a54706f4556442f312b636439554b584a3456495a57314b2f4458643942744966703136495a72417a74444c7a2f4b6448513264576a563574456c61337278345856374a552f7741696e356b78726a314979345a6b415267354e4b785032542f316e6d302f6c6753366264394f50547669683950664266482f41417647347a767736474c6759666969472b2b41646975724e564e445455394e533943353948784a53414e63617530754e446753784e385a766b516a562f49587a6659576c3857324b4b69366a5456726f4b66346e6675584874354732532f3546792b4d7a6933594276445a513436337a4f5454324f787965746b6549724e6c2b68544a6f374654394c7475643552596e4f6b306a485a68305764545258675631636e476f376858616c5955507663784a4c536273636632615a67754a712f63636939435651305530664c6d326b5147313061746e546c79375a306330624667636b374b706147574a39396166393651365a32657770416d5366436d736730572b544a37342f55396d7333476b513266496457696f31746c683031532f70552b724848375555532f47556a50387939787470702b6e58646e73385a45347963325078324c5456725551365253585a696f5743613459417047646a363956534b644432726c43486179782b65452b2f494e6967476b2f66504f4e62577a77714f575039346a384c36667a6e2f474c516738483863767639547653657a54387a38594f6a5562482f35425439562b6c5a34376e34496e384669644f45374870416d674e4577425344727141686f58763750712b363165627333483839337954786679547866613867386132386d7a4738673856304e506d736a536a646d362b62736359556d68415758596c61485641746270543730436f3632627069376f73564e4e37455445785359447a4375743443343531465a6e5470493431474e453667694b6e505a78476161484e37552b61794f67656b58446e5637794c35786e5358446f4842796b4d37544358535a523850493255463056386d727933547a424f726c713349732b49666158363733346c4e4d2f594a4770725542423269714b704e7850724749784e68556d714a302f517165585a31685542663841716a4f4d452b48784942396e674252504d344f4f622f514b5464683557315130744b5452654375514f5731783955756b6668346d795a594e586e3859705967482b53592b70594269342f634862664439663044442b626935596938556f5832526f665a6f667a6c6a61577430424a596f72416d4f5373597a494f6b67512b7972396e37476a37524f2b336c783368737a744d7a486f362f6e5a7a64484931534f4f5245773532555573436c796c384a5969356c42635677694d6e4f372f6966734a525843454575726f575a304d5956637531627063614e41574e7064625471746e6d69556735352f32576854386c584436766e362b4e796a2b4c356a555a313565304f3966716c2f596f39576651723849712f795539542f414649776b656f6c6b2f693276347a364734737269317154386f32624a4f2b4f6132726f7043655879704f5758324c5a503931434641594f39344734352b4b76746b5831646c613876346831422f746e66696636642f6a6836546a744f37674b3958664b41586c2b5a6552376b6b6c5a5a656d3157736d6e446c6d626e395444444f5655716966664d6b6864656e6d6c38584b4d6a37504e72366c727a2b5564564b394f4442316575636a5959375a386d6a2f696c6e46744c5235445a4c7a596e7a7674305a3979376d6141754735615a6e7268544d6a4e346e706d59746f377a39664d517a794c634954677a344b386e457963686b345a32686f65516133793157366e63656d5650305772544a4c525434714d4d6c4b6c394433675a4a42625a744570427473743444562f317a39567344304e394f6a386a33764e5047726e2b4f53614a51705470553565644c6c4a32456a42414856615531476c4b66787a7a78724a64354d4453634578757443452f7743744b566d39735251654a6e317639534e6e31613954664a50554c64576d7a757a74387357755a52306b78466b793142504d46424d3449716f537a6e4f73454f646237766543695032643962547246613467564d354d7a334a6b495a6c6e53487941336f74443339364a3955747050627873764f773045357665643972444d4f5050332b2b6772384b783867366d47506b6441317234557a6a4d70577134707230316a4f4e535a5655385878566e545358434d42534865463750305966745a663148782f543952656e6f482b52506e6e34362b586a3556344e53366c7259356536755a51785630653272687562507a546954514a732f325748306e43306165673771654d374e3833503670665369385948635030622f4144547866574c436135576c426b313978794856386273495661537649626f306a72726730682b6f41366a535864656a6b553765676e342b5554757263614663563947617a7834445a5059316f647636614c4f374f2f6d336870315776706c6b2f6c7a666d2b4d79354e7a31334a386c556d4f5775566a4f63704b646f2b2f565477366b714b61706356726a6a49714450386732733536764a385454304d47366474476b6b3539584e6c396b495a384f356179744b3033726f45763479575633473247716c576c4b49732f566c62565778474d593443386337386a4e4878324a325635444b7a3933687144665a6a6156657a666a427578793553474771684b6d7878486c356c557873766d4a71754841414e54522b3652704e496e6a4539512b7339643844663841486432624a30752b4f30565a4d35483470666f614a61655273756c712f6a6c6a524c445453525132696d6731696b4578735354536c6457704e6b625a4d5431364453487a763151313933376d506e4c647a48346a556a6d4f76577a7574464c75737a4e7269584e427443316f756e78326f74724e517a6e536e745a2f544e33395869496a704130693952665246486b65547a4f666c575964305136724936487a5536397776656c6a36624356395545545439795958463746676f36584f467930634f69614c2b747157694d52484352682b4e2f7058355a366665492b5865766572365065492f6b4e36642b4b5552654a65652b4d76765a70377667756676303562386a666e6950503579675843797861722f3841414f48376c55567557354531445574467072546437753168727a367362667058347a353148356e364265556552426a2b537a3168732b4762325a5843764b5471385a323744706f63354b4b735539442b556944676850527745754e536b67534f4b76574c54474c303669697648764462764d4e4a663070365649472f6f6a56444e79706b4e61762b7a5879565535435641384c356c64373854436f616b4251526e38767476757857496a764874622f2b54543736346644505666304972742b693254795078337a75544e74666f6c584e6d754e303942574a6a58305a357a6c792f6c2b76316976694f7872524d5059707639655a37624535726650456578566d546356344d7a724e57684d6b6c36552f71704b784b6566556f745a394b726b4c5074574e6c6c5a78684f3530663850384141522b56586e5a6a4765345431574c446d63686a36616e4d344b4a78703261464a6651656f6e3461686570512f446f4f5a3058494a776977765a4d5168786f4d34564552614a3643525a387959685a527a4e5456504b742f4171746c36737146724b4f694774744933414d382f37737351686e66722f434e507337317951657762446d312b63337156683967384d394a6f517a665a354b396d76354b7151442f6b7a6f7a6d7273776163325347376c4f6b73746a49715553423648442f344a7879434833417670566e4e72445248797a38665054627a494d5044335a66497464327a72782b462b4b557861326b703146486c7432584e47787273667935386b3745777a775667626f5357633262465363314a3075393273576d497a58724934432f6d6e2b6457372b4e6639364c773730642f437954787a7750776678544f394d50517a3170774d72783557316a656f3975686f4a386e387833664934706454764c626978484a393179614a6d712b6766327a4f543568643136576a462f5a7257316561303772562f4b506146346c357634723561467865502b535a4f7a6f584e363538736579437471644b63366561326b456871554e68684770692b543863735643324b5179417a3661413832596d4f734372765073466f646d3059382b637230303571347134576a437a5172567a59646e4c713569536f36574858506b436e7632514d4242506632526d6f556c616b39336950353750392b37497773372b347435647334366c6b333142394d7643764d7449304c6a6f525a354b666a64575a6f636c2b7354436f45527957636f59464e444b36766c582b3341494550722b79542b7869493655734f4a6346383036474f475762374e703864384b6a6f6e534e42646f3041596b682f586674424b55767344765664506f6531502b522b372b7572626275743935456d696e6c4a66793150375661747770474d615a3039374b366464596656466a6758396a3542643876416f4650484a4a584a32456b42444d416b327152516e586d726b37525031466c37483071355956532b3163644f7a502b6d502b733152695a6730364f644e6747644c4775667a2b744e76772f554f7a4730536d3671646c5a4a6e536c63374f78556e4f6f4a70624244686357746a43534f6658336a454d45444e497341352b384c344a35657941314568725437654e7a754d5844514a5439414b4870364e544b782b5a664a544f686e746f6e3933656538562f5a4a6f6d4a41522f316350484f2b74665058584e583335564b4a446b42796d32384c656539536d714f6467462f77445372765933722f6d4d7a4b6b544d7662384f632f677141726f4f6655544d466646664e56386b776e306c396374724742466f6470344b31734530664d502b5a427a6767546c2f77437733423232376d326a6337385374627837777266373546707a526e71525a30314268715a4656677a3548434a66416b35454e4a44553733756368307167464a7546687549314768754f726d65456477324b39547658654a6d56626b2b497962657862626f51363172676963632b645a674d654639554c5a73586b615935385038416855744d692b755a55757234434773366b7156706a6a4d63527266347074557a36326a554b3266792f566678323478575a397a6d627771617447674d7861626d646e544757584f4572465076436638413357696c6f49596e6c7865387578506e7a4b524c4f3474476c7447546d4b4e664a6367742f44715839614f744c6338776c6f72687a637438344c344e48757a564a6d4f6365544c5a573164337a6755422b536d526c614c63487a4245504d653245617648746561616c5154787835317a6c5150693939416b4e697076345558646e6e5438773030644e5032474772747447656b44556978444958357458302f6843366a6a75714c6b6c45326c5049336a6e2f70434b424555395a3775436b674577366b544d784c34765a74547377466a6c486945702f79353139466f56664d366d64416e52385a7a4a37515036476b7662306d6d496363726f417a3264452b664c2f56642f6b4d4f71765555614f6539686b564465705067396368712f727945695243484c46684d495570392f735630334878697a2f7849465735504c37432b6652587856764c773878314678587a78504b544e7a3371664e313145534f6a4a584577474c617756792f485159636e7057417a452b6862513938644f56356e624e66434274307258523954504e6c7633554b72356f386d78617339746f4f665a4768376d5377616e5859757452503841627442527352395a2b62776c6b3849505971414c643667356761435a396a546c7142656578446a67736a6d6f304c617170616f4a65624153774f314a787379316979764f6b5367553068325533524631624b6259345772312b77592b566232527436656f694c5179496b70524f2f577834725a4c5661433830484a662f4b44456e6f4d7554436366416e674e3375706a6b436351366c714a725245524749472b4834452f6b42354633794c7667753934724e624e53375148784e6c576f305178366e52727964656167386e34673048556b3568304e6953446c6d62444d57352f485a525961744932356977367a2b5965486c7134477a74726d707862734b6559354a786276315075502f7872506f7a74436b3533572b3739736c683450516451564b6a63426376413163446e696354776e694f556635632b4d2b542b4965534a39512f4669434c53776b767466493266782b6b757a736b363637552b7172597364644c30537a616a4a7066413063557a42545a6d515175364e4b3054473252792f7742503876664f2f494d35574f5754697562387463384e48495949475244566d555a6d69396d5a5a376c307549536e41716d704d76666c65355844596c776631305470785845344161337a6257386f324a746a79476d6a375a4b5a55706331476439736c33453573386b692f69665571566a73764e517062482b786b757162546b3631786932496949345149664276736b3169574e55326e6652577a53476b484e547151516f37636b754477376671776e7879324e5a3736565567522f4d6b7152656f796b5343377a436d64764d782f48736d426b787659764e7a354b65352b7451566a72317270792b544d755639654833395678645a6654365445666f6e664d46453065513747525651575664666c77536449356e53365062574a4778355870446c74714f6a4b6e684d4c7246473368744e693239543333663458697462644a7743655a36792b702f6a6f347938377a505a53475a32716d64566645364533735069516e5370656778364b5030334e53766f734e6e45744e5163373877396e564d567062686e507235416e6d372f414b7065742f6c574a342f5235463546354a35543578354c42683475614c394332782b6e712f786556446e785a6145557446502b3656533072575266572b4d466b4b516163795972534d3931522f57592f4666306438653942767877394476525843376e6848364d2b452b492b476e645244566c493062346352545737736b53364f5554734f7a2f414c5645376b462f76734f63692f786f4d506e6453322b39727a385132717a76726d4f3437747a66696378667a4a565a757a2f78363273474648754f795033314d5934616736735065487a65784b6837376665716f4c6c4b5656623163426c4330794f354b5032414f52566f49536d706259745650666334617339674a39387746306e5057536e455a682f51494b636c684e724c6b51716f3974554857624543477a385a4f557a656162436e442f594d39544763365955544b615970636e686e3777426c706c704858526c4d2b6b6d4a6b382f4734324f594d75574d393178615157427866563658774a2b626e743731512f716b322f4334774d33424739624c303645312f774136625654726c36434f4e37336b73395166796c7a362b6f4e594c734c6d65476c786e6539706131333649334355314a4d66494d375238657836484e6a504e79726b5069796e614768416c767954537a736f6a4b59487044364c6a57574438723173466f5044332b796735357a6b4458503158387744777a77335a766c76375839717279624851394b7159354c61476371503648384d6d6a693536674c5057706257634e536d56304a5034774873683270475a386f486d442f7642666c443572364b656835624f46757730655a6558304b384f77644238586b615635422f4a636d3353784a6c31466d3646437648367172566d514d374c51656459485033396b45392f73326e4637386668486a74394e76416650667945395438377858787a567a74377a587a58577275376f2b5865567834583833704d6575696e372b31354e644d5037736f2b5a2f5574667a35756d5a70643133506a44303757696c637a4f5a714e2b712f375033357534734f6454354636575a632b4a703664716c3335666c6e6832325236514a453352633568314d6174334c70656761654d4d33436c4a7044717a585165452b316163634b327836387832422f745a6567586c33346d6559656f4752356f54504739547a507871664a444f716f794f515a4f354862593752376269614d733966746b79635778307a4744386b35676f4b464e7638413142547a612b704770465a6a6d326a7131754c6a724e2b58562f4f346e79364e71704b7173784f5653396f3749396f612f58796e70732b3950597555512b586b714a776d6d736847717151726563385238566635534b796c30782b314a6574465054376f76304851614a58545a6b54743030362f4e784e50303646592f742b474766334a35476d65364f6f614e436e32642b746f4c343867303943484e794c396c30386d7658586c4b43785a716e316f4d37794b524f73664b364b484e2f696441792b482f525a505348533578332b4661527444437563387655555a35356b466e654c61534a4730756f50556e386d7a553543657938655969586b6e5a325165314b705a516a7a306f344c68594d305a6e59364e7435704d64783539667a36334b5a76543633473056557775707a4a78476e503064726f445066644f4f7669626130497450504764304d764f435a7436346632344e44737676735071306f694c5a7238787732706d4f68664f45457a336a42386f4161726e2f4b3971597970716b67346c52537536777142393374614a6350704b53414a5878585879306e7a442f493037386258587077657a767755524f455566536c66314e4b696f6c4f3137556b31612f6b483969377247664558744d674c3266375969745a72457a77486f462f74386571514f38753868703039434c78706d6b2f45726c612b6d61526c685334356a656e492f6b49656f6779796c5a6e2f4438546d7a66436b2f734f516446464b75505772694f413667366e6d4c38793146574a6f576c46556e417a7455736c4d2b466c336f6278624b3232683235765939425744506e6e4f2f2f774278465430567a774a6f6d6b2f726e453638633965777a4f7736796d66435758696435335070314e47493230756f7a3263376a442f494e45616879367032574c4b325a7778706d72644e784d774a434a70474e73786a4131382f4a6a31737831654c623270445a724172454450354979355679744c5270306171644b71667268486e614c6f557a3537366966503858324b58482f31447373506c394f735250447041306e2f477279477275702f356a70665836337a522b6873313646382f614d37567a645a42536f79787a744b7076493771646a4679306f46696b302f47484b5a72483043716e6d6c343454483452726c36362f6e6e366d62504e57447857576378796e686d6333374d795445353253747570417955614a782b505173666d36793658657750686e50342b752f7a6e4435644b615552786e714e4b5a50536a796a314161727a763141395473544f663174414e2b39646c3930434e776b686a4d314d396b716e617a6c7a356f6b786c4b4b4b5575496d63554343722f72586445637356342b764d3665514a2b512f71564737306e394d6652366679544431644c7858553036664e4b63437a6a4d546a326345384b74476a6b366c4d326f74574f39614f436f5741674d526149334d3472394b6e54727a327474396576354455436c31447236696e6f4e51413569654c2b7a786f4b5477462f4b5047675171716c4f64557251482f7742763741464a62332f554c6476672b6e3643582b504f5a64787370386c6157647a706452636c687a79437161454b62482f584c35484d2f7744706365764666734a59636130414557474f642b31494b64565941446f4e744146754f5662506a6f6657767645485139633772582f474d76787250394c465044424d30337439334f745639696f4b712b585161396661755047616e39436a3279507562516d5a4a547365575450774b474c6830476c3266686a3771552f423870704876364170466d7a303263546c5446313958427051436e6158657230575a74305964736a6158613553566f5653384d31694b307a7a6534306d4a4777516c586a4f6c623953655055724356564238506b4c352b6145584d376b39454e6f317953342f774264594556444f695238415a2b67464c766c5a3778424f4f376f4c6c746973692f37456b755a51506b55727170745a4f7251476b4d33785173374f332b507148734c72504864434565393762394d706e433263584b4367414341326378744557544e786571525a6f45536634756e334d6932495672562f485a63356c316a73364363616c65386c7339335139715738306b69535168657469467863334d76612f6b3276306e61686166756f343048764f4f6875612b4761456555554c36505439715738455a4d3164435a694b39594148542f4150415079782b6636562b62654e73794d372b547a664c744c55704b6a35573638302b7a6931525a694d36507132744a676e4550656753337a566c596c526776367676504856726d617a3444654f4743717032666b4e7a397a49707067546e346a7461566c776f434c50736634306e6566546b706e3045786c6456587a362f66724848676b367175363248322f77425534647279476f5835592b4234573536462b56654f366d4e334b65484e487a4c43736a6c306c646f323574426337493538465350664c5a33374365556a62575266496e70787970453531757470326d4c357233657048424a46533266643631316e4b412f6269526161444d6246674d793648745a376544503048554b5a2b757344716b6952713737514175385a364e51384a5655595538583274737a6c6c4d7a76742b69565343576c79357a4e50376d714c327256522f677552336666777a48323172325943367246737031796258455857546b68644e42556741395630566830446c5a316e75425a6b76764235525966792b37394350732f71737869616549732f7742497647635079547a2f41425048647a523263374b32614535524f79546e4f39525547773553704964547674587a354e4476576c385075417a5a2f77426767497556314a78574a694f41394d503972763841436e3047387638415665767a6976496359656c57645256417a7a58646272564474302b5278717a723835666c2b62326164335a64496c4257456b347173696d3052476c33796b504472366c6f726a506148703538513245362b62546e536475304e41616e3032366d58493266517171707630737a467a7172346d6439384b38752b4e76334251446e5554425a4f3436552b3966474a567a37546c45754f354c304442646b3656656a6a4e707453324c734974646c352f6370545379374a496156754d6c64502f314c345362514559304f435038416d372b6a48657679304a7372456d6c6d6b503655534d7776626854627a64476c6557736f335469474f2b65684a6e4b445879556e33364355556d3945526a45593644794c366e7054364e666e50746575587150735338304c396a31443363374a5775367245747863724737597250384147382b4e486b50527a6176346e346564476c534470616d6f52346d79734a6e64385774705257493768353666554878664c3856383138723859385433662f493875666554506c37566679346d6d6c7362485474586f543866554d7467306636364f664f34464247526758454f2b7750624535696b794d59707166627763672b6454316839717978636c48745658497565544e7149556938702b4a6c532f696934364e77664b517339695336645a7a6e6a31457a77336c6f52326766466a525647394e6a67304a736d67365563307262555655444f503242586f6636323935336e7639696569424f467243674631386972684b2b324a387a33694c78562f48715a52417271584d3261576e4b7452787a3968746f357a3332444f365a507671412b7a416c6f43526e7a6135307a5244304f2f7741787879497949316a7a546647755a4d586144486f57664e46514d38374f2f494d6e66684b684a6a524b4242484b713435656644503358647147672f6f6e613548364a30564c4f494c5030426e6a3453546439686175643737707970372f414b65456e3941412f4e555662704f6647435a37626f45684d71656c345377464c4f576d7436364539426572775761427644326657347744345a6577306c774c553841384f6a386870666f5a6858494f505355787965796933324f67524641796b545975675a597071726d4f623066326f464f7043593775304b57744d3437584162482b6e586b78355575686c626e7874334636624679426f2f4c786250494b7147544a6345645079635643354d6f486477762f414966482f4432456e6e5170744c5633597457654939416e346b2b7633504f50416634725a30787876504d56324a784d2f6454415859796a7357784e6a625574563063494f4c6d4c4f494c3748564735306d5657624a4371613178636d705445384f794e6d4d623136377158335732335a364963593944787953694663493053525756736b584c4a4e384e53383269526b737645416f58536c4e536c39726d4b6a4e50395a54534d596a674e632f7a512f5054776a306b394d6668314e3554395879725175346a49794f78364a306430796469376e5a2f486d57646d586e68566e6d564c4259683272487343435a75574c4d2b61364f6a4e7265493530532f3356505376786a784b69505031646652646375737738635a684350637a57725872417651525462507a37327346797845484f6f5254384649765853336a69542f57332b47746e79484b58386f50797238722f495875526c31617261504873583255424e583264746646684b576349425032366c5930474b2b43317a75736238774455317271533635335270616355357534574e2b45337144682b4b655737486d326b6638414235794d7465414c3839444b2b485335726e4632364c53314644376b70584b39694f6b32594b4569333368372b416d7570535a6a6267645735504a746875586d372b66714a4e506c576978753076586c5a444c444a6278325a67326145466d703032563977353243494562464d546545355175434a31483959596a474d634243743331417079386a7961384675586c6d647173414f5075707863796655644451726f3158536b6a2b46557a354b3475495352776338686e364141632f4644624535786a694576787179745a45424d726e4835614b66486d73486b506a364e69546d694579696f6c566535707a6c30576578595650704962766a6b54795837636c503952663476714e30612f49325a2b464c2f45716f4367795368703438575a6e59764f624c4271323648446d755572517a33446f566445722f72636e5870454441573275535038417248627a62525448726a3637535735394d48694e6c4e5374504c727a4e667962646b4337445a6f624538364b6b394657707832534d65667273702b756e71547056706647576136517175387657754f4d39526f587665612b5537574866772f745a302b2f4e6653706c4d3136386c31374a352f35485172346a4b41436e58513666737a327853424755487442716c756e537261496974735433437454547a56764c4c7a594879614142457667516856705a396a4e48424c665a73354f6e704375794757707361423670544b714871443479564e782f466631714f766e34455165484e56745a6b4b422f6d517a306e3431532f783664692b614439544273575064475278395974656c4f76736c67726a5652452f6f425370496b306550576d5a6a634e307656507a7630386a394d764a693953495048642f796e512b6e346f716948426456722b543258544c32637a626a46437751354a737534357269543153515350797146316d657773717862666d76516166656b325750714a36545535512b505a4f486863386a386976784d2f473679672b2b4f304c645344355a583263594f3379624a304f4a4a665a2b325236414a2f33474b782f72573037625a6a7645324877614778534d6643536e567030374b6b612f6a3363722b536868545048334e6a5631307268437170566d61357a68483430337042787539694b50662f57594d542b6d66672f6d6354637a615176437849476a625034347a75692f6b725542446454423778795666656c36366563616142392f56694844566172744b694b59744d644a436466346a656a32334b705066473845364e75787259394456385a7958334f4b336d706e444e615349517252556d496f2f77424f587735665945694936514971484b744637524f6369682f5544384b2f4270336c6f656e50694a354c305a5850637038316d3057647a562b6e466d7974464647733237535a52504342684945663265626637544d6c5047704b59315a6a7458774e5866554430656f774e766d61475834744b716e49516c597977554b70374c7a4a6f45446973444c4265684a37644c33414d537a2b302b4d5530463866614f6a654a7a4766455576347a6831656165632b4b347447576356362f4b70416243314d444d72507839665a6478536d50376d384a6c6c4d62716c4f4c6e4574724c346672544c2f41464d4c4e4a6e45616b2b7538647576524830463855687a7938636d386379736c7343737a47304e4b764967665378764c4d6d66374f512b5768664e43503354303936317a44636e52756d516950345a706c393562336e72344461484e384a77636133374d4154646a35704930366f7a6a736d707474315a47547530576363585537477332504471657563726149394150593467716266773538375461657a4841584e6c4d544d75454c3773334b50766a6b2f333452563435664c4e45652b6c3258725a783532687a75744f6a4a757150736450544a5a764a7966726d4b626d35444d4a664970435230356457507563765153716d64383442382b785a54487252545561333274482b5335595559636f527777725a425964484a577a745a2f515366796950556d702b624b7a3771715a717371757044364130396873763364617a6d642f717348724579537937796b43384730674f50326e34666849656d476a6e724c424c6631774b643544326a6f6246644f684d58544c794b486174765a4e61366b4673726c546137367657706e716d5253756d6f694e4d313037323730744d78453938446d66725a6d686c447175683739714c4e304248537657722b5a2f6c516f44485a31534a4c486637415855315a687a684e644f476b44672f564361473264455445394255766b32646e37586a486b7a39575661656f6d697738374836477633536f6f724b715333467a2f354371394b474d747a6c30715a50536f662f546532476132752b777130544d6359484a4830717a764950462f56627a584f6b703069566b65523658744e4d2f3030614f595739704c306c794f374431563072766d39706c3765696f77585373754c5341463057786174652f317748542f3058376c4c38797a7479764970513237646b517655745a443265664e35414d4e464f6239444a64504378354c4a744965326c4b546d49365a66734f2b486e50666469616a7646345a34616d71534c615831634d735378716d374861437837506e61526165666a6651574b6c6155646458794a513376422b476d5950676f6a4f7950342b575a69497a49744e50707379307453556962646a62724e47626268375279796652386b3247513061525736336a63536a7a324d6f3268364b75644351716246434f4f33356f334654336e6b496476656e65687633416e782b672b614439634371646d52655038366f304a793337636830446d74624f5448537a74724835615a766635442f755059584f4648395445785749695a784d41522b4c2b3573596c577234426f77554e35343766566c4a4c51564f393130486b6e6b53614c4a746e696f35374b474f57785333765178325552474138507050626d75586a504e4136392b4957713747656a66546b617255484e6e5539706444414f6c594a78303575686f5a433670554c63637566565038416242783064504b534154504e5645302b516d486c61584e7730356a4a4b744a4c4a4f497a4c7379647338736633526f6f32624d3832376e416a3145334443326372456c7862663232524c536d633436523237664c2b7735732b532b6832426861796948787a774c4a6e326469534c513735434c556557573636634e3570527937466a35616e782b44576e716a6f6f70616f7736446e314c2b745372764e74382f4d5635354436482b69753457536a7a54663950624c454e6e46566669775a6b6f7a4230686e6d534b755a4d74756c75454e46516e6e526d37696b375a436d4932355079307a467252303365766f4e535048507850394c7644504f677278317736454762764b4c42336f7647612b616d36716175714c714b61595a3148646c6f6d4746374157774b7154706f64544d78504161656b366c70706d4274486b2b652b6d48686d424d69486934724c4e627556702b48597935534369686564524e2f3147466f4e4d702b797a755859736a6d4f336f664e514b772f5332355457307a78346a595830536f382f77444c76626c3158302b4e426b686b5872302f46736a464b726b5746474d2b624f65746d3733742b69334a645566786148446d5a2f3841526a424e6f684e327473566d655043423144385438655a346a6b5851496a2b76736f3458386c4a6b30346f39303865766854773646334f6932644b6d78704e6135715336316878317372757062787677345774757877786752572f314670673174455074654f5538566157316c59714f755978414564584e62756a484e72437a504647665975697670534e6459752f3451375879754e693765373878632b66354e6a76546d646d3151716f51686134324c634833726c6437516c65564f6d696c55355a3663754f6867453433394971543748524e51614b5835696663326f61566f3746536459394e394d49546242553638536c5232575772715479686f4d6e345754514e4c6631515042596c354a36796b775746693465613236664f74414271493563632f67764e527579453136536e55636554316b48326e66384152705a77676e2b79753950472f4a39636636695a69497a494f535361496f557043555a7a7034336e32425648474b706246386e76665133526c7047684b795350486c55372f674b5448337363412b2b526f50384133442f784238442f4143373943764b504550494d444d58354c6d78626d6836632b59567845725279504c5a346e5763544c32694867727862566b53377669563058496a4e7a452b305351712b6a715470327a48314838395275447265442b65366e6a75396a50384146397a7879327944546c33706142566e3359576b4c38427664486a4f702f696c746c6a367878574b4243622f4149572f7466734d50593562553352474231563949397575724b7a50484c5331417a792b72496d6c395338534b4f7957544a7a65665330455330543579697539314c50664f6e744c48497359685949614c756538642f694a78366c2b4e6f5a486f6376375270477241306c6231656e465a6a53344b344d727832754262786c48704b6c54725a4e6a763877643846464e4b614f67396a514f4b7a4d54694f3863337679423867315047467a58654f2b51377562556d4c59333062566d68456954517565313073665748434a6c6e3755304c716e72557a6b38692f5a4f6f615a324a46584e36346d597a306b5556342f2b5a66716c34505066682b6f75704436685a4e457472456433543139477a50706f38646c6479614c556667327a7a2b3059382b736f78565a4d536b74452f6d5430366a7437757378776a626b65744c304638387a2f414272384e66787a772f48504d346f4b504e5046735879487132305a4e4436736939537779736f44334a575278746244704e6c447266674e705870426f746b353035765076584f7071544e65794e322f432f4e6f3969656e4748724b6f56363431532f4a6a79526f4b507371323867774d2b58555230736d5573636f6e442f726d59486665536d57735358395a7a4554474a453630764943326530596d65683756707152397835313837486c7971692b34726c6e64445054374c6d54324c2f542b2b79576a33796f6e2b62724b326e57746476475a413379487835476c554e6d465671487651617444382f736a50742f3961783874306136313373396d6c6c726e545166422b436e33516d396947756b374833746f7a6a6a474a46612b716e676d46712b4c32596e717634763466357a3474734c32596f4d37796a78556852754b7370385a37755161756474424b4450747479663078667a4c6e4362536b6544766d4258394974505773626244694c36792f324c2f77414d5055396d70752b6d74336b587046667052365a71697a504d38627a6d4e646e385735794969782f476b7651765050577548366e6550424a7777646f582b676e5644523131397231613965596330504b2f2f6b347672352f50545a6e703936762b4265515a4e4f78314b6276496f4c5046716b54525456642b316f7133376c415644687771423474504775574850633559412f3246764874735935716a6a4e2b5658347565632f6870363765512b6766714e5634357265572b50727a713762764474685735674e6931776e6f36664e5665596f666858516c303546333363455539494674343869446f3039574e58543331366a584f6434544c535078794d716e61674f6f6131493539365563455672415a6d643434766e6a6e4c352b46786651535a41507a4c63484e7776797a71717057394a4451544b4e55512f79784a616b7332524d36694e593064367430386f7335777539454439372b675875417936437158587074416d7575747334674f657a676e3833422f6469766e4e51467a337036704a65345774527a697a41415377657a4e445068733964665832437775596e342b7668536c686838346f7a74536866325a5655652f736e38616f6a585a4f41695053594841366c58762f532f636a6e5230445647676262484a706256316168417255643075586a625135762f414751446a5a654e594c435838716b39502f4d2f39776e333238647a5033666d465655433555726e4f6b6f44746b774731712b6c7a3273536c614a6571624b772f70764f4f702f3661532f6c556b2b6766753970486f50303633384e4b362f6d5770746a364f6d6f71706178496e554e6f363174724543507a2b316e464c6e37374f662f4146587663514d50502b44362b70432b63755731505676314b78523171456b616a5034314b3671707a754f6f7347687336526e574965365158435833414c35424177392b67663841482b3030682b33745a4e79465432676376533437502f376c45575a51345772345249732f545641546b6d374e502f36432b2f4b484f4259675649393453564b456c3970672b44765456327869536e346679554a3936312b36576466545a37584b4377444e336638417239583044354763726c4a6a547a70567a73616f3264354f2f726d786357634d4956544f5371353378756f576c5169372f4c4f42696c4572712f654859722b79583661656a6e71352b642f6a6e706a3631325871384b386b384a3867444e566e2b544e77347448536c6758644544727037756e55517873726f6e2b4d4f663841636935385644714a6b702f726939717461756a757232683633764e50374a7668666c467432313653666b2f355634394b457479693866384155547869487954786965626f532f42484a35566e6d4e597970637768623149664e5345796c74722b7942485a353865315457635730387a2b5561386553663268767a5038626e516a4374394b2f552f34516e37717a2b4c2b56795a565266497a46554e6e316649686e58594b706d4758364e36586a50543163343046494144615061644b654d37716a56627a6a3856667966384154476875563550364a656f5266587155707a4d6a786c2b72343172776f4a4d617a5274514d6f52566e6d50755a37336d365432677a3555724658325476477053335361696c4a2f496853782b5a334f6a437a4c6b65743456706d68556e564e424a6d43516d57664a59497978304370307a466d58492f6e597a396d416a7037767a4279485a6b3752312f526e753166734e5931414a3454394e6f57356142584c596f75386e4c2f3039667774354f747152446e78495959676661374c654148617539537042756d6a58464a306a787578536a387335684762727270307457376f712f61666b45682f346279696232434c71557349464f3141702f795479522f5251664431326361796a6e386c5a503841597a6e4d30744b6f6155504e41392b524b70624b4b566a2b6834304161424542415837316949694d514b4830333635547231756c4642794c52735a38796759336779416b514a7751497163307146547253337642344d597453562f4172354958546b5756346c3534376e4a30625a31664c33544743764b6c2b333735544f75796d554b3076752f3245346c3348786645653268636a6d38492f732f43555934596a674a647056365665674e67394633444f74635570576d792f77434e50456e57447230306449552b366b617633384467434e4c6d704a78682f77417879655832442f7850315630637a694a4b6b4f706b35652f7168506b6143374a3174474d772b53757932686e69686c31526f486e51377739495845596b4878395772753435774e6759344d5079656f7436574953694c3530327938476e684a6c706b537a51474e566b617572734738744a616632494c2f3841557076396676635452796e4d6373394247646e7851395069474c726d483347564243776f347963364c51646b71646e7230686d495a324c716376355038316a37433439516c4e5831553174747a777a6b6173655865452b612b4262464371356a50493045782f796779337671753030446f4c6d392b6e316e793953356e7a6446793175345a6e3967545032756d576e574a69656b67546b2b6f565a322b4f343237797a353036544d3739333544737765576b7578347964507168614d70722b7a326635654e4e6c4832562f3777647a2b6d4f2b4f6f74334a3954356b785a763174486e755746704d6d6a673154397a555335385239584755504f793643345330466b432b3941424e6f4b562f316a6479733069656e4162582b452b736a5a494a6d654c31364a6157654470614a326b32475a714965432b7463665633477477685030364f447a674a59696c6675506771396a7335724d634a6a714e722f532f386774367a6c4a3743704f6d643933553335523278474334597659734a4a44304a2f6d4561436454556f6b6357502b6f444c6a6b63346e4f615233634263496478746e7839644f5a31744e35365773566b61625653664d54326c4f6e3534796b6171565a5179705076556e4e374d353443703166432b7146597a57324258462f6a4e506a6a756352475461677063784846636f565146576463714967754f754548615566616e57554c496d7546524a4b5a767970527a397a753363754d5a4543755a7839496f616873637030454e7736445171353138796d5358665478572f4433502b5755682b32787653534b492b744833414267765152665738573854387a5976756e4c4534496266694c725a4f456d58505a4c436858324a324a42497a7178626e71624f6676476945794271655263486933474f6e55556436752f695a347235674e6d33685a53386279743672372b564b5a4f506b442b424c51586b4e444a3472614130453153342b63734630304f6e2b4c3749744d447054375a727154484c4d636658516337764e2f7844395373694b6a5675786a70627a72646a4d30462b367248644b71526e3174433648536e436d4e6336624a7a63396a6f77516653614a382b6f505a396f7658766a39427037356834626f4a6f706a4848526f336d765a6234324b65696f4b4c30535a37565a713837477341787552496d77654b397067643833364876777a794b7131726173523443754c6334596338387a4b516d6a626c532b7257535046304d305974464f684e49484471597065626f416c32677a6a4b3451364358434446586d624a41304558712b724f334f4f74396a3746577262386e78503065614c3050546435464f3148536e30536e6b4b786a757249566744627171716539704c346b6734436b32536f742b3174622f4b4d6a586b4a676275514e736d5a54436c3378396f4f645079616e7830564e5a554b6a64564d466e536d576e6e4954426c587230643078496e745546737a53586f64646c7a6c4c6d382b464d715631793042784e52715831664639345443524e516f7a6c53464451434b6130396854434c46677634586a6a545134364e716b4c612f3476355a3961766f726e58567153755848394e33577139673761576b3733494e5039424c2f41414b3056656f58674675685567526b3370383770616b32674e445a596d7935372f59765168344b3557305177754b726b3954654f36756c795773443635317430746765346638414135764b4f2b5674356d4b716d72304d35315354654e4d654a54786a4a7163354d7836794854364230455833757471536b766d6b41484d346f5951387656372f414a663348593778686a2b3530463078492f6657507a372b36583063375356564c37597070304e37385344543965364e416d424f2f636e365555645076366e2b7555443148796d784764496f626c7065644461616161725a306c4648514764714c644f4e54617145315461446736746853657a4b434e516f642b785344726c2f5854615873304b32356167716874354b65614966724b6a78352b78614e564b2b2f77417870645a63744164597a3458485974366c566f364330424339326c4b39654a61337671586d6653324938796a52386b3039667558572b374c314d6d47643835696d7776745a2f42516b30385548786a5a304442427076485974382f374349336466782f46574a307a31517454564d427a7a58412b724c3037313948466d794e51315a494f4962447148744a726c2f77434136746f6d514271443839587a732f576d79732f727a305050517473517274386f4d634b2b52593570714833416e3276366e6c594b61794e614b7748686731584f4d6c533038717a6c5a734a575350555879616241722b47585579327778484a4332577853416c444e6f637862542b6d6d6c5471492b444d4e45365a412b796e53664a656e6e643034497535626561714a586154394f77727479435346516c516f5a79594b6661727250716d6b6457633232706b364877424b4b2b396e2f533866485a4f4e43615059504759504e45714756614949646e4a5148507131546b7537392b35557a564c63457a79565877574a64664d595a4644786c686a6f396c51735171362b764779466f505436706a4b575261302f794b725a59597a6b2f7743477778393968696b316355484a3141384453706572374530714c3332627a31715968764d6b6e4a4769444c734f474753354b796f744a684c5069332f49366e4b464d73374542326d5941303237313842683863744f70774f746b6a4c7376614943734e6a36716a5452523876632f774353374e4945715963494a583867665870534964747374344239506f484a6d4b53613430715a5a6c6430614c70626b624d3550464a577a3830304c516d654e57576e51347332697367736a5853596e5530585071486b3276515a52744c556c61656431656669566646587042576e58456f6e6467303471426f755348386b594957387a463331706b71397a6d2f4d5950646a7963656a372b36685579333078565453327247526a424a646964623373542b327a7a386c5a64574c333132462b356d7a3851594f353035694a6d63514162504f644a30533771576f6a6a5a4f35744b3245367847646e6e56635374465630493935566c677a4f466e7a676b436f35656f2f6b4650746e475a724d526b4d70764e514455794674716b646c4952464d596d794a46686b74326b42514f76636d596444504b69464c45646237424a66325a452f4e37314a2f70737434424c7865562f757569706b64434d584a653035732f38704a4b72556573303374414d2f49704668386f6863484f722b4d5069426244392f584c34754c645a2b59655a557231496964504451697967702b425a6e565a746564616a4c7254506e6e53543949763542364b705a435a316658574a6363774377306b3737453337556953357364306b307971536e4a46464545305644364b312b516e42584a516e716138396b39485676545052354576346839796c6d4166576e634b55534c71436c416a6f707153667a4d6f742f6b4c55794d586f4e726d726b6c6a7143455a336158794f64333672583041796c54524453396c6e776970786d44364e55357a717739634c4a732f685079545057464c7539434836374d78757453565241746a6c75486e316639663347787334444b4a52722b55496876796d394e4d79454e584a4a495250695464564536685a79754c587a4a6366507365466d7839736b75705a5148764c767a4d4178367a37546771547941382b3839355256615830515450786f686b705a504c786169306676614e7243754b70732b636d35357359785351502f47794e732f742b4c545437786a526b32576646335875323968556b655a4c5379724d5054484973687a6c78554f2b53744e434c4c756179784544694a527263594f433369684154653838672f6234727037415a6a4d6549305a3876524a756e6154384f572f38416a59377539312b3043686664537a374352597747554f6d6d715451356e764968645a4f3762776e6a4d435a2b4d65474d3549766a7573356c395a4c387131497a573057564f783535696c2b303066636d67626673433137597555556d4530362b50614472503670613237355144305067506a6d644278646b50475856365855374c33766464796c6a6234374f57364f6137504a46304d37705a2b68544b77795859344a76614444496962375a7a6b544b54694563717256446c5a794a77576d65717138754b4765456e487858336e776f5149794d48534c6e735a374755306a6330365063557831456276713036504945676859717159796457665943716c77364e53303669756446373355637239343261725769594f52317a6b386b76704975415141446e2f57684e546a613836486f4e5950392b6d7475736a4c524c6c736f6562366667617a2f414b646177414445482f636d2b615a51492b47622b70372b624977305a46357a45685a2f48514a456d6e4a50375a486d637370673353706f5246476631566a48505a302b6c3335665a70657748485745744b59362b59587270627150717377376746382b58666c6d30325168484270726739787a6643696670353658736c53734f7955302f592f2b4b4a7149544f77492f77444c7546576a6c6d704a61365a4e4341797564696e706a6a5939315554306a4e63354c4c485359726c74615939542f77436d75366e6a586746644e75547a2b7738342f774466723831774a50535878544243722b4832764937676d6a5a64674d72707935386d502b5530576832685a48734c2b48516a467458335076714c575068533171614e452f62374845357a346a796f4d636f707159426d6e694a75455646422f7741336c6678564b4a51716975764c6d736c593646544d6865616f6b756f636246385437626b31702f6276524836536c6b78544f644e6e35593377574a71654f7852513378312b68516e5334685a587363747a4f543465587a71587241785a4d74764b556b56567a674f6e426475725933673177366c6c6b71747550556e315048485551574b6a7a4e4c506b64584f485854394c516a61786a6a6b6238326c4e4d4172532b4e4c41797a3438724d4e46427a4c4c744a5266546c794279394468565856546c4e6244476e59466b646e5a637a5062796351474b4d77706173316751416c31387838315a31705a566459394c682b373252775652557a356d6442454f4c6d6f5558546f2b526d614c6e51712b47796963714367442f4f61744c6f3751527171786771706d30644767757075374e5872516f4f7250622b39686b326c4778734d4a755a2f6b6e61643962764a676630317a7464387a324c45482f6a7a4e6e5138695449624e425546574c6162314a67495a6b5751364f624e6d63676e7a3436487a7a73537646615847774437365136422f424f41456d4a783369787366423050354233636e476e324c346d546c707936457663695371435a33756730713773355054536b6b4d4c354f554754457370573457703551553455393535433576477651376638706f72324f5a48667364582f464a732f69396e4e3331393138765331447035584e6f55637a364f456b6572703474337664715461536f367a48676e53625245356a684544654c7758386163785253757a5655327a304c673939574e654e75746c66596165635431426650387a424b6c7768784d335976737267644f6f352b4d5369624b6454776762663841706c3645523545553262502b35343179307a727a4e4471426c6733725a6c6931687952703446337937417235785355696c524f7a792f546a6e47554b5876337a776762532b4465695061436d30346f614f75614d644f6572516e544b3178304c306b5a2b69645175347661793161793433644a524f3750384a734674497830442f576333694f6e45664e53646d426c536731796d61477161394b7553674a61717667646f64374d6664466a4264705748705336764671364361585542536c612b4b6f396a5a724f59794948742b54564e5a4d4e424b2b645139756b69514d764271526f542f5672594654386c5850346d67666f6c3866736364483877662f5a61616569715969496a454146703272575672363861666d77704b477a753752524a48504e537831704651724c45436f576249574174725356306e61706d5a4e41514f6952486f3775385969626e4c704933486d584a515769444b495764657371424d343254636130557779306b6a6a5063705074582b31556c4d63595a383551554c79316c38414c6b3531553270452f72364b4b4663536661342f66557673502f4146355638476f484a5336576e69444368776d43777872336c525358366e7674324a446a6d3078492f734a53302b76716f685257726f6d444247685753766e2b596b4a7a445135522f5a4e7068434e727a392b4d6e5134713669665247625535637169364f6746573966514563485937794d5a5957445051786c53376156413650323047625250726754386639552f474b4b5a38752f5a4d4330556d7a7338616b567a387447495a2b6151396a6c57754d654a6c583054653966546c307541745832526f49706d4a6a72416c7447726a362f4f565a343662594b617150747552564f3571756e2f32496d4a747371574645617666387a62505934422b3477436361656d6c55443875463863385a357563764b3032724b4e62525a4f5061544765654836347851437366683635617668647770684d44555a68505633374b774836333139736d6a7a695237513249466d6a2b517331456c79706a4674725758755978592f633673525354776f2f374476694d307a3154415376376d38614b796e6e396b796f71614b2f6c42732b64565032593944324a6e59544c433672356c76523372792b424b566739362b744d4142552b582b477058504d6a7562386b744d694f2f4931674b7159367a533558715170586c387048516452484f676c4879773451535266455445423751722f4147764d4d4a45697672364e65375544757a3839326b624c6f6c4c6b6a7171797752494955564a59723432744876434f6361544c345a332f41434e644d524f63644a4654612f6b32694e45314f6b7974484764544c556975544b6b7a356c646b2f59684849316a766b63597a537a495533326d5036543966716a644b70743631724d654969646e6e474c6e4356566c345651614c796b544d7a2b4e524a7a32304d465a386f4c34575231436d784a643531545454387832504d506b34584c59742b4c37424c593962522b666e597456703772324f30592f6f2f77416f7739485263592f513546454f6544425878592b31704a51584a70356d6b372f4e307953694b523338526366707834522b567672744d726e6733342b656f752f6a366d674d474a7161506a6c654c6b727373416c4f51765230334371576562552b4e4a2f4f4c356c2f4d414158326e6451754c5730362f465750583048534c307a2f74662f414a466552436e6139542f5050417654684c33314f7553452b6a7637595a6c496c4f764f59752b714d56692b463050524d43373245365242672b382f59585062587057655775346272656e48397376385a66444a566f395271764b2f574b347235682f656c625634356c6e5a4832696567595a73317952306f797a732b706866457a3367414f486c6a706a392f4d376530616e3849323138577950526e30487a4d7866703336646541654c5a693830374b6444457a3875506c7637616c7665572b58584d5979374e5156334f766a34394646446748364533484f63437154463739717762655565717475685753734361323672506658665450322b5a4d6235623946305878446f707a557255535a61435368483653665068702b675a6d557a5036567069637a49684e506c6d6c3558473933664b5a6542384f48756c4e525a6c343872583366446e49435a44376d4a6c3247694c7545446d652b562b61736a726e2b5762355a697461385245394479697554626c706c314a38313738364e794f333171732b6945496246515a74724d724237707a324a7363766778316531726a6d45482b37336b734a694d52454369664b66555478664d6e7a74587958577a5831777a4b663356767332504738376d365a667644626e3673326532534e4c64444c7a3131664f545a353659442b327878666270677445545053426f6236752f33596678783948767534756e36332b4b37646145466e552b49654b6f314e617a744c645057596964567455346438666c59735572636a724b76717067594d6f735563796a31723750652b4f55462f774156507931622b57766d472f58346836512b582b482b4b5a49344656506b6d746e745a6273342f6b775a3757337137734d654977314d732f61536462332f414250726e394e69365775727161667534343333447378345667446c34585131753830637366636e4d6472784e7351584e5068466e587870785365444d746a493073664f66614c676c54317941427770345745326d5a694b794a6432326165537047663474427657372f4f30355a6142477934706d49636b4b383233575361686f7038676a792b634d46667178726b2f426e416c674a2f714f76384132666631675a3167717052334c526d74712b636b313151357174584d7352743557636e6d6453364a5a452f34536259306a374f4d3374645168494e446f5339566e7257517a3772346d6641714b79527558574f526b5a564c3833754e6f587347366f6f4262384e6d7779704f66307053574a2f34542f636a6b4f68452f743749446262646b63622f414f34502f61493944767a626476384171723476354e56366265764362343539667972465668497a504d414c505a314d6e6c4571715665346875466e435a4f756a69564a4e4b5a536a36566448546f3639394c6b6e6d71504b56362f6632712f7a6638417837304c2f732b6c4f723576426e3647725a337a48303578562b52354e634536732f7258426c6534716b436d574f63654e4f4d2f66546c492f77416165742f5939394e66537638414873695045614b2b532b496561354450712b512b4b2b562b5045716a74654c6f65535a4e2b626a614764786469617157737377774c596f423944503875566d707765396e734c327034476b54337749493936576375396c437a633074424846557a5056796c38644c68687a36303044336b3745702b38747775426e362f77424e444f7539376a4d493434553176704e4a31314c596e72694f686f61484442636849583754584b7772474a496d4a36546851446b48777638414d4442334e4f78353544556b426f677a736e54495372616f4652554a434d7a377849534b594664445072752b53373938373872766a2b6e377a45464b486f75783535435846503436723535724649764659555252784879617a344754746d5173573043723431664d6e34532f7a634a2f4d524e446e745a782b3738502f5939546e3968622b3135483576476a38307658667834394850787274656a304e3847336369747558573657416675656462564466334e4b794b7862676755662b34374b55306e3144715a6151382f327658786a537233646f4e6679432f75692b4c666c6836322b6134766c766e4d5069486f2f3658615a68344e344f6971756c766d5658696133614f6835465a6f4f6e6c445971347636344b5361556657434e50756b3976422b784e4e43326e577378586d734e50384130382f757254742f4a39326e703165542b4f2b6a4f6450577a78324b424e4f72716430314852485056554e7935782b692b464c3074553450726d646a4350384133424c516e53337333375038306a7452482b647669587146546b62352b522b4d5a33706c58674b6d626844734d63793975763437564e545771664b476865666a7a356134596f6b6a3050766e48774c654a4648322b6373364d78792f454c4d315057337748496731664e64485639336957666e6e5a733137686f7964665435566958507961512f6d4b464469357070586c6859524b5455624b65414156663841656f6f694e4f30384f74783552507a7a2f4e33612f4b587a722b47384c2b484d394c66476c52342f6a4d4b71725435522f445a2f774f63766c726d6d4f6231315573733036334f54774a6864534c714865372b7651304e4b4e4b4f6274446e4b432b2f566d4f6369364d58466454774f53636f6f756e6f2b424c6c632b48744449316b756f76654369396875367235423530795431444756347a4c30505a772b6c4b5458437a2b5658377a3532686931502b616d506e786b4c724a69596f31723933777239774a4d7939345a4b4a68754d68476365797a4139376b5068625135305443353035674d7569496d746a46642b54682b38673462784a77634167556748535a4b304167345976437a6e4b565a3732317470564f547934632f502b4b71674b7369372b765a784a2b3868392f733650384156626266694632656e506f5a36782b594d67386a385238523876616f3277554930774c7566436e3331757457593658524d575a553147625135716d554b344831766b6f36444f68303657314b784742764d33796e7a44304a385855727a3331547a504f64627565624f3455795a69356a7935412f5a7438594c74507350534875747144386a6c314c50393658325a777053316477593469383874646f334a6731504c726648664876504e547778784d64426d57543736374e724d797136396a55334179354e56744c676b5a634937553954526d59424e2f6d3765434364586753686b4a444a73655078344d3150504775334f377a563061655137502b684a77584a5a464e6c79653266334452716349564c713462754938616366793370453656677a596d68514a424f56334e36384d7068387a6447326166734f74343951337146567478366d356c6a4d3964683863736a6c6252466f36542f77426e3757786742664639697253304463766b7a316a7259664e50565664776446756137466f736d626b6134503072744b776462324f46742f476a4e543172715a684e6e5165662b465438526d356645466d6162463273544e526e793647426275523954564c75495374637464466970306c776d465838333663532f73384f617961594f79483976663041747a2f5158314a7338777a4537492b704e62633555666b4d6638584d754449754c517258484a6c7730633349782b476333636a50764f685946634e644e446c6d584e72587a65754a37416a5071352f61332f47763170384e386f37643666357667666c4e586b4e6f5a2b7a34643373753369372f4147644e506a6374795a382f7457684b78636b6241355372676b4d31376a614842627871757671566e74626f48427231672f47716e385a2f4d392f3038646e756c66686551365935586b6e4b57364d312b456a52753073625073717371514f6577553575676d72333158714b382f70534b5453487a5464744e5466576244666a2b304c36306836502f6d4a34333462527072385a2f77444e384a6d426d593253785256312b5366556b643472792f354a7a466e6b444b4b586537344766546a37543849634151634b7350614b37745064484e744875464c386b504250534c477776472f553379724b6d386f32636a623275552f717652757638637871705946386d366b562f7741747446705846504d4b2f675453454147435a6d4b62372f4b3254616331454931507a6432392b545864366365497a793039665668636f334b6c446e6f386a7a314c6f65776c7a463969644a79737557424d3972442b796d51786c594245363061557831746b555435423678656f766b3139332f6e6e6d46623179376d553262427a62374d2f4d647061583370565270364d3355334a766e463576343043756c653552544c456b7a312f3170464b786a4544575479623039353556715657466e796164736d644449444e4761535034703747666455306271364739314d394f67544747565a4537724a714258337679423772524f4f4d446b622b5258727a35622b495072643456367a6549626d3770753848313464737643644772546f5266683631302b47456d44337567325459316b354b654f64544d736e47422b7a2f414b6763722b6a30616449314b327250786a6d762b49503434626671642b6665782b57486c323966356c6b6551655a6555657143543830796773337838793362364b46366d2f6a4a483672484939326b59552f5a5568644f617955674b30426d6476715869756a37754f58627748637a7a6a4f3875385a6d437a4f38703166476e6a2f4b2b6244745a39477a6a766730746a76313676727a7844565456776171506d754b6564456a5862396131454b7554752f726c724d5438497476306e2f75556232523562343736642b76304e766b76692b737375532b70325278656a32563274755566466e2b57547a3246327250526e6775695a73514d74656d4d576c4f35356e7a6c6261455447616636523575502f6c477966464e44386c76527a7a72446a6b4d2f507653797533513338305a667236737356384a654f3073304d7148764c57496e733972525332677a2f352f7746774d392f623746467070614a6e7332486e7a37315865646f526e566a307a61716a58473449536d625737334a4f6469663046784c4b46586573372f77412b2f774277442f774b7a5636415567735878346969596130506953667552794b6957506c32724f4c7731614457685879642b6d5455386633396465432b734870745a4f6e50553767685748475563434a7736515467684536567a4d465a6d6b7954474861364d2f716e732b6c44527a3557666f7a2f414f52456d6647313346652f643977753841344866744d50566f47387257477a697964715373584739584466613768436c726d365877664343666143545a7776655166316f423138534b726d7669456d54324348474f71704f32732b382b65616e397471397850487458782b357744776639786456382f2f414e545864587843712b73354b35664c304974346771705236367476416b365a4947556d645758324a2f682b7738544c37432b396366312f684e7873437749654c74693535566b746f372b6f2b58423153352b6d3536706948724254386d6859424f577965645a675a6673506334766b3661564d35326c2b6736503433724c3656486c53564b3861784d74326a503841714e645572396e666e324a3370475757513430526b764f52735575346f686255636b31357879782b30796f5a7a545730392b59454c38753957386259722b3344347868346e69476d5764794e415a4753337457644c6d4658487858386e6e7742506f5054396f592b7339695148566f6f4f6d6a6e79574e74577533767a6b51615a64477a65645643335630304a304b73747a346d726c67754a645348344154726f63735362655576556436547269536b77392f44436f77734c3454657156454f7666637a4746586330666f503871362b694f44514f582b51564c644b52365632674f687158416f2b725762323572476a306b6441417273723444586e386c3132737a5a70753745396f6c70706e574a7173544e5254494c6b64476f6577754e6d73357932664554487a306e4e537a6a685a30536479326c3850312f55616e7064316665505a776b4337505a5247624f6e514d716143494664527a37485357766e2b6c505067563876546d2b5544486e4f2f593641796f643962695375496d7336676c6e3136666755594c2b5346694a36502f5a524b5266487859394950387763353377734d2b4848647934466d2b6d7545486b506b7568506558447a3874747657315051645445366e7853726d636965677638414c7033527059395a435052544166435a515073357a47303472455477774e716a7855655074307147426148644137735a4f64764b73344f2f6c306f6e6e71354839684b512f6b462f4d4a6f6b5550734d7734494e4b623264727245785051522f52303643454c2f712f77416f4f4775706a3570614b46766972626d776a58326e6c5830755a7535474e546e745a4d3441417a59637854742f5446534b333572616c6556564a524943525244564c587a5a48544956535a30577455374c5633347a4759752b4e6a317764427a416d4359666c397843395a672b30744974444d5a46704a68344d50593953425769365647664844566644493272715062784d4f4f416a4f644a41644b33665a2b4f683868384233394273372b4765473766395670394c4a41486477664661373734716f4a37784a55315a616270396d6953366638416a2f624c395867646f527a324a6d5452776c55722b4a4e4e536356486f45394c78324e47566d586f6a664c4a6e654c4a647166476b466e5a4f4a366962747364426d7479544e73712f774233474a737a785332686676664734697037547843476571486855506b5754745a3235694b4454376b376c30365049356a48574e7a7964527035655a6a5852736a2b755a4f574e62704f484d435932685a5177774e367256746a757a6b656154593858394d472b6638416d755444612f787334395379615761397755517a76586f444632397475584f706e7564432b7a36687236592f2b704c4e59742b5a4e504f374e73566b53504e39482f485049516871792f4c594b427359376b764c39344d6a6154654d464167544d5361567078516c57775a6573596f57634c532b345879526e31704d37637a6e4163322b6a486d4657524c6c486f59627942382f56786a71794d70643839596f367963346e6358564b31637458434d54396e756d596c30616d4943542b6f7a486a4143655a656a486c5068506a32317657727a7967644e4e4b5345577076706d6e75306e4c316a6f307675635936503548436b58635a32524a2b364e484b62675338496930544f49477167777242524e36645066674b755674546e7a3030462f31614b61546f4b4378723553596b4b6c2b774f394662674d474735792b4537626635426c4f394d6e5337564f537755784c423437744852752b487151362f384161716c6b736672784e493239636f66397a6735773266745039614474502f594439427739592f376b336f6873747a4d2f663861394c4636667158354c50316e616c5136575a32706d4861636163336e4b722b58614566746d3579596b302f415844427145712f726a397376743062523033636f2f706a3545552b70443964446362736c2b69306d30713753716171796b4f49616a6d4c7767614e53467245462f4b482b4161587a4b3733762f414b682f5868394250526e71357046516630416a437471724d39744d5534687066706a474e5658513457537a3850354748776c4152726330574237336644774d6c306a58544c4e63357952663852386c63466d5862396956715930635652576c48754a347371574966443076697062387251596269414d662b7944325167756267553032554976576d346b312f5759754d6d5149414f2f4859345a62442b4c326b6f706b696f75554238744b776931473158446e39484e4f585430356750594262654b36394e5946525056566f4c3170546576344b6d794170716c4c41706166395455465550794169774e46395230364e636556527867704e4c4571346a74545a7267754b764e554b4a36716d4d795764577877386f442b534e58506842492f3045505a347834327144734c59676137536555744841365463756a75357a6d594e626f37666c443276682b6269785630445069667266414d375a2f61477266726c35514e67306548386c302f495a697974437337354973664e6930756c49794e306c4e6b374f646c49704669492f636c72443437464b34667764636b644b52316b6544762b2b74367246354a366b2b6b5870444e694d79302b4959586b766c75684b576472414e37642f52716846524e71534c725068736c306a373042455335716962424b33334a35367673644d56746363676358386676566a52526a65523457553246476e6e532b54342b6c4e61334b4a634a4c6f734c546d725a5370734d2f455a5767586573574a2f443866365a58304575373078657352746e6f4e2f76527a79442b3458682b4e51654678666b54354c347a6b6f747579637a4a723167386f4742426a3437446438756761326f79386e6d664173757930504759416d4e6a414b67452f4e6a614e435a7a37764932713842782f4e66522f314f385a395576566631443877395476494d6c37624c504e4e625a4b39737344455748746f6a4354795a71526e5134574c6d42314a6756566a48484e544971675a73356d4c556d74613742334b38613876486438667a2f4b5a466f6375334d52375a786a753633542b336e756d7a6d35355561446e335753737a532b4c6c4457767535534848665763796c78386b7869327a756e714d4d65584b66763361374c466337517137557455685a796f6f6e7a382b48486d30594c565a4c5853536b356c79374b5136687a72484e70664f4a79634d37576d59695a6a714a33736f6b314d524c7a6a5870356c39444434366e54722b72693036746b6d4e536833323275677a633873584e6e4b75586a446d6d6741654f615456544a5a6e54725079464965712b6a423165387a636235645176736d79396b304f67384b6d6b7378416b73445173577653476879353253706c6164507338655456573269704e512f3170455230694f6f387a5038416363386c2b5733787a44584c4372794274326a4f744e4c396c75337741347569716b374e2b5666334a2b753046644b734f54706334366e436f6739686a336146652f34527a466f7155714530724b486e625461595549656d706e3242374f3571366531304d2b314b535a795566765a38506675453136773968677665745a69337948526630712f487a3849664a664873507a447a7238727156615466454d75377950302f30504448654d3134327a3269506d726d532b526255625a726f65695654753953687338614c4675463958466334334732707178697464504144656c486c336a7668666e65786e656d6e6d466d3334696d34302b4c377035524b505564747735386b36394a424c6f626d6c33616f6e346f68544232383750735830794742683161737a484e5164686f5057344c66446d6c5249744e4c6534385764436e783656755a4c4a5932584b4e3258567061484f354c71744878317951456f3167427839764d5754547a32743539735a794455466b4f5163792f6b77374d6958567231335a536e525354366e63725a686d702f7878664879344a66586c7153544772587a7676596666684e7a4b7a634c523544536231463833302f55377a58506b314a6c54352b4e754b6f62477265486f6554766f69466a676c6561512f77444836503841303950736c724559352b3652746b596e3661757376586b6a4d5277364339746a506c6d3866364f4a6b693937375830583859764a6f5935507866542f414a4f76516e7a5a36636e6f565a4e4456396f34615532664d6d69733158464732427a372f4a765a38623855784e734d6e57567a7950796953543538715a43706d3664692f717950763045794d623277644748597357767242584d644366684a706e4b42393030346d5a6e7a484e48515672554a663031366c787a3347787237354b535778663155724637707749654e396b7130385a786644366b7632542f595041502b756a476e367948324e3476354a3546637649385a3866304e6256712b76634c494a717578474b562b774457566656416d564c766231684d5a3745706a70412b4c35386e4374626245356e714a68357636502b542b6d32626c65513739575a4b6531666c727a732b445159564c34616b6c64466657356f69704e672f476c7065772f6567373068537058482b7a2b7152654c38736342484d30304f32354c4a537453745931566b364d6b7466507a5036523169304a59776263777857702f5545496e3750332b766437505a2f53657858352f774277564f66736666726f6c314774667a513067564b624b7539625037737876513059665930567230766b2b5142377a686a5437706b6f2b634437514673747a4e43746165304b456b566a2b72535a56384738584f4f6d715255544b6b7154372f61516b35426f36357333744a7661464f705345696e566f4c375632643945693741564a6c3656664e474263304b4f75655031536d715a7859636c5a2b316f363469443750567548672f356443535278664578644e7533496f496d4b6e616f6a7a726e6a5653554a48394a576779684838584950385748585650412b6643314c712f2b46726345726835726b445a707455344c6467744a612b434a665536314b43783477445a76583156684b5a55524a434a744c6b2f79426d73766c4c712f3642362b784c7037714d2f6d484b5268636f46386f2b4a5a4a726b6e4f58552f55656761695a4d2b4f796b6543526648544e534a636f2b46507842437067712f6d335a386a7578593639502f41464b50565738355172305274637a337864514d374b633263757863556c674d2b355131394b5139774e4470422b435867634f50344c357a357572545536377a4a57743458546d6258637a746a6c6379716c3630564b744f70553631716a336f3630635977485366425146422f59724869636453637a5750772f384149336b4a6d624a43577a7370305a4232697048783757343345566e6c4c513237527a717364734476644f4e4c73736d45696d6f4a793539594e4e786c4a5054546e4f656c654168486e656a4e69654a45733764327242706d444c6c7a4b45316c7376566c7a384370746d585663393435374a334a444d66473930356b6c44686f4d70336c315732374f49486e48395566476d2b4c2b6f6e6c6e6a345457776c6c33366978436b33415a79755a512f695a46524c3476766145732b5a41724661683443336535712f3051643162636b794f6f666f372f6255384b395966412f475338633952394550565879667847547a722f774157666b70643947416156794e64644e55344f787037585051524f61535a65684e2f76736b345377506e74727a57654e65576f3130386d2f74752f6b6e692b616576336966696e6956586d6c663434497a39547a7553465a66794d6b56733037314c792b712f62616e4a7a586461305978416b424e7a727a2f367866446575765359724d38767642706a34774e4b3933784834464652537a7947666d624a4c4362362b504e77396953534f776d526150624c4270544b4b336637665a386170774d476e7462706235782b673976766f4e36657139412f52757279646570664776626a78764b747a525246566a6f6c314e6a506f2f384148354753362b50777971505773574d306a3078493668335850452f686d537279623233337850516442665376314d5a6a2b4b59797450505a6d6132524a326a347634366d6f30526a6b65503656376f55304a6a627565396d786450577a6e4b33562f636d4f6868716e6e2f72473052457a456442735776314278652f77393847315258346a322f704d6a354779716b746a52614c2f4a46374f6731667579306f4e6b4c486435553071503555334131793052476d427a562f7531666b6c6e666a582b4c586d44634b78356570506e6b5548673845674f3439654533584f766c784f5a6f4c6c6451754976674d346a6e4e4e666476346a53354a436174765a394f62367463646d6f38694834622b6f337162682b7466695742686556466c35486d327a4e4435744c64556d70576a414847614c2f7574744a68665667752b52314c562b77674a4d756b426e564f6b6d642b704554584d2f434e6b50376a766f503666592b4f2f774263737a526762757338766738653374504958542b72723635377069763867695863537638417947714f426e557468353137617330334853344b6876476d6a65307a73377878715263445a6a41792b4873776949756f30567258776c4e575356385371646e7a4c456d4a553171506a595832505937322b30512f727542504931526d5a7771715848375769703661333050307535795976342b65655536524e587a63624350656439674a42715135373575726d587a473163664b524d632f51346e2b506b41434f6668393549596749684f744d6455392f77416c65636b47306d4b6944724a5234776763464654754b39675742474a786e4841454a55766e39307461557646734d45327654506e70415a705a79646f636c4c3557534d63686f2f566532746b72685758746359464b517135416a4f6d4b7830795978395644657135557255642f4a7a3346386a57555373685a4a56375a362b6656575a4e537a71544d432f7a4876652f4b4567384263323779444e4b5a7369484d6559732b4254534a415431702b342b58672b775836517854703730557145754d6757772b705638494d6d59784f42624162756c347a6f5931324f516d37756a425079414655754c766a72536c593538574f584c7a516e7268783249615832666d547470373946426342536f42766e7258344b304579614d38766965314553736a51524e4575564d6b55764848524d376d643436786d686a2f4147474f593261734f476b5a6c4a396c76792f4d63545730385945677776797377504461446a6d6a30475a764f4c536e36326c334e31337a496632615274576b76506e6e71634c4a5630736630433936615164303266534270316a536d656b69314e4c2b35373541417930342f686245424c6b614d2b5765747956302b4e58664e6e6b37527a5739555478492f63344f6b30792b57616e6967392f3642544a2f77382f692f714f646e7150366c2b5a2b71336c6568357a356d31316d6f3577736e4941374e484775596c394f42504f706e37504c4d546834726b2f36396a65664c375461514757394b31724749416d6349782b6164716b57392b306d645a324955346e666349724747356a3750695934526f574853397066732f306179492f593073674e464a395a52326775756f4b725234434b4c6834786a334355614864572b734139784a63492b78584865355357396433396d6a713950345072366b624f656c336b49654e2b4f3646657245756949364b7276756a58653930624b534e54394f744e5549706e6a2b306b656465665675615a746a6b4d757336624b546a4d3436433476482f56717278494b3568596c4b44655458782f4f58633759677a56574d5247315a4f446d786c79314638362b4d35576e356743636a65435464796c7178623569352f516a314338772f4c4c3149326643504673584a38493854584c4c3558713330686e4d63506334317a63357a51705244486b3562593356646f4d556750475747426365366846444b33694e4f4d32357244722f77434d2b6e365a62303542374a5a4f746d5453785664526d5a4f56516553723733384e6d534c3134526d30566b31647958797772706b413657704f6458776654446c6d387a4d544844417939573335486a6552564e756174766a536b364f78727a4878304f4e6a6f33737337676d617a4d30667072734f69484c574e467633595a6e4e4e353054706f56573543735734346e41353873304a764d2f4a2b37794e4c5166347452377853753673623662412b762f41436641794d704537432f6a466a394d2b32484356373365775a6672787a48562f572f534d54484d4c493166444d6e5579485a3272524d447374737347626d7a6145774b38667a504777526d545074526b37696764737373304d392f42426a77344f655a4a61716d412f686a4f4f4f635946582b52656a434c736a4f314b5076654f375759387536553959614f7a692b51796878634c34796b56634b36714f527775615a73736739674a495563644e774b426d4a6d4f6b6957666a31733666674871546a766a657150783654546a7a664b61383272536768537635614b2b30747a32614447624748577550355768304f4b3533335441377277635631625246713437784b66795139634765632b567a3771655861482f6a484f356d4e3474703169796a794c786b6e2b51793757504465367964317a354d6c6d4b7250564d6e4b346c727638486e53464d7159725862455241327038426a502f7743616a77727a507847716a4d2b6e70616b32666f396f6d3161677a644a475446727955427932507638414c5530494569367552326b535a5235325a69756d30617a694c5769334342732f34644844735259756c7a4b314a3249766d782b7374674f4375616c656b746f2b51302f576e4f765332757972533569304c5237516a3539436e744b582f4e6d4c687a715158546f617663434e557338784e6547612f5061394c49707443444e5a6f44765a66474d6c525643356673367076772f4d452b675848544b5a544538654869446d586a51774b727a513066736a67363246556c7a7370694d76426d38696676476f3736595a53424d73734d39445a726b644d78527950346d386175413636326d593651482b354175316568484750426b6450303678546d5a30644f306b6758747956365a72795a31726c76304365706b2f50303949476b67685736675a6e7a5473774e4176574430366e70685639777336765358426d3677715a33646c356a5a7147376d6a57795335304c6a306e4b78634f556a4955674452765070664d787a525a7057323335534e562f544c4d4c767148744f4a586a714443443541516270644b367932625353533871386b6e78774a6f6c6c6a3759354254547067315444704e634a6d476c2b7a4936392b4e79354545745a5a47784b6864574475324f66572f5331646a517033593858446a69636a55713547764e37526e7551584b486b687273466661786e41317a447a32786a6d3643396646382b544d68325a77676b343351672f6b42695a466d706c704a616c62437859456c79525867313153554d4473594e6f41675748366347697a3757642b31497332624a3242756c4161725a463675664875614b4d51366c3532586273586146504b5964572b716c5748554d3933774e53752b626a35672b4a7a484855434656467453654c7a795a48756c6b4a6e38686e6c6d614b4936567a525a357a7463347648322b4d356b376e696c6557796a337052596641484e2b587330384e4c702f36415a46346c5270366a6e724864586b7961644b5a305a3063575a6f7858652b68534e71752f5231707672774d38674c516449304b7155747367357a6a632f744165774e507679583848732f6b4b374d2f7977496d616a444846632f4d6f656a2b586672564d79644246534d745a356a696c7a3139365a664b676c475a73454154327166536e792b6f3531617564714f386a774a78354e4f6d485a30767233647a346b76616b714f364f6532397655397371715048577554676645345530357075396c6951536e6d67316970394d4a697a3337393558615a332b544a6a38653671463872356d4e476475665754736d4e616648643531574f7a6e4f665044496e687a4559437876784f3333526e62336a542f5338634c783779725273795169792f343379576b4f4e386e7a59704e484f2b4133347037782b565a7a50675870662b7161464d6972437054387a6941777654534b55576d307a474a466d656e6b2b616a792f774a756832553954613868526e31573136384e2f324d6b4d6463454d756666464f34386570613359733873387661445574334e456a5a3859764f4c2f463952365266512f4f3862304d714d557033616a7830575a79454452644d74625836475a2f456f64706c647a3636364c525a783746315567465563502f414e4a6c525050527858366a5a57654870426d3632786a59634338775565534f314c47304b67304c4b797962656174372b6a2f6a6a31447a786e36354f6f58593155336555773339536e363142547535343869727458566d6e587a51566a506b5a67775a644b626c3355364438666159717255542f47315270792f4a6f673469544e73682b7a4f3735716a2b43646b784d784f5947745071456d4c3033395a6648395a4f41324b547a544d5a413273705a6f6465536a426252397242744479445955386835645a37785544512b457a545363394157674462786d31625637366a6f783662376c4f6d6d477a4b717658686e6e6e4b6a5061695155623365555a3578726a69354f626e66466251795231504a3067357a6a704f566665476273356a72456a6147534e2b336b5378562b324e57786d467455685a5a6b4c6778354b7365696e5467616a4d6a6b5037685a2b6c6d4a7255775342505157795543396e3131427056363654536c75706e773563486f4d5971303166776366774d2b425a597a732f5035663841755357582b466a4e6f64626d664b4d32507a532b76384c62487a6f3773696e3165522b4b785755507a6643764472644368656f6e4c35446a6371766c30723657646e5661312f6a37594d577978637166732f50514d36417a553064435635696e2b72346e3863667a464c2b596546654e6566655862576e7158466b7936674c7038663841463462644743504b3546487053367a74487833435a6967546b735848373173436b6a487874337866563151556c566f6d61317a50634a46342f77434c546544357a4d62467836734b6259715a6e76327036554b7a5a382f443263304d2b61757838767a3564797646625270646535456b3466433578674b70442b5774707a626d36514c78394e2f4c4a5048664d5048374750707a736668464c477a55365773396459536b7458536b563757536d70592b36694f686136456167497248746172424e6463634d3977364b4b3871674945786a71746f647967636653324b54644e32573664482f6a6c7569682f4764354b75466b3547767068616c68475232463037552f4c6c37767a464265555330524d35546b3947787332683256674e697032504a4136723675596643444c493568756e6e573533454c47516c4a64574b6568797a53373354714c59394e664a6d59666a79632b6261786d30585576795755753267494c315578357656314250342f4d4b3538506b6138796358724f483254365230664d6c733448665761356d4a794e6a2f456d634353546b3765614d4e4936716255646c5a71563576564b4a6d625158582f7156685362436150746f61745646394c6d70302b46554a7968694e694d7a79434c6b7768726476375839576a764f2f566b6b4f6e7369426b583843766335697953365032385a2b2f6151664d414b62376c4335694936526753514c30756d5130436c756c59714e3955344f6b372b3533792f586f3732526c544173634c70355569486659687a766530544c6a564f5658342f702b6f6a656c53544f6d443677706664663955436a6d6d7a593650624d53766757334b6f364e624f51316530757539356c395070474241514175773869763841636939437654767848383653466e69574f48673335522b6d644f6e5a34376f6f7866734a39546f787a5a4e577246315035416d6550393059563654374b326f57667566527843696454514c2b2f527465644c47376d30376659546e30372f447230664267637976473944725a4163353331764d3966467071504a6d667a4c6c305075626c4253695361486142614d716c6c5265455a614d71644a5a6e4e573272627574772f6b4e6c64663841434c306e4c4b522f472b4232747956356568356c4a6c73382f43464f3752765a5756414b7175356a45466f466e4c6f7143575a616944724b584770527a684164645065326e70664934322f334966524c3073394f3876307a782f462f4547535637594f666f5a675232374e4f67312f50354d395a38394f6245656535496b7852755838704b454864414e556c6d302b6e51746132365a74304844727a6a786d6a417a3549566f5252486d6c7550625671412f62646c456d306e614f626d7a6178687a514b646562515a6357704255484d636971446f345468363632335a3459774e712f54722b34763574364b2b6d486a2f704a366a2b4561336d766a3368314e725042764963727630744878354476646158644c76574956744c6e684a626563634e4d3342584e45336c4873616273353059746264484c466832772f43372b354434563679654c79336c736a6e36767a783458496c35796374734f796176735376687a47364672744c4e6b4c5968486e78742b7855554664644668756e67414f5856304a705041645376482f41465373552b536a4968763163545461796d4b656176756635474f68343533656b592b35326a6c6a46446f75755a4b79733163354d5a7565325a68306d5973776d7378776d4f6f766a41386f7a664c6d33775661475a6e38706d7a30703261684b2f787447716739534f6457745866472f6955764356664764453070704e32697a2f453741714373346a4e6866666c6670783446367a2b4e2b53656b7671664c4a354669582b4f32593269694936732f624f566e57772f394f37447a55475475564d6e3470614170594b514b68786c2f4a43645763544e4a726173385a4869652f754366694e2b61483973667a434c7a7a306e396676554479763841482f7a6652374e3433354c743032555a65543565366d3531667037355136754e3077614446797973512b7a73797a6f435a344a5454476e6f656e70616d6e7278746d754c56485050794c2b37372f6345794a6938547438346d77726d35366a6f64446c395271614a564e7a746d48553753544f544f397a4a2f7349547766706d6e3567354d6161577466764873326c31696567357a65662b70766e6e7248354c722b6f33716635527065622b58624d347166355235505564576b33737664536c724668315037716d346d736e46382f76396e7a4430566d6f4f4e56305253745932316e61496e4c704c64304d35727570533979545a4a777a4272436b59784c566f30795a33763165527063726e432f785631504f41512f35454d6266697a3568715142485179524d7a33414c454b7036584165484b6d7a73647a6752675475437a35684d2b4b4d41575a4f346d73433450524b2f447145593575417955445071783558307569724f6b3046456c50614f3953637a3776695a56772f6b3661516150424150654148314b65726b455072764b686c54767463584831457a47557874576930342b70396b796579326435505950306b72466641345246376d643450534c67352f732f57526b686878396d6e716a6f49416645366a76766333355259752f69616c2f4b736d72647864524b4d56712f5a71547a2f4133475876667766583149567456304864374d7a70724e686639396f574e46713239576f374646714f427466766f745a7a72566b42476650636b423458783071392b37372f4150492b564578683854776167713439643651662f4676496d333375522b714b6a5a4f7557663671324d6176674a4e74494c4d7a535969516142465a556852377051593736797533634a50467053326d666c6c5365494231516e5151797657723966435442342f394362417034796b4d35546f714f746a5447424a72517072676558307864505059645465554e576c593041744b77597235413934676333444437492f304473573954566f4d3149477365365068723439557044624f44667341534b676a2b41474450375870574b6756333452562f6734432b787a683063764e434b4f6541714b4e426167766a446e4b2b7066593937487a54633630554c537a3955506150566948764b416672796453584f4662342f714e385037625871466b656e3335742b67666b6d7a774a49433156356d75456b714b76666e3130325a7a5a4d3866634c2b436e4e7931745637657063645762385336506737784c6339617470307252504449392f55757246645971334138673863386868744c583767544253334d58484a4e4a37315264764b646b4b33446e6b6c6e584e593650716f306b4974546361752b534a62692b713371466b2f6178585530706d4b6676385450556a5930485661786354666d6735412b317064355839783358664c2f414c6b78795569436f53347a2b717a5373393242632f70352b555871427a33723869586b3354774e574b5644707a5a2b6c71614132446e6e6e2f447a516f444e306d454d2f434649736a416f7a6d3561747764524a45306a75344352616e6c6e3437657137452f2f414470656b50707a7676706a32487936486b4547566f4f536c56546c5554546c324a4c614a307877353976484f4d422b4f5a423848356744323178656d497265306a585879622b33482f622f41505531373159694e7677485331394e6e4a7250442f4f4b6170736a517079347a6b3067676f476847624f49314f6543653842507673617458792f763470727872363165317a4458587a502b797658656b4b2f52723139786434615668705159336c2b41497a555071566f4c424e2b356b69384845646d6b4c753834356f4f64533043616f4f714a5634396f786d6256676141657133397244387a66432b55587239487362314a785a715a39456939503974657a6c306d35334a35626f5a4b626b566a4758387456316e41354d43557539724f6d484334657466616447654737614e47642f77424e664b2f41513750355a3446357234426f56365567446e2b542b503251737a766c306b387a63354e6d73766a452b362b364d7836536c745a39706271546f6d49674461746f6e68467477726e5577386e614b4453683258535073795249492b56676a7661563361412f5962596e35446f4a54714863714b6f42495867436a627757674961645049427174724c79312f57314b6f3172423258526c537245546c3733537948686e3038565178696171426447547554746566584a36344142394851506b54457a306e694458614d545646546f4e75576252424d6c776354723937396853316963793355744942594b3261547659523948346a7a534d4b2b413444434b3776694668597939466b41324b7536696c724b4167344d737968474a6f5753487849384c327372635330766f5973702f6a63426449556741437175703343774d4c544e314654746178703167394d2b506f2b79615451524e636465646c3375665574487954397a5638513768384d46436157663538495748572f616b48704d2f4c30554c65326252756b56434e466b62732f535a466248617955754b6e6535684c304a7a4c57636e713169736d664d44546b56396e37633152562b312b5038413435704452644a693553795a54703135356f5a705732726175516c56417475685238316a42397a43564f612b6a317a754d6277357154372f41466666506841714852394a6163334d57587a36384b5073706e7139744e72754b6b366b6d614662766a3041623955353645756e557a6f6441374f70396a456d78503841563474453942454d65507944784739734d5038414e2f53343931792b4e31662f4146686a65424e666f4651356156457356327a6a493436502b795864674a452f4637484e354d7845786a756b624e656d2f7150584850486d74796f34755363704537595a4a36574262386e386154426c4b6a69364a314f6e35634c6741666d5743766350416b42764d375678786a6f4e6d764666504c436a625234325a564378326d6951647564453659546673705470756f6c4d6c716e6c485173725966754c332b374b6f4c6870442f68394a6a756d42737268656635586b596163326a2f432b3658344130653034447865626f5536484f30745847532f744369646a4f7969732f6457706e316d4b4e3366384d35724e654e524b76496643344c5a494179645471694c6a536171703046616f536a68374f2b43697a506154496146724c324531686766742f77634167774563724672664d5562586d36754e644e794f6c444e4a75564d576a31685548666d4d31725a66686539534234356b36536f79522b567a6638414b6178796b2b7a3275506d7354466f3867427370624b6161564331634d61506c5846506e7a7565483267544c7a526a74376c2f4d7850557a793945666868523773646a6b41777934535a466c5975706c556751752b7270385a6333575964446f2b544131644f35744e586d5258664d554f67764a5a47397047507453364f734b7a2b4835326e5846767866595535366f2f6966344c366b354e47746a4f6d7a4e6958646f74547a4932457072674a764d767568564f6e5468556a37793172755532565057716556714f736d597a3245713164536157774f5576726e2b4376714834583341766a79463639556d593264357258665733527137704470586b724b526932746f53364f772b2b2b626f4b7a655539564c387a685a2b397161744c6472694e4a2f492f452f4a705543756c576e5373394c50704f4f4241487349487630396d74576d44637473745446555678307a72366a704d4178574648752b59486256745749384255336356737475672f79433547664d6c775a4f2f774d624958487143764f73756f67674b664e3733346554772f58637673366b45366e3769774d7749753644474e384559324c303635564b6d3066356f4e57356e3273714b5a7a71744a625251756430592f485670436f2b4e496a4d4b65684775676d7a684d4366304a5159346f732f54694b6479686c636c30504f315436306f707a326d70316e2f584c6c43394a337a663962336a7356557954716d6e732f51412f54544a43583142394e48686655786276556a7869726f6c586d353430545a576d6e546d31677a663544367a4246656c6443755576663859674846586743766847732f463876376a33442f672b437262504e6250766174716173334151796e4367716d77356d5635743079676e546b61444a644971596172715449467534714f4d5a36694d776c2b703575703344703534746f7779396b6c776b555464662f4d694857376166626464343744545354595730364648417541744a6c62506e524a5477767548307a414f672f6e74336276742f774169785a64575a697247665961766b714a54636875505a547561416b744332784847317975374357465a6e6c52327078786d364c3545722b7536674a38775772386161756d77503342335a70566e562f667a6c635852484543466a57374e61566b3148774c795635764b6550644f5971763974672f46474861416731383772484f4247653263475a357863545a6f4d30715172626c5a73613577435570337275666e4c3047653939416444345648314a2f4d7062515a7a72526e486d72746e6f6d586c52385071536e5975686553324834444f4a4f464f77584a4232617839765461367741534275372f414b5a666c3641706f4e475a754e787136704e413534683138366d56507472582f6c4f54444f79583357574c31744368383646704a4a445a33354450744b76667a6868672b5535464e71613976527a46636c644e6b615a7530626171474569577a4d657877565a71475173547061432f6e5838695663556b6e66586b53492f4e706173593559456d52664665684936595a6171476456792b4c656d6d78777176535538396452703042644b79644564644273656a32703758304f66487866515654537537504b4746356f6c6c434b683962475a50614561456d4e2b722b306c65314b595649316830425050304f4f473670307a546d5743374456324f6c4a713930424f48566e73766b794b4e544b45614a38772b55586c566c4f4d7a52354255433277685741304a356c7a7535527878684d522f437436562f4763347a7837586d42617456304f5a525a554d444f6e667577544c3241736d6b75716c6f3147364364465066655961412f65752b6564356f42372f414e6e4f4435334e416f43476a62544f2b395168796f61443164626a44424a57685159756171336b694a66697a57547030474c3662666c565039796965674345332f31616e616750347165393043424e4764325a6645616c494b303744792b6b316c397a57705662785056365332446e3064554d6e5a6a6e6d5742674c554134646773354663546536425a7031374c614f453557624a453375527050756e30644e4158397551374c45594e427a716555792f436e3247707865786f47726e4465502b44535637706c6e484a43786f4f6d6c314f5763733654526f632b707348746350786a37614f3841584e4d7744346d64356e4e6d68302f616573416e543935655a5833793269474947736c656a323135646579796250433439565561586b495a5a44394e66796d67476c5452473043616e6766666b7033387551764a73586c714b46316e4f4b70504d734c4d515463306c612f3045687a507272476866626f584d64564c386c4b7159356a6a55496d52706b632b66672b763641463558524555344c706434796837715a74496e325967614464454c59424247676a5076656959456c484e4a4f5a70567a71325a52657a343156436c6451346a6b30757a706c63704c5a76724f326f3351595150374a574c5571304f39342b6f79306d4d6e30745175454e76384131684e79535459736f3675686147504e5370664130707561733456636d706a67696a2f30366446487358623256556e6166734d754b63316773652f523466577a3865626e496d6d635a6e485148613866505258572b72574564426c722f73364e6430627530774b706f525a4d556d797463344f426446674c2b457575426b594d6359543842626f474d6a3166445046486c76313266716461335a2b545066784252464b4932554a5a78435064385a5566747846776c71766f6e345366325536676155655037366c4766646c44475a487a456866492b4b6c716b654e337a66497071515449494f2b6e33692b4351416e4e4b4d3271613452414757643442342f424a6c6f746b30724f7775584972574a5764466d3949715a3252544954456d747045714c535970414e493241553356685430562b336c74397645456273724e7a6d614545506a30586578436d765137416e6d5845352f413044716f3471476852545866585859426e38796c4137334b2b345248374856444e7a7149755177377334534a586e7264644d396b514c4b584d6e4b30364437305464556e6c4330382b6f4847552f43435775645853564b763642495162334e574d384b6f6f4d71774a767153314554716f7067544b312b62324561474f64327137533547737a454b5075555038416c416c537a7542684c62537a33664575583734396d7a344c62546f6872726658566e7a394b3833526b336a6963794f6a6c4b2b5538704950686356366152396f49543931577771717165534d744465396f527036544b50695171524a496934313741707a346572575333652f33745141474a6e30782b51516a2b6a54673054315a4a366270565748573654534454656a6e4b5a4553356a2b56426f465532524e4f78396a6843414e2b614f6d6578526d6f6a547930626f356f674263625462334c714c4d76304d4c5a30715750304d6c63756c43584c427a435230683533655430716a515832544142636858734d485369304653705837556a444e386b70307837624e32546652784770476c714a4964414f6a713530596e71647a6f366b7557786336515753576f53344f4a2b4e79515773375a36697a2b32366c2b50425a4d39304e4c3736737a593145757047716e516f79503331755535744375554d426b43532f54556e5348762b41314d39396f4145444b345359566d4f45544b4c2f7476677543766634534630664e646f5a3141705378793972727035364f72366d63353035554c5675597964565039543338325235552f77443551583552342f38412b632b6a6e69736d2b563274413779393134354a393069794f56534f7a34355a5a6146474258646c4a6433592f69426f464162554d44704237505239693657486d782f6c4e53532b34636c63576e4332685638566b796e3261656d4c76723655415a3845792b746f6f5443374c553071586d694e707975534b51354d6a2b753445304c626e546a38536b57383248614d6e4b325a6156513744386931507751564c2b496931724f32436c303351636d4d4f782f4b616b54746f4e5146344b4c2b65515a56355a55756e6f2b7a734f446b36556e4d377455376d5176797743656866516e682b71355a49496665435768533769766a45617567624a4e4f53304b443731736332677879714e617854537a586158505a464c432b65365035483964442b6e6746704f2f3633446d6f36614434364f485a3867537a4e4a63614a4e4b646b4c7450736f5677546333456b48316f6d7375347a61707363514a714772576451387836553341393337476e346e4c43512b7950454b2b575230444e6a7a6476474257307a6d7a4279443757524d793052373351326e2f435442795569716c6f4c4d62772b49456772324f47752b76694c65395050526264334e4743756942307432336f6b354530334d3770725a6e514465586b4c7535336a394b66734f545a6b382f326a7a374955302b78464b6e6a4d4e4a765064413647656c58347356316478747a536a5166474d4c6e7749567161364f62576b7962525a7a36644558573655764d764653447a596f6c67454166474b6773736f6b7874715a36635a47387667506f746e35436d4a5a695a2b5369566345464f4d4d6c466b7033304756367a46456d654a54733654716d436a336c4a3739425538426b766f7a66316a4f7045395a466a466843533646497962492b364b71644663334a48392f3768497a5a6e3869586d6345744a6c55386567496e302b474b5a767675616c54556e46496d7542387976495a34302b7962673335314f526b47423264532b565450336f647a47727046626e56564d496b714e3156464b6749337559663243706670487a4779476c3544506b5a6c45665a5a2b417a7830354f565152386954715655584842314449764947716f2b616e2b517a77624f4b61657164534e6c5079764b6d644f5131483953747a37327a656a466e304a6146413955326133756877304d517a5953346b725a38785754706f31426a4135795345333167365a43662f575472544f4f49673453796a6c4a6d546968794f495a6c68596c693953666971754a4346397252732f646d6571787a4353685032672b48356a5a4d6e392f73376a414a6547536c37334f6c39446c546c457a745457796e7a542b374e6276574e73647a506a2b485168344351635454732b76316741685a742f6f47563838756556796e3353476a4c7268597a2f7631766e6b69367878567057514a57365767453170514d356456314a5936573841456b4a6946476176726268654f75756736346a307a4f534b3674484b76332f495a3931587a65376a2f63756a3470574d5431784f4c35532b595771447449384b305574506b476d463675596a67475a7179523976707a4f2b3356464d2b5569732b566230527a574a614b512b34517674714666746437425a7a2f41574e545330643252435050624c747a7944506f6e553576384170675270556f64484d32743530304762514e7a6c632f6b6d624357434e4476633550765a39755763754e4c2b723135617a4d6945647764574d64414f55756d6e6c687253387673777a795569476f79515966746a55515465786a4a79462f76553050724761356d4734784b643966455437774b6e555378384d7237714f4864786c6b6c584d38336c644c6c6b374e556e6f6971464973534f6730715136487a4c6d4e3776383138416337636562756b575a4634337146774e445930357a586d544178305771486530704a32306b553246704437426e2b496c753652314944334e64384954416253396c637a485363413964354866673471616b4e6d546f49596c6339475536725237736c6d764a4b7a2b6e54636e374567367a575055385a4f675033414d514a54476732596a4d7848694e4d505654316238364f2f62393068694d306c4d2f46334332697947396c4d6567557773376c6945634a53326143614744376c42502f32436f636c4a755a7246596a7a6b55766f65562b6f6e614b33364a3135384a7758665848586a6b393032784b4c767241713572425a564b7359614b703038346d543564356f4c553156487876734c49394f6366314f395953566c2b6d506758714c3668334c722f684a57654a6546366c59665a6579584a4547577970516743436a6f6d43326b41395470422b30706c706a524a584e61784d33744652763134422f5a652f4f6a315075784c74625038593946504776716a332b5439514e4c493274456578737376432f4f78664570364f7049474558372f64494f6f454678764365596563444b6661644773596a6d7834446f4a366366324d50787838454a6e6b6672583677656365724c6370496b55506972732f303738536a613564316d354257724349614b48414a566642787767305854664e53313373374d4f4e76617232345572746a3136794f672f70782b4f6e3468656a6379492f537638657654714d4a70315563386830734f333144306d63693147566162727475686444695a786b734b57384a68793854476955576d5a6839444762366c703572592b5974572f774259323469503432476a4552523959674f4353466d63434a3657657a74424f7956646b6830416f75715972326f644931464e7a5270414170537173556d657641512f583834324853324a6734364f75596b41647647313553482f414d656e516a47757650302b494a7a7674575a2f37503737715775736a4a4d337a7561722b723172742b63697338767a76505a616c6e6b6d346e523065594d726e4a3074444f676a504779367470326471583336424f444e454d756732685049756c7936636670664b536a70424d7a6e484363534b2b7239525045725878354d432f4b76336d7438677073552b797a507949465a326e3549317a6148387933432b614f71504a5565584d4a4b536439594e6e724e4a69636a542f31692f5072304d3942516d6e38373954504466445034707834756869753330582b545a694a354e4b6f4d6d3744793748632f6a2b6257616c694b3558665776432f32304b6352665662705852766670584f427a3638712f7644654d655657662b4f65682f7052366f2b757577784c666a646b655071546b4f517a5747434a564f743071614f7939547456415a68465a7a3561526c305a37707a54384f73657a7a4847396f7149746b2b512f77423376386f4752772b6d48707034702b4d58672b39724b732f6c3954374a6247646a2f774354447268386c4b6566366c543463397a674c327a4d4d4d7050592f686e51516e4f505a3950745739354d693163482b786a366c6573463242722f6c6a2b55337142357a484c456e745762553336655a427879644b566243475455507455694e657a782b623548424f54496739307855393779614f4a397172582f4c30396f36682b6733396f723852505253544e30764566533749733355597443556256583164507957792b4c547a6450556974325a374846646f5556457676766e6c2b5750384155795373392f7866447a583970314c66466d427550346c34646b2b4444506b2b4d3476694c4d324a526d764d6777643279514c736a6d784f7a536a466c777553784b394c516550576e436f7a7041666e546e6a49376c5a6d4a694c534c4e793464445653726b683962626e333465777633684d504871796a6a2b32726574537441726842726d3841466e39674f752b4b6a39685336332b73754e5a3877376448503152385962506b6d5a6e4c7a44794b56537579564b5a52514d546f63356b78643041585035445962484e5548584f4e6b37307539355437694d322b4938485474646f614f68646866646a57327759654f715334554a654d78715552702f6c41752b516a4649706e5375424e6c4a7359377433395a3775587a364235586a6a5867337454454f3554564a4f65734762524d47676d6e5363627066753146573233577933343748634570726d2f64513536366a48396a3862393536384148314a32704e7464707175314a456b2f4e304b736e5376484662432b643130793747357247736f54565a4437326355464c6a4f4f4a735a6d762b744155524b326e6e57346b4f57376c6b657a4e7351437a4b67477247306338695239394a5937474a4c34636636344d52372f414c357a4b355741666f556a6e2f4839505543416555654365452b66784a6e38783848384e38717a506d745a4c47574e6c626c2b504c586e4c7a48356d527a51787a65355934363944725a4337493753565363504775557079536d4a6d76532f722b59384950384165632f4247663841446e3133794e377862466b77665266317752723776692b4a6e363050767737635279662f41435048697a5173577a4e47664e73686f5838716d4a4d5579663666656b466631362f7332723779754a3432723048475259755977354c56547a38362b70436d43556956546f716852316678382b722f414c766b54476a67734952514b306d504641726c505136507a2f623742565536484a5558556153526c44525978545a45724278747a35526c6e4b71705a54396e3479717767557a6951397a6e6354384c54435939424a6654724e38553376556e776a7837795739324e3472742b5a5932447536574f5679375a735771345937745832643733696667686f5933706f4b6b6839674f4351752f364735546d74627a48516630344c505472787a49394164623077394e637158417a73723065784d44776b313152554454483377786332527149324b714a724933444c506e307a3041354a544e5438796659624b61523850644d3233572f4550356b5071446b327865616564594e54313830492f4a746a41724b69626b4441747a7458575a327957686f6b417a6b7a4c713642634a5369432f2f443453556f4139794a34556e35694559325a6276615838486d784c7230376c314a474c7272334e717336763974446a5645726b36324f4a676b316a54393741397675377a684b4b625246597a586849366e666850347a354c2b506672563472357a2b525070683568356c34336a2b4f417278584c6d3138505a38667a75367a714a6b625655664c715657517a552f612f77424456645638706e3750694d2f2b6e7a36737865754b5732676e2b54486d6e72782b592f7144666a39305a66547a302f6d706d624c6b4233527a36446f74424c52317649635a64416373763476517a66647a6f4455593653544e4c7a724e6f4e4f4b61556669734e4f66567a30527976546e755a466872666f61486b4d724874645654504a433138504a32636e79356b616e522b56717a715951314a6d614b7a4230725568777952654c7a654f50634b42386f444f4b4c45557646546c3243672b612b384e50486f316c66536c6f6d5a32497142474851464c6e4f4267476271585830394d7669415654613666654975305643627a467951636c43654e6d35454832656b6449745956513153383750614a436b2b6c304235333344774f6d5354417441714e47564f6275307063376e4539377a375171345246385832566d4b31725035484c476767357a71755438346e6a665948365a30732b6234657a36385265486a33726e6f654d416a6b6d4e342f71756943556852715a30684d6449706e327379736a585575762f414e746a434545744a786935436a2b54712b663157644f5a6a6a7842337976386976794b3951715a4a372f4b742f507876475074507a73484e33724a386a4f4f74637374415279647546517345616941462f73484b43337152575a45534778464e4f4f384450452f532f643248562b56626d6f725858382f4f4d44586f314e454c7135614f4f70704b6f6c763555534b49394258776d4c52593550733976324149663654614a3559345241334c733176496c7a6a4c355035766f366558336e386a6e3571664a6e3534595a7a4774636d36724a6e792f3156736a6d32554837554a2b764b34412f59715933725a6162612b4168632f712f354c366352306247646f55366b32444d4e4334704e6a4e7369335653325330716c74564e4f3569353563656756457743725373706b7a746372695664475a724673514e737678302f4d72307439517738563865334d4b4c782f7a5472446769693149636c57465972547a325a4c5959646164795833454667694d383545427463354b3576714a57305a3872364e7137356a732b7658395274626b676d756b6a7379744a522f5970564657797a6258637456465a61304b386577484a564c4c376f7453683147666e7466776f4770414f652b7a2b716a72442b4f50397633793331573246656f58725147723470344e6b6c647074784b496339486b666d334532772b4b723857556558527a7562342f77445671716d3068376f71643856672f564f4d502b6f6e6c767252534d56375136712b5a532b4d654a2b4f77654c592b4d636d46342f334a772f4638564f5774666a55534d4656585a506a51724c553337444a6332476f4b3363346e52446249796d4c6a2f682f72456666417644356c2f63666f7931736d38674a2b6e316c2b554473365a4643355535474f78756e6f414c492f68566d705a53446c43522b374f6d61336b784a65484c6a2b345436482b4e656559792b335a76692f6b7533753849383578597136465a64414574576e4b653655372b52335a73493450736430412b676b7a2b75663862374d36376252744e5a6b65526a6138383831394f2f4e6137734457626a62766a6a64427566556a6e6b4d43346947766d666c71794a45734a387a477779353761442f637a794b4f645375664f6c66763841526d496e7150585a2b4976356a65442f414a6d6544656c337164536d772f563378444170394c2f55314e596e71624f4c77714a3149336f4c394c6541453475704b4c71644c352f665774496364327234426546506d366d6e4f6c4e712f42626a55645866434d6948795459717530744a59797a347a517431476e6837485a426a616d2b662f4c3543584e4f7565577042725756637a666f4e5a384e4876492b347a4f496d593768464939624137356b2f4d556b647064595838314b307552697a7a554b6d7a3356444673316b7139333135614d316a5a2b566d787378746873417155742b4f5268357053494b6d7734356b466c464c544c6e77425071617a356d3758334f73305a46567264596d377138724c354c3177646e39757150443967704363783165664c3833737279587a333161384e38556c5670326872396d6c504f367a79584b30717048594b594b63707558335655326a6255764e64474c666658556166343369534d5530425831365531697470694f4136672b67586f5850365a2b4a356e6a4f64446c644c5078494f3379356d6c62506a615279334c534b6472533751396e336b466c352f56722f59314b5a384d7a71554d4c35492b61397438354150314b68317138362f547875754b506f624643385a767836754f34686f4c5672766d697271644e74334d6a64354952725262663150766f4c6c4645356f562f567154474a67633166582f4141764a433862386d3163764b2b6f7a455a56712f467a545456642f4765564a3274635230617343644e63494d30736b7077433868593669714d346e422f3841432f72616b7845385235352f7a342f4c6a797238742f5562303152756f43544939462f547a783330717738715238314a667857596c364e532b38416c5752616c4b557049694272566a3077576b775950416232364f6e476e53324f47376d476a676b3144773444507050574c725770594d684f6c55674a7a62496a326a3056705950786c50374641547536426b387a49514d2b6b4f486652302b464f38695a53766a4455644b55722b47664a466c61776f347477317a714f5772704d42617a3648316a435a58512b49777a35717834774861627147536b422f632f66644c345858494e4c312f44373533544d68543166654d346250714d373833794d635037563876364177632f5a2b736850513543646645386b71345a4c56383063316c637330376b4a59706943587866742b45415a4b4c6e663743537235694a334f6e4d307070306e35675a657273616c6370644e784c4b4b4254326d5a695059504635394e4245544d38534554486f7239716c6335386276655a4f4e69784b4b6434544e693075347349327966566e6d51614f713467576d56587872646f7873574a5664354f51742f62412b592f384146587462384a55446f443369724b4130663138436b61557566545247784e4d494e4b3938794c3078676453794435757553776d714a5a732f53767267594744506c787632704635514a78614f7a6f732b6c4838304b38354c3676705042644262566847317337456c7879306158312b4c45356b713547664c4b484152417031524b3861536d6e5862616931546b7a5a5956707256453530714b47335a3831724d2b6e4f6f2b4f4f7057585a37684e76364150755672542b7231735341547a466a693055644b4e466d6a30496a747a6e42497157797a54566e366c63585a56365036716f3175526a645239686a58442f72583265644c5a66394957334e42464e585055455972664c456c576135696b496c49656a4e4337366d39794534382f5169795a78722b78314539664a6748346d4d5335616d4271312b556b4c6f472b4f3473303655544a644c624e444670783662344f2f566e6a5a6978306649624c467966454b78352b6e6d356c696547366b564a34787066443966314775456b524e79315835307a4a57795467624b2b576739796c4c72584f537036354b414677384c55582f7854306c4a414f41526d5a434b72323758486f49715333473055787445576b78583757706c622b55637563715a61794e72756364317678664b5446454b7839372f414e6d426d70496164334e67624e6568663846486a6559303656437071707332682f7a566c32596d7159487334667a522f4a786b714c4b496a376d766d63485430754656485a2b314a504b2b643035466c364f783357305a567a54325179495246747a797276625246374a78544f7156635437766b685a7a424e61554c4930416b37424b6573755479717371472b7654714c746f76466f545832543077366c4b55793351554f7a574f4c4a4f61547056716e2b48516e5752536a4f444b59776f37435a4d36487a6843594d787a71632f69546336707856374c6551765461523955697148764b495159313074424d715a59585766745369503241664b5846776748747941316c412f717871667a6a49546c34633466616250747571672f632f4e5a644768507861336f57516e386269796a392f732b51443447382f39766d396b48726e5850626f746b72314d3348732b623768592f56793569614b70612b2f75576833326c732b50744b7150616d63414a4e446b7555663163746273543834486f37394d716270394a7a6778497333516e484571313544677a666e795a424855687631426c6e57664d644b6c75646f5653714943436a6b6c4b624f55306f6a743437644a2b516a5835464a6a7a6648504a6572386b765670466833426a525252386a767179346b44536f3239564f78574470545a2b6f34696c535643466c42664d5335496b4d465636647142342f50566e4b6e7776567664546b6e504b696d316d696e69666a7a793733535a4b3966626b4c656367364470376834704a4d70636b584230694271566b5866586a575a6e7277436d48354652346655712f4e423474397346446d5270534b64483744352b504f6a676c527a2b504c366335664e326a3248382f76384168456538705441364259336b6c653334764a646b7974795a466d79655632704a5679364f6a557a493553513754475263325850527a556f4b656d6a35476b423245637a666545796362527a6333654e665079673868794a76423549457a4b6379683846534d6565656e766541492b365454307a5a4431323551374a6f536374466241706d482f4278306733684b7670527a656365763048504367474f6d70464a4d4f54697851346a72617861316b3875794678767869745a446e7a2b3367304d446a50656267554b7855664f734f526e6f5947686f56564a7662373675564f5630472f707a567745584a336c4c386b356e517756473065443842792b38532b456a4475664a36795064722f386c2f3841785768395066787538392f4b54792b57435465395a764d427850436146564d75624a34503454724f687437444f416e2f414d5558616d7832666e7541775a6a2b2b666a6d473550396558376671627453756e48776a317534763359314c454a506a397a386b61326e31744d33752b543449716c3942664a744446504439722f5974764f5454352f746f2b52436755337a784b732f4c45526137516c765979536668543079634c7051526f61566c43346b486366424a63736562507842476448513970743970316b6c514c5041586e6379616c386c464a4d6c4f6e72624b7548513832444d715a6335664c4870554c5431687344674d6e2b30582f4c456a337078336332426c59584f554a4c6b5a50476177686a4873557966724f6f2f6b7547373976647a3463326565646a2b703969754b374d664f67786f396e43524648526f414c4b52707a78546f647a4b3238516855394576746e554531557370736179786638624f7731463756495036772f4370782f455039414d5a484e58647879362f337734353135665a49645930756130526b6d7150695766582b526c564633374d75556c386c6a76597a702f423751724479495635325a723633657831737a63772b664f65664e4a6d474e57506e3272693277323676684a67566144506d555051426166615874425975542f54714f64587178356e70325938757a64526d35475259612f34722b51657a3661547667316e304e61645058633150626b745a564e32656d7437713441436b30727663396d39596a4f49483836542b344c3677422b516e35626571586d734a6f75785736546348783871575a676a2f446550416e4f6e7372356e7879496c593669456e31646e5341667478384555304558523972517237765472474f6f3378394a6650786f39495054573130793662634c443866615a46516e507931547834314762506d71464e484f2f545a7255584c61484744306e676c614f4f34396f757774484e62674c4a4431512f6843374957564f532b537835757a6e44546b39586f3338756c6d52785144394c69633972714a314e506a44344e494a614b2b47665a6d56786e686a497258314a3839437a7844423866793536733565767039485a3272642b47445573386678746265716252417a504a6c4266573045792f436861464a756166784b6c64325767663674534d7a6e7567644f767777395376482f41445830757930486e3159477a68734c507261664a394535506b4c7839655a676b5766553350737a6d366d536d595a32635454336c4b792b7350316d30486871566d7470473059585a4663732b336c454d2b55334f66653232524d386539752f5436355768355658483542447a2b514a30756c373238355454572f3466736e6e75472b65376c42665576655834464758626931354771334c303136447432373645326537593039445176646c5533353932677977686e63614866456b4b4144532f774169486a7673563278753344564431566735594c7649636e6d506f386d6f386b574d4d70363771366e71764d43304d784b637559666f424c6d6a6d7059437a64374a6a4361743673364e4b727845544d525065504e312b57507064366d2b7150715254742b4e7763386952456e6131425658546f52353359367a6f302f5a6b303272536e55464334615462584e30414e4942596233385a32787662703270574d5441313938642f47373159304f513252654e4a73355155316443693147467a50384176722b4e693163745a2b30702b6b744c68513732482f705a30327146516579317230377541756e30782f42447937794b352f384135686f543445554530326b68474d78657538447173486b3944337873466173663230436e394c513159416b694e716c722b64315a3174765365767276452f3841566a3863595044504563587962776a366d4e4443336d64544371706a56553061555a637275307772684a61396f345a6664586c386959437675552b79342f694c495645586d5a7850555050474e6774334e61666a314e2b4174583074436f5955346e336931526c714f34372f41427949425a38612f73564f6d5535594c663841574e72614667336874694b6464306979312b706e6d5757656739564552442f4a534c753237764632794f78714a65304c6c39306457485a526c7337375a57316b5044414f2f4e476e346753644448752f4d612b5a666e326434783551634e4f6a4e6a636c3073596a50536f4e463265745563376750374c364579746e39724b50754750484763566e7a45426d52634f5a726133576344596e7944386d6643707646337a654856497676304e70464a5a6b6e4e744462515258516a4d737a35732f7943705935386d6a57436e502b5734584e64485573456d487968574b546e6a7767633076566a7a4c79627a6a646635505a707234624e466d704a6b4b3265766242336b36352b54793676474d4b50465844387a51534c526d364a454164364b41542f577459694d523067625459506f697a7a33306938583959453266476a7954667238563244624a6c30337961474b373331642b4c4c6f3449546e4439574d5667542b4759476e6e316a4a4d6b394a74693230502f77443572664a594b626f5169376b703136496f4d38664863544b5776546a6d7049306e4a64564b445665574b6c6f306d6e63452f774166532b7477485541704c546e66587847732f774353302b706c65532b502b4c556c59706638507937516a5978436a57386d43704a6d716c6745564171736c4a3648744a6e7a4a59796b656d54754d7670593235365946435a55696243735134474d30466474564c704367774266493553396e5a66315637436e4435694c76786d4e4a2f5a392f416f4d66387232763352496c464a726c64415a3966526261336b62487a50316d4a356441446c4a6231727666387a5064724c53304145433438326339674f616c694d2b766d48454476756831664b61584a3557747568334e4b536e672b35724d2b5263394644425a396f3578455166336e312f596b30702f77426f45746f5332537334366b4d586e63726f7978364651477861354b6d38715730744d4a4a69544d78592b34674679306e2f41497a46396e33304a2b566f54536c72782b326c497354616e516d7256524e31565661707957556d504c39664a44704a73454e527743786977555a6d43494148706646304a746e5963316c4c70626d6e3263677271586a6250644747516b356c6931692f2b4d5974336332686b3956436b6f6b4d552f496d676b325344786b797761366b464b61575a6a394379314f597567436a6a6c68712b4e4d4a6b6c44704c34785347444b6f644457423754426977624777357a6d702f7742697768757535676f62485363544f5438713069356b7049367576367a506f726c4849666d6b4d592f5275573373797a584d336c50584a37504973306b472f58345674354a36613665664e656b3745655670722f6a75514a2f6a45446f6d75553636644251314f7931317a78446e4343434361787630356d304c2f614a4a4d7239592b5132386f33472f5931746d6548694b6332753353375251326e4c32376f3958516c345372726b596f394b452f6b7a33334d71476a2f4e696c465a3952496648514264337966527a2b5467364e64725a5764587135625959712f48355a6f4c563055543536706c786f7530702f48306b4e664f506443744d427143766b3444374969496a70474134394e507851394476573755772f4e7656587a72787a302f386b3839386837347634786635526a37653456326c6a68557764765675776375525743747061326173695a794f6232337362376750325567747158724f327464303147345867766c6e7150384169526b2b76586d79505279725a39617653616a59394850416565562f2b6b6545386d386b2b76334b395878387233744255323534616b506a314a4f73445965333930434c6b7a4768345a7a45616b566a64793235762b41302f742f2b6c503559723859386f307354387066523379333035382f3961664c50553731783871394e2f46764d6655627a44314a7633386952506e47426d65655a2b5345326234753235677242615a484f476d4f763274494f575a536d746254696354707a573161347275346266356a6c702b4e6e39745079547a587a2f77416f2f496a5754334e2f482f30703962626339376a36696266387557767a4665506a6f697a6a6432784d4c4669766a44465a673854595876436a76514466553134694e6e78576a2b34376e666c48733939542f574c3864767878394f61442f6764337958786e3148386e7a48636448654f4668554651357465655775786b65727a2b553143615a704b77697a364a506559645638584c7038746453302f776a647631573150455048505572306e394c2f4874745a2b5165704772353379757a4666343637566f38656e44393237776a397a6b7159335a6f37335341466e2b6a736f725966794a374d724b755a7261302f44744147767964612f5572786e775878594f36656c586c2b512b53716f4557626456654a73355877305a31576e5433746a724a3464516e58454e4a765a3879514e713276474757635972615a345449345a2f33392f572b2b2f7a663050394a5074453745386679763533546b44744b44766f425a52356c53756b5178366776682b383646737841464450643259314d34536e395873745a3232734f42457539702b4f362b543570506558647a78765367316f4e676e4d426b334d7a747a6b6d72723562564c55796f6f347834505865336963317872536679694858786e682b496433504f707450387176776932343831793365542b5678512b6f452b664c4c6c366a362f4a6379332b51386c7a4e6e5658596b70374759347570424a4b4d57667953785072744567624a793178703673447a6761474e722b4737577a69655134355a486b574455364858796e4d624a59753252333630416641582b4a4a4a50772f47504f7a415879632b4d4849554446397643324a69655342387376584776733838692f6a4375394b4b544761616f4359685963374f3652616c716f2b77496e3066634269435434544855435a5450642b59797a7275527a704b7a346f5876754b696c634842425a5a4b552b39794b577a3243424c6639707863575865702f626e454a44337636517458766941567075724b6852324d5a7a34626e396445713058522f47686a43314651387348764575664a64517a3239416539365052574c766e35374d773771466d59746d61367a50564459576758326f68707a34485173614d43765a51354e5172493057447a696d67633646302f5038692f5a78314e356a644d3272414d344d644739313671617165766653707376564f632b4b6178786b74614d396170324e485471576e552b7144476f46524f2b79366852683851557a346342636565425864527a327a304f68446a64453355362b7256612b7438704e67436f736b78536c6934574338682f77425365684c4e38716a3631726767666b655444704b37465974637a676f56624768534e47555a63345a3670752f434e624a5852705a51566856664a396e36344f57534461414e642f55784d7830464f3059734b35484c6e37776d547546637a3943684b4764424356392b4c344f2f4f597558523877667452462f715351724d6754396b72627264653443754a4630357341326748462f594633654c516d7430664434766b2f65752f3170436778492b482b2f326f784c32694164642f576f643453614836456c574942314e3671716355527634697233636e597775716d34766e582f41444a2b307634684575455861522f31475975504f5a377266595350786771737032697957575453665a433850342f516b5861706f737a487745586443734f426e696c6856646e714c34665a52774f4a344b6c75482b71326e645067493058434851496c4633695a374648786f4e716c4179552f34536a2f4146444b66756355713363372f694c52543776397a4569526862393336385274624866705a4d76316146316a6e5453684e45775a3674686167584652777256496f594d2f38705579646770364b6d756f583736326643365a50767a46632b6f75737065452f77436b2b412b626454655444412b746a4d716b6873512f37667649546c44362f774439734b66706d6e626e42645a5343427374574d326a794858762b316c4c4f6a4c325759496f7964365062547a5238704f444e796c612b64644b366e50575738644b666a6c504a5a593431764f536c6976694f6431505343656a6c3138353439662f414750516c3554366359647558524634394c786c756e717a4c66593055383671376d5459307a706d735a527a61576b67585174423367377379615655467963506d4c6b69307a457a50434277792f4d3379487a6e4633714230645358447966474b6648666f706643454c716369542f303043534547773373746963317978345a7949584e544153556f555578706f36394b496d4f49726a78664a78664638544b3136645353477248376f5346526f39366c665737504e53665456325a474830584a73477a4c4b66352f6976705056345158304f674d4857746d62534c733866325045534d2b57577438676d745a334c6b6c6770432f556133552b72546f316549704357762f77416963532f744941574c2b595a4c3075636d6b772b6f465273426d3538327470556157786e362f76375a423556323232656e6c334c30706f4b4b4c57706a5962567a6a5a56544969523666725438393776305a53464e53426366413033314a3146356f5745724c7a3678343249364e6e4351632b5842467a666b7a3170596e53712b357450703759416f634e7673357746424d4c63643976455a55666a66346271326c6754597a592b57374b37744f7a524f564563486b7a5a504a45376c746c4b4c4c687351507953384d6543432b48533677487a677751676e665068416c79497076446362773256374a652f786d61334d727a6441334b467a2b58352b746e493570704b5764663159646a4a436b2f7674564f63306c536336616d644a766a724e702b6f6c5868643157506f79624c7648377030667a6e4b6c724149737634766c434f71366a5068313857746b376a6471514b3146492b6d49636637444267385741306d4d78696538626f654651667931655073727672305370445270756d706b7838316b397274396b4c4f543531456a3532617a4b6d4335774232687137394b5642476d4e6b314955744f49327748462f6a6465734f724d554b7354556f4437424c594a6d466d746b73314a5a4d78544c30396f78352b2b3138636d596e39493443532f6a6555736d37306e765049454e48427a3847684e4e6f53353659426c786230306479636144536f696a793943653847575a7242545057797166744c744c695a4b4b4d30456c316c69663235572f644d696d2f4e384b644f544c4c7079756b6e7a6e71517576476d626f38305934396b593547322b786a6f595370716a7a317436326e6a676d67397170654b2b507465673535596d564e766575557971744c536f777263366b4e5361614550484d726172646f5553353634732f4e31765a5a714b71484c6d4f564879667632557a74654b65534b64702b373965493667656d6550342f4e49722b4d2b66494f334f326f49583275314f7432644b4f654e452b62337948586f59324770532f683730536e523833516366767a6f305341726e766e456541327a38443861676e7a366d5a795a354a627130684370476443697a782f536a54504c394c4a6f664f4c4978736c79364c6545696c585a7163454b452b37374b536f7a4677535a4b537267693864332f446337506a7157754f484c7a3876506462312b565a6e69356e656a325a4b79567161414e4e5846474557714b65324e3076642f51426672726d3752626f364c49412f6b4462714d7973764e6c676976686a546d584270733061427375324453757252344c794a4c35774d72464f2b52733542645742504a685a6558314d6572466e614e612b31795839314c43636a546a2b2f2f414346435034696b386c6e43304d756969514342746a644a3037484f4149545445786d4d445633316e384c7937356e2f41465958614b364e476a58786532346e4e444f7a48746379664f4e2b6a335065786b4a7a7363564444724e4c754f596d734866596e5a2f566f6d5936446b6a366e7a362f694f72354450524e52557244334d6a446d2b354d4734695a377136484b6532774c464e30716e7a2f41453942307a424364663041366c69624a6b4b2f726f72746e724f427244367161632f69744f646a77515969622b596d45362b576d65454c46563032696579696e4d4f694d6c6a335364704c58786638656338586b50486458387934572f3172535a6d4f50634e4b745133572b556554573231506d705058324e4b586354334c4c627a30303270536839747a37456d3363715464503837484c353858542f323645597462525a5951322f7931586a2f6d2b4d47724b746659504a4d376c6d64504e4779473752723138646c477a6e723970643070572b5459383942673574495842597164686661426746614b356a4d645236712f783032634f33774443324a454b767a374d48482b684d79687567795742364d76577a62587a7a5449657234746a516e6654376176673739616e4f36564e4878434842664f374176682f66345630454b31347235424f65645575756771383258505778644a496d556b72486c556534516f694e334b716b4b766f575447664e4e5a52547235695837654e4c626f45684b496c617130496a356e34316574574c712b36624e5766446f70304a3431745371584e717065494b6433522b7366784b4f6c526854484349386f477148726e365665596250707a72305957777158795441702f77444c382b6d594c503841565234717a2b566932324b523977536332584e75716e50516b424c6a6d6e797036464a543941744b5447376a3368312b4f586d6239444138532b566d584336366d627867724d3050484551756a794d3455634d35666a465a66586c79394362716a6253547146646f756757637743433863666d4f6b66702f72556171334b356f744a4a644752365943747a31307a4762496d33555a3931694b47615572736d3733615373776859334e2b6f436a614a2b334b2f5a6b564e363034546e5437456d465a6d6b5547625762727234656f644c6f62465a5965673635613174505759557479324c66514b556b7234524f636d47723254457a4d526e68493143697a76494f626e38716e58324e65576b596c56686e7839304a39473636707163634d56472b354c796e48342f6a486f724a74735945792b65677638417376767939507636376854486c6e6c6c445055535477795068713050495048347362466f44634c366a426a597a524646565954692b4f78574b746864664f43676f64716d6b67726153536265764375652f694a414e6e6a3359374e534353335364394e702b54426f346e6a37472b54325749665557394a734b795a6f346b304c304937696e746639436d4b446a763435337463303432332f41426665514a7939665a525863764872626e55336a56516e63784b64647966496b56554c2b782f4a537471477a4c46586a3638396b77396c584d6d57565065693732787a6c6f4e684d37386a734b796a48374e6f3571764d5938754f6b397a5264557a50316e367170787a71637846447554466930444f35614f4e706e616d6159422b3241634d4c635a704d5a345a6757423433356875567a554f67316f4e694b5548654a6550562f5a54354e5a526c6170626e4c755a57644868794f4b4e57666736334f434e4476597942544f79484f6873785645787a724f35322b69764441644f4f7563494536534e585566435330554e4c3759374663593979614277783175454d326538356f2f595a4f546e394179664d62562b492b5632783977416a6b71666662332b53766b2b315249323950575559326a3045367131726c3175615766567a755a30617659562f5a4341454f6b61576471316950415843586d6373644e6a7178562b73307a61464e75766b3154352b62724b7965315333746d533846776979503636584a5339516762565650364a4f35334d5374486d47744a6d542f7741476c367a6e4c2b4f375030516639654b4e4e51314d6b66616b77685363762b516d315173494a6d544a724c3266722b67612b5265544f6c7974464f6377382f57576655516c4e42703355336c6b5a3132574d663159726a4748516f2b76556c6647393663344f625254336e6542374a694f4f4a3444676c2b65304868766e6e3542666a6c44357a7351654f342b62715561586b30666b775939705050792b2f3653587a366562714c643334366930497552506e4d4742483750593034794a665870524e61616d4f67367965463566705a42685a4d5762346a6a30596c48696b2b58687448477a746f6454465954485947703541724e67624f4d394d4b71716b6372443375656675462f37352f733535337a495668624c512b70624d754c516c317463655361635a5a314d4d75564c714c7a347444756a4f524f5950585751302f4855356e45564a6d536236654b4f4b2f516349503767667030506c2f715034393470444f683739444c735a6d4e3056593036636a56484c7a7555793572356e4a2f316a4470467a71754e544f55754f687a7247696b707164744b3233643544674c35333446354a68612b703430637561387350535a506f59454d6372332b4f4d7a2b565a38316e4f5a3250796a5348362f4e6376714155775371315663564f756c69766e366f6e504742544476427642764964464d64455673434e4459356a76464b355431364b7164333663505345643659367172786e58516a76567a4c703434466745555377436e5464663850326b627944365a35384271386538493859727a4c6138566d546b4e54462f4637544e44456d59747356556836514e687a35714b6b6b797864706a536e3352314e4c3477442b73706e686d524d504339443879665462796a45376b5a506d66714673302f794f4e466e4c43447570704c485252675635615548704b4e79366365354b42475870576473692b795a457836715036696664326a68473252317638415344387159664f724f65442b767667766d586f5635356c575a75446e562b59344e6e6a2f4149356235564c546347654e556f72656448326451536d646f7670696d2b4b2f744b7671474d64632f4e62546d497a5332366f365837767268354436432b4c44354a354476383951504373696a794f43524c61643556394157384654497333794c52466762564464597476726a352b3148794f775a47687a6b6b436359704672596a6c734e572f49507a312f435838715a66556a3055387839545048764a2f45764d487734477a346c70713651583073536e4d67523467716c5047364f3149372b4e4e4277684934327868715456304b4a4d6f61527061756e736d4b6a7a36666d4a2f616c7a2f4452314c2f4145733335504e2f54494b374a496f4c4d48667a36382b445733666644594f356238664b45686d31532f636f4d6c4b416f4f6c776a6237334831366674476546755777344965702f34362b622b6e394d696e513353516f3542575547704f75487942526a4a64645251537a73377968504779324d705a3746386d5033724c2f32434c7532757245696a6d3247496d6f366b4c305a7079535578447a76553175715968344630424a536538564c4d7676656d5a652b6c724344326530413143527055514452384d7978653832382b52426534796e4c504c75656861532f58336d4d6c39686b304f6359772b653332542b382f7743732f6565517937773663396e736f4a77745378725a2f774238592b64317a316754674e637070544f63372f627a725742332f535051396e666c2f7133533338587231387839553268667854762f41457174414c712b4a315a674e71536650303275374c3767635075534c7736337665416a4e44324b50332b384b2f732f575134436745677637696c52323164714a4a4c2b46596a3157555047634c703847586b4e43784a587344326a3757644e2f77416e666a396961644e736a4f5a6d6e5339584b4e4e683363564a4b705a466f303369387a6c346179435930723450544578416158414c426d41486c2f674a3966732f57526a534752325530524a576a74734a7263356746386830554e4b6959375a6e4631726c396f5456786646682f6745796e63543776306658375431674f71666d507046616656437a693562464a58796f47714a5173572b6458614f3845656d34566578582b5a396d4c2f73704a7a534374653141483667723970366b395664615361635333737369345556464d37495237396458373676394c6e2f5a4e594366662f77452f514930302f31616b3961794872676e564d72526553566852324e30785751534f3731722b4f4876374e7366534a505853724c6a454b39704247307761373374634c6a484c587543336a773537324f6e43684b2f7370364576565733643545372f713266747857724d5071694d396966596e2f645352725233767a382f6257703343662b6e32733742387a3859332f4679686a32736e79724373773474436257544650746c3775593332677a556f6579466c52797239354f2b55667376425454597a68727a6e4f4d544841656a50452f5044387150526d4b642f72582b4832326564466d35356c36672b6931666c6b64474c6931554c76626f397971486641776d4439717851547453747333766e627a3454396e4f5364445476324e54487a4674656c58393450304c334c3053362f71623667656b6e6d4c314772792f513836385670745850656d3930474e4d47706c5233714a314f57624f577175486b4154302f416b463842702f77425674374e666a79567455645966412f7a4a38433867726e646765532b6d3371356d372b655873723850387354425a524c525238514d64566a32567736586c43456c6b75304754396c4e494250302b3863466b717566336378327555624c59486e66696475686c6c73654b655751374633594c6a62426e7272747847575335756841452b50582b763841376c56583465574e4273576e6854415a57476d68564b6a6f4a7a6e775a5539455434764a517053432f7743547a374e762b625850597254356f4d79636e71317254507557464b4c69363137414f64564a79746d484c476731685063727a4c7a76783674745571646f572f5958625839667a422b78346e6c4163382f76316a795035693148336768636c507672634170467748484f774a7143474a694a6a41744c784c3872664e38376d575631462f644b70632b657a3763646d5046337969513839463252446f614e584655564e475738516e483666584b594b363274596d71754f6b3663543369386266572f303938766b79637a31473859384938307a6162614244694d694c79334a7974467a6c305a383574646a30765734636d6357485254332f6246535a38506b6244486c4e746f6964764c362b676f627a37385176376650725a4d74586b507042682b49374a5464304a2f4a66435076654931367376415949747a3638386a6c306f546c594c7a4d786f6d684e335436437a4d795466336d745834765833476958724e2f59463943665545574e394950795039535043576c5772323432764a6e2b585a363671597131526b672b4e54553755663759572b79736e4173677144364b3345707964612b31576a74616462534f623371622f59552f503330377072723950664a2f5458315978592b33614d6e6a736534764a38695a427955702b35316a6437485766334736456f7a687a39713631494166384149712b4c3270327237586f7a6e666d6f305a5636422f6e353643366a7337316e2f467a316d38597746417579725579735865386d7832592f3356354c414a324f5676563264396f6d4b506b636a685464556369616a396c4738583062384b366c624365592f6d506a6d6c6b3837622b6f64754b69597576716c434858376c316f61687a6a6a75475873746b3839416e5078625434756a33675166377030757a78617378694d6831354e3575475a4f514b4e434a4c78634d4b705a4f35395062347a4c3568516c6c52755353796e3531596d5078706e41486439676d38564b3133664b4242662f726966475130655a564d7a7357376e6275796b7a4b314630735439466c576c39653670664f6c7666783844474b3537446366414565382b5936666e743775657552626d44357a425a6d7a7a5a794f6455624b475579414130694d536e7151336d6747685038414a4735594d7a35316e7869584f616b2b32544d4768796770614d5467666458427747634344524a4d647a536133724a5a5a514f63636654717a42706134492b4a586e74497243366a70505345494851484f384d357636526e754649572b4b39693443356f6957776149374c43506c43555744326e2b5158735555324d583957686948666f654f4a724f6643485866362f66384f752b7669446544356c756543364361632b5852634539585a7759596430614566797052797334737a73576b766c68712b51505a774147644567482b77417a474a694c38596e6f4c39386138765235426c3873794f7a4c70706d5353766c554d7079484c4663556e777a67524e6c6e6256507a6e736177432b4e3379664d685875484f7a6d4a6963534e685043764e622f45492b675473747470306363576c395671415a6d4a6e397452315564735732482f414c465550526250306d484b43326c33332b3835367a45543147774f5a52345835354f644c616f4a396d53583263356447553937697369646f525435656c504b496f4e6c4e3179366e7549564b35654a6c38524f39675a63314a2b5970337972302b5a6833766a66316d6a4c696a6f773570356e7343475979727a7a7a536a557367356f45367572336355524f642f3353637a332f44306c6152614c664d5174464f6c4c6f4a52704f6f476a493035584c305370707076703447695850306d796d3678397a6c63306b47484153776b2f5a542b69396c33322b57466c2b492b653659744f71617068316374737572537173336437627374466e4273306a6e636d4d6848354543373676534f56335144354a7141594e625633664f424c74537158534f6d4c794433566856795a4e5150726f594c3064557a4f55664a4a31383679726f6c64396e7666307052725542713664517a71722f423966556a536a316f2f442f784c566c5062784a733957756d4c5871667035516166307956644c56794537695648494549743150744348436651626c4153792f65585839655857757050535934774f544872462b50506c3369753565545864697a383151374768724f672b444d66546a727338647a4b465237565661716b6e342f5a6a7638416f5055766c382f752f77425049457243626f72654a6959786b61316158682b784c32764d4873324d79327a5a746a596656612b525949774d6570316f2f6142732b576d36664c37504f664c786166313778354e4d6d6672623776697835434561636538774e544b413866506c7a74664c3469624b304d385a597959545047396c6c50475371354b7349374a536e6d61784d6e365451516d3433426450626c37587277454c77704f4b395476476534794266465474425245704b454c6d7263373636364a4f71304958383043557459712f56504d397643644c5332594a6d41345a74306e3544335366672b7a48386632712b5858537875314d6a4b3058684b694e6566524a2f464a79665a6f714663335572485754714e656b796d63647a7148684a49303272353557724765486b4f72756474344f4843574e795038416b4a6b4943644f4d6b356e6379596957786b2f31565470663770616f313648373970382b75704c47713539592f642f584e455450534d6955383138722b4d696a38664764565569395632564c4f705932744e67327074584231626d3057456f694a48554e4e33414c2f4d336b2b526e5a6f4244374e73334b5730593768753975564b696c63534e4f683179556b2f71412b5233416e477468537458777763507470436952616a45666545547a4673306f4964625174676b355743685a6376335341704f6d67563045724e4d2b7647366e373267772b4578786463616f67595536544e637a474a6d42512f6b4235495a5a4a385631766a314a515a4439636f6759544a5a59506f4c766f745a5a4b393379542f7a784c6278386c43534e362f73795442775331726e484e3146636f3833316f354850324d46675634776f796d616565536f784b4e764e544a69586a356d686e3856557566533048637452544d6c552f77425037667a6d366b446c74694936526752334a38356c517669744343654a38756533625748446f6432656b5955352b697475713647707530784c4d6d6f6d716e65596c30485236546e4c44726b424a6645504f50356a626d396e61726f4d2b695239793936692f66746e76623476597445654f6d31303358415536796f5a3137523936513979654231535a5a346d496d4d534c6e2b7646556f51564147376c736479477648676651706e587a4d584448442f414432764f6856577031315445436f576446785442396c795530474b4a456172763030314d445576726d544e4166623162345737413233317835315554395161624574735a477a4f6f454f3343744b706f307062386c50662b7458626a73384a41505a38737a3836384e665a746f347a47546f6154614d6d6e504764366b617a457241736f366a376f445535634d76513443536e3739613368386659707874754f7a776b6659664c466d757a6c774a30344b4b3548763769724b324b6654306c5a394845674d5561795a5266704f46365674452f61537853544a2b30692b64737234444f5479365858745464343470757770595562464d2b566f324c376e724a715364537549746236382f3730732b78725644304b46722b684e3869546e6454524d6349347a6e416d326635524135744d464d44583153367638544a6d313679432b6a3946637572304a6b614573433072554a7337784336794e6f522f736c2f4f74566730745476694157377031356a3164687a6443313938617036653562714a6471366577374b632b4a645639684f71734377654965505062373067446b6c4e4d365039614277566c464d314b75514739664e394b4f787873706a6756456734773672426655787949334a326c734f6f654d52587a727661676f31664f59417a6c6e586d365a7759307a63746f4a34364a6d6c544a385368645a6e396c506b4c37466644436e556e71456c43786f7270764761706e5951492f36703850502f414d2f2b77586a646954616c424673612b597a505155553150454d74646644615539674d6f2b73464c4b6d693544424b69683475373050694e4b324131452b51767647385137374871354930616d77306679444b702f666c2f56565664446f4d7a4b63373275593950306632616c6b54714b6667397838734f6736416d6b586a6b66455a394e476779616445756731684f555944794f52316a6d4341553265786275696e4e6f4835467061446f7a34545a326d7a336739766e7947676572524c425779326867726a72694a684f4a394c4a657461336b3944717241584b78482b4c53544e326c48786d48733435494272376d73344b714663557551662f5648436d4570586f41464f76574957725755382f5752393761706f45485035344570533441396a516a7a586b655a55656b726976757155704f6854724a744764437143496f38384a7936314e48327145754f65496d70426f4376334f55373266304167746d76393659644e4d6f537159353955334c41446756516141303353676a50616f592b354f5379675134464244326e2f41444e732f7741674741693874624e6b7a797331525131387574504a6356412f5979754c354d33336f72707a3155565270756e643335326442744a77475166476c357565436e752b7856415838427a467a70616272444f714a2f4636624b6e4c48713561434d6f31366e312f7138447448506a4230435a59326c47716770776948554e5466524b73562f576c466c53315278614746424a494564776d7a4e5877584e73754f6f597953443671426c647168375a444d507239416d6f2f6c736c7a6b536270644e726f4b326174744e56373746366652396e5334592f586a347965717234506e726b56585974505357496e375144753252556d4351596d5a74624b493253366270616138676c7a5851364f58624746565649366d73507a5439374b716776746a66786e516970363655516a5176374e65364c6c6c73454375525a2f3842325042735a4741794d6c30475731305438514a4c39326772714654756f7061457872453067704c67672f6c666c33694870566b6f4c7a66523861385a7a46486677374e62724d53515130703254614b616c364b352f684663383839444436687a46546d612f6d4f6d772f6e30694a76624e5a774e44505066376c506f78346c6f615a65453631336d64434e6b63704b5046575a74365a32783079724c764e4e633961506b4358502f327570464a794141657876776c7a354e6f396e6d3038593244567a632f754b6574486c67314e38487a384877724e726b7057684c45564f30394c4b452f496f5a4b4a5961423779786e63306b6c7850314b47543842536e734e664b536776476a574f764f4e587448386a66793538707131743966712f6f34384539325a326b7344472f59567656757a776b55656b6d704c30337179376857557a483067556348524a533465745337545a70567a58614f6566352b654f3059666a64766b75707462472f7743513065567a667a486c477775546437542f414d2f4933476f3172733871426347666e3646536668654965366c4c694d3568353865326a504841354d4e6a5861776151314459343130307678374446434e6469714a364e544c424e5770385832437a4b75447843566e2f41494a614d357059414c373067347845566f5455457a6e4d62534f65434d364368526834685a624752514d75597354666772343757345045653879584d3444626363394c4a35674c4f2b6a37486c6e514b3057787a64534836714850745a5567726b573133726774434f694e2b614a4b6e50324d5a4e4e593638516d442f59344a62342f6d2f4f326e4f703063544e65486b65573865636b697279697964445654326a4d74474b705a6279565843777578543956326c67644369413636652f42572f5a6b57333446366637477a35464c6d523545484e532b4366782f50644d79462b665a464c4e725357467431327552322f44374f6c784353654a42797246424b2f7665504d3662735669493778766e364f666a6672617a38366e65502f61632f77427843736f37496f6f364a4b50633269314d6242435859375064484f6b2b4348457a7a54394f4d756d4477797661496e6841364865452b6d4f4e34584b78446b6c6b644665514630496c704b32732b30644c50667a5766327968366d4432644c6d4a446e7a4b6152383967476458312f36796d5a6e6a496e2f38444e3943756557634f645a476970546b5a354d77313531386559327978316a35656c504f6c532f325964563851473564482b7236396846414e77486d5a6d687856453262666c435059687341446e6f6a7a37364e534648574c794361764c63746136434e777063492f77437344377852734355462f6f314d7278344f2f544e585743794270787673772b67746b4f7274554f336570594966354c396c49782f473079423771515831702b384a5a34354e646b4b3170527a4c475849552b726c55764a2b727962347a644a4e6e2f556d7a3366566d3974454d3746666f546f47776a2b4d767143303872577a77674d2f4a6451384f776f56764573737a6f7a34777a724b4c51374650786371574c7a513041434851513736394e4866397065326e704a4270644c354a727a5a336363436f724970394c57486d704e5252496d6579656a4e304f4c6363384e444673644c4b756a5134617858506c4a4474424e577054666835372b4150305176336341384372506b5149746445717976515a50703651797a7a61486555646c4b667150696f4436476c4f75555575614b33664e4e4d4f69635a2f4142756b525851752b63436f4f6a6e30756f575570763743446d33305643734d374e534b35676f5969646a424e58374a5443705034663070396971773153396366566157644565424b693074535538633639434a4f59694d5a6e544f377846707259787a4b44477771576d7365657a686e542f414c4f67366d6a536c6538616662486a6c586c4448616c316d697a7151702b31574774334e624d476837586868614e2f4d5633485663397a506d576e6f4c4f65775032422b3044485157646a5a577248716b426857324e6648555531736b2b754e626a2b303665654645725076692f684b306d493675675459357767306638414d694b4c644a2b516c7937617647354e44796e355154394753655a4d544b466a666c4c64654f49765073626f4d494a31674d70536b347549366174555457456e317a467354696331456630764f4163544a6d45355a54636b73304659776e4e72635353334c3931673669584d58476b6c6b4a50483954714b59356e436e2f4a737a5a587746554f2f494d553653367049365855796c656f4d746e7635564e70793479345a316a64666f6343357a493648564e516759334b55346e48476675466e477976674e6850537a3151332f4b64764d38523855384c3870382f323973703467792f4863335138695963314a4678434758513654652b32764c436f793443796e4b502f414c4d7a6a53485746573161784764323242764e34642f62302f5044386a32797562364e7438446c37524c4b6e65395850493866457a34566d36664f36367a41675a58705661533170466636374b37332f7744442f6835396768484b645853706e6d33664962322b47663253764531395748726a2b524e7736424d426d68347836552b46346d62317a487678375a615a764b6649593239306c384a4d6b6a46636c39356738522b722f682b6d355437564d78694e504750784462337772384376376558704a722f754c304c797655587972416e7935513868395274482f77413455765171724b4b5571346a6f5369557131702f544665307575696d656656694537544c4f64585774486132313875556247782b71666958696d545648346834334267784a7745356646654b654e7a6f6b444f6437516c554b5179534e6566485a384c65466f2b7761494e494730526748312f6d7073744d38654168756836742b5736524f6c6e6830394c5435776b6d75494e50783231637263697a6639353233796b57657969644c6e6e787a61586456594b5a42455266537132795047524857626271632b6874343553326a5a49796e6e446441645772624f504d35636e555a6658484438716131557973654c4a68374f456e5a6a5033736e5a5877466365523738737764327379372f794f376c737a6331755a4a4f64324f656e622b72415a6735366f652f476445395256556434546e555765394d31466a485058595631752b71666a6371364b646654384a7863724e3272587674386a7069786e616d485652705a564155545573494168645a70464150624453424134364b6144714358326f696545645a484c5031642f75322f6a683661667947486e2b59662f4144776558362b7762733777763063774a2f4e5854466c2f6379746c3258316444595a52566b707a476d6c62594c35697a54676f5a515174646e6231396e7662725862587a4775362f7741742f77413976586774566e3434666862762b4d776148626e4a38393966326b6a456b77332b5041724e3871447871444c564537577279312f4b356c7472762b7a4d70342f4b78536672336a5430616476557a3867516e2f747a663346507955545674666b682b586e6d5758683643454a3366537630676e306643634e733842437651512b7372426b32475356566641496c2f4967594a366b6d706d4d32787847746f306d597070395069734e7666517a2b777a2b4d50707a584c354e765a76664f76494836636469656566366c4f69715746564e307939652f4e496a6c306c727362434969664c4a334453364b64484b584b36764f33746570614d527930485844777a3855765354302b644a56347234336c57527977735549582b505a53504745326d6d5743784863684f4b6174696755787a396d613179707633545041353146464841377a5471326e714e6951787554736b664c506d505464523971624a67436543504f714454717a2f59354c4a65485161634879426950685a2b7666516a737a6c4b645361526a64504774756e33433830776d5a4f7565696e645a79456d2b386c46572b6f6135644f47654136327a4b64505455356969596d4e6e415473447a347748322b2b67586f78557a78334272386439585573726e756e6772584946733756665569706d6a72636b562b4c6b4b794434574c544c4e5a386767305148396b7a4d644a774d33356d59787444614c6d4f4b657165432b695478765258577a596947576d48516f76356457394c65567752736b524d6b506937707a6a775771705531674354687a4c32746e68733073477455736656506e5a576b39434b7474324b756458426a55722f742f616e4d535144706c55674c6a6841434e4e51664b494677704a7430756e5649724f5662396c366776715230432b6e626a5a74364a784c536c526e31437076446974554930736c2b79436b476177597836552b67763645794d396c54476f7454705a7361387831736a5061637455367a314744693242597a4e517462416f534157666f50737a6c564563375a78753767307578767078753057787a5a56616f4f30537672314d33512b672f7650765276525258523171474a4b33324c5573545a526f4238585341773442743034323977486173703339586e38776365797069656337526f52587041335752564443626f3041624d3276677a36305153702f6642535650785448496d56664e776c41335230736434574231783255496e67374d714b645a4e58795776517a366d582b312b546d6d3562706864533151544e4339487556574d4e42342f48396631444339567a58365566324938636e636c574755615761687574504c5470535a30584a4e524d34595a32554f6b52336f5455684d3652725767414a4a74745076484b332b34352f6274384e2f4f6e30795a732b526a35457a3155384a3854416653596355336a696139783158625630466d5a586c726451784e46446964326a6e7a4d586c506e4e7855504c72393948576e53744d52325a37512f6e78655434757436652b53622f67336c732f4a647641313335756f454c7161556f3270614354512f4e556a50577462416f644f7843654b34722f50356b644d48414a2b7845526149745467496462336c586549355945386f746d43564a6e52374567656b794d6d755957614c427151744169796a6f6d3333476c62752b336e46484e4f384c7756334b6f6a3149487335634c3539426567467655435638422f6250354f71594c6f3168497958394c5559694a75535533524d654e2f716558736a2b68743657666b6c722b6f2f774346487058366f2b4d756a666b3750703334356a65583038357256374f46752b4e4b6838624778747378417965645766705a766443735236707732475265394a73372f586a57706a567453652b5277582f50502b315a356a363936556e354e2f69555758354c4a722b4b76312f4f2f4259615976484c76356a4677593764653778766137567865785030616f786336305a366265706e746a43795a76326e64656c37544650326571504f76354c346e356e3458354662672b5859314869586c3832725642715a476b69715771686e7877332f41444d59326f6672793952496b77614c474b57582b667a423079482b75794a69597a586d6f4e397678712f49664a334942394d2f56436a526871356b4a697739586c3748743263364142434c4b5250386b6864596a484a696c4e486a4f547a7a432b5072722b70396d577054347138596b644250452f544478673546506a52544644354147684b7933475575354c73316d4d305730783532616c7a497964705753794c54787867303476596b306538703135544d7a316b55352b587670313475724a70383374753273344f39315633576151354d756f79795874795a344f39344a4c63376f335a76476465333767746a3968536663524d6c5536637a47496e7648454458314f58326e7861797a34523463637a624a4a585741683146564356665269574b3072354c4d7668435053346a345449472f702f474e36346a62457a505550664866474e627962697634364268665736556832495779614f6452766a676b49725735335068462f334344704437322f6f2b4637484750777154614b394934696133656e316e6a7475646965597a52654f5536335a6143706f566e39347446734b556e5a336a6245444437434565392b75397a5850742b4833724967365765637a6d4f59537a427973724a624c3045794b6f6a626f4973626f4f72304c4736576b4b36525870435a4a4a4d615a575a344d724157712b732b675039546839376f427a787535634e714649595a6459336c5a36625a784a4544725561692f6f78466354432b716631783458564d49416f417a2f414f714267747757546d37744f5a4e6b66795846527748466f4b314a48786f31756c376e356565476b4b61686d426c6b7a6b6b6f78506e51694738307a435166592b494c4354745a79315a584e7445744547747971364a32696b344b35714b30756c6d676769386a684a554b2b3154356e46724768616941412b4f4d426d4e676847764a633557687162592b515a34716c646f76466f45303737394e74324951364b3753516b4f2f4335307567376e5763486951736f2b694147302b7a78474d526a6f4b4d38623861305041504c5048504d2f4854444b6434356f5975316974316b75706e314e5a44433131386f7a7453542f314a4c4d3266344e44367a41536172434d584e5562566a61307a614d5478676539722b33425a36532b722f6f74345036745a6e6f35347a46352f77435352336f33364b4d52566d4b6d3961343832445479353761715a704a3672697a665a774b58476d61397754444d6c384142354f74757261314e324b6a70376c5261636f37446e6e2b324d6b674756522f592b69367572766b563957536c42346732365572683972364f555471414450324b556d564d50756f4b763150475132395246552b6579374f787836546d376f44706a765a386d625031372b4664513463386d6152554e30522b6770487741415a6f7534493655385a6a4f4d38513438643876386138626c38763879304c5a4d4b6430545075335753534977633778564b436652534a326651527155304863746a51583153702b756d6a2b324370615a6e4c526d4d5a774f5733724c35535871317537465772614f6267557749746f5065733873676a3841394a47323063386633356c655230554e683834386f5937324d6f2b6b5a7a5233692f34356f33567570317247324a78787a2f4146377639493866663548656135667248367765562b5a5947566d4b384f314e6b3576452f7744714e7266736550343676705964504f456850787832547777456c5831464f61576b3571454c4d457871394b6b6261346e744473422f59376c50633350794c77494a6c6d4d3539314e7369626d31594446555744307958664a2b7a4b69526567796f577a4f6a667a6d493179757a6b4171527a65316350647a36344430452f6b42366a503841432f43352f417654505158355a356e5144494d657033794b684c755a4b6c79704c6e5545545076666354754c486c5167626e7547514c50643762592b536c637a6d335a45502f4547352b7a446f5a766e613766452f554f716e5a4c79504c30713530796e356238634b6a6e7a6479635574756a2b51525a79476877364467396e657a3576554e6c354f7235633152743936726c5a6c2b4d6271723669743734395046746550784650454e3773724c584c70647a326f75543961434d4b4e5356375365787976694e564668526f536c4a3048424c787946486d76354f2b45783361436257786a742f4e56492b396a487a784535366d55636f47704c4a70714e52633945765a4876544a4d7159776d5437334431542f414a646832557a314867356f67674a726b673751626c5a4f65794b39755835446d472f506f5978614b4a78306d426a7a69544b757063686f6d54547050516a535065586a4d2b636a552f7a6d37546a566d78536e703757614236335930773174313975536e4766556158783647567044506e7237436c664b50754564446669705744342f5a44544870574b3433644d446e5a2b542f6d4d58692f674f327a55374e646268783757574e524e757147576a73646d52673358363074692b53744737545959424d466b57664f46453948594c4f664b7a656b5a74413869336c376c312b53362b784f726f6f6462593959514d47616e6e45504757656c694a425a2f6a58394d572f7743356e364a746a6a45766552653730717a465978504351417035336c4539546b636558443468306b30356343716c564c46504e72476b74565441375677656c4d49633466384138506952347367747737506b444b2b7a4255757354714834496c6d46536e7669736262456a512f2b4149436647556465794a50786e30476c4f34514472506c4d67702b54372f63495555544d6562456d3543416f613538616d4c506763666374482b714246412f636d555562476e4d662b5036636637346e336d6139413770712b737454616d536e396956466e56774c70303968594856386e2f64665334766578676c52333250345163452b694873417946655047302b63686a796e35484d344b767363305771716d6f596743654767726a70315552677365646f4e747a4b47442f774969466979446e7a4f4148573933356755704a652b506a6b384d4f496549706d2b524a31732b566257716f50334651524c4c396e2b68536f2f6a4432415143483748515448787a782f7531787946756433726a7a316e436771565059546176314c4e387a48667536685539546c302b344b334946494237416d476e3463706d596d596a684544594c473861334b41585053665a58485845515a71745054466d6b6d5332365a2b6f6a6b672f37493170636c595564426830304a2b465845395850395767736a46384c746f7957696a52436d786f4c79497068574d55696b42617761487753364b5571457672305338564968514853344847736c444a385039524d78455a6b57636a4f64484273394c497044616d6239534e6b2b516d47694643546f4a2b754d3061627546485055795034766e63356f7938417743647a51455a45726b6d31465a47644a5a6d414c54695679397a48654e6a45747a3569347769656e33546143616675434c4b695a32557a703430512b46616d426e2b7a395a47732b3936486570487278367965466568766f2f77434e3236336e4f756b5a5138564b7647517274494d795a533247307253754c4c684f5650796b48582f63544d6d6448784833365930336a5570536c72573456486f6c2f48582f414f5472656d2b5a34326a5a2f49333164322f4f39372b476d32646e7850776e637a50474d646b6c456d6e5638673637434b37636e43677361586e31324a3939682f38415a2b4b63336a2f584862327532655375334974543150384137492f34496479584234336a2b5a654d6e486c353471767a664a646a79652b41475857506e7471556948692b7266486d2b534b41474d4f674f70562f31436370536d3172375871343570346a69372b5166397258796e3058687438343944764f566565654d5074676872772f49784c4d38737a48567a4a61752f456d426270743648734f7463637a3131796d4473336a5751722b6d5266313030396f692b4974585a49304e7a6366616b6f5969686d6c4670523168566e5164784e596e72302b536b624d3333523349364e775370315153504442387a484936524b6f4834707467416248755a515a64385972316d5575647a696a444d4e74645551704639376a6b75636d3549466150312f6d58517179564c666335515474544d457474797455755761526f6c556d446b666139694a6f374d71414532537334332b506c656b584e736f73367745652b7a345a6950384158372b4168424c50754f46716e3647574a364b7332715731744a636e4c6c4f5a6439532b68344e45542b4e62364b4f64447070417a4170502f6f4b516f41326a2f46723163394b2f514c7837797631743951594b50494e566530767848302b776365746e4e39326f623131616d6a417a5279376e4456482f41434d4b52667a764a6a5a4e3851715032642f724f3962586d74612f39777371622b376a366934576a4d2f7837306538656f78736565586b4b39726531482b3675434267347736794d476f766a6f4d6953796f4270616c67552f4952724144556450384144316e684e685a6d662f63356839624e6a446d3879784b50436436614a32517a617a74524f336e56706c3932616366637a5a314c45315a7661766266662f37495639782b326d432f754e4a543347796548634f5776354f7a4a5a3678314b6459725375344372362f654e703638354b687a666936437038324a3031564335334e2b646f50397676466f754833473975744f7a41474a785a577968384a496c717a3443732b753857474b7a68375663765979344163316c455a56456b7a57746152414a677048692f5a53673743772f447450796a496d566b5a504a2b68424e4c417268545333304b4f64337a2b50536f6d715a773036566157556534432f6338307a7033444e4f4151714f4a783369722f4146515655334953376638416e74707a4f7a525431726e6b546e766f304f36416a47586136474e6e6c714b524d35434d3655456d4e58786453632f5a7a74584f597831477669304d436c374463314c756f4d35584b474f415a7959356936577a574135662b532b4f4945393450796d375345436d5551642f72635344782f4c32764f664c504766467648737877616e6d766b324a3476414b45484b717a53326173335078476732496c67537853766e523538676d6a356e4633356b6b33763841564a694b78457a38492f72552f6958364b35486f4a364965696e6f6a3435684e797354307438443858384961764f763046422f50352b4c6b792b5473694f704a72574c4e67646f535451383650746744674b59672b582b766e645330337661303962534e3157476673667a4c302b644c6a345151584b433646496146535730616a4a506b426f3245737672634a70664e2f7741667458796d6f506251456b4b5370764452376a3979614f367a66305879636d666e44494873763145732b343772426e4a6441394d786238716a57315947786745517a6b703471364f6253684e302f512b4a55544b714c445a4f6c564d6c46717934367963666a6f642b6d7334336a4b51634b763841425a724437784c56462b6d55574652484c4c796e6f7772524a593174496f61786f6354372b7a2b336e76594836704c326d78704f3630506c5545496f666f4c726355664d4f57365147397054556d55467257742f32614b766c69454164474f6c714c596c5654474d643731644469444767614167714b4e6b4e46624b744656555432713646624e4767474d58466f4d5956785a5761537a7159663841472b353143304748535343756530502b7849477476726273792b505955307351647264355a706467424d657474613834574a31413776555a745a697a35496672675654456b6733676e486f53484673506744616b5a6e79676564622b367a2b52712f512f304a324d50786e5579793867335a4e763075385373666f514b676d6e6f75716b79616255774c54517a5356346a2f755530313038467a68705430665936554f3332656b58766d666d504674366c654d2b4c2b504d385a356e3078613046755054472f38416a75635963765a57795474466c5443647a3567735855537959496577744d775950787170556a30346d307a776b6449767878624a6b2f6a356861576d4f586e4b72334e6d7a425a5a6a7a45665854364c456f6634336f4455796e63576574555335306337477559444e686b684e4b6e466a654f6647664958354a3432322f655648664f75535155305135685556366b5561715a4a6f564c6e6639675738595358327830452b626f4f4d4e34615843324d5330437a4548785042773867386c337448782b79797278764c32356645384d2b50746c58504c6d6463746c38756641536f615063377833634258503053654b637951796e687a675536637a6a486441756e385339616e303139554e3770447035655835426c35326a334e316454565470387479374b4d433578644c544a6858524f6c63457665716d53435a6e54324479663766457871527672352b76376a724e6a4261746d6e6d5236464f566c39715259544e584f335761717a624e796661646c5a6d4d3953732f4e485563777a4a69553858505951665a4e71434f586e46754e6762624c58472f542f6a43343653467a4a2f477170736a455a506f6145384b76494c5833567073776159386d367a2f414435594347586f2b7a4f556b50446e44567238675049762f46772b7442646b73447669576873354c2b356f757561673158616d544d6174624e476c795a70342f715a39446d44495a30304735547157384473306a4d3852783652734d30644b724e5a6e326e746f30746563676766546e635946703538714572386d2b4e714a527171797856497755694d306a696e71706f3653342f363346772b476138455861635451794a37596e7a59646e46342b59794d4f6153746637794a335230554f466770587458485a316b5830436d79674a536b634b6c597354317877453567566d79484466424c6d727277786266446a526479337742672f536e4c5a5a6363777357374c6c7a614b4536484675763841354b624e6f47776a7576425039414e386b767738466232612f6a704e6533434762585265786a6f477765504b7a65527a54305a326b75784f612b7966484a79657a752b475758356e664f756b34356b63656e48493579655a2b6b336b766a5664586c48707a5a326e486250707333636e6b7a4f565a6d726262445339575a787557742b4352555a7073583148744970516d486b3943666c2b58574c5262684d4373394831423275632b70354869612b6642504a5971334765757a456f376f67373357795376716a44364e58535a5237576670496a396b5066306d65785157784868416c62322b4b2b555a4c4d644f7248552b454c713170586f5630553979463555366b665462334b45726f576b4b315645466f4c6e444b375438507a6652442b7045453066444b30724973576a42517979665270766372516d71356e586f6a536a4a68567a52574449747065626b304f596f522b7767733170757366374b426d4375664a6648533533586d703058354c32494339592b2f6c5137644e4d52552f4655734a6175564c724c375266585739334639396c3563622b364845472f583975487a61747669663543666a7a73596c744c4e6678647671443433505574467373336b666a72635456386e6c2b46306679793155727a65434475645731564b564b6e63447567616364614f4e62782f43442f384138366e6c4d766442756272612b6d326d596c756e313537594f646c536d71506230535a4d513046724a5863526c63482f41416a2b56645032697a336f6d64474938592b2f39687a702f4b48587438733963397a794c656d6c2b62355a6f41706e612f70576656634f58786d6e6f7a4338625066444377763958422f2b6e4f4a54396c535745485270384e50466534613977636f6f7171664f7439584f735a37576b69676d5a72584a583736366f7561445248324a53507a46316a576959455a39637854466631652f643952596c444a3531726d64635455787637557979696861322f61494f51646c744d462f497a4e54384c41397a477559383048374261716e6f466d45657542447334756771616969566e454f4758722b77386e434852762f41455378636b556967626a34596b4853435a4e5033456770673943555461325a4a2b32646975633254736f4c526f32456b706159315a375978765850716532655a36666344666b4c7069534b46722b7a4d776751456d69744a4d4762615764314d6a32544c734f57532b4653774d6d5778727a305830554c706a4f4f48345743356638416b42683056634d7a2f5154695a32666f346d4a667073626e38692b32374e616e3235375a564f714744736b3045763270595a51326c336453774842386b655437434649484e49344d6d7a5758703271473251676e2f767434496a5a794b6157524d6339663065527363757156565633567a352f78664c58326e353069616a51722b6768766c794d2b2f4d474238302b573257534b665065395574714b4e4f6a6a456e6e6d634247416b314b353164616169457575553451523973657544644c3850506752344d642b65514f612f5275434c52696b766c354e466d2f50394f75784572765a636b714631474c757a6a7874396e316e416b3141705757706e50455852583546706a584c6e59756b6845656c6a3856763072677937317a70396c57706b6d742b704f7275786f4d7531686c5068546e334e657a375079735458573679674d3333614d31586a37503452786678615976732f77417a6f77555157786c485571387031614b54424f685665787450572f614f772f6638584b6a752f64303457313644655934397558354c365565562b6e325435396e31523165635a394f5635646a2b506556526247646e4d432f61784e53764c54504c6d3973684948356e306d2f644b784a66383353754a6358694e32364a326a75662b506e6833676e716a3664772b6858726434374a355036572b4d656c75457a7a7a435a356262755a69646e79444b2b356b59634474644a44744f7a6648646251624855727444445539317947544e6d544f584a71544e6254657661695230366a394366524c776230496b39497641734d2f422f4349494e767876773345384e69304f38774a3965346538647a784a6935353944354e5a6d6d5263704d3354684e38682f572b4b677534786130336d31754673446e333677564636562b4465686e347a2b4f2b4c393166454537327a726551624d6d4a6f386d386a37466557396d367263372f656c62442f6d4b47442b337543773846706c39706745437461383032314a346a6d39344a712b4534663553526561535156372f414a466a59326c6e71706b725054326648624946324c44476d533264517730486c783753534b57647a50314d6e36382f79674350363374457a706939504a764f6f504b7637677668452f334e6878656d2f6f535a7a3264703154524a354c354c594f66464376487a6250696c536e57397a757a717243746b783072523831792f74757a6a686f57783855694b5a3371644a562f644561475a617554766a2f342b7966544b445771306a552f585a6a766276737430394b6552615a4d75654d4b775656513167564649344a3345583235327a376a7a335948447a2b372f414b65686f666d70737362665853506a6e6932666c72437533524265652b2b754e724d315574476853415a62724e52786e517567484f62387867644b70474f507230503871426f5436622b43763873383738573862724452324b3948617a4a4a6a3545665974544e506849347157567337754f312b6a6d7266374747546e4e6766384975455249396254694a6b656a62306e386456343535733738662f47335765542b542b432b6c474a355234416c4e45447444794c77376575783156747a4d3249516676464a64796746533959355170542b336643787a6d4f3437577a7a7a793770356870332b5850342f2b6e6672566d6556552b6f6d53377750316e77635772507a764b4949537a4a39474f51396a61693535516a41353147786a78346554396672696d4378706d76374a6638415237374e644f39744f59787a56486e773871384f74384a387431635054436371736b45646f59532b506c554c6957634e2b5031695270324954373850654f46662b315079695a45357a445432316e6457596e71413852634f4c6c76587a436e6b3834646e56584b75685838622f6b4c4154534a6363786c553475414f41584347777a61355369446a592f4a392f7548644c546d6a4550302b53325758394f4e6f533355705970346b4e466141467854754a5038414a4e5954474d43644271464b652f482b2b4f46726555443743446d6e446b4a5278694c317947714a4f6b4c6e743579586a6b314b6c3474644768537a2b514c672f4677614f684d414b3778507442314f50587a4669353046755033427066516d52776b44754e596e503257714c6c4c703648724d535646556c6363626763736e312f6141322f356e374b4158414b76325353656c74705669716d58586e554c587176584f624e484d582f494c4b5673737a326c3131316a463846674b596e743449506743527453474875326f48633679663761635672595a3379534c59386f6e67586669687079324a574c485a59304839683736416a6d4e4a663841505643372b676757354879334f347845314c6c6850497650764839386e476565556a5175647656384d71716e4d6f50712b306f45654a365877682f67624c553755434d2b32645053596f334a3936476d76765867466763732b4f726e575054523735656d325567373334534d5144346d735741723479333866303951474b732b33717a5a38612b4d6a57516649377158505974444674616c662b582f4145782f37556f4d632f682b3077352f6b6f7a4e586262362b49586e64714943595170717a7072436e744b756a6a324e556864624778564d5477665a506e6e64386242345a68386a4d72396e3775414c43722b7a395a442f41447569352b59375130475a786c564959477a6a6539576e69426d466d5a79684a38746f2b7850637a76656b6f6d394d784f6b44704e674c64323337663844613947506643696a517248577a453054716d2f6b6d36577748506d66496d39703344666f57647837684566306b51656f31797a66726b39495564462b59726e316c5254457542445a55334364623364374e4969496d2f645864775a445a776e39702f77417058454b6841665a4d6c4a7353457a526943615447596e754853372b3266366c2b4e2b50526556747630384844396e6b475658523772354d6a4f6a584847556972566679307a794a4c4c436e6a63636950667a36432f59526e7042505a687231744f50456466664950376866346d35584e4c4e30765637786d6c4a38747a562f78574e5664495754324f6a4c47792b516e4850525a586d394c6d68394f5a5854564175486e316b38476b4f61756a715231714f5676354d666d4a2b4f486e46316865492b4b2b635a5a6b6e54324b664b394569304d7a622b755564354e326f393636696c4f6855356c78766c2f6a767370594543356e7a705878305854703664343632346a6d66333142386f4a744f566a2b5536653168597a336533434767565a4d2b474d4365636e69543351627965586f75396c48533737414f6b6e4d63527539314f73784539597942766a326a35506b6256493447766f5a52547a4b6a6f3672587368647a625153575a73396c6a306a506e32644770794236705448546f51416739527546514a78333942732f6c65714872446b305a6f7a2b6174367069373359326e327747437566583066755664707a734f5034364e683141706f3934504537687848547142493941723432566e7241757a4d2f4b6e3134524f39504e315756444f2f567a4f6e737458504f4d694970347466745548777832647a537a66716e5a4b45624b66666e7a664743584f36792b76757165483950374333664866797939644131736a47703052774d66736c327a343364426846504b7831653079666c506a38754e5043566a6a546f657a755a316f48476b356c664d524255666335303652306e49336739482f41447766502f444d45764c694f6d6c6d6e516d62794133686d346f766c787649725930766844536f70586d74773944506e556c736c4d3377355145354e5355304a646a61496965413245386154564c6f3554663231744b7339367a304a754d475a732b5a4b4e47685834336f586674646a6e6a4c59746e65647073702f774476677237507a49714e755042453579325a4d63387a4b466265686e52313571366d4751367235485a63376d57506c5374314151325752333946332f786b4f6c6c4e4d2f7650517a74752b6776445356415977543665536437474b4143794a7334745a2b39526d5038412b7041554936674a68517a362b68496a69683430666d73623743726637373877786d315178735754515a6d4432584f6a525468356d76456d692f50386c545247327a523771497935526c714d394434486c55514a706b6a56544e516f4a56712f6f4e662f41464b386b373545334b3541394771646c70342f58557954753264467173444275442b4b674335632b69785133545532444d3031646437322b2b6c4b55524c327258626e50654e473850785843327657363679784647326437355a4d75584931306b79643176336f744733546a356b6b6d656f73396433546239536967364146744469464b6d614f6b7a4d55786a313148527630776879685571347447657154513076317a4b4b7864686435324b4f435739302b625a617a596a56566c7a72397054502b374f6b455573716f46644438645475473255553845374a6b61533630616173774a4d374f612b78644a625735375a75655056472b4646575048566471537636755a374730566e57365a675179756e6b7a466a543475746e513357517a3548756a65326957586d624c354c33513172383471395148717053327653306c6c6a754345653254685856694336705079456f5443532b46656e3149613246354455695257586d63344d506a65586c6578746d793073324d2f75616c39694770684a6d6176736c41724674665065626e46376a67434d786d493735467336514b6a35574c564d30655a715651716433714574696c732b47354539537474314e446c397148356566574a6e732b734650317033415a4f70703934316e3830695a5a4435685853494b396b50787a3745555a7a6552673352536c53734758794f69644b33547662633030704d7a704577565056396d67707a2f7139656b6649614a657533694f4e354a6e592b63656e524458342f5a4e74333262694566565a695957636e4d636e435834374b57622f48736f31705452786739367950457254534b47777a742f7254546e456a696436322b5831576554376d563435774869666a7637753273566a585a57614f62577a61793855624d6650463433566653396f2f4c616236354b5a6e53392b61762f414c6656534d526e78464755654b6648626252545461725379364a39476c64324f3662545a6e5157747a376e4b3149396132366967326156647678646a4a766155722b37777a4c35453347682f7743566e6e512b505265432b4b2b4f7a2f46583070714f6138302b744e476a4c79575a2f77424e5754334f304b35335a4c49364b70314f51587a4d6e645970686e336f442f57326e4759766166556a316c666950366c3450716c364c6541374f6175484f33742f43384f386a374f6c7176624d75794754426b6c38663035745a45324a634768566e6d544a684d57754f674c6949484f7154352b70573162326d42304c79697a7045597664473436764c45396c304671556f764950343775544e4a4f62715365496835466d444f68664c77422f797058746e435470336455307352506d356e4b3537632b623758644858305a4a615551556330362f347678564d727446474e7559486a7665325338735a6d78416c624163752b5073776638415564383834507433785738633755674f2f6b744c66354f624f30797a4d65614a4f62666f53794453614d67774b66535a41763841532b314b6b4a4a7a652f516d4469544263524d54306e4935675a72452b6e667135355034646b306862782b706c65525a675a4c4c4a382b715332617a57664178536c75614e677579393662327170354d36652b6e4e6e6d6d766c716d6c326e6d706d6541366a656b766c4c5534576266666d6238492b514d6671783466487a6c527a49546c2f5656706854566f522f4a6e78667955626d4d5952794b45704f3856783474414d4c563354453942624871566a5a586e36624a755678746866457039484c4d78792f49492b5557364778465a44456d586a4d7535705a4e4b514b726e2f5249785038413347344451704578484876476d702b4a6a365a547378615a4b4c64483531357a416b504f6e2b7a6f44657532574865706b7937586b4c43586968455245354c5a456b44474d3979704a37446c642b61776233703564345a36764c53627648636d714845314c704e6571564f5137514c2b586c622f4141656f37363638674a63355676495a544b616c4d4153696f706e44482f585270596e665875487a42396274445767544c4c74574d69325559794d2b3157624e684d7a6a79636d343532396f386c324556596d534666312b74645a53446a57454d4d7a34484b706f644d784d64524e4f2b53356a6766706b3633474c472b434173534a4e5532706a315a7957575939564e73466b632b584b7761723361597a7a413141337539774d647a725367584e36416548654a2b644d507933792f77415868744d4e435a637668585331425a58617958466e5a4872652b367046326571696869436c7134435a2b557075705670545533544a70615a7269493444624844533662653032596c576f633053324d475a6e49455137366d5344566d7178714f31766a644b6b676a52564e4a58395a5376494e4a564446417754484957526d6143704e75656979664c6d7a61387535453761636653516c4d4453785a632b714b2b7634333657305a533041716d617967667239582f414e6c70737a6676524d5a695938525a38566568565267436b3948552b6c4a574d75706b425474504d33356a6b72766f2b49546e79316c50566d564251727630304559563835576c414f6649742b79304b2f486c2b3833366f424c544458325048484a7a5646754a6a532f497453634e503862442b6f35794e687146733575427275666f584c6d7a2f656576414547617a7075742f694e7336394c6a74444e575553732b3564384c715632315a325a4a503736374a5a334437416335695544774a6c3033475347544854763573674d57355a6c5a4d4d2f644e6a70345a3636515a5470614e696e766d74314e44722b7735737261594c466a516e74505a5644517973314765693334715638764e6431703849484b44387076786d39502f774173504c7643732f79335a3874432f77424a35474e3855797648634a3636712f74772b51554c314c3946335a776c5537557859364c46644131724c4b6d4a4a4e6f2f6375627670366c744f4c52453533445966777a7a377872385850543248302f386e387a2f414a584d773832682b4a3434473346583546346137714357444954732f5961454b5a53596453567a7a72542f4143764677394837695156586276746d4b356b57703439366d59657768476e6c574672306244622b476a543665594f5535367331705a7566342f586f712f6c394273627079455532304b51414c6a2b496b67594c6761662f414a572b51562b622b562b4d614b4d78634e63564c554536762b46566d3755374b797a636c57465a4b4e49324d2b31705a67544b367a7631786430374c61666e434c2b7230345262792f35486e7a2f4b4c784448386939622f5554446977302b50623243334b304b5a7346414965343252344f6c666d70385a657450496c562f786630637854716133482f684d43532b575a374f7a546d5972575a36694b2b6b2f70314435443550346472726275737032746b5a3972536d434c45784c383750306c2f656976307448495a465051446f566d3553536c466832556c37784e6e395461307846703852334e384c394573375030634b4c78546e6a65683576755645556568702f7741576c326147584b504f4b795a446f7146416779693435304e4967684f794f78505848564d4c7553625a345448494f77486f392b4f61664550486f7450785a66692b74767269762b3975374372744f65514f6447314657717a7076376f616a46722b4f6867734948485a51377235754b5542633972356d597447525a58714636532f6b62356f75752f776e63394636366a37666b3172387139503236626441713033586c4832374e754e6a4a325653796a4f457a4441563944344f422b754a54577471522b4c41314b386b4c386d2f536e74634835422f697a36652f6b2f365245324b61772f54544c705635486c654e524f386b592f5673384f767955423549764e6c6e6847666951667966707049507142375a357449325737477037753335684876497637613339733738792f464865572b46656c3559314657692f495a72654b63317648764c76544b6c5339612f506e6a6b62385647432b597634753666765a7566734575366c7276386d547a4774723655346d332f4930472f49662b32312b517634774948782f30303961504e665550305a7231485078637679666a362f494d2b45454f6e784d6c2f5a666557736c776a6d3863383554512f365a2b354d78754d2b61303136616e473164746878482f495838642f583778646d6a366b42343946367a656e3246354357565a6b35574a5a6d623368365944584b3336316d456d4e5a4d5471457867396b34735656474e69773748523856585653394a34646977356a657050705a365065514b645a763165512b6e2b6e784641565355354f5a52765231566b5434394c556d776b70447972414c616e556a744d786a3151307a68796b3343514876573171394f6142704276654233654f764439787a57534e4d37737662536f7958564b354b36735435316f756f366c4e4d374a2b64362f69754d436e3371625577544d7436337a4d524d635a414251614d5449704c356751786f3835415047544b37504b70724f70564975717746786d776d7563376e7a43307a4258444e66384179464b597262703144756a76427070624d6c625943737165787165714b7470737173614b456d47662f77432f7444352b6c7a7372474a4c76436e2b4c7150622f4146634c4a58783343696e705343364f39637037577763715a77557361367a5058324659702b785173545137332f594e6f544c653076692f7a7a76485330414b34374f7a766632774f417a6e484f2f66467361696b314459395641635377374a573161557a6e6673765966732f7741526f6141724451456d416b4653686e696f46566b584539494f55427934593139466d6450496c664175364e5570714169365041704133644e4b542f5766386630395148514e374f763230334771716f6172417063696464644d6e4147577a6a57303164564f50324250693243777737784a467731483733743041595441536e3477573064375252303435706b564c347830704f524a4943756455364d317348702f6f7a4d5444396a7876472f35672f366c414c4e7a41557930654f3777666137706830467269344e4c666d647772447375466f696f6d6539594752714d416b3441484d707a4d322f5571554b44534138667833567263773838537369536b526a713674662f414e4e5765346d63396c42417776656b77346173623971512b5679794746486b475a39654e425741624a2b6a58396b6177727a327335583336725765333431633461326b4873445655552f5654696677736330525966304e7677357750537238672f785239437656484868304941322f546644693170497264554f5a666b66584a796461546179704c494470682f6d4d3351425666764569646a726e466c4143722b7648314a7654557458387731682f4d6238455042642f30383876386d2f385a4c794c585473464e6242443439695a68316c706c507159697a68376e39646a7730626939366c6a3052394f6b366166737a3934794d2b366157704d58725561352b572f3264767836386a38666833504638377a54305a3871302b513879764a5044312b666f696a4958537543765a613757576b614b4577346450556e4d6b65546e6366576851553875646550616278624538332b6b5674762f69562b6148343174675236442f6d6435772f78712f597179707641765676446f3830676f58715361564d502f6a3272316a56387a62574474684b6d546952562f354f662f4832564744706a55307235333665506b4a487565744839315830545a564e366d66693736652b7332484e7578626b4f393656737a637a6a6c31364357773334755769716874303635316a4a312f4a4139775267693373686859524b31396e743076742f69422f432f756e2b6d75592b5478763155394f50577a38554e78552b595946546c3165626548554f6f4e6d6861707034326279385a763561583670495a2b777068314c415a784c663152795063576e6a573061673335394c5037676e706c35776b562b4965736667506d41614b733470737255386f38637a68356939716f386c504f6c446470694c593250653236574d697a3434312f57506c6e47557755786e6c6253744563316256774e6830657657466e77703859386a3855713477342f4863746e6b2b4a653868756c71466c6237433158754a5a54783266785045427867584b6837553233324d7039797152575a34784855577a6a2b5a2b4e61654e5179447939336a4d4c57355435503557624f7530776b6a527261656456396c396b624e4b57516c356271774471766b2b734a522b373664716d567850444e642b42614f6671627a41584e6962714e4145346736394e7546626c6662466a7336702f33653852516b4d2f4c526d36693532487a6a6e4f55625835784550736454477976674c6d385a3959664c386c7135615049714e4a54696a30356b3650476e4671544f70454931417a542f544a303831724e434c6b33576b6242704d57396e3631524a724e496e70497436483872624a553749335375564648316f2f54646633566532466b3030555a6b50614852697670553668385a6f456133455a675948795a6e4f5639313552362b676a6e6d58686e345365746b737a2f41466a2f41422b394b7457317a70472f7a72504346782b515636326c4c53434f6f386b7a48492b344831364c4831473533564b4568645141456378684e5a314b5a69747259476c486e6638415a512f743865724d316c50705835333537366333306e466f35312b503536486d475a6d646745755365325479426c417a72344c426c5a386c48764d33643633334761695465506164616e617275484f2f31692f2b54652b737437423050536a386a2f4476505a4e4274746c63506e575537777a584f7654464d636b4b333479364a4c68624f36672b69534a674b3048732f6255752f77424f316662617a7776703766356a6e7635762f61372f414c69666f6c717a55326568472f35546a7872687a6e6176684661504f4d39625235624c5353536d316c57767a3179744a63496c4f354a64323144396a3372424d2b337639473063747473534e6339586438793846316c596e6d2b42354c3457354c57515859586d71664b733656313072384f6572507a6d4f684756306f4c716c654865796d50503574523936332f48362b6b5257656141513862386b784b45524448624a387a526c426277765370656a4a705475736b46484e41522b79733130467a6f73507647415a68545358556a2f5557695a36534c43785a734b7635656148557258564b6c3677314a706b55386570726a2b3678544f705575774c4a47534f4569704d6b6d72323946777442644c627669457379504148723056615756724d673045664163792f354a4d6d6a73725979636e544f4363766971542f48672f726c4a362f35476634434163537367695a6d5a7a49754a63396f33706d6879656356494c2b6f4762725671377a686c54524d342b7259346b4c5870574b49656a2f6b5579756672326536622b6f442f4144364e79576764444f6478547265464a415568477748426d47346e515733456e32334562666d734439744e3176766e65314c775a4761673255385039537570316b346e6e717444527a706379484c34685474314c64484c3754505167716c4e6a55587966782f794c3971326b6e6e2b6333542f41454264626e616b597a416c4f6e3650543234326a746548504247776c304e7330633077706e377a76326e563667644c332f4a45334a326f2f69744533454a415048423751537578572f64503878726e6f59656c3476354a524e6f513969734a466358493734757358485956634f677237797235563847507556387730447869754745646443692b586b782f3166724843656f6578624b7a7754694f58677358545038415271374c3069344d6c4c6e4541446d327456386a4672545577757347733070704d7a54396d4e6f73526e50654a463431354865672b6b793067686c6c584c6f387135695256575463626450487831394846677947616d4e50577a672f34516f642f77417535772f65435969597849527377764766555847504d3868567a67746f6b627876543533526d6f7468476d684f66544a5a55334630714e654f657850447a30642b793550784571686b7a67695a6d6e476f3063395a76784168306b536150686b474b47694d734c2f34693354302b51305163792f725372683861774e486e66744d316e5171536c39536c6e50574d3435795569624f6130316338652b42793738353948664b2f4536614f333548666b36756a35664c743931757a6c364f6332347454374472766d357a555a77697a5a6d3852795a333258664b4a433042705874466f6d637a7869527272692b4d49703875385848476f6f2b314a354c692f4c58506d6e467052786c665a43564b73754c4e46646933334a5879666b726e577967445a5a442b4a50375057324e764d505a622f627278546b4c795139356d695475353246556967577855354758704353314f7a63664d505041785958326c766c6d4e536547564e68574a4c704761764d31756e4c356a7466685a6e6a5673704d3868372f4b73596e6f7a5a7a4b5a70736b565662633951564c7076734b645355436e5061504a474f396e4e6c4c567561673579377943535376785a7161536d507833755a4d72756668784c636a53306d5a52564c58465449706f394a4f674a466f4965504f45624854636b3453365538502b67666132686b30473162344f4654644952797a6e48716b3464484e37396c395768576b65494575324f57446957747241667045626950384179622f515664646738305936777377776a616f59364738366870733744546f61434e4b48663553356e4b4d2f6c6e7a5674692f665663556c4c4b58546577416f6d4c544851564a6f777135704f6850505175584d72534b4f33352f2f4149376f7944732b306a37685a467856633042716e6456482f774441346177797033417036706c416a63504d674d4c493545736c7937763166396458334732483257456c793062445a76726a532f7561326859703663764b497244734c324153557a677a4c6d7635514331493459486c35312f6a486a65334e637969434669456f72356c326551357374676f4579386436503061714a365030396650707062716f4b6750664f7733542b303959454e386b3857386566515447597372525a6f7a4d367a4530465437453156416676543136366f732b63353453645a714d5975646838535a716638414637796f6555316d5a3677496a722b4e6554654c303154654d614f37354c526e556268543430702f5977636d6d504b6c30633172647869667659384c716730763961484253664163487673506951644d54466858792f4f5057542b5a36467669476a70515a7345384e5473305a7479352f4d2b54533274465776745645744c6b3959377943446c6f446e534f704133556674616f356d7a694d59787742522b76652b5374766d506852646b566c382f58775a4f7778717248352b5034385047387a6c742b775663363749474d7a2b4855726747794d615a47665a54496b32563439673637635239656258655959325841754a5233465465453964432b39436c645847446347307835684a2b7a544d52722f7742745a6a53457a7035416f67664773594a4a527a33425842342f5a745976585a3234357564786555466a3177556a7832613264435856643450562f774370657858536c7931417468676678765541394c577175566b476e51316d37305173504f3468397859596a6e2f42504d353158522b334757673166326d522b35553149554e71467a4766315730637550415746746575436f5553324c78746c6c75684d5865316f556738366957756c614751532f496b6d3054314f536e356e49654941414c464e686853305370464a373577426448727246784b567a5a467742775632736d6a746a66445730314443396e7a67796c4d7179304f4d4b7a353248516f722f646336614178347566642b595a374871506c2b525673646d3576493645426f7931507846634336532b797353684b4b6a6b4c4755334c6c6f772b7534414332525267426c597341442b6c61643877484f66443466766b366d2f566e624f616f4b6a6d47584e70305a3636732b55686e706b3373354b776b556b4436686f63367776754d34336756666439305a76484c3444636c6531494662344974466957494e6653685a2f43466f5764564c56716e372b702b7574624f7046697837386f5371346e3243516877583030436457686f384b7a4a6e7a5a4b51716c6e307333724f455a704758684955464d304e44474a5770796f3570306f492b6955626c6d6c30354a502b67627431506f44504647464c4a6b7570525334382f75672f466951744c62617734756434696b476146336141533734656839586e75536b2f384141414c4c4259485a37446c5a396d565445652b64764b353670756647436f6d3979557233733070616e304d597775754e55645a4e6f71446f304c414f36697954373161346f376f35346a7039704e35326e4e566d4b63763761475638522f49434a43784a754e66792f4c4d7636436955306936416a744d4b6b7369593130534f386b5254526d5a34563056725a776443322f59566f7a744c554a5445352f667342376a61326b6c642b7333376678684772624a4f676568625945656f584d7454666b7a767069456c35436e7261714c6e65784c49782b46584f6e786f4e352f31686d7461354c75414b717353666a2b54773653376e5a7a5151656e6c33433642727a63587866554b2b466c4170577a4c59664564575368645a49315033424f5948572b50362f71483865626d6c58335578793158742f366f4c62396d37516c2f576d3657655673382b6a5351706844794a4d3679676f662b30676245486e66592b457636714b58395276582f414e4376516e4a507a4c31513961664166543350794d5735355661336d554864585458467a536b7342554b5847327972704f7a306977656734336169614f2f76692b7a4f30707032764f4b3133446c783631663377767853385366586d2b6c336a506d76713735596e54767152636265596e67707643534658792b52366439494a4a7a535a724a656a694b586945464a7644377a6e75446f72374c7154327262632f7a484a2f31582f752f2f414a6165714b383150707a4e6b2b6b754271304a54342f4634797164766b4b615670543355734452333348524754436c3075506d57584434724e71546f6a5a79616b5a4f6976732b6c587463386a6e7658366e2b71486e65334873656f7a664966554a64744f6e556a56386e314e537079357273664e71324b496b76546553584d5448647a6f4c41307036774570524c53744c704e4e74496a466555572f6d2f78313554634c4633416d486c484a6e4c48782f5843625973304e4c58707661784b314e306d557559355a4f373876325a6f4241576852774a41446144303478504b742f516f32364d6741307079616757396c5452574371506b377278342b3554376d554179485053324e6b75636337767338704c52645257644c61586d4d5937787652364f6569657870512b4b627471662f42627545694d637849312f4a326544506f3150484754613676384a364735646c71536c4d4f414a6d376f6d476b635643634c586a6a45387730452f75722b4e302b432b692f6a4d306d35652b746e71493266376c7130755838616648714c55514e692f6a546270437972592b527467794f5854505361666c593367437662516e4e3438634468484c343339656943314f4e54474150577171664e476d374f75767150537162386d66775556464b5a4c2b615a696d66766e4a76716d54577551444f7757456e46686c37796a2b58354639416c456456306d5a6e525a2b6a7a5278787a6b5a2f4c4a55764c50506e326c754c396e4d66337a636442574a4f722b676e336957485470333557526e3537654b574471737a43376a6c3543464e41546b7a524747546e3770687a562f56476d476e3255664d61314c526251553570546e612f64456a623330762f414277386f317769572f3841386a43466b6f3675504a4a2b73654b7074703647766d752f384c58557858772f477531694656476d683848746f364c6e4a50372b567252452b476534645276527a3051583452424e7036735662395656377047306e45376d6a4e656d566a726f3163546d386f5a6f47566b343961756a3375476b414f5135784d7559587633794e70716645636332384450484e6b446a5059467a71417173693755346a373853375a773543766a426842637063344b5a49792b4c32506e396e6339312f774150326b4432686d4e796a6d6b6f4875624352645a71795a71515a4a705a48453236364a6a6a624b77714552395a37477434665031712f4878507351357757357433355147742b6e2b715a58794a3635765a2b36384367464b484d7051756e704d7236346d375441595469556f45756477344b5855693332722f414b73436d483436486c4c5664486a75693152316d552b687856505a546e4c2b5167373967714f35747877702f5378343630444b5970324b4c6865397462573234345a794c4a7a34494d704f66526c765a704d30687a6c50354a6f324b73474d474a4547316f2b3248614b4b4b3157444f587362304a6b73417a537634663678436c544c4934366e616438792f6d73733478446264505742736d543830394b644a5850744a58733871584768704d5430766c6a39696566455170414b32304a763979485a30554363734e526a6c5a37486e50327062324578737561344766347a38304a786639525a65356834674e4230782b3432394172362f5534483064586b756d312f4b356555677358575131684132484c737065725063714f67716f5259762f587833526e2f41456b3167514638556465453934684c37426d4b3039595766743358364f714877646d4271493558762b5765655450564f346b75714c7146413162466654483948395872454d6b5678732b53362b6e46394f6c4c376964416a7649685433696c6e424b3753366743557850467a39733048664773424f59434d484a623967766b554643572b41302b515046646d6c62524c466f5645786a4e4235564658527257425031484a71432f6a31385978667830414335774b6e6f55546d6e327a7530336265584763436670384e384d7870316e70554a4c6d656c57705a624b74787975675145664f665944516373307a705758544c716e304232772b475a4f2b797448593357744f494558387939545a75564a79504750326c7a70615a79586a344d6531666f336f48545a5456795646545865395571345144696e4743652f6f4b524c3467704f61302f454a5a34442b43483574666c4c584937774c30493872792f474e6b4a655365622b574c3050445048307a6a45366d6659666d3647662f49304c4a646a472f77436861667370506847645031357764576462533034694a734e2f7654502f414f547a2b714730334a3366794f2f49334938456c4a3775365069586847587a79505a3550786b395553462b553647704f744f386e2b4e5952564644594a662f4145576d494749686e50746c6633656c75485266306b2f744c2f322b2f5347486c323934626436776256534f557374382b304939574e2f3869797371394e65566e7243526b4b6148574e6b2f5963636850784e6f4e6e657662546866326e56746a46747550714e332f4274583065394b736c766a2f703136626548656d2b4c343139664b546a2b4a3432624c52474e376b795638617953543776324f7545754e716f5a38514e535a6c53504f4c2f724b643170335462647536426e7665744f6a6f673345592f577a5557766c6f396e584679694f633333516150423056706f4335485068533562654e393575636c665675347776734b307a484363436d3950793359644e4c6e36477a436c6c443657577871636a5078387a364830314c312b31756e55464667574d53782f765650384162534642702b455666376449725835694958624f624653374e6635506b3956665063564e504e57554c544f6e715a4c6f523042585a4a74614448442f414c324e5277686e534453426f6e33374c4566672f6f4262664a75634855303837416f707a39534c4f6a6a324c4c762f41426e78315136634e726577354e476a396a67796c6d7836523044337245642f6d70526b49564766773247705871722f4148417678383948632f644c7a583139394c7646593550626b33513532784a356a35585071354a46534f5454446d5136457a355a324647695159766e583967474a4d346166696b6a74585376626269732b7645632f64622b37547a7963377266786e2f477231542f4143463359354a39574c79532f4c312f472f547a786c4754645a73544b51476a6e3956715a384f66437778516d66334e644d6c503255705437543139784d527a366b564775474a742f7742347a38766237372f476e656e66347565494d666e347a4d4c426c6c37716842665a6e31752b772b7165323869456c36447531713935736f6d7041755666586f6333544873326e312f61433950432f77437a727362696e65516573666b486d6e72333576566d496d66526f65522b54654f7856362f327039545672646d386a574b63546c53794a3079686f7044762f5a4e7764586e794970507450534b387452746e2b436e3457656e5069452f6c3268682b6e6667755464423558516b764a477a7861477964436461366175444b7632535770693568736e377a71686a544d755a4c5770764a337a66316e713674703454626f4f7066692f68682b4e4776736e68654e694c307335733755486f4d7a70506f63743076676c73794775465448547a314d624951473958334c314a2b64714c465564776d5974457845356d52614962766b733953712b34764d324b514b4e664f784b3961312b685175364b57506d626d324574674d5779726e74584c302b475638786d58506871396c466355385a396651664d335938686a67585052693547316c31367a4a724d43625470637969517a4b576c3477557a575553334d4a7a46424c4d36727642362f6f4b705935566e3952796566324531506431763152335779773372686e4452726f7a39474f4e45504f6d4956395258464549724a6a68596b42716f55667751646f4e662b36686831414a6574354670303551783455366e3872364a56563854494e57624a48484c63796148476f503461426f5a342b6a7465656745456f4f74364456724378313855385a3966514b52622f6c55696249394c4b6e66714c616f4d366d6648654d304335752f653164502f414c415542395546366c774e575356662f537a6a396c4144545944465047665830444d4c65687079447a4e7030706b4e38647279374b644c56503741684e5a68356e4a70786837786241547053644950334b4577653677795070396e6d6a3450722b6748377432796d506a303430566177307830573539726939314832654a7347305478732b763769324d5756777a304e56537941457a6d6c615539372f5375336a754468724e6e4b6b464359596f5239306939432b75724c3475332b516d6f573353355464374379796f584f7a6946534d4258743437336539334c446a63732f6c6e37426c7a766b564e6b3864474f3375593535635872757a314e37714b3633687a4654535658487735342f616c3655383679503678674346706d714a30317632667249617a516276476164736562554c4f4c6632726a626b4d633257794b365369584a69712b776a2b4e6356487642414b515330793953466a6f2b43464c396e367943394f766f5375704138327445302b557257646938612b4f4e657333733439576d446b3472716e5154683564314b6c30415650445361577a6e542f56646c76414e5a394c79544e664c6176456863746b2b66562f4c304a6b30444c7448574775364f705357766873376c757a36414554756c564d6b6961412b7a3562707854786e31394136505830483266506d594e422f446f386a6a3162744d6a6c6a663841555856506e4d305a76737165734935534671336d35527033446d2b794b5453435932573842584768355635506e49525a5834526f706a2b53596256516e42446f4a54537a2b48706e624c4d6c43317838314a5671345942522b777649464b2b74496161644e6c664152376539524e764977375049614d6d6a437866484d47765a76756f767a325a586a7a38744d59746a3868334b445a465a4478464550374a542f7141334e2b735577646d2b55455672787231486a342f7647666a4a6d65746d7633383376526a4c7a6578625945337a767872785a723646366f6a5071537a65576e6b4551664778734f6650313959706c58596132463850362b4a51642f7332704e663256683576536750764437507968796b4b436e3274514848676e55536c72704774663850332b39457077373871682f7736776638414d352f6c5436592b384b594f4c306c39616a32482b39446e563366364b6a4667353461677a3668476c6a616b6b7a727a6573545548506362766353777935757a36774f36583464666e58356b373855396a38657050453533782b44376e61497432456a79792b4c51667363707a716d646e537565587166494b445950474a453055744e7073475a39496375707052377a662b4d537550384150503841496a386274752f50384d7859504b2f434d68783135486a2b38375238636f385146556d61616d653479556d526a4756554568416b38364a672b46685549622b327837716c2b764377356d2f6c662b58666d7635563675647265632b6c58682f6a652f697262466e624b4a3246757637416939624d757656363441636c662f5863443243644877676f6a706f545038786236656c58546a4558346a536735324c3651364568304f487271756b6e7179704b3564384c64435a717a6f57532f59432f6c357a6f3964306241392f754e514172582b44362b70485144385676796b3063573133675871425656536e515470466d5736315a35714b6447325a636a34724b4e4e6257434a593864796b4b534d35566e537357434e45456f6a6a71616666586a6b5258383450794767395274742f6748687262523864386631496d364771797972515474314a574246777171486356526e7731564d6c696f5a33744435556831787a435a7a686653706a6a496f7630773941504976506f58363659715a4d665376546e3534684b79337571646a4b4a357035657a6934767168644373574e55757466376d2b5550333741534d333149696475634470743655656d47483464664d717a504d4d7047564c687a6b7650567039692b786d4f35706879654f704d38395866713252554959562f585557547256336a6c30632f726e74616264525458355a5a337035347a345670654a626c4d372f4a72396a796655395050342b47617656714a4f6a566a326e705665376c433830525a447756416a356d684e4f636742794d3272767037706e4d66397735305a52364b325464347474456941746d356e7a4f714d4c58486c76613263655a3374646e75654e5356382f5850685541414c65634a516b33586b38785a696f62426d79782b6d7968564f68585853724d2b4a626246752f5649386930306673352f6b6e71596f33734250734c4b3933626d4a59487a3145377a5537575a68327669516176487674553052554d35426d6f51564b4b6f355a3770517266306e4b737a334b623369523969706e6731782f4e515a426130306d374a6e336e64376d637230776e494d51677075317a536c6a4371756937634c4b71464c59703062714767453055776454537462674f6b4d4362516438316e51793538587547466c55387053357541696b4b5a644b42576c794e68442f4949716f6f412f6b466b6245306f4d42413567482b67395050396e33306e2f747765762f6f576e307239566645505433622f41436c6c4431435436692b5065576c596e7a6a796a416352636d314d797048307a7a626d5272577772557237634538594253446b7a742b447a2f6162612b6e626453302b37396655656d6e304e394450536a3069384d78765458776a7857484c5434676a4f79516d70323231305a6545774861453853624e686e436f2b4434793555493835475a367a5866574e784f446e44613972546d626452613736387a5376766d38527a66485a7030525854376944305568754245546d584f307245396959324f3654532b452b4e594e594771396f6d50444a506636714b4d3952383276782b4b6d553864755a6a70574e746d646a67656c617a534f6f513046793242354e4c53577052706146584f4d6f2b57656463636c64716f4334704232704554504875484b7231593868386738387054345434337a48386879737a56517a797278662b50306f374e4879356a3261766a666a2f6d4e6d67656b76587a355a574452557056482b2b7253702b353856444f6e336f726a725051634b6637773335596e346268322f6944344a706161744c627067305057623145544e4e31504c4d485163492b4853736a536e2b537852317056386277436d55466d4f6b2f30307856385858374e70356e336c352f68714e5876376576396f7a38306637676d4e543564346e6b654e2b6b486f6d6c6d4849507162366c70767a383765325835333863722f7741427a736d6464666c4c6f5a614b4f744277697235546c53672b6b6e6e3137363374476c6f3572504e627767656b50386666375958692f7744622f7744466655314b6656647671763566752b4e654e4938673875314d5875456a4b6e7a332f7741737247375a7a787576756634322f517a794f6834752f7743755143564e616d5447344f4b2b764f744e6558625742456356766b594264355232546b642f6b2b676d6278386561634b57597552575335616454414a576568547463687a39494f484d74716b456e744b71654553564f6d3031787436594778486f74466c592f6e476c352f35327957444f3455386c4e69386e51356964717357537578356e6a6a3437464f6b6b79307155424f4553495a706165664e7a67425253324a6a456442536e35482f6c42346a742b714f4836592b487674323752623050506238794c494b4358467a7a6c784d70752f6f546f654657687a526c47337254707042376f356f30723464546c775830394f597246726363445844386350467059667944387274676f50546f38637a5a4a30562f7937466f32686143373638666b73657330614a776e4b786167544d6e334869587a7a4135306979566538387550416444396a79657a5879305a3363506d67726d4d39536674546f77357335644f62745a53614a7a377374375a59794771564a69545654456d62394b6d6655594e444161352b6635756c6f756e7a594a4e646c4f647550362f7645534c766e514b664b70634343326974676c50474f524f49636f557553465830506d676e764e366a5470574e75625734446a7a2b624c42743854314654756d706f48376737733063477336725a696f783463784a534b335443744e6b79617575723466534d55755170376a5545316639644f6c312b73447a422b5852787a3731777830434d452b76576f4742504a476a684a6651454a71646f6657657a4a3976794b34485357422f57612f6e2f7536522b685470496a516f6d726f496a556967324b34537769466c615263396246433051585552517252476e6e654b4577396e2b6b4f42375572634d37362b494947314333786b786366515348525144364f36467250664f5641495a387065315a696b5a566d44574a5335547639582b487a6671772f636f744e4f6432586e65304774304a483167442b2b3032796f6b6e4957797a6c79506965546f36336866584933682b765a2f6e30632f32667249616662684471523756564878434261485142724b50723038682b52797a70714e4b584d4c376e542f2b7239796569665245752f452f61657342765167657036546d6b5856384e616550462f76716d4a4e4b4b4b6d4a57766f697a76384148705777654d4c32506d4a5075397745593642624f7a797672483663376e55686f55384c6c4456434a53502f414f7251756961722f6a727557564c46725061662b48523530476b4c50367261323348444f52736634476b7647702b3573383457787539314271616c5531354d626e6b6d5242302f5873564c56384a61516d5a4d2b50764532653771672b4a5a5a544f5a6d5a47325069477246714a356130616b4e34714f613838584d306d49746a356a784c6a644d4b6f31532f546e73496576595a72585943534269702f6a50516e706673794c4d6d314d383765344674666c392f767731753279374c6e38474e42636332376a56555964523669516f307066397a58463846763172314e73674f5a58395a7875343269424b7648325a486b5038486e465a707a353953614f576a64695571706f3170346b2b57304a6e4d597a584b757157646448586a556450783247755a6f7241414b4d54474a365a42362b5a4969747576447a543778384d665759534c7339397432772f722b4f6d446c334c47616e5a633133794e64394c6c42673259444d516366494865622b317638416a3769654e5a6a765754567a3861667a62314e6a7a4d6c6f364b58507377386b5753364f4842346d6c45514d7937696e3248414d796b52304f5a7935674e6937417942584e72337a4f794a35616a76566f516d7a446c4257612b5052305a365674366c714667464b4f4f656e71574d63534d324e66777a6d4b32394f496d48597563344246504b2b54647a655851616165586545765432713757685363675a34704e596642506e362b78585473526c68785a2f6b6c6a5a5632524f7a7247524e45774a5073434e6e4950752f55356f4e45665654776c477433565737782b344c78316e55366d646f754f62566e74386d3253666e31556e524c57506a453848386f4b316450686749416643554c672b56656c4a6a70336a7a4f666b6236512b48656d48717a66346e714e3278386238344b7a794245634c736c74464e51323149484572546c73705639666d684c64796c333763333570685453746430356c4a36476e6162566d663543416c347a3655307136566d395679686964574c78374d697730536a53616d6652546e2f414d614655685a36616b32615658432b502f4a70306e4e4d32323852342f616573426253384f3851767843674c62304c6b497a414736394d704b3075636937505270452b6b66496d5479324e64475a45707666684a69516e4570715451644c6462646756483546675434754a4a59694f78584836656e7062353270746e62696e524c504b704f4769665357316e567a736344614f4b4c722f4149526f544e536179644a66644736616a58787542537a50797136394d4f5a4d7a67587a4e30456f652b657141586475344b556672734a667945765072683369307544324758325a456966395341756d377632707135655a464464432f734f5454666c784534614f696e532b7639464171536c6e795575575478734c76734d51365032422b4655786a4d5a3641484e64314e502f414a476e76534b6262794e6d7839435a675679736e664f706d676f3579352f4868556b55425167456f2b59316e507771502b6636636579415657787065572b587676307154696f595a5775545131744e4d5854556e736373344c49653053724836347136746242354d4843614c666351446559694b654f52732f34354648613030743239644c42517a5979335a69364f4258544969584d586f6f4852734a74784b546b697a34316c387a4f475536675a476c33613878626565544a757963385336344c45355a527647615854397252526459484a42675356552b6c595447454a364c61432b5251445449436c6752646a753573434e2b533562642f7872794f436255507271464c30377171303743694d786d396b664b39616a4a3434557548517536343354496a4b6d503241417a7234372b6d654f4f38616651654f366662625939724f303470744b62565238685a6f6650557342307170774b757466446c2b61694d6d64593841643336797a346b794e372b61576d7549694231672f7367666a6a502b5148397a663862386a577a33503858394c64647672463541352b4c6f466e584d394c6672366d4e6c315477546e504c47666b732b544d6d703374463755726e39356d487863352f617237505a39535a6a6d74772f31442b6e786e796454797a2b5a724334584b674f335130697a344d5930672f74786d67374b326d6d466b724b6c49655a6e37436d39682f736841543854354158712b75486f3734705155566e6c75645a637171316a49636469394f74687957727a75446e6d4b332f41434c3475705a636f48686b5a4a2b514b4f427a34545669302b5969646635555a55427a78592f7035356e354f686c456d5337563075707963694735544275524856506f455a726f665079642f564e41534d624670594b6d6d5a7065372f503978487150797331347756544836535a725262626d71666464356842525a43633964444c5546446e5475722b3448783166427a73526851655578466952563856415437716678542f502f67516e5a2f4d627a484e70594b7652724d706e357855564435764d356367594b4b31314e68706f70707935335a4e42756c762f41457a73626c3837384b782b563177463259306f6a6a46685675742f63657963646a31322b67336e772f5a7a46747435347a71346578446b54737259687168624c6f64637a2b50326c797a6f5743585039775568486e56532f454654334f4f6c7067524c2f77444b6f656948697443756554656d48716e3467367142656c742f6238595652774f6e554a555761624d6d6a6843524a2f3374443465676b4b5a484b426b2f32656c6233463534526174674b3955665576786e7a75587844314d3851302f31345a355634376f307755706d55395459754c6c746f7a712b7a31447a786e794a4e475843676b6977576f6d3571694947564b302f314e596d733269653050353633393248387165666b542b54336b576634746f4e30664250544c546434646c744e646330576c75666346652f734d7a395165756b64797237457a424c35466346786a37545455775036396e3266543261637a5062747a446d447730393432783569344865346c774f707039673649384a5378424b4c413478592b31664f6461346a57716232742f77494f4430384f7a354474622b4f6d35686f39435045343950517a6338632b5455726d70723162732f4b4e3166636679672f774479567563356c6773356c726f51726e567a48384a714a52724f4156326365703237445a335a386f38547966543351333972536a76387a646a4a6978387a53546e577270324e617954476b4766536e2b634a38305a35644374616c647473644a5377667172594168566e695a6e45526d6f612b4b364867586a58694745695a476c507361325468516678724e494f4431755a7254364d397a4c34567a75324c71744277386d4a66544b774a6e5a584251774455394d326d6339776b372f4f66466337796277372b4f38785768667a5139564169626b3779646f5157513174316448622b622f78764856526a2f457071713647494f39307945396d4d4f304d546932616a6f426b366c687934364e534c436f336c4d376469584e7170707971536d305a594f4d6e6264734643545062672f534663796c4d2b564b5a356d7a63342b6773506b4e70726a6658343542426658524458712b4e356b3164593776386632794e755a724e576747574139632f6c45564468375949796d31334458372f414e3055786e4e58342f702b6f30512f494a52522b4e6552555059364a75446e554d69342b4d4a704d392b584c64654d2b5154644a3735366d51703068745572765a415048434170436d4b4f796a536e61676332354e4430347a385878374b3867796844767557786b4571364b6f7448367161487853516e6c7058537a576c7952594b4a716843766b3879446a424b476b726d385a7a6d4f6f6d4762357267313341514b714a7033364e71447a734c7558433475616e79634a7a6a6431685272585a437572336538434b2f71562f57366c314459457479664d2f54316b4e55585530643668564f6855706d58466e36506b7550646e35583875726e6b764d33354b342f687a4e5a665a3354724f373263704a7165447743416875655465477179327878624b4656774e7a31646571627436477959314d32356d50706670554e706a597a7832694f634b5569303654767555546b6675777159694a694f4d356b555073365868556f58326156576542554f5079736634374a6a366a59796764343735446b532f76497a302f6173484d4a695a356e705a4d34414e715571464f62376252457a304658655765632b4a474532612f616e647663686a7a565535476375716b61715777745a46506f363130336169564f6e4a4544515138624a4d37364579527065464d78573379456f39465078496b2f4936617664385638696c39507333434a734e2f6d5065614278614f384c42313535557a366c445a3832772f4762693474516c775a6a63445073415669766c58764e4f453832664962562b4c2f32662f7943743163365766317539484c632f5566617657386b5554466157423349314c4a335a6d7245314d35664839706b4c47414e49527a433457396d70424a4e6f7a6e326d6b527872493679666a372f4147772f526a3865385664577a6a2b4b656f6671576c6d466e37666b486c65646d553041336372716a46476434784f7932584638566f782f706a503965656e356675455564444b5553772f317a33313758365474714e56507a6f3947665276306f32764b764d504276532b58774c79752f4532364f2b61654f344d76633779755934714d69374d615156314776556250517633554d4a6275667958386c5a782f2b6462744e4f3172634a747571504d6a702b702b6c7261644e4f64354d55477964476d626d5a6446386e474c2b65692f5466434b474c6d72375451744c654d5a575a56754d552f6247564a4766624e596a7258483046472b64616a39626336476c2b74585436326c6e33397569696969707236334a576e6a6c5863473735732b4f454f6577514c3366366b7a2b314a6a2f576c4d34746a71496f414c6f6f66575168564d4b6b75573962345275412f756b346448345a3949766135792f6358784f4c3342772f6c357a34756838326f6c2b75325732624d6c584c4b346b446c304c65476c55564d3357794c7a3153544e653465536a3055736f42666147674b514953544f6f784938496d596e4d427261694b6746715579336c3553776c516c4b62704b75717a366b6f2b7245715767675773324d5a772f616f3379726354544c3238614c594266475779767438787272737356527837676b423759546f7a41736a35453556453658555a622f41495a784467696e3957302b33342f5a502b76366d635a6e4851574c34726e3970795268794d74347a64364670646b4d33554264474c702f625a6f55724a6569735a5232685a37566838496734552f3754563873664d546567355535754e30554a6b6f4c795370432b4c6e6779744a376e54787a57516151546972732b576e4e396b30727665636643574832522b557665415a5a3454785336466b62636772587369335a356f4a75546f7a39394e466c586a6b7a4f316a4c2f4538664b4e617a64532b696b5a666d494349706a4551686d2f3272507a304258552b66762b69315a7954657733575452636764546e5234612b417550376b363364414f4f6d2b6139794647357665506d446f33364135504d663064386568623543717a6d783351646d5a2f46557a314270655350796578497a4774792b545a75686443716a7179665734786d53706f49426f6e774d62397166495762426d6f6d2f6a64532f4a6b794b4e4b725172445448786649727259724f747855344d553772557062435831376873466a58425831742f76525933732f4b473145516f706b7a74665768707976484b5a745a716777316651373235644d626443624d6f6d566b3550744851707932615273537637775566573148664c7959327261472f483447656a566537345a36316558374f5773736a66526d2b6e544a455a62464d3877797061716f4e4c49664a73726f6d5a5a55796a505072754a63714d71557a6374446e5a3949733957324a69493452484565696e38622f5458774878374f37366b65506e70654f32624d515475316b674c457a3573546f5a4544754b7075766376364378754a666633333377655041644256784b59366e6a764e706a474273564a7659552b374835476233755654484e6e377147555252396c7643635a4d2f557966354850465a54747a556650314147486673586e3852754579354858627937636a676a2f64612f506e7762305839524d6e774f4c774c79503163395138667866573346592f693176387248366451625832736a786279627a4459466a6d5358495a44523735623834674b612b4f68716166616132644f6870544e633774745a2b3430772f455038652f567a3070385238593963665544516f7235355035626c582b5a5a6d3032746e6b7a31374d396d6c70592b517359366634474f655450436c77385438547a7a5a7a6d633639774f44585576573037594537386a31776f2f75487133396d57373576492f5354782f4f6a7857586244344b35594c53725470622b71696f6b585a7465545a444e4d7a39645570546f38305a786131522f3146613430636546673939443138386f2f754c2b70766b32686c696a47643446533445553334734e385a6e73614145336a6a304b417364394755766a4e66526e5152715748484a51646463616b54585172475279302f4d2f7a58786231722f49333151386f38556f54514d56645547586a3254726e7856747a6146705a426b5a654c6b2f364e627134786249356a6e444c6f3033653530314a50636e70306f6d6c4b784970663034504d7a50562f30396c35796a4a79576556387a644e5631657964654a7061463556466f616b2b64523373734a334c53786966734b704d413635414f45777564612b647476487548637562774c78544c3367395a38746937665766305477664b50452f456538316b446a576a354c7533527a2f41506d6d4259694d5234724a715438334349382b4f4f794148434269683365544d7a4732657a59522b2f7a7a7a543146384b386e4c3155384f79765566795169324270383838487a743062736457734473714c42337164444a482b48314a766d79714b314651332f414264544e584730716c55527a6a62626c355278572f4b48302b4c31423955702f42394c44683853386f7a76724d78725a31314f7663693661472f756271354336446f3976794c3867447644426c51464d6331494b436b4844303664747463787a55484f5879337748797278696a5168386a5879636c727635396a764679665775535467426764537479324478684d49317061626c4a647a6e666a57706e44336938643152474f356f546f5335373531444b49364846337231477337382f313644657852776b3656685552394e682b3845713730656d6f2b55467a2b6f335738524f664476485576314d34596d6a7a6871724e6b395466335a39336b746c534d655a41304c3433397a6c6e463370502f41506773544d316e79736c45346d307a776b577a586a354d6e636c71654b6d6b304f2b315545706366374936417a3241397356656b51452f76312f72392b526335632b306331556a66324275674b566a34756d52787a3071666c4e75466b466e48352f496335383657526b705952655345575750567a7066313954426542617145752b794c41476741657531784c586f54704f79696d647a33644c3274796b6d32373536354f774752643169497149356e74722f414d457a3038625851346a492b6844746e466a30453056614e73395968666f75706e70757a655879314c7a3478737a766b53786e324e4263342f4d3952475075514a7a4e50356c723655784d7830466336574f3344307a3578326b6e3669632f2f4c6a7a57364c6b524378674d4a4d665a2f7168516d7a76657356377a2b4e682b7a332f414c2b787057643054453951696d77464e4965726d5974614579495a52305669675270735450384163346441646451484b4849556e765571465876635046416b566863474d726e6a653735426c6874364e655a34344e554c742b6d4b4f4a39345331423832725563616175637371636b694c6e2b502b626b6c37663058412b624c6d7248684569626541654a654c743161646a4e4b784d4b4756322b4f753175676a52707a314e63334f32536d6c5967484d42324851484563364b756d594278623653464a786162644a376874774b556c2f47476969486d58336e4635465549464b6e5173324446396353366f4b2b324664646c734b66763268416a2f774373716e33324f70562f5652713936745551724c4634706e4534787476614b4a6e753533517a67397934714a45397a6843725047696568503755626578754471436e412b6578775662746d4764717a777131475651307164306e556c7861356d367a43726659714d4e516951766a4936476e2b6e2f726a65662f4145774c766b45625247496d33664166654936445a376c78436d694f49577947663054354d72544471567a73354e584b6a70707a2f774472723478774432737873506a7a4d434e664a7631675354314232724e5376744674394477354851714b4b704979587771713036416651462b666e2f38417154696f72547a396b5a6b30456363644a6e7768474b786d664b41563942504e732f3030382f3841473936395766523430656c4a69376b4e55623366617a395a2f7742653061307a4f4e3978547a7a7070354d507463447753614b5a545173304c316d30572f454f774e2f6f5a364e2b615a38766c324c35414d476579704b384530533646586a444d7465674e544e664d336137707857346461795566594a31504e6c6b3332444f6d616351356f76614f4531774b4c796643504b2f46374572665559654b36725945302b6f475a6b4a334a34474776346d6148624a72694a633659585471576e503448654f3154537236476c2f6d6d30327262724742737834333643522b523545442f384179473379746d34684f73584a7a696e367872555642723161304e756177732b67732f4d797a6e44744a396a5446384946317030474f633232392b426245506f483436794850685a6b394c2b5a4f6e75665a6b3071374c554c325a743969394e49543063717a654d6f454a6b4c46774b49792b4f734b7146725258664f4e324a46332b43656c32642f38334b5048787a436f7532664f36394757784f6e79674f76326d2f793059775750464578517a6152667879773677782b6e7654554d3444793978316d33506e7245445948306f386c656e56623437355a41694f4c6b576c5042646c5a6e58386d51365952767a575374682f656b4b504834312b30433971513537466f41782b325a566d493678306b626559744f557242625941316a48714970707a633639634a4b5a6e70314b49645050736d7858644c2b654e4b63756a37555141763633312f686148372b4a7558486636366576754e7266446375543468757a4e3631553963594e78526d785562714e47306a6a79335741656847723675342b6757434e476b73524b4f6c3836702b4a69412b35685055385a3431424d703262753134565a59732b70326e7347743159534f79363363575754452b7171786c537047446d3648474e30665a3146693569486a51304f386b6a4e4e6d67396b325a61314c30647631476f6c697557634e75746d73685871615a6335797175375168657a39714f4e733033754330422f664136427172673539456e7143432b4846323532444a58426b78312f796b455338584b4b4b786c7a4a304b4b4f646d742f463064596b4f64483249354b4e464d69716f376642396630472f7667656e636d6d506c506a6c5a455633303556734848774e466f42577454633352743057636c686e70594d737a4e484d6f454c48574651703671546f675047314f2b4947314f4c6266504b7359716364444b654775584e444a304d336a47616c772f4663354f637371314a356a77304b6553552f4d597a5a4b725775554332737a477a76697956754f4b713447363450736b6e70624e7a53316c5a48596f43436f394b764e4a685a704252566e684b50783255523841445339786731343176325a467476624a4b70674c386a7533633976334e622b53356f5838596d5364575742796c4646374b474f53735932735162303863486b366853496d31794273495675617563626378744e6852546835447a6b55775335387756334671655165367155636d48354853556643735874374d3931497a484a5949467751717a7254766d4252666d46544c747979526a754439306370644664515531557a7134706431696e4c305965636c7a327a3464535a696d3766504f37783478735647336c4431614455543142325044362b2b56375738762b6379496347747347424e355a335231307836744535304d7866354c7941655850704b7a51656c4b2b2b776e4a3654477a2b2b44354a6a4f65485565616e7a50536671656f6d2b2b474f6e2b424c7a507643317367644364566b387359386544467251315973645237567346693231434b5a4a6c6c387a416d6d372b6743374f7452567a595a42347875782f7856754b78544c4d4e3947687436626c61554f4f53462b535a2f61727451737a704a36413946644d3053706b693562674d67352b66334376414c6648664e7643764c2f5a70397866554877774c46616855466f544f31456b766d724f4f67764657504f6e375262324c6e57395631332f4c665a776954766f577a756a774861582b7a4436715846364b6145783030664e3663615038586e6c4a314d626f2f45747637326a2f414445782f524d6332674e6a4c2f6b792f617a4d776e452f7354484942633566613638324f7534656b6a783362586f4c7839704e2b7865682b566779553851706966626f55575779376e4e53484b6a4e317775686a7a42355a437049554a706e6d524f3677476d76696d4f73534c7179732b39312b64714e32645239713878624a496f70516a783752304d652f704e54516445744c716c343945377255636d4b774570564d764f3048414e4d77547a67774f574755764778336553326f616c4b4d69444d66526b6a37474b723433516945674a674d7870372f736b4335302f51544d4d2f37454b715135322f6b5a344c725259336a336e61514f4f444c31364d6a5a77504777355a446d5a336b75676b4f6e6a387a5754636c31423272744151474e6a6a6a2f384154357a423078706d737653654d783469337651375839755a34784a716378736272465a536e766378387774372f4a37324f702b762f4c4d2b726466317a436b645755526b33686d534773616f4764704d64596b6230684e64526a435933555a584c356a2b765271536c704a7973324e61397553716a4e564833692f49465a2b6f34776b6c656878664452597767556f703538666a2b763669482b615a6364326470664a39656a6432724141362b7773363956317343347273757944334c4353675a55725454564c4c665446482f494a736e634c6c2b2f537474337a676331767954394e5048664f76532f7a5878447946783374324a346b39784e566e645873766b73685a2b304851347651706f7a5a313755747a76595a326c304a76675764686639544e303037545730544138734f4852366c2b6b56766c5067766e38506c394c6646764c4c3841642b4c4c6f48785453696c31317972743862484e584a39314c585a64546d2f566f4b6e3573547652576f67634839656861617a786a7647796e694872754e515a6d757a59666f3656584c64476e78594b327173563433416d35666b326e717a62487a55352b57314d4e4359376b6346763244343241674e7a454b7a6d6b54316a456a76542b444f6a2f7743592b6757627338696e70786e61652f75564e6e753866303948526d302b546c645132324649644c51594c73643475565774316b3031597a65384464304f58566a46356a77463577527861757371487146774b614565644a6c6f5834316c30337730714f35316566537259716f68306b625754644c56462f38415350436d63626147704f683663784a346454566b516a49646e63355432794b5050784a49326945716236343537757237666f575266782f553648766161785a55747a75646d654752584a4a4b457a7865793437745a6b3473366a4b6157686979384558613636426f6c5736487350784d4b484a4c51543971787a715a2b7270672b4d6e546b487a4e43317647645053786156654d356736665a70394d714c724d6d386d5438793248384c754b354443746c304b37426432647459544d556d42702f487a326d4d6462524857653454366c7561314f705452416269626c5a77445855334d7a5673597a71316c6d522f546c62447054643975576752506c676c4e4e4f3337496f4e526859526a57727176314e614b4367704f6551537230627548314774574d2f506b4c573475424f484d5665544c53512f504f7969536c764a6154536f31416d63712f42395030476a6d3373657633717a352f7a784c302f6b6d394f5052504c31744350314538363031614758354a35647242584c69615869324b32654f4a65504b72487a556d646e4250697a6a3465585278772f78314f6b624b317a504e6542592f71542b4e6e68476e3666617a61342b33655a3533693957785035766462703137334136657838313774573179525863635a304c6e62796633742b4c32574a594277432b74627a452f6b485058303830504c5055484479362f47665053384b6267373268347872532b542b477a326874523557684c47576a774b5933555a4f39486c35646e576658466646557a35533767596d6b7a647462465a3431334463622f414d687976414d6e536d3879374c353135566f51315233655161564a3035634c496e6a45766276776e623261764278564579794a4b5371364e56674f682b3177762b757a4c684d384f5563522f556a30396e396450563738716679437838646e31734477377857424e344d797879504c4f4e377359786178664844433332737834634c6f334d68363541526d3734776c587735757173374b36644a36693550376675643666485458366a2b554c67322f50644f736f50536677504c69746f327056305a34386f383630484f365179352b55784d6134796a725a4845436635464f6b76336d715775746d6545646e346836482f78552f4875584c6d6e3952764b555861586c6c696e366b73744477452f473056744766714d7a78396b6f585a73662f567a796575712b6a334865307a654c46664a2f58486533574934446f3769795a79736a50306d635539676a5270646f6f5454704d68466e4c704c5a766e7a6e4558787235557842304d6549556c4d4355702f535664546b4a4374725a75663965657370514968747a61616c4934686a317042354b5a4a2f756366594a366c435267366b307036453568374f30663043594259374c515550487a4c47564b706b6361634c44583143615655664b796634767174686c583137464d4a54682b5839696d6776616b4b6a386739484d61766658356e3450474867336e62367153587177636e58682b584c6b306d4f70782f4c38664757326665686f3046736a433075545871355348785565396a69766d4a34596e6d714a436d4b5854794e44787663385a354676584e5976517a333149356e3368334d57624d7678784b5a33636378474c50656c514c616677642b454463585866574b496e76695278332f41435a2f45726238517438673066424d34457755775a3739444a5634376b486d3675584c6f536c765a477155724a2b77732b482b4c6b584f426a2f78422f3673774f485255585270366b6363393434532f6b542b4c58702f7242503667342f702b7a6338456c4e55587164342f4b6c4c7649504274686f34494f306d36326470566c357034534d4e3158665a3157673737736436557556376970353130314a374e7263336349466e2f676e364565707544466b65455a6d6856354f365a4e736749324e42596258542b696e6d56324c75577636396a574459314b574e363334735336673073643171676e3374367a756b49656e2f41505a652f48377a2f7742513854794c79757631466c7a5a307839383039506362714958307858722f6b43727964793564484673544b53304774532b7a2f3576397934327137456d5a3970765773514e642f7a612f77446b2b33725a365878733952767737386a50386a505361394b64314867747562546d6573486a57664f4c6c32723252503441386f544e5a50596c5a54477530666d416b794d48684f2f712b6c375a57303431593933623858776a7a3965622b436558656c2f6b577a346c366c654a376e68506c554c4e424f376865575a57706d6243644b4f746374696671734c6f554f553569533666566d7354693930776f2f79622f585845356a4e6561676a457739597833754e41496c624d525764377a6750466a6e4a6c4e584b33645a4f683661474633676e7a336b6e6e7361464246784f6f65635375736c58794b58534e79676d66386644635865586463394138346636654d36382b50516c3634666158766a3967484d6637614f663866303951434b35685573537137547946306e50334368335235543967466f48324a6d5a2b692f3841555864426856632b4536552f454875622f77412f31547635662b526a313352584e4678726c797a425638464d4e44376e4b66513671723672426d5a50787a4f66657347726a414d665a2f73466e78482b2f77436f4152366771465a574a50745533545a4549664778414a533056436f30696c7074397a56734870695066656166632f324d635164302f672b7671515647595554735a454330686f785756506b4a7443552b2b65364b4e5345426e4a567a3366594d66692f532b2f746e77396e36516d553755573575626867574a4b4e64655953554644564e4c516a3457317549712b746e583965576756543045513641693578765148745034744a7a6a4f65736b7a426d5062312f5954314e54314a2f742b344d73326b324c503841546a3147314d3674335a35745076596837343956474e5766597a7445736246316141764346532b557a337239744c4b517249764f397235646679734f6d33727036532b71506d6e686e71466a2b4d6c6c37765a7373624a384b46537377393971394a655254484431565a4852523350484e524b766a6e4a5135774f4b39765066797a6e706173545762426a2b50672b582b73486a396d5a346a6b3630392f6733495048504f76453958476f79646a787855517269783574625031597764355a4b2b724e557874552b654d37467741526d61534957723472504e38667231675254386d665361485878755a52303270314a504a73686d626a6f52505255326d656f59386e3334744b3055334a444c537869696d5658556c7571763461597446537146577062474c514a78342f364b65714b5048594d724338726b30627263654c54374755745847512f764c6f62484b6e536b7a66623176484c30755539477a326e393971416f636f7a63565a7445635a6e714b52395476464c58427a78767a5878324d57647a6f5a574e7538657936335844536a6d4a53334870556d6159644978716a3559354e72542b706c4143665a6641466445785053596b63365058332b32682b4e2f7173726c6a5054504d385a32644c71686f3350464f61586a4f7a4d69706c523976306249494b5a79756a4a3065674d3267396b796163532b6c4c6a6c57443948616d76657678626f47764b2f375a483552656868723870394166793039524d624247436d764c77504f4735506d4d62677a416c372f44767a36685848596b4c4a61444d754b636277536c424559304f4c2b727a72366438567670774a62354e36686633622f514e494636692b6c666f542b5366696b38324f4a6e68446634783542617a364e32706674352b696469776875645074456632666c393941593775705571626a706e4972375066474c57307838384d2f756f77656d62433366586638626658583063746e587a4c587559754a58355a34337a72714761326a626f6551524c657a4c4b50515864543169705074734c4e4e50792f4d6c49684d3647376854556930514e362f53332b366e364665654b6e6d7966797138596470714369794878547a4a65726a625557706d4838616f48306554706d622b7662647058504b6f6571372f434a436c4c52364d7a734c6146342f646a66584d3961636e5a6a71747038643865334d564e4f614e486b574c626a31646a334d766b302b6a6b5430597446614d396679616b766158477a3943464a6d5243554a69374f596965734330592f553777386f4669506b2b766a575a2f4a41696634396b56756777466143354b315a716d52513935526b7a55584b2b3054625a775135306830526d714566367037767a466878626134513771532b54592b7442736e7a76456174487857574b6e4c2b50715271513058692b685a36687a424c5638762b5932484134666135717a3045317866492f5562506f7430496e62474a59366e347a52444b36503674665872306249744b6d714e52365469314c4d63557359707067457a674f776a5366326372525470362b6f74667848386e764c4d376a44314b4972545051536c56756b70475678657270755a6e727a32645937765873346b525772394b5348326f7a2b6233673664726132306f36347a6a364365566573486f3936726c7053656f6e705a672b514c636b5275697338586d386d686e6c3036313562653238767a654d4772374c6942676435504e50384c6e755958314869456262313478623942724236672f32362f37593372347737645030756d3847314b61593130582b4436323734567a4d62446e703731677a594e5153702b49616b6b366a6b6165726154446f503745494775316462587038573461582b612f2f4a2b66544e344f6436472f6b743562347a5230323377713836783837796a4f357a684f69675365704c4c4c54325666782f70724c44724a6f704d542f7741766a3457306532543864526f50366b2f326576376933706262627135506a2f686e71766977326e566e75384d3354743869636969646e542b35673757536f4d6b316b37322f744441346f2f38416142304737336e7458326a5376484c6d7533714e66397a78543133394c74444e7a66584c30473837384231412b735937502f6975697a4c4d7171353655374e4661492f70666152386134692b2b786b796967636f2b4b61417166614a70614d3074754457437550744e416438697859715370316b6245616f387965696d627171496150704d59766878735735656b6e6a6956776936436a59346b6d317067613741786e593757716d6f677a342b473670772f4a704e766e5664514d62613671694e6557432f636b4b715a5350716a5437762b79556f73437a5044665555504471786e7a6d746169523953626d646f4364623833526270564e522b30435a5566416d684c6544522f312f6a435a4341633443442b713272753435774e6d6d792b48657257456e2b503063375033356b5436615757364246527978314b5936614a356d324e5269324e6e47726e456c522f6e525353665a333679416d7a35712b5752726c352f365458654e32335a362f354e733336785647464645316557743763392f5a38776f565468383336592b66716836787177346b46705166734d48615674753459774b676c306b584839614b4a364c6764795852312b6b316631484f416c614d624f54554e426771524f5443364456462b7348342f6c62584d5a663159456444566b6c62686a3746314f6d4f774b6d754f684e455530707566736a78414d5879776a4f6a3372682b757066776530516d5034516f494a50692b553671756437396b7a625631595a735853367076477a4a53775a75636577542f5346307341466d6c774b6d7041326f4c366c49484749384945593834394c2f4376567650727864547872493077307553785749446f5a3079394c5352487a524e696b6c48554f6c3071744371615875696e39466c66634c32425652336b3770726d59484e58316c2f453731473950645878376538527a5a64545067324d6c31564e63303031617369415073547173314e71675765354a4c516d7272484a52515a7871582b77723435653164537471343965763544744e2b4a766c644f6d7845756e6d2f7775706d353344586b45457a49626e5a4f37644b426e433579704a3531445a384d34304d34663136657979615466694f6a523564534d5448694f792f684c764a3948426a5a2f47707a745946353848466c7864424f316f6e4b596a476c666148413049335132556357315a5051756d4e6a714b472f5a4a333963397476314478746b7551324e5174764c7450756532396d4e612b647368366250726f7a725939516e3539584a2f496f3353304a6c2b6270474b67736d377830796e752f4d44396d374770516f75644f323157634c516a6f73726a58746c78476c2f495737444b386c4373314c4c6c7a697567312f34543552576659396e665968586439416868332b5536455734316c63745033464f726d62485a595446614966595772476f756d63536c70436f55665534735530482f4a55736d533334513653323336694d62575835585250764e7a4d322b5079493838364d39466a632f5167335a766b713165356b764d75557a646f4c636e48503754474e645248597162744c505977437458627832676e4e34647143794846627049536a7567464f5a4f6e69397474523061374253697037787a756c6e724a64686e4f396966304f6b61537245444e4a313366466a7941323747616e4c51367a79476d614a394c6252763756526d4272514764484d36707870386954504c4348777872564e7858327a3939596367344d3759427457323735774675614f6c6f50683557395873732f6c6b6764686e57624e7565485579714f72696d304f797837687557354a44313539524838616c495638466755574837567a716157466f315561556372672f643745384647667550745037725a6c5230354a4a76576f7355653969756b4e414c6d45774d6e632b45382f7966663769484e386832394c4c3070383049797a6b306d35636a5a3438697871784a7964486b4e2b47346a73326c6648644c776f657346334c696e4d4a365648317438526e5065454d5066706c79585a694d6f4f577273575632665532333659584e565a4a56715572664d3974792b4d67766a597573524e306f4b5279436a6f544a34784763343467657664565848625879374c626b636f677734343839554a304c346e564765626b65692f79443470397773645031326334786c416d62785542422b304e6b4735664d744f6a36537356657058324f584d726958706131777376575a436a4d346b552f704869336c4156576148536144546c396e4445472f6162396c724554316a4966733874733864665854592f62445430596d754770713737706c5372517758714d5459704761774e355a46544b785a4761616751634b796d6f63465a72453952635869487152343575334f53646e323678705378467556484f4866654c78725334592b74374c475146783144474b364471612f38413443484f6e55434d35704d63656f6d54644c782f5a5170576a67534c69706d323759655644726e642f474746464447577a42437054435a2f33456366396769554c6c55653456675a386a6a5766435155753847394f39476c773279596c4e4e4c64467a47484c386b506370734473756a716b614139346c4b30705745526462785944655a474d34485777575a385a41716a30677752704c5267364f6c33765753396976647a364b4673435a76614a51616d54357548556d6f6766384161503542635166422b6c653563373765496e7171494a34716e437561336d646f4e42613243366c564f6d716d6933726f53475648566b54485a4b666c61704947723552346e713248787451744d7975712f73664c75744258577879334b5a466e567a6a45316559715a61704774426c415433574e6c6f363549702b4653686e6f3935646f42694e65645255496e4e77732f7638413541736d5433385364535531356455306b484b766d4b693442702b5258516238546b36564642557464336971516a3774415871346c414d374432326a48702b7a646f4d5a615575334f6d4238645830553866537a552b347635794a4c514946483336375253435161537275463076616170572b2b6e5372377a365857736f32746632393073303749593039317166727a6b3768386c713478426a6e554d6e6c663044423335436f367333683075304b4b56357456303958324b38373672497073396c6c46566c476b77507163737856684e783342584d644865416f3338524d6331367838787042367a666e782b472f342f4d765031522f4a443039743035363975642f693369625a7650384179475473476e5a4b2b654647614c657073536c597a7a2f643933515359524c71423767617253756a7158374e527839396266384135516e3662595766586f2f6a74364737336e316554485a623437752b70327163574c6d544a6e4f486c56474467455342446a6d434c324c30544148663466376a636f702b71505a5a7a693974763849355665724839303738392f79597a394847623672615070686a6165636a517a734830317a39504a3048503675464a505a7467344c7033544a7a39425465394d4868784c4b46454654682f726576732b6a534d7a58663878706e343936492b6f50716a706331664a57655137656a564f476c58563566354e73612b752b52675a764a716e65526266784f4a4b313346315861474d6d706d7072663966762f414f44617a617459785562712b482f6839713754596e32342f4d74372b3465686d4a6a37354374643930756a4f7268566145656b57634e6f375647744c556b4c4263343654345454616c5642353231596b6247772f684279323747797049415a4a33576334706a4461706c6458473163747a3961716d686a335a7259797a5739643353353133384453746c4b47306f6f2f716e765049584c347a2b4432344e726d7a6159345a592f3646674176537739384962546a4b366d724e35697a4a6f7a2b4f314b426454395a6e774c676a63587653525538704f7448642b6f757677373861764476454d754b4f7658574d78315a613355777a767a564e6e5832702b685071665052495631694c73324d31737a70795366485045706e4c61796d624f64575a3878734a6c35486832486d5356512b4d30487264757a704e4b544f6a7a2f414c4c764b4c3764425a374f62786b62763543747568594a704b4e457a6a34485767796c55316a7531347a385973334937503841636b5671305430576b6c496c4e6171696e493030786854486f6f67686f716f6858553734376d47534f4c4f5a6468636c51664b726c71703868784c2f414c76326a6e65542b6d337065586b46667466527471564c445a6539577558787a786c2b6f6461754b2f6e6c444873574b4b6b2f39593575375a6931706758774c362f5a39305461493434484543584f736941636457517047307a624f436833762b7858424c4172487a4c4e617030566b775333544377584c52337335726473536748326667416d396f76373079394b72764b37497664426e3457473251553966574861755a4d57686e4852704e6439746c506372596c684a4b30464d324d542b7a536b676a6f57394b73742b4b7845634a6764555052663854484933634f374a695661556938437a54517a4b7936797a315462646a5949466b7a35573652537a5170706e574a6b6f6c4148736134707a2b626e7471635043423077787654504c3852385a3041356e73392f56305470766d4c4f544548475655654f315a7173775a782f626b7558647a337972555a44656d66397071364b6b38383334384f6b6663536f63744d4c6862644432526b74463133455a504b657a67654b4d366c65363533762b4e6e38706d4368686f2f31742b2b6d776f3141464e4130455270334561656a5454436e4c6a674b52794e477762757968546e7630714f566455384a356c793643452f5961505739365a642b77357450765833717450642b596964747448595a726338436d54317262724b6e56714e756d69663439426b73364a376d74703154735934474749304b487467494e6b79684166367454737747726e7a74486e37356e4a7a69362b56376b6e78325a466249796166736f43345342793155444b7344367355684d61364563453543542f56682b66356738426b48717566756d717434456d4f6166727955354c464e30455151693856397a644a2f52616b77584f4759504347763248374b374b2b415a36486c365653386f787a35545a76324d733041476a575a516c6c4e45655444336f73712b544e3175364650525978664f5175474d68414161704879544763635a7a4969782b5231324a6451416b6e333147444a6e66786f6c374b576c617255546b57776d6274546b75613467636f75545742375645444b4573534d686947752b644c307a614d566c46594a6578704b6e572f6763315a7165543679303064595641396a2f6641353333744b6c6637396966754c49492b646e3270697a494e4171326f71355845764e7a304a6d6d377064596e2f414c77686e6d7563554a6f6c4c35316f344a4c7049416b5a30456d30414733746a6e4d6b7446384d2b535231554c6d57395353436c3061774c6b2f4948676f70302f52534b4f316d415471506b37554a424b782f6f4a4e344a36562b73487133524a6b656e48707636672b5a5354444a4e707579764862373851563831484446707432576c4d755839797a334e41766c6d2f53514e344a345358557154616c65747131774e79764850375033354d2b533658646e7a6a62384e394a4d543767506d4237652b523361796f716a6334364d334a304a675937377a6f576b58586d4c5065336e77384d772b48476661644f49346377323739502f414f7a582b4b6e702f5a42766571507162357236313135315843644371324478337874445a577872526e756b7a6d4c665646504c526352667276763452395a384b31702b4e314a397176626857753062702b432b6e2f34716567504235364f2b672f703334553346544b6e44386d626e594a315336494a7a7a316174487a5053705a55392f5357772b645730374437475175346a6f4838654e70314c3971397243633650726e63342b484c61795052764a4b457a39584d3976426d724a3155526f447676684561666a535066615174596646386e5664396f4f6f704d394978417075337a5466716d516469675a4c526f4d77683138335066513675776f50384173356b3079717669466e5a553357634b67334e3554474874427461536e473961316d504552756875563752323262654c6b61466b32646f4336517036616b617446644c34414752394336684a38497a683879672b325538597a696271774979666b2b2f334562387538383862577a66433061746853394d6d7537705936436f7169434b78467a45423849636c3737424a356e376e736179794d444f5a4e4c584a6d7354485752556e7144362f6548656d382b37726570506e506766705a67523235487a2b56655565555a486a7a764835447348513548506d7631724635392f632f596f6d616d654b643347653471416c6d5958757458547a326137687963395a503730503470547973386538485a366b2f6b5835657957744c302b6e6e6a664d365052386b74334e425575617136754f785331366c57504376673835786c6959505a3142766f42303352583262556a4532787031382f5569453433354a663351767961675a6d65674834312b422b675868654a6f6175687a66395a39433672613853553637513170382b694f697a5046656f4d4e676f37654d6966674d4b5a70304c373150546d4b61464f4e74546462386f7443542b33462b535072666d554a2f4c723875504e4e65536c6578567465472b6b6f4b384f38547a352b4d6a43677a73365461692b73725333476b76734b33634e4430302f5937503061612b2f70542f4c302f7744554e752f52482b31562b49766f37737a3035336f5a6c65532b527254796e52386938716f6b326552736b7874534f43704f4a74504646512f4864433176313141736676324a2b6e3856436c686e6658314c5637584b4f684762365065442b4f2b4e62336a362f474a632f6b754734354a4d6e4c686c792f6f6c4e5a6478493475596c6630644b5a5767524b5438696b3964712b32356a56423278754d326d5a6d6433396637415038416a523437682b4b2b443575672f4a5450767164714f5933546b6e30537a437131593436705332732f4e6579504c46624334734a3142396b696330307657345061314a6d5a6a50654c64386a386e3865394c6644582b542b64615a2b4b2b4d6b4f6c506e32557732436f7444556e68504d7a66485a33777a4238682f56534b354a456e4f4e78716a4550663776367245546163527a4375667833714b37777257387a6444354c6b662b642b514d315472504269384d30445732567a555655353936563377724c6e2f54533638512f6162426f663044416e397471646366684634354a3566456e31317662637475537568325a6e5372506b7a2b535132775154507330717143536f6135316a4e3265655944634b626961464a67366b353777576f66694d572f37587562557432553754764c794352794552412b71654b58335666434339447273316a306a78442b4734353654486b356759514757616c5236585a45596e63724756426c54307456666377323641716a713975567a676f483275676f6343652f58617358673867414b562b35514c545a41306c704e72437a51476a5530657637315878666236504e5339716c45657032722b5156564b7463354254386f6643315a74543761456b447339394e4c5963716d62526a36334e74544a71314b6a533543633977786f6452386e31333534712b3143627538634b585070414a7a4e4247484147364f6c4d5769465a695173307443715234524958432f51737a6e4475396e7a346672692f58584673527868786e432b644a41796c332f5836304142394e5479367957726931306454546a746b505665627937704b6c7366324379786d4f3772714666376d696d6d77584a452f6d4f7a334f497636416671506e7457746576487a6a3670786c71555374746c4146446f75372b32766e58503841526f533564542f68436e76446e742f596d7955457342695a36526b505a3770444331563155584c345076756e726d314f647235465655357333304a4b31395a6d7348512b51435455304345373535476e5949544a59447456575a466e5a65766c356a61594841704b706e333656447553304c6836695044366677386e4c735a4f4f6756546b352f776a42373578343133574a7a6a76416e6d33416c31622f3453574a4d732f6671636858592b313030416730436e325a6246736a6e4a32704b6e326b43697037535641385964444567434e5a30526251534a7153674374586139397363724137396469547074707a63717043506d4d62476449715072547435663933332f414735366569434b4f674b3641534d72706266342f503841315079445742506335316935624a71446f6d6a4763624752734a51732b79527066384d7745437532414c793744516d624c6c7a477a6f6f364d356d4f6c334d37324d784c355071746d54774b716b53565556755837456d5236767a6670492b34546e6a32764d596164697550454c71443472506c79683537736c764778775142484b6372387071304b7068666239715a41714e7847646839483952754144676563722b2b502b54336848693367767048364b2b5565732f6b2f696e706435734f39742b662b6e76674f64627065632b72474c67584c507833786a78377947724a7a773866384c4857645a4c7232794647523078702b3432387761304f2f77426c3037544e72525846712f36616a796b2b723335792b767672566133774c4c38363150543730696a3864563462347a3659654757486b35352b6e5555376b354f58737567686f4c573246744b634b445a30334f6137767a4a54314a4433304b36564b52753237726669387852754c2b4f48727835586c5a57724c3650655679594f31594d754835485a342f626c59356e4b35777951553731517054557762452f723471462f4d435538503371476c72687476303474743339514b3536442b706454706b4978316a307446674848786b636631793071565135366d433332636c547857623861566d5876416e4361332f496c78537a37796e68483246352f686c6a6c3474353535334235644c7164737a6648436762673463563774446c4c3675434e6a56706e2b5432796a4437665a3969552f735a3454302b366e342f5a54566e4d566d505855624e2b5836326333786c4c55326a4c6f48354765627076433657624b4433352f774444342f4f366b39446e5231767a4961443531703052755941457636786d70697371647142723735786a655037476e707835794d392b6874634269344e556f665967676b586d356779507a7865706a4a374a485271586d54706c704e4a664b61526d4d54316a50654e624e6678584e7a484b5643375031553071656b49466a6638414e7158685852566e2f4a725431635852594b616b74513548754a7a4b66683931626b4759794b6570544e6e744f634f2f47366164534444756c79787a4449364539624b3968646c2b6a786971752b376f4559507053737a56377a347254742b5741706e7a63654c6a4e496e4a4c304b7a2b43707a6d57544c53772b536754666c345559702f77416d6a3750736c396e2f4145384c35444d312b34646d2f516a2b356e365a2b6e50692b66343735682b504f4b365849784a38557a3859566e6c64666e707a79552f354d725a59633659364573634c687334626a2b79626e4e64377853484c4f68615a3356734a4e363166335a50474e4877472f77416239452f5235586a5733554e5538766d666b43383361727849302f4e31462b644579487463476b554e687a765457377358756d67705562752f4b353676733837756177346a45765531744a39633771395853462f66686f5539626a744369416d556471696e393554704e5a6643432b4b507275576641664f39465a6a3134697463574730667066366278534369375355584b376446785477613034496e7554386567363669466b53796447346f576534514d6661316358366c57342b74556a4b3170786d654f42746a4a68654e797232726f385a524749417349495a6672786c4c334a386264505469736c6550596373394c35426f364c51616f6b754c70745632386b35383378646e31344375664a666f78543051356d7a426c4c2b47713539302b644c6e78726c63765064564851476a386e614638787968676172352b474e457954656c7a6e454232703259444c6e4e522b37594d6a6d7a746c504e62585670516132546d557a5a6f6e7a696969585a5652524c4c4b6c6c4832656d726866546238365449796d47772b614d6c6a394748527a6e6370356d314b7236665275355a42396d75466f6f6354782b66512b646c536659774672363173667452423141483134656a6a2b77352b4a666b482f7a762b512f6c6c3531347a7259586745506a312f6866707a712b5178486c4435547174333942433972302b476a6e586955454b35304579592f2f702b4d5a36534678666156776531366b626664563758662f77416a324166786a5579553556474579746a336c5a58704950756b5532744f6e42584450704e30432f524375666d67735446585675524d536a4233754a72504f487a656d79734b533752616951454a787873342f774334736d55717a4a4843526a634355747a59304a637a394c6c4d3644475a7a7569672f59332b6b526e68413579666b393634522b4b3452793454396645324e326279615078524477537576522b6c763465546d37585a7236673742342f6b6954483066457559436d4d424d4a7157514757326e70386549382f6e35332f6e46522b45766769504776433651372b5148716d6e795332545673626e3659592f696e6c6c316d74716557575462665758353771744b35793554633136374a6f78502f496162324b374e4c5339374f5a374652356e49665756586e5072503448357036337330664e76467344794c4b31664a50453539617471724d724d315a37742f4264452f6146773055346374507a6455325a4b684d567870476f4350765a4e63567446655566304863622b395a2f616a3853394950477163543167677950472f48633262463858394e637a774c6166745a2f46696f4a495048556a6d716c6c584c52564c326c704337324a446875654a443871764a6e32623269625a6d756433785a4767586976393354777238352f584f7a77583052394b64543033384a38663865713872312f55727a46536b655857783831703570632f41385438596c4d732b4f32665145576b76516d2b4b624e73377a374e4d63626b367a37504f6c544e7262726541764c45484c39537462637a6e346d6a2f34764937516e30743356545545556f703751716a515a72324a356d366d745643754e662f787164646e794a6459565a2f654f61746f6d73376f3778482f794a396447596c574c2b50586f315046706559557749742b5852707a3664444673747774346e4d3139485557786d6239466a45746f4f714b6c344e32422b46594c4e66366d6c4d7875743259484a58314838336a394573656e4c38413057655a6563362b3731586b506d41575964786555626e33724a6e4b785273714b3635664e6165455a75706e57547a6430446f5034584d6f364b78462b4d386c5230622f457a30543266456654746c4f78517133797259312b655165577a33794b3364534d4e32542b4f38657a4b37756a39786337536447753668346948614a6939383851526436374455766d3344674e7766496239694275764e792b7969575a6363716f6d4f306161746a464b6158364b34427351746e32756e7055553257424f714d33316748737539346e506b4e537655577446776552316f3037586438636a344f6657765535524a42646b52434f434c4e6a556c6b58506e7a6a5655354e6a7036353153324c363679513070644e7457753335794f4f5035532b565a592b534e31585479737a664776422f4a55306464664a4e4c486c4e685137494b32624f75366a334a304a30765770484f386b6f6d4e496d397841556652707877783069306a7a66617a7262616a6842356437397837632f7132394265686f577a726f7651564d612b706f45376b314f6f2f5648784566372f784d2f7742437273726d4f62756752496c6774765a446f3451716278582b30716556744a6f653266732f7979384230704d622f7744454d2b722f414f7438524e42624a6a5a734d766d574b55544b564376737850737465316a686a715a507766734b3532704a396e73463143666a4a792f655275396a6665494b5630464a656b4a746b35534b534e55347030513976786b6c4255496d555a747137386a316b5a6334433366462b3478427a57447a706d48314c53636966744d7a57753751585a46396d565754554c346b534e73666150665536635a356547722f414450676673506159687730677a5175694d336944774a4b774f547461792f534a6573746c50556e486a515a504f502b7750332f414b7839673338345a4d5a3756736a68614f6e43525a766732456d725234625a71466937355a6c6145504566552b785847744577736f3046396e6337374645766543396e656d35784c53347a4a33655a5774756949364464583038394a586d70326e705a396869765031495a47335a695a5a4661736c45636354303678356f77787a7259754654522b5a4e6632622f702b7a51625748783554654936635275743476365252526f62354668767630547379335a5557347947366f365a71714a786a743766434d336463654d6355727575484c56314c6b4b4f354a4a34415a7a615a7845794c44302f545766584c697768416b545142783278494376482b4a564c48556533564646485a664f3739396f6c72704578523154767179754150597868774a644a347058466f66764f314b59466f777a723156396c796f476936577648796a6a304d786d6659457350385438674a36384c33664437355a43577a743776366a4f497a5041425938436a56747a6d2f77415145386c475976366b5676473743614d326f73336e6a6a63324758542f414979366979716572337053587852686679447469794b5576366b656e722b3346346e4576304a38473870306c6f584e354841374950786d715869504949644c476c646f37466a7346632f4a714e50733472632f6b34685366334846543334684e66384158427257694c336a766b6447626166465a6e4e7a5173486a73316d6e4238557a6c73417057545a72657435526f2f4b7174623670657034736a72436d6d3959752b4a6642537a446d37587277464165514765797236374a5975566258646a4e3064505457686c33624c6d542b506a724847566158356a5a537559716a716c664d302f595330416f31665531694d526761326258695542354f7271354d57657a743264426c56445a56716b2b314f6a552b646f746c495772733071536e79334b6a37317764696d3933786e525652493252774e2f75582b6e65626d3666703135504c424b7976785865335a6a3258466f574e2f673946766a6f49626e7a344f4d774d33344e596e4c6c476352366d656c2f734a564a63724873304c627430654f527070347a497a506773566f2b5077704e314772634772725a6c576769486a61506f6145326a44444c2b3538447270666244306a706e4d584c645a49394c356b4f3045693878787336583630766a2b3633766b6338476a6b2f78576a4e79462f6649504a64664862697978386d6834324d65327558524d6a744b6d67627669372f414a542f414c61476a66354e76386538456b79505470766d61745079612b614c796679396255544b6f54514576315a5a336f613457585766525a43786b644a566839694d62493658722b7531756c496d5a7a7478362b6f306c386c703861577365517066666e7a797546357430564257634667626e7738744a637679324c4757665359302b6d756b622b2f74307747706f4a30454b516c6c513036444b2b4455707631426372336c7a53533668664b4a35724a6b67663841482f585a38795457464854464a556674587a5438514375676d69596d49584d326d69644548337a3644454b704134716c63356d50436b6e56554151325745784c4334756e355030735255617843302f5244784f62593377386b746a393061716248654d59376165456d79766775652f506d6d35385a7075614f784b45715a654f4948644c7674742b4873333954656557612b4544734236596568324a785665766f4a505855656b39386646595152734845756c6c70546f616c733038354a30323668517a4b6d493231307563644d636254584f74584c62556e70504849744b6a304469577758307a794a706130615761484a4633356366494e6b5132616b38483737584163624931784e424644654e766e2b77304a35767453563378345342492b692b526c682f463638666967674d3676692b5869326a525a6659754451724c56625045364768592b54436755576c563259456e3745677568594e744578505351507138417a56584b303738374b6e35524871616d7472785971586e6e62635a6b724a6b69386b30566b3165656a784765644e44546644493265442f414667316e2f4839534f767639726e794c30362f476a7754316539646f7641482b6f587172357635756a3032394f3463322b664a43667853504b324e6e79526d72512f534a475442526f776a7061476a326369426366565568484d6e6a712b585869313756707632313758722b6f365236487139367065712b6e4e337a6679655854526f7a73486e6876682f2f70766a474a32505768303435354c36593174314b6a675a43552f4b6565316954396c4b682b4b5966367769496a70417333416a725135314a51536d7a4d664b69434a4a2f61504f6d7975696a74464d4d5877662b51574a2f6c506968424649554d417a50716b715a4d42534c4b6871324b664a565030303075743045636e35716c497846754a715a54617256787364544b48324d387338693750316f4b63546a5439624c4e514e55646558622b5547394c547a35342f7466536d485651762f414d657359712f4f6c7169505473576476367a71562f5832506c307035536238303668306532502b4e6e4567734532465a376d39796774657179594a7163325a456c64566569316d6468597a38367951644c525a6f72442b515975366956786f655154674f736272304959736c6a455245526942514f76456a4e4e57684c627034336462527939585a6235415471356b574c7a626861705955652b6d3667614b4c464c6f444e5035423251486e5a306f6d2b7a49314b39596f69374576714c6b6d4f67756430524a34534942374c535131565a46514f4669386b7249386d6e6776574b5242562f737a616e53562b2f545437787a7738302f4b3450786a2f47543873632f772f793276753335442f46592f68383278546b4f6e38643868387839766a3267534651376932357453382b72647062506e75706478526f4f354b585475544276476e4770656d616a79636555542b4e5a57466e636b315a504b664932374e576e6f3067692f6b7630417a69346d756b375a7835384c6443793550506a562f32516d515a7442717672443645524d326e34526c344a34587165562b517835457131386b615a5861546d353176554e68457568553571496d415648376e597765632b525032666d534c6b7a674875347461753345662b683241384d30664763444f7876487376436b7235446a594e45316531347a5454717964316336365a3268656e5777534c51796572533548474e4c356e534743765a5364426e52797a4f5a6d526c2f38414f4e6d4b387478304e777358596838626d6670335a474374484d62782b7148566334572b515435326177742f6152645259464c733849474e6c704b6d5a787a46455973546a50634c46447a33776a557a755137474234332f41426551694c55552f4a79616f376e595a69525a506a2b5a41486b544f4f5839704d636f50367768636e395655436d6e4a4d6578695a36526b4a617a764257667757306a7858776452583831632f636a7a493475456430735574326c714b306148454f7374356a43305a6f74514855416571536e322f4b4249636567366a656c2b766635663448673653647664703073542f78495555794c4f765175703750754d6645576c4e636f4630553573632f57302f4c5562677050764738424e6c64474e75314932586c37732f38416a3078524830736c73527132626b63386633617134617265493861386835527769564870547270574a5a3835413269674364325a4c477445382b58642b596338767932315a4138624264485338656f31313475632f516f4b79786e4a4a4d76536d6e6a612b445137573734726d575430643777507069662b326974793454377470786d5a4770655434356a626a6d50787648734b665a712b5878342b53314c73762f6d70536e767a633274363551436942614c4b4f3170476b6f7a5a5a4d346a55737673543642394e67654a7a654d49706e3862385a70376d542b4f5a2b59632f57396f5a6e375057456d55396d75326d6e503871355a5071437232542f48493748536e376c4d587a495545644b5449695144437973724d6f3076714e6d355239724f492f4834724859722f414f44726b6a7a57537836535a2f304c413141393734365065414166454b4169334b79664a6c6b6c32446a6e496e78674c59394c564552546b4d6a6e334d355344646256782b66516e53306d54564e516c307755706e3578616f30766e574556336366483737423276462f4673334969495a354d375430457a386d517254685a394c517a726364544b394a7562505a494d367639765370424d7775536b31484d655534465562456e6a5731355034396b30654e353673734f7030624f7a4c7a7157547530636958613437684d5a533166736f6858524d51636a49674f396f756e4e4462446e6d724868456a643338636644704c386630307a386e785057386c7a4e4c314e74386779664276464c4b5966427178686f367254386f383731306c6658347a6972526c782f52674c51362f5244324753756741587279765047303776683751394b586833703534502f77434e776555707830562b583364386b666f61474156337a78552b51593638385a637475457839626c71584f356839346a355578672f34614a7734595863637a50534f7943537969444c386c4b43374a58386d5474754932515a30336a7553374b707976673772564f7a3331564f396e75306c78364c666f666163487a476e6b523254774f4e58397a6654376b656d4b637572642f69644879796d7862623756327a4a7a4b307564664d7a4a5136686a705a563462664a75716f704e52363530684f7a3970543967656e5137574a2b48312f63655462794c4a7a5964796b666756477050644f526c48455352773035727a54644278306c547669556b4b4b716c635759556b456e442f33644155395a336942325158766157335938495a6139506d616762614735396744726169553961622f6341756e6d6a55582b76704b4269725064373254635949547837506d4e377653543863765471477247713952614865583262385665716332516a395a5547666d307a67463155644561466c567865736b6a2f61542f41487879306e336f646f53334f627a4d637645626d34507052364e6233714c365a2b477138666a6f6754733748754842773955533672444c61767973366a5462745644552b59597670727367565766777868665054534b6575586e4e7252467067623158656b2f6f2b477a6e71373659654364736d6f696d593753395038367158347469596535517962785a665038417a43392f38736c674c374b4e6274476c7a4b6e747955756e7077333278326861586a6d4a34646b66756d48786a487a5a64697a4a377832643466686f5630637252546a38703975683471566574645052765852304b3545326b66696a6d2b6e5454474652524e706e714a48343736502b4d712b31312f6933684f7553615a704b696433464a4f646e5953444a455a334f4650746a686f57374d4378677a307253424d4d766c615344544d7a316b49373334792b68336d75544b767966304a3845793931477655474e703475527a4f6c69327a7664717773793947324f6a685371646c7637626d49736144686359727054494455684f2b38646d324a476e50726a2f6239394c744445386731765347693777307157447251523375302f4e635479425a50796469314f5956537756347a4c4a347a70304a576f797343554932747665766873634e3661316f6e46755963532f5854306c33765368336b654c356c6d37474270746e3645646e5831557a614d747465684e492b50544f686b635a563571597a344956744576352b6778712b7534505a30317446754e653462696568506837397a775077354a703141772f3456423647503437537376744e6e3150742f5a71557466386175563265566b71317271636b466d6233676e375a5466315330346d336d4e686e65443958346576494a655844722b37476f766f7038672b466b796f346459342b6364425a37536c5176512b4a44332f4e4d397343492b464d70344171674a2b6e50347161487135366b5a6667654267624f64506f48446c374670624771324f4f48584b36657a56476b48535a634d664d46657379524b6e796434453365476c4b456d303476715457755a6e4d443152656b6e3436596670743450344c36632b4f785a62736e7869764d5272616a5131664561744f326c2b6f423336475472344a6a725330614472446f5076466f6e4531544447716479666b344c583354613039773343384b68337349746e78565869384d4d6e4d6d5930377657783054386735484873795a587855614535454938475069356452714841464973583830665a30775a32327a4737764845663841767a666c7a35542b445070743666654d2b6a4d6c6f6572487179562f4d547966577741315976413465454d757673714c79504a7035716553506f64704c6c554447496c704f616c6f64557345365056374a70787132744e2b7a55614f66327a76786550797230395a36372f6b77306650505550313730533953764a39767a364d43386d3076476338467538476b62587572594b38304e61646c34726639645a424e504d4650736a414861612b7069327a543561313463762b34644576796939565041504366484e66794c3145386b526c5a5649746c6e6b5762504573667967597a316d3278357a6a57312b6b79396b762b707946442b744a4d704e2b46385861527730346d62634279434431446f386b395766475058386368475a6f696a7948423862395039366a57585756746d586a356e4e36725a696f45637657484a732b4c6b317231423036622f38416b564f574839646533466476674b46395141302f4d2f55476a7a61507a767950786a797a7a4a53325630654855612b66342f5a6c5353314f3868795674525563744830614b4e5962444a79514f7777654a7867356b334c52776a45567874464f366e6f5636664b385a5a644d4f78576c5739677350554c794a503841796a67523248717875646e526649767270366d53386c616f4b51766135796f4454477431743173357a6b517a5639453868302f6a6559624b3549653137485546715871793676343176537067766830785a536c624a3839544f324e4241482f36625330375a414f636d54766e7767624d656c6e35697a654e5175384e39586654627950314638545845564b396678326d39666c2b35426a7a3252346830746e4e43597947686b724163637a4b484c6d73724f65734c6a53716c744c5047743974787470366666336550536a3072385135342f347a344635446c3430506b392b317253763862546f63492b68432f4d6532796955524c556e545a5970624738574d333843536a6363332f58484f665a37576e4d32476b66724e2b542f3435657175393533366f3537504e7a3339375873794d79664e6b3134352f6c504d736c7959632f4a664f597979305561557043307141706d2f696c797a63734c6e2f583170533959725563746656616e7a507a7255663976497479664835614b376f4a436232362f744f704a6a393239637245723733544a322b7966363332486b534765304b6d416b77424f39597248647746653533707852323336466c7839364e736148546e50794370454d696668366e6b736f70376b3047786a413578764f6f2b5650782b376e44617846743976455750347034474f4d3651483571627265302b37737752447076666c4c5a4c554e5569305a61795a4f6b797a6669452b4546694b5767544b59574734496d5a6e714c676d3950765a57686d576d48666d6f6e665038756e626e743064495274316c784650526753746551395a4b583247642b4e4c7670684f66457541307a77506e6a2f70586d2f4c7154573831744c4c423679444d4374534b3878663133467439387248504c6f3051715851342b3141784973646a72617433737042744e5a7445645178353664426e4f6e6a4f654b645a354231546f6930716c79617a6c564a77757750614678646457764a6e6f62597564314b6b4145362b3849794f766b784d543041536230364e753152786336643858613969644c59677a4a49536e52445154724c77744953424c6c66795565673334503841476161336e774f346c6a426a5a6a476534534a507069744a424a4c6b78546244455962705a4e47706a51705755477058586a6238336276304d3832616d64727143554339486a6d2f7632614a65314d62362b4977353649654861473759707551372b646f673136736c7337305279647335585246626f7a5271542b3968596661592b436a69426e73536b754653444a7271327430376477505a6634312b6e5364576653376f3044506b746d37572f663031362b4a637445632b5a50707835336333744f68476443644a4e72657a665451794130385433342f636d50657a6a474f417463664150476f49387a735254584f706a59754e71775a73766b3867566f4d72696c6a3034686d4369656644736c36504a5a2f6531796d676c4b6166682b534e312f772f61524a6f66543250626a326272315a374732383064594d7a5356714d715551795a6161726d33347577664c4e515a2f6f2f596b2b6161646f3069452f7741763658656d4a76506441725431742f484f725938576c7677394b5a746959646e53706b6b796b47577076434353727a32314a324356596d7063377952587a716a656c337833555367756d6c5536643973786e6f4f58656b6e617a74425575316b4241395a4a57554e45697631323564582b75657268725a32566276685749722f514c66384157487665734250415070727437756f6b4f57347054525a4272693875467864746c5a696b4865356151564a586f2f48524b513939714f6b66362f776f396a766e617568516853307a306e75467a6574486b766e6e6d6d583470357a356e486c5a655a715947544a3431743565574f464a546e2b4c49757a5671546e515a363136444f58516c54386e412f344c334e5853784a2f75694b5245544552774647376d67752b2f52325634303259543354542f4142654c5178352b4e58394b524f564a66504e5754757a6c586f5372702f596974526c5a5a31494c483635426576665766586b4f6b763466666d465036666f68394a2f57474b376638496a3030365069757464627a7568343770707559637244314e65636b775468485651366378393472493231334c637453702f36353954547a7a56375136755a767239364f317761566a66546e5573624e79544e7a7458663569624756612b37426c3679356d594c2b53797966567a53567a32714e3971674279347972645143734e747536777348482f4a6a3065746f32556e3462716f377931314b5573566178646a2b6e68795a3333386c6a7132314631643039724f31666f352f7667364d3547664e664c585a506a41622b52666b2f77434b4c776e38385a3950734f706d4a7163626a366464456d5a5264342f6c32354c4e70576d555574355664466679485752722b5a6163644e6c36624a434f696c476e5066623139674e3866396556656636473647626977655063794e4b4458574b3766337130365235355946514d6f3869642b3170566e364572554f436a357151372f77426771584b4e4d387a54455a7a786762562b417961656a44466a5736717a7a64504f71584a79547347626666737a30314a6d752f6b6661776330672f6b34324e654b42413364544d6136596162442f724f63636641625a654264376a596b586a73773252365552365a4b587330393573353648364b596b302f58314d4e6136696d5a7034374f6f464e4c5a6566622f5376395163504f325974466874486d41736c34767764666e464c3877714a392b5848645666384153535a2b52525346556961586e6675557149542b646b3435702b366e37613565305a69622b6637583050477a505172746b306448627448416f7156622f4734463054666c557a546f6c536f30796856644877325446786379744c36373133702b766459484f487a4437724d5646343545645458306871564c5772547a7a6f5054707a314c7a4d64477750565732667956673957342f6b54374d6f7963644339497a58724862743876374453327a5756346836705a374f4d6d6938666250584156304439566a5657614656436c756d6c796241372f4142344f7a383373697854532b775033704b6d596170794c586a4e506c493245394f2f4d59666976697671645a4878395063322b7a477234683143725476774c5561756a6f4d613779716366716c386568555030346436696270395035414f6b786d4d44652f7862795233386c6e6552576174715a334f7835614a486c673972414c726d443773376d76594a5974456d54564830786d6a5363736437356b7a4359564b6f786d4a696364343245385a38707a4d436d44454273623053545a396c5639724676445468305179637a5372734e5078745a396958554930437358565441416a384c5a715538437378457869524c5138767370687849364e505731633736376f3574615a737933752b39437a733957696d76513538615a6b364770562b6d4654372f7039702b645075734630686862704458586e7667716137593339647469362f754670646f3269794d76524b47304270474a65784448523770464d6f6b537855596b566e485070442b67726262386a38656e306c336144713969646c302b55493579473351552f49653968573539572f44786b792f6a53362b74784f61414f35536d5a544f77706a61384e4650566e7872786a314c79747a456c38486a334e6659306f485a2f32733632484f7854524f76435252706556654e335730617936336267725251344b584f3635507a556f506e435057737a586a753965753463332f41437a304439564d726c394766346f576e6a62506b575a7a4e5042546f62756b7456636a546779614d4f66356e59656c55663841695642485362465a495538553639692f756445616c50783547766b336a4f2f313342386d7874574f32444b73563772734a58693235484f5539586a685a4e534e4663306f3054555a39445a7631484e393963794857464d35707a4b746d4a36546b5635356a76384170507159522b41666c4634335537304b3875387362702b502b70694c7463664a50536e623073797a55356448386e6976506f4d30614e54494c6b624d38524c6a6c534a6e396b3774464d78573264326e3276772b4932422f4133305039442f783739612f4e495054763870764650574c7844314879527a4d5477444e424f62356a7044334a2f38414963646e6b4f457564764e56624d2f4b68343075646d5362624361394c5a7673782f315456766139656254323752364d2f456d3172774d674c614b4d303957344a3651746e304a5a4a62355a636644726664476d6a344f31645843366370394876596574306c6a4b4e716245746d346874426836577075357a617165637a2b723770734871543770516f6e35446f49597a3775624978503877763637484d575a50722f63487346564a2b394b585479466a4971572f41434f4e712f494c335646584374364b31754f694873645338576936577a337837517832654e674269456847442f38312f36614b42792b4c6e2f342f774451727a7a2f414d4b3535314a62346e3858543775553035516f3867667a4f30453131467161733267576d6a507341697a744b4f6f70753859547a73436b34432b73353037744d34694c6442784f38682f4b654c38642f5648563948626648764d4e2f56777443764a697a4d72786a57312b54303632626a3379305a4e65726d75546f70484e3070657948786f70454b574a734b564e5658312b694e4f313637756b6a657a774831702f4d48317138666844303539454d3378495452626c6157333669376a6648637539326a626a35644f6d6f63686439374866573050663150317a63592f5a2b6f644c524978796d756c536561332b6b626b656e667039367137667037343457337249713951736151714e582f787a4d755a446f584d5975696a527a704c64776e633971395a3150423537762b376c4b4f7468536d4964796d3161327858736971664e635a4d74364d7a517a4c3650767a305a713869724f733055365a543332497053307a717358372f34327a4e6e714a594f50736a6c7a6148764c3741707638687977386c39487648742f774130325042744878576e796652314a596b2f476d694b6a4b69702b664c4346664850545055797857577066786e6e57786d3855716773536156664b473057784764774f2b5066327a76786a324e446d6c354e442f34745974634f6a566b2b47612b6e6979375a51364e6c74764f65334c4e6d5047393277545535534978434e735471464147653276374c3339343654676278654165422b6e33342f654b3550707034646f4233302b38615057385a7a69462f47375a7163367956756c714737552f36347a7a3656576d2f3443424b6c4a34357646444d68495a544d336e646274434d7956434f397254335a2b6f786972756d374e7a396a5a6455306971304e4f5935717262726e61656b57624b536e79534e47523341616b4354524a2f7067574246706a4a54557a52793042504f7a39794e693166486c67326a63716a3065763163386953354f6f544c4d31626b54575a77542f57476b555475344c6b67537956554a38677631517a533869666a7730492b78705038666a6e4c6b7271484a676c3568355a386831705a376e4d525573452f494150536f576e384873437a2f4853746a677934796b6b67364f664b6e587761344f72707973764d72304935394270766e3065753246564a7932487946664648563778464641484b79514c495a5737546f6f51556a6f74444135592b61362f64484e304944512b304e4f765a58486d6d794757715075737a766158756961707830445944775353517276315433592f472f47764b374e4f342b726d6c4c7a42544e725930337a56364d485a65535a7564715172642f4879392b777453354b466838305777716d70782b304b4a3472475a6d593435484c66384f5037675869586e53764971635348504753734e6256484f304e584b6b6b72304d65555a5a614a62584a547752624b5648515964737a6a64663938317037514a66317666527451646855666b7a364a5a58706a70537a2b545a2b78356235754769744333584c317375724a4e71552f4f346f6c385a693679566c6d71616d64774d624f344f4a4c6e752b4f586d32586d2f7743576f35492b565a506966705a3437367756366d6e3541586e6c4d61504b66485a6d63796b396363585370484467697a49304a4c59626e51392f3750783950536b6754326b6d725a4d357652457a61617a30714e485046643331422f4e4c7a6b6369667974586958686d4e67363256722b4857614f5a7265526556624761566d704f3755427478386a4b6a4e6f52572f54613067396e324f756e646f5572637a57596a537232643168304956346234586b2b6e72664873344a4963337a445331344c503438396e4f7a6471706d56634d794d4d387a344a557234794e5a75574569716564783075656a76316a4f37484e74307a2b4562532f677a2b4e6d523464696e3546705451376d6c35542f30496a44496d4973334b536b394c507970354a7267622f4d4254565666596f4f7773732f6d36474e537870554f4c5056314a6d54713670654e6653686f69696b2b535353685a6f593247464b706b4b6e364e3254525a4e4b536c53754b3750592b6b41643042372f6b6e6a317059772b63542b63353730307a7550732f4f61456377387a6d3132315573374f756d78366c5470527a516c654d362b386f55683378485a4d4b576a314a536443597951314b47557a2b78327667536d2b34553565552b567a4b5a3663724b42765747456c48432f36394b55634a50506d2b62332b78337459446370762b546b516f306350356e706b6c69506c36344a6c61457372494f6144694369356933463133434579506c6e446b6e425241376f505669665a614f767a2f414a6131614a394c585a504a4d78485345327a766b614b3346376749716c54443054636b6742524c50697668414933524a506243464f6f6b32395531532f4871474b6b4e437070766b3267303539626774577849527531506b3670594b724b6e367a684a34462f51513762626d585a36664650505a57463479397a455a666b70334a756771716456715a484a6148792f726b745335324f3461337446594859435061315a6e52314843637831484c503172394664623075383966366c2b4b4b44516b373133504a2f442b3530716f664c66474e784f4b576b39524f2b52587a646864383765585475567a6e58416a4e5a2b7070466231764e713438427262357a2b4b755845486a58717a3646614e476c34663530746d764a34396d654e4853316447686d3244325a4952696c73726b4d6a476876366162374861743649562f73766c4f396453657a663452754c3648562f77416a69315a444d5478374b38717a784f49387662757a54663170474e307961615572536934616f3177704676372b423332542f7743796b6e4c5a334f33434d39384338763841774465784e6e2f794c78366e5274733131315550544e515539313950564a506b31656a576e724d656438654c70636c71467a5931542b395170475a376a64586445786977312b396176784f2f454c38314d52766950354d6568766a486c6d37507a6d6246627961396671546b716357586867374838707a39594b3266612f6835652f726a464f575832666c39366a43677231314e54536e4e6262662f4142486e592f496a2f7743533635326a5a64562b4b48723665594c6870504d384839644d4d38376f485432565363334e3868795a66676f752b384c454738456c4e78316e665a31494530352b796e74397135393770385a384235317679582f747a2f6d582b462b31546c6574666f31354a6b3577564d47627a71445058354834667035442b517939735675496c656d584c366c6c4b576370355037656d3663773459756d2f727570723657724761327841303835566f477568544f52555433543862383755716a6f66386c596842395a3074444b4b52374b795659734c334d45616554467853666d6f50545a486a494a545863676d5a7939446d4f74375647544c6a487231633049316c5478696c2f4330566b745942543752555a674378582f414c4846374b6646792b763568434439562b373671314171562b6357684e7a35657a543946692f657064554d4c6e4f7137504b376e65664f482b522b336969492f682f713175584733686b464b6236564f63347147745a516c36757a4551394f4e39784f467445343361676b2b5a677259326f55396278587336726e776b73484b7254745148754e6677744f7839744638374a6d486364436f3076724f37722f414e3345684253386b537066746a446a5032597a6e53723631505a7632515648745038412f6b30486b32632f38612f572f7741585835486b32622f5056584f50483862306a624c61794f6e47546d4d717267334b6c7a35364c52376370543173436e746b7a654e39357445352b4432327362367a345648705a32626c63647968734371736a4a367a73333147547a714734746c3079373974556c485a36452f616a792f743941773530666573545131507739382b496d5a7841617a342b51377946486c61454d7031526a716c4a655273367558754d326b74733062463578784f537965676d5169545a2b734147534f6343674e663253354f6259323446612b63656b6546752b5144354e7134312b3476327164582f77435362425632723168652f4a43716845646a577777746f6f2b6273424363687a41514a354f7049442f566f7645526965734366667943792f57656e513869653576337448755a4478576e52444c786a7379794e724d6e56414a5259353268382f3279623149356f556535765374436a4d4f476165526f35675a6e6c2b5a794e6a3366784e74476f336b56564a36655a7153706654614e6a447858653130597362784e6165642f554b55416f4b5247323233674b783266535478326a516e307331507852314b376e366b3047524f7662434a6166345358444d4878304c5a436c5031315474736f5559484e524f7a723435526d35614c2b494651654861574e5857474e6f4e475a48367a447833463354306c614d2b6f4d324d4331566532706e7754734a75684d735463704e68424d6b35334c73544d576930596e67496a666c614f5a553737486934515a69323837526f35775a5132327970305577356c396238314b2b575a4b382b2b6468687a6c5535305272576162506653674c675233777a786279324e62664a66472f48487a475530515055367867393047436c656a705177444f6766482b39687a527434757556764155424f457671665a572b4a6d5936527847713371742f62572f447a31397a3672664a7652724131396452752b667946586a372f462f4c3235514d304d79456648747278646965315a5a5766596368532b565270723076754d622f6f44363936363270544f4c636f3052322f37494f5434747331614834312f6b3336312b69444a447a4b384c507a66494f373859525869376269556561356d61544d33356f5a567444344f2b3849435851564c50627a6d736531576d4d3330347349564436506633657651545161655a357a3655666b2f34314a58506b437631483854776376623867544e53636b7a5330626f6574795573545031543247504a6e48734e59662b315a552f316264375062725764503841684450552f75546576507066555a666b522b4433714e3450624a48426f6c722b6a6c56412b4f3666452b524c7271314a62506763613068477a3750365154466b55414e3678495057435875615734303149742f454e702f4250377766346a2b52366f426965764f66365137794a4a354665506570475071654e352b472b613759437472764958777a4b5a555a65346a63756b6c6f546a6a5239616d3959642f724f665a39574f7464337948526630342f4a6647386977357a386638414966546e315a304f78593930477a693665646f5865536d3963506358572f6b717167706c57364f4771756c4c67524e37383069542f7742564e4852786d6b356e4f6169384a50564c7737654b57626538666f6b74735246304b356c5a6165734f32754d5955757a316c784c49574f597842473561316f485945334f6c39354b4f753259374d696458374d396b39542f48664c4a2f6c6b524966316461334e6d5943483639334a6e333669334877566c4b74693241587362777370566151393831587672357a542b7343544470655a65505459375266574270376c4456596c72642f4a707a6e56564e3759677441665a6d6645467956716d6230464677444e6675426e7a4b6f4c44792f586a7a614b324a4c646574796145324448376d3268474f6b702f3855576a6f6351377156703551364572786578594b462f316c4879676141564f7950476f756a483965737663536d4879664b6c3338302b68467179646c586f59377a466443437a344f3357483351592f61687653424d517a706644387a6e4b364247374b6165484151487950386676777539596672306553656b48673832764f7134583378516c6a7a716d646e7369594e4f706a314c4a61303045585a50396a6a5535494f2b494f6e3177365266566a7059617a6562663267767878386e6d30482b6e6e7156356c3663554f6f756d6c66457944596d69593775772b696445764337613666756b345459676e6a78707a435533786758742f71386530616b634c567a3638687144366c6632627658764e363355394e76556e774c7a3257705173716e325a644c78717a7479716e57506d644a31314d342f4c78612f5a314254657a3750444a4c6a55722b74612b30556e68614e6f303638692f474c3873765248546d30504966512f314e486d4d31737a646e785653764b76486453646f314e6c653658435a55786250617767556450506359657a69675539524a6d30692b6c61635261425a50682f715a6a65703264583452354e50574e4d3972766d7a6234397a4761656e794259567a306a6f54756f5869706e505342795a54553541324a34354930306357645a724d63593434464c2b662b6c4d4f4a716c74354d65537a4d315251724d47484c4155314c54514a423957764e4a6c453953355a62484f5a594a4a59515644316967564f4a5872664d346d427263794c546c59756553797773336d654d72315038417544514f6f784a646558486f6c4e576b7839557166644f424137336e51756452725a5438397773564769376e637976456d4d70516e55764e48486f7a4635696e32726f3174446b2f584d466b61444b45564363697a7043594f4552317a4f446b634f6f2b655058387837577766643059633969712b726d542b6b7342667a6c3976476e70554938466454527a355630716135344e70503339596b31652b524f5a644c4e353050484b636464575a73576d71347a5470646c7056623861465439727549473133484c537444564d49522b4547683876762b616d694d63636a5a583049314d4877543175322f47504d4d72543866326f386a6d764242536a766a38787136735a64757133716e4c6e2b4f6237326b73374a79393572796d2b2b6c527a61763841564e544d316959485644433359462f44776442314e626146736e6a596f457636687556584a6c386851754e585338664f5450714155463144416e70533673366b742f58396339716438514445636c30375657366d687052716f596c43565a712f7679515842384c75705536784c31722b5336665742663649326d5239376566376e4a7963784c74587833496f6f6350386771532b7736644d46636645375771682b7a506c4a3571483256516173645335324777334d4533634437436773715433345a695a6963774b3679624f4d7a435776654774787573767a5a753045764b736c7a4f555a4b3530304c73396a7332717850435679634148744c68647733526d3050363341372f35772b393171636d30796a3475745a76775979356f667934364a723067726c6a5179376735762b5079416e7242366b6668397030526b72335a3765587a366874667555623445365073334435506c414f7a4b7879575562664d706e4f6150586658587a596c536d644e4c526c4231796776392f384171616d674a3752574936436e354e7a316477623671764a2b51624d434d39585a4e5a644e7536664754346b4b644d755454616c42667956587530447051325a30303050367665326a6a4b48636d4d64774f614f387666626e654f792f446e6f364875746672364f55384738444a53726c534d6d746448783668706f46512f4b5a70726d4e482f58726c4b69644c45526d526271634735366753644b647851596f4c726a6f66397a6647367a566c35336a56335a7072476a34536b36584773655a4854337677396e5166334b3734384a41332f78484f6463714b764f4f386d4966725a3246743676494d3433635a524a503176593647426f523958317742503841386a54476e374c4767466c4b65547672346a4f7a77444e37536e466d4f5577694654704632506f51356f32616b7474305a334f63525433554238505257536538414b563844374d6c644451725765316166587267495272656e49584a7a676e32714d7a44676978744a616267517a4d6e79734d4c737375746c6f6e45763551584f465877632f5a5743442b76537074433535625674752b634350325a74654d715378536e5a616c794b6c3262386638416a2b7a5772716b71706f634c704e426c456334304154516a3752387a5554465156366a6335737475766d47506b65304e31437173514754786e71375865576d656c6e3054352f6164436d692b3773715752717a2b72593678543379664e38626c637054773448567142484e386f5a4e595579356f50483870335a6e726e304336514a586e78716c3146424979754e5653785374497a79786b6b7130703646684f73425578425a3874534d58786a4c7077396f7156356751565a3146443647785a5873794b4a7354584855697a656c3956756f78767a69446a625442474644414e6f58702f716d4d326d4a3775676e7668587142714d79317456484e5070544f7a6a3237426241367045386556483134716132566e4766456e4c59525372584e78494f5342705451464b30317457496a4d534a6c34393552566877685675536335565137516b424c654e7a355a5467755a48575933585438376f5530646c6c59776b64436635454e364d3653373765316e475a78304536356349635574522f4772725976347443594a724558516e62644e735773584e69673965655a79755953674c6c4a5665354d35427775645641544a306f3970686c6e6f7430346e6b624a6147753566525559314c524d794e4d614a61694a74424d416153352b7567707a573861302b69432f6b6c714d484762354a35543548347034706854784d6e76667236714a39486f5657556648466d3230314439706a532f6a324e624e307538366c507354523961626b6b392b49356879793965503779763841625839446456534e5031677039542f4a347171382f557a505231462f6d636d663950546e307443692f52505247486a4f4a547a324146466178596b656578715a6e2f487658326258747832375a2f4d4f4c6e72502f77444b51665550594a4d5834736567666a50707a6d74306c3878764c5055797256387a326868314b394448576c7562687867725039385a57764472716e52784f6d4c3575754a374a30394e6659712f764c626f3868787639552f7a482f4e62386f652b557765736e7270357835566e4d4e7a2b3445577a703548686a526456446f6273474a67654a78726d64566d787a694c426554572f6376544f6b2f6c642b37756d4e505430756c656f5a6544666950354835636e473048397a6c50757653714b714c78693752703239686f4f616a6b745361754557776c4b68544d6b576e47677250694e76316d724c2b706e56694f34626c2b4c6668784e3474703346356e644c70562b35466c32646e5a5737334e73422b6f4e4d3776336f626b6249632f4f47477046616759452f547a3246396e356843663841724764544d52456477334f384a2f4433427a70343958766a4965463255304857495a6e6b6e586e6f796a4a73366d6270782f384172334b484d70735778626c69553466596d6e41693738674b626e377a2f752b343257385a3945633748304b49735053335a70644462684a4656656a465242717269312f617275566c764a53734e6a374c506170556268584e4c4d596b696e7654446c5065524d3852736c347836615349644853575945556d7568474968775236546d357436384c5551383833457638413435336c5767705768436e6f434e357a38346b414a4831436a5453627a5054674a72726543376a5a3941614d31544778312b4c612f614d764a6f6a6832395036613952322f77427a707443626d544c2f41436d6f777530726439357972474163354256482f5641635834537a4e4b52727164474b3873333457364555736330382b687233545537426a784d6370594e585076653138364c5647503841446931614863505467454b79737a2f4872654e3063774c526478664f333177302b5034644d507a36564232325756614f584b343771467259355954387161314e357a4e343461462b3444562b4e6771314d334b37635639733832706c7532566c6b7935736c4d4f717a59794e436c6663456b77314f7163556a786a554e6d63457a456d726f6a315a7a6d63593767386248496a45314b554268546166386b4837694b47614a61616779696a362f526957797737506e4855644a386b745036545a5a525358486d656a37344848582b37586b6c75782b69584358704f587a55326d5232614e2b485a6c546f6c435850312f3557726b4a636a314b4852797246615038446a634873415164536b4f763261596a644d6a536230502f474c523278307448667872782b6656754b72743931464769316274616a6f4c794f6e504f2f574b6d77727036525a534c715636536e5670506f4d6b48573139765468456a712f36582b682b424a7a4b48546a6c7271577248536d53584d794d2b6e4f714d466f5230314f63484d6d45334a4558735343672f66474f54494147526335375774504872493351386638414854773856724d2b4b794259416a51796174524b573166447a3270346d6b352f326a2f4e4f6857714f644b653837396c4c7033476a6b336636787a757447376f4232727359326239366e546469347677557264304c523049596d38723657627430593751597a7234667452706e426a6e634e705a716d43704b5a484a4a7374344373725050387733367134794455356e3271666a73316f4b5636536f386d463046736d706b734648644b55412f6a35414471546e57464c71654c6e5a2b2b6631706933347673496b712f373265366166376b43575073727252524930706139586f564d7479596b55564f4c334773714f70577a6f7a465078546e546763784f7273417a61626530544a4369436d69384a6d7a4b4f38706c393062683472344c5245703351776c586b72347a3555413448504f49714f3066704e49523753304659754e6f2b5135314561565a6d77676c536376686a6f5552306a623077696875556a4459793735413737756d6b567241706b6b48542b566a5044726b55724a356c354635427453554f6862794258554d38666646465030366e61622f6a723171302b31363761715670543879334c4262584151302f44547a672f7742544d596e48674a30586c2f324d6b452f79424b564650443864326f4b354a684d5074496c61306e55636443644a5973386a5134446a4d464f345454347570726f4571787648765038413154317a772f5433776a7a54794a2f4a796a45632b4f6d6b5750667a51714e785142443848324164396f795a79705274532b6c782f43482b61597a46613574626f4e31504476376166356d6570593475694869586a3370374b464d53507565642b5751747153736e4f6f735a456669326c3278677a56527259637674655448664167457051706e31383531394b767862766b4e7476412f375033696d4e645070657638412b52476c5832634b7a44782f3079526d354764626d4f525647797a53304e53663332546c6d357359634d5539452f59665334444843763841724f66615a6e6a53762b6f626265452f69392b462f6f745843377833306c3855386b33356e3575666e615071437857376f33302f5859715374764b766e694c5334764e462f66384153514c536e346c505550526b2f724f623674754532325449766d37317a6b6d6c354c684842446d397265415a34706c386646565566315633414b35662b6f797372484d6e45432f5a2f496133474e61356e634773306e48474f41716a62395564486459555261785276316b4d6737597635422b3930346965547676466c676a5778314c6f46436c6e796c4e48632f67414a6d6b6e4a6e5a614f345137766b3278724e35506f57547a523575665557593368746f666f386536784b76737a533157636c6e54506f4a51584830676e3937482b41557a7848384d7a57746573354546723871797063665979726466535857326a54697250546c484d4a5161487a4770742f7a786b4f6d713750484a513172514f567954535a38514443536439764e754176563952716c7176464d6d4e66632b6847642f4e2b5174537a4f7a364a616f64566a64545a303142484f3666425349664943567a2f6157487365384951374847795047526f46362b66334d50785a394a77763858382f3964737a796279647361392f4a3851384852742b663757565779456b785155366e696133497177364e4a4c464a36316f6b5a2f516e7534537037324c32706f33747a5258714e49502f414d704c2b53507172745a696678482f4141503952665056365178704c314b39614e5a336a2f6a64746d6c4e59484e6143504e3548506b7a757a556967617a48356a4835502b762b2b2f4d65767561566a39707256726e345947512f6a66384133592f794a48505836752f6b7a366366693934337050377170385139477375636465672b366b566a4d367a79614c646d476859346b4b4c4b362b645439633444556f45734c764b572f77426e302b7a703231506d4c67394e2f7743787436454c386e643667657369765654386766554452314e6c444b6655377958797579317a717465653655657955564c4b784d4d746a69364a53674e4a6775764f7068644330714b7a375665496d4b3472587948557a306b2f426a3066394d66725465452b47654c65454b663833365268594d30466a72497379706873304b565230685a65474b6d644c72686c553053312f64326151366c42507a32316232363233667a463978656775543964397774716c2b752f57706254574c632b70437264537a7674717949556f4a63764d6c4e68437746754a6f5a707070436959334d436d2b664342624d666a766a65537838664d6e4230584c7152482f4a384b6d69306b6b4766626f30445350384168565a4e754c582b336f636c62754f51767152624d3068726d6647526970576a6f6956325a6c684b7a6156333279334c7465724f346a55453741794674736e7049517a30776d32526a70594141417539717663615678303867434a456b4752544d4c67716c744339576f497a333071564a486648435776795656314246567a37557166395a2f4253656172677553587867495633672b443650694f776a7a48772f774167767a39566c394766525038412b6f626f4a4f794e6c666b4f666c513761364f357679373374524e2f71452b64706d51613154494f5a326b33696545786753727933786246386d323457656f65307a795963362f6a516a386d5932762f414d653764596a716a7766483861456c652f716375486f70346a68745a534c48552f574b5a50384156596e45387648494f36434f47567971496f4368355a327a6839504f6a57746466527a6f364c617135544747495a374b4f4748506a704b6748634e4b704164504a554675585a2f47507949576331546e706f4b373546784e79467070745a55743749547361793968584c4e48416d4e4c544379745a752b333161457a31347a336a48566864626f7731637272752b36685979356b4c6755674948324a764e337465756d667942444358597062545142725744556b7431446d786a416458543669796f6b375737536e376f31354f6f757961563777526f635a6f52496762657833546c5871564f45794a61557037474170463948473073416a4d674d2f50665767655435346d584f4f664c7a6d652f4630324c70516769646e744c55536f59317261436b4838484e55304d6f426f414577434b754279794b333772655731486f7a64424c716c4c6571736f33642b516c4c622f4c554b3042314a752f444d3174426e4e4f50793953355a6738656d57766c4d7a7a464175694a305663434a43747242544a556163697573735035724b4e523265504f47745948387771585431786d53416132356b455658313138445364553637476336665236734346634c486e6e4565596b75533677504c4a624d53707a6143653075555a715579622b70695a696377476a73394c6263554e4f6468423266527179596532774e377061642b70474f664544636c33657368516e5839714236524a4e6b7070415a6b2f7346774a414f52655967625976652f523653566153464d306d7a306537584e463431764869556b576264714b456e3962306e6637464e3450457a67444c2b446d676976685a396273636479365167686c654b496c4471434d4f61464d39537878353553424976596f78494f41426c54567a6763704247615766495a6e787a2b4f746c79656c536c72786b434352656a4e6e732b584878447a334c5536673642307057436b3269776a66576a6957417a2b6e587a41686b7363715753694e5538304c4d307a6c3865306548476a4f362f515a4a42335174593839357a3031445037454d4d414c32416677387059762b6752386456473934524b63527a6653643332385a57435754624455365879476e4e776566564a6f6c4d7a736b3638345144336d62487a6645304167506d586e754234334b7a6632742f4e6c797a705371422b7a394a2f37667871386e566d356a684833374e524c6e782b49424a2f4c4f6b316b415567476f376c6f6962634947696e71702b54766a58476556352b5872516273685a44536d682b6939576155326a5172464b752f664f696d72486e37384d394d356837544a6d6c5477516642314e416231704f496a75486c472f764e4a302f57336138632f495463322f472f48732f784878504e395073334a2f6c5630375770734e364e756a342f4a2f4b4d537565644c4c366a65337644542b2f6b416a4e6b68676e76396d78574e6b5432686c2f5a4d394e2f5354795550555479727a6a78547837797a31457a64444756696f335654615a5a65547a497554614f5269632f51522f4f4e45464956746a616c787044736f584b2b34794a3756613054574974747150514635584e546434337a46697747756d7466486e5a3063486a5358595763717536473341434273756b706d66555136516d76754f35335872306b73534538737a456f3436356d303248422f38414b4c304133764239476a796f3539796365312f646b4d6b614a62756868687234713948555630754d48572b625163756464354b3539646d55354a77715838695864656e715250587049354136552b6a3435363350577a3530706f3853704d4a43427142656e536d7654326d47556974544f6c4e33324f4a34376c4848664d4e6e7450334b397652793270345a2f6b4c4a4c747a646f385a544d4f384d6c2b6d2b584e33436935447079736c2b67576a6d70714871632b55594368466334415166575452774a4f4b5a4d546d65475248362f4850497151582f4144334a6f6a304a664a4f3055636468366272364f575657746a66465264776d4532694f6c585150346f2f642f6b557a6f78583747593859416a754e4a7257466e49692b6e396b374c63772b6551584c6b30515643367438557a6458444c3457653736363243524c507633446c705574786d3555673766344c3434764d78494b7344726b734e64682f77416b6363557043484331645a7a61614a35437a3264577a50574b5676456e49706f7149487a4e4f6864596d637a474f45434a4e394776417a62665644547146784f7042506a6a45636d6b476c784a4f566d56747a387571636c79755979566947383970645744316f6f585a384d54394e397645436a394463346330744e2b6e735046614c6f2b30545a62422f5a4c627054714f6978367a58395433436e326b79704c506a736f4e6b6a766839376d2b33694838506f35696a586e666156645a49484f664a6c5a645554716a726c66502f79744b7170444c374575654b71706162703649513933474f37514333485558677a776d6245767a426b7a3862782b6c32526d59743063776833756a5a6d7a56305478736e6256316b4b584443587a74426c5239464b76655a75706c517973576965676e5742687a5a6e5945424a6e5332654d554f30335076412b694f6546613056565538386957445072685a51357232396c6d53677a3754533376464d3974653335594278666a554675766c397862337746757a4b666c716775737a576c74386d6b6d3632576a517751616c4e6d61764e364a41366632716d3971613347382f61393535422f6b656864654a626d4b586c3432674c616171644f7a79414e6d61754b4f75332b4d7057635862425a45794e732b626135504239737937376d6d43336e4f48617a615a6a45685850394e736f666b69524b2f5168504e527041694833783754644f3232506e455a4f62747a707175517a5031484e6e3443446556744e64536b32504250784e39764562712f68702b4c574c3635666b583664656c767155586c474236642b52616c47643574566a35666b62612b7835452b48765a39464e75357163444879394a7a736d5872757a4c45433367365031424c2b7339585532557461766148756b394f764566545657443464682b44354f623439344e345a684e772f42494d2f4b55727871544d70676c577a623151696a52522f4a64646c36534639377a35544b6d6e34684b634f6b7a797254624d7a5061462f3673665a5a757670712b53312b68466451594e356c617a5034364f6564484b4a73622f52597671612f2f69743538772f4d43334b344b656d4544556231763951697766446462796a646a6f584969584a6e3864794d2f50736f527037327736474c4e776f6f6b752b7a714559742b4e703957325a3079622b6a45587464374c5672756e413837583575666c3734352b4f33706733315839513563627a33794c58306b65466544522f793751743878304a3666494c4e5449384e63746e7a70384838655a6f5568565143326f707634704b53736d2b595137644c546d39747363732b762f496551587943337a7a31363952392f77412b383974663554355a3548716a5858704c6f6e304d584f7071716a2b724e6e6c625179746b384b666d516f46636f64775a6c4b534466694d352f526a464978586c714c63792f52744d7646467550426b59667837504935326e6c45704e5632594d39765a3141354a61496b6d786e456e7a3373704e77386d58385a7063644a7645644f496537766a6b55524c7478534d4a4d596379764e306b79644857486b30476134382f516f6f793242502b7454516f635231673452414c413650456743567a5864783344704e2f625938365234425a36686546655038416a326c6f2b6f6d7338485753686d554e306150475047343564464866485a63366439466e785a7a4d6e71565569696439577175657454512b4535734e654e30566d5934447062366a666d6c36362b5a5a47746974766634566e444375563069736b47315844726c6c784f2b57736c734772516a2b766b747171365a636d6c43785165792b62326c6a476a534f62743447756d66722b566a69372f6339644f4c70374d79394865395575596e4f6563626342462f45535a48696e69324b78686a52396f56784b446a30677675564d7379586d754f6372346a503643375078512f464865383138347a2f41443731446c586d654c63586a30656e666a4772354248724f3769376c4d76386e62354f6d523348463971366f703131713459544b7355514c647962375361616d704552697631485a59477734635934552b6556585535767a642f696c6659342b64434252425169337376747a58474f53756564714c514b4a447277424a70696a2f726d47752f6e7441352f6a7564326b6c57647a73746a465a757966636d4e4865364f613757716777334f6e6276474a55547a5863724e495474427166685447544670745474514e4f66564431443733354e693359346d74534e6257434f717951394839526871516f7a3443736f39767872304d50514e76484c4f4769527a67544963777061765774656b52336a7a7a2f6d443531783156486a6f30634f2f79367538354752325a43364d58783161493349684275636b4163753562716e65336c526b5831683538546970546533733034347a35446d6a6e2b4a3637356a6f72626f72696d537952376c455363396a654c756559306b687765356873574a6779622f6e3558456b50397a50622f57307a476378474244647a44626a33534d304d7838716e4132774b7a6d6545724d6b6e78674475434a4f4566327368373151714c2f6939644a47536d415961566e4e6558724142634d5a472f64464956457a332f62416b676d694a34305430784431504b46385a51345a32634c344f414a3973442f32754d514765466f3867716d667156326e7757423068474f6b76724373525458314c6c386170696c4e4a69376c6b42664c3333675877715638337444714c426e4741576e314370587546376d74396b622b3871355637335571435a536c744f78334a5359516c78587357586665762f503242774e726653503863764c764a6f6b3677776c4a396e516b795a6830696b675a78465862516d5a51357854477934646250756d2f314e655a2f774341722b5550596c76507158726b62382b6d66347461424e674c4876796454466e687a396564476c4f32536432634d50384149386e3075315a64553333686e2f58584645444f70396a716c67326851547a5957766d4f504342747034332b50336a3369554a6e4666526f2b5164474246384e486a646a42386531594d47722f4f733352716f4879715166475766757676302b726f386b53306764444d6152724e356e6a505a477757623446337832764848772f4f6b727662546f5061717a4c52464e695454586678792f647331354b2f62516c7736453952646f396b663855326e36786f2b61414b52654a34576a68496d7564364f71314937475a73657346756a446c4736797a32364f6d476a492b37794450505837474b572b51566a37593239706e4136484a32326744466536486a61526159364330387630417176356e55562b52333636375258322f774157565757536b54303855716c36794661326777496c7443576639546d55796f4470306e462b30395451614c7a6a6850414f4f2b4235394f7654506c316e6c557651706f464834745a633737576472507a366e5a3673656446364351795051532f4f4e50582f4150666a365955514b6e706f67647776784a6e646865442b47595774664d7a555a6d754e48632f5572436e56456147625539455135784d6376514f31637339416951415a707254504d722f4f634f6655343776585162463674326c6f6f7244344b59622f4149702f6a3034716d6c58427970554e44355034424e6c426a6d3053335649495545644a66444d6c33734c7068534544302f484577363144394e586376596a37465648644b6a6c39483379676c7631752f76676e316f75307270314b456b65786273714c687955782f594664643966455166652f6773704b383552366b4572574633506b30646d667353426d7a382f61484f5a72554c5a335047784f6c2b766b494b3163667170417a644c2f414e4f53597a336a7a792f335650497a7279754d4b4d305976664949587074356d61614330444e2b774770584c566a6665374c724d304d35303070614a485949556c477562326e777a362f5a6f6e507231334452627862786a553866774d477a5932494a6b5437584c70664961573556656652566f49704451324e413679616c67704a6d62376e47594d506b62334e414a714d36424f32596d5a784965633861344868336d6672423570346c6a3546636e6a336b477a3467554e736552547a3675524c4c483558724b514b50755a3964776c664b2b785143354e6a415368736e37344d626f3431697734612b58553632393556706551374655656a5a7036636d3356746e337675475058397942667a6854306647744573362b4a714a4356385a4e3775633974414c543069416b3258744e7843797343346250342b59482f71726a314638776b747451726d573556792f596859644a792f6d63494f43644b304744426b475253534538637a4f6b6649626246697a4f6335614c593561483132657755685059664a312f6f61756d59394433664d4e50784164743976454a787871324c31517a324d2f374e434552546f7445363276797749686e664a535854645178793067426346584f456c354344456e32683863617a356a714a2b4f6e7047393258695355354c6374644671783254504d37554d39456a727139487665773753654c534338745a30304a65355831357668343654326d71624b383977365a654d6543655534303256527930426d54515361466135556f644679334a364b2b5a43464f4744516f6a4c36377550487650676f6d516d5434412f5132597a61767a45365a6a3732426e53342f585a3263694e4f636d77394d6238746e73686f6471315233564a5877763554766c4f5872306971597068553661687a5135376b3054306e4535745044794550305948326e566d43697a58444b717157676a79716e53512f72577a6649616d75303944516174634e6372506f47637661426377315061446855344f3372474977493135756144546d323556755870555a6d64545772464c4a31475a726472516c6f794a586f73336a766e6c486d62682f4f7455777a485247632f756e6d712f546d7a4853496e6a4932622f4141336270302b552b5665505658554f7a4a2b5a576c5044586968646d7432583665684a716841643231597165722b6138674c7454666a706d346d416e49454c724863376c726349794f795869744b667249386847652f787a547739536649477a62666c30587630564d593132653669754d6e5269464473576853757949562f70616f45756f714a5465586f4c66446d317a507765573556577557745748617176714857556261394d6731525650616f6a58384b6c2f42467a347069644e4d4c4464316f434377744846637255614e4a75484e6e697a4a3775736b6f795a636e4f6e547232534f326475666f7334754536474f2f534f47504866516f6b4d476b783143414b626a6e717a3454566c7939756932712b6369636279794b4b4b346f5141664a4c713959794557345973584d3545706944703079416d5a6158794c725473774b48387676736c4c54474b53617a4d304f356b794d654b436e6e75306f57305253513665772b4d7561692f626f5a38394c6d644367553030795447774a6e454e685757674d326a423176417a612b545246633346674b6770636579584e46704d43585531476479566d53724b484f6b5442596e6d50516d6e4f2b705632696b4e4766794738727a2f48382f796e594a4355312b4d3578532b52346d6a7051545a2f635454666e39624b37546d3472756f6d6a4a646c7a4d73554c31554a70624d5836447378487470356d4d44794f666c6e2b52312f354862574634786b5a744f4a3456343575366d6763746835396568722b55554378442f4a685a496e7035385049493459314b6e44324e356d384659642b454f7039445470576b5a6a744456397669304b3657756f3649554e3938365536637253724769314e5435334a597177754f6e344b53553739645853517a46374a444d522b7a664d2b4d6a5a4c786a7830736e6e7547544a354d6a546a735853555769746f546f6a474a584f3673635041545943526e636f44494a484a306744356770503230514c324b30547a746a55714f4770306c466e5949504a6d3273727a306345742b712b4f306b2f4b794d645347426b7a6159544a535567535345695459774d2f4861355679466f30356443643779485430346a624e6b484a61324e656839574c787479776f494347644d636a437666552b6d6b444e4d69672b7338335676325a466b6a7048354146706f5a633137626d45677979326c6d32726271383050484a624f774d625471537a35624e6153456948346d6d4579566865436f68666c7872506d49353564626b5a5067586c5673752f7165505136576235456d4c366a5171353266587a4a644a506a30756f76393959744f686e6f6a46523030684e38546f3666686f706f35504e4f314137492f322f5047374c5078503947664a477936796f4c4d6d71497770596b37717456766c465770715261317444506a32764732564c576c714c4f2b394a654e72645136576b4b6a587a366b2f744c514e775050704e694743656a5930382b4a6135766b6d703061713373524a547430665353323464596f614853724b57707a782b656b463552316446616e663661526a48446f4f524872483558416671786d2b4c4a354e52466371796e566d79632b66796e78366a3535325a73513646307a506c4f4f4f58507a583847704858474c6c58647036633038706446596e6245694734766c4633584c6363756461696347524b6f54722b51577438564e2b30557350386d7071546b2f6b354c4759764b465050384158434d456e4e38644c6e52794a547061326e446a7271597156464c61565755304b6d6a717a386d42702b4d7675594473496c746e436c61374f7972573578556a474f763833766d5758394248707647637873463064646b4532585a4e397143727878497a7a7a36476f7a535166324b74534d32555468643752766d3554624d6b492b7553546764497449664e67585a4c3639414b7342516437314d5948504873307a374e476a3874646c4766486d6e526c324435427353387536354b7757435756703755335263384855563174356e483057372f41466c7567714a616665344350507a70614f5530535a2f564f68456d52654c6a5937512b6672364c7a2b655a6f4f6239386b6e4f4774766b32787063506d5a6b5559363942475161495962516d70485778793075376b6838752b75316c6d3449335a5a38533264504434627064416b30644f566d314f7a413953763439656e2b46347a366465432b465a6b566d6a394c4e6d385035496f36705348486d6d3867704c6d6d5463316e78314d48366665502b576f57696c4c676e4c6b30795036383238327461306a667277724e315a7a68586c4a6435437a74756d376371445730465a5768644c616e4e30732b62445444587948536f686c722f534f4d4e4a557a5355333048534c43666d4a44735a71367375696a6d4c6d6a4f7a4a566e62456e51717a74645347323767756d72684e656b6d695563386339576959466f324679566b6b637236557a7053486e372f757633636c70385475314939314d7364506b766b7444763561594a632f786d64466c52636e342f535335304b7461374c5a384672432b736b4764644d3441524e4c31657a394f5871504c49327136736d5630647074463775777a77615766503249346f45315a383955634e77752b5371565038663153322f5a59356b613147676544395a336348477178654e74356c706f4e7a61395364746e52373265714a343057646f6259303355545a4e5367754c764455776d516c2f725762686d352b67334a39542f4d366654624b305a764741642f4c747856593848386645334e37343770495a4b4f6e704e316538655450494968476968696e5567784b776d706b6637506632504f735a343234693376774d394e504d7657476a473833316655432f486d776461695a32685a6f3753725a5a702f2b6a32306830666a44336375754950322b35765654473844435974464956787257725868466344766e6766695a3666352f6a6b584e4c797231486f76646233373947543542745a6b564565476d3672526f33546a47366b38767578514c5646796433593663326b442f695a6d4d2b626b6e55746e73316e4949355834652b45766a48475a746556654e554669555a666a504c764d7544675563726a2b656e4c5950645a484a5162595330734a696d4b4a6530386b70465967705666665431343547304f422b452f705a534d5063562f6b6264724c674955366d68356c58325361634e4b48787561746d65765363756965597031696848324270706a5457582b384866546d724f726678454939565078543868774d70566e68507137353552715a6d32366575507953576a5766304e7655732f363176613638344e4478646a43304c4c4975394159696430586d4247332b725631597431725561782b706a2f4c505362333750725a34697a7958787247686974312f5050464d2f5770586c6d742b50727a546554654a574a62797a484b69654f6867522f4e554833334d62483179612b2f3161754c5a696c68715a2b5633703936652b756e70466f6c6c37666a75746c335733303465336c736b304835466b624b74684e326464704f2b50782b6535586a346d36494a6d58484c4b45784b6e68446b7974644f6255743878716c36562b6b2f6e57506c5a65446a655371576f34526b7739454c6337424748545a41794861386a6e644774624c6e6648565a65494e372f774272744b324b6651616c66316531752b65416e694d507a624452703565692f5330714d2b2f48726f48786154524b70616d617462633759513351464e5833686e6832476c6d4e4a394b5a744b6164304c4a774e3573785053636a71682b422b443464346e3570366359506e72495047396e665472374d566b614e6657487a6a7a6b6447614c43385a715439785831555a306159374f7a645a616d34633172744c7268367252486d315a6d59744e5236492f4266546e61444e2b476e4f79366177493670573353346c6a43516a4f634f5653767263356338744161426c77566c3755736a386543795576686f6331664a4e2f43425376356f666b37366266674a364b4f383638686a62354e366f2b70486c325a345836562b42654b652f3841386c39547655375871736c786648457979527671304a5464562f6d55302f327a6d7157536c6d5943413230715731725245546974653135564771583547666a66366e2f6b523665654e3750355854654776373552444b377966306a7538666d38362b72357243345a6b6f6e72356c6f71684b495955792f5a4b4f71596261666c47553569645937536c36366334302f682b49634f6679422f4d4c3139384a3964504c767831394f2f452f547a6e6758684f5434783431342f3554767064705259674a385a5a6d55446c2b4d3552392f6c5851625753494c4e5a7775584a6a397236457a472f4d66565454704e61366c7259745956636a463952764e664b58656f2f6e586c3966724435446d7878325a2b7a73356e3638523857616e51552f4e7a737247667573642f4e4b6c4c506d614e66767253496361506675567072374f615247336274426e527a764a384f6c78365965375a54617043396e79544b6c724b4e2b7639656250644f71644e4c4e333473396c692f7744736158546a6977522f302f375075557a69746f3443686446586c703832366f736371706e667036705a65775371716f586e36532b35614548472f75786f56437a444f52776f4f674f2f34546347655451642f56685856327a706653717a73784f727435333878744a75412f6b3136426b4a7179736d3075466c6f6e792b74756e63354530677a47452b4f7849695132555547784d6459774942746555365447655357616d4e4c52486b7a4d4836446d4d3561576d65367669676a724c555534724737553630484f6c6159624934446d4777666432722b7252575a6e48544169705673596d2b7a4d2b505438673575766d75586e7a6378364c715748706430484844533769736d4e32624c4b766a4a71564b3739413837674344473275324659364e476e5169756d696577386d724c54646d5a357550544b5353577250304e576a437a4e534d51544b3361574a69777a58374f7a4536777742782f56437239484f73534c34595649726a564d6f5272336378794d3948317536446f34767130306341626b30446f6f4a31424f7053325931744b6565716c2f38415141585a6d6e4d62467979766456506f70596733675845486e305645555555326d4b66685443444754396e42422f582b346d5a426b777a353777576977317449314c6536494b6e352f426c6c3546644631664e766b2f556f666f36796b36776b366d6a395469482b4472304f55745531444f4545363348554b335048646a6c6c6563503157706e6e68594d557a4a367444367558547a685a6c6f70735778693170705a30414d77346f7a6d2b61694d517347627844646561742f35546446504c7a65796f2f77435257664f6a5678644f46524272386d6f4b6768793455706f5632663270396e7a4a476b6131304858644764766547736e6a336c756e79375444666a79382f5072734b4d5665364a4d77364d2b65432b7965534d6c664e6468793144514d775475436b3645724253675a30615354617465417353334933617a6b5862344c486a7568706c6369725079626f4e432f75514f686f4a6e343656632f302f59554b2b49377854524f6233306b5a4c306c5674726a2f774354312f4d45733353386d70634e463049353532686958525a7473537634643366744d6a6a324a4b61792b41744e382b786231543569635a4c6758382f7a476d38706e3750316b534b4b5479757457742f30622f742b4e7a597952566e7179757a61646977314e575861616363767570735870554a556c497541352b662f4145306c43434f4e325963497774584d6a4138544c4f333774455544667170687154734270596c2b3139484f3869714851437a353464444e514175475a545074555036446e6c5773356a486630466d79654537756a6c5453617a52565a796a78793351306472577a714f3165506243306c494772426f797443717a6a70386c434a4c46756e4d38302b706b4b464d427067534c7832504f6b30596f5635464f5572586e563249595a633755563439705647374c4e69594c4237626c32416e4e63617077576b324f396736567a48673049517463664763505030522b7957466f39696d73753562724e4b713633516c437a5277475a364f5a71313768446d7a2b365a54715a474a36354e66656d62715a68444e2f68454439476544427475757031644b642b584c726374587745464c484c4c4c446736444a353670366356306159676d6c2b4e4d324f6e6a71356f537161555a78475a34445276386a6678356a383538643164484c7776736557592b516f73792f425349312b516335644c4a4f2f4d6d72596d62575838656272524561586c2f6e6c4c726e6e2b3953357736557469597a78714f526b7276496f6e7a6a4a487968307038734c707a412b3367646f71515777444e4e315079522f436241426a42616b4330673641754d54442b756a6c6e38732f59535465627159766a66686658655849386a7635567235655434794e64396d6c34676e4a5a6e75646464493066314c4e5459544f684f6b502f693437756b624159536a52475a74783268434f4372516a443768304f7a7241744b4f6c6c4878593441443078306339724c706545583876636b516d466a684577454159544441436f4336385450586d4375507462476f74373041793731397159437a374f78332f644c6e4e4a4c66354b576b536b57487a4b5035446f343655326a4f3663357a7847386634342b71396d586f592f693237727171666e344378796e363268337947504b6b633734365a4d2f2b4f71704b575973656861365253426d744d616638654a2f366a7337317a78694f49333068767a74616d74447061664874625352557a416d7a7770424b623662585a3268475066702f4e74527363764671636e726949335a74514f56477056363538684a50452f436450797547334738667a744d2b617956323655575a4c534769792b626c57754e7859305777663861527330716d4b62577476325547464b677571476268784d78455a6b592b46346d70423674654b71326f4d396c646c564744725a326e534542307256476e343275586766574161694e626c726e4c2f61446668637a746156635535627049365a2b4e76564e6f614758354369726e6a6c302f6a3072487a6137722b54325a4663637572696d4f423931475455396a71443471645a742b6162334b5159736437634274663437425048546d624d4d334a6762524e6e587131315a515a67486c587a6f6b44794a7a74446c724b6b6c476c6c4646547a3533376b32703861557a5063764733446c376f47796d4e6f75652f707934345279545643784b594a4f4452675570706a3532434875586f4972574b2f494a394161334c4131496f324b545371656868412b6f4f2b70326a4662675261723674472f377051332b52417565565764706f6d373956504b65507a477678574b726f2b776a396363356a6458326931487553354161632b617935366c556c6f544d7053764c3054484e445638677a6a646268577364392f384164727377556a305a4e4253526f524773365938336b385a46797430756d6e336a6d78367a596e4e504c2f6b3946486b45754c6a65536f30524c46366645737444587a30544b7a722b6b6c38755758334c77537068437966373658702b645456445076535a7a6a756b5364486d734d666b6b564374444e6e6f327273364c4c6e78356d4d627146566441636b7441373268304e54614f684f7344515878775133537a314c4e44474d68375845347a3344653377665832313557467a4f54506a514f614f38527475792b3151447169756136494c6c5131314c5737782f3637675638695747587336424c544755367370725864455a78456962343070516242322f63597543426c4e643277685a56593262666f527232306147486e3361433658596e61697954792b6f4e4b714a492f746d2f4f6b4a772f77425676327046395a5738564f647946334971564f6a6b7a632f34486a4a6d55384c58306b684b76527a6f5553316269732b77695363774171633870743771334a6b705a56554835764c4e73394c616c34656a5852705070383374585047364c4a63523035796173364f67334c50656f4a556578784d49672f384161724f79303945434d6f77706a7a76317433756653565034526a62796556635444445576556d474a656f795057393947697255664652383145647931706955394e4474463377674a7436696d3232732f454b67386338353951664d52536a75626e2b4b7778554b31745765464b4935504a696f75304e66574c6d766a594d4c376d544a566e6b3257546e4a2f69306c3032667151505a4a61617848644e706b576c6c4b794a6366724e4551477965757244552b4d5359795259545135575971694f434f4536764d474c584477442b707a536b6e57595444524b45795856746e642f514b303541624b376f6d346d44744a775a714a5772762f414f33396662505845313036772b4a4371763268394c512b71314e6f6f63366c4c3552695431514845544d6442532f72442b50767058367a654f7538523836774d7a586730354c516d7a386e46797375395a6147313437666d44707038566a57624b4b37593979584e6d6f36587365735630715a37763032314c3272504b4f49627637546e6d336f643638656d2f72502b4f586e2f6a75746e2b422b5a79655a61324a35716c664e435877364c57307164452b746e4c6f61584b6358713534656e31504b35744a4e68486e485248396e732f78455870617471634c44306e654b7578355a347649656175484c7372626d6f535344376b304645786734336a755a4a74315979332f43762b4671343246527676514c7151734535456b442b436378776e7547314869576c6a7a34325768466e4f6c50565a334f693037346876692f6a6f47454d4e37464c34706159386c79304270544c6155415a7136617545784d6f7a42734234725a412f6c53364b4b356444506764626368386e5641574d6f3564715854314d3350686e6579726d64724d374e454257496e375a4f317745536e6533472f616b492b544b466764472f4c6d30475353433650543547774e6158734c732f552f7743724f7466787063467a4a306c5379345a7565774170706a3934314f7470393435312f6c483472342f6e65624939592f4534755258506e6c385a386b307063574f6e50726f444c306e547978796e6d546a3978615a5a5643774857646a6d425145324f442b53557658536d636262523146372b6a48714a7456415575374942504850632b5065656a554d345635705479353141496c7736464c6f6f317479667444444f68632f334b2b4654556c334b44724d544d546a68493641656d4e65376e2b53625136457a4558754752636458556d7045394e544d6a71777171576c625673756358373650777a4f36582b3177766f7171567a473232656b594659666b6434394d586c4d52637a6252704f4a426475305974507558485a52616f6f474e7079795347544c79695851476a396b4d6e2b632f77414c31556d4e636436543167615056654754582b6f32733965583439393355793378343177537a3539744874303436307247564b364b4c66494f4c58554b444870416f546d496b53696162503630467872384a304b613251624c4b546d485475564f693279694b5665374c4c47656c6e596c6c6468454d4e4e5879446e547a4c5032396a4e4d4477546d71655961342b523179592f6e546347644d49616647654f554d712f6b702b5a6e6b396236702b365038754f6e724e5a6e363338587262783976596b2f2b6a656b346c56797045663652786a4d6442434974456c53375973324e446d745a3558645644536f394c6d766b317171796673517a61326c376c354a646e306b7a73664c326269574738342f6c55306e6d4530446c59302b524e7a35726164792b7077554a564c6d33325a67784d5972562b4b656a552f66315a6f644478726b6856306369645166506c564d36516165424d4d6d6d3562786a48576e69334336614e4a6d6571667263796463734e6f46436a6d614474694d63746d6538416b67596e755737352f32442f384155495843726c4663725559453955664a4e725838666b3745716971795247724a445778614c6f7061485645483246302f416b6b673573306b384c6142363848426a322b453665312f4b4469615741454442706e432b5a754e66486e4972694f536868752b3837576f51306e644436394b334f4233317850367761792f6b483554346848346d7a783379704e43572b5a36756a6b4d7744726352616b563773794573795268304c59764e4859795961324569373558706a2b653430786838304e71784f63783167614a76394a76516e77664f316333473852394c635733534b377546626a65502b507a7874386c726374724750727579317331474a536c6e305a415736536862766c4e2f44634a703033586e6a4e72534a4a365865706570365148422f485a65467065496f6f626d2b5270385943645a637842706f2b766f523665746d30554f7364596e48537073744c5854485a484f734441337a39576a642f454e5466376e5871543562366c656b5871663548364761586b64576236576648744e386b6e495a37385a536447654f744f58544d6b79354f7248324866594a5767615a786c533670537739674b766f56697436786634686f522f613639612f5354306b38433374484b38583876386d3959764d4e4e7350714c357958684f3135704f6a4a7235526f35454752667a4e5a48676c666f517362397276784e4c695a556d56446c442f5732765331352f4c3849364f65622f6e54507479352b543666654a65592b652b533255486d7474387438663350442f4873644d566f346a7a2f6c2b2b534d364f307a466464774b5a597943672f6b597235707972582f41466a476a69654e39745a486f4a2f4450642f386b394d38506130716350364f314e32694c4567694b562f636b706250666c33636d663841755032353770325a364f67345161626f5065756c566f7a386572474a695041627354666546394e493331564432474652727155344a6d7a64513676686f34326f4f3179756a577a6932455132476a32676b55304a562b38684c4d496b7573555a4c5850392b693336734e6454355950714639654e2f55636e5766303644544b3479457a3930366230636e50356b6750516e356a56565752646b4873433457546d5032565449574f633461314c39784d634d4a4e544b3933654772322f47663255413334316645446b704d7863374855467866506e716d372b6e766231637975694838585033367131725432715a6a456b616574414e57697232384c3547454764556161436b50704575575a72306d79394e63566c396b665577706344536a34705a41777147752b4c39443766617a355146616c71414d5158533141794a784d62564a504f714e44327a4f524e4e4b36616147626978535570414c4a5848336a4865377076345a66356b3134522f627a565743316c474a6e36734d36394e626f64446e794837706443384e47424e4366313761417169573036464e35424a33535067454241566842727a73654d314e5a5434646f55583259534a2b546550322b51565a3772637559556a6e2b5178365361474c6a42414f62386f724b6f353550763861714d50597a35707a4f6335346a57583862704e763051395466506652587952654656343765466d7068342b736f52364d65716d6971374e38647034746a6176487873365847423859545470644f516a6e4b2b774c744c347457746f46392b6f503436354e6d3558354267446f506b73524e5a786630554e6a526f704f716b4f703863706e4e644669724c466b74537150674e6a6b4a2b416a6e6c4e56597677784d5a436e6847376b4c7a452b4a2b704c36634879465666616b58537352506c4c53646b655a526e523362783964484b44394156547944314a4a424b773747354b614b6145312b4b765150504b66546f70666943585059765462584a526c326f6c4e755676464b2f774270484f75327a3671744f3237322f496476463966334563796b4847614154574c544851526278367954584236746e4b566c616c544b725a70367331583346635a55756d73654950505a3143514558666f6574742b486f427a6839683565664a74797a776b4d6454777a50324d50794446326f382f7a507854576e66683259586d66693561755a70722f414670445643334e3234614a38646948565a2f522b7a543746426c4b5534353153644a4673346e4d636c68356f2f7a652f77446b2b507066366d7538723951667732315a664166504b4e4453322f3841356e2f4a583872385538356143536d304a636e6270302b48343370486f447264354654487a6e61615363597068424e45336270653257706d4e546d7234397738676e6e2f414b576562656a666e6d393665656565504a385438307739692f47334d76627a7159333575745053557170326e5170425a392f55446478504574517239673770385433354154364d5733567a456367724a387454536875694a39413263554465645333746c68676758645379717433426f634d6c68644e674c2f77436b364872483465474e6f2f4262364435576d394b7666467154505167657434416d755664777743376c4b3253465956533264424d776d484344334839766f6534756756444d64394d65766f46314f4b586a45712f3756504f785068346e6e624f49622f4b6146587a496f374f485569466e5843585459736a4930393461694470426f4f6750397548386c2f502f774155507a4139492f50386652594762722b5534586a586d474a73316145734733347070566a4633503241367879745364416a52786631654b4d436d48326e4d7851385479363149314e4f3864422f5453783674414a6333523679797a4c6f4b5054367148723273592f5263564e4336367074495736696b706450453558522f516376456666796d644d5566683278752f714a444a3437714c6f6e526f66784c364c43792b553579563538514f2b7656755735497a54306f2b564e7a6274433774482b6b6e54416b444e354b5454396d6f796f77376b727857797a714d7a6253514f4a6d7138574e4c704e6962566f59385a387131716c2f58527a72434c715a44556b506853755932413650782f6c396675304756593741374845325742316a494e6473384a412f4e63675a3531706c706f39792f6c362f7641396c50374f5076557a663041766e69785a6b3045316755747a56337a7669356f6a614f6a44536f6275502b706f6a522f706956376f32436f7146574a6c6d4650736b3737584f6d5a6d656f63354645325247724e525235426d417a6c4363744d76327578792f6643783165566f5668386e3866524e384e445441444565642f37674a344247346b7a6d5a6b4d6450784f547973446a72476b6b555279636c304737584533553879596c706a6f6d68537734352f7332537869306a53594279592f747162372b684f695a6a6f41576e68767a6b4d4965333761716f39574f6a5447446935796d2b5a6a2b71315643584556377a45726e34677665305453626541684969326e2b6f444261664856787a3766492f6c7278337a4b32714936706a70314f3543666e7a586165446b4f36493245374c4a704f374d3178722b795877532f4562555735757a3638514c30764874474a6646356852307075665a71645178646b77725a495250444d71566c464e316c41616a4a554d707352523272746e74443250705966394b32322f4b51437979713859795164654152725a787758327a527856546c526a365765363675665969584e63544f4a54523376514d43373050624f7239436b494c57357362654f4150566e5132716d2f646c476f47726a3066573571775336302b626a534f6c36696b483565576e344a583178722f3637756b74495a726e66476a6b795879614164334a384e706b6447454d78364b6d4f32325856746648433954576c703831657a585841316d744f57677a6a4845394c2f645439746275746e397056352f4c376a577a31642f427238612f57785978656f336f64345a35455639562f6670633858694e646c55744f586f365847756e6c3758586c314f30474a44513764533733396355354748302f71337271326a735739667948503731412f734c66695a74655561576a364f6276716c364f374355636a7a504a2f422f4e396252782f4639755a726e45364a64656b797030495236376d724675713735476d704c5456385453445750613953496e6474734b30752f42582b367436456c536e304f2f4d4c6e7178444e30613650462f586d4656714f6f61353866574b665256554d7442446e346645696e6a5063637936557553746f506b7437335174327450622f4342474a2b6258397a5830466f6a38632f4976384141487854314c7939427678316559666a2f63575a7a51376f4a653361335a4d584e71424f717746334a4a70482f6c7745693443523161754a54706146754e4e625a387862766876393533385864432b374f3953396631752f472b744c496346756636772b482b5149792b4f7a4e5437756f74463435524c2b4631534d2f7743412b4e6a4a5a4a36587a4a4d56485057665a74534d374e75702f434f6d58704e2b636e70393679534f3176456657723068382f796149313235676338327971645a396c576c52325650522b304e4e465764477155337070463330456d624165417a43684f46744b6139596d6f32586a3951716f4d396e4e4c483876572f4e50535731655a704f685a6e305a3555305938464866333838715757584c4f5476656346524f2b4971696b594e4b366265627936695459323134666e7157334a32302b4d6c5962766a7939475035644870417135746775696264554731384a4c4552596a6e2f552f33476c52636370646c5a6d317537497568486b6533786247347a36584b486b373663326258585857712b51763357796a5764594b387564697676454475395761374b676172556a4c69514b6f6d65643677376d45536b4f734d5a566f316b556c533250374c644e59794e2b375232482f41426f64396637516b43464743715a76616a672b35612f36696178505742594f4c362b30527051303773757165313377716f6d50366e4b576e79574b447134324a6f3658757539696935385a63426f664d312f51634268453134596a674d392f502f484c3158765a337a723074394e4e54616f7a2b63314c504a2f46736d6a7945535970376d72746f4f486c6b692b6c5039676574353964774770765739455664557a6573596a312f774455565a354a2b462f34732b5859314d3847617a415455347144356c3643365a34374b583965314b70376c6b7555672f6b50395179456f4157436b39493041414e74477271525051632f5056622b3042753072737139442f5676787a5557362b576d44787a7961616e4f6b6f715361546f7170386f7874496e31586533336c505279622f4d62505a4d705441346639615639706a70656f353665704839757a3830765465745a3839454e627a4c783748756230396a77625477664c6a49707447576944566c6c584b47676568775a307363745566776d587652372b2f447963643431744b32593337526f54366b346e6d32466f7650796a77727a33777a6179314d5155506c2f6965746c4970564d444f30477364534d54644c5179457563352f374b573075724d326d644a68744552505a7476445430323954637a5438773865794b394655424f3830775a704e743834386a7a366e334c7851705143364a676c75466134324b6f4876733967587537306665354970724d52452b4937412f33564d756277547a4c38592f79473859794d436f50556a427a66486437797151396472646e4a522f4337574e43797a432b71646c4b367271487979796f4a394851507048476b58454f48732f474e53732f434c46394b6650763579426554506e787a486e554c7a5a76354f6c5637705276324a3365786735715a4b71617264537969635065615a4f416d592f6c5973354854556e4563324264324e62536473666a393744744a6d69753448476248526a38536e536147735a6649686f7838634d38734a67723330563030766e47666c487974634f31354357655437712f496f2b3532704a5474332f414d57444964444f4d41595a637964357258494f59674a66376e7a5573614b694872712b6d3158546d4f6f6870574d52756b563047426d61643137646d384c5650656c4663324c527a4f7a414a694a64476a70376b45384958547a4a336f2b392b797955456d66544a7a2b48535a323331385264325834484a4e6a7355454d4f65635343794f305178363859362b666e72326a51614d2b327232304a597137516c6e53614f41464161464b426f39717076367a74504e6e7744366a457a766d2b3247664a624d674a787a433473372f6d72454b724a42522f4558653257376c6d68342b58545a5049377373713073544d412f574276743468757678374d4631334f4a6c764d59394355594a645631446e7a477442356f3656747137354e416146305742772b644155695a69444f4f4e7070714d56656b32486f727247444d2b765a396a4c466935436c313434376e7464447a50725a5a525379716374516446527474566f64424e4a436b506e544d5933337a3451423266686a6f443431503841796575662f6464587651586f357a4974705a6e6934786869557570567a697545696638414b337254706a714e726c307561515276743468485579716d524f7547335148637a5767392b31544a6d4b6f792b785063354c514f75677674654f38316b3648617a746f59703877664b464a6c37464f623765492b342f6a4771552b6b326930312f4b79396361747971696e4a705133725073567a3930644231525564754c5334622f33396a744d77494d754877757174377a7941544f394e504e4d6d70316d527371726f30333644714a6164504e6452652b7a5668544b2b504d59526c6d7976546454534246533659692b4a494f5034694f747669654578674a6553592f6b376f2b4473594e395a6361325070795a614a48547946522f45766375797942537468505a5678702f61382f376151324763533577704a7a6c64763146556147686b67757073426263484e4a6f3131306172426b536d79716a7834644c73773853365074414c534a76596c307444377a396871646136666a6442483862563174422f4d716a476b746d64554e314f37646f7a4b74757332374d5374476b6a49304749712f69626444354236517949573556492b784b53412b45443972365a6c526134575556485855755a50504a342b46494174727a6f4531756b756f34557565763361484366787a366b723162505978564b54645145397a6d636a6c46314751786d68624c72517a5741375274704c6762516c4c4a7856386f6773716f62493146333354714e546f2b4a55314e30664b412b2b2f44624a797a543266346f623648337855426e536138646961376448725852533771715872466a56635935366a59706a7950686c7a7646736f446e333635663339667759394a6f394448384c7438692f4948792f6b634d357734386b5748342f4f616854454d6d7038574f39414f374755344b4757576e3447587a5231547a6d564971765432545674786e396c5563555079562f77446c4633356c657070322b462b6833696e672f6f703431526b736e7a335930763841354e356134727253597a557a74375274696d75736f6e5a476d595554646e64545456377773486e7464303039693071386263306a6b56366a6556666b742b52327864354e36722b71667142357a64645448726a7a54386d3354536857316f58457165444e525532584e7a537935592b4743456f4e4e4b566d6c497a49476c5052455570474b31714a3134482b46766d2b36594b713864706c564a506b6c7139747a36364772777162696e434b6a4a7a6a6e65743338665052307734546666302b39364c66664c4d794a31596a7548514c306c2f742f52545350323962787550557a327a6550614b42357a4c5632734a38724c6f46476e354a5355534e4b314e54796c374833677a45342f6875477348642b4c473274335a366a644830782f4654787a786a633772444e346f32544b37487375327752457653736a596272475a4161506b4c5755616a46357530756b5446434565772b32634a334b2b79533557314a6d7565365274503472364e654454556f57764f6a526b2b4f5973576235487763746b456c36654e6e3573445943324f4f686c65776c62324462536d43523261677a6346464c68476c72544534694263506a66707a4a5076434c5a4a4e49755a397569446f73334a436a5164786d7455394734734e4b6d5734554d73303557756e636c6b3078317163435156523773356d5a6e4d697873723037664a4a6d395a4a5941614b6c727966356556644b6b566a6635426f4a62694e30747a695679746e58594b366b6d305535322f54386f4f4b68522f306d5a6d6379444d5764636c6945782b48697456565631354849503270736d42463771736d74334b46304a5443687a4d4777334b3754387254584d44574a6a6c434f4249305a7569725341614a6c68767a372f455631333655564b4b30717836746d36536c683154645748624c4b496c646f7442564c55676f42396d57466967744344506a6b6d46575a746a71334e533849614c61586849476a46586e3632726f767a724242376c756c5758782b2b757343613548374b6b566f63414e4c7647386e572b7630337579383545364d6c697871304e417a316d356a75524a47393267695576497036724a65386f5545784a4834777a6e2f4233327444586a79585358676230437165555030384f694379654a47624a7634394d66494a382f584a57684e6b6772782f50576c307673417a3679674b656441362b2f5032514d75525155545232566f3248745062785a6d795a376b744f3355376c2f77416a5470373145716135737061644b79346a4e435239714c445437364364476767697578426272514b716f666654486973723056425368654e396c52512f63314d6a4c38686a6c364647737550516c346d576c7a566f6f6a36397a774256546844566e386d2f537249386f32734c4b376732374f65684c7275364b7170715776797a2b35636d576267787a4c7357544b74433078396c427a6d34474b2b7a376b416a6254744d524f4f344176542f414d454c436d626631454d78545353523645673833786b79356371314a53525a3045376a6553313643304a36787a71525335332f4146696d4678482f414576654a69654f5a6b624d654a5a2b5a6d5a75657176517a4738303573324f3275343174356e7835434b75613038794f526b4550324a64444e6632492b464f774c4f716638706752767a744f36334469497635313676592f696a4e5a58585a2f4b716c4f354e69493037576f6f39365731436954536839786a556c7851755350776c2b6c653172442b74384a777a464a6e72774770756d3357323946653752316375546f547758684d4b4c7a6d52784c484a677571545175673668523970693138377946664439684a53514f443539515634576562414c6b54576d397a454c56786f65396b30565671596734694f67487553327a73494c5776702f44516b322b3333317a765947476e354a4d7a704a665250544647505a2b485370524e6b5462564465522b773954724e42624e61646848396d57597659592b3871532b464c51557a4c6472794769484e78354e47797657726a727258446f36747137614c43716c6a3976322b664b79343943724c574166586148467a4143517057644a4f547736384d4362346634522f6d58362f36505a6644665176657a633555732f64546638772f6966446336655872794667575131416c37367968466e6549554466624a38536c73417a536d617336756a587457472b5070622f5a71387a4e38656836352b76636e6a6354714274302f4766545356756e623935686a59527332746c632f524874416c77444157425038507972576b776844756476615934374e50384131446f4834682b4333344b656b6a6c33352f702f42356a35566d72494a37664f6434746d6c594c3035375536355937624452546e674d704d2f77426666654d396a6d4a39345647796e4364585674773362594779556e6e33676e68666a7849385278764466465579365671317759486a75566b7952643055586932693632464b55715430574a35782f584a6e63354b66624f74716a414b635a6e7a454b3276575079585a6b6a4761317961723644514e65544a753668555059722b615463746d73763841643331485a7453484b3635795866665a4d70435065586552455248434255323566354c734967586b706d4e4671344c37594c744f313261346f3563396b435a4d7676796b46586443696a7652365271372f696b586672737661723132784d376747386a386a386477756f545272585335794362534a636d2f6a4d2f6969732b6f426748334a766353556b744433664b63314a6e494c61467039705254465a74316e67474476497332536c5438334532396f4179763437517a6a5a6e5536723953336e32616b4d6254384b6f342b7834304e774b567a3261587774556165544350446e62663858336b613565727635532b6b666f75336c6e716e366a2b482b6e4f622f486842702b4e366d2f6e7a2f38416268685a7832626a654e387a53487676386658735463373030386d4948726b366361524d4c31307074324b372f5879484c507a582b3768364236436472766f72344c36716576666b72473069684869336a6438486976645369423055655531644f65786c3145576871695955744543634e67417050302f7269766576733938524e72567255667333314c2f7534666b54396d7a306c394e76544c38572f47596f69366a7944314470763831386c6f6b7041666b657847686b737a37764971554a6e49654f59637a6d52734e5a4338765932647673394d7a61317453304138722b3031366c2b7368393276796c2f4c54317a3959567a4c3756742b6e324e6f50384c385532383278493133664c466930557154472b6971723276586c745857414a4a6e414c34715a342f774152577559707031714f68336f462f62452f47663072547972776a304c38506d696a69475a3236703262736e723661346c673242414d462f4d30724d332b5047677673476e36345348424e4d4963392b4f7072337438575276743431364a515a53657a4e777a79464d524a797a50772b3575666d51424572324f306f5935467a4b5865532f707037524c4f6448764d4b454b51444d37366d55336d656e41574b6e477738636e553978324f2f645672656e4f63446375303636705a593961756e506e3469457635725753774b6d7a647643635065317875377a357144342b5343633568676979707757356e787a39444f57585a374b3533325738593355556f6c6d753751377a707263422f77416b662b347a595476364168626672684f377332776734753656717a5a3254507a6a356778706e44366d69564a455378356f4f71486776373777536d6e337664336f474143645863653473325855344b7556544970565a2f48614664777853746b525270337a33755971776b4c736455787154457a2b54355a724b532b49584172626f4d3634762f53312f725a625630496c55616939566c50313032636e495a6e6b38705a716b6a30554b53373239736166484b6d39316e39414c7238674531614f5a585334655564727a41544c6f6165634971694a61617572392b6b7957747a506d5a484d4566483939696564506a4f71497741524b3349306f7338776b346236644a736933335538306d396c42313063486144374f587a5a3671436363792b6b6c582b616166645479594b477a7872506849786d374841387057616b615358312f5831543862684b6a6d5a5259645049563036414e79616b6a4852326c532b4e2b782f4d5455664e66386f69794135314c346446515a6d612f6c312b456f48307a696f44334d7849367a51467454345234736c76326b6b446b2f71637a436e716a4f6439426e2f514e7063756875644f56755a497464347a5342424a51664a5832354d712f5a53373273483365314e453630315a674158732b77333255756344663641314e6b3547686e715a5152767162544d6f3330787173306b6f3756704852636e4e2b47785754386a68732f54514f5a6b4450593732492b59506136655177475450754f6864554c65464b79726272736d534a31646f595a7a354b6c386e3670524c54506353564f5853366b6335507a4a524d546739674f6c5a39554f51794253706937486f66766c33763930307141416a7561544c4e54764f2f7362484252396963444b64776a4d756b5655714943527855737a2f414a6446644b6b52434c6e71593350695964597a506c44526a5970504f32575452722f5a54706d446a5a776e3547413067306841715333496e5171667369644d73376e7a5777304f6444794e385361704e4a326f6735576a484f56446d42316a44704950746d68522b78674144577474663870775a4861465351307336694565706a74436d687157516d7339466730646c6f427845683538396c4d5942376a5a51505073546757504d396a364a3574566a6c6877384f6c58794a6e466e756638436374554b37756975766d534c5074674a504a6977555a7a544743666a415a334c73716c2b576a6d6f36735768637a48696a3532616e3742464b5279384a6e74685775595248355565783331725038416a6f476e726d67745072304a5932344755794d6f6153796f554e4e4e537a7a4a52665a666c54546c5153633373764b4a2f726f70724e702b316378417450444d413675396165646e4a325458524c654f5851544466375171706b4f474b4d4b7a637a6b71546f304e516b4630303835314c484b682f5130756d42766d794953492f47744f6455782f315268524e3277697a794f66374f666369664e393175627862766578732f76342f774437503148424f6b412f6f4246756f764b726666384179476538416b756d3562724e78552f65594272697a4e5932517a68524b4b5630584e2b543365773551354a5039632b72494a694a6d5967555a742b6f626e56557759456b453879506c6646645072716965712f5066646846486d593871524b48394c3173734a47726f6543786c543741654963413731703133514f52583543624f6a6d2b56423544712b332f414d5134372f6e794d5a7971683854766f2b784f774e652f6d582f6a70484a5672436f6d4b3976386238564e534b3576737a3039464969596d4f6f317358622f41434f4e597a5235545935457332746b7a7873386f705379534b5859386f696d39327254326b68706c6a4a35725443486639784c7a514c326d6d5451636e5037726e6f357335336f4a3464366a6f3033357669476435557241385a6976475a7a2f5064383570645063386e7a2f4b5a4e7977614a596d667a6b41454951396654667770772b5a464a4430657a32694c34366a6b372b5066724836702f687a366a4c3834796647573161567343374a4d727969462f6a616238696c72463161765a7445756a484c53517552332f41462f57627a3247747144554e4b2b6a55725456726933556235582f414e372f414e665844664b763038394c637566535932316c574869364d6e753147366a71714e472f3564436c64544f3572426e6576676b564b3446416c6f74537345342f34576e346f2b776a6e6d48393454315539534a4b4a6656503073384331636d6d784768442f4550757a7131414a797a7a426d614e633542525a4e70434a417776636c4d775568785175633579706a3261744f4e6235476a74586b346566656f4e2f6b5359456a6c3278545a75646c7a354d71374d7246524f756564665934306a4f3757397a6849484237617a73647a67684f6e696c663172455934654132497966462b6551787a633072656a6e335a437543316b464d692b35674e5a536d7139775378702b304e44766c35314d6630707a67513450323652534c4b37362b496e574a3456473864632f4930577438635178614e50782b635a70716173336c583856527844597857716956316b4e33554b65774f6a313350692b4a4945784e62582f44496679344c7363763458437931562b4c44723954514971545775796842564b6a624c6b676c59324d4b61665975357a395553657a78747a6b7a79786337387a2b5036656f432f4a35326f6e344f566f5566586a6948756672566930365230504755757078565472594471706554314d6f5a79656f6e54686730677a68483136717441617138663850623149544c7257376a66474334395a5a316b5966546b7a5279594132653063376f4451547066337076466152525a4f6c746b70434166316a76743468356b2b4f77314f716a6b30494d5a7052322f4872545a6d707171476b744964584e544e496f714a56697a502f6b466754677242587a41534639416b386a71467238727837736b534a4e4b584e3145446f74436e496932446c797552654d4a74784a7856715255386335756274556676676452395a6561347661394531493874767434684a506a756c6f4b5546795568382b6d63336b465056686e7845454f576e54794744554b586850514655395344676c6d36356b6f414b3759314f36363561323735514a333476365358553443717431484d4d4b716f6b5a327a702b4f7346692b5731543354487138697956314431677a365645394677484639515769434d74597a702f714a6e6a4d78774674354870316d354b336163436e63785347686d6e7457315152364e3164575a446f57564d3171665931587447664e37567756396d536f3663385931546853754f424a6c2b46322b523665567a5038557038757054547a563861676c2b7a3936546e426b77786a6a6e52354256586d734f676e66546545385948544161754a5659756461346d63644c625a48542f41504744385138576d2f78724c33504738627948796d2f6d4a75552b514c79727a6a783944506438674671426651395a55636f567255443166772f4c4a47366c796a5446783339632b70715477694f4139422f6f76364c654f656d586a48682f693242784355684a50483879555470314b4c31524c35617269315a38775a47623865664f385932387045322b33684f2b49666c4c6976615a6d30794e787375664a6b6f6c6d6f304d707038496b6d78634d30354f49794b41475264396f696c665074667064485668387630304f534239377a3561697476562f77425850477653507742586b766e32706c3565484e66584d474649686d7674316150655a6569654a6b5135712f6e30484652524f2b6b464653414237364c436e435a6a546d745a744f49484748313538367a39625238323954664c546f385477387a477a3948784b58792f586d4f76304f394f50465a7471725938756f6c6a396d645035707279324d354a584f36326d575a50493833357a352f683030696474617833663768343550587a79507a33382b665862794431487077646962307338557158347436532b4c655262485530357669575a71756c797671317879746e6d647a512b4f682f574f374237584e535649416c545239476b526f30783858784337764876514166476155444c4452677479644c2b48714761666373544a6e5a387a484931614a382b48515656703132566243374c496c66574b61397875525444526576745a744d39524a752b6b6c5868576f785a614d4d63767352715764736951697a477a636a517a65564c6638414e6f4378644d34793041446f5866734c7166684d357152544d2b4d3534357949567265455a2b586b36732b626f41717063694a4e6566517a2f6b794f553552787a7a4a372f77434e584e6d6f5a5075555a636e326854537731413775564d336b7042564d544d546d4172365336666b486f5a36312b4b6558467978694e554b493632396d702f67335262473075614737566b7448727064436633536f573446724a7466316b4c4942556f374673587265423151386a6d78764c4e572b6e4d617169652b312f4777646e766b56494f584f57457679436a37633963663171644c4c7551466476794c374c384b744c376c5650326636352b614934394a477a666a6e6f5a6b4d46766b4635387a61386e507033574e5668756c53763236734f6a324c656b6f5775747a4f3355616c484270426a416b70586f646f636779426d64727a484477472b6e6745623075696f6761553832666c4132314f5073796a6e325544466a78547a54596a614b487a334747585a79763547384c2b517354316e32553844705a43553775746e393436714b2f74476c703557707762784a5a3563324d3768506e52354d4e53757a786b6a576f313676724143625863393039435a71544a70687070366c655956486f692b5957654e6365612f6e7a6e554234394871367335704f6c725536586c51426a354d7245727555587a7a5555676167524d45784e597a53744f2b59484a6a386b2f55572f4c38554a70315a2b694b67375a7155357573446c4c533938622b35586378756f504636696f4b4c6b7547643745356f2b37763077443341665270786d5a484361695479507a2f63312f4d39715361435a687a5a4d6b5571313574552b586d78304d7934737965676e74545a4e6a7855562f756c526750452f43437a3777456e3138497848515831692f6a6276616938364a5079623239734e787035752f77415a6e43454d4e47426f78462b6d6c52336d6c5a50386c784f4d54715a4c4e4e3066702b796d6462612b386a75674662767734637a787555565462716d35735862624d797a4e7a63335264716e5a43724c7968646638743259356b384e6c567978633555796b7869624f6d3035526a336e4870774658365034466561333653756979664f3441327a5056627a6d7658316a3339696a6e6d6f7a49577432476c63746a5270575077712b794e79524f55772b7850764938785050542f77447474753277697a395066444732686379566546585963326d4d725775396c624c6f3833343079386e642b71695a4e39674b4b65544366535361375974727a4872312f556258656c7639745478334347667950613867796f5a4d362f44726e59326654376861484c706e49747a5932766368756c704e7a2f62537471467251526d6c35746b6a563853633761387a5041626f654c2b674f5a342b655454524c732b5146483966517a385472727479626532646a5939766975766c6e397a535a6438454e6b49567246344e556a7952333145704552506d55366b794e69664866524c535347784e527359336832666f4d64567157614d75443837632b727a4c3632644c735a3045365766796b3266446451726c68306f53462f3277424531624572704e383865304c736a394950456e334d5a7032303259366d3172743338667174584e70316f71617466526c7a613838564b77386e73393145696d31782f63614f56302f6a4f497a2b6f45343866394b69664b74413457444a5473707a58586470626e7270757a2f6779654b315977666d6d775842494d394b67665754772b35526c74572b5a6e6245306d38523034685648706d696c614d433033522f384163796270796234354a6d7a5a69386472766c6e78576148732f6c467132714e47556b3147347532332f4d496578514b4f643859794843504473347646657a5535754a447354363555507267306d7a56527757556158626b686f42387379614b302f473561757a66574c50303251734f6c52456e7464334e35644255766c586a6170334e46727a777261655965463550763643664b4c724f5335784a35646d5179356a484e64395379537041534f5071554a70397a6a58394e4e493369596d4d774f76336f76513350385551337542586d7861476234396c706f386848537064544a794b6a46302b3644646a58363664594c7a3648476751704276464c4965464f32686175656574666e2b6b6a62517552396e7a7247436d667636494d78676e6c785751444f78557562787173706c5259644643376d544a524e796d6e2f724a45666253503171634257586e486e734c346b64385a67332f497a51485a4f75675451386f6365526b755473495669445174654c56793644396e50523332556a474336614a36554151615672337a4130343954664f3944587764454e4c2b506c685a4645754b4534343862634b7770732b756954536671584f736f5372515a444c59306b672f6b3042324a4a333169736672455a6d493852352b2f77417a664a622f4143666577665372783534362b397130792f466e706d7a484e6e77594e466b7247376a705346573174426b716e446c41764c37504e4c323254652f4b4f5a2f5870784d6330675036582f6a3935563669626b48566d7650395038434770586c4175554a46706c4731616b59553537474374744f74786734374b48696d4f65576d414a324e48763841316b72336973635a35674e2f754c37557667503436362f6a67746f442f774174387a586a35542b6d67394454576d57636e6f35725875536946505a383852595156714273576253536a706b4f6e6c4d365047386438447a5837734c43374536546a524b646c756b564944785348684b41717a4f4a766c6c366756737a55723430334d44356a7a656530686377442f7272454b314b506b4a736d77326b314e75414561514b456e664c59684c6169625179637670702b4e7950394b3038367749506233674c34345632726e34656f4a3357636d365550632f6142723258746f75474a7979752b394353564a6f4b706773636e6e30342b745758477874454f6539492b346668714c692f464c306e312f57443177772f456f5a5676575136373969356a68576a4e6c6943634375305273716a442b485779724c48717859446568536c55764261314b77616c6f72534a3778366650535077624b7773523068617757306b334961577a46755a58325a394d70786a796d7670696c656c6d5054436c6c71307a3862514359374c5064772b64733777326e4d6933387a4a6d6972316173336457455672493236386b6b4d38336b416f376f614739715a585670714d7356304f33644b517877646f765975446741496d6b2b77314443694e44732f3575565963456e5837397352427346755a324f4b4d47474c4b4f36326979745537654648724c2b423077547270766d492f77445663587343443748694c4375783638504379787762383661504d646f417851357453427572626e556661686370316c466b4a4b362b526271614b2f72317a386b7156503841464f5a786a7567556e6434706c766779624b504731616a506b5773634c43724c6e5637554b733252636d33354e6e4a55784d74426661663161412b47612f6e376b2b50364b424f2f7650496247666962342b4f46357a354c554f5644586f3664556e7a5064304d374c4b507578373539463864466b49352b6f4f6f577371514f547367547a334a4872422b7a543350567475696364773672654b6e3863633956705076746e366d512b342f3838364c495a6d71537276616b594d767a664a566c3645765248525830727a67496956704353615135786173493070323968732b4358734265766e6f634357386d4a597665393747575957654e613962677066336e63376e466739776d353767734f2f38416f4c456c706e38643531534b2b5562585731386a70304b2f343269505538666d7873634b593776707845656157702f4738446a424144542f414e6a396355447668426279545431755a2f377a775269534751706c6f584e6f495933576a62644644327935645539656652506d6a4f3179626542797148324b56545638495571436a2f4a4e76507948584c6674377450595371534e2b7a627162376f72653054364e384c734855304a6c73783548565970455a2f78337a58424f42636b50337a6630694d3849464e62666b507a4479316a6448782f5173616e47786f50705a7768546370656f374e5454455a476c4e5255446c7a337a636e496e6438657069633568336d66395445544d3467634b66376c2f713735443474364a58747774594566792b704e6c6379374f304657477a716550772b4d626a45797452795265724f70652b51457435303253624255767152624b6c4939756a574c57346a7a7965496f72524a557531494c42616b5633736f594432644746376953303435795756446d4f2b384d774959626a6566372b79775568304f6f574c347869527375794961475452725657764e794b4555482f495761475650394c79464e415a4e7a4379353354756c344a524e7143566b442b784f6a535a744d4c677a76447541744431566456586f555078767375567843365970353479666d34554236526373577a5769486a433668786c39596939346b32546c6464396645574a666d4c71786e5959362b706f566555616a4d4f6171636f57466d677a4c47566638414939544961734859347a4c316a645574682b3141545754682f6e494839563366466a79466c53596b41535a2b596f7971796834377875576763304337546b48506e35743961636936657a2f574c47524d5037342b366b55703741662b69726d6c6d45335a39595476305a4c746944513436764c314e54374f6555556955353564586b7258585155636f394b4768792f6a37484f675a702f3341364f6d66346731372f4a39757669656e47314c334e544c566f6552764974556f6a5a704f6b37506e31525a6e4f7664564c3978667478572f4c4d66316d543166466d6d71663841664431306f696254356a30572f67544b66707a2b4e6e6f786d626d5274583031656e57445a39494559396d624e4c5a536e645548386177577536544a2f4d4f364d7232417070576173303637442b4e76443474616439375458385175623169754f6256386773757a4674646b5555614b344d6971657a5579714b4958616e573663636678705470646e7a5235326672302f4c54653736664b30384d58567032594841763145665a46367a655130333357624d7a4844506d6645704f506c515770686e6d7a79756d706f56466a39585a4f507a5275442f4f7559313367495644496662485974382f37434f4c644a506662516e506c6d2b4c476f326d564e64312b6e394c456a7144354c36632b46663841463350485163765434585130577074636b6f57782f546571677465465769327561586d70484c4b35723767796c36464e4f3171613254725477687931716374587a61697975716e6861524856565166784a6232426a717744386a624764454b49746137547a38316878352b7043766d634571574a79382f515453496c77376d4b6c5936596c76365768517a59346c3031496e7970494e6d6777504846624c707066483765616b73724a6f497172655965586d6143654e44506c707a527378364b323062786b6c435063696e78326a346c66616f2b425944764b6c36532f49765a6e352b657957435239476d374b5a6e426e4c63313944557a4b6b624c7867674e6e3065534a636f6d4e3466574f72584d5a6f61466d2f67312b4f5850794639626647397a616e61574236613244355072735576586b69343250534a32524137796557523038654f576b7a57714e4a7a414267346f542b4b786f557061316f303637653677394c566f6551394478374c3862524e4e346b4c6252794d76507973544d314c455a357736727066626f696c632b73746b4b33575454736f537832444d2f77426e773078516334497833692b4e4c7848314c6a38646c47765941653553416d72385a6b33754b38686f314964333358686d62316f7357736b34724e687336526e68475571615a506d614876384131574c525053525965526b6265646e594e327156547372794c5030632f6568524a7035726275616474304f586f36506c453775535a4a50397043566932485376356c534131456a6b7a2f307a486a4138586e3937727a377962592f4c462f6f4a6a562f724f384d38663852636355396462382f615a6f5a36647979544e73725837373030466d304d4d56487a2f644e39524b432b47787a2f4145505a61783776643332484935586a59777a4e62577866474f7a542b42366c6a4142322f5268304f7774466374424c31666a6f583176657163464a57416673507255324f3651794d4f6e52596a6a443070355067572b6e55346a515938614d373445485961474c6347654f664e5554474b4b51477076434e36523649476b496652356c746c7978624d74476d725144586a4d697161576b364765314f76556746667941424c433236516e4c5a5649326b657045444f6c4b2b4b4950515a2f61584e554870694f31794e7638613756305971707257396b753068544e50375a38535054496d7973477a5973577033756d436c4d316f394d657441346558587a6e6236396352334f7a376c623873797648353463374e586f4e3867707a4c385446795a3254706e7a3233596b315561314856714a736e2b777854732f355a305875564d61366f2b4935797857493432422f787263445155584a6b6256656e3234733747706252787a6130374355376c5547746e517a796f46435673785754697174675675683630534677557a303174586238704778755651334638504446706b744e4e4772424d334c2b315a4a426c50706c4b70614d37507073487631516f304a6c2f53524b626773675a4143564d4141565551766238783750436851716748626e784c5776314b7173366a50556a49772b48426c45712b334f4b4f7838632b7366797235496b303255726d645853366e33425132767831666a6b30576d4e495a766b35614f6931554f564f383573334c6d305068686e6e3062757075464f58473536436c593972757a54423747634d4148534f4e7548536f346c666b52343370666a3935457a7a50776a34562b50655761326a34393531347971484c6c48786a79436174785a506b733030427055794d72714b68316e534b34756d6550357a3437347136704f716b373478504859482f414b663134314869556961725068444e3167546242646e342b644d6e3663525a65542f47596338714b664b4b7230716f576b4a75384435444b78744466726439693162544d596e4741523956504d737a48572b45626f4e4478484e57623336312b5a727a3545734c586653784d66534f6547682b7069707a366b6e776561556e33767338633335516e70632b4b6270367a6e49374d6669443452692b6f766b574a35503554547a766a474e3431567465492b513350494e326a7574526971756669305252684175654c505a696733737658504b6e34516b466a5a6f33513831356e7048654e325079397931654a6549346a705a37765544476d34666b7a384457333655667772634665612f743156324a4f4363317a45686b7047474a684a746a51395a413448664947644f4d394e674d65612f697036556576506d5834312f6d4836775562586e76714c36442b41334c3848384176386b79745430396a386972477036664d746641316339644e2f6e6e316f324942764654445059355471466b616669474b366b306a5530363874624258314632315a6e6a54764b7657447a437936587875366e524d4c587256496e547a4e7831654b7a64354e70484c6e304a6a6c4c6945504177693769645a396e3466665a6e7a57765349486e4e387538573857395a5055447a4c3167796634335171386831656238466d693363566f45654e62434f55586936383272675477707131716c31433858716b493354794849503339476672693031724e41583864386538686b6872796e5461446f4e58533359384433624f626c643374684750506d3552354f6f337873474a3047624571574572687a4a4e326238546e53734d497034744d54786a7145764b72724d326b63727546464d6d44556d6a7931575a654f354f56523975656a44596a516a7958725a595768687a76636f66592b72364a7250336c4a30535634633364417033797a42556e525a704a4a584f343267576268525a316d74507479703572575558525331352f794f687a6a736f73576b4b356d384737484f55474a59416b6e537474337a675550354236632b51555775707a79666c4d74566d39716d6b66725952464438396e634f4f586434766970364b4e42773373524c49706f516661375a384c7a62394f596d4a3653414f33365234553632784a547533624d435279346975314e423875636b75575a41705950666b2b506137714c6c31696f6e55684163736e41367067396842614a6d4f6b694c393949387a5037544a6c717963763438334e304a58445174705473617a5530593642563235773152723243304f744e6a326f54474644436350734f676b326d657367666b2b4865495a766c57682f483961576b2b435a763747302b2b507a616d4a57756d37546f2f6c70337678536e6337375843636a354f3052696d512b2b366b6762706d4d5450415137623856436334363278525435373875667561552f385a4a44705a4654614d314f5044526c365475703679696a634a394571686133376870644d6c4a4c6f644f2b3369493146343178656e686c4f57315757524565684d2b67343258795571772f496c2b4f4a32724e4c35356262687067304b463153646d7a455537616d7a64307154346374766565515946676550365470367048524d34714f7861455354787a3665744252794e656663784f6f4b532b313969684e6f6d7a7630465a7954506a667265795a4464663850326b57354e34526a655734372f45572b5048354a52713471305661756e7036436254354a43552b5435466e5a6a4b4665367154517a794a585262397a356e637a526b696e632f6971544f4a7a32515839493473335538466d7a6e4b78336272633650503073324c6c5852774d6f3573334f304a69327a75507062424f6e6a736766775a77706137522f78454f79665a57367a387863766a586a486a322b58437a4a3738327648624e47766675773236767a736b6d316d532b4f38514f5850783061427a65396d354d2b6547746b32703833326a2b7731745a6e45545058416d3033343861384361383138504a2b553051797a34393258354c586e7355787a492b36716877507166782b4f69504e47324b53666933416157787555497036683062362b492f5a58707069315a59372b78326179475a36632f5267376c534875536a5864714c79372b3873795450517563537944362f774131737267307136572b354a3968636d324a694d64512f774137302b6b7875684c66705335484c372b376e2f6b4f6167516767665a544f6366582f464f6c31444f62454a4a5a30484e43707154353850536b50344557695a7744336a734f66384358575a3246354c57324851687a6f49627a38696c4c62566a7a356c5758687a314c71666f46514f506e7137526f3936316e7864564d647a577832527257322f4f525a2b4a34357a6553434c4e4e6b2b5a6c30346e504a363839396347505055385a31795234564463756b35644665706d694a4c5471514a5a5a65717771326365516a535a6d737a45546949446a58394d5047634d2b7935486a4d2f4654397839364d6e32563676773052566c4c4554744c496747664c462b68385570796c772f6935386f54506e53675758497662703179477a50544f4f335431485a632b59795a4a7058355252707347763368742b555643574d6c5530707a3236466678735a38524a4d58314f4f4d6c527455784a49764d646549455259756d74576469623972752f56694c6663375266656e4f7230506c756c3038334c5058754436746935394c694e5148752f7a717463756e6c6f6c54784d7a6670746748647230584a714b744730504a373235395347646c7a76695052356d7a5a3244546a33357142685070624e52517352774b65386d2b574d6d6c375a58436a7362353849484658383466786530505439325a367159764e4733785174575a573761785655777837673561366b6d2f443054476e502b784f6e575231645075416779674379343658476b2b6e53314974697338426f6d58706e355a4e344c6965705658682b6d723031334e4c5238577a2f4c724670737a6b65554c594f6c526d646243346954714247374c39342f4850374854664237503266743772756a64743363337a3768594f644e3476426b743036776d70646578376e7a5a2b6f654772534e734b376e3464584753694768714c594c416e506a4144724157354d364b47414359455274386f38586e6a52516e496c392f57364b72557a756d6c6e6b745548797062484972336f79784d6e57563850692b4b5531502f446c4a48676b46752f6976687638702f49483036777831387a4b6b73765a624e713755756b565470636f5637317a61466c6f4d3634516e6846796c2f722f41444f435a6a652f632b56663956314a694b326b656e62777238595054336b2f69322f35506d57655257705a574461766b4c4a3866565539544958514d53587568326d635a66714e46416c486e314e2b6442432b757471573855366c7561494634656465502b472b6b586a4d4f376a2b4d58615433715a586a46466b353265727344647a4e71366f56506f37486c7054704c7956705373302f445266536f4a6853706c5a35784e7254696235396649633250566679507a6666383577504f762f4142624e5172483876674b326669756875614d6b7365586d4f7a7270575961666d5a5a5a4c4f4443476c587564396756555346527879756d74647359473350694e6541724d6e4b424572387a52715872782f6268793778794759386d54703643733439504e70586e347268717361724f72424c4454395236614172637166754933567753326c343258525056324456354241684a6171777a676f614d524f514b512f6b6f324c596945746235673453314b63424a6346553944685a6c6262756a5031473258677a6443532b71524f4473726c397935636668315a2b6e545343514570302f2b50766c623275353856476c62637356684e4d6f48752b61776a7a566e514d765557543758574932627449565031446f324e444e524e5179342b546657666f53315a6b6f7338646c62767936582b73416f354d476c554e7a2f614a7a434776336e4f547070526f79774e4e65717a76366e374d6f6d576e45624773705371535630636d6c39624e7939515a4434415239536c45346958556d372b70726a504e30485076316b6d76747774764d6b717a4f51574a6b725854424a7077344d32552b46615a494b4e4b5a6b744378354375353870784f7a56485253535730714351454f364b3469596d52782f38414a504b2f502f52547a6a4d395150486c654c2b566165576561394d6d785057316e6a73544f33585a592b4f7830616b765754387a36503331696e71372f754e4d7a4f4f2b57634f6d4b31744578505564625078542f4a483035396466432f73654f3673756c35473778695a4e7669584e712f42767a74716f726d584974782b304d6251763775543469365276524a6c69644a77456e333830506e777653314a7849337379746a724d656a596f31576f5a47664c52745265697a526c676d524932656661716d336b4b464a6175306c6c456e30772b534459436552355754514a3568742b48506d4a623433354e484f5448515230736b3262393637636e2f6b4b732f6b72494b2f33682f77412b564d4a4c4c553544553869506e46417751463148424656656b79747137666c492b6c725a64656e4975667331394c57773532794e39614a35636e566b376e772b4d6c5245686331756c476566515673343275436d75743331676336672f6f6c5556643576355234315470755a765a4f766e38623265764f2b7a53725a7a73695a4c2f69313673664e68324f4b737a77464d7243694a4a336347596a452f774463435661785731656b354773742f71503653656c6d31423548354635566f7938324e4b536d436679756a564e4b7056557936775a36633657634b79336e6c39693668434b6e492b794d33736f6149646d4c5446726349477a766a2f35442f6a724667365772762b7047506a7a5a577071537154705a7949334f37752b546179373641645a6c2f4e7159705546557754555a75734359763075666b4844484b326e664d3472774567642b53486f4a2f4d47797a797943774d356c2b704474386e72306343716764624d69316f692b76704950504b6b74444a767354514873582f49456159416f58386e395237752f345a43372f57623047374477462b663451542b4f5863717a31532b7845756b4f46585a566163756c4e5566326141464e6a564c42737747716162323130652f6f4a6537762b4752562f6d333546656c58564b4c53386e53343562644143322f472b7254693236457963393031656858646e30717331494279523939553670796442656b4f364a35536a557131615837702f5562592f6a39355a34763674654d3532743453536d654c52793059575451346f6369484a526d325435542f414b45656c4773616b7573734b6a6e4b464a62735465303466725466666875706173316e456a626e78633965716c33304a374b4e54526f37342b7653777738663452543438677a765844535a544d756233576c6f6d4a2f745641386a5653422f74585a6a704f4f3858706b51397a6b5256476835614761766a3661486d6348575a624b74624f2b3269464538644d646e316d564c595536564849713079577272587a304c70716477746a627a55484f2f4f2b6e5a314f7750596e32774a6f64567877414d794b4830493147646f59716f59652f587462536c7955306d48576657706454534d78786a7547694835512b4b4566703572335963425a59616565682f38526c7530376475326e4d7a7170525847714b7078666556644c6e306e503841476a6f6e384b576d4c76644f47314c63324c647731332f4850664c78544d7963327a79432b69783938334c35427a704a53717430394853716f6f6a777a7334484e5269766d503542797a47685a763841393373584d6d613934347a6e76485733306d38684c515566576a516c4a72707a633531437443506d6d5767576573323450316275433744364e326237616c6577776364417173456a2b386650614d54355344507156343362563432586b3437656d58636e447030622b6962722b352b574b4e684f68334b7a686f656a51314f4176594676476f392f48413667772f78625345566e466f477145386c79764a50467473536c7267386b47757174766579775736794e4849396b4c6337782f496e2f41455571386e3459584877544432325466423968724f6a4e72746a6274447532665652676c6a526231586a64514c70303061395152527a7379497257534c6e7034346a6f327649416a6e6f502f4c6e50672b616c444c754b49766c637537387730703959673076542b2f4174476f2f496f4e7930734f69434247686d4b596d724c5463694f4f766a4c47352b6f3750636654524e6f6a2f304d31776d6d416f49715858694d7a4565497148423867584e353174543572677658757851626a5048657633786a704e4a30384747316f4a704f797735364d75715765614d624446494638522b2f6e74744e63526e76377849385056646f364b62485a484b356e543130616d596357737a52675078394e717375654254744a6c7565755845717a33515378645638785166437877397166536d4c397152654f59693138756d536454695a786a44523346615334746539764935347a70464f68712b50314456535038414a4549646f5849502f7266473836564356784855574c487a4f6435414f5a49783463575755584a2f486442462f6579616964593836766238676a6c714564526e7546434648564a50636d386d4f6e345856553168383872326772693747425a3431303464387464564c792b6f575045797a4a4f7a4b702f6c5750664c7a4875647a716c6d337169324436672b752b7359423561767a582f757565622b6d6e397950782b4c776e5a6a305054583030745077623143786e53686f7a614768755432493161576f5358564c646b7836465278392b4a4a7a44396b6578676166682f7275302f5a34746f5a6e7454325276316b65582b562b52365137486a7667692f4b302b575735506b4b3957544c6a316b746a663841773032584c476d347538636c734c76704278726a616c7764436d564a4d705537484552776d3233614c6478636a3164382b3366733754502f41426e78644c555761536562623879716e57766c584c30565a73756155575342336553564a3056754250786e543830502b7667665a724f3273634f304e6766504c2f527257394265656a55574234302f2f774363784b5048764d504849394a3766494a6f63656244537430302b6d5646465758566c357433306a737050353351536742514b4e6748534e305833547832674e36532b4b512b4e65494a3847384c42586a552f69346f7a4a7361474c50795a35716344513866463366644e342b426648535572506449366c7036544a76696b6d2b45463968586e4e75494b6556656e2b4a7552614758356834586a3931354b53525435566e356b325378783135747964505958536337555a6551557441364b6a366e3241365a39494a625a6f544a63695a2f462f4d62342f68626b4634333657717963683461582f6a4739546c7450635845544e792f4c696e58647035503069627a5164524c6637382f2f4e684c6f702f596c52376d64376c72546d32666d4e7a6f6447436c7a353739506f497675466b4c4b69446e4835326a517a696331507a31544e6f632b676e4d417739785441456b6a426a34723242694c6b385279704b77446b584b627332626a3565652f58304c5a366756316175747064645a4e375845756d577431497335377a4157702f664f2b332b677336474e6e637959425342645a52516d6472412b4357526133685536733063486e48532f59467a54556e342f734465685a7441763062715432362f4c2b34613153316c4f636a557272427a43374247494d6c525a3878463356684d502b4f706e62506f4a5949384678436b2b4142714d357a473461564c566e73454f2f586d4c676f63314e4e45383455396d2f6b4b707578735035467571426d3056484b423630524d55724c2f5374336141465a576679696e724764496c396b374d564a724a3359624579432b645661717662306e5064553776503151584f397a50667a345a685345344961536e73474d3671796f62325871363066486d396e64546e3172554361325a304a383046756e316e444d346b557869476c3854672f353976413162395464495a664664597458544d536268487538557151513047532b4d3236444b567a396f316b7a324558386256623077597a704e54795671686e35474c72567a756a48634b513952394b5479717a483830792b626e51576e4c74677379576b4971336c6c55312b59557345716b6156544a377675676c6e556d72544350744351556b464270574a694f493349394e664c452b582b4f5a57745a5a4948615579534c2b4451306265592b6a48634d3746616131793950535432715737716d75346f464a73524e31424141712f724b59784d78344139357a344434357644584a566b4a54746e6c534c7a50494b47547133732b326579362f4f6e74646650554f6c6f42636d4637654f344365664e4f5a3836705a4770457a4847425564462f6b50676b515a746b39666b486a6f616c396b31696c767174785a73336b5a52556d65676e684c7976685951393756556167485955494f584d4d42755934544f656778546b79306438666b47474c5130594c417569325564797267517a535a4678366d4f4a4e4a70716d6456476e7443317a554171626f4279667650383443654e396d474a56424e6b743974434664544a5232756a4c4250475530796a797251642f3156706c306d6c77552f43353238507739493565756341507950784447326337374d447046363046537a6b587a71766a2f6d343468752f697859583131386f584f37345563374d49412b594b4566747a426e6a7446706a6f4f6248353566327a2f516a3839635632563675356b6e672f71786a493648685035442b446550624f70734c524b55732b58682b553648386630764d452f7a473874376d4d6e2b475958416b47777564524e5676706131744c6a57643166776a77352f6e562f616b2f4b7638462f496165656f6669622f41445830387473706e3861395a2f444264354a34487435376e53707a3739537a4f4a6a6648645a7953577855747677394b6f41502f4e494c366671615874476e7178777474742b456338336f306132496d6f6d544c31494857725435797543733373577568696b4e6953434a57474e532b725a3372666a582f696679412b6559746f78474c527838676d797250716d4b58542b336d4d34706e795057325779496d3054542f4e4f756d6635324337763870515855382b58326531552f74557470386f624c5230466a2b5062562f6a6e6c6667766c4765366664487858795878726655314575713058557761634c454a656d6563425a51353059767164336e61654c4132674a415167645a3478615078442b706a36532b704e6e6b50706a365a586264515a564f7834523470354e63564333532f713850473565313577356c634a75717252724f4650654277684e316b4653577270396b786544657337726558722b34756948577972632f4d7578316c57703131395748525044354936614b4e74377a6f6d46482f50556c333671444b646848523277797a6b7a6532672f665166737a79525a35737379775a4f476870664532574f37663037784f536948456f46533254733976787a797a6d7358544a4c6b314b422b457949766544316c626a3468793733684d6159515357636658335a69716f5a5a6c505243447175727a2b7a357451635438394e6e30395546645677775a4f3444654c6e5a774438564f72656f4f6f47584c2b6d726755506755365858624d6c4d3268777171464f57353141786532637666384171623565657a3368484c66473143436b55345530782f4d55334369664d3670645847376e7a694757722f6e6c48503553687a4f4c396746525a3265417663454939415a4e6c564a45555479395a4959366176342b547170614150547a7039445266736c4639333970566c6c51414c39774e733635494e70464e43616567632b785157684866506f50397757534777637969566c6e667456726d33465069376e6c51492f616c5744555368534c322f707256424d414e6e434f554d794e4a613165356362717079436a516e6d673650494b7a6c3753796a4b79496e6a3849334651355858487748642b50375a7063344569366551614f765a3471552f4833315561465578524b6f3532524e5a4d3632687364525a377443494a366b725a3866432f53584d7044726c4c63345a69545047302b592f533352377844646f6e434c78464c2b7a76725a434857765673554b686451777244645a4e47756859565451716f6339505464386c4465454c6a57664d4655593257464e6e48536d586250335152564935566b31746b645a71323646586a43574b5a526e746f6f7366477a332b39726c6b612f59435569686d664751744a3470436f34756b6d50374857706d314e476156634b335674696f72544d79746772574e3061614242432b4f7039334945685250376a6a2b4742466e34576c505a5250444a6b51423162382f51794a76706773453654395a4c6331696b547953725a583863594c6f6277766a616b44486976656f77766d6e685072366768434253645771676b3535525a65564136746176686c4a364c453064306c6371634864516a46497054396669654b43784650756637456850514f564e6d4746477a506d5a2b70395631397666644a566c61755976506d426c5463375836376a2f414c7a6f566977437159396276726451376a666d5558514450797362526a707271427a35586a4e546c444331746e5a6e335a6d616947487835316367646e63467567762f41477461373679626b70705553564a2f713350352f63557a357a2b4d76704a366a6b334f3877384578764c686f58477a4756357034746d4d794d3967772f647665586b31654f2b72506c4a4678306d6d70514d5752755348316a594649326a557453655732527933396576374a58346765532b502b596557656c6e69577036592b6356353269374f75394d642f543851356e4e6e6b6f70544a6a545a756f4b4c76306c3379696b6666335350564c35707a63426b726f70375671524f4c5733562f4d4b4b394f5077502f4f6e47394e63367a3865767a42314d366a4a586f59444d543149793466494d68376f64547832725779373959432b7a397272714574535470654f5a394d5a4667384441335774713655327866542f414e496d754e36712f7742325830616935722b746634352b6d663549516f6a32325070384270626d623946466262752f4c394c4e7071355075534a685a6551706c4d335233756a4a7a714354374531396e744f4b366c744f524b63502b38703643344e6d51333175394a50794a3942644a3478352b78356f506a2b7a7465437a337751757a4e41677158565957666448556570616d314d775574374d53306966572f4e5453505a722f446174783054394c5037674834312b72485943394f667950394d765561786d7332444d38542f3873686d3867386a307336756937536f5a6c7a554d7571716f79726853636e4a32653033542b386541446b54353230623137576e616f326d563533343679314e47726c7272307669584f7255384f486d314769353346383149714f3474787663756d6a512b616d5637706e65344c2f6654384d344e4c4c626277456b6e38673862764664496147704737746e31387452744453304e4a4c7675534d56316955382f7947474f4d2b72515a746f56304f6a494a4f494b596d4a6a7247424f6f4e686a65457948586e306d707937666935454f666b57576c4a7173466947555651724736682f794a36384869364f6d74786a37545567364f774a5a6e655765587769685142715970546d5a564a717a30385a32623569557a6b32632f4658315a4e5934616a2b7478697144366e356d4e5566794b436634337268756461676154487269696b54486151755471317541645954533266522b4836744c4c457542765763346650354c72656e304738396b524552306753485839532f546279544e6e7a2f4e7643636679484e31506b6d435056794d585a4c39307a7973652b694d68486d57735536486576365a734c6f4f62776a2b5976312f555245787578336650313544566a31502f7438663235767942687462762b6b5756346a35427333317573322f54337972583842334d793165685647796a6a7647744365423378364a41357775486965734d50732b3475415839615531745773317a626c2b5734614d2f6c392f62384830712f4533303739426652587a487937314739502f41453338377339534d5a667135354b7262383238656c744c5155354d6c6a4d58684f6834577873436d5a535a765a37314955636e43412b6161657475314c586d7532302b41316d2f484f6a7a696d4c4468594c2f4143436c67706e6776302b36774e7447647856466c4c58577a73326c6f66546e6e476672503044454a6a3454506f6a59714f3935726e49336138553844386a4474316c6a2b4e476a4862567a7833364b61715a7447714c50624c436e4859565a597268714c51354d67332b32687344584c436144366149365461767a452f38414a76444f614e57654f7858643257762f4148374361564d4b564d2f6361354179355430334e5956423539465a2f436b365649626a3863773456496d442b717862757255516a43384567784e717a61793976714b2b614271546c6b4a6d423047355956307778386477526a6f30703533357a356c7153313836584742396e53614c576e6c7a3469384a7476516d62487a62576551706f78327a667943425838666337515a57656638417a507a2b35612f6d6f6a6b547a726d7353594773456744546e4848457a306a496a39754661646278546263465663396e4e557167306b2f6477383853786d55535733574b4c4457744a61452f4f7a6443634a3752442f4d6b6e52526266627844613672794a464362636862555a7332552b74636b4d5675556c74566d57583864614779476b77587247585366505077543550777632557775616c516c46647565594934506c3955643961376b52544a67627474707a5670677357324a6b7558704a504d614e736a35666944537a544253684545794f4a5451624e37506b76616e3459466b5437504c3633614832596c32466d547164325068386b69646e6e584d2f7743357a514869317a6b4c6d4b5249532f636658632b703077624d525a694f57514d73486e3139476e35336463466863475a4b626b515171696f6d4b566f7a696c4a66636f6b4c6a464a41484a2f36365931666149516468644f68505337524e4663364a46664b4a703451624673304c7348526d74656d70315062444c2f72314579452f6464377a2b546b367158414570537536577568534668564a6d3168504b7845675a665661304b666f5456636566765379656d70656f3057447854766d70503956705a4f3578424d7a304462446d30414830546f64475875792b5a73333761675a6371317248726f4c6d4f4b2f6d4472454d53344576536d6670714e507938434c737a735852574930704c764a455634677a7a616e4432356265686e6d324c756a444b2f72584450445a6f70486948456b303343336a4f41722b6771507948305878615330315a5575336b555939394a7a37584454775939444c58335030376c784a577634387472733250696d41535063574d6369754a7a32325372764635372b497254794c777a6378726c617138752f7741736879365a372f35444e6a56566f565a6566396e487154396248773273477050777063766e505938657867726c354a465a2f7742586930543044337861334c6b6a35346c6f5773786471546b79473236632b6c6e4b7975307857574b4362496d74363868347352624838516961362f59737a4977363773576a457862756758446c342b5358554a53457a47537955792b3669584f616d4a534e4f726f534a6e7430732f6b2f765532666e784c61304a4f5a2f497632776b45456c4f667a2b342f6e6c656d483449655a65535659466c33455455716b7474312f76347a704d70763165584c4e644c6a6c573737414c5135346f493366666a314461345339683964374674574937683059394d7677463864785a3864576c6e2f6630656b35644b7755716a514b7557435853747a544b6d57715a656f4d763130445578637949412f52754c6e314c61455a573162543344655830312f48487766774f7954516d3852676f316f7348714f79795a534b4b71572b4937722f414877535a7569343330506f4b47797769616c5538626f34796e4375397968626a6538326d61392f32477a4756364f3432626c79313765533674632f463565785a6f533532725a303559342f704157356e513654763838567951716b6f354d71596e4f713733366a624b65357a656537674a70672b4b6f7741354270515254657a5a46634758544d67534f52464c4535574e6d61337a4c584934426f4a564a424962686c796761466e477a38506c5a6d5a366978736e783647617461374e535244385359664839765559377832782b5a6a466f4a753338314f666f46484c6b2b396e7978385a526e7541556878314e634d495a366e77442b543468647266526e707072726c37506d384f62636b5531554f6c3261726b32596c6e562b31647970775779756a6e4b466e44674b68755832796158346750356469734c467a3039305a46746b586c79555768624b723447735a6e78587949564e514c4e4346446e4d354c7938584b4b4b6e6c4a5630545572435543556a486174394f39444876384163676d4d30477a6b37534331774a7832426f44655969776d654e6a2f4141767872583367754f6e3435477154544d7749776c4b344c4d3163557a5a4a732b4b54734878736d42734e4d4e5a61685a6d6a715a784c6a6532354e53632b7437754a6b4b4d7743726e624c4359487a41366e4a492f765167527444626c6361796d61466a5a565238613063396a386e596f636a376d47555931636e464e34556848417054484e636b67534265756d69652f4f722f6877362b6e55524641336a58315a7a595178726d513530716149364f6954524832503969506e494b576e4b4b68426e54424a76786f4a544f797242664e33517a75633033654f536e634f726f52354831376f644a306a7143453534622b7448674a39394d61466b546b453841722f414e5338774b32305632362f4b2b4e30366c5855756d504f6e6f7a2f414f4678796c2f6c39576d626e31552f56537757502b7651797579626a6a644e6d54484b6b4e614c536979364d74755a6b443359564a317561363355514e7a5553555a795a414a4f513263576143334a6f46337a314f46705a71577563644c6e676b4a5a343632335238696234646c4f742f6b2f4a3278535a552f6b4c38386b443136504a6c4c356f356d644b6659374277317a565263554c54736f78323031307257535639433176564c30565834666a793557327930556f52736438656d6e7a2b6f774d77646a546c6d65476452326f775a524c6e7030707971554e48766a413352357678673462497262504742714c3564685a2b446c70586a794c694b5770374b32496b646b7a664d4371467363416e502f414e4575346631486a51582f414e4e643970706f674f54397a3652624d3474504161792b6f33717a3347795a383341356d4f304b4751787a6656687a6d4331334f4a5848616d694e6650734a4b474648475374344b425559483963762f6a66317057755a3575732f59554243536b4d625a3548744a6c74646172556e6b6f6745534c536d67324f703469574a504743756970626d633530444e5168375437375741344a477a66707a36652b7548724747456e3036394c2f556e792f4a6c6b63457531343134707377796b6a68383469684e3969325144415356776e51545073753448736638594433374b613274577661747447383370352f616a2f4a487a58484f6a314c3871384e3942632b32504d30455a464f2b666c766c464a706d4c514668795a464842646f4959743346704b7270723548385a6f5370764b54792f7846496d4d63773347394f2f37542f774349337075336c66716835503667657257347a5154505333794c576e385938583655486148717a6c354f5648796e4e582f482f7744323436796e2f6333516e6e6e3935652f4f66614e5359356551626f2b4558666a78364f5a73766a587074366159474f5477594d67597556467a374474486d686431394c6d666f7442317a49624f6a517039504f686d675949426f2b303870333235725736434e3733722f6f317266536a5170537a2f4144576f7664527149584646695858636d597a327a486d2b786c45366d6831524a355348324441706d634e4d78535a3652694246722f4a7476537043597446783648503436664d302b5336656574333255673267366b35785538574d3071376c4d366c36365341316d70787a68307952457a4f49454a623544642f4e4c647061315764322f55344637704e4a46634e327179716c326641786947417646736649556373564d3666326655687a396d527a4f524f334e596d4f496931336b6d494c484e6d735476762b55446d6d6b34676e4e32386e782f535a5043664c5538633748445548796f4f667442474a6e4d306a6d5335396a726537387843746e314b717773697569366a783377334a38625259566d2f35464a4d6e4e52486742315338504e3164646b434d65776f3463387734744c426f644c39336a562f594d32326976486a4f36527a793965503772483471656d472b4f4473657462764d2f4a386439554866462f5257512f4f783152444b396d644d595a544158646f646c484e644d4d794f68396e4b34426d426f2b366a616e732b70614a6d4b37612f6d476e3833352b2f6d66362b56654c556669722b46766c4d2b57514d6e792f4f2f7741684c3673365055306b7553664e43474e54484a4c4e6456564f3061484a352f6c476c41563847634c44764f6c70562f7a4e54682b5546482f68682f646239643631762f493338756d2b6b2f6a476573356d656c766f5a7950724a63786a59344a356554537a7046303142546932645479623274316f7566544142324e5339353750544f7a54335937352f754e6950524c2b79702b4d50694f726e2b5a2b65356e6c33726a35574f5850792f593956764f37504b4d532f536b37465650326945364b6634764a5250435377496a583054647a327a7157557a677062326e556e4e657a6a384936702b42666a5636552b434b6c4c77337762786278724e34484b4c6e654a794a79354f3077346a416a75735234314c50377459534b66732f7a63485257575049364556534735763841585061397036327a3868735242365a7a4c6b6a52627a325563782b51364453485a4a6d7248316e48586d56514f5779304163466e2b7754443759556c54383361572f716d752b3369444d766947536e4e583255324b307275614c46546d714a72417366314c554930546a694661584f4a5a653733476c4c52393578306c4a31724171444d717032557374572f4b6178564d3942653353717337616d6d7a612f6b475a36786a365a457169725458436a7674585379594c4a4239314a707041534733483056616279726239367062632f56784674645a5239334f6a41756850524348615766445577467664537a356b7833552f422f722b55515a466452536738794c687a386f766a635150476e6c576b726b3274566130756e76726e6e75504c53504a524636656c326c4d353946626e2f4144677231695175306e50723171524c353567544d6a506248457a4d72736c597033614c4f752b783857665750436f514b556a774f54433450306c494e657835696168596d685842424542352b633353522f4a4f7a526a6c722b37436b4b5349702b36302f7741725072736c595333504a4a7141772b5949756e61624666477a6f667170644c5a48614536786f2b38674861564e5450342f74526f2b71356c307659317971496c4a416c4a364a4141484d524d39416e44787874685651312b69436f6b364a496c6f35616e4234533952793378557945457a4855366d316f4c54514c4f386e4945392b755831707144674d494d65756e7565366a7164767155762b76626a6f314539512b795444616a51666e30643643614f575a36546f553773306b353043644a6d6d5a5a724447744b57566e697556795851314b7175774a716670557a4a5a5a536275356b4f544f58512b6d65677572764f3055475351426642415655704e303865313569597a59477051794f5065747a453446392f5a49704a527a4e666d7838366e59362b793867674c346a533737796b797239332f56316547644a55544249635a6d4f6b34475563646e6a6963776337545a6b35337a6f795063684c487652394d56305a4276686f3046646f57792f4e306e494a4e464b61682b502f73304762654c6d5a6d5a3479484774582f4a414447646c4a56636a536e3754657566512b6e593141524f31556852395a3071745337374534767150327a32666f6b76754c347636675a324f304b6e4e4c556b72727a61586e5a324757366e6f4d726c4c3675736c6633364f684c4b4c436f492b4b6239646e41656d6e6f464b424e435142464b4e58586a4d4a4c79382f774469484c6c6e47526569566f4d7265622b5a626a546e69377335647056303152314e53414a36466a6c675166554c307634356e447952754674667964564d66324469697330792f696151314e6767475a2f7a625774534e485a2f5a7a7678382f626746697636427039437544447372484f626166324d664b6d56616641374536464f706455536b782b34762f694577432b4975664e384c477455663650744950632b4e674c73655178683262765656516c524c5a50563965656462314c6451744c2f414c52466e754776764a757436646b31494e6e456664304569645554334a4b312b6b4d4e6e363578457652556c306b382b5375684f51532b4e7735303646576f305772435531382b483461666d64333367565238744b536d2f6a5a715a797255566c58614f396b4c4e6e76682b6e4c6e6330574c434d59356150302f70544a5966666c3937566d37374967696275566f4f70517a4b664437327852786b326269756c3051507252634b796f6e4c517345712f6343574e2b74395a766144492f594174585464336f717436786b65764650514b5a366c715037716f354e4e4a746c4a357271466a7056764d65662b363376765374784573417859674b323934637a4c4b544171787957527877362f586b57537871705a796e3732543266486e72736c482f5950736a397a6e43483770434e612f6b454f6633705639314c437478347251304947725532465a5573525535387447534c37734d795a375a33454e514f4a4a50346f2f3841365a4f59695a6e4544576e7a487a433766324b6e587a574d2f59614f676e70717961516536684d656e6d322f587a3171716c6c634b7a7336423939782f512b49682b7a4c47743274613763386335414b62682b2f3778444837717a7a4a6f623932334d6c6a436d624f31584a7366786771747366545156672f4542324545695139784a434d6b3873494a71716d303239385874385272315a724e47704d72687058665a4d69682f7831366137366443795555326b6179666e4e463565787a7a2b523754446f687a772f4c3378373068394450545479373177316467734762784a4133596d666e546350453839386c7a4b762f494d2f7741666c4b4e594b7a72446a5a6f517a396d396f4c6c43716f35704572536e6d756e4e7232322b49383631506f522b665839305762786231693862394f4c65656a50686277384b3846746c7a39667848774c427a50487a4a6e7378754c6c715055336a7475453739463350592b6a397254395072446d44733336576875704e75613358385176652f774473776257617a5238312f4b62316e386d3535444a7078654b303457444a796a516155636b73654c4e39377161755a4d366d44736363524e4d4f7877633738503244396e6335396f7a7936645156642f614e2f4672783779727854494c7a58796e64386138675445586b47776c613535632b59707039684e4c72632f597234784e524d6e536175554b3462736f676d645052643978632f774349314a723266583878636e354d2f77426e333853504766487570384930764f38696e337a7878376c3170477847682f466158634c39524d6f35307036585379436d68694b5568395a4b2b704e3533554b7258326e556d637a33447a50686861336f3736763666672f6b36337664347671586549367267705a6e4c31595235573436353942497458484f4d6f73735838704f2f774172415038413557504b43377078656d592b506d48532f77414a384856566d6638416c59616c46713053356c35734e37554c6c314c625749797049554e6f304c70436e6c545a336f67436c74644e2f477059525070305277746272574f45514c4c6a38616367396645304d48423163735a6d646a426938744a734e44374e674b5a7450646f366c615a49374533746f562b364a6b73446c66452b3959746f437548344c7662464f68754d30646a4e654a5a63644d5172716e373033424f6e457638414964583756425a74445a7977625a37416e6f6d46316939524e516851527354694a786b536366536f7a3073386d5a5a594c386e6c476a4272515a3970592b706c674f74354333516b306d754f596668477a514649324f66304439677645544b77484d3534396f537a47394a396475684d707737663342712f69354e42307976612b7a4e30557a593031695468576c693366584938672f6232616634542b7a6d4b6d37534538544f496d66415034507833737a6649745949494852774a485a31324d52664d754b7a4d2f774456436c59684576694959365249614d7778483547706f51394b59506c42414f525866474d39346d7366704c48464e6f654f3370696a766c304a376535335963687974444f54342b5766464e6f2f547763372b4e716b79365063427a444a416c4638307832664c5237317a766a475265486876342b2b562b6361476e6d654b2b4a34746d525044734f4f6f4a6b534241424c6b344639357961626e6244416873755238696d566449453039616a3367304936547178484759462b352f34503261464a62336c2b334a6d6a6f35576a716e6b45716d6f3637475a36387176717830624a6d4d2b6e4f7831452f4f4f416b4242485059616961504b4b652b694f456349477957562b4b50704c343142526937324462636b2f716e6d776870335a534a66682b6a6f7a654b4e6b624748566957657871337872555573737a6d756d5a6d6e4d50737a6e55744d35364333734c7844786e6c4f544234326a445a7231307a702b7252524669552b56385036714a75524e38726e7165766575694757676a4131547835506b58566a524d3446474e4a6d5a345433446f332b4c766f2b72303275386e78764b4d36374c3063772b426a613233587230723049437164315459596e4a4d36484e334c364f713444454638514c73544977457062334c5574467069633547346c5776526b746c586d34656a3546656632633675444c79477856444a4c3775565074426e316c426e706a594d39442f6551454e4d35443055416b537a46566561624871782f47484a6d5a6e6a7670544e6b59506170647a573868703374574c75744979624b7378664746536e545635424855784a6c4e776d6761766a575147347761467355372b5961726558346d52347a6f512b53366d6e6f2b6f336c65504d65722f7743592b6132396b31593451367a6b392f693246544f614d5745394c7949657552395962455a686e4d6b4c4f47716162534a7450447331486e412f4c487a2f4145507a4e74372b4f766f70526f48364d59794737487178366935515734305872467178364f577766444d5335753471616678464c4b6f5263316a754b4a6755464775744c4b584b36394f7675756559356f36666c4450776e3865312b43346b754c702b50356d48685a36715a7975654c73783130484d31654c6c4f7835697935374b4c35614c6d525439664e51797858776d795436667674544d337a50436359452b4c30693074795a4b3945454d3346753772737a746e5032706f7261543535526a6967437130484238334e7a7968695173667959447a61652f43494c2b32344b35327a4535774b3275394c633464474971397647356b574b6c65324f35544d396d6f57594e6e6961797356697a2f41425a7431476f7a4a545a4a38774a5333567347326c44414c6c5639382b4543683958772f7741656d7a6332585a71724a2b4174577a624b51733036374d3279765330496372526e586e786c505931627442365539554c6d35316e76374a4b53574d64615a6e68742b495570663430767947325a57445051563930457964544c797a77764e746256446c57664c6e657a566c7a775838624b744b5765643465393765574f616649364d39545858473966342b4a326645504838764338686668637137544a52345a5234306a5433366768355772786e503841484b77565a3830646968597634473672432f646c3752642f716637315a58784d784d63664564562f4674694e7971566d47584a7171794e4a656a6b417278487330375663466d614f52683153793276534c50355351775a475455364e50316c4a50676c59336d745862387045784c7948497a736751687567686c6a6a42732b6852694d444b5639784d4c596f415a586e393756704e682b7754555575705776346164493352652f34516a452b456a586a7958317a586e2b513573754e5970513557547138754f72364f7470674d464d7556434f63715757317432306c63634a653948735649366b30557a4f6d67436576534b526a6a314776486d2f6e636e6d766b45357832643867583554525333574f785563744c587545716b5a4272544b78453850574958616c69593665556a764e4a73797069375a323052694d52334467762b613371723331413959452b455a67755a67654c613435322b447169766d5a52574764554575653063395a4d75706a717175496b79696449702b7a585336644d3158657a53726975652b525a2f6f4a36557970717953324a6a546751434d675758324e63714a613548524f314d322f4f7a577932574648715a76466d2f69795355335a3361445843346531766676376f472f2f41493134546b346e697359565449746d6866317a4c6f315a775833496273645a636b353574544c534b3943563131553074433955756a54496443584b6e54477a4330356e497450786a78672f4b4e48493867546d775750646e533668553867324d3945724d4c584a327446347670574679536635634f4f686568324a536b39363674546672787a534a5a45356a4e52636350706458347a706e506c654e3746646330744b566158797258506b696e5a6e796f6748646e38663742504b586a385a4b465849526d362b534653662b37514564645a746d4f304c41385439494e456365394f686a30356638726476366c636939684d4e62637079463574462b62677a5171546a7738477151517a334457482f414b6c57626e57514a6b2b474a76574f2f4973724d385438646c70314a6b2b4c7a65343862485944776d767858352b57504d6b7274536f6465636d464779727941654c4a7038566371716c6f43795a756b6e7464312f772f61512b69782f4759712b426d356d5a6a5635324f547779364a6b6d4f626c585a384c7535516145553639626357785a4a37386a445858532b5a4b584b487679697875762b4837534c437a5169334b42736e3043316f3162504652364b4c4673484c6576755a6c534a70464679686335713070537633454a337342302f7a46387378486e3038673031614b4f73666b5a3276426f4933526f637a504f66546e32624e486c552b70624666636257632f6b6c726a57445471744f596d504d46557a4f4c3467424d45617157636a6b56736130496b713932334a4a70553236476e377035755a4c4e5061575647474a357539476962713341456b4e5032725853386f2b61594d646352624c53763766383371664e32617a5543584b66506e4e3570702b727779714a72357345736d4f656b584a70734e542f6d72396e4679694467682b726c6f547537553065664c6a45756e446b504578633745723179636c4e6a4d755779484e6f705844565652646b3030564d71624d62553143354c6d3870476253746f697679454a383139505a3958785851485074446e4c3355795a37316257577a566c4358585871526d32524656464631564e5654686f3549704d3570306d3231554f574365307a4670695a69306a61663863667979394e342f447646552b5561754a6d2b582b472b4e78346c735572704c643950316b34635546495352564d4e30727332663639432f3061564544456579536b4b47686e6654744d384f7a496e7671682b646e6f5a6a323379566561654e5956633434444a744c766b434e7553535955734557757179726c2f4e63356242644838434c48304853437a44354137504e464e4b385232636a6e5835782f64572f477277476c496a35694731736b6d652b6e783345733166494679564d5248314f314a3435546f5538584c4d3657554b414752552b616962686654344357544b322f772b7050577641616f392f4b72313639632b7244304f394b646e78767854545757666c656f506e486a384f546b464876336a6e5a7376504738544643765168375556466e3234416d2b7a516247464f522f52477a5433644b6475334f4a33344c2b4d57336a4634712f7741314e2f6b587170366736566668707632353743612f49545056446a57794462424b4762346d4f4c5172714a567a3863372b4e475a2f3137454f69434a76466f34646d6f33663865394e6b2b6e6e6a6554346234313439446f59737436705332696a7a717164766b45537a6b314a34376c76627261683747306d747032494b6b567a565a337a65774f72626a4e3832695a376879562f764a654f6561623334356549537079373176384143504a70747a796e6a71557a7545437a48617a6d716d64686730584a755a4f4c58766c556679684d6248475a4f503841726f396d6d497465652b77383047546c6556624f714c387066476b63337938504e2b6b533675554e43646b4d6e6a38507855436c7247544e4e5142542b6a314f4352464b70706e323849456138693865727757424c733943456358356d702b505268306633625239696a763874626969316a4b682f683344583077486f3065333266463866415a4d385a34526a492b654b6545655a2b6f336b4766346e34486a61666b6535736b456b624d504f346e74696835516c33386456306835474a705837334739764f56637050374442465036577a46597a504565704838482f77414638503841484c784c4d32504b3948376e6e2f6c6c4c3876664175622f4147614c336a5a4d76786345425a4c396a7836624a4a627447754e2f766f6a304262524e51704e4858634f7071373578485a714e3743782f456444796e522f6a5856546e41726c54784f764c66534d4f6c503841444f6e5a6461343035384b33457964674d2f6c57706b635172645169763573624c4d78475a36686d7a4c736c5443384e43354e4b3050373243713643325149716c44796e5171525578636b737563354c6b736f634b30704479704e565954506e6f346d7763562b503250795364346c4b5573634f426d436e796a5543595a3352686e354b764a4a507161482b6c633635495a37324f43564a756e77556c53783657714b694d786e48664972506d36536b73307337497961614b326e4861356e6a394e6b2f645975556154526a50787255496249667466652b59534e553867336872696f685367786b514c797554395a785a74486a766a566d6844386573543833374c30354c594f776a34354a3476705a6446663042347a345574615563634837506a4a71557548336b424c306d68793854613877715a706131614a6b756e5a734f5a6a6a4a3556454a78766f6f44472b316f785672626f36486a4c45314d3652752b616d4f7452702b56504c573431714f67337072354c4a35525578744c4735644e4d46484e4a3270412b54366d5a73526a6f4450786e4b6973386d30676a793741753753536a714a49454650774c4e7763397137636363354777654239435a62564352374a64773835336271706b4b752b70426256564a467148577a76616b73593566593631442f69334e73524e384b3077465655574a6a61566d6b6d535a3261743644534c4633577434344f5a347257725067737864534553754b4d692b3068634972346f4a7668686e564d64686b41485a31714675484d736d70524e657445476c74704e534d71756e366566466355644831327837454e39457334574532644d6343366674632b616478685947722f6d486c45574771702b712b4b6a6d6579706964444c313166794d576357766874795a466b5762514d7451357638414941564c6e68534c50595230724d42643259724e73343768564f357458354f58556a79706465567045706b7159706b4f56374d68436b744c555453785a3968755971724864325671614f2f6363667a396c39335752367857496e4d64423566663769766d3965783675352f70336d6166624d66436c357033755869486c4a4b6c6c476f435974454e574f6b4c6c446c304f4948677a6b66414d2f65412f45664a757a526a4663794e4d49617665636b7239506961596e3151705251684764486e646f5a77356d326d77577a486f4e3974416d704156744e74762f62397141535a6243337641664471656438656755637035614e47686938704d702f79473431782f566f512b613645785a483950575939382f6171486e31497a46496b505a38566257322f4f527464682b44387a63756d3978787951477374504d3476716d613957746262444452334c6b6f68564e50744d686a30346f72535545626d4f735a4a4c3266327a553467726e2b6e6e6c652f3574762f414d4972714a2f463236545a54356e5235747a72393971576673417a695779556779787852516b374346376e664d5954484d6e6937544d52465259755236657a7755797a4e314a4a2b566359506a532b78374334337354734c594e4744586179515539754b694e526d456a50327833454a5a4d5a2f6f6f6d5a6e71424b2f4772644f6a47374b70326e53353047626656554b735533526f326a38636c7267535051712f6b6b794d2b7a3269616c4a744f62695778752b59414f4176354636555a6e71703550345436582b5154613175663568356834726c553472447a6f644e305a2b525a73476a54624f6561524f6e2f41492b5557712b365a557a612b6b77434d50636b314974746931342b4471505154344a34686c77654d2b4c34794570302f486e523439464d385161356f59484d72516547726a79465956377150644b784a3959796d656e364656594c3435543044787a4f4a76352f2b68512f713534546f612f6e746c32686e614f7034386d462b63536d616d7454577454586c6a6c4e7935326b702b7749786a754d6e5a58376e4a366d784d52544d67724537566e4e5948473738687645386e44395347582f414d644e585a3547727546577247426f73525652312b665249726d6b37515a4b4935347a742b784d396933425942664349663841654470724d7a574d39346738756635462f47362b62785974696b59767165356134564469704e7659744733636d30474637614e4479624e64623063394c65645639784d314d6a784868794479735a6958665a6d63677462646f772b53727a6a705454452b515676425750717431675674485652505a4735582f744a6c68425941766a734577496653522f304f50576d666531747a507838347648375632554e6a525536746f364459584d646c787a7972735731776b6e6e57776672376b325534546143656b336d53716a3775696669506a2b6b7453745a5766477568633153345a632b6d5a6d625a6a7a4c79636f376e4f6c61516e395832616f4e2b565a334f426f52667a44527231594853794c79505971795a73764a3737476651544d6f624538782f7253676b64344877374567695044732b624e5371566e2f74706a4430482f32776652625038652f4872772f796d3976582b5365632b5765512b53557a79325a6b4e4d4d68312f4e4d6d334d64474b396a4c5a4863353653585439616a324332634470612b697a6c31375a7661496a736a747a345a36652b6a6e6a554e484e65664f727433696d5470506b7a3757692f51544f35493254777a5a39673648765036395852543952505a4c31557154372b39733779357650646758443437344c344d6d5372526d7a4e505571304d3843707162625a38745a5a475a596963307a516b456b7553484e4368612b6e38737868704a346b774766384136314a6d33535a3643736650343950787a78326d4a50576c5a6d4f4357472b593764656730313647574932726b5536646f324d745750506a39334b524146476a325347347557727a576d5a4867512f50484933664f2f7a712f494c56336d6f4f6e7833547a4d537a59757930492b6c6c346e6a626c36314370345538584a416d53725076416b4e2b7762736f315050564b797a526f3966536e476c7034372f2b52727a6f656c562b3331736c304c67306273707a4573442f414550646d535870454f5a5330704f4c594c6c47657766657a36464a3953365a6a51615462704e4a74455467566c7665505666586a6c53766966494d2b6f4f4130466f7031593948507a766944756573492b7a664e56597347567064557767582b71557042547036455445784d5a6755763558676362396c462b6366473363367062616c495850537a4e32334a73626d323637546647584b766a6358506b4674594a705736763375396b306a72782f61763951632f4c77392f47386a5a426e397950497a334d2b6d39764d71736f6b343478784347526d2f47463967314151756d547a3466696d702b5a33784d574650507278787a4851656750423376654f6a745a67354f54526439544e7379392f5030304c724a476a6e446f7459534e6f784579304d655676324b6538577033316b56732f527a63547a544554474a6b56683478355778327442554f6435426a4a2f5463624a597a54434878374f4c4b4369755749622b4f36483368686f752b5565737034576a4e666d6857466a4a4852706a4d5448694e355054446530373062513065546c79597a4c786d6278716e533165593172343830594e4967665271464a70554c30744346446549532b4d6b307a475662374844314f4d786963427473363179516a302f475a386b6d64413436395a56724e6859794c77394956446250615056342b4770304e536d676b6a525353584d2f78636b3168474a6a724742726e356d307362782f353333736d7a4a394f4c55665748417a6d3673775761453736754c6369384e717938556979666a4448732f73686d2b53662f71484a72576431706e774844723837664a48622b42666a534c4b4c6762734f6745332f414a48627875584e614c6f6d7736504a32545273473071596672305471544962442f5353746f7341722b72526a45783569452b6e3369335a5045783859313358536f6434325038414d515a32706978505976476e7178737955425a6e6833613755756663632f6c62557130657838563831624b6146547a4d356d5a385263666c6670767165566545302b4a72795a5950732b4f307856436847334466594f78616b2b7537426d6168706d4d764a6c79324f582f744e61515a547a6a5a6e7470644558694d546b61632b4b65562f6e682b4e746a462b6d2f6b4f31586d2b5070677a6648736334533077536c7a766a47584b64556e686232537956684c2b4b34327a476379364a4a6c744155493074476e667444704c36496633763841386e2f534c517a6b2b73336f7266544b72327a655166522b6976566931464c68534f6c4e6d5a384b33464c3271684c7a55386c682f6d42437854485631707774374c5330637468743534332f4148702f532f792f614d7647504166555453386a31536b35735a635869486b44517a6161463562515870322f524370754c39364d6d44314d68417237376a42494a5070575a7a3750614f73774b733953664c5079512f4c36743252366c354f423655656a33646b2f494976424a39656245387238344d41486b42655457634936377346756773714c63314b6d2f59342b616e2f573858644f31597054707a57462f7743427a4638567a736b4c5046382b64433463694c6d494f504a7158444c6f3775576953574c5062704a424e44334f38666f427a5758636c636d7871614669617868704f63634a7849726a79594974534c59694f614b6e516d673867766b52446c7169703863726c466e6b2b44486c62534d4f616d474e374534646f39532b6a7444666e423775455054374968666b58676532637a7333784a364d48724e4455313051374663324f3276415671466b512f4b506665632b39504b7a594348726d4163377739787555433445756d4d64385a414c5777725a7454512f69563530744f66685a3153436858586f35783058307979317a4c6133506c354c4557704435632b5261365265545a70326f616e357665534d5a34786d4243764c57427a7874734f5673515a576433354c6778734a544a343250546259356b6d7566746c47696952507542505844376a5a6d7a4e736159416e2b7070326f46594c38584571384f71374b357a4a414e544f686f6978785267364d5558313530306432646e5163546f58315a6433476446625449762b7663616c4f6d53463839767939666f4b7671795548643961366865794e75525333325a746e6b7572507136325a35434a785a75696249365a7a304c5a2f7657396a6f58316f314a3456476447794e4637626866453863324d78754f473676494c4e6f76304b597133513478647330565731536f6c547131547848477731704b6b67746678667a34344a6f57794e793575786d4a36546b667454304a3150494d57504732724e6756757a56336e5835526c374e3273576d4669664674422b4a4135615835697a7330716a373775746f2b37596d45512b5a794436337848474a364369396e3069386b7a476331465a75697a4f734e50795a454f6c44354b4c5a495635744b4d4e59354b5a4853352f4d33514a557474523965644b58512f786f56444d6e6c36323239326369424b384a626e6659523875766f784a6c306b306f7138626730476e3133303050514349644a3957536c32506c584d4357694b4d77706d613477347239422f546662784677656e666a3770393378656a756179733632327739666471767761373478317338745078764e746e5a526c65534a49506837534975726b425230544a354a51482b366f7550303539414e6976315148787338457335506e554162313059364471387a5073354a346e4c732f526a74304d366a4b6c6a757a59656e2b353643492f6649566258436f36567278747a335648524c46394e34504855344f68676743644e49476a4778737276525354397978644c46684d6e5439734a56597447302b656667652b5a4e4e6334706c676d42382b457a4d385a6b474b382f525a6e6e796c47676a51794c38793036456335516e782f4b5255374f5848706c6c654e3132577a6b76516f594c785745564b615667503131582f546f6755467634486c6a7439752f4a425272566f7a473543734f475a6d69334b69665677492f7675692f367447432f4e355576694c6b3641454279793367716f44393134744733624d43612b50656c565932697a5252672b51352b5255547347523349466f30755735762f41497870795a326a6668736e7a614f4a78786b4f414f386d5654416e374952312f43762b717a4d7a316b534650706b4742796d6a5130447a4574615744484b764864704a3863796f6f744b5651576e726c396a4e6e377165346c632b764f3171557259705155554851435a6d657369614c774950462b61566d646e646a6c7767586f34763870734a6d68796937335569552f4b773933795a70554d47664e3370427a693749554130394e4a653841367542393864384d4c55705a74426d792b54737a4a39664d32626f7a664670585333445a466f7a4c4c546e6e515277354d575456537674705548787a796d543736633137496d665047515a724456376d7a736c362f736a71546d69302b66565a7278532f576e74706e304a352f7531696e7535446336725038417343425372427a686b53626b555347332f6a586b526b7a6b483233544c6e59326530636371655836716c4f7a72555758522b4e7a42517477664b7931744e4a306779564d45335364384158526d504741313076416e5370303962536e326635724f323536744e7939573836736558787271577a35535a64366a6c4f73577437714a4674567a733758527967425569707746497250794830703865382f7977384e386979724b2f48764d4d764f586642666c6171395673326e4c4858417246365679352f483263596573725071596250596e4e59484a6a6e54384254457a57637849346c666b6c36432f6b722b4b486758714836612b4962656e356e2b4d587146727633316a33783246396e696432597a57626a38324d2f546a35583454756e424a7266544e5a704e77422f753661576647585253394e5361326d4e75705563327561682f4c39716b2b746d572b6a5043765164703673475975454252463235644d2f41324d31656652336f646279623273736f39357557744b683345485a4a7161756b79556b316147773945436572376b4e314b71427a6648366e6b697045396c48506a524e4f373746506152366b45674e5a63534450684474392f62462f463365384b386e302f576e3153385a504b354a6e455868336937633956506462575672526f5a66616d75356c4d4e79584c665375656863512f7144747632595a7a3638756658314a744732746833477866566b6648386c6e6a48504734334a627643754866506364736c6b36476c6d75314f4c7279394c5965466d77446e625530774b4a583375324179796c3143573048797a574a366976504d6649504e5635614e7263315865534a535970646e7951545272586a42507449526b79616157645955382b6f4e504f566973756852476b775a2b6f2f3553573052306942712f3669654865505978565a3630674c43485031696b53566f484648715a734c3851325a30454b716173734b4b4764644f7858732b627874564b5a696239787861306d5a6d6339425966687530486a6d786b5a69496c3748676e4d7a4475386f794c416862715a644f666d6a71592b6f384d5747666b644252304e4d6a357736365336354c4854522f4b784e4a6a50443468764c3477392b753955384c4e44587a496a5a4a546a597157503063522f6b58646161364c49784a5673706c6f6c4a4a536b6b70374a786d544b667a4c6c725464466a4f497875356873463439627279464a4b326d4f5878665274386b583430655a7355654f356a3643784d576a4673705a7573574c46314f5a6c314951386b2f4e66375731324f446754466d486d7448717a5661504c3876477953377a49666f625255786b4c453569566b2b6d62497663723731582f4145384568725641397855356f4449415874534b487946632b54326661676a793075646d4b2f69594a394c4658736e7a42572b58576e52455639744b7776306e645448303341794630774e6d643144754d766e73566176446d376f476f337163764331395064744561466b5a37757a6c6f6a6c5567315835364c6b52624f67352b5439504c633132626f532f4153336d66735a37774d75547054724763526e714f5466722f77434b4547395858747a4d522f48566f314d3157535a30615346326138692f7655324e683555795947636c58386c4b474637484a6d447353765a5350525365367641636a622f4c664d7651723164312f495041764a6d2b4c507839596d736b6179336b6233647063623165517a726e2b4f79486c556f2f45734671702f5876502f633450633365596939655053523054394b2f3778666d48695552536571506779664e616b78535a694e7a7875357552725659793941507338757166633146537a2b7a51336e73413041457956474d6459722b4c4b665a3474777262594e7673763841764f66695a354c674a5a753458717034397251563257766d30317138726e716272522f56537647306d6276652b354d384d71474a37506e4b636c497a632b634142336335396c314934347267574b50393437384b3964656877747a31416b2b7a4f466e627476775932613662396170774e7a4a2b51584d694e594b3170577a7446424170766a41666f696d534c687248733274485352724a367a66336950526169517150534c776a7a767a6279524d62585a7a2f414343645067324a425270722b57432f3673586b476b2f3353324f673455696d69344b7354727876653572692f72536e73312f6a7467614b656c58726235643638362f6b506c2f71774f54743758697a63615a553453706234704c4649476766693253334567685945326576554b36707a6a366c4666325143356a6a4a5356625770464978583468755842556a48682b536e5237434f4e4f64453453674f623353793876724a386649334c7579726a6c63576b7a786e6e326a354a7868336c777a6166614b49636850764872734e64384c6f65366c793959636e48744f6d5a55584e52574c6e666179704a6d35315877533057325a337561686a593366394e494c705568366e4a4344363143493736656430354a337638414962596a33494c552b514c465654386d6942665a4b614731586532624b6870613179334f6f366d6c34324a476b6b2f3047434e725763326a534364307457377968654b7371462f7939456379767431784c4768352f65724953324357533150554e736336352b5766586b54534851332b32423675466732657166703135456a3258616a72764c5043744e56736274517447686b714c6646614a644758514f5769764c646a3834367930567a6678707446616f3271352f574f74544d566d4f6f39413349664951616a6a764a5a5a3968633872755a7441545959614f304d4f586e7161702f43585051756657475873367667726e785341754f2b634b4a757a636f324638416b4663366737765175597948746335355a796c76736d3337585a5639694b3461484a6c7930527a79706c57686c4c4a7770414748447a39454f657033433055624b4e70654c302b6c707a454673716f6a557a4c68792b313559675758626e7a724c684c374437615064543836302b7a7075396e76424461544578314552387979624b4d7a344b454c54665a6b785a3773337649364172766f56704a546256437146394e47537251686e59465654446f435369756d6d5a674f576c30316e6d7a346a6a4636554f3076546a794e2b56666f4a69546d3747684c795054747a736a59343647544e7131547a497454496263363468645154312f747363316b59793872614154422f5856626d72466f37683078384b377054346d794561753054394e4752414e54566139326a6138697a4e74415345556149667136554c6755584f4b4e39507968533476334143634a3764666c2f6357333664657561756148504574655a69724f50757974436536616646526252554f65686e4c4a65584b416b725856514443346e336358374b426a4e5369704774716439654d436b765572784e76696e693873766a5372383637462f6c54385831755a3764524a53536f586d356d553536744a334a56727a58555469706b6c535571706f4d5176507155757457326335444c305039664a6655762b553950504d38696678377a7a78367863415a32684c2f34333476366a35384d53327532664279355576353838382b654e6c636c7233436b63307a6d463058784b5774477a6d6a752b77563961764550462f4b2f545879444f6959374a3038474c5338717966494d344851794c702b654f52576b75674c6c4f534d38384d4d704f6f704c6b316d6144706d32477346736d6b326964306a6c596b4a4938616f764a715a35417068682f6d614d317646593145704f4c522f676248495878646b5063484e6c4d32474e78384845636b6666777775643039334c6758563659547862534d7572493064476d4d5034375779364d43367a566c75734e626d304c586f374c6c537735736d61786a6961517269626e37446e416d56345346506c614d54676241586378325372776c664e797574646a647164714c395843306148573154386267696d772b524a2b352f47735652314c6a7069306942346f5637324b714a564e4f54354555636f6d365641515a4b436a645a705a303957724a342f34367772423068724747474c5537734b6957625730506f4141427a6d3834483942727836736265724834583547574956657a352b7a782b4a586a30384e6b576e512f646a797248736c494f4f666670437459526a54774a713170316247706457416779616d61343363656738653372502b41766b74653375622b2f354c70342f6c336d666b4e756a7144707a79427a74476a536d753551636c427457536e3459364f64342f37625a68543256306c4c696e6f6636566457496a47337369526544642f4f373045784b5043664150564737523849785032374750794c58322b54525153324d776970756354474e6c7a78716e3035592b4b442f344e4c70686e53464c6c48462f64586e4d313576586d4e73504850556a3835664e314c304c664a7654664674474f4f422f6c56336161372f47303377757a705a31537a59597a34376c704857623253592f3956627659624b6148516d334f61614d526e614e722f52587a337a58306b386f386738743873713861383238366f44366d703550706f386a734275646e39646e576a6d64427a6b7078794f766572704b7a36594d50345161317649657966316e61497447493561514e3145666c6e6a386c62436668577072356d4b31633739454e6e4a484276316139576652474a33634b2f32343666712f63553653546f7a2f414378674b357172447a34697939334834342f6c494730666c6c6c4a355142654d3030794f6670774a796878706e32754b6675786f78575a42516a47776c6b72786d4f6765722b48362f546b4272322f37533439334834342f6c49366c666a62752b4e76394a38587a4d46585555335773766574744d4b74706b3475314b55573161755850314c4d303874796b70362f2f4f6777342b5947695a39626865733532397732756a32487a6148486d337578586f685770303842515166794d476479487331706532662f41486531724248676d71726b383878706358324f306f2f717570334459547737797638416a4a33477a547a3962527255326959705835734f6c576755665449505a5441567773524c4f54434e7749443750777a644e6e512b64755976664b386f6e7472514a6a3174663076737334326863796d6644776267597a32762b4c35486b544630386d487636436b66686f3648422b57757976674a4a704d34754f6b4f477850554e496b432b6d466a563646644b4b662b757376317771676a3559766e502b51623959672f51427a6f485854377843446d72654661786a63456133553163566174306c58492b685950782b3253673056667171476770714638367a2f724237454772374a393041764b4c6c484152394a6d664c466d6d637632454e32756352477a346753746b4534724a616839764f39653733683959786d44322b782f4154334a30556f6644563879766f3078736d6865766c67324f3553367936465552616a57734666305741436c67637956526b5051634c6a2b554f5448397944386966432f7868394f504a4e6e797a5257756f4d65752f786f6d365375614f783542532b695579414f4638704d4b56594f7a59314c75702f367a476f53756159514862523035764d3446352f696f556672482b4c48706e355a69336733766c76686b65706f397a714b6d444e756e7a3757684f72497a5a30766c2b746f75634a6d6631307a54336854495946534b357161764c65305438496b48704835484e344e662f34786352527470724b6a47666f534533574d4d6d694847354c5879755671766a5335612b633578784163376b704e3879356e6d4672317a7838427648696c5051346b2f61623870734b4a347a7779663848484e4f6146727a6a684942393943666553506c59514d6d61582b587a4478575163716b787578305a3278497261794b754239444f75364f6a4e7963613253756452627850412b464b7857696237437566344f367056416d44685445353768546e6d48706d33507362752b4d682f4c35424974357335524137526b6a303235365a45686e5a626148636e596d584e635078724c32444d377144644e7a3551644f6537506d426b734e36744449375a574370492b365763396430466e6532507576716c566e55536174524b344b703439696d6a686f2b764941526d733731456d6b6741612f4379704b4a346c77317532556a52326a7578793574734b6e777236365850313171366d67525a4b79695a4a54306d347751684c414171457a474d786e6f415464314765504d37567a683078676a44724b457a7756694b46363636657a3536646e4836545061364f64536b394b777674414d66756d64382f566f695a36514d647a4c3950664c764866492f546a537a735879667872515a4e7a64384538737835336c71485a644b386452526551454a6d4a2f795837416c734c3457307a4a6d497659446e544759786241383266384163442f2b5474656e767162503558366e2f682b532f53377a63726c5771394f543131542b6e2b785258584b3573474c3935696a3854714f69656775723757515432552f532b5a5375677850626f2b3254584e64546d722b4c312f36486a753965507878395a50786a33472b422b75587039763841707a727a6d39514273655031486b36505838737a356e796256396c45316b4c2f414b36613532493663354c702f774350747a30664d666f3076572f4e7032335a396549324d2f7466656d732f71482b646634392b4a65612b4e35666b6669756635517a794b33782f52716c355070773457553755417445617a6f2f6c6e4379657838615455364a6c626a613070356859664b613174756a61593433483947614e394665554d3266386b36614c4f354958616461365a54314d624c5078753035702b3535542f58746849316b776233546e545349394d352f3244664b4237784d6d70644b4f56567a6c476842387056676a6b71535875526c4d695533396a4a3038493051756653356e51655a66496637623977426e7a314f34533650794a656b6c633838385046314443793275645272757a74486c4e6c636c6c456d5646304950633650354f72625570514e64317444466d4857303132573841666a76587379365366484f4144343559484a34476d7975523832467a376e61575078436d4f6761357973597239684e7831415463635662436161596d4a69654d43512b4d6a6f396279757654546d676e54664779526d69786732356b4b507046586a6f6c2b48365031707047663841412f4677675362685074416b4359457247794e786b50492b5a764877797258326c6c6c50764b646c33773869544c2b6e3645764363544675593950374c3635636d4a2f7461594c6f59476938617439476b55394a44646c4c72665458646e397a63397a79304a2b453476384134687a304334334b41314e647970494c2f5550663643503632664a713679584b78356d3652366c665745325851315a52435652593358784178694856557a486f543937776b734c6c4e50436b39767a71396b784d78306b4a61506977377a466157465932616a3545784c596d4231503149305a6c48756b374a2f4d4f6f594c5378355647736542386c494e70656e39706c364b4a784f635a436b6946676f4d316b2b5a51476b6e526a723973365255663864434b356f556c515336475a4b4d7537344a3274492f6556494172713141514d6744746a30393866344d72737872385a745139637149556655784e56756f4f6148415a6873576243517831317847664470655076704d694c6e7363755a744d395a41466638744c624444546a2f417a2b4f354971565761776c376b525351735a4c4c35533574526c2b762b756c765459436a36453166546e464c3547514358644f52637274465230793639432b4838686c4e2f49542f39366546713177374176597a487258644f3334564b353274774a62386f4355782f304265725a61534a57697a722b566e3175577239755935374f7a3246626a387a5a355452436d69556b6e4a3876452f662f77416c4447316e76622f514e744347562f7955726f354573506d71767a4c4a455a314e2b5377522b346b51716f39374b716973664e44314376595a307263303148542f414c412f5a2f69516443576e466b626c3539464d676c645173593833797a4f54464f347051444e6f616c303444444f35644c472f7167373651705749672f707a4d7a50475268754f49716859375074636f7635454c4b6d326b7a724576667150745745737042486f786d357732635177766d65656c4e4849344f63503277464b2b73564969642f7634543468304c517a70754a7471324b3836463034472b566e364735566a6d66703472414b50766a4b4a67377047344737564851796a43362b364e466763306f6870705a714d6b353161517949315a546f31726c6961796a3544446f682f6f4d6e5539702b71627636436d76534877394867757836702b4b52365644646d7a5a566f2f7845546e3569644c4931446a4a31476666436b6533494771697874466f695a383062375a78414769794a576c707a746d42664a347366454b6d635661744a6d53487a6d366a6c4a503737777a593437353044542f4a4454445643424d6172334c6d732f774379624f636e584c6d4e4f38483069384e7976556e3151384333664366465049387a7a53506e6b72756265626a30497a6c55642f6c356f73515a3467664776695745536e73622b2b5870483233447744435057625474724d5746612b7266396f7a3849665756314665312b4f766976694e32696a54324e627950776462504664334d4b726b39724f68745a6b66442b38707a506c6144514e674135485039772f57614d31396f3161394e54634e53482f32572f552f30797430542f452f383066794a394a3832587865684f646b612f71456a314e385879744974484a574f57714479396a556b6c2b526d7838372b695a376b556877464f41752b33542f4656766e336d6c46767067422b354839357638595230354879666a332b576e696b4f356d594e4b3244722b442b6f446c613948743758587a7131674c4c5653306344324e4d557a756b557672484c73414c62765a7454726e546e37434f422f6456387038533073374c2f4a54384d2f7961394c6144324d3157763550695a782b71474234753373675653624f7574717735394f584e75314c3269723742687877422b2b554b424c6b614554324e534c542f414b527450366366335750784639534f524a394f507973384d786564443630586a486e515859746b4e46576735427a3731577069724448792f716c724c2b5374396e7356655078443871624b44704f6871523274502b513642654d2b722b5a73327833556479664d2b32473762647459545a4c494f5a566d592f4f2b4257336a61542b584c37745472516c58523633737151564f416b667a55597a5876374d664d4c7138343854754b504c763573654c4f4c517a4553427348486e58785739596c4f5678535154774c726e65313145365166513875484f4a646f427a76664732324e776d474d7a7875364a48386137503076315a5462327139484d3872714d36687a4b6c3152773254457a2f414f79553741354376345866443254346638334a355563382f7743354a352f6e5947523664775563376c592b7854716d36315831777a343539435a6a5566767274635851353454756c58534e554c2f726b4543514761616c7a6833306135335a36436950782b32745a736c2b67744d47686a4946657650505a45715135396f477936484f795178517139715255794e494e65747966747a4e4e5153665672727030766a506e336a70723474757776434a624c683049354353464d697555354a617642755a3869305064524b47746f66644c35615767796a6b3338784251656d4d314e444435723971516530455972394b44446a7462305a5553307a35736b794d7a397033345853636854734c6f51543830397169647a582f41463643424e36766541696650334848746559462f5946474f31785632507645356c74553936356631666d526663546e35394d56534457507a4c585550337856504e396d655a51547a2b3941774365665431442b4b386d70557831306e64643330786f6b694e795146505a46306159724f3751526f542f736530754e556e58457176357555714369652f6c7950326a68377a63797a366b73386c6f35736b764c416936324d52747a3070666d2b516474533837474d6e732b54694f6444767363716f353154756232696558642b554d58773278465a79724f7138686c30644a7568614559634c416d6f4e4a5a325a4e626f54456e75623863326f6d3972463862376b4a2b5956494c376a7636642f3450356a4a4e62757334392f46744a63394d4f596b6148614e6c42564351676f49564d493461717147554d41522b47797479666a37594d314855685553514e474262712b436a5154512f53696e4b5450512b376d694e4c6b7239756c516d687a686370506b5561474e456d676b30744d4f3864314a4b434d3830527a6f746d6e4d31576f78644b666c484e47577444797837716d6442756f616d7552506c755974772f497a7071366d74337337374150334a415275364c517070315539715064484630646155677630446958383259794e766177794954626f5a38763841336e734764675743304a656d6d6474476c37394e507648364879743056594e374a61364c536f35616a523244566f765a6c472f4a54526648716c4b75564e417173577a704c4e30356e39373571666939706b3933356954393953387a4e566a667a544d2b624f6871796d664375545a646e49355262556c54516b716f7055576532664a46546c6465316f4f2b7a3339556439344a696154336352504d2f51793273477831637956444955303167304669314131564631576d346f48744c6c45364b503841447262424249304777412f7a2f77426e3955456c68696a32704769772b32715979546c767a533035644f74796d366776644d4a7257646d6f2f77434d6b63344c464c41766839377545733077673858494831646d64576d6c6c76656b6d744d714431576f2f575755324e4e303345386573474e4c7759736c66756637505266527a67482b674437635069747a6e70386e7849714a7a624c43626467614a6e55364f73394b5176545650597779476463726e636f657a746766564c347a49766d4f61597a33434950394f38664959592b4d2b5237506a66432b4e7679595544653743575742386d6c4c585435484f52424b37362b5152634650654e5a6e683758475347394f6439764563464d503039364257592b786861476873636f78554c536f63585068774f326e755532536b6c395643394e5065366a6c6d34506b456e65395a3536562f5453485661335759734a3168654a654e357164375577623533776d362f517a597648362b585a335941784a66766c50672f7835647a382b76347862377a724a4e464235365557547471494556744e756c684e633952363756446270762b665375624748537036716258306749736c4c6b63356e397478637557374c742b4c6b3951667951664a77434e31502f46656e6b4a525268696d48364f54374a5072304e686f6538625948642f694b6458477078637a69666f6b364e365a313031513845666b374d35774b734f746c44676b732b666f517370737a38782b79344c6735517966463063352b5545444a77726e75437731686e72376f50686f2b4f307531527a75472f77435557674336515035303639484c7a464834355844705a397554524c736a49654a6d73314d6f782f6a4f5a73763858314130455645344a2b4f5356464c5574366b42687664786f5a5534345a4e77526e5044424c623476444275333335586139314f6775463070547831446f64476a63585973654b594642416e67467a3746624f42516b4a4f4b7648645675636f33654d6f723563656e584a4e4a72624554546f7273613170706d7142654778413035786645356f54503770544e616b446b457942496c33336f737a45473656594966734c7a6145344762395069394f48765551614d4b794d557a77314f6d476e76614a46794f47736d7a6d2f39316770792f363258706d742b5a44506270314b70795a56703265446c7549667573676b2f774449506a53786d6879443666426b54536b2f6d45356a436b475441547a4751536e5a444658464a6c676e6d36777150477530676d685a5553444163646d734e7534504c436e6b4370736f68644e543376384171636a7275684a5a63683667535663396e642f7371714e66616f553350374147544c51364f4f47756a5142645175584c383354725a79626a412f304b5741664e43412f413170535279756d34596a2b316f445a4576493439443161672f70737833614a66642f6b685a706466514879663468482f414233516c63723636516465535257564f307032664c454e7a466475626e53566e6f3653412b786e6678637a457a6972515a32356443323166734a474f42665543326876794f44574c794963764f5672362b74504b334a754765694f5a4771474e73772f786831543572416f7a6277637945474d7866306f5a7a617a744b6e317554544f5a412b517163373331626e693156536453724978747638416c6d62717056364f6532574846304d716b737774656470564c62396864444b58764e4945354c666254612b627262664239663047392f354d6556655665704f5434546c65462b6e586e506c4f7244683553646475484b366e5662704a7a46305a724c6a6b7a615a466c7a357543587964436d6e6c4b6a39786f4d5a2f367a704556335a74676169796632392f7a743956457a35726d656e6e70483475795a54714e76794479496164502f73726c7a33777a5a4d7958484f34627172686277326f6e70546d38726e4d5765777930393970562f466177752f30372f737465696d4b524e39592f5844314238363074675a6271342f454c5938767271714b69506e313764714d6e7361597368372b675768504f6d5232416378682f565a3970763841445749472b66702f2b4d583458656a6c413365482b6a336a66644a48467a73312f494b312b64612f46304a7571755759557064334f55356c326c3876735762766b6d596f442b7372334c796e56314c64626576734c573266584452656d5449786747487836336e7a4c524d6f49735a6356334a365638484d6e5762666a344c70576339334739722b6164556f312f4a5232616b5572504e50415648702b72477658396c692b736a58773832474c48793574423962324c6e6769556e5630546c5955386853756c7265305548374a724655645a77774b594a78486a48332f734958354e35466f366f5a6c3774733866496f6d74472b6a5664516e35752f45576e774963375064787139377631346131763651464437794b5641484e5548396156726a6a496a72664a355642587a61314565545659657066586f5a575a32686446536a696f4f653265613677485437793563334e6249394a7a635976332b78587a6345426e626a73384a41665139516b4c7a4f33446d4a386852476c4e5647786f5052314536462f7930536f7477764c5a52525a632b58554b7370576c376c456c6f6c796878664e2f545a587747746e71352b6450342f77446f5156712f55663173394b2f41776d7a72707173634b38436e79413758716a303545792b50352b30357568553750575643352b306b4c6b4f7a3263346b684e5932727058763072617735362b5a6633702f514646706339492f516231722f49494e795873636d374434686a346e685632752f5353486a763039766246764b46387a30334c52386b67706a69635533464d465a677265767331343756713145654479662b37722b547359364869655436652f69703452746a5a5241546149504c2f4f354d33364744457252306e5557553873744a31576833744145615a7743693156554e4b51366248732b6e3133616c685a336a66396e62553951386d5476354c2f414a512b734871494c4a71497273617666747a2f41424f6e5279716c2f584367716e574a795a584c477567477135385855337561782f73345077316e326e452f73394f7452613334762f67313657666a4c35672f78485939476646395466713352782f48764b5277456679304f506c4a783235356f5a5230754d3248793656504f556945376c4f3243553173633833466631572b7265385a3344734c34783657594f4f4f666c71686868586e766d374439427159664838714d4a56763773424444597068657a5170486a58425250536c4b654f37514b306e49726d33322b51745843385a706a2b6b73365935376247783433794e61797a68306e332b512b7a6f4f734155564f634f61756755644363666659497070565338302f315545707038504a5054676d5a4e70564e744a4f6c5a4735744d5866714a3664437957785a636c736c4836715a7970543042615954705a374f4c6c4548526a624979317630394469727a4c744538313532756e4d6c69354576516f4669703432526c442b77377a3575464e7a6a542b4678667342464667324f5a2f77424774376b36366d4a50694c614879744c344a6153497a792b726a754b584c7362774671454539636c3034306d6b4f474144543062594354524f794b5256446b36705a71416f54336a50496b736e6f7530616963726f74344e5571574d6e454f6362313379386142666f675a7566533357474e646c3767575257323649554b633770636f737335794e3972414c517561574f517337517a3550384a6c6f48733877424f445453356f6539397638413543576477645855494e76514e2b5747616c4d384a7157324275623171366d57564f6f425943445530756558666562585169444456592f367136616151616558533230703943485550374b2f5a2f486c6f68506f2b356e754767595a566f712b62346e48394b772f5a49594c424a2b54566b353161666751747556783156317137366c66587830436d6d6144347534784d663735616870487131476b4b63723451542f6b5850366e684e764b5a434878526f444a4d546c7370576c6656665a714b7954505532464e4d7450377a7866596c72313055547549794f6b3661565663377731434563382f6e39786a525848326e50362f526263324a5539553279462f31307052375a535774686f324b714b48554d456c6664523372375076382b55434450496b314438396e4e4f656276786f4f704373726e465378374d566568736147547257646e6b78355844323949436b6b706d74584f6f7036577a45774441786344667566567079332f562b76334d544e6c343031556b37554c4274503032505461576238543135625a55746354794a4246523750616e67475150412f446e70617854514765632b3955577632794f517561314e4b325179624159396248646a4638374b334e3578557450414d48463833777653514e357137582f577931357146567270346658562f444d794c556776464b32343569734f45536332646646495231726b7954544a4f4e767a4c55494c355358706f5a4c6e777136354e414a4b434c71767051367569334e553954324736726c424c2f384155432b496c4e6e44696165546539535258774a326e7361313154545133725138304f6d30565179554d476c5770594e64544b76354a796459516e7a584e345a46372f5a4d514b2b552f6a2b45414a53702f64776678756d2b6a5930587955642b51707634765a6d6d7a374e656a72616d64482b50653561564c5331552f77433267626b732b4e6766304471596f37627931324162752b35474b3663562f445657375130614f39794e5765525945554457532f41775157356e784a37375075484d3977676468557a6e754a416e6d55614f57466b6e625575716e7a757a3046564c5a514d7a50644f54572f374361666168622f47684e37316853744e494e784655565974746d2b50726146682f467a6a314967444b61684454566c2f782f464f463969304e59464866667754393876376d464c2b416e576b5845386d4d517236386b7a685a58777538417773732b696457506e31546f586f55364656544b6c6639737a487646536d3031436f77574d67547a516f7a4b5767696f5459786a364535435a6e396e3566525745527a79757368354b517665307036366b67646f4a2b4c34714259444e4669386b56305636762b7a52556c5847335a576e394f6874636a71484d3052356d72554d764a644364716b394536586c704d55307a6477477041536e376d4d6c546730796e6d436e505a56477430335a5a4571476f5933772f595a5a4d6e3561432f35616e7074364c6d752b553070654b675a5563393336547057526c514d633136395276464a647a746d6c526d354658646b2f71636a59725171704379594f6e2b69633334674d544977434436666c55654841354e58326c50767a4c4b38364475714c365a714d56616241527976544a4b6c75423146315356736137762f544270756548375536324e317078304648326c6e37444a64344c6732632b6131595a445945315550725645666b44596e4b61454c35394b78565770724a4f51574c483455764a3347636f58374e4978474b686c63576833596644337833573739516f454b716448316836712b71547953646f54355531454966384156304a357155544c4d7942615872726f6d53733743503132325a79506d694f643259664a5775314a666f365258716b4d73354f6776546930457232724735376d4969692b656e36524f4d312f66564f53514142485258536838445679534a5a69647837313641427a2f7743685051467650494c2f414b594345376c356469324857433633424d3736376152536c526835612f37353371463533357533307638415233774a572f626c5a557a4c6471416157547376386d5633597a70624e69434f685874315a303061684343656c775376305a68343169554b4474396b72574e31354859442b32782f63412f452f77416c2f465830543943736a7a45665262643942505362786944555a356c4c4450384166387344783062746a527961745a30523645624b69304831436d496d4a2b453174706e6f712f323832766f366b616c727a586475734e676658327a3065326643504559702f555030776a447a507a504531352b5a2f6e55736c4f2f3961786237396470596b35576979727837782f50507477585464354a656b4156302f6530363033524f6473386f346a2f6d5a2b656e705634582b582f3439656d56334133765372303433362f49765566623843644a35466275646d67457644636c3074332b48324736525a4e6c494f456c7449714f7a484d3178746d364e4c53746253314c5a3572645058722b784c5079502f764a2f69726434503546346e3656656c32743544716477696d38533237354a66484770315034386c52616d7271304c346b7330452f4d796d64764857434e55316963376a6b6d722b6c505a74534a7a612b5a486d6b3855643570362b6573326a70334972646f622b7662354235447166783163514b313332576133486235634a7a636c786b6e3461663037394a6e30694d4f6d76346a563354585a574d6a764e36592b6c61634c786e507a73754b32715075626951625773364c56385a38676b5a6e4852717a757a68616c695746523933444b55615858413770733461464c2b503475533175614a6d4d34477732636d544c37537663757331694844793674475061696c5a533352682b363965572b484b7a3257654a3348447062587a396f615a66516d6c43592f6d702b766e35417050344c44546e73526b625954747356754a646e42544e5269305a655a53512f59374c6d61696f7453372f414c6d677357794c544f434e74644b614a5a6f3430304d7a50576369655659764d6f5a7448577a454b6869596845703572562f616765722b5032436339486a39564d777a723875586f61514a6f6545596d416955305a68536b67645a756267336f327a4f4e4b52386774325964475853706674782b7a457a38335272757973754b466f36326f452f336c394b6f66666e553038534837346f4a6e41687772692f6b706272354a646250586d54636e3866746755377942766b4a536767646a53716438477038624a6442566870306f35762b346f776f437454714a677672774c38625565583178364c4935636a49526d6233335538744b6e574f342f47696c5a544471584a2b57586358516e5537784e46447451526d544851794c343272625362784534786b624e73353476366367794e4f7034394a676c61464c6d3538646c3956654d764a6c6b304b616c357736562b6c4778634f67337659716b676d7a59412b302f42795571382b4e70385a46536158722f343331624b4d665835326f6d624d6b754b4e567446724b4d54526c4348567875506c463265786d384f674e62512b5279662b73797469706f432b76623363393869467439656442646d70626c654456474e4f744c506c61757771696e4d7a5038416e51312b5658786a71473268374348345a794b6d6736682b43474f4a483255394f646d65747369703862316e38347966575077546432764c655a6b69664b73387239364e5733564a33413847313645763868335336784d6d663846316d6c4b35334f70396c643530314e7257466a61627a584e62594872423846395668383138656a75783933776e797a4c53614b454d77504b7357676e51472b566b4849775758746e397372696d465843575366724f41654c475a7654344a726a683252482f414448794465794a646d367279767762786f712f70565361565733434c62633056706b4e6b4556656c4f56792f72713070514b6b6e66435a2f4d3431646e6a4e746f694f2b746f2b34306439517679703942346e564b5272662f506e75444c70436a4e3857594f686d59664a66354b5659377536544677354a43363351564b4e4e6e79714b79785837557850666a3072545534384e76727a485037314e38783961665779626667383450493841394a507436695966532f7865696875357474774d36485470782f4f664c616369633351302f384158572f446d6c6b3649756f6575397867485a7461785773346a6d763469714a664673715a575a6b59654e34365068635675416e7876782f4f5533505432433275666d666d6a6f5a766b6c786c63767962516c6b2b584d6e2b48723444376263706b66734b307a337a4850495332764339365878317739794861693846766b71584a7974446966694372622b416b614b61724f3848464c4f6f4f6e3546357448556d35736c6771624258777069315a6e68316b4164544972676e6a737574446f567733564f564b736d327a4e6d77732f4c653244556549546156556b4f5776344a4d2f674d4963702f32382f335532795357465062476733797244622f4141554b7478765a745054356f30625568496a696b574d316f52565661526b753575663546597a3477494b4968643178685951527a615155397452726a70316e73527064675461724b363545766a576670305551774f6d483673543745322b515a2f64476a356b4761336d37744b514d55705536696b4c447776544b62307a793862546948427130354d545945356e5751655233617375767350356e54654f354d6b4d5864717865585651794e7a6b786d7a376a67492b635336734a6d30323639774a6133706c7261476a7036506c56466d56615469706e79737a5830624f6f612b645771577452446b7071724a696453696a7557784d3759352b5743626a457866376178614a347850515066432f794838617657335067676c3752504962346c71556b63327a537871376b73614b32344d53682b396f4354454678503170417a5339387678795563356161546a45783145423954507954676b796c5a73666b41342b696c6746504a79363477697a354a4f39626b49304c355a422f6b4f58564d51644278477365574e503571526d7237537054756a684131686839514935373950516b6a69476e57725339656f586b6166336b56536a6e3030567442792b70464b744c735946377441484c2b486748544750737a716463572f463968724c36712f6c6a7565444931636a46305a3962643877776e5a7244305034394770487131416f594b5545566e544570646a695879573041596c4a6a6e4d68334f30706f6f74585469307a4d696750526a304b387431376b65592f425470372b6872525758374f6a574b356f74486443366e5a49614e4e6852756f4239684173787055433370396a5a323643566e2f5637366b526d5048674f6f767037364c654e34546f6c4c334c6d793261514c636133302b4f63664333766a4a6c555739715a3553745a50645063594c6d624d716275623769564d594a70627a32764e766b4e782f462f544c56386f54753532546d4b51614358717757327958562b504956614b57535844724a314454564430626e4e6153756679492f5a4a70553139392f55357a4d566a4d794e6a73443050325555453354713863586944626d66794259656775766d6870342b66484f6c4a706f5a38487a566c58476b6b39616e3630797a53314a4e63564f7653622b45433433346d684c2f46534a566768715a4d76623437544b786344586e466c37586377644857315a4661693172616c533373712b334232796b466646373348586d4d633378335543665264395174637442444a6476495a766164396456725a356165567630644f46507a5a38302b66636656752b4870552b78612b303951317a776233415766426c32746b70584833555a634334535178442b525a3436756a504879614e4d2b4b7a2b55475678314e692b7a547a5973506e554837454141726e6a784e6e38697673517153587254582f4142477859485269326535636d646c517a45373470727459313657576c6170302f77436f73324d31415a447a4b6f74767434676e6a3544507063732b4a444d334b6670553559304979746b43687063506448487366342f354c7a2b504c6f464c576651476e3468427134477a41735576695a6d5a7a494b6267315750444951786b346d766d6e7153574a6764676f4543314675664957425a44577375446969356c41307553595a704f6d765470433556554238557a43526f6551447037396a72633045305561586b555357554938626a6c53704f726f4979616a6f79783042304b726762414d2f4733334348324353453941516136375164706247584f6e5571766d6c61582f6b515574504d2f6b61646937794b2f4a7a7168385252386c58624743432b714e4539504d71435677534f43554b4c56323864776155654f64646e38374f676f746e735569737569726c6c6c4e566d726944624a45686d686b75364e6e536d58497633434352526d6d452f773537587068627562634d626369376249624e6f776a707838534c39354c47324b326f61726c537763524c523548597554377a6d4c6f597974744e6e436e2b344b676e745a4e7862646a733849454d3956665272303239584d4b5a766c45466a366368656f49587170313837517446486a796171677a676a4a4d7a727264496b674c5555692f506a78792f6a30686d54302f576d6c72566e454457576e2b32702b4d392b6c6e6e353934723577334e566d6f582f41434774354e357058694d304c4373306c4c78507530474f774f6f4f61786e32646466544161562f662f516e3953765366614c2f41432b6f324a384f2f473738665043617635337862307238617857486e61475337794b7a7852484e435045504831576139366372576f533167386a32733831554c516d5a75505366764e4e6e4b5a6e5a7a6538384a734c63746c386138636972334a705a496e4b566d5253705a6959335a39684335474e794d4a737a466e5071624434652b3566585070457763644d45383479474361786d65574f675a65492b43366d4e3434586d766e6c32544c366c2b577968462f4a424a39627667734b7070622f47764277682b486c45336b77446c353455504b544f46616749577a4f6f366a3562544f5a784847745158704257706830764c376b2f415038416447784b3267704631354246345462546e616c666b4471796c566c79773369312f64476757423869484a6a2b48716143412b56656c75483575756e46387838522f6e635079627859386d36627251306339666a756b72482b332f3841636b612f6471523871595548324236756d6c75624d68616b73443633625261306359734f556e71582f614339424e6a7958537538453874386a3856783231317735506a47546f7736656c6f5171576e54486a68304e49476b68716d4d3552386972362b676d6330357571596a3948707237546676706b522f782f3841737a2b696b752f586d655636586e666d614a6339566d425936586d546c7638416965556166766e33532f36394c557330302f524e6e7a4a504b704266514e497654503841697037755564437678362f477630793945374c6f76537630743854384e484a685a427237646b452b78366765536778734e7661697658734c6d6f64617234316444346c65776e66557a5674355231334d6233746674572f2f41434e6a352f542f414d70614a315278667830656539547056354f6276725a6d356c433349693246456a355a59396236733634575166636d6778774f64314d7a484a644f464d30384a396655417433306f6c5731724e5a6464506b4674446379382f4977306f7975615538723549463657674e686b75537a506835436b45456c356748747053346673745265593638516c73656e68654d33325079362b36303864333036746e794269345048566e5234756e787572457a4d45632b733772426868316e6458336c2f77717a30796158324c58475157726250435268583458516d384e6951554f4f334a477a5278386c6c43313138444768353139575238646a714d6476386844496c56633661466463516e3048496d4173393034323977412b5765425870566f53617556426b31495674555a74584a4c716e7a4939316a726375644e4753796e5171666f466e797a2f436c5474526954372f414f6f75483759337266756d525856766932426e54374f783551695078323361634e6d506e6e4d6c4335724d3336374956613975414d6f6c556e4a6e596349367232535633526f636d382b526e7961307a4f63524845553571654b78654966525a3433753375304e442b4b7a642f537973724a717a4864783336696c7379384b6f694c50573531576662796a7453382f3572794c737a2b5a7330626244654c30386269322b503473794c53512f575369444f76745a6c6d717172667063326a527a307557333745374e36477956696e4d425546595170496662326e495a6a6674534e6b4d696173594d5451476d656d3257664f6b7178573376614a77794f334d4471623556547246413854565a336a45394c39646a4578344357392b576f503548466955334953484f6f776a7939624a304e53534f2f4e3570327045326163336376787446566b2f38616b61754d5936514b77533275684a674e4a7a6856766b477a792b7a6d61476571616645544c7663574e7339476c4b65526d314a6b38667a64726b492f6557684f584b7037424d4c4a477a482b674d6a2f51427a773870395746336e675031625373484c6870374e42737a614565517441367a4a336f3570534a392f526536656446504c325539424f564d787632586d626c62784552306761336573587274682b412b6d57337431376a354c636e426c43564b4b6566656456656c644f316a5a326c72712b58506e553361304c4d6f4471657a6b31464e4c69736a4f7455326c615a746a48516562505938776636686556362f6d3231486f6e70655637376454454366374f5a5a6a5a685851393671503557576b46745330756f45456b394c5139774e622b7633377533474f48674c75394a66544f7a526845365172676c6770346d3973636b3279436162444a44636875626f7a73474833615446754e37766553794d51414830455343706563526a78473447443659347556745266783874426f77366d57746d7a394847574131793634773864745a7464414b73716d73624861395a455175566a67416732686e567a5a7a4d7a316b624c3657636d4878613163526767635876336e79354f7266354e787375534744713637746561615835716c73314b467872623977724470766335796b6d706c6373435259666f3637786278304d62354e584c3139716a4c31723944323664574d506c2f6c617444532b475a74446b5063795347794f534e30345035505a384b58642b4a5274444f6235746e714c64763841462f48382f45796649527834394f62324a4f7163386c513257346a586552515a6a785849773537735875682f4675656a737848374d654b7561696b576f55364b7a624d5147423567554a726537467a6331317a76465530396b472b6e57733532367250512f77445461474c6a6a473750754659746f72716d4f66362f53724c53736f545156506c353673443177394d764a62636a724b6e44586a5335365973364f6a4675735a526e7935575052446f4e766463696a51734a3358546d6b31774b4d4b334162717931744d5770614f34646774723144386539477647793955664f505550777630347850484f685a6f36473972723558747a6c506d356d736d485056725553675671576551725771644e4e61796a4749556b625a75447a56724d7a4e497276484c7679332b342f2b495165516a716439594562464e6570545a55666a6d4457436d697653716c6f6d3571736e352f4e444d516c524e565153573676494a682b5a4c5032776569756a715447497230484f37312f2f4c6a30423872386d3859332f4366494a642b3362334d67394d377874677079314b3359644b765172695a383459626c554c6b6337366a4e5536663448332f4d702f32353664613664346a46754175764e7764665137525a6e374379526e72783756563564747835503847657331586a585776614c7577306c2f4a4a3433686666486a736463344f50393266314153793869322f572b784e4c4f794b2b44436a4a6e64636648364c69706d5a504a464548636c71526f30687752726378347a564a716d724364737a666d43524d3434794c484f4457795561574250504c35426d336e33735a335070427250734c324e7966433232664d6e34352b4f756a517273767a5a726c484d487a535475574459345469656f772f3841413036584e4369396e3348586c4d4a6145625a4a6b533674614d58736d6a6459706165304d367a507930676334742f6a755a5876344d50334b5268544d5231466665552b6c72364d6d6855304545586a47587032355a325a6173774e3347677771596265644e6650686e637336724e436f35794636597a732f6632336d5449546e354430762f69644e347070656d486933694757622b4a6234443474524e6e636576715a3164546f4f534b684f317331544b714766597161535175544d5a6b437069466773346454686130794f6d48686d44716e42446d354f5055315473523032556c764d636169486a3152365066343674697868596133436361656c3239365a766735504f694f62375050615a6e7277774c467a66354752617865504b57314d4c466c5a6f634971564e4731667530352b4b326e765a744f6e4b6a764b48444f5842396971506d5a37357636714e526679663951702f4176427549696173664c48703867717950337972546c796c7a6f586b362b74746f5448584574636f7730634a4153546a54596178674e4d644a4157756e584d78506950485435683456543539356436702b58734f39477a356a356e75587a4b396c4e767859724e6a536d38523074505378356563324e514e6178646b3351456b73454f6c51364a59674d6670784d7846592f43486d4e34766e2b776c557756756875626f36534e4f6a4c325457697678353253724c78386b614e4957463958536a32484a58574a72707253624a4579746a71542f51612b2b62656e7432786e76546e654c6147784a2f4c555459664e52646a564d7a386a687750434a67466b38782f6a324e4336394c576645445677424d4473386850395769652b6259694251766c7670746467365432707a456652374f5156533273664c32746455596a446f495466734e37696b764c6c7152783362412b59676b55445a315556636b7646346e727746512b695071433338667656664b3878696d7a397277466b6e77684670456736596c614c5a7845534c56577a345a5359717a32755068716f5744532f32676657636d31643963664649375a345035536c355468727352713047656e62324e7a3077735a52546c3971484d7030707469574f6e75663841446d6155376f5a6e664971567276676455442b6847664e4f6e69635a774e6a7652547967744b2f582f5254354b6d57317a4d72736d325934352b4b3865533058495a6f455339435643786f476d55574a57724e6a4b6a34683636555036706573523036534f6b7667506c46543950617a39485267735a694f6c7137354244687959354c387056474b2f6f32506b4a6133664252594b32635164624654527473643241675753734c5678306a67434f727153332b5153304c30636e4f774b4d76444b334f6b374976552f6d382f526f716f2b6e3254744641325572307056685944364c4141456647496d507a4851616b2b73586c6e4d7148626c734f4a386e5a786c314d6d57364b58486653694c4e454b6c6a4e734c424d2f62427a78737447736e4f5053556b38303650596c58524848474f38634864377963764c764c76456344577850354565376e5a49654a716337787970544c72454b77757a3251746e7563725346326638414c393976763646626d726262374270366f6a4662534e324d62497a38376c6d334d7a34456158666d484c64713555564f447167722b50564a6b4d6b77316a4858384c444951364a75555637574b433239444c34383578626c37786465446e5735646d684a34306633316b6777546d6157584651644965467657684b356f3863757738347a5177576457344563735a5a6d752b717870476f67704e6f74316959774c624c4c67322b3656506b667a777a2f4144647968686e68347556733670683532476c4774754b53366c6d6f36507336444668754d35776a2b796c49706d6f4a784a3652654f366c413444632b4d475934726e77744b6c326e436c6b644f64354664665435506469536f4b685a7a3543316c584e6e717a6d652b4e4974706677357147652f506d4c4e792f537847567259754c67654b53787a62576658314a777835434773564a506d3335343830726331535635496257476e6f4d613151736a703147475a467a3454727535596d6538534b4c307038516b7130632f5836546b356d356a2b53526b3644567943366754754f2b6e6e4d36686555785476722f506e39576b6753615a683666476d6e36315a764d396d4d675558675766546c6141354f49314f70355264727859563267764b7a702b71314e657a59376753426d5a4b425471544d683468717532644550356844327a684d464e5039573363323056736e7853504935426f6e41396a382f73656a544f795676537a66493242566b51334453736a684c535a6f564f6c72434664487574796c4734757262476969776a5a772b503035574d5836666c6646705674757a45544a6d386964552f4264644d59796259484854507a55755838545769437156354355715548732b53594346344a546e524a7a655a6e6a37563259685a4158532f56695a6963324e72567157644370614b6f6339756c486e6a333264424d7a5567757438393767496e7a45533568596e6e755250425771673776336c5356567970646474485432584e3436624c787a4964484f6f76526730444d6641346678523075367367537564534a78786744702f547245304776616d36314c6971592b53504f723174624c5661544633484f476a65495855574d793556316c57576a372f356a486570326c395a76324f5446706a70496a70656e57717a787a36577a684c696d44653734346c4e5a5854543354626d6974316a5458396852665955744d37476539664364487132546d4348396f76735a343538773237365a59477859356d4d7a362f4a614b64474c4632654e3031357a53727171794d2f6d786a55535553697663792f32366a6c424252525a5a706649303239304c4a33326a763643786454772f7967736641675a4f46573837476b5136753637543264625971314d4b725772514748624f3531777273713867466377324c6271773673724b542f414764697871497a71654e3656726173375335342f4c566e61456433626f325a6e6b4f7454444a4f58326b7878696e73757375646b5761556c73366c657a744e6d596444356576753647412b6b3368673533646a4f7a6c3531636a7454714a677763426d56723473582b4f566c4e32363456553539715a3177496334366c556f2b79373576593251426462666278466765432b6d65584a624a79724574667253582b4d4e2b474b484d34624b6f597279786e366c4d576734366c675446354c324c635668684d466b49465732366e2b712f4d576235353446494f46345235757663536e79337871724f44594b6c756a4a456a4d7469316f6f5a4c4933585769714873645171556c50374a4f6f6c61784153436e3230693347316536776e355a6f33497a6c7666465448584b2b577878706b5a6d6f385446336b55766c44307169334c4b4672374336686e3266594d7869356330304b542b2f3737696173394e386e5175387266446c7a3332354e69345a4d42374b6b45334b757a6635574e726e576146434b4f645443512f416b702b3871796961683079716b2f567833322b59724c7937306f3637477a626d356b7156614941724d306f5a71545933576f776375446d5746586a432f646472462f6a3146443673366936624b474c6a6b6d52755a654c785058674b78797362436d587161557332667237414649624f3557684a4f4752626a584a5456337630634d4531575635495875516a764b53426b592b305361376a7558453271776d32542f744b546e472f7963733751336b685035464368472f7459655478544e637338676a795145626841526853637a66623854484b44356c31333138524c702f47302f5263356b766453625a3071663432354e4f572b424e5335647969712f61763454575a39452f6a65784854555847687876646436633145335365394e666565516b73506a32576c55474e747430383931464d6e6376566671387231585a6d5658374f4a6d30344e7837616c2f77446a3839497a554957424f2f6b75425038414561365370542b4f763143443872754d35466c432b37376a32646a4d7466313679756d31644b303554646b36376d5250545a6672565a4b2f6b2b73632f5853397334456e78636450546a61664d516f4d7038656c6442526d4a3066496334644f6d33547a4d37547a76666b334b6c3761566379325a53742f53375652523162706d702b734b536b64516f476f396d752b766943612f4439425557337874764f34306c6936426648706f31703236377161616770386535705a416638416135567361432b634661357a2f77433348596b45646c6e6f72377a7941506338432f574a7a517935527279312f76574a3338506f354b6465486d2b3648556d575665667774516a6c31493136432b6150307246544a396f44503153676d4c5a6d59377534466d2b4a332f4e7255536368736d316234352f4b6645504a2f74516835486d51522f7736354e615765484b6a6e755847744e745158414142425931307930383631584a33313851643266776a2f476845575a74546543654f624f2f4653323179452b4e52346367614f744c513269467273334a30465a4f6b3355334c6d4d5a503056646d70615175564e4d74394e666533786a4971322f304738487250766b486a2f70463464464f6a5270754270536f78624e37783742626c30754f614c4d7a506d646c385773702f6d764b746e7848514e4e61454e6c42466f76624f4c572f722f36416e553950764b5630684a6f52585136744d2b5871796b6f5a6d4e52556847355071344d7358616942655477335a644c61714653634e4c78344d394331312f7046367a3334413133684e446e364139486b6d6e7963616444586e58444d7763785966616e7855315a71306471686274565471436d714f5a715a556b314d33416d70744f7745367668626f3848596955374c74525a6d6c6d305551354c45304f6856687973774e554a347146786a48554b524e645176456e54545a6131564f305a33544a445550315979614a31614558335849713239486f445061563937634f7a4e4e3176464e324e43506c3748584656473164504f797a764370567864427a5172727654725079447a4a32652f546e38346a74796176472f4a504371387175684d69576a343173794a785a77306d6f5a63484a6648724130737974317a47752b466d6b463336536d366d64316473353239343364394b785a705a33377044486c4c4c64717147434b76766b6342335a626849316e397171346448484f63716b756f554f6253714e796863704b47786658706264384932587130657634554b5353656478375a44644f79505476785561485957354b736249673866397772626b754a387a724a4a6b47344774665a542f316b6e69482b4870496e547151464778476939707a7a2b524f6e7a76317a7143474b47614c4c4768564b5639647656566b4b4a566458396e37665255494b6b53416d544e7939484e6a69675653576a354377386c2f455a447443564d62736e323439665a6e3372574b55344f6d36646a4f652b6d6374732b786a576f705544626d724f5a6a714e567656564c6a6a4a7530726c3274634e4c7576356c53522f584b2b65664c364f684f74335a46704664375749706577382f7078314a2b4d77374f4b645978694d64427a5839545934785736674d2f3459326155586469686b7a344f6f444d6f64657a526f68726f2b57754d4d33516e36597253754b52746766576941334a2b6876584f4f49382b2f724761452b6f666e375444693171386c725539556b495a6b37674f62514b4a68646c45567754392f77415145766366375334652f4366502b777a71703850304652315a765a714b6e7a636f7a356e745632426c4b61586f6e545046396e724644324d5146784d4a774c4d464143414e7650306e3967453170744d34437550342f7465526f584634366e6238674b6f34312f446d4b6f30446b70755a324151704a6d66376d542f48397270643649683876744168367743464f6c707248574d69352f4376785539652f554f534c2f787630723832766470784c756c5a32475a504e434d64537249533433367043674744636d655a2f515a386f664e2f756e6f343578466c4f705374754e7859766e76344f657466706a345a4635767335454167316a717458426c3065723173314d445854496663457568786772637752584f5966375143774f635337324f6f4b767661336d4946596568336c317669476835546d6f6a426c4f7a6c3868566d4346556a31736d562f4a535756336f736d58436c7a522f51764c354f4d5453376c49474a752b4731347a737a3078413367782f565472342f2f4867544e484c35446d4d5932544e4a74673645306e4c49715a324b7a6b31546247744c38646c592f453441664a6f4a656e343345494e796d6b7a4f5936534c612f38414e3876756c6d4d3735314242716e5a67384e575841326e2b51736e5a6f4547562f774351353441324d6e46504748742b514f6c6e6141416136584f2b2b69754a2f422f55466f4e716a526e6d73315075446e626174482b4d564c673538766c5736725948323358617149716e442f342f32485568573370562f495038716d7a6e444d46464245343767616b304e50523138366a51546d3161393231585a71464d696d665562685544715a656b33366d686a4f4563574e4f583542396a745848664d5352396e644c7165574e6754627776314c31664566577230623838797372705259336e654336327764315a57716876305534797036726e51385a5634362f5031466879655650492f7332484251414e6e6b6d4261733272616f3963336a753034636a4946614d7770676c52707864316d30732b786e6f7a4e5458676d7230376268304e724447796a7972704c516b77524f4345734f6e356a396e6e69365054335477364d374d304430677464706138794b34594f4c716e79394c6b4f7670527955386f6a5839473473396363363356534c5866795a624b57667331752f71747433776a5a4444726f557932576f6451374f36743273797a4c5054585330485557464c3131584a53344b2b5a754f6c33316b6b4357746d584e2b2f7230392b4845534c73554e534f7a72486b316555324e754e4b2b57766b504e4d556b484d3770746855365853664b4d3545436f782b4b5133423952503167514163562f79456868394b50795275306152667279305835336b556a4e4b7a596a67514f72725a632b6a66715a53493264574a613261393036724b4f6c5332395877743656414a6e363663326e35794c3839497649326c6f424c464268755368536b38306d736b6e316a6862537a79507877466c7972516e7a5934324c793571575539396a766d416e5575505037594763786d4d445137386f66794239555078372f4e31666b58707834677a7a72466f384878707655584d78337848546a654f54646836375178687057366572794957334f363139526d5247343169315465504d39744f6c623655526132427638413776726c3431367a2b4d52446d78362b786c577759715a45307a31342b6e2f4a325235352f774142746550734a6b77366934524772716b79735941413467414f534941735972736d52724e357036672b48624c612f474e432f63783962773676556d4e3830466a726358524379344d566b327667304f706c334736453849664661427041574a43695071586c6c54336974703477426d393677656465662b6c766c337042712b523443764e6770765a4436695a4c594d62503875386579786c5267342b73564f6f31552b392f31353058494c7072737376557a6a7668624b734a69735261746f72796668477048706a6a376b75516a784c7a4478797654444c6d7578764b6c4e6d3063384b7a50587a5754397965612b7441554c752b4e726e6f2b317a7655324566317954527a36774a316d497a6d494734666f396c2b4265476154637246757a5a2f6a72616338505a497453666c32375a735a467070444d6f6f4a4d614a37726934786e7763554f6b37374f614563383166395954615a36693363686c5a61656a35556e514555712b79657a55666a323155736145313266786a3543325048584e7559374c6e464e456379756847614831314a2f774361654f67765045536a594f4f4b324c756f656b3337396d52417a78742f434a45717754472f50744a6c496146575063564b782b595347612b56314b66386c6c304f4b3372782b61656634333672655965432b4d316547656159506a3236433944756d59516c7461664f69752b774e6d315050744f6e316f55754941634c36666836456e7442584b6564464e4c4e61326e6c6b4856666d4236652b71715a2f47505076466c4e5270536f70794e4854643439354f75514850536430517a615634542b356952545a4a3959463857366c58754b65596f343278377139654e526633695034392f6a2f356b6a5238317876454d4339586d446c3378726d6a314a4d355658575a7239616d4e726468716f5a7a595a4a64336b796a6a6876556354765a536e68306d3934355a2b455262794838586644797753693866646f7762356d38724138696a6a7130775646636d5a32556a51653579734e302f75542f414a584d526f464c4e45777754543975756447704f63794b762f384172544e66506972735a354c6e51625774494f6877744f46536f4e32392f663546713338526b716e6e6c64526b7a7058382f774253714f4a4d432f6d7334686b794c65386a4f6338664551576e386176567350384179586b4b4d4f764f43335275793177317761584a745852484836624a722b536c517a4e7475795966686355535a365273556c34546c3730324e39664543362f7835395a77695271595867763172726e4b7a58596b6438562f635239577979474378464f6f7073324c4f76794b464c6e794376715a67336c3937626164724675766e54385a2b77367465676c31575036562b4d5a6d374550386c3476346f6c476a625464623237646f774e5236353079614f73585473314e4771575663704f417167485353735a503270564c65652f576344612f3077386b344766586d6552366e4a715636504a5a546f71646639312f4168484b326f6b3357645a2f4639547152744c67387074442f41437064527a6f6f4f616c7137766e41766278386e776653346e6e4a5a554173776450703646476c39714f574775714c394d54786b384a4f316e4c65704e526f5155417a3959564a38496372546d636936385079744541794936623861742f512f77435a5a506a6c686658504e4739795a45566769655837516950666166574d42596b494b54374f746758486a37764d2f4956417332322f4755346d7936626866393136786f4f62534c6c416b6c50624e4334534c34617736556673595a55417639316d735431445733794d6c5730552b30325632506c37524a444d79375272346b59355736424c7539376f616c5866484d73526238686d7a6e4145322f47515741494e503333384a56554e647658435571566d324368645a33554a62775759395442636b696336672b63365967734639544f466c424430496c6671547137792f6e7756793231624845554e574d2b652b66346d496b364f7656517330756464574d6e7558794d75664d52746f5a3730706f447934663841796c6e4a31764c7653333866385878765759586150556939444a77736934756a362b486d78445472497842374f4a4a6a644c6e673664587546394b556e38764c6330433776597078616369752f774330442f634f312f784d38574838642f794f487937613948503542735868766e76495472503034375a7046694b6831695554657278376d66443966722f3032663739376a2b47524d4c6135396f3059314a6e5570787350533335424468655749385739525054765971314d33657a5763794b3872545375652f48444e7531465530375077385848503841593273316e41365948396a34666d422f77664d726a6a6875725958783447784b6374454359517a377043645161714c58506e4d78366a4e3133386371766a46334a6f57544a3648664a58774f644c36334b532b4a464261636b3164564f6c586e7661765072705a4d4467726a696f6e633776776463733576327251595572763332726a306762644c35656b34754838774c6c664243734e6d796a7556486d4e315a3943366e69447a2f70314d655472703167524c3751356b634967512f46795966594a6353756748484578453567613362764e58797a79562b7046412f77415838622b4b6338625671796d616b323752395a4f58576c2f54373967707931364747553342352f31303834505a542f5837744749695069734272615761575775594d304d3764424359646131476453456d595062537a446f427943553236684648786647596b53706e57427a68677637676c48474a383444364b36753658507a666131776132772f36347559576a43446e7158737a716155326570554e43787a78547866796d4941644c72464279785830774365532b4a3532757969657a4f69793536496c536e5047786a3967373772532f69413753564365517a723148304744453065314e4d61584f63355a642b53596d596e4d43494a54353734716c46637961722b5350522f6f424531466c4c4e43365035717130524f477370576b3670435246582b427353615141514d2b7a797a2b576673494436302b41656c5072743468752b6d5035452b6a5868337174343351476a4963766b6e69655964654a2f5035503144717a376577705a3433704d725a6c6f63536d4d2b6d626b30675468494c3537566d314a3330747448475030432f732f2b6e2f346d2f6d767a312f3841517a794b325878494d4855785a5054507958583657336b6157344b4d39462b647649584f70793055615656544644516b77685a5677772f3344385054663269327070624c63593852324f79343875624a314c4a6d4a6a46666b477672432f6a74476c5932637a733351564e665457774a4a4a5a5753754936584e634b6d78796e4e3747684e38754878636644682b763145306d71556d716272465032395534364a65486f6352497a4f6c2b706c34366a556f566f4f4b5239307678725035464370344e367778596d676a784148527a587a664663646c4f6472423948366b6c6e6c4e5664533236436e4258522f46477378545031567a714165704b6d43347a6566754c34334e3641594f6655556a5645494974467757644733724a385847566d4c584975644d696a735857796a4e4c33614172584b6b3230485952414b58452b39504f4a664c73585a6343496c584e712b3357364f65554e68542f4a584c54624349584d6c706d70626d4d2f36496d56434a443930646745546e4837433762473630343643634a3870556f435871364b736e504c76437838374e6d4f496f442f41497a744e45724f494b6576536239686155704e54474c5558734a78436c4a647071435833655772683161304f35553373564b354864563030646f7a703747614d303946334146674d2f6b656e4f77424e6e7963436d734341347a444e31422b35563833644247632f516b2b49374b4e43474d476a4f6d535274345a424c704c326c383144715334637a456e31526636567a754d42686e636878586471726b6b54484c6f466d413751396a564d74574738726c6c6a4258525637766d475236314733355435565a32644561544d486b343530476c6d3241493646496a33695571706b3747316977682f58303379353576634a31433453594a6e4d324f6674777436665a316d445a657073304f777564632b7336616a3755436e556975715379614d397562354b64415a7174546a4e4b3566564e34527039374f43594e42496b456b6e754f695a4f692b52394c766b7a35777946587170466c5331666f7553776f7a512b6e4f576c394e5468357835725035663841685051447241513350453133396f4c4e4e482f776d6a5038656a4d7a5579714a30446c6e4d644e767654644c79775a58554a2b5356764163484c43756134774d49342b6652763562393944347065456544794973394b39506b50586962376d326856556d7958375879645342746d5639594461494a555a7059487a4e526d4e6f6e517057536c61613766736d4f4b507a5a546f7545664d31756b784b705530534e6e6c59783166475542797a32652f74365747774a437263304235656c32765670634334744474385641564f316a424e6b495a612b5a383538626e6e386e7558786935757a6e656267352f6b726e39412b6e733476763841464e746b314f6d427a4b2f344753557a436a736d684e4b776363416871475764614f4c632b5a514d30796e613045544c63594169783835465669503836796d6f53356646762b384b58766b6855573958484f7351546c7258437a6c44616c3066454f53544f4a6e594850324469325a48313164687a355677746b4e326d68452f33593179715332723464765075597436784a673548782f6f6e6447617873775552676b484d4370504e2f54654c7a536e4e576e53322f54767958784f59394c443875384d68386368386c6752433243386b4f68524c786c6b746d65363558735a502f314f48544a384b6e394b684e34764d5a2b495766346a63454d705265626e3544632b564d4f6557723469745753757832683859576f737a42637671614a2b4f545a79716330416b485470614a556c3851316e457a79774b31327976387339544d6d3749384d326647436b37486a364f356f594b574c757765354a5a5230543164633669656e6f3631456132306439784b6754376a522f325a394b30634b397358757132723470394d513065564e6d356f73305065634355685367576354704d2b7278526579675a357a564f66765a3963314c4b763748556a514b4b616b5772524b754f624d43546b793865376c4f676b705067485353612b3869745a4b6e334d6836734738622b356b38396847536a2f594a766f6d75466444506a6332462f44376f69746c654d39444a394a6a344866446f46305254516275547a65395a474467435a564c702b392f6f477666486372616a75784e6e497a664963756b5a2f733931384c74434778665247644764755564535a664d5669744468554c595941784a70414141487a477a6a6a6e47426f39367566323676784c3963374432664e2f546678757468745a546865567751534d756b75706d6e697276585939624248334f756368724a5767544467422f6673646a466e39617872616c597846687a6b38742f7356656e32437a6538772f483731772f495838657172647a46386a79346647504b5834766a32426244667361455a52777a7371346e4e6d5a714c667a35526363504e58706b6d6f324459473065315450433959734b6238682f48482b39782b4f707a6a366165754870742b512b44686a7976456a39562f4774412f4a2f77434d6d2f3841546443577a2b552b535852584c6c7563307a3430446b4a79757048707a75436d31622b7933375666642f7768686d2f334c50793339453535496679632f747765704d486a574a4157585a36672b6775397a656a7a632b4f6558527533427a4744596d6a4e484e6a59385a794d54646c5464427756787a66624b666336642b7872562f376873643472366f666a352f6357384469386f7771764c325a2f696e6b6e7762486a76716c683938553877384333335a73364b4f5a6566725a5470724c4b786e793230386b6f2f5a6a4e4d3335654a6362496154572b6a614b7a332f68466f532f68716e3036636d33302b386e32487a6d614c633743703161526b3159376e5753356c64656d6a4837464f544e61764861326b4a58422b6f324e54515970674a31506578667463426676707a6a2b6435734f5867736638544d4f54784a336a347674304131436c314f4c546b55356d6f72785634616769746c5a4c396a377745313252756e366b584a3558465a7850556241656359322b556f68384c4b485541766b374942347073746676506e6a302f5a6f48546658716f586f43326d656f4f416f6554695a6c4167505a5774717848674559397879485a5353547349532b6568575733536c7a58444f326c536379304a72763438795934686f734c6b665a655a7a48374873487674366f6b50642b596a476475667961395050516268416c373932664f31556e7962614d747568696a717950725a585248716f71736433342b4b3662767371663149635252516d327976674a616e6550516e356644755144566f712b766d366a474b37456770746178656b6f72364b67625a47326a4a30465443336767354c6e643577506d62555664767735387841646279734d356b4f6c70413461457547716732647a2f354e315a636f7931584f31775a51436e4b305a64592b6b35334778742b55424a6a414f734c5672742b63695135506e30746b716163646c4b6f5a333055506c7a2b38516f614e5639576c6f396b4b7a635374696c305133696b2b31714d787972556849346839333956696e5864496b506471674a6967696a6b306e416349546c6d51796259506d696f757a683772794e63423651756a6e2b5350355334536a545030542b4f4e6a3648752f4d4d3772764638714c34494f57585672376f5838354f44334f6e564364434b4e435965585566785743464562437161674a716a52414876492b69626b787a58386f4272786f4b45754370735a70323272616951567a2f786c495a393166584c455a39526e654671416b6434365456332f726f6d5a49716155686f55635837556964647950465a633565532f46797031544c68664661436b49707a595837576c6b317942716f58337178537078474c353063636c4c6d42384b2b642b52555a6e4f63385258753534703471576a6c56365166584c4c524d2b30376447524343594447576b4a4d7671487456517a36483751385350394f7a3365347133424a634d7861337a41656474726b74434b7171315861586a6e4d2f6d65592b587179396e546d46644b4349626d507050693972764348704637344855693133536f2b76734c45385671534b61633947684c6e64546e5252724a45527535624d363969503547496f62542f6e6f6569346663386c327954752b663268305747504f656550487845366a6f70586450484a7270756e5a536351364e4f674847557136717252644e50306f53415747375557777077617776616b683737486d664a7764533871704772326d71716e68567466694e2b515a704377564f3542584d3546512f636a4c51534b3579396c52704a494e59336f54717055433346637244353636786e71543051716930644c5a68496248384958304565415273535831346f56385433674b3653576d58794d344c4f687871373458486a3647595465343561566347686e6e446259655a576d33576a6c42676a4c4c6e394f6758592f59354b4f464b2f6b4f6141302f7169302f726336424b3872427a4b356671784d6e52446e367455564e6e5563484e6262646b61423832627077497234366c347059667a4c6d2b463769437851316951445949536543616e696f714d7843672f6b416b4a56484e4b7835786352587056563273304e2b376e58464b6e51714e7450436f3430415370326b6255736d45476f78556a4a796e5647484c476171616d506c43436f6777324b6846656a34724470564a35494f3933586975496b6169767342382f384172645a7a76742f6f4873326645716e5164384569366238724c446b58507451464e724b3057517a2f41473466354a672f54617655316e553972594138505365426c54337233734168724e6b7938723437494c632f646f30374e7577342b334c4a4238324964486c4e6173437076534a2f32734e5a5670477a3545324263557a7159412f5471434d505a656c7a6f347a497a6930614d76797a6d617a5430436d6a6f793775565a3957486e30584666564873574f4a747745446a4747436a3973372b6a4947793132343256485246334e484f696d6f62794f495964536c656b343850696332794a7a6e687566525136636b7658784e68776d44516362686359684a396c505a727165416362754b70754b30615a5968302f4835563466794e716b734c4e4f5963734a6174535a4e484a7a2f414936696d4d46544d426a4f6d444f61534f4b724c666135524341716d6a66324f3966446861746b394b46752f6b49616170337a4650494b6856383153624b62474a63553966474134705a6d61464e46646a744635425732656d4368473146392b6a36325865774b3354334b6c4c4856444755724730665a5259762f41466f4d5539634e674d4d56634933356d51686832664a7372726f645a72626a6c73585039645936464b3437696273574450526d3836624279516d4248794e6255507a424845384f50674a62466e7861584b696471575647616d33366c736838376d3665307a564769624a793570625747375a434e4f3067343558664373597971736451776d722f414b6b495434315677355a64793867475130382f6947573665465175647570442b6c564f6c7838366f46746e4b39685034644a754d666654584a3148752f6f41506c6b57647235546443446b72704b347a726e3671594b433074437531314e575731624d5763766b6551734638764f50706b474e6469615a352f73337952474935593768704e366e5459474f4546636d316e35744f6a59535a4d4664665a646a37576a48705355387a4d655367567a2f41474e545549784f647a33464a42544b4c795339726b36557a6d664164675078653965625a7652627872354966647150784a4b61744e6376303655524e4630714a6449776c6c367257495a61506835514b554d6163307767662b4c4335373135756d5a395a466a376672486f37562b484b79526657374c436c695a336961656d3164646a6b6177665a46496f5a31697176736831346c2b745556735070312f626258624e596a68694254756a356276304b2f6b73332b5a347479372b33522f474c4a6b64756b736442694b647253382b315878614956544d4f65635139684161686d4e7a7636764659694f62724968534e6e4e79376b386662466a674d45664b7447485135727a4d787147707361334e59566e44584f6343394150734e436d6c4d7a765a4b3563332b313175466f38677a32504f664867585274305272336668373852527230307a777a7a514648566f5379573731774b566d386f314e4c764f2f7371666e4e4c65716d636751644732324e7565483346512b52666b426d2b4a35435a764e72664676534448706e795672733872386754695152596d3572507570546a512b547a6932707a7332597175756369726e3259443561416c7a6e7a32696d5a3463306a6e4836756633632f7845394f7171384c7872314632505737793233486f794d6e777a3063384e30664d62397763314337703545364a366e46324a5a6758584b446e7558637730306637492f61644b646f396e314c635a707478346a587a786e38312f77413876794c2b7a6e2f6a682b48726654334e6d6e2b7634333535366c5178737678766e2b78544a6c4b6d6a715438636273764b5336534e584a766e54736463343744746d4a2b6b36576c546a665533522b5553372f386e352b645835523153352f354e666c7072654f34326741306176685870346e583851504f7939763574697a6a6c5075522f774358546a556e366e564a714470476c7767434f7070426c666536576e4f6161665162612f6a352f61452f44483034344770742b4932656f586b544738316c6258715a5271612b6a7874746c545271685a52563735716e5059545074544a54636b365336624a366d704d4d372b30613176792f776a6f39702f69463654366e687a76484d48784b667735637138682f69785945476267727a646e7833615331764d614244414264444e706565336a754f4e6c48304f2f596341675238786a5574757a32673439426c6553596b542f42764a59432f77444d504750714c526c6c4a565470587a3432736e784c75786d347a386c4b785479695575703730306c7a37724b58424d326730684770695a3352385132387a2f4852785a496331534e616f78616442646c6b706c6f6e646655566d66784a73577a6a7245314d2f7743753376765349555572554358433465356970507949373474443658363274356a48722b50362b4a48553778747548306d2b545136696b305a7a356376695a2b486d30507a34784a5857636e6b645336616e707970655a48616d6338416239474c2f41437a62394e66454e727948446b385731616d7a5832795838564a526d7a77614d7663313955706c5755647a35353458742b5130582b7a565a3969622b55494a2f77436c385261596a6f4a366333532b7853366d585034796c335775356b576164334b4954464a4d46306a45766c5353374e4c704170535853636d396c415178744b614b6f613966526d683143743870465a7465676a724671646172466c6a2f414533595842373532396459786d674b674170513969735130676b4568385534425761354e3556452b703639446a6d526d6130637945517172646f5a75566c653564544a76647945713043504162387a552f38417779664a553441666146706b794b61763536314e6e6f5356667768557647674e6c4862585248784d37464547394b492f706849616c564d30366f306b667449425657526c306e4e7968564e61684665523073797171746e62563278335079746c504c475430576b555073627869712b484d6c314a30484f584455424a656b41325657446e5649516839325a6650656e4952516d54507a7173627362677363726b384c687a317657344436524f4e69356a4a61334c6f434f7a366a7179466b72565776716633477a6b6878565141584878397330325a5a4c3659704e6e75416b31794232594d51564f4e54684c354142366d764d79594a484c4f5276426a37483237327a61307a6268757055714e4f6c37514955696c6a364932395072714c794545695a45372b72624c65416435646b71624b565542395046664f75427334336551794b392f774259355243732b4533334638306f706f35515145705649475876596b5458555058736b6e6c376f6c524c6d71722b6a6c7a78496a6b48552b356d36326148334479744a7955535864626c3570645761757555715a5970494730416c51447755656a716f5878494f5232654c516c455a48736b4e4b6b304b4461796254752b415237384d3430417a71567650327a564d48334a55774a4e6951486c5a3862343839615a542b386c742f65345038713275795a326736656e57596c693952773538747a656a785a786b3278454c6d4438525567426a4f7a4630354c706c4c7251452f41336e4c54704f374a384643456a784132394a4d31453533496864503762534c33527556574454547a35415171525338503364514958397178624c3853652b315a53636979306a32694a74646c614b68374775636b733661766d4f78776e372f3273784238666a73475a4d67577034716f55356a62546f7165534a527a2b6a4558522b314b664b6246783255413065463334526c6d6f414f4d4e6e36444c4b56524a525a5239594758727a61626e355a3677444c3349575444583346514256417450596c2f4c372b67394a712b6276777050745075416c4c5a5a382f425470637a355a4a6246555a2f65645332756865445571745679366b2b3163733470647a6e3753326637426d597156374b5645444e5439587131397368736e7276755259524c535130784258327848796e39477056656f795a615361736e794b4b686b7872366b35684e7a414b7a5557304e37597a553066686742684944516c74643751374774504a744d4257665936706f5854394a7931474c75614476726b4a4f54376751304e422b664c32387a625a667054706c3673635a4f4a306f3135576b7735364b7a756155364b427171596e327358382f316d634870476f78414156666b4d7270724a4e47457542414458436563357a63773256335a70716b7a6b4a34756a2b4f4a4e6b34665a5a33676c51482f5770485055385244436663552b654f744f726f756766304a4a344f307269516c3262585168364854473771644451366d366356437634545935774166317539423767465174726f485248567a3539516f37573279397835776b58454e53714d326e4d546478545761624168435552467244413278742b31396d52526630447771656c46596e674c3755316a4846424374544c777367646e306347676d78764155395a577a6e5137577a76763076716a5148666b4f6342645649307445725549482b50596d656a33426c4846375678396e663162614a314f6f6f346e4c314b316f596f584679787176307034484f305031656e6245714f61474530535a47773737354459373344644d2b356d3158625a7a322f5854304b4d35716735616d72724148336b494144674344626d5a56753263727a6c306a53714a4d4a33384a5a6158596d573261584a387968327758614a624a5a2f72726d556158424778337370507256394331626263384d35465a3765473350314f4d7a4d765a314b4a4f375146727853517450506d4c6b3258667a6c7471556459767638704f586674314a6d54326232384e7a672b4d394b35787a64524348515755712b376835766a31442f415079486c30584b7072694a562f6a2f414d7a5a2b7a6d68356638416f724f6c734545545064516f7345706736356a44396c677a666e35317661716f346d58712b3979666d3150727831587866724d6c72684f666c5768534a447a48536c774777447342332b48776c3852474143364970596d61786f6b6f6e683033737a642b514b61426c386b676f665178764d644f43365a486a39453062744476544f644a4b50363336364d2f4c6663486e692f76412b6a33715a33793777723134394f5045646e795842385572566962664d5762756e757a7147396c6f4a302f6830684a3074566d67354150636b2f71534f702b736b5067724b5072396d74474c556d773838666c66723135706e356d316d655435644c36613951664a4e504b3276487756394a306c576c506d42395a385947753531557132304f5a77454d4649694d687350333039635572486d4939563638623174794b666a39727769715546677961306c44495130716f5a387166426d4a5a2f56427273342b3934304b4f647a663248565675706f645951377948797a314b395264617a646b3858755a6f30546c465536484930744852484b514838696d75656653636a69302b3455506d657a693946674f424b47675352442b6b5245634f6b433766416677472f4a4c3146315536336e475656344a3476746a6c75485638714a7342653772335a56554c595858534c5a5968616258314c5a7967506a6a635a416f446342316e5870577549356832792f4850384c63503866664758497a4d725174334c42696c32316a5071617574746256726f636c7576684c725a4177634d70576c7a74452b556c6f707968633168702b51513562366c723952746d6e3033735975576a5466505568554d672f2b6d544c374e75796732794332514b453076654e5079575a375074644150706e67366b446535726d4b627a4f4a37346b45386e7770564f64543474705a6d7441453853625763304138646a7275345038414c6250767a47776141382f6a555a75684b4b766a4c3546564a6d765837306e5446304d4e4c782f2b594c577968386c6e534f617a6d64566f356e6a6a736157584858487064625347796e354656594235763132744a39516e4943662b702f316d4c2b77444c786a4b616272486f73557a512b5451637a5935446f3658324274784e33794c516f786442474c316c6a4b4d5764596658554b7571445343795361464e466935676e666a32566b2b4f356448696c644d6b336b4f564f75544c587964756a4e617656797333557a3763366537515745753737627441703531554e4b796e34576663455069442b6f7845346e726754544f6b5634762b354d5a474f657a39584b737372766c58506b366658445a4c56754f6e703342473237684d773030554b37306f3066744e457935365253555933524736412b2f386938353036644f682f6c464d65536b4c714d7a506b72784a6266342b376c6a31557a68343548615878775331584f6b494a7532587154494e42496a3971675257746549676d7a343338656d724730534455697262484d2f756a354864735559756a5a5a505a6d545358597967434644644a506a587850377a336b555966472b455062373533526a6433435751654132644e447362784c7a58597075594f7656734f37564a4b457a66754673564a556e4645732b626d70646c677163306958465a514b6479412b70795472766a776b58626c656758504a65512b53575a6151324b463654466a6e302b553538364b39462b39705830386964644b476553374d564a474b366c454b5979625278354a79516d724635694d59364364582f414939656d5446706e3873676a38686a58424e52436a6454637146314e4d304f64585850684758454a464e534b4334376a44554b6b36444b6161434143305933322b516a7333344b66694248624e357a4a36666557654c616d65725950455a36642b716e6d7668486a69415a6a55724765442b4c324a63764c7856614645664a51584d6d63456d57657771512b744f75666536765464752b646477532f7744726366514c78693068543665326558526474797163396e71543539356635544e4d6d6e6a664a66732b7a573869584f6c6c46483348684e3037485545485846384e454c5a7a6e336c352b4c416c632b5634386d5563764253775a5a6e4f792b4b7438614b584438657556646f50703743512f52416b775135714736426335376f75544f72633534487a354d775132595268707958486d533645754e796d75496f45466b704855506b70426a315336326f516a593872484639486a5164774136365a49334c65766752736e7a316376327635545972737631464d55714a4779534a6f386f76664e484e3544347a715a6a64535753794f7a3679773669424c7665422b393861767268562f6c4e6c68367976382f77435068736949614a6456726b5a2f5971566257566f6f666f49784d346f383150384149736a6a6d553846642f6b694e777372716373375537554375715a737975476e51717345716e39796a6b79683047357567574d5774706558357578486176486e374c717475795863555a327272675741383971706670716d32465835336965646f553158317574716d7148744f4e386c35585638666e4e715878506a4a2b50546c56753633794c4871317a636153677966763841667564456f306841504b72594662554e4d54555750645634764e6935386c4e637a724f7257686d6a6e6971724e736f30705375686c315a4755386e6a706873586f474e6c6161775947346544345a35774b5a504a665551544c6e5a4577654e654f577078753463325a492f376a764959594d2b79654337575455537a3635495431704d46324b53353077396d7a6d305978587647486d42375657775a5961363736764b644c56437852692b5a3950483374672b76566e7a2f4147445353732f78376f7833385767644a48764c326e49444768466476663148412f38414a723070395176526e79337a444d795833362b52753054736c6979632f49463330624c5530306e744971576e6f33506f2b46427155687a762b677a333075366d4a7839756e614c52556338586559666b373544757a6130754235546f3366703158567652622b70534d526a3461315a776f63346c366b595062517358674449774330566e4851784f754b524752666d4636552f6c373670344258356e6838486a6e443064664d7231714755316a64665a506f5661576244714c686167724454507a524768332f56633733306c2b692b794c617a6254724f64335162672f6a702f6246326f4831362f6d36482b556555506f645a73616c5049746e4a4859666672542f4936612f4c56553462364b68354b6d52522f59633433664645637a6e583558316f6e4f4f794f7376692f6f564434784d576647374c355464596359772b4e345656394a42715770746868736a7379666a3045726b575671464763334f676d6d30327a63494b6d34547152505752736836612b69486a65524939657972502b624b6b34576969316437726274584c76586e487431532f4e5a33766a6453664a703364634b6b57554a315a766c3979767075444f31356e707767586c3378696e5056703457594d394532586f56445034326b732b414d6e574a59374f6b4a395256545052342b3265366f77356f6d4d3332305141425041506c716f506b466a6b365869656131444b31616347685a72446c6f6a746d6e39376d53366a315a73656335595173754e494e43715a435a2f7263543770475356534f426d2f78336a6376476a316c32323354625041626d6b57644a326c57477566552f697572624c782b6537754f566158664c556e366368704e76375377417141706147626764444e3477655375386e3059646e4e31614830725a564a356469724632783979345a626c392b6e3066637a346939756d31786d414b645251434739614d6d62665835625735465474426d746f7863736d4c5279724c4e54503479534b4d593652646c38374667382b72526e7775536e623967746b4e744552506b42415a34447330356d6e6c432f6d306964624d35415244446a5173635637786e7531326363784c5579364e446b7174583135786d594f2f6c5566547042574a746b6e47353042523958314b70354d4d3731384f764d793954556e74316f38714f456f6c593945702f787a6c30416c7a5535714f483864795a6a632b5955514778567061484d6b4579786a4a46706e426c6d4b63504b58487051317055525473427a6b684850474845516746524f78686330652f4c326467434e577432633746346950643065614472536e6e797a58713156565a547471774251752b3678726d4f597572733268436864484642496371684d6e66454565666c64586a3530387a7332392b6e3932564b72387338767538713353786b636368757a527764526336426346416b375a714a75713671617177694a78677774384b306f6555624d65527269724b596848783573772f765a776c572b5348546c5566637336424c656e5371364f584b6a3268527052685374564335597a6d5a6e474a37675644786e5169797148537470387a52753672744371696d4f376d34776c4856627261485a4a3775463546693264755372686934314a3967715750762b783961633866776858416e647362367a477255572f6c4e7455494f306447344e486b4c4a585a5759437448516249504a79326b2f394e6f702b4c372f414d5073554156663145784d64524b513039374b462b6955316c32552b43795a65652f4b726831744878766837456352735056714766343277775973747a2b302f7335356b4e7a36674d6c41714153706c422f75312f496767504f7738484f7a644c715068557a39786d4a716b646e5a575851356d66524c6f3777526349334837747559676c2f344f7a534372504173586e714a734f38726b784b462b6d4f46704f773556534d32425458724d7048445a745170664766565a716441736f41584e395a66785142394a595443372b725479787737513241686e7a75724b444a6f6966556f582b5634776161386947693549756c2f6b3179714c44694735315647686355784c41462b393065723732307250703145637a2f547a4d7558446c5a7a4a38685632653351456b4e666d3046727a7347596a672b38786c64566a5a78464d72616b736f416674326e2f414b34776c74426f5869336a515a303162325936644b37455853636d6e4d6d6e4c316157694e506b474e4652324d6c72466d68514c446630307637566d6850374a684a7a67426a722b4b46347a73716b73445051564f7a6b553037706145636f592f4a7771544470616e4d5951566f564269365655713272644f31582f5965706c66414e774f6f64356e6931486150345447792b64797758584379704b4966344176493871746e6264716e534b65746677304a2b382b316175546d396b625a6950364c624f412b596578342b546f5357795a514a5778504d4c5178426f37736f4f313631446d4c646365482f4142722b722b7651496966566b3559575454476e6b3452326d4478732b4931664c783071595670543142312b4f687a4c6d6f474c75546e4d2b47746a356773304c4e53364f373643707a2b5a702f4437454774315039416c326156335958756f3552527a55315063654d79556f704e43444f2f6a344a65577a4a5536394f6b6d36704a56304c67725036636231726e414a3250444f50786a42586d6550614250756a6d556a6e4d385a39444b50397644514570334f717a394b4e2b303569576f67644763354438546d5474536775784a2f6f47464b6234433468726863694842377a554e4373627950544552795a59456142586d6b345a35644e326c6f63454f6b567245753431796a4930704d4b393166484b793036664a356d31546833515a4466526533364a5a33735051526132583646776a6a704a2b686770525254535a7a667976444263777a716a4364303432397772587962757735616a6d757873764135465535716f596c364768786b52777a3534324f58555878754f703230664744524e516d696b5441414d5a34577a586278334454507a724a6e376f5a484d31576c79624f505230624e454a4e4c536c527752736e54343765324b6455395762395650386f344b74436e355a7434326e4f336947746474387873643444366f63504538653036637953444e677839424a5835776d6e636b4c4d783556652b2b71564c524850374c724c6d6946766542574875576946455a4f355253314d7a6d4273666b2b573054545a2b444c5279686b3166302f484e564b364a73616666796e444a4952676844557533415965674850736743592f6566544679526a4e32654a786e484154764c3876787055325434345834716e5a6a7030754f5736692f45325646566e7866566d315a3545705a4e7157664b302f6c76344a5774556c775274705355445548315538734d315a31476b36574b554a316145497a58724274725a3555364b70786e6b326d6677637262626d4c524b686251466f4f724f52535a50732f3172534d526e7848464431352f4b4c7872776a79534c665a354c4e4e546b33617956352f4e755773624c515469356372504873484333434c5371557433784b702b576b4c3078742b5957386d67477a7170535a6a41354e2b722f414b322b572b766e6c345a535a3242346b686265715a53564d6e4b4c48496e685a33535032394842684c517646674e34592b366450777a70483954784276577356342f454a7236622b6a2b70354461314e57614d6d616c4e74674f7a577764625053486a636236614b45446a7335725863793671456a47445250765441757975534d37335261324f456452764c3464365330432f54727138534c573336464a56715779305a644e4f5a5a696b557a54476d5444374d54473539793746786a2f37666d547830625a555554686a4d78485752736e3662656c382b70487a75657a4c325a3563386f724e376f2f77436c5654366a497a3350496b4d3170483645744833702b55386c4f57594a7a6164522b3555357369317476444752596c386e6a5762543476365a4e44453758647674313944496a7974793242574a6d4e2f77437241322b57646d6a486e6a764c6e696171555a546253664f54536e3263585535383362467665617333357447364a6e59556239503157324a626d5475546f315336455054386d666f372f4f67374e702b30584b566f524f326e6d565343524e61632f6e4b6975793158543934794f7469634b3365762b6a6c59304747476538456c744869427555364a53744c51667152354a476836704f54665a4b78726b6c327876395732573841626c59756e6d62497252392b62705a6e496372395a4f4e3435616272427a48426d56524a7a365154637a4f5a557539634c5a6a355073544d7039796e387237556338767a4b39652f475051483130394231315030647158776431336b336b474a546e6444646f665a6e5852346f4f30722f414b52655165394b386375742b4a4975434d6a2b57346a3936656a5470613962593632456d38722f414249302f7741755054544e2f4d7a386e7679543848394d2f5358796a78485a30505166302b32716472352f4876484d57347070354b732f63466f4644515137505842445253394c3370555451466a782f7149315064323931536d3630646f564c354c36772f32652f422f483872794c4a3941504f2f566a795a58686e686d4c6f2b45334f3176474d6c2b746c78355a2b55655930363273766e787939486d39795648492b2f356d414a3473506d716f7457506170346538696f3573666c5a363065693372643566347674656a2f6f736a304e7a59737a5168322f446f4e4762537a366d755a565750554f697a55506f63764e6e6e516679664a7a706d412f634432732b626f303658704639317477366f2f69543534587176365134687475646f366546696c6b2b554470505131656b2f774161696f37506c7a4b656e6b6d506b6e6e756e2b78383179564d68304c41654b714f724a754634327a4f6541334652744b6d6d306f65485062627a546a757362327244304a4248496f5a4876717a677655565655392b625a705543673238424a4f725330792b693768592b3738784a7647493574726d5749643171526d314535634f4e703256615576587a2b53756d31304b556f7563397463736b507554784b512b78667a3570444a2f3746626c7874345a436150466358363462462b45725a746b3057495262657a565a7864387573365474656c447161412f2b4b3149536c6e3148425839756c767970705032526d627162707874376845502f6d3330644374346175763966467a5a726e7773686f4c75526b576467584533536e784d6e37564c73586b4e3230795a5a4578746b676646596858774830394a7645644f49364566676e367354544b5234476e56676e3838385330764b66732b4d74313941624e6d484e573655677a6555354d55372f47335436336a435a2f73785036686d71384a7575373858757731612f46485a485a50786a38777645553135756372487031742b5a4271723863566651396b4c3552586e61536c356766495a61465648334874417a427a776d636e32706142456e6c6e546d4163326679672b635657426b2f775a316a384d466d7a3264616148593650733035584f356e74356c6c3832666d63476d7868436e374e6e45756566506c47597048664f5279552f4b4c31793150562f634c775a626635433351646f3874756c314b394c32593047746c717376526f63326b544f6835342f6f57563569695a394d50354b6d56306c33557476486f30363763546a416f4b66307968673853793356637038544b4c417a673138755265663373646842732b52456e516b5375432b4e314631525679392f57696f4761756c446170304a756b435a74783463306968645030346a67625a486a7736477a7748507a5a6f2f486b356e49712b345935395a4d546753354653584c7238695a704d4a557151545853615065466a56757254724635372b49702f774167384f526f3870547a4d6c70347671733379544235656c5574352b4a37637266456c344a356d4731624c6b3644556d49503633333932416341454c66346474363233664f42714a35703661342b5a6f4e717a4c6146707a33323066594d5373505a7234493538716c784a63595652386c793946437a48504c3336526d52664d6561457972784d78306b6165656f507034313254644845456c646c61553678776d6a3431644f397138314350747671367135305830334b4a364f7369724e4b6b30636646504d6d58534c785058674e614d6e7a6e7950775057646b4a306c4a4b316373764b68454e4a57764a52444478725a71786e5a31316c45746b6f542f756b766d5978526830444d6a43343765666a423673362b3669507543656c5a5456437258763051517554537942727171724e55576b476463396337766f3263756e503677422f476e49615461352f76357231694f304f6c475075352f69552b7a51367a794375376354354e50727a324630494f6936616a6238756a37595365484f6e7365666f4b576331497a634b4f69734f756174795534544765456945372f724e707462506442754d726c48446f6e3074446a65662b504a52524354633354745a734a706d5a677a69576568465a386d535a324653424a6a345a7a7a6a6a6965416f7a3171395759747277547a52345658305463796d6e39537574506b5332537642634c594a764a4e596151522f4755304a3967477461526146307853724c2f7071765373317651614d666a6436512b52616e6c46666d6c7a61327834754632683378494a33623059576e64646f2b79485448342b5a4e4b353831613652733930334e566d666d7738724836434e6233726949376831303843394d35504b5963394338506c46397456374b32744e6a6b5a5562325636456a5358635651356558394e6458787a4771684b67397966656c5061572f317a32764d526d5a3643322f432f524a6554566e3636724d37533756464f39576450444455577133554f5374786e6b4c386e576f736953574f4e6f69756f6c30527838616f4c7a634170704e6f6a714c4b3736584f71795633497a6f474d444479724f5a2b4e6654726e4557667679784a6768525a4b782b544362744a7942744e5970625235446177334b6b59475964666565516e4869486f5537547a705a594b6d79553435476a4e2f6c706d51496d793671727362346c3577556671647a575972693639466443766375616169577877735745546565364d4359637757637861685933376273664c6d7442584c4857573362566c557134364e436661725263753431314d54325a665673702b474d54536969764b2b4b755a7a6e76466e68342f58764245577248553438765138666767706d527253555a75665842566f49587052597349385a7143356a456673464d6d2b457863482f4d784f434257325a346d523278542b46346f496c634c6a432f79432b3262563878474f4e6c4976712f683530756a5a4e74457670506259734f6b66762b443370497a5a6d6573354654383950392f52792b7a3475506b4d626e3434714c546c7a6376537a7139564b5a527338636a37584c2b796454697831634a51453667334f53544c464a484e587a58664868497176623847756d4c622f6e497448507a4a7455624e65306a7935742f5a536b34357149366f7372555147744f6a4c545534666a4e307337672b6f5530665a69562f566f6d4a36534a6376787a44794d2b795a534e65764a755579725764313056434a4554374f786d535735515a4c676a50534c51716a2b733847544c4d7770766f2b564a39514659746133534d416c692b4a654f70656a6b3436436d4d75644c617149703433724442786674793537444e655331476b566e6b5563564569784357687a715437395145652b64615a6a70416261586875546e4333616e4d785a4e4c6f767556397148453871386a55456562633343714e47684d754a30744843624d457a324f6b6366742f7741546849376d363264754f5032416d547752536138646a41306b614e553868543564734338314c564e6c6876576930617953716868706f63514a4a5a3173524e57485356315333464f2b76694a35692b6c62387971476d7032646d446537617373305a4e6b4653763841476e727578563174706f4872624d2b786441304e72446b36356c4838384a7a7979664b7173333849454773557250636136744372566d7368426d48336c6b30302b4f71706b383276513350556c30385a4d526f5863496b556f4f6d6e48633066314a53346162634c5235443633476d3166752b565a4d58377a586f6f385976783556556550795578553135387a764b7856786157726e363648516243564c4a327868656f766c4f67666544727932367943772b6d44507434567663794b334566473175586e323072766c4c34394f4e5a2f56686c6c71733349794757666b6b436c482f366a4d6d6636394d4d6463774e385a774c636c7949486a7051354b42357264766e364d325669616e50494e4f6a374f653736396a4d65656578456357706d35376663695137594a73536832614b70644a424c7a69334e6d65496d6e4d574b374d636e567a2b58367537343172392b48496c6f52563138665a61344c716a397967306f6d55444774594c6a5363376f3130506e45694b525652475054447a764c38687959664839646d646830352b4c6b34336b7667373056583276374e625147533954496370696d61793944734a6b7963553844726f79672f664a6e4b37613163635936534d4b3855664b483634375a7955343149566665364e4e6d637659666664487361616c633038306c335463496330457638417248464a56677a4e4e314d3766654d524d78306b466c344457486e367a386b786b304a7539796b343147487054723868315035414e56627458783475397357316445645a49377a71414e4a395a393933514e7343737458782f466e30335973586266496e5554733869687a73314e66596e73475173694b57765a684a55567958574c787a456b4c7a68442b566b414b4c457a68534674317337675942515a394563446556484c32616265316d512f666e7330626f755a75582f4255757936486b5869744e5442425471414f6d4530386163304361614b7a6a6a61664d4536754d6d646e4d79515347336f4d714e486b494d543061474d38614c5748653064494d32726e3247314451317a6f70464564387a71557939455a7144642f4e6b48453472393570542b502b525056625233536a572f6e6b736b316d492f6f61556e783234382b62514644475a785732792b356267417330756b4b76343670796b576d4978414d446c6251426a742b444d7130626f59583747703378624f5679446a616c4f504a6844624a4153702b5455795779542b2b626e2b646239496d4d4a526c4149532b69586d6330757076596a51624176513031794f70743573333969515643596d707965626b6e773643644c78334e30435a4733356a4932464d746f53557870425a667055544b7075493868726e356253396473392b4f7a787678796e6d50573652576a71466e434848347264436771316e5178664450484d707a5a30772b63444676674f336a55516e767833626b5564444b6e6b37537763624934544f4c2b767a547a2b6a57374772762f7744532b456f327559556571453141576d5a73536a6a30343543326634552b72555673544d2b75466f717437504b68547466513633546c72305a4a4368724a6d6f5470624e42797543664439734368464e354a5033424e764b304d425a5451597631425570536430766d733865794d37527a637250434e4e4e3738324a5677783633385375626731476e67544c762b5a79356c4c4d4b775a67496933624b776d737a674f2f52733257537a316131324e546b3565626e365a484d4f70565456437569374e6b6e576e2f4a7a7672382f5178706e41416a5665566f364768723336586b7a714a6375657278764e6d7569303771334b7856546c706b35586b4f7878566b496245617a585154544162592f682b75436f792f6f4b333877386177387441487a52626c39302f492f4a71655156634733473038692b6a6164486f6939666b58316350764c70595a7949752b3967522f652b4837523247463474655a78456973714d4879534f78574b613457636866593947596b4e6a707155514c777274706f6377563868465869395766326d524653314f3773414e7065774a337a333356787547746671723470706d4f7535655561724b394a6b7447726f35743270343834516a6e5a4652447279346f7431744a47346d55354a3742524d30722f346d616366754e53466f6e704d44525030343958743378487a36767757612b57614454385a72377435516b4b4f57665a757a5a4b6343587947444c437069556556626c33777056596c71334a2b5a6f2f6154304862577245784d393844657277327a456e7953386d7774594e66784a794c7351733565753157374571585063322b42724e794874634d666339305467412b48444537515733354b58722b76466c4f63346e74534e6e4d5059432b757874627251744353523132714e30627332577064396974673658664a56542f414b49364b4d355356397472424d665574436f33557a35394c5633664f4259456474553553755369756e56304a3351327030494c686c52413955377573742b6e387a4e4175464c6d6f544754446f724f396f4762514d2f5a6948304c6b554363515533366a4b662f41437239386d576a74326a65794f4775796c327272733477543773593746506f5477516d73704f4e4e41745359324270743675626d7850337a7a7174526638414b4e706e494a567a347850687873675631794f4450386439374a355934342f6a6f4667794b6e6f53504b552b2b796c764f69735279783363427a5039536447626c5735714d4e6365422f465633374e7136666471457a696d616a70377974754572677a6b334c3732686e6665336b63314c6d2b394c4564364277613878527146356270566144447066573764534e54567a585853787863536264452b634a664f564e41644476756131763346706354305471426a65394141375754594575597165616c7154363278455a634432535a6a61457235576249466b624d394e424c567a764245484249676c754e6f696b4137412f32322f46664e764c4d535062394476455046392f7a46646d6c6e2b59382b62466c38717a736d57317735696c323673646a4a527272637669422b4b7674644d453850314b442b324a3436387845347662714f712b6e682b755647687239765044332b2b46325361552b53367154496b723049344b6f4c734c4969484e4f5450636759335572686f4d4b556e4d4c41364c502b6d48506d6e66796969764a50482f4e6556466d32364d2f6951656f4e653745486a7536413035324a55655a50504c6b436e794d71584c785657584c645139565577694356394d5575704c3464496d50394935642f6c4c354a3641626d33365a65442b4a654d357358717834664e5a6e6563617155616b79575a7235724c2b6b47764a75554a3047546e6f455845534c624f497a685372366a71572f4474534c784670743262436b50474957356c6d6e6d644d474a7964447833527a357158436d2b536874785a4c324163476a37435461746157307978634e46636d564d3263412b4e307974426255574433502b4c5a6c644f44386f44314f72504e3150482f764a7a5a4a5579707861784b79526d69367057667067526c3748583070644878316e37392b66355076397859504d6a4252464e395263307947334c33716944616e6a4b574c4f2b52326547644f79465a4f4639466a6e7243686e73723176725147395a764d5036727a2b6633456c70386f3754506e773467612f49335a714a75654e576553455435686e666d78374f664d466b70545375684669366146494f6d774866723456702b5a7255784d546a4d393468656c716a544f79397235464930516c727a376f2b712f5374465130583333566248616c6f4778395832416e454f646f54506b52706e6d704a514a4b4237455077763952744c7a2f7742412f542f792f457078745a39575834396e50717a386d47712b4e65464f365a6d6b3345316e2b37556337556c71616a7658653043784b5765395538374444693161347661736a6258786e346b79585656556f375854547145476b754733576c52566d744c4a7051513562467a554a726f386957744b4f38346d7078746d6d6c5453674d384b4459337866583067386730416f7a6d5450646e4a30584b454c4f53727a732b646d4a51573149366343596b4d2b7a356968596d774f304148372f302b7a744f553969767a2f754a336a30705a646f5051786654303136436c5a7775374f732f67712f6c7752474a72347459756f575865697a6e65527479715243622f4144634955476f3335542b43772b6f4f61336679493534504a73654268345656306562566e767a6f753056575a4b704c327148616a6f576d45524b61696636394b6b6c4e4d594678724e744f5a3654325a476933342b622f414a43362b655053342f49494e4637644b77657961456c65314f364e476c546333514876794e6d6a634b2b63527854663567314e4e774a6a35532f573852457834794b332f4a2f59324439616655566e6a4d75477537797a774c30396c7a396c6e6b57464e70654d5a6b32696d7a4d794d76547173694a6374517a6a39525861414e674a2b46435a6a7539795a704d6261352b446350766f64344c354c3476465670654174686d786c61736b766c4f4c546d59342b4e66446856574a4f35447a6456394e46693971477352706b6130644c45462f2f746d443456356a6848654f57333930667a617a306739645046747a306439524e6257312f4d736156766e7669553556456e6d6c6c586c7a703078374f78316d625561632b6f716f51627a3465774e63436133574f4754665169625578616e5a2f7744596766706a3667655a342f6a574835466c54356c365049322f794a7978375551352b6a354e4e355175696647354b5538316b365a64703254484e547a736c42466d55667066304a3070566531617a4f4a36794e6e2f41427a386950552f597a66714672545458587a4c38683133356d4e6f5661656c68786f6d3173574c6a586169654d7558586f616b67496a4154352f726d6f7346612f74486a616c4f37694e78505462796f4a56343234557759486a6d5a432b795a56696f4b3235576a44716232594e7531302f596e574c2b524c514d566d38444b424c4b5a6e4a59726e767a7648534f313639645274443663626b2f3854717a787132632b632f485952542f414238534d35576c4d2f457a3678587a50784c77657570695931725a527750767036656572357a52384c6a7a4676364438767876566b547070592b4b504c316756586f587070317843554d4639556b626b4a5172614a684450523858733478617330352b4a554346527768354766567938504376794b3957594c764975304a64352f76614467387156757a383534397331515735626f565554706278487a533679326150434761747331684775775a4538583646593355722f446b546245566a2b557a46354c347365666f77725244745172314b61487158585570314a49683130523039586f4d47477872365871645137364271506955714b556b786a68497570666d5871463664546a6f5565582b515665502b5056633237527739634b7342305157352f63784737346f6c6e756378524a6f6e3541664f4569764e2b7371576748582f4143353470663465677476773738332f4146537a6878623265592b4e655935436e643134384b2f4e6f67514d574c6e5a7432556a4c2b6c316666755454325766566364624c47496d412b773043644b323174705538646f3248384b2f7547595679747a4c383138655a69565142526d6f707a76497466466f6a653164675230733042336e44436d663745717a4766726c382b794c686f6248375a46306e526e756e313968634f522b66586f76756c6c7a4f324d2f776f6b7150546e4c5377417368774a484c38627931386d71376e38487875553969475770435a5251375258534c48514a716f6144712b3576306a694c557a50584c3072386e595466462f557a4b706d356f364758484a73624f6e4a71724664577070614d484d68586a374f565a627864447a726147556d6e2b423532783161707953716b307448576f6d6e69667144475a4977736f2f47517837745a30723563657950547a733236554d6d2b724c79394447314359757062745569673469496d5458324d7a58756359334763545759366954654c3631754635467646715762566d6c46303747494771506775316d6247735363576e686f654e5774435564424f6c4a4a673066633457756a756566384155446458775031494854437554596e51667948703538643832667341325873583867622b7654687262396978646a686e647a767548726770436c6c553575482b7157726e6a48555366543870783261585049734e693861586949334b6f576a3449436d6f737a35384e7275612b5a3165656e7431786658712b6f4a6e78774d4e532f726361614b38754a4532384b387a626e35746d583542503845736c5a5249304730497a4b3051665a4553555330696e6d704c565a333679476663766b62372b665963304b542f41485731636449344354364871465a6e6d4c74546c304d57522b746137535670564b364a64625a79434e69377271567a2f744c50626233686659465361446f354f6b6a36326d4a6e7047525864486e6856576f4b514b4939465a7967335158446c7735335644555032574a5459566c4b567a65515a3942382b333850792b796c496b59436b7636747374344231712b705a7456466e6d6d6d785841414650445854626e664e664335535a6c33367066496d787a6931765a2f30374c654a6951357966645344426e5a506a413434666e353444582b5448724a36492b6d754b326e646c39494933374c636a783270435a642f623352327531795858762b31486c777a35355842305847354e4a30704263786e7a6766313061584a57317266454c753943663765336a6d6234356d48354c5834765953517a49767231384f475873626c314d4341797769453246316b2b6551487771556e324e7868385033613549363331356d65413644656d50346661586f646d78532b6a6e6c43494d63367731664a50542f414644314c76466e4b6e6a4a7142786f396d74366646624665374c2f414574625666457143594848314e684e2f72473270467035342b34326738497551707a3872537a644477336357464752446c313231766a706237526c56446d365664334f305542504c70457a686355447a63774139684b655039556e686e48483743346b7579387a6c6a693268597546564e6a446f792f39764b6b4c6f5979637764372f414f5654326638416b4336584f4a4d32774141475139415642434865507139544c55332b56382b78347a2b787177504664492b4e68386845526c6e5873616e612f6b655649797a70617062516e65726b782f59457a4b6752694a6975496963534a68354a6d51424c6d665567554c4d7072755454672b694b68644359614b464c684b6676412f783048664b4378562b334d6a4c6e73564f686679497a336a584c556a676b37735a726b7a32754c5464556e6d71646b6d4e6f554a614b6c7453415a62554d4835703668487648436b4a6f7a7059733066646e47516e7255413174704f584f32626974516a5371674a4e785a35307850306d64574e314a616e7632346470774e39784e362b426a554b7063626e663041682f6b643850764f325a6574476e5946696a444d696d6b73626f6e59317165564b5370346a52524873472f71513537716b6a4774695655475841516a38757847396c7a3976446144657a753061425678392b53676f5535724e4978305952654449356d56517461345065796c726c4c4d71766d61524d5450534d682f5a702b49374d6d7833543046795a4b6766507154783244587a71397a4b644d46464370334d56342f4f556679694243487944773550662b2b385954706d4a6a724131727438677a4f625761724e64652f4670316d4843374969733031614456707a6271614532596b767339704f73456d6a585136354e63302f384131554158575461316a6c7834694f78517537376f732b432f50387137654f67334e566a6f555732685055364876576c385961464f57765a6e55305030717a2f4f4f616b70774157392f71776d734f6e715570696b3544644f46385577542f4336624673515037476330665946664f65515950566b3579513670696d5578382b4179355753755a2b3738773842796b4a7543686b784f4b534f706d6b2b787661327964556d3344725a76316c7833474f717a5863554a65796d6377367849385a49617164424d7257757030383533587341563337636c6535664e5571716a6e43666f545143476d6d564a616866497765726b593032634e6f43674355545235782b6e737266614e47594d5443567378795a3035554532336b434e6a57727537335372595861493379797063546a6f616f432b6346382f63774f5a723850502f7a2f414f7739626e30787951614d615337702f77415a647239576f2f315a46496931664c575561456e784a5a704c5a4833357a556e715863417048546b42674632516b4d4f6c354a496f636a4d36656f61564f556d74374a714e5741574d46474e6a4855736f356e516a4f4e646954702b616d6b49794e4153694b51524d597a783469515662554475785075546e526a3154797649745854306d53737a362f6f364d6d72716e5a31746450742b52794f734c7679706d5a45453341503566366a457a306a494d57416d6c79615a6a2b5369354f637535364f6375646e35796d46504b75785955434f69747152544f3163624a75685854316a44464a6d5967784b463074715531364e424d79345944345664756e6e5655353264704f36397649364a4c4773534c714a316d46447a4a6e2b6e34662b584c4977556e393944317835556f556f305965746e66706439313144797a61304767666a6c2b464c684a567850584f6c4e4b6a67556b4439706b635950617a767a34353647585071464435617039446c42565749393875676d686277684a545a386e37456275765038415468634533786a4f6b45726b494772667177504937335a645431335557464669567537506c4954714375584d6663476c7879516d2f6b765a2b707033484d79775447592f694e566f5362617949744b70756472795132353359324d303650347a6c6275734159632f53346c716f65747a793770726e61366f656c39636f7a2b7750586579662b6768722f477176485a615879757333734c4c7045574d7454545270787953494a7a382f626e4750724e526631334d2b3178644d7a422b7943556a5951495a51443746325a4a30546352572b7475637a504b53706b626f425663597730726930346c467867334d39314535394d78352b7076596b56394c344b514952757a655a747a595571745a7a4e6c70523236594e4232365532585149364579614b4f4e6d53716a34314350445758737a61314b6e36412f6f51637248544a764c6446387a304a6d7070566d6f7650756157644455756d4c4d717a4e4a776c466e752b69784a634e496646397850765966302b4334484435776e39687a632b4d5839616c63576a6e305a6c4f6c647a536a3677616d574c4570706150746531587451432b4c2b58376a586355336e39414e5a6b6852537036546f55534755597a5070394d4b61633657473532685259745a644c516e736f4b4f6871674834365239383876546630785543656c3431534b4a4f374b3747614d583243584e594d696a705a54586e3972476775695339526c6456456679706437666e53612f706f363376442f414b4172426a5645302f38416f70694c4d5069427a6b707670692b323158387a45544f5461616b5a387132464368615647356f4f644d6a3667546b6632516539784a4e476c35765371332b46614432794e6f644971765a584f7a4d30412b57776b4f577371705543787a535a30414c71414d534c345142306a7247776e2f496461484a4d6c68664a596b72633859797158653935664372345353796a4653767377394c32424d6169644f5837516b466c43374a6d51316378495756654d394438366d43565573716b78736d6a7272724c6e4f4c354f524e2f337a6d7379304f4a415a694d666e415a43336b366e4239326572514e5537615553355539435a345a73375057585076736a4b564f617637557246554e3441462f7a314d376e754a5041567a34594545392b6e5843664f3337447046335554786f62306e66584b335970476a393257744b676b694654676f4363336d61584f427632675252504b713269684279364b7268494b514f33324b34314c6d79316d634d35755863632f7a4d703474712f6955494d614e496538792f6f42684b7a597755457166705267646d673258554a2f774a46383231414e58555563536d4f376c4131536d702f7741706e772b642b6f6267476b676a2b6834686839667153554c6d5a6e36687864706b747a6e614f6f36526142423869676e5955793130614546764f6c2b762f70625370703632677a643851514566413450487531575947526e745474307575467563794347476d4b726e2f634b2b4234746f733075446d436f5a6e434b68646653414e66377854524d7a4d395a4436754852796c614d31664a4e6b44536b74654e706a56762f41485a363242626f787443586c374e4a2b667256445045304f664e78784a44396a377531774d6351596169544757424d3146375946325531555351565030564b5537693837335a49486c3753746978687137786e7847343245703464617a6a4538655069497235546a4d6c67306d6548755a705334794c744f7a495a5048416e6b53433069477074554d594e2b527937744c692b414a756e56486e4a61315a556c562f56713433633372356a5837792f796366444c664938376577686234724f5957736c46665247317647665370585747733770546b424a68372f45396e42763262412b46727571646f6a72474f377645513853533039675352506d7459456c4e46623970503339793737474a4434333350492b4a6c505a595339592b4f664f58446537682b336c4279525530534c49487942734161634d6b4d6d356565564842354772566c5072367561555631467379366c564e2b6a714b4850457663336a79565a72665a392f776b64503941375a5639715a6b316b35505857595654575a30457335323656724930747a67712b347a2b4e58316e7943394274355a386b487342787066794e77504c4a4d2b76434c5435666547726d775855676e53504f6c717a437a696368727275353876797379366b36475879372f414966326b4a6d2f5a393441483261383237386f477a62756d537775664c506e304f4a717962796d36566148527a444d7568564b64716f306c783274476d744b7a42767a675054536c736a326d325638422b6e717171584a546354706d3344726c57793961766e76314d394935696c3055796c534c4c71644b6f625a4a6547426764502f41416d784b704730574454783636343962646f67665a774d3679734d33616b314f734b706e482b5451364e4e546f5638534c6d45566e487654504a59746c383751533661646a6a726673794a33447247332f52354377317a7961757a465249674d3930396b344c48496f572f50306f567a51736b542f4672446838475a4a527a6e52374a4a674375733036625a44656d725976713770614f68584f69756e446e78653664636779787a356c52483279625079364b2f77435653656c6b3576745a2b327a55746d2b576358644f4d364c637533386f55737278376456484679716e79795a735146704e7230576146444b7664586f4371754a5a4b58716663316d2f436a374a6776384132717357716d644866366a6d6a383066634b5437534a7073316a4230732f556f714d4b6361684a6f5777385a47686d4e476c63552f50354b45744b6a514d6d6e47305033717145557445514473653738786155486b4d4f38724c6b4f704d3556782f592b5852786776704f6d732b535a6e584f57342b32467a3650466839623465303275556c4d7a69495771704d54485554504e305a34374e4b484a31732b35314a6b354570584b626d327572524863686c4b787a3647527063765563387855774f7a397651524c5950744559424c457248576264445a487166766778323532626c39586a4e564a37614463315356565463474551767a6839307a327a504a6f7549414c7178414f596367354e624c373437386761706f6365734e7158553868656952474c6c592b66726550682f4945726b65536679667374426a6d38567968616a4e4e4c754e4c6f42437059652f55724164464b49776369464d543236655843535a5938776e7a7a4d544a7a6c79334c575a72656c4d78536146672f5a6a4b617a39413831455a6f45554b2b61486b4b47353866644f5a6c4d61313649432b6a6174737a514764326d7a782f7456546a6e5364706e5a384b414d377a503432675158693656545a4e5a54427030744c4e6c65636b32497967434372717a56417653305263647a4531666f31423765576d46674b397631326a58434457714e4f4e35413348475678306e3433382f5772434668524c644d3746557a4d7a386e5030796e5a52513751625830754e54373667534b514839422f515343584f6a6730624c2f494534314833427a2f414f4c7972395a79506e35392f636e392b785057346b61576f59327058396c715466774855416a706b4142534878767a6c4e2b6d486c68596336367368655866544a7433367565314b356a796f70394a69394c462b5368774c724f4f493254487a765a2f70736d35774361757248624f7669797a6d61466261596c5a2f77426b7236455232536c72484e5a5a434d30637447684c5a4f614b616b736e4f61593243615a2f59514d3152366864444f4a6569326958366b37562b51446d665a34764b6f64586f553278392f627453787638657634785953754b2b594f39446d636e6f4544374e3039484d686a356f4f586b352f48766532616b73756a434a5471353034334273356d744a6933324d5458507959324142544c627877396d7137324a694a36786b42677370444d78735849582f4a5151456c7366627461565454526e6856504b5453666a386e6c75547166656b2f5846392b744a4e474646696e546751794377376c4d2b6576637262444e524454722f41417a6b5961383268524c396d69436e6d6c54526156535a6358366453666a7165546930686b563261646e74644749786a48415a35766b65577867556d655635425a4a704a6e30322b2b68736f33356c44746c4f6b64756e70646d4737733475503550724b45354a71514e4b565679706b544554474a417467523544736f306f366f4842725155573633494e4c4e7675396e6b462b5a446e515761475956587a75492f736658694a7a337539386e5772443566366b535052335748526e7a77556e66342f6e5967366d59594d5a6f366567395538667a70766a566e6f4e4f676156325644563262366b59472f35546d344270414f59763553302b4d66794d644f465a6954303852717635697978716d324a593459397a4d7a564b4f624c3436717141646a353536546e5857342f6f706166495453646d6d6e6e453548516630303166476350303638654f2f5975647355544a6736544a5951386b52644565686271664955544a614e5a3374584f4a765950484757613767746e36687333395a547533655865484c2f41465a7a356f3355775a30566468654b5a586337536f527a4c31473654382b4b723630614f756c4f56644d31326130614f436c726f2f6879687a54396a70364932563842714836732f7742773738612f52344e4c6e71622b5166703934316f76686d6e753854384670693872327354376659614853523877687037714f53444a316777457559486467706a4f6c3149574e31706f366c757a5762446e4a742f3366636a797a39346634792f6a683673657546363947484977764c75357663727866596a6a3248364f58533661696f48706a587053797a527a3935436945744b6e337434487a7a2f31722f68356a74366c616752735366336450794b30546e76386938432f4666434a4433584a6c375533627935354a4a62496b512b514263584859346c564f325a4b47754f7053582f4e3939582f414171662f77444870343667737677662b7a5a34313578536a7a2f386b2f576231472f4a6e79616b506d312b36666b464575576967382f37734b386f59364f756439624f4a66796c39684c2b64635a6c5a382f546c2f71732b307a45593036313078315139422f776a2f485830596e354c36622f41492f2b48354445647a753970444a7a4b764a4d69483578706f6f4c7132554d5774316d66454649437a733531586d50744835727a72777672587432725747352b4836612b507a79356d4f337876366d4e50586d4b3135712f7635557a746c775439796247715a38776158515a51366670554d66594345682f6744566a38656472576966415758682b4a776550506f617a507a31385a6c6e6f36716c5549504e676e414e4a387935686e6e62394d65586144474b5579785466667468304142687075565362545055537143526152316b7535546f35315258496e2b57563530545439356c3653616e3972456e7657624b6d474475542f454a4a4f4d65314e63726e3951446949744f4b696c744b6f6e306f6c6873576d4451364c4e4a65634c6e4f5962357374544c4b524a324b4c6c633738505a314d556f453959514745463879395034664b4e51726b366a4d44794b6c53757332736a714e50526e69674455476e716f7763437934335358474d74464a6d763458425457767569436250367446707238684c2f45737a633862666e56383872663544613752736569796a4762536d57545064646e584238373647554d71375579645948774673443630306f483752443931432b6e6d5974464c7433586a62732b59745936354e47396e4b306e36636469507139642f484c5a2f77436e2b3665786875636b683976735a4d58506639507639504c75434f567352793673495a3731575836414c7575614938376d6678326332772b365656456b765363565668516c375a2b695878742b6236776b48666541306b55702f6435674b51647a344f79314b77732f5034685768784d30616a726c365647656e7372463147625032596d4a7141367a556167692b6832703357366575374f585457745757306e3345555475314b46466e3159312b7a6a7052716337354a776c65513147612f6d5331645073422f5072397a6b7a7267624c6d786b493253526657706269514d716d6d724451717236774e475649694e5271716156507a506b45772b4a4843577959695a3644487533713163465457795a7a78726e6e506257796c4e36434875664243313152706d37316853365873375378772b3849436d4f54396b356e3951473566476c7273355a366b556c4571705a494857636a793463795353484e525376744c49353650335a5a50564839656c31444170645745705055414d424d6e386f68754f43584b6e51466a47477a327a55305779514f544858525169375058306f30543647577463356c49667870523177462b2b664b41596c794b4c514656725a3266616f62714e7a6164576c636d6b354e6c677452795647634c476537345145785750322b734b685163417766414435525778444d4d67397a434632664b78746174562f38655647613753706a7172644452326877796a6c72503541644d547a543265636b474562675a4b4b78677946674a6b544a6877643069314a786d58426a334e79364f313077514b6c34706453745263593859684e4a392f334c486e31356e51396e7635736961356e6a3266443846384c4861506b58786c6f58744b6a572f6a4e437066777876307339616172416c30487977304c3451682f685166732f5a6e7732677a4f4d64775751792f554b636e6158747163755868522b316b47704b3634714b324d30725543376a684b56656c3046492f334d6c6237696d4d45456f34437655313254366c76494e4a4f67786d75774a34576b634642716463784a422f466b527353793563764b7959762f414a726d6f426a6e7558584d6f484136484142794f6152565a793373796b465056472f522f6979636e735141452b6277656c2f6a4f6643575269596155306f633737667669423346524d2b6c365735665957386f514330504a5538775232745a704c555636497a6353655a4c4151336c4a4748736d4a702f645a314376364437384a3633426d74584a6e53774f62444e2f774243566a2b4f476c64587a5648454a66483857657956545a52396b6e77422b6e482f414b6753494f4c3071534d73325a784656414c6f56784d556f676f726973635030356c4a6e7562784c475276616679724e33652b3433574e535a75364764566b522f594a4179726677755a6c5876796b4b4b79456c3579594a315176537931337a4a64374358786f4b5746674b732f58615144674d6d6e64564e3337382f554d3131356958783076744c6e633177467175676e5046486c552f774167305272636d6b524f67766d516f4b48705363774d4b4e4c63344d30316c4f4c4b78743873453874754f466a755647676e3971635677692b57353865677331716e476c5042413238702f5466315141716e6d3777755555352b6a7063464f63334c47524b6a793470547154544575374a5651565358642f6a56716f5631394b584b2f6155425943564c45464b614d374a347451554353716f4e51704e4f3965704a4c62726d3669386265386f5a53633635306a39645a4a4d474f6453744943524b4869675331676d54637247367637427262477557617252427261334c7a3875714f386b4777565a502b7569796c395377594a747a6546386e4f714c33497a48474f344e7055624632697a586e55326968696f6b7978465639624f58533433363934756f4e4c354b4e43784d38444a2b4630756d624572354f42634a79772f563267633161754d4b366453584f626633516f63327468364468504b73657a4c4d484239656567476670546d4f43773544415667507767466c4c36557443346e635a5a714b68566e6163636448766e706e6a6f58524b42704661452f4b6e732f376f6d49465470524a583259464e4f6b51616c7045615a574658514953502b726d49652f346765546d6a6364624e4376367365677834304d5a5a33336a54372f692f2b6d576e3776364262753833546c2f37476b77587a3057586a4c34383675735075704d6d616464646332614345733732644a495958756b42756b6c47696f4575366d6b422b677471376d315a432f307267586373304e44507a703873352b466d3576305844796a69456b46416c7a67693548615548302f737a6b4e6c3568546e6d38772b4e546679477672307259444b45536b39334b43362f513174497379704e6e474a625066624e4c4f70794f724e3030326c5a2b775775616e6c47315a7a4752565a37453358726b586c726468636154306653334d6a4c5558584954626b365736325457704f724951576c4f77657263694e4a755479506e334f2f434667503635616878714b503471336b746d75696a564c4f356f61475045714f507647726e503443756f5175696d564c5847644e484d3268503254314f697159483957564430315732765664304e5342394e52347974544b664d6a527173723041526f59346e376c6136574f4f5658656734745836696631637164307761386570583450666a3535792b323779723043394f3738427652796a58712b4f34712f4d574c355a4b3347727a2b7753385a6d6d3672553148734e695161794e7a45306c49546b704e5856764853317549723950344b66694a6c613330635838616641586678765a7853334b796f41304c4d7a326a57536e4e7379584c3148646e7a2f7742316f6a6472664d4b517a35307344375831722b39316366356b697a3854386666544c4a797461627772777a776e782b2b6d664b70306a38656e3859787462787249784e4f6b6f4372327071706b626d734f682f4a5339452f63665a6b305344534c7036416f724e37545047334561322b5466694c36725a6c4c7448446b585a6e6f386562484950332b4f5673394e2f38414c624e474a6c68354657624c4c3468306b53386e2b616c51727a43564d526e5a32572f764b392f41513576705635376850666565525450553355787332736b7a734858357348736c715675304c58533962506a6e7161677274374b38376e545457702b4837464c765a62665878424a76707035773252744f666d30316a6a36314b3077354d3961632b7a453862483730527143346a4f6570713830546c5a7745524d6439624f6345366b74585333313852486551614565746457632b336d7554644f545a762b744f444a71623850576d317572767542614b33575a324b6d31716d774c63374e50564631697a643757376c33443774356d546f6675357337675450704a646c79585a4c6c4a56756a35454c71657a35364d302b2b614a5750467844314e6f54664c543350384168663841592b7249724749774355554673324c75357a64326651313836724e7135567a49334a702f35522b5a715436654c5174454a72594c32456e6f72555875454e436163576c4f69732f366930596d4c64304135463433794e3031512b5550645452586168635163332b7a4e74526b654f7672387078367a6e6c6c6a3050686c4570626d42504a4b647771343669546f6579506565515079656e2b337457667463654c616d58794a47744733517a595a475a586a367a2b726a36474f4c6662466d354c57446e714d7446436336583458486e664e485350546d317363494674654c2f6a6b314c6a6c386a386e5644653665504a58443436716a6b6331626e6b33586e494d72537a362f4a6e4d6f6a3345562b78496851717a715a5a6d71416d56316d383933415774682b6a767033444c7172647157624f557a69645276696a744e466a75733236735050304b50494a6561564569794c50566b315a5356474536656e593045672b5a4a6e575a6d6573697769532b636338636f46396464706e7a537a6a5572556e5a6735666b656b7a6d704575426661637351314b6c39576158442b6c422f69504353784951466c4c564a786d532f5565576254526d42714c436e4c6744755044565633512f6c3954616e3972376c446c3656497a76657330716a6f6b634878704961516d5a53444a342f7a52484a55335a466c4d2f4757734354573373696574316e61344a355073383241464e33754e6474356f2b624e633030445057353339562b50366671434f665232656752716c5336624e4c62532f36306b7736465571686c6c756a4b66787963445865706372467262537146772f396c4e41653549542f77425747702f6d797476464c57334d6e787659766a5655333545356b7a4f5864694a4f704d76546e4c45324b2f71316654334c704a33744c6c6443736577312b3977545541366975586557374c6374384f4b4f6e4c6c684c4a71364c6963464f72716c7166495750506c5654707050485a5175474f575a6349704c334f2b34444f4c436e6b6741644b4452633772655263544b64543738394b2b597252314a666e6c79744558555479384c506a34706d6c456b304839786331494731644b6661663841514d4c4d52395337744a36394e57326e79313777306a6b6654794776436b484f4f6a5a6a36785047617a632b79683845726b6e794a327853705655715449354a33546a6233417758705236744e686f2b6e46426c6f6a3071503852526c61642b556f73426b475a686473752f3135376f4e62507a4970757a4c714876594774572b365a7a5264624e5043665831464f2b53655061655271335a7465426e59326f776c305363313470504b4d2f69703235486a7a2f414276547237564b6e486a6452692f74627a72434e5166666d2f78714b35444c316e6c7a3443455073696b6c313377594946636d754639756350336c57496f616a7663335566342f6f5a4b6e7835426b7a57644f715a644e524b306f35676d50356c76545948504676544e72365a504f2f4a4e445a7638414b4b335854654b357373372b592f6a732b747336777851594c75564b592f375257574f64786843344164386e3347484732486c5a7445546952627570366e65597972563434744b38727837782f67746866314774722b4f514c6f50513135735563577545364d74626437435864796b6c306531634841554b652f435a3032526a4f37674b613830693952664c74764e576531594467304c33316e3433503546472f4568527531616a5a55546d6d6a527a58554a6335567030506d563036583555354839314a77586a62574f76414434767879796472546b5a7048354d335a44533676433172536f677173317350724a75666141702f774244512b632f70477451747047584e61494858497731663145336d7334774c557950516e784842784d5939334b777675646d73314c6576787368756a6433576c716f552f53524d4a644b7a766a61394b547652703738664b572f66706266594c5a346d307a4f4b69645a2f6f5a742b486e6232504c782b5376586f536143386f6a68727a393047314d5334377534644d7561564a6678394c704f714551442f77434c3759577a4250453369654578774675786545312b475a7a63377962656e6f5a6d79365a647931466879527a5a386d50436d32474a76324c732f515a384f6c536a6b6c587853647254544d43616551727a663670316e684855536d664d38536c35715070526c3638584742705a453965692f427030394f445754744d743053586e6c522f4a64324b744f673053444a79617635707131386d57397741556665452b42685377795675756f584c35454676646255544e6a427a4d5444465041622f6c4772577657784c46517149766c7064324e4e4c656850542f414545657657786b48317364746e6a6c734f66736845575463686459356f552f736c6f544a51686a766a6f4649526850496230696469775665483068594175484538686254704d64525a733776374673343273517561713266546f555656523674534f70456444356a4d48542f722f30524b74755a5059356e4f42737a423867722f6c356c61336b584a63696d394d33796f6f31503572455772535972582f3868364b42574c31364836686e4b59457335455435464678316f5441726e7930774b554f5a54543373573146707a706d304e4b78734c4e694259387973316e59313049796262454f594d722b444d4b7a36712f3841332b343367586b385670683069474f714f6c7367497866464a57364756526f325a554f6e487158713055797354784b3078734679434d5a71507358706e4e4e4954353168426c79617136527a4556354252593268645579786358445934676e6c7a424a38376d636d7a36434678614b6d306a5248535536726c4c732b52334567317950476648356363312b505335304770645332584e6971597275765a3378664b577a507471664e5767557a506c35636c64315048653547335955594a53343476364135496d6c2b6a37704a706d574b735a50625a67716837715a334e584d75667a5030663430753131517a55655162302f57743557696c654a79794a552b70563230416b475869624c796b66334f6c74644a6e726961793261624746547239566752742f69744446354d766b576375683350645a4d5965776b324e4331614754673073384b51335a66662f41434572553979617159626534544c614b6c4b304e7753583861724f4d7a3979654e30726e456d573968665a4d4b7042633657615949566e2b4b5a4b5355766f417a2b4f67576c635a56343839734f6841326a437a6159417338676342613350716b516b62544e54666176323975427a594163586464565852546c552b4f4f304d304a6a764375433863545a70786d5336454c41304f4a73535778566f4a414b703031537642305947667a58416c5141597a63444a58734a2f6b5a3646736364456f444e56354c454d65626b75716b617469593436487571596d4e697a352f4b5431564b4d6d4f55633570562f51542b5441526b524d305a354e445766326e6a644e2b7365724c4274314a7157334f35716b386d4774684a73466c634a39615876796c475a747053316344723569762f4144444e64354a6f662f4e766e35515a6c61383659664b764962594c527438646773564c4d64325651764e726e6f327147797251384b46716361556a4b2b796d674a6b413643534b7963447855504673334a446479492f42496b65503554686e544e6c5a4953365134366378756f394e584d7467512f524c764c556b4b786a446b337941626c67696338664553464672364c4b50494c3962466e31737a4a7a4d6c39475664703639304c6f33697a7434303461666a6f6479454c3256677a6e76685534574e494a6a417568464b5731757a4f4f476d374e6d564e5663676638417942564744546d536c4c664446682f656c564d6862425a3433386c45594f7a5a572f36597745754e354d47455a4e695a6e72324a3065527a784c6678415a325936485262632f6163552b534d3854757a417a35632f575962464a2b4665686d386e6369636a35447747666b6562472b53585671325875756d7a43336a2b2f7673636d374a2b7a626c6c457a5a64724e6f5639613935326f695959326436414134317566374a4169324e6d615648636e4a6c32346f4d6c6d6850336158693745745231794b37556958782f476248513634626e616c5445444e2f496a794e5147705a702b55466d366869364b3972382b6e584b6d5451505651714c37543644577944766b5656616e356e5666614369576534534b61715362767435533237346a486a426a43554c7a362f473976655a3543516f7a3676317842364771713557757a4d6d796443566d626c742f6b714765515435493050344d5444436a365a6772354574544d6b486f354d782f58756f796f714b4f313947685a337a78723059364f6130727358753554556d6577594b426c4b507248754d416452656b4879736e542f5150764a76484a755a6565393263323638596f55637334504d794b68707a35653252785a2f5936754d2b767359716174424d534847426d6636576259676f6341507955663544746d50446c7561564f48444146773178735a6b52386d33487a6165566470305653706e624b7a516233736172445572485a424d2b7744426d55474d2f70356d4b677830396f6a386b366d415861614b354b63353830626b626e774874396e48342f644f7373636d477033544d3833374e4a6e4f41642f6f494435624537616b436e507a46525338533174587a784844315879732f6b5a4e48434b336534696a51354358615a3531504e4c70306c53344457356673445548314f38536a57377a433661534e634f5a466d347962386d783662664974566e4d2b767874324c70464451786a614e59385636667269414f444853373355642b756d6a57737a79786a714e54383731455634527035324b324f56716b333139304e445a586d555a45374e44477834726f38722b4d6f653533693579307a6f71596c587731396a373858456d6e764f61375a6d7534586a44363655704850666936576d6d55774e396d7a6e4370656b3353357936334e7861625a4c68586f4c495a34576e31306c48314a717a764f5a7959775347657976674a745a35386479492f774347554f6c544a33355a34635762515a6b517a324e6e624272787764643276587966745a646c732b614845432b6d7a68706c6456385a2f77424e73543134794e487658623136794d4c784865696f325a354e6158537179376674777a5a57683548456d66326e544d78574c78704f496c3352524f65336b6e376a355a5143484637323630704e7038683568646a2b563955504d6e372b766f61576a6264585747644174744f712f6d54535174797a68416673764f58327a33463851664e317377476361362b462f68323949786a4132643947665361724b4b5837733143705a30624c6573414d6c6e48496e693744546e6e4d58736639726c424a3646435566754756507673353949374f5a31623369596e6a6d5a4853373032394f33515958333953627964574f456b326b4665334a2f4351386a794e46496b733079542f414375737359375135516d58536d6541544e2b4837684237575957764765505752737a3476345669362b4d666a542f765977536e75444c3275584c6a316b4f5a6f5a637564392f4f484c576a4c314e484a57526649704c50383030324b752b6f6e6f6c6e6162526249737148784b4b52632b7065642b656570335764472b765944732b4f314f43367734352b5761446174416f6e54735a577033736b54584c4650536c7a4f693071784d347848654a4e36522b43593236586c666e74437343765070336e654f655046566534354d7a507a646976526258777536476c5a4456583546566e716f6d6d42504454676f5131685a72665a47744d7874725072714a656667666a757a66584434387132796169614f39764a704e4b3565636b4842566d6f774a71556b2f69586158384c586146612f72486f3548777475434c716a564171642f6947325767665a4170792f34367252566c32486365576d4d5357743345353147745561714e576f726b723061632b564c4655754e4c51534471544d437276424a634a36634851797335304b3378572f77657a5246587a5462354873625663535071614b515078326674525937424c71686d2b7334786247546c6a395a4d353439636a7a586633474736743335572b704d316d6c45575a34366a4d693866677864685655613832686362786e6c3676594a56416c6f574278676f374f6854506c57435a48414367394451322b377234683736416668722b59483566515945336750692b683546344c6c55364756347a58356866334d394f737572526866354d795748547449632f4c46374b47583961446e463077393735314831435472665530744c646e6c7638754936464d2f734a666c76484a6d3265532b5a2b6c666a444c563538357779372b68754e5a796c3337583278552b50504f6d586c524d45564d714834544432456c34646c2b66482f46366537733278346969765766384173392f6b7236556545572b51654e62336a48714b724f686c517a782f4e6e644e752f49374473717a6535556533516b4843377132636d5158507350725953516d645238684b7658326e53764d524d62525733344936642b46366e65582b6a7671686b58654e31372b5478305764546e7536672f4963647448784457325765627435636e733170566469715a5578394a2f44313942634c2b72612b497046716352334d384d38456d566e54655378486e36384770334a5278584938352b6a50616969556373636965564b314b68677a73707a35314a434f6a58594659364f627741366d626a7a4f496a756757466a51633061504730486f4a7a37744d624d7045474a6e5a62663462586d79336255556141305a3163782f4a4f786a354544672f6b615a6441516d72476a53347954397830474e50674c466c5931504e4c58727a624d4b4b624c474669654c33315235326b4f6a4e616e786633386a6749566f3646725a67525a46592f67746144574542544869675a744c6c727a37574c70624a395a655a6c5471744e3256426f65616430704c38747955615264752b30304a566361564a3573365738616c52664f456338732f4854776231617638626f7a4c3933773354685a6b497a504d735255552f6e4e446b795548793748306b37336664384f785a434d523031584a57577735337a535041484a6d4c327248346857324436472f6b58346c547171384f2f4b5879357669334c3833546b793673444a4451366a643042666e63733869793641765a476a364a48394d76624d58304a706e4e62327a714a725461737869644f42744e3464365765582b6f474f636e715036792b6f48715369694a756e4a6a5a47627a77544276626a50314a6c36327169544e72727a6376716472782b6833415574534e444b392f79665255387a7a74614b396d753057575068637550747a5975506b305965624c354e342f4c6f49796d78763869793764444f2b354a492f75726e38636e3432575a724841734b614170375379685054564e4d6d4974793770446162443071496a30734157387254766e6145486b4e475254524363476d75665a7754713159614c714b6a3143686c6b347268715a536b356a476461774d6d374861345341336b592b4a6e4d334a577a507171586e525a3157667872316b506c756a557479712f6d357043634f54637978335071382b7944724b66706b326b4b3366556d4d393431366c385877574a4c4a2b34704477563237505a6535534a2b54614f7a597875726458504c2f7742504a715a35426d6969682b63422f4e374a75412f4d57716a2b7046562b615947337555426c7779397a724537492f417a6c4644724a64724d6f31735a384573476256796a596857513658784366427064524137324a6170535143315a694f4d39527244353136453938622f6c4d3830616446633269366e2b6238564a6e56514d6b696c7369782b5a316265766c54384c46735963387272484e54396377396f33632f72534c525051632b5056543862724a33624765724879436b7a494b4e6e4d5a6a557a76716247796d567649755a4756552f734c715a796351634d43446e50382b6b54584b5433614e54782b77562f467231413266533972703330304675796c497147786a4b4f585a706156787a7235373667516a5932414c55792b746d726f4d50626c45363650674b424c6f314969596a493331713965634f6e423036347173376e635934356375794132596a496433446763765930714e5442574b6b2b34716f3761564d2f644b596a4e4d644879634a6f3537597a6e4845565972315730704c4e384f49746b6d31733150504963724e307236746653696c7a61734a447376366d6575427a415a5a6b2f61366e324c57546e5a715652653657502b70476347362b304b6648734e796e364866732b484c67444a626e51786e646b756c7a746448314e4a2f666f6956454b376d48777250747a543042796b77636e2b6d4a786e7548545430483949646a7876786167636966566b747a4a734237596177737a6336532f5266384136727371616c5054334746524336657167342f685662694e57636f564f70543343396f6d633547365757726e4a3948516d7a2b583737644a6d447230654b736a334d6849667832586c5a2b524a50326574396b5630615a334c583144484a5566312b5464595945716c75504c33794c7979386d58537a544478785634326c7272663930336a5462665a52644447562f4a2f494b6b5851314850517945594236665830365652382b556c6368444b596d4a34695678564157704c7057523639456c4a782b523664475879615a5a4a626b347572446252732b4e4b547935613535666958552b554a52354e513250324c2f365359466c4476545355562f2b4f704b544f334a42544249764e796e412f5138696e6767375070544d5779644f6f69646157674c4a6c67786e7a6657734a4d355350436252372f694f7068525956344b374c4e586f514f6a4c566c3175716b4371347577632b694b42684f614f473558467939706b535a676b506d613456746a4848506b4365726c343733727a417847526f3057425a566d323261432f356434764c5576732b4b4a67707953364c7242576a683972516e48343650684a4c6a546b56356d654a6835465374506a5752546e4b2b3847665a6f70586d58654f314f694758587a737a52623264454c4b6f4c48434d33316f70756f352b6d546e65452f3942387a50457766707a6e4f5647754a364b677230526d793673366d52616d45727867756a385064434547554a466338734e6874547366436c4d7a48476b776a6432586471307752367861454756335337504c6f36444653655167775453693749424b39443971464253724c34763841735567427535774a35754e684542725047736967446f43326d6b655154495a58536345383639584e7373727a346a70347055685a4c70626a5374544150694a74617a6a49526d61313077434e6e77447474316c6e652b5054313166536e576d58503554444f626e357157565064394f6776343975777969455548374b666135795732456c55615343767176476f397a51376d6f6c61326e3353706864582f47796d386b772b7a58305a3259342f715763316c443754614a2f785162664853526a56527a39544670696339386a367a447257575470686f5164794732526147666c61736a446d4f666147716d2f416a32464a2b6e397252314c6e636c392f7654384b57395339366b2f48524e6262666c496b45386d6979634b48335975636e5542645a4e683864316e506d717a366375644638713766392b394f654f56483230304544344163774547704d744c6e5644447967517a597a6c7854566333476e42624f4d3062597335613734704c35712f6d6c6c2b4b664f52444373486449414231476c3938756466525277356a6a50475248724d6363374830394f6d586c30682b507a367553796650715736504f696d336b767163767374583264417671342f57616b53456f57562f4641417a71423554753574775348514f577548514f7979356c6c39467355456b58596776313747694f55534874306f507455636c4b6b47536c536d364e734755504e493542344e4e525a574672397a3837535537786c4e425a665736436331736b364e642b65497369666e64702b78513351683550565548364469584b2b61616e2f503247664a74316e35695335666b63314767684b30346272344a6f5531593179595a4d2b73394457683176677a36382b695a63397a59395961356f4a31534e366959774d6e4f49343151424647487059487156356439724d787039487a504c337236613154523647556e75456c6456387830612b7730504943506159524f556f6564732b2b2f376970714a6e4e545077316a38496d7535344e75622b69432f4b57624d65585450396866696a6161642f5a656a4771374d71436d5a5a6435724c356f4c7a2b383671794e767439344f5865464e4e616f44516642736e784d36724b4f32522b535a546957564934312b623469326e506d764d554557544e2b732f36766a39577370716d6337314b546f64316658384f6459567a7235506a4e4b6e356d6833476d716f334b6b5456357878516a6e35346d6a546e7a3757596c6a4b635679556976327858642b4644585371553669726e667541326b544671616457547274335a71633061315833636b38567a38686834624e442b4e723861707968442b506a7a6b3365786f314638435a4e366f485877694c50314f4a786e774571356e454333525a4f416e4e3539436a783753526f3074416d763261744c4e35796d666d6c31563038576c564f62317353387544545164366271366745344147327832676f3543696e6d717557476f334e726d4478326e704c705954597757385a6146777649624b5462543241315434696a4d2f65393835756e6b4a314834316475616744717530734d4e54546a6b3263796f2f77427a7346534e696347426d436b302f774157776375554a5257593068796b572f427a69563274433130335a2b6850454d4475736c455130627a64554d4661704356686a6f366c646c6c6a43717957376c533173554145366a3677506c4e306a6e41414e6479337164474e656377386659506c666a7633723948734f52704b6e6753316d5650393247393073623531334c43414c484953366b7754326f5a33456f4a71656133464b624a30714e4f54503771527a7a3134523432657345385470596454384b32747832646d377561695570492b32444f6e2f77434952642f7745444f76573253444d4e7854396156437a2f6d364e50507650367135526a30364d395050696e7a537a796471716a5975384457744e5645482f583938796f6949694d51414645385133654e3170305533794a6936556a504a434e47573275544e5a7253584e386635596c7135584d75386663786c524c4c376a68536951556e786b7368534878764b30733550517a77743050683058396a6d56473134332f57737572375858516b6e6a38307372697a69733661693434786f6b6176765236436d72346a343576634562386a4a726f6b4e6e59553136664c7675727a6c664d2b57544f6d71414e7935656c6c31453075726a4e7777416c3361365575672f714a6e455a3842584f3134692b6d66685a3257375466326e526d737943747273715147626a726c736f7a47387879565a525656444c794e33304575412f59704c704a363341715252486c766a716337507548653855644a56446c613859795754364667376d6a39314d386372363466483654544759786b417941453163364450347a305253745a7a457a485352727435333462734c464f627551583351702f3869562f457734393947685662714f314a6474306b686158526c2b4d6a57784441356d6b583330676b372f63377375745a7230714f526e354e656d486b4e55556d6e6156397a6c64707042345a393268546276466d2f7a575957592b6a53654774354132363467596e7064556e6b33566736655977637266546d5031454439432f774170384f72794b50776a3166323937777a7a4b6e53737954442b5437526b6156557a324935685a73724564374c724a614a4849736c7548395255484a336e5442675776707a6a4e6578413668654c5762637831576a4230382f5a4a55633631554b7930395a497036626d6c542f50636e54525975717274476e485877594b6b2b786371676d36304d41662f7744496c31333266573867516364756e6f3031545547792f7477352b665242656a5762476677366a4238567a5965784167663070326c7750314f4b584b2f6f4a65486c6357716c5949774c4b4d6a756644636b733152383256343857734f73634465753333553052726f716e74515643307a4c444e6f436756507070594161686572336b32626a44763665396147446d6f74626f687679773773414b3974666b55646d4f7649795855645451546c792f59447362654f6f327a4f6a6f746461547069733236647734562b756e35467a3737504c2f4266414a646356504c61792f49764e7246515030394750507a35305759733965626d79764b45507236445674546f4b6b4f5630715235522f77426a3264646159784d794e63632f303331656f36707563335336464253714f62356f36382f723871665073372f4d4d6a58776377595271494470572f334f644d6b6a57564a494c51536d4c3037677a4c73616245554b2b2f5a53743148746776556c70646e6b344c6954556a75534c6247616a6e4e5350786f686e533376557634734568736c36562f696b6a31447959504a76516a314c72394276557961537362344e7554667a7647643631457955596537343176353875676d65657657545a4f32506e4566436e3265305874616c48395a58314d5778657536767239425a6e707836562f334e6653335338696f384f382f3844383532504e53393236573135373478356f444b342f7436527357375259522b4f334b6f64707073514476307052754259652b4d7a676931744333617261753377466565616669442b652f72486e424e36306570724b504573342f6c6246356e35664f764e426b387a7a51694348496f616577774b67314b754170446c63414f4e634955766758544e64585370326163777166777230483849384430646247386232562b5a5754787556354436683043334f7755446d6a5a737a426b6762706c737a2f41496379466832304c6f435a553143484b5979304a51744e3574475a356366434c68794d56696475744e5251785056396e4c562b7648786c7a496e57564439636238625371556b61484f6e6f4a536b47667364464f35414369686770707535646f7344782f774158746d6c6c6e6e7364666a3632504870513473302f495a695a6e42442f41436f367161553836694d35554c6f5a5439646e4a6149773662674f4d4437457a4d7a6d51787067767674524969504e753571646b3072393241414966714774654f4e672b7a4e2b766b352f5379316930306141424f72325642776850767777417a41763864686733396430477136466b4f5852486978364374436e4f797648724a4f35397433794a2b31396d423037644c54544f417056396232756f594a52706d496d5a694247504c4b627568464a48334e653778374d615a5453637a467271422b326d566f54564e59756e354f756e767072456e54544d73567a374a384133523974547250794864662b7a4e3639316133705a58347157667a5a76784e33526f517571737a6f3250476c66795665504367613072664336727942316b784b51713546503832357434434a67777558326d6d4c627645647a38644f6e6e3130585377354f5a745161454f56516972632b33626f7a3364472b574f2b322f482b5a794476397458787754477137337355444b47524d6a6d3568653367314e77585a4c7752584d6375342b5a7262385353765259306c4c6f7148545a454648644c55566c72326a5a38724672454854416b477534537636706670487a4777513830556f6a6f3061434a4e454d634c79566e334a4f6954376c467a4a48614d6d6b6a364f384d4e3154486b4a4b346f543442746d34755a703543762f4959477378576b46475a567054643159382b37676155644e556f796c74397262505072452b48572b34787a54396a4f746d584d63345343706f4a2f71314f31413551657375646b6568766e776563396c5a4e6d335730516b2f4d6b43574a4c6a722f41504939566c6564567256312f77416c3948794479536c412f774430422b7964444245456b705052586461754f67316f2f4d503054316679667a5a394c307a394a504c76557658384b3376475049664a394e4b73585473795047386d6c3276544864755a66327557536d4f4c444e51436c794f6f5161707147755632597976703232546931747534574c2b436e716e3550354137797678377a48786c57643276597a354d72796e7862516f6c324c3041796f746e75694e2f3269304c72697736472b3574452f37474e4d3869676a6134366d725749327a4134532f334b66456c502f5044795471644a59325a2b423472736a6c35556365334c50794c61594b6465544d6c30435a41733459324f736d3474706b53546e4e5241704a6631316146733655384f6732422f466279654458687a6646764b4d572b347558374f6a67734d374d776f714d347855704568316179656c477265733267766f35516a695648796167617045744a394c78332b493338386839495131594d534e47586b554235486e4e3739473643694f484e693866584f787068546e4d574d506a4c355930366d684c52623777646c4f5a47786c58796f2f72474c52505162482b6c337063334a385a385a38664c795038416d75545932586e616142315530523055633033614676437a7871482b65463473597235365a3343304149774671524677353274756e49757a4b4c4138506a374852646b4e6e79744e5a525a756c584175705038414d366c3056642b44497a346c616a446a48654674366d4141685a38504c4b56665a446c5242764a66554b74327a454758354376613061437a39456e553037466f4e356d54794465695653766c4b70334b4d31776645755a7742374f4a665857466871624d524d3949486d482f414c676c614d50387476557662644862566b37506a774d377a495a6b534d5a6e6a4a64584176697344534b677461654d75693769614a71516d2b5a784a70417873447630635470317250654e66504566553764782f49323878684c3464466e4c74755059316676306173366a6a593373512f56484e597761736356436e333051306834396e3047413879334f433830724e5a6d4a7a41734e6e726248715a4f56342b4b6e663739476471386c587a3556745439554a5330463262575a6d6c77692b363566476877584d6e6a646c75564853546d302f7742566d73784763645174343935724b536f386d374349446b30635967556e55505478615a523475703255655a6b705a32783632456d475a35536346494f63366c774f615a4d5445784f4a453258735a756e786c2f4c50474b4f5356397a754a766f5541542f6455744d5833584259464d382f7a53334b5a4c5739496d44766e55745076683756415a64763139536176716647644a6e4e47327561592f6b317077684f485558644e714e65624f745875454b632f7743586959704464374932382b42536d526d41796a53496e64787454513149464a6e5934754335436275545537666b414b3237714973314d7854716f3143705372353277774e53776b797134485353412f7762317274394b664f733779447737794971516d305a4c62332b52624e776f3162466175657a654858736f7a4f6c556e2b536b7a566a2b37566958416d6c4b795a74656c485a466f7a474a486f672f464c38722f4250572f45524c5057757a51716d6d6b2b4a3847644d724a643261464c34597335566c6a4930726f646b706b466e4b2f70313558476a4f5143644a637570707a53664962646a526e6549374b7979705931356c4e513962644169665370392f565434576c43437930754d6f2f5a502b6f6f595a477a6b564b4839343074532f4e2f7249582f69626d664c6b795249557a52666d3630433545366f71326f5236445a59366c4846683778756e6a5a6f66564a6a6f312f734767704a4c2b4a796f32424b6d373268444a4c7578366564473268434935556a2f4d56534776596e5a6b526f795a34703342384c3650596632654366476c4e4b373750767263706c65466f3867473835383054446f334f7073482b556e354d586a2b6a31656e42476867612b665642707a4f6a647858302b2b514d716d2b586a50596c316838554669503267706949694d51496d5774713236416b5a4e46454e6438775a666a7139674a304c75674c3461335a35665446624f7571306a344b36467461366d41467a2f774363364f794463336c303048492f4c644a306d5a6c5253626c4d535743714238554c2b4c5a49754f68326139693741376b463733706c2b6e516c33456735597051445978474d593443412f6a563666306144764c66574c63533174326a35706670596e4a7165574370577051576462666c425a6a7356384d7a6c352f77514d4650564a79464e363552304c69434c7a6d4b31376a713646654a72634c48697a52724e6b504d2f50576a436d6b624b754353716876617052586e6a384a4336484436502f74427266686537377961414163527444465050532f745643676a7673524e392b526a4266484677354a3434644261757871346c7661466c3148616e442b3651502f506e362f633453336277764876493253352b786b45345832786b6f3556444d2f50554e785451336f454b6a6248704b5855356e79704867682f695a6d31786456796b54614f314841524852394f46313354737333366454456830594e57504a30632f50614e50785555537a42397668487a576356304d7253456d72475a514c2f53523977386d6e64474d6961576e48324b6564387a456d35435747617a6131665135377050394b356f794a6246782f434b6849445637484a36524350542b6165376c77496c753131482b7035456f6175774a75424c5a4d796d486c537052744d4f32737a7759796330353834554f4177347471544e67385a372f41493546536553716e736a4e6b325a4d787a5a47792f734b54507176706d534a4430432b3036596c697936372f77436d6547732b75514e44765966434d4961364b32472f736b797333346c4f73753656494d6c703630383435324c6c63757a33753673707944684a634171576167346b41615a414832312f50696830466e544d466d6b42754c6830616455634371366a4f42664d30756454552f59757a51746f52772f693634424c727841456b45447642596953736e744e38303949667757486931652f52536851775a6a7a325475637a6932495a484f37342b2f755a4b6f452f59525051794e5534556a7335664d6d33566557757a6d54516c4255377248324a435563544f6c72535732476178746163755837455a6833685344324d334f74467a41635a37566e6c7a34434c72587557376c5a342b594f6648795a554d364770736775424139535769656372533065667a37426a3864736577587658384c665a4a6f3935375442737a6a453536424359745449546b6678465664444b526c6a35486d54726c37517349552b51753869666c564378712b466b305a4e4c324431624f307a4b547a34524d683434576a78675870685752366e5638306953686d347331786c666c614c4c636d78514f2b74314d5236704d6a30464f732f58446d3636684e695469674e4a6d4476367874474a7742644870336e36487a615064696c4a536932505551724f526b515861516f4b4f6f3758784f583270616c2f596e354961526d35397770686a53755a71503676377a7943506d6e696c756843636d59576e6c30785a7a4a73796b75734a7a4e426d656c316562724e30316f554d54352b4432736b483333736a524d507363356b6a6c62566950414746616a5648582f414369394f57793268796f4c69346357632f5145703551724c79442f41446e6e7553547161574b5a30557a7376723441426f75616e6c646c76414a61642b5a704c565133614b6378526d644739783962433672355957356a646b32513148506f4679374e704a6f322f726e32666f7930742f524f6462397036774a484a724f68674e507a4d7a55726a3161383965746e4e4d78656d5455697970705473525250453452575432456b584b424949347a324237586631585a62774741747568545472323665744e6c7648446935546f5048576c6f7a6e6131307a5a63357561737a47553539534a7932546e305075473046566c3241506d7148692f3841794b4f62513132316e307444546b6a367939744d6776732b38365941487237454e6c584f4f68516f353054662f424e695453777633385146736a7a484a2f6d7144316c512f7741564466474748637653426d63706c417a6f69536931713065326857684848313038545145357a545354536d6d6a6e4f5a724d526d593443613439475331416968576b2b724c4f506b7471613067784d56597a7a66485a6f4a53394d2b4f65545050622f716f4e30337a6436616c324c44335148646b63705a7a624b586a496d4f7639783067322f656c64397569583435455a626c6a50636b3746732f78353372512f594e4d5156475274426f3756327045336343576936584c58557563453154445832646773475a50496c4733334f6d6f764531416a67414941344f5541756459454238527473436b6d4838495561476432715368395758786b6d694b637563364a7161487339334a3768352b784258766f787a494b506741344441537252524d686b384d634a7263784e474c58396454496c6f37664f56424b6a7075364c6d63792f61383179724653676d2b46682b77334c45456376477a4c436d71346c30674d2b36576138366d78377974464d554f5375427a6c543949732b676e4c455137786248742f77416b7243566744774d6f2f464e71523539565a2f4e2f4479666f3661766d753050686247552b654e5661666b656c7856444766312f72674355336d3570744e4c2b316732796d4c712b463675466d446f78463830363839552f6148364f6f314b706f59394735484766754e615864466339725073786b53522b5943536f4a663969545a6c753045507031776b52324c55552b67794e46484b692b516e54772f4e786636496d63397179534478535a746e5343775773487a6977346c4a4e4653657253444552394235784d476c5a6a464c6e7334684b43575853575866685176365848527a6d414433763649434c725756785a42753152684c6d64535434326d6b36365754414e615a4853716e6b6334754d3476704f39366a42702f706333766f597a6f59567176577436314a57557562583148385a644a4b6133414c6e4c4a2f3135422b716b322f794576337a4e6666706838744a694371464b6142534f584b537276636d69476844424c7643554536615867537055436957646c432b3539514f714a516d4c702f635476592f68484d397277617055714a2f5963794749517130645264467967426c746238684b6b4d6278764f6656544c78505866434a4b655076396e32552f4c396b5144396f5254315a69475a374f614b354a5a72756762485055447734744a50704f4356596f7434743378385944464366773056695968787755674b4164473536794a79374c46474d503175756a7a555a764b7462485a794763704639566f43716a3346786450752b6349692b465050665946414e704a44684365765135384c6a4b7459696137564a47525642385659795341513974774d63357376654e4579476234306934666854494447616a3568482b54525856567256667549754172753442496d6f4e79347032304a374350384145364b31715433347841394d444d32657a6965676578394256744a2b5030746572332f5a7a4a41426c4f664c3137546e324b45356a7363702b5657504c33394975396d34414774484f6e387a306d43667a7550555743485a776369627858465439367a5230555757584d6439382f6b457365666a493533384834754170514c636e394430493677486367542f41424573616d5a39557a775334486657306b32746963706c6336624b65734a6d65347871783047723275543950355a312f4931335059416b2f473233694648464a6a6e533557716a6f4b324e65686a6a54442f49396c306d69497932643068494236766f6d6c33774c4f614d2f59524247365042686e6f624c457565463332475531744e434b56783278334d314d5663325533636c467a706f3953552b393750384b6942507570732b51464c4147556467647a2b315a4c632f537266526a4a4b6d712f61504652314e3253774a3546304b6b484e58375a2b447853336779557742344344702b38427275352b62717a587a614f666a555433395566303354624f71595a3950495679464938696e62555850626e6939636865344141616e444f3645306747762f6b766f7a6c30507a783856317145522f794d3141514951644f6b2b693648376f552f796e4e6f54793555437650506764365266764e3737324f6c4a774272463478786e694946353679326367783958785a575a334e716f6f4d596b5a66636a5435576f39627361644b37344631516936694e707a557457397972794f7a324e515268614f50487844504c683867524f75343241785565334b5761565663493743753747504667544e6b7248613979796b796149327557714f626c783745594d574a42327a2b704178467871543358472f5679746e557341565a326c5a6d3855712f50756a626d6e5a6878734d425752537063434a54613057314d3453524e4c695345326f30646257717073567a6a71487a712f6b4b557854696d683549545a42326e596f6b6e34586a5a7a6a596f383832544e734456313652556b476a79614d52345146736156476a6c6f35534e6d707964566758617830567a4b7372765452704971512b4358396168424f7648374a4f514e6e6344763052673448632f71514933494a2f462f4a5046725430362b52666456787236694b794b324230316c647a6e325552395032704b716863394a56726546457a52644771564b712b527774486c497354444f54636c7a394769685162504f334c744a745235656e5666784f59364f4f7a53305569716a5950444b553741396e554b636469656e422f777771576e4562594558487a7055656c4f712b68724d6d696775547246705a6b775458357957596d696354506d59785a446a2b554773684f6e376b6742327a6f4a514c2b573234375043526457514f50354a6a306132556b6370754f3269437037476a6e3530764d54474c4d674d6a5573417a796d6e715a787a4f7a6e4f4b3030304136524150647a4f3261326d63395248482b47514c4658646c4d4c6868306450546b6e64584f78706a792b78346a562b69515631457568476c6247716a4e507730713976556b43702b326d2f5462416b6546347737506e51334b6466424931656964544c6d676b7438442f414a4b4b5045354e4d5274685a4f78747779716d6f414f6c5372374c6c724a667856744d7a31345945774c786a56636c7a6376597a7553355a55667839566566704e354378656371684277526a704e4258785554736d35374135776a706638414373766c65366d755a6e724f512b57696b532b7071547a74566e645a4d4d4d75586d7537425953596c307767716e466550415279514259776e2f4b7872756c31664f64373751352f6863694f7a6736436974646f716a7a3546654d727863396b646c613530565a456568425639393375716c6330364d31566c43624d716a346663304f4a5830424772546e4f446a4868397a614c4e737177734c516b714f4762542f66376e6a4e44695575556d5657614267382b4a64434d7770645166414f4e7757524a32534f6a36566a55352f384134374c565a59616173616d5847697a656352517a43455674766a6e706c732b31374865343242396d516131476276634131656b6262755751314b36755771486c5338354c6472556d743038705a2b504b7857315959574a644451576e52636d79574d5348534c3467366379794d467367503464504b727339315a3052616364724a41746f6450667054724e4a585957797335687956444777313862396d634b394c35466d34482f45703138786770554e77646f6e6a5755553135313142327847683866324e474e70515a57666f77707158447837746d4d6d697736704c3733504e63612b2f4a77473144745237732b7555732f787854632b527a64544c706c526e796454506c6a6c424830364358524f4658324f4d536a6952414b654f587a3746614241466c64615457647a38574d326331644848304a704e4b6536577465697961615747783051732b6d53352f497068716a4941424e4e49504233465530783041383071304c6255704e575641755276633633513774354f5a576d7864576655586a3032634e53756e375a3073584932696a3571436d4a54486361344c7842696c6565574e6e4c6c376f536554615764556b4d35675758496a73375a6e534c6f6933554a583272346f6676537a64355637334238514a76397165306b44597275694e4e63615532387331437857616659485a7a4972537164644a68547a61563131467866795679534d57465945534a7631504a4d436d4a4d49395857786d4b6d585832445a2f4a4b6e374d47784d7876746a3868614f706f65574a716836734e61687a452b364e344e53376a754c4a537a2b7a782f4161622b766f5149386c3746793939326b4671666d484d594f627036533951714161354f6b4b30654e724b5665682f707159774835566a5865316f706d53364969493652674141697035733258487857334137467378726756585a542f4a7a31736e2b7448354c705054336b2f3767546c393445332b442b416b46676f544339306a444a7431364a71323231622b31714e32357033393869645542342f385464476133716d7739424c614b714b49785a5054334e6a596d7559707a6254332f77436c6731502f414370797164544f52366b65435a475456543656354d4c37386a63385a357652527258526345636a646942686678376d55456c784b4a7839636267704278315239396d6d6e4f62592f454e484a7679362f7549656f554b66545838622f77415876487654394751477434317065592b6f7363326e354752554b6a7978324f3548534469633969624b696f37553769676a30763272326e4e3267396664364e5a353958642f4347386639746638365079513375502f4143682f4d4c612b4f6c65625a5434743466356a5a343534735845437653526c716c7a702b2f61316d72574a384f702f474c427962774f3335612f335076744b6b6673394962582b6848396d3338592f54367944794c57385731505068356936467556722b5a353264584d596f6f314e5a4c44683248567a444f55724d387a4a6b5061796939686535782f6254526c66326939754554746b645566422f5250784c307348527a50542f77414a785046344532364a707938624e354d6d534f4e79354b394b53733865574e537a2b307462495575453272414434387037474948436254626d3369364d2f774142476b465a7466415a2f4a31424b6a506f6c4b48706149664e6f68695a6a4b593267763841535677653178394e4942394e713576754e3470314e382b454378362f445938327654465538546e79515a364a453254352f77424b656970354a696d566b7464786442667772694b6a34314f547a7076576d59654b4436314166794a55704e4859496374456d3032647a38686b525a4c614c696b593077704b2b776b454e48745349414a68373161536d742b386379544d444e484a645244535451534b79352f48585a647442546e4772555573613248426f2f5a36454b6871536c337a4b64385854724d4f4d5337396943694547774c4c58417834725251505a3070424547683277626e385a546c566168444856384c76324953396f4272766c54503054426770435579794755784c6b566647684c555a544b4d6b587376304255546f7639364f794f576d666a4a4630452f6b36682b443465526b3054396741306c587931584e52645a52386f374a6f785a7a37666a794a536943794a387962776f48374d6f4e314d7459736d35504d316b30615a4744374246594c55324b593142536a52533062374871666646416a6c5a5146525264534571484a53516b5874467335416b552f5774465a7073724678684375775836504975756a6f706a73593253767252546d71544f334e306946614a4a5a2b724b686c564537557a4a415069463079795069666c642f51504a495a382f6c312b6b62646363724f504d55377236573866666b5336726c774b6c6b2b6f46526375647a686e396458776537344435386f306e7748565557582f785270396a716b736d4b67676f693074623963416d4e6e324e61654f4d5678753978566539427153594d4d41627878414c6a4164337359646c2b416d6c6c6f2b79796a515258526f73315a2b4c583942714771314564576c4e6b73722b6c4773564571397159336f36376e324142616c632f7536752f5a71526e3652646b4b5745553653594f5439735447752f7444424e79784a316947675331664b36616268445851446c6b44566b4b394e50317775346e6c48586a6e42384e374c55684f6f7159386952316b3636695a784539596c3368494835442b6b714d48307a56736450494d637a463046617144797752524c4170396d64564e5079784158616b4132756e452b476d654f56546b79394d35784b5967735a38564879714d41744e706d4d543143424c6e682f554461666e6638414c50597162596e7563344b64427339525a7574715a457175736f3556594a4b455841306e2b365a3158743537614b68436e476e66533146325731437332694b74474d706a68754a61754d4471672b745279746c7a7173373279566676343170704141614337667143444a2f6a464f7850325538397264446e386a4e4a656c4a333236585a706d712b657a53716450524c3856316e2f50373557355a304f5453414f534c585446706a6f442b563432546c2f484835446f4746664836484b35637847664375714c74795a333936374c355a4c47483867504f643733324b64396d66374163624d48394a6d5a6e4d69514573636c6a627369485153432b305251544f374f6879744b5142584a6e76366a483671716979516c395651786257434e4964706f4c374a7946416b564c5a4e4372536c6d706c63753359562b6857334772796f7244575557665a4c7849454b644a2b584c522f3769417a475a3331334a396a766a4164446d645a56314944625059764d6a633635587738325679557a4c69697a32546a47537a6f6e6f58714e5943304c6b5977322b2f335542786841636e6f6f645133537053376a7172497173726c4c695252304b582f414167544b597272565a61614a526a6d69397a5163424a3531532f2f41496e77673054795a44725a56383052645a6c4d43575873654e3142646c6c646d4a6d6b506c4931532b3541324f4763436c6451616630356c44655571414343424b3145614c32754b632f334e444e4d2b4c74733875676f632b4e3831474a55417970664356485863576b2f386e453443562f6b78514f4b6e6f437a70354c6c7738624e39646c31464b436175717476777a70534b316d373446534f7a553959706265786b6b78456959397875444571714f7546326a574535783836416e417234733265427976756b392f594a306866597561367038557169714e507649365a692b79785839416b45304c6d314b4a5a546b597974484e62304d6e732b46727755514d58724b57785443684779586975494a2f7a665a34776a4834586b4c6748617569387179746d354a4233506d37572b376d7745647479354a514b775a306a386230794b7a574f49757257316f5474446f41464a68582f414544464e543035665a636a755455316a4a2b787946705a487a364f6c7930745a4b63394f494b6b466d696a516e3630766278553836413976476831357a752f6945315964574b39744565587950526f6c716b444f6d565456547058647a716c6e57557555384475456c7375616a346844394b64795868495a4f395141705a686246533278777936564f4b7832574c6e565a3267433354356c66786933505550786f5259776168654c456e31444179672f7743656b38332f414e41484e76384144386e526e7a30774c4b68332f6275572f75566d7973545664636642565973316b6c2f317a5939594b6230356d443735476b326333587a4364513655317a5869326652747a58395a4d367273344d4c7237456c544a4e58642b75357371346663534f6363483131526d6a33392f7743795a67794e72714274544d4b3055526a77654c3066345a434c4e576a6153384762624a74427753754b5747567947434d79616575643736666d2b4a6c674d5142495835453272474c7070476739376a644254713076564b73675339444676596c624672396e422b343048554a5741456f2f32366b4156415853684243444a70374a39526e4f79767835763466724e4274556963717473377571696b617968687a744d66616f767267644368645277777a634d73307134754d73354355393168775547392f76792f7470316443646d5644594d337a44526e384953532f6a545848533451412b75525743567939504564705236477a4e6d74305a726a66793667536252303753366d6935307156554a5343624a5638452b2f436b6e4a4d785651446d6e5066793546576562396c5774385a64356a78377a7a3276727672434b615032537a3630347a334a7a65636f592b3238614a68343978384a70544144684a545a3961646d42432b717a637979424462725763795a4b454e31765978764c757a794d5456694b78725a77717a534556565843626c7146314a6c4f663643594f7a574162795859676e6d7435506d4d66702b53535559334d4c4f596f6243756c7a46332b535732624b7573484c4867727a3263756b396b7275544a57617070306e59384d41694a646a4861624d7a536f6a69785a2f745a6c72756c496b757877486e32655033576472687548335a7454715672457863487351442b30307334444c79706d673243476e4b334d3074593833526770664c334a632f3563475231366e6c585655536d31512b32583946444e547a4f5342456c4e4c5142716e7a426e4e6d6a3339447944764d6a4a3150707a3066796b2f6a6d393236554a7a696e66506532374e31755751306c715a737665537055436b4e442f6d6f7a46784f6450494f333575427a2b4b6f463255777a793636674f67337a56564a6e30497048704e412f6159786e66496f66324330427a39727a61564733374e686c4f4835476b466b36632f4931616f36355034366a64544e6f5854463879732f556c79746d746a426176734e736349713539696d6c33516d6e593444715374316f5a63664b2f597534346f7431575952366d58734f4d3647615455492b6e4d314762316665726e74736e6c2b4a50745972526e6e4d33653579706d6741716a577330736e69714144547a70324b32624e7472714553743073724e6e7045584d2b6a38387458327339616b6656364662613679574b66724249675130666636562b66716e3146596d58646f7036756d6a78336279714f616d482f765a7277446f616364492f4e59794c65455471716c2b58746b33755953376e5a7442783269596e74526d5134384a394b64795463697a746a4b794a6f726c546e4d7974656c7037434e546551584e4c78394b374d56537247664850514c6e306e387458516d7144722f38415a5355327645786a4855575a34722b50515a2f6535327a35526f616638374b2b4f586e497431734e6e322b4d753057317961385047366d4b2f53544c314231554c503367366c52714e70755857622f4648634c777a2f547a4338556d6d594f4b6a506768743434713135375230374a637a614764566d6652567256566151706f466a6d353969762b52642f494c702b52505170674b703071504a6379616a33556f6651716d4742557a4a346362437a4d697a5552512b76787a4e6e4c6d38514c7a467253304f394d4b76384170684e48524b413041655531656f5764487444706d3769477879786e584e6d6a6f684137557a354b315a65446c765736784e486b435561453337464b6c68396d59323873722b5a30386767764d776c35434c63764f354e506c467a50623879304d6c43546e303236795934444b67484d2b7865644b52594678443941706c634a6a616e4247597a6a7648374e4c4a313867536e6b4b69665431706962463547615a5762616b5472716b5651416a3846692b58304642434e415575546441333963617a68547a534a4651532b7a357631735037584e557a665a6f755852664d464330664851427a6446556c535246453874796c3179653477544a78645a4a424a67525871544e6b57414d2f68386259687146615735334b6345717831386d596e4d586c3064363533776c597559313147642f55716c4d454163664441576375612f4a586c4a52663353746c6b597274562b6b6e474e504939444e6e64706a3947635a786d475771687764745458543050736d766b594247594f676479707a42716f386e5658542f44587a71767332526e6f396a333331497359457453724c677179345664356d6c374136345068625375446e3942582f6b6b666a2b57316f7a757154354274396c6a4c362b544438477067662b724e786256496e5a33345363364f6a7271426e614c7149366d6454374c5353594f573548314b477a48693457637662553063447374494272555a365531485669367a5430702f6350756e53706957425337357232724e62616a4c3551423642466649637276304f734e6c442b66784d324b396b4764457979433742675866734a346336324a3045537a4a424a557031303067512b2b377449434b63696d6a53654230733573317958324b4571726f6c30795a79692b724d636339434a70584b7657765048375577427a743651696656516f4b57673230636172566c512b7244487a58654f6a507a49734d594f7353686b54453545544238686e75515847465037756f2b4b736633535a71374b35764f71735a78783641666d2f6a3172667a756e617679584f304e612f674b30737253426d446c7a77366b2b4770456e6a5369794866777553482f5956306748726673706d4a335956422b676a66474d5a3441423544364f2b6454364675727635654157547859507532755a41626550334b6872592f4f616a74724f387a3172734b355535466d6539617a2b7a464d70746269584d5736784539516c745149785679766b6f696b31795732412f48704963586d65476a354758314f5945614b592f336b533644746147632f65376863432b4f6a764b62432b6272714942466e6f31664a46575558347a6774784d375479563646737a35534372576d5a566f3876745970506c6c55756c50565451524148616b514f2b766e54674b556d4254424d62383643566b5973646d364f585656336573763872646e315a31666b474f6c6c6e61667233594d4961413652715173506575444b70706e765555534a675478342b4973507876783761315a704e673473385943634d553973476b7a4e78646275612f5031476c386d75567a4a576371665170647a666d2b663664427a637a666d49373259365a34695646344e7279746d6473364c73306457737036316f6a334748746174712f497073722b50306670384c4c756e303172556245717976744b31666a6d5450584e2f6b417662384c7a6753324478767946756c625a53576d676c6a573746304b6335755450437330664974685431547a3648376d43784b6b394e644b314f533658715169756a67624f59557466316d484669332f4148394f4c7864574e646d4d30616458704a727a4b394371356570343257685a2b795579486c7376637267716d6d6172534d416b79637477502f6b45547234534630573077765930563656457466305a4631306661666263356a745a37434d364b55792f4d354531656b664b76594363386f556255746b7239504c4f4a324869317438647171313758304f6f73677a35746e5652504e4b6e354a632b4565636d4e3338554b564965436179563263486166474e6564466b564d5645756637744c57306443484b436869344949724b736f7737485a78637a753563704f50504a7674644c4242386366326d6a655950526a4a654e797874756d4c31384e4f4a6533417a6e4e6c79687974426d6d784b6565514d5a70516e59564471314d374f714d59476938426a57435841356d6e3132536374796d36504a7063782b504269366e386666583772654650477a325436774c6a57795779717336794d3349676d6a5374774b41515941764c4738346457746b38756270395a30723957786b3064504d7a5379312b514b75553778794d2b4f687145746f5a75532f58464d7241642f326531306b34484d2b506d635431616d5a33504930344335546c2f696c4746476b377844546a3073764675626c6a5176514f57654e736f303250345152716161467a463877684e4d6a772b665868592b70583864715969736e356337356e345865364c59736d43484a31714d724652303366447a34733971564171632f624e777552676e35416e69636e507734364755636c785a5956683231664f5a6f564c70517250545a32376a4f574f6d596a7679442f7663646a4859354c734971767245774d4d6e4768436155487344467833514d3038444e34625a523058716a6a314d702b355971695762597136796577353075716d7357626a584763613175374d446e796a7839336c325a376e51646b78526b316d484a31755a38565a7031353431775a3879364f49524b3165524374584f2f49346635576c3876374f655a7364496d4b7845544f4a6755476d66516e754358423250483851386c4779494b56614c61763174746e6e586672484c34347464574c58734a6a6633344a6e632f3643456b532b4e64596d346661507375326974727a677a4a564e545a526b687151305837414c7a384779326d55754168557933617936695678416d696c2b554a6f2f7a69634b774f4a7a516938706a774b50485035475a756632687a34614c48333637354e54505a6d7a6e7a37444c4a6f7a5a644f31347335337336502f6854394d412b79444c65326e654a592f504c5a2f46363958524b4b564f546b46794850324f3055624e58755671616578436d7a5757646d664978556c557a2b4b2b6e542f30333070565a32596a4d346a764154777a78374638526c316844536b58355271365674666c665a624c6f3774545937624b7a4d72797530516d364f4f5a50334930704d754e6d443255494f54393150424d7a5047524964774d696550783750516d2f4d775773682b46756932502f414e4e624c756c7033567836433675386f2f6b45347371796a664879414c4a714b52366e2f575a77474f4c484757785670725451644f6845335259636d7452307437636e745a6c686f354c3571426d7145696a7a324f4b43656d4f6632514f344b53796a4c6f666769624e6b38325535394c4b61463544504a49454857713954343063747a6d764f53784b47584b306d4c6374632f514b7a3777754143726d6c2f6f4244382f375a35756f6962593579724f6d6d74576e61645736413674644b624d354a5a734977756e6247516c786e73564852486956712b754c592f6f55424b48596554507051366465547255352b67374e565473364e47517339565862526f703143426b627561676a47722f734863587a6639785a6d704e2f787545497763467144464f426e4b4855344b5853513566496f34726634576e48334d69563670394c35552f42514f6c465277562f57705736582f53587468466f4a6a6e553036396e636f4b61633264454f5a6862744d54563950376556566d35644c64504773525a6b78795854782f475a752b424370717857513945666c4357686e582b5468566b374f707954724d42306e4242716b494363536a654767687530536e737134334646596f396771556d4e367a4e5a7945514170586d557a485445716a4c5861675542546e486c54653863524663393836744c4e72574b3670307554504c557957756b3451412f6d633662767a546755727871344d786e5074756d4c2b4e7071526c6e666c6646427550566d3471744b57704c497032584268367a6b4e354f5538394673686e4e384c6d3041635a6a4f4f38524b78644f6b6b455274652f5a784870596f71664a38313475675171585a386670664254704a2b476743467a714f5656436c3663476e34617a345141715154376670594f75516f67587254314b38587a6e614d6b634f62562f4c556a70614f5376782f546c6f6554466c4b6f65554b65313067756d366e2b542b70544e5677495635506d626e564468646d35747631572f6137625843336c646353376f366f654f31394358687a4d5450477667534954312f77443171567a676b786b63304e565055534e47314c73356963395656537236764b78304c63613957356e46504c524872784e57586a3751307055325745596746744b30686651687933454c57315870316e35446c6e36366b66694c74384e746b4e50696c63587750794f5975706d506731616d4c7a775165577a59704850663831585a712b4a39306e784f396f41454a6755335454704f4f304b42387439532f483858473775596e6d45672f62356c3554397257596e56307379742b4f497846714673434d444c6e4c5a377a3554536d663745616d5556653530446a7446496a4f654972374e2f493477795938337954632f6c57626b307736576a7237325a47397054346562594547545451395539475547684e6e5370704f7479616c5a716e4738767242376254534974776a694e5176567a315432505762533350422f4473706c566d3744533174554e56666b65546d5a504d6e5144736b627452665248514364667a6e32516631533758644e37776d39364c394b3132385a4535394b2f78586f306a7748524b656e744d54325075732b3344457a4d7231624a54664f79426956346a6c776c2b6b6c514a4b692b6742767039772b383474715936634948535430752f4833786e4577633253736161474b4f415a73375137492f4c76703150342b4e484b637144534f596e4f6e5a56784b32534a564d32616959536d706a676b2f724332704d7a776b624765462b6d564f4c396a4c56684b5937516d7739424d6b486a3930644c5357634f49647061564e536e33554e32494d634c506a36453964577135664c7773426b78306d6433455852695965417456693669386466496f73375730467951746c777559613279326176475a574d35366b5963596b7a6e4c5169392f367a655236624f4f536b61617a6e7545493956732b696e477966675936376338713171734c48317a7a7156724b375a32532b4f62586b5350583645624b4e686650592b442f616a4e6649493966513674316f6e457850674e75737a774c786a78484e78557371315772384e7966472f48316e6e317770614f73554f62736151683055766d73467570565632326f4b6a6e34564c6b7a5a376e705a656a435a7450384133414365466e4137795856692f646e6a7373475658524c56704e794c3853652b6f545441714a7157746877534c574d656a596c4b574a73724d444e6b793055322f4a392f754746553145506337556f545a79524c387a475776785a75746a59787979456d432b65426e38667a2b516c4f78317942342b6d633136576d70664c4639682f6b35336238734373664f6730433558327278475a6d636d4a575a54713353624a4d7a46524e6f76547a796770584c6f30485666636a3474373441353754586265504446615130486e442f7548666a6b326e3154385a39574762552f4d767958523863386338726b6e67744f754b5174662b496273723773332f4143736c4267736f427a655366714f6d4679557049327a4c3639432f4c617672313344314f66695436503466674f48483456346c6e6b586a2b58682b4c5a312b4e5657714637476f6d5a6b327a36466b77687962374f6c5643314f6558735a38666b50655034424a73543367314a6d625a6e76472b766b586779484b746e576a4e4d517a3162675736466a61383242695565506758787a75734a6b594f70722b52614a52426c42666f455542576f4b2b35696766497654732f7531706641796a534c6d4e6f2f64626a78364776487258764657764a564c4e6e75356f5276314b42703658657a74562f70677046644b56706f445633386876776139502f556a5367305048384c463869395670475746704772365474444c795755655159567537554d586a70567277327a69342b395878394231425a395a6a4b544d466130316256786e6a41707a6e67463258666e6a664b3758584155644f6b5464497035646c497a3068324b5046716a522f364853767861493238542f4b734433786d564b6e434876754a3571654a5a39656a7a634a462f6c54715a627035726155327667392b62305455594978374f472b4e503841496251726b483938392b55785a302b34525371755a36646d663568627944784b4e306d68704b644d6e543033793775516347357a56716f666d5a486a7647426e59316d6b3147685033616e6f55333354415a7454773536396378624d4d356a4d78337747326a34756a507a3948555a6f75794e35725164563344306673783078586e5a755a366f74544b6d644e6438736163646a462f626a6e6e7a7645714c4a6b436f796e434b3233664f424e6b2b497030594f35352f7935574a5373513577446234343933682b664c6e54776151515430466b527471754a697061576a3958675530473653516f374a4532694f6f735176544b75715034513261584f757a6e4b306469546c7659744f4a655452546b666556685a5948446452514f345850686b5a476171584a637074682f565a54665068416c4d4867534a732f566243784d7656726e62784f5879444a4c513362486c6c6d2f576e5a5a3254507654565576695850544c53494d476876433543317271417068654b64727231613839656e6d5461656277746b4f7a3745454f6a7156735333787562475947744e507453686f6158335072646f494450626157613666324352544d7a4d356b513356384f6e44497667324d596c59666a7432566478496131574a4e627a67792b516d724d78552b3376386b3351326b7242734e497a4e6e64436b5654486f7344733737654970367a307031475a65394e396a5174445361656269366e4d5a766a4b49334730636c54514a6d4c4f325879466c78593864482b5166796b4350694e6448655669335466587844756a776e6c705438386d7a385576477165636e47732f2f414361796f3050346c37362f7670466a3673326d4b664c724b7a765171724f59684e5249674253717a667074675242337053673872456c776f32503867746d6f386b354e426c4c324b6f7142586a3959666b6d5535794a6454496f6e6a31456d373773312f65306e4e6e484d4b37412f71322b766949466b2b6b4571742f5a567656763263444b425763366279764e61386f74524d5731486d4e2f6c345a593245796b754a6d376431537663756b5a594b6d646a644d3630546d4f45384a46592b71666f4b2f79437a5268385a6a785a724a2f423864365a756f48616b5a656971572b767549392f336c574a4b68413573666230774777412f774371663045423953316262657651635376794639455055337735754e35703444347075794d576b6350556c665253344e6d6c4e79644a784b697870356e543459706469766c4d2b704d633278796e56306b48486c303074576545323669676450796231533850314f356e6c2f67586d574e7a744d3165356a7376454d3274754a48326d61674857664a59325176687a78477272444d6d5a70674e4e4c435366395474724d5969665879487a4a38303955504f4b6f4966487644724b4b434f6958444344504f757174764b49564a6b39736c6a69304a79666b782b2f6a3536307152595a6e532b547157424d78534f4d7867646450786b2f476a646b323474734b383956326c6e356a724e335579317972546d75307248377963545635443166506470592b6c4d632f32706b7472705968305a554e392f4f6655764556327a3344724c345836595a336749463976652f6a6f3733514c7a714a39544e765232376e626b70697073756c343753486932354c33416c6638414b305070627043397a51476e76504e742f44766e7846326c3431746f525a4c78434e4b57646558394b77303858705a3363735a74314c64676d464f6f5633365778524f7a336c61354c365358636d786a6e557a317a54776e313952615050486e527363365638656965712b724d6c32657144536f6638755a553743444b30596376374d2f6b414639706f49564d51615a61566c6944393672372f366f466c6f727738696e51545378413265535143692f2b49303936664a6a5654704452626d6f68636b2f71696d366463347348746e4767387752396b324f5345676f53386333496c6c7a38374f343945575670673665576d516537793832393172714b727332564e516a5a472f36414e6b3462644c374e734c6d31394a51576e4f4f317a5167386a37485849744670613359565a533962515250354f77755255537567314a3271536e4e68493647756d6f616e524f684a2f49592f592f714f48514a7178517a61744175514f4b4c512f6a4a3671724c6c5a337a616a46616d765058445a6d736c346a33575858646377306c78587765317355523173476d516550785062304d4d4b396864564446733431654c7161326b376969544974504e4b7265664f386331644564772f6251744b6c4b6e2b75325a4b574b59305933526e47654947793434364a384d5a356361625855724e355679644c762b3142397267452f6c4476725a5750524f52564b6d4f645042376d335062786c7a6b312f31494e44694451656e506d5776645a466d516458447a6b3964452b66507373336d7055353871666a324a68326f6631502b676e424d77394c73335034314d59423538764d4e716e7a665a35384f6e4c354a4e2f4d564e43334978386d65506b456b306c5767533361556f5a374a32565753665a4b615a6e497a734132453442653958506655304777784d6a3745497068523164504c494961563657644f3936575056504b7953504b676655353055614b44705a575a56754a63774e746e764d765870546e424b6d323752485234585973344f6e5a65487a325a68334f6973644b6d2b434350676c78354e555946524a37706e54534a434b622b537147374f5642466946695437544c7a6f446d746f54543666416c68796f4b463661324b6f5a533757686d66394e744a4d6d4f596d6731524563594351774e5059725138504a5a3839735a53575a6f574e49567a5a756273356c75544e4959356e45584651364f69344b6e7a51706f2b454246644e5a5873574470336a697672564b33594d624f357638416b65782b714b42444e35437841533979753057614e545034396b394335594a6e7449484372536d36754f6b5743615172572f786d6e796257717673784d37576e304b6f355658534d6b6d526245532f7253664c457978453239436534374a45454c71364a41616a716f34657263344a695a6a6f45664d5a4b2f49595859474c715979394b69506d784b3352697a4e515579394a6a394f6d4c51767a3331727470466a716e632b7150332b552f3630676757752f704843596d5934414d71693563566c47732f57624f38744f552f6930584c766e7338623547756556422f523778307a615034366c335a36326d466b7930306e63483244624174496f73444c6f72566c58617439463556794d632b7943766d7135757356464a38576566522f4b66486d73304d303266552b71555738702f5164576d6b544150366e61495a6e686447364e326b717a78477948526e6d7a65594e643076477a6a4b7879616a7a7a47687a366f6c2f596c555357665a386239356d345a76734b6d735a6e48694132413757307331766c766a765a744c77335537427461576e4c44636c322f486e7a6a7153727a5a61456c7953564f31525a4d2f6d6757582f7476736c436d35537557537069496d596a75466c4643776a427a4b31366d76564b55654e5178617442394b33707a355a785672612b68537955564c4961712b5648314a716a59616f36723741642f55437037753362653574505946464d6a3764662f414e62787a5870736b6f527177363248446b747837485431536c7253796b6864576d6e70575166766e4757693170756e6b47766a612b54506262466a5353386445754b453954742b727564386630346364756a527872744e76506a2f4150497444346c387045766861646372566675783355684a744842386c572b6741787a644d5a5478374f5a55696b75353144626446794a303657665638382b747a5364434b5541746a7230324f644b68794b692b634a6c583479637475552f6c484a64444635744b2b674a62744e43654d4453695837372f4142666958305556616d64724b6658387a66764f536e364568676f754b43522b502b466561563138754a7938356e62493052496272444e73716c61646c755444446f614e3345726e37482f4832784d4c764173305a752b3055475a4255456a6f784438654770477250316d71656d6d44455756464a536f37526d7a356d436a6c696649425a7145736e4e495731484254395136507049594c4a706f3469596e6a416b575a5a487a4f723175684d725552334b54527362625165767564386d347178684973456172714c4e4c4d48344f5574726b54397a4c574b75786a664b71526c52766247367654305a59364d2b34455a74744646544b792b4d487a4c7031386c6c3575616136454f6c2b7579562f316842786e7041396977616f3469496a6f4a497a79436f394951586e2f4147476655544e68464d664e567274494857563669563747686c6b3753752b4559654b6d55466a50724a3636306e47785a46494b35584e486a777a3648555372755a446c4e5064624656565871704e6d302f4e5648534d4a77312b78313063394a63516f6b6838316165306733333176325a4837646a304c4f4e5369616a586d6b65534d335268783851706f446b794a646d484e6e4232544b743254313156553730685651434f3676474b617a68702f536e5a67464e534c44306568587a507a342f76386f334e434e416b34766e72706a56596a516a61542f72305031637079364371434d364b4c495a6e65376f7455317a2b58334557356777534f667a72336152377142766f4b726d6a4f394b3064754479474d6c5756396d7438662b5158535656614e6646712f6e76656673373268773248356b552b6755304b55507079695a38476b376b6d684e2b394a58303638392f6a375a6e7a6f686f3552565a42393665756e376a5930734f35524d414c677266793730656b38696d4e79385a45576e766a6a6956757571716e577a4d364c552b316a676446784956644c5464505a4f3474466a546854594b46534f6e4277457a6a6a6e41316239515078397839786a5a744e4b7447524d5645552b31305756637755777232672b526565754e395a70557678636e66464d7959374a6f7a6d6576744142796938586d504d6377765876384174782b472b5a71613449364a38736b364c503554526e6c5a72747a7031342b6c42543939317744704a426a487a4c4c2f41414837795768562f7742784e4d5a3755317069664d61696c3663666b66384169345737683578332b746e67325a426b35576a347871767267727a5a642b78336332555146624631575054686b30694330434a336a7678543170645778766464314e54453969772b374835362b467955357065575a336c50696e6c4f62653750324b6448773865756c73747a354a624258693858656a617933702f6a696f6f30615073745470574b706d397278424c334e70374d37677a502b347836593532504933776b504c74756e532f696770384d5634374e483474796e447a56473750756e6d7a554a79534f57504e532b6e4f66414155477970785671614839506332476a666e33724a2b516e7279347647592f4563337766776837616f7a546d3547336e374f67334d613761437a61514e6c375a374f5661424c577a6f4566573676306c6736644c47663170466155343971776e33677634736a34566f484835482b737678665230366a3869386574794f554834342f53686c307648624a4b4d716961664a783161525555506e616c4a546e6d74636151547a356a6e336b7a304730537678347253685544342b70654536566c4f6f3861437a6338654854584175787566784b35786b4c786d5279564b76682b4753773155413732415079343734384a45646b394262523270585a666a3946767a793537754b46374b364b776f4f31757458412b5357723573644d63746b6255546f2b56706230344c6e4252424956742f434a6d654569387372302f31504546583155555932666c372b457974746d766b362b6a5670476c44526d75436a6577597a6859736e443968363256465553564a534c6842564d3964395a36774a446c2b6e4b4b5634306734493764694e33474e6d6f6b594734656a77757a2b5134396e53527342334c4a736643424a61374b4b714433686c6e65337679474664382b45426a70656d474a566e6277584f354e696843307630334f364775304a35784a635837313558726a63636578704e5531516d644d6c4c6a5239624b6e55596f76506678454f73394f4d6d7a7375687a4e6831527052504232616e335a61613957557976666e3471547161796567627173574d444552526e667a46784c63536941686e336e6b4954642b50506b30316533506d372f414a44675a335a627537734559555737454e5136467a35526a786238666b74557433747345427a7250394b645671365a7763727248573331385257464868586d4b4e3967304671354f6257694c636f74504f51696a47585250392b6f6b452f51393947617978594b4f565952744549435033424e58534a324530693263734b367273755072436d364b4e7a4931726b78792f4844566e324f5237354d66353175436e592b4658515531615a6e4e736f6a6c3754557a2b6f6e474a7a30416d7a7844554e336a337a59566e6a53577048565a483547394d6d556f4b4e4c534b434c79717154443661374c4a644b58706646304a6c677333436e74547a542f556a56667a76784f374c576e4e775a4d335474376d706a6f514457564278794e736f683535432b4b7162354c4b6152306c5a58315a574f4e54754e346c64497534566f6e4d3574505158782f6230387173394c50793338625456542b38373157386838673855726d3636626e6a2b6275586f644a34794d6d6a434c6138746952473655614b416d434d6458767442664251564664614e326c77363148723579504b5a4f49337355724e664542613638312b674364576c2f386e6b5636483864484663784b316a4e624336673467377a3566645344564b6d747342333965654c51384e737a4c37636f494b474b5a746f74624e5a342f5a784a364f62354673726d6264303835354e58704b306c3656437a4f684954665770554b623147516b47354b42505159754f2f7741696b30784b44513541655071746259656a595876354f364a5761664d2b65654d3941706c4364427a7a7a634d4237333748396334714a2f71356a2f38416b4b6379644b4b6362504b4d486e4b7353646235442f49547a6f463163476558552f505a71504e6459703937564853487a53706d365157327a6a4930622f4a4f2f77425066507645664f502f41437064474c78794e61727874576a4a727662733261454b5064534442484f742b7573714c4f704a6a5150334f3976526c6a4a4e484e71376f6d754f7344584c385a66795139527653616e796647394b626b35586a75336c32756365624a50355a70624f5a6f71396d635752416868644956787073706f56327235656a7055742b566844514161587245385a362f792b662f35435034592b4a2b53796562655365533259744f68686552365775764d50597873644d6447537448324948426e68705673796c4d716a6b375051365a48767a5a5a75555545714f4e7a57704d59784934346633664a7931507a647a57766454765764395038416c7a767238702b7469546463576a394e39326f6d61656d6854316a394b68564248482f44774731365437314d3352374e78305a6a3177464b2f693135725874616e6b755434626e7a512b572b69544966503832655a41354f6e3550345875563542365868363073476853354b48666161646e4831786d39493861726937505a646538655078636f37626567587162366362552f6d4b664b76493843432f774176304a647166515774486a63364a644e56306c644e4c412b704e4b6d75644f6173446966534176767143622f4339526a793272504c6a725557396f2b69737671614f6a52682b6f506a78575a3673386568342f72586c7235756c6e614c486e6e6143526e6652354a70767a66346e6e752b56774e525a2f6e326c6f7a65794e32336874774b493366514c797a41597643312f4974585a4947495965375438766b2f6a79394479436d49574a784c666a73645247506d446f37564958596d545344487453615538636776366d4c316e7033687a3478643458346a663348307476547a73383855646a4b48643153626f643174716c4e687668536d3671577164656f51744c325355305a746b7961554e2b37594a76546d635457523537507a573951636a317a2f4143413832387a3863385a33625048596d486b6550413173566d53774d484c453948626c7a6c352f4b55796e57534146707638412b323756427832664d34774c74307178476e574c645271432b4c4e536974534a484854526f57477163342b616d504e72634a6347672b48353944326663456649684d6563515166627073724356494842384f774e66465667486c304438476255757048523176344e47706c35614b6264414e766c312f614f384a4b64526245713666302b4e4f4f583679666154444376433065516b2b6653795052624e585066734d30416369667875446e663176305039396a72585147373450347358615445644c75684f30777035413549385355504c4361594f6a566f73624c7655614c3575555a3745505139657271316169637958345a74726a6376525052715a2f3433384b695758736f567470645250374b50643343324d387651536d767947694333694a747479386f755a2f555a73765736474e524e567436475254586537496a584f36654a3038382f31566f6f4259752b7541556d6c492f3141587379384f6962556364584b35367457546a7034375749734c514b4f64615a527338652b38306345615a73475a43365a4a6a6d5a7169436d7159483166366e4d2b4d69743971505744643039364c4b6b3050356b34596d6a624f454f336a316f3036753538526b2f774358366430336b6d6578414d6175516c737877314b667373634148705470507a426e3036395a76556e305a38356f386c38523237455876747a5a6176463742564b33796273553258354a6646354244437958546c6d3674326b4e4e45545066375a6b425630714f6d773476534c52465a6e694f362f6f722b665070463669354838636c2b356d2b657752555a573967365052453574475447373933556c62705372364b33335946306c4c68374d4968704b2b452b336b71482b754f3268657638493658656e337176346c39484d717864796a3639647163584c5448465935716f6450532f6e555a31757a4554484c684c4a73695146667634356f4832755a7842384948684e5a6a72417371503153782f4a332f475973774e43616b626c52584d52526e4e706d443763665a4b6c547258705056557461347057646f63397a706c56664f795a514c674d746679614459577854746948627437556c5a4d4b7a794a4c32596c3336576e55663542717a6a7055615379756f56785930476b446e73686d42784f6f502b6768477a36672b4d34593037506c506d654e34726e4f71326242386a304754303563302b4878694d2f685650306e4e30733538384e30387155633739332f506a686e436c532f366d4b7a62684664773135702f49654c3134302f45764450545474572f3462647344696e366c4f31626764753157584d72736b7862355a324a54484f7a533979326c396f6754396e2b536370584f535432325254644e75312b4564632f4550482b654f596d54675a386638555078533537366f73394f714b426c4f564563326f646a6e7273535033746c536d6d36684c675a52577342374b367550475a7a626633523147326e68715675375a664b76525551795a39362f33587257565047757250706e706d7471576d6c62437a636f696f4b69672b4e424b5434414948713235445966446f534b545553346b66395752536852457a75657870496a47576c46505032644549324578432b6d6c6f6673424d6b7070563741726673794a4e79647866484f62497151584f414b544f7455717078634e5861714256526d69596b517a734932477a355350334237654341722f71775a36626579426f6c55436a6e2b58357966526e396d6d367a5036432b78467a326b464566306d6645416a37514a503761737944764f747254737749745a704b52456371713238644a507969594f445538706667792f7068544c326657574d4d6162435a50557779396e324b52416c6b6e674f613256384245712f4c4d544b3145707437446e47584d7a503532716f4d756c684d746e72677959566658536833757371736c4e516954326577443976432b4f622b70784f4d5a3468505338637a4e47485262576a6a63344b61614a575431544d4f64536d556c414d7443794832367861413145706a58434377732b7437544b5367446b55792b627146396c6a4f5647777575684c2f41496f77443467682b7846564d65587753524f6b6d4c6e34784b574d2b616e59506955752b6267474563485558696d7568694f30633042592f753353484d70396b64576c5931313262506c6f454b697453764c343057734f713576316d6964697757372b70694a6e6f426475646e306a4446335475304e6d4577464f6a593963536132753361674c4d74787749565752733049326672397239357a6d4c44595a7a663451413231686a702b504f5078317450567758637a2b2f6151384b78304965567a7a2f4b3141764457324a644959363270744b4e354a4433312b34416e6f6e744675624d696a686c535733564c31563831456b657871343664432f617467324779534c5732766d5474754b624631677137714f2f59574b726a424335654f6e45584f2f72543450702b674b6163385579585461577442544c6155644b666f464d68396a43546b764b68624f5644545974646c792b6d716e6e4b545454383342635941627243612b4970303862525871796a6f392f6b6e31394b42546c30326452452f506e36796d746864597356537a44484558464e4f542f365a496a5741414f657033437a312b4e2f4b713944353650485a6a7a30642b524c6d5a74656a46326e4d46617957716f666a4b6831304b724a6c7971355055482f544d666550485a6770665037574f6e356b386a313873733945616b336d6c722f3158595841644a2f49476d72324f64425a513875675561584549677352393767444e795a3657573757706b617356784f587a747a564e637a3473384b75303177316c564e5437666439502f6c67646362677056775346445443596d63596a76455a32734850305244735178543968724a70554e5252476f2b5070484a4b6c6d664a72635a487155452b72694569553042696c6a55723530474a4f6132322f4b524850496d6a44582f497939304b597362526e35446e7474747a7549727466474f543773486b5045614331555a7242466565422f6f756b4245373744317832302b3854314f336e31707536567562526451476a43664d3754676b6d434254744f394e4359754a5930696f5a744a2b416736356168503938564d6b564a4f7650352f634f6a6850517a534b656366346637764f61712f696c6f2b4450636a516d7472567830507861633762697a2b2f356336382f70795042415049442f716f52504b7a4e6d71623930697276315330714553542f7136466441554462517a50706f3661556c39676b4a34674139714d304f5856326778636438784d783044476a4b2b72702f38415158576d674b354b6a79654b536f6157716a6474516551497669464847667566377857304c6542392b6d4d356f392f5668545077665839424d6f713657776456396e6e547564656565316d516d63596458346f654f505252386e473045684c526c544f6c5649474d457a7a56536b674f2b6f436b394e7a4a4e435a413136576e5a3373505472743265646a756e2b526f7070524b675a556a7061315342455848396f41456165304c456663452f4c434b697972516b76434158374552392b3946643756556b7838337a644d4b68545536686a6c306a4c51795a714858696b356e32663463416a5754754c727a6b5451794e37587030614e784e7a3068717a74505575354f6c3939553543317775655332664942694d64744c6d2b37324d55417a423235364a677a394d584b747a6c4c4e5638656a4478556c315866644146764f4678695a3373466379676f45552b39344838787a74696f364249504b757a375864484d3255572f5846416f5a6148387052526c693967314d3771642b313862684862596966354f3844672f4d6c6f69785450624749786a754465374d77626b4974576d4f53677a7a6f58364b436a557372723537724f315256314d434f69796f65777155615838393376657a2f4d43467137524d7878674d5873327366537666727733797a733164616f744b56455536355274346d3750746f33784679686f6b59744e4276614d344a4432482f774174426958514438763661326464525464726b756e7672532f36384c715743612b7744466d4451627357454d3941724b63765a38584e4c67475478453230424b63742b6936445531364145386d6b7a30494b2b4c36366f34364579317274654a7373464d6168793554554c556346516356796b654a6b4e626762797a424b63556645684d7963356b62504c6a5439583766547a644650496b577070556d6a6f353475637066762f5155745559743672346c4151356d32557a75437846644b58397a59737454394a59794c696e6b314a6f4130546f397a614358384d5448306f557a354270425a67446e58436f447a354d37733765776d7a50584f35642f78706850744d70736f4738704f73347767715343796a4e53707a2b4e7631706737374f70467067374f48556f4348737353753057644f653676717461516b566d53644c73384475554f537471416337345664563045754254757341564f46514161732b574f714e79464b4c376630767278636d49304e6c346c4b765a4a4156784a57734d3977386e2b4d6a5a2b7a2f5a704e532f6c534458364570752b786d7a38536c612b5034684c6e79786736444d544b305738425166597a4a475473537858666d4a4c765966523642504649415a4d33696359324e376e2b376c56446734437a307556664972506b624f3671756a336958557a7339774a6d44394a4272316454336e4f41432b71344d356937624c4b453658575a666144765369612f4e6d454c4c6b5352396b396e563048395769593239667a334c67396b2f384167667a4d4133646f566250616e53524155747a7070374f5452552f4a53744f655930546c3757644568596b69346d52557a5674423769714661546f42594d323336314d586530646e694f36696436565870342b727657457471674e553066576a4b64454b706d664d30614c505a3765732b454f415950303531367a6b374778784e6d2b763352643837415574383457526f31714631554178337736566c6a32494c696563346b2b73352f377a63444e33666162365654393648386a4251623557772f726c457476366d644f704879434a786a3332432f76794338443654505a3956636e3942484f79742b5a6c423352423768644f377331534a4b354f716d4c4b46464c6d4c5936574868444f4365636f61437167623174786f533054434a564e56384a304d6a55694e442b33755a6f786a38316d79717a39636e77614a4c75745354585a347a38345041374a4d6e6e47632f337a4c41416357433462686f744b566a4b624a325461537456646a4d3461754c61484a52736e657a532b73454a4c48674c5742456b4f68375a794364307a4d7a4f5a436d6869595645677330554b6a35786136516b463061657147526a73364f68434670365a527a2f616e534e50424f50742f774156594a6e393576705a6e786b612b76384178346d783937493076467649333575556c484f7735506b4846614d2b64574e5748384f5a6b2b5137512f4c504832654771695269432b4f637364514c53596351327138583859465a2b59633266486436424f7a68366b57586a737a61304a5861716a6c4b3266576f6f5a6c556a634838775272476f5353746e36396d44644c2b75526d665476457850514d736d2f55303167524d793953573737593669394f44576f72614258444a39703277696f6c352f774250504679766a7135336b792f324166384152436173307a694d676c2f4e57546250614a6c5879614136766a65666f72537935466a7674326b486b79356432694650386b745a5a4974724a6e516a46626b39375043616a575569506245564e2f56557658587375375164456b4b3175743033436e6d4d34446752335171547861767542516c2f50693538737a59546e39715866434166495a3147566d70304c4b436d645a42564f325330714b635a6d7458503144357245543071314b45456d4e364a6949796d52704b6437503841724f436b4173394874314e48786e64305a387a6b6a6336566d6d765066386e6c5946545936354335614b672f683070316f362b65796b2b7a4e72784a325750716d6e63745958356765526c6d5262427861634f666d464849324a724171697a4547504c344e4d2b73752b6b6d6a4e346b70655563343178415964462f313267344172617537484847426547466f51624d796b69576e462b364b63717143475a36706a5532484a7a614e564763375137795267784c397677443771322f5a39776730446e466d642b3149656462646b4473584934566b556d66586e3538386f717a78782b3545503255746341704b746d78394f4a696c76594e42642f524566515370614f31362b5946486f374d2b68636171364f774564544c4b4d6c5964414c4f56654f30684c5469436c6e5536585530664a44313530462b7a4e5830616b70714f6d334a352f59574a343762486f2b365063737179526a37573531474f2b6249744f3269686175533243516c2b2b66395774762b53503266487237797576326b30366a6e57666b76633778646c6b2b504257576c6e354c376337533463326c6f784535317267324b59436a5553675a3964456a6b434b584e2b753258377a615262463041747a57546b704c52576d514a655a7262376c33525435655a4a414f6e6e7a5a3865682f4b726d6d79707a64565038464d4c514b3036544e4b476e396e2b67453637594e534e5762563852364f54465671746830534e76593832334c75303975736779342b636e6c622f4c4d44544e4e424847334257453034552f57522f5153514e422b627a6c527471644c343959694c7550557034452f525a33427054626f4765386b5a62503568695a3148494355396241342b4832447038594830394f6b335733627469696c4372473132324345414631486a566f3245364e334c455735734b4e496d7035514b356e2b2f37644c6257476b2f32475364705672546d7431454575365a31454e6456654f7a4730782f693876422f6a5558646e4277314270564d36307a4e4d615263716a396d564b6734434f642f4e7a6175416d2b434175354f5462503943433959706a3052793174786d50746c545348794e314a594a6539554d3951664d686f6c59772f6651444b4d475a42612b5a6a31634b7a4a6b74707838427a653055315851523156366c7966345a674e7173364d6d626e33554569344170414667594b2f7744614466613575564d75516e7341456a3435305a7a7445596d6a3131626964473464654e6e616858714f31706c70357965694970766c364352476367426a4c6553443059352b3073616532316d49353131456a4e796e374d6f347a49354973736d52616e5535656c316a4b68506976682b4362356b38737359456b6f6470557656626b3565464e4e73562f77414a5a5474796a4247486b4531452f624e6872487938624b365a31326f43554c37383037666d34437255544f502b676a6f5967324e3544794a464e6e4566457465533678375675676d5872597a4768646451704d6457626c797a715a7775734876784239386b4d4471676b4d5744673272545438544436687946764f75574b624b35796937356d7735557131636f753041537438744f663750692f77414155705a6b33766636695a78476641534a697832594e59486844517a59792b644c4d67715431356c5068417847697250702f534a616c4d4a79674170774b68774f4e495442394f633536655148383866326e36425432354b4b61744f7879615a645144372f414f504b78612f466447575869657265524a6f2b744b33744846706d3663314e2f75644453414b4237692b425172576d486c5a4d6f526c6b6568786a714f667874766a75424a4d42616c74456f637957426d6a644a5566655150597850776e56315577702f714a6d496a4d69535a507078646f4e7244576b56422f4d4c793957785769716e47434d7044766453716146326f2f71644a624d3357616b534d416f722b616d6b754a2b2b4646625778306e694c467766484a66724b796f5730634e444b44703632435468316a62476d7653706538383867473737444575365045306c462f7461423942674f564670374e6f396575494f543532626d317a45585a35625766397a583163794f7164675a6b2b616573634b566f397a766b53755557396651616c46534433642f587864556d6e47302b594e77702b786d7671747272497078624a584e33782f77437959654e4b52507a586330554f6e65786a72474f62326e6979537477443733756e4467464149353764534736574e74302b7272614661644f52654c54774e4677792f4e50736e7057485079516b2f774144564b5a7037384c6b4c6a5638366572613735674e736165644c5562524170754267547241625578655151343267557339433942534f2b2b717164313268384c7630436d756d2f357039674444774566755a65552f5a376f4e5931474c5a717a56745a5146307a5649356f4533455339474b4335366752506d7334756a6f57635342462f7255582f6243535462632f4b2b4f5857797962506239596d55616658306468756c546e36565462577034355939314577304b52305a766a43436c796a5332637570425171565556324d4659787a3537356443346a7561664179664532305655547554383347314a565671546a4c7775554a3656356d34414b7849384178484a444b6178524f31644d722b5a6855612f33502f565554304a4b576f6164696c784d544f554c43354b427159773364492b4a41572b77464c3965526d54444e5a79526f645937755a44444c31746a496c4659545a4f54396e4e6443335a763858326775494d3366795a2f454d3571595a674f75746f376b6f716b506e614362625264713570546c4f76725961474e75736c63744a4a732f6b7064376a52574b352f646c475065634d50672f6f503353436b444279644136586a386c52734279726e6f4550706a44394c546f4b503569634a53715630576a514f5a58777a6333354f67434e4446562f546f5a6d377343613673357a5676565454462f476f575644477033644e33463535726847377662466b4644754f57356b3445464270424e5255315832585a5559746c4a4b457469466a47306141486d55565257337a78554c514d774352474154534b6f6149494259725331504f68474a6b3559562b34323554704f7269794a6f7a627130766b71466930515a384a572f74756650586d5852704b6757414843702b6a37486b484a6942785175507371625271664c78634d775635656136747335354d304e7a75315448476c58797363356c514230686d393745676b45746a6f4557414d356e754471715a333044656c7a6131684d6d4e3358726d323538772b3849394152464b584c53466e7850562f31766a6d4248796837794450526b6f6e30706158352f63657a452f6a58355763743876372b766d343037617972466675617448526849416577763079584e70443748544a4e663841516664467646756c6d51784e327070517470796a5665314d552b6857386e595856746871653258537039326768647133385335554238423150466534775475795a3961765132396a4f6f557245706c797a6a7a51723566306f744b2f5551687a704c6563756579705361534941454f44533452636c49636f7052776a4564415a69794f6f685036425a536142347254536f486155446673557a5239303651456e5547533663333754486930327a556d6b545a516170782b4544463338696d49724f365339535854494f57306f3656636e6564354b6b4b6a68706f5531744d6938697870306c4f3465424b647166694e46426630436c65524a4c61546b63524854786e444274724a4e4651326930565a61356b6a71474d6561553876796977792b4436335a3536517050334d4543684f436169646d5a6f66747567644d655638687231776b6e434b787331705a315361676e5a77574c486a4366305838535a39616665643753444e5332506e537167535a6e75524542465a58384978316d5574542b2b796d67767643757a4b644d50512b597a374130766b4e70304f70444f44466858564c3374454d3632716e6a45314e6d5743366e366a46466d2f37592b7a5743723356703442696b5072476c61772b6345752f6f48394751374f436b63684e4e524e4f745272756657695662754c496c4c2b30526647355a735a6f45464c6b652b59513448584d52533535675268432b736259715a744b6562595a55456c43636942383778366d5544736a4e6c48426e30432b314f3962582f583730456d58315a6a4a706d412b5858374c5466325269526271507672676d317130637a567235794e566272727033634973395768647a694a4a754b2f782f77433137574b637870415072505241354552312f7741553563662b31366e54486971727a314c636a7563766b76773255646f6e6f4a536d696e674a54386650692f384166304d4f4a7a792b526f4e4b65314769665a4c75664c526f5233324a5847347761564a423546394e315641554a375133324a4e76786d4c6a365677666257767a4c526a34583063764f375a5378724c694835347130523650314a5a6f76694f3750377a374239734262542f5148315a6737336534454b7558616758442f4738725378787a324f6c6f43707a3170304567466e324b3171467a446c6e306b4c56457967792b794642702b7737396630436656705858586e4374684b476a7279696d34766a6a6d50505a42436c736f31645a4f4b4d2f6f30797258786f2f71414452375665786f674b7530794c6a50326b4b4d36436c696c4f41366e38585254665532706b6b30633646536e504450536b2b4637434f51506e536f45752b502b67534f444e3470315565305766436d6d6636764d6f4d714267464555664a42707066704d4a4f534c45757055744378544e4e383150666853356a58672f35686b6d4945534978322f4579364a4d6c6e543549376e73304d6864536237546431637044515352614d774a373878673768382b694242483377506c477465767a4c4c7638576d74386d4e64314d566f6848596158716c7a782b54537353364e3341424147704e457774557a69666b4d514658786d70792b6e6d5a3257756b55565a4d5864534b666a2b767168425768466d396e41416c7a324f723537543666615176533446304c55354a683874306f474e54304b4a43414f3378337868592b354c6c61646248665647686b6f3863683266516e76772b2f34765a4166666b35784a6d594c564c506b45656b4d78336a486b75697a3153784d717a457950726854564e6b5453365475564f2b726e7537302b6e37457833392b4f6234694649684636516b767936487258664b7153716e4c306c73687a3437666c6373637937657574712b754b317a75737a5173595a304c634d5a2f744b566865444168757645364436794964534b476a516868736f58526e5651365774447363544f3576557258384e546d304c735750377061704a5755556a3862674437656d6e3369736b367654354c46343358513747793637394376524478796e6839675239336b744c63394d713650494b44644c71437971716462666448547a394f6f557234744238676e346f2b707874332b61635057364a565567396d2b4f61673557365844534579616d586f6a336374356e302f5a38316c44557a4a5654505159417a556d6839766b6f67696a346c31505a354d692b314e3531324a6565367133537856744e5645384b516a46564877307a6e704d4b373274435930684b31344c704530464f7a6a507458465a47566e46364565544839733869326c765a394f6b646a4c4f4d6335665439724846324d33433679656139503942464d334e307377364f647276622f3550466c38774c51343851716e4b5336764f2b70566f2b782f74516d356973795557386f4a326c4d446e536e444c3849506c54592b54546339306c5653304d6d71484d7a556146552b69354e56365a386245646879725057377a622f6c426f45302b79677759364b634f66433477516a6b626b4e3364616731564e7a35537351326468325a38616972587059697a63576b6f7034312f4859434b766846505575342f7743465957704f69496d4a36424c787a4e7178314c666a6642666d454861444273386138354754472f486832547a647450313046636950514c2f53744b314a643959324f61436d47365179646d614b6f4433593865686e4d6a5052515672687a4f7a356173336d316f6175624c58347953333471325556532f634d474e3579744971645777544e33416b2b64346466625755664d64643056445672304a472f473753376b4d6376616b664f6562544b72536c716637563849785338503431305a6f4f70307779786d5047424a2f472f454a346f74477a556c4b63327a4946626b53557842635135736164444e4f58595844384e694d6464335a6c3861737a6d53366e354569366c54717a4d57695969637a496b6c755a6d5a45417a614d65626c5554705a6a2b2f6730707630657a52315775476361786477675036732f764b6b656e516f3665416e70427a765933627558474d69693034636b324a664e7049737630447a377379624762664f4d644b73437163714e4b57725475746e7a4c412f77444a4d4d314a596c706e53746c746874525257356d677a4a717439464d5639692f6a6d4c63364653382f485133326149797656652b526a436153572b365837704936796e32365577744a6379554f633665514b64544432337876476b756d7a78786a6e34564174355071736c596c5a64367a446f685575697166794b6a4e2b5a4b2b3150705053686373335053355451522f38666f3747707565364c6d4c63477a516950534772563869374c6e333631616463575537452f6168437a516c44343355463767734978435274426a2f4145446e505564484a63544256454d4f6656583437322f52484c4733546f784a4a3336623839326175563859785431456c615a3379634d4b61446b4c7456426f5848546a50634d6a7836324a7a35726c706b675a526c505430673063777579316143536a7a4d3573736454702f6c30467a6944654d5544616649526a527a36674a476551367a4845724d5a6e586b566a76466435707165786377616b55634c726946453946557453734f7250544f6e6c47676156554552722f77427a686447357747475a6456656654507055766c484e5248507063666f416a4f5972735476337a782b395765727436514b577168507749396e667266454e4965366b3341456a314c5830417a41737536306e703432732b6e744f62517056436872693047537471526f63776147664a31722f41484833534b5a6135754e4876394d5250574d694b6552743264692b5055463873763841473830705a344d584d6e61576854623935757a794b575851427446455030574c643176616e42377962794f4d6c746f36446666376e75617a62637545485a43666e625271524d37684c747a374b6e6145657563517156486f563653566f41656644493849415543704f6a50324d43663866787568626d4c7a3645616251796b7777352b6c35456d714475757a4e3175526b6d76525378646730666166314a6a415371772b6b34654141554f4134764530614c632f4d484a35716553364e41534b6b796e7a555a57625472626e32614e3779504c6b30685968546361616370724454564d31495345446b74425062417553487854503859795032795936743965753258613264374d7a6f744a3350494c6148436e334a6c72546b7035524374386956766e4149546b704d465446536e2b73347475744868415a6d2f5572546e716d716a6f4f7350496356316954746f7a69307648716d62734d6c44583436564d576f71724c6a6f564677772b685370737a6a6f63366e5152767936352b506a6a505435422f50616165356d56706165652f783254566d36716c6c697a53784e6e7970486732556645616e492b4e326b34586e5038415763796d744f7a41717a7966784c4f306e543632317a7164615a3066632b74644974505274792b613273476a7130366d53464657616a503070365062384270574e69796b4c352f73697177644b394e76483555487353797065336c4b736d43794e6135593837356f6d56775044534c49542f48735a6e36554e42646f4631667a52355142387176686356643966454b51654e2b4d2b4c35336a714379744a3764467232483350316d31446e776a6a7039306964446c5877305554584f2b55614a685552545273515a716b513735706963786e78446c4d6c57484968486a4f50584a4f62387571676f637030565478564e637a4d35413366342b61676c2f5958336f6462317a6d2f382b7a6f724e4e4d39664d4d4a674336643059326458493679496773766d722b72332b64722f6b67336c756b334b3459666b7735325479436277536c63446a414242797a71415a737269694e4f6a6f364b2f5a6e63746b3256346d6c4a7871354d395335687467674b7176754c6c7147456a4f6e6e5575696359755359454e712f36434d6f79646659527a755a486e7a38777058416d5338413865756e503739537763744b58482f49564c2f6b6446674d6a46424b536e6a4a2b555436495a7741386479664a6a59576e714d576a6c556c74314878707a4e3269614b62516d572b536252536d65684b4a574f72375462316f41474f53364a6a5851524f444f7551384c576b787263335866485870617246774a52646d732b77345364396a507a33615857517a39546473554b36766a6c6b383167437277735532654f45783553433638786a6450782f6457726a573234624a6446466431627262382f424632724844334978366c2f7945726c705a3179666a2f307736553163774742567a484947613663524f356b6a6752545753446e3534305a553862426f6c2f6e4a39712f477a3057356933577359576c32376a55726e4c366e77487954374955457175497a694d39525073664e74755535566e696b664d7047316657726a344f5a393065566c79324b486a382b67314f646f545a4c736c71324c66375a57706e4e7677564a436c5569553645413532646d774f7742314735795a5550376446675a645a417a503345555664786d6c48375245663475455566556e4b6d7079562f4f61526d417130374d43505a614e4e476e5639764d637a65314147786b5132525a6a7446684755756658447a4957677867756c6f6e6a345a726a654838444e59303877696d554d384c5234774a46542f4357596366624961355939514d7438474f745854432f543547795a4f556a36436339326c2f704958667164535a7a375a7745704148447a6b632f6c39772b4f644761476337574f756c4651686f616f667764433665586b7358536146306e79643455364e434f6735484679675a4561564d6c77696b55697577584335642b6d68415762453839436e6f6d2b504e6f6c6b2f5a7464723537386b4f436d7a50643239597a7a2f4143385630626a4d5845594247565166746a6d554e54532b7932374f516a5350515663436f6c56636e57734e5346744f6b4d362f7663304e786752723477754a443636442f62327045612f42395030454838717861535652746375526e58716d70733252356f31464f716d6d50366e38624e6d2f58355a6a61445961694a4155762b61733345546a4f6c786745784d54475944476c666a32314e6b4953772f7541742b78696339756675555a6f5335333157746d3772516d71597672757a547a584961376f71674761536c496d485553427562446d565161566974504c797371506d697a63305462444c6d387939735251567562626179694f474a2f4963324547746c72533146695a754b2b64414a45494e346a6c3165656247376f2b51356a7344477a683131654659744f736b6c356d66794e6d4d666c464b4e5365617048337675585a3661582b7859426c6c473459777365776f744f496d51535a69365769304e4c54484e757936597836464131355a7730456a516e3155637a70342f3947663841466a2f4e4e396876464535594b3471656854506d624962356d6a66704d5841707937363064386d4c52522f4b305930506b4d7130774339765a706c6f5132726a4d32794a66614675584e6d776536676331496e4f6f472b626f4454642f77434f5971594c72654f4e4455366e61626d76673865794f37766a73585a4b714755517066683255506e59706b3376726d6451314d64675549464d395a6b54446d394a447076313772485a50316a6a755a665a626e705370562b4e446f537a6b717a685470313635396831692f7136496a59774b4b6e7a54476c6e51426d7154437368302f496b355533525148452f545376535957682f4679722b32356d2f70614571744968463073344d6d344a6e3150797a547134434838417774656453576c33582f687553634f44374e506b434f44794847306e305a32486635552f3547646b334c525a5a395155724d4f6943542b326d67702b53416a506a7a316a547057443375566450762f5564566e77593862453433426d5479656e374536374c6b35646a466e776c727a56304a30574b446a6b4f35304a586d516d4e6d4c527843614e504f7a672f69757846593664546f58315a63726868783632545a654e3351687a53346c69616659363150666366766e4341454b4750666270385772795674386e4353764d5633746d5a7a4a453139316762325268686f4464744b7a656c2f7053615761564c6736526f714d414136306332694e6564636d76535679512f496e35326b30574b6c78613836725758466d4d633579734f4e49324b425651696a3248656b704b554854464e77486f5a6d64504f366f527a77312f47633354336138736d636f757a50684b642b547149314a5a3558354d6135436e6f373252627052377172376e7273367a3264443534395242715a714a5949356d78483279682b46506d4a376f4556396f73426b466649535a64592b704d73776859744879676c56632f564b576f3651464b504f302f6c4c4b7a466e3358314c4a5935627446444e4c577637582f41437a4e4b6e51696e722f37443941566a4c78777443796179754e6865784b574f444e7668464b5236396372616e5846675341584a36723035765a4534325838456562714d3433784853562f495641564c497a416743536f44625550305036436c6466782f566245634d613549655149367162517a766a553257414c4c69375753676c6354556e6c3657577441447767763547332f6279616f715768706a366f65684f4e35596a796a6b2b54546f376d756c4a6c35486565564a6f7279617039626730374e436d51727937484d4a59554b47784c6157744662665a326b33487058556d4f6f342b2b717638416257692f386d737a3161757a3436374b5351614670667976306f7a70322f384158726245657a6b54555a536a735a395238374f642b78783379676a3762776572717272634d39524273482b32546a364c527435355a667155303035373439464f6c66384171434c5071586d784b706c6751617355663432555a627674733737546a65454b6b6a4337715a392f506455626a2b6e48346d654a656e455278356e696330576a62463438364b4a6454304635424e72727a5579616a4b4a38316d7070597a39706a6e6a336b794c666d676f4951532f7030426e613832366a62507872306530413865744e785a553133574f6337576b3046345573346642433236374c4347637053687159554e584e467161495570306f77616157365874526c4e6f696341396d2b6c6d746f4e30687a627366513532522f77414778735a496b6d4e326a566e686e654f4a37354971303647566550532f4c4b5272754a58387763667a48384c4b3278767238684f6266414e57433253544878666b7a644f6a64386273706c797a3864386579394d39596632576435427231474c76697a382f6f4b3745354d344b2f77433442385437327a78462b7536424e633778697542637a3774586d704c76596759364751357469724f2b51562f636e7048467432592b39594e444e544e5a454c757541453038396970666e5074316439764543664338325451383642794d51644b76306d7a5333475353352f5830662b52646158694f4c6f4b53626b566158755a486f4e585a336c4d5761665a30527a55756b4551744d7845634f747859336d4764382b78343978692f4977716b584e3848314c5a5a72733132376464434d6533443862455a76326d4668317a43505343776578705852596b3567666d424f596364475a6d536c4e6c6932577766767936765761425a5630774c7a596c593970317159754e56336a6479326778424f2b4b5a744e79776e6b6f442b67612b54346c536f31624873694844306f2b4b526f654e654f2f4e68366d627a78356b4c32356a6c4c347556496c4e7461483071554768495a544b5167563736626e4257586d57424b476f3845643569326f4f6d596e557653657334546f547235326452564672456a4d576e4e6f7a6674636d73517065565433352f6a6b747a356b36567445562b5135722f6c6436503348347858545243696e69457831426c56686c642f3841454473726a304c3756543233636d6a7a795a5047703147696765677a2f4d4a6d786663304133303578496f69722b2b70722b6b6166482f4666534c30715079615878754362787a52386b383333725749386f69797648347062394b47624e4a66526e4963746657754b49363531527254536b4a6a4f6638417138657937707a61343130395a6637346e35752b6f3832347a776a5538623947634b565974377a776a4c703774323068444b7a456a37703767753930716b6f68636c5841634b6b782f4e2b32495033545872374e70566e6d356f47702b7638413353667a736f6a62565038416c4e366d6c4864714c3071592b726b726c37656c35753054304141546c6a63367251717370596f7a4c6f4f637a6a666b4c336e70476870627638757552552b422b616635562b502b546c366b596e7276366d796248376234396472364f2f6273667877304d2f6c5735435965554c466d625a516676736d50686e30775748422b333150787a4f6c707a4531745841374e2f7742716e38792f5637312f386c395476546a3161382f56357473596d4a6a6559654b374f77637761445a5556466b2b5177326164507956315239786e427a374c2f38414d417343536b3363704177352f614e4b7449726174646b6a75787a497a54485652724e6c6d70524f397470614f5a4f79766f766e6431325170446e5553727958444774566e7a4730326677347a71625237594e552b4c7635636930356642596e6a6a786c3546343956626935386d68646d3978736774674f5275546879706d2f6c76725078636b4e5365684d3361686d5453335951422f4d72765166416553656e4e65663546396e4f305a714a4a63717679566e636c3136556a342b7a4c596565794e44486d466157446c796d365678505a524c34334d4a7a35796579632f6f44386668326a4a7551624b70374c346155334b304838545845717a7833505a6a365a62476475654e7a6779503747366a5154326534457a714b2f7236557842593443444748782f4935715a32766f75596c4557506c4e4347327a6270314533465869344c4730487079782b364e656754436b345343516e69516650454359416d7341676e4e79634459687132503464634c664745526f79624d702b563334314d734f36522b4e584c786b65656f666c47757531696e767041703641364b33726e41767035327a6e753263694f68475362636275667361476935575654426e454d2b726f616f6169335356444d35693671526e36535a2f636b342f72755848515a67456667783467306e4e64526f4c72747a424c4b45766863707568747572776347594e424e3359584a584b587772354f7a3633304457644c7850514c6f5271584b38714c794c75546e522f5979537030383778374951774b4e6a4959484f44586f526f46687758594d7442464f4c4d395938675a7348553449497763766f51322f774162373431645a6b3069697a6d37554e476b31316d656e4a7a3132555777745848734d31704b5a644b6b563679467a557a31424f506a7a715451615250345a6d5a6e6a5045463966777a783075512b552b55574b7a75315335632b4c6d7178485a665a4e444b304b427a744f584e54714c48656c627352776974725059414e704c6867365933442f534a6e704865496d6e306b7873326a505454505647506b6a3553307066496332562f52504d495a4552512f56736d56715473687a394b56544a346e47343934354b616a73414f6c4f2b3369434c50783233494c32505234787332616c745a35306b754c726d704e556e4d65464b7937666e65364f56794268717932726f71397a595072644f4d58664b436265383868515072543641655250686a777458486757675049563672363635366a2b4b3676516834634953584352512f704e6d656a6b634a4e433546357a416e736a696d586175704858706747664c767858386472526d566147446e547a325a2f644f594c3559746661664937426c30704f4b6e6b2f5a4c6c726a68326b79716b374d4c54306a706c474b773534707178715434412f34722b495070536948543049636f2f455a4d4c4d7a726e4e794d473556576a42435774487061554a617474584d35495a4e565766384145336f55746234386376524a51714e71645332667865764d576a3464364d2b506548387671783878477041364e6d546f35766b326765626f643159704330484838744e5057376c6945305863475346676151667951676b494b436d726d724e706e3543384d48775150652f5167545171504e6871714e57696c72565a7164725a6c547035314338614d48547739757966494170456b4c4268704178624d74494d70714a374c34374930704d4756305043766e7478345049645754437156734e52716277466c4d6569486931305573304b49583957776161567a415945716e3269304747596871495553315765377565346c7a35774963624f366d4f78656c72396e704156786155364d6c4b79556c62374f6f6e533339746a42332b6b48766b6d6234766b355a5a31756744382b4367476f6c31614c703843665235637a563035714e4e63424d5a2f32726c3855547571656c3271435443596d726e2f414b694a6d30384f4d43525a756a44714c696c6c4d4458616c65526e3331324b506b637457576d61584b3636696736737235786c71556d64524b643739354c416d70446c4a3179484f5434356e56715a5039664d484c4a657a3161327a79715a5632396d6870795a457974746256753145666159555539643263366b494270452f71685741784d78455a6b503175314d2f504350532f694c6450646b7157456d6d304b485a364a496376523271616345586a7a534b6832592b6d797a34674b6c782b3274514a44356c5247334d3436687a475878637936563461644b6571587234616f467063794e746950626e3539306b6b4b4b6338666d584e39686e656449767566496379542b344362414e73614f4d7069303977612b374c453558546e797733684f5370477574755678562b617a6b2f754d574d51444664796b696d39726b6751636a5330476d633945384e785835635647637651726a434f764a716c717a705645467337306c625542354d63304e4566586b376e47385175326d6e32394f674a672b35794671307446524b567a354b6e57444e30587270304d717a456f697038693032785470646f4a447943585034787946664554303264535a7041326630474c4857547664476661722f7346384550487359476c6c3354364e6c4674444d75444c61374e47614574536657646452503761484d46504567344c514230754f74735848354363766252596a7375677446515a72374b704c666b4e34636d306c644965456e55576f727075664846307a2b5759374439774269677a61394f4a485a625a527138647a4d654365685567313538375a574d4752576e584c533868556c66307141467450784a38694938327174682b36594a446c676e495257326e43536c556d766f77702b7a71414d736a364b7a76684232395837587a72627259646e32614159594e734e5a4c425531626a2f6f496f2f773132514f52354472347658632f6d394447577a65636e4c586b353745626b416765696d30353533496a2b6a465231414b2b713750703730444469694f4d784f59455a305048506b7130324a62513174324d615369376c323575306d2b366c3338746c72346e536d5051614f495a4437784f7169564777315878714f494a2f366b51326a785052386930697167742b4753535053716c6650354845466a62387a2b506b6446594a5a6f55796d5575507256642f58613148483833755757636f4b2f36414e7565463749745a58467179786f386d304a63755737517971646c554b74704d4f686d35456432706f4e49716e6a6e756e6d4471544f5652496e376d7541364e426f5a48682b4e616f3155624f72765448696d4c614f376c6b4b7339453947754e69763548442f697971687a3659616c7647674766374b61615a374b766d506f4746676e3471586b6d4473654a50767a38474b7a78794f6e794c546861765364562f3558476f7465527a7649566f3972686e7865467753712b773773616771496d7a4a55444f4f505441702f30577169792f486e2b4c626b65726c367670743557666746453163465555745232356135346f7670627359426f5a372f4632654d3039584c4767357064686c6b6e776d46696d546247374d547874784639397966725955756656563436655055706137746f51796b5a7638465a707771762b356d636c65722b534b696f6d7a43785a72534761426f48346a714c6b4349557957726c7279636a486d70737846377367746d7761594b644362703057753072716a7a3666634170317647486d674f3945586162302f5773565463372b67642b46656d3864344a7a71614d696c6463554b6e617559557778622b56552f4e355733746d624e6f4e5473443763382f6b476769454b55794771655764583351754949775275592f4c345677486f766f6e5a6f367073793944644e7573757a51463276513642556170394a4970702b6f415756382b475965644a335a4b515a617544416f6b4b324d754a6d41696c486930306872666d584b6b36413530614b4b47336330473233772b516176656f662b2f736d627571392f4b547355445057715a4369334e6a35673539334130654e6b37704a72584e6c44695a2b6a44354b63695034366c64444d334e5331484461366955334e4d4f45777951414f646a4e794d6c7452767a62632f3676426f47377949594e46327678345470306b644f37515455704b7146356171462f474b5546535a474b65644f6b416c57526e54592b5259464c4e474b7744444e3065356d646f52727a345a626d5a4e576c624d3559664373457a377763704d6d2b384c4f506454704131786858342f702b6f474e38667974425530424b7848364764476f6164714f4953757343473638762b784c343835446664474f625831644c4f4a5a5943622f63594a3656527439664550683863566e77746f613271714e4337574c302f69475442344838676a34326c664c4852776232514c5850592f69686354745679583148776b71613331385156756d77487574304576485743394265584b664a73537137786b30724c564d4b627063624c64326554514833696f6c632b6d70784950696d702f7177547275534e57614f2b46767a614f66597146703063543864557261704b3954734d6a48466b366e422b525650746c4671526348476444347a53327533485a34534a526d34515377766a2f6b4f6330645a516733476c324648444769436c4f5a625a565a4455476e7454396f73775970564a36666531326d6e6b366532584a2f71767650494a68546c362f56335a45493131614338656b6d592b336e47546e352b336d7735696e6c75787a7a77314141314a4b6f7a5534532b525346554331505776326e72412f4c3157595961536b5a6345345a357168536d36766c4f6473527536564577304a57376773314f4d476c4b2b63346170676d442f56504f4c55716264334e6e47524667334d7465783976736d6a71426f54304b355a4e4e4a6e61467450784d36557754364f6f2b57696b305561696e794b5a77546334307a712f336d5957352f4c37694b6562525461627450786b6b4f6a72317031316437584c6f6247566a423431556d7472614b69647a6c305832766f734e4e6676636d6c772f395261542f716352475a365a464c50684861774946367a75615664466d665168543538756538357448517476786c4a7148485361736c75586d6c657756722b314d4e674f54772b684f69655244764a5052334538786d3056335a486a746e79795a4b4f53376b324b69694a2b57686c4e635673462f513534374e59545a65496f31596839353666444d51706356427a457a485352713535462b466554354c68367346486963464e6c6c376a324d696e4a71757047577652463332643835383665483575376b3949662f515350746a61457055575a624376764770614a794e59747a2b3333574e45736d5034586b4f6b306a747a5047722b79643661504a5a36575a59506367694e6441745777464d4869773969715535394c65706b414736652b384c66622f67454d7638584b4a6d342f54384f504654523136764962377949477238523343386d74795949596c6a78326f306e66634277527a2b78314d48303166667047596b78377950785439784b462f6a6a6753356d333452705947546d75307365476444394f664f7939656965777035746a647a762f41445771684b325462716478796946756230324251716b447557476232752b63627353493534722b506e6c637579767776586b6732624d574776613844305363724d31642f465270575258796249597676534f78507161556658554f42423042536d4f5a78316365332b727a6573786e2f554c366f3949543844734532356470534b7371756e5a64666939592b624c304f7346313262737a79484b684b562b5154616e58436f5445432f3178584648314e5974457a6751336139504e66697631426737457532795841787236394b6255334f74316b58376d645a486f637a7250342f4e6f35445935673558566975633665424b3146436a63534c525051562f357036626e443932466d64476d4346504c5a4d56466d6a4269727936537a634e47597169537276646a5071546e77725a5477574f6b706a3545546b3057665443596e68457877466158654a71565645366d4851327461396e557a4e785674305a32523536317348623259764c35352b446c32727963756771354b6f744872706e577063302f687256495a65545933694749746a443430472b4a71496d354e4838656f626354482b534b5836516f7a2f5a6a774c7879306b7972705637703177646d2b2b6d6b684935695a6e7038514535766a627230387638416f3574506270646943766344517a653253552f595371335556714c6a52526c355934766b6e306e6a4b355530446a6136616637466c447636544d7a4f5a42392f694e4e334762394648774f724c537a737a49647632703867304f7a685a743764665535302f45532b3334306b77314d3537475a71616d6d6961654d7149454e3868394a7a4b6350494d4b5866594f7a696552327835666a302f61417a4f5872716b7156715153314168597152597a7237787364377a544b663650356e4b72744675474a34774b2f4c4c6e30382f7744386f56616d77416357562f467a3662565674614c3556537755637a352f7374686434766a2f4142584c537151376a6755314d5a567a4d524e62386e332b3470757a306e77504959373962437569594c38617a756676357a73324371592b586a34354135767873525a6f655447756a514764714246516c536145686333374e6a62626f6a72776b6155656334506b5869336b574a62347553385064386273663543506b58616432643259504e4768655535472b74504478624b4a6443463872466f543045782b302f6c5252516f4e596d4a6a46757344302f3841346a666c66356436342b6c486a506d504e39506e33453437702f4f62536a79462b56343238324c7941394f572f42665a457a536e504c2f6d4447636d746a6d53346a4a52714b416c384770707857324f7a50776a6f6233792f55303564587862774c56314e50645868315a6463666a4256562b542b50363947667035387a64514e71682f53574471732b596157415658786176732f7743714330682f574f49695a745055562f69616c6e6975674e4f35746235787663794e506b57334675647a3336733739436e4d4c4973765978444e357271316f2b35456270474f5459354d63716d42662f56706a504351613867367749453359744f4c7a6c4b3571746a503867715a517a5231584e6f733572614c354d4d654a5764474c63356c2f756e6e706b6a725a37616166384568536e715231696831357876695747552b5856716d714a55384d4370776a71666c6662396f2f4a72502b4764565446746d46566d72544f6b4a6839682f30476a58686e5138633834706e79575264794e764c304c553554595a746e4e5a5568667a424e6e584a696249566b636e776e2f3333775432587a4b4470786770555064356a4d596e76473633345872387067394d505038417854534f4c5574385539572f4c3550483546794775726d4871595a365a324c7a76464b4f382b774c744266374f5a6f5555546639785535635072724d7454472b754f6d30655a502b36333667376e71462b59506c534754757938627750787a4879386251624765637137427474586468664b4f6e6f4d586d354b7674623345304f59746153506f3953794d46553264337338567270312f4d4b49394d6656322f38577354787a31657776415332664d39356744712b507757542b4f7464345a337967337643742f6a7053732f323270584f71543633786957555a554578737979666131666554746d334b4f785034542f414a47666a5a2b56586c6d4e34526b6257394c3564356e76666356344e46345737613273665254466f51352b687464427a7073754c6953455a666e585530725059637a5a65677355382b72532b6e475a374e666948707338572f467a3856765361544277396a4c78634879587a686b47646d7950646a5162766d576e567864694a3856455566324c424850757a356a3537415954505a5541507541476c777a71616c762b3047664c66782b394b664939757278767875766e4e7a49717371356c6279753643474553645253636c46536f472f3841542b31395673356977657057465a76562f6e37335246375278366a6c6a2b63586f2f672b6d6670683572354d4e6466697966486332757858386969714e4b4c3337435463614e6b4e3637362b66796a36387935415457787833316d4333665753332b756a53744e72566a4f3465654c55394f7646335a7174426b713359746175656159506b32663937475357586f5a6c79633353735a797a716e4c4f58576e4a772b784337727162416c722b74396b5036375253336c6e6f336b352f697578564e754f763769583472777231714c776c30536646343846474e446f394a6969334f304a3152544a776e41755378346b3070707136477a457a45357a7847756e6a317171656c69313745664961614678676c39716c707a3077563656626b5a644e5576766942436377667452304a6c55336955796e54527a2f414c544e784c504875543743326e474e33633353544c35426858343073313837316c4b6d536c796c6459686c326f4e43377035464878724978675135303050734d335a366e63445a50554770653752573665444b3150725233727630425933517874796464465439623366497368496d4233334e4a3176325a557a315275667a70562b4868343866302b674b616b476e4e5279625952566e3930303975732b31414f504c433649727635756a782b68333257597156352b7051684d58764b6433302f746533713965527a716862782f566d5637634b625545747a73387961677a6562505266796479374836696147555176326d536b6b7149706d6b616c4870456677767369412f366d596d4a784962383363756d312b68347a376e7955645663376b796e614d4530716337335477376568564f444a3078734452714a3333523531345445496657413743642f4e6b4e4f5937742f53444c7a6b75314e714a6d536e6a4b537a5473544c316c466a6831644f7235486b377564506f526639663841786637312f584e46437a53614c5445353735485162384d7652507750784478507a6e31533951672b487969393838575a693648455a612f4773797a4d63793364626b784a3556594d39564357616e37345176636b7a6d57744e4a69375056744d7a57746567736b383331367a4a613962777a57385a3875784c644b5a5063456e624f7435466e3255394a4c3866563076492f32743144626d797964643968387972334848376d557a70515665536545786752627950316e395564496c69366e79506a48556654386c6b7252354246713838677638585947613530415430563732784f3679552b674b334a6b6e33767366594471686f43327973664961322b71452f724c6a4e6b387467386a3869314d6655776448787642703855306e647738356b56626b49584c5331594954473546576b626c67796956786e38547157554643696d315a7250434a34434a656750705475657365376e572b5255376d31687a523647797a47337436753975706b794f32495049556f7a6f646a6a74533539433348777672572f416a3458444f6c7a5a676b6d3878574f58695052722b4e58684c2f48745078473342374b7a50385a7a45356b6d4c6e35724973537349624e487171614a3566396338714e536a79446e334b48652b4f6e4b544f7858556b414878336e4d586952326d385938536e5446385437763479624c614f74444f635254494c78367a6b397135345a363343345a56512b4e736f427935766e5371784a4f43743871665a793274752b55445a627853472f684f2f55732f784a41673662422b53792b582b4b4c5a42636e7978763841756a4f7534534a5a47356f306771676144635264375557644453724e58526d6b6b327a45596f706f3973797047685279686a4a4676686f44366f6c5536546a5069465a694b6549452b66744a73416b686a46724b486c4431445557536c6a3168326850757231507175515764385a7053497557314a433376652b3179356b6b766a6941776232624d76784e7a695a564a5a794e5230756661357a6e7037637637715664366c7a4936467a2b35526a305a2f774267734a6d705437306e50586247643365496464556a3933314b304f4a6c674935473070634d376b555056436966586d6a2b777a6c432f73527a2f6f6e6e37302f43512b376952724c2b7243752f4c764450482f4c2f41423758386430347236736e64654935744e43537155763374597962566b6f59496b6b557a3266395a6675396f4e4d782b4e722b643636596e45356a754773376652723156394e666664364d2b71476e6a5a57427272724c4c727652752b5061534a697a3879754770653675396b63343244706634775553746d524d70492f4966787143303272627456422f4839564b30303938623951492b35657a6c684e59506b626961506a2f4145544b685674663248706c666a30446d706f6d36753767464d626a625353306b58484a706e6a576377482b7057583061574a63764b675961425052436150537932615753576f47676261474f3973654f7975675153586667633736334763353851447961675a3051485a65794b735466754d6d444c46694a6d485851714b4c4c79624d36472f6171345354702f68396835614264424d3468596269704f59782f7163634d6959397a49552b56324a70494b38445a38523864386d793053524d6e707837564d6f6a304c7072357669596d617a505a4f636d684f68524a4478684d7755634671666d67613337476674516551533555524e376d2b5173636c7553364b525172786833434f4e75662f3668485576536e5871657a6e48382b47412f596b42506a58526a74473265614944444f6f42554d756f7167316247586d543474554347496a6d7a455a6d726a7758534a666d654f6445737368316b2b32645241507735712f3230524e76324c4330664735474e4d3954646c514e68315837556b595a664f6163386d6d706c6f7a644b706b39446e66384165576d7041796e39626b795872706e366f306c6a626879393043587572517063634a5741712b4e6e617071464168553037584975726f344f61746378527a664e39693141697333465847696b55453446717571434373687a6b7468726d536e3668415346725a6e78705057663235476642415658777334794f2f4c4a69765a2b2b4a526a6b365941614e6f306731546a4d314d74423363545051374f4c67317a4b5a7a645a6c46314c354c3470556a4b4c70302f39557965526c2f6c6b714f636e4652533573356e4f65384d466a5178704f585642796f7530723549314e45624174766f517761427030644975725a77706169374f4d312f7974645548777541334937416857664d5752756146757270757631714c314a56544847376c7661752f494d36667332735239346b736c2b46684e2b5949796d34684e4d344f54782b7677386e2f503841374465536158707a647a2b3154396a31485a652f55564d4b2b6a43654f4c687a616b5a656b4b714753736e597343374c315837702f7742435032582b56784a382f573133555a6b3861624b6536456d595a3576537142665848523851315038414935462b7752366e4e714f6170665454594249346b44585a3866656353746135715637303063456656742f59746c2b2f6f3849366d44314138714a4877674e6e522f6a5a616b4c36506635427966673631546753594c625766544d72724679786c587152665335664e4170684372674d647734614a386b6c4c532f636f6e34584e4279556761556d514733334f43596d596e4d4155374e793352334446587a69637255596f5a6b794a30567355734375305962483058503650782f5430766178424f2b482b4570704276566639576c6d66475175724b3146386a727343695868307455665262545a4e4f624a4b6e6134476b43482f7742505a526f534f69664b34435335302f66724c4d35706d514a546e62656172495858484e53764872527835747a374b5a5856556a7172636a576d344f6d58312f323278494c396867584b516d5343712f5a43426754585472336a7a79474d654f754b65562b644e5367516e366b2f6b6c4c6745716a6e4e645647684c3755713933372b316a71366c544a6854386f4e55354b2f73497a5470455150366c466f774d61777878497579357358496c43696a346f554d75713976487a394e7a49454a4e4e44584d722f6f506f5879555a393877774c3971707035475a6c464b7337516c595532684c4238594d7955453555552b586f4c2b725051344152786957394c3479624f4247656a4c454947715244443374694a562f47324677753172465a387150743963464e57445555723239532f704f3470564e52434132484f5a67584452547a5453765a703650484f347434537562525532616e7365676c414e6d6b3973756552564f554149746d59355533754d542b486f6d4552324d41355a51306348597938544e364e4643354336453669736d426b797952795a6135343138566c77385076536437447a564c616648473737594c78374c4d702f73743074444a4f696556364d383535506a79456c6a7a374b4b703766726b327a4c524b6c6e5846523766664a37364b4a6c4f44375a424d75616b702f573671623477652b77494c2f35422f412b556a6e532b6971357a75382b784e506f4f4136796d643962693070754a316e75442b674d542b54796657713579434d7536616761726b6c61352f734370337966756b6553736e737a585379754d54506f47356a46704f66326e7745415958704e556a72486d766b646952754675667239617a362b656a6b374669346d474e412f562f6d41456554724d6d514e6f42667644697a4279706b62654f4361366654637956654b344f4c304639347975744d7442384273712b342f754c37557a413537526a646c5270355a39766a4a3267522f6a59376857376e3152484c75475243556c4b2f482b52624b4a62306f2b476a7044704b6a4b674f473561766555786b735142776577453051795855736373344a2b50356f78714753654d61705130446e5457584f4c595a4c467161484d365a6c773653644d494942744143414a3663484f61644465716e6862395654796c74424554644d31386a454a7a617866656143357968456c68536c66364a7a533936766d4d6c674e304a5a4b486769594f44392f7744556e5a796f57365a69394e554d756e4d7778632f6866377066637871302f77437736656d7667554c574a6778374b43336b494c617572376d663951797676686e2b5134645573314b76676c4d426432364f3665685139447250737a7158384a665846514e697462642f4a4d682b2b35736664484b367478304d7a7871725a6c364e6b6e505a4c376b70574d4f67416d33767963616b5853394679535a2f51475431585739355a5948493942516b316f4a4246446f616356792f753366446c2f4d736e392f316458776c463775544a2b4c334a637076394177304e41754e62393959645a32624d34743156324b7161786d6931616d316e31734a66793849415143646872655a5536446c734542364a7a676d324d4731794c32377051644e456a354f39686e2b354550587a387330625452517267335558667872426164445539452b4438665766706e39416c703556317372623258307268476872424d4934306a516756305468314d54306a3968785475736a42764f754566744b34487656514530674e47354d2f5153357170786575564e37684748787871515a595338755a64667a752b516c6f38696c5a7765697a7642425046736148513779674264336a6b4e716b4f3552564b4453655170343057797a543639756565676443696d7266484c516d7a4a57766f455968784b2f664f6d593344514556657663505a30577a61593055502f4145526f596e693130774d6e6a6b7a656e6f3564744a70533532686c72702f517a38634c5575656c51713968674a504738633275767174584870537a7a486b386c75516e5470566c3071444c6d59394a51742b42663153574c463959622b5278766e4a5650767464524d544d644a464c2b522b68712b3831762f45745a654a7055362b5a336d4e72333638786347722b4c43544b4f4851754f32686e384f4d76652f716a704f3765364e422f4176336c654c2b504561725765432b6f48673268666b6553594541644a76413052776661764c767a494e563132704632334b75556d47666b575464386e756d61336854476d49494a416566395869596e70496e75564870745a4e42356a7032736769684b72757070545a326e324c52306d584d345769613655454d73624b7275702b514b5653652b62376e492f696e343251526838644e3965646e31654f32635965686e47476c50496c3967496564334f7952356c4b316a7143433356556d3235564c7765373666553955464e6e5933526a643342745834426d616a38366954464257634f6846496a7876642b77624264715561417337324b37596f6c477773333575706c635558656150764f676a616c3657794b7162343152343535426250506b2b51615350334450566f513930732b6f4f537a3053636a744c456f4770314373466b37364f4d7065687a4853473452724e68557845356a4d64346b486a656d6d4a74634f4e70486b64476947687a2f774358624e7336744d6a614d756e78306c664943336638453666744255476e6a51465764653931663255534c78673836545a444a4b656533475a5a44416d58636d4f6f38684b585a32746364493135704c43476f644350356c66564b736130324b416b306439696772737234412f682b547a7464566a75716c7a4e716a7644784c787a68363539657743626333746d785451796a35696f324d3334654d59487738733630324e636344653176587262497444787043454e424b6a53783157564a643866767245554c34435a652f586d7536686a5a69366f4157586569535a343576637634615a654b7a476a386338715664686e76312f47382b69746c384f4e6c6147706f6d39554946707574627131494e33736255734f6468486a4b6b303377455031527072414f674c776c6d5a7263374451796e616d5544744c37484a4c5a4854612f4945546f54785757587a3563664a645455616171434a50572f7953315869705a6f414345796146484e33782b4e6d586b73543477765163756f51315553317a32315a452b634663506634654e78554a4d567a754271457a642b736167425643675577732b714f5473474b68462f574a706d6d6e736c6e7968566e37314e46462b534e524c2f63746b6b613436337a30696f6e2f4147562f566d507456464b596e474a7a3044625a7749356d5252614e314e2f466136714276316e563178356c64574a504f4e6753787437464f767371316b78713238544d71596a563730632b5935456c7a2f48632f5a544462632f54324e4b71796547397655524f71566e3833324f6d505462574c70345a3070545a3268527561756d4d485056377061377949493335523434756d7a49732b3975565635625938393550716a7065707a485655636b564a503841434a4f664c44517a6a6d2b316e2f6f6743356b5a6e785a41344d63666e536967666f7a6c3433595a54467454364b4d7a51647044394a7165486e4a652f4e6c4c463070616e7a6d4b4c4a676d55414a354d43357067577a71545a334a6a746d3034636f4c764a4b336c492b6335636f723946633266703554546c715a507350576e5955317247787a38436c6f4576686c4d6973484a74532f53696e7847614b6e545a53694c7330675438767453744e32563156476e7046386854684b4b6d6e5233375051636d6471686a584e4d304865696c2f66486634714a7a2f34364e304848743061713167343743307261744171374b415a4f6c6d66714d31574c54336a67366d63666f6d306a39774b592f6947506f5333664e6e77746d784733347353314c376470554b5975456775787876486a4b5854445143474330364366796b4a4b6563436a3971695a69497a492b4d38664752303576526d6250495736326a7072564c714d4c37634244626d617a4e5263644a4a7978595264705036394e426734464536783972676449495a4f424132324d496c554f736645534d2f57645163586238755346634f55563748736a537a356d5236544a7a684d7a366b35766c533454595256333138516468483563616d4b75576264784a644b7444622b32353264325a4b324c6c66466d776863414d325071305339347a6f7842797859714342337a4b4c2b6e782f543952596363363832757337456248506d6c304c7a523353556c54736c4154324c5169577062516c64786c63704c596f356a36326b4b472f57686677503678413267395055706d34755a36446458556c3931644763476f6a6d7077704f4d3759365666386c5936456855424f4f6d524a7930566e3275685a4968302f642b764553534b36684f742f342f526b516d73736a71725369657a3462487855354d55314a52746f3739566f527a7671552f706e3870423744643741636c644e73343364775344525231567846644c5162456f6536535a6c6f447a4d4e31464c5a7648376268416a64514d7165735536616a2f4f4f6f45746356683943417a44645a7a543074532f355a6c5672616f6b766d584b4e49525a5a556b51457464537033735a6e2b326b6e41326743306e4b36514534702f367473743442343864387446774257334a3545327a55646157667241786c762f6169427167416c4c6e5a77614255787a6a636d77584d534d2f4f2b3662726b382f734474364b714c554c70666458324a54323530373730497036767638417a797255745576706c724b5a5377666b59386b777a494a764b6555484d343668534264475831465055545438376e715462686c4d374247765473517832453178453734382f774348356c724672684937683453365864636e7232547874506d4a526e55314d666e645252436d56464c73766b78307a70764e687a6664525a6e32545554306c2b7035334638597a702b4a7342386c4d675a396c7342653478556f37656a704c3750572f4f7557444856352b6c5853796738336c6f7a465150384147727856756f34626d41664473427333423551356e39417572647a495a784252564d3546794d39476747547156315438736338453868367870304d715a634b47756e436c35486551413573664a6c386d496d656b4150522f4a7135446f43636972515879717637746648637071356c327a777357487738415a2b2b356830454c476c7863302f66682b58686963415050524e614d3867314f6548594e664d2b763335616b545563584852524a39576d7848475663534a636f4f596659414a745647432f3866684176375a48553537565034397971596851754b594b71446d4b69713568484e524f3577336457776855412f57745763306e48413443352f514e7374737a4a6b4d4f4a3643756f2b655a6f5247694c7259486b332b514474733752544f57666a756a597059652b6b4459344a5030356f454257796f424f6741416c70696b416f32396c6d63435a6f64466448794879427a456c56386a6e4230436253664b622b677954686a7a2b674863746f5850642b304936786879555368446141616773527136585a38302b4b734946706f7173584d6165735530784e727668704d757341484a32446638415a4b6639756f74744c4e707059694f6e2b576f374438736c4446537235794f46544d46693341765034306b345037492b74556f5442527a6368665551324e7866746455765a59432b39303245462b437a5064796e4f6b306b4e793676347833796c3075664e53482b553835726d367163476f35756a35492f376452495544304c4f6e484177743054532b4573365a664b344b446e46784d5a4f333547644f524c723269354a39396e746450495374655547614e74676843357363646d686f746e6348555474524237527a303144333766776a4451546c2f48305261673144384d36667541304772306471584c492f7147494d644657656f2f6d646e5470666c78697076773569535a4f756f7635526e7442674a5542675843704761666e39424a7135364473356578466c453759585a724b5233434b526246525673677443664c466e2f5258464f342b472f7453692f6c553843675747772b6777647a6b46636e4c427142557338496d5645466446453931636362364e5a756c57304f527931304c75375256505148796a4d7866784c637a7675416a4b2b696c56453953325a316b346155735668764b7474597a746a374e6255674b766b4b6635724638436356566942587150335575425a454436615742744139534567782f4e595365354e4563556a37615a6f3239454e504e547a746c43374f3145432b6465514f50334a2b4b7042657745326b4a4e51683975704a532b5a30307950347a5154466e6856504a383157556130673559745a4a4e4f614f732b6235556d695955714130474350784c6d7a4f56304a52386c35456444565579694c706a2b694c714b7a7059513741736c46624c446e71584f62706c6877506d4a6e7a41376b7136334a30654e2b396e664b786c6633686c595144575866612b6769376d38495a526444476f7567775766353959376a67436c53514762556c5533313775384f68374b2b38717a4a6f6c624337324f6c2b754938302b4d613061424a4f304b656636754a61424a536d5a67636f3643614656734674315a357a69504e3533677a7258334975707a714a6e756f367479654336465a4c30477435314b7a4a50764c765a57473339674d3665517a746c44583267656d53363754792b4d4770766143632f4b374d795756664a4669706a4873446f67446133644e4a2b7851433048304967554b5a6c352f4f506a7a5a565373484849536e30696875756b39376c546b71577864446f3651596d62336e37334a6e2b556e444d3042463758573031664b566a6b70664d6d6632356d666e7566783566724f7a4f624e4450643979596830482f4950584c55635a50506e7a482f6b4436424c31436139484e746158326d4b2b7863514b6c537968764b2b7271464d38364d6b5371586453324d7567356e62414958574a612f6867526d53623363683173734a4b346f632f6f74374f63595a4651306a6f736a54545a433948753434534b635773465047674a702b51714f6445426d746d6f3631597964304a6441354354373944537041456c72445071795356643651756e7a3579414b6131417331643461792b72336f66436f4845736a6e445078653362397a3454304f32547a4c736e2f5a4a6e6b574b49324a35515170696f6278746f694a6e48574145465073506e39423869524c326539567647484935503841304e61694e584a31554c525658546f5252635a386565766b2b6650523052556f7a4b41656d78314a6b3051673365542f414d63504d32677566633037516247766434327133537a644a687a35305759356a492f727a78726a4561685744512b7a4a776c6d544863364752364d4b46633752334f2b3354786b427a49386a716b6c667730726652724e56525637626e454e444f395251682f662b6e396a32423733557543504b723558525256392f52626e51336266376e4b644366636964544c3236476458314c4f5a4c70575546796b2b2f4a333678786d487732644c3441546e627147394b4d736f657958524e315a55707a5469587a6b31636f756d4c7435474443346b7377414648765a3775306742324e4d3652425776517377546d6f79766975585a793258756368335166307064556f71364d5347504e61307030516b354238396c674c6a6d39796c6d3776374b654e703878427150446938686b4776795849784e684756536a57566e5a54786844346576456775704149516f327452754f2b72717a6f4e507943457631733550656853553773646e68414862574257745430397a73337332685052526d364d304f4e4852784f645256657571744e46587735704a544367436b2b7159664b424a726f2b52446e3032393535434f73386445616a36324164524762717a36544a30492f376c756c587030642b4f39694763544e7745316c78394a42383944654537376156312b347262362b4959302b4f7536383942735a6779355551445644485048734e51584938705378717169414c49773976774e57616f46526d3444414767546a7062362b496b583866737a524c6d6c646632574f4b456e7074344d392b506f5a653938656c3267383664524a455a5a5a2b6d304639533253415a34795657412f61722b7a395a48786565542f6364395768566e6f544f346533314c376f7972696a30363657767a7a324674496a6e3149794c354357432f754e74555a6d6f542f71322b7669415532466e6130394b6576717a71633169656a2f756a3039574156646450465448624d3574435a33736e756e46536763353947716647734237556d4c66587842367244556d375373566f3155496a32306c65645558367a6b4e5a4b782b6e4e4d2b584a466b633076384268766f74507134435537326657594662706a62362b4959393861376539312b346e4d6869334b626841376f4e5543785a354f6c7232364b715757484a4a6f4450795837426b7356384f4e484f75704e31496b33313852492f454d5848727566737a434f765843316c4d4e3353324c64576465564d79546a42704269334c6f4e4e305975553077412b5867626d7668563332307461637a55534c5152496d5a79644664306d556c304d716b57303371636837726f37466a6d50756378566d622f414271785943515a503778543776702b39566e79554458734b62325464443563376b36475535314b6f613235703559577a3849354c595675544a386c413174473078396f43386a2f414f777750746a6266627841613352527458614d51347330793635312f55787248797376796f31494844585671654d6532583741742b566a2b383047574a2b77665030664a6b7961495772793533634d697674337854737574336736615736646d72324c375a776474774b72536859655256777a3347542b4e6a33516e2b56353850695a314f2b74475a544f4f45725674752b63415a515831796d6d6d687942626b636545724b4e2f6f61704f484e715a7a7972543778715148524451637852734f59456364654a644d31544b6364676e6f5936387651445656745a75786d51354f7a6b77305132352b65306f4a734e7a5875575748735644644c2b71456b756450416b424355794249543365332b674d6648525a624b775a5a5a507566384154587054525a363054356c384f66496e6b575567584957482b4f65575937697a2b597772656b57463334576778626c396453446b5a4d47706b6a6e30435470353035646143727a702f7743536e366f636d687939414c763530454d63794e5947366b467a4f73464c5656333138516a4c4b3038734c75785457506b62727859565471304d3568747a6e5866523151746e63746d4f52547279574961726e78456a36776d6c7743352f4c4278496934552f4d64377a6f6a63794351657564534676556b5254586f516d6844526f476a506e59734c4436342f34315a2f433355584d39674262486a6f472b5232566f786b376966665054466d79357562584450712f4441455852556633676f56755039334f2f5545356e574d7a7555544231514a5061796d72526b325648796a4f6a5059634e394e4664504b55535a6b32564d6b577a6f62686c3350544372674455776854374b52572b6332673845344f6173637465353335357237745069687a2b7368304c73374c2f7742695866466c4734712f6c626b786b3253516e4533392b51714c356e55483879517a6c696c6f6a682b626c59422f4461656a6f46617566506d73313354325839793366794253397938303251306434752f68782f596d443672346156704a77465a3636722f4b6150474d694b70576b716a4f6f316274413236655467637a71424f59695335593830726d7773304135495264494b334e4b57636c456735347a77794c596b38566a7a4a6f45654e636e7452784e412b51307379394f7651335852755376362b376573785557624a6e5865314348503841384b6b68784956325a77676d6b5836376f44325a6675796b34666557524250497167354c5a447a365237334d7143675a65532f5962506a2f41435a6f756e594354584e794e7359456877456f637741513177365537354465756169657873474f71717575536359513074436b59753643586d6c5a78787a3971563859712f3738436a436853772f6651474c6b47614d7a4a3056686b637177732b4f2f513531546b655043457274665879436b694871493431564f6c346d30566c4d6f51427750532b644e454d634f31354272424c4a4e4c69314f717330715355414c6a6e375372724557467458747155535857664d585a64624e636f79525166376d565134614c31764135415857462f53486e6a616d5a31303041345933614d394643376c723246322f2b6e57336535714d2b305332477941483344715562534f626a684d516a7535734237566b356b7a7035316c576c484a6458436f4a582f6a2f414d764555686c7849696d6450483049324b57547672726b414847344b544d415a37782f71514e3368616a365a754b6647716d483633613952695a3052797a70316e61617a7554343751576579694756717a44745261435a705a4c4f2f637042504f6858326938553537326242717037386c45344c307a79374a764733306f69716f38684e2b554b4a696f432b7466546f56314a755266382f77426e6c4955677746325272724170576f6e775376384148394d535639576d462b65436f7357374448663051354d746561615857456c3053554a4d615359354265332f414b67454c6f4230615967746757484e467457645079704d483134744851325a64544e2b33546e336972354a6d5a70636f5379564e674a6d724f68546762385268484d6a475a6c4f717874576e6b38314361376e554a7579776e62444e6f5a5673566c586b56326742375169493668636836706f30484e39594f695451727a674b2b4b7861427a452b4e6d5a566d5876657a446e34484278596b38644850473439587834682f6a364b74676358334a2f625251576135316171466b774a41505432356c2b6776417a304a622f41444975536561553273714461324e5335382b5a426f557a6c3334745a4e677a396f3632376a4a67397268553655333054524d34695a45746242715261472b4e706a734471457557634a5a327853356f414770326e7444646d666e5669676e4c35617872772b53504561376b58325a762b744948545430557931314a377277546c5166455a305935586b6e4e477a594b3751524e6f6a72696d5a6478796f58656961377330796c3142396635766b6d41516b4e655471572b3463735934345975662b6d5735446135355130644b6655685a6b6174444a326e6b324d31644336587472327249564f476b48514f4e62516a753573414a742b4f5635394f624c566f4c7a4b63312b4e797966384156566c564573454363326c576c6f616a7057564f624c745a3652346f4930706d3069464268332f53324b3233664f41396f30584a304c4a4d686254424c2b3539397562326532666c6a524c517161764e6b634a365330366c6d773237366a7743513067366f506d37654132474756584933526e64646e3632514375315766782b6667564847566a6559716e53544e62523756326357354d786370716a44336d746851382b4d624272667379445450496d4a644e37446164657941664f797942474c61784f6e4a3947626f6e4d4b663841302f36344d35314856685850795a49664b596439394c5a5877416d7a797a513864426c4f6e39474f643266563352566e7a4a5642342f5a71653055524b536848573161786c4f4e44756e326d6879547350366959784155787472614d77426b7a715a4b76754f666f584e632b5736564d42706c6d7030314d326c6b575a4e6b5173616d647a766d6f53306e68533175787a3247734b7a633634794b4d7162386d787278706147594f4d574e70795253797362434d552f5535746e57514f617875686a78756d5942542f434746547866762b48676b464d65635a4965543663507075756d3066485a4948503055757771676e74334d6d504a5a6a7855367576375745745a30445672457736717a7070562f3150656f44454a62526c326e4e50723643634a546f764a4a3730646a73307171662f4937382b62524871597039534a6d6b7457624f6b32536c544563334d3263304e4661654173495438513249756f4d32755741634f53477537516f7a3954557a374c6b726a62336f713655634b45392b566e655065304b6157653651786364414864494d704f4672527a616a557a34304e62654f74646466587a54756e716e6e385a6b30613477545963347a75425856496d644774492f6f5a77716439594d2f47546d627133785672724b566954564948664935394332715752556461492f49624d7934623256554f6c63587a564177434f2b546b74422f5a344a67637963792f51333435354e473456764d716c4f3732365a523846464771337576526f4d6b35395545315a4b654c3578796c427343324d497839357a786d4d5a3767667a2f466e35744338396d6e50714a4275712f564b554d485279767453784b7a64484a325a545377766f7330717243347a3434442b6262614e5066596b50657a474d353442305768466c596b39544952782f726a70634a4f636d6c544679734c4e54586c766736484a386e51504f6a68557555464732647a6c396d576d62376e7779463366575375764d5646467470677a5431485430706b6966496c525954727245385a4c4d6a50314a7442326f46544a2f31545432506e2f30464a6d4363506755565a387355335971384735537270364753527a34566b74565366624468387a727667397550797a444674446e7170464a75344d746e4d3150324442367535484d765174547948616d76717458795a324a71795a3646763056316a4761497250696c3939374d6c71486e3852546e4e59456b6e76534e4d594c6c396e52552b657a525855564e7833706b61555058512b4c69345a65464a793968554d49632b4e6f7a6e787166396d773450636c3753506744564468705964584f4930324d3238355335426e4e464c364d33745573616447636673484c5a5439564e69314370644d764d3234436f614d78664c586e387675416638414c3455744f706b7265316d41756656493968656e6c3848694c676c356d54356b447338756b5155467041504a782f623134686737344352524d7577587a58366d694f5a566f774e466453686a7873374a78364a4d713461313145787333614262566f504d714f393674543667676f6a62524e306c697079517971797232634f473734584f462f50354451645270665a752b544d737950724f2f6e5755667a44416e78366b71346c667a512f576161454f704f6a346753726c6b65616b386f376f5a6c36386c3868786870594b4f667974693168544145354a584448797143376f724a6f3845456e512f6e584e48394255352b4a71586a45706d626d6a7a334f50497a38374f37725462357a72314b73507441426d75586f43316939426b6f6a5253385170434f58764f4a616d63456462776249725753386b647a6b485756454f69647459517a4b75696f762b7a4834754f61384b506b2b35385942497634732f357632314c69436c44414650394f4d4f66706553364548615a675a6c757679496148315754554e2b3935417a79423267544d37327a685535744e5043706e642f38585548347179563943637a6a4765416a4f6436585a6553314c537959312f4c694b762b506c6257725232666c30386465724c45786f346c6e32366f776f37384c67544e54545764335068556336625450575135324d54474f62694a4b2b686665504f4630714a33386f79715a70522b6f646574714f626f5372736c73596e6a71763258735a564d6b7963497a77493667354b624a6561734b764a4a766b67344557574257304c69573351304b74545030334a516a2b4b6177574f756d61524f686b797072362f75557171446766454a5852684438326839624235766659744e71336332713972507071716e666d6239363770397134685356484631616469566c39536e7679784d53426844664e31352b5a34667179654f5161754e6e614e58642f4e6e71584a76313538614f315a754b464e46756b307331315059366937333631502f414f43416d6f394a49482f56717a47374d794a5236432b4a703863384e7538747562413672314c65793233513149516b66725a725a6664343348774a474e5338584a39745465555754534d4633787a4c3636636b45764f5a7834437942794c7563596d3647665130714b4e4e6b7576524a336866597235637037754955786f517a7a624157652b674f7652536a7836734767435263324f6f42624850347536744f595864656658566d355854306f5776734436505a56396b5363577350386534484c364534555a38633573614178484b354e4a336748462b70565971706b4c716774783947562b626257764b6c646d6f727a562f546b374e4c306142722b7055382b786f4153544e796e72753249634b7762617773317647742b703867617541543663362b335557764f75334761544e436e7957324c676a4f7648636c596a3957687565485574324b665a396c34664e326139592b5930612f4d36584b7776516631553868576a6c794d33776a794b7977764b564a6f6f794d7057536d4f584c524246644547704333636374444b5965317a5631556853376e6145306456746f7a75765773394234722f533777587a6e314c31736e776e303978745079667972584f7a4e7a3451777132704c6e46726f31646a522b6e514a457953563158574258396e343077453376786879684a2b6e62464a7a62736a7031362f66326b765566304f77504439444f38766d3877332f41435347664c38326967774e716243384f383348506a3072504761744c4c6f36486b772f5a4b4f645a66437272767257562b7872766a5433436e7445576d2b6551562f34392f61782f49365452385948794145654d5465552b555a6e6a694c496f3136575546757a707a71477970457567766d51785562466b71556e726354716c726157615269304536326e7a592b45626f4d2f735965704f483558722b45656f58725668307753594a37475272436958486d58643961556f4d716e75315a484f3667574a39786a775855385934426f6c6b6f70414b4d703972704d5a72554a2f774272663048643648666d623636654537486b7542354a56344634744e342b506c6d526f63627a513374527659457a75676459436171767462434633534b72734f577943796345616e372b306966614c786653724d56375139504c36637a6d5253746a31563169724f472f2b507a677a4b71744b33647570435058793132506f316950532b4f6c394365794d72544d4667636f6b5348753442493978434b4b6b5a6373533361376e4145396f333531577337796d4b4c34725034735a4f2f4735334753665070636430325755416677517933657a366f536d314a457578732f33633872744f4d63766d5a5468784670616c50777751726d6548767473752f675577696d66747448797070392f4f43367546637748716a6f706a6e776e62456c6d68342b6c36746a587443793678446d54353942783879705572725755355a5832613948354d3736337664524d62616e55526b41767558425655465a5a474a6b54414761584c4e3752717a32504b5354577636455a32316c556c6e784a47345839667a356264763756464c716f416e454a6b637a62436e30632f63554178437a55307335364d3938647474692f6e305075793547653975662b6f7968715972763742502f41414d756336772f306f476d786d4853455655443252544b72536e4d3145615a30646c75735a505457575a506e4d3068756c7a47464b56704d344a2b2b4d506b587a36627268416670544d73696874624851493436492b614733723530657133516e3062584c7a4836442b7373594c707168456178722b48326f4d6b2f4c7a3551586543334d7848386e6c51556c425a525061566c6b334f316b7578557872633752506b776e4a52502f4739684e547954375072612f314e4a547248547153434e30736c465874753032424579672b5a3846794d333464624a596264377159376d592f567a35374e7a362f486439774d49674f413576594b6e54673872386278716b36452f6b4f567030756f7a4d4963756636664a374a4f636c4c52566e354d2b69356775334b546c30425a4e517954374c4567313379554f69482b674261306d5642715a574f5665425244342f64625679662f4145446c4174443366585a6d36535a55567a797a796a5939615a67426f555a6f54636651746f4741546e5061744c484f566c5751616e386a4c6b724b644f6a6d355944706164476a56703642746f634d6130556649384f6764636168344a39733738787a4e415a366f65507430504538392b7a33427a49387a667a7450794c514e712b554d7545707875354a632f65715579576a614859705973706d79474f6b722f726e3978576b304a56566c626c56476e4979676f4b7458616b564c53704c553533313770566f67377847615878436c49344f673177476a36706873664e4d745476694330496858347a5065466476664b4b4d3751742f62546572764f56466f5a7a58517956366a3834514336564f6252735563346e324c4d7455334c6d4e3833764147302f6975654d545a71506b69544f79467445734b71732b764d304635552b484951614b38646e42735938633369586f656376666d4e6a564c2b4c694243515462476e343875636f4b705a615332465a643853426d6456545a556b58654e5336476a664d6e7272517058724c7330563138535148584f367474494c2b4b4a694a36686e567536465772505042484b78325748576154623731614e794144466a76314d593549384f4d5a526666506a7974654478535a624538306e46324b414a3542754c796269506d6234396d497a315657744b4d32497a7169316c387a7332443430747842524d3255457a3653592b57736d636a744e67306f64535a776d78453959794a72706679726b6f7034786647785a644c3668303055554f5646466d365576484732695648782f4d50317736766a55714e657858534d6f47636a56414c314f75774a526c5a445344736a744b6c3645576c4179316d7273366b2b33526c5a7171716e64314239704a343543457a57503841704d65494b4c6a4158586861504966496770756d72356566374b5a62644f6843615851446b32565a583274624a5a726153374b485a386d7456485361763079576337425948362b43524c33437365514d5454356130542f66392b553231525656545a5257396a71736163644163372b7961466d784b6153657852764f6b2f34742f517a4c437042766244394e42474f585769723755307130304a706f5a50564d724b534f664b6948362b35615842795a6634764a75757137376e48496d77505a31314c4263344732544549727130506a7578312b54534473324d46344c337137693336724c6d3536646c5a647a33577068304a77354c39645058414649544162707843742b7a492b345531637733383868676f544e6f564f50444b625431585462586b757a35416d58506958546b3243552b6639736c2f4574764f2f44326e6a512f5a6d373456733435656f4d5373323571396c6d7a4e4e6f356c454e3163634f517933525a705148664b72493235354e326f32704a5252334f572f6e474f6f2b63316361444f547135586c2b4874657645414e5448456e5863736c434c5365543565397a3539424472466861764666536e694d2b656e34322b51467141795a4d31362f3243503036785365483351435a73536a68386b303930574e303448795a66462b4f305555774b6e736b3076596a663164525557536c3130634c344f6b5a786d342f6538756e785536416c576b6e507a2f414f4c6b7458765a643152366c6a39575231655176444e366d4574744575765648525137507137637a6c4171516c6c422b366e764a71696e2f71745a6d654d3941706934666348626c4c5934333639374e4b4d2f4857787a4d356b5761354674633555764c6a446d656c4d735a554161516f2b77426979787a4f546f70434a6d4c524d524f5a6b52436e78342f77434930504930536f6e6966597255796a475474656949662b51554e613544733866336e2b36692b6344372f723673516b47344a44353866395733526e623367524b576d334f504a5034616d3558463555596f566c366153545671377a35336e6f7a57644a4d50566e2b757662326959457555594b6349707456496965313544784f335858516a516262466c33617a737550636b7179634d624b6e5430614f6e7a4b706d4d6f2b5336476b307573366959564238427a67704941514a54507a394d34346337746b38644134304d496145655670786d73546f322b587a3878644b6e6d6173574b6c4e394b556d3579356a35517345753936414f7a5a2f77427558783353682b777253576457686c597944375a45396159364e5639624a636a7476477574683362757153353576594771306c7236794e6f30684a4d3749676c6e7a346f74636746312b696569744f543334787a354934366d362f30506f6e522f43386f324b464c4171672f66386c4e527776694a33617768766c4e4b66452f56426d78485779646671566b64587236506263352b66337944427a6f594c325876425a577a36313369767950597a34304a6d444e546567327868376b78586a582b4837417939766978354d434d2f7742326c4e52566a7a7262694f77716c513642637a3465325a4754497978574c4f533645395133764b4b5a32366675464e4537615142787a3543585252766d7a6439317a725a6e56426a7a4b30364b347a30485453537a762b4651353073334e5a6e466247686641783163686c5745672b2f374a75372f4145377558416b2f5048567a555a7465576a4c30697a4a39664a6c634255627a4a5a706f307654556266744d356f57484f6d6a3966747a70473032634d4a2f6a6c6d36754e396645507534374a48557a3358342f513931396c6b5a4471757a4248344b596375696168465443716f6d2b624e6c4b5677664a5078523174427a4765303741646f326d4a4f336f5642444f7050366c4e38577369754f5a30484b744d457531474947686b2b31474a7142694f2b794e4b5a70475570724363416743555132366574704c776f4c6552776f747a4c4e42394864624c374d483263646963553952787743626e627473545a544e52665737517434675a65304c4d43315567484e6e362b71564e5348704b7179476848774b79383757325679414f5a483748665373305071487770314c44706f536d63326d6b7742726e797a366136394a626758526f36415a543549704f555659374e485367744e7a676f6e5477353236565139705252776a724f784c59556742314a2f714f485a38676234532f49797a634673444c6931366a6a584c617044632b7861687146314e4c7347554955352f2b36483753763841696e34515863717930433739616d4e6e48726b4d325971594d434f46365a6c564a69373861686a755537516c66706c41464b742b2b4567783364533562613263645148656d6c4c5031503744616932363065454274493336384571644b53665744396153315a49776c656167314b42354a6136544771486d30756e53795237796f48564e3645636a6e63396a2b30336142674d732b6b35574279504a70552b5a39452b73733253716a30477a6579317363503131567930686f4f3979476b587457376e363641474c52626e2b6637665954534c67655038414b6d5a61353743736e6b37484a57764c67724837326b6c534d7455314b4b50596c72485175564953536f714c2f69634a357853664b3533544736524270696c756b524c566e67717532696531576c6b7435696f6d3172544855426565696f5171484b6f7564476b753868393677735735767876516c4a3744472b7a4d565231724d6f2b3748567166697a6e7a4a6a7030454f45545a714a6638587765326865625155724a554d4977645850395671306b6c4e6566792b34486552655874746f7271796f596f54354262724d646f647a3236483766514a78732f6e6b736f6d304d737461775339724270682f36307957415057726d644d52455269425632735a6173485664756f2b343370566c537658705669766c6a37524f6f45736e7530555a5969786479312b326d5a4e7366742b756e3451425179423249475a32544d74526d7352613358362b4b533245726f646e62756b314f79727936386971794f584f567153736f637273784f4f5a774b4f594a76384156654247724e62703670686c524f7379544f61682b557348464c6242385135555550576f75706b73594e4b385675644a38663670366167704f663841782f5152392b52566d562f7861374c62366b61656e335a2b493155486238502b746b2b5a4276796f4163657a51534d705566584f6d6a7561796a742f46696b61416a656e346c52783130746638615769754c4a5348563664734b4c367059645959633755774956726e6c467638675056566c383731546171667132334439597151627a2b4d36434e4d5a6f39476c6b536638644f443538524b3474362b6e533752494d31504c434637755a656b64646e774c3636475a333866565370777345466e425531624f737156714b626b374e35555366496c4361624b524d71526f3739754451385a6137422f77415576765537324f366666684d55393646562b582b4d302b51384350445a354a4c3542674d6c3869794c614579547379544e56573647466b7a2b5055484b6e793073582b52525169757454676d6d61555030334f534d39717a69636952656e666b575835525861626e69692f44626f543773507673354c3478586c684c50793955555a46786957564f5753576676376e76702b5975453533766e69596d4a784967506b636c336c6439346834374271445648486e42526c4932744163306f4f66583165637a5772705255546e555a596578633835336f306d506d3974502b58394b7a696367487365453251375a42624c7450743633524f595a736e525a6e51315a6d4a5a6e5561396c44584e582f414f4d315235633950374c374e4e7a442f59426f664e42563230577845783339776756486939666b7a473748636167386a51374a373235764e53446646754d645831747030564d394b323644476232684b794c746855306763494f42517838364639305678415a302b486554543058615658695769457762736d6a665a446c356551316a632b2b707153314a62744237575a6f52314c4e745972555032657a554f2b4a7271655552756a38552b766f4b35312f542f526b5669546869614756786651763147726a762f6e626a7a374a77507457323268564e4357786b7676537042524c5a48797969356976346e3537675a334c58466f655071317778624d3876452f347836334f536a5173384f552b5546696d724f5336537a33555a6933314b39394b5a6b79795454722b394142304249482b50504a7464516652324c4f364e5631454f396c3031644f562b6a4c736f6c3070394b655543374c5a5248796b497963667a41723266794a32546d6b497264364a545761584e426563316e4e4859304e4c517a5861596c68366d4c5a62426f364438797577712b4c5744474d597863464861514e33564e6452487a544d49692b617a787848654b6e3276414e72782b5a2b694f616a54777274544c55756776494938716d6f2b624a662b525a4f704e4c6f55305974444b4e4c35574a2b4c347671615131306d6f666e7a47794e545057723036716b436d765a6e616c355577626457714f686d445a4e2f4a614e31352f78474536356b38663161494a38366c4154796949515268394f745873556e616b384978776d42727836592f6c5435332b474f3335684d556568354a3661374f76583548355234376b456c74336a756a7161587364563472704b4a42716e70536d5349314e596444724d516a6437614753337a3274703131493439714236412f774159667935385039653843623147384838684857774e4836526c6b6a4f715479624e3275305170677a74504d565935486a362b6152615470756d797a3561553842675044346177347236633663346b626f316378765542756a5937524b4c52304f79616b757066566759343374682f7744496b7033456161575a662f6b4562744a65663368577a6d3656735a306e4e384b70702f366f416d5256627137506b453264354c6e786f31417262354238336c6d3278696d53636f757a636a78724d726837586f705864386647646d61447067707241775239785454664d567765626a5576386b7a2f41436a7a764e776b66486472523736484f72715337767953304b7831486e72585261676f6a52504f7a5648366a76384145336659454568664d357a46513430665472783346785948396a6e7872436877766e6f3876526f533745323159576832696a4e3150346668726e4273656b4c705236376a4b5466714a643874434a77724d7a5057636a527231392f4c4c30732f446e786257394f4e4c656c54366d39784f656244345a6d76624f624c396c6133352b707463373432726772717a524f642f756f61394b6152423767464c6744616d6e62566e646a67505048356c3576762b736e6b336c50714235594f667638416b766e7a6d33396c37486b3566306970744b36664d6d4c7876334a62524c704549674335754d70306a53516961776e412b754b78574d52324b686e34684c7a50386b3331366d71472f77442b5366463470735a74526f6c67734d2f6d566f54523754506d35437a2f414e55795641625a564b6c73732b2b6e355563436d53392b6b664d505052487a3731572f7432666b50682b76586f39354834396f5a7437365973734c76477537754e6a5a766270375a4d2b374c5a394b6c62325a3951723430652b2b614d2b796d585a586647566278585770377533516574542b326638416d4c2b516e35592b542b6f50716836723466674d4f506b772b574d38524c787652746e3338472b42362b3870707054395a4f50346943597339504e45756c53356b41712f523038736c66353374476e54546974612b76587947344f64365465696e6b614d483141334a765571723150324e6558483833312f7831387738673873386462354941653542374764422b786c46544f4e746e624e3264613638722f54396332476d796b32744578574d54587a47326e6e766a6a505076412f4d7654763150384153512f5562775455385073624a6e4d6c784e4e2f6c34312f587a376134344e7a4a57654f343536432f6a6b4f493657396d2b62715063356e66367a724f32596d7474746834336658543864764e50775530322b5130616d6836752f6856732b574842344635376956332f38416d50704e7561476a703573506a486d4b436f2f6b4d4630616478455368575865554447354a676a32664d486f31765856345279616e39525376724c426f6a446a6e446f704d4c62353839666b586a6443583446325a6a7a53365268324658335662476c6e3646576337524b77305042746b6441674a4950696442703036584d794d382b6262343135387158706f71306c7747683942616d5031726a6357357a755735653173613167417869614c7779674e33654e476e6f3941587a555964384b482b4f52575872376d59425a7164575254396d66795850685a484c6f664234393959394c51666e3062524d4977625254646c4353522b665366475746743265594553727631346b34396e57494748536c71567a494b7975555749434845793161584c4243503753376d584d2f353658324c39496a64496b6d31382f707837586d44326e7a3649476a732f38414877582f41425a78576e486670324c7a387363316b633655676d31507646307961477a2b314371366a42716c78726f71764b42492f48436539756852473963436e4a7a666f6661387364702b4e616d456447684c624f686d5377325a756245363754644b4a73634b6d7a5070615155562f5963446933786d4b426369714d35326e326773347057626c6a7442614e7561584f6c645a59776373686878576551565a4b787246344f746361787566524752706d44397136486b30766176493836474d78717a7669723566517547786a386a477a35595264504e5a516b65446a736a4c6a2f6141716270645073706d366c3877645366787a7a626649504350482f5544303945376a302f457379667a6677726279526e30396e5367676f6a796475612f7744686535797442466139446970576473356f4659332b534361784d356e6a664d544d576b574c73782b482b65654831354f55764e5235526c59766b714b7950344d445743494d396d50636273392b703275577a756f7a50514e62786334774d3156386944743548574d784f5a6a6c465043782f69465a5575386252354f7636727332484e4b544f64704a50596576725977386c78487a75386f682f68353937674c5449427875676f6d2b34792f342f5a6268616677774b6239574e726d745548694159664a76494e7a6935536a4369536a6a4e4c667874513875624b3865736f4550716c502f4143466276696d2f52336666476b3761542b453730726a6a346a6462386650534a586a2f4147566f4133323035477054715632546174656b772f4b7330706a7638644b4e622b755337446f42697774567045545978436d4757394a64484b397573343644707638416a376e5666796d4e6f4e7264627875354d4c78336f706856653658512f694f57527954722b6f554c38384961616f41304261504163686f4d58376e32593337556a7233345969444155764e2f6a3230364b694732724d58567a734961476d386a2b6f70326950526f6f4f7232336659576e6869724e4f775069537461614f58714c66797a3468453268594866724f63625875705a79596571644f576c79707051542f70684e636e334e2b513363483666744f684a6c395a77575a485774576638376b5371565363626c4e4e30366858375a466356386662724f714b567942737241785a2f6e395033644a6e2f414e58572f5a6b4d33334b6c7a70744e326772345a596176637a6f304e545839706a50393836564f4e6c53517358387767624866763750732b4e2f584b2b4f776969727030324246596b6148724a4e673069424c3551316e4854364b4b4f486f664736706c46465242776b43446c4238316e79306c2b79434e4d3056613756394d314839505151474f582f4a2f445a796e4e324154514b3579726e2f4147364e6a4b42506847777746774e3934306c77466f6e382f77433076694454337433654c536975495a4b4857364630395a315670547855326c535773507a712b52333741457a41596449422f6f476d3554564d75556176657345702b73536e4648444c796f39444a59685944375a57456c5831326f6439596b39425548466e2f6d332b67316e3958552f5770732b704e4d45723570343536796e4f7931767a707368734459706b58523071464d3031304c3931457869696b316971673074487436645a2b5135346561666b315836542b6f666a2f683175523576354836612b5476737857626e6a673361316e6a506d4976686767696e7a626274436b352b5557586441316d664f316c5372536b46537a706474464e305a2b4b423058384f35544d7a62346a5475753045526a2b6d56614d6e6b515236506379657944783233485335546e526e51797769436d5a59474c696e4f63446a3577384c397152734e546c4c7379635879655357676476784b7237476768533158563251575a37503578615750686f2b755a782f4b6567755a663646756134794571467a632f7176666a7647755872686853343746617347386e4652616d4f334e386d705856532f4f6c546f4c43677a5652563847657a70454d6c7276725041782b796d6e674a363678313657784f4f365241755a4f6e4e6e746f77717354566c6a7a42306e7a36556535414f5161436c5668307538594a3332493952597a726f4d6b746d5339746257484778515347443475662f41492f39437876455a63376a7265306b3574564d64747252746e7276346a51554f6f5455356136714770575838784e637864487a75595941637a506a2b4650327143565556556f5335623166614373354b70344e6473764a6f4a6b633043727564445a4e56324f786c3275746135796f61557a7243593252585573714d506f5275376471557936376d66384166763164435649672b6b4c6136316e317631436c3935752b476470556346665a316b77472f465a2f32557442314b4c4261384a5568485a4e4368304c6e553656425345447a50532b726c70545755634c762b6b6830362b417451475967326d63316643424375716175577962506a683155332b325a303331386b356271484d6a676d3938314e45387061784f636e693373524e7a765930794e51626a55332b67726975576e5630754e6c5a4b315a73562f4949546d616170356c7644546d764555316537354c6a5356453357755638496837556444363671546343546f64474c4d47747441545654366a5a614b30515469376a5a7964646f636847654d65787343664a7535387658512b35754f66384139752b50334239317669525a70794174565758324776585a524b376a5a36323144484978775264655531736163314e487562774b7539412f65446770503371414f6a6c45425a384f685070575a54785259484638314969362b644579394b5074796552384a36504c6d576463692f6a6e646d6377334946504264546247365a32774a71547337713961564d31552b663775746c3643333257314e4672752f5a736e763841696469786c484b546176736453397870396e76467632546455534b47767239444c2f58566a584846776e336a55726778357a58793666647039487a49636d6f4a574a34716469695a306a61667a6e4f4a695959305635507a674b48306e2b33664d7a465653325341486b2b6e6d306c7632394266776f716c4878746f6458327453626b6e5342645637476b45686b7a31367563756f31506e6f73742b317836476f526135664f5772685246485933703643785a7144385173345a74616b774f6b484277446d4a784f593767576d63755773757a7476585053664a767079445263776336766c69637132573773507851777463756668696c33316569416659463631475849417a51354a6b646e6b4d7339364a2b673842724d33567451765348526b693155304c4963314e7845356e656a7a2f73484d4847564f4835456d4450364233794d56626c37445a6d5166516e576d6a53654d447634526a646b2f7742356a75636e7562485a514241784471583073354f644a6e4f634a686e796536642b5655725170513432746e37336e4863304b777a5a4a316164684e306846565352712b4e724155626b557073396e316a2b4d414d422b68423036736f6e33574d554d37566e5a3758304d46315647624e33506430794a5a6b646e4b75696d506f483862694d6a4364547661433364414a7772745a50794a5845567a31497a595a31504152417033754d626a2b526775704c5234336a31694a7a344a43394d394a41397754464a654f36655a58326d664e75362f6941523177414b2f74302f755777566979676b533534726a2f59444d3339744b412f6c623372502b4167315869656b71625550504a72307a32324e7973653545515566615431306679436a735330314d4f704b61754e452f3841627a4746677a6c4d64487968676c7174526c584679393558544c5a62707738742b4e6948544c6e7a716c4d306532567a4f792b777059427050334e34366d6c4a66574469772f6f4a4644585357767059657850394d5a4c4c64524d7a586c51713734353042506f6172484f4837416f464c48396d4279584332616769714267743459484a623734612b465136686d6431564877706e5430663561326c4b57734f532b7177697a57696d5666432b774b6c67426b446d6e4f74776d4570526f466d4f42686a792b57494a793246794f546f47353553755845436d41787957576659716c6f53585254772b514e4c2f77422f446251426d7266354d496e43357248616a705679304a4874774f5a445954593666756449614632452b5778524b7034355a4f44715574373761514d506f742b5932524c56796d683777722b74634838616c36625579385a597971327872542f66334b65385a2f3841672f73644d536148653978676a4f69684a7242566d5754474b496f36516d74306e7831545366766f797a4f4e72522f57597878463846536634372f4c6e4864397845414e4579465167336b6e6e4c31754a7134683058743132495a333241552f477a6f2b766372514b63612b66756c732f56307253734357452f384151485735514a396e3032496e3037464a624c587a7271365a3536766a2b594249506b4e6e2f61355038514e39714855753737656e4d66774b434b746e7569497978704261336a7837794f2b6778546138624a77702b615a453746544d5554686e4a6a757a6761676639644b35476931594b6431456458656e353353536a504a7862447046305150716250505775357164427a5843586a2f634e69356d306358543848666c6e6f4f646e4f6732696f43774d7a2b4f375866544e775a6e4c7475554c555a4a7a7a3836567647726433532f326661577a69332b344f4143515a4a31546b6d446d696e6c6a365654666f4c6669674f7a466c6237535137364b524c3666527a65717a3265327250416e324c5039646d53732b7134372f454832656156747a69546f4a563931444a36657a79506c525177464f35786f4a736a554c444e4c6c7134346545704e635a742f52395a3851414d7a474c6232343532394b7069366d67724c463379496f396d706658516c3755384769667567546a42494d62376d3576514876452f4d3477783066747963356b353164504b6750622b55522f6356694c3771353333587735356c31756a5149734836784c6166754e33765570682b3446674431636a5957687632487731423966496c4b636e58726c2b524c3257614d46624c6257706438647861584779504d2b736e70536d646f68786152435055532f66564f625251304451784d344e6d396855364f6c70614b36316131492b506c4755694c687035534356455a696d652f384152386d536d634d61384a454e5952573235395362705a4d75714c637975735336444c47557253666f572f344e57785a46386943365266664643526d6353564f2f6f4b583376783338622b6e56742b4437645750786761646b59563948534b485430646b6256435556624f72664979724958512f7072752b5938333745717054396a714c6235784d65496f312b50732b422b52477a7a374a6c7a353458614651646e61712f7839617332623750636e5274796c6f666d73345378506f2f787038597079334d535135376b30615a33566e6231422f366669756c6a49304f39585071544f6851794a76384d43344b496443576359714e544e4d572f77416c6e2f4e4838356b59554b645a7a356b6c53514346654f2f313039666356785434357665535a3855714d3948554c54334f445579655739477646793943726d6a505157374b495a37503863756e71364f7534746b31464b512b34686951764d784857634239666e376d644f314d46765a43676e364b4e43683957586e4e2f6a6d315a6d5a4c5363577733745241364f635a7a7263716a687253696b4c426d64774935504c37416635486b3342586e70307035386c2b435574644461705a7233545272305538313870575a48704f6f6a7930355a59356d68684d2b4a356a3952314367652f73784d5447594248773765704f78553472766a6e736d314563645a71313154362b3366554b765975494e7a3677365444757a686e2b4d4541786a796c554875534455794c6b78462b51654f31326a3438352b7864624c6e4e6c5a342f32636270637162746b46306d6a397151516d6a48516c6c374f67766377584d742b5069566336722b673132417379644b3833584e3858634f6532695245746a6d61586a6b7076776336793374455a4d464d3458616e2b366b457354523243787a545353676972424a54503553384b7336665a7876677246546c58366545397a55654a6f646653475478457165707856335a7559336c45626b3846754f5a7453546d4b50674b484b774d6c636a39425646303655785a79773532674d2f536c7931766e7968646f5a35666279545832692f6847536b3957646d6b3275746f4277414f5532363474727a5a7a757530364e4239636a7669772b4a4734775a44506f63656f4b6a7a79586770313076586f4d64654832552b38765a3772784166706552483355366e756e505935465849364a317a5a5772525452486b432b327a4a4c4d7865564f4c75627062437830666d6a5454396e346156705453316651466375526c7139724636585646464d36484d7a396972783946374d366569334e4c764b3553444c4673732f32586d6c5a78672f4e737353536c49546657362b597a2f77444961736a595a4578384d656a526f6677632b666f5761533633424d643174564847564f35384f784544692b546a426f464c37316e38394d3176627742654c73797432724d323971536143324859776b555a7a374e4c7230797153794169646e316342596c475730306c384936584f70467166734d564f55515a5a4646614a6353396c503841423850586670567873553942497831535374586f4c676d32756f6c59727447623251616675436e2f414f696b2f6b50366c494d6d726f3149374e434c587532615a5154444c4162372b7959307348485a586b475a724e6775375a5464505155643775646451424b674d6d63366378544542577a473236327a7479346d356e6a2f41426d765471532f7a3139484a4462524c6e614530313856467a5257453655757a2b6a497863625a6c5577457569796d57566d49367a67574a6e654c6c4b6d5768455a655132426c434e394f6969712f4c3733515975585a793537615a37484353325a746a573839706971597a4434614b514b66745974453941344f4e633074685a63324f516844397161615757796f6c73306d335533774262554a667a6a716d6151673647704831766d7372374d36637750346243624b65783664742b66735974505048555372743463415554397a4f7a44715753546662514830346634326570456e7869366167763239377934667a6630483044612b65323457365847464535784e68797a2b347a5931644764312b676637712b7263743635357a57795a6f75366d4e3579665535784a507a2f4a392f754538386f6b35327158596a645048384e3349577735366e4631796675536145476e6e76346c4f74534f6f77574d34777a4145707041474a363733364245624e4b72507064426d5a4437426d6f68566442705a394372584332576c446563524838646a7536457446484f763677552f666479756d74663177646e2f48395055424654456e547469694747554b636e5176634c564c34434b6d6e4f7978306e485a72715a312f636a6541506d565144416a2b4a6a307557524930446b6c33746f5a39715a5635464a4f6a665152334a374e7363694b3374444f49792b694d76434f643744347862446f762b346c58746f4233515879524f5376342f3568583163307667444f304e68306339646554643733546e62744a2f574855367150704e4b6564737965663470734a7462666d7a314f344f6f563138633773637a48337667305451534b5a4b5039312b6c527133737a307575365645766276343963707a49585343663034464970644f7857594f394b7446625034715056354e706a556d304c3770636d36624e6f6e2b65752f546e6954326d4746706434785642454169576148312b66357a75726e76357368465838726c3470536b363369394770737a57556b7a595248512f704a3161306644593264325578615a506562654d375051345444323873476873384c573870456a4f375a334b6a3655314f63506338576671554b35352b564f5051376f5078692f317653342f6655425464614b306746466867756c724554564442664c75637735644e3646514e4475655364546f4f53586a6b624c6a436d53762b52594669562f5a71537371434a7854527a6935536959485036416e586e79726454722f64354d47707171672b724a70444c416f644c564b36396a6b36424958386a55772f7450785053746c48364c344a444370375a357579464534756e3155733466632f384154376b3279614f754152565168516c6d2f6f536150774d61476871484f794f566f743971672b79507a66652b5a514c674a75465745506b31543230524b7a32366872765a75366739626c68617650304658307230506958796e37564a3936723461785a2f39535a714a537768544e4467523457666653354e6c5a30333836363057574b78335156557848484c5459464443366978672b323167746b644d6c39626666556161516d5374444864576841557457344853614a614a555074617363785655796164616a6b61364c6f6137766d6b665977685531787058796c79725a474a444e68655056352b663256306e64484a7679687154515a56614d2f5a725076507730797a2f5650446f566e5873567a6c4836557a71526a44367a7143616b41646d7842336c384d3655387a36687a79674e3943776f79704c744232496c647032734b6e3275737a39476f464663667a636364695853696e354667587965366446504e482f7578755671553164626f5a486564757a6e67356c544d75446b78454f7363554f432b77663337484f6a413644616175644b5a7833436259324a6c34554e2b5a4442487057563638363943725355614f6d79686567695674616b796b5251386f5872664633677a704a4a6847672f38413466746748315a656f64646134624368712f5a796f75535831465064504e47756e6b71584a4d6364494d783757444f786c513043357766396164717a2f6f48726b4b6e474b2b2f396b64396364445339304e574f716c476b4e30773232414877725a376142447645644a413070476e322f70744465422b4f7737483143756874476463702b71536870466c5679644a6d707959766567304d6f4870546b30354235374665396650734f506f7145456e7a79684d31356f64414c652f63354e49637642567a4d706239714876784569555245744b56664531416b4b57333864325271666b6b7042667573533277545a38306946303032544c6b61773959556c4f6447686f3871564c5954665a37732f504c6f494a71716673726d615836587a32675635493672695751783532552b552f74496b704761654432504756676e39524e5536394a504b7171433755744350654f61494a365036583741534869352f7239542f494d5446633546777a55495a6c6c397533516e644f524a6d536f557945546d6935676b6f476743546f50712b2f7342616270794b6d504d544a7a515452643272676f5a78735264616c71684b5a69514e7a507645704a72715731335747526961557547766f4c5378307037506237645763486b6a356638557468695a4c2f41434130506d724e4d356c48315537314564717a543762776f49665a333745594e594a6f684f6f683778695a627359673753726e426b65746446593937596e7243595350726a54774f5566737a704d48304e456659414f5468544a57794d66715a434b4c475342476254517732475249766b51594349707a7a736a4658743477357858594274585152666245422b6a4346526f6b634d382f557a734e66614f716d4167584847704d424d2b697a734d35314c722f4147396e5072385454372b4f703441385541636b702b733665362f735865556e443256387958414543304a5431306452315844514d637055454b6d55644d353653454745414e66704138314a5a315661456e3868507a3649734655304c324d566e72586a397a356b5654747a583843706d6778667a382b79536e74735354716a63457738426242796b3254754b786b7656716f6b716e6d5250523953486b58567131632b75716c6265716e2b7556776850376d42476d5a6257712b59436d634756595464716c79554c3773775677615355726c614956576470684c746e644261526e375051615264316448425677665a37444967443369413145306336335648666e745448794c595a4e4b6d515738353976536f435a2f41757036785a304f4c724439782f7744574e49743635776439674d485a7445365973324b6873794f446670456d316e617a71325a426e37584c566d757a31496f64786c6a464750434a66364175744c324f6f562f514b577350697376724a4a435a61442b6e634b32746b56794f424c5630314b374c7874773030523658663266784572756576354775555956674454546f4f312f7a7a3835704451535a563832533458776b4648586e49357a714335506e6e4f6d662f5a4e31546a396b507a716336707847444b6a52376648377155304c724f32566f307168344c4e436a6b7a7371642b565135797570715264314c6e6e4d4c66623959476d7054577a6d5144626362536248786c3255564279587a61484854686c5a2b6631616579764b6d37354e425a64593771366757553656633579696c68675832446e4d42306d354a6e35516d3368554b502b584b722b502f5158696d625473514636594770497443684b794c37597446505a707756514b6555732b7573422f412f386c42417850654757314857365777354b33324d6d324c614a6e564c6b6e71374e555252726f5838432b6d465062484150477a5070355936655157756f34797076747a355a535a50466d5436666b537a6b456d546870444c787a36637430342f49797864494b617a716b4159437753636c5375416a5736617973713979785135555448364e5576366e7a323636326f78527a474f35476c4c355932746954386e7763656e33774f6478526e2f7553466137466e336f4b4d2b6b4e7975484b67586e334165645153366761684d7a46324e713158535a36667345757458544a7170456748616b68383141503072485730685058544a5247764e4d4a32616d6638613969304b4c617039654b7468364e677475316f51697577654c5a52554b7669704648335a716e64534b334f43314f7a41654e486c4e6966765561485a517a434e4d486535363764587277712b594e416b6c38487a5579792f44316e416f556d634b715555634f6771453243734470344d4d67396b3834763841354c513371364b6d61456e5a54716f5470576f59504a32757a5377355a326d45697664396e5357373575753939464f66377a3134444f66505667356136484c794a5a4a3536632f6e773266595651554e7568714471325679342f377951417149544c32392f774469786838786e797a6e503665383867327a57616c397677553379366245576a64467168545666447157424e446f54357134735976734d392b686f5a3454733577682b4c2f4b554f4543534e2b7a395a47634e64673868326e652b6853743334575a58386e37416870696b39744b37345a303961786e527364306156674d31302b72396c67724f78314a50326672495936655845716b4b726f6e52354d2f64576e58612b75615777494468304a645871754e5765727352675031796254375a6e465a594566747049364446377a79426e50307073317030664e5253796e4c6e73494b5152752f517231786438356154416f2b336e314e6c496c674359515359455841476a32423058752f4d536947375070633773727a376e6142315349716c30704431632f555946587a50306b2f7962314f3146554a5778443174554538446b304f2b3048576d6465667a2b3469793943373734755935647439476666787933716b5769616235316b4e484e5369366a6d64473557684f3051425458636e396e737044356b735a734a47354d344a6e75444844527030536c476653547a78384e46334c61364c417637666d45744f6855463073376a4a37673559463779536230796e664e7a68776a78654953526831695330552f542b726b4535784e6837414361362b52547154704d586376374642556670445538485654306b71426a765a4f36633775384e747a457a5a77436d644c474e5262334f6a7a7363396c576b2f4e7861636d6a7363536f796f6b75536d6466485372594d672b784d7166656449456f725674307250474a45623363535662704e43434a50786b356244355737706c666b5430315a6a736f4e44566870504c6e5650704a37796341536b4847764f56785441414f6167424178366c32766f4630386338742b725a6e705a6d75737168547058353455724f5a33374d2f6b39704970596d514c47314a4d666b6e44715938395475437776344a5a384b6e6c6e325243644d5339524d64444b776b482b4656342f7133506d34476b74746b6a4259735743776e30386a4230646638414574376f4978703930744254645a383130724939474e6b2b5a48625172512b6b385a626a4c4e5769635a366b71582f49564c5633737767633030394355706a49364934646e7944616e48304a736c5973305a33576b6a6d694d32766e326154346f6d54616c536579767a702b444f744f665a736e372b73656c72334b6a66384165544f3661646d4d343777447a645a747a4d6e506e624a5970643258525a536c642b705244573647635555533577554d6c32717530556152755a6334682b7a6561617a4a364552386b47364b38327a783875655152794952326d4b34367443392b355932573571587173524e713550784d5478663078396854504f7739356a54506a70394c3378336375424535316157466c69334c6d2b76505055464d64317379702b2f7839325136684a706d3770434c72454d637768464c666d645137343069667a41624a4569385a52742b5951565a666a62787875397a757865563674326f314b636154723674463071616b6f564f586d795a64614f74665567636b464e4e4c48444b5a41336c6254574f6f75465069655467654c55655059454b707551677073693055782f796679726e73557251386a437971744f357046502f45755377322f73797350725a364e475032757a7a6d3054626f45384e313244727638416a564a624d6d6e7837517957392f6c4d74484541726371566e4e6c315a7a48506e364e6c696d764e694678324f367761324773775861334e6a6278774539705a396b697270656e51666c4b724f364f5545626e3866644c79464f685649326f6d506c7a574c6f786150672b5276654f6346466637496545545437776e63766e6179726d356f4936633568556a4a6d7a6531784b666c543643796d547175476f4b4a33575a34536b376a66662f4143527a646b6442336f426f4964703437735a68787949305465576271493056665a315837646d522f7742785950794a3557424e38337a43556f674c7a4a624163646e776a2b794373576965677a32527a6c62636851357149716b72706e584375656575626a6c6871466f72646e4575656770616f615747424c556f6a4c4b366b46664d74517166423950304832485837334c30477a2b796c31486138716b57335345727439696b77396d78637a527a334b32733164552f7a7a6b6751346f512f774130484f6b4f75734970426e2f794b707039474c2b475462796c326b6a7359343035364f5579556673556475454755554d7663544237664f43674d462f4774787150324168626b636c6e566d513648322b4b726f7531663463636c493869424a66626d61796c5061593750727357457a6d6a386a706e6c5a57342f6854393041574d456d5375527664767756746f4f52434c316779772b5a4f6c6e4b30346a757a423047697867335a7458615746522f69483345754367327a634d44474b6c53687963696f534674317479666968694257532f5279746c6c47395168694b4555466c725974672f4756532f6c5a464e53745843424a67456d643237413171313964565655624164486d397a626f2b32615739456b2b6141446f5433653335534c336d4e4c685a4b366d75446f6634664536764330655154386953754348554e59366f66523061395464666e58514943484f685754565a5434384b576e6d6239686c6a506d6b73614a7a424d716d6b76697a6e7564594339614e6a7552364e634f68797735644d673047664c426b5130366c705879637a476439685a37516f7a39796f5873664f31505843514f4e726c69304d7037537a4a355a737a67485a4c58704f7a76344a6d784f653570672b4d34574d64776d6e71624838675230313930564f54546c786c797234592f6959324f376d7747584c7264467873306544397a32553650467a515870677a5a7036744255302b616a566c36364c355859724b763841455575614545376b386f57745a555430386763485a6d544f366d7a43532f51796a5a61716d5a61637a4a35545a72555548455064595146667547356e627257704f644830316748484f393836514c465774552b666e5073314c4f34355336456d6478374a703634737957505465493130706c6c4665666d706e426a4f386b516b744a31424c442f4656414273766a7a317469793642717a756e586e587a61395a7a5562534a3261443746564464567a35766378597a4c6f377a6b2f75424837584d552b6531775135315832373333326471484179706d4c3047524b6a6a51306d364c6451584c636a574e45646936725a5776366244714e494c5073346e4b382f364378305559592b374d6e3756334e7a7333496e746d7530434f786864634f7870585a693947586e626b392f6c4e61617a764f4b47663841375879704c32414471382f6c3977334f575074627054376e352f4d564e597a5a577531455155554a6e46564f6c76565534392f64366758584f6d47656c3765664736517a6a4e6c4a6e79775564342f525859383665644f57756a3532706d3148537458654d726b39514936466b3350354a2b664f4d785063546638417351496b73555350664f466439664559397138656b30342f485472696f31632b672b664d695a75552f473368707933733238724949486f716c376d334d72593150444f733667706d576c446e36494f66792b34686e6d666c75367a506e38656a72317732664a58612b522f4a306b437559506a7636306831504d6e3659614877464350334242424f4f763841644d5a613651716e34796142455636784855444d5478396d45354f4e6a57447247654d7a4a356f2b52587763357630333973696e3131327654315774733061305a457a673537556c536d796c77475450645a4d546d4d7a7779434e574a566c6131444870732f6a7570725a72614b4a2b525a63624c4c714974552b6d667963714956706d304663397a6663474a384e424f52504c53456a4e4f4b326a6d5049457541314d7a454a35324b57534b7171447561756e6458646e49644f644468756e793356446d2b33374b776d39357953685730674461666a38775651386f7a385372735463765038412b765a7375495852364f48336e4437326c724a3978632b67786334495a59705063476b2f2b35536348316f69596d4d774a6670616c304b503546487a35394f6a696e563156684b6b6e6839303270466e79337a4f2b433133764b706e414b6b784e7055673137446d6e4176366a5a587744656253687a65517553666b4f5a637071517571716d532b6c3632334670565453596b6e776648686f30475a354d4c355758434637452b786e5a674b53774d61307479757168743251545a705436486b56746473742b54526f466c544c34314665473858646c7a547936632f6e654c4561617a39783961714f46514e724732656149433268705a634638547536577257722b526a726472466957706d73735a71444a46644f356c514f4a6c4775455a6d59716448576e4e464b2f764f4666516a6d6e38736663524574627965444b615769304e755775756264325a4a6f72364a4d697832725a5a7064592f4d754d775a326a506e736366786b4c685342396f596d78483957345a387755745658644c6d465145384b38793437503545486c5a527941374b436f32503361505a39416c59395777426158507365357443476d744b3030442f4146494849747566444d4b74576f2b6a79524436663431587a5038416974324a46386c545450465248506f66526a593278524f6e6d644d4442575831436f6e41777256544154614456446a5a75666e637278336e6e61556d6a6d7774313331365038736e786a78646e4d2b662b53303073516b327548694b655766574631764b5668434a636b35616979623952457464624c38724e2b50795236574d54354f784f5a6e6a4a64546769512f4c6b4a684d584f5439647934326961564e556368412b666c363056624b7263657a56547a796a6c454b39434b3836374a7270484b32464d386e6459336b6b363770765a584f2b645158635334777a6743623679676c75556e335344342b3358564c4c52546e35714b704e7a7450476a58417543535641536c32714f7a69666b462f423751412f5a4b3266346d6d41636a683276494d4b76487539652b2f4e713058466e4a31565364584846504c4855464b38356c544c4a644252787564447830394a526e79683833762b494f3247704b354832334531786a496d7a424272565a665535307a55697159623361454f6d7a4c58735057706c5761784931422b7135416e544d437147494e4d54546e6a4d654d416364754d314c48635234355448724f746b307339452b6c47656857687247567839397965716c47747a4d6c4437467a735663796c7437484f506f6454496a6a37413477644c6d45334a79477936764b5676356e5248446e725456506a4458325369466965397a3536425437704870374f353079582b3370676b47332f6a61646a536e52424d71484f6d6d75454d634f56636d397756354f722b32534d6c2b4b567a616c4c42784a686d4b5436333867734b666b6b475147326a446d5657325a466568704c33495968423258707935654a73736d747a662f41434c5a744c554a4954306c51763239715158436f414d70756b784832456d3877692b6c336335444473626b2b6e5051322f5063715946654f6534703550483556315835364230484a7831783154334e58396850747a615449374f545670506f6841724432352b55685355392f63623775766b7278666f5a43444f3271712f4e74305a5649476a4e416330734d6a71506f426d6f536b706d7565625068424e65566d763856527265552f616f3032554d785033656e43705150493869335955664552705650383359614c415a5a316366752b355a314253615a4432646e45356a674b3738303868385a746e3851394e5048646c62664a7650646e42385a78676570766a326a37454d646f62486b6c475a6c77366447436c5758435178682b68442b4f6d3751625173536e3437316965732f442b67326f386a6f794a65596d4a464a624446783945574d6632744455655758446c662b4b6f6a6f7a47566a5371667371563063592f724a4b4668525956482f5963674b6452413932576d33586967384e572b36484e6a796672326470536d5043386b36656c6e42544767324d2f6e686e57354f6e79674f43537634326d2b65685358745a532b596a4d79686f79485a506b44746f58616261575956756833517a52716c784d76445a4c646c33756f4949352b667836653872574856527a78364c677136306e416f497a396e67454349507235355765504d48506f474c794156544c4a4473576f2b787159484d50445a484c4f786f4d582b364a2f486f2f726966776b3441495353626b5136537a794e6e535271797a54396e307061744450643344303551646f6f70376f57384748343573316e44574e514b4741716459364539616241353466334f70664c636a384e505654557450785056737a38736354583035394c527a31352f48305a35374e4f664d6b517a6e54732b77556a68374f4430333033684d624454444b5732686a336c66456159662f41436433776a303532504576794963366a782b5831694c5138547a5a35395630673273384e354e4c6d372f6336636175396e68726f324849613865684774494c5334522b4f426e642f624a744d312f44493665663361533948764866777239544432394c5052735a654b4778346533787279647564355172796a46386d7a5034324a75586e75616f632b6c6d54536e744b765a533768307a484b566b2f4c5377396e695a316178417072306f2f756c6668587366694e3663656f766c2f6e6e6b2b66366e59486843382f7a6e302b796f47326269664b636d6166506f763866716c7a5235436d6e5778593742724c7379457a4d6d59357a4f7a6d5257766f6173616c6f69764b4f4166356966335766582f77444d6a436a3845386b374a3454347434317254334b697a66494754374e46552f504969445173746a3044596e59566b3643516541746956594d33486e4f56426d30757654396d7070346d4f61316830442f736f666a5671743866387539594e4a4f7a417a7a3357785938316839727257453743306d4b38697630645764366453566d6843784c507344384a7378506d39376e484b30636661727a6d6c652b6f394766696e683662414e6a63666e3733787a455653527a304978585a70335232787957704a7953664b50782b326466386b3044576d756b654d5576324478436668677432614e436656684c4f7a73366d6c7a723539656e64324f626c344d304a5a72717171425334563632542b3366496377722f6a5a434d4f74636b2b41555a346a6b69634767366f5a434f4e6b4c30775a386b4e41514f6d7a644f624e66544a444d56557459337738656f35484366303070414163456747447656385a435a632b784e637a4e53364c536349757a7062726e70724632504b6d793661576a736256655230562f4f31644d64686c2f69645230636a4d77786b7770704f5371676e584e482f4531452b6c2f57563563746d6534626c5a355a76384147693575504e56354541564261672f666c685154516b702f565038415148387645354345304d4c4e4f57795173414964626d624b4d6274585038617a654e5235526d364e6747745956446f4f714a596372714b4e7a6f2f7333704d65423966346f613661424b77356e5153743865784c64424d6d5a416d4c4b4f7565614961577a38373853323565616e702f5033715572416d7173764e725a514f5a756671346c54714631614465574648483143755851303932654e75432b5665476e4c6e45595364644c57446a4b72355273433531446c794c353131387846396e4c537038362b566332306f70767a4b6d55665679626a6d6a2f696442442f74794d36474f3665373630376a30496a39777a54425a3943572b63656758504a71637232584c426d4d476a71555a736464776647636b6e5a4d4e6c4c4f435461667354352b6b526c5536497155756a5548544652547159416a516e726d6f463436584c7a664c396c3771563048766f3038424849383375645a56724a576c4e4b397170655a4c796d4b626f566d38357a4e704a6f434a4d547274305934705a5956306f32737465686a68796d576271467371423138564c71526e6e385a4377556f3645334142745a7a75596331665455415846347568303067525275794c33687036345068725357467737354b68625a7763646444426c7a75564d30716538392f4a2b55586f355438783853372b7133374d694e37313074486a2b5874562b4c616d49755866386161317931365349694f757a4c5332694f306b7456526f4a6375555a7565355a367333464c6f347758716c4f596d4d375937684e655643396651786f5478317a6f696f4878362b7859754f32644136454c6f702b73522f4f54686f614648464c692f317965383357465033695a3748647a59455a303854795758657a65765037375a6f5a632f55667052614e586a4a414c6d61724d325857325538376d7939586f2f41686a684c706e6d77394434424d30555275726744384c365766504a374e72453064744b3856547366495563614736485530462b6d66527a2b3878365062526c3030632b526d66787a6a4d55737046426373473755347531703546535a714b6b2b2f583049453763613330724758486a37426d38476a51726e306d4d6f773435716c7a2f436b2b7a6339692f726e66542f4145426961554f5073304556573473795a33364f677835387366486d45575871313444314531554f547a356c315449344666666b6d7a37505a7741706d6b414857506b775a2f4c63335066726a63367759394d516c7763796d776336566e5670687a4f2f4378624b5974474f69712b6a7261506669556363354c4170494b33374d685765424770636e71636b312f7243625165726130334c6d4c6b3748794b2b5075744b4c4936733736367a35305a774d6a674752497a66435a4f4659386773324b58786e4e50374f666a79786265697966566e6e784a4a4c726f754f725a51554b3555386b59497a5434765a33634f543541436d5947685a51436c75466f38686a396c626530575a6e4d6572466e794b6f497a56504f3941712f6a5a613375544a354530467346667a56474153746f594b4c4747636e614850442b70377562414c454f544e472b6d6e79454b49344e5770596256467965563574746370556471316563532f37314849434663354f56773655302f723475424739656c496b4363507135726358592f65706d5364314f6a3147704778504770626b364578766c74576e75704a506c756358735334475054717a5670675838797a6d7a6d2f546241536156654c6d69715a6a37737146536d4c307163444b4a6b77366f737056507a6c536c496f48364b5a615a68374d564361414c6e542f58765a4a45633175627543425768594d2b6a4c7a51705a744459796e51422b344638443638394c717453764f6a536966556f39796167576c4b7672697330734146302f4d66395437767a424b314653326151646866643756704673785378342f63756d6566496e7931394c507730735a5a514c3459774d784d5a684f47676970435039796141563436765671733147746a62713542386832636e536579684b2b754f6c3352496b7a35632f63394a70487075486830304d2b6e326d5a4c453950744f64747631426e4c7935637971794f7575797746706b76325a6d4650315064476752306e586653656d677331614b7857646f7a667357707041434b615a66545051664e7054744451574d6b303165334234332f365a505a6f6155464f31614d5539694a576437516f767345532f7742386f3531776d3650324d37417a36774c7a302b3851756d484667306b7550503038324361485a727a36516c3675347a347557505775736f4c32464b74354d306a5931764539576d5a72484b5a386450795735747635674f6f4a754a715a737967617244484e644c446c58457a46496435333831516d70553530754850594b644c466f4933542f716364676b7158436c33302b7a7774486c496a4c41386838704a316f6e6b2b4a73416e4a7170347658794e7830715a55697252685330516e756a546d72587a396f4837466b7a706763637a526e2b74484448346f2f6d474b3455795a744f664730344c4f6f54687575424f493175616a7554645034337266575a6e2f5a4b7255336846787255487863542b2b66444f6157452b775055594b59776e367673746d70525a583350647853546653574f7957567852365256547a4f7856564a4a6e426170596f2b67484e45666e4a7739416d72694a39466b56664b6345636471745232562f5058777a30533355324d54703672716376714b49544c4e544b5551475a76483350417a4a6e78306761367172556f636e557a4e47706a3969375778714a7649334d322b355046466d7833773231722b65556d726c584d6f3142387450615a71566770526a4c304d66554830375a56346648546e792f77446b512b4365515865532b506176386b55317a3430725a71644750536b6e50745777637674647a355155487a70366f4e4876476d3156496e6d783357346774506a596e494a4f444a5242334634453669316379625247466d696d646b48304637384e49445a396356386158466657724e526d544f556657642f567736326b377533696a426a34664b344b6f334e6c36754d7247614e4c61574f6c6d6252537a3456634c572b3552516c732b674534617254616444545258546e793174363965763543694b7246484f6870665071763548526c576672786e5158445964454d57384474316433577875637763666f4335615336557952634d374f39734c514a6c714a596f594f647259536965785348316f702f674c4b694757764d7a644d716a2b764c566e7a736177584763624532414362585568574839563256384147706e6e325875796b3136505a4f5a5066343753664575774331413770506156513572756d78555a54352f77424e6c544f46316f49624f6867636171394f497a5943413139654b50486c43727265426c4b4e4e4b76744773666673304c3779713336644349766878376c7963515a32536a792b696341543753764673723443575966632f68642b483556617a4657737a6a6f6b6375547833344e6d47786445464f6d743750704e637477314e2f546944747a56635770514373462b7a496658582f4e4956376556366350416d744a2b657a55687152663137444a6e614254614277727956343556546b303070586d6d6277704e5a4e6c73487546535a794f592b787836337767325641716f51566242712f6e644c536b5472794e565259553747644370784d6653304a67664744564738733954754276374257363266425073326a52634862567136392f31426e436e2b616a626e38517751716a4c36365767445a766542306a39637a396a50316d47486b6d7a6d78477663735234314a397a59354775726337334e342b6262534e6d64315770434c6c4a7342435a324c5852336763533458415267667a54576a64504c456941542b564f344e4e71626f2f6a714a64544a626378553835507a74765571342b43522b6c487a4e53534d334865354c47476c53307a5464515a6b687036624b2b41466438744a57745371694d4a70632f344a4f307172654b666f62556a7453756c477546526f6f30725a58576b6f7959424e4b6b307831422b3345626279375168424d6b6366593253756265616e506c4b37506f6141504c5635354174305532685734692f6a2b4d736b7136785079795551515172537079554d2b56756a64744562386b6e472b564f68566a49314e4646736c7a734a6b3870774f34792b7757364563326e6d7a4e2b626d7875554f734a6e585457574159465162536d2b4777465a3464586c72714b66697563566e4e6241725658532b4b61384c46634c7078726438792f774353756c704f6b2f6e2b3938334f41646450325941424e47726e346477305251497074716f4b394e654f642b5751523041766d577035362b6637786e737a364745796a3246503143536e73597846457136514e5a4f684675374e3545435a2f697866676f5a4f696e5674546e78534a33596a4b2b4368374b4d3979394a6747416e2b72374b55745534714455683852455230425a7550756b62636a446c3269675956795330514266766c4f6c333132767a7238334d3634495775376974534336484271386d7355667730384d314a78484765344f504a76436433586c6c6d354f46713448495833764c35735856584976507a314d684b4a3332574f594d6478504b74674551306d7071542f61556e2f56596d4b7845544f4a6752666438635a4b45574e56347a354a474d4970435556354d464b62644b654c4a646e644b554e497a58377269483744506c42587930673066394e633655584555307366546e5451374738633247753073383664624b504c566f4a48574e5130616c4d3674736b6e526b6d6c6d59594c736454797345676157686566744a387779746c335930486b4a312b4e38676c4e756c6e63586c50306a517a2f74554c69564452554a74772f354c6379653866326479563839316c4c756877324a4349537973766738677863324c62672b722f4a31783448797a796d6a79627431454f624872357a6853465358734a5976423373436d75396f54544e6d5036346843756544655834653146353167594c6e5a39445539395150463851596f374a4a75582f4a6765554d6a63346b59704b5a5670475561716170587770716d6b5839394b512f703878733534353664684133753278693643334634355a4e4b637a506357356e544c33427750764a7958556663577967616c533643307436756b4d36784358665a6453624f654f63677654686e565362615a3853757865633357714857684275643961714c4c6e32663547647a506e314a3351725374632f544d756657425a2f4745773870424c507a504868766f547953524f6839682f4d2f526a7a50746f546e427462324a44632f4e30376d7a356372594e7a4c306c65332f64516746715878334b4f41495348783378374451634137754164476e6e614e7955744c4d47786450766f75596b58335a32653177754b665253315a71623766724f53594b5531766571726264384961322b486932716e546434396c756b7135626b77545a39756f7a73576357614a6e625250726247614c4e54354e50504970317738614d356a436b334d6f48334e396645564c64364a2b476a62586852654e3359374c463637374975755139736b434f32506d3759704d4e4574307631386a4c466e553970716e664e4e4b54462b77456e5952686e343031614e65512f4f386b38666375584478616f703953757a6e4a5258505934352f744c2f63695530787553415a62425534314f4439556643435563622f414d3333464b65562b6c756e6c2b53304d71795435442f4352346662426e7131382f5249537835396b61477063766d6248504467304a4b746e506a4f614e3148564370504848614c544559455954344f6c57787463644e37384e646d6a54504e6f52547a594d7a47516b3372303856726579704d3871624b31734d356333756469496346594c58463732376c3269452b532b6b655642713646586a55306970516c326d47647474626a344b3879714854443631635952596275706a6c5a58386742506f5a584532455a6a372f414b6b3735694f4d5a47675072462b4b5761314c7375472b506b6c4a6256436144314d37746e4572706e625732794c566d76737a58616a4d2f4654635079666f476e536d3458312f46396a6575704d386573534f647150544431702f45337a4a337164364f4b36792b37636271362f6a4f6b72594c78377964764f56624770636b6d52516530732f4a5a6354366c4c71636f6b39707351495541706532367570474c645232332f463338382f455055504154676276562b4a364c366450563867796453525763394c746477697065646a46636c743076787066584d5379736d616e6362536d6d46385945484e716155316d5a676259613367324270486f2b55656e46644635614962636d6e33526f6c4c4e6c76784b3556786467713743314c4c654c57626e70506757636a78356d2f4a6e7a494e3165557a5053336341614d543150784762302f6a336a3561624f7532386c6b4764416a4978736f712f494c4b72317531563042796f61427938586b594e30705a325333786c39626a70763841475a7457657353416e6e6e35432b69483478346666554c31343951385459386b55656a6b2b46656c5068373465376e6b4c52313648616d7850695a2b6679767865566a4e71642f324448356c4a4279794e414e676d564d6164727a6a54722f33447a452b72506a4871542b522f72483578367a2b54337859486b337159473535564a6d3035683937675477336245586a6e696c532f494c68646f527a5a4d624541704d6776464e346935334b6166593775724e615672574937496b50695034732b617a636a715855644579563336476c45663063736733656656376c7242764b6b5756516c70543538783652782f48385668396e366c6a6a636d4c3369635a3459457833507836307645593947356b67794b7a2f4142656f656338656e56724b576a4e31374c636555744631536b616c465538755649786e7964762b764838692b4f6d614e3830626f744d3863794e6366496d2b512b4b494877337a4761505338453334336f7a644c536671686b5255352f615a6646334b70433430704a4e683055786e386a61537239774e72366e6b6a56336a6a78696559646f503756573535522b4f5070702b646e6e336e3256742b583566696e67766832426a642b486438675435746c2b61655158535a4f58574659762f414775394c6b5a6e4763465357696c6c476b5078676b423576614969397447496e674f2b666f3936302b41656e2f706a3439746574372f52723856732f77416f6366307348774c794c4662354e464445367a4b7a504937356b35394d7249516e6c5944766574527a6736727048503841434854354c55337a795a314947362f70394a36592b763841365955354f6c362b5a586b38456c476470654765646545626f2b462b5667425a3744375463674e617a75354b786c546e726558764941324b466767752f4b48395a5733557477714f4f583979483850636d754547654c656f57723350386c31552b4f2b5451655a7161304e5436485856356e4c7266734e48376b6d684c566f4632733371366d77375067355a4e5361656e52314d64616a7a392b632b6c5872662b4f757a6a594f7a34377065532b6a327a354a667154466779626432373666573664477066624c6b5a2b55342b66784b507458476836567a5341637a752b774b507031483178616c346a48614135766f6f2f517a5a627163793132636d6d633862573867366f48554135586c476263314f7456637073704a314934352b4c55417563535567777a6758535039544e34725058694b333276547647386573305a46636d677a322f782f385a71312b50384131497158393636677335655233423669567a59664d73394661487931556e7a3561436549437347326d307a316b42582b43352f6a674b4a4b4b394a566c6c6d576e426e30632b656e4f6e596d6a777263544e6c7a37416859626664736456624a542f31765a536c587a4f6f64384d41507152595659736377322b35664a382b43524c4477367233705639356c465832663931316a386e2b4a427967353273414f51445068715363774d4f386e6b304e56306d6262483348774e694f425559736c2b6f6b2f48366f514c7976736a7574326b392f6b705235776e6c537a36634a796d617270535345687a70554c5a2f4c6169593466687749723157356d6a7a6f535a446336356749792f725063476276562f77446a72696d546d2f475a6a71685a533679674f536947586b2b3343706c4f686e6c6247794f4436746475376e5056566a31503750714b3146314b7a6571643873382f79412b706a516b544158432b75704b564f6452656e3439666d4867656c443858776e3143386d775963744b5a72734c7931525436486a302b78524b78757268624831664941374839537644326d7a47584b56413753556c6f4a4d4a6743747154504e413633586566656e4871686b55496d693857386a6e32735776526b314d36584b707a5652334251427a6d556c4873386931755a36625a70492f66326c4130304b6d3550574f6c4d376e694c316e6a4f52716c35783452366633444a3556796a7a447836494756637a4d7a446565683472424d666245364856352b3359546b726247532b2f4377706f3341646366482f594e7a7037784e756b54314542394550522f4962766e6f55647331344d57374c69304b764d615a37383349734a34366457766934727338532f6b4935624a31736e544d52476e534d3264353051426c377a694d44713936642b507a3273585272375557524e4a7a516e7468324d6c34507a354471535a497579517a54524f6e506e4b70694173702f77427457714d704c555451556650612f64456a6f542b506e6a326e726133644a7365625a3739517556577956497a4b5464317938754342545153746c6d4b764a68304669584f4d3762545478354a42352f726d4e3569496e7a4852584570454636355058523833626d2b396f733071357572307043316d646c6f464c6b37417a705a527a39467859615577435a652b6c354a4445575a6b5a746e7667367570415571735937535831693575645145356679504649706f42624a522b545038416a396f5448304a756c2b6b704e6e39424b5556473445727468305352334e62533852496277716a476a4c397a534a39784a2b7150666b36784a6f4b6a347661526c376a61316364334c67562f6548315778716f45695446326555687448576f4352726c6e374b6e385976715275574c475466477632746f37536c33657a55657a6f79476a714656463968316f7955526d7a6d694e4579622b792f666958477869456f41454f7a2b527a33464a31716755496d3737696d4735543242687a4c2b6b5a515a32646c6861354938366d516e54335044367a4532554b745a636b5572357043354d2f436f2b46695a7131556b337677386e425a3147632b4c3663307967696e5939715363644950796232304d566f77366a302f38414e467a4e417268622b31665834672f65777734535265466265586555736d7a77366a4f3033334c7172634838567159456a67713742504e476b6e593141663470354b5535483863786758734773786b372b714134342f6b352b53744d4739702b6e7670313558476e7974744c447274612f6d6c5a6842566c56466e3350796e6d35314f67696a37532f64563951376c6172654a614b3152456a7030395068757343586f54365465765a634c79586d746a46722b527736576c504d2f53767963584c6a727a59547a5955535735344c4c515256567446436e73707364526d7563356153494b554c3372776a754851584d394e764f5a73366839506b6d776864444f6c5a4a6e5678766d5037553659357238686c3070636d466d686a324f535178756a4f62376875567a336652526a766a474e7641536266507a2b44777a2f77444e6435703546567572323476474348354a4e44796241794c625a614f2b53547a577274554b3571436f4d7036424d356b442f6c3954726f47716a686e6d714b79386e792f4a6366447469334c397664386770732f386b61793637503841722b50374567364465643748484f75575568687a56396e587a716e47712b6b544f7a6b7368717645556e704847412b38626f793236616d62554552353169326f6c5650327251536d5a423438394761393676304f5135304f542f384166366b6e4d79766759452f4f2f4b4d57377476322f77434259522b5a796a68616f75356e5a3863334662697737456e354f792f79654c65534b354730454c6f3630522f6f5838435246626a56336a705533494d737849655535533945713944513063793252627a36316b4a47454b666b31717050596e56483549374b47433571425a372f4147553436566d4248527850415348656d6735486b5836765a6234335a79496442674d457237645446474b6d52543333646d4a7a4670304538346d7669566e7041355a2f5745577542337065517457586556506d706876346c744464486b4d64374b65554c69476f714e44544c6e74396f733743546753787973704a7870616b54543049766f3657754c436a376170756c6e5677425776527972714f6157667a6b664a6372716a5766497843477144374179705067673579533972505a79774853616f74617153686b6d544862564f3165587331426178456458365462593669547362356b6a7869374354525173426d3753354b5866362b6f5544725979732f3534574569777453304e554541535754785668706145644c614d326c31772f7839414f545a31544a2f596b4b4c4655736b36684350624d544d546d414e714f677850704e376c56736b526e74366a4c3078735250636e4e6474645a71364977387a62474d7a644a73706b6636632b38484b6d46672f4e54414731566b73654270362f384146364368466631386b66696b7a34466c6f5378416c62766b4751676e5a704d3533707a4350446e7043723941367351656142562b5079686f61697047615846364f554644307a7a3032706d594d64434771344a444354435869395851324f76334b534531422f49535574746a644d3759446a7832725959444432336351786a59394e2b532b612f377567347454717a763142304a5844434a575a464b776e49416f3471595647436666377769635a6e4851544878547942584f5876424d62615a546f73303645382b7a6c5a30375338676f4f567a7272476b6d4874305a39517956626d3241625766416f416a2b764173444e646a4c7a2b364b7352454b674161535a39336a47374a626e422f6b594c3239486e5a453975466e3275454267416d5a4b5a387676384167426b6a6d66577161436d39507956387562653247365771534d47726f624645304b597771736f4c374774795a6f2b2f767a54466350372f414e74483942677450574a314864786e4b5859745642534276664f532b79582f414b6c71474c34656b7555364c503841757a476e32664c4e327968436a6e4c39683959326d615a386b776c455a54633139567343786f636d75594852586b5941744e4e47733277714d2f33664b796f326d596439786c38784167724e626177675458704f7a3634657739716145326478714836467a35716132326141574a30426f544b763948332f41414c715463446863557a6745544f5a6b3172305632575438343549736c3076726c2b7a32337565794272417a54502f41436f6b4d684975416175544f453477496e423131444e6b2f47476954524b37546d716a7153546779424b37513070394f4a314f686d30564c49616d4572552b716c4851624a4d3262684b35594b6a502b676b2b536936693449493876677966612f6255336c33515456796634564973747266637a746a503579697a334d49314f4e495474534877704e3339416e43617370616c70704a794a71517261774f3569494c64416f7174487462714f6c796971696a34524d46544b70697142792f5a2f6d544f4b4279326e4832644971717337365a54716168315235335748484f376b6652584d376935464f7a79745848315a48774b5457453539547a3552506f4d4e4c4a30425955634b55366b38666576704b3159526a504933743039744e55555a2f4844647a35422f66476775626951614d302f325a7659494a35626d2f636a687a4f334649596364494572504a5564637965796564712b4c474d53314b46564a752f775a384c41483275424b5665787267504e305764747a3161694d32576b6a6751744669614f702b52555a636e424f70784c667279754837543168386b344b5a6d2b78446c5667336f672f6933315a76624d336143514c663347315a366c49766f31514353653737366c756a59662b64556f682b75665a4944414674486e666237776b684e6e446c687a6a6d4f356e5438565175466935367a4e6c496a7052636a2f4149767657596176756a4b48474e63553551632f59634b5948663048336a5a70705830335245646e52616e742b6e54475842307539557a567a624f5675466e385879796f6d664775776d752b452f6334523538503941556e6651455879574b6663583253414c415978682f4e2f4c70633245654f51513656514a5a524b76696a393945396a4a704570392f7670423432546b337a64454e724e72356e43564c766d5659304864524742724850624e52522f756f69564f6f436e37372b7a41704c564878494148304f726369615676767275354f6a6e784f524136337075585a314e73386b582b624a575131574c46362f653059334b3969774d4c4b554150766a73374949442f36655172557232303943626e5961427a3644553658522b7968636f467a36797661743758646a4e58557549784c674164524c3551627152347839526c426248593737545a4a4a66735565375370564c47766e7a546e52385a633662663241306b376b7741366574514e4a515a31394d556a6e712f78765169696c724d5a3848737a78422f666d656b514c51352f494a623075646f6f4d4d337258754d756357415a77354b4a6b4a2b6f7a5635686e393264794a3662767548493662503472326b675666654a6a6d4c4d7663314a4f4249664d424a466241444b5a667a557059765635626e3742743472516d566c46394b7842706e5652325361455061585a586268462b6a64304163496d36516d6b5a67744c55756957656d665571544d784f66384176736b4d77746f667039484a6f66584f756b6763787679546a387652704a337359585355377267455067437576324b534e733152534a3074377551746d524449336e302b527a4670466f66474b56517978755572706d6b652f7743777a554c756d7342314b506a6a73444b4f6c4e4861546e66526e4b656d776244624f4e646750616b777a3076636e5071364964344c4a774d32664a33355073416d6562584b3145775553314d7a342b4d665a4949753054515266344255706458666a49763543344f68384c7a536f7a3938394c5236796345593448356336574c6249764b304c3256546978544b6b4f7476484a474c737673617036784572744a5076512b6c776e377a48707a473476364162706f59746c43394a67636d436a4c6d30446f52734a7a7442646f3563565768784b36456c6e725973716c64577766643730746342667442746d445776796a3865636e6532566554656e323970656e326953337471537641576e78393345466e766a687279374c4a6d786b6362474b427074503633332b636a397978304262654c384d544752527465763537345070497a7655624c32594962566a6c35757a6d554737784e63636c5255513667616731544d7a614655786b3931444a795943594f306d796b37766844534a69656b696665462b58592f6c4c356559394c4e4171735a4b70382b4a4f704550452b2b4677543232396e436e6379614b4c474b6f2b466337676d3157475578506355353532726a6a416c486b5070586e375833396968764143574a7a6956564251687646517a756a7a3457624859483149674367395261364a355241356b756e6f4a6932706b63726645596d425453564d7939574a50384234316f366e543973655658786b712f384154505a792b76576d4e77774a5771776243635041474f644f6b5254754f672b52326169305047622f414353316e314c2b496c676e69464d32706664545045345a4769552f31633954313649737250523071794e374f78722f4148325750353049565a526c6262756e5071527168716556783248647a36575378534a4a4e4e4d6e5351374a4b6e5079334937334e68515478596e7365513564485a46443750724f726e66416d3575645a7148302b3738314c30307874355449713661724c3169706830325078777156755031586e4c3031354e444e525a2f59364d35563932714632724650754e594a4b64494a533165577a6271785a6b4979592b352f6a6f3561596c783573366378576358644a3571304f4c7a5570577968536d75616e34675339585453514f6d655266494a7957557a51366d766d4576516f4c6a58754f75693250536246726a4a4c59797146754c52787a496d52734f4253666142393934304f424e484939502b4b2b786b7670367a724170436a626248616e517a3875362f44725379556d6c6d3733427731675879424d354b576e4149336e525358414c6356507a637a736d774b4335762f5a336478464567775677395a535658334e6c6d744f6c656652393650794b5a4b6b726d5439625363373454762f795342626e4f646f646f483439567a51684c544f2b2f4e6e794d366e586e304d2f6376386375723739453161546b506a5344452b78713030734e4944636a6a774d4a6e4a34746276547a305554342b64646656385966797979313655364d4f646d684747396d4c587856533254354b2b714b6341696f636c4e4a4a4a504253757332694f6f4b597667387666475035577a527a72374d766c38396466446956536a543048696932574279624a7172734d6b6a6c7a6f537a71485056485038725854475366366962596e4864336a4f6a783171532f676561525169794d6a457247467070354a5876752b4b316c3049706e7a79474f583976577959342f6a6238337942475972664f364d627534535445527a5a775741634c4166446b366653314f5043752b344830705871783532556631455a4e647458776a78516d43564a6341414a7a4e49356f744f3230543467714d79716d506774697377327169725a53757459703668755a414e69657948524e4b776b6b744e3034685561576b755666584f2b4935585533483648747577746c44586f71355259314b59416f464439544559575539467551396243586f4662633668435362622b794f6b45455a744168546e325050494b53525a6b38387a56305554426d517479786f7256545a5247724f64725a476d32356b684d4e4b756b6b6a536f714251776a536268615171377a4d4a5859307347646c3155616c727166496a4c74724b3559326a38726879664a706d32535644303773383178334339766161464146677136366c5179724854336e6b507a6c55645a57436b544248646e5354684d687051636a6f376f2f59304254734e4b666f34394e47445a5a63423371705a784b65556670347547544d4a6e6d747a6133644e4d5930624537646573497171706771784e625554625670363271776d457878555751696a676d6f6a482f3755307a5532674d6f4a74444e7a3637435242315655476a5644477937353979776c6142553657686f32564f3559787a33547a76695767766863514f703632656e67476f435063366d57576d37724a7330476139476a3073337035644e65744254492b6157334f703045496c54522f486a3778476b43596d4e5376656e34556d6475547a2b774d527646464e746274624773476f70786a517a4e6459626e694e48647158732f31552f475155457a717964774b7a412f6c4e382f527443796f5537324f4f757357492f6b635356565764737754724e4f5a6b495270616d67326f34632f7744777a563157547a684b72346961387155725734464d3531594f64435558767a6a5a506d30725737506e426c797072566b4f5a504f783938505859716c4c6e7078374255526b433147334e6d637a73794446763941446f3672547a594f4f4c4e6f796f61394762756438382b667a5756465a4f7655616c62684134783433636c354d77332f70702f465453507a434e42322b50362f71434a68566e4e566f664465447a74414a3544534951644b476361354a72654c7a56756c3752565958576948777562374c4b32416f33646a4b49695a6d4944394f5878376267302b32506876626d6f6b35596b465142537a536c47786a4a36576756744369317665396968492f644e545853616153427a6f426c756c6f304335476762733354715665444236584a6275395371692f4d6d587961683379456338374b775639646e2b724b597a6b377662794d774573304e57375539367030317861326c664663536e364d75646d36485145656173556d534b576b7572554a796e504a6e7664504d496d785248326462686a7a414c545867613174474c50787a38723447785871465337504a5975624f6174387a724538466e532b486374476b7a724c2f686961666d466e792f722b726333613965412b426c786b466a7530626476306b57657838534a34737456754c6c34396d65762b525053513177737179597155633579552b39675a37464a414157716f5638755a347233735767756e4b614765695872737458467274593654456f66414c5a6c6b4e713863426f4c704952534b50636b317457315144384e6f33547978494c596e322f4a32496d78634f6547433376796d65792f766a37306a483333523153536a5a53554e48623749524832385430512b6159414e4b414d346d4d5467464d6a787a427a364a7945422f6b587832426d366b7331467379557852564f654d75665756492f78494d6438305971344945315a7a7562317676544b6d307a316b536b32453853717a6c4753776b45553536725a2b6167586f6f45777178412f7742354d6c464e413264557468714c706970354630484254414b59636461484c7a506c374f46552f77416e61585544794959707662635a64656269397450327172716e69376c2f322f6d2b70383438535254675253732b566f4f4b41307a6e33544e494c725378585273734971595059784e424a4669526c477671444250745366777a2b38506a4d4337496a7a2b3232345a665a484f6f4a53696f4b41687a537a346b794c474e4c31394c3779502b3036796b543537304f4c6745526b77306741306b73427a6170336d2b712b4a334b54314a324b754977377149576c427a394e744330554d6e2b7341714141504e35386e744c72752f30475768316271394d4a4a35365a4d6453697a31794d7231574a41456656566f306958326831434261536e35376d49416c67616b6b4c70334e41486d794b7259564d6d6b706e7068684e39456b554c4474486b55326162484d7374714c354b7531617349713648734d577a5763396c4a394d663642484e342b3175687363706c6a7a704873654b7564615056366c5547664c6f5539465a636d38632b714f745a7a3541656d6f776a4259644d50307a6750464e307149557263466a30785250703938584c6c56447958446f7067584d506441674b777979526e59592b78733141487753496e463859464a49656d3974447161353868364a4d754651755a5a41565656553555566831306f4b426a526e4272713164655074705a53344845596e2f41454369633259324a7235465439756f3131615161444a775a3839793466342f337a4247735757495036494d353078396c507654784c672b305941317a3573394956303969676767495733794f3669506b396e506277316c486f584a467a724b71426c2b45663061584437317549524d4f4d414c72352f4766474470597a4a667868323252636b2f65717a36313358706f3046437a74466766522b414843784947514d535579334d637a2b67654775594d2f5171644238714e4a504c5166786974764b6e6f682b6e534b324e53734f757166597967503841486c4a4970514a716f343469457757556e62534d38672f794c75587454792f6b756d74796d4f654a635666666f76454f69376f3536517157496635484855484a454a42667a67324e31446a6d61424d3636366b335661562f66743253723670333139504e4b59414765332b516433394934437763764b396a4b776b5437684241792b7779574a5379662b31647979666f386b6151676c334b4e537449664966522b4b6571676541614457766e776a31585a44486e5143615538614f7657676375696d762b57514c4f67745361447735553054783748625a50695479707a49614f417469584231337a64704e6a444d412b61444970713530732b6c4b32504e50377271505a4e7931646c6f38766b6f6135493963494a6c53564945446a4364784a627742596c7641465846584b2f4a6d6d713747594c7530426f343656775a6a48707a31595348704b64663032634b364d2b6731383766384163344f6a59367a6b6977456b53486639686a6c4f304e4265696958324d537045316b476c487372302f756b59632b4e64576b616a57705a546d516353775439674e4d484b74536771737a4c36394a6649696d43694759615070366f5a386370587857384a79474b304a6f5843305a2f63624a726a596c6a542b5532663041352b477a7355363571714a62644f2b2b314c373571454a6e5456662b73334f2b574d566f6c735a4c6f542b39333749477070346b516344597a34456570386b76576e756578726444546e6f5977343663356132482f482b51354b50727471306d644a6b43364b4a6a4c707a745743546657514a62533031413176792f72725a7265523534513747657862735850564b367a78783964385539504a447034356150494a355934552f7633796f4d782f3979536f593533575a6a704f4166566f7737534969456667536871455763524a394a504b61626f5636717868516b766464316e7563524b345a772f4336506a57713472374c7035426e33547057694347762b484c556e3678326f3531625761664f736244505a6569664b4b6752756e57787763342f7647424a4d72394c4e6637562f514e4e4a57426e4257663178646d514a432b6d366163487a7966786c39306343337070712f646a434b78346762583851734565356254594b684b597a33434173794b767367585250515a78366e467749466338673539526574447a716338492b4958634644484c4a556436552f44544b492f416f456c2f562f6565516235397777624b38334c4a73795a345a61575a746a6c36696b547065353066614f3344543157774a62454477347669766d4e337874632f774233325a48352f7439674b6a772f5a52433355695a455a35384f43393736303475466c5a427648686f654245524d6e63756958694f536638505a4e395947702b795877707630327744334e456446436478362f6c796c584d365554487261796a5658685a396a72645a4349546c304679357770525558752b455735696c4c447455774f34322f446e7a417478747a4d41706e5463667477364e4e47694644704a6e4e7068486b34746f5250373749784a49643533367a564b2b764d3249446d4d2f3848377a313444505a30723164717558644a326239797868502f41665730506b7579563232584b7a636f5a6544715446566e4d712b626e782f42594268396164774e4657745a6a784243614f6c4d5954315a6557794a73736b6c664d7655766a59656d714b4f6966375144485a49485777696d5a54467a504d2b366f4b2b4a5876716f4c51666f70386e59556d696c535663354f35334c717a30736445564366764c2b444c74714a366f5846476b43496d746554357332795834544765636c5a38642f7270362b34546d5462705835744479335334716a4e5731447132694657746c64657645315a554c6e466d504f576e39684b753951325469544d772b77622f414975763366727841674f345076304a366139645563766a6977566555675335506a7737694b714b7543537267347a535a4f3664597570454a584868755162667370764e3739703677426550653359753031583036396a7335656e7a532f6c72586151304c3073364f702f516b37483159706c4b7a6464556c69776e4d306e776936644b652f3162685750495437455964694c4a317a3253374f70636d764c656867352f2f6257345a3263586f704b65703265754d633836754630415639592f39767448706a6e6674534d7336352b4450494769317647396a734757537273637257495a576c396d73356d64562f6a6e7a3564624639624f544258504d7966376677632f335737666c674e36735a38742b66467033356f37466c4c4b386f453744584c766f466d6545785767363476744f747a397142485539426676646c433162545039554c6275587a3641544339552f5758585551796375307a6443474e58566b57624f6a59612f4a564a707353545730447a514851375958424d65774169676e49644a2f75616e634d47614d37316c6e33643972724237726353715253726161333032556550344e51764e724e4c514e494d536b6145704a6f5150544b585151734650345072366b4d7a3365532f2b5254396d546f49616e514c6d786d49594462464d71676b7232563563367a50556a6e306b734a5a386b4a4966566f2f79544b38302f31625a58774558353156696738653373776f3734675a3972525a46476a52756c616c4f5a49785852792b707a3646615338743066534e77787a7a544f596d68796d4f62594d383938714e794d63664841616473343359687330464b6e7a7333576e70756c616f6f7937334b6f442b556f363143714f4a5378316e595059645a7975723848302f514139475464584b656354535a4e664c4a7174706a724b7065335a7962506f304e50504c53302b4d30724271754a303765614e426e5a4161584d6c694677746d4d6477523873304269532b692b5457646f3672654e78734a317a447944563541696653434f574e64776b75594b424c517562772b5573656e2f77432b516c4b5349694978415079654d306570694f577573746d79664950314a7457417830756368797464335735586a69614d6c716b706e596e395531726337322f37326a78436669393057747478777a6b62475a324c6b654f54515a6963596349696d31494d71535a7a587a354d59616d66442b717173795575667967554f535357384439706364624f50442f44697365766d41573542566266546d6c33506d735a45534f4f6f32314f7a6d7242525149696b355247534d2f5663795764344e42664b526e53424a2f3635384a646f7a586d3767786a385a71463058637455415553736731384e6a72416f744e2b692b506f4a6e6650514965507069637639384261615068396a7a4f42545847336a66627842436146794b394a47647355305a78586c412b4a47526d323531434f55447a4857557950616d686e4b6f574c3438476e5338764959562b78492f4b6c4c666278432f6c5a73526a4a72672b354d36335068717656334b636a546b626e5a6f6c53304a7335776d35794e4341707a4948746a45394a584259706e436535547451496c7136746f36426144575974434b6262655a3377766f626c773879467a6c625a3931524f557356756f316d7a314b554c32757347696748395148437437767a455a3566784f6873546c33783854575a4438324a6263414f703866316b74583079715731726d4d4a4c695973526f4a37356a7058374639494c4e4143365349716e78536551524244632f51626f59535753566165656c30374438657a6f7051684c673265314f735061536b41484a31663131497a464a2f51464a653430666a57627055314b6b6b462b667257364e54386a3744644f354572777470645648383636766257774a444370786d45616d73507377504b6d76782f54395130777375467562703649556655524c7061304e6369736a4d585135304c484e796b7670736f58335949574d307563763579567831374166394e6c526c30374354617332624738487167422b7373457571703361592f634b745a374256506b545a552f7a305a354f39375a7a446a765a3942787a4b483348386d656e33673749332f307565375457757033496c2f55735a6d53355470416e4b453035355738713453626d5433574a5745314263576555466b792b733651703041547953693135497a714d7471454b6f6f6f647459614c74376d6d324d57356d62556a523053714159354373464a6b355171366165384765516c4a482b73367831744945624d7572417871625350513032514a464a41785a3149636c2b6c47655831304e456c4655637247542f633538537970703233465432705078416d3057723868473655363931654c4c6f476d7a4b6d687a4e5663756d71512f4c4a6149545864444631484d6c35434a7a79776f7570636977444b7959356d73397433484f54792b77443152585436433947577a4d4e6c57646e567977486e7972324246763063387132425a445279576759324c70524e7a68477162336778547567426631594b536f7a4e57696a56542f4836696f356b525a544a614b7443354e6c57765a507a4f356d4f57423158486f517a396a70614a4b6439397247706258556954674d3978793946583656484f657653712f5179744c415131697534563831556a596445624c754176594278553847546a32706f55636330333035334f5359506d654b305a376579792b2b6e4c77594d4933416347353336704d58705536557932497161544e4b7637777063707430716b707134544b4153552b6330426d67506b2f596d7a5376324b744a2b746c4967484a4f36474d4f537a584e6f586d315a743079463537614e61683746394e706d6250727a7148322b3867503577664e6f55523544752f52687961787a46652f516b7a35585a325137506f73307336564e4a5a39445758456552374c535068484d48746358426d3648364170386961796165426d6a71792f4e54565769574f696255346d447947486c692f6b437867366872735071423639776155546c6b34574777352f3664664d53652b5a4562693734315649526368414a34385479446d70457661732b784a33574d2f71334376653756505578422b3335524a795354383378436b4b317a6a6d36686652414f503064504f4f4b62794374475333744b2b5a635542746f482b503049584e71717045736d366567576a78494366654238535a6e4d4249514b646d4248626276482f54764a32664d66496443664d5567744739495a6243356662725777554b784a45453931585a794e79595550584b704453365967777954476c464d546d307a466534566a3435485270617065632b526148622f4d39624d38663174315138797261732f4e304d72506b7a3576465434676176726a4c6f4c705068556455776763663651376c4839584673527945716142744f4a55616a6b616a4c66644f5630616447764c494a6c3974735766746376356c7051446c65306850506a6e6f706a2f37437137362b494a303474647a51315a4a7036324b5358786f7061476f37536835524b5634523136705430734c515a4438764b777048697a4f435a50524565436266587841306a6c6d706a68566d684c514768304f59563045766a6e645665514d346f75572b34756d6e422b515269574b6c495655464a6743724b5a65554c7350724c614b7635436c61304f30724b34387a756252494e3165774e434b70303151314f5332635630794455794677536d435a726f32765a54397861706761572b3947576f34357076487935733633364c5230516e6d4c57613755787455464c7363527a354b55356573775a596c5554324b6755494f6b703479536576782f5439523954494e6139494178395351395375714a736c73564f66547170484b647239312b376e4e4b4c6c6d53396553367443426d4978746a70633467393732545743656a4739544b6c4d79364d304a4b644b5a556c466b62364e536c504d6d75332f78304f4d5767684f5336766975506c305462415a394276535159663043534d71536d653265454e2f6e4e733239386d59366366484b5259457249705135485235424962504831616162756b7033535331514b6e57432f2f62634879764e3563464c50724b6d51796d61624e757174727a527572586e3362394771726e49304b7a636c544b6d4e2f7741526541756437505a4f4c597a4544717047315a2f466f6c4e39764d36754b585779485a754e4f373538644f3152454f784558577a356a563063596c552f79392b474f63352f714c6e635367483538716a6557376b4d6d526e6f6a3063334e5a546b535a7561497a61655066516d786156316c565638453943446e706f6e436c5a703430492f39786e5872793236794447684c58794c627a59376376516a58524c6d75303861714451716d334b445a4a55354f624d4d367078595630397654574d415a646e75704d6d2b3436516e683276494e5163764f31306151506d706b78736c6d68644445514b52516161737652706b77366d78734f7757314f4c32526a32654e72624a374a774631414d726b4175783059586b41794d76362b716e49683556457976564d51783879466a4b306679505069716a73344d4e536549623153566853517342704e756a71435463513932364d4b3749493763434753424b33534a314e537846564335534f4f59315466596c65354d726c3955714a4c61444432734e54686e5a58686a7733667144756c6d502f69794f7053713954527a2b33797574736d347236396c6e6b4661324b36784979353850645a303549464333664e4735336153344641787372377a7941466f5646566c756265366e4c4f443274504a4d5642545a56627164545433705a585659713273737654305339682f6f50334178585062534676672b6e36434e32352f312b6456763147485a356671386638733946535654764771656d494a352b51516a337969703963565059786f392b61745266544a726b4459454375727a3862746675726730677072524242537176516e316846377039585a44786b4c6f3344474c4d784c59692b626b693036517a4c545766442f54723567524c482b30486b384355614a716e3174422b4c664a4a6e3573476b57705a7449527a5157662f4f705131414f6f6e442b56596d75512b792f4d557977722b69593433587a4379334d62786b4d6f4b313858535548647571665375614f456e4d742b4568742b4f37676a302b6a4e3038366b4a6961703554414a386e6e5a4773467a3653744479696d73654c7046314f536d6c4d54596663476c6e35744c757a73647061435730424c7850506b3450776a49774a7a554566525a34374674467162304f6a2b697a384e74326c334a4d30735466655652736550484447546d584a6f6b393150335739536c72484172765451414a655a352b50342b6442307331385a557276692b6e6b7169594c6c4b5331417438646f674c713545674c4a7a712b4d4136782f6b2f474b57756a2f624d46532f6a746d582b6265642b716e712f637243324d6648676c394c50546e53626d30666162703379547a2b53374f68616e5351305a344979314d776a6e562f6c3356304a68366d6332787576654d52574a2f69734e76426d464f62304e48492f6b33676d4643376a7a50765539304231766657302b6c70412f55634e4657717833425548797470396a6c55312f5859644258544d346a5052794c5a704e554e4e637a30515a742f6b63564d45787a5a4a613743694e6969576d7478696c4b6d647153746e46614b733235377668734372427562712f4c7061444b4b2b374750416d4f4f66756c43332b473739454677496850375473584f3971646232735748775578776538324a42524130446e4a4177375a77746d386a7378376c487439644a644777637464544d754151307a30634f5a736631644348632b61616e67706f7073553677302b7a71326847375a6d2b33564a792b4e646c57775a2b4c6d726f6c6e42506b386432684a6f4d4634704157436a535870554d516b6a654c6455322f425135667a7444586638414b723056336657723044395166536d4e3065662f4144767059457662737a6b396b554972386279583531726d4c7a33305861486444786653516653366b5774396954722b48324147756e614b3372667633447855515765733334752b70477175447944792f774141395173657857636e56774e7a5451427a5a57316c35554d374e42456175572f5a646b6c544d457954393634772b702b3355657a2b76537858556a68472b6f6b337158366e2b59657072497458315239514e373149755743645a7036576f56616f6b4768617135496365797a366861432f702f454434317a55416e536d5958472f7059424556725873313269744974536e796579482f774152385a3236326b357958342b564c644254706c317779304f6244426377686e4731615641672b73615a6553477833786c376564734f725034662f774270623166395950384178667a543169544e343136655276586b7a2b6e5948627a79653354556c4647664835446b3061416a4447385a316c784a76473732586f576c4d7743546c632b703752576e43766148724939482f5458483858776f76487354453166476f70707647316a4b5762646b444e56682b4f616a4779776d783357392b57444a4269552f45544237656e3466645250435475435a6d30356b6243655459396936677a494a5369713049377161517a656c41336a2f4142696636484a4b715338647036796f6b3573665a757569535954587443556e664d38475669596d4d77442b4e677863677a73324152754f2f4d69696272647a736f3156776d2b69424e72364e4c6363714f4d5271324b62412b4a33324f4f355753674e6c556455676a6d654f4d7a72687a66734d38656952443957704c4c5937564d3772346c57637465726270792f4351713974526337784832585267416b777757453541754f644b6a766b4963353177304f7a535a52433670644d495a366e52364773476a6f3150415a4f2f784631436d4238716b68664b3977305547487342664a367735636d6e4c2b5a5237587a47483239537169755a664d2f774167547a6c4f66795654553961346f523430435748652f596f354f34584e6b54572f5a6b4849764856646b636c542f77435730537a6134505a75503071716a4c52695a4c795375523547324839334a59396f6e2f4971464e6c4c6e4e6857704b706d2b7669496c6f5a756c704c6c677a6335316632696e5a4848737658644a6c4937684d6f2b4274644b3153542f414d5a517a51597a396f634a72636d4373552b39344b734474734c4f743273673767494849374e68737363506247415a516d7553476f633852335068586f56464b6e674f49585147456a534b426f716a68327649444e4842614b64434e6445576157455643536e72376e4e445776535031644a336a71513866623965567673595042596e2f4a56684a42664f6b76695970325942386b32445257594e747a31362b793166514c556e566d5a3642644955524e566f594c787936767651304e6e5638674e616a596d515a2f6f4a324459443975584f5934637252593439576d2b666c4b5a556f72594f31453961712b3579744971486144682b394b582f41423963615662455a4a435a33374b617464334863476c6e3276474d763671714e776b7148374b4b50432b39306d514e4c4f5a4831505877553957756a7455756853746e4f547a653650356955564d68722f714f74764b7639512b665054685332573342695236476f6d6650663542482f4e5249314a7a727a627a367334627568504c6f56756f6f6c6a6d634176586566424a4c674f68553874765041696e6e41426d596e3361644e354a666f654e305851524c526f61633033386e636d505445344931385375314c4a6630763636685a396d5259464f6c584a32784862743876374378504a6365396d7736654a744b73396a3576633836484a736873314e71374a70323630315a74497a7a68596b75355941355076427a727a39342f77436e2b6f302b3844456653696f6c6d75354c7a526e6756425675646a3769387330656856416f6f756d74546d5655734b467145485164533078732f66534979654e72396d514c526e556175786e4d66666b516332597339746877436e6e69794d6a734c6e795a766b6d6470544e4a6e323671714f4d6e61597a6d423572562b7a6a5059543450702b6765335a4d73656e6c4f73467661656a30556c44463971626b33775439613175685856497963552f6179795358467a64493968626148485150556934576a7943504d566c382b5a664c35466e62624a6e6871565a7330383239647161556a6c7036776d7a4e58375a5a33626937703148784969594e55616c63702b5a4c665878436c3257456873544e6e6254736c654c31654b5774556549367a4c78786768657337716e6d435675737938644d6336314a70615a4638396b625743303744377a4f30642f324662616e446e61534d2f5152745331526162354f36325336644e314666772f455443783874693143397932706d726c435a6a4b71486631586b3876734773734864717a43305870586c735a6f4a3158352b75376c52446e554959325731337a30756f68574b5346596364306d657938655a376f306450324f465938675653312f5374334d703157586d734c782f525a6c364b4f35364e57626d6b4f62512b58334d5144686d59784b325343315577496d456e766d4d2f664936387475736957613244786e61564a697146734d634c7744326645713265573664492f78684a396853707032456b3167796f6c41587a4e3578775447357a612b3838683957564f704e517359585941763459317731726d6c7a674a2f4e6a59506c756f7477674b2b4d594938486f304f6e71736f54483850516f6d2f725146703861725572586e746c6a2b6845357a76356f5230473431575779656a4b586e34666b58435176517954714b61626b3943785745485844387845617564783332385148524e6868412b33503168726462587736487a61626c3747464c726c6f4f6d59366c793046376d3257365572442b442f414578786b4a67356b673972742b30395944756678657a782f4a71534d437664444e4455324b62676a4c706f6e5664566f5a4d45394563693954505a7456574d366a6f6741392b416a5959306943363533576a50515075356678363146725a7453696c6658467741306a374a533768305a4151466a6b6d59534646782f56347276546f6457517874596632556d4c6662784137415270374d6f444c54326f564d64517571684b7335324a50333463764e794a59526f466b3943794a6e584d41557153725366315378735148314c63744a385a424e6b417571386f66354672486d6c536e6c66364a632f6337506d6472773661493546772b2b6d567a5034335055304f4b683677344b36654a42684e39744f2f6c79492b65517455754c70387635706d7a736850656f5a356933436270585a36526951717476527356734d787a6430446f6e2b6341436e7665652f69622b38386847344d426c47312f36726d7836744e657732715871314766484130302f5256714b587a6e385071443546436c684542383552583831396b77552f732b323363753442582b4a316c74307364546b5670377a4b72714f2f6d7966437466506e6c684c6c686831506c31475079596d4e63365436787a7970436a6b627739363647376c334171356e6630655258563061562f54326374306d4c484c6434764a6c634b53557573555644686e2b31715a50574e58374261366e52495541347953367743585a6f7a616b534674584865692b3768645a6266517a2f4e5a545330716b646e325463306b37305a5751706150523538784b4a445274706f6e413339567a6468764f706e6f5a49744f50334c5939376d6678334442354677755a4c6930446f31462f7470457368375067792f374172615930312b4436666f44506a38503859722b55496449686d424775705457702f3061684a536d495a492f6b3649694c79592b7a3245317a6d706f34796831796d742f717570334365562b5135576d703857364c462f7964376647757132704a436452334e6c314a6970703643526d2f6765736e7142445669436970423332466b32594147757933674b793858347651626f594e6d56794a58696865542b50376946506f6d6974584279504e43394576476659334a3659366855536a344163436e7046515a5664736f74654f6c6f4673307373366d64315647646b3565706b66584c4f624b464c6368387447672b73626875535336716c365336486452515058384b4b5a68476f364770436e66793545434f477a545270313563695538767330736f706e684b464c4754416d44474632684d7834532f625a70564a347a36364b50655a6e4f732f7154745475416f5a566d635472644a7472744b614a4f72584c4a6a4851473537443866685250446c745a477755686f517742464f747677742b6c6333327a7541666d727569325947422f4938705351375a6b586f715a614e766b4f5a6d3231327a44717a364b7942626e634b4f466c4361487048695468592b5533314a4c397457757763344c72383556693659343844586b5a6f33364a655136444b625878386c6e5a316738377344387a36584a7255386d476b485575453453564f3451376e7164776452396e624c72535a4d4c3054717a6f49714e58516a4836777a2f7650794946476469304c71304465532b36433331744969637878694e444570546f41472f754f386632564a70756a304b31553264506b6c58463248546d57354d4946715658546a3968694851776c3032462f3948475a5a316362656e3736784f36764869464d335053652b576b68656464564851525a2f596532575a72544f33506c534636756939517866373562714743566c4277664b314274566549524e334c75412f546b664d7174336a6c61614b5332632f446c486b66526e31744d4157712f52342b7177714c49616d614653586e376d2f4d575a77416d71434a496630726e484e314557693136366c532b5449585651306f71577a5a6b544f32334e745a325037462b68626378582b7831554767695936324b4c337536484f2f4d4831594c435264322b706e546e35634f6c6c63676a356639665a7a70575259714957367a535a7655445a7846547536637555534349615a7047574f3648564856414361374b2b4145644c6d3139436844363437325364304e5044535a5352326a31476733537a4a376d444479666673644c59524d344564533439686e6549346d517167743038686148644738364c45464e6e35376c525a56417144744f6d6d6547676b36744571386d784d713432504b5834614f6657585439696c494154766d4c334148623465646d5a3139504945544c6f4b584b4d785772354c717648593661522b386e485242516c64466478424c4c503841433667452f74505062373335377562793641506e2b496e6d35326b586b793456716b6e6c313773324f53724a44535a4e7369772b4c4f6d4876666b2b394c3966696849316b557a70727a623163704e6d625a6a465a3469616e343369536535722b72623165644e4e6f51364f6e5a584175794f30632f7134766e5a494d7444564a6f737171706e4d477a6577772f355949746a336e6b4a4a6b79633542666e526e4d784f3357565461327a785751665173757368324653336430454d71766f74712b524653556a3167537063774a6d485162713337556770486256666e364d6333566f64342f6d6656664350644c52386c6f6b54417a354c506952704371686a64544a6b464855416f533934724c334d4d4b44634b32386f437263316f357a324746343046457a537168737936727371593871516b3442365966476a6c53556c6a693030385778775778673549385a3853574f547a2b77462f77446a304f6a553351447569744d444674444a584b314446566a6f726e3074555a366c396f464e4e444a71454c37516775756d653169756d7033746237654959797a432b6c6d4d37447a74627551736a455254557a7271724e50514e4a4f6a6f6c3656454a4f686842552f544264695747585574506f75474f50613877663637467853345373796569713661504d6d4f6a716b366849712b78583353444c48514a77304f3573506f37332f414b7a524778624f2f746868374a352f50376974746678566730397a2b54486f544e4a56634e576669687a726d68515379646f57307a697965774c4d2f4c634b3641446e47702f533655634f6e6f615674752b63416275597936655435656649766930553564576a4141504e312b6e625a37565a6c4d75617861436c516d6458325a75386d656e3575752b4e72715a6c4e627364726849716e77656a513853386852365433305754654d314b52706542372b6e5657694846594a5a4f725a34452f523973614d6e49626a655161694d326461585175434d714f746d4a48784a546d593366454c45737a666d4f56397556746e54414f664b55347a357330682f516b6e7731434a6242473272514b4f2b6f2f706f58424f5a7a5558393969667665397672346763574e6b5a334a447a78347233446279504a4b4d616a3865314373306b36455134386c6744486f44546b7263352f74536d4e476b63776f53666339715a377562414f7266623971426e6531574b42386d35587035544755395932326135704c38597a307a722b31386c61365a722f30615570752f7742792f6d4e376c2f314966396e783353386e717931327a566c4a4731307946456d4c7166744e6a632f7652347648757a5962766f713473564237394359574f42763742414b703849737035326e79493573376b30674e6533576a35533763415035524e4f61516153576e4858316a4d303247756c796b4e702b4d776e61536e486e752b476b414a6f5962614e536e546a2b5762537070686d6854684a7a4a6333327972757a4b4e61746131764a6a70636b4e4651763549424e4f2b436159314838497330426855735430614b385a4c516e6d644f38464b586f6a46676b54647973726e543568632b5a6b705a3848436e39375678696b752f43773275635151796a306d384a38767531732f5438657a39614b445a4f3354314c652f557574466a6e4b7a6a696a7668304f7835356532655364564b58664e4b34763034464330485533576a45343453414f68364651556e2f4d59326e4a6763765a6e366562676151647a4f646748526a706e794e786d665a4c33367359366a5a6246746e614878526a5256396a2f663841314f36496e453842566e6b6e6f6e356a4a6f66795645303763374f64414d74533273726d446b7a5a66484e50627a62343750766c4b476c6447694435627a3671624e702f3743617a624a5a596171655965685068327a725379532b4d5938355831667774556d7639324852794f586143796b2f5736765770706b6374705a39566345785466375575457659416631614c7a4559366a536a31642f457a302b39596645697530316f79493871344d584c31494d6236765942796e376d5a6e727a2f41434638364f554c54543964466275552b35703243314d77476b6872327271577262474d5a476f662f774262462b56666f7936542f77435958387066565a476772523547365366792b5879583565332b535377376b454b74355a306279314c75465048653979584747694a6e3746494a326e764e4f3038394b696f2f4a4b66376c657639624933665672314c753865356a5257614d5547662f44525151796267344f652f4a566a4c574e316b74563164704b427967644d342b6e58613556487374453645394b52496d4870622b49326a346e646c552b5435756a355035726f4b68547237586d5138733133427279655459347a6b3753386759476659794e6139437a2b4f6e2b626b3244525453704a6a4e55555731496d5a6d49366a5a507733305a356c652f716f6f4b782b6e6b376d567638416b646e3870426156764570757a37664948356665547553756861783443782b354e4f31683949334172744c576d337946752b4b2b6c7a7a79373658344f6849574c71765a432f3841697330575430775836456b5a7765335353435a5a736566474a6246544c2b546c4b4870586d7670766f35575a7a504872494e2b512b6b4f4870545030636e78622b5031703459732f43566e2b50545a566863696252685a775870386667366e57642f4d4d634e533266614277706447434a6755796c794c542b4c4d6a5672386b5078656a524e35486c4f78647a58643749793047396b77712f7377497a714950355179795236557a6c33464b6d2f716b652f76494558702b65695958507670366e654e3166776f39482f432f5848385074547748794e396e6a39314f6e76384168336b6c336a38536e61796458785857566f654e4f766f71464e476c4b767830703770334f73506f5242376f4f6439376d78356174707066644167487266384132722f563779627972453845642f356a354c6474415744347a36673031362b6c6b6c342f59336170706b3136504a4e4376734d64685751703677756956477873574a6631507770764f314e6573526e2f41476a654c30752f7347443666656d455557392b5462634c7a5a737a4f576e346f327a4d794a3776334c4e38314e6a374b56694b70355679644d75385751516635755758486b2f4b33746562596a54355a48327638455037686634773774473734583670762f4c62305a33704a53386f384d3833337037764f7644624d7131303857764833796b57643171446c594f6b2b66335073712f682f774442365855714533767448556a732b37734a706f656c576e354e36613557683546684f61574e5173764c4d522b532f77446c4d6a4d3036376f526f5a504c6b6878316b6375533434343235387743314c4368367474565436497a69307a586f4e61633750777654694e2f69323534737a794c306a74734a766b66686568374d2f5577316a35457457317565412b4a5a6e364c577a5a4b4a6244374f787a506353644a545675366b77432f616e4d646f61376571503456614f766a42356c364552786248676e6b2b7234377564386853433952746d48316e6b5663572f72707659747245365778523756397156394d55544163337a4e6369454c31317354747677734f664f2f36656557654c65536a6e6338516234627034725a75305a766b6b6972382b4b6e4e576e505a6f6951505833596f4a4f7773716a4c32436d65417a7153326c546a64744578614f4e743252552b36317548535338793748746a444f6646304874765834642f4130716f6d4e64656f61794e634a4a3170666c53687a7659435142507572634845324556436b76352f4848535235486c592b2b39664357532b4d4833484c4754554437474333486a4630347549754f6d34434a7564732b4550624c304a70566a5975585678686265546c75444a79356d5866594b5655646c484d2f527155334a566a6b7462464f75645851726975474372533977562f5a735a4d46646257447a5531725856686e7179476638415878547466396e376b4b4d37553059682b76517a374979397177786c4a424e624c37496a464a74613066696d4a6d4f6b696b2f4a664642386a7a39544f6c7a715630557a38312b677a52726e6f4f626c63596856647a732b6a39663541596c6c4a474a70554161496d64427055383756746a6849704b46486e76706665672f54587a4c79667837583058683375484a526f463932764c4f6637506a4f2f6b364f7037733670663178494f4e2b343558732b6a333748756f36643852614f616f7544562f4f6238692f465430347442364e5333646d64566f4e53374f7972394a6532313255444546504832704f386861316a4b5a4e4f78545a714170704533505536767571543344756a2b41336b65683568364f654a2b54624d2b665435487136724c64576b326e4276343142332f57757630616e794b646a72565a5a4b73505a3876314c736444676c69653737314848727869324f2b523178394b664345446b7a3648495754553754384e71366862396c307a5a4c4938784351505156532f2b4c5a6e736a736c4d654d73536b465570636b794568776d637a6b64457653727861747961433433524f652f637936367670484f796e507449774330394b4639433251374861644a6e476b7079556d644c6c4841622f6f4e504738356e48674e7166465a4364336c4c3571486b63734e736a58352f4769366a567557484656744f7a714836425866787647633667522b48356c703537523666395546677877537a46613277394639414f706e333067766c55772f4a4b56494c7a464c732f7744657967574e4f64584255505a7638315465337637414a7362686430356b3968476b313655326530324a6f564c4f747975424f57743261565061476357785037625131632f765158743549512f35686a6f61593658325157756553517a35556a506d6f48536c7455523573337a43666142355551714567483636766a597a56414b5065426d42416e7a78687646797262716a70796748573153396f6376373332626242346e4f7355587872486a706853437563352f38616c6b2f566b4a744d464f4f4b5678534f6f7a6b453775666f5a6275533130784448456179526b3343625746517465786d74623867732f3742552f4c39684c336734416f6e797631486e786f745356756e4b63326f575a6e644f5455376665644b36745961464d666f597232537a7a557071364a706d36795836617669426f4438527a455a6e41382f66384164503841377038483478594762344834627151532b71506e7a6d6f7a447553742b54695a345a635032504d46747a6f3569685554714672574a4538584f2f37515271366e714437505a3943627a6d30357255614766694c6c59756c48503541506d4f39682b616556555375334e53766179325746645670616d6e7a514a466e6a723531304243797059474d663241526f6679626b48516e36666464535a36624d31676569723061383533555a706c6c65532b4236386d66566d7730586145644f46544955736a4d472b57724975543864476f65746f5250494655756c48376966716c4e7949325563646f7a486e41327677504f2f5662766a717a737876414133573145706d6b6e52334e444e6770707a6f39423166306e487a6c524a306f3255754d654f347359506c2b4d656d4d2f6335323534644267667144366944547151743066535347587969656a722b716a6f44535433374253427a6e4d316267577764415a77614832487039376a34445a7a372f313532783135755552667a5431512f77444976456333416d724f6a7959594935376475666d6a384c45546a6d3550646a46626e4c426777735835497964565a3955686270673933374e51754761306d4a695253622f4a48525732413633713174314f497a2f4838396e653030366b30746d546c47764b71304a31315a3768347a34532b567956446d75417674744d7568625a5877466c65504c67556d4c6e794c54666b30366d6851556f7a2f55454d6c717063344f4a662b2b56614838764e4b71464a744230367a4661754d4d65302f315855376843322f70646d576c4433614e47706e674b6c3036653132667873656f6a6b74526f76547174597a516d736f755776684173426e5052345a4577446b50515464486b56792b6f546f516a72464853356b515a314d4e39507a41475458426c4e376349426f4d504a314d64494e4f516d664d6c526f64514866675a6e37767a456c2f6446626334614f324f615232467051306c4c625939326455343475364e6c416d76595331314646535a614a6c66704d464649464d674f704c4d4f2b3335744f6172505a6f346831487957504d533273764768767a3770324a37526e7a5a507534596a35514b5a4f3845663353507866654633736d4e6c766a2b7636695970386369736d6e445437524e337447627869535579326a357a6a71454b575a3753573645714b6d66464d31616c506f2b6d6f666d2b487649437147756968756b6457536771644a59325a35426253595052482f4261466b4a506c6271466564476b636f72667a724869527a2f414742416f79532b662b6763796c47766d74544d4d6e5a37745352434a47792f796261775830594d7575315531774373666264485366782f3467626a4e4a476b6c6645414678443961612b6d73494e4d6d4a364555326e32584a32347039524d77736858325669617449702f616a6f384e7074435a33764550734530516176766a47643330633647534652356c7872314a6d36744a537851315a365750646154524944687379324c593737424f5a48396876574f4d5854675a67385971736855533349554e484d79614369536944686e517a52712f6b6d5275356d743555767638676e7363784f3663547250616c765444347568496f4938696c79655a7167346b36474666497571676441424a74776c594e485a65414e537169624b446177396a506d5172726b3047517063596e776b4834364c633848706e3130734f364873737461586f565a3746315a383641634e4246782f766a636c764f4b48373677706e39307a68595230426a3278763874477a4e615768624c6f5a4357746f7047744c4f722b746b634168554c714e4444634e557265394c394e6367772b41366574412f3642362b6875315a51364930354a4c553446636e4471787a68366d3472715a5839455063306d4c475a61314648375675364979435444706348322f5346614859703862425a483275617a5062456e76386b564b4630646e7a65556577724b793973704878624647594178497166387039534338576a4776535a6e31413436616b67577054324e366674314e4278314d307137785a39656479377857614645416b65617a336656576b53344367453335614636306a324b675930696350654a676c4a2b52474d364163327463644447564c6e6c5332675341715150374b6d762b75617757586c2f71647470524e486c714a4b4c7336645a313250426473733444503144685a504f7062733846676f564638336a7a61682b546f4b2b4547384f7077544e326851796854744641704b6747354f74377649766165645052774844397033644b4e33656d444145324131516335384470616755686257475630485a7661474c6d6c3764456a6a306e5470536d6c6f3576777a5a71684a787975477639664335716a4d324f414f52385038416f506c475268334a6d5a70624461346a70596849714f5557646249507a66633162416330335a37536d636f6547497a745a416c716736616c6b3447306972344d34724a47324d514d6b6a2f73533045774b35333375625a7272466333736857386338334878584b5a4f7a68372b6739704b4e6f4558686d7170576f73784c5475763732486b2f4f396c71764a3337596a576c6472664c526164302b665348574378464351502f556f6155682f51426462724a4e4a72375a4e516f4b323965424c76457332444e70504635386b6330636e756f45507344315a4f436b562f554f676a547a6f507542336b3239556e527651334a35556d6b4b627442526a317665352f77444375736d517069795a504b3648592b666b664f4d4171767343424177434a775375356c4f653142584165614a614d3070305a7267524a4230655557504874645930446e733750573554576b3475716f2f31423730666f7842314c386c5a7a794179754b4f6a3256386e4c7271716f4f7a335548616d73474c587a503841685a377547766f6642376b67644966736b76384136444d417072726d30706e35672f6f3751534e614b4d7967795a614d796e6e4a776852734d5839584e3473654850787459434c6c4b6335516b44364c5379357a665536356175725037376d364768557372424e6d58626f55725248514e58624f566151396e3442684d414f2b78336741786f4344756d31316c687a5472716c5643566b7041365851557276314a42546f6d716a674162474d4665596b54455a765a2b6d4b4a517444356e41524c376c62324c6e6b3475744a726f734e6d664c794a32704a5954335a7261557034795a332b524f654d2f536333333950363651704651416d4b744356796c543046635944564d34615330563573354e685431445a414839646e7356527a5044324367786d354b6f55484e336a374f75766d4661554d2b30327476663365726a57426e665647646a394b5a3075596d686e5638636b7144535643433449653570704e5366382f7744482b67624a79475568436e6c564d63336339695850744f79396b7230324c6143756158667346484438646e7439774f3537782b4967616c4d3373414739692b4954326937695a6b3874594e326450464f4b535a7a5541484d6230644c3431695358546435783344522f317569627a44367a6842744c4a42504f4d37697136742f4b56565364584d594b30565761576432784c474c46676b5562726c4e61505a782b4b78587870425170442b676676715745732b6f3350313270706f6b7161786553376871516d725963456a6b4f753974424b576c33666c377854414e79584535624a7574554158696d342b5650564e544e6f79386161467a46623139396e576647754a567956546d4e6b49564a713674587334314d33776b535335387947672b30305347394d6a305457546457774b54754e776c6f4c6e62714d435274575a52776c76586f4550734155676f53443244385878495541416e59583761622b306c385330742b366373636a6257322f58566b716a6c5a617a6871714f77723138357a6e663841424964634c414a435a4156396975385578493352784b4b5349564e7978754e624f70734272394244624f382b5275544c4b33334f555954754142476468714c6f424535717a6465316e735862514355463541375a6169583346785a523867706863766e75637032656c7251587859554e635a6c4b44515163774371345a6848526d38687978334371694a41354f6d4e7433506e346e4a715246582b7665625069544f5175363050616c55457a6a4272413635775542354c2b4e2b426473792b51654465556f385537497276644f4c4d7a6b376d4a3544716f6b58724556325a327052706c6639366f6668565535416862316146673334696e76572b49785063495a6f7a2b642b4d623862392b65683261564f5a6d35666d574a63792b517264414d704768626f4f6158666f7a686f534d516e6a2f41504439574963594f37536b5532356256384d66595639355179666c6a6162715a64786b334d374e6754514e4750343233515a7151686f4c794e4e662f5a734661563063362b6f692b5955702b565642682b6a754a444672384735395238746854524845325a7365647936594163686657784e57795a396172785972704f58563133564e36773055636e70556859554c6a5355626b2b596b66676b2b7673366a334f545861317a62714b33556d666a6d713470555a734b714a34782b5434306d4237335066654e41642b324379594a35386c3442334e6e7a6c3361443675775536656d7458644344545a715a356653594e566c62645a316c48596d70524d63394c542f36333251546d676454347a796961337837794349646a50715538614b30664a31794f794b7a5a4a65555445743956316a5953456b4f4e386f7a303330693651766b4e6a676454654a6131346e6e507972686a37646a527a7376306e52554875315351466f7a3651486b2f615a724d464f776e68324d464b6759784c7542565077503643574234457a6b675a31463247752b586b66786e46506d75546c61754674555550626c5a7a6f772b5250666b396e65306e38633750737250336b6e4f4b6d4d786a4f65416c485046382b31756c737568745254756a6f654b63616a2b505a515858382b566566586b557536306b725a5a63735649704272335144496175474b6e4f6a665878466746466d664f7763792b65594d2f774361657178796f30327a6148524d47747058657a35364979546c4a554333414e4153417754575350613564656234757a363841417667346a4c30632b376a354c796370317564414d764e44515a596270757a7330354b6e6a53365834537a3173516f5543637a353532657a3248526f484e427a73727a673271744d4e5273594270792b506f6b7a714c74456f732f7638613070355a5638306d754758765341386f456d636f554b535a4a50756638483139534564616846424a75544b4c394f4378756639585938654249464b4b717150735632527a712b505048364f58507779587a70665737516e2f314c6a6c4172505773672f5938597033486f6264456e62653332484d784578767368304f636e2b566755304c5a4b50617061426b4672443737374666762f567a366a64426c6f336746527a53683268634c2f64657a704b4a5557653667704774724c73662f414b68507a354270513558532f7741594574727443684b79377a6878707a72706257554d4c644e486b4d2b72325662694b356454355657797a4a76645378434939476f686a59524b2f5648766c674177344a76556475502b6a2b342b746931474c794435525a43374d306d6e6f61637a55634365472b6356726f6b68557335324a617551766562583148572b77434f6f326d6c78564265724b634c337a45782b70653031582b322b6c624676576b4676705052784c4b3049482b516f2f6a5843594766657676573673347a41586a626662784330475a326863645666667052614e3954774932374c64457331715a35374b65543959336736417a3574337774594b6d726470614264423346337565746264386f4255637853394453797841556330416b7145427475304c4a536f6b6a64514976374c51566739716c49446d65394c70656e5865464576414156786d63357a784139555971627a2f43564f52544745417051696f4344737641526d705244313350712f4c7159685675534155556355645a574c39366a584c4163466b30334f2f6b706c385843664b4a6579426e5653746f717271696253396e4f5a5a4d6c4c695a592b4b35374841564546507a4f65376f6932637a6a4765412b794d644e5333556f4c67747a35586c5253656864565079566b7a766642326d6d702f4e41714c567869315044725451634366313846596d7873415058656245777a38364a72304b2b356a497556727a494d7161705a426b4f696c3751746b496749796776696d634d656e543870306b7370704c624c65412f5a7a4f4a74574766705378392b49555a36792b6c51746d72755351356c48304871782b4f477a3638656c384a54644e31512f4d743350332f414d30314447514731696650676e3476557a5a342b73746d6c7a354d327935635a42314b484a343778396638685a6c6f344c4f74536b383241374f5556304153414d7853355574374b4b6a6a6455484250517a577a6443646d6c74794c6d5732376968364f67413536744a667565592f39694279324e36784b564e435274474e53377538717337784e7163327550713156315455544c716a6b766d4d352f676c5736715630374459527a5570642f6a436e375a2f3041524c4b53544a6d714d3870656c7a70496f5a3957334c374d7474576e584d79645357382b465170377a6a474a35574c744a2f784b39384167514675512f7179724b71585a54306d6463646d316861345a38632b70536d333232665473563235504b6f352b7466557350647a59563765544f6d5a38416652476d5445706536554a724f4c796c5431374461503436363163316b79655345554b755232534d6d4659722f41476f2b2f43565166763263734542383968374e51484a45323559664a51756d6a7942614d6e4d734d6e4b3155616a744347674b47497147646e4556544a66384a706e57747259574431303867725034674e6b756662753552585746644c49626d3253553572435231696e6330303143774e4a302b614e584b424976643971616b326938757565396d5936546757486a4a49387a502b6a4766565a764a4d2b4454573941525a7371645a476573313263573834317279334a452b733730577959344f503630314a754d44563672705a2f754d6b5a544f68677279524a4e4c7530786e3363706d4c364c352b53724a6364563037754c41675a7777573442536a2f4148415946764b6f4b2b4a6d4359704b636770745232653974743766756b44495156785a44447338752b38435a324e39737a76664f44676a507244444e493335775451736b363270656168426f656246586d324c756775613141716341516a5a38507872616265696d6b4569697963557a6645474b7370696535304536366b6a326a36524971434261334b726d586c56677a7237456e4f6e74435956766e6e62514165396f4f397a676b442b675557535a317a3238726f6464593243585235717a512b79664e513672527269656853534b6f657a6b6a396a4d767377476e3558456c50506a49484e474b6d4761346a2f41493650536e63353848333366444f4c574250563153654c466e745741733068634b586e4343683937654e4e5a48774239556d6c4f6132715a4f673250364c386f45307a35724777526c6f4e526e683833745a51394969622f6a46616e45366c66474544474a61446f387536687055426e467a537a52637964566949325a4576494a6c3972365639635066726b3353454656456b6669623745304d635066655a6751375071556946637a577a56466f436d724a5a55706c6e5644523832677552397a4f4c533772495866716b684d32396d2f302b302b4a5430486164424a31474d326833536e6a63765a43344d32582b50783248316b4848496c7171457661714765796c6130384a4a2f73694476584c2b52674e754c784f64397157426f6456704f7334564b716674554d74656d6a7337525a56324f6567566b58526f36446c39396a6a3968415a67594d61614744595954735a6439776c71732f3252424f536f7957663148672f347a63783262526c304173666955426579634f2f4478337344442b51702b5035442f576d696d48374a73765943516f483977393473506b57553064536e5546516169347868424d4876344c6e414a6750596d6466597a56482f4e464a6d2f716f426c475357575a5531466c735178726e377a4a4674417245766b4556726d64786641533335414946486e4a625a7964736b764f39503274346a496c43326e6c5a444d4659393678726947736e456f666c5368774c76562f754f73313836446f594d35636e4638796849657a50356f787753542f6f5551794d636d536f7a75506e5572716f54547a70724d46664437757150376e795043507034796e6b6f353636623831514c6d6e52323034744f68375570763841726b684e674670536f53637650617a6965475650363753494a554267776f704746427a364b4a387070774f35496c314f66506352726a582b6f757535623138735a31702b4e545a77616e3561545377444d432b3247544f557943676d6a6241677070353958534a79375a6c3161435730335736644f55524863422f43494c4e497a69436e42514e5076702b70774977564d624b363255664b55326374476866494b7953454d38383474586e42424d6c50613546736e4a636e4f476c4b75527a7641353644464d34664b4b3736654d694e45712b75705247747a724578783136592f556472324b45763139786b624a644a645042364c782f775a3248346d6f4a51592f503057367078634b79305069732b356f576332652f4f482b39654c50525937724a2f63566c453356677639634b78696b756251624a7067696b2b6c79535057304b2b704c4662664870434f573269367437342b7a35396b2f4532435a51733538594d61373369487a5443464a4a34346b424f4a7a6a7645634f2b337933395a7364444d2b4b63644958616c32646242496d724864567073566c44707041617143324a334d54773275726e6f43517a5a533772654a63617a356953654c2b5034766855776c4d4a57364c624d7756373873714f4f507259485a6b6d74616f4578783366365756667269766335512b306a6a2f59316953625450554d71376a6f69586e4a5979696a4c57466b595939793834394a30756b6e756d764e7a4633734451686e316c2b2b61646f485330514f54674d634a7556416661477169743738643579392f6b576a4a4175434e796b4d69577764564579694363757a703476535759652f6e2f304a6b4e4f5a544b454e4763546a4f4f41593679646455673251486e7763496c365347534c665134594a43783279502b4f4a6863436a6c4f6756494c6d50347a6e386b70346e3462316d48395479395076363767333238326b7535576658706463335163333533464851636b684d4153356f7146474f78685a747a6f6b6d553837774b63544d7a6135593347436e616751712b66696e44566c565566586850347332636272693262454b756e7a6a7554643936486f3943614f4873384d63394539502b4d37557a6679584158622b5036656f444c4f78346b703778713950504f6e6d6e6f4d376e3069384a776c6f546e56505a564d35504743612b4d4e4276622b30722f6267467a2f32637a336e6b48334d5a63315569497a797273535a77346c346870716f724772506f5734625656695642735a54484b357048396b334c536d65442f4e6a5454513935354239464d4838717269414e6842546a4476523938616e74542f4c636b717346776434723979706e71756c364a4e6166785441445772342b536c6457676d4f4e347a4d6c4f596d374f543863315449713449777a744f397035414358595866426a6d79796e746153714151664d696d692b3854625364526d6556725a365477427a5138646457336b4e6a683634507355617832636c3649554d6b6a7a324d6830436a6351304c57374c5741646f36423964496c7a46556e524c2f564244743750444e43664654423179304f794b4e54736d4532374c7a334d7846706171646a4c6e4d646f466c7075475869314177444e4b5654485250396e6c346d625445544f596b4d6163697253464f623233697335422f432b4f66525437576532306d6a624b302f6563784463767830332f7453682b616d78594e545143526e727872506d49394a66394f69775a366162655a705a722f67646c766b4779782b745a7858794f355156506b44465a5033426f557453472b794d5073676d4f697a71397731357a4b6d6c61456b6257754a6c53594a35753831354d396b6c583047647734632b5576717334736648585542634965325a3373446e452b3142352f74505741517a7333527a717a466c5654616f394350535a4d366939576a506131734d3132705652415577754c37624830484c30502b734777644273722b6236637a742b5741546e6f3038576d52436337526c6176345735376f43304355314e5670423969695736666f7836315a4c57786665465373686a37326e3241354d783034326e7a4464375a4e56364b364e627036453147504a2f727a79713043677a3372324b7157492f68665957394b533130396c426e666c433831644631436b705063436c4e6d7a4c4e647135702b77525a33502f584b732f364253497579635a6539354c4c63794a4d733866537158545a7964676b44365647446c2f596142674969333379324574444c595a755268586a3547614e4f5932526778434f6a4838756d376b33694a5431565a2f506839696c5544596c674b6d57667372727372344150663541696a624f6554617a59614b347135633753487570537a53376134516c67314b7959715851554d766a74626531425a45557a4c2b436e326d3550784e764c744765514b514c766b48312b795a736c746566625859745859685778615877305664787146683961506575644d355057474c516542754e4b56694a4c636558766b4f2f494a4f364f314a5670766d706e4f436c737369434f3247725068496c367146383163636e45774c4e536c5649394531665530733158576b4966744b6e5a67516f654d366c54653578597a2b36644742782b77354f6b36717a6b386b6b4f6a666e4c5a303561676a307468746379324d4e746868774454326d516a734650496f4d624372664333493046734857525537513868563933533064452b6355706b467139496c52304a586b2b2f6e54492f7367376b7945665a6e4c366f4350477648646231443177386d756d566e2b432b49314c4353374e727a636c47376f592b7554714a63584d356f664e676f724b665154596c50514d6c7a4d5744716a396a78726159726e784732694e795376783165503941376d4b377a75444f7158695779534d59783261447461536f784558334f427136476b6444676d3538706b383071444b596d73786b4d74656b473436523237354b6530354e46616e567833345637732b594e676971646b31586356725643375974455174634858476f72456e5970746e366d6e61674d43515332654f7636334e31466857756d4e4464646f37464e564c38306d6335527a5537547045326a467a3743597048736f4f4d6b38596c496b646c517238515943386e534a5544335a6a3961584b546666544f6869573561614e555547715637457247373431396b57696f48557141706530744d544f305a6e465133726756334d723162585856716d486d744173797a70653252736d5748314579373148555251736a4a494e7037395a637234453957427555795a63625a33625156436a725a666a475339495261457a464959777855453870517a38726c634d7a4f52356658536b4c3536542b75634e3471536c4b61326e3242427456334a74546b4f474d34736c6f7a51536976724a30617a72612f716b66387244704b6f2b6942584a6339663130794e556b30653034785341612f447a2f7744502f73516e50743374324c63724d63322f6c486b5669737a4b793836715250613869526554644a53746d67435a616e2f516c647748306d6c726b7553342b71636c4a7a793138736953354d3676346c4f7439335065317572792f50352f4a32396c56726244714b2f4939536e4730376f65584650487053726c3777456d46514a54782f5a6d4e6f4376355076397749784a74386b55627557547a42533373566d2b514f304b4a71744b5578343065556f6b374d354956554f2f53567239705757544173416341724b30375a355a6b45697a746b62756d45314665684c524a7a7330696b6f74307172553066453656674c3777535a5032726f6671304a70686d392f412b616c587a312f5a2b73695245396c47644957624d6b326a5368554e396e6b46456d6149664c6d6e33477244756173437337554e445a6e3937483337497869464c544a53515a6d76616e4f514534584d765356727877356c6e786644713636796a726c4b587465705936614a48795a7251694764507457524b7041506d31546376684f34737157642f44706746655868525661796e58745a6448474c7074535a6c4c553258307a4d6b616e5173416b702f6b782b354c56524c4b726e554b3969314f723643775339333569473674383932666c563071794c6f6634366f35714653597a336f584f716547702f5672332b5a7a503543684e58764943536c62493363345a66794b524451433545612b6d4f453668736b45536437374a477176486934785754786b544c416d2b46613175727062506e534b2b6f6c5354425a7434416e2b6b3135504c37416b45302b44567a796e506b79374e436a357337395161334c59736a5064635742687246774c4e5647614e54474b2f536c2f45464d7a4543324e6a5a2f656e453571424f334e6f6642487a50646b53365336557a6d32324e764a4c4f395979656457623543656b5a797259796f722f4149566b4a39372b6d646451716c7a6c4b646d4179554348324f5643364348506f79394f71534f76596475394353784d393777386546626e67334c66396866734a4c597770725449696479446d636c646770626f7a306d68474e44715861487836584c496f73332b506d78625553464c62497670366b2f563249327269584830574d55546f41564161304f645549595a3257715873664c4d797257316c786b7362394b46466a5a73333449627673706f775059334b59394f6f53343275516b314b42536555455a566b5948312b7a57796e5255536c416c6d31564452334d746e59764c4853736374756546794e4157547236344a57505877644c392f665a516e327a4f397639562b50366671484d6d72664f3150766e68557a525671305867686a573879354f324d3141697a366f424436734d36364e6f6872544f4a71722b4a5562564a4368664c425265574b38793073616b437673702f6a6577646d3263764368515652594b69794a474f6b2b53385a3875776b2f476f472f6142665471534a4159312b5036667148682b5047683871746258544c466e366375694e70364e68796a6c51614e6d512f3841664e635a776e75344f66632f322f4964517153615a5669594f63687672346a574847756d3954664a492f49346f6253395050484e6b6376776636316d62715262576c686c6f613866715a6f353359326e35427366796d5575584e375446505133746a4b7862476d344f75747a5248356f4671484f79792f4b72796c472b4f66736d4e4e4b335164594449334b5a4536493358356975756a58507061553973316c4f572b79535a4d3034482f306e6630436d33504e6c6a695a655432724f576c6d433156434c75484c6e664752664259634e46426c564f354c737451714a676e54546c4a39382f384148657a716e587a46697a4a56572f4f6f5279416378547174724e725a6d59737175582f75584b68546270732b64637269646c36454d66744977506c35556b644c3576622f41454175755772466e6535624930444c54516e486679664b516a51686f2f357176304a64547831484754736e6c6e62524e4f514b6d376a676d656a3250556f7763794a71626c77533038375539655444705a334454484c3233584f484b677a415662464b59456c37436e3557445142496e79455a354335504d332b674e346a352b766c6d52544f32666c56634272466c61715a7a7a653157636f6c6645592f526e4450484a4e694874617741536b512b734369653350553767794c50434947536b754c796f587a556771724c35335433615a595a4758646a2f533637544b69714d557a65396c79352f61465a634e517051684c722b5439663642375659692b4c527a75644c4a705258592b70696d3263675656644579614f5836556376654d6645356d656c44584c636254636b6a414748385333352f743968686d3437732f724c4c64484b6a74756d4c48703050754b4f4a4b6459756a306f7070336649524b715a53717834556b6271733332536d3445554b5339353541317634673157393239434a2b652b746d6862476373726f7554524a37744866525558786b524d626d73535852656f4b7a6e4c7066444c515874617062705841424d64487a496d5a50515373366b39476251564a48324b3354716c434f505375342f4f5a5165686370596a514c4b307363665570634152736b2b4b6a515237614c6c474733427a5461513033515a7a776e626568337a5a76506b7a344d70395536576a6e644c7376486e575a6d423239636f52465239545776486d3735427144476f716a77367a6e666e337570516b387156374b395037716a6e4c587a77326e7536513244636d67617556442f414a6a67702b594b6744687273436773793558456959593865364f517a564c4c39634164347641533955354b6e6f4a45766b42563178305332724b79554570644d43704448706b5145634c67472b62515833694a6f5630517050724c575079486256647745792f4e6c306c416c68574d2b54324e5036306245746f533471306e527a472f616b444a71433072316c414536396d4a393832646c6478476c525343542b7262454e576f3563394c6b584a71534d4a696d61626e787a4f557953595870742b373965496550783151304b706345705658536e6c54594c7142526e67784c556b76566d6e704b6c54696c7345614b50656c70752f386e36674b51536e35563641436830516643756b4e446d704971385a526f50485a4639455a624a6b7775792f35626e506d6c6e7a59656e49336e506835536e34357665492f574269695433736565654f6c4b6c6b59757973544d3439776c4c6b74546268716d303177674d6157754853366275464948365336704e5837624c57345031485657584e5438363944744d495a396645764f7652666d58456d7479476f352b6b706f503743514470757061744f6b59546b353346685345654a74753065756c724c626d464655425059684e766a73394352305070366f596d6b7a39435266486c39567741424d77787554552f327a55716f434d683276787543787463327469686d3473456b656a58337943364e6a51714c5176384147436d4f57727638622f724a4247396c394d435a6e4e644f494259644c72356975366f4431775654522f3653484a7158524b687176323831516b577872427450652f5966526a7256644b524d5a78337a5630325433646b68722b735a6745504c71784c5958625653344d4336713974457363675163727162326e35553234735563366d5841346171535558414349316b49415267613651706e3159386a33764476434e2f59706c56513967553153386c7969693136767236554961645533632b4e7638414731564d466d5554564d6a6a6e626a7a42524851356b7a687457496d63534e6b66517a77545038415362303039505041444330724a3870666b666d4274304a4d2f5270386f33656c763643376a6f79567a55516f586f554c7a654e4e695a7634706f48536f464853694c57335774496e64314d6a364d63746a5279345278795a666d567273666e4e474e5342656a4964334d465231665468746f36316f6456505142742b475a6a6d564c4f42434a755630323136774a6b7957637571316c5356617830614e313963307554637a4a71445761327479476256434f6577493170645a45696d696d6950756349434d3378503766494c34377845724f307557636466654d5a447177626d5662414b7575397138306339616e56766a344455305273354a5144452f77434947677738545656756e3773317075706f31347561575044485848505a5067327734754e2f47334b4f634c585a3849643541723974536c7a497943786f4f6f42646669656974744d714d3261526c716d4379354b686a66377070754d324a714e796776754a6850364e4673526f662f31454a456f2b476242474541746d466471576659787672577a36756671737854386e6e59562b6f3644547a376d304f716b307555756a4b65724e6e7439366c756e2b456b3849787a70706d68727a36772f67722b4d33712f784676714e36572b4c2b54616445312b63727a6133782b4174394e4d35455149585234796d674d567a38466250715755425534767555504558544333744e36367436396d77316d622f5a782f43515a4731542b6e6e4b6570376569583747723543342f774358696845396a49377955524c4a7a5338676a716f366d723265774e42385036544f48772f3166332b722b4962652b6c50346f65672f70536d617a7762306d774d48517a35706e624e685a3262624858624332684348667952726448526f4931744b727155725a5178427041556d3934555454557471587431734e6b30784a796e736f7238595a7a527675704e6d5570447261374c596670386853772b366830696d746139494d7967316f6f6e7667722b4d554677485655456c7959475770684d7254612f6b6c4656326e34367074375a6c725a566c565335636c667a74726a54592f4a6249326968774161574e586e494650796630427348367443335a56527a3554646f6266725a3063716a7a5a6b2f57764332563039476852316177646c316e4c78665a682f36484a6a2f79446a43727939723134422f4a48506e616b646c5758546e33534b723450636e4e746e306a7a2b537537324f37462b355741736c574d59783941336579656b446b6279634f7067734246793979523761394f32372b4a71566f66795764426232572f4868324d426b3077794d75386f366c67357961766d4565385379662f7742767546764453566554792b776c34747a41677938365a4b4b5a4733426b78584d7a74526c73377155547a6a30624f3576364b72346f394a664441544d7671317537523873356370722b303959446f4d4679393558513045544665696d7a4a67535343307554305a30715639524572345a506161575379417558374a416637644d626c7971486a64792b665146732b31416435534c49373652597a6d666c4979632b4c75796677786d36784e625a555679736a5a69352f4b716d796d3662376a7a72414a6d67595a694e6670434d756e6b73744578715a72506972614861496c364d3945764b686d6a545a537534706973736d5966762b44702f4e5037446f6334473941637a73705a634d7872524e3166317166626854757235704d4a6b4d32652f5056757973634f57314d386f64664d7068492b2f77554837774359676a4f72446c5651545037794e747567752b6c694f6e4249396a786f734d79544f72354f43766b656c376d4b51756c4d382b6774414438796c4179765035666350646e50726c77667364314d766e5a43664c2b67677a78556b5a4d71475847725252776e4a7a31717a7a7a31702b3753756d503465616159784e505a763662756261483259716c6b7455545a4b504969703145304a5679393865592f6a30544574664a7732466c384b454d2b4a394355764b6b6671554741334a594a574247617a54313376466f78576253536d426a6e4257776c4a6e727a632b71784f7a4e734a4b4335576b6771487949664f7636314b514d476d6c4e4e32664c53664751435866322f6c47506d61665478744c68706b7370473955343170324b4279355677457862726d4d7131454c645976326634665444764a673756374c644f6133574258506d315345344f4c4772663272732b487a48784b673649494536484646712b5530636c525a56526939576b54646e3054736c5a784b563573302f56722f7744706e6a4c43384e486b6971637678774937466b5674566631644672585472434b744f77394f764c6452776f2f6b71716f74732b517a372b76686359755239507035316a7261517337576438774f304d313176525a48464a3549566c6c4d79445a615554777152553430554a585531507a50612f33386e675639675142633158396141425a6470433653504e652b43546a2b76783755757072664a6f546d7a4b6e42666264536d5a7276664f37374c42664339796e2f414b58796d59574356646c66414f616b61576454566178655377314a6d6a4c4d42503051307779305a2f4432323761426e696e655364416c436338534b706f457063426348327064594a357a413030543636446e74554252354c69612f4d525376743656534f353947582f544c514b3944544a684f42306674674d416965314b7855442f41506932616373384849646d527555546e437762593464487043684f71466b692f6d36354d386b39454a505968396e2b366d63356e65376c67637a39353542307171562f4a44644357305538374b396374616372626b3747584a397674556264434e42747354637a4e6374546e423052306b7041584d6f2b594e4152793464384a4a6d5473666b55536a5646647a54735a5747563961575874376e36583861796356712b4f4d3170573335485257427a6871706d5637772f4d5861362f416a6470513135382b5638443959314c69375a7a3662475a36447a3971686630567a6154727243543878706d64395761592f6438534235784a4753616656565a69724b5637453054623962534a47496975766e4475352f4c6144644f4e7761444f78543561364a31394c342f774456375463365a726c547837586d4255303164454b3558353830493031684a734a71675832536d694f6e4e6e4b6a5a7251545375304f366a346946436b7550334f3741706334645237344179454f506c6c30354a396655647164706c63706b394d724d474d3965636d3930686464664a5a6d4d756f735739334a432b55383333652f342f6559582b4c6e2f7743502f516b30556d5a7352555475676769356439366564444f7a57726670564c4c5138677637504e44797833313539714f6776636646483033633666666c6e42744136517158767a3153424e705a384f7039324d704154704a566d5a4c6c336b765173305a2b4e58474c683041714e446e4e41394c6a35426f6d447679415650455a6f57556d74315643464f747833654f32526a6e66794d58654c737431444a4b5159535376736457523842694264395a4b6870714f676741412b5050346d74456647546639746a42676d6966373373624465796c443879756a74612b4c53544f6e556a6e79494650513432357a6a4249526136304b4738782b657a5255784d714a7076384179696543724f2b756570645564716b456d67696c6a6377786e625174535376622b70717a6e562b353439727a45696c7a6d356e62687a554d66496c656a477055724a5838315a374743387934444a662b76437374696674565344496d70425639417354376a6a6d625a6e6d3665514333354b70375035576130504a6e6f5758794c717a616d3364476a4f687253326f6b4f45685432376d6b2f682f716a32676e67433659436548394b386558756b4f4535394b714b45616d66734a50343336414a7174516771745146356568796b73374e736e55764e354839586e79715a4f6846377150737a522f4b6c756a55517832594863726c624b7a56714e6455716e73334b554e445a6e7a2f6c6d613966424c36724b726b7869354831754f3437367a2f696a625331306d6e377a31344444516b4c59666d2f784f627177614d5758326a6d626f704c523046356377614538475a70612f30616d353944307a374853553370674e47494c71483066365272646a7a794171733545546e51746a44506d79716d386d4f78543776356d77356948557a596774714e645a2f77413339376a2f414a486e372f655878485050336b6447676c32446755776145744436644e386c4764385767764a3064414d6f6c4f543850304a34636776316d363830502f594a6971416c6d4e7a5845305346613035327445312b596c544c786377464450347650654f68712f64707470447172574b5a396e4e526f5a386557786c4750534b4a33635770744c576f63615a6e3855385646585a62774347537553507a585a72737a61352b2b6135475254547366567150434851474e6131737062506478734f7879576461364874397a4b546a42787050397352533434384a702f6350647a4869706b36323263394f646d494d2b645964454546504a50346636693532526a71413751574f683775633633676e374c4576616d796466782f30726262387041472f47495a725a55774e6f2f6c58613658584c6e72727067736f6c796f39664f6e2b4e4d6a4b4b44732f6b6e45344339687673536d747930674d334e686e466e7756775a624e6838327a764d7176694479494e466e516e704971476b696c31553153683935614257667669696b3968706134544d6e456566377a31344247426549572f4d76506e723748415772794f73716d39314e5744733658546c3031527a547579682b46335870705653414a393035416138333633394c627476483138777a436857307166526c526a2b544c6e37447a4e37794e656a71354a636d6c566e7175354d77466679536d574c6c5a4f4c5a77392b71326a2f63736b715737486e6b4e74544b4a396b47556239585072544a5368356a50475845746a646e4f6c6d3732757333757a56727932424f7a692b6e3966367867587a4a544335377a79476456334a71522f69634c4b54314e6d684970553770644336706d6e6e736f307056637a6c38584b767063304b4f726e45324537356a564e4d3533796b2f6a2b6e7142694658412b37624f626c7861576e4d7165456a54677a496a4d78426c476335347571646e717a3030653944562f57585232672b706d574147352b54372f63534c36366c636b4761625353522f476e6e546e6b2b4f656b3079712b4b692b374a63774e42553637484d486a4e42316c502b544574577555427a437859306d6c4d35367539707275543761745758496653334a48555a71527955484d4d34705a746647664f766d392f375330306f364852354d644d7861593641653378374d6e75416e7957592f47523743713870494c79683867585776516b6178633173504c58615334317a6c316a696334477044374270492b30464f2b336949334e3434654b462f504859364b4d304f6970355162565657686e6177395a4b79696d757466384132526e7246665a6c474d37506343784e66416d4b67625266727567484d4e757a666d596d724e5347416e6764797331654f7956412f7741546f50793155366c4d6f314352626e79366a46766e3472374a45745648535437515543647536497867484d7037733353543037744365484b6252667a6e3757696c69304c544e7a674e6d4770634d4936477463584f4a593568705953474b305a6a5039312b44362f6f4d757857785738654d57666b64366e66644871616b3169464b4b785476656c6f542b314e326b5a5172647768364873587056544c556b50724b63333238516c4b7659576a67794b76733772416d6f44716f6e7a697142615a62417a5732537874706c2f667a4f36516b6d4d2f6670436e354234487a4f636e6e396868426c5a324e616d4c6942476d6132794f53664d665136716d5a575a682b3072712f774357584e49417a78703450486d336f6637365a6d4e2b4e5264632f6e39784958365844726d38676f304e624e5a645046614d497050647931466f4c5939545179516f48343079575261314274706e5972343831545270476a33754f4d546e474f496a724a49756c5038412b743959697a625a6c786454704d6c503333566146694530643751394778507a51715a30474f4930694a73614d6870475a3759426654706d4f6c72623150686e6e4f6d5071386d58515a6f495246515031316b43736b702f74642b4f6a3242337054476b3270724d35707a3673466a6b71317070306b687974473753645174594a6b6452325347706a4a366f43437a6e4c45754737354259304851683879656a39596566595a5047732b5947556e546963763436423878612b5a50436a79506d6d797530574b3046374d4f4a586c6b735354517169354b524b703037546c43655a4c754735706934326e7a4164337843456b357065434975746c6d3763434568466e5a3357504a54334a75617a78324e2b70626e75353855546e704853446958482f70595734477a77316b6b4e5332715a78414d71685a5935657770476850785969323274712b4e5a70556e4f3452354661365a30326361546a4433485333505537685876714a36647a622b58654d506337724a6e376d78684771654275646d4d6a6450626e30353030734e5851306b4f4959324d532b4d6b682f6c383152425456564f374670696538534c30703869683832385531634479434b4c786a79667758736d5235686c55555a434a753747553562612f493158664756377376755048514230394a4a44377a52496f536238376c6f7445784d66454a6c757773537a543136764863396c724d366a4a566a6355543765646c47796252756c7335342f527957673051796a496f574f346e2b53435a552f33756a4e2f55616665507261594d71644c55417451737869646975747a61573530654e543132524c786a2b3751735a6f556679354e4931646554356753625579676b703275333559445a4d2b656e6d586b4d682b76526b7152442f4d4e6e6d357135326a497548587a35655532584b5652503841616a31306b545a556736647930704d77357878507a2f623741746f77306d66316c325866486a5836576c70306d39303735582f54544b4e6b44716339557646755447497045786631715a71515638665745495670326f43632b5a73707659706e386a65376552705335574f347378384d2f77426a5437704d463030754f354575684f512f5033677855423877664449416e51314e4651776c6b62425049712b394a3275437250747a373250686d7430393266577a574243326f56314e4a2b78517556597a2b32536234574c372b6862396a2b75674a7a654a66482f47726f51575775714f2b79482b567a396a536c4e394e4c4f785236633839553075614c632f5530704b564249734f73536150746d435a672f7250336e6b4452766e6a504863724a54566978346a737a50796c5657466e3174704a4c5a6d61444735725a7a6e6b7371597a2f623733395a2b375059516d6e744759563163444d704451482b4e306e525234336b686a6947786568506e5135744c4d2b6634383839526f61424a314e35372b753437677a7a5753706e64784a747243322b33694b5a3831394f636e7946576870346c4769487732712f6e4b375733592b614f7078437875385a326c59766a764f364537506d3150306c4357716d42782f4b516a57727172784f4f57334441316c3869394a764b6370386836727443685a6d4e364e7234717874736a584c735a77434c6773704b65666e4c4e6175714a53796178394c57714371735073545769596e704943325938315a6644547a506a6c67347a7155367077354c38786e51386752704f376c337a6c544774506b524a75363556446b4f6a70392b6c535a556147696d515171386136764e3175737237777174505156446e5872434e4934384e6b656f744538306535474e574b4735487056665842676d426d614f79554e63365a6f55523552346e343378544f364f456f47755563476e35446b39344a7a5a536e655656574e793954704d424c6c4f556d6a767738686e6e6248794b4469326537374e6f746235694e72785252342f4a34786e5a6c545549683867686a5131674b5a4e467a48386958714576577a74367473744d72693250394e4d345542505a38794a38394b4b4b47547535733977667759724d6d4b584262424e6b6f6b35573446365756546b50796b737063764751303334644e6c47717479646a4c565755383548504e53417a554737332f314f373473655150342f6a32467071356c64786e36383762504a4c61575069377261436f687a732f38416b6f73726d72493474425a334a486c692f6659366572566638334c3033396f6d724e7264726f47666d6e6a336a6b754d5554634e5362356149703668565565544479476e55314e484556566f396745382b32496444746b375a4b545459746e762b5a49633550796132744e6f3435794b723946367150785a3951426253324666682f6e5376465a612f4c7164526b71764539523957787967542b5857766e64522f446a4c4f78696c42496875394d336d5941566643363176326c655061714f3358704235384664647647375864316c4a754b576951516c7a37644a746d6c75472b5a735336686f714f354d4d3154785a38674c42424b625a53376e302b6138644a4634624872763448345a4c34336272393039386649496e334133427848614d3241574f706b326966786f2b583430307047777739786e4f59544e525158325456386c59724d2f494d636e3874505177704e413650505564486d624730313035506b45526b4547685653794d677468467a72754d7a7944694434317746716d38324837374334393362505a342f63436939522f5176314e3066497354784c79426d35356454694e723078783462387155766778716c534e63665239726e4c6a68464c695856796b6c704e4149614b6e6d4462657647597867636d2f4f2f4759566343533352306c475a61576572556e3772616c4e47584e733159394f687277716377515a306f38756c614f7349715a35766853357477426650734b3330717476305374386a3150474d38764d66414e3261367a3144394e636a2f696e786870587a6c6f2b585a57616d65506b4f70383266596479767370464a676b564e6279786a6d336a4675764c627846592f6c2f795431432f486646382b394f334e3869386531744c4d322f487263517261504a575470676c2f6b597649357752494d2f2f41477066694f5248414f7774575a726b7a6a534164747078692b3233654f575066527441775a4d6c4b3336694d7057712f5a7a744b526d787361367370302b4732566c576335546b31476c327132705931547a7a796638415a4a3034456661392f65655168666643744f5352462b386e5856422f4b51794979473261464d79544b776e4e63724d35384e4e576652446a72397650746d52783266585452383148762f712b364a6e45547844536e784457376e6656304d7a53535878636876466d6f47706f5459726142715a6f326375685943383063506153765254557a7150626641354b7a756b56332b7041693747793437733563506a642b686c61737444686e70755a745a3873446a31733962314a477a54376e73646e7a3646637152303130744b436f427047464649556842505576775673686b32484b5a6d54706b564337556e306b6355475a354a5650663841486e36387577746d6e6d6c7065515976415952316f50332f414730304135466176364457742f695935326644554d6542307141666d632b4348734d5933633064434465797a6c2f6955756c7a304d35696e665130617041357167446f4a7850707074767434696d642f774163574e657a68534e646e704369317331734b5755573076302b61576d6f6c4b354832694842567457632b79485470366c4b306f6367564d376f30624474582f617a303933792f7742503638354856615a59763878412f52616c47706d59796367552b51616c6376786b6a2b5031454979526b54464c33366e7733787a4d475a5878547034766163524d2b4d2b76376a306d2b6c634a35637273546c48796f647a35475853577a6f7458727a714b58503578655072412b563165786e2b514f6566772b39497549476b5a492f7a354a3439666d4e2b5041504631726a786c5438797037364d3258673135705635774f45477731584e582b6e433737452b6c545930464a6d63422f574571756353336f4a357865574650424e5a55694b5745537a3557736d746c2b6e5052634865352f663358496b685737354b45753972466f564f4952394d35784d706d43436d706f664255584f487047536f6c784b596e726d7157354456336a4e4d6832664d7a537346693072344b757163482f484b2f335038413866304551316270616c747469354e5350564e4e3651397961416f35465671634a44454d53747a686c79574d6d36414a467777417468662f414579787745707150717449424570317a4c4352717054567974397a427a556f317446745549696e555a47524f5742394c324559764d6d4f2b5946675a64624571786c536c324a715547694a385369695471324447744356744b62713378704152694d4f4d39314b7659416d74337a4a5949554e357035314e45684b4974554a48433679765146467361775a7953734f535136394e74416e434c4c614b464f65504b5a6855446244585278624866314d524d394948506a31443830387a383875716f77544f484555795a656b77314b79364b6e78365761752f4e6d2f6b62467870573056726f61776554725877336635304e7244746d3159694f6f386e5839324c434c314c2f4b2b69463144483977384c516c323747614236324242326530705a6849584a6f665136596f726e6c306d66396d6d79644353476d4e777a656837504556302f49556a2b4d655a3638654337554f7836666565545535483771727a504639442b5330732b5a67706c324a7067626d33762f384147383863746c686c5577484953476b64414e62655a307a57314e6e53315233733942507a4c4c78354f566e2b53656c49746b6a716b436a797a7872546c4c507635485936514e4f724d7173417839383833556f6c6f476b53757a323066754535334c35795730736359746d427570346c2b592f69504d767953663841384139544b6d57536e584c676e697a36544a35366136446e5853555a56326f4a486b6b38364f436a684a622f4143723941682b774142466c4e4a3654614246764a50792b382b3874334e667876306339412f4d4c46496f5a426c612f6e636b5744347774576e5634374e48354432364b3130374d7650596d71586f7a644d436269482f6941457949725254455a74595856364d654565722b4e6961486b487162744f753875716561736e4878716c4d7a4d534e75784c6f51312f78594f59745a644b66354234414b41334a496e74534c622f687062626963646b624d552b4d792b523450523263624e6738656a366c2b56584a587274666548557975574f7238692b305457636a7179795a486232384a3378386131446d72614e4e4e32625245635248616e305a426c446f5a3267594f35544a4a71465564314e72676e486b72764d6968633771366937444f7a51506b72666b4144636e35656b3446334578323151484c77754c5339447255547a746e35446b757a30364433563030646c78726f78732b4c53314c7032396b3444502f414b5445436e61584e4a3961646d4162576d2b493271314f7838702f314545764a756b5665534b44704e314f6852734a574d4a4a753070306363614b3064705170774d35375062582b44362b7045716535302b6858786b75546f38307773526b4358425841336d722f46346647766c346c5a554d54476c4b663050317a3664674e425031316d2f2b73782b7a77506e7370666645476a443236324f632f77434c64547030325454313555785266782f6572324f554f79317349616c384b6256424b4b5a5465382b4137784e48512b6a543771374e574b4c764535352f4c334d6b6f4e5a475856383065547664334e5852705746704e37377177656565744c656644796a2b7257322f434a584d703268324b32536a356135387a7565494e436a572b62724939433235564e4b6e733774443066754d41316e4d6f692b776d63452f58365371395049664d7456476d6f535662335273796b575672596a55376d5533454a54306757594878672f4e6a57524d6e2b526b79776363595530482f71375447483557586f4336714a503656684c303576326d697374705058554f48327871304357395777706630644c6c504361516a374455357a6a4f647334446d5437557934314f437931466e5957384f5351306c39596b30504e2b57384d3561364e4c2b507a784a3350625438623567424267505453304a766a7a366f2f7655696d31715652786670736a45585a767857702b61554a4b72793142594b534a5a7a4e4835334162456b4641534a5a515445783169512b5a44564566436c47586d2b6d376a6b6e39536e39457250316f31432f343558456f70316a50517377496a36414a41684d464733522f6f434e394669456a6454384b766e444c6a75316f2b694d3945546b2f794136664b4e4363526e54502f774279644a3173623750686c3434685657624a51567a355761457a374e54546e4c53734259634e6d6a336e315072756574684d4c516e36746e2f614a61684833546d72715a4144333961304f41394649547a787072635336744633644958716a356442566253466c646c4e4f58397869326253366f364337794e51696136573942507a454878416e46455a3052526b31536d386c6d356b5668746e5871724150707955587261613534307a7552484f4174582f414e7766654975575876615267535531416a7971314942314e53496a47685a566d704d696865756d773770316e595859365a6666312f77683166325445412b566769414f4653733576614968305170624c4d434f446a5a30684443527762543534654e544e4c596c6466744e346953685649596336587947776d41616b2b4161616b335332434e71516e697a7256794b6147664e6a4f7a2b6654736d663369306d6d65676a4f596a55435a7630736672724768674e4b562f587335556b4b314f592b6472446f786370306a616763756545547a4d5a6171432b5750517559344f384b37696f79556a362f38416851414f5a6f7a7a5a366c776f4b346c51706a646b386f6e58567a72315a61375968664b3858757436356b2f7659337330334b4c434d774e3356642f6f4236766670352f4a71474c76352b2b364a505470346e79386e397a4e52374a45613054537131677953754d6d7034596b5a69667653436e6457442b4d4c594e4e4863713679516454707943763635565a2f78585244586d66426f644575544a477578627a5361466342526949416b41464a674b444a66705755454b4f534d6f446c4e4a6f45434c53706f7458324e7372653535796145355a2b6c5a535272615337782b583744352f77446153514a6f57326a50416d7a4f6d46654d646e4b586942755167633456507059534a326e504b3272534c39435348542f7050794478553366327745637155456a324b425563395175314373646d52474b453868576e2b58564c506d2f744d624230436e4542344d784e366367305355386f3778594f6a6b66397a50734e335937714975314955775142466361327a32566d5a5a516d566953477063795259594767503038514b78547a4145614b49564a526d57743057527730552b3751464d6935763471655765633054446e6531722f39796b75583855344d584d3857554f44334e5941474c4b426e6146495065756347556772744767336c4353662f4150466a6c7a3542564848634c5076444e3754396f4a6d514b5763443432704135734f736332497265356e61657a5574585a326969426b725870585170745565726e6a39695a56556530492f5a4c3367463654583850755744516552567a4a58734b6e6d4b5570374b6d6457325678757252384e537a7078304d5958783535614d564878695941536c544238762f7448763941355769536637684d73616d376c374c4b4779453062474c6c3476556233685a31484454437578632f7361584f66357a4237462b38754741665646434b4c4f773872726f556f3770346b51674d3253364851476a695a6d775743417853305665336e6661627548535450304173542f514f6332674879425078726d752b5874636450572f5a6c7136725675574845742b5233756d345574314b7763366f4f4c7a662b7954414a334a776347524e626e565456543950536c736433736930364346646b517669615946757039777535483866662b51494f465a38612f61376c4874427764436e6b7a5561505931557258654d744c35497761383079735638337a4a6f4a7a4f6c39634f64494f75496e73377a356d68774641474b6e6a35796d6a624e53322f38416a467933417968794d773631735864543074564a437769356251416354774873436b314a34376f7659414d623253444d4b5967755944355a704a307930514b7a796e3647665964566339344c6672547245632b52592f70782f58704e58464731767672424b326e343176566e6735484f5263354974764b65685477574a656775397159456a6b73306b724e6e364630352f7741384147527a665939344b6432475a79695744524f62704d5443694a6377555a48416d6843434b70432f6a464e43644370622f6b3458523530307453707a4f7a2f57415048326a4a48343276667949576c613454423970445849554e705532396c6e416d43366464536d644469686453435a4a307659465166304249574152646e51754a545a6f2b685a50455a71544e4c45776d3952783961556736487674684e5a762f774d4b5742776543667349414b4d3257646c304d584d534379656e515939552b647a64755941505330633930736b665075573830766f3936307846584a2f3049397043656c6a6e555952614654422b5a44554e6d34336b74554930696f706a6f70546f5071586e724678707856642b45706e4c48326954757346426e527a33674b376b324e356e3063624e4c797a566f5062524a5339732f30535a3978717775524572764538537a48596b566934544f4e482b5a634551414862717266594d3636782b7870646f74756e5a5056793863314e615a344955307a356676536b64536479414d68704a7177423652374e312f73436d37765350786e517456703473396e693161507356396e6a6178506a536f71546e307149327753432f6a71442b52684c397a4641314e37705254374b5146567439764555397165462b6f486774663841487079716d7259644c6f5338623447646b316f6f474f6d7436612f6d587a764645794a494b665352395549456e6a6947336b6c3938594647542b434b544e3875675665674566626138796261304f58747075764b77744f6d7651347443626d54344a4f304764424855674c6e7469364468397172696153654835396934395475547a615471324e694c43566f69452b69756a626a716d6166777872504a7a7759646a324679704d7a45775168574a6c2b794375364b3467536e4f774d3543744a307575362b776b33686e35716446386e2f5964436337666a4c76367631347748506f55453543564a7563775a6b67414a70597462623835457757736f484b392b696a5575586e664f792f545871315a6d584e62477a546c474f394d374735627530512f59396f4b557450316759644c5571423964677933346f58754d4f7136795764367a6a6e664a573545394d546d655339566e395638724943345644714542544b4c514b6d63724a57705545797339507641593547514b5a6e56633248773078706e572f506448586c42687a316145326f6a543758476e6f783878475a7677304175663370674a774d54384e6c623941376f4b5566354765564649774b794856724d4a6c47674470484a73676447463941667874693251796f4c6c44707a545a47707172442f552f454164346c3158314d797275584a506d43765a68324c5a62673731517955616b4d464939466448794b643775584449394c6c4a2b454641502f30772f44763563684e6d57764a652b722b51697a596e4a5a46496d326d666a5876304c6b696d5046726f4c69364c464a485751316978704d41397066474b6a3464743932376c786a495a765178425668433334574b5a6b35757654565270775370665046444e4f7a516d74544f4262417331595263533277472b6e4e476e2f56394d707a3042424e6e6b6261565035305a313439356c3761755a2b6b396930496f367046326333707154714e575876355838546c55756d51637a5a354b5a7a546e2b7a395a4253794b3274585754794e7a5271307375667248754c2b457563485059754c374b4a36576148785a36574b2f632f77446a3739564d4a64655866672f724d45536a3170532b7456493732716f72476879495532645a5a52745476676450636961784b7859783273583861766c4561446a4d7746416d4971747965663245683733544673576257337158314e2b413138746f67684b536b717057526c374c447330505a734f7336376c6132695a7a665870444f6a4132757143656350384146507039396339636f68445371794e6c646a556145387a444c675872782b44596d577569772f3841594c534646497666384831306a57483554776d4b45614a3668764f6b75766d3570335835767751325751477554526c63796a68424f4c6850356e435a684e78594857485a61464f766d4747636d55544961457858586173656f716f574a552b7a52702b46496c466f4e7576616f726c7345703263377a2f32536d50564c57423247415a484876726d484f597256565a392b704e5847535a2b64437171466c566b364d37732f77426569567066437059664a396b7a38716d52632b465850666f6838514838774e4e48794346504f574d3541785a3077566f4771676c6f546e6937676145717036624a326346557a67656175682f746e4e6f4f6e6b42494945316352746f6958576843325877745a5335387330615a36644247563965647a50494c50754353476d4855674336576b67777370716f6e6e76356368663544734334506d30473338594a55534431425a4b772b785969524e4d6531715a6a70394669614b6d712b7763377a646a67644467636e366777474e4f5732756b4c46795879634f6d47702b57727135556f304c487571612f666f356c6f3756376f2f35593366594c2f414b5a4f476561756b7a666266627845305450315a314c5a6363654f464368756948513470705a6233314d76645975526e547a61463054734f64514e5552497137326f2f5970585271487337724a7259745251766a49426c796e7465785257497a5274306b6166545670696e736171474c7a2f6735503335697063494f2f58505a3777485835694f6f5a3353646e315868466d754161386346614530483771794c5a554f7959564e3148547458375339376a2f314238664871452f384167475679366d6e4f444d704479577a4c624e71543947684266703741354e4e7a502b796f716c625843396e48685454314f782b7673413079446f666730653871666c347730374f69776e3875645a42506e5630416444736b4b6d57397a56746c7335744a57316266304e4c676763536150734e54536b4656654f364b6c4c583546326e74613535473879446261575a324b616c3170655057315a7a4f636a5a58556b75474641444f6c4b666859683357562f5a5a6d4f6b3445336f457163744b565a4e754d30657a3952307834723661625a6b714f6d55526a6c59626a314e5a4d366a50332f6f4b666c56377a54636c6f53474f7076306d41707939477638416230395733724c4864764771786b64693544636e6b4d61575545772b636d5545302f31774e7a484a42524134586e693562324451474b324e5063453276537a524a4b494a584f547253764f63616b3466567933444f51644c354f6d6b78426a6e50622f514a4a763161306679664c6b30795073784271744473357a4e31486454787446684c63494958316c6d636253364a7948394d4f4743514c6c4467577a584976524d32357161455472696a304855424b58746251327157484d376c4158472b355535564b65497355522f4b31774b7336436241444e546b6472376d545646496b41765674476e537a376a716d73397648484539773168504f6372376d557653704a2b326c4b326b6e6e46684f426462736979315843585066786a484d476d6b796764394e54614f31575a6443505a334a2b6b3461462f4b4a68333537424d50636168622f514a534539397a5870537a4d6b76716b4772574777655a2b69755353773272465665543836382b6c794630634434754139767a45436a3467766542467176724b64316a355a6c7a435a6336334d616968695956756e7a5a312f513976324a776c38672b7537334348522b5a7155704f687655674744656f37723032503079534e7557556d566331643033625a686d3261486e325a46512f77447142357138342b6454504f30524d32534d4a33506c4d47394d732b664253764b6a415a736932744d35466f517966447a374e43395759614b5a2f6a2b6d396e48666f75443057314a57522f44574853414d3675554952525164633659696d6e3559784169683174697a6437654b716b5349314f3931476878794f2b772f2b67593073614c7845674d67706a72355654335a3759386d567a6b352b61524b4a737a48677473374b6c5848334d57744d35663574374e307a5433324761532b622b675a364932444d384a7a4a7a68663756643531417a4c3047542f414d6f31374f414c6c5a71656659684143375537346262486c326a32434b58416a5931584770414f566857776a4b76362f5753367662333576333945477536686f2b346b726f6f535853564f5359464362766a4d513441716232646d6c6237754c517542314f6c78613461715a744a3635796b755654796a333265326a4b75634378366641396e506c2f5a41767167542b3365766d68513654746a426e314b4d3458712f6a5a4d7a736c3871467441487a38695a6f55304f6a596252396c62662f636155786e2b3067346a55694473307354625176544f764f53754b35486571374e386162366f6546744a6d355238642f77436734506630584459314969663655594e71714a6d665973726132465549705a454b2f647762316358564e486250324772726675636432706951506978706a636a686f5930584630427262616d624f62515575686e397269355a3259654e65706b6b39736363353050526d395852473572456d3071765967785032706f4a337342414d4b3763474b6472314e7153692b616768646a5a6b745030526e30566e4c566c6c707763457664715375366246754e48765477314f703976374142467456452b6b535371736575524d755a51306b33307a46583431326a545a385154496238677259785043366b6a523836667566483876746d6f44384644304c3676557a4d7833666d72692b534b65374b6c306f654e54526e446639646764636839576c517835634d5a47792f2f4145354e7a37794841444e776a6d675144794a3944344d656147356f4c6b3432637179633254516d3072574c6c716d6c5837566b62507645596830436f5a78344a4373504a3979704d327369714f46564553387672616b7744532f76774b56384c6f31776342587a4278326f5536334c6d39787046784f55446b6932316137766c41463575413359767971664f504b4b6c6337466c6146474e695a425141655a46592f517977386a6171686c55754f794f477036793430654a464955306e30717069564d7a6a7058487a466c4e71706d7873786d633339757a2b57364d38594f6a30702b7730364337386c6d6a524c6e67764e6c4b73614b48554830476f643831774a523951674b67514755374b58644c52756232363162556454357449766a374d66695953374532326458626e43763453353274624f4e584576356a4e5a475451695934726d6f6f57764a79776c3131494655634b6b31613464667a4f6e5747735833684a67766471456676533444664f67587a6339347a4a2f71322b3369432f46555a73306c576a6d547a5073626e4e73463636533733515a4574483165425a596646367749536b333836325a7a61457042726e4773324c714937646d542f432b30726c667a576c4b517a7939786c67334a3061727268697a65706455366e51306f374c4b765a77665a2f756a533455764f6669663674547451493053775879594c50394e714f33526345656f32394b653147616e63325655502f6c4f395459634c457236682f484f4e634254334f6c535a4a50594771347267646455694f6946503373623737332b31464d61526e5a394b6c445a5847796568316a73316e5649494b65753161436d46542b6878334f454d39624b704d69616e7465646368335a776b745667616d4a797948556a6f6e5378554645376e4d597376754f4639514f4c36782f434c536b2b787a6f456c7a6a4e59344d4d39457054396874766d574f58596a6c5052756e3033705a6b446f64366c775a7158652f2f4147732b34305065617a647a36392b4848746559734e564373796f71326d62464f547a4a7a705253786b6e464e556a4d354f4d53736c334b467671756e656c64514630766553577a4c4e33776e416255374750504c5034384574746b6e595a61394853376e796f4e474c717a46383938617545534a346b4a6453774539435951345a532f454d762b6735784f4d34344276627370726841663442385548325a55537a43426f545166332f686f4655636d67487836786a437633473450706e564e3879556773792f63414e72655347703075425a46396a4e566b363156476c43487949686c68695971534e3031734a74712b474d702b746253744e464c4e4a787a7a4b62524e482f55346e457a335149316c38505771303235776972705564627366506d564650532b6f6f5855506e49614668484b4c50356b614c5879456b302b77744c68764233457a66745341307a4e7532635336326c5333685a49703636366b534967706c4b6a4b64417a5468456452674f6a5751726f5837615a336648305641616c2f77425735615434794a41714a4d6368713479307a61464f545439633677677432734c5171754869492b4d4a6b4d66466b746f764f67792b424b7046664e31596d764d4d62574f693151342b625571787579774e434f5a564473334b2b43776e58336330756c494f3171447152726f4e43756a53346e6453344b544b6841322b44362f6f41642f6a764a55305137564171486b56794e544f5a444670546f6d6e505744744848366371587a304b5a396f6f78517a3562543166747a5062375443653033366259474d587a543346384a736a68436141356464547638415253547675486d706262536b4f5a36536c7258525973656d716a3768674245737834317164776971636e516f7a744467513574785661574b68634f71324a637330556a4a353361413142704b4c36356b5662487a7336786c492f50795168346c3770725461767a4166617a74643265325241615144553244346247614f745964474a5a7979724f6a386455646f4c2b6237377331446e38585a37687349472f623931646c366e5a67666f4b7557616b314130634878504763355448596c387576655762784e564d7148424f376f6a6d35365a363533632b345861492f634d7676527871755278782b663665496c4e3955656a553561435434363076696f70667035384f6f374b694e4659777a70627862763438666d5a6373772b546b674f7056784c314f4e664475493974397a2f6942655262394a785a5645386159374931785a724775596533716f667a59534d653177324d576a6f314a4e6a7372535930365436452f4b317a6a6d3667453648587a39444c712b622b4d7a6d614e41584964524a51724f4b66536a767061355644472f724e4b654f686c76744361656371514f674941393431574758676e706f333142596e794479584b5a69656d3173666273693662524834664b5356626f61575672547830616a567038626a6c536c535845787855687356696a3679766946314c5778776a714e68416d78594a46316d334c3756484a666e5235564764744167437a565a35314e674d724247796562485335795157796669532b59666854544e305835416e6c3537583648386c4c484b5055304469367441636e765a322f4f6b57556e314f497a364f726c397772466a774d576350687964443567446b6b37707874376747584649334e677a6762646f396a2b3979336b434b4d6d74426f5856704d62532b4b66724b7142684c504679536c4a564141414f2f594f5544702b50362f71435756433669624e4c6d5a70665a4b697271683631525a6b4249684270374649736e37396868445a487854702b743538522b7a36732f734d4b4b6a4e56724c725635374a366139446f55524d5a45626f42626a71704a6c4d7039524f4e3956544a39434d58305566573751637a414b434d3150634d38617a356876704c446d5a78562b6a7058765a5330352b3257563646392f467731542f79623673714870354e552b4b4f5768745141502b41664e7844512b4678774239754d30484979447166707030657a6941536e4577547972474c445056507378736432484a304b733246504750523849732f557a4766584c32424f36633775384d32747972757a3564462f794d784d3577616c456a4c4b6730757a434f6139434c655a35466d7a766c73724331715771755859347848682f73434f6562746576414e6a6b6c7a47646364562f43477353376f3531637937335a7055366937487857716358574c71583862347058634d3650687355722f3648365673476d4f476e4a5a52586b5a4d3133494d37734f64443876387448526e354f48483864636537486b7272737a2f414c45745643574a2f77427a53325441456f436f4f305a32322f55425a32366638756e4f784d6148472f6832612f3841456d4f5850544e666d5a317051352f796445706c5a4f657471624a372b6673666d636d6c4c753843342b425077382f2f41442f37422f57355159394f4f335057784430323361334a3465575249686e546e376e595a6d5844586f4c58554d4c43557565564a4a5a795259653056546c476e336868493864536e4e57765850384168592b77386e58465870745a52704a784b714c617445732f61657550536d6f6e462f5a4f2b3637346f776b464d36552f743773656551517a737558483075325971655454632b655639714d7654365361733862686d716e51706e4f6a4b365777714f474a457076762f6370724e715a7576342f703667664e4c496b2b7433565563527a3952747149596638417049306747754f767835694a47696d4b676771676c5173427457686e5a71514e64417a4f494737346365516a6551564c6552365052624e6a774a6e476156307938586b545935385837386357657a782b6863613275715771726f636d6e5947656758664e505a30314e5475424c346d6c2f4864794a4d54553064474f524a366f3557652f536155675352346e79355a73353953463146416b39794b614763644d71663741665848367a2b5036656f4746747552646966566b3750713141692b74436e5236635066755a6a2b4d416d4a6c537854716e305a6c716d646f595a505a41436e3338396e2b446a7639645058334561504e7943746d6b7a4d337447746d6f6564464d6a70687632615034393969426e764e663139676e54756f56375a6d4d53377359557053306566434f6746346e6936303434736c70687270304731364847385a34356e79766c37705761755977655a583867723350534e584f4d2f617543644c5a70412b414f396f7276723467687a4a586c7232735934777a44627a4e59714769355076725a392b583235756341553852725571484e6354445431303839656c3961676d586837357241307847506c467172716d6f4f445352507162464e746859504e535779696768567231494a7566595031317a396d5550552f365867397331484b65434152475858304d796d2f6d586b72676f62727a564e6c3065665556506163672f7741684a7135334a5538376b385a70575856477745394d456753766a6e4e56524d5250574d6a48784f4454442b506b6d33755a716f63334e675a4c644b3752645050727253694f616e58326f78376e6b354f4b347553322f57346d6938443546772b4566395676325a45762f6a4c53723762586f63596c307a394673356a6f56646870572b4765764a5658384b6b69744b383953314e726461514669433973374774532f74685466716c3549657035696e30747a4e44677861306972505558796a785a7257497776484c37644b58787643374736682f7a655155365539437950357071346c302f3869464341393961784d526e2f534a50304a3535695a6b7169686b7a7952446936446b6e584467446b5970356d663477744f587250463133644b704e4b4d2f72675a4d564e786c43756a697673574472516d30707032667a35545a69577954773159393269335a6a5761614d2f766134436c78326c5a534b35374456372f6438625935315375516176676543576434363075716c30564a4c50716e7336346444505a4337587a48612b546c544c315a4d68334b766d555436495a5a2b636f6e427345335a4c41736b4f332b7137362b49737738754870565545435857505561707561475573336b5063784d362f7743536974534472744a6d6b784e504f4c344475695a683745307a636179772f4f6e70667271587144703251353630636c65325451544d742f49364a47317a54573571586b34717635674549534659586f634533736c2b6d70714d2f7742333638513679635057306e6842422f733172557465376a7447382f706e4a4e39444d73734732467956304c585048306955584845327959304a425266566f6d5a72484e316d5153714770655a7838693256375471656161556a6f646e346b50344259614470597163313833383472363977383762775259587663545a6a5341647944426e617165614f4e44515064475755782b773665435a4b56364f68567851622f65367a55567237646d7969494b5a37365632425348334739366e2b74507a2f41472b77776f7a35737831355557614666457370795855456c2b696d5971514533596c50795a394538383055624b766e48726e425937576d4a70664e39446a3237647934786b4e5331445a464f56334b69736d557152545659564553446f56486a486d3665686f46556c734d4a61792f335031453838395275596b317a74367a2b7442684671592f4969525670362b6a6c4a706c6e43576d61753543757572574d7a4f584247386173506a73335768593639643676644731337653784178466e7a66443266586946626f4362724f356d46436e4b7770515970666338594d504a713779377370614577575439735761394b784b7577705959495453722f4d6e5062513935354164693464476a62374d78745665625579704d2b72517561475473364e5544664d356436306d6f6c324351396168564d79474a346255465a376758613174767a6b45326550515a696d614e4448334d4638697450457a575a316e65525a2f3151794b446c7a74424a4a6a6b7358516d4d58744a52555465784a555563494e4b75373463655141684b6c53706b7a445744366d51615773356d31717a567a6c564c633971464d766c75645a43373457716e452b43716338654b6e336a534b553061412f68697367354a4c715a3750713058526a5478353745563770777938356e467369393143787330485747336e413474627069542f6766313366316e7164777a74706e6f346f7a54374c4e3533386a6f70726a512f4f70357951645571387947797876614e426a4b766b446b334450345a755646575a72564e546f4838674e6c364c7332657264375333506c676e74304b5668797032663739496d30334c30475136444f5a666a34766c5538552f34424c5752392f38416a63346243674458446f374735374259724e7a6e614e50304c41624c566d4f306c5a316363546b56574f747173714956424f566c4344372b31516f55315a394161504d4a68372f445862644f6d6f705a2b6c69614f726e456d48756c50464e414b305a726b754c713456735447626b392b5772334e396e76704f6a502b5036656f417a63584c5976526c71324e536b5965536f304d7558496b6661655771756a41786f6335656d4c4a3079505a64534c65495859396f4761566453304f2f506f49356446717a34726b7a6f687a71724338637a46766a6f7259687246445a6c7a582f7a42355a662b6f4f71732f66584d4e704a5448307a4d5571375146666a2b6e366949634372514a6d5a6f357453394c75597047704f5a5a6f756254466c33496f643353556b65773564634e58796530334f41306d4d796b6734394b387244395634696d486d70692b5369566b34316367775a745455746251637371706146466e6463414f5835426334744433324d544f7a37494a2b6273615a2f6c367a45394a79496e54597455395432787a36457638626e30504d716158382b37685a7155614a645946446e315a71744239326c32627156423750643974636c4e4d6b376731363176435a6655583136394d7654524b734e336757667a62382b39534d4e45674f7256347a34596f622b5268794b4e70334973304e44504b6b394c74344a2b7a5637464c6b4d2f74576964744c572b4c7547372f6b563639413471725a654e543546516a585279694f544c6d587a4b504f6b6671326b396a48352b4f63346c3867765972336c747a664d43574f492b3530374d4350396f6c3330724d57766e78566e6c4453686551766b634776794777474e6e4b3451726e2b457066746462536965635554483335514751444b33547943484d4f4645374c4971655a6454556e4252486d7258565a6f75717354795231645635556b35502f6c6c326866773571307352504d317678756e46536e4268334a58492b724c30787a6b53554d30493134596c4f2b366c30387a4e46746545555a4a66476e34664869367a356e5575583978305a5778746e5752422b7a65593157764e41417838764f764b554a646f4b2b574e5563546a793645686135546e55557464676a3968444f69644762504d6f32383973375974306e3542766f51707458566e6553535a597a78493743723259357762446b685a5a666a6d61567778643069626f454b35794a5567674c713675463853716166366b4355643863696d70763864754c51444f666e6173565a67533356614478313632556851623050755754726d6475523371792f55306e7655446f775336497a33676a6935677a6368484b356f61576c7259555774386a37646150514d494e66756a697936476a426e744459486b3874464d2f466747714954547a6c37663841723856496d6556697a743771616263716d2b525662494a656c4b724e694a47557a4e5571584f5a5a6447324e7a53713076315558472f354f59697868635652397175364d3765384c576f7735637939655547664b2f4f633357776d5561534a394b4263734a55524c345061456c6d2f65464b766a7a77563035706d6d6f506957307569352f4c37686a6b35724a4a73706e767a6153716d522f48504a2f4e41644b595a634f616954366f36737a385834376b72687a757161505a502f414962684653505a4f76325a44324b7a49687530474674716c627075324c414a646c79315632784e6e534f626f557854683936786a3257457269756d72354e5530315555485168725850356663536c38394e516b4e6a5955797a4a303832712b7063556754756d6748505962456e49616150734c6d4b336e50724162682b52545a50303150795741624a52586e7642546d6a6d68664632426f6e6e49707a4c455242724b7a633441484e494d2f555749796b6e6c4c43704538324b424b6a564748773176325a4261644739485478475139756e5670475061584c626d5770546d4558586c426e6c58655a33547371464e4d726e7441484d39696e437073786764655834753136384174586537782f362b44452b6251534665737a516f7a795a46586a7477364c4b737539324a6973724450644e6f55517147716a695a432f6a516457494f2b476d5674336332635a475439536a68374e694237665176524362577a646736585458553978386c33614d6339574630727146376b6253517273347a754e4a7661564569782b4a37767a446861614a3553707270614f7a574d324a56524533566c353935594f54566d785578596157736e37485a4b356a534e504b33786f4b627271454d37546f42536d3476506d2b6a6755487a4b447432397a477a4d6962517135567479636a6e58324f5763462f58307038747362533552396b5a677261413942346e6e2b303959426531396d7048485130325444742f4c5a794337565a6944395846303943754a43555a644371684a4739705439372b36505a7a702f3841634d6b2b7a716e593838674d346c78747050494f2f7530552b347251715346414c4d4d786964506d6b336c576f44702f33387a71773631786e386b4574444a3179416c724c39334e67504d3574473270464650337647484a75514a61454f6c64464e53374c544b5264624e2f49665065744b334d41455430476f6730707a2b456b2f4c31744f783535446d71584f584e49484a39584c564c6f39644c6d4b7a314b766a7a6a32342b32555a38666a7a6c2f77437479374e4b6b536f4130724d2f6362443971506b30446770636e436c34725153684c4f3631724e49636963584b5a704b79784c436e386630755174423152324c7a36656472425266416d6635756d4d6b78426c7a58386f4375666c654e73684f713632325662766a71756a6e6b4453766d526a6e374c5357505a556663464f78555241497954307171736e2f3677304b41585475762b4837534b763841584554316646346e4b6b69314b36764d7648356f667630337272537144646e5057505a425768786365577a53464b4436717051736d2b46742f5843667555302b3857797a7836652f5a4368727035446d346c313657466e432f74627174692b696f366d4d54384d544569587730473735472b7a2f414c537566474f66533363766e304833503665756f3565326f6a504c4e463549304e46465a4a65694f64724a596738636f584d744b6d5331536e376855705154544f6a2b5364514a46626c7874345a47542b775457545570706e464e5a2f496d776d637075674c786976367977446c4147764a73526c7379557461744a3341366d5950734f6e48367a7377336f74743033493731577a504735324e6e6c5133564f525a7063426372354c4f374c66384158676d34797070644f6f456a3730746334512b6d6b744f576b2b4d6865547878374677313535396e6d55625a687a6873717648484b6c6a46774452396637455a513344555644776f3444544630412b79696c4e48573133323851572b7051695a2b576d487338667830747858306f6d4a317a6f6c6f7936353954507057544937752f524a4c7538435436797242534874587777476f65704273664e4f724b614e385572462f774166453337417371717a36394a6474493174556855635371504a2f6942796d6f4e7a6b6a31625935786f4a74756e4c62704142612f386a412f53354e70637a364638374853794f5379625236597347714961744850493362456b6d59776d394d704a7639536630376b6a4b5033324f4e703877537242394e70716f5850467a51686e5535572b6f70536b47565878537a6e5262636333756239466e4b426168344b70543844356c4736656473424e6d62654477652b614c52334f6c4a56452f77434364562f4b4755537a6844504f79517556776b4f655538396e5a7035766342636c664e455a4b4b322b33694a44486c5534324c6f7833344e547543784c327a467164764356554335344c4a323175645277695870547a6b4267763471522f77437378585271424a526e45356a6746366f5a4b757548757057444963796e39444c7a5568732f584a616e5376536c65534931786953592b4751634834544e4e4c4f39625536656d4154444e6b56486e394e5061745776507553536a6b704e6369304a77324f6a7273416c4d51355470384d525573506361514530684e3777446f4241712f366d6a704b57595a4261726f65523936746d6a4a4d6e69614c4e61644266474e45365149656358395a5846386a6477435a3333396f435a6b714b6758305553634451363350643141547a47312b4e394a794375417157526b563758334f56536b6c546341306a2f676f42536b77694e2f45306b47336e7a7459686c4b575a6a33524a6c2f38415462744e3071562f52716c4f457441716c2f4d703541766c494d534856484a4259483941324b654e3165637738396e4c6e4a36534671716a30457372593669654573345a2f644c594c632f5063756958686638414235536e4f373777397a67687736446e443265634b4c637854714f66656d306d2f5652527a506f6f5644484979347a6f6f6474615533334450702b79623549306d416b485739414e3539766270352b3646684e4e584c495730304f305663766f7256446566632b43705a574443624679754762707a4d4a4a736e656c6a54635065634174505352544b7972484b536b48717a4b4a33522f7251504c51742b685445754f77325565316b795a6171414638345473352f77424d547142513964703250504955376f526c5375654f586d695170626f35773575666e326f7a626a6747333433525461696c3253684c51766c6c635968516f487042333032676e37644f5061387746304b644b5179506c366d5a6a6b42455663736a2b3058365879465256394844356d6c4f784b705779314e55775a2b383559417a304d2b524a6866396e367950757a5176377374534e4c4d77324e4f763956564a304f6a4e4e506450666a55364471624f364f7450536e782b49644c396445547041492b684b626161584e5076456d686f68485055586638417141387062317072637638416d6f6e5664757164666a714f4d557a357638664344754a4362704e3462306b6b366e636357596578665757797a482b7650646c375655316c616e547a66464e7055567a7a326f553258506e35596c656c4c5255646869386242702f795069544f6b412b655239494d4b467749746e666d31336163364a753834724a50455838657776504b714568636d6a34636b71415167514130307a4f4c6a446d556471647141646e777865554d597a306c33724a566856395772354c454e6b496e3654783162506d47656e34314f53732b6535484950734b6f6a396e476c555074444e47475664464f6441744f6f55683365334d596638726f543674484a4a716138755654425a7a37557262466649393133773849686e48374231682b794963624f783945745469614a7443554d326d48516269745476774b4555505262632b63426c2f366b2f3366675630506d635a6a7a71666a5076384151566471725137577675325a366d5032724f5378614d69654a566345736946524b6b7056474c70637376726b2b6c34696b546b63516638417071526450527238504a2f7a2f7743775977354a5a39445472712b732f4e5864566f6f5a7054394871755430615548453646524a684e64444d754f563856504b5772574f56787a71535766386a4e532f616b4c4e6f632f4e4c6c5a3277796a5252316753587046622b4b672f6a70614a716b4762795976576a6b50767873534155577149494f6d553668714847387036626e7262534f68477a5046755a2f41796a506b6a4f717a375338756f66597a35336664444672346d4e487655446d7061446b7a413437553755427649365656624a62715866795a61452b5a79334b435776744d4b382f4869706f527a3568416664697a756e344842443370705555772f3739414b61682b7a6b584a794c63634251643546593938664d2b504f623371526d6774706b6d63774c6b6b756a503841643152484d734455414b554e534b7035372b58495975304f356a323644327355574e5a5054626a5a4c5a6f382f7345642f61506f653037716e30444a754c63317248674456454635464d4275436e694b7a5051452b3564545a4f5a31453136732f4e763070565171624f74705449636e667146306d645531465242556430713367674b4a6c51574e7053683146426841485a324761704559464577446e4a4135396443483064572b76766a524932594a4d7438744c4b4855722f6a32682f6f4d65542b356b6e6639502f4e70744d7a6e70675a506644713278357433504c6f394e51306e486464326649365844637a50706e52614e53723643657165476375383930682b774c474a39697566472b44362f6f48435a74436d6a69445968694f4f73353942664374696c4b703932576c4177583243797a50476449492b52536b6d6b5942647962356665484b682f56536a577551357a31753065635165664b664e492b334c796832467146724c376c7431703362784d365173437376686449774b6a57795a30344d45677834757a6d6c316963554465633975664766595959623575465339636458797a787554386256643555795a4b733133782b36766773534257586c454e4d3264546e4244573545384f4b76756a5947624c6f34566e3242685053726c4c3663644d355273553831734a50456c2f77426a334c396e394f766d432b644a526241352f4e5a5574546c737255355569383231764e46667347684d48665a4e504c506b7a4a345a43787046794d3038365336772b7741437056476658464e5a5631634b35755535556c447061494633542f54617a4a69736a6b5333507a7931457535386e4b6150714a6d556f30637235376b676c6a686e4849314f696c564f396f6474632b767062485a466476314763704c502b697453307235637849562f7568536e2f4d33767a4d4e354f7274667453432b70416d624956482f41422b6337724a64435444646c37465847797376546f62667471574538356c2b726b6758574e714649542b376a414e6c485471697657506d49382b4f62533571745232535a62465a375a544f6e525a594f585472526d41577258394d4257446d5543677151426f6c704d2f54574f545438546a57664d4745596d614e483270557a583271676c59304d7250587a524c36314c4a65385239576f7671796f2f573446424a71375364457a4f4c58387070475741427a68546b4d5257696673677a79717a64317a614164634570555a2f7531356e49304166474c682f36386c44754a564b644a6b444f425948327034326e7a4561356d7a31366a67515355322f5472775770726d4f696430773573756e664850506e6b5944525438645458414946375453485538412b4f442b722f414c76313469422b5752362f706c7578656359586472757a6739376472544670794652354a3470614435546a374c4549414f6c4c5050704e696e355576346e596d69383649354856682f55784d57695946385a7476696d74346e6a65542b4d69466d507659694e484e356c354d3770742f4e2b4453737a4d37575776706a2f4d414c4d656e703842394469426f436e6e32665a2f5763356a685063492f547030757938446e6b4655352f4a567167326e5a6c5a782b5a5a4537517a6b47754d4e54725a667343786a626839356d356b6235547059565539443532353750474138687a644663523532624866704251696e504f4b334a3156793046464273566c4b45324e35517075537931616451772b636567644e49694c6c70617450562b31492f536a57393030325242445942327a554f3078647766342f692b487953504d44646c5a5438566441755a504f71756347644e68744e6e324b766248667a5a42706b463043647250736f5775616775613836726173695a436968356355494a645a4b77755749596c5a64465856663754426142624e50776b774249686c707a39434f4874734f652b382f485a6132585536375276364e796c794f64385976586d76734c34364f756230544450564e38505450676b46492b704b764f59482f774162596d6a425a706e625a6d36614c35324d35707138656e425a5a562f4d56546b324b4a31712b4e5a616b3163437535667a425372346461597850694958597657304f546e5464636465664737542f6b4959737a596e34553744583237527a516e48506e545259537762593855646b2b2b58784f2f51754753346e50696e714e734a6c5a485547617065546e315a4770586a786578593676794f626c777a30707a52664b6d78626e63694476484f58544150753444364f4e64573164324f4f4d41667136756864547876644c4b546d4839445364342b784d717049585a7161424c594a5530626a54592f336679534631325567325a4a684e7a32386d4e4b6e5a6752756e6253424d44613173727361494b2b36696f6f615650696c5430625933326666645944766b6e586577766e4d553643593631755356413576747469493652674e376b32334a726a68707841516d575852766c317163757178756e633530515a3944704e5a36324964536c4c616d55482b72336244516f497148553965446e6e58524f564c506c353039644e397742703641436e557131597577466c563435736e6f626f65506c666d673457706e45477978754a4963706c6c54774b2f77444a5634644e664e6e557a4455725053687663393530356e386b46736774325a68356f454d3235705752705350363752594e61724c49374871532f716c506b49525834734d3365565a326253746631644c5a645579616b632b4b362f514c353153557579555a6c586c7970382f783150445a326333557053732b436f6b4151512b6642307161756f30734e2b4e6935393357465337524c4d3239612b4e73506c73555438734e4b7953696966555953785a4c5a7777544e57762f414e6b38356b45676e7834666d766b52696243454b7a4f4e6a317553456935726a316d4c2b4b4b6176616d597469374c6937513466326262452b3737527065636167447a34614f67487971304b2f3550565149356d444a6a64725942366565724c6c6b72614c5666594b72507072354d317252696767364b6e4d36714e733447397678484138722b50787445492b5478627566705a736a2f4143486e66496c613152335a6e55596c6c50534e447270397a653268424442563853682f33554e5650785470695a6a6a413166387a384a2f4d2f384144426d763669666a724e623670656c345836385648704a356450705657593254587879454f38553147512f50567a6d705256796464616b67344164336a5139794d34394d366572777679323852422f48503738667054342f75497a66567a30353957665162796159486638416b5038414b2b4e5361754d72564b456770523351346e6979734e78554e637878724e3441625666706f4c2b53302b79576d4969747132714e6e50426637337634632b64733435766d7667734b36615a6b534c38697743356452334e4b482b50574f766f75584c517a6d676d6a69574c6678716c5447313330666a696a504f665a645475714a48732f3361767736317266702b482b662b4c4b386c324c56347373486a475268364f6a465655314f664d4645336a4b5a614b4c4f58624577556371596c5054306d3953546b2f7233302f773270486172493243356b6f39524d686a327a767871335a6274582b5230736566796953764d6631314f62646f37416b3461726d59744c487a424b3171616f39587170374567457870645049557a356c3466714d307336357567424d5961735a4d5061714f5a632f51613563467a6153637976514978782f69496e69633363326c7370463742615351307a39632f44647a774478363364777064426d4932727568366e65445a4b384f3832336c6f725858354973613476644c6f7875544f536869346b39413363657959503545503631704e625469666f4b76384c54412f7741586b39522f453978486b2f6a476a6d36666a31464f4e4b655066793956746b6577356d586f344c3279363036382b716e7150596c70485343365779677735704c546a4f32656f72562f674378664e4e51766a55563266633475716d57757273755a46506535586a495a4e52314c79655a756f772b4e426149365a4b532b4b6b585865774a465a562b4431626b766974572b682f7871316c64317373766d572f5873746c32704b4b47334c5a4d36587949686a7a2b67464c466a3158736f4676762b7a52566264696259377847336543576e6d7054646b616a654644667a656d526c59625945725a73555a63306961452f544b707a426b38675a38764a50636b2f6c536b2b4c646244787578326545437452384f504f6d68384f44547a32624955614c386d647a3763584a6d30384b4f374c386b70525261544f756f726f756443364c7374683950656f624c3746467142335464474e33634b75332f4446582b4d335a486b574a6d785972477755304d79314c7a3958797a4f6e76753074494d4c4b48635932345979306d5571396863494d33655a4962675350412f713054306d4a476f3372466b36766a4f4c4a6936725671546f4871526c6f534232633534585a4d35585a6d4a6e586c4d64596e714a576a6b6e326b4e456f3567392f657866416d31497a4f59376832462f73765a324b72786a7a624743484c77664972664c307a362f7759695a4851593363545074346a79696b6e5062752f44566e304b616c7453334c5a396f61424749324f2f7244327272487a2f51656b7230354a4751484f4e786b4c4d6a312f77446e4a756d532b674c4d756f64544f466c4a6a506437325a73356a39546f715136774b7a547a6b344f486876306a356a6150787279724d72746a316d36756671597966336f716f595a6679484b4e4d5a56364b2b5531547638416f7838742b7530707835776665464e49385450374b58357a45784f4f38584b6e796961624f345533546f6b41364933462f774237733878354e554e704f6c6f3968664758457330423936344a766b62483966324d42796e4641682b7a355a4471453946436b317a304d436446546f66726733717639524e736875314f54313064537368422f492b6539495565772f636b2b7242464f354e74664c536e6830706e74747938336a667630396c6c7a7a4732505154684b73576c7a4f366d5753357751615270614270377a6b776c38515348752f7a4b5378417050745238524e4632565863366530335462485a5a775a44563334327245584c4774414e6a5879344144334b374d436769473735546e357830566139556978584d79544e6a5671497a413270555677365632642f48614576756c704f4c5171414136785535643673525a374236664a694a6e68413538656165543365642b5530342b5233366d595a6b3779477173744354746c7556515575705a534d32666e386f6e376d6e70634f64672f6355674f31544b574974723774574d52675631366a2b612b6e336f683666655265543276696b694b437652482b636777495438676248594f746e35584d757156616274687939783033584a427258464d69627272552f5038746f695a6e45645235542f4b4e6f2f4b504e664a4e66543866626435583578354c7337756b6a397a6e5155316464326b76436a707833544b396c5566384146726d6d397a327350795165664b6336434e3366455972694f7a556271656b6670486e2b4b2b4e78366c4e2b5056763768592f63362b6e52686e374e4c5854596d7a6a63364f644e4b352f6b47716f4f6b6e6e5932343872577170537530677974624d786a754778556d5272654b376f3271326e554e64706c33445864797057634757746d357432583252555a3863306e386e4750745a55786f41546151553270674d732b2f6e45784d634f4d4464715445304735425670323161724b354c7a63354d65717a4e3867312f344c554744442f3841536461646c4558772b535445742f313139665a71764151594371654e774670654b727438643052314f786a445576676e745377596d48763832366365316c4c366b4f67795961504a5064714d6a365443596f7a4e4a4a476171734f75454e3476474634343574326a3166655337754a306f536362355a653643494673624f433750312f4c4d634a6244525072754b712f66314c4f704f615a316d64743330466859543464724c4e4c4b42434537394f2f5547466c585435456f6d54546e6f7a3533376f574a667453306a7745494b614f4f6351507261574257306262634f416b642b65746566784f724f643162755571304b4430666d46717964584a466e30454f61747139436d6570636e57547a687836654b4947712b6e396c46637a48536341564e346a646b716d56346c6e713245614338793450476530796276425a7a2b556f354575725475583132627a375a30756b2b5a6f4477332f52643757676e2b725a7a4f6244356c36474435444f2b6c694630556e716e33517a4b4b587a45746e46314c72544f6331432b7a353454725744713341336e667668545164424a4e4a784d544855534b2f6f3378495274537266527a4f6f5838634761317163766e77547a4e78684631684f4954756a31702b6d6c744a2f4e477344393666306f344747636f594e474b304d2b6f7271684c68704f3854717a6c4f6a486b6362494c685856342b376a4531665736594b37303750312f7561777751362b5964533475465530336430377973767a375777436a52554838716c634d722f666335726d6458516b5a3946512b306566574b414a316e33334a5536637a3479434d4f58445055584c5676454774473074584c7464417a50304c487830317836547a42534b6d416d636c6b5267505a6b306c37506574505066416c312b4e4b6d46484d395930534c5a624a77442b46326a616a325a777864593832416b766d4b6459434c42414f4541644d7a5a4f344442716444394b546c44447437445750627730744230335143554268745578464f663162526a446a5a65544b42585463636335674156695a2f30442f51583736546d4f4f64494b6b4f31487735377776626a364f336b6c6e6f353858535a2f4a392b4f705174355344574559663841574a7869596733534d5341672f594c4f536d4661647253735453664a316f796c574c3044425535526639616a594834614f72702b5834412f3465424c49776230546864452f524259364b65392b70652b39717170324d6b7a3432755870317761432b6a37624b68715279635039796f77373747564d4476394f6752496448684e4464585132656d48714c732f4e42367756706538724e69374f47794d46353837355841736761325a7674396a3165315876364946437857534d6d6e4a533377544e6f53664832485154366d6b4e4b474942706e334e5362716b4d56395a684c41334d2f5a7553444b414277674f524b4b51516b716a667056465a496f35644b61413646616b2f3841486a6f47504f736e4f776d4b34786b3666696334425374585064576b484757552f51445345684a6e56397935785175363941314d6f3133686649664550527061485173304871506872412f6d366e3553416e4e2f6f4d306b337578556e675154555261522f597576496e4f303436707931633035514433315230386a575065635534435541634d434145714649452b653533386f42793839314a724570632b6d4f73716d66495546617442457679706a584978684a412b6d545038414e6e7645457039383443304e634c714d345361395730484e6f4f694f5935354a554d3776673748716648505950474b53625a676f44676336484455514d5838495066746674763158666f56366b2f4f395341376c6646586c6c4d637673736c566a6a4b4d6c734633515977666d2b2f5437545034566e2f514d636a69616b5457735873313864336c4e456b38746b68535070442b4f534c36472f4c613677617061454b4659422b7a706e7163704b56554f4d4869383669323039435243617174695875697079666b4276506b706e566d6675686c44425a4f694f63556a384535694a4e2b54334a4d774d41547058626f463964394430753150716242786a636f427030325778336f53416f2b50756137356f56676c5a39476b65553530346b4966347a4151504a4a315748394e4f66513972442f414a4a314e647562786d6e2b3545616968704b632f726a52554a49416b6f4a412b395079436b785437515932734b496e55427051494d4a305152773645765a766d6b3075445645754c6b446b45564e61334a61716431536a556151656177353370494267726a326c4e39784d6e432b7a6c584f707935494f4b346d6c3254395a2f55324c2b4f736c6a49345a3641522f6b30775537342f6753416736585037572f44706679656b5651796c6e4252796546627a44546f54795761784264545052324f5772725435314d79684d532b46625847722b674953344c374c6a7548323646536d78324f67746b4c676a54574475696b6b757370614b364d6b34306950577146515147624158396c497a67466a58383855564331364657746e3969532b6e6c626e75366970762f4e476239483536522b57684f663747664b6b75696b3677424362477661447878323057547179324c526e77335a2f64486c4d563265797033446f6655696d744333546b366d7164676b316f6348344b532f326d566c6e39415769597651392b6f747166765567376f4b355531497861464c49394279366d737a334e63582f306f31725665372b4f42494f55505951455a4851507576446f7253576851464a744235543556396c545649686f58456f5a557a447734616871756c4a76434635702b676177556f7a4655596663737161462f63783153457730536359554c3151696f6558796a6576694a30394955722f795a7869536d414a672b49772f7a553773546a4535364137477749704668643075645448512f726b54395a7050376d32464a377441705a6569354c4b4f4d574b517055744a514c41665a37472f464966356a2b446e2b7757766c376c6e78587654524479355a38626d71557149474d59686e7a7a6a2b754c2b594b514277704a5850614533515a426c5a614f68506e57416d714551357851465450516b4755432b6855327654436444692b53354a384a50374432385561754e724e663942396c526e554c476c7170726b2f724e3145524a416332565a787246714b2b3643694a525a35705a5231596d6a336e307a6e4d652f7276317747395536596b6742514c474d50334a794a4f6f4b6579646c537a7476514370704f2b7978626b4e34457838636f334761324b415673443664735465565064485450317a64634a6a6b2b3739316c4c71524534704a506176365a5878706430754d506a776f44376e3636536b2f734d7130367247326464794a6c6d6c2b304343592f59625a4a64464c712b4d6449532f3962345a3363357766684a315076514271366b335768687a54702f69333079686239585361744d3331587050714f55767353756837455a66586643716651537849756b4d414c4b6f4a596c7a71464e4442434b326b7256303876513030707063356e4a344b75744c5151305a6c2f4c4b512f76502f77436e716634755572767a4a5532686f423733632f6f424b334947744936456c6f713771426e73614642775935574b595238545a6d4d643164333757677156447866796539337847412f346538464b375933636b3034653577744c6b6638414b4e2b6f3861632f34536a69623234465556434d4b38345a6539557968494e4b443969307a417a494931666b717952645044497a362f764b6477635a4a6e7a554471614b3545504b4d426e574d703576794b5552546341796d5931376851436863413937374a366c484a64493875646f513436703651614d43577a2f41507735624a654158316d73392f61314e506a35366b71576e346d43596750573041544e31396e45324f316f71463157376331547a4635437a344b713875634f7254306b69726e562f494c4a356a4a73594c55596b416e55386c565a6c77314e72434762356d5479426e576539582f5848716e704d6c2f51496c41774f47676c2f705244577a6e514d51515968717642577832644f516f665654715651535555775151366141655935755a71632f6c38684a6f576f7878364672452b6c544b49664853452f4c4f7a643641596a666f4251317463466e4542725a3832564d4779786261504935386c506b5a7056782f7864697931304a715768437945354176372f696859544d6d4179716e5844724b412f7742644f395142546f352b7441676f6f6c56457575365049467638626e6c5136366b436f486f6f4f6d6731766258374645444761783136593137316742794734776f7a737061476b6e626a574c7449425a5a7143517362437575785078696e766638415a584a39736a6173632f345072366b5966784832476255476270352f316b7367597974656849703242612b6f444a655939324b7448312f59786a436f544e37426f44396d79716a393944514e73656d6832697173494a6f644b2f4e63716d7568565054326e664175793679426d763841347832546a6f48542b77663753674273767a44504343677a314f34463871774c756c6e4c585850616d2b6536584f6157356f5638626f67796535396744473443463633443065736145347a30734a6f684d646745314f344a704473466f4376506d6c2b70444c6d73694c2b596f7a5a75385955575961744f582f4d754d744b6f777345336464446d6b42636151786d3351534b4e6548714e47686d316d43575a38335a2b723061745654355a745452726670446d386c542f4143536561743072526368495478755349414270442f50486d72355a436f342b695645394e4646615437526e7a76376b746470486f52693164617242574e4c6170534d6e65373432463751524d353575726d4d774276743469524e62466c7a5a6a463857584f4f686976687a4a64514d707a4e57335758462f446a6c304d2b48654633334c5a535877322f43664f724d524e716872313877796b747a615937657847366c51306e492f4f386652535155563079787a484a6d357853723436667051756e554b54555a4247326c53546b6b2f614c6648396631483634626e77636c466432646e5a6f7a6970756e453055496a2b416673787836514d497145686e7368515879304633337a56797a664d4a7535796f625a32684e5a2f465a58445470592b684439586a55396a536666705a4168784f543279526e5a366c445259464350747a3079445a4d507863345a6a5450487465596276666e39304b38662b506c7a3956676b515a725657786f444f6a4a334a526e62537477554c6e6176536f2b51652b2f2f767857664a4d704878646e6d37587277447846544f5a4f7332376e4d70336337506e4a724e51645742374a335236586b436e73796f33486f58486456714b343936364b787076643757657871612f36714552334436584555536f6f744870524a5870592b5a2f4d79394656325a3153687158562f4b787277786e4d4f55636330334a4b502f4d43497874737434444362646d6f53616664456b59352b352b4d746c2b594f644a5262735467374e625a6e4d63763636714d6c6a6b76475a6458746d5a32766b6f48777636624c65417936336a342f7743634a2b6870385974657931633232756335776c322b52766d7a474d5748787a7732616b6275676256306b36597530477071654e434f505a387779556d4e41543230784471523542716264546e6579796a37635533323671645870334563713161326c5162695562672f514f544d51417931315544394171436f464c7831665a2f57785066626f7a5872743046616c582b68694948796248314e5a2f4958526838394873476e6b663841756b6270664d32533174337842782f49526348674536375156316272737844597146387a4a30713244397135507239526d7a384a31796d3354457a322b7858477452373138476f7a64744d566f494c2b4b58784c6d33457148522b426d744d2b747a462f585137526865764e474c4c326b75594c67584c2f415051456d4a477332555732573841546454507869785534395a495668534e4c4c7045645a537965775a744e4b5659534446316452324e57786c4954482f446b6c496831633354714d5238686e5273355a534d4f566c6b63566a5656484664744e774e6b30736e664f6f665931624772304e52424438764f304d6d36373442705838774169486a57725765704871543878637a7444546a58685279387634542b70544c6c6b716b657a2f49695672444a6f6437375073386a63784b6a62794f2b6165452b76714c616c58685a69302f78326a39526f73533975695a586d3975652b64676470704775726a596331587a77735758374d6e4e73365046413770724b675a793053326d71594153466d4a566443726e4d5770364466476d656e51732b4143377971673072716f4157307039352f44776b685343543648374e4d364d39767a536c6d566d62595370646e614137637a363330503531544b6b3073706c42505a2b47514c7236627232474b7753786f4f416e39592b316f68706c6f5073306e31347761784e595861466a4755717a685135696b3849766f77386f5548484748764e4a454a70413041516a573965576f3949615253726b6f6c70534b55664a37754e7361324a6b3435376b797a382b3037726a6c507631513935382f5a75636f415565575061456d7154547a64422b6973444e6b733762315a6b5671786f5a64414653584c31466b6c50466358786c4a6859333265397247396d425852796b63766a74343668784b47396f324f6a7a3931632f5653356f50703442454131437069304c4469317158786752386e54522b6c754d487649506b6a44506e594f59784c4a6c7a6f55366d72496a367846686a315066754432686e386f37346550615078736f6a39797a59446a6f34437275484f37505a477373754a7345775758392b64534e49534369724e47577234657663747a484d426266304e492f5755487663756e347151634a7053596d67794e6b792b4c7a30557030653851346163676b6770567067316b502f616a4c33436b516b483471414d624a774552426e49546162586657306e6a7051532f4b547a752b7679396e44736e354f37584d54546354396a364d7a4765786f2b353375535139447330774f355a494d746464596f6e66395868424f3272544666594358784e4f47325356716538643936694558634c6e4134732f6c567744564f416743694f48514a7156524f7437476b4662476a3350466b6175793149554b706d4d466c6e4c4645616e714d696c414f664c3867642f5267574864466d583351646c63624b3739574f5844396437667343736f32546a576c5942504b4450707448706b34754166326a564f43794867444b362f7530615446797952302f7962637257545354596a4e4171657a4d574d71684e484b766d7a665941762b576667324950334d494a2b4b42754f5645376c43712f65687a31545a694a6f4d326464415a456e6332716d4a632f4a3350546d394a30354d3644615675636b7736325947483777616c6251717776724147697154396138385465616c7a754a54597855646e41593550467055746c512b376f4a556e367875374f30466349414c635a596d5a46494e753071714d624e47716f56304756535255354d6b36725931746e59623942795863663754346f6d664a7a357547446a434f54574d6955796d6c6863392b6e2f4965793471756c6f7a472b6561434a646c4378633665442b4c755a7a6e2b6c6e785239417739346b6638415142487071497a2b6f584c484b3778664167544c546c3371556d463841307556482b732b743436303539466e7a5574494f2f746f68542b2f36422b58484c6558626d6e62436b7336364f44536e6d6e715654524a70566347696d565a4177684745574c653943666d363454704a6b69302f4b4337592b72305a2b6644744f4146386b70577564324c495a4f59596f73584b2f556d2b34584247466843476534672b795850685336732f6a4350462f36634f687a644a6e557a6c5174416b78726952335462524a474e4b32754c745648756d486b37677051314b58424b5a4363334f2f30444f766558787338545739656f5775345030394a6b575a6c3536475938314f322b6965586e2f616136706a65564e59644b66683937484a39787241414e6c6159786f43673573306b313738777a686173386e74566e4e4238375a3874792f69496b4d584b6c4b556c583959665a5261696e2f4d365168747450386d78756268544d546c2f7959513232666564374d2b746966356d7968306c634d42655557564d686d55556a6c42376870446b354f53766b33627845316d4c5767535050386569776533416b3666354b6d7a4e7a4c4e42747a74415a30635178736a493837546f4a75546c6c4b6f35676d6b702b5276384176554241704b3348575a6d656f4168705a657976515a72665a702f5a722b627654734845455a4b6f63326e35456156695431435663687a46453971564c6d57427557464e496e5172757a79682f70505645537073566450454241644433352b6e78534d6461324f6c68546d4a346b364958632f394a5967454c6e353337795a4f456c58424d4941786a6834794f686b74656838315753695a3146737656722b6c644c6c414374464570664773324f32477447743741524f424d5335314832425342394d624d6d48576d7a68466c68673551587a636f43377446746a753677487055536b4f6c5975775365686f445348366d4e6c337939616d5a7a72356843666b687864696d373175677a496d64597a4755326c6436694378585451535673444c6f52556d572b4d322b3333665a465056314d506f55684662456f6e6a3074493957696d616e50666c35736f7071707275552b4b646e4531616d595a6363734b2f6e706d4e346b456148554a36446a4e58312b674f6e7a495865326d43784436307542697879356b4449595853626c6666725037505950313153736a36772f6863667544326a4f33324a59584f41423562746c755746494a5a436a416a565a52542f4a636864544f70336171497135433464476b6a7944646a414b4153587553366c684f435951705870325050494d34387a714e4f736d6e56786d61706e4e43443444304d2f734d464e6d6f5375616e57486f4b2f79685978764c5a6d3142303072644a37784c34346e73562b6639775152424532574a50306c617054735571466d726c7a495439515a5a573654304e314235796462585552706c454a522b49595038652b3977682f55632f6e3977626144506c30655633645a72777854746a684b7a784d38726c772f65626d436976322f7744703630396f6b4565304d2f52756432645857544f3972716a4a6d485974614d2b48524e4f664e6d494d315743765530695966334a4c49744b5149564848384d54425766767a763952365351464c4f4b36583942453178353763304f39635436386f702b39765744437a76745a2b6a6f4c354b6d754e4a7052704f5870657a34556b35314c776c6f344d7a2f717a663047666332694a4d6444365a70616c76696e687455452b586f717a337658342f585249692f36613351304d327376674e624f34765948755936687a4f632f71322b33694d38307438355458677a616a457a5a366d4c30654c524b51554b43586938684a7a6258527378306b6b69593167745a475153696331553466574b4b376338774b5435386c315150624b4576333953746c6c4b39426d66775a61573152315771716351754575326155364f7a3841706a5a7431706b2b4769747775674e6b347a614733325434746b365476675178456d706167552f44486645484864536c7373712b58466c6c4e7a354f39654d4351664f647333784d7466745344583334347452432f74775070474d353437557a6966496f7374797a6a374e43365767435833345a32413934675157476c6637642f704d4b6a476f4d3971394e656558614e652b6a7135307244514f62672f5a6a2f53473031654d4759776d6c6250635044636b6939337738667a39632f6f4937586f426f6f7068564d764b6c37567759536b2f6a4356656c774a7a78436d634e5a717037453262432f3841364370676d656677676b71552b332b676a744742703372625235426650644f35462b644c6e31573074763562314b52376d4d30324c6633556a5a4c714f48696b2f6235396c535742524d5970352f56706d49374d596b4f4a63324f544d564a7946666b56304255792f597456646d79744c6c4e527a30562f754e7663736c55545a2b646d487a2f64547a2f3433652f455831572b3369454d2f427a335a7158614b485a2f4d71642f47354b514932535672355964765630555742567353396e64343731305539532b4e4d7a7036416a336f7574613078623544394e4c517a574834675a4e586b42576d795a5a7567716e79667555556c4863345a587649564c5251665842535079744f4d3535724863464936414c6b5a614d392b6c7361462b35354450477551636732764756432b4f765457686d4d657937685837584a3742344856714e54357467506655706a67477650386e332b3446654e654b7672327062664b2f73543563534d722f777a4768586662762f414b77547367485830686979314c546c667769382b766b73544463482b743530676c732f375774474f575250394175544b7a6c5a6d53755265506e344e654c6d4344356a302b526a525158564651376b75626e30305861522f42784c44354f4450594333502b542b71642f4e6b4f4b3338712b53635a476552523063714c534a2b54536a362b48466e4a36534773704a6f5a63394647626b31646f2b772b704e6c6e424e4b6665585a6f47476d6a6d72464454447336623871705176564b3753744f2b796b2b574b716e6e65324e7a66744b6c376d3131564d43722f414273487064544371627338392f4e6b4675343948566c52487758584c686a5a52717566526e4a705853662f41492f77676d586e7458486f4d3070667363466a2f633176767359446e4a68664e41556d543235744d38387447684b6138364f7973666c67613743504939784455756250373278665a3535586d4a382b454c776e346b41547a716941526f364c3156466e78733742466b5257616b68624e2b6d4859595343364163575a74532b6a437745756c7065326f6b304d74634b544f6873383379547837586d456d58314d7a66344a575a5842556642716b6f686c6943375073304d2b6835696572517a355633494b476369374f504a315355717255305671556e2b6d32636275344b752f653069662b503765794c43736e6737796c776f443776506f32392f52737354506835354a484e3458362b4c2f70556a4f6679704a414d63617a35674533454f646e556c386b564e2f4730307230736c39624c6f364a6c3552386555326638415048686c2f4a5267516f465975476c7768394f61467a6776377a794258673254726e444e35326237657047565a366a44524e4630652f3841564e382f647756797549616f78516e68746d6f5761666935396538506b7a474b364e644c71565750526e6e6f737731616a725a3738366e4e4b31775477495a2f462f48384e6b332f41492f475842744a6f63377a732b50596c5a7a6532334a352f59472b76564866626e385370363655422b6b5564484e62586248317a4f53305a4145316e384f624b4b4c7049655a78422f703533347834522f596a6a61664d522f635448516b76676f52434646354e475051306c774e30424d566e327475766631666135772b754c58436c77545753365650734e6f54544769616471416c70372b4b6476594b6d78586362312f4e505751466a4d2b6542696158616b48424c5353454f583979466146544173707939376d4738564f2b482b6d32324e776b2b63374b5a7944584672564f75587572362b663767315657736551636e71722b356e6c6c7543476651497676556366376a65617a4135754f5455596b53494e6e636b4b4f354858356365684e4b463551526261347975377958556f6e614c3075534d3665746150666d50707055766871442f6347586c6d68797a505136475a3837753063363545624d2f54682b7445746934356f513474772f542b37396834636b424b422b7a597078784c4e2f783270326f4148712b6c6d4d69727a47533965326248476d694f475a4e4573756c6b754a654444484633334c617857674854415747395761445571352b31715a7345664a4a4e514e6135515a365a6f6a426d674f7574716c50315a5675397959733035312b36564b52457569535339367668354d7276525771704f4e4f314169476f564e31646e587a35794579756e6b32457a6c6f62444b6a7a614d304c5946507532495070756e314b49327a754834512b786f412b6a34657a4a634f6e4373655151744d2f7164514c71584f7157485062316d7652486930555a4b334b7a703353706e425974594f624b5a427850324f586c5374796b552f574f776a494f30355a6a4a5936326847696461645a4f6c724d4934636a44504e7255753945547165584f583971726f6879564e527a6c4e4d6642732b5551443853656253483352473668327578464f5658466c726336446458444d4d4f6e6e6144745156356566506f585a6a61462f756d67552f7743423164396c4c753134566a79453977526b7938334f44512b56566a4e45687667364d5a574b6b564b795461612f48424974533464433468466776556b56502f774a4a4b676a66532f57506b41796f363136656b6a524b53716e5067502b53317263766e69597a7839426b6574665650445232656565717a506e63504b6b6f42716467414435754a2b42576e64793445663957504f4b2f547278754856784a494b2f4c397931362f4559335838334c73323230467875376c35736f7164506c716e3869716f5939774f2b764f6b564877487455436131343534636f68766a6e703672783257734e54636a30396655377165532b543337533039386d30764a645746333868633236306c397938482b4448446b5758564f534b6236532b796e32645964784e677971324b35336c4f617952335268717962556a4a6955683844506a705761456d4b645a716e7a7a2f4479656a3931303243482b79726f38435778654d614f7544644451566a5068474f4f39475a566b3662766e584a516870624c42356f5772594c74434d75464f476146464b3478575a705934434f6d3676547541753948536d7174324739646e7a3259624d765551436556535a2f54756b48456e47452b2f7a5877445a4c774a334b7056585471396e564d772f695a2f5677587a50487162394e2b5a31646b734f646b424b716c4b70554c3033767367326c61635439394a4c6c6c44364d34432f396d6a36766a7a586d77427457703264723930534a6f704a46552b73376c363047662f4b564d53646a6b6c6d68737231714a7837546c3146334c5730714359306a6e4378314d79657234423354696559586c6f5630664a6834394f726f6a326c69354573735a6f4148624b4c4f41792f4f6c6f494366734c5739504f4b705631776644374864486f69444a744766514d6e323051305473656f7731766737396679446e655974444a754e346c4175495062386e5135476d6c7a457a66756c66384132554744526f31556a52545348485a387a34426d564f51706a2f6a4f304c6379752f4a526f483762774772516377454c647a6b6348312b50397434433848756e33636d7938716b3832324b7343356f5466445a72472b723441752b6e544b324f64544471485064483135754870484f6d53614f4948632b414c637537386f56747a6d75596e7656614e4d67314f626f4b70317a464f3239746a72536c73624d504b4b69496169703777434653467969582b704e4a477076743467583862705975346d2b673879674c4b644774775a79354d2b733441583830364c446f4871506e7564714e3449706344657544336657582f746e745034362f55535847386272685148506851626233636c4855725a6d78554f6e7244344a474e646f7a72644f756f4b6950674f42337635372f414f4f2b4b592b7a48535a695a34526941546751466153595754526d5761447532774c3257783134624f3644426469303533376e424646482f594439546361426a394e7844415836393477475675493749526879796b2f352b7a4a682f77426f4f4436576f7449386343644a737165726451576f367a536b443270636d59564161574a534c4a6d5a6e7145615047494f32644b6a6c46714c6163684d493251682f44364b6f74445155565a69764e2b424f64396a57496e796e564e312f442b745131427334327564397645412b5a6d653236664e587358524e4672394b64517a3135384a5047374c4b6973423655724e4f6c6458334b666e596f50684a4a456b2b4a3971654f667a2b345a59764f583545563349303059636c48324b2f6c324a3279557963734b2b5a7347473279786c6c7a6935644278544b4a7a2f414743726b6f70554d2f736d2f57506b476457504c517363472b336a693557724f30753530736b306d65313166453239676134516f6e656270624c6935516f672b7870667667392b782b704a3366466a79413237796c6d4e5a48485442355a3846376c783144694c5a715475476c7a6d42736553777a57554f6879557a706f476d697033545733426e6d5950434e74433233647a5a786b534d624761394d3153465a2f6b4465746d31566d57664574536332787243794b637061523662744c6e7557617043636f756f7a58722b732b6b54465759694f705a387237326a4c67397851514c4e7650794b34465a79387558724661595548525954686a443438567072536d57615032556761574837347832703259454a30664839584333494d312b572f52733169354a4b794b7130714d7648626e4f30644669656a387068563936646a4b6b69622b4751435975446f71734b596d4a6a4d422f6d462b327275304a4a7442744e4d6a714a54423949383146585846507455446c324d545a594e424775655158706d4e44763966784d51536553493161385a3670666d6e704b3539476838597a3532714c5a5a744e355a4e307733567562314d6148665265785338326344434e6a2b483730384a4956413538475772636175504b63686e65585170624e37316a57332f795342646d4c626b33536c6d35417735354b37314276735073662f4b356957505842392f446678544c557631533966616e55342b72366c625850447344554c7562484c4e365a654e4d48522f666a636e324135446a6e353556745375345436572f59783068392f70644b6672556e73302f442f3544592f516b616a79566c4a63312b2b7a537069564c4f7a4e4f4138665670574f62657176466f4c3439525757786642476b624f73545a574b35616c55636d4b744f7a4169754e66464a4e6136374a6f5770714c747a54413630494a6d4b64486a35365554382b55716a6a6c466a4e342b75537237414a6d3752306f2b3043354668484e4463767259726d6268486f796f307a344d484c43372f4142326a524a6b76584a31435059476b366461624f71552b77667342413243543458552f756f4558757a3657655077336154455230544f6e64575a716a6e6332677250497038312b5a6e324b484a6c584f7569763367483256693666693054676c67754175792b706b734e46685853327848506f6266304635337a617a656f7a63374f4c51666e4d47365570724b614c42544b7563792f32456f767238476e2b6764446b5a65745061765433704a3232426336584970304a58795a2b6856384e4d4b3461644e59547a36414a7148692b46616c58325a6c2f4762462f595730444f5a635a585a7a7447366a48624473576f3663787a327373526a524c4356744139672f325a2f647a357671485252514d68596c4b557141464e6f4150724952797874716e646e5736444e48576f2b3938634d714a4b2f47373362695658577866495a50576574724c634866617161663965344c33542f74414c39357a526a7773694e5776457654736b6e765372612f696255696a53314535732b724f7252495a56794c3168366a4c42364b2b6b667539696c705742415a5848745254775471686b67327157726e446479703378714957714a70613549554b703876355a6b37447834623349544e6e4537343872707536566439664559356b4f33386553766b73394338353836625a6c4b347a50645a423368566c4a7157355a752f36745671544a426649584b554f562f32456a4e3861323334684b704e434b6f334b5563544f5331444b7a4c6c6a347935485332644c507a4e576653525568654d4e3152576447515246774e53513073584d396a6b574834355a4b747433476a466f67434c714b382f527a4a77485452533863394f692b63784875654c467a6b7a767a7161594a6a6f3054494a68665061417552556752367546796957304f5a45736c654e4f3374484553384e7467555a79726c6b34694f6970624a56484a4f326a6b484a7841506c5362382f7a2f623744496c4b726f6b6d3170735562756a526d784a5a525154467a676f6f4b76494532636f344934644e57577462772b434d6f557a562f4b6f366e482b7239334c676664505044353646496d71746f7a5a377762315857543936744b7332784b63754b57556f786b6335666b417576354f512f4b41716639656e2f414e38626f78753767386133436939383061714f32537269564d33497a4f4f7a7a516a34556968636a324b6431505a34797074474762706848384a2f57426f576854583970367750702b4d364d7263335a4a383775534f6a444b3779616e354a4d30726149562f79546f375a7161426673444b4b6153564f735a584a616d67425430307665655152736a38686e5a6f6f726451686b2b6a665252396e657a704b50487a63727253756a32355935714c474e684b6f3072576b2f69513538345566496b71503656322f556661656e4c616b394e6844765a306a76334e795869616b5278507872365a2b68565153506f316e5551436c5832365a35356d4f6d396c4e31417166752f58694d72504759714f366755474251614f692f52795a6754492f34454b716c4a714961733256624e434d454a2b6b6848574f3972512f536a6e6d6e657358765049504c732f6b2b746b6a5344323962616a54504f642f4b5358524a466c734e4d566a6b314b6e6e7549664d7242537635364150325464514831324166384155303654387762584b6e5151646631435a472f703167776f58356e4855774d2b3079524e585434725054796b5a35304d4f6979523942683963534274776e6b494e6f4731656a69755450335857495a374b446f32395365343561463354784f3065616678782b5178316b6e61596a32657977762b3350796c632f7a4148514a664c6b35314b4b39437a56757a724454614c576c7978646a6252705833557a4561436c75712b7176364c41536a33566c444f6b4c674258784d502b677272314966656a77484530366d5753367a664c63316e4b6f342b7a5232492f6c79723671527a2f764a545a7a507a645549326c4e386f4466383344373831334f5a3666654c6d354c533142636c74423874476f796147324b7961363455644b632b4f7a626c776754506c6a3756545030306e53546b2f5741445368556163786a6d514c6c6e346d576e71716f4378704e57354f6d3232684b395342675342596a576f7547576330766f4d55696b53416333324b6d2f37617659444e394d454d48486c7749485a7a564c56656c57725857594a424958785931787054314f53374868682b4a796a597876624f395437465655714b33782f5839524957592b4c506d36313065682b366163706a39624e546659786932646e6f304657555138636e67734957614245746771536b66686d3545586673757262376549516f30595664736a74376f6f2f694e4f6867364879486f4d70564954702f4a3956356b7870444c514c4573517853356763464b684554706b4277746c764142486674705932666262486b5661543257614f705777636d31476b6d5757713678514330784b676d6534657a75457854396e2f77425142777242624b69574b624471775a7075574b424674566f496d557761372b576132664a565a4457335563687a6e4f7357336f6b687053314a4d473166443876734278713759767a6d3633566654706a3658386470726d6c6c6e377251544d623265624f6933696f644b63624b69344a5034707a51545774314b513933395445544d3467417a716a696f696433735551326b79546c5254375371424c5033467458666c6a477448426a6953554c7031495563346e4d42396b556443682f7141672b664d366c5553535932656d594a4678793651593864694b5a2f707a757062585278355555782f7951674b6b6463516841304253755a62614c632f6e3977726b55334b67554d6373457a307967482b584130754d6245316555336534724f6c56776d434e466c582f5a37537041302f632b54676e5366394c626668426774484c4666325959307a30353258652b696c4c5a46477653766a5849744d7649666a46693239594a64637073784a726d476a674331514b565566594a5876484b5a59454d5335625947554b6b316370644b616f31547a484f3153334b6574682f485a77774575314b434d2b42383476355049474764646f4b794b454b326166354259644a63637376756e6d5a567947354c79314d6d4e3653316c5a38303962654f57424451356e444e50443936774c7365326a4e57784231582f74477a3244724b7578574f4e794b70645377614c6c79325a39696b7a4d36467450442f546f7a536e7677743531774d4f6f304c6f4636756b5a437455637a7155366b512b2f46737a4b6c42564848526d2b31643077335a3943422b6632652f6b797141617639714d4a695a6965456758584e6b4b756266626c756b6b56645438714a53324c654e4f7442464c594d58526b37386e794f73425851433545523075426e777539695578787835415a6453325974374d6c6e76386774596d7a2b556f44447530465631526864466e6f305a315469796466336c7372527a6a48416e726a4f515a4446786a6176446d376f4143306f72587134704e47452f505179465235777a525a2f4c69546e7631476c587635707a7046597a6b437761514a514b566645636e2f736455446b6139433631557764647035307a6730744859783054786b7467706f3050625868315847716f696a736a2b763868557a4a6352684e4c484e38616e61666b2b2f33446c5a6156566c325675366169544f62483230436e4b63666443614c504e72644850794d666c61665a6b6b78774656554366656746664e4e38496933516657654b7658452f4a724434776e7573766f5650594f4242506d6870664c544b36762b634963327056435271344163595130393658325038514d382f656551786d6767696f733149475a6d692f5131315a656d583246365044374d75477a515a4d695371666b44704632534a39747569343154752f77644f3161756430425a32632f4c7a554732454a4c7a34755773396458385967556a6e352b6f4e7952484a54537967467932646a5878667648356d4b5a38537557554e7734326e7a456e707a2b7059684d6d313866565a316463714d5746313269382f6b71324a62426a30395276474c544b6c6e314c65443131444a69536f524f514773674e565478616b2b7469304f72585a4d4c6d32545a657631306d62527074715a55326737584b566638414f6d347152415a6b43327732454a6f52303375645049442f4141584d6e7277615047746874644f33343372562b4f365a584f7230475679304d5a5a4565634f5a6e3148446452476e367a46692b65306c3436557559333245453172547a5a6753327a657a2b3230577330446d55435a644b4f66527a6b556474684e4b77584c5736374657667a457567574e65747756476d737639555a6579684e517a747136546a796b647a4555706c37343942705556676e4e314a674e5947344f7557537150327651544a377757482b796b6133416c7a6c4a70415a465a4b4b704c6b4b5a4d4e683539645832754263705a583332524f6c544e54704d74484f47677058384b656453556e6d3853346b634f6b6a414f7659627557424e6a436d534f5173764d37326a6a704d77715964304e63653375313552356b6b667533424e713055747039354a61356e51396a3754584538335479436a416e7a6f552f7741652f774377756173372f7743533766496361417236754b6b6632413350594c6c706a3577654b5741474361394653766c706f70647133686b4a6e6c49754e4d553258395356633746746a3178564c49396e4b4c4f4c6861674134704f54306e754a6a6145414861584b4a6271516d6e562f565172697a5551525430445174544761617944476d6b2b336963364730632f474c30466c384c72526e57775457546770345a6e493734557134427a61637a6b534c73426645317a723870636c61666c6f2b767932544f35784a4f6f716d6e767258375853765a56523834487a33455073533578782f594d5942562b6445797875653671316c53365878554d4b4b6d334e535669703533412f3246374a325635344a6e2b446a4b426f563778516f6c415650514778575a553946457451315a334271696b635952334171535446376452307338416952336e796b4a6345364749412f6b695a48384945416630434e414a62422b6d754f3665654f6544573571394b5735544e48614f79443653736d654b684f3269465564487470396c4470514952416742356d42504968414b722b7638416242444a566f513633525a7030364571553742414172726e71456e4c5a2f4b4c4a787a315873593679623577464263672f715a6d5a6e4d68537a34367a4f4f656654663054304c62486a6e364f46314b394b724e5278474379334e424e513973467943714e36754a6c6335774d2f344a6e3951456378456b7a4c57766c6d6356797459737a4e6c717a306d70555979554d5177364d65696a37566e31714f6d735136344a50692f583661617a41456d44546d61685444456850565242397878722b453976744459542b43554c4c757647566a4e424b78712b576c49664d7754503541512f2b67654b44536831382b693079313864716d6b6c546d684f33466464624f616b4e4b63584c5872317057545266786e484639594142553144352b4734593878496f38783633305a6c546156352b74386c4676473631614f4d342f4d584139695a3562714a786364417362396453507363396e78307a725851456e3941537279346b6d4a644b335373505034374c4a72574d6344526e4a6d643269364c6576613558536464386e567141652f4e514142325a50462f30414453374b674838715864337371366e4d5a6d702f6a71722f354737506944496d6654476e68462f487363337333424c334c43523352532f6a5764424b6a466c5242324c6873616d432b67453931684450544767527131617163714a3933757371716e736e3968546e796674446e4e4a7845417a43474849305a6c75626e6c444b6363655935364d39467370563532686545656e445972553059352b7a43444a52716e2f7743334f436a6d614242314a68515144617330646c4e73503265543375314b72457072574877616d6e575874354752532b4f6a526f6358437433485035534a6e5853596c2b76663961514137637154746c696a6d624a6c68472b5a3269646346576377705937754e6d712b3835394c70536e6a497557554f486a6a6d57503654396568314674397645496c68702b4f766a2b4e314e532b6c4f6b576a6d5a414d75364c54454552773874715a78726764654b65524d63514a6d7643594c50687057372b6d2b33694d38377871565331716f2b35746d7674334b39476349543639725535364c4a3449334c456e5a2b6b4e42492b723333764e4f71545a4f5238443373695a6d5a7a496a586a74642f6a72302b4c35756671546543373175617a44566c4e7a2b34336a756c48565250736d714b4c4e494b6f366e547534582b48784170796d2f414a2f5a2f647034786e343669334e6247524a372b704558495178566439534b4561632b6e335668792f6c4b74635246596d697157705a7155504f676b383043462f556d7270304564706d656249744b586a546f2b726f716e4d4d6e51586454504a386c38353872305936306e3969476450553861414d556d774f644a774f5257345073326a447174644d6f305a36714d374e64476b383046765a484c786d5966305961696f524b784c6e59346c3765397047534d446f59766c48752f71635434534d5472396b444755614f487750354353435a6f63666f4d7a57783864516a7336496d4c574e487959736f6b613031306f3541304c486f34304f5277467561633378452f7073354f7653715957636c7773644a39577a4a6c66394265597873744469766f4b316e78653875685437326d68704a2b494258384e5873524c6b65354d6b4d644679355561535a7870336b386d7a346447414973762f4e6d6c376c705748376e463078546344744c794548444d544d644244504c50542f4e746d4e45326e713456656562435a53343633302f4c504175514556496e7a564c71584e476f52344b5871482f70396170737a6141644c614c7a3338525856487035356658452b61326c7456787a4a396c644e5537776e65686b715163425261554356755a523770492b756b4667646332525975455764432b2b76694976543437752b51653947376d66706a5871746c35725a347a586e576e507662767364506c66414f76744d70683049706f2b6b326a345864392f777a41446c574475373079386b72544b71324d3950515250663739437a546a38635a564172522b664f674e564773357a4e702b684468736f4167415a6555787044397052494d646439664545712f417461354e6b66477830795457704c4b48716474656d3974713833585a7a713570666a586f5575584330576d69596c544d6177356e7a75414f4e396645545045394f737873743561622b33496c71756761794765643835354c49707a5a563265675a666b6c4b375358302f6d34317359704f644c5a4b6c435839567461305434423848673847616e50593157624c6f50616464326c5278795275554763556e7949746c53385732684f4c6b7a546b412b32616c693646413373792b76656551652f784d3839724a4f5235663269355a77386e46444e314e48626451486a2b6a6c5a49364e49794f636b737370796f36744d356e524d6470766233696e544e33785938686776784c78714e476377735250314a6c455178443831576457466f7936533839686e6e796a745a70694b355669766c483658536d6d6d6956696f336b33582f41412f61514a71394d386832585a566c547a616b7570626938314d375a6d76534a344c595935376f614f6678394a6a714648506e6434735767356f42382f364e3776384156472b652b414e35365859586a3261766e624c4c3655727666526d386f2f6c443632324f4f56316569473067414878384931314b47654d5a70464a6432417753373369566f764d38496a694a4b4f51727836444f523433672b4d357953346f4e4c6d54503439526f6e593631656e72614e656c4b7479727333744476472f6d4c37553377734d3067446d7569424e597445323357456c304d64695a72413048726d58386a325957553252655a6d4e70633635745457517663723755594d30762b46664c31774e5a57564a6c4438664f78575a6a7078794e4b2f5537384f6678383958386d6d767a6230773856386876713361594e496f53564b797448644f696965505737775670314b716338714f68545550484e3554326d63324e436f483652715872624737714f666e6e50396b6e385574516467736647316347304d4d633266584b575a6569576c745338435a663856326459664d7553695767416936627673474b6d6d7165524c6636336a326a5669593966714c432f47332b306c2b4f2f6f5a35376865615a6e6a63476c355a42454f5a467a516c675256505a33614b5731364a386d4d437330517830306664573856484d334b5a7354552f63613156692b766538596d4d6576354473567a78614337557a4c4e42457932342b674d3167775656534b6b614161466d6d315044744e37435a734a57632f484a535368784a69426b335336686e4a767434694e37766a55656b75783738584a3344686e6e3265736f55454275745579784453347853544e5045444b797479694e3149556961776d42674e2f7133765049554e366e2b6c38586c324b2f73453747626866647142397a716b71633075782b3256774776702f47366557726c422f587059445a7155385950744e7972316e457a45634d446d483568364f312b4e58772b5a2b4234444861757a7a433150556a30756d34307648664d385336445579485757797378456976616b5443464b616d522f5a59594448787a485448304e6f766e68623657427158437876496642386a7950785232624467566b3344616939304d766c4d744d4631476b3741306371616d367650386b374f763955546e4c41437a6761354f53636c4f67724f6a644d546977702f5838663139625030387636456550334c765667304e6e486e58725a4551784d5238542f71526258474d646d4966447a354c6e664d6c6336523737346a764d784847517767394d3935636d48462f47374e744562632b4875713931625861586a64616b2b5352417a565a3848585748734d736f353863793174427a4450354b6c3936444d654d434d582b6a486d5430557a613836733243584c386a302f495955753036496a665a6c2b5035737870636c655763663764626f567a4f455373685647626e38373179696f6b55333578364977356e694e56755a46657655674f2f682b5257563456306c73553845714d754b4e6d5655523153726a7378567055446167706859662b4e4b6f6159486152655a6d497831476b652f346c4933437068686a697a4f584f6364693245713237585933526c30382b485365756456744562426e386c5074632f48726d4143704f555367622f4836784d784f653858482f41473466566d5430793959392f774150307457754e766d65654c637874504f764c6531594b6b7a75776873386673596863376b36536158425a5252582b2b72644f4d765855422f576674456271356a7051656c584838776a356f6e6835734644376536434e544b72304879414f715838754f4b6e5a6d7a4b575566786339616447776c43456a573253754f5965562f4d58763468596e69337156516d7a51465768697679564262554f4b74643572566e5835497a35655a536c6959416f7a31782b35364b7630675034744c574653732b757468724e596e714e6979386e75464c62637864446862516d665535567a4c64386e5372713471743863477752615753535962766b417132317a486d38634a305273627a2b712b3738774b7a6e614a36434f525746652f712b64306464644632584e56334e355250784e54614b6c4a73796b6a646870664b534b3266424d6b6e4c414145614a7474372b6f6e632b705a693146464e79324f3233764770706f544f4b3167314e464752656d65763544754a57664f77683443307055394b663234306932686d63566d656747503831624c6d7955717a4e522b5357456d6d6b785075664c6e6e7955705767726c677a767a63384b766d65787450752b372f464d596d5a6333746f2f71646c76415646354e357670625647626a7749732f6c4a353259696c4c67362f4a4c4c70304d65657756634e354c7164506c366767706c4270425165394e503841714e7162744b31323534357949485a6f773438696c44716c46486c364e325a35486d575733492b575332455a6a7a5a5a4a48644737334a7937763841456e46333341622b67456c5432757431387877762f4d4c314138362f4c58795a5070463664757271394d764750495a7150494e794555624753506c656469334d6634566c626d4e6e36526c6e726e5a6b7a38527959767330774256384e5637707674394f6c45616352613361477476682f6f4b5068336b716c767a64625330353869702b585673724b54782b506230553743565a7a59705059796964766a755450394e7a41426262366272506f796a536b46586d2b59786a6a493236772f444e6e58634e54517a464d3064536d4a66333672634b6a506b5175642b724f7069782b797862382b7849703675564e4d79644b794d6d782f714f6d504b5a694f4d697a764866444d2b7256444b71626e315655364e576e466b716e77456e58354470554a32594a514f326d567962505957584d5370625459646366777a2f414446382f51544d7848434d794e71344d76702f446b386b6d7569316f73364131343269476c5a347958336b6c6d5169423347656252325055316a686f57514746654f7a397a31664535564f416c63666a65687137796c5276485330394b5630736b695a66484a4b4b4f533653382f4c3070526f6b5a306d4f73796648797a77416154534d6479784654692b34304e782f453872626a3851795a336b7552326957356b545070627358372f33483472744b4a754939734a6852624d6e46782b7a3263556f534435557066326a343648556e74312b5839784c4b4c436d306c7a7873524232524643725a6d5175314f34354f706f3073485954796e61624c5a5a4c4c4f756a67764633457070492f656b5453486269786372795a6b6c74576366416e72484e7a3236634e314e6b6d676e2b567a4f736e6546445a54373879644b7059504469714f4e4b4d4b5a43476e337a53595445784f4a42666d7141416253336c55756e644a4e54426e5555766246515970485047747a2f414e6871543861526336715a4533732b35374454384b766536416a6f654d5361326e397a517266527556795a4d655076775a5261776156497a7a38566d576d2b78452b6b3371302f56346b32726d3969543443565630744353596d5936427850566d5a4b64675049726566426e77787a544f7366626f46757871306147667a2f414764772f714d6a4b7751374f52634971552b7868395a523876384153496d656b4172723533784d464c5958557a4c48753043352f727179317a3256324b7659746b5a645651687858554766657535376558744d5034304b6d306631414963376e58446b3158546f6174425832466170376550544e4a4838695535756d706863354b6334356e4b50693970664f6d6e3969594c495641734d3752493151416f73706d5a7757517830632b57706a346b31387a364a704b6e542f43794d584d556148422f702f77446930414953557244374c53326374435237354959737176682f754e6449765854796b32794b743068486b713138466a4442704d64386e4463465031564b6437674b6c66536a346f6c6336387a6272506a6658447a58756d3564577561685354674b7038393631376a46645533396b3663444c67533949304f41466e337061463642565a5163444e656c6c2f536b6f6d58596968314b6930616a54394a66323351782b316c57633968476c33735373314b4c674f42586f5a444a496e7a423948566d5a38414d4670394f694d50664b5763754e6a4f734a69357850394161514d49782b5677696d5751414f4d3046664254775731692f32646e524a386d5654507a6d6878597a485373334356576b687a4953514c7158643666737044354f474451426b7254523168392b502b47352f4937507a636470726c7a784c61524f4b4b394630532b63466e6170566761752b343143355a6e4e374b776d2f6f446a584864774c63526a703050694a524e463557757556666e52727a6f4c333161446a7779352f774257546a586f506a2f72634d456448686d59664672645136314370496a5a54787732303047646630616a7431487950306c70684d4b4237644c6d69784667304e5362674b596b712b454f686770484573716965756452503036334e725856665a434b4a4859394c4f504d307a4653366d7869306e50444b6e322f4146414b63534c4163456e6247757778626331724f39737172746c2f62785571563645755253364d5745434e516f317246505073695377447251396842384b7761757a77364b4b333141546f39536c656b7038644c754279503355746e7a306a5148375837705a374574557a332b795a744e48617a344b414238656e38417a38413343762b4b3131646a733471466f364336666841412b6d51646e5a775254374f742b4867676b502b777375754b595068515a6a35567473526361527451396b6f5a674a6c2b514e424b424e4a2f58355156425a37497a6277587351514a4a53566d354b2f6c423539576269447247796a54685a4366323153304f68793531544b647653657879694d5371476673344370464d772f6f317239356a7744554443784c4a70373752645576756c7a68544c57692b433667493069766b4a38364a6f304b6a585a386739456a5952425a78526a376a486f445976737755315573696a51725151316e5977682b3479366a2f58796b456c4e515364475868436c59445033726c4f2f77437548514a776b415047327945464e394b56722f5166494b654f5978386e314f513576466a5532696a684c43646359763658667255475a634133433370516756327371327338347075634f39324d7169715357486731555550706e426e7564485a4b45346c6e32566833346e482f414f387744353657714a6f4375794575474367714755352f534e7a4f75736a43796d6d656165534e45793571454d49515975686656736d456b6e6a42373254634837444164452b584c3148447273746a6f6e6f66797868474f5a4a7a50634642784567304a2b58396a6d356444665a33394732696c6e4f4f2f7742525474415a4d534779384e2f4b36686a2b36316f756f576f4a3157516d703857566b6255376d4f49637064532f3239594a4d443662367058636f55494a396f356f543935426e555a784b716253335353585831487a76575a6d5770746655383635516c384b76694167397650717241302f7058584136657a59745a4c39435565424f2b625261314c4c623753353149544679764e716e65795832517a755749765677652f4a515966346839676746496b6e476c623647746f363350647539724f70534b56616c485349455435626e636f6a5955717841506142384966622f6d696c44706d4158497446545a632b4f7235704c4334784c63352f573542416a32746e35576b3676327852347063714e546d4f3756772f324c58632b626e51616431374237387a3470705466373278386547505251744d3645756572704c543179353172797957774f432f367972446d634447392f6f4a52666f5a49795046374d6c6b33585555524c6339425456687a36707a61464d366d7a4a58336b3435716c736239674156654866662b69576267565134447a584d436f6945452f7939394d34673461766b5574366a65746c4230726a3650314f474266346656796754376638414a464167344e2f48544a664568617a71696c6c523736757a71712f6d6130793568556a4d37352f72756c2f794c7462756d6e3769774552494755644259755663693676696b526a465251625a575050506e6d546d6f2b7a79546c4843466a766b46636636367668635372592b456e633453774d45353543634d79562b7a346443656846512f4432545030487355344a33617631307042316e61325a3473496c6c302b5447737575364a4f5748324a687262585438713130523032547a4e76686b3739392f367251673532546641503275547a697451505a305774636433782f456f46663044774b77716e525753374c714257427a684a774a5243372b4e317034454a356578486339614930736f587863776a784f7277334161775a513447304c314b75704e77684b7636386e7832677672335a566469726d4d61336b645265365a76573264572b77524f54337062374b4a7a6e62774246372b7a5575726c5454516c644e4b704d78546b534433364b61442b5157646a49537247686270763841337258384e6b6e32434d5864476b47656e6b7a613178317270655249446a6b71706d47513063316b702b706c756c43482f4a6e4b4847545a2f73424f5970536c346b4230437830474c7447716b4636455267493035706c48337648733653316a4f4647596f416e59765171593657676b42394d326959456b5a3353476b77427472567434787650737a3533366b62504b315a5a6774586430614945307466797854334239786d565433396f487251426354527036774149492b75692f37646c4e4d38565a316a485030317262385656634d587844626e713074514f437a6a597858483850556d6b4c2f73307a63575945594e7454366563447874696c57494854526b486b76532b6c7145415837686e505063756e486c484e594345504131457031367a4e6a513737444154615333585071754758556c353755554d335876415a4e5577586153437a754b467153375056375a697136542b53786a7a6767766f74714456493169624b714c50652b63555253555079783277714c5a3072697462506d596a2b46336f7079514834304c39676e50374745625a6e547a633641736a766a386c6d444c79584f6d43434d7a526f75646230473272634e445a58665a6f5958317536326859497743304f787a425152744e4e6a7155352f74505741696234696f37796179436d535243643154782b797570614f6c7263443449706e42326469666d4a4e5344585362546c633973507a5247566d676b6933374b5767684e2b53474e6f684478563638783266332f3146576f4363395877584f466b7732536c382f48473662397a4331716d6a4f7877352f732f57514978304b7158517a7335713156717a35417250726c6e4e4a484a516e4862797136774f6f6341325476716c6c2b75445a62357a2b52524d616b47703343577a7a575a306779616151324b66347765327a445a54446e545371397048534c6a6a4668566647493039614975642f764d452f3841306e4d425574747a7967647050744565395074574d2f4e355870364f50506f70356e30784d5556326377746e334170635045792b2f76464355674c2b32385059356e5941767039342b3537415a334e585670667964476b764e4e4e6b64632f4b315276355247664f66782b4b4b5a3668304b433648456943534834615645326c48564a304243313154575576376b33744a6e3230525854586c756a32524474422b545539737a6d39593653576a794a66522b4d506437336445314f4177526a79656632442f7743395a4370336464644b76734b4674615978736758734f5245795338537051552f5278786a317333363455757a6a396b666672776d777853366f772f6b5a57563647684552386f796d7751557357334e546856426e6171313157734673354b5773453257554348574d4e4a6b756b47704e4e414a74737434414c5179522f646952515a3735574d62374c54304d664a633669303952486a79302f71774f795a704639776b7a2f414c67636a6955756d634a2f71414e67684b726b6362623055736c7331574f6e53304e53456552584c62506b56442b2b735633334a3045777359506668636d637861453658707245776c4e376466565a6651716d4c566d36746b34617a565377624e4f734e4c736345547a79633749366f666470447872416e7043752b6375473461467050446a57664d4456387a567a5542566543656839794e6b737146547941454a55456331376d596f4b307356726a684769525051706f346e763156416d52706e4164365574616f746b55796c7351756d7634796c786479666d5270756c586b446c6e474d773236546c332f6f67613948326566596b2b77487a324a41476d592f61505067445461743738696e52694253737965414d2f596e70577a6a6c4a7a69366d6a504c53306d64634577415351524c2f774453644b6166644e747565554b6c4e613776464b2b6c792b5a316976462f6f6b6a6c4b3870596a6f31686a7664704b536c6e61524659314254326f317a47494e4544355175426e3935553830757045314831576878756d63566d6e446f35365768704735314a556258766e5438314172544d547569626b69507a4a503841366741673353474f5957557a77686e425a58544562636a543566526d79307a36646d6a714e6e6e364c736c5830335057424a50724f41714364494730706c414c32726c357a32524f6442484a6c5a4675693845796453686d674b4a34645450796b3145796c6c6753736c417568337330783038587743637553634e4b383264334841697a6e31553430553147684d55386644516d4b586d696c5a544e593434626b3954554a4a6a2f414965583575736c412b6e5a386377382f54666d6462624737634331342b5134744d576e572b6d3353374652546d71736a5951697244316c7738795655503841747368464c697135397357693735546e2b465454482b5358586c765068494d366b32766d786f6a345a4b7a30557a79383939633864585437616e54314a5a7369776742496a33326f6a5363376c4c65597a4c6a4a55383163376c7650684973535045526c7a4d427173322f66656e366661724d745042526b44724f4a61374c6238767443616a4f46797a6d52514468766d2b51302b3579724f3539664d504a6446667a534c64704c62726337713534343051506e35577546624b4a5a4f5a706c3133325035416f5853506e366d64334a6b754630676d414c416d556c74476c71616b414c6a7a446b454b644531722f6933386f6f2b57764e3745365039446d7454597866443676334b505356326e333934346c677a7842304f575a4d634a4b464c2b73656a64366746626d6e48304e43715850633265506e43715755634a65366b6842376a63514d4d4f6a376b386550694452357976304d36633658736e7944536a5165346131534d2f6339612b474a6935427a434b5679712f78372f726759314a644b663754514e636344654d56324e41356d7353797a754174636a6d6c4c444c327a746c4e4366327957646c6c672f6f41447674396a6744764263315150563151674e595a687a35565166794e7649382f34375755613571797a736c796b4d304f64484a4b7078642b506a4f7a4f644735796568374a6e663043794a477769466638705546634c42514d316e73353264397955396954597858374363326639686971445175674b442b592b633463356744776c556f6c644e5a3248763841494e367168757862426a63767a7134355a663841516c64446a2f6a30787072593166752b75317176326e71562f745841593866527162764164797556535076374e4d6a37614a726c30795a53654a5767687955477066785853696769574a6c39626869616d6a482b7749516833376e50735367434f6734476e303561686372354756712b74576d646e632b4562744b6454774d6e54452b6d684b5a70772b794267375339595439493830444557567530754e704e2f567370585270664d7256626e357a4a3558536f637a69566b6c5879684f532b69366b50634741507461656b745433696e50535471374e4c6c4b4b476f4b4a3172674a6b39584f796646553569485644574a546935796a633168546f4148383061616d506846745942414c2b4679686d6c554337394c532b773157644d32705370326446772f575a3369684136654837484b45656944543561615a2b31436a4f7a786231663836313163376b386d354774394f76584651496774685545497271614475634e2f4f55386b496d745342686d6857744e434d2b6c456f644f535a7036786f7341714e4568465963716a4c2f414a6a37566e7250724f6647517a6d66564b50394143677865706e78527273485152454c4b47547a38694c7154717969684c4d4a4754342f4b5967767568396b32417667645a372f414e453568415336414479574f374e585261504b454166654d6247336f386c70376e436a3773335365674b4e626a714d3079623337424b343669536a346d392f52676d616c57415a495632364e576d4470424e6c464e4372615a35624e4743654a6349735a55686b3958477444324e2b6256624d4d67476d633168484c3941696b36584a706f4a6e664e77502b306a4b41794f4377694771507433536f64524d787a326673587439386f702b47656e35776c444743366858596e6946662b337344376b53727979564a4c51444b4c75496e44505a554c4f4d2b516e4b51707768576c4c302f4a4d616a2f6f48464a7142636c526164773972646b744d464c464e6e416f56773376316c7a58636d6a6f4b57644e6864397276684f5a7168344148304244383059592b4d557571374d4b56416e57726c633045305a304474487a6e55757957646a75645039456d396d6b41654f6d51535855744277394161784f65706f61505842797558367a6f34387574387a462f79416a626f526155697175755a6e3953364f306579462f6c326d6b337a475a4a53594358565a384c535a71665a35555444302b714b7963373254646e746d32707a58794d4b616836374e753653772b596a3666776d755a4245524243664d39336c34615631434735557736514c6f6d4e53614c4b523656466d646f7564457861557545574c43586e614464396a536c72506e75506c4e74713133664b41466c6c31504b5a4e4e6e6b3357654c7a63315a4b5034315772326e613231305155647a6e6144424a33634e50614743624a30476c536d415076542b683738544f325a32794a717569574c68345570514956535538396d6771336d6133536c4f564d647071685465484b4a30315433434a6e4366584e306b6743506a49485531413631364a4c6e6f6459776f4f7878445737516f6d305932726d3037434c4c526531706678354d2b3556316b2f77446d6676676f2b75716b794368495a64565056333963374452647a56354e44382b5a6e3653736d66516e59755347484a6b304f397a61425a565879673341355a67345866635a7866506d426b35373254696c6e64536747503841757471746e70677a5978416444537066694f595857554a2b386d743867422b73364934456b7a2f6372344442374c4e59765a686274314a5534475a64315a4c5059504b66794f4d6835745a36355543695850364c2f77443478392b4b697477553951412b7a6977493645464e6449746f792b6c6b465a7146585072685a704e314d344c3361635a5166574c724e4a6677696e71424a526a536d594142594144324f426e54305158584d727052326c584a326d736d5a387330386776475432712b364c3051735653767678754a427456314c4a7659732f636639414853673857743833614842426e765a632b744761784579574b393357545135444271375255364f71666a4262637877684b6c69546d4d464173483967507454786771546f4f7543562f633947516a566d4d48353957654b31736a32506c4b6f457a6f3450456c4f5948326750714550473934442f4167446b656859756d4e545a346364716551524e6d5657456b393154466b615059695035484c6f6f4b697775734576716370347458784257483662546a6c4a75524771753379626e657661656c4472356a6962446c73484d646f6d5352624f58467355517245417050737a52366276302b6d3842336a4b556f4e394b3068314e31455349302f5879437154342f545979644d7472725639396969544b3054716d2f514e34794e446a347868444f423339614e75627372796c52746f7935766a526e5651645a585344714c7673756f4b796c534a32502f414a425875557076736f544752484e38584670634138612f684854366442587a3476477973342b5545565a756a4a4f794e4f48756c583967625a682b35704b354e37472b314141356e52644e3842672b314f71675a4f323546622b35795a49644b64532f335630355256707a5373616f755766595a505577306b7430392f7a6d756b3075414666472b514876723546426e546247537453637a346f5a327a2f4b6279613871736775554e52476a7638417a38516948466d45353930706753665a556e386b78457a5043426c646f794d6f736c475535394c336a375a6e6336726c3635484f726b7373354e647854683653792b796656713443774936572b796a73784d546a4f4f41545656375a573454775049342f546e51424338586762516f48746e6449597036554378446e3050616135565469457931544a2f56466e395150716a6e7a4e6575314145676d6b657446566e564a4d465341367950693971464e79682b75736b77384e684e615075506e77312f445362544450537946756b784f325676695258486e79752f5659665875535057646c487546624c54375978476550707363756c746854424f52734b722f4146422b74646d49746a4c4f347565756b6d457557652f6f674c4250516e5453366f4e7732664a544b7861797355306a2b46794163414c705649637a6e764165334f6e6d715a6f5479723044586b5270526f3475636c77304958526f65503157464c7a4e74375245744d4a47775655427864426e5238316971545370457a45356759567a795a6375615776706f70554e644a4b5536684972746e5a4776536d646f4e784b6d726e57346c73574c364f4f417a78306e2f734571544645544d384948326e644c4e645a4b365948614f6c5136695334354e43786a7a6f756749467a73373837593452314b48684f62322f5963794d6b38496b706e613642436c616b4368304a7458477a7336586f354c462f782b67366e705135317777357a4851736259756a484861733935394953643374673963686661317348542b44362b70446937527973724376324e626c4e484b3859387a7163357a6c4f7933425252564b74452b526f43644766526f4e6a6f3530477a2f4e2f714e5a3846387a2b3135757a3638515169384c64626242354c35544861716d7069357376773565592b7a4b3036657257736c62307962717037496178726e65744163627a676b614c4349307872476430384b3136666354654254752f66384162304b34336d62483149753768553162464b492b664c453754755a79646e4845377666634c7770414139733755302b384b434a7a774e4f715738715862316f746d556a506c4e515a6a494b4d366575655a4231796c2f494d624447746f696f7a53337348567161313148326e7a7837506d484f37726e4c6e575875576830394b46766b58476e4b703179355543556443643363317a616b685039633064346d796732477930503074616963694a6d6351493843394f7237576c6e6a666e70314a506c61647264467a4c756155444b6b4864382f32575270476566515a4a6164502f4b4c2b69372f466f4f47656e4c6270414e7949536f4a62477a614c74504c51784e4c4c56774339425a387235346f334b6d543164557663335746695668304a30356f4e5a4d62414d4f4c58375568424f6466555536536e7075797266596f34645a6e41654564746e324732616c7851742b526e4d7365632b4e624f2f4d2b386c4279414775576451317a41786970797a444b524252532b71574b5331794b65386a53785770304a31767a2b566a4c794570654b36486154694c45434e444166773248626e382f754845395746444d4c76356433527376782b556177544d3758412b6d4c4e2b7251317766376b794c6a48342b6c3871546e4338354571397a6863446e382f7548386442583179487436644c644b497a75523968633964575a71764d71557547694d61776c6345597a314c396e4e41676e2b4c6e336e546d59565647486354727462544763535532492b632b65676b566b716e517a784c47656b54537873656f64566a4c67595054623873796a57415532642f71322b336943456d644b614b72626456334a6e6965336c616662624973356c4e494c705962476c6e6c504f696c53644a4e56444470466f5147427a2f482b676255436b7251657032612b662f6f30305537756d32336c5448622f56396a6431724a563045746379616e4430666b4f59306439795a497a2b454a446e7635636a363978614e64343379353863617448722b5a5935354d315253796c494c2f6a69366b3158665a684748764a6a57314e6256724e593567646d4c726a57664d412b5a576c724e37504356452b4d746a5031584c4c50502f736f38686f634c4f74417164416f305a6269374d6147646d4c706b676b5765316f6631667365655156737a3331624a6f7670356f654f712f6a307155796172744e49545466666a3757354c417064594d65626931427961635642396b544c687348517147767766583941305370456c314d48385562593371694a555579655a554330586f3373796a694e667870674659536f3642583372685a4942556e594b30543141663841565154696e4e38446f4a714b4a4a4a6d7976652f517053677a7655567232396d31326958454575686c724f6b62365774643879614a4f6a374b615a372b624952647257614e47396e794b6771784a36357873443639355a3875724a383161757568536644304a5573756859795a686b6f7676704c364a797063536e47732b5959366d6a74795258367441795a4d7975706830416249304b6e4d36784d3946644c6f786b47346545364d4666586432523149456632584230436662465047665830455a43327865667734713448537a7735502f334f77386c6d36646c4d52436d567431546f757879552f4e5a78765a6e4170515a694b666d2b616d6e397a37767a444563344e523039392f624a754c33757265436430616d304f3436677447742b6f7479432f6d4574304e4a523936392f7534662f414f44557a704f74377a79474332554c54704d6654704c6e504d342b6975707232792b50356b516932687445357048734c4b4e534b3559695642744a2f774172534738774d4b6442464e70616d5733556471303155305a6d5a6e75317a646b7354586a3158797479425a543263703647465a6f364350686f58792f73357a4a3557546a305435576e5a6753334d734339514c38656c307358754c6b385273447772715a335a366e6957612f4a666f6b6f376f653454474e6754545577456c6d75544e37615a76754f626339726a494a466f636b6e484872645852426e396f6935396d764f7464417553327a4266635765364e584a793479683638344638364435445748506e645a6530713766697a3569523746336a2f6a4f5264366755623266426c35576649612f34754f314b5739385858527a4b474d447347543531554c6c6c2b4d55462f796b41414847387a47764e50494e575043305976716f4f7235353557433457742b334434746c4b6e48617438643844534776423439396d564d4b2b5237576e446472413158456359453949514f705972346c2f7742617a45316a4552786758566d30787353575953704e5872624a2b48643753706d306c324d544e6e564a7a2b626c56533465307932424b3566514a4c4c45743967704c72777062643941524c4f76315a4931454f614a56614a446677655739374132482b63584748386350374570464b4a6a3470324230425942486535782f62396d6751303832797263484d306157646c753456726d5a4e4338774b733945384b7938645531477363695536436363436f3936546e6364687a39756f2b46694a6339334c3539415871675852343634545844613772584f7a726530386d636562386d626e3769644c6d5773776a6f58486d3657657634705a36414359365554545544553433377a313442565764323671743349574736696b2b364c723957665469676e5264504a584d306d6146614a624e4a62492b75584b7a374b554f705a4f59394368615859383867356e51397735707163576e6e476146377569614f3836684b717566443357326c52576650526f4d53797749554e3977425248396c41556578686631584f3659335346632b2b6e495569484e676c363279796d782b716357766f71727a61672b6c446555734b66666b755a4c524b6b7544786267545343667441327a7267624c6541796f73436f6134724c4e664d4f786e417a36744a3974696d3277646e6441336a6554745659376b7376746173524a4e34664d726e7653495445325738414430445462746f58484f7a434b71374b4e764470444c7243586d6c6f4e4d36593832616334347a637568373331664d416378446f396c4372457a55572f642b7645465345713070712b6f706d5450577a556b746f306e5a6a42625a482b76675a676753616242504c676f5a396478384976656d6476734674416a6d4d7666343259554f6c324e4f5732462f77436e637a37744448344759515839784639306171686e316849686b464d376e55444f51416c79503062767332352f50376852334a4d792b653736775a6c6465486e2f414d704f656839534f6c7a5646794a5a5155564f585a5a327064532b3855326152644d77546d777850353156447657616b67437646466244794a5a75364a5047766f3053546839474a304c72334b376c77755a6e7a6c4e557635314d4b7866744a7161535363392f4e6b4f663562507771732b6a50354f43386965793257623255575436554f3263644363695a57624877484f5a506b776a4c5277446a516e4b36397039364e47616c465a6e6f482b50726f703079756b6870375058694c705a576b56363745313967375a6f78457a4c2f63724666566f39727675545449707173497676664374782f774251493939425156434532467264746f78526553422f694f6f55553165616f326a5037514f6a4e4e6b4a49344c534e5475506254544e564f436a55444b39527449395746614d387334553959726e7735696f6e587853706a35717a5a356462706145363170636f4f39425831725067585a7a674b6d2f6f45566a3965333467745a4653334f7665304e75326e51763752386853304f74684b695475737a6e777a6f2f334d544e5a7a574b58324452414e49572b44362f6f425a5353567a35384b456a6b355531333358777936496f4a46684173476e32714c4e5036384d66794453795935307a74645471555454644b64542f414f74684d37755a72354b7334367171744148613378593938655a63797853583537506e746e3748326934756c48343539705642665a73636b672b5a6650754e446e4559746575725455714a756e6d774b6d5a71777a3448653238794b62796a39674e5353614f792f4a5a2f456b6d466e74536b2b47356865313379523666752f5869475552747478724d70534d3932316f78446e4d57334f694473742b39777132326177757561466936474a417a48326f6344737172334f44704d39373935363842426536414c686f4e56436c306a49487863436568764e44517a56737a6b58543377706457755572674a3474536c494c5665345877676444653830455974314c4735797451557842546936714f4445436f4d666234726c746a6a7a4e4135696478306f32304535354733695164422f774468414c652f2b6746785836372f41434c496254637a756d694b7252305753793870626e3672704d395372475a4338316c55732f3841366749754e4c5245792b67637842533269686f61652b766e6c62632f4237346e4c6e7175743868716e38533863386667375332796d793278614a3557346d6d354642557a4a59546d506e526a2f48383046476854797a7174474739497a4f6641644b50457647386e77667844786678505078636d69624a794d7a495a707a73317157683546466978364770306d4a7163306441366b46796467396c6373546d4c673173636e6838385769626272416274436d61716e486a422b6731394c4661457766656d5444306452504b5137514b366533576430475655643530422b7137346b794e6752796b6a76586a7a64386974776a6c636c5734456b32726e357039316e3346654d5261644c633647336334436a3048664e59764c682b51694b744a6b657152467a767337326577415932644f37782b4a3665306f753233646371616a6836726f574f6f7566667374716a2b7553307a3059394e626b6362374a43324f2f77433942384d774353624c6f305236485236575366574a723048796d725078342f4a4442644465315a32314c52307078484e6e62533242596643795a303068643969763643503176736461726669644444306e6f47756254656e5465553266686b652f74777150393032574f6a5a6b56534c6d6e4d4a3663707947436b46574741477038764e4a6933614f2b555278313152324a5a595636307a52624a57776b36572b6448585a6b586b695349725643584666794476656e49756e596359474a30756b3065564c51302f342b636d536154366547717353514c4c446264333755387a6c4f5976726c4d577162687a6c2f6b3269696a35416d2b52336e6b4959356334576632494f363437456b316f757278776255555330566e4831644d2f57613978554848786f416c4a7049492b67795a4f6475584733686b46745534706d5a3470765a78736c6c564e7a37636c787463554e37324f5239334d5976376b4155657a373545357338593562587a3959766b7743302b385063783935615948476e4e6e7a766968656d795a4c5466384155566b4f7a692f6a7073356a424c50435736666770415668442b76685076797062552f514e4d397a56367a4b2b387a51652b523957796c32646e364b612f7055704f646b6b6445666443643033753075393739594968646d6c3265632f6330315a2f752f586942585433726964425a6e764657673957307874302b50465057365a77347535423832574c574437782f6b484d346a3547386e5364507336514a4a6d6749654e2b4f6b6b4d6d476c756a5368306a36644b42797339575a7069463875646a3741747861506b79785976342b474a3376516a374d7a556e305a71564c7a74505a744872317842664e5a6c3871366373504f78546158374459754e476376345a35584e6642377457633676686c4c572b7a484b39523244394d7a4d7842697754586e382f7547476c6e5a7875766252714631396749434e48656c49765352646f714c4770526f337057592b784f62734a6d6e577742557077636d52386b6c437732446a7157337a5938357170564870554d675230474e30465256616d6a746651727a33716f616e557442776f4c7642655266377538666638417479577841507162426c76303636614a646e6231707a5848795257747a57526d3538544a6e77565938476c79755766746b376e4e6f6f59596b57553176592b73616b2b353976797742793839695752397669723075353171766f5174306f75766554617033386d576378506135505761413934395939556c4f74384b57736d57314d7474396645486f384f4f4f4c794147456749344432557756344e57583353574d636e3831664a4870754c747861546d4a456e4c5a772f596e502b62394a4f4d4f525633627558474d6a434f44557352486e39773033647a61475435386358313532547a476d466d4c51395662473945536a41577261556e4b4d314f625154674567446a583750316b454256322b6c37616e36416452632b61664d796c305a47357149437063584f577166503337785536436666316e7545565459356d5930676452545a6762694233556d34577a6a6142795a592f6468524e4d7a6c71744769666b73315331504a58644434733071477035506e72456e6152665754522f2b416157377476322f34456d3163537164386b444b596a64504d76795130422b7079754d666d556d615a4335362b707362634e6a41373863344f64423161766431624b5a4b3737654942466c387059586b644a61734b723375686c6a62522f4558352b416d3250626868616d3979356e626b6f366e797a725a787268596b6a4a3365714f4c2b72666b2b2f33426b57704675322b783655515a4d792b635679615776524b756e526241764f75797333354f36503841734835784c6f54716f70676b6359547a4b396e6378586671367931337038486b485745694c523836385a7237397837584634304c525a46517864454562523070364c766b4d5a314b597a39667670316e4f5a307130706d4a6d7339776d576d6664444d73616d6b372b314f34724f742f6569476a2f48614c364e504c4631556279586c5755514f684932646e417754544f44766548736d376d493246304f6a6f746d6b754766496f78333954716c5032484d457a7254643171346149656a724d5a526e726d36526454505545446c653877446b396d6e485a363665767344445a63724f62496d743165786d4c5a526d6f49713571354b774a457567644479585651784e46735032756779476479577a4f45452b2b6b416d50514e395974433647616a4972716e6e6d7739423975704b4b2b5a65394663735739693559786a5935524e637151516756507043696e3930714468742b585033666d4a73714f4b724a6a6d7351694d4c39477675674b65623459394d767835736935392b7632746e71633578537a736e6264507751706d41442b6b4b6e486d485337732b52425855563273464d6b5879557a5a7656595553566f7933593257394a694a7a7057794f37764a4b656d6c337a633977657a35484a424979336251485667717869467832614d7a786d6f324b4d764f73716e536c744b35666a4631785853367a6556646e544d4a712b46727a544b49456e684d78344268316456464361375658762b4957495670326c4e4b6358502b735753444e784d7642736a46632b65763841627a63354951664b5a74656177674275475038417a5032473073375a447939505a654433517148536363316a305475795a5633566a4f41696b6c722b4b4e55776d4d79753143445a565446706a6f46366c613664415172563842727a394c6b57676c626f32486e7a753969482b397a70383872414974686e43397a6c79425358326673532f77437565424a5a43626e63676371694c504b714d6f4b4950716d565575737a505a7a5036633635564e6a5359702b487679714d50664438786d796366624f362b596a4f7035633465564f7a33746e694b71526e65716f474e65756d71497136517347616753484e6a467a2f414864506a75664e593664507673446a5533725850574f416b464f6d6159586550506e4458546d352f4639453870733536696e5864546d63674b6c3038306e316c6976726e46534c6e47647a5a6a6141536443754a786e48415a4f31527938756b5835305064503942485174716f744b524d356b744e4b68425878396b71585a564b31764569366e69594f692b6a3575706d6c6a7235676c4a6c5a766376324f667761736c484951725638746d7169716d366348644e56444f4e54474e6b496971687a67635550766e73544f6145556d414377704832364130646e584b69357a3756767567584f6b36352f6f52463348346b31364131543669653965317773363161512b56394d76444f314f31417a59746e6270333650597235726c6c564f4e6256306f6d6472552f526e544854786a324b4757704b53696f3458513676536f634555337334734b6a34773966397a356752586e705155643049492b61626574726b444f64426b502f693572723057512f4a6e30564d2b4f79686e50663334702b4e4e4b656733414d7654347246794c736969736f645636362b386d4a53762b314b74664b387651397a666b2b517241564e5339793166746c6f307a4249433357363831756b675872795870304a5657615177726e75654a6c4e565533694e536f342b75613435624b535978326535696c552f4b42702b397861302f5a64635359726e504c3143434c54686c516968444e626477373475714257686855697032537a5079592f75315131412f4e4574544f473334684f6c30592b2f34575630687750366753474b6250526d6a776230386574663359786d72704a396d644d784e4b4b394853586b2f71574f79784d7873617973302f453533734d792b3051572b50362f7142636131525442333539424e747357366733506b6f6e6b6b37714e2f6c417343466739556b5636676932333548702f7a4d674248482b356e3956416f7453733053737666303141715050304854356b3055763058333249674e2b747356425659787942736d3668527037777a636b65546971716c51664430552f534b6c4473584f6c562f68486878456e6f61696d7a75363636384b71716662516566597453714747796b446a396e633174624f722f726f42485033777a4b51376651714d4145682b464772524130755a2f42786a51786f6b356d6d5a4c716c4f514f6b315276632f714669596e4b33434b7a50514c34645a782b55636b6646504a2f35646a6644743663697571506d74346c2f77427a733636353139346d68726d616749647858506347633050722f4750446d7450475034425a41715a6d3479476c556e5850767a3068544a382b6a5079524d6c6a612b467175776571595651726362426566506230477447704b5a4f4432677255346370446d574878624f5577395430657157786a6d3676436e4b6c2f3866443151357052315655732f61616c714e4a703578394d7742546266627843564850476e535075755756314263716a6754513557735a6f3675647346316f61453548434b325a704355716566447866366a2f587a41394a4f667a2b3442537952357145374d63464a325366795952633047302b4c6166304568787938725139375068377545696967785970536b474e2f656d626855384a4a35722b55444b5061676258466d57525377665454725a396d526d56714d6d614a4e5a565378666561414f6f6c567052694b68553455556d5a39396a6d6d70525474763841692b386a472b70484c626d53616d31624441624c465a39556432634e374a374e434752576471564a56326633355a4a5161326d2f375135716753756746444d7251466f4b73684c6f364a6272356f3538784f6e7463324539757a6a48506e536e4f7a6444546c6c6d443748416a5a3339646e50356b7755477371774e525334382f6e39784d43316338364f5a71395570624c712f7575486d56436568396c3072686c5879656d3555763248576247675a6674484c2b6b6c7231566d59666262484e3267616655644b587a4a7a43744b3053656a726a57592f794e62387670637a4b4b6441694575554c5a796c6a4770442f41466d446a61424841436367307444343636592b632b75395339695377766e747859654a7175716370325878427353756564677a416c662f774162362f574d4e4971656743746b2f4e444f71477579644c586c513465586d6c306c5230724756796d51777261715876566e4b5973585231764848776e556e52337167435037394d4d374d36682b4c5a64646b716d6c3454786c7870744230723771797151493041794d6a75596d6a71444a7a327667346f7661676162686d4d39774c7431645636345456774752326638416b6a5a4774577a6b646f3831382b526a46524b6e61797970756c5a5970507a66595335463445356a61514c3277484759375730335451496934546a6879616b30514f7a44594c64436e4f6f356d78626b61522b724f72555754506c4a6b33475036716669666843595641516e2b31566131326f7965394541756d44496e726d544a6638414c6d4b454761522f795238645972506f6e5070715335702f543967304574592f47474e634d3030363534557a6f6170387051567974374b4a7a5648396839394f72534c547a53354f3973776b7a32664d326b762b6f45382f506c4356535478533278722f4145336a6c63716e3355386f757046535a6470643848437a796e55396b70554f49525a38716b6b744c6632302f77426e314944773041645a58504568764875546a535343537a654f636956756e652f522b3350503831456b367971596b652b347a454357745856724530676457584f53702f5569564e2f346f67563376507574422b6a33566a6b6d6a65524374597075396a57724946483831417a6b4370655543466668666a727056512f716243356f3963456c4b796d756c58526a756570744769372f414231686f355535524b36756c512f795353714f6268643730437075794b2b577174757a3570554b7370757168644572524a5944574b2f673453574e4c3548537036682f576f6d65354875534d374451736741312f7741666a5a5050753867345549444574374d5a4333685939376f565874314945704777546d6f344e4d354c4e332b3441366a323247637a72356a366e5473567a5a746c6b756d374f634f564e734c6f57792b4e2f774153586a4d4439574e69644432652f4a4c327266384146774c456f572f394a5a376744784b586632533176376f514264586f74542f4d44354458733758626f4a307376715944383255696f6c6854704d436442396a4f5530684b345030426142464c6675647564646f36426d744278614567577a6f7a6149344253465362354a5355746b3945346839474e71516f76556d6453513431765168336c434e43316c46644933774a444d58504e33534c4a6d62484e5259354757795a582b664931684738564d476344643832394b4873437638415a7a5772743437684d6653767a5758572f6e354e396c63666c666a4d2b6375384c6b386f6a334d674a585a3064717175457a6952356e754c37684a455a5a366242492f6e357a7645725678504470494b74585964673354704c6956587a4a614136526f414a746f6f3561515a50576d676946354f476b672b52704a353744344c6a4f7965696f722f414c4e5a4d35614f5375486a63323870643752685a48624232656569587133445037757a737558643371306c385a384c56656c4941464b566630447a5471725a6e765a46506c586f58316d724532576c644761363034316737736b32473732455376644b71353732695536706b43496f2b59453167335a6f6551395349386e58466d624f652b70656a725479646c6d61615545652f4e6a7a4f4a78536d567854716d446976734f2f5a4a61397a3171472b4b654d2b766f446b6a744535506f716b58732f2b4c506f726c386764705a74614a5a585a646b6e4543486a73514f2b516f684a72506839315050744b63623067594d52485766347637674e4c7a744f4e62452f4565614f33374d4b4a2b304866506d584a5357443237595979786e52557031795451726f745370547665465044667a32766a2b763667754f4e54564d49396a69737961466f5137616f757157446c68504c647131325a2b694b307872662f456962576971626f796d7632714c5241507231417a3668547a6e71556a6834306d6233535370306b6c5577334c4b7267382b4c6d66476e6b386f726d5978366c4853544170576b7031714133663044774563735574656845557145527647684a5932624879616d335175793533636f7a3668545664324f354c516c704a732f7741635956664e51514f4c727035426b574e466f3573374b5a767653793539537a6e7a65653675765235585a696864484a595447513045367a4c70366731646d6439384363716858303166314d544d644175553830756c396a3657624732756b3477785a5944375056653561382f516d316f666358625068716f7536766e62304774332f50667672414f716746556e4c7453644f32716f355462646f396f59366d5561515a53754d496b55315a625073554d7a324d515a6b492f4854375a556e3274684e2f6f46776c636b354d36625130396131686f57374f4b5850666f2f484b6d574352315467487379634e633770356d74345269356f45632f797442544b5168532b575673376f76643350664c4254544d4a64696c4f372b4c35526a6c6b7a5330793950535756565046384e34696a34335542376177576c77415578456f68766f317147387861364542506c39666e356133505655444c4b566474474e4a61793166437633396e6238546a3152344352655a31676e6877384137714846516165786b657635427a4f6e4332696d47723769554239485671564d6975376e7936366c554d5374454842726e624d386c4e2b6562347a426855724b7a712b6877615846576e324b4f6673307432704856544d504c3733774677374b475272596a6e744a6c6e746a4d57794b4946396d6d497a4f413069795a476b3669696c4e474c576d2b6747585168664f7739524e4d716448506f355631734a6379324d6143567046585933734b7853763044776d3174337967494d574f7051313830744d6b6e4976336d745650383943497031574b536479307058444c4f326f7334674671302b385a61514e7766433077714a435556583643533146687776445347394e6646566956426a55774b343736716c474d2f7a565a744b774d67645374785669624f757055595172553862522b76694a37493951383178385746396656526552676c30316e6466682b34644a7a72735039556b4368446a6b676f304e637757383039353543545653557a2b7a536332367a5169794c4a4b4663554b496a5a7a51304b6f6b316f585a374633575a4270563171304a5638546c6b73326d3772704d774874376c6e4d4e4e7548497864784b6f66324979362b774b3656747435647a43685438363153724a7935657a48517337456b58366d4f673032352f50376a47305276696f6470354762524653697576527a6b79334c625a4655787a7353514f353930314f54384e6e337530394e3355476d3832744530744c7638415652724c3552344776787933627562466f555a3552517a63554b45437a624c52312f716a4c66627352324c58482f4874634c2f76436e356e51423756324170467164346d4a6a4d44582b6a30323134646651387538546d785736486b5431356d74343237423533503879707a4c6635757962795368586144304c6d51366a2f72334e616e566135545856754c746e7372746d635247524a75656e5067486d2b62756562357669754d546f7648394a314f4a6a53326158463235773755315369312b54324d7a39427a4e526c54536c424c6d4c33484e4d6c54744470737a48444f42584e66696c522b503073663541772b7866594c6d5355314a57543335585a334d6b364c703242486e705452724a6531533577726d7a633874464a3835543034414f2f436f304e757462726b753336354a4833526b4172425258356c6a666c3863386a71683637594a4d6f6b61544e334847393348746f637978507a546d6359376858756836616f756e766c7a4e7a62696e3145365642737a4572324e6d6337772b766a353748526e336d3147796a2b592b747970524d4f564b6e786e784c754e70744635372b49356b65612b6d464867586b74437457764e526c6c5a4a7058323562513373797479724e4b4836324e725361512f44706e6a7a62516661707272396c46365552706364516b485246356d49696f35382b7258707074654d616b766c666a306270394477362b6a5667324d334471734e506b73642f7739507355726e54756e70686a775a7846694b597a6b4f4836376b42596d6d766174717a474a365748574c385a2f774136367656586973587936586d5a75654f366d63725a6b555864624b4c553056756c37544854576c3057713664325463385733665956785142397964796f43706f3539585232395058723544717434743557472f34396c36456d76335a4661383955396b6c474c6f36544376304e6c2b4c434553352f317056637a63665959313159734e31786f5338544e54766835356a457a48674c387a2f49364a6647354e466946707072485478747670352b796a4671534a61462b6a4d2b475839636e71534a326453342b4a6d2b744e70556655593668436a67542f583349307166342f6c305774306a2b4b78746c3932564e4e7158784d683035344a38393331583051544356526362394c327044356a6e6d594d7963314951666e714435564b504a3730542b2f6e4c4d4b7a6e6131444e4e39483757634666364f786344686f2b303376525445376e317338506d5348374c325269504341376f334853775756506f527277456d5448786b5237557a6730644671394344736833702f664e36674e537079506253416832463166435449374f436c4d6973664d7656377754774c4232764a716472437a615264624f63577072795a766a696a74706f526e7a326c54596d6967685376657042685278306d47624a5048484f426850644d524d7a6942784c3964667a6e752f49487a656e3077394d746e515234694e666139373142516d616e2b57526c366363632b4962386250532b57566c486b796171756e717073544b67463834496d5469364b6157794e31754e6f446a307a38647444473679444f7962352f474e6c456b7a36382f732f32376e53532b4e636e725a2b6b54435079464c4f4d5441636c477848545934452f4e4e6e6d6d5a6d5a7a3146327a5a5a564a304d2f593072566c7331787a71696e6f35546266625a4375594b6433336550384b374a6c6c544b7235484176366452716b48376643597536424e66422f454e4c79307454796a4367386d2b4b6c717649745448314e4b72506f5479334e6e7a386c4c386269625364734d6e7a5845567631307767644f65766b7462714f537a566d3052314778554c477a4f30386a79446261795839313570536470504f32434e6236713739542b554d6157444c37553641526754666d665a71705679716a357672793469516550592f51377965717650564e4f48617164614b3676497a73524b3831304d3130374e457539575038546444534e6243656d65677a6e7a4c7077442f737a4d7a4d356b5876345a35703450695a394762744e5767696f38676e507a472b6458516376676d324853445430732b6865537853646a4a624c3961687a4855356f4b41776f426f4e724d544d596963534e6f6f39634e4c51736e7a646f61356e4c71754a51564b4f4f676c58705375774b57353748375648524373656849492f4253445a7a70356f4a4e7030393335684c573865364b65506433613655564c4b704d39385046574b62592f5967727a7058727a47782b314972396e7545587359354b676a6353726f5270567633544953795139744e434d59453878737348386e71793558466f64676e6a4743492f314e51596678596a5238362b7657616d6f7a65484f6b627735394262753366622f6b5467704266386574484c57486b504b6149506c78654e56496d67625939793939334778304459587a594d6f6e557a397170476b5a576d4a494b6b71642f4e6b534e3270754a734c4e666e7a7a4e304f7830646a74745173456146767a515a2b51726b7433756c5370532f33796466452b3163465569546f594b57564d546a4f4f414936422b4f766c45584e762b733445685071747167614f7977516c62446d7756657a7179544f7570307a503050334454425339746956685144344347557a66386150512b38646d6c4a5274336a6b63393438307354394f6e5575536d74565865434b72703354395976375a2b365a5a38522f762f6467535a6e73696770504a6252716f482b565255636a75534e79355965564f64466f694874355161374c4d3159564d6d4d442b795255483852724e774644577a6a3261614a655a4d7637716d6f64426c74734365445443454b37516f71596e345439732b664d6a706d5354544e776c4a583742536f4d6c4c52516472554d374e4646656d6969736d7a78352f77444a6c4f6d5050647a3776365a4c4b76537658776b753752396852307a306b6450414f38496a53686f4962334431577845754c5a725670794431636964454a2f75614139476a6164787a476c755472492b6e7a3242384a6d464c506e5973446b5353423037414a5571354676466450784857324e4530535750735a454d5a55616a576665756b5975746e796d6b467548744c694d3341516c765674544a52507273414c5952684669586170394b4e502f5273644c6c53752b4948444c52476c6e516334474c706e5849787141534367654f45556537545a4a52557146326b6c45316a6664784b364e4e63714a6c612f5576586e55636f6c5974626961456768537479367941654151524e56356f6a743754484b3662356a5433544f562f376f4b756f566f646f397930383743787a4e4f6a76437563543038642f374a36556343774c447a3768484f56314279315a2f5146546d7548555368676774506148472f704f376e74712b7941646231686b354669352b304f5034567a676b5370426d656952614e467050764e704c537745783876617654764134412b5a6a3238484d5a4f76333044785a78714a77715438763744363154533037337a774d6e427939486c436c3662386b4a6663684f75347a5758752b6a4b6f724845355248372f4149574b39383375597959414f433055316342377775755638756d3643427a7255766c53327073796c30303536676a7a5671474871694143467632612f59357168482b67574b4b6e74664d395a743754373358696a34624a6e733662623435656f7935374a2f7654664d5247726864397653397a47754c762b66516658303558435a47793979717055702b486c62454a6d625447316e637a5451476f505171496271694262782f61792b736631773537556d414e5938395677686672506152673079446a4453665653795047626d65336c55315450355279302f4250316a46754f6144674f4976724c4267664e4a326547654856776c4d4a303871706942664b36335466466f4148446c67486872715a484b4a396e49444f6a34576533733070584e2f6f464b3638344d724a43395465774c58526e79315541334b2b42736b49304c3662412b517147484b7357673159636d372f414443546b58386a5a564b42517069713045616c664e7649722f614b694f515870626e69413352685231544f4b46617a79382b776543772b42396f462f47446c4e4147686e7762716c394662714e534b66396a48637675644e7270654255524e563752306d72715773666b427869737150633551642b5368497272424e316c74794d396b78566a2b2b515a316666355238557945757a2f6b6f6a4752784c4b6651564c2f414c4246532b554e49412b5551436b4f756a68486c41636f4450533553327a4b557a696f337234756a4c6c6e4434573472444b314539584f7a732b4d514258503337506362557041766343714a4133596b5a4b39614f3055717a53644c4656634a4e4d354e54503478732f5a33494872474f61372f4a7a654a6e436b73305038546252785a6731716a716b4b62684936365364437a4d7143326d386e7530632b67563858557365724c5037485a436a674e5a3868392b663357665a4167614342387678706568497843586343576c3955326134693559773555784946646d76513750634a576659417a4a626b675a4763786831797941386d6d39464a4f4c4e7a374a367578735064304e4b55316365706468497243597547335363544258507a70416c6a4254375768316f675a4269552b53545376474b6857716c454150655447787a5a724a6f506e3671566e624b4f5a4c766250556b30394a796c66537053626d6d622f7441427a7337756a5833342b39575565785071666535623356446b6e4a34636f55645a4b48427376706e58556e3970575a3164535a455a41626861424b7a4a3050645569784d54722f6937586e4e744d367336314c2b6c5135565347696b36715770756378774c364e42423769536679742f7a416345614b7a5a38705549716b7234326b4d7161344b3974674962563141554c494f314f37596d7055725755635541665a576b6a4948476b4873784f65374e2b776661725a474e536c69696f346d564a6f47476d6174747558387a6e447a524a3766634241507a68516665513973616b435575784e624654566d466d6f2f6b3361627a6731632b53496e6371792f6b6f315830575842505a59466c556f657a67476851754f517836684a6d6f444762714b5839693665323536492b56574f5650314675683169584a4c4f495466485179364e616d442b794c397a64366b474b702b5a5946794a694a6a4863464c6d3031554a51417843706565754f636168446a47396e684c3255357357566f4d507372666b6a4a5050333731384d334838545a774935475644666d66706d4a5564726c37496b7143682b374b6d55456f2b73673947703079324f56516d586a474e436731695a304b6f4d4f7561447035434b54766d43656a6f364e4e4b484a446e6337716c4c6e536b784c5034716a4b6d69524d4c4f7645515a784c65476b35674d2b643458752f6f44426c5044496331744877435448734448727556336c6b7656314a58546c53686d675652424f756459384d532b486b30362f30626a2f41465141363372754b6650316e507376706f53393172507141505754636f7036732f384144327347502b50534a392b51423737334541685341384170644d704b714c33356a56353870793374713446413138376c4c6a35444e785653306c504b74597a2b316e754832456f506e4233326e4730414b5064776f576d6d5175414e5848577363524144554f6f474670353639424c666430546c5344714245666a3246695a2b39782f4f4339703153737a6f304c644e6d4935574a73783571422b6c7335396c6b3834542f7741724371697a34303565684c31692b42374f302b38484a57745a4e414c426e55742b324b45356c6442324b31596f32392b782f4935687157763254636350796a4770693367445335786a5657416d73526d424b32674f7230657a3943774865384532477a52586d415a75513143766b355754304f36305a7a7130352b45785851536c7637345a4f4d442f414b41646f5a6f4d616c446443746d6c444d74597853597139785977764e6e4164373235627a704d557977633633732f36554c6c704b686a2f734d65476f615a74494a3331754e4f767a73314f5576522f6b4952444f7173302f357874747933645375714875537956666171756f722b546f66576b44746e4b54364267685376745571504672796158635a55617a694e474f64424a314d53377361787832667a577755624a304170634c6743627631356d4b4e762b41536b496d5a52395879556f666d56696e5a5639697a36324e64417572635965643376782f38416f4d3554324d347269513979516135724754464f544d2b333559444c2b48584c396c653132637556637a59644647696f4d69592b314a6f3057346165357555616338506b30716d684d32582f414475707065354b78466e4f7076303277436c45654e507a5370577a536e2b37564e2f49717134764d356d34746144747963754f6a596e6f2f6a5236776b676c6966684c32526b34686c5645464c6e37543167463344453278536d5a394a35314d46714d3944456c6b7a6d69696c496858397a3662503841754e597a51564a38733654307530795342374a31756f4b6e667935416e3474493757764f69792f335976467170796b61734d4d3039635a565a394f64526b6b4a6b3653694f475a73704f736d54313079557a437872676c3347632b6c6f7730324d4c4c2f4148342b4845464a3059315a2b67394d5047457a4679666f57546b79366d3633486d506e74584f664d6f3551415674494a632f642b594955795336656e6d5933575a6332614f516f574c584a7a352b55303579512b484e7a702f3150444771566e313652354c33356a43614276416c4d416254624f336341584c374f526147776c75456374393051626c4f63766c7a41367a6f7a755644526c706e5843373232444252376d65385442347a4764413054447079396a312f3748364c553144743668334d2f506c694f774b4271666c4864497452527a2b2f51565051306e4f6274657748383470503244327a6f584e50384f68485248752f4d47624e42546f6e456a545744357a707630565538717137437855376c4e5373584d3732677554776a4f48777353527832552f5856585361522f724d4e70697964666c4f6270717a383074436561784b6648695533716c4c48512b5854724b644e594c63356a6f6a352f6d6244536d6a76542f612b4e505473656551516a434a5a662b4e7866593148675647682b67664a52504e77522b7874325a363656383436675a786449416971655a314d782f5a3642394f627465764e62704962327a30526e6f74787376794f477258304e4b724a4c3447557172624278696c422f48392f596c4e3871592f655641544e5530624839706479615a5049372b624947637a626136736e4e582b6f31645a54577675473939737061552b4c397a5965794f6a5a625532577963707a344b302f4e53614f2f43637a6a454233487843737a73542b3034375173556d6565487568616c634c47316c485056664536717072663465657136704c6c6733514d44374f612b7a55446f796f7a2f61657342517a4a754361365647594d716573702b545547797476574d54546c352f782b35625065556570522b75307362376f2b4d635833414a4950336e7277424530357a41645265365875304941396247756a795a61644357374458657a4e6753782f475a7662494679394b37336e3966392f7076464e6f574f596a30533949776c6a304654397268666d567842334c6a6c3036326a33344a68792b714677364757374d305061305764365a67376e466f4f2f774362357450326672496b477044626b4f5a5a76755232656e4e3556654d6c514a42437046366c31617a7368582b3336557569796370524a625575677971656e594248536b61636254356a376d682f4c36626f6d3033366d6535386b4f6b504a367543707a32564a726e6930633967745473487061696e7351623576625059667a546f51453077514a546e3448385a506b48634864617a6d625033756a7935376c4b716a71433269665058594a2f396f64513537784c67682f7476442f503254734c2b676b314b4b365a34444b7975696a36696e5147324e5049724f6e716658584d577a486f4c664c5639736f477136697a326c5944705538345a69583941757a724b5a787652586d6a7a4b74675578674a6f524572527079632b4867307971396b417039727036322f41784a2f3654575a2b3176766a4253484a7a7545505535373255752b79574c44544174484a327843784345746657664b453652737a7839333257554e466b302f734e72454c4d774d6c772b7a726b345536786f75726c58536850463539656168432b3161694863466155724c55585a5532546c484442345568384a67774b3067655a7a5875374456326c586448514e535a7a4e613149423168537877616f35374d6c446e5656532f433668524f714a5050724c4d6c38644f4b51592f39694a347a30573575666b7330655363633934396e6d54426f576279746c6b3975684b35645353726146414f373968683030754971552f476c6f45705866526a593269615437345856524d6f75693049436343487331624961565378716c6f636453536564666661307863795a767439673069483135712b6c4a4e4e306f30516963484768384d64555548536b486c44476879315335654c6f5967444931496d5659632f752b7751424d44716c5356514e5248436f303536744c51626b36576373694b70714376533662687a79674b35312f774168326268416b44624e387a794d6a57766f452b477173657a64692b7738325472344a334b6c5179526959306453524c69536c5a4b2b61525a3944672b786d33536b44343372457144376f525977756f5548306b46547033427a674a6249553843483261756d6757315565324e6f7833554e45433651754e49306676336e30456776512b4c4f547073514c4c70626f355059684b73793031714e3765456638526e61584f79304b6a376c7a72616f6b6742364534716e396f473549434575506e574a667930446242525a31593644766f6a796e74553573304542734b464e6e4f2f4e5452336e574677772f77414770724145414243756279307555636d754264515352386b65366f674e30756c6f466f63374c53354b763950462b36666f49346c33484f53487661314d7a54435073375239342f74557a564d5759314956566536786e654a3035584b61796c637653474c356c32636e4439382b78393978702b455063722b674b524e614c76765a333276624e4f64715a36626172364a337741786a49352f6b2b52497a444c475332634e36505a396164374242764163594b46327256637a6f35487561656864566c6943496d6f717357327a34335447564379514b3562763331787251436a734d576b7a76557843475a34373358753033742b6b3272702f39553076724874524d4b386c6d7652534f68564c7a377a456837706c6a39655931734a5964346f77486d73376953505a7561483151304e586a7a46302f4330414e496e4f7453523578585068685932565856517a6730326e386b3961464a55413737443254557473586d55644b69476f535a6e3154796a7967724a4f746b4b63666e2f79544373614f7a47615361644d2f50734a4a536567377158495375557a4a2b69724f75595879795532526c4c3947614637347151722b42552f7949686b3531506541435530683042642b33444d41484c30462f763761524f6f524e4d7936567a46776c5247317a716c30526970664b42424e6a6b674e5a6731767370596b6630345153446e2b546d7135324f69536271704c6c6c4c796d566135694b722b513071364f76354f6a693535702b53763976793841327545476e4f6e6c4c6a41445a61734f742b717674366a6a536f574c587055446e346f48704a6c53346e5273374c56524357704c515a416676546c4d424a49642f682f514a643158557649676a6e31553463336130636d63324d7752534b51414936547a31642b743258326e5178585354544b63427a7875486e7a7a674b6f387267314b376f73694a33382f6279746c6a494e4c7865732f4865617a4e417a7430394b4e3375783333793472766d34544a356848534a63745876647a72414779654935636d3333565679547976586e727662327a33513346424767497945386b717859735a78583969633678364c705467536f445a305649476430343239774e6142387834526b725a6c71702b7744367457576a747178696a6d2b61314562375a567153534e4353466975732b5a7971666a534b4f6d43516e6a72356950555471326464793548354c597177564c6e6f3974454f5574694841484c3450633451596c69377269524164685474567052464d426b5075414768722f6a7152716f5a4a6d4870556b2b5766714958386e4769624c586d3074307672383778775851735774526b6b303070636b444d3170514d38625435683371356d6a5632796e4e37637039424a726e346b2b34736d746c4c5637364679574b4169752f6375755461474551415a4776764f4f46535443416471546b52734f314d37547a71315a5930535a4e7562795667634a6570796e5273426a6e5a394879545856386171716772363666595a67357a432f7078364252544d72344f7a766746636d66416c7a706d51554f75724b4973385175714854446e6269546e705348425a502b6f47324a49654b36446c4c4273746849655551305151746e5a4e446f314e5757732b6c6e4579716c6f444a6c4a315033686e5576677a6d5874367449304c6f305573567a6745377038683850362b53775a6b6e5a626f4b614c6d36617a697a4b653035505a4e36376e557546552b4b75616e765342314d626d544141634f6741457378594b5853307254546d56366157645a4f7935726769643965796c304c5773556a6d545148385a6e39647a67554a3054796c4a6f536e3679444143476667594570672b5672644a3330333833732b574a6944716d2b325852682b322b4f6b7863433775726f544d53314c646c415938442f412f7743674e7a5a3668554d716f4f537954314f4f594b4f544d6d4a676162314b4b5a6c55347a537359576655315a2f424a53536e64396a53497a495153545870706735394e72474f7a7765485652354e4766507a484f426676393962782b77576f734d30564a34742f774257514d635461616735377a427577736d7836356b51364d4846423161303044546f3469476139526679626f376d3066723270584474646b5559632f51754c36344735385a4a434d7861634b3731426d6d4b637936733670376d673761587450466f3331386b30515857704e48795a746f383474664a67706d53496355665569624578316a415654564b676d4a355456324a6c54574a6c666d357a33772b36516d7a304c362f35564a77314b736331596e304357557a6d4d6d615866644d41327a5370423948437a4f57367553623567664a6d7a4d726f71666e2f774171534738737a2f634c426e6375674f4a56396370676f6f2b77386e42503259695a6e45423732617839476f6962556947686256636f697452686d42517a6165653950567954317359787a7034552f565334756f5761667073644a7a76734341326e31467a64314d2b5365324a50767579705a58336c6d76564c715a49685859484f7a4879585134305073646d704c6e305a356c6d514c4977572b63546a4f4f412b384c734e3234796b66645762556a476d4253616b6f67347546314768536d664a3456576f6d6650304f7275634c5630634f68787a2f4b6e697867444e484c3155743245554c3756496265634c6a736251572b6e516c76547a75745956444b32754b594b474d376354557966422b682f79616e345141712b37594773715561664c4d672b4c474273726959724b464b45386d6c63516b665070396945564e4e79506637584b3935676b6b6c4d345938774279374e4f544b6a6253334e4c3253317a4e714452365531303965674e65694c68314e4931366c4861735666486347706a754c2b536f4946644a6f50747374344244766b4b46356b744a776b2f347442674e324f36672b32474f6a6d5331566b2b4b6658794c30696a31726a72577962395a387378423369684d442f707435746f54656b6d72705a4b7971796539307a6c667957685a5059783148584a703034314f6f496b736d793961466a6957626e4b5659746f5342323870323144425a305173324d65585363536f61656e6479352f524b75464d2f446f774a36337348696f365756614b6735784e4831374c77702f306b354b696e6a32764d446d747a774537746553747a62553246444677315a43654b6f4d74464d75667a4a63587430482f52393374354f433066354f4e614b6d733657346b666a766869737a5879764b5049714e475456783576715453632b55746a427a646e395535484c31694a525175582f4a555255756353785549664c315a4163776e6a61323768454362333651516e38386c4c6374344c7366506f726d3035686c34344d2f523062524c48732b47577a6b6e30524e544564534c7157433558752f39315144386a326668692f6c384b444f617a4e744b6f7a567258535a32696c36716978333356545238626450505659352f4f72714b615a4b6153653578694b657a4857496e6841696e74576a4b6f7a32624b555037425a466a52386e715a706f494a30646e7937716c367a556c4f745961412f4974494b6d5a4d61566a37464a692f7141377269346170444e396a65472b623761753979366a2b50504859584f6573506458684550777075534c525a57355449453163544f35553945776658792b4f7a547a4c54557465784a546c35735270626f3531576c314a4c55766a57552f4934536d68716e565878307a71686a6a534168786e554e6d747a2b66334764656b7975586b7a574f68664575546b506b446c4e517733523031617a2b65536a6e61412f494a2b3075324d6170432b7070645445616c4f453356426e516e744746734c6f456e6d3545386366584252556b705a6c77726b6e7a334f304c49334451754e734e59314d65665436446b2b33676638415a644e6573664d4471786f533839466b7566526f3639674c6661453170443544504b6a373051424e314a7579622f34386f5a50655052465463373541547a394c644e41617031705a7443716b6954547a6e4a3530356f584a51466577526c6f654e323257484c4f784a6644725a364644386965544534666a443272456c686d37714e50576f6d596c723953464f356450486f4d4b61793057615938367673756a6a713739454b4e61355379554334334a79694e4a4237486b4950666e30356b4a3046484b79434a4232304f4b6e3631756470565670374f7458323833744f7459777142694e524e476e6e7775674271662f6976427a787a5575464653712b796c645763386b7a6c444c776c554f64386f615633776c6e355a55466e6963724f6445314f6a47634f6d663630515054414a36655a716670682f563547734e4d68687a5346424e6e46593930354854426f5433666471515a395430457667617059754250734d42665a45545a4e6c7374466d6733575163686f30742f4d546e42727275592f6c31443030475a564470617a4135503841362b554c506e536e7048367165674c326b6f334763506d4c5353592f5a30382f51393439556364476854374c4d58712f3139347358536935476b564135626b392b476a2f41452b3467554f48534f3675654b796a326c31544a636e36736566433649435857692b6947536873374d76726d56395a376a4d3254424d66444d7a2f414e594a4d77573030535a6b65784375664b546f35712f486c4c6c4131305a354c55595435756c4e78447145436e57536c3579534a594d7774614536364f4171637a6e4f6549616c6f347364736d5852727472726858717a4e4f686c507835667730334e524759794477567235477751372b2b7553377343484a5833367a7a4f65667a2b342b63566e654c35316e4d363231686f5966326f47317266524449616c366b2b6c714d65376a3564514a375978613166776a3050722b32592f6c6d3645636254356a4473387074586e516f5364484859746e54684851317a6e6a48545739736c4c59556e546e7a756a464e504f714541702b5a515464396b782f5963653135694377513663303733746934694341476c384b7964707a6e546d5058476e5a7a6c3939764e53586d553667786630334e70644e534e483761612b6333426a4a6e4842695a7363374b4c72744452766165776e527a5a4f4c6545397375624c5330567454527965794569377856483331663870715577774e574d5a6e4651313161496445782b425569556e4851776e5357734f316159733453697077345877744e4b6579392b512f617964787a30675032564f51494e74703934422b4f5a4b4f397770382b4f533678774f3155787371794b4e4374314f32775646776e7a7262525279504c37316932664d49797a463952744a7067594e72396d51366c316c64735432336b31616536464b4b64574c36696c4850795769664d6a7a472b3138393270793452715733695250334a48674d427a4a316857314f2b49456c526a7330454e7a737975654b7944744f6b6d6c6e36794939545154526f614e6263754b3646544b4b4666382f5078696b4144615a6e5847344a6d31565a6a552f7a3357312f7941387576384e7a3878326a36562b6e32374a577832492f55536e7a543144587270325963564c416334485a506a7530794971624f73435a7463624674644e336f5a326a7648374f4e3378573966635732756565504f6c6b72525a7950497a346935466e3642364f5a6f4f4c4c78596549756b7a52616b506c45595250375a676e2f5366506533367962704a45774536716b427379596e7531545279554e4f70714c7675527041716375624943736e76484c57757235654e6231492f4b6c4b7a57457450774f7a2f4a392f75444d47584c475543375475793069684c3548712b35782b66715a3564366557766b4d344f6c6f474766794c6a33397061773532556d773568345853647679774634636e33536e64422b785a39724e362f3768422f503546716d46664f5939304d74632b6b6150646f4c4d7a6f6f576b4453426371366d6668506565517a7559797571424d4e4e637447626c776578556136726b6e6e55544579624e7037426e384d6d564c344a685777435431535666456e697154634767546962723853394b787a615a6f7a304b4453544d78665a452f6471304b2b41796375386a6c665639575853645145314479762f7742536d47784c547835505037416d5535576e426177713031315356514e66536b62525a5659777339566d553675786851683271714d6e31634a7377442f3176655435666d476f5066475552726574564574377272385138692b69567a382b7134317574314b34347467706d442f497069364b6e766f486f2f4e333963655a754942666376546a55625a36507034723336775a2b4b50386f6e6d6e4c4d75647159354551365248487166636a73354f37375964676f2b7a576b367a71396732333238522b7a346d4f71466c4a454d4c716369564646756e7659775354684450424e704a63395930445662784e3033472f4d315a70672f78354578502b56526c546d52305a4e73755a717a55744c377271634e4c5946777755314250506c366367484f62575438726e4b634b507576424e6a76644f376743344b626275614a7433434d4d6c72686f742b75326177397156554b68726249336b705877724b6256304b3378725a50522f7742585039303771675a796d2b486f745a543178326244396f506b2b57576458564c70702f6c4964624c644b534a62557a3274386b3079304e697757642b514c4c4630487a6e654264774b5235545735674b41443032684770664c71324272612b6c5a37706f7575696c6a4631703161776a6371746c3336587a55456950683959302b774e72682f7743615a46717832573842696e6b6e6261556154496f6c3531417865536a5833632b766f455172376e307938342b654e5a684f4377304356386f70726366474b42564230766a7635636871775936485a56557037454f72423274736a7054584a616a58436d6c75744a6f75736a454964446b2b6c754d724b5658782b7a4e4a7170684950684f2f3866303951477a5179744e5875714b6d614c6d68707a336376526d62415856325543794b64656657346e304d35474d395a31445065464b6468672f6539344a416f35713238632f63494e792f4a3132576435584a504a4b754f7164735a5a6c6d3675505a6652377a71646e33495873314d30467a74707362372b756d53584639426a644749352f5a2b73687a3263775352586653747570625472543962464a66652f57713143525765764c396454352f617970644a7253744a394e4972574a45464166316f4856685132584a7774476b464a547a444a4c713559474571516555464677464e583271706a732b4d6b737363327670742b483743452f41354934786d4d57474479566f4f735932773168567a71487844525a79362f514443545459423562744d5744554a5a3776764c584d3066706f644f4c614441754a6a6a57664d51316d487336456c314c616157715844376b352b702b767353544b707a666977526e6f3067736c3347617a446477766163584861585a7554386254524b6a54664868496a666b6e69704958705a2b706176544b714b474671493341734d646d315a71557569586c78584a6357482f486b58513777352f39706d4c6c66436872676d7474337a674d7271487a6c413757317448426e6c754652565a646631732f4c3759736554467573625156457371302f77444c77574b5068646c54303656587a48314564684668763438485266446b50706d6e48484b6c6a4d74726d4e747058444b484c36734d4a696c5750384f5459686d617552314b3657645a545247643466763472327a367574706472777072626e582b39623379676d627a536a536f6b79645047314a33676b6c35634b62757461596f47732b78433150373475634e662f546e4b6e39572f77416e764839657a64346a78543066385864746558513530344e705079326966376d5a4a525a77754a6d675775706c4178635457455876414f6646317349424e3532366550784464667a4450326c36456b734b6c39746e3138745361327a4d5346325574435a35442b33436f462f54506c6c43333643694c3751756a6c53443147776b30726a622f5551376c43523247616e73454f637964503671754f473668746a733353764a613956633963354d4b566366374b6c536f56442f41434d684b4d616a6d62594e7379752b63645766757066474e7446307566726535676456473572716267355a4e54585264483250506a4e647476666c5439596b7a696d4d48422f514261436e3778685a477642573039444e6468364464635a49737856557a7365714a4e7970512b5141585958476d3934556e58524f644c4941705432774a78347a34335279536a2b537163483869713636306b394b3362374979524f4d5a61584a424636705a5a6673476f5339376c4b6763446666577a334b726132333579415330305a5047564d7031624c455479777844727a544e67546b4b6f4c6d7063496145354b7a34317973596a6c48487555746a7165586d34505a5879776b586244524c4f6e50563248553241343275686b44704c4d3779514e722b4f73527858626c4c5834737a4e4a4c2b65396f42333575325731302f4e574e49476f3279546d65666448586f6e313239506d7a3465644d6d694d72486c62544c484f386a5643742f746c574974595a7275392f334f4a5535305141684a496d55644a47524e31515762544876364d4430555a5773366e4a704f6636716f78646d334842566e646f545a533979687053487977474a415953655752777a39513557705264546d36476830386e76526d4567546f534a48516c2b47474736656e364d36346d73414462314b654f755a4f583261416454382b6a73616b664b4a305873304b686b4e566743663256535a46454f6e5467435242625179473658326b744c7156475974615376664e3777566a6b756535625a766e79566e6e6a41386161375631326e714c49474c4d6457706e326c72704a4e4c75505935733447694d2b6974624a75343337556876586d57792f7965676b32414e634c6535567357584979666f755252504c53414e7349724b6a695a4f763939507276663841637342763345752b7862336e6b4146544e2f786149547763395362515768576d696955733258554667726a6d727a684e665757357663316d6f5065386e5839687636483355666356502f534a7262723142356574516a4e46733854317a5577324e367946317945374e4158615877522b4f32616458432b387a61584c5278614f48374a715a6141442f6841717a446a6a58755371715647664452504c5671553962625375456e5633584542337a55555476753075715934352f64387965544a5071573844682b344d706f42306e64693135496b306c6b3871756b4d34475a4b7843314a6f724c4a6c2f77416c396f31436f616e2f414e37666c37506437513453755554333875516a7a4d79494b4e526c41787a4d6452722f41506172354c6757586476746f62704c7a6452634b61424c6c57315062326c4971374d754d324a6161506c39392f326e7241522f67702b614f597235395166497034353853436d4d354f5336476378535a35596673565372582f3841455735624166306a6f2b35375461306b39366c377a79456b776d3058393446486b4d6c734d542f74357a59482b36586b31525a38755374724e7050537a3671575a2b684d6275722b564474736753416a63314b61576a453442364749732b7762716c314d4d50486e507a532b717875616d4d7154335a76747a312b39667a546142434b6e6741716e455a6a2b5652753967774278327a36795a486b466a6f67745637644a696638415a47724a4d667673707048344f3566366e6c49724731794770626753736b6b64505074756e6b506e55477139575a487035332b69716953623479306453706444516f376e58473476744373586a386b37473075634a7a557a304353547056594e76672b76364246316d54704e6e715431625835637148623154714b634f334c57795368692b30727a42702b73532f384172714e723542594d6c6741426d6f5163716f5a5a45527a42506a5a36732b7077617079737a724e43467a536f6a6963764d327175575847754d6e2f48395a76507067427a574f6a734e6a6953413274783575365137586b433751657141793148436e496837714c6969713050356a50656d746638715538393330633263636f6c54466477665a664e5038667449484a5133323852556e354576386577664438546d6e4a55542f384135776645766835742f657035305a744c594b4b5055506a2b3133512f757632554a69437632665a346d63502b66332f56366272545048496c425a6d3952637530733244547079727330567a32746a2b5a577444536d66495446537a5335585178446b2f574e6137672b55624a3642582b3238556366732f57517058426d2b4d564d632f763233552f5a4c4f6266716148626f6f7634654e557363756c55313630316447356e5357394c6963374b6166464a7044675675333559447a6e6b6b375861576c506b30335470796339324d59726a6f724f6d3879756c346c5639427a354b516f79616d74597751565452704735516359345764653738776b766168304f47724a7a39504e756d5a735636452b68423151555263797442304c4b4f5a325750794f4f623769452f64534d7633744a717071446351712f7175793367474e6333314636533549334f6f58484c6e684745697a544b747a5a3530786c746963772f6130584d2b3455594d665a37672b2b39535856746d6b3242703444544143345773376d7a7a6f71326645687a6f5351724a6b2b6a6f6d327072562f757934732b6a536166444d42702b2b717151513967704950673154706b577a3475585579306677353531636d5964614a4d7143344d364f564e464831566b4573656f76724746373666654c4f636b2b313332412b664332796c554b644c482b486f6553626d7434356d4b7a4e733943572b664a35705336306e5549424c6a473568494e56676e784a75516c3177636e55664f4a65714245494d3171782b6255552b564a5a2b71553755693354424d364b75495252375273484c32733832745a514b6a48532b4c6e734c7632564248706d4b70556c447230515a334a7750365874632b3353376e75552f75554d337a55634652305136444b6672383969533152396c4641664b76674f7444584b723379537a686c7a4d755165584b72736441326d50566f7434524e542f77426635646166504e585774547734595038415548733466436d596d4f6f63646b5230333646755370613852725a382b70594933524e5154725a6545724a45395a4f416c6c753532376e4434444e6a6a516e62396b304b674f6e6138464d37623531554c627a723436625764486f64466158616f7447373432394c3278365643326d442f685533394e4e4b5139344b44342b4833396d685371715247706e766447357966354f70452f6264535670794b47632f624479653645554f3668776535337553732b73373777617953325378745a484832716d6a53712f6a6f57364c7835714448324f64694a6264477070616e78554c5a314b676177512f6b682f32664c7836354c6648396631474c366a79374f70556f76735454536764656b47786d6d36544a3752564447597549686a2b5436693174525830314b76503271392f61584a6c71486f4a5a484a662f4b754b335079566e4d5331367155464f39736566626d36444b754d4b66334231315878556459677672326342772f5966384942455936694d622f712f4b6e323666742b5a78585042377542564e5353573572496f386569616a37514a6b2b49546d6265546739694b2f6841446459586147464d67635a6a7149724e633151525a616f33794d376a57523570574f77506d526e3166473666707271616d543357464d484f4a4a4e483941386b324839315859653972766f5a6e707952624438452f774448564f524b5756314847576c4c384e433648653153675152324470467838333241436a2b726265574c51417473764a476f434d394b7735797a6f736c57644a396c50576d2f514f55314d7a737471556b476243514c3934666147626b39437165742f774355314561626363776e4b6b626b61325a4a6f5461705756786c6d5754485077744e6a30766c59485347574778504638594e4b67544b7079706734704939416263346966556c6f62626e31377265616f4d36326c5751706a4e424d65644c47627432645a3153712f6a6b71453345786e5270643969696736316e77484d736d686d62793179334c6e353257724b62666f7a61626b766d4f306d69594855732b4c7064384e58476f6359653152717057687a5442694d2f33667278447271477633454d6d685170726c2f4e39316550385a5731554b6b6c4e38355a7249382f53712f334a6d6548584a6f706343536e36706a4f544a66752f58694a416e4f7a675a5772513436516c43515072704f325a545a2f34564361544f71735763644745626b395335717037556a662b36662b48552f4a58646a7338494144666c707870476256556c577537782f37506b4548637471737a512b376a305230587730666231436d4b4e2b57524a48374e414837514b67474c6e4558436a4d34714a4e627a6c636d587035593574385737334b36523569754d7a3638612b6b2b334a6c37704d5653396931714b6c5975714a4b58416149335448544f464563657a356868474657587861745757363664566b37632f647a70464763374443716972525769736d6471734a6276745275637365725544574f2f62334b576341545a6b773538723958713148504e4d54744a746c71313161583275324a3261663472376b505a3273584a6d7436316659324f6d32487061582f764d375674742b55684c4f6846745754644a6d4a593578394171386e374f75626d5161644571385a63746b73725a5a774b696a763232316745376e44482f746361315437415475346b73374d7a6b75726e5853386c6e4f3665774e586b3165664a4c444857314f6a59517a5a2b3039586a3936346e304f6b615532556a7676503676366d7a7266756d517447717245544e756a54785963326a4d6f45323942622f414a437a386b5959636a74563031667a374c4b6e646e6b364a6d6b352f69354e3259456b37666c6753476d712b314f69347a44575849746d633750362f6758684a54324d4961502f414553343169544c4e544e55616c6c3751514551657878704c716377586b686650384f704968713535655153465a48644f733661326e6e794366474d6a57666363457a324d656a736a715244574f734775366b766148304e6d6b57534658726238663841766b64772b5355533570773152444c6e57526e2f414358367a355a334c5a522b7579704a552b744d4876536e327262625a6277456836557055655279532f595852507059725235504441683375687a526d6d78317172594c4d316861452f317842687164784e4b6545536a63796b6b646165752b5167762b4455557134394632674374467646797a307a6d494e544176366436703737756651792f354a326f393146536a2b597a5677766c2b554b4b4934326e786b49547358745a662f704f6e4d4d744a4f596d4a31333851643157704d365050536b382f504d37633335343838672f51634e72466e543848743973777069596e6a412f5a6c464f6c70614e585578396c5473686f42416d6a556c362f4b2b754f7047754f5a304b33706e2f6b70353238616e6871466754484f444764583838413032627161746455736842557a516f7a374b2b534f6c6a6f73302f734e594e455a6c4b33536f2f37514e70486f457466552f435369734b6633684a4f4c586d4c676e363768393358386363392f77444a5136547847614f2b765a626f47744c79397136744470645a7862545947644d684c52426665686a49466e436e304d7969694656464679383266506e654f5832757373754a467579584c475670755a6f46593936564d4961425437365449784939454d664875736d5075656f5a306f69423236712f7463717866534b356843666c5a5a64503039436156795362304847342b6e4d34367a5a7a6f434364533050754872545a574f685839534f4275696c384d6f70505064307a5144754c2b4d39496132657862314f4f512f6b6e4b6e6a67307636426c656a5430557a31647452717939646d31304d374b722f6f705655396339483730522b786a754b646566333568345247364d41397a49774e333941793358632f6c3054366b4f624f4d6a672b6d2f4d6f35794c3636733144704663516955315a3463716c736f377879365563373756664c58384b766b526e6a67456f737a48747a6330505a3976354e43586c4473367861732b4638756659645461475a6c54462b3335557969504772494f6c2f68393033463371516461576458314349426c42444e433539374738626e737174626969757650725245776a64705563584c4e52784243706e537458504f5166396c36674257364c744c34595836566c6d6a5979315574787152636a71464774526c304a353839726835577978494437784d7162334e584e5037464b4d4d6c746d617a7447693666506c636d4d6159326f642b74576c526536366d74302f74345876384148334c42696a4a6e5a3355646a442f73384868674d72356d51494c4f62524c4654325a553055464d30584638374f6e55697a524f64587a4d736e624c534e684d5a38797963427653696153616d5277595a3073744f5a6e573938654464704c63596138386e7a51366f547a535436613236514a54527a6a457a797243314c6a6d3538737931726e4a497151344b32333137797454787679764861754c794c773333457269634a364b3359576f6d63615046394639586a7247466d2f563069375174635051716265416976325270352f562b485438583246385a336b7554356234376d37533446522b4d565a3732367a4f385a4e7a47746e5a794c7566625756465236464852754a7063347669543430754c56514c56417573784d54695148713064476c4f622f45354130494c2f537361744d3047664f494361356d6241316a567573352f4638595357685166444d46436b2f73306a2f554165635a76314d2b356968647061442f4933547a374d6e65752f6a70546a736a67436762684449754737503453674a7673542f4d4f442f6955535332637a6a48634d493074436157485349732f4f616a6a3955362b54517a6479576774586442666530632b757831576c5934694a333236654f656d78334b574f3636415268686b557868474b623779545654315570626a6379777442632b577151625a6e414b536252506d6b6444456461306a4f666f2b34452b30463878305939314e71727553747151692b414f7274685233506a6b7a5844576d77766c34786e493432634473347954712b743850314337383078674f63326f364f4e793255496443614b644c4d7059564661454d6b526f727375726444777a4b4f7963576f2b4d426367374f4f3451742b455a7762562f5072463958724536476a5138346b784d654f686e506b2b444c565361616579316c53743768694937364b5932435238346c797266694141615a383876644234763558572b326a6c627131754f7764537a542b61394a52686c32633435626d6130357552317768333678456b65476d4d414272474e316b6f573453552b7950747945546243644e6e7657526666315a7042584f2f6a506d535168376c6d76697075676f6c7a444f4267425538452b616e786f745466706654712f6b3273355256704862746e6f5a6d675a52543656636a492f38702b6f584974414b4b597153614b5a767269442f694f5a756b6d664f7459374c736e57716254354e6e667830435a6e72494c466b684d33317858735372665358656735505457774f44577843794175764b6c71746270766639323674686f5441376e38666c353163764a663548374d6b305a6e566e6a434c6e6539724841346a6f4d4157734630474564324d462f587879734366724e6e5358545543303167554477564b2b2f70664e4772364b365a776433725a2f6561416b367051695044642f55356e4f633852674d79767179632f697336516e353146484c716868746e4337687556426e624243504f787a756c7557326858446b4263707366374163585343426c2f4566795554306c6351745a4e4d322b697a72484131334b4d2b68465961566469677a37484d2f6d75734e6c544f63434e335151564c6a4e3445744f335379677a2b5a7a3432543178614d57624e316769716f4c446c6e53742f5855443957716a536f6f617466654e2b6f4f536c446672706d665141523369334b4c7339792b304e7030526e73304f437a423869364f7979696665334e456a2b4c6b78635937336830464e6f5950784e6f353859494d414b4149593745644a315976393363726c756c6d4b765a5a6d775436796c4754513165735448384f67306e6530765948766142495243483757362b596a3348396f684b6c7649555a73396d6451504d4c517a73564762446c4a2f6c733576327a2b457066624c4f6476654e5759657879516f396e522b776746336e5978795133526e446e646e54667a73626535696977616c57552f5a354f446b4d584b71724858787267596e36376e574535716e504b30672b543654616e56592f627139575a597847755771766b314758635462476b6369736e2f727a4d464e667975545230795332784244537575436b757a7837586d44584d374c33526d58503264616379364f34656f6f74666d61746d6e5151733065733477315858385857532b554b49786e39367a70344b5a7a6d4b4f6e6b4164563746623071733753532f3657656c78773254556a2f477a354c5a595552496d727a2f414a383255434a7933634b48724450532b77336966707a4e5148375438656e3338367643637a71716e305032773675445073717145456a5431334a36376c68443848305246564c334457747956704d413632662b70724f326334794b47386f3855387277754d6d6346544d767374435865563643526f5033464c68696d74304539307a4d707a4a39426257673433326d6e4e6270422b6d5172556573576965673137383938513871384f326d6248702f343232765955556274564c466156666a72346139666d644a6d622b5a4244797a5163764c6d63626130646d2b4f6d384b5150536c61663262634a6e4579454d2f797a78337a53665a79596e35556d3734356f6f31645830373157456479647a50586b36656775576652792b422f4538575773373731434b583042533678585a35754d582f4145343951785078784358687043576b704c56333252792f586d5262626b4e774b4931332f646b4b68574c5971485131472f71742b676c4d305a684d4564484137514556703851785048353954367445487936327a312b744654755a566438553830554e5669516e305a6570386d3970466d386e58516b506f71706350584569776e63436c504f6653537a7a6d3471644c4d594e70624357546a3059692b686f58503257797970646c32647179385671646158734d4446665745664871517342335652672b30576d497841307a38782f484f794851717a55597061452f5644726c6d7852572b513431754e4e39504f32307554316b6c4e71525a514a4e51766d6752726d6d702b49654a67674c6174757532526f46352f2b48486c666a6832655265432f6379765030394257357a5571757147544c6b6d30694f54745366692b4f4f4e3244325269394659724f6b2f35454648414e41427447704534696579435070462f6344382f39414f34324836712b466147436a4c6f636a4c3263436439754832673953585264676173306b703034617a482f496a5a304b7675596e306c4a534b757a5452625170666a5777374c656e50352f774470643672344742586a3339324e7a615a546e56352f382f343064486b47706e61305057487135416b3557486d766c3175454569576755357748326e6c377056634c6d7470587231467139395874433641365962744a6b5430563851656858793845736662394368577769664a4252304f4b3671474c692f64777a644d766e46706d2b626c64737831345148722f414476786e48386432336e715a6d656d4f4675377049336154683753774d6947686856554e736c4b676d537837664f4443714c4f6145793677536c6f5063694e7335786a694e4e504f663771486f503662386e796f504b6166555466477536547836484b7a4e44794854626f4f3058525163314c3958325351797339715172644b6366624641584b654a6d41626a32726f587435446b5236302f6b683636666d37745453746e33764750464e375479427a38667835626e4e62694a6f304e504d753873316330724b71474d2b6250357839697a58592b44336e434b6c57482f5852576c4e4b655051626165686e343736336a6d527a583230707371386b58324f736b53664a58445069346d685870364d675a4f4f453666492b317536756b363670682b627837525345366d324c6b484f39387a776b626c65482b4436552b5371435362586f4d5173706435527961354b49313547765965376f37554f517379705a5444473954534a6b49554c4e726773426b4931486e4d78455a6b624334586936664879387150516e30583541573533484f6d707038676f6b676268734a62725154753862504f6d47694e424c2b613767496a372f6f6e584964355a577475787778675350797a5453764e64566a344d30636a4c55356a633171364a63757651794752386f30646248315a5776716f5248516c564879675468474d584b7335314579585245544d34675350426b733136512b54517a4e392f576434347151356e4f3142346b6c3975505679366e6f334a2f617a356e772b33736476412b71596d51636e597445524d78412f565a527a53536c6c396b7a43505269767672732b314c46496c766b4e683356367650644d356a594762547153667954716e637a35626a463336342b6d424c6b59757a4e6e716b563351624f38717a66354a644e6f37326a58624a6a5631566247697950784d6635715646467a4a6c66584a38706e544e5970584b516c53595433787150626865346648597443793679686c3639744e5a644b2b447344702f74794a7175426d743541464633775569774141773278704f596d5a6864414e7273507446454f513752484f64754e7a34625a4c377964476a664f5a4f583049575249547a75586e686e6b5572796a54384d625932706e644d4877724c505537684b32654f5a53357376526b2b4f7652617a34704859376f713459423255526e4e6d5a5131564e2b72596e53304755384e6e526f64384e4e4c41543779746a7275746a61442f7730544e51396350756a575665553951624f6b443055485a4f2b70486b476657547558537254566d75705852796b31707636383158307463704e514a2f6c617336374c6175705533453857393539556a7134506e754b576d424c4c4853707159333756335845665a48482f472f5263787a58395877435064787949337362576c3076774751792b52534c4b326d6a366d6649714f6c6a34322f2b516148794d2f62616a6141483833734f2b5363506962625a6277435a6163744d72644a5679724863775936467a54557356566d3254764c4e2b6453562f6f56724e6d6b4a6342686b6a356e4f53356b335061372b71687a716661364d6a3845707074454e50682f466f55734f43725634796436356649756978764575574f616d4e62582f414b4e6f414954543853437a6d6d4d5a6a505153436679334c6345374e4a466d4e586e3647566c4d3866645657325a6854726f6956587a794437416a2f453930466d365a395031677058476236533973356e48416b6f333870376a5a62446f354e61327153686339747833473658556c506c567949684c726c4d6e6f7172467646535676435a765362376839376749746b624f65716d61696a4e706a7152526b6854453264543173715a4865396376584e557637564173556b53344865684e3776656c79703659775a636972714949465535376731537a496d496c3763536c566c50565a61725269717935754a797664566f46375a75642f79704d6d6643314a6c2f5144495a4766424f4f63612b63377948782b79416c594d457a4270737a58495a687332727664596e6c333867785450326f712f6d4d507270636c4a454247625146385a664e447837716d4e724b6463616f37396c47636d65685849666e715839646638704b5878394e4a6d66306d73446f41527a41447a6b38334b334c704268307a42723853316971383652576b46692b4257692b686268575362716f522f774158746e63636658794a466741547754784a59704e43534c375459616a4b7169644767325534684f522b2b393850575469434656454e4767524e367556712f6f4c6e41704f557145414c71534e56584f35303564706d2b4a356c554644665a413579517736594862763662594b3265302b736d716d6167552f41744354346b2f36444c4f777444666e617a5134727166675766794f6e6a424e456a644e6c4e384275746a2b4b45677571734759324f556333506d536b796176346f776d7a314b47656c3358773155546148784e6b4b78465651314f4c50797042564d795770715235645052422b2f6a2b412f766e527a6e7774464a42677a6a474532686d5a6e4f7a7661367569326465612b466373424a64716c7952646a6661524f586e384e5878304237306b5a75582f7742675641317a314745546147617339664f53446c6e4a2b75307a79704a656c564f6f474c79325544555a554a494f762b4f6d6a6a6a61632f512b694167337a314250315437753135484f4946597175636e4b73415254456c7167537a4e426e7a4b2b53737530645943325748304336776b696377504549686f6d5a33377861464a5678685270324a474c367768475436616165366642347a68547371412b4f5758444b414543485032536b424a58747a6e6e49626e7153306f7971576d6c306a38704d524576394c756d6f7555544f736a617671522b4e2f50656c5450592f774272462f304555557a6f525764584b497451595154534c376e6d637974476e3475634946324d423076485753384d484d2b4e687a4f7250324f4f704a675157393051776e4e546d4f7a316742584f5a6e6663594c5871454b2f6a59696a32784a424536337645654b41416a4672692f624f384d473672617a6d4351366666627a5a4273364646386e4f79322f797a597666334b732f51792f787443656347623750362b2b59635777477a3934474a7979396f7137473256364b754e4c704a75594775786c78572f62654e6c42667546334a312f766a4f436e76742b48684f734d793473507067623665676c74544b6b69702f315a384a454e48477069305655497a6155334d35446631615a4f4f34587a664a39626e764d6a63454a426d2b5870676c316b375946536d79636f394b6c622f6c47716636563150616370696b35724f2f78675863715166766579596c67526d5a433442505a334855484867366175577174713279667a4350624e64784b69624763466e4b626d4e2b38756a51363136656b344541303576306e39677a44454f62333536644f79394d556c674a7162563070574c767a3251582f70424d45692b715831773435595765314a2b796667394f594143556451736d676e51706f796c4e4c5041703756585051336c5554463069386e75475764667a5430632b6453706a61556334465130506b506f4b48313837707241344b45716d302b44424336427a6e796c4e596873307038495459506443644c4f6455507a4359477472342b7248336745466456435a7073465a332f526b7a6b2f78504f716336785a704a727a6431396645716e5a38745452575931546d34464570776461416630424b7a536255483630706d344b7a4c36584d3965616f566c7136447976354f4e3943307064562f7230425937393854774b572b7a6f7563356e414844317179366f4a732f6c53656f3570733072615a796965745355686f4e6a6f792b712b59554e424a2f7568717175796c776734424f6e4550796865694b35564d756e596573504a6131635638776a4f303364514861646463345a376973736849525a314a41634270424d784e6e49777970634d6e7a697a61517a3451306b746b524e304f4a6b6d36396336774b5a7a426e6c5239644e41695433436166634d347a2f4a4d7667464f2f62374d4e566c5353357761447030375a3541345a6379614170584c446e447a3435537a2f615a7039705748395966624748316d69415a536342737933634c36624f766c4b39732f65316f6e354e49736675684c4b78416a4f6d7547667241547735676141455a66456171414238733653707070304a47435548616234434d6e503630436f71705374496a4f3079596d776b2f34652f6e65636a4c736f437a744247436e62703741555562714965324d706c644d756550327a7064504a416c38306273785978324c2b6e4c7a692b4c4432634434586643644d796741574f626d55536370552b6d73467a734f784c2b754342685435624130336e4678633748564c6e63546d6d42425237556759696e374a6538482f38414a314b576c6c636e453164476967766c58477675516f726d5472304f5430754a6b75616c684c4e7152642f6d667932503969516152676b70644563696d777535463272466e4b2b725861384c447250336b767255316133474c2b4b5664485241656a523861652b34574353694541564b7530646173425670764636506d72476832574a314c56384c663352464b524f624c6f4a7932416e39753658384a3833784344424d77454638746253646f4e6a666f783553526d355056504e4e33726f68646f4b307233797235505130626c676654344b6e43446f3275535648422f6f4832726a4e6f4b5a594d6f6a4b3478564151397153723373517a525133726d4c4d787a754a397a654257332f734d6d63416743464552415074686b6e64506274745a30325a382b63353034736639713243697a68644e446442583757756471695158744168526148754439732f663942703948695a69744244637953536254307377564d477a4d71746b55636c56392b6646504279677747636b2b5036717638416e714b5a6a7646796e4d63436b74303576693750727742544c613168635339354c6143626c4247316d79327564684a684b69562f517164534e4448456d536a2f41435630327063333367426f644d314f34666467666d56516a324833486c7a4c4e484a6b37645a47736b46325755496b444c72464e464b667873556b3753596e374e56524b4b785154752f7070393464527936426c56527857526f57514a756b7571564e4d7a6751564e644459716237537a736a73566d796153544a6c4350745044684f2f5945777a304477396253684268486b45476c704c4f36654c49617678374c746c6b69347652557478512f504b785132537035576b334a50364443446b704759303834525633377076626c2f4442326f4a2f616143524232632f696c61414b6d3738485633526a58306964515255442f414c565679635578486564415a476a61546e515052585256335034555a7852746b714b6546324b4b6b453171796252465154535a796968686a4d6b334b6479576c344c4a57663750316b5954314d6c4c5870732b32466d72636e4e3071553342443846524f63643938594243365558486d61453548416979746a58596b6c64435765776e426f45426d51353156657165546d535a644d376c34646d6a6976664c6b5739787932374c61343839622f6847575777756d4a6a37302b78564a765166797642614a705173717a387a56716f714b4638354e6a56655078555a6e324846546e556143584f4b674576636656456c5a652f34516b494b5a2f65414f59787847704a4156737a4b48304e577038642f7754446e325a6966497a57637a5346557151694633755750444e546a5069656a32763366304879544c4e4e6d6872353944727157554c737a6e31743035756a30754c347953444d57684447564b733867715479512b4c4a72715a70466e4f3554714f417234364f7050773379706248466b6e6f5438736c652b393632396b6a4a683672466a4b32657a70496e354f4c6c762b55356a37524a39377346552b657033423346354e4a6d39347770546d5133746a46572b374d6a32465133624837686b676457582b4a4a33486641564e4a6b5a642b5a7a552f456b2f3672737434427062644579766b6b4b6c7854506670485464314a767671484c6c313057733055792f536f716e644c506b6e4c2f77416457644d3345475854696f4f6133377631346878714c624662725a75526d574970524673374b756e4a4b576778306d68554c6633795450384161517054714d4a49634a7a5458476e336c396633723472333776762f414d6775754254394330787a4e453132564d6b637a3439497970794b6f716c636d3753497a66486479565938632f67667637504670396958445a52566d49576d524d2b5846684b69524679656c4f6470486f43314e48654e43666d57794574704c356e456b696c34777848344b6150732b776f426633703941556f58506c3547774b6f305833315451766556413132534a6c316c787171612b5366342f7743515a523865655075344174477a532f3633466645716a2b732f336e72774568526e362b6e3250507a4842324e5252555375636857594374656f352b3830785832666a5a786d6a2b385a64554d315531487564384b61526a453678694a6d4c514332483466785770426c376c4f4672636e68544c4a6a6643424a4e634b7a30456e376e35332b3753705a72554659777033667958776a4346482f41425a4f314e754f593443584c6958656a3972347250464f4c584c4133332f78634d5638784638456a5a715a6565327045763370666a577165556f4b6e646361663151484b6a464d71456f63585a6339796b6c6c652f4b6c636c37703861533532524f7445772f445448726430716965674b512b76374e4546702b743854565667523677574c4656514d4665664a50325532567836484f435a31557a6d566d6a37484d63394a52744437446959306f506e6e6b44396d7667484e7146302b6f7a4e6c6443796861486f79732b6b4a2b56746d31627373565a696d4f6c53675a51632f384161766b56786f4b7a56684d616c4f494641377975546f626e4b7462314b754947736e7331314870732b6d656c4f54426e557332304f376d75684d666d63464568756e55735a2f6632597763712b7a38545537674a675254432b793143757856614e487a434d6a366b48504777484a57573147503057687a32307a414367624952422f51596f314936714b754c4f344f7761635670707052326c7a4c66726142484a646f367444475a704d75476758644e582b644753426d333242383351626f50524f564a75305a67554c703145597954396973427239525932527658664f5653536f396f4f3533376c4b6a4d542b4e6449726b6d43534c7930394a663070334d7a6c766a723062474e54714e716230324c2b792b58492f624264516c69532b576e67487776663730722b33536267655355706c76537a517a452f744c306c3137624a3249624e79695a7350386333576a366c6c54676a4867385a7a374c6672482f7334584f756e42636e35613642586c6b625a632b79534a6e2f715053344e4556463145504b536d712f547553756f64513154754f464a7339767349506d55414d364e45464b625566426475774d35316e326669423933614a686f614b573844677773464b3776306a6a2f6377752f4d585149334159436471776a534e52446f57745a7a526d54584b625165566b556b6646556676516431786142304f63744d7944715362356a50354b4667537077575a784c4f45324e2b69756e504c7172486b6d674a6235484c47674b593538326964635079315551742b4652734433756b422f414147462f514f4f3155634e4c4d306b36764c5a4c653579554f7a2f726f6b684d5a546f645645436946775a3839676b43754730416d2b49364f42516268443662334f4c75564b726d635a554a433647446f38326a54336965536445703750674857617a4c494643736d2f485459623166376572482b6e514e773450795441386c4d652b79335371717441733347375a633459352b397932652f3673626450327159422f36714651476275394d666d2f6f43537379686458794a354e6e5366446d39306a36386e52636e6d446e316c49797370704f2b342b64644c4159465648754e4974553551464f665144705767377249467174565678734e6e4f52543054456a4b696c726a72315630326151424f6e345358786675627a736a4c7a55505766473042416a79684b386a4b62316a536746677a5330615a306370344b5773584b687a43547a7452424c4c704d41533579632f77447354382b51587149776172317a30305a674b6e736c2b4a57734b4753514758427430687474346953795051506f724a6b7269514845646237412b5542583750656b475057746c506a777150732f5347663364374b2b4d733434364e456858565859556a70434a6131714e66742b4c32473045754e784b36434c714f6f377739647155532f5242766b46415a47686e39525368622b6f546b4d3142642f4c65306c364443584d737a2f546e664554506d2f79426f3277346753637a5a6c36415549707a3555773556694e475273722f696a692b6f53796e574648507347355a7939643746445038706b6b44435063375331324f634f596d3647445035456d6e51373141523375697a31537372583069524e6e386c6c353876457a66362f38556d7a32552f45514437716c72375554396e6b4e665a744c6c30595a6757365572536e2f414a584c6641465a6536677030794d562b70682f794132716e636e2f4145746f414e506d2b542b53795576316844447856783565684e4c4351774e624e4c455036756449456638413130396e537344624e3262696766534b59514d446359536e506e782f4854627a494d4e4536697276716e6c7164485258514d3874496148626a592f7376734a332b5847307042707a63464275396c2f79737a505763675a6433726e3673504b707a2b58475432453061457a4a796e7054445347634d6d577848754a6373657052772b306f456541326e72445331427042716e6f545130357a6158464b6c657641504c614c5731444e3272533256386575434c6a3258527357373631456f74412f662b306b50414270422b44526e6c7939663669362b315a4a7364504653742b333271574b6169726f6e5762474f5752464c556c496e3750684437616c4a49486453304347704f356c717a72304370726b657352474b5664656f564e624d6d6c416f304a434834624f5a3743494f7a746158544e5538414b4f4d4e4977595053754a376e505a4d327948542b746f53483846584e4f6d325a6665384d395365636b6f4d593962374a2f704649545a6f44514a534e483267726e6c6e2f4d324f3532684a323335345541516e522f48546143464935597633304d55744c76636c59734d464d702b34774253416661574144733178344761376c31467473532b554b53386b5661437071485a7553796864556936454c757966755470663334684c70704d306766733745372b6e587a4571526c7a43565849514261395638424352386f716c546e706d487877322f6f71656a704d4246464444367a32633976786645524a2b6f78774663364f614273554f6b396f4c3972632b6d716b6b4754527a524c53546230416e6f71737a2b52724531722f6b774249755345795a7949782f6f4273463039314564432b67656c4451524252487556414b6c49784b4a774548584d34327164763161475672346f66665a4d616e4a65437936494d515248474d3155767a6c5a517a4d6e62734f48375569724b2b437a4d5a3375306c74713579494764663841456b78344b56657868705454326b486c454e46637a576f4246644c65387362797464656d716855376b757a345a2b73352f774250514b4d61573855445a783656684c39712f69344941612f6b46574e6b723531647133777a464c2b6f6f58533151796a64796f5a715759364f69346673564576687134672f686f2f51454a643977424b6335306c345567385551545136784a733744384d4c66615263666e77307a492b7575634375304a31705830515a374a472b303347497344397869426c537a52355a6e55564b6a595859314e3042736c306b357338722b632b5469314f356f574d476f474b47627666306f7855483177494744323530733947584b67394f4f4f69782b6a4c3956564253516d6e6b795855516b2f7374624a6148454e503746526a30784d5156377a39344e335a5a5561644c706f704f5438526353732b52765a3952656a525936357351505247364c50754a6c55364f4b65784c687356516848764c70304c443865466a74674f5351553376736458554d712b6b7974563338686d6768453876636b694a736430644832686f5759436361785977507367665a7a506a49436e34367151484e6d5850543271596e33413553626d61656e506e31646341797068663937513750596e744558656c3858786d552f776655634a51446e64584a67766a324e6d36462f453970314f49544958374669696a5a6d464b6e757479566248314a4833384967634c58434d594b2b56706734394937774d70744f697465685a2b3569512f515179576a5864332f75557158416b34346b3256416c495436565242336b76374432522f58622b766d37534143392f554e717370722b382b6c6c334a372b7850696b74684b7761364d376c5a465779704a724e33534a6e7a2f736a4a316874496541514330374e46344c30416c6c79733258577a364f6b2b79536c506447456e5a2b556952305837586473556639313169525a386f64703452364a4b5378763957325738412b7078344b506c6c6e626e75676d644e786468316b6d554b4a73334c626b797630712f4a754e5349726a684a522f764f34704a6d48466c77776d427674346748723071787164426b6d527675357278687a6e33496149336f6f6a5650695a47652f4e57354e5338647451305675633258327661414f3478517163794f4b786d634348542b6554495450464a4e71793671764c4f7935666a32664f577261464c4666654b63755a74674f6e385a6270543965713152632b546b644471665963357670313256384249664666426454435a56357a3576735a2b6c3533734e33517a344b394b66736e69694e734a636558785364755a445172577147484a2b457444334b4d424f6b513758326c6e3955746250434f794c4f70376c78797a5a43394e33385767706e39676d716d71617a6938394675576437584d4f567a48794d544d777576506f56706b4553742b7748436f4236746d4b374e46564f72477039796d627a47523646437a2f6a55364d516d684e6854394b7a50444e7a626d6649483743542f534536514d794d72624c65416555506d71357a4e6134476f41543565454436386a7239486d506d746335656a6f564c50537154482f414b56384a2f7657557846513054555242555979635a57414c6e5a55754b494c795034706a597330565153754b523137563959526674304b2b2f344370314d793066624f635a4a663643505079687a36384e4e6d4d5556546f4d36643158565536664f5579722b746f4369426a6a565a5a5478626b2f722f414c48584f6a35375673575a495a6266627845684b41477071706e5753372b35334162796a734f6a5a796c544b72665a4b353071355a374f52696e6a306343527965536e3963306e505334616a41705a5165797563372b30614d6b304d6d6b705038645168724d3962663470313636694765774643757133716c6643366578592f5058705554653049685a71367245352b664c3034614c64437a557175566d78304b6a4461725a6375504d67496d6f7961617031357243426c55674561537036594e36564650514d68705059586f745a55564853504c4658594f6e6d527178623456346f706f7a65584f2f693644304d52614b6b79554f4867756c5433356e394f5a324847732b592b7a2b4c506c6c7167346a4b7a766b3732785372306e34776661305a36774343312b66734f43777071697a5436514c4d524d2b6d6f55467964333954767434695a7935304b4f7662733630623479567331373848476f63536a54576d717965494a79532b5768693873656f58325a6f6b3335772b61616c337373695a6d656f4e364d2b56704c7a6a544850517a72624b34795431454d612b786c4a553261444e6a393445547442507a6d6d726a33715a387a61453841556b6d4146764265787336486578762b576162666d765971714e56715a633955575a4f31665a6b7a66596e346d6a39305a354c70637064347541542b596c31414f376f37327454724d73456d4e375a50314d564371577856535772463957536a546a71533753392b70524f68674d357a35766f4d636b4c4155665a35345938777a306d6447335062566f5131572b4a586148624841697a34316c77307468696b7933584666524365773576505a4a786951477164434739544d4b65544763592f462b67495a31756e6454387a335479564b304b632b5852753057352b637a6930545a7a56543569726c546c7243765046702b347a476455416d6d5970715a706d3142464d6d686c3149725a706a685a394f5770796d6f6478335361545a394236356d4f7a523063566e4569784e6e46684e4d707a686f3937644566364158785279614a772b5345784c5631686637677373633649394770634f514436397557745570634343696f6231665a63326450454b44337a6850304232747034736254644431386a36493764455739544d62494d72527153676872544c4438363839587a4a466c516e784d6633435563783949572f31626e382f7542325670614f70665464512f595a554d5739425068734c494232324765492f7a555a38557a74416d4f314c6d6d63736f57416d592b6e2f414e6e74333653744552776a714847626c352b616d344d4f657a4c7878696e756b30354673616455734e4c4a4f556f66613774592f77447036334d6b71416578306e53366b4a564531775756446d68742b54592f2f755948636c65377967774237612b5246715679385737446c6a59704565615a44563968314e41484f5a6c39594739412f74547874506d47355254346e45794f7a3671736c4b7443676252717242744f7479444c57353035496858794b553979486f426238516349585665355579577867634244593038765059334d6e552b65326e544e4b6446744336633679742b5a4b353171595630557a416d5a7a68536a6b377556727046583033365051722b57314f3141414f787331374c64454f726978725775625a314b75357a704c4944306e362b4c4c7a4e4c3255564e6a71306b6742736247356b3377685679424c705174377a7945736e6932564a31614d334b327870376e6470783235736c326a5543456e6d794b39334b724462704a364e6b36526374365459636154534c356763706465547a2b77706e38672f49394854737976527277326137493874387648572f6e504a73766b386450676e694f68665041506b54374d797156756676582b2f2b4c6d6c6d3578776c54577a696e52356c61453330342b4c38496b586a5867734869454f6434766a35576f5754342f6e646a7a34374d7a614b7a4d5234324572553054393071767270317139437157683374464930713166734a4b41524968694a69654e756b4135526a6f66454d61327a6c70722f414a336c5447355755364f4e4533584e34794f3764575153705a4451506334615239695a6a704c377241494f6a6f44575867755a6e5731574745746c7170304d424361726146614f6d30554b69704258797575344f50526f4b34696c767656546d74397637574475717874504e6e774249753279327554555564476941646d6d594364446b314954727174316c48314b78545859644538766633386c507a54706164454b7a6d4d2f366642396630426865594f764d2f6e61655277507a3153616478537275757a6c6678685245373259355573595849645a6e443637724f5566377a732b535834415445544d64414f7a4d796c4a3876707057704371443144536a52484f6b6c3045476c786155655a656c6e462f736239496b6659456b394f6b433065463956536b7a66745348726f66705277497a4c312f576e65425478557a6c724b4c5168586c397059304b48546531497054473934564a6a3532747a694c374d7770413667564547666b3133446e61714376774b4636504a4c64504e7566626e637a5756564e2b72796635554c706a64697359364a76532b4c4e2b636c714f574f743038625435676b33566b5776547770637950553757625a3435725a2b45466e4a4c6b74506730626b765a30324a54744d5452536337656a394155304c585452396a2b6d4a786e48414e6635436c736657586f374c5850696b304a48323038375565726f7245363767303346314a636e543837686254515572584a65366a33704e527a73743441443378366c65624a583879383849746a6e41646d42383163394e62614a31484a6d426c30687051385336635838642f74486b336633476939366a5333633234665a7044524e667076585248424244656c547339773530794e7a427a4b744b476c735846732b71545a3670776e534b486643464938363174676349562b314964364e664a4f386849457553484f69464d45637338394554657a6b56453038646863634b58487a33447858372b6c415147716c7642542f5651356176482b4670304a3070725744644e5a6c6c55772b366d694a4c4c2f315a714e7874444755464f7562694845723331473252667372545a3037632f6e397772322b32504d524b302b717254316e334e5452624e7a36326854784f6956365a776e6f617a4c542f414432742b3173533449784d7a61533370396958782f5839517a59666b4d2b657a5354486e69577051797258355468573668416a7648577939305a526c563076716b735a6e6957616f75563038547a71617a365175547a2b776b425435317566714e73366b61726e4c6736772f716338684758667a367038386557533045747547756a555348656d352f384178475a306d4b57476f7169744a386562476d2f6c4a594e493254555a59325856564b7a7270644f794f646656364e4568636444686c4b6c4c62306f5456623039744d7147634d77645270377a7942476e4e4f70777256506f69776c76644b56644642557842506d78636f796f4c30435349364a32636f6e446870492b787748384970534644453642334c454c4e7170736931636f71526b634e453172576e65336d686e78303530617031794644473162766a39394441645335496e39623566327a2b7366672b763642366a782f694d396c4647316d3642493635344c755a5144555139594b425a3353584374324a704c7a633878366769647833666942514250377759333238514f574279504a4f316268313073767a616e543969684f64716f73366868797637454171584c47525379732b7743556c327750386f306f637830642f4c6b4e744758343379397370427462796576506e4a632b546c796b396f364d68396d6250794e66377a34514a66486a4d5a7530706e696a72782b464f3444624b385a346f675555773236705a616852586e797a6e523275697954516d6379756934725337644c6d69545147756676384f504b56694e4144526e2b30395945636b7a356a6f6f486155363147577666737a5553694d36653475492b6843595a48773055416c777a306b7061457553644a6d514336634a6c696d2f647934456638683852346c463956464841316135466c4a692b50305a36456441723256615a4f64574e454e48363139616f50722b784d386759387a51627766623735466565642b56357669553772744b4a6566423439413847317144765a6d36576d5636785355377a2b764f6d5a4f657431456e324d35507a587430714d365230396156675a2f455477504d7776532f4a3873324a496b362f724875362f6c7a652b324b5156654e73637a4c774d4963735758665279332b32693043616f2b2f504b355873464446696d4e533032766950684677366964486c75712b6c4b6f6c784f722b78725233364879774f366d35554a4c352f7a784768305852385a4c382f754837494c734f354a78694d694f53674e4657652f5969585052715a2b593144394c596b59524f317a64463755703068734f37515757315144487535386a6b33554d4d505a30306630434e2b5a686f44527571716d6269702b37417858304534365a4c59794b52633939746550396a4e304553324c342f324a3668615139726b732b7544503644374c7153426473465a67636d7a6337794e43464a586f3872636b457254594e4444356e67356e367857575650546e575530664b344172366f7569326976776654394154787161474a64703577364c5a3658556b516153755a656330397831584d2b376c54747a716c386c6f6e2b4a664b4161796d687a32453278307a614a7034646e7944544c764c7138362f4d466b38574e5843616b5346667a55305a65784a796f5471716b5374524d4f6972465a4f37716d444b4c71654c742f59794b544733506134795031494f6b314a627053703669594c6a57386e72537471304e5a6b575752355663724a6b384365326a6f7830744a31434d3044305647424e5a2f56686c424a326a52397265746a4f6e615336584f7059445431642f694c4a55766d6a524f2b67666a2b5453352f676278642f477a6d52747247504e414a457a793758622f454136644773744b543147552f394674466e4a645855566c544b316a2b4763614f434f34726e43346d69774d6376614351486933352b37387734544e584543527837506d3061457a5963755a7155616258755736436a524e476e567261532b784f72304b4c6941305666435975414670304a69415650342f7036675362433246534a343634382f6c56553070736c797a6f5a3755785a3268426b4d6f556947576d664a3630633959766d575a49636b46435974436c4d31646c76414c35755a666d7849314876386852457055546b506f73436942677a5a7a3578526f5a42304456563865664f376e484c486b726c5164702b44376766434d63657a356769315833374e536c4d456343766f5230744e544b4c367244584b4b34653246397042757a3144553544752f384158634577557063484664366e7342494c614d784e54426c6e696c306b47352b7652782f5846484972592f683746674f67466445612f6b506a31306a38494d6a34336c426966544d43644753586b4c5a6b352f4b464d2f6a6a4a74442f414f54424f71365476795a3734744b6a5337795764736f304771576a726e4a4d4848374f7053446a6d4a6d4f67593139445074526e564b79624c4d7377354533755878703659732f6a313969694266316c4c6f374e71574d613335456837484b2f53767271423631597a4f426a70614d735754524c584c54553350796d6146447379654749576d5073666c616b3839325850494e484d3930726668585133367251542f68534a43332b6f44716d7364536e537a4b67573355686d73336b4b7a735747476b6f316b4d76386a53776936413066565a6f64354d432b7541674c3770726a41654a443468546e467a4f53523177484864572b695964716146354e6f464575716e6d31385458536b525a3557436a72567a4a436d50342b4a636c6f547837586d5079726e4c504b55463639446e33526f576a436734585850397772546b335536724a7a6f2b4f654b69685955644d5a676459783570464b525641572b6a7875646e5947632b476d2b4357795856473533494f69782b4535757a723539774e7236524c584c476131526a376763444163615a3132682f51667456476a78485634727375697938305749734834736b6e4e6d424e626d6c63396c48797248782b68565055417a6a6c6f44676b6c662b66314c627339726a4162574b442b517043736d73666e6a4e536d7071346d5a624c38364e6b6a6b78303863505743356a766b4f4c346b2f58576d69526e777153726b6a3450722b6745376d6871726b376c35532b523636797378564f797a745645796351644b453051525a36776355354f6a422f733738334a6b6b333567564f50765537554245463830365761644439534368413141646265536478583256756671363269304e4b346e7571463045722f7249703668733244374c43623878704f6f6b536547766e596158504d6958474379654858354e6b686f715448433958644951696e4f4851455739306e6363745577673549745a7a6e5a3439727a4642666b35466d582b4a654e334f754c6e562b706e682b7079544f67564d6a5730732f57584a46423351694c7270653954745a2f75564e7879685a372b68386a6c476b4e6164715034525957647662756869446f55525a4b4e5257732f53436e6e363658634c61544b677245306a4f49366b73587a665950674e2b514c4a6b6f6f426632303070722b7a395a456b636e792f53535164356b496d3059394a4b757271717a442b566868526b316173583862326955657554514837732f61314b6a3935684970724570727965663245614c4f4632686c363666724c5a443437624e5971517336704c4b374866546e69524f67564a6a6e546b6a5278724f6f2b6236794157384434502f4f774a6361755769302f34676461354866765441576a4b395a77444d78384e43726c79715251366a34782b467a694370333662634b434f597141357868425352566f703165365772546d6e4f55534a5259656565545861395a5763307468306e4e5176346b52467863726f4d7a73716f64496250754a6d302f672b767152496c5a3856632b69756476585876716f5a4c707646557a59754931644b2b3533436e687048576e64443978745643324f55355366736770466452394c4d5369325a442f486c66617559744c4a3749566652736f3146416644544565636d576d3533496d66546e773168782f5a54506c68634474644c68545545613044446c676854326d4d486b6d746e33344f3037672f446c53766c59674c7142662f41424e4f74554d7336577542556c3059444454382f572b36652f6c794432647a4b6e5862496f33396b73485566704d46666471744659515965713157677676746b6350567373393365436c6c5044454c4f3956302b48414a374c6b5a7954717a587044716e736f5a556870576e63795757654c5569754835443679366a4e6e6479646242545332774356783854663641546c65506d3534785a63496334794c677a49316d756f5450547964686b55716a4933305a616c686e706f5232656959376f6a453039373153445a6d65733544546d4e51392b31664250716e3235756d6976365558494e584d62326372557072526c787a745a6f42547935367952326c726a2b4e53584e6b61356e412b74524f2f6c4a5052583745586e6e61462f55693750794f636e547845325a64522b71366b71757148714f386a486e5737416d4876536c55665155724f54446e30666a66526e73717878556331302f637779596e6f496d5172485a71456d366f346b734e70736e59796377573530313379764254723567314873746e6e4f72576d594549554c624a4f7856656c5775584e5452513752485253784b796e426e336c78675265333571666142382b646a4f686a786b3966322b3366777132396e69475a7576656e326a66625a3741624d5445746d5471496c79452f4c315866392f3171476b485645744d6a70354272626a326143516132592f336d6a52577a7472486e314c667638424d465472427335566f66484f66416e4b466244473945335339376742675a3165484662395852767a5a2b533555745a5074617a6b63364556772b7970504a337264324677756e574c4f6b756b766d5431556f2f43346d386e4d34786e6747644d74456d37523856326858506b384a6d553745586e3577767a3366656a2b76554c467a56526b746c7a6a344848316743665962655446375456416a4738506a304e5575726e57613146474f7a65367675653565766e3030364c52586f47433755735148743931524333676c37334f366e34572f7234797458647832687939394f724f6c56426c4a4447706c44704a39565933787833547970797532667879364f57494f466c52505378644874644d706c6e332f747a4a6255664d65636b555a4965374847624f70544b75655035327a557a4d426c4565783177756f63583671686f584c6f4d71705070787146794567424479312b31497a586d5564643156746f35716f31574136786c4677726a334d65736e584f6b466b504a557a73556e55594a4d704e7a5873436b75734f5961374b6a4862796c30426e4d7a39507447624a45714247544f6a543039434f376f4d464f676155693265355a5a717865735538524c336765326748414b6c6e616e6167502b2b4f372b504f4a32516157476a6a7271585271664d524a7862483364656d6d62397437635135746a766a4e745141646333453934617844397a6d6e68507236676d475848434e46725762467074392f78686f614b6b352b75306f374949746b646e757778633751716c754c6750495253577959664a796a3433736f415831437a6e412b727679787777343879724463696b77474d50686e526e33704e45343573737858542f6f2b657a2f3375446f6659636e6f525430594933654e36766a3174636c666b7669666b31324d2f4f466e46746a7a50495670766d4e506239567368456562574b65694e426f452f737a63634a79547552653863632b49734c5338596a4c515343374f465379694b366570775831464b79706c41356b726b63684d436c4d6853313750335053773363393632315855487973544d546d41553168726a75753570356f48646f55643057325062337641484b7a30325a2f307030653169364536303062766d61442f6d424e376d69613650636d4142787362486e4f78664a724b3235576c596d643839566f547051327637656c6278397850485059697257314a77366e72514a6966633669744d367862626e382f75472b766c353871764a322b505a70303233426f636530394a5376724e7a667451324e58696f454130452f476d493645437377576d6b744767314f4e553930526a50474d77484742466f694e6a72346f7736343837524f32704a37575376507933707661434d5037436e63486d677a4f5845343143684b542b77354b71615242304256325a5a776d322f4c655172614c4e417661774a6e5459337836376c46487a50357a485458524c6e707a364643776c663866574c365a4a486f4e365a444a336175716f7330624d75614e71437946386f677568767a47496e5a6e35715a6d4f6c4e6c565837346f546a4834527064475969594b4155575a5936532f6a784c4d6a736c666a444871534e696353387771714764666d742b5235526a724f6f57517a6654554d627665537673304f514e74397645534377353379353034726a7a63366d63737539536c5a6f6f545248514e3774576c4d38504171752f6966684337716576576744424c6245556b5a44555a617a745874327652772f686f77655876566d57664933366e3334364a4632332f414455556f5358324f5367763569617166376a66724d704f71766768397a5047556e4533736b794a56593033475a5050354b7958366f51786a2b367257565147316c7974584e2b483365303756664d4341494a702b4b61456a7a38303831464571334a714a56795a5a487a7657656a5547593657355139696c59316a724561567a50736e4b723254726354416b6d48744330415555644f62504135724f3266533746704e744a57626d686b352f73645844544b743133517571637945685566374f68346e53494f5149416e2b67476d716b646a71554251795a73434e4e4a79766c503654507366534f30714775647878536a31797630785843453447485038417474484145434e4674685869792f4f4b69703274586d4c3543492b50354f6e5173626c723275363048514b74424a4a495574343879563977763966777a69465953775963366a4b2b73745865726c415135723935706d3178614854684f587361726c386a48324d57626c4a65557a6675636e54372b4735524149447562685579306b75385833547a7777554b553668544c3836646b4d55732b32476853436454346f78576243703970682f6d3768476e697636434f3665636e546c70654639453658746d5343382f713276746d6d657755444f534a2f3235664b4e5277705539625530726c43676d755452385641412f484a6e78364e41364769394a5a6d697946484a6a6e43723671503466502f3841554f78526d33347851744b466b6b6a3931447a4e3336543854457a4f4d7a6a6f484f68496c524e3678653355313977553973595061583975793673336f7062747654375854712b50354f395a31726c6e3745792f424e2f703741553434545a556868684a6e56395a57332f565659575931787373704b6a3633314f54735650482b3630493557677245683778634c55382f6f444f67487a7a5a36416a67316c336a48464d72586c7a51354733364c41786f2b786776763841476b424c6f42527062375a5630742b576676584a3934526e6d4f7453374a496b7248736a4a4832676e4c595252782b3474567678716f7a7a2b4f6563556a514335516d6f664d614464785075714e6f6671386d5a46716a4556635646706f4b34722b2f633445743362434738722b7a6c375a7a6c314937476b6a6c43774150656167557a6e79546d635937676c32544c6c376142316f5672567a6e52544a47383851744c2f645a486c3153394a5243586a6173754f465a73614367555a755a386f5741303549474b397571542b5358445858464c5243333274313070464d364b6445483949475330452b6a5041374d746977593848787930395437506571656351674a33302b6b6e6b646e6c4b645a506642764a4b4b54387278716465703666484e6e4c797364732f6b4f797a3756414f466d674d594d2b415a7848744a67365a5879324e52666861507a514c54314b4b6131794b6c7a73693471695175696f31424f476d77592f6871616e4f614e483347507a2f707359622b4b2b5576654e49714836362b554462546e37486f6a705a347237573751726d4b6273436564367255754673355536714d73796e685a77705738694e30674744714b5436424e392f77445535345941626d7133787074557457566f6f696e302b675355395a3375657a5550353662497132354a66596e436868664d64664457304c4a696438585643536b524d39417856707848466254484a595855545968536c4d7976694844303674345131714736684463797063667972527a324735564a7a7967544b324e47424e4d3633755256386854506b7a617443717443302f786f4c6f64505034376631734859726836395042686f7436693376426f6d6d4b6757645638512f7742416b624b77747a374e44364d705376556f6c7330537634326a52716c4166686f6e3071457359364848452b5a7371506a4d374a76334f7852652b6b4367364d7365653879494a5a426b7a59346442646b36352b713752714370334c3947627061424a687a794a6b79354754474d5a46795a6f45487641567235447552713533356c50417a6a554843426c56534d415667786e526a46316178556d71785268543336614676392f584b4579416762664962646149632f49746f504a316753667677365250712f307a73374c735365644345734c334a714134436e633666534e314264642f3841546f53424d374b3565425658566133754f6f716e38696d3275694131704134527356503849304574672f612f5366686439397a76306c72414e774d4f43714e394f646e364e4b4a2b74626f43444865393259684e382f4f587a5a31366a346c59736471534b576c7754476a32552f424d6b55756547454f3930584a793444346e556259354246335155417a7a366a4b66443534474e756e397972766d6a5831587841306c6c4855706f423068684d434f6b696d697835534f6c73646c3661726238356831795471756333577053716e33774f2b4d51446b6f6a56396b584368784d426a524e555641493563585a52344c35345275715247786a36317153313973396c48736b50425850314d35506a58734a344e587359414a2b5544562b68346b436966755241726c46754d544e4b4a534b494176627a616c5369706b346334637845345a5275716e373176752f5445332b38672f616d6659426c62546a61646b77326b686f364d6b6f635850652b485146327656394a644b484175634e614d5a30696d6b6152542b2f6d6e51325957436b4f674d485055494d36655879376971595757387359743466597a633664364a467a5335795679797175644b732b63652f70795532574554557a6b63676663374e7a4169566c56775a713238585a6b735374484d31786f484d5a4a586f5336444e4c6a72762f706a37466f385952684737697a672f774131652b6338636a35514d49747136396b7061456554546a6a5536576456476839562f774130387572592f55347865536562396844547261535134766f6350355a6c44524162335a4e6355433674536830784f37784e525a304a64556b375873616e3366556f417448504e655856302f6c34744a2f4e384e552f656933397a4d7a5055526e6a56355a364d3268686c4d324b553646756b6e7a3930706134344c4849356261794f7234644b64564566452b39706879567a5038413433794a707363625435677a6c427146333674374e4e567631337a496c665858585a7a705851364933454775347067477969373273474b6f70766d6a6d397632765a4d415144314c626c74653757526c527568477a536d4a654f56476651694b7a4a6c344f7a66396635705a566a6c73353853756a4e30415566477536535a54444161456143706f5374735376513362507644497a48716d62394f746c545a364f567035776335676176784151443149634d325566594661767341333073314e4c5a31636c6262452b71373758445772646a6b56533853746e6c765376714c4e59687a6268464173535377446a6d6577317036344b4a39517654754c574379724c386776457444566a72666d636d7933513139576e5179673558554d594c65736c737a42513031717145644a7334556d5456495670572f644d6a53587a54304f38693859325a2f4c5047564f5435623437564f706d326d706835543943704b654f7964444b6e6a304630595a505a51746b394d4f6f7057636c5a4c41424158536178614a69496e6a555458785879474479624a377a62675a4c35706b5779366e6c2f693561655532686579366969535a5579795373644c46737463373741547244676657396739425846324c6959784d7834422b57634763763554326d3037316b562b584d7251707035485854444e396a714f366d5238504e41585170584e7730425953532f366e55326531674a41685036517865526661756c69757a627273724d38644f6b347359716d48324c7865574b4b55482b7873656b5569526a345331477874466c526d31383079584e695a694f7368377a304e386f315252716c7379513869334e5237474d6438632f794d6c715a6b7476785a5845342f6f4f686f51795873394d3377684d417341383858554a7445645a417a7a6e385338716d326a79667861554755365338755730664a73675a4b4745712b64654a3068305a592b547872756e436f6c546535737163336c676e372f6d6d6245616d59327a7767632f66577a384b4d7a314a5a6f7762794d2f4862486b555a7a4b575a636531433576384173553151616e3870794b50635051736c34346a6c716e67613446557a475076346e656d72616e516333664a66374f7130625557723431516f4c577931365756586e4654346c374f61475452666d30785263527974555042367751544b524f4a6d5536635464532b4765666150615a78783966314237412f4244387a2f41426c666a553244362b77506c776b464e484670444a74726f6e75737932354d614e66575449706458336b37456e2f4f6a585154556e33707a636f304854524f727054307267424e2f77447474666b703552544c6f2b6f2f714c6e2b5459345a327a725133753171314644397738326e52553778394f4f4e4d3865666a36577339726b646a6d6e645970507556794a4c2b54372b6c657a514f2f54762b325646346a503166714d374a3861554f765a58766c6e4e77726a30635752677764327331746d4f776f394b63644b726967585337366330426731564471383561562f614d396e6a6b627165422f6a3169654134326b724c7a415372506c773638394279516157334a6a6f477a74436b367564594c4e694d6c72494b71506942336151424b5033387673566c4f7046703469382f472f522f573237754d77734857746b3038725670797443584f546731556166536a5264595231696d68733874426168634161774e4948394b65796c50316c75724e387877345449334e682f48444e3553475a6f2b546638416a553957686b6666684f65534b657a5952516e54666d7955494a4d3956714669536b744666446b6d50682b394b2f5a3875572f3473693776482f5269504d52624c484a495a69335473614a47375634576a4275356a31637935485638707930774d543874632f3841394d68774143793437426d2b6c5762784854694b3338732f48434458765a506d58364339693761746f2b4f47304a49615932514f6f68696b694567684a7a49367373365530427967492f61694533543946564578715245384f4167352b6c6e6b766a7731667957477a64664e4e6e327a32504635654d322b514a73687a71547262526f2b79456c345a5a374b7530314134446a667872714a53634e4578614a36534d2f6a584a72356e783175633677383665422b613538386658733153704c506e2b346d754633774b304a5a336779332f4358334a4a6e79357755424952792f4635714d3646316473586a5534635265717764537155594e6964576d594f53764e33434b4158434c48684c305855567835767856762f5a702f6f444f48586d2b4f3935714e3248316f703772525376534756695272445431507332357475686375734a394c7339325a55494c524e455066663370415a6d5451326c384e38726a334950484d6e35737637505a3770666763366a55637a516e303534394f696a4d476667325267576534676d6f5638656156674c2b4672306a4b47643639625a452b707a6b6d44632f53623261627656527230796f4c4b366d432b4e6b517a3659783576447a3839304f657076614f43637a67396b3776635154422f57594a506f34693151537832534133497135542f4a4d4a5454367a4f2b45706c30793043746153483743356c357979685357554c6c652b696b77534368354b364954525630677662484a526d4e3655383965664f746b756e6f46535858527654637059754a42393643776d764143344166436b772f5659686f6a69646b636e65587a4942736975704c506b6d6f6470646c397176754637353330503841314e5370623068533737514e455a32786e4f637a6d6549787a63596f5775746658316b55446733707578794731444a2b6977394144356c453334616d73634a396546496a516c332f414d62363474732f7141536c71766d6a306c7142686c48695464577553564f5a46556b6a6432797673537031706a634b624a774e7a5642305568786e452b784c592b67483038365863796d7952534c63306b32554b657650656d365857397243366c4d6e4956396e346562713252724c696d734133416d512b38615166315047732b63415a4965396756477258466269716d78717454525971524647593750476957665459326a33454e5442766a446c587a6961627750337a6d6c717050366d63544d5257424f4b6e784b7947767965704b6d4a4c51682b677832796d797734682f686a676d6d48344a3554397a454d3451694653766a393835716d4666384156524b632f466e30464a5431547a57745363756a7661364d3056397a315a734653307761513054304f376f4f3148436d6c594a486d61644b7a475a7a544d47655a6a6453645456486d316e52706155724c557a38417071506e64544c4a5032356a553679666d6432644a434b5a75476b544b6361564f55514952773644724f5564566477584e74575065544c70556968394a7573476a4c6d6e5978492f424850784d7839396a466170694c2f414c4a482f514c54717178475551546b78557a542b504a2b34696d56504268353873656639586d71706565786c3158776d35695a6e4963434436716c516b3951667542524c665253713471584375536c3739484c585053683633324b59754f434f344f6b3473315a4f535a724a50505a772f61723266715946396e534c745357532f50696e47624e6177413674706d6a5953756c3268774459786a45384b505535396a706d42547059485a30734f636a41354d33516f392f4c4c567839554d2f386c33517173346a39324935572b646b4e7467314d54375353676d65346638415859553658476e6a432f6f4843596b5a784e6c566156644d4e724c4b716246386a366c6e526c3044564a6e53653470383169567a4c6131667650676752474943707830675844694b5a4b513046396c51567476492b56664433734d5931565a4e48514e337863755371724d574e487a69376f4944683043422f4e3741472f3677487367302f4e5050312b69332f636c592b774e4664487a796c704f6552532f485a5261766f6b37392b79663476736d536574412b3234654f746b543142444b32554a4f706b364579693579792b782f5a575a64433436436a4663765246546c482f6e38556f2f36552f774241446649336a7554552f774166434666776a564a6a486c784449532f342b764e376b78646e2b34587755443044373339475a2b2f3254476e3442415079546d43486c632f3135666536535931467a5261376f576144453239537a6b6e65696e7159394c714337453458665741414965423744422f715830476c6b732f657467794a64504f5a6e354d39436e52323654795974444145577253525377754274487a7536664a6a45462f396b584f6949694f6b594330306350507136414c664a3256667643714d78524768774975714a3263487562544d505531564353575466487a35444d474f2b736b66366b44475a35304e632b6a74505a55794334473943786d696852646a4d336a522f472f722b4c5155727668377a2f536f5845785857394a4a3944504e6e715332476e556e306d49464d6433324f6e7732703572564a4b326d61727441725a4b49396c43695039702b765054772b39393358632f6f43306a63726c49387a416868736e466764512b72687a682f30526b6578626c50346f572f79546e544c4e35665a6277445878694f4b2f30413337627a4f53544b4d3876725a7337675036533747716b374f4c416e52575a794a4168456449654d454f764946704233656c2f69376750625a7972462f5a78644a536769636c626b74764d4672465a6d5350724651394f6b737331504f47775038794471614a6c6d42642f6f4846644c45706b3161467576646957487061556b6d553461483974696c376d2b3233696661754d597953627541524566556d37336d4966463049486234325374377455656e51766a46756c3173526a5035667055392b305367654e46737044384b526f4d71665a396b2b4f57616d39515165384a74587056304738536f6c574e6945745370704a304b424d6d51786359344b7449675455704d7366506154466e50314a7544336d315a49434f79397247306e5a73394e386b64576378383767516c3851484b6b5a6c30624a447a6b36513676555762426530694a774831435845507967705459577247746569724e6d585050384159324b505a4f6247375539792b736a756c35483157534b30353556564e2b5161616c7056332f58786f4a6141746d665446543266767731304965724f2b776f37414b576f6779437474736d39794f66614d6c324d56305470492b75365066314f6d593141354e4b436e6c7647684d42646d6b62494932305a693873322b3251576367376e6d7a50614e33364d70756e3756646a34426a326b44616f483039304d39624b7a72616e526b50367a334a4c49586f3645306b4333432f374e4e77684f6b464f57353142462f6c4a37612b75513562696a42492b7753396d46742f464e7a6a3578534a373942555533536d6848323059772f427a2f414b37502b776e76366e4e77514c4678436d59755341525454506d6e7930557779545174586d6b2f696f5935426a67316836686c62374952503363736c4c76336759372f4147556b4b5930764e4a7a672f6c456a6e5a59544b49476d34655236644e334b6e30433233376d693773436338357868476f6f7855324a66776935503736534663506e41616a7543704c7046393471464d356163664539637433317131753579524a36485a6d5a36512b34503736594b3653674d6963597159722b677a3456476f666a2f4146635431554b41616c6c466f4f5a52374536314f612b6962676a336a705a3261464c3075344974523149644c36786d3546414e76686558656663516e51496569424578685a3364426a6c315273486d6d4e67444b6b596672712f3263613456545555716b4e7657726d423364395a64437a7368747257786d65446c6f3064656c364b4a53556a39457567577231413763357742376c4f463038774548522b52505841483731484d724c624d3068634c70614f614e5569586a7754765432534347436257456d47707a4255796741486875443565327139376630436c45776b334e717255357953757a706a626c52307343543743497a7a6565394774316c4761667a4d507652503972587a34676d56787a442f6f4744666a7530733937503841526d54795546426d494575633139465455395a4b6a4d5456576e36514c5750734432674c4f4b424b547045506d34445a69645a6a696f41483163506e566b737366756e544e55526c70574b61536361314b6c382f6c706941666a36584f734d41667a674d54774e4e5a4e59364c746169754b5255575a676f43524a63676a693756546f727131682b474837684c6c6f304d556961504775623831676f46786b7a71763636413058526e664667354935444e6b546e6f6e59766b6c5461316d564136655a526c3256777a2f4a3836667646306570696a633262326b446754484b4153773266656f6d626c30315a313133516f6c4b6866304d7968657a4e52396a6a74644e536b6a69482f753650486a5a535030446e4250444279694435516c754f666a494133746e50734b6b6d735833696f693061785445795655563231376e4b69484c455658543959585854416154706451776c5a39767977476d707247374f6e7361585370727845757a2b57635a524d4e314e51706d7a714b464d3651354966436c7a4f5070735359655342537964636e656d6254377749436967334c38666d6b697452447064626477733034726f5731772f7673476b58626a5045545869736f366f31736f4b34347a4c3746526d345036767737586b48667570336b614646393833484b52695a6a70344b342b5375585a386149364a4c38736d72444e473661645a2f5146567148667270652f6830714b6e593838686e386d3279755850645164424c55495a457438733238763745425a376f6579476e4e34724e644936716853584b41767364542f6b56446c39704b6558742b762f4147447375696471656b584361335730637732616b634d6b7566586c3179315931494c312f684934382b644255462b682b71383237435a4567616944397837767a48367879716261572f4e526749586176464835395049304b4774716374564d6a714a475575694d716c69565375794e42764a6e5873396a4372522f576747303664674c716c46373634613633336d6b6c736c30626e566f58432b536f386d71426a6f333361435a3756544333684f6d642b6b66433259484170696e724c7556614848357a37374a3239635031396d64672f664a49574f2b336f433965665a524b6c5036346678396f6d4273774259512f5a7a74742b6f4c5457317a6d4e6c555a3574484b2b6657366f374e54667a5068553261642b466e445571717250646e6b7866732b49796e42626b72476c33796b64646c76414952546f69733271576c743262336532484c316e5949644b6c627973696d6b38644f764e354a51773254766e483238364430755034524544643737667450574130797272367046736d614f6265354d363379326f4372733079306b684a4d51566e47737a656a634d594a6f57704d7a5845786b413941535a6f435a46737164506e7a566246616150495856354474676f72556c38534e4a696d715679552b333576307058554a596c50316b7a526753534233542b316a7965663241764d5233522f6736566372666d55586430646c6e386e50586f54744b594f5a77364750446d3038712b53723973597357574d6f54665359436f584a55793066765058694a4673554c6c6239666e4e52714d2b3670525068516b3867647348536968756239664a344c74426444716a3938356c5943482f346539314b6d38707874506d444d666a4d4f354248753631716b45754f64767835425a4c4a6452797a534f572f542b334877654c5439317750372f375362302b2f7268384166366d4c596e6c3665596c2b4c424b4373743052433161577a70646e5475544769696161626c6b5430342f61474b455855542f595838484a6d71664238486554634f684c362f4d45676a374f704d364c4a6574564a3038792b6f62426e572b2f734b4a5673624f50426a4c6938316e5065594534353432454579484e63503841514e4a686d324753456566587952476e33736a4a52766e617a364d35517248375048492f6b732b6567716b687a6f79664d61556761414e5874724132674f7a545a36657741796166374a72664974304e4334367574536e5537616d4e6a4d355a4637756e786638417a797962744c2f5970585a6d412b56526b4f642f322b3863703871417636556a597675576f543952646d51346d5466396a36325471436f2f674169636c49386e61516c384950767533546d36575277474b34763479626d483141773235346e504d7852436833487930664a7146567756382b315178494b44355234594e4148554c6c545a4f7364475851787772624738712b39316b4f63394e70362f61313572537030475a763177414f2f4d34447039333176635a65774a45664c44633264632f77416f466f3363342b464f6e59456338776c444d3947505050522f4758646a716178585573346c7741442b653977716e59446b5a356d6462524738315a7a45506c6a64584c4a6e4d6c34364b726b326241756a737139424c7454342f7742395a522b6e47626d796d61766c6341505a45784d3058456e74724a62374a6336774e4372746469416e6b494754756f64594c4a534a31577037414e7a6631526a2f4146357567445449414b74695661522b3944426b5a6d796d4537516a6f686e3563776b44506f5139755975784c4c426e396c4d62476731557a6b7143636c432f6f4d337561694970732b31706e61696a6c4c5762446f353275356153556336373745387a767370736370514131535563534877724d456753775a73484967705266394f777131767675367973333862484a574a564c4e6446704d6357674b312f416766732f47716748456f484e5352744434396d5142397a6246686b445a4f6d4b576132786c4b39536672666c396a7a646d69687a43546464333241596b6b37784e59642b622f4949432f66545a656c71676f6c567a37576c6369616141745935496b5741716437684668334f436952502f50486b4356557839563335584350416b5851363465566f615361756165615471632b5131694d69624633732b7863553644696c34364f35343945774d65664b6a6f7870396f4342634b4a6a4b66396e57487a78587264734f546e3563597a50546e4f4f6f754a576f686e467a732f72675877462f3841572f55376b2f434c33426e6d6f506f7443616c7235627064446d30786c45532b55516f496971755a6333327164724d4a4e412f4d6256634a64773343705861576851412f34364b3169314e7232737a68365143416171564e4c5447574f4a484133466b75316e4c31304c2f666571614a784168644866695032417672584f76656d565a646e6a716f752b464c564d6162616730666e57315461586d79357978585554754c454157307a6e583036566643494459377a7a71376b4f66443034553034554d6874714f696553576c64756657423577766556525758537249412b366c676e32635865383071495077324c7a636b47445047763735475349364736307a794f333932785a72354a58554c46626e5272486f3965667871442f364a394d714b775569746d4e435a473557796b49493050574a322f59716f544f466e654b5a334a5930584c426c524c51794f5a587a484739365359355875454d59535036654576506c6a346a7134786b47534c544851615a7a69682f556d74676a2f476f49592b4f654b514a4b5144706a4f3561424d416e31645168626d4a2b594a2f71627359722b676f45526b434e4278556e423958744b624175576c7242536f796a4b3667466d7744554839414b6e743973557a755654357730463131456443656a384f627535646275553061456c7941314c75724768357259706f42304f4a534d4c6a58796b494c663570702f5950487a71633752765a4e42556a7735594f7562624354726f6551322f464b6f566c32366442687a7641544b646c4861456a2b35432f6f48385543637430683751667a476e704d7a704f5472314658342b4b35484d7455332f414770616a375174645473626c436d71616c7658546b7a745a664b626d5a6a704f4133753174444f534e7a4e4350476b6e6843464373745955395253414c376442737877352f522b317761714371576c326638414b5749436669486f2f454578457a4f49424a666c79784b76486f6c75427978374973705071797a58746f464c31693036786e433734686c574a4573337946386c48764a7a5863396b44384e44786f432f4f67306b725a504e4e324b7459424b7135687534394f64504c4f35702f457556796a754e6c50765a3967567a7146594e6250546850634670593063764b4d76492f6c504e7366444b39644e3554596a383272764f4e3152744c33755335667a3836382f76455038413775475533556b4541586e693752527a49756a4e65525547637150517a3535486a2f4c706f2b47744e6b476e5a7768684f7a446a73357a395475434e6e7a4a42547665665166305a617a7945315170324b3336722b6661664c65365a3031565573637171706d4e59447435444373467171542f63376a435a716d653831454d356e4f65384e6b54745873514e727a6874524c4c6c2f506e7a4f6c7658517934593055716177342b6b75646d6f4d73344477314a2b69484242337854702b614249513578383554304f716f2f6e6e774e72616d59506d65484b546e2b34744b632f727543547063326167686f61495470736f4a455a6e6e66474453324f434b78456a4a356561446f6231546b7566734c737964364639696d4a77564745363135592f5a58385645772f2b6c554f42365163516363656f5950564662796d6f365a753161484f6e4b3146306a34556932636a354357716c4d384e58767561796b314b34674b4a35766d6535796746706758544d36397a4a34584c51464537544e4e32644d534938766c49305a78584c516b6a2f6b4f705756436d704d4b574f61356a4a672b73315a41363746504771544d6e616869413458536331476e6d72565a39622b5a7a4d5658315a2f6a535933516c6231624257306d4d6a6564424541787564664d4f6a6d7a715558386d413161303775577a736f41704c3058553254476f3157504b5664434353532b6e33676d7167444d61332f4b35524344316c30326a485a523279575a552b446f5a2b6b767630333871624562564c5a306c6931366374487463772b705758734e3358436637562b6c754d5435774742306f43786a2b70644a7275533573372b4d6d793139586f53565635354f48592f3743306b6c676f577a39746f4e4a394c345a6739383351644a5250664b36464b574a634862437373706c756b5a51336e5856784f67576f6c665859796555677171714577417a2b3058556b61653267795452354132506b72615943345630784e4d696b49632f4f457246737a6f496c526d66325a733870794c3672466538442b747a34584e534a682b7652396965526949456746464470624657387450476751775a7a3056584c735a2b7143364174703755315846484e6d77746d46686c3979304757646a4e613237733572663147654d733362555a6f774b6d4a7638414a2f5a634f62565353334f7a30343453544a346c78436b47437041474141446279456771455a677a6b2f4c586648394f74334830786f574e335552355957514d46654f6d4a65537a6f6647722f457067535447746432686f596f766f706d59696b7862573131742f63696961796373335a6c337055362b6979682f755a546c7063744b2b65317a656346424f655847674a56414f30637a73306a373673384461587638415a6e5a693738426678512b33546e4a6a6c53714b69347066686232743452674e35683161306e7870714439335353764e664b30725258544978525775717566586d736f35566f765453384b4a6d4376352b353438556f466972706a375073386e70442b676a4e7463715a732b57392f62564739477858396c386e3250493530496c494451672f633165614f68437458474c516f4f47365977595974367a2b6761376b7a4b704f716e4856726c62524b694c6a52376333736736473964373461615573577479593078444e7868706d6e6c5072684d79493542745474514264584c6147306e4e6e796d64363437536c32624464516a4a637a5958316a704e504842556175756a6e6d454a754d39384358664c4f6a334a53645247504a70556d314b4a73376e6b6e6b65376b793463325a7a34395a537973756d50737157646c4a6b4c446e5a6e6e3137753867516a3265354b666d39314f314f7a417344776a30733852394f6d30626c65705254356a6f716658652b486a364d444f6a5753644c7176464b767274566b35625a2f48306d4c525254553333746e704a7a675736664f31706e50674a6939516778696662754d624c79345a7858426b61744253523065785161306356446b4c68586f433772586d524a6663457766456f66734c4f6f486b557169304c63464f5a5070582f61666e386b6c6f5a30456c77527a514b6b4765387247666345497632716862452b50476c536b392b55414244447931636f6b764765642f77444d3352633571746459686a316949364f7630656463336c55427970705563354b6f2b33516c665865326a345a3267516e746c6a7a61675279644a614644516d456835704b545a454c4a78417058314d4e32742f4873576f7855734f735033386b58332f4d6a42624f6c76686f623973734f624b4b686f5272525574694751394d61386147436252495275637a4c595065526f6e6e36377039373269673144482f5150377649565067715a496a46656c7275564a48516a7a76697a364b3458593876614555725455375137446e752b5947445158442f414e4e6a6f4a754759677844756a6d6244692b35457658726c5963587774794539736a474a4c3678636271754a79536f3074686e474d37395a4e4c3831466e564f42366d2f774241357334794b707976754c437a5571585244586f4b386a31763558584c6c4735457354577634594c7066354b78376c6a45617569416838522f58596e6a72356749454630516f656e4f543944734f67764e585168544d71324b2f6856465853366c496679684736685a4c35395a63386645677833794e4d782f6f466d35317563316269486d54647235716c674534754d4568546c614857525a5169585678726d5a475370564b6c704e62442f32324c51413045362b594757526555733332446c63377265795833517a41493545634d49735a724a6452715775476f644468526a39464c715270392f325755706e414f7162614e754a7a314435306d6e646f6e565279596e7a71316552616d6c583755484e45656b795061546b325876366c6d6658516c6843426642373652556b4b484749387146366f76724e6656526e5a572f313834332f414646364e595643347a6f305766464a466d6d36715643633273464b596767584f465a6952304f4a6a77624f3476507575304f4b76727661445945735570694166706c4e4f754d2b3147544a6c7a386e536e6e5448674b46482b30314955416d414c696c694242696f72416e64566e382b7252507363596d4c4f41704d38574a6b68624b5573793670556b31784146514a616776634963426f437535555a5275504a494d31426a334c766b5249334a6b71646e6c724658516847546e6879784849317037303568736a6239783035734c326b33724d7a316e494f4b48335a535a53326a586e4378382b67312f773148424466524b636d5a55584630424443724f79554e614a4f2f36367076633533792f595334464e424c594e5050664a324c4d524c4e3965536d3754664c59596f504c70756163454641386c73522f755a58387a77355135774d4e693267765253454b3050494a4e624f46456279506a2b576b765331656a745059753335494e434e327a4c4f7a376b3678464369444e304f43795a6864506c4a6d4c614c624c654172644e576a6f574d586e584f4b7a5830787a587950376d5563335857547a6f37466d39557a716879314f7a556e534a5a346c51796d74556176595368723242724f786337484d3372626e4f3574717a5544434e5235395031577071752f5247755272325a6262696c35786e322b746e565838564e587864766e4450336e6b4a43566b6b6b753147434677575a71357262696f3156306370597a5530465653304a39736e49334a6f7363432f73634d766b6a2b41302b3436765a546a61664d4944422f495a314d4d7555484a6d304d7178706133416f4e4f2f337072434371374c33676f427a4a4b5061736d4748777034646677314a486e396267335a59564b7135594a71676e52483934303537456f684246636657314f6c613875544d547a506451416b38654450395978434e6a4b414d7563416f35724b4c3837617a334a785968585a38536c7a7067304e4e4a547a3235564f2b68693250636645314d4c6a2b38373878786d75696b364f63442b7465587365762f596d4f434d5762706e6e5a4c5739397339305163796751624b343653466b3865564c6f73594d342f77415775344b76596958734c6f506f2f756b364f314a7947486b586c4558676669626649664b396b336256374652654a2b4d7a45354733742b5658677432664a4e422f316c5654683971487647394f6d59767243644e637a55727347305633546942542f686e6932644d4772792b324a337142766433764a2f4a72707465757172576d6b6a6c4b47616d4c6b76794a78636d3533506f7971624972393030684d73445a514a586d656e444e5a466c49704e52715465504b71394f617a4c2f51543855452b5046626d75634836736e4e4d5a4c584f344553537036596678676d342b556b2f6a63683943717251783354665a6255495433555445796c5571394b4f32424d733269396d6533764566546c716378784278544f6c655a2f444d6652717243537153757839432f495071734970615a4d754b796473385173584f347554487058523858396448772f444f68545170525447376f6644772f5951594f5a794d3457397a6d312f774465713157783552507a534369654f664b7662544f7170694b6b397a33653335367a6b617748664e376d394f7756415762645a72315a327266493635724132723468532f38416947497a6f514a79654250642b3255554844397155474c6143654a7a5765386a2b627069455832644e2f6b413335414f756b2b6936546556555859716e78374e584356453834784869563538704d7a326e37506179526c4c6c563063354d6f7a7447613833635074757a316b315764486d7554586e557a75546c7a2f414c49644251365735477a626c6d546c4e6647766c55346d7856412f45412b3553784e50534d6d79336741784834307930476f706b592b69615851766c59434f5831417175565471483644456d72466e56517433666574435a2b2b2b564f4f616b6d37356e50352f634f65444a797838317048556e566166386e4f6974484a477a5331726e754a5130754a3065674d38534857716d4e3035364b6566634c336f3671696f4f334c54487a5153754f516c7a6856574f6533563150626f4b66723230386f6f7a7570436a2b536b6c7a395175664a376a4b6c4a732b4d36597a442b67627a30687946633162637748392f6a352f6167552b3456316247627a7451506e3171426a782f617237436b6d63394170544f4471457270704f5946394b52307756765561567a5a767554437031796b69424a31417349772b6c3841554a564e6f6158467969787971424e3036514d2b55516b44574c425136417333366d30464e444a373761715677486e2f414b6c516e747331656a653447694d746a4c4b686b47726e54504a4271793935553070414e65774655356173394d6c763359457875436c694143686e457a6a6d556c6d746c56517a4f4a6456546c4a5378686b58477554374b42636d6d61347a7a6441506d326c5177533575356c4f302f767076734575764c4f676856426f31476a5151713355572b37536371657967686631686578793575414930742b786633666d436c4651416c385765334e6742517342676e3871555a6462686c7a58534652712b53463250514f4736642f595574454a774161534977482f476e48746559592f7031364e4434306e45476b66416a34616a444835627a61314b4647644359596639506147574c3470314e5a7054536c3149306b6c71313337486e6b4e63585330637168656772722f7246443971467a5735306a375a622b3630414f7436386c4d514e637339686c3838383166366d366f615674346f4b4a6d59744f33764268326f343571724b5871573430384656576376575671364a386e6474784c727069544e33505862503934424e5a6f3731644c514e4b666c6174656648732b59777932616b364b7452664c4648732f772b63354461577356386b32636f4a744674613876327653793562462b3734702f6d546652516b356a61326335763270446e795267315a2b50414d37743254504472304c664b503038624e444e314f7334386e706354702b787a6154654c643179362b303053412b56424344564f3141625a6a757366536a4e654c4b4630522f5a4e584a63377376795a755662787439467458477a6a3935656b4b2f5a394c2f6259414a5972324e57432f616b416250726b5530354c66712f626c59572b792b7147436c6939424433514e62557253514e5356792b36586e7a782f5771584e537031784f636377624437752b513576384147394855737a705557412b556d4a63355362354d7a7246524a552f4b30755530546c6a79326662356173464a376e4b4c2f44324b56334f61644e73686e33516464715875312b5564534a73706f45387574656e7649624f6e6d5a375975314e6d7a694b4e6c3342585177656372434579576b5573496e3776313469432b50356e63335271784e444f6b77574c374a722f41484b7453536d545a52656832732f4d4a397679753271684b4868363353656d6a684a554a644d4767336b32746a7050456130657039577a75372f6966705642345854326631443879304d36327a53304c6a69305754646c79646431746a6f3750765754734630334a366c4b39707a653958544f56523976586846726275794e2f4d764c484c56426735454d39654c6c53772b4f654d6c646e312b53436e78334635725a5748663772703666347651614d3948524144392f2f573549384463306d39786e4d357341746d6b4d7230557961464b4a39774c56436638414762427262636d61756e71616d3236793650384168785a6f63426f3072496b67436e54664b557a4e6744727a3442794a3477557a4c5832365856556c7562436e5064567866772b77626f462f486f61436e5a76734542684944556b32754c336d4c456733386a385969305a334f666c5a4e5965517870726d324936676d6c426b795a2b357966496f6369706664707a575334375565774250343067746376755141446e572f644d686a7038772b6d6d71466973365657684e7855574e6f6149782f54545452614b37632f506b51663841456c507056634c6f4e503561394b77467453656c2f774157352f4c376754424f33504f337130634f2b413353565069306c55455435644c36423557686d63747054646f5657334679596e4c306752487171574876702b38663957424f66537336396c74597658462f41342b696c323356396f416e7068466a704b5741734446505a37342b556851306c4f6d542f77436e732b34376a6841355a6f5678507a7469553564697458557830306b4d6731395a5457706c56725a6e346377323549352b666f536c7844442b4a526a33322b2b6c786e5862474e7663506c6f3545745348715146446d4c4d526c444d65366c31693277796d75552f396263314d38763841484e426c5450594b54596f5a54364a6736763754316753756a50354c4c727a69313037736c645968374e4479545169727a574c732b30694b32476669366f796e7a795359646e616f6942707a73626534776f707837586d437035754f4c48727a7a6f794c6441644e63364d4d6171314b6d6f694a2f61574a593732364d7779336156524f61394b2f72586e4e7866734e565335352f5037686d764f356f643972625651366e4f50516b4c473871546e7454476d42304d2b587868716f6e644f6b596d385831356350494354336949754f616f6d75586b5545686b7247445262506d744b43646a71336c4f334b677a57787a3032775373525a5a3055304c4f614c76316c6b4841442f414c48764e774942355573664a714d6e505362645669434f36367a4d4c4f756150745466737673314643695a6d302f34324145684677422b742f6b416372627845346e4765344d4d67664c56506d422b5169436271317461726a374a67573669534e316d784f6d62512b6a6b696d4e79576355775455636b334244366231646254504a352f59666546556551374d3263683954704f6a4e58547249556d59346b532b507358426e334562767643356b325750784b5962695a3938612f6953637a51714750426c517a527a4e4330706c4c2b597446636a596465387958707262582f493152546c2f4636315563363238547a4f6e6c4873774c4b3447634e534163576c45374f4b5a6b487a563952792f516f622f325a38786273746c5063726b32583843316c48434d66786763376d4a464a6d514743666e53416a50337131356c6c3236396c316e47466f382f37444b666a55483273706c31534a4f7542503841737363314b577a4b51304866494b556e53564c7254586d6d4b3977776c61396f61433536464a7451464330315378557a52686a5332663841716768304258332b594c594e306f30477370675a38786a38335a6c67465153535a7a746f673463364d2f666a5932702b72526f4f31476c6f5330534c4f6834706d4a6a464e6a75575367617354645a2f316e744359434142586a3330785672352b626e4b3044793036527936454b4e63315a66624c7633474936544d6e3955555458437853584244577a363657456c714a674e396c7239715171457a3761704f716c5a6e4346504b55737568666e676f6c72594d5059616b3538307a4b755752734a4356334a4f67492f65644b5a686b3550554a2f77446b5049653565553254496270773647546f6271367074574a6c54475561556c39717a3034774b72516d2f6d6f3731725344665a30364f394d5444345854746e47377544566a58553574764f57332f774137737a58507a614733343338647a5a2b756d50547a71583654714d39337a78774479786e554a6d354e376577696644435a4e2f336e7277476338394575712b3146416b64664c35417968596265555a393475485063534843796b784e493243424f2b312b7763685076704f6c4c61612f42396630422f4b6e644a5069464672624d2f57756a7a614d7633616a756c652f4f4c5349475969342b3573722f414e5472397a41373262356157494e2f7838442b50714b642f49424579664876456d396b66433676314538617435746a64613034643242456b55776f6462735a35745438734e777058326d3663417349324166782b783136645a2b516d554a2b54324f7a503846792b4f5a2b6e6b7936797649456b7253644a6d774f6f6b732b58505978512f35564d352f6e56556e2f4144416a5073796753452f732f5751304b57746d566f6147426d722b704844534f59364d6c4d2f374774665a727835626458547352394e6e55616e753731766666384d30786b4247377678523858502f414d662b684c6878746857646b3048567a5576636b756f79705a30576159363147566e794e6b6a30753064566c2b2b4f65344137435a544c636e35765a5653786e395275357477555a45725071625270717337563269386c45535972553155726f7a2b706e4c726c6b305630354b6443552f67455a50667148317a676f4a6468314569354575707365684b4457796443537571614f33496e6b727a524834767052736a535853685577714f7258577a3339396b6b7a6a363150503641466f6f4e67585a4f77636666334170646450736e37584e506c56565441674b4c366b69546c707a793731426e55705876552f674735666555577245395937684946615564696c7a66492f326f6b72307332592f2b306d3666595638554e49754767614c434664564450322f6a5a4a682f334f635079663636684451754f72695a315046574e614f704a6362787a63434b716368594c364d7a7271432b7550636c49745944467342665a676e41416279427841517063734b692b4a48492f66797a6a3942394c45664b6a4f565575733654716f506d6b586249786566746e636c66514f476b4f75554b42416e565443373773444649376171534b626231465a7655446f6b2b317a316b675479566a566363306567344667763465665a6e425841656b4a5567437669577a553669636c64307257395741454b574e344e7a684e675736687a3172736856564c72465977564e5650495031577a42317773554253324757544779443058307065565641554e685132774f4f2b706f554e35704e3049574975304578787a314146627032695469543853615539616b47455656314f546f7a6136364d7a736b73594b7a6a5266324f544d3079793156384d6e6b7175584d376f4c6f357876457436726755684e38792f6c2f514e6c3655334f5a2f774270494d486c47665170784d4e726275635a5654333646784c556c2b53795661556457507a71414e58365a6c38376a562f51456d734e6e366e305a6152795347656b355830444336676864524e473247436265594b3557464b796a396339366e4a3165476c78754e5278676358317573715369366c637564626c356f6e70493478694b754d2f3276705171332f4b4c4e665345594f392f77426c5041374f594541417174414d346f3874336a742f7756746e32412b31484c2f4745314572376e7471346450315a6d63546c7873593646704532624f534344366c686c4d59506343326c446f6e4845735432576a6e6e624f70424e795879504343616c7876756e31567441576459756757505764674f62704c722b7975646673514566505730436b73306e566e42515a4b7a2b424c637a556f5539533256786354446d43547871556d64594d53734f70727276514c774279556e4f4765574d743677645176356147644d32563171356d33573634564c7349756a786179574a70455a566d546b734d6e653158364565735536655152746a7a395034496e6162376530687174794b424170506e31765a487571304234796469745455505030434977502f346b454876476a69667341414a53527078646d78365934615a477a327a4a6b477378306850536d6831364f55497357564f6b76726b33436642532b71704857384d356c704958422b2b4e4e656e796336685a4c6d364637345a335236615a34447248343545647a6a5737704c57764e575875734f6167725847346b445555774f44364173577978716c4346594f6e695863704338526a326f47485371706c2b35386974527956787a4768726861726f67487a42794d57384150765331485174374632562b733963533747336f7a76743636702f6a2b544b7a45382f52352b7361342b43557944706e6f545966752f7849487042385771672b637343544d6f6e507464556c3338666b4b62306d762b6852446e352f3841436c524455315565654d6f6d5353627151484e385a2f4679454161585838757a6c7a506a6d3869764a50657a7a336b5561713456512f79484c52354a4367364d4c6d6845355352706135667775455151317841526854486a666b6263663172373439663273462b6f6b4f6b664854577863787732356450372b4c4e78564469742b54364f686a7746385a424d3563796a523144566f4b7a5359335569592b456248797578704a3530396f303536364f33533537565372716d70626e555549564b54463366534b6773746b714568313341662f4c65394a41787a4b50367a41326e5679777975665a73374379665379376b6663724e754f62514e6c6561394d596b73715066446d7a6e4b4836554c434e4966387547655a49524c5530504479716d4564574379707758617650347279427262376c36564c4975544365646c7a4f7979503747504d366b4c516e636c33514e6175306f70356175376a744265534f477170306b66736a544c6f31534a696f6c6f706e325a786e75306c652f53516b584576673145582f56623736565238424c754a53326b61395049494a793931656e7031524d6f54334d4c4b7a346c516b6978496b2b67614f6d554e566a7a465a5a64566a795a316a573145373354667068646e45465a6455613876326a6e58547a786369592b4b614a2b69623435704d656e4f4b73565a387a4b4336775747437945303042615941616566726e416d77523174716575672b38573573386c447165737a784e45745571644253496d7876355659784e444b7945414d574736643653543955674d416c7657427a5047322f6c7a65393132425548586b49735571786c455245512f476c353254796535426b585236346e66363575416c7a3544374e4b6a546f6e623047427a4f643037382b34713132574a4e43734b646d6969326f2b58536f6e456764305a327a2f414f6448313554492b682f51484c51646f4d792f716f477a4951376e4b6a5951565a5772557845384e747832536b786959315173304a6b6c704d42416f5444317048314c5241506d6d6b6a576c42454171624f762b4d6969567061434d325a5561555a6b62657831456d456b334a6a346b7a347765476b2b714e49526d66384151504d304f74446b5567766f4b533932633842703755456e59554d4850564d65566b6f2b536f6e4c4c724563493141336541754c4d3366436b42464a62556b4d6e57335031332f4b313471515a4e75686f4452436556314c467a3859464366764348536f2b4955684d532f65617a454441706b6833547273536d4256504b6f454533733166784e7a524b6571614c353236684c37436e686652413269716f3068376a372b6e3164502b6e514f585454796c6430306f64724d4d614d34354f793156496b553355424b786146557833594e54424268382b5835584654396f7a5972394a414d4656747342454d5555304b6b4b62324a3774614a6d6c6f642b786f66574851424f6c306959614361544a4f544534584f4d514d6d2f7348674431386971716f5365766e32727365694a5751543730304d4b373575315450552b6a6a4a38746a43712b4f706e54424c4d317a5848386e76426f4b637a4e65654e566237514d4843523831483071752b7274534a497531644d524d5064784c522f514851376e76507642414569314a42465034717a4e6d6c4255447443314a756b6c463063366c35434c494a5a31756d55756a71707a51796d69674a79593452443445394f4577522f557a4d7a3144626b5763715257316976624e65636b693461364978514641716257724f6a7355356b2f334d6675616b67396c4355396d3935754e4c5741624f5148305973764b6877575a7443365137312f496a6258436d747753364b716445706f667272486d7444714c623866376d446d3270543043547661304a784234376c51556969614f36782b766e5a314c4e684e327650715442587a61646d43433769436a355761444b68362b6b5136422b774b464e2b7534326731706f704d704b7676552f656252593170726c756e622b34706272724a4f45512f38415679796357615a734b672b4f4f784b576b66446e706144537659625679663841617048354447536c4b645434475a6a6339543949304c6a3555766e3867735630642f66433443666677763841477848764d77722f414f30585753736a644f787a6f61704e47414f485768432b45366a616f553669346764474b666162754c66372f6542685548562b2b6d5948463942393058524d61614d38366c376b4e734b38785349446e6d734f4776543647785039644975537a32752b7043772b306b433949666846367765572b4e6c646e507a4b2b4e556d724f716e33615672316446664d48503933323459505a4b676b774535654f56687a4b344e496d73364c314f35503967496a344a736147596150544c65303675364d63306d7834766f4e35683750664a494d584f6f6169583530532b3755306c4d2b722b30415864483659493632784b7a6179613973634c524973617958526a4842705a4f3870756871576e6f3046337159496c6f77387179563839556e447a52434f4766766547507354534265326b50634c676f414d6b54324d6b7a32352b5a52504e524633684e37514b55425a7154374f58775649752b764f34522f6a35786f702b617267476e2f744548543651454279587830535070644f6d47586e586143612b6666704f6c564474516d36382f4c68362f5350537146797a46516642384a4361656e7a354a676b4b2f346e55774c4e62713578454a7231526c504a55793679735850714f42554e3876746f2b533671506c426e4f6f37423068425254416b6b676d4a69635345644c4a566b366945544e6b346c4d377039464f6b6732746a6e707a2f5a5447736c4a2f5361473435584d5a30675a5148733969715455485538434f58557149562f62462b642f3233787a7a412b584d627375744b6759715a3335382f577a644c506d7a61506b74343550785452646f34664f6d437755645250666a5334567a624679716574483358696835666668456b4e345548556b6861536d307246764d6a7259724d6a454770516e334a2f71596e45356a7542435a436659777353476556784d35387543554b6635422f666a586364316f4b596447645958502b7a39716e36627849356861582b304243413358743569347038567159656147306a437231707161306870766e6c73646f41316b5359334136475850483569633332714c6e74353735675550795469635a7877424d326157646e6b6a332f4451566854705a7035714a6a356f315a496e4b56327a4174616e70466247534f624f716e35584879332f414c4535304b64414768314c5a3233345a71363673383268565354316a6f6d7a6e4e6874616439387350446443697169563836654f554148394c39706130366753456f6f5849743839757579544c74636179374530485a373558324c5933736b3976462b374e6e66565272632b71756765474a754a64503739796141475377615178675a565a4b74724f3579517a42635a31737833306c49734738305672435666587a72396b33445772706577717943592b54554135356e787635537a50624a4254596d7965664d6457356632656a6174355172736d4a5452537a483738417253633547724e6d51545234525441437566444c4461314e64692f354e31457248416c664c63664f343279716f725a6b766d6132566561465a47763533504130673335754b4653577a417158485657447170424732563157597453775264412b466e63485238646c3246386452314d7158554d6e4542374b66763538566f424f4a6d74494a5347383766354177527239336670316f544a6271575478794739694b425458514a41744a75424b2b6d796333544d425336457a6a496c344248324c73624778456d785547746d7a4b4b654c6a443470366b787043506f78637534646b35575a38532b6c5567757a796e5278306666597077673636685956744f6f6b755a547871563155444f354530745343734f65785a33706e6e3556443850666c47763230416e356763676d786e534432694d31555477356c5673527231314c7352546b775142663167526c5a314d546669527449466c554b75695a635445487a6d536a2b574f6477526d5645464465447a4f4a694f43703065796d4473704d733579704f5941512f49624d3333736433765039707342667a4b66455a416f7742394c6b474473314c4a332f4862612b63626a6174687a36636a59366f376b4d73456c304a654d36334f4e3834556c396f334d364454393339424b4b6f4b47497572534e4c466f71544839562b634331356b4c465a4161597a30416c6761476347663756664959665770553576554550736d533049376c716a6d6541515a55553037655a6e5a65506232504a763031414d704c576b462f41756473354a4a432b68384a792b7973676f392f7741314945456530535a55713650574e4d58797848334d68696f37506b4e584933556477786e2b5165574d59597a427a2f32484f6c5476714934797749623548672b563645424778453047646c75493073726b586b746a6943354f5454304e4b61562f4357334e2f6a53486e735a2b32664231337a41494532596d496e6a4759465161506736626475507a7453793535506c6a664c586350785a5955346549655778676858703667767438666f485368343075752b6d44634e536e636d4e667a426264793437784d2f473750432f4a3232473777354f487168426d48646a527a597a58506b576a4f51696e4d56765a6f3830734677357339416e58584f444153736941325266456c624d66466b534350497a44306c34675a73544543706d6d7a6d6a744f343253706b726e2f6f4a686a2f5362766b4677665658772f68424d2f77417a6e4f4367473133546e6433675a6e57612f4d43504d5449716b4b597338306e7078326153536f4b6255564b6b4a50716e4f6b6c757153665575397167736d2b4c32757070614e38326d4e3259346777755350555339645a5a6c7947584976576e6b72595073756f58636d7474484b68584a5a514d6558336a572b2f6f644e337350685466446e727230386735673861666f593956443166704e6b5a70797248484a6f5a33366d46644d3037364b584e6b7a386439465761434f6758444534796f2b754832793930784d784f5945644c784846736e71704c4c58723439654f3348746d79796979724c57664c734d723538724e62376b633663566448566b367368544d6b79615a7a46385839547674346a357638417033344a354850666a315a6a3661556a794c754d3766373437796b755a34783856325046326c4e4756773646535663494f7463616d6f706f366d5a56424976614a7a6e49726e543947504336634873785a636b51624770485a58794a72394b756e794347585038413541776d617a764c6e4579492b6476645a4d6f7a6478507731384f5a675833547578674e77394966532f6169364d6d58636231507074307870584d765a74565839697676554b346e6f756f597879314b65706c44666c6d4d506c664f564a2f3147362f346674496c4f64364c65425a4763334d386177735037696553426f57454555757253642f315733504536632b336f7964474d6866387961514d75436e7678784c6e696369387a504870496b6a38664b34696a716f465333527a6f70566d2f564a6d70584c6d7073644b35576e7a51446f53425172394d68396f6533516d702b7558662b3473613737654949546a5a6c7055384947557a4f68516f4e744c367555364e394f72503351533049736c2f77444a5650644c78496d364e506555482b722b4b4c343666367145786b414b3638716969794d394b315373374b6f79746a6a4d5872716434634f666a436a55356448734b557035756f63426d6c6b58734f5034754a6e6a32764d532b52476e49352b57746c6e58396b77726237597332584d2b57684f5a7150444b567a4c7759562f4d4666307a3650543478664a696d4e792f66787a594347395048485a3335636e4e624e506f4f304c626955545172546c513361493061684e2f7a45654f7375716549383976492f6c5571446b362b543242547a66542b6651586e57776455626e5a47766d425363673054526335475474444b386b43536f4744487955663077355a56745454314d2f43536c2f324c4e506565517276794c776a5a6973315a3962476c6e5055476f4a58533264455735554753766e4b386c75634b65354d634f6157536265484c59366e6b776d746870452b6e61733136564373506a5750683363786454495536796b5a644c6d385969635565796c69557878557056477275785147396f64464c4866436d596468306c5a546453356c45627259335934666348343436636e6c56334158573374564f69506b53437a35636c444971747069547863365167613561382b4539415455767331417871693968435256726e6861504957526a2b6f722b4f524e3546597a797941426666487242776c497a702b754b65434c575a4652332f573564524779316c58524d2f6b7252336e2f414d4e744a705064784678534d75314d372b5858354248664f2b5a553145314f6832686566504e3767716561466a556374543453704b6f356a616161586453717a394f50374e4f677731566148615971347a71304935394a5a4861537a445071486e75435a33336b7a4176516c516d4e4964414a7554695542415163506a694d4467386b7673794b59614b6b2f5a746d55365664413742553673694b444c736a767231396f4c6b715746313378786a536c50486463373964442b6743305a54367a42502f41467937444f2b616971346f2b7a32787853797a63746c715974394f6b58303135394963392f614f2f547051645037397338345a4f50505a55794261745766546f6d6f354f2b464456485078326239696b4d68746b35486e4c543768507157734934367155794b6d423337346b47504a7a76592f732b6c4e79686166686255786b6c317370324e2f6b724376596c66464d6f376e73324b43344a665859787a44437a34576b332b67497a614b2b525830356632564d354b6a5a756c4f464e4f6d546454556f4767345639734f597150342f536f5a7779476c2f77414d6268446b782b357841422b6f7a786851707773786d6f717462707a3864703157363333746a7036534a343436644666476661563838396e66637161555066594c7148442f41423877415854354e535361346d4a715253616f3941384c5368596d764e34664a52746c7055504a3571644150745a3756744e3144766335613241516530316757377279364d596f3145547a5a4e4654316c37474a37324b68746570557a6c686c475655656d444b47646f49672b5a6752634e707748375730672f4b6653376f58545067626d79574b6b727235713537436e35546f445278397a35423448373046453658764a774f672b6d6e35654b50377744304346552b537959355973755a3976336339714a56716e54576e514c5a61386e4d747646587945706e7a652f712b2f456f30744543354b5079734243344d777135325a6d62394b7a6f4d506a58634a477352356c6b756a4d7a70736345474f7a6a672b4d706951737567687066354a39714841774e6b61477657315033644237777a6c4d615945796e5758314f652b4437743631547075516c597a733779787766424d677031302f4d306a425a2f4655467a35486b6856356b7146456f555230314461634c527071733552794853492f72324a344c43644c4f794f43566f704662523442434f717a6c66315a6e4a374a33496944694f5857733047616374536b6f47366d436f6e5a367a5851746b2f57674b515447516b526d6d6479776b55463770564f5a784a4d5662547273686f7074422f79305059744d77312b364552536f7061496664306c414366384149456a33376336476733505568733974524953735a74447234727335694e516e4262323664754a64456450544556724b6850534e496f43694d554a50356c665859443664364b413747364d594b4773573334382b6a6d61564a79614a54724f6e6d64643831466945705772727a346c587a77475a742b566b3377677a68584e32724b393864696b2f665338506a6736554a4e61593858626e717a6c6b796566733652456d6d436949383335556d4455696f67613371393630644461727937726550664d336b636d5339456661563235474639336c524b4b586c4353564f59436c72676734695a51724e78754434454e2b6150485658704b6e673332515a6c584b576b61627579334d4f6c655451756937514435492b42516631752f394d7a45652f416f484249686f596d635736684d61714455547054706d4b78366b3579566362496d6d6a32734f4f716c5a50554b682f774470672f6c4a58325363357a51627a6e397a5156704c6371706c7377756a5866314152567a79705775487343496e4f594e6a4e44536c636279343031444e38507941585155594c4d52374c653974344842535650596d38696a746e306f71432b4b48522f786e4d595567366a516f2f59444d4154557443634a6853516630434f6367375a4f73647935556752546c564d3463762f7558316456476f6c72644b7863732f574671646366746e2b7946496463416736675036427833537a666b4f4361696e487466526c7a745970343049585a6d754a39456a6b30697a715741756578587651485574626c542f7743564650663841665a50506d34685538716e4f6d547a6774625851545564534d594955325a2b6b5175315273636c76554f5377567541692b636a62796f674766792f7776526f38416e43637232425a636b595142665a744b554e4f52314571754f6c354b36567a557a7239684d2b494a666d4834755641574b656956354b354566565236695a706b5454615a44494c6e4c6e4f5544754873746b4b68785345325341426339353855715a7276614952316133707155614c6d567536432f324148314878782f53465346316d36646835507878304543314a594a394c4e4f6235796143756630445a796a346633596552386e6879755533735a416c4b3570716673544d2f77437153557368415a616c6c376e3955746f4a4a74504f7255494b423743455a304175484d726c306c766463726c6b665147793354345637454451316f415031484f4c76794161663854734b5156702f77437430474e74633544594757686a4736414f3733536c623171717578306176586f596e736744396a7376316544306e2f7370615144346c5148376636444959546a4b4855595a7a38736534714d5571336f354d74744c4934637449552f43587a66637a3555503443796e644e547967314d54383942674a30616f4b526d2b335444786c4879496932382b525a53557a392b37514458565558414647613256612b4f4672665976726d386477465054574148416e7171422f49702b565765324732304866596156636e36533753544d62366666474464427a6a587867385730303841424e5a437467433771664935737576517941786d64625038414645547955664331422b6267524968556c34554d63786e794237574758337a2b714e4253682f515948716a39633542664c6e635a524f7473774864475658384c394f787a33393548496a4e4a6468596151582b75544764684e58372b554173774b5a674254473678735830333149716e616c5a73763457657548577248526e474967483748525778592f5a503370624d61436e61394a6b30462b4e347546706a6178636e614a6743546a70776a756b46693536717a4e564264534a36536666332f62306953415569376f6b774b4165452f6a714758476b6f455651692b5974423839566171754c4b6961616e72484c35384c506b6c6351566b6632577a54714177464b5172414a485846626478736c57734d3670686e375543376334685566784d4f694e6c5770796c326a2f41435179675065306445686757582f754c70434264796f57766169733744356d7347716831564e2b6d6d6969522f53536b56384c3246476e376a6939724a715a7942334b466934484f6e6344576e4c637a4b6c73686f63744530365635737a37416d717a5978362f53576c4b6859536e61334c4d7877632f78495134784a70477071763867775953716d64722b3950496c4d6e79505461496f7158524e6d4c625a466f5543786969456d5a74644a4973655145634539416d50745130512b4b426b35727a73597464624a3568704d57546331444d4b6d456e6f3964646d7546496850486e4d486e45714e693949444d512f5836494e4f31346d5450704a64595564575846504551336371636563336d657569746977586d55552f4d58324a6366356e6470354967676f4a53514e69316c70377a794751314978705369704d4d5472617634736c54756666427a4f3475694f644f784d69785961333276734a454666576c61342f61373467656d74524f3335594478495568712f7155367530682f4b3059555534595446306e6e614d4e4e4334334a64494b66624c39727631574755726a7443734a316c784b6e562b44362f6f4d6258556e783147666f56364c77587733513331564639445035474a55624778454e484471634e5352517548705467307a6f6e2b5a305534544c7149696e4a3248757167793168577a5535552f764d654630387957556b496b696936374c616944503435624b466650796850784f533154766c3476374f323748613453483957533848555550747a34705a47354c444f2f4f7a41396932366572354a6f537a61344c55492b4b7068786e506d41486c3766766b3667783530796258336e6b4d58563049546251675175596a714f756c784f4e7a33616a6472496e6d546c4e35424b6646786a444c2b70324e3935427730306e3973726b7a544f333559444c4c6459795249456e4c6d4f5a425072736a76356935422f5a4f362f353767324a666e303649382b657236624b42534c6f2f6c703431712f3351357164774a4d445657364f335367797375635954353139623575445564735762476a372f535838363172304d2b58336774594f6e536666664e66787134763666776658314963496d644a566e386370474a6c5559574a53665432746f47586a6f6471585376553676347535646746715543312f414547667958766d344641734573774c3858626e314931722b33424f36337576547936385a52706239524d73595a7a527a32696d69464d7467544130674359502f48674a616554386367394e5475416b676d6b6e7479396c49686f5564416171744a475a4d4e496d6567316566796d4745655862515658796f36746c71716672726f4d65534c73702f57676d4d776c685654563836374c5a58597961644775656279494a2b715a626d7a41453545583158737a324f6658776f2b6b6469564b6d4d4f64396d66623873426971636251756a36722b64376c325370312b30356e4a344e4d4a3670436c545a58354c50325369644c717144516f47634572597a653335467539367441544f69634a364b474b3533586e5379365a54532b4e55317444347a5a6e5058486335575774535a584a374f4b334f2b51317a382b526951396e4f424f7675776f587a45566b5658525a744e2f625554645a725573694b34626f4556565554445650516447685a53532f61597a7663585a79664f6c79763630724857306836764d74386c5531336174584d53444945794c516c6d5452506a564a30676f6c35544631435934656b7536553178574b536a3247613657694b334133566a70416e474c6c75374547663755647a6c6d4f58544e326161576b34494d6c784a582f414234356f385a4b444a357a6f4676502b303745346c644c524e707a35695458516e7369374f52553837744b3930742b6a3845647473325334632b4551305a6f52426c303979353242547a6e48416c55616151613035427063366551647835386d6479367a6c6f72356d6e6c397a4370517854673544446e74416e386a344e6e75374f552f774472554a7362777857596d58766d534373354d61314566497039687230546442576a65326a536872354e71645561327772726f726e63746d6b6f4a2b575538536f30302b306e306452304a4132432b6c4c613563792b4737514a466b6444496e545654646e4964506c4f6232767952594c574e3358457a6e5032624f5867594f396c6b335244484e5272706d5a4f35667a312f62305974495a4b375667733651735739657972676747625477466b4a744d61516570794848314b556c5a4d45676545374747746346437336653670504d3279755766506650444f495758494a6b72656663564f5361492b41745a542b2f356a4e61794e61775a3042412b65425574616e714f4b69636953714656794d716d4c764c73393261314a4f2b75593352464d78703175467a684d41596c6a3247417473326f71306f73345568314e4635444f373751696a727971626f5276464f6c38626b674e535258336e77714155306c41384f30664f6f4a4a69795572524d61777a6d35714c2b706d7442747a35733462333044526d4c37584457636453364b4a55415942372f384162386e3665597663594e6b4b6f4945313656483865467069756375646e6461766a50342f474f4f324c546a4c6f705255356252366f42417873396e7a444d394a41456969314e502f414b44554a547744525a5a38634c754a57445a637879613352536d66654f70354c3332727664305570355345517a736150363441564e33544974457563676e302b745656536161614e57674c4a3438367672763143304a48506f6f6b543031416f456e4d5066613333657967464431656a39716b6b553559776844387979486c6b315258794a795a644f4a37324d5a37755835667842302b677a345149656847336a326943576870754739736d624b33767a7a6169644c746b626e4d56424c71737973366971506c6e73646e6a565664784b2f685661667a4164422b332f73454563304d5156562b393758363967686f785857506f6f732b307461597a54517833532b5561753065306c50346a39736d6a6452333749787a4f36426c5154775a77756b436946427476374e584a324741686d42624d736a457075716e75636477704476545575646747487563626d442f414547454154467a43785532544f2f64644c724256787a736c4e665579694764534c36415443747a4b6c3934775647546873372f414a7a644d50322b5963516d44543634715a7179466a6f374a79554e383830646f7a70643353675243344e433549705a4d6f757136464c73386c413734566e4e7748764a65415668474c707532303736654a375257773138376c2b2b5675654e507558436c452f745a317874543851417563316b4650374d476e4e41456a754735644a33783364716a3930647a6c5530637159757369464e6c51433530362f5934684834662b742f31772b54327341456a70314b6141533443726c4c4d446b362b5a516c4c315a796951534d4b4e7a624257552b70444b73796e537163766c2b73424f6f5678414b534574723279584739626e7838514a584e71737544514976354655314e493668555654385438337768316c4469446b7642427953416942722f474e3644724e61726a464f567a72457258714453312b6b636950356650614b2b7a517337436861334331676648376c6f73474d334b4867494775664f4f574d4c63766d654b2b304e424f6462716963544b7a6a4a64465031314f5a527957366963492b6d626a2b48324e6d2b7366797441623965324f64613769527455566c644d643364434945782f417979337256486f61552f5a33426c3651394e587a6359625979644f3576514e4a677754754b7834364b653539536553657761354b343166795056552f4a47484b4448552b533739556169752f566f6e433735674837487a4f5678306f566a4e4a3564354f6c395541664442484b2f77433335535861656552616a71354e4a74542f41426f4a3676597476756447336866465362653434412b6c6e31567a6a626c6a38302f59536f70737a7871647355667851664c622f4b553252335172466d6670755773714b706d65366d654f674b4a782b747a6f664d794e6e5463705a6e78736362543479506e79313356464c724c734f6d6d72325665383243314a426a516946433151437076327579353871336d336b2f73497a454a7165664e4e4c41456f6c5431456d7074766776626c567164706452433538562f535158574a5850526e6452395657507151696f6c2f4259545854754f632f6c48377747637a436638414a784f6e6b68414e6e3852397a70305a483262506437632f544730766f6965536e345a383674786f3737682f687935376b6674614f4d7a48536342315647344c567646637a3950397474376f75664c6e396e565546465a5a4b7830324e344d376c765477536f39307376335063723353554c63514c7879525936696b30446d54706f3671467179376c38526d5358626c6c535a59723953705a33797a735335693130433552334758452f74524f465144396d464e64556d5a5262596337625a334e6d4d4945577a797370592b78794f564661565642652f4b4d5a75415579666835384851642f6f636a687838416e666951546b4a6156794f514453706e4a7256534935774f5757767a57704d54514f677739496c6e4773714f6f2b65384165422f5a2b4d6778304c3366783838386a4761563974462f4a59366b5238414c4d7a6b75692f524b4e476753345a2b6148326c63537a6a473959416935374a2f59747748387a53507466333746505a4438357639335035724a51576e7841636862795435503155786f33696c546a5a786966346f3142533466594d595a364d6c47753574387876537a4d7a574e74677171622f6c6d775a2f58792f70767777384a5a50473652682f4b7750326e6a66304a6839622b672b474f504339765a76616472654c566e324a2b5930424b69746277305a372b73486c54676c2b527132487a6e444e787a38704e42752f6f507751784c397233794c76652f6d6c55456c5544476d616f594358785a5036376b316b37686e6e353253666f4f634e502b6674724764503841514b59694431484e545a444d76377931474b6a62547249304654422b702b5339597358726c4b566b383466583976324f4a6e53772b2f434b2b67395a5353666e6a54706b4e464d6a464f4f7147314e6839345536494d74796f43464b632f6958556344326d536b324f366b42397a51535945686e3158356f552f786230364c56726b6b6b71443757597579537146436d39706e75503235644450614e5a6463706e7765397043355351616b47774b70653967554969522f41304d70754275722f4144307750687a614a6d54357974576a332f433168576531684e54304a776c476b464c67346c774d716244526d707054486e6e4d6862753230715450506c386d6d4a3258486e3559304574715a61574d396e567271613476595032432b4a7750514446646945557234543570714d3150574c34655845683049543677386e3433744b362b6c4b4b2f744b59504c58462f75453555764679554a427a5143584e6f52644a426e4d7a49753662705965787479594954764c5270756542546e784e79474c734d487a6d442b4a5334666b6f7044325541307567365074316974527a526861576d5249386b796157497a2f6759702b557636332b4e4765584e4555384a6e544a7633357a65736753587643504a7074546249416154304f44693757574f70456c77356356497a79616643712b79476a5133556f476c784f71554349412b565469436f554741394f47575a5856546e584d65672f61756666696d2f692f6f506b3249364959775a414857617a686e3173316167365476386f326464395932644e495052665857747a576f49587848556d65486430662f41452b35714938397a36456a446c7343476370386c4b6e677063736842386f4453517335377778594d564864576970316445742b6c664e6d36534d31324f4d624e58506444447832314d3533435753584d39766539723533762f4650474454395a49446538796144466777327a6a38645675684f7531724856304c7a397a6d67794d3634615a6b354e7a5068597272612b496f4c33706f373158364541692f6444363957684842525754696c787369592b496c6c41506c71587942666b4e556b6379433448387037326f2b6735334d3756396f31483178646a434c79374e756e53586947566d792b55374e6c4530466c5946625049766a6d30543830397373354a716c7a6635544e704a777a4b2f594f6a51756d67674b506e4e4972743572546e4174627872303838663841465943313030364f6e354e3541694445386a386e4a5a366d624855443670715a38486d584d714f694666535361654a3652386f39717144657732566857625450794575757562786858323148794636624c61584e546f74554471344d7651715a35436a4d7355714d5543365575674e46597447785045714d4437522f5651793273743059326770756a513832374c66704f3046316363716b485a4e72383556435159737575645a3154566c4e385268326b454564446e39434c3837716f6f5653374c2f316b6f733455496e3036492b424841796c694a7235316f456e64792f754c34314c66613668774f5839527a46464f4436304a6f445357625070386c435530567a4f5550585a37653176366a51696a306c725976554365567975304d71343154662b5a5644373661546d5a6d5a34794a476a76656854573243724d2f6b4a3061326b57674d7464623274373755464c6f74716e4b7166737a7375595071674874644735775555634d446441486e6a4772504e7a766a5846734a5169343035614a725879615336657a547631454a2b6e7057556935674d392f7732482f71532f6e746e396e394133484e314c436a374a4739663853793743745a6234393765624c7368564f676444633653576f6167374b4c304438637a412b4b4175527a705652775242576e477661372f414475464763773533425a6f6c514b4c464f65742b71566555763841616e4452557964784f5650775855482f414c486439725171444b513672732f342b4859793273514d704a6165597a4f573830696b74386735446e5238654e42564c644b3933524676755076666c5662554831516b454d4569653567637537564b61705a546a3656483238336c4b35555778535453634b522f776b36465832795364426678722b41552f77414d344b426f30526c2b6f5552324b74526e4e564c6d366e3856546e35734f4853764f625666382b6134324f50536a6f644d357638413278625359457368496841453174565178464a3052504a7471615a3654646d527644564b7571376c6b544a6b4d61547530536d446c6e3876772f574533676f35316d514c315a2b62593930744c703948352b35556b33314b653866334f546f304c69597975504451334e5a78302b67527271506a534f622f41494768484442594d645753582b563670423563756b4f667a577230423154756f726d356d754f7676527634706a70657030422f794249424f2b44363958736c4e365641512b6c48395a2b6137766b4e7237477a546f61756d2b616653586f4d39687437796e51506a6843704f6b564d546c384d33673076724176356741414a51667531746464444466736a3269696948325032316f75735a4532504c6951515535614f543143444f50533153544e7647753935687a2b674761463036655553366b6a41684f6359343532554e686d4c74636d6c542f366d57777850644171526c6f633558426f64796d6b316e375441597942617133357a794b732b6c4e73414b4d464c6867796e567579624a4c6e5357725879706857546e566c6b667746384e4150796855667873536d63674550385737554c4b7463565672724a31544f7a3754644771354e66507474636761456b32696764435747483556706d416e3246436b666a6f595839573359375043426c7551565a3855793052554e6d50723444663953507679626575725078766d4667613966777a765355706c4b34536d344762306743627361345771647141792f6a2b78354439716953584e35506c337a7a4a574e31427064785762546e755a666b4330715a56787a6b54436d6d556e685155542f4c3134434d38625a336251517a73774b496b5a6563336a337854557a634a4d32697950543065357565385034594e4f45356b702b5363665a3831487730583264437850556d4356514573754c50366d59644743624f4249315636464f73716652674972484d3062326f76716e344e6d78325851537276412b4643572f4d73544b425a7270746674534235527975634e4838507759612b304363395332357139564b703833496d65676f7843564b615257546d4e4476476c584767795a37692b6f366f664a6d68536d67303272393750354553545770716a4a396b72435144396434392b59655472594857503666485533685161666c36414d42785050785446337a5359386d687762637978476955626a30364f44527a76316b3953305a584d58376b6b326b6c4a48527a2f5a395a72526f3934534c6c633865453754386c435a436c544864723639564d7345304959366f576d4f6673613144425a3863756272487a396c5943512b793976466e522b796e484845635271546b6147703630655559337164755a415a6e6a45532b4a394d4d61722b4c506a386f614d396d6c35485a52504f376f62326e38474b456a3173414941732b45686d4e76303161396d4d522f77427776544d6a787339644c4c64506d4f7869714568712b2f7279534450694b646657544d595078766a682b777a76432b776b45683952686e784d6835382f6e39782b6e6e6e472f536f5136786c44527a706943614e4d3262463962594852687a4d716a2b536943356746386839426e4363503867356e76575851414b676c7a36437179764538396651525a4a533531426f54586b4a434d493755785a3872334d54315a51386e417861324e3650655a5755774f6d5747537a305775342f52736233695656784c6a39302f33506f3671306755744267376c496f7559376c4b6b554d494f66587245715139352b2b626263386f6b2f4c72624a5158774c65634f516133635a707a75725450644a504f5a54794e71724b6f6634313143676e584d34672f35596e3258724f5934412b354c32514d6765775a37612f616e364f6f7a36664f353266316a72632b7237663257706e57374e635a3853795a6a33787a6c594643767355674376597071596c787334724a576a4f6b645a6a5a6a7333377179546f7a736c315073646f6479636c6c6e31732f6148674534676d4d2b395941532f30416d65543546746d6d664b6c74536e772f774466706a6253705a6c50567170626b77532f582b4f525933646f635365305330304d5575454a32394177777a564a746f315a372f486465466a4f3537732f6947545270586a4e466a547a5735307738374c39693550743778514350325243634842376b313032763270442f6147344561613559636c4b635362527a70732f4f71304f4e66647466567a4e4370554d5642755774557268654a41694e72706a57507a464f716761314f3141624c5050717337585362552f476b722f415073364776506f5a584b374962343834506e6e52376935516d72326e536761533435786c2f725330763671435934765948615141487671356478745a686742452f76594b4a5647633656516f56565171574e694639527a33465a593173337879646534674755586c6e3641675270683070476a6972512f4d59776f357a6f2b30673254364357535644784f6237615032414479616c4c593654544d444568684d7a552b3239625a576a48663234706b4d6d43626c5a526c6c6f6470757043654e46646a49755555685238514a6f644d70584847426c386f416c5a7564646f532f4f4855585539536e2f794b706c6772756f6f6f46795a5849646479765753556f316a434e427a685538414a782b784d782f30435a4642474931614e3147656753306361797954506a6a4a4143535850376f786e385253754a5a624133665a5657516743564b2b734445544c3642444e7658506f706533362b65324752673674673342765170504c427a655762412f56636245766f53774b666431553553756f393162426d4e367339507645707a4a6259304974584e4a506b2f622b657a7943504b3562616d7a75566474526f756c62593675776c79376a4771427a58646e4f4d566a77302f4d384e4248476275487051313657725379706d5a5931705838346666726f6f6d6c32585461636d3453582b383279736e483355705639696c6e542b476d42624f353764764e6e4f4148353571623751612f41704b435873396558666f574b5a4c72615172797752547653716c4653665936372f50737a32496136506e79304c4b6e356c57325638424c4d2b4379704c5a353973312f477154564a3774686567556b796f7670354d4d3971692b544c48716168436d6d626745726a70797a7a44397a454667657575693238675a6e544f7a615934503431384e4e6b307555694253437a36703659637a513645516f5776515978612f6d2b7257353348476b357a7070793455743553415a36794d4771692b79445a636674546c5a482f6b63685a5430736834314f686d5a4b684b716978504b423977716f4b726b746a6b31474a2f384178757a6a504a34642f723568705a56696f5739723961756864564a554a7a2b53706c54664d792b662b496a563252494e5a654d4c4353386e4534314f72375378492f4541472f616573427466705a4d4c65643156643676367631784d70536a7a5352506c3539436532435534584c326c49563835513364485557325a6c5a4b346659316735766837507278412f4b31614d737a314e6267684c536d6c3144516a35445642526b6d4f522f4a32392b756a6c4446433654397639727148632b476963507347484f57746e484c31416d76654b48726e5a3861717437557a2b444e6e59716c426f51496c706e754b59354c647a5061754e7772734943372b72456e4738493074416671663150647a59477650347a59576c35352b53587135366e365a6c663450365435475a344834786e74664e526c37506d6e6c384336393558447a534b6650783850782b596c4b5731394a724e3035396f39307944686d38347057767857473832735757377437434a454e65517462716e356c6f6778415679615851704939664a486c43782b4d65724d4f384932366f64724a424b5851484f494a726173655876584c5372425a4f6a737638596e6b36456a675879704874585a42485343724a63793457635a437a70714145306b75784a71353976534b3771783477454939514b31704f5534333569566e50616a4a4776716462685a767a7954433953507031546f477a4c59584e5569643057554e6f4b616d4e594e7466737942696330366445737a4f344e72744f7172565547666f4a6c6b357a5255533549323754394a6e61422b54506e397a656d56434b643737744b662b6d355157426e6467316f44344d635157312b2b7274656c636e794a3452754934344e4c54683043643770616a304b6e4b57376f546847715941442f41454b2f525635504c37434e4e3865324e4933305a6d684e48583432394a457a5755704d4e4e687673647447756e6767706c33474d73562b796f6e594863536c733373346a324f62362b496c3079714b4d74696574462f66743241507568454e4f567355393266314f7337546a4a4f617033315958765379456c4a2b5a6f44326e6b38374a374165686b6557686b7a715a4c6f79665a5870554a70724450367a47793569566c4e4a31777175302b4443354d4e48336950363531565043634347762b6765486835466d4a3552546b61326a715030722b737459336b7754515a6c6c53666c6a566454633566305843354a68384d363266414650386967557141427a34372f41463039666357507974712b565a4661654b7479436d41353861567738702b4836624e432b686b5536306934316d736563446869706d4a516563315a527234564f506138774f6f4358764e316e335a374971664d7063756652466d625279525650632b65644477646c6e4a394d744b646e544d426f34662b7233752b796b5868416b63446f324e683458475145754855576a4d7a62775649367236384d794e42634f5259524154644450306a575a724b763275476a6931506e5551417931356b70324a6837552f506f6b6736624b4e5244744f4c58644e6d315238596949736e727451663569686e4b44377a3248506a396d702b6d726f704d5068744a336b377156784d726174434b594f6d44573236736658305577536f696553475279304d36776c7571374f54574a50363361587066542f51487163574b47706e5971722f414a4d7a41765a7053617741795833497a324b746e3969334f464d4e453943337a324b415242326166777570706334484248796f3374505446657943382f555454657549504779596e6e574b674c6a64784437666a4f5778695a61615268597336422f6831745034326c4f66623572456373385a446e566b6d716e4e6c5750796e45356e4e354b313131736b716573586a35616d5155746d6654432f3557543048657670736e6d634c546d59326f50696f486a63735a4d7555714f2f463164546635515a374754457767444e6e617272636e3547495a316a4d586b684f4b70762f716f53396a4e633033325a7a6963787746665a305a56646942756c6d336e4f6d36766f5a6f35655533474c696e776b723747677a744567465a446c675475447735535459417a5454735430397738584877386e4f552b2f524c51684e6374556971506d6451434c78567170727a704a784d6f5a78585979592f5a51484b5137314e6c41694876435a6e67396f79727057634473544a49375a503841754c56476237687a76717a2b4f7130616d387a4a2b66365a325673364969627659636631754e53726e44386372527872727246352b7a5044796977476878557a57452b5052644a5163446c32547946477a334d6653564d374f42327968497342676770447235694c7579796b514d435a7048533054665770726e306e7653764c6e544c4e6449324c4e3169537878334f63744963364450664e5166466357564d59414244596d5a6d5a6271644b5a72625762326a73774b695963723764466e37637a434b7135433668565354476a4c31453148794f344c543530416e56625a627745694970435679324c516b505456354c506e31634a505a335331566e644e2f465351356433424e6e4a366d667035744258377846756c7247646154544848732b596a6d4633553749334a3058356b566744596d754f466a615173366d576e4f564c5243694978546e737a61474c483272447632556830316a38344a7576654f6c6f4667315678396c76474d4f56706e7330466143303055786e4b67484d62437355505a4d463153685a37784555476c497059464c6c6974642f4d785358725952594f56683261787661412b70486a46713764615851795048316347373747684678334d326e724b486a6f46376c4c4161674e7855794c63372f502b723034326d524938714b66485646334c58707576354c4d2f51667965394630544751702b5277566144444366485a62506b2f4d6b6a625338386f482f414747646e70424d7a69636275554a54365334365a35346a33543550576a4f34715a39736b4d704268533130444d5979796d587956546d72692b714669617a673975633578665436393335676c6c4d4532723073796f6330326354497a78375566526b6150333439466442475647584766506f6d7370357a3466515155774852495a314d5039727a307241506778764e45364c6d6248654c644f6c4a56753738474a63794f6f6f6b513378433466682b6a394e796b484d38777376536250624f6c4c5a4d77624b32625442645763707364637945356378655231797a57436c734d746a6b356178542b306b6c6d6b777a72466f756d6345776a386f2b39494150796d787656544e465a4c4d697461465169512f4d7972513570783569764945686e4f594a2f61766e3147467841474a30704e6c546a634d7747426a535847364c5279366d534b6e633334304b4d4d4f2f763156356e7a696a576b6f2b775a574d7575584946485451445156777755563468396f46612b616b6d767a4f5370557846395a415a2f654c744d2b323132647a704d397a31714345706b31564b4e383347663758544d3455352f73707747362b6e64687237484b686a32446f7052566e394d37333177775563757851646e7a6b49474b31706e6f36345253444654666f673464614f4f6d497a4f41523764506f41735456786271454d6f427836504b2b3645634669372f704d7a394d674a6e7a445168536e534c6f6330774d534832706b41593665514661692b763973655a71636a595759316c343859454d303052523677512f79735043616e544a6c457445524773686f3970693651682f646333394175577a6f33784f56614d3254584a636c414e6771306271735342724d6e34565a71615575716c6f34544a666e563957565650467056305a2f774464385159396d35566e635a4c46454466627a73692b524370546a5337634277384a734968714d596c3059704745704f685653686f506366735477507761673753636d444f6858564e7a337070303469782f734d656869457135544d39665a37312f596f454f635366312b5051446d4e2b4a494e435a6959366852765279755549686356415a54552f58712f6a702b74766a3554386a416e754b4d57575375642f486b50456933337373366c786e50324c6934424c496b323578755179566e522b483763646978723679326858475650524e704b4b4e39536535627031735739686e37766453492f5865436d416d6b43524d434a36416f61775a47534a6e434539464f685652397032557331442f414c493070466965766e4e44344441675542646b5a78495953374b4e504c6632327a6b65666f5663534c5062737565556a4b484b346976547658305572397956674b6d386178706d497a7543644a47594f35376378387766557a386d324c4d58583350314d705564736255497a744b693059632f547164565173376f335375353371327459626d4837674d584d4271536e325531314931442b46316c686f556f6f563072693468434e785970576e6f2f78307a7444505348794d6d53704b6178533732454539514e4e4b6233615432696d6d2f47686771565a693949376e4d71434661486f49343556442f486e384f61542b716574505830682b6d7363487a4544657569766e5a5a315a766b717333344b4f4c6f57797a6e42704a74325a6a576e78696672466c39535271515a716a396e77716f2f7742456a476b344239534c31642b633536302b506a6f366556447a4d482b532b2f7074786c6933517a595a34714f2f775933464f6b5a6b635731695a753046396c4a3269495039474666326d565336496638416659664c6447346f375034644c446a4e565670667862436e5a2f4b662b506c5549736630537359766c50414d2f6a42504e6d6d795264516c37534c4656574177652b545431474333746b39687356425052325165577735723554446a66724c734e337472635a384a31387746635574376c315265796a73585035684c7251634d6169726b6f36725130437a4b68442b506a4a6b644c457242617070716663704a48416c6f6843644f44515a704f414663356c433754736e7a744255656b6439547072706b4132533263434b666c57664f767665584f61493655705746534c682b763043436555554c6c323062557a4c637a58673749374d71315939662f4c52362b472f5a696d775a3371353765616870564f6e68642f6a584f34537031546a7756524559694947336d66537a52385a695337507a777a6442584751645644464c78396d6955703544555235667661794e446e4c5974733771412f5a6934676655307944446a452b634150614a6657536d796161577969796753646531365655614643584445676d63576d54794777786f5373684a6a6c4439776638415766435a585947686250784e303450796c352b512b443678612b66343573394b6a7a48775761485330506b793645376b687a32425870392b724779694d55642b754d34717273616d5a6e42555a32372b396a33667535714e2f442b5872724e516e383034394d4c2b784d345a5770443546664d6d582b56515442306b386e30736c55356a33672b3977704b6479534c6b32416265527a6e46466f4e75375656527332614a544169585630563052476f6b792f62343535384771436a46565139704431596854786e2f41416e324a414d5174767a755749314f53565539374a4c42424b51613030626a314861543164557237426873554f53547056632f78397a685562584f396e4b4a694a6d6545423163326975757176515a585678326a705a656762737a73366b714271337843503068597168433036487a382b65767676373162766a7345775345416b396a30686c6f3071612b566d766437322f6e7a30365a6f34566d55367176373636752b3145617863306c39367a39786c38366e534850336f494c54794a4e613677646f6f66496d6c58654d7a5044394a356769503547313043584a684a693548644c6f634d44584d494e4b372f7166544352744b527179362b317375696e6f49735242573664535a4337524e59444e624c6f5776515773632b7a6931715541486f7a464b5a673531564a686c42546366384148394547334b52396b6158774c654e794b5975564c7273375a47346d4f753655454a69684b57652f76786b795a50732b7773486e4f4a7a4b63374b564c556c31575a525736442f75744b4836694c50757a396d6939723967577563532b4f3755776d66634a787261734b5349425a3138577764436a347236394e6c555130636c68446e455433314456487263615847332f43372b4e5a564d706147584e6d623775436f467349435563767a3050363761524e713837334b3674734144537a6530594b6f4b4577326645443079746f2f667a6363732f77446438612b704a6f413067563564544e52334f706175642b7a56656e697171595a2f7374596969423269324a5139534a486d70495a4842776a623741346a35656b4143425475683859306d316a692b7175527971714e44544b6a355a706b30634455766f7a652f77447037524b503364366a6e4364307a4d55385530663643444561435038416b4c48596c64364e4c556966636d56555455715258496d69535979792b4a4b686d667053712b5a7a7633386c4939554e4a6c476c7741746d696b4a41374a5248795050367a4d7979314f4a5441755361466b493377746c6c554c35657749386c436472524147545443632f44555a7465483243624f2f556e742f6a39436873756c302f657158574948506779382b4d575156363174646e7558482b71796134414d4567435145757041672f6163636e52713074425571324d6146745a35736f56586b716a3747566a4a564350372b395a32725573523376574a6d5977457a6d356f4653372b6b636548694a506b674e496d3553427a6e4367676752664a4c524e426e4251307675614e6856494f7a3763732f61514a736e57393538746e2b34456446495044613235364c68695a5a6e7654666f565344704c6e52484671522f716b57393570443978626f5675476b65546d3133302b74694d31653949416a725561565830726331625652544e715653744630735a304a686e546136324a784d65446c685a59496f46716963436a344c50616630754744643471306b5a6257323079494c7632323572562f597a6b636359396d566e3947666e7a70664c5a5552502f7741694e763841394d6d6269374e30497a576e547a2b49302b784a707a706675616e37533632575255397567375555393865662b7039426a6f5636527973443375522f725a536c56504f3859444e55664c746875556d575341614b597a475248784248394f756257376232747a6b30324c75544856325471524e4d664668372b706c66596d5935695a69596b4c646f32674f475478706b6461454c30356e433539306b513150577651785a535247526e4b726d6c6e364877494270646343546c712b495263596f783369422b52654f383951386d624738637673386538696a62412f4d3867464f764a646b6555354c732f6d486e4451576d416c483256497a454c5567446c475a2b77334563584c52793234695565434d6476356557705a6f62764b52684d38737859774d4d6158622f6b663166704b443659443771434b352f586877576651643732652b5a337370692f616b5351484145317161536a3549355951514855366d656d6f383866744a6e6d314b2f6b66704531326c37466d2f732f58717370576c514d4b732b564375336f356b4c36596c57566365345159794c53746254552b6d6957533264335a6138314c703874684a6c5775736d677a336d34316d4b7855747746316f7a37766e2b764133744a2f4d5a6245456d4c5a50576e52314e444651354e735379476765797363542b756f51347979674e4a4344524e6f4b73676e6a6c4a624b6535327048445157537775794a687356546e352f6371624e45376d63514c436e454f6b626d2b302f2f7068664645734a67456834356632586c335a2f746e57614f6a775a4f365539714a3462453758484943634a724d353875734a6f37387a4264395a7031664247683454673454584f456a3832756936502b44665566657976446d34336b5544636338796836645a2f5579762f414f77593965644275504e3978747363394264424d45366778313530656b7a4e75467a4b52586d61504b71537050696252314c614e6538567463786a4b693672362f74416e4a4f6a392b37337a4246577258467a34582f5858484c556c696e50444f30584a477a6c494174364d4565716a3151714758354a4a707a6c624d6d6341637233412f38416f43456e747a6c7461744b706c3961797a4c30744b6553644e50536e495767794f61507261506a316e463846426638415a375335335a7a5a5367676545716e5a4f416c585a6d726e6d42485766515054667364565532686566704e74547859643178554d63594162706d67784267526e376a2b4551634d6f3737644e76633572733352526d30427058414c5a67364e376a7344703256464e5134692b34396773462f7974714759314c54495264427a4f715a71793255356e5779727a78684e32694131396c6a6c4b4e4671335344734571717062474c45476e78744a6a47357a54464c41363044644f664e566f66616b6e59745847426e4d6b7a332b2b6547644c4d2b354139665452336c5346707a42642f78796e345176617a347267542b75416b4e58494f30496c6c4e4442304c6448564f35466650735755564d70682b315933553675585066576e35434e793347746434796357344f6c796b46714d6d6331314e4d363751523947554d6952314c64496443456f5653704467367a4f4f6c6e736f63746f4d4a76794f306c6b2f6f4d466265414b424a63715979525366646e76616978623130424a6d3576764664557a2b3848334c6356454e444b432b5a5058636d39784730794e5a6738336b334f74544a557473736a65475a72626169713934784b593246714d36314c70394b6561676d664148796461783033515366744d554c414d613353445a5537674171326e34616c307a7a73727244736364487939536c786a6c314e6f306c6e5174732f5459627143392f524c3576364268584f6f5a6b71797271356f427136782f335875626e2b79625158523268526c4b54636d705644484c37315a636f5a33346e456f2f3339675151514a6c4f6263556246706a5831716f6767513369506c466c454d697a73595661702f734e6f43546f4174627665446a6431644c563842336c5a374c4873544d7531696666585153582b2b696f52706b7a79372f4b50526342517871732b5a6e506b6c585452596b4f684d376f73555953722b49346d6a6e7a6e544e574933523261564171725a4f366e72757572524f57657862744b6f6b306335785a646f396e786b346c6933363567776977587a50474961633577544f6f3546594c5754486c64566576516e61632b7051366950366b3557504277643444572f44773344396e332f30417479584b393648724776514a6d76506f6b7958363252734f69397571576264306b2f4f496d4f707032687765575566705a6349762b457141475571725a586f7568664d2b2b3858553063624f72766b5a57724f467a4932664c5a7a34366873772f733254762b62717a636176684c6f46386f4264544d30354f374372343744586f79754675652f6b6c656162746c634c614936564d6f424e32654c61422b5a685346595855724839742b32355041707937785646504466466f54592f6b47612b4f61587957564638566365764e376c70757163633777767a2b466d6b4e62696537375876414473702b4d452f3170377a794568786e36586b4f74664e35784370506d4d4f647942656659784b5a61376b4736444b3350464e4753747243495a792b772b45684b6b586d48794b453052764b4d3472457833395142387538697138662b7149776c725a657439716d4c527a453762746659677a35432b7a52304e6d78423645737164543633654d61303248717a2f5842564d792f75525775373551496f66716d6c484e717a626e7779504678707443473248627a484e5774534d734344685370374362675871317058474175347438314c76734d366c4a757437767a466e493836385464686a7a4679726e57305552736579364f4a514d6e30596d58584e4d786a7370316e4439555a4f74573835696f2b476a3571505a376a6a624d7a783777636a315566744863316b46457539566f757831676170714875584155314654614963382f5a47544669513863746c3548423158456d6f6763644178472b2b464678396b69425a7979364b7175744844324a2b324353507175523866474774385a433553327643526463774535424f563048422b793134694d743034684c5337526e70666f766336786254464531697446466d7448397a697a593461467254494d70736e67375376374a6b794d5150426d4d325a356e67344a614c6442715074352f597738657a3941744758375a503939314c6c3862515643714771634c6157357336765a333568344d784d78304253624c7a74504e666e47344f576651546e68303273344d747a467565764d53674a2b2f42516c5932477a76762b4e50384175344c677362704745414c2f414f5035625a387a7278727057416f664e6a7a58765a647539744a38596f3553686176685733555a51466a4453494f6448434b3364414644544f5a385a433057623277314f6b7a3273316b31396b426c466d377069614e546b5058686c49746a6b354e6d312f5873742b586a674d663430782b796c6350794c675a5636696d4b624c5037724f364568516d765575716c6b6d6a78633967366b555833526e516e5549717176322f6e5038577a4e6573324677466d4753376f706f59614f6f686c557944516d57546c79356a31746f353847785a6952664774676a5851546b7064317831676b78642b367764516e2b674e6741716c61356642436b516a692f6b6770347371353865654d5065655037524a2b533871484d5377476b704c59422b4562453855696742572f7743523462616b7750303337624b3367636932536a4e4e536a5757793452502b4879553971752b476651637569646e4b79414a6b6761436f70396b78575a36514b76387a337448764b57556850737a51694e506b59766a6c586f565a6554484f372b537731762b6e396c33506d4654412b75716a6c4268336f476e3379464e59696573686c73767a375035427450796f7961364776384167376d5772545632656c4e4e64506141704c3664636d3155537a464c56715963596d4c76732b7a6f3272752b6769333064473971654d6c625a2f494d7462317a4d34324a525266716c45744e692b536b482b2b58466f6f475a786b636e48456c533531766d542f5674396645534b6d39307231444e4d6465492b3055324d6b355878303962732f63354a4945574e714e2b51677939694d514f622f395352766b345537754b734570397962376d687149625279484f533546695a582f41436842624e4f565564685a6d5252373649775a4c6e77697a68416d775933564e6d4a4e4e4c6f4d2f642b59745841382f5264394450724f716578687046384354524a43337456577372556d653836716c706c5053314252384450594d334567417654535a786853617a4855575a6e3042563174575449732f7744547955347549687930536144797a51546444516a5962484c443333526b315967357133514359444d77715358415a366e567a55347a2b524d7547353175645877363331596c4c74484b544936635a733668796272477a6a39567a46436e33746a6130426238337a63424b48516270744a6c584a466e787563787976707259634d746e305a305a70386f6e50343266617565504250765062534256324142657849412f62375a3130646e6d4a484b4b5a6b5370316e30556e5a445046446179374d4450563130375076665655496850326c674f4543366c77396c51416d55567964734977726d3672516a71547a782f7744394d6b7259434951747a616734355a72792f6d71466e514c672f77434579542b55426379622b674c484e7746483177672f3535697a46544e6b344273733463725a736d57616235716663454b53424b61304b357966346a6f612b634a516144446578632f61626b53773055533334706953664931554574304f666e31464c66302b4773473630664a614e4952342f6e484a374d6376506e4171432f70304879427455584c4e5453742b6956444f716c742b37626c346e6239724f53505a6c556a7550536d78307a6142594c535362585144784a2f4f4a4b343643585a4a466e324a366456694731394279733253726972492b63714148716771307245396a5432357359504e5037543842724834693737506e424f6a5a45746d465a32424d696251547844744b3233572b536f6c546c74544c6d5a376d58614350495070742b73594a66304844333271372b69534358734f4a7264545363314c52557650544e476d7738376a536463466c655a386b37352f71705750362f566e376a364c6b33473430743642677a504c3064516d55306e4a4e625051446d704a4c57534d53316632706d616d6735666554756655614873585053387673314b466f4e6175696e2b675555725459396b2f484b74674a744d6373566e637437572f2f546c4a383246492b50677a6f6859744e504f6733365367575266364c572f474257732b6173613838535a326f454d6232643646383554513136345a736b2b68543164612b454f4b366c436e7a2b384f665a4166385a7a6d41466b6144553849416d586a512f766c544e65645158397a34323266534e31445a5975727a5a564a472f767955673044705038412b424e79617671676b333145667967794e6e5532697668356a564c6a7a75304a454d3964535434702b53415544497135665363366c5963366270515366735678495a753549334e76344a30616345464c3646534b59352b56334f695757676564736c5536684d65624b55717934514439567450364e4b6e476b3266304243503535616e4c442f7373484d346965666b647253314f726373394a503735557a2b53684e507a64442f4a54414742504664414842374161766452556a3744567a6e3275624f373962783575667a516b6633334e4658536757424d6e6e63536c4c4c3461503841346b6e444546664964414b6f7070645255566d644e6c774c55795a2f5655306858326462326372355a634e53766d704a59334238613576664f777750336649446b7144354e4d483142792b476953455a436d736f35466948576d656d5264346b73506851503157434d71782f58377061634a66386b594563344f7549554f6844336c616e7154454c61686e6261304b72354f4a722b6669557350686c33465878774c5168334156424c78502b58756e4947324e54707131566a77644656596457757146694a48614c50327969332b4f69756174663031394c5149486e5553434e494c345046755a302f7743674d4b7667346255647351364b717968696147476171526449387133636f6459763456796c2f7744516e516657385565776a3342517a6f663041736378553948775369497730574b376c693562536f585976574976597252626d5546386a75667567694a61717835396b6a4435343644494367496e5457354c645335616e364c707a53556a374f71736a356f4c76646c696b6c637239773644424e6941466e757355414754476f4e4166516f7a45314258336d70374f686c576461684f687962556f426e79514148737a78556d4e62336658377862435477347861336a6e6674514268636c6653796b7274346c42472b6565595a42755843635647664139646c4b796678695630574c656f6a5135496d48534e7830415876416f4b494f4b46764d305a58517a7a3856326172765a335a31744e586161434b785a6b4f58786e7a635734515377672f324d4a4d37324e2f6f492f5a45356c484e42625064304f49506c4e4261644c46544d6e4676573563684a7034635057704679693431333246775034526d7467456b42455364517a70556d7958373939374555614d546f47506f546f436c335a37736b624a6561517a7173467838597350696c3673506150734a6842676c33625a62496b2f48724a35396a6b477532636a577351456b326c55777065685a455936457070486e4447795a7a6e4f396b6257712f6f50764554484a694e357741766e6441545835744d6b4d374a5677585a646c50426a476c454d3635794561652f43585670647a2f543371556f494d463847784f6968454f4c575a565230316f6c524931773930473655314d564b5a6f2b6c726339717941685575663459776530674d66597a2b6778762b525832715a755a6b6d634f6539564765366d517567696469356272596b5479673344396f7346677a696244454e43667678425370337341624e724b6f3170387974304b6e2f4456384d343976737279366e6f795637426648585137746d57334e63795a48414a5875542f776f42536e336d446a546b63325a737178726d435450745967716f5071304e5831646f53384d434b6d75712f676962666949456d416d7530786b35376c2f30436a304e66497041504b4753367132736739334c6b305730484445612b5562576b485a3344633667544d2b423969616d616c5365796a324e494c56624d557a5838636854446b5954786f584f4270663775575161332f6b46454a56396e574353304f71595a7539337732487876756e4e4351664d6368483745503438726449714871526672325556507851726c367472783061312f5964784d717a55412f5a6e664e4d6d63776f514b576342342b387032764731612b334a45774867314e4b434734754c3076757264576e697333525356576730446338464b544e3741595967394451785737366f636655706a5a614a6d707a32646e587a592f665a76684b685355726251525049674d424a6e73536d41446e392f3841694841543633696c78464f543234302b616c33537269494243686e4f6b486446657374506169356c30585863366638416c307a4c392f584277636d426b6f30795574304b3962365378524d3252716f305578716c4a564664764b4f7159707444422b71546e316770586547622b66456b414c3567795a6f644f634f55306142646e3674415a364b64464830753841314768385a6163684d4d526d5366486e3850534f357766415a4351794270386d496b7936554d5778546454524e526f6c38326a6c3644425a4c6f546f76524a64495047466d38785a6633516844574f442b4e5762477a69594e6f3641346172546242794d4b4d68436a706175346146797379647a55715637727239524f46704b63786e593745324e50354b772f6937484651376c50776a5341312f7742535632696a5263475535563073624e45596163314a2f504c354670736179684b2b417566713669587a6a3238354b644c524f5a565042343443636e506c6b2b685055322b5447357957526663306d3572644b5843686879464458506e73756459554f586d304f5a4b355a646d76633337615566437067446a314a496553596e647573582f4d52533247654f5274584659335279476374655573362f6a716f6f547a692f3048517a58646f5348325775356e2b663766594f6b61413373624c56495666386375394f70334f6c7050756c624761354b72586f71577a73656533364c714a5a4f73474d706f30357071436d64553339614348334a4257477751336c31684f68796e48467379354a4936716950766b627963314268555653364c6d64464e487865326c5043424e4549636e723866302f55483633477237644d49546e6a7752554976676a307055784956714335686b7047306d5364646e386f5266742f4a3571762f41486b3735486651534e67494b7a5536716d786d2f55536137733047396e5339303361553043684e613563367235436a6175645a2f4338692f626243443743782b5266414f68624a50486a6a63394851504344673456656a4732676d563444744b5857514c386d6a7036333242304f304c6e506a6a4a44506b3438445174326638483139534875766f7257335367374a6e6434595837454e4f704e6b5172546e6a43794b6a626f314b72474f644c53365355483166755833636a63372f625239594861434f755a6e7942546e365845647a625162464b3932704a6a537473616d5631796479344a5a41586a2b3350535a31437a702b33346c663938786c45416344715351303563716b2f726c4d374b6e3631544a39546f3232346f7a484e5a4b70514470445537465877567134772b71446e5a7664394e7743456137355535684b7350747954687a7a325a776d696e4a7a613876544642366d7168587435476b4b475976756e6c477a345479514d2b48496b316a585a58774569784d6a794e2f4d2b79765067675131643333512f6c64447531724a5552544a58452f4e2b54756652577a4c6e70305a785a7a356e704f686f44516f514374747631457a38577756643173335274526f4d706c55366b724558364f6475743236486a72334779614a553830375071324b39376749426f686a6237364351464b5269657858352f334572726e7175363438344e747565656e6a2f4e4438623652736b7a69636a6a63356a7166617163616d537357695a726b6b456633444e7071455372474f38463546357a4c596d315043576b6d5250764c666d645270436e54353948526c704e327a787243497363614f4572336770706f44696a676e4933774d7875536331464f685165766d77353047767a4d6b55312b6678444d2b6a4b6d586d6a4c647879302f4753574e574b7570534b365450374c76614d67547162475a7a524a386b6e4f724e475373424344323552564d5a4f3832444d476b376b4e427a334578644879735a2b7a436474676c38594a44467433466e70583569356e506e30677059706559706963645a354c7665302b78454d634f6f38616e6337796a7631692b744f353344534c6e4b42312f4a76466c35544b754a59774e5256316c6137474f2b79314a7a2b315066653679373430697a6764413147595655636f6f63466e7542546d6c51697471373558396c6c4158317632567179366c6c6f6f58465a382b706e454337423454685076424e765574396e7561434f66642f6f4579726c47413670314d665a4b47625154704a35446d6250793130616c55597a494f4a6a4b645a4f36482f57517070787a576674645075457777346f394c75506d364e584f33652f6a32642b306f50616e505738636b503479694e59522f542b386b336c304b7a34365a737a614249556334483253544a54334d6f6c6d313239596b4a786d4b6c744850696f6c6a7a68616c594a6f656b54495361626e53454b6c675878554638365263434e7a3579312b6f706b6156476e31487452526e69616e57792f597a5674596a627345437a2f744c4774724f634c6e36324738613172456e2b674e494e4178516f7254477a354a5a345a45414c2b50756f747975477864696e6b6e3453664b764a396b2f7459502f5a6d6d2f774146304478494f706d79725032386662584a6363644d3675487236484a6b79425a44465770756b5445536a786b5a4e4d65736f4d6c5463414b47396b565134414c6e4a696a2b6c527a76526174423968682b6a795973566a697a4536475862664c787469786871466e444661434d39756c4c2f6548746d494730643166314f6148337a6162336b6a68366b7a4a4e505574353830724c6c6a6455317248456d665062476f703269676b71344b4439744c763642673058457831534d31755851766973726e2f49535a4664553577784b6b4756303656464b7142793043377241396f484930694552655167617a706f304664546437332b7957746d693346533268347a317a70734139477676765a586e72734a303352584e523732423079534c44703934503841754e565870355676772f537a793478557936722b735a3976744b786f683969794e447052544c5732644b557a64506c4b30764c35524d41414e436e51736c574149572f52716c4a73326c61352b6833527a70492f33716347722f33584b36796958676f5478496e39776541627659324d514f576e57594b6b2b4a6256306c4e7a4c746f58512b78544c6532452b7237337a4654434b5257746a43494f4763795343556842596f6541796f795864396e504c4d51744450384174665a6454796c6356426656726c69617877486d35723535317434394854416c665644332f57644e38514c486d4b556e544b5535716d4f504e304a657a726638326d4d7a52314656707a795966593068505063744a385037432b2b7870644f6343414149574b6c555258685a33394b68313548706d6658524d6e4c6f466c7264543355433232346a7671535139482f3338736e3472326f6179674146664e5a734d6650574232375077305575446b744979424b6a516f61696b775644523965707a6f53447335732f3075542f414a663976374c6c417a3631565235774e5a6e4c71376e79706c6238724f396f6c64776259365574726a48735a6e5a4f755a50476737374b7154364a2f7744414d554753396c56545033587a6b3077396e6250336a6f3176697a556a4f7964795a7a4a6e4e4278376a4742513069427151537348657754555a68475049764930615230772f5735703647685577383965524a792f79694469744b466e78305a78304c5a4c45764c4a674d4836332b4c6f466538322f4d6c6e39423947437274664e487953733145434a4f315955756962575972653530396b69324250756466513671373949754165564d42766630564a70616448417956354a51695a74575048434f6338387971554c656436497a37433561737a7175556f503479626f4f49726b70634d33766d39715033523046414144536d69597576593130452b2f7743435937595a344d305930573536534b667479632f6f2f657a7747646935754d725a38492b7736442b47782f384151495568457567466c6f7054706472532b484e5461716b4b38796c535479355535327248776c7064704a686c4a424c4251734d2f5a4d6245714d676c3731426e7964696a6b4f4764434a624a344a4752614559585531526e45634f6a2f4870343667727664557366593261527954496d527150355a67784d36717452764c4a49335a6573527a6d333936464c702b6a474f697a6a5852467873647a595a3341524b39674a3967552b333255502b4d4832367a344d654b4545646c7a557265435867786735314138355139495178797938364e53766450333550327450764f6a6e784b576f7547454c55623174704575726c3075733930615347442f732f5763375135783274524c305a32507a5961424e6165416b6a425076494639454a77495241586b446d614245355843576f4d6652675a6d67313153346b3048316b6d64505056477a365a4f55394c332f4143384f425a384e7946462f546f45475a4d73417a356c394c477a35464149647a516e474c4e4949637a5369586f5863713976663337575a4d4b6b4f61447666384b562f4b737050594471624a685a6c53786f753470434e47532f75683335624d303676733256627963715358503841315153426a6334362b4541664359385a387765776d42392f59385054637077744a6831756f7a7757782f556e4e6e61584a624c755135394c47574b546f5239634b7144436234576d5a745343552f3045766b45614d3755464f7046305578762f414a446b5a324c5250504c5839577030613762434f67585273596e6766755a50486739696a5941746c5741385150495232316464446b307735365937334d4f483956315655566171484655516d6b614e534f44704a3533376376765a375073644249474365676a544b707636687357366e7231703969786d356e792f4a4c515a39674f6f52526e765a6e734472444b546c62544d776944366e313241696b56714a447969776b334e6774693057646d796f69516a516155633451523742665a726868306c6a2f69795a496971413038452f6137355149467a503458567977304a72315a436d4c2b537a2f596d56437a6a6b7468586f4a39675666586f4c4d476b6c6578307a734832384832754434514d52335a38484644334d6f596d6d4365663548747a4a48723067715a39446c5838574e4a45387168734e6c4c454350766d6d2b756f57453456674773624a716d784b4b337a53575a7053354c49304f79577264563336614b4f33636a4251703748566e71556248564131744e442b6d30706f786d416254706d37765635727139424e7935334e704b6d2f526c4d684557786f30715a3579526a724c506845476952745651634856556d3339443859497531754a3737655236553636616c3475597a53476877505a334e4762502b76564e43535630564d39704c575254754977577276542b734856414d553954725873314c6173336d59616530335053364761735656506c576451547a724b5747656965506e2b3161536b4f4f644c6a6f5037564b777a66456e65786232496e397a69304949366e50744c463539706570716472317449687155544b6e584f6e41424d434b6b512b6f703766396a6b7a7872506e41694767466361302f78623049613459304c547838386c4b7556374561756144656744506b6c5978684d496d665a415535546d717053487a6535474d786e6f47563231515965526b6e742b65785665512f4b5935455a746d346961646a73697269626b48504f6a74456265724a715570366e7379665936666f38746a7365667239514571314f3656566b64326d69624f3059714f6f2b716557714c37796b736558584f6c4667464b57506e6b4c49616e2f4145436e435a316673494954664779336750737274795975537a712f6a30646c6d2f6b39616e474c4f5447314c4e3775585a6f6f76545030705551356f2f5a4a376b68784f61756234533730574f742b7a395a43584b74566b71733651746d4f616a515a6e353356466f5674687530394d394f4b6842676c715a56395a5a4c4f4e5a735743364841536c6c58305768586b382f734746654e76615271386378614f624f396f2b37526c43585137506d654f6768387136627a306b4f523073734b6c357151414a5a423554382f325776366f7a4b3261787a54316b5854344e34646a656e455643374c62396279422f4c5762336e4c56505470655a686e4e63476c46545059496c4b76756c5177522f53412b59593354494e6f2f55344e5a6d6259446f79632f5570366d55694747754d6c56336c51625773376e44556c6455376934776b684e715339357a6e784a45675238487445457a6631554a7974513562644632706d6d6d572b4a4441524446556e696c365644754b2b72666f4d4266756e7175367930572f5a397a716150397a53636151456c4f76566d6c476a74732b535031314a4f6176685754494b35304e644e366e56653165582f45366b367a6335414478446e6578537966777a426b4a7570334d33574761696b4a526a714f45326f5a4d4857355469766f4c5373316e6535626e664346464c6d2b777a3969517036536571454445795a6443646161304a3235476a7850735a6d706c76536b4a687361564c476148486b7861456a2b2f736339795134494f426830652b674a446a78513157614b4c636a6d6832624f70486b444163645a4c49766f3649527a55584c70644877746239386638415749425642784c516e66384158555141744b316f4959694a56514d745053733758397a516d6935506a7364342b656d6d58366251754a59787739516e686e3369766631682f565746445159782f486e74476269624e55653961445a737a5256586c4d42625a3830627a6e59784157704b474e494f61795943702b4870687a6775634d6f485a726d31356432685042486c76734b6a61707a473063306b71506c36563361453030693173304a7a6f7164385061424165325466437234666c4171772b77514e646d717a73706d65715379706d637454692b32436d776e50525345477664493661466647654f304f556b756d4c65797a454d35794b4f662b676365525677454e51305a6373756d6b4e4f4b6c4d353352304847466372644c632b39485543374c674a4b2b494a446841364855454a4a496d4b2f6f476566394a44587244764e7252326442307a376553785578496b375375772b7343746c4850716f2b4e51722b503274585741755238697631396b47566a447a4941676a4c52357752536879575a7858646e545a58424847503072724a774c48517566516f6e2f5664487a5375344248384474565a75766d43466c64575a6e765770746275746677737075577669336c704338615a6d534d356d6e794a4530745330556c7a6e32612b30736e4469683549762b675179677264715074344f626364553267704a332f51666c49516d38642f4256426e3471615779682b37506939745a2f716565777a4252483332306776754d355472534e3470546a4b7675645569373372664a32304c437962412b44506555376670702b4930436153496a4a4e436e5675446b34424736464e4f597931304c42676b78484e3168526f31565450674b7152737736576a3757392b38483271464544686f36726b314a4c46383747663043646b683675784464384a31545533554e546e667947515a426f2b507956506d70665a5335334c49653630726b66586478507768755564594c666c5970515245575864794c4e6e764d615452757371304e626a346e737a326e7a5469734d595a557a6a564c4852565970706d534f313038704765704166586e414a34396e7a427a68543064397a5739637a6151695356425368516569746374664c507263716a5855346d4554682f774134686c565465445a78637831527367504e77344266513353746c51433142525131756b485651304a594d2b314a6e77754b5573327870547a7a4b3737796c48324566423936304c43597a334165666b4d64523441465342347779364966486246567162457a767252716a71324e45324233356c6b6d705a7a4a617367366b34365144374e447636674c6a64556f354b4852496d7876317031734a72587531574a7a6e422f335958315176676f582f477a694a7a4a365079554c6d623871654f4179417239576d77586c4c5848397142476877546d70677a613252534d7a774b70774d6837536e574c36362f6e4874444a67546d6c3878422f6e513441326c72597a70382f36357a63794f7662534f6e5851794939525362796e356c6e6f4e6e597445696e6663514a64354770454733396458774f366c4e45346e776b505a644638316b4f415530374977345250315a364936323030537a754b68615850314a767453674e6c524c3479514571586d6e375a2b4f446e585144452b496f6e7270354d4654646348364645655a4c33756a646f756b5a37616c6c2f4a642b47356f7a7a67384f49537830332f42724252434a427172366f2b51312b612b5a312b6a586a584c793856384b79565765722b6a315545734c3657356567334a3862726b766e643264664c463056305770353750664e6f7a5647627951767574597847366576634c644e664d764c796d3046546c514f366e67545a75776a4e54476e2b54756661666a7246342b663947722b4c58396b6d4a474835415034515630366d6b326d4e307a74674e4d32684c72566d354371716f71687379794871636b7256364855703036654c76772b4a304375644d6c61364849543839616148383631664a47663173446e314662575a543855766a76316e32576a4e2f4a30566656304d37562b617a6d394659412f595871506c7a5242794f4d344a463833657039342f4757505a7434344472487a47446f6c4961653579466e4e6f48494c66704c41554a6e73734f4850524f617673496e6e5a504e5767512b465442532f524833694b6c2b31494a5352765872496b706b326f4e5a385464526e632f43665849487839544c52704c536e32634b3438775339366b652b685038414e3955394c6a2b655971687a2f4a474e56714a4a65334c6f7872355270644e5044334f736a4f794b694f6b3072344f663769783345342f38774d4b5671346c796c4e4e5143572b51327932447052583673584652556f2f694c4a744f505067697a672b4a3432774f534b4a796f5a4f736e7a69796f6b46724c6c424a6c7a356172624c654162753155374857786146714839592b56396e30456145742f736772587331564f5447705a7565554930456e6c444270366d5936692b6a376168366a4d59734239645a72325773526f736e4f6e6a3837535246584871416e377373704c63716251595439534559786477652f57536e39416e346f365a30766f436f495533314935482b75396e646c3573683272694c616d4b4571724234764756332b4a5734736873726449794f61672f5a5047313661552f4c32737748697a63305049524769715759716336756c7445755176507430374f79304c4b5737555150787836314c70322f7174547659314873644a39666b774b5a626c69766a4d2b7658694d6f4f6e3863504d384c5873424848612b6c4a71636165544d72504f6552464379346754735a525a64305030626d6b3742483370633447646e714a597970467355656a52584e7033536d7a49795742577578314f365665685a6d635536747850534a61302f312f617a72597a2f6a6e39446f4431494545536d52637655544346476c38414f526f51434b3539554653335763437a7568644754316638364877436c48554733697333396d3579576733674b573349646e7a49666f46756c3733757567716a6a666a783973376d6a6e33537a7a6179705745366f525072795a54534e466a666350312f747947415a49636c474c6151314674645770325757574e6d6569695371703338737366736a4f43364630352b7038774e5777752f46654370374f2b794d78302f4a392f7542364a7149624e445a472b6e6b32376e357441724d496b47676d4f2b4c505572576c3046496437353065524d6f61766e656533534a4952392b593150666b2b2f7742776e7a4970386b79556e42446f4c437233416b465851326662356b566b376d6b6e4550354f564a6e64446d696d763744713038306d4c5a3030464d722b6b3232326e776b493077357a744f727531486537503670635a36545957353264486e5555692f505653446451433046764768334f395679523033484b742b4d306c55332b6e384831395342395068394f565a4775576d626237656371747254426452726e7a454d756f7a724761716f612b2f56536c4c42537961785470716474484363665435502f414533627558474d6766626d78376e6c4673462b586c7061306f38314437327430714d2b6b4f5970454f626f6330444964525a465979537045674e3979684e4e4b525937374e76672b6e36436177686c703064483531326d57374a33754f6e514452684365522b66543756777a4374613650723473654c315248794d69656d68726151352f7454586a733964505832446e644c5537664f4f4e546638576e6d6553635a7058364b7168706f356250466d5261584730432b6a356b2b4f37545638367459632f77424b576c37516f6f5a5775336a754162563161346d6d6a467a387436636d62536d594e575373663431436b744e63746c466b5365575355726c6a4b61684d796a4a645041713650375437375670337a414739304857596d4e62385762473773527279744f2b497870643039474665632b4b324158506e6e49666f6d536e385339592b7a6c436a57436d4b304157587162615a396530534f32684365366d337055337a4869737a46436e686e6c6e6b4d585a2f3058554637325444514278747036344678706f2f6f4732582f77434d783566634948366a6472723842387679615847583653366b72514f647a76583167354b73326577475139716230654f2f6675735653455156784f374f65416f62313738397966487642747a7a44796a51716234666e71312b387036397432733752627061466b554f4c50577976354d3975706e706d35784876613862786b70483530754572566a4d7845646f62452b6758702f6636622b69766948696c74712f2f6e46386c72373667655930536c712f5033643951306c355a626e5563752b53314d616b3266784b5a7961326a7139492b714f632b74364764357a624f4f582f415049745747374f6e7972506e50335762724a312f7741526e6d6b30454c314a6e6e6a4661387431646e3746712b4a4c69684d782b646f4b5744782b7a586d33666d416a79484c377352707a39686a4172577169442b4f79632f4e4f6648612b794e7a326c34396259464b386c66384136506249306148307063316a4871416958786471392b33372f77444169663841342f6e387872494a4b62453649353278324a553250446c685258446e315a6451615364436637733679574f683951645236627142732b77587573446c4644336e6b484179353035496a386c7943693159507675314a4f30776841632b6a6c6147714d55577658554153793873545968674f4655356d6368304f584c585454592f672b76715156345a58796e32755069447a53544f2b71792f555537734e765937714632653257647568564835526a2b31693256443835652b783750625146763961424257684a715245754f5236365535697553794c6e6463445a4a3542646e6d64646136416f36784e5767787151466b6679474274456a412b686e2b38396541784f783157506e57506d7835544f6f744f69746f352b706b58383548705a37477a37506350726f3675364332487a2f6b7a516d387a764e2f57504d48377a3134444c506f6a664c675773494f646844474b656269666e544b32792f4d553775706b5a5264557563326550374c584e43763456492f31314a736c705350394e547542574f6f726c546a4539315647736d664c6845645836394a7868456e646b59363368416c507330436c34356f4c53535633356f483852754742575963617263324c78374565505a57413978724e3850757455576569583565304f6132686f344b31527832494766363974414271716a4f6367396b78322b50362f714d4d717a5644547031303478503565665630315a335546397852536a73495a44334a5744745263376e65783747704876555938332f414d527175422f5676336672784330636a5332645065324c366e645834394f495779307a755647576d727942794f6d5956464c486d3056584c59726c714442527a4654567a695a65414e65764c58704966553132516f326273396b7253584c6472537255565779353535777a365a63686f6f4b6a375658385470512b357636574a456651645535672f444a4848732b592b636f62646132487644315a614d4739614e7431444b2f48767259584e4b2f50342b744b53434659706f5378546e7549356d306e2f7744432b756b4167462b73745a32614371484c7358795074497230756978527941366976525477702b4f4371676143316f666a30657457307670306d66666651445178784a6d7879365863692f6d6f5838585937374153573966492f6c6452637a716e3036424951546145574663394d7a5a324544666b424b6e632b4b312b3149646245746c562b544c62452f516a6562544a484678516f6d72426c473756576a2b482b743355324f7772476476567144715236744837427a2f39315239445171347465787a534a32526e2b7a6b7171513458474f7445745a343362556d652b6d4f6863375965715a564f4147307a5a333330684734776147792b35796e6f517748526b79616b392f384154644c6b6e383737553256792f484238646278456e583956376d3853732f317a2f4b64334164547171533742666f4d5762724d374769674f6570484574736b564c516e75583768363169364a42714970667675684e5475465a4e377242367344532b56304d46743873386f79432b4b6930305633495554427161626f6c58616e575a37484b5855744167784e6a6536557a7576456a556b776a464d394d4277775158706654624179317551644e746375697038304e513056497045525848557545754255452f3841314334747276595342642f51417262677a634b7661487148552f6174715456334f636d684a7546453950623538716452446b753152396c2f373551537a6d63733275766e5032572b50362f714444756c426a44304c3049792b7936626f364337504c44305861455975644d582f77424a736f35733172583279744c4a766c6342554a4575455458782f5839516b45307a6368632b635478444e616a53417538374d76534c6d694d303078636b6f426f754734686d3977752b467654534170707036336e3956413954504750676a6c725157636b7046356d756650355744714e5358512b422b614d6d65345a5a7835634f7277352b4b476c487a646145617739365832352f50376771697253763054795357554d765a447962395476474c4e774d2b4e6b69744b6578343073396b6274427066716c716b4b73516c514f63685841714b55396565694f5834444249687062476635746a6d4a63686830476550544c6e2f314b644b6f6c4e304f42342b6d467a4b4159625a514135534c7033736a505776572f7a2f7543556d336f3237455a7432507161367536376e364e7345394f732f757a506431325071777a665163533830592f653855552b78544b2f5a496f366855453837655861446d394b53537a316e5858526b54335530773172504f4148366b2b6a68387876334b4d7647636c2b4834574c53484a30677077635859706679425a594a4f484f5a42703357585855634b4e6d72573874576977416a375a6b36334449726c384b556b3656587843484f6b746964564a6b6a767a5766574253317567374d3633396e62724f5930437835786e6c6542536148385a4453396b7458552f55356a72466b64436154562f366c7a6e794f50674b7041746a36747562507455555a324e6a313075372b6c6f4a4563627052767a33354335624b4b4649646b736a5a503862705641487439767a485a496448427a6e3933363841614f6d706c495358516d4447635a4657712b36487832366d7546457439492f5a576c77584d35526f5465337678787350337a48496e3266346854763563695155586e7153616e5269695879326338624d70647155647a797367706f30706e4f6275542b386c39574e4373756b316e4f4832567053373479427959416c433556767a4c6f2b5868516b394a4c444351613361484e784643416d6a7848705772754c4c504c427a324c36417a5532736e37306b6d6d6737583755676c74754663732b6e4933422b6170485a3570526270752b333343615846686672775376464e517532493364353169314e39394d2f544e5038416a2f5651372b70486d6c4d7a526b7a3473744d6f637a5877545170764168565a394b756e4f704b696547304d56596966516e5767366277556a324f57503177773071726f72326e5a7061316b343852424c45326e5a68716f6a542f4d5555463165636e357057486a3254712b77487355696e356136484d4e306133414b6b6f7141714c70503478466365334971536564306958674f70566d364b4e756f6a6c396835712f7454683137576d416645555a4c6f483450634272514b766c4e4539736f4c772f5a5031516f764a73774b70356c6b7a325068592f33705255776d42455878634437674364445730432b554d73763671334e304856516a484a792f716f4e536e4a585a5a5371684f73656e5037476446632f5a5271536d674847304334776d6d6c6e455469417a6b384e377332715355464842584c2f50343338585a73614664452f77427a37326a6271646a6e377932696762484c5a7a677462396b4855716d412b64585047732b45676d6b4e425650737933616e4d784a6e714d6e3756644238764c4a474a35504d6a4b547a35346670365754376c7339714a456766366d50334e6e58415451743345317571343873344d7761622b755471696b52564d68623947556d79694766354262793578664730766d2b4a772f726e2b784c57413672706e544e506f6772514f695775367150596f526331506b4755746f7453793967614268524730557972584d305a76694a49634d7566476b694243544c65324c5566524745547639615371544a33506469747a3873724d2b4949305842386b4c506247747361474b61497948316f4850314c2b67626e796f353673366174484d2b7059387663724371626579357935644c4b7358625a6d72594936536853754f6757762f356d2b5576747a2b3036474172564b632b746f37514a364531614d6d6870726f343754697157756a78344536537233436131686f5a39487463617a596238304864365047424941526a58546937593668716a6f6f2b5a56457a3639656c6576473264332b4f67796165755033434e4f783843312b345065354b6631396961674854434364627973506e6a6a5173303646707939474a7a314e7a786e5057422b6a612b3656426656626e71646f4f4a61566847616673744547722f41454266304131495554504c4537554f6f5469426f4e7a33616d6174723671436b37716b35396a6d646439686b737665754b66336943784b2b446e77704f65506138774f38756565566e654d787753534c2f6d2f63584d333753544a5336706c69686b7a4d676b553769307353686650695741554744576e4b526d6641566a4d34434437687a38352b5256545156387a45342f5650544a3437552f447230333536634a4f7162756371714f724e6451386d652f686e657961637246306d6c4e73546e646a686e492b616472562f466e3563424c4432504835373532575775697a2b4579316a73716a55453439704e316337657a2f4144676d7866384138655a787044696131786e6d36434f4a69592b742f4e59364f49644171716b6d366f66475344716a6f7a655073665973716c2f78657463734f5245756c30316c5041613067435a642f774344362b7045763945644d396e78642b586353576c6858537831762f5153523978395143524466466c684153687a6567745a4c2b6a77556671446f55642b4f656375526672387850437956546679584c496d42586f764532357a583863446b393062414f794e376d4f6b713971394b50704b55337350316e4a436f7a6f397650366f47462b566d5a426b42572f412f77423143736d462b61476c704a564965703157785879316a6e7a3637644c2f41467a564133367274424950614c523933787a4d7a50554c5a7248353358676c4e7164586a71656c7932436e356a537759335833667169366c6a766a5a39797858486646782f657336307a6e536f686753563347777a376b45504a72456f6c633933495a7444695a54353979434e43364459315a652b6934666d6638364f43455a6d42682f673949524547582b52314d465431637970556c6f5853326a4e57725067747130426f6c3048444b4463644c4d2f3569527a334f425278702f77416a442f5a413665512f4e37556c476a6b414f6d6a376932614361654e6d474a2b784d677035563374706e36764a482b564c3975655856544d504546687257772f6a6e4174464b6a573663614b353570614c6146746b62724b75706e36304b4252484a717078574e2b5a70582f72693350362f77447a6f553555317849502b6e5479424f5746665531737670716b7a3561354b34585676755754344f61576b6c307455535a7835437471463347564b334b42487a6538414948664b494b314a6c6232757537514f327a6b567a4768794f3573507839626f443156713474496d51734b663746523836772f384c4b58506862514b5441454d796e545a465a7a6a553070304563576e684c3061545442496967354b5a4568534a773571616d4f4a5255724c6934302f4d7a746747677141664b6642735555614243747246364669387569466a333753786f7158412b56497a4d49626c6a426d7a7441324353484c76346e686c3866534d4877766b376e4e705a6a5957646e4f34797066515642502b3166627062426961534f4d4254744c6b4c494f72574a4239656a4e43737a2f586659414e4b33722b706d30753059396c5541317a703175327750465430754d70644774394b2f69544b552b6f6d656967416f6b39744b683450512b49794171724f795a59723636356174792f55424c616561495a6569632f5a4f727a6d58575454304944484a337955653948764c33707971476e3736416f57414d4e72647364584f7763746449507555786250494c6170316347762b556e30487234684a70634455304f366c4b3167705265356653437841434141485456527a31766450585a42596a6b484a7032766e75466d5a4775646a4f4372536e4c3366587a4a5444324348784335776b395876344d34466554664b5063792b566a646364577378347a4967426d68496f36367a6f736b6a5a4f4a61434d356132634c3430674b2f2b747a353662484a6f427572434b723572484650396d65586d65324a33625a4f5a3952385a624e6d5930765a3039597353306d6530665a32776566586c4f54674f715730486b306b6f38325738575371616c7a5053354e434f5267356c4c4970366532706f46544e4377527134584245307545316b526b45677869416b614d3564436f62374a7a5a494d6931686b7953692b4e494647574e795a6b7979374c61704449317a395a786271567066774646386b695463656f4c352b7a544d64647a3539412f332f49736d5970596473754678353939795074545349622f41437971453576363642547539376a6d634448464770494f4b7330485166546958544a2b796c6c6935616975336d6545316970712b30374463736b6a63467778645374673066346f4c3271374e3833414144564579597163396559756f3659617432757175796d7831467a35536d4230732b5737333056635a714d6e59636d6755704359644d6b6d4c304a42395839347339485279453164645833586651323352464c5633332f484f4a6f43352f745839466d50494b2b4c4d4f7a7041753956325a4d6f684339584d6c5050307168306f6f72495655535839476653546d704e584d6d7a7834714d517859757a504b69564c356539544e77472b385071727348336630444d30687871736d62556f4a4c73326e666e72564f684d6d5a507966534e795454417634732b4e746e7a6c4e3776684b596f32694a6c57665063456e314c654d30356e75635049376a346e742f4b632f6a537a6d39584f4b61615a717568536a354d745a677563656f6e2f6c6d33735355344d574156377661756e346e3548623550486e665a6a6f344d47344d3250485533546a4a46563436734d78546b6577364f6969674731506e563879394a712b65397250685a65764e4531467477637a4e6a4f567234364532342b762f4142466c656b4c6f4b356c355665646d307230576f6450386c576b5446304b584b67457a6c596157714177357a683044506e6a5372614a6e4e2f6c376c615838576a3338356e3338476d4e33327375352b63313034787552484f7747704a74497a70735573525a53426b6b446f306e45733675753137334671386c374d4163734a436c527a31734555643578745354314a793437394a3637335448386f47366c7a61416a694e467972576d336c553272465a4f4234795157793265476f4247384c494b7443655a337a6643366671456c594a66594436676c3862617567656731754e6b546f5a5655424b42643947624c63423952444a54625053543658446d6c5146564c4a3744583754523969656d6333454d34414851614845797a5134717567636e7541365432545a6b4c79306d3937667253364e735572732f325651386f6a6d3435546b463778677359435a724f392b5542674952546f553765764f7464474a49314d616f34517a49495279526231644456776b625765363236687778683370663666594e31613375486f523759536956444678544f694b62713262416b5a2f4f63362f73444364432b3651423963382b6a3579615365676b4c2b4162534359374243597a42536e6235504f4f6b414c62454c304762787572645456705357733162462f71664a6f6f3047786e385141592b33324c396b796a517067465864616c46543146486c2f744653484e4662374e68376c537034446f766a6375646b73354a6f34726e425830466e483767503459365441376e54562f62376f446f54313155476458452f4b6d694d484f6f63536874756f77586847766936505a33677349713155742b487244705a3041566b377746496e75526e6c374278324a6f7a38724634436c5130314b362b56767437316e754b664b6574632f5a774950324a2f4431774677436b362b47672f6c4779686e61676c34396c4c74336e4b6e4e6a35424b37555a513376776a597572326372553332544568526646384a4f614442684b564d326f5a674c4c567a49742b306c755261414f2f6a38317459706a6c5731367935505174613275662b364273497a39745a4a734d506f6255306c45596d6d5743685a4a6b702b4d7a342f4a5a574d71736c4f68564a5a575066686e5a4f6f6a596c33444d50617777494f4541436f382b6235553935793671334f436175522b63365855424d4b7137506d6d5a6a384a722b7250516c6f647868715954566579626a7566462b7942446a4964475330304e705368474f7032696c4a74374f31504a6271704544526f46386a4d767136506438624f2f45726d6b6e697165706a2b775966546a4249794b6d627070475a74797337675766585a506b4f555576436a476d35684d636969642f45724e7277576155326532525a456f515a303056647071424e3452616678705450466e357a5870374870614878364e76636a54682b537033616f6330765976763135684e3541507353777841576273325753692f6154564b3675577864737854533574636e4f2f52305252435a79645a4b74546b77734368336668354f78762b36656b4a6751423344514b5831464c4332687678395579316b30674e42575a583855583046676c733678516e4c5a30654d594b3645774a363470654a425841664c366d6d6a566169795765536d706332544f774f5a377935616e577237713244496c666149782b625134795971415348316d676c514161444d4155347058576b32417261377257664837574573574c762b724f317a737175646c41734b662f414e4434543355384753616c684f6c4e502b67416561376c3433314e4c3631626e3744784c5774705853696e6b4647644b7136526a4f7739464c46752b586f2f4a37772b744758797564396744574449704c6f705735744f6d7833366246773547767131544c366855485735545769376b64584a58526a4d49382f77622f7043644c476578344e4755766f48723655364d6a4b5a6d5476544f564e6930553537534a2b5262395652687144502f7570555963392f73734f6449645637714642454e6e4b3270754671585a6d6672726479363367436445796970724756384e7a63507561512f58676f616c417a4f4f52302f77426c4e49413137524b7159783367665a6a364f3369795076534f4635446c32314b5a7135326c444f4f56715a726e5351316d7a564554304459743254453250514c726e664e384a6961616547614a784d5450634938616c2b52746b3851386d6e69366e78352b655a4e47474f444c317078525a76304569704c4f7263774572463062484a346d355a307270413650637430394f6176534244646e7850593861377454332b505756783877494a6d356247703144304d2b4f5277374d2b65554c6c6457366d4d486444374971636c4d6a55436e343168332b72524d54386636437265775442536f475a537554744a6d7658726f64616c31355a5a6b412f564462736565483541744d654c474b4f65363961624c786842767a474665674e4e5252714e66536b365a3833444d676f69796f46766a7a6c56366e7937714e5937324a3651706e3866537675617a377768395a5059334c644f4452645049417077626f7a572f785253545073734779534d43646f4b7631665a2f723854642f4c6133774a545579657862766a4c69583978343558736a624d7375684936377475755a713639585553765171314a2b704f53567558572f4e795a577465356c38734a31546d6e507366496b65444659476b317954442f57484b313238646f4b51656f57723978382f474332424e6e304f693733387157477869465475735174437545747830756c63494f574b5a48522f77436c5266546373477976674c4479664d637257534b61463063614e727a7939516a4b715a5645696831653870544a4c504d356932466d392f324175632f6843706362776b555a5a32727478787a6b54696a59776458684575584a72575532784336756c6e4244694a6b793277376337327062506b356f436e35506374512f3633724e53585449442b6f34316e776b56565a35362b54564b6e6b41463435796a635a4270574c6c726a306568666e3136536441474c2b7855787273762f346c6134556c4e376963456a776c71546633666d4873587142666f4c304f756f6f366c4f704c426a54353031646d7348767a786c7a4e693747564478576778433649353075536f2f3841733435757363315367524f3933356a49504f797247706b68446d795355316670394a36386a596e616b33594d4c6167716d455254483966356755682f31782b746c4f4b644e482f5959714e6b2b4d414c5035665a644f33576a6f7252565a4c7a542b732f51613970766a3130396f455a484449435742714c4633564c6964375478324438527a6c377135322f446e7a44664f713242303555557854686258336c674137626d687a4b7a783674434f4b6e4b67676f6a4a4b306b4d6f4d39344d64644b636a6734316e514162637533386f64485534727649527137444e3337685a793071614e39636b754e475646756b6b692b76386e31686c582b2b714a6443652f597043645a2b394e46676a73384b50496441724e6f50506e6d4c543174426a7a375257466653682b752f52466e455a3837732b696574733636772b46535453626c473769644b76782f543951705a72555355396c646d725575654a57356c356a4c78484d49645050484654463856544d796f5764634f696b766b5a494a2f7a435355747246505779772b2b5038584e4342366b726331552f62714257366b2b5a36616a664c776961686d774b475753304c4a664154536b7638334a556c7265734275562b7366496662366d74586e4e773872667474653072344b615961475a595a7958517474366a6e566958326d5561475752697466776e395132746f65373433427033633241766e4b6651747932492b376f2f56687070755132626a4d2f5278744f4f57626130744c35476b576c4e4b76375247435847424f6c762b4270724e314d6951592f6b326e6b756f5a4759686d52787750727a39656668624e47747a3741336d36716f6e496e64786248515347307a486f4f725341554f5550367832343758434262736d72426279584f4a534a48316b756d7031624e696e56625a2f47364d5131417275674a3648774f7a353371733730536e424a6e4e4837366d664c55534f3266746234364b5559447036775631314b456f6c6a52533937736d4f7872622f6d6e6e574b7853497365676e4d2b6467695050326c68673567784e424553676f6d524233716e5858614f684c6d3054486843757157636c325957544b723748552f4731706d667a4b636b424d334f55435342716953564974545a2b35456d5a47374e3477334a5264784a49496c7a2f77414f366532667134633930674e2b4b594453734a6c41784e6a4667334c4e5444494b6e6a564573557a336c524c4a3130346b6e367256366b6655324e6b374b3269543243736b706f3470334255706f734233515054716f6d4f644e6e736a623233374769564574626c686e3064454f55524775772f7243676b355a6451384144323730332f583537542b594369654534526c547142656c63346535655a477a62784d6569626779726b6e636a32465451575839636d74427637534d774e417639796941477a2f41426d3343746c5778726c53554e5978414a30416965686b31307257746a6976683464333657565465546a51336e542f414e76456d2f3548694146454366757630646979665a65766c595475696f666b564c613179334f7a354d6272422b72462f4c54776b5079494c6872706f3939464a763466414e4d335679747a46436f6e75443631787072707a36435745333853336b697930666a372f4b4f2f6a5764575a732f66783254634d4b556f4e71514761676678746f563973675249447570736a594b4d7a747245456b772b61743169422b39505243684a632f322b3953525073684f554a5767734e3952327a35674b6a70707a545355536f5a57445430516d7157656a4930313238714763574e2b5932734a796a5477682b75336f6d6b423431624649795530446f687a366e4648323773796b3139753076345761474d506d4c36662f414b62502b36463837535078423050335337767559456c3756556e3734466d324b544d4a56486f5448472b4f697069364b555231514651315538724b4c4355716a2f68696a39726d733678726d39434a5a64614c645a3743465030394d324e356e56554b6a70746f6c6e456962585a4251515851396a6c2b4c765665394a6d6c546e4b2b763751494a6139713875614c36326a6c706a717358617578777a38302b2f574f716d716c505752693355496f335471496a6e39763663745a6436495543594951634756504e4852742f6a3675346e4f696c746c5274525071566c50534c3279635563597238695977676173446f5631504f4748534f6b654158653532754348785974757031764a2f66533662397a555a354c5846654930726e2b33396f7864643866652f5863633061552b376961615245414d395756524e6375576e6b307657647a754a612b34465375556f75737678663431686d365549594b696e47763375446d6277674c6e45474c5150794e71516377424d655a774f756d696f53646448654d766c5a7756723752445377522b6e646e2f7050526d5832746e2b592f73352b4f424e43653152636e704f576c316339494a67716f46776d726f7a72756b6c6d7971434f57554e495979616848472f7671556a384b31645032413657414b71597250305638702f6b4538797075755158525653513257306769366a6e334355354b5871353747704c324e6d4132544d594b676249726f5937536d56484e39593130382b7133724769644f66485a796e2b4f6f6f53507a7361765358336e452f7059644e376570554a4a464953416d756451326575615772507a756474566d7a576454484239346e464e5670533145762f426c51797357347666374f75654a67734567424f6e6b4873744e58757570476a3261544f4e444e47626e74657067554a5832646a6b324d6439565630363458725233767a475a45774163777545413361475373744c2b546b3235304c3141446a5776494b2f3435306a684f61463169356c7253746d65776c4133766659366e34694a77744c33426a524d764c35434b4b58793166563732784c354d6b2b436b49614c555579432f524130746f6448563858426354532b6272614149424c3741593859417a3639715650536879365a4f38716c734b6d4b704d593144773832686a75353861314c58524d4c6538366d612f774479467a5142594131306f6e545a684c31655353476e694b51736b6e6c2b6f314d663153526e7874545a307235615354496b4145703270624d73326439674e4177646f4c536f4c524f7574376a3466316c4b4e66384167585a4f667876787a334d6c754f69726c55466763594b46664d5a742b627154644e37416a76554e6a34796536527a50764a7153457a5334696f42562f4d424373486f5743306b4331694939366962683863673071363837426147565978536e6f4e5779756533677a30396e756c52544568356a396d63475a6b6458666263496a2b316b745270682b67545463414a4d78426b657a39577571654c487a4d78763053617130536e6c6d58444e2f7742484e6e73436c6a442b614d6f6c74494237376167537a76776d7670394544794772434a534f47536c79555553746b36443643356e52794f7a62786259327848742b764358794653624144704a2f3636544d76614142364f357578702b2f51623868444d36693270395750487343324238634e63485a59312f4755495375597972704f6430574f41486d6c7142352f5143564d386a7a59306f6d675059794669696552386a4366656a6e4d2f4e6f6e625568692b395a6f4a2b756e3662362b6a4d6b6e6533342f63507645477562566c31565a3759366e4b54534a63314e437a794638744543446a6e6d68436169623471574d524f3665644a4231796c724e73786d42413554774970324b475649586d57724f6a4f7a4746396855624c44586e6b7063584b5248563577553048524775746257764d4b2f68446f695163495036444f4b6a764d70326c546f5468566c4d514c74554c6b30304c356c616c7443714e70757534532f6a58704b5869693737474638337556442b35783449506f724f61576c51457075556b356a6973544259636d6a6d4a57313745742b504f714570666957546d6f4876574d705144774a6f4f52384c6755526232696e50673552386c5530613056357a797664624d695763766c704d463255647a6135395a784f4d6c63443245597a6b34476f46516769644c4279464f732b78695a31554d6471774e6f31444779596635584f2b6456522f3841715550756c393647536d74683942695653674a57644d506f396c69436e6b7a354d6e2f5458786c56454b446c69626d784c626f664a432f3531796b4b5743346b674a69503033545566716778364943334771426a715862345a52696e4e6a7130633133384962364672746e544e6f667362314c76374a6e4c4d31434b792f77486e7353705351594774595a6b674965624e6469314e356e4b476447644a3169774b354f3672747a52643274463331744c574546633443756e70457033326d73424c675939696b5a4c4e797561616a4c77594379383569357a32614f35756e556e53574a4938646e73545579644f626f63654b43443252336877335646316b7a5156687555622b5045497276496b4e557a6839757664442f4a30516a56586d35383939696d354a4856515963712b51443632424354636c6f694b2b67412f4a364834307a79586f68564c52796b4a7037672b396e5a3275776c77686f727669534952304e596d71677a6552584458527878657a767450517970316e354443645a4e59734838716a354b6973324935546630446f6c565072347a6f6331315642366935474a4543666e632b4f6b744b5957555572415344556648726b304b626e48325452435056324e422f51783653356a444c717247317777314d57796c79792b717471356e4b434e4561656a3261684c6b6d43675a584c4a61446271444e4e774b382b6d64795264596a74506b4256425053694446622f4f4577666a6368624b6c2f5859483252414a2b704e51595962454e526b5a6844586f5a36625853777264505276742b776d32724f3135335655786d2f4e45493431706c596d5176696f44396c396350686d666e7164776666796e78544c766f5463714e6f537257724b7a74482f71624c3674424e6139485279716c4357654266354f41754a5376356a4a3033625542584f393335687558663477716156412b586b2b6256657a54706c62715367726c466b74504e4e3169584839382f6b494234546248554f7a763271644f664f4156364144743173572b4d4236754b6666514f664e69557a506450586d5a2f466a6f32555a41614455664334732f77434c394b674266363248475457545471555966706568714b774b617266735145314473313162777165516e4c70577656596f7244686f7336757964625344325449702b775659395563792f7743675a5a76696d7035684a6e4e773877777a763471794b357262695369634552516e6d593638783054542f77417034374f7966744559484e655267424e543768696252485752616e683367414153326c34347273736b636630624857614939536d6764596d61584b4a743455753970614539664845794e7271494850543841477633355774752b5543794c6f4b752f4a452f4d557438446b61534e59313234434a5574676e34626b33574d5736576937515855414a74477056686e333548552f582b692b6f47514f645848513339332b3576596a75645670542f414d7531565877302f733745554c6175722f716c516b45396b452b574176384159716e46333942396a526c35646c4576434364386b6c4141332b57566f6469744572464b6a47686338357a7a32525a746e746278716e692b786f415a6453435264664d462b6e6d4331747657305672544e5073415059516c4853342b4d5452616b48542f414c477234614e6a68384169727057416d506538705a31514f5a4d384b474e63396f79614f61426e4b356d706a73594f5058505151706b55503762384a4f5a4d494c595a44784c673443574e6b4261674c365661496264436463593279434d73707659684865774f36396239494d3950452f762b534f63616e4231612b726f702b5a6f4b2b7766742f6f483877684931377248636e35312b6657336c66303064625a57476564644b58397a5872304a366578732f66576354337641347977654e63667644445a457032727a53794d69626a7a574c5573666f704571792b4d584374324c5154645363666c3146744c3446464a2f4773396e76624e796a67466c4c6d68554877565638466f685470304c47757533515643693555787845524b6b48505455346953704d67543854383379704a537a2b51476176356156554756336c7479395074442b703153787153592f707a3648586c7a7043763238304573596242654a6950372b47667638416d3077634756646c6f716d3047617a33506a54316c73576571642f5879304d58797559574a466a6a4566317757437a676d622b4773415638583941466d5147616152756e434263314139456c73527151694f715359704655426c6636656a51313231374639346c70644e58363970394e786759486f567735417a425a4c4f4e69344b5846474c33797136737141744d652f476c61532f36507a4e352b6d5a674830616543354242474139546c5531443745732f69715645312b636c62654851726b507a7a333859552f4f722b776b61686549676242467952446e79424e3267464f577351764d2b704a584448567a4f2b574b6a4c6653697a5079346a5278796c536b4253702b4d702b567941787a5063417065434570614839417a4769675156536369546e4d57477974475264396b6566494d376d76546e5364364b302f5939767766434b57754e4c6d384a337774704234356c376f4b4653736b342f71766571534f3138593254574f54442f77426c4f47342b54726250714f366e6f39595457324f4253564f50356636423255705457464d766f417830656a32585170732b4e4d7466367a526775706f4b46442f354a733742496752533332484137676e4d4a7561594b783035376d35614768463258707068644a4e754935516c73624b635769424379754a6f772f586c6850764f76417a5a2f7459667a4a427151416b724c666c7a48524b626770514737416d3532595443465a754f344f70346e3438346a5732356741736a5430766b702f312b34576b422b702b62544c4f4e564b79734954526f4a62596846544e496d55592b557831623647646e45303366705263556b4567755839702b4e79597a4271534d3131496f635565796c61327161644a5676434f52703433315746702f43734b4c506371776d3852372f6c4a77492b41574c346c494f6670356850795a41657257354c316a64556e4f3571683233506e59757249727a614d306973534d345654306a77774b58726b4c364b3130384c2b67626f7473366d724b36364e353138624f49795a3055385059745664466f6153597443555a627449374b507145736a443748736144415036687a6d416154344748486368304e5479566e763037544a6a733971443476706d756c726c6b7433616e57576d5537314f62586638414b5475794f4e77416c533973585a34327247546d33566a7352495744536335716f55377476616a6e7546637a4f522f5936776c726f5072774c6f6973306b76674464585369464e3169754c303130516c7a4b43452b63773339545659505471444d5548614766496b6667357965766c4b7353704946787633484d43455765555a666c6233592b66666c3055795032564835546f342b674d4d6c394f7231413557506f61437a35716244532b38787566496f36512b6d412f4d6d684b656e4d316d4f4d787745672b4766783461364d787969306e396c33706d4d3557327570326e636c696c74374c4b7451356176626e675530332b594438536567522f4979684d7a4d385a456130786233514c5263615a73554e4366627970355a35546c6f666d715051616e4c68566d497373304a394b39774e356166584439622f6374494b537038303755444b61717545644b54547a7662704f72615851546f7353366749705a62717156643635423244794e77392b7538584f645454786f314f3933375646747565554f6262436e555361706c75613371624761464a71306f366b79553164304974426976613071713432554c667a70456675326542542f72463376676665476466546132585471517a534f4b65356f31386d33535a71613345595639446f502b3454394a4d4b5778754658312b546351377675416e414573422b7179344f576c506f554c7337483833592b4b625479764c4862306c7379712f6a2f6b46706b7a576b74596e2f414c6f2f7039536a3752502f414b42354d37683476626e57767634796e4f456b4e575a3972366236694a6443797359446e4e79542b314e4f3963786e3745384b59615463745944654e3470544531323055315273546e376431325a7a726d7237545674315073574654582f782f5569376b33526f476b7a31666278522b38544547715367707a4b355664726550313074654239303476314f6e744f61367a36394d66734e4d3550456a65527a5269324f4f62336a556a3364422f49794f54566c4c325079566a4e526e75344e4d317a41557055614731462f44546969694d614766596168676768686756484767522b78415a38376e7a51794a6a6d626541636f782f732f79554b65392b47762b5670747161736c76686372512b3474374f6b4271352b785348752b537877466e382b76725038416844367274525963596d72376c565356345961584b3738534a306f676c61432b4545736e72464b67414b554a61516346344539476e374f514e4533555a424c30516c3172546432517065706278766b79316f37645132686a2f774353637a71324d4e6f4c635a4f45774e507a6777723053517064623654707372535752397165684c48665a4a3563304135416a334e5a6363387151466e66624f75483748792f4f412f453048316d2b67307437527a504b3265766c534d7537567a5571695a374b6a31632b4f6d6545302f655a55735a326461767441416d636e41426d6676434950353956556b58614b4d564a6169744331786a5174746a7137306f3753796f5a323858527969483670687a6e66737a557175352b6c4d636d6b457479657a6949714e44374c6f2b4464586f7468304a4948544c4a3748574a506746387235775368617567786642636f477635545368494677466373714a44467a636d52756841674e526c684c64513354557171376a6b504f356a703151316b6b2b644e4a45592f5458634b754143307042554e4f307570517350705a6375506b2b527a4b466756446e693232356367356f735a7a71584d3759756472514f524d36675359306b4642756d416d35747a6b7037466d677a4d587a666c68396e4f3930687a6f47436d664b66492b6f324f536246354c765a51316763566c423869666336517067433630363255305530667864516e315861484254724354564955366d67624f4d6c4c74454a4d31624f45516d7555516370545756416657794267636b344a624c6c56784a517557645464467363715a755067316f30643059466e3974677559372b654566326b4b57386d2f54616d7a7469435945644f7952545653706c61517a4c696a624f747271412b52686551534456322b7449396c616d636f306465507a7a2b3449792f5970534a72434d58623974726d4e7839424e5a444c6c574a3759794766524c50526f5a6d35584c79556e5545735677705a7879654b6176346b74732b4d335069494c626364726841472f4a6d54556a38316d684548484a546f525653513653636f346c55596e5764556b654d544f36653669787071462f47696e397350725a7663357a2b663344656142645973467836422f79437447745a545a6c374741792f37446b364d486a395765376b4e44557030762b346c6e7a4a7341357a2b63694d7636715068704b714f62327364554d592f424e39685446324b484c31504968727557556161325650434e4777704b487a4438767a6434373631496c7967465a4f655a66615a6b654d35507836413279663841306f30465269634a66503548484e4c732b303535576937352b6e522f6b44707044624d6f707545566f78317478412f5267736b764c4d565970326a324e523749316331315a6d6450664778482f6c566c35364454306f2f6a7a322f436e6853306e32316a7165544e5971704e526458696d50343334743046392b577171713266563061307771743132764a39485958567a35626d7a7a3677396a634466696d5447435a6d7a70345572694d4a6d5a6e72492b3643566f57646c464c636876493645456a53334e685550575954426646794c536e6f56786c4878324158474a452b4345333166676a6544436241516e5a466f44697372444e476b565050687350376c33334b4e48516f712b6766667444396a677368724a58424a737a6768415567594766394248736151796f6f38716442342f384151626d6d2f53376f54783072544b4e4832376674772f79786e4f7335617451523967646548616672636c346e33632f6f4d7242304b307265753938797055554b6556484730745572456535334d694d6f386671624b324a726e5a38485357352f5134355562516f5770595a7a2f547654583253544f5563314c325550327538415667684e46674a6d594c44704c492b476834767259786c4448664e2f6a4f6f672b6d3665514d583765754630305754716f5953496d54756c4454364672493136303455647a57315a37706462534349566d614845305136436c70706141574253456156747a30352b744b4e4e5343707936716e413279446f7572586d336349444b64664763714b36556165473776744d48664d51787634707167625a6d54554e395545794a4a437072365a7a304a38636c54496d625268675842453270542b3357446451365a487763544b624c784d5a675437614444385832723475577a754a50563351432b334369356d766a2b727a35744b49716d44315a445a70316141766944326b35787a30676d506f506d5345736a73796d472b4e6f354f4f4f677045627776702b747a6a37745a50746f6e476c614259587a516b6132735561514f5a615a6a492b66722b6779377439375175415255736c756f37463861516165616d585574493944573671557a75583936476f79584e327a334659777a496745307341726471732b786f53543830334451336a575070393075694c6a7a32436c7738615569732b64496c51326e33496346504a586737334a6477763641504c4c71336d7a57356c4d4c536c494e46684c544939783263304766746b326a6f45785334535a665233366a4f6d35546659732f67556e7369672f4c72736b546e5a787a3152646266526662434777635956724d6146352f626165614855756e37594b5a4639642b2b556b41714953425a3173426f567430476c35474f597039383552546a4b68706152535a6f56796a5655334e6d72656f55753554636b466d526e7a3375372f754e553030333954455450514371422b337255512f43704e4a6330387455704331536a504e6c32485559564665517a676637466b5674505a352f59626c6b6a324f6d2b476c734265696b386566324e59354d394f5a4779324e6a354871585171496a6e746e78544658644334766d572f6a4a4a7a4e33316b7a67594a426e7364664d59465351513561584c704e445a7465503565647a4b4b33705a31596142367a36636d4d624a452f526430693458566d41644e3350694f6270416a51633973736e4b61613269512f36346f416471456b3474475748336f5a6b554b4742786147684c634e55764362556267427a566d6e344741305438446d53725248626b6638417152786f626e64566f7036696d546569347579577968704579372b5064547a6c5941333332644c374351585330775a497070695965627178544654337333624d397355736239746b6c6a3666494d3373694c766472304e756334672f796f55436251397a4a30304438514e4b4e6255767542305658304263646465584d36654f374b444a546e6e5077547962644b64756a2b7374636f4e6e4269795a396b445a377a594376366d617a485553545768644f63717a794f395665552f6b4d427370324939444d7a35336c6272464a4a4d587343704f677770796a61487a4d54664d4158422f6d6d43422b746d6d622b7971386a514f79717339423331706368546d5734374b7561555447646f654562546374686f5251426d3837584f4944414261674756426454484b2b43716d356852734f4b69742b7631697959784b572f4f3373624b39687a374268556a6e7a4b3453773435796d395437306838757959365531356c5149305a6f79526f367461417856535071544e474c4d39775056325a6165787a30526e776e55685975784c6a6570796c4c2f6f44754e4e6e4b4937476863646432626e444843752f4d73367770327559344b614e656f4632534d3149574742666f56476d4e4a63636b42534a4254587250366f3776682f6a5a34336a5575566636752b57446433784a69725a42786641353879737447767a50577130744141737a6361466b724f3538726742677039682b783166586631705773544f5a37496950706c34424a344234786c3545326c7177363162374865572b514e6a30397253304e477975377958567632326b7741586f554f4c532b59683733745876392f744d4f4d676d586d5a6e48654c4e6d532b504e53614a65557576425364516d50377a502b476d2b35304d7650342f7241496a2f7741696430546c6d6e2b676f2f6b446e7663756e48732b597a566d36764d776d454d56644639684d65357331462f3779644c366653356443544a6b6659707363376e7974634b6668636b624253585a326a416c5630576c782f4b7355657473712b58526b492b4f366e2f6a2b5964553750747a78364c6f782b4c3232484b6247554239513356754a5032584179304d58537a4e42586a7a49556551554d6d2b6f44466262632f4f4d50343137753037433577654b6b6e516e4e36735031376a4b5933453268592b39557a4f5a7945474f48354e474e56794f684e31314d6b6b417a6a79665a56597964316947424f665a7a665a634c6b7343644b52436a326e514a563939384436762f794b4e4c7373546b375575384e704948376e73456d686d6f58397251577a6f584d735a5a6c6b484170536d68306266727971396b3651426a34756863566a636733364833374d396648436c6441617363393543307a70746463785566773576773276637073303146594b39696d61445a707974626a7a6430684b726d4b2b476250494d6a48524575595962546a7279735262644b5162625757665133477530484e4c4d71437a324e2f376646754c326768674f467a2b66334765624b4b58386254707a3672694974622b516b3550646f4733522b47345973635373362f533752386c41724774465963356c484e547759784435716832436e48382b6a654536366b78535234596b306a7a5a4a54585633496a6c6d6e5450476d4e734c466a782f65386562736f76726c4a50514b707034396e7a42486b3262324a6c456d65506a4433327643654735556b53307573727169365051624749794566315a546f55766a356d352f73574643356e652f2b6e663841692f6d47546f3446532f44576d6932706c6a6f4538636d3663486f71707a364b6165795456646237724938424d334263535579747a5a67724a71546e63714137757a5275565a47374f7a6f77576a51722b306f445364456c4b2f624a646f4d76636f7079344c7441757161784b457a754774337349506c2f6f426d6c6f446e766668423862394e6553357330675246684d303031495a67596e6246732f6454476a4f75716a673864386b6951396e55454155384739596d30377037676d794f77774752634e6d6e693753335657354e47576874554c4c7a5470412f322f77434858546859314e4433434576317244536e37537176653546415241323033782f557061617237497165447275647050556c72316a646b614b652b3473746853684f786e66596b4462372f6e726a42553830344a346650357a354a374f4b694a7948547056527a6b76516c51417a775750347651633864514964427a2b574c55766e5a3448487a34584963735a74474a77462b3052742b6965684a576a706e50306875304b725a5a3669536c3333424a324f726f797254444779686950754a573333664e4f6d72374643594159715a6176686c6e68437650346345326b615777704447393044455a364e504631382f77423632417867633470684b6f2b513666747456396f584341652b76697a7a3830456d764d51474e34354f724e5a7176584131304f656f544537457256387835384b6745702b69427a68596b2b396330476e3044487869655753436572794374444c48714c37636a565a4d796336313831446d5a55316d64376d79614363754f7732645a316b487453304f5441526c51576475376239762b413152444c7271574f575455614b68686f726974625852722f724864523378364f50506938726f626830506f6f6174686457446a52596153705937334f7266782f543141745a39436f797a3942417a324b6c7a2b33626d6e716f44697771626759374f4a2b334a5079584e73534b694646535339695263763368515a7a4e666d4b38745933482b6a70567a79554a6d6a714c4f5349314d7a39544d355a6b78456d75754e696e42454f58566a6a53766b6159532f6a654358792f58634e48514931707956553465357661463859436e4f70444a794d745a643657504c424875304d64547a486c457339632f316165476c4c55756465636c4b6666774f717a2b4c623850715247374b6337516f746d6d37697a784f79703571394852677a74486936465a62354b45643334535164555a7271657235676f5367616371677970364a7544747566792b3469756c646b6e3439723653354e4e5766586b365a3543413756555a58642b777748515a576149504c5155764e304c336e775164667a65393743346f55414668712f466970395976586a77443070322f484b64377544734d3951746254757a36504873542b417a363136655a2f774265756b6d31586449567a722f6258537a4a6d2b656455334536545654326157744879485556757a7356357a6a5871484f4e4e334741436f5a57774d527a644a554a7770654a7468594d354d6f733531776c78663255336f544a3831456e504d596e4867454c382b7050452f5972696e466447675a37476c55456d696e2b4e3057574f5472366e37664c4c634f6f5766374356515837625930334162434e795945585a3471576a586f64326754504e4d4d476a4a5053316b6378703232722b58566d737a6c732b315650706146617763386e4a366e366765346a43663336546670746749614f4d7a486673304d4b687a4b75355156547a5555616b3055575047755376744468452f354455372f4b4f36595655545447635a77734e63386647506d7473384a44363253436e4b374f383632612b66614757747431786551557573376f5472646f3054756a703551313330353231494950622f676755493649527475703866312f5566537931717661483048497473426c55436f612f64774d71524758485658545070532f756a69484f715a6f77385a3756453854374a71554d50384165775a4d77594c4a7874797769306b35623238436347344e477739305555396c4d6e51304c756d37796f6e6e5179726866573468466c41495a5576675530352b3838676c576f7046374f74486e796678345259564f6c6c36437063704e703950513730776f53333461705836445159366531416641482f5961684451542f54386e332b346436586b6f7a30756a51756d6431314e47546b335652795a317a6f6930382f4f657251356f6e4975576f57436c76794d6e4e497a586c79636d634b79582b6e752f4d4f36674c732b666f47734e5a644f50745930703270706e6f30504768356f56525453504e5a6c556c43475545775151663033565466584873615473546d484d626769636935476c46504575796c65707131394547614635356f365548497133776a386b394b567235537a69756a37306c635a4d576b574144383062696f2b5463716876752f6b4a436f6b664d325a307554504d525434366f4a7667364d4b724b4e4c76366249642f7a6e41465536324544655735505037426c5a342f6f30766f524c5052496c746b64317356546d61466379346e7355354a7962455a54304430666836494a587a39443735324b62667a373649693078304447536255324c6236516c75355038664a61644f6c5a6f4e6c57544a4f4345625372744365625030475a4f6a376d38576c765347396e773830415564547036563837663042684d655849325a716d4c6b77323164545969654f574f5778387a3465776672726d50655331726a754d654a2b62356a79766b70436e33385458555038794c497235557958716852543254736b315264626354724e6d79372b58656d79766b6339484c4e6a5070392f657a737136416777705739446e4a6e50654a424e547a6c4d454d515a6b35306d7259736e546f526c7177396c584f786d6733356c74585a4b6963644251574a596f663845744e6f556b4966314156464d41346c315332716b6d495761772f5848586f6a75716d6f6c71716f706a4d41464642465a557830776c31557a58476135766947774c676a4b4176304f764c64473635364679635939616d54592b6971616e5032654c69524c4f633838597271574c6c4e6478546c59344f6d417a6f39775462626e6c442b473073756673656c4b6a4f30714b6d612b66714247394d756438786c7154527a2b4d32697673717763332f414a6477707963644c67393962556b483951486b5a67427674326c6c6f53772b7971326865346f346d42522f366870556f68724a504935786e452b743673657a716e41357543717963536f444e4e626d6b6b585857555436735074736c42586366536239633474624d71566f73304f4c6a572f7836794e3955774f533659674150386150657a6f5255306652554b6e4e69376262505530794f66744631614774717657746c617442675631587a737a514576674f64705a77744144545158324c623765496a466a61306e424f7a362f4d36476c4771797a51527439396b576754716f5a4b51456943467a2f74496d346b766862524f61516d63716350662f5777566147566d396f5670496234334673516a6e766a757a2f63724c546d585a5a52676b71686153624a6c6c43644964534347706a68653369752f66482b73654f654850384151597958774e746444597169756c53655a6b776c6c64706e34504c64585172345644732b666c316a49537a5265496749716637446c30456b6446464e756234657a3638515a57724f59715a75776a6631544a594f57783449716b357556697a2b5a72354b686178645a32556331495442307664392f6c5254385838376530372b58494c362b6b4968334b46464d4a354d35614b3056544b546c30345031316c6f7841556738374872444f785a6449514d6d433555394c46302b3049324a784d393044566a31327231443864384f544138747565727a33784d386859782f4e2f32394777322b4d38563968306f5a6566666f79776c50384643614f476d5a376b6b4330702f72577464737a5055547a4755702b473651366c5269734d32687347665932656737526c3754526d5a7836645767624b767230455444706c6e446f6e4d444f47464e5a6d2b503666714d4d2f74615059446e5a57684a41703030447561327844475663625935353535736544613578657364446b6c5179673136624555384c706d784e6764734874766c66496c566144383954547a6c50306d5a58797274786e58495037525752586341676f306a6e304b4a6155726d4a4d7a6a64372f414e4e437534363759787437672b69325a4d326a463864616c336a537336737469714f466c3364744539656e6c334f36316d4e6a76426a4f33585663644b78492f77436d4e7841596d66507456744759335143644f6d7a583870675a654a7270735344714e484e4a7a437a36596867366b4d6f66485766366c6b36364f6e7056304f536f71534677554e2f633747336c382b6f6c4f635574697353474f624c6d323943696d3355786e545a3137714c5a73654e476a596b4b556b7a5059717978492f734b772b6f446d6d44684548664c6d48325a6f37314b6b4a666e6c4c51556b7466765861447038464a4e784654322f77416e3351374f554d4c47584e556c536746333039454f2b32527a4257447973536a6135394670374e3776314c3935563853375062703154727a4b46565661517473715a59736b3969457030702b74396271336c4f3458422b784d5a52776762574d7a58585a6b6252705a594c39466157492b7a504d735552395a486e7230506b367343515a4b4e7a6b744836357049514d365036633668413257396b4a4a35554173675a73435533614255534a4b5a4e6878315663596d354b30765a33355670596b3578492f694d416a54794a3531782f7672625678556f6f392f4a4c4b2b716f59364f746168306177437a532f6b474a2f614f677a3745774c4530746346485036747a2b6633446a3932396442544c7a574e42455657664a71426f6b32686638414c342f594c58504c3246563861575a714f6442702f7741684c5439517934523174436f512b33594e527a517a4633744e636f4f5852386b6f393136465a656c2f316e736a3751757771436c625561786f2b3279592b48494d484265453132353568495479705a75575a72317754745664554b53316c774945426c456b5755725a325876324a5651555962464b4a6b7a4a69704f674c416330304b67526d524d704b6f376675557351794f726c79323266787a3173446d39354c59317a4c2f3237347a6f4c346b4d597a767462656652414443343141586a6d755458494a51676e78386a43344a36766d3571753136655a2b33584f566145724772552b316e357165534d34674b6134374a54393467707a676b4564625a48575541754d4752466f504445475053762f414969757a69646d7344685a562b6c73626c69544b4f65332f7343626841414a786d4159502b57356a653268504e6b79543050744c4d676f75734156746c304a42756b4e4c6638415365535654654f5877566a53436c644374786a4e53434e67727957414374456d5535306a71546938696d56524d724d68722f624b6d3679346566566e615875524f66654737346a49314135544f43494f5536306e6456487861416f716d344e676a4f2b4d424764304a4c5a6b482f455338667246796769426a2f6c464a4b4d572f74696a6b63304d75655736466d527030536456525a632b576a2f432b4965665669376c6f7335424677753849696c6c304363746767665a5946455333634d536545654f6c4b54526f2f4445716f7175303379766f376f38626f674e586449496d575a6f63467875304d2f72466e564d33706743534f6c7a6c4e61474f707a5a306d6155326866426d35667471344a6a5a7035363166597368705a51392b74536b7331684575347a64784a6e4f426b6666636b36506e43505851543261664e477261792b4e5a58504c564f71683163624f637570724e6d6d2b584e48697959736d434b444e615156385a745a647741414c526245596a71456454502b585a587937536d69782b7674376c68417736375a376f35646c39436f325343354f66554f76526a6d4b7a59706f4247723548445155396b387862455448663342766e78517a5048537058664c5539456332585055594a657877506554615a70384e64484a32646a307143634b2b2f49564f6c536b7761486162553041375253794f5771625161367673716f676f627053647a3346704d676c366a6d73685a644b3569364936415a504b4a7059546d436b474746427442523649336f4b2f5353354b58573656644c376b635478314657687456783142504a6e722b6a556e4e544b5a792f462b715575454e4c6c6a657a474851444d47513348766e7a5866665842734b6f786f6a42734d7336647a4e6d54504e7164516d634f5270366d3677464b63734764616c73377757747073376a767434697a71494856713442383147565a304c5a45484575756575664a6c6e4761575a752f49755437676d737244486e766d6138774439383476704e5a5552787261536b4855665032716e4f4b4b42657050703631344969634475364d4f6e6f4451316c784d75586e6e3052492b764d776c2b486e74615441616939726c5854335a495a6b33787664734569373570314a475961396b364a6e53734f776672357437336952646c42316b777a2f41434f49534948586a7a706e633579696d774c2b34375463774a5554634d366f575372367350494b766a463839304b5a762b724e51484b584a6e4a76442b464b356e475a783041366951425976516a624f71664e5878326b7457677259424b7970587a4b4f44526e682b75786e64704e6e7353356e4a6a56786676536b7a344459447964756a71757a6b733159386f6a6f635638694d393555304c5251544e5a666b6c6d72596b64444e5a4f7a51347879514f4e527553445638346b524a303867345a71726d302b563646476550657763374a32643266416a6c434f4d306631572b6e4c5a614c67545643386576366f566d394e4c5038415459416d43484c2b7274424d5036557765655257397a336461716256766355644c66346c50796441574b736d6f6b534d344e4366325548377a4d564a634367324b6e723475624d615455744372547251376a6c6779694b6635412b4c724f6443714e6e5745414b6c754c7445667839493366366741334a66794b6261305577385a446f4e666f4a793263712b3565354253305755304e5a504f4a55646f2f374442344c676e2b352b756e4d594b3967454d733166716e5a32394b59634f6f6e4c577179756d71794d366b4c345933434b572f505a32537934516f6c423351424330695949343374514b6866476b534d61512f6a57496c30757956564f3976626c555376706c6c695a6e2f5050557a33754f4e617a42726a797661594837334f3644796d6e4c4e624e71695752664b426e556c6337316f58437376744c6363706e33322f614e4c4a57694c6744694f32534372762f414c56734269326b4a61676e6c6e79733156383230534a703537766d5537586d544c336b3259756a764b47454d65656b766a5352652b6b614f30684f3771584134305a5643797571726a6668435768566f364e433135746c446d726530655a457953366e4e497379644c6d66496b754c6a537442452f334e49484f6e6f4e7a4554422f4c544f50347155797a734c5439382f46444854486e517036597a66474c70792f363835724d353832662f742f4b34524542325368455a6a2f3138706d70495963636e367133794d4253574932474c6134524f51334669696d68356c39595a584b53583246664d6277576d332f713564505a546471516e7a4b376e5549564f532b2f5976546e2f437955576363515530526776724f65314a66456c514e4439772b774d71626c6a4a574c4c7154556b542b4f7773744d4c7231374565624d707a6e6a43684f6650784e54475049336349485271415030744b5a6d686b346f6336657164373955314e6a4b53656c774c4e2f50724450485579707375745954702f6d6450386a5a2b4c3759663246696f466b796e2b6752564b76714f6e497857686d55625849366f70724666506f395a705561566c4d78386a675649372b596c73446a674e7337565a53544c394b2b5071415a466f5233673743667049527872356d7348557a366374766355374975555364565158544b78692f6a61687871416c64636a6e4f7146537a704446396e30786f2b3351464e316e455453336175724256476c6269356d43774b70365650684c6e305669424c4562476d43574638626c657741557269624f543332352b352b6f4e58735434383961466e58476338614756336f6f734e6d6c4c39507838584c4e52306e2f302f3857674955754145615a6b5a5a4e4c713461565142614539557a4a4446614941596c306d692b705a425259317a476364395a6e7968542b685a2f69382f6e42684c564f70493275364a544a6e7a3535733668464236576443724a644d496c486d593765564f4667365376384155587543633167315a70534b584175484947507547704272572b7a4f356a72346b58544f374a78734a5576306c45644b574b6e2b35525368794575614d76774f6f2f3273535966485066566e6a6c453659746a4e584f3336556e636c75333159514d4b596146374d356663304f3557664b7770574b6b6e55476c2b6a2b77664933663046662b442b65552b482b574a395048705050385175362f51384a304e544c64694a7a4668476d6d544b72375a634531575a39484e3936444439634a6f6452476a326b6b5036764d544d627339526362474c62734543707271565a647a412f6a5736456e3170736c73716561725170756a5532714871342f5a555457664143356b396530656837436f41393668764368645a793959306d4255313547364e455a74633676536c2b61587343526d6e474e673853366b4a6b3571707a50336458535952356b36304f6a637a2b5169526247316e4d2b70465656436634622b59663953635a4a333273735a6e6c6571686254455568377735377638416479514a524c6254456149754e7a2b6e4c535474486e625152386a56575336576759396a45686e6438645352616b416354763841436748436b3537503642746f364f726d6362334c7553366c4c716b76584242716e6e536f644e7a556f475050527448774b476856514572454c48356548386a484a415a6661446a75697650722f7743394b7864306341484861756e7376655875346c6d68544f49526d796c672f43772b2f556a637a2f717768553556426b62417a6f6a5a5833362b726f4e67726536654c34733053536f336b57676b737357383936416f6c4c34326373357878544a63544148336f464b51647863396f64305a36486a7736715070796a4361337776456e4b6f54422b76636b686f483741724557694c5254372b767149327553456b6a6774634c366771514d7770516d5457733655716237787a7a7135625937746e4363732f74457a6e363461426d6d41476636774147686c5650517338313552633061574957794f6e4d3436563454412b464e6f66424e2f722b524d38762b7732443031416e697630426455722b674b356d613747344453347a5137504e5936656a53357a50344d62656b2f5336644c714b507446316c7a507365354334352f732b39524730524a774f31547248536458504c38717a6335645173696b5a6247624b6f574f65364365554f304a3430766a467258642b4873464b516f4b61634f674469694b455a794777616157352f654c75344d644831654955436138364f68624f3168526f664a52432b6a6e4a7a54395947385a31784c467a674752392b712f5451754f45586674744e3344355761706f542f6b4a7364626c722b4c7255682f443044376d4c6f624f372f6c52716d65487344414a79647949706531384f504a516454714d385136587a775850556e4f51375139387153636c6637577074456e537044704a50337439344e326b4f5937544330585858644e346a6c71644b54614b506a2b5a6d35556964694f4a7356484f522f4431782b77622b653732664b777942746d544f4338564c6e51777a6d674a6c564c3875664f756a6830733875357569416c2b6b365248443969587143494573324254376e6d3332414450536a6b3762717a533873632b4e6a47657835364e6c4172614b35635a4b6b5332467935334b456968584b577053342f624d49414a2f77437745733258744639487863756b56374c2f414a6d5662517465322b66744a6c466f676b6a6f6f4c3461716d6933354f694b57415968314979413043426e486c6b43695a4c434b39686e774e5179764c7a65735050597873725a2f736449616b79357673357861456a4d364d4f6f53532b7a4a634747744e38735046582b79336d79323937526a4b5765394d6b394d7064344d397376784f71645a63544f394c6e46722b6d36414f6659397a514272506a783064755148666f715751555a63765552726c696f30386371312f3763747a7242596a34334c4c3366456377564f464a322b79656c594e7445364c2b582f4d545a61383668306c457043694232315368654b7978626d68516d564e5334526351383478594764493953583665636f676b764e7a4a57576a56784d59663969554b3954525651794c50676931714c2b4c5853744c705965565a71562f37424e6676704a54672f3633557142555a797861414a4172434f494b727159757a386c526f52544e715233517838794952484a3248664a517753486f434646687344326e4e536b7764585a4536703675486f6772533677487356394f654f5948584f6e51367841315649664b6e343849553863676571366b2b542f586342566751444c38596f3578616f6442347256625a53754b52437635704c4573347038594a6a4247666f424f583176663179667263736e5550767344326d4542312f54373763794f4931583474456e37537530526e6d722b39463375684c564c5378796b787a2f596e644678505865386b787a7a4f4d4257507a54457a453567597165396438755635485658547536564c4e5741422f686e5a6d726845704d335852514d7977506c69334a7049445143666b4f5a55354e4561424d4946592b5a654636553131576c49686c45715855505452466c536162386d5a4775732f744c64464c79697a4d56395848436a6b6a4c6b316a3735442b59334743394b573656774b38556e506a476e2b517a6e4d6b34374b586f3547743476566d354d5a304a716f396b55547148577a3349646f792f485830666842786b5a4e2f774335502f5767616b6a5573564d35635758592f77446332584434315145315939693366765a697143464e415435376e537872573542457a735a77634b6478554e36544b2f4839503142573052324968774b49356c352b5a7143712b572f476956504d47724f565a5964627472554752316f5666617162567a367677306657634538374f70686f54694d3241485957335350576c6973796237356d72524a2f474e7964467656784a787443574441796f2f654550756f7a6244454635376c4549653458385a4e386e394b78694d4175486539542f4c4c6b3273676332534c517a6247315a497a79784c7a476b32345a526c65335131757263436d636e426e7342314d3842564a6e54777241466c6935575537624b376178777248366e4e576e542b734a386a7879356c625849744d556c6f4f4a5430383454304a6e44367377742b73714f656867455035545136342b78746d506762507342523655364f777872786c683939336c684a5a7a507833527736784d346c514243627133687848552f4d3448736430387957374f6b4439555745536537535a473538513172615449744f6b46365865793572452f43382f313375674230714e49545743696351637965583931712f4861437873763568533863526c5a4558334f546348545a6f4b5a715974505a3741736a6930476855494e6e5566326748324144453132563841775674652b7174326d4449796d59727061697849364846576f644f36784138314b51586c73534a6471574a70356677364142616b696b55746c664154426e6b446d544132617a516e6c514d305a756c6f4f6b557479507356756a6b706572714d757a69506d657746683150457a4c35434457652b5a5666642b5945736b617a51337441643232323736396332776566305a3953332f414e4c79616e4c314a7245316e6e736e464b79443430334133376b4a71435159776d6e743848302f514f32316f2f687a3046497053577269396258566d54336245626c32455373776d6f4874507548694937436c63386d65397839702b464454344d62342f702b6f615753554e6c734d6a324756774e6a3753674c6272535376573434526e4e4d6c692f735935366e422b5271444d6859667a6d3563623461527344736d567065522f4a4852484a42537a74496e4d664d724b7659504a5a37477470755664536562525a5272546c5569775066326138772b4770774d494d2b78353544702f687430396574792f4932376f69735a78554d62577a4e4a5342304e693753626369695a314536474349395a47316f4e6f70374d7074507364375533366259475863587932555979536e496f6a566263543038516951477230325a75355172764661437676533975537833425939644530774857347a6d415366476165452b76714a4548694b554e2f69394d5554585630753867617752725a614a383478537445714c794e45744435374663393748586c33336f2f5537672b5867524e75624d63425957526e3657466b76476c467465657337594b4c744c5244577170795a394451474e3156594b70537655626f4d316a64783876544a31502b597a6643544531456b6835626e787a747969526d7272727631656f73733566594330524a646f30702b7464796d57686a687a574d674658364e7a4342787553427a74416e70706f552f52307145545654726452476a756c42374d71616657502b5246305a4d536f55776a476d715759306b62324259716c337a482f774259514a7155394b365665774c4774487574324a744b72686a50374770313964734c6836533830342f68454a6d4c503242544e37487a55443830344c6e6d387556796436374459544c436e47625141575636533471466756664a3038617968326736655a717957667870414f65344742534534664d36776c686657576230797a633465665566444848564376532b4f34347772703051374f6c39677566385079456767315567732f636b412f6f44633454545a367048505a5372534b5a714c576c6e58795561566b7064366e344558457a395577735a4d4a384d4a6a5542706141744b647a51597831555553674d62696e6445387574526b314a6c6e31767371727469614355555642434853305064796354346b684d676e64784b6c65774932334f6e3074497a6a3050694e64525031596a454b67557a706b5459623631353958746a46756f512f4a4d30566f484850704e6b493143496645617a654f6162682b494f7330795a375130395a5255543334376a6f4377706673567938534e427335386e456450337944587765675467495a3845483873487a6143526c666a6c417269632b694d6f6b6678376b366b2f474f2b535346596753337454302f38577a6342617a412b6d30424f6771706d525854394c4e6f76752b7a7a4f6f543951394a762f6b43395a5a4643325769626b34396354364b796343354f707039672b31504f6d7748534530556f717256525733517a75566a7a375445544e55734a4d7975572b326e63305739795a6c6f585152544c5934675465516c4f63346646774558325a744e716635306d5356577857743442356e38664968643062713771582f38417148766f715447506a344e497151456844375076353150654b44377355727037443047544e2b664c4e5351484d314f6c3845554f684b687353473165325737746c756f4d7a337a67424c53594f704e4930714141564b6d79466f636338357078444f4741776f3171516a695a6d56634a484f786b4270636d694f4d7639716c2b306245664d6c63716c5041442b51493536377447346b2f2f41416d776f6f59474f74386a64537578746234666b546e5435667548516a496b48375437325542663864483941547a6d3963714b57556256566c38347142476671466e4a2b624b755974764d36746e576146566163656476365068633444754e2b6237446862574242736f6f4b742b66776d6946303079422f5565544d7655315a5a657935373135566b765853764b7246593533462f456330315155476e356e667342326f6d4e5878534c533661366d787448794d572b413243483867684c364732562b32644a5473466e324a4a4645662b79594f642b32345a772f5230433237524f5668636a6f636d735a326d4d796a50533552774161617865317962306c643156444869564a756d503635462b6d70416a42656565746a5566484e477a39696253434a4c6b6c44784e557771594c7663746b2b4d7a3733484d567a332f57536d4e5873704266515742685374372f414e3961574c397454416b74707a6b32487057723979387a734d5045555855725735765072385366484770342b31767436414b5433524a6b486d63474d6365627a7568526f456337456c6d6d39674e644b356d624b50744a69366753666542302f593035766a6c36777a443835633059726a7a7538583935553838375a746e54546654524b66306b5569314f47786c3979444b7967714766354e57376e75416b6d747841526c7237706e61742f4c56735a5351766855656d716f766d79426367662b6e704c2b52692b304f6134652f4c4d4b45794a2f5a2f4a302b4130706e6f4b626e4d2b53326568765a7443734a4341556435504d6c2f427a6f523937475a6f35746b34306e4f557a44662f7742655a732f5159435151646f7647656272546a4a36473830337a4e6e4953544f30703463336c6961624f444f4b476179616d6a31582f4146793672346a63336e79754435335355352f594b69356d4c6f624d70526f71593256334b4b6e49594641677450466956786148654c51396e7a665434464d7656463852673631444d43484667484d76366e705454546e6b464b2f324d6a57334c5257524c554135664d30576364336e4f75643741587a7177364c576839725478546a784b61374a2b495a4a796462356e57306b387062754e544b5055396e6f53497053586572443542504b655848667479365841432b4374316844506156315a66416d78494d464d394f64323165643151352f632f6a55304778384e526e7a6b787a4f643961526166733857515a327755635855694f5a367671316332456355324d4b2b66626f533463764a54796466526c2b524a63587a6e546e2b54534c347a704a725670416352645775636d4c30483054384e6b76657a5650466c717839355a7167586f4633535639635a5a514176657873656146674d724469542f6f4761767642797157324b65654e555141614f58782f572f6c644b657057744d6a7366312b70567a6c45356b336e4765314d7a416159394d365a7778646f6f4a71676e554b495967314b546b514478717268614e552f62645250386f6f65324f685847716a35316a314a75365a683158572f7742417974797635684e392b6a6b506a32795846736d355971674b494d2b59584c446c4f677775577261743950524677736448536b65474271425a78426d4f69755a756a5835446a6162583538316d632f523864536569615656483845564e306c3265706e3244426c4833653957597041594b652f70626663495046777a6144506e7938335a6f314a6b73354c6f4449637a695244396877546642526d38544a4746694257394b30417079724a654a4252635849515a537551717368316c762b5547624637544e665878444f356c464e56694b37725033514a306678394974537853676b44674b5633362f4b5568693353524975325a424c71566f664c5a32764c33507556756a516d506f3077353666643052416c752b5552347a702f3733386a2b56702b344232597473386b5441696d30567432695a53326d6e6c505153706d6c4e716f58436c4963304352444764423866787675643878712b59536f542f514e67303649777272707a6f45636a6f5a466b79316831736678395255716d514d78647a474c5430616c7341694469562b394964724b52507649486a4a635636557743362f4c564f5045424d4f7375424d2f63376e65476955725a33746a54312b6c51665a724f6a527769396f2f356f724251613479367a506a3032412b37597162526e52736a6a70422b665a6f33655034707a706d5062584f4e695269585a4f317175636478504b506642386b5947576e752f4d44714e7739596b6f645a52787232586e784a49544c6a6c486c583875374578545a2f6a4c556a6a713934554a35387a6d5a717151535268372f366264764e6e4f422b61752f49795a615a44326a356f6247355a61696d2b4d733163617448555953656f736a614f6f7874424f364c657975714b696c6a554237512b744a6f4d4b697a553630476a4273664c7856382b644c586d3835617061382f357147507049366b726e6d70586135356c31644247314c71456b6143644d71764e742f4d41547648342f744b5375386e4c7051684a4a344d744c527076716832704e764e796d35396b32614c6b3537733456645a38686e5438302f2b6244442b6d2b7669507344364e47756c70516d776e77366233396d726c6e646f75544638544c4c75352f3737396858315369616372716538484e735170495848374a37416733586547616f59732b647564714f31703152387337586354714d6166506c66472b6164382f797568485971366e706e3267394c7055455939702b7a6e37767a414b316a4b42354e4d6c4d6c53704273643069325973574c4e6f4e64303742746a57727158436b535879456d756e656b456d4332532f552f7251664e4337536e5a386d70716e6f737a565657384b75677a7652482f47352b756562515577314c59784f326d5a7a6a5562306766794630354b2b67355159553244337433623942446b5151726b55322b62567a72504a4a4a4955325a3938334a495869784b71766c5a456a6964443971396a7071452f47773278336375414d36577369797548787a463168557a4e626b46717673546e4a576358593943487055383146674d367169792f6e465974634a586c30762b7a54395473697a66467644386165526a745a71744238363179674e6c584a734451304e5253537a6538783471564b67536e4f46612f5a37564a6f52396e357569324b5a595a32763352496e71636d504e56494c644f306f766c4c4d6d4e58473246783963626d7456446d395a316a33647935346669464c444a7166694d316c30584147592b49716f664f6e536d2b74372b304b416c615079333564363971784c494a35564471646e7a584242525650795035663856487853665a38414e63444b39464e4f68564e2f436167537568437168436c7062704c35796536302b686e2f65363265677674464d7270317a4b64377a2b455a7447443470726642396630447562516f54646438584e5765432f794e633235787a74426b3167644b72746237566b763955547935342f457a35785633375a2b357162446259376a6279376738526d6c5339746d377a54557557725164382b6446563352347a4b445357764b4478337372756a476d507270694a6c4846395638437a535332546b756f6c4d76614f3879494b62465a35645458465278715939684a7a4b355a70616e514e3059386c732f77424b30643671673363347a336837712f63376f5a6a39575a6a44615471726f474c484871427961435a5a484c3754534651564e41584d31485a704e4b59657457637966304e5a6755385950556a4d31337a2f414746543035344c63696c3338574652366b6f3350722b566b3454416d7163524a48566a7a6e416d306a6479634b77636639413569584d674552365651467058613764747a4c6e554d594e45762f706c6271446a4a504a3775752f6b6c6c3852554f4558434370695a4d355577664f724158417133574c71347130392b53574c68544c56394b79532f55465363744135387061796462706a7747714d373275502f7743684d78674c35793838656177574d686d63537672545674494c4d79626d716b714c6135506b6e4b61563359336c4e52386a48563954704a35326d6565663742676e6256536d4a6e6262596a7130626b3043485a70376543476450525646624561366c475668747a306a52312f7344374c6b473933364e42744173757a697175637067716e316e7a6b51315058477476617946694a553061756d366b4a352b732f34495573634c584167322f4748764567435457646b6e7a776e6d546d756443696f3557652b42307943456f736a5734374d7153554d374b646168564e5031542b46326b6e3552435962366567576c76736f5a53634c6447742b69354456702b2b4a466e5352795476507377564a594a5a71666a71592b6c70394c376868476144464b6a414179483466484a6f7148506c424b364362505337366345426f6f57677571736c6a51533578466433584b2f644b574759536578354c3434514236576e64636f58424e6632664f4368704b585148457358317a74464173616d7276624c4f4a485559785879716330374b437a32384233426e43553178574250524e704c6e374d39534a5255775346596d624a303866664547616630772b614f643464446b435463365a4e6955712b576341556b714658487835335235624a4f62305a783156635463364e576f6f76696e773276585554343258503841616c6a665a5137357571533333716142493070623258344b4a48705a4637323647664d4a4f61565877735731743031334f664976354b75677352467039636b4f455142536f41686d6847396b75646f4a3579336d646e6e556e745342746250637a347747727261644331646c4373316568533057645379357a706c46316b795a2b7a67656873516d66497a36796f366e74564b496a725736615366632f6b5365544b616874466b3933422b3130703164636c7a706e382b4e42434147437362794f2b736c54673033302f4179434d7338366e6165626e58747154627871357a53734b4b716e634c707a6e372f41507074483461666b5341656971784b336e65364f78644561537a6f316730694b644445793276544a414854576b595a79576b792b794465544554525943544e494d70764d35784d7554686f4c516d78475256586e4c743579576c79724235597857726e312f4d7349356e4b2f616762387a662b734537666252386741704e6e4c78697676735651554f616b312b3661572b6553463864556568522f47652f4c3639696146354a30716b42767367556c676470584f4b514359695a36526b5a7631733450716f6b4764456d6e734e6b583844515a5032544b79345953705865432f77426950667466637162506150662b79737750357a70372f54452b45684737617973754b335656586f2f766c634b4b726c6a5a6f646256414468614e69454678715a2f354170655745394850724a6c4b6b412b4766357636596e4f4d6352475652637247786e6b47514d306d6f71436331504f4f6456644f61326a756e7a3630307653756735474c4b46477456502b7253396e4f2b326871304f2f6c79466444794b6f686d52697478756f426475535661796c75544c34384c663559543753323772527a2f3474616530652f767455784a752f597979696b35325738414e685870336e6e356c636d6d3936427553754b47324255306e315a705a56686d704962615075646e4a4648576346496649644a6b593963333431747677672b3871744e656647743254327931565772527359756e3839717069716f7641467a61676948316671364f7735714b4a715235796d5a6f45625458594563617a35684470554365326b545a34397943686258474a6945656c714a4f794659686161324d2f7771516c535538562f674f5048574a6d306d7164414f52594f663953485a46315163476d796a53374b743345457966376a7039446b354f4d63397a5a64416750716761616e58766d7a696f4e55496a4f5a786a504159383047716c42464f7433534671486b75325757652f512f35666e7236744657624b7055396974424e3348576d61757543594b55673171786d354163383231467149367a694a6c4a574631563166323856396c41765842544779496e475646532f77425065366669466d6e32417033776455467a35784f4d39776b744763323275534a552f56715a2f4c3655304a77326f666d6958324d5536645665745a522f443042473658324c53414b615a70503551582b7843426a5062566b6d544b476c77726135616673497862427a70777365772b4f497332656a696146554a75436669304d457a73466971574f58386f416f724d30346f4b4d4d716546313671465a6b64482b6a765a6770396a76733250314676636c6e77392b66705455693036552f574d6e47585244463376577675644d2f4d4779343475446f6b76566d535044526d364f6979692b716b6b446d71586f4d426a75636e6437456f2b7559394e484a774745544d33486e757773743438454b354458626f5435326c383572483647445048693164347861364a3565646c41506c656c797a53317267557455395a347a3144324c51434a4d6854706f5658707a592f334f61796d4f6b674457503733304b4472577075626450384147743347634d493363743466514944463038426a6265726b2b73666676545778557842336f3563736f34414b6f476c6469466a6231316b7638546c7775644d5930792f4b774334526d6d5439674e30614f615470366369617437314842522f4878755a6d73305a667335394b37716a434c672f443966697855743036514f596a634163704d41374d634a3477487a7a7a4c65364e5253583554705473586f3049547a4f587854304d6e747a4b4e46733948436e466b2b685152476c4c36526d533262704d5543663667503841615477622b4b6565344c4d366e4d6d61684c3663306d524f5a4747643965666e325035482f645a637a334573445156502f41665a50394e4276646f717a6d783236567078727170444f724868305864514d6958555271335564456c2f4f4569306c51673343444f36526d3851714258784268574e764e45417a764945545037646e4f556d646a584d374d7350335a48484e484b53383133502f6f4c446a75392b55782b49672b4d657042506c45627046546a4e3439724b616c303279442f62546375757a4f5a564f687a33756e63796f3943367a3748587154524d546a4d516e39705545442b45713445383554376136564b2f6c50707948724b3056486d4c584e796e4d6c617474456f7376634b757a55714a624f752b4d414979377a67447a474778665673504f746b6c75735561352b344e746d50484f68356e43714b5748767a5541536459457a636451666634306d416b502b5445476a626453713651583351766b694663644763306b734e35466d742b66764761626a59757061324d71537a37534355564a2f4a7a36344a70435a695936694a4144454c6f2f6d4a4733745a2f73586a7a396a32703830554b31474b6749586d6e68554c58794556386c50514673337a4a39376c726e4d6f4241567a5248514b3534546f3558423268776a735a5a4437475369793447492b4e5761746b745472477435336f664853446e4d5361773531313877515a6a443978447332505035496b3375356256726f4c4c5a49356f796368624f334c37316c56465132483137534256546a55667a4f705437464131447364626570796558727069546f45782b632b304e75684a56654f6f6861354e4354664a6e724b795a2f364e564d37686d4a71567334494943654e5a384a4755383733356a714d334f6b63796a377931725253397176744a7464666f7a776d385a43644f5038336f47646f30307a4c4c323946764977634d38424b6a5a31782b31672b4e44325462646f4a64355a75665476727773676f6870706a5269773157525332617a705a353163464c4f74446f425a525758775445557a45347a50654a784c347668524c6730357031514d7a684a302b6f4c58614f502f476e594f6a4e5871303757617674516f72466e654f34644254334744706a554b4a772f706d5a6949366830312f46665a446b5470474a686862596156576432517971394b5636575230504967683968564d594d2f434d424d467541356a397952674c616c587775524d716a34336f584c72582f4f4b704d38632b644f702b2b5355736e3653462f7741685150654b2f58317530586a4d62684433304145562b52765935323644714b4a7570795a5937465644705675782b71476d764a5a7452516c50354251647933644d61574d6d2f77437a326371444272435743306d6f5472496d46476d7a6755392b7743324a467370726a2b3746794d454c49687a7a666b756e6e42673966664e4277464f736d4e4c55422b6f536f46786a514a71782b7a72564e5455464a564642324a5053746b6a5477506b4869375072632f6466522b566c482b446c70345a417751697249375757574c5967553661757935647172366d396f504b5a644c2f4e2f774450434179646f4f392f582f442b385435654a6e55396e76427a5737434935637931316b6c4e6a7465314877727a2f676b6659334e47564b6e6368564b754836393145345071352f757573494461514d41503642674632664e737071544e3348566e686a353872422f5649464650776b6d373638374f396c4b564e6d67585a714739544f55665730664d5650376d42334b45626e74444a5a6a482f464b68586e7871746e6d41627751343543584153364471636f645455643755456334712b75564c70317459446751586b465771647255523053496e2b34357567694f7537734333564774746b637567316d784c776d4944375057544d66616b4f2f546f702b46594d7a485363423570677962732f774162667551696969314e4f566351557661774c6e45484a7573527832676330374858443745706f6e53426c7a676766374176627a555970327679314f643730616b2f78384f5a72446c666f2f626a587a703744652f656c634967744535635458394e776d4b76672b736b476c36733866767552436a504c7379386c6b39457569452f3066726b797a516e51375153646d676a4831506b346275454b75474e4c66673751587741697674703856564b736a677a714b786e2b6956543538364f56557270717a6b4b566a436c666e716a506f6b644946396a394e4c32384a4168686c5a5761347935326959716f4f354a5a6d6343705354324e464979526467725a555a5543766e38665655304647444a4d6450364836335a6c7142444a2b767a4f716461782b6132534b6e4c686d32456475646b4b556c334b766d5568505758554c68787836624a5866594e30416d7873776d55774177715968314d6d597041304e5a62467373526d7832533555796d726e6e676f693057705a487470593671634f4a623776746e66524748732b79324e6f5a6f3148534c636a4d7235304c58783949546d6b75736b61746b72615471544c704945326471596e37434c2b73544357776b666d544b5873534349737331364b586879754e3554543641486f624e544d75626b48386e506b657974477750644261316a472f6a55704b7a767657356b36686d584738477079795a306a3561354e6670374e436c78786a4c327647666d7a4b54724c6a304b3830652f7744527a76682f52566f54536b757537523772705731714e313877764652325a34646137723950534455306d715338657957306e644c666f427255775369444d466550704575706c4444443335704a4d7a366e694f676e52552f705148525136697a53637153433638614e4a62516c6a3073346b6f6d6a4b73684c342b73632f77436d59542b2f394d503241783166416654727a384a666531547075335434324e6d6a4175776d6a556c3765315142753272664956486376375271347273746231544a5652396c776a4b4472356a3475742f426f567a586c6c796e337976682b48504852654c33433573715632356178354c50624756514233352b6e7851416b37432b59364642394e633669314c3969443463657439677066574a365865515657315a564d72357a486e305a2b314d6f2f61655747587a4a6d4d5a76304652734256374c4d4c34644e642b5547486f51785270514356467867584243676464324f4e44665a4b66332f48542f54766534536375494157414a4a547235684c4837637a623063366d7967415050716b35326d57366e7259776c2b3342734e666e2f706931784f2b5359766555376a49453957455a6646582f41454150797a61782f54627848766d766c576b6d7565654e71323161757544644e3957727079356b766a47653272324e48577038736f6b58503869557062522f725238344b6c377959695a6e45436b76546e45743877716436732b635150583558354a516e2b4c77786b6f6f7338543862696a6e677a76476647375034616f6b746d464d35366b7766543432757a6b79534e4d2f667633744d52473242634b436b30525770686b4332726d6b2b315878467758576c6e6a394f6638415557736d64653075695364334a675638456b78744e626b755533325a673338746f3870524d71664b4f4d70555158507a506d555563796b7255617139484c61536666596d6d586e372b4c52497755584463704c717a412b6e4f5468716a70306174544a582f7742624c7465593159364c31576c6e2f5536756332457a504c713354396f446f437067367441314c5336565a464d385a34526a495a4b745834376c5a43467a5062637237392f7a74664b614c436f56306e793136553636412b6e784f33474a706369524a7775412b2f57435a6e4f754e7038354455744539537866644b33764b63327547423948567a68315032484e64346f6c475332456930716d4c485145534f4b4e6e7373454a6d546b67656631416a59705375676c5251562f666e4d4b79314852305535335a436b745a42393039583546756f374b365571484545786f65444239314a2b7741412b394d7a6d45426f79466979594b45496570674f2b3553646173314c7971455a35566b50624f3959387076736c4e47683863767375643041646a457631624373672f6c592b503654322f522f6a5a7162575a6132716b374d4e6a4b727065712b75485a4256386f66634d474f634d4b5657572b44362f6f42484c6f46596b3947766d6e326b42546c397054394f32354b68665a4e6961557569346d636a304a387865692f685a784e4133544b55427a675279663162627a6558554e6f3739466269722b774b65775a3250545a4e6a4e6e5439706246694851526d7a527635554b6d585138714c71706e4745446b3070443459796b30426a557165537364792f77434a65564a32585066796e734c5a4a716c6674364c2f4147734e3652734c554931314877766d63446a4b5433334431584f426d5665645763706d766d36686e6d36414a726536774966676d6e5a6c364644473031526b7571667632474d3939494a764b6d4c32734e553066763841363074336266742f774a504a4a6b61686d58384f2f65453575334b566d4e3135776343736164334c6165316b326768372b735678734553596e2f724f6e2b7a3766724c727a2b6633424b2b6544566b6f6b577936576f48356b6c495661483652526d786162464533504265677163616d46396347734836762b49443068342b647066314847732b4568476533555175776b75756d424d4642723458484776506f73724b4d732f76746850737045754e4c3653365336566a4e37306f393741554541616e594769374f62336d2f72596b2b58467a576d6f55386b7430503151686761726462536b5777703261475452795a314a69434b534e674d41414c2b72626558634d61645370736b755178556d5346767730304d7a70307672377a514c327262324d37456e4859776250487735524f716a2f366375367669676d464c5a725870616545514d6d365063722b503352546f7652524a4f656f63506b5749706c46645776526b417579612b632b4d7779584b6c616145476839684d503768304f412f68727837506d41644374505535492f2b535176505a614e394b4f5a574e6e384e3776644a506a5941567a6c4e4c564e682f5639344d364c6c4f306c6f48737a4139733234614d4f394877646c30415252486b2b526f6a6b56744a6f736a4b6c6d576e2b4f47315748775a306a5a515454497a35526d476b7071314f6d4d524d413264456c383170615a5a573763762b545657796f494971366e6f795238665247724c776c2f4b4f673669375253346f7a4b59457867394b41722b455668385655742f7a50506a33555937394c59644b43465a38685a7564626d795a6a4b346d61316756537164754c73476c526a387847515541623650736742567232554f73706d484f4c4f5a3262366d5375664f6f4c3961433875593374707974726c4e6b7033584a55416353376976664e4b5a725352462f514838324741575a334b6c49397035756e44566d486c52646f675a75636b74795a4d7442574e69712f5358546753596b386343514f6c7673305370392b4f2b3369416d6d4f6a53694f32712f6d646e61564d2b55514c6f3266706672345a636652686c53784968646f6b4b3070364235352b304d32616e6a684872763674586c7a75345a46622b513735477245766b304d674f7a2b525a576c6d5933485478625372614654766d3446314d365274663759574a636d5157413376784e2f5a4e4a64564e74735932397742744c4a525a646a516e447468564a674b3056326158646b4d384b644d7173634c497168496d665a685a48396b366d554f467a476d4b33557a7234566858766e397566544864704951464838577939774c6c7a34635451794e47726776375256705475523774446d3475576d716633336e6f55657a3567494b707672674d2f4350786a653363333161396274646e6b65726f2b6265574436632b4870334d756b56493865384b7058326a585242654a6c52745032744365616878637334456359422f30774a703961733432316a34654933665868364e37592b32615a70307a6c3057726c357a5a534755363236713734763076536d613664574c4b6b316d7a6c544b56706f47785a714361597364397645666c617365695430386a614e576332664c6b72663351755632715361324c4930796c4370664d743144492f6d6d2b4d574f542f46444f5930642f63333956447a4d2b31463372496e56316c705333783531464e47684750654e6349727575353850456a6e7972466653596749474f5937346a554b6c51475472356872483373506b576432656574625576756e3770753047305646396761424a74637a4a58433751626f58643551637a366c38443370377745724d43743848312f5166587079354c32636f704e7339536145496f7373753063427849577968484c45474d354263446e526470685638772b79595242526d34416e632f6e3977306e774149335477557049332f526e6a3651577338656d37506b726f6c3568357243476a506a4765466b334746584e505166334f7336594c3737472b336948364d57796c4d7038756c343946705a5636644366352b43453951376a7371546a567a50727a3156667837675161456b4d37436e3448734d777062376549467235586d716f4b306c4254487771583546456b636c483835437972344b704a5a697071682b4772574b6f61366c30424a7a326e517046626e73544847302b595a6f356d3372546c7466517a323953303432386a7a6f414f2f677169617650625561326673667230635376346156664d7a687a6663645375432f375431675371586d6a45475343307a6a6f56557954374e636b536955716978673253776473354c33356e4664485a79732b51542b2f7469557a386b36326d684f596a474a4f716d747632795964337a5a314348724f695365656d4d78727156642f4832557773737a6d4f58386e76343533787244334577334b6556723971524b70575a364a35696b566638414e4f57614655397330434b73664f3163636253304b44466a416a2b4a4e476b6350446a6f636f35696e2f314a5962573143755a6f5a663672316b34345a6f31686d49315a6f584b6962496b4f7a6c32685171576d3336792f624e473979654b6437557964435279674b564b65484477444947633732514a355a70367758625a626e54324c355a396b32726c6a6958593342377757642b314831706a57466751504233442f41477a346d41347433595138625734724a37316a4a6d57546c49724c736439577570364c6d7a7a4c6f506c2b6975566f71486e76593946756b39702f4e4e30544b647335786a69506a626f5158675736484d324654575473644a50502f4942472b576363722b5068367253594c74414c6c6971366672476e4e4a5a38486146742b6d4e4d4231716154757a4d51616534655544316f5264567833535645724e6c666a7565564c57636f46456271564741744e3345306b347554684541316734526e4d767565376971496b4e76306c6a64707447706b5078504b71334f7473375554732b4a72426f5778504439784837436d5249435864494d655038413475575352304f5a64546e6b484c617a636a7572596d314f68504d7a4e304a386676384131566c6f4375646b35756f47616d6c76564a637a7639412f7336764b4c346544513157692b68485a5a744368737656632b334d437a30304d34366359345843523956796232536654594b522b6e585277506c6333665a6d632f7744676a44585031387243376f6468356e54474f4f7156616c7a72476f704d2b4f6853525973544d4442314a6770503742712f5461767641367847536e4162624b697653627036612f6c7a4a5a2b30785555555645437857744f67504166332f503244532f6944452b45454f6668364464577a497a7770566a344e71795a5466586b6e6e527a647037544a724c705850316b75632b2b346550342b64782f447a6f4b2f556f556f4332375061347743646e68326639445354707a4b533669624b50384154744e716c56756e4f36756177614c462f576c583250506e2b7a31434774396a70716d746b3537356b74334e75476548446d6359576a6169686f7a4b7170506264784f644b5078736f693159765a547565324e6e7a62444739366131642b445653504b45702f306976327043763159594175796c3532546b7447686448613254697431756831596e496633436461357a56366e32756e3339482f31584349554544666a4f6f466e64707476546b3079706e5348614348595843694c46524e6d616b324a6d6a4a454e532b336532716a512f7742664a4153372b592b4a67646d6e533964746c76415365644b46615767484a73314c364b654c747638413454413647743953566d63706661427a51376179687779314f487678676c69666b6e4f5a4b6951645272392b527638414954356e676c4d39624f6161665574475168304459385357523033625a65707a6d646f36557361735055495656424c396b6a6455444c346a6e55584c3036582f41496631674876483643696f566d453737746d523351724b744b5558456333324754534a706e4e6a6b324f544c524f705853574c5244534b69644a69743676366e55376748312f494d33556c697a6d353478624b703470474465794f4f3044415741326538594d39724635664a6531526e51785a544b36426c50574e736e7848625a5877426a78744461637a6a31334f6965427a3650507051564f304a734b4672754d7a326151764a626c4e6c7956502b487054543970642f47564b2f7742544f6976325a48796e78764a4d664a62536c4372624f6574737171653268546c446e55626a4c754e706c4c333656486332374f41536f4d7a5a54544d4241703466366137722f682b3068396b7a6f7949516276703779743252545831394c6d54365a6245517a716f4b657176357858485577666652374a717071624844487a2f44367830706d62646d6359432b706e7970344f6f38463746544f58384748704d3064535156437a49657544576b306c496471503841676c2b6f6a3241547070684154536e39537a61416c6f546b45642b53746b55794a6d61534a6b683775334e7a6f382f504865356b76756a746f6335692f692b4a4c446e44356746716939354a5347484874655965446f4b616b644164536f486f685a7534456e6b6c415475524c71707355794e59322f4b4f6c6f4a736376706c336f483772383471445944412b7a41556731644e444d752b75482b4768684f7454787971386c50596d784e7a7937474d58503150484b716556787458387838707453666675635363314b723470347a362b6750737058564f576a6d795a65614a4336526d5872574b526d72756f634f667179307a4d4b357139626b704549705362414d512b7352724c684d726f47636d476d696875646e794e784f576e526262664a4c62613934454f74462f48304b566e30547668345474512b4937636250737534356454474b634367626e44526b325636346850497467356931616f736d62656d5256727332706e463530356a37753631544a69634c50396747464b667330462f78623450722b67494d38665572537a4e6364534c4d774d697158756d7050614b43667833373477575154353438524b76377a4544786a5359344841397969564f776d526d63597a77446e37307762702f46456374544b376958457039626d504e48306162754c3462754671457535684b2f30552f38414461617944524e3077652b423876324b6c50304b6c4b744b304b4c757a5758584f73434565536157646b5475576f2b44444c79564f77626e42384a6933562f626c2f4655506636415a707273454d3376465a7965305778544a5a646d51306136576f6f58334b4f4d563643434a664a78793143497a4b515a544454515966624e685770326f447a694d56456c756b4a4d6e377944376553643833584b736f374c6f4354483061424f7a395a61726e6242522f6f534f6f592f2b666b4a4a50427a646e31346738794e7053746b5a51575757733665522f37346a3477426b54487235652b4c4c476c67393073576833372b49456972376e3763514b4c6a4b694d74304a73314a397a7a55546b2f794853312f77424f744736736d6658674d3253665a2b5766354a42556c5a6f4b464a3748497949484e45503642334670546a584d62304452522f33754b4f4d6a6e613568773157535046582f4146563156727a632b6a6e61444b784e427a4d6e645449516e4f344d7159644f71326c504836477765694c744f3653414661794d366c576a484d6e524754516e664e5652796548324a346b327463754f676d552f43344253425046727847305a79372b4f30485549305a6c5a674b464448556d47667376646c792f61347a70536b4d704764532b38634650546f583768494b356e506547467a727364736b3551572f467057777a7855485a647171344c4c644e5a534d7175332b6d75666b725a655055323045387a543578314270363733523138782b304f4b7a6735427348314c4c56545050625278736149386a4c65564b7a6b6e5150793046425574792b3064563056714f78514a587a72666b416352305a76587a39736f434d356e4e5551396e58694c56424f74784f676f7456563279566f4f6f584b4b41633541306b62576852376630416250693750487a544e34616664756d5a7138334e712b6276755736737163776d2b35374e77574f304b4575557637524e52537637614255644b4b4c336d637a486441525479426f2b30634a656c6345556b337455764867302f354f5a524671357364636a4f4b307471544e5748543475552b6f484e4a6275417a71654f6f4462497136446b31475a326e635331353972395075503961706a5653446355706f6376716b304d5839554f716a43553646674a47522f4f456c495635366757616d5834644870527832646f793252612b66416a535737506c586c765a64666e6e46756b513166424753594c3750695830765a3170724650434e313639726a3147772b4e35526e6130506a2b714f70486f77372b544c655631746c4f66513138656576514a497159524864514a61672f747a516453366159514a663256634f69754a7a6a484543394c50343146546457325357584d7279336464545679305739367a33374164624a4478727444763841734577534948377346775049787070436d417773526d6b362f77422f7657484a6c7442716a4f5a556d6c5671735a77614a354e77786243314e465448696b6e555542333568734b59345a784450786667424955346843443943467456664b45774968577954356f4c6c35504b364f724c502f6b6c726169492b45595542307763326170314c6747315337465550334a63326558476831794e42514a66332b5073704f64644e5849707055635a556c795251707a6c473332526d6251344e41552f3043363976516d754e505a5165747a356e697a4e484f68334c62675853644e326848733561666e79586b4b546f6e5a384a2b7831644a394e5a4e482b675430573777434c61655a2b356b4b66612b726c5038626f5339554b714a3839565943587879363145646d4f7367645351556a4e78716836726a6c396d4d6434655079346b5a3969704857764e66384147544e6b2f6566676d432f73706e6b616d71656756357359613258553564616b70424a514f34464b6842436e77413854397074327032695a423379796a325873554b43436e37756e704d5a52555032416f75726e6c7a637467736d734250774a3539666b7a41457842386a45305655767775625055735844384664425a69714d39326850693155636e424b71442f6b70515774686b7034714c36784e6f636c5955425a4d4265786c394672364a2b3445303854585454686d536657652b6e4e756a516851507a2f30775a576156547579384e5457575468776d6877672f774455674e2b4a6156346c5931744f62514f5a6e4e374c4e2f4a61444e477032397155434a687173575042714e7a69524f5255393755354a485161766a2b5151654c316b4c5a4f694f486b484877536c62506b5a746c6339514457753675635a49616843503841313145356841644a68476377745a2b71614a6d67706f584c6e536d6e6c4c56456f6e6439795858485131664a666855637a574a3463374b3354314b594c5a3645483850744e4c6b7a43786f4d3266747a357353556241566470577a7964664a6f736a306e55644650753675595a6e5372645050726659352b76596850326638414a7758386b494238373336476c436c6e7a2f49656a543139585a3655322b77336147644c78664e47656f6871594c4e436f5774636c33786d7634544c767a5441427a504156646a665341726f62625a534b6c554f7a6d536371347478726b766e306834305453755536576b3868497a4d6d4d43666f5475423371642b314e696f5876535a5852636936354e4d4338766e5135397a2b526d78306b5055694e4b3172447651644f302b7a55554e4d467461722b675a647a35324b553669384f315a796741542b786262474e4a746f6f6c6b7a73395879645355713175576b756d44675647355a636f4d7742514f726e4e69684d644f57656c56745133314c476162756563334831517a32365032506b704769786b4c50386c7831326532593070653969656e774973513656476a747a6e6c36627358324e7158566c573565687a696b4d316f7450727a6e6c56525a6d74574c506c726f4532477a334a61416434414c424b6a46594d396d6c7253454d6e4b57303378554a62514c333868754b4f5658573436327970374c6f5a7148427836672f635267302f32354a735a6d4f6b34447846584f4a305a574a3450645a616f346138345933774d466b5443584149697566715574534b786349304a2b495841356d6d615539724144504f684e45536448766550376e4f766e7a6a796462734b43546f364573517a464e2b6d4d715a3963794a564230722b564a6d626d4a636e7277576f667a5458456c416c6d41725453577533782f73304656304154723055305449343457664e5653775675427a6a2f556f6455327872572f5865454d4b76714b70575436534b516e5370714b33585a7173716f6676616965736b314b59376158574b586e744d44373151384d45794e4351333934414a36755472687264426158574e355330612f5a393951544577785766794e6e7a654a6e392f384b3550774177445a4d34544e36456d626b7547504d4a522f626e696641316d556578636d56575867357665646d357153443935544336686a6e787337477634445732586b79542b5533415579684d45386550694b2b3951734275786b6e447034322b32724c765057527a3731505859746971644c546b316348546b7a5158487163304d392f325741365948632f33416d714c337a6c61747475633934734c30363832445738496f6e31696d6c386d385165724f75792f4733365636747339576e2b4e68326f3357684f6433795a347971506e5674536b3741482f414243647930596e794539727469734537625a4e53796d356f337a4a342b6f654f356e2f665051302b4a5061417849457a6c5155772f74517a2f77434874454c47544655444272597667395a70365654776f74537a346172496a6d6f6b4779596b6f70536c69436c59576847706e746f6f434d30684d772f6237552f30436d4c417a396659504d6d716d546344484b4539444f6a6d7645575675644d524d72444e307536517044396a776e4b7a6e42385154483765556777797172693064486c6a796d6f6c7873716c56666b4c6b4d6241325578506955712b7161584d344f4f37674350416453487739397179555678684a7061303645647a72564944713964792b686f706d306141373130386a625235434c7067574b5373426a45484e78787a4e5a30466b62754e44474a476371395757747972575131304b3046544943795a4b58314a6851692b686647645a5a32646f3971717235376c45503635785466317a6f4657344847384473716c636f3148686f417967633356656330346c6d784368335a7757353343585a496c764631394b50357146646e56533877416a32496f722b647a737752347166506e314132426c5359732b7459346378556d6a385331707158376b2f4b4e4264542f414b54354d4c4643372b674c635646484d584a586c315a764a416879646844485550764c675169502b324746383873367175697674537a392f57652b73544e514b732b306947536e6a33722b656b4a583831464870614774396c534f3036515275537a342f6131667750357a7673596b445853354a4f507639413935565376726b38666e72706362324d75426a52636f34452f6135544e5658375733512f3631687859645a3767306c434830357539515150492f2b4a6f346d496c534a365163304f547764676561714d38717a66472f516d63784d70706a6e595852374f376f7035377754396b2f32414b6d67314e6e7a776e46534b7161564c7a557458694b565730796762524e62484d325159793675636b7562783767553669514f4d66374a67414e4b766152304d38706a524d396464523371376e365157504a45374264312f786a3849697371756b6e367a43467766704658582f5a6f4f4f4855485a7837486c4369596c2f484e7935372b6b4f6c375a5572544f6d595a6148547144506d6f2f6a526166484c2f514e39782b31692b72573651754c56636b6d362f694732646c584d3572354f5361476a526e7547566d6777585a35745a4b545073646378667564333670677676534c712f36426c7978724932475378727052336961714d6c424a46445a746a5072544c30366c6c795633744565454845735534552f44554b66615a38424b32594470632b664c6965704d4f645136615651752b7a6f66614555304e2b774a4332736330696631667a307a574439597a7139676e557747584b6e564d58556354584e445467524a554e79776b744f2b77546f55756b745131304f352f6b6b314c63306939352f4931764f664e2f514a5678536c4e302b307733757a61524e67793661796a632b7459705233367455622b75642f4955526c787a47436f7a6348766231496b4b51486f6e796e3243747935557a353468386b2b57566b323747325639525654697175716e684c5270584d6237306c7a2f7349352b32746b6d57596774384568564a35333331495032585a2b5a4a316b736b7448313035776d4d4653346a576c65546431614f674a736b4d334e636b5a3144376779626a5a536564736f77576a4c32785550574a5a624944666339664d76366b69394135436a355a6f4654774f6b704850707039376e644e4c6b686c4a774934314c79784b6472564659724e4b4b6a7655554c4451764376744562506e7153797250576c6265666f3273443370557a7144442b6745746c634857556437424979694b5a47654f365a6341736f73704f5a6661324c4c6c656a356a6a586d7139702b7750625548486748464153672b7031434e694a72526c744e42546c6f6e4a6c354f53327355344f6270635a6d477968646c532b46534a6d33732f65384b6c487345704575482b675a6f43444f69716f68436248765a53306d4c73704f6f46746971584d715163773071625a43566b6d6761446e63426336426c2b7854483754434d6554396a31657a2b5036364c5442526a5a44464a70515a326a6c557437486d6d7a4c455a656a3935575a2f4a6d45524a434f6b4c474566576a77464c64414130746258794f5078395570773752384d324a625571465762354f694f4a4a467a4f4f7137685a657368503242446a6b4f345a7a63392f7745336965544f4d38417550696a2f7133496a376d335853305a4149446854365765633550375255744d7334683359304b4c4d745a574e71637667422b71324f4839386345415854345a6c33647475374a4c48525a3147562f4a494371514336795441646d4859733069314b30793157643474612f5963756b436630685375422f56743976454e2b65443534315371717a46736558775372314a6869414170577235706c6c2f4549483663712b35616570616c33325435474653484b6f39794271426250537541344f4d5a70437474576a41486a3155346d362b5050305878705a39427530746f664a54482f4c634f4956706b714d7a36452f735531536237357a6e7538414f74394f2b47392f48586469306d3570536a715a326f6d56324e4a6c34576546476a564b727156334d2b4f7977682b4770514a6a2b616f623179317341572b6643415048307744523971344e7853634d706c386c67352f4a327666466d51776d574f313650304e6d6c557971507658763658477a4a5542537a695331484d586d4f466f3477474e66674c70495679653151634b6e594f6250665934617a7a5a5570756c2f376d6579766d546b676c3151734c6a5a36572f774b356a355363504647393535444c4838492b63494d7842756a74756f5231334844546d794333744b37725a4d61663455493073766b3958456461557655756b6349542b7842735170752b4c486b4333665331476179576568457248506d30637958364558632f634965457359354b4b63394d6a6f317363784e4239724954537a625637712f59355a6630393535426c34313448466c3571486e79624e70304f3664576d574e4d5647634556672f77413138444a2b314d466c544e54505a4e7766683473416a564e796b2f6134334c58376f6b574d2f774163384e686573465a744e565a7854786c393334452f496a6d52562b2f735264304f645774376d4530306c3171666670544d4e53472f384f704d7a50576369535165482b50513655517255526f704a576a65554c35553930396675684c31553978745a38326b4c48592b664f6b675068712b47552b4770797a436542453663484b5635454b705a4630575932684250453562654b4d6c7830446e325661796e52736355724c6c70357a763736766e7644324f596e695966366e4d347833426572417a465a75664e704757644e6d6678305a75354f397756476c66314d4e546c78786c313144432f6b41357862663067413931484a6945314962707a6e50454c3071676d3057613861462b315a794f72794371522b37517a432f394e6253325154567a4a3739354939585278614647615935324e6b555a4d675036437575676e627a4c504f737035486238674838554863697832545879707077556355713567316147647a344f664d4878477750724a63496d426c4d326866727261794a657159524b685472414f536437726d524a6f4e585a66726931774b7a374f714b6669476941484b5267496b356a515379356d5579357939472f527a4a444856304f7933647a4a3038374571574e7032416d336e316f5264376131505a4b35794766726739534b612b2f304571693746635952334f4c693830576c7749364f78534a362b69722b59396c7a6c6f5a566e6c6e2f7741682b78596f326b796b354f554f5554672f6f4d336c6d68615a612f56364a4c6f62546e774a6d31314531506370636958526e307548486e74314b75416b4546636b695439454b782f7a36494a6f35376765686b2f5458646b7a67334e7a2b535454636e35334e6b7070705469696170707a6e4662666330556b457741664f4c5a2f6e4b42334c623541673253574b44374a54727079755644306f755464636155396963314b4245675536643354655164423141546b32514b576d415a2f412f684658354261346b484e70496568364779486d2f63355a6d536a6d686c2f414d636f5a7638413162506a573733456e745534754e797a49455a477839505a34356b656c4f537165354f5975476d5956676c5572427058336e2f4e5757366a6c42387653522f494354494b786d2b583967317a38796a4e345650596f335141594b3745554854723777754c57326458565747725556306566427a72574b5954556b6a6c486672784e636d63385a47664b4c714761525646616e4f715a482f70544f7a35584f4a55624a63314e6444676f6e7a2b334c6849532f30696d653958554e35387161514176506f7938582f4c6a594d63365661307571452f2b585656396d5848555063764b39787558794f566e576434346a6451794a737a542b4d7a55455474555239513636676e424e70517651786d6b736a78364741726f722f38685a50645250384139644d2f52554e66666b2f2b43633966792b39674f58396f783464676649474a36747773435330686252326f6354736665763073657a513579683154756961705765342f66383354576338386e5841395a554e70716f54777a693464526977716445417358486f537779795655786f362f4e5a2f4a5172594a55665a6e506e76583876743747722b67594e65766379614f633072576a5679745a7230424f7975757857747049724936593479424d2f3034586343684c38737a5742717061695978596b50796337357a4e376f61546f6e705779793272736e7a535456674e686f793031756134714744436c7157636d4d7a4778704a48354564616f486e576146304b6b4c71397145793671474536797271354e4e744d636c5932457061714e4970716d464d4671507267696b444e6e7a4a42677141524646437871736b6c4457393765366b2b6755384e4d637a6959556355697165724a37426251552f66317878674832535453376f384d657550554f6462742f6259345941475275633264686c4e7247365346644b366b386d355a6f79724d7331712f6b353068417a4d38304f636e4e726a622f41454131656a35524f35724871626546503131584d676a5a44526f7a5a733331365a4c4c6b7246666633504f4b7a3556397a67666f44622f414e512f6d6d416e6a43755054306262667061442f6e52394549787a3057366165733974534a34653561655755463971784856745a7869573556494c492f384143696343363239344d4c79634c39544e6b5837363157457757543168504c79735a62466c78395469304935567549665959526d4577663630724d4d5949335246515a5463626651746148527258542f366a31376f34374f4c6b647043723569766f536176333941796d73542f414a7a65342b67443238776e53696652302b777571503841552b537a526433354e714b696334463175706c617146664a62306974536741464b6a6e61625071424e336f536e6f48306d314b2b51526e6a695069755376513274716a5971734f2f5a5654316452734968554b7a3478665a707a637676314670614559746c486f54306c6e53386a6679726b59374e41415865364d5658486c476871574238674c306d657a765a757172576c50786643684d343844354c5a6f54334f6f6e6d35546f6d6c46326962614a316745744469475450355832723946423246647a4f55317a704f64644d5a64443451443477536c436b775262396d376f584d6e586f50556a355831766f726e4f655657624b512b78693437484a6e753674464a3850356565326751347348585735736b726169654e756c42565939744466707556796d696c585a4d767171522b764377352f647a35783538496847564879463766707042767966744753726b32717651704c724442764c766579717470352b706f787065697a697250624c5a5774524c522f7744537a706d70423373637449455a7535596b697570624775496b436b432b6d565a33384a557245474f54396636387170374667707661442b735079435947435a423644574e3862534f56553156636b73362b5544797072784470746d46425435783044565651596b4a646143464e4645784250377631453367594c72646e71707031633675654c6a367a573533737a5845784e4d665a376571626e39663758725a42785a72702b597668624f496c3745722f414b41356f496f79656f7a32565a6c496b384c7a707459724f5a70412f4f574e557975396f555075344a4a4a61532f3166716e336645355579763642743854714569304e5476762b6e79564445496c79417056396e4c6b7a714b75745838424c2b6e714d354958776a2b757869617541307a5341426163364a41664c32664f6e78653644614c645871594358636b36355830482f41426f4f396c58362b5955756167506d556d446a564e5a3161653842436854716c5761795a716f394472576c4d5230495253764566526d783055517267544d5335324f79307246416e376a417a355437446238314148557732644542595659774b747a61567331454b706f34676d2b35735655774f5a616d7a6a4b7662785052642b67704f666f424931696b67476c6a6f71414f6e323865385770514e6e5a6f4c462f306575503639316b6c6a4375587850312f667a67715654386e513935306c3775414a71376252384c416f7a7368654d676f712b5173654b586970576c544d594c6c59396373726e696d4a5837397a584b7070346756476b7741457276477a70344a7a355451314f4466584146655462626c702b357758645266585179553243666242506771427743387a6e4e48313067766749703362386673736d795a49327976436253305a2b4f304d67567a36656e324c4e6d3253547a2f4143615134585151776a70483572454d372b755369414d474f59627256594e5632304c6c36482f646a6a2b5a7733666371676553546e496c703175543252393670597941324e4c6d4f482f61705341464f62646c3565686272735648597a6b72417875465731764c666b304a656372433550537a5a5a324f7a5a7a70436b674765623541634a47307a427346735356717a30785541702f4a70685a4d56476f686a4c41735372714870714c6c6b344c31757a6647746744374b55794b63706f6e4d34484f68424279657638416c3658627468573569724a6f4f736a31534b544934456570704c71632f77433977314f6f54787a656534446c4d456e376575414131704354617932773746714a645a66375573552f66635434637a526f564a41713156457931585a7178616b696c2b5233737164386e50734a2f516f36414a3570616577674c316d4a63745a6b7876736b6c6a546e51316148503463746d43646e77306153555635325030655572533374446566704a524c4d4f78695043426d327456632f6d484f3061544a7646536f6577695775472f4b5869305479754e6e4a744a67306f6a544734654c6b6376704a6531552f374a674d43524d62494e477252563175573265725352374a632b376d557966392b507964376d314857765273616b35574b67722b594763662b754f514b36446f59304d2f33667278456635525739744c56664a5052667949366c4e733976433553696c615a6233396b703752774f322f507a326349654e416c393934752b536251474b70585772787074794c755a64645852564e53352f44706566563532544469567a5a644c356c396f57756b77636b314b46532b6f614d33444c35732f345072366b516337384d724a645851364a353057686630583947396c424c6d7863323242627061537042796f6b7a5869434f2f77445561736c67552f3658386262664239503043577a71616f664e4e4f673941386549624e695a4b4d2f73376c5a2b344d37716245325754426f76577958577157766e6541626452496c33684335764c414f506b6b74586374304c2b655437753753334f78304c6b65475535327051794b754768586b6c5846593948624b43575655302f53704857617072464b5932684954534c7776465935682b52506f754456363258466854484e4f4f57714e32425978656c6f2f4b366d6839674e78466d4447614b6b2f585977486878704a434a7a336452615746342f376f4d6e50782b68687930326171665935583234356f737339426b65756b453038617676326b776461727648647351686374435158386e6535576d33536534476139594c596b477539456e7930744c4a3130387562336b366455467a477458596c664344714a644a64496e4e377a367471752b354c55314455446e6148553552485852784d63634b35706b764a2b72374c39565179774f43696850577465566d7a50332f622b774a445263396755534a5432334c752f4b497a4d314954344664764c71654b715462715272624b344e562f64626e6b7346756c56536b5073314e364d307230696a696a5447704250414549654f776e415458465a666b55592f5336782f536c6a37616c55783035626332716653593261726e36574750416a6864454630396155356334527261776563456878643636327749702f6b7971723255512f4a546e44493267714b5559334a354f534b4b6469713879506c4b79577454536b4d6a64537671523443616e2f41506a2f414770746c56714d675063565153736433574858486b4e44346e6b36782f4c345072352f542b55366964395a49435a756f617843776d59327775376451563136335138773357527a4230754d79627554437369717164332b523639743265317657437272502f483163644d4239457541506359482f77426338393570765846326a6568566a43624431307230464d4e4e67692b324c3977526a2b33382b377833754a726e4277576630434c726766524f6b57665a6f7147534d4a334f766a6e344e6445303635357851787673587933794267744c72466d50593072517a36793039514436463772753276546c703030543350597a6f6c48546650544e526c2f5647636649456644543057727549534c716663706f6b5a43786a55663044486130467670474b5a5a6372696f464d546e30436c4a5a382b6d2f4f415a5753773963656a586f77494a6a614442677364782f4b466d723547417a56354c33586c6f5a6c6455684f5274783971357952587a34717a3547395055716548747051366e6b333659445464312b6d52557059726e4753673030507163475a6b6f706e367a735441512f6a50725a784e73434a446d6e79616a7474777a33644c6a515748764b51526f3552775646774862664a646543624c35554e4f5a527374566b4a79354e427644504f2b6435505446584b7a2f706641754e594b62396854466f49425744473865623344506b474c74567a71617556313536744854306b52624273687167364856573547574b6d75796a663971366651316c6748794453686972696378724f72544e474475616d62676331566771643150487868517a6c564c5836446b555a726c69524e3662614637454f595a664f584a7a533152677a3745706b38436f4a67735a6d574c2b496e553256497130487a5452716d397450664831366131596d624d363078644c444561472f77436c692b724c342b41326830775a5a557576575271636c31326164515477314972546d504c59767a30315a764c58716239696d5642585468326b76393346313950715774542b6d41657a7537447241315a354b455461665a55506d37666e664a6c364b4158394d4569364e3636625878457159322f726931436a3972597062654b6d434970322b31496c586e6330716f3664647a433247746d5579644e44473577796c50515a747067352b30417862767364556b524650614257745141546f625a6530346259586157787978534b4f70746e2b4a36454b6774712b6e7a514565676a7146756a4c7248675866734c49456457782f55677446326e39356b456d36797654314573792b31506a374857576c526253556446594c2b5256544a7035746c4965352f51347561514f645070645967424b365761302b6f686d576c326a67796a6f61484561646378717476562b3049437567476661594b757a6b6a336349436d75584451394979735a51424e6e655852664e414d2b674b766d72644e51705a75703474655938394143624a4d75536a394e785642315a433168494e6c6e61656d78763841515268524c31456579363759566e56584c774c482f627370596b66355a2b4438615a54312b664f67747a73557675596666306963576452306d76712f6f446d67722b4137714f354972723458484f3772524376322f5030732b626c555057676874673465684d50755777314b2b7543462b37706c544f4447334664334e6b56493161735734302b3258516b52317066516a6d537935726f573937546f68486c56633537754c39374b554b363870306436796669357671494a72376d7544377333787a466c316453354f68665278756852427946556e4d662b617231626c557939677666465a4b316138746469526145346a326453654b524e647648634a4a6d2b4e524c6c4c544458445573314c5a732b6a55314a546e5139794a4a4e784f614b4a596d4e6b536d4362704b704165695832414d3552654c5647333238526c4234362b38456f3756383263372b46747263365944347a4e6955395057756e476c58374a7a4444706b6f514d655269504a2b6851373256444e617443584c31395336724a702b4342564c4f6c6e73354b32792b3252335971494978537654553975666d385a5130453934757746476867386f49412f4d3337635368656c71435959773954796c71326c54653461714e4b50496d7937436232764f675a5041316a6b746f63494b574d6e374a512f716747444e597444537a302f4f4d64315573396e594a336261705a55676d716f45744b665342646a755a434c5745774152776e392b6f6b4a4a446356414c5a576b6a72326163556a67545a2f4a4e4c6b75693267722b653351542f44794f305a6c4e546e664c4c6f314a6333346e633454306b4b5136434c41526d33493764427a38385a74436545354c517936553252466d5a4c6e374e736970724259584c492b726a31576c3778423365714c6e454c36397136674d3133616866437179435456594a76536e565345362b3655476a4457304f4a52617a6e732b424358574770366c726279635a2b38596652377959783367553374364e6253326649394b2b613256655859726b626b36637454764c4756306f78534369565a4f782b6e484a377a642b756c4d733550726f6e6232635a2b48683438516268715a484e5232306e624c736c7462333248464c424c58306245787446715536505775584e6c514f465879634d484c6d34485a6c63347444616a344a547a3730384e44484345437056642f6b49315064492b692f636247717571432f3841784d614555724673367150676d366c4b66597431676630456e59645532616d6c6b38736f6852447148336a72646d65696336654936444631307a6b57656e502b334c786252613371714766384d34302b45446566796736624e675a32523036616468614e4f5769517968543269586b385333637451382b45324c364c512b436877422f6f6e667a715372554144724b3535744538726542566b4e4f786c594b59654337745337377935426d6a6f30384c716443676b5443414f4943454f4a572f6e3033643673512f5861436f71483044314d616a3556514b754a6f737a32455a444c5338342b75446d56654763376a2b4d5144302f77437879457a71347a6f6b434f5552683345566453446d555064533164594c622f4961515367742b703376632b67525157634b51446a7573615648522b6344547a76564177685953394e527466307172616162354f694348496858343847686c6e7830394566736d70525968537a624c377a5968565a71373172456459426e63743163714c4f7a614b6c4b5772477266474435553239597856346655712b4968596c52637a7061436f2f592f7744304e4f6c4d36784c674d616a47597a304176473075636a305a325670624133794e65652f506e4570485361396265324d55696c65507a7235537367744c6a52624f59715838583637786965547a6272507a416a2b626e79304f6254544f6d636f6c376c67446d7161336a41744753653674365a52364b6c3261465a69716354655032484d553954756b644d374c654163494743694a65676c2f564a6f476c67647a73354d34336b4e6e6b425a4831526652786d64474a786236444270734d513537752f4e786744796f78774e694350782f765a634e494736584a307831394271616d73674f4f694f56354959682f4f7046655137713165775442394a632b4d556830363757696430783379474657745670546358673478345136354559365132534e314d386d616b636b334f45484246656571786a30434375453572574c6377774c35627959327a47364239584454534c75357552332b485a343474587863504b656b484a366e477333526b3075394f75774d327069666759355a66424d3878724f6d6a2f4147564347353936783938326443514b6e4b527a5943625078754e424e6646343333537a4e447278595878395451745346736e3531656f736a587a333072524e635a3575674a4f626e62564b736c7062557a715034484f6869616e494b425331686f6169356e50533479746b616a684e3476716b644e6f48505130554e392f4847732b63426275746a655153786a326a6d356474577a537935756d2f61573953557835714b2f74754d4468716e584e513976424a507638416654777538705a772b66314155626d6c574d2b65585938307468617149467441716954617570397568464b41546d4955423746463969687a4266325264426c326855774a4450587a63544e2f38586f66576366537a63326555494758555a4143616d5574766446524d4a4263493648334f646e4650745a556b512f334b61336c6f7a693250587269497a4c764235587555654b5a7061754c6e35573233783755765671554b356d614f6d765a566e4a544e4c2b6a625546574b4263596b696d55304f73364c5744396d6d4d52747a3335453962506e2b502f414d62694638363445324d58544649644c594a595a5a6b77364e4e50614c4266627a3738646a5341544d3655336c786e2b316e5070786d5a367a6b536d34646d686d546d564e6662466671616d612b384b5a595a36614f58336c4976712b527461723479706f5358506736726f302f4a7a3338357853776a466d7968452b506338575268546a61746b6834764139676f2f6a713356755a4a59496355444636797666785a6361376c5239506f39497741424e6967374a6c5258316762435458466735595a716f4d556c6e52617349365071554f6449663055316f61344337396c4c7758336b78633431494f73764662697838756952527041316f6a504c55634b5772323039716c563748437a6e546b6d2b6943552f7469766b354977542b4e587845365a7a6d6339513555596f5a64304c75776e72364d705a6175536b6d6d44545167632b3534575274596c68397146696a4e307a46744269462f574a437a4959426e4e7a37526e697155746c645379726b303461375a50722f62726a7a5a4238676b6f6c79703152657966507351734679453441724c6e372b4d69446f414e7255375247596134622f4565316761444b37705855776d6a496d743047494e4e6276354a69386c424c2f64663265764e33656d625064336e4a6a4f5978314556356f7a38327134644f2f5674494a374b364a4b3172575449376134754d3166767a5673366a54366c39664f385341635631414c562f724650516745306147546f494b62734f67346e78614b6f72714f5a314a44506d38566e4f36696f695532717035784131587a6f6d4a5844366e374b6b45535036426c376a63706f536f39764d6c765931416a5930526746384e567331693742766e63534d6f4f5338495a306f70452f6f4649667970347571734a4a6f4e6d5239546b704d5332354f746c784b584f4953746c444f7a64477038347a3149376c61584d52746a506d54384a48386a434c703047684d77522b4452796450486872696e72304f576149596564645743416d6c31373364696b2b5142656d684e446f3351766f2f51304b59786f696466384169667867364b36653056714b644b4b6451575a6b7173336f756e6f51356a585432784e314d38547a36696d303353665950673266765057316a534867442f51666b364b4d396f594b745447526536656f2b2f7243306b7850746f59553267782f49365065715a6d6c6e734168576674644e775a32494766684130463962797533487932442f4467714f464e655a64706a32426a597330664c4f2b4d64444d446e743756617976696d706f644f4a63465a64705754443451413366354d4a7a5071786e4d6569537455793354447952343870586f624e564367664f6b73345073534354306936726a556f6f6d576642616768444a766b526b31756e6e643539765779377432526157587a4664684b56424256334d4d3676685872544a6e33456532354b6b5665796568767a456f564d634d6559642f6551476257364773724a696e5a4331765a324c73673867656147334b704f78682f50414b37495874365061676f624d72334c61624b692f6f49352f4f6e546f354c4d31616a44374254477a5337336a6e446e74507969564c4f4a6e4d364c6c6c492b7a6b7850584177772b4c6c63337355706c76672b763642537a5a2b424b4d335561334f6f7a586f2f374d356d657461352b6c5849724b7230707737372b6c50334a635a45544a366534733679376e3945666a71457274664252536365323138744f6d6574744169495032527251326f48514e6f485049727058524e6352664f3850306f515638663754304c4a372b412b3036616e36717a59424d342b5074524132635530737a516f347a512b646b4e7177457a6879714f6d4a665a624f7163416b6f5958654a4b416f6e665678304d6b51357a72755a4d752f7257555a37594273704b656a6d664d3547662b79766b5a4c41353345736549794e6e34376a486d517a38747478327545444b337a444b6e6b696c314f4b75304772726f6f415a362b53577936587a35585636485a6a6c2b64746c633866615459465065506861584f635345785069496d5a78416b75646e617461345a72637064536c342b7a51714a44705732562f77417976566a506c46355652412b4e6e63393546786f2f4b316458516f3933374965774563386b6369524f4c6c6a79535454324849746c6b486c736b7054493138563157626d6361306b757a39586e5747587855664d744a4c644d734f39424c54665a762f526652516e39526f6f4a35665254394a70485871353871543635726d54496c68376f64615954502f354c397a7a744e744832416d3078305258424c397045644d3852576f644b547865575a542f484f6e557468774e476d634f3972347a72654a4e706a33685466435873494e513954526d396676556d725761785a2b46654161752f4c68654e753979312b57655635796c6a66726554422f46415079537a32707167576e6b796c4838334f745a59314e6357736376434f4e7046315a32666c5a5467577553523264486a36454550557266447061434d6a59314575717a79417a5469532f6347706e50627846553756646a357a537a6d41344b57335a35684a4d6a7836634b786d58486d683745644472492f76636f766c4572313239656d6d6a696f2b733078765067644f73432b76785852584f456e4257335a3567336e566c367863683554325875697a79447334646e65797168664e6a57686e304a2b635a39524e48492b642b4a5856536976755573562f584e55376d5644314b72303535784c516364475835464c4f5368626c706b4665636e696d664245764e6f58326b4f39653154476d33393061333735314938496b4145756d74564e35426a4c7043444a5a545a5567705a356152636c4c7473714b445671497042596a39473148755a4d2b6b6d7864563368787638416e4b66366a34724a3056582f414c68544a68564f3552576941595a335a78746d79644a556335386b30524f796d6d516765336c4c4f794b575845687a6e364f6331733535756f48583657704569466a4a72694b73507457485a6f68454953346a2b713065762b6c5263466b7264424f68784b757a645071794a522f445038596e504a352f594c457748783643645764576c507930356d6b44475a6b6f47666375345a684b4e665872657a5338676b6e3971774764594f587757385374704248667742374b7a4130493739664b374a2f47576765665432396c395a4c7435544c687864466a67342f736235714f5530644c72586966736d463377704176366752766f49566d364355797a6e6662622f477a75303764452f6254724c50766a756c58514b7175364250356c4a4f6c3746446150626d7141353065314b6749777a777a50444f704337614e366f4e663678726c2b645470632b4e2b71364f7a57726f363166632b6d742f5a334f5770714d6f706e6370665348746d4d353464512f48494e744837517251584d2b2f6f6a6f5761433370306a536b456b774a44593969476b70576731546a466230457343457576446850674470586e533457596c487a78554d66566c314950536868714c556e745a53306b4e3041624e4f5252364468583266684a756b2f5a66636d42423041517a4d35573972312b554c326542566d646f6b686a79755652763647706f446b5770326261633854304574725866383377766e393631494e6645752f524b6e644f4e76634754396844716d667774644e75626b5a716c303955392f4c38536e524b612b2f7079337a5453554b4a4c6a49654c35595172353150796457496f62416a46576a524b657369337946724d79514e4171474b2f6c71497554516b694a336670314e34796d324e384769686e74354f6c34776b39494736684c553235505037426565504537734e6d76314b7771747067374c4c4d313051647258666f307a61446d5159346a4c4d716e622b4d6c702f5856726d516d5a5055724d6d524763384f6f6c476c546332394f596e4d4f6d5559366161767666784c76314c6e77366c5256784d52326471523433574d757239346b6c614a555369516e2f3658417968795762332b47706c4963356d6e597965476c6b377330725533667731544b3550655831756c526f6f7979634c613343456f6454332b5034336c4142616c68723077673858374756626b50423532665334542b616249636d4a376f4f7a4277784e344941314135584a754e4c7143377961493154333841793163344375725252312b5a4b4b3649623076524a7179732b4d455a792b6467565570583051696f78564f536f5648776e664b703779557a72494547336d355069623057444e52644c6f617751356b694e6d6d763258545a2f4d706b6343746a45486d504d75445262533533796e5137366851716f474a787a4d3037666c675258796d7a656f7178636e50785a6179336f354e756a4e7a4c5667767147496d6465354236355472357263525178556a48664c304f5442336a5a6c76624f75314f7a41666147717247524873613135574c37426c717437334c6c464435367453657932565766454b553872457452706a376c66544e516578716d64574b5832457a7a4e5357645a543575546f674c4e4c4979732b5353385a575a5a4d5557352f4b5145642f4570314b3158536c38724f4e656a6c69782b337a7165424a6e62753366622f6b4b2b623373786f716532336e6b364d4a787336756a5043734d354e747355304a7a767a72442b31717a3131513049622b6c6d5531425474715831664538616665495a752b54507875774e4871496861724958446e307a3244506f305876732f656977382f556f3668426f667a735358645a2f482f37657142624f71494e42414e5465316c304d66706147586d7a61695a776f4a45747a5555735369624c7a7139444b67576c547170352b3572432b62747168356e72524b6c594577754270702b53476e3572523664613038766b64666a586b506b714b66466a304d744b716d376c2f6c765a2f486f4863583271645568644f4f4a7855383746336e596c4379597574575756616d4e33486f4f6f58696d444a346e3452345836635971346e5a6e683266443478576956756e496a683979626733646e506839364675314c4e62787a5371375131717a2b5650416570346637624d5a3756375432675531664a4e4b4849432b566563786f45566a73796b335544754e6f3170734c59316e57387a6c4645666448735454554a435446645a475a304949474972586278334350654b5362766c724e44636c3472747564566e3858633670767854426a784250326a6b707334796b325561714f4f456d63613165496b69704a2f4f736461334c6a6277794d2b6555426f587835757053327653544a4a62355135456b6e45726a305474356c77546f644b484b39436a48627964645057644a4b752f77437871586770796e4c385061396549506a7153555653514e6770305a734a756d72544f3668446b7836474a342b44324d75476f4775325a313574754f33764249695a4b6f525a327079527a5270333841486b324b6d79614473364154586c624d2b4c79777145314e6730527668756e675239354b2b746c6c7a722f744d506763345372317153544c6761304e784c53757a4e4262587649672b5855782b793045484c777a3950635a4f3657664d6a307057396a506c68746d597a6a754c3969516366326572556639595a6e786b4a56366b30564e4d4e7757554547564a35413671693737495133325a5a3033354b41706a66327a564f4d316e32676743667379467059353155797a6441477862654c5167315a476a705a67555062584c544f626d54394d35625a7561564f5179565a544a444637584d50775766494b6b712b4f514769426631612f616b48787a7048447a43725a556e596d376a75656c713434592b31313372793576637a44417573746d326379614a377a4a7750426a6151452f6637786a4d2b4d676a635762484a4666516f61714b6c67556d58716659715a3064427a354f7374354b533565362f654b564b62566c7a3347766c415549366444587848486834694f726538354563775a637736526f6b6e686678746645702b384f6c3264413564382f786a4171504958334f5a312f614a654f6d684956544a657873392f45477243304a35427a436d547879343265555575694e4d78446a30396d4371612b56366d72736b43585065726968616253566e2f474856716374415479656632414471316a6a7638416c7241586e304437524e4c516d6a5a6564544f6f6f617464674c476d6b4957544455377647716e4c68457056507665796f595a2b67506b3534484f35517a5a6d6f7a506f6d6174333866447035397179314b654d7a34365756556f504e5451763664645330645a6354432f54574379506f456d6f3135556a6e4258734c6b325779534637325a59302b2f4b335a6c46566c76706b694768357243664d6f4678563959514739526d7a683952336e41706d6a745a3148584f51686b36323054553050706f626f7430464e737479496564565150416f526e527a677968545539636d5676767036356946717479656632416a7944515043675544543548566572486174644d6f4f794b5359694b536461566f665359386264386c44465549366b7a75357833656b6b484170326f425061724b624f5a3544526d4a6d6a5979746576304c613672496246546f3176697a5067644b76755233742f61423577414d654e582b70785a326d66745138585762485078464b6a2f414a57625254754854336c636a74545055462b6d7a6e646964707647775a396653627a76515330463041584b5831384e5839547837586d506d5454534e4a785476736d6d7230347a6355317a756e4c4c62446178703570454b753064354a54517232556345563054757155484f76344a5466745346382f7959624e716e4d6c36644e454e704a435756784e624f2f4754544f6978314630636168704a2b7952453266384158534c646231695355546c4971476c6e6b68634c747034706771577064564a63626d6e577a474b66543057714f6f4568316f546e5475314c3577426f57597a6d6c784f574b663674737434443775333638316564546e566b6e486d4b6a697042564971356d583436553956435a454376363475547255616a7078637a32396d6b374d4a714a677362466475655946387a5757315646616448715151746d7779394d4170376b325a526e6c667a55694e506d6b516f374271524a6e574847302f7468646153522b556a675244796e526c385169713162716457312b6f6178526c68527969497478324e566d347230563064436964707668374d3776474b55784848413739423252694a72475a774770625575584666555579356e615750716e6f6375476a726a526a6f484f7037573643796a7078737a6337565551546d706e47334f4a4170486f74646633666d48312f6b4d6f6a6f514a754b692b7750343855484c58324c6e644e52695679785a5748317a35466b36335a306833695157306c477358756253374d4c352b396e5035796f543049656648384f6c546d70536a7633344a70343475547a2f5077706f784b74302f454a59497358736c787a754c547a323276327046526572437172582b6b744a3231787836587246536f585156575a7a6f346c2b4f624b627a37794b7676654d5447326746676e6763373870505830584c4147337230315034592f5154545467626c32626937745776447a3435747176357047667a4c6c34696134777a7155793645724352596e4771506e563871595477614c79617033795a76472b504352386d7038515079332b55344e4f6d2b36484a30734f46654c6d514c536d4c62312f6b6b667074595a6b68756b757270634764506672596f487a32734a636a6f3437505851536e4c354d6357667261575a6c525a4e46546f7336534f4156427143716655313571754c6d62376532753859342f6a425971464648584878777a6d7a694635676c697756385a4a59784a5061383574514b484f6a4a44706444514e2b36784333794f2b614538375434594a4f654930474342557470386358395776327044574a6971502f414535666441666c6e306c3061744c35674a7630526e6d326532646b563137587655376977657667304c6f37512f6a75386162714b676d73583757545a73436d5365504b74664d4447527870794c67776d384764392b635157756f6d357876663248566a51582b532f6d4256464138743866312f55523958385a51334d4c5036464c51735745584b3237544f3270334e504646494f51793846353546703630502f50446359396e42587a41686c464131442b2b4c34517370545a594e4d64666337494e514d2f6944717a434631624735724e6a6e594b69636b6d4d3673574a645167506b3461564231747164714174774b4d687933745772363157685946624656746144394269637971797a5267374b7233744c4a414648384475634e757135516b4d72502b71763270475646506b6d7a70647a734c5235415564506c4f625649396e467256354a676154544779683045616a6f2b7038713354312f4c53544f52436a366141622b703472747a7a41337a70664f6d4e3068496433613471756a507153375136786d676e74756b6d33556d4e6732684f454677674431635979756844476e3866527267456731506b78644c5a36625a6f6f64502b476e7451356c56484450674a2f536137513757696f6e6f6253372f6a73764f316d536c6c56784c5a7752313866537a394c3961657175654f5856537a3249466c67757578306c73395a794e73334f4c6a4b6251393469546d4d4b6a7271534a627854776741314d44744d6d776f3952534b4c7659675755724771774d2f566c7a6e31557a4d64584b4c54744b7877384556442f77436f3857785a7a6c52507965505a387739466d652b436764686e497a437068555577544f667132332b3232796838326f2b7633597448555330756155346a315a413070327565512f50414c5077534e6448493644304c6b707a7166674b53544d36497570674f6d634b6b742f5973496e2f6f534d6e444e796e7170794c6e446f49464c4d366c3775447964554a7a725a6d6a70565a6b624e47704653364c65696230626a2b7a50595a794550362b513266575068327846553467444c583861565569674e5a7956756a6c587a6f6c4368396132784d6e4775303365356e7432757936636e76574c3278506572704e4978574c477a4763384f6f476d3747424d656c575a5366614d3154366d645671716a6b547a52656476575a794253326d6357456a3558666f4b4b6550416c7a6f37777752414954334b356f52314e742b2f5a6e766863454e47544c4a316137703076787444724944446c4476346b6f4b56702b6459454c766770367079522f6f4d4656526b78596143395a306c3069587334756c5a4a626d56784c64396d7064565451586e71594d4a54722b745534416e5a3173706d33693141367a4955616e5765563530795735386551706a614c3154794b7746434e4e4c6a4c7353697162614d46494c347556624a2b715148754e6c4b56744d4d72736e593633375678534c56664c30704b6530314b396b6949755730336d754954504f644f6e72524661666c344d395370765a6630365772424b6e4c6f6731346e5541546673756e526d5a5a7653745361424e797665774d394b56455064797968416649786f444d4263596f30697454514855782f547339756b77702b6f4455706e725352324e64426b3959676d58476b355755504d767573346637457573746f36537550634e6977615647367a676e497963545331646d6a787145752b70486e5a72746d5655716149795736676f314b3972482f613550796a6f6f57736966376754544434766f56525a376a6e353233676d6736465632773837745349317646496f49364d38686e6f34476d2f7047616753763633422f3042306c506e4d2b4d6769436c615968526a546a2f474c30384b61596d71517a566b5a65316945517273306a5a33362f7a6a4d6c77722b4c6a506b595358794a44343649454175696778473962706845637566554262634d433631735a6f79575a4c45384569486b2f457964355a66333949634e4861436e48692b393976396166745057414f3945643269667833793730396f466c542f53507a6258795049307a6d71675734625779362b4e5053323961513076725431384832644b6f35792b456b305563486f4a692f584f633768654278317054584b365133582b52364e42524b6c4b557579343845522f5a355736756f4f61443578576d67657659356a4c426f7157664875365461424c4c584f697a61446a573356447864456c51706e4251554e4a655238316b39716a3570577231654b61505843514b5a5154316b34693731496655723656345971385869374e766b64436c63304374584e6c564f41326b316d6c51616b5059384f50352f70742f614c584b634a6638414d70676b2f492b66427269314c71315277376a55586e7230315830427252303645513956526b4e41784758557234744850302b636b532b3371673533684747643132706b746d7a4e496632313146566d653678394636686535633665543941626d47366b51665549455a4b58786c79482f4b50787556774158334a563572454c66533248546b5a5a7954323952587031364f6d722f76506e347a73712b723350684e6f476674474677536f4633734c3241507a636d7a557155694455597370446454765a7559744d71586d346568633771614a457979625058586c496d7155544d314d466c4475456c4a4c437834353772446c6d6b566e324b3462567178325a636e56766a554e6b675833446f56476b75736b524f42694239654b68627a682f6f75546d4461725074593930666331334677366c614246583850384144683059793545504c6b6e584232755663326a4e2b78565350515a55625644555865715544634d3758386a4b4654726a6c6470782f77416f70416a3952576c6b47702b70695330317a5576504f703433354b79465165774f432b626a653949547041526356693944556f5a79397a2f734b6a514d6d37576c2f637166517a6570706265376e5073777661436c2f46537168387a485530664854386f6944686a7a4430614a3837526f707073626643612b386a6f30666d3149457357593472453649567235655950664656386a464d4d7866495652646631612b36415352387a746569695a6d4f4f6b6154712b47676a6734756a72584a772b6b71625263307665786b37416f53545a3130733057664b3769524a72775830487a364d62544243724774752f693072707373593058795943633931544b5853434853375049305773465169583755766b6a4f636451774d376f397978595830326b484a71476173756b4331423773382b5735394c5879425352552b30655a33414d2f612f334c6342704e52697a2b6764472f695a5a74567251614f456a4b436b4441314e652f53306f6b5571513941644f6a6a684270475658574b34656d354a54736e3976566735304c42676f4c4a30557172315a6b385656512b74674e646b4c6f45637955577835584f443030377377645a77766c554e56584236496c776542443439546c486a3975686a4830525939575870384a4a453137554c67796f30794e62516f6745564f36586665587455753769314754466b336f45484b597a715a4b5130422f69644e5152744230417951476a42376b5a656637496554643049484f6e42502b3263766a36624f4e3463797837554834497a6b2b4f715255706e516653454c47302f4d58753866686f6b7a5968614e515379397a594b47546978704a34454a4b657454446c346b4776334a474331683038586c3163764b7742355379674d2b79456f676e4966684259644e65526e667453522b76305a7839362b645341754251632b5a7037454b446e6832365855667966665a57497942592b565a4c43645a75547055642f5758384c4f75543951364766562b747a684f2f6f507332686e74644d66756439726169473336307563705a565a714268446a436462724d5353763339525938637235514764524a576869666b594741477a417a6e56303345465a7437796a5250375a6b324b4c6837514934754a792f676657672b634e6967412b63343264724355457043412f42616d7a6b625330774e6b3653675a6f4b674d596446534a59466e57334459416738676b324a65764a3336594b6e4c5847424d6e4c3367383871684b4376517238675647757543486e647166712b33546c466462554f5864386b6f704f75663430684e7849464f78696c4c346135432f7742366762565a2f623261664f5444794f50584446493537696944337a5047654f52693052382b2f7742346e69792f795768416f59354d777950414876426a2b346e7a68644351386d766b6e7a4b425971784d6a645552592b325872543048767431455474425858554a47516b38617357306951712f6f494e765a476a346c655871483474424b3355385731394f66527847324f63586c506a614d384c664a565876306e396c4b3375663957354e464b36334c2b596c72466a68624e54614f4d625a374e6873584c666d3757586c625763767035506c575a4476344e68797068306552324f6d356a31454837636c726a4d557a3936796156764f73362f32546645766f3145496c74573349705171636d784c6452326655634d6b53457a68724a4269486e456b71566462526b31733731636a6a446a663338784d36524d4253716556644669337275306e525236624a42704f4a5242456d657353507451423071766a516c344d4b726a2b6d53545a795a2f4f38565341575349792b66564e33764b615239616662787931726a6b6d7a7248364b674f6c7048657a4a715569634f39554b2f764e51584670665177416b4d65484f536f4f727a7561476e4e65536a597651505037316b664a744e37414e4b6c4b576642324d2f77436234455367584d3533464366366c4467532f4d30455748576a716958666b684931517039703457594563724a344d385655382b6632722b475943704158393967653963344e556b2b4175746d6a5769656a4d717a4f4950356c7942556f37665a464862526b496c6a35526b4c354b51396d365245516a7a3556425350753633714a776a59365056386278327072534c784a4f427056724b514f35484b34343969796c4b3459674f7066516f3936776d366a716971643166414c6f6a774770373641444b7a3764436a5337383031692f6f776f4572494a7a4c6f4c41644469787a6f5748564731764f644f7239306c33396e336e787242394c744a494e53364d32435356596966727353615a6b6535456a5848444c4a57497867596150362f774179714c70304478767965366834675a6b736d3862796f766c66445454706151736c367a4f6f6f36796b3354544c654c47744868434c7a694a50796973564c4277464f66573937783148324c7965376d667130706d654c52646f364a6155684b4242466958565a4e7a477074744d2b7978314d61434f71516d687135316a2b6a4565475966744b72526d7067366a73353164536c6b78645350483057533464536a72355542723648544573386b6b5856665849444d30765038412b6947413638655854704870584f7a324c62654263704451707373504c68525767613634376142374a4f71443267544271634b382f6e514536426e5a3050756579664e352f506e30304471315a6e7856474b31735a4b624f356d515a5a3061574b4468484f7a76414975676b4350384131632b546977416937566a787263367253565242384b304850564b312f4f5058386e4d2b4a4768456d706f6b6c6c4c4a53623866523935396f6151434c506949483174314d554161676b4830374878396e7351525336566c4e4f62464c6d614e786767766c70635673795847582f43554f34484a3264456d6944515972506737707147396947323072665432694253484c53394b4b6137584e3632713633676f67397839554c43425458437a7462756455445458314649462f466857366d75614146554f624a6e6d67707159693438696b696550654779755a512f49756c686774446d6d447078396f4933584d5863752b534731585330422b327a75763051346e7433785845746869316d6550483943427749426745756b716b675465645a774d574b6a6d76716e674c743267366a4d64324e77473955776161655479747047396742577169334a4576692b77663168752f593835376d69494f47615644556c2b77634d416e57707167636d68656d36434b7144535a534e436c3968483665664b67316f44673936762f72393530753038444147513233727a4f555878616370516948756b6a737342694264544f616e72656c5474426a6365663547756231544571435a7745493961304939513350584c2f484b52396a4a5651794c6e756e55786d53744631642f2f49564f353131667a713069393665385741676165635976362f66364165366d6d62556c79414b4832447a4a7a7a5539564a767048794b6d5a715643434f697365473336614a3244524d354c526e70633334707668364565626f36376539456a3533496c67612b7979666739636d4c5142306f584b466a46487878542b4e6d732f6a4158646644776b396b49316148415233504a58774d4f6e5476574d2f62764a6d39376c52634f6a6a3449623257436e4976583964627879734b787661573230644a696936434f304f4676414765512b53597775723062756e416c486136716d53445464504e5834346b7a727a716d56427872582f62324d6b304e6e6e366f5632756e63644b52396f417831596756437a6d74514a4f6f2f6b64544b795a34356873627a43643235656c397377614d4e4b515249634854756f63737541786844316a356742587748796e506c334865412b514f4451337138365769625a48463669586378733734574b72596e6d7134636e572b652b49752f476c596b32786a31396b4d653947396f78786a704973565959395768386c794964416f5a486f6a6f35475a727a303565557252366930477151657277705a584a466f69766a436d42687a6f4f683766366f45585852527a364675713734386d504d6b71672b55613732777a48516c502f6b43693533724137784c5a6571567a3347665a794638776c3733556731692f56587a793773326635413058434d4a794964413161454d6d70594c424a36674268424f44456c306e6673716e71506965632b536743794f5439586d574e636457647248324b59426e62564a3264316d6e505070433354304f557a3250726c4e6e576d707a456851512f43584f39442b67616f7364504f6a7559784e484e53704d3357444f5368723379786e317178745252745632394235676a52317845432b4135694f47446b5239414936396367326b32583576744e30764a597038715a7443707933384a4d5641414e52554b476165534b4e564b43344836363456675074596f4869445a53495a777a4d564849776a734f6a343479525247384e504f566b54504a723441397641584c536974622f63303372446b394b435a7778494d6b5932577075726c642b566645353177727a45506f426c4a795153735055595850314d57303256303953792f5356646f425361503966443649452b5a2b69425254355547644a584d2b3665764d7a2b76546e3950724d49536c6d4231792f6b42536d523139365431664e5444785a6b514e4a67426971774d757073794d3557653146624b733933517a586373506962716d3531522f5163585a6f344d6455385a393448764a4b54495563366673415a7279375754456942656e77616c694b7335612b4e6b674175333578597156496e596651597048384f484b4f6b6f3268576f476a4f31623631676c32384b454c6d7038724f617171753835354d7a505a6d635a66486f527736387a42566d5053584a31776647484450764436584f6371656c33655241396e6a766c597669547a6553446e767261733453374f575846396c4634513578504e42665a67736d542b3341487647516e4f6d436b31484f435557664b4b6263412f31507a4630744b487443356d706e376f614f6e5059522f7566564d70356d76363841346841746e36705051703449634951587837557a574154707369373547796670614533514247564c614c6d4e374b6b4153656d6d5157754a7738365264675533356162425550412b30757a737446715a716d5a7853365436435a52483869633754696f56565332646b54546533672b78686f59524d42585358775a656641484f67583747685579723436364c4632534456432f4b6c6e7a47524b7933314d547077356c4271544b553045634b4671347765763677766e41316a776567396c4b6e527a51766e6b68636a4f5633494676666b55536d7a6465354f6e3168643462684a527170345356783063506771594a73454870415379634c6d7868392b3546492f6369306443765530614c7550584970394c4972654961324d55766f6c4946643639537a69587962764f48387334486b336f79774b5a39756d64726d554452386771706f66617533344c484b6f363451354e78576353556344735a71546c743648415978525541735774794a7a75496a55313476334e65614b49795444717777713164426d64644748496c4f58376363316a572f7030395935666667577633456f4857666f496657796d70537a584774386c79445a534d367a56567a764f2f58527a684f2f5152304f4e58486451317a535934484f3654484130304c344d394d504e694f71696f632b643539526564464f766e42665a4f5a387363705a353746583233745351744271334f4832666f477361674a4b7247377061437339745446616f71516c504556304a736f435a394838626e514f6c6e534f557a7375773067704f786a4645736c66494b374b6659447053363563337567764d2f3135694f2f4d6954756248793736554d32644c77362b463879506369755178554866614c4244397557505738574755457665507970754f75587841576161614f6843386744416f4467746139682f49565031334a5131664136706e4a304758586457596d416e5437645064637538354f684e4a547375436c75692b676d5a2b64426d536830314e36505a555864506966636247635663787674343875645343476f7a7264426e6a6458583066784b5932303962324371646962627163385a6332477a504a4935335763307a2b46764639537a49465578495577487441495569336336324b4642795a5139525669563075564e39324a4c4a375a566455746930383646574c773069445a506a6f4f5764676754714641376962335279336232516f30684f2f546c673757534b323562387573636d6f633657745a6f6b61503857637a50615078733547466957636f364a45424b6d7a4e516f377056446e553638584e484d74536b696372686e526e513348375435794d4b6f733658684c57424e36395065764e51643433674f417a44344e2b68505370447743794d53436d794b6c2b706e7130663543777234594f386430656871745477706b2f7743794b5a667943736d45594d714b316e514f66493268314f45787a746564495377385665716b4e6d656f2b546f536a7437624a576334552f44576f59694a6e47734d5365414f6e50747678314278756d52515551617a61363758474770592b6d3572785831477750462f4f614e446b2f7a5266464f64724f3855675747524167656c57724b6f6f354e54653977555a4d6a66734c7a4f3966626e466f4c307a374a567a3776584443726f437a6b7863583371333946674764514e4d69787051667a452f77413032747137646168712b51506e4c7373305772753142522b6a354d31673432364268785856745149703644535035474157736f626b4e7331614e416c506b4a7a58554c5455376c6d684c427338304b784a6469795254326c576b50476b7068394b4258656436422b3467797432757167376365686f576370722f6b4975433575647a3632314c586f707251314973506b4456554438732f65536e37334d50347736524430434f5570584f674e4130716176484a64546b416e6b564f64707a566d4475544c724472506c5972556d48704c5559436a6738544b6b31476b48303259445a4b58343268617565477a4d6b7066707639397a6d55333135396754736b6c4871683548545774593950714763464947704b306751682b636e705674717376524a6f6772566f355849742f59304e3534326d6a536f6c515570737150346e4d70367068544c446c48774c4b676d50353045724d793937394b7251456f3670644369757830656b3567736e75703049373779343158656c6e2f414642373163712f696141796357484f6539504a414a4d6a5a54645477666e53313266577675744b2b5a337855564274397339306a704a7a59663357524758534a76444a5943673552456d694452477a7844477236737a306557544c6378616b72474f4e4b6b3156643662334f5655344d32714a692f6a6d53464c5a6756576f6c41514e4239466b6c596a37633461536333693532533134756b754753672b306d4951726e5a784c6c454a6643745458494d686c50396b77624f6465514e48505534745a363363574d627a75454c566d61456a54386f3245636b596352544f314e3665745361444a76647a7064614a64742f6f48724c4e4757616a46367762786438384e487a6b47635a47334630487a7252384d3150782f4f4832752b2f726950692b3955776c6c37476630446a544c6749597042446e63683864667968614551334c4c4f504c4457724233386a6d7434584f7135616c766630346758304453446a4d6c72416458723347564d4f303641424b5a723379476d3630536a7565744655335749656e7135614b4b2b482b314d422f4744315453367366737442777666544d644d326b7a734f6f72506e66704a72565065677648535a39546e554c6b7a545136636e334c5753534547487969633243517062774159532f553647337a696b7a4c617846436532646f3051707a373156783952786b7631796e6e47534a496e776b6b59706d59745850396e4f4747634c4d5a7a737547775944545432775a51624d787a704d7a72374873657449356e41694f654650736a5774377564364b666b46514b3673776256756c4b586c5130575a755450342f6e41664d7252716d636a736c6c3155726f48665136614b67435333355136736c4f65735764506e36537859435764616d756c6d65795a483065586470564c452b413473354b6c526443616b4e492b36446c7674313253496f456b4c575a644e6e4b6667596f483548525252376b6f544e4e70574c633573727a593952654d304f6d7144506b30456d69576865617078442b2f38665a6e687748485153657142796a374e51555649717254343352544b4d68794e464f784e796e6e59776f44722b39343939534c5571345447634c6b3445542f6255526b30412f766f6b464e4e6b6e566f2b317847616e685455446d37534a77585170784f4a6832536c4239316675365866654b2b4d4c6e4764577451524b7a4f566b4d514d75687178664d317a6977474a6c71482b535a4f686c776a716a5a7a72726c6f31725030626546496a6c544f6f58533877624f4163396e4d573676467348542b5a50597461796541786e615336473664485a486c465845466244426c3679397a7935384f596a2f62776a3443676c2f5554784e617851414f624f555a3271466a566456566e72766f723545687171654f554a7837545669307548386975392b77526d74686730594772337162497375625368746d3577506c747a507351684c5861754e4444312f48715074553942745333503450794d356e49347872656a387a672f2f5a416e64726577204b696d2c20416e6479205368696e2c2041757374696e2042726f776e2c20426f6e677461652059756e2c20426f7261204b616e672c20426f796f756e67204b696d2c204279756e676368756c204c65652c2043686f6168204a756e672c20436872697374696e65204c65652c20446165776f6f2043686f2c20446f6e676877616e204b776f6e2c20446f6e676a75204c65652c2045726963204b696d2c20457569796f756c204b696d2c20476f756e204b77616b2c204b75776f6e2052612c204777616e67696c20576f6e2c204865654a6165204d796f756e672c20486f73756e672048616e2c20486f796f756e67204b616e672c20487965776f6e204c696d2c2048796f6a696e204f682c204879756e672d4b79752043686f692c204879756e6a696e204c65652c204879756e6d696e2048616e2c2049616e205061726b2c2049726520536f6e672c204a616573756e2048616e2c204a6165776f6e2048616e2c204a6165776f6f204c65652c204a656e73656e205961702c204a656f6e67686f204e61682c204a656f6e676b79756e204f682c204a692053756e67204c696d2c204a69656877616e20536f6e672c204a6965756e204b696d2c204a6945756e204c65652c204a696d696e204b696d2c204a696e61204b696d2c204a696e68756e205368696e2c204a69776f6e204261652c204a69776f6e205279752c204a6f686e2043686f2c204a6f6e672047756e204c65652c204a6f6e67687569204c65652c204a6f6f6e73756e67204c65652c204a6f736570682048756e672c204a7520487965204b696d2c204a756e6768756e204875722c204a756e676879756e204b696d2c204a756e676879756e204c65652c204a756e68656520576f6f2c204a756e686f2043686f2c204a756e73696320596f756e2c204b694a756e2053756e672c204b79756e6720546165204e6f2c204b79756e674b6f6f204b696d2c204b79756e677570204b696d2c204d69204a656f6e67205061726b2c204d696e6a6165204c65652c204d696e6a6565204b696d2c204d696e7375204b696d2c204d79656f6e676a696e204a656f6e672c204e616d73656f6b204261656b2c2053616e67656f6e204261652c2053616e676d696e2053656f2c205365616e204b696d2c2053656f6e676877616e2043686f2c205365756e676368616e205368696e2c205369686f2043686f75652c20536f6a696e204b696d2c20536f6f204877616e204b696d2c20536f6f6e20496c20486f6e672c2053756b457569204c696d2c205461656b65756e204b696d2c20556e6f204c65652c20576f6f6a696e204c65652c205965656879756e204368756e2c2059656f6c6d6165204b696d2c20596572616e67205061726b2c205947204b616e672c205969726579205375682c20596f6e67686f2043686f692c20596f6e674a6f6f6e204b696d2c20596f736869205368696e2c20596f756e676a756e204c696d2c20596f756e676b7975205061726b2c20596f756e676d696e205061726b2c2059756e61204e6f682c2059756e73756b2053656f2c2059756e7461656b204c696d2c205a616368617279204b65617473416964616e2c20416964656e2c20416e647265772c20416e6e612c20416e746f6e2c2041736877616e692c20417374696e2c2041796f2c20426962692c20426c75652c20426f622c20427279616e2c204368726973746f706865722c20436c616972652c20436f6c696e2c20436f6c6c696e2c2045646469652c20456477696e2c20456c6c612c20457468616e2c20486561746865722c2048656e72792c20486573746f6e2c2049616e2c2049726f6e2c204a61636b2c204a617265642c204a61736f6e2c204a61792c204a617964656e2c204a4b2c204a6f686e2c204a6f736570682c204a756e652c204b6576696e2c204c616b652c204c657769732c204c696e64612c204c756361732c204d61726b2c204e61766565642c204e6568656d6961682c204e656f2c204f6c6c69652c205061756c6f2c2050686f6562652c205072617665656e2c2053616d2c205361777965722c2053636f74742c205365616e2c2053746576652c20556e6f2c2056616e6e792c20566963746f722c20596f756e672c2059542c2059756d69656c646174613a696d6167652f6a7065673b6261736536342c2f396a2f34514159525868705a67414153556b714141674141414141414141414141414141502f734142464564574e7265514142414151414141414b4141442f34514f4e6148523063446f764c32357a4c6d466b62324a6c4c6d4e7662533934595841764d5334774c7741385033687759574e725a585167596d566e6157343949752b377679496761575139496c63315454424e63454e6c61476c49656e4a6c5533704f56474e3661324d355a43492f5069413865447034625842745a585268494868746247357a4f6e6739496d466b62324a6c4f6d357a4f6d316c64474576496942344f6e68746348527250534a425a4739695a53425954564167513239795a5341314c6a5974597a457a4f4341334f5334784e546b344d6a5173494449774d5459764d446b764d5451744d4445364d446b364d44456749434167494341674943492b494478795a475936556b5247494868746247357a4f6e4a6b5a6a30696148523063446f764c336433647935334d793576636d63764d546b354f5338774d6938794d6931795a47597463336c75644746344c57357a4979492b494478795a4759365247567a59334a706348527062323467636d526d4f6d46696233563050534969494868746247357a4f6e68746345314e50534a6f644852774f693876626e4d7559575276596d5575593239744c336868634338784c6a4176625730764969423462577875637a707a64464a6c5a6a30696148523063446f764c32357a4c6d466b62324a6c4c6d4e7662533934595841764d5334774c334e556558426c4c314a6c63323931636d4e6c556d566d4979496765473173626e4d366547317750534a6f644852774f693876626e4d7559575276596d5575593239744c336868634338784c6a4176496942346258424e54547050636d6c6e6157356862455276593356745a57353053555139496e68746343356b615751364d44417a4d545130526b45334f544d304d5446464f5468474f445642526b51334e3055324d3055354e6a5569494868746345314e4f6b5276593356745a57353053555139496e68746343356b6157513651544e4651544d304e7a513351546c454d5446464f546b79516a4a454e4467314e455a43526b5244517a5969494868746345314e4f6b6c7563335268626d4e6c53555139496e6874634335706157513651544e4651544d304e7a4d3351546c454d5446464f546b79516a4a454e4467314e455a43526b5244517a59694948687463447044636d566864473979564739766244306951575276596d5567554768766447397a61473977494578705a326830636d3976625342446247467a63326c6a494467754d7934784943684e59574e70626e527663326770496a3467504868746345314e4f6b526c636d6c325a575247636d397449484e30556d566d4f6d6c7563335268626d4e6c53555139496e687463433570615751364e6a4d774d5441774e546b744e474a6d5a6930304e5445324c5745304e4451744e4755324d54526c4d324e694e7a49304969427a64464a6c5a6a706b62324e316257567564456c4550534a34625841755a476c6b4f6a597a4d4445774d4455354c5452695a6d59744e4455784e6931684e4451304c54526c4e6a45305a544e6a596a63794e434976506941384c334a6b5a6a70455a584e6a636d6c7764476c76626a3467504339795a475936556b5247506941384c336736654731776257563059543467504439346347466a61325630494756755a4430696369492f50762f75414135425a4739695a51426b774141414141482f327743454142515145426b5347536358467963794a68386d4d69346d4a69596d4c6a34314e5455314e54354551554642515546425245524552455245524552455245524552455245524552455245524552455245524552455245514246526b5a494277674a6867594a6a596d49435932524459724b7a5a45524552434e554a4552455245524552455245524552455245524552455245524552455245524552455245524552455245524552455245524552502f41414245494274514f58414d4249674143455145444551482f7841434d41414143417745424151414141414141414141414141414241674144424155474277454241414141414141414141414141414141414141414142414141514d4342414d4642674d4841774d434241454e41514152416945444d55455342464668496e47424d684d46384a476873554955776446533466466963694d56426f4b534d304e544a4b4b79776d4e7a4e42625367355069524355316f31526b38724e304551454141414141414141414141414141414141414141412f396f4144414d424141495241784541507744306534394f6a633672526c617548366f66694d4679647a752f55646d645632486d572f315775412f5654396939434c6f4b4c695645486d4c66726b727656474e4f647976755a6172587138376c6442412f6d54656f66342f61334a383279664b752f714742375677747a6176374b656e636736637078384a51643862346b73485050556a5a333074546b4d46784c647a67667957693165315345446e5642317439636a63743649316c303976465a37317732592b6130694d4f6e4938383032386d596b52437965666373485843726e716a78392b61412f334b344f754d695165616533367242394f354d344439514c6a344b53326533336831325435643571776c672f5a2b49574b35596e6236626f303838696739464461777552313237737a4534474d36496e59304c546d3535727a64693766326b784b784a6f2f5648364a666c3268647a5a2b75574c353875372f5475484b5742374367796269397539696636774e79775072746d6f3752376471315772397265577a4f795264694d767248743856317146636a65656857726b764f32784e6938507174304237523763304377744344797431623663776e3237452b7a7249643763323068483147486c79776a754c66685038414d3374324c6f3234463954696571506a6a67674a6f654b6c5252527a676a34616f4b5a6d504b715154635a646973616c6564565649507a51474a344448357175354553724b682f554d55356a376330342f55674676653364764c546465634f49485575685a7578765231774c686332584c425665566f4f7530644d75497a375167376d4b4475734e72314453304c3430483958306e3235726230732b52775153524f43423571537268696f487a51544e6b4968695751657159314342577a4e464764516d6c45576f334241687230344b4538457561616465704172736f59444353674230393642693335494759597571347561464d39577a51356a48386b41675165614535536f454e6572464e325a6f4b3578457346564956314d797548546a785250416f4d59682b704959744a75533033494531474372497a6442544b7234643668624432436b773147716c306e4f726f48713673444d715157714d766b6f4a4f417943386e556d676631594b6f50686e67707236574b4379544e70507654536b3853416b62564b7543676a30763845475755534258484e5a7274674e56624a797a2f414156457a45306a6d677744622f3149544747724c4a64386450657556456172674d636d433662676841354753684f434c456a6d67496b426e666d67416b464742384b4e5851384e55426e4854696c6273545177436864424b355966676f4a4d377153625075356f613348486b674563576a373063456f654d6c4b534b426f31624e4f4a68744d6b676933656d4e4367346671506f55784c37725a644d6855776a3736666b745070582b512b6152743931487937672b7242322f46644d48792b592f4e5966552f5362572f692b463065475146657958464232546231787268394a57573743554b41305a65653250717437307151323238424e72364a34742b59355968657074586f626947754651654761444d424a325378424230725264744878774863732b49664a424269706c586a2b616763454d6a4a75776f455a2f783745386e6b672f47696b53636b454c5a357064496473465948664a4c49743467676d415a526f6b63314a44757a514a514d4378716b4d6e6f61312b4b74385666324b6935466f734d55424856486d6d6655454158442b784b636548326f55414d6458596d48414931616d48424b3731393643596c5a397a45543748576c7739566b76795a69613430514e62366f6b5a6f3673765a6c4c64526a6a6b707170326f444950676c4d4446774d30352b435351657143752f6168666a706d484b3465357353322f694f714a384a62344c766b694b7276516865686f6d4b4642776f3659304e442b436c756e53564e35745a375138625a384a2f4e4a627645455a76386b4638424c7556747541414a6f57565467654a395753595a6d4a376b446a71426c4a4f4148664e5651636a546b6e692f69514f446e69554a366d61444f2b4a536556694530492f5449566569437758484a46482b665075514d745452696573706263414479343843454a786a41754d6b46756b786f344a537a4f6f5571475531444e4d2b76567a795153414d7361596f6a71424f536b67525531556d7a4d314541304546303362547353487044642f4e4e70627349515473554e613542454e375a7061447139716f4845414470656853784452306b39512b536378656a3969465157507843415053672f656a704278722f436c75526f2b58384b623852336f46494f455178566a6d4965507379516e53775452415a30415967456e685570684c676c6364685267476f52324944454e2b4341714f6150617047655237765949496139544b4569574c4b4f394572646942784544707a537a69306f4142772f77546d76636f4357644142502b725a7a363172395165356650387441736e3177624858466a383171395470754b4775675a494d73597434517070474f6167364f7a696f44394f4951445141564a686a7150747a557144524e4f52384b43766c6979476e6a3766696d424c757a4a644c5639716f474d70437642583744636e59534d432f6b54503841736b6548492b334f6e55345354363648503655477631725a5473792b3832346155574d322b66357270656e623062713347354841304d65457632724c365875784d44625869354c2b5753504648683268632b2f5a2f732b374679412f6f584d75484c75784344743776627366506a2f714834724f616c77756a59767776447038507a574f375946673652344468795042416b57516c45344242794d4b7145634d55416b44476a71775330754d447853477465534d435730795151754d6b7477644e526d6e2f6d526d5877346f4e553677635963453048634f614b7545796266767756734b68384547532f38413838354e68474b70412b437533455235736e77494372384d5345415943505a37304951456858765535785467487844456f43413466686768703745524a6d504769685959344f676a366165394b42394c6355344e61594a5231596f46695a412b46504c6d6c6436423077633051514848566b6f446d6f316572465358746b67494a4d7159494846785245594d677a2b35414431462f6c3764794d714f4578695975707172584e4147346675526550656752523033384d55456c5476533657654b4d673572697945546c6d6750553163454258444a46794d4d45416138776773744f5a7130686973396d685959713975475343725834705056317739315a38726333473845794342382f6975334841365131566a3952746d4e737a7a742f45494f637746514f35534d534532754e77412f36734d557a30356f4247325a46386770703638614e34555a526356703249316a4b6d576642413047414166443239736b33685056334a59326e63386b37616f6f466379484f57614142695478526254674361634649554c797a7751485572686a7a564241314f77624e53334d6739574344544e33635a70707a59436e46567963785574744b414951564575583430526830715844706b59706f56495a41534146414b366d7077556b52395835715578344941354e4d457a31314a532b4c312f42454455514d69674c456e48326f69506745474f52524d534b73675770787a526f613563385544513969624873514c45524c6f6e2b4653513146335a454f2f56676757325344785242645173634f35426d44494a4633716a4b7145754f536d6259636b45663470694b7043774c4d6f545867554130765876523136797a4d6a7a4344367371494c62662f774274635074696e39486d323476782f56706b4f774f46574a67624f5a2f6948355651325246726557737a4f334b3337757042763266544f39444f4e77792f334d555057626572625038416f6c47583466696e6a41446458496a3634526b6535776d3339767a64724f504c35494d73474e386171696e764379626750755a6a6956726845432b466b756769374d6e39534247776b4f35434d50704f495231414f492f74526a554f4b6c41745830685155713145477a696a4b4f71726f414a4848696f532f545456324a6a42384d6679535a4f55437a6f444839377141633038336a68584e4c4d596e366d5a416a56654f4878514c6e48465070494571316246566d5a795150746a2f55694a654b71364870314c4168774d766d756674357665416c6e6d756836624c2f787a2f7744556d50695547725379456a5276594b6157554d615651562f446e37424e7948742b4b66446d6c385056484641437a4d464e4a6a52716f4150553154537252416e6854366c434f39412b4c326f674849344941426a53715a6f67766b6a71667849456c45507a55624d2b7a4b63584a524c3665724a424f71494347464d4854454f794578586d5543774f7175534a6c4945344d6d31444c424a7061736b42365a445667686f303152706a77793570694b4f505a30436a4a306a6a4e507063314b6d6e3830414c385557487578526a7234346f5a506d676a675956533659314f614a6e5647504751514b43454343635535697877516b4f495145784f4e454d79464e4e574f667a5230365870334946306c4d494455346f324b6a4530474b4862554941346576636d2b704142366c454d507a51432f49615365533433686b57707a585875644e71664854526365576e575877396e514e4151315a71786d6569574c4768376d526a58704f53434773554249757752656866422f636731586b48514d7739366d7251475445734178532b58674d3041636e714f61484c4a4e4a34316f51554d4472515a397942354d78672b6e2f334c303933706b527843387666687168537459662b35656d764f5a4f50594946786f67373459705862697242536851434a64595057356446762b5a64494470584f395a6b4447304a42757166794b446e544453496758346f327871596e784b4e79354a35436e42414d446f6b672b6d734d79704b41786a564d4a6b5564425750344d4570457056686a6d6a475244766746437a557a51566c32546c33716748504941494d59766d67576a4f315571736c42687a4b714e615277506567557930424b3944712f656e4d4b4e54386c57416161734f53435a5a686e596331584a704236366b37456c326f6a62676274794e674e716b6450646d657742423050534c645475546d4e4d657a4e646e7065696f74525952694d47777037565634786f55446962446d7164764c55387543746a463447557578553254716b526c3830473232354469696b677770696862627936596f33496b5166456f4d6430395443722f42613745757254795757375261747641796a71776c496641494c784551366a6b7544616a2f637435716b50366476716c3235426250574e364c46735734314a7956337032302b307343502f556c3154504d2f6b673253715743716e324a3951514963386b46594c467972497942716b4964435853655343776c7644566c5476584e6951503841442f376b5253707847437133424a673263707770336f4e76626b704c6b715a7a716a46385367636c797877544d58717169456b6f695742492b4344524773554d4d6c53626573556e4964374b76794a414e473550336f4e636542517777717378743367656934663951536d33755a53726359494e62505245467535594a3274304d626a397a4a744736384f704274635a6c43584164367774756f313142304a53336e384b446f48717855504b697732353773554969684b3576592f5441747a51624a592b324b596971785375377558306765346f2b6675484452424b44577a6f457456316b473676412b44386b66754c77643434494e6d71694150354c4a35317755416364763746507562677235662b3142705973777a526b4746566c6c76714e3563766370393958774675354271614c38386b5834724c39374934327164714239536a4531482b327144535a434c6355336843776e3143456d365a2f7743784e3935626c6c4c397944597a6e7453673170565a78767251786f704866576e4e55476c6d39716f4e5853566c2f75466e7535492f64325a6544556731614d307377797047377459456c315a3538476f676341544345577978532b66627a494355587265426c5242615735594d6a434c4b6b626d334b73565a35676c3455423031352f424d59695371317978772b5077514e79574761437955576f4b6f4e3730676d5866356f43656f754b42413756636a42414676636b69354b45675357775157616f74314b6e6358785a6a4b37644c57342f486b457830323447354b544159386c3466316a31633736576948545a69656b632b4b44483668765a37323462747a2f534f4134493750597a334d6d776a6e4c494a6470746a754a746c6d752f434d49434d526767754559576f4333436b52382b4b496954324d54376c43412f74676d715a4453663342416263544c6b697a683378524148656d59554c476d614268483656646f59636677565a703370345543434767594a6d626a2b616b59354f6d41357367676a315a70757a4252736f496a6f476b346f49486a4c7455492b4b6366785970774d336441735135526941376a324b57557450494a6d6f41676e5970454d555737307836716b494667354c70716b63457a447553446963766c336f476c6734524a5145676679554846415445397a493955656d696b526b6a486763416742426b577a54533453554661596f67653941674142356f7935667554616175464163786d676746464c7046754a6c4f6b555a6c6735584639524a755430545053426767352f7266714e363762614852614a2b6e475334456856646a31473147466834427455774f35636b4d63616f4b3552616764335a65746a4161496759615268324c7a42683951354c3155592f30344e6c434c3936446a2b7256495043414335624555585739544c55686d467953477766464172646c437657577a71684751624265554b3952596b39714150444e426d337354703456584f4d477278585333774d5748376c6c6a4453634b494d356a6f4e525258574e3563326f306948542f456e387656562f626d71744a4a306c426638413369654559674d6a443153525a325757646b52444243646c777a64584a42722f414c7a4b4f454b5a46503841336b74716c48466330327941544c6c373159625142456a55384f434461665675683278344a54363250706936794333435136676b386f437144666339622b714e7653565448317877386f55576679596775437751466b4f372f7551626836754b4e416849665770346165355a4932744a726a2b4351326562397144615058446a70566e39386a7247694e426c785850386d4178797a55686242464d656144662f41482b762f473437554c6e72354a364c555279657661736337585470474b506b764a6d41346f4e66393567442f7741542f7744357a396949396230792f77434d784861363535327268503841625a357567326e31317046344d45503731585549666773766c6e36366875354479364273546b67335139597178684548745451395a746b2b42792f5a52637a79343665422b614559617a6f51646158726b442f3075387a56637657496b50707778616f584f38754144444645573369353745485348724e736e775934707637766148557a4d755549635544626a775164622b39575848547a772b6168395a7478367065356c79685a66334961617331554859507264764d422b555566377862634671386c7854626b4431427558464746707a5833494f78503171336c4753683959694134642b476c63574e6f7972494d33765465587148556737457657374d6e4a456d2b4b582b396266426a33426975544f33514f703555644a49784b447266336d797a7869782f694b622b3957577150396934676954773979625147634e32664e42325a657232506f6a4e76346c582f654c484d6674584a3052794655756942614e65317632494f312f654c424944462f345535395673436f4531784a5758425a547954494d3644752f3361334d4f4b6471535871566b56314c6a655547306c51327761634f4e45486148716c675370347561654871646952307839394b4c67614342716f6a43337839767951643248717471556d44392b425150716476463177784453576a676a4730427950424233592b726266442b6f61596a4247587164687150325358436c717a5074324b5265554f50636739424866576d4a4576394b42395373687778703142656376514772554d4f45654b4d6f6b682f44586a564236502b366263304a597367642f61784c386c77413873536c4d534b794e5548705076374c365a536274545333646e39596f655338774e52614d38454c625334647944306b747a626e5553642f705478337472487735564b38324961637677526e6231593444414950536664326638417577484949783357337838324e656138787045545749777a5431597541527951656d473474476d727664487a4c63693376366c355a39585363433248464a6f474d766567395463765767343142515837654a6c58344c7a41704678683856416363554871786574794461675573373173564a4134727930535448465363544574566b48712f757259715a785a567a33646d4e444b523746356379754478423378544355706a534d506b516739554e78617564494a3439517756707543564f48365a427a7a586b626c32374d434f6f365237597175732b53443138376b58785a4158596b6b59503841784c79766d5841617a4947576151584a6b4569524c4950577976786a487841454a7650686f6256462b3769764a666358414b6e46487a377276712f394b44364339533673673437465643516b4b4a744c556632346f4c6b6c3233473548524d4f446b633159684944484e42777431364247547a326374422f526a452f6b75544d334c6432454c6b64463045644a704535466a2b3165746174454c3169317549366238524d6330484e335a36676661717854347353572b6b4f744f367457396c4f467545576850566e6e6b6a7362384c55684357645839716f4f664c5649394e75344a4443516856616f6275384f6e6332546367324f697137556239764635562f6850354a765068484c344d6734453972596e3157424b4d73476b4a4c6e546a4f32644d374d794d2b6e57463741336f5948355a7052647478445266745a42353361626e666250384134375679646e39456f34646878586f4e747637642f45474576307a44496664517a316f4863322b42516135614a67786b78427842775850742b6d5132647a7a4e7649786a4c785773594873344b33376d31674166636e68656863384d5343675759596c2b4b7150365764577a654944416156566f64692b4b424e5566636b457a4c484f716841376b5930715069676d75725a714f546a564541396a6854342f46414363472f61704b57544935736b3068414a5246794a6a516771514e3677663663756e39453850666c386b38644f4a526b4f784274736275463836664450384153667734713658466357647657477762435742645752333933626b527566314966712b6f647648755164546e374d70457558396e5332376b4c3064646b366772414d3043434a4e542b354b59672b324b61464456426d4f70414d714974544a44553551454748486b674570635370306e772b395174546d693642547a537a694a4934596c417a6243714345784d55724e5867695a4f70556e73514c7a556949537161666d70454e56417668782b4343544c597043424c776f786c4c336f533653786f36437253324f49564f6a4178775772585669616e39365454337667677130434d695269713831664f4a6b515371356a4f645542426f3577513859706968704a474b634e4c705030356f434f70736c595a76486e375a4b73636c646f6b4c626e48384547575165564d456b6f5a6c5747504649576a676771674e4a314369333268522b495758574330632f6d7474426d674654676a706f6c66554b6c4639466355415953777839794f6247714441683378555a366d71425359696e4e4835684e68526b4a44504241493150566b6a385554705a385643517941614469553176563958465438456b6e39794169674e5864454b4168314157515478484645536c7131444a4c4870702b78436f706967473732747665524d4c736354315a56346a67654f5338374f7a757651727575305450627631446c7a346471394d4f717336496d5149304838332f59677239503841564c572f68716752722b49375174567978724c784e54376c356e652b6a79684d626e5964456e38412f412f675674394a2f7741686a664973626b614c7a74772f636736574137457269506374633765746a4b6c63566e6c624e724839694371525a674f314e467a785a4545596e735162346f43365156356f344d79684e547071674675417145632b53574a42374659426d6757504538565664384c4371744a5a326f70636c6f46616f426241304433384532744a596b3846594a41594941777879524658514556444b72444241764c69713737536f3143726a496b647170766f4261673243655563456c76696355344a42366767444575365844772b477159797058504643494f4343715558777855315559384554493463556f6f474f4f53425a516a4b4a6849554f574b346537326832387455504239504a64755959444c4e54514a426d6348462f62466b48456850546a562f6b725936535855334730386b6d5938504838456c7536544a73754b44514b4e78644d61343051455363614a6d63645846414b6e75514c4138735839676d7759527a5469424c757a6345455a365968766d68473249767171526d65434d4c576d5a44667655694e56476f674474526a376c424f4478346c2f667a5667476b504844444654584c453446416f65527839324645416d31544f475830706d6f3642514e48616f526c4b70346f4756587a4743654d7456543730415a714570424854514a786a6736595659787734494a49556633706448435262684a4e707a4645476642414b646e4a46686b7a6c416875316b77695071782f464173413144676d4554496153473571526170505967544630456c6a564f4830366671435852705a6b41435338682b31413051356a712b6e6e69702f4468486c79356f7351785a43636d4f6b6f414c636965746d4844383070417848425754316c75476155524271427971676b49302b61614e464f7a4653677951505969397949777271562f7151612b444839444c5059704d535a6150554a663179442b6d4b444a4b526a5236664a4547726f456e416c776954714f7041494846717053476b31565a45484a42713078514b41783549584d6148444a4f414777556b45465a6f3666512f4c7453365737305a676a75514962426e344f6d59366f53345343374e7137443158616d33634858345a6a67654935634679593873467332426b487577385431356a682b584e426b32462b66702b354f793342365046616c375a46656a6b493769426a4c39793533716e7038665562416c62386350422b52564870587155726f3875372f414d304b536a785a42666f6e4752684d3148793973554f3564432f61382b4f6f6549594c6e416a454948445542533455524159567a55696452355a4943495a63464361616c4a456a444641794c69487379445a62365936676a5a6c45316c55705948705a303971494237554758633175792f3070424c494b792f57396347545256545a6f447079507755696378676f53476f692b51385078515156594e6d6a694f7841506b70687a422b43413069635644544771676a6b52376b636e4b43526c6d50656c30787144696d6f427955494a7145433049702b31456975502b6c4e70634f4d666d6f44414636346f4154546d6a794b4461455268564142784b5a766f53474c304b63794146576f6742446a3449524966715244456330536466765151486c564c535430553046794169425278336f49614a667154366631494470374367657a5353735051616856574838787553766b395546414a59704a6d767735465045304c30723856584d56664642787051386f6d47542f50426b6256656b725876595638302f3676775765334955356f4770436a5554516b41634d54386b7678716d6a7851504838666370455a6c44436c5563384b494a706c345542414470474846574d6a51667a4e5642586f6554742b355554485338517451664a4c4d4f4b346b4e7751533165457148454d36783744637968756275796e394f715674386566764376753244723879314c5250504d4867733076544c6c7a6366632f634e64355170677a65374642704a2f38777878453441396a4b324d4f4868716d387376724d2b725470345554365769666d675741656e7855425a51474c39694b4361693166623971446d527077554a4155706967444e334a674e504e434a716a493162696742593951436b68314b476f7a706b6d595438505967716b435377522b615969685131436543434e703745484a635577526649346f6b644b416d6c4167327170514d484e653774523045305154532b6661324b41414a62495652317334436b6855494152704c4244734b6149596e696b7151534f354177412b7a75437236682f77433555796c3564327a4d5a5859782f77423337467045483274332f544a5939303872526b4d596d4d2f397637454863334d534e315a6b4d434a78507563666974576b5369596e4f6979377934397533666a674a526c3353702b4b32514a7a5163666275626b65325139797a534a4e79663841504c344c624174752f4c7a6a714937317a3334667175664e424247584c73524264474c563559705a567751467671782b434a345955716d4443565643514278514a72306f45466e7a2f4246336f5542527533765153636e716b67387171774e702b6156784775534376715a7a696c6b657242504d78425a7361704a42324865364274744a376f4178785852394f614e6a2f564c35726e37534c62693377366f79626975683659662f41426763336c2f376b47714a372f795367674a744c343449423548674f784175446f6970314442533569796e414641733474696932616b6e6242314e575342572b4b4d6f68435a30354a36596841476f32626f667a44443449796b446770797a51526837307370446b6d4a443675436d48346f4151506b67587952687977553852514c49636171526f6d5930424b47504e41703076324247726f7967333746486477675351476c3565337754365351376f6d6d43534951456e4467557870304946734169474861675553556f412b616b5746665a314f5343476a6c51455a6f6d4c653948507451494b4231484171427954555a386b7070534b426a5242674f72696a6a324d6871616d446f4131527a52424c73706d38697963644e58514a65413054475053754a624f6f6d4573695632373549684a7a526c78382f62336f4a7078474a5259794e4b653374376b587a396e5461584e554336546e6c38564231596f6e72526c4b50755a424c5964385559793144675641436138305a6151616f4645574179535447594c4d72473144696b38734f67707565422b592f3979394a6550565467754263693052326a35727658766c6b676f413155775667344b74337a5478693243433442714f755a367941396b38504d702f745854306a7735726d65732b4b794d583833344d6777753871346f7539634648703231556c484a7856424a4e334d684b544254554347772f4a4d4f6f4f425555446f464f4e456b67772b50374551434d65355746324834596f4b644c554f42514a50316469734a616f2b50354a50455749514a494667446b6c6c624756472b6174424f4f446a4c3855704f767551564541557a53794f6c6e3675504c676d6b4f484647524d637355464570634d754846622f4145323239773379507030772f4572484f4f736b43685036654b374f31674c5541412b46454779454246384538597651636b7344303178437341656f514b4b786b717254365a4658526937746b4f785a6f48486d67333236323435424e634443696b49394141542b4545494d5273362f3662306571326d5974784e7734414957625978584f395a334f6b7832385045542b34494d2b7a74486662733370316a622f77446477376c325a7a317648676b326c67624f774c6363632f35696c314e4d6b6355466d4a594650696c4977497952666767554e696d30766945784473794f6655677249656f344b692f4852462f34346861524c565134724c764149577766307a67666967756175436253394754675968536d614251497074495a6c41416a773449466258564c47495448676d4e4541414251455163455a38516a6a6d67456542514961674743637336513143426f436c554257694279434e5a4d67674f42425578376b5a6330754e426d67426a3855756c7a68525047425263534853675471777952725652326f707a514a706c4c73553047676f724b69694f756c45465665416f6a70346969624248565642564f304d7770433148364172694878524a7a4b436a795232684c39754a654a58784c315546636b4641323061734b46416265426f4256614e4a51784c34494d2f32747436416f543256755651485061793052642f78524842426b2b7a744174575342324556745041424b513374384547442b32785a51656e78694b43754e655336456f74584e5148565642676a73542f334737496f48302b54306d39633130576a394b6d49516334624b376272716175503730773239374f62726355436164574b444d4c4677687a4a6b7774532b6f713341636b5734667551566932366d6c6f7667324b62566f426c4d365944484a6c343731333133376d506b62596b57683470596176324945396539616c764435466f2f3059342f784c6a3762616d2f4b6c496a456e676c7357703370615944452b3564367a6246694661666d677373776a6169304749437446746f2f683270577a373254675931782f4241776a71416b55396b6433424c626a775952563063705a4943492f5438565a62674c5962676c45637772597446386b4541692b6e4a50626339535751475359526171434544745a574854526b6a56634a7a4455656f555152675078524966744b6a44416f673163344946305946507248313846424531524165756143525a526c4e5130755534465541694f4e4577476f3039365854396676373159616e705149533577397949475a5269574b6b64526f785a424a4376795269446e56466d3763307a4155514b4b554f436a4547676f6d414d545371474e55454557484a4d654178514d426e324651427149432b72707a56473533646d7830534d646636637773472f774456504b6a4b4f3338583154344265516e4933535a47736963632f7742694431317a3148546951482b537969345a67456c2b366938334b63344446646a3032586d576e44346f453956705a6732525076584c4a4438575857395469504b69667164636d6b704d5541684d616e5a65704d35474d64574978586c6e363467343865533954616141492b5061673576715564654e467a5462496569374f2b71582f61734e50336f4d597461764376516258714559357375564b474661635032727132397862744d58416f67767637616338412f4256485a79306b6e46502f644c63656f7972376c4a2b70326d636e504a425766544a54694353556e324d7550546b727a366c74333161734d51796733396f523854634547662b33796d52576e3665614a39504a775055722f37745a48676b3765354c2f6472557147514838334242515054706b615146443664637941623846662f41484b7849316e336578644e2f6364754b782b4b444b64684d6a71444b48307952697a314f4f624c562f63374576726f41546d556e3978734436715934565a426b6e36565056536550385042533336646534466a2b7169336633546241316b493848552f756533797569575459664e426c2f744e77437453666b6b2f7463336f74763841636247716b3473506e373066376a5a69574d6f75677753394d6e4550676d50706c3262536475786252763744566d77522f7556676e7868427a2f37566472315643622b31334838654b325439567359613364542b35626558687578504845664d494d5139507552782b624b513246365836514f38726550554c42776e41387679526a753764434a4432376b484f5070393246537a386b50734c356653483975786444373632482f715248615642366a5a722f564655485048706c36757544552f556a2f62706958555268375a726f7733566f56387950765a54373277667268387967356639746e44774279676654626a6e51617272334e3962466454354d704464322f31784344692f77427476537a4438364a2f376265504231313562694f426e45767a536665516b585966376b484b6e7372776c30774c3871492f61587a5178622f557574393145416d672f6c396e526a75375a416c497869342b72696735423264342f514f3151374f3742784e7344346632727266635758667a4c622f7a4b472f617975512f334d67355832643568724e5063683972634750757a5a646564323367626b5a442b5a47642b795071486567347632567970302f76552b7a75417375763931616b427175517067306b2f6d5141665648764b446933646a636467435544745a6b4e45594c726d395a46444f4963354a2f50736b2b494833494f4c397065483074326f2b526649624c6b654b362f6e322f45634f58465653335669324d532f4e427a44744c6a4145497a32737451457662386c756e3676743443733635644b71507257335a69666233494d6b646d52372b6c50396e4f55587a56703961732b484868525757765537567a467345475357316b427078376b6e325678744d61444572736664323568346a48344a7a755952444e33484e42782f735a4136614e376e556a744a434a5076586238323277772f616d4d5249567751634d3748534b666e696c6c744a524d58423676647a586f476232795579496366424235326471555a6e70616e79537a73586f3949675850366172305168496756464f65536353634d632b43447a73765462307643434269465364704e394d76674636655478772b61516d6d43447a6f324e7934375230686b6637664945616e376c36534d6a6e67704b554a556f65784235333745787063797a624e494e704c554378586f326267464e4e756e464235756533416c584a4d4e6c6531426f48547a586f41514d514155356c446d57396d5165654f796d504448564938636c574e7650394a31486a687958706835655146654b49416247673446423577624356583730763252496572477646656b45592b494f36684171326d4935342b35423566374b5a7149452f6b5662397265442f414e4b56463655786a6869374a544747446c4235333761347a6e704750656b6e734c6b704f776f4d4f4b394c474d4a304e55667437636a6767387a4778634474452f79684d647663642f4b6b5363474472307372444167444241523059413979447a4574706362776d4d6a2b6f4d674e6e654272707176557a74426a5369575671476e323730486d4a574a6765467837506972504a4c617332646e43394b4c554f4650663764696e6c3273644130747751573262684261574332516f5141756447546b74697465327636703665574b446f5a636b736a52776943684a426e70452f464e46354a546837315a436e5967346e7277714a634a5254656e37477a7662556865694f4162475059556657674a533030343934576a3059455779654a516333642b6b627261677973334a584c66365836682b42576533664a36645569523467635176584f2b4b77373730757875367969302f31526f66326f4f484b354f51636b6c30664f6e45466a5244632b6e37725a316b504e742f71474937733156436573475544326a3969445239354964565377384c346f7733454e7a4277534378364d316b6b53514f42775361424f6f365a635167314779597859534a66496c617652376b70487179372f6d6d3231776d4c584731414871522b34745750434431653542305a6c77526b7143666d71507534794863712f50454f7070487351615450554d6c44555677354c463937434a72536d42697234377533646a304565394265414165417a556c4363576c46707834425043506e55746e714446567a6d4c636d7641326a6c4c365433344476514b434a476e2f414b6c5a71486439534a477678482f56464c506f3858564869674448464373734d45515936577848424b3253417339534570484250324b55504a426e4d4e4d7463486a503963614876474331322f555241364c2f41456e3959384a57665342327054463647764a42324731423434484e457962466357305a375758394c772f56624f486477572b78766264372b4759786a4b6e3730476e73772f4641444e4e4a383845684a422b5343413855704f4237306351366b71682b43424a524a3979464f7a354b616d372f414a4975345a414a30516c38314a597567394b596f46303538304a423676564d48497168705a42414b4f7139546c76656d4c762b484e5676586d676245616331424a566a55547954676a44346f48447878516c4636555369544b616d374543547336756f6f474c483336754b7276373633626a68716b4d567a352b755841615759696e4642307a414369754679562b3335636a5565387268522f79535831575249397175742b76572f727453672f444a42304a44525170445255483154613376444d312f56374d726730787168562f302f73514e62704d63567062686b736b493954683130425448393643746d46517071466543636b4e3030537868524242427345487843597a6c6b684a67586442474568565168785442434d6547434f694f494655455a733049304368594835706e47654449467a71794a366e7a526c4c344a5779483549497945535939715a6e6f6a6f414846414a456756536656795447543967556b5777373042376b4d5136492b43493653777951534d735848354c6e65702b6a57392f4856466f33683965522f6d2f4e6446514f4f394235375a2b7258665335666162345548686e6a543851765569647664573955447167566733573074623233355630646e4c73586e5244642b6953387948395377396361666c386b48724a5752487143716d55665476557258714e7658624e52346f4848765769375948306472494d77644354676f6e6e6b6c4a6232716768694971444372717769715152424b43566169727679307743733036362f4255626f4e4241396b394f7057434c43754a5665304146726b465a70596a676759463475677a7849516b48544848354945505333465562743478726a6c6d744567394652756e4c5a6f47684e7352566b7748476953444d6d4c502b53425a4d58375167432f685230767843686c784b4373344f6f6135594a70557878514a70524258704e597877536e704c684e4d4d4346564c6e56414c68705775533565397348626a7a37596550314264585377784e556d6f6a703435494d4730334d64786236493146442b31582f5330714b6a613252745a334a78464a6a5454357254413461776767785475546c334b74394a36616a354a365272384d67675973657634496d444f526967434d54514a67424574394a4655434755596c73676a2f48467458775148566733656e50792b6b4945685358506b70704a526f5a4f36627731345949424143654f415336426c676e476d4d697a4a504654334241395835634d314151494f665a6c4e5264384b347154594f614d674f732b37336f5236694b3143426633707442616c5062356f42637863596f696c486f684a6a6a6b36477032422f77424b43795161672b4b4a78454658704f645563614e32646942443148706457594d50627455636e71626c334a5a435a493073773975394130434164543556514c4f2b42515a764658344a6f4434494359366a374d68355a77773777796c634367413564716f4357616855674759444832717047516a54416e366b38494735496147456d393643514a4e79504f56566f39516744663841394b6c72626e57382f707146667664764d6b336f4179796b5071626b67356b4f4a77543666306e755367514931783976334b5341425968424468306c4d436733537853396e594542714d4577654a3763304230557a554c6e3279514b7a6c6a6d6d6f4479516d347246476c73446a6c336f42422f4574577947693078347565537956427067756874494852336f4e4d4c336b796330684c48383167395a324d37632f76647653634b7a417a433261684c784257625337587970596652493474774b4162446552334d504d6867616e6b55643761492f7177714d4a443856784e3343666f7536382b482f774276636c3152346366785a656c73336f336f76457544574a3468427a7646486b707270544138465a4f7a354d2f4c6748456e30717a37556741534f4344484f62464c4364574951334e713962616f6c456c5331356e312b7751625234432b525a50596c316341454e74626a4f33494556314b7a794e4c6153794450642f355a6b386677566255594542586269334e745a4162465538386b455a7345344f5943455a454f794d7778505967476e41706d7849774b486a77506168415069676d4a716d4279515073555179414177497067686b7949597935444a4357504d49474249706b6855654c4254414f58434e45454b6a615572676d694c456471434174562b534a416171576d5362542b6c414830344a384d6b414f48636f634751514952484652733030385868376b416b79476c38634549516673526a306e6b67626268376a6a67726950626d7137445275454444454b3350325a4257314f39567a5a714b7942476d5372304e544a42524f33356c4d7a374434726752395468475932786a495445744d73786a37313647514d545369344e33616933367a456a77334162767669582b4c6f4f696264534d76774b61554d6b41306a7a7854434c53644170714b717950684c596f6d746661714541415839364247392b535a33782f616d747972564b6175364347564577416271784b537044464f51314d4367474a63667351306b5955346f5269596c337077546b6e44437141784c30536b7338534643487145497939785146685439794e486f555973427134664251787a785145347066414b596f344241572b35414f2b716e686f695a5a6c4c4a694b344943776b564d43596e336f6b6949554853674f6b596f4d516533465179624446534a656851534d517a68535561636b79534841755545305670676d445a7052384530547279514b3768796734426454454d4d455a75614e52414b69524b68367139714c614e55674f356162746a714d5137783075654a4b437132503646357630716b783141782f5544386c70306d46752b44775765412b6b464271693236394d445a514876682b356447314954416d4d434175643649783238374a77684f3548754e667857765a4856617473614e3871494b4248547679662f414a626c6332414d49746e716c38313172304733634c6e366f53683771726a3278726c4c6a716c38304473634a6436457034634538754955375467674455517a354a694b6167536f3377514c4a76636758784b4947646355644a4c3655433648444a542b6e696d41416f4b6667676355456b4e656561515953314a693539736c4a43526d554332484e3245755a4f484a622f547157496a48784659724436775455765662396c4c545a44667844342f6b6730477441684d6d6e4645786675554844464149594953614a63344a38527a39717044526a6767624e4b7a42697071397a6f34416355435848524d7130556b4b6f776359397143476f6f6c593673332b436d6c6977526f4d41676869596f4f4939364f4a354976376b432b48732f42456b355a706942346b496a5567474f4b55386330776a7a3465785150555545306d51306e4a414d394559314b6c436345416d446b6f2b536d6f52446e46417a63746e696767414f464754554e43794468326a696c3851354241346b6732667755504653584a415862477158546f4c706d7a556e54484a41774a666c324a644e657852714a693377514c416346496b4679706b67674f696c4d30326e566a2b7841523156344b41744a42566448394d356c7663755663414d6e784846646d3545614a67564f6e35726a7a4a777a656941523655344a696847494666715a4853394452417a303776656c6c4b76626b6959675653784177774b4379564148794b416b4469707144417669695431664e41432b4b574936692b592b4b615479777277435542794546562b4a6c623176583856337273586b547941584575645854784d58796232354c703374774a48544161355a61613051575341795442776135716b577231774174705a2f45552b6769675161592f42637a316b2f3164763233437430526341314c44366e4364307775434a61337164786a717a51632b50455a7179513434354a52706b47475278344f6a347a6d523263554231554a7a55487a434a4557726967515a394566656149466e475449366e3673304353356f2f446d694270776f3642533437304164596171614c696a3037456874673573506b67686f474e55686b58476d6b666d6e6f447870525453314a592f6967706c474f49376b727a4d757a46574752666b46544b4f73616a6e2b434337615739567a583775533638656741444e5a74706230686174465973677679715551354444325a5271555467734b6f4a673450425551674267726a716a4535664e4a636752476e46427174654238552f6846556c6b4e4563666246585247704173376b624d44654f41433550703167376a63472f4d7670372b6f2f6b452f7174337a626b4e72627839766c697438494462576f57514f53437959387a75564d34506837465878385073366d6a53314d5543776c476662376c5a47436f7532424d7551783979534675394278475439714457596f567879566471354d4472466346614541424a7957586668374a2f6d682f376774576f3473732b37426e62624373666d67306351707066424c35687759705475472b6d667551574566424958657145747942394d76636b4f387469686a4c2f41476f4e42726967414d4d79733333317142366752327054366a59346b2f365367314574324a68565a66376a592f582f414f6b2f6b682f63647366725a2b524834494e57576c44447657542b346262396173473873412b4d494c6766636a6b6547537a2f414831687647464a3736797a47594c6f4c675561716947377353776b5063703931596966474546394467344b68344c504c6532596d73776f4e3174323143592f46426634656e334b616973353364676a7842756445667637412b6f494c3337795530734f4835724f64315a774a48656a4c6662636656676775714551466d472f322b4f756e596a3935595031664242664d556f676130397663715076397668722f424c2f414844626d52366e5161484c4e696a4b7653466e4f2f7351506950752f596c4f2f7345554d763841616730796431434f6d717a6e3143794750562f744b4933594f556b4634314b467341733533385157455a45636b6839516a3452626e376b47317a487455637573413952482f616d36622b34536c68614c6f4e6c4a564b6e684842597675377266384b62376a64476f684544675547754a657165685850462f643439446436594863476d747a794344574d364a534738624d71644a4e4a534c674a446159565158613762342f6d68356778616b6646493845734930646d3572792f38416b50724d5a6a3758626e702b7558486b67782b732b73334e37634e7532644e6b66534d2b5a584a32396733353652336f57374d3731463262566e796f364968412b336848627859652f6d74454947514a565543526e5867725a646a42425a43504876376b7a422b614d414a643661323763536762504372713250556376795377384c6a4657516a587071674d593579566b434839714a59676c6e437338764d6f426855706e31562b53414d36484a50494d6759466b5141654b5453374a7353636b4148547a795673594d4d4f345a4a4742484566464f435230795145564b455457694a36637170664578503755466f59396d48596b2f3436684d47555931476141546f3543506972395842455964536a56636f4949354d6d2b61634548487353434f7170515273733057656f7852634e555552475a7a515354696d534d774d7679516555716c4d394e5261504e4149394e63777566366e754a655250515777692f616d763777526654527338666856594a626f62696a5052426d76516a355579634231653365765069533948756f5059754e77586e444c676757567741536b46364430666f32387a374f765079695a436a42642f3071662f41497a356b2f4a4176714d54474c4534726a796937746c69753336693269707a3976594c6a474237554663342f77425141384636694548413461523731356d364249563751765753307a455347384e742b31427a393850366b526b612b35593944527032726f7a744734515a384b64797a2f62456b6e4c3239736b474f56737836685869713552422f4469756d646a306e463154397049423854674f39427a35572f316433464b4c42474744597270793263386745683268694f74794467673535737557792b70413247784874376346306674704775495448623341664454343051636337517836693661567150697a69756b59584a34416e755351326b6a6846754b446d6d30495950676f4c45697a72705432647871426c563972754d4245386b47553242334b537465574b6434785734322f4c724c676d386d6457446f4f664b47727148596a3545593464363265544f544152375533326b72674930732f616777614142716a38766275556c6175426d6462353765513854676a2b465479695771542b78427a7a59426a3176372f414d4549576e69375643364273537830756b6a596c6d47446f4d554c666345534b7556756c626e6c556679715374474f492f42426738735949546a3949464f53327874546d66437946746f54656268427a7a41346d4c6669726f6c6d63734675496a51344a4a5753502b6d5a6a346f4d49327a75364d4c54436a725a4b4f7549457148494d6f4c64422b41515939456878703845664b4d774e574b3079746c38323743695936754d55475132704d342f617139467a75573457764c6c5148566d345369497764334b444447334d356646545363446b7478697772674568694d4547517865725a495442774c2b396152626b33676c517161446b3955474b55534b464175525572564b414c6869732f6c315a416a5a7147664d6f6d764d4a5a515145534f4b676d635877526841334330517539746638646e5071766e5448686d6734577154596f6946776d6a3158737266704731734e30412f78534e66636b332b796a6374474e73615748306f504a523238706c704e775858742b67536b42493349694a3758397a4c42596a356477526c6739633856375351733237454c6a4f477862346f4f50482f414275312f774253644f456356642f59647645644c793731644c66327a346150372b5355626a5748783750775155626e3065416954616545736f78772b4b35526e6448514a594c7348314755496d4a4c636c7a4a32756c3858515a786575327a536465616e334e3272584a502f444c46572b564366546a78545374776a34713967515a3433726f384d792b534a753344684939697474323478714258327852466b506f2f397943727a623061514a524f357676533457547974644e4d666772444179795a426c382b2b61787545465865666550696b356277354b4749694761716b34646679795155537633426d514f313162446458387079417a5a4d625431414f474b7130474d6e487579515744653367656b762f4d6e507147346f595441664a6c584871787752314e526e5a41353332366e39515a4137792b474e4734634653496955714f6e454c6363384547694f2b7544784164754e657a75532f77427875316c51447353326f524a36536a47705959424150767268714b393661472b665333306a7135704378396d53547336354d4448547851586a314b2b7863697630702f3772646a534c4d57663936796d79574f484a48796944314e6b7a494e552f56647847576d4f6e762f656c6c366c754e4f4d66785759764539496675513875596567516134372b39686a2b504a5752395275554d7a335a465966496c785447303148626767315239527678774d6663564a65726269544569422f54543572484b784c36616c54544b3252475242507433494e397631692f4878344a7637724e3279585030484d4b6142346d72672f375548724e474c4b335a78613632624c50732f567476765730536166364a556c2b316151445a756564494f575a4230315849554c495737304c6d42722b6e4e504d4f4f61436839574e453863615a4b73504d556f6d464f5a51636e315774775234686250535947466743517a4b7a37324938387a4f416972665335784771303966454548534b49664e44446d6f654b434f446a6775647666534c56382b5a612f70335031443851756c383145486c70624f37626b4c642f38413352384d68323546644b7a365061455836755855363678684755644d773435726e58505435326e2b316c70483644346537676757506f746f56695a526c78422f65466a33506f742b414a3238784d666f756667526d71706570626e61584e462b4174683231463237585a6c635055726a7549785038576f6f4d4e6a7a3437694175435550704d5434532f4e6432647341304646686c36684f5262797766356974397534626b65714c6646426d7557594e5846633257316a477344706d74382b69525754635850707542755a515657626c363157527133694646324e74765475496d336645534f4a7a376c79534e4c7448464d4e784b7a3165574a354e6e376b48644779744347687144434f72696c6873784176436e7957585a3350543939307744547a684b6b766273576f2b6b37552f51332b7158356f4b35375145764354482b453439716f426e4174504433703775794e673678487a596476574f7a6a3249786b5a5231575a433945654b457154484c39684341556b61667637314d6142565274776b5873544d4a444733503845346d34717943537550696c6a5874545a494e6b4543733963306f6848553873516e754d4b5a4a5763504555515a34323532353634334441452b474d6e6a33672f4664433136686275455737765263797a4257552f44386c526f694b794344746945686b6f654753356d33334d7252364f71503665485974397539627655676572366f356f44584b6f4b55304e436d64716e44344a4a562b46454161764a47574e6171594470533142356f41546777537a46516d41307544546d6c6d50346b416c2f2f6b3646635063704c464b423730425959495336677069695a50326f4268324653354951746d5751555966556e6b4132686e695231494f466633455a645563446a526336374f4536416d58484e6c3262336f2f2f414779644c65484a6444623234575969416941634d4d30486d4c56674754364c6e2b7858665a7748564d796a2f4d463670706867475431497255646944782f32586d65446e6b7264726175325a644a4e7639556632666b765566593765546d5542482b4b4e5067755a7674724f784d526c31526c7130793031445a555148626b79594c704e6b5679646c4d4363524c4e3132424a713549454131565a476d536c4751714f6c414245344b4867634551532b6e483855434e58694b415178375557616d4874375a716541636b614771416b6a494a473449787167315367443863453152564274515930526b4870775154535742487554596c776c413549597870373045504652395254766c696c49656f5147684a644c302f74556a7a527a616c5541414a706e78436d6b2b32435a777a2b3944365542444350344954416d444535686a7a354874525a2b7851535949504f3733306935733776334f776c704f4f6e35742b53365070587231766448794c33394f376b2b4250746b756b61396e795849395339456876492b62426f33674f4e4a64714476547376315a2f6773306f6c394b382f737658623278754462656f41687161766246656f456f586f613446346e42426d6c444a456a434a46465a704c5572484656564c53514d63656179376f6a5377576f6b45745432397663733237693055466d302f34524b575035713376564f316b4c6b574c4a2f46795145734452436d4b6b63434b4a354144424149476a795758646c79506d745270677332384a454f592b6142374d656c6a37464e70366b74714a45575061465934496642416d47614567436171646f3730506d45416c51717330783745372b354c676553424449505249596b592b7756307950656b643342775156364b6c796b75444f495a545378346355356744306e745a42526f416f55432b6f5a6a677049766c2b614f5746454145477752307554715a6c50427a434f6f4549466a6730766b704a785443507a545546436a55554f4748747a514939476a7854674e694b3570534762676e3452474b41537474544247526c326734756b4f59774359304f6b696e46414e49474344505839715952464548306f444a784561516d306d58496539545342584f6967636371494668503334647161587a79556c4853414269706c54424170366663703148704442504a6a54676c62394b434f334c6d4d30774467506963456f42446e347068346e70547848346f495975564b346c53576c33347163426832494350447147504e435266325a57534a63446d71344850755151784f6a6d376f2f7a65397171616449636731516d776a584c78643643693775493278315662325a4a443157466b696a6e3950375658665955792b49574b52746d72684232496574777554667943572f692f426150377243637863687274792b714d732b39634745684d616451576d466b58476953446c6a5642316a66322b3736375a45627631782f59713578414c436f39793574376153694e54595a38567432737370697255644134346b342f536965564b4933494548542f7143444f2f4a424f7a3264475241366330756c694777536b41382b51514e6e6a67564471787a53794a41664c32716f447144787851516b7859454d7568746d307243586c543243326253445135766d673074576d4351784d715a3430347068692b534244566967754947387453745851352b73666946785054626b2f546478396c652f77434d395671584e6457734472674f735a636553472f326350564c4149365a69735a63447750616736457636735656472f4539457a706b506975623650763558416256344e6574394d686d5630397a62382b4f7547492b497a43424c386f7868576d48743372455a616d4a4761736f63634f6171766b416a6b5548533274496436724e7a394f504e43457a474452774a4c766973394d4d30476758744e44522b4e566d3045416f6c30593668346330436a4247456e374d2b3554535a467a696a6867676b75497a526c515555704b75655350755144716947716c356b496a486b695a674869676777644552392f74696a5148384648457149414f7041654a6b63616f546f7a494a6d34526b673877585a4d53446a524244483953674152596b645859684c4a75394243636b512f6545484d57344a6153505567736c54424b3259555036516c456943676a2f41415130754b496b687168456b654641396a2f6b5059722b334a5a74765335334c575277515a34456d4e526d675a44424e475044696c515a797a755032396978584c414f3774627239454448352f6d7438685853614b6d354449555155516c554e6b7242456e717954366553554d4b4442416746534a4a684a73516a6a525147674766746d676b6f5670546967616d744854434a4b686d6756713055784468475141654d633850785179626967615948506d79596b4e326f36677a705245344641765a57714978596c4e69522b6c4b592f5331454579596f4f5254463057626b706852417a2b384b45385647444f45766935494a4c6a464b513142696a4b494a5a4531514c686a5247446a4a527a3953426b78514e4a686763564837454b5054425139496f614949444c6a52475561756872706a524850326441414552456b4b53445959714d776f676a4549414e6967487778565737765373787a5044692f346f4c4a334c63497463772b4b6b505537556268763130584f6d5557345a726c47462b627a6c41434a366564466d6b4a665552373048642f757469524e4a3653473850755358747a627653746d773859744c55344f4b35467563586155384f6136646d45506f362b7775673650704a49763351634a434568386974577a4c4763535044636b335961726e52684a674b754434686b7568743564526b616d587a44494c7273487557355a68783846776f794d5a7a682f484a65696e5541383177626f3033376b6634766d6742695a564e42564e474c46754b6b57303164306f38545351426d4c6675546161425169756c546d674c424a45767979546738564d47504641425176693248424c494842516b6b4e6b6d3851514a7134344b7253786f2f2b70577969684969527252424e73307044546b7433703876364c634a794378324b547069363237414e61375a33506d6730647155774972676e68786c6767543855434e785277715552564e7161585967726a772b4b686a704e54327146696a4a69474b41476f6f70374653754b4f656b6e39714258346e4247517a7a54526939436735493653675271506d6d306c535a4f422f636f59676669676b692b43686153496a56467a526b434d345566394b4a5a677944484c4241483164796742727a373141307155524b43646f716f344a7751456c4a42366f46302b3769706a58676e446a6d464e44395877514c4a763249573475394d553761653544444376456d6943467149476c654368365479524c5067674952724c682b4b55527a552b6d756445454a4179717047754753673766324b4f4d55454f6455344a49637052676d633449467554476b385678376c4a7a694d7678585a4c47507346795a672b5965476143754a69534e53636b4f474c495146655470744142346f49635753303848657246485973632f67676d6d4f517743487a434f6c676c6b674a353053453031634136736c544432644a4b5036554855324f7874536848635436357a694a64574163634630684552476b555842326d2f6e733469314b4a6e62486862784433726f51395832302f464978504355535032494a764e7647354e3542366355673239764f497172723179467870327a4751354b57395149772f656730577263514f6d697443353933314f7a594f674355695030696a397441736c33314863584b51694c634f50696e3344424254366e5974323931447977415a6955702f6773386f4539795068724c45697646416f494a44426b5766715271526a676847513067436c5543566a334945646854654574477141674731594e687a51534f50384143715a6d5679665a3856646a516348556d47366d596f4b576467446e564e636a67446d72596e34716e4371436d635a44484c354b797a6244786b2f543845326d767467727245576a536751616f547277634b2b353474536f674d79466f3651653533515761714d724d41315371744e475630596159315141743142473553493038556a66465335534c3179396d51614c664e57584a2b544456696375306f57416449314371352f714d356269374862572b38384f666367583071774c6b353779654d69304363677272387a656b5a677341576a334c61496978434e754f416f73786a39495158575a69645172635134574b77664c4b31776e376b44474c7851596a424f376f45676f4662536f3350322f616e646c79743336355a73457774447a4a6a484941397635494e635953765131786c7071736c2b374f7964467747736f6e566b56784a2b73627277526e4331484952446e34724b647a754c754e3263356637523742423761456f7a4478716d5a6d78586a4c5572684a4f75354535615a4d2f6174746b335939636231372f5564587a51656c59733667456e574378756273492f315a61777a767062354c6f343147614243373139366e5561707761734d6c4a476c45465274784a7245666d674c555764717130466856517342375a6f4b39454838493979726c5a68346f78477273775767316f68444242584b45593544334965584276434663775141637567714e75426f526b703546746e61673731644b4e4f4b587371675551673951717a5a74797235592f4258786f6c626967704732736e3652376b77733279474d5233425775794438654b43756532746b4e704861683972627a6a45634663352b6f66696a6c54322f4a426e2b30736e45664654375733476d6d6856344c496e487351555132746d497045492b52413130426c613434594953593867677147317435525a4e3555433947567274676c376b46576873455270547456685242394a2f4c4a4256477164754868526c316f36474655414179784367475a78546b41636c473730466248484c68324a5942316166453571704561616f426f6f6c45416138555a454f6a6b484b4247536a784f552f69724656546534597747424b446766354c36744b306673374e48483954767939793870434f7564467239563348335738755842554f77374251493262634c5931484f694336785a386e70347258417679624e5a6f6b4f2b57533152723473554241305950586a7a56674f6f45455543416251473473566f2b706d7067674551533056666f4474576e696f6b68426a7a4a71633257675578372b4341674f5147392f4e466a7042644d53775967686b59366d776f676b6452664657785174316a5841706f4e446d7942744c645252446e33356f526a577561614a30596a42414246364442416a557856756f5a7051615949494f434d61594247464f6b55523135494978556e51394f434c78416f69413544647942644a384b5950775561526c524e704971554168466e7233496c3830614b5a5551476a653374676f7a486736684951484d4948493977514563325131565942416e544a7379676d35757732304e63734f53386e367a7662742b62534c5279686b334e644c6433504e75484667754c367549692b34344434494f6245456e5646644c3067796e6634394f5a574141476f6f742f6f6d6b626c6a2b6842324e7847517458705178302f4a655668713055785872727a4331646677364a664665574868414751506567476b2f55636c335053672b3148463177797a4e79586539475038413437476e556758666b69447a794b3574483572712b7044584453654e467a764b36584a2f42425559416b4e51594f7653572f4c4559764d5269497836544c466c352b6570394e5856556f474a6356504531516571382b7a6b785a4757347434695141586c4445484c386b6f6a715038414e376b48713558374a416b4a4433706a354f446763313437797a4d2f6846453237686a6d48415165756b594373534f346f2b5a626c30754879586b42724854475264737767664d414e535367396738515046464356793362646a462b5279586a6943616833546b546a46795a52422f695165776c647451385269416c382b31786a3372783475584d35456f6939646b4b6647714431306274733963574a7736536e366d655243386130356456543374564456646568397662696739714c6738496c466e7953536e45316465504d3566584970784f59476f796b334236664a4236345374345537516a516b69672b4338626375794a636b6b355a4b6562634e4e5248656739694a516a53684b426a43666847706c354558626a6a716c33464a4f39644856476376384164683349505a69412b6b416636616f53732f5649502b4338656239382f584a783830664f7579636135567a396967396447635043342b536c77573555496a496c65503841756277715a7a59633034334e3352346a586d6739586f674f33674d45306a484174324d4634343769344b526c4c543858566e33742b503148356f50556d31626e346f687677566f4675426549413731343657367647706c4b76636e4d3775734855554872774d54456439457074774e65484265514f36334831546b4f575348336437474e777367396749765544344a685a4536475065793864472f664231617065394f4e35754d376850624a42367a52474c7862464962567239416a334c793333743846396465535765377655496d585165724562494867642f696a636a4134516f5070586c68764e354543586d456a676a4866376958696c7951656f2b32674b36536b466d41384e736537334c7a66337534684c706d636531442b3562715031495053614c656e544f4948596c4733737978694a6471383664397544454d6643724c6538766b41526b67372f77426c597a67442f4b46576654374d73496a2f41477269446333346871413865436237793441376c755046423364767337454a367841594c5a63766c716b4d764b6a6633593456484e4f6431634d524a2b376d67373179635a502b39433363387936494d32727064634437766347704b59622f41484f5a6a54764b44627550386376472f77434f4a746b317950743846335055646e7273437861654d6550414c7a6f3958336867786c462f696b5071573463504e2f384153436736566e3071774a564f6f6a5046316f687449506f797858432b2f7742314c7879476b643337557733393932316642423254746f674d66676f64724446635962376377384a6a4c385578395633686977496a58365548612b31675467414f4b726a733763656d4171754c3937666c53705046322b4359622f63747079393644732f59326e4a2b50344a66744c59444d467978366c756551694d6748503730783953754267597339583150384548552b787469724d45493757313268636a2b3633346b36514a617631426d55742b6f336f6e72783452796442317a737263656b52634b665a57785573567954366e654c39527037634554363166616b6458387944717a325676737a354254375333484f6d6135632f564c6f41365079536a31612f6949305164593747474c45714859327a7942584c2f75397734422b5151487175346c6c45523935516454375377616d4b62374b775230774463735679763733636961516366425348724e794a6654376b48572f743971505357615879532f322b77615169445867756550575a314a674152692b534d5058482f35492b3542304a374732656b674d46562f6264746c456539595a65744e31516747374b67495339593875526c704f474251645537437a45506932535757777479464f2f6b7565505735747146734d717836354843555447754c616b48536a366641686e592f676f646845345a726e2f3377597a424c393379526a3633484b3265383850624a42763841734c59634434706f656d32316a6a362f61447845503979726c36394548776778374d4548512b78747470536e59787a71736e39386753474464755079552f76316f466a4754635167312f5978633438644b50324563636d775a5566333362746a37755753722f766c722f6b656d4f686b42335870316e636b54693975342f69697172572f337670314e77504e73654856792f42756131786b2f7657725a52687570797333514a51302f46424c473932752f774371314a702f7050544e64473364755776483178343445666d755276763855733365766253387558444a6336572f33767042466e65524e79336c4c386a2b614431687578596b556f755a63395133634a4d42612f3841554368732f55647475782f536b482f524b68353571336437507a5771497a6a67677147374e372f6b6a44562f3875542f41414b457762557865742f546a4839513976324c545932314f754d5841704b4f4a576157713355483830486174584265674a787a566a5a726d624338302f4c796c3142644a41554b41305569446877526f4d55437334524261696d496f694d45435474517544544d504535466358632b69433235326a5247506c7972452f6b75354b68553549504b617862653165427479345377376c324e706361324e5753323339744463445463416b5030726a377a30362f7434483755366f48364a6667677375536937782f5973676b7830346a33726e6265473676337051415a7363616336727277394875482f71794875514557684d557179795839724b3331414f75684430653747546938782f6c2f617448324e305071757638413651673837636a435461777848315a6a734b364f7839586e74394e76644856624e426434667a666e37316f762b6a79765668634d503559554b72742b6854684969642f58456a776d306737317535473545546751596e4d4b6e63624b33664f72777a796e476b68332f67567a4e7636504c6179313262706a2f44487739346464574d726f4856704c647944426474585147334138324f563230476e487448356535494a43635364517551384f755069683268644d7a6d2b4874376c6d33477868646e357365693650444f4f50654d434f31426c46732f524953674f474b563856736c74584f6f556c793666656c6e7448776f5277515a5357723363555a5544684c4f4d72564c6f4c63516c6639503755414c465436574c4931354230424e2b334641686870637173456d5771624f4f464661684a36307155477178754e5a6165504658794a6a584a6371455462704844367552576d4e3655664655494e5a354a5a534e4b495772327344366e77524a593845454746554e4d5a4a656f386c4a4d53676a4538315748623266356f766f546d6c6664784b414370626b6879776f6a4f6f447151415a424135545159704e4c2b394e594857546d67746b434d4577593051646e66464138325a4158414c5a6f36717346415971447151576a3366697164787334627949684e7870357456576a69725936544b676f67355550544c65306e356c754e654d706167744e48447262704455574b34487a514563366f4d48624a43516275516b576f364269526a6d6f51434b714374586f6742704c6a4642504547344a43493936625163636149734b454941654b4d51774b6b6b545772596f4270514e4b464e326f455a437141516b5061714d6139364941775a6b7250303549445568383351593534706a31464166705142786c69455a596a494941536c5570674d6b436b38464f6f49614d2b50656d636c414e47706d6f6f6741434b714350306c41785a6b434142514b557a774358566d677133757a7362364268634652345a5a6863495433666f4567502b54626b343566734b394b5256384643596d4a6a4d504473644250547655625071467258617848696a2b617475514d634b4c7a5739394b76656e7a2b3732425952385565584c694f574b365070487239726574433730586667657a386b4738675a48384b704a3234793654554c58647369566659726d33626464416346414e767478474c7431423171494244726b324a5474587843756d56432b5337563043544d634d30465a455a56474f535575334a4d5976546769326e705a414b5943697a3737426839547253777a785758655a486e376539426244436d444a715971753368324257696d4e4843415a31514f4c356c5151663349455a594d67567665556a484e50347644694573736b43747a435531367553746b424c7143545750442b7830476378693766696c497051317a5630695a5643706c49517771677259596f7a6d543038554a355a4f55504c4561356f47414a6f4d506d6c4a3039694d5270384b684c354163454545754a54514269616f52446b67462f646b6f7845574e66676755777a686b6954316451716a704937555377446f476a41676b356c564e70374f615a3552727854516b544b7663676767616169794c444251516646516e506767554f6176524745694b4651784d7171483957504a41784f726b6b30313144396963555130595a68424764485469796d6b6c4b496d5170526b4562714465466c42445646484a6b385a445042416f784a694d455a645237556354704a51696375417851414178727a55505365574b413652567970414f5879515455417a56344954416d47346f73353073724e70616a4b5a427951554461617043517a34712b7836646174786155493670654a7775693042306f536939554656753345454e43502b3158486132707671684835464e45555673437944504830754d61327053692f77424a71466b6e427055465877347272526d7837367246754e6a636d383742446e474576774f53436a6353646a6e687a575939524c4945755a526d4f6f556c48683765354e3453316535417457344d6c594f2b487954796441784a3755453030354b61434d6856426e466351704b4e4848354946446c6746303971477435315075344c6d45414631307474496d476143795a3030397968774a514141474b4d6d7977514c4b4a4a70524e61752b5164583048787438307070676d6a49653542693961324d684b4f2f7742742f77416b504533315234382f795851394d33734e33623879502b7150416f37615942386d666850682f4a636a636265666f3138376d32357354386366302b324f434473627178474238794e4166462b43352b6e7a434b7656646d7a646a65464b784963637756352f66782b78766a55577453384d7561447279635547447170794336537a644e327a7146644a6234496a706c524153637a3765355232465843597354565452522b4b42576f2b53684271654b596b48327a55417279514c514d33765230305336526c6d55355a766d676e384a43422b616c4d79703830426b4f35533555756a704a702b36696a6b47714247594f464d32474b4c764c6d6d6f6355454c436e464b534770564639485969645830353449415a4632516a53694f5964476e636768484a527979495a716f446e6a3765326141647455334167305569434134524d61366767516a6f54526c704341486367616c416245492b6365496974525030344c50595933582f6757694d692b715742775156573678666e543237554a3471577731746a786c5874556d4777515a79326451714a79455146726b4f537a6b45464174504579456369794a4c70424553514d445469555931793756426b7949656e597941476836667a5249457646696943596a4a496543425348445a706748347036524f4b414a38576141455553796d796467334e4b3270394b41366941346f6c7a725646754a376b532f5a2b4b434358596b7166454f2f38557a6e4c346f677634764567487a556b417a6f3663304a546e6b4b4949326b6f466a51493150596d4552452f6967724c78643855324e654f436a36687a526e5150774b41647546564777442f4149706f3150484e4131775144487043504654543031544845384543436f302b7a496d70626b6751593052642f6367456647793062537862756b33445755656e712b6e327a575856706935576a61435a65583035383043656f375437694551547072394f4b7074656e324c582f54666e4f713655792b4a6f6734685771437146694d5234496a6c70546a61324a663841544150455556754a566b4546666b6d41596c776862386265337469744947705a72735977303342694a6a3353702b4b44584c773058443354666333503950795863594546635065786663483279514b474e5642716c33664a4b7a446d3955305178417951535a654c68426e504846456b592f444a514941544b504e436f4e4b6857554846495154564149754d6b65524476524b415a436d53624b675a41704f4c5a2f4244487554796b44574e4166676b6c5874514e747764595045725a36662f414d5230302f71532b61793269664d41352f6b744f782f346d6636376e7a516154683270476f3577546c3044694f4c6f426f6170516b51532f76354a6e31636b5a54656e42416736667754474955694e57574357526675434273485338307a46757248676f513241506567514f5378554e45534934596c466737657a49494252444446474d4a41396a6f794c5551492b444a79474c6a4e435568456464667a514963494342714c684c6d795a332f4253676342417036547835492b4b716b76346b6336494634496b464168696d63596f464a656f34594252673734496d48314f6c4d6156514e496b483571552b6f4b427379436842415458735375444c32716d6c45596f697249464a7a52414f49784b5053464750656741674770696f59765251683856425531515453596c30326c3845706b436f412b48376b4249315931484a6365383475534a5858656e56677554664131462b50775143594d474b59676d75446f616156396e5269356c336f4378776167526a45346c416c78704a77524755585146737854322b535670554c7177315a3157775053653130426c714650656b354a6d30343449453950743759494961734468376b7077306850685633645141527739696731656e434d493347593957504875354c6444716b473777755a74347a30333432617967595362395854556436623071396333557047647556754d50315976777777346f4d6b593955363045356950764b637730313470626332596e4d4758666d692f444149434f4b426c6c6d7033596f6c67616f4534364b4b4f4233444a4752455470413571616e385151534a4142306f4d47426c566b4335344b4376594d55456a5575576667684d4f57507554796b526767486c6a6945414d644b7162706250323936756e45532b53716b424842416f6a55635374554251757375625a6c625144527767767431314d72414139614e37594b71334b764a576839525073575157507070795630656970504656694f6b4f6166784b324f4834494b69644a726a6b724a323964794d6368575379334c353877577834667158526847767a515335634669325a3535647179656d32584d747a4c4765484a5637776e6433525967656e366d354c6f4536414952796f674a6b36706c466977544f4e58596d5055677a3349526c306c4a47586c304a636667727a45475452535344394943417775526670636669724e56324f577150754b7245614f4d56414d686967713357346e6574797452426a4f564679726e7045394839536b5034484a486146336f456b4d795764364d50795165592b786a41746174693458707270333846644461584a4136744d496a36595a72717945545573506b6a6f69497645596f4d7350547a39456f2f36767a56304e6a6469532b6b6a6c2b31624e4e4b734664416b306673396d515a6f574e4149786647693178595262426b4c6b64513655674d7535426153455857665759716169546767754d2b4876536d576e45597173535a45334b49483878366a424154474a53524a384f50354a53434f31425a7145533067696233476a4b6f784f4a53756330462f6d5a386535417a30344b71704a7a2f4251764b677843433033414b756d4d316d6a4a6a7a54516b585157777541315238787a5255736662424b526b6776313041344969344a6469716253585075344a592f4642654c6f6575614a755935716c75507a516c476a49483878793955504d396d565a6870786f7942443475345158796e777852387a4f696f30736c5952785157693478524e304b76532f46304245396f51576561364d62754149373156704d6a676e38736f486c6647436875484b6951325151772f616e45576a56416f764349354b61694553426b3359713956574b42684d6d71414f4a516353632f4249316150326f4450726c2f436b6e663869453768777469552f6767327638414a632f31362f354f7a30525056646b336345486b72634865527a56735141774a516845426f6a32644d4e4a702f7551616f6b67675033466149682f4655724e434a6361366a4261346c68386b4477426761597255474a596c55514f56537446754e4b6f44414e6a674d4f39614c63577171344169687754764c365544564137565a6236674e544a42674d315a704a5157396d434431532f776857514c3177515355612b337752306a536f496b31647531454f415751527670446e323571526f45634554414e584a4165784d49364b443936577448374f6159542b4343434e4b38555441385550456d693738766235494a7037516f374d474b64326f55416741422b4b614959746770704a4e4d30427a5145463362696a3563714e676f5252317a7433366a4c554c4e67342b4b5842427133573773375350584d4358365872376c79706572514c67537a376c35652f455475536b5878784f666571764c366978795165704e7a7a51442b727558493961627a49662f41452f6956324e76577a622f4149594d75543674445466302f7068456469446e366e6f742f704231377155542b6c63346869777a585439446a2f586c2f4b3379516476644e35467a6870586d794e4e41463339782f77415a62412f677546687a51564544484d3856336654704e594246657063566d6d75393659496d78316c6d4a784e454657386a4f63597748366e66677144747952313473757531736c684b4f48366b766c6a4678326f4f5063734d572b504a4b624567773034446d7579495148686b444a47554967556c482f63454846386d524744465357337543546746757a42646656626a396342327953794d61365a672f4a42782f4a752b4b6e2b6c4d4e7157774c3936374967347866696f59786b583178376967346e326b704d52546d6d2b306c45744771375551414f6c6d544745525136543765326144684861354e5476644137554131475078586242746a3668584e30307265764d42427850746a6b684c6147493756335459595549353177536d7732414f6e336f4f46397163385030684f646e48466a7a5861386b53726b7041413544336f4f48396b2b714d59756c2b324970556735634636415166773658437261477069594138544a42776874336f4133614544744a535054422f685665684e694a483048695855686234456539427744737232427473796b7476526d7175384959426f34386350696a35476f3041707a48356f4f436468496d6a6f78324578347055344c7647793144494d32535755496b34684277703755476d4979532f5966514633785a486967416b46734f314353673452326b6f6e445570445a5843485a6954376878586f4a57644e644b4562495a32374548414f316d414f5353573075484972306342485430684c6f634d7a4f67344d646b61413471533269394243334e6d41422f596d38672b4c53673833486253415053614a2f737a48434f48695870507436354e326f797474516842356e37512b4944753549547345565a6776516d426c674b6355733749465a526f55486e2f4a4a71684b41684b6f6c6a69782f4a656a2b334741694f7a4645526c6279306a735165634543656f595032667456683235393637336c435a646e50466c4e4d63685642352f37636a4c464e3976704c3846335261414c4748775452326f385269435a49505069774a6a54562b535937635346636346332f41434935426d2b4b45747151656d4b447a733757716b6854386b306266414c30483238544a70525547336a39564548414543315530596a55614f537535397262427742485a565162534d4b6d4f4f516967346e6c5369523075684b4831484e6471566a436e346676512b30742b59344758557944684569337a7a77523161365a754633593753334930644333732b6d6f4f50365548447473446d2f38715943414c43587658624779747947695a66344b66322b3347514d5973655459494f48716a624a6a4c48692b48344943555a5954476e34727553324e6f7a6534482f68616e656f646a5a4f45472f302f6b67345a74307067565a4b49474f6e747758592b7a4566434d45523664616938394c746e4c4e42784e5a6c687051387654556835664a64323536665a38526a48554f354c4c61516d636b4845365a466733387161554a654b544c726e59522f53306a7954793246756247556a46715577373048424d4d6a6b724e44344173506375782f62513430797a707a39754363656e55366d506379446961525352627556647a6f42417858624f79445677512f743155484669314973695357345a4c7378394f692f464c50303978676734306f6a4353636870426e5942645757776a373042366459347a4f5344697a734d3355536365784e35557268315637313278366446337879376b3439506a34703464745548416c624a474b4d5a6d4d54474d51596a33727454324d446b684c30364f515a6b484372695145306265735a5650737937583971747a2f554f7a696f6654625a2f5547365231494f504f337038574f5761724e67694f4c6e394b376b4e6d4157685251624c536176544d6f4f4751492b4b6e37457768444b713763396a6149714b71762b31576f2b4a7767343445613056586c77646e474f4f6c64372b32516a53446b38796b2f743874506869374f3270425a616253444c4f71322b6c6638413355676334754f785a4c397357627a6653583039696230776d3175746373444853482f6d51656e65724b726357345859474e7743513531566f716b752b4173673876752f385968652f71625352684c394d755049724b5056743936584d577437485862474837383133375632634a56784a71743979334339485263694a7850366b484a3276714f333377657a49526e6e45342b334e584754487241437762332f4142573254356d7a506c797862386c6a50715738394f506b372b3372742f712f626767366c2b4a67317932616a6d743866564c594857474836736e57485a6272623775502f6a79726a6f7a3979746e747753526d63596d67516453463633502f41497944324b78654b3952686439506e35396f47444836634f3965733247342b357351752f7143432f414934496c52304373794b6a4f6f334641564f52512b434f4655464e79784539516348694667334e2b6532447a50542b715034727145354953674a4276326f4f4f505641513844496a6a52442b3646327850752b617333486f7475524d3750394f5a3465453979356c794e7a6253612b434f4576704b446f7739526c517970337638416779582b35504a74544d73496950795347737961494f7239784b55664d6738687742575735366e6468394d694f55772f755757334d3278306e5478624261426474334b585967634a444e415a65703344694c6b572f69437332322b73336a6f75334c6c7565576f676648425a6232336b4b784c6a33716d37706e48544d43555167394b4e6d6638417533502f41452f6b7170374f344154627579312f783143344732336d35325a2f6f793879332f32356e2f326c64725a6573324e304e4c2b58632f5250384f4b43723769375a4f6a6341782f6a4e59487679373159624c6c2f63756a494359615651636c686c7342456b3765586c6e394a72452f6c33494d303453776b4d44376c5759634671747a49364c6f30485067657851324b5042426a4554586d724277436a564d5856666c47314c6e2f414249486f66465138304a52344a59334a536f55356c697942644a46516e745836365468787a5369756167346f4e455a4359476d714f6f437072525a41644c694a7a37465a47364c6848646967754d546766336f6d4f6c4f4e4a643875436253775155787233354b474c4d5854394a464b4b4d42376b43564e46504c6b3944326f775930544d784c3449466a45684276716766656e48556a70643046517447517843456f3352315159484e584f496e44334a715945494b76754c734b454f6e683668442f414b6b44482b4c4a6c5a6b77772b4b6a5032494e56753543354858417550346172477769365137613237314838727854364a4f774a5038414e2b61416967534d6d314843714f756a316f6742693943464849445971415956526f55456a586d46493455775378354a677a4f5543394a425042475845705447474f664a475262444242434d6b61596a504a416e53586b67592b78514e6a696f46423855756c735543347355387746414b4e69464931476b4947534545686c4b596e4a4e7070304242586e7a5443496a324b4d35722b354548674b6f416572735a4277653130527737304e4f7175584e4147306c7a6d69655359796243696d726948514b4f4b64714256343154567252415264306e384d6c79765550513765364f75782f547534386a2b53366a653950713661596f4f42365a363763326b68744e2b345974714b39464f3362334966454e7142344c42764e6a743939482b73476b66444c4d4c6957372b372f414d6675434d76366d334f42792f5965534430566d33667433434a3654614a3654484876556e48634f347567777a687041596471666162717a767263626c6f6731777a4234465269433262494574796346736b772b504263653776684345647a7435676a706a64684c34666b7576476f475a5a42444e73566e33774d5932694d58576f6646593939485645455672524266624c4e785250464b423031792b4365505358772f4641486356516c575849555564364b613378475645435379356f4e52676e695159312f61684d4131642b7841755666677132636c574763634361704e4e554354716550596c30786f526b45354a6b2b523449536d492b4c4e4252706363572b614d6d384b61554e645971735246485144547063414d6a6f506238303336695871706f78504242415769337951465151614a76445842475557646d42393643725743346b4772696a4d694e4934424e4a394e6375354a72304f4f50346f484c55306971426851734f514367694967466936686d41656b4d676768714c79524431456b54455a4b456a41755851535a30784178664a526d62536f78414951477152484241374441684b3147464561444a45696e7336424a395054787a516467426d6a54446b564458386b424d5343386579716b6742556f773445422b31314a4d4179434d4d73555338546b6b44787038564b6731514e7a7853747737455957357a416c45502b43746874376d644546514c5946766d72396744356b3559302b5075556a737754716c497252616835636e42723830462f69504571617130537563516c5054306a45494c483073452b6b74314c4e474a5057636c5a475538506d67305270327132492b437978756352675666472f416d6862746f67342f717041336741465462655237315153634d485772314f47726443356b4c596a37354839697a413653654f4e5542506863462f6d6c4270713534636b3746716c6b70356f4a52335a41524573634650346f31547a4a49596a322f4241706b356249354c665a44777173454c5a4e57785851736544386b466a4168386b49754f614c73486b6f782b6e42414e4f7274536d496a544a45594953624e4142576a7574414e7665516c59765634354f71546a795559366849654959666b6777374b3763394d752f61586a305350394b66344c7237766151333167327031427735465a3933746f2b6f324f45785563704c50365236684b342b33766638414c6234346e73514a36495a5778657362674458435559793747594873577277535a33694d4672386a2b76357762544f4f6d584e73466b7546356b6654487039766567465a45444a46744e426d68483449767971676850444a4d6453585348726d69493170546b674a70795367596d574b6b5a4f41366d43417741465467675950554368526c454559736d497230594945314164694d6571756162737a554d616355435a754553644e4557346e4253516f676a635559565a52686e676f37442b464144316c776d4d513748424947795247444f676a745149674134704942756d53734a7177784e4543676c3659494555596c315951783071544d58397943756d6e396959794747534d6758536d477270663969437a626e2b6f53503071397338316d73452b59514f465670674f594b436d7831517a553076696a5a3847724e4e4b754b436934584c7250636739566f6c384658667031444e4254486b464b7769364c55644749426f63454166554e512f61704561676d6d415a594e79346f4e376b4169776b376f305a6b57634f68554241724f65414359787279436a496b456b73614949527771686f3171466a30672b2b694c45637967534d652f4c6d6c4d613976742b784e49667077545955464543366663554441696754415a31514a507664424247722f7743354b5a53666b6e784c6e456f74496e546b45433078794b4a706878396d5279536a6a77514c707178524970307656485646695369522b6e464173634649784c736346415363635554506a52424e4c56664654716169676a7a6f7055752f356f4255564278556c31465279773068576557654b43706e3472567478707441442b4a4a3550457131694963754b426d5a7063506d6d314d377175564f38492b4c6d67614c4e386c644638466d4a4a78556737644a4b445845505256623050596b59354e4c3346434e32526f644a3755303569554a5779474a42434454437665755a7678706a7134542b43336259614978676645497842376c6e3330584771704234494f644934746767615038453869353046422f774253434579346f4d526b796155644a354a545375534144477455634132616a4f65587a526c67677262426b326e4d594b596c73304d57346f41594953445577397345326b6e386b5a4434664e416c7336626c75504662665432386f6b306a7275662b3559344136343171363237505435626678532f397944524168414f4f31426b4446792f74524150357355394d514d55426a324641653365674a642b784b594f3548765a456852366f476b4872372f6b6c6a3764364147446f6974586f674f434768715a6f6b6b436d436a305152672f64324a596879706933494a71444641733431374564495169484b4456664538454456376767496a32354973616f6e4949466b47596a4e45657a7069534333636c4d4b49464947434d694269706f72784b614d574655414263466b445771674f5251316b596f4343485a444369416f58344a6f6a6767496f4b6642412b33656d77504e4b487977515238314430466c48476445537844594942795a45466748514a414f64656167366a70793979434d56496e676d636e6b6c4a6f674d6d4950426369364e5632353846313871634679626b694c6b78774e4f7a3936414f373933656e3074375a70474f59546b68366673514e49414f6c6a4b6f4a5a4d4478436a417534514b7a6f77496a3763556f69306d4b595144734367485a565174334a6a55632b53553653454561506345434e514f684e32306f69344651675862337a74376e6e51596b7830796a4b6a7467663372527566554c312b326252746944686a4c58716f6664565a7057775477516b54676578424c5451635a55557844356f364b5578515048424161597161584241556b666356424a6a576f434144423237536d6b484b562b71672f636a72776646414a7864732b50636845746c376b524c336f7352674f6143754c787247716d703347614d596e484e4d65497167544538507a56526b63446c332f7356736f30344a44422b773538304161576f646e65363277354c486168314d484c725a454d5271515777476d493755385a6b79496f686270485555397678534b44516f47314d6f477778514e3245626b6f6b2b4373676779577263726d376c2b694448745042644c6358504a746b344535717659327446743559794f7558615652646664376e792f2b6e62724c7451572b6e324e4544656c3470313773767a5634416b35516e64486d69304d6735373035446c336f55465649654a30344f705769527a775541427167545252445348634b7a52526b6f4446676755686f6b704445534e4b4b30756f4973677230737365624f756a4f675850754561714945626c52474848334a596875724e6b305a6b6f4e454d6772625a314c4a43343153437259333476574a5162425369555344344a4958725a774c4b794a6a49597567456f6a414a5a41647966354956514a544641744d70327a514e4233494b395277795464494b627977436f49676471435230344b52416170523078513052415a6b454d5234554e4c4f704b3148676f624544575171676b6f306f51674c52484251626532443451366874787941644166494850337143315875553871333731504c4748346f4362594a664e4451416353366e6c6a45684854474e5252416774684d4c5948627752483858596c304f657a356f4a4b455166596f6c73525254516358716c4d5267635542416a686d6f4967394b6768306f6655676730767a545349415368434d532b61426a4d59664a56362b4b7330313448696f7a6469436e555a3146456453754943486c6f4b532b616b6f746b726a434f4a4b5133624d51515335474c565156414146796d3876394b68764165434e5031476934587250722f6c77386a62482b6f66464d5a63676736573733753232635876334b2f6f6834757a325a6553395339524f2f756562703032346a54423875666156676a316e564b702b61746d65614144544b54717944413459717533574a4a785674764750445656427573774237507857694d514b354b69794b567a56734431635a42426549304a6673415638434b4e3763315741496a7078785673494d45443650707a66325a50474967484277727952476d4a6641703442334d76676749727954616358636f5266777179504c4241735358344b7a53616c4c5475347134476942636e43664770514c4771425a304461673945524d78536655476f6e61514e5032494a57674b4c4875524c537a2f46526d7a51534d71736e674753787734464d325a4b416b50564275624a6a414d364f4f4f4b42484a4c6e3936664370566337304c455463756d677237635635752f2f6b75755457725230784f5a78376b486f4e7866695845634678644a6670777748494c6e322f5750754a78747a4236694b397543366f7436535267574c3979447a736f524e30784f4471715673654c427677566c32743257726971356e346f50533761516c6168776235726d2b737941334444466f366c30646f50364d485a637a3165524634536a5179485633494d5177664e62665348463478796271574756667a572f307147692f4a795841434472336f476475636332702b5334586c7653543831364f567656456a4231686e73726b616158357567356e6b786f426946566374367a70505544375a4c727a326b31507370794c687450616734687457384343472f616c466f52446a55336175332f4147365571456a75532f597a686d4b5941596f4f4e47304348314d6c4e6741733558612b79754d48616f37335250703550544c3979446854687236673579376667724e46793358564b71363876545a5269616467512f74733370777a516367693461367a3263556b724d686838313178366266445230756635754b4d76537238533873454847596836797964696d414f4d696665757766547275475834706f2b6d3359485552456b6a33494f48455477315362745454684f483153624e64622b323342456c6e4a37325351394e753555397561446c365a48776b2b2b6839366a547a4d75365874376c31663766636253584e55543664633845616f4f58624e3065476336382f696d6a4b37456b536b656f56572f2b33376a3668337152324e3035506d36446d764d76706b556e395354475250454c707a394e7569516e474a5036713855527362394f696e486b67357045347431666769393031424b364a394f75613652706d5554365a65646f786f4548506c754c786651534f4b713133414b6b383131492b6e33625a38424d694741556c73623331516f67356f6c637731534164507275326a71446d7661756844597a6c32702f734c6a46324645484f38792b657345766b6c75334c7a39556a5867742f3246326744565a4c5030792b4d49616e7a5159504d756653536d4735334c754a466250734c6f50544276685653657a3345523141486b677a523364372f7545486969647a664f4e77305676326c782f77446a4a42354a7a735a35776b66394f43436e37726345754c68535333562b5165567771373753356b4d465a445a6268395168542b59494d5975584d64637665726f62693945734a757259374b364b3663654b62374f3642574e4f54494d33333237474532484a57773375362b75662b7157535032643139656b68302f38416235794868626d67702b2b7678465a4e2f4c69583471523357342f376b6d542f41474269614f334d5a7152326c397567647943736237646967755550594538743965497154544e4e505a585748394d76775466322f63547841414753425276393042303370646853666637683955706471742b7a767653325737555273647849485550624a425750554e7a34524b764e51656f376c7a2f56547832386761305046474f7a7559676a33664e304150715737494e5165616b4e39754b395244594854524c4b78667251706f62573571454a4138526b45447939523363662b70542b564a4c3148645a7a7754445a3342673668326b784c5445653365676e3978766b4d54722b41516a366875766f5963456e326c364d53342b58356f6662584445426b4678395433637154622f546a38557350554e7a626470592f715366623359595244653346536531593670654534494c492b71376c6d4f6b3556545239563341476d6e37465844627a4e57785668734d634366626b67582b3637773041694170623954334236787048356f477849514259755367624631394f6c42595055397851655a686c5776616e50724638414f4154376c6d47307648674538646a4942797943302b73332b464d2b702f6239714a3961335043456537697176745a4f7a5966706f4544733965566330466b7656747844712b6e6c464e4c316d38774c52593135724b4c467a55496b45382b784e3975595630456a2b484642644c316d393473527969794550576272755069714a516c34764c6b57512b336d5164554a447551616836357541583666626d6c2f764f34306441442f67733473455a453979457251464a43764e42735072463079306d416635496a3179635a4d49362f7741466b6c5a4a6a51562f4a43567556716b597454455a6f4e77396475536656454273526a696a2f6648666f4c35647935336b74485335357147304956496e33667351625a2b754854515570676e487232724345692f59793572783855524f764a4e473254346b48522f76736136725264435872756d67744d437566716b6342587378566b4e55542f786b486d454771353632514138613542506139646c434e594f545663377951415978446e39535879726842415164496575617359464d5058504d4c4333686a314c6d2f627a6c4b676c576d464542444a734548526a36374453397942483663303339377473386263767771755835635451436d584a4e7046496b7652423044367750714478374566377a5a31654163485850755778703078475062524479672b6e76384b443033714e694d774f537762556d5677506c527553366337462b314454634776684f50346a386c793975336e6c79376f50536257397242696351723776684978584d74793054664d4c664f3442417567354570364a6c6450625852636a7a344c6b6a706c337136786446753571794b44733673306c3233432f45776d424948454b61714a73616f504f627a2f466259506d374f52747a7878576531767478745a2b5275712f706c4f4c45392b4339593456642b786233454462757845346e496f4f584464786c487036684c365a5643473076513263764c6c5345716a67446973753839416e61363969542f7744534a7033484c7656454e76366e446f6c5a31442b6550356f50556a714434684671636c6a39506759513637666c6e4d667457747377676a416f4d6957627453686e5a41324367475345327a55646b454a347073464973674354326f49684f324a6870414d63696e55516354642b69522f354e7630792f54395037467a4c684e6e7076435553473744337379396269684b3347593079446a6755486d3756693566597777504a6249656e546c48544f51506452627a747032512b334c44394f53787a39513871666c336f796966346344336f4461394f7651697775674236644b71762b6a54765331693545486a702f616e2f414c71787047523757552f756861675a426b506f647a776938334e6b4c6e2b4e2b59476e654a497a304261346571784a5936766372507654494132792f61674778394f334731502f414e7872742f6f6c483858634c624f4d694b724263335a7439553341354c4c503161647678786b496671642f676736766b6168706c5875634b714f7a755733307a376d6f75586539656e45473543426e6262365a4d5232686c6a2f2f41426445482f684a2f77447a6e2f36714430633755704e713775536f6c614d616d6f58452f77447868442f736e2f3841536673566c6e2f4c37476f61375568484f57702f686d6736586c754878545347504650624f333349383362793576444c7447534268495649787a51557971475065694342696a706f6868346139694264446b6b6469535243636631455a69424645476a616a475873566470494463454c636441413549535044676745674d3074427a644e3950464442414258755270516f44684c48384534444268673253425766386b42464f49674375484643476e456f4a426d64475558706b69496952726970454269794341436779524c6976737959557145506945423148484a5144674541334770716d427a434352496937667654474150496f446d6d71634d506567727557737946534f4c7353742b48466c6939514534523832326350454f3142424673584b4853467a50376c4b4f656f486747545439586c454151397a483845485445684c6777556b3250374678626e7246323357525966792f73545239567654413073334f4a6442317737566273556b75575056626d71734b675a42435871747a394d682f70346f4f7271314964564f4b3548397a6e5455476233702f376c4f5962524c745a42316259667351507379354d2f5553412b6f5237596c50483143354961745949375032494f6f325a46564845527177584b6c76706a36614a523668642f54497935494f6f435a5554776a707278584c4739756b734b446870716764376641594434494f6d43484b476f6d754b3530742f6350314e5376536b2f755a4930366950394b447136677a6f6d7062325061755350556270776273306f663347374d3466443830485838756f4c49475978584c6a7672306348776f6f643775496e544f4c782f686a31494f706d416135705245763847584d2b2b6b4b73663953596236342f574432494f6b596b657a4b6558356c73776d4e513453775061467a76757034316267694e3663525642793931366466394c754864374639415056483950646d4f613748706672646a66786a356830586547535350717567316a4976346759724d625733505659694931344e6a326f4e6e71666f4e766454382b7a3058486559796d4d2b2f6e3731726a44533375717357303373724c516e31522f397659756e642f71774534476f2b5048336f4b764432724c762f6f667571716a76764c6c6f75366d3467505656377a6361353074334a61523079695066696732323545734277717441384c724a744a473478492f33555042615443686a7739766b6753585a56505568536b4d4b6c52336f676f414d6363554f32685638786f4f5655706867436754532b61526a44484e4d7a343143575142514355535063684d52302b77566b414a59634d315758346f4b4c6b61304f434c354945504d794f4b59596f426d7855634367396d556c45755477516c55383041614f46613155595942435548476b4a69432f4469676d74673376554c524a436b6854532f597051596f4445426e4647516b514b6e424e70616e465141416667675544765269774c4b596452775571545549494848596f7a46307863644c70587179415359795a33545362744347475655582b6c7355436b354473393662474b4a6941684b4e55434341666d724f3342544233434a5a3250424149755333314c566132772b72784b6a6257764d767563674858536f454663656b5a4b475144305566676c784e4545417277444b43476f2b32534d3575654b676d77634371414679326b736d49306c494b6e7456734e55554267574e425247754b51523034352f424e4d5a6841776330434e77617145496a6d6f4a5a6539425663326c752f41517578706b325379585054663841733366394e796f393636496f586b6d6c4855673446324e79785463514c5a536a31522f5a336f367451315a44394b373465495a59722f70634c703879782f54756376436535427a544936714b5342667078556e7174543871344775436f7253515443736e4842424a7977624262396d4e64767657417856767075354858616e516956446b55477951435a6b4d73676a4b427766385541774c386677517a7a2f617242484838554a4238776755753963464a436a4952624231416561416936625539663841754845666d7333712b7a6c50547674742f774174762f3152344c546f7a2b61666258664a49683942773549453949395574656f573367476b5048484d48386c5a667365584b64775954625679492f504e63572f364e754e72766676646d32676c35526b654f492f6c50775870524c574e4d386330484e62394f48357075597a52467252493279634f6f63782b784532786c2b39414278554a4f53595135684f4c52474a727751556c41674e38316162515538724a30434d3439714b524d7356614c42503155374d30504b6c492b4b69436c794f6b3566464f37717a79537a4f48536a62534831683046635452467a6d6e4e6d57426c4769687453627852446f464e516778495444625a61676d466b3553446f4b376245454252714f6666386c5a39764934454a6a74706d6a67494b785771683675354d4c4d786933747853655463624a41526735514d7375784d625578395566626d7035647a4d32796747716c6346474f4a787854433349427a70505955445a755a4d794132533069542b6c58776a6a4c357175466e54556b4f517035676e724f5143426242506c784a784e51724a38637679565778754335743453414f43746e314f79444f545467713568787756302f447156636f6167677a674f584f4b624447715a704d31434237314f6e545241704f627068583271687a5447725651445551477954524164306f48306e4568304143636b424c67664a435263456f6d4f55614a6943675545594945614a616c414151575145536153514e455a786f6b384a39717077584b474c4e52414e4c422b4b684648546b4d55756c6b4336586f794a704c55674271545546545641434b55505570703034664a4538364b4d31454138564d304b793755326e466b32724969694374304d656f5a4a354174564b42514d67457365724657527338443074376b62547a6f5663426b4f4342573059436755594f5737314b4d366862415a6f4a67634b6c513953506c364a4e374d6847625651485458424b5a423054476c4d552b6752376531415938436a474c66735148476965464b5a494662546e54336f784434344973486f6d59456873304249726c564c637351766a5263414939785970384f50344a73516735302f547051727435552f525038442b61776c784c71704d665448357230416f5652757470486478725359384d7578427a4e4e4835496a496e4e4a614d694f6f4e49644d75324b5a715646536768647959344b5a594f794955304841344946664d55775544446b555a31385075554c593549424556726a373050475854796b65376b712f43644b43516a31786642317132682f70312f584a5a59316b426b3457763032457232336a4f42306b6d654e63796730456a736f68677756683231302f5750397148323137457a482b31416d72696c6352703755567632747a4b55663976375552744c6a654d6366446e373046526e583471486b72593757365072482b7a397167327435334d782f742f6167704a597345335a524e4c61336a684d663755527462677a696770314232727752477157412f637244746275416c46763556507472786f3866636753526c706f6c50625258666133426e486d3455473175484f4b4241476654775378476d7056683231376a465137573663347567554e6945744f31576a61334f49512b3075343668376b436e77302f656c3131436637573841776c456f6a6133424a2b6c4257546c56453143732b317538596f6662587335523979436f53474c4b4163565964706449786970396e6362454f67726a4a304a5143732b307576394b423264334c5367584d4d6a6e554d4f536637572f786733656a397264794d5167706e46384d4f4b5a334b63375737394a67503950375544744c334743426457717642454e67703970663477662f41464a68744c33366f2f37542b61425449696a7063447854665a337a39555552744c7a7538616f43445536614f46794a683958466454636e7949506349476f365233726c6c713971416952784e555454444242696338666770705a75654b41366e7854437442564b7a46796953395542635549537a70346b596c792f47696158684c653941615736704e447837307848426c4b346f466352707878554a2b6b344a67574b567466426b45794e6553563051414b79782b444b4d7871674f70712b7a6f4d4a6e69692b614a6b506f51497a7952302b374a4143696c666234494432344a52774f53505565616d6c734d506d676c433549716f53443249364b754648714f4341667a66755353424f6d58374659334434344959304c596f4b79416131537a4f6b463668576d5755736c5430365333356f46746e2b6f3363743049555747772b736759734676684e3334494c524546684970774449316f7134444e5852716553433249646b625667655a4f363369594e6c524345656c61724d5737454750315431434f78746743747964494432375664744c5032317658507848716c32726b54394e334f39395347343345644e6933344b677670777750477677586476504c7735494f4e3979625677583530457a312b334a64714d67573446633264727a496b584750746773304266327a2b56494750365a2f677944756e696c595935726c6a315356732f3162636f6e2b4871484f6d533078395473534e434834476944636c7a714653647844393067717232354948394e687a6b5547776b5238525a5a70622b32447067387a79773936776b43523153367635716f52496653506367756e7572747773385978355650354a4a41345938314d4437666b7045682b53426f74486b364d52707a5574677369356478696765464f70474c38556f714b2b3557786e52416f4248654d3059526671774342476b56547848424138584b667731782f4a4977626d6e714d6355447872565275435639564169506b674c41494774426971336d39436c6158363046326e4c4a526d71714e552f31664254724f457a376767766c4769686a6d565257674d6a564e716b4469677449716a4b4b714f7248565243546a4d6f4c5a51644151417756656f354571505445756774306f6165395643347759314b4a7642694d454675614259487456486e6a42413367434167756b497331464e4558664a5a353365784c4f396f34494e4a6c4770705446417a6a5077724c353857366a46304c6d34674d5a44386b476956324473784a355a6f2b64712f36636c696c765268714a376c574e36666f6a49397a6669673641755438496942326c305a546e776975634e31654e59772f7744556b6c63767a70723067384167364c33637a454b713775375673365a7a424a444d755a396e4b2b4f75354f536739507477464b65334642666376366e3041652f386c587468646a49526e534a4b62375951712b43305737624e7171585165553952336c3664326475643252596d4f6b536f7935777436517850354c627635784f3676634e525754745143426f7961496e526b7352775a6d566c42536f5147492b714a7252577736694877657659716f452b474376747842494a7751625955417a2f4141344c554f5978376c52624249636c674670695a546f637665676671774b763067595a71717a4a772f74696e6a4539794232616756735936465743523074543471794f486269677478693437464332487379574d4b6773612b7a7179565a646943635155776c30696e656c59355a4a34777749514552617149475a7a376b7236714376616e5a414255744a457842777777544e6d6d30383649414132436151644733514d4d4d2b61625452384543514249374561484a534a4270777854523148464172443349586273626364633666696a4b63625131596c63766558355474796950717a4f546f4d4f39752f65524d7953305a644d634141764f53446e717256656e7552694c5a696630727a526b424976523845457341692f624f596e466574764e726e32792b584265557467655a48743731363655756f6b7670782b4344794d2f2b5751474c344a4337396d61754544356b2f77435934347175556645447a39756144314f334839434c35414c6d2b71442b70456e4d4d4f316448615345724d48796f73587145504d6c6a306a776a6767356367616671344c5636666674574c7335587061527059596e4e2b435532577864677135573479384c383351646d50716d316b4f6d62672f7773702f6464734b4754486d3952376c787a594e51546867686f6c6a796f45485748712b3249306b6b4469507954443158616672707a4334677345595a342f75532f62484548765165672f753233794e4f786e5333505539703955763971345274532f552f2b6c413759522f535548652f7565336c345a6b7433664e5165713249755363753165656c5963305247326b517a6f4f2f2f6439744b6b72326a2f5354386b54366e74612f31334759306b48354c7a737476682b61486b3663366a6c2b4b4430493958326357416e4c2f617266376e744a4d3937352f6b764e52742b5a4279666274532f625a5964694430773955326b734b6a6a68384b496e31546174535a482b6c6558386b454279614650354a667351656b50713231384f7469324c4b523953735369346c416a5069764d6d7a7741512b33306c394c684236663841754f304a7063375544366e7441386a637a38574b3835354d5254546a7952386d4a7978354950522f334c616b61764e4875524f2f3234464c6a7679586d5474597938493936513763784e66676739542f414844624f77764e2f70544466575a5631784b3872477a4c53416e2b326a6b37495054533951323745546d483449666662624b61387a35516a574d57644e354169355a714950526e66324939586d442b565165705750714f4b383139714d30664b7944446d6739523933596c345a67444c696f647a5a6a39516465574e6731314a34325030346f50542f64575865524557784b51373761436d764467764e773233454676656764764959594e58696739494e35744c684769344172496269316344786d4a46655847326b5730707a7474546c7350346b4870787662656f764d436e484a4d6435625031696a727970326d6b55774b6873457866416f50526a64327454307734352b39576a6457542f4d764d7732305170355053347737634548707062697a45307751473874525053315279586d2f4b70564879493674516b7835495054692f6248314a4a3372597850775a6c35775759436d6f46386869704c5a4354346f5052432f624a3851486169643161413851586c6874524c453056336b69486862444e4236434737735341305370376355346e624c7351764f655733572b47484e4a4b77596a36754344306776514837566235747552715141764c2b522b6f6c6b2f6c73584c386e7167394e3538577151782f5458354b54753238782b356557756251503030504b6945624569474d7a58706b355165702b35746a7754446f537651643951586c50494c356f786a4d654b626f50562b664751307550666970356b595336744e6665764b6d45702b4d765869794562637646476e747a5165734e794568394b5953743858586b593270767172784c6c534e6d5679735449646944316d6d474a7a2f6939716f485177476f6469387647334c6e492b4b576f357051626b596c69673958485450784d534d46594a785a75505a2b4b386648586738304e42424a6c556e77346f50574359774131484e53576741344f2f77416c3559473547674d685439535936324248665642366149426b394530326a4c57614c79706e666e395a5965325341755841307a49766b53673953644a365a5946575445424a6a57516f764b53334638564d33532f636269493863716355487264496a584e475038495a65546866334236664e504651583931344e522f5076516573637651317a5663764c7a707a586c516238427131474b66373363534c45757944315534786c456730356f4143416f422f4e4a65574736334d6169564d306f336d3430366454452f5656423679347878626e686d686f686d503556356362376333493435597456434f34335561526d55487070576f484141706847443949586d44764e783955704544344a527662756c675a39726f5055697a5a75556e624d6a33676f666232584c57394a344c7a41333136456d6a4f524838786635492f7742307667596b7339633048707446746d4d5755454c565141764f48315064796c5130554f2b33476248672b5344305973327a5275356d522b3174313151685476586d66376875783951626a4a4f642f75583862664a42364937537847676a714b575730742f53333756774476747a71304335694566377275595479664469673777326b4f43654731736b4f514f316c35372b36627954794d78324e2b616e39773359672b75764b4f4b447647786277474b4832567032304633787a58446c366c756f4d504d616e36565a2f654c2b6a55396348356f50644c6e377630717a75547238467a4b636148397136436944696d786532396267316a3963507848354c56666d504c4a6a56623257652f744c6435797a532f554548456a6f425a6e543178786f6c33577a334e69526b336d572f774256756b76642b5372747a4533302b374d4873782b4344743757377268702b6f59725271717934746d3462636f79666a716f75794a4f48434267676942376c4d454243446f6749456f4268696a525244532f59676834714d67347755466149493271707755786f67394f6167346e4641544652694b4a6d624642795545775571674f7048414949455645554556643633433548544d554b744b546d6735642f77424b4d61324a4e2f4469734d37666c6e544f687739736c36494656584c634c6a367736447a74496e755658577a77795854334870556d657757422b695652334c5059325562307a6276556c2b695259393345646941376665693447756743574266776b6f58646e475231325a43467759786c345a4c535051746953336c312f6d6c2b61763841375274576253522f714b446853736154552f6233663476444c384669334f31747a422b3668354d7a686568574575304265736e3662743777616364556563697377394232543169512b576f6f50446276302b377454716b4867634a7871437362414c365048305059327a307749374a532f4e43582b50656e4847332f414f7158356f506e2b33335633617a313270474235653243395236642f6b7471364244644452632f376b664365305a4c73442f487654733757503841464c3831442f6a6670306e2f414b4c663670666d67744675452b754c615a595a7849565537637853717573656b3762625035416c414849544f6e346c6c7046733861494d444d446c2b4358526f6d357a577956672f53635658434479714b69714338686f716d585452587a6b377371366b64534259744a4c705959664657636b6f71425641754a594b79673568534d616f6d47724e4167426a564f4233684d484351314c7669674d51704935494552644d7a6667676770386c4861716b6159564b4142425a41644c564f615945594d7957636e706d72447a775141366851703431505368452b324b4961574b41747146564a526c4b4a6a785569414b4f7743654a457345484d69486978616e385076546750576a71753966746934594573564962693337754343796f3663516d397a39697a666432684c532f766a2b53732b36747a714759494830386345597850622b5351376d313730737435596a4c466b46766b686d614a41373670644c3161504470565833566878586d724a627132333850464249516a77434268694554756262654f714564315a48457367595777507052454131593156493356703675796362757a4b675076514132344f39666d6a35554454676a35316f654b542f414965354e4f2f62346f414c63486f314d304e47717041397968763278577145743361784a497951503557594139796a63575a566666575830786c79552b3774533659342f7741534234526a48676d5a7043534133466e4575347a39736b763356694558663449446f667077526141784b57573473795961334b4d647841596c417867414d4b7052714e614d68353047634571655a62773979416c314a32426378435537693339535837757a47726e2f41476f4b7a7363634e4f58464e74624e327757696166703973452f33646836532f77445379655734742f7151466f752b58347071686936724e2b4d636152514f35745436596b6c417477663035635248465a6653643963336354435445784f504a6137312b457263345278307375542f41492f626c5a75586f54704c706275643048634169535978785379723766697070786453592f4e424a45632b435854775537455a75616f4b7870464a494e787172437a5a6c4c70306f464568483278566368704468574561537778514a70314e2b39426c496556486f6a706d555a696f3561696f676869334a4145756d45346e455971415a6e466b416937307a516f45524854306e322f42534d52775144714a37464a644e4f4b496e714747534234767a30792f4e424e4f6145672b574b5030394e53366b51522f4b674d586b7a2b374e526e4e5554554e6b454e4f57534154714b2b39507059686c487a6a3371544861676b52524b4253716b69596c736c6159365258464258534a504e426931453141574a5271314b494270364b7054496e7730545263314b55784f4278516164704847655278576d51594d4d3156747642587356706b37506b654b4148716f6c7735386b656230553036635545444b4d5467472f4a41784a6f3248746d6e442b424142456d6e7852777a79544d4d4547796955444f544a7659706a5369474859697a446b3641422f7154634f436a386356434d382b434275304b43555456364b4175464b4e6a56413368554d7a6d67394f61654d6e376b4766653755626931542f414a496455447749722b7863533030346a5454554843394e466565323430586a4131307a6e4576797145446e62586a48365654396e656a67597554714336644d5033714f54327367356b683668487769325278632f6d6c387a315546764c74312b72562f2b7375724f4f76735331795163782f56546a4730702f3841764947677367727143707141366d6d4f4b446d782f75625638672f6d6f337149424d764a2f7744557569597830742b7843685968427a347933354c6a7952337954507635526152737365316235516f516c5a6d42594944734e786562797479493676706c4842623468785259414452384d6b306961484a4133716f75473147646b64596d4d65476135632f766e61506c7433726f364956456e3779683559505945474456763238634d5030705951333550544f322b6136586c352b78516a623936444235652f4d544c7a4c5468473250554a502f414662665a702f597434675a436a5555303163682f6e7851633255642f494e353051694c667142482f4e48686746305978447437555562394e45484e6a6233305453374771596a6652703574767458515965395479714d6659494f6635572f2f414f394539796b626537657436492f304c6362596a694d45336c2b3542674e6a643130336f2f3756426233776656656961346156753056644e7069615a343855474132393037432b332b6c4162666354724f38543255572f574a5a4d6d4541334242672b3076696e6e7941645357323347456235626e4662644753686761647144414c4f346a454158792b66537039766538586e5335394958516a4854553468466e43446e2f6133662b394f492f68536e5a33584a4f3475446d4b4c6f45557170477547434448445a3341662f754c6a665339666d746c7361524e3669644a50376b354430344b61654b424e76416265334733427a474f487452614c63775841794e6557617068307653716d3166566569432f57442f3651677370323856586447596f7269716271436b4453547a52415a2b78526736494c507051435166444a4d49354839794e434b3449414534356f414f5a716f7a78356f3048687837564c63736a512b39424f334646686b7049484c465279415233494630315134386c47655444735241626b67444564716e4a48463278436a746a6967675042453473464455616c4d365a494a414a57695766735272676d6d4f4f4b4152672f4e423244506d69494e5641314c6c424b5336564a30504a475150636f5155434149694d63426e6b6e397663717a303971433633446a69726d627453577454567a544455616f492b6e6b713341566841504e5631426f676142513174514b536733743730576f51674d686d635543414f777070414556545266444a414966776f6a706f51704544417078422f626767474f534d43446769425776616a46712b785143706b475450793730444a334b4a6f616f4441756d4665354b4842354a73445242794e7a2f543345347453656d53526d71722f55576a754c633835516e4833565645594e6955456b4f4b41694a4832716e4c795170676768692b4358415a4a33707a5664506267676b7a6f44385077576737412b4c7a43472f6871736c2f72684c6a79375633545969616b6e446967356c7a303079492f72532f326a386c5874396e7564734e466d2b42416e557874357271797377416570556a6268634431486567352f6c3730762f774353502f30512f4e4c3565397933492f38413053365a32734d7a4c2f636c4f3068786c2f7551633452337a6638413341502f414f6151386e656b503979662f7742464664493761427a6c3346456265492f562f755163337964343748644874386f4b437876542f774474522f38413055563076746f385a66376b54743766502f63667a5163333762654e2f7744642f7744386d4b486b62794972756a2f2b6969756c397062352f7743346f66615775663841754b446e437a75733930582f41507052532b52764d54752f2f7743564664583757337a3935512b307438443730484d4f3233594c6a64482f4150527855466a65662f31662f77444a43365a73572f44567530714461576f3444346c427a425933704c6664452f3841356d4b483275372f415036732f7744364f4b366e32747645412b38716662572b48784b446c477a764866377154663841306f7152736279542f77446c452f3841356f4c7248613273435069557374705a4758784b446c6d787577574f366c2f2b694359626664502f415064532f7744305958542b307466702b4a524f3074484750784b446c2b5275523166637a2f384130595147313348316271662b7864503757314c474c2b39483757306147507a5163723766637977334d36667769716e326d34502f414f30586667463144744c4a70702b4a552b30733436416735513264366a376d364851473175302f387138653564596253794d49425162577a6a70516372374f34616663337531566e5a45662f7464352f77435a646f624f79486141716f4e70592f514851634d62575831626d2f58684e456251346e63332f774465753539725a773052512b3173666f6a376b484847796b545463582f39366739504a723978662f3841306937506b57545452483342443761796161492b3542782f732b4f347666384136564e44303978572f652f2f414571363862466f4268414e32496a62576855516a2f745163622b3162653466366c7937636176584e78334c56445a326f436a74327136647979656d7959366869794d3933744945786e4b49497851555864766230536b4d672f69646d373168306e5541634675334f38323179314f4667786c4f513067442b4a5a4d4f35416f61744b2f4648534a4369464535426f416756694d426878516b2b534f6f346c4e3467437a494b6d62784a6e624867694430313967695270434254497977444b41417638416968726a71365755303957434345474853692f532b6634496b6173556b6d4e446b676374526b4b45744c4a487753706b6c6f61673177514e322b775345667079544d576650424941776f67614f62302f4a4667596e344b54426467674f6f39794356793449546f575a67794d78707246715a595555494241442f4642584871446755543661506767775034496c325a41736851526242306a476b654f43614e4f3056344f67427172775156574b584333697a4b32327872772f63734f3363584a4d7568462b7842664179413430566744463158436c4a594b794959746b677574756662426139495a6773646e39517856356e634850755157546f456b5152564c4a3553446c5768426b75346c38306b6f50555a72584f324a592f6d71343252694a4832376b46486c367679524e764a6765356144747766716b676475425548336f4d38725559526f47717172682f657455797735724c376767586d674f6f5643653448785a4578794b4257694b6e464e464b59687543654c41567a51474d5934657a6f762b716e346f752f6368463265507851474d536130526a462b784d773431526a536f77515341654a656f524655596456436d69364270466d30714633526a6a38564930374167634869676168676c455150436e5163373732356762546b66705466334357646d6130655649463455713641735442424d6b464933386a5879354e3231512f754a646a626c37664261664b6d35637555664c6b417a6f4d387431642b6d32652b69716c75373242744e2f7177573379387a56415775626f4d3333457a34594570664e766670442b7a4c5a3558444571755733656f6c326f4d37332b46736539454763686b50594b386257444d35644837554878534a2b53444e355535564a6979723873765753326661327a3467696476625030734f31426b386b3861464b5953475a57373765336778622b5a56665a32523950766b677965584a3359704262592f7744355258534f7a732f702f774455557632646756304442427a7949765552504d70324570644148756f75694e76626a6a4350636d38754d545349516373414f37736d456753774978585146754553644937564e4561426779446e455231562f4a5743304a64517174776a484d42636631623171477a65315a414e3468332f41456f4e59684c685251777548496b2f7972796e39323374774f62737138674573742f664c363731772f79794951657346716631524c39697765712b6f783263664c67663630754830766d6561382b4e3375522f317267482f7742516c55584875396379387a6e6d5478514c474a474c4f61796c6d6330726d33326f682f636758514c626b493459355a706e4c4f63556f4d74564b48696d46656f393643434a577a624d53435173316f6559566f73456954745376747a51644f4c514438553976564a675430732f76564e6d52627138533057366b38616f4c524455784b7444526f4d54677134536f444c325a57786a454230446d4a666b6e6955756b50584a50494d55446a39557579754b4d6e5a49413763566467675271646961414a4c46537077376b336951414d4b5a685764694a69525134714d5164524341747077784b6549413658716c484248536767642b7857457654697135477445394f3541476375755a366a367235454a6977786c454f2b4b3162712b31756359554c4c7a7536422b326b77366d4439324b446c584e78754c315a335a5654624579382b414d6e72585568495535464e734943473774366a69554865336352354d3574514446655a6d476f522b3565733355645669364a646e76586b6951532f4241323330693543576272316b6263684d5264655373794f754a6f7a7839363968644a6958374859636b486d2f2b57354b556a6d55766c6b5372554b2b64732b59644978376b546234634b647144746248717352644c7564764b354a34302b43797739534733746933354a4c447843576161353678456c2f4b6d427866324b4234374b624d44373671762b337a6b616e393649395968434c4553537939587335435568326669674a3256305a756671532f59334d5454686856412b7557734978507479556e3631314e4730343535684134325a776b4b2f4e494e684e7174373142363244307a746e476a664a4e2f664c522f36633235565144374b556155356f53394f6e51305448316d7961364c6e5a793730503735614d71526b33504a42492b6e58436351333663506d6e47786b43702f654c4c4f597950762f4a5553396374442f706d58657943324f784d6a7149373378522f74785a774d4d65617148726c6f2f7744536b503841553667396174786f496e7678515365784c644d5135783442534f776e45365a342f77414f415548726c676c6a52503841336977613958626b675358707a30464a4442413744584c457847664d70763737592f69373054363362616f636469426637664c484c346f6a5a534651443845592b74324361366f397777512f766c676c757273624a425073702b454d4f6371707637644e6a71495063796b765862556641352f30706637785946433466356f424c303053706d702f62705156683961326f3661794c596c442b2b37624371425273705541436e324d337761714d2f5764764a394d704a763778594d66786b67582b326d646456554a656d58677a4e494839556b2f393532734a4853386d5076522f75396e4433643643732b6e532b6f6a386c507344514a70657357636f456b4944316d794b6b4944396b5a56634e7a554f7a4a446c6d546a31766278384175562f53507a532f33726167736462384a424168394f6e47544168736c584c593344445556702f76466d51654d6852542b38576156484e426c2b79494c776f5662443036354c50386c6550574c5178723253536e316a62346b36666955464a394e756b73395570394f754167664a5852395a3270465a7a642f3030526c3635747878626c45664e416b765462674265696e39756e41315a4d6657396f4d7966394b7348726d3149385a457563584877515a6a366464464142337652512b6d37687136475a58483165314b6a676e735a5048316d78476e552f4a426e6a36655764675432565453394b6e566f67393630663372624e5752712f30344953395a32686f4a483359494d76384162376b644d59344e6a2b43623747346347703731664c316a62506e376b77395732352f554547582b337a683259492f5933474a4f4a3850597450384164647646336c547553663376616c39556a5844705155783263326b342f6c716d6c735a537172342b71375166583845304e397463544f4c383047516245344f78504c69703972634a5956504662507639742b765533755550716d33416333474a515a66735a4e314e2b6151656e54374f43312f3358616e36332f306f6a3144627453587651595436644f4a315278644d665470737a676a466c763841767248366d54783356677359546a584236494f5766546238324d524676696e6a36624f6d556c7468366a6166786a4d4a376d3932356f5a2f7451633657786c6e6e6d6b5070732b33757238463052366a74685458547354783332326e547a67446b45484d4870306867474b4d665435487458544f39734d2f6d4139694133746f3453487951632b5778755030354a4a6248634d534978666e69756c48645750313974555076747333564950797167356f324634774149414a552b7875616d62504867756e4c66376549704d557742435937367a444673454849507039773668325655507039776a7143374233466e2f6b31785a41627977533179595a427952366649534f6e4a4c3968494e567543374d626c6964524a782b48742b3545377178627870326f4f4c485a5859504977664d616354326f6a5a33383762486d56325937697a6348544f4f484645336262735a78666c4b7144676e597a75456b5550492f4e4765794946616a3675664a64377a4c594c76524c356c6b38554843387136515978746b413570597871414979316469394635747551624a53562b4c446767383943784d467a4173552f32303877415034563368666a4c77736c3132375a61557572674b6f4f4364727078686a385573746f662b6e624c387350697651487979576353526d32626479446748617a6a54504f69575667697334795059752f4879716d55617079626441634f53447a634c45626c4e4d76636d6c7479574d515764656930526b4e577242542b6e793979447a68327246694437636c4a376557737845534f656c656b45677a4776616b4d34696b666858323730486e2f414369656d63543344386b73374a6a477443614d79394c4359784d6d664b564530626d6e71424864564235723754554e5a476b63797039684673533378586f644845422f62347165584454725963575164354246524245455645415750642b6d326431575161663634304b324b495050334e707574734347383647526a5358654d2b35625054647872653258635965324e4f61366a724e64326c75354d58476159776b454768676f674579425170676d514e5541493730716b704d6f61494a70344b434c55516c544251535145714369684876532b394178504243556d37564d584a514748557942695267464e5446386b6d7051536f67736a564f713444425749426767556561417851517063536d634d6c6f7a46424a534371753262643649316a3237565a7152623979446b37726137797a58617a314439467976754b345637317231433350524c54626c7a48357231392b7a357347456a41355347494b354e37306935754270334e2f57442f38414c694a647843447a6b7638414b4e3948704d34767845526b70622f796e64787063307a707758582f4150776874542f314c6e6254386b502f414d4937552f3841567565373969444a442f4a72737136683265582b31555850386c33516366307950355630542f694f32616c795935736c2f77447768592f37307376705163342f3554757334322f3971552f355276442b6a483950375630782f694f327838325a2f77424b73482b4962555342383266772f4a4278782f6b2b38684f7569513461614c5a752f77444b495837494541626433344476344c6350385332636a343768393335492f7744345232574771343437502f795547437a2f414a56716870334e742f346f55397665757a36587666766f797544776a446a337249503854326d5632626433354c6f37443032333664417874475568496731516167535543355668783661705a527741514a6f717855616c457a676a45464d4955715851566e5339557a444246336b32705070616d442b3541755748656f614b554e4578686952564257492f7177523452543654696a51557a51563644674170476c636972477a2b4341706967574f44466c4d30592b4a534d6669676c416a456a4e4e486b45726355466d6c6b49456b7363464e4c467852517851633766624b6479527557704d616445685354664a6370764c4f69374854633463657a697651336d787a576137596866476d384e58504d6469446d56505341695956396d54334e72647342773979332b7236682b615870754d516677514c434552696a5749504a4f53356632717070634e373046596a4c50443235594a4441745350617254346572344941356f45455834496153445657434f714e55706a717878514c7171776f796b7061757857486c6b6d6c42787a4b444f4978692f4e4f4c6862544842487933706a77524f6d4962366b434f6537357145544657446346596254314b6e54674d45434442686a77556b58704b71656f4e4b496547735543687868525152302f74434d574a636f6d6c525641724579556a2f4e54386b3774306e48696c41424b4259445755305973534a46474d4d564a6535417449304e5278544354533570686d33616b4d4d32716755783165493137636b6349736e474c4a5a526f47642b796942617a7278507756746d57676e6e306f4555634950706941677475755879706d717a4c7145692b6f44706c375a496a554a6457444b5463476944525933596c49516e535238504e61433861346838467a47303969305737354443526442727053534e7a69376c456e41385570444874514354436a4a514d315a4c464b517862464258706156666d6a4a71784e464a427767597547515a7a4836545273564d45382f467956636f667177475341676876324b4668543549434f5455525944444e424e5647356f4139364e5a5577555a425034517071306e6a7837456449474b426c385543396d616e496f7a6a68374f6e4c3861494178494c6f47754f484e535931593534496e6d45414546477a526b3439753547504142416b615949306b3852696d594d78556c703730413030434a48306f675552314d616f453074546968703661347177435438696d454e526246426f747342705448334a3441594a5a6734527a5143515a754b4552784e455777644544334946626a67724763756c6e55746d6d624949426e52514372674a34307269364a4f65614251574e457772345564504651527951462b4b426a5245427a5842484e42415433495a50676a3068526e6f674d526779654a5a4c474f6b4938325157686c774c3538726433534d744d763977597275784c345a726a2b7051305839592b71492b442f735158475742785444716c7177474377416e3936736c666b526f63782f48765162744a66325a5453636856637a58504d6c414f4f725566662b3542307450373855664c376e57537a6349496849713433414d5544343055416f3641597333376b4463515070427a566e6c6747707756414e4f7242445645397944516263576f55426242774c4f713966656f4b63516765567365463671655647744f6c5669596c2b314f344a344241777352496f543733524e6947494a6456776b47775550446a3730467073525a792f7651467145474655676e3949556b2b5a5a425a477a48496c4e354563696b3570482f41445150486232794d5a4f6a4778625a6e50765567515647716766376547465549324944416e33704b6a48334b526c566b4668735738616b6f5373572b6676554d6d3857536835555154376532613141375549324c5936617067546755424d6e3830424f327430786674552b3174444c346c534a4d6b54517669675562653145356f7932316d66302f67695a426b596c716c4250743759792b4a512b31744f37662b6f6f696448497751643430514c39745a616b666d6b76326f7774366f52414c713853536b63634f614266746242724b4164534e6d4e755775474576334b77534d6733424c4d3134494b69356f666571626e7757676a5669714c686569436951593851724e4c456e6968474c49307a5142324645636e5442694834705a6e6867676e5163423746545270374552476e4a534479446c416f6c6e334b4d43354b6a5030594a6d6f7942496b464e5244416a6d69534367585471636a4a52334861674a5a7069314167586d55326249696d46555446386149414451636b4b534e55534f6d69574a5145414351536d4c383159447737564b42736b45616c63556c59393663344d4b38564d616f4270444e78544161672b534a654e4b493654775153324a514166414a687952374b497846614945304876556253614b7778427843566a4a4163656b34494333303154614169415452414731477543624155442f6b707066484e466a673254555151524a514553376a424e474e65574349397531424d304177504e4b31436d456e514776656e5a6935536b344d69314b2b3542496773516d4474524c6757524469694446366a467a616e776c702f3341724b78573331514e747a4c4f4a6a4c2f31425a4b6b6f4641556b34384b5978417139454d41314543396276676f4b79706b6d4c5244302b61567156446330436b4139367a6e62325a4773652f714834725451647951773159494b62647533596c356c714f6c6950716c677651325448514e4c456677726959534c31664a644430696d30682f712b5a516279564a527a534f4d73457850424248637144735368734a596f2b4846424144676965435846536f714b6f444c6b6a564168324b6d4e58514d446b6c4877554443716d707a52424b356f3177513156716c3145464134596d694f61516e54553979684b41756f686b79674e48514857634553614a6167415252642b78417259756e464d45485973685878464153636b583449476d4b4244486b67596c4146304d436f3147344944454e52522b50424179306f49476169474e516f547853786d39416773664a446b6c6430516631494378565736766554626e637a4170326e4434713270574c666b5438753263444c5565794b4444745a66616743513530784a5461704636346e73376c41436a703556434147524c38556c4d717036753641455836732b39415a737a454d6c6c457468554a693247535068346f45784f724c676c6e4776465044566e52535161714252467578423636416d4131456f4d3155432b5742524433706741554437694d6b444f633073366a74526f4f52555941345a49414a4e306f5944414646683845325064693642554445674e57715a326f684f514861674c525a51524a476b594a59343855394b6e42416a687a7a2f42416b6b567a566b525471437267644e43674c45496b675a4b503370497363506a6d675359524d51445174326669724a597556575878346f4b4c45544b36546b74385467566874316e5159397933322b6e707a51614c635846466248486b6b6846687164504846425a6277342f677264623431566463385079566863396941365269452f4d30644a414e514a794f4b415a766b6a32706644795271454461614a4a426753536e59767a56647950516333515a376a5277564a69537a5a7134796346492b494f534375524d696d6b33654559784f615349596165644544644f49716a475053654b4f6e5361596f6a53334e41736f366d487456573046436b4558427172596761614945455142555a736d695233706f786b6148464d494e5446416e5552704f43735a7145553470575a4f41775144464e455a5a497354324d6f357751534962464e6b6f4b68434d576f67414f6b3855756f38455a6957415345452f556773316c71685148395355786b51447149536d45686a497367736b2f616f386b49755251714145645770424135726d705771474e564a784a7a4b4365447654565361434d4336416752546967632b35415049616b44436a42796f496471427052344654426e5378426a2b3948745147526f364c6843496f337379562b48733642395879516b2b4b5556376c4e575341366d4e457572535061695751345643703357387437473062732b354269396139552b78686f6758757a7779626d7648776d5a47526e57524e547a5233463665377547374d764d2f416345306146386d51466a7062345949416f4871714b766d6a4b6c523765326142626351522b434d324a42503730496b786477694a6a45443855456a6d654b716d617572545576452b3544537872563046634d6346496b536f33636c7744464e435045494c4944525869746469476f567848795755794936546c38467332773639584a6b485173776a337252482b49594b714d4754323958476943335378664369746a626171534142465663774277356f4a7a50743742474a3168676f486648464f476a51494447476b713044334a47656d4b636e56683745494959384d4559645663416d474655613443714138676d484f69554a6d2f5967684f514f4b496a7978554d4d314a6b5246582f616757556f326f6d63793052334c7a2b362f796d414f6a6277314439557346627564784c65457a6c6845793078356a4d727a47486567375731395a6c754c6f746557414a477255576e642f2f6258582b6d6e6356772f54682f5874367369752f77436f6874745042704f6738344344376c663666415376783968334c4e62704856375557763034534f366945486f4e384f693452776465556c46674379396475596e526469634e42493756356173774e497141674671324a585951496f5a5258724c6b6e6372796c6d514e32325a596173563632454e41366d596a4e427a5a324247547834716d516a6e517273655843703039507479565a733235355a5564427879476f415345444e7941667958614d4248454d3375565534577a56384f4d654b446a367052693569316571714e4e4f7269757835466d6461592b3951576263736d2f4642773551475178514d54394f4f58373136443757414a6d3248755652326c6f2b4750385344684333456b6756377769494142673434727477326350304247657967613661494f41624d546756504a797747533738397043565a436f5666324e6b64576b50376b484238707a696a4731717156337a744c544470436e327472466e35494f444b3058596c51326d366e6f7539396c616e314d584754555366322b3234654f574344687973416d7042437238725457492f42656b6a3664617a6a704748734570324e75513074376667673834596778306c7046545443577254543472304d7654344d7741594a763764455930644235333759533668552f784d6a4b77315069765251394f68444a6839584e4e39684441554a78516561386f2b4534636c50492b6139464c302b45614f6850307949346f4f44477a497359353039714a6a596c7964646f656e51774234706a366246756f3034386b486e3537636e6a56494e714332724c3656364d656d32385850596e6a36645a4164713855486d7a74644f4742552b334c4265694870396e4930393659656d785a73754f53447a6374744a79694e7358624476586f5a624f447354384552735974515949505038416b796273566632776d373050765870667367534777536e59327a69483755486e6f374d3661674a6673706b5a65366939474e6a6162556a61324d4b6a4e423573375139773978556a744a654a7356365437527a705973455a624b4c7553596f50506661543146382b4b45726338413639463974426e6b4835706f62474538522b3142356637624f54384d4659624f673147574c4c304832555763686b66736f53616a6e76516341626638456832307341463650374a79376e6e795379324e73687056664c696734497345787251486b6c386a42784931586f423664626a466f6976765a4e2f626f75512f3730486e54592b6f424364696d6f767a586f2f774332774f483731423664434c2f53536548424235305749785054484a5274514d6d654946563654376531474c41504a4b64706246526e6a3349504f526a434a72386c5a43784836717678586f50737263532b674a7037433052534c424235306255456e5234526b725074512f67444c746a30794a475746453050546f7836515333454950507932306a585342334b5273306476685665674777483852484e4b6654774f4b4468477951476a692f42534e676b31414a58654f78684b66566a676950544945426967344832726d76376b2f32623158614f774f556d7970696b2f7474726871497a507a51636637586d65314b646a716f75392f62774b456a6b79503841626f4d65706a7951634346675250683967726a5a66715a64655070774242316b41636b543664475131416e48326442784e467550416c3830664a456574763841614632592b6d322f707049704436506265684f727451636d6533484d6a46315a3549465032727052394d4548447550347171796578444341375548462b336a4b70697a2f41464b477a43497970775859752b6d696448374b705436634f5151636362537a6e48342f74523869455251632b4b37413950674b6c6b747a30385842774b446b2f6277417748372b785162614d715a686451656e4e4678696561622b3336754e45484b386a5371355770534e58624b713742395031426e5568734b4d65333239753142787a626c4531643871354a70516b2b6b796d4b664e64695070355a2b4b483974636e4855666169446b4862383553516a624d656b303731325a656e317a412f46566632776d704c494f4e35416934632b33596e6c5962416166395258572b786b78694a75682f6251526f50562b724a427a4a786e626a6a6a5368553633786b772b6136635054356b616143434a394c76546d2b754e66676735526a4e2b755263344d667954577a4e6d3153393636583971764436362f7741763755663762654a65553875474b446d7663674863794879535844634938522b57507858562f747248712f4a4a4c3036623667572b4b446e526b5941694a6c37793556594e344847587658546836626366583470634d45307654622f307367356364527135427838546f5066773830767758545070392b4f63666d6a2f4147712b2f697078306f505a714b4b49496f6f6f67695646523041354b5a4b596f565a414946776e5377775449464e56575a58636743725348515a6b4753642b39476e6b6b766d4a52556a7659597a456f667a42616d7a555973677a2f63575a42395148357034396643695932347a7869437176744c6636514f796942784559354b536c38565835456f56684b5150413143587a53356a4f4e66707a51584f314d6b7659674a3675314538596f476878554d713971726479377152636f4e4d4d4878546f414b49497958735459424b53324b4263305a4e6956473549544c696e755141715a4b44686b796d7253676d4835714e7178513155777955314e584a41686359464d4b6a6b6f484b45684a4176613642494f4255726b6e7751544c324b47724e46766967546c3765354249795a367071396944456d7642485542584d6f4247764a5761544b676f45494279723046517344696a354d48647171784641756763464e49544b4941516f775255514c6f6a77513052344a314543655745707441687346616f676f6c614f5341746e6746656f676f6c486767413437466f4b4269434779515a3842706453504e586d48424c4b424f4b42593831432f61674f42487652714b4d677275687734565563586569766e5448425a785771416d6757612f73376434363464452b4f5257696a714773654b446d53684b4a496e53542f4a48453043366d6946794f6d3448645970374d32363235616d2b6b342b39426e4d435166636949476a6e3243574f4f502b6e676f4843417936634d75394b7841664e575262336c4b4d78676756333756496a554f726a524d5761754b476e705a41633047397755426f3570324a6d42515679695157466171426a4c6f7179666d555a53417778514b54456e534d30686a567868775434345a466b336951566e676531453471616631666d69483441494a45475234717641567854615148487952424758754b4153306a334b434f62493077434c695747434263582f5677554a3469714452754d5564546f44466e647170596a365a564b68646d6a514b565143594553416e7078526348436955683855424966386b70443446717074526c67475965394168714d4345414a41365737454e416e5647597148707939736c4a754747534272467964696772444853563049584e51634769357a4e31503349573768746c34494f6e4c71354a5144696c686446774d63565963454366424130434c5531756f6378374d677a544c554b4648545842496b6a4644476d4343665456567456736d566b3847535150356f42707a48636e78524170524c4e41706b31446d6e4d736b4b7843674131504a76306f492b5a554e4741772f424755523452676c6b66464d5a494a455a59684e4358755377505652474e4f534139514a554e59756f4d4f614c55624e4172454978724a6b7863304b424a77442b3342413764504676696b454b4a34304442475261707237636b426a795674746e426a5135383156474f6f506b74467141464a494869787954447171614a6f784a485348566e32776c57534369636130524d434b2f4e61664a6a6b6a355551676f79344a4a4e785a61685a674d416d45496a41494d304f707139715a6e562b6744425157346f4b424867677a5a43717646714b67746a4242543463564e4b743873387663686f6c33494b325964714856334b32517a5159494a45353449754d3075614f6c41577a433576717352356c71584855502f535630512b4f6179656f776a70747950307a2f416f4f6445474f474753465a564164574e566d536b4f39554379554d65786b4449594555436766756442444d7972466e5769315058306e465a4a4271304c4a67644f43445a4f6c4d446d70713146686a6b7137633966566d684b4e5846507851584535464456324a496a5868337148554279514f4b59715236527843574b6a6c6b444f3661435458704b56674d5544366753772f63724357594530564c366144464b5a55636f4c784d785a5136694658716a6a785131746b677564303054526c6e314d53324362454d4d4546356e6b4d6b4e544871565a6b526c336f52496f355157367554706751574b70656c45524c6967744a3147694a6b35376c6e46776c5765626c6b67736441416c56367779506d4433494c48346c4d5a4d37594c504d684d5a4642644b544251537a437163797853756776316b5965354f3759724f50624c46457a417851577950596e456c52714a5946515361673766643730476b3438454a44334b6e554a5970364870514b523953707646583949464f785533364e6b67523663666238314b7658683830416f7a4949346467674a61585a536f37555a635542416c68676f4743686646544241695a74584e434c4f694272727751513474774446536351314d55326b6843517967674559754278524a7a62322f59705550784b47565545484a4845462f6367426b6f49645046415930373147594e464531536951694542626d6d617245494131635a706f4f49307252417071375949793452556944474b4d4d572b614353714d4b6f67697047536375614978743661667351426e726b45635564414c4d72664b4a41356355465552376d546356614e754d31594c6351585a426d306771526931414b3851744968455641435a426e306e67694979563669436a51787a4b4f6d756175555155746f4b42437651306842554b344965572f566d72644b456f6345437334556a7a52414955796f676f3363504d7358496e4f503756676a71594e6d506575726f31524d654e46795950355137506b676378565a4c6a4b6959784944706369436768693365704b7442676849366b706a7078515179795a415a4d677850656c4934384545674d506d74766f38694e71426d4a534878574a364d74767059306263526c537678516278544371556c71424179303079536b7961694377314c7141354f7169344874696f36433456514a717753413137554a53494b42787a544b717448716f786a314642615644514f465743366d723368412b50596f354f4371427a50747a52312f556761707878785452497953665336476f78774b43357a33494f79714a5545387330466a6c2b616d716c456d74514d666246413572584e545546533556684b41732b48656d6c49344b6b53597369663146425a4c356f385a4256366e4c484e51534555446d71414c46495a4d777a51313170336f4c444e687152636a464b4454696c4d6937494c4877487855684a676b727766384146545547366851494c444c58515a726d376f69356350384144306a356c6264624f566842794f6454336f465a6a326f36423952596f3149513035494a346646696c4c3571325665394a49506767456e4264516a4a457561484438457363574b41454f4b4442517879436151634931784f4951494f6e7155306b315a47545a346f534e644977667351446b5568365043725048496f526a336f4b3234342f6b693756396d514169394d55354753424772375959707a587350746d6742334975587267674169306561423079494b50346f753152524258526759344b306b532f42444e73754b44615a6355414b517361703344596f423877774f5341634e4a62696977436c4a565a4d59682b534243574475794754414e6d686b2b5842535a31394f53424c49494e43633171455333557149437241592b324b3077654e575a42666169634665596e486771626275417234764f4e55426c6b4664454356597167784944697175746e6967636b4e315a4a513731544f6749686b45626a3270716355676741587952694478514e5130535853305754344f7137754c494d394f35714b7350337179596153493676326f465a38564e43667979564149733243414443696b5931624250477557437338726c6a33494b6d5a677247484a4e35636d594d6a35527a4b4373523434666b6f525772712f516835584e4257525651556342574732546d676263754b434e37776c416642506f4a4c6c4d7943734a677a497369675534493969575163567856586c56724b587651584e7855715656354542783936677352796c4c336f4745426b6a326f47304762464c3559777167664a486b7168434977566d6d427277376b414d684770397539457a42536d49646b513253436338736b7267422f696d492f636c7871516762554336414e536941314572356355454d684a4b4f41543468696c514e4b574b516b34496e354c4a767655625778742b5a50786654455a6f47336d38743757306231374159527a4a586874397662752b7547632f434d426b724e39764c75387561372b47556367466e302f704c785155776e70784875566d7468517555306258454a3765326958656b6b43415566326445645053726f5734783756504a426c6d616f4b3349376c496753724965394d595648483431546d30436159664642544f4d593041596f595946315a4b4d6454422b7855584a784652677942484c4f6e683155415657756c61555631754f6c6e515748476d4a5077585232594d53334c504e596f4d4353315630747630744c46676732414e773763557769545170524c5347495634422b6c4130414233344a32444a593468577457694178775944696a474f70704f704539544a74445a5651575144643454364e5355515a302b6b6a6d674c36512f636d67524a434252303855423858596a454139724943754b786233654777526174316d637a6b6731333978437a447149422b6135743331437a492b49456e2b4c67764c622b5a755870435a316154516c55575978686467477071446f50534745576b526e4752393638367a69685972302b34674f737878625432746b764c4765727451613969543538522f4546337437474d724d35444b4d6c774e697733554f442b396568335a38766258524c394a6a3730486c34474d514e533062486f334e73354535716b525a6f3969763256747478626361673965585967394c6369664c6c47586936682b53383143336f424567357a355658714a4445526f4f6456672b30307a6c4a714642796a625a794b632b436b726c365972636b512b5a58542b30342b4a4a5059757a2b46427976366875654b556635545434707457344d54317a7068314c705432656f343449665a6e735163364d356a367a32464b623034665551756c4c61584253454e587469684c303654366a447451637a7a72676b486b78344b473966705057563154734e556d7278552b786c705939705163337a6237755a6b35714737754d69572b613378394f6d484553414f59542f59334b6671624b6f43446b472f664d756d52696d4632395856636e4c766f7571646c6342306e68327066735a456c33354d67356e6e3372627969585050696f4a376d5231536c51344c706e3036344b447436696c2f743938456c6f442f5567782b5a65642f4d707955462b364d4351324754725639686548442f537044597a69373979444c397875576545794554756431554736616e76354c542f414736363267645859704c595842346d2f53677a4863337a4b7477756c46362f496c726b6c712f74397972793766626b6e6a36644e394c6c737967782f63586f6c764d4c6854377663777a6436725766546272616e646a346343516a2f6272677978515a6a76747a2b756d66414b6f37726374714e7a4f6e53756a48302b35476c48396e532f322b5a7762757743444c4863336d72632f4e41626d384342716c4c7479577237476250524e4859537749516338377138492b4d38697756673364397752634c5a7546756a36664e7173712f7370453971444c4c64587045474e7958626b70472f75494755544d6e6e7a57776243543047436e324d774152564269382b2b4b2b5952325239696f623235616c776b386350324c5650597a4e59304a512f7439776e732f5367792f65376f46786372775a483737646e36354d7441326c7966384a42375839796e324e794c3064426d472b335a494d5a306a6b796e3930764750555337725448595865475076716a483036514e5151554755372f643469564d2f59496e6537693555354856517254396a6349494665304d455073376f6634494b68366e6641445369655246555076743041774d545842576a597a665650503841464d4e6a4f67694b653542524866376c6d465437594a50764e3461786c2f366c6439684e326d45333976756835416b735044703979444e44666271423050453974552f3978334d694e626176636d487031364170623164364d64726542477179516355454871573534787238557638416364794f725750636e2b327643706a334944625850706a7135494550716d346a4c537764542b36376b476c44324f36746e59756879594678537158794c3448574936663451667951442b35626c73596c2b33765148714f35446c7765394e396c6369644d596c73654b68326435324e423249444c3158645430763559376b663774756e36394a566632643632386a45454a7a7435666f4c2f414d4e55416e36787559306f702f644e793368546a615462554b646f5a47577a75654951592f423046583978766d544749393955773957765136596a3371665a584d6f767863714462584a59786f674d66584c7548376c4a2b757a416341392b435837536477304362374763573651674a3962754555446e4873516c367a6578412f6568396b7a394a54533273596c7943394367423962754668462b616158724f35617567387168474f7a6b515a73306b703270694b427a6d674239597551445374682f676d68363164414f5279365568322f6d554949354b773746363137454148713932556e7268676f50574c304b4d58535432556d36423163364b66593373504c4e4d395645445439587574536879706d676657627749695039585073556873706d6f4766567177556a744c68347545466b66574447676451657536585959594a62653175536b326d512f6949552f746f4e574b426f2b7653786861456a786b6d50724e772b4b324968552f5931644e3972632b674230446633303465587934715850584a416c6f5534474b51374f5a3668782b6e424537536361686f6c304466333636662b6b65504a50483179356a4f4a66495246465639704d79785079522b306d4451412b3942644431724a696535512b746957455a416a6846556e616b6b526b44487570564437505751385354375651587a39567a4543334e5751395a6a6751657971702b79616f444772734843533574775a416c427150713469514462595a795658393363366446636c53646e4c777868552f714e456e6b7a69576c4833494c6f2b736871776c54394956773963746b4e706c48672b4b7a53735350302b3359717a5975537159616b48512f76566a413671636b66377643544e6761564656672b3063504f50373050744e58554155472b5871494f564d61466c582f6559355753662f7741356b733532786a394c756835556f78416c6832494e73665672632b6e5178375454344b79507151674d4d6c7a4c6741636e75554676574e51642b5344714466516241705436726165722b33443278584e3869354f734137592b324355416b5964794470322f564c55795977313938552f3978747434567a5a576d34742f436b72705a753576324950654b4b4b49496f6f6f6769434b43414b456345554545434b726772554371496f494155445149706b4378434243504a4b326d6943476f344a4c6b524d64575364714a5a78426a52426d456d37314879344952426170547849797167426f694354494535705a395643726263656f446b67307149736c4b43454a54463855783471737a496f6759766768436f6355645176324b417469676b67353449455058464e516471447567445a597152484e474e666d6c41445651434c4b5a6d755359414a554339694e445250534b527175676d4137456150795131765869703249495239514b446e46534e53693365674d4a61534f4f61306775736b587754776b5969754b44516f6c6a4d53775449436f6769676969434b434b4b4b494967696f676969434b434b49496f4967696f6743444a6c45464d346d57537a5348747a57356c526469677a34342f4243564d55326e33704e4e474b41683431375532707350696c4a50687a52634e7a356f4b722b326a64714f6d3466716a2b4b7733624e7979576c55667158526339794946476c6767356a4d612b7a6f73435764583364724b50564373663048487557625739423773304271657845686978514568346659707064522f69514944536e7432714d5458354944512f7852384565584a41425448334b526644424e475a474b44354439714139377669706b32444a59334b64694a6c716f7a464243434b677155786c6966656b387a6a696d42474a474f5342545444424e4654553563346f4136734544486b454863446c386b4449386e55656f51545470646e4b4a4647427777523156536c424449756669706e58464b3435383039545641413054524e7a4355462b6e45664d4b467578415938496f6a78454134704b554346514751574f436550616c4c6e7443575435496c786a2b3141307933596b37633030644d656f6c4c4359656851474f703343313272346c535646696a536f7a5453692b623051644c77314359344c42627661656d58597462784c5a562f4a425249744d76676b5a306267366a5432434277594943525578474356364d61424e48555470657561416438324b42435533426b7044555a5350484949475a3331437674334b4f6d623371474751514a495a42434e50463742506f7952423549456a346952554a3438305952777a4875545242794b4241442b53492b48347074417a596b496976697a514954786f55782b4b4a6a3764696844476c554559314f614e4d4878516977384f4b746a45437249476847693237653151536b736b514e4c6e322f4664473058674f78417969694b4149714b49496f6f6f6769696969434b4b4b4949676f6967436a4b496f456c463044464f6f677244594b6a6642374a354d745a4471753744564355527751636e532f5571324d63567149703846544f4a7a7951554575475a304a674f37397130474c7547565a68704e45464d797762464c4534754b71395636583549464853574f4b766a4d6c2b4834716f6e4c696f77674b6365314264456d6267555342734d45496c38635754754771482f4143514858543277536d62427a696753634d30757571423852544e5232726e6b6b6656306a41596f786a6b636b4266436c4f53684a6b32534466704e4367395834494c486468376b424a677872787a566236532b42514c4f65587851586770584a716b654978396e554c676f4c444b6f785531365133616b6a537637314452425a71376c4e6448594b70776a323151573632716d317551503272504975724e644b6f4c4e63584f72676a72307438466d6b5a4555782b6159343951596f4e506d7054634a5647736a7351664d6842654b646d4b6772565547626e492f556f626d5461615a494e4f732f74514a6c6e67716462393647766a6745476a7a537734714737706f51715a6c77373053616e7a64426f45394c71324e786c6a317547426f6d6a505631444c4a4230695063717278656e7556653176617636663143714e32484e41756d68344b556a7a55436a61616e42414648455478556b50656f5435686f6761673746437a5653416f36644a71676b3861496e6d6966436c596c6b44416149734548646d2f4e47584c4a4c42776355423745434b7355654a436e494949513354494a534353796158596a704f53417472647659494f5477524e42514b6373446967554565484245444a4d484b4d5967386b43673548424d47496f6f314739364342766b723477387a465578676159737474714f6d4943417874694f435a4652414556464541525555515252525242464646454555555551525242464145444630555543414d75644b30597644745854574b3942703971444c49416d765968494f36766f456e6c6d57484642546b3651695061722f4c66413056556f474b436f694b4463635856725a59716f78302b4c4241434143374d744f784c5771563669732b504d685832486846696731534f673471547542567a4f6d6e656c31766c5242624d6d5866376479676d63465445304c6535434e796f666a376642426271776c775443347148615865675a2b39426f31366a70784b4774756c6c51626c4b6f6d5238546f4c68657279344b5070726d7174587853784a384b4452356e56696f44484c39367031366b485076515836744b6b5a4f666d71683164497a51464437653542634135524a3471677a414c49536b5a5543432b6d4b6e6d4d48645a3951474b49346f4e45354e34635657435161554b714d38477755427134644270634f36686b714a54423549526d65316b4638715935707454565765626975536750754f43432b4d38386b735a716c7a6745786b3643774565324b62553355714a53777952316e41494c6e354b4764574b7a3630544f6a684261544c754b704c4e5771636779596578515a6779424e4c304641677a34706f672b3945777078514c7161696254324a6373455750314945704c4e506764525177504a43514c7367476c716b3155494a54696872376539426e6441686933566969326d714c736845534c49424b4f6f31775130397a70794d3854386c4443767851566b5659556f682f4579756b4d31574934434e55437a47766b454759756d3843427831664242474153364737487752306c33474b6b385541684854462b31485131636c4e667654455052417072515543456742563057413937705451457467676b534d5570346c504e6a376b5742373043566d777753544c557a546d4a2b6c4a636c556f42626730745331786f73555231567735726443744f43432b337a5638596a4b675645447048347253477877514e454d364a6a70777755446a42484448416f4631752b53614a317154672b435542425a6a6958553074376b6d43654d6e7851454f395654664e5663374e7a532b57536134494b6f73374a6f326a4c6c2b4b766a41527754494b786142784a4b614d497877435a4641464645554152555551525252524246464645415552555142526c4555465a6979724e317145456831656c4e45464276774845494463323546712b3471787330616f4b667549486a376b787678646a537163676f61514145464a7632336f536a3978624130744c2f61566137644a536b6b422f594945382b497a507578546d2f444e333745614a534a346841504f695351486445334b4f6662676c6b2b56416a514669364136675170724464496f6f496c734751717a6c424e644b6535493868324648532f616f57683147674761424c3138576f5375584330496972352f745869743575706232374b374b6a746f484a3173395739556e764359512f346f6d6e385237317a57314e5445664a425871476548446972483079354b73346b4a6f784f7274474343356f7352346d393661474f47492b436b5151554c6c77327a52412b6b5238534a46614372305343344a52314767536154692b49775152334954394c633156574c6b71374a7a696757634e4957535a666c785775374849347246643936445046686b2f466162596b7a724e41682b53313277434e524e4f4849494c376655524433727037636a5458776e4e6336774759352f55756e5967355a734237304771323861355a65315666355961745652493675302f67726f42365a4241384961614b77504939696b496d72686c6443442b4c50424249413571304453526d794562625564474e4b5968413741476855464b305a466e785473447851445652485354686767544732484a594445354c7a33712f7139324d664c7364412f586d65784233376c30524e5677373867626b707949636e4c354c7a6876333555383266595a457274656e6465334d70316d54386b484a334d52357063596d6734685632673977524f636777576e646b4334596a4a5662646a63744868636a6767394e75702b4f584546655568526573767930612b386c6558593438366f4c4e6a722b3474695447713946366c442b6863694b7268656d3033646f354f66325a4c76336f45323553484d793549505078426e486c32565675326c474578636b63454c636f2b4b50566d72656b306b636351673258505772443962754b4a5037335a6e5854496e336646594c305931674b6a323973556e6c426d4844755164502b38524445327a704f4743542b2b577150484846632f7936526b77535441465a664c424231503778596b356c614c384d6b44367a5a622f6a6e58682b3963765342526e54447939574e6368784b446f322f584c524c474d34343154483161422b69516a78314c6c6d446775445844464c4732426734356f4f75505637467366557750365573765737544e4856546b75574944367046307767626d5251644f5072567557496b2f596d6c3678616752467061736155584c6e74794b6d69506c5175524f6e78486a6967364a395a7479776a4e2f306c4e443169324332695557717556354d6f5634437144422f466767366e393674737a5364542b38775a744a397531637a5239575270322f6b6d4f336b52574a5a423142367a6249776b4232666a383144367262474a6342636a79524d7343572f53694c416468345548582f7574754e4353334a566a31693377707a584d45434d4d7539314a514d7341376f4f724c316d324d6c50377a626c3031445658492b336739596d716e6c694f564548575072746f4278626b5478344a543635627a4576324c6c6b68366e2b58322f596d387256454845646d5344716a3169327a36543238454c667265316b2f6d417850772b433563724772706a6838454a3242436d42484c354d67366f395a736b4e45534b41395a745a52494838533555626365637579696868416449466578423170657132794f6b56556a36765a6271314f3253354a677a67444c34707057794d644b44716e316d3167424a2f34766e52534872466c714f583459426366514942697a63632f7a516a4f48466a32494f7a4c316133474c52446c3876326f7939577450706e3076332f494c6b78746b79654c734d7946425a6a4546354d53673630765664754b41475844534d50327152395673537731672f7049584b6545705975337a79354a43576350475848534872326f4f782f64725270376a712b53582b3551433541684b757355356844796f6d6844684232492b71326830794a633561614b6633617a42334c73754e354e7550564a78564f44614a654f423434494f7750574c654558306e4f516f6f50553742465a664263323362664376784355325935675964694471663358626d6f4a7a526a3672594467366a7a5847386933484373564a5749305a3251646a2b366265546d4f747563612f4170726671634a564f7145542b763968584644634a417130524d797a4f6736737655747046784a79583776676d4871316b77313466703968566365646b347a445655386d4d497550657944722f335861534a496b7a6532614a3954323463784c2f4a6c775932626368704665355778322f36422b43447378395173346951424f43732f756c7439556d4158456e5a316c356c6b5a6264794f4b44727739527353475a5452395332306941395858436a593746504c44615a4166696737703954736a70456f74327050377874492f556639492f59754b497770304a524d6b384f57434475483150623149774b4939513232556746777862316b6e705a54796f3455376578423641657037664b512f3271663348626e476138394b31456c6e4a62683756545273444b49664e42336f657062634368444b446657496b7a4d3468635437636761644c67594a626532414a36535366346345486f427672556853595075536e65576f44784146634d626345504d48334e676c6c62343134494f39486632446863692f7954446537646d3178457533466566386a4f55616e6b6d38735a67443530516437377577337437647967336c6d49704a797650536958594f63332f596b4d48384f426f654b443033337467755a6b5561725a496e6357634e555878586d74444d7765694a322f6d4372506d673945642f616869632f596f6633446179593678386c35324f3145656f30397355336b6a4c68696739414e397436365a4e7a522b393277776e452b336176506d3249316576422f6b45736f4f486a556a323755486f2f756250306c4c39357477586c4d4438563533544c535a5963636c49327245365566346f505466635754574e5239505367647a61417859396938334f78624653663970775451686f42307935564c6f50516a63322b4e5534334e6a395950785a656238736b41695875516a6244504561654c596f5053797657384d6b62636f4e677938374b6376704a6f456b6f467a724e654f5344307075326852774644754c4f5a586c2f494e30364e49663235706862694730396a596d69443059753269644d572f4571793535596b4e556f676a6d764c78746d586a50374559625952464866336f5053666357414738794862785447356245636e2f687a586d6e6248354b507a5a2b6144306b626c746e7a35346f48797a6e487658416937754a456c5141397661673945626b5331592f6d6952434e5a5341374b727a6b6871364a564751696762656b7445632b39423645334e764d4f4a784e654b47717a527a4168656378686f706a576945774a4d446c674f7842366b79684139576b634f6166566138564777586c7032353545342b344b7252637831535a2f3149506f71696969434b4b4b49496f6f6f674342544949466a4671684d67416d51524246516f465578514a5564415764416852544842416f4c555550444e464c4c704770426873764965594f61654956566e70677854362b4b427758367361713761683436383154456e4c426162486835494c56455545436b3570636d54494f67464a426b4e56556345596e346f46446e46526e51774b6872584e42447a524a31596f47547336414f5754596f476a673658457569634839696c64384b49444a774853753243614a4a4c2b394355586f676d46585361526837464d7a4638676d687a51484b71515971474c31526c6734514c4b75436669426767394f614474524159544c737252635645704d6d2f6851614250334a6c6d4d75436b6276367330476c52556d5a4359584b7367745153655945376f43676f366943496f4b49436f676f674b6943694171494b49496b75594f6d4d774d56544f596b45464d774d76596f616d4b65523434704e492b6c42487a355a4978714548464e4b4431514d426c68775377414271564b34634f436e696f674f6f5a4b7137434e7a454f66636e634d6c78465546427352646b4274594f744654564c71366d49356f4b5474596c77456674784657563473454246366c42584b784630766b786b374c514333555467683034742b6144503974414470522b31695765763471794c6e386b2b715468384546666b5166436d435137614c387634736c6339574863697a6479444f6472626c7a4861683545634153466f30744a79672b6e4b7144503555516134496554466d647a7a7172342b396b514f346f4b493759535949655344466145514547553257795447793471584b7446742b615a6d77515579322f7656557246474f41577378624b71452b7842514e7550452b5074564437636436307357354b41634d3047654f333052786f6539434e6879613472566f474a715541335977515a50745151787835706649694374732f6536426a32494d6e6b53755335684b62486374625a4646714f6779527348396267703469647641305635694a4e795230394c6e464257596d594d6c49573430344a794b396d614d675033494b5262306c307a61634864575057706f69513531424173346d56654b58527871666b6e6d57663464716244724b436f466a54483846414b387678543439534e6643554352743166464b33657247594b474e4e534253774b4d59766c676a44437167476e4e42434a424351456f38303876467843686977514a47726b6469614e61635548794b63394b41464d54306f4d523238314a52795157777857797a4a673257537851706a6d72597a417256427555576546303571385342514d6f67696769696969434b49496f496f6f6f6769696969434b4b4b4949676967674b4369694448646952335657656476675078573763594c484b49443845465570567267704b4c6c546d557871454352674d6b6867435856705964716a384d5546586b783036535467717674794b4448466154416759315145574e4f3942524b314a6a4534736a706b4934643630456a4f69726d2b4f546f4d34315144596c474d433146716942564c355a4d57515a2f4c7a4b6d6a50677444525a7a3731437a664e426e6c46787a553875574a5635474f4c6f6d336f504873515a7843356957494b68746c2f6d74456d695752636b4f677045644f4a53537347496f4864615148716b30746a6d554651685471782b4b58797a4870794b76346363314341616b552f464253596b73456b59455372514c56703148735541693951794450704a713742574d53726449795569574c4d676f69433642784c72526f344a544470616e4e4255524969754c4a644c3571356a464e434235494d786a685876514e7562766974596a77554d414361494d774c5550464b49766c2b4b3036576f63307a45633047505458416c4a4d532f54334c655974314d704b4761444730774f48596d3670636c713773766d6c467436365547654e34776c714f4150735063747875617045786f4f78557874746a3370784569707277514e563845306f61656f6c4556444e696f61302b415156686b7863564f4255416f7058366b436d4c684f59384d304749544f4255346f425141766d6761646e79526a554867454d6e5152794d71493658426f6979415048324b4143546f4146335468335973796b63656142414b70744f716b6b41613676676a6e795151786274516d506372415137454a59444c4a424931487379566e446345376535544573506b676b575a6837386b3546533653706f457763596a3243423452416335725661505346694966784b2b45394f434453696c6a495344684d67696969694349497149496f6f67674b434b4341714b4b4941696f6f6769696943434b753767724654646c6c336f4d306f4f6c4653306856575637315554586d67426b444b6d434c674573456e46454854544a424e447556586f705657616e5441565a6b476156682b6f494147486978576f6745744c7553364b6f4b644f616b6a566c6435645778555053657842554b466c57327273562b6b50587552306f4b644d6d5a6d5248696f72424a6e664a41444e425842386373305a516f546b7243477170522b33424256704f4743476e4371744a55686a326f4b3854704f4155426571665451494d31454353696561615a4c59425765464c554848464258454450424e6751334e57476c6331434b4d45434e714c6f52504842576c38456a4d2f77436f6f4b796136553745314b6b5153484b6432785149544a756e42545532436467704a674b494b78496b636543496674435a6d6f486f704871504c46416d4875536c6d6371365557356f695277795155794a616d4b676548534b7177446a385558707a51556d6461496d626b506d55346742583271694c6363304530317068777a54667735346f6161312f596965796942577a54455a706a582b5641306f67514f334a53584d4f4f435942514f61494649656f556b445833717777474c4a4b784b42656f3449786f354b5942385570654d6954676751697570506f414a474b59774c39696a653942586a34564a68366a4769735a753338304a30713643734f437967743673465a4878445652476863494b734b6851744b67566b52484f714563474b4371354147716b334e4346624f50747a536867476169436d6656566b53482f4a576766715353685641676241343570537247427238554a466d4f61424d667a4b686b34623470365a346f4f44566e5149644d5930565a4c5656737170572b6b3449424674514257734e6b73376458454b2b325269454677366d795769444e327250426d70677445582f6567757a314967416a6b6c445a49435942596f4751646d4952667555643045647a703549616a6d4b706970452b3541304b31546f52525146525252424646464545555555515252524241564645454255555151465252524246454645455354344a79715a4456524133387144426e7956506c7656796c386b7657525158786a77346f754257537a47794f616e6c394c45736776306f734d777373724e75586965535879493576373047776a676871694b4f367a6552624e574b41737777417a516164516433617141494e4371644d5934526349304343775331564d716f616977344a61654a56796d32434270334e414a4e414d79764d2b70657053336e394730577448462f71532b6f3732572b7561415435556161654a576147434375654a4873465277576f7845616b76525558416663677a3347424850465062414d6838465a636b4e546c4a5a444638572f464273675844454f556b374e586b472f46504b4c4e444e4b2b6954356330454674326a4d5565765967514452334878537a75414169726b4a4e646630383046326e554e493471434d6a51305655626e5365333470344856623041747a5153554e5163354c6e58635630704e4a68777858507547706b633047636356737336534f537a767777785771454142715a754b445259794f47586375745a69495558507451476f6e46734f613664694f4466366b46756d6e4d4b36334774536c414a5a58736761464f3957415a6a46414433756e6a4579774b427732464854436c6330724e2b3157526b4d4167464a4a394c4467465675393362326b4e6437756a6d5635586465753769354b516749786a394c342f765164333153364c6b4977414f6c326e536e6575443672346261623037643374314d692f4d7945637350337076556f616263447731494f564a346a55546c3856335054344e59746678524a6c373177356d6864656832625432305a5177484753446862742f4f5042364957593955435031676a39795863534d726b7a6d374a74704c5264746e507a49386b48714e3043597a306e454c7a326a56324c3064794f737a6c32793776627458446843555847526b2f4c7151545a7868472f6275794c5267356b666b75394b35594c6b6b5342584138743356597479474a2f39534430634a3761414552704648414355693266486f5a6558386d63753064314544626c4d616e6c6977664d6f50542b647434686e48627a5138376163496e6e6d764b3643506e58424452336f5056524f7a786549434f766145394d72664e3135654e6d4d3249716b6c62476355487132327741646f7834684e356d33464e63666d56354c79334f444977695a4542734548702f4e32707a68524e4735745731426963666477433873596d5852522b4b6e6b6d6a444642366e7a397341336d52424f5279516a4b784d754441392f77435338743542694d4b35667652386d5036667751657065772f306e74542b6674336155345250637648477a456c692f76547a7357785544764b44316e3347322b753543764d4a343771784b6c7535627232666b7649486251646d4a484a45625855472f774464464236733364744b686e46776f4c6c6836546a324f764a6a626a4e4d64742b6e3531516571313763306c4f322b546c534e33623469554b66784c796e6b516c4a67443370687470484a4236667a4c457143356263593956455a48623450486d7842586c706252673570676c46706f683366696739556275327034612f5533424d66494e586965576138714e7648486c5654514739716f50556e793263786a47492f5579582f77415576573254327279336b6d574c31566b6475534b503349505461397561616f6b46714a72666c354565384c79333230684a3352466e554b444432346f50545375574a6b536c70497a723855776e627564417762394b38334778636978464237306e6b484f556e35495055526c434f45596a6a314246374467475673667a4d764c51327259794f6f3844696e6c744d4b56434430326d784c71364f52307165625931615a45643066324c7a48327544696e366e546a5a316f5433495053697a627556436e6c5759306b79387650624e6c493935556c5a6b335467673953316e67472b6e5545707432573077467366797346356e375841794c38654656427467352f416f5053694d4a5544487351614673504d447638416233727a6732736834437a66706b564a6265356758506167394b396d6636442f414b582b534d525a78416a33686c357a795a41314a47484a54795a474f677a7851656a3872627538656e2b565479374c66544c74586e6f32706765496a6a564b4e744d784267575165692b3374517164494b662b694337366a686a67764d5374584231544a6b636e4b68684e756b6b4642365458596958784b66546150535445643638756256775645697946754d674e58485039694431586c324968353657484d4a4a576252346436383059334955314833496d356662786c42366146714571394b54375741344c7a4568656e53557066376b664c47456a4c56326f50556661577a536a4a2f7437594770676543386f646343776b6138314443375854634c397144314d624e6b467841565348625751657150666d764f61726a61524d6c2f6d56574c6c7734534e4d61756739536474592f684861565074624431592f4a655631655938656f3971736a63766774476368474b4430737474616c34633038647474794d414b7279706e66662f414a5a4e326f5246364a4855534433664e42366d6532746b434d5759636b4a624c62475659427a7a7a586c57765370716c2f75566f6c504b49416a67633351656c2b30735530762f414c73307732646c2f774131356a7a4c356a34754878565535616857526674644236306244623049446c56334e6c59692b7067764b77755361737342785971377a4c3272717545784f443151656a477832382b717570745047695750702b3364394a64656631337a39636e3747516c4b2b4334755342356c42364d3757774b53426444375462456a706a377331352f3769383339535a4d75436b747a646a6d5233495051533264674268384534324e706f76486c32727a7633563673684b51663674492f4a4e4357376c316135567a6f6739464861573956514368396c61414f494b38394b2f757264645a42354a5a626e64346d346131516569477a74426d694566734c516b77687a7777586d78754c38613679694e33667a6e4938756144304d765474735a56746779505032434576543752594749376a2b5338366433666d344a6f63614a787537344f6d4a6244712b704233346243795130497035656e5771366f783732586e4a376d385048636d35344b755737757670387958464236512b6e574a554557374930536e3032774a4f57426a67467778764e34574176537735664e53473433474d70482b616d434475543950744e704a63456f54394b746d4c53596a6b667a58454f3875786f44524c44666273316863376d6f6737333973746b305a6b307654626338526e324c6854332b375a705341644a4c66627467493342335651642b4870566a56716a45754d386b50376262675470474a3976677542393166464e55337972676e48714f344e544975673730746c624a615761542b3232354534556f79346b742f7538496d6a59737949336d35694f7239726f4f37483036414452702f456c6c365848416e745847743737642f71302f497148314865522b736472664642326f656e775a716b436a35315352394e74573544515351485046636e2b35583548464e4c314865696f6e54426a48385548552f746b43616c78346a37657a4978394a7451704542766556797a3670764a4233306e2b4676696a4831546457364f35356f4f7050307a626e45503846582f626250414d7a4d734a395733684c6b414a66376c764e54616733426733795165335555555152525252424646464545555a5252414169674555455152514b4148696b795459346f7652416b67414849397947436273556b4851514d56586538424b6144344f7050776c30474a33494f4645326753564e754977344c5447464542307256465557345a3853744b43464442464c714151436679533655535233684c4869674d6857694476524d59366f6f55504e414779474349417a5569573549305141456a424477344b44344b454242445155537941626d706734554a7a514454544630304f4f61516a4d49766945425a364a5151455a5956557167556974455763767854526b2b436d6659675552796451524d6b635741556a30307751517557634a49776671396e52626b69656d69417438666d6c6b3731524e4b6a745562554e4b427346444a676c484c4645787a34397942684f6968495a6b6f6236516c31615477434377544a6f70356d576154572b4154413671596f48457a6d6a724f537142507755417a664a42614c6e46513346555470523145494c6a4e4c3569706374576962566c785150724a554538465434574b65544e5442414a385575724e444c464356614641785a6b7543575452384b66546d326c416f3669374f6f5a4e6a6956487056415651517962385753453654337177733963446b6c72454d667a6f674d57494b56694b676f45355a2b33785549346f41446c524564714a446c364948546d6759696a5a717355566a34742b3156695444444469676d504d4652675751784b4e4f3941597762715336584c49783653337a537844534147434351356852355a70354871626b6c31494a46774f784c50496f67563673464e49376b424a7a3976676847744751784b4c30414e4f4341752f77416b4d4b4f674a48476a386b64514e634545635a4943702b616859674155504e474d54696742775230696d6e67684941394a78556855436d46454278485967546b702b35444142735544316946574b756e41314f455255386d51566b31355a707565534c4530474b6d4e4367464347514e4d6e543071364250464168477249594a736569534c3035596f4e57714145356350785230674273442b4346574f535a34314b42644955706e676d306879336168795144534e4e616f36514b42456b79375467674737507a5141444d59634552706937346c48496b49567a71454569786a576f4b47596232434969364c45356f412f37455859384f614e5258324b44554f7041426979496f7a35495235596f6f4933742b5368417751425a796f2b5a2f59674f62635558616e46434963767852624867674c35594a775a4d324b71673374795443555973633044786b5147474b76467831546964526f5641544642706a636c696663724933526e51724e726f36426b53787843446271434b7836672b483449786e496f4e614b7a2b645247463130467969547a51694a756764524a356764737770724846413643547a496f3677675a524b4a684a35764242616c6c4944745655377043716c4d347951575475724e493952434d6958664a5679633449412f45496b6e45466b4a506d67656142644a444d4d557736616f4754565248444a424a463359344a5164534949556b4a5a66745151426b45594d5451705a644e654f53413556526e4c73534e6e676a4b72444e4178696f5a4f375655416567554a476141617131522f6d2b436746574f4b5578315a356f447a554a5a753145616f38754368444849756756414455612b394d5a6433636f417759596c424f7170524943476d726e324b6c55453038364a73766d6c636c474c2f5367476e7452306b346533616a475448356f7777774b424e484549684e4669656a4243505563634d4543694c6d745554456c6770463855544a75534143514954434f766b51677a4f6748376b456269704b424a31425471376b7867576f674247435874566a5a7955415144367568526a4a3251624e4177356f47456450596753652f344a67434b5a4953636d71426f696e4d6f44714e45574744714e6f78376b413441596f694c4b49452b324b41784753444e32706f316a67687034494762696c304548356f6a686e77514164797941434b5a334b465734414a6967534e4577674358554a7070556a4c49346f4149356c523663436f596d48666b67447879515148556d4d4f66775145514b56483655574a666d676a52375167417770374f6e694f425375676d6f674b454e6765354e4555356f6d6c45416a48443570785472435455574939795a32515043523472514a6772494363536d35494e596b4369367a6934324f436e6d4d4b5079516146465647616257677355534734464e59514f6f6c314251534271674b4b54574d45524d49436f6b4d306b72702b6c4263675a4d715a6b6d4a4c70646268754b423558636c5663516c516f4756584e51554335506d6b4d654364526e4c53444946417a2b484e4c704c55716d49447569514d516745612b45494246314e4c6c424d614965476d616a4e564e5854717a514b4148526d535849554f47534f6b494b6a46736b7874312f4254447154697659675152596b6a324347465238557a42364947527a434156656e4a534d41617068456a38564350663730414d524a77674277436156656f496f455a776f616e6c6b6e415a41577a6a6967464233714e52736c415071516b5851436345524854686b6965436a6673514952377553494f6f7445594a78786b674945486c386b4144796667694148624e506b7877534d596d755341474a416f68527347566b6877532b4873514d4955516868584248424453314d45436750326f536a716b6d31476e4e41537a3969674431346646454e49304e52386b326e4c39796b59734b30434375664b716b6d2b4646597a6f4f4a5236765a6b41446b566f506b6a4633636f2b31464a52705142425733376b7959634f536b785165315543734a6d694d6634564248535645416b77526b48484e427944524275474b413675616c58556c4179555a41634b6f616d6f555a5536636b6449783969676e686a326f5a4d63454b41315247427069674c4a49786571614950746b6a55637967416a6a77514b4c61656c4138536755426b5865707a566c47703855754f4846417567666b6b59316c465753417847495549617646416b6f74676b6e437456657762696751677a4550676c505974527450456e496f546a685433494d70655644696f4973614b323541486b7171647943747174785771474772326f714a51567347623278516159674e54465743565652473433347068332f735161496c78326f3077564f7477546c78566d6f646f4b4378386c4731594b76574267695a3546426170716569547a49355a4b412f42426447537342645a684c414d6e316f4c30456775493677675a524230585146425252424646464545555564516c6b455551314244574d45444b4a4463707a4b575630424261344357556c5472484768514e30537167736b616f534a564a6d33656f5a76676761497a4b4d704559344b73545138794a7751573038575357745756657077364a4148636759794f444a5a53634b7257777161465458484242593144566c444a7356584b36336879536d6448722b39425953356370546a7953366e474e43717a505153355158746d63317850554e366270386d792b67654b66486b6e3347375067474378474f55575966456f4b41635a4475526f4974476b754b7445477877535369475931716754434c784f53714d52577656683731664b6a5561503070626c736973616f4d6b72654f6b652f7354576744325a7035776a4b4c3846585967347859494e5247714978314b7134515a396777566b6952416765465a5a5639736b434366547a516a4c504a4e415038414e566932654f4b41394a4e566f73644d5253705765554e4e636c64596a546755466c794b7733597679573845732b4b7a6d4a5076515a59323951303572546134664256694263366350637456765344685642747351707750775851743836447357537a62307448784c706741446736426f6835647173697a555369424641726f77644249517a47484e57733570523149696965494b41552b6d7164394753354f2f774457343759364c4564567a6a4c7778584b752b753337766946767569554772643366754c73705462703659386d7a5844756835503346646c2f4d68584f4f5334647a67487a5162765347317a696541576a3161496a4733443954795a56656a5131584c68475556643675386f576979446954476f4d7a6750334c302f707266615734536977507864656441456f6e673156365030385074494166702f464279747742356b7732644171626366366c764943634f392f795733635734796c714372455456687a64423644794e65733436756e383152396a61594175346f7a3473754f6274312b6d6367354e4d46446576534f6e57573465337a516463375379335245714861327a5573793548395a6e3153412f6d554275677671393644736e5a572b43623747464e5963664a634c546577457a46315754663166386835384548636c366459627174753261454e6c617830436e6375472b356b64586d79443568504f376644784e776b443958374548592f743170336946423662597430306c76624263547a4e777a6962412f70556263777775462b3130486350703063347076376241485870354c67334a376f4274557170597976672f386c7976385344756632327a454d30516a2f61724a464d632b6134666d37693258684f6e61366b7232356a557965587452423276375459694f71464542365674764647505a374f754c506362764f5a4d666b68472f6679754833494f3748303679433858502b6c512b6d32357849616d4b343839787543474679564f354a4b3575544e2f4d354f673752394b32706f595646664579575870747359522f77423261343333573868302b624c464437692f4b73357a6e796c2b3942327637505a63534436766746503764626572746d75494c2b34306c70534563672b61654736334f7278795a4232663762487769675466327947505638317850757434614352414f63754358377664334a646477672f714842423344366462746e57424966496f6a30364d716d494b346b4e7a753455312b2f6d6c4f3733543945322f6c516477656d52784939314554736f444b702b61344d64397558784c64764253573833574f7036356c3048644f79684a7044732f4e4162434177486546784a2b6f626f31316434512b2b336862546362735164715070304e527854665a3277346f467734372f6456416d514363633035395733516a70383177654d5975673759324d4a6a6769665434746b512f77424e567766376c754a42684b524f6654466d3549486662735270644c66797367372f415062344f7a474b582b3377496f572b5a5845472f7742787044335a48742b4349395333502f634c5a39492f4a4233763764475743516247324d4136346633323578467734386b2f3979336266386e77446f4f7750545959567278775379394d42474a594c6a6a3144645144536b532b6145765574314c71684c542b4b447452395074674d35546a59514563567850376a75423965484a6c44366e664e487167374d76546f41705a656c514f4874386c79663768756a6a4b6d57616e33323850697555374548575070734c65412b43592b6d655a48564b4a3150374663542b34626746745a552f754734667866476944744830324f436535366359485541574158466e764e314961664d78715267674e377551656d544d673750326d577073305436634f4c6e4d2b3342636b2b6f62746e4678332b4372472b33583154457130396767374d76543754744f5250303054663271784965496a734b3478395233592b76542f414378536e314c63636b485a2f7431766e54356f54394e69344a5849472f334a4e4c6b682f4c57716566714f356a68632b4344716a307533484279557376546f53505556792f376c6577314f55547639332f334e4e634e49507a5164502b3177474665314e2f61346a4b70584a4f393349724f526b2f594b3979552b7062754852473569673749394e742b4578636a67455037624155416f5034574b3555665539345469472b616c76314465516c7131446733746b673652394f68496533344a342b6e573853572f46632b667165374a715939775a442b36626a414d65393048515070736342683855626e70735a346d6e36567a543668753430614d6b77395633593841474b446f6632363052717a77516a36585a6478454c442f64743261454e38753553507157344e4f6c423050375a5a6677742f4b6d487030493955614d75636655723245766d682f637477592b4b6e4b4e666967336e307932616c6e552f744d4d59794d614c464c31432b5935653738456e39793349385677482f51673652395074316a71636a2b466b5037634d63514d466874656f33787a5448314f2b324555477a2b323238546a386c4a656d774e58392f7467735139517678447838587764535071653449317a68427757664242766e73594676594a5a2b6b325a6a726954586a2b537a66334738394737425571763732396a5848446d67316a305778624e49742f714a54443075336731566a487147354e4772786450392f754764712f7a494e48396e696543512b6a6e3962524e4349787237316d48714637475971636b66376c75337070624a7767302f7742726a444358543461357152394a68684167647a72496655376f3851425047504a504831692b51644e76446e564263505359524c32785842586632375434704f4f774c4263395833456a5332725a657262694d76384168482b354261665368587150344a6f2b6b573230346a7457542b3658342b4b46526b4a667354663361354c2f414b59492f6d516150375462666f422f4243666f3041476739532b4b705072647a394e426b4642367a642b6942356f4c2f77433369544f4b706637643562415543726a367a6542384253783962754d30724a7167752f743073424a754b582b7a335934534861682f64376a4f4c516a6d64556b50377a474965565034596f47506f397a36376a384e5034706a36554a44556453702f7663744c517439386b2f39376e2b686838554670394c6c785a4b505270752f6d6636644b542b3955384a634979395a684c454770794f43435139496b61474d6d72524e62394d78303977504a4c2f65394259526c496366795444316b687569522b6143483032374b6b7742482b4756555436575448534b4439574a556a367166304e3270592b735469662b4d41635541487045786849792f6d78522f7445663153346f7a395a6c7259784d7677532f336e36504b376e5164714e796473744356426c4b7678576d4f396754706d44453838466c6e314369684c446b673667494e5169755a4234566764505a677234627555662b514f5031522f4c393644596f713756364630504175724545555555515252525242464646454373676e5a5939304a7947693364387558456748356f4e4c5a704a512b4b776245627946777733556f7a6933544f415a31305232494646454c77315150596e624a4c4d644c42426b7377796c337134527754776741452b4743416a73566955496f497179536e6171726b4f4f43434f395641347855414a5277514271496164534f6d6a594a66446a6d674a6f6955534b4e7853637a336f4766554e53475645614a6454454241524c4934635541636b63557451654b416b5a70576246455973677a64364267423370633671547743476e33494a6c78556a772b535a717379726d644a5150682b616b65314271636c42706430412f693471434254647151546f2b61427a55636e536a69464959636c4864413071344a43536a555a344a58713551574238384573793253676f48436b70436466326f4a455a436f51464d4b7149525a7361494a4b54392b504a4d4252696879556d4e5863674a474252656e596c384a3471546f35514f546d6c385656577a4b77744b4c5946414b4368544f4a5656592b43615a7951415231564b682b614561593969476274336f476b4b594e7a344a52634a70373030585a4366456c414a4b5071444967734b7174684842415a6b4867355550656f52776f6f47465541595a653551423634766b6a495630344a4e4943426a465142733649415941344b503030514541454f4d4572354a346830736f30514a4b74445473546d6c526770474930315367365451596f4a6d352f4a5358365a4a3645636b72534e4f4b42644242526b7871564e44314f43494835494248464146757a6e78566d70756b594a644c596842434d426b6c6a70446854586d554137746c7a51456877385543576f6d71633253305069785151342b7a493873314f576153513674497851507a4e44676c6469343936655270686d3663434f6e5367726a49454f4549796645493654714b4a693641616d434f6f63456f49464168704b4178702b4b6b697964744b684661596f4b355970337a344b4e454b414446414a63577238454e655a7954454d672f42415358715643497869785375314d516a6b344c494153315169517731505645794f65614a63315a4167476f4f61384648514f4b4b434767725469706c69695034654b48507651517543794164744753667773633070434143322b5a544f44686951705651304854552b7a49433957344b41353845432f615647644142704a664e4552434d656a4b716e69495152756c733052456a334a44495366676d664d6f4155305344334f6b6b645254616e6a5769413455544f43654753554f653154776a7651576347396d55314f66616958564744484e314a554c4e2b3941344e657a4e506a686771346d6a4a53374f677347435a7a464a4c67707149777751504759416f6d68504256527541525564785642613965314579444d717831394b6a31594948457373304e5559696853766b6f6130474b413632505379686d5467717763554e564f31425a47706f6c6c4e7739554357596c4b413365676a7458696850694169505949615541597348514e434b6f36534b6a454b596e6b676b416671537352326f446b6e6b58384f614263416a716175626f59343449456173666567597930796641714352474b553546366c4f36414871435845755468676e6a5242395565434241484c70697a344b54417977554e4f546f417a714f2f4d706f6b696f554d5147504642434d6b414d414b4a335059456f7069674568685647744b6f7542565348546967686b4831486970674b5a714d4a55716c6b374948417051705147775245533243417859494a704c734b555531315452694b3855487951434a614a51787a5436654b476777396e5145567237776c385647716d7949436b59757a4642496e54465155396d526b48357147584241496954734553507149514a6f2f774339484e69676b68527338465043446d6a4b6c57716854416f42773438553836314b72494b617044636b454770696f584a64447477514c34555a412f476c564e514953737737556530494359675047507653684d5967594b4774446b674a3661684544686d707179713553674641306f7348446f61587848656978785378366b42305378434652696a4c416346444a36444e41496734596c45446967654d55574177515368727751305639676a46734d307352706f53675a35595a6f413661495235496e456c413067776f6849487555314651474942396967426f784873456449474b5042304b414943326148544b7149356f69417851485577637032566547504251594f6773646c42306e735359565271676658567769437a6b697553556b6d702b43416d67597972676a563277533632787a533675425157564272554b534f6e3277434749532b456330466d6f45756c35384575756d434879514f5a424c7166484a476b61345653546250464177715544544254707a5159676a32716761674f584a566b6c6c594963556c45454265716a675579524a4943724a713055426b65614a47534a3468445533344949434158347053534f704f63676c494d68524241656c346f436e65796678456353685547694364366d667a524746536943486441706153575576314979464b305a5452376469417335664e4556516a4569724b4770617143526b4d4d555245413151595054346f475655425367474f4647544e536945716c386b416257416e4171412f7346434e56554a412b325341426d797258735568314b5252657445414c7570474e57514c35487354615737554546653542684847685269437a6e39794a694351454369492b6c4469436d306f314747614374337852494a7248424d7a4232775242417878514c49555949794650326f6e735352637536416b4f456d4956686a6d564741444446416d687778526a672f42484a3054376667675636736a486d4641616c364a5771676b77434b685230784f44497969414d4d45436b664a6c474f47614f504c6b6f596c414477554e616f786a6f4655414b30514146735755304538796d304e5559705a422b7a4e415448683730735769694d6531545367493453434146485434523479536a55445842417378524e6f77497852695448356f644c3164416f50567754616d774b464379673473676c543473455a59494e7855455846454334594a68704e554e44567a524a5a6d7278354949597456422b41644d774b57514f53426730677755306a6757536a476e376b57494c494470344948476e7855316b59565249464f614373564e61496d4a4130717a792b615755744c305155547343517069714e4a7430342f4662726a3656517841666d677245797a7456507279596f45526a556a47695541697355467775453855357571674169754a52724768506367306d34336951424256465255732b6147766967304f4d315a475979396d57515858365a4d366b706a36653542723148464e356a724b4c6e366d6450726f33775161646566755268636f3679786d4252504759725642726b516849354369793678537149755659494e497542673242524d7941737775675547504e487a4f5951614263423763304e5a4963666b7332757443796e6d5037596f4e416d4d546c7751643152356f6b4b6e3846424d444371432f577853796e7856426d426d6835744b46426f3175784645766d41304b6f387a55616f6559446767753135684c4b575256486e524e436c6c646246426f4d674d55706e6f4e4d53733072344a6171486e527966466b476a55555a54773969466b4e2b70596468516c663148776b6330477a7a4b6d4d6d626771764d71776f466e456e7166597054637553593051617a636f3451314c4450583954647957517553474b44664f3756562f6352376e5753496b6835636a6a6c3855476d5638595a63466d76626d576c6d376c504a50424c35636e45554352744854385572414f634174486c2b394a41483630464879526b496746732f785677417a3671305130412b48412f4242526f774f51565447724261694d6543535550314574773745474735467970626949304743756d7848414a5044436e374545756d4a6a536e4a5a6f695666314c586f596a344c4e4f416a314679546d67716d354c342f6d677878474b72336b2f4c6b49517a5650334d356e524f6944567272583371327748565544727156726742457567726e45784168494e5371714d51474c344c544b525a346d696f30743266696741596c58326f39594d5157487a5664754657455153666b7431753278614f574b44625a4266554467745169546a5572505a706b7464737561494868386c594153474848344b52315a304c70707a6861695a33437778515442686e78565071562b5564755a514c534f6d4a372f337269627a2f494c304a6e795978305a48412f465a72472f763771377075345347723342416d36745236656c716455566d41444e514b2f657859524e5669505341525271386345486f674a547441786242656675654c69487758666a624d7245446d596a763967754665424d7a6f6646427339424d765075514a622b6d666d75683668447a4e455373506f6252334677482f7474386c30743745366138304845387467512b4b3946736f7a4f3368474f515a636546765446355938466f7437792f61693050434d3048524f7a6a45735370396f443067726d5439523365454a434c384b2f4e542b3437764133493938616f4e397a5a52754f44546767646942686b755966564e79414f703548336533656e6e366e666b4842643673634548512b7747494c66696f64693833584f48714735506a365279516a3674764c64504d6a7a31424230667342395231486a77515070354e49466d584f2f752b386c58575a663641416c2f76473849414d2b6e5054462f6567365a394e6d6147345748384b552b6d6b6b365a46632f7744754f346c496d453646714842482b35627342354833494f686339506d4b636b5436664c3956546e3756574358716c346e45706637726668555341375167337a394d4c385478536a3075364457556554564b785339563359786e487343512b7037763959775164512b6d635a7a2f414e4b6e397459597950616679584a48716d3447452f676766564e775471424951644f6670736d496a6e696d6a734333544e683731793465703777665777656d4254663348643136775850366345473862436552526a3661586642317a7637747548616c4d30592b715834634762336f4f6844307a526a4979504f4b42394c6d65715863734139543348476a5643732f753938644d57373845477a37474d656d574b4539684541312b507757582b3637682b6f577965564554367875525141446e6c326f4e6638416236306239696e39756b5257675a59492b705836776d417a637531303066567234693568454e2b6e487651616a36544c39525061682f5a376a4757764842556a31652b78416a4853504336542b36584154476c63304775333665395355307654544b7072386c6b487164364f45524a6736582b36627149654e442f43673078394d6944702f436e76546632754d656d726367732f39323364756864756376324a70657158546a552f7a494c5436524147736a57697468364e4565474e4d6c6c2f75563656644c557a4c705a2b6f3350434233366b477558704d6559516c364e456c7458354c4648314b375441317a4f53662b355877616842716836565570342b6c30504e5a4a65713767414d5148512f756c357751515a66793845476b2b6c577a3075565862394836717930342b31565166553737564d535534395876476c4e505967762f74414745354843694a394c746973535238566c6a366c655a697a454a6f65716267766845634167752f7455435850667a516c36555a58424b6d6c6d5761587132344853653951657233526a416154785161492b6b456e725075534830636e7853425970503778656a514e486e696e48717535506a38736a3346425a483079496f4b766e4a504c30726a7756503935754e534d585a566633666361775a524235494e5039734c5578347154394b6b66723675785a7a367464674830592f77415365487246794962534f38494c6f2b6a7a4231655a5134525666396e6b5230796273526a367a63384d574b493957765378304946506f2b67596c2b4a5466326d5836763249483169395858454d5069456e3933766e77782f4e425950525a514f6f3341522f4b36582b7a7a6c45794a4875516a363166306c6f44746c4c3845596572586d2f342f79514f665363514d546d6750544c6d564f354c2f654c33365432636b663731636c6a45454e3455454870563276583847566839507573326d50615371543677635750596e50724661416f4c52366159354238464236624b4666714f617050724e7a2f414c512f31532f4a482b387a4c61726266796e396942342b6d7961724e78526836644b4e42454f4f4b722f764d7a5345484368396175416547516676515778394e756677396f512b786b4b305366336c77346a4c2f596e4872526b64476d522b434252366249783670565466323651724b557677536a3169342f3841786739364a39646c4565477636554250707643764a4d4e6a703675415351395a6a774a716d5071386f34512f483855416c73492b4c452f42443743623059636b3339354a786a3841507852487139656d4343445933587741346f6e597950424350724d735a5779577a516836727162706c2f746f79426673727736597769632f4638552f32737a5763632b31452b724d58306548346f523956455a504b4a626967556253594e506c2b536c7a625448743746504c316930514b484a452b7352474177346c416e324e7756634d574b6832567a436f5466336944304530683958727045616667676b746e6362696c47787655313154783958746b63385771704831725658795735366b465a3274304d4448324b5032643736414f784f66584944364a48334d7250377845563067664e4253646e66424770753551374f64586a2b43662b37676549533975784c2f4148754f424249504549414e6f587245507753485a797745653561592b73575333544b75495a5358724547364c4a2f31494d6e326477654349552f743932574d47343157762b38786677414b66336531684b4d6e3474546b67792f5a334f6f4e68674853665a33577745517433393144344e2b4b4d76567257504c46426a5070307a7a357175507031306c766b756a2f4148577943373670556f4d614a50377259315645346f4d33324d384d52775659394f7543767a573465725757314a2f376c614558634d4f61446d2f595843524b58376b70327332625143654f724a64416571325a5944562f442b3953507139754869692f426b474437435551596a78646c4662396a4e682b316135657437654d634a636f677050373974346e71684e754a515a44734c68346e35494861586e717a4874775853742b74574c6d446a6c4c3971582b3857664359792f6d51596f625734507049434832556e6471763846762f764e67314d756e3279512f764733314e717078596f4f6f474651674b64527754564663314a4d324342644456346f67742b614d674b4563454449346f456e44366a513859304b65473575327a705058384370495a633141413735736730323935626d644a3654776c5261567a504c46794f6b31375649613750676c2f704e516736616979577436445335306e344c5647516c574e51674b696969434b71397437653469595849695150465771494d753132466e5a6769774e49504d6e357253696f67553855707172464543415a5a49736d5551524246416f464b523673724853366355414d686b6f5968713152706b6b4970324947696543427134526f554835494151314d436f374971456f412b6373506b6870727a4b4d6a77526b454361576f667a51666d6978427169654b4142516a6a78515a38555a43726f4a534b4971673859304343416d543877686a6a696f6357436b71565148487351644c724a626d69354271364344676c5a456c6b41357078514d7a46434e4b6e4867684b51436a4d474874373043736d6a4c5851494579474b4d4d696747716d6c4843715a774b302b615873775154543763554344454d636b534f42715063675850375542424a4856686b454b594e58486b6f585148756441645459424f654b54776c304a46757842474e4854596a6b672b424c4b4e584771426562706e636471556b4b4d5469676b71476d436d4e554d434e4b636878386b43697063494776697752774449616d51522f62322b4b4d7a6b68356a64716a366b414b56786c696947663841616d514b59594e676952564531706d67614d55453063384f4b44386b43544c702b614f474b41364b6e325a4351797837554e516c6a525478657a6f43496b315150435154567a77516473454373614e676f32704f434f5358416f4953564d68374243495544674d674f4f4b574d6d356f393644444e41527039366739343975436868523271674b304c494a4d4e6b6744784b49634369416951587939716f4939585544596f796f4e53563952664a424454444a54773146553058784b4c6e46414357556b645178522b615751644144785230306639714d7954544c4a4c6a6955414939754254524c48717855664653714136654f61474952356f617449624e424453685145644c6f365166777955596f4165583745574747616d724c4171476e765144716647714f704639544e515a3979474a6f674a6b614f79476b676b5252416f325a553045696d5341476c436a7047584647754762704249346c41535277557046795643554e4f6553416b6b3052384f5a6451394e557236525846424e4f664246684838304f594b5a68785152394f41634254784a69615653306f674f4270325553735a707a4c5045664a445548464541425a787751494f61644b433571674d634b706855705148504641426e4270324944346a56475575436839355142424645455a36714f6941674b446b67592b3945632b784c72716a5467675a744e446d6f6553455a4f41364f6c4241576f56415339556f5a774547514f2b5a374548494c6c4b51314552707a3971494c416b4a6648386c58726a49305172687a51504b54346c45423067476558347068306a356f4a475854524d61306456416456485a474c4f5467674f7233424444773142555050324b5749424e634d5545636436596b4d555043684f4e575150302b37346f536936425036736c483459494350626967314866464d473853416b6756795077524a7a4b4d513154682b53614d4e5a34494a79344a644f6b4e376b617937456f42514e5446516764694568586b4648474a46666238554249635a715944545643654b6844697143474d51464d61494f343755305751414e48383143324342366b7769324341524c4f4b756a716632775549444d707064755343637a38307046587a544d3966656d6f5256414a413449695563416d4c676646567a4c306a586955424948346f4142515678447068376479424e4a78526a4a2b435073796b53776269676b6731535577506568456152706b6f41436149446b7a4966542b434570742b4b5a32464b6f4931464e58743249346d6d425373314367483549424f4f4f4358793042695458696934784646487a4e4641776b67427268586b6f7a386c59394b494442414969684761675a6a7951314d376f31507551435564574e55546a7a55554271364167672f696f4f4a554631516c417656484a526d71394532474f61454b6d6e797167456f78643143476f704c6c6d6934434155786b6d35483449474e4b70514d676761484651646459354b476c536f4b5955484a415a635478514a62454b457651342f4e4d777a514c6f315679544757664a4b526745775a3045634d6c65764935497355614e58464143783746595341514269717a6a55497834356f474c676f527851444371625567477555637533676e697a716e467755354e616f474b424c4641594d706f39735544346c6b4a6b4d7771795855356269706a336f495a4f4f53447456514636424d376f427a554a43456d78557966346f4469657a4249533145356a6d63564b784e554665504a457179555878716b59487451454e777853752f554643794d71316c676748696f36615a3068736c4d45736e486167615a5077536761716a464d36414448422f775147485654676c4a593845324877524a51422f635554797a43563943496346414d364a7041697051423654785548424142463673706d2f6568567130524a496c7048636746423270757a4e426c4341545241474a376b615a6f686a554a617333477141753555417254465070444244553155436d50424d657a424b2b706e544f4e534258443830535848425451346451426f756767646e43574c6d7159476a4b4e716f67683459464878596f43524a5a6c484875514b43324b4254454448696a6a564148553865434e4148536969416b5648425445736c77524f446f476b4d306a5a6e4254545646744a2f4241633278424b575144636b35492f4e416a4949452b536149423861504e41754278514446523830375a734575434156774b5a4c6a6a336f6b5033635541412b4b6a4e3249793647664135715a382f67676a4f684c6c696e496246776c594371416d524f5037307238614a69526d694976574b424343564642577039796e5a56424e565879556e536f552b716d614c672f696744304243464a562b614c412b4c75544f426b67725a672b534c4750616e6b4331536959636e397149466b68676f6d4449453035385647414663564a64544e6769496f49636558775246425252395359644934464148314a534e65492b4b4a555a7143694241324c55546d494f4b424a4c4d554a5651512b325356772f35717a5245304a3975434a6952677943725341634d5557456a324b7a356f4d2f6167724e6f53503841466d5573624e46625146305a51303952514a477a2b7044795974554d7251684e7965534372795133746d6d30415641646b326e504a5454583845454671427751304149786954324a70444c676772305a674f45445a686779754e6330736f754f4b43765245665345504c45717350334b33426b64503730464a694331473568547973475673686d56496b346759494b6a5a70514f6b6c434f4c4b376e6e775177484242566f64434d466f5a796b5054696754546a52567a74366f7137515453726642452f6f515553427564584435494744305a5836577855595666464254473233656b49656a59597253422f7451454b30515553746c6d514547374665633353536a583243436b5742486d7242444d71324d5155756d72444e425759456b384544415a4b335345733561547951556b45466869684a70593468586d6c436b4d434d55464a69343549476f5678742f424b42713654676770684638454b2b4c677243417a59666968454349515643322f74696c6d426d72666950314a42454754796f79437556765631456469706a624d65442f53746844696741566337594a515a504c6b656e4d35396953554449434d7373654332433033554b414b6b51303969446c377661334c72474248374d6c5861326334334e637943334e3131664a7469696b78475277775a42554166706f4f4155416c4d315672755849415149715030386b46456747705567346e3279397945694a524e58567567735777657659706f474b4450433230546c2b53365733747548474f616f746a4535737568617336634547714d53507956774559684a6f4c36597172642b6f3264745539556a5544673346427367644f4b3548713074567933622b6b43556a7a62423179352b75587a497331636b2b327653335a4d70675054446b67352b346c7175643375562b776a2f55713141547a5a55332b6d5a595548774b76394c4138376e70306f4c642f4844567757427449306a4e645031427845484469756332627579443063497661483849627558477551506a4846646d4d66364d577830443472444732644c797a785144306e544336306368557273626d317245596a492f4e636e62794f33755043744b39717450716335453171546767766c735a5955464b6471722b77754e55716f2b7258492f53367250713979343643365070397a553730775a47587031776e7130716f657158546c2f706967505570787951586659477466656a4c3032354a6d30343538466b6e3678636a31475074324a4a657358634d3047325070387a54554d33552f744a302b4b6e446d736366574a7978697a4b5339577650497347664e42702f7468683453564962475a50535771737366576267776741523855663778644a6f41503841545642702f7473356970592f79304b4e7a30365266442b4833724966574c33366539504831653653786a467662336f4c7a36584f4e4b4550785548705535686a6a6d466e6a36766344394b582b38544d616151787a6442726a3662636a57496a5839525348303867764d4163736c6d2f76457a68474d756457526a3633654a71496a322b4b4454396e4931707a3549483032526f4377347371492b7458486f7a383471543963767a6950436135494e5039744d526a71516a36577861524434725044316d377748593250424565723344394d667851614236622b6f4278777172503766474d6441444f635062425a4a6573334d504c627372373070395864704e6d2b4344576654496756454737556b5054476f374b6f657333596a707478445a6c4b66564c317764514743445350544d574c6a4e3067394d6b42512f7556556656644e47646c50377863446e79766a6b67752f74702f5549766c4c677048306d356c49563555565939597644427364556150376b443672636c34675365645033494c68364e4d2b4f665a705348306f4d584e634d565766574b767754663374693859346c412f384162434b786c494978394e6c6a714f434139584a717a482b5630503778496874492f7742714379587073696354676c2f7473714d57504e4a2f6435634f7a676e2f414c724b5749493730422f746b686e42736b70394e4c366e717244366e4c4355506a696b5072456645596d505a5641763245686a6e6b31507a5444617a4c786b47417a7a54533956707030793475796166716c795236595539337a514b646a4b6e464357776e2f43702f63354f306f646e4a53572b795a7330414870306e63342f4a45656d464f66554a4e716176372b534239526c2b6d574b416e5948334b665953484a4c2f63542b6b704236684b4e4f53437957796d41796e324d6f4f44676848314e6d316649716633584a716f4a483030683951635a424a396858414a76376a4d595778495a315a4f50556a4c434a4655464576547064716558703178715243762f414c6734714d6c5076734f694970782f5967702f743032366d5168366666776f2f77434375472b6c6e4556775a48372f414a50336f4b5037624a7347504c3571513245755076576d4f2f47444d5642366a4f4f413730465039766c576f5379324e374543687a5630743861394e457839533048414e7742515554326b2f437a71445a33444853782f6c563539534a464934387a2b534939516b666234494d6b2f54626859525a2f65676654627834555777656f45596f66334145612f326f4d5576547267474c79643435426b333976755a6b47546671576b65716670745038417a46685867702f636d494a6933356f4d763255345542597034374f3771576f6234505769592b6f523073314167772f5958434862556d2b78765272707777637374513955694b694478526c366e626c6a416f4d78394f754d2b6b7554377539543747635a616f76376c664c3147427041502f4e2b43622b34786a6950642b31426e6c73626a7571667362684c68693346626a366e464366716c73636a78515a4236644934676636565a396f596c6f6a324376507134413651372b334243507134647141746c69676f6c7370486d2b614932647a4e58783956747431435875556c366c44682b314251646e4a754b413256776975484a6166376c436a7076376a41305a426c4f3066484a54374f596169762f75466f59416f4831573265725334515a7a745a487041486156507335477069437448397a6a71614d5748507354523955474939364446397064496352504447695032462f77415a6a45442b5a79746f39567438323936596571526944537144462f62356b556f5554366263496f61725a2f647265424837315076375a384a48346f4f65665470596667796637475977677567642f4441564a51507155596f4d45746a4d6d6e546b6d2b787559795a31755071747650357166334f4c3951506136446e2f41474d775741375a4b485a547a636e42627637705963504f764c39796550714e706e4241343855484d4f787573784141355971485a47674c31354c704431477a4c77676b7166334b3339525938736b484d47774a6f41652b694e7261584941416a69756966554c596a56382b31542b34513843446d52324e306a77356e745a503974636a305168687858536e76726631594e6936413956733443576c427a5a62535946527166476941324d6734304f2f762b6136556656626358427155592b70576539427966744a4131746d4950746c56534f796d4b74376775762f41484b7961314a2b4365473968447651635937554e304471726a5476522b31756472303656324a622b7a576b544c33492f64326a346d3770494f4c50613343474d656c4b4c4539446157695065753548633269656c75346f334e335a464a534344686551636450646d6b387134374d4758664735744436674f64465076725747734f2f4c383047726237717875713270696e30356a75567042784c72794d77504658586b5762354c64742f5664785959544975513453704a75314236457734705a787173566e31626262676747666c7a2f545038384674307655462f6b67457175454251736e416169486145416b57552f69645153644e6c58424168415a776c694e4a653234504c42584d77354a496e714b43324f376c442f6b48547843303237384c6e6850357244324b536a453952716631494f6b6f73454c7479474231442b4c46614962714d7153654a356f4c31464645455555555152525252424543696c4964417050464c716446414671494932476b6f4f356445394b6a5a2f46414157552b53615162334b50697941457855424c4b4233644965314137385572444c464e51565171635541537355325a475151774342596c796d4d714842416e555559347345454877556b47366969613936516b6f4378486567654a527870775172375a494a6b4549795430784357527a7a51456a365573693361693730475357754343456a425354393552306a454a50695542787879554a4a6a79545231594641385136434d3551314643714f4645413076314b534f4b4b5230446b634551654953753146484d6852414a533466765578644d774a434235494142704b4f6b424e455a6c412b35417048596f48465543614f70535150484369416d50424e5170515642693346414f78536463455879474b492b4b42496a4e75616a756551514c7577716d70326f4251636b4e546f6c3075542f424151487056517a72706a6736674a7843626877514a49467a6935556355444f69656f38776f314f43416153686a6867454e575359416f414f4655633149306f564457504d6f44456676515a6b44456f34427a336f427a343855534f616a7561596f6471434375436b3054306d754b447561344943414871684a38554378504a4845486767455278722b616a4e32494374416d67374e6e2b434252584874524c59597069444e566741454d6761496f2b434137614a384b464959566f674436516d414f53596b5153437445446668682b354b596b50775474564c6349774b414471545a50785531555955514c6969434f4549696a4371507a55596e70444941545769633137436c476b6f6d6d4b4153447148504e4d77414878536869674f6f6d4c2b7a70612f5563506b6965474c7161644b42526a7954616d726d703153347153494e43675548354a6745434e506a7a3971714e7751515245715352694b47497751427934714573344b435a63676f4b75314563634649696a356f4649633163706a4832397171454e5842546766594949574a716d42623334704b647150697877434346785245474a356c4156374548634d4545647932534c48386c4a59594a6a452f54676752754b6736634b70714e56434661346f44775456694b705361497963316f4367686f70714d6355436a342b3541544a6935714573515257674b6a6949772f656751523149434934756a71487551716171644a7751514d774b625559345938304e65707966434573675258506e56415361766b672b5a2f4a4e447136536f4d574f434359447039676c7772336f757a6847574e5456414b44714b6a714634304657514e655343456a455652306e4a434a3439795a33384b424a524d65785141477149346f36696352524144795144696877544678686d6b625755423076696942706f6a414b536977706767724c354a6d4a48556f584653697a4673454262676c786f6a483237304936546d6749365179675942534a5571512b61414d34524947664254354a7049492b617230365530614834706d3030356f46416643694f6f4f675a4848344b4d664545454a6454526e69796156614875356f44393643557a71366e7955674878552f683449484c41676c42717345593956514d464f6549514a794e553361454337746e7a54446b554141345a4b5144303936425077344b7776336c42552b7075314d343843686948623371554e506b674a52354a614e7a546153664652414b507951303578775278774e436f48646767457267776b4554454848414a6b4a46304336534f394d43364950306c4b51674e6353674936634d3043534a4d6d636b305143507552694b386c41336570534e53676d5663636b44626b66636d785a3141644a514c5358546b724163306e4d4e7a526f63663249426a584c694648414e63314862447552592b46416f4a5a4f43644e45424573794968716967674e506242567631506b724147476e6b6b726d67496932616d4e41694f444973426b675543696b527770795241656c5647446f497a564b4942792f596c306a4835706a49356f41374d7070434430644e4130354949584e4267706842304d32546b42674467675349476c456c68524d515734565336773945426a587043496b365269374e376b31516757496b63536a322f42474d64585967434145445248424c554847694f474347493546424269357a785269373936455648624641324f5357564252526d726d69434541593971415073553052527a524167753641456b646961677a52634d45434851484f69684c4f366b5841303570532f63675553434a42436d723675436b6a58733936427451536c383831447769694846416747493745596b6b38766d684a79775443676569416334346f786c6d6c446975614f6f384f39424b797155645449416768304a4f4b443277514f7779536d6a636b5458437079536e56376b427157306c4364436d4661594631414543496d4961714163462f656d637637596f416142346f7866452f424b5a47574b6572697561416364534569586642466e636f567971676556616f59564f4b474234634f43465432494356417a365368564d5144584e416f493756444a364973636b4341676b756b647146425250514a59746b554562686d70454534344b467a52476f716747494a55426b6559397543595650616b6b426a6c375a6f4c4365354c6c2b43416c71637456456d71425a34706d49384b446a6a56506a55346f4b77417962526a6d6f5779534d53344343506e6766676a4c67634559444e6b5938304364694a69324b4c434e633053446867454144597878554955593845476169426948775378695852314f4b6f36585149513963307769546a67706856463271794353385641673764716a635547594f676b5975636539416a435076373037594d706a58416f426f4c7064425a6b376671785549702b6142654459715a7355326e39507345706c79514633726b4573524b6c65784e6a686d6f413943676d6c3078616a424b426c6e7852427056417241652f34496a6b704f4e56446e374f67474b4c6a4651794a51703953413658524147616e6c315930553076512f4241414179596e703148484a435930696944426b454244506d6a4550543936497862454a54464151385550676d6a576e42426e4c6f464d58715642496c4f7a714758765144456f485669692f487454415078514c6f354d6741515641364f6c415a42752b7155786f364d6f7864436a67526f676b546e6e2b616b447779566b6150676c3176564172426b44576b5437594a774f4341486567516e4c6769434a43754f5359426a3149734543415a705143724d454a554343474a35632b35412f704b59746c336f4671636b4350485656485343696358527a71506273515630426359495942576e7456636f6e46414d61476854456a444a46686c6a3742434d554664525248415a4b786761653376534545494564733255456d476d4f5366484641675071514c70344a5a5234703436635547306d67515661534d636b4e5a346533376c6479464d6b736f766a556f4b32654b5445555670695965464c7041514b4253764e4b514d4662714c56535372456b5a6f454c416c71684b6168315a7039754b57566f6e484e4257626544497467394534426a676c306c6e795156365850566771764c475077576a533572565152684443764a304759776f305757637762706b74307831636b4a7866454f67784745546a583239714a34782f5341727057323757376b686870365934494b6843516363556263484a4f43734d6d7866334f794a74743144484a416d3368316170436758516845436f7756467361423866624a5966555056444b4c62654d6733316d6c657842334a54466b4e6a4a714c7a2b2b637a6e5047524873467a4a623763532f7743704a6178636e4f325a47546f4d456353434b6c6458302b50394d794847766375544b64535a564b362f704d52494f526d677737726f767a30763338316f394d6c47563444334b6e65516c39784974552f676e394c7479473468326f4e2b383161644d716a5074584f6c4445522b6f742b4336392b4d70394a4f424a5759514f49772f464231374d487451594f30514f786c5250615566784c5044657a746a514b4e6877556c76626d5151585432684959437153587038766f2b53712f75467a68676a392f635a325157483032526f2f376b7639746c476c442f41444b6d4f2f754d376646443736374c434b4338656e79793732516c36624877534351622b3450454e506567665572774c434d66656767394f727130736a39672f7743314a5031432f496e777144663353774d5179426a3666567351712f37664c4f67644e48666d486a436e33706670697751504c303655756d4153663238393655626d51646e632b7a6436762b386e41566f7943722b334d35446c4966544a4d7a4668334b383775626d7444394c4a7a75355975677953394e6c706f2f5946492b6c334a4870485974663364774f39483463305465496957374547542b31544c676b52717048306d54454f3535344c6447394f70787755382b636f6b5a756777663277784e577038456e39746e526d6464507a4a5570586979655436714433666d67354d66533767636b4d5864542b32644e6646693636346c5068687a514d58785163762b3345526f6572734368394f4c34727352737875596533347177574c574c664642775037584d3169522f71524778306c797849357230456470624e44673663656e32547a644235332b327a4659753578716a2f414732636343423272305550534c42385561667a4944304c61534868662f564a427742735a34437638584648374735476877397939422f59646b6161442f766c54347179506f6d7a622f6a66746b667a51655a2b31306655414f33464837455348694234615636662b7837482f7444347076374a732f3841746a336c423569477775446b4f435537496773514f4f4b3951505139694b6554465844306e5a787773772f326f50496e617848696c4564736f2f6d6a354543583879482b34666d76582f327a616638415a742f37492f6b702f624e702f77426d482b77666b6738684b78626b64586d672f4a4e4c615269504542324c3133397532763841326f6637516a2f6239742f3272663841736a2b5344783064727044526d35504568576d78444b516f4d645158717a3664745455326f6637522b5367394e326f7774512f326842354932344f2b754e66346770477a62474d345635723170394f32782f365550396f54665937662f74512f326842354c794c623942663549697777662f346c367637446266384161682f744367395032772f36555038416145486c5a5766316b4476536a62514f456f6e322f6176572f5937662f74772f32685357783238716d31442f414768423551625950695065696245644f4c723149395032332f61682f74436e3247322f375550396f5165592b316961524d516c305131566d35587166376674762b31442f6145527364754d4c5550396f5165576c745979485455707a7443326f6971394c485962654f4671482b30494830376179787451502b6b49504e44625430696c4f304b486161612f6c6b76532f77427432332f61682f74522f742b322f774331442f6145486d50744e5146592b2f7554445a5366484a656d4f7832352f77436c442f61457639753232506c51662b5642357a374b517137666d6b6a735a476f41587076376474662b31436e38495444596263553871482b3049504c48626748544b54486d6632702f74684c70426673587066734e7366384170512f3268442b3237622f74512f326f50503841324a4c474c767a415655396a5548686b34586f76375474502b3148334a68365a7451473871482b3049504d66614752724941633059374b557175434d4636662b336259462f4b672f386f522f742b337738754c446b6738344e684a364954326b682b6b456353765248303362482f705239796e397332762f41476f2b3542356b37453467397a6f7832636d4c4141667846656c2f7475322f375550397141394c327276355555486d7a7353517959625054346166697652663276612f39734b663276612f39754b447a63646b5a5968413755595564656e2f414c64746a2f30342b35412b6d37596c2f4c69673837396b53486270436e324c426a4835552b4b3941665374716638417068542b3162582f414c595165642b7a387a706b572f4241656e673454354c3067394c32724e355566636f665374722f414e7150755165632f747a307152372f4149705236635935594c306e39713276365069667a522f746d322f52385a666d673878396958385076514f326d6367334231366a2b3262636651456637627473664b6a376b486d507458795a496469584a314c3151394f32342b674948307a626e36425642356e374c705941674a54745a346d53395150533973502b6d45523662746f3457346f504a2f61334a556c56575232522b6d444265714f77732f705a4b6654647563592f452f6d67387164726379672f48712f636e2b314a7843394766534e71666f2f39522f4e4e48307a6278444343447a52326b63394c716661466752512b39656e487075334830714830367766702b4a5165612b7875455578476155374763546734374636582b31626239482f716c2b61503973322f3663655a2f4e423572374f3977444874512b78765945447543394a2f614e722b6a2f31532f4e4d50544e754d496b663670666d6738734e6a4b4e444673335668322b716b69503841555636552b6d6263314d662f4146532f4e4e48302b78483641673874485a5738526a6b7a6f2f613036672f6267765479394e323873594944307662417549563730486e4c653347444f44514e6b6839724d5558706a36665a4f5878536e307a626e47502f414b6a2b61447a48326d44782b59524f31416668324c3070394c3278786838542b6167394d73436f4665302f6d6738774c4d695745514552745936395a4339516654375a2f562f754b673950746a4f582b3542356d57794244694c66536f5054333855514858706a366662503676384163555037646171356b352f695165582b336b52545365544a2f74704d2b6b4f76522f3232336b5a66376b763970743436702f376b486c5245414e564b4976562b387035592f696f325842416b344447682b4b73322b34766255694d4a6b512f53674969326f5a5051342f7035494f6e5939656a4a686667572f5648386331314c4e327a7549367263784c42655849375157792f464962527454654c774a776c47587350656739646f456143694a43382f5a3956334f315954506d322f347153483572713250566476754f6b54307a2f544c443334494e4c4d5849523068327a52496b326f564239796a61753541684761586772544870356f4e5641474e5033497334723773557546464a41386b414775324e56732b2b6f39325330573930583033417834685543766977526e46362b3145472b4d784f7353364b35314d512b722b484a5777765849303851397851624646566233454c6c4161384d3161676d53575270524d7179454178716f526e6d6a324b55514b31434367476d4e4b443861424f61494147774b676641494f657771436e4d6f43425241527169356b42564b344f4b4134597057426c584838303075334e43644f446f49536f513466322b43685046426779417844564b683663454d4570474a3969674d696a4b4c6475584a4a4772756d6739546d676a754f42533538452b7254332b336171794b416f476473456f424e546d6d692b7235714550583655414a6f2b614663515558792b43414e615949497968413852554f4b48793976775153744f6142434a6c496d7663704b49616943423043324c706d36584b514e6966676766776c314765706f6868554b4176576a356f44306b7052376c41347156434d6a67674771764e474d73686968344252544d48424244584a31414b666d6a34616a42444e3043466f4a6f794a63714d544c6b694961617367676b2f6479554e50624a4146364b415046796759452f6b2f4e4150454d6c3065775169674f6c786b6c59686c4d52676a4b624d676268524b474f425269544531782b4b4249392b5343534c64726f6d67713645546b5650434363304563346f6b35494f52306a32504a5367375541426169676653796d724a5444326f67594470354a44564d4b347051347167627863304d75784669684c334f676a7367374853704a78345554493474326f4a34755344422b614f6246454230436e69366d44507855634b4374636b42784c5a6f5336757843644b414a6d474a5142693377556b5248494f7063474a552b5343434e574f4f4b476e6d6d3031664769534930767151456e745a544d4b524c3430434a3449412f464d4f354b42376c4477346f4142376b774b4a70486b55414d7867675873434c5a6a7654752b66596752576c45435938697068524d345a2b3544525273304166686c69694934674b4241423648464249524f48376b63442b4344535131644661346f485a6a792b5367357052554171524f6e44416f4a4963416a6f444f454878644848424247507571704b664651354142305a5a416f452f667a5466553871494354593863455a456d6e79514668556c41484d4b50495971557951535842523379514c4155784b6253544a414332484241426b644150536952785148546b614b4f314371367844706a687a51514e6a7a5246436b6374584e4e513143414446466e4c42366f34457467683349414139552f68534e707155334d31515358545131434c436a49753963733073716f424d42736633716168414f45326b484c39716e63675745614f45573156525a38554841445a6e346f44326f536c5476554e6535535a35494965426f67546b5561346c416a566a3763454531617363564847425270676f51324b4148486a7a554845346f6c7537696f33755141675a4947754e657847546b38516d6a45527167557859715246464739795a2b35416f4250503971686c6b55327155652f34494144453549426d6849366d524965677a515a773153554479783663314d4167432f43694c5a46414934496b6a46523946505a3043394477514269616646486d694d48396970685641756f733543616f5131555247434351593151496176636f7772485046456341676a30664467674b6e70556a49484445714f4158373045596a44464d4d4f4345613147436d676a4242416664795250413442413842695531554577714641776f6a34516b706745443064494452314e58414a6f44333969426e4971456d6b78726755784c4471346f6e4277674248556a5853516854416e48696a67674264335577706c69705475556b63426967596b4f3453645741543663304b49446e37594a4a34592f424531344f70714a376667674748616e5a7734645275536841376b43747052356f55646d78524c635541714237594a744c394b486978514e4f70413851436b63592f7652355a6f6b36656561414a6f6d716b58536d4a4651674d6e50616c3067304b4c554435496b4f437a6f494d454e594963354b436c537068696749354a614245452b46516c6a2b43414477766d6a476b645761566d47704e326f4a3034707168774b4a596e4e30786b534d4f354148656b554241476d434c674d4f434c2f41412f556758446d6d6d48787a51372b35426748624833494764716f5250425156476f6535456345414a63315145514f33676f4e4b4d673150336f4953347169774b455968326a6d6d4f4341536a524c584c32464552466851396950387561425132616a35596f76394b4c6d4f5341422b39534d654a2f4e4d4d554a6330414a492f3841796b5363736b43586f56506b674e55706948705439695a30515255494269554d4d436d69305231555334477039755341484e516c78564d5735714e376b43356f7a624a44437162785551515371787951616c5752596673514a6f33464241774661354b4d785467616330474278514c46716f6b73636c425369426f4545474e553068556c43504e435661436a46424f314d674d634d5543446837424147592f464e453953456877556938614d6768494e45656f697142476b736e784654564147716b694f4b656f434a4761424d447a524250616a54504e4578594f676e616c497a5249596375534c7335514c584168426d794b624442512b334641736f3673366345614b4233303164523041773973564931726d6f7a34596f694c2b35417245347077434a4e69456f4a4a37386c447a51545543655878524d535335514876354b4d4345424e6533386b4468324952475758357039514c307851414e326f64794f6e334b4d42326f4270464f536d544646714d464a444d3051435054347355484e42696965616b78526b4236733147794b487a4b6b6549785147664236354a587258446b6d4a77516e4f517971676841592b32436b69634d6b7a7679554a4a6f616f466f2b70445339516e4a776f67644d514145437477526a6d6a58484e51387a516f46647a5647584251786576424567564278515230716b734b315448694d4f61416e6b6c78375557424b6d4251544d424b37426f6f73697a6f46624e523830315063685134494a454e686d6f5750616a50554548397943616665695a45426b4e4e614370545134494161426c4248483371467373506d706b676d6b3555534448735241723035354a2b6b49465a3843485245637a376b4765714c6b79514549455a3855585a76785578775141593139364c34746d6f325a376c443148733549497a687955754e616c4d614b56796f676769546b6834676d7165784951414f4b416e413855593668676737492b47764a41765a51706d553030357147694254485074554f545970772b42514d534f61417a647531566b4841305467444631427844494163654b415a4d777a51454e50596767596a327953796934624e4873556c7a79514b48716a4531527168322b3363676a5a4b507037366f4f537852475042416a305a6c4158342b33376c5941336277516b454350712f46493251375659776a306e4e44537a4941394753766d55774e582b484a436f3549454a47622f676d4b4a646e7a51496b783549456b424c716c696c30384d45346a7078526a445361352f464168426a6d716d4c5a4c5249416d7674376c57494342776f677230455a4a573756644b49505477516b436345465a4a444d684567556c32742b355753686f777853786a70446f45455934537a53366f3571316d35396e795361447751494936714771476b7658424d326a416f53424e5839794373677367413241546747546c3845706c704c5a2b315543366e72794c717551614172543546576653576449594f6348504e42584b5a3047494e43754a654c754a5a4c72334271426947433556327447515a67387341756a5a36624a4f43357571754b36674c52444445494f584c41786a57754b3748706b50364a6b614c6c6158704c697531365a4237626b6f4b72396c3772314a61736c627459395466676e755231486d456b586a715973636b48574733467941314676624e4b5054677761546375316371562f6377446562303969427658394a4f737851646237423647595a566e302b4f637452584a2b34334a5a706e7353543365364e4a535164672b6e6e48367667684c59766d347a584a382f63674e475a2f306f446333795048492f70726e7a4344732f3234484238736c5848306b452b4b622f7043356876376b5236726b332b4153472f755a55453048592f7463596c6761383067394d67432b7475327135666e376e395a3767364d647a755341424e75656c4230592b6d68336a493135596f79394e7548704466376c7a5a622f64447038312b344b733737644470463333444a423135656d616645615a6f6632364c317a584b2b39334d6671645766656267303141664e42306a3663394d6b3332456831454f75543933754848395268795432397866636e7a4a507a776673356f4f6e396b306e4a707a78516a73584c613954636c7a5a627a634f4f717649653930447539774434735548562b7841365a6578375650736671385865755750564e31673462735379332b344e61633855485947304d6570767855467471634678343772644f356b506452586665583555397a6f4f764733794b6b6f4e58454c696666586834542b576141332b366467514d6b48654d49355554516e416379764f6a6537672f57366e332b3566533644306b6267424d514851463241704a33586e5a657033335979666b6166464a2f63747757506d5079374548716f3771324455534b4933566f5952507433727a4139523350696478676848314463356769714431673951746773786450446632327a586b2f376a756670655663456839523345734866466b487268366c59646a512f7970342b6f324439566547433866483143354a6e724a36496a653378694152386b487366376a74783959546a6532503142654e472b33417147626779593732356e45534b443258336c6b6658483370767572574f736539654c4871557349327745773951765336596742423751583766366837305050742f714876586a49372b2f674778344a7876726d516967396b4c6b445146487a49385634696539765646436d6a76704e2f78785165314e79497a43496b4376474466484452464437306e36492f4a6b48744e5155646c347a373756574e73483237557633326f7635597077722b4b4432756f497576467839526d497435634735342f4e5766666b654b3346754b443137354b4f46354358716363504c71676439416e543555675232664e4237456c5265506a3667644a6145515034712f696e6a767a6977722f41412f74516574645231354137773136506933346f6565425578502b342b334a4237425231342f3779464f6b6538706f37347630516a54692f77434a51657564523135412b704436682f746453652b46446f6e372f7742714431366a7279493952306c6a456a332f414a7035656f61673766753936443162714f764b52395270345a653945657136545545646e373048716c48586b342b705364716e76492f46502f63534b415635796b55487158556465566a366954535853654e667a52487163692b71546a33666967395336693871505644454e434a356e564a6c5a2f644a444c335351656d55586d54366f654d364b6633516e395878434430796a72797839536b47456a4d636f794b736a366c4d66714c6678495053714f764e44315376313938696f50552f35366678464236565265616c3667534b4764663430592b6f74695a2f3776324950534b4f764f2f3347342b662b3739695766714e30563668524236525265626a366e4f5649794937612f676e5071636e66556537397944304b6a727a7739526d63445248372b59786c496e6745486f4648586e7a366b54574a6c373042366f53635a486c676739433669382f4c315363614e4c2f414852522f755575662b3542333146353065723561352f37507a5148724c535a356e2f542b7842364e5265666a3671546872627548344b523958656a7939772b6144304369382b66553577506a506541666b45503775426a652f384154464236465265656a367a487769343537422b4753596571794e4263446f4f2b6f75462f64694b6d5348393249446d542f4642336c4678543671576f342f6d412f4e4a2f642b662f414c667a5164315263492b7234445742376e567366556e502f4950682b6144734b4c697939546c48363474786239714839322f69434474714c695239574f446a745037302f774464414d626b663976375548595558474871764351502b6c7678522f756834784b44734b4c6b44314e6d6551666779622b347a4963615548565558476a367354517967435062696e2f7573526d4433667451645a31467976377166302f46442b3679783030516566636164514c765244486e79536b3848694f4449427877515332596e485543457a67304f6e74774b6b656441364159767172775a4243584f6f6832546450424d774f594345616a53474b42435a4873556d423443424966793139366653584a6b57536d4a6b4f5342624d3732316b664c4d6f6a6739506375727476575330526641592b4b6542486469755a45672f4e526e50534d3048714c4e363366693971516b50696e6c566878586b6f77496b39766f6c2b714e485779783674757251417567585965365344304f4748634d45414156673233717532334230672b5850394e7a38313044456b5078397a4946304e5442466e50425148534566676758776a735544765244474e45575141786963636b384a7a424c482f4148594a65614d77347167732b35494858482f6256575275435659724d644a41353845496b784f6f4642706b5777556951634654435772784b794e61596f47643845444a2b314445666d695a4142415a454871664243497a42533555522f6d51487379514a79554f4c7153776f674e4f315478427663674352524553514b446b636b64564d6970714c6f455a6f43584645726656775548656a326f49434969716c4d7338564a466b6f7145444163554747474b414a666b6f656a76514b35795531566f6d48466b4d334f4b43444e7345666d7070536d51456a6d675a7a684571544c674a424a3665354576786f674a444a61794b6246534e4541414770486e385644496968716c2f697951535a2b6b6f766b4d464158777a4342726e52415779515a2f5a6b54306f4d476349463136676a584146426a3371434a485a6d676c4136494c6f5141642f676f57377767584b6c553730706b68435279524e614156514350554b347147492f425474716f65714c494147557a417a55666d69474e5256417373576c5644456c5136652f494b414146304241616b7356444c6d6d50366330726b6b664642426732436b6e6f5751306d51785a4877785151397442775374676d496f707a514b4b565467784e42696c72484446456e4a4149385647424c714574546967422b35417846634570442b4549386c4a5a6b5a6841497537554954524c6d695842537448514e49746967354645676948634a67674a4478634969525a2b394b656b746d70713655444173483470654255484a527767474e4d6d524f703246414f614f6e504641304c6e4838554562565559492f53307355703667694f73647143446b674f4b444936734542424251544175676169694147427751597533424846545431565151785a4e427348536d564d6c4a6456516746486f55537945666b6a70494e5542634b414444696c647852536f7851457638414251476c65314579496f6330634f354167366854754b416b4d307770514948424243357168466e4c3979614e564b6756514167343549474b6355375543326e6d676b6a576941484a4e416d4a726d6f47446f42794b46525467704a386c4935424157627451505468677067707147487379434f2b4a5a3041774f61642b6d69535449486c4a6e5545744a593470434861574b4f676434515456684a466d39364f7236545653677851514453616f4638555931485361714768514373715a4978366a676f49314a785a434653674a3636594f672b6b385643446d6f57445279514f2b514b424a63756c425459592f46416f77786f69374676636a436a7043376f486378726b704531597065525453416c6a334941545651636c49746a6b70356e7651514f52775166676e4a707853786f577951446d674134465641644a54366e716741456e2f4a515278556c785077556b43775a414d4369533563346f4e6d413659454636494954514948704c5971536c337570514945596d6d524b6154785248755538474b417331592b39412f696e37456f6a577455454945673342516b4e5556536a755268536e44356f42453063554b4c4d585270556e46474f5150742b3941486644424c346e496f7973654c412b31454d6d795141506d674b302f596d4d734737306f724b69426d356668676c6958526f356269694b64504241474577516f4341574f4b4c694a6375706b67616f6f56426854443845493431516945444e6d45474936694b63464b634577785a4172354a6f6c6e4d63754b44736348436b7542713641654b6e76545549663471534c4231504341454336534553424769595672386b4e5753415248464567346e6a6b693471794244436d4b43494a676376326f7846654b4244536e465148674538534d385642476e7452424348775369494e416d6271783745723673454259356c5367556d50642b616a766837304145546c524e4b546969684a4e4548506978515177496c58424c7830344a784b724e56416a695545306c752b696a73612b7a6f7357626969593051494d574f436748444a4d533142524153417850374541484a51436a2f41464a674b754d45515269454365575866676d78366b437a756a627056424448454a57315654534c557a51485042424d3261716d4e454230792b61496f614947616953514869524c76704b6e4c322f4e4141546a6b45776c542f38414b5361544768566d6d6c55416a56314b41555566494b536b346f676a316f55594f557368494e7037307a556269674568522b4a7855715254465274524e6346434f4b414e6b70454a347544554a5277514b52676d6a46362b4c7351776f6d465063674277533654676d49626a584246754761435244446b6c634d324b496d31434855355939694152446773687139366a75457762504a414a4f316367674b387745344c314a596f36614f636b43456a42305343657a3571614163455a554e4454386b4530696a464b6959487452784e6665676e4935714e3845514137357063795545306e3371477452324945454a6e4c5551534d5737386b5a5653516b6145736e34634543306a2b61424434706e61696b6f4d474b436161436c464761714c76306c41444c4e424d516a696f65497853304f4f434346696578535450544645415251617445443667614769577070376535416e6936494c303755416a7a545058717753674569714a2f69376b454e4167496845564c424573542b534254485656456a47696859426b424c416f4366346c4e4a756436686a6b67395544564b684c566f6c3756485063676a5a715549712f424e4561676a467879514a5549614b6b38506d7244314f6c41667651434d5846554d4551644a42554f5078515131476e765a536d4a5242466345577950356f4b7878545033685269564f78424e5167486b6c4c476f54434f59714554312b48336f49514a59354b5648536751772b4b426b3141676d4e4577494b4c665355506b45456f4b6f427a67675237303142326f4a31526b6b6963696e7a55694d43554163784656444a2b314f5348535678434359684d59746c564c564e72346f467a356345575453487553632b354242516c5366775442685241346f42454164534c615378514239796254713755415970534d446d724d7355735869674c50322f424469365069636d694a4770424b70564a4846546b6768714b4948424d496b64364f504e416d72543334493430435978594f55496f49486e69694177636f766e6b707059486b6758776e7353734a6d695a6b52326f4267416c465a6155305154676870504e424a55706b6f654b4a344b644a4b41526242364b41566241707a426b6d6c79326143434c6c676d6b4750742b394b4a566f4538704564526f6755356f5939574f53686645597033697a7479514c49386c496e35594943523745532b4341554e56416d7179456f694c534b4161695643516536715a6d4862785162682b39414d714b5247716a4b6148727855415a794f35417244504e4e4f6e5970784349416c7a43437352346f7a6942554a6d78514557426a6e6b67455147516e672f465175412b614d6f763473516772456632706d63636b615371695141794375496371482b464f53636745704848686767536a56544758417370704e455142707751566b566f6533676f5a4574782b535a6736673449464d412f4d555368785876544e3038386c4e5846416d6b495244304e56626f53364b494b6a623675616d67396a4b7756484e4b514f386f4b3534733453364b4f66337130676d58424a5241686978632f6d79515242385743736b534f2f77435342713731515636537a6e4a4c71424c59496e7842314a394f5655464a6a57767753334930364468693630746d4777564d7131506947584a426d6d306f59446d7552754137384175784f4230367341756264672b46414367356d6b4f463349524a747866685163467970773030674d5632595739635258414d45475957436366337258734a644d6f34565465584a6e34664a4c706e6a79775161703237632b6d57497a43667972597877584f41754573636b737a4b5944762b35427575576f6a47674f6155576254735a50384142632f544b654c7333742b61674766665642304a62653145307a554671314d38575743454a344f772b4b423142744a35633048514671334671314a2b436b7476624e5a5359636d584d6a3570494a356f4e4a6d6a6b586c6e5642316f574c52726b6a6f74786c7a353846794a536b526e32705247594475582f42423168597474556879634f53513753325238757063795a7552427153457a536b4e524b446f6e5a3253584c6e2f56676e47307474694147626e385679394d32636e75513879344b41345952516451574c524266713753694e76594277584e6c646e6b57346f45335342702b47464548526e74624d61784969492f77752f656d687437557869353459552b43354f6d63754a666e675542626b4b2b5a49494f324e6e6241796a79784c7173376532784d4a617136567878626c68456b2f5073526679343473634b356f4f714e6c622f41465079344a7674726351385850657551646344706e4c396e344a7a4b632b4c5a6f4f6b6472626343636d4a392f76552b7a674b366e6c2b43356b705446484e4d736b4a475165594a516450374b414a414c636b333264734370376775534c6c334f5263436c614a6a6350456c2f6d673668324e6b484555797a726d68397262464177374b726d366a4547765555494759776e5568423150747255693879364832397345436d7238467a524b584e7662745436702b4b4a4b44706e62573230594a507337637a7031647935344e7752643846426476526b77516444374b33414f2f774474544377473076376673584e3836592b70754b6133656d614f66336f4f694e76475159666b7154735233596c5a6a4f3431544c7379513879356c696732665a434d767a5478324a643378775744376d6238654a2f4a447a62306a536a41494e70394e694d435535394f68306e555173493365353159686879556a656e6a717167312f7742766a78522b78694b4c495a3350706c38565962743850417a5075487a51582f5952347368396d42556e4a5569376564335147356d49307a516150733250616a397048366354376c55647a4e6d794e55673345366958306f4c7a7352395234646948325544557547775a5565624f5574542f4149496e63585865524842426f2b304657772f464750703275706b7a352f4a552f6458477839345348633348663861494e4832422f567134535a6b667370635835795766377935487045734576336c7950554d45476d3373706a4846483757516b7a674c4a4c6658414b305477336c77786f644b44514e715361354a52744a7946546771496271365974493675316b66765a2b486b7944514e695a592b465333745a6365785a2f764a6b675277393658376d37626d377541673266617934686c44745467506d73304e334b51716d2b386e6c5642616471535839765a3066744e644969716f4f37764d4f484a4f64784e765a30454e6a4d554b6337615571503731543931636a5367485970393150416f4c2f733249306e715a4162484c446d716a757a4164536e335579574343364f306b4973542b4b50326d61714f367534686e536e6433444771432b57304d756d50777753783273686d50773936722b3775557749526c765a4d324d666367754f336b33456854376552423068557733747739524641674e374f4f6445466f326863552b43663757584771702b396e6a476f5453333869314b6f482b7a6f6a48625a6b5963565639334d5478634953333835426d722b53432b573078647553454e735a5a4b69572b66535269666569643930644e50355546343239772b45304b6832743034454b6b623635706f582b4359373635487150754761426f37613532707674433952584a566666794165535033317a6e79507336437957306b4b35384566496c62772b436f4f386b6e2b2f4a79427a514d4c456e63554f66464e473079543736346147414859556833313341434a492f582b78426235423076334a664a6b614e2b434839774c615a414f3330757959656f6136524655424f316d4453724b47784f51537a39516c625055483449572f557a4a3347413936416e625365716832387346507679616b4144394e58554f2f6e6a6f6a336f4547306b61423034326c77345247726e2b31577739534d58365150346f3152487157704257647063594f3363716a73626d41487678562f33306a31474a5a412b7154746e702b5343694f776c67773763552f77426a49436961507131774851592f366d6f46503774576d723349462b78754d635642744c6d4434386b5965727455702f3778626a302b3379514c396e636b2b626677674a5073647849644170786c54325a576e315236675037646961587154596765394252396a4e326d53543841696468634163465866334d2f7059492f33567867543847515557396e637945543855333246782f43466366565941616a475237456b5057426e4359484c464258396c6468347543583753377031554943306a31574d7a53457532694550563474345379436a3757366646456166356b50736a44492b396154367a4458567950356632496e3161322b714d61482b46426e4f7a6c6951432b544b6f6261354771337739597435673035666b6b4871316d48564f4248627951592f4a494e5039584650355631734a61654b302f336e62334d7733445378512f756b4d4d6d5163694476544171794d67542b6e3954636c515a3661464b4a4d354a63464270686a524d4a7448534d46527230306f2b49373059546f3071494830475277663235714152447577596f506a715530786b5252334343794d6570714d564a644d5735717354414c46466d774b43304153704b6c4b4a52624430347174694a48694649456d7561432b5141775345767a41553176306c4c62596b67356f476b4e626734634a4a39746475376374616b5150306d73565158314e4b68566a6b346842316248727349394f35695938785750777758557433626434663070436659563562555a6e5648765354684b4a654852495a786f673964703731574b564334746e31692f5a493836506d524759785851323371323133423036394234584b562b58785162496c774238314f6141692b4f614d54714f6b49457555516b325761596a4d684c544a41346b31536a4366446b6b4c484251536648464262714a3675435564574863674352523058594e6967634e696355496871346f616a6c334b504931514d59736f2f7653305065692b674641655154644f4b72724a514279654b4179524d6e4e454863664a41314b42774e53424344616751436979415370306f767053307a702b536a682f624241544c4a413071564e4c394b6a4949534751456168385370497658697045596c41525767772b61453051324f436b543730456744336f434c31526b5853534c6f444d6c776961464d4b4273696c5979786f45454a6646414475524c6b736167494d636355455a476d614a6b31426e696b4d3045795a463251717a444654476942644c756a5350656a464a4d4e584e415163686d6949767939763249616156594a6f444e41756e6869694b70714538796c4b434e777843414b596c68676c646e2b4341535959596f6170484245554834497345452b6e6d6f7749637151615367646d785154554e544644414d68694f784538454569786f436c3539695a736838456f346d71416761636170744b575163746c2b534d6a6d6757525479464b305a416e76536b74524151354c6c6c4969724165355161585931546d68716772442b4b69496678635541306155543150737941455570564c6a6769656150464142566745486f796b7148687a4b4c416f464a503149434a4741566a2b3261514e71514f6164576148695974556533596f474b574d6d6f675a694d5557657553442f414b736b58654c6f42386b48306969686b4f34715277626b674f41634a644d5a64716133785130673449494f48682f42545470716f5746516f5a616855565151564c4951366a70644d4b5639796b6d51416777553034484e44486d453441465543523673614b484446456c366d694249385342797a5653596852336a79556b30655846415344576e3745477133484e544556512b4342734b7367524b52664c327951314a35365744494979574e537950504e434a393642694345766936516e646b6f6c7951413172697032425443696d4d666b676764516a4a48476850656847576e4842414f6b493064796f4a424f593855466567344f70704278373051374e797855505a38554278436b67706e57714e4455594945485434736677544d6351704b62646d614461634d507851484b6941476d7077544543584632524547514b3437666246486d63564e5878537847724c444e416670645355717054546d6d426643714136796f634f61414a6448436c58514c5148755277375550467a516236536759456a784b616e504a41594f485264424134775377624c39364955494f6553414d5a4f4d76785277527843687a6a6d675671696a4d6d6642776f34775a4b4b31514e51466b51654b5578593951544d53344645416b5852624d444a452f4e416471425747616245414a514b755452535151534e65715359506b50327054694f43614c6d6f434252486a564758384955783973464477397661714262624d7a55546b675a4947546449785550504641644d5455312b4342384e4f39524d5973676770694d453144306e4e44526e484e5349514842566b6e4a574774456f6b4737454569477737305865716b7346496b6a4a4244315547434d5269526d67596f6d6c435541692b4a78544f3353425651484a4e58504a41755656476571684f6b386b63554378414263706a4c4c4171475048464c586b674f4f4f614d65716945576675524759514544696c6c577163526350775379426349456c5350424d4a686e4152694b55342f42467663674f50622b4b454b6854536941572f4a414d41416851445346424758436962454f674571554b44414979715077516b4b4d45415969715979376b7836536c6845596f41344935354a67344234714d47354a576441667a514643614d704b504a456954645342574144736d66676938633670514f39417734484e434e48396d5247504a45444c325a417546545149654844424e6f4e57536c414446336a3755547830747a52414f49554547784b41522f6939366b6851446969445276696c493549494f654b426a716f6e4d684b69725a30454571707a58485042517150544c745141544a66326f675467546d694f6b4d6a5467676e674c4b644a4b6b61314b4a464b4946504144696f41794a357152485332504e424447694f4e4d4573673965536b526d45424641516c427134397962686d364770685446414e6279726d6953434d45533158526c494d79414d475955556a6b6379692b53414c34494337486b7052325149346f77356f4251646968714777344b56524d614941654761444351634a7748446f50704b415271706a58326f69545677704f4f62494a414d4d5649795a414476525a716c42484342424f4b6d6e556f794155666b6a704c73453141464478376b435930436c4a56696d4c415a4b444667676a463871705361554645325655474b43446a376c4d4f6642514f634b714d3551447439676d387a566b6a4b754b676939546d67557878516a784b6244384558725241756b4376656a6b4336424c4631474f4b4168736e554c4d34514846545336434873516a673243646e787056535555436b652f4e43543467424871474a716a7a5152754f614a4155423034706a536f434372527754787279554569357254336f6c733043737942723765334a46686c2b78484e30417a716f584f444d695471352f6770676753595441426e5255504841494152566c41575530352f425269676c48556b355374714e63516d4250306f466a78792b437346616d69586d69597431494663796f56444a6c5043457a4868336f4677782f636d6c676f7a4941635541306e4e527963505a3077446f4e705a736b456a467a77556b4147436d435a75574b42635647346f365161494d4d43614949784263657a7059565445643455624d494245456f4e6736614c424d434d4d554345685173616c5453447943476455446164494f614c6e6b705671706f422f45675352644753614c45705a664641705a6d5278787854505241687146424347445553796a33702b314178303449413852563150436d6e4853675339454249514f4b676f70496153676e6944496d4f7246535452556b4877716768426169464456517437594a6f395061554572584e4c454f6a56755a556339694258366d6a69704956644e466e6633714368346f494f476141346f354d564f53414370632b3548476b6c4d305968424f314b315777556b45666d6767697870696f4d6c4154437249454f4e4b43534874676f4b303471435842516535424d4255464b4e4a79566a596b4a47426a3765324b417350636868556533374647637067484e5543314972556f44676e494d7170657842496a676f584e4d73304e50765549506943413873306d6b524b7469536b6c55736745683030514e616971734c6f4d58644168466166366c4a4a792b4348544573675145706d616e42426a676345515161596c414e4c4f525254556a347953674b7678514b4967422f594a54467a6a52457777526b474c68417067374149633845346b58664a517842716755525a7a6d7135646e5972674d776b5156474447714541354c6c504f4c4e7a2f41422b4b4944314e55464d72564853796870444b2f54562f63684b4b444a7742506171365337517457687a7149536d7a45645846426d3143546b4a7455683142735578743654797052494959792f42426e7551456a4a773478584c5a33352f4264323141796d4f43346d3374755a475763756f646942445a69534448496538725a594d6263515a355033704262426b47384a556c7459794c6a4242726c753766674c3867464a62717870722b61796662356b3051386949426442706c366874785559742b6c456236784a6871797134617178513230575a756b385573396c527751483971494f6a48643254693150782f4656486457526b467a35624e70466d592b3243623751314a4f4645485138363134695062696f64785a6a556d6e344c6d2f5a444d6b6e6d6a396d4a6e564845555164447a3748367144447078514f347355367346674f79727a2b4342324d7a68705a3838554851473473786f3437305466737a7164424c397665467a4a624535316669614241656e61533944386b48534e79777a457432305138367845445470626936357832556e2b5874676e6c7457634e6767336d2f59316167516f4c746a363767584e2b3031463876624a5048617634674e587a5164435734325a65635866344a5a337245756c367246506253474a485067795347326b42587537304852382b7854344941324c7641356346672b316c48702f656f64744939337651644b354f322b6b4d477735737047355a3156496c566376374f636a514f6c6e73394944446b6736766d37596835467735516a6632756f485651726e6e6154464d6d77532f61794663526767366e3944455337614a58327a556b373070374f73413234495934714861384d4f7842766a5a737a625351337a56672b3348696d4136356339726b582f59674e6d5451345a494f6f62653362706b4f31536362416f343539363576327334426b35326b3541366e5a42756a62744139487854697a626c45737935703255715372324a4a376336767172376b48552b3132394451794844393661646d79774a627679584a6873794d7458656d6e745a517744636e64423034574c58454a7674345976466c78706261654f484a5162476f6b5a45494f7362466d4a7842666e38555951746e4131433573747359683475653943566d35417479656944705374573559476e42475671326161734b3658584b6c47352f4545507470383351646a52625931626d6c3875784d4d395175594e704d6a436d58616f624632324b756558375548584669334950306f4462576a4c47502b35636a375734533641326c32355846766b67374d37566b505564796868614c42317954744a78714b5a444e45575a6b564a374548546c5a742f725a2f656e466930434f74337758484e7344704f703073624e7839566159494f77624d434767553532747363427858473869354c6951663476334b6552636c54533537616f4f763970616b783152716550344a7674493546327252635365306d535769796362596d73666d673746766157346c68542b5a453753422b764e6363574c342b716d66735650494d5337486c79516467376148366e44495232317246386677584a6c357352706a4a783256512f724d326f6735494f7a3970594e5361386b4c6d787379702b7863675133414c796b65664e54544d68795a61755a516459374f79576b4378354a5474524145796b57465679774c6b637933616d305863486b654b44702f593235562b6158374f316a475a354e38467a764b7552784d734766563730734a58414331666d6737493274764548707a356c4a396c5a4764472b6c63732b5954302b504c32775238752f34544d6876306e4e42312f744c4e76503379532f62577854334c6b474245737a7a6b6c42755a6736686b673748326b4a653155427359524e54324c6d744e6e31464a3531353878326f4f73646e5a4f502f414b546770396c6277424b3545726c39324a5a447a37354f4a48346f4f78396a45637772447351774f504a6359543345686f4d32436738384774776c6b48554f7a725767542f5a69596f7935526c6638557268347072642b372b6f6f4f6766543479494a722f4c6768485978636773756362392b50684a44386b4a626939507854714f565548542b7946423074373149374853486c6d75595354557a6c3346714a59334c7349394d7044336c4231527359436a2b785377324e4361426338584c786a714a72376345504f75796b354a51644d62476a4948592f774158647a574356792b4b52504e53562f63796555526833494f6e485a6674565a3254484572414c3235594d512f78522b36763861637553445a4c59485430673134346f6a596175715436656178533346396e4d7666544473546664626f654b542b337a51624473774142416c54374857656c6e3435724639376478312f6d70472f652b6b423048516c73576a53596668494b73374b5a59697263466c382b394d366f7930746a6d68486333682f314365794c494e31765a584c6b735748344b36657a3163794b4c6c692f66493134667a465752334e364938595a2b626f4e6f32636646562f676d2f743745474a3663335749627138324e4552754c704a3059494e5a324c4d787a7751477941646a6a78575037792b4b776a6a2f4142496665376956544c33616b47366670636a453456344371616670386e78365150437a5033726e6664376e492b39416237635271344a374367332f41475535534d677a4566715247302f5645557a5747572b334643597844356d58354952333933474c4435494e70325554776b6553483974493073475753572b757847716d50656a2f41484b3547577159726a785162663765626e6743575870376c367638466a2f7556365144796b572f54524358714e31385737616b6842732b787151436d2b7a3472475055743148776d4c446c56475071313456596f4e5a32457a67717a73626e686d7a483339697050716c38314f484e7535567939557661756f662b7042712f743067576a346164716557785068446a34724a4831616368574b683955765a7567304430346d6d7376696f646c50364d527a57596571584946355231457076377a637738704265646a4f584a4d665436724b50574c682b6e334a342b71334a5259524c494c4436664d55677a48464c39684c517a315a4b665570787964303339786d7a615367342b6e546755597747574835725a4f7845566752376c58354765623969436f6b454f7a454b43526269724c6d334f70335a303332772b6f6c425643344a4f314f61676d513447412b704d4e6f4a64526c33414d6a3976435067632f77417943526338776845596d494a62686a54464854705941595a74564d62596d306f6c7a3769676b62756d7066767a554d7338485146677934767a55466b5071487432494a4334485a386331447a4c53664657615148684b764c745130474f4c455a494670474c696f2f55695a30726963736b77674451595a4a4a574d7a3830444136616e492b32436b5a456976754f4b6774516b645751567569494772536751536168513152774e592f784d6d6c62684956693361706232344d73744b42747475372b31705a6c306a2f414b6371673968795855746576574a644e3847334c336a344c6c7774527152567149365254503549505232373975384e5675596e4563436f596759726737626157796466686c2f42544264534d2b48636776597630304b49654e5771712f4d4a556a4b517136433357644c3570774d4654436264564854475a3766795157387365534a34484e55616a6979614e33564c385546326b6a444243723455565a4d6748556e5039364277644f4f43647461703150347633707953576167514d3347724a53484f7244464c456b6875436c636b44674e6e56454a444f6a35705148366757515853725254535268324b76716c67656145356b514d7a674167615a59315446694b685557706d5963315667695a5677644177466449524c436d50464a7136613845544a73445241786f4b705731645842516c306f66496f474e564e576e4a415a342f76516367736766487378357154424a354a524d6a73514d697a6f47656a35636b78694255716f5479516a496c426159356f53693944696b4a6b65614d703449444f754f435853796b69487055496e69674e575a6b70634a49794d714250483863454546636c4b7652494869534155524c506c2b39417a4530526a52714b754a7a4b6770544a417869324b4a72334a4a50376c434f434176716f61684d5067717849742b4b625547356f4256775530364278696b457378557034383042792f4e4b7a357058656a386b524a7734514d547153786a71444849705a4134493635454f505a6b422b4b663936724e4f616d72526e37766b67594d344b6a4d4b562f61675335717178714f4b427739587754557a716b6c2b7851794277514d7a4a6f3156656253524d686d676653775948745171615a4a63715975737671462b653132647939626b31776157506161386b47796a7345496976637174744f647931626c4b704d49794a376578574d5232464152476751646e5a75536a6a73536152484442417748636d316c3253416535457941636f4378776b6a4d737778354a634d507a526d307553415344356f784f697365435473785541476642417a534936683763302f63713348306f4354307a51576c56696c4370356a43744642714b4175684b535639574b6255785154464d376e73534156342f67695267414847614274444279674b4b6548456f526b6665674a6d335970706c676c4262747a544f546e5469674d51442b53474f475347676e4e51687355454b6278554b5548554643347951504b76463041574e56434246446745424c41366e52415a4b34783969704752465167495056516f4145486b7044467633714d584f614353494c4a764c53304f66596751534154346d514d796b30735337633054446767494655414855656a6f4d355145426d5a526f346f436f514658664a41786573516d72564c4868692f76554e43676647526b6c4c35315162463057663277514d6365334a4b7a3039763249633072462b6142346f7969484f53723755666d6749777752346852364e69714e78457a7358492f77532b5343384f7a2f414152306d4f584e654a735173734463776234713866615251657530367662322b614651666d764b3664743265394c2f414f4f44516a2f615367395a4771625353485061764a512b312b7157484a7677526661534c366a2f414f72386b48716e4a785230456c655431375965456e7344706a5061536f5449486d55487168714f4952626867764b662b4f4b655a4a753339695456745251546b6138535077795165736b3554474c68655665302f6a502b35495a324a663841556e79367166454950574e785541586c4e4672395a2f33562b5342733242575535652f3969443167475a4349693946354b486b4f2b715937322f425761374d574f7566762f49495055683863384f785163364c79757579543435742f4e54354944797359335a2f377632495056696e59564f4d53764b76626a2f314a6637755063684b646746764d6e5843764475516571456a6a383057596132586c544f7a4b506950765542735947374e755576324242367079616e685648536338736c35587a747668726b772f6950354a746469542f774253582b37396944314148592f75556478566c35636d78442f71532f33742b43582b6a49316d663936443155666770474f575338762f4145514b542f3841576d6a4b33707263722f3841554b443034497839795541696877586d664f686e636b50395a5655623973663953356878503549505778693148376b6332586b6650746c6e6e5038413346503531715272636e68784b44316d69764e4856474a5a342f37717279586e57763841755448656679565a753252575636352f75503549505a752b51393455455334594c783333466f466a657566377632492b64624e664f7541383566735165754673356a354a774a735279586a50507434693963727a2f596d2b3474732f6e5850397850344950597363472b4b686763783256586a35377533674c397a2f414848386b4275517a7876335039333745487374427a51494c44396e7a586b507549792f36382f397a492b664356504f6c2f75516574386d51785443335469764865594d72386a583955555463426a2f414d7847574951657830794641457254647743793866472b502b386668324a6875763058706a6c715a4237434d4a4953684c6854334c796364334c4f2f50766b6c6c755a482f384161443730487252624f66755538737579386e352b494e2b586449666b675a344e666c2f717549505853744d4549326a45754238563551376e6a754a2f372f324a4275716166506d57352f734344313468506768706b2b4743386e393577767a422f6d527562302f392b66384175623845487244624d736b5247574244727942335149483965352f752f59703934422f31706533614548722f414370494733494c794a33494e44656e2f75483449472b4b76636d2f38306679516576454a424349712f745265526a6567342f7245665035492b65332f576e582b4f4b44324269534b684b496e4e65534e385a33706430682b53497667442f6e6e2f75516574446b344d69596c7346354b4f344f45623876393337457372347a76533770662f716f50576942344b615376497876572f38412b6f7566377638413955492b66413458376e482f414a6632495056614a634b706857544c79666e76547a352f2f704644634439563666644d495057434875523870797a4c79503349442f31352f77433676795147376167765450742f4b673967496351554e504665504736482f65756539456271424c6a63544865673966706c4934465178494c314b386a3538542f313767503879457238446a656e2f752f59673963306e774b6869537a6730586b6a666951587679625071534463572f384175334b66784950597363514573596e36683846354962793237692f642f7742782f4a5162714d692f6e584737582f42423638524f4c4b5147524338694c344a2f3570754f616e33466133353930763249505773525676676a58675635416275482f6675663776324948647750697658503979443245593164694438457569523969764a52334978382b352f75547a335141627a376e2b2f39694431706a7953776758596865516c76422f333767372f324b4464312f7744754c6e76503549505941534a367166464e704d634635435739414c44635866664c386c427534683333467a2f636739596549422f4c344b53426c6943764a66636b462f754a2f7743394837702f44754c672f77447a69443131546c38455977397633727948335a4652666b522f4f694e314f72376954482b4a4236777730344b474752783746354765396d43787633447a6476775247366c2f2f555850392f37454872693745674b4d6331354c377959482f7742784c2f63694e334f4f4f356c58684a4236733670552f4245774a703856354c377163685463542f3841306a4b53336b67645233452f2f77424967395949454a6d504265512b2b4d616a63542f33502b436e3363694b376934334b534431326d6d434164734f7865532b3875436733467a2f414842453732514c656663702f482b7842367955484874697045454453764a2f6579442f41506b584b6e3958374566767079384f346e2f75434431756a693651785069446c65562b387270382b35582b5039694833782f2f414b69344f32546f50574d3866324a744277586b66757079442f637a37726a66676a4c64794e66754a742f39514f673962546755484d736c354c376f346e6358502f306e37452f33524972754a6a2f383569673957496f48694136386f4e334a2f7744376d663841766238454476412f5675626a63706e2f41504a516572416c484646745a772b43386e44635169582b357545592f774449704c64444c6358502f77424c2b78423677344e565370474877586b68664f6e2f414a376e2f77436c7168393031664f75507a75495058745271714749474c72795039774f65346d503952503449666646762f754c6e2b373969443135692b4b4167446b7649486675427076334b3833552b3531564f3475482f576739657846414379494c444172782f7742324930382b35337a5034497833655833452f774465632b4b4431784265674c49452f77414a6f7649793354485362397a74316c48373247483346332f635548726a714177556a4273632b53386839384d7231312f35696f4e33717776334f2b534431306f356f4855636c354d6271512f3638782f71524f2b622f723341472f562b7842363057364f70474a42594265542b2b634e3539782f356b7633762f774463584f2b534431306f4543675130794177586c5075762f3769343338794833686964503345385031495057614a4f3644534e47586c527578495533467766366b527634753333467a2f414866735165734c30537969587a586c4a622f2f4150754c6e2b3739694133596c555837762b35423630686a5156513849774b38714e314931462b5a376269483356794650754a762f506c376b487178486c6c6968553476376c3559372b582f41505658443764694839776b634e78633767794431686a712f636765776c65556a763554502f3346795038417148354a2f7661662f637a3936443152655355754d6343764c6e665961647a4d464c4c31417351647a4c4242367254707852353472796639784f41334e7876626b6a4c65534654755a39306b4871756f2b4769476b3142586c52767a68397a503570767670436e33452f6c2b434431544f474c6f615070586c54366a4d482f6e75563975436133366e494e2f35452f39546669454871434b5571794c4578594c793876555a6a2f727a2f38415368392f4c4137695663395151657130795a386b4a4159745265582b39755a626774326f6665545936743058346167673953596b674d4b39364a614f58774b387a4465475652754a552f6a2f41474b76377a2f2b356b542f4144495056446d436a46354c792f336c7a4c63482f6346493736594e4e7766393053673951354155796471727a423335774f364a504c44354a667679502f327158743349505556505345527764655548715a6a547a7a33502b536739576b662f414e6f2f394b4431586c392f7952384e5a653565532f756c786e2b344a2f6c697268366e4f59366478582b4b4951656f6979445069764c48314f37457364776f505572682f7743763765354236674f537043595a65582f7556353347352f38415345523672644e5075652f516739524973634b6f5242586c35657058542f384174447478696d2f7573335958792f59454870684b67644754634d56356558715636465933683767682f634c30362f63736739537a636b4e4338782f644c7638412f552f2b68306b7655726a313364662f414b53443157707743366b7535655768367264622f774334502f364e512b71546e6875432f5a4642366b527056534a47574b3874443153354843394c76696a2f41485737694c354758676967394f4e4c5949386c35663841755638564735475036596969582b355832593339506934495055634e536a6b56586d492b6f33733978376d2f4a5366714630564f3451656f6367662f414a536c52693638722f645a4d3333422f7744306168395a7541644f35702f3950384751657266676f413536515237313549657258542f2b306e757470346571797a76534a356969443147464b7155492b4b38702f63376f2f7744326875795037464436706669582b34502b333969443155704e794a4b4a5930393638715055622b4a3348772b43457655372b5734702f4c2b784236754c35666d677842586c4a6573586a5837687551682b784a5031613756397a38442f41506b6f505843503149675659443846347558717477662f414c536634656b2f6b7178367275422f31504d62484642375755574665614247446f576f3945536354474a545344436d43425a48336f526b47726a3249675a6c5355596a7179514c4b5241656a465350536330734944464f66656747747a524476553873484a4d772b6d6942635642306c426f79354a68474f4a38534141506a676c6c4636703265726f3663732b534370712b31564247723855326e39526f7070446f4b2f4c50596c4e687a54425836663143714174344874515a355738677373396c695850566b363651684867704f41384c4230484d4779677a5377356676565a326351656e7558566e414d496b4b6165564548496c73736134704473424f4c616a334c746558456c796b6c5a7a44494f584c30365159774f474c6f483036354b516d5a6151757530512b4c4961497a7132525163672b6e7931504b54397950326845534e64563178594569774a3745766c78666779446c665a7965736d415550702b6d756f7271365239536a41494f57646c504f5747444b763757517271585a387146436c4d4934464279767444634c4f2f636a48302b76694a2b53365a7352444b527351794442427a7a7371366958716c2b7a72556738794630764c436156714a5a6b484a6a74657648424e39716353756d4c634d473755545a4170456976346f4f58397468702f636764764b5766765853466d4e4f4b734672696735423237344530524e67426e4b36633972414e46714a6f326f30702b784279425966776b7552345566496c56732f702b613749745246514570744239584a42786a596b5147357177574378474336777357356c6d57505974653830476f68636c45646d53444b4c424e4b4a59375870615337486b5738782b616b724d596a42427934323864523969683548577a7575714c4d637167714331626b4548494e70384d4554747a694b4c7278737853433142325a6b484b38695563442b6149744e67563144596933484a5157594474516373625854375a714462463856315074494a764967507851636e375765495547327544426e58574732674b6a696a3546736c4278343756696175614a7a5a6d324e427858544f3268716370764969534b494f534c426a7a545274546a6a5664453249345a707649672b595163305757342b33636b4f334c346539645157495935354b666278384a6f6345484e6c74694b782f59674c644f6c64456257314f6d6b344e697254743478464b555163337954453830504b69637356306f32493534716662524a596e4e427a66494c354e6b6c38676b454d756d6241774a6639696357686d6355484b466f696f79475342747a46492b497270697a48416b706a7434635851636b325a6b38654c70764b6d4d6172706d7748526a74686a4642797a61777054696f624d6d34647136597343574e564a3267576442792f7469613054477a495a4c6f537361716f36475046427a444352704b6f78514e695459447358544e67594a2f4a3143707751636b324349754930524e6c6a6946314a625542716c2f636839766d67355973797978554e6b766856645957674b59717332526e6a77515966493178384c636b5a324b344c6f6978542b4a43566752487355484c386f7530734d6b35746b347263624441416f2b52484d2f753745485046736a32785275575836563076494758636b2b306e787167355a3235484d7076747a6951467338772b624c62784479697a396856756935476d6e3855484f6c74527746565074645751717567626335644f43486b3347717a68426868746d63706a59616f69467546715a71477170433163627043446e697a4a6d5a302f6b785a3271747874584f436e6c33514759494d486b527a6945427477634279572f524e394a7734707a4361446d47774152514b6662784231474f4336427453634d794f6934547a516333794f414b734669686f385676467535436d61476d556778784b446d7832756b4f57354a6a59424e636c305a514f456553724e6d6274484630474137664d426b664969574f6133787458425178484638306e6b54727843444c3545414d4f61593259524c4d744d624d73576441574a36734b632b4b444e355561754b6f6556414856386c736c6275797a5a4562613451783039694445625162436a706a43332b6e4c6774586c794172374243466d65416a6967796159673455546558456e43754c4c574c4e334d42755a77556c5a75506745474f56714a596350306f434d5870674857794e6d59556c626e67576634494d59672b474b6d69464246624957797a426e5268626c6b422b4b4446355543474d516330425a67664541793243303563687a37636b644a4e575159355749593442474e694e5a73345776524f6a427a38304462503657504642694667527067426a33707859696352324c5635526c566b54626b4f6e5357515a5a6253326376594b6662325268462b5073566f30477446504b6e77515a59374f30474947484e776a39744855375657754d4a5070702b4b575563786b677a6e62786b4f535162534456664261794331416741517a68426c6e744953496c7743503273514e4b30335a4332596730316c6f382b4b736c484b4f4b444839724877736b4f797473596b4c5835556a5648795a6d675a38554750374f32574a2f4e4c3968446a334f7470684c4155644270594e54696735526c474137556741776c694d3149533151635975687231457841666a78514853433355656e323449616e6f3774792b61476f6c784c7554456b342b4549434a6458687751357469704e784c346f3675644544526246535430487456497a346345663074694d5545354567532b5361546a706f572b4b61344e546b6748694657514759555154534448566e67724a5777476c37315777427a56706541636841756b65474e4f4c6f334f774d4f434f6f79505570415348694164417359526a552b477174685542734d6b674d674f4c494143417134515167594650355456396d52305269306f462b4f704755614e4842414941477157442f366838552f3161386d5443446a547a515062747638317067354942565676495079567a6a4a41776d4d4533504a434d6a3956585541664241656b35643659634a484467674b6c776a7150695148555970394f595663736a524e71444d6763452f696937342b3942774861695676704978515071784c30554d6941366b41514d6b424c494442413270363846444c5667684550677942494a6f6768636c6b35476e6e383073734f61684c3531515275435463456555666972434233716a6355747a6761383046753370486b325359734b3056646d74754c66705467494c47616f775a56304b6a6b557a524d577163304542524853536c716c38534379527a4b44556f6c417949716f5479775152334c354a7451785a51697455736a33443845456b4b6c71736f33314f7050446e6d704871696768476f305231634d4f4352324f4b4f6b3151487555624a4232705643766367634d4339457444795338754b596469435348486d69593544425269447852706b67724772415a38453434464b5766682b616a59686b456c4c68696d4f546c4350536744577561434d415543636c437754555034494134643876676c314275426169745a67715470635269675a775078526c5641344e6d69593866656741723138314e5439794172333845644c4242496748734b4c4f684c7237564d6e7167445a6f674e697a465254537771676a4e54676f37343055474f7046416a56593570394c386d514a494c346f4d4367504f4b776574662f41474e334d74482f414e7933354d73507263662f41414c756d6f703830476a596e2b6861662f74772b53306d476e39697a6257746d30324268454d2f4a3164685441494153526968683765337954474f48464669376b6f424b6e596b6f537249705a4853655341694a6255457366666b6d4c68306f4f543446424d45525874514931387678526d507151446d45504655594a714245682b4f4b43754c794746565a6b324a5352643670704f394b49424c467a56434c6b6469684c6f3464714141736d4a6f387331424950584241527a51453430516b4b394b59523470634542304f536846346971494c42676a5476514b35506852445949757a385067675a61733663654b4343443957436a5659496e6d6947656f72386b436a6756445139564f78466d4c38554871326141746d5554494f574b47576e39796d4b43426d3449616e646b3044562b354c7079514375493571564655324a64446b50656748616f6152796445746e696c5a365a49476b584471513667364231436d534a47484e41497353782f63694b6c766d6a705a52794367674c564b6e7954526d44544535705966424170443077556c5163666d696575714a4761434367356f7a4c4d2b504a4271305549617373667751444f756677524468444563304f6b5a424130756e4656377638413470312b672f4a574675395a393742374677444852492b354278503865747775376b323578426a47326645482b714b395439725a412f343438664346357a2f486f6638416c456a4532634f3251587165314254397261617475482b30666b703970596a2f414e4f482b30666b74455572484a4256446132763052482b6e676a3545437a516a2f7443734c3449524f5a772b4b42504b74672b41663755333231724f33482f41476a386b3744464153644256506157662b33482f61507951477a7343766c772f77426f2f4a573530555077346f4b5a6250622f415062676639412f4a44374f7766384170512f32686148596f73632b4b444b646e5a427061682f736a2b53614f30736e2f7077353941576c7566596c6a38454648326c71582f546733386f54485a3254394550396f5673694d416f546b67702b3073592b58442f595079514f7a736e2f414b63472f6c48354b3933464d305770326f4b6f3757774434492f37522b53673239707642487669727458775166695851564862323834782f77426f526c74624d764647482b315759684168327851566e62326d625245646b5170354676384153503841616e776f7a703263494b664974477569502b333969427357574930522f77427174457156524d57485567704733742f6f6a376c4a574c596f597834344b305a3846476246416e6c32384e412f326f6558627a6944334b782b38494e546d67556265334c36592b354b62466f6653506372524b6a49766f43424a5734455569442f414b56574e76627a6750384161744663557376623243436f324c522b6950384174522b3374616d30522f32685753627771514c554b4376794c63666f446469683238663042757857676f617a69654b43715733744436492f375971694f77327a6d637255484f505336324f43575368694b6f4b52366474662b31442f414768543744622f415061682f7469727957544f492b3774515a767364732f2f4142512f32782f4a513744626639713233386757686d4473684e355543436a374862696f74512f3268435778322f384132346637522b533041635534445561754b444c396c747a2f414e4b47464f6b496a5a32422f77424b465034422b5376424747434d686b45475962486243766c512f7742672f4a534f7732374e3556742f3551744a4f616d4e634367792f59376334326259482f3034342b3548374b784c2f7057782f6f48354c5532615745736b46413247337a7457322f6b6a2b5342324f32422f3472662b7950354c526a334b4233644252396c747851576f442f51455a624f77522f78512f774267563051577737314e56454765587032316c55326f6637497153324f322f77437a622f3841306366795767734b4b436d48376b47663744622f415061742f7744364d666b6f646a742f2b31442f415052782f4a616f6c76624e4451636355476237477747617a442f5a48386c4a374c62302f7051374e49576c6d795544737943676253786e61682f744342326d33417061682f7348354c51514469677a64527a515a2f737473612b56442f595079547832566a2f74772f32782f4a584f794c356f4d33324f336b4f713162622b51666b70396c7473664b67502f77413246657846516f42385546454e6a594830512f326847573173696e6c772f77426f7a5633616d4137554759625379332f48467635516f4e6e5959663034663751744246614b523538554766375379332f484275476b4a7873724836492f37592f6b6e70346e667452314f51554652325733502f54682f7348354b486157663052622b55666b726134635561346f4b76747247476d492f7742495354326c67313875492f30697176306e424751636154346b464132646a4f33476e38492f4a45375777504443482b304b344d78634b61714d4547663761794f7252456a2b5750354a6873374f55496637517276437a4a534d6a6d67702b7a73596149552f6843503274714a3845663841614663474b6c5367513761312b69482b33396954794c663649663751727336344b47514b444e505a57376c4a57342f37522b534a324f332f414f3142763551744d68714479533179515566322f62592b56622f326a386b68324732702f536733386b5672642f336f6548327a515a683666746d4a3871422f304251374862442f414b55472f6c483564363176564b4a56367345464a325732412f346f2f7743324b483247333166385550384161466f30616b534d6b4755624778674c56763841322f73552b783278723555482f6b4330794473684369436b624862762f77414d47503841415079512b773238662b6c442f6248386c7177443570586f78515a2f376674786861682f744835496a5a626366394b482f77436a48354b384f42306f695434494d386468746a68616733386b6679556c736475445331622f414e6f2f4a6142517363554d4b6f4d2f3265336a51326f4e2f4a46413748626a2f70572f396b667957697054654a426c48702b32642f4a742f7743794b4832473246504b742f374972534b30524c484442426d2b78322b506c57332f414a492f6b68396c7473504b672f38414a48386c706268696a4d634547663754626b763564742f35492f6b67646a7435553875482b304c515253694c306233494d38646c747a54796f6637425434497932573346664b682f7448354c51325342726d677a485937622f74572f3967566b746a5a722f54682f746972674b733951674f4b4450396e7473504b672b585146447362482f61682f736a2b5330414e7a436253677a2f5a32524774714c66797878516c7462456143334676355174455a5551427a514a486132426a626a2f744351374f78554333422f7743554b384e68566b44524256396e59773875482b324b543747782f774275482b304b316a454b78366f4d2f7742705a2f375550396f5448625763726366396f56724d67616c425439705a4830522f3268483753786762634f33524658534e487a514d753542534e70747a2f77424f482b794b493264682f77446a687a654956784770515170556f4b5073374a666f67542f4c48386b33326c69542f77424f442f7968574f3145376f4d3074705946526268542b41666b6a39707438664b672f774449466557787a554134494b66744e75502b6e442f6145527372426f626366396f5445444353664c6c79515a356248626e2f414b634b2f7741492f4a54374c6278482f48624c667744386c654f6c7a6b6f3739517a515a7673397447766c5150384170436e324f33482f414572662b774c55412f7a554859677a485a324b455734442f5350795354394e3230762b6c442f615079576f6a546d6d6958515a492b6e62516a2f69742f37516a483037614166384e76384132522f4a615148556c336f4d34394f327872354e742f35492f6b6f6468746e2f414f47332f77446f782b53764c736a3230515a2f37667468555762662b794b6e3247306a2f77424b482b3250354c54456673536d4b436e37486278482f46622f414e6b6679512b7773592b54622f32522f4a587a2f59696355464832746d644461673338736679556c744e764c2f70512f77443059576a41735542554f4469677a53324f33773871325038415248386b33324f332f774331412f36422b5376356c544474515a7062446276537a62482b6d5035496a5937616e394b46503449712f4843716b63474b436a3748626b763555472f6b434a32646a4f33442f617236476b55496c324251565332566a44793466375168396a59797477422f6b43766963656169444f646e594e5462682f74436237546269766c78622b554b396d4343436762617a2f3234663751703970595a2f4c672b6653507957696878514c59494b6674625036496637522b536237613054574566396f2f4a5743564e4a5548753755464a32396b3457342f37516f64705966384134342f3751724b7837557a765242534e725a46664b6933386f552b30745034496637566249383668454e6b79436a3753312b69505a70434932316c2b6d3141442b55666b727053424e464b467763454650326c6e2f74782f326a386c50746247506c772f3268582f414351444444325a425439706150384130344e2f4b4650744c5036492f7743304b397965315232703730464a32316f343234742f4b4650744c5036496637522b53735056584a45485567543757316a4b4550384161456f32396e394550396f56776c526a78524166735155666257525452482f614549375330666f6a2f7443304775435276696772687472597247455737416a354d446a435048425761336f455836586a3249464f3368695952622b554a5459746e434d66636e726d70685134494b2f4b746a434d66396f554e71332b6d5075566c5434554b696d542f42416e6c786b39415063694c56736a5470487554676749476142445a7466706a2f74436e32384d4245663755342b436436506d677130524647487552386945764542376b7744426b41675879625a66584565356545685a38713365694d70796a3769463736566356346934504c7433762f717a2f77446367396c4164456555596f78436c7573592f774167556d324151444f694a77504245456973766235705a536f676b4446416f752b61494e474873794243484c356f6d67634b554249556f3342414165435a2b50656c4d5877556b5144584242464e6373714b65477079524931686b436d424367625032434e4d30327430465a5064785130506869364d7045346c5455473549437a423876656f435a43714661415a71414d61596642414332593757526469572f4e4d59317853316b326e32356f464d6355306355544a6968584a416b69324f616b71394b6551365751643473475144506c67705242675046696f5a6363454445694f4354512b4b647451356f59383649424544425267434d327167656e4f696d68792b614167427a524175394d55535032356f6748765a416f63496d705531555a4e6a6b6751564e44327074493161696a4d55634b4d617469675348554437653145545371676650424d55425042514a5479537335396d51474563653335706a536d4b4741372b355038304274346a6e6a795850384153543037672f38417a706436364554574a656a726d656b4548376e496561554854413034346c414e696345542b6c526d367330417a6f796d6765394b49315a31425448416f4730556f6c706c6b6d4b55422b2b694178445677524d47446c4c4563507954595a34494630484e5156356f6741684f53776245494b347563457874365470347156644d656b484844336f466f4b6f6d5249556854425273554375345461644971564f5a55643845436a336f675563496d44347568346578416561446161356f6b5a4a327964417361462b434169377469564e4765574b4941774c74785151422b52514172516f7a7872676f65564541306f36414271513857476162546d5256416878443449365159354b56385750596e366f786f6742714b594a4246696d41797a544e514d674853513376536d6f59594a68446a69686f2f53674a6a5254525370525a5442686b67587451474a795a4d427a536d4657434143754b6467413770577a487852456330416a4941664e535555303430316355635178514274654e416c5a6b38593153694f6b735079514349624772706f39485969413952676a584c3264427a59662f414d5375522f56612f4a627854427a5259596e563671654973742f366c30507751455231562b4761567453494f5077514a30305151786f35716c46453841335970674f48464176696430444535706a544442534a356f4a56716f346b3553516a467a38485145514456415370704c4b455a454a6732434253345578555a2f6246534b41366e4f6b4b614351704963455a63454361426945795544454156524d614f4d6b4239374b6132594b556470594934396e6167556a55665a6b52536f554161675572674f43414531366b30655367726955574d533755514b7746516c2f6d3853656b716841317851413958765249317553674752777145424d614a4251312f6369782b7052385a63554461766367586c69684679706a6a6a77515163666d68484d4d6958616c5577444942686769344130756f5769374b527161647142583146456469494e6171526a562f5a30414368694a647942314e524841746d67574e61346f67615377702b434d625a4c756e306e3655484639596c354e37616e4c56335649585630434f4b355072344c376668356d6e354c73356f46416a6c5566696d4d644a624e4443676f6f59394e53674a6744463058706a6b374a616345326b4d79447a55725a4557774c4b6c74557452782f4258585130756f757970417946587a514a546a3730577a4c7079424b6b38636b725046673945426b38694b4e77716f784a30743249444b66464e39516b4d554369496958795630496158714b6f6e454e6a3830686f37596f4147447545644a6b51594968744e546a6945577a70515a49474d5a5978783438304e5a637566326f7543573449447066577a666b674d434445386345544f52596e78634f784c566763696e4d706158497067675135425048713676656958696578534a46587167476f76314153344b52755348692b724c73544d416163554a48563476596f484c6548396962436f53674753734f6c6e4e4544524948686f45347232704e555454677252314f674d4973557766337058303052636e71623845447453714a6733556c44444e4573674d78586969426b68475568346c4f53426f794c70766d6b64716f43594a346c412b46553748465669584575506372525573675555517744766969416c504868696773676170645a4162696b6a6879436363366469416d424b7133456e747937437243484a4a4f4370336a78736e73515732326c474a4759566a4448425662642f4c6a7841566851416351694641654b51744775507438554448714c6c516c713542416e33464d526d67456a7038504a4134412b31554d3666735468744c6f41417834707170616d6f717067476b67576f374641412f536d6a4c565649376f47774c6f524a727a52315a49344677675a2b617242622b564d2f7551594d674d5743426977366330617048514e34736165336370467a5641416b485345326a69676b6978717071725652754b47484e416f4c59305570556a42463875436b654343486c676f5334614f57484e41484a414d445769416e352b33376b487763496867564831464242463648484a484e38485546545642694b4d6749366d644c49313975354538716f4f395167494d6f787854436155535a6953416f516363667951526d4f72425354507a524453726c6c524351444f676b585a4c70464577706869704d746766334941576c566d5547496b475267386c4330716f4951324e466839625038413446332f41452f2b356271687a4c69735072762f414e6a506e70487851614e7241527357654f69507956347252553756353765317830425851692b666567424f515542547351575346796149494470795542597351372f464349667455306b4f635367686248676b647a7a5441466d4b5069504a41325647644b4e544f704448537055753141674579487a524c53356f365448484a417555423663582f65694d43536c77446f41476b6b42595a346845636b5455616b7230644148694b6a334b414374555831462f334961584f703855453850656d7778556d4b36536c4e66623845445579516f534f436d4e4561494448715376717852656967366b42464f435756634d3052456a327855464b49426a375555626b6a48416345727557346f4a496161346c534a624230636968383044636a56434c6165616847414876524a66444a415042544868336f532b4b496e49463053324b425979397330324b5556654f512b434278494655426f516d4a455575625a4b61524838304231634851424359466b65655951413538536c4c35706959397168494b41534e587a52434a442b3156445051337951445335484b714144682f676a7149396d55496568515352596c5474556c484d714f516553417962386c6d3366547437722f6f6e2f414f31614e6267444439716f336e5674376e4f4d6b484e3943366431793867664d4c307365674c7a6e6f734e4f362f2f4144502f414d51433947376453427034704a566f6d6945724542413073456f3658544f34664a52364f4543315a5163734644464e674136414d324252484a79454a52644d5333534b49464934594930415144747843596a50696756355949524a62715244507952475a5149494e32706a454a6d41773471657a6f454f5073794c365552476a594a5454484a417a7361393644506a5230745377544871484d6f444874515a6b784c64694172514267676b6856467a6b6b4a794b4d5a42756c415a536f4855776f6732536d46446967594a4d4f78456a696c4c5a6841774e487a527777515a6936446366623830425a714f6c6831565473436561484d346f4a6961346f453652685648466c474b43526a334651795a51307067686967687a5269422b31442b58486d695a5a6f4a46675751446c46745653674851464168714936616379707a51516c6b514555426a5867676a746e584e524b542b6c474e4178434356646d4874775452426673514944734f78427a6967496b58594947546b38456f6f697942755134714e705367706f67346f42705a44576d71457447664a416678554d754f4b6c50636f6564454177777a544d54563649516a565456376b4269474b6b526d707261694f72416f49394b704361706f506878536a6d67596f5a5a4941424f614769424b3446456e56676d7753676b6436416d6a50696c664c6969497469707064414f7a4e537249675053696a67346f493564534d7558375558416f554d5545784f444d6f53337379416f5555454539536b514d364b455a4b47525a4151486f67634f616b6669674e5876514d47536e6970706273524a4552716a67674772676f523845794661737942753142776c6436657854416e4e4176696f5578425061707953366e51516c364a334d6856566761634b4a6e51467174686d6f526d6c726d6d4e4a49466f4f39516c4f79514849356f494d464e5655644c6f6967514454703750656f433955514f434476524249734f5368443570694b593043576f77514234343570306f36517945587951527948346f78666d796c4d315071636f492f3755576f68684a434e4b6c424457695a3638304e496f6f5a484641635864514d4f78413047534c366b4541624646365577536c79697a42417646455963536754484c34492b455651485346434b46304d4457696b513577514435706a704e6330445247496644464149523071464569724446424241474850354b616138304479524966424153557352715277707755596c6d6f674154474c3155447a4464794270544e41587168453638613154564e536c6b534b494353356f67503074676f41536a6c2b314144675752384e42564350503969496f6752303450366b41474c7141596a4e4247644e67684d56354b5a4943516c465230714646714d554145555772336f437149444d6756717152772f4a536a67464f7a345a4941534d3144514b55376b5842354946464556434b4f7068544a4152454d685248563341494375487651536f444b5664386c414f474251684a7931554448466b6f664252386b61477141474a5a6c497955634951414f4b43462f656f773936695950486b676736634554524b61467a6b6d6b66676755353673305879344b414d55754e41674e52696a495a68427570485532574b4145616c4a5670386b5430346847474e55436a4669673965784d66696f79414d534d4b3831416669673543594852516f4339584b423465394c4b6f6f694d656c3845414e554143366334636b47494c6c424a50376c414e4e6535415a416f6b64794136736c445241524d69347752384b434b615744344a6145746b6d643430514b3252727a5465476d4c71636b755a646b424a415042526a6d65355153775269364343496a6a676f2b6679532b49635643776f67496d7967557a6f6f5975675038716843695751634943533363674752694b63464e497a514767775531464c54454a674e4e4d6b457135636f42334a554242374169346c696746517938526369577676582b705033366776635052736c3471644933772f2f41465a2f6d67396a62597769634f6d4b4c4131533277397545682b6d4b68426667676e5a69454350656e5076536b525a38754b43466f2f424c4c696d35714f4367444e795148764b4c3679526b6752705141536167775249475951723455776750467751415235705735594a757a464c474c6f44704278524c6b704f4b62563746414a436e486967412b58344b4f667754534943414f476f6751514f336b6d68544b69414466565242414d3061484241544f56516d434254536d4b677771696130425264364641686c706f45474f615931412f414b5236554535684c4d4e544a4e544241453845424c6a7153354a6e34756752674d6b436748414770516633685275364b5a744e637663675678713730784c43694741795269614943394d4b49644f654364394f49556c4568416f6b48556571476b526b48524961764641756e4d5a71434f6d6f447070644e5170584c4e4248516658676941324a516c715a6e7751535758616a4534466c427734706e4f44555151566f4f6135766f7a364c352f77446d6b4c70322f454b56584c394631433375416342645164504b696869394158645144534b7142734d55416a44545446466f79716753324f53676636716f42445658696e493155434f4e50656b596e4839364361546b703477573755574a726b6f446747642f67674663546b6d45514849792b43455a4f644a5169344a4b41794279514642704f435a674b3439716d4b436175536b4e5a6f706f7056454541636b433530775259366d4f5367595056485567684e63457655613845596678597148704c43702f4a414a41684d324150734570444e795461614e78396e514a704875546b473546386b4e4c3933342b334e46335152756c335a447738307a4d455a484e41706636564151315553544c424153615438554141614c354b4566536d7168514d55456f3759465354745139714e584a7955385869514163314a4279426b6a4a76685644384b494154692b61655846434a414e4d305469676d54594a6456484b5030386b484743416b4d6f5142576f5550765567644e4a4641485a4e7046654b6b6d784842474d434b6f42686869675741624e4541595a386b4e4c5959354943315647594f45574a784b4d2b71686f67354d4133716c79762f533778554c7076556a4e637930492f3353662f414e4f50344c71554c797a4b42644f52554c706f5144382f6b693571675363645645784e4f5a5271334a5470783549426d67574b4c414b467a556f43654966397957492b6e4e467338314845674f53415270376b5a43495235594961416355455a364b5664736b514363556869355a4177464d614a734f6e67456f4648554d6e71674c346f6547694a664e545367576f6f6f586a54463649365249746b6f7a6f495a7161644a4878556348454a383347434261562b6147474b4a595956434752514841495968526d504645527167566933454b4757584b6961694441596c4165576141446e70545341784344556634494238454a5a6535504573456f6f676c50456f425447696e596943674445664e4b344d6b37742f4d6f59765241626b636b65555570434d514467674742716752536e7477526653616f6b44336355413858746d674f504c344a71767852634242772f582b6e7943503175753145524574575a43342f2b52414557596678727361796663676a36537a3052426f35554e516867656f6f4a68696c303575635532536a463379516564334f7134664d5a682b4b7934306c512f67744f34627a44456a415077717330354447574341355661714e7373522f37587a51306779434d6f66563769676c5268306e674541446a4b48664647335754534b614d484644456a74514e476f356a6968455650424b537a6a41736d694973776f526b67464251682b6175656771717744714459306f69434945774f4831494872714262386b7545576b4d305a4751385236557a5a2b354144456654376479674430507355474e533965435069514f36574d4a5a46504443767855385435386b465478384c3152456441476b6e2f41464a34754d52526b784a51455365686f416a616c7044795373545868696d456763666967642b4f6173314444506d7132365756735150456768692b4647566a53755550764b726a4b5172683270343854512f4d4941495666324b4a4c6c6c4e546f536c6b636b4434645155365a52516a514e676f3545654b41675562676d42426c375a705147346f78594f554266566a54676d446d67536a4e515365676f3641546d4d4f43736369694142506943556b4371427947415a6d544f2b4f43526e443549676c6951674b6f33735874465769426f534f78566273765a4b433233344155774c357064764d3641636c43324842417869314477553163304e514e446b694b386b424266383041375a4b435277425171794236646e4a42696b6a7852456e6a5769416736633053306f342b334a446d653546736e7851445345736d7755714b5352464b3144664e4159746c37383061477550596b42792b6166416642414a634d67694b70584a71555a636b45306c6e4f43415077517270596f4754342f42413153475231452b32616a734d6c58534a655342784948484e484a4b447843506959446767453478796f795a6e4e457277397331443165484e415349346f4246394a5a435169334241496d726a696a346856526a6e336330773671464174416d4969314b2f69674142334b4575517943614543513335496769574b6c507a51413078514c75366836716851733145417a716f47703756545a6a32785375415743435349795569614236633052783449554f4e51674d4458546b6345546c51412f464677516a6a68686b674942585039596b447372704f477133542f41464c62684c534b6c632f31772f384167334f4a302f4e427474394e7548366445575479703038556c70786274686d3649706a2f41416f47704a4b43496c674b4a6849794f6b7053306955426350676f70794f614558726b67676f585a51706f6a696f584e55417752665368454f784b4f6b59444468775142363830336579414a78536d5179514d5148594b736168465058755334554b43456e334a386e4743586d4d455978593466366b43366a6b672f77424a5445616355547878434145594556555a79784645584a7139464e427a4e5545464d464a525a3078445970644f427a51534f4442423278556c7750375538635543447171707063565249446c426e71674d5a4d534573437730706c477a4e436755787969456353794b6b6a70716742716667674b565241436d4e51674a6b51706b324449454f474b59525955514b4e49787851717a71435053355263675551414871773745775546667934495551545446383355424a776f6c46536d6c5772494944375949416344676f7a7148713755426b613046564a5537304979306d6c526b6d315a6c41515839754b464549487072526c5042515a6f47635a4e2b53444b534f7170554970315651453431576665485459755058706233713538645753703331647463624853554748304f6d344a482f62492f39635636444d674c7a2f6f6f4833422f2b6e4c2f414e3056364156354947625469672f7356414256477565475341526452746547584251776451486877514d4133636c305552646b41417941796331436b4f6553434a43416b4e676b5450527a6b69314b6f4b7a795455425562565573794f6b75344b4142774b6f73324367716939484b42524e2b3542382f5a6c4a47764771616c6149494b45424273787852305a684e494f6752386d7752426f364456615368477168775141733955385a445368795a4c6e52415a714367624e4d4144334a514542354f67414d4559384370716676514238314d36706d64774d4568366351674a78434a6a463141374b56785142736c4a5677556c784369414767526753464258704b4a4844424141387149496c78524c455a7536422f3476594a533861714e385644494d337a514e686a564c493855315a486b6c64776764754b5372304b4e58354b6166326f4a3457504645564e4f395178514f43434f2f646969534647424f6e4643527179414f4d4551437967476d675a516b6f41787a7852664c676c61695931777a43435537776a4f71484c4e51596f43375949416e5046474a4f434f706b43346f757859354b4774554863636b42634f6c787839696a795247444d674746457a61687a515a3668435653674a4e4f6634714d314d536f7a56396d51374d45456169686b4647504644747951457761716b6e7953454544327a54505667674c4b4349426f6f48646c434b64586167615262424b394f3151557855494f4f5343453671596f714555634945356f4946474f53684b4571596f4863506d6f5366656c4e616f416b644b43474c767843664a676c496c2b436766506767684831424d316170596b7652455264424e57614f64436c77667451514633444442522f65687064456f4a4a446b55524944385564515a30414f4a51795264716c52424b4b476c445643536b7049476f4f52524a47654b43686943477951536a756b69654b596d58376c4770524243477169574a514264534d5145454e6355774c5643556330546a51494641527837416f637333554846414e417a79524744454a6b432b4b4355373042776a324b4e6d554251312b484a4243355046474d665a3144496c545656796745675255714d355a4f4163314b4768344945636f6761616845594546446b674661635578424e53677a42314e565061694363733149426a524d53395575497069674643614a76436c4744464e5869364347545966765131615433494563455343533641487146464b5a5a6f3663733148795151567078556b575542726d3649494f43426456484361687855494a4b683978514b4256796a695751693157434a514145786f69506d6a34557278774b426868795170694d314973525475526c5767776441684c684f4a4d4f5367692f356f43542b4c424159486967526d6d42554d6531424a466b474475365841756664676f2b72454947594f342f4a514771425a53474243416c2b39435164454751503449414949574341496b4b344a7942696c504a3045455878715551776f554147714b4b466d514538654b684557596642513838454a54596a4e4152554d5547794646415766696a7a6a5241534147514150314b5369433555495a4144776b6f5069697a7378514e546967687230736f65425177544e6d67574c353152496330795277425a5453785a41506e386c4a4d68494e57535069594241523271486b6c793570696176374d67464d366f346b766b6f4a565a4444453969426a69365646736130555047574b43636b486f6d4a616957694266627654686947474b424251414743434f3944696d4d6d484e515271376c41596f494a507964516d6a414b434c6d696862444835494979684c4b44486c2b536d54346a336f4470474a7a5379636c48563349796f784341466e4846513171704c414d6f374f674966337058546a69456a5068564154373141614f6f35697a3449343953415971616741777854503730706c557367674b626e38456f446749457456424e517a3730636a56517942484e4c52765a6b426176616d4a7a51416b45593836676f46646c3475514839594e68636d7661352f4a654b42312b666e2f5575495058323566307266386b553543577a2f414d56732f774145557a394b416749436851716346434777775141754d45664679434c46687853794f6f3077515369426a496a4369656445724f4b596f4a4667436f4e57564b70532b56416e4131486b45434238754e554b3444424f4b3041556d4f434248656d51526a4b6c45514b637967634d4f35414b4842416167586c676d792f464849506b674a4f59774b575571506b707a496f6952394a3979437366464f34644d4975456c44306c424e4978526344414d7070592b33596c6a5761426f53634e4549313971714568696c59653541306b6a6c324b6c4d632b43614e412f4642414e4e5642784b4d59794a6633494442676751786359315268385065697a48696a30353546416b36486b6e6b526c697049306f6b41663855467463386677535235344d6a5842422f646d676c464d6d51354173794a44316a374642444c536163506b6a45762b5342697770564752616e424170475252356f6b76484776742b434d576e67675349307963312f616d6a47694d6f3448426c4a5362456f434939545a726d656b78653366622f76537958546a51694a77584e39496f4c2f4b394c34494f675144326f6a676f446d5566346b454d6663686f624367785467754572484a424b64366c5078536d496c4c54372b7851774250543742424e4e65614e7a6b634554467355576f357750346f454a6c69426a6d6d69654f53694c616b416438736b4e564f436d7234706d644148314d4d6b4a644e516d4557526635494559555a45444d2b7752374549386b41777752795277724654536644336f42476d436741553045552b4366673376356f424b457363464730315443523755724e686d676a5a5a6f5349792f636e385055687a4341637769486957556e514241524c6f44696f5254327a526b4d6a6d686d324b4361534b706449797a5441734f42556c7778514b537749554e5735706d31644f616b7870787167676f675a5537416f3378555968794b6a3845414a5231645861457a7668696c6432346f49576a686d694b4f704351344b524c34596f4a6a687a554d43436f58504a6b784342487251492b4b716e7433706747446a4641714c453134685166776f47744f587851632b314966334b36662f6c67664a64427542717564456166565a41663972386356304d4179426f394a703730416d7877556170484641436334354a645142726d694741546e534f3941673446447146453537456a56487551476764526e4b4f6d687a54506736424742446f436866496f6d4c4a744a514b78794862324b50706f70454e564e6a6a6d67557352525453575a4d614a524544323976656763547a7a5336635345537841524262464173616669686f4749546d4f664a544a424141416c4969364d61654a416c7a5867676869436543476b5037643663564342346f49614f464b344846526c4d5541796646484a6b6f4a616d5350346f42526b536668676f426b794d666a6d674f6c676c656a2b35516765334e414236494a6a6a3845724b303958636c6c504a424e4c564875514a36614a73636b6136574342477070434d514d42524549786f67726e49795561695930554e616d6a6f4931657848505563464845735752624a42786658756d4e69637631315858307342546e334c6b2f354149797332546a2f5648347273364d41454150536c6f6d5a716355534b734d7535416f4c497348353855474f42716a587849504f373242316d59465079437979746b4f5358795a614a30466633704d2f7743464256434c386f7432704e544f7966542b6e424e71346e764151445671416b555a7768346d464f35414e674b35684d43667169675772434c557a544746614f56484934446b6d704a6e5a4149346e38654b673671766a383143584c6a4252677a6e4949484d504c497a2f556d315459756c6977636c337754566f6358514c7148315a6f784430622b56534e6149513841314f43364278476547506169476c3238553271494b534d51413446446b6759386b52326f41675a4f4644434d756b6a4641305338327856686979726a624177464d6b375030356f444531726c3855384a4f4432705231555457774930663855454579636b35494644675570783546466d4b423650715569786f614a596e533454674d36425248544a463270676f37477142725236494c414d41694470566261634b6f366a7171675979642b53595670524944773730326b4e3249434b4369685a71594a515755786b38685874514e694f315351366742696d7738535754797751526a456453792b6f41697954484d466c727142793463566c33706c4777546c5242667478717451303461566469583936703233394f415a316143783442415a31644a58424d37597153725230435537307a50693657665432344a70536356785146754c4a53354a426f56444a3671556b6578413342736c4a6c796c426646434a595964364279515572734d554446476e65676759346f6a394b4d7355496e45494664714a7851506c32705734714f30756f6f4445366b64506350696c777a795448426a6c6d676c48716c44454d6353674d4f6b756e6c675546656a4c4a4d47314d4d5078556b7a56544f376345416476436c656d4e4551337469684b4c477143503030434d2b436a66444651592b324b4175387543464d305246416b6a42415979316469575443676f693450567a53366e786f5545303845786f47554a4a5a30736958306749437a685159746769796a34386b42784854696b6a466b43372f424d2b534152384a65694a4f6d767751306d4e4641506b2b434268424b4135726a77347074525569487145456761746779353372387a396c50545871692f765853776c7a58503962482f4149552f356f2f4e4274426f4f555970756157564b6341416e6a7a716742704e35647957485355774a6c524d5378726e5241735142516f4774536a4c354945644c68417a2f4651762b614567575136655a514e494d4b4244466b54454d717a7777514f526d56434e4f4b676f454d3351416b762b53614e4351436c4443545a6c4f44706c376d5153584146536b616a39714c36766367654a514c486c67684c7064764355314d42516c414d4f53426d346f4f357170633076326f4d61522b61435331476e3070674e534567794d6345454e616b4b4e6d4d554d66436a493071674867505632756c464b342f6b6f536e6f7941456a454b50537039795167684e7031567a51517854563555566236446d6d63595a6c42434b4969675a514854696f4470434150587143596b346b49414d6a6737596c41724f4e4b49717944315a514469674c674854696c4564495935706a536a356f4d2f5967614166464c47726c51456b6f694c567a51463337696c35384f534970792b4b416b63754b4353484e6b5343614a4d3670773643654b6d624a534e646543614e486c6955314a567764416c5735494e7954532b434c3544426b43446e564a7557386d34522b6b2f4a58426a69714e372f7754616e53666b6735762b507865344b343235642f554636624874586d2f517133716638415a2f384169586f32667351427134315249616d53414853584369434164796d546c435836696a454f435467676e44336f766c677068676f5437304578436b69526a3349536944375555424c596f494a7669705559635543667a5266567a515457596f487077546768304d6355416e3165464636615570435a394c49413763796a69376f5942314454327167476e484e507751356e44384573693367514d6345427977517871633354554c616665674f41534638416d426375653551634851422b786e556c4b554b5a6f7978664641564e45456e6b366a496959474b4d546b67585157553150586767785445735541712b4349346f456f6d58747a515152425271614241636c4a6b344242444c536f3764714438555a48396941565559634d45547a5141714751513034495347414b6d62444a54476e4369426e5555516953676d5645547744756954376b414541315671704c39794c4f4e4f43677068676746614f704930516f4d45516330444e7853414f6e4e4378516c305a6f492f5437596f434e574b67794b6c577167686878436a4d514553487a517139633042424a71464b4a51374936517a4241542f4141706451544b4f485142334b576a707778787a514341695842444375534a4c6e3845445641632b3049526b7a674b442b4a466b41424a77554a6568554939794e4367423745656b5969694f547054784951485558776f67334252366f36617555434d79646d2f4a517539506567417831464243586f554477422f656a51483855636b457972334a633243674a65694e55436b63555150656d6438416a474f614259416e425179644877346f474c696943616d7778556557536d6b44765541414e4544474f46457256634b4d586f676548667a5146684a7837314a4d4d554e4c317a546b74686767504e563673644e46435551484c6f49537830674a5331526b6e6256556f5946424b5a4b594163557a6f4869794141564b4c4f774b55416e44334a6d616e42414b714839366b686e67555a423043796752676d4c484442543846415751445558356f386b49412b32534a443449466c536d534f6f4e2b3151676b552f4e42324c494a456e33496c676a6a676f414d30413854736f57354b476c537045766867676c51355578785252796f675370556c476c4d5558347153346f415934684f7a304953387770696667676b716f4833496b394e46496c414e4f497943676a6d464454456f6c386b426a527a6b6c66332f424e5436635544486a77514679316343694351574f61534e4f784f39554369644f4a537970564d7743674e485145746a3873304b4d36684d6948775579634f67554238557866474b67494f42527751514b59636b4a5666696f4b4943335570703471466a5654484242477a4b464d384644516e69706c56414d4d45784b43554230445249554a30696e7356424148424e454544354945464f616430414771675069674e5a557953697162416f593151466a6d6f504538636b42795572334947443936574a4d65354152795a4567346a7451414676436d78716734556e556842444c56337152476e44336f784c3470547177514d77536b59634557594e6a7952784c653145455a3855484b4a71785531594d676d6f3549474e48344a5a38713845306e505367694a6b37315a536a306452676747736471685a36353845424858464d373449464e55584765536d4e4d3051633549413265534a693948536d62446b6d44784c38716f49437038564f6b6f54477176464157727955716c714d65355370772f62564178693165436b63575544596f76773730436b5069675278554d6c48634947485545493070386c434a436f554a7951536a75687a79545968686b6b7a414342324876524c474c49484267686e7a51544443694a633078515131557851454853474b45314b34714d31536762566b6b4a344976564454376b44523973304a46772f464e6e2b4b4d68775156785453464b71525074327146354273526967416f4559757959444d70517943454f616674524c785a5156444b613951633549466a484a475a6f4a594b4f31516a51315151526a376356347955576875482f376b3137496c714c786b716a6361762b37634b443246715038415368702f54464e6a785362634e5a6744546f696e4c75454153694d553876696c6174616841756868334930373053484355312b4342692f2b6c536d534869515042414b2f53677a73782f424d5270704a51634f434359486d454a78594b5975634577716753517950596a4e776f484a4c31545549314241737347344943726f34486b6d5953514b33465134506d6f41315649766d67416c6b45324345474b6d6b46415973616773675a5037635573773155645a6b314b49492f7742434959386b47366e39696a6b676e694e42524b784655617456505568414e4c706454594248776e7353345934494335777a4f4b674448484a4d48647a67364568523045397531426845386b3566484d4a577a514373714b43716149786646426d6c306f4a413652584c424351426b346f6d6b7a3956666b705467775143763156434a6b65304b59594b416f4a434b4967785a4370376b41306355426f675245556445564b5977667262464173496a554d337a396e584f394772446363664f6c376c315959737556364b503664372f7743724a42306963426745592b4b696b512f79516b314145457267456f677852617164366e6d675751314273506d6879487345525139694d53485151546c4b6f515a4e484a386b41374d6755483668696e4f464b635542536d614a44314b424e494f614f544974536d4846544a30455045494f7959444d71654b70785145504c75537978354976474f5248743830592f77415078515351627351454f6c30544552484d49565a2f6567423667436a703979594267364654546a6b6742686c3349767051786f6d784c6f425241315230746c6968346871474b41736345754649706d2b7250334976713643674642375551304a67435575726a524159784f43424a61754b736958514435424167636c696f4d553242444b48466a6b675752664e476852617546455931714f4b437647564538654b6c585142365851526743454347706b6e4d5877556d4771475151594d6b71547a5447476b30645138546a2b43425a45753253664769483871426953674e47516d47544f6f526767356b5038412b4b7a482f77416a2f7743494c70456471356f662b366e68355834686454414f6742654e47554f48775159464e6c79514167436d4b586745785a363446466d3530514c477037464a444e526d4c736d642f636741693553776f4b70744c596c534e58495a30437468705249624e466c42476c6633494161345a4a73427a7953694c596f2f46417044714f50636a5839695942414741556a476d6f4b4f437045766967414b6a683077792b614476375a4942494357434f74516e344b453636676471434d32614f575a4b6b61396755494761414632726969487a77514c49306642424a567168496d4b594f36484e424647496f67594f6957374543567a775266696a4941684d6449465541424f5155444139364552376b4a554c436e4e4135344a5a7341357854732b4b563675674449786939417068564b634f4761426d46514644676870436a3853676d6b79504a4853324357704e45346c70706d6734332b51394669312f7744562f4e64633954543550375658482f7949366474435759754276697579636869675846464e704475366d474b424a4671464435594a394f487a5163506831506967383164455979624e5573533049303538467075794479616e79594c504b4178793549456e626b376e4e547137464944555449765155545372586945456869414b44356f2b584c7343556c786a5657784e486430436d6c42555a31555a69325836633059322f716f36454c5a6a4c587142354d7751526e4844676d6a4762505168522b70676c4d43433749487165764d6345582b6f66464e4c534d4d456b5a53316352386b424439785443476d4a4a71554e5242716e31645663776768495a71705744746b79625532434c426e4749514178417a56704d5239587556524e4f615a33787155426c2f445645557764304b6b636b38514b77795a415977634f6d7750534d4657492f535535616e7a4b417535354950536d43684446776a7177346f476b3242716d30454b74366b6850454f454547706b2b494a516a494f497061436d4b4377567848656f615552445a65775150564a6b457179676551306f5649303576564759624444346f424b54592b2f4a4e704161536b754456785559633845424b4f49356669687a344a41426967746b4f474b792b6f334239706335694937317044444869736e7163483238673644525944774541636b3462425637616c754a5a336a56576d7668514b4734644b5a69657045633845704e454265756b6f436e4d4b42385237424755744e546745456433354931712b6677527a626a676c41416f675049347152635579535144596f794f716e745242484a716f3958526a3075672f437661676b4b386c4249414b50562f63694b437143614d7739556f643262337070534f51702b43456131785077514853784a5a4d51364649672f4a513947534144466b4b36675561552b53506a44455949495a506a68386c43426d6330495150685563562f4642496c3857623471534471526c376356487764415a462f79516430543238306f597951522b70736b34783976624a4c5476436b656b75676d6d4d65614655487133737959636b4162365643484b6b5148524f474b417654752b616b69314f4b4250532b47534e4d4543525a734d4d50626d6e4a346f43676641494d47615063676734465436584b6e6837564747495148535a5a71635739796c474c71446945456a6b4d6c7a76585a4162516a6a4d4c706d54304b35482b515532546a2f7578722f704b44716761347850384143455841436b656b4138766956415161356f415179442b35506870664e494f676c734751455570776f675351577952786f6d46484a514a70434d634b6f514a784f434e54556a424248626d6f32724e423271696351436767554565436a55354b456b696941616f6a4251786641756d624e4473775146795252414f7070656b55433542514456526955784a39796a4d4b346c45687578416f2b534c414241463647714d577861714157775268564679704b5064565232514d7a59344a4b34354a6a79553467315149794969777056544a574444323971494b6944555a715965354d3271584a455179514b58347145446b704d6c516b4442415a633845594e69703452564b4a4d6759565a315043674b552b61456a71446f4153395970754f70484448424b596b76715152674b4b66676a496968474357524f4b427648326f4351314f555250676f2f306f4953366b71476c464d676f4b6d7141694a5a30636d346f6677714e6c456f427078302b7854486e5244545371456745424959737a6c4c714150556f4b2f68324b434f512f61675936576f714e772f6b3350354a4b34524c4e6d56587558386d6571705a42792f512f38416d482f306d2f38415746365453596873313533304d4533522f7744536c2f3731364d53617141437661693769714557714d6c4d415367416f4648474b4563655373647570424f7a42414e376c44476c4d454469675534706d436a3570545476514e574a63444654476d61444f6a54424158637066454854427531594e7836706274546d4931467361726879664b49356b342f6e6747364c714e6e376c354c622b75626d31575858482b4c38442b62727462623176623378706d664c6e776c68372f774132516451635548617167306e77396f356f7a6a7159594941436a707a51374564523730454d6d5a414a6e344a5849384f43417a694467674b317855777a5569374d5544424b493830415355537a4f674a476b5551306759344a764658424b446b554536693373364d6c41546d68694751474a6f36456a5844386b61477157764a415969744553654b47503471617665674c5963304e4f6144537a396e54426a686b676b716436426f6c4170564e685241644f7171576d4b4d516343794c4d506242424d61316f67786a584149786a6d674d454271795638536d50563142527149466f616f753244714e77554e554548557055344944424e41565a414e49436b67504561486d6a46776743674a412b4b424c2b4544536f7a59344b46386a69674c4e554b48776f34666d677849515277686e386c44422b7a3471454159494735594a4430706958716f443730456a49594d36413658507379456f70755343637768497546486f796a317069674247656159696e4a54566b67536665674e476451796f6f7a4231446878515447707851594e6d6e65695471646d514d41554e4e4f53416b4d31444b756e4a41434841795a4e55683351615144715335342f69674f6c306e685445306646514f616f49656e765531566f366a6d436b515467674a44425451555046696d593446414e4c6d71426c77514f466149733261435956396d544f5268696c4a594b536c6c6b67455778524448416f61674d4d4532564541424f616b69593969686f354761687155414852523034415a49614669694a3051456c6d6441384455493449436f72374d674f72546a676732434e51474f436b70566f6744416e7054426b4268374f6766624a415256516e7135386c47617053306a55346f4961344232524a434846386c47346f474f4b41774b4d436f5345414245716f6159367543495a54566b554249713455492b724630446a52544641524c76514856676f326147724a41596c67777854526b457442676867554442314a63636c44505248543856494230416a797a5531484a4d4b446d6c7542716a4e41495578523858666b6a716171415063674269415852494a554c76696a555939794361516737594b5a66696c4d5759494c486331795376715a45732f356f5362456c41613449346e6b6c686a795278504a424a66776f4f394641353444397141414e66596f496f66696949672b465441555145483651365564425564772f7741736b4341376f4872785338776a3271445667674c70616d767952496f7959796f3377514b4961516f59305a51484e516c69355154436a4946794b6f6b5a49616e51514564796d434a4e5855636c7548424243644e442b61494c6c545439614c55722b3141454e56564b4769683538454141474254484677554967436e775530734f53416b6a545446516b4944712f596a70796967554676624e4d536f31616f61334c494277346f7564535a71756b31506b6759667855556b386b4f776f314645426653516345756f59356f2b466b4a595651513466697070444b524a465544774343614d384f4349367145666d684e676d6b42394f4b4159347142384f4367446453504e4242494848416f476f514f5278542f4241703755515233424574454a414155427837554d536966623830514d3041425a4d6134594b636b732b61414470644d44586d677a5555414d634b6f4256327839765a314b696f52314e7852794a51427763554f395358484a3078414343436c4168496b31616f556b66656d30384541426646485336476e4a53546a77352f46424157356f5939337438455a564e55755231494a714f616a454769444d58784364774d454375706b334e4578344943476b383044544c554f4b6772794f534568546a38454a41436778514e7179505967524750596f4b496a4d6f4550444a50517141756f676a6a75516961557755352b78544d4a486b6751315869376c49376a2f3673766d46375673677648452f3834616e6d7951657774395549446b464448535739766b6c69786a487343496f616f49485a67677a466e51635a346f6e69676746564a41354b417452485269794264477248464d4b4a53572f4a456c36684173686b673764536331716f7a383046656e39763570796155524d633141477751515650444e434f4e455762444a497a557a514f344c3969414751716a47764c38557353446767585337684e6a5245526244735367616b4162536546564d46593346456867364373774a4e455766707a4355644f4b5059676a454630544976386b526b79614a4551616471415236307543614d6d446c4a717a43426e6356532f7741494e667a5453633979445672526b41595152306f6b5a78552b43425a4d4d46424938634f39517744714e717951474e614b42475131553471434a69656553414349775076555973697a476d43417161494665724973457a486b5170347149494a4531775a5273544653493658436d41772f4e41474c756a454e5439366b614855564a47726a46413052562f697556364947686638412f71795856746a71444c6d656a4856432b635036736b485362536f412b4f4b6a44565645644f534341505651736f51636c47656d61434d634770785335314645574f416f564d554559525248455555636774386b473979415272584e45786f7961684444386c4f4753425a416970797852354248413143444448424152314967746a6770476e5967415837454378366b5a52784b4a4848446b684d4943484a523975784749474f4b6e74376b437333616a55306b6942323051303568414f4b4a6242526e7170516c4242704e4647623278556b4e4a716a4934456f495749706b68546d6f57504e46754c7567426942544e5276334a6f3957474b5538636b4259594b41594f6a575353526646415361504956554d6d54436f44464358775141784a4b684e4b4b462f656a70315968424b4a52426b33596750467143426f6a497150334a644a72526b7846644f4b41456a765131386346486445594f67416a524d42795a543349793456376b43456e4a466a2b3545524750737944427539427a644248716b6966384173663841784c705541354c6e6b74366f43633748796b756a5241493846416550356f735456514141305144526b6850467969634d307a7652416d4f5365494f4358556d315a49462f424d445846534d614f6741493455345551414e6b69555153775a457456416c575a4e70705645454873536c70565154514357644477554e557a6c6e3979684e4545376330513270416d50765530312b53414563464737696d635a596f454142414b47696a50584a454f2f4a41645743434563714956416335706d4744494d336567624a3068714d4535516f614949314b4b455052453072785241795144737835705a44556164794968566b326d74454379426b4777514a6567545a30537964336967594134465436765a6c4764423271676755413977554f445a4b564557515267554b397959494d447a51515639716f4671384d30314d6b70795148537746663371416b5652314e524238383048482f414d6870597463664d4834727341445348344c6b2f774351683972456e39592f4664594367666767445651417a2b483755774645615a6b6f42494e524b7838543052464b68484c6e775165636e30736352702b436f75434772707750384c4b32544e55354b71625a4769424a534a6346434f715558793570744e485974787a53796c70624e3855466d6d6d6b346f5530386b544c7936456a396959506a484a41673933616e647831395179376663706f314638436a4535647943434e484f536b5a675942535571307743686c7071633865534150377a524e454131557a634e5641776674434176566b6643644b4d527164735547455a616a385541314f4341345452596451777a527434632f624a434d4336437973614e2b61414a37516c5a79377356625450464144483669694338586a6e3730473936672f5437653243423452594e6d67526c77556a5776775443474151474a31596851416d707167594550704c4978414c4d364176334f6e6a49436e374851594e564b5976575449485059704874376c414b4e6d5548597467677362562b6553583866594b51443967526432443151485656527a566e2f414151425a4531434269484c6c56747754594376465155714b494a6e544e4d42536e7751384e564b48386b4441616566504e592f56422f34386a374d745649344c4836732f77426d653334494e566b4451416368676d6567785064524c74784c545770566f366b4448426c58417454464530464544303549496d69614f5648656944675639716f4a7045554d4b38536d716b69586f506b6761505736676a716c7a53355037667654796b783068414e4f746e716c64466e6363766b6977514b513142524f48516b32614d6348514458545355785a7979567671785269784c594942466e72565136596f6b63556d71764a417772315a4a7365784b657244425175394d77676d724d597161444c4446526e46564246714d67424146456366436d41414344365452414e505579476e676f2f45706e464839765a30454e4d464268715a427630347143587a515156726932536d46455258784b4275386f434866384168536c6958474f614a682b6c54562b70415a444c6a676c596e755459414a574143436154324952446c7766775263752b534c694f4b4361636b61796f4d4467674a56444941306269364269376f45466e5541476145412f63676d6f6e484663762f49584730302f2f414442386c31664634736679584c3964364e7447517975494f705843583067664a515349726b6d5a365946675432705278505967476a7036716f434e41585570484230324243414574316363307870685654554d51696134596f4b784371734231446d6b6f43782f65694f495141687a375552647769577747614269776169414d4871364c6a4253674c6f364f474a514b4b796f4b496c754f4b4d65574b6d714f504641444b6c6345526779444d474b476c3668424e54483279524a50694b674a6b67345a6d514d5168707a55315051596f6b36653068414147786f69476c52314479396968675751514850454a7450314d675339426a6d684c4832716758476f544f5046334a744e456b7139794232344a53325a51456b343564515141413979456142696a706453686f6755486a514b434c636e544444356841466a5642434e42716a49676e42536844494356475148554e4a64416b4e56467763536f7a64694159594b5269796a6b5551776f326637554577516b4b6d4b6866755450484a414377544e6e69674943565643344c44412f42415153464353454337386b43415545427a474b626c4c3936446b4652796645676d436d416f464a4277785547715134494255644b7233556d737a504a58434b7a622b4c574c67474f6b6a32374548503841514746377474482f414e2b4b394e717069764e65683076746c35502f414d53394a4550686b67414c696c464456485534716c724641576644444e4b356b6d7a62414967745439364361714d6c46515878545a5679556b636b454c653543574b6a4842417563325a41544b725346564256484663503166316a512b33322f6948696b4d7555656645356475414c367236714c5938697765763670634f513538546c32346375392f5132304c5031585036732b7a36522b4b7032646a7a7238626630347a793652696a7574796431646e637950774751397a494d386759307174646a62516a48376e6455746e77527a6d6679346c486132493234432f7542306652444f5a2f495a6e75564f35334539784d7a755579694d4e4934447351645830373165344c34686450394f34576942684467334c393639474b6c736c344b495874646e664e327843356e4b4e547a7a2b4b4452476c4652623374756432566942653544474c466746633961414c682b6e55395476384159663841334242334267797a3239395a6e654e694574552f345930486163466733322f75627158326579724c36353842322f6a376c76324f78687372656946546a4b655a50356350596f4a61336c6d37636c6167586e423370774c664e617a30697553345070592f3837636473763841334c735862304c4d4e647736596a4e4262306e784943754f484a63776576624e394f7276306c6c75382b334733357a76625a3955613051584163464f33444656574c384e78447a4c5a654a644c65767732397333626c49426b466b376b625145706b442b5973452f4e65613963395573626d3347335a4f727131664d5a3971367530395332747a525a684c724d524854704f4c6469446543356f6a347a795753507147336a4f63444d50624858694737315244317661334a61645865596c6b48534a627246464f59397955463234487654456161756755537165534944646958565869795a2f63674e4a4630415836516f5930624e4541674e6955457a354a645a6c686769493534664245557851516c366f46685641504b6854415a6e324b43437052464d45683435684d59356c4141654e46496a6a6769546d6f41334e41475561714e4d46412b4b424177654a716d4c4564696a555244735367476c7955597377516b5161495942424348703755554166424552465a63464b6f494377553546516d4d582b4b35783959327570336b592b485870365851644855374e3855635378537749465934596f6b4d6553416b6c4b41364a366c4e4c564b434d2f75527067797a586431433163743235753978394a796f74494c423830416f436f7777645a3732376a627532374a42653434484a754b4e2f64513273645538486167636f4c35454e6d794d4a66414c6d66337261797a6d6131365a4c546133634c39326471414f713252716643766567302b48464170757843507751456a75554e617144465a7062794564794e7178316d4f72566c382b53445247726a4a484e766d6f6f534153674171616f766b6b753372646d4a6e4d694977722b614d685470785145386b496773354b50695548444d494937446b674a683670735547315678376b426f616f59595a66696f527071464d6355453036714842485652386c44456b6f79514268324a58716a5673555730696d4b41546a696a4947507478517a636f4173644b43476d4c6f2f4e486c7a5338434167494a666d6739665a305a63636c476f77515175616642514f4a565231705a56775065674e48344b59444e537642544f69434d6f37386b484966327169436345454d644a554a644836655341356469434f516a794b6a3549304b42564a4f6173364c4b4d3551414e6b6744523061634b6f784761434444696f4861696d6e4d494149414865714a5a45553973456f3549476c314a32344b736b464566464141426b6f314b7154424b684768415934386c43366b61344644704a5152784847694d756b63517052394b4244394964424f797167475a7855446f365541787a77527a516e456f786b4157514c6d6d77785147627159344949527777557a5a512b35524157306854784f3243683449466e77775146686b693155707750376b434d6b444174584a514d3641466149616e71676862414b55656968594a68673252515454587355724f7543686c6d33636c315a344d674d686d4d456f623845374f6f4f6d4b4254464e5242434d744b41766b70347168427945576f3641434262322b4b664371584641485347504641577254464542776c4570484248777864424e4941636f6d4b42446c4c6961494961706f6a496f6d4d556f50464135447063536f4154457152693954676759384647644a51557a5531503349444a6a67707a4b6b686e394b44415564756553426d7a2b61454a4e33715a3134494f336971675973657841485041493177795544476941537052305147785034494d54334a6a77514236664644557a6f6b6e4166476967624e41414136597331456c57376543597739783730454e526d3645532f4a526d5a474c5251536c51454b4645456e677055676f4a4a6e642b3542333731414878716f345a77674c426d51636c543570735543454d644a52594844424375436b5471716762545371424f574252664a4b2b4846424f5252675a4f4f394578314b446d674a4442696c45633048657551514569545241787a436b656f4945746a2f77436c4e6a6767674f53517654397963636b414269635545414d5552696c4652564848424172386b3562452b7753596845414f6764686d6c6e536d4b494146454d6355417151347169334433706d414c6a412f46434c697143466d586a5251376a2f36682b61396b3449717647584b2f634d2f2f4a4c3449505957522f53672b4c4974784357332f774155482f53456330454c49317955385a78772b534651586b4b49446958434f4b554679364c6e48503235494151464a42364243495a4547726c414a34736f6f4352696a3471684245736d5541624875525979514238516c6e6a54425069455844553730437969564e507755484a3054346b436b756155436a59675a714766616f4b55514273307755456548636868586767677251493654696b44794c796f7254306f41394643564e51495a445656424e4648514744484e4d334644484367514453693075354474554a5a4130587a2f59675a7150713975434944416c41724f5752314e683855446b416a6a3144424163634f79715750743249677357474b49476d7143476c564766484e4373714d6a4868394f584a414a44546d6f51594931345a4b4d2b474b42684668564277436c496242506852416f624171434434305231765446436f51514471584f39456742432b332f646d756e42347a726d7564364c4d6d46372f36303048524d6a37307559434f4a375577785a41744f394d446b41675453714f6e4549492f4e4a714c3154526f7072723149494f504243715a34696b6b4139586f676a6831414b75455a525975554a41673845444d3645756c514679674d507a5154735177716e476b596f782b534266446a67672b5361576d58656f575a6b4149424e454863394e53695131546878554c526f4d304545666b6f7864526d48616936434f3944386c45434b6f306b674a596c4a6e524d61555269666269676e5a697045766a525173706855346f4a38305a4671466b4349356f4561612f4241584b57525061453061554b47544e52424d4d6c443855514170686767534c7178325971456e45465167653541413063654b6e4544424667334e4c4a383845426a467356504166696f613155715061714176566b73774a4a6a456535534c4476514358465179474877524c7935496e6b674438454269325364786c37464c4a3855484e783956772f7743682f774445756b61726e48703955692b646a2f346c306d6f6755426c4b4254422b475363595678514352624641427856457863756c44355a49434a315a5444424173527955484641544a6c4363696f5844746a79556c676768714f61416a3769694452454f4b4944374d6b706a6d6e416f3644386b454c6f6158375578477248676c6a4c4241584f616a67382f77514c487464516a4d6f415a5552656a674b616176527330525159565151786573753941554e4d457a6f55795147564b68425142476941414f6f473731482b534855314d6b42664d6f6b4f677a715269514b49494b3571476752356f556c6a69676a4f32536b6e55306345706a53764241354c49436a71457145634541776f63556634516f796b5a555a424f534554776f6a7079556945417069464b594b4565355241514d2b43684a785552474655484a396644324c66447a496a35727151774438467a50585a4e746f6b2f7248347270774230524a785a41516f334641746965436d4654564244696f3258344974526c4e4d585165594a69666438306d6f635664494d4165616f49636e6c77514b6358526468576a3936486c2f56677961594d5a6173775067676d6e563149674d582f464b387552422b434f52474a4b414751667154516733554f43676c46326b4d45774a646b416a51486b6d6e7159536247714f76694168676449702b4c386b424445764a4453324f654834714e6f4a66413470674b526248383042784652376b596d4d6f312f4c3371457530654b58517872456e7651506a33596f4751474868357143476f74696f414f314135417843686339536745585547426b4b49474574654e556f3645774949664d5a714556633442414a4854544a4756774d2b6155426a57696278644a515742695168434f6e48454b4d66793549615a66366b44794f6155564c554c6f785076524854325930514e476c5a42523353686e35707842386355426473464166656f635553446b5541464d4b71534d5a6969425a4e417565595151794d6a30354b436f715751697a382f775461513153674770772b6144307754474e5739757843417032494c414843772b71482f78726c503072544b56526b737671585474544b5744565161625263526267453461586950354b75302b6b4d63596850553534494a673063676966696d70794356696645674d6958506167597453534946475137554242306b6e42544e73306f44634539416741416b5550464a776958696155544d476f67552f46516d6a6b4f6d43514858524138686c324b73342b7a497335526241657a4944715956784b44743463633143574c4842545343486a6a385544564a515a75616c63464b4f554262494969715848765150546c384544506e46534855645347614a476b49413257536245416f6545666d6b593555514f554a4d79494c315130366a3249412f75526b33464842434a316c4248342b3541777849544d6835623178446f43422b6c426b4a455a4a7751525630437454337147694935496164474b426f524e426b673961344961584e55535848546d675755744a6f695257745644457a706d6965412f6167562b48765231463149786374676d4a7a47434165334a63722f4143492f2b4b487a75512b525857595a596c636a2f49675274414b7472682b4951646d586a4a483850636b6331444a706c3545592f5042434c6971414351617675484643494d736355576175614c304a6b676a63666b6867557570384b4a7932597278514c6d4f314b354b6647696e537a594946474c6e73435a6b775076435238654b426d64434e516f6542514e634542474f4e454458424d5131564931384b43487478514d717156474b4542787751504a6b676254564563537a714d55453653565062325a457770676c4e5148785146744c6e4a53686453684849594a52313179514f55706a56303469592b484e4c7271385542666767484b452b6d6e464d5a636355454e584c6f434a6a5539364d655835666b6f346c31494445754166594a534837555479396e5177777951514f455449794b6d49666878554230696e78514c704977716d4c4565324b495a307078306e4c4e4142476a3845543167414f6d464b5a4a59346f426f4c56544f525549534a38493975616b547851454179706b635648616e464b5a5a6c517a716759386b7256367543554850676d6c67794168734b3054596c30497141616733424244476f48656b6d797369564151374e306f4166345643474c714d43536341557669774b426f3178575866412f6233503565356134304b79373576743538644b4448364933334c442f414c582f414d51586f636e474b3837364b473342662f74662f454636474a6367424148656d436e4e53574c6f2b4b714353416349746d55556f6b445242485a51496969416d526967684a797855595277524a45615a6f4f356f67782b71546c6232637a5a4a45674d6538502b4b3862686976653362506d323557352b47514d54337277703231775876492b70394c63304779314c3766625375665665506c782f6c4869506634554e74596a61674e7a75502b5036595a7a503452346c61393162745735436432747132504c733238356b65492f79766963317937742b57357561376e75794179414841494e6d2f6a39352f774356624c7841416c484f484c2b5663365845713278755a376535356b4d63786b5277504a58377662516e48376e6244702b75332b672f6a486e37414d51426465763949746b625333713856666a4972793169334b2f49573444716c54322b6139725a674c5549327868454350756f67656858433274767a4e397562627471684f4c35696f58654d73317864682f2f41424b2b2f412f2b34494b2f527273646e636c737234303348704c39584a2f2f41472f6d75395067634d56673956394f2b3768717430757848544c6a792f4c675576706e7150334d5462756e2b744164584e732f7a51592f5353427639772f38582f75576a314c5a6d2f64684f394f4d64764770424c456e325959724e734c6b624f2b33486d79455449796255654d7632716237792f376a4562716c6c756c384d442f38542f6a52427176626e303255504c6c4b476e732b564b4c4e2f6a35313237746f3955484878642f6b7568656c7372554e55686245522f4c38414b726d6567586f57355859584349796c4b496a45304f644f334a425a364f5a62612f64324d6a51485648323568696d39596c4c6333375778676354716b66626748507552395a74793274323176596653644d2b7a396f636535443059472f637537326631485448323542683730432b76324c646e6278387545596e574b67667779585573626533474d4a694d51574263524377663546423974482f414f6f4366644a624e767537467752747775524d7155315651636e62574c65353952752b6231434a6c4c547a4443767658553332787333624d6f364144704f6b674d517347772f2f41496c7541415861587a433764332f696c324771446d656758446332756b6e77536c455033483856315a6c67754e2f6a782f3841476b4d2f4d2f3841686975766767674d5a4b5366507352616e6367514d554243677051356f4d3145524c4c4a42496c6a5473554c41365369597455565373394d3045444f70544e535434643669426a696f3734714849354a614943666235714f7968714647434175486f675a48464769424250746b674169426961736e62494b7559794b63454771414b533975784d7a49566a556f49374768556448532b43515a75677276774632314b4d69305a41784a37614c6a544e3359324261753234337473507274347354527837446d753563747875413235566751306c7a443652505235486e79466e39476d72634e583745476135644e7a64324c46696372646d356144435044714f6649414f70486433746a4863327053387732744f69557365726a785a306431742f2f4f733237524d424732776e47724e726248385676322f706b49787552756b334a5866484930374f786b484a73626d39624e7537436479345a6d4975786e453657503665446674776f7455526639516e656c47374f324c636a4345596d6e5478347256742f5462747159486e794e7148686868334535684c63394c6c4b647956693662666d654d52414c3968795156334c32347433747261755336706168505434533375575064334a6d6432636231306d486838714245493870636531645750703041624a424c5758626d2f46555439496b646349585a787433435a53685445382b484c4d5a6f4b4a336a6576624b354f6b70435439724c754d324f437778394f45445a6b4a452b5271626e327264707851636a306f366275352f2b724c356c555774765063627664526a636c62384a364d5477727735666b756e7339714e72637553424a387957763570724f7a466d3964764f587536616469446c57743564756245546e65387557765472303670484f6e50386b646e75626b4e784f7871755367625a6b31377841386131563439486847774c455a6c345438794d327a344d72724870756d37397863756d637a45774c6765775163783738746a48655376543141394979625531655066324d707674366247377437694965666b753362712b4158522f746352745074645a30766a6e34745743732f747746364e2f567130773876547843444c703358324a7532706d35656d78314f37413467446c372b435859534d72326d4e365a703157372f69376a2b4861744d50536f32376372497554454364554e4e44413976446c2b4e5562587038345868754c3977334a78476d50534941413868695547623136312f342b707941443463693578505a6b6a754a3344667437434e3251476a584f35395a46614f32544c6f622f414767336c73324357427a345a724a64394e6c643875586d6b5872622f774259415948694f796d4b424e68657532397864326c32527543476d555a6e466a2b3964646a47717862545a6a62536c636e49334c6b6a317a4e4d4d4f78624a594d55414a427752695141355569586f456f356f447a4b445634706f6c304f5766424130577270397561455157374641574c4a514e4a64415448504a5271756c47504c3856624b4b42486f794e4554576f53397143614d6e356f4f435577353052624c4641414f61574f476c4f656157677267676274514d685267684c6e77514a4a2b5342715a714f4d687a554a7a514c5a44424163334b44765652386946427a7751516a495a34493647776f6830355a4b63785142424e524b464a567854415055594a4246716f474d64546356444f51554979376c4d63554531644c71436e5a38455a4170532b42514d78795247464853676539423838442b5341474e55523155716942775245766967585455756a4d734b492b4b6f795541376b4368706b636c4347774f4b593971476d76733641676f4175675a486e676f4b39504241644b4942643074536a694751546d6d5a41636b76346f476d6131516f533342417668324b5650554542314d587752505469705169694c616b43565066785474546b6c492b6e33493648775152744a36734554792b435567685456787751474e616b495a6e6878556b41614b65484e42496a6838554364534d6c4b753551534d57366b5367474663796d4e5545464d556b6f6a4a513152376345454f544b44676a325543474655455a475661634572736a7166464161697158354a7557534259567a5145754d6346426852492f55516d4143415678524e54537146557a38716f41417859493430436b6b4e446e6c37666d674a6b3145444c676a676d61726a42417268713449454d4b4b53424f4b683856454569436350636a496332644253494a514d336545736739636c4155424575674c7364507554444769574a3150457159634545772f596a77537969695366624a414e544968786b6a72444a5749787a5147614e4f35492f484a4f78385566594949364235657a6f694c6c4c7a43426a795339694a47434a6b4251596f445367536957536c55736b445078514a494e4551464e524a71674a4761676149346c456830754271674c315378346f7844424e4534676f46694a43574b67356f67315177514d496c4b6355655459494f37684174582b614d614b525461586b794253514752754944695644785146366f446e696d4e76504e4356636b41307547772f4a4f4d456a61555a4e48776f4a4765703043464f724a4e456e41305a417550546a7a5445636679515a78585067686b324b434f514d5578504241686c45454966704e4834727830346a5475436372737677587359754f31654c7578364c34502f666b67396e61693049502b67664a4e70634a5978365277594b55464d6b423548425679366134706d70302f4a4577397941426b4e49555941754549314e4544633351685448424575537752434345555a497a6d69596c6a38305a4468524258306b6341455444756f6e49774a772f4a4b43546e33494933444e4569722b7a494d35626a2b4b6e4a4154466b73644a385345597469706967676a785266676e7856517256413175754b6a766c5253456572536331414746554159696968424977524d555a34766d67446c2b48354b4561616a4a4f37317a532f384175514175527152384f4b4d547755314e346b414744384573772f596d4554684b696d4e4d6b446165395679344a67616f6b36735543554a2f424f45326b4e564967676e6b50656f4644466a5446474972673643484e2f62356f47677169577855484c4241446977556670517a3776656e4445365751534c34653952394e546a6b67584264523949632f735151436e4a48686b705755745042427452514e434a4a4434726d6568687264343862302f775855746c354c6c6569644e7538347776532f42423077496c77706f42716a70616f51784f43417a47525373787752455337596f7871676a3652314b536646523547736b636e514b3746314365435a2f686d6c706933614544464173656141596c4f484f50755145344d6b74315454416a67674b6e5669674d534d31414b4d674d46415350795144547044665678523031314b557851786f45456b6854486d6f586f4f474b64674b494271624b694e6632357053546d6d6f396345424566676854454b4d3549344b47675147644d457548755478504641664a41416452347166556a41686b72317167624130516d4d386b63337943442b35413032344a596e4645594d674b436943595970694d384f616765534567676a736f5158344b4b52464f6143427968494f6d7848464467676a6b6c6c447955776f4d464841785151515a416764794d55596c366f42326f67555542417146474a4341304b545569414643546e6767356b6d2f757363502b4876384145757143346463736a2f3841656f2f2b6a2f384145756f4741664a4242676c49645054464349617142514844425156524255474c6d6943636c4d6b65314c70346f474934494f364461696d4f4b414d454e5459424f65724446416a3349466e7948616e7877535278634a6965354147344b4371674f436c4851485457745642513831464246734545495541634d437051666767423349494148722b6146473745326d7271524449414d4170326f74704b6748484641644b426f6f4f616759397943596f554a4a54426768795152314150656f78434a4c4946495a4d514d556f2f556d62676757736b54476e42514e676f416355412f68436a735852616a68526b414a4a424b4948344b534e615a6f6157444241654b48696f455453755345616c7867674a4c4b42467a6b6744306f4f56362f46746e2f7269756e6742324c6e2b76445674572f6943364550434f4c494841644a4855436e647355486441486673533667334a7345343655576a6967383052704f6b393361556b344d64516f2f42504f6f6473457549596f4b675a5979554e4d6b534177356f364d424c45356f4a474f6b462b4c7075674f334c39716849616e75514d773145414d6845506a337075716d6b50524354546f526c56484e3850324946494f574f614c44784a7572504434707053414854675545694863356a336f5236386171616a6e582b4a45436c4133443971414e546c7754474949425a413951716663693441424e636b424853615564514d48443153735a644b746a34717345414d634333376b5747727455414a3745515249554c46414745616976743763564350596f41455578716f4f6f674641596e364d30574f4b4a494a352b3546744e587155416a67357a5249455845366e694549423648424d7a63657a6b674270586a375654446d346a384549317a495561523745466772574f53563271454a6669695a3845426c48686e696944536e77533162696a474c486b67496978706c696d422f54676c69587752454b4568414255566f3663785a4c4144416f4d775157593869675944424b446b6a7131427a6b674a6a3767735871736d3230774d3175594d7350712f2f77427351503142427074566a4538672f63726536694675514e633264534a51515364774d56446a524755534d556f4f6d714352642f62354934314b4c55356f4173435545794b597845616f4d472b4b4e4a733955416a576d43444d4b552b534d7065354a5630466c586f70487071614953397553493667676d7233494159714161514641305a4e3730416a476c45777934706d4342416c6d676e4a4c474c5664307a3170564677675677394648426f69784a7167574861675639535969716d6f505446544e796749417a5331714b7079416741536758743936614e4f395274524a4b445a444a41547743484d56544e7144684b4b49434437383070315a4a7143755349475951494974557163386b307351796a74306b4d3643416a4a4b4f6d72496b5a6f69767456416f494955656c55764a4f376f49426e6d6f51424a6d777852384e564a59643643614644584675436b5777795277706c3730456a69345a636e2f496f6e3753416a56376764645578584c3965636261324d7863487951646135315335715a75537a4b54784a553766696772456d784e55385976346c476667334651444d346f454e42514d455165465752352f696f3546426767456350627355426341596f677563616c51633043317a77354a68484a434f5a346f616d4e654b426e6f69476a49454b5442385153566b636b44786d4b685268494f50676b69452b4854336f49436763616c5145425131706b674c66762f464a47575a5479425542624e415144424c4961687a52424e516a714279514c67315649766c5248566d4d666b70474c2b4a4154524c71624869685442504b6b754b41476f64777071495a51784f4f446355306333514c6c525153306f446b48436d425a424b78785336666372557252485967455934706a673261485445484641687a31555154533965396b57314651785441644a434165423042515652664970412b4b4167384f434e4872686d6f4147344b5230797751534f624b4d366b70316f6a5850676756333973305938545641677632716142697943527258487577527a6f6941776169674e4b354945475239366331376b496774315a6f4e31636b42303856412f785138526f70386b424261717a656f617674356e4e6c6f59454b6a664f4c467876306d714446364c3162696759477a2f38414546364370586e76524a4e756449662f4149662f41496776515930514874524c516f4d45596c6e314950376b43343449762b78534a415a3143574861676c536f354e454279554e616f494b463354617358776451744b726f4f2f53674f756c65395a4c3231684b364e7a45447a5967746b4f5434725548464369673862763765356a6338336377494a2f32393254636c6a6a68714339374a70396e41344c6d376e305462332f41504c6c786a683776795a423549484d7262366444637a756965316953325a384e636a376646656732336f7469783154486d53483673503971364944675570376b474c5a2b6d3274744d336d416d6670643477347437636c7572776f6777777154386b4e4e474f4b4269637331526232747533634e3645577554704b546d7271352b43597834596f414255716a374f7a4b384c776a2f4146423956522b7a38316f444f6c692f63554765397372462b516e64674a5334344657626a625739774e4636496d4267725364556c474f4b444659394b326d336c716861393779623375724c757732357565664b324e6365725668686d74555863594955625355484239593339752f5a386d7849584a5844706273723832585932396762613147314836526a784f6678716b736254623763363451694a6357577242414a7746794f6d5942457351566b74656d37573349546842706a4e7974623055504c504e42526232747533636c6574782f71543855766974456d30744b6f50347141766768493553717943717874376532686f7352307878372b2f7356756e4a474c4d3477555152367457696a6f503846443730426a6d51674b714d33464630454162735373374645344d4561597851423949355a6f476d436b6931436a716f794345366933344a694177635970657845312f46417567676170736d4e5541794f42716745773963305438454e556a376c4862756f676a61533667634948695553415046676742544d42696f4f71755342365545314e52456a4e52714b616d514b5871364d5335593449732b4b6e4d4946664c4a45654630577a537470716149444b56653049355651424c75674167614a4f4b677139554b65324b4a3446414739796c6351574b4c76583571464241564a5964714838794473616f43417a49714758734648376b414e51357852774c444e5156714549636b4171426d55524b6c564d4f334654534167684266755249456134714167646f537936714f6767445552356e39364c4e514b6469426348644d5354676c6f7a48424858376b445239753143514b6849785577484a4243475548366b444c4d5a71434b416736716f4d79494c767853736352564153774e50594b646d61687055357145766747514e6c7751417052494f756754784771694147706f6951366d54556f6f7a73676a50696870443848524646445371414f796d707858464d663473554e4e645342635a4a774573787a51457173674a72544c6b6f42526b644c73436c7136414f5854454671565146416d6951364143544a6a554d5573533166687a5278726a384545634b4f68694b6f766b4d55457755456e503470436d636a732b4b434f32574367374b497872334936754e554131497a7179513855616c41324953306c6a5252736c44797848464154537146435644567969454548555367775a50715353703149434b4b5a6469566e4359466b45304d585a4b344f464564564648354946787a6274546e4276696c6f5379626b6744594d6f474347465552687a5154512b4b4771574b5a696345424a36684153374d5543464a63734368434e55444d35354b474f4b49494a515a42414447707851353979684e5879546469414d324657522b614474326f312f4e4141496749426e5a416a713542534b416e6c6d6770694855642f624e4178354a63613855334a4232785151417878544369427755692b434244524e324b45736163457a7455494165476145424939716d614c4130434266434b5970795468684a4b484e57716f65495a42476375555358436d485755474b4136584459714278795a4478594976523830414265686f69532b507651614a4251314f475146696163304762454b4376616d5a7a52414243714461697850656d72795541303951514434424538436b78544e7171454569584b45516352376c4759714d51784b426a7755476e4a4c50705230306441705a6e4359734b716143784b494f41474b4343765648464876535a7151393642735843434c6e496436494c52356f41532b4b455973666246454f395032494175534542475939676c4154524a376c4831594946356f394f61464b464d412f6951514d6149462b35476864306d52644131586f694d3355626a58386b6d5074564138554245464e476f51366b436971594567306f6751386531526a4847714150563048644d394b4d6871616f434234394163344a48644e7a514343594b4d4f367166554d306744684242675853484e36707a7a4b507a4e45433164655245522f354d53634c6c786576414950746776486e716a75502f7153516574747a6b62634a5950474b735a6b6c722f6a67663442386b592f715147414c705361736a6a6d794d71397141596330515269686a6770674b6673514b6669455150314b4535716533733641694f65444b762b4c334b776456636b4354676745446b636b4238564730747a525a2f3249494b46514679585250424e67512f42416d6c7176565178415459526553676246416e68354a6d436b6761677147496b65776f4245484652694d4d6c487a64484444383041414f6148444e4d37347152447646424e4a78415a6b51386978557744756c42446f43515332444b41665367636d5177514f4b764c7351492b6b4d6c3745592f46424d447a554c4448755530386b776949766b67447869613143674765434c30646b7062565642485963676d4d58715063684c704e553272676757525a31497a664570744a5a445367476b3438457a563449536a56545545457269334a527755665a6b54556176617141615976337153494a5567475259413473676c7646637a30656f33482f31702f67756c616f512f61756236493574333563623079673654454b534665515259765652744e4d30456a485656516a525641564e456454346f42696634555948676f5936735566454851426e4849496e6d70565232514b51443730535337384551485277354641754e66324b5263507752775530766767415a51554c496b566441696c55455967756d6b6868324b6158787851486b6749766a2b614a51374d4545694e4f4350745651673471535a416f54455a4b41414232555a716f416357527778434447434a624e4248344b414d6f45785956396967575471534439696a4f6f526b676c54686b70676f39464d5345423745422b7847574b6a674949787a5374546b6d314371445a4949474650336f6b74544e4447764246744e55455a5141476851307355535751426e376c4d67654359526646416836444241645761415061672b525571674f4f43427056456b357145615548506e54314f4a343269503841314f75684555624a633467793955694d685a31662b706c302b6f423041464d45476479455158525a6b456345734d554771484b6c4557775a41434b315569654b49346c5358536742624251522b4b6a45594b4e376b4549457144465254566d6345494d6138554570773976326f366d4155663471594942467a69694b3449383043446745424d6453414f574a55465643676d4367346f756f445371414f324b6771575249357155464543756345354355675a5a6f6f495558555a534d576f6744386356492f46536b56434543346f6f6d544b44695545623349462f7a527a555a4244584251463057436d7038454151624c4a485332436e5967486169376f4f416d42514156464d46475259596f456345454344466d436770686769533253446e657453454e71352f554675684a34784c4c6e6635433532636848485646644b4f4142785a41314d314855302f556f4134596f41686f70795a466942564e6b79447a63535a427a372b53726c486e7a56784a30394c64366f797179412b5743656e484e49574d58692f5438305979727a7952456d4e516663675556776f3673306778705655696376707a7856704d6731614946304e56314b4f357754434c38314766414d794266483144424f4a3667342b4e4d457859467667704f416b48444e2b434374712b7a4a70386671397170326a6241306f4754467967416b33627a566b59355052567764364231592b6a477034494670584e4f4748636f2b5953786e6e786f67676b54792b43665357706879396e55426278592b394349616f5141594e6d45386144712b5367456b5034706d714258474b5a74584e4e674d614a5231307743426e5966676a4638543845424b6a6330596e70514d65716e78554a50636c656d6f706f5637454566426b5445424c3151434d51364167487849686e664253574645437a494730764b696d6c7934514259645753503841456345424d696733696451773055662b4a3030537777784b41436c55315151675a4232775142615065676d70714c4836794732704765714b336152716667734871386d32784c66564876716733573848474e464a454d35627553322f44543979624149424b526430326e676f3437305837614941497658504a434e4377775452496c68524c324949413450444a43677a716d6777712f743763456878716773704c44464c444873553073704c6f6f674a48357076456c59697552537470707a5150706a78396970716f683873307261716e446d6764674f784c676d413976626b70535645416a30476c4b4974523351465256544b6941792f68556a31564b455378644756636b4569484e464a436e79526f41366c483745444e6c77536b694f5077514d58374547496f454230317169333149564b595330396d4b435377726970514a4d4b393663463855454543427151664f57436849666b6965504c4241724f6f4f61424f6f75636b7a6875314143636c41374f6a496d4a7170394a5151795268455a555172696346414a5a2f6b676d6246485458696f4871496971457550376b416345303975434d71495057744577496b4b596f4961726e6576307332526c35674f7064466d504e637a313050627443582f63434471505569574f53446b732b525454442b325341446c696755783078514972715441635650435541717a664e43516b39436e7843574166483239734541643873464b6c466a3249477070336f445534424d31485563747753503841717851466d71555378375543324b68416c554e69674d5a49734d3147415a4b4d475147766339654b625139667053594b4d315a494942777169574c3151596b4d685846413163734575576c4d485a736c4b416f49373969446e486a525239415a52394f424341774464714f6b356d71426f68444679676151626d45496c384557664242763149464f71506877566844564743577236516e417256416f352b7a6f683674676c5a714951447367594e675553316331424a736353614a435778514e4768344b595a304345774268345170414476344943656141346f3661766a6e5241734b4941373936414a6a327079496e6b6a6f4a43424f614271584b62533261496b33626b674c4d6c484e4749794b6d6c424455634579582b4a51303853426e44616b756d7445534b66487555303563653541756e3950354b4535436e4476527142525168304367393556472b4c574c677a4957673049624e5a74394c2f78376a2f6f6b67352f6f7332766738625877634c306c58354c7a766f63483341502f414d72385176526b5559346f4a6d796d70386355496e54544a523377515453794a6a54676f5470415142424b4169575a7751724c444e546d416f4d4545774e55754a523865426176656d6653577951427a4651524a55716170513577515745747955675145707151666d6f42564153485179706768494155525a6b42623235705a4d6171446d35545347587a514c6957415a5132794b706751533555656e6167484a435045496e485568326f435935424e6c584e444a67464d4d4541596a71556b68722b735946547856492f4e41774c79524e4d557036456355454e4558695167375971474e58514368655743684c31596675555a796f7a3151456f4d32645647666c5842453951706b675563546d695847434d55447a51513148556f794f474b4f4342474c64714e4378524a34594b746a34696773684a363571616e37796c4a31426768496b34384544484876526b4b305131484651346f4a6a5842474f72565442534f4b676b52772f42414e495577504e54566b79504a416f785a4575464f614f5343544346514755656a6b49754147515142366f6d4e4541477267684b577167393643455549437a3337736f584c55493145355345757a5353726239795671426e416179412b6b5a2f4f71787a7677334e367a354e644570536e2f434e4a46583763454631336657624d394535674564724238484e514f3868506633467577336d6c6e656d4a50594256636a63335a796866687145613350365562645a415a6b382b4f446356667548686668644e773237666c43496b49763150554677514870576d43446f4864326841586451304767352f7435596f51336c6d634a33496e6f6834715642374766344c6e6d33617432524d5475454736626e6d69493653614f517a6154324e56417a6c7562473441416e30394e324d644f766c7a493546423035336f784d597950564f6b63337a396e5666397a3238635a696b744d71476864716c715634724c397a6233463277625a314e4b54306f48676365664a426e3256384e6e656674636f4f73414e537837472f50633259584a674355686c67727249364939675850394e32555a3761325a6d51702f334a675a38783845476a62377839734c393867447166494d4a45632b437468764c56794d726b5a55747671794948593272736f755a616d647673375467442b704a35546a713064557572386968497a6c39785056356a32476a505470667859636531423034622b78636d49526c5534556f652f416c61422b39633239412b547441502b35622f415061567473583433444a766f4f6d543851676d356d62646937646a575549796b4f3042477875684957346d6b3578314d33592f7a4377377a3143486c58624d775933576c47454b6b7a63554970562b57436b794e704f784b395143456f536c6b43644c50376979445a50633272597547556d4674685070772f653477557337367a6475614947767a37437a487564637264487a4c47386d42535269335070697432366a2f77435474364d78756433516754622b6f572f4c61396336396377375964524163674d4f396c7275377133594945383868583442797563496b374336777a753976694b736c64685933506e58756d4d376352476551494c6b6439436736467563626f38794a31524f6179536e667658703272426a434d414e636a4855356c56674b5a592f4a5430775575334761467963705131597357725869584b726a646a7337397a7a656d4e7a544b4d73697759682b35424c3237753272623341497968636a45795a6f7969534b68386d397857757a764c5636527432354179344d5166694b6a6d466a76334465674a36656e7a62656c383469517132516642573341667649482f3563772f7551572f6532504d3876554e54383266672b44386e5771585356777455507376744150363761664c7a315034757a36745337486e786c4f567647634e4f722f55677a58627432642f794c526a426f366a4b5564524c306f484744565077567475354f496c397930644a38654554486a6a546e565a7433637347656e64426f687446326f7878446a416a747171664f6c3976646c482b7061456835666d524a36537a766e4942365934494e396a6557722f52626c714937525469485a787a437268366c74356d4c54385a614a7238326f65527173746d354b3775725a387a7a6569353143476b66545148503846555154365749742b6a2f774432416f4f726633566d784943354a69636d63393741303571763732774c5975475930796c7042794a722b52726771547559626264334a587a70684f4e76797a324f3437655379572b72623247422f7743642b35356f4e78395132354261574830365a412b356e2b43613775424b454c6b4a7447636f365a5244367634652f7743484a494944373663682f774275466638415566324f735942386d416a674e31772f6a4b4466503147786231526c4f6f6f61467832306f4b343463385671746b474f73595a64697732502f77426f706a4d2f2b324b73324a493274702f30514877515532373234334f7537616c41434d7052454a416b6c71564c686e5041594c5239784746754d3733515333546d35797069566875334e71547176505a76687830366849384347595366734b532f357a37652f664a744e47516e49526653533249494944356e49384548556a75376479486d776b4445654b57444e6b6548656c7362717a643659536338475974787150697565626354616e65684f5634476475552b6c7451697a7341414454356356624f3962334735747a73485549435a6e4c4a694741356c363979446f2f77726e5762323676774e324a746b50496154453130796248566d334262376477586f527551724568335850326d397457625a746e555a36726e53496b6b76496d6c45476d3376726479774c382b6c2f652f4268556e4658573739712f41334c637144785a4d5278664476584c3154326471794a74624d6a4f5570796a7145436174326c3266745652686376327433474a4d3548543161644a6c30384f66785164537a767246347447546b4455656b696e4555714f784e486432394d4f716c7874484e362b337578574c626d336575327a3578754747706f364968714d5157694737437150496e634537582f5945764b35794d746366634248336f4f76472f624a6e48554162662f4a774431484c6d6b733771337543317558557a746757346838527a57436475563761584c7247586d54387a546d59435159663751725937694f3633466f3763367844564b63394f41496253357a4a7935494e4d7439743433504a4d7167746851486754672f61727952434d6a4b6b525663654e32467661334e70502f6d506d445133564b556953447a47465630764c6c35506c7978303658376b4759584e7a63744463514d5762564733704c6b667a50695279556c765262334146776d4d44616a4c5152314f5a4849566473556d31333975787478616c2f7741304936664b7a4a485a6b654f437474695233596c4d4e4c795936733636692f7851616f376d7962666e786b504c2f5637594957743361766c6f487141665358422b49425848455a4333646d41644d4e305a794847446a4c50462b35624e636478754c643279645549526e726e32737766346f4f69612b35556275354b7a434d3473356e626a2f756b486233717758526574696471756f50484c73584f75373247356a61684166314e6475556f56654c536376515543446f6562435679567348716932726b3951717a7637476d4e777a476966685048344c4d4c384e767537707564506d4732595a36674973575a38386c6e3273446274374d4e5547542b365344703766643272774f6958684c534742487641504e4c59336c6937505247646373513435456870647a7168684f2f75424b4f6f6558414e48452b4a7746527462344e793362684c7a59674e3151363762527a4f48384f443879673351334e754d4a334a7a654d5a463553706757624159596330316e6332372f2f4142797737515233466975595159326f7a49366265356c4f512f683147764e7363463062562b7a7572706c61476f69502f4a6c5836587a34386b4175587a5a7657784a764b7564494f65767434456373564c5736317a75536f4c4e767031484f513858634d4f315466513162653579695a523467696f627641576137743232455951695a41614a796a6e4b6f4d76784a51613976753747354f6d427142715a6d4c6361674f4f595466655735577a655067693779344e512f4a5a5a586f62752f5a6c5a367447755570444141686d4e4d53637553785376526a744c323372356f4e7a6f5975786b5344324e6d67366c33653262557a626d65736a557a456b6a73474f47537473586264324f753264555a5a73736c754c6237566d4c4d662f63556d79755174526e72707176334978356b6e386767763374326471305a323238555939512f5649443855504e76326274754630786b4c684d586a46704173542b6f302f596b395647726239654477667331425a783549763235624d48587161666962526d3730374d3351644562713135637232726f6a714569324459305a31495834584a474d584a594534696b6e5a633363577065656476702f7033355275533464506948653066657235586f626664546c6436524f454e4278636a553437655344544c66575245546e50704d744c3456442f6b5562473774332f38416a4f6f6774494d596b5032726d325948525944482f6d75596976314b2b394756792f656a444879514232395761445248314862547043645364497871634b55593154334e356173534d5a7a71334f6735746833726c7a334e713561323971423634334c516c466a306b636548347254486357397063766564517a6c716a69645564496f4f4e614d6773766277576238424b665162636947443669345a737974454e375a6c447a524c7066533963634b30634874574b332f3978624f6732783555756e426e4d614b6d377130376768793132334f6779476b6c42315a58496959742f5558493773565673626b723176586371586e3768492f494b6a376d3375647a626e62366f614c6e553150706f6d394e4f6d30582f56632f3978515857626b72747935436546755559303578422f464e6433467262676559576567476675446e344c465a3356757a6676695a596d6354676139495665356b392b4f34457a62747968706a6345584436716a7142307638575164474f34736d7a3532736557667139766c787069705a3346752f2f77415a636a78555a7530477635726c584c49466d4e79314f556f2b64357370694f4754694c4d7a31773568614c46793341334e7962787561593955744e41413759426a38545642304c336d61443554613636587739766b736339385a57626372592f713354706a435830792b7038326a5662736663734732323852766273674b615979354179385464756d714336357537466d586c334a645178706832746833712f7a6f527552675a566c7130383237467a6f6269337470336f6267316e4d796a5478524c4d4278344d7172594f316a745a337143455a786c492f535a414d2f755a4230626d367432395a6d61573231304e487277374d4649627933636e35634a6454633249484135397a726c62676937446554692b6d666c365378714743336271426c75747479387a2f414e71433635763976614a684f5942474f6264374d2f4c464e72486e52694a59784a4547797058426375642b466e61333976636358663676533153354c48737771743171753674482f7743564c35785158486432764b462f562f547031567a4c595934705a372f62325a53684f585648474c456d74634150334c6b693449374837663841367364496c4671687076376d7a58533238523931654c59693138696731526e47374553685548777956566d2f4b354b344a4d644d3947484946552b6d44527459413547582f764b537a7559626564364e30733978786a6870484c6b6731796e455868445551385364445579723363465750557474497861654f4271423250672f4c46556d51756269334b4e5235567a2f414e775758793957777351503672582f414c6b48537437713375486a43546b59696f5078616e4d55576b55726b734e787676495a663035312f7742555670743352667469635043617837454766623773477762317773786b4877464a4544327a566c72655772676c4b4d76434f7168424863514375644363724730425941655a4a35536934674e6375707558637047526e647547552f4d6577644d394c444534636531427574372b78634d5247626d5741597365396d3763386c5a75376e6b575a3352394d537977334e58327531306a43566a3848576e314d532b32752f796c42586676626a613278667547334b4162554245784c45742b6f6836345a712f6362717a7470615a6c71506d574845733744745352324e72554a544d356b66726e4b513979793769394c7a376b4249577a303657743670547038526c7935494e31376557624c473549415447714a34696d44646f626a6b717257352f72336a4b58394b4d626371305a77536565537962574e646d577149584f366751334f3375584c39387763694974534d4d726a4f576635664642316256324e79496e427a47516350536e665655626e6358497a685a673054634d757164574565416f353730316e633237326e532f554a534135446a775a4a764a5771513346743752636d574969526737436d4f4f534237486e69527433476c51474d774746614d51394432555a533376624e36344c634a416b7678597469787750635669695a584465746261526c614e76706c4a7a706d6141526b6352787251717662694637796f53765431514d5435576741784d636a307678442f414251644735763746715a74334a4d6665412f45674d4f386f3374395a735430546b7862553153613967354c6b3772637a6e4463516653657365564733314544366965664841444e6262592f3873482f414f52482f77427851627256323366694c74737645352b31566e4737456274364e7767573751684c563269767953656d78503841562f38417133666e386c6c7562474f36334e2f55346b426130537942593162417367316d2f4b566733726b764b4262537763694a495a38616e736f36747662797a5a6c70755361555143326d5270786f432f345a72467572383732316e435961374132784b4f586a6a55636a69466f74763933646c7868622f774469514e2f6362476f415448557a5a687a685841646871744f683178644c656c7a705871797a453132424f453553746a474f4934616b46462b37634e3062617959784f6a555a5344357377446a6856505a7554684366335444523958307948484e6d7a5647366c747a4951335547697a7875463865446a776e444f71787a46793559756761726c6b53675961716d5142426b4b31493463656144703264335a33422f7053717a7358464f4e6352334b543331694d39426d4e514f6e6b2f62672f6573687657397a754c52736e554c656f796c77426a68326e677334757768744a37536464782f556a7061736a496c7063786758516473394d5857625a333562697a43354f686b4161594b32454443413159694c46632f59624b45724675524d77645036354438666b67753265386a6574323962435677456a6d3335554b762b376847456a717062654d2b526a6a37426379794a57396a5a764164566f366a785976452f50344b533270746d3359492f774359524e772f78514f71582b344834494f6c6533316a6279486d53596d756c6e4c6353414b6470527562757843496e4b516166684f494f66742b617862693659626956737a4672706a706c6f31546d3730485a7778564f7a6a70743758554d4c6c332f77435033494f6e74397862766a2b6b58302b4b684242374378435735654933454c51776c47557564472f4e56322f2f414c75374930364c662f784b726562614f36334e71463048546f7559467630384546316d2f4c63536c4d5573674e45357949786c32444c6a69694e3561747767626c787a4d644a494c797772516338465674357a7376744c754d59644573707779772b6f5945643670327736396d53502b6e4c2f414e7355476b2b7062614d524c7a4b646878474c687164363278494d524b444548687a57486257683532344a48696c487647676674523950754346697a626b54716c4435494e674941596a6e3349394d4d4d557458354977725531356f4a47533859486a4863634e647865795a38717278357062764534655a4e42363762754c567638416b697248496f6b73512f707748384d5534636a5367427851497a34496a6d6c5a366841547a55424977785271796841476142524834714370716e4448484a49526d674a5078514172714b6e5a56467338755343536166746768516a344b486b366c496b494730674a644f534f70364f672b6141476e4646336c516f765573674139654341596d745643534f394d654b556a365a494a334a685142755342424b4d445867674142485970705a53715975786242416d6c305454456f786931564e4e45414d58726767615654696e745644534f4342524176306c51467a5549364e4c35443570686967574a6371526c52796d3076524135526f77514d593053694c6c6b4f626f6756716750785544474c686c43434b42544a414e5468776a6947524149536b765642416a70304874524c4930484641484c555563776f4648346535444e6867674a6970694d4547347068306f434255664e63663050706a75502f716c64674141397135667041494734622f767a393145485378527a53784c31344a6e795142794f546f45356a464e44425236666967446851737a38564354484248547871676a594d6f7a6331476f6834753141774752554654544645556f6751676c4d56437046674755504e4143546767587a7754613377516676514d4f6c436869794a6430477a5151383143474c6f673656432b5341434b6a49536a775271676a565a6d525965355269614242754f444947384e546d6c496445682b35526e4e632f774145454d575262696c6b6570456b4242484271695378596f43754f4368673643533468545542676f314b714d67676475667a552b6c517677522b434145434b494f65616a45316b68474c73674943444f48716d41474f6157584c69676d426f5754516f4b705151657851506a696768397171567a5545532f79524c6167674c356f44677069555046336f476f6c50556f3148434f626f4f644b5465707848477a2f3853365657646379592f77443370446e5a6c2f376c3038536745656b2f4a417834706767586f67494143564d6146796741635367684f614a4439696e5a6767485151394f4345426d6d393641484242506b55496a456c4d6355475151784a6f706d6d77534f787167596b6c54532b4b674e65536a49437967434141495a516e336f4a45497368696f7a49497a497143696d4341346f53476f494574326f733643456345434f434c4e5642424253694c4b45556f6f674143686f6a676f4f42514168516a4a466b6336494677716a326f70546767422b434f5442453155514c46466b54676f676a714f7751356f736767517170525446427a6658412b31626a4b4b364e73394949344c44363257326b3278702f7743356272644952423449487a553755714c4d67484a476e4369425449504f5842566a6971704671555a5879634178795756692f45424157494646424f54307735386b354831426b6d6f6971426e6a49746d6a4c54467a6b70494454553936562b72534b446a2b4b416967456e71564431653261635244567a51306759596f456744452f503841636a57545965354f32673171684749774c6f41444b66534d47516b4b4d4f584e4f326f63472f42434d41616345424a4a495a6d5a4f5658497535772f464e4c436d48596762544e7a6e6b6b59397949314e306676546759664641594e34554f6b467343796849772b4b5964574b42544a7152474b44454d55644c4e776234706951376355454a65677855314555516f6a486931454162792b39474a346539545332434d6130422f59676764716f7767314a555269787067704b54426a55684131544a476f6f63416b45695378415a4e704a61517167684e4b4647494c7637304446734d56424146796744563549746b6f4f48424e627153674c456e714e464269674a44464b4d536330466d4251314b43527a5a53504538454445736142632f31674757306c495a47507564626d707034724c3671783238685671563755476d325036664a4d4d615a4a625a476e6e2b78474c41734b73674a705832436a6b4b4531344f6a34616f434a5046686b6b6935716d4c65496f5939534153474a5a366f462b35422b43646d505a67674f676854546d686c78554c4847767751515974694578352b78516351367967445279676d716f524a4a714d4f43424c426c42485767476972496848537957594c49446b776f7046773555414c386b30554246436c59346f5a592b7852726a6b4542505042435856345530692f747853677357393641746c334b424b7a2b48334b4269656677514e34574171684150544a4d4b386b48616d41514c7170524d4f6a7055456b5978617249463076696747524d697a6c536d417851466b73734d616f6e446878524e6149417855614f534a714f4b496b7a686b414d574c6f794f5a775279664a4c3568356f493272425176693656394a4842504f4979514b795073555a674d774b6c76686b67456a6b39567966585a4e62736e2b4e646775447158493965694e4e69474c3345485a75654d79504a44535a567a526b584a344b7432384b42795770697946506169452b73342b35445142516f447134343865436b513559666d6850356e772f74526b4167494c46796a716c454a636877356f7367584b71465a4769614c646e616f2f366355456a55754d3148626d616f56726b69513061314b4148416c36707149616e556950715037554144524c6f7656514f326f497351676b7553574e532f6677546378674572315a41596b48484245563755673755774c6841512b5351456c5049674b534765483755414d637355503455644c43694d517870334943497345754874676d77533830456944346a5149393945644f65574b516b437142334250464b4b47714652696f4a48444e425045614b4d4531634d464451647143526b4d464e4a4a6356554d54496f7878306f415973417855714d50334b47495061704566464176684c71416e424d496b70584553676253443476667855306363454979694b5a4a75335042416b704e7a4b65414d73506568587554667734494645655077524230304b4d2b4753676a5677674236615a49526c77775271786453505453487851416759344b66494a67477872386b7266703755454148743372483669644f30757469522b53324147654f474b7a37364a6e5a755279306f4d586f78626447502f79527a7a433737386367765038416f704833492f38416f6a2f334c3044766a77514e4c4e306f49775542775130385851516e5458357159696968314f794d584b41665379505a376532616871784f507677524f4449494a42394971794d5a4175516c4a624b76344b476e557941794e5855624d56516c776431424a6b426f614a6164334a505349644136664561494a706467556e37307a4d69537a6842474271517056314b64764251412b35414d4f584a5269464a597363564b34494a703936445552786f6949674566424168415a5050426b4355544c366767534557666a3255566b6a6b6c6c46384f4344634d45426a777a526c51756f2f484a514e4c463045454b3179517049305547635563653141734f614c5030715078785578633542415862484e523355646b6f6f6763424b7a4b4f355259447551413969455878465535696761426b414345695a466b54676f4469674e5736735574477051716330306578416a6a4e50492f464c4b75434d6a5641414b756a795244756761566f3643444651536470437052446c314d45414d386968564e4c4a36715242785151635572456e464551516b357743412f4a436878526d476a58464b4277514f4333596f4449676c6c586676437a4356777530664670344b75377572647533357276476844566438473755476e583845704e4e576675556831426c44537550354944456b6452515042537453634644303151456c366f646d507556566d39353053514453556f2b347372544950323979436156433571794c4b69377534575a4344475677314559786374782f6633494c716e354b527147437954336b44623178633951746d4f42424a4171446869744d61686e514d4a45305352684733446f44427a4c744a7166696d5a7363556e6d474d394f6e705a395754384546684c6c4c704b636b6b4138666573383931624638575365765471626c2b6143344f7a4b4d6941356444356330424c356f2b2f73564a75694e794e6e3670676e334e2b617462395343416c324e564b75374b4842515949493755346f61416661694d4b56664656692b4463386f59674352374353337951576c7a676c68626a475a6c45566b515a6474422b4371462b4d684f4e6f613942616e4867357032712b714163326f6d64717059736c4c34494850616c63315455345a4b717a656a654477714b6a67354342627471356348394f34594e6a3078507a3975534f32327732384241456c733563633335713347705263384d45436736715a4a736d527a533455515452314f4f4b496d47644b546e6d6d464d41674a6b6b44797877525a6b584f41514135533549456177596e5032795362653947344e55445373613869522b4373596e76514c6f6841614930416f42324a38656c422b4b6b716f4270303179434f736a6c6d7162742b4733746d354d46677a353573456c7666577033424169555a5338506d516c462f65673144344b4561667951484a543855456c557437465145796f70496b5352384f4b4258616f2f6369656f4b713366684d53492b6b796a497970574f4b6178656875493634344877382b66746b6763436a6f6d716d53676a56414a6752726b684d5275524d44675178524853375971476f374541686259615251424d615657652f757264715675334d365a584b5237665968575837384c4675567937534d63666b6765414a375551486348425532376f6e6f6e41616f53443673474873565a6d676c4d73557778636c4a714d70735230732b726e77545444494152576d4361423936476d714f434156657566484651446771507572636248334250513272556e68644c686f6c704455387148735a425a78446f45354f6e4e542b434464577042414f72322b6153555979596b504b4270794f4879544375436f6875726479313534706271394f4650774b432b52616f524862677166504c7830784a6a49654930303976616a65767773322f4d6e67477735302b5a514a437731325636636a4d6e706a6b4978785966696578614770677048327167513155456c68586d70385167373056642f637773654c3676444749366a7941474b436f624f5570524e79365a7868495369474136686735474c4c575a454b697a7559585359316a4b4f4d5a68693252722b43754841494154715a314e514e54696932534941514b487a4b424a3564716648444a5633626f74526c636c34514358354241373652326f4f556c692f432f434e79315742773975314c5933647263584c6c7530584e73745032376b4634476d6d535364754e34614a566965504c3979623845514b6f4152567a676f2f63564848636978505367474a554165754359644a5073454f78414e4272454b63693671383257695568417543776a536f343969754d6345475463625735664a6a4b365261506967414862672b4e5530647470766563532f54706a484b4939754b306b5a684a636e477a45334a34414755715a42416531455342374641597948496f48427633494931636b6578515552314d67425934496b30514468414853794354476f6144337151694c544441426d5a4a63757732304e5630304e4f4c6b3465394a44637775793876726a4c4670525973673061564a6471717362676269324c6b656b48566a796f72577a783755456a3764716e4e6d4b574433486a4b4c4148333838554a4854586b676345596f426f696c456e6d366f43356247762b576c43316662464f61384f78424b6436674a495530736a6c6a676754795969666d4e314561587a59653258344a347553784b72757a6a5a684b5a3849446c4735636a5969626b714349314873514f6c6c67674a612b6f59596f6830426f796b5879556c304f5931624c697168646c307645735257766850413975464546776963636c496838564836514d30493845417777547978624d72462f634c496554534d502b34496b78705448687a773571337a7835736251446d596c4c562f4b337a644265326e424b4969456a494373694a53376144384564516175536b357868485753305144584a41583030514a4f437951395174793036684d4352614d70524969546c2b783264617a513830454a664652776953684531593845424553334a434f46556354576e42563337734c4673334a2b4749726d67596e5361496d564f31566563504f3871757252356a354d3766676962317545345776716e7130393155466b6e713662732f5971726c34524d5947686e3078706a6d6e5a3649415158366c496a336f6b31376c424836676767636d69674237314a63446b6846774b3449475a4c356364516e395461583559736d41344a496d6c4d55445a567232634564546f61613055455379415664654f6d4f6a63442b4f582f414c677659796a5846654e6e422f7561762f556c387767396e44774350494b566967434a5269655365484469675679426b416c642b6f596356597a3470583155514857434f784b78634875526a6779577566765145304b4d6934556b5469456645675855394d6b7a4a63457a53514b44696a686a6d68556c4e6d676a5a3936574f4b6c4a646e4641653967676870676954395551706a567632706a444242412f656b6c587454455a7061477141476844706a696d6a4871624a513438304361714d6632706d7943424965754b50695148516537336f554a5a4555557959494a794f654357555754416a4e4531514b2f7469673965536b736457536778514d2f44464c777032714d4d30326b4f4155437467324951414431524658356f41423649482f6d51727755445a3449672b574f3142496b794c484241796641496a7141346f306a346b4149624653576d6a71617453687067675a6e716c30635256474d69564d6149464a524277544d6c49656d5151544f4a584f394961513341482f666d756c626f56792f5279773342662f72792f424231474761485048354a74496a326f4d515743416475436b547877544574523671536471494157524d7130525a7170634f53415956545944676f5a4d70704341384751726968474c59597141565148486b67614a6d49516f636146414d36496c427a6d7245436d7446416f526a5242713077514e584e4c4b6d4b6a71444369426852516c42677a7151614b416951485967334a5438454d45446d69587768526e3667692b5251546d67346c376346434f48463063616f4141324b4a446f70516377674c456e6b6f345065693455625677514a456b3054434c4b44346f53414a72674542446d716a30513075475561756e4a414935424654425175574b42734646476171526b442b4c735130317853797754756755414f794e6535426d78527951516f4770545a7567426d5548506b502f336b4879732f2f457567654743775470366c486e5a502f7558515a384d454161714e53685630782f42414d7561674b4474336f397143616e556f616f4f365a6b43364d3065534e445242337167476455796e616f79434d677a344b436c564f614344354938314251714f674252775548465352514c474b5a6c4158554c494931564544524842414779524b4b464167694278716d78515a41475255464555417755555543434b5949344b4949554f315251555152526b554355454c4b4251714242436f2b616949644170417a544f454d306553446e6574663841326b6e346a35725a5972626a4c6b466d3957614f316d5348772b61315777504c69427743427745564b6969675142536a4e6b69794b447a7336486c677151432b6a426c6f4a426b527743714d674b454f6770454b39574b6846426849736e7a4d31506755436b786856454e49366f35714f78344a395a6e347a326841735157424f4367746168576f52446a464577634d3451417a6951644848755a48584638574b625534314a64414f49657142695577596a7053654767356f314c6d4b415362696d6b534b4f6f59766c2b595262416e4241537a63667a5369494f434e755131616b514b754167682b4b6b355a4877706a467a3149466d5a4241427a49624e51483348337068534b58443971416437424e47504839364463555434673641744a715a49484c696963776a4545352b7851527a414f557872564c7130355552385270376b454846466e5976556f544e4f3271424c4d374948464d5565594e554a534178774655305433684142704a7038554a644b556a546d7244774342515361596853544f2b434c4e68676d4c356841486f6c4277484a4d6146735649796f364348554d566a39554839437638507a577a5553512b53782b713173616563666d67315768706a706d78494e45385846656263456f36686a2b7749686f356c417a4e695851634f334654476e79515936616f4470447355534852354a64654c49414270715530576b4561686a37664a4b447179514141745651792b6b7166556e69784b42635a4e49496d496c31594a59366f5045356f45453434634545444e5842506957436861496f634b4b4d4764424b4768782f4a537148495a4b4555596f44504675534144686b327649495049637a77374545777954434953743953687735592b3243436173754f434d596759643641447550334b564b43637770477443704561734554415279514d4b4771527739436f78426f614b436e4e41346b335563416b70782f4a5161734b49674f356955455a354f57526c48394f42526d52775149475a5142737869694270706d7068524d2f4446414d4f5367664641787a55442b315542476d5251422b6b56436c45543249454f4e6633493653445651554842456153636b42516d474254786a70356c4a4d66464244673266344c6c2b72792f2b334a78383065374e64622b624a6376317167322f2f774254336f4f724f4c47585044344a424c33594a35306b59684a7951514269794c7343436f3852584c676d4934494b324442476f43677133734557456856417038546c41795031594b53596c384564494d6d795146793346516b597155425541624a4243487770326f747178554452594b53365456424e66414b53693941686f414c787146444b754449444c4253474655474c315261764e415448554f422f4a44517871674b486877554a346f46624a504a685435344b534141532f69674962484a4d51664547496441637356444853676d6b6d565542484e484c7434714456476d4b4363442b355341792b4b5a73776f5167426b414f4b6d54782f636f4d4f5470645449494846536e65716a422b314a377355446b4139755354477541644756616f4467675a7961496d58484438556d76686b6d7239574846417044564f4349413470696539492f443243426e3076785149696a584a4b337651444e4d4f6f7438457048444a526b4249617077436b514d536f5134725648716c5549432b5178356f6b4e6b6c4f4b6149657077514357484e544770376b61413055496355514a463354535a2f6367426c78557056385544552b50775762664169784d79796956664b4b6f3378666233482f5367352f6f66567541332f4147522f376c36466d354c6765696a2f414d694c436e6b662f4775384b6a547a78514530554469754b4d692f7555356f4641314770716d4a4f426f6a324a43487879346f413734707a785562676c4d367555446158716355472f616f376f734347514b425771654d6170514e4e51674b486b676777714649305431774e556b63507751466e6970677a565a544a78676d37716f466436532f63675843594433494d653542474c676a42516a444e48385545416a775445456347536b3545747a5264386531424f615956536d62654a452b334a414d51774b4a48464b3375644d325939794359486756416163564177797751795153474c594a584761734a536e6b4d55457951384935354a672f762b534c306f785a41674878544e71596f312f4e51467643675579656e464b584e536e4e63464e4c424159683070555078554c6a4a424252522b56464f59516479474343536273525971534a7a7a52596e76514b4253715a30435131436f535545417a35715a454251794d6134494d35726767496931554d45547a71686e6d67496b485a516a48694559306446676553414e55416471673468534961684b68423776616941482b4a512f425131636346476169416b413831794c46672b654c452f7744697366314963395868662b5871627558576b2f636c466d4d5a6d64656f526a376e62356f4d454c663355377370546e44544d3234365a4e70306756356b6b7656316e6a636e757a746455705238794e7a58704c5070302b3379572b657874335a475479477278365a45416a6d506772667437596c43514447324349354143583741673535767932384e314733492f77424c546f3146794e5565623979754e673761375a416e4f546d516c716b5a50304776733377576d5733682f564c50356f3668786f7a6535632b7a747079755770786a636a47326362736e62705a6f67452b38384751494c5a2b3376586f7a6c47554a5870513079594169527946447a64317072754c304c63695977387358656b36586c49385256682b4b316661323557355757365a3674582b7246567a32734a61574d684b41614d6f79615466496a7451545a546d446374546b5a43334c5447575a42414e654c63556d31727537356c6a2f4145363874503575744e69784862773051484d6e456c38584a7a5358746e627653467835526d4b616f79597469335073515a505554613058504b5039557a7461754c366f74385032716166746431626843556a47354734385a534d71786174634d384b4c58396e6245504b59732b726d5a43726b6d70542b534a7a467954366f6174504471516371334b63746f64385a79463170585046304269656c734f5846367258616e4b65384d584c473147576e4c78464f665437556a31507066566f3148532b4f48626c6879543339724737726e48707553683565726b5850774a51614e564b72672f64513079334f6d5a75655a35672f7079627934305a3262774f583472746d324a572f4a7151326c2b57434d59434d664c62704130747939766367773351622b384673546c6f4e6f7961456d4236673248626c58756f71497a6e62735474786b61582f41435979786b496c737a6d484b364e766132374d684f414f6f5238735a394f4b6e326c76524f3259394e773635647450794344474c4174627533474d706b47467a785331596165395a72527557746c4c6461355375645552716b344839527144422b5a374d4630376578685a6b4a764f55674731536b3559706f6253454c586b4e2f54497a35342f6967773262643458596a54644675514d626e6d5442796f5231456776775649334e7751674e566475444b392f466f6c70723267534f6553366533326b625263536e4a714456496e3237367034375733457a6c542b70342b6553436a5a6e7a5a58627050535a36592f36614f4f30757375363838333767323750355565337848446e32726f324c556246754e71324f6b5548376355734c4d52634e302b4a74502b6b4f79444a636c626a734a53323530784544326738383366486d6d4e767a74306263355345664c67644d5a4749786c77396a6d727a74625a38774d5775654f4c30376533324b6679597775655a395269493930582f4e42796d7566617933486d543879325a6165724b456d596a435474576937526c475446552f62322f4b6c5a726f6c713166366970473052636e634d7145526a4750427678636e755157433547557a414773577032726b323579687434573479302b5a656c62314445417a6b6163366479364e2f5a5175793139555a73786c43544f4f6168326c6f576859307444687a3476692f4e426c692b3376655445794d4c6c75637571524a426932424e61724f49537432624f346a4f5a6d5461457455714553594d52673165443936364672615167386e4d706b616455354f57346469655730746d45625448544453522f7077515a664c4f37763349796e494333706a48524978443658656d4f4f617a324c7337746e625770456758646575516b306a7063732f50354b2f64576d754763626477796b4271387151694a63706451392b4c495132666c37534671635a546e62722f544c5342726855594f677275695672376d455a79496a61456f367045732b72417254656c49666268385a6a7636442b53723265314a6e646e4f4d6f776e474d57755365525a33664673634f433051324675325974714f6a77695569644e47627362326f6778694d727364784f55356a52637561576d517a414841666a546c69756c744a2b5a5a684f574a684539354470596261414534675575475570643454323759745146755068684543764a426d394d48394673427275663841754b79584a547658376b4247354b4e735245664b6e6f7844756178666c694672683666622b6d5677423954526e49427a3370726d796a636e723153684c4179684a6e4850326442676e506354386d31664539556f7a6c4f4e75516a4974514f584861574b322b6e78754153743341576a4c6f38786964504d676e4e2f7854584e6c4335474e5a4177384d6f794f6f642b62383044737151616367424d546b5a534a4a39715534494539592f2b316e707865485a343434716d393534755770376b776c415445577430366a5147704c675067343731763356694f34746d334d5550637172667039714d784d6d55794f71506d536c49413857507345476546763732643263707a6a6f6d62634e4d74496977466562753958564e71553934624775556f366f584e6567733544634673766247316475456b79477678694d694e5861334a586a6232347967514730526c47505a3741494d463570334a514276543078413032697769546d5471446e3373745779334275324c5535316b59683030746c626c634e7a71656669694a45435861453971794c4d497768345234554846486d744d7a72747866756559336962566e2f447861724c6f3779354452454363756f394974654b5941646877484d5a5a725461747874616845556c497a504d7978564d746a616c415734366f364830796a4a6a46385735636b4850382b344c4f35674e6352626a475542634c794467357561557056616a624e6d395a30796d6457714d39556e66706644415647544c534e6a61613547763952684d36716c756665724a323454496b586546592f4a42793550647358397a4b63784b506d6142475245596944745441766d34585332343132595a6e53485063467a743559314735433162755050684943424a474a44355a30713261327773474d685055375778623038387a386b475831437a39786573327a6e47367834466f742b615335642b3868474c654745726c776678526549482b37562f7458546c61695a787553465943576e2f41464b7133747255504d6c476e6d6e71376345474b784b54374d4f774e732b484e6f527856456456765a2f64655a507a4936745056536b7a5273434f33737758596a74725938756e2f474e4d506c2b4351624b324c423230682f5450346c3855476539634d4e314d753859324e576c3839525762626e635468617651467a584c535a6d5534364447574c5231557836614172585a684f3575705854457867494332487a496b533435647173687362646d54784d394172474f73365165782f68687951632b567939666c65306937726a4f556257695145527034687737346c78795856747a6b5941334b5430395134484d6479716e7359546e4b6279692f696a4352416c37636c666f5961635167342b7a316d47334e39764a626f344365526e2b47547266636d527534786568747a4c506d44484c327856763274735766743236473031344b513230586a49753859364163326f6735554c633462617a66467965755268467a496b485557774e4d317367445a33666c69556a626e4179307a6c7136675257723475727a745965564779483052306b6636616a354a2f4a47727a4234394a694f2f38416367767837463536775a4331614f342f2b323154385036745a597a2f414958376e78586273326a5a7478684b70694d536c74376533433135456638416a72347634716e356f4b64784b51334e67417445693771725367487956667168684c61476343344a6730682f50466172577a74773045502f4145333039394f39562f3232302f3161416451743675683861447479775143325364316469394e4e756e4d6d537850634e697a706b5154664d5842717a7a58527637534636586d64555a345047544f4f42372b3944374f33474d59514649543879504b5666685530515557496d31753557515a6144626a50716c715936694d54324b33633242646e41776b49585961744c314247427052586552447a504f776b32682b57507a51763249586748786a345a524c456434342b35426d4636586d536865674933764c6b59334931426a33687856714b7333536470596d35636d7a584d757a2b39624c4730685a6c72724f345132755a314675436f68734c635969505670695159784d697749725432776f6771685a4f347533784f6332456f365247636f743043744f66376c4c643235754c653274536b514c6b5a536d51576b64492f484e6c75685a693870512b73764c334d73392f6277686168474d5a79455042355a616352787152324e384543624d4733667657784b526a4557394f6f6b732b703856663668467474654f50525038413970574f7873726b68666e3151387a7934783879547a706954777067756c646a47354532702b4751593936446d57626e32634448395549334c556634693054482f637837306c6a617945397a74784a70614c51316774316b5372336d71364d746e62506c302f34794e422b48747a5465574c55705867435a7a5a32784f6c384d6b47477a755a62693561494a4769426e64624458345750654a5938466e737a76336f5276776a634e306e552b714f6768366a547177626b37726f6243784b324a33434e4d376b7058434b554751507a373030646a62747942695a434c3674476f3658374f334c4242534c66335537706c4f556445764c69495330745148565448484e316d686575626b6255796b596d666d436567732b6b483573394f3562372b7974335a6134796c4352365a615a4550322b3365724474725a6c436e2f452b6873714e386b484d7533726d3047356a416b693249536a714a6b515a4f4d2f6579756c594f31765752433563494a6c71315331616a705048384b66426250743445334a434c2b59476d4f4c5a6646632b47336c353175635958424733716b39795772365745596a55654f4e4d45435862747762666345534c69387759314131517079576e792f4f33563245355330434e76706a4e7131372f627352327530387933646a65697775584463303574526e3530577946754d6273727545706750325264426e394f6e493242724f7154796a714f4a416b52373649372b635a625334594e49614a314859785674713143774e4166457934314e565250593270456e7130794f7155424936543268426d767a6d626c7577424d7738765649573561536341484c696735464c356c2b466f57626d7147713849526b53387841317872584541384630647a745958394d69346c487779675749373073747247647679356170524a636d55693739722b356b4765514f32752b574a53305474796b307047526951315256367637316d466f7832396d3947557a4f527461745569784571454e6838487a64313072573074783145504b52476b7a6c4a354e773544735477323976524331394d4e4f6e6a3059494d67746e633769364a796b4932394d59786a49785a347554544876566e705677334e72435569354966562f715657377374654d3432376b70534654626e70457361537144546a774b665a375335616a5a45704e35635a616f6a4f5576792b6143626f41626a62384e6376666f4c664661626873655a447a504831655837712f4247395a686469597a446a334e32486a324a4e7474595770617571556d6256636c7150594d67673545596d3373667549796b4c6b54497836756b645a6f3142584e3856746e624e7a656c35533069454a615979617279397561306a61327a5a2b32416532587a346c2f6d6e685a6a356875743147496a33436f2b61446d6733726c7263434575727a69504578627063416e413845396d4d4c6b4c746b6d354870633272684f6f4e6d4a4f6146736979317932566f3235526278793877314c362b4939796c726178734755336c4f354961586e4a79334242676a45326468626c462b72796e366e78496673374d465a6274666362692f4755353651596159786b514b7735664a6134624b33627465523147494c735a5956646879444b7947336a626e4b394546353664582b6d69446b6e6333627533323054714a7548713046704853446753324f5a785737597875695534794578627035666d5331486e5545307778546e5932764a6a5a727068574448716a3338554a624c566230516e4c714d586c4b524a5946365670682b6141656f6748613350355a4c4e767a757a74376d754e7654704c3963696638413272666373433945327031456e6966623971653541584c63726368307946654a4344444f3539746374585a6c72636f4745713042414d67653969506371495275546a5a684b556839784b64795a63757a616845634d7347774b31622f41472f3345493249774a695448564c41434950764d71664846614c3969463641684f6a6455577049455a676842686332626c3678716c4b486c655a46792b6e454d2b4f58636a43374e396f585056626b5a567836593438565a637365525a7543304a584c6c7a70314576496b68716b6e41664467726247303057374f767832343666654144386b484d6a726a73767574647a7a5271303952616b38477750652f795855337049323933526a35637533416f2f5a3276494f33622b6e58506958783753744134356f4d6c694d527449346558355939326c594c4671567a37574a4a48394b58686f5736632f787857372b3257706e534e586c342b574a485237767777354c5162414d6f7a49366f6767637454494d75774a6a637532435359776b4e4f7375576c45466e4e654b76334d49584c633458533173687048745358396c47657252535677784d356679384f344d74456f43594d5455476a5a4d6778584a587473414c346a6474616f67796a535172516b5959746733596c6a4162793565317a6d4241365943456a467150717069532b627130656e326f6b456d636845304570534d66646e79644e64326c7537497965555a487865584c5471376535426b74376d35755962614d79336d617a4c54516e527a4744346f334362556478616a4b5241742b5a456d56596d514e487879634c5a63326c7555497759675138456f6c6a4873536a595778626e4770387a78796b586b614e6a3259634547625239764b7a49546d6463744d6a4b546776456e444c7543743959502f41496c312b483468615474345330384c5a315237576238554c3969462b45726378306b65315547662f7744627a2f384151482f766b6b332b735839754c51426d397a784668344f4c46613432492b5a35396462614f3746504f78627554684f574e743950654751594c68766566593834514145354d59794a50676c536f4353496c756264792b5a796a4f4d7069476b6b434f6a694d44784c34686447356274796c433452574652386c5264324671345a463541534c7a6a4762435861506e787a515a594765347557544979694a5774636f776c70424a30392f752b525347376374576230597950546338754d70564d524c546d654430646450793436684e717847674e7750376c58633239765264695936764d3670526678486c77777037304763326a5933566d4d4a544d5a4334346c4c553541444776617434424b356d33323035583458514c674673532f35354f3734414d546838567532396b32625562524a4a694d654a7a2b4b432b5355445451344a6f30716c3135463042646d434972514a63653049786b33683936416157433867614463542f2b5a4f4b39666776494155762f415031626a6f505957673171493452696d68536e464a624c786a7a6a4657462b354172474a514948755246564a446a67676b596f4e56796a705a78454b524f6f6f44375970635479554a43674b416b753451597937555a4d4f39414d43636b454844466b6f4a7a524f53494c342b7851435741414e5551417a457166696c6d66306f47385650636935627172386c4167516345455a78676f37303470515030714e6d4544474f5243596366636b30346c466e71676d623549514a4646474f654b67504241517836636c4336674771707855784e4d55456f437038555278513745424a4a71464133636f306355514e56636b414242664d49454f6d4a706b55483144705151696c4d51684538314253696b6130664e424258484e4676677046335270373830454b454b4270496b4e324b5269634d6b4559594b426a4769474f436870544a4151574e45736f6e45563745326b4f53674b43714269517955676d736b514f6c696f554567575946637a305564462f38412b76632f42645552775a637a3065736234482f667566676736514c5949794a78514c642f4e46754b4263555231596f6b5652484241674e6168477155534954746d6745664336416a774b595a39716e4c4d6f4a51347141734547457134454b467046676767556b584e616f6a69635549484d4943656b634755616a356c5134746b70704277515148696f7864416c36664e4e426b414a39364171536e774e557458494343595a4b47496b692b6f4b4e6d674144427330434d6b326c7570514579515150676f446d554e525278434257634f364f706a7755484e51424244536f785243417258696f3252514674505969586451466c434f4342433243634d636b754f4b624641436f432b4b4c6b4f70703449496356484c4950716f4d3063716f4a5845494b4f706b2f6567674b685948424556716f513643564b6d436a42426961424141487158555a796d34305564427a3768663143482f30797567756649442b34514f666c6c64416a69674b444d6a32494d36414768524b4b413449436c6448444645304341454f4577775a43714b414b5971465369435964696969476c424558344b436969434f3667436a71494346447751643143674a436a714949426b6955564541354b4b496f41366d506169794b425a56525555514246424641754b5a6c4647515252526c4d6b456172714f6f683249436f55416979435a4b4d6f5645474c3155507470446979303271776965537a65716839726339733170322f384178512f6c43433142514b4949377155775577555165646d786669717a49783853756e57706f6b4947665936424a634d30514e49634a4357347034416d6a494546616577566f6a3076524b4e554b4372343841695245677834494a49667047435454717152554b3054594269775141427a6b364167616176584c67674152516f475147415542314376685143686f55514862536531454541434b614d54456153674961496245494d39633148454f6f444244574333356f43326e744753686f5847655350784b6b534a482b46415341685568696d4561385554496e704f43425453754368673957365552554d4577476142474a526a4868326c445470446a48456f363555484876514c484e754b7369324743476c514d4541427054464574674f4b68494f43496c6b674762657a496768363465394e4548784e525275583745454d744f4b49494a5a4267523159386c443068414d53526b6e384e557234694f6634706f7961685143516f68455970674d6f34495178596f4471656b5577417878435267554d47514e704f56475748314b576d33326c62347941792f657348713162564b7333656731774230694a7856707069684347716c63766b697868556539424e504842415038416b6d5a77365352446b5a3549474c4530435851575241626d47524249346f4247675a455570374f684c466769394f7a67675a75465549316f6b49416a5769684761426a5575794c48552f424c6f7177484e4d433143676d69716c4d73564365434a4e6543416b66676c63453975616e506a373141477746654b434e7878554d76714748425477315147484e4158346f61575264714253564231494a685248354956457561677771676b5877347142343468454446715a4b4149437a3438456b63776d4a316e6d70326f4a416653506232775241705570526b507152495a4248634d6953653548535544456e7651537663457238633149794455544575674569545559666b68574f4b5931533042617141783471617a33497a4162675755464b565151686a37464b4a59366b58475349427977514552644b375a5a4b527153695a4e69674c75467976565a36726d307251335038413467756c7164637a31516e7a396e774678766a48384548596e5357724d706156644d52694478376b73384d454169583563464a6670795447585654386c44787977514c4a38734f31523668306373556f356f4471446f76565152666d704b50366345414453384f534a722b4b412b4b44652f38414641776a785373514b706a4a775061714448336f492b6549527a5a534551675544526d49752b43576d536a3141516d41653541373855735a415554535379705874514d4930314a59766b6978493969704c705153706367345a5a4952716942484e536b636b45794b47726d704c7339676d456156784b414362426f3435714155785378445542546164526441572b704c505554795270326f67385543365145784e564930556b674d76636c616d50596a45534e537058533642626656696949386b65664a4b3158514d4364504c6b6c4244314b59536371507751427753366d48346f7871616f4949484d7130526c67446b6b6a52327a5435646942475a4e6f633039696f4453696d57574b4348536550747a524a656777516477796243704343614644485451594a6454356676526a51494343395641644e66617168414b4248795a4241425853736e716a2f4147382b78766556737258562b78592f55692b316e77492f45494d6e70464e77422f38414a2f38416a58667871754236535833492f77446f2f7744787276695164424a414549414f505a6b5a30553669676a756549554a6273524c687a6b70704f5046414e544b4d43464749446f6b56646e2f42417067636b5a4446516a394b6a4353414273305142696a526d5334446d674e4d425646415646614973435256424e4a48636f496830435a526f61715946414d7561597a6f704b714d6d79514b4d4b6f7545414b4f6c426f364270476e7456536b734644555056515263386b444173476b6c6c456e425351346f6a462b35424f58454b456b344a54567a7a554a7843434f4f304a706343686969315541774464794f706a584253514238534278352b324b41695455515036564467454b494a44465448463033687751676543434e70717069616f4f37496e7178515453525149346f64716a524951466a6867672b5251446b496d74654b417878356f59654a42427378376b466e4d705359355642524479787168684855666a7a5147544549417143543051354869676c417a39364c423144456b306f6941315167416a52386b61476d536b556b716c425957344a577058444a534a555a38304531505432346f6b56716f656d6a2f6770704a77514c486c56515930517552365a5a46704c6e5739786374326474627452426c6369316165474c2b314548556944334945414631686c76726d73326f2b58356b5248575a795961694d49353833576e613368756255626f7071792b667851573663477a524546794a5737467258393544714a6c2f5749634d634f6f5070596357576d6479646f57724e732b5a636d50484d30306a4d746a6c326f4e784439504a416c594c6d2f6e5a7433544f49383231707a6f524c412f50334b794f3476777632376479494175616d306c324d6131666c773979445737597369415a643635733935654d4c6c2b33434d725676563470645230346e686a373176696451423542413542496f6d6d7552366c435a76325a773856754e79344f656e5334377734553956752b625a38754f453453756e2b57493144336e534548556e4f494f6c324a2b6e73344b4f797832376d6d566d476c395673397442483831744963664e424257696e7456633646324e6a63626d354b6f6847306163684c34715774394b35636847376f613534664c6d356963612f6d4d30485172373054555946633037363659486351684532596b743164524558426b4d736a5170353775376376697a593031674c6d7162356c7376626d673343716a474e59344c414e2f4c797451682f56387a7951483664543475324765437373376d394b38647663454230473571692f366d77507355477353666d704c6b7564366b4c65757a353159617a716a2f705034736b734333397a48374b6c7470656177496a79786f532f444a304855776f6747777a4b77584e376573645534524544495230367574695731634f62664657527633626d346e5a6847506c327a463548466941634f5075516134796a63447749493476536c45644f5277794b3566702b36497332374e6f417a4d726d722b474f7556542b417a58554a456b456347685163396f585076546a3666654e776a6f75346a2f356777482b6f66454a52634f7968474d6d4e3638535a475649766d353452464548546f634b715578574350714f6d46307a455362656e2f6a4c784f7242752b6c63465a4739647433597733416942507779695841497178666c6e3845476c347972456738653368326f2b4c42637131664f33735061414a6c754a51725478534b742b36334d6230747559774e7a534c676b38744f6e4374486430485478775348706a584a5a6265366e63746d63496a7a59794e7555586f344c4f35616d61537a764a436479462f547168447a4e5673754e4f644f4e4547796973355a726c5139536d3975552f4c303343497447547a692b442f697a4d7448715a30324449346172582f754344574f717158564764496e44486b654377324a6a31433772622b6c616c30776c695a667149796236516531433776446274333551694359546950356e303438362f424230513570394b684a5749377263527543334f4d6573457761525961636456487a792f4d6937615835336463626f455a516c704c5642774c6a74425158784747536d724d4b4155344c466366377579332f6275664f4b4463514b424c417842305531634d3635726e2f65335a514f3645492b514b3439656b5a344e7a5a53553768336b2f4a45542f546857542f716c777155485341727a514e4b7957442b34544e6d4d6f784275473535556f367150714978566c766333664e4f33764165447a497969584441735158417a51616d664e474f4476514c4276496d396573376558674f71552b656c6d377131484a575232597458544f3330514d5447554267546b65526169445647597552314169555a5946485377714d4d31794e727572746a61325a6b52386f434d54314856576a384f373472624c63585a585a57724969664c62584b34534b79774162356f4e4f664a4f474237466e327438626d324a6b6154345a413467673143792b725142685a457871486d783152784c4e4c4a423054784353636844726b514930786f466932304e76416d6469314b334b496b586c624d666d71353736373971623837634749746b523854764941766c7a465367366b685669674b7573747a6458626c36566e62694c327744493343514b34414d5069726256303349435534474d6a6a47575874386b4673714842435567476953784a595078584773376d514e79786270637558376f457a48706a586a675a634174326d4f30386d3162464a533039574f424c762b6f6b494e67646d526438567a4a622f63614c74324d496d4e7563346e467949634b484c697259626d344c6c767a4941573774493165516f3963716a68377967337859684b4a4f69427071467962577a73333731347a694a487a4d66394d554856526c56636d4f3475574953742b4f354737355674364f37454f65514e547957757a66755175477a6567484931786c46394a6248477268427171694a354c6c7833742f7959626955592b584c533431485631554754596e4434712b5636394f3862566752506c694a6d5a4534797141476572596c42716c636a6259536f2b48503234496d49784335317666472f43784f6351444f6368785a7457484f6d4b3051336370777653494432357a694278306746427230736c315a6c563757374b35626a635031526a4c764b6f394e44575039647a2f414e386b4776467a6b45644a37507a57472f765a5275797332394477413147354c5455315964324a357054366e726a614d524856646678795952303475633630484642304e464b4978355938566c3265383837574a4e7167644a306c346c36687665717656322b316d2f384142384a785162325a4b5679765664376175375335434a6b35474769597a346b4d747033496a666e6275734247497552504566563769673073343544356f4e77574b7a764c6c7a795933496747384c6b757742695067616f5874374f41766c682f524565386d4c315164435666656f3457474f35765175573458597845626a36644a63787a725376636c4f3976434e7935616a487972656f6454764c546a6734484c4d6f4e33694e45584d566e733771335052475534786d5245365872554c6d324e78493278746262786c4f647835737741456953787a6c6b47777a51646f34707079697a4c44416a62586f62614145625a69644c667147495061484b726876705368435a413054756d31482b537466654f7842766f7a71456e553066627456486e2f38416b655350446f452b3879495a5537794975587264672b416963356a39576c6d42776f3537304778714f6144386b51664d694343345a7752374d73763263624d6a6373394673786b4a526a3453636932527977575862626d37597357544b4d664c61334845366739487762484c346f4f724c6e2b31434d3477385a5a3644745759376d394f354b473345546f62575a6c6e4a717762357173627358685a6e434e626b394a31597859532b495a6b4736556e524561305249344c4a3668586258662f414b636b476c394b6d6c3863446973553735456f62657941626e6c695a4d734142544c696863333834325a7a6c45655a436362636f76537047664e36494e77426a565354674163466c7462693947364c4e2b4d65734755644d73475a7758626a6a547357512b6f582f496c757255496d304830676c704d37506838454855456f366d707146577a716a4576677566507a593775354779496b6d46757333623675474c6f6a6636624d6270413879552f4c306d5452456753376e68516e6967364242505945757038467a34656f61446346375354626a356a327a7142485a78375562472b6d5a77686330447a4b4479354f596c6e7278344f4d3048524a42775130347244366a5157662f725773653161623977577263726871493170795158753353456b7159647a72425a39516c4b35434e7a5130384e456e4d53784c486a335a717558715a414e36496762635434544c7249646951506b4d2b5344712b4c424c69506d6d5a78544651416841704c41354b50717078584c3246343274767459414f4a366f6e75632f6774462f64474a7641416630376573632f462b53445a4c46383033446d7564486458783563376b59694630786a306c3541794468386c5a4c6458535a6931474f6932644d6e4c4752416367554c5a596f4e586d524568422b7249506a78546e673635486e7975334e764f41477564755259306948303936756e76726f7458544f493879795271306c7759304c6a2f532f755164436f7954654c386c6b6e75352b634c64734f42447a4a532f39767678374576336b6a7472563968717565583244553379656944627a2b4b43353874786675584c6b62555936626265496d726746716650344c5674356d2f6268644930695551573766626b67764a7032704a53454469415a4767346e674678724e386a7a4c4e716c79642b3548575230784846384365413472655248612b5461684545536e7063314c73532f6166785161326571494863755a4c6533674c3179455936624a6b43354c6b5272776f6561736875376a326a4b49387136644d657271446877345a712f446d67334570706355674a63486d714e3838747463346558633766435547676451716c4e46692b374e6d336173784d64636f526b3977744541416538386b6b6655746474394938335835516944306d58613244562b43447041765869686834734d566c74583773626773336f675330366f796834533249726e565551333136567547356e43486c793061716c3630635a64337851644942716f546c474c526364574862795757562b394f354b33596a456933703161697a6b31594d3764764e5a7a756864473133467769476f794a66772b4751785164506b4d55577849584f4f397551736e63414452714443757252523566694f537575626d517554686269476862387955754a4f412b424b44584b4c3830474937466a6c764a787457626f6a31584a57676541317175573533457a6438754d47746e5431534e656b467350696736494c6841537734717531644632334735476d71495048466c7a397274626537742b6666674a6d5a6c347670416b51414f416f673655357874735a4542793365636b3776514c687a75543871314878536875664c424a7830616d632f69756a59335677335a574c77694a69496d44476f494a61726f4e524647527a51417a526b514f6e6b676b754278586a3467364e7a2f3841566e56657635354c787836596270762b354a42374730503663446a30785455506171374465584179716445565a687a5154537853794e5278544531624a494d616f476b536739464a7a624a46786a6b674a36714651734d616f4546736c4b6e4a424736615949526a453139366e636978504a415342334a5247726f53442b394e6868376b454b45635641484b6e424130556f624a526d785259486c7751434b6b526b6f4f616d6d7242424165436e68376c4e4c6c6d523074336f42526e7a55426f794a4651366e697743425150636d4d52694d46497366616945692b50375545306f7872315a6f427a375a714f79416b6c4179306c476e63695147714543467a584e4d426d796b7149697051414e676c4145536e48785245326f674271476c6d6943394971533549427345455149645238776d2b6141534c647146754a6f69497851636b4f4545724768546431454132484433714947315a5a7161754b56684b546c51593077514d77634c6c656a6c7875434b2f313769366746517564364e4567626a2f414f76632f4242306345774f704b777a7a5443754342636d782f425349417778554a717a6676554441494144787155544b744641457a44443271674652584653526646445345445443694276462b434177636f766d6832346f4951395548344a6e72324b636a6767684c5971664d7147694a4875514273676f49736356493473454a414371427741554749557877554e554162556a7063756a515949476c454244597159393647564b4b4563616f43774859674d557955466b414a712b616862464e516f45684158424b696d6e6767446d676d4a52626d79474b4f7169434f687a52504a4c476c53674a475a556f6a79552b6143486d6f414d55424a3055456444556955767456417a4b453542516a4a6b445173454244596f59464e4a4b4d5542484e54536a6a52484446427a726f2f2f654e762f77436e4a644446632b546a66772f2b6e4c356864427149496f6f4b4b49492b61434b556c413156445556555a46414855354973685556514442484e535846464145475a454b494370326f446d7056415755555a514949516f3642526441575155555a4245455645457755555164424454425442454b424241677a5652554b416f46525474515146523145447751454d69794343426b714b69434b4b496f4169676f45474c31556d4f316d657a356861624161455279437a2b71683972633746707346376365774948555552434159714e6d696f364467454e323856514178726a2b43767542366363456747762b624e4258453559493643354a78346f534553482b534f455458464172505651765676676d6a456745592b334a5178414e4b424241432b576c515249424b416a5834636b3067425534494678484434706a496a48344a6e4a49416f6c6c3166796f4143344e4b2f4e504a38654b6b5748554d6c444f6e6367414c702b6e46674368556479576e7651506249785569787846487853674876434d503031514e7a51456d716d66494445704b4e306f47456a484a43427056414567736d304d5834494953416345776b4b555a6b6a2b39505476514c467355596b676f61444a503141565141525459696972624d7034344d654b434757535a71315179633459494e56386b426b49782f4467697a395743456d474b614d587971676c434168555a496b5a6d6a494541687a67674d6a4c4b6e79527778516953315069686f632f42415278436558546b2f446b67483755653141706d2f6879574c31622f6a686b386f785061746f57483161345957346d502f4148423845473245636d373038545244444874526a486745456c4774454e45664677554c56343831496838554549365563525244476b6b4445484448676768664671706e646b4a536468674648656f6f79416b4e557039516653716e474555615a6f445638554736745279522f4e51394a726967424f5a55704b70706b6d50596b3149446d32444a674e4f585968416e484e48786e73465545642f7855723950755177526b6757716145654c714d345a416879674d6733745651427a77555a73554a4444546d676d47436376693145754645725045344947444e52534b4d533954324953365a636b425953446c5368554d5878347051586f4d4544535249716c503756483148755152314967674f556447534969395367534a48747854534439516f6c384a4c4a3578456778784b41616e396e716f33755562546b45434f4341414545736d4456616855306b39696a48356f495769674976525139574f4b6e596759416e707a584b39582f35396e7a75482f3342645855486f4b4c6c6570416663624f426f4e63766d45485675454f6552556c4a715970707539506a6e2b4b56754b43444d6a43694a4a6c34765a6b4a537177526b4e52596f46354b41616b3158514130676355435249647330306142776f414e4a52624d4946664d356f39334e51764f714c456e705149596e336f796c524f655645686f5851453052505046445366715268457678795152436b76666a7a55466535527a3855424c2f586c5652546d536f4b39324342596b4f32616433444641566b387355424a793342417a56516b5968513570516759564b6d62452f76553068544d6f494b7076594a532f46466d514c455055354936584c3571507839364a655863674f6c4b4b752f7552496c6a56386b424267346f53674d41454a4876556a576f39696d71334a414a4d6f6549785230644b67476d754a514155614b576d4a5261724d693742304162516355434f4862564e714431556c4c4a2f676767516941366154346e75556b676d6d744573514a5959594a69486a6b36574d2b50765145523149677469674449646948354947706b674b6e6d4647646e2f4147497341676e694b45682b616a4b4d51613969414f3563596c5a2f55522f34317a7348344c5671617057543149662b4e6337507951597652782f35493465542f7744457651796a6d463533306f6e376e2f38414d396d4d6c364e7963454341487455557a6f6d59484641756f345949386c47794b424a514f614a644e464b6436626745434f51555454424679555458356f41615649716f47642b4b4c355a705454735146744b6a48414947546c523646415a514b6a67314743556a33496954494358532b4c45706d53786a576941694f534c6b6f4f3739796943454f4f6b715a4e775249616943416d52354944704471466e35496878685241422b6e7652594e37555162494b474b415077545a71475169665a314877514446456b643667444b4369414f6f394b4b61736a697071656943416e504a484775536a677367426b61494933536a32635573677068336f47443147534430434a777032705764754b416838446769526e38305357516c4a414e52344b4176314930694d79366a63454535594943756149664244566b67554f3554474a644542304367424c596f366b5a527951714d63304269582f414355636b6f46544842414a4f4b6c4d682f4536674e55426257674a55557a634b47676646414c6c596d4d6363466974374f6342743330765a424237644f6d6e375757326a706752507451632b37744a43394b3762686275655932714e7a49696a6773614e69467174783875414641526a6f77376c644549534e55475054755936725544435971524b345a416763774866686b6b47306e5a6a61386d54797441784f75676b437a31717a5a4c66554d324b6a5578777951594c32777558724e3355592b5a63594e58544552774473357a4a4c5972526632387274367a63697746737966696455576f723949495548484e42784e794c6d33735872516c624d4f73395236687172704d5771613072334c715770584e666c6b4e626a434e545235484565376b6e6e7437526c726c474f735631474e6666697252773967676f75575a5376517568744d597a69654e57624c6c56596f656e53684339445544726a4b3344495267585948764a3767463151582f4144536e705a426c6a7470436471644774776c4758623038734b4b7a635175544d5a3254574c764758686b442b57496f7274494b4c673430516338624b64794e377a6d45726f45656d6f694147474c4f61315273574c6b5a44586274414436346549397a4275645374347069706779446d445a5878616c745961504c4f6f436464516a4c4561577163574c725244622b566638414d2b6a797862353050746d74495969696a7437634548506e733543334a355269664e382b4a6b61437441666533795173546c63333271656d6c7075673667486b4d54784f4c4c70536943476e55484c4549517432374d57684552346949414655464e36775a334c553359514a507669525261454c6b584b4f726c5242787836626345497730326e31412b5a6a4f58552b4a446a336e67756a5a735374587274326d6d34594e784452415632594f495269487851637931734c6c69454a5739506e514d745843555a534a306b732b47464b46624c4679355058724441536147546a69523276334b344164366c55476664574a58346742764843662b3067382f77536233614863615a78414d6f4855497a384a65684837654b317652367070634469677754326876575a32356946737962536265524651356f3963767a5247337633726b4a33744945486c30794a655744314159593057736371414a715946427a2f414c475a6749306358764e37745474686a38466447784c37727a6e476b323477625078452b3671315964714436616f4f5a5030325a74546938542f574e33535430794476704e507a716a61394f506d544d343234516e62387378745561765948706e5467326136684a4e5069674f61446e6262613349474d4a51744e4836327157354e51393631627930623976514b64635a5677365a413831654139596f534f492b61444e63327368654734734d4a6547594f45343836596a4c334c50643256793562765142693979635a7837426f782f774274463068376b736d6955465632305a58345850706a47556639326e386c544b4e7a627a7558494d5463755159566f47414c3847597259347a55784b437263573579675243576d56476c6c546a797956567178656e6446362f7047694a6949784c347456324841552b4b312f69674452766b673533326534386e3752342b56346464645167636d5a6e7964317068594d4e77627a6a526f6a456361452f6d74455454327855783745484f6a734c6d6c69592f382f6e66365866686a384f61306e62794f354634746f38737750467a494873576744754b497267677a627662796e4b463232514c6c764456514548454676594a4c56752f636c356c77674141786a434263567a4a5964314672396967677753325677374f4f33654f7361484c30365344772f42577a7358374e366432787049754161684d73786a6e51484c454c5a395655423076386b474b3162756266525a704a2f4d6e646e6855312b5a3979626662653566467279644f714534334f6f6b4f4144774234384672464d554d51677a69562b344443344c624553776c492f3841776a76564d747049374b4f33424775497467384f6b676e4c6c77585164365a684b525769444a4f31667458626c3362365a4334326f544a4445426e6f4437766974566b536a4143354c564c36697a4f2f74384538596b4b415551596f2b6e76627557376d4679354b35486b39523245494378657543304c70695a57353670534831426941634d6131795733484e5350415a494d45746e50796239716d71354b354966363848563932784f586c61572f7079633967695254333573744d5848596a545452426e3238703362657534474f71564f54304a7871796f466e6332707a387279794a793152314754696748446c7857734841706d6f7944443968495777495365384a2b62716b4b47654875616e4a5757374e32567a7a62326b4e4852474d616a715a795454677931365232494f4233494d50326c7a375347334a4771506c7563756d5150344b474d7476666e64684b332f556a45796a636c70493030656777396e57774238416c7562653164593349526b32476f412f4e4278397166364f316a6e356b3563794f756f354662547462305a335957784454644d7061704f3854494d614d7877354c5a35635249533039546164576b596348526d526b675862773871316274794e5978694333494c4a59733775784577674c6375715244796b5045536630726655352b77556b4379444264327378656c656847334d54413152755a534648425930624a5339745a5338716352445862445369593942315974517375686b794e454743486d32744d524332444f594245425152626a53744b5578594a39395a4f34745373774c46346e7177704946616a79524e6578426c3952736e63574a3259477368324c503672596a646c626a45744f524d447a6849505035426452686b715a5269535a734e66367332375546473532307a4f3364734e717436756d56413067783438736c52506158705276367a48566441343651524673665a2b41585362466b6e7a5155334c42755474534464424a502b316c6833516e74374e2b3171742b576463764631417a717a5a6e68587558574e615a704a324c5a6c714d493676314d4e5876514c7434364c635846644d666b73304e6b396a795a30496c4b63544836657077584f5965767557794e616f756535427a4e2f77435a39764855514c2b714f67787a6b6163736e6668334b2b65306531626861594732596d496c67644e4b39746539624a576f7635674131445050735130366b47613174702f63472f5053503665686f315a69342b664a4e756246793459336f4e72746d6a2b47514f4950346331704a397967446a7177515939462b5a4d3772523654474e754a63567a4a59664b69535778755332317578545844793334644c50566c767a7755487951596a6176573774793559306e57515775466d6b4b4f474742626c564333744e454c4d59467a626d626b70537a643349377974774464716d4c6a4a42547470334c73544f63574c7939774e48375173747a62376d634a574359536850554e636e31434d736d7a497971467650536f7a67494d6c36786474334266734d53492b584b4d797a7879494942714f7a4e4a505a334a327943592b5a636e47636a3949306b553977377975676348514a5a426d6c594d747843365044434d6f2b396d2b53356d36453976744a375947456f766f6831645a655868307434765a6c33485352735778507a42434f7639576b617373304352737947346e636b326d555936654e4857543743586c614a6164634c6b726b58724534305063667958533149596a6d677844616d356275516e4346765848542f54716538734f5650696874624632456f2b5a4330472b754f4a2f7744534735314b33654d4d46426979444c766246792f434d625144776e47665534485365784c4b316676776c6276434559474a69384a456b484c4542612f62696d6d324b44465a735849536a7274326733315278505947476e6e55716931735a32487443467563484a6a4f5869414e5749617037777570626f67375639765a30464675374d334c676b47674342436a4f47424a37484e456c7762694535477a706c4765486d534930486b774e4d326f745438536f476271515950735a32624e6d4e71516c4f3066716f4a59673857787069696474647665644b656b537532394141656847724e75667a6f7474634267694a494d6c7a617a6c4379496b6172636f536c32526951576f7339305432336e614a57394d7a356b745a72416d50445043676f756953516c6e74375630363577457052776c4b4e55474c5a324a4e74376f77686259386572546c334b2b335a30584c38376d6b77756166647061727261773731544f3347344e4d6f76453436712f424268394a7374614d70456b5436516339454f6d507772336f51326d34386d4669586c3662636f645856314342344e51747a4e56314d4d4d45432b51515a724f334e7535646d54347944482f61422b484e4e7362457474596a626d515a526a6b74583871724d64586167785739694a5737747139555475546e30305a793450614642597679466e7a6a4856626e714a2f55474977616871487935726470436b70667351594937533535562b3345676d36626d6e6b4a52417237464e63326b3551735242445770526c4c2f53474c4c573961596f6b38554657326c6375524f736152716c702f6c77474f6179583747356e43646b474d6f584e54536b37786a4c454d7a467670714630482f4e513668676777334e6a3157376c73526c3563664c30334d44476e625875556c745a584c5930364c64794d78636a7048533434353144677264422b35516c36494d64757a647558764e7536515967786a4750566a696342774348325677375333593664554e446e4c70494a2b53326b30664252756c6b4743586d62652f636e43554e4677435568636b51597347636352546c32716a5a62547a3976747053414d626571556f7947496b434238335853755762647736707745694f4d5856724e54396944446132336b323557356b655239426573596e454678674d71344b763075772b322f7148564b376d33306761592f41503372664f417544544d416a67512b48616d624c6767356f326d344d62567557687255725a3142336b49636d70547471744e6977592b64673179547837346756397931446b6c7a716754613254617377746e474d5978706736795173376a61366f574e4572645a5231456778664c417548777757384f4551345163383747596a616a45755933664e6e49306339542f452f745276323532397850655261576d79596163535a50717757384a57417971674673543052387a78734e5459506d6e2b51356f4159545278656e375545664e654e385564772f3841335a664e65795a2f77586a685347344e4b584a664e42374379644e75332f4c48354a734b594f706248394f4950365542554e4a42444a736c4761675235596f61542b434274564b7367344f4e557463314f7a344943334371686645594b414d5841785245526d6756386d716f45633642314b4371415955794b6777717a49365269676355424134565570674548636f6949485469676d6c2b6c512b39463674464155397355414163313853614e427a356f554f41525a734541624d594a5a555a315a6e56445677515344595949434a4c6e48676f7a555468326f6772494a79524d574f6f6f41356f797870556f49366a47574341392f7952617665674a4c484251486a696f534649316f676d64505a6c44496f6150696d45754b42645043694950425375614341416671465578507855303863314148514d533652394f53497055715071445a6f49334e5357426646523835496774696745692f687952646d644c325970764648356f4a4c542b78484b71585378633936594f5167674f43357670474f342f77447254585369434a4c6c2b682b472f77442f4146706f4f706955496a48676a45686b4545414c2f4653497a497a52384b6a594949564356425848424b41516761547377785550785178777852774c484242412b61684b684c303471526942676745666b6d7778532f7a49747171554563446b684b4c6c4538635561646743436153425771684355476e4e4d373969435057716a4e6a564152716f616c6b41474b64714b444254456f41526b61714d3667425a33554341434c5956545a4b4b4946694b55524552697079434942446f493755525151484c4241574137314859495a5552624c4e424b71525159596f674d67504a54484646364a58514268454969714c4369484e4247434c5655557851546d6765534950465273383045554f4b67446f5934494932515242554846434f4b446e33472f754674736f483856304f617733662f76725a48364374374942676a697056544242506b6a676c37555851525146384545586f674b474e4558513755455546436945475146425246414169676f67495555555152525252414556436f36415949347146526d5142314d45564545523745455345415543696751464246524245427a525151526c455545456452525242454478525a463041555255515a50556f673757342f77436b71376256745150384d5652366b50384178726e4d4b3761307332322f544835494c564d555541674c494f696f794468584a6b6856344867666d6d4a716b5947764e417363783465614570644c55354a684567367358544270426b46624343634148386c4a786248464965716b554231504d634252516952476b59714768354b617741342b48742b4b41776a54554f5078555958415a4442534653774e564a566342424978423979464749465078567a7668676b7049592f754343644c6871664a467967474e564b41617667676d626345344c744a4c453642795278713643527055346f474a79486369514a4d706a794b4361555445505253754a5244533755414135552b4b444e5165334a574f2f6844704f5951434e4f7054476e654659412b4b5638737364534152775a4574586a7852466355544544464243354a48754b476c7a5432397356496879794a7851513550676e6b41497539556f35424d44724772424257484e4139557a394b684c356436426e70775147445478544f596e4771475341496a5641586f6a712b6b424574345567704673386b44412f5438466b39562f346742537132554e566839576d316b5a764d4e336f4e3577484564366a6e434f4b55436e42754b643041474743584750596d7133486d6e314e314242547065763777704b4c30656966546d554e4c7670514c454d695a435478556256514967645073364168674f49514542324b4574544a51596a4642484a6f6761467a324a6d2b715866336f452f5561494a6f6952524836575259354b417567536f785474457533755142446f75676772336f416d564572452b48424e48715141304b497969557a31655655754e6539424a593952544767667555656a4f36576a3051467456455454455a5a4947534d697a5651426a334976334b6166705549695541787871464939474b6c4d425134714774545642477a5549786448525245676d6f51426d446f6e2b476955436c45326b737a494569474c344d707166424d416742704b4341686e526a3769794f6e764b4566636742706a38564a5577716e6f4d456b6f49444768525a67324357474b614a4d6e4f4842414771793566716b6636327a664b5a2b635631744a2b6d6e4e63723164687564706c31666b67366849713261414c4455724a45467a6b6b644242494844424579634945616e41556d78726e2b5341766f4f704a7271334e4e494f66795550735543344f6e6b34354869674b4b4767423976326f42705062384852305a6e4d706a536a3446426e78772b534257484442453177554f464553576f505a6b417770696d41496f4658455554567978514853346f6853436877702b31536e59674c5537314866424238796a452b3541754a55694d55635a664a4854576c4545706968474362773471452f703936425a4f4d464541587854476b766d676a356e32375649673969494473675045676a454d4558715743584c6d6d4b425361303976594a6a46716f526e6d55496d5251484b69686a6b454e4744464d5a4156515168694f536766764b4558784252304641473146734752306e4168466939557668515131374f534e7670534175656f7078587061694159554b4a6c2b78456d6e596753424641754b597843536e694743643877676a4d4b5a714370626767475a697949427937554566556a494d65784269693742686c337536416a71774e554a73675a5067706c785151484a3953792b6f782f3841467535555771546e71575431492f38416a54445a666b6778656a7448632f3841356b662b356567314f7542365142472f772f6f6a2f774279372b6f4f674f6c30486349534f5a4e455541716f432b434d612b4b7055314e5641524544747a556658324b556a56514677674448334b56714b716154464138415542443449366d354a514f4744496b463634494a34614b52414164527731564b416f4a69707166735245633143484770424d6350334961636c4d634561653541615643534c6f304a5a5175394545375558594d707a4f4b6d49354942584c46416d6e56696d374544466a544241666b6758666b6c52773745423757524878536b5a6f6d754171676b51414477524d674b6f5539365674557578424a4638457771374a7578426e515368493936516c4d785a466d78514b574a544541596f426e49524d584151445656796f506346506a565152444f6768427971416f6134594b42387543674661466b456a496c4534356f434a5a3048717751475441305241397855632f537956366f446b347156484d714947715a2b4343454f6c4844464e4c676c6c68326f49326e7452696173555256526d484d6f4649365843594f3961386b4a4536555a45484c76514c584b6e775447726c522b4163494442414e595a6878576537656e62753234426d7545787734524a2f425733376b376475553452316d4970486a37646977797632393366736d7a3161444b6338656b61534b392b53446235397369552f6f6871315577305938306c7a6532594e716b326f6167474a636578464d6553776d35473162334e6954696335585447504554464432664a57325974667348685a6c3365446b676264377a2f7835337245734a5272773667434b3455507557693176624e3257694d74556d66444c69446e334c6e626e2f69334e48653744767242613931712b373235792f71762f414c517943303736774a2b5871712b6e6c71344f7a50796430313765577475644d7a58476764755a62416471346d336849576874623936555a4f787461512f6978423075526d377254652f6f6269374b64303259334e4a6a30786b4a74467354453466702f4e4232497a314d52574a384f654f61356b7439637437515868454738546f30346877613037415673326c6b57724d49784a6b414f6e5651746c536977323755767670514936494756304869626a4434645344544c6461353259323261344a53504b4f6e3879452f33316758504c4d7570394f5a4772672f68666b3772483662616b4c383479464c51387148595a47582f7430685577755268737a744a4237395936474c6d57716b757a5056687a5164586362757a74756d34574a7744456b3977426f724958493372596e626c3053774b77473548613769553735365a5734434d2b59647837363830646a6346754c7a476d4e323750796f366341666b37456f4c393775447437656f65496d4d512f6847716a79354951382b314d43576d63446a4b4d644f6d6d6453345437753535634b7738794745382b6e697a5662677364716473586f445a534a682f3149687a41427566684c35424273323877524c54497a6155687759384d4d6b74692f4b643639626c3462656a5454395558507a53656e7542644a2f373133334f714962614e37645839656f5668345a4750304467616f4e566d39493337746f2b43417474787137706f623678654974776b435438573445674139797766616d4a336c75302f5662674936704534786c6d66594b53763237384c4e717a346f797479616f4d4e4f4c384f484e423064787542746263726a4f32484d6d6748764b7a794f3773744b656d3435416c434553476667584c747a4743663147334f35594974683550475463644d67575663765534587449736464776b644f476b5a6b306f33376b4148714675334f37473950777a36614f306449344444477057712f7537566d324a6b304f444233344d324b7a324974397878316e2f32525757795a576f3761396470626a417866394a4c4d2f79644275472b744332627a2f30342b49352b356e425638377359536a475a61552f434f4c56396e584833455a37713375626c6b61684b4d42482b497878492b5134737235626d462f633765566d7352356d6f67466738506e7951625a373678626e35633573634f5078774237537241534175494978454c7533765870514d707a2f7061496b796330496f5358346a446b75764363435a576857554e4f727677376535426c76377956766478735538715559317a31536471383262744b50714f396e7459783873445849313156416a5145355a6b4a6478596c667658595945326f615a5a4169526233465a623070627262334e7a4b4a6a4b5274784565555a52663841395439774344715376516a646c47556947743674476d6a4f65723847644c62337469354952747a655576445173652f422b574b7a626b4837693749662f77424f3366716b713577503232316a776e747a7a43446f57376b597a756a572b6e54716952344b506a7a787a5173373231754a614c63772b4f4244396a732f6373553579747a33686a455438485361763044325a5657376e6e626a6279452f4d4138797362656d49365454396e7651644537327847666c6d665834655438436348354f6e767a3871314b3447654d5a53354f41754c433345573562612f646c456b796547675665547544706376692b5863757676663841376136572b69662f414c53677474794e32455a6e78474d5379716c76624e756569632b72504d4135416e41486b7174727672457263496175706f78384a783979353051495175626539646e41796c4e37656b48554a4845644a6b583758434473626a6432624e4c6b6d505935626a5146687a5432353677444575446d7558632f3866637a6c4f374b304a5268706d77494c436f63677478616a7254737a6232397533596a496e56726c42343653637a32592f6b677576337a6275326f696f6c4978503841744a5276376964715673443635365a646d6b6c5a393962467935596a4a3231796653534434546d46586632734c4e32784f4f6f2f3150716c4b51384a346b6f4e6b6478616e436377656d32576e4c6759346f5864375a74694f755869476f42692b6e6a514f336146673356695562357342784463615a486c6f386676444b345859375864584a3370615933497830537936586550626d79445a4c635777497a6a4c2f6b496a4134676b75684b39473349776e53516a356d6548466373514e757a43374d615952762b62702f5241367174337633717964775837397964737648794e4f726d43634f4b4462623339693770454a2b50773473652f422b574b4e3364324c4d6843636d50437070784e4b6436787a67527474714f4539756e6a66687472312b4e796b707931523666454e49444469324442427268754c647778592b4d616f38774f354a48643235516c6431394d4330706378375a43764e63364c32397059334d5231577744702f6d476b2f467663696473624e794732786a507935533762565a6637756c42307232397337633662737134737a734f4a6244744b6135754c5671477379476734484633346365355a664f74375463585a582b6b79306d4d76315230733363636c6c74776c743462653564426a62684f345a4276434a76703933776442747637775432313235596c31516a4c4b6f504d48386c624863516959516c5763687177393577707771797758794c78763372506738725271796c4b70707859555675313162653842644f767a59783033446a3069734477346a6a7a4b4470413572506175796e667532704e70746932522f716433553347374f3330796b50365a665650394842365948344c42474d747a39314b31555849786a4357446b524c74373264427673373278636c35634a314f464b48734f4237697279306539636d642b3375593262646c2f4d6a4f426c466d30434f4f72687735354f756e5a75777661705150686b596e7443436947364d5a336f586d6a35665845345041344875714368747431726a447a32684f362b694e634d512f4e73634658366e594632566b6e4f596a4c6e413149504c70513330764975324c382f2b4f4d7069557547714c422b2b6a6f4e55397862674c6a6e2f694771644451462b566535433176624e3257694d6753634d6174774c414875584f7533504d4f376e44776d3344547a365a594c5a754a442f774162674a2f4b425157584e3759737930546d78446353412b446c6d44383170464f7a3831777433754c6b343769416b4c5a3675694e743554476c7452505069314631396e53314236644d666b67792b6d62365737742f3168706d32716d6365493777782f61724e7476424c62432f66496a346e505a49685939705a6e4c5a327273502b57324d5031416b76487648785a56574b375378644d54706a636c636d4d774e55717479785164543771336474546e5a6c57494e4d434b4849682f67717472767264324e754a6e2f41465a776a3379594f485a6e66454b6d37636875627337746d73425a6e417947426b6167633272373074364568746472796e742b374242316559574837323548646e627941387468704f656f676e3467484a613458495848306d7344706c3234726d33725a75587477494471694c556f667a5231483969432f653732566964753362784a6a726641524d6d2b4f58595666353975334b365a537041526c4b4c65454d66652f6575644e3774763769555344637557744d546c474d67422b4a37303939395738664f45502f624a427473623678636d4c516c3148444669324c453050637063333169334c793554446a7035422b4a774865565465682f3973325578546830535753396668613830577a31536c4979323979477257542b6c717365394231764f416d62513851443967792b534675354336444b4a634f5939346f7364793944613776586336424b3345413431456a5474717250542f7744696b663841356c7a4768385251474f3630584c336d6b4333613031375975653076676762733432664d7648793955714156494430427871632b44386c6c2b792b3576333542347a42746d4279456845476f77507537452b3576486357476d4e4e794d37596e446e71487647594f4344546433396d795a526c4a705238564a466e7277346479623736784b5974695131797048676639516f35344f36717442747a7541324a686c2f417373593650543751694d4461376a72446c4232504367314b5a4a593359334a4741786a306e744b7a5433386255703237335270384f65756d58504a6b41322b353879315a6e4b5447356b4253527165626356614e7a5a6a447a444c6f6654714c2b4a323463566a733270516873347a6f5934387567717362633362383974496630695a3333357a697a66376a4939775164575636324a6d302f554271505a672f42553239375a756b51684b703761396a6976633677517433647874723070672b5a4b506c4e2f4a4776766b5a4b79356674376d566d473378684f4d70426a30526a694477344d67305850556476456d4a6e345a615a304e447a70547477577356356a38467a7244797462722b65372f3751745778426a743750386b502f414768426e73584e316567626b4a57774e556f78456f6e434a61703163735756316a65783345625a50544b3648694f7a4832344c48746654725734736e7a524a35473539636839527964766545524d334e6e613342485661616375794e4a4476446f4e6833566c35514a625159786c51304d734f56663371337a6f786e47313955716a6e7078584d4e755932666d73645535787679476261676668466150506866334e75647671694933486b4d4d6b47386174504e633235366863477a462b4942764536644c553142336f2f496e46644333646863694c6b4338534b4c6c57625578765a77503841783235537567355063306a34646676516254754e55374d6259667a4162683552623879464276747672386b7a3674576e5048672b44386e57543032334d58706959366249387148595a47587930724f4c672b304f306b48763168356565702f46325a7667673674376357724c5275466a324f57476242314c6c2b42454a6962526c4b496a4b4e64524f5866384f4b797876513265357554766e54726a62305350384c67682b4c315a5a6843517332355943573545346735524d334162346f4f6b643361736d354b5536514d64516277754d4d4b766a6d6d6875374e32666c786b386a7978484c6a334c6d62794a4d6434414d664b2f7744614674336358334f324c5a33662f61554675377654735145774b6d64754e655a4157686e3746683955496a6169526c63687a707148424e63334e7664323532724d6e6e4b45745069475859676531753976656c6f684e7a6c6b4478593448754b6c7a65324c5539457041542b413754674f2f46632f61786865466d3062306a4b426a4c7974414269596a41394c675a6377717151383278647653746d55356e52704231695836656b6b30353035494f362b4c34724e35736f58764c75446f6e463766614d596e74465172624e794f6f326f6e71674936752f44354c4c36764553327335696b6f6455644f4950376e514778757a636a637654614e6b486f6c78416f54373846665a3364712b66365a6378787842397859725076624769314151424d4c63375a4d5258706a6a544e73557076513357356a50623168434677536b4d44715a6838485157322f55747449786843645a59596745384877666b61713639764c57336d49544c535a3278707870674f31632b4d662f336661444f6636582f764374462b473333643656366e6d43476739675a687a664c47714462627677756a5841366f6c394a374b4b7547346c4b2f6574795a725974366376452b4e65537762446466623757305a7836444b34382f3064556d667477664a535566756675726c696f6e434d596b66567042647665334242304c573873587a6f684956776f7a6a6b3472334f6c6e76724671586c546d7848657a3853417737325757356674376f325957664847635a476e67694d516548426b74752f623268763237395a476379497434784a6d626a7735494e74336432724443354a6e726d5839772b474b7473586f58343634467868375a6772427449584c64797a4335346f32434437343571375a55755879584839542f414f474b4278664d4c306f53595145424e2b38382b537247354d72553739772b58624e594e346848696533466d6f7339375a513357356d4a7550366366667150636577757066767a753761396275427274754c454e535134783548344769445a6433646d7a4952755361545067645248454d6848314462466a7242457338753874527a785a5677482f6d452f2f4a6a2f414f38724e7030374c63446962336655736736306a3372504f394f3175495735743556774e47584366447647484e575770786b3170336c704570636e564871554263323977357847714c59366f314243413274775a7975546b30624d447045754a48694c384d683371797a7662563755495363674f586f5737434237316a33646752326362646f556a355a365135594545307a3438304c4974337962677647374b4d4a52384141597469514258436a7567315233316939417a68494745574d6a6b4f312f336f324e355a766b69334a7942774950754942626d73676d62667039733651656d477255484177636b6373554c452f4d33496c356e6d44793564656c68346f2b394271742b6f324c6a43467a783459733535345079785433393361734e47354a70487670786f4b446d567a77502f41746a6762582f7642562f6d78327537756d38644f76797a444e326a55436d4c35633351624c462b4e2b496e624c7863313732576133633346366430577a414345394931524a2b6b4839513471656a6e2f786f64732f2f664a555774763531362b544b594f756d6d636f6a777834494e646a65673235547645526c626b59544f546a6832384d636b6265387379684f657277566b344c67646a5037555766655247317351466b526a4857486c4b4f6f517a315678504d6c5935457a2b346b5a363373394d394f6c2f46372f774155477539766f334241324a762f414662635a4d4d6a6a556a35565732463632626874784c796a575134507a2f4446632f644456743976434e44727339517935743742576253344e70473562762b4b4c33444c39635439583445444242766a564e34756f4a526935524131565144555161356f6c454d67446d454179397346342b465962674844584e65786751656b597278305a5044634844726c55383251657774536531427344434b63794743727444544349793078444b77454f785154436f716737315a4e4a7a544e4b50315a6f4134787955636a42456e4a4241644c55514558726d6d496442754b413575564e4e43446955727455344b434e45445056796c4c6d71495a30584a354d67676349306955726b344930777951516c687a53346467554a31554b4e4237635545774e4d314f315358464578594942454e696d4c6e74516b695a6153676e38796a36636345724b47626f435975375971596d69684c6c6a6b704844696744596a7651434d587879525935667351516d724839696a384647716c62394b413043626970496c4b33444641514644787755306742515366464151636b70424134707961684277527851476d4f52513078384d6b57314a514b3178514767446a42413169345548424e794743435335596c514e334a63574152426247694273634455494f786f7071634f684a415948677562364f4747346a6b4c397a3846306f68633330696e33482f774430585077516449397167426270526b704769426449795550735557636f6b494a71436d4a513031524162464142484e516a543730413873364b4770515349306f754863496e745142484241777837557349315244414f31564351376f4a6a6946474279644c4b6a464e5456524143433146437777554c6c474c674943517751645174775139754b43524b5a7156526350525241476f794a3663457268516b6f437967425a42514f676d547143714f664e427a6a6b674c316f6752376c414f534f4655414141524f4b6e69726b706967674c31557752436d4b4150536d4350615541516a51494137714f364e5543674a44714d6f4d454e5341714243714c6f42696f36676b6978514149752f59694543516735397776366843502f774173792b4b364b35747a2f774469454f486c792b613651514369495155515230575a413155434138314d5641683249493667555251516f4645465241554d56454751547454495a4b46424648554b69434d6f6f464f61434b4b43714c494967696767694b434b41496f496842464545585142516f714d67694b436d4b434b494b494969676f674b47536969416f4971494d7671482f32382b784e736e3869322f36516c395162376534442b6b717a613073512f6c6a386b4679434b69434b494d69673455326478487556556f794936636c644c706b57564d69444c44386b437668716f666d69356935474f43573568694538474b42516348782b535a77394752627136576f6a4d75506d675856586b684561516156644d4b63455834342f4241756e456e504241794d5769794d3861496b30726d6750346f4d324a5130674d6e6b5934494562546e524e3052446c53526168474b426953454278726965435a67355956434278714f78474c6e383041444138767955594838553064565753745641573449784f6e44484e4b5331666d6e6a30347367452b706d50356f78415341567038465a3441666171414d3156424e757a38564e546b6c5153775146366330412b434a4f436d4861674f66536b59594a776347525a69324a514269395066326f6b643552416453664b7143506b6351695a55354956374368726f616f4135464871364e47514554322f6769654343434c55434d44786f7941705654744a5150463559726e6571595734675538794b33786a55634173587151593268786b4547346753476f4b44686d6846327254696d4c7a374542374252526e706c794e555043657452736d6f674c67566b673859345971616e374f4b6d46654b41506d505a30714d5350626b702b4b42734d65436d6b4442475054315a4d706a5242487939794868526c566c43344442424978416b79686b43526b794f6c715a5949476f4a3549495778474a51616c4543616769716167366539424158775531566235497836545253556b454c354a5967636b32484e53524146554377354a6e45556f374f614d705056424a55772f596d6f41306c5845636b774c4941447154444d5a4a75724e5667612f43675978624652307275575a4d61557743434d314d31432f424c714a6f6d2f6c39794151425a6968794e55586244334b577979435370584e7531474a355a6533425447736b754b42716774374f6a69503475436a5a7843414e4b6f4255756f4366395363454f39554e4e426b65534161524c42477051303663635563613151426e4148376c7a2f55613776614e78505931506975674d634b4c6d37372f77433732684663516736737561443159344b477547546f4f5256304448486b6c425938577752795077536a566755426b612b324b593956556f7161706937386b432b4c4e444871344936586f6667675a616345424e52324b4366465142757852714f676155546e2b394c347678346f6973695363455956366b41474444464c4b52522b4c7141444c4a416f4c5577544f2b434a69496971687052414931376b304433756c494368664242414b2b31464351413873464a413475697a307943415371635643434644314273536a7179514179644d7a644f5a2f4253723077533674644d45426b532f4a51762f414c76334a6154723764715a73554456784879536879477a54536b4268384572366142414e52475344503759706e656e4652744f4b416a46454566562b314b5750687a55624e415132587652596a7151464d554e577167795154574971534f7239714f4b4f6c772f42416a4146776f47505569514865716c44544e41424159767a375551434b4e7a5231484142446750656764674d4d554e4c3065695750585630427879514e45422b785159705936596b787a4b614d585145696a522f6369536553474a7a5a41676b657a494135497233706a4a79796c5a555a434c5379514d31466939564f6e62334b55596647574b3231413438566939556c2f346c776359392b53444c3656416a646b444157782f376c3278556d4a584639492f2b354c3532682f376c33636146414454464c6945374e326844536330456a4a3058414b5842526e6f5545425a4d6561556a4d4936577a5147644b4f6743314d55704b654f6b486767476c6a56546b66656b414c366c59654a6f6757744356427a545362424b31474b427055434663435565334244772b456f4348795130736135714535425375645541647a324b794a6955704468782b7842754b43436644424e674574426a677034715949444774415855714d456b615970327977514b4158314931376b41306c4b64726f47424148464b61496b3851695930514444776e324b4467464668696f554269356f4544307161534d5647714e4a77434343524147587a52787170476f4a7a5569586f4f386f4144394b6834496e4446793641443143435078524e5a61564648717a6f4a68375551656a71536b53694f475341496174505370676553593071315543755345585a796f523730544c7051526e385063684556556a306842696761504e44534f37356f6c6b42583845426a772b4344704f78503471494a6c5645384269704c4573674232494161427363464a5034676961346642516646424e58464556446c4c49694f4f474a57535071466b6e435968493075474a303177727a376767324232524746556763703349724c4641424a7343695877515049305537505a30437552544e4855636e51725846466e446f444a73516f2b716d444b753575504a3873544436354333546d36746b31436768664e416d754b4643484b6b5777346f4447744574794d4a536a4d314d58306e6736626c69736e3331754a6c53637450696c474a4d5166325a7336445870494438457a7658697144757265753341563877534d546c52766d36746d385153413744446d6745675866464d3374326f434c4455324b6b6d5065674c6a4a485534434563327853433941585049486930366d795a325147527a342f4a4e447036564864516a553551444770785569516a68386b44773767676a505571633149384d304455756763557856647533474a6c49426a4939584d34664a4d4b59425647374558504a2b765472376955463069474b6c5a464c454d45544a2b31414a4267787752424475614b616e554430515a3976742f747a4f636a726e4d67796c68685155484c33725365734f374f716257346a65746565433047636e73537a3364754d5933432f58344967457949375069364452724159496b71693175726439344d524b4f4d5a42694f436164324d5a78684b687548702b61427965425a5468474b716c65417565546a4e734f41352f67724e4f4c6345425a71635573374d64596d335542704847716335635575423745444236383043584c68512f425633626b6255444f5436596a36616c7330435737445854666b544b6a527945592b326176634b7137756264753135732f4251676972766832756e662f6277514f394d5573474e65436a6171354b752f6546694775517a4566664a76785157796f4b56717331367865757936627074786b4749416a387a6753744a6966666d6c747a6c706368692b422b6142624e6f6265456263504341414f35577543736c3366776849323469636a4878614947576c2b50354a2f757263764c6c44726a634f6d4a797a2f4a426f6b55492f70643144516173655846434f7155484961527848424241546d6a7065714e414d456c32356f6872494a41796a557432424138545667684b7556566b2f754673474d44473545794f6b6172636837667657794a643045663841546956586268437a426f4267612b2b70783571337730437a37712f3976704d672b71635966376b462b4966696a6a524159494e56415365394b4b466a6e6b697a426a376b42416c417742427277556f2f4e56336273624e75563665417851765872647474574a4969426d5367736473666370456f746d6f3749494a50554a6756584b344c496564493456346f306b2f42416b4c63494f77784a4a3754583234594b7836564471474e4b717539754261485647557635496d574859676555697a71635a425a4c573974336942434536303147334a7163537932794f6b4e484241414b5655776f4d46415878717176755162766b4e5852722f39524449484656484271457863354b45755541314f555763494e6b7949694b366b417755314973776f7149626d324c5833424c573231616a7751574345626274527a713576785266685243463255794b454168395279354e69694f534179494655666d707951714d4d6b423755465674393144637831327a52794f77684e5a75787644574d4b6a33554b43786b4745547a2f425148343470687a514c49385654757242767730617a4733396259794842386c653743767555446b49494d41536c6c31304f42397355587a554a636c41497845593642674d4f53676f71723134576a44566a636d4c66426e6638414a587578706767474b494443717958643343315079794a536b32706f524d7164334d46585762384e7842345a466944526a7a644264707a342b33344c4c754e75623034475575694574656e6a495956563851796a4943474f564f61414f4a4656566133416e657557674b32394c6e6a716458416951306c416635564467385655647a4733636a5a4f4d784b5565656e464558596d666b7656745747416638636b4667727951414d5648434a7764416774786754504f586937525438453547474c636c5462334d5a33626c706a2f54306a2f64462f6b72596a4a424249414e6d6a4b584a515261544b4354594946617461716d396176534c323768746a4d61596e76443572524845756855305156324e764778626a62747577667856375837537243444973735a3952732b4936764c64764e306e52372f7877357252432b44646c5a695043496c2b5266386b466c635369557367596a425454462b53416c2f327153636971686b596868677071712f424151496775686c544171714e2b4537737251724b44646e5655664a4746364e393946524574796359743875474b4379736363564e4955714b6535516c3350365543786845534d38354d2f64686a775248426b7a5055564b557561494769613971567a4a4544696f37494a3230645134715236517a6f4e6f6335437143474a376c56667333545733634d426e30785037666242543775324c4833424f6d456871427a727934386b3862685051596c6d31616a78346358514c597352735734575950302f71783969565a5542476e7655505452424e62562f4651486a33494550696a3453487a51426d434537556273644578512f682b314f6a62514b596b31526b3363683249524b41384f616869414d3147444a6a564150434634694e4c4677385a662f4576616d57533852626c727433633469667763495064436b4939696d44497744774463455348715543676958616f364c4d7a494f525241413242536c4f5a4146733043454231616356444a7578456a3349467065464249677054476d4c736d47443446456c41703975536b517949554c46322f6567476e334b4d4d6b3248662b4355484753413459716157777752466553455367414f61644c554b455670376b4145514d3663314765584a4d3376514e4278515453513378514939784b594d7864515564414b3861444a434571386b644b6d4753415242425a536f524a4179374548713261417970696d303565394b474a374561346a4e424238464a46436d4153345579514d774657556f52707952465179554f675a306f63706746475a4147504e6b57597555535649674d6753514241716e69785567546e676c456b44415a444a415637314e5a77436b43314544526f6b6633707345434b75674978584e3948673333412f2b66635853474c63317a5052712f63482f414f66632f4242314e4b496b56414744494d787155455379714b4a796753676b73464a5056304d4552774f4b43427767536f6f7a43685145417148466869675077545a5651514a644a443845573471423830455a6a7955774c6f6e676753324b4143495271394558346f414f4f534353726d6a58755562696c30767851527379692b524b6c636b6531424a467355554e4e5643676d48616f546b68495a6c45416d71416b766768324a557a6f43464d456f6b61416f75674a7167706b35525a69364346414552434c356c416879674f4b4255797169676a74676f55425246424855354b4d7941514654425446523045436a4b5949424153576f6f564545474334662f336862482f79354c6f726d5848507156766c616c3831306b427855716f6f6769696943434f6967794a5146425241464248554e5579484a415751436a714e785152526c4d564d4545554b6943426b464641676967525151525252464246464647514246424641464556454555515251423055455541525164524156454d5645425551554b41756f676967792b6f3132317a2b56507336326266386f53656f662f62584d756c507376384167742f7978515875696c5251514b4b4d6f6734636f765164367077485451713652634d71705235552f46424e4c686779476b6a4a53495a416d5569575141556b6553654131476d53674c644b554d42703936427943587056492b43595247415149343071676d707a305552683270776367717763554568484e4f42394951456a6e6d694a3659686b43314f487756682b435567776c682b3948476d446f42676e6a4934684179656941464b6f425372715a4a7848755359426b45384b67697872676a6b2f46436f4250464259525470537944554345364678547354536432474b43526a77554966414973786635493049657249412f77414550454f61444e7954456f434742624a44434e4d555248416c7149494c4d41324645767a7a52385172676c6b4b5564335145464359356f797167527138564542464f784e3461464c6770704a714d6b426350524d543349426f6e536c6c57754b42715a4c46366b444b64754d63544e6241636a525974374969566e534b36776733776e7035344b50716c54324b6d4553633145437369513541354976697048444a676742484a526a4c4442527a2b534c3671494445364d454e546f46786c5432716d4f434353716c384a5949502b70453078515269374b59564b477030346778354241496b6a46536c516a7031646967716751476c63436e426350376e51354975376e75514367545249784835715241596351704974336f454569372f4145706a707879553141437156394a6f67736730536c636b593976616c6849696a7177527a43425739796a45752b43426356494c706f6748326f6768593035705a6b7844436847614978344a69486f667951436b736c4d417968693963506242512b2f6d6756337777527151334e6c4d7531467450686169434d366b634843557579593430515454716f6f496c38584b474a314b6161307851516e3655544d48705a51687333556b4137484a415142776f67656e73434f726b6a4a6d6441724168766d70455a6f675067704f4a6c6767556836436f584e33332f33757a4934792f426455534c5678584b33376a65624d483955766233494f71545574782f464b35674f5255424a4a62696d50494943782b70534e4b445067672f7751307652304269425571414f486a6d67474e665a6c4453694351556f6345575964587336685076514358566b6a454f5743676f4f536a74574b414d634544306845454b6467514b787a444d6e455739733043353571617130514851486447524f574b54584c4a5274506a69676172383845477978554e61634b6f68777746454149497752343055446b6375435969694251784b47536d54714f554169576f6d4d6e72554a596759696973636a73514c70436a6477434c76795530456c6b42646b7458634369416b4b6c4d5a494a70634b537267673857646b4848315651545331536f6365394d59563549686b416234384531754645705054303565394e556e75514a384755385747434c5a4968744e6539416c41374a6d6171446f796c7751544534496557396345596c2f6367595563494951346f69656a444e546b4853346a4241334e5453672b584434703468793563494166626b70713435496c6e415369343151674c6b446b673253493534714136636663676b63386c6a3955422b30756e6950784157335564584a632f316468745a384b662b34494d2f70582f414e307764764b2f2b4e6439716331772f53762f414c75582f7742502f77434a647779616e6432494935436a4d67537852594555514b54714f584246314278436e4149446b6f512b4f485967334648454f636b43386838564e543155594e67794d4b6e676749706756474743556e4b74556134424151434f53416d424c42455366326f6c4663454459465159424b6548464e4161666567455552577642516e565371444d674a6b414b6f44717852384b416933567951536d4f53566d4c344257436e354a4a422b704259575a3049796441446a696c4854515a6f47384f4b6c445641427146456a686767567856544a4d373470573039794175653530326b4842414271383148306f455068705248586b50656a4b5846413473674d6979626b6c4a4c6476775542716745687755722b784d3446454b467967494c4952474a65715a793376785342694542777955594d6f43325349443151426e77524d71714573577a3549526b44326f4337593446454376596c314b52362b525a424f6e7871434e5553614d454b306b4f786b454c6d4c3845444b69674a4b5950675543636a696d45526a6d6d706d6c714f43416c7535523956454335624e48553243434e56736c4b49416c304a68414c77684b3149586151494f724b6a4c6d33664d326c727245622b334147724b516a32595362755855303634365a59476a63585745656e3261416d586c2f3841614d7047464f2f446c687951556267334c75357557394e795559526a303270366645395455643249436c6956377a4e744737516b5864555363576253375a737439376151756e7a486c47544e71684a71634f784a5059776e41566b44447779456a71726a56426a3346795552764f7154783061575068364d7543766c5a6c597532674a7a6c724d6850564a77656c384d417847544b34624b3249536751663667416c714c7533785673374d5a6d4d7059327a302b356b484c6d4465733374784b63684f4a75364e4d6d4564447454437256566b58763362566d5a6c6f466f5844706b52714a705530503755752b32706e35734c647534444d487779416753526965702b326c575775577a684f4d43354534523069556148396f3936444c757255684331626c634a2f725230792b7069437765745278566c732f623775566e555444792f4e367047544553616a75723437537a474d59782b6d586d383956616b707a746263726e6d53465444797a775a3372336f4f534c7372666b334c666e4858636a47567935344a4352627776542b48704330697a35766e794e79594d5a455230795a756b484c3866784b766a36645a365979315345434a51426b534936634748353969305232734c65756e6a4f7158793771494b396e634e7978626e4b736a475076495761314737616557314d626c6f6d55744a787a63526b48474c346a76572b3161466d4562634d49303430436f6c3666624a4d6f6d55524939555979496954325a50795a42694a6866756258513849536a64614d656c6730615577376a324a5a584a776a764c496b534c59456f6b79714e554878787858536a7462635a516e415674366f773541735077554f78746b335a456638414d424766634751596a41333979494763784479596c6849687a71497131566636624b576d596b544c5263755131477059476c56664778487a6466316164482b6b463155646d496765575445655a35302b4a7a397a7433494e5275526a34716171446d566a7733344a5a764a6c2f7743384c52754c4d4c384247646338364556444a62577a74325a47594d70546b4e4a6c634c3034646e7355484a3879514675374533704755342f314a6543516b57384c304844703731644d334e7864756a54634969644d44616b49694e41585055484e6377614c58483036793052716b59524d6445544b545259356532436535736f5475473545796849687047456d647550356f4d6b39786432336c337278724b314c56484c58476f2f335656567333593664715a6b3342636a716c6e6f30362f6e302f426453397459584978684955746d4d6f35316a67683555504d462f2f71434f6a2f5469677832725574374b394b6335784d5a6d3348544a6846686a5446336572717131657562775749544a694a5735546e70366452444448486e52624c7578743370475a4d675a654d526b514a4e537263715554336472626d495272485234444573596a426b464f7a6e49586231676b796a6230796a496d6f314232666c38696a442f414f2b502f774247502f764b7673575962654a454163586b5a467a493853565865326c7537633833714532303945694b4f2f346f4b765562747a546268462f366b6d4f696849414a6f354450787857576432397337563634424d51455036666d53456a4757427a50625664413753314f3335557a4b56645771557a714235484549773230444569547a31556c726b376a6879376856426a32304c777577414633545558664d6c45767a4855574c384d6c303861425a7265314667764355364136524f5a4d516632642f4a5837617a354e71454364576b4d36446c336245764e2b32422f70586a356b76395069482b72702b4b302f2f7477346553306639315779344c564b304a7a6a64774d5130652f46446337574f354966785272475553786a326471436933646e4c632b584f324164426b4a69546e534a414e345232706437726c637343324271315362566834537446726177735331764b557a54564d756450446b4f784e6373786e4b4d794f7148564835494d66707a64597566382b722b71547879622b4673466a6c666c474976577a646b38782f565067494d6d62532b4455384f4e5858576c5a747975433666474f6c2b5279504c35465551394d73524768356b44716a45797045697450596f4b625672376a6333346d637845655870694a737a784844354b7578666e754c4f32684b5265362b75514c534f6748353064644f4e714d626b7052786e7031647361425a627530743237417432347a4968574974796159356775506367473267626534753274524d424732327554732b72742b4e6667746f4770633231744c70463654536835676a474a7553656448636d703430484a644b50514e507a5163757874702b6639764b7471782f55686d2b7277672f79562b437574327a75626c34584a546a6f6c6f694953307430677654453971325174434d6a63692b7551416c334b7535744c6432526d35695a556c6f6b59366d342b7a6f4d4d62313763574c4d366d703877577a706c4c54527758464b4f514f4b53383074744f4d4a54503841556830335048423552705633346a466235374f33634559344348686c48704d657847477874614447736e6b4a536c4975535268587546454645596662377133626a4b63684f4d71536b546732442f466c5a36624b63724c794f6f36726778345350344b2b35616a4f35473458315131615432386c4c567146726f6a514f542f75716669677957376479314f6339724b4d684b58564357557343306867615a685a72736f5834324462427476644c675a487131563758727a34726f58746a626b5463426e417938586c794931632f7742754b6131744c554951694253423152376678787a7a5159375a6c6276334c4771556f2b58356745704f51616a456c56323964383761457079416c616b5a615a4e716254696678782b4b364232384e5a6e395a6a6f505a6970446132345367512b71334879343968623867676f325a6c47563233716b5243513036693538494f4b325569396163316e766251546a4c5164486d474a6e4a2b4466674756312f627875776c626c684c4671653243444c746762397a377151614e526148384a2b72746c2f77433159393566667a70774e325534654756756b494749375137665651384676743745515a70334d634a584a48446b2b484a512b6e57706d52366d6d356c41534967357a626d677a6135376d3762747a4a4554623832656d544f61426e475178533775334b336274774d39583965476b2f56454534506d52784f544c626532634c6769584d54476b5a524c45636e556a7362554978674d7043342b71706b4d795546454a6662376e796f796c355a74796e31794d716773376e6c6973586e474a7454676278315849784d352b43596e2f432f2b326758596e597436764e6b484f6b77376a697377394f745230683548793543554e5569644c594d4d50666b675331447a723936557079614a6a70694a554478442b3347716f73334c6c3057747153664d6a4f586d532f68743866356e69756e433147314b55342f56575863466e326c7037747a63546a6f4d394969446a70474a4c6354386b4539592f7744744c706a576e347062496d4e7966755738306a2b6c2b6e546d33506a6d7a5a4c56637377334d44626e345a592f4e4339746f337730384231524f59495163755a755870336d4630365a65584479354349444e6b346438533768714b36374d79387146337a446330617032724e4850456c7851634871567275374b457061675a774d6d31615a615837572f596a6332554a7a4539556f6d4930394d6d4a6a77507a516371345465326e575a6e54643052314871625542314d616b636663746d3674546959526a356b726351645562632b74386937676b642b5046586a5932764a6c5a41364a6e55574e58787837554a374f4e7a53387061346a534a677365382f6d6762597a4537564a47545349367153484b54316363316f724b71796a5a694174786853455a2b5a4c71724973635456366d7659745868376b474c5979694c47715259435632762b715377323778684f7a4b427666314a365a537555684d46384976513847416f75754e7443466f32674f6b366e422f6971566e487031714f6b6b7a6b59474d6f61704f7a5a416350696779544e32394f39533464456a4333355568474d576a773142796333656d43532f7562397137356d6e2b714c454e5459524f6f75547946634858537662474679526d386f796c34744d744f727448486e52474669496e35674664486c38656b494f66754a7973697859746d6477584e557053684c726b7a48456e4e3378776f457430337257337643516c41435676515a53367179446877536665634375675054375767576f76706a574c537245386b333255504b6c616d38347a385771524c2f6b67723345706a6432597866535264373846676c416e5a7a33486d543879426d59395642706b614e67656275756c61326349534677796c4f59776c4b547334522b30742b55624a70626c7166384131467967756478717067754a74446362626e634e35416a30616342503664586468774b3759414d6668376c534e7262386e79476541476c6a775156585a507534676c68356379325869697345424d62577a654679666d534d4976716364564347777a705264574f326a307a715a776a6f443850624e4437574168477933544168712f70775155576762473738754d70537479675a615a534d71784944682b525736504d4b713974784d6d35487869456f784a77442f745a4e5a745374776a42333067427a7951636a594437537a44644444716a65374e636d6c54394f66497132334f49326a4755687175546a2f5472493963697737654f53364e757a627451386d5068392b4c763731534e685a46754e6f504551366f6d4c36676659356f4d746d6334472f45617848793951463075516134467a536e4846562b584b4676625859546e72754733475231616e453476675841624c3331572b477a6844556571526e48524a354f2f3766334a76745947467544644e6f786c477636517764426d746732623979784352593278636a356b7454476f7a7232716e624756756473585463684d2b4c5764554a6e6b78494845594e67756a3974626c4d334378315230536668697162587039753259735a4e4877526c4a7848732f626b6777506633496e64674c687561706144475552416153514b61716a6934717456643175626b4a6d63593234322b6d456d724e7954547370386c6439686231796d44496171796a4752455a632b584e6d644863624d587036336c43546164554a615352774b446e3372382f4c7441764f554e7870664f576e55427771746e70737a666a4b2f4d764b6369384d6f4e54543238654a354b32477a74434d4952485462496c4874442f6d6356624378434e79567946444c78634333346f4d46305854767a354f6b66306f2b4d452f5763474951745854622b344634694e774e4b5534687778693057484a734b6b6e4d72566532734c397a7a535a524f6e53385a474e4b384d5552733749684f424469666a3146355337546a326345474862796e6233466d49463043656f5338347671614c754b6c6a376c575a376939476432417547344a53454a526e4551476b7342704d71696e5534585274374b33436362684d70584965457a6b53613039714a5a374733714d6e6c45534c796a475a4553547948484d686b4850765870323731396870316979446379747534663873754a58596862305245594f514269396539413765447a6b512f6d41435435675562357175337478616e4167394559614978784c2f736f416758665754657476436c7933317737522b42774b79526e4f7a744c6d382f367477612b7766535039492b4c727154414d534a5a7050746f69324c5169384e4f6e757751632b7a43394339623069344939586d2b624953484974714c462b46466e74334e7a64744463516a634e3252314136342b577a6e7030367347354f3636746a5a787447686e4a734e637951427948357571787362596b5a514d774866514a7930766a6832354369444e4378472f7564774a475169446238456d726f46616675536258637a6c613232366d53662b6e64357554454539684139363663624d4c63357a6a6a5054713771594c4a756473493759624f7a416b536f357768584575587a634d36436e7a4c6b37586e6b6b43356568702f6b314144333438335775657237324179387566592b714c55566c7978626e61386d512f7067414e6e54424331736f776c35726d556d4931536b356169446c5774634e6c446447637a63476d75722b4a6d4977393956314e37492f623357466445384f784e396e614e6e375a7636596250684a38566649475136667a515a6835663276582f78614b384e4c4c4a354175377135463543476933344a474c34346b462f6972342b6d327a3039586c342b5871364f4f48446c68795771466d4d6268756656494148752f656735554c307a5a73504b522f72364865704131596e336535614a482f7935434a4f6e79485a2f774349354c524c5a5754624e6c716174574e524c467763554c657968614a6d486b534e4a6c4b565751632b46756475785a766935634d3547317131534a42456d444e682b4f6272734d71507437586c78745a52306d502b6e4253785a6c624d35544c6d636e3552474148746d673532343838337478354e527074612f77425456385050484875563138786a745958747165693230774935784749506337382b61335273434d3558497538394f722f54677137747362654d355762637047645445476a6e46334e487a515972393263787562385a485447333563474e485a796531364f744e3634625a32374f486e462b66544c48696d326d7a6a74397647784d4f4e4f6d584e38666d6848302b334853786b6442315131534a30396944463563376c72635854636d44626e6530744d7347647659354b387a6c75627475314b52414e727a5a615a61584e41314b73486646616f375341747a686c634d6a4c2f5869714e7a74343659474d4a796c44706a4b334a704155346b50676779584e567262376835794d6f3359434a4d7167644835392b6132334a792b37736747684631787862536b326d304537647946365054636b54704a6373654a343066465832746c627479684d3670536737475574525163794d4a6e6166632b5a507a59367044714f6c6f794e434d4d73367273546e7274475459782f426337612b6c784e714d622b6f64556a4b4772705055534841786f314d4f4b364d6f6778596a4769446a37585750742f755738765248792b416d314e584e76442b6133473549627a5339504a4a5a3839597956386474626e612b334965327769783465326167323049543877755a43506c3669613663652f745163794e756364745a7652755438776d324364546a714c4e704e4d2b433157344862376f51457053684f325a45536b5a6455534f4a7a664261507462636255624c644d544676394a634933374175533879482f4a706c455350503979432f6736424e614a6256767934787475346949687a6d32615a33777751514671356f31554a624641444d5a494a32714f3942696f50636c793969674d426b6f4b755644483366696a49414942544e654973782f6f33774d424c3851766352726a67363855496630373466433458376b4874375a2f70676677684d5a59737137526533442b554b7a536758784d706d6f4278556172696e464248376b5077544846676c77352f4e41584e416a467331414b7553564d516756364f6f4a5a5a6f396941726e524244376b3147516b55475a4243546c7a55485547464d6b38572b6c4c6f4151544848464749646b476f654b5553624a413368646c4d7355727433707355454744636c4d314d636c4a566f554549634e78554554686b68704e457a754f4b43553979424f6c4d4759756f51436747724a534942435542735169514d45456343716d6b6e73514161524359697445457a6f6f61394b4a356f6776314d67564349725839364c61685446467330416b43375a4b456f466d6f69447078514146735553784251424a6f6d4e54326f41515a6841686b7848444a535244664a4249302f4e51756170577a716e4e634543366d6f6f69774a597159554b4167682b61356e70422f2b352f2b76632f42644e3848584e39497833502f414e65614470414e58354975364772686768714e57514578346f56434a62456f4f445641556f69584b5a516353674571304b4f46454a523156557a644165786b6561464d6c42537078514375436d43596c36464b61386b444232356f5541716f376a6e2b4b6d43434f426769344a6f55746355373845414a6f46477168676d4b435664416a4e4242326f454469696a3570504467692b52514f417753434c594973374b4535494a70525177554a496f6768785a51683856474f53685153574c494176696d42514979515146516e4e416f6d587551484251756f696743425537636b614949696736674b41366c43686855715a6f494b4961516f4579435551504252444e4268756876554c5a7a4e75512b4b36433531382f2b645a3577754c6f6f4945457a49416f4967616f714d67436a5a6f71494343676936553449436f6f364c6f46555255514473526452514949794b4369434b4b4b494969366969414b496f49436f6f6f6769694b566b45555251515246525242464755554b41414b497149416f696f6769696969434d6f6f6f677a656f662f62334f78507443396d48386f566671414a32317744394b74326f617a4166777851577149714941707a55555a4277584c305348703731624f513155645641384d416762436e7756656741385554416a7165714c56726b67554553726b4531476f674974697252673578434373506869706f457a693261505a7855635a596f41376b63555741447a2b435a7373536c4243426e45694d314438556b514d6b5366306c4243577267672f44676e5a776870423663304559646843424a666b6d5939364f6b494663416f6b46714945756d64753941437866682b534d6d6b46483745593171674d585a4441504570514f3947687771674f7476636f354f484254537a496968614e45437831457678544e55567878524c6163304a78446f4744534446442b457142457a4473676d6a50426b7a56726b6c314846454f525241726a38304f6b50696d6441314e50336f44774b594e71633570644c5261536b6953674d6a68785549474a78554643376f593431514d31467a2f5564506d626343727a666867743847773756673952614d724146503669446f776a52736a78344a5a564447694d6e4c4530545a49456b477856684f72464b4d4b6f435178515368526267703468544149732f5638554562366a34556f6c546b6a38314467364351716f5a565565677056514d656f49497a56412f4e484a786969554b786f67416754564349776646485531636b6458314d35515353556e4e4e314e5876524e6178514c4c676949616578426d474b5a337851435853692f547953672b3552776153644178714b6f5259344b6168715578376b45637755455165394851545448342b33465457394467674f6c75527956637134703955636e644c4756534f5341353858544150346b483070645446304270334b5359564b4d5a754477514a2b6b2f4242496b6f315061794747434a443952515349796c374d6f657273514970375a4a346c676758544c4e5177655446535468466763385545306a4a4578344a634f616152376a6767554e4576795131414250713030782f4e4c484242506235726e377a70337530375a4c6f74706a714f5035726d62754c2b6f62542b575344716365314363633043586c6963536d626a6879515139506569634b4a5a4455655364386b4343644b6f3873457771367247465278514d41674348524e6345497539454231556f68315547536d6871342f7454506b67456a564376596a6d68552b3941615a5942456d7455476f6f5342306c4173755645564761524255314449494747464b714d5178342f4a516e4d596f476c5269674a726c52516341674347706955525241496345616548444e5453314f53476b466e3979415277306f67355a4b524239794c4e7a51426d346c4d577835704b55644d43394d554378786457594d6c7a5a546e6d676771355545514b49354d6963656142534859356f3434346c4c704449434a64417a4f4f6e39696b584c6f65486d6933792b61436169437a31554966696c6b3142785478352f6d677248456f6d7455544875526a2b704243337467683475534e475530303549424956526f7a5a4b5070702b3152386b4541614c69696a39386c4735464767442b7851436a4a6f6b78426a2b35536d48306c41644b414352775a504d7547795376536d4f4b6b71346f49422b6c5a5056442f414f4a6366494c5944316471782b71743974644746422f376767796569743977575a2f4b482f754b37305a42736e58413949502f414a4a662f74662f414272304750636742686b564a6c4b5477787a54555a424d30756b75794a446f746d55416b2b4f436d706c496c793451726b676152624651554a55356b7058416f67494e4b6f6b3675314b595056454867674f415a494a5a7073692b536e694f70424864336f6f61596673526f46414851414836676a713434495245516870705833494a707a644d4b6e38456f7852414b41756168515956554a456c48346c414338383143324b6742787056536d4f61426757706b6b4d7a3375696366697058464147344f6d6f5648445577516f375a4947646a564b4f49527877724a414f7942384b484e4a3246514769674b4143654a7739736c44557677544f6c6667674c43726c544a6b70416a7a5668642f6b675847544b4e787a51497252467967624e6a56426a67454a455a4b50714135346f4a46305451317751726769386d514148676a34616f456e6a6d6f7847644544507078534156706769584c6578545a36636b45795164416a53704f69416c6d71684d68337a525947673975354b7a3434494779624e42744b4575534951534c6b55775545584e554d4f585970326f476671624254547879564f35483943622f6f6c38697546707378323971566d334b336461332f56306d4d5267354d7343506e3855486f6b754b7a587478634e7a79624d596b786a716c4b524c5677484631582f4148457447526942487a504b755a744c4c75647665673363733354536f5668756230783832576c34774d597834796d637669485268637532376b625638442b6f4f6d554354685669376539427448536c7246592f753566617a76734e5564662f414b535170506358546638417437516834504d36714e31455a592f42427572687751797173456655704379444b49387733504a59476d74327862444e50617633547550743730596a6f4e7834456c3667634f314274455778556f427857446658426275574a5366787977446e7748494f6d32592b366b4e314c7374782f534d442f714f664442427074364c7655445469457a784663317a3437755a733270776846376b35513034414e712f4a7a525048636271637032644d4e63514471314853787779643048514647537353465474647839785a46316d647752697842494b7a65705430527448454337626b7772522f656736446e484e5130776f7564596b64374d336a34625a6c433345354559796b4f50415a4375614d4e374f646d334d522f717a6e35656e684948713977425162753152334c6a4655323978723831782f786b786a2f74425755372b3654593052695466695455737a414838554852495973694669472b6c4558664f4145724c506f774c68777a2b354a352b34684f33433849447a43634a456b4d43572f6238454852774b5755546771372b3174626c764d694a4159505659665464725a4542634673616f7975567a7049696e7951644a347369517935783364364d345276526949334a61644d5a504f4a784435653553397635786e50793941387568387954475246533379664d6f4f694c6279516b4d7a6b6b735868656a4763634a44563346637230575a3239713143645958413848796c6e48335648656736394f304f364f6f51447936654b354f7a766d31747251746a564f63707869435748696b54334d727a7562686a6432393441544675557870646a48445067554730454561346c784b766136646e4c354c6c62666358624671784b55592b56495734554e51346f63472f4a6456394a5a41786977354a475076584e7462713374393375497a4a3166303849796b50414f414b577a753763623235766e77694e6f344545734a5a454242314e4a43685745626d2f624d44656a48526349694e4d71784a7742634e79635a6f66655870584c6b624d596e79793267796163755979484a386553446541396376775266425a76754a4863655252764c46783836796238466d6c7635364352474a6c352f6b733755646e644230733074525449724c5a334578644e6d3947494f6a7a424b4a634d374677633152393766466f587843506c544d524561756f43556d63355642774743446f6c3334736a4b754f4b7a37344437613850344a2f2b3072464831437964727065542b582f3235343665786b48556c456c487041344c445a7558596265794c514231516a31534c5269305237796376696b50714d785a6c4d78427557357867514a504575526833484e4230644c594b636c6b6a754c7775697a6445527145744f682f705a77584139345773676e745147504a4a47634364494e5258546d735871762f414e72496337662f414c3471326431373037545270623150327638414c3855476e6d453065716d504e63505a5774704f7a626a4f77535349764c79354d2f46325a7561366c76636d354f374568764c5076365155463444636b4e575157434f2b75796a747949417976413064674744383166747238377335327273514a5739506771434a436e7951616950656948474b78584a483732336c2f546e322b4b4b6664376e79414b44564b516a485557446e467a774450676730506d654b68634c42446636504d46375354626a356e3949754a522f4e776b74622b5a755168633874726c47747931474a5a32504844455a6f4f6c31497652314d4b724236734732307532332f414f38494e6e6d524d3941505533686572636578507062784c42643345343370323478695447313567346e714962736f6a4c66447a4c5167486a63414d6963745868393542434457786b65434c56443572466333306842394c6b33504b74443954466e4a392f75566c712f63686338712b41356a726a4b4f426245567a775161394e5839714b4f79356350554c7874517679684879356142494f6458555766686a6b74587146647465703945766b673141444a49777a64635565514262386d314b31505648724d4a514754756333774134726f3337742f5731754d52467646636b32726b47516168514f457a5a59667358505071516c5a7454694271752b474d793051324c6e685476567530335572387057353664554e4e5953654a456e77507a4344564b4a54526a526c6d33635a7a7379685a704d6a704b77326f626258474673477865427a4445746948776b2f615548556a4638564a45504545687a34597669334469796f74336a4f64304e53456f6a2f3067724650632b624c6133357441487a4a48674f6c42312b624d68726171354739757a3347316c4f354672637077306a47576e554b6e7434425837577a74664d4274325a5149776c4b32592f4e42304e49344f68476353644431345a743742595a622b5832493354445764505456764579766a65666379746152344979315a6d707032494e476b4e7853584a7867486d526c6973742b4a4f37734e77752f494a39394d5762626b41744b48544c6e49424270596d6f775578654b776e63333558353262496830434a3679635a65336371342b6f335a576f376b774174456747765655732b444d2b575934494f694b754369587a77555a71726e6d45647a75726b4c6f6533616a445447574479657043446f6d71476e4d59726d37652f747241757a7354653348714d493145574657376543654f37765130547577416863496a306c7a457977656a65374242756c4c494a686773647263536e43394a682f546c4f507569365437713750795243494a753239665561436b667a772b4b44632f4e47697a62533963753634546949334953306e545556442f6973573633583232376c4f596472475666714f6551356f4f7149354950584659415a625331397a4e7058435965624c4c536164504b497734346c5844652f2b524f7952305242362f7743494d53506449664642714e456c32374748564d734f6548765757462b2f6373516e4745586d4e526c4b5452694455506e77575865376a7a746e643167435675634953306d6c4a524c6a6b673635444936534b724c62334276334a433042356361612b4a3563686e7a6f7441666d675a754f49437231786b54474a42492b48356436792b6f554e682f2b394835464c65336e6c783346794944326a486c716f4d6666524276374d46493143796663334c64324675394749387a566f306e4178717863444c4e56626a66584e767175536a487978394f72724d6549793773575164434b4970676b756543513546636e625876757256726151654d664c695a6e776d512f5448747a504242316a4d6174446a557a733953457a536d58437a43364275525a6a474c65552b72736b41335a795751622b2b4c647663474564457941305a645479774e61647a6f4f70715a48587157537a66764339354638527731776c44436c43432b6465396170796145706341674e49307955706a5263654f3332383974473975694e567a714e79574c6d6f59354e6b334261374f35494e71486a6a4d4543356d38616a3331397944552b6c456e6746676a366b5a57357a41446955664b4836684d7445393676334537385a4e626a44534234726b73547748356f4e4f484d714f73483330356979624d61337458694f4442386b39766553694c336e427057514a4852554548687a6f31554735754743714e3245584f714f6b554c3854386c6a6a75747a43567358495241755362706b584643574e4b6c55627939727362674d427075516a77646a4446423132727752594873564738732b665a6e622f564578372b4b354f353345747862737a74314e7541334575305a642f58376b48626f564d467a5a58523539336379724331626a482f6431663841354b654f347657394a334559786a6349694e4a4c784a714879354f4d30473879393551642f637348336c2b3547354b3347445770536a314669644942627457797a656a63747775436b5a78456d37612b39425a516a73526a5846637a66337862334669374b6769626d416331687746556232387437692f59467079307059786b507050454e2b4b446f366a6b69587a58504f2b6c43784f6367504f685079744f524a49623367757237643655373179314c433249562f6d422f4a42706b644b575a4244796f4d585850742b6f546e6273796a474a4e307a697a30476e5658345656673356772b6462757747754564515a394a426473657971445647634a474931447272477549354a797a30397977577477387474535038415574795038765445734f56617044767238625233416a4177675a4358556452455a4e5432397944704169506570496e4c3969535a506c6b686d306c553741443761305034496f4e55716a6d686a324c6d3366555a457a38735130323369524b576d55694d5770335678566c376641796a62736d413151467a56644f6b4d6342784a2b53446352524138734652744e31397862316335524c5a4563382b533045745549415471716933376b434d416f644c6f433270434930492b4c4a47564b4941537071717948492b775249617143546243724c78734a42747a2f504f69396c496357586a62566264386e487a4a65354237477a4e376350354970355366465637657471423552566941792b61484a4855366d544f67417835346f4f2f4246325269435541417a556c5146437548464752626c37666b676c43675548474b633449495a49424853477038454d735545415a307a49443470537a7367615234714130517a7051715249785154506b693446564d58797170544e42476642515647724d4b44546d6a48436941415068385573614a6f394e4370323936434f324f4b41495a6b786c6d4d456f6944564151376479566e5445436a6f6158786f674a44564a55306a7849686c426933424242484d4b4e705376586b6d7267675876554164674b4a6a677968344946446469496f4855646b487252412b425375357852487a7a5141596b6355447535722b3542336f67517736616f6e6967426b33617071637150375a6f4d31446d6750306f776b426a696c4c48354967634d4545344c6b2b6a7931584e304f4636587a4b3673413635586f344f7664662f414670664e423171354b474a79526f554246424852717a35714550676f4d5834494a534e6331504633714d525446484c3845414b6d413471427869703467676d6e336f736757314f7045684157415142792f636f5642487671674b4434386b53784367464545316356436f6778485967674a4b596c56677069676734346f68544b754b6e5967426b785262676c6b4131464d41675946487353696d507552314d676b6d51636d71684a7952425151466c44565168714651525a415168494171453845633041315552706b6c434f43414d6d436a6f61754b434645494b4369416b4f6f654155436943494f2f6167584e4555424a6f6f536f432b436a75676e4e5441494d5553673539332f384169466f662f4c6e2b43364b3574366e71466f3553747a4875585351544251686c47555a42454e4b6a496f4a696f6f6f67685178544a554552354b597149496f6f6f45414b4b4b69414b4b4b494367696f676969696a6f4967696f67435a414b49436767696769434b69434b4b4949436f6f6f6769696969434d6f6f696743696969416f4b4652426d33314e76507354624f577178412f77684c766a2f414f50632f6c4b625a2f384142622f6c69677655555251425231464548454d692f4255364342525758426b6b51413449314e516c426f35474b4c484846424e5031505571435931427338536d594f334a4c4a32706c3730425a6b49784a777a5563696e454b474a307345416a7a4b6156734136754151307941566b4e4c3151414d5138554a41786f6f49676d71457175395544365877787a536d4f65534c4e673749644d637967665454454a61524c4a68514f687059366a69676a4e544e45746a3765336567593463314d657841507752643671486d6a716f786f6758436f7a3975434f4970524d546852545449346f45456550734659634b39365563464b3442417749717968644b43423270704f5136434754344b434a6b5751616c45394d42676755615456544367376b53354459636c4e4a6c326f4951543230544346584f43456347523049466c672b59526978384b446a446d6a716a37443969416b444a43484e467a6a6c32706d4f4a514b4352697358714551626c682f3148336e4262745078794b7862797433627848366e2b4344644973644d736b4447694e5137356f534e48514674585368706344356f2b4d634644556155437a694f535956484d70585963564948486e68775148773971686f4169534d454351374642425432795559616b51656c6b43614f3155456b4b31545a7059645055704279667851485578553857434d755a536b675a49444c436c564979506368676a534a5a42437a75633843694a4b524248745642794b6653676a795a6c42586d6a4144444e53704341615854417351516871694134716c4e5279514d532f746b6845683142576a7067773655413031515964794f4c3655524769416b705764414271496c6b455054514b594f536d3141347059686e664d49424668556f344b6455655951776f6330423142755951384e5559305531665155437a4c6f7830763366465176686d557869316662324b4263616c5048555834705970744c346f4935434772446755474a7155524e6a5241513857584d3346642f74704842702f4a6449744352497a77584f334d6e395232304f455a542b422f4a42307441636c41416d7231566e50696b493979414d3954324b474c35496d5741526f50445641757347682b47614a6933426c484237314b302f42424a484c41714f3965434c366878484e4159306f364354352b77554746564352785264736d4b435a636b6744313570795846654b474f47434146346c6b41526d6a4a734561595a73674c7878503755756a344a704f3749456b4e39534168694847535673343571435075544941574654326f794f73763765394c7161714969783046414b444846442b4b6959696f345a6f48713936426f43725a4b4d70476b74494865675134356f41486b584c6330576571455970744969474b43564a356f413571616d393668346e4241324f62715a4f63454979465877434a4948556741536e4a30645431554f4c48755145594f55416a4c70775245585a6b4334645152666a514961516664376c42484c4e415341314543575263426b644f6e416f494a4450484e437547435847754243593051534d6451716a346b70524855616f4361552b616838546771524c4669686767654a53344b5969694970314846414d536f5a6355305a6c32525a366f4659384f61796570617674726d4743316e426c6c39524a47336e772f6167352f706c4e7750384136482f78727679723272672b6b6a54757a4468612f77446a586f4e5449464c68453177516b546b6954522f62354942457358436b53796257324753584369413657524d6d4c6e6b686d6f676245633047474951384964444446416330574f534845714167684165784169694a775548656757674c424d4a505544324b596d6a7051575153556e44454d6f4878555a3670485a413459552b435669455157555a366841596875355165334a4c4b542b39475655424c46674b4a5a39534a476b554344384d55424139794868357074597851504e4247614c354b59486b564258676f6631415a494934485970713149784356736b42307652517764415070772f616d6442484271684c69675133616d694f4e6149426f6f794a3661684130375644544846414e566149676b563449346c5275626f4a695855656a414a644446477447514273796a6970683271476c4a494a6b68423673706b694f4177515175354155356d69424c52594b595955514f37756c2f695238507478556369684b43584154515a4b4550557579456d415144774e6168424d436f7746634b6f7657716c4d454248486d70466a67686a514b457567533543556f546868716a4b493731682b3133527344625338754930693371655571446b772b64463073554863592b3253444a4f78657433664e74434d74555247635a46764467584435466c526332306257307565644943557a4b354b51773159687578673264463079336941375658636843366571494f6d765548623971444861325570375479355575792f713676343331664f695957623179376275583949467439496a5635476a345544594c59436d776f67356b396e75504b755749364e45745a6a4a792f56566947353476334c5443775275504f707038735235754a50376c70484a51676a77346f4f5a4c5a546a43556a4b4d5a433862304366445841483374386b4e76636e5066504c533474665164514479474a59567a58536c415849365a42787778537773323763644e7352694f45597345465632775a7a737a47454a4579374445684c44626d7a6631326d3875666a682f462b6f5a50783936315271473470676365487751632b7a734c6b4c646d424d64567563706e685856685448715677747a7458703370595345427a6f2f35712b4a65675447494855616f4d4f336a653235686248564755376b707972534a4a49373668583771784b2b4c656c686f755175567a4563566651304345716f4d3039764b46377a3744417970646a49734a415a34654966454c4e743745626d3875584c63745549564179467959447433437661756d517853573755626357746752483849594230475837652f43647a526f4d4c6831456e474a5a6a5450436c516a623263345332784f6b2b5643555a6438514b65376b746d4f4f614c6753515962757a316a6336693062756c75576d4f66657378753362312b774a2b5753386a2f41457a712b6b317744443372724d456c71336273673649694c2f7069412f75514f546d73746a613349574a5770536155764d714d745a4c634b686157414c4a7a5242794c58703179506c50433141327a45796c46395577486572447459752f454e573657796e62757a6e626a626e475a3166314d596e5049754d386c765a2b34714f535541683067552f3230437732646732306a7462683668395179494c676a73572f5670527161494f5a6139507532374e71494d664f74536c4966704f6f6c78672b4234597133375737636e6375334e496d625a74786a456c6f765770376553327543474b44734b5651593537536372466d793431577a613166364f374e614e744f356346795577773179454d6e674b416e766675567353394d6c487136444e59732b586576584a34544d472f30784171713562435679562f57656d39474d597455686e7238614c6135666769354a77516338324e787544623837534957794a6e5449764b5177796f506571393373373234314351746c36777553704b4150594b746c31446d75744b69513854376b474f56693762766937616166526f6b4a30664e3372386c575054726d6a78422f50383434696a753362374f756c4c42676845674d36444c4c62536c75504f6d656e797a6235316b3635312b5679337434626379684d43634978306c355330794758455a314f43375a4c716d467131435776544857667145613535346f47334e7333624d3759786c4751482b6f4b76524932504b7a306165396d39714b34414245783159494f6263325578354941747a4675476d554c6e684a59427851384d783855592b6e7a46756473614f753547353030694730386932422f59756e584c464c2b61444e64746d56364637365969635478366d773979666133626b37555a3367317768794f33347139785867674f6561446e4862626935622b326d596d3371443348366941516347783576334c524b784933626b364e4b32496336616a2b4b3045414b6330474862773364713143304932756949692f6d53792f3070764a76573731795672535933644c6d5476436a595a76334c62306d696e4d34494d466e5a58496a627551664a316132664f4a464b4c52433062642b374d74706d4c656e6a307638416d7441596452396770346a7a4b4448754c64377a6f3372496849694d6f45546b52693341464c6573587478414365675849536a4b4f4d6f6e6c4a774b56577345684d32656144474e7162734a7775516862457870486c312b4c44334a647474626b4a6a5662744152786e4845396c4133764b326850526b4766617a7558624d626c3041547a694b646e772b4b795432392b35622b32756d4a687148395635617941587762476d4c7375697a73366c5234554762795a66644739545435656a6d2b6f6c5a7250707479335a75773141794d745673344d493167394d6a693346644c464677315547436579506b57726343504d746d4d7766704d68692f613539365957727372766e336d6a706759776a45766a69585959746774687067564a565046426847796e39704378545848525772644d676543306275776239713561675135456f68384b71305352455355484f75324e7a6668354e7a5247485343596d557055344f4133626b6d763741334c3872686a43596c70413879706733414d51587878433330797167386b474350703034324c4d656b334c4f5571786b3768766a776f553733624d586a6274786c4b555142427a307655794c527744355535725863765274423546683764367a533951736e703166412f6b673062694570774d59534d446c495a4e5659376c692f75574634516845536a4d79695353644e616350655672745834584b516b443763465a4b576b56515a4a57747862757a6c6130474e786a3159786f786f42583368565132424d4e7643656d5562516c727a42654c556f74356c727852422f5669673538396c656a594e67474a455a524e6f7966415342306d687777422b5331516c756a49613432322b6f786c496c755853506d72794e5743576b6662356f4f574e6a65466a37546f3067394d745264684a384770376471327873796a755a586a6759526a7a634f666b744c6b6458464c494f4b6c426c3356693763765772316b78506c3633456952346d624148677137747263626d3259543873566752706c49306a4a793942334c655136684c4269677a3264764b4734753369326d356f30742f432f35354c4d4e68632b7847314247734e32655056773563463054537637555345464675354d6d344a426f5249454f4a6f482b4e465665733349587650734e3144544f4d71417467585973635673417a4f4b674e435367776a6153752b624c634e2f5669496159565942383656727744496552754c6d6933654d52433259794d6f347a30345a4d4f4a397933426754714e4643655037304743573176514e794e76535958535a56665544494d614368776f6e7462616476795a53492f70322f4c6c582b58436e4a6243526c6969514d55476178624e7535647553777553444e79694256443761583342756c6a624e7679327a665565544e5661574f536841777a515934624f56754679782f304a44704439555878485a777a79564a3246795732466f79486d36695a53343633457376306c683242644835706d5a793945474c64374d335a514d59786e47414d664c75556a566d4f427735685a7a366450794c31676142356b34796949306942307547626c337271435459346c416e53474b44464b316332526e50627359474d70614f457877595a35696e61744a6a4b647069644d7a466a4b4f5249792f4258564e52676b354839364447624f34752b554c2b6743334c573853586b5143426b414f4a7853376a597a755176774450644d544633794552576e4a6443664a535856373047652f74357a7657726f5a726576552f4d4e37636c7a376e7056796471646f4333716b5a487a70654d765868547442505975757a653145326f53696753596b515734664659767370655262455746363241495479456d722f704f42572f6c5630546a6967795273585465463659412f706d32576b2f555a41384d506a7953445a7a2b33743764773844624a34644a79703775616f76657357376379424856455537316d6e3633636e4c2b6c62595a616b4854763270777638413349665447334d4e69586f6144755639715535776a35674479694e5948484d4c6c7739584950384155683378577133366e7435734e54482b494d794262566e636261506b573945344477475a6b434277495976323051762b6e542b32687437636d6e44546f6c6b347834354572634a7875447052486567787a3250396130596b4346734456486a706652796f53556c2f597a6c666c634d626477534551504d726f62476a4d526e69463043432f6168417345485032327975577874784b51506c6139545a3667655876566c7a5a476374787149456230595269324949422f4e625934307955504e42796a6475584c6d33747a4e7339542f30356169656b395849652f74566c3759335a327230596b506375526e462b41302f6b7474757a6267357477414f5a41566b515255565148697347783250322f6d6132496b656e6c43704139354b3644444159705751633362656e4747316c59757931476231475755666341465a354f347653674c2b6e54416958535354496a4467777a7a57374442523843677857746f62647538437a335a536c482f55414b2b376d6e32336d57546232386744434e6f61704439516f472b4b31756f52544a426d7632446376577274414c5a6e71373473464c746b33627471555453456a4c3378495769673743706b78516377326864333271456e6a45527554475055486a487662354b363559753237307231725352636a45536a4a7751597679726a68526134573451384941666852796e38504e427a374f786e626a5a44782f70536d5a6339577244332f7454376930595376587045434537656e2f627157316751795764754e324c54416b7a4871446f4d466a62796b4e72634746753278475a31526a6837717570396e634f306e5970716c723742716b54773936364a47594f434f4951567a6938544159594c4a746f62713147466f6932524541654b57412f307261654a4b593078516332577a6e616e505247334f4d7a7165344b784a7879714f4748424739733565594c31735150546f6c43355155646943786268775a6267484c346f305a426c683574727934615941534d74656b64494134633359632b48445870417753734d7969435065676b6f5564526b63334b4853375a6f4665726f6b4f6d6c6a55494d6350696749366b736365534d654a556f36434d537646324966307233485663397667766150303078586937456d7458676631534b44325667745a673336592f4c465841764a5a72422f70322f3542386c6648466856424e5238504e51342f676f5253696770332b324b435577526c38304347716a72515351713642633078555a692b534a78514c3455535145324f43414f4b4161347150394b4144464f78514a38796949754b4e5251567077346f397051445155644c6f486b696543414d3954687852493039695771636e546967414e464133656f4d4b3570576271514e5571484470514d6d2f4a42326f413166623549476b3342516b59385648634943687167627856465648376b48495171674a495a54566c38305766715131503249496159594b416a50425444464751456734515353414246585245386b4f52346f497a6a6d6f437a6e46536d487555414a785146423355716943674430595a4b4f4255345a716a66627533733752753353774270786b63674f613842366a367265337335534d69494843416c3067666a322f6767372f71482b5536546f326b645166787977376877376663754e643964333938504b356f6a2f44302f4556584b4d324c6a424638786d673077334e325272636b66357047727136787639787471573770694f47507a646c6b446e732b4874373044315a346f4f2f7350386a334e75582f414a4246794a384c36516665507939324b37666f45786368754c674247713949746d76435469426a514833727265682b736e30387a6a50716849392f622b6144337659677a4546437a654632496d4d4a5964685667706967574e616f6c794f47535541794f723470794851456f48476945697877555a41596c314d6c4779514951456c6c4549344f69357a514442516355516c64415871677a6f34344b596f46416f34544f5451684357484a456875784141485441484641394b4d533641452b394b325471436c455257705151316f6951342f46526d71693155454347706c414b73796a75676e504a454b644e51564751474e4572755642544a4845494146436f3342456c304555624e436f52644249714f434f4b58385555453035424d67437067676d4e557a63454370715152367369674b71494a694565784b374a6b414c464642314764427a373748665742776a632f426442632f63427439596c2f446343364b4350785579555551525245705a42415646484f61504e41475555555a4246436f6f676d4b6a315a52414943464d454d5645444b4a555545555552356f496755564545515552515242454b494a676f6f67674b696969417055536869674b69696751525252524246416f6f67696a4b496f416f6f69677937372f414f337564685437514479594e2b6d4b54666a2f414d61352f4c4a4e7371324c5a2f676a386b46364b434b4149714b494f4672656b5171714b32666953454d57434244774362543130526273716c3073615949475969754a556b4737457359796a564e5241444147694d5979782f5967594134736e4459566441766872696d773750696b464a633039572f424142696948636e4a314258716b794549695a7166326f446f476147726970703159596f366e78514756513453796b345a5131596c4f573979415471514938613530524c4f7753767071464a684249747035464d777a53446d4b464f4b56514b4778434d4f71694e546a38454e4f6c42412f77424b61487a556b51596f617a45557a657143435142646b5348526656584a4c714c636b42414f424e4f6147724e2b536c576f56484c7367495a4d2b6e424236384f4b4d484e4d6b416e704f4b6b6449726d6d476c6d4c494163554541316379694a467570417966425334344343434f70517558426f6954714661303979674a444f674d6f456b46595055495063322b52452f6b7432465a4c6e373644337245542f455851644b51624a457834344a4a79636151452f4d56514b4a6165584c6d6d49516169567952547451544170676544494d44547637314163596f484c67767753453438455454456674554c4d67686970416e3845486c37596f6b555a30414a5159346f6e44546a6d6a7a346f414f4a514d6d712f636f4d4b3563455978344944726f32536d4137304349674b5a747851482b62676f4b634554696d5a777a494641316c41736366434642776675525a7755455a71555a4c37304e4a4f43596b346f4a4757595a6b5a5034676f4f4b44416a694f4342694b4a486676526f326c5477756749346e46444654566d445248566d67445a6a4e4d3453314b6c616756356f4a4e7851315a4d4f67305374774a64414450324341346f733853536b414f6165504a414467365a6769536c45583755416b4445366b32724e446b4d6c496343674f576141636469684a6571676952556f493158584d76456e3154624166396f2f4b53366d5237467a6234456656647577723555762f6a51644d6b534444424e6f3031795169446b697a6c6b46594e584b734761426e77534e78785a414a50346b337345386e4b51766c69676d6b6f784c68346c6c493856424a676745412b5075516c5371634376596f3331484a41754f6553685a5152794f4b6253637343676e747855646b7348436375364155554c5555455838534245545149494d516848466b3069374e69685456326f464c2b324b6152596f44464851585144776e6b79625552414e516c5352494e556f7731484641516f37676c45416a73555a33775a42487277524454716c4171485177514f7a56537872686d684941644b5a754278514942567a2b784e55684e705963306f4278514e696c6347687872334d6d666b67484251414630306744546b6f4335593936424c345949455a57446a6d6a7249465252494271726c2b61417944345a49794447716b514f43426275514f2b515359304b67343549396943436754446e6c2b4b55696967773658514179637568703936614d533945587951416c756b6533376b54706c326346426a524a69655761437833476e4a515262765378594f703034346f432f4776344c46366e482f774161656d70702f7743364b316b555754316a2b6e745a6e68702f397751592f53366232626639764c2b646434542b6f7267656b416664502f38414a2f38416a5865446e6e2b4b4279645357574b6a6c6e7743456645364236694a536765394f5256676c4a456539417844463845706674516373355279636f447a51356c47544475555939794150714c497671356f5038554d4b4949347078524d654f6142725170704153727951495470384b5a794b2b39434d514b4a7352306f46314846306173694363326646524173736b612f425341626b694a65394243444956396969314b2f6b6c706d69316452797951516f516f34523549436f51466b7246547334496d6d4151485656415330315241616967464f6e46424b783746496d745644384167546d31454141474b4934635558344b554164414e4a77554c67616b424c414b4d674a69446b67374e696f6179354245344474514e55664e56784563526b724d6d53793651364347514c4b66676a6a334a584b416b686b532f4644535063705869674554716f532f37457a3863456f2b52544d6747706870795545535570694d516d5041356f49517a6f383042544e3144536941474c706c415979722b4345576a6a6d674d6f305a51426b644251355378514236496c76636c4941354a67574663554664366569457035694a50755174334a53735276454455594358657a6f626d514e7134522b6d5834724659325550746f755a756263542f7953703038482b434454744e33473543337259584c6b504d496273666c385854793356726a6850793844347a675062765850726132746a646161326846786e704930792f5075516e41326470626c4c4558495872762b3535633666676736687678312b552f553276754877354b6948714e693459745048444848495078354b6d33656a64335975577938504a6b484742366867714a41663236303347312f774338494e747a314862323553684f624748693653576673487877546a66574a533043594c2b4867546b48776634716e62772f386a63754d37662f414c466b6a4578395073695047334c6858574548534e2b454a7a4a6c5345524b512f534b316f4b757957472b73546b4c635a41794c3661596a6b634333615669334c6d6536624b31482f346c6675417832342f6a6a33445155462b397579323169563246533863655a41513331343765786375775a77465836714832306f3854622f384164465a2f55746a626a74726b6f4762676639795a345a505642747662793174354e634c506b41536663485065705065576264754e3255686f6b576a4c49352f67566d334e3878334c6168613652706c6f31536e5877672f6869737471456a5a735249723537793938386b485573376d317548387556592b4b6869655643744a2b5335307a3565386e646e344932485064496e324331476374486d51476f36645552672f416436437664583557764c616f755849774c3843442b4b4e7a65574c66524b5665776c753167514f396c6a76627147376e5946767843344a79483651496c33705374506b705a7632396e637651766d73356d5561654f4a6941414f4c59494e74322f6273516a4b636d4576446d2f5941354b6b4e78596e447a5249434138524f58627a354c6d2b58397659322f6e536c62755242486d4d34692b556e6632474b6b39653432786e484b3747526e62673275496271617274336969446f3239315a76435267615144796f5157787749644333763976636b49776b356c6877505957596e6b734d544339356c324e3033434c636f755967426a584943764c465644635175324e767434456d36504b4c616178307338757873446d394547306236467135656a656c3454485347636761515468566e4f4a57794453694c6b533450444e5a647150367534504755652f6f436e70524a326c725669416774326c365637584b62644679554f545253626665412b616276686864387241345562346c5a746e733433504f6c4979667a626e686e4b4e4e58414655526752597643494d744e3756786b7730636361494f756230524d577a53636753427845566e2f7557336f424e3952624358787051397172686668754e31616e627245527556792b6c5a44452f3279555035715a2f386851645739754c566b694d354d54566d63747870674f61466a635133485644716a783431492f425a6a6568743931636c654c436362596849345564773759316475394c366464747773784270726e636a482f644967664e427033642f77416b577a46757135434665456a564465587a59454e474d376b496c2f306b706655625a30526e4547586c334c647954597344576e5971622b34743775567133594f732b5a435a5959526a692f4473516162752f774276626b524f5453695749306b746e6b4b443463315a506357374d42636e4a684c444e2f6455724a5a44486338356e456677425a6263764c6a744c74774e626a62306b3436544b495a2b414f434471324c7476634458624c6a32786355565a76534737466b4d336c6d35333667506b71396a4d586274363941663035614936734249683350785a383256643635437a75784f353078386f78646e2b73464276753359576f2b5a636b42486971374f367337694a6c6249366646716f5232677379786279354463573458624a364c647747636f6a5670365456694b7334794b6f755766754c5634326270757a4d4e4f444135734741632f6d6736646a64324c737446756279787a446a694878484d4b376c69755674664c334632334c7a6a636e4455306449476d6a56614962765854745859376945627475735a59632f6567703332346c74374572734148476e486e49443855622b3874325a364c68717a73784a626a516646632f6437794f37736553786a666c4b4938723668706b4477415a6737713833376531335679643836597a6a447935355564782b4c5a6f4e6b3978616a623838793650315a495133567136444b4a3850696f784863574b35596759576f58706872636238726d6c7644417578626b3772534c6b4e78754a58724e595274474d706a416c33414846712f4a426662395232397951416b2b727734353550672f4c46473776374671656d63325043705a2b4a4748657978482f774379735234477a335643532f4f4e6d6430786b5958443946794f714e796d587950784344717975784677512b6f6a56455a4e3873306b747a626a716c4f54615a434575524c4e387856593558525a755762317765584356755565555a644a45533247464f7855546b5a32377859395636327a384f6a696736566e643237307445433562557a48446a555648596b6e366a74726269636742476b735770566e415a2b57506570644c3775314c2b47352f7744437558637677742b6e7a32307a2f584161554d33314f2f59654f486567376b2b6b4535676479546258664f73517546684b51692f7564575866424a714d43756673742f59473374323958554952424663666367305874395a745430546b424c766f2f4667514f396b392f63323973414c6b714867355075414e46796a44524f396275336a62317a6b64476b4858453843596b6d6c4747436535443758635231585a57346d3347455a6d494c7469435a43687a79516461334f4d34696343385468324969676f736d316c61745168616a496b7a6c4978654c637a6b47346a344a3978755074394f734879792b71542b4867344752343549466e75435a3334544f694675455a6173534e555a456e6d7a4a353337647133476335654c776e54575863412f754646676c4c7a5937792f4374755676544358466f6c3239716f5874634a57627573323465567031365859304f594c6476636731626e65784675336474584f6d567933475573744c31642f324d723462323150583166386454306d6734733379584f4e6d4968436475527543642b3349794d577137634277784331364e572b4468337379663841334242664b2f623151693465666735747737767954446332524755745452746c706b35594832397935566931644e715a6c343975304966364a4f572f6d6a7043734d70576470724d524b5679666d533152635245704f354838496273516237573874586457677552314d58423978414c4b7548714f337545516a4f7332616b6d6667374d2f4a33354c44614d726d366c4979387a2b684c723036523468687855334e775764685a6e4959477a302b347379446f377a64523274737a5a3559526a7839754b346e3332366d4e55356a2b5733466d377a564a65757976544e79356a6c794842562b5554456a69674f7145793578356d7147765547464f394c4b7863316b737750464331594d697839696774684d4176416e56784e46304e74367142532b4f516e694f395a4274634e4873566a6e45327569595a4236794574516436636c6c743773322f4e6a666f6258552f47427750346471772b6e627a793565564d394277354c5a76374d6274797a496a47576d584178724a6a784467494868757a6274527662706f47654563772b41346b2f74567364335a6c626c65636149592f74444f4f785a3939495774786176542f77434f4f754f724b4d704d7850795757352f35454e316374446f6e47496a2f414279694b6b6641506d7944717a757768706a4c7854704835716966714f3246445041365a644f65466155372b355a726d3674376d35747a614a6b306937503039426f65664a4c6f5032573442784a766669673646376457374c655a4c48776a453977414a57652f7534797447646965453763536544796a543348324b704e794f3333454c31326b446130786b63424c55376537337373786c3575337647443133415935347772583855485675627933614d6754574564553645734f4e42375971795735674a526954575a365278594f734f31732b564b37747231664d6557732f5744386d77616e494b6a5a546165712f516261506c50784a78502b30523936446f7933746d4e6e376b792f7044366d5046734d63566a762b725169644e6f616a784e41363549755338754e7566686a71496a6a39524c397a3979457073616f4e5a33753575467a636a482b574e5069566f68366a65674e4d744a356b4e386c79546331456d4f48747754655a704459386967394244314f7a704572683875756b6957522f4b6957473631376d4d59536532625a6b3246645947596463474165596d664641695665533254755864396563455733747974342b4b546a70346748694b6a3568323746364636506d514c7863736679566539334d724d5943327a7a6e474771574166696c323235747a6a41534769586738766759696f377669707535776a626137445662647035734f4c4d537a74324944614f34686338756254695234346a537848454f66676964375938775739593150707a5a2b44737a386e57546154742b64474f306d5a576d6c356d4a6a4673474a7750495a63466876585a587475657352496b387245596548712b6f2f46364f6737463366324c56777775533668346f67534a59353048376b383931616a62383755504c4f42342b3344465537642f75372f5a61373653574b332f4145397674376b67664c74334a3675565a4148336f4f6e5a3346726355684b6f715178445a56646d5332393959755438754d6e6d586168597469785a6a334c464b3548633372336b5a326449497058717737383156744247364c56756436577132596e796a4141784d63515769344754756736567a66574c637445704d5872697a38436342384562323573324a4345354e496a5541784c396a412b37344c6d78755173324c75336d4435784e7a706173395a4c45652f484a616476626c446457785045574e4a6c7a31525162625632462b4771314a78377632724e4b35654e2b646d7959434d59785056457938542f7844676836613854652f774472542b55566c7652322f7742334d3767665262302b4c6d2b486367313762656172647956387869626370516c4955695735392f4e632f646573655a41777365483670792b4c42632b3763387963374d502f414c653265694a35732b4e6363466e6e4a366355426c4d524452772b535158394c53435879726b7643434172503766635a364242504f4c386566616e463744386170543666656b487753584e68666831447151613974757674376d71502b714f52374f66426567322f71566d2b5243456d6e774949397a6750334f7649613532664743467174584443634445394f754d76642b783048706a366a743754786e4b7361536f61487547445a344b7935754c56754975536b42453448484867325063737532693433422f564d2f2b774b69334b4e69473175335131754d474d736f6b694c502b61432f6462324a3231323574353955514f346e4b6f2f63744e72653262747777747a424c4f4b5a446757596a73584a7645586f6279554334506c742f74415853334d662f41436476794e79762b6c413874335a3873586458544936515761704c4d72447549786b625a49456f7831456677317a77584d4f313832395062482f6a6a356c794d7376366b6165346d667755737a755332393364537469563258546f6c2f42466a3350714c5a6f4e396e6557647830516b3873574c6a76446976636b2f7565324644637144704a5973474c564c4d4d4d3167747a6c633346672b5a35735272384d47694f6735712b4141326c2b4f5a4e2f77435a5164545550713450376c7a5933393165742f6357394969527168626c467959354f587850597430515a5778453036636531632b7876346265774c4e317864684854355938556d6f4770562f636759372f4150725131764345725772526e7163636e64737531624c57367479742b614a44522b7268786667736c737a6e765947593079386d76416451634c4c4f3149517641416b52766955687841306b2b334a42314c57367337676b5779375671476f637744383256374575467a504f6875647a626e624f714e73544d354d5759696739396535644333646a63674a77714a436c5077515a4962347773544e30447a625a30536a484f5830742f4e526c5a4734593362634c737636686954704742495a2b78767857653774346e6532354559784a504456436b5365594569797476412f64326952394e7a2f345546747266324e77357479654947715279413975394c4466574c6a6d4576434e526f58624d687855646a726a4463577a36594c4d5431743459342b4a323933465851335673336f334c7337683075327145514f6f4d66434548596c7572656d45337050534948695467775a4465626b324c5771506936514e57446b7335354c692b6439726373776d436264767a4a57354375702f432b5930676c6457653774334c65754138324a704b4f4a417a36574c747751516663776e487a444735412b49786a6f4d666958483571346269334b4d357630327a49533561636663756443566f58725932524a69542f556848555943506634532b444e77514e324e75317564764b6c795572706a4673524c413079346e336f4e4e33657874583765715457353235535a73533857357579305762384c34313269347a354563767a5753775036396d6d466e3365464462335932726c387a4c4133524876494151644b5163555567426d697a4d54376c4178514a6e524552342b78554d636a676855316a334949346271716a55356f434e57527748426b45414b49786f67354f5655335967584572786b474d4c777945706539653065557142654b746b67332b47713467396e592f77434f3250345971774e42565769397541616a425767494a486b672f4c425251445157434145763730784758443349526939546d6f3145414a314e6d55786b6c6a6c705249727951415552484530544b4e7779514c47716b754f4b497143686f4a786f676e785542417155306b756b4242427954596a676f34775367344943376f444646686b6f3451544e6b546852515270524b41355148444149615743684446526d51506d68496734716158714d5570464b346f4447754f436770564b4b63776d785145486955616f615755504c46424a6452644538416c72554248424246425642754951426441614f555332534772495a714867674a6b324f487478524a4141644c4a2f65736e714f344f30323179396759784f6e74792b4b4479582b5462767a372f6c674e3566547a64636933747033414e416f66696d32396e7a53387a346935664874585a684132777a554874386b484f6a3656636c77397662425050307135487767452b3146324c526b66474d63766276577946756749376b486d6836566547494c7248637379737a3875634735534b396b4c64612f6971647a735933346e586a6b2f464235412f44347632716f6e792f4156747637656471556f444c323978437936514b35384548722f7744462f55444f333972644e525742355a6a757935486b76547653712b62656c587a74397a627535526c462b4447685830664e6767494c6a67564364496f70714a435949415864547452353542426755424341476f633061414b434c346f494d614b49534146537170377178476b7078667451586a4644424a472f626e534d77663556626d675455377145636663694f4f53476c424b756855466b6646676f4339426b6756336f6e634a4a30624e4d41676d6c30496f6b4d6849356f437a6d714271554d56546633646e6255765849512f6d6b4155476a42513071466748724779755546364438354e38317374336f58514a776b4344687a51506935556a51636c41613055656a46414d4d453053673552787167486837314438554e52646b6345422b4b42725246516b46425067687052636b6345516743694f436743414238314f655349785251414b4d70676936414b5a736f51686a69676a706d346f43685251594e782f39335a374a726575667558472b3235794975664a644142424646464f53434b4b494f67685255664a526b41484a46314645415552555a6b42775178526444424246436f364b434b4b494f674b436a714949696f67676a714b424d6743696969434b4b4b4941696f6f6769434b4341714b4b49496f6f6f6769696969434d6f6f6f67694b4369445076662f74376e386b6b646d663646762b57507955336e2f42632f6c6b6a7447386d476e445345463669696943494f696f6734556a38766d67546b6a4c736f6b6d30584951545453715178657373457a756165334e4e5159464244454e7a4b6a45386b4e58464539744545774349686d4b3151672f68536878466878514f375935714d33634f7844554b664e48737a3549435a6436556e4e4155714557316535414765694c496e395073796869572b53435550656f472b4b6d6e565467703855427859483243673670644b47706a584e4349784f53426d345a7053786f557763394e454d4d55426f4f3130776b4841347052463652375552454530515432434e6345482b6c43744133735544696d4953456b7073696a51345949456f4f626f78693534664a4d4739366b67376c366f4a47684b4269496e673659494573454130394e5532696d6f6c6b586f6c44346f486a68784b484e43504350376c4a6e563249474b6a4f58516f4b44344934307751467a7757486661546673762f452f7557316a376c6733784d4c316b5248694b4465526d41507854446936584145444e544842424f515a456b4d6f2f59674a4675415148687753486c51496a67555942424f5239364a4c6365354c6a5651795a6867674c676f6d464b344d707165756147724c346f4349746c56423336654357523030667452665477644130634b346f61686d4b494d445250534a514b32716e42467832496b44486967412b417751526d4e45306a58547843447657536a386667676b47436d47436a50564155356f4248506b69706b33765177354947695777716734554a41656771695a6355456d41516c2b616336537a554b6a463351416c366f456766796f6e71726b6f526d6758534735496962496e4673564469674f724a41317078536e394b4a4937304549627354444371616b6b6a4f4d634545494235464b447048636e4a6f7851624e4249764632526a58484a524b426d63654341734d506969636550344a546d6e314138796767677558756f662f7662626e2f355a2b55313144506a526375636e395673452f3841624d762f4148494f70474d7375436a566f68426c416367675953352f424b485975692b53684f414e45457777557131564e4f4c56514a6f337432494830354643495a7a524c3145593549694c426b42315a38614959317a4349595634714f5269676e79533455555045385532714c63554130736f4742553056525941554b4151716453616e636c442b4653527751545478554a627051366e4c3144647941693955424244674a677a70544544747937455839754341684453413259513141344a68692b6143452f7046554e525a454e6b70707a514268376675524a4a484245734f6c4471425148436b696746472b4e464761756642424479555a6936674b4f4d6d51426e4b6a7552712b4349427849354951416a6e676742414e5852683076384549784a356c44462b574449474474564c4935633077436b6f356a46417a354a4364566330773667355546655341484269794c686d5569355a32523165354249786f686e564846434566704b41786646475179415659425a307850424164515a5349535078784b61676353775145534f4f535550676d59476f4f4355314b427756693956492b30756532592f466177613134724836732f326c7a47756e2f3341494d7670555038417a4b66396766384175586548785a634830302f2b59522f38722f346c33535469674f6a7551384e51614b56697053513449415a7452456453672b614a66773855454a434557434a785a5156646b41704b694949435750347034686967417a2f636d4c597061344f34512b53434838564455317839714b496d4c79664e4142513663555739753154485046412b354153365670476a7036444654416f4a6748663936534a594d6f51394163464d5479514d487843676241344941313746473159346f412b57614f733449786a49463377516c554e7a514635436d53676a5371674a4645413578514751593855477964536f636c4677394d454559314b684150765564716f796c376b414a5944696847476b386b5351525251426a326f4a71617646414768694f355174675648656943617539314f334a4633554e616f4943483756446a384570637555776b2b4b425333755467704744354c4a366a366a4459327463382f44486966624e426275647a61326b6464365941397665764f62332f4b43656e61775a76726e6a33443833584233572f75623234626c30755468484963766274575877346f4f6a6439623363386270505a54354932765874356149506d61674439526463775067635564495a423643332f6c462b4e5a434c484c322b613733702f72566e663944365a66706c6c793539713843413261496b6263745563636b48314873525a73367268656965732f632f38416a33662b5836542b72396f2b4b37777148474951415046436a6f6b5a385568366b4475636c42494442414e67546968556f4731424b432b47434d5938454542616a46545335726b68636b5941795068475059736b50556255324a31526a4c43556f536a4576683159634546753632336e7447556a6f7a69414f707134384f4b764d6d7852424f6c423336636b45636f6d6f635653766f52377149434b4f4f35415846566276696479647069444152667666343056326b665437424148784874564139434e443071644e454246657075784752634a632b43684a5a34346f47485668676743543152566372397546794d446a50562f366356504f694c766c524c7941315370672f48386b4275516a6469597a4478492b43655a41777853674f456634596f434e557531426e36516a5873514e4b6f4447495a6b53444b6f51714b4a5a7a30784d7066546a376b416c44584355416153422b4e454c56767972636254767041694d734133344a49582f4d38756341385a6a56712f5347635056316345413030547a4434346f4f5346584363706a71426a56753775346f4c4a41684444425145424a4f3945536a43574d6a7069334b714377446a563041446e564a35735263466f316d784e4d687a37536a626c4f51655564487a2b484a416c36467934587433504c622b474a2b64666242437a746264694d41784f68324d73586c6965393150507473356b414f3157573730626e68494a375546674761446154374d6c4a2b723243534e3645726b726366464454712f31666d794331686963555245596f4467674f4a51456b4b455a7851596e6945774e5751414130344950587555664d397171733366754c63626a4d4a42304673674a596c3353776a473345516a534d51414279435966773449686b4571554f6b64697173377133636e4f3345395550456a433743345a52784d43783757647663554434654b6f5a51633057506171647275667559433641514a61716468623845463851796d72337054456b3078536939413344612b6f41532f306e39714377456c52794f78557776526e636c626a3944616a322b3363726a68564141466b75374b563879686375453279617759436e4238572b504e613366717755416b5043674a72696f5341575570376b6f7a41486567666d4855304e563075736a46526e514c70675a693433557a5237437a2f41435467417555734a64496f782f5363516933436851456c38423846443072506633634c4e7a796d6b5a734a644d544a685868324932647843382b6773596e71456e44646f4b433465394d7a6c44557137313379726337682b6b4756454668636a464141677638414641536f4363305a484e414f78637231613635747734764c33436e7858576171382f66506d37307a796959782f7742754b42397674504d2f716c58456161454c58666b4f776341735677502b3141513561714f674f6c746a565559717753444e7851484e777237746d4e36476b6833565170584d6669726f7a3153417145484375574474376e6c796f437537734a6d65336963614e376c6e39587476434e7a4d4b6a3037634333614d476e4c716c34596d514861794474354e785163454d557471636238504d6a55537a3976594b776d4d5367455334516c557071476878536a394b437539435a6a30584e42624b4c3037304e747478596959676d524a4d3547574a4a7a2f4a5747354732776c695470484e506f34494b7064514d5157344867754c765969325274675469626c79583670486975374b35706432594265534e795635355378754835346534494e466d795a56616e755453326c65724e6465573246754d644e4b64717a53366967786661526670517437436e5649397931793152777a54774a4869514a61324e7545644e566a336c6f3759366f63614c71326958592b464a764c506d5744786a5844446b676259586866384145486e6270712f6d2f642b476136594e46776653706558663044366f4f33597578647577323844636e5349787078594948425264526d6f4641774e665a6b424d67437137304a58496b526c6f6c6b52583570774e4f4e66624a4846426c73625879357975546b5a7a6e306d574441634146704842567776786c636e6159764178722f4d48396e54366a5641377378516c495a355a4954503152524743414f3955445054485763716f796f4858503959633757516957655559397851656545357a61354c2f414a4c682b4a572b7a73593259746952562b6172324674397a6742455237577958527576416d4d616842566f4d5256536e763730784b414759514d4b594b3378594b6b466c62453071676f75576f7963476f584875572f4c763644344a65486b7651454754454c6d6572323947695568395748424231765372347657524752724470376542576d396275584131715a684c39576b4834466358306e633274724f517555314d7a5665574144635375316133734c70304e4b456d66544f4c5038416d6747313277322b71526b5a546d64557048386877576a4641524172785564793253416b67316444412f696778716f4d474f4a515134684d52526b4457544964524e666367496a524b4f53707537324671353554534d6d314e43426c54755432723976634f5950536b6f73784278714367746942686769376471474f4f4b424137304149315043574246564978686267496a415963682b536432706d6c654a787951417a30466c78765550555a546546733659356e6a6b7958315066536b4e467244346e7358476e4c55395759494846364e645037306775673077564e79524144736c45786e5832396e51616f546d4b505448713535717978755a32376f75577a3144686765355a487271786f69532f554f3542363359656f773367302f574d596e327174786e77586868636c47516e45365a4442656a3950395638372b6e65706339775164657676564e79324a3431306e554f31576b50685656307877346f4731435143614836516c65726b344935746a6d36414d374a79456a6e444a54745147585452516a4d71536b314f3554476d43413431534832344a347348644b4764417a4f7647514477763841457a756667765a41736172786b54586367635a4642374b77663655442f4446575039575353774774516950306a354a3379515166414b50715142594f416a7034596f4a466852553339784778457a6d634f594354666232477a7436356c697645372f6666654f5a616b486633582b5452736c6f5774663841712f65755a632f7933636a77323467642f77435964634355364e77707a56556763304870375038416c31324a2f72576f6b667755586532487265323376544136542b6d532b64672b3950616e3563684f4a71672b706f56505a3856356630762f41434f424174376d54553852586468366c743772434e324a4a2f694344586a514a68774a536b76584c696d4a4178644170692f4e47687777514a7855656a42415543584b503163307457515145756a555539794a6f484342784f61434f4165785354664651424c326f484d386b43434b66464d4f6c4a4b754b42746235496d69563350465537766632747044586449412b50755158676b42384b706761636c35652f3841355a5a77674a637166745751663554664d364d3341785a42374d47695166426564682f6b383950566137347956632f3871692f54475464794430376a48696a45727a396a2f4970534a4a74544d517531744e3562335931323865654b43344e6e6b6759746855715a3047436e4d6f4359315a634c2f4a376d6e616932502b704f4d543243767a4158655a714c7a6e2b577866625265725478375155486e6468467455327850775853424d787a584e68636a74624d584653506637594b794871576e78577933356479447132572b6c626f6c7567562b487456594e6a754c653738424c6a455a2f6b744a6e4779524b6374504f584a427169574c697634497471464b742b3732376c6a2f757530686863642b33386b59372b7863724362443356515976566470726a35677848694f4650324c7a6c2b4767757a4c32306f476354484930586c6431594175547466554749344873396d37454747464b4c366a626e7269434d77766d4174616a6f2b7152302f4a66564e494645456b686b2b434c45556a6d6955454646414b31555a6856656139632f794f4f3342746261732f716c6b4548543954395a73656e783669397a4b4b3868757638683365366c51364938492f6d7550637547394c584d7554696b3153516268636c75442f556d542f717a5655724f6d674c6d717a4f58546937494d65434336316375575430534d657772716254317a646251342b5a4467545769777776526b4f73554b726361586242423754612f355074377a4337475544324f46326264364e324f75334a77563832736a554470397677586f503865333866504e71644e5170775165714b5a36386c4759736963436748446767394b2f6b6f426a3742413449435a454c6e2b706572626630364c5843387a68626a55392f4476376c69396339663841736835466d74386a7445487a356e4d44333550346535636c646e726d544b527a4e536531423166556638693357384a6a452b56622f54412f4d346e6e6c7958494231397155416a3278555a69354b43647136577839597637474f6746342f534a566273346357584f302b35416f5058322f77444c6f694945375a6b637a67507858573258722b303354524574456a394d716648354c3579532b4350687751665765785146366865572f77416439644e7959326536596b30747a34746b66772f4665716f676a6345476969597147706242414245414a734d55472b4b6744346f4743575534572f4551427a584e3956395a742b6e6876466379677647623731532f36675875536150365167395a652f79477843526862716565437275657058357838794d77422f42462f6d764632353441696936343956743277494145305164772b6f3372493136746641474c4c567450584c647761623054446e6946354f2f767650625144464e43525a36487451652b684f4e794f714242435a6c346d787672753336374d69412f686c675636583033315747384767306e6e464230453243685151464241736967352b364437376248674c76795853584e33512f3833626e2f414f702f3756306b417955555543434941715934496c42435645485449416f696c4342675851555a5242464864525242455647514b43496f42456f41696f3669434b494b494969676f79416f6f4b49496f6f6f67696a4b4b4941696f67674b4b6969414b4b4b49496f366969434b4b4b49496f4645554647382f344a2f7741705337454e743766386f54376e2f696c544970646c2f7741454f78426f55555551425252464277524c6a6a69683467546a6a324a6e4f487452427967527749345652505039794d68495648755131466e34664e424b51464b6f524f5977344968526e636535415a79417738565563364839364558504e415349424a51485347636f5242774f4b4d675065696553424245703366356f423853695a49496353796739796d45527852596f44496d674e456b6f6a4a3354737945634f415144444438305366636f326646423541634544503841554d55446a576e4c69506b6f66626d6a4846414a784a384e554e4c4a6a4a7768456345445a2b3145544f7246436f63444643556b425968536b736163464b5244346f6a713763554367474a786f69776432556c495a5a6f645164412b724f4b47444e6768475231557a7834497538575074376b4262426b4a67774c537a52623655786b78346f46416170554d6377687063755064676e315a3855434534493878576f5264796a515a34494a453679566939524c334c4c59366c7359477659734f397065735248366e51626953527a5237614943545058735169354c6f474c437149476f4d437135394b63434f6e5767426a6e37464755646674375553363655545a612b4b41674b4f6c4a315534496e2b46424834494770716a326f304b426342673361696550746b6f79464d434b49446339796a354a632b724a4e456b592f745152394e476f6a4632726d6c6648676f512b4341784f65536244424c6a676a326f415871464761675549393668344641773849644177426b2f4645506b704c704e663249435067557353706b6f34777a50755145794936564448696f7849716c30315949476b4b3651556135344a5a48434f614f6f745771412b4b6f524a5a4a47714d75724242496e6a77524a64695650434f617266686b675941593549697448637145696d726b707177356f4677375530637a77525a314d4f6c41756167424e453246666d6743314545425448566a6d6b314530657642456a54544a424a41366d584b765262315862766a3563762f41496c314d657063322f38412f774155737847417446762f4146494f6e4354686969574b726e646859447a49697542366c363659533876626e44453565337336443045527077566f66785a6c6650356570376b6e554c6b76393076774b757465756275795131782f35716f50636e6e696f4f5338357466386e69513136423148394e56323970757257366a72737a42515879544f776f6765484654776f474a616e7345725052455537796a6a58326441417a6667674453716a5552694e51514b376330496b4e2b784e6a33386b756f6a734251504b544a59415a4b6653364d692f496f4961386b41354b4f42664e515341504a415770524138633831415969705077526b4e54356f4a4c4a514d4b6e4e4a71314667695a63636b42634e5149436d4b443043416e567345446b6f7566636b6a496355327267675945424b3579376d532b5978664e4b38687a434333484432434a49456771544f4c317737457a3665434379453471615455425536314e656c4263412b415a516342346c584f394331435679354c54474e536558746776492b6f66354c65766b7773663037664c47586533795165757533725671576d647945442b6e5541666d73312f31546137613372316168674e4a426473714c3536535a4679613853686967372b362f77416f334d70663047747837484b7a6e2f4a642f6a35762f706a2b533541464543554873646a2f414a56433930627761442f334944356970393375586f4453496c47735348664968664d517655663474763841554a624b5a2f69742f6950626d67394b4f6c534f7150596a7165694c3543766367426b796b6631496768514f7942524c4d315042454f66623570744842414d65584a41733566554d5173767150714e725977655a476f34527a506477357137646271473074797533693050636577632b487858674e35755a6232374b3750456e7048415a494e32352f774167335635774a61596e394e506a69755863334679344f71556a326c335662566448776f4c62473676574a363763694478425a642f5966355864747448646a7a496672776b50774b387977376b44584149507131692f4463786a64745331516c6d4552516e4e313839394939566e734c6f47762b6d6646453465334e652b7333726535674c6c6f7641356f4c49395065696367674b64696a745869674a4247474b45574e564a68713571455551527757346f6961684977516f67684c736f2b536a56526b4b6376795141454b61667071366a44366b615a6f44716f456b6e4a354a7a68795368417874356e44354b456c3656437278494b61676c306f4a696c77365578692b4863674d65434131434f6b397945714775476179587656396c597064757848495650772f46427364426833726d577658396c656c704677676e395557667679646448557864413750544e4173456459666c6d6b7069676173714246365552497956623855446b4846416a4a51454d666b6f57727051416f677564517078524e5547635651526d35716158785262676c496b657842415163455a46716f6e476a6f6d705a42496b6e73534f446d6f53774f536d42514141766a33727758724871423332343166394f4e49566f334876782b43396a367a7566743970636c6d526f6a32796f7641644d677a2f74514b787553312b7a4954426c4c736f75335932556f576a4e75716248736a2b3350755674763053636f3669514d2b645548426943593465485032644a6f364e5277587072507045684578504d6533747a574b586f312b33485470647669376f4f4f415246365670324b45754e4f66344264542b3133497745706a2f54795276656e79695a565a6a542b5534476e7345484c746d554a43594a4242476b6a4769392f3654366950554c416e494e49556e486e2b3348345a4c77563242746d6e483559727366347a752f4b33666b2f5463476e766a55452f464237535172794368796b6f4e5368306b73675a7176524b326d7168416a69675344516e42413542626d6c6f5a44676a6a30714869677033502f46633461543869736b59772f74774d6a302b5348662b5662376b496d4a457343476b75564f4f79734e47553554455761426e4b5551334c44336f47736139784b4669365a4e477a43526a4536544b55735859354e676c6e4f5a746d313568364c3062596d5046706359396a7438776b33473968646d4c6d6955573664635a365470507a487346645a334f7a4e735770616f4153452b724d697276562b614336467332647a70457053684b334b54546b5a64514944317739714c46507a447368752f4d6e356b394d69524c7061556d5a6e6241397136384932726b6875425768692b54466c794e7873764d657a61686369444e77387636593667535148355544556642426f68596a66336438546c4942725649794d617363534b2f466b6c6e6354386978656c49394d7a626e7a695359682b4f5336634c4d4c647963342b4b576c2b35325659325673325049622b6e587471582b61446d4463584e45334c472b497974637455744e4f794a69653158376d634a58664b4276534d592b433154532b456a4a3475546b48376c756e746f5844626b525732656a354a4c6d31746d666d7649535943576952694332446f4d467556792f5932354d3541797553684b514c45676178586e5438566f73524e76645473784d7447694d68716b5a4d656f596c796e6c6232316d49695a6159326a71724a6d4a6633346c597a36333666433735674d6e4930556a4a6d4435494c392f77435a4c6332504a30366d752b4c44435042546178313761646f45692b7838333957764c444c394c555a56572f55647666755275524d70474f6f44705944557a384f4861745669355a7633686474306d326e67376352386b476147376c647557373450394f496847655165364b2f37656e3470726335334c646f616950506e496b673145616b5242796f4267746732646d4e75647653304a6b6d51346d536c33617775514673686f525978624545634478515a535a626164797a47524d54614e7750496b7849706961742b495649684b3162323938584a6d637a616a4c564a775249594e683255666a56644333736f52314176493342706b5a467952326f6e62326a4333444b32596d50486f775158596d7637466e767a31324c686958614d784a735177543765784b3371315363796c4b664b754875487856467a302b7a634d6938687238635979614a3752384b494d316d55774e6b596d6b6f6458503841703064557a684c37536535317a31776c4c54316c71547762507666334c726e627765424e504c4a30355968766b6b6c737255725a736c39426478326c2f6d6779365a37626332684352497561347a45704f2b6d4c75325864526c6e6e636e355130796b43647a6f314135617950594769367073776d593344346f453666395643717a746f52476e4543666d342f55372f414451555749486237767974556a4356765730704756524a715055597176314f5534797454674271684b557571676253333472664b7a4133504e2b7653595634667658443365362b346e722b6d4e492f6d67613375546265526b44636b6455327a50355a414b6f3771354b4f6b546b774e476b632b4a784f4b6f4d4371337a77515035676a534c456338767a5769336630347844355348354c4c724538522b31447a4b3151642b78366c435a305449684c6d71726c77324c6d3775772f5262622f61567a424a756b74796457324a6d795a466e684f6b343863753344444a42757351765275326d6a64622f712b5a494545636645574c384d6b6731334e74506547354d584f7563657270476b6c6f36634347465843303747466773597a6e3030454a5466546c682b62386c644c3079314d6c39576b395274695853547a485033494d6b6f4863626f514d705269624d5a474d5a455631483564797246366362486c36354f622f6b435831616458486941756e3973504d4e3975765470376e6638565850613278616e44515a61704734597658552b494e477232494d38625274626f516a4b6569554a6e544b526c5634317237634d566b746737665a3274784755332f702f5630735a414d324766626d7447327345376a7a4447596949474c335a50496b6e6b54514e3856722b30746d774e7649485147702f4c2b30494b515075373932457053456265694d5247576e7852665557566d77757a755778724f72544b55645836744d6d425433647043354c7a415a524f636f466e484e5732595173786a626747694d45484d4e6b2b5a653346727832376e2b364f6d4f71503563776a593346736a6333685052416d4c547878694770787937563034576f577a4b5550714f715850414c504859325a516e6230394e773670567a50792f42426a32307a44633234524630516d4a36764f4c755934454f5351654f437a5734655473447549546b4a774d6a4871366647614e67587a642b316457477868626e4734387053672f564b54346f2f59326a592b332b6974487255766a326f4e41693677656f6732774e314878577572746839512f4c6d46717432534c6b376a7544706a4750414438542b5365355a6a646759544644513969446e53684c62626546754a4f75374f49755849385a6d7048794373455474747a626843556a62754357714d704754474c566339725972586573787632394577444574384f445653574e70437a4c7a4f6f795054716e4c555734494f654a334436614c6d6f362b6e7165745a6a3846634c586e377135435570694559327a706a4c542b726733746a6b726a365a5a59676d576b6e566f3164494a3444325a6159326f7875473442575452502b6e3936446c526c636e5a73325a53493158626b5a5366713077314e586d32497172524132626c364771624331714771547434734d546b7237323174697a6f455a5361576f615431416d72676c754b703257324a6e636c4f4d6f69514550366b6e6b63616d70624673554641684f46726233497a6e71755374786b6454687052664130635a487671744550364636355a6a4b576e7968633670457361787a5771653174366263434b57744f6a6c706f455474726372687553784d504c37716e3855484f45705866744936354456626b5a744a6e614d632f5972567443626432395a636d4d4a523036756f744b4c346c577832746f4732596a2f6a44523743415077545274516a636c6348696d3272756f45474f354b3548662f306f6958394b4f4d695071504970744d725975376e635346736b43505431434947645763756543316a6278467a7a52346a485233592f696a754c55626b54435931416971446b37615a74333751674c6f467a554a2b625855776345427978667351467563747065767a6c496b693748535a5541633444324b364d4e6c434d684e35536e4477796e497978706e6c38552f327349576a616a2f7879314f4d2b7246426b326c79573576504e346558474f6d32547862714f52344370624e6975674961612b3156584c6278315275414e4b4136543235486968747245725671467552314749784f6143346351754236665a4e363963756e776963356173712f73586f424a36726d2f38577a6e47417731524a34354f6754655836614c58395358695074677566507a416455745154577256797a616a62684a744f4a7a53487a3565436f48785158573737552b61764d77326f726d336263744a636e564b76376c66623274754945326c492f78532f424264393063687171746d33334d5a306b4e4a58496c6575524e4c577275594c5a62766178707657664c35346842723956695a32444564767557583077337a356e6b6d497258573544386d49562b7a6a4c64433761757a6f5043324c53533748303077686f75796d4a617050706d59767a6f676c71345932625669424d444b374b31636b4d61616a4c535748694f42474376306d78656c5a68496d4d726370694d7a714d5a436c446a562b3561667472506c2b54474c5777614e5167385878666d6c746257336231467a4f5567786c4b5479623235494d41684f473373337a4f5a754532684a354f476b775a734f2f466149327a75623130536c4952746d4d59615a4d7a78636d6d50657455647248793457767068703038744e52565a643362694c75735737684d685879356949504b565237786b55474b4542754c4f307558444b556a4e74516b663475487a78376c7233686a4b364c494e326252724333307458456d6e634355396a594e7437646934576c623675677351655859374b363973345475655964555a6548706b326f446a2b654b446c587231362f73345778716c4b354b35624f476f676171484c4b7064596476474a454a48456156364d656e576862386b41694c366f7361676e6765396354303762656249522f54714d754e4a4d673765356f3272412f4a6334774d6a306c61765674774e76433341523148672b5158464e3765534f714e735248747a51644f6f666970474279786459724636344a4e65625677576a63784e79337031455664785242726a4352795630496d554a776a694f367134567259794942463259374a4c702b6e69395a75364a33504d6966714f4c684268394b5937727367583934585439547551756257556f566a3061546a3963566c74526a7450557a2b6d3544335a2f677477394e73527731615164576a56305032657735494443522b386c456e70387550546c6a4a597047647933434f715166635369576c5675716e59756a6632734c382f4e4a4d5a414e71675770774b574f7a74414341426145764e377a2b2f42426b422b31765849524a4e7357764e416c497959676b596e4b6971386d517357627875584e63355770543671485551576244504944357270697a4558764e50694938762f41457536357632576f786862743349694e794d75756277694158703146337937636b466c76624863627263504b514852344a61613642576e7479565733757a6c613232356c49733574334f7739494a377750657570437a47453533492b4b666937714259747a73394f334f3073514a4568704843447964792f61534d634546555a584a57664f4d69317939485350344e514139347233725a4d6b37324676434a74794a484d5343756c743764793135422f77434f673747773777797274624f4e7551754f5a54596a564b546c6a3763506d673556737a687359376e7a4a2b594e474d69336a5a6d774e4f4964612f576d4f334a3454672f765776374f304c50323330444c736b2f7a5650717473334e744e7352582f6256427a665437547938357352325a75506b7264786445435a45756e765174574e727168632f7145644c63386c6976517453496c64626d67736c764c556a706475786149594f43472f46637a52744d6d52485147746875547367365478692b724a5553395174516c5369716e4b34423178303833315557574633623235744931504a2f336f4f727474316276795a33576a64375437717a6f2b724564764e632b506c3371775077624264485933486942664839544b51772b667a5163583079496e754c4d702b4b4a6c467639456c337a666c486351747a7452366a4c5263315648532b44553459726a2b6e374f4e7a637a747a5053486c7759767878444c745232634c6339524d705348686c4f57706e39716c426a6a4d6e6158703669344e384176686a677262392b65326b4a75385a5771446a4f4f487666344b32667031715570654a707671674a4e456b346c7661717575574c64775245366945684b50383063454743334b34384e6e716b5a7775504b54314d424855506d4971576f472f4737666c4f55626b54636a46704d49614d48474277712b4c72555a3763585465315138787450692b6b56347066733746346e54496d4d7a31526a50706c3239756646426d3179334e79795a457745374a6e4b4d5a4d2f683464763763567239503152463231496b694e7a54462b6f674d446a2b613065566231693442554451473448397946713049536b59597a4f715862682b4344466346773775586b36662b4f4c362f774359384658616c704f346c66506c33616170437357626f494835352b3564415752724e34346b434e4f412f657135375331644d7a49663867416b4f5164757a7551594c556a432f5a67504e416d4a503574645452656763736664324c73697063724a623255497a6a4d36707a68345a536b2b4e465a7472486c577843526556586c323139772b53437a436758493955334d6f5842616966703148397137456a303857586a35585a5870797653786e5873416f6766635854484442637779423669414b64693279747a753277414d66636a4430312f455743446e39315649776e4c7742313266733444444a61625671456571495a427876744c6c487a5444617a594f482b4337735143616471756a616b5367387663323932324e556f30726d704334664563574b39544f304a524c6a385635712f594675376f7950376b487339744b4a73776e44445446573456586e5051393662557674356e6a6a2b702f78586f3956667851434f623449676852323748516c4c34494a496153366d495a4833497577514b48774f436c51482b534d6c4a422b6f596f435357664e4c435845497936753153585567687251592f6b7646776738747a5436702b353137496873614e376c3545575a614c3179492f354a7934594f673964596b3171332f4c464f4f6d4b71735849584951305342594442585949472b52535837304c46755632526f413659754471586e7638414a3931307832342b71702f306f5050627a6553336c795636394b67384d567a707a70525733324c4449384552737073364449694f613351324535783671647130572f54676345484c47724a46774d563362657a74515947496c7856763975737a7034546b6738364976476955754377392f746775397550537445645561632f6242634b55504c6b306b487166386439624a6e39747544697769563677754b344c355447666c7a3143707958302f593378757246753850714151586d544d4d616f7567445855554a4851355148354c6e3772316e613766787a426c776a566562396339666c754364747479317643557839585a792b61383651667151657233482b587430324c646631532f5973635038414c74304431526766662b61382f585567492b354237545a2f355861754e48635130766a4f4e523773666d7651327274752f485843516c4357427864664b3952464156302f5466565a374765714e596e7852795035486765346f506f65435942324b6f326536743775324c317376452f41382b66465a2f55742b4e68594d6a346a34527a51637631373179657a6e3547337250366a77586a372b37756269657536544970376c79563079757a4c796c57537a456539424348777752426f6c785151616f5479376b6c79576e4444676b746b636667724445484641624f37755776444a6c3064683674637358664d5849306c4b3759653942394f32572f74626d4c786c6974724c357a366276447435596e6e324c336d787638416d57395171673045674c792f2b56583553456473413436626a74326a322f42656f4966784c7a582b516259334c31736a444433462f6b36446c7a456476487259734f48424765387367524e7942674a6a706b514d4d48702b3072586332677639556e34386e396a56567a326e366846754a6a3744765155625745625634473257504c327a572b2f47336459545753336145626b5448776a4c32357262633153756a4a4244445962634e646c4155772f636a39727372314c4c486e476848742b3545656d3237673875354856445671385658342f68697931783249426a4b495a6749444d73476235494a5a69514b476e78586e2f5742356535686347654e4f31656e6e62594d75483676747a754c317141784f7150357432494d507057312b3833466f436f457a636d654146657974427958767a553058483275337469324951704877344d51526a33726f624f577530446951673075485243464d3156667638416b5770336a5852457939776442356e2f41435431733233326c677366726c2b41586a366c5065755375794e325654496b7137615742636b387643677a646d4359514a777758544232305a566673576d334f3363692b6c427752624a594d6e6a48546975344c635448426b7471573068307a414a4e6455736d51636d334530416f74473873614c635a4c307533395038415464353448316a3664513934532b7065676e527173456b522b6b3151655473584443574c7265625479453752615758647a584f75774e6d345948474a5a6162473530304b44322f6f6e716e337472524f6c794750506d757177447576482f34724d2f647a45735444386c37457866336f4a6b7376714f39687364765063532b6b556a784a772b4b316c31354c2f4d4e78303262414e44716c49646c422f77444567386e657654334679563236586c493669656155314656414837564751474c4448484a42536f424252785142744a56396930626b32794e4656467a55596c64625957496c3569703967677833646f59317757535959735636532f5969662f316667755075374c42426a69544270417363614c3662365676507539726276665552312f7a43682f4e664d51514637622f454c784f3375512f5450562f754837454870514d386c45494f5136684f596f5545504a592f56742b505439764b387a7977694f6553325263347278662b5962737a7652323054534654326c42353237666e754c68755843356b61717941303474697149764575636b444d6e4642644f2f7743726c4d6b757179636b54476a6f4c493370524b32324e33467872446c6c7a6d6f6f4f50755164365947594d5877314a597a6c744c6e6e51795046545962694f376835467a2f6b6a34543766424465513044536166537944333969384c39754e79503142315956795038656d6674764c6c6a46646674515242314452526b4850336e2f3375322f2f4144762f414c56306c7a6432502f4f327a2f38417a66384132726f4944696f6159714b494145536f45435542555178524b4170634556454555555551514b4b4d696744715971496f4a696f6f6f6769434b694149714949436f6f67676968544949496f6f6f416769434b69416f4d6f696743696969416f4b4b4d674b4369694349496f49436f6f6f677033662f44502b557162542f68682f4b464e307773794a77414b6d302f345964694339425246424545564548446e4535704451426c5a71705770354b72514a5949493337554144704a6c346e37614a6d4c55775268316546416a384d45593474696c4e59305456416365464178414151507851315a426d5549413730445a564e564b6a70474b564d7a424153653530724976326f4175656c415256476f376b4d77695271775145696a715939696d48506b6c664b4b42705263387553596b6b307150636c4279775344704f6b59647142793446454431555562685230785a71684175497778547341584b4441436947584e412b495955536a4453674b47694d6f794b4156456d6c5254745570453936596b453051435046544e696a4a6f6a6967496f4730366146444c737a5571525246736b427a376b58343153367758554653336367686f704238385852616e773730414f4e5545456a6745305133556645536c5045555162564c7351484f6d4a574866415433466b346d75433642344c6e62746a754c59486567336c7a3276376b4a4271706952475878532b4848446e78514e54444a426739556f48734530534b444a414d55546b6778376d514c2f6b67635571675a596f67766a3746417941485669674f725468564349657078716f514a65395357504a424a6b76696a556a322f61692f4641303652676742486355354d575970614d394d5643632f334947466346494f4b49446c2b39474e6146424d42524d7a7972676c6c30345a716544744b4361535456474f48616f506970563243412b4a334e50696868686d6f4a7966344b4d78356f4141614f67374b7a5871537a412f61675873544f49307a43496a7a537471706b676e69494f507a5569534347546161736354334a5449483845445370586b68544630547951614c356535424231424454717a785535532f596d456350624641336978534269684855585441616a3249424b4a486570704144756a4a304e5035494a55664a4c526e7a54786c70726b6c5050456f4a49686b736941653055524a474873556b70494164556c35763158314d77336f753763676d454e4434682f62347262363536696245504b742b4b65504b50356c6555665669677576377539754a655a656b38766267715a6c714833496c347047483149474a6a6846434a6367444645564663457366642b534379584c42575762397a62584264746e5449653365714f3957654d657a4950612b6c6570783952685161626b6648483851756a45734f6c6650746c75703753364c6b63526c7847592f4c675637753166686474693745394d673439766d67756a514f56444e7577716b45436945626a6532534337567144714567716d467a4c676c684b71433652713455456d71506679564f75724b6e643736337337557273367634593855477535647432415a337036427a2f4143584a33482b5337534478416e63374f6c655833752b7537756575366635526b4f5379454f4b495054542f414d6b743674647145342f77366e564e7a2f4b647761573478672b654a586e39564734497532434471782f79446569757656794b3337622f4143753747546269416c44366d385338306a4b75474344364874642f7439384e6469585550706c346837636c6539473967766e466d394f78507a4c5a6151587450545055342b6f577546324961593438782b4b446f7955787753513478784b6d7239714346456c38653941797a34705a63446945447934592f7353796a3953566a78373141437a4943535764523377775378474c4433714376695147754a384b6d6f6e44334a4249476d61654161512f6d48785165632f795864793877625159517249387a2b53382b51756836772f337430477031535743454449674448336f43496d667478567632747a6756317472743451692b4a58526a4364494352492b43447a483274774442557a424236714665786a62366e61716535747865426a4d61687a7851654b4950656e6a4f5675516e456b45476835725a366a736a74726e5434656177436d434436443656366a392f5946332f7178365a6a6e2b70623672776e6f65386c7464314576307a36443334664665374a47665a7951496d426f78397535416b50682b784544446d6762516b494744553538314377354a6f564f4b44782f2b5562727a74794c517774686a2f4d616e344d754743345a5758376b70335a536c55796c4939363162506175584e51677174374737643667474331327653446a49314b375671317162532f5972425a44307751656650705279574b2f744c6c6a78447658732f4b6648465a4c31682f61694478334d727638412b4f65706e6233787479336c33442f746c6c3738466b337530303951393677626563724e7754483079424863672b6f6e4277696a77496f456f77495063675078516b4179674434594a7049414762696a575557555a73677967354949414f43476e4c6a6b6966686d68714748737943454e51496b5a68536f4a51706c77514b53516a3471424e7a5330426f577155445078376c4b753657664a45466b424b356e7158724e6a3037706e31584d524159392f443572462f6b4872523262574e756636736831532f53507a5037563475524a6c726b586b63337851622f5650567233715539552b6d49384d4d76336c633863457734706451784b4169544c6474665664787441316d575047717743716d4344325870762b5457723757397942626b66712b6e762f5438527a4339477a6a4967723556517231482b4e65736154485a5853344a2f706e676630396879396d44317070324241415a38314a4534634f394349343449474853583971715377706968454d4864526d4c6f4a686a69555a4f45425148556949676f4a58765135354a757a323570544965354164536c52326f674e3249467a5642486f36414a554f66444e5349624642776638716c456255527a4e794c6646655939507451763769454731523855736e412f617655663550435832305a527975664d6577375677765262526c656e394a48394f75494a50344e67554862426a626b353147556871305767386d3438414f306f533355725a776e45667841536a336d4c39696f735764784b7a72747a416c634a317a5069704c546879416f466648376d78643143634c6c7268685035424230374e7a5848526d4d3353546c47336a697552597558376c7956713350524332515964447344566e4f57544b767a3732346c50376d5130577a6f613330617961735469774647474c346f4f6e3931614a614c30347175556f584931627437466973584e6864364b524d547a67332b72742f556535617275675844706d353852356a427a32476c4f58464235333157794c647767653341392f376c58365a493239335a3558496a746569322b75674735624663473761724c364861387a6632755574582b3271443647376f79424939696b4446507743424a516446736d55504868336f436c505a30444d414e522f597162392b4f33742b5a636f7966566735586e3935756a754c702f5448777837554276377935653670476d516973706c4568382f623571655077346f77326b714752784b42435a436e465743344d4a484c4e4d646a6349444e337054744c74764964315547697a7554624771306350704a36542b337358573275386875346c77306f34784f4b3832626e6c79596e42624c4e77323543354445633851636b486f335546456c7137357342636867557a4f585147527a4f4766597649627a312b39646e4f4e6b365959446933356e506b74767250716d725674724867776e4c6a79485931543363563563444c492f6967316d393576584f702b6e5667473444386355674c436d617a6d765945344576355167766e4c545173797574627537623637557a452f77357438465141434866562f4b6959366e503745486f76545058764e6c35573670492b47544d4f3964346753777a71766e6f6a672b4e635632746a765450614731634f7279355771357472487345487153337356434839363531755839777547662f547448706963544c39556763472b6b64366e33303437637a496a35327679744f413136767971673647584a4b47564e71394b35647557704d31765341654f714c724e6233397964757a4f4d593637786c79415a2f77416b48516c5556546b55574b4f386c41585266412f70524533686751516679565033562b3262526e43496a636c4750697246363134302b4b446f6b6e4771674761354564333545373175482f4a4f364978315569486a48453464324a562b347578394d3277387361726b7061515439556a6a492f50344946395233636f447959446c4a636d594641417a426f6f335a6d35563675367271337851564762306456536b634f4b5a6d4c534248316355777353756548464255626f7742524e6646564735737230543052656c55687333625a366f456646426f6a4953724c735a5777756b467543784334543957437569596c7131627351645061584243354359474d744237442b31643353764d435a684234306c4871377867756c5a33734e3366323834462b6d3534675239497a49434472354d6f634778584a6e36704b414e3061504b6966435a395a6943784948794759376c6266333078646c6174614867496d55726b744c7656682b66775164427331423159344b6a61337875624d62324772486b52547637566b323835524f344d493670433457416f2f54484d2f4e42305269794a4c454e69736c6e6433504f3871376f72457a6a6f6b374e6b566e48715a614e3461504b4a5a74663952695764767734494f7048676f49732f4a59765650384137573778306c566253384e74743578754635574837644f4d6665474861454853466635564d5678647435757a7462696261726b5a526e4a365978426c38797438743770757868477344447a5a7934527939395547774d512b6148454c6d6a6658644176334952466d576e413963524b674a795050687a576d33644e79376474456638656d755a315264427041414e4570714667683668646e6173334977426c644f6267426e2f4a504865797465634e7742717452467a7071344c3450584a42736473654b4d435146684f3533414e767a4951417546756b6c7852324e50697477415144566c6d724178366c79742f616e7535697a626f626354652f312f5238585063725a3737566274586f73397956754e63745750654547342f46426e6f43714275434c2f6b346a792f4d2b4c4d732b313364322b3034786a6f6b61694d757550626c326a4a42765a75355345784f4f714231413569744668325539776239324e7a546f45687870306a422f6a7a564f333338355737486c51673933563034434c4f67363256557047717057586237696370334c563441547436584d54516956587238567a4e394b31754c6d7568454159317a6667673770635931487951426931537a594c79737a626950427037503371765848474c393451657646657841634a594c67574e334952657957494f65485a5262626671737463495369774a307a5042325a75306c4272333132566e62796e48454b6a54356530674d714f2f764b782b706275557476636f474e7a796f6e7671666534573366644d6f573236502f414d6c42696c49796f4652716c62366a307372357a44305765396335555a414c58584a79743834644149584f733732772b6b754375674e335a6c485271393643675350314f797567663067646857635336744a5736784552393359364377572b6c34306d42306e4171375a334e646f536c346853584678374f716e4a314e773975395459447a4947344b4366345551626e3555536e4e304a6c3644763976334a73554376376471595359315330726b6d5a38633045624e4b7a31794361725678536b4d6558356f4a637577746a575377474b3548704166633344674a784d6d375a4f757266744337624e6f303155584b39486c72766d5a78454e4a37645341376d354b37754a4668306e514f35697564356c335730716436366d3574474e776e4856497248655964522b43436d304a547541794f4879573235613152414b537a5a6a2b6d724b2b333167672b394279547359795055574a34592f6b74634953735230755a4e494871567335615479514f446a6c56426f3952682f354d444c77796870377856617654695459692f5074354b6e31566841546642316f32646f3262554c6641565161577a514c6f7862426b7541514854566c41316457616d46564338616e73514b3554646d43684964453171674e526a6d677a4641533149677655346f4255314956642b5a7432356b59365a48344a7845396a4b4776745242797a622f384145736b4e55562f3156575737434d3873467575452f61322b415035725050695751596a7432776f2b6157315a65664d664661626b772b724653454e4a6642426f7637656d6f59454c464459364a6559514f533630547274304f705949484935494c6a41456532433032423559694468536972747742714d30346b54636a475753444e366641446433596a477137476f6e396935646d576e31433639497944642b4b75762b6f52424d4c5653504650682b5a5161747a75426146534e52464679622b353142706b7a7a6241666d6c6e636a585631532b703853732b746d44396943794677536a30686e56586d41534e5253767379714e3053664d354b727a5163682b4b447157643964733536346678592b3964586237713375427167764e556a4e3473787854416d42313236532b43443152516246714c4c7339304e78422f714331667849494f4f61684b476b314d614a755a2f65674569394f533858632f70784d4a5549654d753565794e63736c342f314547462b364a6671366338667a516450305862473574705862686c31447047515631327a6f4c45397132374f304c4731684766533061726d376e3147325a474559536b657867336252424930774f43614f46636c6c2b386a675945647456644f52496359494c68376c6471302b4931584d47346b443030566b4c64323841544d4e795a42315978616a2b3337563533316a6f76526b4f344c76326f54684670476d533576712b314e3679626f786a587543446c577977664d56484a75613972745a6d3762684f574d6746346d78447a4e4e7641794d596e2f555637693345444b676f67616e687a5165716755464f6b6c4148457345597668676f5456515347474655457252435743505044697544366876787548733236576834706671504166696733626a315733624a4676726c796f48376633726d332f55397a6348535932773755366a58396935397936414e4551772b4837316b76546f334e42723347353176356b6a634c2f566838316c2b375a346741444b6d4379334a6c766a7a532f5135775158323738514e516b597934786f363665792f7943395a503961586d32384f4244726753704647426248423048306e61377931756f2b5a62494948775868665774346275376e493465474b58302f643364704e34466f487864363058397048636271476d6b5a6e3461584c643243444c7374724b394d535068795859334d4157697a42645748703172627830774466484259743762592b3261444270726d553849694b4a41346c2f67694b49437975677859786f73373669586f6670577932664c625668373047754d524b474438767a7958443951394d7164413750324c76326d6c46785876527557347a6757784344352f65746d3349677236422f6a6848397573762f4142662b34727866716745727830307176652b6e57425932747141796a3863304773676b727a762b5465704778612b32684c2b70633851475566322f4a313370334932596d354f6b5967795059463833334e2b5737767976546f5a4833443979444e4747522f334c56747471623833396d533046426d5632647062454179446d6276614331373257475171765165716263473238616c2f6d755065746c6871515a436d654b6251635477547968355a623363304855394639542b797578446e79702b506c2f46335a387535562b76656f2f653767312f7077704838567a5a454d592f48383157574951614c6452494467714a554e55396b4d4a61635657547237554564714a576239696a72547462486e5341415147785a4d35557758542b78696265505531567073376652484a3176743766554877504642355464576a616c375657614a71766162763075462b4d677a48436c563432354479706d4a7843423453306b4d7657663474756a49334e76493048564876586a775743372f41506934754464655a48772b456f506334387746693953322f6e5753592b4f50554f625a64395676775344467a676678516562326b74644f4c4b796377484a57632f38416a3370572b456a79777150676d76796a494d3945474861794e36345a5a4c62626e6f7567565a3272385667327875626152416a7147537673324c393635704c5269632f6d6739424561734d465a42714c50626d335a5261444a676753526350386350626773506b784f3568646b50434a4d42786c2b7a357256644a6248324b7a3747486e7a6e622f41456152372f6967735a3548546a4c70484a38536561367471314733455734757753324c4d4c5a6f3738566143794363315476594764693745596d4567506356634532614435474947637449783936395248306a7972596871784479666a77564f7932476e315735627974796c4c38766d756c366c666c4a77374134494f494e7261424d582f31464f62586b794d484a63643373566d7662596d5145734f53307746776c356c354367354d67746a624d6f6b354c504b7a43524c7348796b756c3545764c7a4f486175567562506d4679534f574b445274665352502b7062502b326a4c314870776d49434d3545745376414c793370734a324a6137633676574a587264724c577851654a39653278322b397546756d5856486d43734e6e6776556635687478707462675975596c65544130696f785165712f7865795a626d64374b4d64487958725764633730545a6661625566726e3153373130336642416a6b5558697638776c2f356349384c592f39306c375a38655338682f6d467035326237487145725a345571506d55486c57595038307a4130536b3845776a38554568552f6d72446230696d435879692b444b79496e4942346e6767706a54325a656e324e6777396931667a584d3950394d75584c6b544e744c392f746b765457626567474765664d3969445063416a4569574a7a3976617135573673366f6e6e6765786448633771335a78636e44323971726d626a64776b47673966634548434e48664e65792f774151747461765844675a526a326b412f6d764b626d4168637079717661663470614d646938734a546c49646c42387767372b4f434951474b6b6b426947587a5031693662322b765334546c48334667767070474a4b2b6557374933562f64585956414d694f2b542f4a3048474d6e6f674f6136643761523851344c4d497869575156573456416e476e75576e796f45616d526b5a46765a6c3266534e7164795a6178534d617579447a30724267556f6753586946316655344733654d4a426a7977532b6a3274642b4f6f394a397663677a62545a37677a45374d4a5359763068656733657975376979626e6c53456f5661575074697651574c7a5330694a70376974734b315165642f786539356e6d507958704635442f475162507147347341394131646c4a4d76586b6f41434d55614b49494f6675782f356d3250384139582f32726f6c594e315864376638412f4f662b3162304555514b4c6f41696f6f67696d4b6969414a6b464542517852515145494652524155464645455243434b414b497149416f697069676968555551525252524146455645415255554b434b4b4b49495647555551525171496f416f696f6743696969416f4b4b494b747748745448384a5132703157596e6b6e76654358595575312f346f39694335424652424646464751634a446d6d35636b6d6c79357951456b364b484a49593644524d50487955306d5834494a55525a6e554c767934714567316b6c4c6759344948636c4c70484a2b4b64366f467462534e50616941474a38492b4b6c654e636b4a467939564135476d49356f48787163314b42696535423656785531524e43674e514751484e52705030696e76524d656249426f71354835497478527778666b6c6b6149414747464659344e486f6857504e4274504641547779524435684b394b6f75353661494a4b7054654a4168386e55304e54397943522f684b4d71653261514d434a4d6e6c46716f42676a5443535478466b6365784133506852544d6d4f53686e6c37555330413076696765497955634d7777537478504a4743434374416951686c7034344b794e634f7a7651566b38555a634d564a34567951665452414270344a675770676c496f6f354a3549434a64352b4b35323531446357477a315558516f2f626d734736364e7a747933674d366a676345485272567a564b4b346842333673314e58376b45504e33556b4432494354464d67484159684d4a7632635669336e714f333264626b756f665448785635666d7650582f384149647863706261324864323146752f386b48725143447855674f7031346d507247386a4c554c6831414d4f487577666e696d48724f373143345a31345a4874434432327069375a49515931584732502b5132727030332b69522f322b334c347272363344787a46472b664e4130756f61636b635152696f4f41514a4c3971434750755447526b4542564d4378446f4a47616a504a78543549766b6f79427056444a59764667616c54517a4b506f2f423045712f53706867474b4c70673155436c6856455644714d4a5561714c504642434179487a525935594b6d39764c473269544f56516775494c63776c48466332353637746f6b78694a536236677446723162613344706a4e6a54484e30477354426f464e4c6c6a67706275526d4f686a38553034467347346f46784e554348556b576f6744496546415a68715a496b6949516c5770475345446e58424132644d554a6968716f5154566b534f4342436376326f2b4550334b437553456d6f674a6d5a684b5a3538676a723030396e56645063674743587a4354774b4251755430314a776442354c3169393532366e776a302b3739727244673661394d546d5a484d366c57644c4d36414635465163555869656249596f4a55354b47514e466661736b315238677a423475677a7333344a34754f7848526f64314158434147546a6d4636482f4142336545526c747a56757150426a69463530776f5778585339444d68757848694a412f37554872444c4c504a41676968536d516b37555042434a597341675a694279516b4848646767576a586a336f534978515777485670347279487257394f35766d4938454f6d4b3963626e6c786e63783078507758674351535478514a6d6a6a696f695541484648784369576f52414b4346304b4654424e386b413571375a3771653175693944454b6a4e4555716739335933554c384265676153376d6c69565a4764534d38563537305736396955434861516b33617531476644416f4e4a77722b3951786339715355334b746654546967555271794a6d4a5935494635496a394c346f4a69612b354a306e416f334b5970574865674e6355594d347738515078536c2f705441417947475344782f724564572b766163356f62617949346e33713763505066583574675a664e534e694634365a6d4d527a706967366530673368414f586957324e7669656e354c6b4430713232726233775a5272375a72527462303951684f7077626a7a5164446a775478684a7553356d34336d3474487934526849443953577a76393564464c4e747578767851623935736f376d30654a464634363744524a6a526c375462797547747a786677354c6c2b7662473252397a48704a3851343877673837456d4a31426652374634336246715a786c626a4c3372357a6274363569417a58306133434e753343324d42474d6663677645617555784a465467716f6c716f366459595942414d416d42347052497332534d5a6b643644353347426e4935315859323042414d797a2f626552754c6b4d644d697976742b66722f414b5a4139757842324c41496977566b5a797a437743377639755472305447665478397932324e78356f3667496e46426f61574f5074324c504f50465063335562596f48574f5a33397747554e454935644e653142527559784d44486a38313537635770514a314442643650334a6b3977786b4f56466a333174376b4943686c54346f5065577064414c4d53416f616a4f694971554f614166496355633255706a6e2b43684c494347696d4355564b4d706173454659355652384b5633384b73636f4253687a52464b6c4a70302b326163306f676d54484e44514a414549444e4e4d3066676742644a6576437841335a466f52426b65373277566a4e553158432f7741706e356579455948785445543256503449504a6237655333742b6436644e52707947513767736d434e45596e67674170676f7741344251426f677148485355453073585a45394d6b53344b55455938554537556263394245346b676873464b484a4c4c344242394b324e2f37757862762f414b34764c747a2b4957706d344f75482f69317a7a4e6e6f5030546b4f34682f6d753654523830452f6c534a684c4c423079416667707a43484d7067533945434d2f4a4e3475535146364a736b426c4a73384644514f6c30365578726967687256446c6d6f4479556c77346f4d2b2b7436374d6f59556233726b6243304a584c7842662b7166384130674d7537636a7167657863625a57785a4442696150377678515063745862633955593634616a4b55596e71695469513741676e73494f435365356b78466d7a50562f387761496a744a4a4a37414b726f47624163666275564677334967612f626b676f324f30386d4d70534f71636a3179346e38686b73734c5562562b635a466f3344716a2f4e6e48747a44346862376534454c627a444566546a2b395a374e323366747968704931665463474b4330375458426a45455a39412f4c4a63324f327433704735463945502b4f542f554335492f68697a44496c313062587032324d584d4d4434645569422f7064767a56317a53526b527751655333385a6939473157665454766464542f464e6f664d756269344745656950616366626d6e322b304e37646d2f4964454969324f30687963386c364c6132664b74694d4b422f6e7851584f306e5a475144307168374f675a4944706f585548534542467376334b47514d7553436a6433664c7353794a36523330586e6264737a3769563376556f2f30444d6654704e4f304c6e37474175504d6678456f4545664c5a57526b58344a64787562596b30597a6b662f6c71753375645a66544d4e5235424273624a53324f705148557953354b4548317a414b42626c6d3363704b49663953773364716473532f677958567347336336596c336f72393959506c46785159356f4d666f3134504f7a6c346f2f496a356539644466582f414c617a4b364d52345879505035726b624b486b3769476e77794d3474795a2f6d74587238663841777a6a346f3676397944792b6a4238766632725674646a7161636c5847447970795861745130784434494d33325676567161696b3970616d476a45666b74576a6d6f79446e79394f746e4c76437a332f41453255662b4b5a4134537175794741644359627143447a586c39576966544c446b6a626c4b3149547736362b38592b352b35646e6437574e7942635658476b4f6f6353572f4a4237653774354337472f5949457672426f4a782f4d5a4838466d4673586436544176474946795563745a65493739492b53364e754a6941503231516a626a427841414f6454444e426d2b33753237303774725359334e4c362f704d51314b56393453574e6a4f7a6273436e39456e567a423159633672624c46734369494d4d47397665677879324a75584c706d656d37434e766d476638316b6c4f354d3765334d32356631496b65584a3954524e57594d477878376c324756454e766268496d3347496b637845422f6367716a7441664e6a6459787553314e79596534305754643765354778626a654f6f777544544c4d78777254477456316a4e7159717263577a6473796878487851655a6d4a34476e314c525a734d41654b7373574275354145594e722f465858494e3143416933302f4242686c745a63684c73566d336949597336734d3772354a474f7035596c426f6e4a672f465a33757a425a6d397543746b3977434568482b5a71716a2b7445366f4d2f4242566332526d61645038414b73397a614730635333385835726f695679596166444a623732332b373278743652475552512f4e4279593348675a444453757659326479497353634e626a4a2b5057337469754a73775459496c535855506376563655484e74374335612f707768626c467a3154385445757a4e58476e5545397a61536a646c646847457863455249584d694b416773614e6c785852306b684b78515a4a574c3973514e7252514e4b486867587a474c4e325664567a3950757a7358594f42637579314676446c54697841596c6c765a6a7a4b4f484e427a3757786c43394735474675324247555a52687a624e672f7743484e4c74746a6373434e7254616c474a704d2b4a757873636e666d756c4e73416c6c4c685369437266324465737a7478496551494843764655626a61766368654a416747387a2b4c545750754b76334636466b4f5337344263792f75444d764c3967514e472f4b4679394d416558634c76584b4947486373473276584e714a695138324567496378455561764a53376338526b58564a76366147547567756a36684f376268597652613148534a54474d6f7849594e6b39484c6c645378634d3739793574394d685054713878775152544271687559586e6e314f56624736666f4f6d66486967373233324e79314378626366306a4c567a38584c6d72622b7a4e7a7a74524146794559673568745835724e3666366c352f384154756c726f58555945555163716432376375376546303279424c562f546b535a644a727948765736784f64794a4e774d4e55744f494a414a597034574c6474355169412b6359733673346b59494d4e76302b4679647937663670796b2f495277415366322b35473262634e4c517543375a66337361594f2b4434726f7532474b68515934574c78762b626330782f706d33706a566a7163476f7267732f77426e657554684b666c36345331537652704f545a4d77787a71517571585a416e4c416f4d74697a637458707a6f62647870506d434b59595a4b6e61624b646d4f3331534839485871353667634b4c6f6a345939717a6279527457626b6a53682b4f43446c6236345958727067615852443352642f653679615a33615170484a573766612f6433334e4c63573163794675755768623659686f3845484f6a7339582f49564436625a6d484467725752563030574e5167775876537274754f717a4a2b4d53466d6a75394d7a473444712b6f466432334d52442b2f46592f5664695a4e6474306d78666767703052334e714e754643434c6a502f455357356c6466664635323538416677586c4a796c4754616d6c7970326646656b323876764e684334523178476e764645476555716b3846683877504c556346703879706c394b7275576255752f6b67416e627546704d573565785775785a41775a79367a516a4f4a7770794b3157397662496551367549703746416c344e4d446b3632324d6e574347334d627a755a502b6f755630596e4b7142726c4958415045314f3072565974527351454f415a5557726362384432393146746b4d6b437533596a7a5150504a46674f6553424742785265574b6b55524b76596747724e475271366e4c4a514d4355456b64646543354f3348322b2f6e4159546a7248342f466459763370504b695a6139494a464851637231436639516a6d5067736b33562b396a70755442342f4e5a35676b3034494645694a4d374b38456e45716d456841764c42736c6f467a627a776954385033494a63746e53616676565975616f553973453862526c4c57394f43416a706a49636d5a42763357336e753457386839533361744f436b42706a474278414150755444446b674f72336f5236653145564650636f5452304548504641524a5a436243696b6977514559616b4d656b3470713571455a44424176504a4d4f48777951446a424358534851464445386c506745347251494f66764c666c326f5266366d2b61776b38463039314755374d346a743777754c356a4d676c7a69634656437a4a2b696376397965345152306c7a2f463763566e6a4337642f774353526858434b445a5a675a414575434363466449467a4d302f465a57306a5461642f6b6e666352494e7a51594e6945472b3349786a30737061423877484656734d4d41566473343672764b4f6661674f383238626469354f66564e6a49453444322b4b3563343949674b416b594c712b72536c39755931724b493935584c334e7658426f3468414e77385a536c2b6f5257533756796670373130726b42646a475977307633686332634836737330464d524c337048496c3165355832425559736c334672544c55506967654d347a41345364617267454941444a632b7758614c4e5664676a49396e735543574c6e6c3359796a67543742642b4a6350782b4b38334536613567723047304a6c61693643327446485974524d65314166424148496436726865736262567572502f414d777366394a5865643856673338514c6c695a784677523770494e6c36647341575a6b41474b38356475797475595131766c7758573330576d5a6e4552584e76567778346f4b4a337a4b73774279576e6139665366443831523068717537747a576978456875474f6e73515939335a304668686d6c736265424165526a324c6f623370713144565532694c6d5972386b47713149686847577461354455476b4b454d73396741793442613767713253447a75787365587534526c6847372b4646363845455a4665563341302b61633331784b395131534545494a787a554750616b425667346f4669546d6d4a62424238754b6d724a427a505574784d447949753868716c2f4b7544656e686b41567633736a633346336c306a736a374f7554634945654e66696770757a71334835724a4935354b2b37714e63304a575a2b4c4c67677a38384f53724d33444769316d784f5934414b69647378443473675556526a4870634a515a4f364d71595a6f4c6f476a6a677574735a695632786d31794e6667754e68324c66593177684336496b526a4b4d74575344337432324a5441586c765750554c4e6d3462554b6b484a656f334e337972666d4d2f3756343766327265327575327379366a326c426d50714676394e6353546a334b2b337567654c5a666b733433636267595734674e39574b46716c7a554b5665694458754c7074504d414c4d4c392b58683661726f2b6f575364735a682b504f745677722f6d7936684c706b57344950522b6d57623842726c50554d534d563151307350647a5748623041306c67492b396262556e4a6b6738703678733958715174512b73782b4b39304b4e70774646356a633242643954684b544d4976536d4472703747394f3375425a636d336342505a4b4f4e5546582b53627279646f5944475a4563637353764451366331364c2f4b722f3841576a614473497638563575496b634d63416732625363504d65354c53314f4b3765326c6278684b4d6838667a584f4672613249786a49655a637830672b397a6b6c736a6133682f5445726377482f627a2b43447358624a7557704436694f6b653335726979665472784270324c746263796a4275487a2b5066373168766247356375546c43576d4d76463765324b446c53616c442b39617238663841783458495645537837446e3763557539324d74762f553143636631522b525676706a62694d3974504363656e352b3359673566314566535656685442614c31733270474538595556494f733971432b314579747949437a6d7139682f6a577a683555723876455470484b49575831483032784f52756a70443463666367387a41616978586f746e473343464d566b2b7a32706b304a72527437666c644f5344584f2f43324b6c573276577472486f6c4b5757537858646f773179772b437a433174544a35466a6830346f50535776557474664f6d4d324f514e4635762f49396e4b78754263627075443472756244613761492f706b796c6d5a4838465058397435323270394a314242346f4c337638416a6d782b3332734a6e475a38772f677647656e3763376e63323754556c4961757a4e665434434d49365968682b5343466a34536f44704443716d726a6d68326f5050657332664c752b5a2f33414b6a6950594c6b3769666c654b73547734384758725055647239785a4d47384e593971386e4a3577442b39416b4e3362692b6f55397553326266643267354a5a316a6a6270514d4f4f507433726262744759596741386d43447037666557373874447638522b39617a774f5074375a724c59445230745448323976323250556b346f4a4d665437657856506f4a314863797836322b615737646b3374376531566b394c3373374e363561747731786c4c564b514e49446d3478355a6f50554374536d484a444b694c494933464d546f446e42446d716437626c6373584951784d4a41653542773972636a66334e2f645777776b524153374b465a743230545448357137306f36647248746b2f6233724a76756d596858422f774145474f6658636267747845625a596a706f653963795570453667454475373550554232495054514853595346572b6134743439576944634f4a566c6a31692f637541537478304f486f566e7539457a49356e3446427232726b315a714c7662516141437558737251673032376c31725749475344422f6b4e69573674327258385476324c67656e2b69334a37364e6d37574d52726b636c362f642b474d736f6c31792f5135542b3776512b6b6a556544762b5344304959594b5a6f6b7042577231514d3742777544362b5958684461796a57583954553745616548746775384146782f5637456a4b3166646d4f6d58656738487564764c627a4d4433533468646a6262514e4749414a617566622b4b7039546a4b2f434e2b4d51494173374e6974753166524544674835386b46385049734635734967357350322f42586e66374d6d55526445755245682b415648324d444a355244382f62334b6d5870674a4d375676712f6e4f6662784761432b467a563447706878393632334c6b3473546e38472f61733230326f326f594d3865396c64767454526e773976336471424c5675302f3841574948387841392b437a377133596d5435656d514836644a374f5074564a6539506875694a6d4d70667030793067443975616f752b6c323452696265714a77636e3857515a50554e7443335a6f43384a4d2b474c7232486f4d6f2f593268413452307935537a397543387266746d646e797a695a77412b4e655339623650747a743974474f636e6b652f44344d67364c3051554131437149354949373058672f5266447565656e2f414e7864653033735a6d786338756b394e4634373061333564756332637950375544584c41646a7837506973467979386d6975686330676d517771714a76704a434444616759734d636c36482f4879504e6e456a44414c685376614f7075664e62505476552f7439567a533549302f6d7944766571374346324c6b6a5647763746794e6c6138756658692f75585333653774372f4147567a376678644a6c78702b356336784c7a5a686761737a2b386f4f2f626d6278415855747830426c7a396e436d6f2f77436c755336454d4b346f504a374f4232587146362b613239556f79355056313630454550484e6350664349766d7a4847364a487677585932746f326255625a727044494c4d4645554751632f64754e3374762f7741352f774331644631673362666437622f38352f3756764b434b4b49346f41554642696a6d676e4a525252416346457372676834714c6a657265712f623234334c426a4d6d656e484a6e5164746e51586c74762f6c414d76367366645664577a36317437703067346f4f71794256566d3947344f6b39697451466c46464545555155515246424642464645554155775543694149714b4d676a714b4b494969676f676969694341756f794b69414b497054494371416f724a503144623236547551423579437a587658746c617875682b56666b67366943354d66386832637672413755542f6b4f7846504d44396b767951645a52594c48717533762f3841484c56324c614a41344945762f7744484c734b6c674e626a32424e63384575784c5944573439694331525252424645455548447a53343957484a475561394f4b535563705938554272694530584c615766323470474f7246466a7866387330456b37634561514c6671544673456a736745425141303470395439584a4a497467694256386b4259347437657755665430344a54484e4d515258385541684476544e717753672f46456450354944474146564e5468774548303564364f6c35616b4242414357565559696849787851456e6a7a434273756b6f413066336f304f4b522b6c73304461525045565245654b484a4b4a50556f486e70696f7749375577644b784b416759506a676f5148716f42696b714b6e75514e674b4f36634e2b33676b64366f366a463271676d6d74436f63534d65503730444750314a7a68516f495a6338554e543434715344687856463942644241535135556b424874346f306655677a3434494a4e694e4f5971684a7a5673454f7a366b52455651474a476c4b5a557256513436636b575930372f3249424963466733414275784277664662737331673342303771305031422b38494e342b4345573730754172376b596c78544e413157425748662b7051324e76566a636b2b69505a7837483472526476437845336274424165333746346663376d65356e3574307554384277484a424e337544756273727368552f6777565050425061737a756c674d563072506f38702b497355484a5a67345564797652322f524c62646270543642486955486e31312f5350567a744a2b56664a4e6b2f77447050456375493778576875756568786a46346b3971354f35326b37465a5949506f486d4173517a537245347546495330314338352f6a65393141375757585648737a48342b39656a31436f346f4a58466b4e583165355271714450746f67635670337151476b2b394b43576f6d306742386b4250546d364659346f67415949434a715544566978526e7a55783975436d6141326f74583472467676554c65324a45617948483969472b39536a746f6149654e6a584a6561755870536b6564585157623331533975695159394c74346d623359686379633443544367506572626a775a78565a4c6b745643673057372f5651712b63514930727a564e71795a78364d554f7141494f4f434272642b345a5930484d68613758716c3678313235534661366a715850736b524c535447516c466b48734e6a36785a336b576652642b714d734433726f7a59437677587a794e324d53357133483563563637306664677738755236534e55657a6d6736676a476956693944676a4d50467747344a616968434269346f673272327734706a566736474742716757673755686f6e504534704a3143427045694e46535230703954463068475978515134724e657749354834677134776f54546b566e755277664f6751654c6a78554e61444a573362586b334a514f524d66637136346e393643476259556646644861656d7976414277464e72745036657556536350626d725a65644b6b4a2b58325539376577516142365a4f79486b354475567632323174584c5a4c4d4f31594c64323762595779524854706e716c713148694877374630646e4e72656c30464576547475586c4e6f76786b736d2b394638754175324a435554774c682b314863374357344a6c4c776b2b357661764658574e6a3563526f654a7a356a73774b447a737759554f5643756c364c626664366a394d5a666c2b4b316571624b453755727744544447584d50376646542f48724161642f4e39492b5a3563454864694e4e636b4f6b715052796c64365a3549476d6b6653436e4166464b593548424256755a662b5064474c776e386a37594c77355a657a33642f794c4679545a4d4835727932367447334f7631563936444b586c33496b6b4c71656e3753336474794e7a462b6c53377462634b346f4f5943395170453671444e6162597343747779485972343761337169595642784d6b4850306c366f59723039753747304448514a514876584d39524e6934336c514d5a494f536d527a537367366e6f3835516e4a73434739363944614a5a6a785843394b7476436373797a643156327259464848385065677669484b7344753731437068565048466b46773576564e45365371645a43627a53614948777163306a67714751507a526b4b30515179712f77424b6f336479567133636e48474970322f7354784a303078344a6230586a4b4f576b6f504d376534626c36354b35557a2f2f41436c716e73786344716932385841384b366d336159663342427949374b35624f754d734375743664445863457a77564e2f644d6446736971364f7838756365695170687a2f4a426a39553238376a5474306b5070475064374f7332793348714d4349786158384e78767858617553387555524a78493863464977657242424c643235502f6c743654776a4a773679657551483273596a463564713641675772324c4c367045537444574f6e5631636767382f364a747a653363433149395875772b4b3975786b7a6d7134397948326b49547351476b7947725469526b75704b59424279496441774f6c775539776b447077516a495a2b4a43565851434468563775647931616c4f307a71386670775a5658625a6c624d5456776738786f6e35743356556b367564616f2f31524952686e6e6e3350514b7949315844496e457333426c314c566b447134494f56416232334b586d334a534830764e36382b465069746c695055303831724947474156567557712f302f53676f442b5a495a6a447479565534627964344e646d4c5a3859646d4f624435664650666c35643875757461674c6b584b446a37654e776a5464727a3973306d38747a4d374f686e452f6c583846325a694d51775749326e6c7264744651673633702b347562675438304456476241386c7477575459442b6d2b55692f74376c7246515545664e45594f654b677054496f646942744c3177536e4368584d395739576836646241385535654750346c6565682f6c7535314752684468682b314237544e38456876327834355269546b362b64626a316e65626a2f414a4c68593543673977574d7a4a50553644366d434a436c52682b314573443746664e4e70366a66325539566d5a417a4752376c37663066317531366c306e6f75357834396e732f6167366b526b6957646c4161734d454542643135372f4b37556a7449794474475966762f41472f4e6437757277574c316b526c744a3238376761413479782f424238396f63695346324c486f2b7579382b6962352f69736670317258756f776d474931616761594c31586c3671547734494f4c61394f74526a714e77416658416a70504f4a7842397346595051397475484e7137496348447366677439792f74595035736742476e456644344b36784f7a636872736b45636341673446372f48747a43624270772f684f48765362723053355a614f754661316b7837503272315632514e74775667756a61782f71376f687a346453447a6c3330323545395056325a63763272464f334b314a7042694637574d4e746469316f6876346665374c6b657637614d52473631664355485a2f7857476e6145385a6e3841753554474b35582b4f575461324e6f4847577166764e506775714f4151464a65765274523879345247497a566d4743384a362f366d6437644d49663841486270326e4d2f6b673665352f77417136394f3367444566564c507556647a2f414353394b4f6d3145526e2b72386c35797a626b66366d4551726f32702b4e7561446f77395633555a6135584a534f4f6e4c344c73325056356b4179486d444d5946766b764e3265714c6e4664437a484b4e44326f505732647862767731774c387378334b796a4c79316d374b77524b4e4a6a5049386a3755586f747275596271324c676f5234687a51587a4c30434939366a6b6f35645342577a5747355a467158546e3741647933554a564f384452314445494d38354e4553345a4c485933634e30444f3147556f677449675a30705661347a46654c4b713374764c6d5a577a6f31566b426d654a4666773755456b59524771596c483958546c386c6c745837496c307941663956506337657858516d6238635a52502b6c6c6733566d6534486c5879384d66446a552f6e32305161346e5858337171376856537a4557494345574141307841793973797162737a637561492f55572f616730624f31713077797249392f48742b5336394267714c57337432695441592b34646975774645434f696d455344564b4b6a6d674a494f434949434648554655485038415637766c32482b6b6e39714542396c744243566273343939667954627377765374324d5472695a446b4b2f765539527550643038493665386f4f584c6452746c6f516e4a76624e6b626432563045474d6f39717645526736716c5574795158327938516677564679567350356f44646a7254596738434139466e75575263365544626262324a6e58616f5434636c33764a315754626b586f793837446132783441783738563374704f524f6d526569446a376336747a5a2f68457a3847577a31634765316b3244782f774463466b394d67527535366758687169547a4d7679775851395368356d3275516752714d61486e77516566324e6a7a4c6a4443497233726f584f6d6b4650536f614c4f732b492f7559382b57536f4e2f532b75546679394b434734335351566461354c496431416b7731537033303470527535526f4271374b494f6c4b476745724f5a354d7166753554442f536d687559456d4d5a6a56777a51585230334b636c785962596d2b49593959484836677535416779664d4a74747468393454495545593342546943506767374259496e71446e4a41674254385545444767524141556c62727751483730454e4b5971616a686d455458443936476f5a494158376c4c6b6847426b63496a56376b7749495358497875784d54675133765159665367312b374c2f7541584f783154663653515469745070453231325a442b704368356a4a56656f77416d346f61494d686c70375658435a4d75574b746b4974707a5a553635322f6f3163657071494e46324a49635a4b7145342b49347172376c774f69544b616e346f4c6f41533576386c3264724135344c6b576d4d784233474b374e6d516748474151634b31596c626863634e716c492b3964543033636d2f624f73764b4a305078574c314335316d49414f44667a4c703750616a6257745031654b52356c426351314167496b304362553657446957704130754a5262676736674555414935565333726b624d544f5741545a4d43755236726331536a61427045655a4c3845475337754a584a69637645634f4156457056717a704a5359503775784a53636d2b4b416552667679366144384666483071656d6b6d4f62726f626544414261644c48536738396673584c465a6a2f564575465a596c473430763372747a73436654795849335778386f2b5a44484d494265737966574b48497275656c3773627530353859365a64713470366f5655394f335173627761715275686a7766496f5055615437304a764573464a554e452f5a696745526d796c436f654a4656496b2b484e4248707a554170334b4350464443544442416175756436784d2b5142483963666375693577585039583639744978784856376b45394a69327a453835504e5a397a756255726d6d32333856614b77327a485a5737634b50454c6e792b3374794d5a4e4567494c39516b614a444b554f4353784c71445647537433457a706549665033494574626a64793855596d504972726259656662716341785a634f463363584b2b5662456634714833757572733778684f6f62565351792b4b446a6276626e5870506a6a347578612f3863757874536e74706e6759435762347374507263426175323737556c30532f42552b6d32592f66615a347774616f652b7142742f744a62655775466263736c6d6a46736c33424b4e7a554a43676b523856783935447977664c772b546f424758775775334c7a4d634678374e393364626f5839544242736b41376c4d484a4552517936663239777756666d435272386c6674617a443467535034494e676a4733455168674534417855466363464b526f6755456c4f537845556a45594842456f41516d485367582b4b6b675a484642504c342f73554231634b4967424c4771426b4e5446476363734155735849516372314b334954463749394a2f42594730353472304e2b4f7532583750657650334271365a59444241574d694e4e437262594d2f4654735765314b543172486b726a67785157526a39507956396d774c6c30444b50556533677172464a4f56723238675a747a2f4242756a696e4c5963557352697962416f46484356416c4e42565068676c474b4267356f67656f75706d633144303449416169714a70516f632b434f49446f49325368633449344775436c616c41434b302f656c356a4c425058454d6c6c3159346577514552594c7a2b35736552634d6373596c6567452b47437a6237612f63573942594556692f746d67344a71774b4d6f764c7079396e527657355163454d592b4a55435244486767325748423746716c45794446597264344f78397553317875617345456e30437133624f3231765839552b726c7957574d6463532b476b6c644a7449416a67677133566a7a725267636148736171357632354a34483278585a4e4b685657474f71624f645248614548506c6146694d686851747735726c53327436396a4a68675748354c704736535a7962507064632f636d2f4d6d597574587767494768593046696d75776a4b44484656524d686d5a6471653572746c674d63554757473275776c71455159677270512f7154307a44456c5a725233626e54494e2b6d574333613545504d4153483654516f4d6c69334f345a57346a36745076587049675161497743775737454c64324f6a704a44542f414e5037467641623845456b48715554777851664230484f4743434576555a4c44366c4c524333644f454c6c7563755157346c787a565735322f33466b77796b50596f4b765575714d63717356794a594f51334e646665457a73524f592f4a6357345766394b43713771695152394f535747366e4b64564a7a6f35384b4e753163766b78744166685642713879394f4f6c7765546669734569647665303030792b664a644d624b2f5a69387078777943773772636d344e4679456f6d4f625539364470375738744a756173385668326b6441464d6c6f42454975636e515a76496a754e7843484e354e6b426b56334b5032716e61325262674e564a4544567a4b30534f5343632f6b6f5331636632494530423570697a555a414a4b486769485a6b445642773978742f77447935526a684d552f4663753374726c7952684469314d766576532b6f576f473172776c675079545762646e5a76454e4856372f785165566c7459577a704d6d5050424c356e6b6c73596e4e6c703953736d354c6f786646736b6b4e7449534859676f6c656c636d49674152565161324e557644775853765764493879414c786656324b6d646a7a49695554526e514458393148574973514e4d54394c6a6c386c30646e744e76754e72626e6374526c4b57703565463638417346755173426f6e716339504d7273374b786f745268336e356f504c6575375962613644616a6f744555414f66617575584f3068595961526231392b6c2f6d742f716d31743775454979384d5a7866764e566c6e62683976644d4b433348522f366350696736386e76624731493474624a3975316566395161636159435771754a354c76624d2b62365a6259347746567774782b69585038415967356c7530444c44322f63744f3273663951484438555a542b6b65376d744f33303761786f4a655576682b61446f37637975327a45687979354e33616a567146524572703744637868626c4f3452457573507145497975655a7470506d6543432b78514d39516376677570454745584b347578752b634354694d5758644d686f6f6735322f32773345664e42455a78724568562b67627557377544583434526c587457713941585969426356792b537674776a747264336334644e4f774950496574334464336c776e39587746472b436630665a2f6358544934512b5a37317972747a5564574a4a4c3936376e2b4f4f317759316a2f38587951644f37744979424d674737465450307931624f715141503841434737632b62653564566763567a72392f5850796f38583979437a6151476b2f2b6d6e74583277564f37324d39336757747457504874374d6878562b316a4b4d534731593933614b4b363364454c6d6a416f4f506239423876775465584f4c4473356a69724a2b6836534a325a614c67797270666c6d75364c6678623370706b3162776a336f5049657057707a6d444f4c58414f724d634858485053576571395a755947374d33506f3079654f47446e68374665546d645a315a495065656e6a792f546f4e5455444974786b567a743945546a6f6b54774f6446315054336c366261624851472b53342b346e4931792b53444462324f69574e42386c757378494144395050465a7058394a624a6444795164756335654b67515837697a2f53706c38767858496a36634933597a443856365339614679794a56485346786247343666346838554852326d6759426a39526233725a7571625734346361537979624b41754f42586974743869554a78795a4279505464473038753945564a694a486c4c39693957614c796e6f47316d62684e3377776d5247505a6d765648555543466c4e4c6e464854565354346e42424a47685078586e7656746847312f774352487745395134486a332b324b377a6d58685754315739433174726b7073517a615a5949504d32626768546a3856756766302b445075586e37643252415a69745733336430436b55486f504e6a345161716d6438534f507437594c6b573433373069495a2f5448385a634f4b37653032456245515a744b626477504c3879676b4c4d726e6963524f5045342b3774397931777452737830327730477970387330385277726d6d46476a2b784271323177536a562b4156774e466b323179424a4830725a70434251614a3050696f316355486e646e436471334b42704d5366754d6c7a66564a36626d72423472304871646b7862635170394d2f35542b53383375625a76447a59344d677932357875675263412b355665624856582f63744e76617873317a4c46597235366a4943694472624735414446705a704c7074334c6e54346e562b797443566e6e376c6e752b6e6d31634636475a4f61447262553659677655597271625756654a584a745431384739736c304e745072356f4c5055705062304446697276547470397662723435654b536547326871317978576a4a6767585535374553426d6f2b4a434a775a414747537033646a7a375274352f5432696f5670484245385548697231677769524477534c614a5a5a734f465837465a732b695159563450526c3250574e6a7142757777786b4f48503456393635567150567849506367376e6c656262424455565679334731427a697a64367a3262326b4f636671357053664e6b37307a397350795141336e3652682b39446377506c6d53726a7273394e75344e427a5a7a2b545a4a643175747a355068592f716568376b462f70743866384147542f2b554374753574526257414347354f3634653369626e3953666a624c443239754b366b39323844416e446a52426b386a7a4c756e69596a2f6366792f4665707a6f7546364c41584c6b373343496a372f3366466430455a494a326f344a593549686855596f44347578654f7466306239363242684c686b76593969342b39394a4e2b354b2f626b5249312f31522f504e42353467616d7946666d714a7a475651724c6a793635306b4f6d5861466c767a6568785143656b316c7856396a645737544342416b50447764632b5671517877545762492b724d6f5056787677765164324f4575617132746e515a4e5538564e743662747a4456314e49667170794935717a59626637656337636a51794a6a4a386967374f324245414f415771526f3670746a69726f344f677a5132304c6b78666e5751316156735141436a4941616479694a5551632f65416a64625938376e786975677935322f443339742f4f666b756967696968525142465252414d456c793947304e5579426d736e7148716472595131584458494265453953396176656f535a394e763950356f4e6e722f7250336c7a52612f77434f4e4d63585841314e324a51654b68514f4c6e46573272767865717a6c2b314f496b6c42304e703676754e704d47456e484353395a36642f6b316a63394e7a706e3759666b7644787574307939696f4a31316a4559495071776c71714556354c305431386b697a75446a345336396245754542555a525242454556454555555164415563316d7637327a7477393251694f61346d382f774170735769493265766a374642364e526553682f6b6e6d79597a4d4f32494b7a3366386c75527043526c7a5a766c5642375a5265487466354c756f564a684c33727337542f4b4e70646a2f556c6f6e774f4876516439525557643161762f41504849533743726b455552555152567a75787468354668784b6c36344c63544f57532b662b73657454336b7057344672542b3942365031442f4a3976747959577a726c7977586c74393639754e34616c6f384930393635576f696f5a526e464f3141336d47574e536847526a33386b6d706b655342347a7a7a576d554a474f73596469794f51726f583555626967617a636c476575424d5a506b76616569657153756a79377549586d44627433494271635372376477324a4f4d666d6739394f59306e73527446344473586b596573584c597731786572354c3048705739743775317269612f7034494f6b6f67364b434b4b4b494f484d6b6d6d535363636a6d6e595348737953517a4b426155314d724e416a31524e4572556f7035596a6967686759316f2f46447769707078484e46337855496638416c514355636b584f47534c6535476b52536851416c31492f78494d537070316f43435237305443704a7a516b5878714d30497a7254336f4741656d5367726a676c384a526a4a674367596e4e6b4a504a6b6f70686d69774a655873794361685673552f67373068664842475459667551536a4976394a7751346e484a476b5762424141482f4c385647624e47426a4c6e696f45456a55754f3945544242347153474b445a6f476365484d35706448446755326f414f4b6f5a7667674e4a5263476e42445748714f5343496c6d674a7158475342633143687759594f6f4a6154537552795150694b3055315032664e4175534877555a6b4553307754476e55677a50454949614870785145395430526b644e457570787a5152677a79574c636b65666269426a6765786151584a5050444e5a4c38645737322f44544a4276446a437659712b5355444131544e56427776386a76474d49574163535a532b512f46656545586b7a3058592f774169623769483867722f414b69755041457945593435495052656e37574e754970376331315262627056657a742b5862624e6c706a4a384d57636f4745496a4539796b6f7668514b4f2b48755544366d6c537143695547507467734f3432386267496b50624433726f6d425a5a37767851655844374463527544434a63646d667646463769574e4d766b764b657357774978494f64652f7744637653656e534d39765a4a7830522b4151614b464d34616d436b53314a646956395641677377726936444f41427839364f747556464b6d6941675a4b53725248464548765145664c4a5533723332396d5679663068315a456b72483674456e615349346f504c3339314f51366938333148765351755671714a533153594636302f4257415271444a4164314354617a676667716f57664d59484e61684f49494569744d4c516e33494d4d72656d6737797172344c4c586359543079396970355a4479413976617144484378714b736a625a33772b6136496a4a744137316c75776c3463655842427a627241394f43617864306456586a774b61646c6e553067646944326e70572b473832305a4f383444544e38513261332b494e6b764c663433417733452f306d4864697655536a56414d5554514973346f6c7a66326f6742536c6e6f706b694762745149516c6d413374696e4e4b4b756463587167704d734a4f71704576584c42586b4349614b706e45757751632f63374b46776d6373433272757a397934647a615374582f41437351394a5a4d765479664433724e7564727175526e41764636386659666936425a5231654c4c354b324e7145612f424a4b422b6c61747049745642683352304370412f4e582b6e6b7358576665324a796e72416549717975394e7658346a5552456a56544a426f6b7a796937533463566f32316d72386c6a7657726c7a2f414a5a417a66564751476e48387669746c692f4f4c6962762b61436939447a444b336c4d5369437150536242733759412b4b5a6c4a76683857576d514f7170596b712b494758765148534358514554483969556472756e4930672f4e41444961556b75536849646b4a5339364446366f66364f6744477675586e4c327134484e534b4c302b35747a755130354f75444b486c79614f4b432f61616f51454151426d7473724675344b346c596863637374316965415a79677a332f53673777446849624173664a644f632f4a742b5a4d35594c6e53753237302b755750774b4456474c51345038567872357557626e534633576a4f30344f726a33492b54356b586c68383048444e364735706544542f554b65395a4c3973516c7048637651626a6257346a566f6552346e42636d3362383364414555696536694471625731356475454a597434736c7374366d3638556c713346745576335a4c524746655341676b78374530435452454b6168474e5a415a314c565150794f504242716479353076557474616c7038312f356174326b346f7839583231496d3530396a4e3773554851495949676d5a5a5a376536323834504739416a6d64507a716d473832776c6f6c6568712b487677515752356f475a4e42565757342b5a57336f75415a776b367234385548433363504c75556f5059713231634d51324332656f574e6473584966536570637931312b4c36554673746a6276754c596c716f705a394a7475524c552f3667734632642f5651307937464c45397843516a616c385548642b796c6f45544f556d343159725843557251416b755a613332366748765764556631527858556a664679496b41472b5343796477653671797a506d784d54574d7670397346615a4f584e43565861756631476248504a4139694e775734323574302f48677478446a552b564f617977366c65596d5559356b5248346f4c496a363855784c6d7155484546514d4d4b6f4846464a546171726653786576743349764b5748685a427839335a4675665341337438734670326c7a57474e567076326865746d4a715234567a3441327a7047595161626a36546f3853785762384c632b714568466d4d70436a7035626b5757387774775478334e6958696d4e587452426d33462b33656d615372346165785856325a6c70454c6978587239694c536a4d616b624f34387a776c2b4c63554776645857493056575733624d366a78594164716166395361367670566f5273367a47736e393243445659746933434e76467669564337706950626769415a42416f4f6172763368746f5375334b526a314b7a4555397938762f414a5a366a34646c44487858507748342b354235333148665433392b56365648704750414c48686b6a324b3631594e7a4242533947556f6d75513053596f61536767477057574c73374534334c5a615977565949544d7771672b682b6b65706a3143783567445841644d346a6a6c3346644853343572352f3642767873393243543054364a66676535652f49484642424176324c6d2b72576a6546726c4e644a674d5658666a356c715146584645486b356b54395246786a57426a326d49343969376c74376e6652595261414169324574516c6e576a46624e746347667379424a624b334b334f334b4130793858636e73324e444841414e47497757713479706d54456d49782b53424c7841744d654b797a32554c394c6731524f523559596471314747713171343856567335655a46703149376e5158513256754a4262776a544538427737467a665849536c5959593634743764363767694934564753352b3861354d613636532f59526767366578696264694565412f465878664e4a6244514179594b776b5942427a50587433396e745a45654b66534f2f466650534f427858622f414d6b336876376e792f6f746a5433357246365874664e6d2b4d516736587032784a674a33526834593831303537667a4b6d6c46626172306a683845375241636f4f5275505457366f6e545433724443354b42306b6436395452334b7a582f54596267553653677932376b5a776645344b335a626a37573635384a6f54792f59756562467a6158486e6e68774b32793677342b54495053786331644e58417244365866382b30783855656b3969327949626d6741624a4758554b73796a7669704d2f70516375523871345975776a6e794e565952466b6e714d663673526b52386c6b4e366473746a77374547746f6b616f31374573786a775758372b454d324a2f425a70376d647773426e37664e4270334e385a486c3773566f394b6871756170597848534f33327173646a616b4856503239766d6c3952335a394f75376559447a426c4b51776142594e3334317a434430735a484b6e4243636d78533272384c384933625a654d773854783976656d434345756932614c4455365674565542494b494c38796933424b5a4e546767346d324f6e665167586656635077562b386362695239736b392b7835653974583870616f6e6b644e50656836714e4d784d597470515a726b744c2f7657656335514c694c792b43746d7a467546565362384764426662336873744f6348636455516e6c4f4e77616f59465a7264344f352f6374416b4d596d6943794a61543842386c30765478545575587063454c74625748394d486945484d6a4f4f32334d67502b704c713545344c547659792f70694f43352b7968352b3576475170433571347563417570756f504873515a4e686238754241667853507857653562455846775564346e322b4332326f4e41596f67353566464278353237542b4c6e37555174774d5a3673433354783975533333703651325a5761334f4d36754d574b444f5978424c6a706c38437276743431493031783573694969457a6f71746342435453306776324946327470783039352f44383171736446777434654864375a4b43684c4b7978454f2f7456426f4d524a5452386b492f7178556a4a3045636a4468336f715a714e7071676c524b7155316f4564512b704b424c464132703564694e4a4a54514e6b6d774e4b66776f4d486b3349627658434c784947724a75616d2b6b4e566671433334344c46766f5044554d66774b446c536d5942306b72726c674856386f63565663687064425839774f435933526b68795a48532b53427250544c56795a646d774c687444517a383178374e6b334a6947504664364d414741474878515a62667030686445377374576e715a7331744a306e6b6f4b4b41484b69416b426b4e4f655368693943707871674c6a74516366536848713973305545414753383166752b5a4f557a39557065374a643365796a437a4f592f5366782f4665646d5767427951496168785657375748314c4c49616a334c54596a65674f6c6d4f5a6442306f467346652f5637465a6f533139717033457268476d45784350484f7144706d4d705a4d6b6e5a456e456856635154326b5a662b5275706b384b732f63757874507459743545684c4f5855353755484a334e6b37576253667935726d6b52457455614d56366a3161774c32316c4c4b494c4873586c59764f416b652f7742757842376531643177467a69417268376c68394f6e7273513478364b667730577767344241306139767a536d57717159596367672b5a434347534a69355142635655497a4f4b4344677172384263747a68786a494b326b71444a45307851637663427246743641426a32686338375779527138754f6650322f426466314749614a43352b6e53354643674562596859387752594f31466141534b397979334a5475615967306a576d464559754a753643774f367574754a6367526b71624e54704b317768376b4851336d322b373238725573535069466d7332684c6451754878655758624d394b36466a7742594c3175516e4f555861497038794543544769396367437a73523334726a656f5835577a306e78763846304937714e345276772b715034344c427668357047696a4642694673794c6874576246614e76626e476b73366f375854686e697473424569714177674a564b32574a694e7763434e50755645433056627462526e2f56792b6c4230745358484a4546756d654b59675346634545356f444631434b4d686b4155426c505370466849653543594f654b4e586f6742724a4268534b4c63465077514d327275536e416f2f776855334c304c4e5a467135596f4464446a546d7650335a45534d582f414a563172567733626875454e46744d657a69734f34746a7a484842426879716e674a54356f7966755639746d66464139736159746e3848562b32614175543575716f752f4e5854683046327254393644702b4c71545365517161726d62586565584557353566563756585269524d5044424158666b7047496956493431556a6855494a48464448457079374d4d457064366f4470302f6b6c4c68527a6847694a4c5651463371674451354641644e6332545067636b416a5369676648325a426745593139733041664e4a755a364c5535444b4a56704753776571504b416a48504c7343444a76644e364f754f5944686379595a616f332f41444c625a59643672306756514a5a747a484e626f43694e766c69566670467572346f474e4d42526c737358684f304a5a384f786330335265486c77503878354c5a7459364a364233646f514a7674784b30326b7445314b3137507274516b4b67682f665659665672427557616653662f642b4330656e586e32776236656b386d6f673539323059593439586173706b644c727062397161663971353034456738443373674e6b593350623936655a654c38466e387935626b4e496a6f3578524632383947356f477452657678433151446952475661724f49364d6662385670742f704e4b61536732626d3935506c33593163615734352f67746475596e4158526e6833726b2b71396632316d5069503741757662614d61594438454230366a584a517471374548717a6e322f4248476f515433562f4643547159397168446f4b74794e4e7569344e2f554335384a586f79424c484442634c6332326b6263735267666b55484e6e742f4d704936577a316673556e434554706e3166367679577a797a695652634170717a7279644262746476616b6455494e7a31462f77416c70765778656a31554f57617a57526f476b557a57304545686b466341514f59566f4771556255616d527232437055426375725054773932522f534142336f4f6f50676f5864776855555269637955455a366852384f4b6c545251795a7767672f536765414342634a6f766d673566724d7a62685a667743374455334261765562657532777950746b6e334e694734747973797a4878545735536c5a6559366d72326842357966524a674d42486e67744f7a6a354e675475792f71534230367550425558516454476b75714e454c2b33747968485534304f316330466b4e31616947756c7454695844344c6e33746c437a656b4964515a2b776e4a494c6766535430757467744d484446417469316f6c68583953376c6d4c5263686371775858586a5141494a666b4243514f445033726b656b5770475636452f445071672b42585576335235627a372b4b4f317364414a78616e5a334948394c6b4a6265566f44514c636a467541584739544968666c444c523330646567326c694e71354d6a2f414b6a4f4f61387476596d462b394357494f50616779744766354b69566d3243324575614d7145784357554a6a50324b4454454749303858375676734d4c626e386c7a4c4d6e4c53784a78586274324c6368584474515a3230794e79336766454d4630594e494c426273693038637566344c525a635551624c46767a70306f426d6b39666d4c477a6b4935394b312b6d663847726a49726c6635544c2b6a4563536738544e7a4a64662f483574636e446a44355348344f755649434d714c523664652b327678756c69416139686f5548713730796264487175623538446d4b63385063756d30533442397539636f575937653459474f754d6a346350623271794454626e63307462754275796f372f5a3174743235694f6f7931796278637537392f3459785059674f595366675872692b42392f7743714e714e37534e714a576d38556e6f335a784a397541646d7865424663564e7a5054626c5041415634446d71624e72524967566650344c42363775685a322f6b5278755a6677352f6b4f39426c395533304c64714e71784a35584231796a7734642b5935633177674e5134634f61516c674f4b313753337230413461785642377262774e726232374a6f305248336674586c376c327463714d765737347341764c656f4165644b51444f783971494d6a5631476e4a4e4863376f644d635077574f56356c64446652635571673946743933634e754d496e507557483148626d33636a4e2b6d52717954616234576f6a564534355643307a395173626e6f617674785161646c634e754e4d313049514d68495a792f42632b31474d46324e70466a786571433762574259673261755a7346436174384545416447736355706d65537a3374394733683148327a516159746a6b764e6571546a756e6b447248304e55557a372f624257372f6433747843555254706b524875703863467939794937657a6245504470655066384d583738616f4f62746f6a537a2f57616676585832577a3830613849677449342b354c3664744c597444554e637044556332706b506956304a6a7935692f436b61526d4f49347437557a51616f5734576f36595577703759344b364e6361464a4332635437444a57536c706935477158306a4d2f6c376355444d5231464355586c484544395038412b562b587651675a5979782b585a79356e464e356a6d6d503439764a425937346c587775745358667956494c6d6f7238554a797255763363454733486d694d4f437a656362665372784c5548514f596951306e504665553357312b32762b5744306b536b33415a4c3169382f366e482f414d75524a596d324e504e7056516361392f5463746775544f3644306c646a643239516c45385635346875354236485a58325a313067614f667a586c7470657256767a79586f3741614931306b676579413547575958573950734179387958692f42594c5544713163313174744b4d59367a523047706c4a55554a7a51664e42485a414b64696a3655426569586d6951346f6765614179674a67786b4b454d764a574874794d435043544833486c324c31706f764a656f376949334d7a626b44416b4e4b4e513546613459382b53445646745a7a2f5032447244754e3264756344496363672f48682b3157446443664a714b79635250487639767851534d3978756f766174526c482b4735486e2b535335397a636f64764a737961446e6a6771664b74577739766a346854385654666a47356230796b5a4e34645569515062386b433239337075433345474d333751336256617a497868584e5a39744557596b6a785537465a47506e7a4675465a5336592f6e79705642364c3061337073617164527935552f42644968306c6d7a477a626a444b4e465a4541494664713571526f6d536f477755514b4b447a50723231386d35357351347559396f5841704b623542656f2f77416f6d4c64694d7333493934586c622b3774783659386b463042714c45305a61493249547245735758486e76536642336f48647979706b67397259743659672f533361746b62596a55347277753139587632664353517568592f796d3741744d4f4367397062697834712b504e634c5a6576626663394c36546d75374167786349436f6967676967525151632f666b2b6674782f47662f6175697347376a2f57323534546c2f375375676743434b69434c48366e766f37437962307138427a577865542f7a4c636d4e753359483145796c324242356265627935753770755843386a37555665333230377861495232316a7a5a675a4c304f6a793465584850506d67356366546f774433435848425852394f74306b4337354d74736263523078616f54365361526f50656779325054344f386747577933744c56544b4e66676d686a7a5638616469437931736245342f384148467635556c2f304c62337349694a2f686f745675356b324b31514c6c6b486739397372767030394a7248365a4c31762b4c657079334d445a756c3544772f797133316259783357334d63783465316555394e6e4c302f6677452b496a4c735166533146454541645a4e31366a593267653549425833352b584179646d586e6f627261325272334d6f366939443146387348375543626a2f41437933626d3171426e7a4f433465362f77416b336c2b526557676670697554634c7a70686b7130467479394f3531546b5a486e56566b3673307238616f6f44475247436d4f4b4c705253687851486e484e41756f4f4761614d737a676731374f2f663273343362556943396130493746372f307a3161337659436f453236687a586764744b4c5663736d74376e795a363449507034527a58503841537437486432336a6b793258726774514d35594242775038703338647659466b4670542b5338484a697458714f396e7662387273737a546b466d474c4641675074696d692f77433161724f304e7730775852743745327870416638415679516363577953796e6b7a414e463359624f4f726b2f76563850545956314e78624e42356e4a6b7273584339616652597a63694a6a2f7178354d75667576537052414e6f59494d46753651432b4361473549724c776e344b6d35596d7a484c46434e7a565271494f744178754456417668677264724f566959755744706b54316343736d32455942786e6d6a49784d5152674b634548732f54765552756e6a4f6b343468644e6543394e33417437766737436e792f5976654241564646454842314164366d6f696945326a78375573636453426a71484d596f42774755385061707164424e525144453668564c54484e307a734e53423438426770426d624d4a49454e31424545596749477771394549645743587842676d365834494936416f58436b6a567632714e72354d676155756c41456c7378775149306f4f4d6b4479446c52395272512f6b6c314556526d356f653541546a52466f67567856594f522f596d4c6d6e61676b51364e5766696a4832344b736c34307751575248366345412f4251594d454378706d45466d6f5948424457633845674c3449794e4b424177665454416f553755616a4844337144706f503349474177536b42536f397662745572324d675a364d556e314d6a487859552b53597a6375674a446a4651386e5334684f5046707951434a306968537a617369457679716a504c334949433742457871344f4b417862324368692f544155514953663372467570364e335a6239446469326d514c4c4865674a626d79482b6d53445a394965724a63616c4233365161495342414d674b6f504f663542456d37452f5349694c6a69354c486d6c394669356c504d4c6f62657a4339596e357252317671664d6b3050646c2b3155656a577a6146794a46525054546b673741614d514d3866623370664b387a4d7837442b43665649524f67417948755744643264354b312f5375744a3330783659366669354344664746324c6d4d39654436685658787644547149584e7352755779424d6d644f715850504c42627270366156515558376c36546933706a7a7a39767a5761573375416170546c4f54384b66424e656e636a62486b41504c6a684838334e5069614c6e69357652624d726a2b5943424747696d6d7231413747515762324175626163546a487139793750703066384178374c3436492f494c6b7965566d546776706b2f755859324c6a62326d723044487351614d526f4e555973666267707262415653732f6879515070304d66656d4c64365556515a693643796f6f4543366e74796454496f4a434455437133746b376a625849785055797679782f59553975476d5463654b44353163366d6248424b356a2b436664524e752f4f457145534b6b4e70493439694244536e76576d31646c437358354a78597a6a4458784375732b6f32374d676274687169756678515a6a74373979756b315769337439774b5344643637653333316937315271394670383246537748625242776a4337434c455a2b324b666232705245707a4246615a2b2f6b74382f5539706250564a2f3561724b64396276504b3254702f69515a37746b476f575063776a5a444274525853323844502b6249726737324d78666b4c6d4f614430502b4d477379634b664e656a4c6c6a7858442f774162732b58744450445850344264796a4d4d55413742554b536b3163304a3430516c6a70346f4977774346496a6b6f4a4d344951664d346f4649346f44426d644e4c6d6b6e4573376f4b354267517143493846644a774771485657724c4e6b464c4d5843776b7a6c764443456d45512f657430317a7947333130442f742f684642304a673669654a53526b59645044354a6a646732695869492f6373336e30714544376e665737665250334259343736647a77514f6857796a71787a57697a7437654f6c766b6751622b3877676257725634657176347256626d627365754f6d597049597252434d49426f3057653549786b34396d51587a5961634179474248464a616c356b646457795667495a41774c55474b6a46534a644764655341454841344e69716a5138676d5a6858454a5a55514b2b6d677a34724c754e724359316152456a4d4c552f5653716d6b4f61305163533441667a566c67365950334a4e32424174785274335a6730384c4d794452357366424d7336775473325a6b364f3957377262777641546a69756639766368584c6b673257646a6f6b4a786b44586978572b3150544a693953755059755834793663422b7064595844495049455366752f5967733346364f57437a624f774e526c676d4e7258303144725a74725168485367756961366535576d424a5934705957354357474b6f395733773264766f50395366774342505566564c65782f70322b71377879586d4c2b3575626957715a645679655a4a4a7136556a6767696a4b5964694c45494946427a3756485550464130626b37556e6849676a445376513748317a7a534c5736704930452f77413135766b706d36443338597869576e34546c794b387075725a3265346c416c325a766d7574364c36674e7862386d3666366c7474504f5037466e2f7943305a33424f4f4a4665354252596847364b346858322f535977632b5a58455a72694463584c56496c6c664431436350443855487072493032326e34657856796e437754456471354550567a673165334a5035786d584d716f4f684c65526d527057697947446577575061576862447946506276573631456161494c625964673630617167354d715941767a563245686d4d30436962344b794a42727879565a7762745453434236527145434e5868344a57316848544531785151422b6f68593734387369527a79785a613477616a302f4e5a393450365a496f79436e5643594c6a465157626476414f2f66795766623374593079784331777552484c356f4b626d33747a4e594e33592f4258326d68466f34424c4f384745466d7637734e537553445445693550546e493969373175324c4d42416545436938727472336c7a38795745534a4e324c3147327651334d4933725a654d67385544784c43714c676f2b493051514b5a69494d38424839362b5a62726479334e366436574d3545396758763841317539354778756d4e43527039394638343549486a34714c314f7732516a41514f4a44794b3837744a5737647a56644249474169765437626657356c347543523953446b537352756d6344394a5075584b75784e75524743394c7462457245626b357863544d71664673316e335870742f647931517452674f63682b61447a31486f6d65713764372f4639334333726730322b6d4a366d58466e614e7552747a693068694a55495149537939352f6a6e715033646a79352f386c76702f77424f522f426545507758513949395150702b346a6548677775442b452b7a6f506f637755373668706f713764324e2b45626c73764758564876544374516778627a5943353178614d7671475837317a72424f4d4b6865686951615a726952746933646c626a67442b314266726f794679424f45744a5066696b455766523363466e7579334944526c482b493655457557626f6a6f38776e74466679567531736d41446c7973302f50622f414a4153503463566473343335487230742f366b4775567955616676566533732b6650564c434a48662b785335633067726f62613335566f526c6a6e326c42625850424c667578735735584a34524772334a32414849727a2f77446c573838726265534d626b6d376f7355486937317a7a4a6d5a38526339363944365a434f33734337632b7171382f62414d3478794a5a31363635616b5230414f47365467364373622f41423057357a414f4d56664465527659616733307943796935765948434463485a615449794944434a4f4b44563567437148714e6746756f4638315a634145485753337574794a616674336a2f4f5062755164693361746236314a326d44675078586e773970786a6f4d6f72302b796c4178456f52306b346a4e63503169784747364d4434626f63647363554139503355593374517750544c76586f634b67727857306e57634a4375414c73765962532f7743665a6a637763494c68536851664a30524c38317a4e3536337437452f4a74487a4c783664454f4a346e444848506b6730656f2f54686973636476473444394f53626633544463574954786d5a5250617a3470374c423466366d514966547257646662322b534973434657664e5836697a5a715167626b6d794461754251437a474e762b7263704350345a3967793472786e714f384f2b3345727042442b482b584c39764d72305038416b65393051473167576c50716c79674d5065666b764a346e53636b4855394839596c734470754179734845596d44356a3852336a4e2f5a5764786233634e646d516e446a772f4c76587a7163614e6d6a5a75584c45684f3349774f4434667637335166537739475138533874745038414937734132356a72483668535466492f4264335a65716258654854616d444c39506850755037554773306368534e57554849346f3657514c4b48486a6d736e71635362657239507957364748465533725975577a4869474b446a7749496648344b673257366f39367676576a61726b443846572f5046424c646c79796637574d5a3634452f676e73744b6e7556397547767738454352694a6449784b374c474d4e4d474a41376e575862574261506d4868307138617539426e3265324e69336f506950696c7864615a56634652676f61304753444e35666c6e2b452b3956793658664e6135774c63316c6e706e31494d637a6b4f355a35573443675a2b534e2b78714a4d537a725048626161562f6167303642456b68687a573279504c6f4f3163324669526c51307a3746303755424543494e5546775a73466f745130685657414e5330452f706442484d554764545541376f674f6747426f706b4368495037635577494468425046524b5a4542517941646b6561434d785562452f7654524a7a53676746732f624e41596a696c6c41745842466c437a3051636d2f594e76446a38466a6c4b49715467756a754c686c467634704376414c6c62673663526c6b67736a4d61754556646f634c6d69526c49384f486174567136644c35494f6a73347774395a505556306f53314153584474584b3656324e715235556130306f4c4764305764516f6f42477445512b4f4b446b4842422b43426e624a54554d454d754c4967382b78426739586b5932504c46424b55592f6a2b433463794356307656726a534550306a56336c6361394c7a4a6e545241743252416546546b6a59687570533143656d4962325a57376149757942486743366475316f51563241597a726e6b7432353238626b476a6a2b4b77786d397748674b727054597871673476397473334a504f4c736665756a593239714a3649694a374755684e7a7957717a30687967612f416662584b3030794875586a34783875464269417661587950747a486a302b3965583330504c45446e4b55666347516454304b3466366c6f2f777a2f335972737934727a2f6f38744735494f634e4866452f6b76514776567851415038414e4531726b69616469684e6561424447725a4a33514e6361494867675a364b43656e73513857436a7555476664434d6f31794b356c7753414c6c64554358554a446f6b7556664445754547533566684536535354775a51623241464c63356679706d474e48347132315079792f77437841323275655a4c57326d4c59537857363358767757534d334c43702b4e65613656757a35663957366152516259796a62674e56466b74784632334e38533738665a6c6d387956353579772b6b63426b724958544b542b394235375564767544747075415471682f715630702f546e38614a2f576a436333682f77416c6d5479412f53612f425a34544e77564b4379324248765777474d48574b4d694b685633504f6d4a655947475846423072496e764a614930674469463259514552706a67426773767052747932305a5751325248385331334a6c716f4b373541426b517331712f49593167654f4953376d35356b7448306a785a31557530496a48464275453479777843494439717a79674a565369394f32613951516135444e4b2b6f4e67713458684c4e6b4c3234387355464f3975337351584444677135335957382f782b537a53756d3746336f674969416644735150633345363642703535724663464e645a5335725977504255794878515577764559594a4c335658676f49474a4f6e776e35705a412b4642444677477a51454e505972426f6f4d456f5934494c6264634b4f5666704242484a55516846696d456d445a6f4d3173616977795732455a322f43534f5430564733736557586c6956724130396f51503932592b4f4a79366f713233667454776c5539796f6d4d33717339323347356c5642314d455350717a584c6a64755767305a4675446167744676647759612f67673273795555384b6b447169342f4e51486a67676759386a3731476f7864444f694a38504a415938493468416e546a6b674f5353354f4e6f415a2f7051504b576d736a525a626b6864426e792b5371756d643273734f434f33756945784671503830484b3374714e6d5a6e416e2b4d44493866334b71334f4a71376854626638392b314f73684d315042486362573341366f764534734d442b31413433554c494a6b6669714a58376c302f5647316e4b7543743246694e3065644f763652775a6174387873474d75576b494f6c73397662685a69626656475138584630313244564a5a636e2f4635792b31756136786a4e6f76385630376c307a4c6e444a4170334a304745772b716d724a6c71326d317432625a7477776c562b315a7145382b614e714a69474250766f677a584f6b615a2b4e5969476d5743374d72305a3946364c6a6973382f54524b526e5975592f5250443335494f58656c504543695733636e4955576e63323731672f77425732572f564871437173536a63384a4272682b78413843544c71693365727a4579455778507853454f61354c627372586d487a5a5952704642634e744b562b4e30733051774143306969627066676b643341514853346451673479727751314f46454455495331796f6d3071642b4251417634736c7a392f5a316945794d4470376a52644a33444655626a2f684962443830484c762b4754726a584c736f48524b71377438644c4263486374356866494d676c7663386c30624e774d474a35726e5749655a787033592b334e644b3344394b43313879746e706b547175506e706234724d494d614b376254467138387343506333352f76516457754874564c4976584a53557446655065694b46414e4844676f794c4965476941746e6d677a6b696a496d71476b73582f616768524e523071484e4b3478346f4f44756f6e56546a3863316b334e696432506d58692f3841434d422b3164726332486e54412f4e633639614d756d582b3142795262695a6152377632702f74444274457a584638453854314e2f75572b3078366b4532773069496e69417570626b572b53775374366562712b7a64594469794239786238325675324d48655257326737634654624e484e666b726847684b4234534f5663317950577473542f35454258362b5943366b41346633703479317861576552516545684a2f624c676e6e4636476936473732506b33357969656a4675437762713849447451477a4479354271676533344c30473367573661435264655674377253614c645939516c426a4a774f31423272326d464a646e7438316e6737734371495844656c714f433162654f6b75634438454861326252734e7a58412f796535456d33456e71625633555a647a624634796a7750755869665539364e3175376b7834413059396759664846427a4c7444714761545166657239786963323976594b67794f495165673949336f7651466935346f6a7035782f5a387578625a576f584351333853386c41364a43514c486b752f74743770386566314371445a61327069666c324c66617469334567525a7664376667737039523230525351502b6b2f69714c3371666d485441652f6a37636b477a6362754733695a30455737483750623372794f3833553933656c656e6a6b4d674f4874327262767850522f554f4f6135626355466b356962614d68315a56356376696d7454625363776742687a5168713850417579443339363735396946334b556164763746793935594d375775744237317039474d726d7a6e5a6c585434666e524a626d30545a6c6d67343037656f5663787856663238596e4269745679374742303550303967545268435a36654c6f4c396e59474877566c7a5a7745686f4445634664742f77436e463642576d37413442414c634434636531646e61784f67536569346e694a684836732b4337304768455a68736b46674a47536f334630573436356535584759694879433556363462307459772b6c73682b5a2f4a414c6b3558617a4e44394f587478344b7377635370556533354a69415258414b55306c78704a507734657a494d30626569477335386c7a722b33304157517866564b4c31306b384d4b6375316469514561444c446973307475444f4d38474f625635653342426f476d4461614e703739503755597a6c64445344517a6c792f616f4c4773367047764e58787737766239714157346d324e4138497735637537344a326a56383030334a70512b773976336f66532f6567674c56353855664d49707851387867777879346675516c49577a5556504642626250742b7a6b6a583939465670416a7278346533344b795a5a32617674676767365a5650354a345843414a41315a56346a6e692f48386b53644a624c336f4e384c6d734f467866566f5075497a5a2b68766974763349732f314a6e70396975467364354c31475632394b7031675248434b43323547467a4a634866624c714a46463364594d3250655658756f617832635548423275786d62735363435636654732594f354e4f705a7654725775585a3846316230327759494b6f536154686b50574c42752b6e334969706942636a33592f423158614f75626a4e57657337324f303263784b737267387475326e356f4d332b4d2b726e63512b3276482b7048775069517653386c3870323977325a6935436b68345376652b692b74513951743662684562736145494f7667694b6f6f4769414448676f66656d64636a3172316948706b5031335a4470682b4a356650336b42785038414b505670585a485a575430442f6b494f4a2f54335a6a6a544a632f59773832774948426a2b4b35446b6b6d52664539363942364b4263744357594a43436a7132387444635062322f4e6450625468656a455a673162396e74795533653145386a7839374c6e584e746532356547484242325a325939367a3362554c5657444c6b7a333130566c477145747a654970452f6d6732334a43427056783456364830585a5772566f58346b536e4d566c6b503452386a6d2f75586b375159363768566e6f487138746e75664b75482b6c646c58674a48413875422f5967393654376b4e5277526675554d696747574b4c61554d7170735541626d79684f6e46526c6c3951766978616c4f5830682f636734502b5958342b54617467314d69666376476174533365722b70483147384a74706a45615248764b353773674c554b67716739455770324949614b53716778524a667451444371362f7033726d343268307a6e49322b483733584a775263415634495071757a7632397841547479634c53766d76705071317a303634434f7145764646653332487265333331496e544c394d76617144707149596830554748664672746876312f677436796273457a7445422b763846715152525252424634582f4d792b36747834572f2f41496976647277762b5a67666457332f414f332f41504555484d394e674e635838507a585a7630777277575462572f4c594f7849664261726b6e4767476f51495a576a4c555a434a34715275434a4f6b767a3472467564755a647676536552705a795548566a505479516a75744d6a714861737471556730637a524e6432356a4c584e426f68764c5249366d504453757873373476436871764d45523144694636663037612b584855482f65673673374f75426956346e312b77624632426a34767958764158586d5038733237776864345551656d6a4c5845534742544b6a61663846762b574b765165642f79623155625331354566484d65346356344f6370546c716b3772712f354c4d7933397745757a52487433712f3066303358487a5a2b486e6d6734384e764f5a4442433774726c71576d6361723039797a785964697748612b664b755344686d476c6b2f6c4f4b4c736a59572b314f4e6d49562b43446c62665a5476644f47613154394576526734494a344c7662534554576f572b41427052423443646d64715454444a536331377264374f336548564665653953394b386a2b7044776e44676735454a484559717a567971713477717843746e5150676739562f69463355626b65514b372f7245744f7a756b59365635622f45756a64534752682b53396676375033473375577631524951664b5a6c64445a6250574e6336412b465662625a4735654d44394e6663753277307350686767574945493663683765394e56715a346f6948536a6f4f445551414e4435725a627736714f736c4779374670745769592f6b55472b4a684c483971736a422b785665567877374b7256434d6a6767342f726530742b555a7848552f692b61387a62742b6161594265672f7957636f516a6177646566327477577930734367325741624c456d69767551316673564a7677755230384666435773616a694546566b655866742f7741772b612b68787052654673576863334673527731522f4e653746454255555551634b5445347546564b48686571736e51357173434171633042706a674f616b513261575661444e484870723249497a5650765169374f3261533975624e682f4d6b496e742f425a592b736255347a2b62664a427662534f6c5138633846566176327267614578506c475166334b387842366376636758446d6f4a416c304e4a315a6c7365615a732b4b416138483976656d3038614f6871413654696f43454231653732716b427271544b752f66743765426c50704151573877736c7a66324c42506d544177595a726965702b72692f4879724c743955734848426c7835544d366e753745487062762b5232674349786c497651344438666b715a2f35484c5630327742322f73586e58497971704535464236657a2f414a445a6e2f79323551374b6864657a6474334c6571306451794b384445354c54744e3763326339647644366f79774b4432375a745651764b6856477a3351334e7358594f41637542567746582b4b4273504355777737556f596c696f426b43674a693353436a395655735a746c2b614a6c567330414d48716d35356f345a436972497a4b42346e6d6f47436d6446485a41786255796d56422b53456358346f78716661714352445966384170775159436f782b6166567051797167456f67344a4232344a36745442566a544d6f42516d76354c4864455475725463434f35625437787a574b5a42335564583645476b385070522b6c7356427045574b51484930346f4d4f69416b4c4d6d3858376c5a74724974366f696e564b58765458725142457a6761486e6979533258354e69673332347541706f6373464c5a306975434d6932484642426d44323856544c774566755575544936426d717476754c5679734c676b4f5042416c686a48535137653374383170466b416157392b533538377349336a4553662b4869743975342f496f4b647862312f3078395854373174684479774978485448704859466b6a4f4a75786a32313741746f494f426f676b584e44676e694e53555935386345375055494a516546486732484e4d49697366324a6447684161696e424e394f6b4a63454f6b3151574e7757503158665332646e7a496a724e4964707a5772572b46566739593235753762574138725a6675516552334d6a63756d5a48564c786470573274356e7835634d466975544d376a686134744b54383044786d4e71574d4e51474e63663372544466374b2b4e4e7930626375565664434f73644c417632717263512f55496b664e414a624f4f32756445686830742b4937314c333965307a3135724c4458637638416d4e682b4b31797348584668553468426b4574725a4c333679483073756c74722b796e45517358504c4f516c51507a4b53357334336a716b324452354c5a48593267484549615333303170776f67555230453670422b4b34507131727a647871746970694a466568334174766f387567376c7837784564784175526c2b53447465695468486169313956765671377a376c306a314369354778412b394d67326b7736744f47706468324f446f4a515579516942676f37312b5345755874375651476e424959694f4b596b4d457242414d3356636934344b7779565a69773755436d6971484b69736c5445735655593150346f4b37674875584f6935395176662f41452f776975684b52422b4b35633552746236356450554e4878705242646474617a555644666d73706d62636d4e567374527a50356f584c47724b6d4b437546794f4b31787541594c6e5374536a5556566334337868682b4b44736d2b3250447353546b4c3068435835555a317a3756693453444d3057797a415175447650752f656733516a71714d5063693477526944676d684b6e447551434a694332536e694e63464a30716e4151435131522f68564d756d54476f7956776f4b70574f53437468324a4830306f58566d6e535853364866345a6f4f5436782f5276442b5632344f73467134496975613165737865344a356d4943354a364b346c42324c6477537268544245375a77354b3430647759382f623572645a39534f6a544c484a4276466b32336b564357787a574d627a554d797447326e716b416365484432397944586274534c79714f43325274747a556845524f6a6837302b6c797a6c41594d415a484350344c78322b3352336c2b567956422b53395236764b566a6154307535614c3869764763304249645150696f4163464f31424641555151676146304547436e4e514d5643485151535248743271536339695942696776324634376663516e48497376546572447269324f695556354546705077586f4a376935666a4355384e476e765163326533695a6456487056627474364a433762457965305556733436336c4556416571625a6d3443372f365751542b79326f31447637636c70746243334565325331516c71726d437251424b6777515a7a616a70616965315875566b346b3034726c377138646e5a382f43524c51484874516455466a2b4956736944303846774c5072396d3530376d33702f6968683776337275574e33744e7a4a72467747574f6e43587878514e476f66483845596a6a55396942673076346b585a41545373732f6877527751647a31594b4548676742422f465a3936644550356a70392f376c664b57694f71536f2f384176424f316834644a624357522f44736442787032792f53574b4839654e4d6c736a62316730306b644d7555686946504c4d437944444b563635486d6e746263352f4e6152486c2b5332574e744b3532484e426e3036596d552b4277352b314674394a6a503033616946372b61556334762b517156664462615a43567870532b6d50306a6d654a2b41523346335262504538554854315a686b5a6336726c6266637a745259316a54743975533646753943373454335946426a3962323533657a757768346d3166376172357a47426b644978583158467776447932763258716e6c4877764b5565444545684258736433754e7242724e7353424f6646617650763375753562454748694873363357764b756653324b57354f45546f474a3730473762776662694a62554e4d6c77726d3033527545616a45435649673441396939467478307571373068626b484f504c4642587449586476306d36626b542b7168667478562b393274726552613945534a2b70756f642f7743434e6d55544c73563077574c592f4242382b7662655732756d334d4f496d7176395532673238784b332f7741632b714a586233327a6a6575617857636a70493538567776554c643362542b327559572f446e6a584a4237582f4142304e3666615048562f37697572454e324c483658592b33326c71306352456175303150784b334d44676149466e636861426e4d694d5969704f51586c4c6d374e2b52334e764352775041552f42325750312f31673779666b32762b47482f414b6a78374f4876565730395274375778462b71516361522b4b4473327431456a564d675a3969726e36767459593348503849586c3978755a6269526c507541564a6f673976744e31743932487453666c67565a653952322b3248584f49504a654868634d4a5046532f505561686967397073643974397a66593342537351537a6e3969373159352f745879674f56364c30583136357435433175447173355a36503249506179634665482f414d6f33506e6276516178747845652f4665336a505778695847584e664e2f5670617435656b503179515a4c63656f6356376145795a4552342f42655132397563355047756b61704e6c6d7654656159454f4d5277516232727170525a355469626c50597171562b632b69494d556b5933374a366f687553447158502b4f4a4f48344b6e5349794f475254796e47354551496f33784b7a776c355677325a6d6748544c32775164625a6a714431507346797638414a5a455837476e456176775862325558476f727a667239324d3936482f77436e45523735562b53446d33472b3435766b75705a3963743747334b45346d557452307467324e542b3963653844352b724e48667845675a35466a326c416d2b395933472f44536c706763595177377a6e332b356250385a32596e664e36593662592f77445558412b44726a5141464f50344c32766f65326a61326b5a4878585036687a787748752b61444c3675544865376558422b367634726f6d3147564f61357671594d74314357516a482f414e79366b4947584c6d4f484c383045454a534a684130474d7677375662637557397645616977627635734f4b35753939572b796b4c4d4144486a48474a35356531567a7033664d3670316b65382f73485967356d377437726433353769554a4e4c4163414d42376c534e6c6641615543427a72383131504e36663454383067756f4d583974765344426d345056542b333769336b442f715772376a5365736e3338565a4734446936446c456d32544359306b5939716a6e32393946315a77747a2f35527143795839724b33487a4c56595a67346f4e5672317a6462634d2b7550365a2f6e6a3733586332502b5137652b524366394f6668615651542f4e2b624c782b4d5769516b6b613561666837653155483073682b78527452706d76492f342f36704b33503761374c2b6e4b6b482b6957513744384433723179446c3335364e554a5a657757433530795851395568345a5a6b36566844306b67467434315852735851445876574552656f7a56676b776442304c6b745159557957766b4679344543516b563159457367575148656a6979444636703855436e446b755a656b49334a5246417571596e735846336366363876333845455953464b736a47322b536f442b474f43506d6e4d494e4f6b41616b595445614c5035704f536b5031464231647352703144452b3335712f7478576261334e6473524e43507a57697557614169624244344b537156474971674f7031506b6c42434c315a4249317777515a36706e44496b55624a4172747a66354b53444b42685243576b4241517a31523156666b755a757655345144512f33594b757a664d68356b2f7247504c6b67536339524c635a664842552b4c69724a394966326f714a52707051567a6948545777596a76554d54676d78696763484168623579303264454f6c6a535842596254675234725a5a6835306e726f4856496f4b375071736f644f34482b7366694256644f336568636a726a555a4665553365364632374b63523053494552324b33625835574471684c545877346a334950556d543152417158584b74657277502f414344547a784835726f5762304c76676b34515770585063694967506b73337145705273536c6a6c3736494f4675377575526d61764c345a4c6c796e706a4951774c3669744f376d6452684833386c7937386f2b3542302f52356769516173532f5975305a7959652b4b3876365a644e7537544130586538316f6b696f43436d56322f4366526263454d37306462726534335577444f454175644c314b4d574559796e4c6e534b76733775376f3169455a63596c42666f387554737a7256616e7043796e6358623064486b6d492f567142576d7748784655476e65546a446236726859447853344c792b2b334276334c644a5945683879756e362f75534e76437a4847374e7534657757663177524679426a4c7177354e3742425053354e666a4c4a2f6d46366b427976483743666c365a6e445647533966484e424745634d30524b4a6f3656337878545372526b43697454676d5a6b44694179674a797a434273556f4a7a4b43464d304446316d336533316a5574565146585070424d696734643242744f44456b2f77414f4b30625430362f6436377a323466702b6f397551576d57353873744141793479516c646e63447950756f67762f70322b693351766a696539566279666d48796f304555495041367867714e5166564b704b423766534f66425657693870573850327071347041514a56784b436e6657346d647663745752454c672f5544516535632f63322f4b76484f456d307270377136597974576f484e35466e7056566279784b585765306155474f3435464d417937473973655a45586259314d4f3669343975736d6c576c4f4332796e643265796c62672f6d45303542423150544e703972743478786b657563755a5462712f49677432643662376747324e485a324d737432745355456848526b695447636e4b566d6f6c6855674845494e4d356159676373456d72545832436535314d58775646796143775445716e346858327a7777574b496b5a4165785776583563524159494264326362673132756d662f70574f666d327158414b5a6a417270524e4f536564754e324769663769673552766c51587936716e4479626d6957497a4f614d4f5278514d5a452b39435875533974455133685151794f704a4c476d4b49702b314e414636346f476b6f2f536a6b786f67656c424e5576676e6647715454673361364e4d696773456a495653463277556742464b5a76584a41776b2b614577433744484a4a4c7051637871674d4c6b374a65433664692b4a554f4a57657a745936646435332f53367331426d6a51636b47726b6b6e654751632f4256534c56642b314a4b577248747167736c4b52447654504a557a6d4f41666a326f7a6b644f6b344656412f53545149424a56456b68506867677a4230474f35593133664f4d744d79493463714a6a453653446e6d7447694f49533651614948305274573478686b46546332666d2f55522f712f425778594b386648327a514a7462454c4e73323764497671302f4e584d345a4b53465a6869676e4a534230383068434579644c3445494c4c6b5766696a626b4d426d6a7263616c6e425a42744632634f785558647474372f5663686f6b66726a696c456752564e48714b437165776e43735471676665333472565969504c41683764364d447070454b435562564357315370333544696775787170346134714d774a546469424e5137307a4e3071515949536b496a55634545385571653551793143754b79584e372f326f36755a6f46564f55376c4c68782b6b5548356f4e55747a4342596d76425652334275526b39497454382f324c504d434a42444249535931464879515637693752364d755666477361732f3142626274526f4a6479714e4949303836762b43424c41416b4a532f617439755878574778434e746a694674746d714452446f6438554a68364555526a4c696c4a3155346f4a473563746c6f544c2f704e592f47713132392f48574265365a6363592f7337316b485361426c504c78427a5164665734314444696f4237653373467934796e5a4c57354d5030354c544466524a2f71524d655971454732564542557357595a70495849537241756e59593549496547614c365170524441635541757763664a636a31433349474e324a4b3745697978796a727439726f504b5841524a75613062653659686a69484b6d377436432f596b73415272785162764d4d672b533032354f78574b4d61764530576e6279655344703269775931567261566c6c64304870797935653361744e75374335456161463042784438315a41423073686f36695252637935366c4739756f62657763395677396d5341657048724a3556586e3731677a4468656c39536764576f59532f4a634b384e5278594e6b67347475776454643946324e6a73346b43557871422b4b3538352b586c677535745a526c434c594e2b3942644f4843673565326174684432354a674b434b654d526e69677a372b2f6474574a2b532b715854544a382f63764a577252423673422b3165334a49483472686635485a68627432354d424f5250755165664a4d695a4a586f36414c78303830616b30514e414356563237466736535146797265334a726c3846324e71305379427a744c5a4935635062325a61624e6d46734141383237453459732f48323765354e414153664832352b3542782f5737544d612f745847674b3058705056625554487a4836425432396e586d79585052515a494c5263414a4f4b666267784f70612f5476524c75384c2b43422b6f7252764e6e4c5a336a74594155776b632b6144702b6c62303757506c4166314a6d4937414d667a562b347467796f576242633730332b6e754c65644a5a5a72706271656d4c315935494f427634796a315a3856676a647553384a4b333778726c4252563753443936445659766269674f423472666263556e69716f32366159426d78576b4d476442703238784758654856653639594f77764359367245714e6d43684b5968584263375a3254367675644a2f345948564c6d7944316b375a334e674844554e54657a4c504c627a672f7741434630424b4c55344a444c56466a52427a726a5a6f466a68677568706a4a777a6e465a726d33596448782b53444a4b4965677068526172496a6250554d4254733565326172493079412b53494c5371364179477435476d724251644e4544797248386b59734a4d5777397553416b4163455859674d68535234486936684f6e444233377a6b67616a3850646837666d7169613642694b6e384f66616d6e4d4448785a6533746b6b3277306836597567752b707a6766636d4a503746574a616947464f4743615854315949486c4e7a58736638315863755173773158446f62456d565033726e656f657457746c2f546354754436522b4a2f426551336d2f75377557713661634267454855395939596a7541624669747636706363634f5335767075392b7a75766c49615a646878574d6c3047656944313533455a646347626770654a417233653243383974743259644a7174513352346f4f72365a7539453577705574712b5878585475536863746b4f34773731357662584247512f5554327275573773346a72455967564d734d45466b656d514868476659764c2b7465706e66586a705052476b636e35712f3150315153486c576350714b34705a413053306c59627631436b754b70717069673765782f77416c335733614d6a356b526c5046656773663566744a782f72435544324f36384c474c4630434f434431572b2f797964304747326a355977316d732b374966466561757a6c4d3637684a6d63587a2f46566d71426b2b4f5342326f347175703650756a743768675138446a2b654b356570787a54516e355a31417563554876423766765765647348714e566c394d39526a666749792f64322b31563035776963582f41486f4d506c67467048534f43356c77616930586232717574754c577167392f743759724c70306f4d4e32485477642f6274584b3355474d437a616f503234682b396e71757663684b3430576554694948504c68794335337173684b2f6f683462596a613764474a37793644306e706e2b57776b304e364e4a2f376b6167396f793771636746366533636a64477132524b4a384a6a5631386e443446624e6e366c754e684d7932387a455a78786965373978356f5070324b6848436938317350387373334f6a6544793566716a57507578487835736d39532f77416f736264346266384171542f555043507a51647a64377931744961377368454c7748726672557655626a5170616a674f504d7244764e3965336b2f4e76534a346342324c4e774b435244314b6b5134646b30496d354c534d5376523762306d4d4c516c6434494f4244617a7547676f74397230374b56563059773235786c683270374d345472475961503034494a3968626c6a45554865733339707473444d7273574c5a4c7837776e38755064696738707576546a6159514f6f6c5970325a513853397635516b5270507754332f536f336f616677516545694336596871696e4469742f7158706c7a59584f6f4e453446596f537a793979446f6250317a6537526f786c716a2b6d587336372b7a2f7a47314d36647841772f696a55653739363866497558437259653542394d6836687439345947786369534a595a2f477136612b52516c7035486c6b7576732f77444939357379486c356b50307a2f41445166526b4677646a2f6c4730334c52754879352f7859652f38414e647945347a47714a6363636b444c78582b5a57354463577268384a6a703777612f4d4c326b6a706953764665732b7032665534526941596d4a704b51792f65675746787747344a623938574d584f616f326b784b323071737270673479384f61446c7a336d346c34656b4868374f6d74334c75463035653243325349664467716a4a7061636355476a62584e567945756136652f74693562412f663759726b626366314945654a2b7865693346677a327371594476376b486b4c6c71353575703243394c3658637577674e556d706746796f793134345965356239715a433542734b31346842365062335a7a6f566939663273747a6168444a36726f374f4451666968766a4552476f73444944336f4c7475414c55414d6f674b315a746c626c6274364358624473576c4238353951742f632b703341634e626535656974394e735a4e2b433568746556767478502b50356c62704e437556475155584f71525a5a376b434a56775639776b53596539566d516e54336c4243426a4555556a496d584a4a4b4c345a7039765a38794f7634506b6730323550566159544a4663556d336845426e576b65554772334945456a507478557532775258444d4b61546a71637037636458546a775165573333702f6c7a316b644a39367a79326b744a6b4637472f74656c2f70584675512b6e446b67542f4142636a3770687a587553514d56342f2f4862576a65662f414a75522f774455463250573765396e6150327368474948562b6f3969447a4f357551323237767868314f52587471755a754c393263334e4f7843786242695a4834715467386553437147356e43726b75744e7631416a4e6334304c4969426c685642742b2b6d3147666d702f634c6f4c676b5335554379434c39716351516450622b7337754a6939592f784c32507039337a726570367948763841623372774f3332393634656b6436375870566a643761376271664c786c4845494f6e2f6b6d77756275455049695a334163715537317762482b4f377951656569336c706b612f4231377341413077586d765566577232337579733641434d4a48394f534469627a30693973326b5a43512f683967724e68737478636954434f57656136477a74333935454737344a654c6e2b78642b5241327374464e48446b67342f6f32336e393170756a7766745a6576584b394d7441796c6550314d412f4a64564246464645486e3579496c55566669674968363571466a346c772f57765644624a32396b73634a792f416669673137723157787435474a4f7158365938655a7937717269582f4146692f64485164427a2f5a374f756151347854523559494a49556646414941765441496735354642444854327262593955334e687446776b66706c55664844755745696a4245466b48713968367844636630354452634f575237442b487a585330757643672f5576522b6a2b6f2f636a7962782f715146435469506232785164676c7a7834704a56664a4677516f4d484742514a6576573745544f3553492b4b386c3668366a4c65795a6d695042483831752f79486565644957492b47465a634e5837766d754c346b436b564c4a7377744f33322f6e793035447866755859322f706c714c526c31453151656638414b6d6152434a74536855672f4a6576685930665438505a30446245343653337751654f41376c4348616d4b39486632635a354c6b376a596d30614f325342646875356253384a417444366f3851765a6d524e494233586769474c48466571394533506e3242624a36726550387553447247765367394352696b456a6d6d42515168772f7653367633706a4c55575a516e6945424d69543163564e49314d636b4d52564d416663454259507a51726c696d4d64564f4b4f695171596e3349446868376c4b495a46736547616173656143765853696677696f3761726d2b70657157396d4e4d414a7a3450526562336e71562f63644d354676306a4473516572756571375330574e7739674471715872577849365a792f77427138554b31544f325344326c76314c625878706850756c2b614e3168656a6347426959636c34714e5174466e65334e75656b7567396a703034344b484679734f7939546a75546f6c30334f474950597463692f5467675979424f6b352f465a3773664c75427643526c537363566f6a704e63307537486c776a504d5334494472647449547a6c7138574157614e77444433356a38304a584358474f666367756b524b4f6b6878525a70323453704a753739696f75376258345a454f617449745848736632437038717a482b6d5a54702f45674e755174544a784752355a726447344d71415a344d793477323858786c6f486972394b79377a6661337432334676356f4f6864395847316d664b36704470315a66465a6a2f6b6d2b796d4258394d6679584937555a494f7166384149642f4f4c6561332b6b5a724d505674362f38417a54662b5a596c4347516432782f6b7534746743384933422f46512b384c3047793956322b2f416a61704d66544c384376424570347a6c43516c476847614436504c46776957656e466376306e3150372b3042492f7742574869356a69507858534568346b4269474b73305a4842744e556d717141646d51655239533270323936515a5569516f47425a657139523251336c743450356f456d35386c354f794e546a4e366e67673656754a38634136723330694865506572724e324e6f3659384d56624b5975526152785163375a627a623762786955356378514c707933327876787063307a504c41396f564d4e6e6175755445532f546c2b4b73507074707177444475627651583235485457756e4d4c54413949302f366e57653361747770436e6572376b6d476d4c4e78515a626b4d584e4667334e7435786d443442373170334567324b743265312b356c47552f4344715034424274324733386d33716b4b796239363347546a6f716c69346669706e303473676d706977526b576f706936724a6571413051385641685531474153796d774b4345645056676c42372b484a5179596348554669356371667951566b7555686462496258553270576d32785942427a787469616b726e376a627968507236704c767a7771715a3259334b537a51636d784271426149782f65725074476c783976626d6e30744a426876514c5571714c636a4759427758576e5a634f4b4c4d624a31462f6878515652424a6241494852626b4a544c5a652f354c5647327035586d644a776c5351514d4a45597068437242437a5a506b3270696f59525078592f436f566d4e58514235503031516765474b4979546e686b6758514b48344b644f43676b77636851476942446e71376b4b44745668414171394669335738745749457836726e30682f624e427a765643504e30667077506175624f337271745632636a4b5535346b2b474f535332484c494d6e327463322f55744839744f4d632b35624c4d434769363132394a4963643644424461366644687857726257744e2b414e484d6a544e61504c6346677364306d33636a63344f6737656b536b34373077747849594c4859395473334939524e732f78594c594c6b626c594548766442693964746d65784a2f53592f6b764769712b67584c4d6431626c5a6c68494e2b31654275325a576268746e474a514c68565238304e536a5a49494755354b4261622b316c6274777553776b677a314b614d435a55526861314c62746f3249676d556a7249384b4445325341344c75523944763771486d3273446b6149586638414774785a737976546270486864304846694b727362434275324d2b6d5877584e327577766271576931463565354c717537535a38554c674c48696737316d426e672b4330787353674e544c6a37583179355a4c54674a6764785736482b51375a6a47566d51504b614471326f7561713633414545427a325a653563452f7743533234672b565a615838556e4379626a2f414344653357454a65574f46756944314f3476513238444b374934475875586a6655643664356331797045556a4467452b3668354673516e5737632f71546b616b4134522f4539717749415a4a68636c41366f4567386b6a766a696954777a516466612f3546753744516d31795043592f4846646e622f354474622f414533524b314c6e315248342f42654f786f696149506f73493038795055503152714350626971546349776f7643324e786532702f70796c462f306c6573394e33773951672b4677654d5a64766567612f412f765568653875334f636646356374506141666b377252636754524c6267306e5949446132384c75327454746c37336c782f314d4d4a6649484656696475356246794f6548627757376178742b51497848674f6e3359685a62625333307249485430335147624848346f4e4e757a474459506e4c6e7954516d5a5736455047556f7136527942703953796455524952784d6e3438505a6b463078433331584a63327a574858506354663652386c5a356276493435794f66746c77566b4270464544454d6c706a376b66636f5279515857743163695750563763667a58482f414d6b6a476362573767474d4a614a643952376331307044682b394c6474323978616c59752b47663456516566322b387761583730743033376b68706d4d6539472f36624c3038395856614a704d666971623171352f795735414f5068326f4f7674507642474d444e6878474b3237726169647369553249627135727a32336e6145663638376b70483642514c714462486478477361625177694d6539425a734a796c463559763731304967796b79716848514b4d2f344a373932567131647578506868496a7479515a4c2b2b743747326230793876706a6e4972692b6a6257587165374f34766543483953526c672b51397367755063757a767965345850465779765445504a4261324b36636a7a356e7451653433662b516258616874586d544830322f774154675069764c656f6575626e65764455495776305270377a6e387553356c4737556b75416f676d624a4454464e6b70584642444543714d5143555751712b43416d415275415551694353744e72613362735330536779794d73446b6e323930325a75503841567a56302f54377365715959486951733837636f79306c42365030623151574a55503841547a74384f4a43782b74374363623072384b776e316539636942303979394e74397a4757336d4c7a79454a4355577835646f516559675a41754b454c314f79767876574954657352706b764c7a63794b326248642f627a305030546256326a4e42365065576a4b44774a695156524755515747356b422f48485574466a636559477a77556e746f536c3152515732626b492f3841553877386f735078516b4c2b343859596654484d317a57717742626a536835667557717a61786c4e3379664a42727367436777433854764e304e7a757274794831547032526f4375333633366f4e6e594e6d795875584d547742586b62456d38446471445353626c7750384176542b6f54724747446a39694732683175614d4654754c6e6d5464384546424757587758706652643366685a454b6b4d65576d4949455365326f347446386c356b676a707958712f5139744c797866684c6f6d4472686943617352774b433731513654616b4d412f506e376838564c2f414b6a6f73572f4b5a795063756c4f334d56672f4d4c7a56365a4d35794f50562b5151556b69553951783438314e576561716a347167507a545375447464416c34435743713145304b65636961414b676a556773654d75724e57572f69715a5142476f496a42686e7a716730786b42455069726f7a62334c4a7130304f43744a654c5056426b3365334e73656248774878636a2b537a366e356765396459474e584869704a6371566d56753462655036633855465543666f7077342b33354c364a734e774e31596864783141652f503472796e702f6f462f63487236496678654c334c30327a324d4e7062466d4c73433965614250566267496a4559672f67734134594b3331412f3164504166486d7159786645555157524446575347654b7168494f355469663745466b4343776c774b36316b366f6a735847316558314478634d56324e76624e75414576476355466a4641386c5a436646567a5044483449494239503731784a33504d75546b2f314565356442376d73617a306a75396d584a746d555a7a747a48554a792b61432b497a41566b35694d5741716b69516134684f4a4168304351686d45326a55576a695437666d724e51687956316d324b584a5a6a702f68422f456f43427036592f535062337256624d5a315763312f4e4349596b6842726b4369497561594b6946777631447657694e5167566b59672b4970516451352b334654543730426452752f69733238336c766234316e6b426975586633742b3847704348384f506567364f38333176626b7748564e76434678743576623132505530512b4874697171572f442b3155584a782b6f49454e79546b4d38546974337075386a4c2f414d613651343848354c6e616a324255334143586232375548714c7530376c6e6e6175434a31784a48454c6a625831692f5a476a785234477058547466354274353075526c4538636b454e6d6376704e4d31623972634e6164694839383255674f755859324b7a7a39663238597443334b5a2f6970386b48517437516658567542702b53772b706571694d5474747563543153794143355738396133473736513175332b6d4f6661735558694b5a384547754d57444c5243515a2b3559664d346c4554694b50676733777656634e2b58376c5a472f414676712f5646633845417579594d635062336f4f355a39527678594365755043344b2b384a39397535334c59675759314a3436636c7737567730693951563039356342674341775a753942794c31787a4d74677352774c4a376a704a6869675731644e75596b4d73313666617a687549366763576465553141657a4b7a61377157336c716a5633635a49505453322b59795674697a6442646d3431574b7a7667517858527337713349554b445a48577a3549526b4975565439794251464730504e6c5846427966584c6f382b782f41645465355a74397535623637475a6a7045517a616e39696b395976656475535934516f4656616150596732573536745841527033466577676455524959466d586b4c44544a484a6c366630793462753367374f4133756f673179444251444a41544742645241326d5830306442327a372b4b426b36484e4243366d503755597950614566777851426d57432f75504e6f42535078504e58377134514e41786c386c6a4147414b434668564730794d7644334a42783936445271596152565a70526642454d656f6f767171675841734d56576365314f414d71383070446e695546553442334f6636554271746d6c596734596b2b32437645427035712f6157764d75503946732b386f4259324d624d64557354395042563368716c3372647554726c3243766173417836655077515071305a342f69674a415578516b535769464952426b66623349476b534b66424e466830684b4938635551527148416f4c353853714a395a7172354470354c4e4d7534514e5950555a6e36616435545776366845483756564c2b6e594f6d6a7969507a562b796753504e6c68687a5161544d413079563843414b724a614f7035653558524c4f67703953736562623879486a685875344c6c786b4a4e4a65673159796f754c7572486b58544565476656464258477454676f3257436b656f74676d4c684177476b4f677a70586569597a3936416967555a783264365351593855385a4d676a6e7553794a785075526a5630423030795153546c7543544368556c5056696c316b34494c484456576a61577a71317a71417373586c514c615a65574e41792b4b433264347a385655674c6d6c5756575444465062356f47313078716c3144465363334c705967505875434169576642566b50326c5071427878536a476c5543544c56546d322f4a536b6a5772494f4a3979426842672b534134436e46442b45704d4b416f4867654b736a7877354b756b63565a455563494359776655455257707136515341546e4278516f484a645653726a6b6e3141705a5651576261516a306e4e5562676153414d315a706157723243612f417a68782f6167716353693579393630577a30766d73455a615470377665756a64303262596f6767785362726266655770575a596e7738694d47356f3764394a4a7151724f7a41494f4e3646764c317942747a7241553148496a6e775858753775467150366a775358376e6c417769772f61734a494a4555476d573675334377366371565651476f39546e6d617176586b6d316a456f4c493855784e5837316e313151316b30714345447a6e7171634d46544b342b46456f6c6c6b6c5a7a795143622b494b6f674e71475a7a562b6e5468565474722b53444e4f4a695662475a6c6d794d375a66566b6c454a435859673047564b5a5a4a6f674e714e4657484646595a5547434377536575667755637850556a475a51385861674d6a52434d687878536e4a41536641596f4c444b41713166314368566c766333496e7861774d70666d7330704d47526f36446661333975544335306b34634672314d486169354c52774b65314b64736d3341396a31393335494f6d5357706773596b49584a6739724a3974463564637053507739796f3344655a493845484a3331747042754f537957737a4a6264784c7a4f782f63736b4941366b466d6f4357724c347258596941584a4c594c6e7a765737593673566e6e3678356449524150475655486f4a534c763949474a584f75372b315a4236687150444663432f7672323550564d2f3663466d4d6f762b4f61445a7650557239366b5a474d446b36302b693268634e335134754333716975535335344c71663437666a623367422b7347487646506967362b313958743736496a4d36626741445339733154637476685175764e376977625632554a59784c46573266554c396e70684c4e42313732316669467332496c474e51755a5a3963414458594f65494b762f766533642f4b4e6634767951647942316e41315667635a4c68442f41434f454d4c4a2f337244756658397866704272595036636665673946366a7634375565584536726b36526a6d4858412f77416a756d65356a626c2f3034526a33346c552b6a573562766577316c323669547957623147384c2b3575584f4d6b4763754f35426832494446686769593830456a4f634b524c4c5248314337436a7632724e326f592b3342423364763676413075445438666234712b373678596846375a6c4938425164726e386c3534424b6733536c755055376c4153423459787769753736663648473058756835666d7564365636774e722f53755145342f7148694865765643555a67584c5a31526c56425a5a6b4952706b73767247314f366a43635048462b2f4e61685442474d645444426945486c4e766344766e6870344662627478775979576e31443038334a7976574b4534385033726e6d45733648356f4d5634475651724c48524950684645784f5162383031693262645365386f4e3171496d58464b4c524d78746a357243622b727069356c683072565a394e75373665752f77424676346c426e74327233716c7a52442f692b7153394e744e6a62324e7357375970376e543765316232397351746741447564474e7945775a5a49486e49536c707a565a59486973787574764978786959717a64445249484a4164576b36675764575275436446515a4355565462755345655034494e6b7168555839755968774839767a5a533175412f4e616f6c326242426845364f33636a42787a2f623759344c52657369344e5561454c42616d344570746a68793559666c5242704d6a68676e754541412b337438733152435573512f506a5835717733674f724965486d66616944496270753767576f2b4744536d33475874383170737a462f722b674870624e714f4f575137466773693566767a69473148547150415a4474663359726f476475324268704877616943584e786232384e6477746e7a586c76552f38686e66486c3766706a6e4c4d396e425a66562f557a764c6d6d4a2f70786f4f664e637346693641455a356f767955786f5645455a51534f6167416c67704538454479426a51343471516d596f546e724c6b354a51554667767a346f547579624631574f4a555a79676855715563554367675a30534b555469635444533166314b732b3941527a52624c324b455352676f676b6d436734714d454d5542425443517a5361564759315161725632566736346d76443239677656374c314333755774786b4a534e65626e6c2b52586a4d614250453653376f506454675a5942766e7753797446713530706a3746592f3841482f567675356a626269747a364a756570717365625a386c305056505772487039732b5341627038492b5a504c356f4f66766277394b742b61663841376959506c517a692b4d7a3867505965537a35712b2f765a377137356c37716d635a6533344b6d664159494258417054303571547547654b55595678515131716f4370556f6d6c4d30415a4e474f6f736a61675a794549346c644b33735a7771656b6365667a516444306a596a56726d48415858334d5247476b59646972324d4262743659397035716a65546b634d4b6f4f646432634c7451572b437a53394f76322b7544552b7050757472636c31527839796d3333463232534a6a5652423066533935505670755a4c6f7a6e706b386368374663617841463579444e2b4f4158647637667972526e2f4456426b68366c59746e724242346c64666162717a754976616b4a417278777577753344716b3341636c334e6c36586275523879775447586167374f3932456431616c62497151645046664d6d71596e4a66564e707245644e7775563874334d6446366366306d5342437052436a4b476c55424e4367354368514f4e55444f3355746579395533477a50394735704836636c6a79556945487576537638414a343773697a7542706b66714868586d70773152455877642f65755a626d625a315278585732375336355551537a4e756e41436e637456445633354c43434979592b33425875546767756a467a306c5a372b4a656a4b79334932795853547578727150646b6779776e4f734763635375337366564c31676558634775324b6469343839784150707879585232637264786a496b754d71494d38373074557030446d67396e5855395044334c55686a6e79574c657873323578417175707337416b59746b5548704c49594d7562362f5a6e754c456256767847635630625231425356626a49447478495734696669594f7256464548694e2b5a51336c353646365077376c53665743596d46794c4544706269746e72305733706e48394e76563866324c4275495739506837645753435776556e6a317671546a66526f496a324b78796c625a6d71557266705162526545543035444f6c566c755862747a70697a63687851494a366a565654754733487477514557723069387664466476303730736a4848735842687568704136675268584e65743247386759444d6f4e3972612b55414d676e3039594d634137715376516255705a4658515758725a6e6231444846634f634a4179664d2f42656a74676157584c7462505847596e6e4a426939437336747a4b2b7859504750775870694843355a674e76626549384a31644f43366b53346442383875784731334633627944564a6a3831696e49476d54397937332b523759533359356a322b5334323474435a70676777536a726b3052697651656c2b6d516e62636970696363467a74746174774a6c6a2b43394473647941474244494f4c765054447475715868355a4c4c43454a39565858743775337462797a4952616f4b386474344152417a5162746e5079496152374f757673444f37553064594c4f3071493856326246767934614548523238656c786737727a762b5337627a4c74737738544e3363563648626c756e6770657452754545314f43446e376931397274426f63534179576230666379336471646d5750686635726f58535a6a535372665439703976436f416b616c4271733268616749527743735555515252525242357264376f6265334f374c36513448504a65474a6c636b5a6b76493137546d7653663544646131433348367048346676586d70556f454569485559745842505a73797648705859736569754f736f4f4a544442505144712f65765352394573784f617276656a32794b42767751656370696d3852344572705876534a51384e566775514e75576b6a424257587a54326270737a467948696a56564544456f45635548764c4d6f33344363634a445542326f6b365a4c6c6567334450622b582b6b6e3877756d53583073673868366e6345397a636b47625637664a5557376370394d63364a72684d376b6e2f5553723974466a30346c4231396a74425a6a784f61364969596c38786a37666b733969576d4e5374734a436e50334942475064323850326f323441654a506f717a6f48786355464e774d57784a2b4378337256576a5664476658314c4e6469514f7042784e39736a70387a416a3277562f2b4f5359334931774859723767424a374b4c4e3646622f387135482b483851673943445568687a5263592f44424b2f774b63654c2b4642496b7334474f436149427078533042664c69735071507159324d44474147755136667a516150555055624778706347756555422b61346b2f386e766d585262743666346e4a3937726958627372704d356b6d52534767516466632f35487537773078506c2f2f5463503856696a366e753439517658482f6e6c2b617956785249616944743266386e334d53504f4562672f69445339363656332f49624d374a4674347a496f3477373135466d5a57524f6e745158584362736954562f65717042774539715942396736304e71384b44435132614e513346584742314f6d473075335730416b386b476657324368726974452f54397848474239797a796870354d676b5a474a78586f505450565266617a664e52345a4c7a30597669692f43694432397952735735534657372b78634f333573627a33444b555a447031536576446832637142545a622b65346848625438514e4a63655330584941394a78514a713875707750743746614c56345361754b7167504e364a45502b7a4c326f733037553763336a512f4e4230544c5357474874386b6b3772524f706d43775376335956594655584e775a34514c49463956763146735a666a2b533562635664754c7075334363484b72795141465832397263762b434a4b73326d333832593155474b372b306a704a7941516351656c3333307a4243463330796365613957326f5671554a57595a5959646944786372453465494a48344c314738395042656138377562586c46414c462b6533754337624c536956376e625834376d3147374267446c7a7a586746364c2f4762356a4b56715247673151656b69644a2b616345366e37465251747854777233494c594845686562395a323432753631676630376e583372306d444d7348726c7358646f54676262593855486e374e782f774279766c74504d366f796c45636c7a4e76654e7477563062462f7a4b524b444f64744f506a75535a50623238522f78335a41727265574a7341774b63626141485034494d45624735482f4146587a3036566f6c497774675372785775637869546775567564304a5550684342726e39536362634d53523856364d524e766f6a674d636c782f513742753639314f6748524476586131443671307167676b634d6b6d4261536b536341554a343830427871557546546d6a4e3842697179674a6d4c6669716e6a5a31654b67566c7577496a5650782f4a4d434178514d4969416f4b70385277534374437041456c41784665536a50564e6f53364f4e45416e54476e785347335769736c45305a56537652737831545a686a2b784247656f2b4b79626a64376662567553483875613466714872397936664c3231484c4c6d6a61796d664d756c3547756e383048587666354861693574676c5a6a2f6b594a66792f77443166734b356f32703773565a3972324d67375733396532317a2f6b653266655068566465316573376c343765596b542b6b34632b4e4635434f794d71484c4a4e396839646b365a6a755165354e73526a4741384d576a376b73374d5a45356469387273503867766265666c6278356a44566d507a39735636766233626534674a3279344978515a376c6b7872553831584a385674643663456e6c524a66443855475765434d494632783470762b4d744c336f687543426f4d4d636756776655665335325a4764754f71336a30346a396937726b6d766379595330565074326f5047677864346c6b396b303472302b37324e695554664d57755242776975587472466d396330514f7157594e4762484c4a426d7477713852687a57794c6b4d634673742b6b3332626f4865667971745566536d503841557546686a7044494f58704d4f6f3463317a623932424f6e4535434e66324c30737653746942726c4579375a797a37316f327475317434415762596832564e6561447a7530394675377174332b6e622f414976462b78647547337462533335646f5541393630584a456a726f73306934514c4978485543764c2b7632676438576f346a372f77423639504c6953754636395a315868506b4547442b327551457739437553367a4f496a7a5035726f324c467535626159722b714a56647a302b7a4758564335494841676a76515a626e6f384c59456f5859796267567132566e373865524955483571445932613945774366714c6e344c70656b5768596e4c534b74587677516377656e574e724a726e56506877576e612b6f375455424566314f6341472b4b363234323862776151626e6d7358324a743368634d59794d526952682b3142304c473968654853532f4d4566677463342b5a614d4f495a5a68774455577373492f4c735163543033613268626c596d576e4a3479347344516a3334727a6e72317377766a554f6f7872786f342f426572765749794e75356863693356476a7842586e7638716d44756f675a515a4277514139554a4b5956525a7856416146612f5462454c6c31376e2f4841655a506a7048356c6833724777585375662b4e7334322f2b70652f7153346948306a764e5547472f654e36354b354c4752637172456f6b6e4e523251526b535835494374536f41775152364b6153616f446d69546d3643436e6372747475726d326d4c6c7648447456494c436d534a70326c42362f77424e3953687641302b6d592b6c625a5130397543385059756d30645547433948735057625679482f6b6b52507a3534494f375949464b61632b31562b5559377964385943324c6666714a2b536f74627a62336157706a73646e37714c534a30306971433255744d4e455731532b44716951644d636142516a50464168415a2f696a714170337144695570496d506767676a5846547856784342344a6b46594c686772532b716c414655327171467934504363666567756a636958743361776c5178586e723050744c336b34776c57334c6a793756325a6c67716239714636336f6e6766654478515a4e727362526e716171374d494143693873626c7a302b38625569374e58744646734f2b7537726f746a546831664e42324a335144305364556235343761385956476b6a346f625777417a73364f2b477262334e503653673864474c4175674342336f67465168364941654253413571775556512b43426f34494e33497354676c346c4265474a66484e623970732f4d5978446b6e326463324d32714d56332f515a34317750424230747436585a7478426c477679374672386d4144527033707067397a68474d67373845436e6278656a665035726966354674347768436358636e446b4931586f596a6a675635372f4b5a5573312f55343979447a7035657a4c7462455074434f486d4565356365456136736c7233653731774562644935684268755331794a7964515938616f6b5a78543761326239324d514b6b2f4242327a4b354352304c5a6233385a6e524d4e4a4c4b486d5562443371797a59443179792b61446f5762304c594535594a372b376d58626f6a787a56647530425367546558726f67387036744b557478576f456331545974796d644d56763962734778664534696b677a38315859334e6d454841655a376767533550796f61593444486d6679574b50555354544e5758707975484444426b6750314947465a674e58322f4e65303942364e6f4c62566a4b35482f31466556394c74655a753755442b7348754666775874747662386d3252454e31452b39426467654b386a756759584c6b446b572f46657731527778586c76563941334e77386f2f4a427937736854673647747a5844424a4d3679577a354a6a535055674770704d4850344b36316265707757614d635a4264323373346d414538783830484944397a745644776c793361466665476d354f4a78695730386c6235586d322f4d4748626755474f4f6f76775a6b385378304c4e4f596964496b36557a4d6a7251613956644b36586f676a6333734847455a4c68324a7858652f78384357376d593557783345736739535330655a56656f496b4574775663354579515964377354666e35746b744c4f50486773663275355051624a375972733651636355597448416f4f5244616273733173522f6d6b727266706c382f77444a63684566775650785851374d66656f537771675461624f33743677424d7335537a577478347356534339426b6d48453979437930535365434569426768616e78774b6c776b6c424d6871464f43356d393245354562693052727a4744747a58536c5775525131615748484642785954494f6d59496b4d69726a4959437079375673334f78364e46746e6434724a5a684f4d7a72424645446d787147715749776a6c332f6b6e73627758547077756a3665504d66694538576c34616471716c7449784c77704959486d6731674179644b7a546b4d6d437174544c3662676158774b736c4a7055344948427a666d6f586574507951595942535869514f4c6c486c55636c6d337538386d445736796c67654837564c3236743251586b4858476e666a636c4b637148394b42627373354679374f71547571457864737535625937697a6347693545742b43726e36585a4e62467875414f4344443570385146537154496d705576323532504737387343715848306f474d364b71636e7a7170724c6471575574504e416b70643359706a6767386338456a697558342b336167594d545435715a386b412b4b4c36656142664564524859466245674144366c577864355a706a784b4271717a553258747a56555762696c387a33494c497934317a34707645644c4b6e554763312b437338796e536774675a52504e6457594e2b79777939766d754e435a6c544a6462306f3678496b5030743855484c4d4e505366453670752f76573764485354327245374f554757566578416a4d4a3853536a5a737a6e6743514d65534471573441786368614c466b466e785574514c414849596861724d44476f78516134526942536963793067366378526b6b5470784e436b756c2f63673833644238773830776d53786f41744f367336427147437941694f47423853446674727264524e4376536569792f7053745a776c384437466552736e484d4c72374466533274776d555a4733495967597467636b4871636578466e5850683674596b634a782f6d6a2b54725a597577764456626c376469416d716467673348464c7130756665676255466d763767516e477a4374326677417a4b7a627631614d48466d7638414839492f507557503061453732367537695263776a35622f414d5251624c3531334449735741437045713043747653474d566d6b54693961494e676a4b554b3936714248476973314e303470496745463855433967775269416534703345517941416c322b35414a52474a565a48436d61756b37317853474c2b4a4167376c76394f486c326e4f6370533935584f4e49796c6b4631624230786a48426f78515a72386d4a2f4a55422f4c47654b757656706b36703175675444454b794645704c2f6b69614e536a6f4449344835496b4d51697741637159467a32494e58306a6979795469306d7a4f613250303868386c51514547666653486b77616836766774552f366471334469736e71414a7657625137566472387736766169432b4e4f7a6d726830682b7831564d565970365944687851585177574831575052627566706d33766f746b6544716a314f496e745a636a452b346f4f6479434d68566b6a366744386b2b6d544d674553546d7067616f456345645149644152494b4374526971395742644d59386355444238672f344954494f43426b3763416b366b4131647155536331537a505551714c687a6648423047766178387938374668462b384c5a68677376702f545a31306163752b693047624942714c70724d337069666b71345671554c41486d7479515879355a6f6c6f752b413973554a4d6646526b435167682f5368454d654c4975386c4967346a7849444b4c6471552f314b5a4a69324a514e6543436457435173547a546a6a6b6b4f507467674570615335566b6a71715573672f623730305270777155423857436a2b33616c6551724650476464504641386f416e674561454d3155444942474c6b50546b675273316262694e4a672b546a75554561397561567a626d4a5a494d5169444d506934577a657a31474d41714c747254756f66704c5351682f55754874627551626f78387532453859754853587034527954517a636f4d5072557a62386b6e4457596e354c50632f7034664e617657492b6273706b5977496e377659726e78756934496b2f554155467361706957536139464577514854484c337176326f6e3571455651567a6a6d61496d513730386b6e59454568716b575565694a69374d66623277554d6a6a5241425870435142793454674147706f45577a39794361524a4e466a306c4c6e6a69704c70663449486b6573766b6a6a524c475a6c306d71734657514a676c6b31477145386742376b7035494b626b71636c7445504c69787a2b4b77364a5475784754725a63787067417942625a4a756151586576755231474d6e50464a5a72507a50394b652b4f67797778726d67315244567a56557a356e5478347064726445374d654f6c4a754c6b62467556323568476e76516332375052463538666b75527566557048774d797a62766479765335422f6973656f353051577a7645347171524d6a57714a6a376c48617051456f416b476d4b686268525173616f41616a6d6d74543875596e48474a644b2b6f4e6d692b704231765837596c6468756f2b472f41542f315a726b414c74553366705a66783765662f414b5a66742b53347553434161734d55436d41514934494a6e52436a633053366a484a4233665154397661334f365030573949375a4c6947754e463272344f79394c68617a3345746375776577584365726f475a7345414356477252452b354241546c6b67554a636b6159684248776f68694565595570674d55424448466472305031503761597354503841546e78794b3468446c4632376b4830575539414765627059584a4573754e3646766a754c52737a50586238504d4c71327856304675747357575132347a3851713557713730304b724558354e676777584e70417936545658322f5437644b6b386c6549356e454b39336f4d732b314256613231754641473473746b5342476f56486d64584250346b47626662677a476950656874664d743239624f54394f58354b32554b3657784b326a77386745484d7676716863415967726f62754f754f7071724e66674c67306a5067744f3175473759477245644b4450596e394573384f3555546c6f754563325575485164514c444e53637456546c3730476d3264513144324375684a714f736d3350394457315372595479516153644e51567a535a457343442b723279705475356c6139544d73312b77626c7834477459312f4242544b354a6d6278654671593465394a754c306256746f6b79454f72754874386b386e307975446730666c5850332f42632f6633685a73674358555177374b5038416a77516137636f624f776274796b6a5735496354684564676f76502b6f2b745864365447505262776269505a714a6656665550756a35635430784c397034726c6c30453573676543673449386b45306f4e5245315577515442414868524673776d375543794b44714d4553474c4445494468524b794449344943684c696f3771596f4a685652736b576f706b676777555a30415551676d486168695556425241414641654b4c4d7051565153474e457a6171424b55344f4842425a62755374546a4f506967614e7847434734765433457a4f58376b4d336a524b43525641707953767855787167616c3045356f7477524343434273314b7149383048613947734169562b54557048327858536c2f5539767a575859514d39764454686d756c49466778775158325a6a53414f6c56584c55746278714f425332356d4c5348464c647552636f4b5a776a4f57703237466b75536b5470316535573337723047415745337a5a4c78694345473753573035504856797176553732794459754134454c786d3133597554455a5262557736637a79587354764c653474536a456e564548704f4b4479462f30636936786f487972307275656c6255326739715a4d66346b6470654734694b31646d58543263576a544a42704238754773304144396a4c355a66756d35636c4c6a4b522b4b2b6a657533445a324e365563644f6e2f6357587a524158554878514154484a414d564d45507855464b5a4947644b45457a35635544416d50617432777567584c666d506f4d6f362b78772f775850354b32414269574e5167396a2f414a5673596933446432777842455a746d4468376c3536334a717535507958722f54376b505750547a6175564c615a66675634694238737973796f596e54376a2b434461586e51552f4e5a4a57536646584e5851754e68586d726f6933496c695547447954436a4c746568326f54684f4e77645464784179576351746d64636c7632414c694c34754f354254752f544c677536725a654f51646466594363594e5046766975686173786e414f422b4a5273324978716731326f734146616b674b4b784246464645486c2f57344765364d526e434a3978586e6431716b376356366a317361647a626c2b7145683369713475347343343034305035494f482f5542787136364e6942656f526c5a6334594c645973616e646733464131725a5375524a3467726c336251494d4b4c314f7867344d75412b433550714e6a79704737612f774271446866616b6b52494b394673534c554b3979353971596d7757367a61505945485867646648534674323973726e3764385a467a7958557479616b63454769504e56582b6d314f5179456946594b3143532f46375578784251634830692f65336b794c74596e71667358706c6a324f3268597478454762697469447a502b537830334c567a6c4b4b38394d4f4b2f5376592b7662595839752f31524c68654a764f584831524f6b6f4c664b6350464a624856704171716e6b4b4767556738726747667751647a6265626244516c302f6d6b33477a6a634771486a79566c694d7848556341466d2b396b4c774a464b6f4f7073344749484a644f465a442b4a5a3744655871466458737930325943556e5a6b47757a467356567639794e70614e30354b32504663763841794f334f2f5974326266696e4d44356f4e65317532393541583456446c75366933774f6f4f716472746f37617a477a4843495a58517734494755555551525252524238362f7741684a46794554774d7532763746786f42646e2f4935367230526e6f2f45726a41613561637967373370554936487864646878455678584c3273504b684742576d4f2b7341744d73506638554737557963533473526d73747663324e77644e6d34444c686774506c6d4e4851567a45534f6e324b7762725a7875426445514d365a7242754e7a5a74543036334b447a323432553742494f437a45563072304a765176642f4663546557664b75467141315164663041557578773850347274766d754836414e4d626b6a53736678585675337a615967617452302b394235766332685a7633574f4576785854323232305242786b666233725076375274337463767234476d465174316f6a7978786273514a47553330327858386578474e6a647a63776d785a36344c52456d4652314556623278584f76626a66792f71514d6750307879475837736b4851735839355949462f544b50752b4b364d4c305a743074386669754e74376c3370387736745136763454374475585a73523644485039585046425665335174416b4455526c7a584e75543951334170474969724c6c7970754d356670372f77417353566e6c7639334f34625a4968436f665334707a7a666b67414e794241766637736832702f5462486c37795a4831512b5a434e71394f344775525a75564f355862582f37733078742f4b53446f4f444b74447a557751657263766569375643423558424333726e34592f67764537336453336436567958734176512f3548754262734379476534645863764b4232346f43694975614c5874646f626e5649466c3239745a4675476b4149504e655849596851327059315a65724f314439565573397070683041666b67387056324362535179313736417433476a326c5a485146744b305175454c4e453071744671706158424230746e746a754731595a5578585774374c7954536835657751394b74364c63645333793644714343694675554d4d446d61717664656e57627736342f37567263486936734a31495049627a3032566e7167586a38567a6a41366d4b393566736a54686d764f2b712b6e4d504d746a6d6734734c6b6f534568694d4636474e2f7a62597646756f65365859764e6e456a67756c365a6365457252347567364d774748483239763371655a47526164446c7a397378337051476a3030565535612b302f4242627138736b6e44344b6d3563694747583449363557795975344b7a3779374741614e53423855484c6e69355268413343414d30705076577a59316b5a4845436e6567336261586c394c55433378334676626870346c59324a596b65785433397a6232394a51644275472b74794432386559526c667563525876584f737a686675504164503472644b4d54487078474b4148314b4559364e784579783841584633737264337169344234686137322b386d5769634b3833564539395a76644a74676339503755484a777a5772302b2b64766668634848506771723973527771367169486f67392f624d534f544130356f766d7552364c757949615a6a7772725149494d734278795158776e717045716e314d522b324d5a616e6d526c7771736e39796a656d64707469786c48787578666c686b734d3433656b585a7a6d526c4f54742b53446b58374535534a78645a764d6e625054526c3335573964434667334731694d454757337670572b5a4376487173342f6d736b7475596c6a6b6d4732656f2f63677650716c7934474a2f4247337175784c68343855624f3159727052743651513143673676704542485a57674f4a5730476858457337362f7332687045374c344e31422b4337466d2f4463322f4e736e5848346a7477514d656d763070544544714765434a4246436175675a56354e3855434f5a5a594b363361654f7668687756496650446c697239316674376132626c32516a4241784d76712b474b4d644f45694b66716f33354c7932372f795763756e625230782f55636663754866336437634856636b5a664c334950664831486247576a7a59502f4e2b4b614f377451754e4b63512f68655846664f57716f534256423952414259787734684236316f766e4f31395276374d765a6d51503035487558736653505737652f4769344e463466546c4c7351645a6a375a72786e2b523732355063486234516942546d6172326f4c30587a6e66544e2f64585a47727a507543433730363048316d763572707a67396353734f334269417936634338554646472f4a504333484a6137644f723449792f5652426b38767170696a4b426b615946577453702f4a475442427a6437746650673448683976334a66384148392f4c61376d4e6b6c6f584333666c2b5336542f6f7758413374673235367853726f5066534761684e582b437a62432f7743665946773531396774516779425132576153554e4e526e2b43594872554e7658513549466733315a4b753044496b39716373324f4b54625378417256416c32524d68474c39325335503238646e766262466f5867596e6a713464355a6453633462655a757a4f6b4e6a69734f3776783342747a6857497552615874775164364e4a4e67334e4f4a462b61556a724146634850616b6e50546a6b67426c716d4163416e4c4e54324372746868716b5565784153426771744776735675764753517430766736436d555877795754653268646a31444e6254466e4f6154534a394f62494f44733565584c546d4632626438456151335a3831777238667437736e714372625535665467416736563635626a4e676135386c71324e6d49476f6b563967755063736172636948456d3854724c47357637464933484749636f5058546753355972487136715a5935726a376337736d742b587a5853467879424931346f4e4d4c67507379766a4a3461567a3461395478573678694a506e33494d3237333172593269627836767067504566324c78587146303337766d79786b41535533717477586433646c45303153412f4255586830516d63332b43436b73464248423147644c795161746a74767572386259774f50495a2f4248314463666358355849306a3459786243496f5067723971667437467a6348786e2b6c442f5634762f53756456424d364b56524c6f416f49685146513953496334494a56426c425651306f676d4b594a657a4646754b416b59494f3451464f784848424154526976556568656f2b5a48794c357150432f35727a425968733149304c6a4c50735166515a4961693678656e626e376d7a4762387539613371676b58784837306c5a466b544b4d4d785842797a396a3439796a534166676355425a7a564b53366d546f526a54464243477856424a6b57794753736e636f326673565659684b34535256425a4f6a5556502f4c4a6c5a4f63513058476f2f546e376c6a2b35386e2f6a7249353845474c66327a64766d57626e345557375932644e4d6c5259426b354f495854736a6b67767477703249334271667356384270687179533478705642346e6537623761365935597837466b6a4c4e6c36373154615133466b794c526b50444c4c73586b6d30486955414166424977775669575561616751674850336f5a70694f4b6730346f4642705265692f787352694c74796f6b4d4f39656630653562375733305138327a64474935462b784237457965704c4b655a45787230726a37613775764c4572674d6f532f534b305658714e6a2b706f6c7177315372674d616f4f6c50316a613269514a31346577584e3956413375334537594d7057366e677857666258374e6d656946694e776e363548393448775865737a2b34747a6c35586c542f6d365a65354234595330304b4a6a526a522f6b76522b702b6c32626d7a6e766f41776d444870456e69586238317a3939747a593232333144716e43556e354f37494f5834547a56323076655250574f5939367a69504e50476c41673966716a636a35747573537756746f6341764c37486633746b6156742f70586f646e366e74722b4a387566435a70373048537446686b36756a6f45544b64414d31793733717530322b45764d6c776868372f7958423333716c3365792f716c6f666f6a68336f4e58716d2f47396e70674235634845487a4f5a79585075376d3563614e30734254546c2b53726a654570636c7042656b36676f4d5a36516d414e544a697466326c7678524c4156346a3831526574334c5a714f6e6a696736502b503233337354774569336379396d547244306465522f786d516c7569662f6c6e4874695065765874474b42744c6331356a312b304933504d4464644a6431483731365a32586d7657535a64545961667a2f46426b6c744933476c436c474f544a2f7743316a5338726d68613973386f6c7a6b7170625779435a584e524f5431415159342b6b334c5131786e47644f50484e644f7a716c445249462b4f537937586252742b42386175756c74494554367330484e33327a75584c336d51785961686771725870742b5a615230773854444d2f677537756f655a4856484838467837566d37353866366b6a4576726754684839754344507576534a787242796630726d33765437305164554a416667765732374e79765830354b323759387979593435495042435a69612b4665742f77415a6a716c65752f5330596348584d394a32596c656c4b583050706a7a717654374136724f73596d5574545635494e57505a6b6b6b512f424f584e50696f314b4942514a514d6a696d48536139726f546236754878515163456b354155616961464d63554d5734494c4961576f6f58636f416a4a4530495a4159304c2b31455a7a726c2b43727771614f70504369416b6b7a5959653542346b73675431506d455350717851476e356f456134366356424a36756e385055677a4e6f7834315474716b794634434a6a495a394b5344417355476964734556712f75534332496a51482b614c755136735078514b49426c796433366a70506c32432f4758506b6c39553335493875786839552b5049666975514a5a59666d67744a315931507479534759784e5370723141384f4b7a336d694b654c464266357761694e6e634548446c56592f4d634f7a4a597a695458336f4f37624e7663774d4c6e597556764e704c61342b462b6d58454a72463753305233726f776c446332644533776f446b654b447a70714b55537977786f724e7a624e695a73346b59716f6a546767494c6d69516c366c48575367347152682b4b435263565547505667672b6d6e76532b3375515759596c4b4a444e4b65434d47775151484650495a6e4b6955794431556477676a31344a7457716d4943536d4375323852496a565350742b534456746242756a7043317975445a57664c6a57376e2f435078526a756f324c524d616a414c6933622f6d5363317a51582b597765565371355445756c564771522b4b434d586f742f703175637a4b7030487864797752695a55474b39467362506c32744d6a55316f6731327241454f66425745617345385453696d6d72346f4a467663694c65736c304e546c573668626a716c385547652f5968474c7943346d34506d584a4556474557396d577265627a376736494767397857473355763953432b414971726f46734d4f437169644b684941496a34676736327a4c67546f373034727032352b58574f4a584d39506e71746176347667743048474b446164336b42584c682b786354656269354f3770765541726f6633767858556676584339637436424738442f77444c6c325a46426c76626b5436507048797a58643943747974374579506a757a6c4c2f6468384b7278786d6178433970315772554c4c556a474565547367726c4b56585646775548496857466a79566477314575614458473457632b4a454543724a49416e4a4752713478514f357755675248447656646346614f6e67676b6d6b5843576655614b7761546b6b6b644a51555832685a66395258566d326c686b467a4e79786c62694f492b61333354706e49484e426c76584337444e5577705630623531524f727556555a455144596f4e4f6c673348336f78624834706d717a55546a6879514567454b6f3873316f4564666371386142413774306a4e5752416e306f51694330654b737468726a5a42427a726b776431637646763655644d61356c5461344f566a7433745679374b6a536c2f774333397131626170716731516d33564b71613345536d533241376c584b58567741576d79414d633044766763556d3865653375486b2f75554a6276716d7556737a695030795163573251512f4a574d566e736c72594c5a4b384e48412f6767687042444c6b6c35706e664641756f484247755355444c4170772f757851435854524c4e34307a6f70493863636c584d6c7a7a5156796b2b4873797a62695a694e51344b32556f746d37716d4d446433467141446a5544335279516479467637653362744836414f56537049676d7673455a4579624f715671766e376b414c5a595a4b6e5870756a67796335766971357945626b536561445543524f71562b704679337853524e57515773534854526c7148616b5934383077504156514673696f3153796d6c2b3554426767513149526a2f46696832714561715a49426a67684c4a4f3550596c4d6f2f6b6768656c564934684b4456315a342b6b59653541394267483570346d513663696b6a495372776f7251485147475035704e34447035354a3754484244646b474e50626d67614a427477755055425a4e6c3141334f4a6f704f592b326d4b764f67626e696a626949614c4d48365231494c5a2f71504658625945776456546249713630417a49444f486e5735572f7742635a52586d74704d797477506366394b394f4a6754354c7968476d3563745a43354d44336f4e676d4a594b364d596e46594e33756873375775684a4c5265754377334e33366b492b6455514c476a4d527870326f4f3647494b68672f4e65633358716c3635433149467044686d7044645839374f33747263744c5058346c4236574d5879666a564b516671433835754c56335a542f414b563755592b4b76345a72746e666b62503771517133547a4f4344584b464e51797a56636f39355078586c7258714e2b3163457a4b54453450526c327658747a5062323752736c6a4c564a7877503730473445594977424e4148376c78665476555a58495474335a504b49314179354b6a62376e66626f79466952706c685242364762634479565666437544613954336b6a6f6a63722b66636e334871667147336c70756c693341594832354950513232787a566f706775444831586654456636546a4a6f3564713179396473782f3549534532384b4471524439556b4a51634d734f333961322b344a6a46342f70314c6352523435346469444c74705064655234737261796b774c716a61676135533461676a475274784150694b4453354230684a75696444465757425855556c3850714f5a5144303262514563476a6d7266554c666e62532f41782b6a562f74717332326c706f654336634f6f67455550524a2b4251664f454179753346767962307258365a536a376971427a515068564b414d38464864454f67444632524944307952356c54506d6756696f325761675a48553243447366342f656a472b64766438463447326530726c5872506b334a577a6a456d4b6c6d38624e794d78394a6464542f49726359376f33492b473449335065673430536f575248504243546f43447149526a48584f4d6550346f593434727166342f74764f3373544c77322f7743704c2f5367762f794f59382b4669506874516a4832376c78425846614e2f66462f63584c77714a534b7a6b414238304137464a55354a6f2b39435131564b4343716d534f6c714949494b71415a3549454f6f675a6e52776f454d44524c68556f4f6c364e75425a336348776e302b39657a306754306a46664f346442664d4c3364753935384c643739635166645168427276444c4a5a3764447056392f67466d62535332614338754856666d74337133554735344b6b753945476932446e677265334a55774a5a58536b4d454658697552307258724c6b4c4a5969664d314c51416379675335627a794358597a38567346505542315349364c3354536771676c2b4e476a677334474e61666974393646566775514e73356b494c4c62693049344d6a456e56524e4974613163365a717178505755477159785656357a46322f5936637a633969535a315151596439656a624262454d5967727a50717537382b656d5068674f32755a585239613352714d4d506b764f34346f4946497536675569676872696f6f446c6b6731454249344b6330426936507551426c4334445a4b5a6b7067674d3467476d42534e6d6e444e7a64493955425053672b43674b6d43434d2b4349705653696155614241756235494978354b4d67677052425171486767684b696969416c4b795a696f496f4a78526742564148676d414d4367734142663237315649354f724e49494a72386c552f755151414b45634643554f61434e6d6f546b69564d4b68424d536f686770676736577839567562542b6e6a622f547758637462754e364775465948476d43386a795866394b6c2f347047657442314d504467636c584f75444d6f4c6b654449546b51656c427a74316330304379517647644a664264473761456935576332446763554132356a497830564949376c36617a4b46776d62764a384f43344f33324e365142454b50346e592f4664325732707267346b413361675333614e6d3750444369363971516a466c7a3745434b7a2f414457775179775163372f4b62786873577a4d6f782f46654258722f41504b372b6d316232347a4f733931507a586b7853694243455145416a6d674368554934496e42424d564a5a6c45424353414e5257325a4d65617178717262412f715651656c2f7844636d33666e7435476b6838523746636a3143775937792f714474636b666553556d7a7653322b34463247494945575772637a4e36354b354c47523745484c4a6c6c6770475a70704b32584c516c674b5a685a6a4271664e41304e7a4d4c7037472f4f4a424158494675726346337653624f486336443046692f4e6741535673322f55566b67426c3068627245544772594242745551434b434b4b4b49505066354b4e506b336630796b506533354c6c33754258622f79533172325a6e5634455370377678586e5a7a506c3832434450637565574b42337856384e39613053424242503661696d537a7868716b2b495639337939444d334a42316654742f5a74577a456c7952337249505662516e706e4153746e6a476f2f4e63654e364e7558537576746f32626b496d674a4e5548466b444354344f637368324c72375464427744535848696e332b7a674976484565396332456a6f6b334159346f50553755524963596c644732644c5658497358474c52344c6f325a53384b446f565548554656624a496552566f514a7462506b327842584b4252414a524567785869505666544a374f354b34584e7564544c6e6b76634b75395a686569595444673549506e467731356355323369487139506d746e725070333976764e43747166682f6837316874335462494a3850344950535759354442505062436261673677325056594d78442f77417543323264396275594f6731326f4749595a5a4c564638636c6d684c56314a376c2b4d576a5630476e58376e563573786e4f4e773478384b7957706559644b364b4146534959496c4c44424179696969434b4b4b49506e2f7275326b644e2b4758544c385078584c3246735375756347586439516a4f37637432596c6f48716b7566734c506c585a734b5052427376577a634563754b76467661326f6172326c2f34767747616556765662307533504a55322f545952316168716c49596d70514c4f3173397a57337031557248386c30747671304e4b756c637548703851644e6b6157366e783968794b33774a48534d454333784b2f774244744139797a32626d77683051304758746d79733857714c5554523274734858473241654b444e6332554a3955434f5463467a6655344e445668566c32493751575044534c2b484a597655625a7557394563586967312b6c3254743745524a716e58546d7237354230356d4d6b7532726141415634416c796632376b474c315471456f415a6176636679516a4544334f724a774231635430766a3348747853576a674b494e3175496c5569765a69703566634f434f3330796f6663706475573762776176356f45466d4f50742b31583278726b51537334752b5957417877563169456f794a4e4b56515a37567352754553577332667064687a2b474b777a6e70756d65542f41415852684f4c5a384f78426833466b57384575336744497a356156646644344a4c464976784b445135474f434e76714c63556c544a6b4c74324f326a4f376741506a2b3942356a317a63656675533368683068632b454f725370637547636a493858562b31695358624242317476622f54376c3159574353444771382b4c3977482b6e4668676a393566646a54336f50527a746932636879564776534e66306863363176444b74484b72335738307830517a43446b37676b33444c6d717139364a636d7141514749636346713263524b536f30394e5062334c6f656d57444b52656a494f39747032376358757a684874703846704f37326b522f7a524a5065754c65337532676455346963675730724c50646247352f305a412f77382b5344305233566f2b4569512b43636236336f6636506a376c35675473507173752f3657585774516e4f337166755161623372467530656d334b5257622b342b65776e5959482b4c34724475397a6332394e44792f56696c736272314b3648744d422f4b507843446c627130626479556561577a50546369596e542b43302b6f5133456a356d3448556543774f7944304554356a6d51307a42366f3976344b556868525a6d6c4f33472f62385969422b3961624d78646562394f4e6376322f76514451474f515064376436775832596e36667757696534477351784831766d426c2b614f356862756a56474c5266706a6e544c73644279534b73745730614d6e50684b7953444867746469555a59494f6d4a514d49784e474e6539507537416b596957475379786e527a7844727041787555515532374d62513152795639755476725a4879684f684e452f6b3665755854455a46424a574c65347263446e2b5a5732396c6277676449624156702b613538742f617453385150596c6e362f433346375541542f4656412b39394f6a64684932716c2b39656569504a6b524b6a466274783678754c314449415a434e467a79645574523730472f5a6571485a6778454158347064333674754e3134354e484b496f7345656b7148426b44777654747a46794a3634314339587439786239567450426864674f75476450714845636331354946714b7a6233356261344c746f365a78775165736e416d697a3337426b4756557638697458503668736e7a54346d6b30653374566d303333336b536445597965674344483973586f72595130654c46364c556266412f765352366951513447664c4e416b625a4e54386c73733765567769454b6b2f4c6973307433744c5a3053754d663459366833716a652b74777441324e6961533864334179374d776731373763327468624e736b5376454e4854554238532f486b764e62666558747450585a6d596e32797756557075395458696c64423644626635506345762f41436f4363654970496331334c4f2b326d3548394f37455350307a3654583366426543495a4d4153484344323371487164725944434d7268384d5268327279572b33393765793158693463734d68324c4b5456314f3142464f5255624e626264682b7430474e6c47646447395a6a6174726e386b43444650436372523178385752536763564734495066656e6571446562553344533541645935386578654a6a456d5a634f6b3232356e7462676e44763568573751363530446e383047363251783472645a6d347143797a786a394d6b304e33617451367a6a337367364e746e34685051316973455056647537456e6b644a483572614c734c6731526b434541476b464345477754584c384c6454576e765747357672372f414e47794737506d6731474e447050354c6c372b323431597372767537353863573749736d6e31687a695548532f7879397232756d565447587a58614c776f533638742f6a742f79623837457344382f327231556767535a306b464168794f4346796f315a6f5070703756514454585479564e6765594d546966334b3251455471786f796f3237564844336f4c4c3037647532504e4e4f6135317155664d746946424b526b49746c5631703052764136672b58376b706750766f4159655764506469673675707734396771626c5470794e552b72496856526c4b557452397561433246616a753969693271684b55597555326d574842414a5548626d6c6174634531477a51755368434f755a4559444d3039753542524f4f6b56505a327053316f36356b51484f6d5061754e766638414a5957695937534c6b482f6b6c2b41586e4e7a75726d3575476432526b536736323733317535754349453650704b6133666a54556338522b356345476c46665a754877453048772f59673755374736746b5331394f58376c6f472b33726456793065556858354a6474656e4563517975386f584135474f667a7951556664622f414f693741667969503468576558765a3964793857785a754373685a46717359734f4c4c525a64744e616c425862334a4f6d427156304c4e385341684772366c7964337074526150694f5046616654376a546955486a62774f7376693564427952577174336f4176334e4f4775587a56484a424b6a4768554e655344707561446676663664697a596a587038326638414e5038412f5641584f374538376b726e564975557068704b414b61564257715a7979414f3243696a4f6f4b4949656c41484e455263694b3052327432645978506179444f4f31416971756c5a6e436b686d6c46736e415651494b6e676f596b594c6274396a4b34567674656b584c6c73544875516351754f51554859742b36324679334d68694a6350616977436c45486f2f38414837346e41326a394b37443936342f2b4c57664d38383441524876717530493633446f504c2b707a684f2f6446777938794d6a6f4971386161426a514446367570433564753362647933656c506345785a76434131586642734d474971756e3668365a393549546849527544706b2b42475747592b5859713448622b6c784d594456634e4a534f505a7937454856754551777734354b6d572b323172783342584454314c6a337431637567616a512f53716961636b4852752b7251502f4862314e39557679425747377672393251315336503043672b436f72345234666242537359307a51614e746269446376414d62593665302f4e4347356e48365166624a57326f364e68646e6a727578742f3761724b773173673357665562594662526430386657644965466f454844697564686744696977464548572f765638686843334163366c7a324b7933366c667536357a49466d336a455a6e4152664e6375336138325974773855756e3976637457356e434a4671777874322b6b5039527a5034494b4a335a3342726c58354d65536f7637654e2f77446d3473415067726f34715366383048497532705735615a4b7151666b757a63684759367632685a726e70385350365a79774e55484e6653575738656e7a4237512f6373747a62334948714237636c3264704c5749536c7978795a424c50703070645572594d6531614274664a426a47476764723137317468656a493661444c464a764c397131416964776168394144762b546f4d3370586d586270696642624b364f34322f3959524e62633631355a552f465a2f5462656c746654356831384f7864533744574e4f66306e6d67356e6c79746b434a624978354c6647325a577a4748417249622b6d5769644a443472545a764f475075515970374b5731394976776d53535447582f716973482b5253486b62534563504b662f414e7137767138762f774233582b44512f774463463554314c31434738386f51444331415778717850616735735a55554a786442754359553745414a7252507943614d7336494555624e416f66765431707a52413039366b6f6a422b314134443077567259463152475841713047516f66596f4c49794a626972593335526633636c6e674b484976525776546d6730572f4c4574634178776f74323139547632534978496c4467666169354d6a68527879526a4a704e6e6c7951653173626f6275325a77635a536a6d3634587157366a64334a3238766f414135386664543471656c3332754366307a506c79484535483372687975534e38335a306b5a616a336d767a5165687346736774624f3543353043517a653344344c56433443315544796a707a562b304e53543242594e78657271797a697957783672596a4d6775475074524232797763466c6d595438515652395273626d456f57695841656f34653556576431394a34494e2b6a42734f437444303030564d4a7877566c73744d4534494f4e48626e61627159786a6347716e46647262572f4a7478686b337a576533596379765338526c37677451775a42634878434434676f664e46337843416369796a676e6d69536a696772755a4a644a46554a554b4165526641494c6758777953366d446c437159536568515155464b6f54505568523649367763635545484e4c456e547a554a6f546e2b616a394f6b494c4f3270397543414949354a444b6a2f46454771413334363461636e6f7148425635646c6c7475493830476d4a564f2f7665545a6c49556b615237315a6e566354317a633959686c6269396631532f5967774d6230686268696645636c3072473046714c47722b4c4d4b6e3033622b5844564c46644b4a70676735392f59786c31776f357779584e33456446434636533542786e56632f774254322b75476f476f4655486e7a462b6c324761425a304a686a714743714a7a4c76795157435a422b446c62396a4f6574697a4c467039793137637330364944367645584447356e3454326863743278586f4e33596a6673534d6361533979382b774341416d4c4d575857394839507437375835684c6871522f61754c493058706638576934756e6e4838554276656c626662744d69557458366932437a434f7767644a735331446a4c494c756279337275786c507167326b4467754876376d71526a394d4974717a4a3464694471773947325633544b33416d4d36752b53387075344331656e434e4e4a62334c33477a322f6c7774517a614f4b3858366a2f38416458513331532b5a515a514b6f6175616a454b6377674a6b4d5372725573666771653346614e6e6138362f62746a417972325a2f424262756f334c4e75416d4e4a6c314473794b78476f6f75392f6c45577651503036644137697542474c68796759484e4b58784f536a3170676e625852423066536472356a335a354c76527443684379656d522f70632f4833594c6f6545736667674167414b69694c505257454d3374676f4766326f6751674d7a552b706354656234377151686238486854656f2b6f656650794c503841786a4538316c69424750626967724e4f6c317074514667416a3936466d4a4c6b2b35533464585448356f494a4f374a6e317863686e37714b5862476d4c5948325a4e437351505a30485632413157524955594c6134785754302f713234372f7957766e374d6774696458627a77584d3962674a3757346630474d76775853454d6a6779782b7041533231305964415165563950674c2b3674776c675a422b78657876536671794f6659764b2f342f623137755041436376682b61394a4c704f686b43505456775358444c5458463059344678792f616c6d446a6b6731526c704149344b546b3858564e73366f3178567a6a4e76624e417252643164426a6a586b7177426956597a676b344948456f6b566f6c48696456536b4165785851366f76516f4d386d4f35673965764a62376b775a4c446259376b53375674353830475464773130346356526179694d6936307971615a724e62743956554774336c673674304e68324b6c325638654342394a616e4256476b3671794c7377774b45793535494c625554466979655467475a53786b3459594b626b41572b3942357579544763346e434e793548354c70576a6f67387671584b747663767a682b71344a652b70585566564f6d41775158516a726b41742b6c69475758626875724934636c716c4a797a494b7267307365645664742f7743704354696866765761374d536f5065744f31365973554842735674524f4f58634659373139677339676b69755570522b4b3043575251504b545968566b7667674139636d514d71616e514573614b5170564b5a466e6955786c492b47694361714f71726b774d75564d5648476c6e56647761616e477661677a334a365438552f705673334e305a4e30776966656331584d6a347256364e426f585a3579365167364a644d2b7153716f37465751356f424948425a622f5249486d74747742795173473641302f4a4270316448785569614d614b6f6b45636b35365258386b46726a48344b794a4f4256635878347077376f4458424566784a597a7231497a36753541676359347068495944464b6a41566241494178455748765563795456617157685141594f6e665432424b49365531425241396f5a71796d717172746a53584743756d484f434178716134736b335056476e59726263586e6a7a376c54754a45644b4446636e35646949563232647a636b65476e73575865794a7577322b41693179586179306774436d47614274775a534c6331747339496f734e7435536f4d46764659394f43424a4552384b3833367041322f555a3671526e474e776641664e6569756e4665652f7741676c6f336471517a744376466936446c2b7464586c616643492f765666716d39686546714d43346a42695077577563526667597a773856503272525a394f32384b6d424d766767382f62747975536a4531344c5a4558505439794c6d6774456b646f4e443846335937533145695169482b4330507844316f6738707639796431654e3052306a677239397544637332647662384e754f4466556356365a7374494b614d49447138754f70423436384c73495274335961644c6b46717258366a7642754e76743469736f417850346642656c75626533666a6f7642382b593746692f744f306b6641582f414a7662346f505062765a334e714c6369615849366832537958572f787834787548496d507764624e7a7459583451733342307759524c344d4564765968746f6d4e743469584e3048473948694a3774794d484e6553583179577263742b6b434b362b3332316a624856612f354f4a564e375a576478633879365a6169636b475778744e78505362643466796d58344b373162303635666d647a5a692f774371474c486b726637467478344c73783366424a66394475577a723263794f526f55484b7658764d6e45626d4f6951786b42704c66426572674e4e71443544486b76505876544e2f754c676e666a576b544b6e3572304d794e4945663067653542587452575141782f476979377157766447414e4c63666974327a476d54483651754e744a2b5a4f64773131532f6345486374436756643971703446725a427a5a55796155716f4b72636d4c6864574e772b58717858497439587671756c627242736b486b76584c49733736364f4a456833312b6135754a64642f7744797533707632376a4e7169332b333934586e7134494778436a4d70703149534e554155595554453530517843434d2b434171464b397959456c4242467a376436375871662f414a47773232346f385874533776334c69346469376e7038547566547478746d65554775782f4835494f474237304344334b616d527a354942526433306b6a62374863376e366d4671503841712f657548526c32743866742f544c466c7133544b374c6a7748646767346a49796f47556f44524c5641596f4d3650616f5277514673796737596f7355754a71674e5934494a7a3164535563554131464e326f4d2b43674b43534e5743395a364a656b64704548364a66443936386d757a364663724f3332535165756d41774f6179334470697456386e7977666b7364343944416f4c647558476b4a726b5432465637535771704376764769436f5441375666636e6d566c684c574f5374306b5a6f47684b7572332f67744d5343466c6a5758484e5878654e4f5342755371767862725061727458785333576e30464262644c41634757476346716c507a4967697446546374756745354437567a773731547433413652525733333869542f7056577a6b5262417a49366b466b696958415656776b633034654978516566384156646a4d57626c374c5848543259452f4a65655a6651647a616a65323979796176416e734a587a3651306c414b68426b5648644147522b536a55514465394158515a54465238304530386355543856415855643045434467476949496c4949796f55415a714b42514e6b6f537941674f6d6e516f51693867426d704c784549464178514d6171425241564231494f536f36434b4f436d4b6a743142416a74676a6b6f7a715968416168696967416745467038504e56386b387061677972456d4c6f49376c544651424853454537464864446b6951675546454b5a49734541586f50544967374f51347a79354c7a3742714c306e6f3866384178612f714b4450496d32656c487a324479667556317942494e63386c6b49307944494c54757572554b524345647a4755337a474d654b787a424237565848703858356f505a656d3349337047456d6c52343869756e4f49466172797670647a5449667a4c30686d4a436779376b454145585754315431534777744754367079384d5664757435485a57546575665434655a344c774f38336b3937634e3636584a2b485967473733567a655844657646354655315a4b45614f6749633967515a6932614c6f44476941784434357166676f584a52417077514c2b434b434a4f6143556450616b78716b645349716733624f3035654f574b30796a315054687a64632f62337a5a6667636561364675554e78574643676e6c616938385574797943656f4c56474a464a7336456731577751594261367731463644306979784d734254766f755a4d55705869753336654e50536634655344705259595a594c525a494a354c464b5557635975746469596b5152336f4e344e4b4b43596c676c4259636c3433316231473773726c7539594a6a356d6f794756436739736f764c2b6d2f355861754e446444524c3957542f6776535772304c30524f424242514c7572506e3270326a395149587a3233716b5a776e6944334f463949586b765876547874702f645148524939514752346f4f52636d594268377543356c79354f346549572b4d3964514842366b626c6c7145455a6f4d55474e436e6b4a584a6630304a573559674c6473343654716b472b4b42627472635531796345303973454e744671793731334a5175586f6757732b4b7a7a324a4179636453432f62534a352f6c6b756e625a7949726c62654f6c6c75695247544448676736385a754754775056795757325835635671746355467969714d394d744a77566a68415646787655663841496474736e6744727541654750346c6557336e2b55627663394d434c636634667a5034494f782f6b753774796c626843547a67656f444141385635362f41526b546b2f37554e6e50564754347978346c4734584e5863464149574e5a634573757a7452706267754e43394b4a306a4e6454623351494e6d343745486574523658475956523862797a707854546e47456171735263756141494e323349695630435746467a4c55394c5a4c526476615139454630747a474f4c2b355662506632397738524961686a484e636a646273327856655233573530336a637448544e387149507153692b6662502f4a74335a38636863694d69472b4b394474663870327431686365425048424236425256576478627678453755684b4a7a437451654e762f774449613161507a57614673577a5279314671336350726837425a5954686743337379446f576a48415a4c5249456a6d734548785775457a4756616f444d6941314b6d48584b6d534d39552b76413564696f6a657578655a67444b76683449466679376d464d5374747357376b6459774b7758626c325a314161666a5258577053444e2f715161726b6f6a6e3856677673354c4c544f35576857573752425a745271743431645736537a797839717172626638646156566a6d51795a424e62524e4154376c6a74306d59584b646e34643630534c422f6d73742f6f75776d4d5749626c5230476d4d2f4b46545369514e4a357a376f2f6e6b6d736e5757784650456875646e3535486c79777a434336577135476b616350795641747a74644e707838666d7059746a58473164753349763475706833483555775775473236524b4e343146634a59634871673574713163747a31653962376431672f465962305445616245355375484f6d6b653342624c6531386d4131467839534147354b6336357252623668706b636c5262615574512b6e322b5375485478515767436a762b5334332b5158324173794e583164325336346d3950623472672f35484272734a44395079516351315857326b50364f76477134374c74374763764b634e77515566637a67664279556c75626b36434e46325274376437707a34383162354e6a6259346f4d477973537553496d4d5069712f55624d4c6357415854734745726849344c6c656f586f79445151635538385855414a504e41706f6e53575157794e417652656a522f6f3161722f4141586d356c714771362f7057374d5247425a672f7743304950535332706d4b47492f6959563975437933505472376b6732322f6c592f6b74573276786e414e674d4938316635676c467966656735466e30754d54716d7a6974417568477747616c636b4a33684d3649477130615351303266676777666232726e5450425752324667487031507a4b7276796c5a6c30312f684a78557337363349365a4f4a6a346f46336d33747a73334966776d584e654b6b4e4a62466c374c66376f5173366e5034396938624d39524f534471374e3432745563736662327a542b58706e4969676b4b2f682b3955624f58395053634a6365533074316459664b694369566d42414c56344655436569656a49526b644a4f42596c624a45366943367a62693235312f55782b43446e64695948536c50536955485632382f4d416931666275573232346b7a594c6c624179425a646532386141565a42624f3862647658394f61344f3533567938656f39793648714e2f5444794d4d3178745855674475585569655342716f4355424a716f5764734648624f69684971676b2b43444b466b32534347677067675354556f596f754361596f4c3972764c75314c326a69705a336479336538364f4f4a47525759676968545a4950593753567664786a4f4a782b6b5a63566475626359324c73686a6f6b4b726a2f34337554436374762b6f616f396f2f4e64663169364e76594a6b4b6d6a38544a42346b76336f464563314d6b41374d455249676f446d6f4b565151304f436a384544323570385379425864516a696a715961516c4e51427751466d566c6d374b337a4842563832717038304857335632336473436354336346796f38314e6252493470516761414d7041444e4735413235614f42516a6b744f2b6831526b43356c477661677a32624537783032346d52786f75687362586c334a43595a6f2f56692b5379374f467963394e76706b653561486c356a7a4c385548544c61584b727362537a634f712b30526748517379634e4c68327132377372632b71626a69794332646a30363948515a7769654d5379775739726532397761476c4534536a5643336173516d317341532f692f63793233444f4d4e475a615061676539624d6867616532437744655232306d4d54497274626d32593277596c694f43353179794c6b74554772694d69675766714d4e7842744d675a4a69346849792b4b4671313562796c535154587061596355475059776c357750385556377551594c7850707731626d493479487758744d554175594e7957654d6d6d596c57544938587957656d75514e584f504c67676c794c544a4a776c382f7957617954476377746f6a6a7a575363774c706246766b676d71647334506d737670733774336461376b534e4d4a59696932576e3143504c73576b5055477143796367494538557476414e6771726b705349674d47544175517943776976536e447a44424c3032347975544c516a6d636c355031622f497033796257323662583676716c2b78423276557657724f78426947755852394d545476586b392f3670754e2b544b38616670474157496c2b39513855425a6b71676442417a4262665442475734684759654e666b5668597336306248707632332f4146785164446237733765687248326f7476384164724e73644166742b4f43355636324e52686733366c6a4b4476322f58624d533753355243746e3631426a35454471346d6e77586d5763735662416b59596f4f754e784f37497a754635792b433151334d7251367363733179374e33365469633170334e337939417831494f66366e43554e786348385378477456703335316269344d784972507a5142314f7a46524767777751426b78726b6c4470734b6f464962464559766b6d6a704a36716667756c5030573459433561755175524e61532b626f4f574478566c714a755441697570505a76366472486a747931663643772b617a656c326e7536736767366533324e757a48497a492f657570746f2b5542476756467531714c557269585851685968627153527a5159372b7868654a6f79573336624332324863756870695864384d516e455976302f765155574e74474c4d414b725635596168524552705a6159575159397144466373367a70586b2f56646a35637a4c4e6532466c3476436f50444a5a6437736865682f454b783666616944682f34734e46726366365238313141575041737350706a5734586878387638537463486b616355476266582f743766614f6c634b5569535339566f3955762b5a754a41487042306537397178786b344b433242416c3765354d417a30785761485558344b3852786232356f4353796b5a466b73365934704d484a344642305a672f59575966726e63756637614c4d596d59427a7857753838647073332f2b647a2b705a44444c46414a44415662676a414d43523731424453655a474b31624c6265645079795036666a765334522f623730467a666157764d482f414333715166474d426e33724947754867775a50754e7a3978644e34686f6b36597834524743726c316a73515752445270324953654741707851316a776f2b5938744551355053497872586b79426f6b6d6759704a4749476f39495779783652764c6f485247314839567956653444507443363232394b7362633679504d752f716e674f77494f446274376e6378303259457772315944767954584e6c506144544d77664870586f6431664e75456a4d3067436155357269584c6479566d57387559534d64456555705a6f4f5a397a6369576b4368437864765850307938517a727a43767632346b6738567033554c73694c6c69516a714465376779424a66666a2f6b416b4d327a572f6133647a66476b616733465937573033467747553978496454644c6e39793251324e716352723346325575326e7843445275646b4c736175342b7235716d3345322b6c79577a397171715730312b4739633035504a616a46716e325a41393362334e357372316d335763744c50536f717647626a615839704c54657479674d4f6f4d2f666776663745614943457672366c66646c6f426a6441755773476c55392f4642387a6a4c49344b4d57344c3357372f414d58326d366a72322f3841536b6546592b374c75586d392f774368627659566c487a4c663634312b474b446c52646d346f6873536f434d5170497432494952376b756b4d35544d517843464f31417a56546c68524c6c3855514e55735546734335347070534d5379556352526b736a694d786d6774746c2b705233716b316b57333430354a42645961414b2b3942324e694e57316b526a62495034726d33706455357577642b3179757a36527372317178643877614933414e4f724263363536664f557a623144546b776b53656548354945394e6e4b647777655461536578712f4b69366b4a794263384575303234326c75516a69513070487845484963483936424d5157376b4736424568304432434e765a3272737463784856476c4b643677586472456839557832464a5a324f336c4b6c3657726e676737677461413052527666376c6d765749796c726944452f697164767439486776794f5565533077323837446b7a6c4e3238534332314758314d6543736e644675314f352b6b4b6d314d797252585147754d3434445333463351507437766d32764d694b54413072524e327175483666492b5863734639566955745059632f65756874743459644e36714455546b72417044526347714b593947546f4931482f616a4b5467386b4e4f4977537a776169436f4848676c6a32716151656c41744a426461725559492f55705a47674d79664a795546636b483130566f6747595a4b716345437a6c49446b4f354a4136774a53772b6c4a75675a526862713979576c7551567669365251522b53416773343470796376676b424c736e6a444949433743754b7a427851304b30434434717255307063325150466d623979386a75706e6362686a3964776e4849666b463658645438757a636c494d772b61386874726a37734636413151656b6863476d71734632754c6c6c68386963366663774843464b464551755754706e4c5632494e757434315078775647356e306163386c566436527135594b722f7741302b4851473730484576445455315a5648725063745735684b7a4936774249724761487551613763424b446e454b3645644a30787a56657a69304e587a5677614d7463536733375362366f63596b4c7a3136496a307938547272574a2b586369484e4d566b3957742b58667143306b4850496f76526634764c727652783641764e794f574336336f6d356c5a767a6862447a6e45776a3235495056337431627441785058506847754b38377535786c645931694a314878507757364f7a336351353873562b7161512b6e5848506d58624e7669782f4e4232376432463478755779344c4e375972772f716b662f414337777a31792b61376c70746954636a757262732b6d4a4242624c76586e4c74777a75473563724b5263397051556c67555a46685247755151494f5341366d58532f7836426c767262387a2f77436c637a444b7137482b4f523162782f30786c67673633713042754c424f4f6835503765334a655430414c316e71562b467177597a6174414d4353764b334a506d675267533056727432674870677374694e645171756d7a394f614458365a6638414c6d495a534a672f49344c7636614665566b4d7877586f64687576754c656b6c70787049636b4677726b3635667175384d596d7861724b586a50365277573364337874376370753073493971382f4566376a347531424c566f517254383030515a644955465666426f6a6a524170384a624c32775173513639556867724e506d5a456331646f496a5242524b756f6d71537845786a546d6663744534645063733878356473754d4b397944712b6b7965794f31644b35565950527835647144353953364d6f485567654e616e426c6d76322f4e6a4f332b6f465874536d574b4f6f505473434479762b4d3269623932514649774d6665663246656833464a516e78785850394474655663334f51387752397850357266756e7542384751556d4f6b3971535141424a5673735449344b7536484c6c6e514330426a7757694d426a6773555a364a5972624737485433494c49686a70416f6d6d637355497749716c6e6736436b67436f5630515932337979565a476f412f4653355744444e417578477663617a6749726f54344c4e744270456d7861495779656b787234753142696a4637684c30412b4b5745576e2f436d735261354e38466261694263664a69653942584b4c47745539736f586f744c536a62446a6d67647453664a6b684c653557526c786f67736845476d436134446f6f68414b79524d516453447a473231523346346d68476c6e397932774865465475497847366e707730683173326c7353777743445a434f69435a32446d71726e4a7a795549434375655034725a74706a527057505456624e7053324f4b44674565584f3745663841636d6d4f4c7062786539656239636c49754f434267483546416a56324a34304e55736e2b4b42527a78556c47763471446d522b53636170697543436d5853774f6179585a6352675374474e5857615a31436f3975534369556842766575763657483274762b497950756f7548666d6138475863394d316661576579667a516154535279624a474d6753684f4a4a3666324a415441695344566344354c427535473343576e4946627065465a4e373157794d326b674159577751614e383141596b6a5571334d77414f43735a426536614c73717846366f787232494c6355492f464352776176354942674f5251575361727155774f4b46435743574d61386b44616376594a7a476d4b574948687854556b644f434249556a564e454f7947485378594b7741536f67575053654b306a546d4b724d496d4b766a4e412b3370634a354d735634764a754879576945644e796d654b7762693849796b546b677a526137754c7338334552324c584e67474379624f445266695857754d586c58346f4e4733416b656f5942626459306b594c4a414e3372524135596f4b3568717267663551644832732f357667793945596e4a65652f797130425932387961524d6f2b2f397944425a754f4e5270327264436451543850624a63617a63424c2b78573535553566705164474d77796d4e5171724e59763841464f2b62494c336f2b614964335658747756735471714d4d6b4450772f4e4c535756555737304f61437534526771394e474a71724a594f6b4a627451494a4e564145596e745478424f4b5957394f4b43797a4d526f654330435863734d70634d6331744d71526b637767746b54784a437a583469554f7a447456676e6d7137703144447351546179306d5a4a385556777472466847756b45793939572b4b376d7a36706b4e6b765037514454552b452b374642336f482b6d47785655354d574b4975644150464a656b2f535541677a67426262484a596f7845512b613078494251592f386e735375376133652f7743334b55542f414b712f67764a3572364e6f6a75625574764955754167397552376c3836753270577047457646456d4a3751676835344a517068676a564163656e322b53584446536f77527851526e5546485a515949416f47416f75312f6a4e7a54752f4b4f4679456f666a2b4334727572397075447462384c2b635a43587551567a69594567304c35386c5746302f57374174376a7a626667756a7a496e74584c41346f4769486f75782f6b5a454c3975794b69336268465a665237506e37753141696d702f645654316539352b38757a2f697033555159506b6f5471556339794951436f6f63454f5954486767474f4b41367149414f5646474a5143494b49716f557142776149484369443052656c4d55457a7175683652636264423843435067756341315372724a3058424c6d67393743526c746878775074324c484c534742597252733569566d50506d7365346a485638454733623651484761744d52495a685532762b4d48326f6d6850564772647142634843416e497345386e494c6436726830794344564b4c2b4646755076536d576f4b796a6f474d74417051496736687870385643424d55344b526a71446a73425141394558566a6159716f6b676357566b53614d79444e764f7178636c45595257613150797056774f42775776645469496d5048354b75324245504c4a416d6b56566869497753524a6b5438457a48456f4c496a5565764d4d766e2b39674958376b4f4569766577493141444c3846346e31614f6e65586563696777415a6f78785277376b7561416b714b44676777434171463048346f6f497a59357149474a376c4d554262696e4d4e554e513473713256746f734445683377354642566d6f51314554556f47686f673062514e666871774266334b6952655250465062667150414b7646414b496f714679554559397751464b4968415651534a616f55664a51636b554155315a425246744e55414152657446443071474b42536d375542557149476b6c786452305545777778434252515a41577a55306a456f4a684535562b4b42546776553747486c3761324d694d655a5848326e706c7939507242694d6346335a474c43414a59637632494b70516f77385075575364754a384f5331334b417571704f42715a7767795373665452796d322b776c656c70677a356b7131347332527a344c74374347714862332b3365677a3750303032735764386c31624673674e6974624e515a4a394963647944786638416c65374d72343273664441416e744e5635334a6444316952756232394b522b7551666b4d467a67364167354b59706e4b524158346c4855636b4d555141794353716f65434648544f454241346f554368504243584f6941463145516867676148695a4e716e5a6d57385554697134394f4b3137753149573756374b5950766a52427432752f6a64307875304d634a636531627748664354727939635671733779375a2f34354d67376d6e52575970772f4e623976485441454438567762667250553936416c7a646a3846716a3639627478625135797951656a68584657527565554b30413973563579582b5547492f7077442f78315a636a632b70583930586e4974777951656d39532f795746694a733766716c2b6f354c6a6575644d4c4544346862633939567a4e725a6c66765174444763684833726f2f7743523352506579456349694d66676735647559486156703276714e2f5a6e56743547492b48755751566f6f59356c42375030372f4c597a364e3042482b4f4f666376523237396a65774969524f4a7858796a6d4671743779376161355a4a69522b6c4233765676536a366449584c646242667469635757573375346b757a6a6d6e2f4150784a63334e6b32747a43452f346d6232507558496e52784632516447653568394a557358784b596569354e63634754323535317167396a743738474f6f3950446772726c7933527531655774626f436e7a572b7a643178636f4f6a3470644b3078625658465968755974776f7262562b6c58716736646d626e54777a78577933494d434d5679626431715944696c75377a52487071536733626a6452452b697368302b395a35626945673879444636366c78377534467347636a6c787758443333714a766e54442f6a51615a7a3231792b52616a70694f4e6458354b2f642b6b776e41584c66542f44785842452f3034426272472b6c62486c794a62386b44323973625742543362427a716669685a3376366d3072727776625864427175334a75346f4f4c2f414d6447577a59334e4575734f74392f30714e77394f58484263325671375a77685844322f42423643562f5552386b6b726e6c7335466665754c443154545335484436732f616970752b72755470697a2b2f346f4f2f48644d6173372f71564f35395630306b77586c626d354d3536783856564f623936446275392f4b2f4967304861734a77636f52507852484e4151615651465377556c56434951624e74767232324f717a4d77617649397937502f414f4c4e313565686f766872586d684b6c557a3944356f50616b5a685974315a6a4333726741434456616a32495849787641774f654b4376617a38794c657a71786c6932737a623644694b46616a4c42425766556f526b5953695843722b396a7841373672544f7a4735467064797979323435462b53425a62375434663270724735387736644a3765614679337741485a525757343661527751504f5447755346676b794a4f48617172306e6972724d57746766555546757353346f446b67326b732f76775569614d3375514c6349306b7a77574b642b562b666c7a44434e59787a396d57305238787462744844322f465a3557394e364d734b6d4c486d454664715269645075433656755570443831693357325961347871416a59336e6c7961522f4242746e62424661396e79645a434a59474f4c4631766a63453845686c314867677957374a69645a7939736c6263756d5452784a35352b324b4d35786847547250745a7775534d6a6a395035392b434458626a4730472b504647424c386b706b4d6b592f7143427741366f3955736663324350726948353056305a4358562b434a6d4e76457a6c674167384f7a55474b326253576e4d737331326571526b6e3278486d64644548596c75744a6f3443706c4f35664f6d47505050337173524a345949526c64746c2f45794332583373586145683256574b374f637638416b6f7455765539783458302f4e595a5835335047585155356f69626f74524352475342703544465837516b6778437a534f534d656e7151647533757057364f433261452f55664d4f6d55766371397075375a6e317352324c70332f5462473674363478306b2f702f4a4252446233397a4c2b6c4f674f54666d6d75624864326f6b47394a75333970584f76656d4862544a6e713063676749325453492f774463673353742b5845797533436635697372584c78486c412f6b6a61326b72683166546d46736e4d6257422b66486b67355739755445424335694b63567a7772747a654e36546b75466e4c3535494f6c74597662636c6a6b566f48574f5046556247526c44526b46706961395042416f653551314b6f336459523034766a32725553387168714c50754947516b427766335651637953484d726f2f7742756c646a356c6b6767596a503237456b6653397763494f50636776384154726654723476384631522f5469355950374d7332306a43324e4763525867366e7147364d4c656d6a7978664a4279643175446475456b3057666c6d68326f436c5878514d6146736c45484c31554c5054336f4132616d4b634f42524c7064424a4164694441344b4e5646366f41696159464534755548346f423765394e47325a79454269614964716a3655485748707536394c7557397a666870674a69756f6472554b3166354876495874454c5a63654c73664a6337656573627265514675396365494f724143766346686b2b614254467968324a6a4948444e4b36416c38436a70344947716b614677674d6165355277706a69454d5136435a4f70514b4d483756436330426c56416b6355514777516b67694a6b48354952465670324d597975615a6636587764426e4d57566c3834555a646d3973724459615a63734375547559434d394d6345413256364e69364a4876585676375852493354326e3846772f455632397036686175576a6276644d323061735165314258624c5a343455585274796c4c7163632b7863776867424575334257327039534472334c6d6d46446773554a2b5a63453342694a554f4b72307975304d7148424c2f353277682f34386f6d322b516a4c35684233442f55673337714c6c337a355a4d6d4f6e34724e62395833556a70754e586b417974463256795a4e7976356f4c6264324677616f6e33716939634a64734d4f31504f30414b556638566c4d535452366f4e586f31732f6351627458716963735278584a394532506b774e795a47755134344439363630592b39416b717a5a2b35594e74634d37684971486461357a50564d50545638507a574430694a6c624a4f4e55477933535663466c33683875344a5a725846775437594b7265323963524c4d6676514c436c526a2b43306175487557614e523071324d7a483349454d336d2b6543315779734c64564f4b316265635138706c6f78367578735548412f7958314169583263443078724a76714a586d384172643365382b2f4f36635a536b565363655343633649636b7a5a4a574b416d6943694a5152364d6a475267515269432f7553714f364470622b59743769637737584f73663636724a4b596e324c5a3669526473324c3866302b584c746775594a6f4c4b6d73714f6e6a3048716f5654724c4d6f4a456f4e5275734f4a566d796c4b39757257724b555433425948585239485962714a3554502f414b536778376935356c79632f7742556a4c337171584e47517136566b4547434b6968346f4a6e79554b4b6850375545474c78577a5a3775646d644a4d44546b736249344950532b66623274733237735a474e32503038506171353279496a4968794f58483971303254397a7449584a47746c34397877576262324a626776476b2f705162622b3238364f5937465661325071573265646b53306a4c6a33666b71725a336c7158686c3072534e7876364578334242773670666b674e6a316163656d2f48793544452f734b365933506e416b594c6b58376b37327256713177446d4e3350734b4f3076576f577a4f3762756b5a6d506851625a373763366d323441485972342b6d622f646c3978656c4750365175576650764d625544434d6e6c455278707a2f424e7472667174795945504d412f696b324b4476574e70443038694d4a536359366a51397930626a665173426f784d357a654d59782f48674679376c6e3162623274666d52496f44484f7039733131396a735459506d585339316744774135494f5873646a65747975517a486c5637696a63754461776c656c346f6547504752576d3165763266554c746d5a3132694e64636763414f39637a2f41435064796c64466d4c6441667650765163475a4c503841366a7856666d4e546a3730384452316c6c556f4c495365586174656b4f376e42594c63692b6b44466447412b6b304c494270656c464a556673566f44306c676f49644d7578427239524d6f574e7041765333356e664b717952424c7652626655375931575931614e6d336d735569634d30424c5236732f6d746d346a39747434375a76366c31727432584c4b503746563666596a6376445566366350366b7a7946512f6277437175337a755a7975792b715772757743414276464c444c6b684f52444d4f775a6c614e7074726d2b76437a5a6f315a795a39492f4e656c326670646a5931674e647a2f7553783975784278746c36486333413833636b32375a2b6b6549392b514b372b3332316e6151303259434934356c6c63512b4c2b334a56613650376578514e49796c56435941366b754e54374256546c70726b677965735574794f5248775766657962614d507038756e595664366d4e647654774256576a585930537836666545484f76524671394f304d41596d5065727249654f6b314838504655657152467564752f4843626958627853324e35474a615748366b436d473574334a53734453487248697465332b34752f77444d53446d30575732462b45764363566f6a634430592b39416f74694d514d6b54613632787a376c5a4b63632b31594e3575445974546e395a6145653253446f624363726c697a4f5653387664576e77576d52636c31565a73517378733763595178376633713266504241384a65576455663951563971365a466c696b644b7346786a376833494d3371506f47313337794852642f5648385176472b712b6b332f545a6631513850706e484476344666516f584e61653562687549473364416c45355a49506c515050424851394d75533733726638416a38396b546632396258444f50375059726769543065714268776450626a7170464333484970725a4561346b6f484571562b43716c55754d666974753032647a6658526274302f5849345243394a74505439747352716748752f726c58335a494f4c7476514c3938524e2f2b6a62624f736a334c7262657859326c4e72623668547a5a316b65775a4b2b35656c4f5773312f695645726c4543376a6331656657583975537a574c74776c7a5834464c63416b574e46594f6d4a6b67716e4e7a6f6644715765567a796d6b7447334175583730386f4454777153714e313053694a59667151627242453659425753394c6a654f6f6c6d7230726843394f4a5945354b34657047466354376d51642f6237556265476d4d6a494258336e416463573136744968354f2f63744a3352757835486b6730773636416869724e6c4f4e32334f3548777a6d59783578476134572f33766b514d49532f71454d5a6342773756322f544c666c37537848505471503841726b34515964637248717079686361457533535078577a64772f70763953357671503841393947597231786675585a4a65505a696777324c3568314f7848444264613175796648373178647a474949456645634f3562346736514d6d2b4b44716559446a3142533762315070397758507454387643764a614933674f714b416d486c2f4c334b6f4d4d6c736e4b4e336b636c6e3053474e52524266434c69702f636d594e54464b6355786633494641615447716c3038665a6b49314e63464c676f2b4a515a626b787231343651573755396d6b4f7645716d4a46795a626b744d7570676578415177366b7a75615970596d6a653145326f6b4f67474f4646546575614a784c654a3476777a562f62374f736d2b48394355734448713979436e6664653375523556586b2f5471337a6e5265776e4d7a73796641776c3851764a2b6a394f364f6243585967324461575a35794569583144466262566d55594370344b3677616330352f71533078354948755743594455756665686338486d694863632b4b376c79414b7a3634673653416363682b39423561635462386374623453575735693856366a64624f42724541506b765037766179746459514c59756142715769586334584f68634d61344c5462766177574e666d673032706b5341786461505634526e626a49767148354c4753326b766855725a767571304367344551483763463264707358674e567537476465714e413365755462756d31507a5955593056302f554e3063626b2f6b67374d765462456f36705772763841753471752f73746c746f766474335967385a526632376c795276384164654558626e2b347175396675333550646b5a486d6736482f774336526a35332f7051753350546445764b6863314e30366a68777175565845684d3775485153556a7851426f326167714b4a585145677978586f50385a364c6c363750434d4d653963444a782b3164445a336a48613368484d52456a6e6d67723365374f377647374c422b6b6341367a536b5870676c456d474e465a61746e5046427173577a45617356706a4d353150745255777030765469727851642b614176524778633869516d47422b6661716a68303151754f52794b432f65627237695663686b714b47543456565554395046534a434332795777717454422b4b7a514d5939422f4a5732384b31492b4344514a4f4b65333471776e70664e557741474977566d6b48437275674d356d64466c336830323546366b4c5343423143705750657a61305167376e706f3032625a35664262387168636e30755a4e694c7271516b343549477131633030786858424236704a5446476646426b3245476c662f3841714c5466314d5656366645434d6a2b715a6b72377778434448414e48547871555a777a43515541434d716830474463796f2f4435725461752b624552786475395a743156332b6f344b656b6170515a6d305359494f787161504c6b6c4c7a4c344467684b543470744c595651437841796b306356664862526672714f525665314433444c2b4834712f5351586c79514e3541746a70774b4c48546972723249696548795761552f33494d746d526a63785734786271354c434a6b796241686443456e3755465677644435717531497744713635426a697338596154546d67766b493571514a5038414b70494675774b5241643047693338466d3365354d41545275484e614945594c4e764c506d776c444d4369447a2b316d626c36345a596a5438563364724c7937626b316f76506261656e65584c51786c6f586f4c68486468376b4452596d69643363413039714b6d4d394a2f46504b59714544514e4e52376c7373426f42593456594e334c646241455277356f5050626b4158376e4f5a566363533673763841566575482f774359715446734d5851616263534b346f5459522f4253334d414f6b6d47515455526a374d6d6c4973534f3556444774452f5563554765584467733938365961766171746e4c71624971755554395344466547584a643330346a375379426b4a6a2f314c7a75354f6c324f5339443663423970626245494e305969513168565346466459763653337553334235647a354942616b775a56626949303431774156326d6f4b717579392f42426a323962635a48417574416966334c46737039445a75667a57794d4b424259493066424e6a516f5170696a7151454238553559567a55594d4a5a70596b42417847536541344b756e75566b584855454278446b4b7742354f614a476c69553069676b6f7658366c495234564356754f61736a456969416c6a696a4536564e504641534d6979427857626a444265653331306d2f504f7567653365752f4b656b30776465633345444c31474d507050583730485268436762494c546267715a7a3064556d596c5462582f75415243686a6c4c397144584775465661484643666775546333462b4261665232666d74573176546965756571507966346f4e7a4d4750463177663871502f41496471502f7a442b4b37316454697138352f6c6b763657336a7a6e2b43447a7532426c4c70795858737831454e6b79355733476d5863757474776456635751624830684e416b466c555a4138322b4b743235596e334947665456793556657a7653695a5973536e6d344c6e454c6d53754731636b43374f6737704f624a635477437073335249616f6346614879514134667356557972686771445630467476704f7170437575395654514b6a62356b4c55515a6842686d4e63686d4676306d55515269797a7a675358396e576941476c76326f4b3230794979564e2b5946526772707446316c76536350696774326b6e7550462f594c67324e506e5442503147713632316e7075644f446a334c69776b665075782f6a507a516477654769424164385150697134584d6e566d7067654343577872636858577a3069584e5a334d5745555a53766b4e626b78516461796537366e586c2f386e326f74626e7a6f3458427150626d6c33313766324138376b6d2f684b79627a653362396d454c7831796657436777593470534f534a4c35496a42304379356f6d694c6b6f615456424e544974377679515a3143486f45426a38457249386b4479434475576d336e706b6f47747a627931442b55347269344c716568332f4a766d314c7733596d334c76584f75773875354b422b6b6f4f742f6a7364463664342b4733626c49726a334a475a3148457273656e2f414e5059627139675a6159666d7549454278374552584644546b464f5151453665394c7a524c6b756961424141576f564d46484978556f7943534937314871686d6a7951514242325261716a4d376f4137686b784878516f796a5a6a4a423762306f6d6531686b77566534426a634262704a50764370394176796c594c30306e34634670336c74324d7631494e75774176576e656c566b6c2f536c7048782b4b73394e7561626b6f4d575055452b2f7336756f59596f434a435136565842764d70564c435a7743676b646274544d6f4c7a4e6f3956475769784e366357366c54474a596e784b79775a556673596f477a59355a4b7a4a3435635573324642375a4947514645453175577a2f417136446756576467635062322f4a586543465547546454496979724c4d506b68644c3053536b50706f6773736d6c546969513741497844664a545548514742455347392f4a65533966746d4f2f75446d506946363230584c535a65632f7741716237754d786e4166423048425935344946463142383041796f69454d36714446424d3058554c5a4b5372686d67675155544d675668676e456a45754567525a73554675347436443856534172726a473347517846437150715158514a6a4138325656586f6e2b6a76534e6b674c5a4b484775436849494846547477515153474b6a594e6968794b4d5333596745616f56436238564d4b4941412f4a475151464d45645842424e544252314d464d635541515a4d65617432323275376957697a4579504a42554d4b6f47713942592f787134774f346b4966776a48386c306258703232322f67694a486a4f4c3449504c574e726576467255535839337658536a2f41493964414275793041386e3936363130585a56667079456144334b6b4334354d6954336f4b596569626541363553504d4b337964727436326831667154454758765379745057516f676b74793345767a7951382f5855384652354c6c3846566374546269794458474e613466465479795973466a316d32612b3373467174626d4d67794132397656694b4572756247333559663969353167774c4131585173546a474c464230346c77796253477069732f6e77474a537a3358416f4f586539497333397a654578535931695843584c76584533662b4d376948565a61592b4b39584b39704a497852684f564a41305166506232303346682f4d684b49346d4b702b532b6b334c2b76706b3067654b77337652746a7567386f65584c2b476e7777516545374b4959594c314e372f46676132627463684c503237467939313646764e735042716a2b714666326f4f573667464f614d6e6a306d6a49636b41644563536f77436871674155636a465156527951414833727032774c337038794d6255784c734571664e637a4f71362f6f63664e755864742f3362636750356855494f4f53696d45644c6734705843417871684a462b4b505a696741555151456e51647638417832322b344e36582f5467534f3163726458446575536e4c4f52585732623754303637667a75487967754a795145305266555548554961685151684e45734b2f4241426948515a7578424a55585a736249446243374c475876374f5334314858733756714a32746f44445330753269447a46327a6f634b6955534633722b326a4f69787a324a4574497145484e6a4a67746c7134584761742f74302f706f3673743749782f4e42665a6d64514d63317168633472505a746e776f546c47324e62305162544f637853677a5748633736473378724a764477574c642b70366e6a5a372b62726d456d556e4e53676537666e644a4d6a334a5357444448384570436a4d676e596a67686a69692b51514632692b613032376a44566e386c6b7a52634155516433612b7179687041496236684c3846327265357337694d6462315a7a6c337278635357576a623335573555503545495055627630546262714f713130794e4b476e74376c357265656d33396e4a70696d556c31396e366864677831505877727443364c6b61392b6144352f544a4b43315636723148305346774735596f66306c656276325a575a4745677a494b79364e65314b36694267573755726f6f49436557434c56354b5978636f505242375236396a6f5236545549454d544c697041594d67342b3733582f6b46677748532f503270334c545a3349666a2b6c63653949546e4b6645794b416e3554536854346f50533272305a445572497a6676586e7257376c623677726876706d687839315548596e784e46515a743755574d37795a7037315a4335717155476a62447a4c6769664348615059745533702b43356c37655432594679474c384b4d56667474374865447070503668375a494e423766594b3246756333426f46555335773976626974735775416d50356842524f486c696e35716a6344574f6b3958696965595734784a446e3455575735626c493548686b6774457875594365414f507958507637566977774f4330624b3652636c616e67657150342b3346613532334c35653374334950503239786674523666442b436158714d3236594d75784c617835476e616b6c7451593169484344686b33626b6e75596345397534525058483650623468614a6164576b55624659595465636d346c4236463448726961484a52714e4833724674626c44484c4873663846754236616f473164555944416e466566395a337432637a5a4e49784a354f75394749666f584339596835747a584564516f6561446b554b6a3571456e4e4733626c636c706748504c46426f7333645069714632646e63457052417057765975567566544e7a733467336f4d447a422b537a516e637431693749505233505437643476345150657542667465564c534b3971742f75647a5349484434724e4f345a4855616f452b4b41507643674b6a7379426e70564b4477527a51504a413043524a2b43376e705071554c4a4e715a30786b587175564462584a4367556c7372735975794432317332376c61474a3555375659646e627564576d504a6548747a76325a4d444b4a37785258543954334968703879564f6455487064304c657a314738305132476675586c4e357644754377384b7a333739792b646432526c4c6d56576767555a6c477a52316655673262496973653962376364525944335a726e6247496e644554523136797a59387341416535427978746953486f744d4e6d43584e5676594561493936574d673247484a4252486278464e4e637064697033346a437954434e586a336356744454772f4c755758315367366a6c68336f4f58596a58554378574466336a647579427777585331485471417758457553424f726d67425164305a486967676a6b6c2b5349446f5a4b6176656763644f4f4341493449476b687952314f676e616c7852514743416b756758435979475743556b454d676a71434f61757362572f6563576263356e2b474a4b33325038653951756a707447492f694f6e356f4f57516f3772762f77443454337266512f38414e2b7855532f7866314166394d482f58483830484678526571364e37304c66575a61664a6e2f704772354f73382f5474316263797454482b6953444e696f4d5754615a6a496f522f546d67362f6f4870316a667a6c472b5a456a777847666573587165796e737278747a42416670374672394133316a59335a584c786b48476b6159757570363976624738326f6c616e47636f79707862734b44796f696d6977354a515855425a424477434170696a727168513151454371654d3945675269456a766768547351642b37754953746738766556777079315970396241785042564641636346487a51436a384547335a586e364a2b39614e4857325335533132727367774e575164557a75573467674578795a43487146775957544b57526b39506779467137726a7047434e367a4c437a6a376330466c7965376b4e55747662726e3753564a766269525932375977782f656d322f7031304d5a366e576f37655565666279515a375775412f71437170767930767865677a645833706d4d612b39596f76636e727741515a4e784f56692b54416d4a79585632582b533372413033783567796c675679642b477538364c4f67396766563746336133544359313653304451315733302b326264694977774a5867524a6454592b75376a617845442f41464944365a666d673966614c6c2f656a76597641355a74373178746e2f6b47336d577641322b65492f4d653564713431364432692b596c4832716778776c706a5846573468386b6e594d6663364553775a776759696e73794d79425976482f414f56632b52566a44434f61772b717a386e5a584258714d592b2f39694478706f6761314b4a4343413871714f6769417764424d6c4764456348514b41456b714d6a6d6f4d7967366578486e374f2f59786c4272384f77556c38467933397331306652622f6b627533717247523875584270305766653244747230374d735979306f4b4e4c594a547854446755477951436a555854394a41486e797a6a59754564395078584e58583245524459627162312f705239386b48494b42785542346f734d5541775565726f4b59594943373449396958457034676b5579514251394e5578444a53516355473359376f516c35557638416a754e4766344875585a75572f744c6b65644a637879586d574475765258643361336b6257695858433347476b2f7147504a4230346a56716c4139557a386c6c6e667657794f7158543947705a39767557704a5335756870316e44346f47753773776831697256353869756836567366754e6d625679556847666835444c34726b62617a5031432b30473078366939463637626d4d47677a494f444731634676795a6638746c3479346d427a39753943316375512f5652755337472f32666d533879476b33523463736561342b32332b6f364c6b694a43686967374c367749346736546a775972534c70574b3363695147485974454a4f5141674e385274796e754d674e5535667934666d7644584e3139334b6379574d7047586376522b7665745772567137736f763570476c386d7a58695751644b647336656b4f4437316b6b4445316f2f46583274315143524f4e465a48526569302f4678515a3970456d357279433361754856322b775377322b6a2f6971716a496e48397a494e455a6b76713976626b6a4e3849646970387a71626a38465a7146472f5545485139556b50756942526862482f704b79584d354842582b6f334e4f3775434845442f30716933487a376b625558424f505967746e2f77434e74785a6a5133326c4c2b515965395a6d6b5a434671743258544650767478353177334d6a535049526f46302f386132673674374d56384d507851643330375a5232646b577758502f41464a6356706c587846674d454237796d706e67674435716935626644466147725839694d71354d45474f385470306a4e5536476f56726c42346b632f6d73356a56425475685277714e4969476b746c787051596343715a5177617558596777627177627344596b33563454774b3838595332382f4b754471353572314e7933473444414676306e675173527351336639432b346b4d4a2b33795163614e6e7265334c543372645a74536b486c4f662b356e5850334e6d357337687433526a777a3572585a33554c564449494f694c567579386f525a735a477147775039773349754e2f51736c2f35704c6a626e65334e334c794c515966703746366e30766266623274417747484d6e464230626655544e4c656d4a7a456147767433707066303436614a62554e55693451566267694262465732384b4c4a7570365735466162636d706767306962596355344d7331554377546a4471795161413068704e51526832727848722f414b43646c71334e69746f346a394c2f41494c317573752b6553652f456269314b314d50475151664d7263736974634c527545512b6f3043306575624733734e326264734e626c455469506838317039437436357a7638412f62464f636967374e69784461572f743758542b6f2f71503745474935424455543147754b575039514d636e514b7a44537330703546614a6a544a69736b687175615543434c78346b6458657243376947503165395333467949343932537a7775537547567a6a303977515737416b65664c39527037796a75374176327446736e554f71506469454c6571455a787478447a303958446d2b43546365735232353032514a7a50696c6b44792f4642786f334249562b5046507031426f30507437594a4e2b7776366f3045326e373158724f434473574e76433145584a483969572f7669656933514263305868705765354c55616e755157694574784e735871666d53766578387549684f314c2b6c435053636d6a7858473945394e386d7762313066314c6f49484b4a2f457162552b563662636d3563526c613063444b54503231515651695a6931666b344e79382f76585432387457347657446b5843786269324c646e61774f4c784a34302f42303975357039566e44415348785a425664477664575232763372555a36446f7750774b71386e2f7741324c2b46745743612f4c54634873794454626b2f646974414a69614839717832695351437278504d6f4e416e554658577036715357536b6b384a56705242746b42675542523378544751494569673148346f4263687077464652647552467555754157676b594b7564765672682b6f4d6777374f6e5536327458735850394d72416351576b756d4a614b795a7561426446585667476c5a626e71657a7446705841542f414857613536316141497432356e74365167364d7172503669662f487541596153363538665772372f384d657779637252486354332b30766b784673526a4b50476f715543532f774473337a38762f7743466551395075655865696631553936376d3633486c62457746664d414561396a727a4a42746c342f53554871664d306c716856692f3545745a695a45666b716f584a58342b62444d4433705264496f51616f4f762f41486d784e6f6d4d784c736f71623178702b62627078664e4331754c6669306b302b674b32394f334b334b476d62794836634f4342724e377a427242704c6973487130496d3238656677523254347950636c395a767868624d5269592f4642357145744f617467444c436c465870423853757355727a5158757a52577963684f31496c59435445567861683976324c706265506e577a474e667a51634f59445556654e636c626642684e704269716e41464542654f536d545a49414f6f7869674c385255634641434749526b4b50676c417a51475571755065703855414846464e4c596f4344586975725974434778755365706d4175573477586f2f5339685a7537507a626b586e5776443830486e70644743757433414b6e4e4e75625a6849766b73304a455651626f7670645869365a51614b794354394c7145536958705371432b552f70556954674d456e6d613450443936477473614945756d765433704249524e4370666d354566696b3141684264356838524330324c6a785850494944703764386730775164625654566b72745a7a57477863667250755631755265763745476b746a476d663756673330686f635976705639795754555a5939366341525233624e42335053662b43427a6153366b41473746797469514c63517a414d6164793677446969427a4638465265654d5a5334416c584f504373652b6d4c646d354c4e736531412b794946714a5031522b61317a4c5231446852593973534c63524b724349577767732b434442436d4f49537a4d75356b374f5346584f564751596235364a4e776461396e6146757a43507335575335445849506d5758567457382b487551474d42564f47627355692b4251694267677532554e6479514741433078737a746e462b3559494363586a6244794a374532334f354e7765664749692b496d54334d6733587748634679733877475670704c694f4357635255596f4d52414e794c686e4f565676737a597356686e616154786f5156737353453863554674794c6c677370704a62496e754b724e754a4e6355464d54314d72733249514e7276566b4159346f4a4c43696f7553485a677257564679446f505053682f7744764b42342f684664687a34677566757069337537637a523479375673744564364234594f6168575268716b7174593849563173555158514e61635676746967437732367943335250567951655a756b6d374f527a6c492f676c6c302b354e4a6f546d50343566465679723830476933306b486c564a4f444f42583971737345614f625653584a4f6754525630307044497049765568533567434d5547556b45734d43675a436a344a704d2b6d7153354c34494f5676385743394a36506331624f4a2b6f50462b786563395138587a357230506f636f6e5a687359796b446c2b39426f7551634f363057376d76706e33464b516341712f4b7269677645614f733136456f786f4b6b5557714c71716342636473775237304845323135706168395472724173486f7544706e593341745842704d656c6e643875444c752b436943773952635971434c3470576644676e457156775151535269386b5a524a6c52534f4b43655944792b537545754b72306e735442425a627a4753655459425677426b565a494f65584c46424b466b495069616f7930736a54547a514d2b64554944512f74524c4b6e3755307a6d554664795a6c463243343134367655424944724d52466458637a6a473258785848324c334e354f3465373542427246714f725849764d63634531756b74647673576b324f6c6f69767a56666c7452757842707561626731346a426c545061323365464477794b62625459365467726143714362655a414772697650663563576e5968776a4b54643637375a75764c66355466387a6469422b6945522b50346f4f6674435335474c72737845594273317a50546f61726c4f43327975456b7432494c345344676d7677563975594553324f4b79796d495646536b2b3541505a6967337a6d57365469734636784b365149347034587a64484a6447305979446a4e426d3275306e5a6a5358354c595a66715530674853794f4c766767414f716a653555586146786b727046734b717164634d554631697238316f444556437832702b57584a577156364c4f436771497a497856397554716d35646a45746d703538496e67676535417573633544776b737930334c766d594e77584e756e55614238716f424d365a61774f316379554e47397552475a5035725649584e5753513751796e356b6a31486767732b34466f645a782b6e4e4a4c66534a6f614b32473045694f655a344b36473374794e49696e4a4252617547354b7136566b50324b6b625941757757714673784c3446424c39735872557252774f43385a4e77573455587470346338753165486d584c6f424d7561344b42526e5541515159386c45436d424a514b365930513145644b445a494478644531785159487351356f4768634e75516d4d5258765854396332385958686568344c735933423334726d327263723078626857556977484e65746e364465334f3374575a6b7662776e6b333665376967343934477a365a61482f6375536c37714c6b61645061765865722b6a587a746f6b4e6f73785053446a784b38697a4941354f614e585a5368775447714247716e306e464b4256516f426b6d46634548514e55425a367149536f57527167484e524631475151493431514f4b414a51656d3941682f546c4c75573764485651565762304b6d304a64366e7539754b766e4e706157663271675731505264684b7137642b416e46786b4678384b5672547558583238784f414863673578365336614d657238302b34744d35437a3237684f546f4f6750434b6c7a77543233315037306c68694f6c50416b39512f6567613942306b43637365437538575042553639525a42497959504b6c55742b59694967667652467a4a5a723177545035494b703342357568712f556d5036566c6863506e6d6363466f3161706a67677342614b4a41696d625564496f717a4a76795157576a56634c2f41436d44584c552b4d5a66417275324a4f754a2f6c49306d795268312f4d49504e456151706b6d3165394c69676734714156717056547551516330575a4254565241616f633054795564384541374d556356437a6c42694b59494337686967315852664d6f6d7141794c44536b77547a6f6543524243574b4b6a4b4d67676f67416f4b714d674a514952414b6877515351596f4652733052785142526b63437476702b786e75376744552b70412f7032774f374c797041592f7358703465587434697a61476c76467a4b797a7643314b4e6d464c59344a72306e35456f486e75326b2b4b51584a6d6f49645a4a507159354b735551644f4e79556351717a634d69334644616b7a692b4374755678717851566178676753586f6e72413654564d47306a5456416d69723471655847644a69716154784e557359315959635546467978356c54677152746f6b736346314a786f2b61706c414d596c426a684363487251594d7264633246616a366b73707848374673737831654e416b5a6d70346f6566496369744f3159794d4467566b76644d793247614458626b58636c364b2b4d7167696e366c7a49587a626b426c6d563149456d4c6f4c48716979795275454671397931474c42685630414e4b4b57722f6c3444444a4352364d6e795567787167713333706d313951423178454c76366f34767a346a6976482b70656d33746863305861673453474258714e39634e69344c6b63423865316444643765333674746841303165413843672b6459347143697333566d65337553745438555379714341785046414646796f574f61414469746670742f3766645772684f6b435166734a7238466b77526a536f51622f576248322b39757747447547344771353773757a3679504e6a59334c317557326c2f4e43685848596f49427855666968326f73635541595a6f754643585245637a52423250566230445a735759665247766175502f41416f796d355a4b67676f695136457131434c384541314a69414b424c6b79466355444e37313276522f5652742f36567a413445354c696173696932534433586c78334839533331426e595a705274744a65576553385a5a336c36774e4d4a4541354b2f2b3533386967395a4f787165684757474157652f6573574364636f6a32776f764c793951334567786e4c33724f5a536c6a564232723372414469794f3963712f75726c2f787964555a7149446734396e5370755358745150547643434f6e676f376f434d43795846795555726c365a6f474a51706d6f3376525a7149494b64697374795959396970485572496873554732784c54574a596c646a302f6450496354346c35324a44344c667437784a456f6f50556e726a37664e63766537574f34684c554e4e7a366633712f613377656b2b7756312b3243615a2f42423475375a4e715445594b764e656839523277335131697334384d3177634b437142524a6c4e534f4e456f5154745263733261674f53444632356f50617a413455397935473939536c45366473634457575063507a57432f7537753459544e506350637154484f4b416e4669482f46534b44667152496667674659725a5a7641447238493858344c4b3549346853594455375548634671326178414c35685861576f3243354732334a734d4a46375a593969374643484a63494f6436704272546336726d3761354b31495868395074386c3066564b776f654b7832494355644a6f2f69374f4951657332336c7a6871685547764e6b547045674f2f7656473176324342617445644959445033593936767550454578786a583830454a7277564e32424966384b7252526e487a39797a7a6c6a5367515a626b574d5a774441552f65756a626d4c6b415175664f33556e6a3365337a4b7573454f6452692f616731476a4e3766425964775361412b33795851756a417877347637634667763666716b33624c4a427a376e5254342f6d755a624268654d44322f6a386c7633653573773845764d50385035726a544a38597851656b32384b5049697558747a2b59566c737a7478306b4f426c6e3365335970744a4339616a6348553472322b775639304878677359313975534178496c463378564f36324d647848726d78797a4b4d3453665645732f753750624250397a5974683778302f7334494d64763050622f38637a4b556e786a5435726152732f523461744c45354f387a2b533565352f79426759375749412f564c78643342635737666e656c72754856496f4e4f393953753736577134656e365970644e6f774250692f4a596f3178527267676b327955524e4d46484b4141634565314676636744785145496d75627059314e4555485932763951434b3153674e4a6b35344c6c2b6e336d6d49597575764a343143444a63594455784f6456794c7a4f636c323772694a4334392b68375546416a6d68464555554661424141464764544a51554b43364e7a54414155497136396673647862336c714d6f2b4a6d6c4867654b38594f61362f70526b354d51333851784344306b59705442787147537957623839586c586a3176546d467171314b68414e424a31417332615735746f33756a366c5a4a346b5279644c3574535735494f4c7659537341686d31426349784d614d7654657033394c776c562f6776505872786b5851555678544368516b6961305141564c49675a7052537147614332335a755835614c5554492f70694850775855322f2b4e622f63736447676362686234592f425a64687572396b6d4f30667a4a357844793741756d505476575055476a6431694a2f376b6d48752f5967742f734f7a3264643975682f4a617866342f494b73332f524c5930787333626848314754503770442f326f6a30486262542f414f393355492f7757366e382f7744306f6176517242307464764e3957412f2b443549466836743662624c773251503830332b594b55663546474d6e7362537a4544446f636a76444b7765732b6e57502b485a52502f314a5038784a4166355065747639765973322f7743574e6667554250725872462b74765670502f62745539376669733132487246304e4d587944796d6e2f4150784a366d532b756e445248386c564c3150315863476b377638416f44664942416f394339526d64586c5437385570394a395274476c71344f797679566f48724d6a2f415074482f7254475872467248376a6e343045675057626243493341622b596a386c726a366836364d72762f414f682f2f56584f6a763841314e694e64373379546a3162314f31587a626e2b6f5038414d494e452f7744495056724a2f714f4f55725148344a5a66354c647566387469784d385a57362f4e562f3841346c39536a6a632f39456679567638412b4a74784d4e657432727638397638416167483930394f766e2f794e6f496e3956715a482f706f456832337056384479373837524f5679442f7744744834706276716d31334d4443397459516e6c4f7a3074335a2b395a37566a5a584973627337632f346f764834494e502f414f48373836376164752f45562f70797237697a6539636d37616e43576959306b5a6346766c36666474563239794e78712f303564587578566e3936766b6556753478765147567a78663768562b3142795648616d5374766d457076614245546b63767a5353344941464d4641796d4a6f674255484e513470753141475a41714f7069676856326e7a4936734f4b7043767345486f6b4b494443354b79616356303766716347367146594c6b4d327136706e6159394f4344306c723161304b47546a696b762b703270426f347269574e72356d4e56716a5a6a6270454f67477157366345305775416f426b717474487270516a7557674e74775a797769442b614468376d526e636c49357167424d5335375548515148686767654b4e6345476246415178576a6237323974662b4b5a484c4a5a32553149505262542f41434558414962762f774453526f65384c725847614e794856452f554b7277776f742b77395575374b6654315733655544675548734956725855755a2f6b5a62615147477135386f72667464315a33647358724f5031527a42584d2f79647a61736a6e503845486d45597555694b434f6f695478376b41484b436471476445584f534c3549446968464b4f574b614f4b434f52555972732f35484553767733502f6574777564374d754d2b4b375871556a4c302f61536c552f7742574c396b71494f4a6b69426b56506b6f4457714146645a2f4c394b34655a66384166706a2b61354c456c646e31426f656d37534f5a3832582f414b6b484654456f4f6a79514146484641714d675a67464e5443696771576b694a434c6f46424a6f674d61347146544642487954774f6b304c56536b635643454858597a687267637669736c375553367073587a624f624662656d347a477141574a336245544b77532f454c645a395a337342566942797757614777334674764c4d577a366c66356535482f41435777333667522b6144766254646269386636733452346a39764e59665664744334393630305a4471504e6c4e7275623877776949446a6a376b62396954655a4f5a6b634e4e454232426b59516d5a476e75504a6448376d473274472f5077327871376548376c7839695259364d496a552f4a63763158314c376b697a612f346f3866715046427a72313433376b72732f4649755657774368346f48745154454f72524e714b6f6873457a6355476d31754a516d344f487437664e61544b47354249782f466333422b43737433644244667551583354705432376c65797054307656564d6f73546b6732656f5438336447364b41682b396b2b7a6e4b506e58485a6f4e373158764a6168626c49553873664369414f6e61796d5071496833437144464b5a75455269474a70337236447472454e726174324d6f427538314b3862364c59382f6557337149663144336674587335534a7846587a51586265666d534f4c424e7130535972466276655475594436626e532f4d56577664686872715751586775585a4965437132743858446f664c344b2b6357464b494b54513071466e766a712b43306944466771627365442b4a42554361756c6b4871453042714f6b6c32566b673142676735386a317948417173744a6863343470393052397a544363492b39586554356a6d4c6436446b376d786676573276523836475534654b41374d54324c6b5239463345356c682f5466785370384d66677654533275673634302f6c4c4f726f776f44504c4a4269394e32467262616f786379486a6d3379354c74526733746b6b7452376f6a677257664e41737175532f74795337522b715842315a656f475357542f414570534f50346f4d4f346159427871725958487077564c36734b384f78473349454d4d554851684d5a713177344971566c6c3052663841656e684d6e484a42706b4b3848556c4948336f2f6b3671323874514538705651656638413875733672646e637879506c6e7671506b70365844794e6e43503154367a2b4333663548613833302b663841444b4d68336b44385373567336594348364248766f6765334e395563346e55334a3154623664324456706a5279646b49584e463458413336435034536633705055516266584373597a31643451623532324a476178585231523756756e634d694a35454c6d333368506c78515850347456472f465a6474316441792b4376334d394d4850425a3970314857426d677575577a632f70696e45756a483071784b6f42497a655753785375542b34737750684578376e46663372715835584c307a596757426c2f5550384951635831505a7a4245345261324435636638415438567a525071597231396979445a304e684c56385635472f4152755342794a5156677468676e74584e45347a494577432b6b3446494f4b5969724371447232665837766e45337571334f686950702f6c37506174563162344534574c4d572f72534e36584d4c79474e537664625552756662785030323479315a2b48424254366a487a4c316f4436543876327244765a7968366e626d2f316753354f744a3373526f767354723139744373572f493346364e30426850532b726a486967376c7950384135476f343446632b354945317964626476495862596d635164506573526c31456c414e722f557561546746746b645053666373746a706c4b34324e4564764b56325579426757373047794d704b3047716f6a5442574563454732786578475277566a67644a78574b784a694857693549526d596f4c48425544526e587656416e4530775138776b30646b48474f356c73376b7476626c3148714d382b4e45442f4146547176534e787631357242366e4d6a666a534d5141746c635451464262454346494e486c464335546d70435459316456334a794c573441796e7748743830436132496c7a77346e4a6c336470596e5932786863496a452f6a693679625859446166313934786e6a4341727056667157386e66476e41484242782f55623844474f3274314554714a58456e346a6b46314e364247656b5a436b754a50466379564b346f4e4f77336632397a6a42642b5453454a77725277764b436d4f5337507076714f676558502f535548587358377a6d4a69524846644b46795559346c59625734684b6879576964324d49366a31636837424252757267746d553643693870764c357654465843322b6f2b6f2b6249786a32636c796f67366e4b43786e71724c4d42464b5a4f6e42596f4c4c684f4957375a79454e4a78447241514f4e4f616133497750547864423658642b6c626666323951506c336348784865764d623730712f735a4e644854394d7867563350542f5564636f32352b4a3133357974336f2b58654771457149506d307358717069765265726634394c62447a4e7231326966446d46353659514b61497333745245566f4368687a51547354616e64714b4536634576496f497a73324b3952366449666252417152717032727a64714c795865325574464269677a6279486d4f5758496e48544a656a3345446f3153414656783935434a4a6c4842426e457a48444869724e626d70466355336b585957764e3048524b676b3144324b6e546967756c596c414351785375384850735562637a62464d46483164774b4362694f6738566e424243364734687173786c797173555945646943524d6d314b596867725932783956566243794d57515677744842317274306f506a6d6c38724e5877674155436955637856734d56683363796559585261727437666d755875346a56306f505337452f306f39675857685163422b61347578366f386d3746324c5231426868564177495968632f31475432394d76726e47492f4e64436a385668336b65717a442b4a7a2f7043445142714e636c6f6473634656614f717566425051596f4d3932486c6c355a716d345133746974556a526c7a3931716a4c6b5546446e7a52456a737a57694f366d4b524e4173776e2f57484d7374387251424f6143573933705a36444d725a6276323734315a4c46354c594a426230467767364d37635a6a735378744e4a6e51746d68644f4f6f67487351615979397946794c42754f4a526b484e636c5863356f46496f34517345786c5841714439504a5141675966745162444e3634464c41555a3670666969415544796b49347054685648537a71476e6878514c706f2f4e5a373074415a614a416b4c4a664162346f504e2b7061726c3458705a5a4375433665336564714d7a39565735465a5055592f307a672f344c716151476a394945573530514e5a747830344f723664367231675545612f42577845674139454674754f6f3179433257777847537a774146545661424b6f51656176512f72586f384c6e7a564d744d5267723932663841794c334858536e384b797a6b534b5a494e6532414d546768654a62704642383064724952706e6e32354a62707a793449414f734f71376b64474b61334848556149586f36616539426c4c36734b6c4c474f6d6f77644e6f47484171566b584b446c3777695a6372732b6858502f466b422b76384142636a654552646c3050514e55764d66774e587451646d334f59777856385a796b5756657172444149584e31437a4457532f4c38475158786c54465049686c52613133574a36554c3969354d6442486567352f716c6d4a455a347968494e7849577777623976466358645735486432724d334771546b386c32504d4f6f6c6b44757a6e4e4538465748657054774f6f636b4430704a466d795352415a47576f6d71426d4a35493143716b306156563853344343324569356646544771724e61384662413659765641726b47695945414e465271736a34554250515853546d63546963453270716d717275757a672f7551597430586152717375306e434d584d68557638416b724e304765575842593976734958704764335671667047455751646933756f7a2f36675075567362774e5a594c48623247315068697a493376542f415073794e75636350306f4e67414a654b74316559474271754b4c2b36325a6538504d686871483756756a636a666a47554f6d356a474a6f345158735a74484e31346a3157386478764c732f34694f345558737264384f387778486a344267363846493670536c6d533644713741556c79344b364d5850616b323064473144566c4d756a613178446f4c354277332f7157576349526c576932524f754c53784f4335392b77424e6f794f724e3047675878435439775861744456624568776f764f77467439455456645830365a3035302b4344634841666a6d704c6b694a5945705a444d6f4b3577397a4a4b384f7858546b4431534463465872304470392f42414e46613153777a634952756734346f47625351507069354b6b62494f4a39365533684b6e7654656348596f476a434b457241726f7754787678424962743746446469394d5367722b31594d31557774366662354a2f4e414c386331426636634b49454672696e6862486570472f4573514d4544656246413541784b49756952706b68473441414f4b4a4766444641684a4266494f36385669765837692f6f745475414f41506e54386c3541386b417852354944696d48566967586d6f4f4b4e425241557778515170674179556e5370326f474f4c597146674b4945686c4167322b6b4854764c4a2f6a6a2b532b69585a39556c3836394f4f6e6457542f38414d6a2b432b6962693535634c6b3877676b5235674e732f58456a46664c3542756c66546476314e536f64664e62774d5a53666955434353674c49414975676d4b6b2f3068526967794139714269516f435648644247346f686c4d454d454541556448784b42325144745264304d464548712f52472b7a49794a7a52777663666b68366364477a74422f455a664e5337626336734f5344593570782f42624e7532576178786475595674722b6e51345a6f4e7436414f433555346d4a475472717a4773616837653959647844435278795157375871506c6a46714a6863723141616f39504a5a39764c793730547a2b61313362476730777a5150357044444243524a71465662496e48672f3766623449796b41615651517a5961654e467a376d346a624a69534363417464776c7561346535737a4677544a36507951614e6f5365724e793636454b726e37474d644a6e7a5730466f306c6967746961754170637878714559426f7554566c535a533150334642644357694e44566c796638712f364a48385336384f586175482f414a4b61576f356830486e58664a446b6d6947724a51316f67474b6a4b48676f63475148696f6f454f534359714571524c4b47694359493178556f705139794454366673706232384c4d56364f332f6a56686d6c4d6b746a4842596638572f2b37492f676c2b4339546d3253447933723370554e72434632313466444c747958414a587366386c422b7a6a2f4150552f417278324b416b715969716a4f617150336f49412b4b6d564548434c75676e4d49636c416f3641636b575a462b43675a426f3275316c7570364966366a7743394b495232567652627857486132764b74436d6c342f4e4c634a5a39522f6c515072315448484e623573314f35632b7a573433444d4c64634f734f67797a6b5859597043346f6e4f424a6f394654474a4b446259756746704231736e6b35376c7a524a70436e73563034523648722b6c6b464d51355451384f54716b5850366b6f346f774e534d6e6f676163693746573237596f713650714f437345534d4d2f624a414c387572534652634c5934712b55584c39367a7a674353533334494f6663494577433746646e6358527439733951614d7554754c4c41396e78433648716b2f4d3256755264356e35494e477876435a456b753664324873466932467a72593555577a66544771446345475079364d74653233424d4e4f6375504a55676b784f524e464c62514645476739456e2b53304357714e63566d315944444a5045474f426f6731306d47474b617a4545666971625a6359476930572b6d68515a50555749726c58334b656d3374454e42774236547856752b674e47724a59374236534547582f4143625a4335416279336c305850774b386f41586f766f6b424863326a6175566a4d6163463450656257657a76537333417869666878515a7a5254456f674b45384541696a49756f7a71596d7144727a756566365457707433666447512f4e6364645830732b5a6133466b2b4532395866476f584b41794b434d395565615645426b454656486169626b6737596471436469676b77554c39366a4534494870454a61494e566c4851534d654b6968346f6f417a35496173736b6643366c4d5541434a64544f7143416b48454b61614942455577785152466d6f50657046694b34714769414d46416f5a56557137464163516d444249536f6572745153543549636b784853796a415677514168444171414549683271676d61594771414442776f616f4869533337566643556f5657654a786b72596b594242313972664169443951643132397663315931507a586d3972646a7050486d46303970636c45422b3942723951732b5245626d31545365755049727a6671753246753572746a2b6e4d43543838313750623368667353684a6d384a586d2f57746e4c617642775944716a336f4f4343454855596842364d674a34684b79626b6c2b61445a494549524a554d6766467755694f6141527851695353596e4254784236635551346f5542385068706b556457504a4a45484a4d5a45384b49414e56424b674879585932563058496153584d42377775504b3454544838465a4336624a387932572f6167326570796a30777a506573594a4d756f354e5467465a646e4735494876565476496b554343324d7046713143325750564c39716b7a724838583446633448525556544351774b4430587032396a75347a6a423346476c6a7050666b7456776e36714f653276743846354f424e755775424f6f5a6864666165726952454c2f41507577392b5076516253474a66344c682b7357576e47396c50453831364f5a30317747575874374d7558366a5a3833627941726f36767a5165666b4b31554163386b4731594a6f34647143616148676f656f67483243686963637330524145317951646e30533451384a5a4e4b506575764f634c59367977343565337379387674393339766338316e4c537032725075743164334d39647775543775354231393136334152305767354238556c78397875626d354c335336705251544e6c4e4b4170696d71616c4138374a67427a537774796b57416457446379646c7074626c3767754667332f414d4b4444706b4b6f4172726237316539766f2b51414e4a6c54546956797052307949495976676769676b357256536d654b487a51542b5a457847614271464b6f48737a6c616d4a7878433956744a57393162456f35343971386c4945314336507047394732754e634c577a347332356f4f356374516d4e4b356d2b324c435241773936376c7535747273646471354167385a41483346696b334d375549363554685166713150376b486a4b6a4641384538324d6a77536c42486b4d4545585a5446424146322f526848544d3877467853475870646c3546697a4178366849744a2b507467673137697a714f723668676a62764d64456a69724958425071474b7937365636516c4b30656f4d50596f4e562b526a695069466e755468434a7645556838386c6e3233703078313767752f65756636746668436632397643486a356c427a6274307a6d5a356c5639693734394e3950336a79327535467554426f5861652b5278376c6833666f6d3732745a774a6a2b7148554548503756472b7042694378795231494249474f4b47614c484641304b447062623157657969427452474576716e706552392b41567354366e367052376b346e7445482b537032767150327476524331417a663841354a523153566733487158715249675a7a427845615248756f6731442f483457657265376d336248365231533933373159492b686259735463766e33442f346678564d503858334947766354685a482f414d795758642b4a516c732f533971663632346c644f59745262346d6942783674734c4c7973374b4c3466314a61683769436e482b57333751303272567148387366794953523952394d7379486c62517a497a75532b597145747a312b30442f41456470596950346f7566677943542f414d713335384d6f6a2b57492f46306e2f77434a66556a6a632f384152482f386c58522f796d35416630374e6d505a4439716b76387433706654473348736a2b31426d68366e367065724764306a2b462f77414577396139553235597a6d5035347638412b344a6a2f6b66715a482f49332f3575503549662f69623145482f6b636334522f4a41502f77415465705965622f36492f7744354b4a2f796231455646796e386b667956772f7937664439422f7742483755662f414d586230663841622f322f745156522f774171333438526a4d4839554238575a4e2f2b4a4c6b71584c46695235322f326f532f79573563726373574a667a57332f46512b746257352f7a624b4250384574487943416a31543032374a372b7a412f5562637950634b664e55334c507075346b6674376b374a2b6d4e324c6a33687a37796e2b38394b765575626164766e6275616a2f36714c4c633256693658327432682b693730792f496c414c76706c2b3131772f714439567376387172486475547546356c7a6e785635322b37326866544b4c66554d50654b4b6937666c644c7962567862356f4b794f436a496d7168446a6b67456736696d43474b42744e48556442516345426c57716a354963696f5a566f676d4e45525171436c575564734547765852754b716e4978535735565a50504c69677574546b2f6374735a36347563567a486c6c52585275734b6f4e7374494c733671395176694e767966716c3153374d67712f76495272395666324c424b6372684a6c695541504a51494d6967444d70696f796759494965436877554e554157514d4d564b59494f455367366e6f65384f31766a562f787a364a392b666375682f6c4574486c5733714e557665764e676642646a3137646a63537379482f41476f2b383151636274555565714b414d5169554b7149434b55554c49554b69413831475155484a424b47707858586e43567a3071456e2f414f4f394b4c6370526635726b7575743666474e335a376d306645424737487369576b666355484a484e444f71494c71494277585939586a70743757412f374d5433794a4b34793633727730583432682f77424f3362682f36516735576c7356456171486b6742545144705863756e726b676d707854424b4a48444a45466b7064424f52524e5252513830427a5152383830564e4b566d356f47354b79336330794842564b4f364474654f4c2b356c62735a3771464c637749634a56584b733775567361656675585a326e7164694852674f43447057444f546132636670444b36647353367045716d507174694a654c2b334e593978366d4c5a316c673245654e4b494d2f724e333765417452704b66564c7379586e6772723936563663707a7154697163554453476c4473515a46424479524137776c7a6f692b4c494a455652714d4d45414e4e557a4e56425a596e706e7843313341434351756537463171735843497365784271767950323169514e576e6a326f58706a3765304d43544d2f6b6c6c31626133796c4f5079533769657252455a525164542f47725231585a6e4552306539656a6f52546b75442f6a783057446b5a54393441586367527230796f4546472b426e62654e4a774d5a78376c317476656a75374975514f507a7a4378536733544c42596256772b6b6267786c2f3976634c762b6b6c425a724f307651447378592f797575354c4469754836324261755176665449615631374539567354476142626c44775333496d564d6b3977704a534d6767783639457a7177664661486f58564e345630383031715138736471444a75365473797836645075563968764d714b4b766457682f536b7a2b4c3434495031755067673379674a4b6b775a50626b2b43655163676f49305978702b3953416f365a2b444a64517a43424a7931476d5264476378627445414d71326338754b6d366c71674944695063677877415a6c626236673261725a71653561495144646943585a4f474861727476476a38614c4b4875467867466f6a653032784b6c55446271636a4879342f56696634566645526a51594477725074356133756e7369506d744838587345475431613372326c324563644f722f61584b383774722f6d774d76717858714c30524f334f412b75456f6a334c79473346496b696b71557a5a4266666345534644383039326571334c4f4d786a774b6c794f715572453331517a77634b693149435572557964506866673644547372757533704a714d7678576264794d675244464462327057627074484563302b3438626e75515466544c44696d32567332343556716875394a75526b63426a3371793239746f7878515a4e31633875555a5246524b4f6c64754d5243552b4d35616c79626c73537651426f41524a7578645752364e5846412f7073784f516c394e7761543736466553395673697875626c763841695864324e337939724b542f4150483833396975662f6b6c7474304c677775526a4c74516369754f4b55303755644b584473514d57594f4f2f74587374737773432b637255596a746b7646475339727433473032384d48416b673568654e69497a69666d746e707374646769565471366e5748647662316951776b2f5936312b6b4e35636f6e485633494e65304273796e617847725746527544355534366a5356506374567a70307a77495754314950485854454d67727633664b675a6c787138504e614e7471745749334a47732b706c7a642f4d364c4f56626c4d634d46717453496843314975414470516453784c707237424e476c44674f436f6a63634e4a4a75376e6c32744d6648632f707737304532393878684578636d5570653359756e355a7049316c37594c4659732b5441573431306a357264426a6148454641685956624e41394242566746475754644567494f526574776c653877316c436e49567856675a334e554a7472356d6e4a4362527167654a6e4f344c646c745a2b484e64657a6274625348522f794878537a50374667326b525a74475a5039573557523746544f6370645751515737712b5a48672f465969576e714a7754547536773539796f7654454c5a4c566c52427964784e7a69354b7a786b7754585a4f615970524c6967444f704561574a7a554a4177554663554773585a774a6c4352344b584c74793447317949344570594456486d6f594f34784344504b47614e767863552b6a4a426d37304263346f534c597147564f534f6b4d3346426268544e4a4f5648554a657553716c4a2b3142303970416d41766a704d44306e7358633264337a6f367965587537567a70776a74396a4745764863592b3961396a4d7774694865554863733344487847693458726e6f304a524f3532773668343438656635727257705964697674797133306e4a42383430755755656a4c5a36767450744e334f32486278523744374d73526a71715379413464714971674b3043566d716774695858704c6b4957376c6d49474d412f7346356755726b36395a4f477470794453496967532f4c43494335472f6b47594c6f586759734d79756475692f6155485439526e3566705733746a416a56373135344134476f5859395870743973502f6c726a463266446967654c674f6d74687971514d6833713679474a7751616f794d725a69632f67706f654c42436f69384d454e65696f7167614d50306e3372554763616c6b6654327132457a3475504642615941436e44337131687866344a496a71636535535452616a396d4341546b49436a75467964784c564e644463545945414d5078584c50564a7967394436624c7042484264697a4c494c6c6247327747564d46317245614d36426a51315850756b7a33646f505349314c664b543949574742666579663662564f53447057614469665a6c4c6b796d735648424755645641677a536e56734652666944416735725863437758496a69673530395675596e2b2f386c326476646a65742b5a384679743247694e4f4a6c5873577630364f697a47544e2b4b44666f7a7a53732b4b736a636a4d56526b596f466a68795674746a634434674b714a796f7272624530516142697172683431664e504441354d71707a4950556757584a4e46337170624431556a487143432b4a316336725270624e56576f764769763039484242544e7662696a715a6779596c4277634b4945494c644f537a585969574e466f3145594631546478366b48463331734730546c6e785a483076586374524d6a5671502f437264354458626e42735156543656463976446848562f376b48536a47494c55376c6f747849795641366643723476707269677677374d4661476f4278564e736d56535664417579447a6d2b70764c773577502f707173306156792b537639514f726558694455614238466d666c696731376361515748346c4c656f4b55716a5a4c486970646f6772746d5264714a5354717165394d4b636e564e79525a416d6b6b59352f42435937454a56526c544230484c33517278586539464d545949682b725637386c7739785752646250534c7a576a6142596d5749516471642f57576a6c6932524b5341675a43636f67384b4c4b4a6444415a3135725a446b6731776d4e545a72514136783279335556614c6f49643044377262517678464f7150686e6d756441796853575853523856746c76486351707a5765385a584d366f43444531526a6b6b747a654c79474374676452354641496a6867695270554a594e67564147434153485579304164374b68383264615977614770424e494b49526951582b534a7475674c756f4258716f556746586c5570326b2f43767751535130314957652f4e6852574757734f63467a3935664c734d6b464a67626b2f4c78342f735777574e464433636665736d7975366259654f6d76765856746b53646b46456264484652376b317552323977573739626376424d6e5067665a6c6664735275524977504a5a5a774d2f2f4142747a5554776c326f4c4e355a47497750544c383167323176376d486b7670753270644a484c3271746d316c4b57765a33662b5348684a7a436f754479376e6e7835526e32484e4139767a4c6b7843392f464856786f56346d335a6c4d36654a5a65703365384f78383355784a627931772f534c597662714772423952376b4851336738733237554d4952366b6c6e77397550464337636c4f354b66385270324b574353677568486f344d7562656962386e6c6975726467644a5a596841732f42426b3867524c594c6473393143314c4769797a73672b4b722f42566a62786438475164346232302f6972376355307433413047486175454c4248656d4e674478316f6732543952305361516965665671575739366847635451756543413262674535704473416344336f4239394b54415973726257346c54566a2b4b6f507031794e597336714f31765146597962735164545649347070453658584b74376b786a314c566233314b736730506751635170475234313470664e747a363847536559426d676164365a70777a3470764d754f777856557041314653365364306a6b4367315133576b4d66637242756d4c5337317a39644f4c344b7333394e554861686631486979734734464b72676a65747a375078512b3966757751644431532f48796450366d6275584179567436354b354c564a4a67676a4d6f617152414f4f436d53414e524542314e51513755453755575a414a7361494269706b2f7336434951573765526a63684c2b4946665266553773626c6d566b394c3031484c6d766d7353596b4e697658572f77444b4e744b416e754c552f4d774c4d5238554856394a742b524d77685058453951664a65433359613963483863766d7656532f774172323173505a74793135616d48794b386c64756d3749794f4a4a4a373043474c49416f366a524134494456307870584e42335542314371434e57694172696a686a69704c686767566d37564d464839796a4f485154464d355a4442544a414d61496731716751796533457a6b427a51657574322f4b32396d422f5438537162512f714432376c713347567335414b69794e56386734664a42724559344a6e65736b5161397965456b47697763586f79532f5a424439366530474e633039793244674d766234494f584f414876667658567433504e6735784873367733493654676d73584e45324b43793457384f53704e2f52566262673141734b4c6e58374f6b4641766d537864315a3559755162465a2b5573567174514d7165394267304462746150694e56664b564132615431482f6e7336693144712f425153426f67314d424269336171375a4d7061306238394d576170436c6f41777163554675475078586e50384149726f755859687a345636493577776f764a6571336f33626730665448543368427a38614b59714f697941496e476958476959463041495a5245636b4256424d564b4f706869703356514751717968716c5a73555a45397944756634784d6a65365031526b4238313675355a75554178586a503866756558763752504d65384d7654584e2f634e78744a4e5434636b46502b544178325142796d506b5634734231362f31712b626d786c4365496c45732f6376494d315545487555632b3951464d3479514b69666967376f4d4d304445756757645442484e424d6e5457725a755445426d557561364870635162346c394d656f39794471376774496a4964493741716e44636d516e505654477548424b484b424e71587553443555585363594c68776e707555785858323236456f766d4f4b436d35413976344a5141567075514d33495075564f54384d6553436d374a6e306c693361756a7362732f49466f3159752f463179627065347a4c5874376a666967426d3178343565497252627566534469714a7358596e696a4772494e735358595971324567474272493435724c623669586f2f4657516c356547507a51614e474a794378546345785078576d4a31436f5757374a2b766767667968636730735566565974746f5177306c5074773437556e7138577452694d64546f4f66745a6d3349486765706444645858384a7267334a63753378785769556e49656944564553465268373051654e475763454671386c615a506837636b467a6c3379576946575a5a645270387543756a7041707851616f4638635062397974686d545656577a6f7777563861387632494c4a776a6368704f5930726d32596b436234784a576d6376747737305077556f5a616f31422f46426e32573431644c755069736e2b5237493769324e3544714d4f6d665a78564e75586b584a797769626b6833636d5862747a4572656f683479476b6a6945487a3468416c367264366e736a733738725a384a366f6e69466878515232524c354b64714571494f6e364c496a6477697a6952305379704b693539324a74546c4130306b7834344a7476646c6175786d4d596e557448716b504c33567a6e49793939554746476e4645534f436e61674753595656336b61626362684e4a4b697143616a376c4b594b412f7551634531514772714574696a6d6743364174376b4377445a6f486d6a717a43416730515a4146385551574e554155786b69376f596e6b674f46455a426977514161705245694468696745367161584e4531554d5336414576324b486d6741703249445842466b4133656a475341476d43685973796834714f674c4b4f34517855515370436544637945734d655359644a6f6767617078546c6a3370464d6b463969363068794b37753368356b412b4b38304f6d5435636c364c59367051666b6732375335354e77532b6b30504a7331723956323333653070346f59646979577262537238563164764b562b7959535a7943485165436e73626f6a356d6c346c5679323979454e5a69644a7a5861326335516c6f755959486b7a4d75314879377746713478656d6e42304868744a41636f5a72306e724870666b57516259774c3978586d334c366330476b674b554f47495466776c4a704f475341674f675151693254555577374542595a347152434c76314b567a51416330307561585758706a6d6a57565367654c416d6834717653413770346a536138454a6f437a41426b4e49474355397a493654394c4944466957526e306d71456f36716975615a3650386b486f665470787637654a6d616a70506467727078314150345347497a574c30696269634d6e6956304c6a577575346450746767386664746d7a636e6242384a5a306f6353376c7239543346726333395670384248744f447244714950416f4c41475347544f44564456785368424744493161696834494d67422b434a4c59496a71376b487a616943414445714277614b466d63596f76527345445770526a4f4f716f4271756c764a574e3375347832725273794d523457787864637644484e577775655831786f5268326f4f6e634d2f53357a6841317245646934306e6b584f4a576d2f356c313978637a4b797377514559596f396e656751314644775154444651784f43687752355a6f414f534c4d7067656144366a52424751624a4531514a79514549415a5a6f754f4341346f475a304d614936733070346f47715631765257766b324a667a42636a555346647462707333424e3241783745487368434d614432393653467479515337354c6d66634735482b6d352f42614c47366e4732484e554276585a616d7a5a63626678686275534d5251743372714279547a585033593168426b7457493370615a55504a6472616a65625668744c3069477043353466784879574430757a585849594c76326f6a4671494f6665336533756c76554e73307a2f414e573154396e785757586f316a6431395075366a6e6275394d7666675636555344615a645861734f34394f74586570744a34786f67386c754e726432307a433945786c683763556c73526e4d435230676c74584264766633377471324c4e32516e444b4d6735413467726977694a54476f74456d7034424232626534394c326a474d4a6269352f46307839326161587250714f37476a62524e754c65477a483855734e2f734e694164745a383236502b706477375248354a4a6575656f37726f746b683849326f743355716757506f6d2f33557464304d2f774256325466742b43302f326a59626343573733514a2f526136766a5834674b6a2b792b7162365771635a39747954664d75727637583664746a35573733423830487146754a4948774b415333486f734230326274772f7853306a3446566e31503038436d794866636c2b536b6f2b69776b32712f4d635936572b4c46587733486f6341336b58702f7a483870684167396132554d4e6a622f31536635784b632f354d4c557636473173322f7744546e334d704c3144306932663657306c4a76317962385a4b532f774168323448394c5a57683273662f414952383043792f79336645303052374966744b4d7638414c4e30527075517453483855442f38416c4a5a2f3550647738697870503848375649663542626c2f7962537849636f4e3833514b50386a622f77445a747638412f6f2f326f66384134682f2f414c58622f7744364e5866332f5a79724c5957333751502f41494544363773694b624732782f692f2f55515666337262586638416d3264732f7744302b6851377a307138524765326e442b4b3363632b343051507150707038657a49422f54646c2b785456364c4b762f6b526649614b4941592b6a547071767750385169514f316c5264394e747a6c70326c3058762f41455339306c65646c36584f734e7a4f48384e79325366685255332f41456a53387474646866693330654e756355475755747a73366464743674673670755438797044533438567168763841633265695a4d6f2f6f75566f4d71344c4a634c6c34686b42686f2b7033354a4859386c6274794859716d5271676778526934514b6c54564158525075536774565241324e554358513163564851516845634543794249656941673171744733674a7645346e444a5a35446a696d6a6b67327932326a454c50636d49345a7173335a796f5336517963315147536a49497331454548795169704769684f61414846696d5a426e504a5241476445304b4a4a4b44494a45714930554653674859724c6c7956776a6b4753456c41484e41324b4255624e5376596748494b4b414f6f36435946467837314254465141456f426b707a554744496b67697141633131765152723345724c2f38747535622b48374679596772712f3436573339707339512f394a516377686e53753955303857357055467533694c743245654d684833725836314d334e39654d76316d50634b4b76306f662b585a2f2b70622f397756652f752b5a75627378395535664e426e645130555a7355574a6f6748616d424f476168775a53676f67416641716156474f434c6f49484b445651504a484a6a696750616c644846416c6b45306f756f42514e785177356f47634e6d70474a41636968543236594b323565456f6152546d677231306242567a7547356a32424367514c4943413646514672324e727a626a45644d524b63763949645a5367686b44676c424c756a3456454278554a795a6b43564f61426f2b39456c366b6f44705245584645424d684c427732434d4a4d584b71785479487651656b32336f397a656253334b4679414855576c787779376c6d3961394b6e747636776b446270453869722f7744484e3570684f784b76315235635676384157484f797535316832564b444e73784f3373344e535165587858636d426674693748777a4875584d6a48792b6e394f6b442f61747670317a79376b746e6438452b7133333468427032382f75487358662b5350682f4e563767776c2f513350315a6e776e3571587473306d69544359384d783869725075504d486b62754e546849594642784c397956757a633257344c78627a4c4d2b4943376670647a5874344f486350302f7358473962684f315a307a713272524959694c4c69773258714e69414733316d45343668355a4a4448737a5165373342686238556f786639556d56423364694e664f74632f3667586b4c502b4d622b2f315469495a76636c58344f5665663853335a2b75332f414c6a2b5344762b665975487075327a2f77446e466662677730796a376c3561352f696d35674f6d64755838496c2b7855783348716e70765231776a7a366f39324939794431313248525849724a4f6779584a323371473876374863334a7a6b5a322f4b30466d786c58446b756462396333746f76634f754f596e48464236327a4d6a675757753349414c686262316a61586d362f4c5036626d482b345a4c6644666259467a6674442f5567364d536b75566f566d7638417175303231754e79647745546351306833624832397977482f4a4e6a492f57782f6848356f4f7641645354656d6f3530584c2f2f4142487359794d796268356151467939332f6c4679354a7476434d62663851636c42364b4e742b7054636b517430714437317864762f6b746a432f624d542b7148555063575a56377a2f4a4c647a6f74576e442b4b637375775551646d77417830356f6275627a47336a576d6c4859373762583477757875524148696a4b51424861367039504a756174334b7337706c703552795164575146754948425751426c6a6773384875564f43756d43314d6b44327744327356354461577457336943503156722b706578743949445a727965776b3175646958696849782b4b4334784f3973416e2f6c68307575624f364830334b452f6775754c666c33504f6853583152346a38306d2b324d4e78487a4965493150627851633235646a71684c6a2f41457a2b31576b52456a47507343755866657a4d61753250623742644437754d787178514a752b6f36734b6675562b31756a534d367250756a725a2f447030704e76666b342f544641392b36664f3832654c397a4c72536a717339345847334165524e475856326b746469555a494f62626e4e727352534569436e3965692b33327437505162662b7843454e63357849727066337266367061383359795964566d59504d526c2b31423558564c424453796a31636f386b4273323558626b5952485553414f3965796c636a4d6b513846762b6b4f3249586e6652495075593343326d33475679584a682b624c722b6a584e65316b5a596d3749793734684256366c41447161684558376b7670557575637332437639516a2f41454f355a5052795a794d7a523436666367374e78744f6f354a62746e7a37656a3676703755734c3748793574586d724976454d4d4f4b446a79752b5a656a422b7133475a6c53675337556d34544a3665337a566c365973656f4363762b4f35306e734e46524b506b334a5776306e34484e4232594455476f714c4a473633493068375733663841336676566537334932746b786a57632b6d4c66542b3162665472483239694e736970447937366f4e47707365312f5a6c70327a474d6f6d6f5763783542586257514e7a5355466a76346c683351712f50425833794968636d37646c644c6a386b46665343334643394574704b4d71476e78565570436548694b43365677766b7a49786b4a446d73396f67457750695135786f67746b776e787a5850335539565468774330334a6b516c6e3072427548306369506967777a4e64536871687a554230467345445848485a3845427a716d774c71733151623972445862632f74563837423455592b395a746e4d676e35653156302f2b5472465167356b37596a4c705a565364714261376c76793954446d736b696758484650493651465753644f6e464b644c6830463069385879513231727a4a6950457052466854466266536255547537634a6834503873506967335862703345674b4e444c6b4b4c6f574c596a4555726d736b4c576d3651417766344c58435939736b47363363566f6b394a66752b617a7761504e73654373316c427850387173646471384d5a4276642b396561474c72312f38416b30502f414249484f4d32586b4179426e2b4b4c5a494f3942554b6471414f43334e653133497934434b38552b6e6d563761452f4f733237682b7541374843446e3769464f6543343562535365613946656a4534397934562f62547475377438304676715539646a622f792b3378584a504172722b7146724e6d47424171755049616a5241314a4544697445434978594c5045634d466f7352346f4e554c676b4241314b516266536557534e734732535671315175414f4750306f4d7069306d6d4b506b725957426372626c712f686c69746731786a706d424b422b437a334e7335456f50475134634546486c7a6858366e774b73317a41626e324a6a43636f483866334b6d2f4c5345476263336352676c324e6733726a5a4445716d374947545972752b6c62593272626b6455766c2b314230724e735239736c746952704a47436f743071724d55416a5a4d69354f4b3533706a5476626d372f70376c7433462f79346d63512f426333304553386d39503841556164794474775a75504a4d534b48334a4c517051653261636b45657751495959757356794962697434633465336373733251637664577862695a634f70624e7063316261334c6950785754655467306f6363316f324a486b57385332703047725365617548446771795341796d7574505a304677477069466f73556c4a2b45566b743137317032344c6d726f4e41384a4b707541546f6e7778564d7a584769426f517056534c5578376b4843756738734d4544784f6d4c65355841594b6b615361465179715167746c78716c594f79574950636e384f434375544f714c70667456383643717a7a78376b4744645062747a6e78422b53703948693230684848567150756b7176557233544d665542383164365065457470436e684d6f666967364d497469616c5839575641714c59646974506a63356f4768372b6176674d4f31556a5468785638424556396e516557335a6a5063337a2f41426a334256436248517965394d797558726e475a70384658776650686b6730576e4561385069704967592f7455744d514238555a4e6c2b31425634616b756b6e4854337072595a43354b6a75676f67327273556273566a396c4b766d68634b446c627a704c346c31547462336b58424c42614e3531645874376c696c3159494f39596e4763423731594c703034565844733344626f634630724437686f51684b5a6c687070382b4344705772353031536d2f31365267733271567152684f4a456f2f544c487448487557617864695a466e474c68423249534c7438566f4678365a444e6336315039693132376a5643435374365a3678525852302b394d372b4c425536526263555158596c52754f4b58414f616f7559696d43435778566a3371306546754b5345565a45565a41626665565a346971664356634b6476755148416c6b53656c6b7261692b43684c44327751556269344c59354c6c584a473563726b727431754e52306971726a4155424641677567424669466f6734504e6c584678514261594268785158776e356e4968546432686474536a6e6a4138434652636e6f446a46616f54467a544a36476f5a427970626758664933656269452f6b7264356368472b3330473238766678584e76376d7a73526374584838666d32346a4d484c33726a377631533975656b4e4750785a4176724d7a63334a6c50384154467663746e704e6b527454756b6349523754697150563561353235787071747750657449687073573442775a6452344e6b67554e687a78563232386267386c57374677746d32746639516a542b4342376b614d5039575378364765693333503668374652637479416b57415a426a30444a6d2b615977464346476244735451424c6355413069564d6e5478746a54337252474d6d6633717757514f434371324e6668347133794735766b72345778436f543671306f4543573745446a554a7a617258496f787249713852424645484e75656d576276566369585a745647375373467a2f414234564d4a2f7975765144466b4e424f474b447978394976777244716f7262667074386e5334433735456d3731414d4548416c366159556b616a4e57576654596b4455757663446838306c69483675644548453952324d64765a6a4d74716b666775526869756e36784979754148494c6d6a6f78514b464565334e51386b454d717146436f5277594641754359526f536f614961715651466d486167496b49675054494b4136616f4a32344b41756f79676355346f42517149736355514d3855414d6d51664e45416b2f6b6f5541504654424e4a4456526b454f4b44756a4846314f51515131556f67416937346f4a6b70516f35664a4c564246416f654b6943436944424d454545646c322f774448396962747a7a356a2b6e414854322f7358466a6c7858735038667561747235596434796b4f56616f4c4c3569376e4e4741354d6e7567526e584e6b38334245614d674d5748556e30746771346154544971335478795157524c565637676a55737869434666626d4e494449456e44554b72484b684a7a4b36456f7669737436416c3463654344524136323746546344394b6d326b426972626b656d7144486f49666c37666774567677563969716743664438717252723052624d596f4f5236704c5664682f43485362615a4c452f4a55656f587446337a507077523273352b586f3431516135544e79574e506b7273744d566d6a4d5738664566705432716b762b35425a656c355673335439497858693730336d536172314871307a39736548544663794e6a5a6d773079664f616d694d6a586e674548474279434a69585a6274725a747a4a634f592b396c4c31706f6c677834494d4a6f6f4f4b6165465569434372756d4746456a3855587a5154424e616e6f6b4a5a4175707951427167763364323364754735626a6f6a2b6c5559684643564d4544323773725578646a346f6e56336864452b75626d566150384177726c34344950586b677633472b76626b2f315a4f714839796a745252424f7846754b6e4e5446424b4e32494f694b554367356f446c524b55574b6772324941537531366662454c5249786c6e376667755462746d636841444572304537586c394d4d67496c425645354d706f526a563043474663454748777a346331644f37356368564a63614d7333775673336d474b44525a7667643673496a494c6d534a455363304c4f346c475162416f476c65315866624a624c64484561385858506e6365385a522f4e616f445042426251342b354f49366641712f77434c4a474a45436543433232654656667150686a697159784a566b475a6e727851586d546a714e6664525633706a535279564d70422f314b71553644746f67362f70395938566739566e31596436364f78694259456a7a5849335a314536545236494d317567725258616a4d5556555931424b766a4b587551474a303434712b475064334c4663364b796275576d4961446c42644134794f4472526244654877724635676a347531504337576d4344706972453563466f6854327856467147723831634f4343626d78357475556358486579352f70393354474d4a354e483846314a52426966334c6a4169325a586a6c34593853673566716c2f58754462683441576a2b4b376d304c376545542b7169386c442b70633153346b72312b3169525974784643306e375467677a2b736258377a612b5a4164646b2b2b50374d56354369397a616d7a78616b736561386c3670732f73373872593842366f39685159356352676f525242383058427843436646626656586c636a644a667a494358346667735147576133337a356d7a74532f524b634f36682f464267696a434f7151484651636c7032455235327557454f7633494c4e2f4d744778684748446973497161344a373134334a6d5a7a717177586f6759554b68664d4941714f6767594f364f416f674a4654555751544446414f6f3145515545714f7846395645496852414e4a496f6d415a41636b4b79514d4a63564b78504e41686a67705442415541586f554432706b4137454d6d52774b4972546b67474a7754526246306f365577443430515177617642416e5479566a676c5669495a384543736f376f67356f4d4467675a30516c63737949465751474d617145384f4b456742683730756c41376e446d75313656634a4f6b2b4566704431376c784e524c525852326e394f41306c6e4f4c6f5052327268694354576d6133656e644d684530645937647a56474a6a7739363237596143444a385167386e363166755739314f414f4257496236384447546c3472622f6b74725476353832584949716737452f3841494c303678416a4c6a6a3831792f506c35766d76314f37717350694572652f46426f63366b66453579554479775263776f67586b457a6b4d516b507954446d674a36537945706a4e53584a416a5469676c432b624a346b4473534d446969354a5949474e6178396e5479684674576154476f5269386858504641424b744f3546343530517232492b494d63454230784172374f7044714c5a4a4e575a52694f46485164583051693363753635414151642b49437765702b6f4865546f57746a446d714c3138786545446a3476795755494a5139716a6b715956544f4d45414d65434a6f6f42714c6f6d464f7841684278524b4d6f6b596f4546415477516452527373304578553853676451766745456f54584a57774d573571706c71326d336a664a456a58675a4e3830435862706d476a51667057664b6976334a4f72526c476c507a77564941644247795144496d765970467330454e454647716d634446416f524e4d4565784b43676c516f4849556452716f43455a56384b55566f6a6945454165755344354a744f6c4142785242424c546869706869706a52526b4674692f6374486f4b333750655063416d57314c6c676b64694a776442365758394d366367756675447142697a454b574e314b35623676454d2b5371334165707a5164483030394e5033727232335a6d5a63725a686f7450386c3172517772546767636b6161704a76694659635778504a5558376b59674f67354f34746a63377933456a7042362f77435850344c6a3736774e74656c6247414e4f786447784d796e4b636a70663546552b6f784678726b517a596e385546477733554e6d39325549334434524734484135726f33663871336b6f694e6e526262394d635065342b4334442f4245686b477935366c7572394c6c3263693774714c666b73706c717163557072326f73676d41554e4b6f76554170644a7851526b77774c6f566f6f513143676c464f584252683373685241485264526a7752423979415934714555515a466967587454323579747931774c48694d5541554d6e4b44624c314735634769384933414d3543767646566b6c4e7a5367536c31425642645a6c314b733439364d53457379354b42534b6f6c304752515441565571416f6f7a6f435067686b696f37646941536f6f416d445970514d3041715551455779554a636f497a565146455862464242455252444442526e5148464251746b6f7a596f425159464e6948552b616a6b4946434b424b59386b43746d696f6f666967687255714d2f636947784b7473626565346e6f74683563506169436b636c475674327a4f77514c6b5447584130565343416f305946544a416773674c4f67527755526b3642585579544d44326f636b42354b2f5a582f414c6139627659364a786c327373394648596f4e337132312b3333467950306e716a2f4b6168595175752f397732672f373233482b3642772f77427679584a4c6f4f6e364244587672626a4455666445726d796c496c2b4b366e6f5a306d3964774d4c4d79447a6f5078584b62676744444e455251786f6f5145424f434134685443714f4343654c73516446676f5973676835495a565263344b63304556323174666358495758386368462b315544466c5a597579747a6a636a6a43516b2f4d4942637453737a4d4a4270524c476d444b73386c322f384149624d5962727a6f654339474e3250666a2b6134714169696871687955624e424b6a42466e5565727264734c594d62317957454c636a33796f45466d7a2f70374f2f652f56707452506234762f537561415155336d7a45504c424f6e784e7a34704145454c41496e416f6c6e5a41306f67414b6778556f4554494d7751444e456a4949424e4871515134736f3378556b3261686f6553432f5a337a7462305a6a462f6776572b716c397359355330797077586a4b4767586f647475426332666c5a784b4470776744635038414548576d397476754969414c546831526c6d4346547434344534344c70326f6179345a41757839516a75414e767542707667566a4c506d466650613678314e49664655376a5a513345657356474573776b7337586357496a7937756f634a5a494d48726c676e5a7a654a65414269666d755236563631653231714d47456f4367794f5046642f317935632b7776617a566f30483877586939723465546f50572f3336354941437a2f414f7455335057372b6c3946755078584a737a486a6271773975355861474f6b664a4264633961336353583875512f6c576e616635426f2f7033784b503851714f316c7772704d4b346f57704179706767396a613959322b343143334d7647486d46343544754377332f5839724a78356a7835787835594c4a3653662f4930482f7157353278382f6b755064426d41586f422b6144644c5a2b6e656f794537563062642f464758486c566c595038564577343345542f702f61755048544b7136506f6343647a48544c2b6e45655a50683039764e42313937364244632b58614e30786a5a674c644c655050484e596f2f346c616b615835662f6f7632724b665664784b524d5a434c794d734f4b582b386230442f414a766441666b6736646a2f41424b77377a75546c48686f302f46614e7a59394e7352386f787367476c6648373851755a593356795a2f71584a6e56694e565063732f716d33695943396247464a63304859486f6e703978704346426d4c703030574f4566544c6c38375951416a6b52493137317a396e474571726e584746302f7031494f37632f786d3343526d4c7277656b644e657a466c32626655664c6868455a594265597437712f646e6273516c30763831366978487962666c442f564c6d6732433457306a414a726544746d716259646c6f4641774f42716773696455677649514c627539416e2f414b686c3731366d4d32687a586c2f563566622b70786e6c495251626841536f666d70626e4b32476b524a7565533557396e65322f77445645336a69434d45647065383878387952366e777934494e6d2f774274627652476f4153796c7a58454f3375526e7069386d4c55422f4a65694f317479694f6e567a6b61724e4f642b7a6444456b4434494f575a6e536264324a4863733175656731776464753775726b2f477a446b75446675663158616e4a42306230645748444a616468634178775076574f334953675739676835336c6e564845596f4e766c483779374849786f33637572627465644365332f414f37623039347146797a636a647657626b616134395849674c7257702b58354e7a394d6f367639564548686a38557642614e395a386a63334c592b6d636c5177434470374c2b6c73747a652f5670745237366c622f3841486a7273584c6643635a65395950557a3547327362574e4f6e7a5a397373506774582b4f53627a6f667769587550375548513953302b52633542595052336846382f7a585433674d724e357630726b2b6d45516750596f4f6e766251456f3349642f37553975576f615269725a4e4f4f6d53794752684a686b674f3773787541617166784c484b4d597a45357963474f716f7859712b6478785531585039556e71765772574851496e7651582b6e44377a634338664241687530344c305762354c42735952322b6d324d4974686d6379743243426363464e57695139757845344135705431494b665537756d356f4278367665756334447944636c75333431546a504d32317a5a5366776f4c4e5148654675394b32674d52656c5855656d4b3555736d393637332b50794537546a785779594e77422f613644677a426a4f57556e7a34756a456a484e5762722f6c6d546e4f667a56554b304a716753394e6f614778787a574464794d734d442b433233354f4b59685a4e3145754d6d415159644f6b5539366a4d6f4363386b54584241736d55634769594d33596c42634d67316251645435443846324c41634f3257433475326b4e544555586446794e6761686732614442366a636a4470412f63756153324864795674365a757a4d7971447a51574869717a536e4647423775616a736355466b4b4a6f7a6e47344a78794c716e5577562b3169435471716736397137356b524934356e697474764c5655726c3751454577496f2b4b36316b6159393644547130697543757452316b4e515056555263682b66795769786e4a426a3966426c73726834546976473058727658352f774467667a58417648674f2f464151586f704b6c41796b532b4345693643446b7661624d676253796541586a6f696e4e65703948766566744241553873796a37366f4e6a5577344c46646759794a6b7a46626f534270672b61533741536a6855664642356666536e636c717535665477575941614b6e75577a3157326256783858574671567951435654526137516f775641687856316d32637578426f6c45616363564c63784744483235717738574c2b31556d676742385547694737306a69506b684865327a6b714a514a484166465643304a557851585433304d68376c6d33462f5848355a4b794673434663537339324d734d7667674f79734863586848685539693950627461476a484a63333065786f746d5a6f5a654875585969546950795157443243536f657637453570682b3157625062783355795a5674784f6c7631537a6673515a6e68664a6850466b6e7075333869334b4838636c5a764e72396e656a4f482f41427970324661624856627167624156775667496b477a785333413048566343444641303279564634354b346c68565a3735616851634c664e4963446a52625054706d5673412f537330346562654d4d6948376c30493234326f694d522b314138376e3471435569644b7130616c7073784552726c56424c63744a636e4a61396e4d584c637063316a67544f564b4c643662613157544534655a4a42616667716268426f466663323976532b6e39696f6c74444a2f4c4f6b384541687a5477766153325372307a6855673078566354483335636b485568636a4b6a59685765575079584d3668344b713062695553772f3234494e766c5a59496547504a4c4336445846504b756445435430304b7a5872676943727053302f67736c396979446e4778716764597170364a482b6a634741467861394c51506638466c39442f344a3835366f6b352b7a494f6b48596d4b304b6d427a56676d354576336f4c72644d5233712b5054553843566b684b756b357133636630374e325838456b486d497931514a412f613651734d636b59452b574a4467457367547164304771774f6e4473556d346b487752322b414a396d5276422b3338554361577853473354384530426d617158707431494b43414d614a57366144737a51424e42785079526959785163792f4856674b71674e674b7256666b353743733068707046424951426b7877586239444a6a756f3666347838417550627049444631337651522f35622f77532b61445a2f6b50524f7a6348475675582b70763372793869625535534864324665763966693967542f544f4576772f466561755168656d38525641316a634f574b366c6d3434397938374b426a4a6a7857717a764e4c617548765164364d713078475373314448444e59724e773651545661664d6a434275544c414241777877566d6954636c357a64657533764d506b4d4c6551623271744f7739614d756d354848366f386b4865746748744b734d48564e69354734646473304b30454e55654a42566f59397174695363613568564579784361445666336f486c4a7663466733562f534e4c30576d3565454b444a63736b335471706967577a624a424a786642616f51634d55526145682b617568474f4431514e426f7354564639446c53665378564e4a466e51475856386c6674594e62414748557162647379787957794d4e4d47425165582f77416e67526474534f6473447664634b724c306e2b552f38646b38376e344c7a514f4b44726570523157397250485662306a2f41456c6239374479706932506f747851386b582f414c455a434a6b653676785a4c66754735636e634f4573454766563136545572723237586c78595934724c744c626e35305851753652444369445071596d5277346673517579786648386c4b654c454e68327172537837554343324f444a345734754f5364714f4564496b354b4177693047346c2b35614931594656784772334d6e634850464130593651782f4a4c476e596d6d4177314a544667345157775a333570772f743846564354314c71324d6d787851466d7163555249444e5156384e58513067556c37635543794e586a695544576f397968496f455446785642526369386562495161684f4146553877473070594f614772426b486d7656796675477a5a6335676531627656792b356b2f4350795746386b417777524a55484e51654769414f39564456537353366d534175366a4b4e6d4547514d4456412f4a516c693645755046415576596a70716953775a414558595555494f616941436949475955474b6734494950676f51674f6b6f73676b5a493064386b4b4d364a48755141736f4b564b6b6c45456576465146444e4d5a4941564b42523337464f59515279674d4558576a62324e5a3542414c466b6b36694b72722b6c586a6176364a50706d656e74574d514a4c44484c76576d466957754d342b504832375548714a787731396970755142716341723745787562596b4b73684b4c55376b475952496b34783471324c78785141474c49454f67744d48362b3950596b5948715647767159342b3561415851585434354c504f4759774b76495956376b703657515a444475576a553861716d514950546b6872303147446f444b527152564a637638415335436c32656b4f666478574f643349494f58366c644e793442394a77484e616f394d42463152663670416e45594a34794744344d67305138514331572b6d4a657057414d326f6346304c55644d574b446e2b735341747868786b7550356b6953356f44702f657433716c77584e7a475036496a33726e78694a534f4b4152762b56633877642f5074375676334e734561786d4667494867342b33373172323179563242744e3152773745484e755a68556b7136394c7249344b6c32504641514f4369677170496f43794143496a6b6f67444b596436493449794e4f6141424636555162696761494377555164486d67474b6a67496b6c436851454b486b707a436a7567556f6d705242554a516450306578716c4f34666f48785851754553775657786762566a7049367a713932536351634f6751784944696f5279706d6d48454a4d4b67494d2b2f6939754e4d7970743550434d6c5a7552717453427957586153476b776c52732b6142397831524e614b713330354d466475474e76547a564f6a495965333730427452366e4332774e4f46465443324978632b3947626a4a42424b76414a37647a714f4f6c5542716d4f5330516a6f46632f623855472f796d69446e2b6178796b426774317965694937467a4c30346d656d41792b4b437964346c6a6b6c32386e4d583474314b6f413848577a5a32395632494f412b6144714f624f3168475277667658466d4e58626b756e3671576949635078584e59594d3155433665417172496e52456b6e6d6a47444f715a68734d4269674141636e69756c743478304f7559413578593058583239754f6c79584a515a727361616973326f7471705438467176524745566a7550484f6e7951645430715a7557444c4e386c3042635a3548486b7554364c6430655a614863655a572b394968773155477533636a64734d7544366c4c52626c484d65384c7237435771336f6c69352b4b346e723732372b675a3953444473624f75656730664e656d6977476a674b4c673743476970347274323541745242584c70504a5a76566241334f314d7834375231507869566f6e4a6a785451306a6f2b6b6a5365626f5047474c494d394671332b324f32767967634d52324c4d4331416744726f526b2b786c483946794d763930534667647561313757585264746e366f2f4559494d674842623452386e61612f716e4c534f775972414267742f716b6d3875794b65584143512f694f4b4443344e5549385367794c5a49435a565149436d58596f344e454555356c5456565369434e787952356f414b46416170512b53676b6a56424d53706832495a6f6d74454444397155676c4530464649454446424d304356477252526b42484e4267516959355a714e7777514b376f6749766d694352515a6f41425874552b5470784677575361534b56515178657142556441746967686f455137494d34526171434f5a426c43774b684b4c2f534541714b384675735538544e6e337245597456585159424236623036345445516b4251554b374675724f764d2b6d334d765a6c365377524d50464235722f4b502f764a6347697549414347586f5038414b782f3555534d3452507a586e734b4549415252544e737345574937454e49666b67743150565355745353587a54612b46454245644e666d695277775163792f4a4b5452783855446c38507051597951656d4b4c6c416134493559396e4e5679366877544236745241335a68676f37396941775142447363554436776373304d4f6f6533737951346f785a304277644139496331554f49556d4359385546443172696f53564d4530496d5259596f42494b45467553312f617a44554b6547786c4d34747864426b676331767353467767456471333754306531647875784962365a4c64483055323230366a2f414c63507a516337375547484e5679395034416a6d56326a747051616c4f786c71307930395a4137554869397a744a327342525a535879717662474671345731516b4f3163766665694734397a6236536364496b67383767677a70376c755544706b4b357049795a4151785259704f784f3451615a3237567579346b54634f4d5777575756653954556345475145386b714a52716768524e457034497367672b43434c49694c356f4c6472626a657552747a2b716756633447456a45346a384549534e75516c484c3846307656344334625736683462304e55763568516f4f586852455571694a4d4542576941457142456853694347704b474a54557a53746d4545425a574334475a56766b692b534234585a327a306c5878756d5a4157522b437532776537487451656932746f79595a4664555049396977374f4a6a4163783272705265517252425870712f7336356e71463171357270334a6159644958413953755a41754d55465730485467585458596777494b617a63307763436946367364636d6a7044647144695370525273464a73366a4d574b43506b6f5339456345427a795146336f6d306a5032396d53366669706a5549426e524539714a3446416836684163516c416571494c4b4d67504a496139794a4a787a526b5545496641756f656b7567536f437943486745754b5a7867672b656143506d6961386b4d4563554542624241736f6f65704151474b494f7246414442544e4175615a364d683271506d674c6b305152425a51383041384f4b6e4e4474524271676a6c5368552b536a494331484b674c714135494d394545645130726d6f6f79435a3831453066696c5a79676a634566436c41645241616c476d43685075557751415652664e426e514c6f43533637336f65316c4b3364766e436c7364363443394c364c644d646e4d5244395935355a6f483332786e633238704f43596753626b4d567774705974337267684d6b527a4958704a37767a4979453949654d6f384458444665577376433441673742394732354e4c6b752b4c2f41496f6e3061784847374f525036522b61364e687051316637667a5665366e35636462427745484f6c734e726272316c636d39447935746b756a64765a65395962347a356f4b515753706e5149515159714b4555645230476e59376a37572f4734617866726a786963516e395332673232346e4350676656446e45314877574f7553364e382f63624f33632b7579664b6c2f4b61782f4549473259303748637a47503841546a3735562b5335744630596b52395035797659386f772f4d726d6e46424f785178596330657851776c466978446f41533662743936446b6f464247524b67554a63565141463053586f674f53675146324c6f45683649735370587451643763662b5a36526176463965336d625a2f6c6c375241584146614c7638416f736f333970753973664562666d522f30562b624c672b4846424446717134585943795952485754346a2b6e674f3071684667674134727132536258707432592f774370636a62376f6831797a7a5852334230374778483963726b7a335543446e43686f68346b58436d724a414345776c78536d694961574b41414f464556435851426d4c714f536f61466b324a514b426d6d306b5643466665756e7376524e31766a714130512f584b672f4d6f4f5a474a6b6445616b354c7462437a754c47346a74622f53434e576d6835723050702f70566a303850416137682f366b7375775a4c4a76412f71635a6a4f30352b5037454775325071475332323759756a7a49476e4c46316e6868454b32502f6a584e58306e78666d673052452f434a64367474677870714e654b6155645170326f694241775163762f4143414e3666654a784f6a2f414e77586978435562622f5478587576574c4233477a765734347472442f7731586e2f536f776c7442436655435454386b484f73536b6138467374795a6e44767756382f52775a613745782f4c4c44337034656c62746e653250355a494f5a666c55724f4f316469666f32354964676557734c6e586468754c58584f314952474d73666b67332b6c4d4e355a6c2f464c2f774255575747376130536c4166544b6350644a58656c58502f4a734150342f6d6b33303276336741583879375874503745474578456741757274523976734c32346c5356342b52442b585068512f67756352677848666936332b73662b50446137504f33417a6e2f4e4f702b4f43444d775941396a657a71692b446c514257776d47785448625872342f6f3235534838494c6436436a61376b523975533747714f3473536a6b5238712f46634b3573723967367032794f4b3362472f7744547972544241757a673079413763545263362f57636d4c7556317766506b31714d70667853564633306f6835536d4879616f446f4c7652474d35337a5577455978484f58354c30566d4a755236732b4f53342f6f65336c6138344d4a487050626975316276526d644a445335494e6d6d4d52544e52354538666d733043395174456455616c41334c74586d5038724138367a78302f69765569676330586c2f38414a394e7a63786a6e706967353975394c624137652f577a63384d6a6b2b666437306d777569495a2f67745a3234334e67784461343143792b6e7749715762437144304f33756964714d2b4b456f435937567a374871566e626e524a394c366f694f53337976625739463458684138436735642f624356506232785847334e765365613942646a4c716a4270746e62722b78636664445754307951553758636557574a70386c31744d5a5236574f66484263446b7a4b2b33666e6b575a4231706e52356369314a743731304e7753646c646b4d52474d7548314263794c54326b5a6e45535861365a6253364930654567666d6734502b517845743462736644636a436365594d522b5377624c622f63626946764b636f6774777a58513953486d3750615838394d72556d2f674e50676b39476c3545726d35502f5268493874557152515a2f5674313978757033492b46326a32526f506b74582b503347334a686c4b45683334726b4f39567439497547473874482b4a6a2f716f673950654175575a444c5175487359537430352f42656875516a316a6c4a7543346530682f5648412f677944754333716a536e7467714c6b47485542566159436d4471713541596f4d5a6868484842636665534d39324e50696366426465354f44467351754f4a5075775148616e77516457573575655a7168787a775a6471334930794c4c69324969626163446c77495858414171546c5149434233425633532f6172534b4e2b7855475277515a4e395052355a694b313977584c3879514c686444314f74754532384a787a717341744734616a446d67454c6339784a6776512b6a513871596a617246757558504a63336162557a696349512b75576244494c713272385947335a735261304a44745050755163726573643366674d4e55514f334e593557784175614d6e336f423346372f366b716f3237735a783875376a6c4a425358755577484659397a61616d4c5a7272517343395352702b537a37794e6d33456a55444a76635548476c6768707a4b456a78556378726d6762436f53457565314d513463356f474946454675336b42506b756e4f564f31636b644a63726f526e67676f4d4f7253566d6e4669325336756b4e685659643548544c5648426b475676676f516a552f68336f4e7851476770697457304963354c4d774450337132775472445a6c423172597137342b3964455466742b53783237516a495147495851746a4d315157326f4e5869744c365971756743496a6b616b6f4f622f414a4630374b7a2f4142546633426555494b39522f6b2f2f414137622f582b433877376f494f4b4c5055647955486769432f34494361567a5857394133416866386d5236626e7a5848566c7536624d34334934784f70423750435844322f4e46745855413672755431616267714c6e56547556746d6f624a42786657724a466b5334532b433463614231362f6637627a37556f5930667678586c5957364d4545597936677456676443726b4f37677259516933795158526d494d3768383030326d63634657434d38455a61512b614179684a6e365656576c457a6166624645457367726c484a5a70514d3569456671576934524776314c5a36587474524e2b59773850622b7842314c4e6e52455148684147574837317068427346476170784b6742616e7355437a6653534d5453493572736253774e766245426b4d6565667857485a57686375655963496449356e4d3979366276676771334e676269457255382f6d755a747456766f6e6a453665336d75786e7a57506577714c6b6366444c765155335338574b70745350617262766739735656414474515758656b4e6b3361736c3633536d4b3276714c2f745765385447426d52524279684674305a483659725349476465654374743248694a797a2b43306931434746583936424932424370376b314a646972316173465666335a384d4d634f5343795a686237535670394a6d5a574a5334334a454c6d3234454857756c36664879374169477a35494f694a524b797942743341324254786b4a46733152636d63435851617458306f67524f437a776e706a70497853366d72554636494c343277334a4c4f4448732f424b62326d7047574b766a4f33637047682b4b43727177434a6b56634c646168515777584a644252714a6f657855546a716d3344765771554d38465349507937554765345243456a6b4158645a505353593765426b50467150594d6c6676574e71347878684e55656a336f334e6a616b5257456a62376b4855414a396d5230746770475544326a324b493078397330466b49756b39546d4c57307563534e4865566662614f47433533723130536a62735a6b2b5965795074326f4f4c4b5039466a53674253366e367561767578654c636353566d45484e654b4464614a41436136526d73396f36533366334b34764e6d51434a4f437075556c78562b6c767835716d354c35494b4761542f424d474162456355644d746547587a5347594170696779626932576359664659574958556d786965316336634e4a3474676753425936674b2f537651656a3965376a4b464b5366334c674279584875572f626935744c6b626c7573333164764a423676316d4275624737474f4947717649672f67764f7774516847674242727137563651376d4f37326b35527030546933365a4e554c77753133307475514a6455446a48385548574e75756b314766617364335a36583030354c715774473474367252655078484c6970637455706c3830484c68656c626d524946566570377556786f50304c6f584c4f6f744c42594e3773355246484c494f62706b7655656a3751324c516e504845447458413264694e32577566686a55312b5339485a756c6d51644745683432484a58517541426338584b4e6e775231304344524f626c38464a58324657535247734f31457874686d4f5846426976534e79576d4c6748366c6261745566324363626546767169386539332f42614243725a464173416d4a41717a707a4668565a37747736755343546c2b354c413954425345534d53745671304f2f4a4131713330695237506372714e54325a4c514b326a4f45486e76386c692b3067635447347a396f4b386d47484e65322f7947794a3747656e47456f792f426548464548723975597839507333546c43344f38534c4c6e52594141725a644a74624378594e5332763331487a43793234475677785162647242706168334c58755a4342442f55724c46725445474b7937756571357a5a425449347567655a6f554a686e4761633954506c795147326458596e4552707764796c6a4e33497a35492b4a412f684f6e326458414f537147416f4f3471794c6e7066745157455a6d71535245513674306c7a484c395372753172697941785a74597172544f4c366c586246414a6673526e713757514f376a556e37512f73465662384e55356646414a477271526c6b6c41444e6b706967575571346471724d78674b4b3262674b6937634a4939766567387a36724a39796579507957455578585339616766754e52464a443555584f35494156416a6b79686232346f4a67616f4d3649504651466b41664a474a7a517a526f676a3571466a676f436f4d554542656755307567692f46424b6c5374554332434a51416b684d53585371596f433771615755415264716f464e4f35514534425447716d6e7551462b4b686a395255624a536851423355656950596f5a49424a486d464231466c3037587063682f79445355474f7861633177576f795974444c42504c544b6c73615248454b473277315a49464a49714146326246756a436f59463178664b4f71685a2f5971793343377479397331516567394f756d33656e6150686c3144745853757766415a75764c3276555a435168636948476559586f6472766f33674749424b43467856416b355a4c535978656e61716a4167557751557a6a67516e7453794e51684b4a4372454a5942427574544d696e75744b7648465a497a4d546c3372544357714b436d524446386c6d42314846614c306449726d733879773068417430426c6c75482b6e6c544c6974586d46744d502f557363375a694e4f4c6e73396d51596278634f4d41564944575779344c5a65322f394d67345a724e7472524e5a6535427373516a416157576b79444d46584746586a2b315662792b624e71557a517454745163486333504d767a6e6b53565449463634646d614e514b392f7438315649736131397553433841536f784e666a376673562b78746d647935557447334b54396757595330392b507469724e764f5542656c44394464786f677731373855686f455855385859674f534471457569373051522b436e695061676944706b4367426f69437070717967484241422f4569616f4651686b454663455755417a53366b445077517955553146415253716a6345464743414b3231624e3259674d53573936725a64483061304a33784f644262476f39324344723367497a30517047505437754b716e496973555a66315a47637645636b744d52512f6b676d485a7855474c78376b614a437a766b6753384e5675344d322b5377374751427256644f4f4a6344537555492b58634f664242646468716c45444e58796743306956673345326c413841744e6939726a6c7a51615a456948354c4e71355a664a50494d4777634a596745315152324e565a646546756d4951642f324b32364e5676484a42566176794e6d4f762b4a6b7343574a6e6d737469564e50417259496e483449437a414f5630765362666d456d51384b774e4c414c7262556d31747958784c75677862792f77446358444959413665316c6e2b727177514a314f2b4471793244775a4131497736532f425a35697165636d3652523155326e414947744856544e2f6775315a614e766e6775525a4c334f72422f624a6467682f4361666d677276514647373179726762784f37727233514e505035726a7a414234684274394b364c7373334330376d53796251744f6c5278562b2b6b412f596730624736434b5963467a2f415049782f774358435650414438316f326c77786c69386543782b75487a4e34782b6d4d516754615a47575958553273786374526c7a4f484a6343552f4c35357272656e792f706b34422b35426f767445673549414a584d73634553514b68426d39573270334e727a5941616f6976467356356a73775874624d744a4a4e614c7a507165304732766b523842366f6f4d5277576a5a2b4e75496b5065506b7371397a365636645932746933634d58755842716b54576851655032746f4734435770316472666d7137736a636b5a794c6e69766f31765a376133634534323469526479792b666232314331754c6c7548684570435076515a676d4844416f5955522b61414d66656c4e4b4936556449434364716a6a4e53694563616f4445553449694c6f45394b4a4846414a6c4567705552496f4a526e556c376c414e5255726767684762714d4643774c496c6d6f6756474d6b516c514d2f7655624e412f46575a4f67514d4642524755654358444a4151554b736a6a566b4153675769624555524b57754b4174565134465149615467676d46516f3070594c7062503079563273734437635636485a2b6d57494477312f557a4d6738766132463639345946617266704f346e4856474e526c677659577476624663316435594e634b35495046326653393346794c6371652f3971366d7939526e596e6f7676453561756b4c314d62596c556773464e7a36665a334d4e46324c383830486d503870674c6c757a75592f792f6c2b4b3873525631753365346c53773769325a5972454f43425a463674543830726c736b4a6f36636b466d6e4e41416e784a5347545057714268514854676c7047715a776f574f4e454250737944767979524a694258424c7131494a4d633148343143494f524b684f6b3051537055786b2b487851634769456e496442612f424a57764653574761445a6a397942736173683473457353796b5a4542416b686b744731744f387a6750785642443456585232734447337963456f505562622f4142336161492f636d56795a44346c68324d74423942394d77386f762f4e503831747345796744795754316a6458647274746533704d6e484641762f414f482f41453456386d5150625038414e4e483054627848394f642b3250345a456667764a6266315739496b5837312f2b4879376e3535646930656b2b73626a3775467164326334544969645a66476d626f5051627259334e76624e32463663375942314335575863666d75524b516c57546e6776556236496c7435785077586a74354f37614a304179626a6b67326a61367373465a354d37444e5542597654743966334d706176706a334f7458397a4f6c72746d5148474e65394254753972446448564f6b754958413365306c745a615a3066446d76584345474d774358464d6c772f5843385936736b4846494977587166522f53624d3976356d3674617053384a6649344769345778325a334e324e7241534c397939766241674149654564493741673575342f774162326336327a4f427a474b7a532f7741597353384e347566434a512f4631336954686b6c656571496b3143672b663769784b78646c5a4e644d6a48334b746166556e473675367631792b617a41634f31424356454d613855617851526b4258396967354252424b357272772f386a30365550717354315235526e2b327135493530585639464f727a72575537552f676735575374745754654a456357667543725a645430754f6d31754c702b6d33702f336e3969446c4870504a516747716864514944433371773471474269574b3062533371724c44385656654f715473677152787851414b4c4f676b6774337074736d623567532b5377594c6f2b6c532f71747847614430323274674e336675577a79325757334b506868466a794b3278504642697655657665764f656f75626c5636726357504d7147623572796e716b446175483239794262467951686a514b72647a4c434749784861716257444b715a63387767516769695a6979444f6f7a49437a31536971624149434c56795148546b6d47584e52386b7353554461587167786b61344245414f7070345949466f796e614648597148423045524d6754375551426363564a632b354242565277364d6167704b356f43796e617079396e552b717143415a6f5939694f484a545545415a367179493643565774753136346b476f5159755350683756436743674a7256536942555a4247556451664251346f436f6735557a51534b6e6937564167676a4a766d6858425241474c49743349385570595949446d6f5a6173635641555145454842412f465138536742564157557a525a446b67494f5344714f6945414e53797368656e612f347959396c46574379687751585433563634776e4d6e766449377942535946544242367a597a4537635a596a334a6438326a327a565070463537576b4c5a7572506d416b657a49504e3353445046314a672b535a63347132395930794c38614b6d656f57544534616f2f4a426b6f39564643514b424853516742415535496a6d7069676b6a775852394f32653733454a7773326a4f4e796d7241416a4e317a563948394f4174374f7a47333454434a377a552f4642353364663437764c65306944706c356571354b496c576f39314779586d7450466655374d6e787a444c356863704d6a477143734d76517968433974624d4a596950697a6a2b7865645865743956693379686b67352b35394f7532717471682b6f63466a593936395274627059526b667a5779573174337638416b74776b663159532b4344784a6f555636573936465a6d663663705135592f6b73352f787139394e7932333852623845484549506367377270373330652f733749763344417864756b76384167755869674f704455366d4b6d7042312f774448747835472b672f68756630355a2b4c39724c4476747364746675575a66524b556679393456416b594e49597575372f6b73524f646e655244432f626a4b583877782b42434467416f6b74324b4469685242435777585539556b49773239754e414c555433792f6373573174432f6568614831794566655757333136556676626b4965434452694f444442427a42516f46733145512b4b4359664a43726f68423351525143694a5551617265786e50682b4b323276544c59597a4a6c2f4c51642b66775273584e634263474d61466134585870326f4e6d3173574c666768454e2f714c39707758566863456837664a6357784e2b6c644f775a4e554141494e4475567974372f774478437958724b33702b61364c366a512b39637a314541622b78506a452b2b71447032596344556642616f6631596d4d716e4259546275322b71424438453439516e6150384156744d4b64567571445a5a42746e54576c48576c793963436b68754e7664714b6e334a764e68414e414f67723363394669376334516d764b656c54617a626a6d5636623157666c37472f502f414f57666947586a746a636951493552465062745164324677595a725462764e516436356b626764316f387a546832494f6c35676c566d4b7a7a4f6d56484766465657376f41306c4f517871454769462b5a4d65702b6f63455a5843626b782b6d5844734b78796c6f496d4f4b66636e7937317738534a662b6c41384c5562706a445445366a58704430344b75394b33754c6b3553684756644e593170527679566c69355337642f5446682f7177373152355a694f333855462b33743234654333434a78665135562b75527a4c6533425a495362465752753078515a39375a4d6f68714566697556596c4733633179414a623969376c774c6962697a474a5a42325075524b4f4e4f56505a6c79626b336b615579357175462b63656e4c4a3163503668302f7744715158656c783065624b4f4f714b365833737169566b6c75444c4a747255597830567158663831744147424c4947687559546f326e6b5673674976712f63566b6c72694e4d68583371324e737471446a35494e4579764d6635424c2b7643597a2f41415870584d4231314b387a2f6b6c504a62456952514c366449693441314a457677584d6e4b635936594673512b6133376151365a737779584d4d5a65444a42544b32614a72477a4e7951777839736c75733745347a4c2f41494c584f3962322f5343496e504d6f4c624a6a743441517070483031726d7447367569466955334e426a3239797174376d326151784f50547857623171374b4e714e73556c5071506367344f36334572307452646c54467856456a536d7457745a48444e423162446e614d52374264666254316261342f2f616b6663467a59774d4e734c6665657847563469794c4d53514c686a61505a4b71445062362f53376b4d5462764352354355572b61463053326d7768624c50754a61763945634837367233554e767439764532595167493036577862697139337472462b334d5474784f6d456d7058754b44356d726472634e71394359796c452b3556484e46796149506f4d34316d446e67765057486935474d5844633136446254382b4e753666716a475876465678496a526575525036766d6736384f6f4e79564f3472376667724c50686f6b764d63717367346d37643941784b3578766558654d702f42645063612f322b334a592f53374d726c307a4964766d6736507057374735755369596948546b4d6346326f4d7a724e616843426a4d44535254326f744f756864424a45415671367a456b6c587a4e4d566b6d58784e6543426431616a64733847505571597838754c4d34563467626b5a52694d55593763526f55416a453344563247537574516551686d63436f4e4d5177566c6e7843584242782f55724f6d2f634838596b65384171694931532b53322b6f78666358522f39502f3272484561534848616747356d5952467142596e716b51566b6c596132626b54683851746b596454346b347064394565573257667651636555524641485372626b5445365a5a4b6f4279674d6942326f5077554a7a55726d67496c70445a726f574c6d484e63776d744675327458474b4464453954724a765142346856614d39517038566e33747555596842676344425251783936496d3243427450753472567459617230412b422b537a447158523245584a756350785164613143725270346c70743852525a344f474b31526a7171677548566b77436b6870636a4a6b686b6e426442797638712f3464742f712f4265594c4f76542f774356756265324c2f544c2f7743466559413146414d6d4b67672f596f4271526a38304149555237554d4b6f50542b6c58665032656b4871746c75347266626d376675586e66527431477a754e4d76444d47487677586f32305551616542586b4e335a2b32334679324d4866337231316d645758472f794462614a523345633855484a743149663239736c5a514775437a516c485042574f5751614e4e4b497962446d6b6a44554b6e396855673868372f6767746e634238474b716d58654f48795345615269715a6a39584642666132336e3342624238654a3442656d74326f326f52747846417650374464666133504e3036675270624e65677362363166385053654251572b574643644d53637743565a4b422b6e454c4c666b314f4e454857326b644e6d41685234672b3961447a46566a394b756174724456694f687635614c59526936426d417173753636744d4f6572334b2b4e44314c46764a36626c70767131782b53436d3444703973554c56414a4876566c386e4c44356f51665378514745613057483143356f74777467316e4e744b32796d324743354f374a753779324434514e5865673642505454365657626b6266694c4a7a4f5177787171767478634c7a71677a47394f39344d4856396e622b57435a4d637972347838754c484c4a47516430464a6d504345323047714d71765753476b477162592f5848682b4b43324c52417a71744974783341592f745655625831594a4a6d6471666d572f3951346f4364756262786a38556c755a48544930577933656a64466148334b5862524961353845437844683869713562633674555355426238737335597138796b3153677068656c624e6633712b463461615971556b474e4753655748666967756a75645653715a58484f534d6f717534475a6b48503373763646306a4b4a376b505472656a61573474346e4b4f2f7274376f35492b6c797558725547384d427072464135747a48556667756862506d6a554b4b775758464d315647336474394a696773694737506d754a3672492f65615a566f5069463372596c69563537667a3833643343504448543373676c36734d4d5069734c7553496873313052574e4d4f43356b6f7945695a5963506d673261486a386c5a416d504a736c585a636a713967684b552f4642426445506771433478727a34464e626b5a444850393668696645475079514c4a364d2f4655796a78576e446837316d75516c39493936416154474c454c6d54393379573432376a466d484a593537653437536952464257304979315a72545a767a647543712b333068705a4b517556593463633048712f5364764b3574726b7933395856543465383572776b756d6858704e767537397178647457434e4a6a4b5663593866666b764e6c6e355a6f4c747475726d336e71746e44334c306d7a3956736275496863506c33543769764b684b7a34495063587471576550684f597a56586c39514a414c4c7a4732395333473170626e54394f4939757864697836774c33696a316677344f6770335731386d516c5a77345a4b2b784d5347724c354b325734684f5445733677526e4731505448776c42304c632b706c6f6a4e367241444b4a504a573236566442766851306f437455434a6a53634a426c7a597a6c63445a7078647532713652494369444a35317a303235354e392f4b2b6965544c7157376f6d424f42365438565764785a3364754d4a784267652f7744637149624437592f304c684550306d767345473663767a564d42724e566f73573554444650477733552b43426264714d4f6f564b766653634753675a4a32427871676d7359353570344555347043324b59596f4675576f3374566d5745347969766e646d775a33593263435a6948344c36504174494638313551625764723165526b4745544b35335a46425a366a6438793859526f492f30343979303750626d5055636662354c48474d524b63706b4f5a4664657a626c434f715765485955476739485565433438352b5a4c7a48342f7358533331777774486a704a584a6a714169375a4949357a78496f726f467868565678464e57614e725539616c4262706c34714d726d497238566e314b37587247464d6b426a415a5a70726353456e627954516c3952707751586952787953584b39324b59445456435542506c5241496e414b2b55444c4475564d426c4a58454d4f6c425734397345635131437135464f47485678515775465558465158435a6c426d636b465971334c323756586469396544717755716a636830734d572b43447a76727352436473667776546d53754f75783635416d365a6775437762677934354341354b476e596f4b7153446f497853697445326e4a412f7051524846416c314f534359596f347161584b58506d67614a64477053346e43714f4b4164714f4951356c526b415a6b7a49466e544e336f4268326f4138555735315569326141425233715645787751476c436c4a4b6a5a465149417a684d613449454d6a467330462b79595834413856313978634d69386961354c69574746794a357272626d657134644e4d3047627a4231466149586f7a46615a646971426a634f69574b6f6c445163585164367859742f56556c587a326f4936677554744e324d48796f4f4158637461707731577a33494d462f59786b61426c6d743272396b6d63534f613642334c644a42316347516e666a696155344f794462744e393576525078444a6258772f484263474e38753842384743746a7562724e346533424232546245686b6c386763467a593374782f44566172562b2f71496c413034494c4a3274484a3831575a79746c68775a614a58784b6d423936716e636a6e54385544655a7244423364436476562b444b71642b324b677054667230312b6455442b554d54677170576f2b4955537a766d3534616d4b7a584c7478674d304675366a5152436f74514d664756682b3575516b306c5a353177696c653142315a54306a566c6b754436727654666d4e755041433876356b392f646554445551306c796f6a7a435a6d704a3755466846644a6f2f785a4a4f576f642f3570364d364139374f67445266553373465a436b4c3166706a3877716d5a2b4b727554494a69394379436e35494b4d794c49496130556f67496c504c48674543765771596330696242414f78484252716f437441676a4f6f4642774b626b675847696a76696f6a32596f426a6770695752306f64694175675646485153693766706c7156757a4b344d5a6e344c6b57375a75794549316642656b4e72797847427947434376535a4f6f63765a3141506a6e785231476e745641734f6f476c564a523459493037335138526f67724a42784b785834434d784d4c7054414234724475413464426833456e6d58533267686365526457576f5535494e6473766e2b616a3673456b43343731594d67517a356f4c497344677946346e544b6e785474707837776c6f5270465547505973386e376165334e626f423167327a777574322f6d74344570316a374641786a3567306a697572757065585944566632433574754269326f45444e62642b644e6a527a636479446d677632386c644f6b575351412b6c4e306e476c55464a6b4451714751424948425179415079536d55544c4e2f6d677373654e34727457782f544570466358624e7136654b36344c42354276326f47756457446436346c774233686d757a4f5a4d64594438567737306872366453446f3753477478324b2f65536c4b4e63477737466e324178577539313264516f79444859595472684b6a4c48765a796e754a584a2b4c38466f74676954593875447244366e4a723179484d664a426e3830334c6a7275326e743249634456634461774d794146336233394f4d526b326c42594347636a70516b372b78557464554361704f44494c6f444d342f6746543670592b343232714f4e76713751726a526945397536496a51334c754e45486b644f432b6b52686f7377694d6f6a34426545336d302b303341686b534a525876626b674b477256514c4635426776482f3544747265333351302f5845544947466543394a746433432f44552f4c7658432f79433454366f324f6e51414f5750346f50506b56354b524a5870622b3273796542414e635668753743334c7143446b68777038303977615a454b6f494a3249314e4547523745455a714b4f34716934474b6769516758465155716f614b4d67494e4748657048696769634b4949785142346f755455496e6d674135494d53694b46536f79515232717047744372624e715630364969704941373172762b6d334e744458636268303855474c45555141347147545578526a6d6742626b6c4f504a5752675a345a4a4a5130596f413552494243456c41654743427264733353305631624778387556656f6c59396d7850595632497a36584f4b446f57476a48517a6c6272444350467346797246326741573678504b6f5164434434466c6143596a3239367a5736304c725641494c6f562f4a587a4c524a437174426d64592f573931397273357a68512b474b443531654771636a784b7277715541534238553078536941536b5252562f4e48465271745641385471785473493442423277344a4f78417a2f41464b4d49346f41734f5368716759786646536f77515a716845653930436970366b6363616f74782f4e41426b4266494b764279634531416f79435071484d7071742b6145667a5550484c4a414a52344b4541454244454f6d4c45494c64745a3836576b426453414675314965324b79656d523158573553576a636e564d51356749505a37582f686a506941724c746d31666a6f6e3143764a5950757a626949443651706133666e6e5142552b35426e502b4c626156664e752b3363724e6e2f41493774647063463847633552714e544e38736c314c63386c6134515a50555a76745a6e4576384169734273655934774b336570553230694d596b4834726d6e63334e73584e73474c506a56416f395033464f714e4d656d71302f616158457347377531437876495861427853735a4c5161654a426c6e48517a4f66795843395274655a6567534359676a554f5337462b3463582f77424b7a526847354e67782b595158547378745864566e53493664496a79373174684d4d58565534694442384d31572b6b6f4e67654153546d315267445645524e4e56416b753955572b4344782f724e7351336c795038543135726e595658582f7947502f6b6d58366f784b354b434548464156716932535955514a7a556436715a63464f31415863727065696638306f6a4532376e2f414c567a42774b362f77446a7a793359674d347a2f77446167355250557572592f6f2b6d585a6a2f414b6c794e76756a314c6c7a38523756314e2f45574e6c747251505649537579483832423979446b4f2f636f65436e4a61396b49534c7a7847484242627472666c68704175737534426a6359347271334a77783657584b334d396333515663465043564a646a4949447064624e686330334b6676575453724c45744e775351657732747a70476e4e62773073447a58443274794e4941344c733270616743442b4b437a797748474b3466724f316a63477150487558654e616972594c4c76725175576a416f50455349464d4756525972646632737572694d4f785958346f4a6a52523243594e4a6d3979464f35424e4f72325a534d5852635a42512f42424b69714c76795341557161714f43676e792f4a514848676f655743616f466142414a565130615370495a6f6b557167576d4b67596f74394b4b425252523346556453684a7843414f39564d36714f796a6e48464143535368696a386b4446417a72627371652f4259725944683175326f59747a39766367783347314874534f36303732336f754f37695665355a6d51462b4b434977514251535645577a514558544f3642527855556451635542303855425246446d674f704241794b624a41416f706b6f676a4d706a676f7a6f44344943364d66696f493856415545634b416f4e385545444d4751524e454157434173703463454855644243694f43444f6f61494f763656636e624f6c38537651476f6f7650624b4c51314869757a596c466d6c696779656f576458574232726b7a684b6475556377583767765262714469745375435a2f314e63766432494f616f453035427966636c51474955504e52776867674f47432b696569794e7a59574e56656d58774c4c353541354265352f786d394b577848474535526a7a2b70423074746446366b51774230313555587a6e64773033376b4d4e4d704433466533394a7362757a666e6333556f67542f3657707a46734f774c783371332f77423565622f75532b5a5159736346334e713072454333474b346d4e46312f5435675747474f723845476d334d516d477958557454634c68544f6a72774b364e69343851585164487a446b72725a31593563466c6c5134305a57786b7a42426939646d42744746486c6c78586b53614c31502b52546178415a366c3563494931464b6f48696f4b6f4932613942632f387630614d6d36747663303434526c2b306a334c7a3773752f77443437495878754e6a4c2f7177654838304d507a376b484162696f514742544548334a63616c42317638647366636236302b456636682f77424e666d73473976384133462b35652f584f55766556312f516d745764337553644f6931356365326548784334636d506167565273564b6e46516b6f4737384548624241455a6f74775142736c42553052555a776732375364477a585268634e582b6134316d576b725643354b4d616637696737454351654333574c6d6b397676584d747552315a444662374e4d54676733526b4b6c636e3161666c627262534a77482f784662375a79474f4b35587251725a766344702f4642364862793144494d5065747775787a62334c6937475a6251546775724b324964506632494842657349747a2f41435268624f5a716e74316972596873734548462f77416f75473173434d4e633478377366775868374e795430587450387344374b4d763033492f4972773863586a696737566a636d574f474b31573579314c6932355379777a5736336350466b48556a633531543262326b6b6e4e59526559736662344b3249643047792b64454a5955447252755339776e3955592f4a5a746c616c765a6d7847576752694e636858484b764a6461373658724930335a6449594f496e38416735786146754671565a536c356b6a3259424e727939676a76747450627a6a4f5a31526c4c532b6c694371473661494c346c7a552f6b6c45395037465471306c75415379757653507551614a794a44485076575355504d4841707a4969585652515961686878515a66747a6237654b4e75314f325834664661664c6b635367656b475842426f736b5332386948414574504e3050755a326a2f58424d50706d50787a57725955744730616d524d6d51746265646965686a4b337834653942723265377433343945346c615a4e34736c79352b6c575a4856485647654c2b314670306d32776b653942646639773936387a2f6b722b6262682b6d487a586f424f5568523135722f4937676c757067665247456678515a64695736586f46664332496c78697365306d444c534d5671746955786362783234362b3173554678745375394936596c6162573274322b5a5664693771414a7a7754334c776858486b4b6f4e45726b494374442f43734737736564507a6a4942777753536e64762b44706364365735626b4a6148387959707943446d376e5a78466463547953574e5669356f6b3464646178735969516e644f594a344c6b2b6f58764d76616f3444424276313945674d68546d566e6c4b635a5734542f376b4a64797432563858494e775362734e63746a4961554876373463453563634655575a686e4766554b756b335542634537545550787a56573030327259674270614d753542383449795367457074544f5170466d356f50542b6e2b7462614732745737684d5a7744594f71376d2b323136365a3270477245367332586d34795a516f50643258754f773747623848533338475a6a6e337278316a64584c42364a475038414b56324e763630385775655036655a514a764e30625636466b44564d476f37614c52617558397630524549485055337a433439694e30337864465a67366e4e517654575a537552726a6965424b43757a7537355039534d54484d78573646305463594469717441306a554b2f71513036634d454275584e4930737373715366557975755330682b4c72484f5244306442713273745a6e455952415768754f5271566b39504c334c672f56434b324d4251393643764c4d6f32395434706a474943534a3434494d652b686f76476367305a615a43545577416239367936725571524e665a3136532f65454c41746c6a53685a636a66526c4b4f76394568377344384548506a6a67794736724134666d7458326b53616f7a745268574d5179447a32356b4a536363464c5733756267746269536634612f4a614e395a3058474831645339465975322f52396d495338632b71556335452f674548426e364a753755504d75524549746a496a3838567a744f54725a3668366863336c7a5650776a4350425a52554f55416a444d71794636567677344a476f36674f6b636b47797a7635416a575063687639794c354247537779724a516c304148376b54696a71594f464e4a4746554631697272702b6e513643546871722b4335454b594c71656b6267645671596f2b703048586a48366c6f6944494d4574746c6445447351474676536a47416453455263384e66697272646f38473761494f462f6c63756a62672f706c3857586d6758504a65672f796d2f4364797a62684c555952366d71784c55586e79794159447651644d425251797a43416469686646454b417669676144673673313748613350754c4175385238563479413153624d7230766f392f524765326d4b6a71695063673631715a4376334f326a764e764b7a4c50446b73706d504542677464713463632f596f504233597932386a626c6b68716c4534734636663166306957384976577646395556357135743557334568705036654b4268646c4848464e3930614f466e315364696f5a565158655a714a79374570496c6a326c4a4148434b394836643656477a616538327558484a427a62562b315a67494d583471363365467730595559647179622b334f4e7a71414148365656745a745057537766336f50536266664e47554c6d4d5759724c4f2b4c6c7a2b454c444b5553653162624d477269794476656b41364c6a2f774463506343415630446a7a62426372306b6e58633569334c3375507758587851416d7135767155694c6c674839524a374d4630704774467876556268462b4f656c68387967744d746176674b73614c4a624a784f456c3049757a6f4b7a41414f66334c6c585a4757356c42683066562f4e6b75365a415934726b5837596875704e6a4b7675514854524f796a505758747a534469676339534559356e755130763155393663527252416b3674386b3279493879345277697137686c493471335a523635633468427230754e5367615136766372443845736870716779334c4d764550623277563175385945516b4b4b775448597946793347565367734c454e376b644961717a78746154695155597975446d6776304436654357564f536d716e424c71514366597170395743736e4a755157655845494d75366762673044362b6c64437859685968473162384d517164753870655a334c59412f666c2b354130656b506d723546687a5663614e522f6d724b5a6f4d3235767832344d2b414a626e6b764d57384e59385766463831642f6b6d2b4e752f446276306164556d346c5a496271334d687164744779516236666b736536443034425775496b534837306c386966745473514731485646774b68715a4b7934444c44425a34376933614141717950336b5253494b432f513563304367684b4f624c475055496b744556536e6633414b51712f31494e3439364c694c6957484e63715637637936754f417943795862684a4d5a7a4c6f4f3950643272654d686773642f314f49424450796b754e3576444a55366a4a426465762b59586b6b462b517756664a51554b446474742b62647137626c684f4c4259585566676f57464367495969767655504f716a50564145344942526b346d3159304b56694b714d6736466a655735644638455a616774567a59795a3448705846354b323375726c6e7779626b67366c7564793334716d497757325a44526c416c3152505a3344614677733544366553707433443567746e3671494e317664334e594163482b49555779337534417463496635716a63624737743469344235676a6a797a576e625839723668624d434e4a2b523566745153357349586e75625357695271324d58564e73336255744634482b624a4a2f62393173354879356172663463303238763662523179306176665242316244776946706a704c4665432f752b35684e3764776a32344b2b502b5262306655442f414b592f6b6739706f656d4342697649772f79586368675977503841702f6172502f7858667a74322f63667a5165726a624950465273704e337279397a2f4b377334394d49685a7a2f6b65352b6b514650306f50596e79774e5570554b382f366e76724a3345703270563876796a4c2f414642656433472f76376a2f414a4a6b724f43632f5a6b48715053746a50646b62693450366239504d727454747a4161644f6659764b37443179357462517453476f524e4b74544d4c587550386b4634474968704270784c5a6f4e472f76693963614e595270546971494e6c6a7a57657a7552654f6d4a69446a322f7457674275394130756b734b464d492f71524d645455554444484a41515153355631754d677744484e556d4c3555487a566f4c595a6f4749524130396e7a55476f564c496736614445494c5967345a353969503039694676705059706d58515152307067654b544f71736f513261415344345551474c597033416f6751314179414442776d4a62487553766f695a53706d735735395673575469352f6851626e66414b75354f4e6f764d696e48466c357a656573334c335461364238567a444f5579383548356f4f2f643255626c7733544f4f6e716c7043344e786e636353674a6b42304975674272696939474b4f66536c714545646c4455756f4b34344b466767557068676f7a7159346f4a6756485a51456a4842423251466e6f4543446b70346c4544505871514a4b6b577a51595a494471436a366b41694f61434d796e61694a4d47795146454549344b49314941536f4a4a45486767374b416c41636c4b4947497977544867677332304e56324d6566597576656847647952663355584b326477433435585130616a566d515a5a6951504d4c6674674e7a416a683731524f466173795731616c4a3266755161703750524c735632323338397161654356434d5530647a356730334b48386b7768456a5239587a516461337534745450765469647557416a58336863364731387344537a4258485443704c4642744147422f4a4e35495a694b4f367753337a45576f564a354a4c7075546c39513730472b6372635231555655392f413068314b694f7867664738753271756a7434573439415155584c743634656d4c5a4b437a636e576448573041633073445630464d64764341347667726848454e3271476c47366b386a326f4b626f476e386c524e70426f30576955526936716b7735494d4636772b4657574f37666a5a69787834444644315064584933504b69644c69764e637a7976656678515463626b376a416152676d6a426749344d556f4d5256776f5a5778586d674a7966414b6679356e733976676c38794939796775786648323976324947467639587437735654666555713473727463522b4137666276564e374642586969554545456452314d4d464151676e59677a7068785a4142716c42476246484a48556c434364694b6d4b41514841567851436e6169675842526b577955624c4a41433770766d6f48514e5547725a586f6265364a7a4436634f31615a2b745877614e3331584d4361736b47325071743453636b486b72346571676a726746687332544b5942433253324f6f555161493732334d344d543755562f6d526c38384678726c69554b5a4a42666c62774b4473584c6c4747415761356d465262336f442b614837465863336572776875314256636b7856396c32645a584d6a5771315771395034494c594d66624e5062675a46474469717667597748385251436f414f654357596941634e53633348494a702f43714a6a453564694375354b4f735369504352336861496276534d4750347173526759507852386779445051494e636437476b63316f757a6c654750767a58496c747a4767717955585a77496c56427230473334686b6e6b516543537875526469595850656d466e686b6770496346386c4364515a6b63794255494356574f5878516164755a61324746414b4c716954726c62474231366c31433036653542584f5647484e637139497a494c307758526e50554758506e4451377339554772616449654b336d4f75337034686337625330674c7267426d2b43446b37587275616a6c4c33726b65716a2f79626b66347350623831324e71434c6d666a34344231795055762f75726e48556766302b3233556537745771354a786f61727573396965717a6f6f2b7256334b3362546139457a38494b447052694c634f724e4141477234594a376831395758506771586241342b32434377783146796d6a7149547769446c564a63765762593679616345466432324e7864426e394e56304c6e7159683434754469755050316662572f444579504f564653663867754f3049524151646630726278457061443469467939394f4e37314f354f4e52452f4b4943512f7743517a304d41307556475754596d3563756d365469377567365678334a4748357171636834673956424c53386c6d33463353446978384b446e6267764d736b4a526e575356413963497058393668345a7141494a6e54465145346f6e3349414944547770657845684c6d67643041536345457a6b5651425134496c7373554a5342716742444b594d6d4e55704b445474643139764c5645413974565a7576557275366f543066705749423149316f674963684252326f6a7843432f61582f414372676c674631726b4c65347443556d4758655677684a614e724c36486f55447a32686b4e56756f5755774d463149784c6941563568416e5552676734396d656954354c715175394f715868794153584e6c4674554f3030346331544764644971673663626a735467745675656d6f7737467a595231564c5972565a3157773361673757336b784263726f327775547450314d7578597a7a37454769464b634635372f4144472f6f32384c512b71542b35656b694b7277332b57626a7a64304c512b6766464235384e345368504667724e5076537a69394167566e534d485a5052334b47675966424137356f44436e616d6c376e5559697142587a50743249365855425a4161737355414c796f6d52484f6c45736667676e6652546d6a4e676b6c4c5679514e4a7756444f6a42497a34344b47744544435434714f4d6b6e7a52643046676244344973593434716e4170347a306f4e6d796c6f7563326c37636c326470597478653775476c493863492f745848394e454a3334444b7572334664793963467359667435494f6c4f63626e535432616171367843466d444239513936343971643639485870305179585a32393447446b5966487651614a626a7077626e4c327854446353344d466b7633686347693242492f4a4c44302b4e78764f71324c594945395733385a574a57595071754551664a5a62577a75742f566e71793746753953326c7637595368547952716975562f657473446d442f4b676c79784c62543151397930486664475055324370743771337567644c646b7561615675414c384543534f6f435a466171335a5359796b513338796f7579474876373177642f64486e48526c524236326430534c2b3374524a7279584832462b4a68774336305a435263494e63434d536c6435593430535944546d6a474a6943535548412f79456455546d42376532533449586f6658595059746b3853764f31795151424545353449664e454f676b674d6c435563516c7751546b75782f6a682f382b3332532f77446156782b533162446553324e364e2b4963783438777944504d7449397175336d366e75356955677a434d514267476f715a45794a4b475341594b436c416f516346475a41784f524b414346455367445a49685273754b6847546f4351364f47415141376b37634b6f4f7a73726e6d526f7a34484e64726237694c7468486c6d7649375752747a6355586f7472644e4b64534474696e595658664467786a6a6b6d73485845413037553947726b67387443424d7a452b4a354354385678726b534a6c656a39543238374e2f56454454632b6446772f5549614c6d6e4e68713546426a464d4551577854434c4f366362573459473442306a4e4258724f4b474954474c5a6f6148464543754d45776935357052324934567a5146674d56435844494d39417054444a4166437a34714844696f785250545242434d4478554d58775541656751777a514b654368595947714c4f6c4e4542726b6743794c5a71484279676a49636c4456544642626146574f433132365336566d323853536331746c434d616a5038414241752b6a4532347455763767756479433058376d6f614173786f676837464f5a55434645424842454b455555484241547a5169454256546b674f46536c5a4d2b614475674a6f416768324a335a416f4a46564d56464b643643436d4952553031515a6b454252415a414b494a48346f396967716f616969414b454a7141385543663349493161714f69497568544e414545355a6b424934494f3173662b426a69363337655268336331794e68632f706d4b365733632b4a766246426663754f4b726b377545375a4d384b664e646331376c7a66554c50394a3833397944696b5a6f417051365a416450636f5179476d6943416d69372f6f572f7357626433613771526843656b6951794978773438567741654b686f6739682f6450534e684c7a64734a54754e6a31663841786667764b626d366239795632574d35475237537169586f6f6561412b466444302b373053426467524b6e494838317a78775a626654384a6f4e4570784d617252745a75484f443572484b5046613976414f4a4d673659714b5556384c6e306a46714a414b4e546b714a793876567951595058352f7744484134675637317769654b30622f6453334e347a6c37425a73554547444b6330587955446f494d5674394a335832653674337a6845395838706f66677344456f733451627656664a4f36755332387456736e564876715237364c44687952434344757a66622b697847642b362f2b6d4e4b39345844656c453575796c45516c4936492b475042306763396943636b4f536a49387767446c457361714549416c424764525252714944456b6d6933376165767856593979353243303751395655486573517842777a585238743438766973323169636632726656744a4b436d4e446a526333317a6f74576d2f555433344c52624d35544c30687a5648726830324967746a69677574373278614c544d6e38574846642f622b72625338476a4d61734f6f4d765037533147647147734f4e49726d46316265787357343069433346423249546961784e46584b39716b304f383969716a47724d726f7859594d67792b72376157343256323145645461674f79712b636a70583153412b6d532b593732304e7675626c7356454a79413769676c6a694d65664a616f534f49476f76375557474532726b723458524536734167334362787a4375684d6a772f4655517542326f724945477044684233763865724f2f504a3441647a7274447a4f4d56782f385a6b4a625763794d626b766b463135546b4a694969346c6d673533726378437a61664533594c4670684b73434b39337a563372397974693263444b557639713551414a35356355477164746d495765354d4444324b7076626d7a5a65336375544575444f46554c34785936636b46754e516678537975546947633179796f6c6c7649696b5931565a334d706e7437714242654c6b3444785543612f764435636d593950446957584c6e76524767416c7a5274627135764c73647549524775555230697550463048737230434c413873744f4138584e437876376b6a35563572557a345a596958354a3458744e795554784c6469736c7378666a706c3152507452416b3747365a7a632f7742735549574a787742507854376661626a61316a6445726643655865744833597434687a2f43554273524553337a5868643363382b39754a6e4f3477376e5a65326a755a584c676f77446b2b35654173794d39636e2b702f6d674e6c6f6b4d7570735a694f34684c4b54784c4e334c6c344f51467132637871414f55784a41392b32646e63302f54346f3969364542626a455467424a36366c6476396b4e35626e49654f48583363467a646c7554596a6f502f48394c2f5363304779553731794f694564494e444a534d4262474e4f4f626f2b66614a704c555438453769574653677833376c79344e4671464f65616f6a36616648642f77434d645279375630726b34326775647549336435307a4c4274514151632f5933497833456a476b54712b5330377933714f7667733233742b586544344c5a764a776a4456692f74586b673956764e3366684c56624676796a585664504a635863663545496935626d49796b59796a453271645865764c33726b3768655264495a555a414b4936736c76322f704e322b484e426936336a305745595069794469527a475356317533477a4d443059633856686e45677355415441734b597061507952623234494e2b793376323977546c574c395565495870597863655a614c787848356471385746322f536655664a49745438424e65546f4f383739717a6b36715a68625a2b5337546c704c2b3959376c6776724f45735145476536644970565a3366386b312b737a41753456505552326355477a3034747557476474644b634137635677624f354f31752f634550704659397131572f386b7354503953334b492f684c2f4e423064414151747736676566597159656f375463306a63306e394d773378772b4b7373377262546d595175783134436c506567763363543563536341573936797a4975784d6549397931376d346674684f6636674a5a72487045673861532b61444f4a7645537a775049707039504d596c504b326255794a2f574e556678566436364c4673335a6a67412b5a51596478636a6176786c4d442b6e58387669755675747a63334d7a4f5a636c4c66756d354c564c3669716e6f674747434a4c4854696c777855724a41326b45694b75746265643474456532614f307465624d527834723147313267646967383550307663517149366c686e45784e614c33556473487a58503957394e46793372675036672b53447977416431614b556f713552615448765673484657702b6141526a566c307265314432377354585847505a7a5753332f55476e4d594c302b79324f6945524a71462b2f48334242654e76494136354763683957487956746d7851617168384553524e324e4530627475515a366f504c65712b7062757a75626c67584447455a5545615578474835726c334e356675306e636c496335466c317658746a662b366e7549774a747972716948464238467730426f55434f4b6743492b534356515137557843434f34556f456f44706e5a42647464506d677944686166506e43364c6f44455a4655374b32386e794375767a30342b4a42336f3359796a71686756727333793950654635333076644548794a65484750617570626e355a4f7169447377754445592b355a4e37744c57376a706b4b355377494b72462f547a433157694c6b4b6f50483771784c627a38716547556c6d6a42354e4774563654316a6165664278346f6539443062303779342b66654855487079346f4a365836554e754266752b4d3452344c7443302b4b4a4147474b674753444675746962726d6b6f3847584c335870586b5238344d4976685842656c4665774c6865753335655a43794d49395251637145486142795851735a6c593759315247547258412b35423166532f2b64785856622b496c2b31643047693837745a364c6c6f78796c703770426568777237304577586e66564c6a33424f4f416e384d463239356538697a636b4d5245366677586d64384e634e47644f396b485568426d72697438614c6c5839336273576f53756350446d53797232337147347559415168787a2b4b44757363567a39384776776d50347453714537687271507953335a2b57486d6644374d67764f6b526554416356796433367661734854614a6d6553355871667152335574503052384d52682b39633258556553447079396175414d49784166676b6c36786378307837567a6d39794c4271494f33742f577a63614e2b76384145463276543933747a4f5238324c6157715777375758694153614b59554b443656617632376f365a526b334358354a70526638414a664e34585a57693853593969376d7939637578595436677a633048715766444e47585451716e6262324736477344484c465879694b6969434754684f345054775659484254546d674c36716f367744676c6a42734f354c636b545149457579645a35793471584c6d6c69566c6e64474f4c6c6b462f6d54626f6d52334b3737766352494a4562672f68704a5532364b794970524270746570575a45526b664c6e2b6d587333785778346d546a50426369356269523167465968666e36584b424d76384178705330796a4b756e6d4d3048452f7944562f634c72386664525a4c473459395743743959334e766562753564732b47524877703856676f4548657462754464513933426b307239695a634f5232305841456d474b636269344b616b48666a63745448682f416c4d44616965746f742f4546353737695a4c7563456d737a4e616f505133765574765a46476d66345974386679584f756572334a482b6d4248757175617a493661494c4a33726b2f714a56645545784f5951534d645646475074785164446b674f6b346e4e466e517a55314e6745454646506d6779676f674a6a6745436941464257714342484e6b496a504a52327167474332656e57764e7677427148633979794874717578364c5a4454756d724d42785164613375346d5663632f77376c5675746e4739623169697844564d7941784b576432647551366d34443830476e5a2b7033646d664c763174595077576d3773396e66506d6261364958442f45325078584f753353335845486d2f73374b754d62656d553269424566484964364470376e3150632b6d434d626d6d65716f34737650623366584e355058644e637553532f755a37686a4d6c6f304156514b41454642484631483449446b67414643534b49677669674f6d766168674b714751357161677a5a6f43376f4d7945577854447137454550416f45566f6a6a5535495a506d676b5a474231526f7937657a33763341455a2b4d426c784e4b6b535931464751656d4a505946594f70694d565273373062317353784f66492f7557754d6e514b774a647643565a726f7853414236463061523745445234464d4746505970597a67344977566a6832434276436d6d777756524c386b577a7a51576a6d694a415a4b6f53456a70464372644947484241524b69516b52715659764d2b7137387a7547334841455651443144314d33586a43674e4f645077584a6c6a56414250454f654b42536a5258584c4f6d706f367a6c7531415761716a305a4474554162464151482f414454686d78514e4d554975676b364a6346654f4753726e6a564168424361684b55756f4f6d6f514769456358554c6b636c454246536f55534136685a41754a524279555a304544555374565273776f616f4a67457a7456444642394a5145494b5a7177416d6779514b49714f72497841616963787252426e414d734d564e456d6462496d6e51794570524f5344494a736451572b463468706a48357250706a4f706f6e6862303143446f32376f757a442b2f67744e6d33456c784c3936347031526c314258625864796851494f34625942774c6e4e55546a624649343172696b32753467353139315630492f62677662784e5543526c646e4551672f42562f6254754456503841306a4e613433504b6f57632f465732385849593475675462324932787141722b7058794456514a55657645494c41483976676741654f4353556e4b73316a46414a484152716543574c596c41462f6232396e547850306c735544433443665a30722b386f61574e453069596842584f515049344c4f5470563745542f4144584d3375397247316149774a6c506745484e3957755238324d763447584b75335a794c4f566676647839784d615152435053482f486d7331525642474b56744a5a486d706c5641447852795a4e524b3258424245516452716c474b6e4a41536f32525553343151454a67636b6f52776f676d706b4b4f6f6169696a4d67694c5a705578716767555a414b554b4364714a6f6f63554343676a75676965436d6e6967697573674573637771664452573233684c424138374431434733693836344c52627551495a5043394732584951624c646a5364557143717438732b33425a7876595444344661724d3458417a747a4b424c396f4561517550667336533443372b6c672b4b7762714853534d6d50484e4278735078524552336858376f526a634c59537171676353374942435044486774746a69526c554c4e5a59354f56306476427733743764794234364d5a426b504d692f56677178656a4f526345746b73642f63796e303441494e4e2f645174737764714c485063536d716e706968695544536d39484b6e6d4548566d6c303051314d6731573939636a7a43333237317539466d616d476134774b614d694471474951644b65313053445543654e3867754b4b37613352757265763634654d635278536d3339507456424e4a5055356f6c6a53585853584a5777365341506a6b71707730383634346f4e75794776534f4b31584c6d6b704e7542484d416847557849645750773936425a7a46754c3163354c465048547a314c566734344b67786376334948734349724c4d7272774a5a707456636d44786c7177624a64573156356f4f646f303775702f617542766a71334e7958385a2b6139467670434632336577365348357871764c584a47354f556a556f4e5673686e7174646f4c6d427a67743232755164702f755164466e787a5437672f623239633359594d793262534e6d364f6b6a552b4256487246694832736947634642777233716c79343446423272444b5a6e347669675142686d6c384a5145714f70696f4b346f4979362b7873745a31726b59344c304e71506b32592f715a425863425a78694668334e343572644d366e6c79584c33417a5155534c6d71424253684d314545415564307a4d4b594a636539424b4874556a4630634547494343596f734d3041534368564245536377694b5971536d31416741726d686e52465141674942554b61587756396a62797653706775706132564e4c41494f6661325a75414556576950706b7059347271573972706f74555133564834494f485030736b4d47667457533973376c734f5176566974573751516d4f316863446c67364478556f385572735858714e7a364a6275534f6745486b764f3339764f79544351775162374735686849427974734a746a543851764f75785854326d354d77306871624242334e72626a63364a43764a6354657838692f4f33484c3572743765656b73545867756636355a612f72695138773547626842693238583631304c476f564c4c4a5a44306171365671795a67474e575164505a3279417576596f572b4b35753174364b762b4b36646a334f673152444c356e36784c5876627042776c494c36575a6151362b5633352b64646e4c395569536767464f53576678544351535a3830436548715562726275524c6c54707772326f4831464c696355704a47434f6b7353676a634538614a524635506b67492b354137444e5647546d6d436163784c415553555a30455a77364d522b78415678516375674c7557527751504a5371414f69437949416479676541514d4144564a69727a4161424c69715132534237647732354363635176522b6e4462377361355361592b6d58344c7a5438565a74623532317a557a6a4e4237496b45477278416f6d7357664d72645952567533743272396b584c65423570703252427452376b4771506c7870484257322b59584a76376d46714e476644704e552b31335572335443334d38364150322f6b67364e32423345445a30394d73566875656d376546613464714f346a66387333444d41503449666d736b62682b6f30412f6d514a35567530386f414349344c504f3545595a2b32436f33472b68324477726d626a664545366330476e653773786a3034386c78746665704b766167635851644c30322f706c704e4f4861757861755054466565325a2f7141594c7232726a6c6767375675657568344a7356677458733846747479455974695548503963743674767134542b6138726869766262797a3978596c622b6f6548744338564d474d713468414d614b567a52624e51423041434c73675643674a5a52714b5a4d6f526b676d44356f36564e4c4b414f674265504a4d592b3746435252636b494247696c45585a4c457345446c71756b504a413171706a5242474359644a5537457276556f4c4b5a5558553247353642624c754d4679574a446850616e35636e4344326d3276475146666273585148554e587452634c59586e6a5444366c30643975687474724d2f564c776e6936446c2b766570576f4837657a5755635a634f7865624a4d3564645356706e747a41655a666f39577a4b7a334c6e6d554159424242614f592f4a64472f366e6575575074794c5967333052346669755345634b49493749456b685153544946665546427a7955306b3051776f675946546d4549674d366b6d47434233645175614a4143536e497a4342516f33755259466d513741676b71425454546d693270306f4f5341755a4144676c5a454b454e524148557a545359565565714466737835665557644e754a4d422b7267714e74664544584c344b362b6452654a6359754f4b44424975547953307a54452f4a4a6967474b4c464658324e7464334236496b6f4d376b4648535a645179586632336f397132416233584935527748616e334e7437666c78416a795165654164437256547a69596c566f4354567767554d45513261413139366a4841494d7068564131456f776f6f654b4f6f3549424a516f7568564153796c636c435741554951536871555a596851594d6c6b674b447144347146785242426a5645597147714e634167424b436e63696731624d6e56704b36384d6d4646774c5259305866734e6441484242737456576666524d374d6b39683541455a664658377531356c746f303478346f50495351436558544d3971534f434345756f46474b4f6c714949454751775251526c47414c4652795132536d70424256317432516a35647838656e38566a726746713251424d6f6671487951614c5a6570585673645144344c6d53744731314c6673726e306b346f4f76474848346674584639597647324a416a46766975355a726c69754836396249673961537a5165662b53474b684c714641576451416c44735279664e4241364f43474b68446f4a6d366a754551437a70514851516c31485a45554c42544771434f6765534b67344941694256434e61496e464151514133464c696d43516c7345425946614e6f2f6d4273364c5079577a59774d726a38412f7551656a323477354c5a436b437357336d52416b306368757862724d5351336567516a57475a63722f41434d744732324a64646d4159307758462f794f4a30326a772f464133704e2f565a68484d616f2f6946336244674d7a7279766f64317054746e394c2b356569736d34434e4a516446352f706b74454263496551594d7142667567423670686575584d6b4773534e415638382f77416873655476376f475a316637717233304c576a784556586c663879736a566176667142682f742f65673876795674712b6265516b71513641446f4f7243657976554f71792f2b755035725a6139497433535049766173333535554e56353553723051665166516a445a374345727030764b565432742b433244656265556d4632426b37415078586c50532f38414966746476397663744737705054586a6c6756736c2f6b4e756638412b7865332b3141332b55584439785a68483659536e373666677545647a6345756f707656665537322f764739704d415969337035592f4e63782f656736526e43346455757165526c774362567044794e506a58677558724e4b6c45796c49395344566333566567652f7743617a53757a6e6d3453454b486967496f463250384147626572656561634c634a7a2f443856786947444c302f2b4e32684862337276363551743977716737426944676a39746550674a622b5a69725874334931496955703238593138304467306b43666254777547667656317579494578474345626b7265457966696d383834494b4e376638726133376d59743652327a6f7645374758564a737837313650312b2f7743587359772b71396331643066776465567354305442516449416b53636a383253375139514f4956706a5352784c594c5074626a534150487651657332747834754d4a51712f4a4a6439456865694c3973744b556457672b47716f32736d746b4134456a755a6437616b6552446a706936447963596d44776b4e456834787a56305a36616767757535366c36643979504d7430765248536550492f67764f786a7231505167395861673357327545356c5633444856305346503071756438792f705736535077566774776a62387549414c35494f526474742f5572314c50366b4a577a4332613042506156314c384e4559306f437552366a2f397a495a552b534447535673394e7343397549526c55437057574a5972742b6832435a5476596151337639676736384c594e49742b7a4a585146474f4b704e32335a2f35437748426162562b78642f34376a38654b43712f7464594f465678743136524f636e4262494c303742754b55573453704c424234652f77436e58624f49797957613547514c535830485459674f6f675565754e466c76376533633851423741364477767355596b413158513955394e6c73356178574576437935726355486174626e5861387157427248694432725a7439396f2f6f334a552b6b2f6d7544597569494939676e74574e63586d574c6f4f2f4b4d5a6e5846784c735663374a41646965784c744a47324e42367543335742586c386b484f6c5a3157357539496e396934516a4c53765765734879746d53634a6d4d6155624e6559686c6d676b4c4c566c6b743233326c75574957614f61336257547337356533596736566e616d486c57344574496d556f75614d507a585968613872414c4236664c2b715771524438563035586a434f724142427a2f5543587444367a4c446b316677584133313657353345647445764350787a4a585276332f4d756563635135697554733436487654786c306a385548506d4b644b725a7a6b724c7654636b2f7346566a676746517262647556777448453043657a744c6b3349695778585932323448703536625438304737307630767949646669504264625159734b507777584f73657657626e5449474a39367547376a4b635a6e41632b4b4466334b7563636946564c3144627850584c54374d715a2b7137534e444e7965302f67673831367859386d2b537a41344c6d77707a58706656595133396a7a4c465462794842655a785162665470663134774f645065766178594167597278766f31727a74356241774231653671396a50714c59527a515a743166466944797156796275396d2f5454385662753275544a4e57575952353438636b47757a7539795961344563782b535739443779456f3362516a6362584755597353653350334b625759746e53757266395274656d3763584a4856493068464234575171672b616b716e552b4b4743414848425045676c76696f3257614d59594f454343696844565668694941344b536963454772302b4c36754656626346754a72376b6d797a6745747933356b692b534369647870644646337264333769314734503554334c676d316f4770316f32742b6467474c644a7167375672637867304a6c33566c3358452b62614a62687858454f363877674769316250654733535265507851645333755a536a574c466134585934637356794a2b71644f6f56546258564d6562634c6b34494f324a6f78497778584c462b55543035397976743732504630473756473142356346354737642b35755475534f4a70775a6458316e66434d44596a3435596e6746787250524668686e7a516137637344677234674539696f6c2b35504136714271494e39755769555a34615a5250755870786d463551456d334e75422b533954616c71455a6351506967586462633337557265476f664a655733574c7a38514658795a6575314134726b2b72374c7a49656462385138512f55454845394832736439666c353246754f65524f42577149674a46766174465053744f333231326564776e547861507355396948527a5158516d4d54686775443672366f4c2f7744546834516669722f5637787444514844686565456e6f67596c305138676731564b4944696f513941677a46506f4a3545494571436765615952314a784856426d71677178344a6f794d4d55326972464b5341536732624c657a3274775365693978597661374d5a346b2f67766e56523272364436645a6b4e72614d525453443730476d63786a7855634e78564e3764324c482f4c4f49623658717366393574546c7073524e773550534b446f317746466b76376d33742b71374d412f7078507578564d37312b37575245592f6f682b4b775854474c796b42714831534342376d36383850454d443731794c32386663526943385157562b35336b59785956316642637578435a6d4a4448464237433131594258477676574778756f32326a4c763756713877544e425241306a33726a663546496552616750716c71397758594a49476b72682f7743527a667968794b447a7261635551796d4f4f5349514b546b4b497543616f4d6e306539416e59707a543650656d4d43616f4b6d5076524a7a524d57786f686b7941594b4f6f796238554367714176557071416f49496f5167394577484e41727159596f734d4d30483146413435597058597141307169347a514c4556526f2f4a4832346f596f416553364730335973577a4351385456574563464843447562596d635847617a62752f4437755568345769506b73554e7a4f46496c683846554a6b6b6e4d6f4f74366d52437a615966564b7648426377336a4f4f6e4b6a705a3370794169545159643651684242536942636f7339464d55424c346f7870314442445069683234494254464749536971626b676d6271506d6a677079775142364d7055302f636f78555042424a424679454230706f5151514e676752696f4d4648475344712b6b5442506c6354475466417274314f58666b764b375864533231337a6f596a69756a2f2b4962376463596b646a494f7337464f3057635a726d572f58624d762b53312f74722b53614871323171434a44752f622b43446f67426e5235725062395332732b6b58474a2f55442b53756a6473482f72525038417151574f63436a6a34614a574f4d44456a7479566e6c6c734837454171656e4657413149495352686b51517259524e6550464254667665545975585239433851535a564b396e36764879396c6442474a6a387776484768705641764a61624e707932617a6861596b5779436366616944587574764c79384b68637368715a72757733567539426a6a2b4879574c636254584a344f42785159436c4b746e74357738515663686d675069375547507452514d4d46454667344b654b4c4a616c4579475343764245557877554a31564b4342696748774e56496974564b5968424f61696e5a52514949433647436c58557951452b3531434f436c4d3047627451516f7452416356434d30424b4b6742474842445652425a4574346b2b74785371704a79546a426b467875756142492b704b42586b72496e70626945426862456858483471434a664d71324a416935566b70367179515045784a6161573373684b757068372f6b685a567471344c4d74636d306f4e41394b7653464334397a716f2b6e626947412b4b36466e314c624544566348756b4672462b31507758592f774335427a4c64766452367042782f45746475462f785246477750344c5a4151776c4966376e43733177444855472f6d7751566a7a434b2b394e47417a634641584c66313349755478795358505564706144797569584453673047327862396962797a586838567a7637357377377a4a2f306f6e2f4a4e704564455a2b35423066496b3373653950477a576e7658446c2f6c46695068744758624a6c536638714d66446144667a4950516a62746a6d7254747a4541526f764a532f796e63534c786841444c457371442f6b652b656b32376b485339653952386d586b577646395278586d68634d41572b6f4e334a623130335a6d63793869616c4b53674d61347161697a496b6f4d676a4d726f32544e73315a7464716268615336554e7270416b416778576471532b515738624b4a35594c54477957706d74467662766a524277647a366670426e44344c6e36613158733739677769524e6e6f77354c7a66714f326a417642427a773451484a48745564334b4353346854785555646867676149436168516b34714f6f36425161756d7778516571694342526e5543685075514568304d46434755514853366d6e4a4555435568304244464d436c4b416441544b7445524e4b426d697a68676759547a49397961463478723756565a63486d67336567367532395272707542327a57677a45347446717858436458326477595579514e636367413555376c54324c5675476a494636474b7947744267673062616b645332695851655035724a7468307574396d314c56704c474a5156656a3771315a4e7a7a66465070484273304e3173347a4a6c5a71395575353258395178685152397950336479324e456f754279516332567378785443424e526b744e322f473461686c53514938766d6754523730756b726445526c4179344c505a6d42453538454642434473724a7a4d6b68636f4e667032374f307643654d54535134677275584c506c53302f53394f59586d4636503036374864625a702b4f31546e4b5037454646382b564f4f6b4f4a643665454250546b446a79415656357054303430577931434d4a4332664670724c745158797051594b75354979365366334b7952387670446c76637153576f4d386b426f427853774c7a59696a7147526c514a6f687643674d497565307262426831533659724a646c477841546b576a376436344f2b3952756271544f30426b67302b73622b4735303237564977316646636b56775535496330427754786e314f6b41344b59494e4a336b7373417039374978306c325755303730644f614268454842496d31506a3777694a61714771425a426c4b73695258696c42515837574f7537474a2f5541753763306d683967754a736f476430486775756275494753436d633473537566666f743979414242574864455078515a5a4652736b4238305167494f5a514a4a524c7057705242436f585a486d6f6358434164694c756c7a544e566b417735714d364a6c6d67674a577a61375356786951572f424a73747362386d4f4339667474704152614972346572682b5344465932636476515666344b775247624b2b63644230716a5032785147556a345141482b714f50656b6b395245643675476b697665715a376d4673494e746d34644f4750657430435730454f56355766724579656946526d636b327a3365366e4d4e71624674546a346f505677744f4363467a5057765268756f613763644d6774657a335537677238714664635347427a51664a377475566f36546946647472787448707846614c31762b5165676d394c37697846356656455a727963374a7379307a426a495a536f67376c6a63686a49674f63654e552b356c446348713857547244745036676667743852306151677a36426d7568746f7830394e466869356b376471364f3259316937494f6c746f35484a644b316973646b5572337264416a4c4e4258766a703239306a394d766b766c74736747712b682f774351627762585a7949786e304476587a6f5451584f523370536138507a5231615575697554494444424c6f71367445616432535271746d36424a6b416f31486168494f6f777951454f6c6e795263524371514e68564632444a5478526945417877523756304e6c3658633341317936595a6e6b7654626259625730424b46747a786c4a3351654c68416e414b7a37613949306956376c726442356351442b6e3979736a62746b306550595851654a742b6d337059785769506f747774554c32556255523238654156676848537944784f373268745778624a634442637654706f76636570624c7a493171636c347136444756585149686d364a5a426d6f6737332b4f2b6f2b544c376566676c3831364465626564364a3079424f455877433848435274793152784743397a365a7642764c4f6f3049385438754b444a5939503331756f6e5a6b5046706b35412b43326937767039426e5a45663441566c337672566a6250473244636c2f36522b61345637316539667a37644e416739584c63323745663639324a49713337463576314c317146332b6e743436596e47544d363567655a3153712b61706c4141506b67686e49347172476d536338556943454e696f5345576441494c4c4d39456e79585973474a415a63526139746636674548596846734b4c5447345939536f735431423831705945597555476933644d35506b363839367873764a756562447754717539412b5856556271456231733232385136653049504a464559756d755739456d4977536b4e56414779557951636f6a4242445846466b45574b414245596f4775435942384545303571457567526c6d6a482b46417249344b364672574856557355415a52422b4b4f70424d4b4b4549366b6f6967614a4f43446c4835715056304854394f33666c3945384146703347366a646c3574337778445148452f677549447037314a7a4d7a5641392b2f4b2f50564d2f735357346d526447467657655846644862374b37644c73386677514c5932586d7831634663505369634b4c7337626136596d52706b79314378787751655276656d58626275466a5978704a65374673784763735379356536395073794f6f52596c423565497855354c6f582f546a4773567a734f5343664e526e78554271694252304271673555374b4b5264756141346d6a4a6a4c696b647355454450567661694d693945744552416d67514a697249526c49726f625430377a44726d576a387975395a394c685a47727845684235476343504550636c58713939366262386f73476b4b2f76586e376c67616967787552697259335a52533337636f477543584474514171535564516330466c734f575853326c33795377384b3551643170463473774344753274774358517653426a537373317a726437564b69766a4f4277487551596655344158544c69734c4f7574756847354179416f755953394543737851487754443449456f49586f67516979413549446c5244776f6c5149445476536c305a42416c3855455959497452416846324449416963614959346f6d69435a7150524c6d695542624e41566f6f6f79434646334e4545784b415972706243376f6c48677559723974633053484242365745514b487457765138574c7541734f327556417a6271585246774f387350676738687672496a666b32424b7a526775687670526c646c707a344c4a7a4251455854484b69417552495a6c56547554516c57714270516a544a5479716f523447697569526b677075574462534744564b767641765655546b6564454149795437655a747a456b6f357150704c68423272725630654546783371713150544d557a645074726f75526562566f557434644a454d55486f647463614948763746523672612b34323077773152366e354259747075504b43364a752b5a4551796b444757654b44785234714247354479356d42794b566e71676a7147716a505245645343414a6f793470534659625568455379514c6c554a6561746c596e434f7551595a4f71356345424a3446444c425267464f5343454475553571533442527663674750616f394f534f47435874515473554e54795264687a51306f417a4c6236624d5275646f5a5933563232503841554151656a324a4741786f7570475241636e45726762666f625478585a6a634a6a54486e38304630366832584b39653674752f30366f662b307270526d596c5976572b72614f503165397149504f2b6e33664a76786b3943644a374451723246696368326865466431362f5933764f733270636d6c3355516436784d4d4f437438787341566c74584e5059744d62676c534b41364a503159634678763873694a3749547a6a4d66454c754e52355a4c4836335a382f593351636f366833562b5344357446796a6d6f326f6f343051494f7270474b366d7a394f6b52356c787746763949324d626350506e347a3465533749684735524278626531764e2f53676536685634325734303956732f417273773152775468337167386a647454464c6d6f646f516e73345850435252657a4d684c7059456377714a624b334f6d6d493435495041334953745349495970485a6573332f6f38626b4874317559385635613543566f36446945434279454761684367414f4b59426d6442484a6f7666656c62654e6e5a5762526271675a482f586e334c774d4947354d5146544930347236474965584d325934526a473344736945416e5963566a7162337173577245656e7936382b487756706e63746c717154334f6d6b716a322b4342593351664150636c6e4f656b74536a666b6b2b35474551422f4b6e74735a4364796b5976636b6555612f676738352f6b39353978477750445a684750656172676d4f61763365346c75623037307147637053564246575164586233504d7436632f6d714c62787037555362655274654a3262677234776f546d314548633242456f53493455586f646d4e5671322f365931376c3562306134626c6f6a4d616c366a59313238422f444642627574774e76453343485a655476376d5679354f365936645a385041666e6d76565839754e78626c6179495a2b43344872487030646e626a654570534f6f526c7172512f755163474f34612b584f6c6453786665516a494c7a3035744a2b613657326b5a7859436d4876516461635a626a2b6e416169426c6b764e62364572642b586d5972314f334974394d615a392f34716e314861446557586950366736687a484242354f4c3472664431433947336f675747576c5959526c4f516942556c6c3135656e6a61614c6d4e576c7751504830377a49784e362b645568713067617366624243397366746f6956755a3161674b30703863314c66706b726b5a537658446272306a532f34725a62394a4443486d34486852416d7a396145426f3348544d59535a78333572547550562f4d2f7037542b704a76466b75665030727a4e344e744574523768344d74327a394e6a73397a657341677a306172526c6e484e426e685a3357347153497a346b4f472b4c4a6a506662516174567563666a2b436c2f77424d6c4f58586530482b5667336370623949755275442b7047344f2f44346f4b4c6e72586e572f4c7677684b4a7077495046634f51414b39467476513462694e793643315a434178646c77397a59756265346256774e4965496471437531535337316e627830784a784b772b6c37614a3158726d41384b376532695a44677943754d6570774b4b2b33675a414d7a4a2f4a456152564d2f446f6a346967792f774355584a69376273665247416b4f5a4b3464703136442f49626b4e7874374e38556e442b6e4965335a385635794d794547674d5a4f74316839504d4c6e51754f47585132733236632b4b4471656e474a767a773651334f76426239385263734d42315236753173567964684639784b35483651336136376c6f323573355165557637323572694234536543486d552b5379377a706e7048475379764a7553432f637831585a4748566d7250546476356b6a4934443572563652624559586273736777375550532f4353324a516453374270466e4c4d6d6876764c365474706b63644a77397963454f5a48337130394f4570446b45484e33384c56344756714572636f645231523030517457376d6e574d4e4c703939496747493670536f4835725661734132744138576b305159626a584a52382b656b486a7739793647787362416a2b6e4b4d6a2f4566776f6c7432504d7478457743775a7063566461325673593234672b35425a4862516850554b784c6a706f343572795071573147313345375977786a32466530745759326949786653764b65743270486479595566542b4344662f6a4e6b2f31622b5947695034727558704333624d7a776f732f70316a375862517466554f71586573662b51336a44627774786f386958344d6771506a77644276335a30584368754c6b61786b566f68366c63464a39515164547764595771666f7472314f586e5737756d52486830762b4b356b64375a4d514249366a6b4935393675687662317330427033494f4666737a32387a626c535561484a4949316f765162363739395a4a6e44544f41365a3865522f426566384f534278456531453536634d46514f4362566b5546684e4d614641752f596b4a625075566d723234494c7469644d33344b2b38595172714a6c3846696a4d786653674a617a5846415a585463784b6b67545565354b614a64626a6d6773716345687550544e43454a2f53727674627077487751563235434a64646533367244774d7777584e2b78766b65425a6d494f43443059333173327a6f716374504661595368744c506d5873645056327279734c686a685438566f7562753565614d6937494a63766e6358444e614c5a464237565757464b72554f696f7a51586955612f4a58412f4835724a435773567856385a616941653942756758746d4a796a4a656e32622b56624f4c776a3841764c5136516579587958716471436246766e475079515773394f4f4b462b5974776b526949792b53666e78566432486e5735787a6c456a3330516561336d356c5a746a513337302b307565594e516f2f77412f62696b76786a6374316271576661532b336b47774f50636778663541534c2f634678674633503841497043647945786759726a7774796b5245596f46454641537533744e6a617467537534444e6170375859534477755269636448464235364d58706774424174774f6369756a4c5a323554306832504374536d6e36586168684d6c736a2b4344697536676b584c426235323745546f6e49443846727437485a54693575596f4f4a4c707a56526334726f6571624b47326b425a4f71424472426a564177664a6134584a53416a4b374e6d624767354c4a437041376c314c4d49516a71495a4230624870384a78726f7039574b32523274726230444c6b334e35614e484d5278437474376d77387069374f5038414d43516736526e434c366172487649695554456861376477584d62734a6b2b39533543517877346f504c37713249536473666274586246697a5963524379377578546b61386c7a3964774e567837366f4e3037377a59424858355a6a58446e525a4c636a6951726f58487161396c554852686375506f4d7a4c6a7943345871653438362f536f694e4d65774c667664344c4e73786a2f79543430494334654971674d6a6d6a462f656c31505250476d4b435057714f744a55464d374f67694d4a6345644f57503549514a695851576963534f72464c4f416c574b49446e4476775638656b6353677853476c4c69744e7932377a2b437a7342514941536a524375614c49494755434a47544b51446b52346f4979486859723274722f464e7559417a6c505531576248334c7965393270326c36566b34775077515a77584a554f4b6a6c3951554746554179523163554342677941776441586171685a54476d614c41386b43696c56436f6945472b4779387a5a486452424d6f7a306b5a61572f4e59616b4c3266702b3046765978747946626f31532f7742574877586a4a784d536757714c4b596c544241547a513755445446614e6a742f754c3062575251554d7531365836614a577a657578643841736d3732596a752f497963447558616c7572753267426f42487843444c7666544c656c375a4565525846755739425a367272584239785056666b496e49636b6b76545234725a64713855484d455178643356624d46327654744d706b54417a787858587662613249467350696738643461496a4264793363324d53317950566e536e7656647a5a574c31304377656b346458795163615262424b506775787650534c3975486d5248524556725542636a385545474b6a74696f5a4e52446d67696b6b545642754b434f79674b6d50596d78515457525236647174382b36497447636d37565177425241797951577833463446784d7632707062322f384139795876576567716832494e4d7433657541786e496b4848755647436d6f6853707167613058504a644378735465367a514c52732f54664e327875794a476f30484a574861334c6830796d59784844396944526139486a49644d346d5751645a78644f336e6f6c552f43694550546f5272726d3450444a4557327578684c71597535785a42624c654351307969414f785657665378752b755245595a644e56306433736f5173526f3464696531637957786c4f564a4d6775766634354976356375357356784e7a74626d326c7075426c364c6262532f4174433954394b3058665450754c6b6463716756376b486a585930525055654336487133702f325630614b786d4e513563517345515a6c6e7751442b4a526c434f70544642425642305764516842447955636c416c6c415367675a486b6c4f4b5a67634167564e6a6a5641425131484e424f314571476d434341315a3148436a4b79454e51306f4267354b733176525857746c4f5131454e5432775755327a4531515843576f3051456d494341365453716b685669676155364f36545563596e424b4358624c354c66593264693441664d41503853444c5975534532347037387670486575704c5a3765492f6f4635447171754e4d47453277515a325a526e567534686f4c63617173594f676d7374696953525230714c366b453542523144676f546d45424251376c4378514f43413442444251635645444f394543324b6a3856485a3649476f365752446c6c435644516f427a4b746a6245675a48424c6268726e4750466c3072396b516f454532323946736d6d4b33326656415234514f617777334d4c5166534454765365614c786149306f4f2f44646d35574942504e5a622b2b6e613668477553585a325443704f4b6664574a6b73785042427a6d334f396e716e4c466262507042492f71584161615233726c2f774261334b686f742b30763339516a616b4433494d7671486f317a62764f4c53695030354c6b737858304b7a485646703169664646714c7876712b302b3033553751647670373047416f455a424d5938554479514173436f7a714e52426e514e4846513178537563457a4949534169617055616d75534173586443504e5246324b435949416f6469495152394f43447136466963737679576a374a736330474155544f3153757048303079366f31545332424d656b494f52584a48426144746267505245704c6c69356150574b6f4b547a55624e57614d7a676c4f4b41367977424b5751794b67634a76464a3830472f6277416a7a2b613656675663344c6d324a433377572b4c343855467537737631776238567a504e307961547273656262494157586452746a48503855484d6e5a45356449626971726c75726356766a5945694e4e535674746245577871465a63386b4845334730753764684d61524c4a5632375a4476526575395932594f7a6a4c475553376e483372797a617967736a74376336526d7a3863452f396e76694f7568484b767953523231776b616172554e78764e7648413663484846427a527337786b64496372527362747a5a33646368544e7869464c6534334675344c704666355664752f55495837656b7761546549494e4671486d377946697a55484673737975684d615a47655a584a2f7879596a766f334a6d674569663970585776334e5231643145464e786e37436942334a4c5165574e455a79494e4d4541315945355a717752786d4d426d7157634d4168763738724e6b6a39585367356e714f362b346c7047454b65374e5943534d5645327171414d346f6f52546b7262566b7a4c3846326476364d4444564d2f796842786f577079434537556f795972766e5a51706c6c334b7135746870777141794467696d495579573239743272425979474e4d5541714b49676b46316243794c69726c4270636b44782f544c4e43395a3875576b476d4b574d636c736c62315758474d506b676e70306179494657572b51594f416662397978624870422f426251504c6a314f6770754d53446c376c67334c4173417568636d414f41584f752b496a4c4a42514b7152345a49755456416c424938564b6a4243694c75676d61676454424c5230442f414970564861685237454551417a4b49716f63454856394831617079677a6a4264326671466e6268363967422b61386e74377074454e56325857755246316f5342494c4e782f63677375657375576842686a715666397a4d3856664d626662306d497375564f2f427a704766536733446436366d6970756e7a793552326c6a7a75736a554d46315a656e5468624a694759505846427a426668743661582b5330625831574675576a5134504368574f357470334a3473723976744e4578494230486632323531316b44486746726a656c3574757448507843353175576b786b614d746c6b36726b546b432f77516434795a597239375a332f414f6e644e75522f544e7678576977645556527666547247386a2f566943654f614479642f59522b376c593254694e444a3668332b5336732f524c4969784a316d7572566d7456797862394e743941446d6e5469744e325833466a7a593542776738335061334e764e6e31444a6264724456795631736a6662534d77326f664e4e74593135384548513238577777577742366c6c6e73523936723952336732646956306e4434386b486b763873336e6e5878596a6862783753764f734d63303136374b39636c636c557972373075746b466b6561627343726a4c4c4a5857794771674d48414c724f776648506774303447454979506373544238615973676d4b496f6449516a4e38513649754d6643675751303077534d68496b6c30786f67474937507858523950325a7633424f586846566973572f4d75526941376c6c36613144796a6f48306f4e3175314b63514967734d6f30777a5630625534347849584e50702f714e38613433427072684c38466d6b4e2f737a2f41464472682f755164325136514d6b3450746973473233706e4471476b6e697447754a693478516137636d785769424753355133634c5a31584a5577384c30576950713277694b33522f746c2b53432f6368344e6e6b764b2b7137434c367869783936394a483158593354706a657848365342386c6e336b49584c636f767148306f50436e6d6e44594933375a684d7849617152754b4270396e3731305053393062516c44493438317a645a4954776b5157343845472f6379656f6f4f437947337a572f79355851444166424c4b7851303730464d62485038304a6752686f56326a366852632b6433676751687a7a536c45504a4c383042356f684247726f49674156485a544642316472754445645a3656326264324d686f6b777052655a735372704846645062336d6f7944734375425542306e555432636c5247364a4144334b307a63455351636231697738764f69476678647135492f69587137384264747a6a4d4f4a44342f76586b7a69306b456f454e534c6f4469676950466b437069676d43746752413956516c7469764a62333273496b4e7134484e30485075474c3052484c464762546c2f54425639765a584367625933424734303850785133746a79356474654b364e6a304d334a654d552f546a3856647666546f345843585a30486e6e346f4f324b6378414f6d7058567652746d427454322b6955576155432f374548485a544138566f76624f396247737749686b733443414e6d6d77716c777855636e73514d634f61763265326c7543577769714451726673625a6e47555268303449456e5a4e6d68444f75707476545351444b354f4d6d6355594b363573356d48394c5447492b71542f67735933473473792f2b3469584c4e3153487951644f7843646b2f77425335724c3942787077585275524e73435178627558424f356e473545534d6463694b59426466316165697978494570454f334b7143673766633767743978702f68776238306c375a3349654b2b4a455a4f7550666a64686478727a6f74747135764a6638414c616a6548454d2f765157546943435a566c79775845395273655850555251354c7458626c794e42624f48684f493731784e36524a69596b483845475271596f4967305a54464141697a3151525142454f4b496377694331554177706b74657a414e796857594d3675323930774c7658384548707654492b5a4455634166656172743234794868775849325739326b4c63626362735251644d6f79787a637375704863526b61536952794b4239316238327a4944466c34376532337246657a6e4d524b3874764c746b4755415a616e30783068427a4e4f75476e366c696b47504e613579496c7172546973737a714b4245572b4b434c6b6f49774270696f4452524b673052756d474373473670683765355a6341726242356436445a4c63786c536353734e7968365174734e4f4157666352715546424e4b495077556c79554b4161553157594a6141714531515148696f436f434146414542484241736a544753414b43457370696d4c5a464d4c5a4e5269677241725647693032396e4f3568556677713666707842306a486767775934496157433649324a69782b6170334e7531447775534d55475556514a56397262584a466f784d6a77307254483032356a4945666767352b436a354a377471567373556e5a676750616e4561676a696b726e696f433145486673533054647741565676665644502b6862384b79584e31306163316a7a6441784c506b6b4569796d6d6a5a7252746470647653614e57515a316662326479634464794337757a2f414d644a36726a646d53365a394b4669426a6a487861575165487245712b334c5547484658372f302b65336d5a43735857534c4f55476f524c6479795849744a73466f425a4b59695455515a565a45444e6b4e52314a4547753149784c35594c544762526346632b30573743726f303655472b4538385879585168654e4f4476775a63614e7a71634c7057703668516c4279665549694e32584f71794371364871594f714a4f444e525a746e74356271344c597a492b504642585973547658426269484a4b332f32332b706f4e492f715a50366262386a63534576464148446a79586f4c7532387a544a326c694b6f4b4966343574726b5470755331415a6b592f6b736c3330653736664b4e7958586242792f45496a6258484f76642b58632f53656b652f7744656e7477336c7432334d4c3054517831616e2b43444a366e636c757843455234544a632b7873626c3634594d77474a5871646a365a4b4e7a56497543645239735666754c48326f4c5645616f4f4664326c7545424333614d2b66446d755464326479314857596b444f6937782f7944795a74354474334f756c5a396274622b42745369314b786e2b4262356f50452b57636543727a587544365862685a7551486938756138515256414752646c4751774b434867696173685531554171676d534e746e42646c496d71594d554854747a3069504a6465334e78307269776b596a4e6239764d6b364a746767367a7558794878575431553674704e384b532b4b7545795279565739496c597561716a793666376b486b52677937586f4e34367057526d4e5565304c696c325674692b6246794e7759784c6f50666253656f504c6956736764493438317a4e707574766459794447593134354c70783239736877537943364e3059562b53614a313576453950464b4c5673566233315663397735307779355551664f4e3559473376334c492b6952696e324f323832596676344262503869322f6b3732556f595852356e2b37397131325952743659527769673651684553614f4461565a7179564f32426b58772b43315274534e525876775145583949357134465661526d6e4e734e7a2b43427361424e71314656614935594b7a545669676b6a6b56355831327950506b525579615834664e6573504c4835726a622b7847643576726b425867487167386c4c47716c416e76572f4c6d59384371794d2f326f4f6c2f6a396a7a39396147555a612f39746677587372377a6c726a693634482b4a375a35586239614479342f36736663793738356d755861675033416c6c2b64457374785a493673565847327854537452785a6945426e754c49414549476e4a6372316e646d3373794d44654f6b667943702b4b32334349682f5a313576312b2b5a626a796670744152373853673548617239724d5737305a6e415343704876526442364b5737687549746672484773666b7565615270677935336d534e4864644b37632f70414448535063677439466b664d49487346376a61482b6c422f30522b532b652b6e584e4f34344836563772613775794c56762b7045466853556d5078516445466c78765835675742484d796633412f4a64453769794f727a492f3767754a76377633637959454745526f6a774a7a503449504b37697a774277376b32796d4e62546f342b4b366b4e704d7365437a33396e434557307463787878516262557a332f55745537677432355849314d593675543464754b354e69356831594c6f57644d68704f42346f4f627537567a7a374e2b37474d4e656b6a543848357273787378753235526c3958756f4d5668333171354c54536c76453471327a655a6e346f4c7266714a3273764c335671564e4c546a567832594958665762502f54743348357448383130495877594d3365567a4c3967796e717434673950424272394b733349475632372f77416c30367063514d67727655725568356536737865375a4c6e69594e575050325a63612f754e384a6d666c39342f657568742f554e374b547974784d44334549495056646e636a2f56654d76307a6a4c38416d473974582f366579673977394f74693065645771453132456944496630795477663572565930786c3034477644384542685a6a7437666c4443492b4b346535326733587146326336694d49796c32734b4c767930363863317966542b6d39646d66726e4b4e6557434249625749384d514163424657694d6857497752386b31305956527479496e706b6759737a444a4c354e6541434276784853486b6c6c35737a71316159665637666d67782b7357504c32517a6b626c54334c7a756b74584e65723346363365334e6e62797262455a507a63454c6d656f2b6a797376637331742f45494f54476d433657786d544c7137317a684b6d4332624b5447524f654344712b6d796c4b3564375973753966746557776b4d7135317a5754304b37474d4c30356b524a6e6a4974674b4c667676554c6475784f634a784a306b44717a4f43443539755a6d637a4d3856575331436a636b4a53635966464a4f5344722b6b79457264324234786b65784732504a755468774c557757445a377337575a4c4f4a44535672383858354762566f394548547433594d524b6a354958414b6b534b71734579692f7356717478636779346f4d6c694f6d5275546c586e6c772b53364731763235476b68515a746d71373370384e3531784c562b41664a4c6239434f7070544a34395044735161397a5a6c43635a414e7144386c71684336346c4a6d39367147302f6f65555859654869456c69386475384a3151624a45526b48656c567a376c714e7937496d72584449653558584a6c6a324b6c324964426f6a4b70346c5a5056374d622b316d66306459562b73537743792b7058764b32637a4944712f70343855486b52534b4a55456e4e56626f4251564e526c32746e644f3474476239554d527979584d6a5a3130436659332f414c6538387643664567336275586c3761542f5552474a2f4263584e656d39633246324f7a74336a46672b715934617346356c336f6759534c736f4d535168715434696d5879514b656543426b43644f5359394d55724d674244596f36324b4146556330414f4b7673574a5853497778535650344c3050704f7a45476c4c452f4a42627450543477367946307264696d4c6a4257694c6e6d7234304442426d2b32426f522f745848395639496a4f4a753276475070586f47307866325a417669794435314b4268512b785477484e646a313359364a6134426766785848694246676330463048657543304370717172567833417854796471596f4c4e59456e48633673673863617167417530753557514a6a516f4f6a4239424431307958724c416131456349782b533868596b397534587130684542657773334263674a6a416748336f4862495a4b634837457361344a6932614479312b486c327742394a306e6c6975544b364a44715074334c7665715734585933744a66435650314c7a38324c556273346a3971436d354357347766534d48566e7032324933506c7a3851666e56612f5343504f3053377535534d507439365a794c75586f673066323664796a366a2f74556a36626f6f5977433656696362684d6a534977567432635246426a735772634a5230354c7037726178754d577a584d7454417539525943754749585a6a63746e36683830484a6c3662626c566e35454c525a327349306a41413450706f6e38794d5a474d76337256614c785156477842326e45476a4e706f76492b6c624b337539784b33644e41437a4c31573733413238544f5741636436386e7464324e6e633832464a2b384d65534337314c3032337335784674794d53363531792f724e5671395239526c764b7a41456854706f7562416361494c3962304f61513350636f34694b464c585041494c44634f49616e6469747533395476576d4d5a6b674477797735726d5959356f6d736e51656c74372b31756d68506f4c5a34667354587653346d73574435354c7a596645344c752b6b2b6f7532337538656953445662394b73514453367a2b7244334c545a7357374f6e5347637336744c7368684b4a504642356231687a753536736c7a79636c6f33383965357553503669732b4f4343505369654f437241646174685a463236416342553979445a7366545a582b7557433746763075775046716e797757717845434934354c554b4238366f4d7364685977304275797676576663656857626b656a706c6b5858576758495632416f67384275746e643255744d782f7134717353793472334f393259334676793534664a654a763235626534624d2f70514f413563724e65746d423731666c56516a56477455475455677032715551527a697476706c767a4e7a62697a3963506956684f4b36766f524133747257667134746c54346f506f594875587a372f4951322b756a2b5835426651415634442f41434f554a622b345979444e48773969446b4568474a795177556269674d704f55496a4a4573634d45726539424d614a69475177716f4844494352775274776c4f51674d5a4d4233705858562f774166322f6d37754a6c6844713932434431643259322f524843496a4566364176462b703766375863536856767a58724e314e366e32357267657466314247663152365a486b634548467877556335714568537143426c32663841486254376956772f394f4d706667754f757a2f6a74787430625a714a784d667851585267626d384e2b656452376d58577451684f424a69715a663070792b43303763445167356d35394d676670786432574d62453270616f7a6b47586f744771674b7a37694563536350623969446a6d78633178692f5649306b426b5675334e7539596c6f314f4f476d71326248626d6477585a43736644796461392f62486d363272703766596f504d66646259764736342f302f74576f5739704e35625735705044416646614c3278467731694b56706e32725461394b32307136506a54356f464f39744730647450554a5469414f6c77636e37797648476862454c3642627352747a6a4e6851616131396d586b4c74683458747839506d615939704c6f4f6332525331785250425369414e785550775242414369414e56676f464477557751516f344b4f7a4b4e546b674c2b3544776f4f77554a51476a73565a5a683568307173597375683654747a66755462365953506567394a61674274375147476c564e6f65597853584c6b7262524c6d69574f34784573554576586f5242346856626474666d547a4f6c2b4470705849584a61726743797a74626939317748543771634548704a5146363062522b72504a636a7a50747a3564313851306c52744c75374c694d3552493979364e79314b2b48764d5a697268413171514d756a4662683041796a6a4c344c427472326b395869576b335249466a33464279763867746562474465495038567834624359424e654a346356365738504d4a675771506d76506573536e5a335537635a45596371616543446c7351574b56305851434348436968557a52456b456a46384642326f4847754b6a384542713956432b4368624c4644416f49374b46386c496e336f4f674b67646c485a5232514d434939533162456d6434526a3953794c70656b2f386f6c322f476944304732456264756c466b336e70554c306464756b7543732b386a5a4145336f474b7a5866576266686c624a35796b79446e58746a64674b514a624f4f536f7557792b6b67686432313670626e5879326c6c5846616875756d73633850336f504b52424d764354334c6f656e656d7a33467750466f635a555776636575434a49686141493470396a366e646e4155366550374548624f307337537a7074414273546a374f563476657749753138576646657a6a63313434454c7a5071316e546345323854386b484b6d664d505a7856656133332f54353237586d6e503663317a30424c5a49344b664a426e46454279553746486f674278785148537968696f7a596f6767596f4a7059556f675278554e455452414f53426276557a522b53414f6f373054475076567531633341416757785335476a31474b3942754e734c6c7769476b5277385076584e334f324e6e524e6d4a4b3657337678506254336f4b2f375671784c2b33745657572f5468624f736c644733644461686a78575063656f526a526e4b415752706d474e506169366b657133556532433839503151322b72534d56645a396375526a7045427a5a427575625731636e315244783430484a58574c6351544744663656794c32356e6362554d667756316a637a685357574344307475485479584239643230626c367a646b4b6547584e644747376133784370336b42636748314552775a6b48473954744177634d4967644c4c673472305734684b4f7a75536c673443383633765145594b42526b4355456f555379464d55636345414b4656367638417833306a62622f62584a5867383952694b2b45616351764d5467306d6642414252444845714c5a7362423346364d50696762623743647a7049717576742f536f32794e5147533656376457647444724972682b7059342b73324a34356366623234494c6a5974776a6f6841636c4259305342566c6a63777543683747567574687143437357476f4147566c757a7757532f77436f57374963752f414c4a4c317534346a616849667a494f2f4461776f3955312f3071337559615a39784b38395939617647555869545771395273747a43364b4f472b6b30785165473952394d76624735706d4f672b453856676c4266554e7874346275333556344f46382f384155646a4c59337a596b58474d4f776c42792f6b6a704977376b3034674369757557394e714579616e354947682b6b72714357714c384179357531715153757041764838776771494450556f7774505771636d5673595a5a5543726a7649673958376b416c65753763634a446972596571695161356c56477a76374e7a706d53787837736c6f46697875434a524159697674696736643365324e337469484868776571387461322f6d446775376532486c51506b644c69725946637357376c6769444d5363554478326373487146304c48706b324175534a633147546f62532f47547637786d7571626b5978456f2b326141433343334767487a586e66584c555a58414c5551446d3342647137754a446f4278584233467a2b735355466579617a716845676d51306d533246376b644f53352b31454e5242784e56767554366453426254616d6a5833657a4a32365448695656626b787764575265725634525157786948464872697556363164387a6336426845414c71326f5a354d645863764e37715771354b58456c4257437274766265516b71347766386c32746e5a4169487843445a73625130366a47754b325275475855526d68434e4877344641544246535544487250425538575a504269574a5a4852716b425242696e5a6546446d756275647559696771765152732f71727943467a5a526e4370777230346f504c57443563324a576e6457786a477158663758375735704e507139366c71344a7838766967787859466457784147456a78444c6d334f6d54634d3176326c32524651454457624d626674565765486d366b675154494b515065476f676f754179655752584f76426a7042646235303659726d33443149414278557851436d4f4b434e714b4c6b344942462b4b416338314561494642434b5655647777554b4d61494145344c5a4941313731666132766d524a48356f4d346c566473536e4b33457878456356796a594d4c6f6a4d4d7651376661644c5974386b484a75577a4d3958357157396f34433768327a4f3146524f786f65517167543076616a7a4a6342334265767451684f41494137563558302b554e73535a6e4665693247346a6368704655484e336d316a624e652f76564268626438794d497270376a63324463386f6b616d7146352f63323532706d5553644f50374547364d4e5064372f65757074413869546b76503239794e546b5647533942366249456b346a346f4f74436756697a68383166453051632f3166627975324359654b505546797638663365714d37457a32426433664f4c4a49786f73566a302b466e2b6f504678515a49572f744c5a686c4b556c70327474713545704e35455375527463395330576f31667551624c55644b38622f6c507142755347316a6b64557533494c316538334d646e7435587059676646664d4c6c77335a6d63735355436330436330326d71456735515370784b30326f4f65315a346338467432514a6b41612b314542334e2b756c38417979632f71567437714a4a48616b616d487851434836685253636c4e42725656466e6f676a35594a516d6a315971414f616f4f6e364a61313374583651363765394679324e647533726c4a5976524969455a36766546364b316245764451494f4663395439513230584e6d4d49697548375564742f6b30376e52754c59493478433755746e75625a2f6f796a704e664370474f38694775784248476944446374575a79315777596c71465737657849755673616a7a4748494c5a5a746744704655484575324e4c366f2f42797378762b6c37647866694a792f5445566634664e647a6462634e725a7a6e7050795842334f79394e4236784f425036587238435547757a6439463341307745597949776c716a587477566b396c5a7364647036393672732b6d656d33347443334d55784f703166623248322f674d6a48394a5165573958746465754e467a63634636503175316f7375654c4c7a626f497a3971674b6736545244436e42427173372b395970435650676a4c3147374a5a42676a6767667a5a7a38524a5665624b596f46413841376734414a63566f7332544b334f356b472b4b7a452b3941314365536c5147535970685241487a525a46545531516761456d4b325735754b594c44476756316d62486967374e6e70446e4c344c58626a71437778496e485646573763796a4e34303976795161355230386c7850566241747a46775946647731687850775750637738327a4d5338516a7143447a776f6f7968693155436377554578554152356f427a5242312f547469626f66384155363645765459527047323537322b616f394e764e5a6a45596730376c33724677584d58376b48436a7342456b6b41484a61726578307945774333387937516843474f584a5a4c3179496c6f674f7553445636625a68704d75355075647062764468697a5a46576245474e76675539323735644a5a386b4841506f313263734c65714f626b4f756c74646c4f45656f51662b47744f6130526d354a5a2b61315250757069677a58624d5344475163455963563454315461523265344e6f596331377139507147626e357277337256337a4e35634c344854376b48504a6644464675434c49616e51444e6433304f4d576b63364d75473772732b6d585978442b7a6f505232726d67312b4b653575497656745038414b75574c3730786b734f3675796e487934305161665464744465372b5679524a74773668776f7578363374764e74526e68474a6a4b52344c6a6262316d787449694562636752546b546d654b33585058376436327774584a66497567716a4f33634c7a496d422b724a644452627473597830302b6c65667537533962683538424b494c76452b31567132643833414e62507777516242624e2b343151446d764e2b71365465506c2b4632486376516e63517447727637594c7a4634536d544b51343971444a6d6d4548384b465161706f79306877673062665a2b63376e4257584e6d4974704a3731585a76364365615364386b45494b5445784a48424b4b4a7a4979726d6b4342374e755677744845723048706d7773783637306f67384c6a4e2b3156656a374458455853326b796176743856316f2b68626345617a4b5a6641596539414c2b3132526378765758353651506756565a685a38794e75426953586a2f54776648327174635051397047596d49476e306d542b337379532f7743565933646978617436577230486a6d667a51614c376b566f754c36686673575a794578726c5367794b372f714f7146754f694f70376b59793467496275646d78624e363642586c55307851655976626a61586739754534794237566933567532496b78786450766655626c306d4d535262796a3742594a584a48784630416b2b4b4c50676d6a41355a4a485955515138306f596c4f5334536b6f447a43654b72787854516a5771445842786d333471306955777a4f796f737969615a72584470485a2b78427a4a776c45736f314b7137645468493946565154526b412b61474f434a71464f614153527755487a55514236495964694c4d693346425a596871724c414c5444615375345a6f2b6e786953524a6250744c3853396f304f4342663752754c505845344932392f4f482f4953543830384e6e65736b53767a496a346d315974674d306c726261376f316451782b4b44515945675462704f456a7856634c2b33743945354e78476c332b4339464c61516e5a4547364730727a65363252323979586d5231524766795161725737736543784d3134342b396c716a746a704d707565654b703950743259783641753362364142772b5344796e715732476a574d6c7a646c6131336f78496345674876586f2f554c4a75516c474f59712f484a5a7653396b524b4d6a394a487643446a3732486c3370775a67437a63466d786368614e394c7a4c39795847524b7a6a6b674c38553049536e4c534d65436c6d7a4b374d57344235534c4c324778394c687349655a65443348725232376b47543033304749416c65424d7a6c6c337230466e61573751614d5246563276554e6e49663873587736756c62644130754b672b4569714266626d6d46517a66693656686e524e5446734f43444a75396c6276524d43472f617645657162435730756b5a5a64692b6874484c755849396532766e324e546455505a6b4869726367656b684e4976345656476871705046415a41697152585277304b6b75636b4542597572487a576737545461426b612b4c75575974373046746d587758553238437935414949722b586575745972434d6955436571782f70686741306b663841486f617230354d2b6d325a56346a393676333176565a6c4c366e57662f486238595835516e547a4936554432375274334a4141613563463648626e58414f3947584b75325a65615449414c54744c357448512b4b44707932467535342b726871717953357474747471776845543543716e334a413663547a5a63343737622b5a71334d6a45414e454d652f4a42323970463450676d6d4250704c474a396d5850326e724f32306d4d5a694d5166714f533250432b4e567159662b4575677944593359645733766163394568714837755330513239365856754a526b663459674a4e707574596166697757386e534b346330484c337430574e7663754f33524b4d653072776c36334b314c526370495a4c323138692f4f4547654a6e386c356e3132516c767270356a35494f6141374159707758484e4c475248745248552b43434d4f354b42524854784c4a346747694374694544514b386a4a31586f61736b473279486a4538537474746f6b4439724c4a74515442677464754c6c7553446f576a70413438465436684b4d62457a79622f7742537541654969566c39557074533163427137332b4b447a636663456142414d79424b44752b6b792b35742b5449395676716a2f4b6352335972306c69427467514d713971384c7462383976634679423668385633397275626c3843646b687630792b6b6f5052363942416b4f6b3572514b526543776266566368706b7857323264493549504e2f35565a6c2f51765a6e564833467773316f2b5a463832376c73396433766e585073496761496d4d70537a45767962465a4c45524f30426d41676377383534676835593155486f2b35694e646934334b4d6c6c763757486d615a544d5654486136434a3237344179725833494f7059335737747a467663645657642f6b7578356a572f4e417739363431727a4c6845356e56707a586468612f70434a4643506d6735552f5564304a66304c4d535034692f354b364f373952643731694f50306c71653872426475627a6239466f785174623731474131334a61674434534b2b2f44346f4f3335346c45305a6c6e764d4775634b4a4c4e383769496b513336686b6d334576365a4a46527751655033622b644f6a564b6f3849573365376537626d5a33515271507a574d7367396c2f696a66613350357a2f414f31646d5668367861764663503054546132567551784d356e334c7032397a356a68326c7a7a346f4c5a625739495978564f347578322f535458356f584e72757235706461504c42556a302f62324f712f4c7a4a446d67585a786c7562676d5131754d766c6d76483736386232357558446e4b5339483678367035646751736a53626a2b34666e6b764a456f49795a2b434159554b426f6750795736354e3763522f4346697756786b3848514a5a4f69344a63463164357534754a4e384175514777702b43747633504d496a2b6c426f6a76596767517478725371374e7658614168634875483741754273594335667436734e5139777858714a534f6f7946596b394a5153416a4959676e334b712f594d78716c58674664474d4a4d376176696d694a74704658787951634f4d445a6d5978782b61736a646c4278484233374674334d5072474b35317937463949705242327766754953693472457349342f46632b312f55674468387952524a74623574536f33566b6d68666163676144687751624c4d4a5a6b6c766368633339717a50524f764c397974747a426c565a7655646862483965446955545538753142646139536864687146693549413477693965355844314b46756c323163747750314750755675326c6645424746326a4447494e6678566c793775534e506d7561564541506545456c6568754c5a6e626b4c67485038454c4473337556566a303246713535387954636c586750634672497a5153353052645a6f322f4b68714f4f5065727239793345645236515679372f414b7061754679576a3457346f4e55493473616c5658626b4c516534637175755a6439566f30413341357059794e37716c69654f4b44544c31477a62365957355437614434494865626935536b492f70437130317052504b52486971554776626a55645948584877793463565a763841652f61576a634e5a5436596a38537164706469497935664665643375376c764c68757977794841494d39635674326371344c49655330375a336f6737327679396a656b65727147504e6c77723933585341306a7343366c323570394e6e4766315445597268536269674272696c4152695752497167426f7447796e4b424d6369466e6b444253464a426b4863747931557a56312f61334c37615a4d417566626e555a2f42644b78646c49434d63446b6771746a63476e6d696933573537387859547479626a512f6768445a546d4b68583250546a5a47716851557a334f2b5a6a61696634684c38316f3136764679393632476730346e6b75635a614b6c415a4671797a384b6b584937565350366b7a4c494b374446424861576b466c79505874302b6a6278726f385861563062743857524b3466702b613878667565624d794f6142594555456c64434f5957633571794d69416732747878483471324f776a667632726572534c6b756f38472f464a6275655a41786176755462396f325166314950532b766261384e6e4d5433414d42394d6f78477254566e342f6976424f6d666a56414277376f4949703449637852515651504d61656c557536746253716947514e464b4f314e71594d456f4a515757344763774d31375859325a4333453574376c356230714d5475424b36644d523150324c316c6e66575378684a2b394271416f3479545146575753377634516a557341734633317155442f51746d522f697751643078303146554b487868636d7863334f342f3841754a694f625263466237556442784a484e426e395832336e376331717a6a7558686e62784c33322b6d5957627039717278453975574d6b4573796355785639566e67473746634a416f476b51435852684c4d35717645317a39797342306d76734547793149694f6f4a72303763432b6b633866774b79655a482f5638456d356c72376b47727a72656359742f712f4e4a644d502b33476e38522f4e5975525336386b48707471664d324e786741304d7353754e4677474a6f756e36584d584e70636a39565238467a43534f6d504948745150736273624e34536c68683738317633396a5841584934506a4663573637743755545774314b4a596e6f4e434d6d51647178504c397132786e4751306e4a5a4e45594e496546563372736831416535425a6332497533334d6a4749445046626f3743323275627a49384d6a3766466351584e314d697041572b78613363682f7939334a42303557497a5945595a6f3278634230724e4378757a3472346273576a63586674374679364d59525076792b4b447a5872652b4e2b35354d5430573857584c663949566573794a4a784a2b4b6e4e424e54705879554f4c346f53705241544e522b4b6b51536e4d4a43725537454353504247427a7a55467558637077795150716a694232424745394a63596a424a72494c714357637355487350547435486557654677556b464c317a795979756653415635666162715669344c735333486d757a36746530375856482f715348755a79673832616e55554d4f315278696f41324b4341686c3176526f6170793430584b59344c712b6b3364426c7179346f4f3961695939693167734f7063535872426a2f7741634d507156746a31547a4431305031494f7647364c5a71617158505562466764633439324b78763568314442594e473173793133754f70326571447437626652334c78747850387858422f796261365a78766a426d6b756e74765749584f6d335a6e496548494f744f2f7366646265627836694b49504650376c5a725a5636644d6a453546456d6c554656364a474b72447856397761687a4370424761414d395662616e45654c425650586b69345164412b6f3353476a64755930366a677345324a63464b464a466b41427952646f714b464242555555776f70326f31646967474e56487169527153733641766b4b7230762b4e41437a65754878644d65367138797a597230336f4d69647264412f58412f4e30477663584d414b6a677556755a44797a4362562f426274317742623277584a75456731795163336d676e4d587746455957706d72494b79636b3971374b784d5467574952386d62616d5361534b3151656e32312b573574433550484277744675376f37467a50534c676e593050574d766756704c79364f4b4461642f354971335a6d56686e756f413635676759397979336f2b52654572674f6a694d567473376a6233687031675a6461445a7376564c46795478634d305138614c667537676e626e4f444578443438467735656d326a574a4234365a4b2b31365a43324e55537a7639587a51614c467754646a556a42627259784f51586e6f584474376f674b6734647137734c72786f67656371644f533448724e754f303246757750716e722b433772435866376c3548317a642f633769514867743945667a3730484e5a5163304e53446c6b42356f753553674571557a5151316f6f3649436a634d55455a304d30614d674f614168735368324b414b4f2b4343633132505137304c63376b4a6c7455614c6b615554515651656e76526a4c6e386c524b4e57354c6e374864427445735630693270426d6c663079495971367875623865694d4e51344b3430426b6b6a6575437353422b4b433462712b432f6b5369633231492f334744663841484d532b487954626664626f6c70737435764341315847373047577a653877616f38465a624656563935596a497945682b534d393961735231753479415158323464585557714e52344c792f72462b462f64584a77773849357341456d2b33397a644774426c454c4551516750596c45733352436e596747546f674d6f794134494a696945485a48416f4a71634b55516c584252716f4969527857763033592f6662694e683264556269304c567964736e77534d6663554666616c4a544371434267486f7572366442703653576463714259764664726232326d4d78702f6367743331737651594c6b3359546e584a656b6b48466171696577746d704c636f6f4f527359537433424c4a656f685a4537464d5350697561595274786a4559666d7570746e6c5969334242353764656e45457950666d744779324f694a695365547272583767746c2b4b6c754773733145466c717a4b4673594e4875646333314f794a6d4d6a6b6172737a49674f49344c4a66455a524a50647a516337316d5039474d346a7041303476566559474b394436772b3132386244316b64544c7a784b416f41356f757967706767414c715637314f7852415938537071514367705642455361633145654b41597142516355586569414f6e7333504c6c71344b7368456f50543775333978434d7868706f75586236544c4e54592b71655462387559315279354b54334d4c306a4b41627471673032357a4c365377344b61594146736566344b57716b38426d6c33473231676e4e42585079694f76464a4335614649425557656d663952644b33757263434f6b632b6b49476a754c4676786a464c7470446346342b484475566b59513376565142387558374675746257473363514644336f4c4c5141717a414b3364334262686949676e4f6d4345415759307a5842396676384139534f334238493675306f48395933317539415762566136704663466e524c73694349346f41416330423855776f6c5a3045646c41516951796e4a4237542f44374537646d356550686d5142335a2f466552334e75566d394f335078526c4b4d76665666535052374a3232307457705967664f712b663841724d64472b76413065636a33457567774175757a364c41784679364b734e4935502b5334347056656d3948303239704b4d67656f2f4e76326f4d4939507562796571636d475846616a364e624553386d493534736d33517666384e6f4d5031502b316375653176766a546a716f6732772f774444714358576f335a33514a42633645626e316c2b2f42646659786543444665614c61306b64787437553963363070327272333972716a554c6b663277544f70716f4f6c74665639724d36584d59384d5077585a324f3973587157797544737654626344317744487658597462577a45784d49735268706f67366b376b595359727a502b5732424b4e7264513743655749586f374f4e566a3961326f763753634256712b354234612f614174436239583732585147306e633239493452372b61394261326533756257457051425048735462693535556f452b43585446755042423475784f4d4378585374335771666273574c316661486158394d664365715059724c5a4d4e4f50466b48524f4248745655337476624f4d64556d576d7a49584964566542533347425a6b48466e61387558685a575752636a4c565a494a585276624d33574c756a485a79746e57374159494c74723678702f703767615a2f7178644e656138386f3037306d373231752f44553158785332347451554343754c676735666b7568357571707743783034565674793547417157514e50783177584d33756747576b3153584e354f52666973704f70795546746b48415a596c62416155574b77574c6a3936305150444d6f4e4544704c6b31546b30344b6e7a532f465776704f5248346f4c49394d43634b4c7a424a3146656b76394f3175547a6233504a65617778515757427149354c765133666c78455931354c6d2b6c734a4638786a7757796671635955694e512f6c6f677350714d3555307377542f6445696935307439352b4d414478484e6174744133433434653942624f2b572f695766636269344a4e4639584661723167577872564633632b56486f5a38756c4256434f357546335859324e6d2f617a6c4953385834727a2f41506364772b714a5a647259377a637a303678356d4f4644333565315548573952394c68753752302b4d5648354c78444778654d546b766f6c69345a31617138762f6b337038725677626d48686c5138696735642b324a415352325a6554483936426c35746d4a4f536f737961614475626932385163566d6c54444a624e52755757444442555474686a45316a693346426976446e334c6d7a4665613647344a596957574335356f37494278516269696767686355555a676950636f6747706c42544842516e4e46415368486d6f6142325142796569426f304965713632324a3873415a6863634867746532335274487146445242324c2b314267386d6669744f337543324e4f43467470573955634346584b4d73386561445864766c77733136354b6f6a33666b6b6c616170644c724563656c6b484e75776e636d2b613262506458747231444273304a37694c4552592b33465a353335546d37494f6e596c417931347a4e5858536c6238796b6f6c634462773148544a7838675633747473376b6f61784d306b6734392b314862487172576936767056307446386170647a366364785752714f66424462376564676d5250376b4866684e7948664e3175433557317561793261366343347269677033736847335869456b647843497871466e396463374b5a6a6a5435726d572b6f3172494474516151504d76617a69756a596958645a64764238566f334e2b4f32736d374b6741716738312f6c2b2b4c7732736635704c796679562b37334a33563656365654497573344a474341396955706d6246523251454854686774573065505637425a51414335576d314e346b49466d493669633354615234756142485972745053326543444c43526477422b784a63466661696c73354b536c713745434173724c625056566d744169454866394b364f6e412f4e656974586f5a4371387836584d796763794f4b36517573573969673946433571483471584445554d7135414c7a3039334c43765a45736c684f2f77434f684f516c386e51647133417a3856413633644f53387850314866324f6d5733482b346e385374566a31666345644e676d6d4772396944746937434a71443236564249476f5a636d33366a667678496c594d503841562b785632393363736b433768377a386b486669584b793344536e656c6a755979777853794a7544745165653966706149503677563567723048724a30334443623643307172677a30366a707751566b706e5a41384642537143456345586f79474b694342444647717532316f37693547314478534f6e336f4e4634437a7472635969732b7558794378536c56644c3175354365364d49486f7467577879302f74584e643855457a6f6845706845732b5342446c6b457167557a55356f4d3642516d6a4b726f664e453845473762626d5561417449726f523134306669754136365731337a4e4756516736734a644172556345776a355a62474a6f7172546d5772415357695675556f394c41446d67383375693977674b6756577265522f71466d707757556f41374b4f6d59444a41686a5642302f543770304e6d4a5537364c7362653859556b58474e50624a6563326c33524f754258567333446c336f4f3548636e54536a344c44633355396e4d79306c3157647a35666a695350356c556655626368704d67513331502b54494e5676312b35452f3841464a6c76732b716e633941745442503153444c6b2f6457546230466f38346e4a645350724f79682f3157772b6b6e3845466874584c5a6361687a795633334579346f4b4c4a50315778644f6945695835555631476442424f6f4d6a585576456236586d33376c775631534a2b4b39563670755049737648452f4a654f4e616f41356452326f564872685645486a69674150785856394a6c71453754314c534834726d4750765432626b7263784d48424236657a593837476d584473357242756274335a58574d51512f76562b30334d546344346c67747479455a485351436561446c6a314745773874754734725674642f4c62764f4669587549436c6e667832703045364f78614c2b39753349394e325248752b53444e755057626c3061626b44422f302f755641734677592b39624e767471616a575575394e64742b57784b444a66486c686d5a754b34317934585a3175332b39666f6a674375664853617a6f55466369337651413149344a63413641366a6756484f48424c5631477951536f35492f4a516331414851656f324638486177674d7453364733334679335356593876677650656d3357476b4844357271324a38304852756267356366637375796e45583558376c444b676c70792f414c54474d5a6b4441724c502f41423458706178636b422f466c32494f6c66332b3274325a536c63675247725a6e3971384e76384166334e314a353466534f436d39454c643032376369597870716c7835636c6b646b45455361713233445751654b7267432b6b59727462543061356549414c632b53446d54685269614c4f7659542f787a54476d6d62346d58374d46783935364e6474486f43446a3442486956625062584c582f4943507956637045356f46426f7967723270674e585563456f344241314d317474786a4b6a724246733166624f6b766d6730793245496a78506c3756537932447831526b2f352b3958526c4952474655705a3048506e417853674e565758424931795654653942504556434e4b676f4645427755775549595655425164543069464a542f5375394f486d6867764c37533662594d526e77586232573470704a2f61676557776d5042467562706259467535474570507049646c713365346b4947754158456a754a5741374f5a4f5365485967396e656d4c5971734a75514c2b592f4a6372622b75796c416963504d375a4d566f3875377634534a476a394c596436446f51323972783278683831644f545733354c696258657a7433504a7559676539617062677a424565446471436a6356494254574e2f5932593158336639493973306b6a715a3861506b47586e2f55622f6e587963685475515a357a31456e6a2b4b747457524b426c493044664655674c7537545a52336d32424e434d754b44642f6a66707568397849562b6a6b4f4b37562b346471504d4d5a7a44316a627166636a74774246675044466d5773366d465751655a756571656c5835614c396d5543635a615144384b704a3753397344352b79756d554b4853546950782b6136752b324e76656872385357776b4b5339374b6e612b6c584c4938714d69626557724a427332386a4f496c49615a6e474f49576d31636957474471695669634231634d5175536470647630746d512b4344306b5945565a563349763079784f50426357334431585a4372583474673951507a5737612b71327436504c6b4e4677654b32655344784871746a7964784f47547646596c3250384149513138566434673969342b6c7767654278566d31742b62634551714f33412f4261746e4d573536714f506967374247755056512b463178393144524a64547a784d754b6a677566754c6d74426e684572712b6e6b474c4150526365505269756e73376d6b67427330472b2f487a4c5a58423079684c58476842643833586f49306a77397346786268596b494f6859334d393434754d34475761307774686e5847323937793539754b373173526e51666b6730325a64547a43723363624736486c47426e2f4c6b565665324d376b6762556d415055717a36544f4931472f49646b66326f442f5935524e6259302f56695458734b315750537470435858456a2b48586a2b4b706a3662754c662f46756a7137782b614d72667130546f4f6d36503145782b426346304771573146695a6c5a2f342f30634f395072616857665957373976554e7943444c2b49477676573379596a6b5452426d6c6368743453767a49486c6767446a4c467531654e763335585a797553786c384630665739326274347769576a484c6a4c6975553641314b6b616b4d677a49697142394f5a6f72645036556b584a354a34536c72726736416546754b45726b356469754d53617171646b785a426f327451784b364e6d3237682b7a7357485a577a4d5558537439446d65496634494b37323768747a47334b70465a4e6b712f5537734a37586f6b4a457a46426a686e33726b337a31796c7a5658454946554a34714868676a793449464859756a36506530587862506775485432634375637754526c70496b4d5167392f743241777a307254414f4153736531756566626a636a54584855335041726f3277536142774167345071466a793978754c68465a434d753742632f5a794f47512b446e4265673374725752492f70496e3242656232632f4c6c6767374e72302b41416c4e71386e545232566f48566f69542f4143706247366a4553474a2f425558397a4b377168444441385069673047634a7a4174354c66356765702f4a655a6e36704745674e4245384a44416674573678367861757a416c54756f6663673631367a62334159787765764255665974485348775765643235616c39786a616c3039334664434e794e7a43682f42425362576e74436f6d41627475456e625556713355685548755a5a664c383255636a7169673548726f386d4a67395a535843745770585a43467573704552486156302f5864783532376c4559513666646974502b4e62547a4e796235384e6b502f717748356f50525764704462323765335a3432773344714e5a464c754c454a4e6f78415779554456735469714c6859674e5242792f5033632f364e75476b6330397230323362423347366b476a69655331694a38494c3951586d50574e7962313779584f694750622b784150564e794e784533423955744d655549344c6b7264766f4731437a452f6f6633794b3536413055514349493755425a4d4452696b66347068677751415930526b78515a516d6c65354272394f69387a783079585532346c5a6e7174302f554d6973767031754e75314b394c366a706a33564b307933746d315575587951644b31754c4d336e63445339364e7a653761324f71344d5044454c7a573433747934534130514f437a4754346c4236533776724d6759752f77444679584b753349435430622b46632f556754454369446466335675344869345045717531755a6d56617373593470684d753451656c326c34584730347270655835317654526a37664e65517333744d7751757a732f57425941467a4242752f74635458564f4a376346304c466b7744566c2f464a5a59657057727459594b2b48714d525844765161356c5554752b5867714c7671635234636662357250435537353154706d45474c3162654330316f3150444a6353335a75585334474f43332b724e39314c58674248354c4c50656b64466f494e6476302b6d7154555a756130573452685456527353617573492b36752b4b4a626a4a61596261356a4b673461712f4642714969354c34357171704452716d6e747847764642744a4c69694274764543574f556e344d7938306331366a625131584443544145534761387951496c6b414e41793062576b6752566c6d495a614e6f2b724369447137364a487031766e635034726978715858583955675274624772413636633178327a514d4936704e78524566315a6f526943587a5670416d414b5078515668583754597a336c34576f64357941565572514837463662303361543275326e64482f4c636a377543446b336d74334a434659784f6b48737a5174334e4c7963767953326f764374574a397561536353454738657047445071643174736574444354767a6f7650694a4f4750384b31574e704b5869446f4f335066695a56492f72537234566e745752454d63506b7272683875334d6a67516732796749426c524f624f50657568477a356d3168492f38414a6f6a4c755a6330796944712b6b654c75516376316135685a7a385568386c79594f72627477334c687538543766424e434834653542544750414b6157484d725330644a64567969675858495557373143496a59744155782f425a37554b39616e71464e4934395464714445634851516f694b66696743733036556f443152496f67642b504a4a4d7570566174686138792f4546426b6f44576f4330517347565467756e4c625739586c34795077563066546f365848562b7842587476376647485650716239437a5445535a47426f4630507464486768454e786935376c56666a2f543479504c464266593245726c6b586466747a575735744e78616b47493756332f54724d6649694d51544c386c566f6a614a74543668346f6f4f6674627671455939563244634a422f6b46315957747a4f50564f412f696a2b3141434d434a526f655332516b5a487038507a515a4c3169556f79463252756168796f736534323976375735434e44474c2f774331644c63584d77737536694274376b384f695151654e6954696d4578454a596b41756c6b376b6f4c444d6a76532b595a6479716c4d70536776452b495630434f4b795363466b596c736553432b55336947716b75537a7962346f6176636b4c595a494f312f6a3939726b7257486d44346849656d36787a4d6a79584d74585a32694a524c454c53647867536344543855446268684a75395a6947704a6162383375636679565536686b48553256387a744147756c61374a453564767a584532732f4c6b787a57362b446236774d6b4855752b6e3270385267376355316a30797a626e726556467a4c58712b674d7a397175746574416653596f5051527478417067756236374d78324e7944597969717266712f6d446b7174374b653873546a6d6571503841707167386f7a6547716734714d33616c4166424138596d574336573039506c636b4b6535545a62557a6b77484e656d3274675768524279492b6c354d333571364777454431696f6f7579596b686b4957483853446c2f595757364866426333642b6c6b645550795872744143576467542b534435374b4a74304f4c6f53414656362f662b697776774a685358347279453465564c5363596c69676e62514c6f372b345a6253773248562b41584d47444c712b6f514e725a324c5a2f694b446b4167714f676e314241704336666f38497a756d306671696667756165316276535a694f37675a5a6e543777673651763769332f53733277514d7a6d6d4d6431657064694e50366e58557457496d594a4a78384b653562674d614948394e744674424151337670384a53316e322f6370735a673357794b36567873772f42427a74766238734e45396936554f706e584f7437713371616a38426974316938426d344f5344772f71316e37666353694d484a486573514e58342f46646e3138767532476361726a36474c356f47647138636c6e6e485374457754584e56584344575343742b7847587a555549314941446b6942785373796d4e4542524e6531447864696834596f426855346f697168524e614641445446446b457a50564b4f61426c3366386475454739444c512f755842697574364650546475453465584c3445494e32384e4f78633647712f3032496d52344b6237632b5a4c54436b596e3472736258314b7847774c646769795132725648457455382b5879515a37586f6c3268764746742b504258327652374869755834302f5374507038596d63726b69626c476a72697473444677305245636f4d45484f486f323176307333756f6d6d6f7638467a642f3658754e6f5875523151796d4d5063753536704b313548555234346e2b4a6b6c6a66655462364c6f753277314a6e71417a2f637851655a3232344e695776697574356b626a546867734871307472357237584168356348354b6e61376a797933376b485a307645303750785766794c596b645551756a62464e514f4956567a62796b666d67707362577864384570526e7954336474757255546f75456a684a5074747562636879785851307547516348613266754838304d596e4664714564496273565552575463564c7534687472666d792f32347567772b76627a79494462577930356455794d71594c7a574b626358355837687553784b71775055676170436d7077795546456b5a6f492f4842446b70327142424146455851464542624a51525a6c43534f7844586b676a7141634561594b494950636f35775537464e4c6f4348695151757643365a4457654335474e4d46327057644671456634516665677374584e52633148344c54397a62746b795a6838317972312b4e6e44782f46632b35646e4d756633494f7a6639644d442f343842482b5046636d3975626c382f774253526b5371636e7a52515146736b586c694b70634b4d674f4342784e7561595439797279524271675967597853415a706f6345706979434d6c59496e6b6f55424663554a426b5256484e416f4e4552544242744b694430482b4b78503365724552676669734872566e794e3964427a6b2f2b367137482b4b32786f765854796773332b56512f723237672b7148794a516344784b596c31476642526d446f42386c36443032344c74677565714834726759717978666e594c32797851656e46786738714a4a376d6a4e33724e5a3341334e765563634446555847694b59494c6f586d636e4262647036726268474e6f767748354c6b52753277433166327072466d55354452456f4f78754a4464523157336455376264796a30794655747a7a4e70306b4d573164797a57376432354953755572385069673747765748576665656f577473336d6455736f2b3335717a484768776f76502b73334979334443756b6153677a627a637a336430335a6675437a4d696736434645465138585551516f4b617367696744736f456346435367675178557952444f6748494b455a6f386b41676d4f4b6a71415a684538554137464134384b4942514344665a33556f68737a566447316331572b4f4d6e58456841366453756875703236494f707574715731777139566d4f787642794174466a3161324c5945687741354979395767446851494f683666745349673062466c7476573469707a5845746574514130386b75343959456d68456b684230726d38685a6a584966484a655376335a58356d5a7a57766362377a756b59465948306f474141375544376b486644424e575861675646526e6f672b6141715577555a53504242395832346131447343384c2f414a58614d642b5a66716a452f682b4339356144573435554879586b2f77444d6244655666484f4a37716a356c42354b42597576552b6e7a3141677842614c7279354e4636623071513872574d36464276476c6d6d717a5a74533663413378437349694136726c78475343693962674969454b2f3661725874724a45425263387a6135716c4e7449545776574c4d4c6a5236672f59673756324e4d63753472484b36436d487265326c4c544e68372f795766314335434d345368344a69756c426447384d596864446256584a746e7a4f6f5579344c726257587437636b485167534d6d556e562b444a497a41706b70314d67356d386d6470744b654856576e4656336268334f7a74796858544d53576e66325075624d724c73366f744731733971383651672b4f505a326f4f5a367262473474735070464f326c46796a48776a4267506774586e79755145783965487951423435494f665063584c5a5a6d41554f396e4d74493057692f4356783479484e637777302f745164665a2b6f42327758566a63316a4c74586a77584e467173377937626f435367394a50546a2b355a5465593077584c4f3475334d697976326f7554365454386b472b462b32496e4f6a6e75584833752b6c644c52635179576a314b65693343334850714b3552514e356b6779614e347535564f534c596f4e6364774756317664774869396e584f484a52766567362f33566e426e563176656264744d36646e46634a325164734548633332377353737974323546366650386c777330584b6d6f346f4f333656744958374d39574d5a64366539736f786b3050646d6e39474a6c5961464a43574958574145376a2f5542576e464277763761386d77354c7237586178416f4d50627656326d4d53506e4a5062704931702f4367736e74526474744b76344c674461526a4932352b4c773854795871397464684d4543675030726c6572776c626b4a67664433494f4b64715a793067484631307470596e5a6241416e4c3856585a4562556d50666d727863316b30726b67376d3136685156532b75625558646a63676670695a447571724e6a485335623949542b704639726545762b335035495041624d784e6f775038414e3850334c4b576477722f54442f554d76345356544d4d55485a326376365a6a6a52533834437a2b6e7978694b2f6b7274314869673565344c346c3257557361344b7a63584e5a3971716f566f67566b77716f5877526d324b4259303755657841636b772b534164716a756f3759494d3641386b4d4f70714b42795855664a4159314646427a7751353570766d673137486579327870574a7958713557597a6a72686951437644787857386570333432685a6a4a6f6a446967377334474854335078585076327a636c327162546647374178766c32775458496a574d75584a426d6c745446386149783141485374387a497859594b756473526763794d30476661755a664e656a68636c4741446b4446656474796c48767a5855743776706a48353845485674544d7a5770576957326a6f315a6e354c4259754352456f31354c7057376d6a4641746d3262624f567631384d466c4574526f6e747a366b47693762463232594841686c783976593875636f5271575953354c74436c466d753268356a6f4a5a74385635542f4b665668636c3972624e42342b4472762b712b6f66322f616d66312b4750616679587a6d55764d4a4d366b356f4267674b30554c444252424e5761424b49556b67497752446b70434d305458745158776d394664714744724a474a4a5942574e4a394f54494b58494c6f4576565754686f69345349424b7445566f7562557774786d37366737425a35554a5164483067764f55546d4631344161674635757a644e7557714f4b373233334975395151624c736f6266716b3544643671742b7137534162564966786166597258473535734e5271773459724266323739556f686a7767454779313672733576716d66356974566e66624f5a316562454833457268666257684c72464d6343727265313239796c7532352f55535141673946393974662b3762666a714378627539597667786a4b4f722b47514b7978394632324d77442f4b5a46586a302f6252505262455432794a51446139427a49572b324e556d776a7834635652473078654f4b78657365716661327a61682f795439385167383336707544653345794d48596467574e4445565272676747474b49344b61517a6f474b43426b6578416c6b30754951436932656e3767625363722f31695054326e386c696b56434544534f6f367049456331434649305147636e716f445369474271707a514f5a6e76537570474c307a5164365a6f494748616d306a45704f3152754b41794875556a53714f50636c4e616f4f727374334c4172736257354763787172584e65554230455343365730336253706b676f39545962693457784b78344c64366966366a6b755667664e42474b68444b564f4b4b43436a456578576d33757a444b6f57584446456d6944664c31417a6a706c47696c6b52755a6479774f724c467a793561736b48576a4f3162366a7478506e715035726441327238656932493179697a2b39314e7463746b526c6b36336d3761694e596f6751376533466d694b4a35586d784e4f4b5464627546675049682f7034727a572b39536c7554706a3077475341656f372b57377566776a425965536a3855434f4b4346466e514446466b436974456531476a72587339704b374c5639413852515757684b3345533777753373742b3852433433383261783362476f644f58465977384a6436443035324f33334e54474a39754b6e396f73437361455a76374265656a75357862544b69732f7564774d416566486d6737743655647548697934572f39527152624e472b4b79627665334c745a456c595046694b75676836716e4e4557754f4b496f41565a7031494b355130345648424c6f2f56526153325156467a71594946304955554c597143765967564630484c6f78346f4e577975615a306f56336248444a655a6a517576513761666e514567334d636b4851757a76512f384174697849584833322b333159586268623355586174795a70763078367663764b2b6f626e376d2f4b35674d6b4751685751695a476972646476306e5a39506d5378506848346f4c2f414537302f53657344697655576f416c384734636c6a73574e45655a58514c696e63676373475175577766465867365352497166676e3145386b464d396c617541617668376642635831442f41422b456e6c5a4964656869546a334a355141466343672b5a376d3163736e5263476b716f476a4265383952394d74377439513676706c77586974377370374f656966614b7652426d437468496e7064557034394a315a6f4f7a48617a3078484656583973594d34585232317a7a6263584f49546d33713745484375526f73687054323746334e7a747451775a6c79627342456f4b364d654b71504a4755654743425042416454686b4b4b4f4d564d616c42625949684d452f73572f7a4442713971356d425775317547416a494f67322f635375525935312f5972352b57526f636439467a50754744737170415343447437546257784d58444b32414f4d783746626a7537566a2f414b3061666f366c3561334f4543306f754f334a6466303639743768306d45596e3235346f4c3562323176503666436f4f4438565a475142706972373278694f6f634667756b327933637942647a633876706f5858503357326a4733433568716569763672306736703953763635526742534930684268642f624e656f39456c4757337a654f4c345a34636c35577543396636564551326c765439542f43525164657a6569324837567038333667754645546e302f73585174324c7667446c427575536a48785971344275316353653773624f662f6c6d517735396936473039533275342f77434f5834494e45376572706c67754476765449627034537553746e4c39504a647733764c754144776e3349334c554c6f366743673831743970366a3665497a73335263742f6f65693674762f79476e4b33706e68584550697439757a4333344132616f767a414a6d543458504a6b486976587272376b78426351416a52637073797473374e33647975585144697364794769694351397a70744a725846434653724a39517951573759796b4d575333703676457252596b4c486d425969487878514d4379305744704c724e474848325a575159494f784365727178344c4275496658784f6173737a3039503074334933674c37517376636c6c47416442682b7031314e72753955713472442f6139374b6f73335038415a4a614c506f322b6d48685a6e713539507a5a4236537a574c776f46624c612f6341787737325848732f6637667075326268694f547262742f574c4d382f336f47486f393053667a70687566375630725733466d4f6e564b546e47537174656f32633566734b4637314b33626a726b51414d63304674383171572b5378446466315241673149412f5073584f33487258334a6131467a6b352f4261646c5a6d776c4d6e57364479753867626436634a5969526455434b33657153313775365161616a677350496f48616d764a4a714f4b6142496f673642785067727263365077535757486977576b5274316d4b4d67634352416b474434716935645a786e6d6b75376d557567554353316175585830416e545873484e42627470334c6b6843457449507541346c58377a3144554461736b2b5834586c55792f597566712b6e6e37304f534345643667593455554e464d454246614a64534a557246414f536d4e455136493667794470374c316d377337666c4d4448365878577158716d3533624364307867636f5558444d394e463239745967304a6d4c765642707332626b4b37664569756f75466959435231646937473167787a584e39564173626b7941706336782b4b42624570476279713946702b356844704c6669797832376f746c61527439766368727541764c4e426248794c376964794c7630307a397331665a323171304b5367442f41445558486a6f3230694a577463483666314468554c62594e692f573361306a6a6a383243446f546e623061544b4a423463316c736267776354574864626e62577a3564694771352b724c754333574c316e59577465366c2f566e58524878415a646e65673257794a444a58324c6b4c63386135552f59764e626e314f4e2b34626b51522b6e715a76636b2f756c35744d5a6c753542503754653346795533614a4a4c797a586f5054352f32367a35516939742b75656c6a496c65637537323563476d523933464350714d78537665554875346b53477142314f7330357669764b572f5637677247556f7979302f692b4b32322f583738662b614d626f3476705035664242324c317a3761334b2f3841397347512f6d77433850475a6e4a355a6d7665757a36703674393359386945504c63367056642b417743346c74784a3830477a31556e7a59327a2f30376475507766384146594467744f2b6c2f5750454349377741466d495a414257694f584a5163554b4f676a4971597951356f43426d46487951624d594a6f746d67375675554c657a74796d4f7272307834383178377430334353634f434d354578694864676c303164416949475155657653695167444f6757416f6d374644464170525046444246366f4943324374684c554b70573076524b4f4c6f4c785a6c4f5853355853322f703835316b63466d394e76694e77526d576a4b6e4a656d6a4d4155416f677957646c47456354566443454445507743554277727262303745486c66576d7462365a6b4869644e4f344b6931657533502b4745596a3234725a2f6b596539712b714c77397a45664e633761376f5743524d43512f464231595772386d3836373352416458786749686a4b5256466a2b71426367784147533045677355424d645a6952566c53656b31775673626b41566e335636467147755170394565504e4131753747316568634e492f564c6c375a59726a626e544f374f59384a4c7837456b3738726871556d717570424237316f326b3945363448344b67446a6b6e6a784b44722b75792f6f626341676a7272376c7842484d34727053765175625356715a366f6c34666b732b3139507637776630594754665667506555465544773731614a52696142646a5a2f347a646e58644e62682b6d4e5a466569322b7832753041387133454566584b4c79516358307230587a644f34762b452b4747644d50334c3041306d5855427a3745626b737a38454a6e5352503658396e5165586e7476744c38397649503955657958424c6474636c322f56646d6239714e2b30486e62367532504263713163467970786171446e4330625a365742393636566b61787134705932717552526e576d3145436b52544a424977474b77657133526274614d356e35667458517248716b475a636a6350754c396d7a6a577665554872396e622f70516a2b6d33475077575064656b51334d47747a38736e7842754336566d4f6d44444e41784650783549504737762f48393174515a786135482b4848334c6e617a45365a385639445967304b72756257317542707532347942355651665033634f704176544e6571752f77434f574a6e2b6864305250307471574f2f2f41493164747831325a43364f48685046427a4e724457334d6859393965463239497877464f35626f7a4667367934494571484546636b6e36754b42634b4b446d555448765244533755433042645045557032714f4165614970564243375577566d337565526445386756566d3578516c536a6f50532b5741664d594d54373176735248303058493950335675355a46753465714868352f7557363950796a37657a494e747933356871567a5a576f52385a4c527a7a5633334a30312b43467946712b474e447851583250566476614168315262386632712b3964736279414d4a50495635302b5034726c51394972724f6f393146314e7273345749394d4f7041746f43426159366774384a67425a4c6e55526c4a614c63754b435436734b46636e317a6477466e794c666a4e5a63474b3745656c3379433846656d544f586167557a5a566d62346676536b7179467556777367726a4238467274656e334a735451486d756e737472433031484a58556859694a4642772f37585278564e2f5a2b4a5a656b38714b6b62416a514471516555752b6c796855595a2b77574b355a6c41744a6651425a6a34654956563330757a65465167384452327954777771757a363536554e70474e3248684a30747a5843656a494e6b4a31354a6941796f7446716a426152624d796772316143506a7943366c752b4e33625a384470344c6c58346149653261302b6c476c794c634a653542586473365a61634531754a4c4d4b646a72644e6958792f46616470474c365946414e76747048726e4578664232585432385749726772684151787167315846506b67386636767468593355774d507a56477a73656463302f4a64482f493476666849666f4877542b6932504c67647a4f6e365548543274694e7361596a702f56324c6f787453496646382f5a6c774c6f3347386c49575330593979582b79626a487a6d486167394d443074494e334a546430316f5269764d323458724a65557a4c2f41464f474336384c63723854476f6963785642752b397352597a6e474b6f75657637473257457a4d3849786f754c505a575946726c526964564670325735395067644769506544387967362b31395273627766307a55505134757542362f365449534f36736968385147584e6569413239364451474742474b74754d59364a5669527061574a51664f4c5a3677756a3630386273626636593148416d716f3365302b333342737871424b6d615071307457376d6635666b454742454d364b556f446755626339453955614e676c496f69374950617776786d49335966564565395a6431757a506f67335073584b394e766b774e722f6279567334456c35422b6642427068764c6c6f7649467551585274622b37656f427048446a2b5334747a646e7752444e376b7039526e5941306e4a423174355a6a703179654d38736a37316d746572787348544b736c7872323875626874636933417059675150346c4275334e306271393576746d7159324946316e75584969686f5554663068383046787367554171717275326d7a74525832726b52696677576d47344863673454485069686e526237396e5649795a596d514c51716469484a45596f4a324b59564368504248566d674950775148456f437052446c42417a4d697a557a5149496f3642346f44324c54746230726570714f4e5076564e75314f365243414a6b636855717a5362636943474f42514e686a6a2b4b6662585a3237677557324a475538465472306971726e4d794b447448666275383874656c763035653548377265327a716a645059754847345934466c72736230786b31796f4f4b4471513962337473744e702f776d4962336863362f666a656b5a4341672f77424d634671314f30774b53775761554358515a67636f71524c64534c4d4642346b48523232364d4c6254717451333053414b366c79524c4a504a38526c52423339767651443272584c634475586d725275616765587a585174577a4e6e3730477a37687a3063666d755a366850524f7939515455653746625441577263726b7a51653963363141377137445737592b39426475505135587a72734d423230584d336e70653432586a464f497176566e5462476b436951536b53587751654b354242386c365863574c63626d7145596b7a6b776a495a7252366a3644472f42397549786d424974454d364479624b616c5a663231797a4c52646952494a4951315551426c41797547334f64456674786953677a736a2b4b746862316547714274536a676771314d555143554552467a5242447751585632666f57373366554936592f716c52656f39503841524e76737366366b387a494f4167386a7376544c6d3569626d46755031636551577a3144656a627938714749596467587335786843476b41434c53384d57587a5737634d35456e4d6f466c4b55716b75654b426b555447725a68416873633041436b6c614c5a4144684a704c506c2b6143467350327567785a614c57336c644c444264545a624234504d4d3142326f4f472f7555414c647136323539486e315374416e6c7837467a4c6c755675576d51306c42436c6436495931436b61664e42475a536f464578446d71556f495457716d497033705377484e4d79434142544575706b674154524237482f4834474f78632f56632b53722f414d6b7369377434586f66394d7449636a2b31644c5a327674747261744e6848564c6b546971665678356d79754e77316536714477334e513055657271456b6f49456561485967673037612b4953414e5175774a784a3056663446317737634a544c52446c64796d6f48346f4575626471784242474b6545355169776f6634614c5a4161343575554c646d423851667435494573575a58434a586e494865575733796761355a4a7263725144527754334a68744b424957664d7552445571764a62366d3575503841714b39665a6e7049475430586c50564c63343769354b5949426b53436330474645444c69677a4b4869676e4a52314e4c49383045715545587a51515474554b4f53474b4167555572346b4d46446767635653616b596838564d4b6f413759494d355262676a69487a5142544e5142516c304851324a6a31516c322b355637697a704c72505a7565584d5334664a6459334266694a4e682b43446b58485162386c7633516a553057446d42524142773449366d444f6749453155515277436755546778555a3045413449315241616879534f6665674c71793148564950686d7174534c6b424271756d7a344c62383356506c74574f5372474e55784c73672b6a656c6572324e39434d583033414b775074565a2f386e323475374355786a62496c2b4834727749754742426957616f4b372b332f794b56336258647475716d554447452b6463667a5165645939785858394933516954743559542b42584a4c3448424e626e3563784f4f525165734e7757785531344c4c754c3550314e37594b33634856487a4965476245557757535558713955465273655a4869345061713462444d48486b744d74783556472b4c4b6f656f362b6d454a502f4e2b7842717462574d6f3672677165533051326b4c64593474546b734d4c39382b43334c486974503339364936375650315a73677667776c6a2b4336746c7948584173377157346e6f30454633702b4c72304f3268716a5242736754497178774352677330486a54447457674857314f3142564d7338703452783746346e316e31593736597377706269652b5234716e31586654334f347545534f683949416f47474370394d6872334d484431457534494f377537597343335969335248766553784f504342564e65334233467955736a562f6c376b4949424b4d71537934724664674a594c5a64497a58506c4f55537a6f4a62327571584a624c653267656e486973396942615567746c755452614b43323361674f6e4a6142624741506571596967796b566246674e524b4467372b666d5854584369793975433666714e6d456835304b4546704c6d34305142463378553035496a4241756c3845636c4431535a48414d67556f39714147616a3845454e4d464f6169673534494f78364c654f765150456350782b4337506e36513248746756356a5958664a76786e6c373133726e6a5a75306f457658376c77754254425653334632304e49446a697237636f525057725a3771324967536b442f41416a46427a35623763447779307438567268366a75376c7135356e55376545734b387353733039335a67584657347256733937745a5939482b6d6e464269737a4f47667a5771784d6730776b552f714e3362364e554a416e48484655324c6a6763667a51657139506d396f662b7175617a657558394f797563572f464462584e455a415a726d2f354675744e6e7938354242356a593176777849354a622f544d3971473375477a634534354b3365456d34353755476a302f7743503459712f3155534675337a344c46747067486d7572756f6a63625978774d656f632b4b447a706b6f585461574b4461716f4a79557a51315664475251522b434748656a70636f4630426669686a52476871676155514673314f61426f464d55455a3845324b4742555142314345634b714f67654a305542573633643879505656632b5641742b78734735416d4f58346f4e4d643441654c4a626d3631453831584f4558706a7879574f5853535345462b74675935713058544a766a52596f4661376251596842324e6c636b2b695057353743463362554d48584f394e743944687632727269576c42614f6d504a47456f6e76576655414e4f5a564a6e706f55485174334f746c66644648584d32397a77746d56314c673644324950412f774352573931353733592f302f704f49433452583075364933626e6c7a384c507843383336722f4149347a334e7452363650794b4479386f356c436877576939744c3172787849487638416b7148514669416f2f7555636e424275434136476f706c52515964716a4d655342346b673450525736593435736b67414f5a5431624242586459527871367142426c5842645331364a6633466e7a37626158384f6179627a5a66625345586478587451644d65706261466a79345231552b71503756785a48575877644c696d7077514473777856753376474243706343716577356b427a775164376137736159776b6142313042643063475841505255596669725937755542704c467665673944616e5a4a30596474614c646274325a355048334c7950336256775779333670474f4d70456a4f50743730486f474172482f6146566561413147722f414358492f757573663033663952576139666b51646338412b6b4642723954395868745036566d74773438754338764f354b39497a6d535a48464352316c776c514444464f37596f593471664e415148436a4f6e4479435353425a4975554855515156557852695641674743494955495a4c3249485934495562696f4e51775551467a6b672b6130574e724b36576a5467744d7653726a50716977516330736a324b3235596e4679314655374771434f3455636e424245535a41786f70476e4a307270586674514e4a79554f314d4f7a765548464170466149344b4e6b67655341674f554842526f56427a51424853363362625a517648515352376469334430757944517963653735494d73504d413035437174315844684b6e46644137614159684b62456342785163726378622b626d7566494c7137356f504c4631797a6967524d614a564d65314151484b4c494a3443557949777154527330437768716b4f4339505a6e43566b51676455496a675233724e364a365a634f36303349446f38635a5a4f765654394e6949616266672f546b4f7842353666534b425a7230424a62622b316c5a6b51797844715a78577144444b307859315575514673562b6132795a336c674d56794e78634d356d4b4133726875644b716b532b6142366355646143536a52797047347753756f44795157655953574f616a306371736355786b33656744524262464368374531445570434d77674d616f74547355597335774b494650616941675a49323773725a314171434e4b4b4456686b6732336655377372586c38567a574361545938556f787167743239767a6267744436697659327259747472795952343971342f6f4f304c53334c4f33534f336975754c4e7555744d3436786e69376c42736a7637454359796b334f5332573739715931516b4a514a7958506c7376546a53666c782f31742b4b7a582f5137646f65667337756d75565155485a31676e4848344969514964364663546137693571305859744b4f4a576a63584c31754c32744c6e395753447278426c673673414a78433833744c472b334236723077503443757262394b6c46764d76585a552f55673279445931664665512f77416d736b615a69674339506f387551695a4833726e65746251376e626e54346f6f50434a6d4a6f67446b55787751646e30693972675946736458374630345434727a657775433363367346337a4d697441454362323649696a4f4d6c7a4e7a47334f4a6b44565537363453585069536261376c4c776f4d7a564953794448466139335a6a41764771796b565a4171616e76556b6f4b4943434748464d5177345a71736c38457842397942755253766b674f6445616b6f412f464e456b463072756f7862735164586265723351424279527a775458483355784935344c6b366e4c68616474757a6149424648516455572f4a687a4c7269584a5063496b756a7574794246345a726c766d67445a4d76512b6d626b2b526f4a3846506579382b4f5333656d53307a6c43574251647139654f67365046326f2b6d2b747a73506233442f7a4a376341534a4d7741714d6c727657724e3250564546427676655876724a4a61555a4d326135646a304f557151753657505432647a4255513255724d396531754732787750684b3053336d36736837317353424869746c4230667437317133474d79626847636774467538314d4678492b75796e4951593170314b30334a4539587651646d562b4f416f326135487146326430655641592f4971794c6d6c4f537858665672477a742b5948755843547069314f312f774148515a74394b487075334d41787658637541586d5a4630313763584c387a646e556c5673636b445278567475506d46315341746d3267353745476a6333504c74614251506775624472375664754a61354d3768563235616363454443576b596578526b424539574a5664776734594a4358514f62704e4176622f77434e62623762612b593358634a5050534d463471785a6c667552747838556979392f412b554247455845526f51622f4e44316e5867456e6d422f4566355a4c672b7562755675324349735a50574d6d5a7156586b7a636d53346b78484e42394e4568466e6f7554366e364874393731322f36647a4678684c744334587076723932306447366c4b35626276422f46656c6a754c55774a516e4569513666314d6738392f7744686663795052646765312f794b775439486c626d59584a4278775864395a32577541763271536672306c6e484769353967764c545633716366326f4e4779325562555973476464534964686857507771736b4a6739754374753378627454766d686a43576e747951654f3355784f2f4f575570465a3863305a564a4b6a466d51414939754367514342684b6d6e4a48574a55536a6967677575626556734357494f595547346e473262516b30446942522b314935776a67557036554148424651484a62646a734a626d6f384f5a515a52626e4b6a4c525a324d376744597230746a3032317477446a4a75304c58477a474270694f5761447a51394775474f76414647506f306a6d76554e6e6945644f7271396d5165552f744d69484277795850765770575a4e4a65384d41417977372f303062693232593850742b4344786a55646568394676692f624e672b4f4e5938786d7546756242323979567157495573585a324a6935624c53474344326f68702b584e5a665662456a745a544d662b4f57714e4d70657a726b7a2f794c64436b6445542b714d612f4656624864583933754235307a4d64586950384a515a62647772763761354737434d534b632f6238567864337479486b4278645a59376935616f442b784236324671334f6a554861467866557655495842354e694f694d636561777a33563636476c49724f394f7041304c68693078516a416f7a75616a714e53654b724a344a636b44676c32554d696b6a69694b30515445707742324a596b5a354b4159673979426830344b2b3365727034724d596e456f786f657842744e754d366c6e354b7533624f7350784371387a41342f69724c7435734b42426e75534d35794a37556747534a42696f547751417159346f73386c42524147597161553250596741454542794b49444948696f376f4a564534394b57565551674f7052394e45434f4a5544416f47646c4b6f59465742792f4c6967574f61526a6c676e6b544c48696f5a647941416b3949344a55634b6f4f2b4a5145466573394e752b5a5969542f4b7649344c30336f5a696245745a455144695548584d5a47516a372b7a7452334738687362666d33663945655064376c7a6435362f613233545961647a4d6e77647938356533462f66586e75534d7079496a3730476e667a6e656843395078585a584a2f4a6c7a36784c5a726636726345722f6c527247314557682f70783935574768434178755374486f4b31327655726b6154615135696f57487771564b44715439542f534458334c6e334c7372307456784a482b464673696756732b43686f5752624e466e777751414368644538736c57376f346f4c6264775735616d646a684c44734b2b672b6c622b31763741386f43456f306e434f585a374f766e4b3162486654326430586265574934684239496e4a49414931785337506477336c6f583752594b325550656754512b4f4370684d327a706d584376443971717551654f714f534336784d48776d6a594c6a2b6f374537533662396b663035654f48435846566571793132664b6a53557548316532617a324e2f4830617a4b3350716e4d394d4d6366694547706a434f75524559734456597276725731733069446350754334473633313365533158706467344255437144723376584a3341305941443472487476554a57647848634d356a6c7843786b4146526e51657a322f2b5362573642436354626c682b71492f4a64654e324632416c4169513467723573774259315856394c395a4f792f706b47554548747670427a54437057666162717a764c657577515132484474563068713979434559496b4d3157726970574e464977656751632f316230364f2f6730476a65474234386976446269786332307a43394854494c36524b48554146673953324e7665327a4334486d4230547a664963775548674b4b597037734443576d58694647534555706967494c4a674d796b67574b6d4e5367735a676c4d74526448557a4b4f51674d614856484c75586248716c6a52457a3145782b4a58436a5173725957675936683452564274766570366a305270323156556655377365484e596a69796d4a31494f35747433754c6f706569503466594c645a323979356a666d352f53572b4338734a616178586139493951426d4c642f4f676b667851646b656e57625a46306d5776747857753257594654534378645a4c743645554776635847745349794863764233617a506165786536686231327a4535686544754d444c74514345645237563264765961683853782b6d576a4f343577433751755173316274516172466d67576d45484445553975537a576656397245615a30357254623952733357454a4f55463469434777516c46756f497876577a79536e633268517533596776674e4a664c6a6b72547743776a31586178694162673979756a7662463064456e5159663867746d377443514830793145384d612f46654b455267767046367a44635770514278702f75587a752f61387552693243413267786553362f702b30753771576d46496a47613533706c7146376332345472456e71484a653668415772656741526950303845486c2f5774726232773871424a6c42745575334a6333302b3735647a54493472736572573964792f4134394d6f2b356564457a426a5642364b636364516f716f534e7558536873622f414a384e5759365a666d72504c707179346f4f31617661346a696e7545527877584f7458756b52496f50715175587a636f4b3857516376316256754a433442306a703746314e6e62666277416432584b33566e2b6f4c4742656f375630396a5349675467677a58724e38485262595068716f714a624c6350315861667a4f765377745737683667434658396874346b74624251636e626261656e724d745038414b417652374d4557323572426349665248455a59726274514e484832434448366a365a486448574f58494c6d57665437646b366a5a31646864656a754d50455766326f68445351305a55515939745a423674426756736b656c2b4b63694c647157354e6b484d4f306a397866334c504f4d656e334c7a487255663841796458366f786c2f3651765a774f68354e346976482b7652454e334b33477567526a3850326f4f5565614d6571696a694e4d6b30593172676755697142545348476955466b466c75346255684b5037463644623771462b494f422b706563563862677452615069346f4f6e76376b586f51533147584a4e776d70785146777964306c4467674a6e79544766306c4b556f41427155444f5a55524d6d44417065784e4541647143323349305a5747584255433753716258373046304a5a5a6f584c666d6455526b71375a345a71347930675a6f4d4a476b71474c4c52657475614b6d58546967584a5231415643484c4943456f52423470694d796756714a376344636d494436697751784337506f58705a767a47356e3449462f7743596a3845485868736f2b6d6257553762655a434f7155753165546e497a4a6c4c456c2b3965303959364e6a65624e766d76456942304f315078514b63416c624a47515a485141554373364a697973306731344b61614948735869426f2b6b712f7a4836526b736841646b304c6c475158534759564a494365424a5a587a324e2b4e727a7a45365044374446416c76514a4d756843324679424e69386c3337466761496b2b7751533162717431753041474b534e4d417857626533726c6d332f54786c6d677a6571377358376e3238504445764c6d5675394b74505a467734594c6a6257773871566c54484c697531722b3373364c66447863304233462f5663467359437161557a474e5433724e7362637058444d6d6e7a57692b4a544d59444d3151586250622b624d5870356546386c6276765662577a693561552f3075712f57505552366462454c662f4c4964504963653165514e307a65553854346b462b36336c7a655844636e6e6879564978637044494f6f446b536765553278636f693444476f5662596b4a666d67766f4b7467694c6d5a5a56752b4f444b73306f6775754142686b7572364476746c745a662b5262366e705046767958467233344a41514b4d672b6f69554c7745375a654a37475568454e38463839324871567a595431573844346f354c36445975517577467946524e414c38424b45676378496642664d5a514d5470344c36547672766c574a3366307864754a71766e4e2f637a334d2f4d75566b6772596e46575772496d51447856624c71656d57524f45706b4f4167365732326364416f585630747074522f7a3950782b53706d4a334b435851394969685676384161725a46584d76356b47797a737471775a7950775730577245413059726a787453735341717758577374636a676757633457346c774743785433316935307967354a7a68543471336441784f6b7175456f654f5841596f452b783230734955504942634c31583030374f6575412f7048777231316d4962326f717433745933724a737a4869774b4477565539757a63766c7263544d2f7768314c6c7332356d334c365676394376655476725569635333766f67357334474a6151593836464172366476665464767649694636494a77456869463462316e30576670736e46625576444c3845484c4655304b79414f447174626653374a76377133415936676138716f50653332387a6b71726c733349584c59786c4355554a677555524978366667672b65546759534d546b67516346332f774449746835567a3769492f703350676632726c375059583934644e6d47666979486567796b63465a5a3239792f495268456c79765162482f477043596e75794e492b6d4a717651527477737738753145524134494d2f7050706b4e68626368377048564c674f43346d524d735a56376c366530664d4a6958366833727a3753426e45697473365547627a4a52365930576165367541554f4330546952555a72504e774751624e6a717559754630574561724673674e504e6247657078514e45356a4838467074577250713967326276302f2b6b386c6c6a4d524947542b39556568582f77447a37774436534d4f79515163443144307937734a6d4d367850686c784377745666533978626a63654677416a394a71754e75663841484e72654a4e6b6d334c67616830486a693648617576752f514e357471694f7550474666654d567957494f6e336f497a49464d677a6f465a456734714e37307869676e4d35716161594b4375435a6967535279557277546154414e785130356f42564b59707a5175557051523252554464364971616f46504a624e70654d656b42316b576e6279454b356f47764133443148426164767439537138304768576933754c635471716730586636454e5a374f37354c683372336d7a4d755063727431754a58533330724e46733855426b636b70545a4b636b414b684349695a555639726133626736596b6a34494d35314247706f4f39623766707370654c42586a30724176336f4f51416869752f4430574d6a706c6966624e4c50304362475674794f354277337a51504262647a3666653239474a41785750424153795573564971416f4f3336566642746d3053786a554c53326736735667394473473775524a687067484b364e79505759745242544f3141306c462b39565468496548334c5a445331464a434c6e4e426c6a4b2f626d49423237563139744f56364a3144443372494e4c6955736c304e7463677a53376b432f613136614842623975504c697853677569626d6d4b432b54527248454c46367836674e6e746a4b486a6c30772f4571324e33584e6c782f38414b6a2f5173446e4e4235526a69756a36533173336278706f6757504d30487a585041344c71626549742b6e58356e475537634939315547545a3368626c706b374835727065495577354c68674846614c4f366c416154676733337777774c72454153723558764d446739797241624869677474526c775769467a416d722f4a557869394d466647505430354642706a706c346c61517872696861484839716559614f76366a54437143794f333832784c586e6746357265625132445373637578657430797332346a504e593933647457724d784f68496c4750456f504b45384555446a52477078514155446f4f6d79514e4167686442386b787851464d45454b46636b547a5151475337316a64446451416671694e4c4f754143796531646c626c7267616f4f7265746d646535557874526a4c715779787549626b6170556b366135593164517167716a4b324f6d4d59482f53726f584c4553356965786c6975624f344b6e465757746e6331564e447751627431365847636464756c4f3556625062797464594c2f414c4630724f6f7471507671725a514136654864336f4a626d4d714f50647a586d2f574e31352b346b592b4844745a61392f756449304435726779446f446270494c527570504a7932437a7778566c3235724c6f44624974796464545a33586d4c64474c2f4663596c793457765a7a4773484d494b4c6b644d79426b565849506869746d38746d33634c67314c7247614941326142554456475349716757566355777751554446424161494d55347269706967586d6f364f4a5a53755343595552784b7373325a7a4f464675736244395861673532677a50536f59365456644b3862646c78457565664e63346a58566b414857656139622f41497262314337717a6270354c7a32336959414568646e30376551326c34544a3067687079343979424e7a7442627533626266385a36657953353133625379774b376672573674692f4339616b44726a3163476a37594c6b334e37624a4a6765796a4d364447624f6e73566b61534554522f78512b354a71725463684c715975426967394436554a595358577245565843323239674964525853322b396a6369674e3234577267737775526c5844676e767a4a44726b57397663337434626133346646506b4f333845486639496e4c64584463422f705136527a4f5a585a76466f464a746476446257785a74686f78576231472f70416a6d6777796e2f57664d44676d6a752f384179507470665646343869736479344e5663417345356d5634635831525042766d6775336c37794c3779677a4f4a796a6e3348357179477a326e716c76706a462f34656d513975395966557233394f55706549724a597543526963442b72416f4e4f362f78535944376165722b475643754e756654372b31706667593838766667765662666533496b61695a44682b6136316a6462666344516138597951664e436e41306d692b68332f51646a75412b67412f77726962762f41424b596337655950384d736665673830492b3950727a54626e5a5839755776514d506b7164564d554876624e6946754969544b4f6b5a636c7a2f584e6e5a765770547444727850646d75784f6a6b565762645233642b424675324462504f7675516650775777556431723375776e745a645949485a6d73756b7567427032725873596956784a62327335696f623235726f324e74354a42786442727557684f4c794651734d397279376c3172635235644456563372556f6b454846427a4c6533316a5563467674375455527756676a4d5969675a574332644c6e325a4168742b585442637a66336f52654550717879585776572b6c3548426563336b33754542426d7a5155427169635545634b4e6d4d6c424a516f4769532b434e306165394a55697159536361546b675267794c6f497567425572676d416b4b4961546b67436a48444a576554504568613976734c6c3771776a6d67784d51746d3132453778633444347270574e6a6248686a717a31535730575a4756492f3761494532396f5734417848623763467168427959787232703457414f6e69744d49434262696777626e5a69517135664544426562337531386d6570756c65304d414d4b486936355071316e5861632b4b4b4479714f6c6a5253354271456f5a494947434d49756138554f7858374b7962392b3361474d355243443642502f48746759615261416b52786c2b61385a367636564c302b62417647517858306e6b7562367236663937616c414d4a5a486d672b614f36677069744737326433615330584973506773374f554542437474577a4b7242507439686433492f704e2f75412b5a585373656b62755068456366314438304132396f686d717439754a4654787756734e6a63746b52754e6a6946706a5930466e515565572b4a57652f4d516a5371326b61593456584f7633487561585a42794e325a6a7848735750466c73336b7141596b566372475a5a6f4652554e4f7844456f43634636482f4639355a73334a5772672f71584e496a50682b3965657267565a616e4b334d54685355533435495071514552676d45736331792f532f5537652b73786b5048684b4f664e64453663676746327a6275346863612f365063482f47787a593843753237466b515234666967384236724335742f36552f466e46636b72702b75376e7a3935634f54734f356373794f4b435551496f435645586f674a43552f4646714f6f546d674d59305a5277454b5a6f73676841346f3549436959357355434f536d67516d7332745a624e31626432766c6a586a7879514c5848696c6b79575551464e5449424c424a67725a476c56587951656f3942692b3130385a53506574562f303255775a7876546838666b7978656753486c4752796c546b2b6137776b2b5063673831503048554774336f6e6a71634c706248306d6531704734376a714753366b72454a53314e58327854734c6665677a62585969642b5535562f4661393374415964497146627449675656774344782b35394c336477766275446870456d376b327a394b33316a71463752496e77363136555749332b7546526e6b70477a414f77515a746f4e7a2f77447454456a43514f49344b376336595762686e686f2f42615044466975583676754e4f326e496656466d375548684a4f543370593155716f43675a32776f7578596b623173636c7871597272656c794f69546f4d653668497a62465a744a79577a65734c684563466b4a5a4148536f6b50686d6868566b45314f6d5a415351464b6f47634d796844592f4644484661624f672b4e426d4e63455135665574567937622b685a3553424c6f4132534362566b6766696756326f702b4b67444b4370634948457a684c755375314645764e415672324672584b574e422b5379532b4b376d7832762f4149766e57345031474d35634d434751616472757843583951394a2f48327174636435462f77436d5843346c797831475156634c73686a6c5242366131666864366d596a326f7264555a312b4334473033305945616879354f74557656635769422f4b58506167325835516c507141516a634a4a47564b3455584b6c75726c79576d324b6c5a665576754e75304c684d544d4354636967322b716571526841324c42724c787a487953656f6571626139366459326c6c395544314f4d474266336b2f6d793464667a536c41587a514a6445317755495a4159395333375744514f7248386c7a33344b775854434c5a6d726f457547727063314353616845534c6330415a514959706f774d6949444534494f312f6a746c37307237663859702f4d6142656f314856375a4c6e57396e2f627474437a2f7742516e584c6735774863726f794f48314d6754314543394b454a505742584b7638416f314f6972393637552f363832596b782f54566c5a3555346463756b66785341516562742b6a58704f4745522b715576592f426239722f6a7479456850376743512f5445792f4a313162454e5574555247654746794b3053746d32586c48532f416f4d562f62333541777562716b7645316d68436f6a365a636a2f785445672f3871325375446b2f3853676d4a446e78516379642b4f327275424b4134474f4a34642f466366666232357559613574706d576a46734248393639615a52756a79376f3178503079717558765038647433592f38416979305446664c6b614844416f504a6f2b78576a63375337744a614c38544758746e6d732b546f414b3155484646414944676769785543434771564d6f3955445247755141784b395873487477454973467766544e7239786366415247726975794c2f6b3559494f355a687178542b55376a4a65666e2f6b742b30576a415341347037582b5447354a703278462f302b33373048644d4d67686f6f782f6373316a6569354277585750646574533230714455657a507464423134774f66637133656a5658457466354c4b564a3232433667336e6d3239544d2f765165632f7948623662777578776d4d65595846776f7659657237587a6474497838556574755761386778434156495a5862612f4c62334e63574f5665616f4d6e6448424236445a516836686275584a6a797a4454476e55356b2f464335365a597453367a4b574770756b4b6568543875334c2b4f37626a33744a6276554965587437307635523375673835756273424978746761666973776b52687752717a70636d51456f4a67347a51797167492f6569494f537975735131554b3278746149567a3936446c6a706f6d4d474c4a3730544753706c777a5148556c666c696d30463070786355514e6b4646504355644f72745147594d68584a56737975625469704f41774b436d75434170696d355353784c494353775a415250636f46414d304277375649746d6d35354a5343537943506d5557556b4e4a585a39503841546f53732b62636655634f7842682b324d397472694b784e565844617a6e485563507758597562324f3367625830796f52794b6c76643762526f6a535148316c427a4a625532772f76566475476c2f6b7652626261327230586b52717a2f596a62394e74327043637030664273575165656c59755272494e3848564a4842656b3952334f337552386b7a636a68476935646e59776c562f59494f646f4c616a6b6b487558573952734552426a3459686c79712f46414754475578513448334a58644232515175635631505137492b343832645957597975792f77424f4878584c646466616b3250544c317a4f374f4e702b44645878516371557a496d52784b6864676c2b616871485153737355585a6768384755376355454a52437574375979786f4374554e6c6f446d72494f644547564577696643757a613266533561507a563976596a54674365614467364355756b696a7230457468436645667970647a3656707750346f4f4141706856614e7874355753355646636b4870503852334a382b64683654692f65463635693753587a3730506344623732314d2b456e543777337a583057574e45464f4937436f49355a59717744504a56626d2f62323975563235534d4167343372766c624f4176536b54634e49525a654c75334a3362686e6338522b4b302b706236652b7647374b6e365277437878484e424e4b4a38544442413431527a7751534e536739454b6f67536642424b5351646b78684c45756c7131665a6b47725a622b3773726e6d327a552b4963527758764e6e7537653874693941342b4c6b65432b634172742f3439366a396e663875582f4864614a3548492f6d67397749757a705a51344b7775374474526b554753394f554a6a686f4b54564c47584a7531486373626b657a344b5267773549504b2f354a737843364e7a41556d576b333676327268466776622b71572f756245344350385565304c7a4778394a75376b367a30774831532f4242527450543732386e70736832783444323936333376514c746747642b554977484f7675586f746e434f31732b586177475047533448727671486d45626533534d6179376632494f4e685467706a7a51694877526943533063535542786f6d6863306a544a646e59656a796d786e377632727066324b325267483730486b4d52524179586333666f637263587331476456787057703279784448346f46664e5351617678536d614a71673946365a76726c2b33354a386363444c67742b3232784d2f4d782f53764c2b6e377237652f476373485874744d62655741514e594d4a58504c4a63747158684e31624e692f4f4a6f782b433962365954657533723063486a46636e312b7a4335654d375a63676463636b432b6b526133492f562b43326e5a776e3436506d46523666743946694a7a6b2f61725a5233424c577449356f45752b68505731634666706b756362567a627962503841685769364e33437372772f307977566e56636937755778484641316a6458664148503464365463584a33697a7346317654746d5a6a7a4a53622b4671704e317449526e726851346f4d4f3239506c654f51427766466567323370397149304f77377356356956726333726e524e6a476e426c324e70593952747844796863445a6c6a37304855305737464e545057764a65542f794b794c643458592f5576537873787531755135567175422f6b6d33494e6f7842714e43446d656a514d743561303858587570774e5356777653665334375136376b683570776879433768726a69554845395474694e2b457a6850706b764d377130624679567557525874642f746a7562457259704a3955546d43764f37346a6457342b59434c3061557749397330484f326c2b57337536683378346a4e6573322b3274377533356c69546677727931765a7966425836353750544f426b4a4833494f2f50596153426336672b442f6b745733323474524e7a533059676c6d59724e365a366a4c6541794d5a45782b70677932626f6e5359757a74376b486b7472644e376561692f57645076585a306554546e696866394f745770516c5a46524946585879486a544a425a44654745576c67716478366c4e694c6178584e7463457457484a3164626a473331532b43424a6271357437594a6871636e564c492f6972646a36774a48524d61592f42562b66616d42726c704370387a6243577258724764477037766b67377533395375627336504c364439542b324b6f6c637537616248776e344a7474667334576a48677a71322f49585045506274516162463874326f755a39527756646d336f69777956306f6b416d574c494a62674c6b424535533936384c367a4d54336c346a445752376c366e656572572f546a706b44496d4e414d4f5338544b5775526b635456414854525946304952656771666975727376525a336d755865693378346f4f637a56507336724e417937473932506c68344234726b5346536757674446463631524e6543426a6e696744755551357753694c72703748627543537843444435524e457042646c3671317459796a584656626e5a5735754a5271324b447a4f4f53414e46303776703468584a594a3270416c41724f704b6771707051302b394259446b36654d6979726747785675716c4544616d437a33427136386e566b5142552f46642f2f41423761323935432f5a75696e537a35596f504d554b67344c702b73656d2f322b3770482f484c776c633173454566494b5930516571677161494c74747435376935473144475262397139356274517352466d3368474f6b666975422f6a6d335954334278384d66784b37734449654a76356b47623171342b7875356b6d507a5846326d7a387a6167346775756a363444657441505150497176306e70326747465548447637526a5446556d77584430354c302b3532305431444873584f6c3046383845484d387378444d746d31326374787a3745777479754536634d7531656939507352735777472f6567386a7564703563694f434f30324a334576345633505659694d78636f654935717261784d7944687951627654646c48626c73654b37595a324e5163566932375347724e61794e46546a69672b656275775958376c6d475535414c336c76302b4d4e4e73334b784465334a634f7874645871643265506c39576b356d58733637577a757a6c764c384a4536576838513643324f79737846535a453856787656446f3077674b565863334e364e6d424d76626b75564d47394d584a41436e5448687851632b31593873467a556c62486a4f4e63416d466b4545636c6e6e5079687745336a3349425a635070577333593757506e7a384d4d754d6a6b73753168726d6634567a2f41462f636e7a527433365936544c2b5a427a643775356271374b374f704b7967357071536f45497336435641645134714841497343676a7458496f6974546767434d464d63554444694563636357532b4a68696978456d2b5342514b6f6e334a6d62704b566d356f466b63794b72302f2b4d6571614a4461334d4434447a344c7a587954324c6e6b585958526a475554376b48306631434839433877666f6e322b46664d6941463959684d5467446944456646664e7656746d646e755a3232365865505967784d5a45414c30477a74434672546e535279586e6f794c683136376251476d74636b474f2f662b3369305961755a5758373763677645434e4636473574784c2b495a4c5061394d7469546b664642693231793765493167667a4d753173704854536e597176746f77474863723741456142304665396962686667764e586470636864656370475074546b7659546a7148347176796763514f7842796472747052756137463348365a755233727445616f676e76344b72795963466f4d47486567385236356130626c2f3167454c503661503841797250487a492f4e646e2f49747630526e6a6f4a69755a364e74726c7a645769783069516b53672b6a584f437837766151336c71567164596b5535486a334c524d6e556b71447a64423831336d336c746273724d38596c62663865414f39746b3444562f375375332f6b6670336d322f7537654d5231396e464a2f6a6e706b6f327a75353031426f446a7a51646a512f59566247455735724a7576554c473070634c792f54466371352f6c656d6c75335469612f42423337753368646762637871684c464d4e45496933447041444e77586c442f414a527542394d43725966354f66717444757a4b443073442b7246567930784654563135726466354c754c332f462f546a3779755450643372683637684f6144364248704e4b6c636a315730624e2f7a6370674c7a4e726633724d74554c686464582b3978334e6e797479476b394a78722b54647943584a4351634b6867485a57673667644a63704a30782b434452737930572b4331475552566c7a725535517738537475376a54416173554576376e79334a50742b53622f4637577135637548687036655a2f597550653158707443713976365a744937533135644e545651614c744a55795351744639534c417937553173454d326143336d735738394c326d2f63335974503955614662544d51445a38457534334d4e76624e302b45635548682f572f53503761596b5445684c446946795245733577577a6637325739767976536f486f466a42514d5467794464376f5639794e4542444e3071454351315a4b324669637744437058512f745a46766a493135494f5141706d6d75524d4378795378446f4e4e71497542672b7236566d306b554f4b6533633053456878523341416b347a515630533971754733756d30627769664c46444a71503271766b676537624d43414d4348534f634539795a4d596a67475346425a4b524f43426d6b42716937646942616c54456f6b494d3945463233323839784d5734596c656a732f34394745586d353756723948324d4e766265662f49576c4c3846314c6b2b6d766979516379783658626732482b326e764e563070474e75316f68776270436f3833334a664f6b4547574667414e34754b6a454767563072596c6e55716f524f456b466c69344365786134615161554a5748797937696930786b5a494e4e79794c6f3054714d31356231623055577061374f48795872625a31355634704c734e5653505949506e4e7942746d754b523277587150552f54484771412f59764f585965564a6b486f7651664c2b3375416638684e5479795462794c6631474f70552f34384e4e756376616933336f45307950464278343767573341483745547579616f3372476d5a497173786a6a6b67736a7571615a71323376326b4142514c434c594a35383170733264556b4861326d356c646a536e4473576e51547857625a324e4f47544c65314e55714d674d4841314d7358725870312f66786835494245424939764a623478654f6f594c5a735a504939694435704b314f334c544d615a444a644734645070734b34334a664a657a332f414b585933386446304e4959536a3467765065702b68626d7859454c4c584c55544b6638512f4e42356c714b616155554d444573667955646b42684d78576933756d7844724b4b4975324b4473575a32627a615456626264714f6b674632586d775446457a4f4b44302b6f51595046782f45744f794d6478644163454153507539736c34357a394a586432514f31394f75627558696e2f537438754a39794333314831776174466d494c6535634339656e654f7561715a36465242423155434c4945736f36416d536a6b4b4d672b6141767751645268337149493578515a30634d5642306f49794f41554655445642626175474d7752785862323234722f5578616a4c69575138783272713372596c41474e4a5a6a424231504e4f6c6868795a547a59412f4a2b4b383431794f425a4158376a396944312b75324961347a6a7941344c6d626e64436667374679624e7955354c71574c4269356f52386b484f336c71527a584f6d354a58706478747849306f36344737732b584a426e664e456c3855704b6863494745754b4e75576b3668694753684d4f6e4642304e39716d31797463317a33626b363032722f51625a775761516273514b70694532426441355a6f426b695a49697142434147754f4b736a624a6f79733275334e772f6d75745a32736259712b707578427a6f62416c746446736a743764756d61315367526958314c4f7764382f6275514e4d4552544759674b6c78386c58314d77706d736c366653774b444a656d62736e5077347136476d32486c6773384f4b615a4a63444446413872784e5070645661704d364869716171416b6a6b6767775a51524a78556367555166336f484678585233486c3046667957586d6d4964427368757377567632323872587358454256674c48494950562f6450427942543846315054545a68717530442f73586b594636676b7264593373625564444950594464327a4a7451727771764c2b6f623037692f4b554b67644d47794f617a572f55623273616a6e6879574b6535466d3459787a78626d6736753675695a654e4b5637566b4632756f34724c4464573559696f3756626149754457416774335535536a707a4b356c6b6b544158546d544b42454d5679626a786b776430485246782b78623974656f4e5a63386679584b32387053594e6774396b5245476e6e68795164697a754a4445393477573231366a4758524f7048426565686359454f653161495852496738477167394162397534776b5178796b507757542b7a62562f4d38714c726e692b664354514c52397830732f77415547323459754753326f33545745756b447771726179387a62776d6357566d33754d6561433655497a6959546a6b71702b6e57766f7032713234574f4f6b6c4b62596b3153587a644279397874674a694a417239537a666176494e3846324c746a7a4b6e735641745248534d5548503841496c5a4d6e723766745378684d44566756304a577452595a654a4e4862786c67436735736452784b75666756727562576f4d5252766971726c69726c426933733274754d3135653757525048344c317436774e4a4143344f35324679632b6b4275316b484d4e564a456e46644b333650656c4a756e3371332b7858435130685769446c77745475644d417445505464786372474a4c3572736262303637742b6965676735367352376c3262594c644a307367344e6a2f477230324e2b5174356e4d397a5a712b392f6964776a565975786d5034756b39693763444f574e566f6a4c793841673842752f54647873354e666959384d776538555532566a7a447134664e66514c746f626d784b33644c435854315a4c7957787378737a496978615877346f4e45626573485548486267737479466d3357623177307375704b4451314d3550765763624b64307554442f564f7663673533337469457571424c6331757462714e347561687659632b31644b506f7471513030667366354c6e3376543537593667496b5a47442f46304855737463693548636831524e47575062587a454d4d2f78577534415936736b466b44446a5469746359327846334244664a6566766a7a47695850597373646e6473533151654951656e7552774c64697862714a6e47556370436e61717472656e434c544a5779326457492f4a42356e65374b59464b726b53476c65366e7477525448677648372f414735735857343143444e56755339422f6965793837646565523032682f366a54354c685762553730785a746835457346394c394a324139503230625031597950456f4e5978716d53386b64515156337476613345644e32416d4f613432362f78586158592f3058684c6b61664664304875434f42356f50433350385533554a64424463617579326254592f615575334a476e365a4d76573446456c42774a626d79526f312f4358354a4e646d51704b6f586f7561476b456451425165634d596e776667756275396e63756a6f6a31635972324a3274673477682f7443726e744c444d49414e776f672b66587653647a434775344d4f59584f74365249616c394f7562437a4d5a68634c656634734c3074647136496e675974386b484774624b7a646c473341764b57575935716e31503033374d526b4d313633305830542b326963376b684b6336644f55556e71506f634e347838325551503458516542576a61374f3775706946735935354c3257322f774155323173367272334f4430586373326264714f6d32424749796945484d394e394f74374b32497844792b71524658585242496f725967446d6561556735494270346356496e5343325348494a4c305a65564f4d5047596e54326c4238313373764d767a6c2f45566e4e55393445584a4134756b41506367504e41564b73743235544f6b4c5a5a394c757a664442366f4d64757a4b373077446e6775746139417661645630676677784c6e7653665a377a5a7942465035545262626537333179476d6a506a6d67354734745173644946566b6946336836564b395056646b2f77444c78566b6652344445744c6733346f4f424342666b6c6c4867753350302b35476b4950454b7578364c756a4958504c44634a454230477a2f4850545354397a634642344834707638414935674557777a386c314e706575626533356372556f682f6f71467a2f557653723237756d39592b72365a445074516557776f45726e4261393374376c6d576d65504f69794d67663648566548656e4e456f4f534474656b58577433484844756464757875394d656d71382f364c31536e622f5648346a42624c6b5350435548645071515935552b4b776633574e71345a586f6d515044344c4659704e7274526975694c57337577794d48774f5343522f77416d73435230514937716c6172482b5137615851597942503841442b5335386653396a713862637466357270376547327467526864422f7742546f4d453935506233544d654357584231317472766f583430594c4a366a63733277504e493669326e4975755964724f4265334d61654555486f5a37694f526f76506576334874694431385863756c5a695a52477273586e503867334772646d4177674248382f696734356f65536877514e555161494270664264443036674c3572436550466141664c4648424b43627764617a6954554b6b357558516c4a30424c34357058544e524b3145425a4731626e634f6d41636e67757036643654397a624f34755361416f4f4a5864733252746f6164734978356d705065673557792f78323963477138524566707a585474663478614f4f72756238316d3350712b37424e7657496b50686d7568736656727044546e47582b6e44762f596751663433744c6454475262395278397975683646732f71736a2f644c3831306f3767534653684c63674642566139443251414973782f3841556165395a39352f6a573276786148394f58384970376c4e78666b41534a4e777956566a64585a6e51627737704f55486e66552f513978366631456137663634726b6e6e6976706d6e5845786d664d6957346436386e367a364964742f5574442b6e386a375a6f50504631423731434e49516571434c313370567757505337766d413958687a7249427663764a383133665239794c317933616d517a6a704d58646b46634a3675655345374f72744e46366a642b675774794e6349694677384d5063754c65394933566d394779384f732f52797a4b44446232494d584b306266302f7a70614c5931537a34447450344c725139467462654f7663796c656c2f32345544725a5976576f32487357476c6a355473582f694f5747614376592b6c666254636747625675665445387678586c50587431397a764a7948686a30523776327272372f6658726d30317a2f70416d5852453478796436342f75586c48667451424552315555656967634144327167624a4c326f307952786f55433573696736694143754b4f4f436d4a6f67373971426f784d356149676d526f4176582b6b6569445a662b5275414a584b615969756a3971346e2b5032504f336b5a6e43332f5550643742657575456c676539427a2f55626e4842316a733767585a4f44323967785854753274644a594665653375363052386979656b45367063536766652b7458662b486248524166706f535678376c32647736706b6d583852644b527a716b3549447a5733612b7137725a736256777350704e592b3742596e6371434c5651657939503841386a7362762b6c75596933504b51384a5034657a72705862485537506d4f594b2b645056647230763132357376365635353276694f782f6b673946472f41544e75663841546e2f38796749354657365a4d3073446766627454526c593953736a513179422b6d57492f49726e33647265326279326374647359325a5a63573976656731376a6132393562386d3850355a6656452f6b764762375a7a325630325a3978346a6a324c31653233397663524c41786d4d5948464431505a66334378704662317364484d5a6a327a51654b4a344371686276524e4f53474651676872676f376a6d7047694f465167464559456b7372747059462b34307a70694b7950414c5676647074345238336133444f4c7449536978434452734e395932646b36675a796b66434d50662b433236764d7478767961455434596a395045716e307a59754e55534e5859757a355673324c4c675531526b376539426a68366836665a70356b75724854462f6d4d466833567261332f366d3275682b426a702f4a614c2b7a7552505443334b50387351516b7432494677576a78306f4d6c693566736e5241536c704f5346793935317a56493642776c586b75763656745a376a554e5a45506c77623971796e6161444f33644f4a642f33494a5976656c4e70757a6e71354267506346746c754e724d673761365339434b7565356c7a343763786c30327263674d5449666b757474747474376247554951756359754d66624e6b4744622b7561705432323447714a31576863415931346865586b784a58764a3753455958646542315448476d42586d6257317379326b5a7867393255706a56712f5458444242796352696f546b63304f53494b44706253666c625364305977765754384a72306671376659336267714a614a413970433837746871394f766e684f314c2f414e77585647362b3739476d443437656d4237424b69447a524e416c346f53554251462f636741634d6c447879566b415a467767746a4a675063745a7547666573336c3663615a6f6d5745594f5a494b74774f706c574256317473656c33397831474a695034714b6a65624b357335614a3979436d522f63674a4f68705a5062694347723249454e537242564b596e424b6149486d2b41524d395156514e5552315a49464e536f54524847694278515473556a57716852414f43426e634d4531714d69656e455637456936766f4673584c38684c447935494f665a684c633334786c6a4968656f7644796d616762344c692b6c774833674d78687150774b39486f743359744d3051637546367841747554452f7a4b72636a5a334270744564315077576e633762796d467941492f57315747414b35317931594e62654a7070414c756747307654743342456356316239795174764d4d5975552f705870326935476377773854594c722b7062515872636f5278495165587433396e635039635661763072723766623743556636494e4f39656347306754706d385a672b324b376d7a394a74474d5351584134346f4e73724671354854426a467341764d6572374b4f32757550444f6f58744c646d4e7432792b6138372f6b305131725467485165644a70566b4134484e625074705739714c7a654f5241376c6a4c4f794145414c7365717a466a6257646a487877486d586375716452376771505439704f653773776e436b694a4e49597846543841566e337438376e63584c333670535a38514d7667677a6a344947714a6f4547514e47426c4a7331304c477a666d6c324733387a716c3731336474745153776568515532397144394f517957727959674d514672454974576e7a5145594836712b3365677a5274676a7156735948682b394e646e6274314377335056764a6254624a353671636b48516a624138533151674a437134557658723978764c73412f46624e743674646c49432f5a4d58786c41476e374546667176705976774a6a342f79586b70774d5330736c3947772f5074586c2f38414a62467542686474304d6e64427976547069337572556a6c4f4b2b6d537a587a4459577a5063573467616e6e466655437a31514a454159594c78332b532b72656450376132576848786379757a3637366e4861577a4342363555586770504975616b6f42696a717153675470517a51512f42624e70734c32367045644b623037596e65545a756b59723247337443784852415942427a747236465a744e4f37316e344c726978596a4674415175633845593037735546647a59324c745a7846467a626e6f31724a646678436d434c427175546e3759495044656f6250376154414d5078574d55714d5176572b70323437697a4c557a786a7148476938695548306e307a654464375733666c34694e4d75305972585279596a4665592f785064663072746b7451786d4f2b68587042514f36444c65746e57357943736c307730357057653432524c3969726e507a702b58436f6a6d67535568322f4e556e62784d6447584c3845384d5349354b36414f43444a75496e62516e64695745596e7864693852637547636a49346e385637482f414343636f625054786c70586a4d4d554442313648305830377a5036747764504663506157764e75526a677662324974625942695268775a427474776a4477686736625633305765467a53426d72446574774771526f675763497472774a584d3375796a66697a6458466447472b747a4c51426b4d5879644e4d435a6f67384275647364764969537a695753397076746c433534735635626662493761655053634547567377752f44314b563362474c744f49712f44426566563233635362696739683648447937426b637a712b43356d3732385943394f645354302b3964545937376177506b53754e632b4876436f395673655a4f4d4965453955712b324b43335a327845434c30455174666c51505352544259725532623949646443463045596f4d6e324667486f4663306c7931626738597870484e6c7076626b515743463058376c61517a516472302b334557524b574d7139694e367847765077716d78666941497877795734677948546967356632396d664146583237554c51365173773354584a514f4c365673684d5444523979432b334561613158473957306732357a7247334d536c332f673637727446636a66776a64746d45767151565834524e7a6237697751535a61583545565857754d435065754a364e4179747745766f6464336c7951567a6134326d69775432657157474f4b365168564a4b4e485159783664426e4a77373077394832742b476937586d4b4d726f69756d52717043352b697141625430653373375a74324a306c4c5631312f4a574859334e514e4a4e3855384a61683163565a433451574a515a4a37503670524c68597478744967475561532b594337597646487a67512b587951655638364d2b6f53423548464c653238726730777a58707275303232342f77435731456e4d7373302f52746f586a4547322f435344783876543541764b6f346a4a64586232647045442b6b442f4142484e64533936415a6a7076476d4468595a2b67623633345a516b4f3849444f785975534974327845766945625070666b53456a636e4a754a36617258744e6c6673654d503266765775555154576851565142694f39476478674b3950344b7551725433717137616c666a4f324d34792f4642356a636957376a63766e785071484b4d5674394f3947745849523347354c695138484467367a3751362f36583644586e314435727332742f452f3037754f414977396767364e6e623262636636454952484556537a323461755075436f6a61387336397363667079576d3165383268385842427a647a7467513859754f433831763745625633544545417233557942306b4c6d6573656c523364727a626669674d4f4c4950477859687a676879556334464b654342374d645a3072746257335678674b63467a4e71536267594c3056694231636b477131445446355a2f44327a526b576f6539614951494742526e626c436a494f5a646a7179354c6e33724d515779586346697451717a746e476c4235713774395055506267737046477a7a5872375777456a556636704c542f62624d2f474851654849526d5063636c3744642b695762672f702f3035444c5336387436685a4f33767974634f43444b2b5258706638414644716c653461592b3375586d475a2b4b39682f69397654745a3347724f625032494e6e722b314736326b744965634f6f64672f5976413531583072635341747a3746344c3150622b54654f6b4e4356596f4d62493648595253713362514e793743324d5a5341393551657a324e754f33733237424965496339705779427058464879414137567756557045477543444c7634663069324f6c5964744b56757847474f61375679486d52352f44327175546642693852554241742f634e4835726d36684d6d537576784d694e576157784b336166555779515677334537637143693665333962387350495578376c69382b792f585565355862532f745953784558373044623766576478613643646231702b4b6f32567a5263474f4f703132764d7458597441786d4f544f7550366859386b363766306f5051375336497836733671325a4f716d444c48737268755749546f39583752697454752b546f4f52764c45724737687549304a783572743753777a337066386b32667577575957784d36367962395332796d62647168717944487638412b7050514d766d7377456a686b72647778596539414849635543694e52466361397568754e32664c2f77434f324e4566784b322b72377a3753795977704f35306a737a4b357577734551414e487167362b78416a6856656439616959627535453852386c366661786a436938372f6b4453336370444e6b484a4f4b494952624c697266496d4b6b557a51556b31514846504b4c71434a6d3059687955452f424a476d433668394d6e626a312b4c67505a6c7a355130457567554772684d44524e62746d5237757861626c714674744f54494632753076626d576d3346382b48784b763376705637614d4a3665714c307142784861463650307135434d6f416761626762764374395a32766e577a41657a666d67384f4f655357533630396b4c6b5a455978476f686c7a74786238736a6d672b6a656c6b2f5a57512f2f414534726b66355674504e32736273425732636634542b31646a30324c624f7a2f7744546a54755650724e7333746e64694d6366645642344b4f30755272536e4e65693239304e4535484a5972304932524276717937564c5a4d5a615267673944626e71434e79596f542b31636d33755478576a5835735143675339766f4354796b77397543776a3137793561595265744857366532746e6f6c48557363747259683470786933763730477148722b6f694a736e2b59486a795a617a76686a4773666351736d30755748306955653164433574684b4a6f4735494c62643053484e6170556a56637661774c6b597879397933546d614846427a6435447a34742f474333746b71397a632b3374323773483032376a6c7155374670754153654a6f75627474634a584e726371395167395047666d2f314169374b7661394675456578614b57366e336f4d322b6c626874702b624c5447555a416e74586a54363764746257473073644d596a716b50467a375061715831723153572b754551503841536a5163327a584a45543349444d3675715653654f4b5538465071524a5a41487a7a524952666a564c67676e68376c424935596f6a464630434279615a49784a7a5566504a4d5a48504a426259334d725a6f75785a6e4863773144484e6341712f623354616b386150386b48573874792b574b546351414442644b656e79784d44786539317174624278726c522b78304750306e302f5470767a445359734438463652394a307250627477307353566e3358716b62636847456464644e4f534459777a78545a686c676836674c6f6253596e6d6d6c666c50534c6144644b626379764c6635503668726e3972416c68347531642b37664733737a76542b6e3572774636374b37636c636c34704641676f6867706e524741633151534d5a534c42646e5a656a4736524f3637492b6d656e4f515a413971394a486f476e42425462395074322f4339466647794d42677241344c6847474f4e4548423956394c3877613444722b61387a4b334b4a59696f6f76704d774a4c7a6e726e7062673334304978357367383169724c387451475442554e52506b67746876627362457476712f70794c3665616f44344959715551624e6c7434376754675a61544745706a6e7071736e4e506278356e38556b6f6d4230796f51674e4753386c4e4c4b4f786f674e5671394d3235334735684448367664565a4d56306653706162327148424236794e774f53465a723168694d46697474636d4e54314331626e6557397644724966673955444347724a696c6c4469475a63795871396b6d6b71466166765152694b2f4a427038504a56796c31382f7a575365375a347242503143354545422b564548636c3065494f4539752f627a6b4151764879462b3778716531624e74366464595364766958373048733748563446726e6242433548702b3175576d31534f4863757a62664130516332394152656c4635623172302b4d41626b63516346376937447a416131344c7a2f414b6a74684f4d345378496b325655484a2f783030752f366669756a646d4a5534726b2b68516e2f41466a44777869757071457645482f423046463245626d4b77546a704c6a74396a677570714a714f61794547526245494f664b42774c4f746d3269496d754a5663343953746730706a7351646d7765544b79556d4b70684f492f596e694e58566b673052595277562f703536794252772f65716264755630696e376c7674326f325a46716c6b4432704755706e326f6a5a6b5241555a5a74724974634f49456c706a53337143446c2b706569574e38483846333951586d392f77443478754e754e567272694f3472323330756a435a6b4353672b5a62653346354366412b395547692b6b377a306a61376d4a31514773356a487458682f5650537275776e5550622f5567357a6c79676531516356437943797a624e3235473347726b4264722f41434335477a47317362662f41456831667a4654304b7a437a47652f766543313442786d754c667579763344646e6a49763730434f685251636c506d674c4e5652386b424869696556454178554b674c4b5351454641306f694478513546415145464253694a72564144784b4c70635553636b443235364a417878433732313351767771586b7541553169374b314c5645315164793574596d5a2f692b617753736b44437130324e384a78366831636b537a7345436253443949792b4b374e714439557141726b777543314936324372752b71644a6a444839556f6f4f3563364b75474878586c6437664e32346531473576726c796d4379683830456f45664348554941374548514538436a686b6867484b6a4d676d50596d4557435657516b48375546595331577732784b5053733748383043486b694179684a4254326e6c49416f4f7a74497774323634712f7a5463697970306d454d4b6471704d78336f4c524c6837594a635458454952766672416235496b43564f4b41585471636c59623868344857693444427a6c37317a35334b34494535496d754b456958633571444242446a7951724645784b4645427743424c317a52446f4242464f314e70515151424d66636741366e4a426647397041593178566b723730574d4d45524f764a42766a64307a316e34716d2f622f714565355641616e7a4b323268526967777a74455679356331307654626e6d52387459643066306f62653862647753396d51646d3544512b504a637136356d534d5636533649336f416a416a4e63666457444442424c505668547656385a7658504e5a37664b6a707a454370515843657270526866496e69367169476f4f4b4f6e79794547713363453249542b634e4f6d72366d646376376f786b496a75577a7a7870302f46733351656e3239754e71324c554d49725066684c62335844365a4d7235793033485037455a53705444322b43424c6c77536a71346c474e38686e772f4253566c34344a6255664d36454771513142777374344e5038307339306266525a4d5a455a316f6c6a4b3549764c456f4c424376566d6e59444e4c454f4d6d545342495157536a71484e5653434f747152637153494c5a494b4c6b58496c3272474951767a4d414f6b5663344c58754a2b58626d59735a7430725036494965585868714f6455477357513241644b4c414d6a4f6e546a77484e616d314576565950554c554f6d3344366e64426d4d447131444439533052464877514d504c6b49642b6e6b744d6f74422f5949425a59647167487652684d36542b43614245437a565046427a665744657433626479334c544763513735455972697a74534d684c766b634376532b756b526a614948686c6e7a7958495943504769422f77436f77684141365239557331566373627563615474783975785877414a6355343856746a74626437785963735548456e74642f6247767a6733383641332b366f4c784d2f34586f3363753763394a74584b796f4d65537a54324e7530576a2f77436c4258622b307561644a76435a2b6b5644384d46665052623659794f6f2f544c385658734e6a49536e4f4c79634552666e38565a44302b5673795031487672326c427a52367a613234306d3372492b72557a6642616472363574354e726b59386948436e32467935416b4342723955553176625368307a7357794f4e4548557453686559326a45672f7054546e47335735636a456e2f75544158503841374e594c7a6845776c7868503831526439487476717561356e2f356b71494f716478592f373176756d46355031612f62755842354d68494d78623971364d665134616e6b4978412f6d5034712b78366661734d5241476638534166346a734e5570626d5938485448767858723548765841394a75585275726b4836497831474977637275794e4f5341366b777234556d71764e4e6b674c76512b33596c6b57545242774b4c424142496d685578795131616a7955494a77514d512b4b464e4c71495551535742664e4b78434e4d6c584f347864415a4552716f49566639695345533676416f674557556b4d307a484a49587a51475841354a73475a426b4b466b426a45342b3551733163314938556b356873695543556955316c49376c2f5a6c5275376874575a58596e5359343530516650384131537537756b2f726c335653324e72637564624f4662366a4757727a5a4f5450714a346b72702b6c782f38414872784b42726533467550526d4b71472f5a73482b70394f576e4e627263424575714c2b303834366741377631444642564431765a31476d354a2f35667a56742b2f7472682f3841484d68504f4d2b4379614979627a4c493135476f54784562683161533748486877516274755a3367304a512f312f6d4666754c4e2b774e643249306c734a6b685976537074652f705179726e33726f626941314345322f5632756735453939624a506d6e5445594d74646e317a59686849532f6d4d666a6a2b315a4e3336584b4d7464734167346a3855646e74664a6b503655442f505833494f3962332b303341613365414838564b393675747a444e71317877564e6e59376534486c5a6a71576b32596a777345486e7638677433723054636149743232375850446c3272796a7576642b753659374b344252394e5677505266524236674e647774454841596c42772b5368504250663069354951384c6c7578566f4e477a76793239324e77592f6d7539626c61756a574f57613832354e4676737a6e4563766b67366c79784335692b6c7161566e6a36624354613553684531314d43796146326a5a72624b476f646f515937667075776b662f756e2f77447a5a4834726244306e5a5370616e635079507656554e6a4b3458474b364f333255624f4177515a35656737582b4f583878577578596a626a6f794456354c5359686a785a5a4c6c7a526a4a6f69736967626358346257306230387167633876697644584c6875544e79654a4c6e744b332b71656f6e6479307766793434632b613570434167316454476967706967327041512b5365557452376b676f686c56424358716965434f6e75556436424170365530625a6d52486a67744778737833462b467154744b566578624932495333346a434f6947727738676739434e46697749786f494c4b4c39754d7465344c6e4c566c324c62754c486d554241412b616f6e365674356e584e35793757434268367a73744c4755482f6b4a2f3841685765396173376a71735330755847696c654a56467a3057314973784874373170732b6c78326e56475248543748755158625356323541676b616f394b303771316432384e5569444c67716638636a356b37737a587163486a7a572f31514e4b31492b463048416a75747674514c6c35357a50694d672f7547444c6f57503841494e6c633663502f414d327a65346c44632b6d69355853344e464e70364a5a74525a6e666a2b5344614e354335614e336245455234666c6a3846726a6474334c596e4a6d756648386b6b4e6e743975386841436d58537262634262745269523363454867505739724461376b7867656b395876584f664e6576396632304c2b3732776e585752416a764743792b6f374b7a4862334978684742733665724d755771653271446b2b6d2b6e2f6633664c42305138557063422b2b69396a736476747469524565574a34522f58326e6d636c3558304c61486358687763616878694b3158734a52736235374273537230796d7770332f414a49483362336949655a70674231694a7153565874746e43554a454e62456a3079465a46756272784e36376532562b634c567739424958705038414776552f75483231302f314164554a494e6c36506c677a4637706a2b747373655a574f7a367074726b5a6631705778456967694b76324f53756c367a59746e626b615153546f6335506d75645a324f31322f566f6a492f716c6e32426b48473330507542716a716a48394d69754e4f49696363463648667946323430657a322f4263432b52473549494548464c47694f4b4476514947703349506b6f43416d774b43434e564a444970555a41346f466f79495a523343364870477847387641542f77434f4e5a396e4476516437305061486257664d496156327238494438313144454f67574f545a64325359697455476266587a59323870776f6349392f354c7864326c4f3165753958424e714f514a3731354463537151677266676a47446c6b735975726f57354445494c72516a705a5035555a4279746533394e6c4964574330576654626d54754b6546427a667364556d4e436c6c36644c454c734461626d50687479397662697262657876742f7879427939736b484873625463626151753262676a49632f62334c73576656742f626a7276574933522b6f644a2b48354c5274765470416e56476f7a78626d756848626932514d732b4b447a473839636a656c72466e793777776e475448764456373131396a766675494337436b786a48386c7a5057746949584a536a384f43355732334a323078504a2f676730657437654e72647930426f543634392f3758584c4164656a3966747875324c562b4868464f34314338396a7a5143584a5149616e5541716736767063493362463644645853337657763148613239765968434936706e56796f73506f39337939784545734a394575396462314c61584c395a447746687a484876514c74704345597452674f7031766c434e344159736346796f52303969306a64786a5542794f487951626a745a526c68546973567661334e786336414b346e67416d686576376d576b5070527677336475332f34786239516f2f642b327144766257333545664c384e5857506557524e3561587a37563569473633646f6b39524c72716250632b6f587958746a5166716e6b6732326249755265456d507452616f32744a65574b353932467a626e7a3431697731694e475059744564324a77312f56376539424e3364506b33612f524a632b785948324f31476337686c777a5a614c747956796b6336465637342f62624a67502b507069357a6d376e7578516555754161706163486f6b5a517161477a5164625946396a75346638413070662b70767857585a627737585844474679426a49634f42376c6f39486c475a76576a39646d34414f59367677584c6f674d7a556f4e4930515a3174394c7352763767524f4131532f326830433766302b37654641773472736262304c58487867462f457438704d4f6c384d50795a593537362f457462737a6c2f50476e79514c7576514e7859477545686343585a4364695a6245733478396e567366576432447075325270465330532f76646b3930696477474c6a5549346a765164493353527242666b755076504e766441392b4a5862386a7937594f5a43343236335a73546b496976355651636d353666634d71526b65356272486f6d34483954537a48444e616472362f4d6e524b77535234705170337270574e7a6233524d6f617459786a4f6843447a573532656f6b42395335303763726669587570625731506f6e5538563576384179477a437a657477694b61427951635971323237736c6a4355366851552f4641724f564f3147544f79577051517141714f795a7330417156307652623474376b4352614d2b6952584f4e464e576b366f6f505358747564704b45352b4c71747950792b4331575a30635657612f7743705774376269596870754a534272376b304c6d6a356f4f6b326f42364b735759326a713073546d4f4b726a754245417871567a373238387937474e776d4e6f53426c6d673944596b5a6e5765786170544d634d6c794e76366a7470784c584d3877744e376662614d573836455479446e34494a757470593342314750567846503371793141516a704237316974627a7238755450694f595730455579356355467477366350663272682b73376565356e617452712f7535727254754f4f72483234716d467658644d686c5467427a5163622f496d7357724732676152426c376646637230765a2f65626d467331425056324446586575376d4f35336b70786b385967514237422b6136762b5037636265333538715375556a796a2b3142336232336a637241434e79324a65556630306233636c382f334732756261346264344e495972364a47754b776572656d52395374662f506a345a6365525165455a3863564f7850657479737a4d4a306b4b454b73466d4951656873416265304a484161666571702b70626d2f2f54745963496971317a694a324253706a452f42555133454e74466a3369495155523257356d38726b5a642f424d4a3543685732333632473051737a6c37646978376d2f506379316d336f6c3455485373774d344f505a3151596a557a67413472756248626d466f617377754636683661597a4a674a474249594445494f70744e7a74375147715547356b426272653674585830536765795472796d30324d4979315374452f3841314d4633624870397474586c5167654d5547346c7775482f414a4d424f784358365a6d507671752f4733466d6246636e317931713273682b6b69586467676f2f78333034573466645348564c77446c78585a2f756a3235394a387950302b33425a72652b7357626c6d7849744c52466a6b44774b75334e73774e3634502b334b58665642354431586343354d52784e64666175594d6149334a3635506d6678534943586571303748614864336441377a77576245747858736653746e397661442b4b5131532f4433494e4f3232634e76445262464739355677426270563859534d6159726e37755738737949733264584f5262344f454133467a64322b7357396366345336625a2b70323778306b615a2f704b77572f38414937304a614c316f5250474c70623132337570527551365a4f582b6d5344304459555175526b51566873376b69494256463731694d656973695030785143384775413456367577386d586c4e7a4452636c456356364f473874583565584945534e4f6f5658433954482f6b544177426f673366343165306277514f45347969666e2b433970475a416f766e2f414b58633876647750457437364c3641433852494f516778797638416d334a7768307944523149585a2b54624e7579656f34792f6173753161526e4d35792b436b726b5a4543475869356f4c37466b323436503372514749376c6e45376a316943417277534b385167382f2f414a4a636c3564754234796b2f4a65622b4c4c30482b5453506d57786c70586e3249716736487051417536704c303862385a4d526b764f656e656d7a33555450494c5a4462334e6e494f656b346f4f72754c38724d53414f617837585a334e79664e7553772b6e4a644f46694f34744f66626d7544763756793254416d514762594549505144633750626a5235304279344b32473873584a4e43596c32466562394f324e677972624e772f785569765562506257397645533052696634526767716b4249564658373177765662477262386f316936395263354c6c373231726959635167384e6c564e4136434346434e4a5a6b493956665a3047752f3168786a2b70656f394f7551335731442f77444e43476d512b53387274775a6b526674624a64795676794e347770537650707851474e3834443250747754472b46564f4a684b7543716c5754382f59494c62392b552b6d4743726c5975365149536d365952304559766d722f414c2b786238597179444e612b34746879645565636d585673324c6c31702b5a4b4f59475379322f56664d65454c526c45344e554c56443149576f6172316d35473378306f4b6655624537493830456b5031505657374c63533036786c2b4b326663574e35416d30524b4f635777584c32396a794e6354574a7751646557366e4c4645776a4d67794473736c6f64363132576c4a426243476c68454d4664726171447445484e54586b63304447543455354a52774f436b6d78376b75716d6e6967576351617174674d4662507150347175514d66326f434f614d4834732f76514772484a527050326f434a4632566b43394656574c496b307269677438774f324c496d36636c556f4a745469677638414f706d6d6a6430446973346c7078785246786a706646427068634c4f55664d6a70656978794f42436a68426f75574c4e796b34705962437a417648554f39494c6e7432706f334343484b446d482f487a435a75324c72505853597568503061386351472f686f5630622b3768746f6564656c30354445715776564e764a6d6d376f4d5672624778394d6f6a332f4a4737434c2b5a42784c7378585347366a4d5043514939366333735155484e6a6447346957785362652f35647a79706a48446d74643646715858414e4e594c396b3352306e714743447a587232784730334a302f77444863366f2f6946794a46653433323348716d3259394d3456726b324b38526f596c386b4851394e736135616a6736365737336832384e4e73504f587754374378354e6a6e494f706374327252457270412f5a7751633337726577446e5670504b69326266317655777569764661496570374d67413636717264324c4e7a71745a3166324344715739784335414e374f6d7533343252716e384678646b4f706f7557572f64774d4b48424256632f794b46767074774d2b636b32312f795457534c31706f6e394f536f322f6b574a6935644463332b4b3942747a7462385152704c395163565157516e4735624534566a4a6c3433312b784b4f356c4c365356363337614f336b644f4279584e2f79537872322f6d48474c664642343845354c336e6f676259576a2f4e373358686476626c636d495272716f766f5778327832646d466e68483970514464457967514f786358316a61772b7a3879564a526c30393637747963425531586b2f7744496436626c77626359572f467a4a51634e647630446152755866754a56454430773572697379396236427466493235754878584d7553447369512f4b69426a47564367496a737a544f446d67723042794d6c793937594675736346317938687147437765724552735939526e476e4842427a3469452b6d574b77626e3036574e7571313254556e4f67433361644936543746426e324d725675545872636163745336766e6251696c6d446638413078386c6838753459734d666d7239724454307a71676f39513230647a442f7872526a4a38597845616479783266545a326a49616e4c44565846656931394f6b594b694e686e4b43726257785a742b584841462f662b315858722f6b786c636c68454b6b394f4b6f76575a622b6364754330443153346b494e7670527533624f753677456a726a78624a316f766b334c6774786f33692f4258334a2b5246774d4f6d4b78324a6445726b717536436d3459335a6b354f795763725965633651413149576858564c6a55726a3737642f637a47337465462b72762f4a427a376c7737362f356b2f432b48414c7532594541506d714c4f314673616367666574734b4d677474674f35774653764e656f783877617a2b7065673346794968706b64494a7878586e7435474f67786758727751443072592f63617079384958542f7437366f787a7a4c492b684274755872316151756a75424b32486a696345484f683644626c346e4a37566350523765334f71496d2f465a6a486658445367616a746c334b75786633726b47576c6a6767314f593071726f57374e7a726e414a5243563258554256644c62626359596f4d467a623259417845577a516874374d333661476b6c7133396b6b794d4f43344f356e75375659394951656f7362434554512b35614c3232387871344c6c6247653838714a4a672f7433727232746477506359544661494d6c33303656754a4554695071586976556f6556664e7558306c6652774b676e32432b666570573533765562735968795a34495065374b4a6a7472512f77446c782b5365354554746b484175436c74773871454943756b434c39697371653542354b355a6654456d6f574f594f726d4636532f3658726d62746874522f5667754e366c73723233486d585978307655772b4343714d513632323641743731677455376c73747963594f67353239687548614d695965354778737475542f564d3876442b31646956735834737a465950736234384236666967314859656e36644453663235704e7036666674586456695a6a61346366696d32657a763676363075316469494144494b3457786237635a4a35504950676d754577777a576164307578515658677a6a357175337478646e47635045427031636c6261736a637a307944786a553158524d5952496a414d5077515778613345415a55584e3963335a322b306d5234726830447678572b4f4b386a2f6c57376c6533666b6e773278306a6d616f4f445771684456554a557743414f786f6967416f5278775148546e46514d6851436d4b6d54494267692b555647303051465542714b4a694748464b6a563042594443714278716955474a7269673952364866684b32664d7162526f4f52585176626935636352625375482f6a354a75584c637344483547693942495662326f677847463355786b657a4a575174526f7756704137656130324c64486243694266494d325a614c634262444d41666768493043536236574f5a5163722f4972756a61615838632f6746354369376e2b5233784f3747794347746a346c6349733643654c714b362f7057786e656b345a6c7934746756324e70643345756d774f56496f50513239746f7067724441686353583978674e5946506946565a39536e412f314d755655486f645836654373743157547a53596963484d53735736395176327a7074796154346330486f434d41565866746937304841686e5844326e71752b6c55323553442f534857795072554845623844626b4f4d5548693978624e75354b48416b4b73416a484442645031363049626f7a677a5347727072566378786b676846616f45703231564b55566f674543415630642f62313237653448316870667a426330484e6c746a6542326b72527845684b50653643697a5a6e654f6d32484f4b72306c324b6533636e614c774f6b386b6b716c414f5a7175683664456d3444487543352b716a4c72656778313769454f61447037793859776c435069343572415052376d34616370615973354d736663756c756f69334f526a574957473736724b48524147522f56495643444e66394f466e7745796275564675345979474134717958714734756b36753943315a316c78782f656731323756793457712f42565872467979415a6c6c336470623042785849492b6f2b6e793346765669516734467665437950325a72545a3961455a363552315a724a4c303838416e736255513863533537304870396e3633627555454a6a756f36366b4e784766566e774b382f5a4e77686a4671354c71326d4463554853494271666775647537514e326f707a572b42425657347336786a32766d45486e503863746631647a617542763246627437366559764b42356b5a4c52667344623235334c4936684758653334647174324736473873655a4876474c46423538794a785a556d644378586f372b787458334a46567a3733704d706638414533427059494f5254567050684f62713231455247714e575670394433556670676635546b7262586f2b373541484e33515044566d743232746d3477674b4d797573656c4341367953654744727151674930685242585a73527444534d5656626c6f3879584e61587a7a574c7a4e56736b6330433761576d7a4d6e4f6561766b514c4453344c504f6262654a6f306c667561516a2f774335415a7961464d776a746830617971626c3177495a45365664636b49523038506b67743141706231694638614c67654b5345396446634b696944796671332b4c4d504f3265417159477675586d37577a75586277734d307957725266555163677544363336626a76624d66366b427150646e334950502b74376946754d646a59384676786335486a324c686e3237555a794d354755366b714d63304549554a64413855515541555a546d6f4b594947504a4b455834714842424a493645432b4a55616941594652754b6849774b4935594941616f67386330475a4555715541664a454643714a356f48745430594b3656776b304b7a526c38464354496f435a6b346f49424555514150336f684473552b4b434f3243495a6c41464f5343437445587a53424e7a515156376c41526d6f7a5651424b432b4e38774c594c56437a6276416952494c4c6e7578717249544e4751573364735931466149624f6c7a327856396a654443515630624e48482b376d6731584967523041354c484f576b304331584a4f513679335142575342504d476c386b304e79423034425a376b3456507556635456425a75706d6663737a4f57567431737a5255304a6441574f534271453073456a5a6c424f525577553571534c344949584b44497652516b346f44716242414839536d49593449784b4352354b4b594b5651453149644438454355634544526d51613157714633564944397178596d6932656e2f38384a6377676d3969525051523144784c4a45726f2b716a566431385864596f52456a32494f337362786b4d507a562b3474656244554d5175647472676a7077476b34386c324a794578526d5163713745783665435456566d716e76584e5248415a34717145786d6776446a717146586665497156614a303968565974314f7265394257415a7944565a6276504c733157775850744d44584e6174556348477244755165337551316959784c644b7a3761394674452f47614c5671597639537762714d6f544d33635974797a5164574676564449384f35636d4570616a4d3044726273372b7575465067732b396a474e305248686c696771466b526c514d39614c5341415855746b53446a4a4e706172494a71595654676355756f5a6f674f54374d674c4e6e33496152454b55794e564a45426b4656304334644c5a4c6937585a584e764b562b44686e47683865396465395068695559573951706767786258663769382b736756384f66762f4143566f6a724f75574b3144624f576a6c3731646374693250784b446e33336c4f477645666974737749786334737377747933467a44772f55743238675459356f4d746d555165764657374d4735646d54345238566775536e474c3573756a7449693359367548754b444836784b4d2b736b644a59647134676d325743375739674461592f584a6566757a4d4c6d6e4c4c68336f4f725949314e787a4b3645504c6255662f5375426175696e626a6b74666e694e5437667551645863586f327733454c6e524a4a366f304848452b35632f6347354b734139566c4871313632576b4848622b314237445a7741724877736e7552414e4d2f67764d575057634f6b30714e4f44725566584a41744b325750747951645331636a4d6b526154464d5a79354d4f433835393239776d4853352b503472743765353567316b73673167794b6e5549763730336d514170677330726a38554175794747656135573433737256377968463655666956304a534c724865326d71555a7a38514c526a6d35346f4f2f3656626c355276546256644f6f2f674f344c56494d4f6b4a724d5767417a41525a5267794352566844344b67414174677249536f35514d4458556f4d45612b395438554169476f704a6b536f3643417467687130306b31554f5873333745736a6c6d674d354475564c3679416c755847352f4e575759524343324e4f314d51564161496c73536767445551375553684a3041782b61696a35476a4b45746a6d554542703030564e796b4b70346c6977775664356f3651632f336f464c6731576664786662335935796956706961756b764457386631412f4642343237745a5874734a786558786273542b6c394c514f41642f677466702b36686274744f6b6f394c4b6979625275457849494a2b4b4464624a495a57364a536f542f71564d4363632f77577133484e417073737a315748645844446f4831726465444f6678575733616a666d5a7a5a783067494e666f566d45424c69757275397443344e66313546633761376f57797a644c2b383969366e6d527541615367355a71644d7163705a715070385059724e2f62684969546457537074786863365a494e746e55417257494856696a623032325964695579632b3261446a6635484b5574746f4831533731733945326c7978743477754e714f6f696d447176314b7a356873734253344f53322b6f37324778737a757a49317352415a6f506e4577306a3270644a427169584a4b4658726b6746485776616c347974795038414b736f50747a544352695851626f626935743545466d4f6136466a314f4d674163517557423567664836566d6e43554430356f505857742f616a52792f4a62493737617948566368482b5972784d62736d57717a41796a57766367395075505562634f6d42315350444265583954336b3778306b30705469744930323474394f4a663841426365354d536b5a635541414b6c63464469677a494363564b4563304d6b4d4544397455414d304d616f7844424241516f2f425134756a71666b6730656e33685a33454a354353373839744731767263327a4a343831356967376c376663774132746a6344674f726c49635546354978346f77753234654d644f4b79436457484433707863456b47364f353278776c45386e585033387a63654d4d455a573441367449645a66756265336b5a546b584868694b6f4f33365459466d3232464b4c547664744863326a43574f52586c39762f6b42724144713766624664452b76796a4a7037655a464f714e667762346f477465712f624e62336a786b4b526e455549357252623958326770723153503841435866334a5a336257356a356b4b6a4f4e7950484a4e5a6a6268574d514f77494c376370332b715930782b617638786f305365593653557745484939534a75622f6152486842315032794237636c582f414a4a4d577263682f7742342f434b364d62506d6276586e454e712f4a636a2f41432f704e6d50415350765a426a2f786d596875433478693374376c3676663370376261334a5771534142694f44342f6976432b6c786c637561594376366e777a58746432504e3239316e637730756738544c61334c67312b4a33375675324e753574375a763234764f4a6a7070576e64676b747a4d426f356d493575757659486b57784749426e496a6d61356f4f703672644232706d2f5650524c54384678435865413430354c746232304962516936415a516938666d75474a7845524d52455a486d364348706a4b55736871397938314a706c796172304f374c517878695635385138525156305262696f4f5367726a676746585265714c475341366146417546536d596f754d5662733970506558685a747335773159494b474a2f426531394c326e324f33454a556e4c716c2b4335323039442b307652755870776c707149784c3179344c74534a4b434f6e504655366e77344b334446426939526b507470617a68682b39654d4a6554723166726c34323975495057574b387859746d374a683335494258765736334c654d4e454433576e2f4256324e6b5a5231334a655844353967782f42575233517448544337646a4676453746304861394e3364364230334973542b714c5348762f4264694638334b6b696d6543386550556477356c43345a78475568714c665034717a2f774445473448686a442f6167395475623837636156584875577439754f727a504c42796c494438567a7a3672753979664c695242385a436e785646793241656f47354c4770706832494f7a62394b33304a4452756f502b6e7a43563172637433426f62754c2f787872373135437a754e75502b5862416a2b4755682b4b73472b6a74354837653565684134523166562b5344306e71316b334c52755146596a71487479586a7238574743363976384179486532756a63784679483859307959382f33726c62766377756e2b6b4a526a776c4a323730472f627a2b3539507532443472545849396d666346786a31594c5274747a4c6253316a4d53693349686c514167416f464b4b5a31536f48457a47514d636c37614872473033566c3553454a6b65475749504a654872677068544242364f7a4c7072566e59705a77696336386c67324f3845592b584f76426242666f364276376a63323943662f4145726248315862585976656b592f365864553272466d35572f462f35564a375859322b72522f756c5642625064374b6546377135776c2b537573372f627844433843422f43523853467a32394f6c346f4d5035704a3462445a3335616f4f496e394d767a5164482b35574e57694a6379796569726e62414c59507757632b6c32624574646b794a47556c6f316a3673655342336a626a714f412b484e633731336657726c694e697a4c564c56716b657a4433757150574e384738693369574d6a797943345746554561724973314645414548543943752b5476724a46586c70377064503472467572506b33726c6e3945705239785a4333493235526e47686a56622f38676742764a6d50686e706d503955512f7864427a6578646630717a354f37675031776b666645726b4676637539744953694e726648435566695167394261737546566474334d6952324c52616c526c6f4a6941373064427859324c6b693069566f32316a71692f566d4835493737647773306a3469576a7a64624e6a5a75434f755936766b677576566f5777584833657a6a4b656f427067355a727258574654346c54432f62754851656d59346f4d4f3073536939413538524f4b36486b52704b544f7267305271344934487451556d32414359355a727a482b527450637747576b4265707554497778586d39376147356e4f372b694c64364365713747317374744356746934302b4878506d764f7376532f35444d2f61376142656f4a2b533879357751535172524b457859424941554241646454612b68377664445843476d4c4f4a536f732f7075304f37767774354f3876355255723374736876346643334a4235502f384143322f6a68474a374a6a385668335070573732372b62616b414d537a7839346f766f517955457a46692f376b487a6662334e45313244494161754b372b39394932323765596a356433396361422b59586d37384a574c687333664647694452626754515a3846756a59735167595268724f4a6f2f79584e3834734e4b7a5866754c7030516e704849735065454733632b6a334e526c434267487067747579394c7451416c4d617339533431714739662b6e64642f346a2f38533277487155433062774c436d6634494f72763751756b546854535856646f7a6a2b53786d377534754e784d534d7347702b4157775437616f484d7a6b755a3633666e59745734514c617a4d79624d594c64646d4d63467850583775716471336e43466552516367422b396578684a3949474162334c787a3064646a61622b4c41537951656f73584f6c75437331506936352b327564495048347262616b5a42427a765850544937734739612f77435944712f694835727a7632336d576f6949615131536c334c33554a484842635066782b33334e7963497430466d7a4a784b44507362663346694c6d6f476c583276536a55774c503841717173337063744e7574433637554c6d6f4f633047475870747a36726e7577532f5a6555784a727a7a6462743175346257477564587957625a3637397637715a637a6e535041414f45486f4952306c736d6f714c34742f5777356f626263435452635965324b73497454424d6a47517a7167786e627864346c58516e394e57586e54754c75304f71442b5677344c716254665175783143704344714273316a33566f336f6d474c685879754f45745a59596f4d48714f3047366942415064476e5366774b76336335572f54376b376a363432395076577530435430302b6135582b5437714e6e624462673964776779374258356f5045654c424e6e696f796d464367316247477135453473765932707641506e2b4338783650624537684c2b4834723056756b514d6b48556a4c32354b583749765259466a2b724e5a6f7972314f72504e59553969673574335a62695230794e75556578696d3233706f4144437078576a63626f536e70786c7758527357347868717a51635065577441595a68632b333670593233544f31496b6671357275376f613731634150784c726c376a61626753635246793232425a2f6967706e7574727647386b6558656465657633444f5a6b6331333437434e6e2b75527049656938374a33515345744567526b766652334c37587a52684b495059654338425572743766666965796859486a6a4c755a423039714a6554707941784b303272396b4273774f437a57524f344e4d4848504a697572437749514563575153334f457345306f5a6f2b5742574e4658474a69644f53447a762b55512f7157356359727a37384636542f4b4a61685a316343764f41444e426f3235755436595349694d65584e64586137637a65496c4b5563484b30656b3747316374526d6338522b61374d347874786149614977346f48394e2f344f796e633675334f336a63424d3668562b6b39566e5357784e46714d546369596a7377515a424e756d4e5077576d4d7753355845336c6e6362653571456e6a6a704b533136723164596158774b4474794762725065366943717257364677416b4b795677474a354950446271497433707878366971416663745071456e767a49576235494e6e7073774e7848566756334a7663335842687139793831626b596c774d4636446158764e3347762b4835494c7273474c565035716b42386c30397a61457073426a3831795448524f515073654b44534c586d525969713839754463745843445167393637396c33352f6b6c76574c6438364c76544c4b574b446b574e2f7574754e4e71576b6671483534704e7a764e7a656a7076546c49633131342b6e5752346276562f49796548704e753563616333674d754c38454758304861335a335264464c65665038416146337a6243756a61743277495144526a6b6b755244366663677262515762386b59334a576a6b4f35416b6c5466577a473335672f7742515162345842666765534d4a6671795744307136385a7831594631706c307a6f61494c4a483855776c49476972314f4f623470366436426e6648464167794c71593139366673514961653261684e4b4a69476867674347646b42456570416e71366b4442676932704247624e43524d38564e54565563752f745241434d314d714a744573554343484c49466e50542b4b4a4c4d456b7566354b654446415a56635a4a364d34344a4e574a556b542b354267395a416c65734131416a4b524277795a57375932356445534d4370366b5036385779687037395379786848515859795161726c6f5735453279482f6757726237714f3568706966366e31527a584476626f324964744f395a746962397a647775576738786a77624d6c423655695567644654777743773359334c5a456f686a4846644b4673334a536a476a63614b58724e7a52574e6556666d67356b3770304735627a4567573530586d7439743457524152485576556d4d6266534333384a44565850332b7866544d3548345551613756764b584149333745443147496b5034736b385a3538666b70473463446c56427872386468646d4769522f4b4b48337077307044533741594c65624d5a686a5256787469324e51376b476e30336278725069645137316f395332336d51303842713730646e54444a6441696c585165484f30744757695a494f58354c766250303678637352745472703161613865617476324c6477345642566c6d49746969445859326f674e4c6b6a4a7936782b72526662586f7978307575703568496242637a31553672463254665379447a6638416a75306b647a43394c777865587a2f4665756d444c71574c306a62666237653343654c56377953744e2b2b4c4c75677a37766332396e624e7962635972777436373539795679663146313066574e334f374c544976797941354c6c555a7767363370477873587a356c2b595966526d56367533683034566f4635622f4142375a486362677a6b4235635231507a5871744f6a444a413165354b5978373077476f734549786c7762386b476664376762573262732f702b6e69764b7833647a6537754d7031366777795a503678766a7572756e36493949376c523659543977442f4144664a4230726b764b6e30725674392f626b4e4a7a56462b316d7558636a4b505667794430304c397541634e324b367875725a38533866356b342f556d68755a786f454874664e6a6b77564d3977423141726737652f647552704b6e316356736a417a6f63536731796e726e6734563278496a633035695077564e714830746d467a4e78766a732f5554496541644d75776f5052622b665349514e5862383158634c574332644654636c43656d634b782b6c4c764c35326c683244317871673576713371476a2f414d6578346a346c543656747448586e6e2b533532784276337463716d76785866327364494b4353364b78634e797853514c53726d46717536704e782f42595a577848476f4874336f4b64314e772f37466b32766c794d2f4f46476f724e316c71775a4a36595264756557632f696736506f58674d427858664e6f58427a43343232736978636b525264537a6665726a4642526532476f346e2f5371596248793550496d5842644d546a333873315266334562594a3449466a2f544642697465336a396373567a4c4630376b6d6264504e644f7863454b59386632494c37396b61584b35392f5a69517758555039534c7871755274393535684d53474c6e6e55494c724732306c7a6775674c65696d575353794842563043777256416c2b3535624850386c784e705a4562393976487131506e574f433747354f75764438567a49784e6e63537543735a51722f4d43676630572f4f39596b4a34516e494469793663674f315a7472614669323263695a79375a4c51547164415978343571752f5a68666a4b7a4f6f6b47556341674933726f737838795a6f4b6f50435862633972636c5a6c2f3079783745396e6367477274386b3371553437692f6475444f57584a632b594d5367394e743738444770577333344d6130586a49335a6755566b66554c6b53775165766a757744686774634c3043486f4634503779343954523170742b6f584347346e737851656f76627648526b73453931726e6f686a583969775737747966344c66364e592f77444a6a722f6a495164375a625437653170786c6a4c7652447a6d5a44755a57333574417979412b61534467436a494c4946694477586866386a4a2b2f75762f442f3756376d636e784646354c2f4b72426a6474332f31786276483730486e546a564b6347434b42716749424b696e306f78695a466b4170544a536931324e716238326a6750715853742b6b323759486d53636f4f49784e576f686f4a77585a336b4c566b4d77315a644b3538626c79636d74683047614e54706b7539742f5276756469623973764946394b77322f54626c365467615176562b6a37576531456f457642773345555a4234615554416b4768474b47533935367236465a3334317736626e48493971384c656962457a626c6b6737582b4d782f72796c6b492f4e656c3873454e6d764f2f34744b4d4c30334f4d4b446d7654565a41426159367548306f7936596a556d6c636244465679367a7943437365355a665666554937433049697479574336456a4546754b384e3674756a75747a4f34634859636745475337636c646b5a7938522f465642796d4561495a754d6b4856395032486d614c73773853394f4c6674586376376134776a5a594d4f786b50544c582f6957794d644d762f6374506e3667424d56346f4f52636c366e74363653592b395a4e7a43377549655a65697a466e586f6f5842562f7a2f4142584733313633754c6b62466d49446e716b67466a5a333757336a667458573150305a4e334c4843643453387963546350306e4842653173374543774c4c3141433475306843784f566937346f6c33514a7450574e784936664b772f77424c4c757a674e7a623033686a375a4c4e61466d4745513632526b384e516f34375548683939735a57784b5a4e41634f5753356e5976626574776a6132453553786d5967552b487a58696d497155456f6769344b586b67626d67446b6963566f76626351745175444e77677a4131554164516c487351547358582f774166414734467956424156584864714c73656d7930575a6176716d492b7851656a6c7478634874697364373075637a517346664864677a4846612f4d596462494f504c306a395a41576d4f326a6246466f765859314d6c6b6c6668616943546a6a707951644378624557316c626d4573616865526e367231596c7172544431383267436130384b4471626e616764514766637172636f53466142586250316e6237777450706c6c77584374376c695953384c6c67673739734138794772785732314238665a6c77724e2b4e77305862326b33314130516273674543484f4b7131636171334446427a7a763452334d374e326e41636b50537245624537305965457a634c462f6b646a57624a6846376b6959766d7932625335714d5938585164423078415a3157576e6869715933713655462f6c6f2b56324a62647779696e4d71736762514b48466b44643044717843447431465a64527646384e4a5157584c6d694f6f344f733130766230444d64796d36496c70747651486a696841617a474a4f425157626d48394b3343474375334d5838754f4e506b717477786d496a414e334a70334f6f45595a4944474c794264774b6f5375796e4d396d436c42696a43476e7849486a4c54486d72593869715a794c746b466462414343794a4d55786943474f42516952676d7851664e665850542f414c486447413845757550596375374263313137622f4d4e7272735739786e43576e756c2b3565494b416d57705130553073686d676d614c5a4b437543494449464e45636e556b672f42415755356f4f464b49433644354641493669676d4b4b4446544a424d6b634b6f454b454949705876524f444b565142463255415a4168385544554f434743444e696f413643594944676d4247534251514b476f716f5779555154437149346f49765242487a5250444651464b5437304477665654697534495046342f5669754143324b362b306c4b554d7665674a42444656334967697453744554704663316e75476a6330474c7834705a6b7252706f77564d38634b49466e317172765478426d344753515571454565694655786f6753676c536f42785244464d494e676757696e59726f575878547832704c6b5a494d7870524662447335414f324e6561536467366561444f4b342b7a714871484e614932693243726e625a2f6235494b616d6967664657614b736f494669675232504a583270614f714f4b71467454773556516162386a654f72354c50494741306f776d334a473563316e562f706f6730374f3331507758573346777a4168476b514b7478397356786472754261634845394b31323774577750486b6757367a70644969613164575336706141543830736867545269676c2b35706743324b35356e7250626b724e314f4a6c307670795649723146426f7457395a705664502b322f304f2f69736c694c4d494d43756e3573764b664a2b434430674947483755623973544446565249614d526731566f483676326f4d4f316a4b4635736b322b6a4751726c376c726a467061754743723355444b4230384547546259386c725a73467a704532704f56766958694a63636b45625567386f6c43546b70733279514152346f796d33376c4b343844676b693879496e42424c4f336c646e726c3456726e4551706d6b6e66685a4665346356526145376e564f6a35494e746f52674e524378626952756c333665437675532f7069504655786854534178514862326d724574386c6275354d49676f32344d5747535464795931516336503953343068302f4a644334484839504271725062736b463470724e337a4c3268364372633041336c714f67556669764c337645596869334e6579764145474246446976477a68356477786c78374b49424579656837756133574d412b495765314950707a566b726b62497057585a696732763841705a5758492b634271686a536b50784335486d627946594164342f4e4c626c767964634a5650412f6767374566544c654f6b6a386c707437617a2b6a566b7554613952395274556b4849797a567039597679483961334c483655476a315861774e754e7945424853576b777934724c747a6f637551367368366b4e33475674744c305452746a5333784b432b456a49564b50546e55346f46784c3277534d3161477676515732336e49434f433137537a4533645a4868776574654b7837547a484534786933354c713753783067356e714b4463434d63304a46737669704c7143706e4c544642444d52716a473444674742574b55745532563469572b5344554d4d56425055506b73346d54584245542b6c42664a754e55736a77564f7656796234706758514e4b6230514a594169696744463061393253415178426b744a4456576545534756327255474b4277636f714f6c6b384d475a4b39454479637054414f70477035704e65716871676269516c7579417161706462462f65714e784e6e3159653942665a506336706d3070616a674b447656704a74694956426359594947696464416a616b78534f3943724959675949506e6e714477334e77512f557568364e634d72636f356775755676352b5a6675455a6c6150534c34743374457143595a423641467758566b4c756b735658486946534270636e714b44645072464343755675746e666e2f787477505533424e392f47507a543266554e75344d6d374547537836586531314a58516a36535a7865354936755252683635744c66533069503142582f33375a774467536b654251613757796a5a6751387048695373317532597a4d4d4b706638413853625759367263682b436f323371456433654d49677363424a423137633951777756375537546a324b7542692f454b2f564848765163542f495a7474486a6e4c542b4b38595a6d586971765a2b6f52382b4d754172332f414c6c356263626252314442426b374d55483449304b444d6749354b61577851716d4d66714b4332314d34593571346d4c616771625156686a6b55466b4c596c55565779476d46747a69566e7444534b5970726b794f6e50394b436e6654426f43342b537865455558567662646a706e3473644c594c6e58375a6a4a42554f616751447855424343454f6f5545337a514b696f7a34493867674561305264416f4e714e454453375636725a6570574c327a743765523033495541624776347279756f6850617547334d5447495165746c4853644a7864474570527747436b7a71362b784b65757441794455664470507336716c73624e77753365716231795671325a596e4a632b48726b375436593958456f4f7048307145684a774d635a4c6f624f486c67434c734f31635862627231433931776e4141567249426c7631656f77486d53763268796f673742694735724d4341574b34312f3172656e6f30526e2f46423130646a4f356373673341306b477079655154794178556c677a7147657569436a376d7a733561373078435050456a32344c795072767149332b34317738455270696e2f7948636562756a452f54546b754f534d554857394a74473430346d4c776b4358794339525a7533376471384c7869526f6b596d507543383336424739636e4b4733455449682b76426756362f623262397345376f774f76544552686742336f504a6c355448454350765a6476593242306d552b714868584c3238496d2f4f3066474a466f3876324264373032332f54655836714f674871426c47784b4e79657255654758354c69526a49594369394476374d7075435748302f79726e797350306f4f66667336345571324f5859754a6374474d7a52313669646a45594c6a6275774f7166755163615a4c344a52517035522b43523830417771464364495a526a6d6f2b6f7555423150697936666f63394f346355595362745a6373456775753136505931534a392f466b486438326b737a5244773143706d356d32587a566c6f503147726f4c5863754f395752464b356c5568796143716c7955644c6e326442795038696b5435636553344d51636c3250555344756f754e5168463950366972396a43337574636a434d64493652476d4b4369317478754d6e6a7758526873644d52474e68786b5a464a596e2f4147795268656a49326e654e3245655048322f5a30626e71327830644e366f41706f6c5434494f5464327337555a584c676a62416a496159426e79346f6634357459334a6d6430435552787171642f366a2f63726b62466b45514a715778357276656d326862476a685444503971446a626d4d7653392b42502f686d64582b6e396936452f54626c75345a3244426a585463714b726f6573374b4f2b736153576e43735a63467a4c667165387444526532336d475031514271334f71446f32787542305438736679522f4e5a4c2b7874626a6432624d59683633626f41707039364d66554e3566366247314d442b713437446e674631646a73507459796e492b5a6475654f523463427943437139736f626a2f6c416b4d6e355a4c786e716e7076323235467133555841444564713933646d49344c672b70577a393162766b616f5737654f514c6c7539427937582b4e6275556847383175476374555333634374782f784f33674e78586e622f61746e71396a5275647463746d75725156326953354f4b4479647a2f457234706275327a326b6a38467a4e7a364a76647457646f7350716a554e786f7664796d394655627567644e45487a6a6b6355447758727655785a75776c4b3745457453516f58797778586c4a47744d45416a4a716a4661374736494f6b344c497974743238426d67372b3133454a55456c712b316a63506a50594e4a703755586c3955374a6359725439396467476a52423641656d576a6e4f6d48546a327136335946714969445350366c353650724e3571796b6539582f33325a42425164572f7549776a3173755663334e792f5052617a57555375626d5771666375313662733436745573426d6559516559307975794d6c582b43322b6e57343362686849394c485571647a745a574c6867634d524a42517a3143415a5442466d5154386c31665644356c6a62582f414e5672792b2b32572f46637573734758544a312b6d522f56617645442b5763582b594b446c743856366230372b70737252474d4a7a6a33554a586d5455734d46306654643363747a685942364a54692f76487a7a51656b74332f4c36487037316264334f6d4f6f56645a4a534a75475043522f59684b5178434442356c325638587a4858707142324a78363166456a356d6f5339714c703761325a566c526b77326b4c6a74706b632b505a56426e7465757a70356c7155687839676b6e75445063472f434d6f784969427143366476613654476a416333557574633856572b4343797875684d4d53744a6d7a2f4263327a2f5377384a546d5468793641334c6d6f48546a7835724e36665938794d69333134646d50625658546e70684d6e36512f4842656638415476587a73375a7479674a314a686b7a2f6767762f77416e765238364731482f41456f483379717650567a56753476793346795636654d79352f4a556a4c6767684971704c447352484c424b454870663864322b6d334f2b52553945657a4e656b485468677566734e76384162326f5773476a462f77435931507a58526753656d47493549447a5450773571692f754c4f33367239794d434f5966335a726c376a2f4a4e70614a386f5475662b6b6533636737577033584639637343635050486a746870646e3746677638412b56584a4d4c5671412f38417150492f677564765057747a7649655849694d4d78414d3643797a49543659352b35623562615533455067572b4b383961757967614c7032505674416154344d45476e2b31796b2f5870504d72587450544a786a34784c6d4467467a7a36734c6e344c62742f574957343954664a2f795164473574756c735373757679366d6761717a337657684d4854686c562f6d46686e764a586941482f4c755164413769457831594370344d7650627a634863583558503146617437666b52354c746e4963317a6f6f446d6d414b72713742574f526767313754314b35595a36786642656932767165317564554c676763347970587477586b7668324a7077417851652f6849534771476d5134786b36796275774c77313653667050597649626263334e704c7a4c456a452b324b395a3662366d4e37436a656150464839585967356339763970495a754e5365473656322b754463474d644d6f36645436677559427050346f4c373835335a4e6a6e334c4e634e38644d4a394842576d2f35646330592b6f326266544b4f72383047657a353044512f6b7570736654492b4f6655666b71375871666d55685948764a2f4264506166647a47754d6f32332b6768304276625333626761437678585068743765767a4c525a386f7252757037753546725a46776e366d306950765078565870647156713252634938586167366d3366417252344d636356525979664657334a754f78426e75793033514858697433754c6d367553753353386a2b4842656c3958756e622f31682f7742534f6763526a2b61386e4f4f6b6f464646464558593051646a3051744f584f69376b71514c356669764c624339354e30617346365953452b6e324b444a63334e7a5538614d684339645053354c31366a54344b796341634d666d735a33783230394537626a4546304675783331765a337053334d5a536f306332393637566e2f49647066617069582b75697777395732562b32302b6e6944626365384c4e63394a3232356556695750446e79785162622b38747975655a626d4b745469747775524d58676633727a63396d6474442b495671726f3737794959303745463371753646717759416e722b4848344c79793162766453334d334f4830685a7553417437315a5a6d30775657446b6d746c3556374548746468612f6f784d68346c766a4179414957485a2f316241414c4d5a523471372b336d5a2f355a442b556f4e516a4a717062674d584c4c47665452716358726e666771707a332b3169344976572f63526e37596f4f4c2f6b6c3079334167504445555843425853395a766e636271552f44534e446c52633346423672304f2f77442b4f4944474a576d2f644d3656586c4e72755a324a616f596c644b4f397a2f616730336655376d7a6e706a3466314a54366a66336b744e75354d4134782f616c753733626d4146327376306a38306d336e66764674746230443954596436447637665947467343526b516139527870384677393947454c756b65493846762f74743052315839784b6f384d666238466b48705551646343534d6e516164744c5142785732334c70726b73506b364279533775384c4669556869596d5076516563334e77584c3070385356532b43597063454269346f7572365a502b6f4a5a56487433726c69726e68376c7239506e707563577839755344317335754e6664324c6c376b56646c645a334671354d445833416f626b6169364450422f70776f6e76572f4d44527856424945744f61307775674d2b507469677848623338596a6b757a73624e78684b6245717358346773634672326d3474687659494e676a516b64367a58686e77566b727252637247535a64326143327a62633156312f544f30597a4e4755746867324b656467546a584c6a526b48502f7741664c7a76524e5730727158714d79772b6d41576a4d527a6d66626d7431365962562b784147344b5735495734334c766769572f564a6162577862786d764a416b5152327147474f514b45426c6b543845597437304259756747506951714f31502f414442416c576f6871794a6f6a7165755254414e326f4b797a74374658786131626c4e6e4d515a434b533346716c45544f6b676e496f4f4673763841493739797337657367355a426458622b7132393130796a7066427a566550325637375366585161717376516a656256686469597342515a2f4642324e4e753648743542555849796a3046634c30694539784d5361514f72716e6b6541586f4c33584f514b436c333671565432326c507353356642474a306a5545464d672f697137716d64674e30557067747845626b65456b67323838645557515a4c4f78426c356c7a775278356b664a612f7547476d41416963644b573449416151656b664e5641596a4d6f4f6c366550365a6e6b667757734c4c73576a596933503572534b6f4362634a654d41727a32356c316d4248682f50386c36454349504e5a6276702b333342317a674e5836733048413161614b324d336f50334c4a4f62796c47546a4564344c4b44714c484642706e4d5a7167544e2b656a4a4b4c666e4155595a704c38627349505a6f654b447257357874686e7a5853414a384e51793846487a7a4a7961397137657a6e7672656e51524b48365a5a643644566375447a6a444e734666626a56735652657453765438795461786772375130596f4e7365437a3337635a394d7539547a5778513879686d4546736f535a6f6e3979357537746c7a474653756866334d72646935635a7052446a673638314431494f3835344f777748356f4f4876484e32516b716159354c6436746674376e63537557673054703937565749524d6a6f67484a7951657939427365547378504533435a487346463034414e794b7762666432646e744c586d347868555a2b356362642b7633623778746630376634495051582f554e74746a2f566c555a5a2f42636e652f354a41323557397645695567786b63757865646c63315366456e4d386c554d507951476275367532552f4c76526c7a5763454a675441366869673952663634737a753378584f76576e784376322b2b747a704754534c4168473944533451632b65314c4d572f4a5577323977594c524d6b536458575a2b5955443761775247673756317255473658773472505a4455625336364e754148656757336f746b334a65474e5a4c786d347648635870585a59794b37487265397239744444366c777761754d4f434430506f6d366a6374797353385172462f6c5644312b2b5a4e44492f547758414a306f787545477144702b6e515a6877782f42646a586b7556744e7944306c684c42644b523144584846425a723652785663616e6d4573795337594c4e646b306e6c6755474c6356716530386c6868646c59754355614d56723345395053466d736265573675693348452f42423636634e5542633467535336324c453466537135536e4f454c466d4a6d4941524d6a52506f343845426a64314a626c6e7a692b584a4c47494855324348335174384931346f4b647a352b31746d46675935346b64797832547638515a4d3458572b396a43704d474f50554852683672596f5835754546657a3350714e6d58574e634f4648522b317574715a704773677568742f5539724b686d41582b616264334951746d62396e4e41327a6e4c5178344c574c6a425a647530674a444e61684849555149513431465a52455071576d346445586c2b3963726158376c33784d554856457a686b7249794248465a34366761704c6d344d664456304631795562636455782b31636264333558584d764342714556736e3159354c4e6432336d44544836694c58762f596734566b59367379536c755749366451416f72376569354b3431524762523745626b423455484e6e445033716b687063426d756f595a484469715a626354714547474e736b733146306476744233703757334a50687837313062567351714546636262616155433648706e2f3355503562697a6b6642534a7543546773526767372b34475846455379344c6e375831574c366233647a357270776c62754368514b52527775542f6b316a7a4e6b342f77436e4f4d75374438563269496a325a5633644734747a7454776b4e4a373048792f73585268746f69774a61656f76565a6275334e6936624d36474a58705a57497774784571744552516563477975544c52442f48354b3658704f3446644c4c70533333323430327837647171756571376935345943507851553249797345416d702b5879585768475677356b7375626231336a3174712f4e6568394f744567677538523730484333316d4d4c68317453717174656f57647253467639713776714f306a4d307879584b2f74317753384d542b53445674765672647a364346324c46384543556150373169323171656b466f7835525775454d3830472f7773526a77586a2f38414b4e6f49583433514b54446436396462426a324846596655746e48655274776e684754397637304758623757317359527377447a6c6a50682b5332676b4138666736533763453374554536534847696163744647637951423566557168636e5856334a35533875702b4b596b5477775155626d374b33616e646f4e4d5438614c7731796b7356375031437530756636662f6346342b374772494b6c4752484e4474516570394b76366474452f704c667557307a73584b794644375a4c692b6b794537456f5a67712b555367472b76326f677774524656587337316e613964305331766731466b42454c3339616a487162487358572f7575326e3054447835785164665a2b7032726b64524f65654b786573323458644f3468683958747a77576262376a61435852537641305859322b3573334c5a387375306341472f5967346d7a6e62384c73546879586f344346755059463562647774773344626173632b334e65687461694867374e32494d5038416c452f2f41424951476378384156347348504e65702f7979662f44624c66564c6e6b764c763730413756436f654b686b634545573853467a626166306c5949347262735a78467a524d39456752373830474c6b45516e467079577953436a6f415631747265486b77746e47553958344f755356727479616472566b332f755164323745324c724e373159626b6f6a2b4648656b547547624d43566a6e646b41785157627936434e4957472f7437737730632b356162635263754e4b672b4c725263753234437066383048462b786e454f634539765a61685474576e6362334b4b7a44634845596f4f7274505462546a457a4166336346626532464846446c6c55724262337479505662474876573266726c715136685073497a515a4e6372552b766a6b765237556b694d6e64387543387863335133556d41596e327a58706467544344537a507751644555504a576951696b376355626b6e377678514a75704161587871797a624f422b347554794141697442747875734371347662754e78783967677346436c6d47787a56684a48566b4d554a4d654645437742384a5677456971594f6537755575584e45522b724a416d3775366949414b7a524b45584f617a6261426c3154396972773537454747637a4b367a65456645725a7459417a66677373496170534d576431756a447934475343714a655a50456f7a6358426c324b7533346a6d366c306a7a6363616f48755330304f4b57643652445a795657356d51644d65507a56567142504d4444324b4470326870694534504556564f71514c4b364f5a772f46425a7a43734743726a2f36517242795163332f4959612f5437335944377042664e653166547657782f774344656366515638794a64424e544a53516e537367594176524c677079527a6f676a5a71494242324b41696c564d456345426a326f49546b6f6f6954524161494371474155776f67686448424156523075676e6170324b4f6f45455a314b43714470714d7942614b53787067697a71654642427a51597144696a7a51527a67687955636f344943514d5572745646426b42474344616b584c6f4949467532682b667a57413846304e6b2b6d6d434454717254464a4b3237315a5334524b534d326a77515a6272774e53737848565662726e56565935746951454232395a59734574794f687768416d4d675172723061416a4869677a6d693379325457524d2f74564f77732b66666843583153433968754e7245524565487551654a386d6274564e354d375a714b4c3039797a4342306b4f5062465355595436486848322f464235757a63494c5377585373583441664e546357413767725047504845494f67776e413470663659464b6855576a4b546b59476957594d413075396b413347347432786f67413677547679756667746372635a74716f726f51694d497677516373516e7757375a3753527133546d3636746a626c78434d59766e715852322b79745844716e4b512f686169446e326654705834536a4236446851466362653747357469544f4a2b612b6757374e754d57674b64696c2f617876514d574465394238773474676777572f3154616d7a75353230746a59334c386456754a50486767786974485853323734532b4753335139496c61736d3651383648514d682b5063734e6f78474f4a3449486d537a3139366b70505271736c624679704e6a423830474334356c7955672b646553726b5662415a35664e4274744f5a4c71666233504b304d583973317a39726163754d384632664d4461587077376b4854327065445357794f4663466a3234634f2f354c634a466d7a514d496953724d5151324373695841624a4d327278416f4f5a66734d4e5846437848724142783731747577476d69786d7a35633479475344544f7865427048554d2b705a72747a512b71456f396b4a4566414664754a445078524a5165654e324d714458542b43512f424863626b375a343278316e77386e585575587058434c634b6a366a2b43714e694d4a616d6557543151637661624f63352b627554716d634f41585541307349706a455247724c386c495238776a4a6b414e76563147694f6b5236686a7a5668696c6c49447364417351356334674c4e7565715854697449352f7657612f4976302f4241542f41453445342f6771396c347341485362715a3067422b37466164734462687850795158584a61614873586c76584e724b456a6474673666714b37392b62796364355232316f58496d46317a47534478653376786f4a314c726262754335494534785a4a36743664396a75644553385a6455566c323137524950554531516469352f5534724c4c6133744c774a6458432b4a733157397633725a6275526b644d716669676f68446543585564587a43364675314b5676545033725459455a30592b31553034514554566b484d75375733616e72685835756f5a36716b42766b724e314f4563635061717769364a5331444242716a5055445656584c6e5647324d54682b6170457741334e6c7539457347562b64326250416152326c4230626b445a736142694673736778697970334d6567753631436b4278514c717165785a726f4a6b74576f44335657435561686b4441645744737274656f73456f695145354f5842416e6952656f644b4f327173747951435272524b57787a566a4d645357654b413632716a713143686171724959746969434d506169437a532b4e657857796b4c65437047693144454b72587272484230476e7a4f436257516c675131575131617148424164564853536643696b705562414c4675726a494c726c79724d7174586d5447626e34425a784a79477a562b304f7535492f70446539427275566f71346d7659704d766a782b61574575507651522f6371376b78617479756d6b59785065726a47704a585038415537642f63626679747445796c63787177412b465548684a6e56497037637445784f4f49597273772f77415833704771666c32782f484c3867555a66347a6674523179753267477831667351616247356a64486d5a4b77533148556346683275326c616a4b3343344a7431644963653871473531616b472b646d7a4f32597a6a71664371793364725973735261642f3469723756364d67744d4c555a6d74522b4b446e37653573794f75333746645062337472474a6861455039746669695054624e7968784f51577662656c37654856706638415967595734335070456166534654396c48574c6a422b5059756e4341743046427a5761374c534e534373584e4c4243356547437a53334a4e494b7931417950626d6778334c757347324d317937316e79346d55734f43367479314b3363654e44483472467572426b4837657842357963686b67553979314b42714336535456346f425149757947434a785161396c623878786975694e70717131517556744c747531505663447859754251735636625a32646a7568716a3570694d704870377a46427a7749776b42612f715863414d573572713250533462434d7437766571364b786a6b436678585774575932756d314346766e6e2b61353372556a75504b7368322f354c683745484d68616e7548766e78535077584e33316f366a4a73766c384636457830782f42637264796646427753454e4b4a6642414d67683979434e5855515757543564794d754264646e622b6b44656261653567347566534d7578634d6c656a3250726c7578596a743457695a674d4f5a50636738365148726967744f2f7379735835776d4e4a64394c757a31795756786b6743497232493471636b48704e6e6546327847594963644d75537668495336666233727a757a3358323735786c5351585947346a70654765534471776236517357353255544a346a4c426c667435786d414156736a48565361446977746558346d4656314e7662467957565067746732384a453667443272565a327475323545514834636b4377734e6b4e536279786170784e5672476c6952677364325242636f4b39516a314655473935635a585a3045415a4a62312f5543494279684b3147554775396e4a2f336f504558376876334a584a596b716b4c6f2b6f2b6c58746e4d366f6e526c4c454c416736666f65342b33337471524e4364502b366939727652627379462b376a476b512f344c353359674457713946624e32346456325275456479436e584d626a7a7750726b2f466c336f696e51644c6548685663693774784961674b2b33785854325265426a7a51586464773670316e39587477566e6c74576c452f79544d3259356355476163426a79584c332b3331516b314b48345658635a6933465974344f686f39556954336842346134534a4544424c4d4d553979544568566f4a556a677067574b4c593855756c41596775777858705054375a7357477a6c6e79433432783270767a464d31365863526a6241686c466b4761643078566c7562414e6c337250635970376479766452427268496d7159794c636c6e6a63592f5032356f473464516957596c42794e37643833656b63656a344c30467662697864387355683563637356342b37633879354b58457233412f7232376430596d4d652b69416630323045442b495a4833705a787357346b7874572b58514d666373312b656f36734b72464c3148526336384f4753412b626232737a6475774575556161666372747636376174796f2b6e394c5972464f3765335442683867684459584a69686a7a7167394a5a395a3264337044395830746e77584c68666e7462763143314d30344135684e74397364715770493579397633726665334e6d3944546342636a67337535494e3975666d4d512b6e484e4f5a6b39697737516d50525033397132414e52426e76797857627949334c64794a2b735534506b7457356a4c536c3231413878544a41766c666347784f5a62793865304c524b37556e33647955484f57507756567935705153637a6b73323575703546337069755a7674794c5565424f464f48356f4f5a36747567523555613856787974636472754e30664d6843636e7a596c6259656a6d324e57366e473231576c4b7675446b494f5a5a74363541414b2f617738792b4952784a576f5734783850372b6179574a6931666a4d4f774c6f4e562b79307172484c62737539756f61346955634350632f61754e636e4b32444241734e704b654b3057396e484d7162652b493049593866624262624c4556715544574c4163443667744f2f7742794e72596b496e476c4d58536563315437666b755676622b75656871464175783664522b6f696e666d74562b33356c6a546a494634452f464a62686f68514f6e456a4b49454a5269667031466b48486e616c62784256645758737062455274656241692f427450544632584b75624778754330434c556e376e37442b434468787871756e3661546432753673444f4562762f77436a6b3539344b6f335070642f6246355265475578554b33304f635937754d5a2b4735717453484b59623855484e42545175474245686b585575784d4a47422b6b73675548724266467a2b7044777a3676676c6d326c6d785849324f3736504b4e4f42344f75725a506d5231636539426b7562612f4e774c72512f696c6b682f5939304f714f6b2f367356757532706b61644e50775649394f335541397155787951477a366676724a65303043503473565966376a63413177697778714b717a62624b344a4133707950615672314e48527751437a724d61392f4a585366444656534d674744446b736535335174686b423953766164726446756c412b654a5a6553447652656d75782f384f394c436b572f334c7a495147525a4478497363555167583442506267383478346b4a4e4b75326c364e6d3943354d45776849534c5a675a495065333731765a32546676345a4e6e7741586b765550586478757952452b58622f52436e764b792b70657058505562707554704565474f5143784f63454461745654553830427955617446436367676d4656437a55554c46543549434131567176376252474a62474d5437316a717534434c7073525031575737775a4438454846306c327a56304c426b367376326d6d5864614c41306e75515677325249442b7757364d596243325a7972632b6e673455316d4d6d417032726c37336365625054436b5238546d55476564777a6b5a477050464b616c4d4d48434655453571436c5643555849515751636c4e6463717346687852467a36636b42456a417157357967664d74536151775a4a4767646b59795a4236757a366a4831446154312f77444e41504c757a57434d52496d516f4256637261586a5a7569353831314e3744375734616445326c435845494730556c7856523231756549442b356b3975596e514c5a6232774d71494d4d62384c50302f6975687372766e6e5341527878474b30773252746462426172473330666967736279783034705259417739793143493731524f5168696772456a484241584e5534777a574f3775774b7757725957745677536c787751654f395133567937754a6d3458496b77485973636935314b376467797633503535664e556b4f6769443673555350696f79436471374f7a3363626b414a4f386548426356696d6754436f785165767462665730785769586362574f6e53514a64767757543072315155747a4e575866617a7549364e5135354630486c785946715a6941434d346d717953684d7a2f7041672f42647a63656a336e4a74584742797a3937717131737032682f5579507437636b474b4537356952644c74372f657357376d664374572b334f6d56506775544b524a7167677256526b475a456a6967474b62557747534558465577363664794431336f557850623653514b6e784c664c63324c56626c77552f53645743382f7466536a63417130514f6f356b35674c75375861326476456e534d50464c46425037683530543545616a44573852387678564e723149536c6f757830793553782f426134626a7a762b4942754a77566536394f382b4f493143754645486d2f5837594e324e34554d346a466357496464763157786373323478754444776e49762b5334723936414b3231643047745171336442325164547934626b617643567273657158747462466b554172303475754e5a756d334e31313747306875674e4c422f6837304769787535334a435570475756563134447a4939564f537837583034576938693856306f5859514141726b677a585952685168655939553355626b68434f45632b4a58543953333472434759784338362f36766567522b4b627377516f757a365636426539514f715852614831386578427877786f463648304c3050376a2f77416a636769324d42687158713968364e746467503663486c2b75565a4b33664f4c6251346f4f5875425974644e6d33435038544f53755a64694a682f5a6c74767949634255565a6a6b67357334744a773334716733444679635675765736754d316b75526f30736b4664756246354662376379375a726e57324448357270626248494f454732456a49315674754f6d6a4a573034725262307751575269465265737776445465314e2f41575767796364744656726a41506b505a6b42322f706b4c5672567470796b4d644d6c304c573367776e4f70344b7a593766794c6466464c71506574456f5570696753644f784c636b304a46736c4730687a677174314d787438582b53444e5a6b2b46413657357562467078646d302f30386c47636152517469654b347671562f647a414d37576d4544716c4c69326144715774314c646a566236493563537961562b5671576958566d75527470334244545a3658475062777a576955623975514d2b726d395548566a6674335a474d63592b4c6b7244484d6c59665369445a6c6666384171546c4c553477354c59433943674d6159316633425633524b324841483730306e474743754c546a6f6e785163435a74577273376631654b665451502b78575332506d57784f4551594539557551344c567550524c6538756d365361384a42714c5a5a3270743249325030785a7a676776424542474d4b524379334472504a57334c67674e4f4a4f4b7a7a6e71464b49414b314b684f53426c564441386b456b5836614947714a72524b584251417931436d423731544d74453863506572417837456a457a6845596d592b4655486369504c684749344b4f364d6a315571794869365545484571783655564936354d45384a55397149504e622b31355735757846484975522f3159724e5854517273657632443549334d66464274584f4b38784b2b574567582f536731334e33355053716f656f4358696c31666771504b4f346c3131697431765a576263577a346f45382b314c78536372733262304e4d64424241465678786173475131524859757274646c5a6c463551446a34494d2b383955466e426c7473586f3337596e484d4b7664656b3262734e4c414f396333575459326674375a747a64772f752f6367364d717966466b39746a324b69446b61614a724f7263576949644d6853525158334a506275524c4e70492f4e654c39553032354151397939464f3366326c69364c38395547365a4d7871764b58547275505568425149475879576d77445a3667576b6c6a495138474b726c504e413979363776695654492b3546364a53577167616d6e6d6c5a7178554a64413449414b68484a51383043636767494e58772b43376b4c7571416c4b7450324c6867726f62573549525939694239542b4a5732356933346346524950564b4c685a6a6767364d7439356655426771626e7139306c346449574f5573736c6e75546167775156334a536b5354556c5156785339696a5a352f696762786c48535432717438315a475046424859754676322b396c62476e4938567a675165536b6156516567686646324f714e43716478636959734343755a5a7679744870566776756134356c417339557047417156365830333076376531727566386b76467948443831673947733254634e776c376d555a5258704e4c6b6e4e424c63414d61414c4675626569557630347265446d3141717238664d6855494f616237644c4e7a584f763751333539523666775771345a61734d456a494d78394e684871487539714b513950673350326f72357a6b37436754327130314d677532336f6c6d543638565a7566526f69332f41454a7352394a772f597465334a3756745a71596f4b4e6d5a434c593564363278754d644b7943304973493856594c677167723370364470705369355870556d74504a64616233625a746d722f4a5a726d3374375556426a414e6b36432b4e775168712b5050464c474f6d524137466b736456757a435641444f374d61543950683967724c657254435536485263767937546736427850564b5041796c49396b454c4d3246756645584c726354675067733074634c663841464731475066636f56664b32354e694c74624675302f464235376143634a6144512b4c35725553394d57576266334e507146335253756d6e495656304c6e785148527071736e687777576d63337a717338672f3879446674397a45354c5a41616a514c6b3759615a366950334c71786c6f476e4931514d7741494171736337725862597762726c334b36377549676456414d31797472755933742f4579637750395033305164713562783031645a4c6534753765582f7569506d743574796d446b7971753239513079775161375737316b4752376a374d74304a433551597267324e75387548494c56593345774b35596b305163762f4b5952473967514b6d49316331306f57347a44484446633731793165334734467a454e51384174657a756d5a4772466b4479326a55677378394e6e4d3952502b6c6432334f4d78334b586a47412f4a427942745937654a4543653964546152306a672f4e636d2f6638414e6d777778572b487149746a534d4d45485375572f4e697a4631685a6a70507379744871566a6a56636e3157394736496a626c35494f78485448443969756a6a79586c72572b76626557695a727a5a64546162767a4d4d667851647967384b714a44686b424d45493064427a743373353362304e77375268386553755a385670755430686a2b35566a71366d515a3731727a426f4f445a4c4c435537665363507757396e5042566932485a42792f55726b70376155422b714f5338744f4a31316f766262363049626135704836666556343364783875656c4251516331414f4b41716f55476e5a33764b6d37597276324c6b4a5071366f6c6559447262744e333554516b37636543447533646b6234497a35307077566471324c4e4a4d337478577a5a337863704936757a4e626674497a445a5032494d316e656257426c706941666d5662355933674e7549496a496a554d4d46492b6d78464a456e6e374262374e6b5148755163502b33437a63446b744841632b3164595247706879397a493349416b352f6b467750572f574e4d54597348714e4a79356345484a39593370336d346c4d487046493979353755516371615542495152714648346f4a577271524f6d6f554b674c555150646f65535352566861554f78566c42477172706769594171614a62634e63784469634532346b42654d6f3061564f5344316d36456451686d49524873367733496b47764e633233367875444d655a4c5646362b4844334c6f335a7831687167745641743061666433726e7a324e34316c6756767633504c6f505972567435796a4670484871516351574978446e34717933637467786541445a31586375516a63423178483472424859695250536138537942746e646478454d52675630726c713365786743394f4378573749745358537378314873515a5073495778716748623936313254704145714c554c62564a5353743635616a336f4e64755949484652794b2b7a716753784d565a356f59456f4c74755845754153587064514d556638416a68716a6d7446754d64774e594b436b676d44506a785353494b317932314d61716d554e46436744456873335850334e30797561526b5069746c2b666c327a4d356533657562616564764a33393644665a6a47413673386b62737862747565794b594f3363714c3977516a474a2b6f736774327354474c537a57692b30594a597771415531356f694d4d6e6633494d386d42374656664458414664516c77733932657271376b464737756c3846667434795a2b56466e68614e3237714f4336656b5768306f476870774e416e6748446e454b6f56397171324966714a514e45764a57524471537745614d6d41634f45484e39667547487039306a4d4e3779792b624f5639452f795974366463356d482f414c67766e6c5367474b68445554454d454871676a2f74515272326f76334946464b71465251444e42414771456531425141484f71435a496f55646c4b49434477556a565356464d30456443696e7a555146304161756f65436a6f434b464353687032706a687a514c676f475441746b686a326f4379586b6936445a6f4a79554663564971554259494a6955633149344949474e536c644e5358636c51444371364f78625358797737566771793237614e4e575a516149764a7a554f67514844596b49794a49416c376c575a55646d6169424c684552565a35675a42577a706946544b68636c416b5277576a554e486173324a5a586868427a673644523656442f774179305350726a38777659627178496e5637677564744e734c64794e317644776f4d4758615a30486d4e39436247724c6a7a6a634c3669363958757473377848657552505954343051636d457052476b344c52596c4b34566f47776d4455644b32324e6b496c6d51507462656f567a52336d3246534d6346306f326441464b725a65326e514d797944784f3445686a6a38566b462b634f714b372b363263535461494d54694a7379356e326b344561734d30443250554c6c42684c6a677537737433754a2b4942754c726a574e76716d48586f74764b416f42685242306264776b562f6174646f4756446b7365336b4a55353057363342696738662f6b2b7a666432794d4a7862763841597273656957664c7454735441306a4c6b742b2b32554e7a5359664c73586e593736357362766c336753306d316376626b673337577a39764b395a6a2f774162457834746d463557354c5463624c3372326d377467786e657736616377635176447a4a754579464145446b597667684d5559304b516456425350424e7569497830352f7151632f4d72565a7443585478575945476932375332626b684a42304e744177704b70646176756574732b4b79534f6a706476356c6e6271307658423048714e72634e776670585267546d754c7439586356314c6339474c494e647368304e4949315635495131595a6c4a726b445241357542744a4378336f764a6868384670314f6171644530462b3375644655623177734e4178576352302b4647496d54717977515778614972546971424f7573757270524f654370757a624269675763395a306a4250626547437074364e58734174456554494c4e5978566335524d6c584f35564a456a5669673052474c30574f5131534f723372544c7069367958376774774d3259424252667536634d73756130576a716a306b734237317752644e772f78544c6469394261694262644252754968766171303747644b6a465a706631433946625975787378353845484d3965675a584c664b764e6c3571354371394a366e64382b526d65444d75546673366d6c7734494d586d5367614b3633764a4131775656797877566362527a46554856687635526f35356f7a337370344772726e614a6e497574646e62584c6d4557595935756776312b5a37314967794e54514b36477a4f6e72785771787458495a426d3275323878356c394950532b4a6647583731306264324f776d4c6b775244435456727857794733454b384d4f43717632684b334b4d7378376b47713563686530546831436e75577551617138702f6a305a32376c2b33714a684675783136534e317732664642595a4565466773734b7a36734172707a4978785651476b59397142354871346f524876516c7a78566f42616d43424f515443527a51444f5747434e4469616e75515173545630534b4b436f5a51466767527a324b74777854365544514f55432b57395870386c6462692f597972454b746b72355430304753416d5464495168584a5648554457765972346e457469677275536646633363504b5479476f344c64654f6731574337636b45454d6449635a354c5a74784b31624f5a645a5138355a746a5262756f78416a462f683830465a6c577159566f4850776f726f6262457a39794e793442476c454647353346725a78655a726c566343353674752f554a2b5674426e3473422b5371395766635849326f66584a69633133646a7452744c5174786f4d53654b42624f302b787379753376366c302b4b5749485936386c49626e31532b59536b376e75396776596572766232303377584d394432385941334744735145477a375333734e7559517946546d56356a65663035484a31363366782f6f47517270787a586d4c7838774f412b61444462767974595a4c5a61395162726f73647a62754f53704e73794f6c4233492b7379372b4b74742b735347595a367267694c30474b7674375635596451346f50516633654448564a5a4c6d3675585a4e434c565761337357595472584a645333746343674f336a7178486574633547324e6363413378527451496a324833704a6b58747a613273636a356b2b366f5164486437474f34416b2b69596a694d6c787431734c3972726f5938595a723078714f336b755239373976666c596d5347625277494b4479753732346b4e565336772b5271656d43393175505472573747753064467a3450324c7a6d37395076624f353173596c2b725451386e51634b64696363716535556d4a586f504c456f69526967524b4d656d545032494f4a59323133635330326f47637634617271572f5150556f4234775a387463522b4b363370743645544c7a70674358466858745a644f3766735852303372662f414f6b6a376b484474627231625a783875566b7a413477314e33686174706375626b656465416a7170706a53693137376574624e757a49476e307a663546316e73526c617469474e4b38653930456b376e69506b467964363859474a7069563162773155345635726a2b717a456567564a4172795163636f4d70703449356f42795278716f41364d496b6d67515333417a4f6b5972312f6f2b77743755613245356b564c5644384667324733466d4772363544334c716261344a7a45706d6739713830486d2f57376775377935495950702f32674263374a67744d4c4e7a65337a473145796e4f587a58626c3642743970316233636458366266352f735165624147617632327a763779545759475a2b48656346365061656b62433745584978756b662f41444445412b36745631345844416558626a474e764454476e7355486d4966347a76482f414b676a4341786b5a443936766e6174323373574230772b76366956337964555a746c6e697554596a3564687a51794f7152626e52427a7a657557674a66547943323250574974704d4f384771726d426369307343756664734d656e3239756144304d50556f572b48554d5361712b31367549317077586c624e6879354a5858323279614c356678494f746339546348792b702f63714a692f75617a6f5070566c717847416f474b304163454573576f3277537766347130774567597a6254324c5075723432385163356d4d5939367a2b6f5475504862572f77446b756450646d55476a5a7975584e63586531484b513141727a762b5137533362756939596a70684b6b674d4e5761396661732f625245636d39766573322b325672645136326966666a6d7944352f5a4a423656374859327a355474556a48344b6a612f347442336e4f576e73412f466453333650597378486c616e5a6f79312f6767796d3349427a7778524554447269655a576964687a71494c38636c5451555a4271686331446d725877303157534234653376523839736e7179445361476d4f4b3433716671506c776e434869376341632b336b6b395333392f71743236526173754b38764d794e445241735179554d616c4b3730546f424847717473577452705838314c4e7658566c32396c7464413135676f4e6579326e32342f6969464e33634d656e4d6858776f4f5a785750314178387869637659494d56793463445253453334756b6e70656e775343357036386b473745504d305766653776526244654b513031346355746e62626a65533037654f6f5a7977694f3964766266343361424539374d334a2f6f6a53492f48334d6738577a344c762b68373234626b64724b6f44366534452f4e6466665368744e554c416862307879692f764a586d52366a644e324e795a426b4b61745048735165694d686e5231783733705679636a4b50683761726f53767875417a744445664661374a6f434b424279592b6c53786e6359446b746c6e3070682f5433502f41504c5732396238364f6e683949574b313658646863635847676351395547722b31373044566276672f36572f4259765564683667596955326e4350364b666b65356569734e62694d653958536f43454844394b4a6c5a47766a6e7758573176512f7556556f434d6952374f70674b393641626d342f544841356f517352736868496c7663466d735868754c3572534d6669744f6241596f4c444d56697330376b496c676171585a45667041347a6b41507a5849757a3264326d35335448394e7533497848666d67305876554c64734569574b78572f55394d7959573763763472673165354d66547472654247323356736a6864476a384b71665a6250626a79353779496c6e707461783777674e7a316a6558482f726152776846766363585849334d33754857544d2f716c55727351394b73367466336c6f327566692f326c565850375643576c37387a6e4b4f6b524b444671307744356a39767336793359524e596e75344b2f6637765754473130322f69527a35724243576d51504242337654372f414a6c765269566d33646e7259562b4b79574e37355533616e4a6447354b336347754a635068773755474b3348536558344c66456949364d50656c7477474c4c524779496832397539426a75596154584e7561717432664d6d38714250755874784d7a58687a2f464a5a395545656d566f4166776b6a3855476d554767526c526c7a3770316e544c75373130375636786536377576796f6a727231484a4c47313658356d6f58726b596e4c52556436427247377662613341324a6d4c2f7046433246506775695057357a69323473777644365467582b49397a4953394a6c355175624f666e323277776b507a37467a5a62652f61365a5737674a2f67516462622b7137636c7a7464502f30693566675230724d624f787658524f31436471344a4351664354484467436667714274727532746d553763344366314e547655734335665054626c4e7161744c6f4d487257787662652f4f374f4a30546c4b555a5a5672697557765879395175374c707678486c6656435971526e513856775056622b30767a45396e624d4239543865512f616770327334323756326239656d4d49393572384174757a33557264754d353174616d50615033726b56415854324e624f696e696c386b486f626534746d4c6b713462694a2b702f65764a33496d4a7a5a5651334d3434456842377146794259456469532f637432326c4d735062426554687672385164457950696c4d377535494d7a716c336f4f6a756655725a667977355a33775351746d355057586c6e70564731326764797572433077515463442f774161354155366365513969764a55425872742f507939764f5234664572794c3936413146475144752b435a3656716c784b41534845714a744c49456f422b355277314d55514d7767674f6f4e704b4643564b6c547451516f456f6b4b46685241584177585333422f384142323932474d5a33592f4553487a4b355944727237517876656e5837636d65334f4636504776536677514a506361346963735539713643314667327a794f67564a775769335a6e72306b467339507839794272393443422f55666b7561477a56742b5975476d4753714e554241554842445369654b4364696a6e42422b3947516571434f3145574c31516f795949465a51686b444a3057664242413458587665705275374f4e6d344875773659532f6839714c6b4d69514751585772306f5643365676314b44417431444e316c394f732b595a327a6e4631566632686765534474513965723451335432713650723857364d5834354c7a41466171794e6d7144767a39646d61414e3254564d643165334574525942766233716e6162457a4473753374396e473334513443424e74747456563262454247546e324157653345444442443148636661375337637a625448744e4548673730784b374b584d716e55536a7164335159346f474234494d353538304938436f554578566c735553784d63466643624270494b35326a453037657861625071642b31307651664a41796850717756563663666f34494f735058356b4e4d526f4f43356c2f314b39646f394f57437947716d707142414a4855693148644b6d5151305177525559464163563150544e6964774a584a5941485432354c6c686c366e303239434f336730674d6a5772355551616474754c5974533830676558377a58385531714e7a31413635764731394d4d793350677357387465664e347347785771334b5167786675516453324e496149464d465a4a354e576e75584f4737616b6a32465857643055432b715752754e7463686959784d6f357331543846344a334e463945456964575a306d692b6533596d45694f5a514448464b2f464636495651546d74466a637a736e705064324b6c413151646d487274794136717371622f72463239485447674a584d6b466461737a756b5174524d7a79716744484677746578394e76372b576d7a42774d5a3441642f3556586f66532f3856777662762f3841526a385636753161685a6a6f746752694d6767344870332b4b324e73524f2f2f41464a6a2f617537683044494a694f4b44674575454445704c747358496d4d73436d46456355486d62385a526d5953643377354b6d55546776516276616a63445648786a34726b58375a67574f4f6646426a6c704a414f5377336259692b6c624a436d704a3565735678515a6f525a7774316a54453146434b4b694552476f444658576f6c365a4475516174544b2b4a795761464d567074787558352f77424f76504964364379354d52446e443277576e6137497a6e3531344d423449634f5a35712f613749572b7166564c34447357314155676b364a4b5342656f7751515345656b7175397459335132436b69597942562f4e427937746d646f344355654b7033582f414a56696349486b4f6661753073742f61616754614f69523549504e2b6e5474784a6a4c2f6b6a302f7741496246644152316e714a4c354c6d79735432743032747a48786b744c474a663467726273396f62662f414276456678494e746a612f6269564d53364c444a4f433738667851352f76515148486b6b30354a7936535469675152794d32514d6954556b756a4b574178566543426e30555343497154514d6d75462b614d514a346c38554174323458484b746c616a4563776d674245616662354a744f484e42524b32516d4e6e57726f674b794d6d51633655437074593672386159504931776f744432395750556d3230514c736a54776f4e5a2f656b4944755554422b354e4a6d4a4343714673713233306a536c692b5074565976556656626670746f7a6c575a38454d7a2b78427a2f41504a66567649746661327a2f557544722f6867667a5841304862534d4a6a41726d58647a4c63587a667564557053637276656f32787172512f4e413169325759557a566b345844515a6667755a62334572523431777a572b5739684b495a7767747457494f483857627272574947475338393577634548765858323239456748494a356f4f68704d756f3056463249743146536a6333634943754b796d2f4b3750476a494e466d4479456a6743754e746434646e366c637333502b4f63382b6451563359686f4d764a66354630373666426f2f2b31423050386b39514d352f61576a306764545a6c65626c4f71426b35314641314b426e7052475253696948694e45445549664e4c704b6855656a49474e4d6d4b424f595334466b636142414d56455347557a34494136367670646f3334536944575055334a63716f576a5a376737613747594c4d6138786d6736683273784a5653743648664c6b765251454c6f4641524f76637949394f32676f59482f65616f504d326f43556d4654686a56594e794e4d794f4646374f2f4b31734c4d37384967484c697646536e724c356c41696a556f6f326159644b4245345a71714251424241487a53766b5577415432374679386446754a6b6541716772424865695a6646643361663472764e77486d426248385750775851732f3459545739642f327851636e3054303364377535357467364952786e2b58466578754157326a4936696e33416836647339466d6b5968682b4b34386863764e47474a772f46304851456f4f7976386f794438634654746468486252313344716d2f6345624630376a63366342415037304847333976793738745049643670317554564c4f374b37667632786a47354d31344f33354a4a573871366b4673444850424a6368614b797a6c4f4e4931564564775157464145486f74726461693649764e526c35666237715570687357585874584c6c3064644f78427275626b4530557436695658446276316c6c706a63466b47632f44454f2f594543476575796273662b6e4d785074337264616d4c6b4f52794b342f6f426c75746e755a59655a636d523236515670394c766d355a6a4b52726e33494f6b5969355355614a62757a733358424749616879566b496d49716f346363554757393656626d645543596c784c462f4373556246797a49473758564b567952346346334939504e4a4a7059696d6144776e713172536256364178385248366a697338627a382b4b397076765362653567644f4a2b6e732f46654933466d5730756d334d4d6566775157616d7136713877596c54586b732b6f67735548527458526961725162307448446e78354c6d5773674d566264756d324750356f48336c2f544676396f2f46632f616e5665693769763034704a7a4e773669724e6f50366b534d52583349505943586d41474a4f724e535131466a696b32397a5831766a383162494d6130514e61744153452f636d76516a5056636b4b45416336594978687063685045494f6675724554433949456d55495250592f4a6332775462694478597274336d4e7939482f707a6a454c4c75724675324973413878717879514c486653594f733239336b7042696566636c6843756e416c5a35774f5069514c624a6c44706f556f326436516558743376524747366a5a704956645347343357346e3042766b7944547439694e6639517532484e64477a617435553442766973386653376861562b367a355256766b624c5a3956755a6e63484776775156372f61573767654a6338566e324c786c6f4f5373742b6d7a7658664f6b4e4d50706a6d56654c486c334e5144494f705a7947422f42614b7878774378575a593535757239626a6955416c6d6355385a39444a5138596c3073524c463248343845445375616734347053524768516c49434a623264594e7a754b5934466b4533642b4d347a685668704b386e757069647773757663757a4e7135496a2b46634b5a637555415564314b59715551444369633071677a3969415158324e7a63736c346c646e612b76546941434b787232726845664a50433371393644324e6a3136453653366635566166574c54394a727771764d3264713857427172372f544536576468336f48332f414b35636c485262617636614c67537863314b747644714e4b4b72735145423845424669796878526441474a51644168305367412b4b4a4878544d4968304b4f36437979484f6c5645635538446f4f7058626662584e3364467130484a51563765666c334250677432773947334f394f6f445442367a6c374f76523748304b7874527275395633344264534e7a5561344433494d47313943733747305a55755850714a775841753359335a753246563750534445675a68654d3953323474626a58394d2b48456f456e6331476f626e7a5631712f70476d53797a4c526444587a51644f472b3039796833627a725663677a4a77594171715679587551646b626b59346c623747366a4b4e4635654e3749466162653430674d673953647a7177565a75616f7375586176584e49494e4374746f79314d3451624c647738466f68457a504a55694f667557775249626767747035656e50354c6e2b683733587274532b6d525a6445535a2b433878365a6645643966746d6f456a49634b537167396d63316b7658596956442f4372724e7a7a5941385678626b74565453546e424276336d302b37734557793073596e6d7566596a4b33303349365a4164533647787675644e6172566632777564514c5351595a454e523256462b586d334944494b37544b464a4b7145395679514657495a4273744436676b754635486c6770624a6943714a586f75644e436761632b6c316b6a3153786f704f382f77433156324a764e754131494f6a4333355936527a566a686c49544f6c4541745241644f6d69736a31596c4c4278562f774236737434755542466159425759344a4e5554374f6e656e4a42772f38414b4a4e36664b50475552385634466c37372f4c502f73582f4149342f69764149493156506970716f704641575a4131527a52624a4250706444416f4f6f45424943446f6e696741676b7163325549307146796d485567475367634959346f6b6a4e424a5635496e42426d78517771674f4e564379675a30445769417150546d677949443979436330434553654b4342735477514c446d67364c78644146447a5138534f444f676a4b4b4241635367616a494f55636b5043674c726f57502b4c5561666975666a5262624c6d44484242706978697a75716a47717446754f6543706b4f6e6d67706b5432704a6d6949693653515a416836565a616b4d78514b7656577165794e636d6950676739786250394f4d336f6667465a724561436f5663626354626763394b716e4d5738634d6b446d50553866626b7153663142567a76744669735537754f6b6b76376b47383341422f433661784576714f504663733364584e613433504a674c6a31785a4231544e355677487a57364855487a586e493779325a346c2f682b3564665937793364476a574e583655476231473962684d573372346d2f617375754d76477a3852775772317034326f7a6c5851615234767a58487354396967324f49674561616e454b2b316536767a574d5854494d7455476d65773151646a62534a496b614c6643564351755a596b354a354c5a417652427242634c7a652f3266334e79557a6a674267374c304e70327175664d43563352586e326c42527664324c473031537a6f42324c78474c6c65692f7975506b323756754a4f6c79616d6a727a6f6a4749417a4b433233414d7737656158664578614a566b4c59344656373532427951632b4e53757074794c5965764e317a376653567467527030794343323564387755474848465a764e4c3657372b616b70414638484b54565853314851656a7473434a456545654c6d757645734e553856786263756f774f48794b366b4d512b4753446f776e684a364d733276554e5746666b7442414d566d494262493830466875417871532f765658334d5252696b466f2b45465044627a3877416c2f6b677638414d3155513179742b454630626b4339575447656b645555474c376f7a4c456b2f7a525a4732587a2b47534679344a75614b57356c6d5a6b476d454e667639676e757a4d63364a624d3941362f334b583552696451397561436e7a436178546d66415657667a7a49394a4d682b6d4e5372725562375043314a2f77434b516233494c4c6c41324b356d2b745862397679345572585575724459584a6c37383235517038564c6d776e6843546a2b4c464278375777416d4a546c3144334c62486455306769515a576e3036354c483375364a394d7534514d51454753647767536c6b426878584e74544e7a2b704a6953534237636c33727670304c6467676b6d5447576f3856777255504b746a5567572f476a506838566e6d56726c4e3441797a574930706b676f4e736b3853466f735345427050465657774a4855744e694d635150656731777542714b32334755736d6448623249416c785262597859444538554365522b72334c5261694930475348303061694c73487951577a6f486b736c2b3770684c69416e6e4e7159724463506d6b5768336f443662624e6d334b354c47556e62677456712f436477327a55483675435337307847544473527362614a367a58735162707730386b786a49686d785347354e32656e426c55647a4733346f7948794b432b4d434f35452f444c6b6c686574797246574668314d675639504f71424a314e6b5649676b644e56424d69576e356f4472725867676c313654314a3334494b79593651445473516c31553932616156613566696a43414c6b68425a48524671657856457a724c52384b46323454324a7264736a772b7a494c414e54567a54794a434867356853565277515a64785655324e766376457a67413347533352326b626c626c66623243306154414163416735347558647332746a45357879573453317731766a67724a57396361724274704d54596b477a6a32494e654936736c585071466663694935506767656f644e5548486a746457354635673739793645484d7450417176794a4e314c527459744979346646427a66583732697a7a4a6274562f703967324c4d496e4671393679657048376e665772474559396375356459784270484241747776416731376561385874726b6744624e4e4a3746374c63337247326950506d496966683756354831474562463358614c32376a744c6d67517478393659576849305574746367524a6a383355675a51505669666b673232746e43327844456a487657364e75494451784f6179574a36797a594c56455670526b47714d744d51437959573843556b513447616f3366714d4e704870477134664446426f335734477a742b5a5048434d6379666d746670477a6e59684b2f652f3562745a63686b4669394e394d6e4f353935764b33666f686c486d79375a663349474f4746517566366c7452764c524e504d67484332695a68457a34664656776e6f69596d764642784e747570326a702b714e4a446d7537626d4c396f6177345046636564732f63616f3448785a34666d7578743474414371446d62373062563157445439422f42635739594d5338677843396e45724e764e694e7948485450496f504b3765314737636a5a766e2b6e4e39576e476d433162722f47746f41346e4f4a7879492b51557551756265344e514f754f584876574f39362b4a3945724a4575647a384771677a37585957343344706c724463472f466459794a3766795762624479345245715350564c74577149453043584842354c6b6236784b374e686756324c682b43785369534f61446a54395075384b49445a6b5361654336326a68514b75354454696777517469416f4b7256597356314e337171514a505269744d4377454944564930624f714332346454593642394b31323976627543506d306965656b712f62656958376a47397067332b7166354c715432646f42705145794133562b354252734e74744e712f32776b444d5a6c316b3365315033586e79596a365838504a4e4736647066466f675274793036503453757351445356593431515a62657155574f574751564d3341597136493872704f4378333778686330485042427273734c556d7a42584d7443553749684c457870795858733232746156352f59626d54427a3454704951555739774a427a306b48536f65414e666d68366a596c597561345668632b5a2b544a4c637455615a64364336775272454375335a416c486732584e63617843494c4d3547433756714463332b434452474b575a5950674d30356b30484f433550717538387132644a385647344f6771322b354871473931343272666847564d3172324d6875642f4b374b6a556a3246596651374968624d686a4c344d74667055644f2b757467493958626b67377436576f3177576156326f69616471746b664d364d434f437a58615368455936766567364d4a41556b47507754687356544a6e366b385a4638554175572f4d446a78664e63692f656a4735704e4342775861315438537176374f4734476d5936737068427770583444704e526b6c4e3845616b6d39732b545052632f6961517a4378755a6a6b776f454433696643377669754c7557456e58577530704c784f7550757549464478515a694f727052424a4877554a4743306257446d7144703748624167416a445074585a7432774d4b4e6b734e67434d4e55635237364c705734394f76384142424c594553324c65354e4f7a616d48755142546558356e54576779576a622b585a724956796b6355484f2f2f443975364e55546f39734673732b68374862744d784d35662f4d4c2f42583350557841394c716f656f5841784169485064386b473757496a5352306a4955435533504670485a4a5978366d53616533765451335632354c515961596e50384163673450725570796c656e526f365837316c2f787a596a63337a65752f7744484436654a58513957687274587041564f6e344a6638634a6a616f4457556e397751562b6f794d4c383773664354704934454c52744c747555445056486e79564e365a4e2b395a6d784f4c6e73584a76376557334f753134436737647a314f31626f4165344a4c507167755334664265636e666c5078666b6b383142394273583433634f4753766c49732b613858732f56764a7251647975335072317934476a556e4d495053334e774c6236714c68332f4146473775352b527452302f564e5a59574c2b384f752b644d503068646e5a324957726654527330436257784861514d63666d53714e39366b6255544744435762346861622b6965366a7468533452307947443844794b6f4f393274342b527534504b4c78492f5433346f4f444b38635a395575617238774868335558726a744c6533746e3747786275792f6a4c303750326863536671316934644737326b48482f62364751637550395071594563307368356936763358704630615a57626c762b4b456e50787038453862666f6a50357438486837522f46427972647545514452305a436c43756f4c6e704c6450334576384161704c652b6e5645646d34353347506567344e794e61594a4e4c344c766e316a62517061326473667a48562b4371752b765835576a6174787432596c7752626767346e4e57517579744855464e464b5a70644c59495054374d2f6332347a686a55486858354b76646570324e763078486d584f336f2f61754662336436314852435241564f6f454d52336f4c747a75376d364f715a376851425a7a6a526174706373325a7665742b5a45356169473979326d37365863724b336474312b6951492b4951632b462b6471456f41306e6a3356563169444238437567336f307672766a2f61747476307a302f642f2f61626b6958364c74503841386e385548507358626c6a7174546c626b5766544c384b4c584c3172656d446564516a4552442f76344c4476514e6e634e6c34535047335566484e5935626877394167374e6a31726362617076456a4d584271374d543763466d33502b53627536656d5a412f6836666b75504b524f4a516a4849346f4c4c75347537695a6e646b5a795031477171624e54536346486f79417575683663544d5367333853357846614c58734c3474336871776c306e76702b3142747657775869735572656b747a572b634153515133425a376b436168414952457941614c6259747452766573305135484a626f5777514f49384c5651616f5131462b4376674b616c514f3158526e35586a7048386b484b2f795064504957652b53345436734174767147736d4e2b34584e7a5633425952774f534353346f676f476f523176516f494470566e6c69526346767a565278354a2f67675355544870522f4257786e5251322f4d773730464c494a6a5131785376775146386c41464d366f59494946312f38656c72335032356f4c304c6c71586648387775545258374c6466613372643739456f795156755953497a69765462503144622b514c3177674543555a527a4a624c7458443961732b56766230634f72563353722b4b77424130716c416c77746d3432734c646d7a64423672676d5a6347456d43794942676f373449675a635538626448485967554d36494d534f6f6676556848677049657a6f43776430744d55486f795a3649465a4678454a584a4449344941616331476445555563424276394b75433365367543366c36337164367667793457336c706d4a5a664665677458444b322b51516369376230644f61323743335a6b586e55703774714d6e6c6756696a2f41454a616a52423657506c325975666232357252593345626b63346e35726a6265374335454135447738503372705759313146427374793039713833362f76764e61337164766376515851344d5157664e6344642b68334c307a4f4e794e4256366649464235355233566c793135556a46776559565859676a736d4a5135706e634942514945686e7a556249714770374544526c697049616a77536a34496b413143434d485a44487354416b564351444e424370685245714467676c4643587170696f4136434d79763232344f334f7150436f346856544f544a547851644962727a4a6178542b48676e6a366a4d534553614c6c784a523568423278766e526e366e43497045796c38482f466350555279524a4d7144424275766573376d3545687847504a6336524d716b714e37314e4c643641414651736f4351455739364345674f6e6a43557a6f67486c3854334a4245797771766665676567783249462b384876456430422b664e427a2f53663854636139373357782b4a43395474746e5a326b644e6941674f5139697273536f5136435a714b4b56515130533434706d344a5866424179575534784656697537755632586c32734f4b7a6d314f52642f6567336e63412b41642b5372753234626f4e4c3338316b2b316e494e4f66754b49326b6f696c3067743273677076656b33496e6f4f722f306c5a76744c344e62523771713877334e6d2f47416d5471504d305861416b44516f504e7a326b7a3462567a2f414730567472306663535030774235755633784354314b4f6b7536444261394c7378386658386c3059524559744870484a4545464238676762424252364b596f412f4653426f65315357436b44306f4b3732586172597175344145385270514d635555714b426274714e304e4e636e6369573338645938563245736f6951593143446a3264355a6c517941624a61593349797a4b3878367a365263326c33565a426c626e79714f537a6266596236524c616f3161736d51657938754a4772412b2f7743537a3347425a634f335a3365337250554f596b396578626f585977424a6f66315a6f4e6d6f4d616f61786d7378756950657043344334487651587545596d4c315761567778396d546d3647636c42766952537146576632397356676c75625673695538414d466b6c36334f2f4c5274375a4c6e49494f786375547769414163335761375a75584b655958575745665562324d497742713876796455336474763766395333646a4f57635032494b6230642f744a366d6c637438712b396c73326e715564775764706670384b7074657254737930626d4267663156623855317a3137302b4a3154746d63763143412f47714476324e7847345750695766314c314b333664623133716b2b475048396938357566386e614f6e6132514f426c58346674584233752b76623665752b584f4849636b485533482b5562322b546f6b4c592f684835726b587239336354313370475576346c567a54526f444a4242694f4b394a5a6e446557597a4f49476b396f586d68346c30665374304c567a793565435877515862693257634263325673787877586f64315a594d314375626373436f4b446e6b6d33686b74454a7a4e4153365157714f425661747241765159494e2b3073456c356b6e674d6c327246735952584f3270495a31324c4d644e4d736b44754c62796b634b727758714e38376e63334c6d526c5475587050386833336b512b33742b4b5869586b5751486b556345726b633078494e5167484949424855315547627451447734703667494e37314448336f4a794b6a50564b63557844393641464232525a6c4e4f5343454d6561474b6d7253697944302f2b4f62714d346e625362554f714c72765463537068785867746e75447472384c77794e563736367a696552366e376e5165622f795864434a68746f3564552b30727a3073697274337544754c30376b7a575256506167444b616b514541794356485972747674726d3475433162424d6a52556d6d4339312f6a6d772b7932336e58492f316276776a3756515537442f45624e7470377157715763425350352f4a656a73574c4f316a7074516a475038414373323532586d2b416d42574933372b7a6b3138617266366b4861314450424c71694d43733975384c6a48492b35587445596642426b33386464736a454d73753274614144454474347272536a7244484130584632354e743763716161494e786e356f504a592f5370764f2b2b4f764e61376653574b78324c663274386e365a48356f4f4836725a2b7739523834556a6472373856664e3231487358583959394f2b2b73485150366b4271696677586e396c664e793358474e4367576361636c6d4672564b6936576d6a65395a69504c714d30477662574269774b3656753345567950755757784c70413572554a6167325343324970706b334a656539643952456f6662322b4c7949576e662b6f7339713167523146313572544f2f63454c59367046674f314237722f464c4d725778426c39637053485a5149656a6a72753233384679556669757659744461326f3278346263666b75583648587a3772304e795a486531655344703362756b664a567747737677584e7637767a626862777870326c644f7a456750336f4c74514239696d447541465542566c644871484e41525259505566544c572f68706c3468345a63467263417353717a64616b526a2b4b44773234326b746e63387536476b50444c49685a37746b427a77354c322b37326c7666577a6275782f6c504265493953326c375a584e452b7148306c425847656b567156524d7975564a785546373656555a6345456b5630765362496c4b56342f514b647135525046656c394532344676567a5162647646346a36535757714c67315744642b6f5739704c41544a79396e566350386a7369545474456679796442325964654b42634c4444312f5a6e45536a3234724c502f4a4c45583875426c7a6c78516450635131776c444231547145376b6f5344536a5a302b374e637135367a66334453746767725636615a3337763841557838755131486c56416b5976627436385a4369446158576e65776e6568624d5a4e4333453970585074336a61614d3830473437614d34764d4467734d746e3555365a4c71574a52754230336c69357a4b446d6d557333775737615772634354636944776b79736a74334c6c614c56706d43445641524f41444d6b75577a634646646230747a354a4c75344676786646426c45644a4951665553666239367a58722f6d5542577a62314f624d677a54336e322b37386d39534534784d5a42566574657566626e794e76482b706e4c49416a4a55663552616c6f7458636f394a3754554c6c37532b48387956546d4f3542314c4734335572657663474f6e4c6a38466a752b5a754a44522b4f4a576d562b5737654541595562546975687464754e7645544f575a2f6167346d2b7369337468466d5a6349506b7652657132794c5066553858586e6a5369414d6f42336f755a555577514c676a7a54534b413468413471466f73774c6a476f564e697136566d324e4d534d30476d7a48424d6250466d5432724f6e2b64585867424771447a742b49315a4c504f4c59594c72584c5268425a74767444754a36426a385547496a696c35466250556f7768666c47313459394937736669367947754341596471506955657144494343534544556f2b4b7132656e6247652b75433348444d6f4273646a6333397a52624650714f5143393973646a62324e7279375944356c5537586232665437586c32526a6a4c6d68473858426e3742426463426644383149307158666d6d6a4d5448536a6f7734494868506e56636631665a616f554643506356306e455477546b693548714e47516547424442787953336e49593472702b74375437572b4c30502b4f3531446b566867317a71343845475749344a44334631746c62417156584f316e77515a52565757797847525447477277703543497148516164704d7a4e4d4633647550704d7570634862455137463374744c5578396d51644b4543583471324f4b534436612b7a494f42676765396461334b55716152386c34333032345a627564302f5671783572762b7333764c326b324a714739363550702b333062654e7a39524c6f5052656c3767695a6855786b614b6571514e755854345a59396f57446233504c39754337573874446337655134696e616735566d34626478733258664567596772783862684e63342f4a6568394f76695676516355476733684b6c46544b33477241416e6770656f535467734e362b5a64455378516444622b4d72544f4557366771746e44544542716f7a754364777747456365664a426b33507067755231517878584e323171364c375444644e6535656c4d39496f6b4e754d385256426b4172795441454b6d37646a596e706e6a79344b44655732396e516149777a4939367468416a7356467663323544534a6775744d4c6b5467674c4b4442474a456b4b664642772f38724437442f584665417a5830482f4b662f7343492f7169362b66307a51514961716f78414255356f494b6f4e56456c30435542656a494f6f4645445578533449684241655a557737454d554d4544466d556f686a56487451514950564441714943586b585269677a6f346471414d6345334a42335551547451646c4b4a715a4942694644576e4e546b686b676d4a6349714e6b7052414755624a52516c415930557855514e55427a5737626e395377524b33574d47515747637053616455435471366b38593669787278514d635743436b394935357167674c52646741444832645555374f4b4375644f784e616b59393653664a4547756f6f4f39737655794e4e75354b6f77504a6237317941446734386c35654265547456656874332f4f674a5339767a515937742f6a324a424c57644f437333414f74736c6e6e514f673151747348392f4a5637757a636d496974416c743730572b6d4c42576a64686d6676516379635a327645725a796c4a694d6679577535354d3645747a56566d4d4e54546b31636b47324d373136476934515238556b724e79323546427858523278675961522b31575834776c4851614d673463727a45564a795736316430345a724a75374772726a6b71746e49767742393644302b337543564d6c3162526554727a7530754354783550566433616b47477248676732524c6c635465373233744c747956776e366449484a647149496c566541396676796e764a77503055515431583157573975436830674d483472467172784c7167436959414d354277516259676e4f727250763575304a4d2f4a586265514a45736c6a33482f495777793449456739437445706d525974565a4952315a71776b6d694270414f53685674545a39794f4b665147306f4f7a624a6c4a7834517574746232706c35392f4c754745437865767a585432323544787475657a6d6739424b426a4154437a4755536e38347a677a354c5047376b77666a676731427043714d54457961506573326f59452b36693051464b49486c5536633062737a6f614e536e31565a4c4f516171446e694d7a342b5330514179774b61515934554b5578497a7851614c4e6b336e717a55567350546241715135356b72427464393976646c627565484876585447366a4b6745755853775157573746753247747841374538714b67336a47705a754178554735746b5a6e2f4145792f4a426649736b4c46565376416c71676354525836653941735a595a6f43494e557869345a5477636b46563535514c5649586e4c2b33426c706242656c594c6d627262663148414b446c797446744a77584b6e62494f6935674633764b69574766314c467539714b4f5452427a5153617877475376746e5550624e5a35774e72496f325a48776c423272505832414c514a3552584a74585a51776a5838463049457936384232494e4572674766747754655a4f56496969726870372f623971766a47745546526a7044346c594c523876646b5a745467756d344e514b4371786262626666587156684878542f424275326c6e376d57732f384147506a4c386c314a574c656c674e5038744539753347334551674741524f4c494d76384162344576726d2f38796c765a3277584f71522f6a4c725137555452476b56514a5062323542744c667930565832567433476f482b5a61535167496c426c6c596e444e346a33706f796864364d386c715655375772716a696778334c41746c79344876516b574332784f734e4c465a35327a626c3034653253436a706a584a4579702f45564a414371533549765167494b7964574b305641564c566330566c7479634b6f4c4e446b5a71324550315655692b6b47574b73414f6c42445371614a634a645078516b644e523349484c35305850395174504f46364e4a514f504a62697871704f4f6f47415935494b5a7a4677754d43795167514b61454b4e6d70633659366a376b46573775655862316d6d536145764a74504b6c4835724e366939793361686e4b596462722b3368494e5049494f6273746e4f563665366d4b7944523746764a6a62486d7a36514d38506e69754e4c7a3453457264795542776478376c7942446362793563462b633578673444354875515966574e386437664d2f70485445634172746a656a4f7a35463673533748394a5a575876544e4d5849504d5a386c6c7357437a6a696763327a596e6f4c552f484e5777494e537456327a4756714f746a4b4e4f355937585252304852326b6a454e376c7147346957634c6a66635274697131626630766337332b7065506c32654d693150627551506539517558694c57324855632b43362f70587045624c58722f58654e61354a6654726d77733352744c4d75727861736965433765697445446773352f636c384a514f4b4c787a79514a64416b514d6c6b3346304d337452614c687a35724a617465646662455251546132744d74524e537568627a4134716934774f6e677267422f7051576a4248466c5672493655386a523046573432736477412f694742586d7437594562674534314234562f6376563673316b3952324d64336263654d65464235392b6f79566b53515779565a6f3843356b2b6b39794949663549424a70485144696b6c627a4b746b77706d71376b394a306a416f4d3979526957686963566d6d614a4a7a4e7359313571373037303637366c49364f6d3050464c386b466533737a335568617344564c33416436395236663654623252314872766671344c5a73397462326b52617368754a7a4b74774655464e327a43523131422f42594c2f334e6a71682f5567376d4f613662557179706d535167356c79634e39626355507452617470634e793358475054376c6c3351386d666d526f446a77562b314769522f6962336f4c35516b54326646633639475574304a5a4439533646336f6f733933716e47345167757445366d586d705059336c3630426958445a505665696951434f61346d366966376c4d354668384167746c434e36334b32634347374a6356783632476a4e33646a2b43374e7145524e7073336174473674375464505a6849475563346a44765163797865637531463249586f52623271755059736d4945675454674671675744397944664b3834596673586d3731323536686630446a3846713357346c48444e483062596e7a4a585445755130652f464230396c707357357a446159774a377772665348386d56382b4f345850354c6d2b70377351746e623247422b755834634632746b306476616845553041767a5157696e616b6d356c4874545431484e4331624475654c6f4e786743334643354d5239797275586f32636c52437a4b35575251614475345236437249377145384d517137653174514868437368434441674d794448367274507572494d4b33493148354c796c6e706c7034596a6d76635278305a4c796e724f316a74397a306a7075526633596f4b4a3957714f464d6c787479644c5148456c646d45684b564d4b4263763143445847416273515a52485577376c3264727334776a31316f466d32646a584c5552527662347275574c4448564c4449494a473139555747564d56625a73376d626d463467446a46617247334e79684861746b646f314d6a6b677a784f34692f6c4d49766a4b72703774796442494145664657796c35594d6d777743796d334d7831547850775157584e754d4d65316375646778774a4b36396d55706974564c6c6e573253446a2b53424a77756e5a6b5a654c68394b79333755726370652b4b72733335366d6e6965487551583364714c6b54455664636a305751674a6163626370646e617651324a656159766b56356a5a6e794e3966732f53383241354642643671504c33554e7844775849732f452b33465669596c546a6a2b78646e636258376e6154747948554f714861463575314e7747385456666967462f613279544d41674c4c396d3559594c704f346f724c5a6b507743444e5a39464a715a4e483472703266546247337744306f5a48384662616f4f766772785448444e416a594167474b32576851524765617263486b7358715071683263504c74482b71663841306f4473762f4a39557658782f7741646b4552345068386172442f6b75332b333359763236433650694b46647a3076612f596255573566386b7a726e2b4157622f493469377459356d4573655251562b696273336749784c536a6a325a4c58367a364d4e374133624e4c7746654575336d764c2b6a336a747431416e416b5558764c4d784b6b54553845487a613147746376677233346b72315871586f2b31656536754337577068594844452f69755462752b6a77366a4463532f6d62384367356a4349636e3846584c54335a7273543376706630625355682f464d78507a4b542b34656d6b442f414d4c2f41506d4642795831666d6b6e4a6932525862742b6f3749566873676635726c5069466f2f753970326a744c49345070503449504f68753158322f54393166595737556a7138504433344c5276665635626d4274437a6174676d737263574b66302f77425a76624f5454363752444744734f376767354e367a4f7849323777496b4d6a6b6b694d3136432f384135424b374d7a6c743745763534366a3731584831586158662f754e6e436d42746e5167346b6739554f7865674239477579714c316f6538662f45555a624430702b6e6479412f69746b2f6745484674572b4b62635842686e32666b746d2b68744c45414e76653832524f416977412f4e63707a6a6d67494e55416f45585a41414855526267687165705147456b4364536a76334936714d676a73724e765a4e2b3743314836704350766f716765436142712f424231376b4c6b423564794245775771675a6156363763624f33366e414751305851496e567a4977584475375764695769344e4d6e38575241356f4f54726277346c62647565354f646d426838316244614544586e7735494c497451775758314734316b2b3733726f5774706376644e6e2f414653794835717231626157374d644a6b5a546a487a4c6d5557774878594e69673874754c387230675a66534e4d52794371526f55423845415a364b4a7361424b357a51454642797a4a677944355a494470413730376b5653426c4251494c74555a4367566334747a5141344943525a41704359314b556b4e7a525a3845415a4e694549346f61585164583151656461322b362f5844524c2b6146467936674d757062486d2b6d7a445674585979666c4d4d66694175556736667177454c65316750384173786c2f754a4b356f2b4b36487130796273492f7074576f38666f422f46595931785146736c414e5271677a796f6959737941695830676c6b615346635542305639767a534f364347764a426d716a48346f4f675a386b6f646c41464938454264304b71507077515a42703263664e76526878585a75614c576d32376e4e656445744a5859394b326c7a63516b62594d70525064586d6732536c77576263326f79416c373175732b6d626f686d4148385252487056374d42755251637662796a47626a42656932382f7742533431375a334c5a6254707a562b326e496a67414f71527951646963745231417379776571626f5737636a44436a6379666773573439597362636b5777626b2b4a704839713432343364376445547546783949794863677a6b366967614939696a5a4944456436556c385643707a4b43497652523145454f53694269557a2b354141587047696a5a6f6755344b564b415939694c5a6f4d79426f674937464b6f5970684f71432b31624761732b304f5a6f716f5231345543304e4b4a302f4a426c4d444138464c4669642b3449577738705552757958562f787939616866496d776c4964456a6c7937304855326e2b4e5762554e65344a4e7742327769473472794d7a314568653939517638416c375338526e48353058677045505241475550376b51536f416746464f59527a7172396c744a62792f477a4847522b47614430762b4b656b4f66766277635957332b66354c324a70565577674c4d526274306a454d49707453427053544f6b66676941345151636c475a416d6f47535a4247535849366f6b6359736965616d72704b447a76706b35584c5554453178376659727036654b38723664656c6245432f74712f4665693274303362496b6355462b6b34412f6d6c3058734979474843694a655266346f6a5544306d6943336232694a36376865545a55415778733152626963547862744375626767444546386b5358726746432f74524c54446967636355747750524d4b5237457035494744483549354a595671557a6f424a6b7a555341354a386b46457830736d78685643364f6c4d3778726d6765496f70454a4c574364417969446f7367703346694e2b4267563554636570586f6b327a412b5a45365a43507a587353754e3678634f31742f63776935776c54336535427a3437362f4332664d736d555239577071646978376666575a33475a77613968436c7631612f575268506c53697173332f503363434c656b3934373048622b7732786656456a735037565863394e3165436450306c623479642b442f4244533750336f4f544c596269464b53374a616677565537653467514a32706a677a4664306a4971616d392f5979447a703378744635776d43503457775366337752654d664d37684542656a6a487a415a53414a64636e2f49726c76625759414347736e436a6838776735397a316d39774c633556566472313432354f7850385761346479345a3434704a4267673942366e2f414a4248643758794952713431536b3377586e71555564484241644b5876556f52564b516762424d57797751425a463243426363507a557759714753677167372b30335033467071366869726a616957346d69346d313342737a6356586f6f5131427767712b33414c41594b51322b67366d577a797a484b7165513034346c416c6e686b724e3376504969344c794e416c6c4a756d54636c787435636a704d6967356536757a757a4a6e556c5556774b686b54584e445536417978634b53412b436d7269364d69454373794f416f704a4b4f43426d63506b69496b4241566f694a30514b526d6d4c4245423670656d506167474a554a6169687256536f4c5a6f493771463053475a6b496c756141566a6776564866786e3664712b754d4261392b4a586c633053545149497a496d716a4a554230385256516c5238303052716f794464365273543668756f322f70786e324266536f78416f4d4679503864394d2b7832326f2f38414a63724c6b4d6775744953674b56514d416c6255475a78777955684f4a414d536a777a516354656253357376363232384238634458334b33303731474e78726332424b366b71304e517544366e7334786c727468694d4e50366b486666334c6d62753249336451776c2b43364e7535356b424d665571393144574f78426c684945754b6e386b312b325a7849616f714d71724a61756933646e4357525631752b5a6c384544656e62767a4f6d527133444e6372315830733243622b326f50716979325445747675597977685068782f63714e76764c734e2f4f317535663037674f675a63757969446b44644134634d565a4355535839366e71477975624b62534771322f51654438566964326b2b464548577433594471576263627773306172415a2f7064433264527251494b7068735632663858394d4e793739375077527046387a2b78637a5a374b35366e754262486866716b4d677657375065324c63723169324774376361666469676e724f376c61746556612f356278307753583751326d3368744c574a3852374d66795650706b547664784c31433568487074523442506475655a633830314651675331596369494831522b43374a6d31506b736d7a46645877513365346c4b35477a62385250777751617242387a722b6b2b46436437797a786677684335652b32674952794879513255445737642f354438454667745531543858424e62746a78536f72434846564d4b636b426c626568584939643245622b306d41486c45616f2f69757541776330526269672b542f4143526e687a58553965394e50703939342b433531522f454c6c456c6b436d7043394b62304e766168434869674b393638336169386878646471555466756d45637a6a486b677751742b5a656b4a3141556874544f623452474c384631746c36664c63585a776868703670666b7572746250703969356f50566369574f76325a42357939743763346e79744c66465a425a6a456b7a2f4e66514e314459576d467757346e2b4a6c544b5777735138335441772f5646736b48453257336a3563576b48784963653564577843493841786b33357179472b394d6b483651563576642b736557384c42634f5a435a7844392b5344723757784b342f6d394d6457644848746d736e7163746d523154477364564b754f3742656375373239644c334a457171724f6736735055664b4c5978573633367045527251727a6c73755146644b4a712b43443055505572636d6375675056644a7067764e39576161476f6c304871423678476c4471623953717558726c3874334c6a3758716b482f6c5859674143345158576f745753364f334a4e4373543441346669745671576b4e4a427a2f41504a626b52746f512f564e2f63434635766245524b332b74332f754c6a4443507a584e73596a3278516242646c435853616a67726675764d4c5870534e4d444b6e734653786a4c6d5538647672356f4e4e755732464a52457138536e3366704d4e774e646a6f6e7779584c6e4c79614c52747655627476704270794f53444c75665437396a2f6b6a54694b724e4c466c3359656f784c366966775655724f33756c38335163556a4a57324c5275476e46644933624f456f44327a563232685a7379666a3368426e73625569624c7457646c706a7178354c4f4e4d376b5a5a41392f4a64753344554f44664a427a7a4141382b6168674977646c70754d2b706d535867386662464279626b2b67364b342f464d5a6e3033625376522f354c704d6266496655666977526957316167635069735872742f7a4c6c7545664443412b4e542b53446b52706967526d6f416d4341454b4d39454b713762574a3771597477724b526f67302b6d2b6e5866554c6d69335166564c4a6c377a593743317372586c577778474d737966624a5459374f4f77745274573264756f356b712b576f4768393346416b7245514779536d7841564e56624961735371626b7057777a5551566551425850347134594e7754516e4334582b70504b5048383047613746363438456c6d3850436352376436307867576635726d585979733342492b4534494e75347351336473325a5a696a3548697647584c52326c7732352b4c4c6d36396c62763035685976585054687572506e5138634d686d67382f7045757075785679687147656171747962706b745473477979515a4430684c50426c716a4148784b715552324948746c706175533765796d57643335484263474a2b433665327674466b486f664d2b48734658637661427171736b6233515a355a2b33354c5063334c5a6f4d6e7256346d3335593431347256746f366468474966564633375175564966633342474e563643334143334b317966464267684e2b6f7575313664756a4b416a497575465a746b396f785737625238746d7842515a665662597333394f552f6774327a75554a3455566672583953792f413937724a734c783179696345485976337951334a55324c5a4d343675507a566b6743615942573759435533434472435177584c324e34584e563769532f63687564316f6e644277414879565870305443784752356c75314230376374636c644f594379375575487a54585a61512b4c6f4c4262684a3371355664375932706a704145736945316d765067725a48545242795a376563635258395470644a6a58342f75585875474c4f5136714e7354685446426b684f35394a2f3359496e314b566d6c36334a763152722b31564634534c3475684d696651472b54494b7638414972304e7a365a4f35614f6f41772f3977587a353131642f764e4f76613253664b50697a636871345577584c646b457771703271527252484442424d436f454f52525143716e4e484369416f67674367446f69694341714948464641522b6c4236495555633449496345645342523549444a6d71706967794271676d6d744552586b6f31464367684b41786f6f6867674f4b4c315a524446417778514c4b5a7153486367426f6f65616c464851457152356f4870434c2b3942423846737352634c494363317532383474794750464177416476656c387a54574878526b51535770327175567336763455436b366c51596e4258674e677138712f38417151567a48636c63484645304b414251454c70624c656d304e4a3967756239564d457a6c3048636e4f452b674c4c4d4877344d736b62354e4a4c5859474431644263505434466961487353586472355a4c2b483656303763694974452b785354736934346b79446d5173366733444a4a43304a53787a566d3532733439324b727357706a78592b33795164437a74704268466955742b316574773035385666747762592b61305476534d656f4178624e42793469354639664470357059306a307456646a635734584c66534d4f4b3563785567426d39364466736a394b39425a50514268775842394e7446745a46633132355341486167323766416e6e697548367a364b4c386a667455754834727132397a474162425566334f4a654a5a42344b354852467a6a6755414e66617531367859747776655a42744d716d50425a702b6d7a6e445661367544494d646d59684f74514d466a754856496e4a31666573584e756446794a6a2f4d7330716c38304143737862696c41617162356f4c49514154504878632f696b597836765a31472b6c7539423074324e4f34695a4f7a6a334c6674703235596879432b7244754b6231506152674b2f7a6479353279753638716a32716737735a6d557445614c544b774c6236616b4c4673514a52362b31613739385169444b6e48503549434352677a72524337706854466c6a69524e694b71794d4f354271684f356347716a664656334c7339514239697446746d357248646b544e34307951535573356c6b30626b5736533630375461773061376e55547877577a796264794c45653669446737753163667a59555a62626537453763626b784d6e776b5a4c5864394f684c776b6a34686336653075326a5555347851616257366f7869592b35576d3647724f54646935396e58574a6f3334717956317351673269554a66744b53646b45665854394d79737276586d6d4e7734676b6469435862494172397833536458573745497866712f77447a7077376c6b6e637641307554442f48344a724d356b316c542b4b726f4c4a334a524f6d4f3645414d764c4253513363424c7133506d4839506c7350674535336c7755694967396957487146382b4f4d4735494d3037776a4a386c6549573731734e5838456d356c356845355245616472726d543879784c58594f6b2f704f61446f48614f614c502f414736576c6c496573516366635130484f555430726244646265593143352f366779444844597458487357794671576d6e35344a2f50744443594e473471516b4870715a4173656b736139796254713666676e6c3068336f6f77494a47584642524d536b6448367357795733615852743465574c4d784563413738316c6a434a4a4d334d57776a52316f4e79314548544b37442f4148666967756e36707472666a6b52794d4a666b6b6a3678744a5958502f544c386c564b39675937695148386e374533335568457464312f364751586a6432377a537479484373542b78574864614b54684c2f534e512b435462337a4d4f6667717a64674d4e5966394c494c527534546b3052496e6870492b624b324e384878394a35724e353976362b47654c707849546930444759344642734656566533467577486d56676e75414159323641342b33425a514e585552586a6967324866796e4a3763514257737365344a7675756e544c484e5a7531714b75354e6e49795161715a477053734959386c6d326b7455576c69432f6374446b31514e62746a565661664c3039797953735375444775565530493771424552315247636b477355504a4f5737457362674f53634942584a4a4f75503745306951716e634f6761443459666b704935424c515a7545582b6b6f49493954355a4a647a49526a7a4b6d707a536f5665366b4b4134592b3542584b4976586f452f5148393631665457705765794b536d66724e4f4c425741686e6945464e797847595a55574c41675a44427946736d336943707345316669675735614747625930584e47796a47354d4e30792b61366b754876566370444b69444265395059475544307978354c6e4430793775626e6c576a32797969507a3746335a474a63467566742b4378334c6f4a4e6d3134496d756e6a375a6f41646e59395049386f526e6470317a4f7075794b354f2b334e33635430584c686b503059522b61366e32346c487972594558505649317735704a37614551424b72665670396967387663684f7a4d536761696f5059766f486f2f71503332336a636b657550524e75504876586d626d786c4b4a6d597469634b7370365276423658755a5175482b6a4d64545a4e67673976716276564d7a6972593359335969634b7878634c44637648566751676a3679357048357372396e624d49617631456c4c61734d4f70587542515a494d74346170644f53766871616954546d4b444e566564637645693151443676795157547547485150476f386a4d4766654170434e7662356d5a5065554264752f394f3169635a483845476e5858707172584b7865547535343342446c434b73743761594858636b6777657362594749334552574e4a44747a584d595946656b6c4458626c6278476c6555456e6c7170574939346f67736d52465a5a3354507150596b6c4b563657673069456474744c752f6b59575131742b7565414859675461656e53395476734b576f3479354c325549513239754e71324769465874374d4e7662466d32476844343830786c773449444f5445635078566d734d3556636f2b594b4a4c526b33554d63554673384b4b7344462b4365567735717555745344487649655a624d637a6773667032346e506f6e6a423439764e64536474346c6c795462387664386b4853764e4a3559446c6d73786e6f74366a6b66677264335079726657736c38614e7541324a51587836794d71724e763450757965547137616d4e7767696f533775494e365149444d416757646b7a787a3979785772734e7663304552684c445533466264704f55725a427152386c4c3171457935596e46426b5979637a726c795465554e4c657a6c58516a7170534b7668667332737033542b6d45583935775156576654444d69562b6b6677565871507156763036486b574b335433694837655371395439587578426a4b49685470692f5533456e3846784e6a626e657661382b4f4e66626967756c62506c466e4a62552f4e6572394f61653274792f684139793557397345305955446472725a3666755243324c556e6150763979446f5a44696d7430695a46556562456876324b626f4338504a6c344d5a385479515632645735753679546f6966657570434f6b454255575245523078444258476f344943305538565070524d634f6141536f754a2f6b6350364671392b6d546479375569566b33397358374a746355486b62552f4c4f7073316d766b334c375379793473756e4c302b586a4568704869315930584c32636865334d70537a316155485832746d6d4861757474397548442b334a5657625130367331757373794454436b57616967654a3144486b684374492b354543575251434d514455354958514a687541547847724842563349456769502b6c426d48544a682b7858696971632b417068496f4b4e3342386331793962796a494d757465655656787079697859317934494f765a4c4f595972682b71326f32765534794649335144302b373568647a62793142346a416531467a505877495864747547776a4c34494e523374765978387935335231566b764f582b71394b384936415338597574666f3862667156323563336b6a4d776a30682f62424a7672526a506934785156575a786f355a6134615a4d36782b587071314856304147666867673673445853634f4b7468576f77487857434677366170647a756a626a703435524f42516164397668746f4749385a58493949323076557433356c30764350564c6d32437a6d7a633364305174764b636a6e6b7659624861513950732b566238583179346c42716c6345596b797a3967754a36726431776a5a776b5a475568795a644465333478474948366531634335646e4f6370342f696766306a626957374d70355231646b736c334c6b626d334f7547484448334c4c3648746f53747975346d63734d7742677576637478696451484e6b44376263527642734738533878362f364b647566756476384138524c796a2b6b3875533675694669384a323661756e546b633130366d6841624f4f52434435717846634538543738386c36623148307a302f5a6a7a62736278746b2f53596b4172454e78364e474e4c46325a356c766c4a427a374e70716c6d706963566c7558584f6e41344c7454396332673659624f482b6f2f732f4656783964674b77326c6e76446f4f5261746b6c57473244695632492f355075346c6f5274524844545258782f79726461582f414b4a2f33666d6734636f5241564f474b3946482f4a6231796c3233626e624c786b49304a3935576158396c7554714c31742b7868387967356b42455669776569655a30676d523731317062503065564c65356c482b59482f77444a4377657362613374784557723062775036635179446b536b2f5a376c43617677516a4a3642427955424e5642576d43687056516c30416f69436531444846534d304242434a7051596f59397968443449492b5347614c4630427a5166554e753179324a2f716a44347851757463686f7642787a396e53656e5338766137636e4f31624877433336676578427868735975396d344248394d367374467230364148395735356a5a65456642625a574c5a7843625262687751535534576f456e706845563773563548314f354c374365366d65766433425468434c74386858735865396275796c626873376236373530646b633135332f4c7267684f7a744c6668747770787254354242356d6f554569464a5364544564694355524743444f706c7a5141566f69413955427734714d324b4270645068536f746d6f42564248656f554a42716f47474b4c42424d716f4f785245535a414446614c6e70323673395679314f5062456f4d764a484a535162454945494f6c36653573376979634a5739666641672f6d756349757476706c3457397a4533423079654d6e7759686c6e74626135666b316d426d6545616f4e6e7241493363346a3659776a376f425963756861647a7464785a3639784759664f5553736a615454416f434177644279334a514d545442516a4a424a4d3945535878535a6f6f494f534264454e6d6f674471664e47696c475141794a37554d4b496f6c424147577a592b6f3339684a374a594878524f4575306578574b5342716739743666363974393264462f384170585066417638414c3542645756437870773446664e6e58543250726d34325930654f332b696466646d454872393375726533746d3566385036633548677646622f31473576437836596654434f4837555055642f50314737356b2b6b44706a484b495749555148735163684548466c434d6b417145564e54314b6d4b4149734d31454d75614345366c4a4b66464d316149426b677a4b4d6f575145535a51466b46414542354b4e6b6f674379414e6c6d724973536c69324257797a454131795150414332487a5a4e6a3271644a44704c6b376b4d716642425665747445464a74673132504d6a6b6e75584e555761717a676d4a6355494e4548715056626a374f5144474a6b423776594c79756c31314e7a65387a62764c483831797741674c7355616f4f556341515545414a4339582f682b79667a4e3349596630342f69764a4e775830333076616661625331614f494771583878723830477158697854766b566e75544a6a7134666772354855487951534272706c5657426c6d754130617035712b3064596441614653556d4b6e68516b2b6f6345424a3979713345394e6d6373476a4a584843697a62346a37613450344a49504651426862697a302b627270375064547439454d4b3979795735616f687858386b4c4d4362676330507379447448653344414d4834724e6339646a5a4f694d6464782f447a3449376142743232794b312b6e5749543345726869435944786678494f6a744e597467334130735756356c707877556b6d4d6148696768726771796c686330644d6c4a3051585078516b576f554154523856477a2b43426f696945386769394855795141644a544842534d57525155586854556e446148557567354b536a307367454b4b78794658414156566d4b41756968544642336f6768716b6c626a6342684f6f4f536642515651654b4e3764655a354d49794d6f76626c4c41552f59756a365a74376c7563726c2f7853474475797639514274583246497a72326b5975713454302f6967317559734d6972497a4b78655958664631664536756143777877516e3067796569675a334f53536655476b644f585967586337714f79735333453674344f63704c774632396333424d356b794b36667266715233313354476c713330782f4e6363387345444d5641674d55512f63676847616741774761474b4d5973674750616a704246454452486d454368314d6b64536a75674134493661506b674f4b33374b3139784735627a4131443875394267785856394f39564e672b5865726250484a637a437156325165386358496963432b7056536c707175423652366962523869354c2b6e4930354c306438786841334c7030786a6e7a484474515972732b677a4e492b325334473933734c7449502f712f42543148314765396e6c47413849574138454241594b4b4269747469312f3431323950456d4e75506269666745475055554b4b4f334a4b4a5671675941444654735578444b565153505a67687a547866444e4453364169696d70796b4c344a69676a756f63475269775464694374696744376b5345434777514d61347231482b502b6b37626462627a4e7841796b5a5361725543387a61747975796a6268347048534f3965363373783654736a434830773871484f557179504a7355486839784b506d7a467361594f6449786f713468716f436f594b454f674d2b43376e2b4d656e6a64376e7a4a2b433131642b5334547233482b4c625356725a2b614b5475796366797839696739434a356f6e694d6c6e6a636c46784d64347a5469524663523855454d64485750637251635853786d3951685633514e516969783771317267514d52575046317331564c653769714c733843674f786a7073516a6a30342f4e5836616356584174375a425769694467336f6b37716369746f595277566432447a31443952664a585348394d6b5a494b72323346327a6f61735334584639554a7657725768764e4250546d42486a3372753765342f59566e3375794275692f455549367667677a6250652f63575474373444365469666d7650376e6279735330355a46642b377379497645422b4b797a6a356761636168427834324a547757797a7335587065525a385a38584166676c75656f51327336784c356a69765465697830624f4579474d39557965442f73515a7234486f32302f6f42376b2b6e562f4563317a37317252597462437a4a35336e6e646c38617172316a652f6433593237645951773579646458306e595374793832392f77416b6870412f5448682b61437a6336646e7434327259414a36593831546268706a47497a784b5865585050766a4f45512f6572764c306454594434494e6c6b3649796b797132467658646e65376f6c573359474e6e2f414e714e69486c524146637a326f4b7273504d7647527777576d4e77354b755a44366d5453506c677a493849392f746767754d346d544476566f3673566e32385a6558716e5755756f72523452564161736934425352785a4d666967356e7250702f3332326e4436343168326a325a664f5a686e4842665765663756383139633278322b397577496f5a61686c34716f4d64694c7a42587164707434324c674441532b7276586d3968445665694d334339584f49316e2f66376b484c32767174375a786e477a434f6e564c552b4c3459725a36647337313231357a755a536648446d58344c6d3757314735755a327055456954375a55576963664c42477555414b6f4f76482f4837636e6e667561704770775a637937734e726163776b38737457413731694f3875584f6d633546756c73456a426e4c39694274784f48576251476e6732445a726b79785852767a4447496f655842633263584b4251485a57542f534549513675515469667951563879756f4c5176523177344c6c46622f54372b6b6d4d734f61424a327051726b6b446a466c314445534853466e6e61346f4632344962674630725570447069436561353974345562322f61744d4e774f43446f36744e4f39565874325a51614859715a33483661724a63786f55485033546e715532744379733350546a6a77775657326b3074527764304778704f34795668664f717854336254364d4577336b544561685842424c735836797338587248676e75626a584b6c416a47516256676757524c61786968476646567964365a6f4848676761356934566c75394f49717158545134733643373769634f714a497136376e7048713853664a75353045753163457766715530584956487379443364365054584259376b6f6b64666572647075504e3231755a4f49723355577131737863427558615148486c6d55474157674c666d7971423078316353754e36687442637262422f4d387531656776334476357874376150394f3258314e6d6c76375957594f4d66782f5967384c49474a494f50424c517256763567336959724c4775434173585a652b394439486a736257755662733865584a6333304c2f41422f535275647a2f4e474f4f47424b395331616345437963466a79775230774137555363384570715367496a77772f4e56365856685a4b77714548507637535544356c72492b4644616234544f69347a7270736376334c42366836594e78447a4c6654644745754f6144666f4237466e33753338327a4a764541386535592f54642f3576524d316a535846777577447239754b4467374b39715855686430594c6968374e34775030794c44745855745465685163483137307070666332487234674679624d7a4a7548487358756f796a636a6f6b46353731483066793547646a4448546d673567694a486c7853454d6143767755306d314c52494d33465878706c544c4a42534c656b3534712b31304775436652576c507756636f434d71653942707333444556714777564e323535684e65794c4b4d492f74562b3232757336796561437a3032314b4552636b326f64374264557845584f6368525632494367557658415a364f43444c71314e4c7556396f463659724c626749755278576d4553447143423935624d37556f6b505263574a4e713571464267563648454567342b3377586e6f683553474c4676656737566d3547635734726474756b307179383774355374304e4758593230775039515159665772766c32376b7839556f76334c727762514944394d644b355071467358744d43374357717136647367687a792b434452596a584e55626d5a6c63455166446b72376353354d6a544a596f544833456f356f4f6e596b41464a79656f56496b3142696f373530514e4b3554734374326f4456576135497a4969635452625944524642567564754c77664134767758433332342b3174334a595341707a4a58704a466c6a39553245642f596c616f444c777962416f506d42504644735675347354323979566d35535553785656454537464f7a464d79567553435949784e55476f706b676e4a466e51436b6149494737314f5a524a4a716f7a68424764424873527179426356476f3647616246424d5167532b4367554251525232553745634b6f4232714b4b636767696a7632714f4544544241775076515a51714949634b4a68576953714a515163464167374b7830436b6852547451646b4241476130574a44344c4f366530527130385547386a3949376c437843455a6b4f583746614969512f4e426e6e456b597173524c397132616f735935716937634555474f6551344a4353565a646b4a46325654356f43514f4b594d6c4c71506b45444574584e624c4e316730735173384c526e6b34566b4e744c48325a423134626e58583237565964335370702b4b347368637477564537787a51647165356a6a49684b4c3973536f334a6357557955596d6f434430666e7730366950645657526c435a78374156352b47356c436a7132317644437144304d7055455a667850525a6949676c63322f77436f79496149626973387439647541695251642f3736315a4262466c525031567a5450395334506d534f4a554d73796736302f564a334845704552616f69333431556c76384154345759652f76357269363244594b536d54676736317a31547a4b53414e4d566473742f4c5a6b5444732f76433467366c743235476a544a6b48753537617a757259467a716849503746655a33332b4d5374794d3745687078307264364c7668475032387a344636434d7459787871672b5933724679784d693443434567496941597451723656757654374734695263674f35655839512f786b325a61724a36503079516566456e4b61723431526e41774e51683830487474786f6e4454494679764c476372463255596361354c32457a624f42646838313558653254627579634e58464231646a4c70637542376436336269334b51497a584d32563058493038512b444b2b35754a6b73416774454a576f7563633164626d44313832584f4d70334a752b6e4c6936333243783079716736554741597171334858634552686d6a4c6c37676e324c64557a512f774152516277416a4b67706b6c457754556a336f6b4356496e48676766566d6c6c46776b4d4445366867724a4856524269334e737672694b73755a4f6364624751594e6a53766575384654643239693452726847523568427967596b756d456161563054736f4e2f54416a334b6d5779752f546f495159326f78795568527570586661376730614b59624f647573672f59676f765149416f3657474c4e2b5345726b5165716a484f6851684d45676768384d55433362666d52725432344b6d33766f5769624f34485468715631792f626a50714e654b7a37754d626c73314a593845456c36565976395671344e4a2b6c364a592b67615a616f4742624a336455574a7973533642302f4a3856324c4f2b745341314d2f462f67677a52394e7643676c474d56644459655834726d72354c544b3962496f584371763768384379425a33785a365969767a575735636e666544615878356a4e4f596d5a484c7849526c4556776b325a6f67757352414145634666634a48535862327853524230757850416a4253623530515355584c346e735354685273324b57642b4e52717279424a516c63695a4e706d4f656c3047697a426f684d5a367539567a334e7544413937677151684c646e52436c747575583442414c657135313544706a2b3550553457702f7a516f7570617377744452414d41724e54494f64474679512f7743492f77436f786635707051755244474e50657432703143576f6735467956794a65554333765757385243504e64366477415657532f597433496d4c56723855484f32447842656f5a616933657162467332426f694857797a5a416a356c797376674544576f6159366b4c6b34785a346d62725641776c46774b4a7751673563747a5a464a32726b47354b2b33757474394d2f774463747043724f336a4f7368462b78414a474d67347a344b714a41795246727976442b7851427858456f4b6a4c6d704362696d43716b54484370564e75385763444f6944594a6179324575504a565741626b664e4c317757612f633167576262764c7848674670747a4559637679514e637536576a4b7173384a45566d67504e6d72595365394e7670366678515336537844316455374334626b4450384169494b4f366c4b483150796f6c39444f7261526c4c4d7a4b4237704c747a344b67544c7869635a71795a4c75632f436b326f4e7938544c2f414b59376b47714a386e6f49426a2b61776e5a4e4f556f74314579377974557065624d7456576d494743444e354c445356546232356e63426d615a4258794978563042303950616771755733746e6b4b6675584675656d66656267596944646d43376b354d484b74454e45474863677732646e62326f41674333623742614c635444716c6c5658456142555656636e4a6a415a2b4c676732676e533756496456533571325a302b355a62753449357a4e4145447a486d41524f4178567352685767566359793067653378566d753378464f3941544f474d59764a4e457a5041414a34796a4c416f6f464f434a6a564279324e455975656f6f4a454e6a775867347a4e7941694d4b31373137696374416c504152432b6477334974694d654869393644644d78416a4559767039754b37336f304a6257784b33646f54497959562b53352f70514275584e31355a6d784559636a375a727447594f4c343845463963363570694e4f53716a505651494334314a5976306f444f33716a7142596a4e4a4736634a654a5045353468306b7572716a2b3942627230304f504e56616a4670424c496c712b78533049785158536c3030584d76786a71633472586a5172506369677a657558764c73776a6e4e71636b643953335a4759695a6e767757623175496e663239764d674139693037364c79594449526f67753252366d6c6a693374677264354553367550344b765a524a784f4665316174364a47496b4f43444461754553307959676a766f72355671466d4d644c545a316f4f346a435055376e6767797a6c6f494d6a5432433565393356372f6a3136495a526837664e624962694e326479366151677744724a636839774e55786d67354a695338705058697653656b37587974734a6e473435505a6773473774784e6f5169426a466c364345504c6845522b6b526a3273677a3362645934344a4c5544626d345037316f6e45595054385570747467673032415a53415044344c48747238373979563065463269465a4b597432356b666f4b585a52387141746a4559766b6669673645496d4c4b2b46774d785034716d324a5a6857694d546a2b346f4c59544d71436e465079697139576d6a565347354948423046797a582b415678756871672b37425a4e7a76626476716b353068325163483172647874577a43482f4a5078636f2f7458463949482f6c5248464c76626b7431656c644e42493035444a6454304430393548637a776a3077356f4f37624d66704442364c5742704c596c564e69593466536561736a636248464266474f593969695930624a534265704b637859494671413068524e4961683263457a55716b656e4e426775784d54696d67584330584f71697a44704f6b4942636f4b4c6733346a79355146526a46643636576a67754a666f64424a4c6a33494f7073356b776a45343453376c6a2f77416d673971334d5a46766572646a492b57487872565865717838793362686c4a34746b374f2f6367387273346e6279314467307539647a643235457849485357584f75776a43665434683776697535456630346d4664516430484c753248445a2b354a4553464b4e7a585476574365336d7373374e575155546e70696451422b4874565959324c323575655841417949316376666746305a32664d6b57442f6d744e6f783232337551742b50544b5576636731656944625273505936702f575a654b4a3464697576376f573843356e5376344c7a2f6f46377970336937447935533778677432784572327265334254773268325a6f4776526c636c6f7058786436726a744263506b35636333576b68704751505561725874624f676559507951614e70594669476b5a7132394e734f4656524b393763465835756d54352f4e4254755a414e4e6e72376c31595346794f71485645686375566957346142416948385332546b5245526a6c386b47695675336667597a41306e3472792f716e6f567a62766432765862786c484d4c763262706b476b744554355a2b5449506e5768386365614d694f583756366e31537a73746d504f7562627a4e5a3670436368586d755662395432467336726530416b503158444965356b48496e4b4a6a6b6c305247456775374c316e7a496b5332316a5351634973666d702f664e7464614a3256736a2b4573662f61673430423562766d79747467345973756e5063656b626b6a7a4c647a627a34787150782b51566c72303759586939726567667a78592f774471495163714551354d3270324c4664597a4a79586f4e353650397674376d34686574334c597a6a692f436c4f3565646745427877536f6b474f4342487651466b47554e43366c4d5367687051494d6d7a516c7a51514652326f56477a55784b434f46435755474c49554344366636654e65797345592b56442f414e6f5631727036566c39436d5a2b6e325a667774376979303336415334494c577179684c66676b737a654c48454958377732397564302b47416c496a6979444274774e31366a63756d734c455261682f4d66463773463472317264666362793963422b72534f794e417659374b523250706b39795431796a4b38357a6c4c772f67766e78346f4a52446d6a4530514264424b736d6f6679537146304461766768696f334241785154556736664446446d674c494d6f454d55444f33553956394e74626956323161755370726847564f612b5936546976632b69337864324e737634486766627351644b39626a63443349516c2f4e4631583970743359324c662b785035672b6c417934494d647a3062593344714e6e5333364374573173573972623875794e4d5277784a356c4e72644b5333506b677468666b425134392f7a5758632b6c625865427077416c2b753351392f464f446c6b6e464764423554314c2f48703747334c63526c475673643071305843774b395a2f6c65373077743755487866315a2f6746354d5651516f52354b4d366942703855744d6b5548514371596363304d616f675a5a49414a4d6a52305847574b445a6f426b6952467159715648596f51485a414d455458425171416f492f465242323755576274515251383141586f6a45444e414872676f47524143556d7143484254425148676a497579414556554645564d614942526b516a37464c5149435278554b495a517567424b6734715643474e5544516c714e4d537568597350327242416745534f415856747a3132684a394e66676757634975375949455275525a4e4a7a57537269656e534866323973554649746b552f6371764c6a6a4a583359357250495a346f4c4c39335644546b73744d6b5a346f5a7367685577434252384b445a365274667574336174476f4d75727346543846394e6b513638562f683232387a637a76482f707862766c2b7831374b544242535153346b6a7472676c44546e46566e3234704e666c7a312b3942736c77434f334e43436a694e5953734f784261613046456b6d387976424f4b4b7536644d67677459726e657458664c3273674d5a644b364f4e467776555a6a647a6c4165434854332f414c45484a62524563475168646a46684650753279474335304a456e67673942626c51434163304565334a64725a37663765316f7a786b56792f53374a4e794941704561767958646c55555149617034344a4d38464959494b62767953514237666d72623067326b4a48707234305157785452475a78535056504544532b53426957555079536d56564a467a584241515854344a5132534b425a3830432b6a6d6d6d324255496f4543784254794c424a48356f75676b3555356c4a416e4a516b6b365432717752376b454264435254344b6b347536444236785a313268647a746c2b374e636d4772734258704c39767a59547435454d764f576455414848564870503841706f6765426e6a52616f526b326c316e67785a736c705944765151507a2f6175623637752f7464754944783358667358527554686167626c366b4269612f6776472b73623737362f72694e4d4d496a6b6777695878556c5271714371684b41444e3054554945386b5155417137496a6967417042424178784b67554e46427a51456e334b5971636967515079515145753630374c646e62583458514b41344c4f32522f636f3734494f6a363374687439796448676d504d6965527175595633397844373730323366486a73487935646d5334517851414d744f34333133633234516e4c706747412f4e5a633078346f4161714165394275434e45416b4f425861336c767950546245526a636c4b34666b506775545a742b5a4f4d49314a4941626975782f6c456f6a64437a436b624d495143446964696a674b4f4456454454556f494f4f61554f3945545652784a675541504a45466b416953794343544943686f69416671557a515155716d6669704846415266707a51547353687355783459494f677374334a577043354173596e5647584d4c547666553978766950754a6168476f486173514e6346435837454569347167546d6f2b515852394a394d6e366a6638414b6957694b794b44485a7453767a454968354666554e74612b327451736a434d5248744b7a2b6e2b6c626230384e5a485566714f4b3234422b61435a5651694772483969634d41684a6a56425759506a696c6d5336744d644a6f46584b4f736c4176504e5a4a54426b4158385939766374456977593846784e76664633666d30634166697a494f383961342f67726d6f71496d745663354f4753444c4f4c784d6d774b65304f6c736b38514d75616b656e443234494f64436b6d37364c5a41366f747748775754775844715771335042386b4176396c46684e694e7736766775705071647852632f613239514d35476e3755484e336e706b64374b486d644f6e482b5833496237666d3659374b773862514145757a6775317534613445572f457a41357575665a3265695a6c695741506167665962434733414d427a572b3964467545736a38304c624d4968553732594f6d3333396944485a746d55584b3074496741356b44336f516238465a5969626b78774665306f4c397a57476c4e4350477054626e78386b4445696879515a70504f34782b6a6771626d344636364c4d4d756f747748375654764e3339764f34394848663764367039505058722b707450785164754d7a6b6d6a6464394e51466b4d79586848412f557262557051476d3247346c732b504e427269645855553158352f4e5577316c784c686b727753476667674839544a6c7a7657505437572f736b584b5469444b4d68795856474c4d6c75516a4d485668583349506d6e70635362687a306831365751637979476c31796476745a656e3732647564417830797949795857684a79545044524a325165596e7544627553456671566436354b5643584353384435686f6b6c726a6967454a794237465a432b32476172384f4b55447071673069397144716b6c36497748755549597567516e5454336f7877344a70594b746b426f694a6d42374547594f556f484a4236477a6546793238506370346733745663577875703261787747533655505649536f5270505a306f4a6f304f795331412b4b6f433351742b614f6a53582f696a386e567364726370456a50356f4d3859763451367033416a6236356539644d32593765477535307839376a4665643332372b346b644649447778515a376b35544c6c435574474357494a4b6163546d6755737a356f4644464d6765333153666772424b6e5669713452566b67425642554139564968354951715372517a4d67505248697045454149784565384b34535a6e716747724b53667a4e417156584d4d73383545314b44752b6c37366475344946764b6b576158302f763731365063536e764a6558487074523855654a37654139793848746a2f414649475a6f4a524b2b6978417869663467676b54477a485247675850333236454c4e795978303950616e767a625679584b33554c323536497861427a7a5165566c49794a6b5636722f48665337666c78336c3674656b4c7a4632314b314d3235436f4f612b683748612f62376146765054586b635547794e794456504a6b3073717250477749485545534455684262534e43614b56795665706730716857513073343933424173695a643641366f3655386f4d565553786267676533634d656b72563272446374394f734b3278643152424743446a657357507372304e2f61476258426c4a6476627a6a6368456a777344373156753750334f336e627863555850384151372b72626d334c4732644a3473677039516a3565386b53635136304365534872646a56474637366f6e53564c62652f503234494e566c2b78507549754e655946564c6341657a385662626747306e34494f664f7862334e5a78442f4149354c4d665459347771745776797270686b363159686b48452b776c48494a66744a35746775744e34476c566d6e646d2f68373047654730426c313971744f6b447047436a544f4e45664c4a6f67767475496d5a78584f67544f55353979365632586c327a32555849324d684c61755457524a4b4332316851344c564536547056466f6c3347484261494e4b4f71574b433848564d78795a634157764c767a34535075507a5862692b6268316b334e754975476678515a4a51415a6c737358486f55756c7766337062564a6166715157337575682f63744f336d3067566c6b577067797474554a6a694f4b433247366a356d6b5a653671703274775864314f58365748376c6d74776a35307035474c492b6a7963335a456451396767366b62706c314b347a365866386c6b3234496930712f4a4e4976495239364454616a58564c354c6441734f6177526e704c596f6a6448777365336767335935706f6e4e5934584e654375684a427866386d39482b38742f6357522f56686a2f4142522f5976426b5a484666585766466362662f414f50625864764e74457631527037386b487a7447516169374f2f2f414d61335730477549387932484a4d63687a58464c346345456f617141494a6743676b68785277536d6f55714545374641654b687755656e616768795237636c475a517864424542524873516269676d435079556b48436c55414a70676f6f61715056304577514e56436d6c564147344b4938736b485154745541434d734f534743435078527a557935494f674b4450696f6355787056414b4b455a6f596f38454154426e6443416370784269673251426977537a6c314676447a566d6d69726c31446e78514b48636d574344464f614271704a584d67485156534430565a414646645042365556504e30456a47764662647436664f2b31433350425a6f5852624b316a314967615a44702f63673663646f49773045436d6172307862546a774b792f334b4a41424875557437344568385547686f45724676646e3545756a44784c564b39626a486a3272585054754c596d32415a42357a5332616d6e50384161746534327a50494c504b47517a795156475430795266696e6a5a4a4645304c4d6a6a3742416a507854526732537568594a37716f3659327858464257496a4570483155696a66754f797064766d674a5265722f414c45726c537246304638445842614977594d33375669453279567374784d7379446f364a776b47392b61362b7839546b5a4333647779586d596275524b75473445716a4642377931504e79526b7454786d4e44652f6d75443650766865742b584e332b415856457a6e32494f4a7639725a4e79554759342f74584e2b78506e362f6f775776314864536a764a53426654306f2f65445271373845485473543879436f3958394f6c66744339444543764e5a494337626d4a426d4f58347276374b3735304e4a3667666242423550302b3459485263446c64417a6753346f55767158702f32397a7a34696a3143704669557076692f743730426347693162654d376b6e44553934536552475068557352307a3152385259456f4f784b62312f5936724731747a365a78456e7a6b55542f414d66503471676d4f34724833494e5939507452777457366331636472454553466d76384d6d2f46637777415936574934302f4650456c7147556635545242744c784867755237332f4657655a35513169547735724b446368574e79512f6d366c64432f656a48724d5a397a494c3765377458762b4d31576734726a33626867664d5952483148503979364e6935356a63514f3142704e6662696b4e4f704d537032344945457a6d724b6856524665583071317a6b6757555953636d4950636b4e6d4836592b35576b6849526d6771386d334c43456166776f54326c6d355356754b73456e484a516b356f4d63746a743545776c47673455644a4430625a677549794234366a2b61314e5769755a6b474d656c3263415a4f50346b6b2f52375a44617074322f7358516a5245557167354d76536f4146727336307957757a734e74626a5346654d75724257674455547a5633686f677933505464744d764b44354d354139775378394e3273534e4e71507a4b3154346c41305147445270414d50636d67584a4b556c476a6471416b4f61696f52634b71396674326f764d7350697159627354724333636b4f4c615238575161717948424542636d35362f5a74794d4462754f43783651634f39566e2f493976482f414b56332f61502f414d70423270644953616e78584a6c2f6b4e732b477a636c334b6d66726b704d42595a2f31536246423139624670597169516c4a394b7978337479645a51694737315a397a787a2f41456f4e6471787047475065726f32324c344c4c62334e755171444572584142756d6f51457a627770487554444e705476706f63314352586d676f6c6175537a53546a646a545566334c5667374b71557967703833635172535877532b6472365a5261537631754f706c58634150683852516337314c636662327965496f7562744c2b69324979664633354c502f6b57344d397847324434497848656d3274767a4c627a7062424e4d797944726250564b4a755344612f434f533058357352444a6c58596c3075615559636d556b616d346633494e4e6b787479456a6856316e3948755375526e632f58636c7050454c5076747835466e4871754667746d77734778596743342f616771332f414675592b7a702f51322b302f77425567732b386d515a4f7a4372713330534a4f7a46486563304462676d42597162454e433550395a48746d714e37502b6e4f5a78306c5757694c65316a496d706a475576636775327477794d6e7133775775354668526376302f564a7966726c7158557573616f4d552b6c327a576d412f707571784c725672533074782b6674326f46745263386b306a7050746d6d306d3341755853613642753941544a6f395757617073645574636c56757272514d49697078556e754c653268726e534c595055736732334e78626a487a5a59446973466d2f35684e776433494c6d7873332f56626775334f6d7a48365633596265464f7232434252614570504f5250384f533151307744516933596c6a47324337386b3834416b6161393641362f696c2b357469686b78546932526b6d6c4544327a51566663326942316644396963583445644b5678584230774661666d67342f38416b5737473332556f2f56634f6a757a5867376473334b5178344c732f354c762f414c726465564477572b6b647566354c702b68656b47332f4146726f3632365277422f4642315054624d3974746f57744756657170504839693067673478592f785a4c544341637572783142705651632b56735a4b7339464a4c644f7a4565484656454f644a46554759637366636a4b496658564c4b476d716f6e4f5565723655447a345069566b733368357372516434355a725641526e49474e584e56352f6162694a334632384b6b794943447669664f6e743731584d597658682b6170684f6a6a444e4d4a4239506379444c7649617656724d47665445486974742b426235716d3347552f554c397756304345492f4261726f623971426474467934576a63482b6d7a35717532474f6f646961393157577a434448795a5a4e30574269426a6756663452565a376b6455332f63677a503043326336717a53584a6a2b774b36647470564753425a74434450442b707572567557424f727430727542752f4875344c6a2b6e52483357747a307866754b37555931783665484e4252646948314d6b4d794b4c52636954487057554f5769546d36444e76727874572b6973733174394f7343335a47727850716c326c633364336847394144444753376531322f54716e514e37304634384f6c5043326357545144485441456a736f7254627552776a487650374546635979626d6943515062344a784337776a37304a61686950696770494a774a697564754c4f346b357561664c503150577136386f65594747533839754c47726461683441484177727a516333636241796e704261724c304d4c666b786a5a4136594d78474b7832434a536569315377427741514c7537312b7a4d43773150464757425663665554476258624a45754d4b71626d34525563465a616c727436626c4b75473465315547363375724d347655552b705878303351396f676b65356379355a74784c342f46566d5549304149656e4242316f7a6e6e48544c34464a623346752f4d32734c6b664645384f5837466d47366c41385973503371363574374f3862365a78724759385139754341796944302b7a725063494237305a58376c69576a63426e2b754f425754633350366b6258456c6b47792b4a53746d543078433839644d6a633076526567466250617542764b546c797751625054716a484d732f7741317433736f6a794e56415a79422f7742724c4236633447444438437433724d54486161342b4b456f7a48765a42797655396c395844347256366463384e6d5744616f666b567438794f346978486947706c79774e4e774349314e674f4251644b516376514a532f31565a5533726b6f316959672f70492f6173312f38416a6d3331556f6732547344473750524878596a4473574b2f63737a684c6237547166706e4f57486375665a3259336c79684f6a3670536c55726f537578326c71635253495053416734396d786474796c746f30316e713741752b5a364932374d476141623831677343553579755a797a3756304e74745a5870504e684565386f44746f6135387578625a54707061676f6a4b634c59497948425a705848777764424a45355a717757645262426b51344930696e4469726f676954796f45466d336a47493146504b4f75546e444a534d57444a774a5030356f45384a6f476f6b6c626935315971364d4750465451596d75614450647351763235324a426f3342586b654b38414966535467766f46324a6c4d42786a77586b375733394d424d72312b55736157344d666936446c475769677856634865693631367a36535342617533522f464b4c2f6b5530765364724f746a64327a2f774455364548494654326c5768754874376331306f65686d34644e75395a3772694e7a2f48392f62424a7461782f444b4a663855484b6b5267717344514b362f6275574a364c6b544766435646523249494144676745355367494a32496c77587943563063613549494d457546557a63564256424551546d67706c58397141796a6b6c5a6c416f584344364836426545646a596763784b7558694b365a6c456b7869596b6a7844672f4867755036444533665472635142496454366a2f455664764c4e754d44447173417872706a306b3442794d55472b464a674842632f3179666d573462614f4e2b596a783659735356757336703278435a36744d6539594e744b6537337479636d2f6f52387550445566456677515a2f77444b39774c4f79687434663951674e2f4447767a5a654764785665672f7976636139344c5756754d5939357156353831775151715a6f67754543676a7568565454525474514679614651477248425478494949464b69714e57554264414779524b6a6173454179434754344c75656b6276797255345a43516b754c55417132336338734f45487237652b36614231646233496b4844676865536a76575851746238753258536739444736595543627a734e586575645933634a426a346a7856786e4556427751616a65426f2f754b676d6347786f734a4663482b6172334638625742756e4c77397144692b7633664d336b38656c6f6637614c6c354a726c303370536e4c456c30756c414e4c597159493563564355454b42554f4b4a7167564552617150616855494951796e6370326436684e63554255414a51597336494c6a46414d30535269677a6f784341476f6433554155524c494a3831425149596f4948422b4b4341346f6e694545456b4647795246653141437855316163456343796a7555452f464642386b43616f49484e416970564144336f4379484a453055634949414165533647306b4e4c506b73447264613274696476575a455339736b476f6d55612f7035594a534e565269567a37316d4d4830794a39753143457a453475454639346b466c6e4f44712f7a59745255546a5467677149434a6b63536c426646516355425a454b59424c714b4433502b49576447316c636173352f4350375858656b7835724a364a59386a5a575966773676384164316669746b68336f4d31304d6661697045334448503237467075774f716a716955434b6f4e4f336d3950597136516673574b7a5053584f4b3254346f42436f425358704f416542526a536a4a7235486c7649345a6f4b623234614650456667467a35514647372b616f7633695455344c4639795948694772326f4776422b6c593976596c64767868615a367637594b2b63684b6f785864394932707451383659426c5034494e6d333230624542484574587457724b6972456e6f45384b684247536a675647627355384e45464630673950734576305556557964524563485476687051587741425670646b67356f6c7338733045666b6d41624a596655664e4e72545945693536764c6b424952354c6d33743136685a7469335a743348774d3767316e387665673946456f414c675139583356743764794f71344377364348375337424a48317137423558663165434e43332b723845486f547a54536f7552623964735363586f7974734831532f59756c627678334673584c5a6542712f4c76514d2f314948724c594d7047683973465464426e4e7544494c507166454b304649614a6f696a6345426c56566d68716e6b5743723148455a6f4742416f4635376444796239324a77654d76666976514f4f4b34337139762b734a41596a53656561424c4d6346634766344c4c43673651374b794e7a4a41337146694e2f61586f6d6e3950562f747176412f4a65333959766a62374b64657535306a73646549464545626a524552373048617675552b4b417363636b70775a45346f4542424879524151556655676255675355305131454347356f4146496b505646364a547a5152716b4a674e52645467554b41385548632f782b35356b376d306b656d3748346a396934392b7a4c62334a5735654b4a62334b3761626a37652f627666706b4e585a6d75682f6b4e6d506e78767770473745545163596c2b78416f42485545454f4a555549656f554a7a34494f6e364459463766576f6e434a312f37612f4e5a76554c7633473475585439556956302f51497874574e3175353030573945542f465032413731776d514e70525a7a7753784c4f6853534268564b4b4975794438554531444842516851386c4d4b49412f46476a6f6a676c4b41344b596971476268486b55454b68726770454251315151422b7842474e464b59494a673639622f68746b2f77425735394e493936386a697670586f4f7a2b30326475426f5a44584c744b446f5735505230326c6b4177384b4930344241415644465238434d31584b636f5037664e413871704a53594e6a3271527578754d39443763555a6d49477249494d4f3776783238444f575834594c7a6e2b50543836394b6376455a616a325a712f77447950656162635952786e6a7943792f3432487558446870683855487164626b76376c7474736155574233344c525938656b5947714330304a4151594e772f596d4d4b7371692f696c7851633634777539575a637256616331476179376b6a5645447357697a55426b467a3644564a73424557414a6330307a70426d2b437232456d735733345a633351615a38466e6e4635474d5864586d6f566342516b484e4138494d57584c755331584a443659596331307273774f724e63306a72666955466b415045744f304551355765322b64575736324247325161505642564b476f73374a353232633468564f3578566a394e45486d2f584967533138524b50666b6d395075644d59356b4230505871676341546d73487046307975364a634f48424236654d664d4f694f58426259644930786f736c695968442b492b775775505558795157777146594a3162755149444b6964677a3668497555476f50696a47524a717149527577784e466243526469677a6276593264344e4d343957556c357263512b3061453647722f414c563746654f2f79635849546a72384d766d6734555a5167536343652b71573764316479724c5343516371567751566b48454f6f595a4a6a69347038304e56487a51534749644e6f644972644a4f4761425a51657171494f6131576f505255336f615a494b6c6674747435397a7933597171537432397a7937676b537a4642555159534d5a596843526f79366672466b613458342b4735462b3859726c6c6b4244787146625a334679312f787949564f474b44494f687674354b3947454158416a3856677854664651416f4c3764516c6e494d744549434d5154775765374f4d69644f43436b6759597152443471416e4e50453855424279344a726e6752675065704d6b2f735156434e56623234634657426d566262674234716f4c59615759652f4e416d4741345637554e546451564579525641356b537a594a4a44486a797753766d63306f7735494c5a55376c3762304b2b643574426c4b4a30466546356c656b2f7741566d497a75787255443368423653646b523854464a4b4a30764844426154774f436f75514e593449504d656f624d584e39624f6b365a366458646a384637516d49703755584e7357424b397147512f46317674436e4176696759537271396d533651376c534f4c46526e79514a696358526852796962516b6f6263686a68386b46734f72464359425663446f713676466142426d67432b6e6b715947567535706678425833597364584255336f4766554d596f4873534f73784e5032726b37442b6a7662317355343936327a7643784a6e724a5a5a5039354b59384d3950775164446657684f77527772376c6e32707a78344c664d4355476b504573304c4a74793661494c69484468565333476e7034712b4a48426375394c2b6f515467554465716e54624734676344314e6d466274743371624d63315a35583346695673734b485432727a2b78766d44327a6a452b7851656e4a42534741345a4c505933414c524c5657695242515630373049416469736c685441704845515751632f7742547541574a484e5a4e73526232734a5444435262327a56507245705368356554713932743763592f6d79432b33624c39713169677173396d3234716331716d644547443971437555364f632b3543345263746e6b734734764533474e4752735842574a715367734e4a6359385563432f483278566b34386543562f4c4f66636746794e45396a703673565841416d716f6a6346747a50705150636b7a694b6d776c704e78384a6855786e724f6c362b356c64747870747951624c4a4f48376c727477665552374d756462756d456846713572705369775966755156435a384d616c316f686261702f596c7478366e54677866483971432b50557249557171424b4135496965664842426635776a3249473451714e625a71794544336f4e45656f615638753953327732753575327630794c646d532b6f7864654d2f797a30366362673363423045615a647144792b54715931556c67686a696749356f47744552516f59596f49554d457a684148346f49416d48344943754b68476d694255337a514e455167443155554e564467676a74524846426c41454241636852526c484951413456525042515a71564b414934714e78557751446b7079524b434136534d454d4864515a68516f497a69695042314277436b6d5151485434553575464b4b636b3573797a47495162434e585652736b6d5645624a794b68757847415141794a53694a59354a5a58434b43716b784a30465a6c6971745471793541765656786767684c7159304b6e78436a75676d46464a437242446b6e62446d67756d4e4e6b4e695673394a334942386d35534d714c4e7677497a45492f544541724b354743447533346753495743656d50412b3377575133357a476b6c5675673147376f536e6330594b6838696c64426448634546776c383255735657694139636b424d716c30744370704b6d43434e7778556569676f6f4f314161456330412b49525a314144686736425754436961413470674148634d6733374c64797448564845306b425146656b6e3674447964544553412f55395635434c50337252624f7142623936437737677a6b5a6d7369666370716c705a2b6e465652745a6c305770707934633048716239727a4f726e6b6a73495474484a754f6130794c4e705432724e79343038492f464132364d627473323266767a586d507644743579747a414268536a7356367135616766475679643336546233492f706a545036554462655976444c75563059395754664a656274656274726d6d52494939785861324e32567934436343506567333369593141584b766266553074586c7935484e6465356145354e4d482f4145716630374855504c676634366c42793756336577415a72772f696974467265544c2b5a743773542f444677746e33686b662f414c6c682f4461663471794f36746e785835482f414545666767716a716d4b416a6b724e5a4161594c492f305a564632364f6673455961685747346c2f71692f34494b72756b524a34397970326534752b5a4952446e44535675724964576d58453866775849762b5459334d764d65756d58544c397144756e6358514f7131513843717a767445535a32356a75584f6866326c7743497558512f38414555303578302f30743251582b757445473648714f326d57425a6249584954724167726d374d7a6e68647458477a3073746c79794a6e7174507a6a4a76795161644e464344704943356b72566b644a74584f337150346f61625166543530472f686b67364742716f5177706d756362676a2f31376b66356f666d466a6e7661394f39446e6a6151646b654b71746f334965334e63617a75747a4b6b4c7471362b63756c766974303775376948657a3735494e4a786356537a35594c4a352b376247782f766c2b53712b353342724b56674e2f4d667951644341494f6c574d346f56796f3771636e2f41504c74687545667a4b5765354648336e756848386b4856643848553045314b343070786c583771374c2b534c66676870745a7a334575365835494f314c48745358623862494e79355152784b3446794f326d64553437682b4d6e6f71356d56316f43354c79686a43547566656731323767757a2b347661716d67417048677457757a51796c63503664547373494d625864687751454a58434d5a637543446b586749585a787a4d7048336c58517552694f4b473774694e37534b2b3243797a4570394d454630393678307742666739466674624677663174784a3379564e6931416c6e373831316263773742695167614734315546736e4a5752743342466a48536a475a4c565a7543305236673551474945596950424e4161547167536a4165396c4a54387350772b4b44565976787550475749785670414964364c67376a666551664d77697548366c2f6b74336478387579504c686e577051656a3333722b7a3257666d585030787937546775582f77446a43776362456832542f59764a66696c4e4b495063772f796a5a5470507a495078715067585766662f414f53576263644f31363566725a674f3472794948464c7143445643345a58504e6e695456646661623061644536682b3963434d6c747379452f44516f5059574e3559755249314f3942484e5a35663139774c4d53444750585032354c6c3239314462784d7a342f70623952347638416775707339744c61626656502f6b7566314a7937636b4750635844764e374745667070463846364b51613241474466504e63483036496e656c646c6a39503572756b734166656735653848394f516a5769312b676b6a5a41594f5a4c4a7550714f4332656c572f2f414252455a452b7751553737776d48476946363239754d4a6a32436d3865653562694d45383542744c55514461454f476668324c66756e7a7769754c5975534639673774554c6f33726b6d3574376b427378426b3831706b7a7375664b64516373347078644547644272765847706b7339793477315945705a33342b4b526f736b796477514c554359385a55413936436d3975444f6c6f504b5a59646e346436366366543752496e65674a7a624f7264324347307357397631545933442b6e4a617a496776474c2f414d3145466c734444355239736b35684542564335656e394d616533424e474e79565a426b42466d335078524875565537467334783931466349796657614d6d63476d576144503545526e496636767a5673594d507a7169644a536e467a6767685a5a642f766873724a756b646545655a4b3034484663572b667537776b375246424834494f5a3650365a356b7675626f366961666d7657576f365146525a73696a466249476c5544434a6c324a36674a514748596947515152616e7336724d5250785971312f657178556345475578306e536564566b764e62664e6270395643754836723670485a77616b7273685350366561444a764c2f77426d5a54684a37636f394d65422f426344623369376331586633567a635331584a4f71344167684231596279656c69496764372b7a4c712b6c69637575346148717777415845745331554b376d73573976634f44514d593971437a304f59334e7a635848724f663572717a736d702b6138332f6a467a544b344457676f7656524855777a434450417357393657395379536d4d53394654754b37573831535077717944444f57442f7654524234647154557849474e46554c676a306e7442516143644e4373354a414f44563756564f393567384c6f5265576d4a3933456f4f683666623069556a69666b747573524c4c48446f444e6770357069536731537555726773517564665437443856564f2f49557755734668496e732f616778336f47397672567352716450754f507758734c466a53786c55383846786651747362313665386c34662b4f44384d31364552306f476a797743505a56455262424c6d7943533979443052642f656c4a3979444e6474476358464a436f3455586c76584e7a4b34497968533461454433664e65747749504e6549387379333568674c5a6c37716e356f4f7a74375174526a6b41492b2f45725353414b64337477534471464d66637055477553436d2f494551456e7271314563317167624d532f6d55357248664f6f5170676a5062527641506c6c6b6737646b5735686f344f6d4671426c56634c6247653175434e664c6c546c376c7275337057726e6d41754851627232304236674770785747586d324143443166417272516e72694a4f3449644363424b4c5341515934586f627532524f4c63522b53344f384437793343544e626a356e76585a76324a5735616f6e70354c6c656f774a7643386143555978486367366469516a41527841444f764f62796c346a6834563139764e325044344c67372b3452646c374d2f77434b4473656d5035576f6c2f69756e766f6d657a6c434f4a447246364f5a6a61694d674d614e7758556c2f7741656e6a696779626168424745612f677554743757766547324348485775397449474a70786f7548642f70657369414f4a6a48744243447553323975355948673835764731567778746a764c756962693162365a66784868324c747a6b4945386c6a735849784a42786b6458655546384c656d4979486845636d56554c5775577565414e4935557a5630704751556e485342707a5144534771454a584e4561344b59683566376c78622b362b356e70742b422f6579433657346e754a644473746531742b59326636754b7032396a514b414c7177635244596375614142346449777956786b4c556463315663757774395573506b756644646e635844586f5046427673794d7036736a6774635131537363496741484e47563478364941794b44634a694163344e565554334d4c6e2f48336c5a596265647a727579635a44383162356567555143396341307a7039523977587a2b455744386c376a647a4169424967556c48556374594e635065764e5866525245644f3473462f343251636a453155646c306a36524c515a6564596c77613758346f5139443374324a4d494355654d5a7850346f4f63433941724958357772436368325356397a307664574b334c5577422f445433724c4b45726549493975614237747956325a6e634a6c492f55616e7656654a6f672b5955444371416878696f34415171506b6f41324b4350714b69684c71646943594b434b6a4b4173454541314b4f79496f6f4b687767566a696f785a514a714950552f3474746257367433505044364e4f6b366947642b4859753162754e6474697a636c4f7a4c7a4a7a387a717048426e717a72682f77434b7a755770585947305a6a704d755869794b37312f627a33486d53733947714173773130455838564546392f66327472447a376879634e3958494c6e2b6837797847325263755246325570584c676c5370345a4663692f73644e327a59684f636f6d656b6e494d324842646a31655a733765354f454c656b4275754e613044635367385476723533562b35645031534d754e437336446f746d6741446f71596d7167353151425146512f4e4e55686b4163697168424b5771595351516f6165356b3158446f444d494267574b6c5a4252717155484a42416d5949426a6969784b43537954526d5171333979497267673151334a43364676665a454f754b7a3152684d784b4430316e635055535a6358314c64486354703449304835716b376d6255474b7a6b75674e63464e495242667455434256445247705135684241697a3151484648556744383046506b6d4647514b4b49346f736f6355454f436c45477a51664e41666d6a696f464d55424c7055525651783449464165694f434c55554645415852394e394733487152506b67434d66464b52615074374663397543396236442f6b4730325731466d384447635354534c366e723738713841673835752f54372b3075797458596e554f716c51334873564675314b354c524145794f455969713933735a6e3132557478647074682f546a612f55525635652b673970597a62394a32562b3545794e7135412b4b4d705058466d66765165517557355735614c67496b50706c51684951576464503175395a76626a5859754737485448716c6a38672f65755779417331554b42487455356f414f534f47436a566441686736416831436869564b5a6f44514c545a47714b79694c71793367576f6773756a4a5575786f7267374e4975716d72306f464c706e656b6b764a42424e4b4f4277514a716f4b5949413478562b337379763359576f347a6c47507656644631503864732b647637596c674f762f6255664642394445644930436d6b664a53496f6e6d51394b6c4a45494b376b644b70703731746c463830766c6f4d5537654a46614d744732754363644f617446734161536b6c614436685168416d6a54496a4a592f554c786c487978326c6139336469494f545663573563314855676f757a476c6f34725045474e54696e6d2b484e566957575a51614c47332b344d62663670744b6d517156366d5a4557344c6b2b6b3244724e303542753872735841364248315a4a3446315245766867726f356345426b483971705a4d4b4a7046673477564e2b5851534f43436d52474f50354a6f744956343053423159477079515857384658633067312f63724966424a653442414441536759676b633434716b374f6353544739504436712f677249644972697243546b677a7973376d4a45684d544844542b4b53636272367057524c334c65314f4a516b7a55516358623750626d5a6a4b784b4a6c58555134343079586368415734434d63414658436464494b756c6767534e617041786b56594d5655432f63674d685771736966314b74744a3430376c495161736b4458575061465643546e4e504974696b3036634b49476a7a7757543157324c6c70786b56734f4c4f71397a623832334b4978616751634f3334577a562b6b6d55653155524439533157414231537741316535423548316e646566664e7356684278466378674d565a644f7535493879717855494334787a51474e4644543855476f674e57706b6f334654554469676665676a68485146447977516269674f46436f65534859677a6f475461583570593571594641575373694f616836554166494c3047342f77444d394a7433616d646d5a746b2f776e50354263485331636c3350513233466d2f74446a4b4f714c6351673452347073517778536e476941514552657553674f53414f536a4f6739464966612b697869374863584e584e682f2f4149727a7939422f6b736a612b3332682f77436c61692f38337346774f534344426d516f377141736f4b6d714349684545595a464967597055514f4b67484241485a4554554a6f6f3147515351514a6f6a69674d4f5343414e334b41356c463048397941673655524968436a71635548523946325033753768612b68395575795035344c36524b517779586c2f7744447475317535666c6d52626a2f414b616c656f514f464e41344b6b7a306a5578526a66426f51554453674770524d775a304449592b354446416b7257716f5352742b37344b2b4854514b753564455166616944352f2f6b456a39354f31566f4e45663756302f7744477749325a7a2f5649563746782f584c777637363763694b45743767793650704e3432374551374d37392f4642364d45634662436569576f4c447462327375543073746b5a617135484242306165453472504d74584e30327071357171527a5a774d554758636a7147704777474650797852334131556a516f57355a63454631316a446b78434f3036624673667736556c795775334a75437673686f78617244356f42343866705477476a396f55315537506971353163635543337561787761525a5858435269733471616f4e46754c30576d34577438386c4c56766a6d7139334d694c476a494b3763385756737a7857657a5445712b2b30594f6738783639634559694a714d2b3348354c69574e3150627a3132364c66367a633879576d4a775847314950642b6933504f3270334576455a7a3773313134452b4c4a65632f7875357232303766365471586f37457849565157414f55645455535375614b6c4e616a517a4f4b43794c6e4645674d794c756a45754541787858442f7966626562736a5041774d5a2f682b4b377273465475374d647a596e5a4f456f6d4b4435654a30524568376b6a615a615a5a5554554f534353454d525656796b31566270427146584b57527751494f654b30577a51636c6e545244554344667145485036677373702b5a466c575a6b314b447345436b555235706d7058465157794367655638797469334a79423456535369376868696751794252564d5141672f4653714350775674694c7a59717172712f624552655244305157626d59445242664e5a3951556d645a3146497a6f485a6767593037455256474d6d777167613064556e4b5738515452434d7450596c4666775150794b73314e676d674133577071634d513641453070564a4d553068486c6d6c385235494549554c79434a644c49494347495959727566347863493367475264634b6d4a58612f78702f76496d4f577042375757444b6d35584658584b646e34716d59302b4b745542734d4870552f677455577a574f314567317174476b746d7943326f513831386d51684d787a663841616f7a6a6b67614c6b736d6c4153784e456775616758486172424e425463744566676d7479623856644b4471765378636f4778436f7a5935303572515a55574c636b78615934305163333157666c334c524a385772717a37466e73584e64325046482f4a4c6d69315a6b4f507a57545958427169613950346f505457617742645336486e714b7274532b6b4c5270457531425669485063754c636c2f576e493856313731337978304d56777256326372754c41494f317443316346357266327674643657776d482f414458704c4236476b75522f6b4e74353272764470393641626136324c386c30724e3254506936382f745a46684766694336566d35705a696736636237303471713766455378436f684d694f705a377433534f724642796433496d2b4944463366384631723973435559667041314c6d6265486d626a56707a62466447385036386d7951616f436974764577464d4d306b4e49494a775a4c6533586c76456355485076326872484f7675564d35474f594251752b5a6369326f565757375a7845716d4b447162572b502b504572644f305045413361764b584a53746b615a4d75313666366c356b5243377961534237396b7534704963466a6c4b524f69574b37686d4a327958424c467173755665416d576271393644445a752f31645573517572626b4444537548654274764d726436544f5679553350596737466d4433486462764d6f736b2f36554f66414b7979615651614955344d674a752f77536b4a325a42596345585a7946515a6b6a4769686e726f426767744d34356c57324e31444172434e744f644764776d477869654d5548586a4953716b763268754947334f6f4b7832396a4746597a6b2f61744d4c5a674b456f50412b742b6b54394e754f4b32706547583448735849785831652f7434627142733352716a4c466543395639417662456b77367254507151635963464b4964694f534359567a515a54444842456f42696a6a6768514b4f674c616c43346f564b733648494943506b6c46557a5975706767444b64694f4b68346c414f78466b634572684247554a79554164544c6b67677252454d39554b385643454563416f6d716770564b36416a6d6f434641696767624d49537279555243434173756a4463366f64584263317972414a4573677665764e5765565855565842366377725954467548554f58376b4545497477644e47302f38325846567a6c707238316e68656c43516b4d6b47693946794269797275774169777163304e666d4f3653354b726f477457446378566f325663553232675a64522b4b764d44466d6f677754735347536131745a534c42626359383162366242376d4a785a427a4c385a2b596461715a7665743236682f586c446e38556e686967784e6d554756397731596f52367531425533656c5a585335424a4b4b41526a724c6356626368355a306a46617468426e75384f4b726e456d5249396e515a744a46475336585777326a513534725064715546596972486f6c4536386b4d616355456f314d4538596746335a566e356f343151587947447438306b674d556d6f696f54473451507a514d4d4b4c52615048334c4b43486f726f4f433439334642306252387764693065523034645859734e693459466f3057337a6933777751656e686f464934686159582f70574534754658416d4a636c42766d59545055717845596a334c46644c4238386c574c30374a7158507551613933746265386959794131447779344c6d3753335062334e42776a5146644f795a47767957636e564c56466b477547334630645a3665416f367674374b7a5a48394f416669616e347179304d433674416b3641526e4b4e44554b7a56776f6c644578424342717147754b554454676d4a2b43437535596850474e6663754c366e7472634c7775415952303939463233727a584a3956654e7754703447373048506e6362322f4e555468467737562b706b5a7a4d354d574b4562304c6b6f746b67325749686d57324a6d50424d6a74574f3041484b76467a705949483836376c4f586570397a6648317571354f3946575742624630476d35764c3047367366345238566a75656f3334484742663841682f59724e3149664a632b2b4250716233494c374f3974584a45584c4d4e51397543766e6432656533666e5435726c32496758476e5545664a6179485a71444a4261626c672f3841374e62702f462b78503933616941316d494430645a6f50715945763950357069534b534b44542f634c72394e753133762b53536671573668515174442b574a6f6b6b5234686a376535553632397355476958714f365038413149773561416678564e7a3150636766386f3764444b75394167554e4375615a6b7534307367766a75397a43522f71467a7a6f7455623035735a752b622f75584b684757376e474e48352f693243394662427479416b4c6c77742f306f7645494d4133456a5731616e6379384a30756d6e5a3331364a38345374772f54434c42645765347553385a753259486862442f414971517652465933726a2f41507a49302b53446951324f3368692f6d5975615657573572323839474c72306c36562b354854356c6f2f7a5549584f30364c3355787a664c69674778394c6c632f71587a6f684877784e665a3064313674744e702f547451316e3949703856587539396539536e397274656948317a354b2f62656b32624647636e47557176785a4279542f6b467753364c4d644f4e584b3362502f4972567a70766a524a38637543366e3245473849584d33666f6c7539344f6d534474516e4751456f46332b714e5656656d2b72557743387a7362393730753859585043616356723958395330572f4c672b71587751637631586648635430517043507a584e474b4d764579476c415467364476565138736c48427851516e7555716d4f4b556c3045354a6f7a4e76716a524b53673578795164373058612f6458546676654746524869757076623072683051777a35386c7776524e3335462b74524b6939413141324a71673062437a706a686c70573264775256566f61594f615679537a313665517951632f665849786761457270656c326a6232385938766d755675324d57396d4b3632324a7432363430515a72343162794c55634d74386a4333307a365935726d584359626946773559393630584a367977617066386b47507a414e36434d44443372666362557935562b592b35742f78485252623773336b2f64336f4b707a494c6967526e6574327735496f4d506276516e4d474f75766171646e7354764a504f6c6f654c496c4266734c4833674e3634444742384934317a586246694d514245734f434a73644f6d4e41314573524b3351682b614277496a39796b727256696d44464c7062744b4153754751537a6e635a4e4d55634654564c745155526c642b757151797548444d725847555a4f39453067446767784e643542485663743134384671305a59724a7539794e72616c50675069677865706570334c5a473373307579372b314861574347474f637059726d656d325a587048637a38636a32304b37305270656e4a426f6239503571364f43726a4945396d435953514f314777554144453846544b396b713562774146675a4d6730794a3471715a306e6d566c382b56796870792f616b6a48536458373042334d726c73663068726b423072774f39686646777933414d5a6e48566d766f64746b4c6d6d594d4c7745346e365a56397944356d6d37364c303371766f45514a58397034522f302f77417679586d5448546a696736657769374756563074385773414372654d4c6e624344516461747a4c705a76326f4d2f70467a79723166712b53395a356d6f61673638687477424d53617642656d74536c3562494c3774377a4d634277564d593639767549486a4833535566546a52314e6a4c7a5050356a35494d424a2b44653361737534684131617131573955717844725461394e755876464c5244336b2f6b67344d625639364f427a6f756c365861315336716151353455393636747630626277424a317a2f6d6b745132555761325245494f524b556a462b4a4b724d70596c624e7a734c6b5070393259584c6c714853615a56514c4f5430343571364d6a35656d48696d644937316c50564c5351413368376c31765362666e7a45762b325069554862324f324730737773782b6b665046616d47503745734339546b6e2f4e414b3571454e5149366d554655436c5646355578645744344b7375634d45456b57504631355733427431646e6a714c6646656b764852435535595139766b764d656d794e3632626b7631532b4b44724f47306e3971716d574772353471615877373154646d484c6f46684d4f78774c6479366b4c57714e4677747531792b595a366535646d467a52434a35365851533574795248415666334a397862383232517264597551635a71324931326e2b7042587364554c586c797977576f544831696f576177474b31416a466b414a707a574865625558495367374f4b506b5674384e49305766654f496d517851655a74337a61746d4a7764704873584933556a4b56616671585939546e4f567955444c7856773472687362743051346b44346f50582b6e52387662326f6a394c72707470445a724c59614c516a4674496a47764a61546b41676b664357795846336e2f3841473759417745543846326744686b75524b4772316d374934516a46763973667a5164486452647a2b3959705265622b775737635644444572484f3041432b414342504e4c386955383978626853574c30436f306b39682b5335323473545938426b676d37336b7477572b675a4b37302f61734e655156454c4f6c394f62415a5972745737506c78387349444a74576755577130326f544f617168625031592f4a5a2f5539364e68594d332f714870682b61446c622f645333323538697a3452303869526e334c7362585a57746e414f64552f6573666f316b5147714e444c716b54784f53374a6e6268516b61386156514e474770714b7a5470447059546a4d394d53536a714f414642336f4434634b75714c6a45694954457454444e5a70796435757751637a31666344376559376f3976376c354c6d56332f563558626b59576f416c3956777437677556445a626936486a413037766d677934346f776b517451394d3354644e715a484552636642565864726573482b70417835454d67305750567433742f38416a757a414754755063614a7435367675743544793730684b50386b52385758504441314b6d6f6f4271794b62675570344a766767474b426c7754414e6a6e6d6870666d67674b443570704238454d6355414a64516c3855596e33494d675a7745474278554459714f51676a596e676f484a706d706a565737613372753234385a5242393644326d7968397436726f7738327a483378412f4a6479374b727269657153467663574e373452433535636a2f41416c646537646a434275534e494357484a42775a624735754e316438713862634c62434d73513871742b61702f7943397549374b46712b4945796c34346b31306a67526a3372712b6d695564714a6d6b37686c646c77367346782f3874756a525a736a4561726837385078516555785231484e5155716f61494a794350616849386c415878515356653541316f69794449472b614877554134424b4544555142556349766d676a736d6c5369477077796e346f492f4a4246754b674c49414746454d45564f314145356870416c6b556e597456767132737766704d5a522b52515a514b4b424856376c4b596842454e53504e41596f44493151795549554143434e376c43464752644147436852497a5549705641485a4544696f53345579515371414b49596d6c55473149437069676f7943456f31555a77454279515230516f79476455424f4b465642685645304655477261372b2f73784c794a796a724856376365617a534d72684d706c796333784b5638306561434d7872676f7a71506d7056716f4939654b4d55704e585569326141305a42736b52516f557951426b536a7155487551514a7333534f2b43594e5542425a4176514b75595975683831487135515354343855434757333033792f75492b64674454747954657132525a3364794f524f6f4e685642686f675369614b486b6767706976552f346259486d3362777745645076722b4338745265392f774154322f6c37485751336d5350654254383048634a55414d6b4152674d55635542635256643263674470547950637043394764454766564f5959356f6458696e51426171426775523668764e66394f3167504566772f616771334f343877734d466875544a436a74466c5647504e4149417670567349695231676f51437632384771633048623263526268784d6c706b565259355a4b397156346f4d34364a4d56714551797a6165716930784261694173417375356341354f744d68465a4c38694f6c42534935686151584157654e5757694a425158686d634b75666866347132414552524c4a794779515a34676a464f2b58656961315a5163585157784e4573787044444247304f6c6c4c6a34494b59466d4d6662324b3078646c6d48754b3051397941594f71422f447956317954524c597049514565316b4478676a71444a6e634b7134637330432b506b70715a6d717043476b56554c7347515163714f69434355494279355550346f4f49592b5864755179642b4371335734387261585a2f777437797448715672524d6b47686634726e627944374f3843543073666967386f513464544156775270676c4f544949784b68344b4f695543674f694b56344b6471484a41636b41364c4d6c51483470745873454d61495364716f4749474b464356426a52534c505642485541664648425145684147444c6f656a337a7439334351776b6450766f75655530636458785157627131356436634f4569716f2f50697570363742723062736644646847666575557a59494a685661665437413347357432706547553467396a3157623572722f34394566646936634c635a546c7941483755465872312f77433433313265514f6e2f414730584e445a6f334a613547527a71676553414a69423370536d4575474b41455a714d6a785a4b4545504a45446970564268336f436561444b4d6f50346b454a446f397167436751444a5233487952464d5541372b3253413177554f43554f433665454e556848695548306230577a3976734c4d637a485766384156583856304471782f6369592b57424143674879544f77514855436a70424358386b664452417769324358534a64514a4254617331496f4d6b74594c532b5335667175374f313273727566686975394b4f6f5678586c7638757647466933446a4d6c423479524d70616963617274656e544559746950795847487957726258644d6767394674726e55757a616b344878586d4c56305272484c6a7a586573547a474b446f43585471427170493831514c6a5579537a756169574c6345436d525a696a4357697677524d686a6833706641472f616762553944677475334d5a526744687058506d57376e573278414345534f4151615a434461566e30366a79567770514b6b6c6b47546330434732416e4a6a7956562b597633476270475331324c64506b67317834597246755a61704c5a497348584c75335471635a494c72634b314f5075532b6f794f3373416d68723765395a4a372b5559394c754f624c6b656f623235754b7a4e426c7751636a64335a534c6b724d4343724c70314b67565164623062652f6133774a6547665365396532735430723574715a665266534e72634f336a4b2f347039574875434452474a7579717455656c5047476d67526f554341423655435a4853497141466b454a5263464b49746d6749735851664d2f564c586b62793744427047587671733851324e5375682f6b67302b6f33572f682f396f584f68556f495930716356596244697165684c5a70343349517a636f4d556e4d6b414771746c3379376b61556c6d7365426f674d6a6b6f4256676753596e56386b593950554d5851614978636469686b57646c5643357078716e4e345444494d374d55484a52376b596c30436e464d37714f5251494f6741705658786d4262596356537a71505242497336446f7952617570413067775563414d56414e506570494f4879346f46645757674a666d716a337254616a3031514e4c674753436d4b5966776c414e494d67726d413963454a445365536152594d68475657346f464c6e44396968366b5442714d6b38425141645059757a2f4149323333654c4269755049763272712f77434f6c7432427845675548756a314167354b6b78786f6b743341527946454a5459567851575241796f745541482b5378325a61343178344c5857682b43426d2b6c4752717756424d736c584f7a4f576143343359526336716f7875514f424139755378485a51474a782f4257574c454954316759484e423059714f35664a5344527a537a66765146775043717238424b42676d31757862334b533669434b495047663544754f714e6f2f5438457670636a4b34447843782b756b666658427a2f4a6150545159783159386b486f664f30504a512b6f5348544838317a4c742f69566d4d2b4344666533636d4d7668676b735841547a4b7836353342556b7264616734427751644b7734442f73564871305162526b33544534646975323774564464447a4c55345a6b49504f577742583953364e6d68726d7363436266547a5732314267787751576a6f784643617246756933567a376c746c704144346e4a63376379695458776e4c676773394c67505036734831664e4e74334679354b5a776d65394e3666303761557a787a56654d2f6276516262557a6447546535566272635274394d4247577270486171626c325a4a674d736c564f59456f33496a4e41647a626c474d5a536f3156697658415a504c4d4c735330626d4a674d5737636c776f4f594d636b4652426a4c42783256536962476a686c644f2f307333554b4f715978456d712b53446248636d5171566f6a7577594e6e6b7558444176334b775459463542425a75784173496e393662306263777358534a565765556e4466465a6e6c626d4a776f67377633597658444d4673644b3656753647646565323930774c6e4e644b4634434e614f67376c75364a68777244686775506233486b2b495564644b33495858446f4c326a46447a6f6738776a4f4468552b55504d7055494a3932543077474b4d4a7a31645a636341687072306f6a62547559664642716a506963316f686464327757534778682f774251366c7068624676776f4e4f734e524c65745175774d4a31422f465652345a2b39487a6441636f506d2f7175794f783345374a772b6e6d437349583062317a307150714674346638414c48776e6a79587a7935626c626d6263714555716772435a4b516e46736b494655644d5953686b6c4951466d7855474b446c616472742f4d6b415546454c637048534d555a3235514c5370327231477a395067414366437438396e74376b504c6e45532b593730486869576f4571375071586f38747164634f71422b4334364352526269454b5a34496f4a6a524b69416f674c4a6f746e5838456a5a6f67414242416871346f31536a6b675a434b6a736f79434846514867696356474171676532776c58426443314143416c476f584e464764504334596d6e4642666369585a416b4f6c6b61764a4e704a465545757942424f4b7a426170435267537a4166465a4751474d744c6f36395372464b493830473677596a44455a64693043594c794a374175552b616a6b494f73305a515a3668616653354e356b342f394d4f5678424f5753366e705635726437476b5546416d354d694b6b347074484d4c414c68692f464d4c3546536730584c626d6d5036755355574241766e775366646671716578563362336d466b437a6b4a466d6f6b7a55642b7851565a3048567432786273637a56555469314b56553356387868477941427048663731696c634d68556f4e55376d6d476a4d35724963616f6d566134494946425a45304e464f51434a51515578533455544d516f67434f474b6b614b536f676a70745a5334736943673057627a302b72354c6f362f36654e575a6358424e3568376b486f747636706374734c7456305236745a4c3169447a4b7a572f5272512f354b3853742b31322b317474356473616761644c6f4b3537727a346a79787150454167664869716a5a3352366949783935507958636a727a5035492b547271364468324e356367534a7849793976334c56726a634f6f3041723364696665376477596e4263477a4b35616d6444616853754344324671636942525853754341656368462b4b383066555246684b394f522f5262446d764e434f3446776951736b6e6a635165692b3573412f77444c476e4d49666662654e4e667a4b354e767a352f394f33456648757857797a473631576a3241494e6633316a46793338737679522b377348366d2b437a47334e717a2b436e6c79474a63494e6733467551654d677552367064746561497931345638735056504f32346c72694b443372425a737976482b6c5079346a484f71436b324e72493676384179522f7070386c644859324c672f6f58534d50454b71346254632f395063503278434a74586f30765764664f426638416145454779767334632f73566b4e76656957306e2b5a56516a616a555276327750356d434d4e787467532b3475782f6d6c4c386b466c364534346775713555786f473459713257376941343354412f716a712f424562695277334e6f2f774131454761354d4e315a4c4264775966384178666b75333532346b503663374d7a786b367a542b37627168746a336c427a625678385666356f7a416f74486b61413837566378627754526a48434f334e50714a515a424a68677a2b394a4b3545554d6750627458534e74362f623675394b59584234647041384862386b48503832336a51482b59496d2b4763462f35617266356534674f69785a6a2f4d582f424d5075596974757944376b484d382f55474c724e666d4969524f417a5a6c32504e33496a71755373782f6c79584d33317935757051735276527547556f7830516a38536531423066384148396a6f732b62504766557a59444b756137356b3247434675304c6342626a67453570543449463145654833716d354b5139714b7734566f73393235526f516c4d6e33653942516247326d2b7532444e6372315778433362305749474d69756c6474334e4f71354957342f7734396977655a4735314376416e3979413748625232316f516a545634755a2b487558527476785757317a783472585a43432b496c3275684941306c2b35474f5254784162765165643952746a785a3668583856356664544e79374b5950657661657437517a732b5a4142786a6b7643454d616f49776b484349776359705852514146776f7a6851494f6764497a4b4f3571693155453571505769494f614341774a695152526577326c794e363143354b756f4e2f74586a6e72795863394533415932546944716a33346f5053536d59696d42797a575335644743424c41307856434253426575644a496b6366795859747945626543354d51317949464f4b365236595959423047546356474c41596b703558496e71634f566d336c343239744d66716f756661756d32414d61494e6537756162746f6a3654714376382f7741777648422b2b71785469544f456266564f5136592f6a324c75624c30794d5976664e635778515637585a586477354a3078664869757447774c594166735a4d38496a544148755452726747626967454c6b50447139366341547a5545686751684b7a626b6766564542745143587a626555342b395679323047307944716d58706d324e4a774344587174385171355837554b7a6c565a2f375874675830423033324e6d4f544f676637323052516b35344a4a37316738596e3831445a6a484166465a647a636a48502f41456f4675372b2b522f546150785075586e4e7a6675656f626f576a495368452f444e5765716238326f365944535a5550597276514e6d495766754a2b4b5a59557948356f4f747462666c7844427677415736415a55447177716d746d685161347744717263516c43426c425757626d7341725359766a6d6734423342755649594a2f4f664a306d2f746e6154314166303565464a4334373077775162596b6764495478416c79437943364d717177584b5651587850354a54633150784372314e7943737063714b4e676767764745587947533831367a7359526d4e785a3842385861765254672f537566755a616455434b537851634c616e53444963634368646e6d6142504b486c486c77576366314a4e37667451575138505a6d75317462386730705a726b6b444a62374a6f334a42717545414f6d324d3432707a453268626b50466d715a487a5064517176534a47496b4b427a326f4e2b314675323538542b452b32433251752f735741456b44536643704b624d79446f472b4b6b6356524f2f4e6d6b61354d7373623859317777533776635174316d52326f4e4539795763315042316d33456f33657162446d565874747275642f31576f2b58622f585050732f42646e612b6a62657764557762737a6e4b6f5165574667334a2f30424f345034492f6976552b6c37616469312f576a704d69547862674630674e49594d337555456b417131554d65536d72504e456c38634542476e50464b5a6c314d5336726b45466a6b6b484a567a4c4175687131564645743235706a375a494f58363576425a326b786e506f4335336f74732f6136786d5433726b657437386275344932365734344c306577746d31744c4d4f546e76714544456759314b35392b343570684661376c7968792f413856782f557235745738784f5750416f44365a64387a64463847375858704c5548687942586b505270364c78346d4a413753765a324a416a51675545694f6e4c4a61374a3151595a4b655378774b4d4b5959494b496869347a57307842595239797a584c594a315639767754784246426b67763074525a37344f6b7548427856677545556c69694358306842347231515332392b57724d657a4c6e624936393162785056462f6576522f354e415432397534504647656a754d5858423949746d6438456a437637554873724d6e6b2f7556734d566e4262326461497a7052425a434a626b7364717a45626939644a72497839305146704a6363686b6d7362654d704578727851557a446c2b5379376b526a6a67747869474d525175734e34304c35494d5a6934476b3079547562683542562b53496834356e755367335a4f574842415142647531794b366d6b2b4c33685964705a75655930783766697568636b4c6475557357514a4b374333556d6a4f54797a58417478507132342b346c537a4470675062337246366876707a653050714e522b53394c736469624e754641474139357155467364704577414d706774394c436756734e70746f6a77796b654d6a5661496735356847554d4b6f414c636263574159635578686d374b4333707a632f424c704c385543536a71777a7a574c66334142354e724d4772596674563235334450415541376c7a4c767274757757466b794134795a427a6658343654596c67397366745843636469366e7176714839796c4879346152454e706438567a3557726c73646343416631524b423462752f5a48394f354b505a4a6c743233722b3974553878782f485663734979624841494f7a6339666e654458624e6d51774d744656784a454530526a52474b42514563564d5252436f5a6b454d6452523067356f732f7438304545787879515a38564e4f595569636b424b416451386c434545784b616f516574464545585639423278334738695030673348375032726c4d346465702f78765a772b317633376a682f3654786f577a2b59516150554e74754c6b62327277434f7648685775537433323675626d784733427636386f524463386669737030777348566375526c4d4749684b5771683741732f6f75386e754e35597333573032684c51526c54506967394a4f3762684c51434748534f374a65522f796264656475394977747845507a2b4b39544b7845334e625a727848715962643359796f645a515936684b43426969364a78515244464d7a464179633051426d6f694368676f676a6b6c516b34496b5a496a695543785541526f394167574f43434d534565614862676f445771434774455a636c43614942424d65785251566f6755424b396236764e2f527245526e6f2b4553764a6772762b71377148324733326f3851694a646d4b447a2b434c496c6e6370575a41517a7141416f555544674d454537464b486b6d6c52424244524134496a4653674b43446d6f796d4e5547795146676f564643554177554e4f616e4d49754d516741525546564851526b4d556559524645414a5579557a51706b6768464b71414f6d42444d6767416f6f6f2f42524154557148676f32616e4d494156484c7145385577424e426955436b38465a5a73586238744e714a6d6634512f795870505450516f51694c6d3847715830323850655636537a4b4e754f69304241636b486a62662b4e622b355532395038306f2f6d722f2f414d4a6233543944384e53396a4362654a45467935795166504e7a3650764e6f486e626c70346976797757414c36674b55794f574b2b62627743462b35474649786e4a7665676f2b616a502b4b677855487751513859726f37372b74627433383261546351756341793157377571784b322f4e426c555a535450785164415758302f3075304c477a7332782b694a3939666d766d2b79732b666674322f7742636f7839362b706b4e686c7751434e447a54534e4f53554f615a4a5a757a635546467736793046624861673175564b746a6f74784a7741584b336671527564466736592f397a386b45332b3868442b6c5a7848696b4d7558657553535739716f792f70696a2f4e2b5a56527546424a48586e5250434f704a624f6f61575a5867486a694543456474567174523078366771434f4376317541454857734772385174622b35594c6650334c5a62505367726c7a376c7161696f30763148697230465a4c754a4c4c4d6462354d74526f57775765556f3131494b6f696930524f705673634172593969432b44745656334b59344f724964495a4a636967714c6d69684f57536e315555474b433232537a2b78517575417062484e4e64724630464c464f4f73716e5552686d72345470544b6a494b7439634e7544697064683370495375416456585133636754626a4f6763793979754d777a6533356f4c41435256426768726f6e6b785156542f536c69526a69554c74436a61694771674f6f745559685354305a50324a586b4b68427976577143426a7844726a657158504a326b6f765734573932533758725852747a63474d5a52586c765637757351675468376642427877637969436f52537142514d5a4a4d4d457a6b31436d706934514c4c71524a434d587753694949356f4a676a7a554171675167674e55636c486f6f2f4642426b68566b305333656735594942584246714b414f70717167474b67524e4d4d45477a5164753748376a30754e3347566d656e7550735063754b5175313647664e46335a35585964503877772b466535635a6a4136546945414656326652694c566a64587a5543333566384176634c6a597273577047313654636c2f3362735964305136446a7532436e59676a56424844714e78514262424d4843426667706a33496e6d68695542484651795a41594f6f394542414b67716758526a715a2b434159426e544a634552464143377355774c653543754347506851534e54785851394674473976624d515071422f774274566758552f774166765273372b325a39493668373473672b686d544b4b714a69514b315a3039576f6759534f493765354d4849564c7942626b6e3161616c4262452f715537466d686463594d6d46344d677669587771567a6657765449656f575445663867384a57727a704477717753756e4949506d66326c794c6a4d55373154706c44455658702f774449396f6472642b3467476a63704c74586e39554a556c6a6b6730324339636d58623950756e546f6a677544626c355642553856302f54726e573341414566696737734456314a456b71725856385666466a462f6d674869444b59687543636738554759494b6230756954596b534464713673576847496c6977433538374a6d423272615a4564676276515035674335323633414451677456755138527766354c6c57626447346b6c4266746f456e566e6d756c434a6a46315259743654792f46614a334141676f3364337977314858477553424448484650366a756375613542766b6b3652674d554631366359344e584476584a335263352f6d725a7a4a6b33465972306a496f4b3764733370434171546b7658656d6634744763664d33546a426f68562f34337351492f63686a492b462f7043394a4b5a7474356c546e32494d32333944324f324c78746952347971756a4b656d7553706b4b4f483939465671616c55473054795a4857737573352f76526a4d36636a536e34494c59333454755374444741695a643673596a465a646e745074784c5631584a6e564f58456e677451446f432b534c444256524c3154787055346f506e762b544276554c6d6e2b482f3268637655475a64502f4143514758714e3066792f494c6d417869674d4c456a565365314952463251776f7249584c6859444a426d30536a524b37726f33495330504c4a633673716f495336684a55436a7652414d5553487155496c6e5452346f4256534f505967516d636a7451535162424b7a566446676763454550384b4a476c523277552b70414f314d47474b476c6c4367665854424238776c6475616e5967624771304358515163636b6257312b6f7035694f4f6541515541634b6b4936335137456d766745466c414467367248545549366d706c386b757042474866696d6e4150524b2b616c41615a6f447042726b742f6f4d6d336b44322f466333745862394374566e654f41487851656c74334e4e4a2b78566b71645335304c38354e46624c6431774546396954423257682b7275574f78504a614437633046786d4137344b7135666c484a3158475056564d4c596c676771694a584335576774524d41523249537057574b413951384a717249485452716f52726c2b434a4a474f4b4377535956384b634d61354c4e346d794a5673496b4469673433716e2b5051336c33376d334c724f4d63714c6858747465326b2f366f593545594c334d5a75555a776864476b6753487651654768637a782b4b6b6935626b7533367036424762334e74536636655063754847457263764c756445342f717751585752316a682b533641424c6c5532726e5337682f64524f434a484642736a46787a547a4d7a46733256554b5259497a704945305163613934716e2f5374573138492b4b713364765250755274534d616a4242706c54494d7554656b444d2f36756456305a3949315a726c776564324f5a314f55485676784f33325676444c552b617a7a673058794b7639526b4a796862794565723335495444774a694759494d387273593337647774706e53575a444a4c6b6843556f55302f6d6b365a774d5847736646433141536e716d526f2b4b412b6e7a386f6d4772487555335968716c4d45485758504c334b326578686436346b594a547472646d4c53306f4d646d51366878716b6862423756655952665244344b364f32454358784b446e3234534561312b616f6d616b527743337a6759784c6436773349474a716744354a4a615a5651454d73304a4d66636737467933596862687072304e4d59564f4365463230773877365363385739677548353878485144524a4976564233376c2b777a7671505932436b6657504969644665456543382b6d6a624d794952784b44312f7048716339374b554d434d73666975314544504263583050307165312f7154784f584264337730514d413142524d65704952717146584f4e77645559366e3776785158754934347068636a687757534e2b4a505743447a563175554357716776675772486e334b546a7144353873436b6e49527771724958524c424254616c4b334a70595a647058452f794c306133666a397a62614d786a7a586f5a5142505373752f74655a746273526e46774f784235486262577843494a6943654d71726f516a61776c41436d4f6d69773755766a6c54745775334c49316c6a4c674546686a616c545447582b6c4c64327533766e7274615458774369467953736a50686767346d3839476c624a4e6d73526b63517433707530466b3670734b4c664b365863346e6771357a4568387779446f616870487433704a4d4f396337376e557a5a59725443357151576769354853537544367036577a33724963413141585a69387165314644652f574851654c494f4b426f56364c642b6b787669567932305a43756e6975444f784f315359497167544769456777524a705644456f476b4d7768694b4959597150785146754b4241795561694a6967425a466b4d464771775146745367714b4b45495244423045356a4e5732694f4e5655334257774e5546356f4e5179554467636c486c494a59544a787a51615a516356727757472f6230534841726f6747416f73737872474873454752716f4979434e536752796d66676978696c6b675a62396e456a623370636f6a3379584f71756a73684962612f4c4c704251632b4e4f31416b3071693342544641506d366c5158346f344942416553743231727a4c7359385468324b6a6d743277427436373255523836494b4e316338323654375556555456364b454f6155354a634b6f4846566247314a433345424e4f2b55424e73416170496159596771737a63464233446c424a78443077514e55513730436d707345434e77556430375a707444346f4b6b52564e706673537551554130355a6f303455644559746d70394c4950635759613851747469334749344e7879393635473839637362586f682f557544336675586e64353672754e3254726b3054394d614242374f39363561452f4c3238664e7544683458546a633335682f4d6a456670694850764b386e7337735262364b6671375630374f346d4a61754943447439633467534f736e69754676746e63684c707a797958617458645978437a65727a387533725a2b2f42427a396a62386f674d487a58556a4f6570636e612b45544f4a393636396970516134303471793235703853713468366c5730397561426f3135714762466856514d656c4b5847434371374f68726d734f3362544b4c745631717545434a79574b7959796f2b644d3047794856314131573645715973334369356f6d53576a6a6b746c75515065673061797a5056535533505579574c5564474e554231516b57412b43716e74624677365a32344538644c717a4846535571633047613574647650704e754b6f507057306c55326d4f4e4a4662506d6f424a42676c3656616964554c6c3233796a4a475070567159706576552f6a2f5974314254324358786c686b677a6a30713263626c332f65717637567474565a58432f47644432726f6b716f6972494d4a3946325836442f756c2b61746a3650736f3146742f39556c7231463043417a6842692f74657a74645174436e4e3062554c467535356774694a694f6e527a376c5a66505332413438566a6a35684c695148616736452f56724146597a2f414e6959656f375530456a376a2b5377796a6546664d69565266686341414246653542326866744675736636714b7137646b2f524d454448544a655a763659394e79496b566c387978456c684b5065673774375650443239364e757a585563525259747065743341385467756c43514b43385262465751354b7344575179305245526a2b667651575244446d6e6a6771346a4d594a77615571554461496c39654239792b652b74624c3758635366416e705830456c36444c67764f663556594572454c34786653673863546b6879525569486f676d426f673772524459626d3750793432704758445355397a30376332473832314b5038414e456f4d6770696d786f6f6361344945466b4550565648464b6a6d674e4d6c71394f75655866484f6e76574e2f656a43526849534753443244394178664473524e5936737773736439417745354d38683156775353337748677232423047694d7455772b6136457939764c67754c616c6375544574467a2f4150526c6235797545614243345848365032494d4f386b3852776a5539797852494d6d6b61793849474b366c6e307263627158573975316e716f66637651656e2b6d37585a674732415a2f726c69677937485a5842474d3451416b326e56632f494c6f773230775047424c6c4661794753314b43754d444564646561686758654a666972534b4a5a794d4252425272494c5343627a7456416952356e696c52566e62524e5946425a7231355639364579535062322b43534e716365444a76366d4d6b465a31596a7865334a5a5a513345764464306b345544664661726b794f6e686973383770427069677a33664d6834706e33726d62336443414d3854385854622f66437a6e58322b4b3876754e3062356441386a633374304f4e556a3846376d45595734433344434945517649656b68706d5846656d73544d3762484a42746a4a3678787a5263783746534c724e77576f7934424138446f37566f684d4659673578785769304e497167767557343334474d7167727a6d35735332647a7935566966437653774f616f335667626d33704f503039714468324a42714848503571342f4c425971325a6d3349615a523733566b726f2b682b61445672634a44636f344f437a6566377970627678346e566d67735071486c66386f702b43795864784463523157736677563135704375497a58444d5a32376a42426675495475304837566e68627031596f6937705953634f63636c5a4166706274514d614c54616b77444b6a58714f6e55356c67465a434534554a727851614a54316741566457526b49556c6837763272426633583234663676705a5a59337033486e4c397944736939474c735171726c317733797758506a643832656932435a455952446c6466616567626a63645735506c572f3078385575314268686376626d3535566b61705037636c3644596567323742383363365a334d686a4565396450626253317449614c455142382b3157753361676848444a514b457455346f41303475674a5964705162694563306a6d764241354c6c6c554336616445484d69676b35674f32422b61724d793349717a56487735717172394e45417478616d5878586e50582f4146585144743752366a347a7748426454316a6678326c72704c334a447039767a58685a3672674d354845366967726a3146665169656b506b4967426544327344637651694d3541442f63766458636551516336394947684844324b38787664783531776a365175393674656a5a746e46356541596436387651397144623657543534624e656e367052427379307943387836644756766351347231566a446c386b445766556433624c536158785853742b6f517553416d414366626773414277496f6d74374d58443053455a5a6f4f72487935346f7874735869755663324f3968345a786c38782b315043653673756267662b4b504c4a6b48534d53376c4451374832645a3757386d635953492f6c5a4e35305a636e7232494d767257782b3732736f6a78522f714e7a4835727a6e6f55657162723138727567694a4743387874644d4e786368452b485670393966696736317331664a61495334354c6e433549315639713435476b5677516254505468696d687169524b4e4658724c694a6f72656d57506567456a575431663841466372646c6f38426775704d66547950617562754936687964426b6c64614c68474f36314552344b6d35623159486d7159783079414f504e423272462b454a43523559726e657162755a506c5767544f644935556b724a583430452f594c4e59733350554c354d446f306a453845462f6f336f6b4c52382f642f3841492f544848764c4c304d6f577a562b664e5a397636626274344855656646616f62596a4e414c634f70736b324d71554345594749706b6b6c492f73514e434e574f4a5665356c35634b35706e725867367779757976584e524854672b4b444e63367778384a4b383736735749674f4b396464494561734f506376482b73482b6f416543446d44426162572b765757454a7941345054334b67786b493446534d666545485873657579482f50617458592f785244742b6162632b7062432b352b31306b3065467876775a6361575356754b43793662542f3077597834534c6e38506b6b4b4178344b4f315545784e55644b426b364f4743416c7a376531554242304a484a4d417942584f614c4b5339796d716c55415934354a7578443549676f4135554e63564278514c674947494a366353766f6670757a3876303646676c69616e766b363856365a6242764337633845657152397561395566574e754e6c4f3343524d34783078424445766d506d67743330626b4933623173576a3053726e54385635483079557255705867436444532f7744554670334f306a48596a632f395355394a344d7570364c736f665a506a4b3654726c774751516433625347346c357738425972772f7262446658775031666b7533364f626c6f4f585958504c6c484b68783756357a314735357536757a47426d5547517163307841434435464243794241464558637568696561416a42696746486246527a3730414e616f6879456353695a5a49416f6d484a422f306f46545248457061595a6f676f49533156436f79686f454535494654506d694155425a384b75765a2b6d656b326f5759793355504d75534766306a67754c2f6a3370306431643836352f77416476482b4934674c32656e4d6f4d4e7a30545962682f77436a705036725a6239693575342f785332662f74727048384e7a38782b53377775634642494846423450642b6b62725a3175327a702f554b68594d5639504634786f4d4f645679665550517472752b6f663072682b7150684a796349504367715a726f656f656c5839684c2b714470776a49594c4158495154437168515a5173674f4645416943454279514e324a5855597369356253676a555564304d4b49417367596841314645615a4959494347785155646c4e4c494a526c415752624d49534b4359594b456f73366d654341633053326144354842544a3045434a72564469364c36616f4158647974667030762f4a742f774177575144676e68634d4a69517842793549506251753634415a2f7741537674336a675667387753384f645837565a624c6b5a6f4f764471435a55325a46734f7858414474515041366a48682b4b2b6262382f77446b58422f484c35723652624163446d4b4c357a366a4852757273663435664e426c70676f796777544549466b587754526c704c31514b6d4653676e4e6c4779514571633059314e55472f774247496a76724f72445846665469766b2b32756d786368656a6a416958755830792f366c5a7351457964546a56455271536732344c4e75747a613273664d767945527a7a3746774e78363375352f385549326f6e776d645a653361463576636d3566756a7a706d355069554864762b706e314b576f7648626a77777a6e7a6c2b534d5a6871554879437832726d6d4959636c4a734d55466c376356624a552b592b48656c6a4636534f47534975427a793736494e45614e536931775753784e6a337258412b394144777a5531613773514d5345376b437456547065343065434473366d61745673744f33785850746e4268514c5a61707a516164566679547336514d575a507a515633477a576369685631776e4467716777646b4174786644386c6f726771334363307267677369796b7852797046736c44554d67704d546a4a5667614f7857544a48596c497948765157576b382b6f6469534e6553746b55475357504e4e45355a6f58597370616b7943726445473541476a4f6d454153797a37715938324e6173746b4130586e6e6d6759394e456b72685a4c4b7163576931634543526835683146576c7341694936456e694f6f34424243475976564457314f4b4a5044764b58476d61444c366c447a64744b504550376c344831417664342f7458305852724f696564463833336b5a787654452f454358376b464c4f6a52416741715a647143416453614a596c495331416d505069676a565344676e4a4f425145617367556c31484f436154733656415747446f49674d3749424247616968346f6b6356432f59676a714d675363454b6f4755374d45616f4e6d55477230322b4e76756264773443516673562f72646a794e334e734a48554f396334636c3266566e76376178754477306e745163625546312f55492b58736474617a36726b7639574877584a4166426458312b52462b4e6b595772634c66743730484a5564546b6a79514b497656454956393661504641427855315946456f53465545774e464739796d426442794f3941585a54476f51716149344946423470734b494473524172564248795569674136504a4250775264692b61696c5548757652642f62333172544c786a344c7151743233386663766e6578336374726331512f314c32316d39446551467949424a5162623133524178675835716d48366c586174784570514744617663744670704f636b46653675446278636e4574334c466233393764452b5262613250716c693457655677372f63796d4b326266524856783472715767514258436751474233576334442f53363032355878557a67655466745663486b4b4b774e4a426e3958736665374f356149615147726a67766d376d4a37463952687148462f77586a76585051356265586e32422f534f4934484e427842634977707856316a636d33507a414d41736b6968794b44364673784464526a636a31524b31334c44484266503841592b7058646e4a342b484f4b395a7350563765364445744c6755485430754f784452455556666e48394e43674c376c41397730356539567a7668744b63544764436762596b586b67792b6671784a6638565a59447963597134374d44494d6e32316f572f32657751616263577173472b33445249562b34334d624d584f507469765062726379765336716469444e7562757375654b7833705a3444334b3663696361354b754946787a4b67795159376b794157775656713163334d78627467796b5333765864736567334e31494855304d3534664f702b53394a737468593241303252584f6566376b45394e3278324f3168596961357937556c3678667553667a5750495972614a504a386b70416b4547506258726c6d597358527142384d75486174643030614b707657784d454e68776f6c7433472f706e6b7a6f464a7551773675544b336137737935664a4c4952694f444b7152677a5a6669673668755364487a61664259596269355a4a63644a77354c56472f47375155504e41786e692f464553656c5644414d79357672472f742b6e376379423635445444692f487551655239637678766236374b4f417037714c4243464f7456526b387135717776494d522b784259626b496d6a646e4e4a4c63794a364b4641325a4877347132473261477557512b4b44504f374b645a357174336f6d6e4a7967616f4139564d46434f4b4972696745573731484b4951514d513261425a54425273304141644530726b6f574b583549474c5a4952514e4578497951526b5358594369445a4b474c68424d565a62303671704879556a556f4f6c636b2f6857636963693253713831575175796a32383043615a44693248636b31614673694e514e6179576163426967724d517a63556f444b2b4937556b68705050336f4b7a4a5153393645754b6e626b674474514c30336f397332646d5a6e3639546431506d764f574c666d7a454934794c4265374f326a61323473784e596a542b61446a3244314374425876576d3375484c5a4c435362636d475254546d315145485273626a2b724550346c3134534f453856355766366f2f543142656a32312f7a59366a695167312b58544e307736634b664e447a4743576367314d736b44544846514e3957437138787345504d3442425a63756d585448424c4130655253514e5777546d516b6774457854546e793471782b436f4e7a39796a6f4e414d735a65394f4a565a5547576f4a3479515869515657347357397846726f422f424b4453695a324c494f586539496b4154616c546763657859504c75577061626b5347355550755870764d694d314a796a6e564235345859517a413777457362722b45673936375974324439456139366557317358425732506b6738317534655a45483667666b7331756f426a67753775765334434c3277343450554c7a306f364a6b4768776255677375506f50494c507475752f42734b3154584a76466e666971396750366b4f446f4f68765a6174354c675978444a78494d32483471626d513834796f3530716b7950306746415a52673738736561706e5a6a4b7039364a6b30744a516c5074514a4b7a4a6f6d4a624e4837657645766d7259633854386b7377546a6b674768704e677964795077516c4c496e386e5361674842797751577a496e697345397353447043306d515057797176336f78675a6c785242794c38664c4a6963565364516f6a4b524a53687745425a53704f4656427858702f5250524e522b34334f474d592f6d673575783945334738366f6a54483952587150537651375778363539647864474e794e746f5244446b6d6a6669656c425a706167546b4d77534f3457432f666e713077516448514b6355596c2b6c5a6f586752706b4750765667714f6e42425959786c6a564a35414936556462346f47343642794a416458373157592b58686a3756566d7354556c70514c62757630357032684a774b41686c565147764a50714e5253714477396c684b6350346a2b3961486c45475439497953656f526a5a336b3762466a2b4b68766a5130536539417876534f635350696a4f2b37435157615a3053445a7175643848776e336f4f6c43382b424b467769576b794e58584e68756a456a5638465a50633235577871666d794158397762453966303446644b314f4d687268345a4c7a39325a6d432b484e612f5372684d54446d67363870763270764d70705657764d4a646564616f4e495948704a55497437676631655042563248302b3956334a615a63454754642b6853505859596a7471754664737a746c7068657a684d5344344835724a7572454e354454507844416f504c4156533878525758625a747a4d4a554b5230454d733043724c566d5632576d4f50484a626a36506641314e5275422f4a427a586242474c594b3665326d4b6673565244554e454336576f55644a5a5150686d6a6a3349424250456b4b744f4a4e544e425a466f7964455363754b4b6d544f3665513067494e48334d5968735756647a6347537a733669434570346e4970473936496d6774455934465355514b6c4f43434b706948772f4e42526f456d4a6f756e366441486233754c554876584d6c557478585839476b42716a4d734a68696734326b6d6d614767674f74306d6a63495045386b73715642356f4d5a69324f615565396161434e6665714b647141566462345747322b76395879574f31454754466457375079374167614f673559747571794136307a75644e566c514e795572484644424435494c62596558556a494131564c305a474a5157427671785077514a634f5167475059676149434d786b6d3165324b674f53496a71474e454668416c686955766c76696d696175506232344b7a57527a2f4141515a5a5769507753302f42644749457855566f45766b563135647a494f666f4b684456585a6a36652f306741713737474d5750547135315163474d70514b3357765572747343494c4433725466394f4559616d78344c6e584e764b424464714471625431667935566f654f5336633933472f453178354c79524a79577a5a33792b674848325a42333742314267756e74725a6f4d317a2f54375238553831313452515851714b4a794344326f787766745531413969425a7977794355394e564a53666b6b72506b6778623237354e69354e6e594e3731354f3136686374482b6e49687a3272762b7558644e6a792f314873772f61764b426e5a4233396e36744f35495176537248367348375636486262753349645a416b33682f497277397155594877752f466461334f4d6f744d616767395a47555a3573724245354c793449352f376c59496731695a66377345487042716954516f4e494c7a55355849395175336e2f6d7038557374337552515869575056716f67394845796953394538533153764f574e3366496b382b706152767430502b70333655485a3069574345586958646379472f7742324d5442763563554c6e71312b42776a4c322f424231626b7050694b716f4636593064636537367875337035635232452f504e4a2f63643661366f486c67673773582b6b4a5a6954394869344c68483158646d7574694d59365238316a3366715638306e632f774273574b4474335249543638776d30475236714c6e656e616a623879626b385a56585242514d30566c76527135344c526f656f5765377034667351632b3853412f4263322f567a6b756c754c6743354e38786b2f464266734c6b36687777374636437a4c5546356e3075506e585262694866344d76554733627464637a515952356f4e64766b74416a5769796261526b4f6f4d3633516b3253426a49414a52302f6d6e63477148694b43655a70476e39697033657a6a764c527333504165475063723546366a687752315537454845482b4a374955653537782f2b536d73656837486158496e724d706546363464677858623148484a63373157395062526a754944775377503856454758317a653364767073324a79673736356674584668764e336f307a756d593454716558466568334d447672455a3241504d47504b6d4850685265617665624b396f7574625a75587551435070385055534932744e71374c39526b306d787950344c542f2b456477332f4c6150664c386c6939507333622b3968486279714a6174587839754b2b67484376374851654e682f6839373637734f357a2b53762f38417761315a582f384130667458714e54317a554d6d516564732f774349324166366c32556f2f77414d572f4e62376638416a2f7039707636576f6a4f556a386341756d57474344745242524459375732576a5a674f794472534a61656b42683249526c394b55544c503845466f6e4a6b704a6a5230444d487177514578674f327142704675616e69795361324c6c4b626e766441304c306f6c706d6930362b4b77334f714d6f356b552f4e4c3658765275376253706467644d6832494e336d4d3771733368495956775a574d654342362f4367704e6d453852584e56446136432b6f34725249504c69506b73323633747661394e7776492f524848396e65674d6f61616963325043536f726272475570562b6f724a663954764d664a4549446d356c2b5334323733642b354f4e69567a564f34326b594150324950512f3343334b44544d64584b5666642b4335587150716b4c585344694b704e315974656e51496a706c4b493670634a63733135692f656c656c726c6d674e3763547653315a4b6f314b4761596e336f4e573176434854337275625464304a315038416776506261416c4d426453784d574c6844394a434474776b2f5974567164474b35597553444e6774456268385a346f4f714a4d587939755330514e467a34582f414e6931525053454771464d55344c3179576348677259584d67677a656f624437754a6e44707544777934727a6c7952736e52654769595076356a4a65756a4c67714e337372652b6a6f753559484d49504d475a4942645a37673134555a6174783656757473305977316779594556374f7857325052743963655245496e394d35663841354c6f4f6444665862564731572b615339647433756f45367630344c736a30506541595754324758354c4265394333376b6941505a49494f644863527476617578365363546b682f7734556a4b7176762b6c656f4d526373794a7962712b54725874663859337436742b666c78393539772f4e427a2f4f61724e6b724a6271456f39586948615452656d732f347874597362706e644c5a6c6838507a58577462617a7432386d3347505a466a2b6144775732394933752b6c3567746b44395571443237463364762f414970444864584e58384d4f6b652f39675870544e6b6b5a767a514a74396e59326f30325943505a2b61754a536d53515447534330476a424c4968394f65535678467968496e506967494a7a39366d72676c316742566d3532494c524e7777554e786c6d6e50494a5a53346f4c70547256567a755a756c6469466e755459557743433737726a705965394a506343414a6c6c67754e76765562566d4c47732b78634f3576376c7736332b43422f55392f506462673344674f6b4e677739717243626d734a692b59566256716733656b6a56764c4c2f7266334c313136656f55784a5a6553394e672b34746c7671464f31656e39576c4c62325a584934694c65397767387636707570626d2b5245754939495351326242302f7039742b70745250775854386f79667451596f516c6276516c6858344c307359474d524c414d75446477596975525870665462336e57496167394e4b41544975516549714b4a726d3074587a726b4365777374553763574941575339666e454e5a6753654f51376b47717874664c70412b38757235435561674573754c4c62376e6444564b3935592f684834725661394d756755334e33337567326d354d596768564e567733666d7043462b42704d7a355354416b556e47714371345a5269424c427832746d764b57784b33764c3057596e583831363235315544346578586d50566d736230586139634f7042736731794a62466838466674745476774c637663734f323363664156327475496b4d4545675036723846664f4178474353786e707a7a543078514a50723673466a6c4f754646726c544c3969795859384d5367353878457a302b7a4c4c50564769336b5a6e46557a746e3673443855484f6c635964575258643941736d4671567a4f5a376346786a596c644d6263513869575a657132735962614552496c6745466f4a66425732707a71434d5370356b5a56696a4766373351516c7a676b4d644a4c426e50743830386a4a3364766d7134753953644951565835644a475a56496a6f6f55626b3956786a55446769546f724b68515a647952555955667358697478643832354b354d7553563672314863616246366631474d592f3776324c78374846426f326d38756265596c45672f77797143756a6339587358656d2f746f6474736d4835726a496469433663375570677769596a7466384174653132747664334e467353416245312b5157665a374b35764a69336248624c4a6c36513234374f417357545436705565586679514c732f527472467766366c77526b7a6c6f7638313556324b3952613953305436587a6a6a78586d44535241514b616c4d5742356f4769674b4169755645485249797a55456d4c3855416b67536a6a697070346f4967526b6f45534b4941363137506148636d744952724971766262667a7073537746536553395273626359323262785a494b6247312b35745468624f68756d45654c6365314e66394a3137617a3555503841794144356a4e566e3574376c734f314e736d6469576d5831526c676561364e6d56307359326e47416c726f654a51654675776c57334e3474394a58563233702b2f77427559655137734a6158702f7164656a33704d626576635733684878616d772b615862513346306172526a4745757079356b6779656c6d355a6e7559377068496631766543537645794f70354c3642367661386a615837385a504f554e4744554a5a6650575a414f59525548775151546b70676d53674941696f7a59496f46314a675755417a4b424f51514546734d305334714d46464e61435349314f6c2b434a516f674a78357142516f5351466c64746474506333593262645a534c653359715278587376512f5476744c586e5348395734503841624839714471375861773231754e6930476a4445385a4b3468366f474f6a444e5355754b436d6367475a494a4f5756784149314958493549456a4d2b325361345a5934763831574a455259354c4c66334973516e646c394163667a5a44336f4f4e2f6b6d38317a47324745664832727a32537375585a585a47354b7369586b717a52424148554b67346c416b4641315a423142486867677a5655424c6f4165614c4b56524a656941594b59714b4944494d67533552795151526e4e4563464841516667676772556c514b4d366851454b44464842544641744d454754476f6441484a424b756951785178375642693643414b646c55596d726f59495057374752763262524e4470306b63577a57367a615975755236484c5859624f45766d7539626939585158777742567734636662383156474f673056325079376b4269474d546b4b2b3565432f79433335652f7569506237367233576f666776442f77435276392f63662b482f414e6f51636c46336f46425446413841675064564b51796156536753676d4e516f61714e6d6d77514c79585a394f395545494378666f33686e77354e7758486443756144316c2b424857476c452f554b672f6b75584964626731645a4e6a754a776c70666f7a4332546b64626d6a2f4642614d4b6c517a444d33657167787067724a5130322b6c4138376d45534d75394c4f64634753437463663249534e43636b476979574336416c70414f61356d324d73503372613744682b3342426543514e5a72795357415464716366594b5047524148772b534f7836377834494f74434f6d504661595538574b6f747863396930784657396e51616f31544a59736a4936657842564a75354a47507852493449444667674e526858386c594b68754b56337879356f6a676773694778434a4b574761625341677175454874565178596c58796f7153546d676541494b73795a55517057574f4b7331617539425665425a6a696b6b434b6857584353346c6d715a6d6a6673515558415a6269493565356277424c506b754b647759656f78735a474e653676344c726941422f46426643455930696d6570644a43543975534f683855416e31466a6771674b70726b72566e7175794549385a46766d756266396539507366395455522f32347638634548554d574e4558303430586e4c332b586265502f44626c492f784e48383167752f35547537376933434673484d3149397578423675355161706c6f6a47532b642b713362642f64546e612f77434d6e703573337a5632383375383349315872684d545454345165373969357a30306f4257626c422b4b6d4161697473376137667061695a66796841674c5970537a4f4374773947337549737a722f447857613774726c6a2f6c684b4a356f4b65614f546f347051674d716c6b674b4f4a5955436d4251484e4443716c4641616f434f4b41346a464767556a5846414d4d564855464557514156524a5179554b4356433632326c3532787532763045546a376539637031364c306630446333674e773468435136587134374f434468374f3335312b454f4d6838315a366a507a4e78634f50564a656d326e2b4b5864766346337a5975487958473955394333487034383634524f4250696a78353051636771594946696f354b434d6d425331524c343855455161727068586b6c49515156554e436f69574e554159736d4f4c7043636b34636f4168676d31635649524d694978446e356f4157785a474f442f67756c5a3941337438504730522f4e5435736a632f783766777162644f556f6e3546427a41575373366537626e624f6959496b4f4b54464241757a36483672505a3359326a573349674750617176544e6859336b5a3635364a7844675a454c4a66737832317a704f706d6153443646356b57365455354c6e657037375262466d312f7954702f4b4d44333971785176336275322b354136576b5a6432666637306b3974474f6d63697a314f5a3745472f6132664a7469484148763572534c68645657707849614b63454843707951587875566458366e4e46686f44514b793349754851627871774a54466d61586857555331712b6f3665507551655939632f782f53392f62594e714d4f4338733746694639526a4e364c6a2b712f34395a3362337250526334665355486959577a4b4c354a6f6172665647685730573537597973586f6b4848745448546a524230746a366c726a7076552b6d4d767a5856743367354d6978646c3561374f4d54725a71354c587464357146485165696a4c555163566f74456e767858477337735238526f74493373667166735164505469785443517469744b4c6c335055626475684a4a3756797655505733486c323341474a7a516176554e38596b7763646d4a58496e6365707751326d793350714a4d6f526f66714e417654624830477a74514a5842356c7765354278746a365866337045744f69332b6f34666d7652625830797a747737435568395837467667535270774348687843415941444a42435663455a5677782b4b434f48654b68716c4c674f6c6b575143515973714c7472574f6b2f76563462776646557a515a6476752f4f657a6370646a385662347069414855666d756436714969486e52706342614a562b755549323554704f4c48746638414e423368455a384657664c486746564a463476795766633359625330647a6471496a44696367676f395139526a736265715a71664448396e42654733753975627534626c772f75513375396e766268755437755157594944474b767453306c5a2b537568306e744b4462627678674839676b75376d4f6e54795755544d697877514543614d677277515a574d2b435178306f4a4963554157527877436e4e414646436f45457a544f3154696b4e4551675945684969325367514668526c4454464370356f386b4543465563554b343449485a797757713174336a716c2b395a3451314c6f5739764f4d5272777951555473694f494b724564417174647a56474b6f6c4642594a327846675654636b5a6a6b715a523030474b544446426249536a565634674b324d364f556b32595a4f67716b32534761494e6171527851646a2f414233622b5a7568635068743958666b7652626a6336496d6368714b71394d3258323232454a654f58564c386b32347361496d524159423048476e4f5535397156315a63476f76415972504a384d3046776d35306d6a726f2b6d376f7765427175535a744e38667756384a534231352b324344304a7635684356374e31797247356368354d74634c684a3467494e5554493434706f534b726761754d316445596c6b44344a744e4b6346567244746b726f547a7951474d4d382b436d6b6774374f6e68666a6a696d4f347466584a6b4172453855484c6f4865516a476a664255587439474e492b39427142306d714572326a7738567a4c6d3766785a707675526b66656736486e45736e6c626c4c674f61353864324766495972526139516a5073514735596c624c315432355470724c397130432f436365315679494b432b4945736531636a662b6a6d2f4c7a4c525938633130524a676d467967664642347a643750643243383448542b714b50706353622b59694f50466532315a6c49624e7134486c4848367330486d4a7335496248696d314275486469757665394c6855776b336375646532336c59534a62504c35494d6c32335446717167774a69786f41756e5a3278756c674769324a437676656d77624a323745484467347277524a4a4c5a4c625059454854426d7a7a5366596f4d6d71696f7546327232386c6f76574c3043326d697758444b4a5930355a75676333546e67735736766934574741526c644769755a57514230454a4244356f4b327a596e656b4951476f727637582f483452593335634f6e493855484d394932523375346862506848692f4c74587634324e4d52434f4347307362577a303267426d79766d4445307a51565373687331524f7a6e46626d7a435351377767357a54474f475358797953506d74567761527879564c78486951574d4f32696a4741476e397962704279554a4767745641316d2f43525972546f457779343569497959352b3342474f354e73394a4b44706554496531465a47687a576131766f6d6b73663476334a705838776761636d706e79533830496b59685a505574353972747058446e5149504a2b7137767a4e39637544427a48754646584335304e6b7355695a796c49346c474e306842716e667a6479436c6c4b5532345a7173547058696d6c4d64794270416730344c4e4f3452307137586c525a6d3671315151534970577131656e335262756369736849464649413667315367394f545153792f4a4b30644e66795337573644623058446d7176755a62586361626e56476e5a374242707448793648773546573732775a784578696c765168507174355a5a44383067336741307a444944597555415638625a4856386c797238504c6b4a57384574766653697a6b346f4436336142456234474e4a4c6c324c4d706c656a7579687574766f4e4a466c6c686146747332354d677632653368596a70465846563078754a4d514f367135576d6d724c4c6b7249544d5471474b44705849446352307a416b447971754e752f5359794a3873454867756e626d47773534712f54433747767651654e753759323855742b794c656b77774964656a334f336845504d4d4f5046636a6332544f7a356c4e492b53446d5250484e45686c49356b64794271676d42576a63572f4c706e2b4b5861572f4e757847542f426239375a31794a41356f4f5679436e775479746c3845687155415a7171436d434a43444630467475364c654b7438364a44685a70444e546b6774596a4e617470656a433531486773414c59706b48543951747463647352475171736c796555614c587572766e574c63706455683076325a4c6c536b666936432b63656a556343714d33542b615a52306c4a67487a515857496d37495234727165705445376a74545470584f32554e56316c70336c2b4d37783872774242686c333156654c6c644746754a69526b71353755455068376b474c414b466957526c46697955635542307164694877525a414d457a7555445770785177514e452b395759757167617369677541416f367434425a6a645a58776d50454d4851614a4451412f77576a5248537a39797969526461664c4c746e6a37565162725a4d756b554a7056614977445649635a38567a624c417574746d626b50566b476d567438364c4c65326f6c456d6a6861546738656f2f4a57334c5a72496f504c626e62614b6d6e77566578746562666a4750366775397572486d593156487057334671657154564c50796442337472626a4775504262596a67367174524a6f4b6a6b74514444674545354b756477674d55397a54526c6c75566f3642714168303270772f425a71365666716f67382f2f414a42495047443178727a586e764c7175353679504e75475271632b77594c6c655249636b44776952517252616e714e45734c514f46467574374b4a446559394f4341776d32565532733471794f784d762b4d6c31622f623977422b70426976585a43504a557a6e30766e795730374863683436443731447364794f6b5774584771436978522f306a4a61664d30744c6a6b68485a7a746c78485468696e4e6e79356451656e596771755832714d46544b374734433250344a363674496a2b4b6f4d42677a666d67477152724769615573415877544347706d493738555a696e5655494b376b336a324c6d58796230744b31336d48526c4a4e3664737863756d5577664c683853673773523564754d63366175437374783143714a6744584a6c6247444d7737454334785850334532496942557264656b493043354e32345153634547626379484131584a75456b3652556b305771352f556b526b5631724870316a5966316230784b367a694d63767a4b43335957626670316c38627376464c6745396966334d396275497244356c7a31533462647439483148322b5337396a623272554243324f2f4230456951374371324174476f5644786855697642487a484a51575375696d53496e5668677163527a515055414b494c64645479542b626d532f344b694e54696957657144544362555454745276524d4c6c524b68574b65354671697150714f6e785250636778656d322f734e316473547643336262554e5456666d615558584e7a3075586a6c596c4c6964424b383936686374333732736161414471724631515957346736726351663155494a51656a75626a5a776b4937517738776b442b6e7038506146726e495244726a62474e754d59334a576f69664746467646777a484a42703136303774516436787975306f70357a31786442744a6171527837666d736374774a454d6d6a756f7a6a7a7751615152477054595534354c496430414e4b6e334c487051616461686e475642376471796a63505630766e674455542b434453626a315131434a5750376d47565550755134596f4e5a6e395179586d372b386c365836674c734b776d4f7363767a586346317753635667756d4d6952494169744742516479783670744e7a44584335426a2b71682b4b6f766572375378306736356677666e67764f336f573842416637575759323272683845485a752b73376a636e7972656d794433792f4a5970586f7765654a4a3669566738357a30724a63636c427176657143502f486a78576e2f41422b7a724d3937642b6967504d35397934666b6d6547613775353356765a3750374f32434a6e716c4a427a2f566435397a4f6d425076584f3031634a324f5357494d6168417341386d52345a4a614a34444d6f48733945745842623976593835382b444c5059744356563264704734497342555a6f425a6c4754784a71744970346c6e334f334d584d4b444d42437875764e4f6b7446754b44624352484d74386c73733361615a4c474a52496f675249476a6f4f78626d414f6d7130422f7a5846735844474e4356752b346e70653242492b3542726e66467644344b755736306a56497346356a66657062694a496e48543766465a74763935366a505262636a6a67416739502f41484c7a4a2b5861633178475333574a5357485a62474f787461496e712b7166746b746f5943754b44534b676a4251506d716e4936696f4c6a65374e4261626d6a4873554d6934344b6733415254324b534e39384d416731444638464e617131545043716b6631494c49744955536b3035424c3567474643507853546b35716759797a5531506971764e47484255797530703730476d55744e546b6b4d33777848465a664e316742364b43597846653141327375364a6d44524b4a783936496b44526b4467534e54544a4843705664793849526566542f4d7548752f584c646d6c6c70795164652f754261447a6f46352f652b7279764454436777584e7662753566665763636c55774a63464168655a34383144494371615441734d542b4b6b494f5851416750696e6a5931534374387654686e5250724170486967312b6d576f6664327254644c343979372f723173666154423975444c7a65303239364f35743344487069525876586339657576745865766d412f416f4f5274625974306a2b6d7057343851666573634d666856616169464255596f4b627031386c3076534c676a435553532b756e65755a4b595a306b6230375a366146366f5059786b384f70716f6d33456656546b755a73722f414a30514c6771413961725874394e7433384f584e41707577692b694d70466137424a6a715053717054416a2f544467716d78624d5431596f4f67576b6457704776462b4371386942464d5530594e3443676b70794b386a2f6c64754f7533656a6e48537656335a644c5a72796e2b54774a466f6a4c552f6555486e7257346c624b376e7033717571634c4c564d68334c6a4462545a7775683662746f776c35687867673966626d4943754956706c30354c6e376664774d5a516e3473586c77574b39766f776b534a672f7736634f434471585a31447379726c4b494f4646787836334345736535585433304c6f4131686b47795673366e575064513153454334435765366862743634365a465557643563336b764a684872787851646230363143583964744a77346b68385630343232384e53566e32316732344344565a6134527a434239495a7a676c3871426252696d455358425469416734515646325939367276334247456946624d617145716935714a4551677a4368356845774a7771746f73786c5568455732504a30486a66586267455932754d7466634b4c675a556f757036704337767431636e5a695a5242306a547957552b6d37763672552f3971444961725473396e63335532674834386c72742b68377151636752663841556172586532472b7457394275516a43492b6d51442b3542654c6b4e6a48794c44612f7261726e6d566876332b6b36382f637363644e71565a4f6b6e656e654968487348424272325839532f726e2f7832787137577175644c716b5467506b75707542396e746a5942477166564b58344c6c41444f69414f796772553936494c6d675544354941412b434f70734d56424d6b39536d5a515144504a54555771694431494175376f49517941716d49654f435679794379795a577a71573065713359476c46686e654d68474f5556493658643048542f76312f426f6e744330624c2f4a4e315a6b626471455a616a534e6365544b6a3037306535766d59616265632f7741754b3958744e68593950364c496534336a4c616b4766636e65377a5a584a6269455953595368474a71577258386c353466354c7634304677446c6f6976582f56315537563433317a592f6233664e742f38632f675543623331666537753135562b3571672f414438417559515553546d6c4d75434145756d5046414654745141423144524d4f4b6a75676d4b4e47716c50443471616e514d42717751726b6a6770676747504a4275474b595643563251466c41674335525a7355454e4d516f4252444b694a4751716736666f6d7847363341312f38634f7158356436397a4175567a6653396f4e6c74343235442b6f657135323542644951664242596572464c69464334504641394977514b324c4f6c6b6455693375523156354a5a6c7662424258642b4b386e3633762f4f6d4c454b786761383546646a3166656a61327950726c68324c7945716c35596f41374b417669676f55455a52544a52335148745152716f7851546b6868524630714269645347434c49464248716f7967716a54734b425754464245645645454b684b674c59714941464d4170677055494367654b67554c6f4351676a32596f446b67694f4b6d4c7159464236662f476242386d647957457078482b317a2b4b3944442b4776465976547248326c6933626c516973753253337769386d51504770315a2f465233527779716742586b67574d3278586a50386e6949372b6263492f2b304c3139795a776a6a674f78654c39657652766275556f4d5147486177516374514b5578436d4b434f364b67414f4368785141386b63454f3148413051427149366b4d6c4f314151534d46713239317a314c474237315a5a4c53516463733449393663492b58487842386b756f41386a676742496936534d7a713075577a566f42494c565358625a5a3456374546746b35684e766431356357682f79536f56584f364c4d614c42474d7239305a75634b494f3773346d4733726e586e566166546f694570486958516c4853414d674d302b31656c4d4548547a314841725662755249616a382f7a58493153696553517a6c4f6f393644306354376b4a6a4d59716a5a58546374395750483471386e6d676f4a64504555594b4545763755516a4636354947455753314a61724b78797953474c6f4c657846754f4b55457067577751413078564563666b723578656a4b695a366d474342774e4a624a412f424b4f47616a6f457553416a547356446a484a4e4f656d706f714a54656e464279726c7a2f384166467363496e2f326c6437377933614f69556e6d506f6a556865552b79753737657975423763426a5041397937316d784331482b6e33367354326c42706c7672683845414f486d4835425937386275347063757a2f77424568414b3270797077344c50644e45484b335779326f36704362386456567774317478626c303448697539757074476934562b365a305059676261375933427a58557337533362306d574b7837533943336248483279567075655a496558335a3151443165374532345268556e7135726a78695357694b6e4a6250555331347842635245592f42566257496c6469446d55486f50537651346152653355542f4442656a74794675416a41434f5452574779326b4174514c514b6842706a646b616b6c6b733451766a793730524f4a346a32346f514f6a417078774b44794872486f4a3277383762764b336e786975466b792b6d354e394a34344c795872766f76327a3339754f672b4b5036663249504f67414b464767375647664241477955436d42555a41787167554347556a46304266696f6f416f5336414b42546d6a71434141766976702b30756164745a3532342f2b304c3569614c3664735a522b3274662f54685475515847343252584e2f794d2b5a3666634f4447502f75415851614c36736c7a2f582b7259586639502f7543443534796e59696f6745533145634f315251596f497941716f46413451454e4a54777149455a49436a6777534f7931587470637357376432582f55646832494b72566d642b59747744794e4146376e307630363136664155457272504b5a4748494c42364236634c4676376d662f4a6370446b4f4b374a41464a2f7451576d5a4a633056426d626547654b61556a67715a6a5557785159743961687559745048346a76586b647a6138695a6a6b7659587839516f79383736694e5654785163794e4453696b704f704771684c684233592b6f32507349374f426c724e634b4f2b4374763776524d516d47303863666775487441392b3347525947555630505735572f7572686855657a6f4e6d333330444a3357364f3871324a2f4265504c73797474376964756f4b44326776784a65427172425056526556732b6f79465a444264537a7668634161704b447457726c4b4c5843596b48584b6a6369574c34664e61724637754b446f50704c424d4a67344b75424538316839577433504c31577978475846425a366a734c507141486d554970716a69715965682b6d674153673562395266357375424c314b2f613856475273376e64627157697a456c7a322b39423037332b4d374b51506c334a516c3275507a2b4b796a2f41424f4a70472f2f414f6e397136323332707373622f584e71384175695044306f504d2f2f684f3745482b734477654b4e7a616275784374727a50346f6e384d563663486b704b583068776738564b7836684d4e48627944357356306654763862302f316437582b443971394535346d695756592b315541687069476a48702f5477566a366f306f6b3176674547497167746f66436a717935716e57426d71726d35414c5a6539426f4d75615458577179472f7159466c5562324c6e3969445a647544556b6e655974695077584a3350716c6d7a31616e6c77433557343962416b3971507651656b6e75675430677573392f314b4542716373764a7a395376334b69544467716f58504d50584c333855486f724570656f5864633657625a423756303773764f493159412f4a4a3654744958747042753031784b36483255544a6a384544446457374674376836492f564a654f396239594f2f613361667968385376542b6f62434d59656249793077424e61674e6d52386c3469553964325247475647515a634648474a43736d4e4d714b706b444a32793936534c68477355463176686b7251787148436f665365533032654d6d663971424a57444d3667465464745a67667658544e313436596f796e4579306e4442427858794b4336473432735431524c6e394f617748704a4244494a324b61526b6751796b654b434142366f734547515a6b4443726f4d785a4d4b4a53794363564e524b4f4b6c6670775145593464697374577058696c694858537336576f5544573974434d65616b39784462784f71704b6c323770684c5157584b7554316c42644f34376e49706a632b6b4c4f2b6e73526d58397149476e45696f536d4e653144553141695a6d556341676a7467717a7854303973454a42756c4171366e6f2b326a6475696368534a7175593346643759544669324150456739534471785a3659716a646872524a7a42392f376c6d74373250436e4b7173753334614b467736446d5367326179376d33707777433746734351484e2f676b6e594578314e5642777051494c6e366c7273744b324269516a643238713675774b67644575784131772b5758664661624e38544442337a57532f63486846567632666f643832786470463673673078754e2f4b7455626a747758424e32646d6b364e3765324b33324c6d716f2b4b4470536b6537323731584f63735173336d4e6d725954594f674275484279733979657373592b39624a4d616e42566a546c6e6a79515a446a7055496b5731554330615257696741474c494b4262634d4d73436d46715748347251475961766d6d454271474341573747726b72764a6248676e67593459704a3342562b4b41776e4b446857776c71437a4338454958585074696736413975784f4c745668467838734666432b507151616f7a4770572b613435757359765244736c76337859737a75792b6b46753171494d767148714d353376746247666a6c77664a575168455130342f6d754a3663656b334a2b4b556e585574585a4e77716731614a5a4775535355726b6145344b7931644c366b64786345346e437543444e4766315a717758434d525434724a61736d4631785545594c5559746877514f42546d714c7533745338596f7233344a5a54426f6735653439453274342f3035474a2f697737714b6d5038416a6c6e36704675522f5975715477696c4d674452425473646a5a326f4968586d6356757548494c4c47626333376c62436353424a427a39317367535a577053696634542b315a3750726d3532557847392f556750654f39646556794f6b6a6a77584b336472552b4344302b793339726577387930582b5956307778634c353773743363394f76786e41306671344d76663766635233646f546978695167707547682b43353132396f4c4662372f53584f43356c2b5a596c42625a75506947354c625a366f313731786256382f552b4b3674695a716663676d687a526d2b536f764269744f72395371753349676f4d2b67753436614e2b3158325979694f7a4e4c723745596b53476b302b534452455639734f53386c3639762f75723568452f30342f4e6458316631515749655644787a445077586b695351674d693141704976314244464e496f4a45735854534d736c57343936424c346f484d75415a492b53676c7839366e5967466346324e6874664c742b6449565068584d73327a636e47497a58704e3948794c63595661493078375167776c7738744c643654637a463250585766366c724d4247333163467a376b57777a514333754a573650376a6974312b775a32396476712f42636b416d656b4c562f5632686330644174753866424c676b756867345333524569696f4c796b673337486330302f56786b746c323450433449476135746932596e693676747462664e736b4736336448424d546d4d6543353872725364624c64306b42796730327061636c757346773061726e7844466972595847774c494e66714e6e376d79304d6669764d6d372f516c616d574c2b39656d73587030495066785846395a326773584265674f696677495163466d70696732444a704d554d6e5158376165695776677473372f414a7034646977527045746772374236576f35514337437561724577797376536f566e314949594d53546b6b6b484e4530706b31775164716f464b4c4f686a6769376f427a5535354a67324153676a4e423072554466326b322f36646163317a6f307174657776434d7a4354744d61566c6e5174696744676f6471425046456f4c39744e726f4b3037617a35684d6a53717832726e6c5445786b726a757454754f78427375546a6163346a3572486476456f454764516f4965386f4b515065697a31566f70584e4457306142425759365657496d57436552314941683845436a69706d6d3745417a6f492b5a513745324151785141566f6d6a4a756147726770795161726535342b2f676d2b384c74334c487a5375634f61447543776531613476627044685663364f3873415a6a73437368366c706341592f5563666d673645647a536a422b53316a6477774f742f682b7863507a764e477641632f5a3034753661593936447258353036574a5a56374b4f6b307958506a6668704f6f73742b7a6154634438554863747634763272514b4e38566b3235476e557a4c514132446f4c4a6b6653714a687130547a6b345a434d6e656a4d677159346f58585a3846664a702b4832374668336c2f796f366d635270584d6f4f44664f712f724e5133636a42703434425a345863424e6e783746726a4c554b35494e454e6b4c6e564275395844302f6377773063386c627477423031576f5351596a597678414a6a582b4175704b2f5543567539334369365669626e45712b4d7059534a5163614d34334b694e32506245712f7a625551336d546a33454c7343636d717072794344695433494f626a675166795757572f6868356a6e6870492f42656e68707a716561646f544657357567386c393742796459662b552f6b793057376b674b587262635448322b4b39424f33624830783979726e59737a69787478494f495a42794475694d4c31674869566a6e76626a6b47395a624e75433638375732496332625a2f30724a4f7a616f664b68486e70795163532f756a662f70776d4a366a674c61375778324d72634f76784e3465433057624d62593130313553624a586e4e38554165492f4a56334c683155397945356753597246657638304664362b57784335642b2f47526330543374773141335975526675536c374d674679394939764a4b4a796e4b704a4f437077775852394c74617268755561456456654b4473656d37694f336a355048452b3334727151334e58586e3533476d5a4c6f376264556249494f703575716a702f36654a78576545684c77717933624f6e6b4d6b46735a3638735663426e77516a53716b6361552f596742444a544445734f3735725245784654697137742b4d4234745077666b677958374a74764f644967564b387a7550574a3370474e734d446d75337549793333515330442b6e39584e654f76526c5a6d596e45467663673775307444542f55365935366f356e34495837397258707475445636394a376c7850754c30686f6c496b634356585642364746793949434c74796974666d58515831666b764c5276546a684975744e7231532f6270716363366f505279334d7644454d56544c64796f4a737564443178793179507578547939523239776b6e55785164443732417154324d465075746542584a4f397374306a34716666572b62494f72473859347937555933677a757558486651617250676c2b3974696f5164543773427a77532f643550584d6c6365573972716a6970724e786f3939554857756272793561386a3763456f336f4f4643734832573475523178693866697364327863746b367365314233374f2f4a4c4769754735677a6b73764e526863696153374b71324d4c6e3159384548543347346a6c2b62706242684f4c534c35726e2b484555775a5062686344475a4c66676733584c5772716a51725035503952354139363157393030472b4b7432396b3379534f72385851596474596a4763707a3845612b7a72424f34623869432f7658593955303272666c5238524e65786359796a484b71416164493746556170703348775367746b67426a384672326b49476c772b395a5878664e5062737a75476c4548576d4c6473612f707971757a7477496a55633634727a64766258476a4147763656365062576851586268476b5a52782f6367737641474c635679622f70647937313268586a526c75765772576f2b54753469584335454e324c44752f7574726246324e79463247456a41426767776d37663263774c38545262624871317162677648687757502b2b334a556e62747a483855582f4655626a664463522f346263542f414a4435464236487a59546938545258326272436e3731347946795550415346315053623037743851755336514a533979443073397239314679326e394f5876576a5a54733262666c7749476d68302b315678643736695a52305736522b66617332777453757a36525836667a5165736c6359646957633952437274575a51476d5438304a53496653474343375868785365654836637561716e49344a4e4761437a5872484a434d6f73477743724a4d65776f4333634c73636667673157376b6a6858686b74516b4944725845763649526134616b7350327279753733563757625a6b5245654854536944326d34395473326a575142773973316a6e3631747751645163385858693850456f653142366f2b75326f30695155683964736a42796635614c797a315246454871727671756d506d53745436764333425a702b767434496c76346d5741585a33624549533845544b5134317953474c6c682b6144664c312f633849747856567a315463584b65597a38466c6a62426f7070417163767751557a4a75467a49792f6d534d446d7063494a664a4c46685641584a777a54664a41564e4531554350524f4c756971476b7936596779644357307644474d672f4a412f334a3141347050754d6d56586c793446526b4862732b705275694d4d4b68622f585a532b33684131424c6c754f53386f61463856336439716a744c4d7046796457702f3841306f45684d5456395a423379584e73544d54703472646175674446425a4b417937316d765330566c6774635a426d415938316939527062306a462f6767362f6f323738304f504550697530416338463444613767324a3668795873505466574c4f34506c74706c383048576753615052567a67324b74677a7350454539794771496276376b4357485944496c5873636c6b695243596a6b3631514e5769676c774c6b2b7237667a647263676351306f6c646544794a4e465275624a75774d65556b487a32337552426d4c4b3633764e4a6646317a726b64456a444d456f323763356a70447367375839786b314c5162697a4c6d626d38626a61385170433563686a68774b456a47356b79444d2b61614e36556343797638414c45734b4b75634e4a64783730436170537a6638563750304c622b5474596d49363772796d652b69387473646c393564454934597935426537736262797847486867414f316b4477445947717568646937456f78735146534f537438754555433673796a4f62597070546a62446e4156376c7a4c742f584a416239773546735573643164746b445334504e4e4330494455564c35315230686e514e653955306a776838787158483366716c3364516d4c4930676a5447587a5233662f414939733343425639497a586c3578765031754f5343474e3362467178504c6d6d2f754f34694b334a48765351686475533078446e32782f61756c74765341432b34502b6d507851594266334e2f4f55766974316e595872634e64352b7a674671757a73326f3649595952616934397a64336f48706e49446736416232496a6330524c686837306d3075787358424f57587a56633547637455717669745731394933653762797252494f654139356f6770334e2f7a704f715156364b7a2f69642b56626b34515076397665724c2f3841696b34514d3756324d794d744c5949504e61694136445a703774733279597a4245676c4242446e42424b5077516438634558716743345a4131425556525936584b51416e7455485046413536734371334a7854454d6a50706f674e697a4f2f4d5772514d704530697655624c30437a7332756236516c4c2f414c5977666d764d576238397663467942615554697658324e355a33476d344d5a69725a46716a7651644b3375666f68445444736f4644636862444175567a7a755449644848426262573161494e336967656370534742495754656263583755374a7a474f65724c34727275426867736d3668704c3441346f506e6c323062636a41346969514231337658396c6f4933456169564a35562f6175445549415336674b49705641424152685641565452475a553035424144464555783936684a4f4357767551457762425443714859697943595651666969546e6b75723666364864336731792f70322b4a2f41494f557a4277616f78684b57414a58764e70364e744e73306f77317a4831584f58414c7164583073334a42387a4f337578596d456750355674394632766e376d496e345964557535652f6c6377475075584e7533504d7661517a5248306873636b4639736d5447667656346b473143695345446b475430774e5544616e5a6c584f51435a6845446973383242596471427048492f425a397863467542757959414b33577a7556357a2f49393758376147565a666b67346d37334d747a644e79527a56504a4446453845456f516c4163714570674545497a4b6e34714467636b4b46424d45543156517778524d736b4146635641575246564345454a517755636848346f4977356f436949776334495056414f52524164544775614b43484769414a434a785549705241487a526a785142344b477143455067703471493555514343595971554a557737555831464241654375326c767a723175326335414b686448304f7962323874673864587571673975414b2b355877353056634975544d382b785773794148344a5a7645315a7355346b596a6736707554306a587751595056622f3275326e632b74744d653965466b58787858632f7950636d64324e6c2f414f72746b754432494761714742524449664a416539424873532b466b44786936414e61714e6b6f6578424367464d4b714f775a415a4952634b4b45676f4e2b32336741307a783471365632467a42637169736a645a7553446647754859746c71486c774d352b2f73584c6a75354138386c5a75742f4b396238754e4b35634546746a2f414d79553957474c64697332304247374854577654334a2f544e6e636a475632574534733345635666437931324755596d5239364470376b4239497a52735a765371655839516b69724b51444679677375512f557170453968384d57346d69304175355064326f6263655a50584b6b5955375367363231742b584152354376596d7556634b51505332536d706e43425978635033386c4865675456774f43444539794235534d51797270696a672f42495437304638634f535a7a69714263302f6972597541416759757135683670334b6d5770426e374b705a466f38464a75634f3956546b324e554646316d3733536a715655705051312f617234773935514c4561523070355350464e2b5046557a59666b674e32544c6d3337336c2f6772626c77595358493346386a552b4a515a393375616471356335645365374d794b72414a7145486332783245346a572b726868566250733755682f77434e494538496d6f586c784d787777563172647a6867677539513274797a4e376d667a51394b7369377559526c7831663761725350552f4d742b586436342f7741575076355a4b6e302b37437875347a4236507a51657568496c794f31585150425959585a417574567537727751585250755667592f6d71346a3953494c304b4334797969684d516c457850564530354d6b485858676d686b4d4548696657765454737276542f77415576436677584c69766f573832734e31613869655961504b584869764133375539764d776c516773554661464852596f563455515156554a616949775a474a51415949446945614251424144696f69454d41676a386c394c324664705a502f7977766d726535665176534e632f5472666c2b5051597837586f676c75374c376d5433486a6f31435041382b4b54317a543968656a69656e2f3342637a2b78377353387a7a4247594f7676343831302f566f6d507039324d7a3143494d6a484f754b4477476148616f374b45315145304b4646416a45494170685252792f4e45416d71414b46514f6967657a447a4a78684d744677765737717843385962632b474a2b412f4e654e6571397436624352747875334b796d4837417944704268677741464f78416879386338307259526b72496b697143535a6e56457778567477454269574a39765a316e756168326f4d6d346c30314e4f4842656633383647475475757875356b5a727a7536754f534267677a48676f6f376f7367447035536c4b70716b356f7545454a77515a486d6736417850765452757967524b4e43456e4e5236506d67366d7939556c623662686f757474392f433478586c6330305a79686767397a5a335a747471433352756959634c784e6a314f51476965484867753174742f495739634f714c31624a4231764b59394f48426e54334e774c4971645077584a5071735445766a2b6e50757a566c76307935756a3532373659444344343971446274376b7273664e6b43416664327132787537596c7066386c6e3357376a6169336848306a6b73397671615a44494f3343364c67664643456868376c697358485772706e56366f4c534e4f435633446c453148614644385543454567675a4a4a5847474b73314d4f716935752b33747261322f4d7542384e4934736761394e6951414850753434726d58765672466b456133504350357375447576564c75354a6336596e3651735150464231372f414b394f644c59596646632b357537317a475257656d42526569414f2b4b434c61634565476141484769696854414d484b44732b6a65742f596732726a6d326547585946324e312f6c316d4149323173794a2b715641764764696338454737662b73626a664f4c732b6e39456346676957554b55386b454a63756f555132434449434a4a776173565752694557515878693948396774454135645a37544d7268494769416778657176327469357537766c57772f506773306263397863454c66694e475874505464694e6e613052386631532f42412b7a3949733761493164567a45792b4b4f363948327535676455574f557331723152694b5970784d53354950442b6f2f77434f626a5a396350366c762b484a6359754d4639526a505337344c67657366343944636b336471305a2f564841464234764e45466c33422f6975377a4d41547a50354a6a2f6975386a5561442f715163456852754f4b364f38394533577a7263676450366f31444c48623238726841772b4343706c75322b776c4d504c7048746b744e6933617363797973755833372b4341665951412f4e5a5a322f4a384a2b43736c656c7142434679635a5643444c4f342f5467365346764839366c343568566b6b676330476a79597456435671414f4e466d6b546769586171433656754c6377714d5252414433493969435679524d334c70657846733042646159627768696341475757696d46454733376f786f43516764336368545534574e5238304859322f71486c7a2b4f4b374e726432726b63656f6a76586a585a4e47636f34495061626b57356a4d6e3663317a4a517a41727837567749587078774c4b47394f55616b30356f5053656c374c37712b447165334139597a6f765262373147787359617268595952694635625965706632336136773070334437674d567a647866762b6f487a72703564694462366a366a5a33526c4a6d4a384d6376626b4652747655576b3244393635306f474372775165706a636a636a54425834437542586d747676627533777248675632646e366e5a76394578706c787966386b4767333236733354787630644c63326849364f304c484d79745362532f507651627650655661783978556a66693747693576336a644878566f75526b5431554f42516266754365436e33483145357373457064504a5565594955504642315075733035756b3958466357567745554b757437696e57585164547a4930597034585744726d43384e5054515a386b39752f4563756144725275475137455464424b356e334d59674447716531757054446c423042756d72676375785a66567275726253686d3855766d3663757a6d73767131345473307a6b794157336a45445038385666626d5268314c4a6275786e45453468624e70746a644e5132626f4c3765354d694f316c716a5a6b61797779795a577746713156712b337757626362364e57515847576d754b597a4830342b31467a4a3730743166464c44644855356f6736735a36672b4355334b3566367346674f356a4a794f6f4a42666c4f725551612f4d5a346c567975414b69557a5273306b6a584642624334395451733365724e65687773557077314d416d4e7a54314772664a42734639563349367638413870564357664656626d2b335337636b484f39523044773467727466346a75333137633444724834727a4f3575613559307958582f77415a3151766d365042346665673952767868774c757548656c456b77483746703956333545764c692f4d386c77376c304e52394b42353772523077774331624c3145786c706b2f65756247416a5669726f766269544642335a627354476f4f32537a7976677971567970626b6c6a4d6c687777566374337048443855485a387a6a6d466c336671766c417874302f46637965396e45644f5941575579424c6f4575584a544a6e49316456314368366363564542526b6131513755514b6f427a376c4277344b594b4371434f2f4a544571555551622f53674275496e67666b7570366a507a434944416e765848324d3942314d35576d46387a75676b59494f7a4d7761717a3736646f514a694b4b6a7a35584a46364c4675626f6c6967623032304e787552775851395a674e44424a364f664c426d485a7547495362726366637a3030446355484f74375752494f52576a376549703856734a684b4969614e775379755159427345464e3276527739676b6a47496f56444a3576372b3555536c716b306350314d676433343434347252595061574b787949693158563974346e6f79397a494e4f765044322b434d4a38566e4d342b4c4e552b61613653673757336e716c334c58367041584e6e634d6e654453484a637a593376366773343671457266367875504a32666c6e366a70626b6738644974676f435834756f7a386c4978656944544f455957527857642b433062695478454f437a5551464b31555278554c4444336f49525769424b696a6f43454971496b6345454d616f36434379596e506b7031454944616e356377654256322b69397a7a4935724d584958536e447a4c476f665367356a5534714273302b6e543730705a4145445245567951306f47636a44424d4c7069556e695537454436754f504a43725648344a535643533945446b6844563855485a4238554467495478314b4f3337306363636b437339516c48785634746e337179566954494d72756f66696d6c4453556848444241534771673957544a65354159676e43693157594164537a2b644d3470343335514e616f4e346c31643145766d6b39544c4c61763164616f534d782b474341536b594f6346336470614e6f414774497958436c4871454d6e485976517553646361503830473362414e526261694e5065714c55756c7543744f4449495a3444676c4d7867454e5248746b672b61426e6f754e36724d47336f7a31562f4e64676e54456e3264636938664d3177506850376b486e62307a433430634174573033675a356b766e7756462b797a695653506b73734159346f505a6265745948677278576d53386a593356797964567373656133322f574a3479694e51376e2f41476f5051786b49564b7661744d56787266726d32303965714d7665467374622b7850773359682b4b4471413652584e423873316c2b357345445464694f395043374762364a4362597456426671497153674e775a4854566b7372734c636455794963536c68666a634851524b503841436761354d344134685669524d4d5652764a2f485068373068756a4b735167613531466770627436515478566c73415648424d5a41565a30414148593243716e636371584a6a4842556d362f356f42636e474c794f444c6b3771356a6b324b76334736423468636d2f65643944366b46462b362b4863735a42644e4f526449777a51544f71332b6e5870616a436e574771734a624a534d6a47555a4445494f365444523173537972457030594e7756756d4e363438634468325a30785276544672784442427373626d5675505656644331754b6151772b4b35646a303634414c7436656e5634596a344b794e69516e516c2f306f4f326273414b50715379752f79737552503141576154476f2f7044503843565a446258393648762f414e4f326349527a3755463933656d58525947755877566c725a7a6d646534496b63686b50626974646a62323976426f524376694b3971436b78455332574338543637742f49336b2f77424d7167397139354f496c6b3634502b53374d337249765238567635495048415a4b664e4447696a367149497a6c514b496f4950676c43624571616e4e6355437146776979474e5544456734717a62336a5a6c72484842564146516c3048706f586257387450434d595346664456593754526d317a4631673257344f3275655a45557750657465357632377a614b537a51646332414f546669755a757244536549626a78576762302b5749477650425a64784d6769597254755156434248535271375673386f474746655335683345675870334c6459334d6267592b4c6b675932444b4937553864724f6769506574634967685747345a4e474b446a7a365a65584c48677574365a642b307479756b316a6b6c7537654d415a754470786b6556537364376557486f394d4f434450664d747a634e79654a3937496662445430312f3071794274596b34356346654c74753441506a775a42796231734130496f71504c72774336642b33476b525873574b5554416b4630435145584761317933776a3032682b5378546f77705241435877516433304f38626c79557066544833594c7248314670614b506c32666d754836454354642f6b7a53656f784e6d3547594f4b44715859327434476e476f2b6f554b342b3432393762526c6167536263735935553438316f324f396a6f4e756448712f4e645749463056495165516b474a34703764696336674c762f774274746d3571443658376c7468746f7842425a7a386b486c706257354545366144464c597579735331524c4665306a744958496d4d7a53635777586a4e7a594e6d374f32616153794338587a646b497977576e3779356166796d5a63726d742b337348633675456671516454302f314f2f656e43314d304c79667358654634754149752b4d754338655a2b5553495a594c72624831435a496a4d317950356f4f37714a785569536146533564444130495663393145445430305158694e64575151755338756a697676585075657052416150564c686b6e3231767a7065644c45736772753252633865613576712f706370327865685751704a754753376d366a477a4456492f55417239724f4c4d6539423836774e63556f4472306e722f414b4e35582f6b574b775069484265635a4249384559687a5641717930535333464231445a6f496b4e54425a324c452f4658376d54584a5234644a7173336e566c6766624641394d437339323458624a4764334c4e556d7561425a6e5561493037776b6667724c466b33706945635452426673397063334d744673667a537943377533394b7457496a5657576637465a746245624e6e54454e4c3675617646306b4d45466c75506c30674b4256334c7479444455512f6571353358316171556f7953573445686a45694b42723074593058644d324f7242637939737263347645614f39585862326d6e486867733872356a795159626d7975514f706e474c68647a3153516e366662464e57714f4f506858492b364f4a4e6664524a637554753963792f34494b3446735675736741554c4c4462466363537430625131636b4773654c546b506975647653626c776a4d647936563259454354797279584b4a614a6c385469676f657244464b306f79706950656a72456c665974616a686e6967394436563635356f6a597676717742586f3433497a64736c34376137574e30536c4674567558555062347272624463314d4a76716a6e386b48546d52413673754376684c5848554b4f717a4f4d674a533730624d526a6b67304576574b4748566d706a7955316966676442346a2f492f547649766562414e47667a52324e6d566d4c61574c50493455344c30482b512b6e7a33753241737865634a5a634d364c7832343950336530706474796a38667a51646135657479364447496a792b617953743757565339654335496e4f71676e4e2b6b3135494f6b6470594f5a6f68742f532f755a2b56624e637a77397553306244305466627469592b584166566370384d5636765a656d32396b44704a6e4d2b4c4a7a7751552b6c2b6d327468426f504b6376484a644f4d52477637306c6a63777568394f6e74354b3346424d6766616972755868626a726c51664657536e4333456b344c6e587a35784575487951555333467a63395236595a527a37797237566f447148695a5061735a712b5559694c73677138777936556744794c344b54686f6c685263333172314b4f7a7436494e726b5063673558726671416e66366143505437636c6c736b7967645648506637317a54505857574a572b7a47356f61496553446635317578447148755850752b6f796d425776424a4c6233377765415379324e2b49637837304765552b43617a5a6e754c6b624e6f6170534c653956364a57354e4d4d7939582f6a2b79386930647a4b6c795436655151612f54665172477972642f7158654a3849504966697534447a775757424a5a3671324d7130514e4950676d6c574c386b43324b56763349504f66354873664e694e786278464a6331354934307758307136586952494f4b72776e7175794f31766b447748424267664e46754345716f6c4244785543484a314734494378775259736c4470744b4242566448307663655264454a2b4752413976624259434e4a37554b3468423743305a595a36766375785976473941505168656132473538367943664841365a632b422f42647a59536a4b332f474b534874524275697778526e4457472b4b5148535558503755474364754e3053733351384a654c3843764537766254323177323772676a44735876743562482f4a6e6e6b754a36397449334e734c354c584c5a3031786c4838776738726b6f584861693348424163554270324b48707167547252616a6f43784b544369504c67706b676d6c6b4f5349717570364c7342754c6f6c50776a4c6967326569656a433866754e78344234596366324c314a5075474367673173487554515930514545674a744d565750447851315566673643585a6949634c48746f416c352f556a646b58614e584330324c575a515851476d6b614a70426a517161614f457370346c36494b3774374d4b67537271785663726b5a453971533565685a68356c3074486a672f594d554337766452326c73335a5a65484a7a6b764533626b72737a4f574d717256366a76356232622f515044486b735643674761597367464355436a6d6d4743586d694b6f43412f4a446c6d707a554645454961716d4b694c7452414f53624a6b726f30515269686769575550464247306f6873536b4a66464e775154566d67433471696751676a4d68386b58514e45445566324b434d6967655341797255494d366a492f4a414771695452426c45454c596c656f2f78546130755879482b695034727a646d314b394b4e75416555756b446d765365702b6f483071454e68744341595236353575616f5054323443464d465a4b4e48586837662b54656f524c6d35714841776a2b41663472752b692b745876555a6d4679324b4239634b43504975364472307a7173562b374333435570556a45616a375972544f596858446a7a586d76384149647a35634937615031645530486e6478654e2b354b374c78534c7047705651384d4545454a6f79694a594b456f427a55446f38314d55416f69425667756c36583656503143654f6d3250464c386c37585a624462374749386d416344786b5049393644776350537433494355624e797565677154394c3363617973334f33544c386c3949314856695551547837454879755554476851774b2b6d377261574e3647334673532f3933765841336e2b4a776e457932636a54364a3539683975314235446d6d4e566475647065326b2f4c76774d5a65326172466d34593677435278514b417576364c36583979392b662f41423236747850354c4273397063336c77573444487848674f4b3964633062657a4778625952415a2b50456f4b444d334a75614e38466262735666465a39723158764c4c50693636776a434965575077515578746a4844464c4c5445387a676e75583763513066677348395335495350547a354642306f564c79526a50714755567a7051756a7163756b6c757077423152503841705165704130304b595a726e327657746e4d654e6a2f4536754871473262707552596f4e514844336f466d36714c4c63333969415a334947565678397a366c4f363445574661464233764f68496c7041742b4b57354e7142654e74584a57356d566458384b374e6e314535762b6c38506567366e6e4f5652764e33647436644743454c30446d46587549656242754343367a36674a2b4b685772376d4d71436a72793035335976456d6756583339794d5831396d61443168496b4f31597033787159485075584750726c3078305341593543686f742f7039716431726c324a48365976385547324d43576f726947444641476e414256586267466345416e4b6c46697658314e786430676c63726358337150444c437642424e7a753264386c783739375763582b444b792f634a71736e696b77434159436d50465732342f7178576a2b33584957665075526150784b7246774767515658625979795656636c635445764a55397553412b4b6d434474676f4f4f436848424231747276756b524b374e6a6343644930623472794d614873572f5a376e71615863554872726336636c6f4172514c6a574c35384f6136566d37675a565158314f4e464157704839796d754d68696d66446967574d736a6c33727a6e2b53625057667562596f664576524e7878516e62315230334d4345487a736734497652644831663030374f357148674f4762636c7a51676e617034554347524861674449734479516f45554241594945494357536943454d5637543058643272757847336c63467155437a366d4a474f613857434648516536506f6b4a7970666e492f7a4f73767139793173646e4c62516e7175536f586b35412f6437597278344a3431524a794b4345685356616f4138464a664241575147444b4b647543426a6a524b4d457766464b794342516b344b4531346f6b653941316d486d544541484a4c4c336a6932304968744930397743386a364c5a4e33647747513676637656536953635379437944366c6f304b7533436f30713656656f6f4b35386771623565705a5733654474327242754c676a45794f43446b3736645a673058436671572f6533712f7741537753356f4552524646445641477252487652494c75464a514d617951443571454d4b4b444245304b43454e564c67464d6d4f4b615647514168426e523030716f55454a65685863394a75772b326c4836684c56334c68717931643875515a423672303231426a754c68655a4a4563324748767857773335334f69456463766b754166364549365a453072326c646a61622b315a7469524e573675314270742b6d78745338376364647a394f4d5171372b3674776b787834425a787654754c6d6b65484d72646176376177644d4e4a6c78785078515a72666d4561684662374f73304c716a63657051747831534a703355584c50724d4e544455663555486f76504a484268676c38775271612f67754c4463583546345769416631465637725a626937594d78507241666b522b61445636683633613238486952636d587048416471386c75393563336b7a4f34667956456a6e78514555417752556b514d4d454d454264304f52556445635545624a5353696a4e67676a444e544a6b532b53684e4851414a6a4567736c7069564252424347504a413054474c6471566b4543674e4558716742577543426f526c493651484a51775a31337652396d59514e2b62784f45667a5750316e792f4f3032774e513862594f6735326f4b794d324473716355517a56434430502b4e47477555354e714659386343374c314a6d7a4156587a6945353269384379372f707672785957376f70672f4e423665556d72676d4533484e59597a457572556171324d327851625048464a63356a7653516b44774154462b2f686b674f7378784e46504f4e754a7552784171355754314356364e736d78346a525a627479562b7a705a6952316171494e573039544736654e30644d6e72495a4c6239705a5a705167653249376c35712b627532674445446a37737539647630336677334e7434596a78524e53503263454647373944736269426c62476776384153764c37725a584e704977755266684c6b76656d62436757546432496269305953476f6b483335596f5041767853796c3855323474477a3054792b537064756c41784f7167565a6b6d385643697a6e6d67484a6b686b374a69546763666d6c5a415479553538464779557751427945776641704770524d5141676c5252475265767336436744494363475379476c6b51484e464f53414651594a6f776d6643435664445933352f51554644384d4543474656304c586f32356d6641514f4b6265656c584e767049712f7741304747324449364d5176522b706251626261474d4d4936532f61566b394532453533684f3647302f713468646a314b506d6261554d32723356434478707545686a5641384f436843476c4243696848676867673257505562323344524c783448444a62346573516b47765777666d4678527a55775164792f39704c7753374b72464f492b6d51706b73424f5341516254755a5136596d696e3351776e55344c496171486767764e34555546344f714d545648533643337a4872564e486345646757596346484b445a4c634f464c56303278714f43786c6445676659676e784361423462346c6f7651477147393355626b414163317a5854323475644f446f4f6c744a523076493058546c366a455542702f4479586e535a673641614b36455a675032494f706539513155485a5659376d346c4c44325a44794a4d38714f7262646d46747046335155695570437231566f6e71746948372f656c75334e5a6642564734794454724d61523733566e6d5a696c4d46686864712b50464f627571694458356b6e31355a4a524f58686571573331524943733141557851434f413470774a51446b3879683567374668334739667044464274753337646b59343535726d58747a72774e566e6c4b55354f556834494c49526678594c6262332f3238644d435438412f34726e6a6745445442426663336337737a4f52715559376b694b6f63495959494e45747a4d344a44666e3371756f716945442b59633855686b2b4b425a44745150486e6b7241326c7a677168547354796d616f4b7354795445756c59714e56415870696d4a7277644b51794f4151494d655362437167716f676d7031485949496f4c397064467554354b30334967306f73594c464f5a766b6732692b4251467973387a356b796547435161534b34684333374642302f762f414372506c4d333851344c4e614d516457503756512b76465148396944624b62456e3342514856557573384a48693534707a4f6c63383046676e457172414d3666553153614f71726b394a6f67496542636f36744a664656537653786f67626d75764641504f71777754595370563067744756516d74577047576e6d67362f6f39722f715378474863712f3867334f75384c4c767046653072665a76783247326c644e5454524574386c356537636c634a6d635a494678444a37594d61675a5a7064447254627375774971677a6b4f56504c7943365932766c74496b632f624256796a44437635494f63524a546d567075444d564370715543646d4b4f474b566969546b676864335137555a4b416e444a4259474a344a4a59305375364b4267777758543246597a444f343746797830386c733273366b444e413037496c514476565539752b4743364269416361665371727334576d632b35427a4e4a676c594c5a6533496e68677363716969415579554952514151524671714d6867676a357155434c45494948697a7033796a56556a42585149465059494e646f6871666d7946322b5952594b75647a7934734d566b636b75674a715851514a5a524244564375435938554d6b44524c565236706c38536c4d6a456f6e6c676741644638797079536b4442426f74584875513441686573424d7947504e6556324d64642b433950745a436d6b396f3745485167536173744c6b69696f74594f4d31646b6750646a6d6c355a706f757a38636c58636355346f45755365433539346a367331724579485a5a4967334b7a7248735163362f62456f4f3152386c7835326a45366a375a4c76337835636d4939793539324548654b44494f716f6a377a383033562b314f4c5a78783745497749354f67556b503142474a4246526879623471503841534d306b6f73612b464132694677566633354c30666f6c7a56435141614563682b4b387a6372523136442f484f6d7a636b5439516967362b3932317664523058413958434731674c45526268684769616436774b2b62422f3567337a5650334e755a30776b4a63577751597655624e7a64536a62457166587a5733625744474d596e77685857376239536563794b4149415a557857637a775a504d7550616756467934433569677275584154565a622b34496878723845313637434e4455396935743639714e61647642424c7336666775564f352b315762692b544b6a6667736866456f445546304b4771495971554743415077795578516c56456c4272326d3546694d67635a4d78344c70656d336f337478626a4e73364e2b7863546d4d3059585a5779384367396c4c635276533152373379354c6c2b6f657078732f3037506a50696c2b533434336c79413067395035716a573563346f4f37365647482f414453784a59636c3662624f614768586c646753494f505972306578766b78592b49494f6b33306a32434c424a475a52464b4947427a5358625133454a573565475149553156544f473449506d7536737973335a57793943565352707778586f76386f326868656a65674b544855764f6469413531555a36356f346f454641754a5444696f516f676d4b6871454f536c58514349644f4e50636747515a30485775656d786e445862772f426336567332334332626665364c5a6839522f425a4c317a576453425958446754514a2f4d4d6732536f585173584f676b733248746d677845464e454546646933596863786a7a5773624f41787079516372623775594c546c68677473665562554a59596e73576d2f597457343949722b4b357374754d546d676d39336833454e4970463341584e30454c726661786f6a4c616557524b4f5972452f4242783636686d6e315469616c622f742f63374a7a743367677851334578546774586d57372f41456d6862784c50643270686834534d566e4e7155616f4e63396e71537a7447455163314e7676726c6a705068357256726864693863633041394b334675314f576f74716f746e7157326c75376571324e52686e78374f786354637759366d785776592b704777524758672b4b4446626e355a357273656b5869626a50516a3471622f615774304266322f69506947446e73396e576259514e7566583746423274314d626672625646394d687735713278636875497643576f63764546524d6a6376616b63412b4b3839507a4e76634d725a4d53454872744d73596d7674334c7a332b5232644734452f3178456974757839656a4e6f376a706c6c49594a76386c7469646d336667515245366665673875545873566c752f4b32346957456c575452544e7767376e7047317458503841794c78476b4877382b4b7533636865614944415570536934566e6354734f496e464e4c6558626e696b55473647346c6247694a6638467074776c49764c78596e38466932734958434a523853366e5862476f654838554638746d304e6250786f747670392b4a476b4d797339507638416d4e7a3979357537737a326437584150433538446967376d2b3268336d326c43482f4a346f6e436f5843324f2b6c7238713634756774376c334e74366a413661342b3734726c2f35467437636f5233746f6a7a42694d354e2b58795164757a474636456f7a776b4e4a43384c36723659646a666c612b6e785235672f6b752f3658366e356c767179577a3158616a66375558414f7133562b49375548684462595658513944325574337552434c554250563846686c4f54744c414c7358665574727437594870304a777559536e504675417878354e2b515976556f2b54754c6c7268496a784f7363704e682b536b6a6e6d652f7653794f593449427263315131495677554a4278514677334e646a306d3041584c64514958486948586632724744696751644273794277376b6b703037464b6b6165427977537552574e47514339596a4c78466a4c3271734a394c6e502f694a7837506d756c4546334e65613043496c37666b673445746c6673486948535331546952644466784c305248315a425a4c2b326a3438796734567a6278622b6d58397561706a30783072727a32626c77666373563233505667677868346e6b723458326650674f6171306738696b755159307145463839374b55576e77564a3346474156636779476c3042317035626935504e6c54544c464e676737662b50627757372f6b334730334152337230304c6c6d7a4d694d64567a506b7641516d596e554d515636795739466e436b70316b6376326f4f73622b7566354b303368426e78357267576655595749546e4f5266682b5372742b703239666d794e636d794344735864374d53315448547846666774646e6677755165424a483871344d505572636d304334532f3658563076557078723555705248474c495051526d2f5648322f42547a54414d616a32354c7a56332f41434452476f6c465a4a2f3544546f374f70427639563947743773655a7334675853664467434f5042612f525038666a73592b5a66416e65506549646e45726a624c31614e67584e316365524a4559787961764a62647676505574344250623242356630796c4a6e2f774456463048703539564a4c4e4779494f52787163566a733374316267392b7759486a626b4a666d566f68767255773069524c6d676f73487939354c62794c4358584467756a72624848386c7a4e334c2b72617552704b4a36715967717935664c366b467438796d7a34652f424733474d554c563865484474544751446f4c6e686849736d315234366e79584e3357397437614f7163712f70586d372b373347347547555a536a4159645344302f7158714e7261327a4b655030783479474338526368633364795636356a49715872385a534d7938706356584f3571785158574c4e754a6554396936467644704f4b354133476a4434725a5a334d5434384751646d3350566a52503541616d61537863684d6178374661425055574a2f6567716e61387942686361584278682b3558576435417a3875644844446852514153446e46316733386463486c694f6c423651316b4b6f776d486f75423654366d332f6933366e36442b433673727266735164474a486336577077564d4c676f3261736a4c4e416d6b4c69657462507a725a6c48784c764871722b7859723953344641672b652b48745163444664503166616978643178384d2f6d75624a424648476668515a6b4479514f56415467674a466d5244794c59354949376f536979394636642f6a4d7277387a636e52444b4f5a6465697337446132427074325961542b6f616a385548684e6a75447437674a384571543750325972304f3033597358497a6d5330693071556269753366394d326c324c5473782f306a54386c6b482b50576f4637647959682b6b6c42306a5877315142366463714159796b57415a5a7232774632486c327273375a2f5645343971386a36747374337435662b53544f4f553954762b5865673948762f4146336162596159487a5a6a4b50684861632b3565533376714633655431335458674d41737037555851456d76614568524c4b456739694364696d4b684b6871676c4d6c41446b706b79322b6d2b6e7a336b7744534138522f42425a3656365850667a7830776961792f4a657732323073374f324c646e764f617473575962614562634b414a704833494a4156726b6a6e79536744554d554a6c734d5544584c6a465a3731386e7034344b753964627457494858646a56383234494e316d4f72716f36364e754f6c5a624e7651414379316869416330445372334c4875726f74323963714166497263654338762f6b557268766662436b57316476596770762b723237464967475836577a584333572b75377954335468674f4331445a776a34716771543239754a7248737a5163354b3636586c3254346f4e2f4c4a69666568396c61627853482b6c2f696735714c4c7266326e55423556794a50756f73737654723172785251597979444b30327944564b656142532f636f426d6f31574e5551484b435638536e7a552b536c4d554555344b64366a49416355545244437167515254562b70466e4b424e57514e6a564b4f6149775164385545724a5370444b4b42424b47694c4f454854526c33494677716f51334a46545579434d324b69614d4843757362587a376b62555046493655486139427365524757396c46792b6948456353724e33364c48657a4e2b787562636a6350687546694f5848486b752f5a747873576f5759556a455a66452b395a622f70653133465a686a786a374d67383466386133346d496558516c7465727037654c6479396e365a365a483032794c55616b316e4c6a4c386c7876375866413032647a636a4868712f6146527470332f5364794a585a536e7435306c4b565350626b67394a663234754d2b6446382f7744563977647875357a7942302f37614c334871652f6874724535757a78364f5a4f444c357649756452784a51526e55647969564256424345485a4555356f595651516e4a5837506279334e364e6f66556365575a57637274656832394d6a655038414c2b4b443165316a4331626a5a74345243303633414f6135666e6670576945692b7042753165354d354742717134485645524b654c4555514138697046355650464d7a4a534b737941584c554c30434c3852636a776c566c6775656d577750365771414657474472664a345679514a51636f2b6e5862415032306f6e5751576c543264633763573934443152487658705a774a4a644959644c53714d55486b507472306e2b6b38542b43617764335977506d443950466568753753467a71496334636c684f314d5042674851565139663238474537456f2f71626c32707638413853327169335a6e4a2f3145424a4954384f7169726e6174334b36527137454333503841494c6872437933782f4259702b736269345850536b3357326e423544425a70536c67794333376f58574d33504771305772317277367363515667704b6d415569414d4b2f745164714e794868684e754c4b305175534130504f6e466345516c4c4a58577245744e48376543447233446f673877306c584b374179654d6c6a30587a466a6336653271716e594d635a3676627451625476504c59524e467432587246754c516e4a6756357955687856524c7851653730626265764b3149506d5857573936524351712f63764c625861583932644f32424a2b586176592b6d2b6b445a6a58666c727534746b506269676f32506f6c714d78646d356950444538654a58596c51366b7437634146594c6d34712f77433542644f387749574337754141797a334e7a7165576178337237462f6767612f664e77554e4d316876334141783969684f354b2f4a6f2b496c6d487957726165686272636b47545734484f5749376b484a424d7a30315861394b3946765847755269425878584d4f3564725a656c324e67786a2f55752f716c68334c664f374d396d44494b443658615978766462384179483969324272355a46503166745775424f457346597a6c7767346d352f77415774455074354550394d712f48466555336d3075374f5a743359392b5258306b3169734f39326c7265577a627664334549506e6242482b494b2f66625757307547334c4165486d73774f5341673152664a4b63566f74625337754b77485468717748767751624e747642476b75786458623333594c6b485a51746764657157596a674f39534f354e6739596f673950617678375676745331467867764e375863776b2b6c325a6466613333444f35355a494f673144386c594c514b706a4e67725954715877356f4b3978734c5737744730634d75525867742f366664324e3379706a2b5758454c364e7159685a3937744c667146725265485965434435716c58573953394776656e797731577a345a444e63706a7a51516c314345575a526d6f6746555751554171676a4d46484c4d6a696a52366f4232494e57714a5137554442304d6b473471464157536c484769685151444a524e34564543383063517755354c643658366463333933515042395575415164622f486476305476676677686436466a6a58354b37623761317434437a4877774878566b534348514c355967413653595a316434634f537175784c56515a6270365848657550753978476278714150456677585333637a474269395a664265573332384d33747850546d677a33414a33446979616349365131456c6d4c31547a476e73515a547952566c7946614a39706174334c3049586a70675431494c6654396e4c63796636526970366c467235682b6c65746a74525a694c554b41654676683272796672454444643349383047486d6f55636355726f48385747507a54566a517042536f5544596f44686d6849765571616d554951416642534a5970693648346f4c6256787941563062356a71595930584964585735365456423661316168743742746a7853724c6773635947623277506773467a3141334f67344c74626151416957373046647630694d3439546b397165487059736b584930726774346c49534171436e684533656b346f457358363643374c5334747a417a4b353979576d656c614a784e79494979516559396132683275356c54544758564876584d596969397836747378763972682f556831513530775869544a6b414a6f794243674b4c5a6f4953366a4b597164694347584242792f78516f364a6f45424a526c524b6a6b674e54524b412b43616d7171684c68414930586232757a473532423044724533397758464c4c30766f732f4c32722f786e766f67387a4b4a6a53574b364870327a462b577134503659577a315030364d7a3574756e366c62737431626a623875335138475161743175593757477334674e474f495a6556755438795a6b56305057627576634741384962354d75614f534138736b4a53664664496265794c516966484c36736c524c5a672b4351777a515a5365434d584b45375a69574b6a5a424236583054637a76514d4a6652675631596e50327175462f6a567753755473794c6178374d7537637373644d666274515043584b6e743371364e77784e466974584e464f475330776d35306a745158417479347242366a666e35485533503846754e422b53356e714574566d63426a6b2f7a51567a50334e6753464a6163754b342b33335a324e307a6a6c5358417264744e3233524f7056316a59777666386c584c6f4c746a36686633736d59415a7274617862615279645a647274346255615942446457376d6a707167387a362b49656672686e77584a31453472716571783144557a53655439693549397941366d376c4d4541516753676a4f6d6c6967373833554566656744316446364963696f674c6f49343055773730456569674a50596f686a67673946744e74737431747a636b644534426a377361702f4e324733614d5a43575a4f6d722b356562457a6a6b564b4769443038665639716146615965713750706a4751694736714f76486e6d676739762f636475662b70457148645737685a364f76475762687358597a2f53524a646264372b78654a4d444948356f4f374979746a706f754e764e39496e7977616e46507350586f526a356535476f6672346479355632357175546e7a36554757354576524b533659395263705542464b685130556442714947534770525a31434751476f5141557a4b6242304336517067696f7941636b64536d4a5a53714153554a6f6d4d6e7853306673514632573278507a624a73476e44745746736b304a4e55494e4d646d546d4f61306262627874764f6367534234565344457330673579554d34326f7941494c384547534d367575684431436a61585a63306c31412b4b44702f63655a5144386b6875544e4373316a6361586570576a376d4978514a49535a786e3730684758637259335a5843726673623868724d446f346e3264425349737a3054776c69564a575447687171703659312f656732527536756c4c4b35474a726b7355747871444369706b5a537851614c74383135724c6a696f447754615367476c5267674f615a6b4155515a47585467675549344b48446d6f5545624a527356434752666767442b394d326155444e477043414f6e4a6648424c4b694753416c522f77416c4b4b4d395167497a6646547768516f494345416130554a4c4f68556436413971556c45315549716749504642714973366d4b4365494b512b4b6c6342676d6f4367496b547954786d485a49485373677544767856707544425a586274524d792f73794452357062346a6d71705466415a4b6f6e5656796753516775306a6a69672b6d6d61544371594771437931706b37753631334435635869734671656b734675753342354c5a2f4a426875586a644c794b544564694d49616a3035727079394c4e757762787843446b6a697234336a4369706f6531516e6a6967335233554a6a526758376b686d2f4f7178756a68326f4c54634a78772b535356634d30426b6f437941474f6d6851524c6479417851457164716967695a6e534b6c415046525443713648324d724931546a3742597267596f466f55346b7a615658696f673066645356526b546e564b34626d705242413455786f6e6778782f4a42736b45414434705759707841752b446f43476d71414e71414b4254364b732b53516a53616f416553696c6345535751516345655555714a706767442b3945714f674351674c5564426e7169564f6141646944466e545956552b6c425a63745862564c735a522f6d69716d58316b5145673832506375627576524e6e66636d30482f686f613969443531686767376471396a652f78666143676c636a376946696e2f6a6c6f514a463036756355484432552f4c76776c7a58713745616971344839754f3376523145474c2b4a64797977496b5548537330626946704f4e466d7451712b61307869676c427a564d776531315957774357356852427a3774795672785948344b7a5932347a444c5075717447525953496667427a543352616b4e4e6e63416c715145572b4b4454505a2b3739544c4266394f6a49366f48536578567a336d373276677550796d684c2f494c6d4636333368426d76625739627869343478576165715064786431316f6575625853584767766d466648316261444363512f7744446a384548413834526c68712f61726f6758543078476c736c3641627a61585a614a7a4663476f436b6c366273726871422f706b67383765323063684a624e6c764c4f7a746e625852494131316b59725866324e6932663645354f33687871724c4870467555764d766e5566706a6b454755656e574e314c58626a306e6b51363756766277323864454141487956304969495a516763616f464d67456a6a7634705a334141324b7933747a6f3675475341335a355a3039793538373461545a592f76534463584e374c5274726370486a6b74396a2f414230794c376d526639467567377a383048434d7a4f544235452f534b2f6d72592b6b623639344c4e442b6f36666d51765a32397461326b576749323434632f666d6e382b3350704741516550482b4b3732512b6766366b4c332b4d623245666f4a2f686c2b624c32346b444669715449423953443533755052743359386471564f46667a574b35616c4478426d583053343071484c334d7554767653374f35367642495a6a4d3830486b674b63454759312f65744734327339764c525038414e56434f70386b43534c69694963684359626d674751414230475246616a4a43547567394673724f725a786d37467a7a585132457442795037466b324f6e374b3237347a57335a784d362f536736735a4751717274564b354b6945744d656e735478755a664e425a71475873366644424b48524567616f4d76715730473973537453785a3439712b65336252737a305378432b6c73534b596772792f2b522b6e5049627132503530486d6452344b4f52696c70336f677355453067315564314b6f494931485564544a305759494a6e5369424c594b414f6736427733765331696a4a516e4e414d464855554a515751757a67614568624c58716b34676561424d65347241374b494f715055376479585738422f755736316f756834546a503448334c7a6e6854417456794f7a6967394e63746945544f3430527a4944397978584e355a6a574d39584a7543346b70476669716c5a4231342b7032346654582b476930783957745346593665724f767943344c4d67526b673958473962765241684b4d755648397856563361774e5471663575764e4a34335a784c786c6767374d2f54527063526c376973463231506253617674334b763841754734773879587653584e336575556e4f5248616732516c62334852646f637063466a763761573375614a64334e56435a6746706c756a64686f6e556a4475514c5933457264496c6c332f535937666450353835524147564e587a2f4147727a444e544e616472756a742b784230687649324e2b644265322b6c7a772b614f2b323469382f7742533575386b5a585463776464697863387a61435a724c4242786274696d754743653336686474325a626156595347422b6b3851725a6b6774675431425a72304a4536755761436742426770327159477142354e6d6832494131554134494c7246343765344446657a324e363366744e394a4447507a586838367254744e2f64325a65336e376b48704e762f34643656735365464444567a5852336c767a6242664c714665433854756437643345764d6b612b4870705251622f414841476a7a4a41634851617476765a326268746b686e2b4337647a66417841346865534d5351357a576d7a63753236514a4151614c63547437676c694366594c3051396232396a626144315449385041344c796374527a65515350717751445539554e536b75434570617355454d69717856477543694355434a63466e5152514565494c7277764345577a2b4334386578614e57714c6d71446f78335169614b345859726b5175506a566c594c73545242313764324d7175522b3157783349416552783731794933774b55484e6159546a494f3955472b65386a46786b3369584e3348717479585446533832456a3242566442717a5a6674514a3939634867444a4a584c393778456c4e3050516c57526b636539426e3054676178536b5a726f613553445a4b7155347a6f5256426762676b4a576d3762427238466e4d414456416c45414b703566424c54464163467475627a58616a4271784377357074564f53433631624f346b496b357230327832316933706146654a586e396e4f4d53786f75335a7638416c79306b307751656773516b4269416662677277526e565a647463314e79576f79596f4d752b32647663527245647758687437737057722f414a567671667767426651504d6a493652346b39717a43334c5645414676463953447a2f414b4e2f6a75694d627538782b6933772f6d58706f67447347435163763270384b444a424930492b53727662573365445851503453422b4b6d6f5a314b7175626a52512b35427876553746797a624d34796c4b32432f56694f594956646e6353756a554b506e2b617539573330525a6d43445545426564326d38387532594875497951643665396c502b6e467a493041433232706134765046757256684665516e3668502f706c6a6e4a4739367a753978623871637a7034414e3855477a3162665133463752622f414f4b4f5063755063766d637159634575464d304739364350776f674b4b5955775469594171415543366e4c7136335a315971797a4b7744727552502b6c644733366a61595273576f67385a5651505a654d517932325231565765314979724c67726f4178447367766c6538727772426345744a6a784c72544b444179397171695558446c427a4c6a76716a5167347271572f554463365a556b5071584e7642706e54337171334d52506167394c59335a6c6d463062643859506b764c51334f69732f67756c5933496346304864317655716937456b55535772706e4647526f5031494f52366c593836426a784b387663675948544c4a6577335a3657616d4b383536684143576f446b5547416356435844346f6b384d4541576f674b394236463666454e75626f642f4448687a586e34395339623662646a354d4c6563512f764b44766177512f7432493677394d5669744679566447657573666b67304737706656772f61737839547432795163514366432b43736b3034615469596d4f425841394b394d7537695a3878345759792b71686c79726c7851642f59612f493154505649763346577a454c6b5461756a56413546457a467673566372674a6f614950472b73656948302b35727475624a712f446b56794858753937755933495367664157457338666776437a6a35556a4867675163554a4433493434714e52424d4d5648554a2b537373327a634c426e51573758617a334578415a35723248702b796a743762594d73757732673234726a52644b524f56416730536b717a4a78324b6f7a4d797135793434635544536d79716e6549447667713731364d615069734e2b2b52324946334f364d6138616436302b6b676b473863536449584b74673775364c494e4365304c30316d324c634977746a706945463761576b74414b6f74534a78562b7442445572483678744475624775412f71572b7548506946624f3478624258516b58636a75516650767644347330447539645a55567671657a386e6358496a4455572b6178655555476d4f366952543470686470302b337657534d434b38304969714451623834536656554a68764c6b635a4538633153434356626274776e463546413862346e544e5533597847414b45345367584f4752536d34575a414a776171705971306c3054627252425832495970356347536d744167444b4d6f6f67686371554b687169674c70525245357367674a5a41384578697947434344696f41324b424c49354949496f6749437665726f576451366b46555947526f6d6b4244745673376e30526f4d6c547a78514456523136622f4142725a3658334d7166544438537546734e6e5065586f326f34596b386c37714d5978455951445269474135494c394c754f43594d465333424e416b312b43437879346244344a64315a7433625a6864714438457a3041423756792f584c306f5759776a547a43783745484d386d4d35316b39754854462b6f724a765054415235316b4e786a78374672326d713345413572534a74347345486b434339564357775855395632656d586e51384f457552584b51524633517952785154566b5636543032324c653368784c355a762b533830614c315732334175574c543467667551644462317879577155424575756462765374304c4c56486446717379445a4677726f454f2b4b7952753846666275422b4b44512b52785379726a5254574d38314d2b61436f345653363164676b4e73544a5143334e79364a6d34624a55334954743169435938592f6b7134337370664549444d36617175556e796f6c7658484471767a4f4e515544584e734c7353394479584d75575a3251587957373779426c31644a7739736b313256756344795163344457416667756675724d5a5a4d585738322f4b48454b6d39447a4830346f4f504f3155386b7451577857325931654c7844464c3555537a75506234494d6b504d742b456c644c59324e3776356d335a4e41484a4e41452b30394b6e7644716a3051474d7a68334c3175327357646a6246753154356b3830486e662f77414f622b564a5849482f414648386b6b2f385a33517271676579583746365357346a5546333975354f4a366d494e436738644430446333626d694d66357047672b50344c73374c2f46374e7376755a2b5a2f4447673936363070794e437135585148346f4c725268746f655862694951484432717339336430492b50465972753561704b35312f6461693572484d6345473265354263437561785874794361594c45626d716d537a333737494c5a33672f74386c66737654353732656f394676696365355a4e6e74395a426e6776543765635141616152534d5547726137477a74423052484855664572707a4d7539554737714e4f39585277636f49596e676e464135716e696a6c536943754d2b373855336e41447453536872726b714e4c426e51612f4d713771752f6330314b6f6e4d7336795837684e4d45484d39637465644153417248354c6b625830792f75542f546a54427a6b757476727a394d54324c7037506361725775354a6f5246636b484e68364c74396c623837645431456654483271736d3433397a63434d494454616834625956507150714d39376331595778534d566c684f7445462b6f42794b5038306b38657246417a63316f6b397531414a544e7554776f666d757a365876504e70634c46323936346369436a59752b546342344950645762326c7456636c62626d4a4f5859726d324e304a786a4d4d302f6d744548484242766a634f6d7130516b57376c676a632b6d5761766a4b6a75673179597871483546634431442f47624f34653574794c5a50303545727469516b796157504c487351664e7437366666325574462b4f6e6e695065737a4c3664667432376b6446324c784f574b38643631364964722f573239625879516349386b477a5561764e4d5778514c5549687a696f354743446f434a494a6f6f474c6e4241487954437456427851353549427064476b6356474b43426850536849736d68616c6349684150493542656e394f2f786f577a47357644566e386f6669554847394d3949752b6f536f47686e4e653332757a743757324c566d6748696c67537445596932424345644d426b6c4534687a2b35413353474a565a6b5a476e354b475a5a735656506e674546305157723469717a487a593574376c544734424b6e7756487147382b7a32307067752f54486d5367346e712b394554356350455237677650677070546c636c724f614746635546735a535a4e4b58464345614f536a49474b424a6e5452564a70736346424636344950522b69657036774e76643851384d732b786337312b6d386b6551584e684d3270436361454855743371323547366e43364455776a71375548507269324b694663454256415157526b5145425245565152786b672f4645685131514542384d554345516130516646414d4f39477553474b6743416b436936477939536c5a614e327341567a583979595651653432313858326c6934634b586a397463422b6d5a397934486f7537304756736d67476f647937567a645735574a616a5161654b437a6557424f49754478527172646c506f624c38316d324736387931704f4a516a4c37655572647a70414e43324950596732575a7a74584e50376d586a6656625974377135474744303731365463582f4d3345596a4565507677586e7657322b37754e792b53446e6d7143504a52415156454855356f4837556f624e414571594641783468454d657a4e4b557a676873304345555a5232547970676c6267676d4a586f39704e74754877466665764f4c7557726746765332545651626f37754c504d567252635268616b44422f7857695677527269734d356c324743416236666d583579357169304849484e5335496d5a4a784b763273444f534237386d626c384658624d33317630676f376d6457564f756d6b59494e593154484e555473734178566b41496a7139366533594e36586c3236795044356f4436524f566e64517552797837463632462b4e77397550622b4b793250535273376656347950637374793735456d787a51645335747136686877344a4c6a77673479575735367861387367654a2b43356c7a3143355772435848464276487265676d46794a493931566776376b3370394665334a59436466567a566c69344c66697136417a745466563863315a613356794e4153442b5337566964753451474277584733566f574c354a72562f33494f6a747656356974316e4831666d756a61395a734751414f50626d7645456c337754435a77644239434d375735483953455343764b2f354636625a324d3465516154633665485975625a33312f62746f6d556d3433647a6454387936586b676f6375366d4b4b4f46554137464d464b685370514c51346f75364a6f67616c42487a55435a6e775369685a424163304d4d4558616843676f674b567543695a6d6f676d4b437573574a33704e4261492b6c5869484f6b643955474a676f69597469746d33324537736f366e6a47526950656779797436564d7148677656442f4864714b536c4a2b4b347671753173374f344c6475744d54384548504b72784b61636e71457072584a42487170346b6363464d4b6f416d44424b487743496a77515370553546512f4641305153694c714754347141745641416951704842413051526d527a3756425442524148526f7a714d794251454d7051496330576f454163465351554964474951444e50457348435867694d58464547713375744741545439516c4f6a6d6e503572435a4f69375651577a7679755a4b6f6c7968676d7843414130514a634b4b595949435a4b4f7068314b4530514445497533596735666d6a4771414f7968645246424843484e51465242416330634b71464b4b49474743684842527972624d664d4c494b32346f4e5769325232524a624432356f533239454754487651577237546d71353269474a515644676f53776267686a676a476e61674473574e55327169436c4167685956436d62756f4336434167496b5a6f47694b4141354b416f594975676e4e445551654b4c674b4f794359465352526b654b6e4e415365394448463255514c3845426c4b724978426a68374d6c4a5a44477677514d4458554d6c304e76707674624a584f446c45466947506567395073765468474a4a6b37664261505744624f33386c326c6a326c65616836686468534d7148464a50647a6d476c33494b5441784c4a4664357a6c79456b7067314151566f756d4c5649556d47514b6f443845653151444e4148716d64304357554f464542643164744f6d344a484a5a3173326b6355485a33556f33494e49356e347268626b4e4e624c3132556f674c4663344642517a6f34496b4e52416c4143704563564347556571426f4671717945674b7335564f48596d69673130506168534962425a6f794c3471616e4c6f44634f6f71536d2f596b4961694d574645454d644e654b68434a69487179516f49796d50636f574f43507a5143724b44334b4f696767696f69436c4251476f516f32627147714e65354239576a45784e45424b514c454b6d57383056507a5652336d756b424a2b5874386b46742b54315850334d784776466441786e637178433565396845654f344879476e42427a626b76367253396d56304a4f52772f42637264542f71556b444835726f37514763526d6736396972796756652b675634724e6136517764614e594a4234494745582f414153584a554e554a533431437a33532f55776f677733496934524159506d7249324e45586747374d45676d397a5374735a6d516f61494d7632706e4853517144736a4a77584f504264414856486971376b6d44742b7842794c6e704d79356a34656246316b6e365a4f50765862755842454179446c4a592f72766a2b41516353657a6c444842614e6a365266335039542f6a746671664875785870724731697a7a7277576b52316c30475462374f3374343649672f7a47704b74456664394b7530756f5769614242554841786443354e6b4a33415046526366314865364a61526a774343322f756f7831536f33486d713972733776715a31546546682b777952395039486e75694c75363659437359636531656b3869516847413659696d6c4252436472625138717847677948357175554e317543776c35634f454d66656e6e5a762f414541446e69536c45643347565a784f6261574b4357765337467336794e552f34366b6b3970577a797862776f6b426b3356696a69515468386b4347656e4438306a31544d344a7a4345766355464e32626c3262697364374369307a47714a344c48754a644f704268334633475261592f5371397674647065306752716359386c6e334e3453646c794a58394d71456f4f39652f783678636a72735844442b4735677552766653727530477152456f753353742b7739516c50706d5862395876576a66513836334b34414d506d67387a49676f366373314347524b4471326431356531456342452f45723058704d5a5173615a5979416c586d764932395734757773527a4b39315a5931616777303867675a786b6d736c7a385567672f554574732b5863624630476b534a773745384b636c5759755077566c525641314d51714e7a7452756263725a376138517258657078554d76683730487a6e6662633765394b426f7857556969394e2f6b653131747549342b47613830634d4545647877516469693253474645452b53616f6f6c3746427a514531484e545433495955556a7a5151466b6149304355746945457a5555306c4748555541785277716f52376c4751446b6755534d776f6769685542634b50775145555551355a6f6d68515242456e676f337651526e514e464356454279354a65614e4f35487451504b5149632b4a4941636b4a4d617077484e5545726c6b7447333373724d4a5162554438466d663953684e45476b376753787853475948657336506943434d415543356f6a346b4269674f46465a434771714671426e4a617a48514b494b355767412f4875536142337177467179526730516770303671414b65543846704557666c3731665a675448557a464268386f77787154386c5a4a34686953756a637436496170676471356c3257733845436e6f7278534754682b4362745659694864415342696b31414a3770376c55413551462b4b484e53565551477951444e484e6b44576968434167735553636b714b416a334644776c514f516f4b596f47314d655256304a61537a396a4c4f2f76544f67756c4a697877514d6d6f7177636b786642412b7167344a7045524c4b764f6f51646b466f7545556a566142646957374f7a393679366843685469364934524151614b53366f69715364677a446a456f2f63524a2f443856574e78493868376b464637627968694b4b6f6331744d3962366a69714a32675453683936444f6f32534a427a557943434f59796464725a37714634614a6549426352336f635664594d2f4d41674e556a514e6d673966734e784a395077626775784141314a775850394d394e2b30742b5a642f35534b6a39504a644e417862426d5454596b4b76552f5477546177434f354135623279536d59674837316e765834786c553078584f766234584a6159494e6c2f634341654e53754c75742b5144694b4b72666230577148482b5a63472f7535585544377664472b5865697a475948686f4573693676684349476f73364249324463424f53754168624661736a50636b3039766371444938634d304443596a676a7242797171436d4555467372594e5855685a4d693448597045673936747433474f6b5038416767636261764a583259422b667656666d30476b4d726f544959696944664357714c52782f4e586d474c4874354659726669624a71354948636949366632494e786e54536578597278426d306347717035697a584a79647757434371384e4e7a566c6c7a5747563170757237307952565935444e3048537333593361427453754570576a714877354c6a36694d4d5672736267595351643361627952694b6a56784b3646726351617078586e72414a697933773652775161726863592b35636a6651366a62497871756b4151342b6171753233385842423575514d4379566264335930395177575177596f4a6249684d45344c7632444b334d474f51316473563537533637577833477132416646487037516737735a6934504d42375672327657584377575a523239746a6e6b6c7565705269476a534939364474365243703979707637364d507939733135716671306957693579576b656e377a6452647848327a515833393565764854466841344661492b59326d5047744d56697457664967495853424b4c716d2f3673496c72636939657842667672326d4d6f6361653359363839764934466c7175626d56796e4e5a74784a343830474c566b6c624e475159715077514669394d53753736587434786b3756585032653331486e394b3732337365584854587451624c4d745059723547697174514642465761534f784242492b4a5a726c3571453472524d56594559594c6d3369773675353047626333794454484e594c3932556c5a656245724a4a70476d43443076706d30477a7443354c78334f6f3868773731746c646a414f3947584676656f4738424f4e415268776f797948645361682f4a42364862623645733846766a65634855764e2b6e327a65615a6f6557627273587845574a584439494d76636779373764474737747765756b6e2f6467756a5975474272673853764d2b6e7a6e7664796273363649782f5976554d49687a6c3148755165543964756a377534315a5566745a6379496c4f6a302b436d34756d2f656e635031534a54577870442b37745144795a4648794a5a72584354645758484d70746349316c6967792f626730425369794358344b383378773550697a4a497649754334515743464764786b6c756265325342626c373042314f446c7a5a4e62786f67793339746374645567774b724d57354c7132722b6f614a566365785358747261756456756e626d6735684f7242456747755954584c5a685356457669514c5632524153674d2f46457545414b4c7368476950496f4a5559493645776750616969424e4368354a68784b49596a675546544a684261414d426d6c412b704173595271555477524e4841536d555a424164544774656157344b384b6f475434646932656c3758376e63526966434f715135424236483054626a623267667175422b775a4c7378687059565747334c586445596a4470354d75692b6d494a514c6c58324b736947375542787a554e53416749494e46792f586f534f336a667a684c344c71744531795750315961747063484350346f4f4674794378717931544c3166334c6d624c63414563437a2f4a5853763633694f6c76306f45334e7a56435949634e324d32433441365630397864476767592f4f71355a2f65674964416b6c5142364b494a6974757833486c30344c4679543235655855494f354864754d46646233416f4a5052636146397738734f43756a664a71516739426233416b4f4b31576477537a2b35656473335242616f5879412b4b4430647535714b30506c38567864747536747843364d4c314b3971445a474f4b666e773936706a6364306454596f4c63715a705a5168634454414952452b6c6852427156515a4c6e705671514f6e5642786c67736b2f544c38497643516b476f4f7864665748556c6344434251655833466b6d6b78706c772f4972484c637974654b4f4b396a66745737384e453436753346634c66656d5445645672715956695456427a4c6538684f6b732b4b76424258496d39755661452f5361664e575176364d2f7951614e3974694f75417174766f33704839786a3574302f3034764676314848334a7468756246365246316a795771473076376470656e58656b6e55624d694d3048577657664c47694f4754594c6b3776655739725478544f53473648725637704673416677796a2f77446c465962666f57396d43626b41436335546a6e324641757a75626e6458503067634636574930415a72503666364e485a782f715331537947512f45393630334c76303977515a4e3550792b6f4c6d33393237366366623277566d3775736155584a763377395542765861633871725072634f5662744e6e63336b6e69644d52395339487450546476744f6f4458642f564c386b486d62657833573548394b33496a737037384674322f2b4c58353965356c47333375667958716a4f5570416b6c75564532725046427a3974364e74397364546d636d786c6774586c322f7069797363546f426771544d356f456d344655594d4b346b344a4a5a70745942515845306646413357344f737339786b71664e42777951626451776955444a3379575057434b657a6f47374b46416539427375524169354e417556754a36362b3156644c6446716b63466733463346426a33456a4b576b71692f76762f4846694a7a39366f3347354d35486879574d395655466e454a5134775144346a424e6947514a716b6e4d6949704b69694966346f474c6849724e54647153636e50416f4f39364a646361446b6677585a30434e42376c3572304f3935573636754248344c3034367561412b414f367568634c4e39536f77775247476f63454775334c475270326667726f5842494c50626d4a4369727654307477794151627079654e63364c4c597678424e7534314d527979575462622f414b744d6e434871346c5a694e315a79704c73516376316e30417831626e616834596d4f59586d717858752f542f566f584b452b3359716655765162652b2f713759694d6935595a2f7651654b556f56316439364475746a6238323441593448536348584c4a66745152514f704869686c5241616f424d416b6f79434d366549795334727265692b6e6e6433335067686967394636507359656e576f544942765444366a6741636c3142784f645233726e52506e3767763442714c65334a644b4d33726b6764394a4e56564938503249546b31514b4842534d7767726d5350456a34696d614f665971346c425849647934482b546268353237492b6b616a3372306d6e75586a66587045377962354d506767355a4c73794f4b494431344a6f306235494868306d75434e79516c6a2b344a437a756b4d6b443064676b6477674a4651484a41477a52663342434a4f4b68475951536a4b526371496768414d5551577877554665354146753141634b68456c386b4a666769376b484e417034497a4761616f5368424479554e45325061556a5551514d6f4d47526f6755476a615430584154676356736e7541625a68784b35674a7853317751646e62627164694c4436634f43706e7570544a6e634a63355a4c6e4f36446e6967376670456a6375695a7a4c6477584e3951762b64666e506d724e6e7642594263645830397034724a4b546c7a69674476324b4e6d6f78346f565152387969774e4168514842514369436469494b414c46466e71674f4a71673348464566705452685475514b564968676854504e466e5141414b775835733253724c3449596f4e55647869374b6d5a7136516c302b6f53784463454662354662747342433066316b2f4259796170345854456f4a647561696b68557346494153636535574330596c766a6b677368616e667543324d54536e3472314f7832593245636a4c4e556248616e5a3278644936704b7663373753483768564271336d2f6a46792b5073793555544f2f485778366a525a39766275656f584e4566426953765254686232747679344e5143764a42774c6b44626f57543237634c6b644a4e634b4b58623275617a796a4b7964526f79413337586b3969716c4456315244385673473546776162767657652f743544716a67675731666e624a59315462752f47624f73706d466e4d6e51516c3043616f766b6f414345456667686b6a795149636f49364277545651306f4a5252676f6745424b4a594b4f6755425a367141714b48496f4a32705754535531505241584569677a594b5a6f486d6759536c41394f4b764f37767a6a704d354e32724f794151575735615a435450584e62702b72584a6541434b35714c635548647366354c667478307a694a55722b35636e65626b3779374b394b684f517757634630596f4153464764466e7179464d5545436e4e5445756a706f676d53676f6f335a56422b4b416c736b4367654b5949446b4645424b72715a494a4c6b6f474e536f43536852417a75673641484651594f45457871556356436737594943516f2b61434f5342555446773668555a41526a52522f715339716255364343744548554a6673514179514e676f536c6169596355456430477a5241476167633051526e444b4f324b6a4950785145676c51456f4d6f79435956436843683446546b67627353736f426d45636e5152754b6b6b483449346f4932717136767038656c327175557531743441575155466a69565350795365555a2b5042434d68673666564a6a374f6747675579354a4a786a706243512b704e7031396d4372766a6f3069726f4f564e784d70614d6d754453575073456f703142424b477145532b4b6a4f69427751546d68696f4643454250536f554b71564b414549344b59706e514c6a336f6f437661697943436c436765415278716f4b6e6b6741524c4f694747615630424b42645131434b414d6f526b6a6867676749507555786f6d6a4352594b324f316b676f495537455a526b43784369414f54516f3663512f37304b71566958514846793145475544354946424277524d6d5549517871676844725861492b6a34724c3249683858716733536a496c715656526a474e446b565443354c4d6f7a75616936426a62457938636c564b325258696f5354584e517a4a37454345497677556b636b4b67555145466b44383145655343565a5232785578516f4544734f3953495352547652424a454a56417969434641664252336f6936434f4167334e546d693641636c43555438314d4545306c6e5163736979444642395538757a452b454f72497a47444d6847455778446c423444477143774632346f47455361784250596b316957475079545163343051597435744c4576366b375543636a676553344a6b544930446a687758704e79486a77494c727a736962647971446f32656d4e566353386d61697a6263307269744d5750566b674569496969796273305a617077654c68637664334d6d783971494d316a646153784865727233524c56617a437a51696446564a794e6b76507776376b4851322b38684f4c466e64504936734b72454c567a654d64734b412b4b5641757674746e4b3157354953504a426968746650704a644b7a6168626149384f537345644f474b726b6775634a6e6646596e6c523256677645557851614d532f73796f6c64596b466b6b373075544c6e334264334e7757725053543470636b464f38337045744e714f716643704e56733250705679332f57334165354b764853463064707372657a6a71746a7150696c6d366539754c39724c576735397978613139633772673475772b533657336843492f70334a456472717237347a704b79314f504875536935444542757842743179417864566b672b33656b684b6c436c314f484266323936433938683830684a4263717258456d74455a54777a6441626844633154636b324368754f4d466e76534842415a53634c6e6236354733706a504867746b5a6a4c755849395669392f56457344455551636d37666b584c34426c694a637574462b70635972504b51775150626b596c2b4b37396d3535746b6950444469764f677565706472303262504135696e61673556344e4a6a693671356c627655724f69516d4d4a44486d466831555a4273394b684b573674786a6a71587549686f394f433856364d7733634352672f794b3950352f486a6b6736454a41394a3976624e4a4b4c47705a5a376536674431594a4c2b366574764c475251644b6f6a30347078505455726b5766553949454d33577a37677a384c64364459546e6d71373077417a3565395a44646b4139485266702f46426c3373664d32313048437037313469754258305733623879314f33693458674e784479726b3463435546574b424e5642587452515474515578374559734f70414765705243416f6f546d6769595643414751515145386b41444645444e5168385543736d42554878516f615a6f4a584645715959494f7941737941555146554444466c4269676e4563386b43673134497378596f69494f6142344641486452754b6253794a48484434494b305161486d6959705a554c494932535a4b772f596f634542516c77554e464d41676a354974375a494e7751465544425062737a6b48694d317632767030794263625778384c38465a6633462b423079693042682b53444643476e325a58536a4959594e3764797646363363416e4f3242784e612f74542b58624a31577056356a3855474d764c48464852704c354c564b3065495763326a634f6759484642626273756463695748784333575a4334444e3241774859717a49576847454b74696c33563052743659356e76515a74317544656c5477685a4163587855384b4a4c644b424a566936537259597035534c63454c635a547044346f4e45646c46684f39646a486c6957376e62765a553771335a6766364a4a484e6274763665445573325a6c5350375530726d78675471416b6634634548474e564b712b396f6c4c5662654d4d6c514751516e76525a366c516f636b45645474555a52326f676d66616f6a6d6751676a5a68454833714d41554367674c6c57436541644b52586b68686869677465716d624b73644a717249335343345a4244423675772f4e485363386b526672723071537679755930514d7743654d704c50724c3178536b6d574b4459626d6f3845764a316c31537747435642734f6b7861574b7a6a627975793057515a45344142644c306a3065652f6e716c30326f2b4b53397274724e6a614479747645524178346e76516552326e2b4c6279395734317150384147612b37383258704e683650742f54675441655a632f584c38426b7569394e5761576453677271412b4c386131556239574b45757246413069324b426f39474f654b532f6446734f726449575064774d6f7a51636a6333355853773849725442317a4e3566334733506c76704466542b613764717a356457785748312f6236724d6276422b31423576786c796768564d61494471594d7a714f635541572b53674f6969413530537656457367434d43676d47434a5a364b416456454e5a5145546576425062347042564d4f6d70515836795769724e5a7748425a706c3635685456583278516178646c6f61615133355952706b7154584e456c716f477247736a324947356d6551565770777a4d6c664a41317962396971436e59705641576273523542426c485a42713239387849417a5858735864656679586e672b49563062326d6751656c38794e5139666d67376a534b50334c6b327275547374554a6b596f4c4c316c77306e6f73567a616b4f526774734c78657456553574687145494f54355567574f4365784f567156567133516165464d2b53786e346f4e7534334d35414d57574b35636c4d564f50742b433062625a376a6548546171324c6d6743374e6a30577861627a356170482f61442b4b446937474d33646e58717476366c6146736179306a6a322f755850336e71466e6232355762645844653965654d35456c4237587a646c75344e6446567a5a2b6a62475147692b306a784d56776257755a614a6371626d337562644c73576238554737642b6c7932736961734d4a5a466376635463734d6b30397a656c48544f5249475256416755436879723757336c4c49737432323263514f7176344f74384e76454638492f6967585a626148696e6b5069756c414f4d46544333474f666136736a63467677346f4c793174562f64305959465a62392f546d75646376384d63736b473763627742632b39633145664e5a4c6d344c74457167337451636f4c7274335668324b6952376c444d4550376c575139554733625336586a6b72705236414566542f53743175486e616734626c2b4f4b554e48753853447462453644702b6b414e327271373044374f2b2b476773764d6265396f6f3966323856336265376864746d3150776e7035494f622f6a396951672b636966677572367266386a61584a4446744137316e394363776c616a4c777959664e592f38714d725168622f57664d397a49504d672b387133575267716454386b385367686b534b6c456e6767655658526b476f67427566536345336d61634573656e4446467755463062326f64564479556a63692f55374d7332616d41644270303661787a566f756c7452775757467a53484655546465495a427663626b4e4a713448354f736d343278746d70533237686952775673657039574251596a54465261376c675530724a4b4c596f4256456c474e5452535054564242546b6d623349616e51647345466e42466d785657737567446b5546776b496533344a4463666d6c785147714f5645423163554b6c325149666d6d374b494151664575332f6a6b44357335634972697936697939562f6a634235426b616172676965774d5543486465584f64735947542b35614c5071424f4f5378796a356c7934546c4a5653746d494d685543714473322f555967365a304b326a64696878586d495338787035653872566133476d684c4642335933395a6f795465474633623359346b774f61354e2b59743235544a2f616661694738756d7a73707a4e4a7930784b447a38626a466b4c6c36527173776b30716f6d5752514e4f345a55565a595a494647726f496155515473335970703434494566336f7844594b48697966566b6758776c45334a477133624430323936684e7259595a7a6c674f31624e332f6a4f3673327a63746b58473855594f2f625642792f4d7a57714e777337726e6e354b364633534d61494e51334f67386c31747476666d764f6d5765617574796c6948434431317264676a544a61726434534c537a586c3746387a4e653671365731334a7a51642f567037456459504e6336462b6e7437317174335064785157694e57676d6a493031476d43555841477170714d715a6f47453631564d2f435366626d724e4a44464a494d37464279393973626534447a3865556c7a2f54647862324d5a787651426b2f4265686e77586e6656625572636e6a3454556f4e742f30766237386566737043467876446c2b78637159336d786b597a4247465255652f39716f73376d35594f714a7a586273657336774954476f53374743436e6165737a634f63614e68376436312f33573570717a636458425a7232333257344a6c4f4f6958384844354b6d50702b77456744636d6556506a795157376e316d57522f6571596572335a6c764c43742b32326c51345066683730573239746e6c456a6b5547432f664d68356b36666d73323073666554653553497166324b6e65586a754c6e6c777045466472302b4f6d33455279724a42324c46767937596867506774414c4541716c34746d46594a50326f4c5a46735062344a53534135534365724653546155454d734856596e5643632b4256453737595966456f4c4e5139714c4c66752f53466e766274793158645a5a3364593148336f4e4a7634766b4f39552b63324f61796b6a4a4341356b6a2b4a42722b3530394b65563355574e666b73586d36527743553333646b47337a4d6f3572447562326c78676c753363736867734e2f63655a534f6143716454696751324b4551706b675942776c6969487951314944493845534341787853344b416f4a7a4b4d5336464267675a45314b4234546c47516d4d6d58726468756f3775476f4670434e6531654f656d6c64503066642f6233774434545242366753667453334a6949344c4c653354544a316674575335654e777845735851582f334746703846304c4e794e77442b4a6d58427637625151636a33725a366465306c6b437a6c2f56386f6c704471366c336470646864746d336344784e4734726c2b753757567949335676474461757a49706468757865694a6b3143446965716247587031387769656b316a4c4a6b7533395676324f6c334158712f554e744431446279686a4f50564874344c77306e424d546b67364f363959335736676256326277503073793574636c4155615949467a5a4167756a676f4367495a6c4246544549756749416473313762615742734e724742704b58564c692f4265653942394f6c75727575564c634b6d58344c305a4a3346777a6e34496e35494a70386d32626848567a575347396b2b6d616263335a58546f722b53352b796a50646273776a3459316c4c6b45486474585163545657417878347242657456317844484a552b5a49686a6e386b485831674369676b77795a5974744d41615a34757441754358534544584c7774755a5541477031344c633376507553754e57556e587050386933586c4162654c4f656f6e6b764c786b785148424633434246574b67716767664c3969674164423255507664424830344b4567476d436d6e496f4943614b4f3669444d55426441466b7a4e536941514b6d416571474b4c48504a4157664a51785a41423659496841492f77414b4e5232714d35524a6f364153494b424249664e515677433032746a754a2b43425a426c777878524e4b5a4c6f5850534e7a62366a41724463746d425967672b35416a756f475543673449447951624e51636b6553416469675a5443696e4a41634f78446b55324743586955454c3052784c4a65314630426342474e44714e5541486f6d414e437943654576696e42663277536b50584e6b48617141455a6c44546745305a6a4f6968414b43454d6c3068475253344232514d2f77436c4179644b6e3730414442514f464156436758426448306d414e2b4a6c34593958757175656171327a65386d71443066714871454a4f58342f466565317976533756555a6b346b71336146723053634151673958733756765a3264454b6b306d567a642f7574447763456c5a72752b6d4842575461694e2f6352316a7065764e423350542f4145386d427533633476474d73316b3954614c7747646666775859763771465342566d626b764e626d364e7a65307877514a5a32383542326f6e334d376c75416756364879725675304244774e2b39656133323446363457777743444a3856486371636c3064685a6331774343693373626c7a71776a785638765335614868314664653362655162774475562f6b7547646d7951655575325a3269784464717178433954754e67627348616e783756352f636259325a2f776c426e4b43696b574e5367684c6c514b436e74676d2f4641754b4a43444d6f4167494c425173334e41346f734751426d55504a5173445653534173706e31495a55555a415370716169474b44494764455264426c4b757751485567366a565262486b67584642487355644247555a514d6a68326f4678545564304d46473936416e6756436f69416748682f46424573707a514138555445414b4d445642415862425254745269676e733655484a45754d3144556f44563649476f51426f796e7751425233523746424b69434130636f736c5a30773663554142496f693365674b346f7677514c494e676a324b4d3555356f434b59495971454d4547594944677032496d76596751676d62715a305244674956514845507a5178524a79515a41586569564d4b49596f434379425262676f51676133584c745854387653414668326f315359726f4d2f4a42554b79414878545136474568513968566b34674374536b6e46734b48436943794d34787256686972494179504c38466d673245692f48745461626a687632494c727579686469343853354e36784b32574b3741753177717366715a6a50544c6b67356c516937594b4d687951513055556452716f474a376b47617142785237454137564345513749643643525076525564456f465562686769416779426d594949636c43674a4a643046486f56506d674a7735685751675a6b4d7179486f75707434523234656663676c766267686f67366e71724e4f6c6e5055507756463765343652697368334d6e7a6267673279664d6971787a6731434d30737235504a4c724d736345437339636b475434345a7047716741644447694b73733244636b7743437242484e626a5a6a414d41367a3337656d525156636b4d555a42514149414b4a6a587351384c6f41424177672b4b597731594a4d453854714441494159736c41616975455152324a44484f4b42485a466e4349536b494a512b465167494e52456c6b45785566504a416e4a4e6b675631486242514171416f493730554e45776f48537478514542304b356c52466e785151344d454752525952635a6f4177644b2f7552415561764a42394f68746a4478534a66675554746f412f74536d5630563858596c31545a7955477146726a524e4c7077775754564d42383830304a6e4134596f4a754430612b41586e3767477150357273335a4578507958496d7875684275734857615a4c54414d65685a37414d437455526e494e32494a4e774b5946635466326a6a485041727679717566667432376d6c3350374547434870356e484b6d4770624e76365843544738524d672b484c3971486e5350544773634b4c666264674762386b4769455932786f4751376c555334645071314d6a492b35426e7534705a4678525853675764325659687a515a7178562f2f41426c3032687371724a765a537432326a6d677a3374306239333765794850366c314e72594733743658726d6365617a2b6d374d62654c796171324751384a64415a62695674552f3347654274754d46615a52344b6c346d4e4b49476c66312f536b4e4a5078556b42674d6667684c71476f7367484d344b4754436c565272656f7953584c6e45397751614a5852486b6835764448425a446537364f2f4241334347494c353151587a4c4a424d505467734e792b4a754a5a4a4a536c674b6a4a4230775268697558367542706a495a6e344a7256375553507147433533716d34426c356363526967353936626c68525a3855356b3957434172326f4868445551426d757a7349675468536f78584c73426a52645061667251566571427743654d6c7956305055626750517564496b6c4266744c6874335945646e76587135577a494f63514d6c342b7a34683272326d303074474a596168584e427a7264774757696541376c664f786d4658753759686569516153485a67744559363479346f4d74732b64554d785736455a4d2b6135337038706c3638766976513259693553574571456330484d74626d4e306d4842644541455571755a746259675a514d613676334c66616b497977716730327164493472772f716c715672637a696348314c32636478434d6d50535452754b346e2b54656d6d4d76756f56684b6b36344642356b7853766b6a4b714f485967413471446b694b5949446b674e564355454861694134714e6d7069556535424834714f55614a55424b474b504e446b67444d56457a7567654151426d43614d6b4f534a636f436532716859314b414369413077524a4b554967736741644f546c6b6c7277553149435347594b6330724934684170556f6a6778553076324949433943672f464e386c47594f5543697176322b3375585a616f514e7743706941366261624f65377543335a44794b3964732f53393573375968614e6b66377458655543773965733074376d7a4b7965476c7774466f37486466384d785849534163396853335056622b7a364e335a31512f58417638306b4c487050716c594e43625941365a6648397143582f41454954366f6b4448474e467a39783652637477303653414d34467775696652397a74596e374f2f494166525032492b4378587439767476467479614f7a78302f4c464269734157356d7963683958746d72664c7436664d465061716f326b4c57346d39323464636a387336727548304952682f546e726a7a39766d67345534753034747057572f49584a4d484374336d796e745a4e374d73686c3855424c3570447a6f654b4f4156426d5a56434238532b586174634e64757471426c2b78582b6c324c5936376a4638485870624e3443414d574148365238304869647762736a2f5763664a5530795873397a434e306b54464469764e627a596551544f4a65434445785a6b72714752536e6b674c4956546471444242434b56557855787752626767556c466b587a51426f794174567869674b39705461674d6330415851414b53553071526755454e456457525555696768776f6d4169557356474343346c3671434178565776334a7462486945424a415a6450306e30552b7061706b36625550464c4d6c63715a4f4e4b7231486f46343262576d4a64792b6e385367394843456263426174686f784879584e324e777a45706c2b715239772f4e56372f314d6265796459724e774b717a3032337073516963342b37696733516e72444b77485431657a4a4142484b694165723449477837516d7478314a53344a4952746671795158614d2f6232436f336376366376624a58796e3342594c317a7a4a61596a42416c7544394b754e6d4632486c335254385062676d4564495464564a44484242347231583069357370394965316c4a6375704646394e6c485645776e574a2b6b727a4871762b4f6d496c754e725750694d637767387a7a5154567a70383142496e4641745365616a4f6a725a7553495141696d7042775879524949396e536f49414479546b344a52784b6742514e716567556a5642324c684153616f514f394553587877566245685232484e424a524c36754b6b54526968715549434364694d516341675335484665362f77416639466a74344463587744646b4159366834654866386b486c346568622b35447a425a6c702b5075782b437733624e7979644d77596b63635639584a4d73325766636261337534473165694a413535682b434435615a634d4552694758744c332b47324a66384e3255663575717663793557342f78712f74415a542f71517831573875342f67364468367961713631644c2b78537a73562f7036695035565a5a394e334e346172567555343450474c3139754b43324e77305a57797538614b32486f587141446d7a3735522f4e5a7478597662576c324a742f4c3334494a6330724e6a32494334324e564463312f6b6730324e3264734e4d412f486d464a372b354c6f5076575044446972596257632b73696d4e5546666d4752716c6e306d71736c61494b51783149434c72697131572f554a783663593070697351746c6b3862654344584b3735333067633162597444564855456c693345633546614c493154646d503442426f686246567074694a785a556e534d4d4373303930496875614464636e43464269466c75626a534b6d7177336430545531575364345370775161726d34614e526d736335367345676b2f4d6f65335967413571452b35474d5a5458543248706b627658636b4f555878515a4e7273376d356c70674b48334c305070766f4e7361626b794a6b6434376b32306841794e6d307a44466c33396d526f616a514e45463171316f4179416f414d41764766354a41626264796c476e6d52456d357232387a7058682f3870494f346933365548466a656c3242534e2b59774b724e4545472f302f77425575624335357351357a427a567672507176397975786e474f6b526a706a484838467a475a514d67696a6c546b6a49466b45444f35795469755352323570784e324f51514568364a59304b654c536f3945474b425a506d4650775447724e5245314a515674774b447432497477526f616f434b422f676d694d565757426f6a72592f6b6731472b4e4f6d4137555441474c6750384167737775454368597179784d427a492f7451555468576d53577543314872665469714a787a51566a42424e4374455443746330413853694e636b2f6c4f484b42556e4a584743575557365a49464435496b356345434f4b50536742495872663864742b5a73354d394a79507743386b5a61686a6776566e314c62374c302b4e717a4c2b7359757734797a664438554759626b6170696a6b357251433975594a41476d54727a4e7264546a496e463171687668704d574c6b494f687359524d593663543766466149624f653433526a5a45544b324f4f6c5939746630456433375658637557376d346e4f654250367342775061673758714669374733474d34365471714158777a584d396133635a32343249636455766773752f774233415246717a5351784f4b35733547645a477678514c7a43694743653145475145734546396a59333977444b45535141584f56465141354977585a6e367159513875337038746d456450682f6175526f4d7168424e426b6e4d52676a433254566e5a614937625431454e6d67794d365852716f4d5858542f74377831526f79535778306e58716957784344317670647131744e7647454f455a4538536535585433666c31786b47584274657257724d4731682b55586f4673325671353668626e4f45394d49394d4a4e346a692f734d45475431583073626f486332574633366f443675593538732f6e356d6652307456656e334e76643761524a74762f4142322f6238467a642f4b4632506e584c5a74334862444833353830484b5a3846706a774a57614d6d54776c714c6c4276747965547262433633637554475a464372504e4d41785a42335958795748344c5461766b666b7544436573735333426137642b55447078434430455a67316458514d445631787247343074562f6d7441764354635548537852785a6a567366594c4843366344525035736e364f396b476c324c386c6d334731463047445968573272723078644d305358516553336d777562596d554f71484467736b44624c68324958733557744a344c6d3733307531667248706c2b714e4b6f4f4461675a5945454b3264755031466a795a4c64394b33466a7764592f683967737372556d366e314449304b4133424841462f324b6c77615278504a56794569566f3231675337436774323233455143514858653238644d48775747315a41614561726f593051615148496570576764505561724e436c666239696833496a30733644543471596533424a4f596a6e6746696e755a457341614b695734483166765157333977412f61755a65335569656e42624c684567504d7a5757365952354f67785862383957444b6d64306d68792b6131546a484a5a626f46534f3541306237647963626e54546d73354141366b702b487751577a76737135587630717256586b6b484a42444d344b464b695339554262535644564444465242416e6233704345534b3051526c475a5242415a49593449456f7552544e41653145644a53686b61684233397663473774753358476a6376334a62316d65326d4a53772f425976537478473165486d56696663765258724233454443744b6f4b3974434e2b33704f456870392b5937467a744a32643779352b463653354a765474314b3349325455784b312b70326a65746d394c706e4159494f6a7439774c67307a5976466d586e7433436670753436422f546e6832493748314b4e734e50484a582b70582f414c75324247756b4f364454737432586a4a715a31785847396132766b37677948686e316a76536244632b584c5249737570366e4b4735326f4c3956723549504f494d6f516932515151316f6a6b67474e526c5653705151732f4a5045784a726e33704d46454870626e726c76796f37625a783052704856395235397132527664456262302b4c6c6555323064563249656a6861703775566d5853587167322b6f37773278356350464a647a30725a66322f6264662f4c6336702f6746772f3866326f763370627137346264527a6c6c377679586f4c30355870734d79677933726b62663953644150332f4a563753334f36504d6d4b47766371626b6675747a3545613272645a38364c71366f6b6173766452427a747a5079576a4c39717432637a4b524f41413675774c44616a4c6533705836365859635079542b713368744e766f6a34726e542f7051634831446466645835585467666b466c384a524a47536a73554270477553584a48553452624a414d4f4b4c55716746473936414768524a644b6933765151384642685652484474515369484a527a334b446b676c464143706969577a5151464d37567a535949366e7851544e57326f61706156554671325247747343673733702f70317132486d4e564d4f5a586268456e70774335657a75526e41662b37735853467838666767733153314f7566366c3666623349367730686e78572f5531505971615267616842382b763270574a6d4568554b714f4b39462f6b577a30474f3446586f6677586e335141316f6955464f7841514647554e635545426a513856434f4b6e59705139714256703265306e75702b5643716f6342656d394473614c6575727a7a51583250516241694e5a6c4b58314e6d75704459324951305734552f694365304f464356624c6e526b485076656d6261593841485947586e66555053685a65554862354c31636a6e5067755a766273493235664a423541676f416b6436616368496b684b376f43376f50785561696a4e696767484651555562336f346f464264454b664a514d674c4946544246694d4545636b3155474c6f44466c42464178754570726477326a7142565a5544494e4d747a634a4f6d6a346f624f4d7054654f537a706f546c62384b44716233644741304f7935574f4f534d70475a314771586d674d526d757474695244546b5679675771567632383262443971447362575467726f37654452312f55537562594c45524336573359682b394265784972384679665666542f4d7445783851396d5861694e5156624d4445674d6345487a2f424131577a3144622f4147312b555064324c475545646b564379444f676a743271446d707a557851526746475237557071674a5a484651455a6f456f4a696d77534a6877514b4577346f5564544e41795842536f6f555256414f7851664253566665706b364350524d37594a56454549397967446c516851636b42537656466e5251426d71692b6155444d6f6f44696f3261434d786d674f544a4d6170696742777851475467383051344344714e56304578636f346c7a7751555a36346f43554a506d6f3957555a716f494f434259344b53484251494a676a676f65436751544254785655514645427955416f687039366a73676e61697a6f414f70564248645163314d45314751425454334c5674396c4b38655336316e59326259447831494f4349534f5363574a6e434a587168306876687079524e694c30434479586b7a72525667505265746e434263454438317a39317359533667475035494f46554b48696d6e45784a425177514e4173614c6635674236736c7a7830315731784a6d474f4b432f7a48366a3456424c394c64754b6f4144346c4c705a336f454773444841305336744f437031526f364d6a576d434235586f32772b65544c6e334a4766555539365844425659637767584a446d6e44356f5651413463314179686f706b67695061706b6f3749496f70456f633042434a714f6147534c4e6d6744686c496a4e4544696f53364153444874515477414b555266436f515444465354676f6858625862693949766745464f4f4b65647a55447164625a2b6e676c6e78552b796f7a3979446d386b32626862627531455258344c5063323759494b634f31446d695846536f51674743497168346345587a514e626a356b6846644b4f6d33466f592f55755a72494c35725435354450336f4c4c68397679516d784372317668514a684d475056385547653647534f74454c57714e555a6251736779315242345a7177325a6773416c3045467042416e4e47456d555a426e4b4267355478496a3271765332536b524c68564263345a6c4a674d3749482b6e34763976424b6268505a6b67456731456877526b36414b435968514833715652484a424d55475566696f436742346f78525939796a38454142645174775543685151456b4b4f3668524b43636b5769334a41386c474c4e6b672b712b5563654b68672f6573555056625536536b424c334c64714634616f4545486d67456f55726d715a322f6772524b6a476945706735356f4d5537556948795a636870527545796f75354e6f3058473338744a63354433494e454c7572716a3453744d626d6d69342b31635335653253365675334b51773755462f6e456d6d437a33376f7476784b713365377457496455757267506171356c6a5676376d737551506767366530674a417a4a785851314e5263324c3277497779785639726463522b5344595a4d5864766d6e692b4a77576353457a2b7a6a3271375535636c6b4667596a554b71654c4442566559336877775246336867676e6d5a7467737368356b336c674d456d2b3349743239454431534952326b2f6638304771414741513852706c775451744764546b6d4a30494b7a4169754b61497057724a736e4b7862726567485246795544627263614f6d44506b73766e53354b72544b5461716e6a2b43625851687355466c79656b4f615556506e786a554b6d34586f7170536a707251386b46383777422b6553786d35497763314a39714a623977546f58575579414a4d5365354262352f366b357678714879584f38317046306e6d47644455494e2f33486b48574f47613556365a75534d6a69725a33486a703975617049444f67424e58437368456b552b435152794e4672746a5433384544323755686756304c6257346d52785753424d523070622b34314371444c753547637956544148416f546d3674743233704b68514b614c712b6d2b6f6979644e334439544c6d69464f6158533570696737473733384c74385367306f7270323774755163596d6938764561574949666974493338724f4d516561446f374953693763546c697533744e546346342b78366a4f42632b7a7273322f584c4e67616e314671434d6166486d6774756269337439354d45694d5270784434717935367274397647557457755755576f764b583738723979553531314b74766367323772314b37666d6272735870795851502b517a6c745a6261634e656f456169637a6d754343776f6d41514b446d4d564f616a736f413643446d69796743444943613449696751374b49475251516c42464630415a466b43557764414b434e555743413141736f55425a366f4d4764414549317751422b534b6943434f6f6f6f554262676f4552586b6c487851456a4a4273796948646b454263397947724e5147714c634541637036474e4568725651444d6f4c59647175322b3175626d364c566f4f5438465259323839784d5737645a47675830443066306d487031734847354c78532f4165315544656d2b6e322f5472506c77385a38552b50374174397869422b35422b534d6a7143446e3377626a746837313566314430364d5a50426f7a587262677a43342b386a72366a7a516362626635447539714e456a72695031596749657065747a3334454d496859743144544d316f73726a4a423748302f303359373231674b3434695150354a727670392f3030655a7372786b49316c616c576d4a586b7474753732316d4c6c6d54454c3165782f77416868752b693548526341702b6b386578414a6271333670596c4d6638414c45456d504e655875677749476566637576767259324735317748394f625348446d48584d332b6b585a454d784c347669677a584a45396777537870327063456561447462494f4f5143376c713249776f50646d75523650737274323262684f6d422b4b3745743573397366367430647766354f67736d656e714b352b356c43354335435577326e7048504a6447787666547238764c684b4d707977317862384174553972743762432f626831554844336f506e557645684b4a5874397a2f6a657a76452b587174584468563472796e7150706c375954305852544b51384b4446556469435a79513643435949765652545456424b596f633033463047427a795141635553464a564c6346627437467a637a4671314856496f4b5557417877587366542f41504662646f61743464637950414b416470562b342f786a6254414d423566595458336f504375365a6266554e694e726349747931513546316a374541664a425375536a7561494955786a6e6b6751366c6379674d496d5a41475a7a6f766478746262302b7853554330644f716a2b785867324b6a76564276332b2b4f2f7667696b58614d537655324e395a7467787555623675356559394a7347376531742f7839533656335671346a41386b4864473468634c52776247686f744149344e7771764a6559592b476e77566f3373774847492b4b4431453773596a674f6141335676693638314b39664e5a544d52377775687349537552316d6a394a356f4f6c633341306b6731795232384e496f3534726c372f414842687542616f47696a397a49426f754b5a494f786f5a676330574941424b354e7631433447446d5332533342474f434464464a5a6e727553667775797977766e784f3478565870573638324a7544485555486c2f58396b646e755a6166445071393635516a523137502f414357455a3755544a366f4870372b4b385a69676d4b4271584f4b6154594a5148514d4a4a615a7037647564325769324353636f3157772b6a62356e38695948387144432b7246413838313376545038647537302b5a652f703233622b497477483572314e6a2f48646862444733725047654b4435793477514b2b6d582f51396c64746d4174516963705269784835723576656835557a622f5353677266676f6f34525042424d4d45416f794b446236587450766431627448416d76594b72365848427a677646663474614d626b373577625344323472324a75305a4263345647344574424e736a554b746b65536353496a564a724f716766735157574e78446352317737786d43724e546a6975667562556f33504f736c70665677493538305933747a71454a73496e50456f4e75675369774162356f52737868307741682f4c5165355678317a6435396a436f526874394c6b796c4a2b4a514763497936704259643739714c636f333541416a4f7675484662685a694b436f353158506e3648734c72794e74696339522f4e4234716577467a55647649474430795771313650434856646d536630772b56563673656937577a486f4d672f774445756675747444627a30695a6c382b39427a59375062783659514f72365a534b4832684978376c71306946636c6e75376d4d54305a6f4239714354716f31417144736d4e466239774a39557150526e5663723857784a624a426e75625854676d6a7478414f68633355496e5346524c64503455473356434964566a63694e5934726e7a33426c554b6d64776e46427475626f2b476c6630724a6376535065717056445a494e524130706d5646425769474861756e73505476754c6337784c4348742b53446e4e77576d3174544c6d417465327332626b3942716670795a626a74664a38464778342f46426d322b7748693732572b473069786b2b6868394f4b534630524967635674323753446355443757334333466f31665069746d317661515966714b78572b694f6c7346504e4e76426b48557558673146347231693535317a5754326469374d3932644a58413373764e72775159614a5879526b6a457652417051717242467947516e457878784b415a6f497454676f45415a30634542537169416d697342376c566a697068564263435063692f4656565545694367597852417977524d774f526431614a776635494b644f5846497a4c544b4148556b6b41342b61436c675252516b706a62594f554a6a4a41305a73475451593471736976536a674b6f4a4a736b684a4b59674d4e4f4b424b41524a55456942696d6a484a474e742b614264655a524a6632644c4f4a4644524c456f47656c464d455452424149347369706852456f4a49454a5a4f694354544e6142744a742b61436b544e5753564e56724f7a6d4135495a5648626d49446f4b5551374d7237746a523164797a746d676c516f357743646837596f67426b434b79457a454a45514e53433647354b746a75705463506d7132686d694b31694751586e65546278507956467935636b58794b447043544c4e425359615639422f7857492f74386635704c776256365636662f452f55705231624f57465a572b334d49505353674a5931426465652f7944616964714d69394a6471394b447839697556367a45797453694d6a4568423453646d554b717076637574754c556f754267376f577654726c3633714a5948776f4f6443617431687166765233577a6c59794b704569426e5642654a6b486b7237636d7757494d4f315345786e32494f714e77654e5069745976457358782b503472694336593535712b31654c4f55486374336d6977396974454c72596c697548432b2f526774566d36594e6d6737454a6b696c56634c2b6e78666d756262764e31416b505261593333706d326634494e343632474b6e6c6a484e59347a592b324373463834547951615461695669762b6c32726f7238667a57793363476e552b503470744f707461447a4f3739446e614a6c61363475374b71336249506c796a6f624c6d76556b4841594b6d39744c64774f5256427859584d6a6c525747356f47704863656b334964646c7044673952324c6b6b6d32644d334576306c423035627358413457667a794f315a42636f596c495a43506167307a766b752b4c594a50755031565078574f647764374a4a33586f45477637672f543764695364346d6f396e57547a52324a575074772f4242664b3642517171636e4c7054626c706f437035563257455a563549415a6d574b54566c6b6e6c61755238594937556f68495a49424b6c46483471794e69375077786b6579713647332f7741653364356a4d43334839557a2b474b446c45436f566c75334f5a3077424a34414f5636765a66343374683133706d372f44487048352b356569326f7332492b5659686f48424238765a693073516a454c36503678365a61333169525965594230797a587a6d6f6b786f6330456c436a684b4139516f5a6b307955456a4a424b69714c6f5243674877515236756979436d4171676a4d707a514a6f694b596f496172723754316d566d476b315a636741756c5161627436526d626a316c586772507662686a706e4c702b6178346f565157475a577133764e494e6535596d346f2f776841786c562f69747364394137656471514a75533931467a354b4e56424b6f4a69615555773755427267554d46455931785141426e4b6e4e523255666d67684e554557536c42324e72366c48623259326f78637553655a4b622b396c6949516a475a3664546e344c6a6547714c6e4242365430336332376475554e58564f754e58542b70623779374a74673963754657412f4e655969564865756144315778757773626239494856492b3156775055643139336438776548434b796d5a556b41616841484b6a555548344b42414b68544156555a5242475578585732662b5037766451463041526766435a467346677637613574356d33637869636b464a78514165715934312f6169374946306e44464d584e5564526a336f693652346547434373524d736b78696645797368655a7878535376534d6149454d546755445475526438554541465552696d7846554543684f44576956363055636c423274687557784c5a633136473364316e444a65497458504c4f70656d3264387a4874696736305a7563465a69656c5a3756546a52624c644f3142527664714e7a5a4e6958684f4861764333724d7476636c626b434e4b2b6a4341412b61354872586f34334e767a72482f4b4d587a51654942644647555a41365469464b6f41364f465167532b436850424158596f4b495a6f4467563766307977595772635a597337646f6f764d2b6b624937792b4c66303479504a653862524852476f474343754a47536d495279624e5653716772757a4a71652f77422f354c7a507247344d4868547239374c304f356f43636e4878586a4e2f65382b2f4b6675515a6e645474526a58425277545642473471664e4d7754746e374642542b4b656f544767537a4e55436a67686e52454534597149426956416f796a494155634b4a71706561434135496c42733143674f6144555541434f6c42445651696c454644584242496831723239786d69736f716a41365548623231326a6b3472715772674446384d767a586d626434302b5336327933416c794874376345486646796973635941354c6e5275533853323235672b334242782f58396f4a7746794f4b38786746394544534769576553385a36783665646e642f676e5750746a3730484e4471496d4b674c4949366d43446f75676742393667706b6c775248424132496f6c445a7143544b4771416b6e4253696c564f78424346427a556431475142755368524e616f434e47514631475a42776d666852416f4c3055594b554b6941346f4b5a737068676747474b62356f4b595551527330536755786c334946775538534b474b42674b4d6743785535714641704655326169464d30424170525778736d5241716a61685264586137654c396544494d634e69626d415677394c656a454534653146334c4d4957712b7a4a7a4236743855486d7a365665414c525747634a5736536f765869446c366a6879574c66624962695053476b50714b447a654f4b444f6d6e4451544569715749346f494b596f307977517a5271773449424a5441494d6d636f41496f464645344d45417a645732494737495256516f747579783166566b67364e6f6d49366351746b506371624f526c6a2b433052356f4c596a554b68736e54434e4d33556a42346b706f797a43437137456d6d5459344c42666e546b743932575a78584833636d6c513051633236584e56532b536163336f6c354949513673684c537178696e46525242614c3255736c426359756667714277434d706d534338546a34704a6462476970787979524b41334a64354b42427a51656e454b4176795157474d6d5a4959464e7163736168575371656679515a77616f34344a35777071534f676d4645447a526442415363304648637142424d314169447055444442417a31514f43586d6a6967506846633144784743484a517951514f367568666c434a415655634b6f476f5a42654e3564643350765448646c6c6d484a524272382f763756544b34575a56594b4f5167496b5a6c4231436a35524b414e563042563038344733535355785a424231416f6a467961496a332f414a4952514855777a49546a704356773155737175636b46384a6a414b345853517a676763566a316f526d6736455a2b5958536d5142624a73566e4630697271436570426562594c5a704a324e52594a34334268376b59434d7a716674515a6a5a2b6b5a4c70656d69786175447a50703675726c6b676245434f6b7571376c694f6f593971444875726f75335a5462456d696f4a31567957693574664c7137716d55434479514965434b416f697a46414170683249756f6744496b354b46736331427a514446513137536933785577775144447655435a6b454146425251567277524a516267674743443054346f4d585165306e5a69374d4d615a717133656c745a7561396c4671453434346c56336575674c74383048583275396a656a696d6e4a6a3755586d6f585a624f666d67395031426469337659336f67784c7567756e4d78366a6d764e6276645375334334784c635631747a75674f6d48694f53382f616333685767493144327851645350513068677357353951767330634437364c71414e306d4c763731543972356c4a5362383048447357722b2b7543424e4d2b53394e5a3273624e73517473437174764346726f686c5874573255343237666e546149465851633364335932574f70796670685833386c645a714d66346c6732384275622f6e524650703746317042756c38666b67716a643876784b3646326e546c52595a5852647561496d764432433252736945415a59385544517678443852696b6e666a4961717246502b7050534b49786e4952446e6c77514a49584e7a65416a3459344c75577a434d512b4b35646d34394150626d756a427a454e526b46766e534a594f785469794944584d7345576a594479385879584a3365366e644a6a39487a514e754e39356b7446703248315a4c504346646550375559484d5a42515472374d67597859463875615456587177624e43567a6a5231584947565367704d79414a44456c56546e2b764e57546b4244476f77584e3347386a4974484242626375456869566c766b785a6c524b385a4d3146584b524a5150493671706454712f593747397662677457672f385751586f647873746c3655414445584c3265756f39794479774a4b5a58376d37724f75677870476756424c2f6d67496d3071712b4d78677372765651486767327875793756564f5434342b33464c35702f636a63766559677061717559784834716748537235586d6f616f4c49327a4b71566952712b4b547a52334b337a4e5875514c49444a43394b4a6a774b4679656f366c564976346539416834496d6855306f596f494643464d464452415166314979695549784250424e2b4342614549413052644553346f4655642b784b365a304251776f6d646b4b4f6747614e55724938304246464f616d4369434b4d676a6c795152444371675a456749435339414f61567943366c416f61396943446b6a5652744972565173676a6c716f425138754367446c413161684b705842466d515278696f7038304f33464133347072554a584a615968795573415a644d512f5a5665733247313275316a475574726675334744796c626f2f5a2b61422f5366737653726575356468353073667162735a313174743672744e7850525a76524a35302b624f73763332776a2f414d75306c626a2b7164674d74452f5466545056595062454d4d626653523776785164427837636b6e625572695872573939493668493374734439565a41664264486237793375725975576d592b315546637a31506d615557432f4755346e6e672b5333334a41454f756675647a473344564d6a50464277505662666c3653517a2f466c7a4d6e562b36335033453350376c6e596f414856746937354e77543446566f4f554854336d2f46794f6b42365a315a2b53356836716f6d6943434c5a735957705331337931754f50506b733175314f374c5241564b326558437a4569646578426f336e71742f6378387179504c74526f42486832726e61434b4846575433526c515944755759796646425a3078624e577a334d6a447939637441776a716f4f785a685369414c6f4e58333138304e795a4179314b54336479374270794d763571724b564f31417a684951785475475a44557943417452446d69485551427171647159423045476e5a624735767273624e6764523977475a37463945394d394c732b6e57784331575238557a6a4c3969772f77434e656d783265334636582f4a63446e6c484966697535326f42584869716231734e71756b6142787756706c45417a6e53492b5338622f6b6e71393237503761335331324e71392b53437a31662f4143437a474a322b7969442b71656b4e33666d764b536d5a6e556355583156545174546d48414a376b43414476514c4b364e6937637247424f654753454e746475677968467848486b67704b63687543736e747a4345626e456b4e324a52434d785131514b6134305170676f325346526767372f41506a3874454c702f6c3731713364494765583472686244642f6179636968562b2b3953463843454846586b6774454b4d797473574a53504a58576f7643426b4b6163552b792f7141364b684174364175546862483156586f6f5138754d4b4d4277586c7435492b61596a6870664f697574622f414f32675a3669534b4d545230466c6e2b767535337338496a765631306d334e6c5236574e565a564e5675302b5a633552414342495145576c6774554272726935783471712f4b4d4969414e4356707348514246716f4b5055516265316e706256507077574c3066632f6167324a352b46627431634e7955495a4354397978626a59537579426a4c5379445a764e724865487970796133695a666837367267627630614e6b47646d39626d42547856562b37736271774443556e484548386c304e6e764c487159742b6e43333559622b70494e3950413434356f504a6945795741633563313662307a2f466a496566366830577858527159742f4563683376324c7637583058612b6e794e32455a546e54535a4e4939314b4c6b2b736262314c6676716870736a77774534682b327143302f354a366673345374625342476c323078365366652f657548502f414354314334385264594868474962344958503866334e75486d473031517731504c393346616f2f3431656a4c5265755268485471664838696737502b4f2b73793373545a76567577712f45666d7535457277762b4e574a432f384163416b52742b4c6d363931457358515775766d2f2b5257664b3330327a62354c364d37446b764266354e4856755a7a2f4145366669454842656a464c58484a5446526d4341796f6751794c6f76314d67395a2f6a31733239742f4d645337384a4d79382f366675644559776a2b6d4b364e7538346b516343314b6f4f6a7231556430305143577a43786561785a36717a7a71635a6475476144524f5a49716a6272574a397978482b4b6f645647394f7a4969314c532b4a306f4f7a5056455537464230504b5a306a6d56785264767a704b374a2b35562b54626d2b74356b66724a2f636737636433747048534c73483461677259526241727a4a326354636a4b334561745661555a5866354676767434526c596d59585070417a376b486f644c3446313572316e616273336a754248564165485469427a43793758314f31366c2f53766e7964773354646a4a673672732b74622f414e4e766552756e7577464f646377522b4b44426376766d34783730687642334f4350724d6f62666433493234734b66477135526e72366a6967306e645a59716b3369634452566a676f334242484a554a556b7a75364243434e565148676745787167676968346c4d454b3449446776532b6d746632506b577942496e72656d663746356f3055636f4e657237666346363653783775786444613779563764536b43786b473473334a63526a67724c4e32566d63626b43306f6c42366a61796a366849324a2f30397a4436754a7759685a7264365671346255756d63537a4b34373359587a4865532f70336266566f4848747a342f4e635466656f7a336c2f7a2f43634b4950516a6432684c2b6f517174377138635730737938795a6b315769313668647467674847745546303732714e616669736c793438516c7558355854714e456e6167424f536772676f55584743447437506278614a68487234382b784831715a45644e77445653754335566e6454732b4173564e7875703768764d7155464a4f7169476b4443716b577a7755514b794e5a464e6a6b6c6c3845415a6c47495230684242415379615746554544784b416a465131716a564b3155454a4977526430473449346f44727170724b464170694f6f6f4a714a5242314a534734714e7751524651596f6f46444f7465324d5953317a6675576145633174322b313141334a306847736a6967362b33394e742b715231524e516577674b6e61663439397a754c6c6d467a6f744670545a366e49422f6574506f75396a744e707574307a42394d4f302f7643767461396c3664627432326a643347716370637366653243446865702b6e5739706438717a6438316831557750785765477a4a424a58526c4b7a5a6f414b654b576153357672444746754a4d6a3952775a425648302b4d51386e56663238444c5343374c5a597353334d4e5679357074412b484258584c396d31623871324147377a372f626b677a62577a473054634d6454595a5949334a43556a4d4845717164786f31775649756e415a494a646b614e554b3231744a33496b7864763563466d745842457677586332587149306558714978663841694b446b3359533871524f4b3534345a72667572344e79516a3456684971554146436a784b5841756d4f43434f2b506169365544323975784e454f67734441594a2f4d4744592f46427750636b6c587339794345676a53614950714e4d45534844424c4b33704e45463231687175786a3731504d6c74372b7530656f47682f59724e706338753572354659355465524b4433337076716b642f62456f4d4c6738636678533779656f3642522f467758412f7741646752636e4e394e4e5076585933467955734b4d67354e3134634632505472454462307a63796256373179706e2b6f584f613776706b5048494376683979446d7973586d45353642442b4c48732f5973653639474268356b6a6f6b53334a2b786458314c64474f367337555647754535305650712b344574785a733536745a2f4242352b3336527537674d6f5739555239526f506979777a74797448524964533956764e7a637657507372475a4f4d716e5042636d3973702b5731774e4c4c4e427941484e55346b63564a513079624a566f4c6865506957717a754e4257414549676c6b48566875744c635078577133764759517232727a37713458704242364958394e4377484a6162647a554e54727a6c76644e4a77744d4e32475947767452423368664d546c324c526233484531344f754e62334d53574b756a6545716c42323454664450354b3250545548466361473570314c5a4863766a686b67325169485a56626e61327477487552666d6c6a75676e2b342b61446b5866386367662b4b3570723953786e2f47622b567948762f59765552753178434d6d5a4235592f3478664e504e672f662b53502f774346722f3158596648386c36727a52624771636664696e6e474559366f657a6f4f4874765237473330776841584c7645346675585547307452476d3747495038495a556259546875424b686978393379572b33507a4a796b667077515a62554a574152624e4d71664e4e49656453362f792b53653031364a75566f666971764d75614e52464d334b41434675464a513676656b7533444552674e4d5864505755645542514c50666a6175526565445a494450636d33343536655a302b33657346333147324d4a4f736d39326d6d636446424d5031565a5532647443465a6c2b784273322f714d5263455147424b37636273686e7749586d764969475959536464717866486c783159674d5548627358524e34723576367142393365306548584a657a2b342b333158704d304249343435674c776d36766566656e656254716b536770566d337453763349326f654b5241393651634d315a626f64596f3244495064792f7741623256367a356349614a444366314c7a4566515a6a646e61334c6b59694e544e38767a587549373174694e316a2f54452f67766e4e32354f345a546e556e486a3730473731625a376577304e716466366a6958354a422f6a6d394d64666c354f3373567a3963725a456f466d72544a6443332f6b4739744452473439667171666555484f76574a325a614a68706346586f6b3243362f7076716c72617a6e50633252656c4976724f49393772304734396332572f732b5835707352776c4532335077644234686c4f334657626d33627433444731507a4935535a6e534d55436a676a326f694c6770547977514647704b474b50504a414a4168526d5231424241575a4178514b636a6967587355464b4b4967664a42474277514656416166696a6d2b53414f43676d557751426c4348716f54394f534259494434564254464138314734494970676f436f666767694a483071565a4241514636443037302b787464742f634e34482f376344395844323456584532766c2b5a45335041343164693648712f71703373394d4f6d7a46744d4f4650627551656c3257352b2b732b5a49422f68466c3537316b447a4e513779722f7744484c7a6d355a796c3150775a552b73414d37635233494f4d41546a38564e5147434435494f676e596a54426b487a7a52666869676944747a55557951466c4644676f5154524248716f376f59596f4173674c6f69527a5161726f6d714256302f544c6a5859774a784b3571657a5079354365635367396e624f44653962374d7531637262626a57337639345851323033784b445a43596e697064314155376c49784864677961634b5578434479482b513753494933554b4358545038416d58423155785876505564703931596c6148697858684a6a53644a7843416156496f67705751544573694179684f52556a57675165723941736552624e77343344376746337849385668326c767952474179444c6f516a306f466633716d556741324a567368525a706b507a7a515a39316345624535696a44346865494d7175654b396436334952327048386f2f466551726a67676e7a5555693941686d6763687149617543443846476b4b346f4a7164544438304741556f676d4e5551674158624e457567685531454a6553616f39754341497536424656487a5154453155776f6963464151674449315a54416f4f6769686f6a5671594a653141336167546d45526734517878514e435446623976654e766d5375646a5658575a4d6561443032336e356d4b364e676b6674354c7a2b79765269344b33486553496579444b57514873324b446f372f314733734c6575645a6e775247663746347664627135753768755853352b58597531653943333238506d7a6c47763670594c6c3776303763625966314974775159525771497161346f5369324b497056424379436b6171474b41734b49793449456852424a4d31464752706b6c5078514679686a516f41706b454b67727a51474b6a6f437a565531664242524157515a544f69494c494662336f696755554262464151564f78526d7851495a424b6c5233556f314d564d5542346f4652546d676d645648637143694a5151686c416761426c4f334a4245614941745253694452596c6b3636646b6b52314f755043524264624c63694d4d304863684f4a397932573561756c636578633664512b43365733766731727a51587a664e563349612b774b33785654614d7767383936727444502b724559554b34724c33643362655a486a2f44786465513951325574724d6a4a426b6638414a514934686b745542706b70454f6f774b6a4946544370356f46734552524146304e68476a6e3936774d756e737930415a6366656736566f394c4661524b4d69797a32596935544a3130497871575a6b4130416873564e41656d48446d6e6842716e424952474a5a326c69677a5867784848326f754e7670634b4c72335a36433957584133747a564a6f346f4d6b314934386b346a322f745630626235494d77446f36614c566f656d436e6b6e466b47526d436d41354b2f513063455a3269635546444156515a4f4c656e784a2f4c624642566a516f4d552f6c536430524455364370307875536b585469317143744e67696d61445071514c696f57675732706e2b4362794547522b4b49414b7376324461504563565745414b494367436a5a424144564646394b44556349494335514a64484371494b425551616f72623664737875704f53774344505a7354756c62523655543461727557647447496270703856734c486858687751655775656a336845474a446534726e54745367644a6f56376b67596e396934322b3238647a496748717843447a785a53496356556c3851674b49476a4457614c6262736d465a562f4256574c776830795a57334e3241476a336f4d2b346d5872676b6a463247474b4236696d41413475676a736155537658676d7077377356496b424175614c506d6d6e4e386c577a555141437465394768557170556c414179496b654b56736a52453044494869574b30325a686e474b7834554b73676531423068634439494373693861355a6a466c7a5958394a706b726f626b78504230462b6e7a42714e6164695735594a3750656b2b344a43416d5a59416f4b5474386543706c614c7346737237306b39425a6b474e6a464446614a517a396d56556f3845434842536f54616549517771676866425233536c786a696d474e4543354938796a717135556441485a466b52547455514b41687956326a6d70356463384548705936716e6b6d7558434b5054694d5677625737334544704e663571713437347477484a42314a364a524e537a4c4e616e63384d5470574b47384563442b7a464365373144464270755835786b38545673302f6f39767a4a54756e4159726d7a743353307055422b4b37587063504c32786d78315350775164497a41564f7436414b3275676e4c6d73307268314854336f495a584231796f426a5663766662793576376f745170627745523831647639784b4d4e4563307670746a797962324645485a3275336859743642773761706655623432384e52616f3666356c56747239574650715035726b2b703776376e6361592b41484642307468447937656f2f585661647a634145544d737149584f6e5573507157356a634e7533332b394272683078645a747866457043427163516c31614b34426e56657932313365626e6f7766716c2f4367374f317436674446336f5630784b47336a71764842565338725a57757236654e5858433357394f376c6f2b6a326f6730627a65533350494442565267424c7378576548537839794d726744365a5935494e4d326961344a4a58347869793573743278366c6c4e3235666c6f686963454854756233365256317173374c636267476432516848506b4564747462487031767a3979645678764477584c395139597562743763656d312b6b593936424e396374526546736d5879584f63794e5572497367446f316e4a5172732b676255584c336e794854622f4150646b673950365436654e6a59455453354c716e4c38463548314f394b642b34374f2f6176522b762b702f62324262682f795348754338595a616b43684e695747434450696f41315367497a51643856424b6968446f43526d6c306f735755414b415a49476854636b484b416b484a45536f554f5345616f434a474a52643670575277515164534d57646b536173686b6747716c6171594b474a4e557a4f4541793746464f61615249614d5543486a78514e51364a466159495a494145796c564d4541487a51354b59555473364141356f4652514f55454a6445526349695046444b71425155315269706b67364130643047555a516f4934554a6f6f354b67346f4a6c524842516d744d43694769675853364a705241635563634542596b73674b5971636c48627651544661646e3662754e3949783238444c546a77487657555271756c59395833566d794c466957694171544556504d6c6e5165723248706539324d414c454c416b66484b5a6b5a45396f47484a61357939587478314e596d66307831412f466776455139563338535036317a2f635438467673663558767250384179474e7a2b59666b7944307739624e727033316d64724c56346f2b2f3936736e3662744e354558747152436630334c5650655077574c616635567464306446384732663471785775353656474a2b3439506b4c557a6c47747566615079514331763732316e35487141444877336f2b475862774b703357782b796e393174782f536c3434662f45506d744e72665133502f69373247693461615a6547545a784b716872394b6c6f6b5450624844505232386b475864333451746d356b4d2f77586b743175706267386c3276386932383974434d34456d3054376e77586d436746416d4e42565271756c715851484f716a494d6f3749437a49484769684337582b5062613163757976583677737838776a35494d6c7a62334e6942724f6d6378674d6756694a7a4f4b31623765543375346c656c395270794753786b49475a7363457250676943692f76514c71716d51515a7355453745776f4b49412b354146415158514b696e5967504e416e69706770383044417262365473787664314333394c764c73474b774265702f7876622b574a5876316a534b594e2b6144316b4934425071387957694f4178564675626a322f46535633796f364234704f6761354d584a366670686c78503746356a2f4b70772b347057517436666d7653776d4c63644a6f4967796c324c3535367276706233637a765a4767376b48653941336b667362776c6269545a457042786a695630722b2b756254302f376938414c74794f6d4d493441797779345657543058617732757738362f534e773635502b6b594476516c6574336966556436347478503943314b6d47465062334942634576532f537943777658687049484e2f772b4b34375473624f4e694936726b7455757a4a64535a463678503148666167352f7051426f325463316a68666c61737933563650555a66306f34732b5a374d766b677a376a62693462567356467549316e6e6d6b4e6a78334e4c444c73586f665374712b336a4b34586c4c71584939563346754633547036525178356f4f4c47314f3551564b714930795a64617a75746e74795a6a584b663067696a726d585a693549794343735677525a6c486f67376f4e663374385230475a594b67587034677048344b4f55444734545756554a546c4c456f6436414876516476592b70323756762b6f4b696e53756c747478486353654f4f646662344c795144706f584a524c672b366944306d38336f747a45533354556771587658417a3277492f4665636e497678375671394e32304e337562646d52614d69785061673366655375454752444c524463366a34783731756c7676532f544c6832336b6d576e78546c48563164363362623154302f6348534c66562b6e79587033416f4f64724e77487142427964572b6962574e6e657a76476b59322b3671376b4e6e7335345768452f7741724b71657a6a623165543959596f4d753233317a6333747a4762776a474d764b6c555547592b617a33765562302f5449376d456872746d4f754f4c73632f6d712f56764f685a743372506a737a36757a38754b7a79334d625a473774782f7058502b57503858464230642f366a4b4d747275342f3858313973716642552b767a7552323979554353435976384179666b7168756f692f7743584f494e6d2b42706b492f556341665a7669724c6e584f3736664c77536a302f676735662b4d58515a337250366f50336865766a6463525041616663766e32786e4c302f655238796d6b365a6468785872746e7549577a4b322b422b645548616a5070633846354c317530393255323851302f6b7654573556695268677935337247324e2b4f4651307544386b486757594d6c77775674384345794d456a7567446f7772326f484275436e59673232623852792f6958583239325675304a4268716c4c344c7a596c38565a35733455426f67396a59337342442b716669744d4e325a782f6f68787a586972652b755244466a326830387655626b714d4b6f505648635444796d4e4971674e315a72516e4a65536a764e7750444f582b3471655a657645435569787a51657668754c63512b5a7978556c76495261446e57634974692b43382f3547337356684f354f66496151746d3039516e61476e613242356e2f41485a79633139754a51644c64656f5239507467335038416e6c684868376c35432f755a376965755a65713233396a753738705872774a6d6354525577394d753530434443546d563374742f6c4f36323973576d684e67776c4956623331574f5070637a343642616258706c676a726b554848765835333579753343383548555368707179374d76544c6630766931566e2f747847446e484a427a39456757373044456864452b6e5264707959437163656e3254684b54384b494f5758436279384f61332f61576f5a6b71445969544d3955485046736d764245776b46305962496764554a6970775147326d426d4f4c2b785163335363555a416d724c71437a4b41655747556b44497950563455484e454f314532694b68645557346b36586f614a686245656f5651636d4548707a513875543969362f5654582b39566d6362636e415163737846447a554d4d577958544a695a4d526d6e6e616a4c4c483356516365517168686975744b7a62743030724c636a43525a6b4749683053584e566f3042694753694459596f4b73324b57515973745549434d6e6b6b76323950566b5546424b504a414853697751474a7169636b4a46796f67496b6b4a6673795249554842414f614d714148696f7a6f615545496273557837464642787951516c6c43564a4b5949494557424e554f53465544436d434272326f4f36643869676759305373692b53654d4a653374374f67566d706d724c6467794e566f73374f64794c7859747a396d56384e3561326a6d493133654a7743432b3173724f7968352b384c6c756d316d5662486453336d30334e32585349434559786a6877584e6a636c667433373079386d6a6a6a575753316243582f7743377433486962667a51566a6369507063725036727679414b366671743832626d3374782f3745414879784338365a6e79524449534a5858396575786e6473334934477a62507a51594e33653834505455736778556e4946494f43437a7a4a456153614b617349354a485161714451545369476f34685647587755424c636b424d6d6f6d316d4c4b76477646416f484d3371556e61694f6141424a5147583471413655616c43544241485a4f4a4d4b6f434a495673624a41633051536d43746a626361714d6c30616e4f59544d7751494951666d79716c46757857546e566745443159426b46596b4941784332374830796537496d656d3378347373576e564c326f752f754e326264714e71327762773867673352466a62523875324b4468692f4e56584c394f6969355276536c315058696b4737426b306b472b32524334424c462b316567736162646f7966564f5575444f2f796f76487a33596864426a674d31324476532b71326567674639574344624b486e6276376f674143455931786669735974656275664f4a6654537178332f41464b586863685a7276716b376f305944356f476d7876584c31306c386a696d394c7333393664556a4c795950492f6b7074396b4e39636a5a6834414e552b4f4b394a366a6573656b62493249414355686f6a484e2b503755486d76552f54356b6d2f61447741694a444d4c6a7a4446313632787554742f5437563973326e7a6935487957543166306754742f65374f746f39556f6a4c323449504f38306f726769654b4944646941484248414e78524d67675343674c5a4b524c4b496f4c49587972376536793472474d4b5a715a494f6e44643568613462747858745842456947414b667a54676739454e304d4456474f397054686e69764f6a6379697445643171614b44304564387a4a626e716c2b45646473742f437a31584a68756933465857372b756944745750567476764f6a6376626e7877423746766a747445746469397142786a6950654d463543634e546b34633154704d52307949345651652b32734c63356b7538677930536b4c6138523648754a376665326e6d385a6e792f7741423856366a316a6633746c4b486b32347a387a70366933733451616f58495768677a6c2f62334c5075764c6a3564715436626b70533979775766573976662f6f333465526379664432375656367a4b35623875374773594e58732f4e4272395249326c6b5174466a4b51693535704e6e73626d3176395231577941583568736a2b43782b74776e754c55444441592f745852326535756269784153616f5159665535796b6452776775644b34446c584e64446553476d36426a2b6134305a616a6a696730776e3165324336454c30484d5433726b78702f4d6d7533434e555361676f4b665774334f63764946492b4c745848624d726476784b55764e593542594f31424e49576d774e454a4568316d3756742b307552326e335746737930392f5967325776553773646d646c6a4352787a626775624e32632b7a4a51632f6c696e4a31323046414f4d55517a3177517777526941616f4745694f354d37304b72774c6c4b3642357841447254396b545a46364e65504a5a53636e6f745779337374704c6a412b4b504a426d6c485357534675395858376b62737a4b41306a6869716a326f49377142443449676768414370716441496f495842554a4a366c4d455137494a57587954525a3234704f31464178487751435555557a354947417951657142494742557751454d31554452462b436747614359305164463237304f6676514530376b4448696f53364a5154477167444642785252366f476877346f36574b4658722b616d4e516736666f3273583368555a396778566e7164776b5348456c62765272597437667a492b4b537765716d702f552f775163686d7851484a504a6b703979434767513166424671494242487a52555a4277676d436d724a516f6d7455436b616356593266636b6430525641434755706d69615547616d415a4172346c506a56526967673748703237307730537151374c3057784d5a4153586a646e46726e637661374d526a6174784e4a61596f4e6f6b5a34344a784b675a5678494f49716e67484341536958356e384635442f414348592b5264383648686e6a327232456853754459724e7664754e78626c626c39596f6543443535706451356331627562457476634e75575372504a424734725a3658592b347678694d41645575774c44553043396836487366497436352b4b64657950375548567478314f566547644c442b6e48555741437953395532746f365463414f5a782b5151613630645a6234416939566662336c6934503655346e344933625a4d744c596e3449504f65755866364f6e39526a3841764e466a6775313636434c7250395258457a5a41774b4859695541654b42674d386b477955444e56516b4f36414f3946436a456f46424d3038634570716c4b427042526d4b6a306f676131514d337651787167314545446747525949594c31332b4f546a5932786b7731546d584c56594264573973396c766f744b456452474962563730487a79536a723039372f44376e6d4879376b664c2f41496e6475344b2b502b4b5772624335634c2f77696944794b6b56366d663841696f4a364c6c447843455038534d2f2b73472f6c663855486c39534971345872442f6867486876652b5037556e2f344e6d442f7976324242355156566b49536b5270446c6537326e2b50625462744b5938796638655864683731304273374d597447454d66706941673831366436484f3849334c31492f705866322b3168594851472b4b30734269457457644241414f684735626a6359544468766d6c6c4c54336f314b447a6671482b4f41677a32766a48303853764c79736d3350793530497958306d4e7875504e6372316a30693376496d3561476d37382f326f5044756f394852495973636b4545484652325546436a784b414652454e6969375955514c6a56535367555145686b557064454667674141525a304f5367446f416f7a684d79446f44456756546b4a436f546b67446346434746564d5645454e4b4b4f314561494469674e57354943714943474342685149412b39414652304546555879554c6f4d674a43674367444242424f6173684c546971385641537a494e316d2b4953706e5264537a634f48376c77375a306c67567532643169784c6f50525767304f6f72546149397977325a786c306b667657714573632b5344524b54314b6f332b786875375a6963654b416d30645365467834395665534478752b395075625139596f6343736351766f573473773346737775427776472b702b6e5432732b4d4438454850774b4a4a5370674541415a45414d366a357155504a42485859324e6c3949474c30584a74774d354e46656b326341427a62444e427173572f6678577932497842516a6164754374495034494b7267347169364d386c6449673431576157426d364442764a68756e4f6934386f3670504a62765553597766697563485a383046384c636171336f7133795755544c3151714454416f4e376765484273565a473449304a584e31474a64487a5a52666955477378306c68562f7853334161784971737076794864774b7546386d4e5358346c425a3562795059704f325969672b53585656314264725844322b53434d59686a67684f7442546d6a47526a46364941682b492f4e4142457969364d5935636b7a6952426c5565315552507172676762795441617543665363454c6367613156777147643550524258634275774d434841396e58486d4445746b46334932366c73316d336533654f76504a427938536f52706f6a4a31454379775154486767674c7148676f5456484e417669586638415372524676575251726851695a476d613952746f36625552774e5547793330676c455662395877565a6149434a414766346f4266763649455a726958747959323566786478422f4a644b3945536a7a58483363444f52455255494f633656504b4a67574e4345476f6742544150556f64694d5252424a4d7a4952424c414a674570344241776b2b4f43614e456d4137554b6c41353663457546636b4864516f496146414645734b496161494953534b6f4f795a4241577a4b676c564251436e59676734706e7a346f616e52726d674a6b2b504657786e72484d4b67385751456945476d5574496f68356c65616f647935775436744f4b43313378514558716b7777514571746a386b444768644b592f53453570554a545549426f347054467530717a44715664442b4b415678556a7755465477524558514b43324b4f736f4b594947636b4936714e6b713252594f364472584c734c6c7a2b67375054324956386654623034366263544d6b5671337a586f4962617a74324d6748374d4659424134416535423575312f6a6c2b52653444486b4b2f4b69366d33394168747938343566564b7675585674794246564871534d454761375a6a49615a436d584259376c2b33456161572f6267756a646947646d50423177765572636a34526767754f366641716d37307765422f42636f334a526c52567a76536c34792f3549486e5058634762727037545448784c6c6956634d4671735867656f68786767313776635273325a6557586b52702f30726c656e3235546e72344c567570435164563237777444424231645174566c68483262765846637a6c726d31566f334737424931565049712f77424e3950756236627970617a504638676771326d7a752b6f58644d4430447854795a656c3157505372476d335276664971752f753750706b4259734376443831357663627535656b5a3343352b6e6745476e64626d35764a6170794444777852306d42773979786a63517a62334b6d37756f7838486934384f78427075627a7936476a724c6576366a54465a4a58436145756f6149447231554b743232346e596b5a773857523464697a34496b46425a657679767a31585a456e69716b58554d55423031644b575a4874523730456a4456534f61396874504c324f324f70744d4b792f696c697938393658596a4f65732f54683272523676764e5457596e70465a6335494d473933633933634e79654a4e4f5157566e5251356f43564d564571416f73686d69376c79674155656a6f68544f714346544e42516841564f61446f78476f3855415a2b354d496d525769335a617561305174524277504e42693871514f474b556e5356324c64735444596a6a4c4a56334c5675594130694a2f554d30484c6c4c4a41794a372b4376756263775763394a71675a3631554e51674f7170556b67476445424a4d3145506d6768624a5351557864426b45444b4a736d7a536749434d304558436d70734541636f4646456c42484f4b6a75794c74696c4a7a5146387767794a7851643855454b6a6a4e46426b45524b4859697a49424a514d6d6569566b455a79695755346f59684272394f324d392f666a59675765706c774158304c61624778744965585a7469676155737a32385679663859326b624f3138373637685061496a3971376a634b6f4b35375461794c7a7332322f6b44724c64394c324e2f706c5a694f63517a6535624f3342556d516442357231482f4744623639716463654278584d326e716538394d6c706754455a776e682b7865364636724445717663656e626265782f7177476f2f57504633494d7530395a3266724d425a767443352b6d58486a4572574933747045323778467978394d7a3468322f6d764e656f2f34744f7944633235317846572b704830622f41434f57336262627a72742b48566d507a4878516462314462613976633234366f4561726638775868534d6c394133556f574c55705236724d675a426c382f7545534d7059416d694261596f6a465142364b4d6355454a517754615877516171434d7930574e784b33626e414f30394c39675759386b5542504c336f6347514f4645644c4946594969544b4d5255495a49446b693667434859674e4545324a5141346f4677544a6d633853674976584a417042557754364f4b595263317835667351567869356f765a2b6c796a6273573466554b6e744b38646868334c645a395475776f54524237654f346742566c6e7337754e2b6370356638635232592b3965576c36725052306e74347062667130724e735762515931366a58464232503867395430572f744c565a53485761346346776654396d4c6c794d727830777837577957536335334a6135467a7a5268754a7836596c4236763150314c62786a43426a724948524436493542316c3951395173584c4d504d47713659306a6b487a2f4c354c7a6b6a4b5a65565671394f334e7578656a50635138794f485a32494f3175353374316174326263544f636648706253446b484641745675774e496a4f4a753350446f6a6735784a37464e782f6c646874466d795a513530487543357366386c75577a717432595243443032357551394e734337656b43596a706a2b715842665037312b573475537554786b5856753833312f667a3879394c5563686b4f785a774e527155415a4144494a7862656967476f55785149784f434a645779734d4b4645324351676f4369635159596f6d79517a356f45554f5a54474567484b476b34494148434373386b34354b655649346f4b7958566c6d394b784f4e79464a78496c4651573579774474336f61546967394e74663876496932357443524831526f66782f425858663830636630374c482b4b5834414c79426f6a685134494f78767638693365396a6f6b524342707074357176592b713771453432597a4d6f6b36644d3669744f316330516b52514c62365a7462742f635130516c4b496b4e55744e41787a51642b48714572596e6276524f59627437635173686e4c623745776853554a7633483464795038416b753568627669466f677945576e2b43382f473763416c46365378516433632b6f51746a6233375a634478446d454c76717768764463696636637847767578586e7a4c494b4f775a423366564459334d664e63526b443949704c324b577a756a4152632f7a48354c693670476a75796d75544d67397073392b4c3175624f4446695062466443643858414a4845556c334c78577933766c4d633272324c30566e632b524d53756c37556f34383048453961736162376a4168317a764a4e545631313933662b3875506870774e465844617a674867616f4f646f30354a42616b6369757a4f3350534a4d377133796949617747626a6767342f32706b704861613269445664447a4a63432f4a50573558525869677852326b4d5a5a594d7467326d306c53523066792f74562b6f57717a67375a6f78755164705242666b67503841626470707a6d4f5a5a442b3237574a2b702b43654679306154684531667356766d57706e7061504a30474b57317467394d695132436f3836554d4f6b664e6c3062305a474c594f46566274682b706941676f74584c6c776a5148666d744d724679426562474b31516a62493651416c6d62636147585669554765454d5263422f685a51776963465a7173654c5558536d64715a4f6b3459633351423563347977566335586e44334f334a31636267617070373663566d6c65746a716c4947493566424134315051352f4644536238764631646e34717237717a7270514542507268674b666d67596262534e514f42393655324a766f476163546c4754354e677445434a4871594874515935787541364137696c436a487a3452715456625a74474f49722f41424b69366341473936436e786b617957566372426468557138574a6730474b616469625939725973677a366448545048386b3275327745695365464d3044616d4254456671785174514745716c387355464e2b634a426754544c4e4333743553796f4b315735725a7841487a56744b695038414b6777697863747a413936637849785775457452356f655a4d65456f4d306871414a365a44465a723975555859304b306b58445751726a712b537259534f69574b446d6d784b70705434706f526d513941506d745a32736a395743467a614632487432494d7275616f58734f6c6170624c79366c316e6e626b334e426a6c444e4448436976466d354d74494650397249596f4d67527757324731692b6d556848386b54737868726966626d794443497557785149577935594169344952473247474a64426964367142644d62495a56565539726d422b5344437a5555773572564f7959306e416a354b52684579384c494d7235497374677451496653717a5a314e6f71446e69677a4978716e4e695a7772324a764c6d2b434370716f6b41706a6275596b48334a4d2b614277565a43656d6c474f537042594d6c356f4e6c2f636955524332644d4d2f77434972494b46776c5a506f6e7751474d69496b5a465757623568626e6242595378376b6e6b794a5a6b304e764d34494645756a546d3674766275562b45497a5a344453442f436c386935526f6d71457255785853666367725a3076596e7951485967556764364c756f66456f53394541444a6d4a397543563143616f444938464847534170324b6471434f794c6e4252386c624342796442572f4a51412b395843484434492b564f527751566954425047354a6d637374554e766f7245442f56677249363455486c6a735037554747704c74696d4d53437464795a62714950755145345338576e686967776942465a594b546b46304978746d727870336b7130324c5567326b6472346f4f4d3746577a766d55574f533033396e434d544b506456596442425930514d34356f78497a534e6c6d67596b59494c4454416674536952695768324969336d6a4f3035775156366b64537468615036533346615956365a4278777a515a4c642b646b76626b596e2b47696c2b2f63766e56636b5a533479577679516550656c2b32426551356f4e467266512f74387474507836756c2b474b74394439582b794a733336324a343573367a5339504d625a6e4a6d356d7456544c62674242753961394c2b322f774449734856597559456653546b754b757a73643763323975566d6c79314f6b6f79717a38467a685a41724c3969444f55547a56307251465644446c56425131455155336c6e46487970384546645561707a5a6b4d417955514a4f6c414454444252686969595367614b614477514c696939464e43584842425a435a6a6d72426666484a557335515162493767484971472f474d523031574e5442426f2b346c7168504453645557786f76612b7633507566543462695047457879656e347277666176533276555933505366744350366f4f6b5579314f3734494e653432385056747471694e4e2b507749792f63732f703371486d767364372f4c456e34424a365876644e2b4f737353476e6d2f424e2f6b57774e7652764c6544365a636d7a51583635784d746c6372712b5374322b717a6f67417a506d467a6433666c7539764463784c5369385a48676679584f2b354938557967372f71573474744d6a4e76677542436f64335176376d42686f6838566e684d517258755162664d6965615765346a714a746859376c377a44514d46504f6f7751615a585133462b355a723971467554524b676b2b43727553636f45504a64712f4e76536f516c34764d4a483871347a61734d5631742f4f4a32746d4563672f4f71446b426b784a77514d6171507851513151376345634b46514467676947435a3873554267676a35495a5655664a47496373674141376b5a444a516f6f466430596b354b556443754b416746546d6f4878436b6b455939694442526c4267676c44514b554369493442414b4a6f384d6c41636b6f4b4136694f3943727556436f36434e6d4645636b45424f43434b434345444254477052714544795145634d6c4e4f536c4d6b4358785146314379444b4d586f673958365349445a43584f5877584b3953646956302f537a44374f4d633952584b33786f5834734f78427a66696a45674273442b43566d786f6d4f6c71565046424b4d6734416441686d356f78693572676743414365554872775538746b43476e596d4144633077694d3073526c785141554b414e5754476c5238314e4e4f6c41704c6a426b3243676a6772504c794b43723850594956474b744547634a47616a315161746b4e65347478347945666976613349774564636a306a703775626331346a5a54386d39436563534a63714c6f623366334e3549784649665448383048616e3637744c4961494d2b794c44347169502b544530685a655038556d2f426341524165514e465a6a4b4c59495051512f794d6d7337564f5656746a3676743777364a615a634a5578586c394264785244526a522f6e3830486376624733366c636e416a71614a31444a6555334f326c746268737a44454c7562443147577a75457969385a4d4a63517931657377736238326a62494d33367a6d78515976512f536f3352397a6542306a446d56324e313668613263427144794f5476324c72536c6232396867426f6747376c344b37634f3475536d6175616467515733393366336b6e6d57483655766c69474978487553516f5747427a4375723235494d77687072456b486a67756c732f574c746b36627a79487858506d35714b4b55315651616658647862334d6f586f66554f6f63364c6a696c5174386f433741787a43785369324b4141317168385644565149496d45632b4b5567684e56417069796e7a5450567768705143517a5159594645305177515138556146514267694d4b49427151434c5a6c4556516476306d38664a4d4f457365525857736b53476c7178586d665472766c58472f554e50766f753974727769576c7751646758376a4d44373154637558434b6c767757697a474837307438426e4b444c43336350696b56614c743630645259787730387678516a4b4d53774656654334356f48732b717366366d474336634a616f676863553259334f7246624e674348745a426d35494e68684531774b5362476979446674666c7470686a4550484e77745535416969424e594e49714f335561726c58722b695241775652336b674548556c4e756f6330766e67565a637565364d513563716e376f75616b6f4f75626837766b676230513347713550336b6358494a4f474b5365365a327167346e71646b43394b634b416e446775653631377136626b69736a494145575a4769424e4b49493644756a79517851516773366a5a4b544455524343594b5a49456f386b4541443151646b57555a41457a616b70776f6f43674c4b436d4e55414561756743694f4e41676749443043446f73454d45414a344a695843445655775152777a714b425353434d6a6d675169364149565264466b41417a4b6a5a49697145713051466d7856396936515173356355526a30314b443057337559567857385842694678746a6665484e626264515a44386b485274395652374f6e6a48537339693577377561324153634d4f58464264624c686a376c5876646a48655754456a7162484a31527574375a326e2f4952712f536b326e71747263532f544a3644326f67386a75647450625854626d474d5654326c65793963394f4736732b62616a31782b4b385955457778533455525a6b384936354d67364870316745695a4663753564336252426d38735078574862577051476d5044334f75747462516764574e58516178414d796c775a354244555a594f6a4f4b444e64694a56425761524541306c757658625667663143596969347534395332384e5464663655474866755942783953787563465a6633666e644f5430554c67304753437364724b4634304b73387477386139714969667051556d50314948704435712b416f564261475a43444e70306f6956414a4b364f3370697135325a414f635367416d357764523664366e6c4546734563616b4943656d67556b5778553038455a784765434357352f7177546c73733068693869542b534a6d51474343794577784b756a64316875415755556f697846554777543048574479716b33573759614866507657665870494a57536339626c4173695a4630736c6f7362667a4850347062316b32537a6f4b52785578524b6a765242504656546d4649384854524771514555476e5a575249764b6939445963784468334b773237486c644a485542566262627334345a494c59524554315a6479356671487162533057677a5971333158645332397351474d38563531304769573675334a504931354c627374384a53454c39634f70386c7977366d706a524233392f734e636a4f31334c68584947456d585739503952476e526565696f33316f546d5a513763636b484e6452516f76775152427331414d314b6c42445442466d37554f534a6b43676d41775555425374576941676356414852416441555152314734497567374949476f6f676943676d4b4a4c6c516f554f4b42736d515a5446423351456f654846526b63304555456d37564847495569675a394f4c6f46426e6f69394544476a705872794b504d6f647142573156434a494b4a594948466b4144346f6848437168514153636e385647486678515259596f506f666c69636e6b683547725044347177584165744c4b36336835494d6776746538747148506d74306f3661686350316a63523239327a4d4d306454396e357273322b7352492b6f4f36424a2f425558726357356436316d4d70457841536d30547a795165643365776173635679377476797a7071655037313743653342476c63766462487a71686e34396d5344673279424c5563506169303362317544474e447754533950755051757a754d30592b6a376a4f45674f50735547635863796b6a646a345944564f56503363317050706432524559416d525059752f7350534c47786a3538324d6d715a5941386b484f395039426c4c2f414d6e656548394f5a5851333371306245664c74734744414c46366a3639467a623234315638575837313536643033435355466c7a63546d357a4e58436f726d6f51795353416f4d39564b7142776769507951555a30454e4d466459736d394957335a2b4b7162676d6a4d784f6f5968427433487064376268775249635972415256644f31366a5454494f3678586f786b5868323151556745383142463642456a4c4e4e62414a4771694470527543316145597478373179376b6a4936704a3579713046572b6141446e6769334242513051537543456954696970386b4564424e69674367434c3139696769454266336f4d78527a5574784d704d45426a45794c59725a437a7072376b304c486c78775469426c785153324131636c61495641536147786f726e3034444a414450534743535a59746a3270745939797176584341677249427850354c4e64743654526164514b787a6b4a46337155465a44557a524e564365434473674c5056456861397673727534726269347a503766326f372f6152326f6a42336b664677644268375641536a71346f456c41596a4e416f496b4949366a3571464549414d614969714944344b4174544a416f4c6f73686b35554f4b41344a516d354b494a4949463057556a5842424b73366a4b4d6f67414f5a5571564167675a3253684f50676763454862394a39646c736259745363687a494e566c334c582b53574c6a416e546834682b574338554a4e676b64366f506f4939517358413862735365334243653431476b6753507858672f4d2f554535756767314c6f506f454d614d6c6c75374e6d58586368452f70664265452b35756a2f714846557a4f6f6b314b44337437312f6157484a6e714f555931586864336647347579756949694439496f4171644f5341692b4b446f77395375513270327571684f65515743454a59736e74327a634c4442623765334f42786b67353467546c5657614163654b374232494e5a5a424e396a6168575753446a697939474b54795a6a4264675761476f71683545484249397944697967633073713971375132746e4354736171794f77322b4f6b6e746b33792b4b447a354c5a4974376c324c2b79674f6d33454d33366b68394e7542744946527862356c427953666369496b344c7178394e756e704d59787a78566f322b6c6f612f384130756735506c534e4552626246644f4e6d3351536b56712b7873584271684a2b34494f494c4a4e566239744d55596471364d37594246506275556a61316e707970795163325669674456537974474a497156313537557630354d37386553706c616e7130753335494f58354a5a324b6b4c6369354c396937456468634a59586f446772423654656a575677544838324876373048434d4e4c6c566b63463647587037645069702b70542b32394a4f6d71447a32676f6d334d555a65682b7867316146475870316750716442353857704e77543234772b70646f2b6e574b2b496a6b6c74574c566f2f306e4979315a464279764c456830354a3432583657782b7064614673554a446e735a474d496b48454159494f524861796e3446594e6b596e716330585a6841516556493971536e693937386b48496874424f6b55427378693946303774794944526a6e7a5759516e4f54454d677a4462615135446f6a624f63672f6574634c45744e575065724c45424b515967494f643971524c70785247786d5a6161422b4b3766534138546e2b354c4b565252782b4b446d52394f6d3741774a375573646c72476b796273585742476f6132705868565752747844524162385548464f787956734c4d425867757235576b615856666b35596f4d41326c73594633792f4a4b647349794d514b4c6f57397462687a493571346257332f706242716f4f5859735133452f4b3651376455697770786239793366326a30363266363936567958366256666b43724a37653171663534706674375550422b31426349656b773847327553502b72385a497833454c5a41322b3274577a6c4b35314834666d7373394144315a474f6d4f416f6776756572376b784e6263475030577a2f384145736d36334637636a54647653414f49415a2f6341725a576e384b515779416457587336446b7a32554358426b2f4e5653325a4a41476137305951504a4452476b576442787637575967367044562b6b56565232666c797864646935746f4148537170324234526a78516355324a782b6158797064793776324d72355967675a6670536e61693354456e394b44684742474b59476367786378433673396a4144564754397958375567304b44445a354c5a4f6374516c486772504a6950465657326f57364f3735742b3142514a585468496772565a73584a79655a64717339467174323752795a5852694c63744944506e7951555173686e61693065522b6f30535441673430762f41437957557a48684962764a6f6733473361714a484673304e4e676e6f6b5065486f73416a616c4270426a7864572f61674f61494e6773573559497a326a696b61647979776953434244772f7052463635777142787167746c614a614a39676b6c746a644654474934484a4962704c36787043736b4e5568417367702f74567949654e79326531442b31364731794262394f4b756c75424368556a634271417a6f4b7a7337594e584a344a504a684176454b396965664a5456474474456a346f42626a4478454b65525a59744850676d6a4953474237306d76435248742b31416d6d4c4d335a307147785776692b5373756169786848563951474357336233552f6f4552786c4e36664e416b353277575068397667716e47427a39676d7557626c776132474f6e7066425752684944776d676f675152746a364166356c4c6d694f45574179436c635256387561575675356c6939554231364451456a33343549523355734248443953613762764d4e455847474b70386d2f49755941387330476f5879335741433379346c4b5a325a6b6753694a42756e4434724f647266752b4f325779412f61724a624b57476e4c33456f47473374334a764b63433942314446582b5471777552787956493274714941386b7a492b716f56336b57342f3841516d422f44564154596165494a4834706f776937424e626844445366345a636b59786b614e2b61436e79424d615872324f7377326c4d6571754958516e435a445147487757573762767a7149416a33494b6f2b6d627753616b68316457533066322b39426e755247584d4a626479634e55524453443153554f356c4c554e4a69526d554670684a6d4d3659616b737470416b456c69333071676946797036697237634e586844413936436b37486a6439366f2f74397a364c73653962726c6733634a4e2f4367594d4b34494d766c7867503668452b376772342f596a787741533364714a734935594b756670774a496d666367317874625a6d455133612f344b73656e52684a7731566d68744e5054445857704c4b794d4c706f78702f43676c33626551617764364941616a574159494733754448434a6a6c314d6d6a416549523675525157614c6243556854742f61686f746d4f694835756b38324d617a69373830397564714d51644a726a79514a4b3563742b417458394371742b6f62746d38776a2f54462f6b74486e32342f5271723039544a2f4d6c2f326f38744f50764b436d31756273574d726c65476b4171793575664d365a4539394f3545336f6d6b343665654b48394358535231436e4a30414e326a5178537a75776e2f7a5734794c4d35697268614a48544771724f324c452f4d6f4d6b724669644462412f6c6f6f6654396b42716c71696552634c596241456a5678375643716a495238516442686c7374765557357552686b6d74576a614e51532f742b39625a7932302b6d59505a454a5274724567384e6365534367786567446e496b357171473333596e7268487534726f5273575848565038506b724b665353477032633047547a6439466f797455484c69714362304b53746e6a697572353178717a4c2f41494c4c646c31632b31426930524936347438555439732f4572574a365a616a5661596279307a5469482f6843446b544d5434634279554e69334c715031636c324c32367369683661765163456e336e4e783855484775624d4539437a7a326c61454c745476572b444446315264467535534d66646967354572456f554b55327941756c396d3959304a79504e6149656e5835427a6f48445731554849687435537146707462536378306a76393636413257354858474e762f63507a53323763376376366d6e754b444e35456f50784834725662757745744761756c627556303042624a5674485455784a34356f4c665069412f54337379486e32356a546f7439756d71706763577032684e6f312b4c346355466c7137624f45494875547968626d6132625a374f6e38566d6a6165594651566f306a5336426a3546736456754d43336178536554614e59747150454b71354d42333733716964476c2b2b69434779314f6e53703976616e3434676b35756d4671334b706550784b726c65747842465544443071314c7775442f4d7448396b6d4f714c414869785754377547577276346f66334f376a435266394a43446166534c77776e436e434b4132416a4942366975474b7a66336d37706159314e6d42564e4431574e7a4e6a6c456f4e5539544e674f51434e6f2b587739797a7933646b346c6c594a35527748782b5343796475334d475146614f674c64687576686b6c6a72627655613633527148505367306662624b342f394d50337536576531326762546247437a6d4e312b72386c59586241346345414e693379422b484e4c6474774930306c67334257476b586d4b64695858706a53314b665a47675155666243526653426b6b6e626a416a5648742f65744a7762797052504f6a6667713433504c6d4449532f5534716779584e7644364d445656697748665533626d756c43364c6c5a4366385130346847586c75584644394d6b47434f307a4567546e314b325731747844426c704e75307736516578504c303853384167427a4a516338326f6756564f6d50496864473573424878455077696d6a73724a447968567578427a3763624c744a6d4f4e56644c61327044704656732b31736a43417879474b49746a464279702b6d6874514157663747346177746d69374a7433496a716c52335a58445847494772346f4f444c5a474d53385a416f53324979507658616b626b33316b74772f637134783175576442774a3244477355504e6e4b6b69546b7a72767832346470525946473561686a454230486e4a61375a357233577a756a31623079554c6c4a45474d7530564258467562614a366d6675554e6935434274324a36424b766167792b69584947354c5a335042634466366c7a4e785a4e6d354b314c3653793631765978745369597961595a7063303234327033457a6375414f6734513471486e6775725059776a55686832717362434e77304c442b5a7967357870544a514c646332594a59466c6e6e747068732f6b676f456d716a562b61667935594251327a334946414f43366370772b337445416134342f673635786933497179643137635177644255545649634755374555455a73564871674f61596f46464d556561445a6f6a42414d4643707059736d6a46384d4d3041436a6a7657725a2b586375433364384d71507750464c63323034544d5931374547586d694a4b3337653463496e33492b52503667666367716367636b46714f324a646e6f6b386a346f4b4f5155433066616e3856507469445642516751537449326e3851522b32717771677a455a4b4d57576a794650743545617367676f443570534d6c736a74346973696d38736669677844466c427a577a796737746d6a4b3058644269596847555844686150425568545747775a3047655553794445314376453354433243486c383047556742454231706c5a447346517a446b675142464854796f6870504e4270322b366e5a705854775462692b4c672f425a6450755465544968385543355555306d6a34717757694d56493236395343734455654b62715638496654376c64626a484f6a494d596d316665684b623969334861775053545833495432634d5166336f4d51496b6d6a3134555638747268565437504b4a356f4d756b6a43716d6b6a426168745a514657627443553274574264425169537a63553034694e416d4d55465a6345705046557134677049524f4b4379454349305478695a596f7834415970346b64794244446a6772784c36676a62746741452f76567341435779514c4670654c486b684d5368315963477856786a702b61716e4268782f4a425249503144784a66755a3765596248386c5a49594d614c4675545642324e783676393362466f303438466769774c7667734c67594c584636484a42664130666d725a7945527a2b43727447726e4a4638577a514a63457163456b497544786242575241315678552f684959464162456176374f7162397468567142586c6d5a4335706c6a6c37696735756a67675478436135516e676748465545497a5242614c49503775434f4c635167566e4f6c526d78524d58555a41434f344938314477795545434541504648414f69324c344968694b6f453074324b56644f34532f4e4151574f7267757a59334745785572695378354b2f6258764c6c584130516532326c794e79474f6271793734645863755436666638416f6e6979366379544673475163714e32524f4a64325852684b51584e75754c6d7061747463444d5336446243576b4c56594f6d62352f705752774f795646624336306f795046426939567548622b6f5175786f385065757062766935485575442f6b6c77527632536347507553656e376f366f776a5233516174336331544d654863736b62735859305762314864797462676956435256632b39765a794f4b44703372374531634c496432415857573371765363796f72504a36744563546b6759376f41594b6a37737375335a32736263613954346a466270656d3754647731526a333446423471524d696f346b6172722b6f656a7a736b6d46527758496c41786c706c5241413551354971555151346f5a4a713549416355427771464d55496c696f613151457567455a4942415755796f6c786f6e6f6747616a315572676f6667674149434c6f44466b5157775154425747495a566d6d4b4c553755413073704b4c4d6d647936424b41454e51494d6d6268564167346f424a464453796734494368696a78514a79515442484371436a50676746536e6935434148464443694173335968704b6b61464e2b534337623354475135727332376f63416969382f47544c7262534c73667078785164713348357250367036754e75504a7346355a386c62366c7659374f3242466a636b4d446b36386d5a6d5654696763586872317a655336413959305161467343586175575642516f505a656b2b73326277386d3530532f69774b352f77446b50706b4c4a4734742b47574c63653769764f344769736e754c6b6f365a534a48444642574f61312b6e3239643465395a42774f4336336f6c727a4a796e2b6d4a6f67374e71316a52623755574744344c4275765562577a47413148366561344e3731766333445136526b4548724e7a75397674662b57646678396d584d76663542743465414755766746356535636c634c7a4c6e6d6c4c494e573833317a64543153505a795761496c4d6949536770347a38755438304771577a6b44546772414d5843726e753359696b6c5a61336357367373554445476a687770474c306c514b2b4f6d3443782f307053444846416d676d7445574a4f6c7665724350657170784c314a5a414e576d704c736d38783644715179504e4b49307751535553575078516c617a566d6d6a4848326f6a57523073677a614b754d384642416d545357714c4354747147515657676774564256707861716d6b474f4b736e4271484256694e5778514758474b67344d6c616a795272375a49457667747a57574a4c61567076696a4c4f415844494f76746f3652554f4654664175794f6e4442584352694938526b7364335734302f42426c6e457853766b746d344473324b7873324f53415664583761305a584279717141756e36525a4679556a4a3644336f4f724c78456d735a6577566b4f4a446346535470567738505967352f726a6d454a5a427775476172314f35747833634a5759733865755046656175576a624c484c755156714c5261326b376c654b3033505335694c68427a6853717331385456536475567339515665464542774b6a2f4142516a556f386b4535494d6f3155634b684247516169674b68775147515161716e596f4542795547505970555679554c7567587455375563306168414642696f4f4b4a716578414a6331476642466e37564245684147434c4976536f5a4b5478514638457054304a536f446756454f53496f676a7145735855697a6f596f43364a4c647155635577346c4245425251306f6867674a4b6a5651785246445242446b6f787755785563757a6f5053375431714d594e634a4d75783257754871397376704f416671433865435169626877795162765574324e7a4d4159527735757656656958504e32554a483643596e3846345939564d31394e395073327246694675335749694432766d676b5936774b46453243634d4b717964305a49536d79436d646e70455a592f4a54794c6668793549796d5343324761724430787279514f317548674353596c63426334397752757a7462614f713657433837366c2f6b5553504c326a6c385a532f42423164337539727361795058584e313558314431573576535468486775646375547548564d75536c4a49376b424d6e5143677755306f49453243566b53674e45754a2f4e4749344b53693155427a53594a7450424d327248504e41754b41716931614936534541695441756d3136436c426445756355414271706748436357356b55423979724d534d51675059706967794e635541526b7056437273676844714f364f436d6c424345434f436842474b4c56515163416f53365a6b764e42665a747864356c6838566f6e6673516a2f53312f3841772f6d7566324975794455643571464967492f667a62414d7376747a51644275687651506f4237553433305762533359567a394f53556c3048536a65673944697170796953357a574e36756e457a6767736d514b5256456a526b386952686a6d674b43714151433650703278382b6656534d5652744e7050637a41694b63654339425063626659573950696e6870772b4b433633746f6767536e7079305277666d755636394744774542554f386a5233396d565637314864587048544c524135634f2f465a44596c4f737939654b444959466e5230536f57572b46725347414a43653244566f6c766b6777666279786a6d6762456e5a6c31784b524e666b6b6e497a6f666233494f534c564f615932753964453766566d33346f5332396c3653624e30485030635549774243364d3756754970314a6d7478704741775163305151466f73757048537a344c5130534e517033494f4a354c306a696f6252475258594667733437516a473343494b446a2b574f33344b5245593058586b4c63685846566556474a6359494f63774f564752466f4573793655774777565452694b596c426b47324a6f7039763373746f4264696d694246346f4f5a35544a644e6172717832734c6d72467838464a2b6e6b7830695137304848445a4b6469366f394b5974493139794576536f68326b2f4242796b5456645733366245314c6b2f70563866546f4156414878727a2f4147494f48797951446c6432653074674e4b49393665466d33623841596f4f504862585a6a772b38745262624870673856346e7369756a70674257716b3274356f456a59747769504b77385056696f497a6f51613847566b4a525a6c4450672f5967706c41686e6b5851754671354448745668494935384d5655576d54714a4c3855466b5a5a426b4a54316d744d31576259674b4a68704c52792b724e41386f366e4759795659456867464e4d346455512f7432496664584251517155416c64616d6148336f424e645059725933627a417974787156594977784e694f6f634a4f67716875374e305631756336667554656644526f72536e50344a70326f7a7049434c3850324b714f324144514c64756143324d6259366351655037456b4c6b595051594a4274354548715a306e3252596c36664642714735774464766571703773584342474431772f4656793256303169614c58627352744235596d6c4544527567754462702f4d6a4d687168567974744768397958796e48544f596442594e744578307770564837474f6f2b2b746663716f5752485631796b636c434c67416f57376543432f37646732716957646d556a30457432724b4c30744c7942414878344d6c4738646856736b47795657646a3756564d68636b34456669714a3336486d507857694d7744712b474b4143334a6e70513953614d576d7a592b344a497a6f663476624250353331436943363373386a3231566f32735939627458537970463578575278373073373044534c752b614336395941476e5671564d37416c556450795763475270716348784b77514a3666696757567476425535714345366167784b764d6841637972495734792f715464736b46486c7a4935674a544577416a467a334c62473571364952445033706275343873566779444848575135426331776f74454c62447151383264773069314f3951573545395270384f394138446150544e30663647476d72397445504a747a616572714a306f364c64734e4241576a4b6744444e4d49323336416163654b5332416648554b7732346d674c49456133566d42527567552f536b6c5974776b39736b6d6c636c49794a64335153656d49634f71694e50354c544677684f5974346d522f6c78515a6f6e5454514350356b516457526a6d325373383851414f6c7879342f4771583773793642416867674d4a74454e516f584a4563314a545036574b416d5a5a562f4c4a4131752f436a6c696557614c754b6e322b61466d567539315369777034754b57566e6247704a596c425a4c68484243516565584a413262416969624e6f454743436d634c6d467558614856674d674f72466c6447334544704355524c306a54395761424c65346a4c5448546c69744d4c647339556f424a455250546d706f6c4955414449476e4379666f692f4c465a4a327254756d757975755951707757597876527249462f6232716767323041533550647a54446132356e7075334f39566e64614d326c2f4b72726671647950686d332f35743044513950494e436457466343724273726f4868726d53714965725870482b704c574d5251425777334e795653544c39584168425a6132386353465a6f614c61534f3543476f7331526a324b30335a46756b687333515a4a7833424a454157356c435562704a316b562b4b317a3877556168346c5a6a44794731676345464e79334b5557342f67703975626b744c7454704373383648414e7979566b6239765471306b475031494b5274784a334b736a6274323345513657476b4d4975516164713052684a6d6a517533746c3349457339574a6269744e71304e583438315759585a5a682b64454a334a6a7534494c6649695a436234354e676a633238426d58354c4c63767a48677a34724b50504a724a687751645350394f424570466b4a3334786b786c5655546b4a696b6174564e30474857534b556f6772382f466e30382f616954564f3955524a566e6d3234314c306276536e66577452684b4f6e6c575342595737385230365948677a71793135756f476248346650337034377931644c5245767756683067562f6167587a4e5a7254464f49435138576b436e4e5548515a314f5465334e53396341746d514c53484a42736a5a4e7361497a6b33367330737264787645526b372f414a716d3363687046754d384d355237306265316850787a4d2f676755786b332f4c4c6d713569393956777948753936302b52444d734f48742b4b6b72554f7251472b5344434c39793051424e3863565a3933634e5141346f6e75576a49614e44524c64515655746e43354c714571347367302b6663354a6a666c466953466b6a734c63616d546345786a4f4f667751453769556938734f4846316b6c4a7a78567335617a315a724f4c4675354c55515544692b4251524645773347743436437778354b6a796f57367844412f715779332f5469306837667351416a537830707054674763456b6e425356776d704b496e5576516a385546636f51667063502b4365456266307637777249324153535a4475357049376145432f38417063494c4937367a594f69576f4b663353775a415342493676316432534273786271713374785765646d4142595634494e503841526e4772784a43716a61467750376d5763625354454e5476573633744c6b51304841514c356349422f6e56567a6a616e4c5542324c53647463704b66666d736c79526a5454526e37304666674641357a644d623078487141594b75593167646d706f383151596651535731494e67334975675259664e5743365a6879422b43353059516c6871632b347179787174792f6865734f4251644f4e3241786a324b73796572647a4b695639754f64416b462b654d625a504b525a42706e47544e6c3263565364704d696d6f4957397a637a73482f3841534b303770756d514d5a634e5770426b6c5976514f426b4f53467964774634786c68774b3645626d677445365743736a366a6367474a667551636e7a356e2f707a4d63364d6c45355463614458365375326656596b65416b74324b7547374e346a534e4866556e6767356479526a39426945504e4d324169343472702b5a4c557842594b536e43515932535278317367356768694147656e663370784136546b4858513057682f306d7a724a316c75524d2f414d364f67454c656b39502f717168456d524a78376b68745868566f347175344c3446446a7a516249784536364b747064576a62435a596a53547758496c39775765354b744d56733265337638413146786767332f322f55584a64567a67787766715a734553414f6d7642673651334c596e31416e6878515363496b744f4e54374d6c47316a4d306f4d6b317744534a6c2b314b4c3970712b39416e6b337764514d5332437833724e77645678686d75754e3347465a516c4c2b586769665562555430326a482b614e6632464277345849523842723246617264364d694e556775754e366359754f4564495a4364754534735969754e45484f61314f766e526a38303176793842495348625369322b5859734e4b646d4a6638415348373254433374706e5749614f37384546455a57515845594f39576c2b314f5a6169576945387476614d6846673375554e67436b4250443666785042425759444d59346f4730306348516b44477042374d31554e774b513875656e4477356e327167486e2b56497938754a626971626d2b4272354e7475556172575932645856485532576c71717933656a45394145666967357633656e2f70415a49584c39753450424855757351626f5967414534724c50306f584b6773516735623269386846323449783877416d455a61696666776f75762f61544c47544e77356f5439496b414362394d71736777774739754d59786d4232666d726266334d43302f4d4d5734684e396a5a42306563524a7354636f44795268746a434f6933644579514e4a314f4167736e434644434d346e684d7656567a6e66646f456a2f414575453179787549454456625048536131514d70484362456336494b4466334d6a706d3338324353596b635a536a78306b71796479644e5a424c357964565071714b4632354943784e4463754d727847364d4e784a6d2f536b694c6e306b36516a4746783951593971437769647a704d70584a4e6d574345347a7730536f6a62735469432f54584c6b686369626c4979596a4e71494868435a7149794c636b78766a36777847584c3234726e6d78755164556274522f4579614e7538664849367662336f4e6e6e6956546a324a3558546b7a646f5759576273735a4e52704d6b6e73592f7331494c54754c6a4f444770506957652f7637304a5a442b564e483075526c30676e6b342b654348325630417869477239556b4649337378314770504b71304463584a66536f6474634c474f5366794c6d7278494a627558535270302f696c6d6238336c6268626a582f5638565a6f334166524d59756e6848635338556e2f414a516771746e6345646472554f4a4c4b36494d76704553636736736a43394931504a4d4e746367657244742f42416b6933307550636b6c4c54454854586c6b6e595346612f7064566d31646e34634543695538686a5171333761354b50306a3235704474376b65714a4c68562f3147774b445a5062776b4b6b4b696670566d5a3179772f67795645486a6b2f4a5757373177504a755269675365797457324541342f69536978454442774d59713033355344797972705663723842463854775161527472456d6131454233704a55376e6257346a5341496a746456324263665754374658586f76484a30474766702f55537a6e4a3154503075522b71507657692f596e4c775931564d396e656848586338485046426875624335624f6d57584376795642746e4e645541435147504c42614957724c6e7a4c49424762353969446843444657366147525858387179414e587345766b626155684a36502b6e45494d46766336526b3668646e594c554962654f41532f30704e45302b434357357a454b6d507756674568563665334a5757703751782f715361512b6b634f3957782b327846653271444e356377306e69512f6172526575436a384d4675456f434a6a47414c385576423467424258446458694b5854455054704748617266754c324d356e3239367145497979596e676b766e53517851504f3339785579722f457150737a416b7a6c3349696442714c47706f72504f685235636b4757634933414e4f70686a51495132766d6e674d75433055774d6f677034326f33686f68634e50306f4d33326c754d6561595734446d727276706438596b704c66703569484c6c4249365939516a33647145676351414279576a37527a547534716168716558636779534771736d57616475565a4e337271506175456b59707862747a6b377342696735397578646e347852614a325a79696134654661764e74514854314f716a5038415246337937554762376433314771706e3666726a306b5077354c564f6279384b714d395745634b636b464e7a30746f76524c39704b444c544c6353446e512f387549532f6454774550676771386d516c7030767a785452675a6973416d6c63756e4b69716c6575323859303435494a4c61787a70464b4e7471372f6b724a333768416650344b43524d6d4b4178323973595a4c5239765a456361746a6c376c5764726e785048504a4f4e74716b7749514e3972456a7141504e5658647544536958795a43356f4a706958504467726f6b6655596763542b43445047334565494a70517478717a4874785668356479704c78793144336f4c664c7452384861645743424d4866534b71737469555978656a436c6662396943347768634947584a676b7557486d65417734717033642f6a78544335562f77423642627533755861467559576565306d37766e526244636157436b394467747051597674627072696d6859494f4861746f6e6f44517a5650686c326e346f4b4461786f465649615672646e44502b616f3045683876785156676e434b736a536f7852386768364d36756a6134342f6b6745626b59304656594a475250425151455157396972497870794b4154446a44704372387374584f764e5845565a325655336169444c497451385669766d713358365359597375664d75585153416368625955476e4e595965494c56473643656543445247546e53452f6759716b7964676e456d6c325a6f4c48414b72596876656e695931357173315055794277324f504832354a794f436f3849356533636d416b4975677a626932316331517a5a4c5664693768434853583936444e4b745168456b6548337262306b73426a6a2b4b59576f59754232494d59743978544555654f43766c47496b3855524b4c34346f4d686c4a3053532f6174576d3261347956676a627759494d45346c6e51694d56753030314d79722b314e7a4166676770387673542b524c4a626861456f4d4b4e375553546764546a6767792f617a42624a5579742b57574f4b33794c566f714c70315a303936445473623547487379377472637a6c6236386543386e43556e315a4c7162612b41656561445a4b6e55633847545770617662354b6a565230305a514163344242306865664842474e38634772386c69665845414f4834635062465148504948336f452f79674752737a79415139496c416d4d7a38317539527444633754337365444c67626163726254647450692f4e42662f6b593158347a68574f6e78596a4e635543764e62626d2b6c634c544c7746475772616258613773694f73776c786f79446c78755369466259766d4574533746372f47626a6e795a786b4d6e70324c4250305064774c615069673252395146734d4778562f7050717768656c4357467863772b6b6234482f686e4c2f537272482b5037795a44774d4f5a51657033566a55506d7650657262653347426b414e58506d76543765786446735276566d4d65447269663544747a354a6e444a74545a424235506d6755464544454b43764e42544a4245614772494b4e6936434f2b4b6967357149494737314648544350464172344e696d77716c4155795146364b4d3163556134347150373041306c46422b6445784947434252524d416a5134346f4f414b494c426a774353644367445679724e55546a5630434d57644b784e51726a707847444a4e4456794b43765367617132554771634658685642486646436d615a7a33714e52416a4d6a3830535363634543486f676d43593155446c42383045783472525a3355724a654c4874576673514134494c4c3136642b6575654a53446d6f4136684b414a6d4b56364b596f434379424464714e4d6c4d4545666972624f34755767664c7a7a5664575949646d5343544d7046356d764e41304b446f6b6f497878524a7a55346f4943376f5955557879524e41674359686b767952445949444334594634725662336b674735724a326f34567a5164534e324247715641726a41584b7871754b35433057747a4b4b44535270346f366138554c65366942554f726a4b4573475156615a4a6d49476e46303536636346504c37676771384b62716e5845712b4f32314176524d64714268552f71515a7861424e52326f584e754d59316275566b59744a6a6c775630764654396944456245322f636f494f38704c614c663155435532395859677854694c6c736759346a7357435467317843375274313461636c7a4e31613053706755466c753971447554492f4e57584c6f635537566a685054524f616b467767305259757978334943425638447077795358686d676f5851394f6d7a6c3167426233726f374732384548516a65634e4a5757346d586573516d51572b50747756734c6d424743432f5761694358375958534a34484833496963626b716a4a615951627856434249577743446a58677262306963304c6b514452563335794d36634b6f4d6d377441316b46775a6a546776523369397669337658437632794a5671677a34736f536d6451784b41494f3945574c49436d4341746d70467767364f43416469504c4a413838555456414a556f6f69554839364347744555556f51466878514a6445756f475152744b474b6d4e416f674d545771696d484e424145524a46434b41597069414d464b464453676c5545782b536a5052424d464851354b4d314f4b41696f55624e38554b496969434e3730486f6d634d6c5a304541516f37354a6e70564b67306d7849436d48765347305278585474325242316235554d636b48474d4245385637545a2b7562534669324c68306a5470367175335a2b78656575374b4e786d3936413272447179516568752f774353624f46496b79663945572b624b6e2f3855375942744e7a6c345678593763596d4935426c5a47453478364b4642316f2f35545a4d6e6a596d59357931666b6a755038706951667437557458385642376c782f4b75334330794e4f595448625348555a44546e46754b444676647a757432645637335a4c4d6476644654484664614f326c536371736d38714d54696734686870785238764c4e64535675754135464c4f7858476751637751794e47566b4c426b2f4a64447952487165764657426e6f3155484f45514b4e3756513869512b6c7946314a4d6568756158564930694b3830484f38695571616170664b6c4573793744584c6b6e6b59763841676f5944444b69446a51684b514c5643413653753259616d4f412f4254794e4d61737a76564277355277476d71654d4c6d494861756e4c5337517277546d4f734d616345484d387374715a2b535852496c79474b366b3747635a66696c46695a4c366b474345377747624b7332627059466449575a5641343438665a6c4e427749627551637957326c45386b6e6c796b386c31532b6d754b704c6b5670564267466f346e424132364c6f366670796f6d38714a7948356f4f63335367496e42695175684f78457144617a62566b6735356752696d30456836726239715766454b5332383442426b38755244737734716d56755842622f4b7567615a4833354b324669574e50656735526951553862636a5130585665314758584a686d395649372b785a7241504c6a4750356f4f55624a43756a734e7a63384d4a532f6c44727044316d45547169432f41735169503841494a6a4750664536536778773947336b782f7853636539496653397a45504b33495a31697533612f79694a6949336f7a635a786b724a66354674626b54724679764771447a63724444506756546f626d765479762b6c37676b6b365333315553615052342f57335a7150344950505168723649676b6c644c622b6d7768487a74314c54776a6d56727565713753304e477a73755239524873567a7061373068637559313653673158642b3352742f414d4f61706a594e79526e49312f6954655341664c682b355766596d4f4c3971436e79394a722b3947467575715765533079326f45616436706c6245775145463175555253694570653871727957445a4b51323766567a51512b4a38304957376d444273316630366e722b4471546d5965487651562b564943745062337154745478684278543936736a47556a584276624658516c4e694a462f6d6735374d6168696b3031313542644b63745557354b6d414770744a3773507951597a63597374476c33663264474e6d4544553969742f70366e447937542b5343697a456a435a5a54535335426268774b30675249636875536874686845556442514c4d61567172444332426d706368706172392f77434349746d4f46515167625245476e42435562593473797230586a53334b4e4d76326f65584f465a4e586755426e636737526638464e634c6d454d56504e4d756b596f776c3563745970386b454d4e59635077536d3257782b4365642b374f6a2f2b6c47722b4a686d677050585358644a45334e5059663031523832583079315655747a7545394d6d5a41304979646f6b69587a4373426c346963454c596f487158314f567049685854516f4d756f537136736f5046676c6b5a6954455048334b4458453951514365695461554a576a3952787754796c476749442f77717935473144726e566e6b7943714a4a4f536b2f46555562484a3074793762664454716253472b4b47695a4f73596345435276564d5446794b75366d72636d4c787478626e69722f4b6d49366a68324979426957776f67784533355932327069565a47467a4879346c61703369315a7566307978556c6350694c6b6f4b6456794a6352592f422b7857324c39326b69314866556c6c4b343241507a53534d7757474d6136736b4737726c5752393146544e6f3146507857632b5a633672684a633130346535435634793030646b466d706a453459307a37556b62356a474a30616a67737372686642754761517a4a2b7169446f2b64633841384a38504c334b7155784773797338624a6b4b794f613151744671395151516d764a4345415364524c2b394735626f444156656b553979486b5952784438304538754e6358567a41474d682b395a52666c63364e4a7172416278424d4d4f6143344269424f6d6c2b2f742f616c4c6d4852483969724f34334163467555677249472b543174496354526b44536d626d4d6345504b6a6367586a7070336c58447a4255302b4b614a7279342b3243444d4e754449414470526a74326c4578777839797475656f32344561424979483666435549623757305259416c687131503845476156676b36734d314957664c3866683858597270453341382f454f434a6b644453714547532f704e5934356471714562656e726550385752585246734842744956643762516b6779526e62746e704a714d41725a58624d774e4d326b50346543506c74476b5155776847356a436a6f435a744b4d745a492f5333795443376170556c43336136543079354534507756646259654d596e735158305074564151424c48486e58325a534a416a314f2f44494a684a7751446a69616f4a4b544f58784b574e77466f44507554517469555149753254725447324d574842426c387a625436623146594c4f30694f6a5533484257796749677341394b737170536c6c2b3449453037634454636b596a4a58697a746f7359467848323731584b774a78502f71664e56665a783074716b496a4a42704675312b71696c4d584a57574167543046354767425073466f74514f4a49302b334e414352556c5778674258412b324b585671666b68346964534377796942306a712f45716f695a636c795547414a63754277542b644f506741504e416d71584d38555932767159414f466443643251306d6a2b4a6b326b6b565a7833494d3473536c68552b494a7257324d5a79426f5078566f69514248343079516e61756870524d54337656426635636645573745447069444a59794c6e655167444f6a4d677638307651436737315639786342306a337170376b77533450636d684a6f68672f79515035686c58685165324b6d654e465635706f4e4a356e6d72584c65476d4b426445637366704b4e325571526674546a6378684578454b355a716b5338794f6f576e35762b43436956694a385166344a72573268696e655676784175636b5958674b454f3642703251593665583655386241696151593856646276785a6a424e4c6468696761467679675a476e444a56334c7765555a4f423831524f35634d2b6b39464f315633764d78647a6b67305475576f644e5a4867613936736843467a7734726d6d345a6174524c2b3544552b5a41397a6f4f763976617759636b74793377686a376775543974616b30632b4f704f4e7535365a54484a2b6e39714466637579724547736d6455544d7935683957585970706a627271797a56634a3830424175526379423676717956676d514d473745317554316e4c6f5031486b722f41424457482f546b794450474a6469427a2f4a4d476a574f487954796d49352b78566475356268543243426a554d50326f5374796d30524c53415831484d725443554a7963477547474b726c624569446b445369436f3237636a69544971794e7071737a30716e74474f49694438304c6c325776694167716a4576704b614c53373831576439666a494452475135596c4350714e776d6c6e484235494c4c6c735531664243356175533652344a43715562766559434e6f562f53614a4a333932517a52416570515a794a6e5343655a577135634d496c365672324b76566348584d676b346f78755850426a2f41445949425063334830364f6e492b33354c4a5064337868344834594867744d626c7a5631424a634e30357869523468322f6b67577a7637735047386d77624d666d722f414f3569354854706b4363614657324973776c4f4d7536717369776669676f38794a3668542b5a476344656e5751772b61756c62692f5646777134376542632f71376b476556677844536232354b737a6e453657316367746e32647142365378566b624e73304d6d4b44434c456d316558452f677441455a394d4c62444e2f775678324e7545762b575150444a53355a30766f6e4c554f4b445063737745694e4e65334a5a5a677a2b6d5838787a577652646d66365a646a6e77356f6d33755a6a53664c6c4548426d596f4d4d4958517a43763857436e6b33443139497a385653756c485a33596a564932347a344f714a326275494e70776778616274597870536b65617432737433416837555a38476f5564642b313955487a644e4737646e516b53797054346f4e5033472b6a463532524350383244704a626d2f4f4f6e5149792f567164445468475a4c503271307a735238594d6f6f4b4c6c3363454d5431483568475677695845382b5758765353753751357a7862716971342b55346c456e334e3845476e54356a55596a3467716f6265654d492f2b7471716e7a497a48544c397756634444367a306a6c67673646737a686a487037566577454b414c48597637646742507134454c54473944434a6f55424d7238536441384c507957572b4e2f4b4c5048764656743830783654336c4a48646c2b6b6976366b484a4e76654354344447697338712b51356d3739793673397835636573783474464c63766934424b5a4163394c494f634958375a46536639574b575175682b6c3672554c3973644a4e666a3249776c4439544d6777614e7841645563632b4375686333543959374673382b4d73626750503841596b2b373235416a4b56663553454568637647545841572b4b76747a6a634a306b724e3574764746416c684b6730767a4f61446f6a564563534f437275334a43576f4d636d4c597250435a6e693738363470644d6f5431534a624e42624362566c3038556c3365376532346b6534444546474c5463664d4a626b4c55686858434f6f4f67582b35375750534e6250384153422b4c49663366615241704e2b6637456b74725a2b6f66686a3271736a623236475231446862514f665674522f70322b6d574a77646c575055394d36324d556b6231716654624a6b333847583571793348554774363958445133785158773951316a71327a39733949567372397951316662633679705259576a4167796c706366552f79537a336c6f4870757a374e4e442f366b476d2f4b2f4b73496a3279565562633768726754322f7553513954736739594d6944376c304c652b744473493936444b624e793247497a53472f4a6a426d377a2b53324f62684534556a4a56335054723937714578486e7151552b664855434255303653665a6c6f6a654c56773756582f61704471387a552f436c454a3743514e4d4f31425a4f65764867714e4d4b6b6d5166394e79695a70594d47354965544851476b784c6f4768626b4f71336a694f702b354747343374754f6e527266495a4a6f524775704f436369374472747949504469674976627162534e6f696c6570575734546274783673436b383363532b6b79775a43567935476774352f5567744651306e5a41544970334b6b7a6d58654c4135366b4e51366953334e413837733869612f466c6b69626479516a4c45556a5661504c6a43766d41536b654b483274746a2f5630482b555364426a6e4f4e7a4a3334685a35335342704262345558522f745675662f574c6a2b466b77394768492f77444936445073326c626b39534f4b7474786a6f6934414e64587479566c76307539745a4e53587762382b35577a6752466d2b61436a5847315557784e4f62384a514851523242483765376a45593855545933456367422f712f4a42514f67753546557033556f7541533152676e4f78767a45707a5037416861325267357556344241624e36544e566a6769435762564c677a667356704d596b44414e385539746a6757506269676f4e7537636c7042635a68712f4a5878735678304566772f677259782b6f7a4d65594a2f4a4e636a596e3165634454697944502f625343384e777850564a34705a62532b4b6d37416a6a3249334e68616e4b74773037315665394e7453774e6531417632743634547175524a793632487756734c47674e4d67396856463330384f387074775a4c633268674b5853583531397944574c416c37734d6e532b5462696376653156677557626c49695a48464964725478456e6967375549516747614c6a78565136594131702b4b3547333255783141566b742f6b535a6e63596e744343364d4c64706d6c38564e7a6538754a7256552f62326f6a5766456a4f4d444a68346345464e752f51593057694d39626141575761586c79384e573979585443503147754e55477a7a70516f316561712b3675615343586f684331593855784b523756584f657a69336a4a514e435636496545524a2b4b4771374668494d3369536d355543334567464d4c5535426958366b446158465143712f4c74686f694c342f44735635684b4961484833397168737a496141515652683559616a4f6a7041446e334b75634e33626c70466c6f2f786345644e2f2f6a4e714c506a793936435768466e726a6d6f62466d52367751654d5438315a5a3237452b5977484c6d7448327533456e6c675078515a44746d47714c6c76346e53536849786b39514b5239755336506b5778574c386f70592b58456e4d2f554d45484f6c414f524c47696f386b534a3052657646646333624c61644a4a787752306c7569496967356b647245592b37677249324c556670393631614a79695252386d584e33573176612b673048446d6732433159413678455a6a7056734c646d5662564b354263654f317569674a50354c6f576476644d615459664642726e616b54546a37314967594d6b6c41325973533534706f7a452f6e326f45416a4362525246754e41645034716d37647447517762363142633247516766356e4251577768416c736578566d4566706848536b387a61774c3277786645462f657035747643504369425a475036414f784c45744569456d3543694e5a42704c4c4f45355363307970556f4c7465346e547a4469324f61763137754e424c34697053326f7a416647714d497875436f6b4a2f42426f4e2f6574706c4b492f6c786f713461784279417a4d333470484149614a4a48785465594c594d6a416b664a425138324268777173784677676a4b51785852747a38796f69597546546f3079723242425874374d67514866685661412f69646f71756349454456526c5635567439526c3038442b534456637657774342496a32354965664564494c6a475753534e79334d7338655075563059777071446a367535426e47357436714f4f4948346f65634143793179466b4f30637771707773784c6a487351553663745758636c307845476b6165355867644c52703950656e6862614c454e547464426b6a4b7961506a2b436679375a36716b6535584862324e57476b354b517367697455476351694863563542536362567761574c667931563269625a6b4a5a43554f373277515934574c554b6458656e4e75334941505073785633323472494278395331776c46774a4d337851595274347836346d524937714977743636416b6765486744376356726c614d6d302f566a3272486632392b30646349734f4971673078736d45756f7630705a37667078366c6e2b3433726452444b54334f3469346d412f746d67754f3134643478545332787548564546736c6d472b76784f42552f75573766546b67732b337a716d6a74376a346b533538454962712f4e6f364748596a2f566b616c67587778514452636a4a68526e56544d575a2b45655a37566f454e4a786c697135436570386350795156586f3350466c787956506d526747644e7552654178654c4c6e5334424230667559506e2b4b722b3772536843776c6755444a6b485247376a567338565076694f51354c6e48696f6139364470513357747452715878566d4e594769354c6b5554655a4b4c4238454775394e69584e51736332656d4357524a4c6c5043325432483349463149786b31416e6c5a6f3672775150475a4f465659444c4e554f5170714c356f4e5976794664525a456269504e316b716737494e6f334d5762676c47354742717361494251624a336f79397170625263366358396d5751466c70735842624f6f69714452354532647134497732307977563874345a6b36474471727a6a4974374f6748324d79425669636c564c6279746c69726263376b6d39766771376e6d4175632f67674944463555357132444c495a6b595a596f7876594642724564515a4e706c62614873566c3879527744706a4f2f6845564b44524b524271636b707579474e5652435630533668677274456f7962485075514a66694d426c55724e507070494c594a303673316e7651442f6d6771444f324b61335052494e51716d626776683845704459494f72432b5a6878376b336d617a3846796f584a57366969305275367061505a3048522b3450694846504463746b333756696a55744d4a5a4e71624c346f5052624b373539695674384b726c372b774e6e74576b515a7a70487352394d75787358336b4f6b74475234444e5a2f583738626d36307777684552516369696b5333687855775146454853322f7247347367523161342f784231306f6635566441307a67434f484a65646c524b3644316638412b4b6f694961305039524a2f42412f355a6b4c515a65577953396944304e2f2f41436664544a38735267506a38566a6c36316476577032727745684d4d4d7176385679334a524151515250596f436d6a44676a47416575434374744a356f696f56724559686b6b68567049466c386b4879566e6c45702f74704e55462f774145464a41514e565a47305347566e6b616163554652354a634b6861425a656d4b59625959484b71444d42516f74307138625942795657594e5841666b677148536d5a384b71596f78746b6d6942614841565259484446582b57636b445a6669554652477041787a544d3379544750376b466245704174544d4866484a56694f5951434e335432494566464e434c682b354c306e46424b7367512b433051687159784c48334a48696530494d2b61596c315a4961512f484a4b5878514352397941476f5654794845342f4e4b596b596f426b775134706a476a4a53774b415a49354d67694b6f49785555786f69364163736c506b6f564d6543414645524c3151644e41556441447a77555a3077446f746b794375694a43417252456f4a6a56526d36696f373079524e5751414651714d4d6b44536f51456a4d496a7355634a575a41774a5a5231475a6e53343151467770574e5647424e454d547a5145736a72497751554d644164427074376d76557268752b6c73517352646b727456423054666d54724753506e7a3854724247636f68736b2f6d4134444e427347356d78706963714a6f37325552686973555a454967765242742f75416b415752507152496239374c424d3549614548542b2f6754563631504a5a72397946353378656979734456535134346646425849615a4a396259706454344a54456e4442425a34616a73526e496d49344b754d75614f4b424758553264794973317831437642633342504334524941494f735332435174524c616c305650596e74524d70525a4272323971726b726f41524d6845725061686f4850506d6d6a4c564a7046676773756630317a504d4e776752784c30565071573931336a47424c594b333034445735465255494e4d49644e6138565849675359314859686675584a5a742b785a796335494c4a6933484349377561724e366a56626771664e6b5437667653794c48386b466e51576c6c7a4b6f6e596a496a536d647579716a6f4d74323145486f564949425771645835724f59746967726f6345575a4578716c5a4163454a534b4a4347614167714f3742444248776c6b416f61714d6d51306a4549417a4253696a7567675a2b4341726a676a58336f4e6b67434e5764454b564341414b4556526c56514241416936474367785151444a513055596f386b416b3346547478524c4b42346f49564d6346497871516f777a51514a633066456c594d6739464945777055343830414d3875655846506f6b784641667030716f3761344d4a644c6f4c725448386b777541724a39755a3479777a542b52634856422b394262496d52416c394f48503979582b6f52303470504c59744934347134536d6644516f426f6d6136596e6a79514e3255674d4b6653676462615451664e51794d6868514947462f57534445636c585334534d464135775a43754c4f5155456f615553534454444438564253706f6759546b51496f474d4979654d6e6667694c48625650437a314f63566462684a7131515551732b585534636662425741616156304434713262774c4f6f5064326f456e553050775334345968574359456957373074795647484642526376334e4c674867614b546e656e52685176334b324736496b782f656e47366d3358686c54324343764536793145684448476856307231667063453470764d6a6979436a532b47442f414254366e4c5534714359506977565473487939324f534278755a44682b614479764f4a4f79614e794a3857537669596f4d467942674f664e41456436325374527a56463762617348484642555153395565715878532f62796367756a434c79624a4243414132412b704b433256447a566e6c4856302b3954795a4758483830414a50465533496d5467794a4374596a78555230366a38756144424f456867394652716b6379757435596c5364516b6e735954637870322f4e42796a496f594c72443079336e6437476972503752626b4f6d5a4e4f44494f4d4d56475857507030625a636d694a326351644f6e385548485a6b513577447273523238496b536a476746632b355752326c75496a4b72494f5261323979354a67467174624b41385a506375746230776f4b42586b5757446b447351594c4d5957365169327233717747494a316479304e594d74546c55334c5675582f4b4f78425544416b3663634f61496b635156594e764531674658633273674349592f4e41336d2f714b706e487a50436663727a59503066745354486c6a566878616e7651556b54776569756a423676316533425041783670797977356e7356326b5372474c4242524b32517a5a2f424c706b4841424b3069314d644977627539364533493043672f424256433233634544462b784b3163394b4d6f665478346f43664566306368696a47414c6a714939735544626b78656e4243426c48706b653942634974514854454b474d53512b493455564149346a397165414164796553435132386e6b39496a42382b7857527366572f5378344a58674f715a63444143704b5954746d735165394130724e7141416869523953797a507756346c395053795a786751454751524f4f464b30513674496461355859774a456851717535666a49616748515647495538765849367345346c6245584557703731486a534978346f4447456e6f6156373147314d52337072636a34582f4144552b6d5551676c543449434c444a413235753064504e4e4757727765336172535779782b614448457a6255593865314855514b6a7658516a474c3439744b68566d7a626b344e426b7944484b396467784971416a6375544f414c745662547435334b327a576e69344b7137747032692b734574567358515a4e4e77344168676c6c62756773354a5a2b5859727953335563614e78514554474f7033616751564e6331413571367a476378697045474c696361443855734e784b33686767326a58436a733338536b6a47513851315a63317a593333634350556a637455316b503845477a376531454f54714a536e63325230444559647661736774682b727034317937567167624561437046573745436d344a7a4f687750693676455a51714d464a584e50685a7365354c4b65676a3339794333587261555952722b6f7175554a596149412f7a4b756534743454384f58443830776c624d415949424f7a2b73646a6331564b302f67446156716b784f4c2f676b4e774845486d5546634e4d693052314b78794f2b6953674c67467553616762706b4b31515851743648493935785646313479315a39714a36513879655559384655397477616830434e4f557353466f685a6f574a37636c52714d666e7a54432f636c346f494e30432b483745706e4d396978777541675037766b726a666a42694b6c36386b466b6238693469437170335a5942337754666452306b5678545476794a59644c5a6f4d7768706930592f68564e46376545644c6e745668753654557571376379634d2b4b42764d6741374855503457644f4a616f344566425356387875546b523148546e795a563635544f724134494e424e576b6635557454555a706454447178523161635455664a4262434f663745336d6152305a4b4132726759347035547352426a416a73514938694b4439366e6e6c6d4d512f4832344b3756413239655470626845673861684256496b4141455069717861755372494d48487656784f6773422b785457525845446a2b43425a656446674b387a52766a386b6b376c2b4564525a73324b6c7a65475055496642796e6875626b367874366a6c716f676f6c754a4e7078474b59794f6558764b3053664f4f726a53695133494773675165534249626955625a4a694238796a4c72786a346b424f444755714476535233454448707951574731416a5577456b5a57344e54755247674477756531426f6741643163766367724a61736d6371536c72654b4f6e57796d6a584b75425155386548414a70796c4c776e4a503563596972634656706a454946467956476e544e565375796b477871664574454e6b4c67774179486572423656493956422f7134494d734e314a6a4359366e5a51582f41437a306b682f7079567337634c6332705569504842616f375548713456722b43444a4735634930696d62357256626849554a4248464d4c486c756341654b593349327a30796633494a7169375a6a38566e33567a53384143577233717935664749442f414970626d367434733338785143334d3031642f4a31737465554332724c34726e33747a616c67523833397561614f39322b66544a4271756150462b315a376a45306f71543668596c4b735a546a67794e767935395675336f6a2b6d654c6e4e424a394d44704a4d6a68717155386475546a4f6a6655632b5365325932593670516370546668346a41617542514d4e6862667275532f33565630746f496e787647493658775a5665665a6e46347777795048386b495864594f73434951572b544976314875514e71657175484e4c432f6268395969337555755862526a716c63487651504b3034596b616b70743277784f4f586479517433346c3478727050764b75755368475838526f506e7751494c5673644a7a7267675a61576978367345305245354874566575344d756d7662326f46755749524771344e53716a7474557047414169526d6e3838796b3051375348656c757a647778456e423549462f746343534449506e794b536670635942784a7163553531546e574a414f504d6355384e6e59307665642f77436242426e68626e6136526b7262637044707956773265794a3662736d3731576470744a79595375477663676147347544416a532b4359626d386572703552344a2f7339754f674f4232563936654e75334342694138554765567936415a455948547a52684f6570706969306b4274556738583978566372674d6e7748346f4c6f7a41365736655362544755576a772b4b7a334a41394c6f54755141365547692f576b54385652475a6b472b6c563659585071566337444e706b774753445161796f77375372504c746e726c4963467a2f744f4a313056304e6d4c6c57365548516a61744e5167354a5a6d304f437a57397549564f5076566e6b51695070342b3542424f3371704564366d7256465355414931622f546d6d467671306a6767706c666b4f6e503371655a4a756f2f2b6c6c664c614574412f542b4b6e323756646b465570365a5571717a4f5a78427174483278796c52436359695a6b5a69492f55677953457a486d4d66627356336d5842306b44354b2b666b61326a63684c443676696f62516b476a6574312f6a51552b5a63454e4d644c5a3667666d6c4e362b41384245442b4661726531733277524f37453973714a5a7a73526a5735625038414c4b76755159644e2b5569535870375a4b76794e623672622f774153326663526a4c56674935302f466c4a33346656634b44494c473259436471555a4846704b3462577a434f6b595a5a6c4e4b496d656f3836565631766277423147522b62494d737476622f564955543237566d4931534a45734779573037574a6f662f56494b6b3753336361554a7837525842426d6d646e46757552504b7157563278435436703048364f4b335232467148686c457634687854665979616b517a494d55722b31316170435a36636856304c6d2b326b54545777794d63566264326c7933394a3564697833446642426a5839516c564264393759633649394a4f636131524e2b3277416763507178564833562b586a74783768583936714d4c3877326d6944555a32793271664b764a473939707036356a2b5867797a78326c793444725a7a3846717337614d496a566268506a6c5641734e7274706638453473634e587954584c64753234756b4567665367425a774e6d454d336431546374325448567046664567302b526275485644546249464778517537665245544c61587a34726e5732736c335950384142534736774661793755473657336743645642324b714f327354614a7667446e62315656636431636e49776a714448744376416b78634d33346f4b35374733442f697545672f77732f77435370454c6a6870793163514676446759754f3271726e63474563754b4367432b51336e542f414e767346654e724b3553633548672f354f6e6c636963436c473475516c3053716776743754797857586177716962454864384d69714a62753843306d50653375535433563748562b614336646954445641536a322f4a4d3269766c44564c47574956586d584763534c506e46574756386e6f6e7035742b42515043364944717467424e64336b744452453863714c4d626d3768587a68583955516b4e2f636a47635a766a7739324343323563686450565a75532f7742464658474e676e7273796a58394b4d642f6667343652482b464c486433726f3852374f4b4332316473577638416a736b2f7a4d46656239707571314c4c4263337a444e6e6a512b3931594c56736a5130395150775164473347334a7862314f4d6a386b6b6f6152717a344c6e784770674161796458574e70634a4f696449385547754d62676977415a732b6142695448544b672b616873586f75354464715837655144544e45414f33474a497757535870305a4872754163656642612f494150694934736959577a6d43426d677a2f5a45476836667939753157783235694d6138696e4173614e4a6d33426b4a5174474c695647514a4f78492b43394b326662676a41534644496e4e354647375a6a5561616b59756b6e6146734d4961686b67756c427646683845673874366b5635716b546870316557777a637175633976506f74325471796b63507a2f4242724a32674d6f69634e524e51592f73553057644d6d6b41535142775750794c6c794e49524d5278396e56746a5a3344394c524f65707767762b794d2f2b6f434269496c542b334134544c5a3152477a75514c74467531573664447645635546486b364b442f77427864562b5737564c39767336313664645351694c55536461444645337571474651316174334f6d68397a71426c646b483459664661674247564b452f4e586d314b4c6153507851632b5a7646744d7937745566745457374f367553615634524234686259323531616f2f697753473166625352537546454659324677427a7548504453684b7749314677746e456a354b75566934534d6a7a6c2b56436a486158356c69635543534d417771546b6a47426c5577426236534662446265574e4d7148696d5a6f3658515a376b4c6d644d3269737874334a44717858546c5949725375436b74744b554b41494f594c523034765834466150744c6b5a536c70675152537543316a5a615046567351716a5a50366948515a7032747a556553442f454a4a6f78766e68456a685657787553674b584332474761734d4a5348544f70376b466362557869657232795451745847464f315346694d523469357a544e35644a536d33356f424862792b7242577a3270755261746557616f6f6641355358627335415265546352516f4c503756474657616d574b6e326b4c5271432b43357477575133566437587a3756425a47506d584f386f4e636f3270594670444c32357072556a466a536d667a564168356459537166314771686c4d345651613458616b3564695974634476454c463568484d68563635775054456c386e51645054474c64517171726d72365a6b2b355a72657076442b4b753153746744534878396d51552f774263654335496e394a7148564d7037364d53432f6237664a627a4c6457367869572f68565a75582f444e7a6d677a434e38316b534f50424c7075567161725249534e4f4f61553955587a6633494d74792f664566486a696a6133737a5531793142575369325441344b6d6f717a7478785162596277434c694650637249627a7072417373766a6a55566669744e7577576367453971426875514270617077536e567070454d54584e6c5a6368456b435565787341334656744e3678596671695541387339696868483654564e354e5839365365306b574e514d6b45684344566b3759717537744e5a2f706b64786248414a7637644b4d6e463176624e49665272747a7238306c716e4c35494b66734445617031377766785a4a48593234316e56303339716b4f6d4a5076546632323955435944596170494774656d32537a6767725862394c7448414e4a596f777632764663667357714f357641645a66735a415a375578485449646b6c56473042512b4c74567875786255613970532b64474d58306875314249573763432f56712b4330774e75644f4b3563397a5056344b66464c4864784d6d5a6b48586b77596735736b6c636d4b69323678534a4d496d4a59505658576f6d48535a6d6777634d6746362f657555686136634158564967534e63773166437239636f44706b2f4245676a453833515a5a3279587962465a723967456955713072785855453234486a7a54472f4347545351634d32744136596c614c636f6b507159396933376a653253356b4d666750626d714a334c56317451446667526d677a53756d37344b4e6a7a5638746f5747732f68697455497764345a6642535676567a59494d766c7a685345736634556b6f584c665672782b53325373536678414275394a6363644a4c6e39576e41494d7370745756796a38465050692f692f4131566e6c526d344936565074625a366a4641304a39413058693244474b65515936424d53437259514146514f4357567133484564587a5147334b553346527856385133546d566c4a7432376c614f74747135745a44547172326f45453469526a6931564c65714a5a363565326163327263447145346774706c32724c496a563471494c623475527077616972383651724b4f734a49334137532f334a7a3565746f5569674133416b47596e7539714c546275572f447038574c665373424d7264424b49493572527071786b776255364338376d3145474245686c78565a33467278636346535847644541497871673058657150526a7a576336734d65615a6a4b57625339763372524b4557307747475859677977697a52703234724e66326b4c6c5238467430326f3150547a51496a4a327a7a35494f5a4c30396e306e7335724a4c62796761677275536159596e7039337a545432786d4f65576144676553555932695379394644303631557a7277356c43577a323957483879447a35736e4a4162656273787175366246724b6d587379454e744749786176746d6735456473517849706d7463624a4170675067746b62506c686e774f4f535451394f4b44504b494831567753655243594a4876576d39413473716849415946755842426e6c366658466d536e302b54675055725954395139794d7030664630474365786e484d4b7237655966554b4c61437975777252427a626532754534553471772b6e335764716e447357695275477548792b437568754c6e697834657851555776546455756f686a56572f625145656d4a31446b7449334634654a7932435562715a72474f412b61444e704150466b524547723971747558726e4144737a514f6f6e554d2b3542544b4a6a566b305775394c4f45356a4448456e344978684c5543472f4e42544b3342384168445441754b717a795a5843434d546e2b434132644e555a46366f4a6176776844514931794f437538384f4237465579674943706f716259794655477956385234735651626b734d424b744d3059764c4535397961566d7275677a59497a366544725647786274735a5366676a3563656e70782b4b444c646871784f50344b6937616b427958544e6b615a5348302f696d386b474665364b44694e4c446837306a3846326275306a634e467a376d336c62704a41734c7a47766169643066706f5655594d5777513048456f474e326544704457754b6d6e696a686e524249783134555130462b314873646c6149366736436e535155644d6b37465768333534494b4a57793271535542386c7038736c30664c4f4a79515a3432745375686167445657787474794b5356746953632f6b67746a6246534d464a5559526f367261494750742b53736a636a69674c4e5371726e594c7531467046397938366a45715475695170786442544b4d6f6b444d684547524a4750366b2b6f6d674f57724254555a55514b7a4268686e374d6a726a67324357626739575357456f53797134515748514271554c4669652b5074564c4b546a2b464b5947523034464262416764413753684b41686b482b5957617343336574566b744c727751566945477269364c615136304733523359354b71483658356f4b356b52596a34664a49626b6e37635534417977524e7156786e7a39766767726d64517278526b41334e5753694157393652756f4468574b43522f53614b6d64445442585342427269513671504842736b434a4a537a5677746b682f594a6f32517766744b436f5466773563452f6c536c6a69722f41434245637a5650474163494d586b31624649594d574f61326d45704f39436c6e427345464d4777516b52697250493144703979723048557a494b347931345a4b736a54544a587868536955325336425570596d6d43734e6f44476e46534e765557514a4167477543556e6769616479562b43426f6c3076496f343971424c6f4c494559714759495a49536f446b55446d576354676f345069785662734754416f474a4177566358785459594a53675963436f414d6a56416b346345524a6837596f474e436c775231756c64415379564e4a4b2b534169717646736151732b6f354b324262484641446271775148446b6e4a5336614f79425931714647543647443571434c6f454a344b6471734d4f435578514b41525642364b79584a41327a674b6f42724f575374665757393670416f6f4351574f53432b4c484248534756596b7a674b324a316f46795a5168316f466f546d38572f637250736943777851595a5736305665686c724e69554456495953424645475a717579684a576d56717238554a774c61634f61445032596f46335675694c46304a515a4162642b554d506232775857326831687961354c692b5857756132374b396f6d4934755548532b364e736c7831495275655a4755694b694a54376a6276413352694d5667457a70494a6f634548506676646458302b376f693031794a42714f746d306d3430476a664e4275754d4332537a786c70523853575850416830454d36307a513879744544466a7834646955764844503549447079347146676d314f4f4156524c3051476242556d317059383163717a4f55716f4b69476c7743724d546a785670414266464959683656514c70516c774b5a6d777951785154536a792b4b6a424131644248525077556655554d337a514b794e456371715335494a7a5177717067706a5641575237556f55696539414d3059714e77555a304162676d62676757436b71494a454f4647555a474e5541497a55434a4f6167515375436a5a6f44465149444a437150616c795a423354756f4d44454563315a397841734165354a4f77444a6957644b647351327250507351614c637a6b55626b6942517171466d516334495442596836653335494830434e44346c4e58563134386553486c764846696c4d704d7a7555466b794a394f436d694a59534a5657715264716e354f6a714f51642f6b67734f6e78444c3570527042706d7177525867704f576b3134494e5a74777551654f50746b6e6d6264734e6e376535633851387a78636c6f6a624d68707951536333365237314e527245667654777343756f71614e5978504e425643463874496a34713078754168775658474a684b5841437235397974674131554244546f5433387771343236755a4f4b3048464b527a6232354967426748646b4530455a593051454948716c714948755358486a6d6542576d3562314d4357694f4151566552626e553463383143424750495553365a76704a3642554e78516e57514e57344946594870446b396c516e48534f3947574f6263733077615a65514c63385543537476556b317941567567434c4e2b784d5a41413050354b5241343955636578414262343565337654323461716d6851695877795246775644755546773234497173303741502f47446a77393665426e714c793979736c4f5474456e356f4d4a747a6964504446306f6a50776b553468644b42456730324a37564263306e6767356f684d6a70464f614d624a6c322f70573256793631545138306769497a3142426d30796a63304165333746584c716436666972764c506846556b374e774871775156344d7961454d334e443456654e76707a6f7259376532376b2b3346426d2b343048462b544b666454773473746f7357343949627578566f7332773242516332462b35454e43674f50536d4771565a667558516c47334c414a4c6b4b695551776171444635513076492b33636e6a74784f4c4e6774494559467a462f70526a4d5935494d30517a78623971594372694e6678563072676c584276594b692b4e555842596f4c504c6e4c4a6b5049763130554b7a526a50546f684d6a7455506d454d62702f303855443364746569326d70503676324a62306267446e48694d46624579416345345a6f6d6477556c47767751555376476e5353325054696d6a656c4546673348697455626730735934704c6b424a7a45447551436430364d4b647157557a7050387242504c5342705331493445494b376369614750623270532f36614469744675325a36736a324a664b50493969444d4c6f2b6e70503874465463766b78717850747958546d5a4d416135746b41506d71356748434c756778655a6441646d302f46547a626d70356862486c694746456b37657270772f4e425448646b6b41365971306b535051612b333756556476473534674664473335586652415765684f6550617242627478413164574b53546b734d456274365567476a514e5469675764793371774f6e446b6c467149505469366c3079464a36674552637a2f336330447a6149504e566e527863664657526332384b4a6f6779615753436f474a694245666d724c686b4253494a554d35454d4132716a3571524d39514146654b425a517555627849365a514c2f414b5649584e4853573769703977543145523936416e7a594179497844396853774e356e3730783364775236644b627a4a794754634934494b7939793331506a6c524c39734a505376784b3052426e31466e547945684c514d6355474b4e6a54783778564e4d4f4e5046624a69343566343456564e33624e5358422f7a5143637a6951375553554647393665646a56787956734c63596d75444d36444e4f6342344c52424f59354b6f4579656248386c3037646761644d6a5434672f4254793269777837334951636d496c4f49315259503271364e737731434945522b43306d4578456746754f615143374b6b6d5a745863677a65576342576e7433493372567966556644514e686772596d35467042672f464356335649696a42426d74375335505751584a39765a6b6b747066417055386c716a657137306275562f6e68677777346f4d6d693841306f7566637035736f4d38532f4a62544d5941507a78534778666d31753346346e36767a51565375544e4a796b334439796b33505354324a343765364a615a466d346674556c71493653596c386553425a32444b704f61506b59454c5243594f622f6d6a4b3547323869677a65584a365a717955532b6e6b2f61797431733077516c3879524942366d656f515a785a6b2f54777a774255466949376678435a6a4b68772b5372426e4944514547735770413941416647695764702f484a6879342f7653365a794658314e6c6d6d4f30754d504c79396e51566d4d4e4467312b72755130526a5146314c6532756753414150623855747533636644706442644f7a724a4a50543256495667322b696b63417445624149426451573551594530515a44336532436b597a6c3459677962332b39612f4c31454456376b766c5049534a7779507456426b6874356a71624247317439417143487a4957386d4d414a366d4f53726c7552456779366e372f676758524b50555254327953334c6a646e7554536c35704967666669714a4854486967767433634441524f546f7a7348494f4d6c6d4175554d426b2f5557437531627551366f783758776441336b7a3176454d47786c2b574b74416c3964653956655a636957496673716b4c786f4269673078756b646973383054344e3266735749347548306c45326f52476f6d585967757a4a46572b61426e5853526a3763456e515178314e7752416a496a532f77435342444342365975536b75792b6f34506b722f7478566930754b6357447179634d6777516c4f59706c785631756e5146724d594e707a2f4e56536a4770474c302b5342524679304f7855366f57382f67744d5a577761306f71726c32455137462f3563554351334675526163694568467364446b685679335a68307974655a334c5a62755349725a4543394f78426b466930576751573936317733576b734a45643253743058492b4559564b5363346c346d45544c786377677275694e30744b52626e52556a6132515869442f414b632f69746e334673466a46556e653249356537464249624d6b6e2b6f3054345973704c302b784350556454455946555433506d6736596e76566364726959672f6767766e59734767693163637970355730694e6334755171325031766a697249523675736a5167306947326c48774f4f5068566768612b6950342f4e55796e4b5a62492f53676274323345523463554458722f6c6a54414e786b755a664e2b34586841796b324f4b3333484f6b794138537131584c5238625670704c416535426d7379755768356334536331785451766b533637575050325a53625842516b452f46625978737769396f4f526a4b55632b31426d38304d3062465034712f694559324c4e7869624f6e32344f727675504d6549736d4e5766586d724e4a6b433857373845452f6f7747714d61646c555466686c45766a48745267592b46756c5141584b78713377514a724a6a3165354357707a727a777170644e30485243414c2b3156562f58482f4a617438394d6a2b61426841447050672f464c714e4469794e75567934644a73694463387665745136737135494d6d6f30442f74537975536a5541474a2b533054633452714d6b51424c473052386662765159444b32616148486278577533674e4149422b6e4b6961525a3441653948376b47625031636b426e4b3945644551565364786674316c426c64472b574f546f61577a4a514a432f49734a414f36726d5a4e673673454c686d512b48302f74526a626b2b70365a6f4d665671477147427854796b43576a45456e4231726c737268707269787747425247313045797a35494d586d52695838765554334b3278644e376f6861496b666374427354314852683756576d33614e767044502b70426d6a4470442f414c6b73725948554a4f78704c42585374334141595837634a5a394c76775641737a74754a6d4579507177515a35332f41435270715352383049376934335462722f467a57776a46384d3157774f4a392b43445062763775482f52442f5477542f6537754869737750594d31734e42342f623277576545355330786e4c3335494d51334f3630782f6f747036516131375538722b374a367255536550735670362b4a4b414d514d4a48343151565737743634486e674f4277566e6c584a59772b4c7546413043574f50366b776c63786a4c4834494b4436564739496e5378787079376c5a4430613033395468717a646c663978756f3433634f5353652f7742794b6d555a7479596f4674656b37634536684a6a2f4142554365507075304c4f4b59596c496435634d524b4665657250386b6e336d3464684a794546387653746f5975424c2f6452566a306e62674e4d532f4a4964317570523078692f47542b343979417637746d6d666967757437577a436b4e51546662577a347053306e45506973385a376d5231787561522f4b454439387a65644242596474734a466a475a624575715962545a6639495841334a6c64627537713238707a316175512f6572427539365046314d474743444c4c6157526847523937313471713573794f72564c534f31627a763552365a52704c6b6a4466474658592b38494d4e766254636456796e46364258666158413271526f74304e39636e5131427a397170674a7a367348797a515557703769325245427770447a702b4f42415939584d4a70584c6f366f58434f34495276337a34376d754c41474c4e374f674f754f735733596b664a566157384a5a47634a3664544a44352b6e544e6d7847534371634943704a4977565537466a69566f6e47645147493563304462617377534547667962503146327856316a62324a64526e6f3547555850764b58635749536d385974546771664a7377625549676a4634765642746a446175373343547a67337753784e6d756f6b75576269506269716a477a556b554178302f6b6e466d30514a57794938394f664a42702b7873584f76516458474d6d2f637374336157366162526c7a4d33535345526a635a2b33354a7a666c454e71422b4b43574e705a6e34376466357662347256397474674b5767584f4f705532372b706e53584e33474c525a324f7068466b47324e7577537a557a43734669466f366f526273584d50714675324f6d7a4e2f3468543549573939656a344141445673616f4f684b65343136764b707a2f4148717333357736764b42422f695642333179666a7539336c344b4339356865456e49396e5a42727437714d6930397645556f3833716b4e6e616a4730784f597a5645726c2f4d784c557762337570357479424641677630514d644d517a344f712f4d30735245502b53595434346f665a2f6344534a4d33746d677168644a6d7845514f4c2f696e6e666336697a696c4d45626e6f6d71505665417a72494647587057333238533178337a634e3830464f75636a515148657259584c7763524d4c6554346b70785a32674a4c764c446b724247304b4e4844394c315156666358497631427338303333543031342f5379506d78722f54777a52383355474939364267596c77433772506376625332576b356c775a614933726472464b665649677470374f6c427a2f414c713254305779472f68546b536d7867776a395770612f4f382f72454336454c5579314b48745154466744564175656c794f3369723432726b366a6a7a52466d384d644c3830465268476d626858536d4a515045594b655663486930315353315236584875515653744233416f704547324e576f694f4f6c554746796368473253353654466e4837465a39687534314d5945442b4c5367637a7257707955383456656e3564794d64727641346d494544676346586469585a787a374f3542574c77455863446b5158536a655267786759632b6b705a574a79447761755a79514730767a724c535161676842624466536b78634e6e6b6e6876627430366e6942683956566d6c737a39566139696b4e6e646c4c6f3068766367364d6239324c39513979724e7a64743048544633352b33465a78743932486537467630386b39734733706a496b7939736b44483769726e5638455951763136524867386b336e73664334547876694a3662622f414d784b435734585a556f35356f6d4e7946527034704c642b497867785476626b6139714347524a63792f6171355878436a6b46576b5775424a4743792f65322f77447458482f6c515857357a6b615a383159524a74576b6e6b4f4b79776c496b64426f7234576f69574d36354f67736a70306c6f4e78644a4633444376344a6f51726d334e576d30786f44335a494d735265384e4232706a637543576d6d43747551696343386346564f4a695361486b67573461364477537830524e445438304e456a314d4477564d34546a68467149484f32744d77385069494f58656d6a735859524439366f6c743772384132535137534d70504d6e76772b61447032505462554b6d446e337068733975664862695478775743785968626c726957372f414743742b3775526b7a6c736b46382f5474746962564f55696844626262434554475172692b437948637a75513856456c72647a6e684f6e76516449516a3949667456647736476c7870565a427537676f4a67747954523331334541532f686b7a4945752b6f61493649776d584f5170324b7564347a4c6d456d3746736a66333149326841637531494a3777423577683331515a42754a59434b74694e59477348537258764d4f6d4a7034754761547a4367575732467743636763617339456265316c443647484e577775742f4c376d546d35704e515342697851553644422b58795353746d55673578563179356130506f506571767562445a6a49554b4247755149455451664a61724d5a5849564e54697334334d442f41464b694f5452566f395232747345784575314134736a777a2f384154697035455154314678682b4b542b363762365979495074524964304c674c5249666967652f7542742f424d696d456c6a4f2b75304f6f455a5377666b3145706e6269584931767971725463673761544a6d3967674a336c3650544d4475546663796a394f5357354f3350706b434f464d5559776f3551513773754e556166677176506d376557385363552f6c5245366c776a617474686d676f6c505848444258516a356e68444e376c654c4d7751784444464f4953446b794642676777676c7a4b525353684278467452474b3254686f782f637135774a416172304b424262317862495a5a4b7737654f6f774c79594932663656574e4f4f43764d34733442596d714369334f324f4c7434555979456f314e4d755330777457376b4b796c6a6b79712f7474755031456a67677a7a323475654734614a504a4a715a4876775733374c534d4e584a49336c6b796b4b6a695547627974427836552f584c78414f472b43766a7559573574474e633659666b72767569616c712b33356f4b6263707537477259725243556f42354474564d35334a44554862322f637339363750565432356f4c376c77595379585038752f634a4e73504874576d5265725971516e3563745144494b345772776152663330576955627036636a3371794e7a54466f352f4e57367335494d632b6b73314657656e4347644f7a32795853725070674f6b357136454e4972554d67346b783978623844484c7637566d6b32707357346a46647936507049446d71716c4232503035636b48506a745967617a45553475333756654c564143466664655553576f46575a655758696578426a386833707a576a7947427a7067725745584f4941727953786a562f6879515577326b433731356674566b374551476851653377566d6d384134384761726c4759656a6c716f4530455a666b6d684f74425565347167336f774a7255496e66584147446537326442654a734b35356c434e34454f324372683674646a535145753669797a33666d413651424c2b576c45476d56345670716633497730796e6766394f44684347344e773670414d636c6445784d715345547a4b436f325a52373038424d482b6f6535616f32347a4c67316239517756586c6b556f336238554341786f542f7156734c6c7439497032724b547038565150635562563852494d6d39736b47794e694249694b45696b754b656469334b4f516248693678584c723067583571767a5a4f48496669673058394a4f67312b6f792f425a66496c6372476a4b34534a63466d3756594e77496e41666967702b304d744950552f74334a6f626544694e66336673577533664a64364b475a70494d2f7a515a6874597a71666371547344782f59727a4b596b373161716546374b5948344f6778584e704d562b667a5466626b645a44527957735874424259456a44676a4f35356f31536a32346f4b4c65336c6369374b33794a78483472534a7451552f42504f5a3855474c38386b4749784a6f353038465762455a594b2b55324e4b304c6f655a4b685a7761494d633971594e45595963555074626a616a37754333516a4d396e464c4f556758515949374b3449394139766d68397075446e326476344c6f536e4776557879723846584b544f78623971444c486133644e436e686175456769766637664657517647745847485a2b39547a707870476a494b5a374f55334c657856457263345634634630507535566645444c4d7250637543494d6659494b49796c6a6b555a584a534e43416c4e304a6462562f63675a7446565a485634686c676f496b7445304a566b595630384543616a4b48546e697445496c38636d53535a67437272513663335149624e47782f4438307436784b6b632b3742616f737a2f4142566477346d4a4772346c426a7562447a44542f55733074724b4573616667756d5a535a7173733177764b7561444c44626e777437302f32776271614a56303858485a5241784d3476456a744f4b444d597874304859704932346e77393636457246736766714e6553506b5777325a417167356f746e454b30774f426f636946753870712f536b4e6f415671554751517267364f672b374c4a61525a317a354b53736656522b31426c68513951526c433256644b314e744a3746576264514d485155477841314741514542465869447949474e41465863747a69534d7a38304436596a68536e7654456e4434636c546f49485669684b5575303865784130546d614e6a6d6a35686f57592f4e474d61565469315874515a377370466e435871474137667758556e616741444c4a6c6e6c614559644f42515a597a346832576d4c436b523349544931616665694a42336c552f6b677674416869394848656e42453575494d7149376750683070765070322f5555446b50536673416b38714c75435750464a3767575274435a4a4a446a386b44536c476a78722b5370446b554c6677712b5541593675626479456d4d6e717a494d3077534e4e56592f575a537a4154784169484970776171724a626b454445536b612b4671425349614f6f5a30556e4967734d575478756d644a5a59494530786b443775394d626441366a347a5443656675375546553453385152366a4a322f6854796b66724e416d4542346f6f4d637039526a38554264656e42614a776978644a354f7273397543436f7949716f487a71727a42364a54434d364e2b3042426950596f5a30706974666c6655423742555862496f576f676f63346c6c495430343570704d4d4d556264757443676f6c52306f57695670384f394a4b4269677249526f6f4a495a756149434b345a6f5a4946454230425a2f456753706951355551514b4253574b49705241416f6f394b71427330454b41624246314542436a75674b495a6f475a454671705755664e42614a507a4b4a363157414530514d33514d39574a7145646566486971732b6166353976356f49434a477159594a574a374544417677514e77545272543370523147716b434f774d6768674d4643496b4967392f79516e6d6543416d496b374944674d6c482f414452312b39424e66417374396a6651482f4a69756449356e4c38554d366f505357426176696d4a526e745234435735636c353633646c62366f6e7557797a36706374644d363830473737543654516356544b7a4555656f57697876626479703853766c4677616a356f4f5839754d30733766635630764a694d4857655675526f3141677865565279713452305342573477346a425547322b50616737757a756137596d542f44494e6b754e366874706265374b4e52484c6d4675324634516a4b4f414954373843344e57584e4235713544366b4c632f4c6b7877527552616953504c42423152706b4b6c4b34626b4b4c4c74376a304177562b6e467837666d676d6e706675514653324442514638617145556639714259524e5856524445423663667a56706b326465536a777a77504a4173594e55312b54704e545635396963686a374d68644264786d55456c616572724f593542583144684355532b506367703048414a634d4662714758374656386b426b554132654b6254546b555442716b49454439366a346f2b4b714244593845456b523271647144634563416747436a4e565434454b4769434d4d5544564d427149314a52453449494f4b495939796d4f4b494c507a51416c71496469434e5542795147436d41554943434369694a2b4b6835494141694547526441725a715652504a5268336f5052516850534366626970445845654b6e3653704c52496752456d2b6173304352427a2f69344945454f7248755447305071775464456332376c555779623979437a4877753478526d5348634a4e624559755657776948724b5573337764414b516f4b35313971717a7a324c7566777171355263417333596764524f6d4966562b43426e6a4c704663332f41435673574236732f7742544a5932324147422b61597836574e6543426f474d61676a6a376c626b325a7a56447648414d6e45356d4e49734f4b41366f514f7157504c424a456a3969754445677953796842334445676f4b764c694a754931504a5038415457723876676c3877534c417333765144365159755878346f42636a5054716b7a367670344b716f787a793746664935696c554e524d586469443755515653442b4c6d684c584453497558446771306452623264584d54706c2b6c426e6e4b35703073334f5365554d632f7a566a472f7131594a7a4f46554765514d4d42334a52654c2b5759684e63766d4a71686f3876704e54696747756352345835464355347936732f77424a773936653145584467583933755667736d686b477864426e6e4f6a5a38454a334b316777347254466a515250373161644d6e6b637550346330484d383739494b76463053724678526c304e454e4f72566a6b715a786845614267677a36764c476d503841757851424a635371704b416a4961554471692b7041613149474330522f7142774f315a3479486d55665341675343537a2f6967312b57644a61696d694d367a5a6c53386a314849554357554c6a786b54546b67754141474137306b4c466e78473545532f534570314e79397543714d4a7a2b72546e306f4e556263625a7956326b416471774778655a3958543256554e6d35674353654344575a4346422b3955796436794c464958684c5766446b4541356b546c6d6773416c4d3642395255674e4a4f6e4a4b5a45556a696e6a626c3954523431785142792f477677524d6a4930716952355959342f676c31694d6871485a7a515736496e706b5079434246754f41695067713579306a356356574a4349454348597555446d34484178695238566263756165694f6b523435724b5a367a516158795a4e4638734f4a342f4e427069615577436a6b5279376c6c30526b64526f66642b39453667656c6e5158434453422b6f704e635a526f4b3446566d5246633070755246595236705a3468415a6d544178316678634b4c5247655568502f61796f2b35756a6f694142696e4f3476793538644b44527245735153777a53367a34524352427a69735574396477353951566b2f554c7a645757575344524b5a456846736d5347594558646c564c655445515a674b6561626841307536432b4e77636666696a5351306a42304e59694b414f73317756614959494e3430517a465063717053743436775a4d314d6c6a634e56792b53614141496a4642704d35584936535355624930346a6961716f436a6967484258523030426441304e523973465863744530794e5379764968454352785a6d47434a68355a366a513845474c5364516a6779733048463257343262574f4248486d71394e766b79444c35623061682b4b45747443513079484844327856684750697945665a6b316f56702b7841734c4174785a716330386d4649746a67695448466d51594d37494a434a69477a5168617552456a4b63534d2b58596f396572417072555a3341526e5873514765356e4561524a364370436f6c7562307672457535504f50376330384a30614971654b43694e79346178476b3570366c6e7834717776417441552b704a427452624d6f4b7057705370444238557a58493949755337766242614b4d38754f5351743349435a7949655237304b6e435a4850697170376d334233316679354a35587a4b49416977413975784168446e53535432386c564f45632f45634f537446787043544f782b4355577766454b424167323466546b6543633262467555597838777a2b726741727032334168476b632b48357072686b3354455678666b676c6e59516e57576f4b795730473344514a62346f486333662b33546a477446504d6375372f6767714d70456756504a4a4f45725a416b4f61744d5a794f716f3571335271724d756777784f4a34354b385743657162565633394f4c6c6e6b6e6c644578672f44324b425932342f71614c4d6c6b4973385870785a4a482b7069507751314d44412b4949424a366b634f476153586d4139556d62394171566f384d58694f6155334a53456f6b59522b4b44466f7557787131466e7278537a4246586c77643672617a596471716a456152456a4242524b354d564d7055446f61376b65714f4862552f7556704e584d5a616d79464644596c4c4456326f4a61334e30316843697474337a4d36534a442f566971785a7551727179554d726b576a717165546c4271386a582f43482b6e464d62596a684d742f4573506e334938424661624a4461704e793755446d4772714a3164717241314873344c5262456a6d4b7134536a4c706b314f5344444f794c325a4450583936732b3179314f72355178314d466d4735694878706853694332466734546d61712b4674673070535049795645376f464f54685a4a377935416c79355164654f70366350432f3746524b336e494e2b6e38567a6875373977644452427a4e53745675626c356c304635674d456b4c5677466933486968454f64543165695755355848417573675932376b6e4e52776c7a5377324e3879667a434d30317531646e2f774259486c53694a736273696c316a2b714b417832563675583570376c754a6f547a4a5377745859442b70634d79715a514e4245596f4c34576255486d39427751462b4178682b355a78626e5141687662464e4b31646d476f325663304767415844676a496752484931584d7550612f774353526a2f4c56474f377345364936792b4d7030464d3047773352614e574b4233634d6831634549547447585545626476627a7235636750624a426e4535584f71456d50745241576a4c36324f61302f61626545656e6a543971797a4553375551576662366831487177356f517332346c772f666d7134546b4d42497762465751766171364a4f7a56514e344a4759464f6145377370523078465233396930774c6a7068586d6a354e3171696d624642696c636d4a61636635716533616f5a7a474447693153327370415249636e4d634d38565863324f3449364c593038354d67713836345468377632736c6c63494f48765477326539314e706a482f5571787372354c584b746e71515356335735646d716f4249395a4c7878526a5a4c5a4d744144524767396f6b677a53675a6463545253396275445341644d5a59397130584d48464f536f3876793453494a37384f35425a4355673467515237636345737231797070373158474e71356744386b38624d5070444641787536726655512f355a4b7157344d542f543663753871307774334f6b554f616b4e724352366967615a7553694a69544439544b73376c7a57565671315779305a634754655674387a556646304755626b74535a3750336f4864474e51374a3565544539413164795239565445307a5158323931712f617252667478474a71735169443153427279576d56736a7030306952702b61437935646a494847767452554335457a456f384e4c653156656475644c6356546473534869424439574650654546476a5857494f48682f4658417a67644a6a6e5871713334707265754659436b68346f2b7a6f7a6d644949385576456741654a646b54635936614d7a725035733569763730346c6c6f72793936433854697a6742314a37694947416f71695239546a39715768426a4633515876644d65694c6470566335626779646f36654f71697468636e4c383038584743444359536e4b734c5a4c4a6f7a766a364c6368683148397132526a624a7a443845737246764d6b6f4d38397a65744e72745150387179533359754f4c67694b36763265324b33584e33735947706b6535564339365a7163786b4d2b6f4f485155777557685145534e4b4c663973644c7447542f7844383152354f79755a6e46337430377168557a732b6e786f4e5a4c316a4a42305a324c6b675331747635736971664c3036744169445275716e63756435647343556263514e564f77393663584c4f6c69586e466f34556f673645622b4f714d535544663238504662503873566b6a75746d6664536d5a542b665a38567638482f4147494875626d314c77325a682f3456614e4a6254466a6c782b4b792f66546754474573412b5359372b647973694a634a6345476b5768416b344166696c47324647424a46566e6a7670474972453061754b654737755369496d686b47515779737347306b384e4b58524b46664c6b4234656f31532f643338496744337133726e57367a2f7741505076515a346d502f414779773936767444564b6b4e503661597136555a2b485848337132456a694a42766b6771386932476d593958465558623975413649796b634d446d74666e4555317566624e50627633534b544235526242427a4c6d6d48515835465636595a34354264472f435678745861736e6c6d30544553466139682f61677146755172475172374d70447a347948556563635172424c545846734b4a6650754f30726745706677342f6b67643768367048344b536e636e515953485a6771376d36766171475035716663546d776c546779437946366367354c763845756e514762704151387951596e422f686b6843354c55444c41466b467471524d58694f616343356d4b6539545462452b6949422f55395737416f4c6a644a6f337355416a444268376c6e6e73764f2f715030757278764c4d443177497269723437714148676f2b497737554850384173644c6753624e504c62674e457a6369724f463052647354746d55394f6b47717979753756394549526b51354e4d4f39426b4f316869414d6331614e715166414f356c5a2f5476654b4652682b7861596553576550593243444e4f3249316c6e566b677557332f55334a61726c757736574274386e2b4c494d2f3841546d61516b4755387653475934354b777a67616d675336376645307a79514a44634556593050364663643950776867477249525161457a3050786f456b373062655567503467396535417339314c4b55572f53315856482f414a5633774350506972504d73336977704c2b5676696d7557375a386573782f672b5343735737676a314871316173636a6b71703749584164637350696d387261427739782f35543349473259744f4a6b7838584a417366536f7467376b5970352b6e693155527a41357070584c6b4975486236686d5539756479557455506a524262446157784967696e346f334c51744767374f43732b376c5751692f5a795761652b335461595777516631562f464133614d6b6b79336947486567623235786c626779534f37763557346e38653542654a353652796f732f6d334a533649463865444b3866652f77446268446d7843312b6675744f6b36442f704b44474c2b3477685a4a2f314a422f63697868626b426e5662426330466d446e74542f64614451664e426e684c31415538715838576d53754d64353956707635353565394137347936586b415738504a56537632376a3955763957506367727552334543356a62505a4a6b3339536b54454275456b38504b6c5855572f6c546558744d4a47394c2b57672f42426c765762737a77503836533359334c69554777347654765769376132634377467976686f73383457422b6f423044434e324c4365497a314a37455248726a6e2b434d4c466f65457354786238307768624e4979727951417938735a636e7a37516d4630796241646975473245664449453448324b45674947725a494638755166686a33707a5a75416141514f4a53456a536570757861497830683553636c4254396c4b474a642f623277535132776a4c574c67442f7178376c7231524a366950656b765167526f6b51654463304443454d59793978782b4b7a33647449534d34336f735268494b6f656e5750717834794b593743304a44544e346e4c69674a45794f71516c2b43686c70366e596e48735466323241776f2f7744456f4e704d357744594f5542627a423476637268746f6a2f716b2b3337316e6e624d614337462f345542455031334167754e6f416b416e74516b5a522b6f2b35547a725236544947584147714d727266534542316a39525044323756586333457849566f79533763423036526a6c465061426c496163507951585735763133415165537438714a44696953486d4f3447715766556d6c43384f6f32364e3855414e6d456872316677674b6f43495a33537a746d565a524c64714169496d6f492f3150524138726d68774173302f302f7457714e75506971334e4334504c675a45642f75515a49784a3671455037753269476d4971635372626c324d6a524a473549755445696e31526276515548623236645a374e4c426b4a656c795067793534725a6275584c6771412f755352387a4c4a42672b3375516b497451596e397130644d52716c452f7973744775394556454a41383077753366724865676f68753747424d692b576b3676795630647a452b43316462687056666e4553646f302b6f6c452b6f376932544b4237684c38776773694f6c394d6f39716d754d4f69723969512b74587044544f79376a39617a78336479546d4559514850715158364e52384b736c4b7267437650676b745375335a6462446771357948307869663469554530786e346e4471305737656c6867456b54485431426d5453747a786a436e346f464a69423068346a344b6e79595366395272677270516b42556471676c71713057446476735367796931434d79482f6c444b3755324567566f69424751706a6d72495273733467482f56785163794d732f59465062457262534f654b327a7432342b434961574b4679666c2b466b4766574d5258676c75526d4f6c7a584a5766636a71495a5a4a587a58792b376767756b506267726f6163616a6d73506d5854395163592b7778577147753444726363337951615979694b2b4a31544f41314f4a4638797134574c7041414a2f616d6862755649476b444874515547316369424c53352f4258327a63694b7842664138506b6a4f3564733951456a773038565564376371344e61476d4343303370534245674968533251634b416331535a7a46574a706750656d74475a2b6e702b7169445a475274304f4253446376517630315663726b51573035385664616c614749664e2b534354387535555052732f77545268586954395037303433466958696a45664e5848635742576a7567704e7034303663354469797047334d376c5336754f37686d324b742b347476306755346f4d5832394f7154415a4b6f37636a776c7974742b5931366d77437a526c316b436a34494550366e5238703349784b4d50597372444c544c546a78354f675667414f3449546a49554f616b516645376a466b38694a65484a426a6b6478356e515177563062647a56724d795172626e5330534753334a4e2b66464257597a426257542b437547316e4943526e2b395a6235305669326b5a5a7678566b647a71704b635976784b43343761593146364254375335415579716a433649763176544c423072794130527747614274426b446c2b394b4e70636b5358484c6b714c742b364a564665584c735761467937694e584d5351623457726b6e4d4a486b316667705062337064496b44334d71624f3930675262722b43747437344f58444549465070384a314a48446d712f375a5a4856384f4336426c586b7a7052666a45734941636b484e2b316a554369506b3673424632396e58516e4f476646436337554177625567356d6a793477636741753251706b6c6b4953655241505048354c706134526551694a4e6b634f37437159627133494e47456548534e4c2f42427a576856684953786a79346f43334b3551476e35726f6934415445572b39336f6e313041702f4c2b61446d66596d56444d6e687737453864684a6e507a576e564f44344f634735704a3370786f6638416167413273496a467667737a444845346674567776595a667455455979494d445242517a53654f42476637466f467373784f4e4b5a4954414965614d4c6c75415a7a6967453745684770666a526c6e6135476b4a4d746c76633279534a48745763335961756e6a6d674857514b6533456f6d775a5378412f69563575784970686970716a3962567751556d4653515336686b395a6b3039796c735a50346c596241515669362b446f2b6149343845744e624f4238464a5768493855466b446d44517039476f2f4e555779595562766a3755523679616f4e55626b534931595653617a4c4848384654354d3567416e48353979736a745a77504e38416757556f4335475576324a394e743634506a78556e7442434a654c7561666a2b784437456173763458346f4c50497344776e3243726c5a6744785477326348456d314d6662334b77324244772f7451594a77614a4754704a694c3951646c304a776731422b7a745648323444476e4e6b47447a4166702f3841537249796952673434415a7262445a773654674d367256623273416155495056776238304753566d5a6a7042717a392f42567932374844386e585230615859483234704e44674e67506555485061596b307879566f316158464835725a4b3156387750624a55796a3545516167766b787167714f7334416b3536515748656c6b4c68366a463354793356366e41394d75664c39717574376b546c716e38506c2b31425635594e534b71713770775a587933477175424f54724a4f6656536d53424830395944664a4e4b577242696e31362b6b4232396971626b7352454d506d6773746a4f5748466159734b596a326f735771633650543571794a6e41554e66617144624b47726a7035354b67573531664170492b64636a316b38754472525a457047754842425362636f395048354a62747935714a6a34693359414f475376316e4474534f77376b47556d565a5a2f696a496e784548394b46793647666971786331543144346f4c424456314b4733494e79706770726c4b56634d6972664d31636b464d49484273466f743262635a504d55487853537541566a6d33656a50574b426a7a795147486c3268672f7742586367434731596655706370314d77487a5477706a6b554353317a626767495931576c764d784b5032786a684a73367367772b5649343534706674576f7835357574736f6b6c39546e344b6a7a4a67637558506767534e6c33697a50684c73557067796b376d636355664d4a442f554d45413178643663466447477554343845756f526552596c766970627543336d33356f4675456a484442553678423279576b5368686a6d733068427169756455445176754f716959516a634a6649667556496855386350324b3644364e4d654b437155444538617170694a64624538714c5435645078565565716f375033494a475570696f53776c462f62424551494a4a77537972555949474241777170496e777848656747424a4f436278563466546869675a793361717753394d4d46496c766367587979434377534a3859366b304d446c7757654c6a6d5561346e484a42724a6a633857536f387655613463306b4c4d356e6f72524f494531495935695342504a74366d644d4e74626269336334523875493665507a562f394e6e776b45475755497338534f7856334c5a344c646345626d53706e626a47577172494f65625a6473454a5149706974373661302f3159704e486d564f51785163386a454f6856626a5a4466424357324f5748746b6778436d4b4f6c2f624a6168595067474b45647547366b475a67564379316e62786c30784b6237635a34653342426864716f7539566f4e714a39767a556a5931554e454759304c496b4d6543314333426e4e53677778515a54676a584a614a57772b4646504a474f53436c7330756861764b4554676a6f6a346867676f69587843414a433136486f69304a437668515a78346879517a3145666d7270454d384b70645969486967545366624a457871797466456f784a465a4369444d5931306a464f4e764d344b3252465a52556a4d313175336167726c616c676b6a437662334c544b594963653556655a544230436557346f703559686a563030704d4b5a70504e4d794b494730413936575673447654546b42554b7356353845426a4568794252414871636f2b4f6d43427a495151304c42614e76764c6c6b3071366f614c6830664c7964423134622b4567307667746b4a32376d4474374d764e526d785631766333492b45736737384c514a3671685554734355756e755757783670712f354779366c30786569474e433451633751625a71733839314a7134344c7454746964466d75624f4f56482b614468584a69594a4b71464b4446646535744150454654397041466b48507a7052614c55784963436b76574a5156446b59494e3865474b6b354655324c6a2b4a504c56346b424a475865697a6d7441684b547153504531795a424e5442566d575937564a64505968455562394b43654e3054315931566352526b6451442b324341694943574a6567782f464e4d3164735649534772544875514c6f6c373039634437303272556355785949455a6c4a7836734b493066386b64556a32494b2f4a56637752334c5535694f7055334b59686b464c756f776a516f47714a63314b42514f434f4b485970705146314d554645423763564d6c4e544b4949496f4231464446424d4d464d516f4139455862745152516f49674941707a5178545056383048654574494438453175542b44784b65544177596e717a30706f324243576e4c6c69676b757375663242487961654a755a2f4257473259507a5245774f334642554947497a4b7346722b494a745947474a565a75694d74544f4f784177476b42753957516d424936512f4a5a2f4e6e6338427a53526c6f476f596f4e6b397a4b514d4a52303936797a3152476f7548546562724854377a2b314a4b5a6d775a68326f4b646368546a33707446364f447350437445654f4362564d4e45554875515a763667414a6978393658524d3951786431714e79555868794c49514572596862742b45566b2f31494d2b69526b435178486979577a795a7844695863455a615343346f56584f32357830382b487478514335616c4976514255695048483471324e6b59435262356e74566874427570425245744c714e6663675932332b702b6174386d6e5378343676775658587877514578624c4467713767424e544a7541437369346f6330336c3547705151526a47476e366e65735530656d6861703731497741656e66695534414a4c6d6f51583267634267506d683567413077505678564267414f717066415a704a574c686b3869414770577144524863537434596f53764758545067732f6c49796a4963304675725445426c497a4a704a6c504c6c4b4e42703449537379414142642f71514a49507a5352694a5364586b5462544b542f784a5977476f3653614946386a53516344384659486a56776d6c627a4d75315633474170775143585764555a5665715354354d55593359784f67494363484d515766464130592b567a347165624944557831664c6d6b6a4f50687744652f77427331594e596c30356345423836656b504a316d75586d71413378566f3167313036666969386e364d75584242514a69494770334b76457450564c47564f624b30773152416b4b4b7165356e626f496436432f77413654567748384b4a59427744715077574b573646325653797479414a596f4c6a306a69667a53536c62486a65764c465665595a4169544a3443497769676e6d62473553555a534b4174576f5236496b6a6869744130526b785a542b6d43344c53375546666c785a325a6b35682b6f66424b53353673516e467a70596f4b2f4c7431476b56343471584c5557654c6958414b32356f5a6a374644776e437144495a784165493673566e416c7145586549427777424b363979476b5a45484a554561756d6466312f67677839365a76434e556d2b766a5467746e6c445338543365337355317977524634304a39364372574a2b4144547a78503756446265527a354b7679355163416b6677386679535273585231412b39427168593059345973706f677a71697236332f685a5673437a75784a306f4c78415236754f41547874794e585a565236732f7a54776e304f63526967486b734731454966626c674155386f316b445678453969747354682f315a4f655344435a79674e45734661626f68346733466c6562747152614573566e6c62684c3669354e5167573576696569493655386433624553346235716b37637977442f424e623251474d543830447a6e614a36325379334554344a4165337657694f334248574d6549716f646c594f676a564c4b72414e383046506e36644c7946564e666c76463659736f6256754747442b37336f53746746674851447a3652784b614a45592b49695a774f49566e6c6d425a4c47794230517a795156794a6a4a77576a547654325a78424a6367452b39474d41484d69425250397070455450424264434845384f534268496e42325665696377384f3531564b4d783478334948755735794a4d4469713461345331484a5479626772434e4171373043415965776442306342316b4f3377436f75454853332b6f724c3549694e4e78332f4149614b2b4e753355534a622b4846426153416166773653717062675979505a6c56503565306c6a4977375337706f324c4159786c72712f56494833494d384c30795270646e72524f444f58387631567a7857676c7a772f685a4a355a79482b70426e4f755448776b717947324f6f764971366c76784f65444a684e356177432b476c42584746776541302b53516d383545617978725473566b6a4b4e5452387543476f36515938636336494b7a4c63597552504d5a666b6744636d415a6b697659475230584c686f33655756773239306a55515062384542306e4975366c7963626444376b507435344667526d457362564e514e483039364333575742307352336f435853342f315a6f52425a6b2f6b7a6251446a2b4879514b356e307853323774364e41416e386d6341305468375a714e636a50477079795155334c6c2b52306c2f7756634a53795965324b306d64364f49456a7a6f794a3344654f4d666e2b43444848634333514d35353846623530355277596c4e44644145364c592f6d5447392b67494b6f7a7531414649346c4a4b65707457497179747562753541456e42736c4a377034365a57346b737a36634f776f4d727a49367550684f5061744559454238667a43593775656f454455572f543756536664334c77307962534f346f4c657076346543754677594566742f6173756f787a36522b4b456a4c49386b47775468494776636d30785a77334453566b6a71377553734d674a4f4e4f4c653942624f3347464d556b74724351654d52774b6b515144576f344952684f564878727764424262697a434c4f694c45674748687948746b7266496c67395566745378695a4e375651556d7a717736496a6869724962473242706b5032712b4e7251344270454e314a546267494d5467677a7a3265333456663470593765336277706b334a48376149385571505135713437654a6c7131422f646767724d7264736158643158352f6d4f49764548446b74427452784a72677035634d354230484a31584c6759483846626169597334576d59465a45557962326443307877474f43437165316a4e6a4d3135657a497832634c6862366679562f6c7762544965355347306a4d6b616a42424c5070304771634d734b4979326475482f414236677259776870783166784f724a485451554d576442514e7049386662385534326f6930694d4b706a4b4e544f34334e3850624a4b445a6c684d7951504853315930556e474567386766795231514f457a376c5159323958566350376b46774f6d6f66396957543477315656635a7869656934535539766343353961415474583544704f6c7550425a70656e334c5965467934652f384673386e5639526f4f35566931554e4f5343694f31332b426b77503669486f695a546834704f564a374b474d70536c7a6c6a334a445945593676336f456c65307a6632646159316f6b6c434571344544464e474974764a7a2b53445469326c6a7a354b516a494679415141736b704d6336716e574c634b476c63383048533143574551506d6f786b57305963466d31774e48366a314469694c39484569676c7a5a6d51635272776571714e695a36644a392f34712b46387969474e4b7167335a7844527167506b695a416c477669537a74513039537a334c317a56704978475842557a6a6675356e546c33494e6c694d5a3145786e306c58367a484d6478646332487045726e696f745566547a596b39764443767a51624a47656c3339755156467939646934702b6c562b564f4571794a2f4245695148564a2b72562b7842574c32346a7030316b2b4a344a72473676784a4535534d525374416d4d523330507555755467645a6c4f4d584d573539694330626f677467684739454561362f6d717035776a504c425652467947626e322b5344664335422f6a33705276424632746b3663477a664a5a376436583168326f6e2b35616d696e4b53433257377554384457782f464279714c6d3676347a494c2f3841793254523338443033594e7948563755576547367467365a526b7a7667677674544d69424c323449786e4f4f6a555761526c4c54386b776c435a4d6f6b7848494b324274784764635379436733725542313343484f72444a43572b736a43364b3851667957364e2f7977774137346f5874314676366b59536a32494f5a5064524a4c796f2f77436c2f77414f39533376595259524f5038414258354c6639316245656d454a66676d47376c556741446c6a386b4762376951384d5a635830736c334735696133415134783539764a617062754a2f3549546b4234744c6c6b6b647a5a75743053307552564258626c61755238306b504a676e7477323569424f4d54584f6957374c6234326f366634575345327a714e445844735161662f42674e4d74466341376f584c57792f37554850385656696c4b334b564e5061334657376178626e474d3461535a6974634d696730615054532f544355682f466d717238665463534e4a2f686b36592b6e324a6c69426d2b43617a3654626c53455152376330474b55625247734e5869794568474a36596a5346304a656857367544335a4b4430697862654c584a502b7154494d6b747850537767412f77436d727153765861516a474263506a56626673624d644d64526742332b2b71706c4346756d764242524b4d76455977442b4c6b70474d492b45443239717179666c796857376f4f4f706b676a747a482f376f6434515333636951515842427977526c6430305a7878566d713153506d5250596c64674f716e77515761497a485649347536424e76474d6e2b5371457454364a5a636c624b5931445552306a4a69677a584c5938622b334a4a62735837674c61524856395258513879324b47756162584141466759794f53444a50596273686a434a7a31655a526c4a6244647654797765636c6447356f4f6d50694a797739786f6d4735614f6f686b464232452f45657032774b732b7874514f6234305044386c50376a5a5a704735543949535433646b56615a666a476e484a42644732595366696138555a573248376c7a4a2b6f616938472f327171562b34535a41744b544444325a42305a62495469544f68375841344f7334324d6952474d6d422f696f4654624739723141366d695846473979766a432b784d744e61666d6751656e415342426c4b727934466c6f2f35424b525a7a3030705166543263315a355679314277527a5a436b34732b4343726c494a793173456e447455387257507952466d556571345a464256356b53354177777a566b6238766f6a456c767135497738722f7036675437647965467933704a7a515666315772626a577161586d434856626273566f76776950355550376c61776c505479306b3051557832393235445845484636754b4a625675342b6b39494f6646614a2b6f6263445635386a54426d5649336c71386636636e3476536943534e7533575231454b324871466f4234516c5374417159576259772b507437634664473459316f7734494c4a6571426e466d3658354c48756436353662553478576f3771664c38306c7937634e43613430515950756e50676b4374586e6e52457944533570626c317a7146585347506d4f5a42365946425075744d6a4b4c644b6e3978305a44587a7762697135322f774259656d5156734a5136524a7a54395044696772757a46774e4e3438644b65483264766f317a4234694c756531614e496d7749627163767734494862484373584f4b42504f323462544b362f4d4838553074335a713835422f2f414a626f665a7a71783849535739726f714a747964417733666d644675394e736641414847574470645570426a587335717732676161384f61426c6274687a696561444e4f656b7444323470586c34595250506d6e6c6469484c736561587a4c56772b49396764414977494e476f567045726862533775372b775666325949314458584c542b784e44625166714634766c43694458397675354478482f61716a734a306c4d76785354326c71736d767735616e6233495174517439636463753130422f746d334a4773467a395470376579326c6b3454654f50616c6c4175514931486238456f74334a5545534f442b337a5158543265334a6b52626d583676466d684462574234493651324a2f617044613344306b6c7a7a4e46723871546461445038415a5738545771744174786a314e54354b6154476f4439717a33336b4445346f4e476d334b674166506b7135574c48564568686d566976327636596e68562b6d6a70686363594759516154613230523079787964304d43346f4267714e6359783841624c534b6f526b444a744d68523046307478704a64746553797a33506d557a526d49546b306f6c31664861326751636a787951565049344d666e386b3532676d377959653943646942797a794f415538734e7044342f5567535070316a4f346138422b4c4c5a48595741514954636e46796b6a7069484271796379694b434e52782b4b43753536655967365a766a6773317a303077715a6b72566333467949615069507556557274346e776a33346f4d51324577574e33526e6d3630573969593138382f4657784e325a7248484f4b76684d78412f326c425643784a772b3570324d2f6572644148686e712f6979566868626d476b41644a344b677a386f796a434650704144664e414a3755337870316764374b54325568535638682f34714c4c64756269345869503841514d55304a5868347256773973575158663236354d4e617678647550374657646a766f2f3955474a78307963664838453864786667484e6b6836632b366973473876476e6c6b4842744b43754f787661646479375163635573647147485757554e3235636b444f456f7437594b6a7141626e52426f416a475661676331655a416a344c464638534b6850475a345a6f474c6e6f6d4253715551467a784d36614f34694f6b67796461504d745348514e4b44464778462f7864575473434d573933376c70476779616856674d596c2f717951595441365767435368354e336f634d33693746305869326f7a5a4e356b516173666d55484c467739514d657969614f2f6e414e57702f522b4b336e645770564d6d354b5737776654417344584848696735747a634736356b35485a2b78575274426e346a714744384631544e38612b3359717a61416561446d78455a524d6f737a30314f725a58644869455433347035674e704f47537a334251534f484c4c385542316b7949594e6c6d796b6476636e494535495274536436725a435274307165336b675437556b6d6d4b576577656769333572564b594d61347173337074516f4d2f39744d476e454d665a6c6235567a4354313571307975597a53546b324b416555596c395854775655647335413434395374495a77656f44686a564a6132786e306c346a496f4c78626b42514d41655079566479447770696844624556647a6c7955416e68795a425843334d5436756e687943736e65416764527161424a64323434736665714a57695a43456e786f65314142746a63673851374b6d37744c6d6c333767726f514e7330316a323745384c3177634167775432317a786b397962374f354541786b7a31433645726b353162444d685a5a57792f524d6738304457396c4c48574966716b616e755673396e6174786563386379666b736b746954466a4e387767646a71786e4c3845476d576d413662774e634b4a4a32353341776c3857533239726230315a2b4f617446694d5862446a4c35494d30765437374f5a754f534676627a32395469633357364f326e6c674f48746b6b38715a3669676b5a54496152434d7a63744e78644e4b4269334838455a546c4138766d67543731717947714f6145373064464d76443034714765696744562b42566c7644584b72636d396e516337566953364d644d7737422b78627274325a654d5130657856327255346d6f49505967574d51413049682f6d6e3679426c37425743314d4f573731504a6e4d59394b43735847494a2f4e487a62593851775444625844794877566337553554304542417831417445753470677334675a46784838467030546643764a4c47335677574b4369586d53493144446d6d6e5a4d3550504534636d577146746858393663577445517a6b446a6c795159504c4d6570395753744d644e596c7553767437654a69596b694939714a5937585358657143765734456f6c4d4c6842654b455142476d4a4b4d4c457064517a34494462766d45684c4278576a3979746c643879754f644f534769524453516a616a4b70515533684f626d42785377743670536a4930697a46587874434d715966676d68456a41552b51515a2f4969415a6e365670687437636363472b6e6970355a63787842536b5844456b6d764e424c6b64493079485366713464334a5a5a5741654b31787358706547512f4e4757336d4d362b2f39794444633277666a2b49545174757470464e4c305a566c72635a412f5456426e4d444750534f56556b6254795a6c66626e714166762f4e4f57492f5352562b49515a5262366e464970784f4f707a374d744d67515841565552423631415155777477757a647138566435516a6b5850733674686345442f78676b2f5677522f75656e70494b444f4c5a74314743627933787834717762754677614d4355336d526b576a516f49427071517a66486b6d4577432b534461716d70785546754c694d42326f4c493772415a715433547471595346617147516a48557764714c4c6376526c30365177794e645344544c644d2f5a3364716b726b5a345a4c6c33376e5561742b50424c6276477253624642304a5963486f7a716f336748694842346e42562b6447644a2b4c4a565571356f6730693545784f6634712b3235665178464d537376322b76422b54636c6462387a394f4a39696765632b6b79727a7854576a4a6e315a5a716935596d53774c366663716a7462326871422b4a51626864692f555848366543717562734636416e344e2b6135353231344f516365664474516c74647845794a2b6e46426f6c634d3678775030674b7656585763736b67315733697449455454696771425a7a69315065713773744e573756766c6245653066464b4e746271545535634547447a7848716a6a77566b726f7565466152596741785979354b537451794c61637767786e2b6e314846316f6954306c67355436514b537a2b536b6a5641766d4f5131424841444d386553736a634f7255374f6b454975376375306c51513652356a75674d6a6f6b325355584b746c6e2b5342306c394a776f787a644454702f46424c6c754863566e6a61746e4876577251414753584c48645474514a4e7a4961515034644f41516e46367871586f506d69594578663471323348514450366167632b61444a35556f343441305630424b52306968484c486b744d376f49484a4a724575702f4633564341516d635a4f7955786e71705145347132314575477743614673456949356b386b474f5730334179385874564c4862626b347575686368634d656b7632304956516e6447725334423666785156665a58616458376c493753344d5a55775a58536e4a697a6d69496c636e4a38346a4138554651327368677a6f79744d535147594251673233346a456a6970707579476759537167713045306952564a3550547a7a56384c546c6a34634f7847497a353658515a6f62615630506838457364735a30664e6444514249793455626d6c4543432f682b4b444663322f6c79595335397159526c4546325458535a6833777956636264584a78774861676163324450334a51663034424e4733637a782b434973536b4b3166755156786b53612b355157597a71774278566873536a5756496e703730336c41567a34494b644941416a68795663684c567857715547446433596f5974306d69444a326f4735776f7455724c39364574767148453845464d3777384d5355735271377643744d6475473438636c43424b4e636b4646754d33315536523473776e6871484a2b3931646f4757415479746966546d676f47716654777851386e5579654949445347434c6b34595032494b644677446f4f5046526e446c615932787261745649787a694333366b4642677763344a59322f6974424f6d6d525a447a49584b6a50696753506845696c494568714f487952497841512b6d6e42426e3663596e464a7264694d766974486c6b783155447059325a415955514b574666314b5167626e7379614c4768566f4959494b4e4239754b714f5058526c726958704d4230766c2b5a6c56425450797854552f774145496771365733416f47523873434c5635494d2b6a553553746f6f74553461616c4c4f7a706a712b4b436a55387146487735684f4c64484956766c4836686d677a734d516a45524556716a7435534770714b6935427144424256474f4d4254344f6a466f3459685168363571474251416a4c76537a6d3247437430365343445256614351352f6567515847777146504d6c676e6a422f44676b6c41413830416957716e4674735534477342326f6d4d43614642546474463243426731566f30616738536c6653447151565467593969456547425634477677684a6f36734b49494e44767753366f6a706239364a6779536358514f496734714875564d6f3136636b4d554461383051777a536c73527a5568456f44383166433963685155564a62456f3666656736746a3147574531742b34733359734d6356353353526a524d5a536778474c6f5051796a47684e53714c31715657445557473376694a42366b4c70323734766a56715159644772787248667369706a7779585a6e616965594b6f76656e2b5964413755484141303471364e3353467075656e586f4872697734725050627a686c5241524f4254476255564f69574c48334945537a775157657851456e4b4775517878537871677343536369664568704955596b4f55457a315a68474e774a49756f7864413475506d6f62674f5347684b49484f694234334e4b4a757571394c6a67695167506d6b30534f364f6e4a516830414c393647707969455246417246466d484e5231477747525142526b57795577514b6d414b4252426f79414f6f61594a6d444a575146715551435a6d644142735541796f693156425245526170514b795a7150384534675451356355336c5a2f69673942396c4956647148776f32396e636a316d524c305a57367943784c6e42565870797766755157584a316568564d5248465677596d6c4345386457443979434f3477524d324c44484c6e3370535452796d4d336b5a48676757496e636c30305a6b733641784164303979494c53424e565a434e534d4167706c4858302f774470566b62654e575079517432686464714a705739456e4753424a3048694d7536695069445662334953436670424a346f4247426b4b30344d72414955474a56555a4f4349346c4c714d4a615348346f4e4144654e364b746748716c706e38557874765546674f3942497938326b44686769526f4c41396f536d314b5142675762486979574d4c6d5266686b67753161596955715266323571794e327a474853412b4c716f516e414d513579474b704f326e4c706c34545769433655684b4a44666d6862426a3248337175473375526f545434717a544e7348496f675a6f347737307570773363684b33644478616b713470586e412b416b387854336f4c4c563067394f5034496d512b717271433349416d5130387678513074583363454246324d587051706866306875654b6f6c4978424d6a5146796b6e6374584b7a77794343793575684b7238754e556f3357716846414f43713875457670494b61624e7049515847594f586971565075426336414e4c664c3235704e4d7267655277775a57394d53492f77433776356f45387a57474f5842513342694f48376c6649775a6851446971705345756e49494430334f7471464c5061327a4c56494d6e4d76706a5673636c57397a566767734e7145527068555a5a706d4938495a6c527249494a3853736e496b4673577a51435a7a4b75445271733474616f6e715268307533747a51585a3971614e345278466630344b76567a37304941544e554575323458756b42683856554c4e3175694d535031542b61754d5948704c75665a2b43574f336758302f547a5156364c6a566b507a375577746d5642546d4672387145514239523449577a45546b7a36766c32494d4e7a62776b4143543347675448302b45434a614365395833524578304467794a6c634c364b68416b5978344d55756a727a773756446575594669364175737770326f486a61416a515970784a7a375a64797246776b386972486f54675544544942635a71695149654c5a712b4a6b54315948425633495377774b4143454451443855776d515763736c65324141636345646359556950656775614a367069696b726366704f6c38556f754159307a52505534486167716a594e4a416a38557339734a48574b534743766845524e42564853774c356f4d3971307a79556b424c415656326c7167686b5441452f6832494b64594c76483979445148567050755771476d50656e426a31567834494f63397574502f53707245656b524a504661353352614c5662386535557a33647133526e7a4d754342547168344249674b7358726b4e4d2f43586f4d67727875674b3451507456575375786c536c666246426a6c75626b6571524941354b7762737a416c427a2b4b7445347353532f414b4454447041367631494a423542697a5a70394d496a716558387145492b594378774f6642584552785a38735546656b736661697a7a69495331525633524b524168682f46522b3956334a6a5658424170774642576975456f6734762f414b614a41354453697a56376b38544e67524667674d7273593169694c35464158626c3777717041512b6b7638436c6c754b6a2b6d517839716f4e4a6b7a796942372f774b533544574d414b6646562f66614a485861616c4e4d6e2b43614e794e3450474a4466486967746c4333416c6733687a782f6571784375765077736f484a4a50636c3179743179484a4244744c4476636b4879376b6e32397533534f574b53344932706839574842366c4e434a6b645242784b4379334351704b514c5a384279542b634e4e4a4f314b35716b77757944364b7437555765567339524d6366676736647563645a34684a4d796c6378706e3246596d767430577733484e585174586a4c5651557166324944636c50566f69454f6f524f525078484a572f6258542f414e4f546537356f584e744333706c4c484b71436f6257336a4455444c4455634f615578763235414352507954367075356c6b6a4b2f4b4272562f696741457a6a52766d6a463564416f425874504656655a636f506a77566b7270416379787a5157615a5244636c5a476477395559342b396c6e6a636d3767756f6264365a63796c46427030364b4679334641794c394e543755564173584c634b536c38316443314d41536c4f55706678444241534c39794e4c494272714d702b35566d4e77566e70626b7268496739524b724a4c7447584e41386f365a4d4d43465663747a4135793936757836795772395353423168797a5070696632494d4d34474d4f71764657783879594a684677445631723346727a415744633845386f634d6b474b4e69356338524d582f537249626636545849635662636e49435a69484c50415a4a5943354e6f452f7a45594f676f75524d636a4a75377356627974764b596f425474585274327051675463505548642f67695969684d51543259494d496c636d58616a657754517633414e49697734737465544d79496e4574386b4754376a545754756543635849334270442b35616f434a715248687952506c776c7159456842686c356a734a2f7343513753354d31756b396932796c7136387677554e3053384c6479444964726674526333416530565546754a4775546b48683831613135694c6341526d2f37554936684575426a6c77514c6269664c44342f67724b3454717272567a474c7154713051677a7378597350626774486c776a31414d56544551746e6e2b6f6c504b396270714c2f6d6730434c6d7371356533356f797441304241302b3954564552384e554f686e306f4b6a616942696f4977617054794d71663033355955564d72506d5630746b4849515865585a45615544313571706f534a446a3979726c74744a384c343039714b73577a4561744c45494c35445a45645a6a715046415774703472553759352f6b6b6a43594236515437307372596c307a684758506d673054736152706a2f754743796e613669542b6f30576d4d327038417263577178515972657a4c36497348465854322f536d4f6e7a5133384f4b302b58714e535877644365306952716c656c4538704e2b4877515757747447306571526e485056795655534731426a2b435347324f72574c326f413461645878567074693348706f325341796e474e532f44397170755859344677324b744d4e52494971712f4c31466d63593969424c312b78415269645a4f4c674a4a58375a65554249667136666b744d526268395059366b35526a6b326646426c6a35567743635154323846584f4669344e4a312f426c72704f674f48346f5332774e634f66376b47515768436c756d64667a566732386d71782f42577a3950426737312b53512b6e536d4f6b6c41783278694a524a48476e42504b4f6b6745694c6878774c66697367394d6c6762682f6c2f4e5766614573443078694b52782b4b44524735626a44797a54696e38327a466e6e52364d4f3733725043467350487856526e4b324b54464f78426362734139614f36654f36675934312b44724a634e75574246667056426a636367532f7076546b65614465626775502f414f33385649327264794c6d697a4e50555343487a5a61497836476d67732b33746a73644c48302b335071654a3752683249786c316e4257615a4f775155543246734541696f5077516e746f524230445372784942684c68376d56576f6745394a595a494b6a74686878342b3373466e687462647068497438566f6c435931476b6458552b72424d424b5434482f562b43444f4e6b4c7542665074577133434e4f6b4834684e5a7451456e5967746c78514d4247496c77514f4462446e53434d714a495274696f69442b314c50625470706b306c566f764136584c596f4e594e6e77365971756368416e5444397856427333597470774f4e457032323973784a6978693731785156334c346839467956614e4769653375723179576d4d644d4234586958423530346f786c764946726b57455976794b766a646e507147667a5156323462794a414742666f6a2b6145664e73394d7159766d6e6e67544e775034665a3074754e754d52355a314164354b4252496d7630717656722f4870566a61532b4d577237446d724a5474776b5a365777514a6274572f716a67712f7339766759734f314f626f457a52736b7475634c6b39446741437143323336625a3067546552474c66444e4d66543762654f353243537a78327436334c566175616a78563072323974787062314e6e7171676f48703179424c584c6a38704b6e3761557831537653623955714c5449626d35454d52414846736578574341596a5577507a2f61677852326c7353443677546c6b56644333626c4578414964615462474238586850357052743949424d6e59664e4253317550555953772f54524a4b64694c6630615a6b7857326778646c584b35624a50695a6b4645525a6b387263596a50676d74414748574d75716c4172444145394d582f4a41376552515679466948584741485a524a4b33626c51513459532b64565a434e794250544755526b552f6c536d34416267677a7932305a344433636c624347674d4d507a566e32392f5471597835657a71445a5869644f6d6e366a4949434c4d6f754e4d365664334c4a4a47544e4b45794d4f704d4e6a644f4d39422b70704f6e4f797633425463494668474d593850345a594b794e714262514158384c4b6d58703235422f2b34636679717362506366566446425453342f4a6b476b325a6a70413470504a764375696c50462b35515175577a706c4d73336258744e55336d334157646e4f6e69677144577953597a722b6d6f72334b7a564d6b394a785a2b617246376353494d376e54456c34725443357142315a487371675151713744676935506834634d31594a653553514f4c554e45476163376f4e4d4f53647a4d646675772f6570574a63686b6876796961594442417074434a4d5344334b754e79416a57426966355374586e6c67357049347158622b6b734a30796f3643727a69776350334a682f554f6f4161514f43714d7831546b35412f534b6e753571337a774270446a6c4b44494c514c63576c4f455762394b7a2b5274702f774453796f63483933354c52356a307835594a4a37754c314343714732416f4a6142775073367568614e7353656276386c6e4e324a6f35624c4e517a6b413563763841536775364d5a75337a5541732f77415863714937336352444379444c2b5a4b50554e314478323665386f4e6f38754936435255597856526e4b6d6b2f4243337672397a706c45527a72543237452f6e584a41454d3161666b6753586e7a617249585050664a796d6e6649776b42375a4966637a6b6646466b414e2b2b626745774e4f4876577130626b6d4d6f3547685757653975572b6f5263384d6c5250314356787a704f724238414f77494f6c47665831306648536c316d3258694930796f36343932376430314f65614e72632b57583153443851352b4b447033492b5a346746554a3747426252412f7a46305933357971533434554361563479704b33422f7742576c4262486462654f4d416639507978536e314331437252624e73666b7338376b394e41503949556c5a6a57514479504a4266483164354d41565a486578756951476f666a2b537947494272387346504c747861576f6744356f44317a637976466e36593455576d467373574c686b49787333413870414e786f6e386d333945714e3950464173724e3464577035446d732f6e627142725a6b54796c5261626f6d484558597044356b513271584f4f53436d33656e4f736f47446e4f54305775463649654e7970564d515973644e526b6a4c7a7066394a7758776b67746e654576446e5433705038416a4e537831634f43467556775072746d48366570565859536c63707751614c5577335548657161516a54707a5761597557394a703338314958704774582b434270693235314139315542354a596c362f71566f7667423534486b2f3571585957376759742f715156765a6a526e495538727a47444f6950543534327052302b394a50303364794e623150345743427a596d41774e654357354349443341306a6b2f42562f322b364d62787269564a62487776634c666d675954742f534171355848444d5237653243614733426730693947344b33376531566a55594855677a7974795055492f6832703941686950336f617470626b4e55366a394d332f5972507564744c773344582b4a425443396168502b6f4748486974417637576e6c6b4238337171626b6472636b424e7a795649324f7859316d442b486367366b664b70706c52434d72636a6f314677734e7533734c59654d6a715a7138316639785a6953307858336f4c66506a55313163542b61627a74554b456c6c5271686365514977397a6f656661774630486c6d674539784e2b70326a3733347068667579654c3049654f72696e6e6545616730537671417133375547616337684f71644d75615164556732416646644757334d38384b4e7857575552395750596778764d5249416638414e5a352b63486c70783756756a61386d476f36704d3577512b396d415874542f414e74416779477a75437a52644e474634556c444832375673382b3437434237564e56776d676274515a35576478494136522b4b49736277645550463763567145394447556d356b356f2b5a4b70316e6936436d657833736d45694b636d54575954747647394553517569356344516e49532f6d775755326232496d54326f4f6c35734c512f347454314247487854584e376274395174354d477a584e7479755734365a6d76616b4e7935636c6f627043446f472f4c495939797146792b53524749774b71454c68776558597234457a4c56483745416a4f344470493967674c6847565365373234706a476574356b747a56663231734350555836766967734f34632b3374324b534d35446f414a7878716b2b3074526157724257435248676c586a37596f4d3876756d72616c2f4e71556263455567546d5136306e63534d39414f50747853655a47596374386b4654627573664b616e36714b6556756a2f7941772f4876576d4269584c395030317a5436544546726a4448462f6d67713634427145354a7a433657566b664c42655571746e696845784d68554d676132474131466c58636a5078776b772b71504a4a4f65674755574f5859466e4276534f6c7877644270486e6b4d4a416a464c47356646415136547964784c70684e754b712b7933455a43506d6170494c52637653476b6b4d6155716c67424d752b6e2b624e47507039777965556e4f50425633746c646d414a53454150303151624a5168706258482f544c69717a5974334438316a743745515932706636705a653958574c456f7a4a3878332b423439694336466d4f726f776a3742576662433465756766424949796d657138503559347075713239582b614244746e3852484a4162655673536a4b7570577976584d492f4650616c657553796c2f4e6b4547595475774b4f715a7738505a6d56736e616c475043724275437249496f79436932646358776b5077545274357844484d716a6333394a625355736431654e496a33356a6b67324d4a7530612b3954584443515a5a696273792f774249376b75726d547951625a585953384943593768756c755a5751546f784a4666676d6d6145676c426f31524d61786f6b4e38414d49674d6665714e4c6874574b61566959366e6955466b72324f6f737364362f6f4e446945504a75474a3035413655492b6e47644e66504442416739523671695162504a61624677534454442f4846434f78414666324b794f3149384467494e4572456f7863484c42596274753644554668576d41576f526c47686b533257536731616131515a34427753666b365979427150334a3945514337593831566f74764b74496f466a505351415134397932655a434563427a71736d694d4b5a346c73657857796e62745342625652425a6f424772482b4a4b4e41484a4a397a6169532b413434465335764e7141356c586733347379435046336a54386b4c73714544677376334d6645774e46564b2f71646b4737554337344d6e6a4b46497964795175594e773152554a6f332b71764e42766e516c696b46795949306e39764656526d5a30656854776a41567a4b43306b534a705438306d6e553561707855323841474d692f483234712f5862413643346276425159353755696d4156677352464b6b746d6e4e377a493077695737316c6e636d5177694b5931716632494c504e426345734650754c45525269337853786c45394a4743615671784d676c6e7a624c6767722b3646787a555052475574636742377972644e6744456b713642744142716f4b49576d727142494f444b584a7a6c4d6357713161356535573678455662717756416d383334494e41426d785068414a3571775230306973317135474d65645848616e387a543335634167736b4e4e5a562b615837614a724c78637662464a472f6f44346f77766e5533306e675543584e764356514d654b6f6e736f6c70437461426168656a413450564c432f454d4d765a30464550546742714c75726f375a6d316a6e486d6a643373782f77415a445955514f34766d5a655135636b48516847446451715062424454587244386172474c317874595a387561726e656c6757787951614c6a77426356616d44557a4b705039585038414a5a34795946334d68696358545737305a686d456667676155582f6c524e734836695432347058387a44427531474e6d5262547a514c4f3163424d55766c7a786e34522b6c61664c6e714841424f625431515a667434394d67353159756e466d6e54584d636c70466f2f3841556f6a41516934422f49494b4f6b46733270326f536a4669414372684154367330686934366368547443437144413657663449786849487041526849457366667a566f49424177514a4c56506f774977536d506d56417278567041786a58566a7943575a6c414f513735494b2f4c7053497037316159672b4e6e5378424171532f5a785238786a716b656e69676b4c4272326535554453656f5a353969736e4d7867626369432f444d5a4f71586e4961517a6f4b70796d4b4450696f51526a6c2b4b7674326e4857514f655a3975354d384975666478515a6d3156656f7a5767576d62696d30354175414d632b784e4b516d353449456a4b5551777a5451764164365756324e79674948486c2b395a6a4f4d52714f422f4435494e6b37674557786f4f3130497a45515837753156526e614571415537364b793541525050476943536b49394d637171727a4a534845417130504b6e374d456869597678716772776a6c5539367631796b4879564c67504a75715236527954616951514b6b6f4a356b6168745842584351693961454d46544b5a6f496a39365275707378376b463433416964514479412b4b4d72734a54694836635a4c4e4b4a6b53523830546169316355463757704679422b784f42626b48677a4841484a6c674d6f676b7468675544754978625348374547364f36486867456e6d77784d583068553634334333684b5533535974546d6336666d67304735704c6b557856596d4a6b4d503271364e79336a494f6e684f45695234614d41677a77615438305a524d5141635661396e4967596a33715047534450646a6e77516c435830344d746342454370635973717a617558422f544e43654b436b52647a6b3155737734446b486d724a4152636d565879346856334a435a4c4942626c6e462b48556b382f71596e6970636567774a3559494342684c544c484a415a584463774b61626541593865436b644c63777242554d61463046506d36744a7a44753668754574427a714875567a516c556d767479554671453842315a6c426e4d6937635258745436336b787743753871454f6b45756557436f6e444636382b7841597445564c4631634a51474d7668697143415137684a4f4c4455372f7451614a334936527847464743486d5630784b797558315356746f68385456426f6b49536a58465645436d6c75664e4178317939716f537545737942685a4573435655324f6d715969514c7637464c467a795147467a50464f4a6959645669726f67456f4a30345471704b6f53683579357153456e3152514d634270775336706e74794b72684536612b35586d42627077396e51447a5445486741367175585a6d75436252356845465a4f3377716779362b7054533457673243427a346f54737871493438304759776c4f5134444657697a496c6d5a626264716d43614e6778476f6c79334e42674e687a675650494d61456448466445786b3356543971575145714d3478466662346f4d6b625250544c354b713541687336653562644c5546466c7543516c31414769425977444d456b72594d684e473557756165635a48424257776473384854572b6f766767625a497172764c5a754b4249326e714b393645724770316147707835497962484e416868434959784c2f6968486132323145454a6e497a50597043514a396945435273687152565a6a68394b766e496e773039766b6c494d744e4770584e426c4e726d3965394e7047484a57792f47716b34556f676f6b3258596c6e413547696331785445676f4b4e57516f45524b55533456756b456b59664a54546d4b3969433678366e6374387775705a39577458443142697544355a4c6e3264445159795a423630536a64384a78576565326a71365931342f6b754462767a74556569366c6a31576a544665614454633270495a2f6a6838466e6c73784c78426441614c6a63536a6f4561343969446d52324548374171767459423258584d435a6451492f59717947365751636b37534f5170676d6c59672b485974386263596e6b713541486b6778437a426a78554e6f4e6b46706a46775748763756446145513069376f4d4a3238545835495332356c7a3572635965354962656c42686e5934705074797a6a4e64487939654f43726e5a6c7846454744794368356461726635544d716f326a6d6779697a79536d44443575746e6c6e7553454d61596c426c304f4b59664e43567073467530634b6f584c555842784b44426f50306f2b5778624a62764a69434f6145625966534b6f4d65695842534e67354c6f65585675394453424638304753466c2f454f394d4e714a666b74635177424651556f44534c494d76327842344a2f74347837566f30594f686f30747851557873634237424d62635a43727132324a4651792b6c4258473370726c2b4b5a73364d7244707952706f51624975372f414c757848547147745270777049672f776a424b4c7430665651636b4673684c54704b51645051545833704a2f7742544e7a386b4e424965582b34494c74496f772f637045746b684767665766336f5753644b427749366d347057306b78793971706a4e76465655585a3444414948467952774f46466245786f357037657a71694c7977475363423266466d6b79423465575158716f317378304f33755351646e6b4752362b374f694268473341744930566b546279717972304365426f726a745452794b38304361625461704277376532614a4663644c356469614f336c422b484e4a4c62536c4852466858322f6367516153656b344b7766307a6f4e5078565a734855596c2b316c58486247503179506167314335456a6745763349314d42583953706c4334616b684c6f6b3448745242644863514c76306976612f464e432b44496b4f514d3156473262673566784a34577a4848486a4642663575706f765433704a3771555270794253414f6361383037526a30732b5a6b677238786e34356f616a707156624969585658547956496e6a6933747951584355434849544e4763576f4f33414c4d6146383038626f4343343234546c553149436b596143633156357572704e526b6d382f6a374149476c634c45466d564e7a56713174685139366875485630444253555a555046416e55376b6466344a346776314249626477304c4a544f37456166696775304d4b5a6c71594a626875524c51442f74516a4b37623658444e7752387a52557543656b6c41326938427164755053684b5532356f7a76796b384e522b64466e63563549486c4d2f53377059696369426b634d6c5a43656d70772b6c616a705054497677515a6f624f656c79585168453445594b3656774f4e524c63496c4c4b2b4736582f33494b4a774d63716354564e716a5455374a70334844634d2b43417652796438714944517554676c6b595377625646535533385474696e49746870596b594f4d304268435568526d50745244794c736a3053306a69366b355779356d584b73456f7350306a4a416c3278654150395155565174456e544f59647647796155764c78444256436335687935682b6c6b445232344f46336e32685732784d323370552b384932777a305a38654c49777536496d494c384f4b4173525767683851723477474a503570524b48306774324b696432656b6d6862336f4c35526247574f545a7165556168366e34724d623070793766682b6155473541686f677848774f61432b635a3847545737686f3342552b5a4c485334504e567976796764576d76504c397144596237394a43716c7569344f67313979706c66755072464379467a584b4f6d524b43323459334b73797338746e426f4736654b7a466a4853547a556c4b49784a6c4c446b67764552624848765147336a4f6b693272416a69736f6831534553537272646966696a45767a4b417832304945694570633833554e674f3471587750425877746b594a6f327a4b4c78694367724e6d474e4471706878532b584541527a2b43752b335947424c4a4a62655249424a772b4b4367376533726149772b4a35497449502b6f4c52477a48553242616a386b3874744750315a31366b43516a4b5557444f6d2b336c48784d4f5153796b63416639536b72706a2f4d676b72656b4e583556374542626761536551566b4e772f48562b434572737763414f6141333578647939616469547a514f724c676b753335573846686c764c6b6a6f694b494f70486367734133556a432b4447556d6f4f617a456c362f702b4b7568714552306b687543427a656a4770684539716e6d43645445436e3071754c7548485a334b4e496775522b534147656e3570764f747a66586765435952307944436850636b6e4f4570645261683559494c596e5634526e324b7a79376d6f506763316d383459676a677039356930774b38554458624e79544345744a72584d42562f5a5a2b6654735448645341665548475a554f34424942367064694143313565457959354964524854497668795a45586952574f507954776762674c42425362392b324e586d796d66437877516e756f7a6c317671373856654e764f6a74676d4732494c676f4d6633635a484167666971726c304578456172664862783851486677375530496a765159493270334a6444735533327367776b61484c484264474d7630346536714a76363269634d7a775159694f6e54476e344a39645138447a504661444b32486c4a6d514d725146525164794132393434455a52595959714463516c68624a4f537046797a5453424850484e49486a6d342b5344544f35636a30366678437a793355375a30787336766774747263426e716a35344f514344464464334772747a2b4375687572306947326a6a2b5a7171323575794b41733336566d6e76705738496b74376b46306a7563504a4566384156452b31464e463258304e326c5a492b71334d6f6d50617234623254426937346e73514f4c4679525945784a44597573356a66674b66556449315a7262397a4770397663696234384f4c5662682b3142696c35325963696d4b6e566d37386c734d34796b2f4c346f654b6a592f42426731456451637950795347373168776346756e71656b585a5a70575137303973554657757a6238556176786f70447970513173584b7468746a526d2f4e58573452746a79382f67677169495a41744c4a56796355694671774c4b65454538506b6753642f794d58593563305a5853494f785a6e66735268496e4853784c6f577847496c4357457a78514d42475564637138497131374d75672b4a5a424f4a31534649696e74374d674a526a4d50586d67325274325a436f446c565468626a485462446b35716e7a6265725471447177474c4d43676d6d3745536b5a524a77436b4c6c77394e41556b624a4d5834465356733278726c6d67766e4f55427a776458433550426c6a7458446266554b4e32713257395936675750763967673047567a4e793377644b6441476d516674584d753771374d796a35704c6b4769744d3541796b546779446f524d635741726b732b4a314e7a56666d366e65675a7578305a587444617167444a416459385179514e2b334f55744f584c4653784f4e77616f77494f466353675961484d777a566967633344414f6378774e454c5a2f5845416857512f7067784b45705641594f676d754677413669416543686a45534163732b6168446c2f77423649675a6342484e41544d47556a4c43493675394e72796957487856556f77495a7877532f62314a4831494c5457723573704f576b506936726c73373071514947576f6c4c396c7542495063694751566a64434d6752457334795477334d7a3074784b497362697a547a493471536863474551667a376b476557364938594f6f6c2b6b4568616650754f523865536d766457785333412f4e5633626d364a3079416636692b4343345870617452647a3731504f69395373385958706e53493970775767574c68715952377355413658614a6475355157354145394c4570694a51592b5571645167656f4d4167736c422f46454a4e444e2f5441447678577332714f634d613470436441644269387963593670787879696a44637961734351634f4b326936514b784a2f4e45336f4f386f36546967793237385a674349507556327545756c6a2b31585734417836574935634554743454786363733046416a616c53524e65344b43335a6a457339565a396a624e4d5756663246754e515344326f4638766234365252553769397347303364636a77696d7537562b73756b2b786b32765335514a622b30754237597652504f654863683061425a4f6f6949374353727a744d6144354b57684b4e4a5265525059675157376338497a392b6131513068686c68682b4b53554c6e3077493756566f76442b56734367316e706b6570515849366855313469697a697a64306e58484c4a5270366178705833494e735a524f485a376c554a52646e7756417461644a6c52386b396f57445345716f4c5349536f2f616c46693141687a4750346f524550316470375069733979784355336b4865714336384c635435594c356d5153746162544e7958314c4d594355674939504641516a4547524e522b4b4237393244734d585a46346967466333516e74656d4f722b5a48554967514a39794456616749774967574b477164723669686274794e63423855303548572b4d41775156784559514a4c752b6141675a50546e31424d38677a3561717044647547445665726a7477514453636a326e6746634954705634636142566d4554787171355753596d42714437596f4e4679333948505671344255796952715036697a386b48304854476c4f5a526a636964556a772b4b4235774553644f58346f434d6e707756496c4f4541495a56504e57796e635a4242475563716b2b394a355735662b6d4844392f374651626d344961446c755655747a633769325a4545786c382f33494e63345877645231446c71634a4a32643344723167686e4e4143716a764e33443679326e394f4a517437322f634936537a4e68373047356a523855624559675663487337466d68657536547044316f4345384c3979706b4f6f2f42427446323249745832346673564d39785969305a79303531444c5035354236677144764730687665485a42724737323979526a43576f712b33636a4e694d4d714c6e6a314a695470464333675a77726f3335546a7159416e446747516244433261677047746d4f4a64316a74376d563039464b562f6d564d3731794d694446693644666f36756c56526935425a7a2b6c316c46357a696c463754315475365144544e3047743665436850464c6f4144414572506276504b702f6170357475495a704d4b6d546f4e7774616d4e474e436b6c44515177444c464357716b51512f4869673177644d415a6648323730473633636843587437316463395275526a534d5a6475506175654e716276544946362f7556634c46304d4a5941393451644f47397553363369512b6f716e7a2f4e69596b41634e50347250396d41573673653470764c6943516456454668495a34685669366458674947585569412f68422f4a4e396e49793653334e425730332f3979534a4f6f6139584e61503764656738705867527756557474656a704572735a4e6b504565314252475452706c6772726b6f6b6169324e4b354b70333642785247307479637a4937773243426f796a4d6c39494a474f5373466d457949655942526e694f436b646e62746e715367576f4f484c597479515877326351574e7a4436744b4932554a5270666f2b656c5a496a6253385a756d4a2f53554944307746345737383866624642664c302b64577578596d6c4158546e6145435564546873416c684c62694f6d314738414d6972423532454c4d757245794c6642425663325733486a2f4c38552f6b62614c43422f334a33754f346a555a4a477648477a713579514e487977664646766d7242636a6144366d2f774250465974463169497748663841676e473233475055415034584344562f6362444f626f37346b49523356695130784950486d7149577842764d4770384e5563466a6c474676716a467375584e42314a7a74794f7159443847564e792f4f67674b5938466c3836414d6738755472544536574d53394f3671434863337868464537693949617073334a4e35346777596b49796e4351414d615037464249584c633669522f4a576d63654e506267736372323274366951424b4a616d724e5752395232677a64763455445275487a52716652347639536769546a2b3153487246694a30774a4c2b49365576397a684d562f3841626b675335667532336e47477158775966697168366a6672707339504f697431536d576871342b4574386c4c397162665552692b534177334e7937536476527a31597134577a63367973384c4e782b6764794d2f50734e4671504c36754b44526f67434759534874564e5544565433724631455070615234596f69463255544671494e746d416c71776f457767496b425a6f77456a314e334b34516a34704455334e41784550715575516a4b6b51343977535367596c6d594a444942744c55356f444332414730786673533359444b49662b474c4a4c6c3469576b674e3765324b49763642714d55436557524e325469316f6d34464d6b3039305a4234357172376d524c78696537464271387a5332754d542f70397168575133596a3434675a2b454c4d4e314f54523075364d4a6d5a714b6330476a3736335455482f77424c4b543346676e544b4c3847442f6771784844494776465047324d5334506367704d3744506f2b43726c75647646695166647757775174784c45314859683539714d546755476533367459776552702b6e4e5866665248306e3239753158513363534f6b4376384f66424d6230704268456330464133416b37524b6333324f4e4642633473416d6754634a624a416a787862484e4a636b2b47574e453868646b48697750302b3342566a376a4136542f4547515a4c776a634c5442344a52745a5951647543316d3765465a74514f6c6a666e46425244625875786b6f3263694f65664e64416561776f484f61726c626d372f4642686e73626f6930574964585132313232434973374f724435344f6f454d6c4d376f4e53415070514c627433512f684770474e676c77536c653663547150344a784932385437647142496952493148556a4f31724f715a47437076613341745541543679374e6b67614d5154316a3243704d3473376876307173337a4b646356546472345931355a6f4e55627469444755763556505073534c4d4e50307248354e746d303134717978474536694a63653542736e6368346843504a3157486d4e544d4f5837616f7874322f77424b744f6c684559344d6751304f714c416e69704f37454279516578565373754f6d6b584643712f4b695975613139696731676a48414e3856623573592b4b554232726e6a62527544724e443764794932573275537032494e647a645737636e38794c74334b5233382f4447515966566b79712f742b3061737a4757487452504459624f52654d795478514c506536772b6f64786f6f4c6c737878397930665937534830766b6f6654396f6351582f684b43754458584c4f726457687a4778453138584a4a43786132377974795037555958702f564a425a397a4368386b59657a4b7134504d71597350694f3958457a64697a6a6d6b48554e4a50387a6c426e7633694769492f7743705333764c6d63644f4137566359786d4f6d58376b545a745442366b412b3769616b5038416d71376e713173426953546d50623845307246676b566b344f726b6a3976747a4455514166714a7251666d67712b39323537585a573237316768346e503279514777326b2f77434c675762357153394c6a62426c42774f483755466875324834452f5637464a4b344741745a47766573306473425273316f6e62614c787079515553774f665a784363414877707264753347684c4644546b38513263654343364d54475431487755456d44346e4a56526757627a436d46725830534a39325a51547a776150583264516277526c6f465342586b7338746e6142414c2f41494952327533746b474a783730477547362b6b7736685874344b793375444b50342f7357614678764333414d6c4d744557796167356f4e55373752716376656539494a327845735144787757654d645959736b6874517a55425046426f38754d6e3079426c792f464a4859796d4b79422f42566d334548704e4d47623855625a415069772b66747751615937614e74794371626c754d616b314f43614e324a6c553953756e4550584642694e694573413641323976567045513478344f744e344e466f3534794379584c4d357635614379653074696b61506d6847785a6d5848426e4b786933757064417977366d546e5937675953456639546f4e634e6e61457a4579654a4136754256304e72434d5048453559726c7973476b7053512b306937676d7066484a42304259484c327a526c62302b355937514e73735a417363507a56336d5244317077515874332f73546d7a47585a3853714933437a66764b736863456a71494a515356754d51343854314b7a7a6847524d6e784f6c57584a536c6c6a7a7171347350454b6e35494b376f45545353486c6779466172644778624459456e424c4c616264756b6c7a547437416771467133474749783730444f4949495630747645426f73714c327a6b4a5577515a54754449394f4964474d6753354442585432325155387471484a416d6a526d2f7742536b4139595944366a6d7254746464545438565a354a4663387554494b705175414e37555477733341415a3435317754396f4a4c394b7345756970772f464167734358562f377330747945594272684849444e5a39316375476b485a766d716256696276504242624b39434a3652324549573576535246654b3257746f5a6a534b63516d6e5a6a454f7a537934446d676f6a4f526155574d526a775a4a4856345934354a3949464934665075527479387565734f77316436424a656d796656715938427a565a32586c794d73572b7246317438794177532b5a475435634546446b523652315a3549472f64695066376c61664b4d71682f6d704b516341554761436a377163343046573969727a7553667050636b684b4d423159354e7757693161746b6955617669677247356e636930346e694574752b3353596d754b30546d5449306365474c4b6e5763673955466e335138476b7552776f6a726a4b4c6b55795649424966536156632f6b6b6d4c674c6839587751585349497055705933674b45454b6f65592b5235666970616954526d484242717433496c39464862556d6a716e554269566d307a62436e3149774c4f775a304674793043655874386c523563573044444630356d5152455a354b733352457566676768442b324b6278567a535737304a566c6b33657261547269507751436b705648775652684f5a657062344c5243344a34664a434677754e474a5069515a50745a7a6c556a6936736a744a755a54495938466f47384f71554a3451786f727a6467576a52426a5070346e4853434b6e76516c74345241397835382b6131584137794456485477556a6274536c71597448324e4547576362594852463543686b4b5970524b6f4a6f51617252636a6263434950506d714a5230796f4b486967496c71365942754b5936706c3578626d71787a516c4955465848654f354178345a3563796a477850776c695737456b5a39566670546747547850737941416d4d583539697550384155384a5a306f68714655736f67412b7a6f4645664c71616a696865744577596e784978412b6f5a713370617455474f4f3366453950755477324a493663736a6b7266324d6a4e745242425a4258396f5267634656397663615536646932526c474c415a6435567669654f54596f4f5a4b425a7973303479666b7534597530753556456177424a7537346f4f5447453676374d7433307372593278467a4b6f51304632487336424f6d524934444647516363782b6e682b61733051702f37654b42684630476546677a4a427143557874644f6a50386c6262754e3443442f6f516e6663304663367367723873427739667a537945524c39587a567875696550616a62754d4f7a4e424e426c45567269706336515061755349634776765333683566544161754c49464a484e2b43684a4642514549314e4d4f4b616352347546454352456a31527938534a6a5553664a57774c482b5a427851634d304763327a55555666564c4b6e466c746a4f464971727a6e364e4c66366b4652743668376b42456a48457179427759313745534976544c356f454144767739714a3451476c7a7855675153347254464d2b764b714369556e6f334a5479346b7343357a56383762385754364c624d7769324243436964734277565835494d616e2b56615462674138753148706941582b43436f67357044487144594c526376797473307171767a4935592f4241734247524f6b6451546e7739496f6c6a4d444a4e486a6b2b4b436d3562594273332f41476f4350772b53304751505344586d715a6e463851677266553553366d787170714e6173704846735279346f4c584e766f594f61767a554f356d66466c385643486f6f5251455578315a6f466c654a69342f4e5047345772676b387572516f55326a364d536765456f416b44677174594c384d315a434167613873315a41527034644a515935436d7169614165596a6c7957746f7842674269717a6138735a64794373514a66356f776932424b594543725a716178516b596f417a30344b7336672b6a46584e476f7a5141637445746d676f6c62497777346f516a6f4c436f4b304d5467704a674b654c6a6b36444e47476b56715564454232386c6343314f535179417045386d77515a726c755143515a676479316139485352587456594c47754b436f676b397952715657304f66433334713444492f7451633752356c54513845703446646252616b4f76466c524b30486f7944446d7753454756437470747866736f34542b57495678515968624a4c4a6f325366466c6b745647494b726e4566546878514a626e4b307842572b7836717736316a68434f4a565a44485167394a62765737775630725a4977586c3763726b5a59303979365733395575574a6466566c6967365537556858414b715732635557697a764c562b574f50746d723763492b4b4f4f61446e5432394e4f615765327742585138747a554b616138655063673573724c6c676c466d5664564b4c7165572f554b4a664a4c6735356f4f574c524e557475304d56316a5a63366c5362444f5367776d323941614a5a5744466235783471734236494d417447516364694273506a6a376642627944703658644b522b72412b3530474479496970346f4349616936456f394a6c6a5769716c62416a7a515939415a7166696747487a576d56706a564a4b30573755464a344842307359655869725a42777878434f6c334a7167714134595a6533596a52744b7330366d624a5356736e42425539486b6a6c2b536377717a393658546b554374484841684b66677274414a4a63456c4c355a6241476c4f5341654b7055632b4668376b34446967397948573761537944584d3277474d735567694a56426f63456f735a75503563555977634f65364b433379394c455a6f556a563949344b655a4833664a53476d65496366704f434274445a34383041476b777835705142434c517048322b53427353616e437143346733537a684c4b79444f70644a3562306b7050525454586d67737457346954443969486c463341482b6e6c676f4e45614d5839733054636a476b59666d67726b43504858732b53577a43514436534935367171375741475a563635547764754837304544696c514f7a4656364a51673951436550745258784661767964474a6763512b4b444a314754695a456e6f356f6a6f75526a6f676176385672614570474d4967667154526a453146485156694d6a454e546d554247376c6a2f41444b2f52454d356368303068475142392f424252477947615a6250742b61655679467677752f347062733767746a554e51776b587753314d656b7477515661684950696d3179656a675a71615270366a586e52487a51326746796755536d314756787633474d73787756582f465579487438302b50684e4544784d79476c694f434f6a7a4a7331423855414978446b6b4a4958596f47757872786c77564d2f4d6c34636c594a323956437a346e6d704737624d71454d677130546e456a53396171794e69626653473470346271416350524b62306142787851584462546c574c45636b38646b4964546d58344c4c4f394b492f706b4e6a334b7a7a626d455430356f4e4274323471735348552f59645353475054696a4c554f7247546f41304772346c4445615844766b6c6a45786430344d7373496f486c35636e4166764656564c61516655506345786c4e757244696741594634444c763755444777415062486d706f413849717049366f734d2f6a2b53686d664537354d67497469514773394c35495373327a30526e4a4d4953754f324874676c4f33494e53675557375a64704838454c5a6a4877344258477a6f34455a716b3264585543772b534253576b484f4f53553349654970355778676665725036514963494d6573584b52644555496241347138794563426a6971704f42496832484a426f455967503831594c6b585945555753524e70704559305a58516c44532b6c42624b3545442f346b6b3774764d66424e4334347844636c594c6b58654e666767786d63617438767753614449462f384161756762304945445333447457532f637a7a7a514b49665166447851387564756b4f4b3077755034414470342f424c726c49566941667137454344554153396543734a6c634f443845736a49314c594a6259766d54516f42376b466a6457446e344974463350737949416b4d5568315263437141613445504b6c65474346795549764d5662346f4e3074674572475161583833424176336349454273676144696d2b376a4d6547556531474675444e493134636c623976624c564438304655627a436e6470553879552f4246767856734c4e487a55306753306f4569544c74474b5179306e4434344b77574e446d4e48786669694945536330474e55474f374f672b574b4276454857315062327174576d4f72717a6f6c6e61747847715561494b7a6563413443665035497876512f5458676d75574e7349734a4544683271614e744439543855466b5a786b61436f7956737934626b71504c735447715a6d4f4c497973624349465a6b6f47593434786f704f4d57496f716f6558492f7742474e657a483371325549366635632f62676761453277444d6c6a754a484d6830336c74584e6b766c3164745135494162726e5547646d727755463075343775354e47455a4477684e6e356373686b677165654571684c63674a677845637663727a4576534e577a7752455439497079515a34374c566a54325a4d4e6e677a534934305772514258452f6b6a3549314279677a2f59616d314d56504b387477616d5748642b4330776948306b756c496a7141483755476137646e61366f3274517a6c7757632b6f3348693844474a5055574f43364768736335422b785035386f52307878347452427a34656f66704570485677576a376f6b4546366b3434396a4b3358496e72724c3344344a5431654f44555156472b5a445445556171534f7563744a425639753147457152717252637a6b44376b465168645a6e4141785675694c4e4b6e4c696a4b34306442422f77424f50656b6e5a4a6a79504641445945655978357052474f68744e45336c6a554f474861726f4d394b494d336b57726b68306e44444257537336513042376c664e35525a3335724c4b78656b414464595056735542454f4937526769527161545556634c4d6e4a4d6e79576d4675576b505549462b33484971753844456b31714f3738317076663078686a6746696c437a4d3670416b6f4b3451636e56484376556e7467414e5442504c52496a5451646e44325a4b6265755764654343364a6848715a3670355859516336617633465553736e776a4166556b467539474f6b6c772f754344667174737762696d6a4f4664482b6c6376515a50716b64556670795a57516a346545757233494e2f54454f50324b7253306d4979575746787074776f725958645571436f6f676556754a4c4e584a475a6930516363306b7256365874696c68626b504550666945446d3572366f7770676b6c4735494e45565074676a4b7669636a4c7657714534696f506367354564746669616d6879616931735434774d4b5a4c555271715a73446b715a36586f53666b6771466e566b506b6a396d5a4669424873546559434f57446355646255474343663279467a4536577a5448303461656d35537654692f4a4c435a643370772f616e4e79496152634f4546427343325a526a51444138315843456a4b73792b62344b2b4534306a7850765230514c315156546e503668485363385753366f73646465664a4e4f79342f706c354b6955626b6134636b466775524868702b6d6d4b547a3453654c48696b68617578597543334e613764786f677a4651676c714c78464b487842576b456e4a516a4d437077524230422f676772455a584f494b42614a306b6d584e5666643235456159334b635252552f6375644d595566706356346f4e356c45434c31314675354c4f414c6142684967724235346b42694b5556336e6167425642724e6a5845315948686a324c4c396a4d764d6b6a386b6b504d444f31484d6c6242794a645831426933773745412b786869612f742b4b55656d526a4c6f4e566635305948705939714d626a5563446c6b677a4830374553755350775769335a3041526753414b5078645847426c55533542436f6255515267554675674d41545838457031447779714d4d30766c615841782b436d6c2f2f414e586767535569517a6e745365575a68346b766d36736b5363496b6e6e67456b727062774545494c49536b4d4a314c4b6d555a3165556e4743767474704d75373370664e4f746f316441756e6469734c6a6a6e6b5574773738436c79496268463339364d3773674f493452552b386d4830677432565a4254356d356b5776534c746a2b48596c6a4f35684e316f47364d6f5049633150754f4e43542b31426e68627554704f636b766b54673572333156347579446b3855346b59756778694d34395564555333302b7a4b7933757032704158646256366d637574554c6d73694c4d4d692b50596d463252447551787737454332393449784268714c34457251626d76784b6d5533632b7753536c48456b4f6730526575672b2f6d674c6374546b7478564975527270716949694a615264304479737a49655237774542614f63695554434a726b6634717172793477384a5076516159776f2b716e506970584f537833446375644d506d70477a6436745579645845304859673147344a4478456469556b4d586b334e554347715130794c634644626c4c45386b4630504c6d3842654a2f3039537175656c32356e707645633152636a637456694b4b762b7161436f4b4336573075415676672f70306765354357317667644634466747456f7175415a67376670576753455257544f50456753587032356c2f7742654a354e6e775548706c324f4e776c2f3068517931456e7a535277347147556868654966496375614354394c6c477575342f774371517a514e7352696456776a546957554d376b5a4856646e4d78796b632f6369497975556c494e774b41776a4c4858496858694d706e56716f7a64366b5a527476474f4b597946522f757078356f42414e454f654b6b376b4b47544f666b684d4671425a4c6d3045735979626b3644554c6c7163714842463762754471412b61795734516863476d445968614c66384e4f4d6b466a375a2b73764b486379542f787a34485568473348706c694d65315853324975683479442b3746426b6e626757366943564231747175562b6c364b332b3333797a53746876314a6265777556743367444565475342596d3345735a46674661445a4a7154306c54374a714e3239696f6e746a456d575251576d646d52316c77433965537138797861694a774c6a4a71392b434d496b5a66377561677369493036634d4f5859676b744664424a703074522b5365647a2b4a6f736c455366704e636b5a32704164646f742f4550326f4b7a47422f3638473751436c4475476d43427a55386d7743663649504e56773274754c53455742717735494c64453853527046547a37564a626d336757374258464747777436792b6f435375487073497553653369677a77395368435141744d5064337130376f6d5868706d74423255535a567830705274634f4551676f387068724c4544447654543255547a59384d4d31643554754d68774b54547a506150785155485a7664317a4e473742335a71767970474c76692f7743533255694f4a48347034755179446e48564354456c77636b4c65366b4b524a46614c6f4862786c4c71635546654255386a545154722f4c566b4651766b6549305a4f4c38343458595636644f61663758554b794c64696c766262654a722f757a514137363149744f356737644a4474776f6a62755175504d592b324c7132503274754f6b45592b353158657632764c4d6f45476e6367706c6632397278534566394a542f65376565426668306b6539316e6c7570673659345a4a5a62753572713644544f364a306945734c567149314d48373356634e5538763270325a784a752b69444a636e61744839497a427a50746d6d73626d795869644d586f586d53744e7552746c394d543231373049364c674f7352643639507951473775724567346c416c756453466e6a4f794b7a387331794f433143466744554c63557372657a776c6f674f47626f4b597a32754a4d52325052757857517657634958716a4c503470667464704d6a52496539496653704e71695831646e7a51577833637064496b533774374d6e4e305841536273524950395a5659395075773850303465452f4a55334e6c6331764967794a39775162446338754f6d4d744e4b6c5a72384d544f3763616d464651495461546875483746645a32313237344a654839636e2b43424a435541543573752b744544593145796a75744a39736c716a44635248566374736351414379736a626e4c7869425963506e326f4d3969334947743757504634553062516b65707056576f44364445414868386c4a52304470474b426649746c346b5938464245517777556a4945786c786458545a2b6a324b4252474e7559424749643067484a515844517946527a2f414457574e323545456968664534615547674f5377456449385135385656397137434f4b7374584a414835756d6c594f524c74394b43694f304f71704d754753307773534746414d6b4147474a37536c68664455713374775157536e7537514969415238316d6c7674304b2b56542b5a61355834475056347547515350485654743969677a6e663370556c5a4e4d6e6233724c6476334a7948394c5344776c7143364275306345667556635a5071304e2b6c6b4751334a6e41474f515332376b324436774934356b72617848526f7142787155386f534565714a596678494d6372346a53494c48444b71667a4c682f36637665472f4a587775573433617730782f566a2b3557783951326a66316a4b484e332b5344483539384579306e4a6f2f4e43503365456f39504173744a3953327454486353414e413866324b713536765a4a63546c4a734f6c6e4b42394d70556b47566372637034596a424b505649474a3667493439574953783955744d336d4f6638413661425a324c3067305656356535685356753433494c5662395868627a622f5369505865706f526e543673666736437145546272634532476b76456642587a3346702b6d55343864536b5057784b5651585063365162713366723164347751577833384e42366a37736b68333969522f71545a755372304356596d6e38724b3862477a4d4d587167726e3668737046395a4f5868397665712f76384162345777503969732f74396d6b7030413566424e355669305878376b4641337074746f7a7a5a504c64334a554557343846593459526941427879524245676459706a774b444a633879345842623663466d467263584234705679646465454932376a6e68306a6d6d467141625251356f4f5362467751784c4444715634312f715063756762634a436b6e4876504e562f6150675547667a4c686f2f537170796e49644475526a77576f374c58395a483039504e482b3379384d4c6e53506967775474516a307a636b385a56626974454c647254486a482b4a6d545864694e52314f7168744e6e345a514c746a675432494e5478384f747138585358504c49724a7756544861324431614c6e2b715467667552454c647375497352687a51453272446a724935667656396e6157323662706c6d30736c6d30366964635151532f5a3371437846715239756144524f3231515269736c7a55356d4136306d7a7171324c6f513250415a5975677832345475457930436d43754e6d347830686d78576f57434a4842384d636c624857483136574f4e654344434e52476d5171565a497444716f726a49456b434c3936716e724561783148684a416a673456415531516b37684c434e78395577724d415a5a46413979356174697343522f436d4e32423659786f4238316e675a4f596e45664657326a6342656d6e6b677231526b49687378376c726847324b69332b3555787554673267426c5863334e35744d475038414d6733446132395477484239565570746558566f724e35393235576e742b4362575863397659677442455234584836557075306378444b6762324c4d2f61556264793363426a6d674e446b41364d656f74523875394947784a3979476b7949447458484e415448584c70705279716276703979354e376b686b75684733624231527a44636d516e4a6d43446d51394c41716268705530547874365270696165356264426e4569645146514c4a427870376b46476b79446b3077532b575a46346c6d34386c722b3169414b5537585246766b677a364c67786e4a2f6b7134573738762b6f57375674726b715a784269547a397941327053637866426161477678344c4f4c4a6b58686a562b6634725461684b49424e45464d2b6f746d79796d336378485a52645054644e736d3331484f7249546b583677485a42794a5175326153797753776c6644594f3734727236726b6155622b5a4b5a7a77444f55485038414976534c4e6a7a6f2f4a54374b343435634b4c6f636b4157485469426d67772f5933674e4c342f55725049764d4e636e2b43364c6a695065715a58474c4441654c67677a7773304d5a30434e79334139515452697872554e676c4d42474c2f69677230687445614a664a3059794a2f533443756a704a59696a704a422b6e67677a7a4534652f486736754f3644364c6c43426a7854655a716656522b4f614457673950685242594a782b6c326b6c45576439544a355374674d774c34636b73626f794f4863674d54715045506d725a45526f4d4d315855343438453834474d716a48356f4b7a5a387967694653646e4f4f41702b43766c62314d78703856575a58664447524878514a3563346d73656c4f424b4a4a306856786c4d6b3633567244486b674f7252567350775655707849315478354b7a796a50446a334a664c4a654a77514e45474d5246674f616b524554484f6e636b7437654d4e4d573476576973304356585a4170746b306a37387578534e696241617634517259577a454e4657434d6f6e552b487379436f514c4d54586b6d6c71474f4375416b63507a526c4751397345474c544a324f47576173746a52506e2b6c50633239795855614e68454b695675364861544534757943337241706936573451396161616f41534d644a373164433264546d493546426b4f3441786735354a7062694f6b73743175794c626c336c492b335968397643466355474756794436773462706a7a2f424e4c6432395641342f3933617235326f79456f3854376971726c67534a426346767051416230747246482b4b4d7478356765737553427351314d39426b6f5a57715659746e692f616762703779464745616a42322f4e4c466a554e2b7853514a2b7244686b676874526655516b305a4439796546786e345a64763756497a6473754b4254743768446b616d39676e756259316341466c6261642b5a797a52467a365a55515a767467786b66597132336f74524d614d7a392b61743069544855615a4b75656d35512b48443979427a5036736d7079356f77764e5632666b714b544a45433534636c586957446b6e444a427246324a44767a4b5752316c2f667743716a74337249344a34327a622f414b5a61754e636b46526b42454839564971324e776b444d4a5869434f6e4e6832464d4c6b5a4573432f6844386330444130366a58366b6f6a6e78514c616168795046327069354657663349476c4857435a44447770593757456930574758656c4e757463366674565a734365426f4d384367766e3664474a62504e5653327862546c79344b43476a4752706d554e4855495069454369784c4868677338725568344834384b725456346a444c734b55516b57367531426d307a746b6b392f37565a614f6a7842316f75324151776a31484438566e3875324331512b413745446d2f54692f7741464a3769456d483648666d717a596a623651354f4b4559694c354549484679322b67412b3571354b47554a5667395656356574754c3855395948674145465537676a69775a57786e4138786c327034364c682f38417967726f375741465a494d7745515078554c6161346c6144434c554c6e4963556768306c3855476653634851674471714e58344c64667457386c58414342306a4d6f4b394e794868486556435a6e784e77576f534a36516e4d524e6e6b6156384b4443626d714f6e685369654638527a773731734e7146484c6671564d374d644f6e4a367350596f4b664d2b50636a4b342f65636c58494838464e636f6b434944596f433541635a4a51544c53526a676b382b51634e6a374f724a584b4e4b6c55466c6b3649366a395869374573704f48446a386b75736366446a334a3458497878777a5159356b7a714b736e74536272344b3255593547684b4e7a70423043714376524a712f457039416569574d726d45616c534f76762b53422f4c674258464c4944492f6c336f77746d5261583745374f4e58436c55433955635743574d354f34374a4d725a5071614162694f6145675872516f456b506572625a474d3237466e6c49355975796353474b426a4b32635377533672624e374d71695849306e336f526752534c593435494e485339507053485365706d4b5147496f79636c33644177695a64422f774233344a4d49764c6979654a79773973555a7742707a66383041685a4e532f774353734d6445614f2f464e59684758544a69517254716c7a43444e4b524e4b2f6d6830317a5a6142486a526c6c765771744853482b61424c6c364a7764766d7953354c6a694530524548704e42376c5a4755415849367347375547667a415351653554586d4d467430516e6b456441474959634546486d4e48386b586b656b46706539582f626b47686f55626d6c69493134494d6f316b676b763846623976726a49393456636a70476953736e75626c714c526f3378514a3970796f616377706236615a483370527662747a715059455463387645494a6345596e76645652737544702f616e45705477444a4a61346a536353676d674445345554784c556b2f38414d6d493078596879456a5375567a2b4343536b77447059363854586d694c63726a3061514b4d446f654d3043655a4f546b312f425349647a6871783773453862656b536277702f4b494e423746425243334943754f4f4e5659595a765434713078306a566e38327957613541676a365751576937486e6837304a53747a414d535843707557746353367075516c534b4454723139494a53776d4d4d51367961644d755365505631526f52394a51614a39524567574835716f784a5073635664473265524842495742314e31486878514b625a384a2f4a4e466934566b6e6574564e4a6b61454f67573247784c46535553376f615a796471746d564a526e4d4e4c482b483234494830636d2f48334a39476170456a454e587656786d41477a4761425442695778474b55776570785246776179637945306a303667334e426e41644e35636f356b2f4a504574307467706932724638416751526b433570525648462f69746239387367556f6948634369424272694f6b304b726c4b7548772b4376684952716a6f416f5546424d674f6c6f6c616250716d3474524159536a6d737477617341374a6f51656a653738554861323371317538305a41524c74326471337875776d38595347723846355756714d69444d4e4c6b7234627137746a78492b4344305274784a714b6f6548773446632b313675445335512f67756c626e4339474a6a56416e4149615841664a5745634d46496c7632494b354153787753474169484376304e6a3845686a67526c6a32494b6a46384d456b672b43746d786c5653516242426c4c2b424a704a6f79307a674a53716c4e7373385546427474322f536d474e4535456f593064414573776a686d677a473331755178514670706331715a79324b585145476348755359636561766b414b56785353423842392f4a416a68797a6f5265525971346b6b73526c67456f4a637477514952475842683958464b7a4677724b78785a6b4a7341656e44336f4b68475236673454356545397163534d512b4b4e477744747062715156573548566a52366c6b597a65524f4c635656624d754c69697474455350535834397143325674354366384f6c4151303070696d6a505631532f4c4241334736736b424e737452567a736d585556614a52634146447a744c4d4456424c6c7436786b3051456c644f4475636c5075583538796d38794f475476456a69674445644c2f7741744535307454784f684f35704450696c4e794d6932484e414a586a43493043763673782b314a39354f7a474f6f79722f437249756173744d6238594d5777474344506133586d5231694f4a6f5756384a487861616a784b3657386841474d6757797a564d76554c64775953352b7a49414c7436644c566b6636383044624f725530596e6848696a5066536f6571754134667653666358637837304367476d66344a3453796b616a454b435a78776c676b6e636a49395553342b72696776684870656674376b4a6d4e4a74584a4a716a523847567353616471437559457935474b72505348433252687071654b596745454467673570736d70795050324b614171514d51746334774a6558596c506c7844693243543730464d6f344f415278357153446a7730354b324d72596979625661464e534367326f38485247327353724b4142576d516761784931424a495348534d506d676f2b3174596b48464a3972415a477646584750316d76384b506c695236335a42544731626a4943496f307533324b7467414967546f355076537a3345596e534d65584e53345a436f4e58376b4453496a6869443845444d596a4c6a537168746a693550465043416b584a4a475772323979436b334a7379734a3067365750356f58592f55506a2b784151304f4959484a424450552b75704e45346d493035643377536a534b76546d72443559476b653361676c434e4c642f4c6b6f7849364b2f7a55524174596b5963304245507877434167474d4f724a6d37564a6171664643577236734d454a587052474264425a4b7a4d4235397a666a696c6b597747696566315a4b736269566145444166696c4e31324a65576e443235494c544b327a52557547325177693537614b75556e726d72514f706a6767716c476a524650696d6841414579465a4a7044677135786c544d6c42664754436a6f53675978634632564564516f636c613450456667676b546e476e4654564d48575437636b497a344a53525042332b53417566464a43545471516a484e315a474d5165724d6f4b756d504c386b664e6934666a586779736a5a4836412f78522b33743664524e4d383042456f524f76336333516c755352784439694e7563526d456f6a707145465a4f6a776a346673524d356549344a7079755469326b41484871564e32526c347743674a31536f4d7662326f7043457a575a7168447a353477684741342b4c397131517461734d55464973453954694c6363557732305269527137552b674775587851384a7046682f4c56414c6352624e584c344a3955497670424b72724d6b6d6c5030346a334a764c3039705153356568395271636c544b646f4355363966547062676d387534412b54384d753156587263704546384d41794332414772776a44424f5932352b4941724c45744b6d707a7743654a6269347951582b56427449464279537a74514574417142682b4b654a4a6a302f7653797445463278515553746b4471725444676b6951656d51487a57695556583548484530374543527558415862424e47397042636857524230694a682f71644355474c674f654343794e794d793539676d6a4f446d4d76686956696e594d68704f4f5359774f6461494e4578626831786456784d524855442f464c76516a593871494a7279526a6171656e476b67674d62384164414e56704e375453575171735168634e595250426b7746774471697a346f4e735a466e424164576558356a4e6975654c6b6830444e53562b6361344839574344706551663144385656634169574a422b4b7965655a47746156526a6559595651614d65315158486a69797174794e79614c76554d676545444930702b61733876513266795765494a636b6b55792b5837556f3838454848542b4f61445a46324166456f536d78624c7478576155704d4849666972476b54522f357566426b424d7a34514d6379724e65716838537146586648696e42686262574b6f484c696a4f704359314e38754b4d4c6f4d514a3062486971336848704b423561644b704e385136572f774277526c64713849366e5358415a56306b53514b4e323070415947672f4e4e62335557444f2f31446b73737254773456645851747859675563494e4c524d74557944794b5752747836685074694171756d302b744e48517a7844526c785143505332724e48376944507050546d6d746d453345777a5a6375534570524d6e6a6767593353515a615348437a78766d4a4e4458367677566b70755178664632532b6149346533765156692b52566a554e4a30304c6f496a5441646a4b7a554a556f7070675130734252417372747341786170565a33444f644d6f382b4b3247324241745538364a504c697a57324c393644494c776c6753507956305a575956457a4f65484769483267424d705648626d727a5a6847413074454d33546b67574d344547577558755352386d55764558577156713371632f565256744349726a79514a67644c6b303936746a4f4554716c687753536d496b2f715a4b504c505163387543422f7564733152683731516431745a48776d584b767336736c743454715234527037306e326c76364f313046734a327267654d444566784a6e4641593470504c6c45694d345549704c38314a584167633644315267326b346f526e716978444165494b694c76703142705a4a70584a6b66506d67304e7846556b6f78664230677545524a30312b615735656c436d6876346d656943345169344b573541536f615539796f6c76527130365a742f4b726a75626379664c314f32597a51576a2b452f7741716b4a694f4f487a516a475141466561595762686a68584d384b6f424337626a4561585959706e4250566c564a49616f7633396e5968304872497145465a75574951426e7753334b766d337756756d6a3652543846614e4d67386b474577476e4d506b714a334c5a6f4a665044334c7147376231445654494b732b6f514c694564516a3076682b43446e5374735745535166696e416f3034304336736478476376433067686276326f39514f4a72792b4344446245336549366379744174304c436872486d74486e5735316968716a4f6e365546426a4a7451673550504170764a4d534869357a5767733153784b5a38595178515a64463234574556555933386f726161556633386b524a7869336567352f774458686b426a71314a67626d44434c3831706a66593071447852382b33557a4f6e546a564267766562456e4453325353496e413456504e7a2b3564413769324456735071552b2b4557694e50554f475075515a37467256496d6548347070576e4c3159664e6b2f6e357332545052573555375547654f326b5931716e6c737a6a48735678636e7566464d4a782f4a42686e744c344c323567416671793746584c3076637947727a5437714c6f6451665351335971702b6359732b6b66776f4d304e6a4f49363536767837552f6b6457714a484142736b2f6c7a446831564b336f4a6b43353449452b316d4a445151436355346a655a34474c6331594256504337475561786f677030626f644771476e6b4b7037566952655a5069415635693444427578434259676654383043776a52696e4a6f2b51627456586d7a4558614962424962387a4669326f4d6730596a55496a354a4a3678345967384549376b4632774b687631775949486c43345a34446d715074376d7256494e466d706d6d6c75327a71684c666670717a636b432b524b737052423542474d4141785a7a394f53483373783145525648337070705a2f65677548542b6d6e444e456178536c4f4156634e33474a655464574330432f616d4831567a35676f4b68495266576179564f346a30596b653346585444564263384f53452b6f6148704c366543446e526a6f4965636942566168636d4f714a724976334c543974726d3441616e7478566f324f693572634f51314f31427a62652f75776351476648504e483732394936576b4a456479365a32305163497841773475564e424e414256426931584a6d4d326a7a3730504f4d524579374743316d476c354349356331575932376d6d6e38586677515a3536726b763575434d2f4d4f4c6670615743764549366a70662f41473052753761334d7339776637516735356e637467434d523764717374376d35426f34444848443279576a2b31626535346a63503878795452394a744f3861426b456e367261746638674d6a386b4a656f324d4947702f5570486136656950785650324d6e4a5a7967305333516c314d7134546e4b5261334c2b6267455274626b32424a6743453175473674782f3541577067673065544b375475366a676b4f306d5138726b6e427779566b62383331585471376b73743145744550582b476941655850546941506d6a474745347968482b4b564573703279486d324464797a792b336b6636774d79504470775a42664b3650467248617161536c57644a556f556b7a5a67544551487a554e36455749745a6d71415071692b6f752b6e676c6135454f542f4d6d4e2b336f654d47626c78556a66367572427453422f743770786b59302f556e306d5a7161636c5435346257775056704e667a2f616d4e786778342f4e4262623061514455706a66387677776a6834766171574961636f555a50494e512f707167716e75626c4869432f62376642572b624e36516363704a54624259785a4e3575755056427369524a42504d753551702f4e6b715a5754633859797a346c58322b6f4363634f4f724e4e356c5862453655474d2b6e62633162536361594b7a2b33375674586972682b4b744577354c452f424a39304147302b78514d4e707479344a4948414651324e71486359594f584b613366744878697235493237317476434f396b4666394f48556349704a58396f53493635522b722f414933576a585a6b61694c667a5a71364e794751422b4f43444e70747965542b4c346f6d334733314d43326553667a49454f413965535a71506a46426b7633625561546937667043482f6958497635504c67566f6c6238774d416850617a4d57416b534f53436e2b333765375749454839345366325330522f774130755172373162397275346e56355a49483853486d5874764d514d5167782f3271647554517555346a6a7a576f5770564475347233664a586e64523075497537314846566e636d4c746259426d4c6f4873374f4f6b6135652b69535870567563717a425061337556453738497a615672574348704a4437687730624c5a414f677548706b41526f75476e74383166485a336f79365a302f697136356f6c63784547697a63553568623161794b3839555548524e7559784f4b6d456d656977644d6358422b434d49526d535a5054776a67364458636c466e31594a4a586f6e4147694d4c6350716a6769657154694e41324343674436516578552b555a54726774552f774436636a2f71536d6d414966475059676b4954454969504871526a4f596c782f4a473341474644544d5a4b36634953665451664e426e2b36694b356d6744496d35716b344959706673353659364a42733073396843656f6b6434782f63676c324d61395463572f4655365351305a6e745a4e4861796757465878644f6255785141532f774253436b51774a75544d52685230304e7435686b444e76714a774c712b4e695559734a4d2f30684e47784b5961474a356f4d30624630364a47524c596a687a576b5375694855645231565035666d68355736694b516963753774566b7256344836572f53582b614371524c6168372f6238466d6c63466b6838514d576461346d5561524970777172345874464a552f77424f4b446e48655735467067346670444a54653234502f454b343071757635397563636a2f7071686346694f4673456c427a626537324e75737249316533466736732b38326c794a4e757a4a782b70683371586f4175474459737270323955656755624155356f4b493376543579384a457155796457534e7375595543792b51597649786c2f4e37426162646b73584645456a6568546f69347a5a4c47364c7042304e4a6142742b4a444b75516f67706a75703665694962367458354a54366a66684a6f52746d4962475046504c71714f7a3349655753772f3349466c76372b707a4731586b6d6a7672756d67672f494b6b51757a4e4d42395037556e6b5834686d414750544a426648315056694271397a4d704831475a4f6b5738536c30547542674161464e2f78785a716f4c4c6b727a36524238385559516d61357049584c6d6b415131667136766b7268754e4c4552366d445a494349476641646949743359754a46715a495133462b41305274514d6634705a6c574463584a5230336259425036436770613541796557507656784d3456314771566f5a69544934674f61494b707a6d7a564656564948563156433169494e5843627977656767313435494b3759776752324a4a62557a4c2f69744a74786857684964504759476e4a386531426b2b3148694a366c5a3546546948576b7a694841344b6d573475594e464249625749444636462b314a396e6242596b39365554766b394941434566506b656f5230396a305153566d4a70456e765666326347724d707a35302f70414139753556475678774978643361767469673078745772565268786b72444f302b7036686336356475782f364f716c5739697142666d546f687435516650555751644f35474d336b48615239797175574344306a55734559627334304179772f6572725a33496a706a64496a49384b6c4151626e5630683875785044704479416349334a585a534c533556716c46764b56536759584e64596970536169394d66795436424c4f6f54547478384946637967706e475571535059794559516a5354366a78576a7963674d6e5575526b412b6c426e30573544544b4f6163324979692f7743785072646f36547170676759475a464f6e36686d364376795957383644696a486f444a5a32395876565a684b32534f58315a494c34543055636b42576939614e61672f697341766a435452393675673179485332507751587a766a4a4a3533366365436c79324a47564f424243797a7476696163735546336d7a3141427561744632524657414257574f33305675436c447a3936327746735136672f4a4177753235554a4a3471644a464d387550616f494f4f6d6a7064423849306f4b7842752f686b6a497a5a34395865704f78634a78425045634572364838342b48754251572b476872336669724863724f4c776a394a727752687542495a2b35426471674271634e783471694d68496b67594b487938774357566b4c6b5a644f6a3449456f3269574f4b57557a4c454b79374a795743574a4f50344941586a31614849782f4254376d553342677a346f7a6d5365505a79552b343075534367667a4137596b425070314c4f623764576e4549773352646f686f6a4d68426162454c6862414d63446d68355231553936506d4d58794b63335363427034646e356f4b703764777a5535636c564f77547167427050762f41474c624b5579474d4734562b4b53544e70356f4d4d4e73544947546b4470562f77427134366350697278436a44414b787a37634546586c50325a4b475a42304f33346f41457335776f6c41366a4b63695167476972482f41484b53307532614564426c6e2b78614c624d644e51677030616e356f4733527536697368636a34634365534a6e576c4f505967703870754b457454596436744a45337953434c75485a424147496957664d634573705349457543742b702b497839677141356c7041515750634231794e434f4b67336368626f327249597176794a4d4f6f6e6c6b45787467427a556f434e314d30464b5566356c4f4c30354b71512f557963416376793449486a656c554f4e4b456f69556e465345754c71755553412b4b4334335862327172495839484d4f7364583448464e636b30756b6f4e68756a55374d507a5663726b654472424f374b674f4834706f33444130787a5161504d72576963437279493539796f3879517872774b45373870644d4d693548366a6b67306d4250417a50774357586c78704963755378334e33644a7878385835446b6c6a505654752f616732614c6366435756647954784c4a527149446e6c3830356a494277667a5156616e49426345636b42644554783563386b4943576a585046574332336944634f39416e6d537978342f676b6c757036744c4d66346c6f75514f6e533365713577316c755964416e6e7846576154594a2f50746b4e4a6a6e33702f4c4238654b722b31684b7051434671446134796f50467954526b4a3955545534496a59327a694d4f614d374245515348726a326f43326a706570566b4f764838306b67394662474a695739676763644f49636e4c6745706e72727a707a5a43637a686d565744484c44354f67615a796b547a35757144667158423763614a78632b706b52756259476f6537356f4b726436557056446f663144636c457532537446364d515a30504c3855544f3254484163756142744f726f5343456a3463307479374b32484761587a3553714458446c7a514d5130744c5554473349306a554a725a6c703069673572514c664c396f51596843345469572f5363555274354e724a62494c6f363879412f686a324b474e76366e59494f6648624e4e334f474f546f6d30514b69704656744d49486f6966795753593153315250614f7a67676a51684536697841444a4c6b672f54676a4f303954555a63306e6c6e776e397942724a316c6a583953736845474a4f522b53714e6f3457382f6c6d6b6c5a6b4b36324179346f4e4f71446b6a776a776e6d6b7579454330543239367a744c6936514f427a515754366e443833566b71513167346b5256555a694264362b484369594f35486545426a4176706b724a41694c6e504e4951346569456f673144393642764d50566f6f636b756f73524f6e365478565a6347706254676e78774439714267574c54715063706b346f44386b5849784a494f494e57567359615a41552f6567547972665033717164724352396774747662786d306a57767437464c4b7843755135315159744f557143584257473345735453697375625671436b666171716e596d496741766d67733043526154555453745267527a7734716f783074717056533551754135476144634e457570714d71706744672f3666785765467959476d5139366c7776556f424b4a6b525656435a69484950746d724361635368414744796c686c486d6746795a7444427a3266697178644c426a7854796c4b49615869352f4242395259422b614369585730526e69686f4a46497331466f6844537a6636714b3457737355474b516d386a486867687059764b713269477031584b485778446c42512f444261424456486858565838566e6e455948754179566f6e7038564871677575615a6454597167334a4f477a6f46507547784c383155447046554630546f6b656976366b7875536e4b576b3039736b6841424159736e36593165765967726c654f4d6941716935366c6463675a43707856634c4d72595a366f4a48564b4f684e3458664e50616754496d5a6f6c6255373549486870625074346c6141786f2b65616f3043656e4d2b34414b32626761546a6d7943753549784f6f4f61594b75563755514d4f4b746c687979564e3241456f2f506b675356326e48747a514579427078423973455a7434786931454244484855674f732f70626d796258585656566754625350696e625434714834494c625567612f756f6c6a666b49757958434c6e78444e47324748356f474231654c466b635430344f6c672b5936754b4561415346442b4b44626375315a4c70684b6f412f465a745a4c6e696847576b39504242657763436a6d6e4949676d4d7061475965337a57585558355a4b78336552484b714178366a6869714a577848444e58784d6a48792b57534145577137344242555a78694f31556d526d744d34645278354d6c38754a6977507477515a54713076546b72375946794c6a347258624e7344706a705036554a5231456a427a6967704d426a672f7552634173664678535441446d426f717465416c6b6776754872654a5966785a6f47526c6d314d7379714b5366463438556775674161736b4777796a476b757a76556b3265543969782f6379625447746543316e53336456414951414776696c6b306577756d4d744c515a4733463861486763454652614c54706a77514c6d75494f515673686d4b64695136687a6669674e5178412f425232706765655358544e3671534d5a566d432f7864415365417172514e50574d51714c416c434c684e4b47696f782b6143794966785a765643625378374549784f6b6169334a44525444324343614161424157326b57775352686350565853725a574a527a666a3249457539552f6b71356b47576f344b3656765455533748514d523953436b41753075314d4c73725a6533306d4a7842554d4a486f697841566558456a325a42314c5071374e43366144366869757059334676634e6f6b4a6373442b4338734c524e634336494c53456748696739654c556f654d45664a4a4b4e645334473339567557526f5953682b6e4e64577a366a627636596c6e2b53445449505249517762396974416a4d394a667655384e536771464553483668676a4b4d68324a4d4d63554379443471755558774f4877563157504249616c6b465246656b313549796551493936505670476731544371436d4c53446350696b4e7469383162496173325461447036366f4d2f6c484677795557366956473472564556634a544541434f5835494d55347564526431624941674b3032795a4d486f6a4f4269777a2b61436a546e6d36486c3178727739676a64367163465036724f395734494e4e7a7a644d4e4c636c697576356e557a74334d6f6f674e66715a71366e543232712b6e527a7755555158336354713076526d556835656b612f45394734714b494b7036576c786449504b7938584e5252414c2b6e5458784f4573644c39447331564645426a6a3150334b36486c73487765754b6969417a5a686a707a7856585333512f78354b4b4948476a574e54767a2b434676532f5478716f6f6776697a48576b756164495a39464d564645436c332f682b6c58396278384f6a38564645446a56394c4d7056697a397969694375574a646d795354665630344b4b49425372596f6a797671385369694252706557686e56554e4c6c7458344b4b4948745a616c645a3876563150793756464546734e4f67364e44386d645544792f70372b315252417374626a7a4730354f794177707130354b4b4946476c2b584e586c333658666d79696943734f387458436a3845447131515a39536969424b6165742b613057333771344b4b494c6f36744e636149532f354b4d3266596f6f6757577434366d354e6779467250685846525241785a70615731557753515a75623164525242584a712f466e533232664c75643146454771506c2f586a2b3553336f3676452b61696943466d48444e32645677303668717731466d5555514e4479645a5a6e59707a35582f5462576f6f6777376e56397848546a6b797074733874654c315555516159655670486b365859365777357078356d6d545973483746464543795a71345a4a6f4e39623671714b494c4a6559335332696a61735573764d6f333636714b494e45664d36744c61386e5a512b666c6879555551412b597731616d7a5a57445578666c7034714b4943664458425652387078693735714b494a4274525a32616a4b36586c754f4b6969444e2f5471334e2b314a31736531525241594f39585a5062314f6448682f69555551474f7078692b66424f4e544232666b6f6f67726b2b624d3457633663734b714b494c59757730346f58504f6361573056344b4b494b70666566394858334d7178393434667a645856346d5a525241592b66585833385574764150692b61696943796669476c76703166745379314e30732b61696941523161686f35737965322b6d7667793756464545692b756d4c55785673504e306a563461346642314645464a312f5732724a6c624c7a614f2b764a5252416b7675487a664e4d664e59366e35616c4645465238375547777a646d576e70366d662f54385646454769337079642b354576394c2b484a5252426e757534643953533171656d4648555551566e7a645658666e697931573958314d7a714b494c5934446a6d71626d425a322f465252426d68356a6c39656d7265464a4856355a5a32664e5252425a566737746b6e3647727130766d6f6f67746a3557755772476d4b6e39503664544b4b4941664631595662334a37544d48314d6f6f67737131585a566c6d4f767774584252524255504b59615764692f464c42394e5068696f6f674e6e7a4e4a3161744c35736c7561323648625052346c464547622b74582f376a6b376f7966362f4e37325555514e466d2f7073326259713633725976696f6f6731327448314e72706974634830687535525242447230312b474b53627357624376785555515677313062346f6631644557776571696942626d4574482b6c75484a4c5052356450452b5369694262586c754e583673384d6b7030764a6d626d6f6f6771476c69374d32615762616570736d5a52524262622b6e463838667852366455325a767855555143546171344e564c6264677a756f6f67726e35756f612b4262424a4c552b65724e5252427374766f2f714f37686c4f6a4e322b6c5252425265386d6d72553261512f3235786f31616d2b4b6969427a35476f344e523352742b586b372f4839796969432b4c5677616a4b796a4868702b4761696941322f4c706a6e346b3850496238754b69694234365736487a777751677a6e676f6f675536573675395548545632666c77555551566630334846733074765835644d582f46525242644e326f3270562f77426654466d2b4369694133504f70356d686e7a536e7a4e647a5870624a6c464546632f707764386b527138733638484c714b494964645730366375314b50342b4758656f6f6772476c68687a314f6a6230356158354b4b494c2f414f6d35314d32577051666274526e354b4b494c4936713632303566676a59314e5051327076624652524162506d6134363264686a324b3436364d7a642f42525241747a5539576632644348316559336d66546f5555514c482f6c44384f6c306636626c394c74542b5a525242556643586243756c4d644f542f466c464546346653487879545579377532716969427a6f59616e2f46542b6c394f7643716969425a6558704c362b396b68656d4c35756f6f67587063616d666e78533348594f7a50565252425875664a66725a386c6a2f7061797a616d555551577777476e4669377467716732715043756c734646454479786c716679317174364e42666b2f344b4b4942443762534e624d35302f7a5a6f6a37624a76785555514c4854714c593563564973773134714b49494e46645064776450754e4c394f6a4a394b6969444163503657724c44426172506e5030344e6e785555514d5043485a327278624e595a4e70483830667855555157793036704f7a4d4d4756647a3766366e64714b4b494b37336c6141332f45396444507957622b6e714c655a2f433250656f6f6733573957734f2f6c2f446d6a4c5778302b592f775555514335702b765871616a5079344b75342b716e6e4d3431654a5252426c6e722f2b6267586256334b38502f46706f3274314645477531796653786475504a586630367337714b49445268337333746772492b557731386d62465252426248792f706457586d302f5433714b49466c356268744f54716e63655538764c37325555515a5435624233354f374b56635974333979696943793335372b357457436838397036325a36385646454769302b6d576e766449504d314842737531525242544c7a65727933625034705a6663734e506d5058426d5555515a3733335038623573324362626562356f2f7743544e745463464645475966635054566e6974412b3530686e662b46525242625a2b2f7744394f666d4c576454487a504656335555514c482b46396664696d6c72633648656969694144586e6a3366464a445656336238464645413766324b57504e71336979344b4b494c78397a7036753953377130487a4d47716f6f6772504e73437a4b645468734d2b4b69694168744a3744776447476a554e4c64324b6969413274476e4a6e4b7a334871324463314645447778476e42736c565855572b4f4b6969414858705069782f4a43486d616871555551614f6d6a767953686d4c654c4e5252414c766d31303675355551382f54466e657239696969433465626f2f702b4a767856735075483633616a756f6f6754726f2b437a7938397a35657076676f6f67757365612f553774562f77427131573263347531585555515842395054686e324a59737762446b6f6f67683856585a535774364d3752302f7335714b494b4a2b6333384b6738353636564645467062366d78716c6a70387a365859736f6f6771366451314e33344a706147793566676f6f6770334c754e4c4f794d6458314e70354b4b49474f72542f414532666b725a655977305935714b4944447a586a673261716e357a6a54356266395453372b7a4b4b49466937563073722f366a313034556452524138664d5936644f4663465654562f56387073745037464645435866454d47354b6b2b5858553331594b4b494d6c7a796d442b445350457159654f586b766e676f6f676c377a584776567a62464a42322f7161767764525241353858527266384168546e58716c70647333555551585732635068584469746c6c32446366696f6f6773476e574e576c4536715034614b4b494d743743504375437268727133344b4b49444c5733583363556b764d6375375a4b4b49446d45517a46734f6c525241776650346f5131616a6f645252426446363639576e503471446d375030366c46454630644c46734f395a4c6e6d7630766947344d6f6f674938787333357068727966546d6f6f6773444d47777a5448566b2f4e52524256655a7a78616a4c4e487a64592f546d6f6f6774364e5647314d485a5063304e5233594d6f6f6774755a4f2b46466d2f36675a32664e52524133557878357677556e712b726854425252426d4f6a55664d667677547a387255504c3150795555514a6d4e546f512f687737314645426872667137736355753466364d5844714b494b49613379657157586d6171507a5555514b50506172392f617445664e303958453434714b4948477172346479574f6c366352376c464547694f6e386d576944734e4f436969436a4f544f7959654b6a36636c46454655764d316c335a717668696c743632477032716f6f674e6e7a484c344f58314b3876527669796969424a2b486d702f55634e686e775555514e445671446157795a6b6e58714f72552f636f6f6755753163636c5a643863576253333731464546585671444f7a3057653432757547624b4b49484f6a5431636b747679327a624a5252426f757470476e755a4a5a62534778664e525241346636585a5766314b3663644e657852524251504d316833304e5238556c766c71624e3355555158376439636d2b4b30525a68705a36344b4b494b376d492f53714c6a745633657169694244357a6a46326f7973692f77443148306173314645464a3161706147622b4a534c6639544652524177307652394b614f6e544a6d5a71714b494848673657664c7453324e656b7433507855555153656e51504d78663979716a6d37632b4b6969437978356a7930594f4d564a2b6258676f6f6731572f4f31525a6d56306d70673262714b494d397a7a4f70753767794661386159714b49466e39502f715454664a326571696944506338702b703957574c7052674f395252424f7256792f65724269576656795555515744776a573377666b6b4772514e47446c6c4645466878366d7978516b7a6c7365616969423461324c73796270666e563146454765586c365a61764679564e3754714c59556668696f6f67704c5054444a4e5a64697a61636e34714b494e70616d76766451366165586a795555514337716350333857514f696e484e525242584c45367363735573644f6f4f2b72384646454668626b32537436645664574647555551566c6e476e6c347632716b2b5a7147727835594b4b4941666a79552b6d72756f6f676b764c3139574f667554584e44447562676f6f677a4274585537632b355851625077766d6f6f67727461644d6e3161586f3661574d6d77795555515471616a756d4c36612b4a6c4645414c4e4676446e326f786679363456785555514c4239525a33567374542f784b4b494b6f613958506b6d6b326f4d372f696f6f674d33654c2f73545531426e376c46454765377031486879556f314d63314645467478755474566c6c4f6636736c464544574e4479626b72724f6e7a432f636f6f674d64503150702b4b654f68364d39635646454453663673476c67716f386d5a73314645416c707238572f42414d3158787a785555514e4c52546a54336f334e4c6c2f4652735646454275614d75394b4e4c5564755369694336446636636e55697a48467134714b494b686f63757a7456335377785043716969415430395836554a65552f5337386c4645424f4665394a536a63564645435230642f4e566447726f3865576e696f6f673676702f3357754c4e6f7a315966426471317172356d6e6b7969694330365735354c4e506d366969424b7558354b57332b6e784b4b494a4853342b50596a4c41742b4b696941545a75664c424c50776a553735736f6f67485334304f364130763159714b494446746448524772544c6a795555515a7a706172507a785572334b4b49502f5aa165627a7a72305820d7e005c53a8bd779a1bb70c770e1f2fcc950291e3a5dfc10d29bfeffbf2d23a60029` -// CypressCreditV2FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CypressCreditV2MetaData.Sigs instead. +// CypressCreditV2FuncSigs maps the 4-byte function signature to its string representation. var CypressCreditV2FuncSigs = CypressCreditV2MetaData.Sigs // CypressCreditV2Bin is the compiled bytecode used for deploying new contracts. // Deprecated: Use CypressCreditV2MetaData.Bin instead. var CypressCreditV2Bin = CypressCreditV2MetaData.Bin -// DeployCypressCreditV2 deploys a new Klaytn contract, binding an instance of CypressCreditV2 to it. +// DeployCypressCreditV2 deploys a new Kaia contract, binding an instance of CypressCreditV2 to it. func DeployCypressCreditV2(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *CypressCreditV2, error) { parsed, err := CypressCreditV2MetaData.GetAbi() if err != nil { @@ -319,29 +319,29 @@ func DeployCypressCreditV2(auth *bind.TransactOpts, backend bind.ContractBackend return address, tx, &CypressCreditV2{CypressCreditV2Caller: CypressCreditV2Caller{contract: contract}, CypressCreditV2Transactor: CypressCreditV2Transactor{contract: contract}, CypressCreditV2Filterer: CypressCreditV2Filterer{contract: contract}}, nil } -// CypressCreditV2 is an auto generated Go binding around a Klaytn contract. +// CypressCreditV2 is an auto generated Go binding around a Kaia contract. type CypressCreditV2 struct { CypressCreditV2Caller // Read-only binding to the contract CypressCreditV2Transactor // Write-only binding to the contract CypressCreditV2Filterer // Log filterer for contract events } -// CypressCreditV2Caller is an auto generated read-only Go binding around a Klaytn contract. +// CypressCreditV2Caller is an auto generated read-only Go binding around a Kaia contract. type CypressCreditV2Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditV2Transactor is an auto generated write-only Go binding around a Klaytn contract. +// CypressCreditV2Transactor is an auto generated write-only Go binding around a Kaia contract. type CypressCreditV2Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditV2Filterer is an auto generated log filtering Go binding around a Klaytn contract events. +// CypressCreditV2Filterer is an auto generated log filtering Go binding around a Kaia contract events. type CypressCreditV2Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// CypressCreditV2Session is an auto generated Go binding around a Klaytn contract, +// CypressCreditV2Session is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. type CypressCreditV2Session struct { Contract *CypressCreditV2 // Generic contract binding to set the session for @@ -349,31 +349,31 @@ type CypressCreditV2Session struct { TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CypressCreditV2CallerSession is an auto generated read-only Go binding around a Klaytn contract, +// CypressCreditV2CallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. type CypressCreditV2CallerSession struct { Contract *CypressCreditV2Caller // Generic contract caller binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session } -// CypressCreditV2TransactorSession is an auto generated write-only Go binding around a Klaytn contract, +// CypressCreditV2TransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. type CypressCreditV2TransactorSession struct { Contract *CypressCreditV2Transactor // Generic contract transactor binding to set the session for TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// CypressCreditV2Raw is an auto generated low-level Go binding around a Klaytn contract. +// CypressCreditV2Raw is an auto generated low-level Go binding around a Kaia contract. type CypressCreditV2Raw struct { Contract *CypressCreditV2 // Generic contract binding to access the raw methods on } -// CypressCreditV2CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract. +// CypressCreditV2CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. type CypressCreditV2CallerRaw struct { Contract *CypressCreditV2Caller // Generic read-only contract binding to access the raw methods on } -// CypressCreditV2TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract. +// CypressCreditV2TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. type CypressCreditV2TransactorRaw struct { Contract *CypressCreditV2Transactor // Generic write-only contract binding to access the raw methods on } diff --git a/contracts/contracts/system_contracts/multicall/MultiCallContract.go b/contracts/contracts/system_contracts/multicall/MultiCallContract.go index f1a98a553..d718abbaa 100644 --- a/contracts/contracts/system_contracts/multicall/MultiCallContract.go +++ b/contracts/contracts/system_contracts/multicall/MultiCallContract.go @@ -45,8 +45,8 @@ var IAddressBookABI = IAddressBookMetaData.ABI // IAddressBookBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAddressBookBinRuntime = `` -// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAddressBookMetaData.Sigs instead. +// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. var IAddressBookFuncSigs = IAddressBookMetaData.Sigs // IAddressBook is an auto generated Go binding around a Kaia contract. @@ -197,8 +197,7 @@ func (_IAddressBook *IAddressBookTransactorRaw) Transact(opts *bind.TransactOpts func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddress") @@ -206,10 +205,15 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str TypeList []uint8 AddressList []common.Address }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + return *outstruct, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -218,8 +222,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -229,8 +232,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { func (_IAddressBook *IAddressBookCallerSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -240,6 +242,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetAllAddress() (struct { func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -247,6 +250,7 @@ func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -278,8 +282,8 @@ var ICLRegistryABI = ICLRegistryMetaData.ABI // ICLRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ICLRegistryBinRuntime = `` -// ICLRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ICLRegistryMetaData.Sigs instead. +// ICLRegistryFuncSigs maps the 4-byte function signature to its string representation. var ICLRegistryFuncSigs = ICLRegistryMetaData.Sigs // ICLRegistry is an auto generated Go binding around a Kaia contract. @@ -430,6 +434,7 @@ func (_ICLRegistry *ICLRegistryTransactorRaw) Transact(opts *bind.TransactOpts, func (_ICLRegistry *ICLRegistryCaller) GetAllCLs(opts *bind.CallOpts) ([]common.Address, []*big.Int, []common.Address, []common.Address, error) { var out []interface{} err := _ICLRegistry.contract.Call(opts, &out, "getAllCLs") + if err != nil { return *new([]common.Address), *new([]*big.Int), *new([]common.Address), *new([]common.Address), err } @@ -440,6 +445,7 @@ func (_ICLRegistry *ICLRegistryCaller) GetAllCLs(opts *bind.CallOpts) ([]common. out3 := *abi.ConvertType(out[3], new([]common.Address)).(*[]common.Address) return out0, out1, out2, out3, err + } // GetAllCLs is a free data retrieval call binding the contract method 0x90599c07. @@ -473,8 +479,8 @@ var ICnStakingABI = ICnStakingMetaData.ABI // ICnStakingBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ICnStakingBinRuntime = `` -// ICnStakingFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ICnStakingMetaData.Sigs instead. +// ICnStakingFuncSigs maps the 4-byte function signature to its string representation. var ICnStakingFuncSigs = ICnStakingMetaData.Sigs // ICnStaking is an auto generated Go binding around a Kaia contract. @@ -625,6 +631,7 @@ func (_ICnStaking *ICnStakingTransactorRaw) Transact(opts *bind.TransactOpts, me func (_ICnStaking *ICnStakingCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -632,6 +639,7 @@ func (_ICnStaking *ICnStakingCaller) VERSION(opts *bind.CallOpts) (*big.Int, err out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -654,6 +662,7 @@ func (_ICnStaking *ICnStakingCallerSession) VERSION() (*big.Int, error) { func (_ICnStaking *ICnStakingCaller) Staking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "staking") + if err != nil { return *new(*big.Int), err } @@ -661,6 +670,7 @@ func (_ICnStaking *ICnStakingCaller) Staking(opts *bind.CallOpts) (*big.Int, err out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Staking is a free data retrieval call binding the contract method 0x4cf088d9. @@ -683,6 +693,7 @@ func (_ICnStaking *ICnStakingCallerSession) Staking() (*big.Int, error) { func (_ICnStaking *ICnStakingCaller) Unstaking(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ICnStaking.contract.Call(opts, &out, "unstaking") + if err != nil { return *new(*big.Int), err } @@ -690,6 +701,7 @@ func (_ICnStaking *ICnStakingCaller) Unstaking(opts *bind.CallOpts) (*big.Int, e out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Unstaking is a free data retrieval call binding the contract method 0x630b1146. @@ -721,8 +733,8 @@ var IERC20ABI = IERC20MetaData.ABI // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BinRuntime = `` -// IERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetaData.Sigs instead. +// IERC20FuncSigs maps the 4-byte function signature to its string representation. var IERC20FuncSigs = IERC20MetaData.Sigs // IERC20 is an auto generated Go binding around a Kaia contract. @@ -873,6 +885,7 @@ func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -880,6 +893,7 @@ func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -911,8 +925,8 @@ var IRegistryABI = IRegistryMetaData.ABI // IRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IRegistryBinRuntime = `` -// IRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IRegistryMetaData.Sigs instead. +// IRegistryFuncSigs maps the 4-byte function signature to its string representation. var IRegistryFuncSigs = IRegistryMetaData.Sigs // IRegistry is an auto generated Go binding around a Kaia contract. @@ -1063,6 +1077,7 @@ func (_IRegistry *IRegistryTransactorRaw) Transact(opts *bind.TransactOpts, meth func (_IRegistry *IRegistryCaller) GetActiveAddr(opts *bind.CallOpts, name string) (common.Address, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "getActiveAddr", name) + if err != nil { return *new(common.Address), err } @@ -1070,6 +1085,7 @@ func (_IRegistry *IRegistryCaller) GetActiveAddr(opts *bind.CallOpts, name strin out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetActiveAddr is a free data retrieval call binding the contract method 0xe2693e3f. @@ -1103,8 +1119,8 @@ var MultiCallContractABI = MultiCallContractMetaData.ABI // MultiCallContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MultiCallContractBinRuntime = `608060405234801561001057600080fd5b50600436106100365760003560e01c80636082579d1461003b578063adde19c61461005c575b600080fd5b610043610073565b604051610053949392919061052b565b60405180910390f35b610064610338565b60405161005393929190610583565b60405163e2693e3f60e01b815260206004820152600a602482015269434c526567697374727960b01b60448201526060908190819081906000906104019063e2693e3f90606401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061060e565b60405163e2693e3f60e01b815260206004820152600b60248201526a577261707065644b61696160a81b60448201529091506000906104019063e2693e3f90606401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e919061060e565b90506001600160a01b038216610195575050610332565b816001600160a01b03166390599c076040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101fb919081019061070d565b8151939950909750955081905067ffffffffffffffff81111561022057610220610630565b604051908082528060200260200182016040528015610249578160200160208202803683370190505b5093506001600160a01b0382161561032e578160005b8281101561032b57816001600160a01b03166370a082318983815181106102885761028861080f565b60200260200101516040518263ffffffff1660e01b81526004016102bb91906001600160a01b0391909116815260200190565b602060405180830381865afa1580156102d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fc9190610825565b86828151811061030e5761030e61080f565b60209081029190910101528061032381610854565b91505061025f565b50505b5050505b90919293565b606080606060006104009050806001600160a01b031663715b208b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610382573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103aa919081019061086d565b80519195509350600511156103bf5750909192565b6000600284516103cf9190610939565b90506103dc600382610968565b156103e8575050909192565b6103f360038261097c565b67ffffffffffffffff81111561040b5761040b610630565b604051908082528060200260200182016040528015610434578160200160208202803683370190505b50925060005b818110156104af5761047685610451836001610990565b815181106104615761046161080f565b60200260200101516001600160a01b03163190565b8461048260038461097c565b815181106104925761049261080f565b60209081029190910101526104a8600382610990565b905061043a565b505050909192565b600081518084526020808501945080840160005b838110156104f05781516001600160a01b0316875295820195908201906001016104cb565b509495945050505050565b600081518084526020808501945080840160005b838110156104f05781518752958201959082019060010161050f565b60808152600061053e60808301876104b7565b828103602084015261055081876104b7565b9050828103604084015261056481866104b7565b9050828103606084015261057881856104fb565b979650505050505050565b606080825284519082018190526000906020906080840190828801845b828110156105bf57815160ff16845292840192908401906001016105a0565b505050838103828501526105d381876104b7565b91505082810360408401526105e881856104fb565b9695505050505050565b80516001600160a01b038116811461060957600080fd5b919050565b60006020828403121561062057600080fd5b610629826105f2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561066f5761066f610630565b604052919050565b600067ffffffffffffffff82111561069157610691610630565b5060051b60200190565b600082601f8301126106ac57600080fd5b815160206106c16106bc83610677565b610646565b82815260059290921b840181019181810190868411156106e057600080fd5b8286015b84811015610702576106f5816105f2565b83529183019183016106e4565b509695505050505050565b6000806000806080858703121561072357600080fd5b845167ffffffffffffffff8082111561073b57600080fd5b6107478883890161069b565b955060209150818701518181111561075e57600080fd5b8701601f8101891361076f57600080fd5b805161077d6106bc82610677565b81815260059190911b8201840190848101908b83111561079c57600080fd5b928501925b828410156107ba578351825292850192908501906107a1565b60408b01519098509450505050808211156107d457600080fd5b6107e08883890161069b565b935060608701519150808211156107f657600080fd5b506108038782880161069b565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561083757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016108665761086661083e565b5060010190565b6000806040838503121561088057600080fd5b825167ffffffffffffffff8082111561089857600080fd5b818501915085601f8301126108ac57600080fd5b815160206108bc6106bc83610677565b82815260059290921b840181019181810190898411156108db57600080fd5b948201945b8386101561090957855160ff811681146108fa5760008081fd5b825294820194908201906108e0565b9188015191965090935050508082111561092257600080fd5b5061092f8582860161069b565b9150509250929050565b8181038181111561094c5761094c61083e565b92915050565b634e487b7160e01b600052601260045260246000fd5b60008261097757610977610952565b500690565b60008261098b5761098b610952565b500490565b8082018082111561094c5761094c61083e56fea2646970667358221220f2777d2f144f3b75748af5d8c1431536882b8844df9f7077c25c6a7720f1e49a64736f6c63430008130033` -// MultiCallContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MultiCallContractMetaData.Sigs instead. +// MultiCallContractFuncSigs maps the 4-byte function signature to its string representation. var MultiCallContractFuncSigs = MultiCallContractMetaData.Sigs // MultiCallContractBin is the compiled bytecode used for deploying new contracts. @@ -1278,8 +1294,7 @@ func (_MultiCallContract *MultiCallContractCaller) MultiCallDPStakingInfo(opts * ClPools []common.Address ClStakings []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { var out []interface{} err := _MultiCallContract.contract.Call(opts, &out, "multiCallDPStakingInfo") @@ -1289,12 +1304,17 @@ func (_MultiCallContract *MultiCallContractCaller) MultiCallDPStakingInfo(opts * ClStakings []common.Address StakingAmounts []*big.Int }) + if err != nil { + return *outstruct, err + } outstruct.NodeIds = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.ClPools = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.ClStakings = *abi.ConvertType(out[2], new([]common.Address)).(*[]common.Address) outstruct.StakingAmounts = *abi.ConvertType(out[3], new([]*big.Int)).(*[]*big.Int) + return *outstruct, err + } // MultiCallDPStakingInfo is a free data retrieval call binding the contract method 0x6082579d. @@ -1305,8 +1325,7 @@ func (_MultiCallContract *MultiCallContractSession) MultiCallDPStakingInfo() (st ClPools []common.Address ClStakings []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContract.Contract.MultiCallDPStakingInfo(&_MultiCallContract.CallOpts) } @@ -1318,8 +1337,7 @@ func (_MultiCallContract *MultiCallContractCallerSession) MultiCallDPStakingInfo ClPools []common.Address ClStakings []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContract.Contract.MultiCallDPStakingInfo(&_MultiCallContract.CallOpts) } @@ -1330,8 +1348,7 @@ func (_MultiCallContract *MultiCallContractCaller) MultiCallStakingInfo(opts *bi TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { var out []interface{} err := _MultiCallContract.contract.Call(opts, &out, "multiCallStakingInfo") @@ -1340,11 +1357,16 @@ func (_MultiCallContract *MultiCallContractCaller) MultiCallStakingInfo(opts *bi AddressList []common.Address StakingAmounts []*big.Int }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.StakingAmounts = *abi.ConvertType(out[2], new([]*big.Int)).(*[]*big.Int) + return *outstruct, err + } // MultiCallStakingInfo is a free data retrieval call binding the contract method 0xadde19c6. @@ -1354,8 +1376,7 @@ func (_MultiCallContract *MultiCallContractSession) MultiCallStakingInfo() (stru TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContract.Contract.MultiCallStakingInfo(&_MultiCallContract.CallOpts) } @@ -1366,7 +1387,6 @@ func (_MultiCallContract *MultiCallContractCallerSession) MultiCallStakingInfo() TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContract.Contract.MultiCallStakingInfo(&_MultiCallContract.CallOpts) } diff --git a/contracts/contracts/system_contracts/proxy/proxy.go b/contracts/contracts/system_contracts/proxy/proxy.go index 28d5fd323..7b6a86c20 100644 --- a/contracts/contracts/system_contracts/proxy/proxy.go +++ b/contracts/contracts/system_contracts/proxy/proxy.go @@ -501,6 +501,7 @@ type ERC1967ProxyAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967ProxyAdminChangedIterator, error) { + logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -512,6 +513,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterAdminChanged(opts *bind.FilterO // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyAdminChanged) (event.Subscription, error) { + logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -552,6 +554,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseAdminChanged(log types.Log) (*ER if err := _ERC1967Proxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -632,6 +635,7 @@ type ERC1967ProxyBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967ProxyBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -648,6 +652,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterBeaconUpgraded(opts *bind.Filte // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -693,6 +698,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseBeaconUpgraded(log types.Log) (* if err := _ERC1967Proxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -773,6 +779,7 @@ type ERC1967ProxyUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -789,6 +796,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -834,6 +842,7 @@ func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC196 if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1069,6 +1078,7 @@ type ERC1967UpgradeAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UpgradeAdminChangedIterator, error) { + logs, sub, err := _ERC1967Upgrade.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -1080,6 +1090,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterAdminChanged(opts *bind.Fil // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeAdminChanged) (event.Subscription, error) { + logs, sub, err := _ERC1967Upgrade.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -1120,6 +1131,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) ParseAdminChanged(log types.Log) if err := _ERC1967Upgrade.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1200,6 +1212,7 @@ type ERC1967UpgradeBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UpgradeBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -1216,6 +1229,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterBeaconUpgraded(opts *bind.F // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -1261,6 +1275,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) ParseBeaconUpgraded(log types.Log if err := _ERC1967Upgrade.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1341,6 +1356,7 @@ type ERC1967UpgradeUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UpgradeUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1357,6 +1373,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) FilterUpgraded(opts *bind.FilterO // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967Upgrade *ERC1967UpgradeFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1402,6 +1419,7 @@ func (_ERC1967Upgrade *ERC1967UpgradeFilterer) ParseUpgraded(log types.Log) (*ER if err := _ERC1967Upgrade.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1420,8 +1438,8 @@ var IBeaconABI = IBeaconMetaData.ABI // IBeaconBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IBeaconBinRuntime = `` -// IBeaconFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IBeaconMetaData.Sigs instead. +// IBeaconFuncSigs maps the 4-byte function signature to its string representation. var IBeaconFuncSigs = IBeaconMetaData.Sigs // IBeacon is an auto generated Go binding around a Kaia contract. @@ -1572,6 +1590,7 @@ func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IBeacon.contract.Call(opts, &out, "implementation") + if err != nil { return *new(common.Address), err } @@ -1579,6 +1598,7 @@ func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Addre out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Implementation is a free data retrieval call binding the contract method 0x5c60da1b. @@ -1610,8 +1630,8 @@ var IERC1822ProxiableABI = IERC1822ProxiableMetaData.ABI // IERC1822ProxiableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC1822ProxiableBinRuntime = `` -// IERC1822ProxiableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC1822ProxiableMetaData.Sigs instead. +// IERC1822ProxiableFuncSigs maps the 4-byte function signature to its string representation. var IERC1822ProxiableFuncSigs = IERC1822ProxiableMetaData.Sigs // IERC1822Proxiable is an auto generated Go binding around a Kaia contract. @@ -1762,6 +1782,7 @@ func (_IERC1822Proxiable *IERC1822ProxiableTransactorRaw) Transact(opts *bind.Tr func (_IERC1822Proxiable *IERC1822ProxiableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _IERC1822Proxiable.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -1769,6 +1790,7 @@ func (_IERC1822Proxiable *IERC1822ProxiableCaller) ProxiableUUID(opts *bind.Call out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -2017,6 +2039,7 @@ type IERC1967AdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2028,6 +2051,7 @@ func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*I // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2068,6 +2092,7 @@ func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967Ad if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2148,6 +2173,7 @@ type IERC1967BeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2164,6 +2190,7 @@ func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, b // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2209,6 +2236,7 @@ func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967 if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2289,6 +2317,7 @@ type IERC1967Upgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -2305,6 +2334,7 @@ func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, impleme // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -2350,6 +2380,7 @@ func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgrad if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/system_contracts/rebalance/all.go b/contracts/contracts/system_contracts/rebalance/all.go index b6db4384a..c8cb242b9 100644 --- a/contracts/contracts/system_contracts/rebalance/all.go +++ b/contracts/contracts/system_contracts/rebalance/all.go @@ -44,8 +44,8 @@ var IRetiredContractABI = IRetiredContractMetaData.ABI // IRetiredContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IRetiredContractBinRuntime = `` -// IRetiredContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IRetiredContractMetaData.Sigs instead. +// IRetiredContractFuncSigs maps the 4-byte function signature to its string representation. var IRetiredContractFuncSigs = IRetiredContractMetaData.Sigs // IRetiredContract is an auto generated Go binding around a Kaia contract. @@ -196,8 +196,7 @@ func (_IRetiredContract *IRetiredContractTransactorRaw) Transact(opts *bind.Tran func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IRetiredContract.contract.Call(opts, &out, "getState") @@ -205,10 +204,15 @@ func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) ( AdminList []common.Address Quorom *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Quorom = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -217,8 +221,7 @@ func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) ( func (_IRetiredContract *IRetiredContractSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IRetiredContract.Contract.GetState(&_IRetiredContract.CallOpts) } @@ -228,8 +231,7 @@ func (_IRetiredContract *IRetiredContractSession) GetState() (struct { func (_IRetiredContract *IRetiredContractCallerSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IRetiredContract.Contract.GetState(&_IRetiredContract.CallOpts) } @@ -266,8 +268,8 @@ var ITreasuryRebalanceABI = ITreasuryRebalanceMetaData.ABI // ITreasuryRebalanceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ITreasuryRebalanceBinRuntime = `` -// ITreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ITreasuryRebalanceMetaData.Sigs instead. +// ITreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. var ITreasuryRebalanceFuncSigs = ITreasuryRebalanceMetaData.Sigs // ITreasuryRebalance is an auto generated Go binding around a Kaia contract. @@ -418,11 +420,13 @@ func (_ITreasuryRebalance *ITreasuryRebalanceTransactorRaw) Transact(opts *bind. func (_ITreasuryRebalance *ITreasuryRebalanceCaller) CheckRetiredsApproved(opts *bind.CallOpts) error { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "checkRetiredsApproved") + if err != nil { return err } return err + } // CheckRetiredsApproved is a free data retrieval call binding the contract method 0x966e0794. @@ -445,6 +449,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) CheckRetiredsApprove func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts, newbieAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getNewbie", newbieAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -453,6 +458,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbie(opts *bind.CallOp out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetNewbie is a free data retrieval call binding the contract method 0xeb5a8e55. @@ -475,6 +481,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetNewbie(newbieAddr func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbieCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getNewbieCount") + if err != nil { return *new(*big.Int), err } @@ -482,6 +489,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbieCount(opts *bind.C out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieCount is a free data retrieval call binding the contract method 0x91734d86. @@ -504,6 +512,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetNewbieCount() (*b func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetired(opts *bind.CallOpts, retiredAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getRetired", retiredAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -512,6 +521,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetired(opts *bind.CallO out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetRetired is a free data retrieval call binding the contract method 0xbf680590. @@ -534,6 +544,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetRetired(retiredAd func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetiredCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getRetiredCount") + if err != nil { return *new(*big.Int), err } @@ -541,6 +552,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetiredCount(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredCount is a free data retrieval call binding the contract method 0xd1ed33fc. @@ -563,6 +575,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetRetiredCount() (* func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -570,6 +583,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetTreasuryAmount(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -592,6 +606,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetTreasuryAmount() func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -599,6 +614,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Memo(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -621,6 +637,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) Memo() (string, erro func (_ITreasuryRebalance *ITreasuryRebalanceCaller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -628,6 +645,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) RebalanceBlockNumber(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -650,6 +668,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) RebalanceBlockNumber func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -657,6 +676,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Status(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -679,6 +699,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) Status() (uint8, err func (_ITreasuryRebalance *ITreasuryRebalanceCaller) SumOfRetiredBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "sumOfRetiredBalance") + if err != nil { return *new(*big.Int), err } @@ -686,6 +707,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) SumOfRetiredBalance(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfRetiredBalance is a free data retrieval call binding the contract method 0x45205a6b. @@ -970,6 +992,7 @@ type ITreasuryRebalanceApproved struct { // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterApproved(opts *bind.FilterOpts) (*ITreasuryRebalanceApprovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -981,6 +1004,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterApproved(opts *bind // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceApproved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -1021,6 +1045,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseApproved(log types.L if err := _ITreasuryRebalance.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1103,6 +1128,7 @@ type ITreasuryRebalanceContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterContractDeployed(opts *bind.FilterOpts) (*ITreasuryRebalanceContractDeployedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -1114,6 +1140,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterContractDeployed(op // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceContractDeployed) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -1154,6 +1181,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseContractDeployed(log if err := _ITreasuryRebalance.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1235,6 +1263,7 @@ type ITreasuryRebalanceFinalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterFinalized(opts *bind.FilterOpts) (*ITreasuryRebalanceFinalizedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -1246,6 +1275,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterFinalized(opts *bin // // Solidity: event Finalized(string memo, uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceFinalized) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -1286,6 +1316,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseFinalized(log types. if err := _ITreasuryRebalance.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1367,6 +1398,7 @@ type ITreasuryRebalanceNewbieRegistered struct { // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRegistered(opts *bind.FilterOpts) (*ITreasuryRebalanceNewbieRegisteredIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -1378,6 +1410,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRegistered(op // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchNewbieRegistered(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceNewbieRegistered) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -1418,6 +1451,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseNewbieRegistered(log if err := _ITreasuryRebalance.contract.UnpackLog(event, "NewbieRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1498,6 +1532,7 @@ type ITreasuryRebalanceNewbieRemoved struct { // // Solidity: event NewbieRemoved(address newbie) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRemoved(opts *bind.FilterOpts) (*ITreasuryRebalanceNewbieRemovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -1509,6 +1544,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRemoved(opts // // Solidity: event NewbieRemoved(address newbie) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchNewbieRemoved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceNewbieRemoved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -1549,6 +1585,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseNewbieRemoved(log ty if err := _ITreasuryRebalance.contract.UnpackLog(event, "NewbieRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1629,6 +1666,7 @@ type ITreasuryRebalanceRetiredRegistered struct { // // Solidity: event RetiredRegistered(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRegistered(opts *bind.FilterOpts) (*ITreasuryRebalanceRetiredRegisteredIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -1640,6 +1678,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRegistered(o // // Solidity: event RetiredRegistered(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchRetiredRegistered(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceRetiredRegistered) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -1680,6 +1719,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseRetiredRegistered(lo if err := _ITreasuryRebalance.contract.UnpackLog(event, "RetiredRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1760,6 +1800,7 @@ type ITreasuryRebalanceRetiredRemoved struct { // // Solidity: event RetiredRemoved(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRemoved(opts *bind.FilterOpts) (*ITreasuryRebalanceRetiredRemovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -1771,6 +1812,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRemoved(opts // // Solidity: event RetiredRemoved(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchRetiredRemoved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceRetiredRemoved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -1811,6 +1853,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseRetiredRemoved(log t if err := _ITreasuryRebalance.contract.UnpackLog(event, "RetiredRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1891,6 +1934,7 @@ type ITreasuryRebalanceStatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterStatusChanged(opts *bind.FilterOpts) (*ITreasuryRebalanceStatusChangedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -1902,6 +1946,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterStatusChanged(opts // // Solidity: event StatusChanged(uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceStatusChanged) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -1942,6 +1987,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseStatusChanged(log ty if err := _ITreasuryRebalance.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1960,8 +2006,8 @@ var IZeroedContractABI = IZeroedContractMetaData.ABI // IZeroedContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IZeroedContractBinRuntime = `` -// IZeroedContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IZeroedContractMetaData.Sigs instead. +// IZeroedContractFuncSigs maps the 4-byte function signature to its string representation. var IZeroedContractFuncSigs = IZeroedContractMetaData.Sigs // IZeroedContract is an auto generated Go binding around a Kaia contract. @@ -2112,8 +2158,7 @@ func (_IZeroedContract *IZeroedContractTransactorRaw) Transact(opts *bind.Transa func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IZeroedContract.contract.Call(opts, &out, "getState") @@ -2121,10 +2166,15 @@ func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (st AdminList []common.Address Quorom *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Quorom = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -2133,8 +2183,7 @@ func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (st func (_IZeroedContract *IZeroedContractSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IZeroedContract.Contract.GetState(&_IZeroedContract.CallOpts) } @@ -2144,8 +2193,7 @@ func (_IZeroedContract *IZeroedContractSession) GetState() (struct { func (_IZeroedContract *IZeroedContractCallerSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IZeroedContract.Contract.GetState(&_IZeroedContract.CallOpts) } @@ -2168,8 +2216,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `608060405234801561001057600080fd5b506004361061004c5760003560e01c8063715018a6146100515780638da5cb5b1461005b5780638f32d59b1461007b578063f2fde38b14610099575b600080fd5b6100596100ac565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6000546001600160a01b031633146040519015158152602001610072565b6100596100a736600461027b565b610155565b6000546001600160a01b0316331461010b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146101af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610102565b6101b8816101bb565b50565b6001600160a01b0381166102205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610102565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561028d57600080fd5b81356001600160a01b03811681146102a457600080fd5b939250505056fea2646970667358221220f69393ded8e7101091799304ce90e6a51b8cf5e03b617676571c199bd79c95d964736f6c63430008130033` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // OwnableBin is the compiled bytecode used for deploying new contracts. @@ -2341,6 +2389,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -2348,6 +2397,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -2370,6 +2420,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -2377,6 +2428,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -2513,6 +2565,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -2533,6 +2586,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -2582,6 +2636,7 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2620,7 +2675,7 @@ var TreasuryRebalanceMetaData = &bind.MetaData{ "45205a6b": "sumOfRetiredBalance()", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b5060405162002696380380620026968339810160408190526200003491620000c8565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e2565b60405180910390a15062000119565b600060208284031215620000db57600080fd5b5051919050565b60608101600485106200010557634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b61256d80620001296000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea26469706673582212204680134776f9249e58cbc4909a9b899ff12f8578cb7f31b1e2b3a2b1d44f65a064736f6c63430008130033", + Bin: "0x60806040523480156200001157600080fd5b5060405162002696380380620026968339810160408190526200003491620000c8565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e2565b60405180910390a15062000119565b600060208284031215620000db57600080fd5b5051919050565b60608101600485106200010557634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b61256d80620001296000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220271ca30f808c823ad097bf2f2a89f81a9e748d092d7bdb6bc735134ab17fc66164736f6c63430008130033", } // TreasuryRebalanceABI is the input ABI used to generate the binding from. @@ -2628,10 +2683,10 @@ var TreasuryRebalanceMetaData = &bind.MetaData{ var TreasuryRebalanceABI = TreasuryRebalanceMetaData.ABI // TreasuryRebalanceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const TreasuryRebalanceBinRuntime = `6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea26469706673582212204680134776f9249e58cbc4909a9b899ff12f8578cb7f31b1e2b3a2b1d44f65a064736f6c63430008130033` +const TreasuryRebalanceBinRuntime = `6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220271ca30f808c823ad097bf2f2a89f81a9e748d092d7bdb6bc735134ab17fc66164736f6c63430008130033` -// TreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceMetaData.Sigs instead. +// TreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceFuncSigs = TreasuryRebalanceMetaData.Sigs // TreasuryRebalanceBin is the compiled bytecode used for deploying new contracts. @@ -2803,11 +2858,13 @@ func (_TreasuryRebalance *TreasuryRebalanceTransactorRaw) Transact(opts *bind.Tr func (_TreasuryRebalance *TreasuryRebalanceCaller) CheckRetiredsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "checkRetiredsApproved") + if err != nil { return err } return err + } // CheckRetiredsApproved is a free data retrieval call binding the contract method 0x966e0794. @@ -2830,6 +2887,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) CheckRetiredsApproved( func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts, _newbieAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbie", _newbieAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -2838,6 +2896,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetNewbie is a free data retrieval call binding the contract method 0xeb5a8e55. @@ -2860,6 +2919,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbie(_newbieAddre func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbieCount") + if err != nil { return *new(*big.Int), err } @@ -2867,6 +2927,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieCount(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieCount is a free data retrieval call binding the contract method 0x91734d86. @@ -2889,6 +2950,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbieCount() (*big func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieIndex(opts *bind.CallOpts, _newbieAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbieIndex", _newbieAddress) + if err != nil { return *new(*big.Int), err } @@ -2896,6 +2958,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieIndex(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieIndex is a free data retrieval call binding the contract method 0x11f5c466. @@ -2918,6 +2981,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbieIndex(_newbie func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetired(opts *bind.CallOpts, _retiredAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetired", _retiredAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -2926,6 +2990,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetired(opts *bind.CallOpt out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetRetired is a free data retrieval call binding the contract method 0xbf680590. @@ -2948,6 +3013,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetired(_retiredAdd func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetiredCount") + if err != nil { return *new(*big.Int), err } @@ -2955,6 +3021,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredCount(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredCount is a free data retrieval call binding the contract method 0xd1ed33fc. @@ -2977,6 +3044,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetiredCount() (*bi func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredIndex(opts *bind.CallOpts, _retiredAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetiredIndex", _retiredAddress) + if err != nil { return *new(*big.Int), err } @@ -2984,6 +3052,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredIndex(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredIndex is a free data retrieval call binding the contract method 0x681f6e7c. @@ -3006,6 +3075,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetiredIndex(_retir func (_TreasuryRebalance *TreasuryRebalanceCaller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -3013,6 +3083,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetTreasuryAmount(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -3035,6 +3106,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetTreasuryAmount() (* func (_TreasuryRebalance *TreasuryRebalanceCaller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -3042,6 +3114,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) IsContractAddr(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -3064,6 +3137,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) IsContractAddr(_addr c func (_TreasuryRebalance *TreasuryRebalanceCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -3071,6 +3145,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) IsOwner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -3093,6 +3168,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) IsOwner() (bool, error func (_TreasuryRebalance *TreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -3100,6 +3176,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -3122,6 +3199,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Memo() (string, error) func (_TreasuryRebalance *TreasuryRebalanceCaller) NewbieExists(opts *bind.CallOpts, _newbieAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "newbieExists", _newbieAddress) + if err != nil { return *new(bool), err } @@ -3129,6 +3207,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) NewbieExists(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // NewbieExists is a free data retrieval call binding the contract method 0x683e13cb. @@ -3151,8 +3230,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) NewbieExists(_newbieAd func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "newbies", arg0) @@ -3160,10 +3238,15 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, Newbie common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Newbie = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Newbies is a free data retrieval call binding the contract method 0x94393e11. @@ -3172,8 +3255,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, func (_TreasuryRebalance *TreasuryRebalanceSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalance.Contract.Newbies(&_TreasuryRebalance.CallOpts, arg0) } @@ -3183,8 +3265,7 @@ func (_TreasuryRebalance *TreasuryRebalanceSession) Newbies(arg0 *big.Int) (stru func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalance.Contract.Newbies(&_TreasuryRebalance.CallOpts, arg0) } @@ -3194,6 +3275,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Newbies(arg0 *big.Int) func (_TreasuryRebalance *TreasuryRebalanceCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -3201,6 +3283,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -3223,6 +3306,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Owner() (common.Addres func (_TreasuryRebalance *TreasuryRebalanceCaller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -3230,6 +3314,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) RebalanceBlockNumber(opts *bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -3252,6 +3337,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) RebalanceBlockNumber() func (_TreasuryRebalance *TreasuryRebalanceCaller) RetiredExists(opts *bind.CallOpts, _retiredAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "retiredExists", _retiredAddress) + if err != nil { return *new(bool), err } @@ -3259,6 +3345,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) RetiredExists(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // RetiredExists is a free data retrieval call binding the contract method 0x01784e05. @@ -3281,6 +3368,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) RetiredExists(_retired func (_TreasuryRebalance *TreasuryRebalanceCaller) Retirees(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "retirees", arg0) + if err != nil { return *new(common.Address), err } @@ -3288,6 +3376,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Retirees(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Retirees is a free data retrieval call binding the contract method 0x5a12667b. @@ -3310,6 +3399,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Retirees(arg0 *big.Int func (_TreasuryRebalance *TreasuryRebalanceCaller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -3317,6 +3407,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Status(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -3339,6 +3430,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Status() (uint8, error func (_TreasuryRebalance *TreasuryRebalanceCaller) SumOfRetiredBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "sumOfRetiredBalance") + if err != nil { return *new(*big.Int), err } @@ -3346,6 +3438,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) SumOfRetiredBalance(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfRetiredBalance is a free data retrieval call binding the contract method 0x45205a6b. @@ -3693,6 +3786,7 @@ type TreasuryRebalanceApproved struct { // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceApprovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -3704,6 +3798,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterApproved(opts *bind.F // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceApproved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -3744,6 +3839,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseApproved(log types.Log if err := _TreasuryRebalance.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3826,6 +3922,7 @@ type TreasuryRebalanceContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -3837,6 +3934,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterContractDeployed(opts // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -3877,6 +3975,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseContractDeployed(log t if err := _TreasuryRebalance.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3958,6 +4057,7 @@ type TreasuryRebalanceFinalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceFinalizedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -3969,6 +4069,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterFinalized(opts *bind. // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceFinalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -4009,6 +4110,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseFinalized(log types.Lo if err := _TreasuryRebalance.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4090,6 +4192,7 @@ type TreasuryRebalanceNewbieRegistered struct { // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceNewbieRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -4101,6 +4204,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRegistered(opts // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchNewbieRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceNewbieRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -4141,6 +4245,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseNewbieRegistered(log t if err := _TreasuryRebalance.contract.UnpackLog(event, "NewbieRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4221,6 +4326,7 @@ type TreasuryRebalanceNewbieRemoved struct { // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceNewbieRemovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -4232,6 +4338,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRemoved(opts *b // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchNewbieRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceNewbieRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -4272,6 +4379,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseNewbieRemoved(log type if err := _TreasuryRebalance.contract.UnpackLog(event, "NewbieRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4353,6 +4461,7 @@ type TreasuryRebalanceOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4373,6 +4482,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4422,6 +4532,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseOwnershipTransferred(l if err := _TreasuryRebalance.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4502,6 +4613,7 @@ type TreasuryRebalanceRetiredRegistered struct { // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceRetiredRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -4513,6 +4625,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRegistered(opt // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchRetiredRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceRetiredRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -4553,6 +4666,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseRetiredRegistered(log if err := _TreasuryRebalance.contract.UnpackLog(event, "RetiredRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4633,6 +4747,7 @@ type TreasuryRebalanceRetiredRemoved struct { // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceRetiredRemovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -4644,6 +4759,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRemoved(opts * // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchRetiredRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceRetiredRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -4684,6 +4800,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseRetiredRemoved(log typ if err := _TreasuryRebalance.contract.UnpackLog(event, "RetiredRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4764,6 +4881,7 @@ type TreasuryRebalanceStatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceStatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -4775,6 +4893,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterStatusChanged(opts *b // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceStatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -4815,6 +4934,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseStatusChanged(log type if err := _TreasuryRebalance.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4866,8 +4986,8 @@ var TreasuryRebalanceV2ABI = TreasuryRebalanceV2MetaData.ABI // TreasuryRebalanceV2BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const TreasuryRebalanceV2BinRuntime = `608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063d826f88f116100ad578063e2384cb31161007c578063e2384cb31461041c578063ecd8677814610430578063ed35552914610443578063f2fde38b1461044b578063faaf9ca61461045e57600080fd5b8063d826f88f146103e6578063daea85c5146103ee578063db27b50b14610401578063e20fcf001461041457600080fd5b80639dc954ba116100e95780639dc954ba146103975780639e59eb141461039f578063bd786f57146103b2578063cea1c338146103c557600080fd5b80638da5cb5b146103585780638f32d59b1461036957806390d334561461037c5780639ab29b701461038f57600080fd5b806349a3fb45116101925780635f9b0df7116101615780635f9b0df7146102ff57806362aa3e9114610312578063715018a61461033d5780637bfaf7b71461034557600080fd5b806349a3fb45146102aa578063518592da146102c157806358c3b870146102d45780635f8798c0146102dc57600080fd5b806328c5cf0a116101ce57806328c5cf0a14610253578063343e2c851461025b5780633a7a47e21461028d57806348409096146102a257600080fd5b80630287d126146102005780631804692f1461020a578063200d2ed21461021d57806327704cb514610240575b600080fd5b610208610466565b005b610208610218366004611f6e565b610657565b60035461022a9060ff1681565b6040516102379190611fbf565b60405180910390f35b61020861024e366004611fe2565b610772565b610208610927565b61026e610269366004611f6e565b610ac3565b604080516001600160a01b039093168352602083019190915201610237565b610295610afb565b6040516102379190612006565b610208610b89565b6102b360045481565b604051908152602001610237565b6102b36102cf366004611fe2565b610c35565b610295610ca5565b6102ef6102ea366004611fe2565b610cb2565b6040519015158152602001610237565b61020861030d366004611fe2565b610d69565b610325610320366004611f6e565b610eac565b6040516001600160a01b039091168152602001610237565b610208610edb565b6102b3610353366004611fe2565b610f4f565b6000546001600160a01b0316610325565b6000546001600160a01b031633146102ef565b61020861038a36600461209b565b610fb4565b6102b3611026565b6001546102b3565b61026e6103ad366004611fe2565b611087565b6102ef6103c0366004611fe2565b61113a565b6103d86103d3366004611fe2565b6111ea565b604051610237929190612130565b6102086112d1565b6102086103fc366004611fe2565b6113ff565b61020861040f366004611fe2565b6115e0565b6102b3611775565b6102ef61042a366004611fe2565b3b151590565b61020861043e36600461218c565b6117c9565b6002546102b3565b610208610459366004611fe2565b6119b5565b6102086119eb565b60015460005b8181101561065357600060018281548110610489576104896121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561050957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104eb575b5050505050815250509050600061052482600001513b151590565b905080156105f45760008061053c8460000151611a68565b9150915080846020015151101561056e5760405162461bcd60e51b8152600401610565906121ce565b60405180910390fd5b602084015180516000805b828110156105c9576105a4848281518110610596576105966121b8565b602002602001015187611ae1565b156105b757816105b381612226565b9250505b806105c181612226565b915050610579565b50838110156105ea5760405162461bcd60e51b8152600401610565906121ce565b505050505061063e565b81602001515160011461063e5760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610565565b5050808061064b90612226565b91505061046c565b5050565b6000546001600160a01b031633146106815760405162461bcd60e51b81526004016105659061223f565b60045443106106f85760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d62657200006064820152608401610565565b80431061076d5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b0000000000006064820152608401610565565b600455565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff16908111156107b6576107b6611f87565b146107d35760405162461bcd60e51b815260040161056590612274565b60006107de83610f4f565b9050600019810361082c5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6002805461083c906001906122ab565b8154811061084c5761084c6121b8565b90600052602060002090600202016002828154811061086d5761086d6121b8565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108b9576108b96122be565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6000546001600160a01b031633146109515760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff169081111561096b5761096b611f87565b146109885760405162461bcd60e51b815260040161056590612274565b60045443116109f85760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610565565b600060058054610a07906122d4565b905011610a6c5760405162461bcd60e51b815260206004820152602d60248201527f6e6f2070656e64696e67206d656d6f2c2063616e6e6f742066696e616c697a6560448201526c20776974686f7574206d656d6f60981b6064820152608401610565565b6006610a7960058261235c565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca640491610ab89160069190612439565b60405180910390a150565b60028181548110610ad357600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058054610b08906122d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b34906122d4565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b505050505081565b6000546001600160a01b03163314610bb35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610bcd57610bcd611f87565b14610bea5760405162461bcd60e51b815260040161056590612274565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610ab89160ff90911690611fbf565b600154600090815b81811015610c9a57836001600160a01b031660018281548110610c6257610c626121b8565b60009182526020909120600290910201546001600160a01b031603610c88579392505050565b80610c9281612226565b915050610c3d565b506000199392505050565b60068054610b08906122d4565b60006001600160a01b038216610cfc5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60015460005b81811015610d6257836001600160a01b031660018281548110610d2757610d276121b8565b60009182526020909120600290910201546001600160a01b031603610d50575060019392505050565b80610d5a81612226565b915050610d02565b5050919050565b6000546001600160a01b03163314610d935760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610dad57610dad611f87565b14610dca5760405162461bcd60e51b815260040161056590612274565b610dd382610cb2565b15610e2c5760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610565565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e929060200161091a565b60018181548110610ebc57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016105659061223f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610c9a57836001600160a01b031660028281548110610f7c57610f7c6121b8565b60009182526020909120600290910201546001600160a01b031603610fa2579392505050565b80610fac81612226565b915050610f57565b6000546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff1690811115610ff857610ff8611f87565b146110155760405162461bcd60e51b815260040161056590612274565b600561102183826124ce565b505050565b600154600090815b818110156110825760018181548110611049576110496121b8565b600091825260209091206002909102015461106e906001600160a01b03163184612586565b92508061107a81612226565b91505061102e565b505090565b600080600061109584610f4f565b905060001981036110e35760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6000600282815481106110f8576110f86121b8565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b0382166111845760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60025460005b81811015610d6257836001600160a01b0316600282815481106111af576111af6121b8565b60009182526020909120600290910201546001600160a01b0316036111d8575060019392505050565b806111e281612226565b91505061118a565b6000606060006111f984610c35565b9050600019810361121c5760405162461bcd60e51b815260040161056590612599565b600060018281548110611231576112316121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611293575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146112fb5760405162461bcd60e51b81526004016105659061223f565b6003805460ff168181111561131257611312611f87565b036113725760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610565565b60045443106113cf5760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b6064820152608401610565565b6113db60016000611e1b565b6113e760026000611e3c565b6113f360066000611e5d565b6003805460ff19169055565b6001806003805460ff169081111561141957611419611f87565b146114365760405162461bcd60e51b815260040161056590612274565b61143f82610cb2565b6114a15760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b6064820152608401610565565b813b15158061151857336001600160a01b0384161461150e5760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b6064820152608401610565565b6110218333611b4c565b60008061152485611a68565b9150915081516000036115795760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610565565b6115833383611ae1565b6115cf5760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610565565b6115d98533611b4c565b5050505050565b6000546001600160a01b0316331461160a5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561162457611624611f87565b146116415760405162461bcd60e51b815260040161056590612274565b600061164c83610c35565b9050600019810361166f5760405162461bcd60e51b815260040161056590612599565b6001805461167e9082906122ab565b8154811061168e5761168e6121b8565b9060005260206000209060020201600182815481106116af576116af6121b8565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546116f29284019190611e97565b509050506001805480611707576117076122be565b60008281526020812060026000199093019283020180546001600160a01b0319168155906117386001830182611ee7565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c9060200161091a565b600254600090815b818110156110825760028181548110611798576117986121b8565b906000526020600020906002020160010154836117b59190612586565b9250806117c181612226565b91505061177d565b6000546001600160a01b031633146117f35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561180d5761180d611f87565b1461182a5760405162461bcd60e51b815260040161056590612274565b6118338361113a565b156118905760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b6064820152608401610565565b816000036118e05760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610565565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b031633146119df5760405162461bcd60e51b81526004016105659061223f565b6119e881611d5b565b50565b6000546001600160a01b03163314611a155760405162461bcd60e51b81526004016105659061223f565b6001806003805460ff1690811115611a2f57611a2f611f87565b14611a4c5760405162461bcd60e51b815260040161056590612274565b611a54610466565b600380546002919060ff1916600183610bf9565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad691908101906125c8565b909590945092505050565b8051600090815b81811015611b3f57838181518110611b0257611b026121b8565b60200260200101516001600160a01b0316856001600160a01b031603611b2d57600192505050611b46565b80611b3781612226565b915050611ae8565b5060009150505b92915050565b6000611b5783610c35565b90506000198103611b7a5760405162461bcd60e51b815260040161056590612599565b600060018281548110611b8f57611b8f6121b8565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611bf457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bd6575b505083519394506000925050505b81811015611c8957846001600160a01b0316838281518110611c2657611c266121b8565b60200260200101516001600160a01b031603611c775760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610565565b80611c8181612226565b915050611c02565b5060018381548110611c9d57611c9d6121b8565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611d1457611d146121b8565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611dc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610565565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b50805460008255600202906000526020600020908101906119e89190611f05565b50805460008255600202906000526020600020908101906119e89190611f33565b508054611e69906122d4565b6000825580601f10611e79575050565b601f0160209004906000526020600020908101906119e89190611f59565b828054828255906000526020600020908101928215611ed75760005260206000209182015b82811115611ed7578254825591600101919060010190611ebc565b50611ee3929150611f59565b5090565b50805460008255906000526020600020908101906119e89190611f59565b80821115611ee35780546001600160a01b03191681556000611f2a6001830182611ee7565b50600201611f05565b5b80821115611ee35780546001600160a01b031916815560006001820155600201611f34565b5b80821115611ee35760008155600101611f5a565b600060208284031215611f8057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110611fbb57634e487b7160e01b600052602160045260246000fd5b9052565b60208101611b468284611f9d565b6001600160a01b03811681146119e857600080fd5b600060208284031215611ff457600080fd5b8135611fff81611fcd565b9392505050565b600060208083528351808285015260005b8181101561203357858101830151858201604001528201612017565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561209357612093612054565b604052919050565b600060208083850312156120ae57600080fd5b823567ffffffffffffffff808211156120c657600080fd5b818501915085601f8301126120da57600080fd5b8135818111156120ec576120ec612054565b6120fe601f8201601f1916850161206a565b9150808252868482850101111561211457600080fd5b8084840185840137600090820190930192909252509392505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561217e578551851683529483019491830191600101612160565b509098975050505050505050565b6000806040838503121561219f57600080fd5b82356121aa81611fcd565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161223857612238612210565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611b4657611b46612210565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806122e857607f821691505b60208210810361230857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561102157600081815260208120601f850160051c810160208610156123355750805b601f850160051c820191505b8181101561235457828155600101612341565b505050505050565b818103612367575050565b61237182546122d4565b67ffffffffffffffff81111561238957612389612054565b61239d8161239784546122d4565b8461230e565b6000601f8211600181146123d157600083156123b95750848201545b600019600385901b1c1916600184901b1784556115d9565b600085815260209020601f19841690600086815260209020845b8381101561240b57828601548255600195860195909101906020016123eb565b50858310156124295781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600080845461244b816122d4565b806040860152606060018084166000811461246d5760018114612487576124b8565b60ff1985168884015283151560051b8801830195506124b8565b8960005260208060002060005b868110156124af5781548b8201870152908401908201612494565b8a018501975050505b505050505080915050611fff6020830184611f9d565b815167ffffffffffffffff8111156124e8576124e8612054565b6124f68161239784546122d4565b602080601f83116001811461252b57600084156125135750858301515b600019600386901b1c1916600185901b178555612354565b600085815260208120601f198616915b8281101561255a5788860151825594840194600190910190840161253b565b508582101561242957939096015160001960f8600387901b161c19169092555050600190811b01905550565b80820180821115611b4657611b46612210565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b600080604083850312156125db57600080fd5b825167ffffffffffffffff808211156125f357600080fd5b818501915085601f83011261260757600080fd5b815160208282111561261b5761261b612054565b8160051b925061262c81840161206a565b828152928401810192818101908985111561264657600080fd5b948201945b84861015612670578551935061266084611fcd565b838252948201949082019061264b565b9790910151969896975050505050505056fea2646970667358221220fba8d3f43426144380cebd0df9d2859f044183b0bfbb546aee4dc066acb75b0b64736f6c63430008130033` -// TreasuryRebalanceV2FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceV2MetaData.Sigs instead. +// TreasuryRebalanceV2FuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceV2FuncSigs = TreasuryRebalanceV2MetaData.Sigs // TreasuryRebalanceV2Bin is the compiled bytecode used for deploying new contracts. @@ -5039,6 +5159,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorRaw) Transact(opts *bin func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) AllocatedExists(opts *bind.CallOpts, _allocatedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "allocatedExists", _allocatedAddress) + if err != nil { return *new(bool), err } @@ -5046,6 +5167,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) AllocatedExists(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // AllocatedExists is a free data retrieval call binding the contract method 0xbd786f57. @@ -5068,8 +5190,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) AllocatedExists(_a func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.CallOpts, arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "allocateds", arg0) @@ -5077,10 +5198,15 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.Cal Addr common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Allocateds is a free data retrieval call binding the contract method 0x343e2c85. @@ -5089,8 +5215,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.Cal func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceV2.Contract.Allocateds(&_TreasuryRebalanceV2.CallOpts, arg0) } @@ -5100,8 +5225,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) Allocateds(arg0 *big.Int func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceV2.Contract.Allocateds(&_TreasuryRebalanceV2.CallOpts, arg0) } @@ -5111,11 +5235,13 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Allocateds(arg0 *b func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) CheckZeroedsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "checkZeroedsApproved") + if err != nil { return err } return err + } // CheckZeroedsApproved is a free data retrieval call binding the contract method 0x0287d126. @@ -5138,6 +5264,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) CheckZeroedsApprov func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocated(opts *bind.CallOpts, _allocatedAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocated", _allocatedAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -5146,6 +5273,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocated(opts *bind.C out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetAllocated is a free data retrieval call binding the contract method 0x9e59eb14. @@ -5168,6 +5296,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocated(_allo func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocatedCount") + if err != nil { return *new(*big.Int), err } @@ -5175,6 +5304,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedCount(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedCount is a free data retrieval call binding the contract method 0xed355529. @@ -5197,6 +5327,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocatedCount( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedIndex(opts *bind.CallOpts, _allocatedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocatedIndex", _allocatedAddress) + if err != nil { return *new(*big.Int), err } @@ -5204,6 +5335,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedIndex(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedIndex is a free data retrieval call binding the contract method 0x7bfaf7b7. @@ -5226,6 +5358,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocatedIndex( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -5233,6 +5366,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetTreasuryAmount(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -5255,6 +5389,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetTreasuryAmount( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroed(opts *bind.CallOpts, _zeroedAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroed", _zeroedAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -5263,6 +5398,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroed(opts *bind.Call out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetZeroed is a free data retrieval call binding the contract method 0xcea1c338. @@ -5285,6 +5421,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroed(_zeroedA func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroedCount") + if err != nil { return *new(*big.Int), err } @@ -5292,6 +5429,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedCount(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedCount is a free data retrieval call binding the contract method 0x9dc954ba. @@ -5314,6 +5452,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroedCount() ( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedIndex(opts *bind.CallOpts, _zeroedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroedIndex", _zeroedAddress) + if err != nil { return *new(*big.Int), err } @@ -5321,6 +5460,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedIndex(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedIndex is a free data retrieval call binding the contract method 0x518592da. @@ -5343,6 +5483,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroedIndex(_ze func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -5350,6 +5491,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsContractAddr(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -5372,6 +5514,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) IsContractAddr(_ad func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -5379,6 +5522,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsOwner(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -5401,6 +5545,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) IsOwner() (bool, e func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -5408,6 +5553,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Memo(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -5430,6 +5576,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Memo() (string, er func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -5437,6 +5584,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Owner(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -5490,6 +5638,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) PendingMemo() (str func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -5497,6 +5646,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) RebalanceBlockNumber(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -5519,6 +5669,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) RebalanceBlockNumb func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -5526,6 +5677,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Status(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -5548,6 +5700,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Status() (uint8, e func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) SumOfZeroedBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "sumOfZeroedBalance") + if err != nil { return *new(*big.Int), err } @@ -5555,6 +5708,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) SumOfZeroedBalance(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfZeroedBalance is a free data retrieval call binding the contract method 0x9ab29b70. @@ -5577,6 +5731,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) SumOfZeroedBalance func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) ZeroedExists(opts *bind.CallOpts, _zeroedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "zeroedExists", _zeroedAddress) + if err != nil { return *new(bool), err } @@ -5584,6 +5739,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) ZeroedExists(opts *bind.C out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ZeroedExists is a free data retrieval call binding the contract method 0x5f8798c0. @@ -5606,6 +5762,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) ZeroedExists(_zero func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Zeroeds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "zeroeds", arg0) + if err != nil { return *new(common.Address), err } @@ -5613,6 +5770,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Zeroeds(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Zeroeds is a free data retrieval call binding the contract method 0x62aa3e91. @@ -5980,6 +6138,7 @@ type TreasuryRebalanceV2AllocatedRegistered struct { // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceV2AllocatedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -5991,6 +6150,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRegister // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchAllocatedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2AllocatedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -6031,6 +6191,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseAllocatedRegistere if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "AllocatedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6111,6 +6272,7 @@ type TreasuryRebalanceV2AllocatedRemoved struct { // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceV2AllocatedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -6122,6 +6284,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRemoved( // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchAllocatedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2AllocatedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -6162,6 +6325,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseAllocatedRemoved(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "AllocatedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6244,6 +6408,7 @@ type TreasuryRebalanceV2Approved struct { // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceV2ApprovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -6255,6 +6420,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterApproved(opts *bi // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2Approved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -6295,6 +6461,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseApproved(log types if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6377,6 +6544,7 @@ type TreasuryRebalanceV2ContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceV2ContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -6388,6 +6556,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterContractDeployed( // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -6428,6 +6597,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseContractDeployed(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6509,6 +6679,7 @@ type TreasuryRebalanceV2Finalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceV2FinalizedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -6520,6 +6691,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterFinalized(opts *b // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2Finalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -6560,6 +6732,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseFinalized(log type if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6641,6 +6814,7 @@ type TreasuryRebalanceV2OwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceV2OwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -6661,6 +6835,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterOwnershipTransfer // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -6710,6 +6885,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseOwnershipTransferr if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6790,6 +6966,7 @@ type TreasuryRebalanceV2StatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceV2StatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -6801,6 +6978,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterStatusChanged(opt // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2StatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -6841,6 +7019,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseStatusChanged(log if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6921,6 +7100,7 @@ type TreasuryRebalanceV2ZeroedRegistered struct { // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceV2ZeroedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -6932,6 +7112,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRegistered( // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchZeroedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ZeroedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -6972,6 +7153,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseZeroedRegistered(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ZeroedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7052,6 +7234,7 @@ type TreasuryRebalanceV2ZeroedRemoved struct { // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceV2ZeroedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -7063,6 +7246,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRemoved(opt // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchZeroedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ZeroedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -7103,5 +7287,6 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseZeroedRemoved(log if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ZeroedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/testing/extbridge/ext_bridge.go b/contracts/contracts/testing/extbridge/ext_bridge.go index 6c8a534c9..4f61516b6 100644 --- a/contracts/contracts/testing/extbridge/ext_bridge.go +++ b/contracts/contracts/testing/extbridge/ext_bridge.go @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029", } // AddressABI is the input ABI used to generate the binding from. @@ -40,7 +40,7 @@ var AddressMetaData = &bind.MetaData{ var AddressABI = AddressMetaData.ABI // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029` +const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029` // AddressBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use AddressMetaData.Bin instead. @@ -222,8 +222,8 @@ var BridgeFeeABI = BridgeFeeMetaData.ABI // BridgeFeeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const BridgeFeeBinRuntime = `` -// BridgeFeeFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use BridgeFeeMetaData.Sigs instead. +// BridgeFeeFuncSigs maps the 4-byte function signature to its string representation. var BridgeFeeFuncSigs = BridgeFeeMetaData.Sigs // BridgeFee is an auto generated Go binding around a Kaia contract. @@ -374,6 +374,7 @@ func (_BridgeFee *BridgeFeeTransactorRaw) Transact(opts *bind.TransactOpts, meth func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _BridgeFee.contract.Call(opts, &out, "feeOfERC20", arg0) + if err != nil { return *new(*big.Int), err } @@ -381,6 +382,7 @@ func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.A out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. @@ -403,6 +405,7 @@ func (_BridgeFee *BridgeFeeCallerSession) FeeOfERC20(arg0 common.Address) (*big. func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _BridgeFee.contract.Call(opts, &out, "feeOfKLAY") + if err != nil { return *new(*big.Int), err } @@ -410,6 +413,7 @@ func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, err out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. @@ -432,6 +436,7 @@ func (_BridgeFee *BridgeFeeCallerSession) FeeOfKLAY() (*big.Int, error) { func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _BridgeFee.contract.Call(opts, &out, "feeReceiver") + if err != nil { return *new(common.Address), err } @@ -439,6 +444,7 @@ func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Addr out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. @@ -533,6 +539,7 @@ type BridgeFeeERC20FeeChanged struct { // // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeFeeERC20FeeChangedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -553,6 +560,7 @@ func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts // // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -602,6 +610,7 @@ func (_BridgeFee *BridgeFeeFilterer) ParseERC20FeeChanged(log types.Log) (*Bridg if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -682,6 +691,7 @@ type BridgeFeeFeeReceiverChanged struct { // // Solidity: event FeeReceiverChanged(address indexed feeReceiver) func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeFeeReceiverChangedIterator, error) { + var feeReceiverRule []interface{} for _, feeReceiverItem := range feeReceiver { feeReceiverRule = append(feeReceiverRule, feeReceiverItem) @@ -698,6 +708,7 @@ func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterO // // Solidity: event FeeReceiverChanged(address indexed feeReceiver) func (_BridgeFee *BridgeFeeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { + var feeReceiverRule []interface{} for _, feeReceiverItem := range feeReceiver { feeReceiverRule = append(feeReceiverRule, feeReceiverItem) @@ -743,6 +754,7 @@ func (_BridgeFee *BridgeFeeFilterer) ParseFeeReceiverChanged(log types.Log) (*Br if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -823,6 +835,7 @@ type BridgeFeeKLAYFeeChanged struct { // // Solidity: event KLAYFeeChanged(uint256 indexed fee) func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeFeeKLAYFeeChangedIterator, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) @@ -839,6 +852,7 @@ func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, // // Solidity: event KLAYFeeChanged(uint256 indexed fee) func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) @@ -884,6 +898,7 @@ func (_BridgeFee *BridgeFeeFilterer) ParseKLAYFeeChanged(log types.Log) (*Bridge if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -893,7 +908,7 @@ var BridgeHandledRequestsMetaData = &bind.MetaData{ Sigs: map[string]string{ "8a75eee2": "handledRequestTx(bytes32)", }, - Bin: "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a723058203e22c718bbe5d55248c5fec027875ec0af893fe14a07c4756091366474f562c80029", + Bin: "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029", } // BridgeHandledRequestsABI is the input ABI used to generate the binding from. @@ -901,10 +916,10 @@ var BridgeHandledRequestsMetaData = &bind.MetaData{ var BridgeHandledRequestsABI = BridgeHandledRequestsMetaData.ABI // BridgeHandledRequestsBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a723058203e22c718bbe5d55248c5fec027875ec0af893fe14a07c4756091366474f562c80029` +const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a72305820aef2d9fa69c95a32141fd3d46f7cb1aaeae13a7ae373329b46067167575d7e210029` -// BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use BridgeHandledRequestsMetaData.Sigs instead. +// BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation. var BridgeHandledRequestsFuncSigs = BridgeHandledRequestsMetaData.Sigs // BridgeHandledRequestsBin is the compiled bytecode used for deploying new contracts. @@ -1076,6 +1091,7 @@ func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transact(opts func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { var out []interface{} err := _BridgeHandledRequests.contract.Call(opts, &out, "handledRequestTx", arg0) + if err != nil { return *new(bool), err } @@ -1083,6 +1099,7 @@ func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. @@ -1101,7 +1118,7 @@ func (_BridgeHandledRequests *BridgeHandledRequestsCallerSession) HandledRequest // BridgeOperatorMetaData contains all meta data concerning the BridgeOperator contract. var BridgeOperatorMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", Sigs: map[string]string{ "3a3099d1": "MAX_OPERATOR()", "9832c1d7": "closedValueTransferVotes(uint64)", @@ -1127,8 +1144,8 @@ var BridgeOperatorABI = BridgeOperatorMetaData.ABI // BridgeOperatorBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const BridgeOperatorBinRuntime = `` -// BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use BridgeOperatorMetaData.Sigs instead. +// BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation. var BridgeOperatorFuncSigs = BridgeOperatorMetaData.Sigs // BridgeOperator is an auto generated Go binding around a Kaia contract. @@ -1279,6 +1296,7 @@ func (_BridgeOperator *BridgeOperatorTransactorRaw) Transact(opts *bind.Transact func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "MAX_OPERATOR") + if err != nil { return *new(uint64), err } @@ -1286,6 +1304,7 @@ func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (u out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. @@ -1308,6 +1327,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) MAXOPERATOR() (uint64, error func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + if err != nil { return *new(bool), err } @@ -1315,6 +1335,7 @@ func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. @@ -1337,6 +1358,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) ClosedValueTransferVotes(arg func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "configurationNonce") + if err != nil { return *new(uint64), err } @@ -1344,6 +1366,7 @@ func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. @@ -1366,6 +1389,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) ConfigurationNonce() (uint64 func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "getOperatorList") + if err != nil { return *new([]common.Address), err } @@ -1373,6 +1397,7 @@ func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. @@ -1395,6 +1420,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) GetOperatorList() ([]common. func (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -1402,6 +1428,7 @@ func (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -1424,6 +1451,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) IsOwner() (bool, error) { func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { return *new(common.Address), err } @@ -1431,6 +1459,7 @@ func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, a out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OperatorList is a free data retrieval call binding the contract method 0xcb38f407. @@ -1453,6 +1482,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) OperatorList(arg0 *big.Int) func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { return *new(uint8), err } @@ -1460,6 +1490,7 @@ func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. @@ -1482,6 +1513,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) OperatorThresholds(arg0 uint func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "operators", arg0) + if err != nil { return *new(bool), err } @@ -1489,6 +1521,7 @@ func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // Operators is a free data retrieval call binding the contract method 0x13e7c9d8. @@ -1511,6 +1544,7 @@ func (_BridgeOperator *BridgeOperatorCallerSession) Operators(arg0 common.Addres func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _BridgeOperator.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -1518,6 +1552,7 @@ func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -1639,9 +1674,9 @@ func (_BridgeOperator *BridgeOperatorTransactorSession) TransferOwnership(newOwn return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner) } -// BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract. -type BridgeOperatorOwnershipTransferredIterator struct { - Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log +// BridgeOperatorOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeOperator contract. +type BridgeOperatorOperatorDeregisteredIterator struct { + Event *BridgeOperatorOperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1655,7 +1690,7 @@ type BridgeOperatorOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { +func (it *BridgeOperatorOperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1664,7 +1699,7 @@ func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeOperatorOwnershipTransferred) + it.Event = new(BridgeOperatorOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1679,7 +1714,7 @@ func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeOperatorOwnershipTransferred) + it.Event = new(BridgeOperatorOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1695,58 +1730,51 @@ func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeOperatorOwnershipTransferredIterator) Error() error { +func (it *BridgeOperatorOperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeOperatorOwnershipTransferredIterator) Close() error { +func (it *BridgeOperatorOperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract. -type BridgeOperatorOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOperatorOperatorDeregistered represents a OperatorDeregistered event raised by the BridgeOperator contract. +type BridgeOperatorOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeOperatorOperatorDeregisteredIterator{contract: _BridgeOperator.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -1756,8 +1784,8 @@ func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *b select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeOperatorOwnershipTransferred) - if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeOperatorOperatorDeregistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -1778,558 +1806,324 @@ func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *b }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) { - event := new(BridgeOperatorOwnershipTransferred) - if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeOperatorOperatorDeregistered, error) { + event := new(BridgeOperatorOperatorDeregistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensMetaData contains all meta data concerning the BridgeTokens contract. -var BridgeTokensMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "bab2af1d": "deregisterToken(address)", - "ea21eade": "getRegisteredTokenList()", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "8da5cb5b": "owner()", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - }, - Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610c40806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820243673cf74b8c0a271295a362dbfc8b387e00b277b0762b4f5eee61d706035e60029", -} - -// BridgeTokensABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTokensMetaData.ABI instead. -var BridgeTokensABI = BridgeTokensMetaData.ABI - -// BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820243673cf74b8c0a271295a362dbfc8b387e00b277b0762b4f5eee61d706035e60029` +// BridgeOperatorOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeOperator contract. +type BridgeOperatorOperatorRegisteredIterator struct { + Event *BridgeOperatorOperatorRegistered // Event containing the contract specifics and raw log -// BridgeTokensFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTokensMetaData.Sigs instead. -var BridgeTokensFuncSigs = BridgeTokensMetaData.Sigs + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// BridgeTokensBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use BridgeTokensMetaData.Bin instead. -var BridgeTokensBin = BridgeTokensMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployBridgeTokens deploys a new Kaia contract, binding an instance of BridgeTokens to it. -func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) { - parsed, err := BridgeTokensMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeOperatorOperatorRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeOperatorOperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeTokensBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + default: + return false + } } - return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil -} - -// BridgeTokens is an auto generated Go binding around a Kaia contract. -type BridgeTokens struct { - BridgeTokensCaller // Read-only binding to the contract - BridgeTokensTransactor // Write-only binding to the contract - BridgeTokensFilterer // Log filterer for contract events -} - -// BridgeTokensCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTokensCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTokensTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTokensTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTokensFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTokensFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeOperatorOperatorRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// BridgeTokensSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTokensSession struct { - Contract *BridgeTokens // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// BridgeTokensCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTokensCallerSession struct { - Contract *BridgeTokensCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeOperatorOperatorRegisteredIterator) Error() error { + return it.fail } -// BridgeTokensTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTokensTransactorSession struct { - Contract *BridgeTokensTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeOperatorOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// BridgeTokensRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTokensRaw struct { - Contract *BridgeTokens // Generic contract binding to access the raw methods on +// BridgeOperatorOperatorRegistered represents a OperatorRegistered event raised by the BridgeOperator contract. +type BridgeOperatorOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTokensCallerRaw struct { - Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on -} +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeOperatorOperatorRegisteredIterator, error) { -// BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTokensTransactorRaw struct { - Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on -} + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } -// NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) { - contract, err := bindBridgeTokens(address, backend, backend, backend) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil + return &BridgeOperatorOperatorRegisteredIterator{contract: _BridgeOperator.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) { - contract, err := bindBridgeTokens(address, caller, nil, nil) - if err != nil { - return nil, err +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - return &BridgeTokensCaller{contract: contract}, nil -} -// NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) { - contract, err := bindBridgeTokens(address, nil, transactor, nil) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTokensTransactor{contract: contract}, nil -} + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeOperatorOperatorRegistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log -// NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract. -func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) { - contract, err := bindBridgeTokens(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTokensFilterer{contract: contract}, nil + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// bindBridgeTokens binds a generic wrapper to an already deployed contract. -func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTokensMetaData.GetAbi() - if err != nil { +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. +// +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorRegistered(log types.Log) (*BridgeOperatorOperatorRegistered, error) { + event := new(BridgeOperatorOperatorRegistered) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...) + event.Raw = log + return event, nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTokens.Contract.contract.Call(opts, result, method, params...) -} +// BridgeOperatorOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeOperator contract. +type BridgeOperatorOperatorThresholdChangedIterator struct { + Event *BridgeOperatorOperatorThresholdChanged // Event containing the contract specifics and raw log -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.Contract.contract.Transfer(opts) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTokens.Contract.contract.Transact(opts, method, params...) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. -// -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "getRegisteredTokenList") - if err != nil { - return *new([]common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeOperatorOperatorThresholdChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeOperatorOperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeOperatorOperatorThresholdChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. -// -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeOperatorOperatorThresholdChangedIterator) Error() error { + return it.fail } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. -// -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeOperatorOperatorThresholdChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. -// -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "indexOfTokens", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// BridgeOperatorOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeOperator contract. +type BridgeOperatorOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) -} +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeOperatorOperatorThresholdChangedIterator, error) { -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. -// -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) -} + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "isOwner") + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { - return *new(bool), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + return &BridgeOperatorOperatorThresholdChangedIterator{contract: _BridgeOperator.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) { - return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) -} +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) { - return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) -} + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) + } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. -// -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "lockedTokens", arg0) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { - return *new(bool), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeOperatorOperatorThresholdChanged) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. -// -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeOperator *BridgeOperatorFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeOperatorOperatorThresholdChanged, error) { + event := new(BridgeOperatorOperatorThresholdChanged) + if err := _BridgeOperator.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } +// BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract. +type BridgeOperatorOwnershipTransferredIterator struct { + Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - return out0, err -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) { - return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) { - return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) -} - -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) -} - -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) -} - -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _BridgeTokens.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) -} - -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) -} - -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token) -} - -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) -} - -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) -} - -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "lockToken", _token) -} - -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) -} - -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) -} - -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken) -} - -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) -} - -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTokens.contract.Transact(opts, "unlockToken", _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) -} - -// BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract. -type BridgeTokensOwnershipTransferredIterator struct { - Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { +func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2338,7 +2132,7 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTokensOwnershipTransferred) + it.Event = new(BridgeOperatorOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2353,7 +2147,7 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTokensOwnershipTransferred) + it.Event = new(BridgeOperatorOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2369,19 +2163,19 @@ func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensOwnershipTransferredIterator) Error() error { +func (it *BridgeOperatorOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTokensOwnershipTransferredIterator) Close() error { +func (it *BridgeOperatorOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract. -type BridgeTokensOwnershipTransferred struct { +// BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract. +type BridgeOperatorOwnershipTransferred struct { PreviousOwner common.Address NewOwner common.Address Raw types.Log // Blockchain specific contextual infos @@ -2390,7 +2184,8 @@ type BridgeTokensOwnershipTransferred struct { // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) { +func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -2400,17 +2195,18 @@ func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -2420,7 +2216,7 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind. newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2430,8 +2226,8 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind. select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTokensOwnershipTransferred) - if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeOperatorOwnershipTransferred) + if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -2455,1495 +2251,1141 @@ func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind. // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) { - event := new(BridgeTokensOwnershipTransferred) - if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) { + event := new(BridgeOperatorOwnershipTransferred) + if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract. -type BridgeTokensTokenDeregisteredIterator struct { - Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTokensMetaData contains all meta data concerning the BridgeTokens contract. +var BridgeTokensMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "bab2af1d": "deregisterToken(address)", + "ea21eade": "getRegisteredTokenList()", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "8da5cb5b": "owner()", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + }, + Bin: "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610ca4806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b031661061a565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b031661062c565b604080519115158252519081900360200190f35b6100fa610641565b610119600480360360208110156101f357600080fd5b50356001600160a01b03166106d5565b6101196106f0565b6101c1610700565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b0316610711565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b0316610880565b610267610a6f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610ad1565b6102e5610700565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f610700565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821661057b57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610c386021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b610649610700565b61068b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610719610700565b61075b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166107c35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff166108355760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b610888610700565b6108ca5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166109325760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff1916905560029091528120805491905560035460001901811015610a225760038054600019810190811061099657fe5b600091825260209091200154600380546001600160a01b0390921691839081106109bc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6003805490610a35906000198301610bca565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aa9575b5050505050905090565b610ad9610700565b610b1b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b610b2481610b27565b50565b6001600160a01b038116610b6f57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610c126026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bee57600083815260209020610bee918101908301610bf3565b505050565b6106fd91905b80821115610c0d5760008155600101610bf9565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820c2a962646abdbdb4d2802b323b4064325b5324eb66caace2c71a0593bf654dfa0029", } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTokensABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTokensMetaData.ABI instead. +var BridgeTokensABI = BridgeTokensMetaData.ABI - default: - return false - } +// BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b031661061a565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b031661062c565b604080519115158252519081900360200190f35b6100fa610641565b610119600480360360208110156101f357600080fd5b50356001600160a01b03166106d5565b6101196106f0565b6101c1610700565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b0316610711565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b0316610880565b610267610a6f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610ad1565b6102e5610700565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f610700565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821661057b57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610c386021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b610649610700565b61068b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b610719610700565b61075b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166107c35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff166108355760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b610888610700565b6108ca5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166109325760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff1916905560029091528120805491905560035460001901811015610a225760038054600019810190811061099657fe5b600091825260209091200154600380546001600160a01b0390921691839081106109bc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6003805490610a35906000198301610bca565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aa9575b5050505050905090565b610ad9610700565b610b1b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610c59833981519152604482015290519081900360640190fd5b610b2481610b27565b50565b6001600160a01b038116610b6f57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610c126026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bee57600083815260209020610bee918101908301610bf3565b505050565b6106fd91905b80821115610c0d5760008155600101610bf9565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a72305820c2a962646abdbdb4d2802b323b4064325b5324eb66caace2c71a0593bf654dfa0029` + +// Deprecated: Use BridgeTokensMetaData.Sigs instead. +// BridgeTokensFuncSigs maps the 4-byte function signature to its string representation. +var BridgeTokensFuncSigs = BridgeTokensMetaData.Sigs + +// BridgeTokensBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BridgeTokensMetaData.Bin instead. +var BridgeTokensBin = BridgeTokensMetaData.Bin + +// DeployBridgeTokens deploys a new Kaia contract, binding an instance of BridgeTokens to it. +func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) { + parsed, err := BridgeTokensMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BridgeTokensBin), backend) + if err != nil { + return common.Address{}, nil, nil, err } + return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenDeregisteredIterator) Error() error { - return it.fail +// BridgeTokens is an auto generated Go binding around a Kaia contract. +type BridgeTokens struct { + BridgeTokensCaller // Read-only binding to the contract + BridgeTokensTransactor // Write-only binding to the contract + BridgeTokensFilterer // Log filterer for contract events } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTokensTokenDeregisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeTokensCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTokensCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract. -type BridgeTokensTokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTokensTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTokensTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. -// -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// BridgeTokensFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTokensFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) +// BridgeTokensSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTokensSession struct { + Contract *BridgeTokens // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTokensCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTokensCallerSession struct { + Contract *BridgeTokensCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BridgeTokensTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTokensTransactorSession struct { + Contract *BridgeTokensTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BridgeTokensRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTokensRaw struct { + Contract *BridgeTokens // Generic contract binding to access the raw methods on +} + +// BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTokensCallerRaw struct { + Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTokensTransactorRaw struct { + Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) { + contract, err := bindBridgeTokens(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. -// -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) { + contract, err := bindBridgeTokens(address, caller, nil, nil) + if err != nil { + return nil, err } + return &BridgeTokensCaller{contract: contract}, nil +} - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) +// NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) { + contract, err := bindBridgeTokens(address, nil, transactor, nil) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenDeregistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { - return err - } - event.Raw = log + return &BridgeTokensTransactor{contract: contract}, nil +} - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract. +func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) { + contract, err := bindBridgeTokens(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeTokensFilterer{contract: contract}, nil } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. -// -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) { - event := new(BridgeTokensTokenDeregistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { +// bindBridgeTokens binds a generic wrapper to an already deployed contract. +func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTokensMetaData.GetAbi() + if err != nil { return nil, err } - return event, nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract. -type BridgeTokensTokenLockedIterator struct { - Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...) +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts) +} - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenLockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenLockedIterator) Error() error { - return it.fail +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTokens.Contract.contract.Call(opts, result, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTokensTokenLockedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.Contract.contract.Transfer(opts) } -// BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract. -type BridgeTokensTokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTokens.Contract.contract.Transact(opts, method, params...) } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "getRegisteredTokenList") - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { - return nil, err + return *new([]common.Address), err } - return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +} + +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts) +} + +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "indexOfTokens", arg0) - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenLocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) { - event := new(BridgeTokensTokenLocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) } -// BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract. -type BridgeTokensTokenRegisteredIterator struct { - Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "isOwner") - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenRegisteredIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTokensTokenRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) { + return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) } -// BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract. -type BridgeTokensTokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) { + return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts) } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "lockedTokens", arg0) - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil -} -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. -// -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenRegistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return err - } - event.Raw = log + return out0, err - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) { - event := new(BridgeTokensTokenRegistered) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) } -// BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract. -type BridgeTokensTokenUnlockedIterator struct { - Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTokensTokenUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "owner") - default: - return false - } + if err != nil { + return *new(common.Address), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTokensTokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTokensTokenUnlockedIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTokensTokenUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract. -type BridgeTokensTokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) { + return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - - logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) - if err != nil { - return nil, err - } - return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil +// Solidity: function owner() view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) { + return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts) } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "registeredTokenList", arg0) - logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(common.Address), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTokensTokenUnlocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) { - event := new(BridgeTokensTokenUnlocked) - if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) } -// BridgeTransferMetaData contains all meta data concerning the BridgeTransfer contract. -var BridgeTransferMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "715018a6": "renounceOwnership()", - "7c1a0302": "requestNonce()", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "54edad72": "upperHandleNonce()", - }, +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0) } -// BridgeTransferABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferMetaData.ABI instead. -var BridgeTransferABI = BridgeTransferMetaData.ABI +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { + var out []interface{} + err := _BridgeTokens.contract.Call(opts, &out, "registeredTokens", arg0) -// BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferBinRuntime = `` + if err != nil { + return *new(common.Address), err + } -// BridgeTransferFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferMetaData.Sigs instead. -var BridgeTransferFuncSigs = BridgeTransferMetaData.Sigs - -// BridgeTransfer is an auto generated Go binding around a Kaia contract. -type BridgeTransfer struct { - BridgeTransferCaller // Read-only binding to the contract - BridgeTransferTransactor // Write-only binding to the contract - BridgeTransferFilterer // Log filterer for contract events -} - -// BridgeTransferCaller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransferTransactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// BridgeTransferFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// BridgeTransferSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferSession struct { - Contract *BridgeTransfer // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// BridgeTransferCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferCallerSession struct { - Contract *BridgeTransferCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) } -// BridgeTransferTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferTransactorSession struct { - Contract *BridgeTransferTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0) } -// BridgeTransferRaw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferRaw struct { - Contract *BridgeTransfer // Generic contract binding to access the raw methods on +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token) } -// BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferCallerRaw struct { - Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) } -// BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferTransactorRaw struct { - Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token) } -// NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) { - contract, err := bindBridgeTransfer(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "lockToken", _token) } -// NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) { - contract, err := bindBridgeTransfer(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeTransferCaller{contract: contract}, nil +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) } -// NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) { - contract, err := bindBridgeTransfer(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferTransactor{contract: contract}, nil +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// +// Solidity: function lockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token) } -// NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract. -func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) { - contract, err := bindBridgeTransfer(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferFilterer{contract: contract}, nil +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken) } -// bindBridgeTransfer binds a generic wrapper to an already deployed contract. -func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...) +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts) +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "renounceOwnership") } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...) +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...) +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.Contract.contract.Transfer(opts) +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransfer.Contract.contract.Transact(opts, method, params...) +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "MAX_OPERATOR") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTokens.contract.Transact(opts, "unlockToken", _token) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - if err != nil { - return *new(bool), err - } +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token) +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract. +type BridgeTokensOwnershipTransferredIterator struct { + Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log - return out0, err -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. -// -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. -// -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. -// -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "configurationNonce") - if err != nil { - return *new(uint64), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} - return out0, err +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensOwnershipTransferredIterator) Error() error { + return it.fail } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. -// -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. -// -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +// BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract. +type BridgeTokensOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeOfERC20", arg0) - if err != nil { - return *new(*big.Int), err - } +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) { - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } - return out0, err + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. -// -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) -} + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeOfKLAY") + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return *new(*big.Int), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensOwnershipTransferred) + if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) { + event := new(BridgeTokensOwnershipTransferred) + if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) +// BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract. +type BridgeTokensTokenDeregisteredIterator struct { + Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "feeReceiver") - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensTokenDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) { - return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensTokenDeregisteredIterator) Error() error { + return it.fail } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. -// -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensTokenDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. -// -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "getOperatorList") - if err != nil { - return *new([]common.Address), err - } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err +// BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract. +type BridgeTokensTokenDeregistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) -} +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) { -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. -// -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. -// -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return *new(uint64), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) { -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. -// -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. -// -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "handledRequestTx", arg0) + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return *new(bool), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensTokenDeregistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) { + event := new(BridgeTokensTokenDeregistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. -// -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) +// BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract. +type BridgeTokensTokenLockedIterator struct { + Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensTokenLockedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) { - return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensTokenLockedIterator) Error() error { + return it.fail } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. -// -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) { - return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensTokenLockedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. -// -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract. +type BridgeTokensTokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) { - return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) -} +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) { -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. -// -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) { - return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. -// -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "lowerHandleNonce") + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { - return *new(uint64), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. -// -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) + return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) -} +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) { -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensTokenLocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return err + } + event.Raw = log - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) { - return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) { + event := new(BridgeTokensTokenLocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) +// BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract. +type BridgeTokensTokenRegisteredIterator struct { + Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTokensTokenRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTokensTokenRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTokensTokenRegisteredIterator) Error() error { + return it.fail } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTokensTokenRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract. +type BridgeTokensTokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) { -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "operators", arg0) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return *new(bool), err + return nil, err } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) -} +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) { -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "owner") + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTokensTokenRegistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) { - return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) { + event := new(BridgeTokensTokenRegistered) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) { - return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) -} - -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) -} - -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) -} - -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) { - return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) -} - -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) { - return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) -} - -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransfer.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err -} - -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) -} - -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) -} - -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator) -} - -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "start", _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) -} - -// BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract. -type BridgeTransferERC20FeeChangedIterator struct { - Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log +// BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract. +type BridgeTokensTokenUnlockedIterator struct { + Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3957,7 +3399,7 @@ type BridgeTransferERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { +func (it *BridgeTokensTokenUnlockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3966,7 +3408,7 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeChanged) + it.Event = new(BridgeTokensTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3981,7 +3423,7 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeChanged) + it.Event = new(BridgeTokensTokenUnlocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3997,58 +3439,51 @@ func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20FeeChangedIterator) Error() error { +func (it *BridgeTokensTokenUnlockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20FeeChangedIterator) Close() error { +func (it *BridgeTokensTokenUnlockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract. -type BridgeTransferERC20FeeChanged struct { +// BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract. +type BridgeTokensTokenUnlocked struct { Token common.Address - Fee *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } @@ -4058,8 +3493,8 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.W select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20FeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTokensTokenUnlocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return err } event.Raw = log @@ -4080,1208 +3515,740 @@ func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.W }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) { - event := new(BridgeTransferERC20FeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) { + event := new(BridgeTokensTokenUnlocked) + if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract. -type BridgeTransferFeeReceiverChangedIterator struct { - Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferMetaData contains all meta data concerning the BridgeTransfer contract. +var BridgeTransferMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "715018a6": "renounceOwnership()", + "7c1a0302": "requestNonce()", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "54edad72": "upperHandleNonce()", + }, +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// BridgeTransferABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferMetaData.ABI instead. +var BridgeTransferABI = BridgeTransferMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferBinRuntime = `` + +// Deprecated: Use BridgeTransferMetaData.Sigs instead. +// BridgeTransferFuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferFuncSigs = BridgeTransferMetaData.Sigs + +// BridgeTransfer is an auto generated Go binding around a Kaia contract. +type BridgeTransfer struct { + BridgeTransferCaller // Read-only binding to the contract + BridgeTransferTransactor // Write-only binding to the contract + BridgeTransferFilterer // Log filterer for contract events } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferFeeReceiverChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferCaller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferFeeReceiverChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferTransactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// BridgeTransferFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferFeeReceiverChangedIterator) Error() error { - return it.fail +// BridgeTransferSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferSession struct { + Contract *BridgeTransfer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferFeeReceiverChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeTransferCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferCallerSession struct { + Contract *BridgeTransferCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract. -type BridgeTransferFeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferTransactorSession struct { + Contract *BridgeTransferTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } +// BridgeTransferRaw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferRaw struct { + Contract *BridgeTransfer // Generic contract binding to access the raw methods on +} - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) +// BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferCallerRaw struct { + Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferTransactorRaw struct { + Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) { + contract, err := bindBridgeTransfer(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) - } - - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) +// NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) { + contract, err := bindBridgeTransfer(address, caller, nil, nil) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferFeeReceiverChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &BridgeTransferCaller{contract: contract}, nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. -// -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) { - event := new(BridgeTransferFeeReceiverChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) { + contract, err := bindBridgeTransfer(address, nil, transactor, nil) + if err != nil { return nil, err } - return event, nil + return &BridgeTransferTransactor{contract: contract}, nil } -// BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract. -type BridgeTransferHandleValueTransferIterator struct { - Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract. +func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) { + contract, err := bindBridgeTransfer(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BridgeTransferFilterer{contract: contract}, nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferHandleValueTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false +// bindBridgeTransfer binds a generic wrapper to an already deployed contract. +func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferMetaData.GetAbi() + if err != nil { + return nil, err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferHandleValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferHandleValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferHandleValueTransferIterator) Error() error { - return it.fail +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferHandleValueTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...) } -// BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract. -type BridgeTransferHandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.Contract.contract.Transfer(opts) } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransfer.Contract.contract.Transact(opts, method, params...) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "MAX_OPERATOR") - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferHandleValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) { - event := new(BridgeTransferHandleValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) } -// BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract. -type BridgeTransferKLAYFeeChangedIterator struct { - Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0) +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "configurationNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferKLAYFeeChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeOfERC20", arg0) + + if err != nil { + return *new(*big.Int), err } -} -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferKLAYFeeChangedIterator) Error() error { - return it.fail -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferKLAYFeeChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} + return out0, err -// BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract. -type BridgeTransferKLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) +} - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) - if err != nil { - return nil, err - } - return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0) } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeOfKLAY") - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferKLAYFeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) { - event := new(BridgeTransferKLAYFeeChanged) - if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) } -// BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract. -type BridgeTransferOwnershipTransferredIterator struct { - Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "feeReceiver") - default: - return false - } + if err != nil { + return *new(common.Address), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferOwnershipTransferredIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) { + return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) } -// BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract. -type BridgeTransferOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts) } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "getOperatorList") - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return nil, err + return *new([]common.Address), err } - return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { - return nil, err + return *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferOwnershipTransferred) - if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) { - event := new(BridgeTransferOwnershipTransferred) - if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) } -// BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferIterator struct { - Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferRequestValueTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "handledRequestTx", arg0) - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferRequestValueTransferIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferRequestValueTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } - - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) - if err != nil { - return nil, err - } - return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0) } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "isOwner") - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferRequestValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) { - event := new(BridgeTransferRequestValueTransfer) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) { + return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) } -// BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferEncodedIterator struct { - Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) { + return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "isRunning") - default: - return false - } + if err != nil { + return *new(bool), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferRequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error { - return it.fail -} + return out0, err -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error { - it.sub.Unsubscribe() - return nil } -// BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract. -type BridgeTransferRequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) { + return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } - - logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) - if err != nil { - return nil, err - } - return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) { + return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts) } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "lowerHandleNonce") - logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { - return nil, err + return *new(uint64), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferRequestValueTransferEncoded) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) { - event := new(BridgeTransferRequestValueTransferEncoded) - if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20MetaData contains all meta data concerning the BridgeTransferERC20 contract. -var BridgeTransferERC20MetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "bab2af1d": "deregisterToken(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "ea21eade": "getRegisteredTokenList()", - "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", - "7c1a0302": "requestNonce()", - "2f88396c": "setERC20Fee(address,uint256,uint64)", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - "54edad72": "upperHandleNonce()", - }, +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferERC20MetaData.ABI instead. -var BridgeTransferERC20ABI = BridgeTransferERC20MetaData.ABI +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "modeMintBurn") -// BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferERC20BinRuntime = `` + if err != nil { + return *new(bool), err + } -// BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferERC20MetaData.Sigs instead. -var BridgeTransferERC20FuncSigs = BridgeTransferERC20MetaData.Sigs + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// BridgeTransferERC20 is an auto generated Go binding around a Kaia contract. -type BridgeTransferERC20 struct { - BridgeTransferERC20Caller // Read-only binding to the contract - BridgeTransferERC20Transactor // Write-only binding to the contract - BridgeTransferERC20Filterer // Log filterer for contract events -} + return out0, err -// BridgeTransferERC20Caller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// BridgeTransferERC20Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferERC20Session struct { - Contract *BridgeTransferERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) { + return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferERC20CallerSession struct { - Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts) } -// BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferERC20TransactorSession struct { - Contract *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "operatorList", arg0) -// BridgeTransferERC20Raw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferERC20Raw struct { - Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on -} + if err != nil { + return *new(common.Address), err + } -// BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferERC20CallerRaw struct { - Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferERC20TransactorRaw struct { - Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on -} + return out0, err -// NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) { - contract, err := bindBridgeTransferERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil } -// NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) { - contract, err := bindBridgeTransferERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Caller{contract: contract}, nil +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) } -// NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) { - contract, err := bindBridgeTransferERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Transactor{contract: contract}, nil +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0) } -// NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract. -func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) { - contract, err := bindBridgeTransferERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferERC20Filterer{contract: contract}, nil -} +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { + var out []interface{} + err := _BridgeTransfer.contract.Call(opts, &out, "operatorThresholds", arg0) -// bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract. -func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferERC20MetaData.GetAbi() if err != nil { - return nil, err + return *new(uint8), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.contract.Transfer(opts) +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...) +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTransfer.contract.Call(opts, &out, "operators", arg0) + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "owner") + if err != nil { - return *new(bool), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) { + return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function owner() view returns(address) +func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) { + return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTransfer.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { return *new(uint64), err } @@ -5289,978 +4256,1009 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts * out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _BridgeTransfer.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err -} -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. -// -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) { + return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) { + return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts) +} + +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfKLAY") + err := _BridgeTransfer.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err -} -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. -// -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "feeReceiver") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "getOperatorList") - if err != nil { - return *new([]common.Address), err - } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "getRegisteredTokenList") - if err != nil { - return *new([]common.Address), err - } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "renounceOwnership") } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "handledRequestTx", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "indexOfTokens", arg0) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "setRunningStatus", _status) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetRunningStatus(&_BridgeTransfer.TransactOpts, _status) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.SetRunningStatus(&_BridgeTransfer.TransactOpts, _status) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) { - return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "start", _status) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) { - return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function start(bool _status) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) { - return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) { - return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "lockedTokens", arg0) - if err != nil { - return *new(bool), err - } +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner) +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract. +type BridgeTransferERC20FeeChangedIterator struct { + Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log - return out0, err -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. -// -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. -// -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. -// -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} - return out0, err +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20FeeChangedIterator) Error() error { + return it.fail } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. -// -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. -// -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) +// BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract. +type BridgeTransferERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) { - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } - return out0, err + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) { - return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. -// -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorList", arg0) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20FeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} - -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. -// -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) { + event := new(BridgeTransferERC20FeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } +// BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract. +type BridgeTransferFeeReceiverChangedIterator struct { + Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - return out0, err -} - -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. -// -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "operators", arg0) - if err != nil { - return *new(bool), err + default: + return false + } } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} - return out0, err +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferFeeReceiverChangedIterator) Error() error { + return it.fail } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferFeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. -// -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) +// BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract. +type BridgeTransferFeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) { - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } - return out0, err + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) { - return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) { - return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "recoveryBlockNumber") + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { - return *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferFeeReceiverChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) { + event := new(BridgeTransferFeeReceiverChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. -// -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) +// BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract. +type BridgeTransferHandleValueTransferIterator struct { + Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferHandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. -// -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferHandleValueTransferIterator) Error() error { + return it.fail } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferHandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. -// -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) +// BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract. +type BridgeTransferHandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) { -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. -// -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC20.contract.Call(opts, &out, "upperHandleNonce") + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { - return *new(uint64), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferHandleValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) { + event := new(BridgeTransferHandleValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. -// -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) -} +// BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract. +type BridgeTransferKLAYFeeChangedIterator struct { + Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. -// -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferKLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferKLAYFeeChangedIterator) Error() error { + return it.fail } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. -// -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferKLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. -// -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) +// BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract. +type BridgeTransferKLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) { -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) -} + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferKLAYFeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. -// -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) { + event := new(BridgeTransferKLAYFeeChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) -} +// BridgeTransferOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransfer contract. +type BridgeTransferOperatorDeregisteredIterator struct { + Event *BridgeTransferOperatorDeregistered // Event containing the contract specifics and raw log -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferOperatorDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferOperatorDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership") + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferOperatorDeregisteredIterator) Error() error { + return it.fail } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferOperatorDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. -// -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) +// BridgeTransferOperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransfer contract. +type BridgeTransferOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) -} +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferOperatorDeregisteredIterator, error) { -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. -// -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &BridgeTransferOperatorDeregisteredIterator{contract: _BridgeTransfer.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferOperatorDeregistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferOperatorDeregistered, error) { + event := new(BridgeTransferOperatorDeregistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. -// -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "start", _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) -} - -// BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20ERC20FeeChangedIterator struct { - Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log +// BridgeTransferOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransfer contract. +type BridgeTransferOperatorRegisteredIterator struct { + Event *BridgeTransferOperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6274,7 +5272,7 @@ type BridgeTransferERC20ERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { +func (it *BridgeTransferOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6283,7 +5281,7 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20ERC20FeeChanged) + it.Event = new(BridgeTransferOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6298,7 +5296,7 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20ERC20FeeChanged) + it.Event = new(BridgeTransferOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6314,58 +5312,51 @@ func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error { +func (it *BridgeTransferOperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error { +func (it *BridgeTransferOperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20ERC20FeeChanged struct { - Token common.Address - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferOperatorRegistered represents a OperatorRegistered event raised by the BridgeTransfer contract. +type BridgeTransferOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferOperatorRegisteredIterator{contract: _BridgeTransfer.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -6375,8 +5366,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20ERC20FeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTransferOperatorRegistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -6397,20 +5388,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(op }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) { - event := new(BridgeTransferERC20ERC20FeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferOperatorRegistered, error) { + event := new(BridgeTransferOperatorRegistered) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20FeeReceiverChangedIterator struct { - Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransfer contract. +type BridgeTransferOperatorThresholdChangedIterator struct { + Event *BridgeTransferOperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6424,7 +5416,7 @@ type BridgeTransferERC20FeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { +func (it *BridgeTransferOperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6433,7 +5425,7 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeReceiverChanged) + it.Event = new(BridgeTransferOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6448,7 +5440,7 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20FeeReceiverChanged) + it.Event = new(BridgeTransferOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6464,49 +5456,52 @@ func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error { +func (it *BridgeTransferOperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error { +func (it *BridgeTransferOperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20FeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransfer contract. +type BridgeTransferOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransferOperatorThresholdChangedIterator{contract: _BridgeTransfer.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -6516,8 +5511,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20FeeReceiverChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTransferOperatorThresholdChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -6538,20 +5533,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) { - event := new(BridgeTransferERC20FeeReceiverChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferOperatorThresholdChanged, error) { + event := new(BridgeTransferOperatorThresholdChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20HandleValueTransferIterator struct { - Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract. +type BridgeTransferOwnershipTransferredIterator struct { + Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6565,7 +5561,7 @@ type BridgeTransferERC20HandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { +func (it *BridgeTransferOwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6574,7 +5570,7 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20HandleValueTransfer) + it.Event = new(BridgeTransferOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6589,7 +5585,7 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20HandleValueTransfer) + it.Event = new(BridgeTransferOwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6605,73 +5601,60 @@ func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error { +func (it *BridgeTransferOwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error { +func (it *BridgeTransferOwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20HandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract. +type BridgeTransferOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -6681,8 +5664,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20HandleValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTransferOwnershipTransferred) + if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -6703,20 +5686,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfe }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) { - event := new(BridgeTransferERC20HandleValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) { + event := new(BridgeTransferOwnershipTransferred) + if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20KLAYFeeChangedIterator struct { - Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log +// BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferIterator struct { + Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6730,7 +5714,7 @@ type BridgeTransferERC20KLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { +func (it *BridgeTransferRequestValueTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6739,7 +5723,7 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20KLAYFeeChanged) + it.Event = new(BridgeTransferRequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6754,7 +5738,7 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20KLAYFeeChanged) + it.Event = new(BridgeTransferRequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6770,49 +5754,74 @@ func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error { +func (it *BridgeTransferRequestValueTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error { +func (it *BridgeTransferRequestValueTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20KLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -6822,8 +5831,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20KLAYFeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeTransferRequestValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return err } event.Raw = log @@ -6844,20 +5853,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opt }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) { - event := new(BridgeTransferERC20KLAYFeeChanged) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) { + event := new(BridgeTransferRequestValueTransfer) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20OwnershipTransferredIterator struct { - Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log +// BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferEncodedIterator struct { + Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -6871,7 +5881,7 @@ type BridgeTransferERC20OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { +func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -6880,7 +5890,7 @@ func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20OwnershipTransferred) + it.Event = new(BridgeTransferRequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6895,7 +5905,7 @@ func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20OwnershipTransferred) + it.Event = new(BridgeTransferRequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -6911,58 +5921,76 @@ func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error { +func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error { +func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract. +type BridgeTransferRequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -6972,8 +6000,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20OwnershipTransferred) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeTransferRequestValueTransferEncoded) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return err } event.Raw = log @@ -6994,20 +6022,21 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferr }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) { - event := new(BridgeTransferERC20OwnershipTransferred) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) { + event := new(BridgeTransferRequestValueTransferEncoded) + if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferIterator struct { - Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferRunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransfer contract. +type BridgeTransferRunningStatusChangedIterator struct { + Event *BridgeTransferRunningStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -7021,7 +6050,7 @@ type BridgeTransferERC20RequestValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { +func (it *BridgeTransferRunningStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -7030,7 +6059,7 @@ func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransfer) + it.Event = new(BridgeTransferRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -7045,7 +6074,7 @@ func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransfer) + it.Event = new(BridgeTransferRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -7061,72 +6090,41 @@ func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error { +func (it *BridgeTransferRunningStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error { +func (it *BridgeTransferRunningStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferRunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransfer contract. +type BridgeTransferRunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferRunningStatusChangedIterator, error) { - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } - return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferRunningStatusChangedIterator{contract: _BridgeTransfer.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferRunningStatusChanged) (event.Subscription, error) { - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } @@ -7136,8 +6134,8 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransf select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20RequestValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + event := new(BridgeTransferRunningStatusChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return err } event.Raw = log @@ -7158,952 +6156,660 @@ func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransf }), nil } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) { - event := new(BridgeTransferERC20RequestValueTransfer) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransfer *BridgeTransferFilterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferRunningStatusChanged, error) { + event := new(BridgeTransferRunningStatusChanged) + if err := _BridgeTransfer.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferEncodedIterator struct { - Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log +// BridgeTransferERC20MetaData contains all meta data concerning the BridgeTransferERC20 contract. +var BridgeTransferERC20MetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "bab2af1d": "deregisterToken(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "ea21eade": "getRegisteredTokenList()", + "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", + "7c1a0302": "requestNonce()", + "2f88396c": "setERC20Fee(address,uint256,uint64)", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + "54edad72": "upperHandleNonce()", + }, +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// BridgeTransferERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferERC20MetaData.ABI instead. +var BridgeTransferERC20ABI = BridgeTransferERC20MetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferERC20BinRuntime = `` + +// Deprecated: Use BridgeTransferERC20MetaData.Sigs instead. +// BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferERC20FuncSigs = BridgeTransferERC20MetaData.Sigs + +// BridgeTransferERC20 is an auto generated Go binding around a Kaia contract. +type BridgeTransferERC20 struct { + BridgeTransferERC20Caller // Read-only binding to the contract + BridgeTransferERC20Transactor // Write-only binding to the contract + BridgeTransferERC20Filterer // Log filterer for contract events } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferERC20Caller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error { - return it.fail +// BridgeTransferERC20Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type BridgeTransferERC20Session struct { + Contract *BridgeTransferERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type BridgeTransferERC20CallerSession struct { + Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20RequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type BridgeTransferERC20TransactorSession struct { + Contract *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. -// -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// BridgeTransferERC20Raw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferERC20Raw struct { + Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on +} - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) +// BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferERC20CallerRaw struct { + Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferERC20TransactorRaw struct { + Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) { + contract, err := bindBridgeTransferERC20(address, backend, backend, backend) if err != nil { return nil, err } - return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. -// -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) { + contract, err := bindBridgeTransferERC20(address, caller, nil, nil) + if err != nil { + return nil, err } + return &BridgeTransferERC20Caller{contract: contract}, nil +} - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) +// NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) { + contract, err := bindBridgeTransferERC20(address, nil, transactor, nil) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20RequestValueTransferEncoded) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &BridgeTransferERC20Transactor{contract: contract}, nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. -// -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) { - event := new(BridgeTransferERC20RequestValueTransferEncoded) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { +// NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract. +func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) { + contract, err := bindBridgeTransferERC20(address, nil, nil, filterer) + if err != nil { return nil, err } - return event, nil + return &BridgeTransferERC20Filterer{contract: contract}, nil } -// BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenDeregisteredIterator struct { - Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract. +func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenDeregistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error { - return it.fail +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.contract.Transfer(opts) } -// BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// Transact invokes the (paid) contract method with params as input values. +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...) } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "MAX_OPERATOR") - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return nil, err + return *new(uint64), err } - return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +} + +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenDeregistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) { - event := new(BridgeTransferERC20TokenDeregistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) } -// BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenLockedIterator struct { - Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0) +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "configurationNonce") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenLockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenLocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfERC20", arg0) + + if err != nil { + return *new(*big.Int), err } -} -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenLockedIterator) Error() error { - return it.fail -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenLockedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} + return out0, err -// BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) +} - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule) - if err != nil { - return nil, err - } - return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0) } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeOfKLAY") - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenLocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) { - event := new(BridgeTransferERC20TokenLocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) } -// BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenRegisteredIterator struct { - Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "feeReceiver") - default: - return false - } + if err != nil { + return *new(common.Address), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenRegistered) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error { - it.sub.Unsubscribe() - return nil +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) } -// BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts) } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "getOperatorList") - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return nil, err + return *new([]common.Address), err } - return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil -} -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +} + +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts) +} + +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "getRegisteredTokenList") - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { - return nil, err + return *new([]common.Address), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenRegistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) { - event := new(BridgeTransferERC20TokenRegistered) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) } -// BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenUnlockedIterator struct { - Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) - default: - return false - } + if err != nil { + return *new(uint64), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeTransferERC20TokenUnlocked) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) } -// BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract. -type BridgeTransferERC20TokenUnlocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0) } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "handledRequestTx", arg0) - logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(bool), err } - return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0) +} + +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "indexOfTokens", arg0) - logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { - return nil, err + return *new(*big.Int), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC20TokenUnlocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) { - event := new(BridgeTransferERC20TokenUnlocked) - if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// BridgeTransferERC721MetaData contains all meta data concerning the BridgeTransferERC721 contract. -var BridgeTransferERC721MetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "bab2af1d": "deregisterToken(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "ea21eade": "getRegisteredTokenList()", - "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "cf0da290": "onERC721Received(address,uint256,address,bytes)", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "22604742": "requestERC721Transfer(address,address,uint256,bytes)", - "7c1a0302": "requestNonce()", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - "54edad72": "upperHandleNonce()", - }, +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// BridgeTransferERC721ABI is the input ABI used to generate the binding from. -// Deprecated: Use BridgeTransferERC721MetaData.ABI instead. -var BridgeTransferERC721ABI = BridgeTransferERC721MetaData.ABI - -// BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const BridgeTransferERC721BinRuntime = `` - -// BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use BridgeTransferERC721MetaData.Sigs instead. -var BridgeTransferERC721FuncSigs = BridgeTransferERC721MetaData.Sigs +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "isOwner") -// BridgeTransferERC721 is an auto generated Go binding around a Kaia contract. -type BridgeTransferERC721 struct { - BridgeTransferERC721Caller // Read-only binding to the contract - BridgeTransferERC721Transactor // Write-only binding to the contract - BridgeTransferERC721Filterer // Log filterer for contract events -} + if err != nil { + return *new(bool), err + } -// BridgeTransferERC721Caller is an auto generated read-only Go binding around a Kaia contract. -type BridgeTransferERC721Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Kaia contract. -type BridgeTransferERC721Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} + return out0, err -// BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type BridgeTransferERC721Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// BridgeTransferERC721Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type BridgeTransferERC721Session struct { - Contract *BridgeTransferERC721 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) { + return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) } -// BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type BridgeTransferERC721CallerSession struct { - Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) { + return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts) } -// BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type BridgeTransferERC721TransactorSession struct { - Contract *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "isRunning") -// BridgeTransferERC721Raw is an auto generated low-level Go binding around a Kaia contract. -type BridgeTransferERC721Raw struct { - Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on -} + if err != nil { + return *new(bool), err + } -// BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type BridgeTransferERC721CallerRaw struct { - Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type BridgeTransferERC721TransactorRaw struct { - Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on -} + return out0, err -// NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) { - contract, err := bindBridgeTransferERC721(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil } -// NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) { - contract, err := bindBridgeTransferERC721(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC721Caller{contract: contract}, nil +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) { + return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) } -// NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) { - contract, err := bindBridgeTransferERC721(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &BridgeTransferERC721Transactor{contract: contract}, nil +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) { + return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts) } -// NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract. -func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) { - contract, err := bindBridgeTransferERC721(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &BridgeTransferERC721Filterer{contract: contract}, nil -} +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC20.contract.Call(opts, &out, "lockedTokens", arg0) -// bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract. -func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := BridgeTransferERC721MetaData.GetAbi() if err != nil { - return nil, err + return *new(bool), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.contract.Transfer(opts) +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...) +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "MAX_OPERATOR") + err := _BridgeTransferERC20.contract.Call(opts, &out, "lowerHandleNonce") + if err != nil { return *new(uint64), err } @@ -8111,28 +6817,30 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind. out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) { - return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _BridgeTransferERC20.contract.Call(opts, &out, "modeMintBurn") + if err != nil { return *new(bool), err } @@ -8140,115 +6848,123 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVote out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) { + return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "configurationNonce") + err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { - return *new(uint64), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function configurationNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _BridgeTransferERC20.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { - return *new(*big.Int), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfKLAY") + err := _BridgeTransferERC20.contract.Call(opts, &out, "operators", arg0) + if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) { - return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "feeReceiver") + err := _BridgeTransferERC20.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -8256,884 +6972,684 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) { + return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function feeReceiver() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) { - return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) { + return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "getOperatorList") + err := _BridgeTransferERC20.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { - return *new([]common.Address), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function getOperatorList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "getRegisteredTokenList") + err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { - return *new([]common.Address), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + err := _BridgeTransferERC20.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { - return *new(uint64), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "handledRequestTx", arg0) + err := _BridgeTransferERC20.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err -} -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. -// -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts) +} + +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "indexOfTokens", arg0) + err := _BridgeTransferERC20.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "isOwner") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) { - return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function isOwner() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) { - return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "isRunning") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) { - return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function isRunning() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) { - return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "lockedTokens", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) { - return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function modeMintBurn() view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) { - return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "operators", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership") } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function operators(address ) view returns(bool) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) { - return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) { - return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function owner() view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) { - return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) { - return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "setRunningStatus", _status) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetRunningStatus(&_BridgeTransferERC20.TransactOpts, _status) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function requestNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.SetRunningStatus(&_BridgeTransferERC20.TransactOpts, _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _BridgeTransferERC721.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "start", _status) +} - return out0, err +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) { - return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) -} - -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. -// -// Solidity: function deregisterToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token) } -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) -} +// BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20ERC20FeeChangedIterator struct { + Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. -// -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20ERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. -// -// Solidity: function lockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. -// -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error { + return it.fail } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. -// -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. -// -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) +// BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20ERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) { -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. -// -// Solidity: function registerOperator(address _operator) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken) -} +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) -} + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) -} + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20ERC20FeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership") + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) { + event := new(BridgeTransferERC20ERC20FeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) -} +// BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20FeeReceiverChangedIterator struct { + Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) -} - -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) -} - -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) -} - -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "start", _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) -} - -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) -} - -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) -} - -// BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721ERC20FeeChangedIterator struct { - Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9142,7 +7658,7 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721ERC20FeeChanged) + it.Event = new(BridgeTransferERC20FeeReceiverChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9157,7 +7673,7 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721ERC20FeeChanged) + it.Event = new(BridgeTransferERC20FeeReceiverChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9173,58 +7689,51 @@ func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error { +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error { +func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721ERC20FeeChanged struct { - Token common.Address - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20FeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { return nil, err } - return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { return nil, err } @@ -9234,8 +7743,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721ERC20FeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(BridgeTransferERC20FeeReceiverChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return err } event.Raw = log @@ -9256,20 +7765,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged( }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) { - event := new(BridgeTransferERC721ERC20FeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) { + event := new(BridgeTransferERC20FeeReceiverChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721FeeReceiverChangedIterator struct { - Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log +// BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20HandleValueTransferIterator struct { + Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -9283,7 +7793,7 @@ type BridgeTransferERC721FeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { +func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9292,7 +7802,7 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721FeeReceiverChanged) + it.Event = new(BridgeTransferERC20HandleValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9307,7 +7817,7 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721FeeReceiverChanged) + it.Event = new(BridgeTransferERC20HandleValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9323,49 +7833,75 @@ func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error { +func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error { +func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721FeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20HandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -9375,8 +7911,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChang select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721FeeReceiverChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(BridgeTransferERC20HandleValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { return err } event.Raw = log @@ -9397,20 +7933,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChang }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) { - event := new(BridgeTransferERC721FeeReceiverChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) { + event := new(BridgeTransferERC20HandleValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721HandleValueTransferIterator struct { - Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20KLAYFeeChangedIterator struct { + Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -9424,7 +7961,7 @@ type BridgeTransferERC721HandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9433,7 +7970,7 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721HandleValueTransfer) + it.Event = new(BridgeTransferERC20KLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9448,7 +7985,7 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721HandleValueTransfer) + it.Event = new(BridgeTransferERC20KLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9464,73 +8001,51 @@ func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error { +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error { +func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721HandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20KLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } - return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } @@ -9540,8 +8055,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTrans select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721HandleValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(BridgeTransferERC20KLAYFeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return err } event.Raw = log @@ -9562,20 +8077,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTrans }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) { - event := new(BridgeTransferERC721HandleValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) { + event := new(BridgeTransferERC20KLAYFeeChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721KLAYFeeChangedIterator struct { - Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log +// BridgeTransferERC20OperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorDeregisteredIterator struct { + Event *BridgeTransferERC20OperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -9589,7 +8105,7 @@ type BridgeTransferERC721KLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9598,7 +8114,7 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721KLAYFeeChanged) + it.Event = new(BridgeTransferERC20OperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9613,7 +8129,7 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721KLAYFeeChanged) + it.Event = new(BridgeTransferERC20OperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9629,49 +8145,51 @@ func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error { +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error { +func (it *BridgeTransferERC20OperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721KLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20OperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC20OperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &BridgeTransferERC20OperatorDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -9681,8 +8199,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721KLAYFeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(BridgeTransferERC20OperatorDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -9703,20 +8221,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(o }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) { - event := new(BridgeTransferERC721KLAYFeeChanged) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferERC20OperatorDeregistered, error) { + event := new(BridgeTransferERC20OperatorDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721OwnershipTransferredIterator struct { - Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log +// BridgeTransferERC20OperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorRegisteredIterator struct { + Event *BridgeTransferERC20OperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -9730,7 +8249,7 @@ type BridgeTransferERC721OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { +func (it *BridgeTransferERC20OperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9739,7 +8258,7 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721OwnershipTransferred) + it.Event = new(BridgeTransferERC20OperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9754,7 +8273,7 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721OwnershipTransferred) + it.Event = new(BridgeTransferERC20OperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9770,58 +8289,51 @@ func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error { +func (it *BridgeTransferERC20OperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error { +func (it *BridgeTransferERC20OperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20OperatorRegistered represents a OperatorRegistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC20OperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &BridgeTransferERC20OperatorRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -9831,8 +8343,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransfe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721OwnershipTransferred) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(BridgeTransferERC20OperatorRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -9853,20 +8365,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransfe }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) { - event := new(BridgeTransferERC721OwnershipTransferred) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferERC20OperatorRegistered, error) { + event := new(BridgeTransferERC20OperatorRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferIterator struct { - Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC20OperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorThresholdChangedIterator struct { + Event *BridgeTransferERC20OperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -9880,7 +8393,7 @@ type BridgeTransferERC721RequestValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -9889,7 +8402,7 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransfer) + it.Event = new(BridgeTransferERC20OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9904,7 +8417,7 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransfer) + it.Event = new(BridgeTransferERC20OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -9920,72 +8433,52 @@ func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error { +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error { +func (it *BridgeTransferERC20OperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransfer struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20OperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferERC20OperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC20OperatorThresholdChangedIterator{contract: _BridgeTransferERC20.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -9995,8 +8488,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721RequestValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + event := new(BridgeTransferERC20OperatorThresholdChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -10017,20 +8510,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran }), nil } -// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) { - event := new(BridgeTransferERC721RequestValueTransfer) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferERC20OperatorThresholdChanged, error) { + event := new(BridgeTransferERC20OperatorThresholdChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferEncodedIterator struct { - Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log +// BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OwnershipTransferredIterator struct { + Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10044,7 +8538,7 @@ type BridgeTransferERC721RequestValueTransferEncodedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { +func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10053,7 +8547,7 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + it.Event = new(BridgeTransferERC20OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10068,7 +8562,7 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + it.Event = new(BridgeTransferERC20OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10084,74 +8578,60 @@ func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error { +func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error { +func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721RequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -10161,8 +8641,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721RequestValueTransferEncoded) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + event := new(BridgeTransferERC20OwnershipTransferred) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -10183,20 +8663,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTran }), nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) { - event := new(BridgeTransferERC721RequestValueTransferEncoded) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) { + event := new(BridgeTransferERC20OwnershipTransferred) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenDeregisteredIterator struct { - Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log +// BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferIterator struct { + Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10210,7 +8691,7 @@ type BridgeTransferERC721TokenDeregisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { +func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10219,7 +8700,7 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenDeregistered) + it.Event = new(BridgeTransferERC20RequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10234,7 +8715,7 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenDeregistered) + it.Event = new(BridgeTransferERC20RequestValueTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10250,49 +8731,74 @@ func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error { +func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error { +func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenDeregistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil + return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil } -// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -10302,8 +8808,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistere select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenDeregistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { + event := new(BridgeTransferERC20RequestValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return err } event.Raw = log @@ -10324,20 +8830,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistere }), nil } -// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. // -// Solidity: event TokenDeregistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) { - event := new(BridgeTransferERC721TokenDeregistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) { + event := new(BridgeTransferERC20RequestValueTransfer) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenLockedIterator struct { - Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log +// BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferEncodedIterator struct { + Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10351,7 +8858,7 @@ type BridgeTransferERC721TokenLockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10360,7 +8867,7 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenLocked) + it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10375,7 +8882,7 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenLocked) + it.Event = new(BridgeTransferERC20RequestValueTransferEncoded) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10391,49 +8898,76 @@ func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenLockedIterator) Error() error { +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenLockedIterator) Close() error { +func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenLocked struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil + return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } @@ -10443,8 +8977,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenLocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { + event := new(BridgeTransferERC20RequestValueTransferEncoded) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return err } event.Raw = log @@ -10465,20 +8999,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts }), nil } -// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: event TokenLocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) { - event := new(BridgeTransferERC721TokenLocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) { + event := new(BridgeTransferERC20RequestValueTransferEncoded) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenRegisteredIterator struct { - Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log +// BridgeTransferERC20RunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RunningStatusChangedIterator struct { + Event *BridgeTransferERC20RunningStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10492,7 +9027,7 @@ type BridgeTransferERC721TokenRegisteredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { +func (it *BridgeTransferERC20RunningStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10501,7 +9036,7 @@ func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenRegistered) + it.Event = new(BridgeTransferERC20RunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10516,7 +9051,7 @@ func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenRegistered) + it.Event = new(BridgeTransferERC20RunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10532,49 +9067,41 @@ func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error { +func (it *BridgeTransferERC20RunningStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error { +func (it *BridgeTransferERC20RunningStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenRegistered struct { - Token common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20RunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20RunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferERC20RunningStatusChangedIterator, error) { - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } - return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil + return &BridgeTransferERC20RunningStatusChangedIterator{contract: _BridgeTransferERC20.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RunningStatusChanged) (event.Subscription, error) { - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } @@ -10584,8 +9111,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenRegistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { + event := new(BridgeTransferERC20RunningStatusChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return err } event.Raw = log @@ -10606,20 +9133,21 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered( }), nil } -// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event TokenRegistered(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) { - event := new(BridgeTransferERC721TokenRegistered) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferERC20RunningStatusChanged, error) { + event := new(BridgeTransferERC20RunningStatusChanged) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenUnlockedIterator struct { - Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log +// BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenDeregisteredIterator struct { + Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10633,7 +9161,7 @@ type BridgeTransferERC721TokenUnlockedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10642,7 +9170,7 @@ func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenUnlocked) + it.Event = new(BridgeTransferERC20TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10657,7 +9185,7 @@ func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeTransferERC721TokenUnlocked) + it.Event = new(BridgeTransferERC20TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -10673,49 +9201,51 @@ func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error { +func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract. -type BridgeTransferERC721TokenUnlocked struct { +// BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenDeregistered struct { Token common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } @@ -10725,8 +9255,8 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(op select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeTransferERC721TokenUnlocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + event := new(BridgeTransferERC20TokenDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return err } event.Raw = log @@ -10747,224 +9277,165 @@ func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(op }), nil } -// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event TokenUnlocked(address indexed token) -func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) { - event := new(BridgeTransferERC721TokenUnlocked) - if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) { + event := new(BridgeTransferERC20TokenDeregistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// CallbackMetaData contains all meta data concerning the Callback contract. -var CallbackMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_valueOrID\",\"type\":\"uint256\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"registerOffer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"RegisteredOffer\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "5ec467e2": "registerOffer(address,uint256,address,uint256)", - }, - Bin: "0x6080604052348015600f57600080fd5b5060e98061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a7230582022e1331afc878dfa83b182b9e6c0bdd8ec3a160e33de88c4be252c72ddbf67bb0029", -} - -// CallbackABI is the input ABI used to generate the binding from. -// Deprecated: Use CallbackMetaData.ABI instead. -var CallbackABI = CallbackMetaData.ABI - -// CallbackBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const CallbackBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a7230582022e1331afc878dfa83b182b9e6c0bdd8ec3a160e33de88c4be252c72ddbf67bb0029` +// BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenLockedIterator struct { + Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log -// CallbackFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use CallbackMetaData.Sigs instead. -var CallbackFuncSigs = CallbackMetaData.Sigs + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// CallbackBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use CallbackMetaData.Bin instead. -var CallbackBin = CallbackMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployCallback deploys a new Kaia contract, binding an instance of Callback to it. -func DeployCallback(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Callback, error) { - parsed, err := CallbackMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20TokenLockedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20TokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CallbackBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + default: + return false + } } - return address, tx, &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20TokenLocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// Callback is an auto generated Go binding around a Kaia contract. -type Callback struct { - CallbackCaller // Read-only binding to the contract - CallbackTransactor // Write-only binding to the contract - CallbackFilterer // Log filterer for contract events + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// CallbackCaller is an auto generated read-only Go binding around a Kaia contract. -type CallbackCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20TokenLockedIterator) Error() error { + return it.fail } -// CallbackTransactor is an auto generated write-only Go binding around a Kaia contract. -type CallbackTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20TokenLockedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// CallbackFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type CallbackFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// CallbackSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type CallbackSession struct { - Contract *Callback // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CallbackCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type CallbackCallerSession struct { - Contract *CallbackCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// CallbackTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type CallbackTransactorSession struct { - Contract *CallbackTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CallbackRaw is an auto generated low-level Go binding around a Kaia contract. -type CallbackRaw struct { - Contract *Callback // Generic contract binding to access the raw methods on -} - -// CallbackCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type CallbackCallerRaw struct { - Contract *CallbackCaller // Generic read-only contract binding to access the raw methods on -} - -// CallbackTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type CallbackTransactorRaw struct { - Contract *CallbackTransactor // Generic write-only contract binding to access the raw methods on -} +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) { -// NewCallback creates a new instance of Callback, bound to a specific deployed contract. -func NewCallback(address common.Address, backend bind.ContractBackend) (*Callback, error) { - contract, err := bindCallback(address, backend, backend, backend) - if err != nil { - return nil, err + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil -} -// NewCallbackCaller creates a new read-only instance of Callback, bound to a specific deployed contract. -func NewCallbackCaller(address common.Address, caller bind.ContractCaller) (*CallbackCaller, error) { - contract, err := bindCallback(address, caller, nil, nil) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return &CallbackCaller{contract: contract}, nil + return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// NewCallbackTransactor creates a new write-only instance of Callback, bound to a specific deployed contract. -func NewCallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*CallbackTransactor, error) { - contract, err := bindCallback(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &CallbackTransactor{contract: contract}, nil -} +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. +// +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) { -// NewCallbackFilterer creates a new log filterer instance of Callback, bound to a specific deployed contract. -func NewCallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*CallbackFilterer, error) { - contract, err := bindCallback(address, nil, nil, filterer) - if err != nil { - return nil, err + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &CallbackFilterer{contract: contract}, nil -} -// bindCallback binds a generic wrapper to an already deployed contract. -func bindCallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := CallbackMetaData.GetAbi() + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Callback *CallbackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Callback.Contract.CallbackCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Callback *CallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Callback.Contract.CallbackTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Callback *CallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Callback.Contract.CallbackTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Callback *CallbackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Callback.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Callback *CallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Callback.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Callback *CallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Callback.Contract.contract.Transact(opts, method, params...) -} - -// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. -// -// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() -func (_Callback *CallbackTransactor) RegisterOffer(opts *bind.TransactOpts, _owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { - return _Callback.contract.Transact(opts, "registerOffer", _owner, _valueOrID, _tokenAddress, _price) -} + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20TokenLocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return err + } + event.Raw = log -// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. -// -// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() -func (_Callback *CallbackSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { - return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() -func (_Callback *CallbackTransactorSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { - return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) { + event := new(BridgeTransferERC20TokenLocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// CallbackRegisteredOfferIterator is returned from FilterRegisteredOffer and is used to iterate over the raw logs and unpacked data for RegisteredOffer events raised by the Callback contract. -type CallbackRegisteredOfferIterator struct { - Event *CallbackRegisteredOffer // Event containing the contract specifics and raw log +// BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenRegisteredIterator struct { + Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -10978,7 +9449,7 @@ type CallbackRegisteredOfferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *CallbackRegisteredOfferIterator) Next() bool { +func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -10987,7 +9458,7 @@ func (it *CallbackRegisteredOfferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(CallbackRegisteredOffer) + it.Event = new(BridgeTransferERC20TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -11002,7 +9473,7 @@ func (it *CallbackRegisteredOfferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(CallbackRegisteredOffer) + it.Event = new(BridgeTransferERC20TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -11018,42 +9489,51 @@ func (it *CallbackRegisteredOfferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *CallbackRegisteredOfferIterator) Error() error { +func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *CallbackRegisteredOfferIterator) Close() error { +func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// CallbackRegisteredOffer represents a RegisteredOffer event raised by the Callback contract. -type CallbackRegisteredOffer struct { - Owner common.Address - ValueOrID *big.Int - TokenAddress common.Address - Price *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterRegisteredOffer is a free log retrieval operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) -func (_Callback *CallbackFilterer) FilterRegisteredOffer(opts *bind.FilterOpts) (*CallbackRegisteredOfferIterator, error) { - logs, sub, err := _Callback.contract.FilterLogs(opts, "RegisteredOffer") +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &CallbackRegisteredOfferIterator{contract: _Callback.contract, event: "RegisteredOffer", logs: logs, sub: sub}, nil + return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchRegisteredOffer is a free log subscription operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) -func (_Callback *CallbackFilterer) WatchRegisteredOffer(opts *bind.WatchOpts, sink chan<- *CallbackRegisteredOffer) (event.Subscription, error) { - logs, sub, err := _Callback.contract.WatchLogs(opts, "RegisteredOffer") +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } @@ -11063,8 +9543,8 @@ func (_Callback *CallbackFilterer) WatchRegisteredOffer(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(CallbackRegisteredOffer) - if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil { + event := new(BridgeTransferERC20TokenRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -11085,310 +9565,318 @@ func (_Callback *CallbackFilterer) WatchRegisteredOffer(opts *bind.WatchOpts, si }), nil } -// ParseRegisteredOffer is a log parse operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) -func (_Callback *CallbackFilterer) ParseRegisteredOffer(log types.Log) (*CallbackRegisteredOffer, error) { - event := new(CallbackRegisteredOffer) - if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) { + event := new(BridgeTransferERC20TokenRegistered) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// CountersMetaData contains all meta data concerning the Counters contract. -var CountersMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029", -} - -// CountersABI is the input ABI used to generate the binding from. -// Deprecated: Use CountersMetaData.ABI instead. -var CountersABI = CountersMetaData.ABI +// BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenUnlockedIterator struct { + Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log -// CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029` + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// CountersBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use CountersMetaData.Bin instead. -var CountersBin = CountersMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployCounters deploys a new Kaia contract, binding an instance of Counters to it. -func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) { - parsed, err := CountersMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20TokenUnlocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CountersBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + default: + return false + } } - return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil -} - -// Counters is an auto generated Go binding around a Kaia contract. -type Counters struct { - CountersCaller // Read-only binding to the contract - CountersTransactor // Write-only binding to the contract - CountersFilterer // Log filterer for contract events -} - -// CountersCaller is an auto generated read-only Go binding around a Kaia contract. -type CountersCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CountersTransactor is an auto generated write-only Go binding around a Kaia contract. -type CountersTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CountersFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type CountersFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CountersSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type CountersSession struct { - Contract *Counters // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC20TokenUnlocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// CountersCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type CountersCallerSession struct { - Contract *CountersCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// CountersTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type CountersTransactorSession struct { - Contract *CountersTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error { + return it.fail } -// CountersRaw is an auto generated low-level Go binding around a Kaia contract. -type CountersRaw struct { - Contract *Counters // Generic contract binding to access the raw methods on +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// CountersCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type CountersCallerRaw struct { - Contract *CountersCaller // Generic read-only contract binding to access the raw methods on +// BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract. +type BridgeTransferERC20TokenUnlocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// CountersTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type CountersTransactorRaw struct { - Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on -} +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) { -// NewCounters creates a new instance of Counters, bound to a specific deployed contract. -func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) { - contract, err := bindCounters(address, backend, backend, backend) - if err != nil { - return nil, err + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil -} -// NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract. -func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) { - contract, err := bindCounters(address, caller, nil, nil) + logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &CountersCaller{contract: contract}, nil + return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil } -// NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract. -func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) { - contract, err := bindCounters(address, nil, transactor, nil) - if err != nil { - return nil, err +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - return &CountersTransactor{contract: contract}, nil -} -// NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract. -func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) { - contract, err := bindCounters(address, nil, nil, filterer) + logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) if err != nil { return nil, err } - return &CountersFilterer{contract: contract}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC20TokenUnlocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// bindCounters binds a generic wrapper to an already deployed contract. -func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := CountersMetaData.GetAbi() - if err != nil { +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) { + event := new(BridgeTransferERC20TokenUnlocked) + if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil + event.Raw = log + return event, nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...) +// BridgeTransferERC721MetaData contains all meta data concerning the BridgeTransferERC721 contract. +var BridgeTransferERC721MetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "bab2af1d": "deregisterToken(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "ea21eade": "getRegisteredTokenList()", + "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "cf0da290": "onERC721Received(address,uint256,address,bytes)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "22604742": "requestERC721Transfer(address,address,uint256,bytes)", + "7c1a0302": "requestNonce()", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + "54edad72": "upperHandleNonce()", + }, } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Counters.Contract.CountersTransactor.contract.Transfer(opts) -} +// BridgeTransferERC721ABI is the input ABI used to generate the binding from. +// Deprecated: Use BridgeTransferERC721MetaData.ABI instead. +var BridgeTransferERC721ABI = BridgeTransferERC721MetaData.ABI -// Transact invokes the (paid) contract method with params as input values. -func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Counters.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Counters.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Counters.Contract.contract.Transact(opts, method, params...) -} - -// ERC165MetaData contains all meta data concerning the ERC165 contract. -var ERC165MetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]", - Sigs: map[string]string{ - "01ffc9a7": "supportsInterface(bytes4)", - }, -} - -// ERC165ABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC165MetaData.ABI instead. -var ERC165ABI = ERC165MetaData.ABI - -// ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC165BinRuntime = `` +// BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const BridgeTransferERC721BinRuntime = `` -// ERC165FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC165MetaData.Sigs instead. -var ERC165FuncSigs = ERC165MetaData.Sigs +// Deprecated: Use BridgeTransferERC721MetaData.Sigs instead. +// BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation. +var BridgeTransferERC721FuncSigs = BridgeTransferERC721MetaData.Sigs -// ERC165 is an auto generated Go binding around a Kaia contract. -type ERC165 struct { - ERC165Caller // Read-only binding to the contract - ERC165Transactor // Write-only binding to the contract - ERC165Filterer // Log filterer for contract events +// BridgeTransferERC721 is an auto generated Go binding around a Kaia contract. +type BridgeTransferERC721 struct { + BridgeTransferERC721Caller // Read-only binding to the contract + BridgeTransferERC721Transactor // Write-only binding to the contract + BridgeTransferERC721Filterer // Log filterer for contract events } -// ERC165Caller is an auto generated read-only Go binding around a Kaia contract. -type ERC165Caller struct { +// BridgeTransferERC721Caller is an auto generated read-only Go binding around a Kaia contract. +type BridgeTransferERC721Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC165Transactor is an auto generated write-only Go binding around a Kaia contract. -type ERC165Transactor struct { +// BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Kaia contract. +type BridgeTransferERC721Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC165Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC165Filterer struct { +// BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type BridgeTransferERC721Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC165Session is an auto generated Go binding around a Kaia contract, +// BridgeTransferERC721Session is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type ERC165Session struct { - Contract *ERC165 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeTransferERC721Session struct { + Contract *BridgeTransferERC721 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC165CallerSession is an auto generated read-only Go binding around a Kaia contract, +// BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type ERC165CallerSession struct { - Contract *ERC165Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type BridgeTransferERC721CallerSession struct { + Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC165TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type ERC165TransactorSession struct { - Contract *ERC165Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type BridgeTransferERC721TransactorSession struct { + Contract *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC165Raw is an auto generated low-level Go binding around a Kaia contract. -type ERC165Raw struct { - Contract *ERC165 // Generic contract binding to access the raw methods on +// BridgeTransferERC721Raw is an auto generated low-level Go binding around a Kaia contract. +type BridgeTransferERC721Raw struct { + Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on } -// ERC165CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC165CallerRaw struct { - Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on +// BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type BridgeTransferERC721CallerRaw struct { + Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on } -// ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC165TransactorRaw struct { - Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on +// BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type BridgeTransferERC721TransactorRaw struct { + Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on } -// NewERC165 creates a new instance of ERC165, bound to a specific deployed contract. -func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) { - contract, err := bindERC165(address, backend, backend, backend) +// NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) { + contract, err := bindBridgeTransferERC721(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil + return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil } -// NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract. -func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) { - contract, err := bindERC165(address, caller, nil, nil) +// NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) { + contract, err := bindBridgeTransferERC721(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC165Caller{contract: contract}, nil + return &BridgeTransferERC721Caller{contract: contract}, nil } -// NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract. -func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) { - contract, err := bindERC165(address, nil, transactor, nil) +// NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) { + contract, err := bindBridgeTransferERC721(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC165Transactor{contract: contract}, nil + return &BridgeTransferERC721Transactor{contract: contract}, nil } -// NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract. -func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) { - contract, err := bindERC165(address, nil, nil, filterer) +// NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract. +func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) { + contract, err := bindBridgeTransferERC721(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC165Filterer{contract: contract}, nil + return &BridgeTransferERC721Filterer{contract: contract}, nil } -// bindERC165 binds a generic wrapper to an already deployed contract. -func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC165MetaData.GetAbi() +// bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract. +func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BridgeTransferERC721MetaData.GetAbi() if err != nil { return nil, err } @@ -11399,1182 +9887,1133 @@ func bindERC165(address common.Address, caller bind.ContractCaller, transactor b // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...) +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts) +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...) +func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC165.Contract.contract.Call(opts, result, method, params...) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC165.Contract.contract.Transfer(opts) +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC165.Contract.contract.Transact(opts, method, params...) +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + err := _BridgeTransferERC721.contract.Call(opts, &out, "MAX_OPERATOR") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err -} -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) } -// ERC20MetaData contains all meta data concerning the ERC20 contract. -var ERC20MetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "dd62ed3e": "allowance(address,address)", - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "a457c2d7": "decreaseAllowance(address,uint256)", - "39509351": "increaseAllowance(address,uint256)", - "18160ddd": "totalSupply()", - "a9059cbb": "transfer(address,uint256)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029", +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) { + return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts) } -// ERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20MetaData.ABI instead. -var ERC20ABI = ERC20MetaData.ABI - -// ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029` - -// ERC20FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC20MetaData.Sigs instead. -var ERC20FuncSigs = ERC20MetaData.Sigs - -// ERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20MetaData.Bin instead. -var ERC20Bin = ERC20MetaData.Bin +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "closedValueTransferVotes", arg0) -// DeployERC20 deploys a new Kaia contract, binding an instance of ERC20 to it. -func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) { - parsed, err := ERC20MetaData.GetAbi() if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + return *new(bool), err } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil -} + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err -// ERC20 is an auto generated Go binding around a Kaia contract. -type ERC20 struct { - ERC20Caller // Read-only binding to the contract - ERC20Transactor // Write-only binding to the contract - ERC20Filterer // Log filterer for contract events } -// ERC20Caller is an auto generated read-only Go binding around a Kaia contract. -type ERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20Transactor is an auto generated write-only Go binding around a Kaia contract. -type ERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "configurationNonce") -// ERC20Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ERC20Session struct { - Contract *ERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + if err != nil { + return *new(uint64), err + } -// ERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ERC20CallerSession struct { - Contract *ERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) -// ERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ERC20TransactorSession struct { - Contract *ERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + return out0, err -// ERC20Raw is an auto generated low-level Go binding around a Kaia contract. -type ERC20Raw struct { - Contract *ERC20 // Generic contract binding to access the raw methods on } -// ERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC20CallerRaw struct { - Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) } -// ERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC20TransactorRaw struct { - Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts) } -// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. -func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { - contract, err := bindERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil -} +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfERC20", arg0) -// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { - contract, err := bindERC20(address, caller, nil, nil) if err != nil { - return nil, err + return *new(*big.Int), err } - return &ERC20Caller{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { - contract, err := bindERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20Transactor{contract: contract}, nil +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) } -// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. -func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { - contract, err := bindERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20Filterer{contract: contract}, nil +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0) } -// bindERC20 binds a generic wrapper to an already deployed contract. -func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20MetaData.GetAbi() +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeOfKLAY") + if err != nil { - return nil, err + return *new(*big.Int), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transfer(opts) +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transact(opts, method, params...) +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) { + return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + err := _BridgeTransferERC721.contract.Call(opts, &out, "feeReceiver") + if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +// Solidity: function feeReceiver() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) { + return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + err := _BridgeTransferERC721.contract.Call(opts, &out, "getOperatorList") + if err != nil { - return *new(*big.Int), err + return *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +// Solidity: function getOperatorList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts) } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { var out []interface{} - err := _ERC20.contract.Call(opts, &out, "totalSupply") + err := _BridgeTransferERC721.contract.Call(opts, &out, "getRegisteredTokenList") + if err != nil { - return *new(*big.Int), err + return *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) return out0, err + } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "approve", spender, value) +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "handledRequestTx", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "indexOfTokens", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transfer", recipient, amount) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "isOwner") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) { + return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) +// Solidity: function isOwner() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) { + return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "isRunning") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) { + return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) +// Solidity: function isRunning() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) { + return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts) } -// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. -type ERC20ApprovalIterator struct { - Event *ERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "lockedTokens", arg0) -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false + if err != nil { + return *new(bool), err } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20ApprovalIterator) Error() error { - return it.fail +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// +// Solidity: function lockedTokens(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20Approval represents a Approval event raised by the ERC20 contract. -type ERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "lowerHandleNonce") - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { - return nil, err + return *new(uint64), err } - return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +} + +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts) +} + +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "modeMintBurn") - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) { + return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) } -// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. -type ERC20TransferIterator struct { - Event *ERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// +// Solidity: function modeMintBurn() view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) { + return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorList", arg0) - default: - return false - } + if err != nil { + return *new(common.Address), err } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TransferIterator) Error() error { - return it.fail } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20Transfer represents a Transfer event raised by the ERC20 contract. -type ERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// +// Solidity: function operatorList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0) } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operatorThresholds", arg0) - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { - return nil, err + return *new(uint8), err } - return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) +} + +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0) +} + +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "operators", arg0) - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - return event, nil +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. -var ERC20BurnableMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "dd62ed3e": "allowance(address,address)", - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "42966c68": "burn(uint256)", - "79cc6790": "burnFrom(address,uint256)", - "a457c2d7": "decreaseAllowance(address,uint256)", - "39509351": "increaseAllowance(address,uint256)", - "18160ddd": "totalSupply()", - "a9059cbb": "transfer(address,uint256)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029", +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// +// Solidity: function operators(address ) view returns(bool) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) { + return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0) } -// ERC20BurnableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20BurnableMetaData.ABI instead. -var ERC20BurnableABI = ERC20BurnableMetaData.ABI - -// ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029` - -// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC20BurnableMetaData.Sigs instead. -var ERC20BurnableFuncSigs = ERC20BurnableMetaData.Sigs - -// ERC20BurnableBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20BurnableMetaData.Bin instead. -var ERC20BurnableBin = ERC20BurnableMetaData.Bin +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "owner") -// DeployERC20Burnable deploys a new Kaia contract, binding an instance of ERC20Burnable to it. -func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) { - parsed, err := ERC20BurnableMetaData.GetAbi() if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") + return *new(common.Address), err } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20BurnableBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) -// ERC20Burnable is an auto generated Go binding around a Kaia contract. -type ERC20Burnable struct { - ERC20BurnableCaller // Read-only binding to the contract - ERC20BurnableTransactor // Write-only binding to the contract - ERC20BurnableFilterer // Log filterer for contract events -} + return out0, err -// ERC20BurnableCaller is an auto generated read-only Go binding around a Kaia contract. -type ERC20BurnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20BurnableTransactor is an auto generated write-only Go binding around a Kaia contract. -type ERC20BurnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) { + return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) } -// ERC20BurnableFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC20BurnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) { + return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts) } -// ERC20BurnableSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ERC20BurnableSession struct { - Contract *ERC20Burnable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "recoveryBlockNumber") -// ERC20BurnableCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ERC20BurnableCallerSession struct { - Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} + if err != nil { + return *new(uint64), err + } -// ERC20BurnableTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ERC20BurnableTransactorSession struct { - Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) -// ERC20BurnableRaw is an auto generated low-level Go binding around a Kaia contract. -type ERC20BurnableRaw struct { - Contract *ERC20Burnable // Generic contract binding to access the raw methods on -} + return out0, err -// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC20BurnableCallerRaw struct { - Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on } -// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC20BurnableTransactorRaw struct { - Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) } -// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { - contract, err := bindERC20Burnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) { + return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts) } -// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { - contract, err := bindERC20Burnable(address, caller, nil, nil) +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { - return nil, err + return *new(common.Address), err } - return &ERC20BurnableCaller{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { - contract, err := bindERC20Burnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20BurnableTransactor{contract: contract}, nil +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) } -// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { - contract, err := bindERC20Burnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20BurnableFilterer{contract: contract}, nil +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0) } -// bindERC20Burnable binds a generic wrapper to an already deployed contract. -func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20BurnableMetaData.GetAbi() +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { + var out []interface{} + err := _BridgeTransferERC721.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { - return nil, err + return *new(common.Address), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) -} + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// +// Solidity: function registeredTokens(address ) view returns(address) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + err := _BridgeTransferERC721.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +// Solidity: function requestNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + err := _BridgeTransferERC721.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) { + return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts) } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator) } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +// Solidity: function deregisterOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "approve", spender, value) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +// Solidity: function deregisterToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token) } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burn", amount) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData) } -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token) } -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) +// Solidity: function lockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) +// Solidity: function registerOperator(address _operator) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator) } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken) } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) } -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership") } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount) +// Solidity: function renounceOwnership() returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts) } -// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. -type ERC20BurnableApprovalIterator struct { - Event *ERC20BurnableApproval // Event containing the contract specifics and raw log +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. +// +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) +} + +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. +// +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) +} + +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. +// +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) +} + +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. +// +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) +} + +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. +// +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "setRunningStatus", _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetRunningStatus(&_BridgeTransferERC721.TransactOpts, _status) +} + +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. +// +// Solidity: function setRunningStatus(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.SetRunningStatus(&_BridgeTransferERC721.TransactOpts, _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "start", _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) +} + +// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// +// Solidity: function start(bool _status) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) +} + +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// +// Solidity: function unlockToken(address _token) returns() +func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token) +} + +// BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721ERC20FeeChangedIterator struct { + Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -12588,7 +11027,7 @@ type ERC20BurnableApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableApprovalIterator) Next() bool { +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -12597,7 +11036,7 @@ func (it *ERC20BurnableApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) + it.Event = new(BridgeTransferERC721ERC20FeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -12612,7 +11051,7 @@ func (it *ERC20BurnableApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) + it.Event = new(BridgeTransferERC721ERC20FeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -12628,59 +11067,60 @@ func (it *ERC20BurnableApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableApprovalIterator) Error() error { +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20BurnableApprovalIterator) Close() error { +func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. -type ERC20BurnableApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721ERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) } - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { return nil, err } - return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil + return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) } - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) if err != nil { return nil, err } @@ -12690,8 +11130,8 @@ func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(BridgeTransferERC721ERC20FeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { return err } event.Raw = log @@ -12712,20 +11152,21 @@ func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, }), nil } -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) { + event := new(BridgeTransferERC721ERC20FeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. -type ERC20BurnableTransferIterator struct { - Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721FeeReceiverChangedIterator struct { + Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -12739,7 +11180,7 @@ type ERC20BurnableTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableTransferIterator) Next() bool { +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -12748,7 +11189,7 @@ func (it *ERC20BurnableTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) + it.Event = new(BridgeTransferERC721FeeReceiverChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -12763,7 +11204,7 @@ func (it *ERC20BurnableTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) + it.Event = new(BridgeTransferERC721FeeReceiverChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -12779,59 +11220,51 @@ func (it *ERC20BurnableTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableTransferIterator) Error() error { +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20BurnableTransferIterator) Close() error { +func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. -type ERC20BurnableTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721FeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) } - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { return nil, err } - return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { + + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) } - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) if err != nil { return nil, err } @@ -12841,8 +11274,8 @@ func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(BridgeTransferERC721FeeReceiverChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return err } event.Raw = log @@ -12863,512 +11296,347 @@ func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, }), nil } -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) { + event := new(BridgeTransferERC721FeeReceiverChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC20MintableMetaData contains all meta data concerning the ERC20Mintable contract. -var ERC20MintableMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "983b2d56": "addMinter(address)", - "dd62ed3e": "allowance(address,address)", - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "a457c2d7": "decreaseAllowance(address,uint256)", - "39509351": "increaseAllowance(address,uint256)", - "aa271e1a": "isMinter(address)", - "40c10f19": "mint(address,uint256)", - "98650275": "renounceMinter()", - "18160ddd": "totalSupply()", - "a9059cbb": "transfer(address,uint256)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", -} - -// ERC20MintableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20MintableMetaData.ABI instead. -var ERC20MintableABI = ERC20MintableMetaData.ABI - -// ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029` +// BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721HandleValueTransferIterator struct { + Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log -// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC20MintableMetaData.Sigs instead. -var ERC20MintableFuncSigs = ERC20MintableMetaData.Sigs + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// ERC20MintableBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20MintableMetaData.Bin instead. -var ERC20MintableBin = ERC20MintableMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployERC20Mintable deploys a new Kaia contract, binding an instance of ERC20Mintable to it. -func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) { - parsed, err := ERC20MintableMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MintableBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + default: + return false + } } - return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil -} - -// ERC20Mintable is an auto generated Go binding around a Kaia contract. -type ERC20Mintable struct { - ERC20MintableCaller // Read-only binding to the contract - ERC20MintableTransactor // Write-only binding to the contract - ERC20MintableFilterer // Log filterer for contract events -} - -// ERC20MintableCaller is an auto generated read-only Go binding around a Kaia contract. -type ERC20MintableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MintableTransactor is an auto generated write-only Go binding around a Kaia contract. -type ERC20MintableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MintableFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC20MintableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MintableSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ERC20MintableSession struct { - Contract *ERC20Mintable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721HandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// ERC20MintableCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ERC20MintableCallerSession struct { - Contract *ERC20MintableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ERC20MintableTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ERC20MintableTransactorSession struct { - Contract *ERC20MintableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error { + return it.fail } -// ERC20MintableRaw is an auto generated low-level Go binding around a Kaia contract. -type ERC20MintableRaw struct { - Contract *ERC20Mintable // Generic contract binding to access the raw methods on +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC20MintableCallerRaw struct { - Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on +// BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721HandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC20MintableTransactorRaw struct { - Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on -} +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) { -// NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract. -func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) { - contract, err := bindERC20Mintable(address, backend, backend, backend) - if err != nil { - return nil, err + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil -} -// NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract. -func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) { - contract, err := bindERC20Mintable(address, caller, nil, nil) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &ERC20MintableCaller{contract: contract}, nil + return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract. -func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) { - contract, err := bindERC20Mintable(address, nil, transactor, nil) - if err != nil { - return nil, err +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - return &ERC20MintableTransactor{contract: contract}, nil -} -// NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract. -func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) { - contract, err := bindERC20Mintable(address, nil, nil, filterer) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &ERC20MintableFilterer{contract: contract}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721HandleValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// bindERC20Mintable binds a generic wrapper to an already deployed contract. -func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20MintableMetaData.GetAbi() - if err != nil { +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) { + event := new(BridgeTransferERC721HandleValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil + event.Raw = log + return event, nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...) -} +// BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721KLAYFeeChangedIterator struct { + Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721KLAYFeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error { + return it.fail } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Mintable.Contract.contract.Transfer(opts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Mintable.Contract.contract.Transact(opts, method, params...) +// BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721KLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) - if err != nil { - return *new(*big.Int), err - } +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) { - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } - return out0, err + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender) -} +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender) -} + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { - return *new(*big.Int), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721KLAYFeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account) +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) { + event := new(BridgeTransferERC721KLAYFeeChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account) -} - -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. -// -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { - var out []interface{} - err := _ERC20Mintable.contract.Call(opts, &out, "isMinter", account) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. -// -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) { - return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account) -} - -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. -// -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) { - return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Mintable.contract.Call(opts, &out, "totalSupply") - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) { - return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) { - return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "addMinter", account) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) { - return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) { - return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "mint", account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address account, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount) -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "renounceMinter") -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) { - return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts) -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) { - return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount) -} - -// ERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mintable contract. -type ERC20MintableApprovalIterator struct { - Event *ERC20MintableApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// BridgeTransferERC721OperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorDeregisteredIterator struct { + Event *BridgeTransferERC721OperatorDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20MintableApprovalIterator) Next() bool { +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13377,7 +11645,7 @@ func (it *ERC20MintableApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20MintableApproval) + it.Event = new(BridgeTransferERC721OperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13392,7 +11660,7 @@ func (it *ERC20MintableApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20MintableApproval) + it.Event = new(BridgeTransferERC721OperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13408,59 +11676,51 @@ func (it *ERC20MintableApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MintableApprovalIterator) Error() error { +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20MintableApprovalIterator) Close() error { +func (it *BridgeTransferERC721OperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract. -type ERC20MintableApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OperatorDeregistered represents a OperatorDeregistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC721OperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OperatorDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -13470,8 +11730,8 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20MintableApproval) - if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(BridgeTransferERC721OperatorDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -13492,20 +11752,21 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, }), nil } -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) { - event := new(ERC20MintableApproval) - if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorDeregistered(log types.Log) (*BridgeTransferERC721OperatorDeregistered, error) { + event := new(BridgeTransferERC721OperatorDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC20MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC20Mintable contract. -type ERC20MintableMinterAddedIterator struct { - Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log +// BridgeTransferERC721OperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorRegisteredIterator struct { + Event *BridgeTransferERC721OperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13519,7 +11780,7 @@ type ERC20MintableMinterAddedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20MintableMinterAddedIterator) Next() bool { +func (it *BridgeTransferERC721OperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13528,7 +11789,7 @@ func (it *ERC20MintableMinterAddedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20MintableMinterAdded) + it.Event = new(BridgeTransferERC721OperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13543,7 +11804,7 @@ func (it *ERC20MintableMinterAddedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20MintableMinterAdded) + it.Event = new(BridgeTransferERC721OperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13559,49 +11820,51 @@ func (it *ERC20MintableMinterAddedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MintableMinterAddedIterator) Error() error { +func (it *BridgeTransferERC721OperatorRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20MintableMinterAddedIterator) Close() error { +func (it *BridgeTransferERC721OperatorRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract. -type ERC20MintableMinterAdded struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OperatorRegistered represents a OperatorRegistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event MinterAdded(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*BridgeTransferERC721OperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OperatorRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event MinterAdded(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -13611,8 +11874,8 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20MintableMinterAdded) - if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { + event := new(BridgeTransferERC721OperatorRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -13633,20 +11896,21 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOp }), nil } -// ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event MinterAdded(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) { - event := new(ERC20MintableMinterAdded) - if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorRegistered(log types.Log) (*BridgeTransferERC721OperatorRegistered, error) { + event := new(BridgeTransferERC721OperatorRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC20MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC20Mintable contract. -type ERC20MintableMinterRemovedIterator struct { - Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log +// BridgeTransferERC721OperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorThresholdChangedIterator struct { + Event *BridgeTransferERC721OperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13660,7 +11924,7 @@ type ERC20MintableMinterRemovedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20MintableMinterRemovedIterator) Next() bool { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13669,7 +11933,7 @@ func (it *ERC20MintableMinterRemovedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20MintableMinterRemoved) + it.Event = new(BridgeTransferERC721OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13684,7 +11948,7 @@ func (it *ERC20MintableMinterRemovedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20MintableMinterRemoved) + it.Event = new(BridgeTransferERC721OperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13700,49 +11964,52 @@ func (it *ERC20MintableMinterRemovedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MintableMinterRemovedIterator) Error() error { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20MintableMinterRemovedIterator) Close() error { +func (it *BridgeTransferERC721OperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract. -type ERC20MintableMinterRemoved struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OperatorThresholdChanged represents a OperatorThresholdChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event MinterRemoved(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*BridgeTransferERC721OperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OperatorThresholdChangedIterator{contract: _BridgeTransferERC721.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event MinterRemoved(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -13752,8 +12019,8 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.Watch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20MintableMinterRemoved) - if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { + event := new(BridgeTransferERC721OperatorThresholdChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -13774,20 +12041,21 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.Watch }), nil } -// ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event MinterRemoved(address indexed account) -func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) { - event := new(ERC20MintableMinterRemoved) - if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOperatorThresholdChanged(log types.Log) (*BridgeTransferERC721OperatorThresholdChanged, error) { + event := new(BridgeTransferERC721OperatorThresholdChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mintable contract. -type ERC20MintableTransferIterator struct { - Event *ERC20MintableTransfer // Event containing the contract specifics and raw log +// BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OwnershipTransferredIterator struct { + Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -13801,7 +12069,7 @@ type ERC20MintableTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20MintableTransferIterator) Next() bool { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -13810,7 +12078,7 @@ func (it *ERC20MintableTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20MintableTransfer) + it.Event = new(BridgeTransferERC721OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13825,7 +12093,7 @@ func (it *ERC20MintableTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20MintableTransfer) + it.Event = new(BridgeTransferERC721OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -13841,59 +12109,60 @@ func (it *ERC20MintableTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MintableTransferIterator) Error() error { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20MintableTransferIterator) Close() error { +func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract. -type ERC20MintableTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -13903,8 +12172,8 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20MintableTransfer) - if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(BridgeTransferERC721OwnershipTransferred) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -13925,462 +12194,491 @@ func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, }), nil } -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) { - event := new(ERC20MintableTransfer) - if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) { + event := new(BridgeTransferERC721OwnershipTransferred) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721MetaData contains all meta data concerning the ERC721 contract. -var ERC721MetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "081812fc": "getApproved(uint256)", - "e985e9c5": "isApprovedForAll(address,address)", - "6352211e": "ownerOf(uint256)", - "42842e0e": "safeTransferFrom(address,address,uint256)", - "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", - "a22cb465": "setApprovalForAll(address,bool)", - "01ffc9a7": "supportsInterface(bytes4)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029", -} - -// ERC721ABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC721MetaData.ABI instead. -var ERC721ABI = ERC721MetaData.ABI - -// ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029` - -// ERC721FuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC721MetaData.Sigs instead. -var ERC721FuncSigs = ERC721MetaData.Sigs - -// ERC721Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC721MetaData.Bin instead. -var ERC721Bin = ERC721MetaData.Bin +// BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferIterator struct { + Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log -// DeployERC721 deploys a new Kaia contract, binding an instance of ERC721 to it. -func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) { - parsed, err := ERC721MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// ERC721 is an auto generated Go binding around a Kaia contract. -type ERC721 struct { - ERC721Caller // Read-only binding to the contract - ERC721Transactor // Write-only binding to the contract - ERC721Filterer // Log filterer for contract events -} - -// ERC721Caller is an auto generated read-only Go binding around a Kaia contract. -type ERC721Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC721Transactor is an auto generated write-only Go binding around a Kaia contract. -type ERC721Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC721Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// ERC721Session is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ERC721Session struct { - Contract *ERC721 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RequestValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// ERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ERC721CallerSession struct { - Contract *ERC721Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ERC721TransactorSession struct { - Contract *ERC721Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error { + return it.fail } -// ERC721Raw is an auto generated low-level Go binding around a Kaia contract. -type ERC721Raw struct { - Contract *ERC721 // Generic contract binding to access the raw methods on +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC721CallerRaw struct { - Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on +// BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransfer struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC721TransactorRaw struct { - Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on -} +// FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) { -// NewERC721 creates a new instance of ERC721, bound to a specific deployed contract. -func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) { - contract, err := bindERC721(address, backend, backend, backend) - if err != nil { - return nil, err + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil -} - -// NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract. -func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) { - contract, err := bindERC721(address, caller, nil, nil) - if err != nil { - return nil, err + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - return &ERC721Caller{contract: contract}, nil -} -// NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract. -func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) { - contract, err := bindERC721(address, nil, transactor, nil) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return &ERC721Transactor{contract: contract}, nil + return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil } -// NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract. -func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) { - contract, err := bindERC721(address, nil, nil, filterer) - if err != nil { - return nil, err +// WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) } - return &ERC721Filterer{contract: contract}, nil -} -// bindERC721 binds a generic wrapper to an already deployed contract. -func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC721MetaData.GetAbi() + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule) if err != nil { return nil, err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...) -} + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721RequestValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return err + } + event.Raw = log -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// Transact invokes the (paid) contract method with params as input values. -func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...) +// ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09. +// +// Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) { + event := new(BridgeTransferERC721RequestValueTransfer) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721.Contract.contract.Call(opts, result, method, params...) -} +// BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferEncodedIterator struct { + Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721.Contract.contract.Transfer(opts) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// Transact invokes the (paid) contract method with params as input values. -func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721.Contract.contract.Transact(opts, method, params...) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC721.contract.Call(opts, &out, "balanceOf", owner) - if err != nil { - return *new(*big.Int), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error { + return it.fail } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) - if err != nil { - return *new(common.Address), err - } +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) { - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } - return out0, err + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) -} +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. -// -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { - var out []interface{} - err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) if err != nil { - return *new(bool), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721RequestValueTransferEncoded) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) { + event := new(BridgeTransferERC721RequestValueTransferEncoded) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) +// BridgeTransferERC721RunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RunningStatusChangedIterator struct { + Event *BridgeTransferERC721RunningStatusChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. -// -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) - if err != nil { - return *new(common.Address), err +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721RunningStatusChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721RunningStatusChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - return out0, err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. -// -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721RunningStatusChangedIterator) Error() error { + return it.fail } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. -// -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721RunningStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// BridgeTransferERC721RunningStatusChanged represents a RunningStatusChanged event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721RunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { - var out []interface{} - err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*BridgeTransferERC721RunningStatusChangedIterator, error) { + + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { - return *new(bool), err + return nil, err } + return &BridgeTransferERC721RunningStatusChangedIterator{contract: _BridgeTransferERC721.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) -} - -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "approve", to, tokenId) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) -} - -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) -} - -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) -} - -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) -} - -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) -} - -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data) -} - -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved) -} +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RunningStatusChanged) (event.Subscription, error) { -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId) -} + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RunningStatusChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721RunningStatusChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return err + } + event.Raw = log -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) +// Solidity: event RunningStatusChanged(bool _status) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRunningStatusChanged(log types.Log) (*BridgeTransferERC721RunningStatusChanged, error) { + event := new(BridgeTransferERC721RunningStatusChanged) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract. -type ERC721ApprovalIterator struct { - Event *ERC721Approval // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenDeregisteredIterator struct { + Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14394,7 +12692,7 @@ type ERC721ApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721ApprovalIterator) Next() bool { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14403,7 +12701,7 @@ func (it *ERC721ApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721Approval) + it.Event = new(BridgeTransferERC721TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14418,7 +12716,7 @@ func (it *ERC721ApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721Approval) + it.Event = new(BridgeTransferERC721TokenDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14434,67 +12732,51 @@ func (it *ERC721ApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721ApprovalIterator) Error() error { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721ApprovalIterator) Close() error { +func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721Approval represents a Approval event raised by the ERC721 contract. -type ERC721Approval struct { - Owner common.Address - Approved common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenDeregistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } - return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil } -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule) if err != nil { return nil, err } @@ -14504,8 +12786,8 @@ func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721Approval) - if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(BridgeTransferERC721TokenDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return err } event.Raw = log @@ -14526,20 +12808,21 @@ func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- * }), nil } -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) { - event := new(ERC721Approval) - if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { +// Solidity: event TokenDeregistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) { + event := new(BridgeTransferERC721TokenDeregistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract. -type ERC721ApprovalForAllIterator struct { - Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenLockedIterator struct { + Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14553,7 +12836,7 @@ type ERC721ApprovalForAllIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721ApprovalForAllIterator) Next() bool { +func (it *BridgeTransferERC721TokenLockedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14562,7 +12845,7 @@ func (it *ERC721ApprovalForAllIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721ApprovalForAll) + it.Event = new(BridgeTransferERC721TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14577,7 +12860,7 @@ func (it *ERC721ApprovalForAllIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721ApprovalForAll) + it.Event = new(BridgeTransferERC721TokenLocked) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14593,59 +12876,51 @@ func (it *ERC721ApprovalForAllIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721ApprovalForAllIterator) Error() error { +func (it *BridgeTransferERC721TokenLockedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721ApprovalForAllIterator) Close() error { +func (it *BridgeTransferERC721TokenLockedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract. -type ERC721ApprovalForAll struct { - Owner common.Address - Operator common.Address - Approved bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenLocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } - return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil } -// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule) if err != nil { return nil, err } @@ -14655,8 +12930,8 @@ func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721ApprovalForAll) - if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + event := new(BridgeTransferERC721TokenLocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { return err } event.Raw = log @@ -14677,20 +12952,21 @@ func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink ch }), nil } -// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) { - event := new(ERC721ApprovalForAll) - if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { +// Solidity: event TokenLocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) { + event := new(BridgeTransferERC721TokenLocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract. -type ERC721TransferIterator struct { - Event *ERC721Transfer // Event containing the contract specifics and raw log +// BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenRegisteredIterator struct { + Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -14704,7 +12980,7 @@ type ERC721TransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721TransferIterator) Next() bool { +func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -14713,7 +12989,7 @@ func (it *ERC721TransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721Transfer) + it.Event = new(BridgeTransferERC721TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14728,7 +13004,7 @@ func (it *ERC721TransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721Transfer) + it.Event = new(BridgeTransferERC721TokenRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -14744,67 +13020,51 @@ func (it *ERC721TransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721TransferIterator) Error() error { +func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721TransferIterator) Close() error { +func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721Transfer represents a Transfer event raised by the ERC721 contract. -type ERC721Transfer struct { - From common.Address - To common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenRegistered struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } - return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) } - logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule) if err != nil { return nil, err } @@ -14814,8 +13074,8 @@ func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721Transfer) - if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(BridgeTransferERC721TokenRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return err } event.Raw = log @@ -14836,166 +13096,301 @@ func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- * }), nil } -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) { - event := new(ERC721Transfer) - if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { +// Solidity: event TokenRegistered(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) { + event := new(BridgeTransferERC721TokenRegistered) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721BurnableMetaData contains all meta data concerning the ERC721Burnable contract. -var ERC721BurnableMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "42966c68": "burn(uint256)", - "081812fc": "getApproved(uint256)", - "e985e9c5": "isApprovedForAll(address,address)", - "6352211e": "ownerOf(uint256)", - "42842e0e": "safeTransferFrom(address,address,uint256)", - "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", - "a22cb465": "setApprovalForAll(address,bool)", - "01ffc9a7": "supportsInterface(bytes4)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029", -} - -// ERC721BurnableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC721BurnableMetaData.ABI instead. -var ERC721BurnableABI = ERC721BurnableMetaData.ABI - -// ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029` +// BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenUnlockedIterator struct { + Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log -// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC721BurnableMetaData.Sigs instead. -var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// ERC721BurnableBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC721BurnableMetaData.Bin instead. -var ERC721BurnableBin = ERC721BurnableMetaData.Bin + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} -// DeployERC721Burnable deploys a new Kaia contract, binding an instance of ERC721Burnable to it. -func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) { - parsed, err := ERC721BurnableMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721TokenUnlocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721BurnableBin), backend) - if err != nil { - return common.Address{}, nil, nil, err + default: + return false + } } - return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil -} + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTransferERC721TokenUnlocked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// ERC721Burnable is an auto generated Go binding around a Kaia contract. -type ERC721Burnable struct { - ERC721BurnableCaller // Read-only binding to the contract - ERC721BurnableTransactor // Write-only binding to the contract - ERC721BurnableFilterer // Log filterer for contract events + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// ERC721BurnableCaller is an auto generated read-only Go binding around a Kaia contract. -type ERC721BurnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error { + return it.fail } -// ERC721BurnableTransactor is an auto generated write-only Go binding around a Kaia contract. -type ERC721BurnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// ERC721BurnableFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC721BurnableFilterer struct { +// BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract. +type BridgeTransferERC721TokenUnlocked struct { + Token common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule) + if err != nil { + return nil, err + } + return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil +} + +// WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTransferERC721TokenUnlocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec. +// +// Solidity: event TokenUnlocked(address indexed token) +func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) { + event := new(BridgeTransferERC721TokenUnlocked) + if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CallbackMetaData contains all meta data concerning the Callback contract. +var CallbackMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_valueOrID\",\"type\":\"uint256\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"registerOffer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"RegisteredOffer\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "5ec467e2": "registerOffer(address,uint256,address,uint256)", + }, + Bin: "0x6080604052348015600f57600080fd5b5060e98061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a723058206d99718501443273b3438fa09be430e979005a7b4706441bdc49d21882d359ba0029", +} + +// CallbackABI is the input ABI used to generate the binding from. +// Deprecated: Use CallbackMetaData.ABI instead. +var CallbackABI = CallbackMetaData.ABI + +// CallbackBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const CallbackBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a723058206d99718501443273b3438fa09be430e979005a7b4706441bdc49d21882d359ba0029` + +// Deprecated: Use CallbackMetaData.Sigs instead. +// CallbackFuncSigs maps the 4-byte function signature to its string representation. +var CallbackFuncSigs = CallbackMetaData.Sigs + +// CallbackBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use CallbackMetaData.Bin instead. +var CallbackBin = CallbackMetaData.Bin + +// DeployCallback deploys a new Kaia contract, binding an instance of Callback to it. +func DeployCallback(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Callback, error) { + parsed, err := CallbackMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CallbackBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil +} + +// Callback is an auto generated Go binding around a Kaia contract. +type Callback struct { + CallbackCaller // Read-only binding to the contract + CallbackTransactor // Write-only binding to the contract + CallbackFilterer // Log filterer for contract events +} + +// CallbackCaller is an auto generated read-only Go binding around a Kaia contract. +type CallbackCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC721BurnableSession is an auto generated Go binding around a Kaia contract, +// CallbackTransactor is an auto generated write-only Go binding around a Kaia contract. +type CallbackTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CallbackFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type CallbackFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CallbackSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type ERC721BurnableSession struct { - Contract *ERC721Burnable // Generic contract binding to set the session for +type CallbackSession struct { + Contract *Callback // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC721BurnableCallerSession is an auto generated read-only Go binding around a Kaia contract, +// CallbackCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type ERC721BurnableCallerSession struct { - Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type CallbackCallerSession struct { + Contract *CallbackCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// CallbackTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type ERC721BurnableTransactorSession struct { - Contract *ERC721BurnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type CallbackTransactorSession struct { + Contract *CallbackTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC721BurnableRaw is an auto generated low-level Go binding around a Kaia contract. -type ERC721BurnableRaw struct { - Contract *ERC721Burnable // Generic contract binding to access the raw methods on +// CallbackRaw is an auto generated low-level Go binding around a Kaia contract. +type CallbackRaw struct { + Contract *Callback // Generic contract binding to access the raw methods on } -// ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC721BurnableCallerRaw struct { - Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on +// CallbackCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type CallbackCallerRaw struct { + Contract *CallbackCaller // Generic read-only contract binding to access the raw methods on } -// ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC721BurnableTransactorRaw struct { - Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on +// CallbackTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type CallbackTransactorRaw struct { + Contract *CallbackTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract. -func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) { - contract, err := bindERC721Burnable(address, backend, backend, backend) +// NewCallback creates a new instance of Callback, bound to a specific deployed contract. +func NewCallback(address common.Address, backend bind.ContractBackend) (*Callback, error) { + contract, err := bindCallback(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil + return &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil } -// NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract. -func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) { - contract, err := bindERC721Burnable(address, caller, nil, nil) +// NewCallbackCaller creates a new read-only instance of Callback, bound to a specific deployed contract. +func NewCallbackCaller(address common.Address, caller bind.ContractCaller) (*CallbackCaller, error) { + contract, err := bindCallback(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC721BurnableCaller{contract: contract}, nil + return &CallbackCaller{contract: contract}, nil } -// NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract. -func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) { - contract, err := bindERC721Burnable(address, nil, transactor, nil) +// NewCallbackTransactor creates a new write-only instance of Callback, bound to a specific deployed contract. +func NewCallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*CallbackTransactor, error) { + contract, err := bindCallback(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC721BurnableTransactor{contract: contract}, nil + return &CallbackTransactor{contract: contract}, nil } -// NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract. -func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) { - contract, err := bindERC721Burnable(address, nil, nil, filterer) +// NewCallbackFilterer creates a new log filterer instance of Callback, bound to a specific deployed contract. +func NewCallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*CallbackFilterer, error) { + contract, err := bindCallback(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC721BurnableFilterer{contract: contract}, nil + return &CallbackFilterer{contract: contract}, nil } -// bindERC721Burnable binds a generic wrapper to an already deployed contract. -func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC721BurnableMetaData.GetAbi() +// bindCallback binds a generic wrapper to an already deployed contract. +func bindCallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CallbackMetaData.GetAbi() if err != nil { return nil, err } @@ -15006,931 +13401,712 @@ func bindERC721Burnable(address common.Address, caller bind.ContractCaller, tran // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...) +func (_Callback *CallbackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Callback.Contract.CallbackCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts) +func (_Callback *CallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Callback.Contract.CallbackTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...) +func (_Callback *CallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Callback.Contract.CallbackTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...) +func (_Callback *CallbackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Callback.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721Burnable.Contract.contract.Transfer(opts) +func (_Callback *CallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Callback.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721Burnable.Contract.contract.Transact(opts, method, params...) +func (_Callback *CallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Callback.Contract.contract.Transact(opts, method, params...) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner) - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err +// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() +func (_Callback *CallbackTransactor) RegisterOffer(opts *bind.TransactOpts, _owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { + return _Callback.contract.Transact(opts, "registerOffer", _owner, _valueOrID, _tokenAddress, _price) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner) +// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() +func (_Callback *CallbackSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { + return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner) +// Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns() +func (_Callback *CallbackTransactorSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) { + return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price) } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. -// -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId) - if err != nil { - return *new(common.Address), err - } +// CallbackRegisteredOfferIterator is returned from FilterRegisteredOffer and is used to iterate over the raw logs and unpacked data for RegisteredOffer events raised by the Callback contract. +type CallbackRegisteredOfferIterator struct { + Event *CallbackRegisteredOffer // Event containing the contract specifics and raw log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data - return out0, err + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. -// -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CallbackRegisteredOfferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CallbackRegisteredOffer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. -// -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CallbackRegisteredOffer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { - var out []interface{} - err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) - if err != nil { - return *new(bool), err + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CallbackRegisteredOfferIterator) Error() error { + return it.fail +} - return out0, err +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CallbackRegisteredOfferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator) +// CallbackRegisteredOffer represents a RegisteredOffer event raised by the Callback contract. +type CallbackRegisteredOffer struct { + Owner common.Address + ValueOrID *big.Int + TokenAddress common.Address + Price *big.Int + Raw types.Log // Blockchain specific contextual infos } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// FilterRegisteredOffer is a free log retrieval operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator) +// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) +func (_Callback *CallbackFilterer) FilterRegisteredOffer(opts *bind.FilterOpts) (*CallbackRegisteredOfferIterator, error) { + + logs, sub, err := _Callback.contract.FilterLogs(opts, "RegisteredOffer") + if err != nil { + return nil, err + } + return &CallbackRegisteredOfferIterator{contract: _Callback.contract, event: "RegisteredOffer", logs: logs, sub: sub}, nil } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// WatchRegisteredOffer is a free log subscription operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId) +// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) +func (_Callback *CallbackFilterer) WatchRegisteredOffer(opts *bind.WatchOpts, sink chan<- *CallbackRegisteredOffer) (event.Subscription, error) { + + logs, sub, err := _Callback.contract.WatchLogs(opts, "RegisteredOffer") if err != nil { - return *new(common.Address), err + return nil, err } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CallbackRegisteredOffer) + if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil { + return err + } + event.Raw = log - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// ParseRegisteredOffer is a log parse operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId) +// Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price) +func (_Callback *CallbackFilterer) ParseRegisteredOffer(log types.Log) (*CallbackRegisteredOffer, error) { + event := new(CallbackRegisteredOffer) + if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. -// -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId) +// CountersMetaData contains all meta data concerning the Counters contract. +var CountersMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029", } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { - var out []interface{} - err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId) +// CountersABI is the input ABI used to generate the binding from. +// Deprecated: Use CountersMetaData.ABI instead. +var CountersABI = CountersMetaData.ABI + +// CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029` + +// CountersBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use CountersMetaData.Bin instead. +var CountersBin = CountersMetaData.Bin + +// DeployCounters deploys a new Kaia contract, binding an instance of Counters to it. +func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) { + parsed, err := CountersMetaData.GetAbi() if err != nil { - return *new(bool), err + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CountersBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId) +// Counters is an auto generated Go binding around a Kaia contract. +type Counters struct { + CountersCaller // Read-only binding to the contract + CountersTransactor // Write-only binding to the contract + CountersFilterer // Log filterer for contract events } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId) +// CountersCaller is an auto generated read-only Go binding around a Kaia contract. +type CountersCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId) +// CountersTransactor is an auto generated write-only Go binding around a Kaia contract. +type CountersTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId) +// CountersFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type CountersFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId) +// CountersSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type CountersSession struct { + Contract *Counters // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "burn", tokenId) +// CountersCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type CountersCallerSession struct { + Contract *CountersCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId) +// CountersTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type CountersTransactorSession struct { + Contract *CountersTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId) +// CountersRaw is an auto generated low-level Go binding around a Kaia contract. +type CountersRaw struct { + Contract *Counters // Generic contract binding to access the raw methods on } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +// CountersCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type CountersCallerRaw struct { + Contract *CountersCaller // Generic read-only contract binding to access the raw methods on } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +// CountersTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type CountersTransactorRaw struct { + Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +// NewCounters creates a new instance of Counters, bound to a specific deployed contract. +func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) { + contract, err := bindCounters(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +// NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract. +func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) { + contract, err := bindCounters(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CountersCaller{contract: contract}, nil } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data) +// NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract. +func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) { + contract, err := bindCounters(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CountersTransactor{contract: contract}, nil } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data) +// NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract. +func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) { + contract, err := bindCounters(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CountersFilterer{contract: contract}, nil } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved) +// bindCounters binds a generic wrapper to an already deployed contract. +func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CountersMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...) } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved) +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Counters.Contract.CountersTransactor.contract.Transfer(opts) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId) +// Transact invokes the (paid) contract method with params as input values. +func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Counters.Contract.contract.Call(opts, result, method, params...) } -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Counters.Contract.contract.Transfer(opts) } -// ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract. -type ERC721BurnableApprovalIterator struct { - Event *ERC721BurnableApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// Transact invokes the (paid) contract method with params as input values. +func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Counters.Contract.contract.Transact(opts, method, params...) +} - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ERC165MetaData contains all meta data concerning the ERC165 contract. +var ERC165MetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]", + Sigs: map[string]string{ + "01ffc9a7": "supportsInterface(bytes4)", + }, } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721BurnableApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ERC165ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC165MetaData.ABI instead. +var ERC165ABI = ERC165MetaData.ABI - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC165BinRuntime = `` - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Deprecated: Use ERC165MetaData.Sigs instead. +// ERC165FuncSigs maps the 4-byte function signature to its string representation. +var ERC165FuncSigs = ERC165MetaData.Sigs + +// ERC165 is an auto generated Go binding around a Kaia contract. +type ERC165 struct { + ERC165Caller // Read-only binding to the contract + ERC165Transactor // Write-only binding to the contract + ERC165Filterer // Log filterer for contract events } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721BurnableApprovalIterator) Error() error { - return it.fail +// ERC165Caller is an auto generated read-only Go binding around a Kaia contract. +type ERC165Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721BurnableApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ERC165Transactor is an auto generated write-only Go binding around a Kaia contract. +type ERC165Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract. -type ERC721BurnableApproval struct { - Owner common.Address - Approved common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC165Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC165Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } +// ERC165Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC165Session struct { + Contract *ERC165 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) +// ERC165CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC165CallerSession struct { + Contract *ERC165Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC165TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC165TransactorSession struct { + Contract *ERC165Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC165Raw is an auto generated low-level Go binding around a Kaia contract. +type ERC165Raw struct { + Contract *ERC165 // Generic contract binding to access the raw methods on +} + +// ERC165CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC165CallerRaw struct { + Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on +} + +// ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC165TransactorRaw struct { + Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC165 creates a new instance of ERC165, bound to a specific deployed contract. +func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) { + contract, err := bindERC165(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil + return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil } -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract. +func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) { + contract, err := bindERC165(address, caller, nil, nil) + if err != nil { + return nil, err } + return &ERC165Caller{contract: contract}, nil +} - logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) +// NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract. +func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) { + contract, err := bindERC165(address, nil, transactor, nil) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721BurnableApproval) - if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &ERC165Transactor{contract: contract}, nil } -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) { - event := new(ERC721BurnableApproval) - if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { +// NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract. +func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) { + contract, err := bindERC165(address, nil, nil, filterer) + if err != nil { return nil, err } - return event, nil + return &ERC165Filterer{contract: contract}, nil } -// ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract. -type ERC721BurnableApprovalForAllIterator struct { - Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// bindERC165 binds a generic wrapper to an already deployed contract. +func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC165MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721BurnableApprovalForAllIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableApprovalForAll) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableApprovalForAll) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...) } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721BurnableApprovalForAllIterator) Error() error { - return it.fail +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165.Contract.contract.Call(opts, result, method, params...) } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721BurnableApprovalForAllIterator) Close() error { - it.sub.Unsubscribe() - return nil +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165.Contract.contract.Transfer(opts) } -// ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract. -type ERC721BurnableApprovalForAll struct { - Owner common.Address - Operator common.Address - Approved bool - Raw types.Log // Blockchain specific contextual infos +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165.Contract.contract.Transact(opts, method, params...) } -// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) - logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) if err != nil { - return nil, err + return *new(bool), err } - return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) +} - logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) +} + +// ERC20MetaData contains all meta data concerning the ERC20 contract. +var ERC20MetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "dd62ed3e": "allowance(address,address)", + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "a457c2d7": "decreaseAllowance(address,uint256)", + "39509351": "increaseAllowance(address,uint256)", + "18160ddd": "totalSupply()", + "a9059cbb": "transfer(address,uint256)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820746e081a090af1d3bc4707ca2eb3e72598dc62066ed3600a0088684c232e3dcc0029", +} + +// ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MetaData.ABI instead. +var ERC20ABI = ERC20MetaData.ABI + +// ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820746e081a090af1d3bc4707ca2eb3e72598dc62066ed3600a0088684c232e3dcc0029` + +// Deprecated: Use ERC20MetaData.Sigs instead. +// ERC20FuncSigs maps the 4-byte function signature to its string representation. +var ERC20FuncSigs = ERC20MetaData.Sigs + +// ERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20MetaData.Bin instead. +var ERC20Bin = ERC20MetaData.Bin + +// DeployERC20 deploys a new Kaia contract, binding an instance of ERC20 to it. +func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) { + parsed, err := ERC20MetaData.GetAbi() if err != nil { - return nil, err + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721BurnableApprovalForAll) - if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil } -// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. -// -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) { - event := new(ERC721BurnableApprovalForAll) - if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { - return nil, err - } - return event, nil +// ERC20 is an auto generated Go binding around a Kaia contract. +type ERC20 struct { + ERC20Caller // Read-only binding to the contract + ERC20Transactor // Write-only binding to the contract + ERC20Filterer // Log filterer for contract events } -// ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract. -type ERC721BurnableTransferIterator struct { - Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log +// ERC20Caller is an auto generated read-only Go binding around a Kaia contract. +type ERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ERC20Transactor is an auto generated write-only Go binding around a Kaia contract. +type ERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721BurnableTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ERC20Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC20Session struct { + Contract *ERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC20CallerSession struct { + Contract *ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// ERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC20TransactorSession struct { + Contract *ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721BurnableTransferIterator) Error() error { - return it.fail +// ERC20Raw is an auto generated low-level Go binding around a Kaia contract. +type ERC20Raw struct { + Contract *ERC20 // Generic contract binding to access the raw methods on } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721BurnableTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC20CallerRaw struct { + Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on } -// ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract. -type ERC721BurnableTransfer struct { - From common.Address - To common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC20TransactorRaw struct { + Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) +// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. +func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { + contract, err := bindERC20(address, backend, backend, backend) + if err != nil { + return nil, err } + return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil +} - logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) +// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { + contract, err := bindERC20(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &ERC20Caller{contract: contract}, nil } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) +// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { + contract, err := bindERC20(address, nil, transactor, nil) + if err != nil { + return nil, err } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + return &ERC20Transactor{contract: contract}, nil +} + +// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. +func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { + contract, err := bindERC20(address, nil, nil, filterer) + if err != nil { + return nil, err } + return &ERC20Filterer{contract: contract}, nil +} - logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721BurnableTransfer) - if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) { - event := new(ERC721BurnableTransfer) - if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - return event, nil -} - -// ERC721MetadataMetaData contains all meta data concerning the ERC721Metadata contract. -var ERC721MetadataMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "081812fc": "getApproved(uint256)", - "e985e9c5": "isApprovedForAll(address,address)", - "06fdde03": "name()", - "6352211e": "ownerOf(uint256)", - "42842e0e": "safeTransferFrom(address,address,uint256)", - "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", - "a22cb465": "setApprovalForAll(address,bool)", - "01ffc9a7": "supportsInterface(bytes4)", - "95d89b41": "symbol()", - "c87b56dd": "tokenURI(uint256)", - "23b872dd": "transferFrom(address,address,uint256)", - }, - Bin: "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029", -} - -// ERC721MetadataABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC721MetadataMetaData.ABI instead. -var ERC721MetadataABI = ERC721MetadataMetaData.ABI - -// ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029` - -// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC721MetadataMetaData.Sigs instead. -var ERC721MetadataFuncSigs = ERC721MetadataMetaData.Sigs - -// ERC721MetadataBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC721MetadataMetaData.Bin instead. -var ERC721MetadataBin = ERC721MetadataMetaData.Bin - -// DeployERC721Metadata deploys a new Kaia contract, binding an instance of ERC721Metadata to it. -func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) { - parsed, err := ERC721MetadataMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil -} - -// ERC721Metadata is an auto generated Go binding around a Kaia contract. -type ERC721Metadata struct { - ERC721MetadataCaller // Read-only binding to the contract - ERC721MetadataTransactor // Write-only binding to the contract - ERC721MetadataFilterer // Log filterer for contract events -} - -// ERC721MetadataCaller is an auto generated read-only Go binding around a Kaia contract. -type ERC721MetadataCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC721MetadataTransactor is an auto generated write-only Go binding around a Kaia contract. -type ERC721MetadataTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC721MetadataFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC721MetadataFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC721MetadataSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ERC721MetadataSession struct { - Contract *ERC721Metadata // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC721MetadataCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ERC721MetadataCallerSession struct { - Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ERC721MetadataTransactorSession struct { - Contract *ERC721MetadataTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC721MetadataRaw is an auto generated low-level Go binding around a Kaia contract. -type ERC721MetadataRaw struct { - Contract *ERC721Metadata // Generic contract binding to access the raw methods on -} - -// ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC721MetadataCallerRaw struct { - Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC721MetadataTransactorRaw struct { - Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract. -func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) { - contract, err := bindERC721Metadata(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil -} - -// NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract. -func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) { - contract, err := bindERC721Metadata(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC721MetadataCaller{contract: contract}, nil -} - -// NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract. -func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) { - contract, err := bindERC721Metadata(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC721MetadataTransactor{contract: contract}, nil -} - -// NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract. -func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) { - contract, err := bindERC721Metadata(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC721MetadataFilterer{contract: contract}, nil -} - -// bindERC721Metadata binds a generic wrapper to an already deployed contract. -func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC721MetadataMetaData.GetAbi() +// bindERC20 binds a generic wrapper to an already deployed contract. +func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MetaData.GetAbi() if err != nil { return nil, err } @@ -15941,46 +14117,47 @@ func bindERC721Metadata(address common.Address, caller bind.ContractCaller, tran // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...) +func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts) +func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...) +func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...) +func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721Metadata.Contract.contract.Transfer(opts) +func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721Metadata.Contract.contract.Transact(opts, method, params...) +func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transact(opts, method, params...) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -15988,347 +14165,207 @@ func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err -} - -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator) -} - -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. -// -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator) -} + err := _ERC20.contract.Call(opts, &out, "totalSupply") -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "name") if err != nil { - return *new(string), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(string)).(*string) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err -} -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) { - return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function name() view returns(string) -func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) { - return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts) +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "approve", spender, value) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { - var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId) +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId) +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function symbol() view returns(string) -func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "symbol") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function symbol() view returns(string) -func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) { - return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts) +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function symbol() view returns(string) -func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) { - return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts) +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) } -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { - var out []interface{} - err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) } -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) { - return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transfer", recipient, amount) } -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) { - return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) } -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) -} +// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. +type ERC20ApprovalIterator struct { + Event *ERC20Approval // Event containing the contract specifics and raw log -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) -} - -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data) -} - -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved) -} - -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. -// -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) -} - -// ERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Metadata contract. -type ERC721MetadataApprovalIterator struct { - Event *ERC721MetadataApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataApprovalIterator) Next() bool { +func (it *ERC20ApprovalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16337,7 +14374,7 @@ func (it *ERC721MetadataApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721MetadataApproval) + it.Event = new(ERC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16352,7 +14389,7 @@ func (it *ERC721MetadataApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721MetadataApproval) + it.Event = new(ERC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16368,67 +14405,61 @@ func (it *ERC721MetadataApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataApprovalIterator) Error() error { +func (it *ERC20ApprovalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721MetadataApprovalIterator) Close() error { +func (it *ERC20ApprovalIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract. -type ERC721MetadataApproval struct { - Owner common.Address - Approved common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC20Approval represents a Approval event raised by the ERC20 contract. +type ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos } // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } - return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil + return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil } // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } @@ -16438,8 +14469,8 @@ func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataApproval) - if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { return err } event.Raw = log @@ -16462,18 +14493,19 @@ func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpt // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) { - event := new(ERC721MetadataApproval) - if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Metadata contract. -type ERC721MetadataApprovalForAllIterator struct { - Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log +// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. +type ERC20TransferIterator struct { + Event *ERC20Transfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -16487,7 +14519,7 @@ type ERC721MetadataApprovalForAllIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataApprovalForAllIterator) Next() bool { +func (it *ERC20TransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -16496,7 +14528,7 @@ func (it *ERC721MetadataApprovalForAllIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721MetadataApprovalForAll) + it.Event = new(ERC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16511,7 +14543,7 @@ func (it *ERC721MetadataApprovalForAllIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721MetadataApprovalForAll) + it.Event = new(ERC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -16527,59 +14559,61 @@ func (it *ERC721MetadataApprovalForAllIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataApprovalForAllIterator) Error() error { +func (it *ERC20TransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721MetadataApprovalForAllIterator) Close() error { +func (it *ERC20TransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract. -type ERC721MetadataApprovalForAll struct { - Owner common.Address - Operator common.Address - Approved bool - Raw types.Log // Blockchain specific contextual infos +// ERC20Transfer represents a Transfer event raised by the ERC20 contract. +type ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) } - logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } - return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil + return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil } -// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) } - logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } @@ -16589,8 +14623,8 @@ func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.Wa select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataApprovalForAll) - if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return err } event.Raw = log @@ -16611,309 +14645,166 @@ func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.Wa }), nil } -// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) { - event := new(ERC721MetadataApprovalForAll) - if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Metadata contract. -type ERC721MetadataTransferIterator struct { - Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log +// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. +var ERC20BurnableMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "dd62ed3e": "allowance(address,address)", + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "42966c68": "burn(uint256)", + "79cc6790": "burnFrom(address,uint256)", + "a457c2d7": "decreaseAllowance(address,uint256)", + "39509351": "increaseAllowance(address,uint256)", + "18160ddd": "totalSupply()", + "a9059cbb": "transfer(address,uint256)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cbed5e162690632b84d9f5fc48a461561ec9d0a542c8cae309a5e9946d21828e0029", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ERC20BurnableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20BurnableMetaData.ABI instead. +var ERC20BurnableABI = ERC20BurnableMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cbed5e162690632b84d9f5fc48a461561ec9d0a542c8cae309a5e9946d21828e0029` -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721MetadataTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract. -type ERC721MetadataTransfer struct { - From common.Address - To common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos -} +// Deprecated: Use ERC20BurnableMetaData.Sigs instead. +// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. +var ERC20BurnableFuncSigs = ERC20BurnableMetaData.Sigs -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } +// ERC20BurnableBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20BurnableMetaData.Bin instead. +var ERC20BurnableBin = ERC20BurnableMetaData.Bin - logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) +// DeployERC20Burnable deploys a new Kaia contract, binding an instance of ERC20Burnable to it. +func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) { + parsed, err := ERC20BurnableMetaData.GetAbi() if err != nil { - return nil, err - } - return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) + return common.Address{}, nil, nil, err } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20BurnableBin), backend) if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataTransfer) - if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) { - event := new(ERC721MetadataTransfer) - if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err + return common.Address{}, nil, nil, err } - return event, nil -} - -// ERC721MetadataMintableMetaData contains all meta data concerning the ERC721MetadataMintable contract. -var ERC721MetadataMintableMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "983b2d56": "addMinter(address)", - "095ea7b3": "approve(address,uint256)", - "70a08231": "balanceOf(address)", - "081812fc": "getApproved(uint256)", - "e985e9c5": "isApprovedForAll(address,address)", - "aa271e1a": "isMinter(address)", - "50bb4e7f": "mintWithTokenURI(address,uint256,string)", - "06fdde03": "name()", - "6352211e": "ownerOf(uint256)", - "98650275": "renounceMinter()", - "42842e0e": "safeTransferFrom(address,address,uint256)", - "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", - "a22cb465": "setApprovalForAll(address,bool)", - "01ffc9a7": "supportsInterface(bytes4)", - "95d89b41": "symbol()", - "c87b56dd": "tokenURI(uint256)", - "23b872dd": "transferFrom(address,address,uint256)", - }, + return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil } -// ERC721MetadataMintableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC721MetadataMintableMetaData.ABI instead. -var ERC721MetadataMintableABI = ERC721MetadataMintableMetaData.ABI - -// ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721MetadataMintableBinRuntime = `` - -// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ERC721MetadataMintableMetaData.Sigs instead. -var ERC721MetadataMintableFuncSigs = ERC721MetadataMintableMetaData.Sigs - -// ERC721MetadataMintable is an auto generated Go binding around a Kaia contract. -type ERC721MetadataMintable struct { - ERC721MetadataMintableCaller // Read-only binding to the contract - ERC721MetadataMintableTransactor // Write-only binding to the contract - ERC721MetadataMintableFilterer // Log filterer for contract events +// ERC20Burnable is an auto generated Go binding around a Kaia contract. +type ERC20Burnable struct { + ERC20BurnableCaller // Read-only binding to the contract + ERC20BurnableTransactor // Write-only binding to the contract + ERC20BurnableFilterer // Log filterer for contract events } -// ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Kaia contract. -type ERC721MetadataMintableCaller struct { +// ERC20BurnableCaller is an auto generated read-only Go binding around a Kaia contract. +type ERC20BurnableCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Kaia contract. -type ERC721MetadataMintableTransactor struct { +// ERC20BurnableTransactor is an auto generated write-only Go binding around a Kaia contract. +type ERC20BurnableTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ERC721MetadataMintableFilterer struct { +// ERC20BurnableFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC20BurnableFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC721MetadataMintableSession is an auto generated Go binding around a Kaia contract, +// ERC20BurnableSession is an auto generated Go binding around a Kaia contract, // with pre-set call and transact options. -type ERC721MetadataMintableSession struct { - Contract *ERC721MetadataMintable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20BurnableSession struct { + Contract *ERC20Burnable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Kaia contract, +// ERC20BurnableCallerSession is an auto generated read-only Go binding around a Kaia contract, // with pre-set call options. -type ERC721MetadataMintableCallerSession struct { - Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20BurnableCallerSession struct { + Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// ERC20BurnableTransactorSession is an auto generated write-only Go binding around a Kaia contract, // with pre-set transact options. -type ERC721MetadataMintableTransactorSession struct { - Contract *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20BurnableTransactorSession struct { + Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Kaia contract. -type ERC721MetadataMintableRaw struct { - Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on +// ERC20BurnableRaw is an auto generated low-level Go binding around a Kaia contract. +type ERC20BurnableRaw struct { + Contract *ERC20Burnable // Generic contract binding to access the raw methods on } -// ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ERC721MetadataMintableCallerRaw struct { - Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on +// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC20BurnableCallerRaw struct { + Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on } -// ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ERC721MetadataMintableTransactorRaw struct { - Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on +// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC20BurnableTransactorRaw struct { + Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract. -func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) { - contract, err := bindERC721MetadataMintable(address, backend, backend, backend) +// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { + contract, err := bindERC20Burnable(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil + return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil } -// NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract. -func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) { - contract, err := bindERC721MetadataMintable(address, caller, nil, nil) +// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { + contract, err := bindERC20Burnable(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC721MetadataMintableCaller{contract: contract}, nil + return &ERC20BurnableCaller{contract: contract}, nil } -// NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract. -func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) { - contract, err := bindERC721MetadataMintable(address, nil, transactor, nil) +// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { + contract, err := bindERC20Burnable(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC721MetadataMintableTransactor{contract: contract}, nil + return &ERC20BurnableTransactor{contract: contract}, nil } -// NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract. -func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) { - contract, err := bindERC721MetadataMintable(address, nil, nil, filterer) +// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { + contract, err := bindERC20Burnable(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC721MetadataMintableFilterer{contract: contract}, nil + return &ERC20BurnableFilterer{contract: contract}, nil } -// bindERC721MetadataMintable binds a generic wrapper to an already deployed contract. -func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC721MetadataMintableMetaData.GetAbi() +// bindERC20Burnable binds a generic wrapper to an already deployed contract. +func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20BurnableMetaData.GetAbi() if err != nil { return nil, err } @@ -16924,46 +14815,47 @@ func bindERC721MetadataMintable(address common.Address, caller bind.ContractCall // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...) +func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts) +func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...) +func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...) +func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.contract.Transfer(opts) +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...) +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "balanceOf", owner) + err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -16971,425 +14863,235 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "getApproved", tokenId) + err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) } -// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function getApproved(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { - return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator) +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) } -// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // -// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { - return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator) +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) } -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "isMinter", account) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "approve", spender, value) } -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) { - return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) } -// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function isMinter(address account) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) { - return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function name() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "name") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burn", amount) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function name() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) { - return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts) +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function name() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) { - return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts) +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "ownerOf", tokenId) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId) +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) } -// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function ownerOf(uint256 tokenId) view returns(address) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { - return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId) +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "supportsInterface", interfaceId) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) } -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId) -} - -// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. -// -// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { - return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "symbol") - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) { - return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) { - return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts) -} - -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. -// -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { - var out []interface{} - err := _ERC721MetadataMintable.contract.Call(opts, &out, "tokenURI", tokenId) - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err -} - -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. -// -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) { - return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId) -} - -// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. -// -// Solidity: function tokenURI(uint256 tokenId) view returns(string) -func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) { - return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account) -} - -// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. -// -// Solidity: function addMinter(address account) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId) -} - -// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. -// -// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI) -} - -// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. -// -// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI) -} - -// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. -// -// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI) -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter") -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts) -} - -// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. -// -// Solidity: function renounceMinter() returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts) -} - -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) -} - -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. -// -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) } -// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. // -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue) } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data) +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) } -// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. // -// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data) +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount) } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount) } -// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function setApprovalForAll(address to, bool approved) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved) +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() -func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { - return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount) } -// ERC721MetadataMintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableApprovalIterator struct { - Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log +// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. +type ERC20BurnableApprovalIterator struct { + Event *ERC20BurnableApproval // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -17403,7 +15105,7 @@ type ERC721MetadataMintableApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataMintableApprovalIterator) Next() bool { +func (it *ERC20BurnableApprovalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -17412,7 +15114,7 @@ func (it *ERC721MetadataMintableApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721MetadataMintableApproval) + it.Event = new(ERC20BurnableApproval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -17427,7 +15129,7 @@ func (it *ERC721MetadataMintableApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721MetadataMintableApproval) + it.Event = new(ERC20BurnableApproval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -17443,67 +15145,61 @@ func (it *ERC721MetadataMintableApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataMintableApprovalIterator) Error() error { +func (it *ERC20BurnableApprovalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721MetadataMintableApprovalIterator) Close() error { +func (it *ERC20BurnableApprovalIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableApproval struct { - Owner common.Address - Approved common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. +type ERC20BurnableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos } // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } - return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil + return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil } // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var approvedRule []interface{} - for _, approvedItem := range approved { - approvedRule = append(approvedRule, approvedItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } @@ -17513,8 +15209,8 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataMintableApproval) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return err } event.Raw = log @@ -17537,18 +15233,19 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opt // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) { - event := new(ERC721MetadataMintableApproval) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721MetadataMintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableApprovalForAllIterator struct { - Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log +// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. +type ERC20BurnableTransferIterator struct { + Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -17562,7 +15259,7 @@ type ERC721MetadataMintableApprovalForAllIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool { +func (it *ERC20BurnableTransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -17571,7 +15268,7 @@ func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC721MetadataMintableApprovalForAll) + it.Event = new(ERC20BurnableTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -17586,7 +15283,7 @@ func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC721MetadataMintableApprovalForAll) + it.Event = new(ERC20BurnableTransfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -17602,59 +15299,61 @@ func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error { +func (it *ERC20BurnableTransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error { +func (it *ERC20BurnableTransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableApprovalForAll struct { - Owner common.Address - Operator common.Address - Approved bool - Raw types.Log // Blockchain specific contextual infos +// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. +type ERC20BurnableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) } - logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } - return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil + return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil } -// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) } - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) } - logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } @@ -17664,8 +15363,8 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForA select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataMintableApprovalForAll) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return err } event.Raw = log @@ -17686,314 +15385,5251 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForA }), nil } -// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) { - event := new(ERC721MetadataMintableApprovalForAll) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ERC721MetadataMintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableMinterAddedIterator struct { - Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log +// ERC20MintableMetaData contains all meta data concerning the ERC20Mintable contract. +var ERC20MintableMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "983b2d56": "addMinter(address)", + "dd62ed3e": "allowance(address,address)", + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "a457c2d7": "decreaseAllowance(address,uint256)", + "39509351": "increaseAllowance(address,uint256)", + "aa271e1a": "isMinter(address)", + "40c10f19": "mint(address,uint256)", + "98650275": "renounceMinter()", + "18160ddd": "totalSupply()", + "a9059cbb": "transfer(address,uint256)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820a92b4252e4e19cc559eef0c2a7e8667316b7c41692b585d93055461522689e9f0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", +} - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// ERC20MintableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MintableMetaData.ABI instead. +var ERC20MintableABI = ERC20MintableMetaData.ABI - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} +// ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820a92b4252e4e19cc559eef0c2a7e8667316b7c41692b585d93055461522689e9f0029` -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataMintableMinterAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Deprecated: Use ERC20MintableMetaData.Sigs instead. +// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. +var ERC20MintableFuncSigs = ERC20MintableMetaData.Sigs - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataMintableMinterAdded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// ERC20MintableBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20MintableMetaData.Bin instead. +var ERC20MintableBin = ERC20MintableMetaData.Bin - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// DeployERC20Mintable deploys a new Kaia contract, binding an instance of ERC20Mintable to it. +func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) { + parsed, err := ERC20MintableMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") } -} -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataMintableMinterAddedIterator) Error() error { - return it.fail + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MintableBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721MetadataMintableMinterAddedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ERC20Mintable is an auto generated Go binding around a Kaia contract. +type ERC20Mintable struct { + ERC20MintableCaller // Read-only binding to the contract + ERC20MintableTransactor // Write-only binding to the contract + ERC20MintableFilterer // Log filterer for contract events } -// ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableMinterAdded struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// ERC20MintableCaller is an auto generated read-only Go binding around a Kaia contract. +type ERC20MintableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. -// -// Solidity: event MinterAdded(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - - logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule) - if err != nil { - return nil, err - } - return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil +// ERC20MintableTransactor is an auto generated write-only Go binding around a Kaia contract. +type ERC20MintableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. -// -// Solidity: event MinterAdded(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) - } - - logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataMintableMinterAdded) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil +// ERC20MintableFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC20MintableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. -// -// Solidity: event MinterAdded(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) { - event := new(ERC721MetadataMintableMinterAdded) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { - return nil, err - } - return event, nil +// ERC20MintableSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC20MintableSession struct { + Contract *ERC20Mintable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC721MetadataMintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableMinterRemovedIterator struct { - Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// ERC20MintableCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC20MintableCallerSession struct { + Contract *ERC20MintableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataMintableMinterRemoved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataMintableMinterRemoved) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } +// ERC20MintableTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC20MintableTransactorSession struct { + Contract *ERC20MintableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error { - return it.fail +// ERC20MintableRaw is an auto generated low-level Go binding around a Kaia contract. +type ERC20MintableRaw struct { + Contract *ERC20Mintable // Generic contract binding to access the raw methods on } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error { - it.sub.Unsubscribe() - return nil +// ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC20MintableCallerRaw struct { + Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on } -// ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableMinterRemoved struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC20MintableTransactorRaw struct { + Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on } -// FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. -// -// Solidity: event MinterRemoved(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract. +func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) { + contract, err := bindERC20Mintable(address, backend, backend, backend) + if err != nil { + return nil, err } + return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil +} - logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule) +// NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract. +func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) { + contract, err := bindERC20Mintable(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil + return &ERC20MintableCaller{contract: contract}, nil } -// WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. -// -// Solidity: event MinterRemoved(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) { - var accountRule []interface{} - for _, accountItem := range account { - accountRule = append(accountRule, accountItem) +// NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract. +func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) { + contract, err := bindERC20Mintable(address, nil, transactor, nil) + if err != nil { + return nil, err } + return &ERC20MintableTransactor{contract: contract}, nil +} - logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule) +// NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract. +func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) { + contract, err := bindERC20Mintable(address, nil, nil, filterer) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataMintableMinterRemoved) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &ERC20MintableFilterer{contract: contract}, nil } -// ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. -// -// Solidity: event MinterRemoved(address indexed account) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) { - event := new(ERC721MetadataMintableMinterRemoved) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { +// bindERC20Mintable binds a generic wrapper to an already deployed contract. +func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MintableMetaData.GetAbi() + if err != nil { return nil, err } - return event, nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } -// ERC721MetadataMintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableTransferIterator struct { - Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...) +} - logs chan types.Log // Log channel receiving the found contract events - sub kaia.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts) } -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mintable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mintable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account) +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _ERC20Mintable.contract.Call(opts, &out, "isMinter", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) { + return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account) +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) { + return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Mintable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) { + return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "addMinter", account) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) { + return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) { + return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "mint", account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address account, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount) +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "renounceMinter") +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) { + return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts) +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) { + return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount) +} + +// ERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mintable contract. +type ERC20MintableApprovalIterator struct { + Event *ERC20MintableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MintableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MintableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MintableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract. +type ERC20MintableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MintableApproval) + if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) { + event := new(ERC20MintableApproval) + if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC20Mintable contract. +type ERC20MintableMinterAddedIterator struct { + Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MintableMinterAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MintableMinterAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MintableMinterAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MintableMinterAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MintableMinterAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract. +type ERC20MintableMinterAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule) + if err != nil { + return nil, err + } + return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil +} + +// WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MintableMinterAdded) + if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) { + event := new(ERC20MintableMinterAdded) + if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC20Mintable contract. +type ERC20MintableMinterRemovedIterator struct { + Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MintableMinterRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MintableMinterRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MintableMinterRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MintableMinterRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MintableMinterRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract. +type ERC20MintableMinterRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule) + if err != nil { + return nil, err + } + return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil +} + +// WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MintableMinterRemoved) + if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) { + event := new(ERC20MintableMinterRemoved) + if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mintable contract. +type ERC20MintableTransferIterator struct { + Event *ERC20MintableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MintableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MintableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MintableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MintableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MintableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract. +type ERC20MintableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MintableTransfer) + if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) { + event := new(ERC20MintableTransfer) + if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetaData contains all meta data concerning the ERC721 contract. +var ERC721MetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "081812fc": "getApproved(uint256)", + "e985e9c5": "isApprovedForAll(address,address)", + "6352211e": "ownerOf(uint256)", + "42842e0e": "safeTransferFrom(address,address,uint256)", + "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", + "a22cb465": "setApprovalForAll(address,bool)", + "01ffc9a7": "supportsInterface(bytes4)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029", +} + +// ERC721ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC721MetaData.ABI instead. +var ERC721ABI = ERC721MetaData.ABI + +// ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029` + +// Deprecated: Use ERC721MetaData.Sigs instead. +// ERC721FuncSigs maps the 4-byte function signature to its string representation. +var ERC721FuncSigs = ERC721MetaData.Sigs + +// ERC721Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC721MetaData.Bin instead. +var ERC721Bin = ERC721MetaData.Bin + +// DeployERC721 deploys a new Kaia contract, binding an instance of ERC721 to it. +func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) { + parsed, err := ERC721MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil +} + +// ERC721 is an auto generated Go binding around a Kaia contract. +type ERC721 struct { + ERC721Caller // Read-only binding to the contract + ERC721Transactor // Write-only binding to the contract + ERC721Filterer // Log filterer for contract events +} + +// ERC721Caller is an auto generated read-only Go binding around a Kaia contract. +type ERC721Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721Transactor is an auto generated write-only Go binding around a Kaia contract. +type ERC721Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC721Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC721Session struct { + Contract *ERC721 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC721CallerSession struct { + Contract *ERC721Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC721TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC721TransactorSession struct { + Contract *ERC721Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721Raw is an auto generated low-level Go binding around a Kaia contract. +type ERC721Raw struct { + Contract *ERC721 // Generic contract binding to access the raw methods on +} + +// ERC721CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC721CallerRaw struct { + Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on +} + +// ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC721TransactorRaw struct { + Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC721 creates a new instance of ERC721, bound to a specific deployed contract. +func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) { + contract, err := bindERC721(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil +} + +// NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract. +func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) { + contract, err := bindERC721(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC721Caller{contract: contract}, nil +} + +// NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract. +func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) { + contract, err := bindERC721(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC721Transactor{contract: contract}, nil +} + +// NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract. +func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) { + contract, err := bindERC721(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC721Filterer{contract: contract}, nil +} + +// bindERC721 binds a generic wrapper to an already deployed contract. +func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC721MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) +} + +// ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract. +type ERC721ApprovalIterator struct { + Event *ERC721Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721Approval represents a Approval event raised by the ERC721 contract. +type ERC721Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721Approval) + if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) { + event := new(ERC721Approval) + if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract. +type ERC721ApprovalForAllIterator struct { + Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract. +type ERC721ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721ApprovalForAll) + if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) { + event := new(ERC721ApprovalForAll) + if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract. +type ERC721TransferIterator struct { + Event *ERC721Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721Transfer represents a Transfer event raised by the ERC721 contract. +type ERC721Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721Transfer) + if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) { + event := new(ERC721Transfer) + if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721BurnableMetaData contains all meta data concerning the ERC721Burnable contract. +var ERC721BurnableMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "42966c68": "burn(uint256)", + "081812fc": "getApproved(uint256)", + "e985e9c5": "isApprovedForAll(address,address)", + "6352211e": "ownerOf(uint256)", + "42842e0e": "safeTransferFrom(address,address,uint256)", + "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", + "a22cb465": "setApprovalForAll(address,bool)", + "01ffc9a7": "supportsInterface(bytes4)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029", +} + +// ERC721BurnableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC721BurnableMetaData.ABI instead. +var ERC721BurnableABI = ERC721BurnableMetaData.ABI + +// ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029` + +// Deprecated: Use ERC721BurnableMetaData.Sigs instead. +// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. +var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs + +// ERC721BurnableBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC721BurnableMetaData.Bin instead. +var ERC721BurnableBin = ERC721BurnableMetaData.Bin + +// DeployERC721Burnable deploys a new Kaia contract, binding an instance of ERC721Burnable to it. +func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) { + parsed, err := ERC721BurnableMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721BurnableBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil +} + +// ERC721Burnable is an auto generated Go binding around a Kaia contract. +type ERC721Burnable struct { + ERC721BurnableCaller // Read-only binding to the contract + ERC721BurnableTransactor // Write-only binding to the contract + ERC721BurnableFilterer // Log filterer for contract events +} + +// ERC721BurnableCaller is an auto generated read-only Go binding around a Kaia contract. +type ERC721BurnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721BurnableTransactor is an auto generated write-only Go binding around a Kaia contract. +type ERC721BurnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721BurnableFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC721BurnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721BurnableSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC721BurnableSession struct { + Contract *ERC721Burnable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721BurnableCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC721BurnableCallerSession struct { + Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC721BurnableTransactorSession struct { + Contract *ERC721BurnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721BurnableRaw is an auto generated low-level Go binding around a Kaia contract. +type ERC721BurnableRaw struct { + Contract *ERC721Burnable // Generic contract binding to access the raw methods on +} + +// ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC721BurnableCallerRaw struct { + Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC721BurnableTransactorRaw struct { + Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract. +func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) { + contract, err := bindERC721Burnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil +} + +// NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract. +func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) { + contract, err := bindERC721Burnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC721BurnableCaller{contract: contract}, nil +} + +// NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract. +func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) { + contract, err := bindERC721Burnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC721BurnableTransactor{contract: contract}, nil +} + +// NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract. +func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) { + contract, err := bindERC721Burnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC721BurnableFilterer{contract: contract}, nil +} + +// bindERC721Burnable binds a generic wrapper to an already deployed contract. +func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC721BurnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Burnable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721Burnable.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "burn", tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId) +} + +// ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract. +type ERC721BurnableApprovalIterator struct { + Event *ERC721BurnableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721BurnableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721BurnableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721BurnableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract. +type ERC721BurnableApproval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721BurnableApproval) + if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) { + event := new(ERC721BurnableApproval) + if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract. +type ERC721BurnableApprovalForAllIterator struct { + Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721BurnableApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721BurnableApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721BurnableApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract. +type ERC721BurnableApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721BurnableApprovalForAll) + if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) { + event := new(ERC721BurnableApprovalForAll) + if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract. +type ERC721BurnableTransferIterator struct { + Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721BurnableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721BurnableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721BurnableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract. +type ERC721BurnableTransfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721BurnableTransfer) + if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) { + event := new(ERC721BurnableTransfer) + if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMetaData contains all meta data concerning the ERC721Metadata contract. +var ERC721MetadataMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "081812fc": "getApproved(uint256)", + "e985e9c5": "isApprovedForAll(address,address)", + "06fdde03": "name()", + "6352211e": "ownerOf(uint256)", + "42842e0e": "safeTransferFrom(address,address,uint256)", + "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", + "a22cb465": "setApprovalForAll(address,bool)", + "01ffc9a7": "supportsInterface(bytes4)", + "95d89b41": "symbol()", + "c87b56dd": "tokenURI(uint256)", + "23b872dd": "transferFrom(address,address,uint256)", + }, + Bin: "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582016b1d29c197257e5e7badcb1dd4bb9a362c53f457ed9517860d3d71d5d80fc420029", +} + +// ERC721MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC721MetadataMetaData.ABI instead. +var ERC721MetadataABI = ERC721MetadataMetaData.ABI + +// ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582016b1d29c197257e5e7badcb1dd4bb9a362c53f457ed9517860d3d71d5d80fc420029` + +// Deprecated: Use ERC721MetadataMetaData.Sigs instead. +// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. +var ERC721MetadataFuncSigs = ERC721MetadataMetaData.Sigs + +// ERC721MetadataBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC721MetadataMetaData.Bin instead. +var ERC721MetadataBin = ERC721MetadataMetaData.Bin + +// DeployERC721Metadata deploys a new Kaia contract, binding an instance of ERC721Metadata to it. +func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) { + parsed, err := ERC721MetadataMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil +} + +// ERC721Metadata is an auto generated Go binding around a Kaia contract. +type ERC721Metadata struct { + ERC721MetadataCaller // Read-only binding to the contract + ERC721MetadataTransactor // Write-only binding to the contract + ERC721MetadataFilterer // Log filterer for contract events +} + +// ERC721MetadataCaller is an auto generated read-only Go binding around a Kaia contract. +type ERC721MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataTransactor is an auto generated write-only Go binding around a Kaia contract. +type ERC721MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC721MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC721MetadataSession struct { + Contract *ERC721Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721MetadataCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC721MetadataCallerSession struct { + Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC721MetadataTransactorSession struct { + Contract *ERC721MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721MetadataRaw is an auto generated low-level Go binding around a Kaia contract. +type ERC721MetadataRaw struct { + Contract *ERC721Metadata // Generic contract binding to access the raw methods on +} + +// ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC721MetadataCallerRaw struct { + Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC721MetadataTransactorRaw struct { + Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract. +func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) { + contract, err := bindERC721Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil +} + +// NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract. +func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) { + contract, err := bindERC721Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC721MetadataCaller{contract: contract}, nil +} + +// NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract. +func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) { + contract, err := bindERC721Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC721MetadataTransactor{contract: contract}, nil +} + +// NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract. +func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) { + contract, err := bindERC721Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC721MetadataFilterer{contract: contract}, nil +} + +// bindERC721Metadata binds a generic wrapper to an already deployed contract. +func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC721MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721Metadata.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) { + return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) { + return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) { + return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) { + return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId) +} + +// ERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Metadata contract. +type ERC721MetadataApprovalIterator struct { + Event *ERC721MetadataApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract. +type ERC721MetadataApproval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataApproval) + if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) { + event := new(ERC721MetadataApproval) + if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Metadata contract. +type ERC721MetadataApprovalForAllIterator struct { + Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract. +type ERC721MetadataApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataApprovalForAll) + if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) { + event := new(ERC721MetadataApprovalForAll) + if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Metadata contract. +type ERC721MetadataTransferIterator struct { + Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract. +type ERC721MetadataTransfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataTransfer) + if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) { + event := new(ERC721MetadataTransfer) + if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMintableMetaData contains all meta data concerning the ERC721MetadataMintable contract. +var ERC721MetadataMintableMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "983b2d56": "addMinter(address)", + "095ea7b3": "approve(address,uint256)", + "70a08231": "balanceOf(address)", + "081812fc": "getApproved(uint256)", + "e985e9c5": "isApprovedForAll(address,address)", + "aa271e1a": "isMinter(address)", + "50bb4e7f": "mintWithTokenURI(address,uint256,string)", + "06fdde03": "name()", + "6352211e": "ownerOf(uint256)", + "98650275": "renounceMinter()", + "42842e0e": "safeTransferFrom(address,address,uint256)", + "b88d4fde": "safeTransferFrom(address,address,uint256,bytes)", + "a22cb465": "setApprovalForAll(address,bool)", + "01ffc9a7": "supportsInterface(bytes4)", + "95d89b41": "symbol()", + "c87b56dd": "tokenURI(uint256)", + "23b872dd": "transferFrom(address,address,uint256)", + }, +} + +// ERC721MetadataMintableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC721MetadataMintableMetaData.ABI instead. +var ERC721MetadataMintableABI = ERC721MetadataMintableMetaData.ABI + +// ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ERC721MetadataMintableBinRuntime = `` + +// Deprecated: Use ERC721MetadataMintableMetaData.Sigs instead. +// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. +var ERC721MetadataMintableFuncSigs = ERC721MetadataMintableMetaData.Sigs + +// ERC721MetadataMintable is an auto generated Go binding around a Kaia contract. +type ERC721MetadataMintable struct { + ERC721MetadataMintableCaller // Read-only binding to the contract + ERC721MetadataMintableTransactor // Write-only binding to the contract + ERC721MetadataMintableFilterer // Log filterer for contract events +} + +// ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Kaia contract. +type ERC721MetadataMintableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Kaia contract. +type ERC721MetadataMintableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ERC721MetadataMintableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC721MetadataMintableSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ERC721MetadataMintableSession struct { + Contract *ERC721MetadataMintable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ERC721MetadataMintableCallerSession struct { + Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ERC721MetadataMintableTransactorSession struct { + Contract *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Kaia contract. +type ERC721MetadataMintableRaw struct { + Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on +} + +// ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ERC721MetadataMintableCallerRaw struct { + Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ERC721MetadataMintableTransactorRaw struct { + Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract. +func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) { + contract, err := bindERC721MetadataMintable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil +} + +// NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract. +func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) { + contract, err := bindERC721MetadataMintable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableCaller{contract: contract}, nil +} + +// NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract. +func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) { + contract, err := bindERC721MetadataMintable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableTransactor{contract: contract}, nil +} + +// NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract. +func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) { + contract, err := bindERC721MetadataMintable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableFilterer{contract: contract}, nil +} + +// bindERC721MetadataMintable binds a generic wrapper to an already deployed contract. +func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC721MetadataMintableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator) +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "isMinter", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) { + return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account) +} + +// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. +// +// Solidity: function isMinter(address account) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) { + return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) { + return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) { + return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) { + return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) { + return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _ERC721MetadataMintable.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account) +} + +// AddMinter is a paid mutator transaction binding the contract method 0x983b2d56. +// +// Solidity: function addMinter(address account) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId) +} + +// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. +// +// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI) +} + +// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. +// +// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI) +} + +// MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f. +// +// Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool) +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI) +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter") +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts) +} + +// RenounceMinter is a paid mutator transaction binding the contract method 0x98650275. +// +// Solidity: function renounceMinter() returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address to, bool approved) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId) +} + +// ERC721MetadataMintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableApprovalIterator struct { + Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataMintableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataMintableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataMintableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableApproval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataMintableApproval) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) { + event := new(ERC721MetadataMintableApproval) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableApprovalForAllIterator struct { + Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataMintableApprovalForAll) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) { + event := new(ERC721MetadataMintableApprovalForAll) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableMinterAddedIterator struct { + Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableMinterAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableMinterAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataMintableMinterAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataMintableMinterAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableMinterAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil +} + +// WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataMintableMinterAdded) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6. +// +// Solidity: event MinterAdded(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) { + event := new(ERC721MetadataMintableMinterAdded) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableMinterRemovedIterator struct { + Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableMinterRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableMinterRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableMinterRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil +} + +// WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataMintableMinterRemoved) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692. +// +// Solidity: event MinterRemoved(address indexed account) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) { + event := new(ERC721MetadataMintableMinterRemoved) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC721MetadataMintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableTransferIterator struct { + Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. func (it *ERC721MetadataMintableTransferIterator) Next() bool { // If the iterator failed, stop iterating @@ -18009,428 +20645,809 @@ func (it *ERC721MetadataMintableTransferIterator) Next() bool { it.fail = err return false } - it.Event.Raw = log - return true + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721MetadataMintableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721MetadataMintableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721MetadataMintableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract. +type ERC721MetadataMintableTransfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721MetadataMintableTransfer) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) { + event := new(ERC721MetadataMintableTransfer) + if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ExtBridgeMetaData contains all meta data concerning the ExtBridge contract. +var ExtBridgeMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[],\"name\":\"callback\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC721\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"setCallback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setRunningStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC20\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"RunningStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"voteType\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"OperatorThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", + Sigs: map[string]string{ + "3a3099d1": "MAX_OPERATOR()", + "083b2732": "callback()", + "9832c1d7": "closedValueTransferVotes(uint64)", + "ac6fff0b": "configurationNonce()", + "d8cf98ca": "deregisterOperator(address)", + "bab2af1d": "deregisterToken(address)", + "488af871": "feeOfERC20(address)", + "c263b5d6": "feeOfKLAY()", + "b3f00674": "feeReceiver()", + "b2c01030": "getOperatorList()", + "ea21eade": "getRegisteredTokenList()", + "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", + "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", + "13a6738a": "handleNoncesToBlockNums(uint64)", + "8a75eee2": "handledRequestTx(bytes32)", + "48a18a6a": "indexOfTokens(address)", + "8f32d59b": "isOwner()", + "2014e5d1": "isRunning()", + "10693fcd": "lockToken(address)", + "5eb7413a": "lockedTokens(address)", + "4b40b826": "lowerHandleNonce()", + "6e176ec2": "modeMintBurn()", + "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", + "cf0da290": "onERC721Received(address,uint256,address,bytes)", + "cb38f407": "operatorList(uint256)", + "5526f76b": "operatorThresholds(uint8)", + "13e7c9d8": "operators(address)", + "8da5cb5b": "owner()", + "989ba0d3": "recoveryBlockNumber()", + "3682a450": "registerOperator(address)", + "4739f7e5": "registerToken(address,address)", + "3e4fe949": "registeredTokenList(uint256)", + "8c0bd916": "registeredTokens(address)", + "715018a6": "renounceOwnership()", + "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", + "22604742": "requestERC721Transfer(address,address,uint256,bytes)", + "7c1a0302": "requestNonce()", + "c5e49073": "requestSellERC20(address,address,uint256,uint256,uint256)", + "4c5146f5": "requestSellERC721(address,address,uint256,uint256)", + "8daa63ac": "setCallback(address)", + "2f88396c": "setERC20Fee(address,uint256,uint64)", + "efdcd974": "setFeeReceiver(address)", + "ee2aec65": "setOperatorThreshold(uint8,uint8)", + "b1db5b17": "setRunningStatus(bool)", + "c877cf37": "start(bool)", + "f2fde38b": "transferOwnership(address)", + "9ef2017b": "unlockToken(address)", + "54edad72": "upperHandleNonce()", + }, + Bin: "0x60806040819052600180546001600160a01b03199081169091556000600255600e8054600160401b61ffff0219166901000000000000000000179055600f8054600160401b600160801b0319166801000000000000000017905560118054909116905560208062003ec48339810180604052602081101561007f57600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff8216101561010d5760ff81166000908152600d60205260409020805460ff19166001908117909155016100db565b50336000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055600e80549115156801000000000000000002600160401b60ff021990921691909117905550613d25806200019f6000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80638c0bd91611610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b80578063ea21eade14610ba6578063ee2aec6514610bae578063efdcd97414610bd6578063f1656e5314610bfc578063f2fde38b14610cc5576102a0565b8063bab2af1d14610a11578063c263b5d614610a37578063c5e4907314610a3f578063c877cf3714610a81578063cb38f40714610aa0578063cf0da29014610abd576102a0565b80639ef2017b116101205780639ef2017b146107f3578063ac6fff0b14610819578063afb6022314610821578063b1db5b1714610992578063b2c01030146109b1578063b3f0067414610a09576102a0565b80638c0bd916146107695780638da5cb5b1461078f5780638daa63ac146107975780638f32d59b146107bd5780639832c1d7146107c5578063989ba0d3146107eb576102a0565b80634739f7e51161020b5780635526f76b116101c45780635526f76b146106d85780635eb7413a1461070e5780636e176ec214610734578063715018a61461073c5780637c1a0302146107445780638a75eee21461074c576102a0565b80634739f7e514610600578063488af8711461062e57806348a18a6a146106665780634b40b8261461068c5780634c5146f51461069457806354edad72146106d0576102a0565b806326c23b541161025d57806326c23b54146104395780632f88396c1461048e5780633682a450146104c95780633a3099d1146104ef5780633e4fe949146104f7578063407e6bae14610514576102a0565b8063083b2732146102a557806310693fcd146102c957806313a6738a146102f157806313e7c9d8146103335780632014e5d11461036d5780632260474214610375575b600080fd5b6102ad610ceb565b604080516001600160a01b039092168252519081900360200190f35b6102ef600480360360208110156102df57600080fd5b50356001600160a01b0316610cfa565b005b6103176004803603602081101561030757600080fd5b50356001600160401b0316610e5f565b604080516001600160401b039092168252519081900360200190f35b6103596004803603602081101561034957600080fd5b50356001600160a01b0316610e7a565b604080519115158252519081900360200190f35b610359610e8f565b6102ef6004803603608081101561038b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103c557600080fd5b8201836020820111156103d757600080fd5b803590602001918460018302840111600160201b831117156103f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e9f945050505050565b6102ef600480360360a081101561044f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103c557600080fd5b6102ef600480360360608110156104a457600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610ee0565b6102ef600480360360208110156104df57600080fd5b50356001600160a01b0316610f68565b610317611108565b6102ad6004803603602081101561050d57600080fd5b503561110d565b6102ef600480360361010081101561052b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111600160201b831117156105bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611134945050505050565b6102ef6004803603604081101561061657600080fd5b506001600160a01b03813581169160200135166112fb565b6106546004803603602081101561064457600080fd5b50356001600160a01b03166114a0565b60408051918252519081900360200190f35b6106546004803603602081101561067c57600080fd5b50356001600160a01b03166114b2565b6103176114c4565b6102ef600480360360808110156106aa57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356114da565b61031761150b565b6106f8600480360360208110156106ee57600080fd5b503560ff1661151a565b6040805160ff9092168252519081900360200190f35b6103596004803603602081101561072457600080fd5b50356001600160a01b031661152f565b610359611544565b6102ef611554565b6103176115e8565b6103596004803603602081101561076257600080fd5b50356115fe565b6102ad6004803603602081101561077f57600080fd5b50356001600160a01b0316611613565b6102ad61162e565b6102ef600480360360208110156107ad57600080fd5b50356001600160a01b031661163e565b6103596116aa565b610359600480360360208110156107db57600080fd5b50356001600160401b03166116bb565b6103176116d0565b6102ef6004803603602081101561080957600080fd5b50356001600160a01b03166116e6565b610317611855565b6102ef600480360361012081101561083857600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561089957600080fd5b8201836020820111156108ab57600080fd5b803590602001918460018302840111600160201b831117156108cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091e57600080fd5b82018360208201111561093057600080fd5b803590602001918460018302840111600160201b8311171561095157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611864945050505050565b6102ef600480360360208110156109a857600080fd5b50351515611a2d565b6109b9611ad0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109f55781810151838201526020016109dd565b505050509050019250505060405180910390f35b6102ad611b32565b6102ef60048036036020811015610a2757600080fd5b50356001600160a01b0316611b41565b610654611d30565b6102ef600480360360a0811015610a5557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611d36565b6102ef60048036036020811015610a9757600080fd5b50351515611d69565b6102ad60048036036020811015610ab657600080fd5b5035611dbf565b6102ef60048036036080811015610ad357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610b0c57600080fd5b820183602082011115610b1e57600080fd5b803590602001918460018302840111600160201b83111715610b3f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611dcc945050505050565b6102ef60048036036020811015610b9657600080fd5b50356001600160a01b0316611dd9565b6109b9611f5f565b6102ef60048036036040811015610bc457600080fd5b5060ff81358116916020013516611fbf565b6102ef60048036036020811015610bec57600080fd5b50356001600160a01b031661213d565b6102ef600480360360a0811015610c1257600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c5157600080fd5b820183602082011115610c6357600080fd5b803590602001918460018302840111600160201b83111715610c8457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612190945050505050565b6102ef60048036036020811015610cdb57600080fd5b50356001600160a01b031661219e565b6011546001600160a01b031681565b610d026116aa565b610d445760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610dac5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610e115760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f475760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f50816121f1565b610f5957610f63565b610f6383836122c5565b505050565b610f706116aa565b610fb25760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b600c80541061100b5760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff161561107c5760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600b6020526040808220805460ff19166001908117909155600c8054918201815583527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191684179055517f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59190a250565b600c81565b6007818154811061111a57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461118d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b03166111ed5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b600081806020019051602081101561120457600080fd5b50519050806112535760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611271908a908a906001600160a01b0316898989898961230c565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b50505050505050505050505050565b6113036116aa565b6113455760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113b75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166113ff57604051600160e51b62461bcd028152600401808060200182810382526021815260200180613c8f6021913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b6115058484848460405160200180828152602001915050604051602081830303815290604052612611565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b61155c6116aa565b61159e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6116466116aa565b6116885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b6116ee6116aa565b6117305760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117985760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1661180a5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b80516020146118bd5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661191d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b600081806020019051602081101561193457600080fd5b50519050806119835760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b6011546119a2908b908b906001600160a01b03168a8a8a8a8a8a61268d565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b5050505050505050505050505050565b611a356116aa565b611a775760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b600e8054821515600160481b810269ff000000000000000000199092169190911790915560408051918252517f6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d7199181900360200190a150565b6060600c805480602002602001604051908101604052809291908181526020018280548015611b2857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b0a575b5050505050905090565b6001546001600160a01b031681565b611b496116aa565b611b8b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611bf35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611ce357600780546000198101908110611c5757fe5b600091825260209091200154600780546001600160a01b039092169183908110611c7d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611cbd57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611cf6906000198301613c2b565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611d62858585858560405160200180828152602001915050604051602081830303815290604052612a2f565b5050505050565b611d716116aa565b611db35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc81611a2d565b50565b600c818154811061111a57fe5b6115053385848685612a6a565b611de16116aa565b611e235760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611e4857600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611f2757816001600160a01b0316600c8281548110611e8a57fe5b6000918252602090912001546001600160a01b03161415611f1f57600c80546000198101908110611eb757fe5b600091825260209091200154600c80546001600160a01b039092169183908110611edd57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611f19906000198301613c2b565b50611f27565b600101611e69565b506040516001600160a01b038216907f6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d90600090a250565b60606007805480602002602001604051908101604052809291908181526020018280548015611b28576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611b0a575050505050905090565b611fc76116aa565b6120095760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b60008160ff16116120645760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff821611156120c15760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d60008460028111156120d257fe5b60ff90811682526020820192909252604001600020805460ff19169290911691909117905581600281111561210357fe5b6040805160ff8416815290517fde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c09181900360200190a25050565b6121456116aa565b6121875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc81612f95565b611d62338686868686612fdf565b6121a66116aa565b6121e85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc8161332a565b600e546000906001600160401b038381169116146122595760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050612288600184836133ce565b156122ba575050600e805467ffffffffffffffff19811660016001600160401b039283168101909216179091556122c0565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166123735760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61237c83613532565b6123858361359f565b61238e57612607565b61239788613662565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff19169184169190911790556123cf8361367d565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b0316896040518087815260200186600281111561244057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124b757818101518382015260200161249f565b50505050905090810190601f1680156124e45780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156125ed57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b505050506040513d602081101561259257600080fd5b50516125e85760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612607565b6126076001600160a01b038616878663ffffffff6137e116565b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561266857600080fd5b505af115801561267c573d6000803e3d6000fd5b505050506115058433858585612a6a565b336000908152600b602052604090205460ff166126f45760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6126fd84613532565b6127068461359f565b61270f57612a24565b61271889613662565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff19169185169190911790556127508461367d565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156127c157fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612838578181015183820152602001612820565b50505050905090810190601f1680156128655780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156129c957856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129055781810151838201526020016128ed565b50505050905090810190601f1680156129325780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561295357600080fd5b505af1158015612967573d6000803e3d6000fd5b505050506040513d602081101561297d57600080fd5b50516129c45760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612a24565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156112d857600080fd5b505050505050505050565b612a5c3330612a44868663ffffffff61383616565b6001600160a01b03891692919063ffffffff61389316565b611d62853386868686612fdf565b6001600160a01b03808616600090815260056020526040902054869116612ad25760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b375760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b8c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bf95780518252601f199092019160209182019101612bda565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c5d5780518252601f199092019160209182019101612c3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cbf576040519150601f19603f3d011682016040523d82523d6000602084013e612cc4565b606091505b509150915081612cdf57506040805160208101909152600081525b600e54600160401b900460ff1615612d5057886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d3757600080fd5b505af1158015612d4b573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dee578181015183820152602001612dd6565b50505050905090810190601f168015612e1b5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e3f57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612eb1578181015183820152602001612e99565b50505050905090810190601f168015612ede5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612f11578181015183820152602001612ef9565b50505050905090810190601f168015612f3e5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130475760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff16156130ac5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166131015760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131595760408051600160e51b62461bcd02815260206004820152601760248201527f7a65726f20455243323020746f6b656e20616d6f756e74000000000000000000604482015290519081900360640190fd5b6000613166888a876138f0565b600e54909150600160401b900460ff16156131da57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156131c157600080fd5b505af11580156131d5573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561324457fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156132a9578181015183820152602001613291565b50505050905090810190601f1680156132d65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661337257604051600160e51b62461bcd028152600401808060200182810382526026815260200180613c696026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133e157fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134455781546001810183556000838152602090200180546001600160a01b0319163317905561346c565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134b25760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134e557fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106135245760019250505061352b565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611dbc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156136015760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613630600084836133ce565b156122ba5750506001600160401b0381166000908152600a60205260409020805460ff191660019081179091556122c0565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b0390811690821611156136b157600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136e75750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561373657506001600160401b038082166000908152601060205260409020541615155b156137a3576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136fb565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb02179052610f63908490613a04565b60008282018381101561352b5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052611505908590613a04565b6001600160a01b038083166000908152600360205260408120546001549192909116158015906139205750600081115b156139d9578083101561397d5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015461399d906001600160a01b0386811691168363ffffffff6137e116565b60006139af848363ffffffff613bc516565b905080156139d1576139d16001600160a01b038616878363ffffffff6137e116565b50905061352b565b82156139f9576139f96001600160a01b038516868563ffffffff6137e116565b506000949350505050565b613a16826001600160a01b0316613c25565b613a6a5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310613aa85780518252601f199092019160209182019101613a89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b0a576040519150601f19603f3d011682016040523d82523d6000602084013e613b0f565b606091505b509150915081613b695760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561150557808060200190516020811015613b8557600080fd5b505161150557604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613cd0602a913960400191505060405180910390fd5b600082821115613c1f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b3b151590565b815481835581811115610f6357600083815260209020610f6391810190830161163b91905b80821115613c645760008155600101613c50565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a723058204523f22516121cb4e509e28c0ccc3aa9291370efec587d23ab9c7fc680ae81c00029", +} + +// ExtBridgeABI is the input ABI used to generate the binding from. +// Deprecated: Use ExtBridgeMetaData.ABI instead. +var ExtBridgeABI = ExtBridgeMetaData.ABI + +// ExtBridgeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const ExtBridgeBinRuntime = `608060405234801561001057600080fd5b50600436106102a05760003560e01c80638c0bd91611610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b80578063ea21eade14610ba6578063ee2aec6514610bae578063efdcd97414610bd6578063f1656e5314610bfc578063f2fde38b14610cc5576102a0565b8063bab2af1d14610a11578063c263b5d614610a37578063c5e4907314610a3f578063c877cf3714610a81578063cb38f40714610aa0578063cf0da29014610abd576102a0565b80639ef2017b116101205780639ef2017b146107f3578063ac6fff0b14610819578063afb6022314610821578063b1db5b1714610992578063b2c01030146109b1578063b3f0067414610a09576102a0565b80638c0bd916146107695780638da5cb5b1461078f5780638daa63ac146107975780638f32d59b146107bd5780639832c1d7146107c5578063989ba0d3146107eb576102a0565b80634739f7e51161020b5780635526f76b116101c45780635526f76b146106d85780635eb7413a1461070e5780636e176ec214610734578063715018a61461073c5780637c1a0302146107445780638a75eee21461074c576102a0565b80634739f7e514610600578063488af8711461062e57806348a18a6a146106665780634b40b8261461068c5780634c5146f51461069457806354edad72146106d0576102a0565b806326c23b541161025d57806326c23b54146104395780632f88396c1461048e5780633682a450146104c95780633a3099d1146104ef5780633e4fe949146104f7578063407e6bae14610514576102a0565b8063083b2732146102a557806310693fcd146102c957806313a6738a146102f157806313e7c9d8146103335780632014e5d11461036d5780632260474214610375575b600080fd5b6102ad610ceb565b604080516001600160a01b039092168252519081900360200190f35b6102ef600480360360208110156102df57600080fd5b50356001600160a01b0316610cfa565b005b6103176004803603602081101561030757600080fd5b50356001600160401b0316610e5f565b604080516001600160401b039092168252519081900360200190f35b6103596004803603602081101561034957600080fd5b50356001600160a01b0316610e7a565b604080519115158252519081900360200190f35b610359610e8f565b6102ef6004803603608081101561038b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103c557600080fd5b8201836020820111156103d757600080fd5b803590602001918460018302840111600160201b831117156103f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e9f945050505050565b6102ef600480360360a081101561044f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103c557600080fd5b6102ef600480360360608110156104a457600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610ee0565b6102ef600480360360208110156104df57600080fd5b50356001600160a01b0316610f68565b610317611108565b6102ad6004803603602081101561050d57600080fd5b503561110d565b6102ef600480360361010081101561052b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111600160201b831117156105bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611134945050505050565b6102ef6004803603604081101561061657600080fd5b506001600160a01b03813581169160200135166112fb565b6106546004803603602081101561064457600080fd5b50356001600160a01b03166114a0565b60408051918252519081900360200190f35b6106546004803603602081101561067c57600080fd5b50356001600160a01b03166114b2565b6103176114c4565b6102ef600480360360808110156106aa57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356114da565b61031761150b565b6106f8600480360360208110156106ee57600080fd5b503560ff1661151a565b6040805160ff9092168252519081900360200190f35b6103596004803603602081101561072457600080fd5b50356001600160a01b031661152f565b610359611544565b6102ef611554565b6103176115e8565b6103596004803603602081101561076257600080fd5b50356115fe565b6102ad6004803603602081101561077f57600080fd5b50356001600160a01b0316611613565b6102ad61162e565b6102ef600480360360208110156107ad57600080fd5b50356001600160a01b031661163e565b6103596116aa565b610359600480360360208110156107db57600080fd5b50356001600160401b03166116bb565b6103176116d0565b6102ef6004803603602081101561080957600080fd5b50356001600160a01b03166116e6565b610317611855565b6102ef600480360361012081101561083857600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561089957600080fd5b8201836020820111156108ab57600080fd5b803590602001918460018302840111600160201b831117156108cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091e57600080fd5b82018360208201111561093057600080fd5b803590602001918460018302840111600160201b8311171561095157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611864945050505050565b6102ef600480360360208110156109a857600080fd5b50351515611a2d565b6109b9611ad0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109f55781810151838201526020016109dd565b505050509050019250505060405180910390f35b6102ad611b32565b6102ef60048036036020811015610a2757600080fd5b50356001600160a01b0316611b41565b610654611d30565b6102ef600480360360a0811015610a5557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611d36565b6102ef60048036036020811015610a9757600080fd5b50351515611d69565b6102ad60048036036020811015610ab657600080fd5b5035611dbf565b6102ef60048036036080811015610ad357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610b0c57600080fd5b820183602082011115610b1e57600080fd5b803590602001918460018302840111600160201b83111715610b3f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611dcc945050505050565b6102ef60048036036020811015610b9657600080fd5b50356001600160a01b0316611dd9565b6109b9611f5f565b6102ef60048036036040811015610bc457600080fd5b5060ff81358116916020013516611fbf565b6102ef60048036036020811015610bec57600080fd5b50356001600160a01b031661213d565b6102ef600480360360a0811015610c1257600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c5157600080fd5b820183602082011115610c6357600080fd5b803590602001918460018302840111600160201b83111715610c8457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612190945050505050565b6102ef60048036036020811015610cdb57600080fd5b50356001600160a01b031661219e565b6011546001600160a01b031681565b610d026116aa565b610d445760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610dac5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610e115760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f475760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f50816121f1565b610f5957610f63565b610f6383836122c5565b505050565b610f706116aa565b610fb25760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b600c80541061100b5760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff161561107c5760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600b6020526040808220805460ff19166001908117909155600c8054918201815583527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191684179055517f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59190a250565b600c81565b6007818154811061111a57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461118d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b03166111ed5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b600081806020019051602081101561120457600080fd5b50519050806112535760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611271908a908a906001600160a01b0316898989898961230c565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b50505050505050505050505050565b6113036116aa565b6113455760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113b75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166113ff57604051600160e51b62461bcd028152600401808060200182810382526021815260200180613c8f6021913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b6115058484848460405160200180828152602001915050604051602081830303815290604052612611565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b61155c6116aa565b61159e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6116466116aa565b6116885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b6116ee6116aa565b6117305760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117985760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1661180a5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b80516020146118bd5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661191d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b600081806020019051602081101561193457600080fd5b50519050806119835760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b6011546119a2908b908b906001600160a01b03168a8a8a8a8a8a61268d565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b5050505050505050505050505050565b611a356116aa565b611a775760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b600e8054821515600160481b810269ff000000000000000000199092169190911790915560408051918252517f6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d7199181900360200190a150565b6060600c805480602002602001604051908101604052809291908181526020018280548015611b2857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b0a575b5050505050905090565b6001546001600160a01b031681565b611b496116aa565b611b8b5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611bf35760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611ce357600780546000198101908110611c5757fe5b600091825260209091200154600780546001600160a01b039092169183908110611c7d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611cbd57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611cf6906000198301613c2b565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611d62858585858560405160200180828152602001915050604051602081830303815290604052612a2f565b5050505050565b611d716116aa565b611db35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc81611a2d565b50565b600c818154811061111a57fe5b6115053385848685612a6a565b611de16116aa565b611e235760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611e4857600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611f2757816001600160a01b0316600c8281548110611e8a57fe5b6000918252602090912001546001600160a01b03161415611f1f57600c80546000198101908110611eb757fe5b600091825260209091200154600c80546001600160a01b039092169183908110611edd57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611f19906000198301613c2b565b50611f27565b600101611e69565b506040516001600160a01b038216907f6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d90600090a250565b60606007805480602002602001604051908101604052809291908181526020018280548015611b28576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611b0a575050505050905090565b611fc76116aa565b6120095760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b60008160ff16116120645760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff821611156120c15760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d60008460028111156120d257fe5b60ff90811682526020820192909252604001600020805460ff19169290911691909117905581600281111561210357fe5b6040805160ff8416815290517fde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c09181900360200190a25050565b6121456116aa565b6121875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc81612f95565b611d62338686868686612fdf565b6121a66116aa565b6121e85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613cb0833981519152604482015290519081900360640190fd5b611dbc8161332a565b600e546000906001600160401b038381169116146122595760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050612288600184836133ce565b156122ba575050600e805467ffffffffffffffff19811660016001600160401b039283168101909216179091556122c0565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166123735760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61237c83613532565b6123858361359f565b61238e57612607565b61239788613662565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff19169184169190911790556123cf8361367d565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b0316896040518087815260200186600281111561244057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124b757818101518382015260200161249f565b50505050905090810190601f1680156124e45780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156125ed57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b505050506040513d602081101561259257600080fd5b50516125e85760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612607565b6126076001600160a01b038616878663ffffffff6137e116565b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561266857600080fd5b505af115801561267c573d6000803e3d6000fd5b505050506115058433858585612a6a565b336000908152600b602052604090205460ff166126f45760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6126fd84613532565b6127068461359f565b61270f57612a24565b61271889613662565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff19169185169190911790556127508461367d565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156127c157fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612838578181015183820152602001612820565b50505050905090810190601f1680156128655780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156129c957856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129055781810151838201526020016128ed565b50505050905090810190601f1680156129325780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561295357600080fd5b505af1158015612967573d6000803e3d6000fd5b505050506040513d602081101561297d57600080fd5b50516129c45760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612a24565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156112d857600080fd5b505050505050505050565b612a5c3330612a44868663ffffffff61383616565b6001600160a01b03891692919063ffffffff61389316565b611d62853386868686612fdf565b6001600160a01b03808616600090815260056020526040902054869116612ad25760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b375760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b8c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bf95780518252601f199092019160209182019101612bda565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c5d5780518252601f199092019160209182019101612c3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cbf576040519150601f19603f3d011682016040523d82523d6000602084013e612cc4565b606091505b509150915081612cdf57506040805160208101909152600081525b600e54600160401b900460ff1615612d5057886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d3757600080fd5b505af1158015612d4b573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dee578181015183820152602001612dd6565b50505050905090810190601f168015612e1b5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e3f57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612eb1578181015183820152602001612e99565b50505050905090810190601f168015612ede5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612f11578181015183820152602001612ef9565b50505050905090810190601f168015612f3e5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130475760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff16156130ac5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166131015760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131595760408051600160e51b62461bcd02815260206004820152601760248201527f7a65726f20455243323020746f6b656e20616d6f756e74000000000000000000604482015290519081900360640190fd5b6000613166888a876138f0565b600e54909150600160401b900460ff16156131da57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156131c157600080fd5b505af11580156131d5573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561324457fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156132a9578181015183820152602001613291565b50505050905090810190601f1680156132d65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661337257604051600160e51b62461bcd028152600401808060200182810382526026815260200180613c696026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133e157fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134455781546001810183556000838152602090200180546001600160a01b0319163317905561346c565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134b25760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134e557fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106135245760019250505061352b565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611dbc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156136015760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613630600084836133ce565b156122ba5750506001600160401b0381166000908152600a60205260409020805460ff191660019081179091556122c0565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b0390811690821611156136b157600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136e75750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561373657506001600160401b038082166000908152601060205260409020541615155b156137a3576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136fb565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb02179052610f63908490613a04565b60008282018381101561352b5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052611505908590613a04565b6001600160a01b038083166000908152600360205260408120546001549192909116158015906139205750600081115b156139d9578083101561397d5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015461399d906001600160a01b0386811691168363ffffffff6137e116565b60006139af848363ffffffff613bc516565b905080156139d1576139d16001600160a01b038616878363ffffffff6137e116565b50905061352b565b82156139f9576139f96001600160a01b038516868563ffffffff6137e116565b506000949350505050565b613a16826001600160a01b0316613c25565b613a6a5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310613aa85780518252601f199092019160209182019101613a89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b0a576040519150601f19603f3d011682016040523d82523d6000602084013e613b0f565b606091505b509150915081613b695760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561150557808060200190516020811015613b8557600080fd5b505161150557604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613cd0602a913960400191505060405180910390fd5b600082821115613c1f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b3b151590565b815481835581811115610f6357600083815260209020610f6391810190830161163b91905b80821115613c645760008155600101613c50565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373636f756e7465727061727420746f6b656e2061646472657373206973207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a723058204523f22516121cb4e509e28c0ccc3aa9291370efec587d23ab9c7fc680ae81c00029` + +// Deprecated: Use ExtBridgeMetaData.Sigs instead. +// ExtBridgeFuncSigs maps the 4-byte function signature to its string representation. +var ExtBridgeFuncSigs = ExtBridgeMetaData.Sigs + +// ExtBridgeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ExtBridgeMetaData.Bin instead. +var ExtBridgeBin = ExtBridgeMetaData.Bin + +// DeployExtBridge deploys a new Kaia contract, binding an instance of ExtBridge to it. +func DeployExtBridge(auth *bind.TransactOpts, backend bind.ContractBackend, _modeMintBurn bool) (common.Address, *types.Transaction, *ExtBridge, error) { + parsed, err := ExtBridgeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExtBridgeBin), backend, _modeMintBurn) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil +} + +// ExtBridge is an auto generated Go binding around a Kaia contract. +type ExtBridge struct { + ExtBridgeCaller // Read-only binding to the contract + ExtBridgeTransactor // Write-only binding to the contract + ExtBridgeFilterer // Log filterer for contract events +} + +// ExtBridgeCaller is an auto generated read-only Go binding around a Kaia contract. +type ExtBridgeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExtBridgeTransactor is an auto generated write-only Go binding around a Kaia contract. +type ExtBridgeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExtBridgeFilterer is an auto generated log filtering Go binding around a Kaia contract events. +type ExtBridgeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ExtBridgeSession is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type ExtBridgeSession struct { + Contract *ExtBridge // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExtBridgeCallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type ExtBridgeCallerSession struct { + Contract *ExtBridgeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ExtBridgeTransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type ExtBridgeTransactorSession struct { + Contract *ExtBridgeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ExtBridgeRaw is an auto generated low-level Go binding around a Kaia contract. +type ExtBridgeRaw struct { + Contract *ExtBridge // Generic contract binding to access the raw methods on +} + +// ExtBridgeCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type ExtBridgeCallerRaw struct { + Contract *ExtBridgeCaller // Generic read-only contract binding to access the raw methods on +} + +// ExtBridgeTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type ExtBridgeTransactorRaw struct { + Contract *ExtBridgeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewExtBridge creates a new instance of ExtBridge, bound to a specific deployed contract. +func NewExtBridge(address common.Address, backend bind.ContractBackend) (*ExtBridge, error) { + contract, err := bindExtBridge(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil +} + +// NewExtBridgeCaller creates a new read-only instance of ExtBridge, bound to a specific deployed contract. +func NewExtBridgeCaller(address common.Address, caller bind.ContractCaller) (*ExtBridgeCaller, error) { + contract, err := bindExtBridge(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ExtBridgeCaller{contract: contract}, nil +} + +// NewExtBridgeTransactor creates a new write-only instance of ExtBridge, bound to a specific deployed contract. +func NewExtBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*ExtBridgeTransactor, error) { + contract, err := bindExtBridge(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ExtBridgeTransactor{contract: contract}, nil +} + +// NewExtBridgeFilterer creates a new log filterer instance of ExtBridge, bound to a specific deployed contract. +func NewExtBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*ExtBridgeFilterer, error) { + contract, err := bindExtBridge(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ExtBridgeFilterer{contract: contract}, nil +} + +// bindExtBridge binds a generic wrapper to an already deployed contract. +func bindExtBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ExtBridgeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExtBridge *ExtBridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExtBridge.Contract.ExtBridgeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExtBridge *ExtBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ExtBridge *ExtBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ExtBridge *ExtBridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ExtBridge.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ExtBridge *ExtBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExtBridge.Contract.contract.Transfer(opts) +} - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721MetadataMintableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Transact invokes the (paid) contract method with params as input values. +func (_ExtBridge *ExtBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ExtBridge.Contract.contract.Transact(opts, method, params...) +} - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "MAX_OPERATOR") + + if err != nil { + return *new(uint64), err } -} -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721MetadataMintableTransferIterator) Error() error { - return it.fail + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721MetadataMintableTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) MAXOPERATOR() (uint64, error) { + return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts) } -// ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract. -type ERC721MetadataMintableTransfer struct { - From common.Address - To common.Address - TokenId *big.Int - Raw types.Log // Blockchain specific contextual infos +// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// +// Solidity: function MAX_OPERATOR() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) MAXOPERATOR() (uint64, error) { + return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts) } -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// Callback is a free data retrieval call binding the contract method 0x083b2732. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } +// Solidity: function callback() view returns(address) +func (_ExtBridge *ExtBridgeCaller) Callback(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "callback") - logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) if err != nil { - return nil, err + return *new(common.Address), err } - return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// Callback is a free data retrieval call binding the contract method 0x083b2732. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } +// Solidity: function callback() view returns(address) +func (_ExtBridge *ExtBridgeSession) Callback() (common.Address, error) { + return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts) +} + +// Callback is a free data retrieval call binding the contract method 0x083b2732. +// +// Solidity: function callback() view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) Callback() (common.Address, error) { + return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_ExtBridge *ExtBridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "closedValueTransferVotes", arg0) - logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) if err != nil { - return nil, err + return *new(bool), err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721MetadataMintableTransfer) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + } -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) -func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) { - event := new(ERC721MetadataMintableTransfer) - if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_ExtBridge *ExtBridgeSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0) +} + +// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// +// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { + return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "configurationNonce") + + if err != nil { + return *new(uint64), err } - return event, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// ExtBridgeMetaData contains all meta data concerning the ExtBridge contract. -var ExtBridgeMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[],\"name\":\"callback\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC721\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"setCallback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC20\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]", - Sigs: map[string]string{ - "3a3099d1": "MAX_OPERATOR()", - "083b2732": "callback()", - "9832c1d7": "closedValueTransferVotes(uint64)", - "ac6fff0b": "configurationNonce()", - "d8cf98ca": "deregisterOperator(address)", - "bab2af1d": "deregisterToken(address)", - "488af871": "feeOfERC20(address)", - "c263b5d6": "feeOfKLAY()", - "b3f00674": "feeReceiver()", - "b2c01030": "getOperatorList()", - "ea21eade": "getRegisteredTokenList()", - "407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)", - "afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)", - "13a6738a": "handleNoncesToBlockNums(uint64)", - "8a75eee2": "handledRequestTx(bytes32)", - "48a18a6a": "indexOfTokens(address)", - "8f32d59b": "isOwner()", - "2014e5d1": "isRunning()", - "10693fcd": "lockToken(address)", - "5eb7413a": "lockedTokens(address)", - "4b40b826": "lowerHandleNonce()", - "6e176ec2": "modeMintBurn()", - "f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)", - "cf0da290": "onERC721Received(address,uint256,address,bytes)", - "cb38f407": "operatorList(uint256)", - "5526f76b": "operatorThresholds(uint8)", - "13e7c9d8": "operators(address)", - "8da5cb5b": "owner()", - "989ba0d3": "recoveryBlockNumber()", - "3682a450": "registerOperator(address)", - "4739f7e5": "registerToken(address,address)", - "3e4fe949": "registeredTokenList(uint256)", - "8c0bd916": "registeredTokens(address)", - "715018a6": "renounceOwnership()", - "26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)", - "22604742": "requestERC721Transfer(address,address,uint256,bytes)", - "7c1a0302": "requestNonce()", - "c5e49073": "requestSellERC20(address,address,uint256,uint256,uint256)", - "4c5146f5": "requestSellERC721(address,address,uint256,uint256)", - "8daa63ac": "setCallback(address)", - "2f88396c": "setERC20Fee(address,uint256,uint64)", - "efdcd974": "setFeeReceiver(address)", - "ee2aec65": "setOperatorThreshold(uint8,uint8)", - "c877cf37": "start(bool)", - "f2fde38b": "transferOwnership(address)", - "9ef2017b": "unlockToken(address)", - "54edad72": "upperHandleNonce()", - }, - Bin: "0x60806040819052600180546001600160a01b03199081169091556000600255600e8054600160401b61ffff0219166901000000000000000000179055600f8054600160401b600160801b0319166801000000000000000017905560118054909116905560208062003fb28339810180604052602081101561007f57600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff8216101561010d5760ff81166000908152600d60205260409020805460ff19166001908117909155016100db565b50336000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055600e80549115156801000000000000000002600160401b60ff021990921691909117905550613e13806200019f6000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80638a75eee211610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b56578063ea21eade14610b7c578063ee2aec6514610b84578063efdcd97414610bac578063f1656e5314610bd2578063f2fde38b14610c9b57610295565b8063bab2af1d146109e7578063c263b5d614610a0d578063c5e4907314610a15578063c877cf3714610a57578063cb38f40714610a76578063cf0da29014610a9357610295565b8063989ba0d311610120578063989ba0d3146107e05780639ef2017b146107e8578063ac6fff0b1461080e578063afb6022314610816578063b2c0103014610987578063b3f00674146109df57610295565b80638a75eee2146107415780638c0bd9161461075e5780638da5cb5b146107845780638daa63ac1461078c5780638f32d59b146107b25780639832c1d7146107ba57610295565b8063407e6bae1161020b57806354edad72116101c457806354edad72146106c55780635526f76b146106cd5780635eb7413a146107035780636e176ec214610729578063715018a6146107315780637c1a03021461073957610295565b8063407e6bae146105095780634739f7e5146105f5578063488af8711461062357806348a18a6a1461065b5780634b40b826146106815780634c5146f51461068957610295565b8063226047421161025d578063226047421461036a57806326c23b541461042e5780632f88396c146104835780633682a450146104be5780633a3099d1146104e45780633e4fe949146104ec57610295565b8063083b27321461029a57806310693fcd146102be57806313a6738a146102e657806313e7c9d8146103285780632014e5d114610362575b600080fd5b6102a2610cc1565b604080516001600160a01b039092168252519081900360200190f35b6102e4600480360360208110156102d457600080fd5b50356001600160a01b0316610cd0565b005b61030c600480360360208110156102fc57600080fd5b50356001600160401b0316610e35565b604080516001600160401b039092168252519081900360200190f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610e50565b604080519115158252519081900360200190f35b61034e610e65565b6102e46004803603608081101561038057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103ba57600080fd5b8201836020820111156103cc57600080fd5b803590602001918460018302840111600160201b831117156103ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e75945050505050565b6102e4600480360360a081101561044457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103ba57600080fd5b6102e46004803603606081101561049957600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610eb6565b6102e4600480360360208110156104d457600080fd5b50356001600160a01b0316610f3e565b61030c6110b8565b6102a26004803603602081101561050257600080fd5b50356110bd565b6102e4600480360361010081101561052057600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058157600080fd5b82018360208201111561059357600080fd5b803590602001918460018302840111600160201b831117156105b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110e4945050505050565b6102e46004803603604081101561060b57600080fd5b506001600160a01b03813581169160200135166112ab565b6106496004803603602081101561063957600080fd5b50356001600160a01b0316611408565b60408051918252519081900360200190f35b6106496004803603602081101561067157600080fd5b50356001600160a01b031661141a565b61030c61142c565b6102e46004803603608081101561069f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611442565b61030c611473565b6106ed600480360360208110156106e357600080fd5b503560ff16611482565b6040805160ff9092168252519081900360200190f35b61034e6004803603602081101561071957600080fd5b50356001600160a01b0316611497565b61034e6114ac565b6102e46114bc565b61030c611550565b61034e6004803603602081101561075757600080fd5b5035611566565b6102a26004803603602081101561077457600080fd5b50356001600160a01b031661157b565b6102a2611596565b6102e4600480360360208110156107a257600080fd5b50356001600160a01b03166115a6565b61034e611612565b61034e600480360360208110156107d057600080fd5b50356001600160401b0316611623565b61030c611638565b6102e4600480360360208110156107fe57600080fd5b50356001600160a01b031661164e565b61030c6117c2565b6102e4600480360361012081101561082d57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091357600080fd5b82018360208201111561092557600080fd5b803590602001918460018302840111600160201b8311171561094657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117d1945050505050565b61098f61199a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109cb5781810151838201526020016109b3565b505050509050019250505060405180910390f35b6102a26119fc565b6102e4600480360360208110156109fd57600080fd5b50356001600160a01b0316611a0b565b610649611bfa565b6102e4600480360360a0811015610a2b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611c00565b6102e460048036036020811015610a6d57600080fd5b50351515611c33565b6102a260048036036020811015610a8c57600080fd5b5035611ca1565b6102e460048036036080811015610aa957600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610ae257600080fd5b820183602082011115610af457600080fd5b803590602001918460018302840111600160201b83111715610b1557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cae945050505050565b6102e460048036036020811015610b6c57600080fd5b50356001600160a01b0316611cbb565b61098f611e0d565b6102e460048036036040811015610b9a57600080fd5b5060ff81358116916020013516611e6d565b6102e460048036036020811015610bc257600080fd5b50356001600160a01b0316611fa9565b6102e4600480360360a0811015610be857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c2757600080fd5b820183602082011115610c3957600080fd5b803590602001918460018302840111600160201b83111715610c5a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fff945050505050565b6102e460048036036020811015610cb157600080fd5b50356001600160a01b031661200d565b6011546001600160a01b031681565b610cd8611612565b610d1a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610d825760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610de75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f1d5760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f2681612060565b610f2f57610f39565b610f398383612134565b505050565b610f46611612565b610f885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600c805410610fe15760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16156110525760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b600c81565b600781815481106110ca57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461113d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661119d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156111b457600080fd5b50519050806112035760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611221908a908a906001600160a01b0316898989898961217b565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b50505050505050505050505050565b6112b3611612565b6112f55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113675760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b61146d8484848460405160200180828152602001915050604051602081830303815290604052612530565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b6114c4611612565b6115065760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6115ae611612565b6115f05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b611656611612565b6116985760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117005760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615156001146117775760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b805160201461182a5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661188a5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156118a157600080fd5b50519050806118f05760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b60115461190f908b908b906001600160a01b03168a8a8a8a8a8a6125ac565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050505050505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156119f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d4575b5050505050905090565b6001546001600160a01b031681565b611a13611612565b611a555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611abd5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611bad57600780546000198101908110611b2157fe5b600091825260209091200154600780546001600160a01b039092169183908110611b4757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611b8757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611bc0906000198301613ccc565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611c2c85858585856040516020018082815260200191505060405160208183030381529060405261294e565b5050505050565b611c3b611612565b611c7d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600e8054911515600160481b0269ff00000000000000000019909216919091179055565b600c81815481106110ca57fe5b61146d3385848685612a38565b611cc3611612565b611d055760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611d2a57600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611e0957816001600160a01b0316600c8281548110611d6c57fe5b6000918252602090912001546001600160a01b03161415611e0157600c80546000198101908110611d9957fe5b600091825260209091200154600c80546001600160a01b039092169183908110611dbf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611dfb906000198301613ccc565b50611e09565b600101611d4b565b5050565b606060078054806020026020016040519081016040528092919081815260200182805480156119f2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119d4575050505050905090565b611e75611612565b611eb75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b60008160ff1611611f125760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff82161115611f6f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d6000846002811115611f8057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b611fb1611612565b611ff35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc81612f64565b50565b611c2c338686868686612fae565b612015611612565b6120575760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc816132f9565b600e546000906001600160401b038381169116146120c85760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506120f76001848361339d565b15612129575050600e805467ffffffffffffffff19811660016001600160401b0392831681019092161790915561212f565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166121e25760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6121eb8361350b565b6121f483613578565b6121fd57612526565b6122068861363b565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff191691841691909117905561223e83613656565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b031689604051808781526020018660028111156122af57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561232657818101518382015260200161230e565b50505050905090810190601f1680156123535780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff161561245c57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156123d757600080fd5b505af11580156123eb573d6000803e3d6000fd5b505050506040513d602081101561240157600080fd5b50516124575760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612526565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050506040513d60208110156124e657600080fd5b505161252657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613dc46024913960400191505060405180910390fd5b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b5050505061146d8433858585612a38565b336000908152600b602052604090205460ff166126135760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61261c8461350b565b61262584613578565b61262e57612943565b6126378961363b565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff191691851691909117905561266f84613656565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156126e057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561275757818101518382015260200161273f565b50505050905090810190601f1680156127845780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156128e857856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561282457818101518382015260200161280c565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561287257600080fd5b505af1158015612886573d6000803e3d6000fd5b505050506040513d602081101561289c57600080fd5b50516128e35760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612943565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b15801561128857600080fd5b505050505050505050565b6001600160a01b0385166323b872dd333061296f878763ffffffff6137ba16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b5051612a2a57604051600160e51b62461bcd028152600401808060200182810382526029815260200180613d9b6029913960400191505060405180910390fd5b611c2c853386868686612fae565b6001600160a01b03808616600090815260056020526040902054869116612aa05760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b055760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b5a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bc75780518252601f199092019160209182019101612ba8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c2b5780518252601f199092019160209182019101612c0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50909250905081612cae57506040805160208101909152600081525b600e54600160401b900460ff1615612d1f57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e0e57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612e80578181015183820152602001612e68565b50505050905090810190601f168015612ead5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612ee0578181015183820152602001612ec8565b50505050905090810190601f168015612f0d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130165760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff161561307b5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166130d05760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131285760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613135888a87613817565b600e54909150600160401b900460ff16156131a957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561321357fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613278578181015183820152602001613260565b50505050905090810190601f1680156132a55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661334157604051600160e51b62461bcd028152600401808060200182810382526026815260200180613d296026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133b057fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134145781546001810183556000838152602090200180546001600160a01b0319163317905561343b565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134815760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134b457fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106134fd576134f28686613b34565b600192505050613504565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611ffc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156135da5760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506136096000848361339d565b156121295750506001600160401b0381166000908152600a60205260409020805460ff1916600190811790915561212f565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b03908116908216111561368a57600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136c05750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561370f57506001600160401b038082166000908152601060205260409020541615155b1561377c576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136d4565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b6000828201838110156135045760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906138475750600081115b15613a5f57808310156138a45760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b505161396757604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b6000613979848363ffffffff613c6c16565b1115613a58576001600160a01b03841663a9059cbb8661399f868563ffffffff613c6c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050506040513d6020811015613a1857600080fd5b5051613a5857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b9050613504565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b505050506040513d6020811015613ae957600080fd5b5051613b2957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b506000949350505050565b600060096000846002811115613b4657fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff82161015613bc357816001016000836000018360ff1681548110613b9657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101613b72565b5060005b600282015460ff82161015613c1957816003016000836002018360ff1681548110613bee57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101613bc7565b5060096000846002811115613c2a57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812090613c5e8282613cf0565b611c2c600283016000613cf0565b600082821115613cc65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b815481835581811115610f3957600083815260209020610f39918101908301613d0a565b5080546000825590600052602060002090810190611ffc91905b6115a391905b80821115613d245760008155600101613d10565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c656468616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a72305820fcdb740ed2933f84d2a5bf4688085cd4d3139c0443216e4d8182c4bff254200e0029", +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) ConfigurationNonce() (uint64, error) { + return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts) +} + +// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// +// Solidity: function configurationNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) ConfigurationNonce() (uint64, error) { + return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts) } -// ExtBridgeABI is the input ABI used to generate the binding from. -// Deprecated: Use ExtBridgeMetaData.ABI instead. -var ExtBridgeABI = ExtBridgeMetaData.ABI +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "feeOfERC20", arg0) + + if err != nil { + return *new(*big.Int), err + } -// ExtBridgeBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ExtBridgeBinRuntime = `608060405234801561001057600080fd5b50600436106102955760003560e01c80638a75eee211610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b56578063ea21eade14610b7c578063ee2aec6514610b84578063efdcd97414610bac578063f1656e5314610bd2578063f2fde38b14610c9b57610295565b8063bab2af1d146109e7578063c263b5d614610a0d578063c5e4907314610a15578063c877cf3714610a57578063cb38f40714610a76578063cf0da29014610a9357610295565b8063989ba0d311610120578063989ba0d3146107e05780639ef2017b146107e8578063ac6fff0b1461080e578063afb6022314610816578063b2c0103014610987578063b3f00674146109df57610295565b80638a75eee2146107415780638c0bd9161461075e5780638da5cb5b146107845780638daa63ac1461078c5780638f32d59b146107b25780639832c1d7146107ba57610295565b8063407e6bae1161020b57806354edad72116101c457806354edad72146106c55780635526f76b146106cd5780635eb7413a146107035780636e176ec214610729578063715018a6146107315780637c1a03021461073957610295565b8063407e6bae146105095780634739f7e5146105f5578063488af8711461062357806348a18a6a1461065b5780634b40b826146106815780634c5146f51461068957610295565b8063226047421161025d578063226047421461036a57806326c23b541461042e5780632f88396c146104835780633682a450146104be5780633a3099d1146104e45780633e4fe949146104ec57610295565b8063083b27321461029a57806310693fcd146102be57806313a6738a146102e657806313e7c9d8146103285780632014e5d114610362575b600080fd5b6102a2610cc1565b604080516001600160a01b039092168252519081900360200190f35b6102e4600480360360208110156102d457600080fd5b50356001600160a01b0316610cd0565b005b61030c600480360360208110156102fc57600080fd5b50356001600160401b0316610e35565b604080516001600160401b039092168252519081900360200190f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610e50565b604080519115158252519081900360200190f35b61034e610e65565b6102e46004803603608081101561038057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103ba57600080fd5b8201836020820111156103cc57600080fd5b803590602001918460018302840111600160201b831117156103ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e75945050505050565b6102e4600480360360a081101561044457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103ba57600080fd5b6102e46004803603606081101561049957600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610eb6565b6102e4600480360360208110156104d457600080fd5b50356001600160a01b0316610f3e565b61030c6110b8565b6102a26004803603602081101561050257600080fd5b50356110bd565b6102e4600480360361010081101561052057600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058157600080fd5b82018360208201111561059357600080fd5b803590602001918460018302840111600160201b831117156105b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110e4945050505050565b6102e46004803603604081101561060b57600080fd5b506001600160a01b03813581169160200135166112ab565b6106496004803603602081101561063957600080fd5b50356001600160a01b0316611408565b60408051918252519081900360200190f35b6106496004803603602081101561067157600080fd5b50356001600160a01b031661141a565b61030c61142c565b6102e46004803603608081101561069f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611442565b61030c611473565b6106ed600480360360208110156106e357600080fd5b503560ff16611482565b6040805160ff9092168252519081900360200190f35b61034e6004803603602081101561071957600080fd5b50356001600160a01b0316611497565b61034e6114ac565b6102e46114bc565b61030c611550565b61034e6004803603602081101561075757600080fd5b5035611566565b6102a26004803603602081101561077457600080fd5b50356001600160a01b031661157b565b6102a2611596565b6102e4600480360360208110156107a257600080fd5b50356001600160a01b03166115a6565b61034e611612565b61034e600480360360208110156107d057600080fd5b50356001600160401b0316611623565b61030c611638565b6102e4600480360360208110156107fe57600080fd5b50356001600160a01b031661164e565b61030c6117c2565b6102e4600480360361012081101561082d57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091357600080fd5b82018360208201111561092557600080fd5b803590602001918460018302840111600160201b8311171561094657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117d1945050505050565b61098f61199a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109cb5781810151838201526020016109b3565b505050509050019250505060405180910390f35b6102a26119fc565b6102e4600480360360208110156109fd57600080fd5b50356001600160a01b0316611a0b565b610649611bfa565b6102e4600480360360a0811015610a2b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611c00565b6102e460048036036020811015610a6d57600080fd5b50351515611c33565b6102a260048036036020811015610a8c57600080fd5b5035611ca1565b6102e460048036036080811015610aa957600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610ae257600080fd5b820183602082011115610af457600080fd5b803590602001918460018302840111600160201b83111715610b1557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cae945050505050565b6102e460048036036020811015610b6c57600080fd5b50356001600160a01b0316611cbb565b61098f611e0d565b6102e460048036036040811015610b9a57600080fd5b5060ff81358116916020013516611e6d565b6102e460048036036020811015610bc257600080fd5b50356001600160a01b0316611fa9565b6102e4600480360360a0811015610be857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c2757600080fd5b820183602082011115610c3957600080fd5b803590602001918460018302840111600160201b83111715610c5a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fff945050505050565b6102e460048036036020811015610cb157600080fd5b50356001600160a01b031661200d565b6011546001600160a01b031681565b610cd8611612565b610d1a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610d825760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610de75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f1d5760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f2681612060565b610f2f57610f39565b610f398383612134565b505050565b610f46611612565b610f885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600c805410610fe15760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16156110525760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b600c81565b600781815481106110ca57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461113d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661119d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156111b457600080fd5b50519050806112035760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611221908a908a906001600160a01b0316898989898961217b565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b50505050505050505050505050565b6112b3611612565b6112f55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113675760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b61146d8484848460405160200180828152602001915050604051602081830303815290604052612530565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b6114c4611612565b6115065760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6115ae611612565b6115f05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b611656611612565b6116985760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117005760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615156001146117775760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b805160201461182a5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661188a5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156118a157600080fd5b50519050806118f05760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b60115461190f908b908b906001600160a01b03168a8a8a8a8a8a6125ac565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050505050505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156119f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d4575b5050505050905090565b6001546001600160a01b031681565b611a13611612565b611a555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611abd5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611bad57600780546000198101908110611b2157fe5b600091825260209091200154600780546001600160a01b039092169183908110611b4757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611b8757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611bc0906000198301613ccc565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611c2c85858585856040516020018082815260200191505060405160208183030381529060405261294e565b5050505050565b611c3b611612565b611c7d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600e8054911515600160481b0269ff00000000000000000019909216919091179055565b600c81815481106110ca57fe5b61146d3385848685612a38565b611cc3611612565b611d055760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611d2a57600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611e0957816001600160a01b0316600c8281548110611d6c57fe5b6000918252602090912001546001600160a01b03161415611e0157600c80546000198101908110611d9957fe5b600091825260209091200154600c80546001600160a01b039092169183908110611dbf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611dfb906000198301613ccc565b50611e09565b600101611d4b565b5050565b606060078054806020026020016040519081016040528092919081815260200182805480156119f2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119d4575050505050905090565b611e75611612565b611eb75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b60008160ff1611611f125760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff82161115611f6f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d6000846002811115611f8057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b611fb1611612565b611ff35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc81612f64565b50565b611c2c338686868686612fae565b612015611612565b6120575760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc816132f9565b600e546000906001600160401b038381169116146120c85760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506120f76001848361339d565b15612129575050600e805467ffffffffffffffff19811660016001600160401b0392831681019092161790915561212f565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166121e25760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6121eb8361350b565b6121f483613578565b6121fd57612526565b6122068861363b565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff191691841691909117905561223e83613656565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b031689604051808781526020018660028111156122af57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561232657818101518382015260200161230e565b50505050905090810190601f1680156123535780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff161561245c57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156123d757600080fd5b505af11580156123eb573d6000803e3d6000fd5b505050506040513d602081101561240157600080fd5b50516124575760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612526565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050506040513d60208110156124e657600080fd5b505161252657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613dc46024913960400191505060405180910390fd5b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b5050505061146d8433858585612a38565b336000908152600b602052604090205460ff166126135760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61261c8461350b565b61262584613578565b61262e57612943565b6126378961363b565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff191691851691909117905561266f84613656565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156126e057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561275757818101518382015260200161273f565b50505050905090810190601f1680156127845780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156128e857856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561282457818101518382015260200161280c565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561287257600080fd5b505af1158015612886573d6000803e3d6000fd5b505050506040513d602081101561289c57600080fd5b50516128e35760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612943565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b15801561128857600080fd5b505050505050505050565b6001600160a01b0385166323b872dd333061296f878763ffffffff6137ba16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b5051612a2a57604051600160e51b62461bcd028152600401808060200182810382526029815260200180613d9b6029913960400191505060405180910390fd5b611c2c853386868686612fae565b6001600160a01b03808616600090815260056020526040902054869116612aa05760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b055760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b5a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bc75780518252601f199092019160209182019101612ba8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c2b5780518252601f199092019160209182019101612c0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50909250905081612cae57506040805160208101909152600081525b600e54600160401b900460ff1615612d1f57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e0e57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612e80578181015183820152602001612e68565b50505050905090810190601f168015612ead5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612ee0578181015183820152602001612ec8565b50505050905090810190601f168015612f0d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130165760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff161561307b5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166130d05760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131285760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613135888a87613817565b600e54909150600160401b900460ff16156131a957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561321357fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613278578181015183820152602001613260565b50505050905090810190601f1680156132a55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661334157604051600160e51b62461bcd028152600401808060200182810382526026815260200180613d296026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133b057fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134145781546001810183556000838152602090200180546001600160a01b0319163317905561343b565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134815760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134b457fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106134fd576134f28686613b34565b600192505050613504565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611ffc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156135da5760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506136096000848361339d565b156121295750506001600160401b0381166000908152600a60205260409020805460ff1916600190811790915561212f565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b03908116908216111561368a57600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136c05750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561370f57506001600160401b038082166000908152601060205260409020541615155b1561377c576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136d4565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b6000828201838110156135045760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906138475750600081115b15613a5f57808310156138a45760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b505161396757604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b6000613979848363ffffffff613c6c16565b1115613a58576001600160a01b03841663a9059cbb8661399f868563ffffffff613c6c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050506040513d6020811015613a1857600080fd5b5051613a5857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b9050613504565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b505050506040513d6020811015613ae957600080fd5b5051613b2957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b506000949350505050565b600060096000846002811115613b4657fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff82161015613bc357816001016000836000018360ff1681548110613b9657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101613b72565b5060005b600282015460ff82161015613c1957816003016000836002018360ff1681548110613bee57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101613bc7565b5060096000846002811115613c2a57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812090613c5e8282613cf0565b611c2c600283016000613cf0565b600082821115613cc65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b815481835581811115610f3957600083815260209020610f39918101908301613d0a565b5080546000825590600052602060002090810190611ffc91905b6115a391905b80821115613d245760008155600101613d10565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c656468616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a72305820fcdb740ed2933f84d2a5bf4688085cd4d3139c0443216e4d8182c4bff254200e0029` + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// ExtBridgeFuncSigs maps the 4-byte function signature to its string representation. -// Deprecated: Use ExtBridgeMetaData.Sigs instead. -var ExtBridgeFuncSigs = ExtBridgeMetaData.Sigs + return out0, err -// ExtBridgeBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ExtBridgeMetaData.Bin instead. -var ExtBridgeBin = ExtBridgeMetaData.Bin +} -// DeployExtBridge deploys a new Kaia contract, binding an instance of ExtBridge to it. -func DeployExtBridge(auth *bind.TransactOpts, backend bind.ContractBackend, _modeMintBurn bool) (common.Address, *types.Transaction, *ExtBridge, error) { - parsed, err := ExtBridgeMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0) +} + +// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// +// Solidity: function feeOfERC20(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { + return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0) +} + +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_ExtBridge *ExtBridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "feeOfKLAY") - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ExtBridgeBin), backend, _modeMintBurn) if err != nil { - return common.Address{}, nil, nil, err + return *new(*big.Int), err } - return address, tx, &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil -} -// ExtBridge is an auto generated Go binding around a Kaia contract. -type ExtBridge struct { - ExtBridgeCaller // Read-only binding to the contract - ExtBridgeTransactor // Write-only binding to the contract - ExtBridgeFilterer // Log filterer for contract events -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err -// ExtBridgeCaller is an auto generated read-only Go binding around a Kaia contract. -type ExtBridgeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ExtBridgeTransactor is an auto generated write-only Go binding around a Kaia contract. -type ExtBridgeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_ExtBridge *ExtBridgeSession) FeeOfKLAY() (*big.Int, error) { + return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts) } -// ExtBridgeFilterer is an auto generated log filtering Go binding around a Kaia contract events. -type ExtBridgeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls +// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// +// Solidity: function feeOfKLAY() view returns(uint256) +func (_ExtBridge *ExtBridgeCallerSession) FeeOfKLAY() (*big.Int, error) { + return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts) } -// ExtBridgeSession is an auto generated Go binding around a Kaia contract, -// with pre-set call and transact options. -type ExtBridgeSession struct { - Contract *ExtBridge // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_ExtBridge *ExtBridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "feeReceiver") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + } -// ExtBridgeCallerSession is an auto generated read-only Go binding around a Kaia contract, -// with pre-set call options. -type ExtBridgeCallerSession struct { - Contract *ExtBridgeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_ExtBridge *ExtBridgeSession) FeeReceiver() (common.Address, error) { + return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts) } -// ExtBridgeTransactorSession is an auto generated write-only Go binding around a Kaia contract, -// with pre-set transact options. -type ExtBridgeTransactorSession struct { - Contract *ExtBridgeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// +// Solidity: function feeReceiver() view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) FeeReceiver() (common.Address, error) { + return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts) } -// ExtBridgeRaw is an auto generated low-level Go binding around a Kaia contract. -type ExtBridgeRaw struct { - Contract *ExtBridge // Generic contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_ExtBridge *ExtBridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "getOperatorList") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// ExtBridgeCallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. -type ExtBridgeCallerRaw struct { - Contract *ExtBridgeCaller // Generic read-only contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_ExtBridge *ExtBridgeSession) GetOperatorList() ([]common.Address, error) { + return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts) } -// ExtBridgeTransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. -type ExtBridgeTransactorRaw struct { - Contract *ExtBridgeTransactor // Generic write-only contract binding to access the raw methods on +// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// +// Solidity: function getOperatorList() view returns(address[]) +func (_ExtBridge *ExtBridgeCallerSession) GetOperatorList() ([]common.Address, error) { + return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts) } -// NewExtBridge creates a new instance of ExtBridge, bound to a specific deployed contract. -func NewExtBridge(address common.Address, backend bind.ContractBackend) (*ExtBridge, error) { - contract, err := bindExtBridge(address, backend, backend, backend) +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_ExtBridge *ExtBridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "getRegisteredTokenList") + if err != nil { - return nil, err + return *new([]common.Address), err } - return &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + } -// NewExtBridgeCaller creates a new read-only instance of ExtBridge, bound to a specific deployed contract. -func NewExtBridgeCaller(address common.Address, caller bind.ContractCaller) (*ExtBridgeCaller, error) { - contract, err := bindExtBridge(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ExtBridgeCaller{contract: contract}, nil +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_ExtBridge *ExtBridgeSession) GetRegisteredTokenList() ([]common.Address, error) { + return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts) } -// NewExtBridgeTransactor creates a new write-only instance of ExtBridge, bound to a specific deployed contract. -func NewExtBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*ExtBridgeTransactor, error) { - contract, err := bindExtBridge(address, nil, transactor, nil) +// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// +// Solidity: function getRegisteredTokenList() view returns(address[]) +func (_ExtBridge *ExtBridgeCallerSession) GetRegisteredTokenList() ([]common.Address, error) { + return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + if err != nil { - return nil, err + return *new(uint64), err } - return &ExtBridgeTransactor{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + } -// NewExtBridgeFilterer creates a new log filterer instance of ExtBridge, bound to a specific deployed contract. -func NewExtBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*ExtBridgeFilterer, error) { - contract, err := bindExtBridge(address, nil, nil, filterer) +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_ExtBridge *ExtBridgeSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0) +} + +// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// +// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { + return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_ExtBridge *ExtBridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "handledRequestTx", arg0) + if err != nil { - return nil, err + return *new(bool), err } - return &ExtBridgeFilterer{contract: contract}, nil + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_ExtBridge *ExtBridgeSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0) +} + +// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// +// Solidity: function handledRequestTx(bytes32 ) view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { + return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0) } -// bindExtBridge binds a generic wrapper to an already deployed contract. -func bindExtBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ExtBridgeMetaData.GetAbi() +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _ExtBridge.contract.Call(opts, &out, "indexOfTokens", arg0) + if err != nil { - return nil, err + return *new(*big.Int), err } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ExtBridge *ExtBridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExtBridge.Contract.ExtBridgeCaller.contract.Call(opts, result, method, params...) -} -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ExtBridge *ExtBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transfer(opts) -} + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) -// Transact invokes the (paid) contract method with params as input values. -func (_ExtBridge *ExtBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transact(opts, method, params...) -} + return out0, err -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ExtBridge *ExtBridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ExtBridge.Contract.contract.Call(opts, result, method, params...) } -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ExtBridge *ExtBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExtBridge.Contract.contract.Transfer(opts) +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0) } -// Transact invokes the (paid) contract method with params as input values. -func (_ExtBridge *ExtBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ExtBridge.Contract.contract.Transact(opts, method, params...) +// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// +// Solidity: function indexOfTokens(address ) view returns(uint256) +func (_ExtBridge *ExtBridgeCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { + return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) { +// Solidity: function isOwner() view returns(bool) +func (_ExtBridge *ExtBridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "MAX_OPERATOR") + err := _ExtBridge.contract.Call(opts, &out, "isOwner") + if err != nil { - return *new(uint64), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) MAXOPERATOR() (uint64, error) { - return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_ExtBridge *ExtBridgeSession) IsOwner() (bool, error) { + return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts) } -// MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1. +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. // -// Solidity: function MAX_OPERATOR() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) MAXOPERATOR() (uint64, error) { - return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts) +// Solidity: function isOwner() view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) IsOwner() (bool, error) { + return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts) } -// Callback is a free data retrieval call binding the contract method 0x083b2732. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function callback() view returns(address) -func (_ExtBridge *ExtBridgeCaller) Callback(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function isRunning() view returns(bool) +func (_ExtBridge *ExtBridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "callback") + err := _ExtBridge.contract.Call(opts, &out, "isRunning") + if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// Callback is a free data retrieval call binding the contract method 0x083b2732. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function callback() view returns(address) -func (_ExtBridge *ExtBridgeSession) Callback() (common.Address, error) { - return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts) +// Solidity: function isRunning() view returns(bool) +func (_ExtBridge *ExtBridgeSession) IsRunning() (bool, error) { + return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts) } -// Callback is a free data retrieval call binding the contract method 0x083b2732. +// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. // -// Solidity: function callback() view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) Callback() (common.Address, error) { - return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts) +// Solidity: function isRunning() view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) IsRunning() (bool, error) { + return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_ExtBridge *ExtBridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) { +// Solidity: function lockedTokens(address ) view returns(bool) +func (_ExtBridge *ExtBridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "closedValueTransferVotes", arg0) + err := _ExtBridge.contract.Call(opts, &out, "lockedTokens", arg0) + if err != nil { return *new(bool), err } @@ -18438,28 +21455,30 @@ func (_ExtBridge *ExtBridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_ExtBridge *ExtBridgeSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0) +// Solidity: function lockedTokens(address ) view returns(bool) +func (_ExtBridge *ExtBridgeSession) LockedTokens(arg0 common.Address) (bool, error) { + return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0) } -// ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7. +// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. // -// Solidity: function closedValueTransferVotes(uint64 ) view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) { - return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0) +// Solidity: function lockedTokens(address ) view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) LockedTokens(arg0 common.Address) (bool, error) { + return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) { +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "configurationNonce") + err := _ExtBridge.contract.Call(opts, &out, "lowerHandleNonce") + if err != nil { return *new(uint64), err } @@ -18467,173 +21486,185 @@ func (_ExtBridge *ExtBridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) ConfigurationNonce() (uint64, error) { - return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) LowerHandleNonce() (uint64, error) { + return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts) } -// ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b. +// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. // -// Solidity: function configurationNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) ConfigurationNonce() (uint64, error) { - return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts) +// Solidity: function lowerHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) LowerHandleNonce() (uint64, error) { + return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function modeMintBurn() view returns(bool) +func (_ExtBridge *ExtBridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "feeOfERC20", arg0) + err := _ExtBridge.contract.Call(opts, &out, "modeMintBurn") + if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0) +// Solidity: function modeMintBurn() view returns(bool) +func (_ExtBridge *ExtBridgeSession) ModeMintBurn() (bool, error) { + return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts) } -// FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871. +// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. // -// Solidity: function feeOfERC20(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) { - return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0) +// Solidity: function modeMintBurn() view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) ModeMintBurn() (bool, error) { + return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_ExtBridge *ExtBridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function operatorList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "feeOfKLAY") + err := _ExtBridge.contract.Call(opts, &out, "operatorList", arg0) + if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_ExtBridge *ExtBridgeSession) FeeOfKLAY() (*big.Int, error) { - return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0) } -// FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6. +// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. // -// Solidity: function feeOfKLAY() view returns(uint256) -func (_ExtBridge *ExtBridgeCallerSession) FeeOfKLAY() (*big.Int, error) { - return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts) +// Solidity: function operatorList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { + return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeReceiver() view returns(address) -func (_ExtBridge *ExtBridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_ExtBridge *ExtBridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "feeReceiver") + err := _ExtBridge.contract.Call(opts, &out, "operatorThresholds", arg0) + if err != nil { - return *new(common.Address), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeReceiver() view returns(address) -func (_ExtBridge *ExtBridgeSession) FeeReceiver() (common.Address, error) { - return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_ExtBridge *ExtBridgeSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0) } -// FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674. +// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. // -// Solidity: function feeReceiver() view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) FeeReceiver() (common.Address, error) { - return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts) +// Solidity: function operatorThresholds(uint8 ) view returns(uint8) +func (_ExtBridge *ExtBridgeCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { + return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getOperatorList() view returns(address[]) -func (_ExtBridge *ExtBridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function operators(address ) view returns(bool) +func (_ExtBridge *ExtBridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "getOperatorList") + err := _ExtBridge.contract.Call(opts, &out, "operators", arg0) + if err != nil { - return *new([]common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getOperatorList() view returns(address[]) -func (_ExtBridge *ExtBridgeSession) GetOperatorList() ([]common.Address, error) { - return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_ExtBridge *ExtBridgeSession) Operators(arg0 common.Address) (bool, error) { + return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0) } -// GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030. +// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. // -// Solidity: function getOperatorList() view returns(address[]) -func (_ExtBridge *ExtBridgeCallerSession) GetOperatorList() ([]common.Address, error) { - return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts) +// Solidity: function operators(address ) view returns(bool) +func (_ExtBridge *ExtBridgeCallerSession) Operators(arg0 common.Address) (bool, error) { + return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_ExtBridge *ExtBridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) { +// Solidity: function owner() view returns(address) +func (_ExtBridge *ExtBridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "getRegisteredTokenList") + err := _ExtBridge.contract.Call(opts, &out, "owner") + if err != nil { - return *new([]common.Address), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_ExtBridge *ExtBridgeSession) GetRegisteredTokenList() ([]common.Address, error) { - return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts) +// Solidity: function owner() view returns(address) +func (_ExtBridge *ExtBridgeSession) Owner() (common.Address, error) { + return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts) } -// GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function getRegisteredTokenList() view returns(address[]) -func (_ExtBridge *ExtBridgeCallerSession) GetRegisteredTokenList() ([]common.Address, error) { - return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts) +// Solidity: function owner() view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) Owner() (common.Address, error) { + return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) { +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "handleNoncesToBlockNums", arg0) + err := _ExtBridge.contract.Call(opts, &out, "recoveryBlockNumber") + if err != nil { return *new(uint64), err } @@ -18641,930 +21672,1077 @@ func (_ExtBridge *ExtBridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_ExtBridge *ExtBridgeSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) RecoveryBlockNumber() (uint64, error) { + return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts) } -// HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a. +// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. // -// Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) { - return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0) +// Solidity: function recoveryBlockNumber() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) RecoveryBlockNumber() (uint64, error) { + return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_ExtBridge *ExtBridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "handledRequestTx", arg0) + err := _ExtBridge.contract.Call(opts, &out, "registeredTokenList", arg0) + if err != nil { - return *new(bool), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_ExtBridge *ExtBridgeSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0) } -// HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2. +// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. // -// Solidity: function handledRequestTx(bytes32 ) view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) { - return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0) +// Solidity: function registeredTokenList(uint256 ) view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { + return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { +// Solidity: function registeredTokens(address ) view returns(address) +func (_ExtBridge *ExtBridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "indexOfTokens", arg0) + err := _ExtBridge.contract.Call(opts, &out, "registeredTokens", arg0) + if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function registeredTokens(address ) view returns(address) +func (_ExtBridge *ExtBridgeSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0) } -// IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a. +// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. // -// Solidity: function indexOfTokens(address ) view returns(uint256) -func (_ExtBridge *ExtBridgeCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) { - return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function registeredTokens(address ) view returns(address) +func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { + return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function isOwner() view returns(bool) -func (_ExtBridge *ExtBridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) { +// Solidity: function requestNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "isOwner") + err := _ExtBridge.contract.Call(opts, &out, "requestNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function isOwner() view returns(bool) -func (_ExtBridge *ExtBridgeSession) IsOwner() (bool, error) { - return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts) +// Solidity: function requestNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) RequestNonce() (uint64, error) { + return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts) } -// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. // -// Solidity: function isOwner() view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) IsOwner() (bool, error) { - return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts) +// Solidity: function requestNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) RequestNonce() (uint64, error) { + return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isRunning() view returns(bool) -func (_ExtBridge *ExtBridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) { +// Solidity: function upperHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "isRunning") + err := _ExtBridge.contract.Call(opts, &out, "upperHandleNonce") + if err != nil { - return *new(bool), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err + } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isRunning() view returns(bool) -func (_ExtBridge *ExtBridgeSession) IsRunning() (bool, error) { - return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeSession) UpperHandleNonce() (uint64, error) { + return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts) } -// IsRunning is a free data retrieval call binding the contract method 0x2014e5d1. +// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. // -// Solidity: function isRunning() view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) IsRunning() (bool, error) { - return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts) +// Solidity: function upperHandleNonce() view returns(uint64) +func (_ExtBridge *ExtBridgeCallerSession) UpperHandleNonce() (uint64, error) { + return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_ExtBridge *ExtBridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "lockedTokens", arg0) - if err != nil { - return *new(bool), err - } +// Solidity: function deregisterOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "deregisterOperator", _operator) +} - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator) +} - return out0, err +// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// +// Solidity: function deregisterOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_ExtBridge *ExtBridgeSession) LockedTokens(arg0 common.Address) (bool, error) { - return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function deregisterToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "deregisterToken", _token) +} + +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_ExtBridge *ExtBridgeSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token) +} + +// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// +// Solidity: function deregisterToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token) } -// LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lockedTokens(address ) view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) LockedTokens(arg0 common.Address) (bool, error) { - return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "lowerHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) LowerHandleNonce() (uint64, error) { - return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts) +// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) } -// LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function lowerHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) LowerHandleNonce() (uint64, error) { - return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function modeMintBurn() view returns(bool) -func (_ExtBridge *ExtBridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "modeMintBurn") - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. // -// Solidity: function modeMintBurn() view returns(bool) -func (_ExtBridge *ExtBridgeSession) ModeMintBurn() (bool, error) { - return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts) +// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) } -// ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function modeMintBurn() view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) ModeMintBurn() (bool, error) { - return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts) +// Solidity: function lockToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "lockToken", _token) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "operatorList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function lockToken(address _token) returns() +func (_ExtBridge *ExtBridgeSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0) +// Solidity: function lockToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token) } -// OperatorList is a free data retrieval call binding the contract method 0xcb38f407. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function operatorList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) { - return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0) +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_ExtBridge *ExtBridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "operatorThresholds", arg0) - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_ExtBridge *ExtBridgeSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0) +// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData) } -// OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function operatorThresholds(uint8 ) view returns(uint8) -func (_ExtBridge *ExtBridgeCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) { - return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0) +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function operators(address ) view returns(bool) -func (_ExtBridge *ExtBridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "operators", arg0) - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. // -// Solidity: function operators(address ) view returns(bool) -func (_ExtBridge *ExtBridgeSession) Operators(arg0 common.Address) (bool, error) { - return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0) +// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData) } -// Operators is a free data retrieval call binding the contract method 0x13e7c9d8. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function operators(address ) view returns(bool) -func (_ExtBridge *ExtBridgeCallerSession) Operators(arg0 common.Address) (bool, error) { - return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0) +// Solidity: function registerOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "registerOperator", _operator) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function owner() view returns(address) -func (_ExtBridge *ExtBridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "owner") - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function registerOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. // -// Solidity: function owner() view returns(address) -func (_ExtBridge *ExtBridgeSession) Owner() (common.Address, error) { - return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts) +// Solidity: function registerOperator(address _operator) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function owner() view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) Owner() (common.Address, error) { - return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_ExtBridge *ExtBridgeTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "registerToken", _token, _cToken) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "recoveryBlockNumber") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_ExtBridge *ExtBridgeSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) RecoveryBlockNumber() (uint64, error) { - return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts) +// Solidity: function registerToken(address _token, address _cToken) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken) } -// RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function recoveryBlockNumber() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) RecoveryBlockNumber() (uint64, error) { - return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts) +// Solidity: function renounceOwnership() returns() +func (_ExtBridge *ExtBridgeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "renounceOwnership") } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "registeredTokenList", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function renounceOwnership() returns() +func (_ExtBridge *ExtBridgeSession) RenounceOwnership() (*types.Transaction, error) { + return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0) +// Solidity: function renounceOwnership() returns() +func (_ExtBridge *ExtBridgeTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts) } -// RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function registeredTokenList(uint256 ) view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) { - return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0) +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_ExtBridge *ExtBridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "registeredTokens", arg0) - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_ExtBridge *ExtBridgeSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) } -// RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916. +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. // -// Solidity: function registeredTokens(address ) view returns(address) -func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) { - return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0) +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. // -// Solidity: function requestNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "requestNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. // -// Solidity: function requestNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) RequestNonce() (uint64, error) { - return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts) +// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) } -// RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302. +// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. // -// Solidity: function requestNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) RequestNonce() (uint64, error) { - return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts) +// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() +func (_ExtBridge *ExtBridgeTransactor) RequestSellERC20(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "requestSellERC20", _tokenAddress, _to, _value, _feeLimit, _price) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _ExtBridge.contract.Call(opts, &out, "upperHandleNonce") - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err +// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() +func (_ExtBridge *ExtBridgeSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeSession) UpperHandleNonce() (uint64, error) { - return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts) +// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price) } -// UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72. +// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. // -// Solidity: function upperHandleNonce() view returns(uint64) -func (_ExtBridge *ExtBridgeCallerSession) UpperHandleNonce() (uint64, error) { - return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts) +// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() +func (_ExtBridge *ExtBridgeTransactor) RequestSellERC721(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "requestSellERC721", _tokenAddress, _to, _tokenId, _price) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "deregisterOperator", _operator) +// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() +func (_ExtBridge *ExtBridgeSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator) +// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() +func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { + return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price) } -// DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca. +// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. // -// Solidity: function deregisterOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator) +// Solidity: function setCallback(address _addr) returns() +func (_ExtBridge *ExtBridgeTransactor) SetCallback(opts *bind.TransactOpts, _addr common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "setCallback", _addr) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. // -// Solidity: function deregisterToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "deregisterToken", _token) +// Solidity: function setCallback(address _addr) returns() +func (_ExtBridge *ExtBridgeSession) SetCallback(_addr common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. // -// Solidity: function deregisterToken(address _token) returns() -func (_ExtBridge *ExtBridgeSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token) +// Solidity: function setCallback(address _addr) returns() +func (_ExtBridge *ExtBridgeTransactorSession) SetCallback(_addr common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr) } -// DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function deregisterToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token) +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_ExtBridge *ExtBridgeTransactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_ExtBridge *ExtBridgeSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce) } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. // -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) +// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() +func (_ExtBridge *ExtBridgeTransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { + return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce) } -// HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_ExtBridge *ExtBridgeTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "setFeeReceiver", _feeReceiver) } -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_ExtBridge *ExtBridgeSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver) } -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. +// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. // -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) +// Solidity: function setFeeReceiver(address _feeReceiver) returns() +func (_ExtBridge *ExtBridgeTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver) } -// HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_ExtBridge *ExtBridgeTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function lockToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "lockToken", _token) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_ExtBridge *ExtBridgeSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold) } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. // -// Solidity: function lockToken(address _token) returns() -func (_ExtBridge *ExtBridgeSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token) +// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() +func (_ExtBridge *ExtBridgeTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { + return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold) } -// LockToken is a paid mutator transaction binding the contract method 0x10693fcd. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function lockToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token) +// Solidity: function setRunningStatus(bool _status) returns() +func (_ExtBridge *ExtBridgeTransactor) SetRunningStatus(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "setRunningStatus", _status) } -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData) +// Solidity: function setRunningStatus(bool _status) returns() +func (_ExtBridge *ExtBridgeSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _ExtBridge.Contract.SetRunningStatus(&_ExtBridge.TransactOpts, _status) } -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// SetRunningStatus is a paid mutator transaction binding the contract method 0xb1db5b17. // -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData) +// Solidity: function setRunningStatus(bool _status) returns() +func (_ExtBridge *ExtBridgeTransactorSession) SetRunningStatus(_status bool) (*types.Transaction, error) { + return _ExtBridge.Contract.SetRunningStatus(&_ExtBridge.TransactOpts, _status) } -// OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData) +// Solidity: function start(bool _status) returns() +func (_ExtBridge *ExtBridgeTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "start", _status) } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData) +// Solidity: function start(bool _status) returns() +func (_ExtBridge *ExtBridgeSession) Start(_status bool) (*types.Transaction, error) { + return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status) } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// Start is a paid mutator transaction binding the contract method 0xc877cf37. // -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData) +// Solidity: function start(bool _status) returns() +func (_ExtBridge *ExtBridgeTransactorSession) Start(_status bool) (*types.Transaction, error) { + return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ExtBridge *ExtBridgeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "transferOwnership", newOwner) } -// OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData) +// Solidity: function transferOwnership(address newOwner) returns() +func (_ExtBridge *ExtBridgeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner) } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // -// Solidity: function registerOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "registerOperator", _operator) +// Solidity: function transferOwnership(address newOwner) returns() +func (_ExtBridge *ExtBridgeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner) } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function registerOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator) +// Solidity: function unlockToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { + return _ExtBridge.contract.Transact(opts, "unlockToken", _token) } -// RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function registerOperator(address _operator) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator) +// Solidity: function unlockToken(address _token) returns() +func (_ExtBridge *ExtBridgeSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token) } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. +// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. // -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_ExtBridge *ExtBridgeTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "registerToken", _token, _cToken) +// Solidity: function unlockToken(address _token) returns() +func (_ExtBridge *ExtBridgeTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { + return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token) } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_ExtBridge *ExtBridgeSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken) +// ExtBridgeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the ExtBridge contract. +type ExtBridgeERC20FeeChangedIterator struct { + Event *ExtBridgeERC20FeeChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5. -// -// Solidity: function registerToken(address _token, address _cToken) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExtBridgeERC20FeeChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExtBridgeERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExtBridgeERC20FeeChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ExtBridge *ExtBridgeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "renounceOwnership") +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExtBridgeERC20FeeChangedIterator) Error() error { + return it.fail } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ExtBridge *ExtBridgeSession) RenounceOwnership() (*types.Transaction, error) { - return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExtBridgeERC20FeeChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ExtBridge *ExtBridgeTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts) +// ExtBridgeERC20FeeChanged represents a ERC20FeeChanged event raised by the ExtBridge contract. +type ExtBridgeERC20FeeChanged struct { + Token common.Address + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*ExtBridgeERC20FeeChangedIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return &ExtBridgeERC20FeeChangedIterator{contract: _ExtBridge.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExtBridgeERC20FeeChanged) + if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54. +// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. // -// Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData) +// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) ParseERC20FeeChanged(log types.Log) (*ExtBridgeERC20FeeChanged, error) { + event := new(ExtBridgeERC20FeeChanged) + if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData) +// ExtBridgeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the ExtBridge contract. +type ExtBridgeFeeReceiverChangedIterator struct { + Event *ExtBridgeFeeReceiverChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExtBridgeFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExtBridgeFeeReceiverChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742. -// -// Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExtBridgeFeeReceiverChangedIterator) Error() error { + return it.fail } -// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. -// -// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() -func (_ExtBridge *ExtBridgeTransactor) RequestSellERC20(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "requestSellERC20", _tokenAddress, _to, _value, _feeLimit, _price) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExtBridgeFeeReceiverChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. -// -// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() -func (_ExtBridge *ExtBridgeSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price) +// ExtBridgeFeeReceiverChanged represents a FeeReceiverChanged event raised by the ExtBridge contract. +type ExtBridgeFeeReceiverChanged struct { + FeeReceiver common.Address + Raw types.Log // Blockchain specific contextual infos } -// RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073. +// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_ExtBridge *ExtBridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*ExtBridgeFeeReceiverChangedIterator, error) { -// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. -// -// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() -func (_ExtBridge *ExtBridgeTransactor) RequestSellERC721(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "requestSellERC721", _tokenAddress, _to, _tokenId, _price) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. -// -// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() -func (_ExtBridge *ExtBridgeSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return &ExtBridgeFeeReceiverChangedIterator{contract: _ExtBridge.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil } -// RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5. +// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns() -func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) { - return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price) -} +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_ExtBridge *ExtBridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { -// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. -// -// Solidity: function setCallback(address _addr) returns() -func (_ExtBridge *ExtBridgeTransactor) SetCallback(opts *bind.TransactOpts, _addr common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "setCallback", _addr) -} + var feeReceiverRule []interface{} + for _, feeReceiverItem := range feeReceiver { + feeReceiverRule = append(feeReceiverRule, feeReceiverItem) + } -// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. -// -// Solidity: function setCallback(address _addr) returns() -func (_ExtBridge *ExtBridgeSession) SetCallback(_addr common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr) -} + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExtBridgeFeeReceiverChanged) + if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return err + } + event.Raw = log -// SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac. -// -// Solidity: function setCallback(address _addr) returns() -func (_ExtBridge *ExtBridgeTransactorSession) SetCallback(_addr common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. +// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. // -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_ExtBridge *ExtBridgeTransactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce) +// Solidity: event FeeReceiverChanged(address indexed feeReceiver) +func (_ExtBridge *ExtBridgeFilterer) ParseFeeReceiverChanged(log types.Log) (*ExtBridgeFeeReceiverChanged, error) { + event := new(ExtBridgeFeeReceiverChanged) + if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. -// -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_ExtBridge *ExtBridgeSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce) -} +// ExtBridgeHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the ExtBridge contract. +type ExtBridgeHandleValueTransferIterator struct { + Event *ExtBridgeHandleValueTransfer // Event containing the contract specifics and raw log -// SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c. -// -// Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns() -func (_ExtBridge *ExtBridgeTransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) { - return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce) -} + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_ExtBridge *ExtBridgeTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "setFeeReceiver", _feeReceiver) + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_ExtBridge *ExtBridgeSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver) -} +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExtBridgeHandleValueTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExtBridgeHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974. -// -// Solidity: function setFeeReceiver(address _feeReceiver) returns() -func (_ExtBridge *ExtBridgeTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver) -} + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExtBridgeHandleValueTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_ExtBridge *ExtBridgeTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold) + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_ExtBridge *ExtBridgeSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExtBridgeHandleValueTransferIterator) Error() error { + return it.fail } -// SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65. -// -// Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns() -func (_ExtBridge *ExtBridgeTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) { - return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold) +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExtBridgeHandleValueTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_ExtBridge *ExtBridgeTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "start", _status) +// ExtBridgeHandleValueTransfer represents a HandleValueTransfer event raised by the ExtBridge contract. +type ExtBridgeHandleValueTransfer struct { + RequestTxHash [32]byte + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + HandleNonce uint64 + LowerHandleNonce uint64 + ExtraData []byte + Raw types.Log // Blockchain specific contextual infos } -// Start is a paid mutator transaction binding the contract method 0xc877cf37. +// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function start(bool _status) returns() -func (_ExtBridge *ExtBridgeSession) Start(_status bool) (*types.Transaction, error) { - return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_ExtBridge *ExtBridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeHandleValueTransferIterator, error) { -// Start is a paid mutator transaction binding the contract method 0xc877cf37. -// -// Solidity: function start(bool _status) returns() -func (_ExtBridge *ExtBridgeTransactorSession) Start(_status bool) (*types.Transaction, error) { - return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ExtBridge *ExtBridgeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "transferOwnership", newOwner) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &ExtBridgeHandleValueTransferIterator{contract: _ExtBridge.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_ExtBridge *ExtBridgeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner) -} +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_ExtBridge *ExtBridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *ExtBridgeHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ExtBridge *ExtBridgeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner) -} + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) { - return _ExtBridge.contract.Transact(opts, "unlockToken", _token) -} + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExtBridgeHandleValueTransfer) + if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return err + } + event.Raw = log -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. -// -// Solidity: function unlockToken(address _token) returns() -func (_ExtBridge *ExtBridgeSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token) + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b. +// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. // -// Solidity: function unlockToken(address _token) returns() -func (_ExtBridge *ExtBridgeTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) { - return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token) +// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) +func (_ExtBridge *ExtBridgeFilterer) ParseHandleValueTransfer(log types.Log) (*ExtBridgeHandleValueTransfer, error) { + event := new(ExtBridgeHandleValueTransfer) + if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// ExtBridgeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the ExtBridge contract. -type ExtBridgeERC20FeeChangedIterator struct { - Event *ExtBridgeERC20FeeChanged // Event containing the contract specifics and raw log +// ExtBridgeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the ExtBridge contract. +type ExtBridgeKLAYFeeChangedIterator struct { + Event *ExtBridgeKLAYFeeChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -19578,7 +22756,7 @@ type ExtBridgeERC20FeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExtBridgeERC20FeeChangedIterator) Next() bool { +func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -19587,7 +22765,7 @@ func (it *ExtBridgeERC20FeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExtBridgeERC20FeeChanged) + it.Event = new(ExtBridgeKLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19602,7 +22780,7 @@ func (it *ExtBridgeERC20FeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExtBridgeERC20FeeChanged) + it.Event = new(ExtBridgeKLAYFeeChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19618,58 +22796,51 @@ func (it *ExtBridgeERC20FeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExtBridgeERC20FeeChangedIterator) Error() error { +func (it *ExtBridgeKLAYFeeChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExtBridgeERC20FeeChangedIterator) Close() error { +func (it *ExtBridgeKLAYFeeChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExtBridgeERC20FeeChanged represents a ERC20FeeChanged event raised by the ExtBridge contract. -type ExtBridgeERC20FeeChanged struct { - Token common.Address - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// ExtBridgeKLAYFeeChanged represents a KLAYFeeChanged event raised by the ExtBridge contract. +type ExtBridgeKLAYFeeChanged struct { + Fee *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*ExtBridgeERC20FeeChangedIterator, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*ExtBridgeKLAYFeeChangedIterator, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) } - logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } - return &ExtBridgeERC20FeeChangedIterator{contract: _ExtBridge.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil + return &ExtBridgeKLAYFeeChangedIterator{contract: _ExtBridge.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil } -// WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) { - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { + var feeRule []interface{} for _, feeItem := range fee { feeRule = append(feeRule, feeItem) } - logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule) + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) if err != nil { return nil, err } @@ -19679,8 +22850,8 @@ func (_ExtBridge *ExtBridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExtBridgeERC20FeeChanged) - if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { + event := new(ExtBridgeKLAYFeeChanged) + if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return err } event.Raw = log @@ -19701,20 +22872,21 @@ func (_ExtBridge *ExtBridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, }), nil } -// ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b. +// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. // -// Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) ParseERC20FeeChanged(log types.Log) (*ExtBridgeERC20FeeChanged, error) { - event := new(ExtBridgeERC20FeeChanged) - if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil { +// Solidity: event KLAYFeeChanged(uint256 indexed fee) +func (_ExtBridge *ExtBridgeFilterer) ParseKLAYFeeChanged(log types.Log) (*ExtBridgeKLAYFeeChanged, error) { + event := new(ExtBridgeKLAYFeeChanged) + if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ExtBridgeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the ExtBridge contract. -type ExtBridgeFeeReceiverChangedIterator struct { - Event *ExtBridgeFeeReceiverChanged // Event containing the contract specifics and raw log +// ExtBridgeOperatorDeregisteredIterator is returned from FilterOperatorDeregistered and is used to iterate over the raw logs and unpacked data for OperatorDeregistered events raised by the ExtBridge contract. +type ExtBridgeOperatorDeregisteredIterator struct { + Event *ExtBridgeOperatorDeregistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -19728,7 +22900,7 @@ type ExtBridgeFeeReceiverChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool { +func (it *ExtBridgeOperatorDeregisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -19737,7 +22909,7 @@ func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExtBridgeFeeReceiverChanged) + it.Event = new(ExtBridgeOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19752,7 +22924,7 @@ func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExtBridgeFeeReceiverChanged) + it.Event = new(ExtBridgeOperatorDeregistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19768,49 +22940,51 @@ func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExtBridgeFeeReceiverChangedIterator) Error() error { +func (it *ExtBridgeOperatorDeregisteredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExtBridgeFeeReceiverChangedIterator) Close() error { +func (it *ExtBridgeOperatorDeregisteredIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExtBridgeFeeReceiverChanged represents a FeeReceiverChanged event raised by the ExtBridge contract. -type ExtBridgeFeeReceiverChanged struct { - FeeReceiver common.Address - Raw types.Log // Blockchain specific contextual infos +// ExtBridgeOperatorDeregistered represents a OperatorDeregistered event raised by the ExtBridge contract. +type ExtBridgeOperatorDeregistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// FilterOperatorDeregistered is a free log retrieval operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_ExtBridge *ExtBridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*ExtBridgeFeeReceiverChangedIterator, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) FilterOperatorDeregistered(opts *bind.FilterOpts, operator []common.Address) (*ExtBridgeOperatorDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } - return &ExtBridgeFeeReceiverChangedIterator{contract: _ExtBridge.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil + return &ExtBridgeOperatorDeregisteredIterator{contract: _ExtBridge.contract, event: "OperatorDeregistered", logs: logs, sub: sub}, nil } -// WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// WatchOperatorDeregistered is a free log subscription operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_ExtBridge *ExtBridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) { - var feeReceiverRule []interface{} - for _, feeReceiverItem := range feeReceiver { - feeReceiverRule = append(feeReceiverRule, feeReceiverItem) +// Solidity: event OperatorDeregistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) WatchOperatorDeregistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeOperatorDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule) + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "OperatorDeregistered", operatorRule) if err != nil { return nil, err } @@ -19820,8 +22994,8 @@ func (_ExtBridge *ExtBridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExtBridgeFeeReceiverChanged) - if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { + event := new(ExtBridgeOperatorDeregistered) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return err } event.Raw = log @@ -19842,20 +23016,21 @@ func (_ExtBridge *ExtBridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpt }), nil } -// ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059. +// ParseOperatorDeregistered is a log parse operation binding the contract event 0x6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d. // -// Solidity: event FeeReceiverChanged(address indexed feeReceiver) -func (_ExtBridge *ExtBridgeFilterer) ParseFeeReceiverChanged(log types.Log) (*ExtBridgeFeeReceiverChanged, error) { - event := new(ExtBridgeFeeReceiverChanged) - if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil { +// Solidity: event OperatorDeregistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) ParseOperatorDeregistered(log types.Log) (*ExtBridgeOperatorDeregistered, error) { + event := new(ExtBridgeOperatorDeregistered) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ExtBridgeHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the ExtBridge contract. -type ExtBridgeHandleValueTransferIterator struct { - Event *ExtBridgeHandleValueTransfer // Event containing the contract specifics and raw log +// ExtBridgeOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the ExtBridge contract. +type ExtBridgeOperatorRegisteredIterator struct { + Event *ExtBridgeOperatorRegistered // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -19869,7 +23044,7 @@ type ExtBridgeHandleValueTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExtBridgeHandleValueTransferIterator) Next() bool { +func (it *ExtBridgeOperatorRegisteredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -19878,7 +23053,7 @@ func (it *ExtBridgeHandleValueTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExtBridgeHandleValueTransfer) + it.Event = new(ExtBridgeOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19893,7 +23068,7 @@ func (it *ExtBridgeHandleValueTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExtBridgeHandleValueTransfer) + it.Event = new(ExtBridgeOperatorRegistered) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -19909,73 +23084,51 @@ func (it *ExtBridgeHandleValueTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExtBridgeHandleValueTransferIterator) Error() error { +func (it *ExtBridgeOperatorRegisteredIterator) Error() error { return it.fail } - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ExtBridgeHandleValueTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ExtBridgeHandleValueTransfer represents a HandleValueTransfer event raised by the ExtBridge contract. -type ExtBridgeHandleValueTransfer struct { - RequestTxHash [32]byte - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - HandleNonce uint64 - LowerHandleNonce uint64 - ExtraData []byte - Raw types.Log // Blockchain specific contextual infos + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExtBridgeOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil } -// FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ExtBridgeOperatorRegistered represents a OperatorRegistered event raised by the ExtBridge contract. +type ExtBridgeOperatorRegistered struct { + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_ExtBridge *ExtBridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeHandleValueTransferIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*ExtBridgeOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } - return &ExtBridgeHandleValueTransferIterator{contract: _ExtBridge.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil + return &ExtBridgeOperatorRegisteredIterator{contract: _ExtBridge.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil } -// WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_ExtBridge *ExtBridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *ExtBridgeHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) +// Solidity: event OperatorRegistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) } - logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule) + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) if err != nil { return nil, err } @@ -19985,8 +23138,8 @@ func (_ExtBridge *ExtBridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExtBridgeHandleValueTransfer) - if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { + event := new(ExtBridgeOperatorRegistered) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return err } event.Raw = log @@ -20007,20 +23160,21 @@ func (_ExtBridge *ExtBridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOp }), nil } -// ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175. +// ParseOperatorRegistered is a log parse operation binding the contract event 0x4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e5. // -// Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData) -func (_ExtBridge *ExtBridgeFilterer) ParseHandleValueTransfer(log types.Log) (*ExtBridgeHandleValueTransfer, error) { - event := new(ExtBridgeHandleValueTransfer) - if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil { +// Solidity: event OperatorRegistered(address indexed operator) +func (_ExtBridge *ExtBridgeFilterer) ParseOperatorRegistered(log types.Log) (*ExtBridgeOperatorRegistered, error) { + event := new(ExtBridgeOperatorRegistered) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } -// ExtBridgeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the ExtBridge contract. -type ExtBridgeKLAYFeeChangedIterator struct { - Event *ExtBridgeKLAYFeeChanged // Event containing the contract specifics and raw log +// ExtBridgeOperatorThresholdChangedIterator is returned from FilterOperatorThresholdChanged and is used to iterate over the raw logs and unpacked data for OperatorThresholdChanged events raised by the ExtBridge contract. +type ExtBridgeOperatorThresholdChangedIterator struct { + Event *ExtBridgeOperatorThresholdChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -20034,7 +23188,7 @@ type ExtBridgeKLAYFeeChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool { +func (it *ExtBridgeOperatorThresholdChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -20043,7 +23197,7 @@ func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExtBridgeKLAYFeeChanged) + it.Event = new(ExtBridgeOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -20058,7 +23212,7 @@ func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExtBridgeKLAYFeeChanged) + it.Event = new(ExtBridgeOperatorThresholdChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -20074,49 +23228,52 @@ func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExtBridgeKLAYFeeChangedIterator) Error() error { +func (it *ExtBridgeOperatorThresholdChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExtBridgeKLAYFeeChangedIterator) Close() error { +func (it *ExtBridgeOperatorThresholdChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExtBridgeKLAYFeeChanged represents a KLAYFeeChanged event raised by the ExtBridge contract. -type ExtBridgeKLAYFeeChanged struct { - Fee *big.Int - Raw types.Log // Blockchain specific contextual infos +// ExtBridgeOperatorThresholdChanged represents a OperatorThresholdChanged event raised by the ExtBridge contract. +type ExtBridgeOperatorThresholdChanged struct { + VoteType uint8 + Threshold uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// FilterOperatorThresholdChanged is a free log retrieval operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*ExtBridgeKLAYFeeChangedIterator, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_ExtBridge *ExtBridgeFilterer) FilterOperatorThresholdChanged(opts *bind.FilterOpts, voteType []uint8) (*ExtBridgeOperatorThresholdChangedIterator, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } - return &ExtBridgeKLAYFeeChangedIterator{contract: _ExtBridge.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil + return &ExtBridgeOperatorThresholdChangedIterator{contract: _ExtBridge.contract, event: "OperatorThresholdChanged", logs: logs, sub: sub}, nil } -// WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// WatchOperatorThresholdChanged is a free log subscription operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) { - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_ExtBridge *ExtBridgeFilterer) WatchOperatorThresholdChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeOperatorThresholdChanged, voteType []uint8) (event.Subscription, error) { + + var voteTypeRule []interface{} + for _, voteTypeItem := range voteType { + voteTypeRule = append(voteTypeRule, voteTypeItem) } - logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule) + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "OperatorThresholdChanged", voteTypeRule) if err != nil { return nil, err } @@ -20126,8 +23283,8 @@ func (_ExtBridge *ExtBridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, s select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExtBridgeKLAYFeeChanged) - if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { + event := new(ExtBridgeOperatorThresholdChanged) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return err } event.Raw = log @@ -20148,14 +23305,15 @@ func (_ExtBridge *ExtBridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, s }), nil } -// ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365. +// ParseOperatorThresholdChanged is a log parse operation binding the contract event 0xde3cd2be7e9ae1f7a2ad70ecd7323f887351d2a90eb1bd60f406f9f76b9de9c0. // -// Solidity: event KLAYFeeChanged(uint256 indexed fee) -func (_ExtBridge *ExtBridgeFilterer) ParseKLAYFeeChanged(log types.Log) (*ExtBridgeKLAYFeeChanged, error) { - event := new(ExtBridgeKLAYFeeChanged) - if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil { +// Solidity: event OperatorThresholdChanged(uint8 indexed voteType, uint8 threshold) +func (_ExtBridge *ExtBridgeFilterer) ParseOperatorThresholdChanged(log types.Log) (*ExtBridgeOperatorThresholdChanged, error) { + event := new(ExtBridgeOperatorThresholdChanged) + if err := _ExtBridge.contract.UnpackLog(event, "OperatorThresholdChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20237,6 +23395,7 @@ type ExtBridgeOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ExtBridge *ExtBridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ExtBridgeOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -20257,6 +23416,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterOwnershipTransferred(opts *bind.Filte // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ExtBridge *ExtBridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ExtBridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -20306,6 +23466,7 @@ func (_ExtBridge *ExtBridgeFilterer) ParseOwnershipTransferred(log types.Log) (* if err := _ExtBridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20393,6 +23554,7 @@ type ExtBridgeRequestValueTransfer struct { // // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeRequestValueTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -20417,6 +23579,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransfer(opts *bind.Filte // // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData) func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *ExtBridgeRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -20470,12 +23633,182 @@ func (_ExtBridge *ExtBridgeFilterer) ParseRequestValueTransfer(log types.Log) (* if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil { return nil, err } + event.Raw = log + return event, nil +} + +// ExtBridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the ExtBridge contract. +type ExtBridgeRequestValueTransferEncodedIterator struct { + Event *ExtBridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub kaia.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ExtBridgeRequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ExtBridgeRequestValueTransferEncoded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ExtBridgeRequestValueTransferEncodedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ExtBridgeRequestValueTransferEncodedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ExtBridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the ExtBridge contract. +type ExtBridgeRequestValueTransferEncoded struct { + TokenType uint8 + From common.Address + To common.Address + TokenAddress common.Address + ValueOrTokenId *big.Int + RequestNonce uint64 + Fee *big.Int + ExtraData []byte + EncodingVer uint8 + EncodedData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeRequestValueTransferEncodedIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return &ExtBridgeRequestValueTransferEncodedIterator{contract: _ExtBridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil +} + +// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *ExtBridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenAddressRule []interface{} + for _, tokenAddressItem := range tokenAddress { + tokenAddressRule = append(tokenAddressRule, tokenAddressItem) + } + + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ExtBridgeRequestValueTransferEncoded) + if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// +// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) +func (_ExtBridge *ExtBridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*ExtBridgeRequestValueTransferEncoded, error) { + event := new(ExtBridgeRequestValueTransferEncoded) + if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + return nil, err + } + event.Raw = log return event, nil } -// ExtBridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the ExtBridge contract. -type ExtBridgeRequestValueTransferEncodedIterator struct { - Event *ExtBridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log +// ExtBridgeRunningStatusChangedIterator is returned from FilterRunningStatusChanged and is used to iterate over the raw logs and unpacked data for RunningStatusChanged events raised by the ExtBridge contract. +type ExtBridgeRunningStatusChangedIterator struct { + Event *ExtBridgeRunningStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -20489,7 +23822,7 @@ type ExtBridgeRequestValueTransferEncodedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool { +func (it *ExtBridgeRunningStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -20498,7 +23831,7 @@ func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ExtBridgeRequestValueTransferEncoded) + it.Event = new(ExtBridgeRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -20513,7 +23846,7 @@ func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ExtBridgeRequestValueTransferEncoded) + it.Event = new(ExtBridgeRunningStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -20529,74 +23862,41 @@ func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ExtBridgeRequestValueTransferEncodedIterator) Error() error { +func (it *ExtBridgeRunningStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ExtBridgeRequestValueTransferEncodedIterator) Close() error { +func (it *ExtBridgeRunningStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ExtBridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the ExtBridge contract. -type ExtBridgeRequestValueTransferEncoded struct { - TokenType uint8 - From common.Address - To common.Address - TokenAddress common.Address - ValueOrTokenId *big.Int - RequestNonce uint64 - Fee *big.Int - ExtraData []byte - EncodingVer uint8 - EncodedData []byte - Raw types.Log // Blockchain specific contextual infos +// ExtBridgeRunningStatusChanged represents a RunningStatusChanged event raised by the ExtBridge contract. +type ExtBridgeRunningStatusChanged struct { + Status bool + Raw types.Log // Blockchain specific contextual infos } -// FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// FilterRunningStatusChanged is a free log retrieval operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeRequestValueTransferEncodedIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_ExtBridge *ExtBridgeFilterer) FilterRunningStatusChanged(opts *bind.FilterOpts) (*ExtBridgeRunningStatusChangedIterator, error) { - logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } - return &ExtBridgeRequestValueTransferEncodedIterator{contract: _ExtBridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil + return &ExtBridgeRunningStatusChangedIterator{contract: _ExtBridge.contract, event: "RunningStatusChanged", logs: logs, sub: sub}, nil } -// WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// WatchRunningStatusChanged is a free log subscription operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *ExtBridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - var tokenAddressRule []interface{} - for _, tokenAddressItem := range tokenAddress { - tokenAddressRule = append(tokenAddressRule, tokenAddressItem) - } +// Solidity: event RunningStatusChanged(bool _status) +func (_ExtBridge *ExtBridgeFilterer) WatchRunningStatusChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeRunningStatusChanged) (event.Subscription, error) { - logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule) + logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "RunningStatusChanged") if err != nil { return nil, err } @@ -20606,8 +23906,8 @@ func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransferEncoded(opts *bind select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ExtBridgeRequestValueTransferEncoded) - if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { + event := new(ExtBridgeRunningStatusChanged) + if err := _ExtBridge.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return err } event.Raw = log @@ -20628,14 +23928,15 @@ func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransferEncoded(opts *bind }), nil } -// ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f. +// ParseRunningStatusChanged is a log parse operation binding the contract event 0x6de8c0fa6db0f6ebea4ab5c52ddacbd51605f42fead2ddeb1677e7da4206d719. // -// Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData) -func (_ExtBridge *ExtBridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*ExtBridgeRequestValueTransferEncoded, error) { - event := new(ExtBridgeRequestValueTransferEncoded) - if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil { +// Solidity: event RunningStatusChanged(bool _status) +func (_ExtBridge *ExtBridgeFilterer) ParseRunningStatusChanged(log types.Log) (*ExtBridgeRunningStatusChanged, error) { + event := new(ExtBridgeRunningStatusChanged) + if err := _ExtBridge.contract.UnpackLog(event, "RunningStatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20716,6 +24017,7 @@ type ExtBridgeTokenDeregistered struct { // // Solidity: event TokenDeregistered(address indexed token) func (_ExtBridge *ExtBridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenDeregisteredIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -20732,6 +24034,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOp // // Solidity: event TokenDeregistered(address indexed token) func (_ExtBridge *ExtBridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenDeregistered, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -20777,6 +24080,7 @@ func (_ExtBridge *ExtBridgeFilterer) ParseTokenDeregistered(log types.Log) (*Ext if err := _ExtBridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20857,6 +24161,7 @@ type ExtBridgeTokenLocked struct { // // Solidity: event TokenLocked(address indexed token) func (_ExtBridge *ExtBridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenLockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -20873,6 +24178,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, to // // Solidity: event TokenLocked(address indexed token) func (_ExtBridge *ExtBridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenLocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -20918,6 +24224,7 @@ func (_ExtBridge *ExtBridgeFilterer) ParseTokenLocked(log types.Log) (*ExtBridge if err := _ExtBridge.contract.UnpackLog(event, "TokenLocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20998,6 +24305,7 @@ type ExtBridgeTokenRegistered struct { // // Solidity: event TokenRegistered(address indexed token) func (_ExtBridge *ExtBridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenRegisteredIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -21014,6 +24322,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts // // Solidity: event TokenRegistered(address indexed token) func (_ExtBridge *ExtBridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenRegistered, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -21059,6 +24368,7 @@ func (_ExtBridge *ExtBridgeFilterer) ParseTokenRegistered(log types.Log) (*ExtBr if err := _ExtBridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21139,6 +24449,7 @@ type ExtBridgeTokenUnlocked struct { // // Solidity: event TokenUnlocked(address indexed token) func (_ExtBridge *ExtBridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenUnlockedIterator, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -21155,6 +24466,7 @@ func (_ExtBridge *ExtBridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, // // Solidity: event TokenUnlocked(address indexed token) func (_ExtBridge *ExtBridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenUnlocked, token []common.Address) (event.Subscription, error) { + var tokenRule []interface{} for _, tokenItem := range token { tokenRule = append(tokenRule, tokenItem) @@ -21200,6 +24512,7 @@ func (_ExtBridge *ExtBridgeFilterer) ParseTokenUnlocked(log types.Log) (*ExtBrid if err := _ExtBridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21218,8 +24531,8 @@ var IERC165ABI = IERC165MetaData.ABI // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC165BinRuntime = `` -// IERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC165MetaData.Sigs instead. +// IERC165FuncSigs maps the 4-byte function signature to its string representation. var IERC165FuncSigs = IERC165MetaData.Sigs // IERC165 is an auto generated Go binding around a Kaia contract. @@ -21370,6 +24683,7 @@ func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -21377,6 +24691,7 @@ func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -21413,8 +24728,8 @@ var IERC20ABI = IERC20MetaData.ABI // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BinRuntime = `` -// IERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetaData.Sigs instead. +// IERC20FuncSigs maps the 4-byte function signature to its string representation. var IERC20FuncSigs = IERC20MetaData.Sigs // IERC20 is an auto generated Go binding around a Kaia contract. @@ -21565,6 +24880,7 @@ func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -21572,6 +24888,7 @@ func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -21594,6 +24911,7 @@ func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender comm func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -21601,6 +24919,7 @@ func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -21623,6 +24942,7 @@ func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -21630,6 +24950,7 @@ func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -21788,6 +25109,7 @@ type IERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21808,6 +25130,7 @@ func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -21857,6 +25180,7 @@ func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, er if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21939,6 +25263,7 @@ type IERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -21959,6 +25284,7 @@ func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -22008,6 +25334,7 @@ func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, er if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22026,8 +25353,8 @@ var IERC20BridgeReceiverABI = IERC20BridgeReceiverMetaData.ABI // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BridgeReceiverBinRuntime = `` -// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20BridgeReceiverMetaData.Sigs instead. +// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC20BridgeReceiverFuncSigs = IERC20BridgeReceiverMetaData.Sigs // IERC20BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -22217,8 +25544,8 @@ var IERC721ABI = IERC721MetaData.ABI // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BinRuntime = `` -// IERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetaData.Sigs instead. +// IERC721FuncSigs maps the 4-byte function signature to its string representation. var IERC721FuncSigs = IERC721MetaData.Sigs // IERC721 is an auto generated Go binding around a Kaia contract. @@ -22369,6 +25696,7 @@ func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -22376,6 +25704,7 @@ func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -22398,6 +25727,7 @@ func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -22405,6 +25735,7 @@ func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -22427,6 +25758,7 @@ func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addr func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -22434,6 +25766,7 @@ func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -22456,6 +25789,7 @@ func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, ope func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -22463,6 +25797,7 @@ func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -22485,6 +25820,7 @@ func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -22492,6 +25828,7 @@ func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -22692,6 +26029,7 @@ type IERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22716,6 +26054,7 @@ func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []c // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22769,6 +26108,7 @@ func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -22851,6 +26191,7 @@ type IERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22871,6 +26212,7 @@ func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, own // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -22920,6 +26262,7 @@ func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721App if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23002,6 +26345,7 @@ type IERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -23026,6 +26370,7 @@ func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []co // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -23079,6 +26424,7 @@ func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -23097,8 +26443,8 @@ var IERC721BridgeReceiverABI = IERC721BridgeReceiverMetaData.ABI // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BridgeReceiverBinRuntime = `` -// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721BridgeReceiverMetaData.Sigs instead. +// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721BridgeReceiverFuncSigs = IERC721BridgeReceiverMetaData.Sigs // IERC721BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -23291,8 +26637,8 @@ var IERC721MetadataABI = IERC721MetadataMetaData.ABI // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721MetadataBinRuntime = `` -// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetadataMetaData.Sigs instead. +// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. var IERC721MetadataFuncSigs = IERC721MetadataMetaData.Sigs // IERC721Metadata is an auto generated Go binding around a Kaia contract. @@ -23443,6 +26789,7 @@ func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.Transa func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -23450,6 +26797,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, ow out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -23472,6 +26820,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Add func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -23479,6 +26828,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -23501,6 +26851,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.I func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -23508,6 +26859,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -23530,6 +26882,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner com func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -23537,6 +26890,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -23559,6 +26913,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -23566,6 +26921,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, toke out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -23588,6 +26944,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -23595,6 +26952,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -23617,6 +26975,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfac func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -23624,6 +26983,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -23646,6 +27006,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -23653,6 +27014,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tok out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -23853,6 +27215,7 @@ type IERC721MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23877,6 +27240,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.Filte // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -23930,6 +27294,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24012,6 +27377,7 @@ type IERC721MetadataApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -24032,6 +27398,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -24081,6 +27448,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.L if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24163,6 +27531,7 @@ type IERC721MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -24187,6 +27556,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.Filte // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -24240,6 +27610,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24258,8 +27629,8 @@ var IERC721ReceiverABI = IERC721ReceiverMetaData.ABI // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721ReceiverBinRuntime = `` -// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721ReceiverMetaData.Sigs instead. +// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721ReceiverFuncSigs = IERC721ReceiverMetaData.Sigs // IERC721Receiver is an auto generated Go binding around a Kaia contract. @@ -24442,8 +27813,8 @@ var MinterRoleABI = MinterRoleMetaData.ABI // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MinterRoleBinRuntime = `` -// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MinterRoleMetaData.Sigs instead. +// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. var MinterRoleFuncSigs = MinterRoleMetaData.Sigs // MinterRole is an auto generated Go binding around a Kaia contract. @@ -24594,6 +27965,7 @@ func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _MinterRole.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -24601,6 +27973,7 @@ func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -24736,6 +28109,7 @@ type MinterRoleMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24752,6 +28126,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24797,6 +28172,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterR if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24877,6 +28253,7 @@ type MinterRoleMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24893,6 +28270,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -24938,6 +28316,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*Minte if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -24959,8 +28338,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -25111,6 +28490,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -25118,6 +28498,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -25140,6 +28521,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -25147,6 +28529,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -25283,6 +28666,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -25303,6 +28687,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -25352,13 +28737,14 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } // RolesMetaData contains all meta data concerning the Roles contract. var RolesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029", } // RolesABI is the input ABI used to generate the binding from. @@ -25366,7 +28752,7 @@ var RolesMetaData = &bind.MetaData{ var RolesABI = RolesMetaData.ABI // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029` +const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029` // RolesBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use RolesMetaData.Bin instead. @@ -25531,10 +28917,186 @@ func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method strin return _Roles.Contract.contract.Transact(opts, method, params...) } +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201f6a1eb88e486812faf01c008787e4c478a4e39bb6d28bea2893ded92860220c0029", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. +const SafeERC20BinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201f6a1eb88e486812faf01c008787e4c478a4e39bb6d28bea2893ded92860220c0029` + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Kaia contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around a Kaia contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around a Kaia contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around a Kaia contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around a Kaia contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around a Kaia contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around a Kaia contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around a Kaia contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around a Kaia contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around a Kaia contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around a Kaia contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} + // SafeMathMetaData contains all meta data concerning the SafeMath contract. var SafeMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029", } // SafeMathABI is the input ABI used to generate the binding from. @@ -25542,7 +29104,7 @@ var SafeMathMetaData = &bind.MetaData{ var SafeMathABI = SafeMathMetaData.ABI // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029` +const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029` // SafeMathBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use SafeMathMetaData.Bin instead. diff --git a/contracts/contracts/testing/reward/all.go b/contracts/contracts/testing/reward/all.go index 679dbc494..78937a8d1 100644 --- a/contracts/contracts/testing/reward/all.go +++ b/contracts/contracts/testing/reward/all.go @@ -93,8 +93,8 @@ var AddressBookMockABI = AddressBookMockMetaData.ABI // AddressBookMockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookMockBinRuntime = `6080604052600436106102505763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663056eb492811461025557806311117fc81461028957806315575d5a146102a1578063160370b8146102ed5780631865c57d146103f757806321ac4ad414610467578063298b3c611461048d57806332b91e85146104ba578063394a144a146104e55780633a48ef97146105065780633f0628b11461051e57806341b6945c146105425780634a8c1fb4146105575780634b6a94cc146105805780634c5d435c1461060a57806350a5bb691461062e578063579740db1461064357806358d65880146106645780635bc246251461068b578063666d7190146106ac5780636abd623d146106e4578063715b208b146106f957806376674c54146107a7578063778f39cb146107bc5780637894c366146107d1578063791b5123146107f5578063832a2aad14610816578063863f5c0a146107f557806387cd9feb146108375780638e6f6b771461084c5780639258d76814610861578063934d1fa414610885578063abed94351461089a578063afaaf330146108ba578063b50060e4146108db578063b5067706146108f0578063b756393014610911578063b858dd9514610926578063c47afb3a1461093b578063c7e9de7514610953578063cc11efc014610977578063cec92466146109a4578063d267eda5146109b9578063dd8bd2cc146109ce578063de38e29f146109ef578063de5bbfbc14610a07578063e748357b14610a1c578063feb15ca114610a34578063ffa1ad7414610a49575b600080fd5b34801561026157600080fd5b5061026d600435610a5e565b60408051600160a060020a039092168252519081900360200190f35b34801561029557600080fd5b5061026d600435610a86565b3480156102ad57600080fd5b506102c2600160a060020a0360043516610a94565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b3480156102f957600080fd5b50610302610bab565b60408051600160a060020a0380851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b8381101561035f578181015183820152602001610347565b50505050905001848103835288818151815260200191508051906020019060200280838360005b8381101561039e578181015183820152602001610386565b50505050905001848103825287818151815260200191508051906020019060200280838360005b838110156103dd5781810151838201526020016103c5565b505050509050019850505050505050505060405180910390f35b34801561040357600080fd5b5061040c610cf6565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561045257818101518382015260200161043a565b50505050905001935050505060405180910390f35b34801561047357600080fd5b5061048b600160a060020a0360043516602435610d62565b005b34801561049957600080fd5b5061048b600160a060020a0360043581169060243581169060443516610d70565b3480156104c657600080fd5b506104cf610f37565b6040805160ff9092168252519081900360200190f35b3480156104f157600080fd5b5061048b600160a060020a0360043516610f3c565b34801561051257600080fd5b5061026d600435610f48565b34801561052a57600080fd5b5061048b60ff60043516602435604435606435610f56565b34801561054e57600080fd5b506104cf610f5c565b34801561056357600080fd5b5061056c610f61565b604080519115158252519081900360200190f35b34801561058c57600080fd5b50610595610f82565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105cf5781810151838201526020016105b7565b50505050905090810190601f1680156105fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061657600080fd5b5061048b600160a060020a0360043516602435610fb9565b34801561063a57600080fd5b5061056c61102d565b34801561064f57600080fd5b5061048b600160a060020a036004351661103d565b34801561067057600080fd5b506106796113d2565b60408051918252519081900360200190f35b34801561069757600080fd5b5061048b600160a060020a03600435166113d7565b3480156106b857600080fd5b5061048b60246004803582810192908201359181358083019290820135916044359182019101356114c0565b3480156106f057600080fd5b5061026d6116b6565b34801561070557600080fd5b5061070e6116c5565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561075257818101518382015260200161073a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610791578181015183820152602001610779565b5050505090500194505050505060405180910390f35b3480156107b357600080fd5b506104cf6119cc565b3480156107c857600080fd5b506106796119d1565b3480156107dd57600080fd5b5061048b6024600480358281019291013590356119d6565b34801561080157600080fd5b5061048b600160a060020a0360043516610f45565b34801561082257600080fd5b5061048b600160a060020a0360043516611a0f565b34801561084357600080fd5b5061048b611b66565b34801561085857600080fd5b50610679611b68565b34801561086d57600080fd5b5061048b600160a060020a0360043516602435611b6f565b34801561089157600080fd5b50610679611b79565b3480156108a657600080fd5b5061048b6004803560248101910135611b80565b3480156108c657600080fd5b5061048b600160a060020a0360043516611c41565b3480156108e757600080fd5b506104cf611cb4565b3480156108fc57600080fd5b5061048b600160a060020a0360043516611cb9565b34801561091d57600080fd5b50610679611cc2565b34801561093257600080fd5b5061026d611cc8565b34801561094757600080fd5b5061048b600435611cd7565b34801561095f57600080fd5b5061048b600160a060020a0360043516602435611cdc565b34801561098357600080fd5b5061048b600160a060020a0360043581169060243581169060443516611d50565b3480156109b057600080fd5b5061048b611d5b565b3480156109c557600080fd5b5061026d612075565b3480156109da57600080fd5b50610679600160a060020a0360043516612084565b3480156109fb57600080fd5b5061026d600435612096565b348015610a1357600080fd5b506104cf6120a4565b348015610a2857600080fd5b5061048b6004356120a9565b348015610a4057600080fd5b5061048b6120b2565b348015610a5557600080fd5b506106796119cc565b6006805482908110610a6c57fe5b600091825260209091200154600160a060020a0316905081565b6000805482908110610a6c57fe5b600160a060020a03811660008181526005602052604081205460068054929384938493929083908110610ac357fe5b600091825260209091200154600160a060020a031614610b2d576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420434e206e6f64652049442e00000000000000000000000000604482015290519081900360640190fd5b6006805482908110610b3b57fe5b60009182526020909120015460078054600160a060020a039092169183908110610b6157fe5b60009182526020909120015460088054600160a060020a039092169184908110610b8757fe5b6000918252602090912001549195509350600160a060020a03169150509193909250565b60025460035460068054604080516020808402820181019092528281526060958695869560009586959194600794600894600160a060020a03918216949116928791830182828015610c2657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610c08575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015610c8257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610c64575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610cde57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610cc0575b50505050509250945094509450945094509091929394565b6060600080600081805480602002602001604051908101604052809291908181526020018280548015610d5257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610d34575b5093975093955050505050509091565b610d6c8282611cdc565b5050565b60045460009060a860020a900460ff161515610dc4576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b60065460001015610e6257600160a060020a038416600081815260056020526040902054600680549091908110610df757fe5b600091825260209091200154600160a060020a03161415610e62576040805160e560020a62461bcd02815260206004820152601960248201527f434e206e6f646520494420616c72656164792065786973742e00000000000000604482015290519081900360640190fd5b5060068054600160a060020a03948516600081815260056020526040812083905560018084019094557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9092018054600160a060020a03199081169092179055600780548085019091557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180549587169582169590951790945560088054928301815590527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018054919093169116179055565b600281565b610f4581611c41565b50565b6008805482908110610a6c57fe5b50505050565b600481565b60045474010000000000000000000000000000000000000000900460ff1681565b60408051808201909152600f81527f41646472657373426f6f6b4d6f636b0000000000000000000000000000000000602082015281565b60045460a860020a900460ff16151561100a576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b5060038054600160a060020a031916600160a060020a0392909216919091179055565b60045460a860020a900460ff1681565b60045460009060a860020a900460ff161515611091576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b50600160a060020a03811660008181526005602052604090205460068054919291839081106110bc57fe5b600091825260209091200154600160a060020a031614611126576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420434e206e6f64652049442e00000000000000000000000000604482015290519081900360640190fd5b600654600110611180576040805160e560020a62461bcd02815260206004820152601b60248201527f434e2073686f756c64206265206d6f7265207468616e206f6e652e0000000000604482015290519081900360640190fd5b600654600019018110156112f8576006805460001981019081106111a057fe5b60009182526020909120015460068054600160a060020a0390921691839081106111c657fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556006546007805490916000190190811061120557fe5b60009182526020909120015460078054600160a060020a03909216918390811061122b57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556006546008805490916000190190811061126a57fe5b60009182526020909120015460088054600160a060020a03909216918390811061129057fe5b600091825260208220018054600160a060020a031916600160a060020a039390931692909217909155600680548392600592909160001981019081106112d257fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020555b600160a060020a03821660009081526005602052604081205560068054600019810190811061132357fe5b60009182526020909120018054600160a060020a031916905560068054600019019061134f90826120ba565b5060078054600019810190811061136257fe5b60009182526020909120018054600160a060020a031916905560078054600019019061138e90826120ba565b506008805460001981019081106113a157fe5b60009182526020909120018054600160a060020a03191690556008805460001901906113cd90826120ba565b505050565b603281565b60045460009060a860020a900460ff16151561142b576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b50600160a060020a038116600081815260056020526040902054600680549192918390811061145657fe5b600091825260209091200154600160a060020a031614611180576040805160e560020a62461bcd02815260206004820152601360248201527f496e76616c696420434e206e6f64652049442e00000000000000000000000000604482015290519081900360640190fd5b600080868514611540576040805160e560020a62461bcd02815260206004820152602860248201527f446966666572656e7420636e4e6f6465496420616e6420636e5374616b696e6760448201527f206c656e67746873000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8683146115bd576040805160e560020a62461bcd02815260206004820152602560248201527f446966666572656e7420636e4e6f6465496420616e6420726577617264206c6560448201527f6e67746873000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600091505b868210156116ac578787838181106115d657fe5b90506020020135600160a060020a0316905060006006805490501180156116375750600160a060020a03811660008181526005602052604090205460068054909190811061162057fe5b600091825260209091200154600160a060020a0316145b15611641576116a1565b6116a188888481811061165057fe5b90506020020135600160a060020a0316878785818110151561166e57fe5b90506020020135600160a060020a0316868686818110151561168c57fe5b90506020020135600160a060020a0316610d70565b6001909101906115c2565b5050505050505050565b600454600160a060020a031681565b600454606090819081908190600090819074010000000000000000000000000000000000000000900460ff1615156117165760408051600080825260208201908152818301909252945092506119c1565b60068054905060030260020160405190808252806020026020018201604052801561174b578160200160208202803883390190505b509350600680549050600302600201604051908082528060200260200182016040528015611783578160200160208202803883390190505b506006549093509150600090505b8181101561190357600084826003028151811015156117ac57fe5b60ff90921660209283029091019091015260068054829081106117cb57fe5b6000918252602090912001548351600160a060020a03909116908490600384029081106117f457fe5b600160a060020a039092166020928302909101909101528351600190859060038402830190811061182157fe5b60ff909216602092830290910190910152600780548290811061184057fe5b6000918252602090912001548351600160a060020a039091169084906003840260010190811061186c57fe5b600160a060020a039092166020928302909101909101528351600290859060038402830190811061189957fe5b60ff90921660209283029091019091015260088054829081106118b857fe5b6000918252602090912001548351600160a060020a03909116908490600260038502019081106118e457fe5b600160a060020a03909216602092830290910190910152600101611791565b6003848360030281518110151561191657fe5b60ff9092166020928302909101909101526002548351600160a060020a039091169084906003850290811061194757fe5b600160a060020a03909216602092830290910190910152835160049085906001600386020190811061197557fe5b60ff909216602092830290910190910152600380548451600160a060020a039091169185919085026001019081106119a957fe5b600160a060020a039092166020928302909101909101525b509194909350915050565b600081565b606481565b6119e2600084846120de565b5060015550506004805475ff000000000000000000000000000000000000000000191660a860020a179055565b600754600090819081805b82821015611a65576007805433919084908110611a3357fe5b600091825260209091200154600160a060020a03161415611a5a5760019450819350611a65565b600190910190611a1a565b6008805485908110611a7357fe5b60009182526020909120015460088054600160a060020a039092169250879186908110611a9c57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055507faa5c92ffd739bc0b8b117b671e7d713917ddb1440b436263a3ea106d70c6f05f600685815481101515611afa57fe5b60009182526020909120015460088054600160a060020a039092169184919088908110611b2357fe5b6000918252602091829020015460408051600160a060020a03958616815293851692840192909252929092168183015290519081900360600190a1505050505050565b565b62093a8081565b610d6c8282610fb9565b6212750081565b600080805b83831015611c3a57848484818110611b9957fe5b90506020020135600160a060020a031691506005600083600160a060020a0316600160a060020a0316815260200190815260200160002054905081600160a060020a0316600682815481101515611bec57fe5b600091825260209091200154600160a060020a031614611c0b57611c2f565b611c2f858585818110611c1a57fe5b90506020020135600160a060020a031661103d565b600190920191611b85565b5050505050565b60045460a860020a900460ff161515611c92576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600381565b610f458161103d565b60015481565b600354600160a060020a031681565b600155565b60045460a860020a900460ff161515611d2d576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b5060028054600160a060020a031916600160a060020a0392909216919091179055565b6113cd838383610d70565b60045474010000000000000000000000000000000000000000900460ff1615611dce576040805160e560020a62461bcd02815260206004820152601260248201527f416c7265616479206163746976617465642e0000000000000000000000000000604482015290519081900360640190fd5b60045460a860020a900460ff161515611e1f576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020612183833981519152604482015290519081900360640190fd5b600254600160a060020a03161515611e81576040805160e560020a62461bcd02815260206004820152601f60248201527f506f4320636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b600354600160a060020a03161515611ee3576040805160e560020a62461bcd02815260206004820152601f60248201527f4b495220636f6e7472616374206973206e6f7420726567697374657265642e00604482015290519081900360640190fd5b6006541515611f3c576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f206e6f6465204944206973206c69737465642e0000000000000000000000604482015290519081900360640190fd5b60075460065414611fbd576040805160e560020a62461bcd02815260206004820152603660248201527f496e76616c6964206c656e677468206265747765656e206e6f6465204944732060448201527f616e64207374616b696e6720636f6e7472616374732e00000000000000000000606482015290519081900360840190fd5b6008546007541461203e576040805160e560020a62461bcd02815260206004820152603e60248201527f496e76616c6964206c656e677468206265747765656e207374616b696e67206360448201527f6f6e74726163747320616e6420726577617264206164647265737365732e0000606482015290519081900360840190fd5b6004805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600254600160a060020a031681565b60056020526000908152604090205481565b6007805482908110610a6c57fe5b600181565b610f4581611cd7565b611b66611d5b565b8154818355818111156113cd576000838152602090206113cd918101908301612141565b828054828255906000526020600020908101928215612131579160200282015b82811115612131578154600160a060020a031916600160a060020a038435161782556020909201916001909101906120fe565b5061213d92915061215e565b5090565b61215b91905b8082111561213d5760008155600101612147565b90565b61215b91905b8082111561213d578054600160a060020a0319168155600101612164560041646472657373426f6f6b4d6f636b206e6f7420636f6e737472756374656400a165627a7a723058204c110a93b1c94ae731d4ecea44591d8213edb575eacc6ed71b50ca258ed3b6ae0029` -// AddressBookMockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMockMetaData.Sigs instead. +// AddressBookMockFuncSigs maps the 4-byte function signature to its string representation. var AddressBookMockFuncSigs = AddressBookMockMetaData.Sigs // AddressBookMockBin is the compiled bytecode used for deploying new contracts. @@ -266,6 +266,7 @@ func (_AddressBookMock *AddressBookMockTransactorRaw) Transact(opts *bind.Transa func (_AddressBookMock *AddressBookMockCaller) CNNODEIDTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "CN_NODE_ID_TYPE") + if err != nil { return *new(uint8), err } @@ -273,6 +274,7 @@ func (_AddressBookMock *AddressBookMockCaller) CNNODEIDTYPE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNNODEIDTYPE is a free data retrieval call binding the contract method 0x76674c54. @@ -295,6 +297,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CNNODEIDTYPE() (uint8, err func (_AddressBookMock *AddressBookMockCaller) CNREWARDADDRESSTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "CN_REWARD_ADDRESS_TYPE") + if err != nil { return *new(uint8), err } @@ -302,6 +305,7 @@ func (_AddressBookMock *AddressBookMockCaller) CNREWARDADDRESSTYPE(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNREWARDADDRESSTYPE is a free data retrieval call binding the contract method 0x32b91e85. @@ -324,6 +328,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CNREWARDADDRESSTYPE() (uin func (_AddressBookMock *AddressBookMockCaller) CNSTAKINGADDRESSTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "CN_STAKING_ADDRESS_TYPE") + if err != nil { return *new(uint8), err } @@ -331,6 +336,7 @@ func (_AddressBookMock *AddressBookMockCaller) CNSTAKINGADDRESSTYPE(opts *bind.C out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // CNSTAKINGADDRESSTYPE is a free data retrieval call binding the contract method 0xde5bbfbc. @@ -353,6 +359,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CNSTAKINGADDRESSTYPE() (ui func (_AddressBookMock *AddressBookMockCaller) CONTRACTTYPE(opts *bind.CallOpts) (string, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "CONTRACT_TYPE") + if err != nil { return *new(string), err } @@ -360,6 +367,7 @@ func (_AddressBookMock *AddressBookMockCaller) CONTRACTTYPE(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // CONTRACTTYPE is a free data retrieval call binding the contract method 0x4b6a94cc. @@ -382,6 +390,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CONTRACTTYPE() (string, er func (_AddressBookMock *AddressBookMockCaller) KIRCONTRACTTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "KIR_CONTRACT_TYPE") + if err != nil { return *new(uint8), err } @@ -389,6 +398,7 @@ func (_AddressBookMock *AddressBookMockCaller) KIRCONTRACTTYPE(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // KIRCONTRACTTYPE is a free data retrieval call binding the contract method 0x41b6945c. @@ -411,6 +421,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) KIRCONTRACTTYPE() (uint8, func (_AddressBookMock *AddressBookMockCaller) MAXADMIN(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "MAX_ADMIN") + if err != nil { return *new(*big.Int), err } @@ -418,6 +429,7 @@ func (_AddressBookMock *AddressBookMockCaller) MAXADMIN(opts *bind.CallOpts) (*b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXADMIN is a free data retrieval call binding the contract method 0x58d65880. @@ -440,6 +452,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) MAXADMIN() (*big.Int, erro func (_AddressBookMock *AddressBookMockCaller) MAXPENDINGREQUEST(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "MAX_PENDING_REQUEST") + if err != nil { return *new(*big.Int), err } @@ -447,6 +460,7 @@ func (_AddressBookMock *AddressBookMockCaller) MAXPENDINGREQUEST(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // MAXPENDINGREQUEST is a free data retrieval call binding the contract method 0x778f39cb. @@ -469,6 +483,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) MAXPENDINGREQUEST() (*big. func (_AddressBookMock *AddressBookMockCaller) ONEWEEK(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "ONE_WEEK") + if err != nil { return *new(*big.Int), err } @@ -476,6 +491,7 @@ func (_AddressBookMock *AddressBookMockCaller) ONEWEEK(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // ONEWEEK is a free data retrieval call binding the contract method 0x8e6f6b77. @@ -498,6 +514,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) ONEWEEK() (*big.Int, error func (_AddressBookMock *AddressBookMockCaller) POCCONTRACTTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "POC_CONTRACT_TYPE") + if err != nil { return *new(uint8), err } @@ -505,6 +522,7 @@ func (_AddressBookMock *AddressBookMockCaller) POCCONTRACTTYPE(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // POCCONTRACTTYPE is a free data retrieval call binding the contract method 0xb50060e4. @@ -527,6 +545,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) POCCONTRACTTYPE() (uint8, func (_AddressBookMock *AddressBookMockCaller) TWOWEEKS(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "TWO_WEEKS") + if err != nil { return *new(*big.Int), err } @@ -534,6 +553,7 @@ func (_AddressBookMock *AddressBookMockCaller) TWOWEEKS(opts *bind.CallOpts) (*b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TWOWEEKS is a free data retrieval call binding the contract method 0x934d1fa4. @@ -556,6 +576,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) TWOWEEKS() (*big.Int, erro func (_AddressBookMock *AddressBookMockCaller) VERSION(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "VERSION") + if err != nil { return *new(*big.Int), err } @@ -563,6 +584,7 @@ func (_AddressBookMock *AddressBookMockCaller) VERSION(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // VERSION is a free data retrieval call binding the contract method 0xffa1ad74. @@ -585,6 +607,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) VERSION() (*big.Int, error func (_AddressBookMock *AddressBookMockCaller) AdminList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "adminList", arg0) + if err != nil { return *new(common.Address), err } @@ -592,6 +615,7 @@ func (_AddressBookMock *AddressBookMockCaller) AdminList(opts *bind.CallOpts, ar out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AdminList is a free data retrieval call binding the contract method 0x11117fc8. @@ -614,6 +638,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) AdminList(arg0 *big.Int) ( func (_AddressBookMock *AddressBookMockCaller) CnIndexMap(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "cnIndexMap", arg0) + if err != nil { return *new(*big.Int), err } @@ -621,6 +646,7 @@ func (_AddressBookMock *AddressBookMockCaller) CnIndexMap(opts *bind.CallOpts, a out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // CnIndexMap is a free data retrieval call binding the contract method 0xdd8bd2cc. @@ -643,6 +669,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CnIndexMap(arg0 common.Add func (_AddressBookMock *AddressBookMockCaller) CnNodeIdList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "cnNodeIdList", arg0) + if err != nil { return *new(common.Address), err } @@ -650,6 +677,7 @@ func (_AddressBookMock *AddressBookMockCaller) CnNodeIdList(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CnNodeIdList is a free data retrieval call binding the contract method 0x056eb492. @@ -672,6 +700,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CnNodeIdList(arg0 *big.Int func (_AddressBookMock *AddressBookMockCaller) CnRewardAddressList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "cnRewardAddressList", arg0) + if err != nil { return *new(common.Address), err } @@ -679,6 +708,7 @@ func (_AddressBookMock *AddressBookMockCaller) CnRewardAddressList(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CnRewardAddressList is a free data retrieval call binding the contract method 0x3a48ef97. @@ -701,6 +731,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CnRewardAddressList(arg0 * func (_AddressBookMock *AddressBookMockCaller) CnStakingContractList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "cnStakingContractList", arg0) + if err != nil { return *new(common.Address), err } @@ -708,6 +739,7 @@ func (_AddressBookMock *AddressBookMockCaller) CnStakingContractList(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // CnStakingContractList is a free data retrieval call binding the contract method 0xde38e29f. @@ -730,6 +762,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) CnStakingContractList(arg0 func (_AddressBookMock *AddressBookMockCaller) GetAllAddress(opts *bind.CallOpts) ([]uint8, []common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "getAllAddress") + if err != nil { return *new([]uint8), *new([]common.Address), err } @@ -738,6 +771,7 @@ func (_AddressBookMock *AddressBookMockCaller) GetAllAddress(opts *bind.CallOpts out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -760,6 +794,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) GetAllAddress() ([]uint8, func (_AddressBookMock *AddressBookMockCaller) GetAllAddressInfo(opts *bind.CallOpts) ([]common.Address, []common.Address, []common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "getAllAddressInfo") + if err != nil { return *new([]common.Address), *new([]common.Address), *new([]common.Address), *new(common.Address), *new(common.Address), err } @@ -771,6 +806,7 @@ func (_AddressBookMock *AddressBookMockCaller) GetAllAddressInfo(opts *bind.Call out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address) return out0, out1, out2, out3, out4, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -793,6 +829,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) GetAllAddressInfo() ([]com func (_AddressBookMock *AddressBookMockCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeId common.Address) (common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "getCnInfo", _cnNodeId) + if err != nil { return *new(common.Address), *new(common.Address), *new(common.Address), err } @@ -802,6 +839,7 @@ func (_AddressBookMock *AddressBookMockCaller) GetCnInfo(opts *bind.CallOpts, _c out2 := *abi.ConvertType(out[2], new(common.Address)).(*common.Address) return out0, out1, out2, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -824,6 +862,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) GetCnInfo(_cnNodeId common func (_AddressBookMock *AddressBookMockCaller) GetState(opts *bind.CallOpts) ([]common.Address, *big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "getState") + if err != nil { return *new([]common.Address), *new(*big.Int), err } @@ -832,6 +871,7 @@ func (_AddressBookMock *AddressBookMockCaller) GetState(opts *bind.CallOpts) ([] out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -854,6 +894,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) GetState() ([]common.Addre func (_AddressBookMock *AddressBookMockCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -861,6 +902,7 @@ func (_AddressBookMock *AddressBookMockCaller) IsActivated(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -883,6 +925,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) IsActivated() (bool, error func (_AddressBookMock *AddressBookMockCaller) IsConstructed(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "isConstructed") + if err != nil { return *new(bool), err } @@ -890,6 +933,7 @@ func (_AddressBookMock *AddressBookMockCaller) IsConstructed(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsConstructed is a free data retrieval call binding the contract method 0x50a5bb69. @@ -912,6 +956,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) IsConstructed() (bool, err func (_AddressBookMock *AddressBookMockCaller) KirContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "kirContractAddress") + if err != nil { return *new(common.Address), err } @@ -919,6 +964,7 @@ func (_AddressBookMock *AddressBookMockCaller) KirContractAddress(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // KirContractAddress is a free data retrieval call binding the contract method 0xb858dd95. @@ -941,6 +987,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) KirContractAddress() (comm func (_AddressBookMock *AddressBookMockCaller) PocContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "pocContractAddress") + if err != nil { return *new(common.Address), err } @@ -948,6 +995,7 @@ func (_AddressBookMock *AddressBookMockCaller) PocContractAddress(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PocContractAddress is a free data retrieval call binding the contract method 0xd267eda5. @@ -970,6 +1018,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) PocContractAddress() (comm func (_AddressBookMock *AddressBookMockCaller) Requirement(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "requirement") + if err != nil { return *new(*big.Int), err } @@ -977,6 +1026,7 @@ func (_AddressBookMock *AddressBookMockCaller) Requirement(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Requirement is a free data retrieval call binding the contract method 0xb7563930. @@ -999,6 +1049,7 @@ func (_AddressBookMock *AddressBookMockCallerSession) Requirement() (*big.Int, e func (_AddressBookMock *AddressBookMockCaller) SpareContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMock.contract.Call(opts, &out, "spareContractAddress") + if err != nil { return *new(common.Address), err } @@ -1006,6 +1057,7 @@ func (_AddressBookMock *AddressBookMockCaller) SpareContractAddress(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // SpareContractAddress is a free data retrieval call binding the contract method 0x6abd623d. @@ -1584,6 +1636,7 @@ type AddressBookMockReviseRewardAddress struct { // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_AddressBookMock *AddressBookMockFilterer) FilterReviseRewardAddress(opts *bind.FilterOpts) (*AddressBookMockReviseRewardAddressIterator, error) { + logs, sub, err := _AddressBookMock.contract.FilterLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -1595,6 +1648,7 @@ func (_AddressBookMock *AddressBookMockFilterer) FilterReviseRewardAddress(opts // // Solidity: event ReviseRewardAddress(address cnNodeId, address prevRewardAddress, address curRewardAddress) func (_AddressBookMock *AddressBookMockFilterer) WatchReviseRewardAddress(opts *bind.WatchOpts, sink chan<- *AddressBookMockReviseRewardAddress) (event.Subscription, error) { + logs, sub, err := _AddressBookMock.contract.WatchLogs(opts, "ReviseRewardAddress") if err != nil { return nil, err @@ -1635,6 +1689,7 @@ func (_AddressBookMock *AddressBookMockFilterer) ParseReviseRewardAddress(log ty if err := _AddressBookMock.contract.UnpackLog(event, "ReviseRewardAddress", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1658,8 +1713,8 @@ var AddressBookMockOneCNABI = AddressBookMockOneCNMetaData.ABI // AddressBookMockOneCNBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookMockOneCNBinRuntime = `60806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315575d5a81146100715780631865c57d146100d75780632afbeca61461014757806332e43a111461018557806371e0981b1461019a575b600080fd5b34801561007d57600080fd5b5061009f73ffffffffffffffffffffffffffffffffffffffff600435166101af565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156100e357600080fd5b506100ec6102c6565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561013257818101518382015260200161011a565b50505050905001935050505060405180910390f35b34801561015357600080fd5b5061015c610343565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019157600080fd5b5061015c61035b565b3480156101a657600080fd5b5061015c610360565b60008060006101bc610378565b506040805160208101909152733c44cdddb6a900fa2b585dd299e03d12fa4293bc815260005b6001811015610256578181600181106101f757fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561024e5781816001811061023b57fe5b60200201516000809450945094506102bd565b6001016101e2565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c696420434e206e6f64652049442e00000000000000000000000000604482015290519081900360640190fd5b50509193909250565b6040805160018082528183019092526060916000918391839190602080830190803883390190505091507370997970c51812dc3a010c7d01b50e0d17dc79c882600081518110151561031457fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152509150600190509091565b7370997970c51812dc3a010c7d01b50e0d17dc79c881565b600081565b733c44cdddb6a900fa2b585dd299e03d12fa4293bc81565b60206040519081016040528060019060208202803883395091929150505600a165627a7a72305820a9ccc131855b90b558f2eb74a7e43c99772b98d11f5b79639a5368bede772b1c0029` -// AddressBookMockOneCNFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMockOneCNMetaData.Sigs instead. +// AddressBookMockOneCNFuncSigs maps the 4-byte function signature to its string representation. var AddressBookMockOneCNFuncSigs = AddressBookMockOneCNMetaData.Sigs // AddressBookMockOneCNBin is the compiled bytecode used for deploying new contracts. @@ -1831,6 +1886,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNTransactorRaw) Transact(opts *b func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) AbookAdmin(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockOneCN.contract.Call(opts, &out, "abookAdmin") + if err != nil { return *new(common.Address), err } @@ -1838,6 +1894,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) AbookAdmin(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AbookAdmin is a free data retrieval call binding the contract method 0x2afbeca6. @@ -1860,6 +1917,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCallerSession) AbookAdmin() (co func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) Cn0(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockOneCN.contract.Call(opts, &out, "cn0") + if err != nil { return *new(common.Address), err } @@ -1867,6 +1925,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) Cn0(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Cn0 is a free data retrieval call binding the contract method 0x71e0981b. @@ -1889,6 +1948,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCallerSession) Cn0() (common.Ad func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) Dummy(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockOneCN.contract.Call(opts, &out, "dummy") + if err != nil { return *new(common.Address), err } @@ -1896,6 +1956,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) Dummy(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Dummy is a free data retrieval call binding the contract method 0x32e43a11. @@ -1918,6 +1979,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCallerSession) Dummy() (common. func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeId common.Address) (common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBookMockOneCN.contract.Call(opts, &out, "getCnInfo", _cnNodeId) + if err != nil { return *new(common.Address), *new(common.Address), *new(common.Address), err } @@ -1927,6 +1989,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) GetCnInfo(opts *bind.Ca out2 := *abi.ConvertType(out[2], new(common.Address)).(*common.Address) return out0, out1, out2, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -1949,6 +2012,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCallerSession) GetCnInfo(_cnNod func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) GetState(opts *bind.CallOpts) ([]common.Address, *big.Int, error) { var out []interface{} err := _AddressBookMockOneCN.contract.Call(opts, &out, "getState") + if err != nil { return *new([]common.Address), *new(*big.Int), err } @@ -1957,6 +2021,7 @@ func (_AddressBookMockOneCN *AddressBookMockOneCNCaller) GetState(opts *bind.Cal out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -1995,8 +2060,8 @@ var AddressBookMockThreeCNABI = AddressBookMockThreeCNMetaData.ABI // AddressBookMockThreeCNBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookMockThreeCNBinRuntime = `6080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166315575d5a81146100875780631865c57d146100ed5780632afbeca61461015d57806332e43a111461019b57806371e0981b146101b0578063c1a7bbad146101c5578063c8f5b08b146101da575b600080fd5b34801561009357600080fd5b506100b573ffffffffffffffffffffffffffffffffffffffff600435166101ef565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156100f957600080fd5b5061010261033b565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610148578181015183820152602001610130565b50505050905001935050505060405180910390f35b34801561016957600080fd5b506101726103b8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a757600080fd5b506101726103d0565b3480156101bc57600080fd5b506101726103d5565b3480156101d157600080fd5b506101726103ed565b3480156101e657600080fd5b50610172610405565b60008060006101fc61041d565b5060408051606081018252733c44cdddb6a900fa2b585dd299e03d12fa4293bc81527390f79bf6eb2c4f870365e785982e1f101e93b90660208201527315d34aaf54267db7d7c367839aaf71a00a2c6a659181019190915260005b60038110156102cb5781816003811061026c57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156102c3578181600381106102b057fe5b6020020151600080945094509450610332565b600101610257565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c696420434e206e6f64652049442e00000000000000000000000000604482015290519081900360640190fd5b50509193909250565b6040805160018082528183019092526060916000918391839190602080830190803883390190505091507370997970c51812dc3a010c7d01b50e0d17dc79c882600081518110151561038957fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152509150600190509091565b7370997970c51812dc3a010c7d01b50e0d17dc79c881565b600081565b733c44cdddb6a900fa2b585dd299e03d12fa4293bc81565b7390f79bf6eb2c4f870365e785982e1f101e93b90681565b7315d34aaf54267db7d7c367839aaf71a00a2c6a6581565b60606040519081016040528060039060208202803883395091929150505600a165627a7a7230582064ac7c7d5b8b9be20d1929fc500d873f430855eb4f2e154f8d7a3268041004f00029` -// AddressBookMockThreeCNFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMockThreeCNMetaData.Sigs instead. +// AddressBookMockThreeCNFuncSigs maps the 4-byte function signature to its string representation. var AddressBookMockThreeCNFuncSigs = AddressBookMockThreeCNMetaData.Sigs // AddressBookMockThreeCNBin is the compiled bytecode used for deploying new contracts. @@ -2168,6 +2233,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNTransactorRaw) Transact(opt func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) AbookAdmin(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "abookAdmin") + if err != nil { return *new(common.Address), err } @@ -2175,6 +2241,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) AbookAdmin(opts *bi out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AbookAdmin is a free data retrieval call binding the contract method 0x2afbeca6. @@ -2197,6 +2264,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) AbookAdmin() func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn0(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "cn0") + if err != nil { return *new(common.Address), err } @@ -2204,6 +2272,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn0(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Cn0 is a free data retrieval call binding the contract method 0x71e0981b. @@ -2226,6 +2295,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) Cn0() (commo func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn1(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "cn1") + if err != nil { return *new(common.Address), err } @@ -2233,6 +2303,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn1(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Cn1 is a free data retrieval call binding the contract method 0xc1a7bbad. @@ -2255,6 +2326,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) Cn1() (commo func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn2(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "cn2") + if err != nil { return *new(common.Address), err } @@ -2262,6 +2334,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Cn2(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Cn2 is a free data retrieval call binding the contract method 0xc8f5b08b. @@ -2284,6 +2357,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) Cn2() (commo func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Dummy(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "dummy") + if err != nil { return *new(common.Address), err } @@ -2291,6 +2365,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) Dummy(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Dummy is a free data retrieval call binding the contract method 0x32e43a11. @@ -2313,6 +2388,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) Dummy() (com func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeId common.Address) (common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "getCnInfo", _cnNodeId) + if err != nil { return *new(common.Address), *new(common.Address), *new(common.Address), err } @@ -2322,6 +2398,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) GetCnInfo(opts *bin out2 := *abi.ConvertType(out[2], new(common.Address)).(*common.Address) return out0, out1, out2, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -2344,6 +2421,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCallerSession) GetCnInfo(_c func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) GetState(opts *bind.CallOpts) ([]common.Address, *big.Int, error) { var out []interface{} err := _AddressBookMockThreeCN.contract.Call(opts, &out, "getState") + if err != nil { return *new([]common.Address), *new(*big.Int), err } @@ -2352,6 +2430,7 @@ func (_AddressBookMockThreeCN *AddressBookMockThreeCNCaller) GetState(opts *bind out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -2387,8 +2466,8 @@ var AddressBookMockTwoCNABI = AddressBookMockTwoCNMetaData.ABI // AddressBookMockTwoCNBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookMockTwoCNBinRuntime = `6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f0b04908114610066578063715b208b14610097578063dd94705614610145578063f506b1621461015a575b600080fd5b34801561007257600080fd5b5061007b61016f565b60408051600160a060020a039092168252519081900360200190f35b3480156100a357600080fd5b506100ac610175565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f05781810151838201526020016100d8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561012f578181015183820152602001610117565b5050505090500194505050505060405180910390f35b34801561015157600080fd5b5061007b610429565b34801561016657600080fd5b5061007b61042f565b610f0681565b60408051600880825261012082019092526060918291906020820161010080388339505060408051600880825261012082019092529294509050602082016101008038833901905050905060008260008151811015156101d157fe5b60ff90921660209283029091019091015281516001908390829081106101f357fe5b60ff909216602092830290910190910152815160029083908290811061021557fe5b60ff90921660209283029091019091015281516000908390600390811061023857fe5b60ff90921660209283029091019091015281516001908390600490811061025b57fe5b60ff90921660209283029091019091015281516002908390600590811061027e57fe5b60ff9092166020928302909101909101528151600390839060069081106102a157fe5b60ff9092166020928302909101909101528151600490839060079081106102c457fe5b60ff9092166020928302909101909101528051610f0090829060009081106102e857fe5b600160a060020a039092166020928302909101909101528051610f01908290600190811061031257fe5b600160a060020a039092166020928302909101909101528051610f02908290600290811061033c57fe5b600160a060020a039092166020928302909101909101528051610f03908290600390811061036657fe5b600160a060020a039092166020928302909101909101528051610f04908290600490811061039057fe5b600160a060020a039092166020928302909101909101528051610f0590829060059081106103ba57fe5b600160a060020a039092166020928302909101909101528051610f0690829060069081106103e457fe5b600160a060020a039092166020928302909101909101528051610f07908290600790811061040e57fe5b600160a060020a039092166020928302909101909101529091565b610f0381565b610f00815600a165627a7a72305820df668720dc3b4b9d05259a32abcfec6e396a49908b6bc1f73f61c9d696a193640029` -// AddressBookMockTwoCNFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMockTwoCNMetaData.Sigs instead. +// AddressBookMockTwoCNFuncSigs maps the 4-byte function signature to its string representation. var AddressBookMockTwoCNFuncSigs = AddressBookMockTwoCNMetaData.Sigs // AddressBookMockTwoCNBin is the compiled bytecode used for deploying new contracts. @@ -2560,8 +2639,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNTransactorRaw) Transact(opts *b func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) GetAllAddress(opts *bind.CallOpts) (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { var out []interface{} err := _AddressBookMockTwoCN.contract.Call(opts, &out, "getAllAddress") @@ -2569,10 +2647,15 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) GetAllAddress(opts *bin TypeList []uint8 AddressList []common.Address }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + return *outstruct, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -2581,8 +2664,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) GetAllAddress(opts *bin func (_AddressBookMockTwoCN *AddressBookMockTwoCNSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _AddressBookMockTwoCN.Contract.GetAllAddress(&_AddressBookMockTwoCN.CallOpts) } @@ -2592,8 +2674,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNSession) GetAllAddress() (struc func (_AddressBookMockTwoCN *AddressBookMockTwoCNCallerSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _AddressBookMockTwoCN.Contract.GetAllAddress(&_AddressBookMockTwoCN.CallOpts) } @@ -2603,6 +2684,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCallerSession) GetAllAddress() func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId0(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockTwoCN.contract.Call(opts, &out, "nodeId0") + if err != nil { return *new(common.Address), err } @@ -2610,6 +2692,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId0(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId0 is a free data retrieval call binding the contract method 0xf506b162. @@ -2632,6 +2715,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCallerSession) NodeId0() (commo func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId1(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockTwoCN.contract.Call(opts, &out, "nodeId1") + if err != nil { return *new(common.Address), err } @@ -2639,6 +2723,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId1(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId1 is a free data retrieval call binding the contract method 0xdd947056. @@ -2661,6 +2746,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCallerSession) NodeId1() (commo func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId2(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _AddressBookMockTwoCN.contract.Call(opts, &out, "nodeId2") + if err != nil { return *new(common.Address), err } @@ -2668,6 +2754,7 @@ func (_AddressBookMockTwoCN *AddressBookMockTwoCNCaller) NodeId2(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId2 is a free data retrieval call binding the contract method 0x2f0b0490. @@ -2700,8 +2787,8 @@ var AddressBookMockWrongABI = AddressBookMockWrongMetaData.ABI // AddressBookMockWrongBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const AddressBookMockWrongBinRuntime = `6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663160370b88114610045575b600080fd5b34801561005157600080fd5b5061005a61015c565b6040805173ffffffffffffffffffffffffffffffffffffffff80851660608301528316608082015260a080825287519082015286519091829160208084019284019160c08501918b8101910280838360005b838110156100c45781810151838201526020016100ac565b50505050905001848103835288818151815260200191508051906020019060200280838360005b838110156101035781810151838201526020016100eb565b50505050905001848103825287818151815260200191508051906020019060200280838360005b8381101561014257818101518382015260200161012a565b505050509050019850505050505050505060405180910390f35b604080516002808252606082810190935282918291600091829181602001602082028038833950506040805160038082526080820190925291506020820160608038833950506040805160018082528183019092529150602080830190803883395093999298509096506000955085945090925050505600a165627a7a723058202c162a2f5b32be8e6f1f1c09c194655bcd130371d6862a03bf7fcf0516cb81070029` -// AddressBookMockWrongFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use AddressBookMockWrongMetaData.Sigs instead. +// AddressBookMockWrongFuncSigs maps the 4-byte function signature to its string representation. var AddressBookMockWrongFuncSigs = AddressBookMockWrongMetaData.Sigs // AddressBookMockWrongBin is the compiled bytecode used for deploying new contracts. @@ -2873,6 +2960,7 @@ func (_AddressBookMockWrong *AddressBookMockWrongTransactorRaw) Transact(opts *b func (_AddressBookMockWrong *AddressBookMockWrongCaller) GetAllAddressInfo(opts *bind.CallOpts) ([]common.Address, []common.Address, []common.Address, common.Address, common.Address, error) { var out []interface{} err := _AddressBookMockWrong.contract.Call(opts, &out, "getAllAddressInfo") + if err != nil { return *new([]common.Address), *new([]common.Address), *new([]common.Address), *new(common.Address), *new(common.Address), err } @@ -2884,6 +2972,7 @@ func (_AddressBookMockWrong *AddressBookMockWrongCaller) GetAllAddressInfo(opts out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address) return out0, out1, out2, out3, out4, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -2919,8 +3008,8 @@ var CLRegistryMockThreeCLABI = CLRegistryMockThreeCLMetaData.ABI // CLRegistryMockThreeCLBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const CLRegistryMockThreeCLBinRuntime = `6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f0b0490811461006657806390599c0714610097578063dd947056146101cf578063f506b162146101e4575b600080fd5b34801561007257600080fd5b5061007b6101f9565b60408051600160a060020a039092168252519081900360200190f35b3480156100a357600080fd5b506100ac6101ff565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b838110156100f85781810151838201526020016100e0565b50505050905001858103845288818151815260200191508051906020019060200280838360005b8381101561013757818101518382015260200161011f565b50505050905001858103835287818151815260200191508051906020019060200280838360005b8381101561017657818101518382015260200161015e565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156101b557818101518382015260200161019d565b505050509050019850505050505050505060405180910390f35b3480156101db57600080fd5b5061007b610479565b3480156101f057600080fd5b5061007b61047f565b610f0681565b6060806060806060806060806003604051908082528060200260200182016040528015610236578160200160208202803883390190505b506040805160038082526080820190925291955060208201606080388339505060408051600380825260808201909252929550905060208201606080388339505060408051600380825260808201909252929450905060208201606080388339019050509050610f008460008151811015156102ae57fe5b600160a060020a039092166020928302909101909101528351610f0390859060019081106102d857fe5b600160a060020a039092166020928302909101909101528351610f06908590600290811061030257fe5b600160a060020a0390921660209283029091019091015282516001908490600090811061032b57fe5b6020908102909101015282516002908490600190811061034757fe5b6020908102909101015282516003908490600290811061036357fe5b602090810290910101528151610e00908390600090811061038057fe5b600160a060020a039092166020928302909101909101528151610e0190839060019081106103aa57fe5b600160a060020a039092166020928302909101909101528151610e0290839060029081106103d457fe5b600160a060020a039092166020928302909101909101528051610e0390829060009081106103fe57fe5b600160a060020a039092166020928302909101909101528051610e04908290600190811061042857fe5b600160a060020a039092166020928302909101909101528051610e05908290600290811061045257fe5b600160a060020a039092166020928302909101909101529296509094509250905090919293565b610f0381565b610f00815600a165627a7a72305820b4fc033794f4dfbb7dd8578cf511c6c76b8c0f82a94e564e286b1713029304c50029` -// CLRegistryMockThreeCLFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use CLRegistryMockThreeCLMetaData.Sigs instead. +// CLRegistryMockThreeCLFuncSigs maps the 4-byte function signature to its string representation. var CLRegistryMockThreeCLFuncSigs = CLRegistryMockThreeCLMetaData.Sigs // CLRegistryMockThreeCLBin is the compiled bytecode used for deploying new contracts. @@ -3092,6 +3181,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLTransactorRaw) Transact(opts func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) GetAllCLs(opts *bind.CallOpts) ([]common.Address, []*big.Int, []common.Address, []common.Address, error) { var out []interface{} err := _CLRegistryMockThreeCL.contract.Call(opts, &out, "getAllCLs") + if err != nil { return *new([]common.Address), *new([]*big.Int), *new([]common.Address), *new([]common.Address), err } @@ -3102,6 +3192,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) GetAllCLs(opts *bind. out3 := *abi.ConvertType(out[3], new([]common.Address)).(*[]common.Address) return out0, out1, out2, out3, err + } // GetAllCLs is a free data retrieval call binding the contract method 0x90599c07. @@ -3124,6 +3215,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCallerSession) GetAllCLs() ([ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId0(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CLRegistryMockThreeCL.contract.Call(opts, &out, "nodeId0") + if err != nil { return *new(common.Address), err } @@ -3131,6 +3223,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId0(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId0 is a free data retrieval call binding the contract method 0xf506b162. @@ -3153,6 +3246,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCallerSession) NodeId0() (com func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId1(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CLRegistryMockThreeCL.contract.Call(opts, &out, "nodeId1") + if err != nil { return *new(common.Address), err } @@ -3160,6 +3254,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId1(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId1 is a free data retrieval call binding the contract method 0xdd947056. @@ -3182,6 +3277,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCallerSession) NodeId1() (com func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId2(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _CLRegistryMockThreeCL.contract.Call(opts, &out, "nodeId2") + if err != nil { return *new(common.Address), err } @@ -3189,6 +3285,7 @@ func (_CLRegistryMockThreeCL *CLRegistryMockThreeCLCaller) NodeId2(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId2 is a free data retrieval call binding the contract method 0x2f0b0490. @@ -3224,8 +3321,8 @@ var KlaytnRewardABI = KlaytnRewardMetaData.ABI // KlaytnRewardBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const KlaytnRewardBinRuntime = `6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a723058205a4e86a44d9eadfa6949dafd3ba0eebc0b24d58525f0469a3290dff1609a0c010029` -// KlaytnRewardFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use KlaytnRewardMetaData.Sigs instead. +// KlaytnRewardFuncSigs maps the 4-byte function signature to its string representation. var KlaytnRewardFuncSigs = KlaytnRewardMetaData.Sigs // KlaytnRewardBin is the compiled bytecode used for deploying new contracts. @@ -3397,6 +3494,7 @@ func (_KlaytnReward *KlaytnRewardTransactorRaw) Transact(opts *bind.TransactOpts func (_KlaytnReward *KlaytnRewardCaller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _KlaytnReward.contract.Call(opts, &out, "balanceOf", arg0) + if err != nil { return *new(*big.Int), err } @@ -3404,6 +3502,7 @@ func (_KlaytnReward *KlaytnRewardCaller) BalanceOf(opts *bind.CallOpts, arg0 com out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -3426,6 +3525,7 @@ func (_KlaytnReward *KlaytnRewardCallerSession) BalanceOf(arg0 common.Address) ( func (_KlaytnReward *KlaytnRewardCaller) TotalAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _KlaytnReward.contract.Call(opts, &out, "totalAmount") + if err != nil { return *new(*big.Int), err } @@ -3433,6 +3533,7 @@ func (_KlaytnReward *KlaytnRewardCaller) TotalAmount(opts *bind.CallOpts) (*big. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalAmount is a free data retrieval call binding the contract method 0x1a39d8ef. @@ -3530,8 +3631,8 @@ var MockValuesABI = MockValuesMetaData.ABI // MockValuesBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MockValuesBinRuntime = `60806040526004361060525763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f0b049081146057578063dd947056146092578063f506b1621460a4575b600080fd5b348015606257600080fd5b50606960b6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b348015609d57600080fd5b50606960bc565b34801560af57600080fd5b50606960c2565b610f0681565b610f0381565b610f00815600a165627a7a72305820c985384d8d4bb3a837cf6cd9960a592a116da72b4875e33a7089bb8f60b9ed620029` -// MockValuesFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MockValuesMetaData.Sigs instead. +// MockValuesFuncSigs maps the 4-byte function signature to its string representation. var MockValuesFuncSigs = MockValuesMetaData.Sigs // MockValuesBin is the compiled bytecode used for deploying new contracts. @@ -3703,6 +3804,7 @@ func (_MockValues *MockValuesTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MockValues *MockValuesCaller) NodeId0(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _MockValues.contract.Call(opts, &out, "nodeId0") + if err != nil { return *new(common.Address), err } @@ -3710,6 +3812,7 @@ func (_MockValues *MockValuesCaller) NodeId0(opts *bind.CallOpts) (common.Addres out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId0 is a free data retrieval call binding the contract method 0xf506b162. @@ -3732,6 +3835,7 @@ func (_MockValues *MockValuesCallerSession) NodeId0() (common.Address, error) { func (_MockValues *MockValuesCaller) NodeId1(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _MockValues.contract.Call(opts, &out, "nodeId1") + if err != nil { return *new(common.Address), err } @@ -3739,6 +3843,7 @@ func (_MockValues *MockValuesCaller) NodeId1(opts *bind.CallOpts) (common.Addres out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId1 is a free data retrieval call binding the contract method 0xdd947056. @@ -3761,6 +3866,7 @@ func (_MockValues *MockValuesCallerSession) NodeId1() (common.Address, error) { func (_MockValues *MockValuesCaller) NodeId2(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _MockValues.contract.Call(opts, &out, "nodeId2") + if err != nil { return *new(common.Address), err } @@ -3768,6 +3874,7 @@ func (_MockValues *MockValuesCaller) NodeId2(opts *bind.CallOpts) (common.Addres out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // NodeId2 is a free data retrieval call binding the contract method 0x2f0b0490. @@ -3800,8 +3907,8 @@ var RegistryMockForCLABI = RegistryMockForCLMetaData.ABI // RegistryMockForCLBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const RegistryMockForCLBinRuntime = `6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663e2693e3f8114610045575b600080fd5b34801561005157600080fd5b50610065600480356024810191013561008e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b604080517f434c5265676973747279000000000000000000000000000000000000000000008152905190819003600a018120600091610ff091610ff191869086908083838082843782019150509250505060405180910390206000191614156100f95781925061015f565b604080517f577261707065644b6169610000000000000000000000000000000000000000008152905190819003600b018120908690869080838380828437820191505092505050604051809103902060001916141561015a5780925061015f565b600092505b5050929150505600a165627a7a723058200dc7218ef607556fb71e9d7fc0ca57e1474b7cf687221b8b6f5fa58ccf160f460029` -// RegistryMockForCLFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use RegistryMockForCLMetaData.Sigs instead. +// RegistryMockForCLFuncSigs maps the 4-byte function signature to its string representation. var RegistryMockForCLFuncSigs = RegistryMockForCLMetaData.Sigs // RegistryMockForCLBin is the compiled bytecode used for deploying new contracts. @@ -3973,6 +4080,7 @@ func (_RegistryMockForCL *RegistryMockForCLTransactorRaw) Transact(opts *bind.Tr func (_RegistryMockForCL *RegistryMockForCLCaller) GetActiveAddr(opts *bind.CallOpts, name string) (common.Address, error) { var out []interface{} err := _RegistryMockForCL.contract.Call(opts, &out, "getActiveAddr", name) + if err != nil { return *new(common.Address), err } @@ -3980,6 +4088,7 @@ func (_RegistryMockForCL *RegistryMockForCLCaller) GetActiveAddr(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetActiveAddr is a free data retrieval call binding the contract method 0xe2693e3f. @@ -4012,8 +4121,8 @@ var RegistryMockZeroABI = RegistryMockZeroMetaData.ABI // RegistryMockZeroBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const RegistryMockZeroBinRuntime = `608060405260043610603e5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663e2693e3f81146043575b600080fd5b348015604e57600080fd5b50606060048035602481019101356089565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6000929150505600a165627a7a723058203aa5a025bbdb445063a44e802dfb6294aa4c066a8b1464d0c6002668335f15190029` -// RegistryMockZeroFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use RegistryMockZeroMetaData.Sigs instead. +// RegistryMockZeroFuncSigs maps the 4-byte function signature to its string representation. var RegistryMockZeroFuncSigs = RegistryMockZeroMetaData.Sigs // RegistryMockZeroBin is the compiled bytecode used for deploying new contracts. @@ -4185,6 +4294,7 @@ func (_RegistryMockZero *RegistryMockZeroTransactorRaw) Transact(opts *bind.Tran func (_RegistryMockZero *RegistryMockZeroCaller) GetActiveAddr(opts *bind.CallOpts, name string) (common.Address, error) { var out []interface{} err := _RegistryMockZero.contract.Call(opts, &out, "getActiveAddr", name) + if err != nil { return *new(common.Address), err } @@ -4192,6 +4302,7 @@ func (_RegistryMockZero *RegistryMockZeroCaller) GetActiveAddr(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetActiveAddr is a free data retrieval call binding the contract method 0xe2693e3f. @@ -4224,8 +4335,8 @@ var WrappedKaiaMockABI = WrappedKaiaMockMetaData.ABI // WrappedKaiaMockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const WrappedKaiaMockBinRuntime = `608060405260043610603e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166370a0823181146043575b600080fd5b348015604e57600080fd5b50606e73ffffffffffffffffffffffffffffffffffffffff600435166080565b60408051918252519081900360200190f35b73ffffffffffffffffffffffffffffffffffffffff1631905600a165627a7a7230582042af2b142d5dd61c33d829500168e3f616297cc99ed51973df4a4d54f10561260029` -// WrappedKaiaMockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use WrappedKaiaMockMetaData.Sigs instead. +// WrappedKaiaMockFuncSigs maps the 4-byte function signature to its string representation. var WrappedKaiaMockFuncSigs = WrappedKaiaMockMetaData.Sigs // WrappedKaiaMockBin is the compiled bytecode used for deploying new contracts. @@ -4397,6 +4508,7 @@ func (_WrappedKaiaMock *WrappedKaiaMockTransactorRaw) Transact(opts *bind.Transa func (_WrappedKaiaMock *WrappedKaiaMockCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _WrappedKaiaMock.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -4404,6 +4516,7 @@ func (_WrappedKaiaMock *WrappedKaiaMockCaller) BalanceOf(opts *bind.CallOpts, ac out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. diff --git a/contracts/contracts/testing/sc_erc20/sc_token.go b/contracts/contracts/testing/sc_erc20/sc_token.go index 57b3f5f92..9a1a54fd5 100644 --- a/contracts/contracts/testing/sc_erc20/sc_token.go +++ b/contracts/contracts/testing/sc_erc20/sc_token.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package sctoken +package sc_erc20 import ( "errors" @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029", } // AddressABI is the input ABI used to generate the binding from. @@ -40,7 +40,7 @@ var AddressMetaData = &bind.MetaData{ var AddressABI = AddressMetaData.ABI // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029` +const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029` // AddressBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use AddressMetaData.Bin instead. @@ -218,7 +218,7 @@ var ERC20MetaData = &bind.MetaData{ "a9059cbb": "transfer(address,uint256)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029", + Bin: "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820746e081a090af1d3bc4707ca2eb3e72598dc62066ed3600a0088684c232e3dcc0029", } // ERC20ABI is the input ABI used to generate the binding from. @@ -226,10 +226,10 @@ var ERC20MetaData = &bind.MetaData{ var ERC20ABI = ERC20MetaData.ABI // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029` +const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820746e081a090af1d3bc4707ca2eb3e72598dc62066ed3600a0088684c232e3dcc0029` -// ERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20MetaData.Sigs instead. +// ERC20FuncSigs maps the 4-byte function signature to its string representation. var ERC20FuncSigs = ERC20MetaData.Sigs // ERC20Bin is the compiled bytecode used for deploying new contracts. @@ -401,6 +401,7 @@ func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method strin func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -408,6 +409,7 @@ func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -430,6 +432,7 @@ func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -437,6 +440,7 @@ func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -459,6 +463,7 @@ func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, e func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -466,6 +471,7 @@ func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -666,6 +672,7 @@ type ERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -686,6 +693,7 @@ func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []commo // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -735,6 +743,7 @@ func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -817,6 +826,7 @@ type ERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -837,6 +847,7 @@ func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -886,6 +897,7 @@ func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -904,7 +916,7 @@ var ERC20BurnableMetaData = &bind.MetaData{ "a9059cbb": "transfer(address,uint256)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029", + Bin: "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cbed5e162690632b84d9f5fc48a461561ec9d0a542c8cae309a5e9946d21828e0029", } // ERC20BurnableABI is the input ABI used to generate the binding from. @@ -912,10 +924,10 @@ var ERC20BurnableMetaData = &bind.MetaData{ var ERC20BurnableABI = ERC20BurnableMetaData.ABI // ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029` +const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cbed5e162690632b84d9f5fc48a461561ec9d0a542c8cae309a5e9946d21828e0029` -// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20BurnableMetaData.Sigs instead. +// ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation. var ERC20BurnableFuncSigs = ERC20BurnableMetaData.Sigs // ERC20BurnableBin is the compiled bytecode used for deploying new contracts. @@ -1087,6 +1099,7 @@ func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOp func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -1094,6 +1107,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -1116,6 +1130,7 @@ func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -1123,6 +1138,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, accoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -1145,6 +1161,7 @@ func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Addre func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -1152,6 +1169,7 @@ func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -1394,6 +1412,7 @@ type ERC20BurnableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1414,6 +1433,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpt // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1463,6 +1483,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC2 if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1545,6 +1566,7 @@ type ERC20BurnableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1565,6 +1587,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpt // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1614,6 +1637,7 @@ func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC2 if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1634,7 +1658,7 @@ var ERC20MintableMetaData = &bind.MetaData{ "a9059cbb": "transfer(address,uint256)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + Bin: "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820a92b4252e4e19cc559eef0c2a7e8667316b7c41692b585d93055461522689e9f0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", } // ERC20MintableABI is the input ABI used to generate the binding from. @@ -1642,10 +1666,10 @@ var ERC20MintableMetaData = &bind.MetaData{ var ERC20MintableABI = ERC20MintableMetaData.ABI // ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029` +const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820a92b4252e4e19cc559eef0c2a7e8667316b7c41692b585d93055461522689e9f0029` -// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20MintableMetaData.Sigs instead. +// ERC20MintableFuncSigs maps the 4-byte function signature to its string representation. var ERC20MintableFuncSigs = ERC20MintableMetaData.Sigs // ERC20MintableBin is the compiled bytecode used for deploying new contracts. @@ -1817,6 +1841,7 @@ func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOp func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -1824,6 +1849,7 @@ func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -1846,6 +1872,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -1853,6 +1880,7 @@ func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, accoun out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -1875,6 +1903,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Addre func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -1882,6 +1911,7 @@ func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -1904,6 +1934,7 @@ func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Addres func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20Mintable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -1911,6 +1942,7 @@ func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -2174,6 +2206,7 @@ type ERC20MintableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2194,6 +2227,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpt // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2243,6 +2277,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC2 if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2323,6 +2358,7 @@ type ERC20MintableMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -2339,6 +2375,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.Filter // // Solidity: event MinterAdded(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -2384,6 +2421,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*E if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2464,6 +2502,7 @@ type ERC20MintableMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -2480,6 +2519,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.Filt // // Solidity: event MinterRemoved(address indexed account) func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -2525,6 +2565,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) ( if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2607,6 +2648,7 @@ type ERC20MintableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2627,6 +2669,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpt // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2676,6 +2719,7 @@ func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC2 if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2708,8 +2752,8 @@ var ERC20ServiceChainABI = ERC20ServiceChainMetaData.ABI // ERC20ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC20ServiceChainBinRuntime = `` -// ERC20ServiceChainFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC20ServiceChainMetaData.Sigs instead. +// ERC20ServiceChainFuncSigs maps the 4-byte function signature to its string representation. var ERC20ServiceChainFuncSigs = ERC20ServiceChainMetaData.Sigs // ERC20ServiceChain is an auto generated Go binding around a Kaia contract. @@ -2860,6 +2904,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainTransactorRaw) Transact(opts *bind.Tr func (_ERC20ServiceChain *ERC20ServiceChainCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -2867,6 +2912,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) Allowance(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -2889,6 +2935,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Allowance(owner common func (_ERC20ServiceChain *ERC20ServiceChainCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -2896,6 +2943,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) BalanceOf(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -2918,6 +2966,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) BalanceOf(account comm func (_ERC20ServiceChain *ERC20ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -2925,6 +2974,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) Bridge(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -2947,6 +2997,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Bridge() (common.Addre func (_ERC20ServiceChain *ERC20ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -2954,6 +3005,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) IsOwner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -2976,6 +3028,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) IsOwner() (bool, error func (_ERC20ServiceChain *ERC20ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -2983,6 +3036,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -3005,6 +3059,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Owner() (common.Addres func (_ERC20ServiceChain *ERC20ServiceChainCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC20ServiceChain.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -3012,6 +3067,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainCaller) TotalSupply(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -3296,6 +3352,7 @@ type ERC20ServiceChainApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ServiceChainApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3316,6 +3373,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterApproval(opts *bind.F // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3365,6 +3423,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseApproval(log types.Log if err := _ERC20ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3446,6 +3505,7 @@ type ERC20ServiceChainOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC20ServiceChainOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -3466,6 +3526,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -3515,6 +3576,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseOwnershipTransferred(l if err := _ERC20ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3597,6 +3659,7 @@ type ERC20ServiceChainTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20ServiceChainTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3617,6 +3680,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterTransfer(opts *bind.F // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3666,6 +3730,7 @@ func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseTransfer(log types.Log if err := _ERC20ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3689,8 +3754,8 @@ var IERC20ABI = IERC20MetaData.ABI // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BinRuntime = `` -// IERC20FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20MetaData.Sigs instead. +// IERC20FuncSigs maps the 4-byte function signature to its string representation. var IERC20FuncSigs = IERC20MetaData.Sigs // IERC20 is an auto generated Go binding around a Kaia contract. @@ -3841,6 +3906,7 @@ func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -3848,6 +3914,7 @@ func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -3870,6 +3937,7 @@ func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender comm func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -3877,6 +3945,7 @@ func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -3899,6 +3968,7 @@ func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC20.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -3906,6 +3976,7 @@ func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -4064,6 +4135,7 @@ type IERC20Approval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4084,6 +4156,7 @@ func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4133,6 +4206,7 @@ func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, er if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4215,6 +4289,7 @@ type IERC20Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4235,6 +4310,7 @@ func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4284,6 +4360,7 @@ func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, er if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4302,8 +4379,8 @@ var IERC20BridgeReceiverABI = IERC20BridgeReceiverMetaData.ABI // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC20BridgeReceiverBinRuntime = `` -// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC20BridgeReceiverMetaData.Sigs instead. +// IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC20BridgeReceiverFuncSigs = IERC20BridgeReceiverMetaData.Sigs // IERC20BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -4486,8 +4563,8 @@ var MinterRoleABI = MinterRoleMetaData.ABI // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MinterRoleBinRuntime = `` -// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MinterRoleMetaData.Sigs instead. +// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. var MinterRoleFuncSigs = MinterRoleMetaData.Sigs // MinterRole is an auto generated Go binding around a Kaia contract. @@ -4638,6 +4715,7 @@ func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _MinterRole.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -4645,6 +4723,7 @@ func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -4780,6 +4859,7 @@ type MinterRoleMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -4796,6 +4876,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -4841,6 +4922,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterR if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4921,6 +5003,7 @@ type MinterRoleMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -4937,6 +5020,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -4982,6 +5066,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*Minte if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5003,8 +5088,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -5155,6 +5240,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -5162,6 +5248,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -5184,6 +5271,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -5191,6 +5279,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -5327,6 +5416,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -5347,6 +5437,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -5396,13 +5487,14 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } // RolesMetaData contains all meta data concerning the Roles contract. var RolesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029", } // RolesABI is the input ABI used to generate the binding from. @@ -5410,7 +5502,7 @@ var RolesMetaData = &bind.MetaData{ var RolesABI = RolesMetaData.ABI // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029` +const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029` // RolesBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use RolesMetaData.Bin instead. @@ -5578,7 +5670,7 @@ func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method strin // SafeMathMetaData contains all meta data concerning the SafeMath contract. var SafeMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029", } // SafeMathABI is the input ABI used to generate the binding from. @@ -5586,7 +5678,7 @@ var SafeMathMetaData = &bind.MetaData{ var SafeMathABI = SafeMathMetaData.ABI // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029` +const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029` // SafeMathBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use SafeMathMetaData.Bin instead. @@ -5781,7 +5873,7 @@ var ServiceChainTokenMetaData = &bind.MetaData{ "23b872dd": "transferFrom(address,address,uint256)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b50604051602080620019c6833981018060405260208110156200003357600080fd5b5051806200004833620000cc602090811b901c565b600480546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000a5816200011e60201b60201c565b50620000c5336b033b2e3c9fd0803ce800000062000247602090811b901c565b506200051c565b620000e78160036200036260201b620011f11790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200012e6200040660201b60201c565b6200019a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620001b9816001600160a01b03166200041760201b6200104d1760201c565b6200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216620002bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002d9816002546200041d60201b62000dd51790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200030c91839062000dd56200041d821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200037482826200049960201b60201c565b15620003e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6004546001600160a01b0316331490565b3b151590565b6000828201838110156200049257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b038216620004fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620019a46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b611478806200052c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a723058202e38a4147f4ac4c20a2215c319fa05c4bd78865723915d12ebc5ef7ae6c48c970029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + Bin: "0x60806040523480156200001157600080fd5b50604051602080620019c6833981018060405260208110156200003357600080fd5b5051806200004833620000cc602090811b901c565b600480546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000a5816200011e60201b60201c565b50620000c5336b033b2e3c9fd0803ce800000062000247602090811b901c565b506200051c565b620000e78160036200036260201b620011f11790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200012e6200040660201b60201c565b6200019a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620001b9816001600160a01b03166200041760201b6200104d1760201c565b6200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216620002bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002d9816002546200041d60201b62000dd51790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200030c91839062000dd56200041d821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200037482826200049960201b60201c565b15620003e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6004546001600160a01b0316331490565b3b151590565b6000828201838110156200049257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b038216620004fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620019a46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b611478806200052c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a72305820f9f6db9338d7d8a41e01ff91e228cad93e7f42246880598a8a340a87e07556e40029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", } // ServiceChainTokenABI is the input ABI used to generate the binding from. @@ -5789,10 +5881,10 @@ var ServiceChainTokenMetaData = &bind.MetaData{ var ServiceChainTokenABI = ServiceChainTokenMetaData.ABI // ServiceChainTokenBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ServiceChainTokenBinRuntime = `608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a723058202e38a4147f4ac4c20a2215c319fa05c4bd78865723915d12ebc5ef7ae6c48c970029` +const ServiceChainTokenBinRuntime = `608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a72305820f9f6db9338d7d8a41e01ff91e228cad93e7f42246880598a8a340a87e07556e40029` -// ServiceChainTokenFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ServiceChainTokenMetaData.Sigs instead. +// ServiceChainTokenFuncSigs maps the 4-byte function signature to its string representation. var ServiceChainTokenFuncSigs = ServiceChainTokenMetaData.Sigs // ServiceChainTokenBin is the compiled bytecode used for deploying new contracts. @@ -5964,6 +6056,7 @@ func (_ServiceChainToken *ServiceChainTokenTransactorRaw) Transact(opts *bind.Tr func (_ServiceChainToken *ServiceChainTokenCaller) DECIMALS(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "DECIMALS") + if err != nil { return *new(uint8), err } @@ -5971,6 +6064,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) DECIMALS(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // DECIMALS is a free data retrieval call binding the contract method 0x2e0f2625. @@ -5993,6 +6087,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) DECIMALS() (uint8, err func (_ServiceChainToken *ServiceChainTokenCaller) INITIALSUPPLY(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "INITIAL_SUPPLY") + if err != nil { return *new(*big.Int), err } @@ -6000,6 +6095,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) INITIALSUPPLY(opts *bind.Call out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // INITIALSUPPLY is a free data retrieval call binding the contract method 0x2ff2e9dc. @@ -6022,6 +6118,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) INITIALSUPPLY() (*big. func (_ServiceChainToken *ServiceChainTokenCaller) NAME(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "NAME") + if err != nil { return *new(string), err } @@ -6029,6 +6126,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) NAME(opts *bind.CallOpts) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // NAME is a free data retrieval call binding the contract method 0xa3f4df7e. @@ -6051,6 +6149,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) NAME() (string, error) func (_ServiceChainToken *ServiceChainTokenCaller) SYMBOL(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "SYMBOL") + if err != nil { return *new(string), err } @@ -6058,6 +6157,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) SYMBOL(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // SYMBOL is a free data retrieval call binding the contract method 0xf76f8d78. @@ -6080,6 +6180,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) SYMBOL() (string, erro func (_ServiceChainToken *ServiceChainTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "allowance", owner, spender) + if err != nil { return *new(*big.Int), err } @@ -6087,6 +6188,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) Allowance(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. @@ -6109,6 +6211,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) Allowance(owner common func (_ServiceChainToken *ServiceChainTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "balanceOf", account) + if err != nil { return *new(*big.Int), err } @@ -6116,6 +6219,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) BalanceOf(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -6138,6 +6242,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) BalanceOf(account comm func (_ServiceChainToken *ServiceChainTokenCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -6145,6 +6250,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) Bridge(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -6167,6 +6273,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) Bridge() (common.Addre func (_ServiceChainToken *ServiceChainTokenCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -6174,6 +6281,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) IsMinter(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -6196,6 +6304,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) IsMinter(account commo func (_ServiceChainToken *ServiceChainTokenCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -6203,6 +6312,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) IsOwner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -6225,6 +6335,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) IsOwner() (bool, error func (_ServiceChainToken *ServiceChainTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -6232,6 +6343,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -6254,6 +6366,7 @@ func (_ServiceChainToken *ServiceChainTokenCallerSession) Owner() (common.Addres func (_ServiceChainToken *ServiceChainTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ServiceChainToken.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -6261,6 +6374,7 @@ func (_ServiceChainToken *ServiceChainTokenCaller) TotalSupply(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -6650,6 +6764,7 @@ type ServiceChainTokenApproval struct { // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ServiceChainToken *ServiceChainTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ServiceChainTokenApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6670,6 +6785,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) FilterApproval(opts *bind.F // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) func (_ServiceChainToken *ServiceChainTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6719,6 +6835,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) ParseApproval(log types.Log if err := _ServiceChainToken.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6799,6 +6916,7 @@ type ServiceChainTokenMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainTokenMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6815,6 +6933,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterAdded(opts *bin // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainToken *ServiceChainTokenFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6860,6 +6979,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) ParseMinterAdded(log types. if err := _ServiceChainToken.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6940,6 +7060,7 @@ type ServiceChainTokenMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainTokenMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6956,6 +7077,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterRemoved(opts *b // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainToken *ServiceChainTokenFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -7001,6 +7123,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) ParseMinterRemoved(log type if err := _ServiceChainToken.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7082,6 +7205,7 @@ type ServiceChainTokenOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainToken *ServiceChainTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainTokenOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7102,6 +7226,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainToken *ServiceChainTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7151,6 +7276,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) ParseOwnershipTransferred(l if err := _ServiceChainToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7233,6 +7359,7 @@ type ServiceChainTokenTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ServiceChainToken *ServiceChainTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ServiceChainTokenTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -7253,6 +7380,7 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) FilterTransfer(opts *bind.F // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) func (_ServiceChainToken *ServiceChainTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -7302,5 +7430,6 @@ func (_ServiceChainToken *ServiceChainTokenFilterer) ParseTransfer(log types.Log if err := _ServiceChainToken.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/testing/sc_erc721/sc_nft.go b/contracts/contracts/testing/sc_erc721/sc_nft.go index caeba5345..4f489d1a8 100644 --- a/contracts/contracts/testing/sc_erc721/sc_nft.go +++ b/contracts/contracts/testing/sc_erc721/sc_nft.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package scnft +package sc_erc721 import ( "errors" @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029", } // AddressABI is the input ABI used to generate the binding from. @@ -40,7 +40,7 @@ var AddressMetaData = &bind.MetaData{ var AddressABI = AddressMetaData.ABI // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029` +const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029` // AddressBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use AddressMetaData.Bin instead. @@ -208,7 +208,7 @@ func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method s // CountersMetaData contains all meta data concerning the Counters contract. var CountersMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029", } // CountersABI is the input ABI used to generate the binding from. @@ -216,7 +216,7 @@ var CountersMetaData = &bind.MetaData{ var CountersABI = CountersMetaData.ABI // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029` +const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029` // CountersBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use CountersMetaData.Bin instead. @@ -396,8 +396,8 @@ var ERC165ABI = ERC165MetaData.ABI // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC165BinRuntime = `` -// ERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC165MetaData.Sigs instead. +// ERC165FuncSigs maps the 4-byte function signature to its string representation. var ERC165FuncSigs = ERC165MetaData.Sigs // ERC165 is an auto generated Go binding around a Kaia contract. @@ -548,6 +548,7 @@ func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -555,6 +556,7 @@ func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -586,7 +588,7 @@ var ERC721MetaData = &bind.MetaData{ "01ffc9a7": "supportsInterface(bytes4)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029", + Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029", } // ERC721ABI is the input ABI used to generate the binding from. @@ -594,10 +596,10 @@ var ERC721MetaData = &bind.MetaData{ var ERC721ABI = ERC721MetaData.ABI // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029` +const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029` -// ERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetaData.Sigs instead. +// ERC721FuncSigs maps the 4-byte function signature to its string representation. var ERC721FuncSigs = ERC721MetaData.Sigs // ERC721Bin is the compiled bytecode used for deploying new contracts. @@ -769,6 +771,7 @@ func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -776,6 +779,7 @@ func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -798,6 +802,7 @@ func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, e func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -805,6 +810,7 @@ func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -827,6 +833,7 @@ func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addres func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -834,6 +841,7 @@ func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common. out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -856,6 +864,7 @@ func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, opera func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -863,6 +872,7 @@ func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (com out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -885,6 +895,7 @@ func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, e func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -892,6 +903,7 @@ func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -1092,6 +1104,7 @@ type ERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1116,6 +1129,7 @@ func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1169,6 +1183,7 @@ func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, er if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1251,6 +1266,7 @@ type ERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1271,6 +1287,7 @@ func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1320,6 +1337,7 @@ func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721Approv if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1402,6 +1420,7 @@ type ERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1426,6 +1445,7 @@ func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1479,6 +1499,7 @@ func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, er if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1498,7 +1519,7 @@ var ERC721BurnableMetaData = &bind.MetaData{ "01ffc9a7": "supportsInterface(bytes4)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029", + Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029", } // ERC721BurnableABI is the input ABI used to generate the binding from. @@ -1506,10 +1527,10 @@ var ERC721BurnableMetaData = &bind.MetaData{ var ERC721BurnableABI = ERC721BurnableMetaData.ABI // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029` +const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029` -// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721BurnableMetaData.Sigs instead. +// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs // ERC721BurnableBin is the compiled bytecode used for deploying new contracts. @@ -1681,6 +1702,7 @@ func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.Transact func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -1688,6 +1710,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -1710,6 +1733,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Addre func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -1717,6 +1741,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -1739,6 +1764,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -1746,6 +1772,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -1768,6 +1795,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner commo func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -1775,6 +1803,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -1797,6 +1826,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -1804,6 +1834,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -2025,6 +2056,7 @@ type ERC721BurnableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2049,6 +2081,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2102,6 +2135,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2184,6 +2218,7 @@ type ERC721BurnableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2204,6 +2239,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2253,6 +2289,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2335,6 +2372,7 @@ type ERC721BurnableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2359,6 +2397,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2412,6 +2451,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2433,7 +2473,7 @@ var ERC721EnumerableMetaData = &bind.MetaData{ "18160ddd": "totalSupply()", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61005860201b60201c565b61003d6380ac58cd60e01b61005860201b60201c565b61005363780e9d6360e01b61005860201b60201c565b610126565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b61109e806101356000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582070db274482e0fb06803c6de5fb6dd67537ec0c4933dbacb0b2bf0eef9bbccb410029", + Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61005860201b60201c565b61003d6380ac58cd60e01b61005860201b60201c565b61005363780e9d6360e01b61005860201b60201c565b610126565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b61109e806101356000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820efd9576afa1c46be938b6fff580a4adae987a021691a5b9c6007732ddd082c200029", } // ERC721EnumerableABI is the input ABI used to generate the binding from. @@ -2441,10 +2481,10 @@ var ERC721EnumerableMetaData = &bind.MetaData{ var ERC721EnumerableABI = ERC721EnumerableMetaData.ABI // ERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721EnumerableBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582070db274482e0fb06803c6de5fb6dd67537ec0c4933dbacb0b2bf0eef9bbccb410029` +const ERC721EnumerableBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820efd9576afa1c46be938b6fff580a4adae987a021691a5b9c6007732ddd082c200029` -// ERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721EnumerableMetaData.Sigs instead. +// ERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation. var ERC721EnumerableFuncSigs = ERC721EnumerableMetaData.Sigs // ERC721EnumerableBin is the compiled bytecode used for deploying new contracts. @@ -2616,6 +2656,7 @@ func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transact(opts *bind.Tran func (_ERC721Enumerable *ERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -2623,6 +2664,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -2645,6 +2687,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) BalanceOf(owner common.A func (_ERC721Enumerable *ERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -2652,6 +2695,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) GetApproved(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -2674,6 +2718,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) GetApproved(tokenId *big func (_ERC721Enumerable *ERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -2681,6 +2726,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) IsApprovedForAll(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -2703,6 +2749,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) IsApprovedForAll(owner c func (_ERC721Enumerable *ERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -2710,6 +2757,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -2732,6 +2780,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int func (_ERC721Enumerable *ERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -2739,6 +2788,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) SupportsInterface(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -2761,6 +2811,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) SupportsInterface(interf func (_ERC721Enumerable *ERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", index) + if err != nil { return *new(*big.Int), err } @@ -2768,6 +2819,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. @@ -2790,6 +2842,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenByIndex(index *big. func (_ERC721Enumerable *ERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + if err != nil { return *new(*big.Int), err } @@ -2797,6 +2850,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. @@ -2819,6 +2873,7 @@ func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenOfOwnerByIndex(owne func (_ERC721Enumerable *ERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC721Enumerable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -2826,6 +2881,7 @@ func (_ERC721Enumerable *ERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -3026,6 +3082,7 @@ type ERC721EnumerableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721EnumerableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3050,6 +3107,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApproval(opts *bind.Fil // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3103,6 +3161,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApproval(log types.Log) if err := _ERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3185,6 +3244,7 @@ type ERC721EnumerableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721EnumerableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3205,6 +3265,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApprovalForAll(opts *bi // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3254,6 +3315,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApprovalForAll(log types if err := _ERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3336,6 +3398,7 @@ type ERC721EnumerableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721EnumerableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3360,6 +3423,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterTransfer(opts *bind.Fil // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3413,6 +3477,7 @@ func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseTransfer(log types.Log) if err := _ERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3437,7 +3502,7 @@ var ERC721FullMetaData = &bind.MetaData{ "18160ddd": "totalSupply()", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x60806040523480156200001157600080fd5b506040516200166e3803806200166e833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291905050508181620000ed6301ffc9a760e01b6200016b60201b60201c565b620001056380ac58cd60e01b6200016b60201b60201c565b6200011d63780e9d6360e01b6200016b60201b60201c565b8151620001329060099060208501906200023a565b5080516200014890600a9060208401906200023a565b5062000161635b5e139f60e01b6200016b60201b60201c565b50505050620002df565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027d57805160ff1916838001178555620002ad565b82800160010185558215620002ad579182015b82811115620002ad57825182559160200191906001019062000290565b50620002bb929150620002bf565b5090565b620002dc91905b80821115620002bb5760008155600101620002c6565b90565b61137f80620002ef6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820e0a7c5088bc979bfe17da327dbe7e4a99d0954d16ce72a5902286fea461b37370029", + Bin: "0x60806040523480156200001157600080fd5b506040516200166e3803806200166e833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291905050508181620000ed6301ffc9a760e01b6200016b60201b60201c565b620001056380ac58cd60e01b6200016b60201b60201c565b6200011d63780e9d6360e01b6200016b60201b60201c565b8151620001329060099060208501906200023a565b5080516200014890600a9060208401906200023a565b5062000161635b5e139f60e01b6200016b60201b60201c565b50505050620002df565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027d57805160ff1916838001178555620002ad565b82800160010185558215620002ad579182015b82811115620002ad57825182559160200191906001019062000290565b50620002bb929150620002bf565b5090565b620002dc91905b80821115620002bb5760008155600101620002c6565b90565b61137f80620002ef6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582084f265e814d0c99267831d8361035b331162338c94f1f4145c6d67b01fbee6040029", } // ERC721FullABI is the input ABI used to generate the binding from. @@ -3445,10 +3510,10 @@ var ERC721FullMetaData = &bind.MetaData{ var ERC721FullABI = ERC721FullMetaData.ABI // ERC721FullBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721FullBinRuntime = `608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820e0a7c5088bc979bfe17da327dbe7e4a99d0954d16ce72a5902286fea461b37370029` +const ERC721FullBinRuntime = `608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582084f265e814d0c99267831d8361035b331162338c94f1f4145c6d67b01fbee6040029` -// ERC721FullFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721FullMetaData.Sigs instead. +// ERC721FullFuncSigs maps the 4-byte function signature to its string representation. var ERC721FullFuncSigs = ERC721FullMetaData.Sigs // ERC721FullBin is the compiled bytecode used for deploying new contracts. @@ -3620,6 +3685,7 @@ func (_ERC721Full *ERC721FullTransactorRaw) Transact(opts *bind.TransactOpts, me func (_ERC721Full *ERC721FullCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -3627,6 +3693,7 @@ func (_ERC721Full *ERC721FullCaller) BalanceOf(opts *bind.CallOpts, owner common out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -3649,6 +3716,7 @@ func (_ERC721Full *ERC721FullCallerSession) BalanceOf(owner common.Address) (*bi func (_ERC721Full *ERC721FullCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -3656,6 +3724,7 @@ func (_ERC721Full *ERC721FullCaller) GetApproved(opts *bind.CallOpts, tokenId *b out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -3678,6 +3747,7 @@ func (_ERC721Full *ERC721FullCallerSession) GetApproved(tokenId *big.Int) (commo func (_ERC721Full *ERC721FullCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -3685,6 +3755,7 @@ func (_ERC721Full *ERC721FullCaller) IsApprovedForAll(opts *bind.CallOpts, owner out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -3707,6 +3778,7 @@ func (_ERC721Full *ERC721FullCallerSession) IsApprovedForAll(owner common.Addres func (_ERC721Full *ERC721FullCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -3714,6 +3786,7 @@ func (_ERC721Full *ERC721FullCaller) Name(opts *bind.CallOpts) (string, error) { out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -3736,6 +3809,7 @@ func (_ERC721Full *ERC721FullCallerSession) Name() (string, error) { func (_ERC721Full *ERC721FullCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -3743,6 +3817,7 @@ func (_ERC721Full *ERC721FullCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.I out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -3765,6 +3840,7 @@ func (_ERC721Full *ERC721FullCallerSession) OwnerOf(tokenId *big.Int) (common.Ad func (_ERC721Full *ERC721FullCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -3772,6 +3848,7 @@ func (_ERC721Full *ERC721FullCaller) SupportsInterface(opts *bind.CallOpts, inte out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -3794,6 +3871,7 @@ func (_ERC721Full *ERC721FullCallerSession) SupportsInterface(interfaceId [4]byt func (_ERC721Full *ERC721FullCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -3801,6 +3879,7 @@ func (_ERC721Full *ERC721FullCaller) Symbol(opts *bind.CallOpts) (string, error) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -3823,6 +3902,7 @@ func (_ERC721Full *ERC721FullCallerSession) Symbol() (string, error) { func (_ERC721Full *ERC721FullCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "tokenByIndex", index) + if err != nil { return *new(*big.Int), err } @@ -3830,6 +3910,7 @@ func (_ERC721Full *ERC721FullCaller) TokenByIndex(opts *bind.CallOpts, index *bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. @@ -3852,6 +3933,7 @@ func (_ERC721Full *ERC721FullCallerSession) TokenByIndex(index *big.Int) (*big.I func (_ERC721Full *ERC721FullCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + if err != nil { return *new(*big.Int), err } @@ -3859,6 +3941,7 @@ func (_ERC721Full *ERC721FullCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, ow out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. @@ -3881,6 +3964,7 @@ func (_ERC721Full *ERC721FullCallerSession) TokenOfOwnerByIndex(owner common.Add func (_ERC721Full *ERC721FullCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -3888,6 +3972,7 @@ func (_ERC721Full *ERC721FullCaller) TokenURI(opts *bind.CallOpts, tokenId *big. out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -3910,6 +3995,7 @@ func (_ERC721Full *ERC721FullCallerSession) TokenURI(tokenId *big.Int) (string, func (_ERC721Full *ERC721FullCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ERC721Full.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -3917,6 +4003,7 @@ func (_ERC721Full *ERC721FullCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -4117,6 +4204,7 @@ type ERC721FullApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Full *ERC721FullFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721FullApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4141,6 +4229,7 @@ func (_ERC721Full *ERC721FullFilterer) FilterApproval(opts *bind.FilterOpts, own // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Full *ERC721FullFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721FullApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4194,6 +4283,7 @@ func (_ERC721Full *ERC721FullFilterer) ParseApproval(log types.Log) (*ERC721Full if err := _ERC721Full.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4276,6 +4366,7 @@ type ERC721FullApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Full *ERC721FullFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721FullApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4296,6 +4387,7 @@ func (_ERC721Full *ERC721FullFilterer) FilterApprovalForAll(opts *bind.FilterOpt // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Full *ERC721FullFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721FullApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4345,6 +4437,7 @@ func (_ERC721Full *ERC721FullFilterer) ParseApprovalForAll(log types.Log) (*ERC7 if err := _ERC721Full.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4427,6 +4520,7 @@ type ERC721FullTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Full *ERC721FullFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721FullTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4451,6 +4545,7 @@ func (_ERC721Full *ERC721FullFilterer) FilterTransfer(opts *bind.FilterOpts, fro // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Full *ERC721FullFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721FullTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4504,6 +4599,7 @@ func (_ERC721Full *ERC721FullFilterer) ParseTransfer(log types.Log) (*ERC721Full if err := _ERC721Full.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4525,7 +4621,7 @@ var ERC721MetadataMetaData = &bind.MetaData{ "c87b56dd": "tokenURI(uint256)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029", + Bin: "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582016b1d29c197257e5e7badcb1dd4bb9a362c53f457ed9517860d3d71d5d80fc420029", } // ERC721MetadataABI is the input ABI used to generate the binding from. @@ -4533,10 +4629,10 @@ var ERC721MetadataMetaData = &bind.MetaData{ var ERC721MetadataABI = ERC721MetadataMetaData.ABI // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029` +const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582016b1d29c197257e5e7badcb1dd4bb9a362c53f457ed9517860d3d71d5d80fc420029` -// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetadataMetaData.Sigs instead. +// ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. var ERC721MetadataFuncSigs = ERC721MetadataMetaData.Sigs // ERC721MetadataBin is the compiled bytecode used for deploying new contracts. @@ -4708,6 +4804,7 @@ func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.Transact func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -4715,6 +4812,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -4737,6 +4835,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Addre func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -4744,6 +4843,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -4766,6 +4866,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -4773,6 +4874,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -4795,6 +4897,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner commo func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -4802,6 +4905,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -4824,6 +4928,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) { func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -4831,6 +4936,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -4853,6 +4959,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -4860,6 +4967,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -4882,6 +4990,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceI func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -4889,6 +4998,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -4911,6 +5021,7 @@ func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) { func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -4918,6 +5029,7 @@ func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, token out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -5118,6 +5230,7 @@ type ERC721MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5142,6 +5255,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5195,6 +5309,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5277,6 +5392,7 @@ type ERC721MetadataApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5297,6 +5413,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5346,6 +5463,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5428,6 +5546,7 @@ type ERC721MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5452,6 +5571,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5505,6 +5625,7 @@ func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5539,8 +5660,8 @@ var ERC721MetadataMintableABI = ERC721MetadataMintableMetaData.ABI // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721MetadataMintableBinRuntime = `` -// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetadataMintableMetaData.Sigs instead. +// ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation. var ERC721MetadataMintableFuncSigs = ERC721MetadataMintableMetaData.Sigs // ERC721MetadataMintable is an auto generated Go binding around a Kaia contract. @@ -5691,6 +5812,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opt func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -5698,6 +5820,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -5720,6 +5843,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(ow func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -5727,6 +5851,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *b out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -5749,6 +5874,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved( func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -5756,6 +5882,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(op out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -5778,6 +5905,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedFo func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -5785,6 +5913,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -5807,6 +5936,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(acc func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -5814,6 +5944,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -5836,6 +5967,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (stri func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -5843,6 +5975,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -5865,6 +5998,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(toke func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -5872,6 +6006,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(o out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -5894,6 +6029,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInte func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -5901,6 +6037,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.C out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -5923,6 +6060,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (st func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ERC721MetadataMintable.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -5930,6 +6068,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -6193,6 +6332,7 @@ type ERC721MetadataMintableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6217,6 +6357,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(op // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6270,6 +6411,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6352,6 +6494,7 @@ type ERC721MetadataMintableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6372,6 +6515,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalFor // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -6421,6 +6565,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForA if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6501,6 +6646,7 @@ type ERC721MetadataMintableMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6517,6 +6663,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded // // Solidity: event MinterAdded(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6562,6 +6709,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded( if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6642,6 +6790,7 @@ type ERC721MetadataMintableMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6658,6 +6807,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemov // // Solidity: event MinterRemoved(address indexed account) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6703,6 +6853,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemove if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6785,6 +6936,7 @@ type ERC721MetadataMintableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -6809,6 +6961,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(op // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -6862,6 +7015,7 @@ func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6896,8 +7050,8 @@ var ERC721ServiceChainABI = ERC721ServiceChainMetaData.ABI // ERC721ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721ServiceChainBinRuntime = `` -// ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721ServiceChainMetaData.Sigs instead. +// ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation. var ERC721ServiceChainFuncSigs = ERC721ServiceChainMetaData.Sigs // ERC721ServiceChain is an auto generated Go binding around a Kaia contract. @@ -7048,6 +7202,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transact(opts *bind. func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -7055,6 +7210,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -7077,6 +7233,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) BalanceOf(owner comm func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -7084,6 +7241,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -7106,6 +7264,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Bridge() (common.Add func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -7113,6 +7272,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -7135,6 +7295,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) GetApproved(tokenId func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -7142,6 +7303,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -7164,6 +7326,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsApprovedForAll(own func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -7171,6 +7334,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -7193,6 +7357,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsOwner() (bool, err func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -7200,6 +7365,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -7222,6 +7388,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Owner() (common.Addr func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -7229,6 +7396,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -7251,6 +7419,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) OwnerOf(tokenId *big func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -7258,6 +7427,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -7542,6 +7712,7 @@ type ERC721ServiceChainApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ServiceChainApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -7566,6 +7737,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -7619,6 +7791,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApproval(log types.L if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7701,6 +7874,7 @@ type ERC721ServiceChainApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ServiceChainApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -7721,6 +7895,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -7770,6 +7945,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApprovalForAll(log t if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7851,6 +8027,7 @@ type ERC721ServiceChainOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721ServiceChainOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7871,6 +8048,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferre // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7920,6 +8098,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseOwnershipTransferred if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8002,6 +8181,7 @@ type ERC721ServiceChainTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721ServiceChainTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -8026,6 +8206,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -8079,6 +8260,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseTransfer(log types.L if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8097,8 +8279,8 @@ var IERC165ABI = IERC165MetaData.ABI // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC165BinRuntime = `` -// IERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC165MetaData.Sigs instead. +// IERC165FuncSigs maps the 4-byte function signature to its string representation. var IERC165FuncSigs = IERC165MetaData.Sigs // IERC165 is an auto generated Go binding around a Kaia contract. @@ -8249,6 +8431,7 @@ func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -8256,6 +8439,7 @@ func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -8296,8 +8480,8 @@ var IERC721ABI = IERC721MetaData.ABI // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BinRuntime = `` -// IERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetaData.Sigs instead. +// IERC721FuncSigs maps the 4-byte function signature to its string representation. var IERC721FuncSigs = IERC721MetaData.Sigs // IERC721 is an auto generated Go binding around a Kaia contract. @@ -8448,6 +8632,7 @@ func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -8455,6 +8640,7 @@ func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -8477,6 +8663,7 @@ func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -8484,6 +8671,7 @@ func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -8506,6 +8694,7 @@ func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addr func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -8513,6 +8702,7 @@ func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -8535,6 +8725,7 @@ func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, ope func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -8542,6 +8733,7 @@ func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -8564,6 +8756,7 @@ func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -8571,6 +8764,7 @@ func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -8771,6 +8965,7 @@ type IERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8795,6 +8990,7 @@ func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []c // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8848,6 +9044,7 @@ func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8930,6 +9127,7 @@ type IERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8950,6 +9148,7 @@ func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, own // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8999,6 +9198,7 @@ func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721App if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9081,6 +9281,7 @@ type IERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -9105,6 +9306,7 @@ func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []co // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -9158,6 +9360,7 @@ func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9176,8 +9379,8 @@ var IERC721BridgeReceiverABI = IERC721BridgeReceiverMetaData.ABI // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BridgeReceiverBinRuntime = `` -// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721BridgeReceiverMetaData.Sigs instead. +// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721BridgeReceiverFuncSigs = IERC721BridgeReceiverMetaData.Sigs // IERC721BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -9370,8 +9573,8 @@ var IERC721EnumerableABI = IERC721EnumerableMetaData.ABI // IERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721EnumerableBinRuntime = `` -// IERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721EnumerableMetaData.Sigs instead. +// IERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation. var IERC721EnumerableFuncSigs = IERC721EnumerableMetaData.Sigs // IERC721Enumerable is an auto generated Go binding around a Kaia contract. @@ -9522,6 +9725,7 @@ func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transact(opts *bind.Tr func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -9529,6 +9733,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -9551,6 +9756,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) BalanceOf(owner common func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -9558,6 +9764,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -9580,6 +9787,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) GetApproved(tokenId *b func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -9587,6 +9795,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.C out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -9609,6 +9818,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) IsApprovedForAll(owner func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -9616,6 +9826,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -9638,6 +9849,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) OwnerOf(tokenId *big.I func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -9645,6 +9857,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind. out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -9667,6 +9880,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) SupportsInterface(inte func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", index) + if err != nil { return *new(*big.Int), err } @@ -9674,6 +9888,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. @@ -9696,6 +9911,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenByIndex(index *bi func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + if err != nil { return *new(*big.Int), err } @@ -9703,6 +9919,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. @@ -9725,6 +9942,7 @@ func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenOfOwnerByIndex(ow func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _IERC721Enumerable.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -9732,6 +9950,7 @@ func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -9932,6 +10151,7 @@ type IERC721EnumerableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721EnumerableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -9956,6 +10176,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.F // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -10009,6 +10230,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApproval(log types.Log if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10091,6 +10313,7 @@ type IERC721EnumerableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721EnumerableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -10111,6 +10334,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts * // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -10160,6 +10384,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApprovalForAll(log typ if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10242,6 +10467,7 @@ type IERC721EnumerableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721EnumerableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -10266,6 +10492,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.F // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -10319,6 +10546,7 @@ func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseTransfer(log types.Log if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10349,8 +10577,8 @@ var IERC721MetadataABI = IERC721MetadataMetaData.ABI // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721MetadataBinRuntime = `` -// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetadataMetaData.Sigs instead. +// IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation. var IERC721MetadataFuncSigs = IERC721MetadataMetaData.Sigs // IERC721Metadata is an auto generated Go binding around a Kaia contract. @@ -10501,6 +10729,7 @@ func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.Transa func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -10508,6 +10737,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, ow out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -10530,6 +10760,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Add func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -10537,6 +10768,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -10559,6 +10791,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.I func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -10566,6 +10799,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -10588,6 +10822,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner com func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -10595,6 +10830,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -10617,6 +10853,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -10624,6 +10861,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, toke out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -10646,6 +10884,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -10653,6 +10892,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -10675,6 +10915,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfac func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -10682,6 +10923,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -10704,6 +10946,7 @@ func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) { func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -10711,6 +10954,7 @@ func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tok out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -10911,6 +11155,7 @@ type IERC721MetadataApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -10935,6 +11180,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.Filte // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -10988,6 +11234,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11070,6 +11317,7 @@ type IERC721MetadataApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -11090,6 +11338,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -11139,6 +11388,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.L if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11221,6 +11471,7 @@ type IERC721MetadataTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -11245,6 +11496,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.Filte // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -11298,6 +11550,7 @@ func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (* if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11316,8 +11569,8 @@ var IERC721ReceiverABI = IERC721ReceiverMetaData.ABI // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721ReceiverBinRuntime = `` -// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721ReceiverMetaData.Sigs instead. +// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721ReceiverFuncSigs = IERC721ReceiverMetaData.Sigs // IERC721Receiver is an auto generated Go binding around a Kaia contract. @@ -11500,8 +11753,8 @@ var MinterRoleABI = MinterRoleMetaData.ABI // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MinterRoleBinRuntime = `` -// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MinterRoleMetaData.Sigs instead. +// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. var MinterRoleFuncSigs = MinterRoleMetaData.Sigs // MinterRole is an auto generated Go binding around a Kaia contract. @@ -11652,6 +11905,7 @@ func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _MinterRole.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -11659,6 +11913,7 @@ func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -11794,6 +12049,7 @@ type MinterRoleMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -11810,6 +12066,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -11855,6 +12112,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterR if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11935,6 +12193,7 @@ type MinterRoleMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -11951,6 +12210,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -11996,6 +12256,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*Minte if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12017,8 +12278,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -12169,6 +12430,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -12176,6 +12438,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -12198,6 +12461,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -12205,6 +12469,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -12341,6 +12606,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -12361,6 +12627,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -12410,13 +12677,14 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } // RolesMetaData contains all meta data concerning the Roles contract. var RolesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029", } // RolesABI is the input ABI used to generate the binding from. @@ -12424,7 +12692,7 @@ var RolesMetaData = &bind.MetaData{ var RolesABI = RolesMetaData.ABI // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029` +const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029` // RolesBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use RolesMetaData.Bin instead. @@ -12592,7 +12860,7 @@ func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method strin // SafeMathMetaData contains all meta data concerning the SafeMath contract. var SafeMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029", } // SafeMathABI is the input ABI used to generate the binding from. @@ -12600,7 +12868,7 @@ var SafeMathMetaData = &bind.MetaData{ var SafeMathABI = SafeMathMetaData.ABI // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029` +const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029` // SafeMathBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use SafeMathMetaData.Bin instead. @@ -12799,7 +13067,7 @@ var ServiceChainNFTMetaData = &bind.MetaData{ "23b872dd": "transferFrom(address,address,uint256)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b50604051602080620029a6833981018060405260208110156200003357600080fd5b5051604080518082018252600f81527f53657276696365436861696e4e465400000000000000000000000000000000006020828101919091528251808401909352600383527f53434e00000000000000000000000000000000000000000000000000000000008382015283929082908290620000d5907f01ffc9a70000000000000000000000000000000000000000000000000000000090620001c3811b901c565b620000ed6380ac58cd60e01b620001c360201b60201c565b6200010563780e9d6360e01b620001c360201b60201c565b81516200011a9060099060208501906200054c565b5080516200013090600a9060208401906200054c565b5062000149635b5e139f60e01b620001c360201b60201c565b505050506200015e336200029260201b60201c565b600d80546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001bb81620002e460201b60201c565b5050620005ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200025557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620002ad81600c6200040d60201b62001b9f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b620002f4620004b160201b60201c565b6200036057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6200037f816001600160a01b0316620004c360201b620014821760201c565b620003eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6200041f8282620004c960201b60201c565b156200048c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600d546001600160a01b031633145b90565b3b151590565b60006001600160a01b0382166200052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620029846022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058f57805160ff1916838001178555620005bf565b82800160010185558215620005bf579182015b82811115620005bf578251825591602001919060010190620005a2565b50620005cd929150620005d1565b5090565b620004c091905b80821115620005cd5760008155600101620005d8565b61238680620005fe6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820032306241b3cccba21fdcf87e3b2bf569b6dece599dd576928df55e517c30de90029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + Bin: "0x60806040523480156200001157600080fd5b50604051602080620029a6833981018060405260208110156200003357600080fd5b5051604080518082018252600f81527f53657276696365436861696e4e465400000000000000000000000000000000006020828101919091528251808401909352600383527f53434e00000000000000000000000000000000000000000000000000000000008382015283929082908290620000d5907f01ffc9a70000000000000000000000000000000000000000000000000000000090620001c3811b901c565b620000ed6380ac58cd60e01b620001c360201b60201c565b6200010563780e9d6360e01b620001c360201b60201c565b81516200011a9060099060208501906200054c565b5080516200013090600a9060208401906200054c565b5062000149635b5e139f60e01b620001c360201b60201c565b505050506200015e336200029260201b60201c565b600d80546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001bb81620002e460201b60201c565b5050620005ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200025557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620002ad81600c6200040d60201b62001b9f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b620002f4620004b160201b60201c565b6200036057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6200037f816001600160a01b0316620004c360201b620014821760201c565b620003eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6200041f8282620004c960201b60201c565b156200048c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600d546001600160a01b031633145b90565b3b151590565b60006001600160a01b0382166200052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620029846022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058f57805160ff1916838001178555620005bf565b82800160010185558215620005bf579182015b82811115620005bf578251825591602001919060010190620005a2565b50620005cd929150620005d1565b5090565b620004c091905b80821115620005cd5760008155600101620005d8565b61238680620005fe6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582055c4dcc10ebb52546719af6e21ef1ffbfeddeba52f3b05c821027612664e5ae40029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", } // ServiceChainNFTABI is the input ABI used to generate the binding from. @@ -12807,10 +13075,10 @@ var ServiceChainNFTMetaData = &bind.MetaData{ var ServiceChainNFTABI = ServiceChainNFTMetaData.ABI // ServiceChainNFTBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ServiceChainNFTBinRuntime = `608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820032306241b3cccba21fdcf87e3b2bf569b6dece599dd576928df55e517c30de90029` +const ServiceChainNFTBinRuntime = `608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582055c4dcc10ebb52546719af6e21ef1ffbfeddeba52f3b05c821027612664e5ae40029` -// ServiceChainNFTFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ServiceChainNFTMetaData.Sigs instead. +// ServiceChainNFTFuncSigs maps the 4-byte function signature to its string representation. var ServiceChainNFTFuncSigs = ServiceChainNFTMetaData.Sigs // ServiceChainNFTBin is the compiled bytecode used for deploying new contracts. @@ -12982,6 +13250,7 @@ func (_ServiceChainNFT *ServiceChainNFTTransactorRaw) Transact(opts *bind.Transa func (_ServiceChainNFT *ServiceChainNFTCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -12989,6 +13258,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) BalanceOf(opts *bind.CallOpts, ow out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -13011,6 +13281,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) BalanceOf(owner common.Add func (_ServiceChainNFT *ServiceChainNFTCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -13018,6 +13289,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) Bridge(opts *bind.CallOpts) (comm out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -13040,6 +13312,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) Bridge() (common.Address, func (_ServiceChainNFT *ServiceChainNFTCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -13047,6 +13320,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) GetApproved(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -13069,6 +13343,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) GetApproved(tokenId *big.I func (_ServiceChainNFT *ServiceChainNFTCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -13076,6 +13351,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) IsApprovedForAll(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -13098,6 +13374,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsApprovedForAll(owner com func (_ServiceChainNFT *ServiceChainNFTCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -13105,6 +13382,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) IsMinter(opts *bind.CallOpts, acc out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -13127,6 +13405,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsMinter(account common.Ad func (_ServiceChainNFT *ServiceChainNFTCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -13134,6 +13413,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) IsOwner(opts *bind.CallOpts) (boo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -13156,6 +13436,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsOwner() (bool, error) { func (_ServiceChainNFT *ServiceChainNFTCaller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "name") + if err != nil { return *new(string), err } @@ -13163,6 +13444,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) Name(opts *bind.CallOpts) (string out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Name is a free data retrieval call binding the contract method 0x06fdde03. @@ -13185,6 +13467,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) Name() (string, error) { func (_ServiceChainNFT *ServiceChainNFTCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -13192,6 +13475,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) Owner(opts *bind.CallOpts) (commo out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -13214,6 +13498,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) Owner() (common.Address, e func (_ServiceChainNFT *ServiceChainNFTCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -13221,6 +13506,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) OwnerOf(opts *bind.CallOpts, toke out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -13243,6 +13529,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) OwnerOf(tokenId *big.Int) func (_ServiceChainNFT *ServiceChainNFTCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -13250,6 +13537,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) SupportsInterface(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -13272,6 +13560,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) SupportsInterface(interfac func (_ServiceChainNFT *ServiceChainNFTCaller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "symbol") + if err != nil { return *new(string), err } @@ -13279,6 +13568,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) Symbol(opts *bind.CallOpts) (stri out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -13301,6 +13591,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) Symbol() (string, error) { func (_ServiceChainNFT *ServiceChainNFTCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "tokenByIndex", index) + if err != nil { return *new(*big.Int), err } @@ -13308,6 +13599,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) TokenByIndex(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. @@ -13330,6 +13622,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenByIndex(index *big.In func (_ServiceChainNFT *ServiceChainNFTCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + if err != nil { return *new(*big.Int), err } @@ -13337,6 +13630,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) TokenOfOwnerByIndex(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. @@ -13359,6 +13653,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenOfOwnerByIndex(owner func (_ServiceChainNFT *ServiceChainNFTCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "tokenURI", tokenId) + if err != nil { return *new(string), err } @@ -13366,6 +13661,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) TokenURI(opts *bind.CallOpts, tok out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. @@ -13388,6 +13684,7 @@ func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenURI(tokenId *big.Int) func (_ServiceChainNFT *ServiceChainNFTCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ServiceChainNFT.contract.Call(opts, &out, "totalSupply") + if err != nil { return *new(*big.Int), err } @@ -13395,6 +13692,7 @@ func (_ServiceChainNFT *ServiceChainNFTCaller) TotalSupply(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -13784,6 +14082,7 @@ type ServiceChainNFTApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ServiceChainNFTApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -13808,6 +14107,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApproval(opts *bind.Filte // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -13861,6 +14161,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApproval(log types.Log) (* if err := _ServiceChainNFT.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13943,6 +14244,7 @@ type ServiceChainNFTApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ServiceChainNFTApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -13963,6 +14265,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApprovalForAll(opts *bind // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -14012,6 +14315,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApprovalForAll(log types.L if err := _ServiceChainNFT.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14092,6 +14396,7 @@ type ServiceChainNFTMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -14108,6 +14413,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterAdded(opts *bind.Fi // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -14153,6 +14459,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterAdded(log types.Log) if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14233,6 +14540,7 @@ type ServiceChainNFTMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -14249,6 +14557,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterRemoved(opts *bind. // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -14294,6 +14603,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterRemoved(log types.Lo if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14375,6 +14685,7 @@ type ServiceChainNFTOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainNFTOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -14395,6 +14706,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterOwnershipTransferred(opts // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -14444,6 +14756,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseOwnershipTransferred(log t if err := _ServiceChainNFT.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -14526,6 +14839,7 @@ type ServiceChainNFTTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ServiceChainNFTTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -14550,6 +14864,7 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterTransfer(opts *bind.Filte // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -14603,5 +14918,6 @@ func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseTransfer(log types.Log) (* if err := _ServiceChainNFT.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/testing/sc_erc721_no_uri/sc_nft_no_uri.go b/contracts/contracts/testing/sc_erc721_no_uri/sc_nft_no_uri.go index de115b657..6dd08e960 100644 --- a/contracts/contracts/testing/sc_erc721_no_uri/sc_nft_no_uri.go +++ b/contracts/contracts/testing/sc_erc721_no_uri/sc_nft_no_uri.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package scnft_no_uri +package sc_erc721_no_uri import ( "errors" @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029", } // AddressABI is the input ABI used to generate the binding from. @@ -40,7 +40,7 @@ var AddressMetaData = &bind.MetaData{ var AddressABI = AddressMetaData.ABI // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029` +const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b32c87dbb0caf970681daf082a477014411dd235ff58b05e15ac654d28d3262e0029` // AddressBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use AddressMetaData.Bin instead. @@ -208,7 +208,7 @@ func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method s // CountersMetaData contains all meta data concerning the Counters contract. var CountersMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029", } // CountersABI is the input ABI used to generate the binding from. @@ -216,7 +216,7 @@ var CountersMetaData = &bind.MetaData{ var CountersABI = CountersMetaData.ABI // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029` +const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058203afd38313550c743a267a38a820ee94a1b22e8d9a76e12054f13940e9362437a0029` // CountersBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use CountersMetaData.Bin instead. @@ -396,8 +396,8 @@ var ERC165ABI = ERC165MetaData.ABI // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC165BinRuntime = `` -// ERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC165MetaData.Sigs instead. +// ERC165FuncSigs maps the 4-byte function signature to its string representation. var ERC165FuncSigs = ERC165MetaData.Sigs // ERC165 is an auto generated Go binding around a Kaia contract. @@ -548,6 +548,7 @@ func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -555,6 +556,7 @@ func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -586,7 +588,7 @@ var ERC721MetaData = &bind.MetaData{ "01ffc9a7": "supportsInterface(bytes4)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029", + Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029", } // ERC721ABI is the input ABI used to generate the binding from. @@ -594,10 +596,10 @@ var ERC721MetaData = &bind.MetaData{ var ERC721ABI = ERC721MetaData.ABI // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029` +const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582056bfed5b1c04aa930e38651c856c028d42096288b28f2684ec10107a965fe8250029` -// ERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MetaData.Sigs instead. +// ERC721FuncSigs maps the 4-byte function signature to its string representation. var ERC721FuncSigs = ERC721MetaData.Sigs // ERC721Bin is the compiled bytecode used for deploying new contracts. @@ -769,6 +771,7 @@ func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method str func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -776,6 +779,7 @@ func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -798,6 +802,7 @@ func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, e func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -805,6 +810,7 @@ func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -827,6 +833,7 @@ func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addres func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -834,6 +841,7 @@ func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common. out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -856,6 +864,7 @@ func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, opera func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -863,6 +872,7 @@ func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (com out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -885,6 +895,7 @@ func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, e func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -892,6 +903,7 @@ func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -1092,6 +1104,7 @@ type ERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1116,6 +1129,7 @@ func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1169,6 +1183,7 @@ func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, er if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1251,6 +1266,7 @@ type ERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1271,6 +1287,7 @@ func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -1320,6 +1337,7 @@ func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721Approv if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1402,6 +1420,7 @@ type ERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1426,6 +1445,7 @@ func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -1479,6 +1499,7 @@ func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, er if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1498,7 +1519,7 @@ var ERC721BurnableMetaData = &bind.MetaData{ "01ffc9a7": "supportsInterface(bytes4)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029", + Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029", } // ERC721BurnableABI is the input ABI used to generate the binding from. @@ -1506,10 +1527,10 @@ var ERC721BurnableMetaData = &bind.MetaData{ var ERC721BurnableABI = ERC721BurnableMetaData.ABI // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029` +const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820e26f1b3d6062c0b2195a28d4b58bcb804955e17bd9e3cb99a43372ebd62fa0f90029` -// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721BurnableMetaData.Sigs instead. +// ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation. var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs // ERC721BurnableBin is the compiled bytecode used for deploying new contracts. @@ -1681,6 +1702,7 @@ func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.Transact func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -1688,6 +1710,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -1710,6 +1733,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Addre func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -1717,6 +1741,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -1739,6 +1764,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -1746,6 +1772,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -1768,6 +1795,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner commo func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -1775,6 +1803,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -1797,6 +1826,7 @@ func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -1804,6 +1834,7 @@ func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -2025,6 +2056,7 @@ type ERC721BurnableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2049,6 +2081,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2102,6 +2135,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2184,6 +2218,7 @@ type ERC721BurnableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2204,6 +2239,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -2253,6 +2289,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2335,6 +2372,7 @@ type ERC721BurnableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2359,6 +2397,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -2412,6 +2451,7 @@ func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2434,7 +2474,7 @@ var ERC721MintableMetaData = &bind.MetaData{ "01ffc9a7": "supportsInterface(bytes4)", "23b872dd": "transferFrom(address,address,uint256)", }, - Bin: "0x60806040526200001c6301ffc9a760e01b6200004b60201b60201c565b620000346380ac58cd60e01b6200004b60201b60201c565b62000045336200011a60201b60201c565b62000293565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620000dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001358160056200016c60201b62000ec61790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200017e82826200021060201b60201c565b15620001eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000273576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620015106022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61126d80620002a36000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820335b29c2b8db434219a90b6b027213a83a15755b4c6657198b9c3702cdc93b170029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + Bin: "0x60806040526200001c6301ffc9a760e01b6200004b60201b60201c565b620000346380ac58cd60e01b6200004b60201b60201c565b62000045336200011a60201b60201c565b62000293565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620000dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001358160056200016c60201b62000ec61790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200017e82826200021060201b60201c565b15620001eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000273576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620015106022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61126d80620002a36000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820616ab14736d585883585371b79ffb5a95297f370edbfcd09329014f9d7ecb0d30029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", } // ERC721MintableABI is the input ABI used to generate the binding from. @@ -2442,10 +2482,10 @@ var ERC721MintableMetaData = &bind.MetaData{ var ERC721MintableABI = ERC721MintableMetaData.ABI // ERC721MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ERC721MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820335b29c2b8db434219a90b6b027213a83a15755b4c6657198b9c3702cdc93b170029` +const ERC721MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820616ab14736d585883585371b79ffb5a95297f370edbfcd09329014f9d7ecb0d30029` -// ERC721MintableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721MintableMetaData.Sigs instead. +// ERC721MintableFuncSigs maps the 4-byte function signature to its string representation. var ERC721MintableFuncSigs = ERC721MintableMetaData.Sigs // ERC721MintableBin is the compiled bytecode used for deploying new contracts. @@ -2617,6 +2657,7 @@ func (_ERC721Mintable *ERC721MintableTransactorRaw) Transact(opts *bind.Transact func (_ERC721Mintable *ERC721MintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -2624,6 +2665,7 @@ func (_ERC721Mintable *ERC721MintableCaller) BalanceOf(opts *bind.CallOpts, owne out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -2646,6 +2688,7 @@ func (_ERC721Mintable *ERC721MintableCallerSession) BalanceOf(owner common.Addre func (_ERC721Mintable *ERC721MintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -2653,6 +2696,7 @@ func (_ERC721Mintable *ERC721MintableCaller) GetApproved(opts *bind.CallOpts, to out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -2675,6 +2719,7 @@ func (_ERC721Mintable *ERC721MintableCallerSession) GetApproved(tokenId *big.Int func (_ERC721Mintable *ERC721MintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -2682,6 +2727,7 @@ func (_ERC721Mintable *ERC721MintableCaller) IsApprovedForAll(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -2704,6 +2750,7 @@ func (_ERC721Mintable *ERC721MintableCallerSession) IsApprovedForAll(owner commo func (_ERC721Mintable *ERC721MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -2711,6 +2758,7 @@ func (_ERC721Mintable *ERC721MintableCaller) IsMinter(opts *bind.CallOpts, accou out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -2733,6 +2781,7 @@ func (_ERC721Mintable *ERC721MintableCallerSession) IsMinter(account common.Addr func (_ERC721Mintable *ERC721MintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -2740,6 +2789,7 @@ func (_ERC721Mintable *ERC721MintableCaller) OwnerOf(opts *bind.CallOpts, tokenI out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -2762,6 +2812,7 @@ func (_ERC721Mintable *ERC721MintableCallerSession) OwnerOf(tokenId *big.Int) (c func (_ERC721Mintable *ERC721MintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721Mintable.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -2769,6 +2820,7 @@ func (_ERC721Mintable *ERC721MintableCaller) SupportsInterface(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -3032,6 +3084,7 @@ type ERC721MintableApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Mintable *ERC721MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MintableApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3056,6 +3109,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) FilterApproval(opts *bind.FilterO // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721Mintable *ERC721MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3109,6 +3163,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) ParseApproval(log types.Log) (*ER if err := _ERC721Mintable.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3191,6 +3246,7 @@ type ERC721MintableApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Mintable *ERC721MintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MintableApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3211,6 +3267,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) FilterApprovalForAll(opts *bind.F // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721Mintable *ERC721MintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -3260,6 +3317,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) ParseApprovalForAll(log types.Log if err := _ERC721Mintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3340,6 +3398,7 @@ type ERC721MintableMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MintableMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -3356,6 +3415,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterAdded(opts *bind.Filt // // Solidity: event MinterAdded(address indexed account) func (_ERC721Mintable *ERC721MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MintableMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -3401,6 +3461,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) ParseMinterAdded(log types.Log) ( if err := _ERC721Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3481,6 +3542,7 @@ type ERC721MintableMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MintableMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -3497,6 +3559,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterRemoved(opts *bind.Fi // // Solidity: event MinterRemoved(address indexed account) func (_ERC721Mintable *ERC721MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MintableMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -3542,6 +3605,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) ParseMinterRemoved(log types.Log) if err := _ERC721Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3624,6 +3688,7 @@ type ERC721MintableTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Mintable *ERC721MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MintableTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3648,6 +3713,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) FilterTransfer(opts *bind.FilterO // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721Mintable *ERC721MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -3701,6 +3767,7 @@ func (_ERC721Mintable *ERC721MintableFilterer) ParseTransfer(log types.Log) (*ER if err := _ERC721Mintable.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3735,8 +3802,8 @@ var ERC721ServiceChainABI = ERC721ServiceChainMetaData.ABI // ERC721ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ERC721ServiceChainBinRuntime = `` -// ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ERC721ServiceChainMetaData.Sigs instead. +// ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation. var ERC721ServiceChainFuncSigs = ERC721ServiceChainMetaData.Sigs // ERC721ServiceChain is an auto generated Go binding around a Kaia contract. @@ -3887,6 +3954,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transact(opts *bind. func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -3894,6 +3962,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -3916,6 +3985,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) BalanceOf(owner comm func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -3923,6 +3993,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -3945,6 +4016,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Bridge() (common.Add func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -3952,6 +4024,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -3974,6 +4047,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) GetApproved(tokenId func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -3981,6 +4055,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -4003,6 +4078,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsApprovedForAll(own func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -4010,6 +4086,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -4032,6 +4109,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsOwner() (bool, err func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -4039,6 +4117,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -4061,6 +4140,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Owner() (common.Addr func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -4068,6 +4148,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -4090,6 +4171,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) OwnerOf(tokenId *big func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721ServiceChain.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -4097,6 +4179,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -4381,6 +4464,7 @@ type ERC721ServiceChainApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ServiceChainApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4405,6 +4489,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4458,6 +4543,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApproval(log types.L if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4540,6 +4626,7 @@ type ERC721ServiceChainApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ServiceChainApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4560,6 +4647,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -4609,6 +4697,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApprovalForAll(log t if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4690,6 +4779,7 @@ type ERC721ServiceChainOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721ServiceChainOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4710,6 +4800,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferre // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -4759,6 +4850,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseOwnershipTransferred if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4841,6 +4933,7 @@ type ERC721ServiceChainTransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721ServiceChainTransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4865,6 +4958,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -4918,6 +5012,7 @@ func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseTransfer(log types.L if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4936,8 +5031,8 @@ var IERC165ABI = IERC165MetaData.ABI // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC165BinRuntime = `` -// IERC165FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC165MetaData.Sigs instead. +// IERC165FuncSigs maps the 4-byte function signature to its string representation. var IERC165FuncSigs = IERC165MetaData.Sigs // IERC165 is an auto generated Go binding around a Kaia contract. @@ -5088,6 +5183,7 @@ func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -5095,6 +5191,7 @@ func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -5135,8 +5232,8 @@ var IERC721ABI = IERC721MetaData.ABI // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BinRuntime = `` -// IERC721FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721MetaData.Sigs instead. +// IERC721FuncSigs maps the 4-byte function signature to its string representation. var IERC721FuncSigs = IERC721MetaData.Sigs // IERC721 is an auto generated Go binding around a Kaia contract. @@ -5287,6 +5384,7 @@ func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -5294,6 +5392,7 @@ func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Addre out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -5316,6 +5415,7 @@ func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -5323,6 +5423,7 @@ func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -5345,6 +5446,7 @@ func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Addr func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -5352,6 +5454,7 @@ func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -5374,6 +5477,7 @@ func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, ope func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -5381,6 +5485,7 @@ func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -5403,6 +5508,7 @@ func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -5410,6 +5516,7 @@ func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceI out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -5610,6 +5717,7 @@ type IERC721Approval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5634,6 +5742,7 @@ func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []c // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5687,6 +5796,7 @@ func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5769,6 +5879,7 @@ type IERC721ApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5789,6 +5900,7 @@ func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, own // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -5838,6 +5950,7 @@ func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721App if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5920,6 +6033,7 @@ type IERC721Transfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5944,6 +6058,7 @@ func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []co // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -5997,6 +6112,7 @@ func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6015,8 +6131,8 @@ var IERC721BridgeReceiverABI = IERC721BridgeReceiverMetaData.ABI // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721BridgeReceiverBinRuntime = `` -// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721BridgeReceiverMetaData.Sigs instead. +// IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721BridgeReceiverFuncSigs = IERC721BridgeReceiverMetaData.Sigs // IERC721BridgeReceiver is an auto generated Go binding around a Kaia contract. @@ -6197,8 +6313,8 @@ var IERC721ReceiverABI = IERC721ReceiverMetaData.ABI // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC721ReceiverBinRuntime = `` -// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC721ReceiverMetaData.Sigs instead. +// IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation. var IERC721ReceiverFuncSigs = IERC721ReceiverMetaData.Sigs // IERC721Receiver is an auto generated Go binding around a Kaia contract. @@ -6381,8 +6497,8 @@ var MinterRoleABI = MinterRoleMetaData.ABI // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MinterRoleBinRuntime = `` -// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MinterRoleMetaData.Sigs instead. +// MinterRoleFuncSigs maps the 4-byte function signature to its string representation. var MinterRoleFuncSigs = MinterRoleMetaData.Sigs // MinterRole is an auto generated Go binding around a Kaia contract. @@ -6533,6 +6649,7 @@ func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, me func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _MinterRole.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -6540,6 +6657,7 @@ func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account commo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -6675,6 +6793,7 @@ type MinterRoleMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6691,6 +6810,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, // // Solidity: event MinterAdded(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6736,6 +6856,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterR if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6816,6 +6937,7 @@ type MinterRoleMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6832,6 +6954,7 @@ func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts // // Solidity: event MinterRemoved(address indexed account) func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -6877,6 +7000,7 @@ func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*Minte if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6898,8 +7022,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // Ownable is an auto generated Go binding around a Kaia contract. @@ -7050,6 +7174,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -7057,6 +7182,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -7079,6 +7205,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -7086,6 +7213,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -7222,6 +7350,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7242,6 +7371,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7291,13 +7421,14 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } // RolesMetaData contains all meta data concerning the Roles contract. var RolesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029", } // RolesABI is the input ABI used to generate the binding from. @@ -7305,7 +7436,7 @@ var RolesMetaData = &bind.MetaData{ var RolesABI = RolesMetaData.ABI // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029` +const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058208d5896b3a6e4db9cf52607e90610c77907eb8b3087c153bb71abfe760f33c0870029` // RolesBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use RolesMetaData.Bin instead. @@ -7473,7 +7604,7 @@ func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method strin // SafeMathMetaData contains all meta data concerning the SafeMath contract. var SafeMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029", + Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029", } // SafeMathABI is the input ABI used to generate the binding from. @@ -7481,7 +7612,7 @@ var SafeMathMetaData = &bind.MetaData{ var SafeMathABI = SafeMathMetaData.ABI // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029` +const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c81d8154e3986fd65287f23dd0d1fd6cfb341a090d0057f03a14dcc20f0c29410029` // SafeMathBin is the compiled bytecode used for deploying new contracts. // Deprecated: Use SafeMathMetaData.Bin instead. @@ -7674,7 +7805,7 @@ var ServiceChainNFTNoURIMetaData = &bind.MetaData{ "23b872dd": "transferFrom(address,address,uint256)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b5060405160208062001e58833981018060405260208110156200003357600080fd5b505180620000687f01ffc9a700000000000000000000000000000000000000000000000000000000620000f6602090811b901c565b620000806380ac58cd60e01b620000f660201b60201c565b6200009133620001c560201b60201c565b600680546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000ee816200021760201b60201c565b50506200047e565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200018857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001e08160056200034060201b6200156c1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b62000227620003e460201b60201c565b6200029357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620002b2816001600160a01b0316620003f560201b6200115a1760201c565b6200031e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b620003528282620003fb60201b60201c565b15620003bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6006546001600160a01b0316331490565b3b151590565b60006001600160a01b0382166200045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001e366022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6119a8806200048e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200d3d31047770573f291d2764e827e143563b662e8bdf398463704aa497fd04b60029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + Bin: "0x60806040523480156200001157600080fd5b5060405160208062001e58833981018060405260208110156200003357600080fd5b505180620000687f01ffc9a700000000000000000000000000000000000000000000000000000000620000f6602090811b901c565b620000806380ac58cd60e01b620000f660201b60201c565b6200009133620001c560201b60201c565b600680546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000ee816200021760201b60201c565b50506200047e565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200018857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001e08160056200034060201b6200156c1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b62000227620003e460201b60201c565b6200029357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620002b2816001600160a01b0316620003f560201b6200115a1760201c565b6200031e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b620003528282620003fb60201b60201c565b15620003bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6006546001600160a01b0316331490565b3b151590565b60006001600160a01b0382166200045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001e366022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6119a8806200048e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820102e5065820ae11f59ab0b2a9b40f03f7f4bf88dca2596720286b39bdda5ca510029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", } // ServiceChainNFTNoURIABI is the input ABI used to generate the binding from. @@ -7682,10 +7813,10 @@ var ServiceChainNFTNoURIMetaData = &bind.MetaData{ var ServiceChainNFTNoURIABI = ServiceChainNFTNoURIMetaData.ABI // ServiceChainNFTNoURIBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const ServiceChainNFTNoURIBinRuntime = `608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200d3d31047770573f291d2764e827e143563b662e8bdf398463704aa497fd04b60029` +const ServiceChainNFTNoURIBinRuntime = `608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820102e5065820ae11f59ab0b2a9b40f03f7f4bf88dca2596720286b39bdda5ca510029` -// ServiceChainNFTNoURIFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ServiceChainNFTNoURIMetaData.Sigs instead. +// ServiceChainNFTNoURIFuncSigs maps the 4-byte function signature to its string representation. var ServiceChainNFTNoURIFuncSigs = ServiceChainNFTNoURIMetaData.Sigs // ServiceChainNFTNoURIBin is the compiled bytecode used for deploying new contracts. @@ -7857,6 +7988,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorRaw) Transact(opts *b func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "balanceOf", owner) + if err != nil { return *new(*big.Int), err } @@ -7864,6 +7996,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) BalanceOf(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. @@ -7886,6 +8019,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) BalanceOf(owner func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Bridge(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "bridge") + if err != nil { return *new(common.Address), err } @@ -7893,6 +8027,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Bridge(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Bridge is a free data retrieval call binding the contract method 0xe78cea92. @@ -7915,6 +8050,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) Bridge() (common func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "getApproved", tokenId) + if err != nil { return *new(common.Address), err } @@ -7922,6 +8058,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) GetApproved(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. @@ -7944,6 +8081,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) GetApproved(toke func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + if err != nil { return *new(bool), err } @@ -7951,6 +8089,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsApprovedForAll(opts * out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. @@ -7973,6 +8112,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsApprovedForAll func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "isMinter", account) + if err != nil { return *new(bool), err } @@ -7980,6 +8120,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsMinter(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a. @@ -8002,6 +8143,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsMinter(account func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -8009,6 +8151,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsOwner(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -8031,6 +8174,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsOwner() (bool, func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -8038,6 +8182,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Owner(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -8060,6 +8205,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) Owner() (common. func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "ownerOf", tokenId) + if err != nil { return *new(common.Address), err } @@ -8067,6 +8213,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) OwnerOf(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. @@ -8089,6 +8236,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) OwnerOf(tokenId func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ServiceChainNFTNoURI.contract.Call(opts, &out, "supportsInterface", interfaceId) + if err != nil { return *new(bool), err } @@ -8096,6 +8244,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) SupportsInterface(opts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. @@ -8485,6 +8634,7 @@ type ServiceChainNFTNoURIApproval struct { // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ServiceChainNFTNoURIApprovalIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8509,6 +8659,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApproval(opts * // // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8562,6 +8713,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseApproval(log typ if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8644,6 +8796,7 @@ type ServiceChainNFTNoURIApprovalForAll struct { // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ServiceChainNFTNoURIApprovalForAllIterator, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8664,6 +8817,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApprovalForAll( // // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) @@ -8713,6 +8867,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseApprovalForAll(l if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8793,6 +8948,7 @@ type ServiceChainNFTNoURIMinterAdded struct { // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTNoURIMinterAddedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -8809,6 +8965,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterAdded(opt // // Solidity: event MinterAdded(address indexed account) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIMinterAdded, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -8854,6 +9011,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseMinterAdded(log if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterAdded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8934,6 +9092,7 @@ type ServiceChainNFTNoURIMinterRemoved struct { // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTNoURIMinterRemovedIterator, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -8950,6 +9109,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterRemoved(o // // Solidity: event MinterRemoved(address indexed account) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIMinterRemoved, account []common.Address) (event.Subscription, error) { + var accountRule []interface{} for _, accountItem := range account { accountRule = append(accountRule, accountItem) @@ -8995,6 +9155,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseMinterRemoved(lo if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9076,6 +9237,7 @@ type ServiceChainNFTNoURIOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainNFTNoURIOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9096,6 +9258,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterOwnershipTransf // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9145,6 +9308,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseOwnershipTransfe if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9227,6 +9391,7 @@ type ServiceChainNFTNoURITransfer struct { // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ServiceChainNFTNoURITransferIterator, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -9251,6 +9416,7 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterTransfer(opts * // // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURITransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) @@ -9304,5 +9470,6 @@ func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseTransfer(log typ if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } + event.Raw = log return event, nil } diff --git a/contracts/contracts/testing/system_contracts/all.go b/contracts/contracts/testing/system_contracts/all.go index 582561b98..98234f556 100644 --- a/contracts/contracts/testing/system_contracts/all.go +++ b/contracts/contracts/testing/system_contracts/all.go @@ -448,6 +448,7 @@ type ContextUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -459,6 +460,7 @@ func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *b // // Solidity: event Initialized(uint8 version) func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -499,6 +501,7 @@ func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log type if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -734,6 +737,7 @@ type ERC1967UpgradeUpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableAdminChangedIterator, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -745,6 +749,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterAdmin // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -785,6 +790,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseAdminC if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -865,6 +871,7 @@ type ERC1967UpgradeUpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UpgradeUpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -881,6 +888,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterBeaco // // Solidity: event BeaconUpgraded(address indexed beacon) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -926,6 +934,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseBeacon if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1006,6 +1015,7 @@ type ERC1967UpgradeUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableInitializedIterator, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -1017,6 +1027,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterIniti // // Solidity: event Initialized(uint8 version) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -1057,6 +1068,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseInitia if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1137,6 +1149,7 @@ type ERC1967UpgradeUpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UpgradeUpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1153,6 +1166,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterUpgra // // Solidity: event Upgraded(address indexed implementation) func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -1198,6 +1212,7 @@ func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseUpgrad if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -1240,8 +1255,8 @@ var IAddressBookABI = IAddressBookMetaData.ABI // IAddressBookBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IAddressBookBinRuntime = `` -// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IAddressBookMetaData.Sigs instead. +// IAddressBookFuncSigs maps the 4-byte function signature to its string representation. var IAddressBookFuncSigs = IAddressBookMetaData.Sigs // IAddressBook is an auto generated Go binding around a Kaia contract. @@ -1392,8 +1407,7 @@ func (_IAddressBook *IAddressBookTransactorRaw) Transact(opts *bind.TransactOpts func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddress") @@ -1401,10 +1415,15 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str TypeList []uint8 AddressList []common.Address }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + return *outstruct, err + } // GetAllAddress is a free data retrieval call binding the contract method 0x715b208b. @@ -1413,8 +1432,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddress(opts *bind.CallOpts) (str func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -1424,8 +1442,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddress() (struct { func (_IAddressBook *IAddressBookCallerSession) GetAllAddress() (struct { TypeList []uint8 AddressList []common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddress(&_IAddressBook.CallOpts) } @@ -1438,8 +1455,7 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getAllAddressInfo") @@ -1450,13 +1466,18 @@ func (_IAddressBook *IAddressBookCaller) GetAllAddressInfo(opts *bind.CallOpts) PocContractAddress common.Address KirContractAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.CnStakingContractList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.CnRewardAddressList = *abi.ConvertType(out[2], new([]common.Address)).(*[]common.Address) outstruct.PocContractAddress = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) outstruct.KirContractAddress = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetAllAddressInfo is a free data retrieval call binding the contract method 0x160370b8. @@ -1468,8 +1489,7 @@ func (_IAddressBook *IAddressBookSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -1482,8 +1502,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetAllAddressInfo() (struct { CnRewardAddressList []common.Address PocContractAddress common.Address KirContractAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetAllAddressInfo(&_IAddressBook.CallOpts) } @@ -1494,8 +1513,7 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getCnInfo", _cnNodeId) @@ -1504,11 +1522,16 @@ func (_IAddressBook *IAddressBookCaller) GetCnInfo(opts *bind.CallOpts, _cnNodeI CnStakingcontract common.Address CnRewardAddress common.Address }) + if err != nil { + return *outstruct, err + } outstruct.CnNodeId = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.CnStakingcontract = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.CnRewardAddress = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + return *outstruct, err + } // GetCnInfo is a free data retrieval call binding the contract method 0x15575d5a. @@ -1518,8 +1541,7 @@ func (_IAddressBook *IAddressBookSession) GetCnInfo(_cnNodeId common.Address) (s CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -1530,8 +1552,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre CnNodeId common.Address CnStakingcontract common.Address CnRewardAddress common.Address -}, error, -) { +}, error) { return _IAddressBook.Contract.GetCnInfo(&_IAddressBook.CallOpts, _cnNodeId) } @@ -1541,6 +1562,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetCnInfo(_cnNodeId common.Addre func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOpts) ([][32]byte, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getPendingRequestList") + if err != nil { return *new([][32]byte), err } @@ -1548,6 +1570,7 @@ func (_IAddressBook *IAddressBookCaller) GetPendingRequestList(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) return out0, err + } // GetPendingRequestList is a free data retrieval call binding the contract method 0xda34a0bd. @@ -1575,8 +1598,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfo", _id) @@ -1589,6 +1611,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.FunctionId = *abi.ConvertType(out[0], new(uint8)).(*uint8) outstruct.FirstArg = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) @@ -1597,7 +1622,9 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfo(opts *bind.CallOpts, _id outstruct.Confirmers = *abi.ConvertType(out[4], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[6], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfo is a free data retrieval call binding the contract method 0x82d67e5a. @@ -1611,8 +1638,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfo(_id [32]byte) (struct { Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -1627,8 +1653,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfo(_id [32]byte) (st Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfo(&_IAddressBook.CallOpts, _id) } @@ -1640,8 +1665,7 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getRequestInfoByArgs", _functionId, _firstArg, _secondArg, _thirdArg) @@ -1651,12 +1675,17 @@ func (_IAddressBook *IAddressBookCaller) GetRequestInfoByArgs(opts *bind.CallOpt InitialProposedTime *big.Int State uint8 }) + if err != nil { + return *outstruct, err + } outstruct.Id = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) outstruct.Confirmers = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.InitialProposedTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) outstruct.State = *abi.ConvertType(out[3], new(uint8)).(*uint8) + return *outstruct, err + } // GetRequestInfoByArgs is a free data retrieval call binding the contract method 0x407091eb. @@ -1667,8 +1696,7 @@ func (_IAddressBook *IAddressBookSession) GetRequestInfoByArgs(_functionId uint8 Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -1680,8 +1708,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId Confirmers []common.Address InitialProposedTime *big.Int State uint8 -}, error, -) { +}, error) { return _IAddressBook.Contract.GetRequestInfoByArgs(&_IAddressBook.CallOpts, _functionId, _firstArg, _secondArg, _thirdArg) } @@ -1691,8 +1718,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetRequestInfoByArgs(_functionId func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "getState") @@ -1700,10 +1726,15 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Requirement *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Requirement = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -1712,8 +1743,7 @@ func (_IAddressBook *IAddressBookCaller) GetState(opts *bind.CallOpts) (struct { func (_IAddressBook *IAddressBookSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -1723,8 +1753,7 @@ func (_IAddressBook *IAddressBookSession) GetState() (struct { func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { AdminList []common.Address Requirement *big.Int -}, error, -) { +}, error) { return _IAddressBook.Contract.GetState(&_IAddressBook.CallOpts) } @@ -1734,6 +1763,7 @@ func (_IAddressBook *IAddressBookCallerSession) GetState() (struct { func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isActivated") + if err != nil { return *new(bool), err } @@ -1741,6 +1771,7 @@ func (_IAddressBook *IAddressBookCaller) IsActivated(opts *bind.CallOpts) (bool, out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsActivated is a free data retrieval call binding the contract method 0x4a8c1fb4. @@ -1763,6 +1794,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsActivated() (bool, error) { func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "isConstructed") + if err != nil { return *new(bool), err } @@ -1770,6 +1802,7 @@ func (_IAddressBook *IAddressBookCaller) IsConstructed(opts *bind.CallOpts) (boo out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsConstructed is a free data retrieval call binding the contract method 0x50a5bb69. @@ -1792,6 +1825,7 @@ func (_IAddressBook *IAddressBookCallerSession) IsConstructed() (bool, error) { func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "kirContractAddress") + if err != nil { return *new(common.Address), err } @@ -1799,6 +1833,7 @@ func (_IAddressBook *IAddressBookCaller) KirContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // KirContractAddress is a free data retrieval call binding the contract method 0xb858dd95. @@ -1821,6 +1856,7 @@ func (_IAddressBook *IAddressBookCallerSession) KirContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "pocContractAddress") + if err != nil { return *new(common.Address), err } @@ -1828,6 +1864,7 @@ func (_IAddressBook *IAddressBookCaller) PocContractAddress(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // PocContractAddress is a free data retrieval call binding the contract method 0xd267eda5. @@ -1850,6 +1887,7 @@ func (_IAddressBook *IAddressBookCallerSession) PocContractAddress() (common.Add func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IAddressBook.contract.Call(opts, &out, "spareContractAddress") + if err != nil { return *new(common.Address), err } @@ -1857,6 +1895,7 @@ func (_IAddressBook *IAddressBookCaller) SpareContractAddress(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // SpareContractAddress is a free data retrieval call binding the contract method 0x6abd623d. @@ -2161,8 +2200,8 @@ var IBeaconUpgradeableABI = IBeaconUpgradeableMetaData.ABI // IBeaconUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IBeaconUpgradeableBinRuntime = `` -// IBeaconUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IBeaconUpgradeableMetaData.Sigs instead. +// IBeaconUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var IBeaconUpgradeableFuncSigs = IBeaconUpgradeableMetaData.Sigs // IBeaconUpgradeable is an auto generated Go binding around a Kaia contract. @@ -2313,6 +2352,7 @@ func (_IBeaconUpgradeable *IBeaconUpgradeableTransactorRaw) Transact(opts *bind. func (_IBeaconUpgradeable *IBeaconUpgradeableCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IBeaconUpgradeable.contract.Call(opts, &out, "implementation") + if err != nil { return *new(common.Address), err } @@ -2320,6 +2360,7 @@ func (_IBeaconUpgradeable *IBeaconUpgradeableCaller) Implementation(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Implementation is a free data retrieval call binding the contract method 0x5c60da1b. @@ -2351,8 +2392,8 @@ var IERC1822ProxiableUpgradeableABI = IERC1822ProxiableUpgradeableMetaData.ABI // IERC1822ProxiableUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IERC1822ProxiableUpgradeableBinRuntime = `` -// IERC1822ProxiableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IERC1822ProxiableUpgradeableMetaData.Sigs instead. +// IERC1822ProxiableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var IERC1822ProxiableUpgradeableFuncSigs = IERC1822ProxiableUpgradeableMetaData.Sigs // IERC1822ProxiableUpgradeable is an auto generated Go binding around a Kaia contract. @@ -2503,6 +2544,7 @@ func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableTransactorRaw) func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _IERC1822ProxiableUpgradeable.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -2510,6 +2552,7 @@ func (_IERC1822ProxiableUpgradeable *IERC1822ProxiableUpgradeableCaller) Proxiab out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -2758,6 +2801,7 @@ type IERC1967UpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967UpgradeableAdminChangedIterator, error) { + logs, sub, err := _IERC1967Upgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2769,6 +2813,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterAdminChanged(opts // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _IERC1967Upgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -2809,6 +2854,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseAdminChanged(log t if err := _IERC1967Upgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -2889,6 +2935,7 @@ type IERC1967UpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967UpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2905,6 +2952,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterBeaconUpgraded(op // // Solidity: event BeaconUpgraded(address indexed beacon) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -2950,6 +2998,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseBeaconUpgraded(log if err := _IERC1967Upgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3030,6 +3079,7 @@ type IERC1967UpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -3046,6 +3096,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterUpgraded(opts *bi // // Solidity: event Upgraded(address indexed implementation) func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -3091,6 +3142,7 @@ func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseUpgraded(log types if err := _IERC1967Upgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3109,8 +3161,8 @@ var IKIP113ABI = IKIP113MetaData.ABI // IKIP113BinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IKIP113BinRuntime = `` -// IKIP113FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IKIP113MetaData.Sigs instead. +// IKIP113FuncSigs maps the 4-byte function signature to its string representation. var IKIP113FuncSigs = IKIP113MetaData.Sigs // IKIP113 is an auto generated Go binding around a Kaia contract. @@ -3261,8 +3313,7 @@ func (_IKIP113 *IKIP113TransactorRaw) Transact(opts *bind.TransactOpts, method s func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { var out []interface{} err := _IKIP113.contract.Call(opts, &out, "getAllBlsInfo") @@ -3270,10 +3321,15 @@ func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo }) + if err != nil { + return *outstruct, err + } outstruct.NodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.PubkeyList = *abi.ConvertType(out[1], new([]IKIP113BlsPublicKeyInfo)).(*[]IKIP113BlsPublicKeyInfo) + return *outstruct, err + } // GetAllBlsInfo is a free data retrieval call binding the contract method 0x6968b53f. @@ -3282,8 +3338,7 @@ func (_IKIP113 *IKIP113Caller) GetAllBlsInfo(opts *bind.CallOpts) (struct { func (_IKIP113 *IKIP113Session) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _IKIP113.Contract.GetAllBlsInfo(&_IKIP113.CallOpts) } @@ -3293,8 +3348,7 @@ func (_IKIP113 *IKIP113Session) GetAllBlsInfo() (struct { func (_IKIP113 *IKIP113CallerSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _IKIP113.Contract.GetAllBlsInfo(&_IKIP113.CallOpts) } @@ -3320,8 +3374,8 @@ var IRegistryABI = IRegistryMetaData.ABI // IRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IRegistryBinRuntime = `` -// IRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IRegistryMetaData.Sigs instead. +// IRegistryFuncSigs maps the 4-byte function signature to its string representation. var IRegistryFuncSigs = IRegistryMetaData.Sigs // IRegistry is an auto generated Go binding around a Kaia contract. @@ -3472,6 +3526,7 @@ func (_IRegistry *IRegistryTransactorRaw) Transact(opts *bind.TransactOpts, meth func (_IRegistry *IRegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "getAllNames") + if err != nil { return *new([]string), err } @@ -3479,6 +3534,7 @@ func (_IRegistry *IRegistryCaller) GetAllNames(opts *bind.CallOpts) ([]string, e out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllNames is a free data retrieval call binding the contract method 0xfb825e5f. @@ -3501,6 +3557,7 @@ func (_IRegistry *IRegistryCallerSession) GetAllNames() ([]string, error) { func (_IRegistry *IRegistryCaller) GetAllRecords(opts *bind.CallOpts, name string) ([]IRegistryRecord, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "getAllRecords", name) + if err != nil { return *new([]IRegistryRecord), err } @@ -3508,6 +3565,7 @@ func (_IRegistry *IRegistryCaller) GetAllRecords(opts *bind.CallOpts, name strin out0 := *abi.ConvertType(out[0], new([]IRegistryRecord)).(*[]IRegistryRecord) return out0, err + } // GetAllRecords is a free data retrieval call binding the contract method 0x78d573a2. @@ -3530,6 +3588,7 @@ func (_IRegistry *IRegistryCallerSession) GetAllRecords(name string) ([]IRegistr func (_IRegistry *IRegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (string, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "names", arg0) + if err != nil { return *new(string), err } @@ -3537,6 +3596,7 @@ func (_IRegistry *IRegistryCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Names is a free data retrieval call binding the contract method 0x4622ab03. @@ -3559,6 +3619,7 @@ func (_IRegistry *IRegistryCallerSession) Names(arg0 *big.Int) (string, error) { func (_IRegistry *IRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -3566,6 +3627,7 @@ func (_IRegistry *IRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, e out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -3588,8 +3650,7 @@ func (_IRegistry *IRegistryCallerSession) Owner() (common.Address, error) { func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IRegistry.contract.Call(opts, &out, "records", arg0, arg1) @@ -3597,10 +3658,15 @@ func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg Addr common.Address Activation *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Activation = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Records is a free data retrieval call binding the contract method 0x3b51650d. @@ -3609,8 +3675,7 @@ func (_IRegistry *IRegistryCaller) Records(opts *bind.CallOpts, arg0 string, arg func (_IRegistry *IRegistrySession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _IRegistry.Contract.Records(&_IRegistry.CallOpts, arg0, arg1) } @@ -3620,8 +3685,7 @@ func (_IRegistry *IRegistrySession) Records(arg0 string, arg1 *big.Int) (struct func (_IRegistry *IRegistryCallerSession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _IRegistry.Contract.Records(&_IRegistry.CallOpts, arg0, arg1) } @@ -3766,6 +3830,7 @@ type IRegistryOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_IRegistry *IRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*IRegistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -3786,6 +3851,7 @@ func (_IRegistry *IRegistryFilterer) FilterOwnershipTransferred(opts *bind.Filte // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_IRegistry *IRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *IRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -3835,6 +3901,7 @@ func (_IRegistry *IRegistryFilterer) ParseOwnershipTransferred(log types.Log) (* if err := _IRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -3917,6 +3984,7 @@ type IRegistryRegistered struct { // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_IRegistry *IRegistryFilterer) FilterRegistered(opts *bind.FilterOpts, addr []common.Address, activation []*big.Int) (*IRegistryRegisteredIterator, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -3937,6 +4005,7 @@ func (_IRegistry *IRegistryFilterer) FilterRegistered(opts *bind.FilterOpts, add // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_IRegistry *IRegistryFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *IRegistryRegistered, addr []common.Address, activation []*big.Int) (event.Subscription, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -3986,6 +4055,7 @@ func (_IRegistry *IRegistryFilterer) ParseRegistered(log types.Log) (*IRegistryR if err := _IRegistry.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -4004,8 +4074,8 @@ var IRetiredContractABI = IRetiredContractMetaData.ABI // IRetiredContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IRetiredContractBinRuntime = `` -// IRetiredContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IRetiredContractMetaData.Sigs instead. +// IRetiredContractFuncSigs maps the 4-byte function signature to its string representation. var IRetiredContractFuncSigs = IRetiredContractMetaData.Sigs // IRetiredContract is an auto generated Go binding around a Kaia contract. @@ -4156,8 +4226,7 @@ func (_IRetiredContract *IRetiredContractTransactorRaw) Transact(opts *bind.Tran func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IRetiredContract.contract.Call(opts, &out, "getState") @@ -4165,10 +4234,15 @@ func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) ( AdminList []common.Address Quorom *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Quorom = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -4177,8 +4251,7 @@ func (_IRetiredContract *IRetiredContractCaller) GetState(opts *bind.CallOpts) ( func (_IRetiredContract *IRetiredContractSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IRetiredContract.Contract.GetState(&_IRetiredContract.CallOpts) } @@ -4188,8 +4261,7 @@ func (_IRetiredContract *IRetiredContractSession) GetState() (struct { func (_IRetiredContract *IRetiredContractCallerSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IRetiredContract.Contract.GetState(&_IRetiredContract.CallOpts) } @@ -4226,8 +4298,8 @@ var ITreasuryRebalanceABI = ITreasuryRebalanceMetaData.ABI // ITreasuryRebalanceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const ITreasuryRebalanceBinRuntime = `` -// ITreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use ITreasuryRebalanceMetaData.Sigs instead. +// ITreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. var ITreasuryRebalanceFuncSigs = ITreasuryRebalanceMetaData.Sigs // ITreasuryRebalance is an auto generated Go binding around a Kaia contract. @@ -4378,11 +4450,13 @@ func (_ITreasuryRebalance *ITreasuryRebalanceTransactorRaw) Transact(opts *bind. func (_ITreasuryRebalance *ITreasuryRebalanceCaller) CheckRetiredsApproved(opts *bind.CallOpts) error { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "checkRetiredsApproved") + if err != nil { return err } return err + } // CheckRetiredsApproved is a free data retrieval call binding the contract method 0x966e0794. @@ -4405,6 +4479,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) CheckRetiredsApprove func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts, newbieAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getNewbie", newbieAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -4413,6 +4488,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbie(opts *bind.CallOp out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetNewbie is a free data retrieval call binding the contract method 0xeb5a8e55. @@ -4435,6 +4511,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetNewbie(newbieAddr func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbieCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getNewbieCount") + if err != nil { return *new(*big.Int), err } @@ -4442,6 +4519,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetNewbieCount(opts *bind.C out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieCount is a free data retrieval call binding the contract method 0x91734d86. @@ -4464,6 +4542,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetNewbieCount() (*b func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetired(opts *bind.CallOpts, retiredAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getRetired", retiredAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -4472,6 +4551,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetired(opts *bind.CallO out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetRetired is a free data retrieval call binding the contract method 0xbf680590. @@ -4494,6 +4574,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetRetired(retiredAd func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetiredCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getRetiredCount") + if err != nil { return *new(*big.Int), err } @@ -4501,6 +4582,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetRetiredCount(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredCount is a free data retrieval call binding the contract method 0xd1ed33fc. @@ -4523,6 +4605,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetRetiredCount() (* func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -4530,6 +4613,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) GetTreasuryAmount(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -4552,6 +4636,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) GetTreasuryAmount() func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -4559,6 +4644,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Memo(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -4581,6 +4667,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) Memo() (string, erro func (_ITreasuryRebalance *ITreasuryRebalanceCaller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -4588,6 +4675,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) RebalanceBlockNumber(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -4610,6 +4698,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) RebalanceBlockNumber func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -4617,6 +4706,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) Status(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -4639,6 +4729,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCallerSession) Status() (uint8, err func (_ITreasuryRebalance *ITreasuryRebalanceCaller) SumOfRetiredBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _ITreasuryRebalance.contract.Call(opts, &out, "sumOfRetiredBalance") + if err != nil { return *new(*big.Int), err } @@ -4646,6 +4737,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceCaller) SumOfRetiredBalance(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfRetiredBalance is a free data retrieval call binding the contract method 0x45205a6b. @@ -4930,6 +5022,7 @@ type ITreasuryRebalanceApproved struct { // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterApproved(opts *bind.FilterOpts) (*ITreasuryRebalanceApprovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -4941,6 +5034,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterApproved(opts *bind // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceApproved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -4981,6 +5075,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseApproved(log types.L if err := _ITreasuryRebalance.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5063,6 +5158,7 @@ type ITreasuryRebalanceContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterContractDeployed(opts *bind.FilterOpts) (*ITreasuryRebalanceContractDeployedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -5074,6 +5170,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterContractDeployed(op // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceContractDeployed) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -5114,6 +5211,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseContractDeployed(log if err := _ITreasuryRebalance.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5195,6 +5293,7 @@ type ITreasuryRebalanceFinalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterFinalized(opts *bind.FilterOpts) (*ITreasuryRebalanceFinalizedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -5206,6 +5305,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterFinalized(opts *bin // // Solidity: event Finalized(string memo, uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceFinalized) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -5246,6 +5346,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseFinalized(log types. if err := _ITreasuryRebalance.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5327,6 +5428,7 @@ type ITreasuryRebalanceNewbieRegistered struct { // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRegistered(opts *bind.FilterOpts) (*ITreasuryRebalanceNewbieRegisteredIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -5338,6 +5440,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRegistered(op // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchNewbieRegistered(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceNewbieRegistered) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -5378,6 +5481,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseNewbieRegistered(log if err := _ITreasuryRebalance.contract.UnpackLog(event, "NewbieRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5458,6 +5562,7 @@ type ITreasuryRebalanceNewbieRemoved struct { // // Solidity: event NewbieRemoved(address newbie) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRemoved(opts *bind.FilterOpts) (*ITreasuryRebalanceNewbieRemovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -5469,6 +5574,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterNewbieRemoved(opts // // Solidity: event NewbieRemoved(address newbie) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchNewbieRemoved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceNewbieRemoved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -5509,6 +5615,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseNewbieRemoved(log ty if err := _ITreasuryRebalance.contract.UnpackLog(event, "NewbieRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5589,6 +5696,7 @@ type ITreasuryRebalanceRetiredRegistered struct { // // Solidity: event RetiredRegistered(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRegistered(opts *bind.FilterOpts) (*ITreasuryRebalanceRetiredRegisteredIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -5600,6 +5708,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRegistered(o // // Solidity: event RetiredRegistered(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchRetiredRegistered(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceRetiredRegistered) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -5640,6 +5749,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseRetiredRegistered(lo if err := _ITreasuryRebalance.contract.UnpackLog(event, "RetiredRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5720,6 +5830,7 @@ type ITreasuryRebalanceRetiredRemoved struct { // // Solidity: event RetiredRemoved(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRemoved(opts *bind.FilterOpts) (*ITreasuryRebalanceRetiredRemovedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -5731,6 +5842,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterRetiredRemoved(opts // // Solidity: event RetiredRemoved(address retired) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchRetiredRemoved(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceRetiredRemoved) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -5771,6 +5883,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseRetiredRemoved(log t if err := _ITreasuryRebalance.contract.UnpackLog(event, "RetiredRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5851,6 +5964,7 @@ type ITreasuryRebalanceStatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterStatusChanged(opts *bind.FilterOpts) (*ITreasuryRebalanceStatusChangedIterator, error) { + logs, sub, err := _ITreasuryRebalance.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -5862,6 +5976,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) FilterStatusChanged(opts // // Solidity: event StatusChanged(uint8 status) func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *ITreasuryRebalanceStatusChanged) (event.Subscription, error) { + logs, sub, err := _ITreasuryRebalance.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -5902,6 +6017,7 @@ func (_ITreasuryRebalance *ITreasuryRebalanceFilterer) ParseStatusChanged(log ty if err := _ITreasuryRebalance.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -5920,8 +6036,8 @@ var IZeroedContractABI = IZeroedContractMetaData.ABI // IZeroedContractBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const IZeroedContractBinRuntime = `` -// IZeroedContractFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use IZeroedContractMetaData.Sigs instead. +// IZeroedContractFuncSigs maps the 4-byte function signature to its string representation. var IZeroedContractFuncSigs = IZeroedContractMetaData.Sigs // IZeroedContract is an auto generated Go binding around a Kaia contract. @@ -6072,8 +6188,7 @@ func (_IZeroedContract *IZeroedContractTransactorRaw) Transact(opts *bind.Transa func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { var out []interface{} err := _IZeroedContract.contract.Call(opts, &out, "getState") @@ -6081,10 +6196,15 @@ func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (st AdminList []common.Address Quorom *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.AdminList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.Quorom = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // GetState is a free data retrieval call binding the contract method 0x1865c57d. @@ -6093,8 +6213,7 @@ func (_IZeroedContract *IZeroedContractCaller) GetState(opts *bind.CallOpts) (st func (_IZeroedContract *IZeroedContractSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IZeroedContract.Contract.GetState(&_IZeroedContract.CallOpts) } @@ -6104,8 +6223,7 @@ func (_IZeroedContract *IZeroedContractSession) GetState() (struct { func (_IZeroedContract *IZeroedContractCallerSession) GetState() (struct { AdminList []common.Address Quorom *big.Int -}, error, -) { +}, error) { return _IZeroedContract.Contract.GetState(&_IZeroedContract.CallOpts) } @@ -6340,6 +6458,7 @@ type InitializableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -6351,6 +6470,7 @@ func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.Filter // // Solidity: event Initialized(uint8 version) func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -6391,6 +6511,7 @@ func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*I if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -6424,8 +6545,8 @@ var KIP113MockABI = KIP113MockMetaData.ABI // KIP113MockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const KIP113MockBinRuntime = `6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f36600461148a565b6102f9565b005b34801561016257600080fd5b5061017661017136600461148a565b61045d565b60405161012b9291906114fe565b34801561019057600080fd5b5061015461019f36600461148a565b610589565b6101546101b2366004611542565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611606565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa6565b34801561024457600080fd5b50610154610253366004611714565b610aba565b34801561026457600080fd5b50610154610bef565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d4366004611797565b610d07565b3480156102e557600080fd5b506101546102f436600461148a565b610d31565b610301610da7565b61030a81610e01565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906117b0565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d081610e7d565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611867565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611427565b610458600183016000611427565b505050565b60ca60205260009081526040902080548190610478906117b0565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906117b0565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906117b0565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b81526004016103539061189d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611b92833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b8152600401610353906118e9565b61064981610f84565b6040805160008082526020820190925261066591839190610f8c565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b81526004016103539061189d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611b92833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b8152600401610353906118e9565b61072882610f84565b61073482826001610f8c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611b9283398151915290565b60c95460609081908067ffffffffffffffff81111561080c5761080c61152c565b604051908082528060200260200182016040528015610835578160200160208202803683370190505b5092508067ffffffffffffffff8111156108515761085161152c565b60405190808252806020026020018201604052801561089657816020015b604080518082019091526060808252602082015281526020019060019003908161086f5790505b50915060005b81811015610aa05760c981815481106108b7576108b7611935565b9060005260206000200160009054906101000a90046001600160a01b03168482815181106108e7576108e7611935565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061091e5761091e611935565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095c906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610988906117b0565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505081526020016001820180546109ee906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a906117b0565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b505050505081525050838281518110610a8257610a82611935565b60200260200101819052508080610a9890611961565b91505061089c565b50509091565b610aae610da7565b610ab860006110f7565b565b6001600160a01b038516600090815260ca602052604090208054610add906117b0565b9050600003610b325760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b0387161790555b6040805160606020601f87018190040282018101835291810185815290918291908790879081908501838280828437600092019190915250505090825250604080516020601f86018190048102820181019092528481529181019190859085908190840183828082843760009201829052509390945250506001600160a01b038816815260ca6020526040902082519091508190610bd090826119c8565b5060208201516001820190610be590826119c8565b5050505050505050565b600054610100900460ff1615808015610c0f5750600054600160ff909116105b80610c295750303b158015610c29575060005460ff166001145b610c8c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610caf576000805461ff0019166101001790555b610cb7611149565b610cbf611178565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610d1757600080fd5b6000918252602090912001546001600160a01b0316905081565b610d39610da7565b6001600160a01b038116610d9e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b610665816110f7565b6097546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa925050508015610e66575060408051601f3d908101601f19168201909252610e6391810190611a88565b60015b610e7257506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c98281548110610ea757610ea7611935565b6000918252602090912001546001600160a01b031603610f725760c98054610ed190600190611ad5565b81548110610ee157610ee1611935565b60009182526020909120015460c980546001600160a01b039092169183908110610f0d57610f0d611935565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c9805480610f4c57610f4c611ae8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f7c81611961565b915050610e80565b610665610da7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610fbf576104588361119f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611019575060408051601f3d908101601f1916820190925261101691810190611afe565b60015b61107c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611b9283398151915281146110eb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361123b565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166111705760405162461bcd60e51b815260040161035390611b17565b610ab8611266565b600054610100900460ff16610ab85760405162461bcd60e51b815260040161035390611b17565b6001600160a01b0381163b61120c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611b9283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61124483611296565b6000825111806112515750805b156104585761126083836112d6565b50505050565b600054610100900460ff1661128d5760405162461bcd60e51b815260040161035390611b17565b610ab8336110f7565b61129f8161119f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606112fb8383604051806060016040528060278152602001611bb260279139611304565b90505b92915050565b6060600080856001600160a01b0316856040516113219190611b62565b600060405180830381855af49150503d806000811461135c576040519150601f19603f3d011682016040523d82523d6000602084013e611361565b606091505b50915091506113728683838761137c565b9695505050505050565b606083156113eb5782516000036113e4576001600160a01b0385163b6113e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b50816113f5565b6113f583836113fd565b949350505050565b81511561140d5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611b7e565b508054611433906117b0565b6000825580601f10611443575050565b601f01602090049060005260206000209081019061066591905b80821115611471576000815560010161145d565b5090565b6001600160a01b038116811461066557600080fd5b60006020828403121561149c57600080fd5b81356114a781611475565b9392505050565b60005b838110156114c95781810151838201526020016114b1565b50506000910152565b600081518084526114ea8160208601602086016114ae565b601f01601f19169290920160200192915050565b60408152600061151160408301856114d2565b828103602084015261152381856114d2565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561155557600080fd5b823561156081611475565b9150602083013567ffffffffffffffff8082111561157d57600080fd5b818501915085601f83011261159157600080fd5b8135818111156115a3576115a361152c565b604051601f8201601f19908116603f011681019083821181831017156115cb576115cb61152c565b816040528281528860208487010111156115e457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b828110156116495781516001600160a01b031684529284019290840190600101611624565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156116bb57858303601f190185528151805189855261168f8a8601826114d2565b91890151858303868b01529190506116a781836114d2565b96890196945050509086019060010161166b565b50909a9950505050505050505050565b60008083601f8401126116dd57600080fd5b50813567ffffffffffffffff8111156116f557600080fd5b60208301915083602082850101111561170d57600080fd5b9250929050565b60008060008060006060868803121561172c57600080fd5b853561173781611475565b9450602086013567ffffffffffffffff8082111561175457600080fd5b61176089838a016116cb565b9096509450604088013591508082111561177957600080fd5b50611786888289016116cb565b969995985093965092949392505050565b6000602082840312156117a957600080fd5b5035919050565b600181811c908216806117c457607f821691505b6020821081036117e457634e487b7160e01b600052602260045260246000fd5b50919050565b600081546117f7816117b0565b808552602060018381168015611814576001811461182e5761185c565b60ff1985168884015283151560051b88018301955061185c565b866000528260002060005b858110156118545781548a8201860152908301908401611839565b890184019650505b505050505092915050565b6001600160a01b038416815260606020820181905260009061188b908301856117ea565b828103604084015261137281856117ea565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016119735761197361194b565b5060010190565b601f82111561045857600081815260208120601f850160051c810160208610156119a15750805b601f850160051c820191505b818110156119c0578281556001016119ad565b505050505050565b815167ffffffffffffffff8111156119e2576119e261152c565b6119f6816119f084546117b0565b8461197a565b602080601f831160018114611a2b5760008415611a135750858301515b600019600386901b1c1916600185901b1785556119c0565b600085815260208120601f198616915b82811015611a5a57888601518255948401946001909101908401611a3b565b5085821015611a785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080600060608486031215611a9d57600080fd5b8351611aa881611475565b6020850151909350611ab981611475565b6040850151909250611aca81611475565b809150509250925092565b818103818111156112fe576112fe61194b565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611b1057600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611b748184602087016114ae565b9190910192915050565b6020815260006112fb60208301846114d256fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204517eb226c4a33a85e75ffe90e18c8c4c7edf5c8c4de7caf75ff01f7cc617ca064736f6c63430008130033` -// KIP113MockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use KIP113MockMetaData.Sigs instead. +// KIP113MockFuncSigs maps the 4-byte function signature to its string representation. var KIP113MockFuncSigs = KIP113MockMetaData.Sigs // KIP113MockBin is the compiled bytecode used for deploying new contracts. @@ -6597,6 +6718,7 @@ func (_KIP113Mock *KIP113MockTransactorRaw) Transact(opts *bind.TransactOpts, me func (_KIP113Mock *KIP113MockCaller) ZERO48HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "ZERO48HASH") + if err != nil { return *new([32]byte), err } @@ -6604,6 +6726,7 @@ func (_KIP113Mock *KIP113MockCaller) ZERO48HASH(opts *bind.CallOpts) ([32]byte, out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO48HASH is a free data retrieval call binding the contract method 0x6fc522c6. @@ -6626,6 +6749,7 @@ func (_KIP113Mock *KIP113MockCallerSession) ZERO48HASH() ([32]byte, error) { func (_KIP113Mock *KIP113MockCaller) ZERO96HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "ZERO96HASH") + if err != nil { return *new([32]byte), err } @@ -6633,6 +6757,7 @@ func (_KIP113Mock *KIP113MockCaller) ZERO96HASH(opts *bind.CallOpts) ([32]byte, out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO96HASH is a free data retrieval call binding the contract method 0x20abd458. @@ -6655,6 +6780,7 @@ func (_KIP113Mock *KIP113MockCallerSession) ZERO96HASH() ([32]byte, error) { func (_KIP113Mock *KIP113MockCaller) Abook(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "abook") + if err != nil { return *new(common.Address), err } @@ -6662,6 +6788,7 @@ func (_KIP113Mock *KIP113MockCaller) Abook(opts *bind.CallOpts) (common.Address, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Abook is a free data retrieval call binding the contract method 0x829d639d. @@ -6684,6 +6811,7 @@ func (_KIP113Mock *KIP113MockCallerSession) Abook() (common.Address, error) { func (_KIP113Mock *KIP113MockCaller) AllNodeIds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "allNodeIds", arg0) + if err != nil { return *new(common.Address), err } @@ -6691,6 +6819,7 @@ func (_KIP113Mock *KIP113MockCaller) AllNodeIds(opts *bind.CallOpts, arg0 *big.I out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AllNodeIds is a free data retrieval call binding the contract method 0xa5834971. @@ -6713,8 +6842,7 @@ func (_KIP113Mock *KIP113MockCallerSession) AllNodeIds(arg0 *big.Int) (common.Ad func (_KIP113Mock *KIP113MockCaller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "getAllBlsInfo") @@ -6722,10 +6850,15 @@ func (_KIP113Mock *KIP113MockCaller) GetAllBlsInfo(opts *bind.CallOpts) (struct NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo }) + if err != nil { + return *outstruct, err + } outstruct.NodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.PubkeyList = *abi.ConvertType(out[1], new([]IKIP113BlsPublicKeyInfo)).(*[]IKIP113BlsPublicKeyInfo) + return *outstruct, err + } // GetAllBlsInfo is a free data retrieval call binding the contract method 0x6968b53f. @@ -6734,8 +6867,7 @@ func (_KIP113Mock *KIP113MockCaller) GetAllBlsInfo(opts *bind.CallOpts) (struct func (_KIP113Mock *KIP113MockSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _KIP113Mock.Contract.GetAllBlsInfo(&_KIP113Mock.CallOpts) } @@ -6745,8 +6877,7 @@ func (_KIP113Mock *KIP113MockSession) GetAllBlsInfo() (struct { func (_KIP113Mock *KIP113MockCallerSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _KIP113Mock.Contract.GetAllBlsInfo(&_KIP113Mock.CallOpts) } @@ -6756,6 +6887,7 @@ func (_KIP113Mock *KIP113MockCallerSession) GetAllBlsInfo() (struct { func (_KIP113Mock *KIP113MockCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -6763,6 +6895,7 @@ func (_KIP113Mock *KIP113MockCaller) Owner(opts *bind.CallOpts) (common.Address, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -6785,6 +6918,7 @@ func (_KIP113Mock *KIP113MockCallerSession) Owner() (common.Address, error) { func (_KIP113Mock *KIP113MockCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -6792,6 +6926,7 @@ func (_KIP113Mock *KIP113MockCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -6814,8 +6949,7 @@ func (_KIP113Mock *KIP113MockCallerSession) ProxiableUUID() ([32]byte, error) { func (_KIP113Mock *KIP113MockCaller) Record(opts *bind.CallOpts, arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { var out []interface{} err := _KIP113Mock.contract.Call(opts, &out, "record", arg0) @@ -6823,10 +6957,15 @@ func (_KIP113Mock *KIP113MockCaller) Record(opts *bind.CallOpts, arg0 common.Add PublicKey []byte Pop []byte }) + if err != nil { + return *outstruct, err + } outstruct.PublicKey = *abi.ConvertType(out[0], new([]byte)).(*[]byte) outstruct.Pop = *abi.ConvertType(out[1], new([]byte)).(*[]byte) + return *outstruct, err + } // Record is a free data retrieval call binding the contract method 0x3465d6d5. @@ -6835,8 +6974,7 @@ func (_KIP113Mock *KIP113MockCaller) Record(opts *bind.CallOpts, arg0 common.Add func (_KIP113Mock *KIP113MockSession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _KIP113Mock.Contract.Record(&_KIP113Mock.CallOpts, arg0) } @@ -6846,8 +6984,7 @@ func (_KIP113Mock *KIP113MockSession) Record(arg0 common.Address) (struct { func (_KIP113Mock *KIP113MockCallerSession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _KIP113Mock.Contract.Record(&_KIP113Mock.CallOpts, arg0) } @@ -7076,6 +7213,7 @@ type KIP113MockAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_KIP113Mock *KIP113MockFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*KIP113MockAdminChangedIterator, error) { + logs, sub, err := _KIP113Mock.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -7087,6 +7225,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterAdminChanged(opts *bind.FilterOpts) // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_KIP113Mock *KIP113MockFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *KIP113MockAdminChanged) (event.Subscription, error) { + logs, sub, err := _KIP113Mock.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -7127,6 +7266,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseAdminChanged(log types.Log) (*KIP113 if err := _KIP113Mock.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7207,6 +7347,7 @@ type KIP113MockBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_KIP113Mock *KIP113MockFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*KIP113MockBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -7223,6 +7364,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterBeaconUpgraded(opts *bind.FilterOpt // // Solidity: event BeaconUpgraded(address indexed beacon) func (_KIP113Mock *KIP113MockFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *KIP113MockBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -7268,6 +7410,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseBeaconUpgraded(log types.Log) (*KIP1 if err := _KIP113Mock.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7348,6 +7491,7 @@ type KIP113MockInitialized struct { // // Solidity: event Initialized(uint8 version) func (_KIP113Mock *KIP113MockFilterer) FilterInitialized(opts *bind.FilterOpts) (*KIP113MockInitializedIterator, error) { + logs, sub, err := _KIP113Mock.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -7359,6 +7503,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterInitialized(opts *bind.FilterOpts) // // Solidity: event Initialized(uint8 version) func (_KIP113Mock *KIP113MockFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *KIP113MockInitialized) (event.Subscription, error) { + logs, sub, err := _KIP113Mock.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -7399,6 +7544,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseInitialized(log types.Log) (*KIP113M if err := _KIP113Mock.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7480,6 +7626,7 @@ type KIP113MockOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_KIP113Mock *KIP113MockFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*KIP113MockOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7500,6 +7647,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterOwnershipTransferred(opts *bind.Fil // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_KIP113Mock *KIP113MockFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *KIP113MockOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -7549,6 +7697,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseOwnershipTransferred(log types.Log) if err := _KIP113Mock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7631,6 +7780,7 @@ type KIP113MockRegistered struct { // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_KIP113Mock *KIP113MockFilterer) FilterRegistered(opts *bind.FilterOpts) (*KIP113MockRegisteredIterator, error) { + logs, sub, err := _KIP113Mock.contract.FilterLogs(opts, "Registered") if err != nil { return nil, err @@ -7642,6 +7792,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterRegistered(opts *bind.FilterOpts) ( // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_KIP113Mock *KIP113MockFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *KIP113MockRegistered) (event.Subscription, error) { + logs, sub, err := _KIP113Mock.contract.WatchLogs(opts, "Registered") if err != nil { return nil, err @@ -7682,6 +7833,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseRegistered(log types.Log) (*KIP113Mo if err := _KIP113Mock.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7764,6 +7916,7 @@ type KIP113MockUnregistered struct { // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_KIP113Mock *KIP113MockFilterer) FilterUnregistered(opts *bind.FilterOpts) (*KIP113MockUnregisteredIterator, error) { + logs, sub, err := _KIP113Mock.contract.FilterLogs(opts, "Unregistered") if err != nil { return nil, err @@ -7775,6 +7928,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterUnregistered(opts *bind.FilterOpts) // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_KIP113Mock *KIP113MockFilterer) WatchUnregistered(opts *bind.WatchOpts, sink chan<- *KIP113MockUnregistered) (event.Subscription, error) { + logs, sub, err := _KIP113Mock.contract.WatchLogs(opts, "Unregistered") if err != nil { return nil, err @@ -7815,6 +7969,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseUnregistered(log types.Log) (*KIP113 if err := _KIP113Mock.contract.UnpackLog(event, "Unregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7895,6 +8050,7 @@ type KIP113MockUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_KIP113Mock *KIP113MockFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*KIP113MockUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -7911,6 +8067,7 @@ func (_KIP113Mock *KIP113MockFilterer) FilterUpgraded(opts *bind.FilterOpts, imp // // Solidity: event Upgraded(address indexed implementation) func (_KIP113Mock *KIP113MockFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *KIP113MockUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -7956,6 +8113,7 @@ func (_KIP113Mock *KIP113MockFilterer) ParseUpgraded(log types.Log) (*KIP113Mock if err := _KIP113Mock.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -7975,8 +8133,8 @@ var MultiCallContractMockABI = MultiCallContractMockMetaData.ABI // MultiCallContractMockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const MultiCallContractMockBinRuntime = `608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adde19c614610030575b600080fd5b610038610050565b6040516100479392919061049c565b60405180910390f35b606080806104003b156101db5760006104009050806001600160a01b031663715b208b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156100a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526100ca9190810190610622565b80519195509350600511156100ed576100e16101ee565b93509350935050909192565b6000600284516100fd9190610704565b905061010a600382610733565b15610116575050909192565b610121600382610747565b67ffffffffffffffff81111561013957610139610536565b604051908082528060200260200182016040528015610162578160200160208202803683370190505b50925060005b818110156101d357610185816a0422ca8b0a00a42500000061075b565b61019a906a0422ca8b0a00a425000000610772565b846101a6600384610747565b815181106101b6576101b6610785565b60209081029190910101526101cc600382610772565b9050610168565b505050909192565b6101e36101ee565b925092509250909192565b60408051600580825260c08201909252606091829182916020820160a080368337505060408051600580825260c0820190925292955090506020820160a080368337505060408051600180825281830190925292945090506020808301908036833701905050905060008360008151811061026b5761026b610785565b602002602001019060ff16908160ff168152505060018360018151811061029457610294610785565b602002602001019060ff16908160ff16815250506002836002815181106102bd576102bd610785565b602002602001019060ff16908160ff16815250506003836003815181106102e6576102e6610785565b602002602001019060ff16908160ff168152505060048360048151811061030f5761030f610785565b602002602001019060ff16908160ff1681525050610f008260008151811061033957610339610785565b60200260200101906001600160a01b031690816001600160a01b031681525050610f018260018151811061036f5761036f610785565b60200260200101906001600160a01b031690816001600160a01b031681525050610f02826002815181106103a5576103a5610785565b60200260200101906001600160a01b031690816001600160a01b031681525050610f03826003815181106103db576103db610785565b60200260200101906001600160a01b031690816001600160a01b031681525050610f048260048151811061041157610411610785565b60200260200101906001600160a01b031690816001600160a01b0316815250506a05ca4ec2a79a7f670000008160008151811061045057610450610785565b602002602001018181525050909192565b600081518084526020808501945080840160005b8381101561049157815187529582019590820190600101610475565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156104d857815160ff16845292840192908401906001016104b9565b5050508381038285015285518082528683019183019060005b818110156105165783516001600160a01b0316835292840192918401916001016104f1565b5050848103604086015261052a8187610461565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561057557610575610536565b604052919050565b600067ffffffffffffffff82111561059757610597610536565b5060051b60200190565b600082601f8301126105b257600080fd5b815160206105c76105c28361057d565b61054c565b82815260059290921b840181019181810190868411156105e657600080fd5b8286015b848110156106175780516001600160a01b038116811461060a5760008081fd5b83529183019183016105ea565b509695505050505050565b6000806040838503121561063557600080fd5b825167ffffffffffffffff8082111561064d57600080fd5b818501915085601f83011261066157600080fd5b815160206106716105c28361057d565b82815260059290921b8401810191818101908984111561069057600080fd5b948201945b838610156106be57855160ff811681146106af5760008081fd5b82529482019490820190610695565b918801519196509093505050808211156106d757600080fd5b506106e4858286016105a1565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610717576107176106ee565b92915050565b634e487b7160e01b600052601260045260246000fd5b6000826107425761074261071d565b500690565b6000826107565761075661071d565b500490565b8082028115828204841417610717576107176106ee565b80820180821115610717576107176106ee565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220f2ac8e4d24c79c01e50494b6f6510123053ef31a3baddd1bc66cb8bbb7f6494c64736f6c63430008130033` -// MultiCallContractMockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use MultiCallContractMockMetaData.Sigs instead. +// MultiCallContractMockFuncSigs maps the 4-byte function signature to its string representation. var MultiCallContractMockFuncSigs = MultiCallContractMockMetaData.Sigs // MultiCallContractMockBin is the compiled bytecode used for deploying new contracts. @@ -8149,8 +8307,7 @@ func (_MultiCallContractMock *MultiCallContractMockCaller) MultiCallStakingInfo( TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { var out []interface{} err := _MultiCallContractMock.contract.Call(opts, &out, "multiCallStakingInfo") @@ -8159,11 +8316,16 @@ func (_MultiCallContractMock *MultiCallContractMockCaller) MultiCallStakingInfo( AddressList []common.Address StakingAmounts []*big.Int }) + if err != nil { + return *outstruct, err + } outstruct.TypeList = *abi.ConvertType(out[0], new([]uint8)).(*[]uint8) outstruct.AddressList = *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) outstruct.StakingAmounts = *abi.ConvertType(out[2], new([]*big.Int)).(*[]*big.Int) + return *outstruct, err + } // MultiCallStakingInfo is a free data retrieval call binding the contract method 0xadde19c6. @@ -8173,8 +8335,7 @@ func (_MultiCallContractMock *MultiCallContractMockSession) MultiCallStakingInfo TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContractMock.Contract.MultiCallStakingInfo(&_MultiCallContractMock.CallOpts) } @@ -8185,8 +8346,7 @@ func (_MultiCallContractMock *MultiCallContractMockCallerSession) MultiCallStaki TypeList []uint8 AddressList []common.Address StakingAmounts []*big.Int -}, error, -) { +}, error) { return _MultiCallContractMock.Contract.MultiCallStakingInfo(&_MultiCallContractMock.CallOpts) } @@ -8209,8 +8369,8 @@ var OwnableABI = OwnableMetaData.ABI // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableBinRuntime = `608060405234801561001057600080fd5b506004361061004c5760003560e01c8063715018a6146100515780638da5cb5b1461005b5780638f32d59b1461007b578063f2fde38b14610099575b600080fd5b6100596100ac565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6000546001600160a01b031633146040519015158152602001610072565b6100596100a736600461027b565b610155565b6000546001600160a01b0316331461010b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146101af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610102565b6101b8816101bb565b50565b6001600160a01b0381166102205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610102565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561028d57600080fd5b81356001600160a01b03811681146102a457600080fd5b939250505056fea2646970667358221220f69393ded8e7101091799304ce90e6a51b8cf5e03b617676571c199bd79c95d964736f6c63430008130033` -// OwnableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableMetaData.Sigs instead. +// OwnableFuncSigs maps the 4-byte function signature to its string representation. var OwnableFuncSigs = OwnableMetaData.Sigs // OwnableBin is the compiled bytecode used for deploying new contracts. @@ -8382,6 +8542,7 @@ func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method s func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -8389,6 +8550,7 @@ func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) { out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -8411,6 +8573,7 @@ func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) { func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _Ownable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -8418,6 +8581,7 @@ func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -8554,6 +8718,7 @@ type OwnableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -8574,6 +8739,7 @@ func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpt // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -8623,6 +8789,7 @@ func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*Owna if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -8643,8 +8810,8 @@ var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI // OwnableUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const OwnableUpgradeableBinRuntime = `` -// OwnableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use OwnableUpgradeableMetaData.Sigs instead. +// OwnableUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var OwnableUpgradeableFuncSigs = OwnableUpgradeableMetaData.Sigs // OwnableUpgradeable is an auto generated Go binding around a Kaia contract. @@ -8795,6 +8962,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind. func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -8802,6 +8970,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -8937,6 +9106,7 @@ type OwnableUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -8948,6 +9118,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *b // // Solidity: event Initialized(uint8 version) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -8988,6 +9159,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log type if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9069,6 +9241,7 @@ type OwnableUpgradeableOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9089,6 +9262,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferre // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9138,6 +9312,7 @@ func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9164,8 +9339,8 @@ var RegistryMockABI = RegistryMockMetaData.ABI // RegistryMockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const RegistryMockBinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c8063d393c8711161005b578063d393c87114610129578063e2693e3f1461013e578063f2fde38b14610151578063fb825e5f1461018157600080fd5b80633b51650d1461008d5780634622ab03146100c457806378d573a2146100e45780638da5cb5b14610104575b600080fd5b6100a061009b366004610611565b610196565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6100d76100d2366004610656565b6101eb565b6040516100bb91906106bf565b6100f76100f23660046106d9565b610297565b6040516100bb9190610716565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100bb565b61013c61013736600461078a565b61032a565b005b61011161014c3660046106d9565b6103fd565b61013c61015f3660046107e1565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610189610495565b6040516100bb91906107fc565b815160208184018101805160008252928201918501919091209190528054829081106101c157600080fd5b6000918252602090912060029091020180546001909101546001600160a01b039091169250905082565b600181815481106101fb57600080fd5b9060005260206000200160009150905080546102169061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102429061085e565b801561028f5780601f106102645761010080835404028352916020019161028f565b820191906000526020600020905b81548152906001019060200180831161027257829003601f168201915b505050505081565b60606000826040516102a99190610892565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b8282101561031f576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016102d7565b505050509050919050565b60008360405161033a9190610892565b9081526040519081900360200190205460000361038e576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60161038c84826108fd565b505b60008360405161039e9190610892565b90815260408051602092819003830181208183019092526001600160a01b039485168152828101938452815460018082018455600093845293909220905160029092020180546001600160a01b03191691909416178355905191015550565b6000806000836040516104109190610892565b90815260405190819003602001902054905060008190036104345750600092915050565b6000836040516104449190610892565b90815260405190819003602001902061045e6001836109bd565b8154811061046e5761046e6109e4565b60009182526020909120600290910201546001600160a01b03169392505050565b50919050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156105655783829060005260206000200180546104d89061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546105049061085e565b80156105515780601f1061052657610100808354040283529160200191610551565b820191906000526020600020905b81548152906001019060200180831161053457829003601f168201915b5050505050815260200190600101906104b9565b50505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261059557600080fd5b813567ffffffffffffffff808211156105b0576105b061056e565b604051601f8301601f19908116603f011681019082821181831017156105d8576105d861056e565b816040528381528660208588010111156105f157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561062457600080fd5b823567ffffffffffffffff81111561063b57600080fd5b61064785828601610584565b95602094909401359450505050565b60006020828403121561066857600080fd5b5035919050565b60005b8381101561068a578181015183820152602001610672565b50506000910152565b600081518084526106ab81602086016020860161066f565b601f01601f19169290920160200192915050565b6020815260006106d26020830184610693565b9392505050565b6000602082840312156106eb57600080fd5b813567ffffffffffffffff81111561070257600080fd5b61070e84828501610584565b949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561076157815180516001600160a01b03168552860151868501529284019290850190600101610733565b5091979650505050505050565b80356001600160a01b038116811461078557600080fd5b919050565b60008060006060848603121561079f57600080fd5b833567ffffffffffffffff8111156107b657600080fd5b6107c286828701610584565b9350506107d16020850161076e565b9150604084013590509250925092565b6000602082840312156107f357600080fd5b6106d28261076e565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561085157603f1988860301845261083f858351610693565b94509285019290850190600101610823565b5092979650505050505050565b600181811c9082168061087257607f821691505b60208210810361048f57634e487b7160e01b600052602260045260246000fd5b600082516108a481846020870161066f565b9190910192915050565b601f8211156108f857600081815260208120601f850160051c810160208610156108d55750805b601f850160051c820191505b818110156108f4578281556001016108e1565b5050505b505050565b815167ffffffffffffffff8111156109175761091761056e565b61092b81610925845461085e565b846108ae565b602080601f83116001811461096057600084156109485750858301515b600019600386901b1c1916600185901b1785556108f4565b600085815260208120601f198616915b8281101561098f57888601518255948401946001909101908401610970565b50858210156109ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156109de57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212208aa6995d7414319988b283700f3d13d71f5535995f7d57dc72e108de3cc3761264736f6c63430008130033` -// RegistryMockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use RegistryMockMetaData.Sigs instead. +// RegistryMockFuncSigs maps the 4-byte function signature to its string representation. var RegistryMockFuncSigs = RegistryMockMetaData.Sigs // RegistryMockBin is the compiled bytecode used for deploying new contracts. @@ -9337,6 +9512,7 @@ func (_RegistryMock *RegistryMockTransactorRaw) Transact(opts *bind.TransactOpts func (_RegistryMock *RegistryMockCaller) GetActiveAddr(opts *bind.CallOpts, name string) (common.Address, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "getActiveAddr", name) + if err != nil { return *new(common.Address), err } @@ -9344,6 +9520,7 @@ func (_RegistryMock *RegistryMockCaller) GetActiveAddr(opts *bind.CallOpts, name out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // GetActiveAddr is a free data retrieval call binding the contract method 0xe2693e3f. @@ -9366,6 +9543,7 @@ func (_RegistryMock *RegistryMockCallerSession) GetActiveAddr(name string) (comm func (_RegistryMock *RegistryMockCaller) GetAllNames(opts *bind.CallOpts) ([]string, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "getAllNames") + if err != nil { return *new([]string), err } @@ -9373,6 +9551,7 @@ func (_RegistryMock *RegistryMockCaller) GetAllNames(opts *bind.CallOpts) ([]str out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) return out0, err + } // GetAllNames is a free data retrieval call binding the contract method 0xfb825e5f. @@ -9395,6 +9574,7 @@ func (_RegistryMock *RegistryMockCallerSession) GetAllNames() ([]string, error) func (_RegistryMock *RegistryMockCaller) GetAllRecords(opts *bind.CallOpts, name string) ([]IRegistryRecord, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "getAllRecords", name) + if err != nil { return *new([]IRegistryRecord), err } @@ -9402,6 +9582,7 @@ func (_RegistryMock *RegistryMockCaller) GetAllRecords(opts *bind.CallOpts, name out0 := *abi.ConvertType(out[0], new([]IRegistryRecord)).(*[]IRegistryRecord) return out0, err + } // GetAllRecords is a free data retrieval call binding the contract method 0x78d573a2. @@ -9424,6 +9605,7 @@ func (_RegistryMock *RegistryMockCallerSession) GetAllRecords(name string) ([]IR func (_RegistryMock *RegistryMockCaller) Names(opts *bind.CallOpts, arg0 *big.Int) (string, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "names", arg0) + if err != nil { return *new(string), err } @@ -9431,6 +9613,7 @@ func (_RegistryMock *RegistryMockCaller) Names(opts *bind.CallOpts, arg0 *big.In out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Names is a free data retrieval call binding the contract method 0x4622ab03. @@ -9453,6 +9636,7 @@ func (_RegistryMock *RegistryMockCallerSession) Names(arg0 *big.Int) (string, er func (_RegistryMock *RegistryMockCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -9460,6 +9644,7 @@ func (_RegistryMock *RegistryMockCaller) Owner(opts *bind.CallOpts) (common.Addr out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -9482,8 +9667,7 @@ func (_RegistryMock *RegistryMockCallerSession) Owner() (common.Address, error) func (_RegistryMock *RegistryMockCaller) Records(opts *bind.CallOpts, arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { var out []interface{} err := _RegistryMock.contract.Call(opts, &out, "records", arg0, arg1) @@ -9491,10 +9675,15 @@ func (_RegistryMock *RegistryMockCaller) Records(opts *bind.CallOpts, arg0 strin Addr common.Address Activation *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Activation = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Records is a free data retrieval call binding the contract method 0x3b51650d. @@ -9503,8 +9692,7 @@ func (_RegistryMock *RegistryMockCaller) Records(opts *bind.CallOpts, arg0 strin func (_RegistryMock *RegistryMockSession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _RegistryMock.Contract.Records(&_RegistryMock.CallOpts, arg0, arg1) } @@ -9514,8 +9702,7 @@ func (_RegistryMock *RegistryMockSession) Records(arg0 string, arg1 *big.Int) (s func (_RegistryMock *RegistryMockCallerSession) Records(arg0 string, arg1 *big.Int) (struct { Addr common.Address Activation *big.Int -}, error, -) { +}, error) { return _RegistryMock.Contract.Records(&_RegistryMock.CallOpts, arg0, arg1) } @@ -9639,6 +9826,7 @@ type RegistryMockOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_RegistryMock *RegistryMockFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*RegistryMockOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9659,6 +9847,7 @@ func (_RegistryMock *RegistryMockFilterer) FilterOwnershipTransferred(opts *bind // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_RegistryMock *RegistryMockFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *RegistryMockOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -9708,6 +9897,7 @@ func (_RegistryMock *RegistryMockFilterer) ParseOwnershipTransferred(log types.L if err := _RegistryMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9790,6 +9980,7 @@ type RegistryMockRegistered struct { // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_RegistryMock *RegistryMockFilterer) FilterRegistered(opts *bind.FilterOpts, addr []common.Address, activation []*big.Int) (*RegistryMockRegisteredIterator, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -9810,6 +10001,7 @@ func (_RegistryMock *RegistryMockFilterer) FilterRegistered(opts *bind.FilterOpt // // Solidity: event Registered(string name, address indexed addr, uint256 indexed activation) func (_RegistryMock *RegistryMockFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *RegistryMockRegistered, addr []common.Address, activation []*big.Int) (event.Subscription, error) { + var addrRule []interface{} for _, addrItem := range addr { addrRule = append(addrRule, addrItem) @@ -9859,6 +10051,7 @@ func (_RegistryMock *RegistryMockFilterer) ParseRegistered(log types.Log) (*Regi if err := _RegistryMock.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -9892,8 +10085,8 @@ var SimpleBlsRegistryABI = SimpleBlsRegistryMetaData.ABI // SimpleBlsRegistryBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const SimpleBlsRegistryBinRuntime = `6080604052600436106100e85760003560e01c80636fc522c61161008a578063829d639d11610059578063829d639d1461026d5780638da5cb5b1461029b578063a5834971146102b9578063f2fde38b146102d957600080fd5b80636fc522c6146101ef578063715018a614610223578063786cd4d7146102385780638129fc1c1461025857600080fd5b80633659cfe6116100c65780633659cfe6146101845780634f1ef286146101a457806352d1902d146101b75780636968b53f146101cc57600080fd5b806320abd458146100ed5780632ec2c246146101345780633465d6d514610156575b600080fd5b3480156100f957600080fd5b506101217f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2181565b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061015461014f3660046116cb565b6102f9565b005b34801561016257600080fd5b506101766101713660046116cb565b61045d565b60405161012b92919061173f565b34801561019057600080fd5b5061015461019f3660046116cb565b610589565b6101546101b2366004611783565b610668565b3480156101c357600080fd5b50610121610738565b3480156101d857600080fd5b506101e16107eb565b60405161012b929190611847565b3480156101fb57600080fd5b506101217fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29381565b34801561022f57600080fd5b50610154610aa8565b34801561024457600080fd5b50610154610253366004611955565b610abc565b34801561026457600080fd5b50610154610e30565b34801561027957600080fd5b5061028361040081565b6040516001600160a01b03909116815260200161012b565b3480156102a757600080fd5b506097546001600160a01b0316610283565b3480156102c557600080fd5b506102836102d43660046119d8565b610f48565b3480156102e557600080fd5b506101546102f43660046116cb565b610f72565b610301610fe8565b61030a81611042565b1561035c5760405162461bcd60e51b815260206004820152601a60248201527f434e206973207374696c6c20696e2041646472657373426f6f6b00000000000060448201526064015b60405180910390fd5b6001600160a01b038116600090815260ca60205260409020805461037f906119f1565b90506000036103c75760405162461bcd60e51b815260206004820152601460248201527310d3881a5cc81b9bdd081c9959da5cdd195c995960621b6044820152606401610353565b6103d0816110be565b6001600160a01b038116600090815260ca60205260409081902090517fb98b07c4d52e8d65fa5416810f2746a810eb074b1ac7784e1b07e315c0dfd2d99161041f918491906001820190611aa8565b60405180910390a16001600160a01b038116600090815260ca602052604081209061044a8282611668565b610458600183016000611668565b505050565b60ca60205260009081526040902080548190610478906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104a4906119f1565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505090806001018054610506906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610532906119f1565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905082565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105d15760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061a600080516020611e50833981519152546001600160a01b031690565b6001600160a01b0316146106405760405162461bcd60e51b815260040161035390611b2a565b610649816111c5565b60408051600080825260208201909252610665918391906111cd565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b05760405162461bcd60e51b815260040161035390611ade565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106f9600080516020611e50833981519152546001600160a01b031690565b6001600160a01b03161461071f5760405162461bcd60e51b815260040161035390611b2a565b610728826111c5565b610734828260016111cd565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610353565b50600080516020611e5083398151915290565b60c954606090819067ffffffffffffffff81111561080b5761080b61176d565b604051908082528060200260200182016040528015610834578160200160208202803683370190505b5060c95490925067ffffffffffffffff8111156108535761085361176d565b60405190808252806020026020018201604052801561089857816020015b60408051808201909152606080825260208201528152602001906001900390816108715790505b50905060005b8251811015610aa35760c981815481106108ba576108ba611b76565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106108ea576108ea611b76565b60200260200101906001600160a01b031690816001600160a01b03168152505060ca600060c9838154811061092157610921611b76565b60009182526020808320909101546001600160a01b031683528201929092526040908101909120815180830190925280548290829061095f906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906119f1565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b505050505081526020016001820180546109f1906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d906119f1565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b505050505081525050828281518110610a8557610a85611b76565b60200260200101819052508080610a9b90611ba2565b91505061089e565b509091565b610ab0610fe8565b610aba6000611338565b565b610ac4610fe8565b838360308114610b165760405162461bcd60e51b815260206004820152601b60248201527f5075626c6963206b6579206d75737420626520343820627974657300000000006044820152606401610353565b6040517fc980e59163ce244bb4bb6211f48c7b46f88a4f40943e84eb99bdc41e129bd29390610b489084908490611bbb565b604051809103902003610b9d5760405162461bcd60e51b815260206004820152601960248201527f5075626c6963206b65792063616e6e6f74206265207a65726f000000000000006044820152606401610353565b838360608114610be65760405162461bcd60e51b8152602060048201526014602482015273506f70206d75737420626520393620627974657360601b6044820152606401610353565b6040517f46700b4d40ac5c35af2c22dda2787a91eb567b06c924a8fb8ae9a05b20c08c2190610c189084908490611bbb565b604051809103902003610c625760405162461bcd60e51b8152602060048201526012602482015271506f702063616e6e6f74206265207a65726f60701b6044820152606401610353565b610c6b89611042565b610cb75760405162461bcd60e51b815260206004820152601e60248201527f636e4e6f64654964206973206e6f7420696e2041646472657373426f6f6b00006044820152606401610353565b6001600160a01b038916600090815260ca602052604090208054610cda906119f1565b9050600003610d2f5760c980546001810182556000919091527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d280180546001600160a01b0319166001600160a01b038b161790555b6040805160606020601f8b018190040282018101835291810189815290918291908b908b9081908501838280828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509390945250506001600160a01b038c16815260ca6020526040902082519091508190610dcd9082611c19565b5060208201516001820190610de29082611c19565b509050507f79c75399e89a1f580d9a6252cb8bdcf4cd80f73b3597c94d845eb52174ad930f8989898989604051610e1d959493929190611d02565b60405180910390a1505050505050505050565b600054610100900460ff1615808015610e505750600054600160ff909116105b80610e6a5750303b158015610e6a575060005460ff166001145b610ecd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610353565b6000805460ff191660011790558015610ef0576000805461ff0019166101001790555b610ef861138a565b610f006113b9565b8015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60c98181548110610f5857600080fd5b6000918252602090912001546001600160a01b0316905081565b610f7a610fe8565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610353565b61066581611338565b6097546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610353565b604051630aabaead60e11b81526001600160a01b0382166004820152600090610400906315575d5a90602401606060405180830381865afa9250505080156110a7575060408051601f3d908101601f191682019092526110a491810190611d46565b60015b6110b357506000919050565b506001949350505050565b60005b60c95481101561073457816001600160a01b031660c982815481106110e8576110e8611b76565b6000918252602090912001546001600160a01b0316036111b35760c9805461111290600190611d93565b8154811061112257611122611b76565b60009182526020909120015460c980546001600160a01b03909216918390811061114e5761114e611b76565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c980548061118d5761118d611da6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111bd81611ba2565b9150506110c1565b610665610fe8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561120057610458836113e0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561125a575060408051601f3d908101601f1916820190925261125791810190611dbc565b60015b6112bd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610353565b600080516020611e50833981519152811461132c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610353565b5061045883838361147c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113b15760405162461bcd60e51b815260040161035390611dd5565b610aba6114a7565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161035390611dd5565b6001600160a01b0381163b61144d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610353565b600080516020611e5083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611485836114d7565b6000825111806114925750805b15610458576114a18383611517565b50505050565b600054610100900460ff166114ce5760405162461bcd60e51b815260040161035390611dd5565b610aba33611338565b6114e0816113e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061153c8383604051806060016040528060278152602001611e7060279139611545565b90505b92915050565b6060600080856001600160a01b0316856040516115629190611e20565b600060405180830381855af49150503d806000811461159d576040519150601f19603f3d011682016040523d82523d6000602084013e6115a2565b606091505b50915091506115b3868383876115bd565b9695505050505050565b6060831561162c578251600003611625576001600160a01b0385163b6116255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610353565b5081611636565b611636838361163e565b949350505050565b81511561164e5781518083602001fd5b8060405162461bcd60e51b81526004016103539190611e3c565b508054611674906119f1565b6000825580601f10611684575050565b601f01602090049060005260206000209081019061066591905b808211156116b2576000815560010161169e565b5090565b6001600160a01b038116811461066557600080fd5b6000602082840312156116dd57600080fd5b81356116e8816116b6565b9392505050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6040815260006117526040830185611713565b82810360208401526117648185611713565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561179657600080fd5b82356117a1816116b6565b9150602083013567ffffffffffffffff808211156117be57600080fd5b818501915085601f8301126117d257600080fd5b8135818111156117e4576117e461176d565b604051601f8201601f19908116603f0116810190838211818310171561180c5761180c61176d565b8160405282815288602084870101111561182557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60408082528351828201819052600091906020906060850190828801855b8281101561188a5781516001600160a01b031684529284019290840190600101611865565b50505084810382860152855180825282820190600581901b8301840188850160005b838110156118fc57858303601f19018552815180518985526118d08a860182611713565b91890151858303868b01529190506118e88183611713565b9689019694505050908601906001016118ac565b50909a9950505050505050505050565b60008083601f84011261191e57600080fd5b50813567ffffffffffffffff81111561193657600080fd5b60208301915083602082850101111561194e57600080fd5b9250929050565b60008060008060006060868803121561196d57600080fd5b8535611978816116b6565b9450602086013567ffffffffffffffff8082111561199557600080fd5b6119a189838a0161190c565b909650945060408801359150808211156119ba57600080fd5b506119c78882890161190c565b969995985093965092949392505050565b6000602082840312156119ea57600080fd5b5035919050565b600181811c90821680611a0557607f821691505b602082108103611a2557634e487b7160e01b600052602260045260246000fd5b50919050565b60008154611a38816119f1565b808552602060018381168015611a555760018114611a6f57611a9d565b60ff1985168884015283151560051b880183019550611a9d565b866000528260002060005b85811015611a955781548a8201860152908301908401611a7a565b890184019650505b505050505092915050565b6001600160a01b0384168152606060208201819052600090611acc90830185611a2b565b82810360408401526115b38185611a2b565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611bb457611bb4611b8c565b5060010190565b8183823760009101908152919050565b601f82111561045857600081815260208120601f850160051c81016020861015611bf25750805b601f850160051c820191505b81811015611c1157828155600101611bfe565b505050505050565b815167ffffffffffffffff811115611c3357611c3361176d565b611c4781611c4184546119f1565b84611bcb565b602080601f831160018114611c7c5760008415611c645750858301515b600019600386901b1c1916600185901b178555611c11565b600085815260208120601f198616915b82811015611cab57888601518255948401946001909101908401611c8c565b5085821015611cc95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201819052600090611d279083018688611cd9565b8281036040840152611d3a818587611cd9565b98975050505050505050565b600080600060608486031215611d5b57600080fd5b8351611d66816116b6565b6020850151909350611d77816116b6565b6040850151909250611d88816116b6565b809150509250925092565b8181038181111561153f5761153f611b8c565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611dce57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611e328184602087016116ef565b9190910192915050565b60208152600061153c602083018461171356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e45843e869e3638b99b6ffbb125e93e972798438114a77f24524b3a66e9788564736f6c63430008130033` -// SimpleBlsRegistryFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use SimpleBlsRegistryMetaData.Sigs instead. +// SimpleBlsRegistryFuncSigs maps the 4-byte function signature to its string representation. var SimpleBlsRegistryFuncSigs = SimpleBlsRegistryMetaData.Sigs // SimpleBlsRegistryBin is the compiled bytecode used for deploying new contracts. @@ -10065,6 +10258,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryTransactorRaw) Transact(opts *bind.Tr func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO48HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "ZERO48HASH") + if err != nil { return *new([32]byte), err } @@ -10072,6 +10266,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO48HASH(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO48HASH is a free data retrieval call binding the contract method 0x6fc522c6. @@ -10094,6 +10289,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ZERO48HASH() ([32]byte func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO96HASH(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "ZERO96HASH") + if err != nil { return *new([32]byte), err } @@ -10101,6 +10297,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ZERO96HASH(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ZERO96HASH is a free data retrieval call binding the contract method 0x20abd458. @@ -10123,6 +10320,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ZERO96HASH() ([32]byte func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Abook(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "abook") + if err != nil { return *new(common.Address), err } @@ -10130,6 +10328,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Abook(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Abook is a free data retrieval call binding the contract method 0x829d639d. @@ -10152,6 +10351,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Abook() (common.Addres func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) AllNodeIds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "allNodeIds", arg0) + if err != nil { return *new(common.Address), err } @@ -10159,6 +10359,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) AllNodeIds(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // AllNodeIds is a free data retrieval call binding the contract method 0xa5834971. @@ -10181,8 +10382,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) AllNodeIds(arg0 *big.I func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.CallOpts) (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "getAllBlsInfo") @@ -10190,10 +10390,15 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.Call NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo }) + if err != nil { + return *outstruct, err + } outstruct.NodeIdList = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) outstruct.PubkeyList = *abi.ConvertType(out[1], new([]IKIP113BlsPublicKeyInfo)).(*[]IKIP113BlsPublicKeyInfo) + return *outstruct, err + } // GetAllBlsInfo is a free data retrieval call binding the contract method 0x6968b53f. @@ -10202,8 +10407,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) GetAllBlsInfo(opts *bind.Call func (_SimpleBlsRegistry *SimpleBlsRegistrySession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.GetAllBlsInfo(&_SimpleBlsRegistry.CallOpts) } @@ -10213,8 +10417,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistrySession) GetAllBlsInfo() (struct { func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) GetAllBlsInfo() (struct { NodeIdList []common.Address PubkeyList []IKIP113BlsPublicKeyInfo -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.GetAllBlsInfo(&_SimpleBlsRegistry.CallOpts) } @@ -10224,6 +10427,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) GetAllBlsInfo() (struc func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -10231,6 +10435,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -10253,6 +10458,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Owner() (common.Addres func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -10260,6 +10466,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) ProxiableUUID(opts *bind.Call out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -10282,8 +10489,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) ProxiableUUID() ([32]b func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { var out []interface{} err := _SimpleBlsRegistry.contract.Call(opts, &out, "record", arg0) @@ -10291,10 +10497,15 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, a PublicKey []byte Pop []byte }) + if err != nil { + return *outstruct, err + } outstruct.PublicKey = *abi.ConvertType(out[0], new([]byte)).(*[]byte) outstruct.Pop = *abi.ConvertType(out[1], new([]byte)).(*[]byte) + return *outstruct, err + } // Record is a free data retrieval call binding the contract method 0x3465d6d5. @@ -10303,8 +10514,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryCaller) Record(opts *bind.CallOpts, a func (_SimpleBlsRegistry *SimpleBlsRegistrySession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.Record(&_SimpleBlsRegistry.CallOpts, arg0) } @@ -10314,8 +10524,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistrySession) Record(arg0 common.Address) func (_SimpleBlsRegistry *SimpleBlsRegistryCallerSession) Record(arg0 common.Address) (struct { PublicKey []byte Pop []byte -}, error, -) { +}, error) { return _SimpleBlsRegistry.Contract.Record(&_SimpleBlsRegistry.CallOpts, arg0) } @@ -10544,6 +10753,7 @@ type SimpleBlsRegistryAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*SimpleBlsRegistryAdminChangedIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -10555,6 +10765,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterAdminChanged(opts *bi // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryAdminChanged) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -10595,6 +10806,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseAdminChanged(log types if err := _SimpleBlsRegistry.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10675,6 +10887,7 @@ type SimpleBlsRegistryBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*SimpleBlsRegistryBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -10691,6 +10904,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterBeaconUpgraded(opts * // // Solidity: event BeaconUpgraded(address indexed beacon) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -10736,6 +10950,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseBeaconUpgraded(log typ if err := _SimpleBlsRegistry.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10816,6 +11031,7 @@ type SimpleBlsRegistryInitialized struct { // // Solidity: event Initialized(uint8 version) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*SimpleBlsRegistryInitializedIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -10827,6 +11043,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterInitialized(opts *bin // // Solidity: event Initialized(uint8 version) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryInitialized) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -10867,6 +11084,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseInitialized(log types. if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -10948,6 +11166,7 @@ type SimpleBlsRegistryOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SimpleBlsRegistryOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -10968,6 +11187,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -11017,6 +11237,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseOwnershipTransferred(l if err := _SimpleBlsRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11099,6 +11320,7 @@ type SimpleBlsRegistryRegistered struct { // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterRegistered(opts *bind.FilterOpts) (*SimpleBlsRegistryRegisteredIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Registered") if err != nil { return nil, err @@ -11110,6 +11332,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterRegistered(opts *bind // // Solidity: event Registered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchRegistered(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryRegistered) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Registered") if err != nil { return nil, err @@ -11150,6 +11373,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseRegistered(log types.L if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Registered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11232,6 +11456,7 @@ type SimpleBlsRegistryUnregistered struct { // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUnregistered(opts *bind.FilterOpts) (*SimpleBlsRegistryUnregisteredIterator, error) { + logs, sub, err := _SimpleBlsRegistry.contract.FilterLogs(opts, "Unregistered") if err != nil { return nil, err @@ -11243,6 +11468,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUnregistered(opts *bi // // Solidity: event Unregistered(address cnNodeId, bytes publicKey, bytes pop) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchUnregistered(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryUnregistered) (event.Subscription, error) { + logs, sub, err := _SimpleBlsRegistry.contract.WatchLogs(opts, "Unregistered") if err != nil { return nil, err @@ -11283,6 +11509,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseUnregistered(log types if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Unregistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11363,6 +11590,7 @@ type SimpleBlsRegistryUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*SimpleBlsRegistryUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -11379,6 +11607,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) FilterUpgraded(opts *bind.F // // Solidity: event Upgraded(address indexed implementation) func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *SimpleBlsRegistryUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -11424,6 +11653,7 @@ func (_SimpleBlsRegistry *SimpleBlsRegistryFilterer) ParseUpgraded(log types.Log if err := _SimpleBlsRegistry.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -11638,7 +11868,7 @@ var TreasuryRebalanceMetaData = &bind.MetaData{ "45205a6b": "sumOfRetiredBalance()", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b5060405162002696380380620026968339810160408190526200003491620000c8565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e2565b60405180910390a15062000119565b600060208284031215620000db57600080fd5b5051919050565b60608101600485106200010557634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b61256d80620001296000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220b4d67efbc3ee3fc799e4d0fe242ca91c6942d4cc316d8cce7e27b654262852ce64736f6c63430008130033", + Bin: "0x60806040523480156200001157600080fd5b5060405162002696380380620026968339810160408190526200003491620000c8565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e2565b60405180910390a15062000119565b600060208284031215620000db57600080fd5b5051919050565b60608101600485106200010557634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b61256d80620001296000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220271ca30f808c823ad097bf2f2a89f81a9e748d092d7bdb6bc735134ab17fc66164736f6c63430008130033", } // TreasuryRebalanceABI is the input ABI used to generate the binding from. @@ -11646,10 +11876,10 @@ var TreasuryRebalanceMetaData = &bind.MetaData{ var TreasuryRebalanceABI = TreasuryRebalanceMetaData.ABI // TreasuryRebalanceBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const TreasuryRebalanceBinRuntime = `6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220b4d67efbc3ee3fc799e4d0fe242ca91c6942d4cc316d8cce7e27b654262852ce64736f6c63430008130033` +const TreasuryRebalanceBinRuntime = `6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b1461057d578063eb5a8e551461059d578063f2fde38b146105bd578063faaf9ca6146105dd576101cd565b8063d826f88f14610512578063daea85c514610527578063e20fcf0014610547578063e2384cb31461055c576101cd565b806394393e11116100d157806394393e111461047b578063966e0794146104ba578063bf680590146104cf578063d1ed33fc146104fd576101cd565b80638da5cb5b146104285780638f32d59b1461044657806391734d8614610466576101cd565b806349a3fb451161016f578063681f6e7c1161013e578063681f6e7c146103b3578063683e13cb146103d35780636864b95b146103f3578063715018a614610413576101cd565b806349a3fb451461032357806358c3b870146103395780635a12667b1461035b578063652e27e014610393576101cd565b80631f8c1798116101ab5780631f8c1798146102b2578063200d2ed2146102d257806345205a6b146102f9578063484090961461030e576101cd565b806301784e051461022d57806311f5c466146102625780631c1dac5914610290575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561023957600080fd5b5061024d610248366004611f0c565b6105f2565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611f0c565b6106a6565b604051908152602001610259565b34801561029c57600080fd5b506102b06102ab366004611f0c565b610712565b005b3480156102be57600080fd5b506102b06102cd366004611f0c565b6108b0565b3480156102de57600080fd5b506003546102ec9060ff1681565b6040516102599190611f68565b34801561030557600080fd5b506102826109f5565b34801561031a57600080fd5b506102b0610a53565b34801561032f57600080fd5b5061028260045481565b34801561034557600080fd5b5061034e610b0a565b6040516102599190611f7c565b34801561036757600080fd5b5061037b610376366004611fca565b610b98565b6040516001600160a01b039091168152602001610259565b34801561039f57600080fd5b506102b06103ae366004611fe3565b610bc7565b3480156103bf57600080fd5b506102826103ce366004611f0c565b610db0565b3480156103df57600080fd5b5061024d6103ee366004611f0c565b610e12565b3480156103ff57600080fd5b506102b061040e366004611f0c565b610ec0565b34801561041f57600080fd5b506102b0611069565b34801561043457600080fd5b506000546001600160a01b031661037b565b34801561045257600080fd5b506000546001600160a01b0316331461024d565b34801561047257600080fd5b50600254610282565b34801561048757600080fd5b5061049b610496366004611fca565b6110dd565b604080516001600160a01b039093168352602083019190915201610259565b3480156104c657600080fd5b506102b0611115565b3480156104db57600080fd5b506104ef6104ea366004611f0c565b6112f9565b60405161025992919061200f565b34801561050957600080fd5b50600154610282565b34801561051e57600080fd5b506102b06113e0565b34801561053357600080fd5b506102b0610542366004611f0c565b6114bf565b34801561055357600080fd5b506102826116a3565b34801561056857600080fd5b5061024d610577366004611f0c565b3b151590565b34801561058957600080fd5b506102b06105983660046120b2565b6116f5565b3480156105a957600080fd5b5061049b6105b8366004611f0c565b61181d565b3480156105c957600080fd5b506102b06105d8366004611f0c565b6118cd565b3480156105e957600080fd5b506102b0611900565b60006001600160a01b03821661063c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6001548110156106a057826001600160a01b03166001828154811061066657610666612147565b60009182526020909120600290910201546001600160a01b03160361068e5750600192915050565b8061069881612173565b91505061063f565b50919050565b6000805b60025481101561070857826001600160a01b0316600282815481106106d1576106d1612147565b60009182526020909120600290910201546001600160a01b0316036106f65792915050565b8061070081612173565b9150506106aa565b5060001992915050565b6000546001600160a01b0316331461073c5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff169081111561075657610756611f30565b146107735760405162461bcd60e51b8152600401610224906121c1565b600061077e83610db0565b905060001981036107a15760405162461bcd60e51b8152600401610224906121f8565b600180546107b0908290612228565b815481106107c0576107c0612147565b9060005260206000209060020201600182815481106107e1576107e1612147565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546108249284019190611dac565b5090505060018054806108395761083961223b565b60008281526020812060026000199093019283020180546001600160a01b03191681559061086a6001830182611df8565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff16908111156108f4576108f4611f30565b146109115760405162461bcd60e51b8152600401610224906121c1565b61091a826105f2565b156109755760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b6064820152608401610224565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108a3565b6000805b600154811015610a4f5760018181548110610a1657610a16612147565b6000918252602090912060029091020154610a3b906001600160a01b03163183612251565b915080610a4781612173565b9150506109f9565b5090565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610a9757610a97611f30565b14610ab45760405162461bcd60e51b8152600401610224906121c1565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610aff9160ff90911690611f68565b60405180910390a150565b60058054610b1790612264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390612264565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b505050505081565b60018181548110610ba857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610bf15760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610c0b57610c0b611f30565b14610c285760405162461bcd60e51b8152600401610224906121c1565b610c3183610e12565b15610c8a5760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610224565b81600003610cda5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610224565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561070857826001600160a01b031660018281548110610ddb57610ddb612147565b60009182526020909120600290910201546001600160a01b031603610e005792915050565b80610e0a81612173565b915050610db4565b60006001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610224565b60005b6002548110156106a057826001600160a01b031660028281548110610e8657610e86612147565b60009182526020909120600290910201546001600160a01b031603610eae5750600192915050565b80610eb881612173565b915050610e5f565b6000546001600160a01b03163314610eea5760405162461bcd60e51b81526004016102249061218c565b6000806003805460ff1690811115610f0457610f04611f30565b14610f215760405162461bcd60e51b8152600401610224906121c1565b6000610f2c836106a6565b90506000198103610f775760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60028054610f8790600190612228565b81548110610f9757610f97612147565b906000526020600020906002020160028281548110610fb857610fb8612147565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806110045761100461223b565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108a3565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016102249061218c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600281815481106110ed57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b6001548110156112f65760006001828154811061113757611137612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611199575b505050505081525050905060006111d282600001513b151590565b90508015611297576000806111ea8460000151611a14565b915091508084602001515110156112135760405162461bcd60e51b815260040161022490612298565b60208401516000805b825181101561126d5761124883828151811061123a5761123a612147565b602002602001015186611a8d565b1561125b578161125781612173565b9250505b8061126581612173565b91505061121c565b508281101561128e5760405162461bcd60e51b815260040161022490612298565b505050506112e1565b8160200151516001146112e15760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610224565b505080806112ee90612173565b915050611118565b50565b60006060600061130884610db0565b9050600019810361132b5760405162461bcd60e51b8152600401610224906121f8565b60006001828154811061134057611340612147565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156113c057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113a2575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b0316331461140a5760405162461bcd60e51b81526004016102249061218c565b6003805460ff168181111561142157611421611f30565b14158015611430575060045443105b61148f5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610224565b61149b60016000611e16565b6114a760026000611e37565b6114b360056000611e58565b6003805460ff19169055565b6001806003805460ff16908111156114d9576114d9611f30565b146114f65760405162461bcd60e51b8152600401610224906121c1565b6114ff826105f2565b6115625760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b6064820152608401610224565b813b1515806115de57336001600160a01b038416146115cf5760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b6064820152608401610224565b6115d98333611aea565b505050565b60006115e984611a14565b509050805160000361163d5760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610224565b6116473382611a8d565b6116935760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610224565b61169d8433611aea565b50505050565b6000805b600254811015610a4f57600281815481106116c4576116c4612147565b906000526020600020906002020160010154826116e19190612251565b9150806116ed81612173565b9150506116a7565b6000546001600160a01b0316331461171f5760405162461bcd60e51b81526004016102249061218c565b6002806003805460ff169081111561173957611739611f30565b146117565760405162461bcd60e51b8152600401610224906121c1565b60056117628382612328565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916117a191600591906123e8565b60405180910390a160045443116118195760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610224565b5050565b600080600061182b846106a6565b905060001981036118765760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610224565b60006002828154811061188b5761188b612147565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b031633146118f75760405162461bcd60e51b81526004016102249061218c565b6112f681611cec565b6000546001600160a01b0316331461192a5760405162461bcd60e51b81526004016102249061218c565b6001806003805460ff169081111561194457611944611f30565b146119615760405162461bcd60e51b8152600401610224906121c1565b6119696109f5565b6119716116a3565b106119f85760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a401610224565b611a00611115565b600380546002919060ff1916600183610ac3565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a82919081019061247d565b909590945092505050565b6000805b8251811015611ae357828181518110611aac57611aac612147565b60200260200101516001600160a01b0316846001600160a01b031603611ad157600191505b80611adb81612173565b915050611a91565b5092915050565b6000611af583610db0565b90506000198103611b185760405162461bcd60e51b8152600401610224906121f8565b600060018281548110611b2d57611b2d612147565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b74575b5050505050905060005b8151811015611c2457836001600160a01b0316828281518110611bc157611bc1612147565b60200260200101516001600160a01b031603611c125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610224565b80611c1c81612173565b915050611b9c565b5060018281548110611c3857611c38612147565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611caf57611caf612147565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610da2565b6001600160a01b038116611d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610224565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215611dec5760005260206000209182015b82811115611dec578254825591600101919060010190611dd1565b50610a4f929150611e8e565b50805460008255906000526020600020908101906112f69190611e8e565b50805460008255600202906000526020600020908101906112f69190611ea3565b50805460008255600202906000526020600020908101906112f69190611ed1565b508054611e6490612264565b6000825580601f10611e74575050565b601f0160209004906000526020600020908101906112f691905b5b80821115610a4f5760008155600101611e8f565b80821115610a4f5780546001600160a01b03191681556000611ec86001830182611df8565b50600201611ea3565b5b80821115610a4f5780546001600160a01b031916815560006001820155600201611ed2565b6001600160a01b03811681146112f657600080fd5b600060208284031215611f1e57600080fd5b8135611f2981611ef7565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60048110611f6457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f768284611f46565b92915050565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611fdc57600080fd5b5035919050565b60008060408385031215611ff657600080fd5b823561200181611ef7565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561205d57855185168352948301949183019160010161203f565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156120aa576120aa61206b565b604052919050565b600060208083850312156120c557600080fd5b823567ffffffffffffffff808211156120dd57600080fd5b818501915085601f8301126120f157600080fd5b8135818111156121035761210361206b565b612115601f8201601f19168501612081565b9150808252868482850101111561212b57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121855761218561215d565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b81810381811115611f7657611f7661215d565b634e487b7160e01b600052603160045260246000fd5b80820180821115611f7657611f7661215d565b600181811c9082168061227857607f821691505b6020821081036106a057634e487b7160e01b600052602260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b601f8211156115d957600081815260208120601f850160051c810160208610156123015750805b601f850160051c820191505b818110156123205782815560010161230d565b505050505050565b815167ffffffffffffffff8111156123425761234261206b565b612356816123508454612264565b846122da565b602080601f83116001811461238b57600084156123735750858301515b600019600386901b1c1916600185901b178555612320565b600085815260208120601f198616915b828110156123ba5788860151825594840194600190910190840161239b565b50858210156123d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123fa81612264565b806040860152606060018084166000811461241c576001811461243657612467565b60ff1985168884015283151560051b880183019550612467565b8960005260208060002060005b8681101561245e5781548b8201870152908401908201612443565b8a018501975050505b505050505080915050611f296020830184611f46565b6000806040838503121561249057600080fd5b825167ffffffffffffffff808211156124a857600080fd5b818501915085601f8301126124bc57600080fd5b81516020828211156124d0576124d061206b565b8160051b92506124e1818401612081565b82815292840181019281810190898511156124fb57600080fd5b948201945b84861015612525578551935061251584611ef7565b8382529482019490820190612500565b9790910151969896975050505050505056fea2646970667358221220271ca30f808c823ad097bf2f2a89f81a9e748d092d7bdb6bc735134ab17fc66164736f6c63430008130033` -// TreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceMetaData.Sigs instead. +// TreasuryRebalanceFuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceFuncSigs = TreasuryRebalanceMetaData.Sigs // TreasuryRebalanceBin is the compiled bytecode used for deploying new contracts. @@ -11821,11 +12051,13 @@ func (_TreasuryRebalance *TreasuryRebalanceTransactorRaw) Transact(opts *bind.Tr func (_TreasuryRebalance *TreasuryRebalanceCaller) CheckRetiredsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "checkRetiredsApproved") + if err != nil { return err } return err + } // CheckRetiredsApproved is a free data retrieval call binding the contract method 0x966e0794. @@ -11848,6 +12080,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) CheckRetiredsApproved( func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts, _newbieAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbie", _newbieAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -11856,6 +12089,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbie(opts *bind.CallOpts out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetNewbie is a free data retrieval call binding the contract method 0xeb5a8e55. @@ -11878,6 +12112,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbie(_newbieAddre func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbieCount") + if err != nil { return *new(*big.Int), err } @@ -11885,6 +12120,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieCount(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieCount is a free data retrieval call binding the contract method 0x91734d86. @@ -11907,6 +12143,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbieCount() (*big func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieIndex(opts *bind.CallOpts, _newbieAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getNewbieIndex", _newbieAddress) + if err != nil { return *new(*big.Int), err } @@ -11914,6 +12151,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetNewbieIndex(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieIndex is a free data retrieval call binding the contract method 0x11f5c466. @@ -11936,6 +12174,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetNewbieIndex(_newbie func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetired(opts *bind.CallOpts, _retiredAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetired", _retiredAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -11944,6 +12183,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetired(opts *bind.CallOpt out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetRetired is a free data retrieval call binding the contract method 0xbf680590. @@ -11966,6 +12206,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetired(_retiredAdd func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetiredCount") + if err != nil { return *new(*big.Int), err } @@ -11973,6 +12214,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredCount(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredCount is a free data retrieval call binding the contract method 0xd1ed33fc. @@ -11995,6 +12237,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetiredCount() (*bi func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredIndex(opts *bind.CallOpts, _retiredAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getRetiredIndex", _retiredAddress) + if err != nil { return *new(*big.Int), err } @@ -12002,6 +12245,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetRetiredIndex(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredIndex is a free data retrieval call binding the contract method 0x681f6e7c. @@ -12024,6 +12268,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetRetiredIndex(_retir func (_TreasuryRebalance *TreasuryRebalanceCaller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -12031,6 +12276,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) GetTreasuryAmount(opts *bind. out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -12053,6 +12299,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) GetTreasuryAmount() (* func (_TreasuryRebalance *TreasuryRebalanceCaller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -12060,6 +12307,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) IsContractAddr(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -12082,6 +12330,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) IsContractAddr(_addr c func (_TreasuryRebalance *TreasuryRebalanceCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -12089,6 +12338,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) IsOwner(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -12111,6 +12361,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) IsOwner() (bool, error func (_TreasuryRebalance *TreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -12118,6 +12369,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Memo(opts *bind.CallOpts) (st out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -12140,6 +12392,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Memo() (string, error) func (_TreasuryRebalance *TreasuryRebalanceCaller) NewbieExists(opts *bind.CallOpts, _newbieAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "newbieExists", _newbieAddress) + if err != nil { return *new(bool), err } @@ -12147,6 +12400,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) NewbieExists(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // NewbieExists is a free data retrieval call binding the contract method 0x683e13cb. @@ -12169,8 +12423,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) NewbieExists(_newbieAd func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "newbies", arg0) @@ -12178,10 +12431,15 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, Newbie common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Newbie = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Newbies is a free data retrieval call binding the contract method 0x94393e11. @@ -12190,8 +12448,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Newbies(opts *bind.CallOpts, func (_TreasuryRebalance *TreasuryRebalanceSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalance.Contract.Newbies(&_TreasuryRebalance.CallOpts, arg0) } @@ -12201,8 +12458,7 @@ func (_TreasuryRebalance *TreasuryRebalanceSession) Newbies(arg0 *big.Int) (stru func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalance.Contract.Newbies(&_TreasuryRebalance.CallOpts, arg0) } @@ -12212,6 +12468,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Newbies(arg0 *big.Int) func (_TreasuryRebalance *TreasuryRebalanceCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -12219,6 +12476,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Owner(opts *bind.CallOpts) (c out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -12241,6 +12499,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Owner() (common.Addres func (_TreasuryRebalance *TreasuryRebalanceCaller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -12248,6 +12507,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) RebalanceBlockNumber(opts *bi out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -12270,6 +12530,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) RebalanceBlockNumber() func (_TreasuryRebalance *TreasuryRebalanceCaller) RetiredExists(opts *bind.CallOpts, _retiredAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "retiredExists", _retiredAddress) + if err != nil { return *new(bool), err } @@ -12277,6 +12538,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) RetiredExists(opts *bind.Call out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // RetiredExists is a free data retrieval call binding the contract method 0x01784e05. @@ -12299,6 +12561,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) RetiredExists(_retired func (_TreasuryRebalance *TreasuryRebalanceCaller) Retirees(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "retirees", arg0) + if err != nil { return *new(common.Address), err } @@ -12306,6 +12569,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Retirees(opts *bind.CallOpts, out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Retirees is a free data retrieval call binding the contract method 0x5a12667b. @@ -12328,6 +12592,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Retirees(arg0 *big.Int func (_TreasuryRebalance *TreasuryRebalanceCaller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -12335,6 +12600,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) Status(opts *bind.CallOpts) ( out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -12357,6 +12623,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCallerSession) Status() (uint8, error func (_TreasuryRebalance *TreasuryRebalanceCaller) SumOfRetiredBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalance.contract.Call(opts, &out, "sumOfRetiredBalance") + if err != nil { return *new(*big.Int), err } @@ -12364,6 +12631,7 @@ func (_TreasuryRebalance *TreasuryRebalanceCaller) SumOfRetiredBalance(opts *bin out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfRetiredBalance is a free data retrieval call binding the contract method 0x45205a6b. @@ -12711,6 +12979,7 @@ type TreasuryRebalanceApproved struct { // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceApprovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -12722,6 +12991,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterApproved(opts *bind.F // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceApproved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -12762,6 +13032,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseApproved(log types.Log if err := _TreasuryRebalance.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12844,6 +13115,7 @@ type TreasuryRebalanceContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -12855,6 +13127,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterContractDeployed(opts // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -12895,6 +13168,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseContractDeployed(log t if err := _TreasuryRebalance.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -12976,6 +13250,7 @@ type TreasuryRebalanceFinalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceFinalizedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -12987,6 +13262,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterFinalized(opts *bind. // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceFinalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -13027,6 +13303,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseFinalized(log types.Lo if err := _TreasuryRebalance.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13108,6 +13385,7 @@ type TreasuryRebalanceNewbieRegistered struct { // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceNewbieRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -13119,6 +13397,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRegistered(opts // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchNewbieRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceNewbieRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -13159,6 +13438,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseNewbieRegistered(log t if err := _TreasuryRebalance.contract.UnpackLog(event, "NewbieRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13239,6 +13519,7 @@ type TreasuryRebalanceNewbieRemoved struct { // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceNewbieRemovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -13250,6 +13531,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterNewbieRemoved(opts *b // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchNewbieRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceNewbieRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -13290,6 +13572,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseNewbieRemoved(log type if err := _TreasuryRebalance.contract.UnpackLog(event, "NewbieRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13371,6 +13654,7 @@ type TreasuryRebalanceOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -13391,6 +13675,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterOwnershipTransferred( // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -13440,6 +13725,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseOwnershipTransferred(l if err := _TreasuryRebalance.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13520,6 +13806,7 @@ type TreasuryRebalanceRetiredRegistered struct { // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceRetiredRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -13531,6 +13818,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRegistered(opt // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchRetiredRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceRetiredRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -13571,6 +13859,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseRetiredRegistered(log if err := _TreasuryRebalance.contract.UnpackLog(event, "RetiredRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13651,6 +13940,7 @@ type TreasuryRebalanceRetiredRemoved struct { // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceRetiredRemovedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -13662,6 +13952,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterRetiredRemoved(opts * // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchRetiredRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceRetiredRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -13702,6 +13993,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseRetiredRemoved(log typ if err := _TreasuryRebalance.contract.UnpackLog(event, "RetiredRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13782,6 +14074,7 @@ type TreasuryRebalanceStatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceStatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalance.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -13793,6 +14086,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) FilterStatusChanged(opts *b // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalance *TreasuryRebalanceFilterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceStatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalance.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -13833,6 +14127,7 @@ func (_TreasuryRebalance *TreasuryRebalanceFilterer) ParseStatusChanged(log type if err := _TreasuryRebalance.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -13873,7 +14168,7 @@ var TreasuryRebalanceMockMetaData = &bind.MetaData{ "cc701029": "testSetAll(address[],address[],uint256[],uint256,uint8)", "f2fde38b": "transferOwnership(address)", }, - Bin: "0x60806040523480156200001157600080fd5b5060405162002b6938038062002b698339810160408190526200003491620000c9565b600080546001600160a01b0319163390811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e3565b60405180910390a150506200011a565b600060208284031215620000dc57600080fd5b5051919050565b60608101600485106200010657634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b612a3f806200012a6000396000f3fe6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b146105d3578063eb5a8e55146105f3578063f2fde38b14610613578063faaf9ca614610633576101e3565b8063d826f88f14610568578063daea85c51461057d578063e20fcf001461059d578063e2384cb3146105b2576101e3565b8063966e0794116100d1578063966e0794146104f0578063bf68059014610505578063cc70102914610533578063d1ed33fc14610553576101e3565b80638da5cb5b1461045e5780638f32d59b1461047c57806391734d861461049c57806394393e11146104b1576101e3565b806349a3fb451161017a578063681f6e7c11610149578063681f6e7c146103e9578063683e13cb146104095780636864b95b14610429578063715018a614610449576101e3565b806349a3fb451461035957806358c3b8701461036f5780635a12667b14610391578063652e27e0146103c9576101e3565b8063200d2ed2116101b6578063200d2ed2146102e8578063281a1be91461030f57806345205a6b1461032f5780634840909614610344576101e3565b806301784e051461024357806311f5c466146102785780631c1dac59146102a65780631f8c1798146102c8575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561024f57600080fd5b5061026361025e3660046121a4565b610648565b60405190151581526020015b60405180910390f35b34801561028457600080fd5b506102986102933660046121a4565b6106fc565b60405190815260200161026f565b3480156102b257600080fd5b506102c66102c13660046121a4565b610768565b005b3480156102d457600080fd5b506102c66102e33660046121a4565b610906565b3480156102f457600080fd5b506003546103029060ff1681565b60405161026f9190612200565b34801561031b57600080fd5b506102c661032a366004612214565b610a4b565b34801561033b57600080fd5b50610298610a5d565b34801561035057600080fd5b506102c6610abb565b34801561036557600080fd5b5061029860045481565b34801561037b57600080fd5b50610384610b72565b60405161026f9190612286565b34801561039d57600080fd5b506103b16103ac3660046122d4565b610c00565b6040516001600160a01b03909116815260200161026f565b3480156103d557600080fd5b506102c66103e43660046122ed565b610c2f565b3480156103f557600080fd5b506102986104043660046121a4565b610e18565b34801561041557600080fd5b506102636104243660046121a4565b610e7a565b34801561043557600080fd5b506102c66104443660046121a4565b610f28565b34801561045557600080fd5b506102c66110d1565b34801561046a57600080fd5b506000546001600160a01b03166103b1565b34801561048857600080fd5b506000546001600160a01b03163314610263565b3480156104a857600080fd5b50600254610298565b3480156104bd57600080fd5b506104d16104cc3660046122d4565b611145565b604080516001600160a01b03909316835260208301919091520161026f565b3480156104fc57600080fd5b506102c661117d565b34801561051157600080fd5b506105256105203660046121a4565b611361565b60405161026f929190612319565b34801561053f57600080fd5b506102c661054e3660046123c1565b611448565b34801561055f57600080fd5b50600154610298565b34801561057457600080fd5b506102c6611628565b34801561058957600080fd5b506102c66105983660046121a4565b611707565b3480156105a957600080fd5b506102986118e6565b3480156105be57600080fd5b506102636105cd3660046121a4565b3b151590565b3480156105df57600080fd5b506102c66105ee3660046124c3565b611938565b3480156105ff57600080fd5b506104d161060e3660046121a4565b611a60565b34801561061f57600080fd5b506102c661062e3660046121a4565b611b10565b34801561063f57600080fd5b506102c6611b43565b60006001600160a01b0382166106925760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6001548110156106f657826001600160a01b0316600182815481106106bc576106bc612558565b60009182526020909120600290910201546001600160a01b0316036106e45750600192915050565b806106ee81612584565b915050610695565b50919050565b6000805b60025481101561075e57826001600160a01b03166002828154811061072757610727612558565b60009182526020909120600290910201546001600160a01b03160361074c5792915050565b8061075681612584565b915050610700565b5060001992915050565b6000546001600160a01b031633146107925760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff16908111156107ac576107ac6121c8565b146107c95760405162461bcd60e51b815260040161023a906125d2565b60006107d483610e18565b905060001981036107f75760405162461bcd60e51b815260040161023a90612609565b60018054610806908290612639565b8154811061081657610816612558565b90600052602060002090600202016001828154811061083757610837612558565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461087a9284019190611fef565b50905050600180548061088f5761088f61264c565b60008281526020812060026000199093019283020180546001600160a01b0319168155906108c0600183018261203b565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146109305760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff169081111561094a5761094a6121c8565b146109675760405162461bcd60e51b815260040161023a906125d2565b61097082610648565b156109cb5760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b606482015260840161023a565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108f9565b6005610a588284836126e4565b505050565b6000805b600154811015610ab75760018181548110610a7e57610a7e612558565b6000918252602090912060029091020154610aa3906001600160a01b031631836127a5565b915080610aaf81612584565b915050610a61565b5090565b6000546001600160a01b03163314610ae55760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610aff57610aff6121c8565b14610b1c5760405162461bcd60e51b815260040161023a906125d2565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b679160ff90911690612200565b60405180910390a150565b60058054610b7f90612662565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612662565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b60018181548110610c1057600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610c595760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610c7357610c736121c8565b14610c905760405162461bcd60e51b815260040161023a906125d2565b610c9983610e7a565b15610cf25760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161023a565b81600003610d425760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161023a565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561075e57826001600160a01b031660018281548110610e4357610e43612558565b60009182526020909120600290910201546001600160a01b031603610e685792915050565b80610e7281612584565b915050610e1c565b60006001600160a01b038216610ec45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6002548110156106f657826001600160a01b031660028281548110610eee57610eee612558565b60009182526020909120600290910201546001600160a01b031603610f165750600192915050565b80610f2081612584565b915050610ec7565b6000546001600160a01b03163314610f525760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610f6c57610f6c6121c8565b14610f895760405162461bcd60e51b815260040161023a906125d2565b6000610f94836106fc565b90506000198103610fdf5760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b60028054610fef90600190612639565b81548110610fff57610fff612558565b90600052602060002090600202016002828154811061102057611020612558565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061106c5761106c61264c565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108f9565b6000546001600160a01b031633146110fb5760405162461bcd60e51b815260040161023a9061259d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002818154811061115557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b60015481101561135e5760006001828154811061119f5761119f612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561121f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611201575b5050505050815250509050600061123a82600001513b151590565b905080156112ff576000806112528460000151611c57565b9150915080846020015151101561127b5760405162461bcd60e51b815260040161023a906127b8565b60208401516000805b82518110156112d5576112b08382815181106112a2576112a2612558565b602002602001015186611cd0565b156112c357816112bf81612584565b9250505b806112cd81612584565b915050611284565b50828110156112f65760405162461bcd60e51b815260040161023a906127b8565b50505050611349565b8160200151516001146113495760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161023a565b5050808061135690612584565b915050611180565b50565b60006060600061137084610e18565b905060001981036113935760405162461bcd60e51b815260040161023a90612609565b6000600182815481106113a8576113a8612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561142857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161140a575b505050505081525050905080600001518160200151935093505050915091565b61145460016000612059565b6114606002600061207a565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561153557600160405180604001604052808c8c858181106114ac576114ac612558565b90506020020160208101906114c191906121a4565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361151f9392850192919091019061209b565b505050808061152d90612584565b915050611485565b5060005b868110156115f457600260405180604001604052808a8a8581811061156057611560612558565b905060200201602081019061157591906121a4565b6001600160a01b0316815260200188888581811061159557611595612558565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806115ec81612584565b915050611539565b5060048390556003805483919060ff191660018383811115611618576116186121c8565b0217905550505050505050505050565b6000546001600160a01b031633146116525760405162461bcd60e51b815260040161023a9061259d565b6003805460ff1681811115611669576116696121c8565b14158015611678575060045443105b6116d75760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161023a565b6116e360016000612059565b6116ef6002600061207a565b6116fb600560006120f0565b6003805460ff19169055565b6001806003805460ff1690811115611721576117216121c8565b1461173e5760405162461bcd60e51b815260040161023a906125d2565b61174782610648565b6117aa5760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b606482015260840161023a565b813b15158061182157336001600160a01b038416146118175760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b606482015260840161023a565b610a588333611d2d565b600061182c84611c57565b50905080516000036118805760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161023a565b61188a3382611cd0565b6118d65760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161023a565b6118e08433611d2d565b50505050565b6000805b600254811015610ab7576002818154811061190757611907612558565b9060005260206000209060020201600101548261192491906127a5565b91508061193081612584565b9150506118ea565b6000546001600160a01b031633146119625760405162461bcd60e51b815260040161023a9061259d565b6002806003805460ff169081111561197c5761197c6121c8565b146119995760405162461bcd60e51b815260040161023a906125d2565b60056119a583826127fa565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916119e491600591906128ba565b60405180910390a16004544311611a5c5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161023a565b5050565b6000806000611a6e846106fc565b90506000198103611ab95760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b600060028281548110611ace57611ace612558565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161023a9061259d565b61135e81611f2f565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b815260040161023a9061259d565b6001806003805460ff1690811115611b8757611b876121c8565b14611ba45760405162461bcd60e51b815260040161023a906125d2565b611bac610a5d565b611bb46118e6565b10611c3b5760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a40161023a565b611c4361117d565b600380546002919060ff1916600183610b2b565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc5919081019061294f565b909590945092505050565b6000805b8251811015611d2657828181518110611cef57611cef612558565b60200260200101516001600160a01b0316846001600160a01b031603611d1457600191505b80611d1e81612584565b915050611cd4565b5092915050565b6000611d3883610e18565b90506000198103611d5b5760405162461bcd60e51b815260040161023a90612609565b600060018281548110611d7057611d70612558565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611dd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611db7575b5050505050905060005b8151811015611e6757836001600160a01b0316828281518110611e0457611e04612558565b60200260200101516001600160a01b031603611e555760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161023a565b80611e5f81612584565b915050611ddf565b5060018281548110611e7b57611e7b612558565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611ef257611ef2612558565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610e0a565b6001600160a01b038116611f945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561202f5760005260206000209182015b8281111561202f578254825591600101919060010190612014565b50610ab7929150612126565b508054600082559060005260206000209081019061135e9190612126565b508054600082556002029060005260206000209081019061135e919061213b565b508054600082556002029060005260206000209081019061135e9190612169565b82805482825590600052602060002090810192821561202f579160200282015b8281111561202f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120bb565b5080546120fc90612662565b6000825580601f1061210c575050565b601f01602090049060005260206000209081019061135e91905b5b80821115610ab75760008155600101612127565b80821115610ab75780546001600160a01b03191681556000612160600183018261203b565b5060020161213b565b5b80821115610ab75780546001600160a01b03191681556000600182015560020161216a565b6001600160a01b038116811461135e57600080fd5b6000602082840312156121b657600080fd5b81356121c18161218f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106121fc57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161220e82846121de565b92915050565b6000806020838503121561222757600080fd5b823567ffffffffffffffff8082111561223f57600080fd5b818501915085601f83011261225357600080fd5b81358181111561226257600080fd5b86602082850101111561227457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122b357858101830151858201604001528201612297565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156122e657600080fd5b5035919050565b6000806040838503121561230057600080fd5b823561230b8161218f565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612367578551851683529483019491830191600101612349565b509098975050505050505050565b60008083601f84011261238757600080fd5b50813567ffffffffffffffff81111561239f57600080fd5b6020830191508360208260051b85010111156123ba57600080fd5b9250929050565b60008060008060008060008060a0898b0312156123dd57600080fd5b883567ffffffffffffffff808211156123f557600080fd5b6124018c838d01612375565b909a50985060208b013591508082111561241a57600080fd5b6124268c838d01612375565b909850965060408b013591508082111561243f57600080fd5b5061244c8b828c01612375565b9095509350506060890135915060808901356004811061246b57600080fd5b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124bb576124bb61247c565b604052919050565b600060208083850312156124d657600080fd5b823567ffffffffffffffff808211156124ee57600080fd5b818501915085601f83011261250257600080fd5b8135818111156125145761251461247c565b612526601f8201601f19168501612492565b9150808252868482850101111561253c57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125965761259661256e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b8181038181111561220e5761220e61256e565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061267657607f821691505b6020821081036106f657634e487b7160e01b600052602260045260246000fd5b601f821115610a5857600081815260208120601f850160051c810160208610156126bd5750805b601f850160051c820191505b818110156126dc578281556001016126c9565b505050505050565b67ffffffffffffffff8311156126fc576126fc61247c565b6127108361270a8354612662565b83612696565b6000601f841160018114612744576000851561272c5750838201355b600019600387901b1c1916600186901b17835561279e565b600083815260209020601f19861690835b828110156127755786850135825560209485019460019092019101612755565b50868210156127925760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8082018082111561220e5761220e61256e565b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b815167ffffffffffffffff8111156128145761281461247c565b612828816128228454612662565b84612696565b602080601f83116001811461285d57600084156128455750858301515b600019600386901b1c1916600185901b1785556126dc565b600085815260208120601f198616915b8281101561288c5788860151825594840194600190910190840161286d565b50858210156128aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128cc81612662565b80604086015260606001808416600081146128ee576001811461290857612939565b60ff1985168884015283151560051b880183019550612939565b8960005260208060002060005b868110156129305781548b8201870152908401908201612915565b8a018501975050505b5050505050809150506121c160208301846121de565b6000806040838503121561296257600080fd5b825167ffffffffffffffff8082111561297a57600080fd5b818501915085601f83011261298e57600080fd5b81516020828211156129a2576129a261247c565b8160051b92506129b3818401612492565b82815292840181019281810190898511156129cd57600080fd5b948201945b848610156129f757855193506129e78461218f565b83825294820194908201906129d2565b9790910151969896975050505050505056fea26469706673582212207f907dd5f8bca5030d0c1d22458d484863815295d78cd7e489805f29836238d264736f6c63430008130033", + Bin: "0x60806040523480156200001157600080fd5b5060405162002b6938038062002b698339810160408190526200003491620000c9565b600080546001600160a01b0319163390811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a90620000b99060009084904290620000e3565b60405180910390a150506200011a565b600060208284031215620000dc57600080fd5b5051919050565b60608101600485106200010657634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b612a3f806200012a6000396000f3fe6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b146105d3578063eb5a8e55146105f3578063f2fde38b14610613578063faaf9ca614610633576101e3565b8063d826f88f14610568578063daea85c51461057d578063e20fcf001461059d578063e2384cb3146105b2576101e3565b8063966e0794116100d1578063966e0794146104f0578063bf68059014610505578063cc70102914610533578063d1ed33fc14610553576101e3565b80638da5cb5b1461045e5780638f32d59b1461047c57806391734d861461049c57806394393e11146104b1576101e3565b806349a3fb451161017a578063681f6e7c11610149578063681f6e7c146103e9578063683e13cb146104095780636864b95b14610429578063715018a614610449576101e3565b806349a3fb451461035957806358c3b8701461036f5780635a12667b14610391578063652e27e0146103c9576101e3565b8063200d2ed2116101b6578063200d2ed2146102e8578063281a1be91461030f57806345205a6b1461032f5780634840909614610344576101e3565b806301784e051461024357806311f5c466146102785780631c1dac59146102a65780631f8c1798146102c8575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561024f57600080fd5b5061026361025e3660046121a4565b610648565b60405190151581526020015b60405180910390f35b34801561028457600080fd5b506102986102933660046121a4565b6106fc565b60405190815260200161026f565b3480156102b257600080fd5b506102c66102c13660046121a4565b610768565b005b3480156102d457600080fd5b506102c66102e33660046121a4565b610906565b3480156102f457600080fd5b506003546103029060ff1681565b60405161026f9190612200565b34801561031b57600080fd5b506102c661032a366004612214565b610a4b565b34801561033b57600080fd5b50610298610a5d565b34801561035057600080fd5b506102c6610abb565b34801561036557600080fd5b5061029860045481565b34801561037b57600080fd5b50610384610b72565b60405161026f9190612286565b34801561039d57600080fd5b506103b16103ac3660046122d4565b610c00565b6040516001600160a01b03909116815260200161026f565b3480156103d557600080fd5b506102c66103e43660046122ed565b610c2f565b3480156103f557600080fd5b506102986104043660046121a4565b610e18565b34801561041557600080fd5b506102636104243660046121a4565b610e7a565b34801561043557600080fd5b506102c66104443660046121a4565b610f28565b34801561045557600080fd5b506102c66110d1565b34801561046a57600080fd5b506000546001600160a01b03166103b1565b34801561048857600080fd5b506000546001600160a01b03163314610263565b3480156104a857600080fd5b50600254610298565b3480156104bd57600080fd5b506104d16104cc3660046122d4565b611145565b604080516001600160a01b03909316835260208301919091520161026f565b3480156104fc57600080fd5b506102c661117d565b34801561051157600080fd5b506105256105203660046121a4565b611361565b60405161026f929190612319565b34801561053f57600080fd5b506102c661054e3660046123c1565b611448565b34801561055f57600080fd5b50600154610298565b34801561057457600080fd5b506102c6611628565b34801561058957600080fd5b506102c66105983660046121a4565b611707565b3480156105a957600080fd5b506102986118e6565b3480156105be57600080fd5b506102636105cd3660046121a4565b3b151590565b3480156105df57600080fd5b506102c66105ee3660046124c3565b611938565b3480156105ff57600080fd5b506104d161060e3660046121a4565b611a60565b34801561061f57600080fd5b506102c661062e3660046121a4565b611b10565b34801561063f57600080fd5b506102c6611b43565b60006001600160a01b0382166106925760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6001548110156106f657826001600160a01b0316600182815481106106bc576106bc612558565b60009182526020909120600290910201546001600160a01b0316036106e45750600192915050565b806106ee81612584565b915050610695565b50919050565b6000805b60025481101561075e57826001600160a01b03166002828154811061072757610727612558565b60009182526020909120600290910201546001600160a01b03160361074c5792915050565b8061075681612584565b915050610700565b5060001992915050565b6000546001600160a01b031633146107925760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff16908111156107ac576107ac6121c8565b146107c95760405162461bcd60e51b815260040161023a906125d2565b60006107d483610e18565b905060001981036107f75760405162461bcd60e51b815260040161023a90612609565b60018054610806908290612639565b8154811061081657610816612558565b90600052602060002090600202016001828154811061083757610837612558565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461087a9284019190611fef565b50905050600180548061088f5761088f61264c565b60008281526020812060026000199093019283020180546001600160a01b0319168155906108c0600183018261203b565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146109305760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff169081111561094a5761094a6121c8565b146109675760405162461bcd60e51b815260040161023a906125d2565b61097082610648565b156109cb5760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b606482015260840161023a565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108f9565b6005610a588284836126e4565b505050565b6000805b600154811015610ab75760018181548110610a7e57610a7e612558565b6000918252602090912060029091020154610aa3906001600160a01b031631836127a5565b915080610aaf81612584565b915050610a61565b5090565b6000546001600160a01b03163314610ae55760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610aff57610aff6121c8565b14610b1c5760405162461bcd60e51b815260040161023a906125d2565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b679160ff90911690612200565b60405180910390a150565b60058054610b7f90612662565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612662565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b60018181548110610c1057600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610c595760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610c7357610c736121c8565b14610c905760405162461bcd60e51b815260040161023a906125d2565b610c9983610e7a565b15610cf25760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161023a565b81600003610d425760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161023a565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561075e57826001600160a01b031660018281548110610e4357610e43612558565b60009182526020909120600290910201546001600160a01b031603610e685792915050565b80610e7281612584565b915050610e1c565b60006001600160a01b038216610ec45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6002548110156106f657826001600160a01b031660028281548110610eee57610eee612558565b60009182526020909120600290910201546001600160a01b031603610f165750600192915050565b80610f2081612584565b915050610ec7565b6000546001600160a01b03163314610f525760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610f6c57610f6c6121c8565b14610f895760405162461bcd60e51b815260040161023a906125d2565b6000610f94836106fc565b90506000198103610fdf5760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b60028054610fef90600190612639565b81548110610fff57610fff612558565b90600052602060002090600202016002828154811061102057611020612558565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061106c5761106c61264c565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108f9565b6000546001600160a01b031633146110fb5760405162461bcd60e51b815260040161023a9061259d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002818154811061115557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b60015481101561135e5760006001828154811061119f5761119f612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561121f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611201575b5050505050815250509050600061123a82600001513b151590565b905080156112ff576000806112528460000151611c57565b9150915080846020015151101561127b5760405162461bcd60e51b815260040161023a906127b8565b60208401516000805b82518110156112d5576112b08382815181106112a2576112a2612558565b602002602001015186611cd0565b156112c357816112bf81612584565b9250505b806112cd81612584565b915050611284565b50828110156112f65760405162461bcd60e51b815260040161023a906127b8565b50505050611349565b8160200151516001146113495760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161023a565b5050808061135690612584565b915050611180565b50565b60006060600061137084610e18565b905060001981036113935760405162461bcd60e51b815260040161023a90612609565b6000600182815481106113a8576113a8612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561142857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161140a575b505050505081525050905080600001518160200151935093505050915091565b61145460016000612059565b6114606002600061207a565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561153557600160405180604001604052808c8c858181106114ac576114ac612558565b90506020020160208101906114c191906121a4565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361151f9392850192919091019061209b565b505050808061152d90612584565b915050611485565b5060005b868110156115f457600260405180604001604052808a8a8581811061156057611560612558565b905060200201602081019061157591906121a4565b6001600160a01b0316815260200188888581811061159557611595612558565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806115ec81612584565b915050611539565b5060048390556003805483919060ff191660018383811115611618576116186121c8565b0217905550505050505050505050565b6000546001600160a01b031633146116525760405162461bcd60e51b815260040161023a9061259d565b6003805460ff1681811115611669576116696121c8565b14158015611678575060045443105b6116d75760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161023a565b6116e360016000612059565b6116ef6002600061207a565b6116fb600560006120f0565b6003805460ff19169055565b6001806003805460ff1690811115611721576117216121c8565b1461173e5760405162461bcd60e51b815260040161023a906125d2565b61174782610648565b6117aa5760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b606482015260840161023a565b813b15158061182157336001600160a01b038416146118175760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b606482015260840161023a565b610a588333611d2d565b600061182c84611c57565b50905080516000036118805760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161023a565b61188a3382611cd0565b6118d65760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161023a565b6118e08433611d2d565b50505050565b6000805b600254811015610ab7576002818154811061190757611907612558565b9060005260206000209060020201600101548261192491906127a5565b91508061193081612584565b9150506118ea565b6000546001600160a01b031633146119625760405162461bcd60e51b815260040161023a9061259d565b6002806003805460ff169081111561197c5761197c6121c8565b146119995760405162461bcd60e51b815260040161023a906125d2565b60056119a583826127fa565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916119e491600591906128ba565b60405180910390a16004544311611a5c5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161023a565b5050565b6000806000611a6e846106fc565b90506000198103611ab95760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b600060028281548110611ace57611ace612558565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161023a9061259d565b61135e81611f2f565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b815260040161023a9061259d565b6001806003805460ff1690811115611b8757611b876121c8565b14611ba45760405162461bcd60e51b815260040161023a906125d2565b611bac610a5d565b611bb46118e6565b10611c3b5760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a40161023a565b611c4361117d565b600380546002919060ff1916600183610b2b565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc5919081019061294f565b909590945092505050565b6000805b8251811015611d2657828181518110611cef57611cef612558565b60200260200101516001600160a01b0316846001600160a01b031603611d1457600191505b80611d1e81612584565b915050611cd4565b5092915050565b6000611d3883610e18565b90506000198103611d5b5760405162461bcd60e51b815260040161023a90612609565b600060018281548110611d7057611d70612558565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611dd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611db7575b5050505050905060005b8151811015611e6757836001600160a01b0316828281518110611e0457611e04612558565b60200260200101516001600160a01b031603611e555760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161023a565b80611e5f81612584565b915050611ddf565b5060018281548110611e7b57611e7b612558565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611ef257611ef2612558565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610e0a565b6001600160a01b038116611f945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561202f5760005260206000209182015b8281111561202f578254825591600101919060010190612014565b50610ab7929150612126565b508054600082559060005260206000209081019061135e9190612126565b508054600082556002029060005260206000209081019061135e919061213b565b508054600082556002029060005260206000209081019061135e9190612169565b82805482825590600052602060002090810192821561202f579160200282015b8281111561202f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120bb565b5080546120fc90612662565b6000825580601f1061210c575050565b601f01602090049060005260206000209081019061135e91905b5b80821115610ab75760008155600101612127565b80821115610ab75780546001600160a01b03191681556000612160600183018261203b565b5060020161213b565b5b80821115610ab75780546001600160a01b03191681556000600182015560020161216a565b6001600160a01b038116811461135e57600080fd5b6000602082840312156121b657600080fd5b81356121c18161218f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106121fc57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161220e82846121de565b92915050565b6000806020838503121561222757600080fd5b823567ffffffffffffffff8082111561223f57600080fd5b818501915085601f83011261225357600080fd5b81358181111561226257600080fd5b86602082850101111561227457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122b357858101830151858201604001528201612297565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156122e657600080fd5b5035919050565b6000806040838503121561230057600080fd5b823561230b8161218f565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612367578551851683529483019491830191600101612349565b509098975050505050505050565b60008083601f84011261238757600080fd5b50813567ffffffffffffffff81111561239f57600080fd5b6020830191508360208260051b85010111156123ba57600080fd5b9250929050565b60008060008060008060008060a0898b0312156123dd57600080fd5b883567ffffffffffffffff808211156123f557600080fd5b6124018c838d01612375565b909a50985060208b013591508082111561241a57600080fd5b6124268c838d01612375565b909850965060408b013591508082111561243f57600080fd5b5061244c8b828c01612375565b9095509350506060890135915060808901356004811061246b57600080fd5b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124bb576124bb61247c565b604052919050565b600060208083850312156124d657600080fd5b823567ffffffffffffffff808211156124ee57600080fd5b818501915085601f83011261250257600080fd5b8135818111156125145761251461247c565b612526601f8201601f19168501612492565b9150808252868482850101111561253c57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125965761259661256e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b8181038181111561220e5761220e61256e565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061267657607f821691505b6020821081036106f657634e487b7160e01b600052602260045260246000fd5b601f821115610a5857600081815260208120601f850160051c810160208610156126bd5750805b601f850160051c820191505b818110156126dc578281556001016126c9565b505050505050565b67ffffffffffffffff8311156126fc576126fc61247c565b6127108361270a8354612662565b83612696565b6000601f841160018114612744576000851561272c5750838201355b600019600387901b1c1916600186901b17835561279e565b600083815260209020601f19861690835b828110156127755786850135825560209485019460019092019101612755565b50868210156127925760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8082018082111561220e5761220e61256e565b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b815167ffffffffffffffff8111156128145761281461247c565b612828816128228454612662565b84612696565b602080601f83116001811461285d57600084156128455750858301515b600019600386901b1c1916600185901b1785556126dc565b600085815260208120601f198616915b8281101561288c5788860151825594840194600190910190840161286d565b50858210156128aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128cc81612662565b80604086015260606001808416600081146128ee576001811461290857612939565b60ff1985168884015283151560051b880183019550612939565b8960005260208060002060005b868110156129305781548b8201870152908401908201612915565b8a018501975050505b5050505050809150506121c160208301846121de565b6000806040838503121561296257600080fd5b825167ffffffffffffffff8082111561297a57600080fd5b818501915085601f83011261298e57600080fd5b81516020828211156129a2576129a261247c565b8160051b92506129b3818401612492565b82815292840181019281810190898511156129cd57600080fd5b948201945b848610156129f757855193506129e78461218f565b83825294820194908201906129d2565b9790910151969896975050505050505056fea2646970667358221220fbe785f29e769c9e64886a98766fcaef0e8a824e731ae2e1ae70441be3f96c3564736f6c63430008130033", } // TreasuryRebalanceMockABI is the input ABI used to generate the binding from. @@ -13881,10 +14176,10 @@ var TreasuryRebalanceMockMetaData = &bind.MetaData{ var TreasuryRebalanceMockABI = TreasuryRebalanceMockMetaData.ABI // TreasuryRebalanceMockBinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const TreasuryRebalanceMockBinRuntime = `6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b146105d3578063eb5a8e55146105f3578063f2fde38b14610613578063faaf9ca614610633576101e3565b8063d826f88f14610568578063daea85c51461057d578063e20fcf001461059d578063e2384cb3146105b2576101e3565b8063966e0794116100d1578063966e0794146104f0578063bf68059014610505578063cc70102914610533578063d1ed33fc14610553576101e3565b80638da5cb5b1461045e5780638f32d59b1461047c57806391734d861461049c57806394393e11146104b1576101e3565b806349a3fb451161017a578063681f6e7c11610149578063681f6e7c146103e9578063683e13cb146104095780636864b95b14610429578063715018a614610449576101e3565b806349a3fb451461035957806358c3b8701461036f5780635a12667b14610391578063652e27e0146103c9576101e3565b8063200d2ed2116101b6578063200d2ed2146102e8578063281a1be91461030f57806345205a6b1461032f5780634840909614610344576101e3565b806301784e051461024357806311f5c466146102785780631c1dac59146102a65780631f8c1798146102c8575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561024f57600080fd5b5061026361025e3660046121a4565b610648565b60405190151581526020015b60405180910390f35b34801561028457600080fd5b506102986102933660046121a4565b6106fc565b60405190815260200161026f565b3480156102b257600080fd5b506102c66102c13660046121a4565b610768565b005b3480156102d457600080fd5b506102c66102e33660046121a4565b610906565b3480156102f457600080fd5b506003546103029060ff1681565b60405161026f9190612200565b34801561031b57600080fd5b506102c661032a366004612214565b610a4b565b34801561033b57600080fd5b50610298610a5d565b34801561035057600080fd5b506102c6610abb565b34801561036557600080fd5b5061029860045481565b34801561037b57600080fd5b50610384610b72565b60405161026f9190612286565b34801561039d57600080fd5b506103b16103ac3660046122d4565b610c00565b6040516001600160a01b03909116815260200161026f565b3480156103d557600080fd5b506102c66103e43660046122ed565b610c2f565b3480156103f557600080fd5b506102986104043660046121a4565b610e18565b34801561041557600080fd5b506102636104243660046121a4565b610e7a565b34801561043557600080fd5b506102c66104443660046121a4565b610f28565b34801561045557600080fd5b506102c66110d1565b34801561046a57600080fd5b506000546001600160a01b03166103b1565b34801561048857600080fd5b506000546001600160a01b03163314610263565b3480156104a857600080fd5b50600254610298565b3480156104bd57600080fd5b506104d16104cc3660046122d4565b611145565b604080516001600160a01b03909316835260208301919091520161026f565b3480156104fc57600080fd5b506102c661117d565b34801561051157600080fd5b506105256105203660046121a4565b611361565b60405161026f929190612319565b34801561053f57600080fd5b506102c661054e3660046123c1565b611448565b34801561055f57600080fd5b50600154610298565b34801561057457600080fd5b506102c6611628565b34801561058957600080fd5b506102c66105983660046121a4565b611707565b3480156105a957600080fd5b506102986118e6565b3480156105be57600080fd5b506102636105cd3660046121a4565b3b151590565b3480156105df57600080fd5b506102c66105ee3660046124c3565b611938565b3480156105ff57600080fd5b506104d161060e3660046121a4565b611a60565b34801561061f57600080fd5b506102c661062e3660046121a4565b611b10565b34801561063f57600080fd5b506102c6611b43565b60006001600160a01b0382166106925760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6001548110156106f657826001600160a01b0316600182815481106106bc576106bc612558565b60009182526020909120600290910201546001600160a01b0316036106e45750600192915050565b806106ee81612584565b915050610695565b50919050565b6000805b60025481101561075e57826001600160a01b03166002828154811061072757610727612558565b60009182526020909120600290910201546001600160a01b03160361074c5792915050565b8061075681612584565b915050610700565b5060001992915050565b6000546001600160a01b031633146107925760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff16908111156107ac576107ac6121c8565b146107c95760405162461bcd60e51b815260040161023a906125d2565b60006107d483610e18565b905060001981036107f75760405162461bcd60e51b815260040161023a90612609565b60018054610806908290612639565b8154811061081657610816612558565b90600052602060002090600202016001828154811061083757610837612558565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461087a9284019190611fef565b50905050600180548061088f5761088f61264c565b60008281526020812060026000199093019283020180546001600160a01b0319168155906108c0600183018261203b565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146109305760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff169081111561094a5761094a6121c8565b146109675760405162461bcd60e51b815260040161023a906125d2565b61097082610648565b156109cb5760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b606482015260840161023a565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108f9565b6005610a588284836126e4565b505050565b6000805b600154811015610ab75760018181548110610a7e57610a7e612558565b6000918252602090912060029091020154610aa3906001600160a01b031631836127a5565b915080610aaf81612584565b915050610a61565b5090565b6000546001600160a01b03163314610ae55760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610aff57610aff6121c8565b14610b1c5760405162461bcd60e51b815260040161023a906125d2565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b679160ff90911690612200565b60405180910390a150565b60058054610b7f90612662565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612662565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b60018181548110610c1057600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610c595760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610c7357610c736121c8565b14610c905760405162461bcd60e51b815260040161023a906125d2565b610c9983610e7a565b15610cf25760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161023a565b81600003610d425760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161023a565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561075e57826001600160a01b031660018281548110610e4357610e43612558565b60009182526020909120600290910201546001600160a01b031603610e685792915050565b80610e7281612584565b915050610e1c565b60006001600160a01b038216610ec45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6002548110156106f657826001600160a01b031660028281548110610eee57610eee612558565b60009182526020909120600290910201546001600160a01b031603610f165750600192915050565b80610f2081612584565b915050610ec7565b6000546001600160a01b03163314610f525760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610f6c57610f6c6121c8565b14610f895760405162461bcd60e51b815260040161023a906125d2565b6000610f94836106fc565b90506000198103610fdf5760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b60028054610fef90600190612639565b81548110610fff57610fff612558565b90600052602060002090600202016002828154811061102057611020612558565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061106c5761106c61264c565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108f9565b6000546001600160a01b031633146110fb5760405162461bcd60e51b815260040161023a9061259d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002818154811061115557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b60015481101561135e5760006001828154811061119f5761119f612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561121f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611201575b5050505050815250509050600061123a82600001513b151590565b905080156112ff576000806112528460000151611c57565b9150915080846020015151101561127b5760405162461bcd60e51b815260040161023a906127b8565b60208401516000805b82518110156112d5576112b08382815181106112a2576112a2612558565b602002602001015186611cd0565b156112c357816112bf81612584565b9250505b806112cd81612584565b915050611284565b50828110156112f65760405162461bcd60e51b815260040161023a906127b8565b50505050611349565b8160200151516001146113495760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161023a565b5050808061135690612584565b915050611180565b50565b60006060600061137084610e18565b905060001981036113935760405162461bcd60e51b815260040161023a90612609565b6000600182815481106113a8576113a8612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561142857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161140a575b505050505081525050905080600001518160200151935093505050915091565b61145460016000612059565b6114606002600061207a565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561153557600160405180604001604052808c8c858181106114ac576114ac612558565b90506020020160208101906114c191906121a4565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361151f9392850192919091019061209b565b505050808061152d90612584565b915050611485565b5060005b868110156115f457600260405180604001604052808a8a8581811061156057611560612558565b905060200201602081019061157591906121a4565b6001600160a01b0316815260200188888581811061159557611595612558565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806115ec81612584565b915050611539565b5060048390556003805483919060ff191660018383811115611618576116186121c8565b0217905550505050505050505050565b6000546001600160a01b031633146116525760405162461bcd60e51b815260040161023a9061259d565b6003805460ff1681811115611669576116696121c8565b14158015611678575060045443105b6116d75760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161023a565b6116e360016000612059565b6116ef6002600061207a565b6116fb600560006120f0565b6003805460ff19169055565b6001806003805460ff1690811115611721576117216121c8565b1461173e5760405162461bcd60e51b815260040161023a906125d2565b61174782610648565b6117aa5760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b606482015260840161023a565b813b15158061182157336001600160a01b038416146118175760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b606482015260840161023a565b610a588333611d2d565b600061182c84611c57565b50905080516000036118805760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161023a565b61188a3382611cd0565b6118d65760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161023a565b6118e08433611d2d565b50505050565b6000805b600254811015610ab7576002818154811061190757611907612558565b9060005260206000209060020201600101548261192491906127a5565b91508061193081612584565b9150506118ea565b6000546001600160a01b031633146119625760405162461bcd60e51b815260040161023a9061259d565b6002806003805460ff169081111561197c5761197c6121c8565b146119995760405162461bcd60e51b815260040161023a906125d2565b60056119a583826127fa565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916119e491600591906128ba565b60405180910390a16004544311611a5c5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161023a565b5050565b6000806000611a6e846106fc565b90506000198103611ab95760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b600060028281548110611ace57611ace612558565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161023a9061259d565b61135e81611f2f565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b815260040161023a9061259d565b6001806003805460ff1690811115611b8757611b876121c8565b14611ba45760405162461bcd60e51b815260040161023a906125d2565b611bac610a5d565b611bb46118e6565b10611c3b5760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a40161023a565b611c4361117d565b600380546002919060ff1916600183610b2b565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc5919081019061294f565b909590945092505050565b6000805b8251811015611d2657828181518110611cef57611cef612558565b60200260200101516001600160a01b0316846001600160a01b031603611d1457600191505b80611d1e81612584565b915050611cd4565b5092915050565b6000611d3883610e18565b90506000198103611d5b5760405162461bcd60e51b815260040161023a90612609565b600060018281548110611d7057611d70612558565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611dd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611db7575b5050505050905060005b8151811015611e6757836001600160a01b0316828281518110611e0457611e04612558565b60200260200101516001600160a01b031603611e555760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161023a565b80611e5f81612584565b915050611ddf565b5060018281548110611e7b57611e7b612558565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611ef257611ef2612558565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610e0a565b6001600160a01b038116611f945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561202f5760005260206000209182015b8281111561202f578254825591600101919060010190612014565b50610ab7929150612126565b508054600082559060005260206000209081019061135e9190612126565b508054600082556002029060005260206000209081019061135e919061213b565b508054600082556002029060005260206000209081019061135e9190612169565b82805482825590600052602060002090810192821561202f579160200282015b8281111561202f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120bb565b5080546120fc90612662565b6000825580601f1061210c575050565b601f01602090049060005260206000209081019061135e91905b5b80821115610ab75760008155600101612127565b80821115610ab75780546001600160a01b03191681556000612160600183018261203b565b5060020161213b565b5b80821115610ab75780546001600160a01b03191681556000600182015560020161216a565b6001600160a01b038116811461135e57600080fd5b6000602082840312156121b657600080fd5b81356121c18161218f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106121fc57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161220e82846121de565b92915050565b6000806020838503121561222757600080fd5b823567ffffffffffffffff8082111561223f57600080fd5b818501915085601f83011261225357600080fd5b81358181111561226257600080fd5b86602082850101111561227457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122b357858101830151858201604001528201612297565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156122e657600080fd5b5035919050565b6000806040838503121561230057600080fd5b823561230b8161218f565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612367578551851683529483019491830191600101612349565b509098975050505050505050565b60008083601f84011261238757600080fd5b50813567ffffffffffffffff81111561239f57600080fd5b6020830191508360208260051b85010111156123ba57600080fd5b9250929050565b60008060008060008060008060a0898b0312156123dd57600080fd5b883567ffffffffffffffff808211156123f557600080fd5b6124018c838d01612375565b909a50985060208b013591508082111561241a57600080fd5b6124268c838d01612375565b909850965060408b013591508082111561243f57600080fd5b5061244c8b828c01612375565b9095509350506060890135915060808901356004811061246b57600080fd5b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124bb576124bb61247c565b604052919050565b600060208083850312156124d657600080fd5b823567ffffffffffffffff808211156124ee57600080fd5b818501915085601f83011261250257600080fd5b8135818111156125145761251461247c565b612526601f8201601f19168501612492565b9150808252868482850101111561253c57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125965761259661256e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b8181038181111561220e5761220e61256e565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061267657607f821691505b6020821081036106f657634e487b7160e01b600052602260045260246000fd5b601f821115610a5857600081815260208120601f850160051c810160208610156126bd5750805b601f850160051c820191505b818110156126dc578281556001016126c9565b505050505050565b67ffffffffffffffff8311156126fc576126fc61247c565b6127108361270a8354612662565b83612696565b6000601f841160018114612744576000851561272c5750838201355b600019600387901b1c1916600186901b17835561279e565b600083815260209020601f19861690835b828110156127755786850135825560209485019460019092019101612755565b50868210156127925760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8082018082111561220e5761220e61256e565b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b815167ffffffffffffffff8111156128145761281461247c565b612828816128228454612662565b84612696565b602080601f83116001811461285d57600084156128455750858301515b600019600386901b1c1916600185901b1785556126dc565b600085815260208120601f198616915b8281101561288c5788860151825594840194600190910190840161286d565b50858210156128aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128cc81612662565b80604086015260606001808416600081146128ee576001811461290857612939565b60ff1985168884015283151560051b880183019550612939565b8960005260208060002060005b868110156129305781548b8201870152908401908201612915565b8a018501975050505b5050505050809150506121c160208301846121de565b6000806040838503121561296257600080fd5b825167ffffffffffffffff8082111561297a57600080fd5b818501915085601f83011261298e57600080fd5b81516020828211156129a2576129a261247c565b8160051b92506129b3818401612492565b82815292840181019281810190898511156129cd57600080fd5b948201945b848610156129f757855193506129e78461218f565b83825294820194908201906129d2565b9790910151969896975050505050505056fea26469706673582212207f907dd5f8bca5030d0c1d22458d484863815295d78cd7e489805f29836238d264736f6c63430008130033` +const TreasuryRebalanceMockBinRuntime = `6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d826f88f11610095578063ea6d4a9b11610064578063ea6d4a9b146105d3578063eb5a8e55146105f3578063f2fde38b14610613578063faaf9ca614610633576101e3565b8063d826f88f14610568578063daea85c51461057d578063e20fcf001461059d578063e2384cb3146105b2576101e3565b8063966e0794116100d1578063966e0794146104f0578063bf68059014610505578063cc70102914610533578063d1ed33fc14610553576101e3565b80638da5cb5b1461045e5780638f32d59b1461047c57806391734d861461049c57806394393e11146104b1576101e3565b806349a3fb451161017a578063681f6e7c11610149578063681f6e7c146103e9578063683e13cb146104095780636864b95b14610429578063715018a614610449576101e3565b806349a3fb451461035957806358c3b8701461036f5780635a12667b14610391578063652e27e0146103c9576101e3565b8063200d2ed2116101b6578063200d2ed2146102e8578063281a1be91461030f57806345205a6b1461032f5780634840909614610344576101e3565b806301784e051461024357806311f5c466146102785780631c1dac59146102a65780631f8c1798146102c8575b60405162461bcd60e51b815260206004820152602a60248201527f5468697320636f6e747261637420646f6573206e6f742061636365707420616e60448201526979207061796d656e747360b01b60648201526084015b60405180910390fd5b34801561024f57600080fd5b5061026361025e3660046121a4565b610648565b60405190151581526020015b60405180910390f35b34801561028457600080fd5b506102986102933660046121a4565b6106fc565b60405190815260200161026f565b3480156102b257600080fd5b506102c66102c13660046121a4565b610768565b005b3480156102d457600080fd5b506102c66102e33660046121a4565b610906565b3480156102f457600080fd5b506003546103029060ff1681565b60405161026f9190612200565b34801561031b57600080fd5b506102c661032a366004612214565b610a4b565b34801561033b57600080fd5b50610298610a5d565b34801561035057600080fd5b506102c6610abb565b34801561036557600080fd5b5061029860045481565b34801561037b57600080fd5b50610384610b72565b60405161026f9190612286565b34801561039d57600080fd5b506103b16103ac3660046122d4565b610c00565b6040516001600160a01b03909116815260200161026f565b3480156103d557600080fd5b506102c66103e43660046122ed565b610c2f565b3480156103f557600080fd5b506102986104043660046121a4565b610e18565b34801561041557600080fd5b506102636104243660046121a4565b610e7a565b34801561043557600080fd5b506102c66104443660046121a4565b610f28565b34801561045557600080fd5b506102c66110d1565b34801561046a57600080fd5b506000546001600160a01b03166103b1565b34801561048857600080fd5b506000546001600160a01b03163314610263565b3480156104a857600080fd5b50600254610298565b3480156104bd57600080fd5b506104d16104cc3660046122d4565b611145565b604080516001600160a01b03909316835260208301919091520161026f565b3480156104fc57600080fd5b506102c661117d565b34801561051157600080fd5b506105256105203660046121a4565b611361565b60405161026f929190612319565b34801561053f57600080fd5b506102c661054e3660046123c1565b611448565b34801561055f57600080fd5b50600154610298565b34801561057457600080fd5b506102c6611628565b34801561058957600080fd5b506102c66105983660046121a4565b611707565b3480156105a957600080fd5b506102986118e6565b3480156105be57600080fd5b506102636105cd3660046121a4565b3b151590565b3480156105df57600080fd5b506102c66105ee3660046124c3565b611938565b3480156105ff57600080fd5b506104d161060e3660046121a4565b611a60565b34801561061f57600080fd5b506102c661062e3660046121a4565b611b10565b34801561063f57600080fd5b506102c6611b43565b60006001600160a01b0382166106925760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6001548110156106f657826001600160a01b0316600182815481106106bc576106bc612558565b60009182526020909120600290910201546001600160a01b0316036106e45750600192915050565b806106ee81612584565b915050610695565b50919050565b6000805b60025481101561075e57826001600160a01b03166002828154811061072757610727612558565b60009182526020909120600290910201546001600160a01b03160361074c5792915050565b8061075681612584565b915050610700565b5060001992915050565b6000546001600160a01b031633146107925760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff16908111156107ac576107ac6121c8565b146107c95760405162461bcd60e51b815260040161023a906125d2565b60006107d483610e18565b905060001981036107f75760405162461bcd60e51b815260040161023a90612609565b60018054610806908290612639565b8154811061081657610816612558565b90600052602060002090600202016001828154811061083757610837612558565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461087a9284019190611fef565b50905050600180548061088f5761088f61264c565b60008281526020812060026000199093019283020180546001600160a01b0319168155906108c0600183018261203b565b505090556040516001600160a01b03841681527f1f46b11b62ae5cc6363d0d5c2e597c4cb8849543d9126353adb73c5d7215e237906020015b60405180910390a1505050565b6000546001600160a01b031633146109305760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff169081111561094a5761094a6121c8565b146109675760405162461bcd60e51b815260040161023a906125d2565b61097082610648565b156109cb5760405162461bcd60e51b815260206004820152602560248201527f52657469726564206164647265737320697320616c72656164792072656769736044820152641d195c995960da1b606482015260840161023a565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527f7da2e87d0b02df1162d5736cc40dfcfffd17198aaf093ddff4a8f4eb26002fde906020016108f9565b6005610a588284836126e4565b505050565b6000805b600154811015610ab75760018181548110610a7e57610a7e612558565b6000918252602090912060029091020154610aa3906001600160a01b031631836127a5565b915080610aaf81612584565b915050610a61565b5090565b6000546001600160a01b03163314610ae55760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610aff57610aff6121c8565b14610b1c5760405162461bcd60e51b815260040161023a906125d2565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b679160ff90911690612200565b60405180910390a150565b60058054610b7f90612662565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612662565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b60018181548110610c1057600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610c595760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610c7357610c736121c8565b14610c905760405162461bcd60e51b815260040161023a906125d2565b610c9983610e7a565b15610cf25760405162461bcd60e51b8152602060048201526024808201527f4e6577626965206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161023a565b81600003610d425760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161023a565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fd261b37cd56b21cd1af841dca6331a133e5d8b9d55c2c6fe0ec822e2a303ef7491015b60405180910390a150505050565b6000805b60015481101561075e57826001600160a01b031660018281548110610e4357610e43612558565b60009182526020909120600290910201546001600160a01b031603610e685792915050565b80610e7281612584565b915050610e1c565b60006001600160a01b038216610ec45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161023a565b60005b6002548110156106f657826001600160a01b031660028281548110610eee57610eee612558565b60009182526020909120600290910201546001600160a01b031603610f165750600192915050565b80610f2081612584565b915050610ec7565b6000546001600160a01b03163314610f525760405162461bcd60e51b815260040161023a9061259d565b6000806003805460ff1690811115610f6c57610f6c6121c8565b14610f895760405162461bcd60e51b815260040161023a906125d2565b6000610f94836106fc565b90506000198103610fdf5760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b60028054610fef90600190612639565b81548110610fff57610fff612558565b90600052602060002090600202016002828154811061102057611020612558565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061106c5761106c61264c565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527fe630072edaed8f0fccf534c7eaa063290db8f775b0824c7261d01e6619da4b3891016108f9565b6000546001600160a01b031633146110fb5760405162461bcd60e51b815260040161023a9061259d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002818154811061115557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60005b60015481101561135e5760006001828154811061119f5761119f612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561121f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611201575b5050505050815250509050600061123a82600001513b151590565b905080156112ff576000806112528460000151611c57565b9150915080846020015151101561127b5760405162461bcd60e51b815260040161023a906127b8565b60208401516000805b82518110156112d5576112b08382815181106112a2576112a2612558565b602002602001015186611cd0565b156112c357816112bf81612584565b9250505b806112cd81612584565b915050611284565b50828110156112f65760405162461bcd60e51b815260040161023a906127b8565b50505050611349565b8160200151516001146113495760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161023a565b5050808061135690612584565b915050611180565b50565b60006060600061137084610e18565b905060001981036113935760405162461bcd60e51b815260040161023a90612609565b6000600182815481106113a8576113a8612558565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561142857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161140a575b505050505081525050905080600001518160200151935093505050915091565b61145460016000612059565b6114606002600061207a565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561153557600160405180604001604052808c8c858181106114ac576114ac612558565b90506020020160208101906114c191906121a4565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361151f9392850192919091019061209b565b505050808061152d90612584565b915050611485565b5060005b868110156115f457600260405180604001604052808a8a8581811061156057611560612558565b905060200201602081019061157591906121a4565b6001600160a01b0316815260200188888581811061159557611595612558565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806115ec81612584565b915050611539565b5060048390556003805483919060ff191660018383811115611618576116186121c8565b0217905550505050505050505050565b6000546001600160a01b031633146116525760405162461bcd60e51b815260040161023a9061259d565b6003805460ff1681811115611669576116696121c8565b14158015611678575060045443105b6116d75760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161023a565b6116e360016000612059565b6116ef6002600061207a565b6116fb600560006120f0565b6003805460ff19169055565b6001806003805460ff1690811115611721576117216121c8565b1461173e5760405162461bcd60e51b815260040161023a906125d2565b61174782610648565b6117aa5760405162461bcd60e51b815260206004820152602e60248201527f72657469726564206e6565647320746f2062652072656769737465726564206260448201526d19599bdc9948185c1c1c9bdd985b60921b606482015260840161023a565b813b15158061182157336001600160a01b038416146118175760405162461bcd60e51b8152602060048201526024808201527f7265746972656441646472657373206973206e6f7420746865206d73672e7365604482015263373232b960e11b606482015260840161023a565b610a588333611d2d565b600061182c84611c57565b50905080516000036118805760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161023a565b61188a3382611cd0565b6118d65760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161023a565b6118e08433611d2d565b50505050565b6000805b600254811015610ab7576002818154811061190757611907612558565b9060005260206000209060020201600101548261192491906127a5565b91508061193081612584565b9150506118ea565b6000546001600160a01b031633146119625760405162461bcd60e51b815260040161023a9061259d565b6002806003805460ff169081111561197c5761197c6121c8565b146119995760405162461bcd60e51b815260040161023a906125d2565b60056119a583826127fa565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca6404916119e491600591906128ba565b60405180910390a16004544311611a5c5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161023a565b5050565b6000806000611a6e846106fc565b90506000198103611ab95760405162461bcd60e51b815260206004820152601560248201527413995dd89a59481b9bdd081c9959da5cdd195c9959605a1b604482015260640161023a565b600060028281548110611ace57611ace612558565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b815260040161023a9061259d565b61135e81611f2f565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b815260040161023a9061259d565b6001806003805460ff1690811115611b8757611b876121c8565b14611ba45760405162461bcd60e51b815260040161023a906125d2565b611bac610a5d565b611bb46118e6565b10611c3b5760405162461bcd60e51b815260206004820152604b60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207265746972656420616464726560648201526a73732062616c616e63657360a81b608482015260a40161023a565b611c4361117d565b600380546002919060ff1916600183610b2b565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc5919081019061294f565b909590945092505050565b6000805b8251811015611d2657828181518110611cef57611cef612558565b60200260200101516001600160a01b0316846001600160a01b031603611d1457600191505b80611d1e81612584565b915050611cd4565b5092915050565b6000611d3883610e18565b90506000198103611d5b5760405162461bcd60e51b815260040161023a90612609565b600060018281548110611d7057611d70612558565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611dd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611db7575b5050505050905060005b8151811015611e6757836001600160a01b0316828281518110611e0457611e04612558565b60200260200101516001600160a01b031603611e555760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161023a565b80611e5f81612584565b915050611ddf565b5060018281548110611e7b57611e7b612558565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0386166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091869186919086908110611ef257611ef2612558565b600091825260209182902060016002909202010154604080516001600160a01b039586168152949093169184019190915290820152606001610e0a565b6001600160a01b038116611f945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b82805482825590600052602060002090810192821561202f5760005260206000209182015b8281111561202f578254825591600101919060010190612014565b50610ab7929150612126565b508054600082559060005260206000209081019061135e9190612126565b508054600082556002029060005260206000209081019061135e919061213b565b508054600082556002029060005260206000209081019061135e9190612169565b82805482825590600052602060002090810192821561202f579160200282015b8281111561202f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120bb565b5080546120fc90612662565b6000825580601f1061210c575050565b601f01602090049060005260206000209081019061135e91905b5b80821115610ab75760008155600101612127565b80821115610ab75780546001600160a01b03191681556000612160600183018261203b565b5060020161213b565b5b80821115610ab75780546001600160a01b03191681556000600182015560020161216a565b6001600160a01b038116811461135e57600080fd5b6000602082840312156121b657600080fd5b81356121c18161218f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106121fc57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161220e82846121de565b92915050565b6000806020838503121561222757600080fd5b823567ffffffffffffffff8082111561223f57600080fd5b818501915085601f83011261225357600080fd5b81358181111561226257600080fd5b86602082850101111561227457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122b357858101830151858201604001528201612297565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156122e657600080fd5b5035919050565b6000806040838503121561230057600080fd5b823561230b8161218f565b946020939093013593505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612367578551851683529483019491830191600101612349565b509098975050505050505050565b60008083601f84011261238757600080fd5b50813567ffffffffffffffff81111561239f57600080fd5b6020830191508360208260051b85010111156123ba57600080fd5b9250929050565b60008060008060008060008060a0898b0312156123dd57600080fd5b883567ffffffffffffffff808211156123f557600080fd5b6124018c838d01612375565b909a50985060208b013591508082111561241a57600080fd5b6124268c838d01612375565b909850965060408b013591508082111561243f57600080fd5b5061244c8b828c01612375565b9095509350506060890135915060808901356004811061246b57600080fd5b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124bb576124bb61247c565b604052919050565b600060208083850312156124d657600080fd5b823567ffffffffffffffff808211156124ee57600080fd5b818501915085601f83011261250257600080fd5b8135818111156125145761251461247c565b612526601f8201601f19168501612492565b9150808252868482850101111561253c57600080fd5b8084840185840137600090820190930192909252509392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016125965761259661256e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b60208082526016908201527514995d1a5c9959081b9bdd081c9959da5cdd195c995960521b604082015260600190565b8181038181111561220e5761220e61256e565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061267657607f821691505b6020821081036106f657634e487b7160e01b600052602260045260246000fd5b601f821115610a5857600081815260208120601f850160051c810160208610156126bd5750805b601f850160051c820191505b818110156126dc578281556001016126c9565b505050505050565b67ffffffffffffffff8311156126fc576126fc61247c565b6127108361270a8354612662565b83612696565b6000601f841160018114612744576000851561272c5750838201355b600019600387901b1c1916600186901b17835561279e565b600083815260209020601f19861690835b828110156127755786850135825560209485019460019092019101612755565b50868210156127925760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8082018082111561220e5761220e61256e565b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b815167ffffffffffffffff8111156128145761281461247c565b612828816128228454612662565b84612696565b602080601f83116001811461285d57600084156128455750858301515b600019600386901b1c1916600185901b1785556126dc565b600085815260208120601f198616915b8281101561288c5788860151825594840194600190910190840161286d565b50858210156128aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128cc81612662565b80604086015260606001808416600081146128ee576001811461290857612939565b60ff1985168884015283151560051b880183019550612939565b8960005260208060002060005b868110156129305781548b8201870152908401908201612915565b8a018501975050505b5050505050809150506121c160208301846121de565b6000806040838503121561296257600080fd5b825167ffffffffffffffff8082111561297a57600080fd5b818501915085601f83011261298e57600080fd5b81516020828211156129a2576129a261247c565b8160051b92506129b3818401612492565b82815292840181019281810190898511156129cd57600080fd5b948201945b848610156129f757855193506129e78461218f565b83825294820194908201906129d2565b9790910151969896975050505050505056fea2646970667358221220fbe785f29e769c9e64886a98766fcaef0e8a824e731ae2e1ae70441be3f96c3564736f6c63430008130033` -// TreasuryRebalanceMockFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceMockMetaData.Sigs instead. +// TreasuryRebalanceMockFuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceMockFuncSigs = TreasuryRebalanceMockMetaData.Sigs // TreasuryRebalanceMockBin is the compiled bytecode used for deploying new contracts. @@ -14056,11 +14351,13 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockTransactorRaw) Transact(opts func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) CheckRetiredsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "checkRetiredsApproved") + if err != nil { return err } return err + } // CheckRetiredsApproved is a free data retrieval call binding the contract method 0x966e0794. @@ -14083,6 +14380,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) CheckRetiredsA func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbie(opts *bind.CallOpts, _newbieAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getNewbie", _newbieAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -14091,6 +14389,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbie(opts *bind. out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetNewbie is a free data retrieval call binding the contract method 0xeb5a8e55. @@ -14113,6 +14412,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetNewbie(_new func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbieCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getNewbieCount") + if err != nil { return *new(*big.Int), err } @@ -14120,6 +14420,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbieCount(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieCount is a free data retrieval call binding the contract method 0x91734d86. @@ -14142,6 +14443,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetNewbieCount func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbieIndex(opts *bind.CallOpts, _newbieAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getNewbieIndex", _newbieAddress) + if err != nil { return *new(*big.Int), err } @@ -14149,6 +14451,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetNewbieIndex(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetNewbieIndex is a free data retrieval call binding the contract method 0x11f5c466. @@ -14171,6 +14474,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetNewbieIndex func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetired(opts *bind.CallOpts, _retiredAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getRetired", _retiredAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -14179,6 +14483,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetired(opts *bind out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetRetired is a free data retrieval call binding the contract method 0xbf680590. @@ -14201,6 +14506,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetRetired(_re func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetiredCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getRetiredCount") + if err != nil { return *new(*big.Int), err } @@ -14208,6 +14514,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetiredCount(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredCount is a free data retrieval call binding the contract method 0xd1ed33fc. @@ -14230,6 +14537,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetRetiredCoun func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetiredIndex(opts *bind.CallOpts, _retiredAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getRetiredIndex", _retiredAddress) + if err != nil { return *new(*big.Int), err } @@ -14237,6 +14545,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetRetiredIndex(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetRetiredIndex is a free data retrieval call binding the contract method 0x681f6e7c. @@ -14259,6 +14568,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetRetiredInde func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -14266,6 +14576,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) GetTreasuryAmount(opt out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -14288,6 +14599,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) GetTreasuryAmo func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -14295,6 +14607,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) IsContractAddr(opts * out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -14317,6 +14630,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) IsContractAddr func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -14324,6 +14638,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) IsOwner(opts *bind.Ca out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -14346,6 +14661,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) IsOwner() (boo func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -14353,6 +14669,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Memo(opts *bind.CallO out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -14375,6 +14692,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Memo() (string func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) NewbieExists(opts *bind.CallOpts, _newbieAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "newbieExists", _newbieAddress) + if err != nil { return *new(bool), err } @@ -14382,6 +14700,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) NewbieExists(opts *bi out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // NewbieExists is a free data retrieval call binding the contract method 0x683e13cb. @@ -14404,8 +14723,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) NewbieExists(_ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Newbies(opts *bind.CallOpts, arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "newbies", arg0) @@ -14413,10 +14731,15 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Newbies(opts *bind.Ca Newbie common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Newbie = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Newbies is a free data retrieval call binding the contract method 0x94393e11. @@ -14425,8 +14748,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Newbies(opts *bind.Ca func (_TreasuryRebalanceMock *TreasuryRebalanceMockSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceMock.Contract.Newbies(&_TreasuryRebalanceMock.CallOpts, arg0) } @@ -14436,8 +14758,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockSession) Newbies(arg0 *big.In func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Newbies(arg0 *big.Int) (struct { Newbie common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceMock.Contract.Newbies(&_TreasuryRebalanceMock.CallOpts, arg0) } @@ -14447,6 +14768,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Newbies(arg0 * func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -14454,6 +14776,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Owner(opts *bind.Call out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -14476,6 +14799,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Owner() (commo func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -14483,6 +14807,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) RebalanceBlockNumber( out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -14505,6 +14830,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) RebalanceBlock func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) RetiredExists(opts *bind.CallOpts, _retiredAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "retiredExists", _retiredAddress) + if err != nil { return *new(bool), err } @@ -14512,6 +14838,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) RetiredExists(opts *b out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // RetiredExists is a free data retrieval call binding the contract method 0x01784e05. @@ -14534,6 +14861,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) RetiredExists( func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Retirees(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "retirees", arg0) + if err != nil { return *new(common.Address), err } @@ -14541,6 +14869,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Retirees(opts *bind.C out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Retirees is a free data retrieval call binding the contract method 0x5a12667b. @@ -14563,6 +14892,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Retirees(arg0 func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -14570,6 +14900,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) Status(opts *bind.Cal out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -14592,6 +14923,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCallerSession) Status() (uint func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) SumOfRetiredBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMock.contract.Call(opts, &out, "sumOfRetiredBalance") + if err != nil { return *new(*big.Int), err } @@ -14599,6 +14931,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockCaller) SumOfRetiredBalance(o out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfRetiredBalance is a free data retrieval call binding the contract method 0x45205a6b. @@ -14988,6 +15321,7 @@ type TreasuryRebalanceMockApproved struct { // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceMockApprovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -14999,6 +15333,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterApproved(opts // // Solidity: event Approved(address retired, address approver, uint256 approversCount) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockApproved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -15039,6 +15374,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseApproved(log t if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15121,6 +15457,7 @@ type TreasuryRebalanceMockContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceMockContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -15132,6 +15469,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterContractDeplo // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -15172,6 +15510,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseContractDeploy if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15253,6 +15592,7 @@ type TreasuryRebalanceMockFinalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceMockFinalizedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -15264,6 +15604,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterFinalized(opt // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockFinalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -15304,6 +15645,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseFinalized(log if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15385,6 +15727,7 @@ type TreasuryRebalanceMockNewbieRegistered struct { // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterNewbieRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceMockNewbieRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -15396,6 +15739,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterNewbieRegiste // // Solidity: event NewbieRegistered(address newbie, uint256 fundAllocation) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchNewbieRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockNewbieRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "NewbieRegistered") if err != nil { return nil, err @@ -15436,6 +15780,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseNewbieRegister if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "NewbieRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15516,6 +15861,7 @@ type TreasuryRebalanceMockNewbieRemoved struct { // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterNewbieRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceMockNewbieRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -15527,6 +15873,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterNewbieRemoved // // Solidity: event NewbieRemoved(address newbie) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchNewbieRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockNewbieRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "NewbieRemoved") if err != nil { return nil, err @@ -15567,6 +15914,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseNewbieRemoved( if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "NewbieRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15648,6 +15996,7 @@ type TreasuryRebalanceMockOwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceMockOwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -15668,6 +16017,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterOwnershipTran // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -15717,6 +16067,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseOwnershipTrans if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15797,6 +16148,7 @@ type TreasuryRebalanceMockRetiredRegistered struct { // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterRetiredRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceMockRetiredRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -15808,6 +16160,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterRetiredRegist // // Solidity: event RetiredRegistered(address retired) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchRetiredRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockRetiredRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "RetiredRegistered") if err != nil { return nil, err @@ -15848,6 +16201,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseRetiredRegiste if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "RetiredRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -15928,6 +16282,7 @@ type TreasuryRebalanceMockRetiredRemoved struct { // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterRetiredRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceMockRetiredRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -15939,6 +16294,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterRetiredRemove // // Solidity: event RetiredRemoved(address retired) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchRetiredRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockRetiredRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "RetiredRemoved") if err != nil { return nil, err @@ -15979,6 +16335,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseRetiredRemoved if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "RetiredRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -16059,6 +16416,7 @@ type TreasuryRebalanceMockStatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceMockStatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -16070,6 +16428,7 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) FilterStatusChanged // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockStatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMock.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -16110,19 +16469,20 @@ func (_TreasuryRebalanceMock *TreasuryRebalanceMockFilterer) ParseStatusChanged( if err := _TreasuryRebalanceMock.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } // TreasuryRebalanceMockV2MetaData contains all meta data concerning the TreasuryRebalanceMockV2 contract. var TreasuryRebalanceMockV2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fundAllocation\",\"type\":\"uint256\"}],\"name\":\"AllocatedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"}],\"name\":\"AllocatedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"approversCount\",\"type\":\"uint256\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rebalanceBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deployedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Finalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"allocatedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allocateds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkZeroedsApproved\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"finalizeContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocated\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllocatedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocatedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasuryAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isContractAddr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalanceBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"registerAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"registerZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"removeAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"removeZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sumOfZeroedBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"zeroedsBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"testFinalize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_zeroeds\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_allocateds\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"testSetAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"name\":\"updateRebalanceBlocknumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"zeroedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeroeds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fundAllocation\",\"type\":\"uint256\"}],\"name\":\"AllocatedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"}],\"name\":\"AllocatedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"approversCount\",\"type\":\"uint256\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rebalanceBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deployedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Finalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"allocatedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allocateds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkZeroedsApproved\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocated\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllocatedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocatedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasuryAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isContractAddr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingMemo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalanceBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"registerAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"registerZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"removeAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"removeZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"setPendingMemo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sumOfZeroedBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"zeroedsBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"testFinalize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_zeroeds\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_allocateds\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"testSetAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"name\":\"updateRebalanceBlocknumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"zeroedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeroeds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", Sigs: map[string]string{ "bd786f57": "allocatedExists(address)", "343e2c85": "allocateds(uint256)", "daea85c5": "approve(address)", "0287d126": "checkZeroedsApproved()", "faaf9ca6": "finalizeApproval()", - "ea6d4a9b": "finalizeContract(string)", + "28c5cf0a": "finalizeContract()", "48409096": "finalizeRegistration()", "9e59eb14": "getAllocated(address)", "ed355529": "getAllocatedCount()", @@ -16135,6 +16495,7 @@ var TreasuryRebalanceMockV2MetaData = &bind.MetaData{ "8f32d59b": "isOwner()", "58c3b870": "memo()", "8da5cb5b": "owner()", + "3a7a47e2": "pendingMemo()", "49a3fb45": "rebalanceBlockNumber()", "ecd86778": "registerAllocated(address,uint256)", "5f9b0df7": "registerZeroed(address)", @@ -16142,6 +16503,7 @@ var TreasuryRebalanceMockV2MetaData = &bind.MetaData{ "db27b50b": "removeZeroed(address)", "715018a6": "renounceOwnership()", "d826f88f": "reset()", + "90d33456": "setPendingMemo(string)", "200d2ed2": "status()", "9ab29b70": "sumOfZeroedBalance()", "281a1be9": "testFinalize(string)", @@ -16151,7 +16513,7 @@ var TreasuryRebalanceMockV2MetaData = &bind.MetaData{ "5f8798c0": "zeroedExists(address)", "62aa3e91": "zeroeds(uint256)", }, - Bin: "0x60806040523480156200001157600080fd5b5060405162002bc738038062002bc7833981016040819052620000349162000143565b600080546001600160a01b0319163390811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3438111620000ed5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840160405180910390fd5b60048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a906200013390600090849042906200015d565b60405180910390a1505062000194565b6000602082840312156200015657600080fd5b5051919050565b60608101600485106200018057634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b612a2380620001a46000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638f32d59b1161011a578063daea85c5116100ad578063ea6d4a9b1161007c578063ea6d4a9b14610433578063ecd8677814610446578063ed35552914610459578063f2fde38b14610461578063faaf9ca61461047457600080fd5b8063daea85c5146103f1578063db27b50b14610404578063e20fcf0014610417578063e2384cb31461041f57600080fd5b8063bd786f57116100e9578063bd786f57146103a2578063cc701029146103b5578063cea1c338146103c8578063d826f88f146103e957600080fd5b80638f32d59b1461036c5780639ab29b701461037f5780639dc954ba146103875780639e59eb141461038f57600080fd5b8063518592da1161019257806362aa3e911161016157806362aa3e9114610315578063715018a6146103405780637bfaf7b7146103485780638da5cb5b1461035b57600080fd5b8063518592da146102b757806358c3b870146102ca5780635f8798c0146102df5780635f9b0df71461030257600080fd5b8063281a1be9116101ce578063281a1be914610253578063343e2c8514610266578063484090961461029857806349a3fb45146102a057600080fd5b80630287d126146102005780631804692f1461020a578063200d2ed21461021d57806327704cb514610240575b600080fd5b61020861047c565b005b610208610218366004612175565b61066d565b60035461022a9060ff1681565b60405161023791906121c6565b60405180910390f35b61020861024e3660046121e9565b610788565b61020861026136600461220d565b61093d565b610279610274366004612175565b61094f565b604080516001600160a01b039093168352602083019190915201610237565b610208610987565b6102a960045481565b604051908152602001610237565b6102a96102c53660046121e9565b610a3e565b6102d2610aae565b604051610237919061227f565b6102f26102ed3660046121e9565b610b3c565b6040519015158152602001610237565b6102086103103660046121e9565b610bf3565b610328610323366004612175565b610d36565b6040516001600160a01b039091168152602001610237565b610208610d65565b6102a96103563660046121e9565b610dd9565b6000546001600160a01b0316610328565b6000546001600160a01b031633146102f2565b6102a9610e3e565b6001546102a9565b61027961039d3660046121e9565b610e9f565b6102f26103b03660046121e9565b610f52565b6102086103c3366004612319565b611002565b6103db6103d63660046121e9565b6111e2565b6040516102379291906123d4565b6102086112c9565b6102086103ff3660046121e9565b6113f7565b6102086104123660046121e9565b6115d8565b6102a961176d565b6102f261042d3660046121e9565b3b151590565b610208610441366004612477565b6117c1565b61020861045436600461250c565b6118e5565b6002546102a9565b61020861046f3660046121e9565b611ad1565b610208611b07565b60015460005b818110156106695760006001828154811061049f5761049f612538565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561051f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610501575b5050505050815250509050600061053a82600001513b151590565b9050801561060a576000806105528460000151611c1a565b915091508084602001515110156105845760405162461bcd60e51b815260040161057b9061254e565b60405180910390fd5b602084015180516000805b828110156105df576105ba8482815181106105ac576105ac612538565b602002602001015187611c93565b156105cd57816105c9816125a6565b9250505b806105d7816125a6565b91505061058f565b50838110156106005760405162461bcd60e51b815260040161057b9061254e565b5050505050610654565b8160200151516001146106545760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161057b565b50508080610661906125a6565b915050610482565b5050565b6000546001600160a01b031633146106975760405162461bcd60e51b815260040161057b906125bf565b600454431061070e5760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d6265720000606482015260840161057b565b8043106107835760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840161057b565b600455565b6000546001600160a01b031633146107b25760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156107cc576107cc61218e565b146107e95760405162461bcd60e51b815260040161057b906125f4565b60006107f483610dd9565b905060001981036108425760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161057b565b600280546108529060019061262b565b8154811061086257610862612538565b90600052602060002090600202016002828154811061088357610883612538565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108cf576108cf61263e565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b600561094a8284836126dc565b505050565b6002818154811061095f57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b6000546001600160a01b031633146109b15760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156109cb576109cb61218e565b146109e85760405162461bcd60e51b815260040161057b906125f4565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610a339160ff909116906121c6565b60405180910390a150565b600154600090815b81811015610aa357836001600160a01b031660018281548110610a6b57610a6b612538565b60009182526020909120600290910201546001600160a01b031603610a91579392505050565b80610a9b816125a6565b915050610a46565b506000199392505050565b60058054610abb90612654565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790612654565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081565b60006001600160a01b038216610b865760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161057b565b60015460005b81811015610bec57836001600160a01b031660018281548110610bb157610bb1612538565b60009182526020909120600290910201546001600160a01b031603610bda575060019392505050565b80610be4816125a6565b915050610b8c565b5050919050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff1690811115610c3757610c3761218e565b14610c545760405162461bcd60e51b815260040161057b906125f4565b610c5d82610b3c565b15610cb65760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161057b565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e9290602001610930565b60018181548110610d4657600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610d8f5760405162461bcd60e51b815260040161057b906125bf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610aa357836001600160a01b031660028281548110610e0657610e06612538565b60009182526020909120600290910201546001600160a01b031603610e2c579392505050565b80610e36816125a6565b915050610de1565b600154600090815b81811015610e9a5760018181548110610e6157610e61612538565b6000918252602090912060029091020154610e86906001600160a01b0316318461279c565b925080610e92816125a6565b915050610e46565b505090565b6000806000610ead84610dd9565b90506000198103610efb5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161057b565b600060028281548110610f1057610f10612538565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b038216610f9c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161057b565b60025460005b81811015610bec57836001600160a01b031660028281548110610fc757610fc7612538565b60009182526020909120600290910201546001600160a01b031603610ff0575060019392505050565b80610ffa816125a6565b915050610fa2565b61100e60016000611fcd565b61101a60026000611fee565b6040805160018082528183019092526000916020808301908036833701905050905060005b888110156110ef57600160405180604001604052808c8c8581811061106657611066612538565b905060200201602081019061107b91906121e9565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b03191691909216178155828201518051939491936110d99392850192919091019061200f565b50505080806110e7906125a6565b91505061103f565b5060005b868110156111ae57600260405180604001604052808a8a8581811061111a5761111a612538565b905060200201602081019061112f91906121e9565b6001600160a01b0316815260200188888581811061114f5761114f612538565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806111a6816125a6565b9150506110f3565b5060048390556003805483919060ff1916600183838111156111d2576111d261218e565b0217905550505050505050505050565b6000606060006111f184610a3e565b905060001981036112145760405162461bcd60e51b815260040161057b906127af565b60006001828154811061122957611229612538565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112a957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161128b575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146112f35760405162461bcd60e51b815260040161057b906125bf565b6003805460ff168181111561130a5761130a61218e565b0361136a5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161057b565b60045443106113c75760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b606482015260840161057b565b6113d360016000611fcd565b6113df60026000611fee565b6113eb60056000612074565b6003805460ff19169055565b6001806003805460ff16908111156114115761141161218e565b1461142e5760405162461bcd60e51b815260040161057b906125f4565b61143782610b3c565b6114995760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b606482015260840161057b565b813b15158061151057336001600160a01b038416146115065760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b606482015260840161057b565b61094a8333611cfe565b60008061151c85611c1a565b9150915081516000036115715760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161057b565b61157b3383611c93565b6115c75760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161057b565b6115d18533611cfe565b5050505050565b6000546001600160a01b031633146116025760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff169081111561161c5761161c61218e565b146116395760405162461bcd60e51b815260040161057b906125f4565b600061164483610a3e565b905060001981036116675760405162461bcd60e51b815260040161057b906127af565b6001805461167690829061262b565b8154811061168657611686612538565b9060005260206000209060020201600182815481106116a7576116a7612538565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546116ea92840191906120ae565b5090505060018054806116ff576116ff61263e565b60008281526020812060026000199093019283020180546001600160a01b03191681559061173060018301826120ee565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c90602001610930565b600254600090815b81811015610e9a576002818154811061179057611790612538565b906000526020600020906002020160010154836117ad919061279c565b9250806117b9816125a6565b915050611775565b6000546001600160a01b031633146117eb5760405162461bcd60e51b815260040161057b906125bf565b6002806003805460ff16908111156118055761180561218e565b146118225760405162461bcd60e51b815260040161057b906125f4565b600561182e83826127de565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca64049161186d916005919061289e565b60405180910390a160045443116106695760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161057b565b6000546001600160a01b0316331461190f5760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156119295761192961218e565b146119465760405162461bcd60e51b815260040161057b906125f4565b61194f83610f52565b156119ac5760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b606482015260840161057b565b816000036119fc5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161057b565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b03163314611afb5760405162461bcd60e51b815260040161057b906125bf565b611b0481611f0d565b50565b6000546001600160a01b03163314611b315760405162461bcd60e51b815260040161057b906125bf565b6001806003805460ff1690811115611b4b57611b4b61218e565b14611b685760405162461bcd60e51b815260040161057b906125f4565b611b70610e3e565b611b7861176d565b10611bfe5760405162461bcd60e51b815260206004820152604a60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207a65726f656420616464726573606482015269732062616c616e63657360b01b608482015260a40161057b565b611c0661047c565b600380546002919060ff19166001836109f7565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c889190810190612933565b909590945092505050565b8051600090815b81811015611cf157838181518110611cb457611cb4612538565b60200260200101516001600160a01b0316856001600160a01b031603611cdf57600192505050611cf8565b80611ce9816125a6565b915050611c9a565b5060009150505b92915050565b6000611d0983610a3e565b90506000198103611d2c5760405162461bcd60e51b815260040161057b906127af565b600060018281548110611d4157611d41612538565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611da657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d88575b505083519394506000925050505b81811015611e3b57846001600160a01b0316838281518110611dd857611dd8612538565b60200260200101516001600160a01b031603611e295760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161057b565b80611e33816125a6565b915050611db4565b5060018381548110611e4f57611e4f612538565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611ec657611ec6612538565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611f725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5080546000825560020290600052602060002090810190611b04919061210c565b5080546000825560020290600052602060002090810190611b04919061213a565b828054828255906000526020600020908101928215612064579160200282015b8281111561206457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061202f565b50612070929150612160565b5090565b50805461208090612654565b6000825580601f10612090575050565b601f016020900490600052602060002090810190611b049190612160565b8280548282559060005260206000209081019282156120645760005260206000209182015b828111156120645782548255916001019190600101906120d3565b5080546000825590600052602060002090810190611b049190612160565b808211156120705780546001600160a01b0319168155600061213160018301826120ee565b5060020161210c565b5b808211156120705780546001600160a01b03191681556000600182015560020161213b565b5b808211156120705760008155600101612161565b60006020828403121561218757600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600481106121c257634e487b7160e01b600052602160045260246000fd5b9052565b60208101611cf882846121a4565b6001600160a01b0381168114611b0457600080fd5b6000602082840312156121fb57600080fd5b8135612206816121d4565b9392505050565b6000806020838503121561222057600080fd5b823567ffffffffffffffff8082111561223857600080fd5b818501915085601f83011261224c57600080fd5b81358181111561225b57600080fd5b86602082850101111561226d57600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122ac57858101830151858201604001528201612290565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f8401126122df57600080fd5b50813567ffffffffffffffff8111156122f757600080fd5b6020830191508360208260051b850101111561231257600080fd5b9250929050565b60008060008060008060008060a0898b03121561233557600080fd5b883567ffffffffffffffff8082111561234d57600080fd5b6123598c838d016122cd565b909a50985060208b013591508082111561237257600080fd5b61237e8c838d016122cd565b909850965060408b013591508082111561239757600080fd5b506123a48b828c016122cd565b909550935050606089013591506080890135600481106123c357600080fd5b809150509295985092959890939650565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612422578551851683529483019491830191600101612404565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561246f5761246f612430565b604052919050565b6000602080838503121561248a57600080fd5b823567ffffffffffffffff808211156124a257600080fd5b818501915085601f8301126124b657600080fd5b8135818111156124c8576124c8612430565b6124da601f8201601f19168501612446565b915080825286848285010111156124f057600080fd5b8084840185840137600090820190930192909252509392505050565b6000806040838503121561251f57600080fd5b823561252a816121d4565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016125b8576125b8612590565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611cf857611cf8612590565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061266857607f821691505b60208210810361268857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561094a57600081815260208120601f850160051c810160208610156126b55750805b601f850160051c820191505b818110156126d4578281556001016126c1565b505050505050565b67ffffffffffffffff8311156126f4576126f4612430565b612708836127028354612654565b8361268e565b6000601f84116001811461273c57600085156127245750838201355b600019600387901b1c1916600186901b1783556115d1565b600083815260209020601f19861690835b8281101561276d578685013582556020948501946001909201910161274d565b508682101561278a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115611cf857611cf8612590565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b815167ffffffffffffffff8111156127f8576127f8612430565b61280c816128068454612654565b8461268e565b602080601f83116001811461284157600084156128295750858301515b600019600386901b1c1916600185901b1785556126d4565b600085815260208120601f198616915b8281101561287057888601518255948401946001909101908401612851565b508582101561288e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128b081612654565b80604086015260606001808416600081146128d257600181146128ec5761291d565b60ff1985168884015283151560051b88018301955061291d565b8960005260208060002060005b868110156129145781548b82018701529084019082016128f9565b8a018501975050505b50505050508091505061220660208301846121a4565b6000806040838503121561294657600080fd5b825167ffffffffffffffff8082111561295e57600080fd5b818501915085601f83011261297257600080fd5b815160208282111561298657612986612430565b8160051b9250612997818401612446565b82815292840181019281810190898511156129b157600080fd5b948201945b848610156129db57855193506129cb846121d4565b83825294820194908201906129b6565b9790910151969896975050505050505056fea26469706673582212205a3cbe10d4f9ff4b1cf2308226c169642626039f081e129298372a454dc8300b64736f6c63430008130033", + Bin: "0x60806040523480156200001157600080fd5b5060405162002d1638038062002d16833981016040819052620000349162000143565b600080546001600160a01b0319163390811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3438111620000ed5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840160405180910390fd5b60048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a906200013390600090849042906200015d565b60405180910390a1505062000194565b6000602082840312156200015657600080fd5b5051919050565b60608101600485106200018057634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b612b7280620001a46000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d826f88f116100ad578063e2384cb31161007c578063e2384cb314610458578063ecd867781461046c578063ed3555291461047f578063f2fde38b14610487578063faaf9ca61461049a57600080fd5b8063d826f88f14610422578063daea85c51461042a578063db27b50b1461043d578063e20fcf001461045057600080fd5b80639dc954ba116100f45780639dc954ba146103c05780639e59eb14146103c8578063bd786f57146103db578063cc701029146103ee578063cea1c3381461040157600080fd5b80638da5cb5b146103815780638f32d59b1461039257806390d33456146103a55780639ab29b70146103b857600080fd5b806348409096116101a85780635f8798c0116101775780635f8798c0146103055780635f9b0df71461032857806362aa3e911461033b578063715018a6146103665780637bfaf7b71461036e57600080fd5b806348409096146102cb57806349a3fb45146102d3578063518592da146102ea57806358c3b870146102fd57600080fd5b8063281a1be9116101e4578063281a1be91461026957806328c5cf0a1461027c578063343e2c85146102845780633a7a47e2146102b657600080fd5b80630287d126146102165780631804692f14610220578063200d2ed21461023357806327704cb514610256575b600080fd5b61021e6104a2565b005b61021e61022e3660046121ec565b610693565b6003546102409060ff1681565b60405161024d919061223d565b60405180910390f35b61021e610264366004612260565b6107ae565b61021e610277366004612284565b610963565b61021e610975565b6102976102923660046121ec565b610b11565b604080516001600160a01b03909316835260208301919091520161024d565b6102be610b49565b60405161024d91906122f6565b61021e610bd7565b6102dc60045481565b60405190815260200161024d565b6102dc6102f8366004612260565b610c83565b6102be610cf3565b610318610313366004612260565b610d00565b604051901515815260200161024d565b61021e610336366004612260565b610db7565b61034e6103493660046121ec565b610efa565b6040516001600160a01b03909116815260200161024d565b61021e610f29565b6102dc61037c366004612260565b610f9d565b6000546001600160a01b031661034e565b6000546001600160a01b03163314610318565b61021e6103b336600461238b565b611002565b6102dc61106f565b6001546102dc565b6102976103d6366004612260565b6110d0565b6103186103e9366004612260565b611183565b61021e6103fc36600461246c565b611233565b61041461040f366004612260565b611413565b60405161024d929190612527565b61021e6114fa565b61021e610438366004612260565b611628565b61021e61044b366004612260565b611809565b6102dc61199e565b610318610466366004612260565b3b151590565b61021e61047a366004612583565b6119f2565b6002546102dc565b61021e610495366004612260565b611bde565b61021e611c14565b60015460005b8181101561068f576000600182815481106104c5576104c56125af565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561054557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610527575b5050505050815250509050600061056082600001513b151590565b90508015610630576000806105788460000151611c91565b915091508084602001515110156105aa5760405162461bcd60e51b81526004016105a1906125c5565b60405180910390fd5b602084015180516000805b82811015610605576105e08482815181106105d2576105d26125af565b602002602001015187611d0a565b156105f357816105ef8161261d565b9250505b806105fd8161261d565b9150506105b5565b50838110156106265760405162461bcd60e51b81526004016105a1906125c5565b505050505061067a565b81602001515160011461067a5760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b60448201526064016105a1565b505080806106879061261d565b9150506104a8565b5050565b6000546001600160a01b031633146106bd5760405162461bcd60e51b81526004016105a190612636565b60045443106107345760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d626572000060648201526084016105a1565b8043106107a95760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b00000000000060648201526084016105a1565b600455565b6000546001600160a01b031633146107d85760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff16908111156107f2576107f2612205565b1461080f5760405162461bcd60e51b81526004016105a19061266b565b600061081a83610f9d565b905060001981036108685760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b60448201526064016105a1565b60028054610878906001906126a2565b81548110610888576108886125af565b9060005260206000209060020201600282815481106108a9576108a96125af565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108f5576108f56126b5565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6006610970828483612768565b505050565b6000546001600160a01b0316331461099f5760405162461bcd60e51b81526004016105a190612636565b6002806003805460ff16908111156109b9576109b9612205565b146109d65760405162461bcd60e51b81526004016105a19061266b565b6004544311610a465760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b60648201526084016105a1565b600060058054610a55906126cb565b905011610aba5760405162461bcd60e51b815260206004820152602d60248201527f6e6f2070656e64696e67206d656d6f2c2063616e6e6f742066696e616c697a6560448201526c20776974686f7574206d656d6f60981b60648201526084016105a1565b6006610ac7600582612822565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca640491610b0691600691906128f9565b60405180910390a150565b60028181548110610b2157600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058054610b56906126cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b82906126cb565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b505050505081565b6000546001600160a01b03163314610c015760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115610c1b57610c1b612205565b14610c385760405162461bcd60e51b81526004016105a19061266b565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b069160ff9091169061223d565b600154600090815b81811015610ce857836001600160a01b031660018281548110610cb057610cb06125af565b60009182526020909120600290910201546001600160a01b031603610cd6579392505050565b80610ce08161261d565b915050610c8b565b506000199392505050565b60068054610b56906126cb565b60006001600160a01b038216610d4a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016105a1565b60015460005b81811015610db057836001600160a01b031660018281548110610d7557610d756125af565b60009182526020909120600290910201546001600160a01b031603610d9e575060019392505050565b80610da88161261d565b915050610d50565b5050919050565b6000546001600160a01b03163314610de15760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115610dfb57610dfb612205565b14610e185760405162461bcd60e51b81526004016105a19061266b565b610e2182610d00565b15610e7a5760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b60648201526084016105a1565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e9290602001610956565b60018181548110610f0a57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610f535760405162461bcd60e51b81526004016105a190612636565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610ce857836001600160a01b031660028281548110610fca57610fca6125af565b60009182526020909120600290910201546001600160a01b031603610ff0579392505050565b80610ffa8161261d565b915050610fa5565b6000546001600160a01b0316331461102c5760405162461bcd60e51b81526004016105a190612636565b6002806003805460ff169081111561104657611046612205565b146110635760405162461bcd60e51b81526004016105a19061266b565b6005610970838261298e565b600154600090815b818110156110cb5760018181548110611092576110926125af565b60009182526020909120600290910201546110b7906001600160a01b03163184612a40565b9250806110c38161261d565b915050611077565b505090565b60008060006110de84610f9d565b9050600019810361112c5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b60448201526064016105a1565b600060028281548110611141576111416125af565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b0382166111cd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016105a1565b60025460005b81811015610db057836001600160a01b0316600282815481106111f8576111f86125af565b60009182526020909120600290910201546001600160a01b031603611221575060019392505050565b8061122b8161261d565b9150506111d3565b61123f60016000612044565b61124b60026000612065565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561132057600160405180604001604052808c8c85818110611297576112976125af565b90506020020160208101906112ac9190612260565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361130a93928501929190910190612086565b50505080806113189061261d565b915050611270565b5060005b868110156113df57600260405180604001604052808a8a8581811061134b5761134b6125af565b90506020020160208101906113609190612260565b6001600160a01b03168152602001888885818110611380576113806125af565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806113d78161261d565b915050611324565b5060048390556003805483919060ff19166001838381111561140357611403612205565b0217905550505050505050505050565b60006060600061142284610c83565b905060001981036114455760405162461bcd60e51b81526004016105a190612a53565b60006001828154811061145a5761145a6125af565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156114da57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114bc575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146115245760405162461bcd60e51b81526004016105a190612636565b6003805460ff168181111561153b5761153b612205565b0361159b5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b60648201526084016105a1565b60045443106115f85760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b60648201526084016105a1565b61160460016000612044565b61161060026000612065565b61161c600660006120eb565b6003805460ff19169055565b6001806003805460ff169081111561164257611642612205565b1461165f5760405162461bcd60e51b81526004016105a19061266b565b61166882610d00565b6116ca5760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b60648201526084016105a1565b813b15158061174157336001600160a01b038416146117375760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b60648201526084016105a1565b6109708333611d75565b60008061174d85611c91565b9150915081516000036117a25760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d70747900000000000060448201526064016105a1565b6117ac3383611d0a565b6117f85760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e000000000060448201526064016105a1565b6118028533611d75565b5050505050565b6000546001600160a01b031633146118335760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff169081111561184d5761184d612205565b1461186a5760405162461bcd60e51b81526004016105a19061266b565b600061187583610c83565b905060001981036118985760405162461bcd60e51b81526004016105a190612a53565b600180546118a79082906126a2565b815481106118b7576118b76125af565b9060005260206000209060020201600182815481106118d8576118d86125af565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461191b9284019190612125565b509050506001805480611930576119306126b5565b60008281526020812060026000199093019283020180546001600160a01b0319168155906119616001830182612165565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c90602001610956565b600254600090815b818110156110cb57600281815481106119c1576119c16125af565b906000526020600020906002020160010154836119de9190612a40565b9250806119ea8161261d565b9150506119a6565b6000546001600160a01b03163314611a1c5760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115611a3657611a36612205565b14611a535760405162461bcd60e51b81526004016105a19061266b565b611a5c83611183565b15611ab95760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b60648201526084016105a1565b81600003611b095760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f20300000000000000060448201526064016105a1565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b03163314611c085760405162461bcd60e51b81526004016105a190612636565b611c1181611f84565b50565b6000546001600160a01b03163314611c3e5760405162461bcd60e51b81526004016105a190612636565b6001806003805460ff1690811115611c5857611c58612205565b14611c755760405162461bcd60e51b81526004016105a19061266b565b611c7d6104a2565b600380546002919060ff1916600183610c47565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cff9190810190612a82565b909590945092505050565b8051600090815b81811015611d6857838181518110611d2b57611d2b6125af565b60200260200101516001600160a01b0316856001600160a01b031603611d5657600192505050611d6f565b80611d608161261d565b915050611d11565b5060009150505b92915050565b6000611d8083610c83565b90506000198103611da35760405162461bcd60e51b81526004016105a190612a53565b600060018281548110611db857611db86125af565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611e1d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dff575b505083519394506000925050505b81811015611eb257846001600160a01b0316838281518110611e4f57611e4f6125af565b60200260200101516001600160a01b031603611ea05760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b60448201526064016105a1565b80611eaa8161261d565b915050611e2b565b5060018381548110611ec657611ec66125af565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611f3d57611f3d6125af565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611fe95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5080546000825560020290600052602060002090810190611c119190612183565b5080546000825560020290600052602060002090810190611c1191906121b1565b8280548282559060005260206000209081019282156120db579160200282015b828111156120db57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120a6565b506120e79291506121d7565b5090565b5080546120f7906126cb565b6000825580601f10612107575050565b601f016020900490600052602060002090810190611c1191906121d7565b8280548282559060005260206000209081019282156120db5760005260206000209182015b828111156120db57825482559160010191906001019061214a565b5080546000825590600052602060002090810190611c1191906121d7565b808211156120e75780546001600160a01b031916815560006121a86001830182612165565b50600201612183565b5b808211156120e75780546001600160a01b0319168155600060018201556002016121b2565b5b808211156120e757600081556001016121d8565b6000602082840312156121fe57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6004811061223957634e487b7160e01b600052602160045260246000fd5b9052565b60208101611d6f828461221b565b6001600160a01b0381168114611c1157600080fd5b60006020828403121561227257600080fd5b813561227d8161224b565b9392505050565b6000806020838503121561229757600080fd5b823567ffffffffffffffff808211156122af57600080fd5b818501915085601f8301126122c357600080fd5b8135818111156122d257600080fd5b8660208285010111156122e457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b8181101561232357858101830151858201604001528201612307565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561238357612383612344565b604052919050565b6000602080838503121561239e57600080fd5b823567ffffffffffffffff808211156123b657600080fd5b818501915085601f8301126123ca57600080fd5b8135818111156123dc576123dc612344565b6123ee601f8201601f1916850161235a565b9150808252868482850101111561240457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261243257600080fd5b50813567ffffffffffffffff81111561244a57600080fd5b6020830191508360208260051b850101111561246557600080fd5b9250929050565b60008060008060008060008060a0898b03121561248857600080fd5b883567ffffffffffffffff808211156124a057600080fd5b6124ac8c838d01612420565b909a50985060208b01359150808211156124c557600080fd5b6124d18c838d01612420565b909850965060408b01359150808211156124ea57600080fd5b506124f78b828c01612420565b9095509350506060890135915060808901356004811061251657600080fd5b809150509295985092959890939650565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612575578551851683529483019491830191600101612557565b509098975050505050505050565b6000806040838503121561259657600080fd5b82356125a18161224b565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161262f5761262f612607565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611d6f57611d6f612607565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806126df57607f821691505b6020821081036126ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561097057600081815260208120601f850160051c8101602086101561272c5750805b601f850160051c820191505b8181101561274b57828155600101612738565b505050505050565b600019600383901b1c191660019190911b1790565b67ffffffffffffffff83111561278057612780612344565b6127948361278e83546126cb565b83612705565b6000601f8411600181146127c257600085156127b05750838201355b6127ba8682612753565b845550611802565b600083815260209020601f19861690835b828110156127f357868501358255602094850194600190920191016127d3565b50868210156128105760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810361282d575050565b61283782546126cb565b67ffffffffffffffff81111561284f5761284f612344565b6128638161285d84546126cb565b84612705565b6000601f821160018114612891576000831561287f5750848201545b6128898482612753565b855550611802565b600085815260209020601f19841690600086815260209020845b838110156128cb57828601548255600195860195909101906020016128ab565b50858310156128e95781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600080845461290b816126cb565b806040860152606060018084166000811461292d576001811461294757612978565b60ff1985168884015283151560051b880183019550612978565b8960005260208060002060005b8681101561296f5781548b8201870152908401908201612954565b8a018501975050505b50505050508091505061227d602083018461221b565b815167ffffffffffffffff8111156129a8576129a8612344565b6129b68161285d84546126cb565b602080601f8311600181146129e557600084156129d35750858301515b6129dd8582612753565b86555061274b565b600085815260208120601f198616915b82811015612a14578886015182559484019460019091019084016129f5565b50858210156128e957939096015160001960f8600387901b161c19169092555050600190811b01905550565b80820180821115611d6f57611d6f612607565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b60008060408385031215612a9557600080fd5b825167ffffffffffffffff80821115612aad57600080fd5b818501915085601f830112612ac157600080fd5b8151602082821115612ad557612ad5612344565b8160051b9250612ae681840161235a565b8281529284018101928181019089851115612b0057600080fd5b948201945b84861015612b2a5785519350612b1a8461224b565b8382529482019490820190612b05565b9790910151969896975050505050505056fea2646970667358221220eb2e5fbc0cc4fde39394c4f4078da6e1b5c05f9d7ce6cae3fa33821ea7c6c80064736f6c63430008130033", } // TreasuryRebalanceMockV2ABI is the input ABI used to generate the binding from. @@ -16159,10 +16521,10 @@ var TreasuryRebalanceMockV2MetaData = &bind.MetaData{ var TreasuryRebalanceMockV2ABI = TreasuryRebalanceMockV2MetaData.ABI // TreasuryRebalanceMockV2BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const TreasuryRebalanceMockV2BinRuntime = `608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638f32d59b1161011a578063daea85c5116100ad578063ea6d4a9b1161007c578063ea6d4a9b14610433578063ecd8677814610446578063ed35552914610459578063f2fde38b14610461578063faaf9ca61461047457600080fd5b8063daea85c5146103f1578063db27b50b14610404578063e20fcf0014610417578063e2384cb31461041f57600080fd5b8063bd786f57116100e9578063bd786f57146103a2578063cc701029146103b5578063cea1c338146103c8578063d826f88f146103e957600080fd5b80638f32d59b1461036c5780639ab29b701461037f5780639dc954ba146103875780639e59eb141461038f57600080fd5b8063518592da1161019257806362aa3e911161016157806362aa3e9114610315578063715018a6146103405780637bfaf7b7146103485780638da5cb5b1461035b57600080fd5b8063518592da146102b757806358c3b870146102ca5780635f8798c0146102df5780635f9b0df71461030257600080fd5b8063281a1be9116101ce578063281a1be914610253578063343e2c8514610266578063484090961461029857806349a3fb45146102a057600080fd5b80630287d126146102005780631804692f1461020a578063200d2ed21461021d57806327704cb514610240575b600080fd5b61020861047c565b005b610208610218366004612175565b61066d565b60035461022a9060ff1681565b60405161023791906121c6565b60405180910390f35b61020861024e3660046121e9565b610788565b61020861026136600461220d565b61093d565b610279610274366004612175565b61094f565b604080516001600160a01b039093168352602083019190915201610237565b610208610987565b6102a960045481565b604051908152602001610237565b6102a96102c53660046121e9565b610a3e565b6102d2610aae565b604051610237919061227f565b6102f26102ed3660046121e9565b610b3c565b6040519015158152602001610237565b6102086103103660046121e9565b610bf3565b610328610323366004612175565b610d36565b6040516001600160a01b039091168152602001610237565b610208610d65565b6102a96103563660046121e9565b610dd9565b6000546001600160a01b0316610328565b6000546001600160a01b031633146102f2565b6102a9610e3e565b6001546102a9565b61027961039d3660046121e9565b610e9f565b6102f26103b03660046121e9565b610f52565b6102086103c3366004612319565b611002565b6103db6103d63660046121e9565b6111e2565b6040516102379291906123d4565b6102086112c9565b6102086103ff3660046121e9565b6113f7565b6102086104123660046121e9565b6115d8565b6102a961176d565b6102f261042d3660046121e9565b3b151590565b610208610441366004612477565b6117c1565b61020861045436600461250c565b6118e5565b6002546102a9565b61020861046f3660046121e9565b611ad1565b610208611b07565b60015460005b818110156106695760006001828154811061049f5761049f612538565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561051f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610501575b5050505050815250509050600061053a82600001513b151590565b9050801561060a576000806105528460000151611c1a565b915091508084602001515110156105845760405162461bcd60e51b815260040161057b9061254e565b60405180910390fd5b602084015180516000805b828110156105df576105ba8482815181106105ac576105ac612538565b602002602001015187611c93565b156105cd57816105c9816125a6565b9250505b806105d7816125a6565b91505061058f565b50838110156106005760405162461bcd60e51b815260040161057b9061254e565b5050505050610654565b8160200151516001146106545760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161057b565b50508080610661906125a6565b915050610482565b5050565b6000546001600160a01b031633146106975760405162461bcd60e51b815260040161057b906125bf565b600454431061070e5760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d6265720000606482015260840161057b565b8043106107835760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840161057b565b600455565b6000546001600160a01b031633146107b25760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156107cc576107cc61218e565b146107e95760405162461bcd60e51b815260040161057b906125f4565b60006107f483610dd9565b905060001981036108425760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161057b565b600280546108529060019061262b565b8154811061086257610862612538565b90600052602060002090600202016002828154811061088357610883612538565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108cf576108cf61263e565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b600561094a8284836126dc565b505050565b6002818154811061095f57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b6000546001600160a01b031633146109b15760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156109cb576109cb61218e565b146109e85760405162461bcd60e51b815260040161057b906125f4565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610a339160ff909116906121c6565b60405180910390a150565b600154600090815b81811015610aa357836001600160a01b031660018281548110610a6b57610a6b612538565b60009182526020909120600290910201546001600160a01b031603610a91579392505050565b80610a9b816125a6565b915050610a46565b506000199392505050565b60058054610abb90612654565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790612654565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081565b60006001600160a01b038216610b865760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161057b565b60015460005b81811015610bec57836001600160a01b031660018281548110610bb157610bb1612538565b60009182526020909120600290910201546001600160a01b031603610bda575060019392505050565b80610be4816125a6565b915050610b8c565b5050919050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff1690811115610c3757610c3761218e565b14610c545760405162461bcd60e51b815260040161057b906125f4565b610c5d82610b3c565b15610cb65760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161057b565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e9290602001610930565b60018181548110610d4657600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610d8f5760405162461bcd60e51b815260040161057b906125bf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610aa357836001600160a01b031660028281548110610e0657610e06612538565b60009182526020909120600290910201546001600160a01b031603610e2c579392505050565b80610e36816125a6565b915050610de1565b600154600090815b81811015610e9a5760018181548110610e6157610e61612538565b6000918252602090912060029091020154610e86906001600160a01b0316318461279c565b925080610e92816125a6565b915050610e46565b505090565b6000806000610ead84610dd9565b90506000198103610efb5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161057b565b600060028281548110610f1057610f10612538565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b038216610f9c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161057b565b60025460005b81811015610bec57836001600160a01b031660028281548110610fc757610fc7612538565b60009182526020909120600290910201546001600160a01b031603610ff0575060019392505050565b80610ffa816125a6565b915050610fa2565b61100e60016000611fcd565b61101a60026000611fee565b6040805160018082528183019092526000916020808301908036833701905050905060005b888110156110ef57600160405180604001604052808c8c8581811061106657611066612538565b905060200201602081019061107b91906121e9565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b03191691909216178155828201518051939491936110d99392850192919091019061200f565b50505080806110e7906125a6565b91505061103f565b5060005b868110156111ae57600260405180604001604052808a8a8581811061111a5761111a612538565b905060200201602081019061112f91906121e9565b6001600160a01b0316815260200188888581811061114f5761114f612538565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806111a6816125a6565b9150506110f3565b5060048390556003805483919060ff1916600183838111156111d2576111d261218e565b0217905550505050505050505050565b6000606060006111f184610a3e565b905060001981036112145760405162461bcd60e51b815260040161057b906127af565b60006001828154811061122957611229612538565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112a957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161128b575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146112f35760405162461bcd60e51b815260040161057b906125bf565b6003805460ff168181111561130a5761130a61218e565b0361136a5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161057b565b60045443106113c75760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b606482015260840161057b565b6113d360016000611fcd565b6113df60026000611fee565b6113eb60056000612074565b6003805460ff19169055565b6001806003805460ff16908111156114115761141161218e565b1461142e5760405162461bcd60e51b815260040161057b906125f4565b61143782610b3c565b6114995760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b606482015260840161057b565b813b15158061151057336001600160a01b038416146115065760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b606482015260840161057b565b61094a8333611cfe565b60008061151c85611c1a565b9150915081516000036115715760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161057b565b61157b3383611c93565b6115c75760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161057b565b6115d18533611cfe565b5050505050565b6000546001600160a01b031633146116025760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff169081111561161c5761161c61218e565b146116395760405162461bcd60e51b815260040161057b906125f4565b600061164483610a3e565b905060001981036116675760405162461bcd60e51b815260040161057b906127af565b6001805461167690829061262b565b8154811061168657611686612538565b9060005260206000209060020201600182815481106116a7576116a7612538565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546116ea92840191906120ae565b5090505060018054806116ff576116ff61263e565b60008281526020812060026000199093019283020180546001600160a01b03191681559061173060018301826120ee565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c90602001610930565b600254600090815b81811015610e9a576002818154811061179057611790612538565b906000526020600020906002020160010154836117ad919061279c565b9250806117b9816125a6565b915050611775565b6000546001600160a01b031633146117eb5760405162461bcd60e51b815260040161057b906125bf565b6002806003805460ff16908111156118055761180561218e565b146118225760405162461bcd60e51b815260040161057b906125f4565b600561182e83826127de565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca64049161186d916005919061289e565b60405180910390a160045443116106695760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161057b565b6000546001600160a01b0316331461190f5760405162461bcd60e51b815260040161057b906125bf565b6000806003805460ff16908111156119295761192961218e565b146119465760405162461bcd60e51b815260040161057b906125f4565b61194f83610f52565b156119ac5760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b606482015260840161057b565b816000036119fc5760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161057b565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b03163314611afb5760405162461bcd60e51b815260040161057b906125bf565b611b0481611f0d565b50565b6000546001600160a01b03163314611b315760405162461bcd60e51b815260040161057b906125bf565b6001806003805460ff1690811115611b4b57611b4b61218e565b14611b685760405162461bcd60e51b815260040161057b906125f4565b611b70610e3e565b611b7861176d565b10611bfe5760405162461bcd60e51b815260206004820152604a60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207a65726f656420616464726573606482015269732062616c616e63657360b01b608482015260a40161057b565b611c0661047c565b600380546002919060ff19166001836109f7565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c889190810190612933565b909590945092505050565b8051600090815b81811015611cf157838181518110611cb457611cb4612538565b60200260200101516001600160a01b0316856001600160a01b031603611cdf57600192505050611cf8565b80611ce9816125a6565b915050611c9a565b5060009150505b92915050565b6000611d0983610a3e565b90506000198103611d2c5760405162461bcd60e51b815260040161057b906127af565b600060018281548110611d4157611d41612538565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611da657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d88575b505083519394506000925050505b81811015611e3b57846001600160a01b0316838281518110611dd857611dd8612538565b60200260200101516001600160a01b031603611e295760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161057b565b80611e33816125a6565b915050611db4565b5060018381548110611e4f57611e4f612538565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611ec657611ec6612538565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611f725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5080546000825560020290600052602060002090810190611b04919061210c565b5080546000825560020290600052602060002090810190611b04919061213a565b828054828255906000526020600020908101928215612064579160200282015b8281111561206457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061202f565b50612070929150612160565b5090565b50805461208090612654565b6000825580601f10612090575050565b601f016020900490600052602060002090810190611b049190612160565b8280548282559060005260206000209081019282156120645760005260206000209182015b828111156120645782548255916001019190600101906120d3565b5080546000825590600052602060002090810190611b049190612160565b808211156120705780546001600160a01b0319168155600061213160018301826120ee565b5060020161210c565b5b808211156120705780546001600160a01b03191681556000600182015560020161213b565b5b808211156120705760008155600101612161565b60006020828403121561218757600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600481106121c257634e487b7160e01b600052602160045260246000fd5b9052565b60208101611cf882846121a4565b6001600160a01b0381168114611b0457600080fd5b6000602082840312156121fb57600080fd5b8135612206816121d4565b9392505050565b6000806020838503121561222057600080fd5b823567ffffffffffffffff8082111561223857600080fd5b818501915085601f83011261224c57600080fd5b81358181111561225b57600080fd5b86602082850101111561226d57600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b818110156122ac57858101830151858201604001528201612290565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f8401126122df57600080fd5b50813567ffffffffffffffff8111156122f757600080fd5b6020830191508360208260051b850101111561231257600080fd5b9250929050565b60008060008060008060008060a0898b03121561233557600080fd5b883567ffffffffffffffff8082111561234d57600080fd5b6123598c838d016122cd565b909a50985060208b013591508082111561237257600080fd5b61237e8c838d016122cd565b909850965060408b013591508082111561239757600080fd5b506123a48b828c016122cd565b909550935050606089013591506080890135600481106123c357600080fd5b809150509295985092959890939650565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612422578551851683529483019491830191600101612404565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561246f5761246f612430565b604052919050565b6000602080838503121561248a57600080fd5b823567ffffffffffffffff808211156124a257600080fd5b818501915085601f8301126124b657600080fd5b8135818111156124c8576124c8612430565b6124da601f8201601f19168501612446565b915080825286848285010111156124f057600080fd5b8084840185840137600090820190930192909252509392505050565b6000806040838503121561251f57600080fd5b823561252a816121d4565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016125b8576125b8612590565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611cf857611cf8612590565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061266857607f821691505b60208210810361268857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561094a57600081815260208120601f850160051c810160208610156126b55750805b601f850160051c820191505b818110156126d4578281556001016126c1565b505050505050565b67ffffffffffffffff8311156126f4576126f4612430565b612708836127028354612654565b8361268e565b6000601f84116001811461273c57600085156127245750838201355b600019600387901b1c1916600186901b1783556115d1565b600083815260209020601f19861690835b8281101561276d578685013582556020948501946001909201910161274d565b508682101561278a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115611cf857611cf8612590565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b815167ffffffffffffffff8111156127f8576127f8612430565b61280c816128068454612654565b8461268e565b602080601f83116001811461284157600084156128295750858301515b600019600386901b1c1916600185901b1785556126d4565b600085815260208120601f198616915b8281101561287057888601518255948401946001909101908401612851565b508582101561288e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546128b081612654565b80604086015260606001808416600081146128d257600181146128ec5761291d565b60ff1985168884015283151560051b88018301955061291d565b8960005260208060002060005b868110156129145781548b82018701529084019082016128f9565b8a018501975050505b50505050508091505061220660208301846121a4565b6000806040838503121561294657600080fd5b825167ffffffffffffffff8082111561295e57600080fd5b818501915085601f83011261297257600080fd5b815160208282111561298657612986612430565b8160051b9250612997818401612446565b82815292840181019281810190898511156129b157600080fd5b948201945b848610156129db57855193506129cb846121d4565b83825294820194908201906129b6565b9790910151969896975050505050505056fea26469706673582212205a3cbe10d4f9ff4b1cf2308226c169642626039f081e129298372a454dc8300b64736f6c63430008130033` +const TreasuryRebalanceMockV2BinRuntime = `608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d826f88f116100ad578063e2384cb31161007c578063e2384cb314610458578063ecd867781461046c578063ed3555291461047f578063f2fde38b14610487578063faaf9ca61461049a57600080fd5b8063d826f88f14610422578063daea85c51461042a578063db27b50b1461043d578063e20fcf001461045057600080fd5b80639dc954ba116100f45780639dc954ba146103c05780639e59eb14146103c8578063bd786f57146103db578063cc701029146103ee578063cea1c3381461040157600080fd5b80638da5cb5b146103815780638f32d59b1461039257806390d33456146103a55780639ab29b70146103b857600080fd5b806348409096116101a85780635f8798c0116101775780635f8798c0146103055780635f9b0df71461032857806362aa3e911461033b578063715018a6146103665780637bfaf7b71461036e57600080fd5b806348409096146102cb57806349a3fb45146102d3578063518592da146102ea57806358c3b870146102fd57600080fd5b8063281a1be9116101e4578063281a1be91461026957806328c5cf0a1461027c578063343e2c85146102845780633a7a47e2146102b657600080fd5b80630287d126146102165780631804692f14610220578063200d2ed21461023357806327704cb514610256575b600080fd5b61021e6104a2565b005b61021e61022e3660046121ec565b610693565b6003546102409060ff1681565b60405161024d919061223d565b60405180910390f35b61021e610264366004612260565b6107ae565b61021e610277366004612284565b610963565b61021e610975565b6102976102923660046121ec565b610b11565b604080516001600160a01b03909316835260208301919091520161024d565b6102be610b49565b60405161024d91906122f6565b61021e610bd7565b6102dc60045481565b60405190815260200161024d565b6102dc6102f8366004612260565b610c83565b6102be610cf3565b610318610313366004612260565b610d00565b604051901515815260200161024d565b61021e610336366004612260565b610db7565b61034e6103493660046121ec565b610efa565b6040516001600160a01b03909116815260200161024d565b61021e610f29565b6102dc61037c366004612260565b610f9d565b6000546001600160a01b031661034e565b6000546001600160a01b03163314610318565b61021e6103b336600461238b565b611002565b6102dc61106f565b6001546102dc565b6102976103d6366004612260565b6110d0565b6103186103e9366004612260565b611183565b61021e6103fc36600461246c565b611233565b61041461040f366004612260565b611413565b60405161024d929190612527565b61021e6114fa565b61021e610438366004612260565b611628565b61021e61044b366004612260565b611809565b6102dc61199e565b610318610466366004612260565b3b151590565b61021e61047a366004612583565b6119f2565b6002546102dc565b61021e610495366004612260565b611bde565b61021e611c14565b60015460005b8181101561068f576000600182815481106104c5576104c56125af565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561054557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610527575b5050505050815250509050600061056082600001513b151590565b90508015610630576000806105788460000151611c91565b915091508084602001515110156105aa5760405162461bcd60e51b81526004016105a1906125c5565b60405180910390fd5b602084015180516000805b82811015610605576105e08482815181106105d2576105d26125af565b602002602001015187611d0a565b156105f357816105ef8161261d565b9250505b806105fd8161261d565b9150506105b5565b50838110156106265760405162461bcd60e51b81526004016105a1906125c5565b505050505061067a565b81602001515160011461067a5760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b60448201526064016105a1565b505080806106879061261d565b9150506104a8565b5050565b6000546001600160a01b031633146106bd5760405162461bcd60e51b81526004016105a190612636565b60045443106107345760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d626572000060648201526084016105a1565b8043106107a95760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b00000000000060648201526084016105a1565b600455565b6000546001600160a01b031633146107d85760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff16908111156107f2576107f2612205565b1461080f5760405162461bcd60e51b81526004016105a19061266b565b600061081a83610f9d565b905060001981036108685760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b60448201526064016105a1565b60028054610878906001906126a2565b81548110610888576108886125af565b9060005260206000209060020201600282815481106108a9576108a96125af565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108f5576108f56126b5565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6006610970828483612768565b505050565b6000546001600160a01b0316331461099f5760405162461bcd60e51b81526004016105a190612636565b6002806003805460ff16908111156109b9576109b9612205565b146109d65760405162461bcd60e51b81526004016105a19061266b565b6004544311610a465760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b60648201526084016105a1565b600060058054610a55906126cb565b905011610aba5760405162461bcd60e51b815260206004820152602d60248201527f6e6f2070656e64696e67206d656d6f2c2063616e6e6f742066696e616c697a6560448201526c20776974686f7574206d656d6f60981b60648201526084016105a1565b6006610ac7600582612822565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca640491610b0691600691906128f9565b60405180910390a150565b60028181548110610b2157600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058054610b56906126cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b82906126cb565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b505050505081565b6000546001600160a01b03163314610c015760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115610c1b57610c1b612205565b14610c385760405162461bcd60e51b81526004016105a19061266b565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610b069160ff9091169061223d565b600154600090815b81811015610ce857836001600160a01b031660018281548110610cb057610cb06125af565b60009182526020909120600290910201546001600160a01b031603610cd6579392505050565b80610ce08161261d565b915050610c8b565b506000199392505050565b60068054610b56906126cb565b60006001600160a01b038216610d4a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016105a1565b60015460005b81811015610db057836001600160a01b031660018281548110610d7557610d756125af565b60009182526020909120600290910201546001600160a01b031603610d9e575060019392505050565b80610da88161261d565b915050610d50565b5050919050565b6000546001600160a01b03163314610de15760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115610dfb57610dfb612205565b14610e185760405162461bcd60e51b81526004016105a19061266b565b610e2182610d00565b15610e7a5760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b60648201526084016105a1565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e9290602001610956565b60018181548110610f0a57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610f535760405162461bcd60e51b81526004016105a190612636565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610ce857836001600160a01b031660028281548110610fca57610fca6125af565b60009182526020909120600290910201546001600160a01b031603610ff0579392505050565b80610ffa8161261d565b915050610fa5565b6000546001600160a01b0316331461102c5760405162461bcd60e51b81526004016105a190612636565b6002806003805460ff169081111561104657611046612205565b146110635760405162461bcd60e51b81526004016105a19061266b565b6005610970838261298e565b600154600090815b818110156110cb5760018181548110611092576110926125af565b60009182526020909120600290910201546110b7906001600160a01b03163184612a40565b9250806110c38161261d565b915050611077565b505090565b60008060006110de84610f9d565b9050600019810361112c5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b60448201526064016105a1565b600060028281548110611141576111416125af565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b0382166111cd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016105a1565b60025460005b81811015610db057836001600160a01b0316600282815481106111f8576111f86125af565b60009182526020909120600290910201546001600160a01b031603611221575060019392505050565b8061122b8161261d565b9150506111d3565b61123f60016000612044565b61124b60026000612065565b6040805160018082528183019092526000916020808301908036833701905050905060005b8881101561132057600160405180604001604052808c8c85818110611297576112976125af565b90506020020160208101906112ac9190612260565b6001600160a01b0390811682526020918201869052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361130a93928501929190910190612086565b50505080806113189061261d565b915050611270565b5060005b868110156113df57600260405180604001604052808a8a8581811061134b5761134b6125af565b90506020020160208101906113609190612260565b6001600160a01b03168152602001888885818110611380576113806125af565b60209081029290920135909252835460018082018655600095865294829020845160029092020180546001600160a01b0319166001600160a01b03909216919091178155920151919092015550806113d78161261d565b915050611324565b5060048390556003805483919060ff19166001838381111561140357611403612205565b0217905550505050505050505050565b60006060600061142284610c83565b905060001981036114455760405162461bcd60e51b81526004016105a190612a53565b60006001828154811061145a5761145a6125af565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156114da57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114bc575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146115245760405162461bcd60e51b81526004016105a190612636565b6003805460ff168181111561153b5761153b612205565b0361159b5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b60648201526084016105a1565b60045443106115f85760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b60648201526084016105a1565b61160460016000612044565b61161060026000612065565b61161c600660006120eb565b6003805460ff19169055565b6001806003805460ff169081111561164257611642612205565b1461165f5760405162461bcd60e51b81526004016105a19061266b565b61166882610d00565b6116ca5760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b60648201526084016105a1565b813b15158061174157336001600160a01b038416146117375760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b60648201526084016105a1565b6109708333611d75565b60008061174d85611c91565b9150915081516000036117a25760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d70747900000000000060448201526064016105a1565b6117ac3383611d0a565b6117f85760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e000000000060448201526064016105a1565b6118028533611d75565b5050505050565b6000546001600160a01b031633146118335760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff169081111561184d5761184d612205565b1461186a5760405162461bcd60e51b81526004016105a19061266b565b600061187583610c83565b905060001981036118985760405162461bcd60e51b81526004016105a190612a53565b600180546118a79082906126a2565b815481106118b7576118b76125af565b9060005260206000209060020201600182815481106118d8576118d86125af565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b039092169190911781556001808301805461191b9284019190612125565b509050506001805480611930576119306126b5565b60008281526020812060026000199093019283020180546001600160a01b0319168155906119616001830182612165565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c90602001610956565b600254600090815b818110156110cb57600281815481106119c1576119c16125af565b906000526020600020906002020160010154836119de9190612a40565b9250806119ea8161261d565b9150506119a6565b6000546001600160a01b03163314611a1c5760405162461bcd60e51b81526004016105a190612636565b6000806003805460ff1690811115611a3657611a36612205565b14611a535760405162461bcd60e51b81526004016105a19061266b565b611a5c83611183565b15611ab95760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b60648201526084016105a1565b81600003611b095760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f20300000000000000060448201526064016105a1565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b03163314611c085760405162461bcd60e51b81526004016105a190612636565b611c1181611f84565b50565b6000546001600160a01b03163314611c3e5760405162461bcd60e51b81526004016105a190612636565b6001806003805460ff1690811115611c5857611c58612205565b14611c755760405162461bcd60e51b81526004016105a19061266b565b611c7d6104a2565b600380546002919060ff1916600183610c47565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cff9190810190612a82565b909590945092505050565b8051600090815b81811015611d6857838181518110611d2b57611d2b6125af565b60200260200101516001600160a01b0316856001600160a01b031603611d5657600192505050611d6f565b80611d608161261d565b915050611d11565b5060009150505b92915050565b6000611d8083610c83565b90506000198103611da35760405162461bcd60e51b81526004016105a190612a53565b600060018281548110611db857611db86125af565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611e1d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dff575b505083519394506000925050505b81811015611eb257846001600160a01b0316838281518110611e4f57611e4f6125af565b60200260200101516001600160a01b031603611ea05760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b60448201526064016105a1565b80611eaa8161261d565b915050611e2b565b5060018381548110611ec657611ec66125af565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611f3d57611f3d6125af565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611fe95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5080546000825560020290600052602060002090810190611c119190612183565b5080546000825560020290600052602060002090810190611c1191906121b1565b8280548282559060005260206000209081019282156120db579160200282015b828111156120db57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120a6565b506120e79291506121d7565b5090565b5080546120f7906126cb565b6000825580601f10612107575050565b601f016020900490600052602060002090810190611c1191906121d7565b8280548282559060005260206000209081019282156120db5760005260206000209182015b828111156120db57825482559160010191906001019061214a565b5080546000825590600052602060002090810190611c1191906121d7565b808211156120e75780546001600160a01b031916815560006121a86001830182612165565b50600201612183565b5b808211156120e75780546001600160a01b0319168155600060018201556002016121b2565b5b808211156120e757600081556001016121d8565b6000602082840312156121fe57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6004811061223957634e487b7160e01b600052602160045260246000fd5b9052565b60208101611d6f828461221b565b6001600160a01b0381168114611c1157600080fd5b60006020828403121561227257600080fd5b813561227d8161224b565b9392505050565b6000806020838503121561229757600080fd5b823567ffffffffffffffff808211156122af57600080fd5b818501915085601f8301126122c357600080fd5b8135818111156122d257600080fd5b8660208285010111156122e457600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b8181101561232357858101830151858201604001528201612307565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561238357612383612344565b604052919050565b6000602080838503121561239e57600080fd5b823567ffffffffffffffff808211156123b657600080fd5b818501915085601f8301126123ca57600080fd5b8135818111156123dc576123dc612344565b6123ee601f8201601f1916850161235a565b9150808252868482850101111561240457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261243257600080fd5b50813567ffffffffffffffff81111561244a57600080fd5b6020830191508360208260051b850101111561246557600080fd5b9250929050565b60008060008060008060008060a0898b03121561248857600080fd5b883567ffffffffffffffff808211156124a057600080fd5b6124ac8c838d01612420565b909a50985060208b01359150808211156124c557600080fd5b6124d18c838d01612420565b909850965060408b01359150808211156124ea57600080fd5b506124f78b828c01612420565b9095509350506060890135915060808901356004811061251657600080fd5b809150509295985092959890939650565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015612575578551851683529483019491830191600101612557565b509098975050505050505050565b6000806040838503121561259657600080fd5b82356125a18161224b565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161262f5761262f612607565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611d6f57611d6f612607565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806126df57607f821691505b6020821081036126ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561097057600081815260208120601f850160051c8101602086101561272c5750805b601f850160051c820191505b8181101561274b57828155600101612738565b505050505050565b600019600383901b1c191660019190911b1790565b67ffffffffffffffff83111561278057612780612344565b6127948361278e83546126cb565b83612705565b6000601f8411600181146127c257600085156127b05750838201355b6127ba8682612753565b845550611802565b600083815260209020601f19861690835b828110156127f357868501358255602094850194600190920191016127d3565b50868210156128105760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810361282d575050565b61283782546126cb565b67ffffffffffffffff81111561284f5761284f612344565b6128638161285d84546126cb565b84612705565b6000601f821160018114612891576000831561287f5750848201545b6128898482612753565b855550611802565b600085815260209020601f19841690600086815260209020845b838110156128cb57828601548255600195860195909101906020016128ab565b50858310156128e95781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600080845461290b816126cb565b806040860152606060018084166000811461292d576001811461294757612978565b60ff1985168884015283151560051b880183019550612978565b8960005260208060002060005b8681101561296f5781548b8201870152908401908201612954565b8a018501975050505b50505050508091505061227d602083018461221b565b815167ffffffffffffffff8111156129a8576129a8612344565b6129b68161285d84546126cb565b602080601f8311600181146129e557600084156129d35750858301515b6129dd8582612753565b86555061274b565b600085815260208120601f198616915b82811015612a14578886015182559484019460019091019084016129f5565b50858210156128e957939096015160001960f8600387901b161c19169092555050600190811b01905550565b80820180821115611d6f57611d6f612607565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b60008060408385031215612a9557600080fd5b825167ffffffffffffffff80821115612aad57600080fd5b818501915085601f830112612ac157600080fd5b8151602082821115612ad557612ad5612344565b8160051b9250612ae681840161235a565b8281529284018101928181019089851115612b0057600080fd5b948201945b84861015612b2a5785519350612b1a8461224b565b8382529482019490820190612b05565b9790910151969896975050505050505056fea2646970667358221220eb2e5fbc0cc4fde39394c4f4078da6e1b5c05f9d7ce6cae3fa33821ea7c6c80064736f6c63430008130033` -// TreasuryRebalanceMockV2FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceMockV2MetaData.Sigs instead. +// TreasuryRebalanceMockV2FuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceMockV2FuncSigs = TreasuryRebalanceMockV2MetaData.Sigs // TreasuryRebalanceMockV2Bin is the compiled bytecode used for deploying new contracts. @@ -16334,6 +16696,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorRaw) Transact(o func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) AllocatedExists(opts *bind.CallOpts, _allocatedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "allocatedExists", _allocatedAddress) + if err != nil { return *new(bool), err } @@ -16341,6 +16704,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) AllocatedExists(o out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // AllocatedExists is a free data retrieval call binding the contract method 0xbd786f57. @@ -16363,8 +16727,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) AllocatedE func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Allocateds(opts *bind.CallOpts, arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "allocateds", arg0) @@ -16372,10 +16735,15 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Allocateds(opts * Addr common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Allocateds is a free data retrieval call binding the contract method 0x343e2c85. @@ -16384,8 +16752,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Allocateds(opts * func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceMockV2.Contract.Allocateds(&_TreasuryRebalanceMockV2.CallOpts, arg0) } @@ -16395,8 +16762,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) Allocateds(arg0 func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceMockV2.Contract.Allocateds(&_TreasuryRebalanceMockV2.CallOpts, arg0) } @@ -16406,11 +16772,13 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) Allocateds func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) CheckZeroedsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "checkZeroedsApproved") + if err != nil { return err } return err + } // CheckZeroedsApproved is a free data retrieval call binding the contract method 0x0287d126. @@ -16433,6 +16801,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) CheckZeroe func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocated(opts *bind.CallOpts, _allocatedAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getAllocated", _allocatedAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -16441,6 +16810,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocated(opts out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetAllocated is a free data retrieval call binding the contract method 0x9e59eb14. @@ -16463,6 +16833,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetAllocat func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocatedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getAllocatedCount") + if err != nil { return *new(*big.Int), err } @@ -16470,6 +16841,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocatedCount out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedCount is a free data retrieval call binding the contract method 0xed355529. @@ -16492,6 +16864,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetAllocat func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocatedIndex(opts *bind.CallOpts, _allocatedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getAllocatedIndex", _allocatedAddress) + if err != nil { return *new(*big.Int), err } @@ -16499,6 +16872,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetAllocatedIndex out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedIndex is a free data retrieval call binding the contract method 0x7bfaf7b7. @@ -16521,6 +16895,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetAllocat func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -16528,6 +16903,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetTreasuryAmount out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -16550,6 +16926,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetTreasur func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroed(opts *bind.CallOpts, _zeroedAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getZeroed", _zeroedAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -16558,6 +16935,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroed(opts *b out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetZeroed is a free data retrieval call binding the contract method 0xcea1c338. @@ -16580,6 +16958,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetZeroed( func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getZeroedCount") + if err != nil { return *new(*big.Int), err } @@ -16587,6 +16966,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroedCount(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedCount is a free data retrieval call binding the contract method 0x9dc954ba. @@ -16609,6 +16989,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetZeroedC func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroedIndex(opts *bind.CallOpts, _zeroedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "getZeroedIndex", _zeroedAddress) + if err != nil { return *new(*big.Int), err } @@ -16616,6 +16997,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) GetZeroedIndex(op out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedIndex is a free data retrieval call binding the contract method 0x518592da. @@ -16638,6 +17020,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) GetZeroedI func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -16645,6 +17028,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) IsContractAddr(op out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -16667,6 +17051,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) IsContract func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -16674,6 +17059,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) IsOwner(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -16696,6 +17082,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) IsOwner() func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -16703,6 +17090,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Memo(opts *bind.C out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -16725,6 +17113,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) Memo() (st func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -16732,6 +17121,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Owner(opts *bind. out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -16748,12 +17138,44 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) Owner() (c return _TreasuryRebalanceMockV2.Contract.Owner(&_TreasuryRebalanceMockV2.CallOpts) } +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) PendingMemo(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "pendingMemo") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) PendingMemo() (string, error) { + return _TreasuryRebalanceMockV2.Contract.PendingMemo(&_TreasuryRebalanceMockV2.CallOpts) +} + +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) PendingMemo() (string, error) { + return _TreasuryRebalanceMockV2.Contract.PendingMemo(&_TreasuryRebalanceMockV2.CallOpts) +} + // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. // // Solidity: function rebalanceBlockNumber() view returns(uint256) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -16761,6 +17183,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) RebalanceBlockNum out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -16783,6 +17206,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) RebalanceB func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -16790,6 +17214,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Status(opts *bind out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -16812,6 +17237,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) Status() ( func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) SumOfZeroedBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "sumOfZeroedBalance") + if err != nil { return *new(*big.Int), err } @@ -16819,6 +17245,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) SumOfZeroedBalanc out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfZeroedBalance is a free data retrieval call binding the contract method 0x9ab29b70. @@ -16841,6 +17268,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) SumOfZeroe func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) ZeroedExists(opts *bind.CallOpts, _zeroedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "zeroedExists", _zeroedAddress) + if err != nil { return *new(bool), err } @@ -16848,6 +17276,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) ZeroedExists(opts out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ZeroedExists is a free data retrieval call binding the contract method 0x5f8798c0. @@ -16870,6 +17299,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2CallerSession) ZeroedExis func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Zeroeds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceMockV2.contract.Call(opts, &out, "zeroeds", arg0) + if err != nil { return *new(common.Address), err } @@ -16877,6 +17307,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Caller) Zeroeds(opts *bin out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Zeroeds is a free data retrieval call binding the contract method 0x62aa3e91. @@ -16935,25 +17366,25 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorSession) Finali return _TreasuryRebalanceMockV2.Contract.FinalizeApproval(&_TreasuryRebalanceMockV2.TransactOpts) } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Transactor) FinalizeContract(opts *bind.TransactOpts, _memo string) (*types.Transaction, error) { - return _TreasuryRebalanceMockV2.contract.Transact(opts, "finalizeContract", _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Transactor) FinalizeContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.contract.Transact(opts, "finalizeContract") } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) FinalizeContract(_memo string) (*types.Transaction, error) { - return _TreasuryRebalanceMockV2.Contract.FinalizeContract(&_TreasuryRebalanceMockV2.TransactOpts, _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) FinalizeContract() (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.Contract.FinalizeContract(&_TreasuryRebalanceMockV2.TransactOpts) } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorSession) FinalizeContract(_memo string) (*types.Transaction, error) { - return _TreasuryRebalanceMockV2.Contract.FinalizeContract(&_TreasuryRebalanceMockV2.TransactOpts, _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorSession) FinalizeContract() (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.Contract.FinalizeContract(&_TreasuryRebalanceMockV2.TransactOpts) } // FinalizeRegistration is a paid mutator transaction binding the contract method 0x48409096. @@ -17103,6 +17534,27 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorSession) Reset( return _TreasuryRebalanceMockV2.Contract.Reset(&_TreasuryRebalanceMockV2.TransactOpts) } +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Transactor) SetPendingMemo(opts *bind.TransactOpts, _memo string) (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.contract.Transact(opts, "setPendingMemo", _memo) +} + +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Session) SetPendingMemo(_memo string) (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.Contract.SetPendingMemo(&_TreasuryRebalanceMockV2.TransactOpts, _memo) +} + +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2TransactorSession) SetPendingMemo(_memo string) (*types.Transaction, error) { + return _TreasuryRebalanceMockV2.Contract.SetPendingMemo(&_TreasuryRebalanceMockV2.TransactOpts, _memo) +} + // TestFinalize is a paid mutator transaction binding the contract method 0x281a1be9. // // Solidity: function testFinalize(string _memo) returns() @@ -17265,6 +17717,7 @@ type TreasuryRebalanceMockV2AllocatedRegistered struct { // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterAllocatedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2AllocatedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -17276,6 +17729,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterAllocated // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchAllocatedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2AllocatedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -17316,6 +17770,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseAllocatedR if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "AllocatedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17396,6 +17851,7 @@ type TreasuryRebalanceMockV2AllocatedRemoved struct { // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterAllocatedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2AllocatedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -17407,6 +17863,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterAllocated // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchAllocatedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2AllocatedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -17447,6 +17904,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseAllocatedR if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "AllocatedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17529,6 +17987,7 @@ type TreasuryRebalanceMockV2Approved struct { // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2ApprovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -17540,6 +17999,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterApproved( // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2Approved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -17580,6 +18040,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseApproved(l if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17662,6 +18123,7 @@ type TreasuryRebalanceMockV2ContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2ContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -17673,6 +18135,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterContractD // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2ContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -17713,6 +18176,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseContractDe if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17794,6 +18258,7 @@ type TreasuryRebalanceMockV2Finalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2FinalizedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -17805,6 +18270,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterFinalized // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2Finalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -17845,6 +18311,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseFinalized( if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -17926,6 +18393,7 @@ type TreasuryRebalanceMockV2OwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceMockV2OwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -17946,6 +18414,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterOwnership // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -17995,6 +18464,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseOwnershipT if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18075,6 +18545,7 @@ type TreasuryRebalanceMockV2StatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2StatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -18086,6 +18557,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterStatusCha // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2StatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -18126,6 +18598,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseStatusChan if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18206,6 +18679,7 @@ type TreasuryRebalanceMockV2ZeroedRegistered struct { // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterZeroedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2ZeroedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -18217,6 +18691,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterZeroedReg // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchZeroedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2ZeroedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -18257,6 +18732,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseZeroedRegi if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "ZeroedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -18337,6 +18813,7 @@ type TreasuryRebalanceMockV2ZeroedRemoved struct { // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterZeroedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceMockV2ZeroedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.FilterLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -18348,6 +18825,7 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) FilterZeroedRem // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) WatchZeroedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceMockV2ZeroedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceMockV2.contract.WatchLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -18388,19 +18866,20 @@ func (_TreasuryRebalanceMockV2 *TreasuryRebalanceMockV2Filterer) ParseZeroedRemo if err := _TreasuryRebalanceMockV2.contract.UnpackLog(event, "ZeroedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } // TreasuryRebalanceV2MetaData contains all meta data concerning the TreasuryRebalanceV2 contract. var TreasuryRebalanceV2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fundAllocation\",\"type\":\"uint256\"}],\"name\":\"AllocatedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"}],\"name\":\"AllocatedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"approversCount\",\"type\":\"uint256\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rebalanceBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deployedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Finalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"allocatedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allocateds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkZeroedsApproved\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"finalizeContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocated\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllocatedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocatedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasuryAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isContractAddr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalanceBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"registerAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"registerZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"removeAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"removeZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sumOfZeroedBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"zeroedsBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"name\":\"updateRebalanceBlocknumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"zeroedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeroeds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fundAllocation\",\"type\":\"uint256\"}],\"name\":\"AllocatedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"allocated\",\"type\":\"address\"}],\"name\":\"AllocatedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"approversCount\",\"type\":\"uint256\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rebalanceBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deployedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"ContractDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Finalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zeroed\",\"type\":\"address\"}],\"name\":\"ZeroedRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"allocatedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allocateds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkZeroedsApproved\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizeRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocated\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllocatedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"getAllocatedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasuryAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getZeroedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"getZeroedIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isContractAddr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingMemo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalanceBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"registerAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"registerZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_allocatedAddress\",\"type\":\"address\"}],\"name\":\"removeAllocated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"removeZeroed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"setPendingMemo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumTreasuryRebalanceV2.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sumOfZeroedBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"zeroedsBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rebalanceBlockNumber\",\"type\":\"uint256\"}],\"name\":\"updateRebalanceBlocknumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zeroedAddress\",\"type\":\"address\"}],\"name\":\"zeroedExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeroeds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", Sigs: map[string]string{ "bd786f57": "allocatedExists(address)", "343e2c85": "allocateds(uint256)", "daea85c5": "approve(address)", "0287d126": "checkZeroedsApproved()", "faaf9ca6": "finalizeApproval()", - "ea6d4a9b": "finalizeContract(string)", + "28c5cf0a": "finalizeContract()", "48409096": "finalizeRegistration()", "9e59eb14": "getAllocated(address)", "ed355529": "getAllocatedCount()", @@ -18413,6 +18892,7 @@ var TreasuryRebalanceV2MetaData = &bind.MetaData{ "8f32d59b": "isOwner()", "58c3b870": "memo()", "8da5cb5b": "owner()", + "3a7a47e2": "pendingMemo()", "49a3fb45": "rebalanceBlockNumber()", "ecd86778": "registerAllocated(address,uint256)", "5f9b0df7": "registerZeroed(address)", @@ -18420,6 +18900,7 @@ var TreasuryRebalanceV2MetaData = &bind.MetaData{ "db27b50b": "removeZeroed(address)", "715018a6": "renounceOwnership()", "d826f88f": "reset()", + "90d33456": "setPendingMemo(string)", "200d2ed2": "status()", "9ab29b70": "sumOfZeroedBalance()", "f2fde38b": "transferOwnership(address)", @@ -18427,7 +18908,7 @@ var TreasuryRebalanceV2MetaData = &bind.MetaData{ "5f8798c0": "zeroedExists(address)", "62aa3e91": "zeroeds(uint256)", }, - Bin: "0x60806040523480156200001157600080fd5b506040516200270f3803806200270f833981016040819052620000349162000142565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3438111620000ed5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840160405180910390fd5b60048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a906200013390600090849042906200015c565b60405180910390a15062000193565b6000602082840312156200015557600080fd5b5051919050565b60608101600485106200017f57634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b61256c80620001a36000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638f32d59b1161010f578063db27b50b116100a2578063ecd8677811610071578063ecd867781461040a578063ed3555291461041d578063f2fde38b14610425578063faaf9ca61461043857600080fd5b8063db27b50b146103c8578063e20fcf00146103db578063e2384cb3146103e3578063ea6d4a9b146103f757600080fd5b8063bd786f57116100de578063bd786f5714610379578063cea1c3381461038c578063d826f88f146103ad578063daea85c5146103b557600080fd5b80638f32d59b146103435780639ab29b70146103565780639dc954ba1461035e5780639e59eb141461036657600080fd5b8063518592da1161018757806362aa3e911161015657806362aa3e91146102ec578063715018a6146103175780637bfaf7b71461031f5780638da5cb5b1461033257600080fd5b8063518592da1461028e57806358c3b870146102a15780635f8798c0146102b65780635f9b0df7146102d957600080fd5b806327704cb5116101c357806327704cb51461022a578063343e2c851461023d578063484090961461026f57806349a3fb451461027757600080fd5b80630287d126146101ea5780631804692f146101f4578063200d2ed214610207575b600080fd5b6101f2610440565b005b6101f2610202366004611ef7565b610631565b6003546102149060ff1681565b6040516102219190611f48565b60405180910390f35b6101f2610238366004611f6b565b61074c565b61025061024b366004611ef7565b610901565b604080516001600160a01b039093168352602083019190915201610221565b6101f2610939565b61028060045481565b604051908152602001610221565b61028061029c366004611f6b565b6109f0565b6102a9610a60565b6040516102219190611f8f565b6102c96102c4366004611f6b565b610aee565b6040519015158152602001610221565b6101f26102e7366004611f6b565b610ba5565b6102ff6102fa366004611ef7565b610ce8565b6040516001600160a01b039091168152602001610221565b6101f2610d17565b61028061032d366004611f6b565b610d8b565b6000546001600160a01b03166102ff565b6000546001600160a01b031633146102c9565b610280610df0565b600154610280565b610250610374366004611f6b565b610e51565b6102c9610387366004611f6b565b610f04565b61039f61039a366004611f6b565b610fb4565b604051610221929190611fdd565b6101f261109b565b6101f26103c3366004611f6b565b6111c9565b6101f26103d6366004611f6b565b6113af565b610280611544565b6102c96103f1366004611f6b565b3b151590565b6101f2610405366004612080565b611598565b6101f2610418366004612115565b6116bc565b600254610280565b6101f2610433366004611f6b565b6118a8565b6101f26118de565b60015460005b8181101561062d5760006001828154811061046357610463612141565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104c5575b505050505081525050905060006104fe82600001513b151590565b905080156105ce5760008061051684600001516119f1565b915091508084602001515110156105485760405162461bcd60e51b815260040161053f90612157565b60405180910390fd5b602084015180516000805b828110156105a35761057e84828151811061057057610570612141565b602002602001015187611a6a565b15610591578161058d816121af565b9250505b8061059b816121af565b915050610553565b50838110156105c45760405162461bcd60e51b815260040161053f90612157565b5050505050610618565b8160200151516001146106185760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161053f565b50508080610625906121af565b915050610446565b5050565b6000546001600160a01b0316331461065b5760405162461bcd60e51b815260040161053f906121c8565b60045443106106d25760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d6265720000606482015260840161053f565b8043106107475760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840161053f565b600455565b6000546001600160a01b031633146107765760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561079057610790611f10565b146107ad5760405162461bcd60e51b815260040161053f906121fd565b60006107b883610d8b565b905060001981036108065760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161053f565b6002805461081690600190612234565b8154811061082657610826612141565b90600052602060002090600202016002828154811061084757610847612141565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061089357610893612247565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6002818154811061091157600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b6000546001600160a01b031633146109635760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561097d5761097d611f10565b1461099a5760405162461bcd60e51b815260040161053f906121fd565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e916109e59160ff90911690611f48565b60405180910390a150565b600154600090815b81811015610a5557836001600160a01b031660018281548110610a1d57610a1d612141565b60009182526020909120600290910201546001600160a01b031603610a43579392505050565b80610a4d816121af565b9150506109f8565b506000199392505050565b60058054610a6d9061225d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a999061225d565b8015610ae65780601f10610abb57610100808354040283529160200191610ae6565b820191906000526020600020905b815481529060010190602001808311610ac957829003601f168201915b505050505081565b60006001600160a01b038216610b385760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161053f565b60015460005b81811015610b9e57836001600160a01b031660018281548110610b6357610b63612141565b60009182526020909120600290910201546001600160a01b031603610b8c575060019392505050565b80610b96816121af565b915050610b3e565b5050919050565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff1690811115610be957610be9611f10565b14610c065760405162461bcd60e51b815260040161053f906121fd565b610c0f82610aee565b15610c685760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161053f565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e92906020016108f4565b60018181548110610cf857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161053f906121c8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610a5557836001600160a01b031660028281548110610db857610db8612141565b60009182526020909120600290910201546001600160a01b031603610dde579392505050565b80610de8816121af565b915050610d93565b600154600090815b81811015610e4c5760018181548110610e1357610e13612141565b6000918252602090912060029091020154610e38906001600160a01b03163184612297565b925080610e44816121af565b915050610df8565b505090565b6000806000610e5f84610d8b565b90506000198103610ead5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161053f565b600060028281548110610ec257610ec2612141565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b038216610f4e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161053f565b60025460005b81811015610b9e57836001600160a01b031660028281548110610f7957610f79612141565b60009182526020909120600290910201546001600160a01b031603610fa2575060019392505050565b80610fac816121af565b915050610f54565b600060606000610fc3846109f0565b90506000198103610fe65760405162461bcd60e51b815260040161053f906122aa565b600060018281548110610ffb57610ffb612141565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561107b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161105d575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146110c55760405162461bcd60e51b815260040161053f906121c8565b6003805460ff16818111156110dc576110dc611f10565b0361113c5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161053f565b60045443106111995760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b606482015260840161053f565b6111a560016000611da4565b6111b160026000611dc5565b6111bd60056000611de6565b6003805460ff19169055565b6001806003805460ff16908111156111e3576111e3611f10565b146112005760405162461bcd60e51b815260040161053f906121fd565b61120982610aee565b61126b5760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b606482015260840161053f565b813b1515806112e757336001600160a01b038416146112d85760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b606482015260840161053f565b6112e28333611ad5565b505050565b6000806112f3856119f1565b9150915081516000036113485760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161053f565b6113523383611a6a565b61139e5760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161053f565b6113a88533611ad5565b5050505050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff16908111156113f3576113f3611f10565b146114105760405162461bcd60e51b815260040161053f906121fd565b600061141b836109f0565b9050600019810361143e5760405162461bcd60e51b815260040161053f906122aa565b6001805461144d908290612234565b8154811061145d5761145d612141565b90600052602060002090600202016001828154811061147e5761147e612141565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546114c19284019190611e20565b5090505060018054806114d6576114d6612247565b60008281526020812060026000199093019283020180546001600160a01b0319168155906115076001830182611e70565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c906020016108f4565b600254600090815b81811015610e4c576002818154811061156757611567612141565b906000526020600020906002020160010154836115849190612297565b925080611590816121af565b91505061154c565b6000546001600160a01b031633146115c25760405162461bcd60e51b815260040161053f906121c8565b6002806003805460ff16908111156115dc576115dc611f10565b146115f95760405162461bcd60e51b815260040161053f906121fd565b60056116058382612327565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca64049161164491600591906123e7565b60405180910390a1600454431161062d5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161053f565b6000546001600160a01b031633146116e65760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561170057611700611f10565b1461171d5760405162461bcd60e51b815260040161053f906121fd565b61172683610f04565b156117835760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b606482015260840161053f565b816000036117d35760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161053f565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b031633146118d25760405162461bcd60e51b815260040161053f906121c8565b6118db81611ce4565b50565b6000546001600160a01b031633146119085760405162461bcd60e51b815260040161053f906121c8565b6001806003805460ff169081111561192257611922611f10565b1461193f5760405162461bcd60e51b815260040161053f906121fd565b611947610df0565b61194f611544565b106119d55760405162461bcd60e51b815260206004820152604a60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207a65726f656420616464726573606482015269732062616c616e63657360b01b608482015260a40161053f565b6119dd610440565b600380546002919060ff19166001836109a9565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a5f919081019061247c565b909590945092505050565b8051600090815b81811015611ac857838181518110611a8b57611a8b612141565b60200260200101516001600160a01b0316856001600160a01b031603611ab657600192505050611acf565b80611ac0816121af565b915050611a71565b5060009150505b92915050565b6000611ae0836109f0565b90506000198103611b035760405162461bcd60e51b815260040161053f906122aa565b600060018281548110611b1857611b18612141565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b7d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b5f575b505083519394506000925050505b81811015611c1257846001600160a01b0316838281518110611baf57611baf612141565b60200260200101516001600160a01b031603611c005760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161053f565b80611c0a816121af565b915050611b8b565b5060018381548110611c2657611c26612141565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611c9d57611c9d612141565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611d495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b50805460008255600202906000526020600020908101906118db9190611e8e565b50805460008255600202906000526020600020908101906118db9190611ebc565b508054611df29061225d565b6000825580601f10611e02575050565b601f0160209004906000526020600020908101906118db9190611ee2565b828054828255906000526020600020908101928215611e605760005260206000209182015b82811115611e60578254825591600101919060010190611e45565b50611e6c929150611ee2565b5090565b50805460008255906000526020600020908101906118db9190611ee2565b80821115611e6c5780546001600160a01b03191681556000611eb36001830182611e70565b50600201611e8e565b5b80821115611e6c5780546001600160a01b031916815560006001820155600201611ebd565b5b80821115611e6c5760008155600101611ee3565b600060208284031215611f0957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110611f4457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611acf8284611f26565b6001600160a01b03811681146118db57600080fd5b600060208284031215611f7d57600080fd5b8135611f8881611f56565b9392505050565b600060208083528351808285015260005b81811015611fbc57858101830151858201604001528201611fa0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561202b57855185168352948301949183019160010161200d565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561207857612078612039565b604052919050565b6000602080838503121561209357600080fd5b823567ffffffffffffffff808211156120ab57600080fd5b818501915085601f8301126120bf57600080fd5b8135818111156120d1576120d1612039565b6120e3601f8201601f1916850161204f565b915080825286848285010111156120f957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806040838503121561212857600080fd5b823561213381611f56565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016121c1576121c1612199565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611acf57611acf612199565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061227157607f821691505b60208210810361229157634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115611acf57611acf612199565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b601f8211156112e257600081815260208120601f850160051c810160208610156123005750805b601f850160051c820191505b8181101561231f5782815560010161230c565b505050505050565b815167ffffffffffffffff81111561234157612341612039565b6123558161234f845461225d565b846122d9565b602080601f83116001811461238a57600084156123725750858301515b600019600386901b1c1916600185901b17855561231f565b600085815260208120601f198616915b828110156123b95788860151825594840194600190910190840161239a565b50858210156123d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123f98161225d565b806040860152606060018084166000811461241b576001811461243557612466565b60ff1985168884015283151560051b880183019550612466565b8960005260208060002060005b8681101561245d5781548b8201870152908401908201612442565b8a018501975050505b505050505080915050611f886020830184611f26565b6000806040838503121561248f57600080fd5b825167ffffffffffffffff808211156124a757600080fd5b818501915085601f8301126124bb57600080fd5b81516020828211156124cf576124cf612039565b8160051b92506124e081840161204f565b82815292840181019281810190898511156124fa57600080fd5b948201945b84861015612524578551935061251484611f56565b83825294820194908201906124ff565b9790910151969896975050505050505056fea26469706673582212205bee2d843c6658c4cabbee7c2b1238e5086d7eb4239a72bd26736fb14158615064736f6c63430008130033", + Bin: "0x60806040523480156200001157600080fd5b506040516200285b3803806200285b833981016040819052620000349162000142565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3438111620000ed5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840160405180910390fd5b60048190556003805460ff191690556040517f6f182006c5a12fe70c0728eedb2d1b0628c41483ca6721c606707d778d22ed0a906200013390600090849042906200015c565b60405180910390a15062000193565b6000602082840312156200015557600080fd5b5051919050565b60608101600485106200017f57634e487b7160e01b600052602160045260246000fd5b938152602081019290925260409091015290565b6126b880620001a36000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063d826f88f116100ad578063e2384cb31161007c578063e2384cb31461041c578063ecd8677814610430578063ed35552914610443578063f2fde38b1461044b578063faaf9ca61461045e57600080fd5b8063d826f88f146103e6578063daea85c5146103ee578063db27b50b14610401578063e20fcf001461041457600080fd5b80639dc954ba116100e95780639dc954ba146103975780639e59eb141461039f578063bd786f57146103b2578063cea1c338146103c557600080fd5b80638da5cb5b146103585780638f32d59b1461036957806390d334561461037c5780639ab29b701461038f57600080fd5b806349a3fb45116101925780635f9b0df7116101615780635f9b0df7146102ff57806362aa3e9114610312578063715018a61461033d5780637bfaf7b71461034557600080fd5b806349a3fb45146102aa578063518592da146102c157806358c3b870146102d45780635f8798c0146102dc57600080fd5b806328c5cf0a116101ce57806328c5cf0a14610253578063343e2c851461025b5780633a7a47e21461028d57806348409096146102a257600080fd5b80630287d126146102005780631804692f1461020a578063200d2ed21461021d57806327704cb514610240575b600080fd5b610208610466565b005b610208610218366004611f6e565b610657565b60035461022a9060ff1681565b6040516102379190611fbf565b60405180910390f35b61020861024e366004611fe2565b610772565b610208610927565b61026e610269366004611f6e565b610ac3565b604080516001600160a01b039093168352602083019190915201610237565b610295610afb565b6040516102379190612006565b610208610b89565b6102b360045481565b604051908152602001610237565b6102b36102cf366004611fe2565b610c35565b610295610ca5565b6102ef6102ea366004611fe2565b610cb2565b6040519015158152602001610237565b61020861030d366004611fe2565b610d69565b610325610320366004611f6e565b610eac565b6040516001600160a01b039091168152602001610237565b610208610edb565b6102b3610353366004611fe2565b610f4f565b6000546001600160a01b0316610325565b6000546001600160a01b031633146102ef565b61020861038a36600461209b565b610fb4565b6102b3611026565b6001546102b3565b61026e6103ad366004611fe2565b611087565b6102ef6103c0366004611fe2565b61113a565b6103d86103d3366004611fe2565b6111ea565b604051610237929190612130565b6102086112d1565b6102086103fc366004611fe2565b6113ff565b61020861040f366004611fe2565b6115e0565b6102b3611775565b6102ef61042a366004611fe2565b3b151590565b61020861043e36600461218c565b6117c9565b6002546102b3565b610208610459366004611fe2565b6119b5565b6102086119eb565b60015460005b8181101561065357600060018281548110610489576104896121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561050957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104eb575b5050505050815250509050600061052482600001513b151590565b905080156105f45760008061053c8460000151611a68565b9150915080846020015151101561056e5760405162461bcd60e51b8152600401610565906121ce565b60405180910390fd5b602084015180516000805b828110156105c9576105a4848281518110610596576105966121b8565b602002602001015187611ae1565b156105b757816105b381612226565b9250505b806105c181612226565b915050610579565b50838110156105ea5760405162461bcd60e51b8152600401610565906121ce565b505050505061063e565b81602001515160011461063e5760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610565565b5050808061064b90612226565b91505061046c565b5050565b6000546001600160a01b031633146106815760405162461bcd60e51b81526004016105659061223f565b60045443106106f85760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d62657200006064820152608401610565565b80431061076d5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b0000000000006064820152608401610565565b600455565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff16908111156107b6576107b6611f87565b146107d35760405162461bcd60e51b815260040161056590612274565b60006107de83610f4f565b9050600019810361082c5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6002805461083c906001906122ab565b8154811061084c5761084c6121b8565b90600052602060002090600202016002828154811061086d5761086d6121b8565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108b9576108b96122be565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6000546001600160a01b031633146109515760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff169081111561096b5761096b611f87565b146109885760405162461bcd60e51b815260040161056590612274565b60045443116109f85760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610565565b600060058054610a07906122d4565b905011610a6c5760405162461bcd60e51b815260206004820152602d60248201527f6e6f2070656e64696e67206d656d6f2c2063616e6e6f742066696e616c697a6560448201526c20776974686f7574206d656d6f60981b6064820152608401610565565b6006610a7960058261235c565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca640491610ab89160069190612439565b60405180910390a150565b60028181548110610ad357600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058054610b08906122d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b34906122d4565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b505050505081565b6000546001600160a01b03163314610bb35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610bcd57610bcd611f87565b14610bea5760405162461bcd60e51b815260040161056590612274565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610ab89160ff90911690611fbf565b600154600090815b81811015610c9a57836001600160a01b031660018281548110610c6257610c626121b8565b60009182526020909120600290910201546001600160a01b031603610c88579392505050565b80610c9281612226565b915050610c3d565b506000199392505050565b60068054610b08906122d4565b60006001600160a01b038216610cfc5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60015460005b81811015610d6257836001600160a01b031660018281548110610d2757610d276121b8565b60009182526020909120600290910201546001600160a01b031603610d50575060019392505050565b80610d5a81612226565b915050610d02565b5050919050565b6000546001600160a01b03163314610d935760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610dad57610dad611f87565b14610dca5760405162461bcd60e51b815260040161056590612274565b610dd382610cb2565b15610e2c5760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610565565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e929060200161091a565b60018181548110610ebc57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016105659061223f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610c9a57836001600160a01b031660028281548110610f7c57610f7c6121b8565b60009182526020909120600290910201546001600160a01b031603610fa2579392505050565b80610fac81612226565b915050610f57565b6000546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff1690811115610ff857610ff8611f87565b146110155760405162461bcd60e51b815260040161056590612274565b600561102183826124ce565b505050565b600154600090815b818110156110825760018181548110611049576110496121b8565b600091825260209091206002909102015461106e906001600160a01b03163184612586565b92508061107a81612226565b91505061102e565b505090565b600080600061109584610f4f565b905060001981036110e35760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6000600282815481106110f8576110f86121b8565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b0382166111845760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60025460005b81811015610d6257836001600160a01b0316600282815481106111af576111af6121b8565b60009182526020909120600290910201546001600160a01b0316036111d8575060019392505050565b806111e281612226565b91505061118a565b6000606060006111f984610c35565b9050600019810361121c5760405162461bcd60e51b815260040161056590612599565b600060018281548110611231576112316121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611293575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146112fb5760405162461bcd60e51b81526004016105659061223f565b6003805460ff168181111561131257611312611f87565b036113725760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610565565b60045443106113cf5760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b6064820152608401610565565b6113db60016000611e1b565b6113e760026000611e3c565b6113f360066000611e5d565b6003805460ff19169055565b6001806003805460ff169081111561141957611419611f87565b146114365760405162461bcd60e51b815260040161056590612274565b61143f82610cb2565b6114a15760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b6064820152608401610565565b813b15158061151857336001600160a01b0384161461150e5760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b6064820152608401610565565b6110218333611b4c565b60008061152485611a68565b9150915081516000036115795760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610565565b6115833383611ae1565b6115cf5760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610565565b6115d98533611b4c565b5050505050565b6000546001600160a01b0316331461160a5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561162457611624611f87565b146116415760405162461bcd60e51b815260040161056590612274565b600061164c83610c35565b9050600019810361166f5760405162461bcd60e51b815260040161056590612599565b6001805461167e9082906122ab565b8154811061168e5761168e6121b8565b9060005260206000209060020201600182815481106116af576116af6121b8565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546116f29284019190611e97565b509050506001805480611707576117076122be565b60008281526020812060026000199093019283020180546001600160a01b0319168155906117386001830182611ee7565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c9060200161091a565b600254600090815b818110156110825760028181548110611798576117986121b8565b906000526020600020906002020160010154836117b59190612586565b9250806117c181612226565b91505061177d565b6000546001600160a01b031633146117f35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561180d5761180d611f87565b1461182a5760405162461bcd60e51b815260040161056590612274565b6118338361113a565b156118905760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b6064820152608401610565565b816000036118e05760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610565565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b031633146119df5760405162461bcd60e51b81526004016105659061223f565b6119e881611d5b565b50565b6000546001600160a01b03163314611a155760405162461bcd60e51b81526004016105659061223f565b6001806003805460ff1690811115611a2f57611a2f611f87565b14611a4c5760405162461bcd60e51b815260040161056590612274565b611a54610466565b600380546002919060ff1916600183610bf9565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad691908101906125c8565b909590945092505050565b8051600090815b81811015611b3f57838181518110611b0257611b026121b8565b60200260200101516001600160a01b0316856001600160a01b031603611b2d57600192505050611b46565b80611b3781612226565b915050611ae8565b5060009150505b92915050565b6000611b5783610c35565b90506000198103611b7a5760405162461bcd60e51b815260040161056590612599565b600060018281548110611b8f57611b8f6121b8565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611bf457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bd6575b505083519394506000925050505b81811015611c8957846001600160a01b0316838281518110611c2657611c266121b8565b60200260200101516001600160a01b031603611c775760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610565565b80611c8181612226565b915050611c02565b5060018381548110611c9d57611c9d6121b8565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611d1457611d146121b8565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611dc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610565565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b50805460008255600202906000526020600020908101906119e89190611f05565b50805460008255600202906000526020600020908101906119e89190611f33565b508054611e69906122d4565b6000825580601f10611e79575050565b601f0160209004906000526020600020908101906119e89190611f59565b828054828255906000526020600020908101928215611ed75760005260206000209182015b82811115611ed7578254825591600101919060010190611ebc565b50611ee3929150611f59565b5090565b50805460008255906000526020600020908101906119e89190611f59565b80821115611ee35780546001600160a01b03191681556000611f2a6001830182611ee7565b50600201611f05565b5b80821115611ee35780546001600160a01b031916815560006001820155600201611f34565b5b80821115611ee35760008155600101611f5a565b600060208284031215611f8057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110611fbb57634e487b7160e01b600052602160045260246000fd5b9052565b60208101611b468284611f9d565b6001600160a01b03811681146119e857600080fd5b600060208284031215611ff457600080fd5b8135611fff81611fcd565b9392505050565b600060208083528351808285015260005b8181101561203357858101830151858201604001528201612017565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561209357612093612054565b604052919050565b600060208083850312156120ae57600080fd5b823567ffffffffffffffff808211156120c657600080fd5b818501915085601f8301126120da57600080fd5b8135818111156120ec576120ec612054565b6120fe601f8201601f1916850161206a565b9150808252868482850101111561211457600080fd5b8084840185840137600090820190930192909252509392505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561217e578551851683529483019491830191600101612160565b509098975050505050505050565b6000806040838503121561219f57600080fd5b82356121aa81611fcd565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161223857612238612210565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611b4657611b46612210565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806122e857607f821691505b60208210810361230857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561102157600081815260208120601f850160051c810160208610156123355750805b601f850160051c820191505b8181101561235457828155600101612341565b505050505050565b818103612367575050565b61237182546122d4565b67ffffffffffffffff81111561238957612389612054565b61239d8161239784546122d4565b8461230e565b6000601f8211600181146123d157600083156123b95750848201545b600019600385901b1c1916600184901b1784556115d9565b600085815260209020601f19841690600086815260209020845b8381101561240b57828601548255600195860195909101906020016123eb565b50858310156124295781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600080845461244b816122d4565b806040860152606060018084166000811461246d5760018114612487576124b8565b60ff1985168884015283151560051b8801830195506124b8565b8960005260208060002060005b868110156124af5781548b8201870152908401908201612494565b8a018501975050505b505050505080915050611fff6020830184611f9d565b815167ffffffffffffffff8111156124e8576124e8612054565b6124f68161239784546122d4565b602080601f83116001811461252b57600084156125135750858301515b600019600386901b1c1916600185901b178555612354565b600085815260208120601f198616915b8281101561255a5788860151825594840194600190910190840161253b565b508582101561242957939096015160001960f8600387901b161c19169092555050600190811b01905550565b80820180821115611b4657611b46612210565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b600080604083850312156125db57600080fd5b825167ffffffffffffffff808211156125f357600080fd5b818501915085601f83011261260757600080fd5b815160208282111561261b5761261b612054565b8160051b925061262c81840161206a565b828152928401810192818101908985111561264657600080fd5b948201945b84861015612670578551935061266084611fcd565b838252948201949082019061264b565b9790910151969896975050505050505056fea2646970667358221220fba8d3f43426144380cebd0df9d2859f044183b0bfbb546aee4dc066acb75b0b64736f6c63430008130033", } // TreasuryRebalanceV2ABI is the input ABI used to generate the binding from. @@ -18435,10 +18916,10 @@ var TreasuryRebalanceV2MetaData = &bind.MetaData{ var TreasuryRebalanceV2ABI = TreasuryRebalanceV2MetaData.ABI // TreasuryRebalanceV2BinRuntime is the compiled bytecode used for adding genesis block without deploying code. -const TreasuryRebalanceV2BinRuntime = `608060405234801561001057600080fd5b50600436106101e55760003560e01c80638f32d59b1161010f578063db27b50b116100a2578063ecd8677811610071578063ecd867781461040a578063ed3555291461041d578063f2fde38b14610425578063faaf9ca61461043857600080fd5b8063db27b50b146103c8578063e20fcf00146103db578063e2384cb3146103e3578063ea6d4a9b146103f757600080fd5b8063bd786f57116100de578063bd786f5714610379578063cea1c3381461038c578063d826f88f146103ad578063daea85c5146103b557600080fd5b80638f32d59b146103435780639ab29b70146103565780639dc954ba1461035e5780639e59eb141461036657600080fd5b8063518592da1161018757806362aa3e911161015657806362aa3e91146102ec578063715018a6146103175780637bfaf7b71461031f5780638da5cb5b1461033257600080fd5b8063518592da1461028e57806358c3b870146102a15780635f8798c0146102b65780635f9b0df7146102d957600080fd5b806327704cb5116101c357806327704cb51461022a578063343e2c851461023d578063484090961461026f57806349a3fb451461027757600080fd5b80630287d126146101ea5780631804692f146101f4578063200d2ed214610207575b600080fd5b6101f2610440565b005b6101f2610202366004611ef7565b610631565b6003546102149060ff1681565b6040516102219190611f48565b60405180910390f35b6101f2610238366004611f6b565b61074c565b61025061024b366004611ef7565b610901565b604080516001600160a01b039093168352602083019190915201610221565b6101f2610939565b61028060045481565b604051908152602001610221565b61028061029c366004611f6b565b6109f0565b6102a9610a60565b6040516102219190611f8f565b6102c96102c4366004611f6b565b610aee565b6040519015158152602001610221565b6101f26102e7366004611f6b565b610ba5565b6102ff6102fa366004611ef7565b610ce8565b6040516001600160a01b039091168152602001610221565b6101f2610d17565b61028061032d366004611f6b565b610d8b565b6000546001600160a01b03166102ff565b6000546001600160a01b031633146102c9565b610280610df0565b600154610280565b610250610374366004611f6b565b610e51565b6102c9610387366004611f6b565b610f04565b61039f61039a366004611f6b565b610fb4565b604051610221929190611fdd565b6101f261109b565b6101f26103c3366004611f6b565b6111c9565b6101f26103d6366004611f6b565b6113af565b610280611544565b6102c96103f1366004611f6b565b3b151590565b6101f2610405366004612080565b611598565b6101f2610418366004612115565b6116bc565b600254610280565b6101f2610433366004611f6b565b6118a8565b6101f26118de565b60015460005b8181101561062d5760006001828154811061046357610463612141565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104c5575b505050505081525050905060006104fe82600001513b151590565b905080156105ce5760008061051684600001516119f1565b915091508084602001515110156105485760405162461bcd60e51b815260040161053f90612157565b60405180910390fd5b602084015180516000805b828110156105a35761057e84828151811061057057610570612141565b602002602001015187611a6a565b15610591578161058d816121af565b9250505b8061059b816121af565b915050610553565b50838110156105c45760405162461bcd60e51b815260040161053f90612157565b5050505050610618565b8160200151516001146106185760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b604482015260640161053f565b50508080610625906121af565b915050610446565b5050565b6000546001600160a01b0316331461065b5760405162461bcd60e51b815260040161053f906121c8565b60045443106106d25760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d6265720000606482015260840161053f565b8043106107475760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b000000000000606482015260840161053f565b600455565b6000546001600160a01b031633146107765760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561079057610790611f10565b146107ad5760405162461bcd60e51b815260040161053f906121fd565b60006107b883610d8b565b905060001981036108065760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161053f565b6002805461081690600190612234565b8154811061082657610826612141565b90600052602060002090600202016002828154811061084757610847612141565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b0390921691909117815560019283015492019190915580548061089357610893612247565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6002818154811061091157600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b6000546001600160a01b031633146109635760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561097d5761097d611f10565b1461099a5760405162461bcd60e51b815260040161053f906121fd565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e916109e59160ff90911690611f48565b60405180910390a150565b600154600090815b81811015610a5557836001600160a01b031660018281548110610a1d57610a1d612141565b60009182526020909120600290910201546001600160a01b031603610a43579392505050565b80610a4d816121af565b9150506109f8565b506000199392505050565b60058054610a6d9061225d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a999061225d565b8015610ae65780601f10610abb57610100808354040283529160200191610ae6565b820191906000526020600020905b815481529060010190602001808311610ac957829003601f168201915b505050505081565b60006001600160a01b038216610b385760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161053f565b60015460005b81811015610b9e57836001600160a01b031660018281548110610b6357610b63612141565b60009182526020909120600290910201546001600160a01b031603610b8c575060019392505050565b80610b96816121af565b915050610b3e565b5050919050565b6000546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff1690811115610be957610be9611f10565b14610c065760405162461bcd60e51b815260040161053f906121fd565b610c0f82610aee565b15610c685760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b606482015260840161053f565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e92906020016108f4565b60018181548110610cf857600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161053f906121c8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610a5557836001600160a01b031660028281548110610db857610db8612141565b60009182526020909120600290910201546001600160a01b031603610dde579392505050565b80610de8816121af565b915050610d93565b600154600090815b81811015610e4c5760018181548110610e1357610e13612141565b6000918252602090912060029091020154610e38906001600160a01b03163184612297565b925080610e44816121af565b915050610df8565b505090565b6000806000610e5f84610d8b565b90506000198103610ead5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b604482015260640161053f565b600060028281548110610ec257610ec2612141565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b038216610f4e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161053f565b60025460005b81811015610b9e57836001600160a01b031660028281548110610f7957610f79612141565b60009182526020909120600290910201546001600160a01b031603610fa2575060019392505050565b80610fac816121af565b915050610f54565b600060606000610fc3846109f0565b90506000198103610fe65760405162461bcd60e51b815260040161053f906122aa565b600060018281548110610ffb57610ffb612141565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561107b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161105d575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146110c55760405162461bcd60e51b815260040161053f906121c8565b6003805460ff16818111156110dc576110dc611f10565b0361113c5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b606482015260840161053f565b60045443106111995760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b606482015260840161053f565b6111a560016000611da4565b6111b160026000611dc5565b6111bd60056000611de6565b6003805460ff19169055565b6001806003805460ff16908111156111e3576111e3611f10565b146112005760405162461bcd60e51b815260040161053f906121fd565b61120982610aee565b61126b5760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b606482015260840161053f565b813b1515806112e757336001600160a01b038416146112d85760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b606482015260840161053f565b6112e28333611ad5565b505050565b6000806112f3856119f1565b9150915081516000036113485760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d707479000000000000604482015260640161053f565b6113523383611a6a565b61139e5760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e0000000000604482015260640161053f565b6113a88533611ad5565b5050505050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff16908111156113f3576113f3611f10565b146114105760405162461bcd60e51b815260040161053f906121fd565b600061141b836109f0565b9050600019810361143e5760405162461bcd60e51b815260040161053f906122aa565b6001805461144d908290612234565b8154811061145d5761145d612141565b90600052602060002090600202016001828154811061147e5761147e612141565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546114c19284019190611e20565b5090505060018054806114d6576114d6612247565b60008281526020812060026000199093019283020180546001600160a01b0319168155906115076001830182611e70565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c906020016108f4565b600254600090815b81811015610e4c576002818154811061156757611567612141565b906000526020600020906002020160010154836115849190612297565b925080611590816121af565b91505061154c565b6000546001600160a01b031633146115c25760405162461bcd60e51b815260040161053f906121c8565b6002806003805460ff16908111156115dc576115dc611f10565b146115f95760405162461bcd60e51b815260040161053f906121fd565b60056116058382612327565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca64049161164491600591906123e7565b60405180910390a1600454431161062d5760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b606482015260840161053f565b6000546001600160a01b031633146116e65760405162461bcd60e51b815260040161053f906121c8565b6000806003805460ff169081111561170057611700611f10565b1461171d5760405162461bcd60e51b815260040161053f906121fd565b61172683610f04565b156117835760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b606482015260840161053f565b816000036117d35760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f203000000000000000604482015260640161053f565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b031633146118d25760405162461bcd60e51b815260040161053f906121c8565b6118db81611ce4565b50565b6000546001600160a01b031633146119085760405162461bcd60e51b815260040161053f906121c8565b6001806003805460ff169081111561192257611922611f10565b1461193f5760405162461bcd60e51b815260040161053f906121fd565b611947610df0565b61194f611544565b106119d55760405162461bcd60e51b815260206004820152604a60248201527f747265617375727920616d6f756e742073686f756c64206265206c657373207460448201527f68616e207468652073756d206f6620616c6c207a65726f656420616464726573606482015269732062616c616e63657360b01b608482015260a40161053f565b6119dd610440565b600380546002919060ff19166001836109a9565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a5f919081019061247c565b909590945092505050565b8051600090815b81811015611ac857838181518110611a8b57611a8b612141565b60200260200101516001600160a01b0316856001600160a01b031603611ab657600192505050611acf565b80611ac0816121af565b915050611a71565b5060009150505b92915050565b6000611ae0836109f0565b90506000198103611b035760405162461bcd60e51b815260040161053f906122aa565b600060018281548110611b1857611b18612141565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611b7d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611b5f575b505083519394506000925050505b81811015611c1257846001600160a01b0316838281518110611baf57611baf612141565b60200260200101516001600160a01b031603611c005760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b604482015260640161053f565b80611c0a816121af565b915050611b8b565b5060018381548110611c2657611c26612141565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611c9d57611c9d612141565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611d495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b50805460008255600202906000526020600020908101906118db9190611e8e565b50805460008255600202906000526020600020908101906118db9190611ebc565b508054611df29061225d565b6000825580601f10611e02575050565b601f0160209004906000526020600020908101906118db9190611ee2565b828054828255906000526020600020908101928215611e605760005260206000209182015b82811115611e60578254825591600101919060010190611e45565b50611e6c929150611ee2565b5090565b50805460008255906000526020600020908101906118db9190611ee2565b80821115611e6c5780546001600160a01b03191681556000611eb36001830182611e70565b50600201611e8e565b5b80821115611e6c5780546001600160a01b031916815560006001820155600201611ebd565b5b80821115611e6c5760008155600101611ee3565b600060208284031215611f0957600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110611f4457634e487b7160e01b600052602160045260246000fd5b9052565b60208101611acf8284611f26565b6001600160a01b03811681146118db57600080fd5b600060208284031215611f7d57600080fd5b8135611f8881611f56565b9392505050565b600060208083528351808285015260005b81811015611fbc57858101830151858201604001528201611fa0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561202b57855185168352948301949183019160010161200d565b509098975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561207857612078612039565b604052919050565b6000602080838503121561209357600080fd5b823567ffffffffffffffff808211156120ab57600080fd5b818501915085601f8301126120bf57600080fd5b8135818111156120d1576120d1612039565b6120e3601f8201601f1916850161204f565b915080825286848285010111156120f957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806040838503121561212857600080fd5b823561213381611f56565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016121c1576121c1612199565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611acf57611acf612199565b634e487b7160e01b600052603160045260246000fd5b600181811c9082168061227157607f821691505b60208210810361229157634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115611acf57611acf612199565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b601f8211156112e257600081815260208120601f850160051c810160208610156123005750805b601f850160051c820191505b8181101561231f5782815560010161230c565b505050505050565b815167ffffffffffffffff81111561234157612341612039565b6123558161234f845461225d565b846122d9565b602080601f83116001811461238a57600084156123725750858301515b600019600386901b1c1916600185901b17855561231f565b600085815260208120601f198616915b828110156123b95788860151825594840194600190910190840161239a565b50858210156123d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260008084546123f98161225d565b806040860152606060018084166000811461241b576001811461243557612466565b60ff1985168884015283151560051b880183019550612466565b8960005260208060002060005b8681101561245d5781548b8201870152908401908201612442565b8a018501975050505b505050505080915050611f886020830184611f26565b6000806040838503121561248f57600080fd5b825167ffffffffffffffff808211156124a757600080fd5b818501915085601f8301126124bb57600080fd5b81516020828211156124cf576124cf612039565b8160051b92506124e081840161204f565b82815292840181019281810190898511156124fa57600080fd5b948201945b84861015612524578551935061251484611f56565b83825294820194908201906124ff565b9790910151969896975050505050505056fea26469706673582212205bee2d843c6658c4cabbee7c2b1238e5086d7eb4239a72bd26736fb14158615064736f6c63430008130033` +const TreasuryRebalanceV2BinRuntime = `608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063d826f88f116100ad578063e2384cb31161007c578063e2384cb31461041c578063ecd8677814610430578063ed35552914610443578063f2fde38b1461044b578063faaf9ca61461045e57600080fd5b8063d826f88f146103e6578063daea85c5146103ee578063db27b50b14610401578063e20fcf001461041457600080fd5b80639dc954ba116100e95780639dc954ba146103975780639e59eb141461039f578063bd786f57146103b2578063cea1c338146103c557600080fd5b80638da5cb5b146103585780638f32d59b1461036957806390d334561461037c5780639ab29b701461038f57600080fd5b806349a3fb45116101925780635f9b0df7116101615780635f9b0df7146102ff57806362aa3e9114610312578063715018a61461033d5780637bfaf7b71461034557600080fd5b806349a3fb45146102aa578063518592da146102c157806358c3b870146102d45780635f8798c0146102dc57600080fd5b806328c5cf0a116101ce57806328c5cf0a14610253578063343e2c851461025b5780633a7a47e21461028d57806348409096146102a257600080fd5b80630287d126146102005780631804692f1461020a578063200d2ed21461021d57806327704cb514610240575b600080fd5b610208610466565b005b610208610218366004611f6e565b610657565b60035461022a9060ff1681565b6040516102379190611fbf565b60405180910390f35b61020861024e366004611fe2565b610772565b610208610927565b61026e610269366004611f6e565b610ac3565b604080516001600160a01b039093168352602083019190915201610237565b610295610afb565b6040516102379190612006565b610208610b89565b6102b360045481565b604051908152602001610237565b6102b36102cf366004611fe2565b610c35565b610295610ca5565b6102ef6102ea366004611fe2565b610cb2565b6040519015158152602001610237565b61020861030d366004611fe2565b610d69565b610325610320366004611f6e565b610eac565b6040516001600160a01b039091168152602001610237565b610208610edb565b6102b3610353366004611fe2565b610f4f565b6000546001600160a01b0316610325565b6000546001600160a01b031633146102ef565b61020861038a36600461209b565b610fb4565b6102b3611026565b6001546102b3565b61026e6103ad366004611fe2565b611087565b6102ef6103c0366004611fe2565b61113a565b6103d86103d3366004611fe2565b6111ea565b604051610237929190612130565b6102086112d1565b6102086103fc366004611fe2565b6113ff565b61020861040f366004611fe2565b6115e0565b6102b3611775565b6102ef61042a366004611fe2565b3b151590565b61020861043e36600461218c565b6117c9565b6002546102b3565b610208610459366004611fe2565b6119b5565b6102086119eb565b60015460005b8181101561065357600060018281548110610489576104896121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561050957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104eb575b5050505050815250509050600061052482600001513b151590565b905080156105f45760008061053c8460000151611a68565b9150915080846020015151101561056e5760405162461bcd60e51b8152600401610565906121ce565b60405180910390fd5b602084015180516000805b828110156105c9576105a4848281518110610596576105966121b8565b602002602001015187611ae1565b156105b757816105b381612226565b9250505b806105c181612226565b915050610579565b50838110156105ea5760405162461bcd60e51b8152600401610565906121ce565b505050505061063e565b81602001515160011461063e5760405162461bcd60e51b8152602060048201526012602482015271454f412073686f756c6420617070726f766560701b6044820152606401610565565b5050808061064b90612226565b91505061046c565b5050565b6000546001600160a01b031633146106815760405162461bcd60e51b81526004016105659061223f565b60045443106106f85760405162461bcd60e51b815260206004820152603e60248201527f63757272656e7420626c6f636b2073686f756c646e277420626520706173742060448201527f7468652063757272656e746c792073657420626c6f636b206e756d62657200006064820152608401610565565b80431061076d5760405162461bcd60e51b815260206004820152603a60248201527f726562616c616e636520626c6f636b4e756d6265722073686f756c642062652060448201527f67726561746572207468616e2063757272656e7420626c6f636b0000000000006064820152608401610565565b600455565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff16908111156107b6576107b6611f87565b146107d35760405162461bcd60e51b815260040161056590612274565b60006107de83610f4f565b9050600019810361082c5760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6002805461083c906001906122ab565b8154811061084c5761084c6121b8565b90600052602060002090600202016002828154811061086d5761086d6121b8565b600091825260209091208254600292830290910180546001600160a01b0319166001600160a01b039092169190911781556001928301549201919091558054806108b9576108b96122be565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001019190915591556040516001600160a01b03851681527ff8f67464bea52432645435be9c46c427173a75aefaa1001272e08a4b8572f06e91015b60405180910390a1505050565b6000546001600160a01b031633146109515760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff169081111561096b5761096b611f87565b146109885760405162461bcd60e51b815260040161056590612274565b60045443116109f85760405162461bcd60e51b815260206004820152603660248201527f436f6e74726163742063616e206f6e6c792066696e616c697a6520616674657260448201527520657865637574696e6720726562616c616e63696e6760501b6064820152608401610565565b600060058054610a07906122d4565b905011610a6c5760405162461bcd60e51b815260206004820152602d60248201527f6e6f2070656e64696e67206d656d6f2c2063616e6e6f742066696e616c697a6560448201526c20776974686f7574206d656d6f60981b6064820152608401610565565b6006610a7960058261235c565b506003805460ff1916811781556040517f8f8636c7757ca9b7d154e1d44ca90d8e8c885b9eac417c59bbf8eb7779ca640491610ab89160069190612439565b60405180910390a150565b60028181548110610ad357600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058054610b08906122d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b34906122d4565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b505050505081565b6000546001600160a01b03163314610bb35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610bcd57610bcd611f87565b14610bea5760405162461bcd60e51b815260040161056590612274565b600380546001919060ff191682805b02179055506003546040517fafa725e7f44cadb687a7043853fa1a7e7b8f0da74ce87ec546e9420f04da8c1e91610ab89160ff90911690611fbf565b600154600090815b81811015610c9a57836001600160a01b031660018281548110610c6257610c626121b8565b60009182526020909120600290910201546001600160a01b031603610c88579392505050565b80610c9281612226565b915050610c3d565b506000199392505050565b60068054610b08906122d4565b60006001600160a01b038216610cfc5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60015460005b81811015610d6257836001600160a01b031660018281548110610d2757610d276121b8565b60009182526020909120600290910201546001600160a01b031603610d50575060019392505050565b80610d5a81612226565b915050610d02565b5050919050565b6000546001600160a01b03163314610d935760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff1690811115610dad57610dad611f87565b14610dca5760405162461bcd60e51b815260040161056590612274565b610dd382610cb2565b15610e2c5760405162461bcd60e51b8152602060048201526024808201527f5a65726f6564206164647265737320697320616c726561647920726567697374604482015263195c995960e21b6064820152608401610565565b6001805480820182556000919091526002027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116811782556040519081527fa9a4f3b74b03e48e76814dbc308d3f20104d608c67a42a7ae678d0945daa8e929060200161091a565b60018181548110610ebc57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016105659061223f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600254600090815b81811015610c9a57836001600160a01b031660028281548110610f7c57610f7c6121b8565b60009182526020909120600290910201546001600160a01b031603610fa2579392505050565b80610fac81612226565b915050610f57565b6000546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105659061223f565b6002806003805460ff1690811115610ff857610ff8611f87565b146110155760405162461bcd60e51b815260040161056590612274565b600561102183826124ce565b505050565b600154600090815b818110156110825760018181548110611049576110496121b8565b600091825260209091206002909102015461106e906001600160a01b03163184612586565b92508061107a81612226565b91505061102e565b505090565b600080600061109584610f4f565b905060001981036110e35760405162461bcd60e51b8152602060048201526018602482015277105b1b1bd8d85d1959081b9bdd081c9959da5cdd195c995960421b6044820152606401610565565b6000600282815481106110f8576110f86121b8565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549190920181905290969095509350505050565b60006001600160a01b0382166111845760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610565565b60025460005b81811015610d6257836001600160a01b0316600282815481106111af576111af6121b8565b60009182526020909120600290910201546001600160a01b0316036111d8575060019392505050565b806111e281612226565b91505061118a565b6000606060006111f984610c35565b9050600019810361121c5760405162461bcd60e51b815260040161056590612599565b600060018281548110611231576112316121b8565b6000918252602091829020604080518082018252600290930290910180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611293575b505050505081525050905080600001518160200151935093505050915091565b6000546001600160a01b031633146112fb5760405162461bcd60e51b81526004016105659061223f565b6003805460ff168181111561131257611312611f87565b036113725760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742069732066696e616c697a65642c2063616e6e6f742072656044820152697365742076616c75657360b01b6064820152608401610565565b60045443106113cf5760405162461bcd60e51b8152602060048201526024808201527f526562616c616e636520626c6f636b6e756d62657220616c72656164792070616044820152631cdcd95960e21b6064820152608401610565565b6113db60016000611e1b565b6113e760026000611e3c565b6113f360066000611e5d565b6003805460ff19169055565b6001806003805460ff169081111561141957611419611f87565b146114365760405162461bcd60e51b815260040161056590612274565b61143f82610cb2565b6114a15760405162461bcd60e51b815260206004820152602d60248201527f7a65726f6564206e6565647320746f206265207265676973746572656420626560448201526c199bdc9948185c1c1c9bdd985b609a1b6064820152608401610565565b813b15158061151857336001600160a01b0384161461150e5760405162461bcd60e51b815260206004820152602360248201527f7a65726f656441646472657373206973206e6f7420746865206d73672e73656e6044820152623232b960e91b6064820152608401610565565b6110218333611b4c565b60008061152485611a68565b9150915081516000036115795760405162461bcd60e51b815260206004820152601a60248201527f61646d696e206c6973742063616e6e6f7420626520656d7074790000000000006044820152606401610565565b6115833383611ae1565b6115cf5760405162461bcd60e51b815260206004820152601b60248201527f6d73672e73656e646572206973206e6f74207468652061646d696e00000000006044820152606401610565565b6115d98533611b4c565b5050505050565b6000546001600160a01b0316331461160a5760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561162457611624611f87565b146116415760405162461bcd60e51b815260040161056590612274565b600061164c83610c35565b9050600019810361166f5760405162461bcd60e51b815260040161056590612599565b6001805461167e9082906122ab565b8154811061168e5761168e6121b8565b9060005260206000209060020201600182815481106116af576116af6121b8565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600180830180546116f29284019190611e97565b509050506001805480611707576117076122be565b60008281526020812060026000199093019283020180546001600160a01b0319168155906117386001830182611ee7565b505090556040516001600160a01b03841681527f8a654c98d0a7856a8d216c621bb8073316efcaa2b65774d2050c4c1fc7a85a0c9060200161091a565b600254600090815b818110156110825760028181548110611798576117986121b8565b906000526020600020906002020160010154836117b59190612586565b9250806117c181612226565b91505061177d565b6000546001600160a01b031633146117f35760405162461bcd60e51b81526004016105659061223f565b6000806003805460ff169081111561180d5761180d611f87565b1461182a5760405162461bcd60e51b815260040161056590612274565b6118338361113a565b156118905760405162461bcd60e51b815260206004820152602760248201527f416c6c6f6361746564206164647265737320697320616c7265616479207265676044820152661a5cdd195c995960ca1b6064820152608401610565565b816000036118e05760405162461bcd60e51b815260206004820152601960248201527f416d6f756e742063616e6e6f742062652073657420746f2030000000000000006044820152606401610565565b6040805180820182526001600160a01b038581168083526020808401878152600280546001810182556000829052865191027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054929096166001600160a01b031990921691909117909455517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90930192909255835190815290810185905290917fab5b2126f71ee7e0b39eadc53fb5d08a8f6c68dc61795fa05ed7d176cd2665ed910160405180910390a150505050565b6000546001600160a01b031633146119df5760405162461bcd60e51b81526004016105659061223f565b6119e881611d5b565b50565b6000546001600160a01b03163314611a155760405162461bcd60e51b81526004016105659061223f565b6001806003805460ff1690811115611a2f57611a2f611f87565b14611a4c5760405162461bcd60e51b815260040161056590612274565b611a54610466565b600380546002919060ff1916600183610bf9565b6060600080839050806001600160a01b0316631865c57d6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad691908101906125c8565b909590945092505050565b8051600090815b81811015611b3f57838181518110611b0257611b026121b8565b60200260200101516001600160a01b0316856001600160a01b031603611b2d57600192505050611b46565b80611b3781612226565b915050611ae8565b5060009150505b92915050565b6000611b5783610c35565b90506000198103611b7a5760405162461bcd60e51b815260040161056590612599565b600060018281548110611b8f57611b8f6121b8565b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020018280548015611bf457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bd6575b505083519394506000925050505b81811015611c8957846001600160a01b0316838281518110611c2657611c266121b8565b60200260200101516001600160a01b031603611c775760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48185c1c1c9bdd995960821b6044820152606401610565565b80611c8181612226565b915050611c02565b5060018381548110611c9d57611c9d6121b8565b600091825260208083206001600290930201820180548084018255908452922090910180546001600160a01b0387166001600160a01b031990911617905580547f80da462ebfbe41cfc9bc015e7a9a3c7a2a73dbccede72d8ceb583606c27f8f9091879187919087908110611d1457611d146121b8565b600091825260209182902060016002909202010154604080516001600160a01b03958616815294909316918401919091529082015260600160405180910390a15050505050565b6001600160a01b038116611dc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610565565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b50805460008255600202906000526020600020908101906119e89190611f05565b50805460008255600202906000526020600020908101906119e89190611f33565b508054611e69906122d4565b6000825580601f10611e79575050565b601f0160209004906000526020600020908101906119e89190611f59565b828054828255906000526020600020908101928215611ed75760005260206000209182015b82811115611ed7578254825591600101919060010190611ebc565b50611ee3929150611f59565b5090565b50805460008255906000526020600020908101906119e89190611f59565b80821115611ee35780546001600160a01b03191681556000611f2a6001830182611ee7565b50600201611f05565b5b80821115611ee35780546001600160a01b031916815560006001820155600201611f34565b5b80821115611ee35760008155600101611f5a565b600060208284031215611f8057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110611fbb57634e487b7160e01b600052602160045260246000fd5b9052565b60208101611b468284611f9d565b6001600160a01b03811681146119e857600080fd5b600060208284031215611ff457600080fd5b8135611fff81611fcd565b9392505050565b600060208083528351808285015260005b8181101561203357858101830151858201604001528201612017565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561209357612093612054565b604052919050565b600060208083850312156120ae57600080fd5b823567ffffffffffffffff808211156120c657600080fd5b818501915085601f8301126120da57600080fd5b8135818111156120ec576120ec612054565b6120fe601f8201601f1916850161206a565b9150808252868482850101111561211457600080fd5b8084840185840137600090820190930192909252509392505050565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b8181101561217e578551851683529483019491830191600101612160565b509098975050505050505050565b6000806040838503121561219f57600080fd5b82356121aa81611fcd565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f6d696e2072657175697265642061646d696e732073686f756c6420617070726f604082015261766560f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161223857612238612210565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f4e6f7420696e207468652064657369676e617465642073746174757300000000604082015260600190565b81810381811115611b4657611b46612210565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806122e857607f821691505b60208210810361230857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561102157600081815260208120601f850160051c810160208610156123355750805b601f850160051c820191505b8181101561235457828155600101612341565b505050505050565b818103612367575050565b61237182546122d4565b67ffffffffffffffff81111561238957612389612054565b61239d8161239784546122d4565b8461230e565b6000601f8211600181146123d157600083156123b95750848201545b600019600385901b1c1916600184901b1784556115d9565b600085815260209020601f19841690600086815260209020845b8381101561240b57828601548255600195860195909101906020016123eb565b50858310156124295781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600080845461244b816122d4565b806040860152606060018084166000811461246d5760018114612487576124b8565b60ff1985168884015283151560051b8801830195506124b8565b8960005260208060002060005b868110156124af5781548b8201870152908401908201612494565b8a018501975050505b505050505080915050611fff6020830184611f9d565b815167ffffffffffffffff8111156124e8576124e8612054565b6124f68161239784546122d4565b602080601f83116001811461252b57600084156125135750858301515b600019600386901b1c1916600185901b178555612354565b600085815260208120601f198616915b8281101561255a5788860151825594840194600190910190840161253b565b508582101561242957939096015160001960f8600387901b161c19169092555050600190811b01905550565b80820180821115611b4657611b46612210565b60208082526015908201527416995c9bd959081b9bdd081c9959da5cdd195c9959605a1b604082015260600190565b600080604083850312156125db57600080fd5b825167ffffffffffffffff808211156125f357600080fd5b818501915085601f83011261260757600080fd5b815160208282111561261b5761261b612054565b8160051b925061262c81840161206a565b828152928401810192818101908985111561264657600080fd5b948201945b84861015612670578551935061266084611fcd565b838252948201949082019061264b565b9790910151969896975050505050505056fea2646970667358221220fba8d3f43426144380cebd0df9d2859f044183b0bfbb546aee4dc066acb75b0b64736f6c63430008130033` -// TreasuryRebalanceV2FuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use TreasuryRebalanceV2MetaData.Sigs instead. +// TreasuryRebalanceV2FuncSigs maps the 4-byte function signature to its string representation. var TreasuryRebalanceV2FuncSigs = TreasuryRebalanceV2MetaData.Sigs // TreasuryRebalanceV2Bin is the compiled bytecode used for deploying new contracts. @@ -18610,6 +19091,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorRaw) Transact(opts *bin func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) AllocatedExists(opts *bind.CallOpts, _allocatedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "allocatedExists", _allocatedAddress) + if err != nil { return *new(bool), err } @@ -18617,6 +19099,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) AllocatedExists(opts *bin out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // AllocatedExists is a free data retrieval call binding the contract method 0xbd786f57. @@ -18639,8 +19122,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) AllocatedExists(_a func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.CallOpts, arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "allocateds", arg0) @@ -18648,10 +19130,15 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.Cal Addr common.Address Amount *big.Int }) + if err != nil { + return *outstruct, err + } outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + return *outstruct, err + } // Allocateds is a free data retrieval call binding the contract method 0x343e2c85. @@ -18660,8 +19147,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Allocateds(opts *bind.Cal func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceV2.Contract.Allocateds(&_TreasuryRebalanceV2.CallOpts, arg0) } @@ -18671,8 +19157,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) Allocateds(arg0 *big.Int func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Allocateds(arg0 *big.Int) (struct { Addr common.Address Amount *big.Int -}, error, -) { +}, error) { return _TreasuryRebalanceV2.Contract.Allocateds(&_TreasuryRebalanceV2.CallOpts, arg0) } @@ -18682,11 +19167,13 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Allocateds(arg0 *b func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) CheckZeroedsApproved(opts *bind.CallOpts) error { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "checkZeroedsApproved") + if err != nil { return err } return err + } // CheckZeroedsApproved is a free data retrieval call binding the contract method 0x0287d126. @@ -18709,6 +19196,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) CheckZeroedsApprov func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocated(opts *bind.CallOpts, _allocatedAddress common.Address) (common.Address, *big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocated", _allocatedAddress) + if err != nil { return *new(common.Address), *new(*big.Int), err } @@ -18717,6 +19205,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocated(opts *bind.C out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) return out0, out1, err + } // GetAllocated is a free data retrieval call binding the contract method 0x9e59eb14. @@ -18739,6 +19228,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocated(_allo func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocatedCount") + if err != nil { return *new(*big.Int), err } @@ -18746,6 +19236,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedCount(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedCount is a free data retrieval call binding the contract method 0xed355529. @@ -18768,6 +19259,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocatedCount( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedIndex(opts *bind.CallOpts, _allocatedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getAllocatedIndex", _allocatedAddress) + if err != nil { return *new(*big.Int), err } @@ -18775,6 +19267,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetAllocatedIndex(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetAllocatedIndex is a free data retrieval call binding the contract method 0x7bfaf7b7. @@ -18797,6 +19290,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetAllocatedIndex( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetTreasuryAmount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getTreasuryAmount") + if err != nil { return *new(*big.Int), err } @@ -18804,6 +19298,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetTreasuryAmount(opts *b out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetTreasuryAmount is a free data retrieval call binding the contract method 0xe20fcf00. @@ -18826,6 +19321,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetTreasuryAmount( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroed(opts *bind.CallOpts, _zeroedAddress common.Address) (common.Address, []common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroed", _zeroedAddress) + if err != nil { return *new(common.Address), *new([]common.Address), err } @@ -18834,6 +19330,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroed(opts *bind.Call out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) return out0, out1, err + } // GetZeroed is a free data retrieval call binding the contract method 0xcea1c338. @@ -18856,6 +19353,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroed(_zeroedA func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedCount(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroedCount") + if err != nil { return *new(*big.Int), err } @@ -18863,6 +19361,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedCount(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedCount is a free data retrieval call binding the contract method 0x9dc954ba. @@ -18885,6 +19384,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroedCount() ( func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedIndex(opts *bind.CallOpts, _zeroedAddress common.Address) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "getZeroedIndex", _zeroedAddress) + if err != nil { return *new(*big.Int), err } @@ -18892,6 +19392,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) GetZeroedIndex(opts *bind out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // GetZeroedIndex is a free data retrieval call binding the contract method 0x518592da. @@ -18914,6 +19415,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) GetZeroedIndex(_ze func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsContractAddr(opts *bind.CallOpts, _addr common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "isContractAddr", _addr) + if err != nil { return *new(bool), err } @@ -18921,6 +19423,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsContractAddr(opts *bind out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsContractAddr is a free data retrieval call binding the contract method 0xe2384cb3. @@ -18943,6 +19446,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) IsContractAddr(_ad func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsOwner(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "isOwner") + if err != nil { return *new(bool), err } @@ -18950,6 +19454,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) IsOwner(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. @@ -18972,6 +19477,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) IsOwner() (bool, e func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Memo(opts *bind.CallOpts) (string, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "memo") + if err != nil { return *new(string), err } @@ -18979,6 +19485,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Memo(opts *bind.CallOpts) out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err + } // Memo is a free data retrieval call binding the contract method 0x58c3b870. @@ -19001,6 +19508,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Memo() (string, er func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "owner") + if err != nil { return *new(common.Address), err } @@ -19008,6 +19516,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Owner(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -19024,12 +19533,44 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Owner() (common.Ad return _TreasuryRebalanceV2.Contract.Owner(&_TreasuryRebalanceV2.CallOpts) } +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) PendingMemo(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TreasuryRebalanceV2.contract.Call(opts, &out, "pendingMemo") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) PendingMemo() (string, error) { + return _TreasuryRebalanceV2.Contract.PendingMemo(&_TreasuryRebalanceV2.CallOpts) +} + +// PendingMemo is a free data retrieval call binding the contract method 0x3a7a47e2. +// +// Solidity: function pendingMemo() view returns(string) +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) PendingMemo() (string, error) { + return _TreasuryRebalanceV2.Contract.PendingMemo(&_TreasuryRebalanceV2.CallOpts) +} + // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. // // Solidity: function rebalanceBlockNumber() view returns(uint256) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) RebalanceBlockNumber(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "rebalanceBlockNumber") + if err != nil { return *new(*big.Int), err } @@ -19037,6 +19578,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) RebalanceBlockNumber(opts out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // RebalanceBlockNumber is a free data retrieval call binding the contract method 0x49a3fb45. @@ -19059,6 +19601,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) RebalanceBlockNumb func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Status(opts *bind.CallOpts) (uint8, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "status") + if err != nil { return *new(uint8), err } @@ -19066,6 +19609,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Status(opts *bind.CallOpt out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err + } // Status is a free data retrieval call binding the contract method 0x200d2ed2. @@ -19088,6 +19632,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) Status() (uint8, e func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) SumOfZeroedBalance(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "sumOfZeroedBalance") + if err != nil { return *new(*big.Int), err } @@ -19095,6 +19640,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) SumOfZeroedBalance(opts * out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err + } // SumOfZeroedBalance is a free data retrieval call binding the contract method 0x9ab29b70. @@ -19117,6 +19663,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) SumOfZeroedBalance func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) ZeroedExists(opts *bind.CallOpts, _zeroedAddress common.Address) (bool, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "zeroedExists", _zeroedAddress) + if err != nil { return *new(bool), err } @@ -19124,6 +19671,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) ZeroedExists(opts *bind.C out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err + } // ZeroedExists is a free data retrieval call binding the contract method 0x5f8798c0. @@ -19146,6 +19694,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2CallerSession) ZeroedExists(_zero func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Zeroeds(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { var out []interface{} err := _TreasuryRebalanceV2.contract.Call(opts, &out, "zeroeds", arg0) + if err != nil { return *new(common.Address), err } @@ -19153,6 +19702,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Caller) Zeroeds(opts *bind.CallOp out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err + } // Zeroeds is a free data retrieval call binding the contract method 0x62aa3e91. @@ -19211,25 +19761,25 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorSession) FinalizeApprov return _TreasuryRebalanceV2.Contract.FinalizeApproval(&_TreasuryRebalanceV2.TransactOpts) } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Transactor) FinalizeContract(opts *bind.TransactOpts, _memo string) (*types.Transaction, error) { - return _TreasuryRebalanceV2.contract.Transact(opts, "finalizeContract", _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Transactor) FinalizeContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TreasuryRebalanceV2.contract.Transact(opts, "finalizeContract") } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) FinalizeContract(_memo string) (*types.Transaction, error) { - return _TreasuryRebalanceV2.Contract.FinalizeContract(&_TreasuryRebalanceV2.TransactOpts, _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) FinalizeContract() (*types.Transaction, error) { + return _TreasuryRebalanceV2.Contract.FinalizeContract(&_TreasuryRebalanceV2.TransactOpts) } -// FinalizeContract is a paid mutator transaction binding the contract method 0xea6d4a9b. +// FinalizeContract is a paid mutator transaction binding the contract method 0x28c5cf0a. // -// Solidity: function finalizeContract(string _memo) returns() -func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorSession) FinalizeContract(_memo string) (*types.Transaction, error) { - return _TreasuryRebalanceV2.Contract.FinalizeContract(&_TreasuryRebalanceV2.TransactOpts, _memo) +// Solidity: function finalizeContract() returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorSession) FinalizeContract() (*types.Transaction, error) { + return _TreasuryRebalanceV2.Contract.FinalizeContract(&_TreasuryRebalanceV2.TransactOpts) } // FinalizeRegistration is a paid mutator transaction binding the contract method 0x48409096. @@ -19379,6 +19929,27 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorSession) Reset() (*type return _TreasuryRebalanceV2.Contract.Reset(&_TreasuryRebalanceV2.TransactOpts) } +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Transactor) SetPendingMemo(opts *bind.TransactOpts, _memo string) (*types.Transaction, error) { + return _TreasuryRebalanceV2.contract.Transact(opts, "setPendingMemo", _memo) +} + +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Session) SetPendingMemo(_memo string) (*types.Transaction, error) { + return _TreasuryRebalanceV2.Contract.SetPendingMemo(&_TreasuryRebalanceV2.TransactOpts, _memo) +} + +// SetPendingMemo is a paid mutator transaction binding the contract method 0x90d33456. +// +// Solidity: function setPendingMemo(string _memo) returns() +func (_TreasuryRebalanceV2 *TreasuryRebalanceV2TransactorSession) SetPendingMemo(_memo string) (*types.Transaction, error) { + return _TreasuryRebalanceV2.Contract.SetPendingMemo(&_TreasuryRebalanceV2.TransactOpts, _memo) +} + // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -19499,6 +20070,7 @@ type TreasuryRebalanceV2AllocatedRegistered struct { // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceV2AllocatedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -19510,6 +20082,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRegister // // Solidity: event AllocatedRegistered(address allocated, uint256 fundAllocation) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchAllocatedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2AllocatedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "AllocatedRegistered") if err != nil { return nil, err @@ -19550,6 +20123,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseAllocatedRegistere if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "AllocatedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19630,6 +20204,7 @@ type TreasuryRebalanceV2AllocatedRemoved struct { // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceV2AllocatedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -19641,6 +20216,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterAllocatedRemoved( // // Solidity: event AllocatedRemoved(address allocated) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchAllocatedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2AllocatedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "AllocatedRemoved") if err != nil { return nil, err @@ -19681,6 +20257,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseAllocatedRemoved(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "AllocatedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19763,6 +20340,7 @@ type TreasuryRebalanceV2Approved struct { // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterApproved(opts *bind.FilterOpts) (*TreasuryRebalanceV2ApprovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "Approved") if err != nil { return nil, err @@ -19774,6 +20352,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterApproved(opts *bi // // Solidity: event Approved(address zeroed, address approver, uint256 approversCount) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2Approved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "Approved") if err != nil { return nil, err @@ -19814,6 +20393,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseApproved(log types if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "Approved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -19896,6 +20476,7 @@ type TreasuryRebalanceV2ContractDeployed struct { // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterContractDeployed(opts *bind.FilterOpts) (*TreasuryRebalanceV2ContractDeployedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -19907,6 +20488,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterContractDeployed( // // Solidity: event ContractDeployed(uint8 status, uint256 rebalanceBlockNumber, uint256 deployedBlockNumber) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchContractDeployed(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ContractDeployed) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ContractDeployed") if err != nil { return nil, err @@ -19947,6 +20529,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseContractDeployed(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ContractDeployed", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20028,6 +20611,7 @@ type TreasuryRebalanceV2Finalized struct { // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterFinalized(opts *bind.FilterOpts) (*TreasuryRebalanceV2FinalizedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "Finalized") if err != nil { return nil, err @@ -20039,6 +20623,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterFinalized(opts *b // // Solidity: event Finalized(string memo, uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchFinalized(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2Finalized) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "Finalized") if err != nil { return nil, err @@ -20079,6 +20664,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseFinalized(log type if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "Finalized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20160,6 +20746,7 @@ type TreasuryRebalanceV2OwnershipTransferred struct { // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TreasuryRebalanceV2OwnershipTransferredIterator, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -20180,6 +20767,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterOwnershipTransfer // // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { previousOwnerRule = append(previousOwnerRule, previousOwnerItem) @@ -20229,6 +20817,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseOwnershipTransferr if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20309,6 +20898,7 @@ type TreasuryRebalanceV2StatusChanged struct { // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterStatusChanged(opts *bind.FilterOpts) (*TreasuryRebalanceV2StatusChangedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -20320,6 +20910,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterStatusChanged(opt // // Solidity: event StatusChanged(uint8 status) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchStatusChanged(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2StatusChanged) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "StatusChanged") if err != nil { return nil, err @@ -20360,6 +20951,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseStatusChanged(log if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "StatusChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20440,6 +21032,7 @@ type TreasuryRebalanceV2ZeroedRegistered struct { // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRegistered(opts *bind.FilterOpts) (*TreasuryRebalanceV2ZeroedRegisteredIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -20451,6 +21044,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRegistered( // // Solidity: event ZeroedRegistered(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchZeroedRegistered(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ZeroedRegistered) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ZeroedRegistered") if err != nil { return nil, err @@ -20491,6 +21085,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseZeroedRegistered(l if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ZeroedRegistered", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20571,6 +21166,7 @@ type TreasuryRebalanceV2ZeroedRemoved struct { // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRemoved(opts *bind.FilterOpts) (*TreasuryRebalanceV2ZeroedRemovedIterator, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.FilterLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -20582,6 +21178,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) FilterZeroedRemoved(opt // // Solidity: event ZeroedRemoved(address zeroed) func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) WatchZeroedRemoved(opts *bind.WatchOpts, sink chan<- *TreasuryRebalanceV2ZeroedRemoved) (event.Subscription, error) { + logs, sub, err := _TreasuryRebalanceV2.contract.WatchLogs(opts, "ZeroedRemoved") if err != nil { return nil, err @@ -20622,6 +21219,7 @@ func (_TreasuryRebalanceV2 *TreasuryRebalanceV2Filterer) ParseZeroedRemoved(log if err := _TreasuryRebalanceV2.contract.UnpackLog(event, "ZeroedRemoved", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -20642,8 +21240,8 @@ var UUPSUpgradeableABI = UUPSUpgradeableMetaData.ABI // UUPSUpgradeableBinRuntime is the compiled bytecode used for adding genesis block without deploying code. const UUPSUpgradeableBinRuntime = `` -// UUPSUpgradeableFuncSigs maps the 4-byte function signature to its string representation. // Deprecated: Use UUPSUpgradeableMetaData.Sigs instead. +// UUPSUpgradeableFuncSigs maps the 4-byte function signature to its string representation. var UUPSUpgradeableFuncSigs = UUPSUpgradeableMetaData.Sigs // UUPSUpgradeable is an auto generated Go binding around a Kaia contract. @@ -20794,6 +21392,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transact(opts *bind.Transa func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} err := _UUPSUpgradeable.contract.Call(opts, &out, "proxiableUUID") + if err != nil { return *new([32]byte), err } @@ -20801,6 +21400,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err + } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -20937,6 +21537,7 @@ type UUPSUpgradeableAdminChanged struct { // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*UUPSUpgradeableAdminChangedIterator, error) { + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -20948,6 +21549,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterAdminChanged(opts *bind.F // // Solidity: event AdminChanged(address previousAdmin, address newAdmin) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableAdminChanged) (event.Subscription, error) { + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "AdminChanged") if err != nil { return nil, err @@ -20988,6 +21590,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseAdminChanged(log types.Log if err := _UUPSUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21068,6 +21671,7 @@ type UUPSUpgradeableBeaconUpgraded struct { // // Solidity: event BeaconUpgraded(address indexed beacon) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*UUPSUpgradeableBeaconUpgradedIterator, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -21084,6 +21688,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterBeaconUpgraded(opts *bind // // Solidity: event BeaconUpgraded(address indexed beacon) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + var beaconRule []interface{} for _, beaconItem := range beacon { beaconRule = append(beaconRule, beaconItem) @@ -21129,6 +21734,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseBeaconUpgraded(log types.L if err := _UUPSUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21209,6 +21815,7 @@ type UUPSUpgradeableInitialized struct { // // Solidity: event Initialized(uint8 version) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*UUPSUpgradeableInitializedIterator, error) { + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err @@ -21220,6 +21827,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.Fi // // Solidity: event Initialized(uint8 version) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableInitialized) (event.Subscription, error) { + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err @@ -21260,6 +21868,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseInitialized(log types.Log) if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } + event.Raw = log return event, nil } @@ -21340,6 +21949,7 @@ type UUPSUpgradeableUpgraded struct { // // Solidity: event Upgraded(address indexed implementation) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*UUPSUpgradeableUpgradedIterator, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -21356,6 +21966,7 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.Filte // // Solidity: event Upgraded(address indexed implementation) func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + var implementationRule []interface{} for _, implementationItem := range implementation { implementationRule = append(implementationRule, implementationItem) @@ -21401,5 +22012,6 @@ func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseUpgraded(log types.Log) (* if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { return nil, err } + event.Raw = log return event, nil } From dbe10825f201f244d41b181b9eefe4fe5cd4dd05 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 17:16:10 +0900 Subject: [PATCH 6/8] Add ConstructorWithStructParam test --- accounts/abi/bind/bind_test.go | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 34f7b0fe6..4dec357cc 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1854,6 +1854,47 @@ var bindTests = []struct { nil, nil, }, + { + name: `ConstructorWithStructParam`, + contract: ` + pragma solidity >=0.8.0 <0.9.0; + + contract ConstructorWithStructParam { + struct StructType { + uint256 field; + } + + constructor(StructType memory st) {} + } + `, + bytecode: []string{`0x608060405234801561001057600080fd5b506040516101c43803806101c48339818101604052810190610032919061014a565b50610177565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6100958261004c565b810181811067ffffffffffffffff821117156100b4576100b361005d565b5b80604052505050565b60006100c7610038565b90506100d3828261008c565b919050565b6000819050919050565b6100eb816100d8565b81146100f657600080fd5b50565b600081519050610108816100e2565b92915050565b60006020828403121561012457610123610047565b5b61012e60206100bd565b9050600061013e848285016100f9565b60008301525092915050565b6000602082840312156101605761015f610042565b5b600061016e8482850161010e565b91505092915050565b603f806101856000396000f3fe6080604052600080fdfea2646970667358221220cdffa667affecefac5561f65f4a4ba914204a8d4eb859d8cd426fb306e5c12a364736f6c634300080a0033`}, + abi: []string{`[{"inputs":[{"components":[{"internalType":"uint256","name":"field","type":"uint256"}],"internalType":"struct ConstructorWithStructParam.StructType","name":"st","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"}]`}, + imports: ` + "math/big" + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/accounts/abi/bind/backends" + "github.com/kaiachain/kaia/blockchain" + "github.com/kaiachain/kaia/crypto" + `, + tester: ` + var ( + key, _ = crypto.GenerateKey() + auth = bind.NewKeyedTransactor(key) + sim = backends.NewSimulatedBackend(blockchain.GenesisAlloc{auth.From: {Balance: big.NewInt(1000000000000000000)}}) + ) + defer sim.Close() + _, tx, _, err := DeployConstructorWithStructParam(auth, sim, ConstructorWithStructParamStructType{Field: big.NewInt(42)}) + if err != nil { + t.Fatalf("DeployConstructorWithStructParam() got err %v; want nil err", err) + } + sim.Commit() + + if _, err = bind.WaitDeployed(nil, sim, tx); err != nil { + t.Logf("Deployment tx: %+v", tx) + t.Errorf("bind.WaitDeployed(nil, %T, ) got err %v; want nil err", sim, err) + } + `, + }, { name: "RangeKeyword", contract: ` From da5c61f8b5511e803fc068c8ada17f4e18a6b37a Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 17:34:21 +0900 Subject: [PATCH 7/8] Fix NewSingleStructArgument --- accounts/abi/argument.go | 2 +- accounts/abi/bind/bind_test.go | 70 ++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/accounts/abi/argument.go b/accounts/abi/argument.go index f7964801d..d81c9cfa7 100644 --- a/accounts/abi/argument.go +++ b/accounts/abi/argument.go @@ -137,7 +137,7 @@ func (arguments Arguments) copyAtomic(v interface{}, marshalledValues interface{ dst := reflect.ValueOf(v).Elem() src := reflect.ValueOf(marshalledValues) - if dst.Kind() == reflect.Struct && src.Kind() != reflect.Struct { + if dst.Kind() == reflect.Struct { return set(dst.Field(0), src) } return set(dst, src) diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 4dec357cc..aec2b9ea0 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1800,6 +1800,76 @@ var bindTests = []struct { nil, nil, }, + // Test resolving single struct argument + { + `NewSingleStructArgument`, + ` + pragma solidity ^0.8.0; + + contract NewSingleStructArgument { + struct MyStruct{ + uint256 a; + uint256 b; + } + event StructEvent(MyStruct s); + function TestEvent() public { + emit StructEvent(MyStruct({a: 1, b: 2})); + } + } + `, + []string{"608060405234801561001057600080fd5b50610113806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806324ec1d3f14602d575b600080fd5b60336035565b005b7fb4b2ff75e30cb4317eaae16dd8a187dd89978df17565104caa6c2797caae27d460405180604001604052806001815260200160028152506040516078919060ba565b60405180910390a1565b6040820160008201516096600085018260ad565b50602082015160a7602085018260ad565b50505050565b60b48160d3565b82525050565b600060408201905060cd60008301846082565b92915050565b600081905091905056fea26469706673582212208823628796125bf9941ce4eda18da1be3cf2931b231708ab848e1bd7151c0c9a64736f6c63430008070033"}, + []string{`[{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"indexed":false,"internalType":"struct Test.MyStruct","name":"s","type":"tuple"}],"name":"StructEvent","type":"event"},{"inputs":[],"name":"TestEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}]`}, + ` + "math/big" + + "github.com/kaiachain/kaia/accounts/abi/bind" + "github.com/kaiachain/kaia/accounts/abi/bind/backends" + "github.com/kaiachain/kaia/blockchain" + "github.com/kaiachain/kaia/crypto" + `, + ` + var ( + key, _ = crypto.GenerateKey() + auth = bind.NewKeyedTransactor(key) + sim = backends.NewSimulatedBackend(blockchain.GenesisAlloc{auth.From: {Balance: big.NewInt(1000000000000000000)}}) + ) + defer sim.Close() + + _, _, d, err := DeployNewSingleStructArgument(auth, sim) + if err != nil { + t.Fatalf("Failed to deploy contract %v", err) + } + sim.Commit() + + _, err = d.TestEvent(auth) + if err != nil { + t.Fatalf("Failed to call contract %v", err) + } + sim.Commit() + + it, err := d.FilterStructEvent(nil) + if err != nil { + t.Fatalf("Failed to filter contract event %v", err) + } + var count int + for it.Next() { + if it.Event.S.A.Cmp(big.NewInt(1)) != 0 { + t.Fatal("Unexpected contract event") + } + if it.Event.S.B.Cmp(big.NewInt(2)) != 0 { + t.Fatal("Unexpected contract event") + } + count += 1 + } + if count != 1 { + t.Fatal("Unexpected contract event number") + } + `, + nil, + nil, + nil, + nil, + }, // Test errors introduced in v0.8.4 { `NewErrors`, From 4e7f8d7cfb4be048c3006c93053f1ea4149f31a8 Mon Sep 17 00:00:00 2001 From: Chihyun Song Date: Tue, 31 Dec 2024 17:52:08 +0900 Subject: [PATCH 8/8] Fix unpack test --- accounts/abi/unpack_test.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/accounts/abi/unpack_test.go b/accounts/abi/unpack_test.go index ede43647e..547f1cfb9 100644 --- a/accounts/abi/unpack_test.go +++ b/accounts/abi/unpack_test.go @@ -768,20 +768,23 @@ func TestUnpackTuple(t *testing.T) { buff.Write(common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")) // ret[b] = -1 // If the result is single tuple, use struct as return value container directly. - v := struct { + type v struct { A *big.Int B *big.Int - }{new(big.Int), new(big.Int)} - - err = abi.UnpackIntoInterface(&v, "tuple", buff.Bytes()) + } + type r struct { + Result v + } + ret0 := new(r) + err = abi.UnpackIntoInterface(ret0, "tuple", buff.Bytes()) if err != nil { t.Error(err) } else { - if v.A.Cmp(big.NewInt(1)) != 0 { - t.Errorf("unexpected value unpacked: want %x, got %x", 1, v.A) + if ret0.Result.A.Cmp(big.NewInt(1)) != 0 { + t.Errorf("unexpected value unpacked: want %x, got %x", 1, ret0.Result.A) } - if v.B.Cmp(big.NewInt(-1)) != 0 { - t.Errorf("unexpected value unpacked: want %x, got %x", -1, v.B) + if ret0.Result.B.Cmp(big.NewInt(-1)) != 0 { + t.Errorf("unexpected value unpacked: want %x, got %x", -1, ret0.Result.B) } }